302 lines
12 KiB
JavaScript
302 lines
12 KiB
JavaScript
define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) {
|
|
|
|
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',
|
|
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: '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_id', title: __('Area_id')},
|
|
{
|
|
field: 'address',
|
|
title: __('Address'),
|
|
operate: 'LIKE',
|
|
table: table,
|
|
class: 'autocontent',
|
|
formatter: Table.api.formatter.content
|
|
},
|
|
{field: 'work_tel_id', title: __('Work_tel_id')},
|
|
// {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,
|
|
buttons: [
|
|
{
|
|
name: 'edit',
|
|
icon: 'fa fa-pencil',
|
|
title: __('Edit'),
|
|
extend: 'data-toggle="tooltip" data-container="body"',
|
|
classname: 'btn btn-xs btn-success btn-editone'
|
|
},
|
|
{
|
|
name: 'del',
|
|
icon: 'fa fa-trash',
|
|
title: __('Del'),
|
|
extend: 'data-toggle="tooltip" data-container="body"',
|
|
classname: 'btn btn-xs btn-danger btn-delone'
|
|
},
|
|
{
|
|
name: 'push',
|
|
icon: 'fa fa-copy',
|
|
title: '复制',
|
|
url: 'order/copy',
|
|
extend: 'data-toggle="tooltip" data-container="body"',
|
|
classname: 'btn btn-xs btn-info btn-dialog',
|
|
callback: function ($data){
|
|
console.log($data);
|
|
}
|
|
},
|
|
{
|
|
name:"income",
|
|
text:"新增收款",
|
|
title:"新增收款",
|
|
classname:"btn-view btn-dialog",
|
|
icon:'fa fa-money',
|
|
url: function(row){
|
|
return 'orders/income/add?order_id='+row.id;
|
|
},
|
|
dropdown:"更多",
|
|
visible:function(row){
|
|
return true;
|
|
},
|
|
refresh:true,
|
|
}
|
|
],
|
|
}
|
|
]
|
|
],
|
|
});
|
|
|
|
// 为表格绑定事件
|
|
Table.api.bindevent(table);
|
|
},
|
|
add: function () {
|
|
Controller.api.bindevent();
|
|
},
|
|
edit: function () {
|
|
Controller.api.bindevent();
|
|
},
|
|
copy: function () {
|
|
Controller.api.bindevent();
|
|
},
|
|
api: {
|
|
bindevent: function () {
|
|
Form.api.bindevent($("form[role=form]"));
|
|
}
|
|
}
|
|
};
|
|
|
|
function parseAndFill() {
|
|
// 获取左侧输入框的内容
|
|
}
|
|
|
|
let $input = $("#c-area_id");
|
|
let $dropdown = $("#address-list");
|
|
let $hiddenField = $("#selected-area-code");
|
|
let timer = null; // 定义定时器
|
|
// 监听输入框
|
|
$input.on("input", function () {
|
|
clearTimeout(timer); // 清除上次的定时器
|
|
let keyword = $(this).val().trim();
|
|
|
|
if (keyword.length === 0) {
|
|
$dropdown.hide();
|
|
return;
|
|
}
|
|
|
|
// 延迟 500 毫秒后执行 AJAX 查询(防止过快触发)
|
|
timer = setTimeout(() => {
|
|
$.ajax({
|
|
url: "/admin/area/search", // 你的 API 地址
|
|
type: "GET",
|
|
data: {keyword: keyword},
|
|
dataType: "json",
|
|
success: function (data) {
|
|
renderDropdown(data.data);
|
|
},
|
|
error: function () {
|
|
console.error("请求失败");
|
|
}
|
|
});
|
|
}, 200); // 500 毫秒防抖
|
|
});
|
|
|
|
// 渲染城市下拉选项
|
|
function renderDropdown(data) {
|
|
$dropdown.empty(); // 清空列表
|
|
if (data.length === 0) {
|
|
let $option = $("<li class='dropdown-item'></li>")
|
|
.text('未搜索到结果')
|
|
.attr("data-value", 0);
|
|
$dropdown.append($option);
|
|
} else {
|
|
data.forEach(item => {
|
|
let $option = $("<li class='dropdown-item'></li>")
|
|
.text(item.merge_name)
|
|
.attr("data-value", item.area_code) // 绑定 area_code
|
|
.on("click", function () {
|
|
$input.val(item.merge_name); // 选中后填充输入框
|
|
$hiddenField.val($(this).attr("data-value")); // 存储 area_code
|
|
$dropdown.hide();
|
|
});
|
|
|
|
$dropdown.append($option);
|
|
});
|
|
}
|
|
|
|
|
|
$dropdown.show(); // 显示下拉框
|
|
}
|
|
|
|
|
|
let $inputService = $("#c-service_title");
|
|
let $dropdownService = $("#service-list");
|
|
let $hiddenFieldService = $("#selected-service_id");
|
|
let timerService = null; // 定义定时器
|
|
|
|
$inputService.on("input", function () {
|
|
clearTimeout(timerService); // 清除上次的定时器
|
|
let keyword = $(this).val().trim();
|
|
|
|
if (keyword.length === 0) {
|
|
$dropdown.hide();
|
|
return;
|
|
}
|
|
|
|
// 延迟 500 毫秒后执行 AJAX 查询(防止过快触发)
|
|
timerService = setTimeout(() => {
|
|
$.ajax({
|
|
url: "/admin/item/search", // 你的 API 地址
|
|
type: "GET",
|
|
data: {keyword: keyword},
|
|
dataType: "json",
|
|
success: function (data) {
|
|
renderDropdownService(data.data);
|
|
},
|
|
error: function () {
|
|
console.error("请求失败");
|
|
}
|
|
});
|
|
}, 200); // 500 毫秒防抖
|
|
});
|
|
|
|
// 渲染资源城市下拉选项
|
|
function renderDropdownService(data) {
|
|
$dropdownService.empty(); // 清空列表
|
|
if (data.length === 0) {
|
|
let $option = $("<li class='dropdown-item'></li>")
|
|
.text('未搜索到结果')
|
|
.attr("data-value", 0);
|
|
$dropdownService.append($option);
|
|
} else {
|
|
data.forEach(item => {
|
|
let $option = $("<li class='dropdown-item'></li>")
|
|
.html(item.title + `<span class="text-muted small ms-1 ml-2">${item.key_word}</span>`)
|
|
.attr("data-value", item.id) // 绑定 area_code
|
|
.on("click", function () {
|
|
$inputService.val(item.title); // 选中后填充输入框
|
|
$hiddenFieldService.val($(this).attr("data-value")); // 存储 area_code
|
|
$dropdownService.hide();
|
|
});
|
|
$dropdownService.append($option);
|
|
});
|
|
}
|
|
|
|
|
|
$dropdownService.show(); // 显示下拉框
|
|
}
|
|
|
|
|
|
// 点击外部隐藏下拉框
|
|
$(document).on("click", function (e) {
|
|
if (!$(e.target).closest("#c-address, #address-list").length) {
|
|
$dropdown.hide();
|
|
}
|
|
});
|
|
return Controller;
|
|
|
|
});
|