diff --git a/application/admin/controller/orders/Dispatch.php b/application/admin/controller/orders/Dispatch.php index c1a6bb6..5ae710e 100644 --- a/application/admin/controller/orders/Dispatch.php +++ b/application/admin/controller/orders/Dispatch.php @@ -100,19 +100,31 @@ class Dispatch extends Backend if (!$order) { $this->error(__('No results were found')); } - $code = $this->getSelectAreaCode(substr_replace($order->area_id, '00', -2)); - $workers = model('worker') - ->where('area_id','like', $code.'%') - ->where('status',1) - ->field(['id','name','tel','area_id','lng','lat']) - ->select(); + $items = Db::name('item') + ->where('status',1) + ->field(['id','title','key_word','pid']) + ->order('pid','asc') + ->order('sort','desc') + ->select(); + $filtered = array_filter($items, function($item) { + return $item['pid'] == 0; + }); + + $pid_map = array_column($filtered,null,'id'); + $res_items = []; + foreach ($items as $item){ + if ($item['pid'] != 0 && isset($pid_map[$item['pid']])){ + $res_items [] = [ + ...$item,'ptitle' => $pid_map[$item['pid']]['title'] + ]; + } + } + $area_name = model('area')->getNameByCode($order->area_id); $order->area_name = str_replace(',','/',$area_name); - - $workers = $this->getWorkers($workers); - $this->view->assign('workers', $workers); + $this->view->assign('items', $res_items); $this->view->assign('row', $order); return $this->view->fetch(); diff --git a/application/admin/controller/workers/Worker.php b/application/admin/controller/workers/Worker.php index 6805edc..01986c3 100644 --- a/application/admin/controller/workers/Worker.php +++ b/application/admin/controller/workers/Worker.php @@ -190,7 +190,7 @@ class Worker extends Backend ]; } model('WorkerItem')->where('worker_id',$ids)->delete(); - model('WorkerItem')->batchInsert($insert); + model('WorkerItem')->insertAll($insert); } } unset($params['rules']); @@ -220,4 +220,27 @@ class Worker extends Backend return $this->fetch(); } + public function dispatchList(){ + + $area_id = request()->get('area_id'); + list($where, $sort, $order, $offset, $limit) = $this->buildparams(); + + $build = model('worker') + ->where('status',1) + ->with(['area']) + ->field(['id','name','tel','area_id','lng','lat']); + + if ($area_id){ + $code = $this->getSelectAreaCode(substr_replace($area_id, '00', -2)); + $build->where('area_id','like', $code.'%'); + } + $list = $build + ->paginate($limit); + + $result = array("total" => $list->total(), "rows" => $list->items()); + + return json($result); + + } + } diff --git a/application/admin/model/Item.php b/application/admin/model/Item.php index 351e58c..f46706f 100644 --- a/application/admin/model/Item.php +++ b/application/admin/model/Item.php @@ -2,6 +2,7 @@ namespace app\admin\model; +use think\Db; use think\Model; @@ -50,6 +51,31 @@ class Item extends Model } + public function getList(){ + $items = $this + ->where('status',1) + ->field(['id','title','key_word','pid']) + ->order('pid','asc') + ->order('sort','desc') + ->select(); + + + $this->items = $items; + $filtered = array_filter($items, function($item) { + return $item['pid'] == 0; + }); + + $pid_map = array_column($filtered,null,'id'); + $res_items = []; + foreach ($items as $item){ + if ($item['pid'] != 0 && isset($pid_map[$item['pid']])){ + $res_items [] = [ + ...$item,'ptitle' => $pid_map[$item['pid']]['title'] + ]; + } + } + return $res_items; + } } diff --git a/application/admin/view/orders/dispatch/add.html b/application/admin/view/orders/dispatch/add.html index 1a87ae1..f1d8efd 100644 --- a/application/admin/view/orders/dispatch/add.html +++ b/application/admin/view/orders/dispatch/add.html @@ -24,10 +24,15 @@
选择
`; + }}, ] - ] + ], + search:false, + commonSearch:false, }); + function getQueryData(){ + return $('#select-form').serialize(); + } $("#c-city-search").on("cp:updated", function() { var citypicker = $(this).data("citypicker"); var code = citypicker.getCode("district") || citypicker.getCode("city") || citypicker.getCode("province"); - table.bootstrapTable('refresh',{query: {area_code: code}}); + // table.bootstrapTable('refresh',{query: {area_code: code}}); + $('#area_id').val(code); }); - $("#reset").on("click", function() { - $("#c-city").citypicker('reset'); - table.bootstrapTable('refresh'); + $("#search_btn").on("click", function() { + table.bootstrapTable('refresh',{ + url:$.fn.bootstrapTable.defaults.extend.index_url +'?' + getQueryData(), + }); + }); + $("#reset_btn").on("click", function() { + $("#c-city-search").citypicker('reset'); + $("#area_id").val(''); + $("#citem").val('').selectpicker('refresh'); + $("#keyword").val(''); + console.log(1); + table.bootstrapTable('refresh',{ + url:$.fn.bootstrapTable.defaults.extend.index_url +'?' + getQueryData(), + }); + }); + Form.events.citypicker($("#select-form")); + + $(document).on('click', '.tab_chose', function() { + var dataId = $(this).data('id'); // 获取 data-id 的值 + const worker = Table.api.getrowbyid(table ,dataId); + $('#c-worker_name').val(worker.name + '--' + worker.tel).trigger('input').trigger('change'); + $('#worker_id').val(worker.id).trigger('input').trigger('change'); }); // 为表格绑定事件 Table.api.bindevent(table); - Form.events.citypicker($("#select-form")); Controller.api.bindevent(); }, @@ -219,7 +245,11 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','layer'], function ($, }, api: { bindevent: function () { - Form.api.bindevent($("form[role=form]")); + Form.api.bindevent($("#add-form"),null,null,function (data) { + Form.api.submit($("#add-form")); + return false; + }); + Form.api.bindevent($("#select-form")); } } }; diff --git a/public/assets/js/require-table.js b/public/assets/js/require-table.js index fbeff7c..3dedb86 100755 --- a/public/assets/js/require-table.js +++ b/public/assets/js/require-table.js @@ -1068,7 +1068,8 @@ define(['jquery', 'bootstrap', 'moment', 'moment/locale/zh-cn', 'bootstrap-table getrowbyid: function (table, id) { var row = {}; var options = table.bootstrapTable("getOptions"); - $.each(Table.api.selecteddata(table), function (i, j) { + var data = table.bootstrapTable('getData'); + $.each(data, function (i, j) { if (j[options.pk] == id) { row = j; return false; diff --git a/public/assets/libs/fastadmin-citypicker/dist/css/city-picker.css b/public/assets/libs/fastadmin-citypicker/dist/css/city-picker.css index 686e668..51d375f 100755 --- a/public/assets/libs/fastadmin-citypicker/dist/css/city-picker.css +++ b/public/assets/libs/fastadmin-citypicker/dist/css/city-picker.css @@ -30,6 +30,16 @@ background: url(../images/drop-arrow.png) -10px -25px no-repeat; } +.city-picker-span > .close { + position: absolute; + top: 50%; + right: 24px; + width: 10px; + margin-top: -12px; + font-size: 20px; + height: 5px; +} + .city-picker-span.focus, .city-picker-span.open { border-bottom-color: #46A4FF; diff --git a/public/assets/libs/fastadmin-citypicker/dist/js/city-picker.js b/public/assets/libs/fastadmin-citypicker/dist/js/city-picker.js index 07c031f..6e6ccd5 100755 --- a/public/assets/libs/fastadmin-citypicker/dist/js/city-picker.js +++ b/public/assets/libs/fastadmin-citypicker/dist/js/city-picker.js @@ -73,7 +73,7 @@ this.getWidthStyle(p.width) + 'height:' + p.height + 'px;line-height:' + (p.height - 1) + 'px;">' + (placeholder ? '' + placeholder + '' : '') + - '' + '', + '