Accept Merge Request #55: (feature/hant -> develop)

Merge Request: bug 修复

Created By: @todayswind
Accepted By: @todayswind
URL: https://g-bcrc3009.coding.net/p/allocatr/d/allocatr/git/merge/55?initial=true
This commit is contained in:
todayswind 2025-05-20 23:18:56 +08:00 committed by Coding
commit 22975d6115
11 changed files with 102 additions and 42 deletions

View File

@ -16,7 +16,6 @@ class OrderDispatchLog
$statusList = $Model->getStatusList(); $statusList = $Model->getStatusList();
$dispatch = $response['dispatch']; //订单对象 $dispatch = $response['dispatch']; //订单对象
$remark = $response['remark'] ?? ''; //备注 $remark = $response['remark'] ?? ''; //备注
$data = [ $data = [
'dispatch_id' => $dispatch->id, 'dispatch_id' => $dispatch->id,
'order_id' => $dispatch->order_id, 'order_id' => $dispatch->order_id,

View File

@ -227,7 +227,8 @@ class Order extends Backend
$this->autoDispatch($this->model); $this->autoDispatch($this->model);
} }
//日志 //日志
$hookparams['order'] = $this->model->get($this->model->id);
$hookparams['order'] = $this->model;
$hookparams['role'] = 1; $hookparams['role'] = 1;
$hookparams['auth'] = $this->auth; $hookparams['auth'] = $this->auth;
$hookparams['remark'] = $params['remark']??''; $hookparams['remark'] = $params['remark']??'';
@ -374,7 +375,7 @@ class Order extends Backend
$insert ['worker_name'] = $worker['name']; $insert ['worker_name'] = $worker['name'];
$insert ['worker_tel'] = $worker['tel']; $insert ['worker_tel'] = $worker['tel'];
$orderDispatch = new OrderDispatch(); $orderDispatch = new OrderDispatch();
$orderDispatch->allowField(true)->save($insert); $res = $orderDispatch->allowField(true)->save($insert);
$order->status = \app\admin\model\Order::STATUS_DISPATCHED; $order->status = \app\admin\model\Order::STATUS_DISPATCHED;
$order->dispatch_time = date('Y-m-d H:i:s'); $order->dispatch_time = date('Y-m-d H:i:s');
// $order->dispatch_admin_id = $this->auth->id; // $order->dispatch_admin_id = $this->auth->id;
@ -383,7 +384,7 @@ class Order extends Backend
//日志 //日志
$hookParams = [ $hookParams = [
'dispatch' => $orderDispatch, 'dispatch' => (new OrderDispatch())->where('id', $res)->find(),
'remark' => '自动派单,操作人:'.$this->auth->nickname, 'remark' => '自动派单,操作人:'.$this->auth->nickname,
]; ];
Hook::listen('order_dispatch_change', $hookParams); Hook::listen('order_dispatch_change', $hookParams);

View File

@ -95,7 +95,7 @@
readonly readonly
name="row[address]" name="row[address]"
type="text"> type="text">
<div class="btn btn-primary" style="margin-top: 10px" id="area_map" <div class="btn btn-primary" style="margin-top: 20px" id="area_map"
data-input-id="c-address" data-input-id="c-address"
data-lng-id="lng" data-lng-id="lng"
data-lat-id="lat">地图查找</div> data-lat-id="lat">地图查找</div>
@ -176,7 +176,7 @@
<div class="form-group col-xs-6 layer-footer"> <div class="form-group col-xs-6 layer-footer">
<label class="control-label col-xs-12 col-sm-3"></label> <label class="control-label col-xs-12 col-sm-3"></label>
<div class="col-xs-12 col-sm-8"> <div class="col-xs-12 col-sm-8">
<button type="submit" data-id="submit" class="btn btn-primary btn-embossed disabled">录入并清空</button> <button id="mysubmit" class="btn btn-primary btn-embossed">录入并清空</button>
<button id="mybuttom" class="btn btn-primary btn-embossed">录入并保留信息</button> <button id="mybuttom" class="btn btn-primary btn-embossed">录入并保留信息</button>
</div> </div>
</div> </div>

View File

@ -97,7 +97,7 @@
name="row[address]" name="row[address]"
readonly readonly
type="text"> type="text">
<div class="btn btn-primary" style="margin-top: 10px" id="area_map" <div class="btn btn-primary" style="margin-top: 20px" id="area_map"
data-input-id="c-address" data-input-id="c-address"
data-lng-id="lng" data-lng-id="lng"
data-lat-id="lat">地图查找</div> data-lat-id="lat">地图查找</div>

View File

@ -97,7 +97,7 @@
readonly readonly
name="row[address]" name="row[address]"
type="text"> type="text">
<div class="btn btn-primary" style="margin-top: 10px" id="area_map" <div class="btn btn-primary" style="margin-top: 20px" id="area_map"
data-input-id="c-address" data-input-id="c-address"
data-lng-id="lng" data-lng-id="lng"
data-lat-id="lat">地图查找</div> data-lat-id="lat">地图查找</div>

View File

@ -1,23 +1,58 @@
<div class="row"> <div class="row">
<div class="col-md-4"> <div class="col-md-12">
<!-- 订单信息标题 --> <!-- 订单信息标题 -->
<div class="row order-header"> <div class="row order-header">
<div class="col-xs-12"> <div class="col-xs-12">
<h2>订单详情</h2> <h2>订单详情</h2>
<p><strong>订单编号:</strong> {$row.order_no}</p> <table class="table table-bordered table-striped">
<p><strong>顾客信息:</strong> {$row.customer} 电话:{$row.tel}</p> <tbody>
<p><strong>订单来源:</strong> {$row.source_shop} 单号:{$row.source_uid} </p> <tr>
<p><strong>区域:</strong> {$row.area_name}</p> <th>订单编号</th>
<p><strong>地址:</strong> {$row.address}</p> <td>{$row.order_no}</td>
<p><strong>订单类型:</strong> {$row.item_title}</p> <th>顾客信息</th>
<p><strong>订单详情:</strong> {$row.detail}</p> <td>{$row.customer}</td>
<p><strong>订单备注:</strong> {$row.remark}</p> </tr>
<!-- <p><strong>收款方式:</strong> {$row.receive_type == 1 ? '定金':'全款'}</p>--> <tr>
<!-- <p><strong>线上预付:</strong> {$row.online_amount}</p>--> <th>电话</th>
<td>{$row.tel}</td>
<th>订单来源</th>
<td>{$row.source_shop}</td>
</tr>
<tr>
<th>来源单号</th>
<td>{$row.source_uid}</td>
<th>区域</th>
<td>{$row.area_name}</td>
</tr>
<tr>
<th>地址</th>
<td colspan="3">{$row.address}</td>
</tr>
<tr>
<th>订单类型</th>
<td>{$row.item_title}</td>
<th>订单详情</th>
<td>{$row.detail}</td>
</tr>
<tr>
<th>订单备注</th>
<td colspan="3">{$row.remark}</td>
</tr>
<!--
<tr>
<th>收款方式</th>
<td>{$row.receive_type == 1 ? '定金' : '全款'}</td>
<th>线上预付</th>
<td>{$row.online_amount}</td>
</tr>
-->
</tbody>
</table>
</div> </div>
<form id="add-form" class="form-horizontal col-xs-12" role="form" data-toggle="validator" method="POST" action=""> <form id="add-form" class="form-horizontal col-xs-12" role="form" data-toggle="validator" method="POST" action="">
<div class="form-group"> <div class="form-group">
<label class="control-label col-xs-12 col-sm-4 text-left" style="text-align: left">师傅名称:</label> <label class="control-label col-xs-12 col-sm-2 text-left" style="text-align: left">师傅名称:</label>
<div class="col-xs-12 col-sm-8"> <div class="col-xs-12 col-sm-8">
<input id="c-worker_name" disabled data-rule="required" class="form-control" name="row[worker_name]" type="text"> <input id="c-worker_name" disabled data-rule="required" class="form-control" name="row[worker_name]" type="text">
<input id="c-worker_id" class="form-control" style="display: none" name="row[worker_id]" type="text"> <input id="c-worker_id" class="form-control" style="display: none" name="row[worker_id]" type="text">
@ -25,7 +60,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label col-xs-12 col-sm-4 text-left" style="text-align: left">{:__('Plan_time')}:</label> <label class="control-label col-xs-12 col-sm-2 text-left" style="text-align: left">{:__('Plan_time')}:</label>
<div class="col-xs-12 col-sm-8"> <div class="col-xs-12 col-sm-8">
<input id="c-update_time" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[plan_time]" type="text" value="{:date('Y-m-d H:i:s')}"> <input id="c-update_time" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[plan_time]" type="text" value="{:date('Y-m-d H:i:s')}">
</div> </div>
@ -41,18 +76,18 @@
</form> </form>
</div> </div>
</div> </div>
<div class="col-md-8"> <div class="col-md-12">
<div class="panel panel-default panel-intro"> <div class="panel panel-default panel-intro">
<div class="panel-body"> <div class="panel-body">
<div id="myTabContent" class="tab-content"> <div id="myTabContent" class="tab-content">
<div class="tab-pane fade active in" id="one"> <div class="tab-pane fade active in" id="one">
<div class="widget-body no-padding"> <div class="widget-body no-padding">
<h3>师傅选择</h3> <h3>师傅选择 <button class="btn btn-info" id="add_worker">添加新师傅</button> </h3>
<!-- <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>--> <!-- <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>-->
<form id="select-form" role="form" class="form-horizontal" data-toggle="validator" method="POST" action=""> <form id="select-form" role="form" class="form-horizontal" data-toggle="validator" method="POST" action="">
<div class="form-group"> <div class="form-group">
<label class="col-xs-12 col-sm-2" style="padding-left: 0px;text-align: left">区域:</label> <label class="col-sm-2" style="padding-left: 0px;text-align: left">区域:</label>
<div style="display: inline-block;width: 300px;position: absolute"> <div style="display: inline-block;width: 300px;position: absolute">
<input id="c-city-search" data-rule="required" class="form-control" data-toggle="city-picker" value="{$row.area_name}" type="text" /> <input id="c-city-search" data-rule="required" class="form-control" data-toggle="city-picker" value="{$row.area_name}" type="text" />
<input id="area_id" style="display: none" class="form-control" name="area_id" hidden type="text" value="{$row.area_id}" /> <input id="area_id" style="display: none" class="form-control" name="area_id" hidden type="text" value="{$row.area_id}" />
@ -60,7 +95,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-xs-12 col-sm-2" style="text-align: left;padding-left: 0px;">工种:</label> <label class="col-sm-2" style="text-align: left;padding-left: 0px;">工种:</label>
<div style="width: 300px;display: inline-block;"> <div style="width: 300px;display: inline-block;">
<input type="text" id="item_id" name="item_id" value="{$row.item_title}" class="zd-input__inner"> <input type="text" id="item_id" name="item_id" value="{$row.item_title}" class="zd-input__inner">
</div> </div>

View File

@ -23,9 +23,10 @@
<div class="form-group"> <div class="form-group">
<label class="control-label col-xs-12 col-sm-2">师傅归属:</label> <label class="control-label col-xs-12 col-sm-2">师傅归属:</label>
<div class='col-xs-12 col-sm-8'> <div class='col-xs-12 col-sm-8'>
<select data-live-search="true" name="row[type]" class="form-control"> <select data-live-search="true" id="worker_type" name="row[type]" class="form-control">
<option selected value="1">自营</option> <option value="1">自营</option>
<option value="2">非自营</option> <option value="2">非自营</option>
<option value="3">新师傅</option>
</select> </select>
</div> </div>
</div> </div>

View File

@ -43,6 +43,7 @@
<select data-live-search="true" name="row[type]" class="form-control"> <select data-live-search="true" name="row[type]" class="form-control">
<option {if 1 == $row.type} selected {/if} value="1">自营</option> <option {if 1 == $row.type} selected {/if} value="1">自营</option>
<option {if 2 == $row.type} selected {/if} value="2">非自营</option> <option {if 2 == $row.type} selected {/if} value="2">非自营</option>
<option {if 2 == $row.type} selected {/if} value="3">新师傅</option>
</select> </select>
</div> </div>
</div> </div>

View File

@ -124,8 +124,8 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'cascader'], function
field: 'receive_type', field: 'receive_type',
title: '收款方式', title: '收款方式',
searchList: { searchList: {
"1": '已收全款', "1": '已收定金',
"2": '已收定金', "2": '已收全款',
}, },
formatter: Table.api.formatter.label formatter: Table.api.formatter.label
}, },
@ -367,15 +367,23 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'cascader'], function
}, },
add: function () { add: function () {
$("#mybuttom").on("click", function () { $("#mybuttom").on("click", function () {
Form.api.submit($("form[role=form]")); const res = $("form[role=form]").isValid();
Toastr.success('录入成功'); if (res){
Form.api.submit($("form[role=form]"));
// Toastr.success('录入成功');
}
return false; return false;
}); });
Form.api.bindevent($("form[role=form]"), function (success, ret) { $("#mysubmit").on("click", function () {
clearInfo(); const res = $("form[role=form]").isValid();
Toastr.success('操作成功'); if (res){
Form.api.submit($("form[role=form]"));
clearInfo();
// Toastr.success('录入成功');
}
return false; return false;
},); });
Form.api.bindevent($("form[role=form]"));
$("#smart").on("click", function () { $("#smart").on("click", function () {
$.ajax({ $.ajax({
url: "order/smart", // 你的 API 地址 url: "order/smart", // 你的 API 地址

View File

@ -329,14 +329,20 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'layer', 'cascader'],
}); });
}); });
Form.events.citypicker($("#select-form")); Form.events.citypicker($("#select-form"));
$(document).on('click', '.tab_chose', function () { $(document).on('click', '.tab_chose', function () {
var dataId = $(this).data('id'); // 获取 data-id 的值 var dataId = $(this).data('id'); // 获取 data-id 的值
const worker = Table.api.getrowbyid(table, dataId); const worker = Table.api.getrowbyid(table, dataId);
$('#c-worker_name').val(worker.name + '--' + worker.tel).trigger('input').trigger('change'); $('#c-worker_name').val(worker.name + '--' + worker.tel).trigger('input').trigger('change');
$('#c-worker_id').val(worker.id).trigger('input').trigger('change'); $('#c-worker_id').val(worker.id).trigger('input').trigger('change');
}); });
$('#add_worker').on('click',function (){
console.log(1);
Fast.api.open('workers/worker/add?type=3', '添加工人',{
callback: function (value) {
console.log(2222,value);
}
});
});

View File

@ -45,15 +45,14 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','jstree'],
{field: 'id', title: __('Id')}, {field: 'id', title: __('Id')},
{field: 'admin.username', title:'创建人'}, {field: 'admin.username', title:'创建人'},
{field: 'name', title: __('Name'), operate: 'LIKE'}, {field: 'name', title: __('Name'), operate: 'LIKE'},
{field: 'type', title: '师傅归属', formatter: function (val){ {field: 'type', title: '师傅归属', searchList: {"1":'自营',"2":'非自营','3':'新师傅'},
return val === 1 ? '自营':'非自营'; formatter: Table.api.formatter.status,},
}},
{field: 'tel', title: __('Tel'), operate: 'LIKE'}, {field: 'tel', title: __('Tel'), operate: 'LIKE'},
{field: 'status', title: __('Status'), searchList: {"1":__('Status 1'),"0":__('Status 0')}, formatter: Table.api.formatter.status}, {field: 'status', title: __('Status'), searchList: {"1":__('Status 1'),"0":__('Status 0')}, formatter: Table.api.formatter.status},
//{field: 'area_id', title: __('Area_id')}, //{field: 'area_id', title: __('Area_id')},
//{field: 'lng', title: __('Lng'), operate:'BETWEEN'}, //{field: 'lng', title: __('Lng'), operate:'BETWEEN'},
//{field: 'lat', title: __('Lat'), operate:'BETWEEN'}, //{field: 'lat', title: __('Lat'), operate:'BETWEEN'},
{field: 'area.short_merge_name', title: __('Area.short_merge_name'), operate: 'LIKE'}, {field: 'area.short_merge_name', title: __('Area.short_merge_name'), searchable:false},
{field: 'deposit_amount', title: __('Deposit_amount'), operate:'BETWEEN'}, {field: 'deposit_amount', title: __('Deposit_amount'), operate:'BETWEEN'},
{field: 'star', title: __('Star'), operate:'BETWEEN'}, {field: 'star', title: __('Star'), operate:'BETWEEN'},
{field: 'create_time', title: __('Create_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false}, {field: 'create_time', title: __('Create_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false},
@ -96,6 +95,9 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','jstree'],
function getQueryData(){ function getQueryData(){
return $('#select-form').serialize(); return $('#select-form').serialize();
} }
$("#reset_btn").on("click", function() { $("#reset_btn").on("click", function() {
$("#c-city-search").citypicker('reset'); $("#c-city-search").citypicker('reset');
$("#area_id").val(''); $("#area_id").val('');
@ -118,7 +120,14 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','jstree'],
var code = citypicker.getCode("district") || citypicker.getCode("city") || citypicker.getCode("province"); var code = citypicker.getCode("district") || citypicker.getCode("city") || citypicker.getCode("province");
$("#area_id").val(code); $("#area_id").val(code);
}); });
const urlParams = new URLSearchParams(window.location.search);
const type = urlParams.get('type');
if (type) {
const select = document.getElementById('worker_type');
if (select) {
select.value = type;
}
}
Controller.api.bindevent(); Controller.api.bindevent();
}, },
edit: function () { edit: function () {