define(['jquery', 'bootstrap', 'backend', 'table', 'form','layer'], function ($, undefined, Backend, Table, Form) { var Controller = { index: function () { // 初始化表格参数配置 Table.api.init({ extend: { index_url: 'orders/dispatch2/index' + location.search, //add_url: 'orders/dispatch/add', // edit_url: 'orders/dispatch2/edit', //del_url: 'orders/dispatc2h/del', multi_url: 'orders/dispatch2/multi', import_url: 'orders/dispatch2/import', table: 'order_dispatch', } }); var table = $("#table"); // 初始化表格 table.bootstrapTable({ url: $.fn.bootstrapTable.defaults.extend.index_url, pk: 'id', sortName: 'id', fixedColumns: true, fixedRightNumber: 1, columns: [ [ //{checkbox: true}, {checkbox: true, formatter: function (value, row, index) { // 根据 is_selectable 字段控制是否禁用 // return row.is_selectable ? '' : {disabled: true}; if(row.is_disabled === true){ return { disabled: true }; } return ''; }}, {field: 'id', title: __('Id')}, //{field: 'order_id', title: __('Order_id')}, {field: 'order.order_no', title: __('Order.order_no'), operate: 'LIKE'}, // {field: 'worker_id', title: __('Worker_id')}, {field: 'worker_name', title: __('Worker_name'), operate: 'LIKE'}, {field: 'worker_tel', title: __('Worker_tel'), operate: 'LIKE'}, {field: 'type', title: __('Type'), searchList: {"1":__('Type 1')}, formatter: Table.api.formatter.normal}, {field: 'status', title: __('Status'), searchList: {"0":__('Status 0'),"10":__('Status 10'),"20":__('Status 20'),"25":__('Status 25'),"30":__('Status 30'),"60":__('Status 60'),"-10":__('Status -10'), //"-20":__('Status -20'), "-30":__('Status -30')}, formatter: Table.api.formatter.status, custom:{25:"red"} }, {field: 'plan_time', title: __('Plan_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false, formatter:function(value,row,index){ if(row.status == 25){ return' '+value+''; }else{ return value; } }}, {field: 'order.source_shop', title: __('Order.source_shop'), operate: 'LIKE'}, // {field: 'order.source', title: __('Order.source')}, {field: 'order.customer', title: __('Order.customer'), operate: 'LIKE'}, {field: 'order.tel', title: __('Order.tel'), operate: 'LIKE'}, {field: 'order.address', title: __('Order.address'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content}, {field: 'order.item_title', title: __('Order.item_title'), operate: 'LIKE'}, {field: 'order.detail', title: __('Order.detail'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content}, {field: 'order.images', title: __('Order.images'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.images}, {field: 'remark', title: __('Remark'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content}, // {field: 'is_notice', title: __('Is_notice'), searchList: {"0":__('Is_notice 0'),"1":__('Is_notice 1')}, formatter: Table.api.formatter.normal}, // {field: 'admin_id', title: __('Admin_id')}, {field: 'admin_user', title: __('Admin_user'), operate: 'LIKE'}, {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: 'finish_time', title: __('Finish_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:"修改", title:"", 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.btn_edit){ return true; } return false; } },*/ { name: 'dispatchlog', text:"日志", title:"变更日记", icon: 'fa fa-list', url: function(row){ return 'orders/dispatchlog/index?dispatch_id='+row.id; }, extend: 'data-toggle="tooltip" data-container="body"', classname: 'btn btn-xs btn-default btn-dialog', visible:function(row){ return true; } }, { name: 'finish', text:"完成", title:"完成当前任务", icon: 'fa fa-check', url:'orders/dispatch2/finish', extend: 'data-toggle="tooltip" data-container="body"', classname: 'btn btn-xs btn-success btn-dialog', visible:function(row){ if(row.btn_finished){ return true; } return false; } }, { name: 'addrecord', text:"跟进", title:"跟进信息", icon: 'fa fa-pencil', url: 'orders/dispatchrecord/add', extend: 'data-toggle="tooltip" data-container="body"', classname: 'btn btn-xs btn-warning btn-dialog', visible:function(row){ if(row.btn_record){ return true; } return false; } }, ], } ] ] }); // 为表格绑定事件 Table.api.bindevent(table); // 获取选中项 $(document).on("click", ".btn-cancel-selected", function () { //Layer.alert(JSON.stringify(Table.api.selecteddata(table))); // 获取选中项的 ID var selectedData = Table.api.selecteddata(table); var selectedIds = selectedData.map(item => item.id); // 假设每行数据有 `id` 字段 if (selectedIds.length === 0) { Layer.alert("请先选择至少一项数据!"); return; } // 弹出确认框并要求输入文本 Layer.prompt({ title: "请输入操作理由", formType: 2, // 多行文本输入框 }, function (inputValue, index) { if (!inputValue) { Layer.alert("输入内容不能为空!"); return; } // 关闭弹出框 Layer.close(index); //这里可以加入 Ajax 请求处理逻辑 $.ajax({ url: 'orders/dispatch2/del', type: 'POST', data: { ids: selectedIds, reason: inputValue, }, success: function (response,data) { if(response.code == 1){ // 成功提示 Toastr.success(data.message || "操作成功!"); // 刷新表格 table.bootstrapTable('refresh'); }else{ Toastr.error(response.msg || "操作失败!"); } return; }, error: function () { Toastr.error("操作失败,请重试!"); return; } }); }); }); // 获取选中项 $(document).on("click", ".btn-add-normal", function () { // 获取选中项的 ID var selectedData = Table.api.selecteddata(table); var selectedIds = selectedData.map(item => item.id); // 假设每行数据有 `id` 字段 if (selectedIds.length === 0) { Layer.alert("请先选择至少一项数据!"); return; } if(selectedIds.length > 1){ Layer.alert("创建异常,一次只能选择一条订单!"); return; } // 拼接 ids 到 URL 后面 var url = 'orders/abnormal/add?ids=' + selectedIds.join(','); // 打开弹窗 Fast.api.open( url, "新增订单异常", // 弹窗标题 { area: ['800px', '600px'] // 设置弹窗宽度和高度,可以根据需求调整 } ); }); }, add: function () { Controller.api.bindevent(); }, edit: function () { Controller.api.bindevent(); }, finish: function () { Controller.api.bindevent(); }, addrecord: function () { Controller.api.bindevent(); }, dispatchlog: function () { Controller.api.bindevent(); }, api: { bindevent: function () { Form.api.bindevent($("form[role=form]")); } } }; return Controller; });