From 43691f78ef09fcd555f8acc40c953123374c1423 Mon Sep 17 00:00:00 2001 From: hant Date: Sat, 1 Mar 2025 14:34:29 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=BD=95=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/admin/controller/Area.php | 30 +++ application/admin/controller/Order.php | 19 +- application/admin/model/Area.php | 15 ++ application/admin/view/order/add.html | 241 +++++++++++++++++-------- public/assets/js/backend/order.js | 129 +++++++++++++ 5 files changed, 356 insertions(+), 78 deletions(-) create mode 100644 application/admin/controller/Area.php create mode 100644 application/admin/model/Area.php diff --git a/application/admin/controller/Area.php b/application/admin/controller/Area.php new file mode 100644 index 0000000..89edbe1 --- /dev/null +++ b/application/admin/controller/Area.php @@ -0,0 +1,30 @@ +get('keyword'); + if (!$keyword){ + $this->success(data:[]); + }else{ + $data = model('area') + ->where('merge_name','like','%'.$keyword.'%') + ->where('level','=',3) + ->field('area_code, merge_name') + ->limit(0,10) + ->select(); + $this->success(data:$data); + } + } +} diff --git a/application/admin/controller/Order.php b/application/admin/controller/Order.php index 94d7899..36cdcdb 100644 --- a/application/admin/controller/Order.php +++ b/application/admin/controller/Order.php @@ -73,7 +73,6 @@ class Order extends Backend if ($this->dataLimit && $this->dataLimitFieldAutoFill) { $params[$this->dataLimitField] = $this->auth->id; } - dd($params); $result = false; Db::startTrans(); try { @@ -83,6 +82,12 @@ class Order extends Backend $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : $name) : $this->modelValidate; $this->model->validateFailException()->validate($validate); } + + $params['enter_admin_id'] = $this->auth->id; + $params['status'] = 10; + $params['order_no'] = $this->generateOrderNumber(); + + $result = $this->model->allowField(true)->save($params); Db::commit(); } catch (ValidateException|PDOException|Exception $e) { @@ -94,4 +99,16 @@ class Order extends Backend } $this->success(); } + + function generateOrderNumber($prefix = 'ORD') { + // 获取当前时间戳(精确到毫秒) + $timestamp = microtime(true); + $date = date('YmdHis', (int)$timestamp); // 格式:YYYYMMDDHHMMSS + $randomNum = strtoupper(substr(md5($timestamp), 0, 4)); // 从时间戳生成一个随机字符串,取前四个字符 + + // 组合生成的订单编号 + $orderNumber = $prefix . $date . $randomNum; + + return $orderNumber; + } } diff --git a/application/admin/model/Area.php b/application/admin/model/Area.php new file mode 100644 index 0000000..68bc67c --- /dev/null +++ b/application/admin/model/Area.php @@ -0,0 +1,15 @@ + -
- -
- -
-
-
- -
- -
-
-
- -
- -
- {foreach name="statusList" item="vo"} - - {/foreach} -
+
+
+
+ +
+
+
+
录入订单
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ + + + + + + +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ + + + + + + +
+
+
+ +
+ +
+
+
+ +
+ + +
+
+
+ +
+
+ +
+ + +
+ +
+
    +
    +
    + +
    -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    - -
    -
    -
    - -
    -
    - -
    - -
    -
    -
      +
      + + +
      +
      快速输入
      +
      + +
      - - +
      + + + + diff --git a/public/assets/js/backend/order.js b/public/assets/js/backend/order.js index b5d2144..5c1541a 100644 --- a/public/assets/js/backend/order.js +++ b/public/assets/js/backend/order.js @@ -83,5 +83,134 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin } } }; + function parseAndFill() { + // 获取左侧输入框的内容 + } + let $input = $("#c-area_id"); + let $dropdown = $("#address-list"); + let $hiddenField = $("#selected-area-code"); + let timer = null; // 定义定时器 + // 监听输入框 + $input.on("input", function () { + clearTimeout(timer); // 清除上次的定时器 + let keyword = $(this).val().trim(); + + if (keyword.length === 0) { + $dropdown.hide(); + return; + } + + // 延迟 500 毫秒后执行 AJAX 查询(防止过快触发) + timer = setTimeout(() => { + $.ajax({ + url: "/admin/area/search", // 你的 API 地址 + type: "GET", + data: { keyword: keyword }, + dataType: "json", + success: function (data) { + renderDropdown(data.data); + }, + error: function () { + console.error("请求失败"); + } + }); + }, 200); // 500 毫秒防抖 + }); + // 渲染城市下拉选项 + function renderDropdown(data) { + $dropdown.empty(); // 清空列表 + if (data.length === 0){ + let $option = $("") + .text('未搜索到结果') + .attr("data-value", 0); + $dropdown.append($option); + }else{ + data.forEach(item => { + let $option = $("") + .text(item.merge_name) + .attr("data-value", item.area_code) // 绑定 area_code + .on("click", function () { + $input.val(item.merge_name); // 选中后填充输入框 + $hiddenField.val($(this).attr("data-value")); // 存储 area_code + $dropdown.hide(); + }); + + $dropdown.append($option); + }); + } + + + $dropdown.show(); // 显示下拉框 + } + + + + let $inputService = $("#c-service_title"); + let $dropdownService = $("#service-list"); + let $hiddenFieldService = $("#c-service_id"); + let timerService = null; // 定义定时器 + + $inputService.on("input", function () { + clearTimeout(timerService); // 清除上次的定时器 + let keyword = $(this).val().trim(); + + if (keyword.length === 0) { + $dropdown.hide(); + return; + } + + // 延迟 500 毫秒后执行 AJAX 查询(防止过快触发) + timerService = setTimeout(() => { + $.ajax({ + url: "/admin/area/search", // 你的 API 地址 + type: "GET", + data: { keyword: keyword }, + dataType: "json", + success: function (data) { + renderDropdownService(data.data); + }, + error: function () { + console.error("请求失败"); + } + }); + }, 200); // 500 毫秒防抖 + }); + + // 渲染城市下拉选项 + function renderDropdownService(data) { + $dropdownService.empty(); // 清空列表 + if (data.length === 0){ + let $option = $("") + .text('未搜索到结果') + .attr("data-value", 0); + $dropdownService.append($option); + }else{ + data.forEach(item => { + let $option = $("") + .text(item.merge_name) + .attr("data-value", item.area_code) // 绑定 area_code + .on("click", function () { + $inputService.val(item.merge_name); // 选中后填充输入框 + $hiddenFieldService.val($(this).attr("data-value")); // 存储 area_code + $dropdownService.hide(); + }); + $dropdownService.append($option); + }); + } + + + $dropdownService.show(); // 显示下拉框 + } + + + + + // 点击外部隐藏下拉框 + $(document).on("click", function (e) { + if (!$(e.target).closest("#c-address, #address-list").length) { + $dropdown.hide(); + } + }); return Controller; + });