From 2e77a2bcc073fba83995f5ce67e0d711ee12816c Mon Sep 17 00:00:00 2001 From: hantao Date: Fri, 15 Aug 2025 17:55:20 +0800 Subject: [PATCH] get --- application/admin/controller/Cars.php | 1 + application/admin/controller/car/Sales.php | 141 ++++++++++++++++++++ application/admin/lang/zh-cn/car/sales.php | 15 +++ application/admin/model/car/Sales.php | 40 ++++++ application/admin/validate/car/Sales.php | 27 ++++ application/admin/view/car/sales/add.html | 88 ++++++++++++ application/admin/view/car/sales/edit.html | 81 +++++++++++ application/admin/view/car/sales/index.html | 29 ++++ application/admin/view/cars/add.html | 6 + application/admin/view/cars/edit.html | 6 + public/assets/js/backend/car/sales.js | 63 +++++++++ public/assets/js/backend/cars.js | 32 ++++- 12 files changed, 528 insertions(+), 1 deletion(-) create mode 100644 application/admin/controller/car/Sales.php create mode 100644 application/admin/lang/zh-cn/car/sales.php create mode 100644 application/admin/model/car/Sales.php create mode 100644 application/admin/validate/car/Sales.php create mode 100644 application/admin/view/car/sales/add.html create mode 100644 application/admin/view/car/sales/edit.html create mode 100644 application/admin/view/car/sales/index.html create mode 100644 public/assets/js/backend/car/sales.js diff --git a/application/admin/controller/Cars.php b/application/admin/controller/Cars.php index bbdfa29..c09d57d 100644 --- a/application/admin/controller/Cars.php +++ b/application/admin/controller/Cars.php @@ -236,6 +236,7 @@ class Cars extends Backend 'title' => $params['title'], 'price' => $params['price'], 'desc' => $params['desc'], + 'count' => $params['count'], 're_price' => $params['re_price'], 'cover_image' => $params['cover_image'], 'contact_id' => $params['contact_id'] ?? $this->auth->id, diff --git a/application/admin/controller/car/Sales.php b/application/admin/controller/car/Sales.php new file mode 100644 index 0000000..b9f70d7 --- /dev/null +++ b/application/admin/controller/car/Sales.php @@ -0,0 +1,141 @@ +model = new \app\admin\model\car\Sales; + + } + + + + /** + * 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法 + * 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑 + * 需要将application/admin/library/traits/Backend.php中对应的方法复制到当前控制器,然后进行修改 + */ + + /** + * 添加 + * + * @return string + * @throws \think\Exception + */ + public function add($ids = null) + { + if (false === $this->request->isPost()) { + $car = Cars::where('id',$ids)->with([ + 'brand' =>function ($q) { + $q->field('id,name'); + }, + 'series' =>function ($q) { + $q->field('id,name'); + }, + ] + )->select()[0] ?? null; + $this->view->assign('car',$car); + return $this->view->fetch(); + } + $params = $this->request->post('row/a'); + if (empty($params)) { + $this->error(__('Parameter %s can not be empty', '')); + } + $params = $this->preExcludeFields($params); + + if ($this->dataLimit && $this->dataLimitFieldAutoFill) { + $params[$this->dataLimitField] = $this->auth->id; + } + $result = false; + Db::startTrans(); + try { + //是否采用模型验证 + if ($this->modelValidate) { + $name = str_replace("\\model\\", "\\validate\\", get_class($this->model)); + $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : $name) : $this->modelValidate; + $this->model->validateFailException()->validate($validate); + } + $result = $this->model->allowField(true)->save($params); + Db::commit(); + } catch (ValidateException|PDOException|Exception $e) { + Db::rollback(); + $this->error($e->getMessage()); + } + if ($result === false) { + $this->error(__('No rows were inserted')); + } + $this->success(); + } + + /** + * 编辑 + * + * @param $ids + * @return string + * @throws DbException + * @throws \think\Exception + */ + public function edit($ids = null) + { + $row = $this->model->get($ids); + if (!$row) { + $this->error(__('No Results were found')); + } + $adminIds = $this->getDataLimitAdminIds(); + if (is_array($adminIds) && !in_array($row[$this->dataLimitField], $adminIds)) { + $this->error(__('You have no permission')); + } + if (false === $this->request->isPost()) { + $this->view->assign('row', $row); + return $this->view->fetch(); + } + $params = $this->request->post('row/a'); + if (empty($params)) { + $this->error(__('Parameter %s can not be empty', '')); + } + $params = $this->preExcludeFields($params); + $result = false; + Db::startTrans(); + try { + //是否采用模型验证 + if ($this->modelValidate) { + $name = str_replace("\\model\\", "\\validate\\", get_class($this->model)); + $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate; + $row->validateFailException()->validate($validate); + } + $result = $row->allowField(true)->save($params); + Db::commit(); + } catch (ValidateException|PDOException|Exception $e) { + Db::rollback(); + $this->error($e->getMessage()); + } + if (false === $result) { + $this->error(__('No rows were updated')); + } + $this->success(); + } + + +} diff --git a/application/admin/lang/zh-cn/car/sales.php b/application/admin/lang/zh-cn/car/sales.php new file mode 100644 index 0000000..091e0df --- /dev/null +++ b/application/admin/lang/zh-cn/car/sales.php @@ -0,0 +1,15 @@ + '车 id', + 'Saler_id' => '销售 id', + 'Brand' => '品牌', + 'Model' => '型号', + 'Start_date' => '销售日期/租赁开始日期', + 'End_date' => '租赁结束日期(销售则等于开始日期)', + 'Daily_price' => '日租金(销售则为单价)', + 'Total_price' => '总金额', + 'Customer_name' => '客户姓名', + 'Customer_phone' => '客户电话', + 'Remark' => '备注信息' +]; diff --git a/application/admin/model/car/Sales.php b/application/admin/model/car/Sales.php new file mode 100644 index 0000000..12dcf02 --- /dev/null +++ b/application/admin/model/car/Sales.php @@ -0,0 +1,40 @@ + [], + 'edit' => [], + ]; + +} diff --git a/application/admin/view/car/sales/add.html b/application/admin/view/car/sales/add.html new file mode 100644 index 0000000..a976ea8 --- /dev/null +++ b/application/admin/view/car/sales/add.html @@ -0,0 +1,88 @@ +
+ +
+ +
+ +
+
+ + + + +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
diff --git a/application/admin/view/car/sales/edit.html b/application/admin/view/car/sales/edit.html new file mode 100644 index 0000000..f2988e7 --- /dev/null +++ b/application/admin/view/car/sales/edit.html @@ -0,0 +1,81 @@ +
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
diff --git a/application/admin/view/car/sales/index.html b/application/admin/view/car/sales/index.html new file mode 100644 index 0000000..750e2eb --- /dev/null +++ b/application/admin/view/car/sales/index.html @@ -0,0 +1,29 @@ +
+ {:build_heading()} + +
+
+
+ +
+ +
+
+
diff --git a/application/admin/view/cars/add.html b/application/admin/view/cars/add.html index fe13382..096e20e 100644 --- a/application/admin/view/cars/add.html +++ b/application/admin/view/cars/add.html @@ -23,6 +23,12 @@ +
+ +
+ +
+
diff --git a/application/admin/view/cars/edit.html b/application/admin/view/cars/edit.html index 1dffd97..019dd8f 100644 --- a/application/admin/view/cars/edit.html +++ b/application/admin/view/cars/edit.html @@ -25,6 +25,12 @@
+
+ +
+ +
+
diff --git a/public/assets/js/backend/car/sales.js b/public/assets/js/backend/car/sales.js new file mode 100644 index 0000000..c89daee --- /dev/null +++ b/public/assets/js/backend/car/sales.js @@ -0,0 +1,63 @@ +define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { + + var Controller = { + index: function () { + // 初始化表格参数配置 + Table.api.init({ + extend: { + index_url: 'car/sales/index' + location.search, + add_url: 'car/sales/add', + edit_url: 'car/sales/edit', + del_url: 'car/sales/del', + multi_url: 'car/sales/multi', + import_url: 'car/sales/import', + table: 'car_sales', + } + }); + + var table = $("#table"); + + // 初始化表格 + table.bootstrapTable({ + url: $.fn.bootstrapTable.defaults.extend.index_url, + pk: 'id', + sortName: 'id', + fixedColumns: true, + fixedRightNumber: 1, + columns: [ + [ + {checkbox: true}, + {field: 'id', title: __('Id')}, + {field: 'cart_id', title: __('Cart_id')}, + {field: 'saler_id', title: __('Saler_id')}, + {field: 'brand', title: __('Brand'), operate: 'LIKE'}, + {field: 'model', title: __('Model'), operate: 'LIKE'}, + {field: 'start_date', title: __('Start_date'), operate:'RANGE', addclass:'datetimerange', autocomplete:false}, + {field: 'end_date', title: __('End_date'), operate:'RANGE', addclass:'datetimerange', autocomplete:false}, + {field: 'daily_price', title: __('Daily_price'), operate:'BETWEEN'}, + {field: 'total_price', title: __('Total_price'), operate:'BETWEEN'}, + {field: 'customer_name', title: __('Customer_name'), operate: 'LIKE'}, + {field: 'customer_phone', title: __('Customer_phone'), operate: 'LIKE'}, + {field: 'created_at', title: __('Created_at')}, + {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate} + ] + ] + }); + + // 为表格绑定事件 + Table.api.bindevent(table); + }, + add: function () { + Controller.api.bindevent(); + }, + edit: function () { + Controller.api.bindevent(); + }, + api: { + bindevent: function () { + Form.api.bindevent($("form[role=form]")); + } + } + }; + return Controller; +}); diff --git a/public/assets/js/backend/cars.js b/public/assets/js/backend/cars.js index 5b1bbb4..451d64b 100644 --- a/public/assets/js/backend/cars.js +++ b/public/assets/js/backend/cars.js @@ -45,6 +45,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'cascader'], function formatter: Table.api.formatter.status}, {field: 'brand.name', title: __('Brand_id'), operate: false}, {field: 'series.name', title: __('Series_id'), operate: false}, + {field: 'count', title: '库存', operate: false}, {field: 'price', title: __('Price'), operate: 'BETWEEN'}, {field: 're_price', title: '现价(万元)', operate: 'BETWEEN'}, { @@ -84,7 +85,36 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'cascader'], function title: __('Operate'), table: table, events: Table.api.events.operate, - formatter: Table.api.formatter.operate + formatter: Table.api.formatter.operate, + buttons: [ + { + name: 'edit', + text: "修改", + icon: 'fa fa-pencil', + title: __('Edit'), + extend: 'data-toggle="tooltip" data-container="body"', + classname: 'btn btn-xs btn-info btn-editone', + }, + { + name: 'sale', + icon: 'fa fa-copy', + title: '售出', + text: "售出", + url: function (row) { + return 'car/sales/add/ids/' + row.id; + }, + extend: 'data-toggle="tooltip" data-container="body"', + classname: 'btn btn-xs btn-info btn-dialog', + }, + { + name: 'del', + text: "删除", + icon: 'fa fa-trash', + title: __('Delete'), + extend: 'data-toggle="tooltip"', + classname: 'btn btn-xs btn-danger btn-delone', + }, + ], } ] ]