define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'cascader'], function ($, undefined, Backend, Table, Form) { function clearInfo() { $('[name^="row["]').val(''); $("#c-city").citypicker('reset'); $(".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 = { index: function () { // 初始化表格参数配置 Table.api.init({ extend: { index_url: 'order/index' + location.search, add_url: 'order/add', edit_url: 'order/edit', //del_url: 'order/del', multi_url: 'order/multi', import_url: 'order/import', push_url: 'order/status', addabnormal: 'order/addAbnormal', table: 'order', } }); 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: 'user.nickname', title: '录单员'}, {field: 'order_no', title: __('Order_no'), operate: 'LIKE'}, {field: 'customer', title: __('Customer'), operate: 'LIKE'}, {field: 'tel', title: __('Tel'), operate: 'LIKE'}, { field: 'status', title: __('Status'), searchList: { "10": __('Status 10'), "20": __('Status 20'), "30": __('Status 30'), "40": __('Status 40'), "50": __('Status 50'), "-10": __('Status -10'), "-20": __('Status -20'), "-30": __('Status -30') }, formatter: Table.api.formatter.status }, {field: 'area.merge_name', title: __('Area_id')}, { field: 'address', title: __('Address'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content }, { field: 'dispatch_type', title: '派单方式', searchList: { "1": '手动派单', "2": '自动派单', }, formatter: Table.api.formatter.label }, { field: 'receive_type', title: '收款方式', searchList: { "1": '已收全款', "2": '已收定金', }, formatter: Table.api.formatter.label }, // {field: 'worker_id', title: __('Worker_id')}, {field: 'source_shop', title: __('Source')}, // {field: 'source_uid', title: __('Source_uid'), operate: 'LIKE'}, {field: 'item_title', title: __('Item_title'), operate: 'LIKE'}, { field: 'detail', title: __('Detail'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content }, { field: 'remark', title: __('Remark'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content }, { field: 'images', title: __('Images'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.images }, { field: 'create_time', title: __('Create_time'), operate: 'RANGE', addclass: 'datetimerange', autocomplete: false }, { field: 'update_time', title: __('Update_time'), operate: 'RANGE', addclass: 'datetimerange', autocomplete: false }, { field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate, align: "left", buttons: [ { name: 'edit', text: "编辑", icon: 'fa fa-pencil', title: __('Edit'), extend: 'data-toggle="tooltip" data-container="body"', classname: 'btn btn-xs button-edit btn-editone', }, { name: 'push', icon: 'fa fa-copy', title: '复制', text: "复制", url: 'order/copy', extend: 'data-toggle="tooltip" data-container="body"', classname: 'btn btn-xs button-copy btn-dialog', callback: function ($data) { console.log($data); }, dropdown: "更多" }, { name: "dispatch", text: "派单", title: "派单", extend: 'data-toggle="tooltip" data-container="body"', classname: 'btn btn-xs button-dispatch btn-dialog', //classname:"btn-view btn-dialog", icon: 'fa fa-add', url: function (row) { return 'orders/dispatch/add?order_id=' + row.id; }, visible: function (row) { if (row.status == 10) { return true; } return false; }, refresh: true, }, { name: "reminder", text: "催单", title: "派单", extend: 'data-toggle="tooltip" data-container="body"', classname: 'btn btn-xs button-remind btn-magic btn-ajax', icon: 'fa fa-bolt', url: 'order/reminder', dropdown: "更多", 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; }, visible: function (row) { if (row.status > 0) { return true; } return false; }, }, { name: "copy_text", text: "复制信息", title: "复制信息", extend: 'data-toggle="tooltip" data-container="body"', classname: 'btn btn-xs button-error btn-click', icon: 'fa fa-text', click: function (data, item) { const text = assembleOrderMessage(item); copyToClipboard(text); } }, { name: 'delete', text: '取消', title: '取消', classname: 'btn btn-xs button-cancel btn-dialog', icon: 'fa fa-trash', url: 'order/delete', dropdown: "更多", visible: function (row) { if (row.status >= 0) { return true; } return false; }, }, ], } ] ], }); // 为表格绑定事件 Table.api.bindevent(table); let cloneQueryParams = null; //绑定tab事件 $('a[data-toggle="tab"]').on('show.bs.tab', function (event) { let type = $(this).attr("data-value"); let options = table.bootstrapTable('getOptions'); $('.nav-tabs li').attr('class', ''); $(this).parent().attr("class", 'active'); options.pageNumber = 1; if (cloneQueryParams == null) { cloneQueryParams = options.queryParams; } options.queryParams = function (params) { params.type = type; return cloneQueryParams(params); }; table.bootstrapTable('refresh', {}); return false; }); }, add: function () { $("#mybuttom").on("click", function () { Form.api.submit($("form[role=form]")); Toastr.success('录入成功'); return false; }); Form.api.bindevent($("form[role=form]"), function (success, ret) { clearInfo(); Toastr.success('操作成功'); return false; },); $("#c-city").on("cp:updated", function () { var citypicker = $(this).data("citypicker"); var code = citypicker.getCode("district") || citypicker.getCode("city") || citypicker.getCode("province"); $("#area_id").val(code); $("#area_name").val(citypicker.getVal()); }); $("[data-toggle='addresspicker']").data("callback", function (res) { Form.api.target($('#c-address')); }); var _data = items; $('#item_id').zdCascader({ data: _data, onChange: function ($this, data, allPathData) { // console.log(data,allPathData); $('#item_id_value').val(data.value); } }); $('#item_id').val($('#item_id').data('value')).focus(); $("#smart").on("click", function () { $.ajax({ url: "order/smart", // 你的 API 地址 type: "GET", dataType: "json", data: { str: $('#smart_text').val() }, success: function (data) { if (data.code === 1) { data = data.data; if (data.mobile !== '') { $('#c-tel').val(data.mobile); } if (data.name !== '') { $('#c-customer').val(data.name); } if (data.item.id !== 0) { $('#item_id_value').val(data.item.id); $('#item_id').val(data.item.item); } if (data.idn) { $('#c-source-id').val(data.idn); } let citypicker = $('#c-city'); // $city.citypicker({ // province: data.province, // city: data.city, // district: data.region // }); citypicker.val(data.province + '/' + data.city + '/' + data.region); citypicker = citypicker.data("citypicker"); citypicker.refresh(); var code = citypicker.getCode("district") || citypicker.getCode("city") || citypicker.getCode("province"); $("#area_id").val(code); $("#area_name").val(citypicker.getVal()); } }, error: function () { console.error("请求失败"); } }); }); }, edit: function () { Controller.api.bindevent(); }, copy: function () { Controller.api.bindevent(); }, addabnormal: function () { console.log('abnormal'); Form.api.bindevent($("#add-form"), null, null, function (data) { Form.api.submit($("#add-form")); // console.log(data); // return false; }); }, delete: function () { console.log('delete'); Form.api.bindevent($("form[role=form]")); }, api: { bindevent: function () { Form.api.bindevent($("form[role=form]")); } } }; return Controller; });