336 lines
16 KiB
JavaScript
336 lines
16 KiB
JavaScript
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,
|
||
searchFormVisible:true,
|
||
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'), operate: false},
|
||
|
||
{field: 'order.order_no', title: __('Order.order_no'), operate: '='},
|
||
|
||
{
|
||
field: 'follow',
|
||
title: '跟进状态',
|
||
searchList: {
|
||
'0':'待跟进',
|
||
"1": '已跟进',
|
||
"2": '已结束',
|
||
},
|
||
formatter: Table.api.formatter.label,
|
||
custom: {
|
||
'0': 'warning', // 待跟进:灰蓝色(默认 Bootstrap info)
|
||
'1': 'success', // 已跟进:绿色
|
||
'2': 'default', // 已结束:红色
|
||
},
|
||
defaultValue: '0'
|
||
//sortable:true,
|
||
},
|
||
|
||
{field: 'record_count', title: '跟进次数',operate: false},
|
||
|
||
|
||
|
||
|
||
//{field: 'order_id', title: __('Order_id')},
|
||
|
||
|
||
|
||
{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: 'follow', title: __('跟进状态'), searchList: {"0":__('待跟进'),"1":__('已跟进'),"2":__('已结束')}, formatter: Table.api.formatter.normal},
|
||
|
||
// {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'),"2":__('自动')}, formatter: Table.api.formatter.normal},
|
||
|
||
|
||
|
||
{field: 'plan_time', title: __('Plan_time'), operate:false, addclass:'datetimerange', autocomplete:false,
|
||
formatter:function(value,row,index){
|
||
if(row.status == 25){
|
||
return' <span style="color:red;font-weight: bold">'+value+'</span>';
|
||
}else{
|
||
return value;
|
||
}
|
||
}},
|
||
{
|
||
field: 'is_finish_today',
|
||
title: '今日完成',
|
||
searchList: {
|
||
'0':'不能',
|
||
"1": '能',
|
||
},
|
||
formatter: Table.api.formatter.label,
|
||
custom: {
|
||
'0': 'warning',
|
||
'1': 'success',
|
||
},
|
||
},
|
||
{field: 'estimated_finish_time', title: __('师傅预估完成时间'), operate:'RANGE', addclass:'datetimerange', autocomplete:false},
|
||
{field: 'work_progress', title: __('当前施工进度'), operate: false, table: table, class: 'autocontent', formatter: Table.api.formatter.content},
|
||
|
||
//{field: 'order.source_shop', title: __('Order.source_shop'), operate: '='},
|
||
// {field: 'order.source', title: __('Order.source')},
|
||
{field: 'orderb.customer', title: __('Order.customer'), operate: false},
|
||
{field: 'orderb.tel', title: __('Order.tel'), operate: '='},
|
||
{field: 'orderb.address', title: __('Order.address'), operate: false, table: table, class: 'autocontent', formatter: Table.api.formatter.content},
|
||
|
||
{field: 'orderb.item_title', title: __('Order.item_title'), operate: false},
|
||
{field: 'orderb.detail', title: __('Order.detail'), operate: false, 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: 'arrive_time', title: __('上门时间'), operate:false, addclass:'datetimerange', autocomplete:false},
|
||
{field: 'arrive_image', title: __('上门照片'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.images},
|
||
|
||
// {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:false, 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: '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;
|
||
}
|
||
},
|
||
|
||
{
|
||
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;
|
||
}
|
||
},
|
||
],
|
||
|
||
}
|
||
]
|
||
]
|
||
});
|
||
|
||
// 为表格绑定事件
|
||
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.open({
|
||
type: 1,
|
||
title: '请输入操作理由',
|
||
area: ['520px', '280px'], // 宽高可调
|
||
btn: ['提交', '取消'],
|
||
content: '<div style="padding: 20px;">' +
|
||
'<div style="margin-bottom: 10px; color: #f39c12; font-size: 14px;">' +
|
||
'提示:取消后该订单会重新进入待派单状态' +
|
||
'</div>' +
|
||
//'<input id="input-title" data-field="title" data-params=\'{"custom[type]":"1"}\' data-rule="required" data-source="setting/abnormal/index" class="form-control selectpage" type="text" value="">'+
|
||
Config.abnormal_select +
|
||
'<textarea style="margin-top: 10px" id="input-reason" class="form-control" data-rule="required" rows="2" placeholder="请输入操作理由"></textarea>' +
|
||
'</div>',
|
||
yes: function(index, layero) {
|
||
var inputTitle = $("#reason_title").val()+',';
|
||
var inputValue = $("#input-reason").val().trim();
|
||
|
||
if (!inputValue) {
|
||
Layer.msg('输入内容不能为空!');
|
||
return;
|
||
}
|
||
inputValue = inputTitle + inputValue
|
||
|
||
|
||
Layer.close(index);
|
||
|
||
var loadingIndex = Layer.load(1, {
|
||
shade: [0.2, '#ccc']
|
||
});
|
||
|
||
$.ajax({
|
||
url: 'orders/dispatch2/del',
|
||
type: 'POST',
|
||
data: {
|
||
ids: selectedIds, // 确保 selectedIds 已定义
|
||
reason: inputValue
|
||
},
|
||
success: function(response) {
|
||
Layer.close(loadingIndex);
|
||
if (response.code == 1) {
|
||
Toastr.success(response.message || "操作成功!");
|
||
table.bootstrapTable('refresh');
|
||
} else {
|
||
Toastr.error(response.msg || "操作失败!");
|
||
}
|
||
},
|
||
error: function() {
|
||
Layer.close(loadingIndex);
|
||
Toastr.error("操作失败,请重试!");
|
||
}
|
||
});
|
||
}
|
||
});
|
||
|
||
});
|
||
|
||
|
||
|
||
|
||
// 获取选中项
|
||
$(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;
|
||
});
|