派单员添加区域过滤

This commit is contained in:
hant 2025-04-02 22:43:14 +08:00
parent cee37cad21
commit ed63962d56
5 changed files with 157 additions and 71 deletions

View File

@ -42,7 +42,7 @@ return [
'title' => 'Endpoint',
'type' => 'string',
'content' => [],
'value' => 'allocatr.oss-cn-hangzhou.aliyuncs.com',
'value' => 'oss-cn-hangzhou.aliyuncs.com',
'rule' => 'required;endpoint',
'msg' => '',
'tip' => '请填写从阿里云存储获取的Endpoint',

View File

@ -3,6 +3,7 @@
namespace app\admin\controller;
use app\admin\addresmart\Address;
use app\admin\model\AuthGroupAccess;
use app\admin\model\OrderDispatch;
use app\admin\model\Worker;
use app\admin\model\WorkerItem;
@ -28,6 +29,7 @@ class Order extends Backend
protected $model = null;
protected $sources = null;
protected $items = null;
public function _initialize()
{
parent::_initialize();
@ -100,7 +102,6 @@ class Order extends Backend
}
/**
* 默认生成的控制器所继承的父类中有index/add/edit/del/multi五个基础方法、destroy/restore/recyclebin三个回收站方法
* 因此在当前控制器中可不用编写增删改查的代码,除非需要自己控制这部分逻辑
@ -108,10 +109,13 @@ class Order extends Backend
*/
public function index()
{
$this->request->filter(['strip_tags', 'trim']);
$group = \model('auth_group_access')->find($this->auth->id)->group_id ?? 0;
$user = \model('admin')->find($this->auth->id);
if (false === $this->request->isAjax()) {
return $this->view->fetch();
}
@ -120,11 +124,25 @@ class Order extends Backend
return $this->selectpage();
}
[$where, $sort, $order, $offset, $limit] = $this->buildparams();
$list = $this->model
$build = $this->model
->field(['id', 'order_no', 'admin_id', 'customer', 'tel', 'status', 'area_id', 'address',
'source', 'source_shop', 'source_uid', 'source', 'item_title', 'item_id', 'work_tel_id',
'detail', 'remark', 'images', 'create_time', 'update_time', 'admin_id', 'dispatch_type', 'receive_type'])
->where($where)
->where($where);
if ($group == 2) {
// 生成 SQL 语句
$area_codes = $this->filterAreaCodes(explode(',', $user->area_ids));
$build->where(function ($q) use ($area_codes) {
foreach ($area_codes as $area_code) {
$q->whereOr('area_id', 'like', $area_code . '%');
}
});
}
$list = $build
->with(['user' => function ($q) {
$q->field('id,nickname');
}, 'area' => function ($q) {
@ -280,7 +298,8 @@ class Order extends Backend
return $this->fetch();
}
function generateOrderNumber($prefix = 'ORD') {
function generateOrderNumber($prefix = 'ORD')
{
// 获取当前时间戳(精确到毫秒)
$timestamp = microtime(true);
$date = date('YmdHis', (int)$timestamp); // 格式YYYYMMDDHHMMSS
@ -293,7 +312,8 @@ class Order extends Backend
}
private function autoDispatch($order) {
private function autoDispatch($order)
{
if ($order->dispatch_type != 2) {
return false;
}
@ -340,7 +360,47 @@ class Order extends Backend
}
public function smart(){
public function smart()
{
$this->success(data: Address::smart(request()->get('str')));
}
public function reminder($ids = null)
{
if ($ids) {
$order = $this->model->where('id', $ids)->find();
}
$this->success($order['order_no']);
}
private function filterAreaCodes(array $area_codes)
{
// 提取所有两位区号
$prefix_2_digits = [];
foreach ($area_codes as $code) {
if (strlen($code) == 2) {
$prefix_2_digits[] = $code;
}
}
// 过滤数组
$filtered_codes = array_filter($area_codes, function ($code) use ($prefix_2_digits) {
// 如果是两位区号,直接保留
if (strlen($code) == 2) {
return true;
}
// 检查是否有对应的两位前缀,如果有,则排除四位区号
foreach ($prefix_2_digits as $prefix) {
if (strpos($code, $prefix) === 0) {
return false;
}
}
// 如果没有匹配的两位前缀,则保留
return true;
});
// 重新索引数组
return array_values($filtered_codes);
}
}

View File

@ -1,6 +1,8 @@
define([], function () {
require([], function () {
//绑定data-toggle=addresspicker属性点击事件
console.log('111');
$(document).on('click', "[data-toggle='addresspicker']", function () {
var that = this;
var callback = $(that).data('callback');
@ -10,9 +12,9 @@ define([], function () {
var zoom_id = $(that).data("zoom-id") ? $(that).data("zoom-id") : "";
var lat = lat_id ? $("#" + lat_id).val() : '';
var lng = lng_id ? $("#" + lng_id).val() : '';
var city_code = $("#area_name").val();
var city_code = $("#area_id").val();
var zoom = zoom_id ? $("#" + zoom_id).val() : '';
var url = "/addons/address/index/select?abc=1";
var url = "/addons/address/index/select?1=1";
url += (lat && lng) ? 'lat=' + lat + '&lng=' + lng +
(input_id ? "&address=" + $("#" + input_id).val() : "")
+(zoom ? "&zoom=" + zoom : "") : ''

View File

@ -127,7 +127,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'jstree'],
},
success: function (data) {
// console.log(data);
// Controller.api.rendertree(data);
Controller.api.rendertree(data);
},
error: function () {
console.error("请求失败");

View File

@ -169,6 +169,30 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','cascader'], function
},
refresh:true,
},
{
name:"reminder",
text:"催单",
title:"派单",
extend: 'data-toggle="tooltip" data-container="body"',
classname: 'btn btn-xs btn-info btn-magic btn-ajax',
icon: 'fa fa-bolt',
url: 'order/reminder',
success: function (data, ret) {
if (ret.code === 1){
Layer.alert('催单成功');
}else {
Layer.alert(ret.msg);
}
return false;
//如果需要阻止成功提示则必须使用return false;
//return false;
},
error: function (data, ret) {
console.log(data, ret);
Layer.alert(ret.msg);
return false;
}
},
],
}
]