allocatr/public/assets/js/backend/order.js
2025-03-06 22:56:05 +08:00

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;
});