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

Merge Request: 订单操作

Created By: @todayswind
Accepted By: @todayswind
URL: https://g-bcrc3009.coding.net/p/allocatr/d/allocatr/git/merge/20?initial=true
This commit is contained in:
todayswind 2025-04-15 22:36:09 +08:00 committed by Coding
commit 16aeb48c8f
5 changed files with 187 additions and 78 deletions

View File

@ -40,3 +40,83 @@
</div> </div>
</div> </div>
</div> </div>
<style>
/* 派单按钮 */
.button-dispatch {
background-color: #4CAF50; /* Material Design的绿色 */
color: #fff;
}
.button-dispatch:hover {
background-color: #45A049; /* 深一点的绿色 */
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
/* 编辑按钮 */
.button-edit {
background-color: #1976D2; /* Material Design的蓝色 */
color: #fff;
}
.button-edit:hover {
background-color: #1565C0;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
/* 复制按钮 */
.button-copy {
background-color: #388E3C; /* Bootstrap的绿色 */
color: #fff;
}
.button-copy:hover {
background-color: #2C6B2F;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
/* 催单按钮 */
.button-remind {
background-color: #FF9800; /* Material Design的橙色 */
color: #fff;
}
.button-remind:hover {
background-color: #FB8C00;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
/* 订单报错按钮 */
.button-error {
background-color: #D32F2F; /* Material Design的红色 */
color: #fff;
}
.button-error:hover {
background-color: #C62828;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
/* 取消按钮 */
.button-cancel {
background-color: #757575; /* Material Design的灰色 */
color: #fff;
}
.button-cancel:hover {
background-color: #616161;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
/* 更多按钮 */
.button-more {
background-color: #607D8B; /* Material Design的蓝灰色 */
color: #fff;
}
.button-more:hover {
background-color: #546E7A;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
</style>

View File

@ -12,9 +12,9 @@ define([], function () {
var zoom_id = $(that).data("zoom-id") ? $(that).data("zoom-id") : ""; var zoom_id = $(that).data("zoom-id") ? $(that).data("zoom-id") : "";
var lat = lat_id ? $("#" + lat_id).val() : ''; var lat = lat_id ? $("#" + lat_id).val() : '';
var lng = lng_id ? $("#" + lng_id).val() : ''; var lng = lng_id ? $("#" + lng_id).val() : '';
var city_code = $("#area_id").val(); var city_code = $("#c-city").val();
var zoom = zoom_id ? $("#" + zoom_id).val() : ''; var zoom = zoom_id ? $("#" + zoom_id).val() : '';
var url = "/addons/address/index/select?1=1"; var url = "/addons/address/index/select?a=1";
url += (lat && lng) ? 'lat=' + lat + '&lng=' + lng + url += (lat && lng) ? 'lat=' + lat + '&lng=' + lng +
(input_id ? "&address=" + $("#" + input_id).val() : "") (input_id ? "&address=" + $("#" + input_id).val() : "")
+(zoom ? "&zoom=" + zoom : "") : '' +(zoom ? "&zoom=" + zoom : "") : ''

View File

@ -1,4 +1,4 @@
define(['jquery', 'bootstrap', 'backend', 'table', 'form','cascader'], function ($, undefined, Backend, Table, Form) { define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'cascader'], function ($, undefined, Backend, Table, Form) {
function clearInfo() { function clearInfo() {
$('[name^="row["]').val(''); $('[name^="row["]').val('');
@ -6,6 +6,43 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','cascader'], function
$(".selectpicker").val('').selectpicker('refresh'); $(".selectpicker").val('').selectpicker('refresh');
} }
function copyToClipboard(text) {
// 创建一个隐藏的 textarea 元素
const textarea = document.createElement('textarea');
textarea.value = text;
document.body.appendChild(textarea);
// 选中内容并复制
textarea.select();
document.execCommand('copy');
// 移除 textarea 元素
document.body.removeChild(textarea);
Toastr.info('复制成功');
}
// 拼装文本
function assembleOrderMessage(data) {
const message = `
订单详情
录单员: ${data.user.nickname}
订单编号: ${data.order_no}
客户姓名: ${data.customer}
客户电话: ${data.tel}
订单状态: ${data.status_text}
地域: ${data.area.merge_name}
详细地址: ${data.address}
派单方式: ${data.dispatch_type === 1 ? '手动派单' : '自动派单'}
收款方式: ${data.collect_text || '未收款'}
订单来源: ${data.source_shop}
服务名称: ${data.item_title}
请查收以上订单信息`;
return message;
}
var Controller = { var Controller = {
index: function () { index: function () {
// 初始化表格参数配置 // 初始化表格参数配置
@ -130,73 +167,62 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','cascader'], function
table: table, table: table,
events: Table.api.events.operate, events: Table.api.events.operate,
formatter: Table.api.formatter.operate, formatter: Table.api.formatter.operate,
align:"left", align: "left",
buttons: [ buttons: [
{ {
name: 'edit', name: 'edit',
text:"编辑", text: "编辑",
icon: 'fa fa-pencil', icon: 'fa fa-pencil',
title: __('Edit'), title: __('Edit'),
extend: 'data-toggle="tooltip" data-container="body"', extend: 'data-toggle="tooltip" data-container="body"',
classname: 'btn btn-xs btn-success btn-editone' classname: 'btn btn-xs button-edit btn-editone',
}, },
{ {
name: 'push', name: 'push',
icon: 'fa fa-copy', icon: 'fa fa-copy',
title: '复制', title: '复制',
text:"复制", text: "复制",
url: 'order/copy', url: 'order/copy',
extend: 'data-toggle="tooltip" data-container="body"', extend: 'data-toggle="tooltip" data-container="body"',
classname: 'btn btn-xs btn-info btn-dialog', classname: 'btn btn-xs button-copy btn-dialog',
callback: function ($data){ callback: function ($data) {
console.log($data); console.log($data);
} },
dropdown: "更多"
}, },
{ {
name:"dispatch", name: "dispatch",
text:"派单", text: "派单",
title:"派单", title: "派单",
extend: 'data-toggle="tooltip" data-container="body"', extend: 'data-toggle="tooltip" data-container="body"',
classname: 'btn btn-xs btn-info btn-dialog', classname: 'btn btn-xs button-dispatch btn-dialog',
//classname:"btn-view btn-dialog", //classname:"btn-view btn-dialog",
icon:'fa fa-add', icon: 'fa fa-add',
url: function(row){ url: function (row) {
return 'orders/dispatch/add?order_id='+row.id; return 'orders/dispatch/add?order_id=' + row.id;
}, },
visible:function(row){ visible: function (row) {
if(row.status == 10){ if (row.status == 10) {
return true; return true;
} }
return false; return false;
}, },
refresh:true, refresh: true,
}, },
{ {
name: 'send', name: "reminder",
text: '中转订单', text: "催单",
title: '中转订单', title: "派单",
classname: 'btn btn-xs btn-info btn-dialog',
icon: 'fa fa-send',
url: 'order/send',
visible:function(row){
if(row.status == 10){
return true;
}
return false;
},
},
{
name:"reminder",
text:"催单",
title:"派单",
extend: 'data-toggle="tooltip" data-container="body"', extend: 'data-toggle="tooltip" data-container="body"',
classname: 'btn btn-xs btn-info btn-magic btn-ajax', classname: 'btn btn-xs button-remind btn-magic btn-ajax',
icon: 'fa fa-bolt', icon: 'fa fa-bolt',
url: 'order/reminder', url: 'order/reminder',
dropdown: "更多",
success: function (data, ret) { success: function (data, ret) {
if (ret.code === 1){ if (ret.code === 1) {
Layer.alert('催单成功'); Layer.alert('催单成功');
}else { } else {
Layer.alert(ret.msg); Layer.alert(ret.msg);
} }
return false; return false;
@ -208,31 +234,34 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','cascader'], function
Layer.alert(ret.msg); Layer.alert(ret.msg);
return false; return false;
}, },
visible:function(row){ visible: function (row) {
if(row.status > 0){ if (row.status > 0) {
return true; return true;
} }
return false; return false;
}, },
}, },
{ {
name:"error", name: "copy_text",
text:"订单报错", text: "复制信息",
title:"订单报错", title: "复制信息",
extend: 'data-toggle="tooltip" data-container="body"', extend: 'data-toggle="tooltip" data-container="body"',
classname: 'btn btn-xs btn-warning btn-dialog', classname: 'btn btn-xs button-error btn-click',
icon: 'fa fa-bolt', icon: 'fa fa-text',
url: 'order/addAbnormal', click: function (data, item) {
refresh:true, const text = assembleOrderMessage(item);
copyToClipboard(text);
}
}, { }, {
name: 'delete', name: 'delete',
text: '取消', text: '取消',
title: '取消', title: '取消',
classname: 'btn btn-xs btn-danger btn-dialog', classname: 'btn btn-xs button-cancel btn-dialog',
icon: 'fa fa-trash', icon: 'fa fa-trash',
url: 'order/delete', url: 'order/delete',
visible:function(row){ dropdown: "更多",
if(row.status >= 0){ visible: function (row) {
if (row.status >= 0) {
return true; return true;
} }
return false; return false;
@ -248,79 +277,79 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','cascader'], function
Table.api.bindevent(table); Table.api.bindevent(table);
let cloneQueryParams = null; let cloneQueryParams = null;
//绑定tab事件 //绑定tab事件
$('a[data-toggle="tab"]').on('show.bs.tab',function(event){ $('a[data-toggle="tab"]').on('show.bs.tab', function (event) {
let type =$(this).attr("data-value"); let type = $(this).attr("data-value");
let options = table.bootstrapTable('getOptions'); let options = table.bootstrapTable('getOptions');
$('.nav-tabs li').attr('class',''); $('.nav-tabs li').attr('class', '');
$(this).parent().attr("class",'active'); $(this).parent().attr("class", 'active');
options.pageNumber =1; options.pageNumber = 1;
if (cloneQueryParams == null) { if (cloneQueryParams == null) {
cloneQueryParams = options.queryParams; cloneQueryParams = options.queryParams;
} }
options.queryParams =function(params){ options.queryParams = function (params) {
params.type = type; params.type = type;
return cloneQueryParams(params); return cloneQueryParams(params);
}; };
table.bootstrapTable('refresh',{}); table.bootstrapTable('refresh', {});
return false; return false;
}); });
}, },
add: function () { add: function () {
$("#mybuttom").on("click", function() { $("#mybuttom").on("click", function () {
Form.api.submit($("form[role=form]")); Form.api.submit($("form[role=form]"));
Toastr.success('录入成功'); Toastr.success('录入成功');
return false; return false;
}); });
Form.api.bindevent($("form[role=form]"),function (success,ret) { Form.api.bindevent($("form[role=form]"), function (success, ret) {
clearInfo(); clearInfo();
Toastr.success('操作成功'); Toastr.success('操作成功');
return false; return false;
},); },);
$("#c-city").on("cp:updated", function() { $("#c-city").on("cp:updated", function () {
var citypicker = $(this).data("citypicker"); var citypicker = $(this).data("citypicker");
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);
$("#area_name").val(citypicker.getVal()); $("#area_name").val(citypicker.getVal());
}); });
$("[data-toggle='addresspicker']").data("callback", function(res){ $("[data-toggle='addresspicker']").data("callback", function (res) {
Form.api.target($('#c-address')); Form.api.target($('#c-address'));
}); });
var _data = items; var _data = items;
$('#item_id').zdCascader({ $('#item_id').zdCascader({
data:_data, data: _data,
onChange: function ($this,data,allPathData) { onChange: function ($this, data, allPathData) {
// console.log(data,allPathData); // console.log(data,allPathData);
$('#item_id_value').val(data.value); $('#item_id_value').val(data.value);
} }
}); });
$('#item_id').val($('#item_id').data('value')).focus(); $('#item_id').val($('#item_id').data('value')).focus();
$("#smart").on("click", function() { $("#smart").on("click", function () {
$.ajax({ $.ajax({
url: "order/smart", // 你的 API 地址 url: "order/smart", // 你的 API 地址
type: "GET", type: "GET",
dataType: "json", dataType: "json",
data: { data: {
str:$('#smart_text').val() str: $('#smart_text').val()
}, },
success: function (data) { success: function (data) {
if (data.code === 1){ if (data.code === 1) {
data = data.data; data = data.data;
if (data.mobile !== ''){ if (data.mobile !== '') {
$('#c-tel').val(data.mobile); $('#c-tel').val(data.mobile);
} }
if (data.name !== ''){ if (data.name !== '') {
$('#c-customer').val(data.name); $('#c-customer').val(data.name);
} }
if (data.item.id !== 0){ if (data.item.id !== 0) {
$('#item_id_value').val(data.item.id); $('#item_id_value').val(data.item.id);
$('#item_id').val(data.item.item); $('#item_id').val(data.item.item);
} }
if (data.idn){ if (data.idn) {
$('#c-source-id').val(data.idn); $('#c-source-id').val(data.idn);
} }
let citypicker = $('#c-city'); let citypicker = $('#c-city');
@ -329,7 +358,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','cascader'], function
// city: data.city, // city: data.city,
// district: data.region // district: data.region
// }); // });
citypicker.val(data.province + '/' + data.city + '/'+ data.region); citypicker.val(data.province + '/' + data.city + '/' + data.region);
citypicker = citypicker.data("citypicker"); citypicker = citypicker.data("citypicker");
citypicker.refresh(); citypicker.refresh();
var code = citypicker.getCode("district") || citypicker.getCode("city") || citypicker.getCode("province"); var code = citypicker.getCode("district") || citypicker.getCode("city") || citypicker.getCode("province");
@ -352,7 +381,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','cascader'], function
}, },
addabnormal: function () { addabnormal: function () {
console.log('abnormal'); console.log('abnormal');
Form.api.bindevent($("#add-form"),null,null,function (data) { Form.api.bindevent($("#add-form"), null, null, function (data) {
Form.api.submit($("#add-form")); Form.api.submit($("#add-form"));
// console.log(data); // console.log(data);
// return false; // return false;

View File

@ -59,7 +59,7 @@
86: { 86: {
'A-G': [ 'A-G': [
{code: '340000', address: '安徽省'}, {code: '340000', address: '安徽省'},
{code: '110000', address: '北京'}, {code: '110000', address: '北京'},
{code: '500000', address: '重庆'}, {code: '500000', address: '重庆'},
{code: '350000', address: '福建省'}, {code: '350000', address: '福建省'},
{code: '620000', address: '甘肃省'}, {code: '620000', address: '甘肃省'},
@ -99,7 +99,7 @@
}, },
"110000": { "110000": {
"110100": "北京市" "110100": "辖区"
}, },
"110100": { "110100": {
"110101": "东城区", "110101": "东城区",

View File

@ -59,7 +59,7 @@
86: { 86: {
'A-G': [ 'A-G': [
{code: '340000', address: '安徽省'}, {code: '340000', address: '安徽省'},
{code: '110000', address: '北京'}, {code: '110000', address: '北京'},
{code: '500000', address: '重庆'}, {code: '500000', address: '重庆'},
{code: '350000', address: '福建省'}, {code: '350000', address: '福建省'},
{code: '620000', address: '甘肃省'}, {code: '620000', address: '甘肃省'},
@ -99,7 +99,7 @@
}, },
"110000": { "110000": {
"110100": "北京市" "110100": "辖区"
}, },
"110100": { "110100": {
"110101": "东城区", "110101": "东城区",