From 52a9e4775e29722e23d010831ca2fee7305e5706 Mon Sep 17 00:00:00 2001
From: syruan <15555146157@163.com>
Date: Tue, 15 Jul 2025 20:23:35 +0800
Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E4=BB=B6=E6=8E=92=E5=BA=8F=E3=80=81?=
=?UTF-8?q?=E6=89=B9=E9=87=8F=E5=AE=A1=E6=A0=B8=E3=80=81=E9=A1=B5=E7=A0=81?=
=?UTF-8?q?=E4=BF=9D=E6=8C=81=E4=B8=8D=E8=B7=B3=E8=BD=AC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
js/accessory/accessory_out_bound_list.js | 133 +++++++++++++++++
.../child/accessory_store_edit_form.js | 3 +-
js/accessory/child/accessory_store_form.js | 3 +-
js/basic/fit_type_list.js | 141 +++++++++++++++++-
page/accessory/accessory_out_bound_list.html | 4 +-
5 files changed, 280 insertions(+), 4 deletions(-)
diff --git a/js/accessory/accessory_out_bound_list.js b/js/accessory/accessory_out_bound_list.js
index ac125a4..23c6ad7 100644
--- a/js/accessory/accessory_out_bound_list.js
+++ b/js/accessory/accessory_out_bound_list.js
@@ -1,6 +1,8 @@
let form, table, laydate;
let tableIns;
let pageNum = 1; // 定义分页
+let selectedData = []; // 存储选中的数据
+
layui.use(["form", "table", 'laydate'], function () {
form = layui.form;
table = layui.table;
@@ -10,6 +12,16 @@ layui.use(["form", "table", 'laydate'], function () {
range: ['#startDay', '#endDay'],
rangeLinked: true
});
+
+ // 监听复选框选择
+ table.on('checkbox(currentTableId2)', function(obj){
+ let checkStatus = table.checkStatus('currentTableId');
+ selectedData = checkStatus.data;
+
+ // 根据选中状态显示/隐藏批量审核按钮
+ updateBatchAuditButton();
+ });
+
initTable();
});
@@ -44,6 +56,8 @@ function reloadData() {
// 重载表格
function reloadTable(pageNum) {
+ selectedData = []; // 清空选中数据
+ $('#batchAuditBtn').hide(); // 隐藏批量审核按钮
table.reload("currentTableId", {
page: {
curr: pageNum ? pageNum : 1,
@@ -95,6 +109,11 @@ function initTable() {
},
cols: [
[
+ {
+ type: 'checkbox',
+ width: '4%',
+ fixed: 'left'
+ },
{
width: '4%',
title: "序号",
@@ -253,3 +272,117 @@ function accessoryOutBoundDetail(obj, type) {
// 1.工器具 0.设备
openIframeByParamObj("accessory_out_bound_detail", "配件出库记录", "../accessory/child/accessory_out_bound_detail.html", "92%", "95%", obj);
}
+
+// 更新批量审核按钮状态
+function updateBatchAuditButton() {
+ let pendingAuditData = selectedData.filter(item => item.status === '1'); // 只有待审核状态的才能批量审核
+ if (pendingAuditData.length > 0) {
+ $('#batchAuditBtn').show();
+ } else {
+ $('#batchAuditBtn').hide();
+ }
+}
+
+// 批量审核
+function batchAudit() {
+ let pendingAuditData = selectedData.filter(item => item.status === '1');
+
+ if (pendingAuditData.length === 0) {
+ return layer.msg('请选择待审核状态的数据', {icon: 2});
+ }
+
+ layer.open({
+ type: 1,
+ title: '批量审核 (' + pendingAuditData.length + '条)',
+ area: ['500px', '300px'],
+ content: getBatchAuditFormHtml(),
+ btn: ['确定', '取消'],
+ success: function(layero) {
+ // 重新渲染表单
+ form.render();
+
+ // 监听审核结果变化
+ form.on('radio(batchAuditResult)', function(data) {
+ if (data.value === '2') { // 通过
+ $('textarea[name="batchAuditRemarks"]').val('批量审核通过');
+ } else if (data.value === '3') { // 不通过
+ $('textarea[name="batchAuditRemarks"]').val('');
+ }
+ });
+ },
+ yes: function(index) {
+ submitBatchAudit(pendingAuditData, index);
+ }
+ });
+}
+
+// 获取批量审核表单HTML
+function getBatchAuditFormHtml() {
+ return `
+
+ `;
+}
+
+// 提交批量审核
+function submitBatchAudit(dataList, layerIndex) {
+ let auditStatus = $('input[name="batchAuditStatus"]:checked').val();
+ let auditRemarks = $('textarea[name="batchAuditRemarks"]').val();
+
+ if (auditStatus === '3' && (!auditRemarks || auditRemarks.trim() === '')) {
+ return layer.msg('驳回时必须填写审核意见', {icon: 2});
+ }
+
+ let loadingMsg = layer.msg('正在批量审核,请稍等...', {
+ icon: 16,
+ shade: 0.3,
+ time: 0
+ });
+
+ let idList = dataList.map(item => item.id);
+ let params = {
+ encryptedData: JSON.stringify({
+ idList: idList,
+ status: auditStatus,
+ remark: auditRemarks.trim()
+ })
+ };
+
+ ajaxRequest(dataUrl + "backstage/partApply/batchAudit", "POST", params, true,
+ function() {
+ // 请求前处理
+ },
+ function(result) {
+ layer.close(loadingMsg);
+ if (result.code === 200) {
+ layer.close(layerIndex);
+ layer.msg('批量审核成功', {icon: 1});
+ selectedData = [];
+ $('#batchAuditBtn').hide();
+ reloadData();
+ } else {
+ layer.msg(result.msg || '批量审核失败', {icon: 2});
+ }
+ },
+ function(xhr, status, error) {
+ layer.close(loadingMsg);
+ layer.msg('服务异常,请稍后重试', {icon: 2});
+ errorFn(xhr, status, error);
+ }
+ );
+}
diff --git a/js/accessory/child/accessory_store_edit_form.js b/js/accessory/child/accessory_store_edit_form.js
index 282f4f8..c41ee97 100644
--- a/js/accessory/child/accessory_store_edit_form.js
+++ b/js/accessory/child/accessory_store_edit_form.js
@@ -400,7 +400,8 @@ function checkValue(that, type) {
function closePage(type) {
let index = parent.layer.getFrameIndex(window.name); // 先得到当前 iframe层的索引
if (type == 1) {
- window.parent.reloadData();
+ let index = parent.layer.getFrameIndex(window.name); // 先得到当前 iframe层的索引
+ parent.layer.close(index); // 再执行关闭window.parent.closePage();
}
parent.layer.close(index); // 再执行关闭
diff --git a/js/accessory/child/accessory_store_form.js b/js/accessory/child/accessory_store_form.js
index 7a38a20..d73e175 100644
--- a/js/accessory/child/accessory_store_form.js
+++ b/js/accessory/child/accessory_store_form.js
@@ -499,7 +499,8 @@ function checkValue(that, type) {
function closePage(type) {
let index = parent.layer.getFrameIndex(window.name); // 先得到当前 iframe层的索引
if (type == 1) {
- window.parent.reloadData();
+ let index = parent.layer.getFrameIndex(window.name); // 先得到当前 iframe层的索引
+ parent.layer.close(index); // 再执行关闭
}
parent.layer.close(index); // 再执行关闭
}
\ No newline at end of file
diff --git a/js/basic/fit_type_list.js b/js/basic/fit_type_list.js
index b221c14..455cd1e 100644
--- a/js/basic/fit_type_list.js
+++ b/js/basic/fit_type_list.js
@@ -95,7 +95,9 @@ function getDTreeData() {
}, function (result) {
if (result.code === 200) {
if (result.data && result.data.length > 0) {
- $.each(result.data, function (index, item) {
+ // 对数据进行排序处理
+ var sortedData = sortDataByChildName(result.data);
+ $.each(sortedData, function (index, item) {
item.title = item.name;
list.push(item);
})
@@ -107,6 +109,143 @@ function getDTreeData() {
return list;
}
+/**
+ * 对数据进行排序,2级level层级根据其子层3级的name编号排序
+ * @param {Array} data 原始数据数组
+ * @returns {Array} 排序后的数据数组
+ */
+function sortDataByChildName(data) {
+ try {
+ // 如果数据为空或无效,直接返回
+ if (!data || data.length === 0) {
+ return data;
+ }
+
+ // 按level分组
+ var level0Items = [];
+ var level1Items = [];
+ var level2Items = [];
+ var level3Items = [];
+ var otherItems = [];
+
+ for (var i = 0; i < data.length; i++) {
+ var item = data[i];
+ if (!item || typeof item.level === 'undefined') {
+ continue;
+ }
+
+ if (item.level === 0) {
+ level0Items.push(item);
+ } else if (item.level === 1) {
+ level1Items.push(item);
+ } else if (item.level === 2) {
+ level2Items.push(item);
+ } else if (item.level === 3) {
+ level3Items.push(item);
+ } else if (item.level > 3) {
+ otherItems.push(item);
+ }
+ }
+
+ // 如果没有2级或3级数据,直接返回原始数据
+ if (level2Items.length === 0) {
+ return data;
+ }
+
+ // 为每个2级项目找到其最小的3级子项name编号
+ var level2WithMinChildName = [];
+ for (var j = 0; j < level2Items.length; j++) {
+ var level2Item = level2Items[j];
+
+ // 找到属于这个2级项目的所有3级子项
+ var childItems = [];
+ for (var k = 0; k < level3Items.length; k++) {
+ if (level3Items[k].parentId === level2Item.id) {
+ childItems.push(level3Items[k]);
+ }
+ }
+
+ // 如果有子项,找到最小的name编号
+ var minChildName = null;
+ if (childItems.length > 0) {
+ var childNames = [];
+ for (var l = 0; l < childItems.length; l++) {
+ var childName = childItems[l].name;
+ if (childName) {
+ var match = childName.match(/\d+/);
+ var num = match ? parseInt(match[0]) : 999999; // 如果没有数字,给一个很大的数
+ childNames.push(num);
+ }
+ }
+ if (childNames.length > 0) {
+ minChildName = Math.min.apply(Math, childNames);
+ }
+ }
+
+ // 创建新对象包含排序信息
+ var itemWithSort = {};
+ for (var prop in level2Item) {
+ if (level2Item.hasOwnProperty(prop)) {
+ itemWithSort[prop] = level2Item[prop];
+ }
+ }
+ itemWithSort.minChildName = minChildName;
+ itemWithSort.childCount = childItems.length;
+ level2WithMinChildName.push(itemWithSort);
+ }
+
+
+
+ // 对2级项目按最小子项name编号排序
+ level2WithMinChildName.sort(function(a, b) {
+ // 如果都有子项编号,按编号排序
+ if (a.minChildName !== null && b.minChildName !== null) {
+ return a.minChildName - b.minChildName;
+ }
+ // 如果只有一个有子项编号,有编号的排在前面
+ if (a.minChildName !== null && b.minChildName === null) {
+ return -1;
+ }
+ if (a.minChildName === null && b.minChildName !== null) {
+ return 1;
+ }
+ // 如果都没有子项编号,按原始name排序
+ if (a.name && b.name) {
+ return a.name.localeCompare ? a.name.localeCompare(b.name) : (a.name > b.name ? 1 : -1);
+ }
+ return 0;
+ });
+
+ // 移除临时添加的属性
+ var sortedLevel2Items = [];
+ for (var m = 0; m < level2WithMinChildName.length; m++) {
+ var originalItem = {};
+ for (var prop in level2WithMinChildName[m]) {
+ if (level2WithMinChildName[m].hasOwnProperty(prop) &&
+ prop !== 'minChildName' && prop !== 'childCount') {
+ originalItem[prop] = level2WithMinChildName[m][prop];
+ }
+ }
+ sortedLevel2Items.push(originalItem);
+ }
+
+ // 重新组合所有数据,保持其他level的原始顺序
+ var result = [];
+ result = result.concat(level0Items);
+ result = result.concat(level1Items);
+ result = result.concat(sortedLevel2Items);
+ result = result.concat(level3Items);
+ result = result.concat(otherItems);
+
+ return result;
+
+ } catch (error) {
+ console.error("排序函数出错:", error);
+ // 如果排序失败,返回原始数据
+ return data;
+ }
+}
+
// 查询、重置
function queryDtree(type) {
if (type === 1) {
diff --git a/page/accessory/accessory_out_bound_list.html b/page/accessory/accessory_out_bound_list.html
index ef83b20..75a6e43 100644
--- a/page/accessory/accessory_out_bound_list.html
+++ b/page/accessory/accessory_out_bound_list.html
@@ -3,7 +3,7 @@
- 领料出库
+ 领料配件出库
@@ -58,6 +58,8 @@
class="layui-icon layui-icon-refresh"> 重 置
+