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', fixedRightNumber: 1, fixedNumber: 3, fixedColumns: true, columns: [ [ {checkbox: true}, {field: 'id', title: __('Id')}, { field: 'status', title: __('Status'), fixed:true, searchList: { "0": __('Status 0'), "10": __('Status 10'), "20": __('Status 20'), "30": __('Status 30'), "40": __('Status 40'), "41": __('Status 41'), "50": __('Status 50'), "60": __('Status 60'), "-10": __('Status -10'), /*"-20": __('Status -20'), "-30": __('Status -30')*/ }, formatter: Table.api.formatter.status }, { field: 'dispatch_type', title: '派单方式', searchList: { "1": '手动派单', "2": '自动派单', }, formatter: Table.api.formatter.label }, {field: 'item_title', title: __('Item_title'), operate: 'LIKE'}, {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: 'area.merge_name', title: __('Area_id'),searchable:false}, { field: 'address', title: __('Address'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content }, { field: 'receive_type', title: '收款方式', searchList: { "1": '已收全款', "2": '已收定金', }, formatter: Table.api.formatter.label }, { field: 'total', title: '总收款', formatter: Table.api.formatter.Text }, // {field: 'worker_id', title: __('Worker_id')}, {field: 'source_shop', title: __('Source')}, // {field: 'source_uid', title: __('Source_uid'), 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 btn-info btn-editone', visible: function (row) { if (row.status != 60) { return true; } return false; }, }, { name: 'push', icon: 'fa fa-copy', title: '复制订单', text: "复制订单", url: 'order/copy', extend: 'data-toggle="tooltip" data-container="body"', classname: 'btn btn-dialog', callback: function ($data) { // console.log($data); }, dropdown: "更多" }, { name: "dispatch", text: "派单", title: "派单", extend: 'data-toggle="tooltip" data-container="body"', classname: 'btn btn-xs btn-info 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-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 btn-info btn-click', icon: 'fa fa-text', click: function (data, item) { const text = assembleOrderMessage(item); copyToClipboard(text); } }, { name: 'delete', text: '取消订单', title: '取消订单', classname: 'btn btn-dialog', icon: 'fa fa-trash', url: 'order/delete', dropdown: "更多", visible: function (row) { if (row.status >= 0 && row.status < 60) { return true; } return false; }, }, { name:"error", text:"订单报错", title:"订单报错", extend: 'data-toggle="tooltip" data-container="body"', classname: 'btn btn-dialog', icon: 'fa fa-bolt', url: 'order/addAbnormal', refresh:true, dropdown: "更多", visible: function (row) { if (row.status != 60) { return true; } return false; }, }, { name: 'invoice', text: '申请开票', title: '申请开票', classname: 'btn btn-dialog', icon: 'fa fa-send', url: 'order/invoice/', dropdown: "更多", visible: function (row) { if (row.status == 60) { return true; } return false; }, }, { name: 'aftersale', text: '申请售后', title: '申请售后', classname: 'btn btn-dialog', icon: 'fa fa-phone-square', url: 'aftersales/aftersale/add', dropdown: "更多", visible: function (row) { if (row.aftersale_btn==true) { 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; },); $("#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("请求失败"); } }); }); Controller.api.map(); }, edit: function () { Controller.api.bindevent(); Controller.api.map(); }, copy: function () { Controller.api.bindevent(); Controller.api.map(); }, saleafter: 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 () { Form.api.bindevent($("form[role=form]")); }, invoice: function () { function toggleInvoiceFields() { const type = $('#c-source').val(); if (type === '1') { // 公司发票 $('#c-tax_number').closest('.form-group').show(); $('#c-company_address').closest('.form-group').show(); $('#c-company_phone').closest('.form-group').show(); $('#c-bank_name').closest('.form-group').show(); $('#c-bank_account').closest('.form-group').show(); } else { // 个人发票 $('#c-tax_number').closest('.form-group').hide(); $('#c-company_address').closest('.form-group').hide(); $('#c-company_phone').closest('.form-group').hide(); $('#c-bank_name').closest('.form-group').hide(); $('#c-bank_account').closest('.form-group').hide(); } } // 初始化时执行一次 toggleInvoiceFields(); // 监听 select 改变 $('#c-source').on('change',function () { toggleInvoiceFields(); }); Form.api.bindevent($("form[role=form]")); }, api: { bindevent: function () { Form.api.bindevent($("form[role=form]")); }, map:function () { $("#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()); }); // $("#area_map").data("callback", function (res) { // Form.api.target($('#c-address')); // }); $(document).on('click', "#area_map", function (e) { const data = $("#c-city").val(); if (!data){ Toastr.error('请先选择区域'); return false; } var that = this; var callback = $(that).data('callback'); var input_id = $(that).data("input-id") ? $(that).data("input-id") : ""; var lat_id = $(that).data("lat-id") ? $(that).data("lat-id") : ""; var lng_id = $(that).data("lng-id") ? $(that).data("lng-id") : ""; 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 = $("#c-city").val(); var zoom = zoom_id ? $("#" + zoom_id).val() : ''; var url = "/addons/address/index/select?a=1"; url += (lat && lng) ? 'lat=' + lat + '&lng=' + lng + (input_id ? "&address=" + $("#" + input_id).val() : "") +(zoom ? "&zoom=" + zoom : "") : '' ; if (city_code){ url += city_code ? "&city_code=" + city_code : ""; } // console.log(url); Fast.api.open(url, '位置选择', { callback: function (res) { input_id && $("#" + input_id).val(res.address).trigger("change"); lat_id && $("#" + lat_id).val(res.lat).trigger("change"); lng_id && $("#" + lng_id).val(res.lng).trigger("change"); zoom_id && $("#" + zoom_id).val(res.zoom).trigger("change"); try { //执行回调函数 if (typeof callback === 'function') { callback.call(that, res); } } catch (e) { } } }); }); 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(); } } }; return Controller; });