From 563ee1812b7ea612cd7ab3ac28e0e530344d17dd Mon Sep 17 00:00:00 2001 From: jiang Date: Wed, 3 Dec 2025 18:10:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=BC=8F=E6=B4=9E=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 2 +- js/demandPlan/apply_plan_list.js | 77 ++++--- js/demandPlan/child/apply_plan_edit_form.js | 33 +-- js/demandPlan/child/apply_plan_form.js | 37 ++-- js/demandPlan/child/choose_tool_type_list.js | 75 +++++-- js/demandPlan/plan_check_list.js | 2 + .../child/apply_plan_edit_form.html | 207 +++++++++--------- page/demandPlan/child/apply_plan_form.html | 205 ++++++++--------- .../child/choose_tool_type_list.html | 81 ++++--- page/demandPlan/plan_check_list.html | 2 + template/机具类型导入模板.xlsx | Bin 0 -> 9453 bytes 11 files changed, 398 insertions(+), 323 deletions(-) create mode 100644 template/机具类型导入模板.xlsx diff --git a/index.html b/index.html index 2ae7521..620b422 100644 --- a/index.html +++ b/index.html @@ -204,7 +204,7 @@ // 初始化页面 function initPage(miniAdmin){ var options = { - iniUrl: "api/init.json", // 初始化接口 + iniUrl: "api/initback.json", // 初始化接口 clearUrl: "api/clear.json", // 缓存清理接口 urlHashLocation: true, // 是否打开hash定位 bgColorDefault: false, // 主题默认配置 diff --git a/js/demandPlan/apply_plan_list.js b/js/demandPlan/apply_plan_list.js index bdc5916..969a812 100644 --- a/js/demandPlan/apply_plan_list.js +++ b/js/demandPlan/apply_plan_list.js @@ -20,7 +20,7 @@ function queryTable(type) { let flag = checkValue(keyWord); if (flag) { $('#keyWord').val(''); - return layer.msg('关键字查询包含特殊字符,请重新输入', { icon: 2 }); + return layer.msg('关键字查询包含特殊字符,请重新输入', {icon: 2}); } reloadTable(1); } else if (type === 2) { @@ -40,17 +40,17 @@ function reloadData() { // 重载表格 function reloadTable(pageNum) { table.reload("currentTableId", { - page: { - curr: pageNum ? pageNum : 1, + page: { + curr: pageNum ? pageNum : 1, + }, + where: { + encryptedData: JSON.stringify({ + 'keyWord': $('#keyWord').val(), + 'startDate': $('#startDate').val(), + 'endDate': $('#endDate').val() + }), + }, }, - where: { - encryptedData: JSON.stringify({ - 'keyWord': $('#keyWord').val(), - 'startDate': $('#startDate').val(), - 'endDate': $('#endDate').val() - }), - }, - }, ); } @@ -76,7 +76,7 @@ function initTable() { limitName: 'pageSize' }, parseData: function (res) { // res 即为原始返回的数据 - if(res.code === 401){ + if (res.code === 401) { closeWindowOpen(); } return { @@ -89,7 +89,7 @@ function initTable() { cols: [ [ { - width: '5.9%', + width: '5%', title: "序号", align: "center", templet: function (d) { @@ -102,7 +102,7 @@ function initTable() { title: "计划编号", unresize: true, align: "center", - sort:true, + sort: true, }, { field: "proName", @@ -110,23 +110,23 @@ function initTable() { title: "工程名称", unresize: true, align: "center", - sort:true, + sort: true, }, { field: "needTime", - width: '10%', + width: '8%', title: "需用日期", unresize: true, align: "center", - sort:true, + sort: true, }, { field: "creator", - width: '10%', + width: '8%', title: "申请人", unresize: true, align: "center", - sort:true, + sort: true, }, { field: "createTime", @@ -134,15 +134,15 @@ function initTable() { title: "申请时间", unresize: true, align: "center", - sort:true, + sort: true, }, { field: "remark", - width: '14%', + width: '10%', title: "备注", unresize: true, align: "center", - sort:true, + sort: true, templet: function (d) { if (d.remark) { if (d.remark.length > 100) { @@ -162,9 +162,26 @@ function initTable() { title: "审核状态", unresize: true, align: "center", - sort:true, + sort: true, templet: function (d) { - return getCheckStatus(d.statusType, d.status); + return getCheckStatus(d.statusType, d.status, d.mode); + }, + }, + { + field: "mode", + width: '8%', + title: "状态", + unresize: true, + align: "center", + sort: true, + templet: function (d) { + if (d.mode == '0') { + return "草稿"; + } else { + return "已提交"; + } + + }, }, { @@ -176,7 +193,7 @@ function initTable() { let status = getCheckStatus(d.statusType, d.status); let html = ""; html += "详情"; - if (status.indexOf('驳回') > -1 || status.indexOf('已撤回') > -1) { + if (status.indexOf('驳回') > -1 || status.indexOf('已撤回') > -1 || d.mode == '0') { html += "
|
修改"; } return html; @@ -204,12 +221,14 @@ function exportExcel() { } - //审核状态 -function getCheckStatus(statusType, status) { +function getCheckStatus(statusType, status, mode) { var company = ""; - if(statusType === '0' && status === '0'){ - return "已撤回"; + if (mode == '0') { + return "未提交"; + } + if (statusType === '0' && status === '0') { + return "已撤回"; } if (statusType === '1') { return "审核通过"; diff --git a/js/demandPlan/child/apply_plan_edit_form.js b/js/demandPlan/child/apply_plan_edit_form.js index f9eb306..bdc6db0 100644 --- a/js/demandPlan/child/apply_plan_edit_form.js +++ b/js/demandPlan/child/apply_plan_edit_form.js @@ -5,6 +5,7 @@ let jjDataArr = []; // 配件数据 let proList = []; // 工程下拉选 let delIdArr = []; let detailIdArr = []; + function setParams(obj) { objParam = JSON.parse(obj); layui.use(['form', 'layer', 'laydate', 'upload', 'table'], function () { @@ -106,14 +107,15 @@ function getPlanDetailsList() { jjDataArr.push(obj); detailIdArr.push(item.id); }) - $('#no_data_title').css({ 'display': 'none' }); + $('#no_data_title').css({'display': 'none'}); $('#search-info').removeAttr('style'); $('#table-box').removeAttr('style'); setTableData(jjDataArr); } } -function saveData2() { +function saveData2(mode) { + $('#mode').val(mode); $('#formSubmit').trigger('click') } @@ -135,11 +137,11 @@ function submitApply(data) { let list = getBaseTableData(); // 校验配件入库数量 if (list.length === 0) { - return layer.msg('未添加机具数据', { icon: 7 }); + return layer.msg('未添加机具数据', {icon: 7}); } for (let i = 0; i < list.length; i++) { if (parseInt(list[i].needNum) === 0) { - return layer.msg('机具明细,第' + (i + 1) + '行,未填写需用量', { icon: 7 }); + return layer.msg('机具明细,第' + (i + 1) + '行,未填写需用量', {icon: 7}); } // if (parseInt(list[i].times) === 0) { // return layer.msg('机具明细,第' + (i + 1) + '行,未填写需用天数', { icon: 7 }); @@ -160,7 +162,7 @@ function submitApply(data) { if (delDetailArr && delDetailArr.length > 0) { data.field.delIds = delDetailArr; } - let loadingMsg = layer.msg('正在提交保存,请稍等...', { icon: 16, shade: 0.01, time: '0' }); + let loadingMsg = layer.msg('正在提交保存,请稍等...', {icon: 16, shade: 0.01, time: '0'}); let url = dataUrl + 'backstage/planApplication/updatePlan'; let params = { encryptedData: JSON.stringify(data.field) @@ -173,14 +175,14 @@ function submitApply(data) { $('.save').removeClass("layui-btn-disabled").attr("disabled", false); $('.cancel').removeClass("layui-btn-disabled").attr("disabled", false); if (result.code === 200) { - parent.layer.msg(result.msg, { icon: 1 }); + parent.layer.msg(result.msg, {icon: 1}); closePage(1); } else { - layer.msg(result.msg, { icon: 2 }); + layer.msg(result.msg, {icon: 2}); } }, function (xhr, status, error) { layer.close(loadingMsg); // 关闭提示层 - layer.msg('服务异常,请稍后重试', { icon: 16, scrollbar: false, time: 2000 }); + layer.msg('服务异常,请稍后重试', {icon: 16, scrollbar: false, time: 2000}); $('.save').removeClass("layui-btn-disabled").attr("disabled", false); $('.cancel').removeClass("layui-btn-disabled").attr("disabled", false); errorFn(xhr, status, error) @@ -226,6 +228,7 @@ function chooseFitType() { let params = {}; openIframeByParamObj("choose_fit_type", '选择需求计划机具类型(设备类请备注大、中、小)', "./choose_tool_type_list.html", '92%', '95%', params); } + // 查询 function search() { let keyWord = $('#pName').val(); @@ -270,7 +273,7 @@ function addFitDatas(data) { } else { // 第一次添加数据 jjDataArr = JSON.parse(data); if (jjDataArr && jjDataArr.length > 0) { - $('#no_data_title').css({ 'display': 'none' }); + $('#no_data_title').css({'display': 'none'}); $('#search-info').removeAttr('style'); $('#table-box').removeAttr('style'); setTableData(jjDataArr); @@ -316,7 +319,7 @@ function setTableData(results) { html += "没有相关数据"; } $("#baseTable tbody").empty().append(html); - $('.refund-date').each(function(){ + $('.refund-date').each(function () { laydate.render({ elem: this, // 指定元素 type: 'date' // 可选,指定为日期类型,默认即是'date' @@ -376,10 +379,10 @@ function sel(selectStatus, that, id) { // 删除选中 function delFitType() { if (delIdArr.length == 0) { - layer.msg('请先选择需要删除的数据!', { icon: 7 }) + layer.msg('请先选择需要删除的数据!', {icon: 7}) return; } - let layerIndex = layer.confirm('
确定要删除选中数据吗!
', { title: '操作提示' }, function () { + let layerIndex = layer.confirm('
确定要删除选中数据吗!
', {title: '操作提示'}, function () { layer.close(layerIndex); for (let i = 0; i < delIdArr.length; i++) { for (let j = 0; j < jjDataArr.length; j++) { @@ -393,8 +396,8 @@ function delFitType() { if (jjDataArr.length === 0) { $('#no_data_title').removeAttr('style'); - $('#search-info').css({ 'display': 'none' }); - $('#table-box').css({ 'display': 'none' }); + $('#search-info').css({'display': 'none'}); + $('#table-box').css({'display': 'none'}); } else { // setTableData(jjDataArr); handleDelTableData(delIdArr); @@ -457,7 +460,7 @@ function checkValue(that, type, name) { if (type === 1 || type === 2) { // 需用量 / 需用天数 const regex = /^(0|[1-9]\d{0,6})$/; if (!regex.test(value) && value) { - layer.msg('' + name + '输入有误,请重新输入!', { icon: 5 }) + layer.msg('' + name + '输入有误,请重新输入!', {icon: 5}) $(that).val(0); } } diff --git a/js/demandPlan/child/apply_plan_form.js b/js/demandPlan/child/apply_plan_form.js index bc5d22c..c28b16a 100644 --- a/js/demandPlan/child/apply_plan_form.js +++ b/js/demandPlan/child/apply_plan_form.js @@ -4,6 +4,7 @@ let pageNum = 1, tableIns; // 定义分页 let jjDataArr = []; // 配件数据 let proList = []; // 工程下拉选 let delIdArr = []; + function setParams(obj) { objParam = JSON.parse(obj); layui.use(['form', 'layer', 'laydate', 'upload', 'table'], function () { @@ -48,7 +49,8 @@ function setSelectData(proList) { layui.form.render(); } -function saveData2() { +function saveData2(mode) { + $('#mode').val(mode); $('#formSubmit').trigger('click') } @@ -68,23 +70,22 @@ function setNumColor(value, type) { // 1.需要量 2.已发货量 3.差缺量 // 提交 function submitApply(data) { let list = getBaseTableData(); + console.log(list.length) // 校验配件入库数量 if (list.length === 0) { - return layer.msg('未添加机具数据', { icon: 7 }); + return layer.msg('未添加机具数据', {icon: 7}); } for (let i = 0; i < list.length; i++) { if (list[i].needNum === 0) { - return layer.msg('机具明细,第' + (i + 1) + '行,未填写需用量', { icon: 7 }); + return layer.msg('机具明细,第' + (i + 1) + '行,未填写需用量', {icon: 7}); } - // if (list[i].times === 0) { - // return layer.msg('机具明细,第' + (i + 1) + '行,未填写需用天数', { icon: 7 }); - // } + } data.field.jsonData = JSON.stringify(list); - let loadingMsg = layer.msg('正在提交保存,请稍等...', { icon: 16, shade: 0.01, time: '0' }); + let loadingMsg = layer.msg('正在提交保存,请稍等...', {icon: 16, shade: 0.01, time: '0'}); let url = dataUrl + 'backstage/planApplication/addPlan'; let params = { - encryptedData:JSON.stringify(data.field) + encryptedData: JSON.stringify(data.field) }; ajaxRequest(url, 'POST', params, true, function () { $('.save').addClass("layui-btn-disabled").attr("disabled", true); @@ -94,14 +95,14 @@ function submitApply(data) { $('.save').removeClass("layui-btn-disabled").attr("disabled", false); $('.cancel').removeClass("layui-btn-disabled").attr("disabled", false); if (result.code === 200) { - parent.layer.msg(result.msg, { icon: 1 }); + parent.layer.msg(result.msg, {icon: 1}); closePage(1); } else { - layer.msg(result.msg, { icon: 2 }); + layer.msg(result.msg, {icon: 2}); } }, function (xhr, status, error) { layer.close(loadingMsg); // 关闭提示层 - layer.msg('服务异常,请稍后重试', { icon: 16, scrollbar: false, time: 2000 }); + layer.msg('服务异常,请稍后重试', {icon: 16, scrollbar: false, time: 2000}); $('.save').removeClass("layui-btn-disabled").attr("disabled", false); $('.cancel').removeClass("layui-btn-disabled").attr("disabled", false); errorFn(xhr, status, error) @@ -180,7 +181,7 @@ function addFitDatas(data) { } else { // 第一次添加数据 jjDataArr = JSON.parse(data); if (jjDataArr && jjDataArr.length > 0) { - $('#no_data_title').css({ 'display': 'none' }); + $('#no_data_title').css({'display': 'none'}); $('#search-info').removeAttr('style'); $('#table-box').removeAttr('style'); setTableData(jjDataArr); @@ -277,10 +278,10 @@ function sel(selectStatus, that, id) { // 删除选中 function delFitType() { if (delIdArr.length == 0) { - layer.msg('请先选择需要删除的数据!', { icon: 7 }) + layer.msg('请先选择需要删除的数据!', {icon: 7}) return; } - let layerIndex = layer.confirm('
确定要删除选中数据吗!
', { title: '操作提示' }, function () { + let layerIndex = layer.confirm('
确定要删除选中数据吗!
', {title: '操作提示'}, function () { layer.close(layerIndex); for (let i = 0; i < delIdArr.length; i++) { for (let j = 0; j < jjDataArr.length; j++) { @@ -293,13 +294,13 @@ function delFitType() { } if (jjDataArr.length === 0) { $('#no_data_title').removeAttr('style'); - $('#search-info').css({ 'display': 'none' }); - $('#table-box').css({ 'display': 'none' }); + $('#search-info').css({'display': 'none'}); + $('#table-box').css({'display': 'none'}); } else { // setTableData(jjDataArr); handleDelTableData(delIdArr); } - delIdArr.splice(0,delIdArr.length); + delIdArr.splice(0, delIdArr.length); }); } @@ -356,7 +357,7 @@ function checkValue(that, type, name) { if (type === 1 || type === 2) { // 需用量 / 需用天数 const regex = /^(0|[1-9]\d{0,6})$/; if (!regex.test(value) && value) { - layer.msg('' + name + '输入不合法,请重新输入!', { icon: 5 }) + layer.msg('' + name + '输入不合法,请重新输入!', {icon: 5}) $(that).val(0); } } diff --git a/js/demandPlan/child/choose_tool_type_list.js b/js/demandPlan/child/choose_tool_type_list.js index d35681d..6c18d4a 100644 --- a/js/demandPlan/child/choose_tool_type_list.js +++ b/js/demandPlan/child/choose_tool_type_list.js @@ -8,12 +8,36 @@ let cjList = []; let jjDetailArr = []; // 入库配件类型数据 function setParams(obj) { objParam = JSON.parse(obj); - layui.use(["form", "table", 'element', 'layer', 'util'], function () { + layui.use(["form", "table", 'element', 'layer', 'util', 'upload'], function () { + form = layui.form; table = layui.table; element = layui.element; layer = layui.layer; util = layui.util; + upload = layui.upload; + // 渲染 + upload.render({ + elem: '#file', // 绑定多个元素 + headers: { + authorization: sessionStorage.getItem("gz-token"), + }, + url: dataUrl + "backstage/planApplication/importExcelTools", // 此处配置你自己的上传接口即可 + accept: 'file', // 普通文件 + acceptMime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel', + exts: 'xlsx|xls', // 为空表示不限制文件后缀(如需限制特定类型,写如:'doc|docx|pdf|xlsx|jpg') + done: function (res) { + if (res.code == 200){ + $.each(res.data, function (index, value) { + huancun.push(value.id); + huancunObj.push(value); + }) + $('#num').html(huancun.length); + } + layer.msg('上传成功'); + console.log(res); + } + }); initTable(); }); } @@ -25,13 +49,13 @@ function queryTable(type) { let flag = checkValue(pName); if (flag) { $('#pName').val(''); - return layer.msg('物机名称查询包含特殊字符,请重新输入', { icon: 2 }); + return layer.msg('物机名称查询包含特殊字符,请重新输入', {icon: 2}); } let name = $('#name').val(); let flag2 = checkValue(name); if (flag2) { $('#name').val(''); - return layer.msg('规格查询包含特殊字符,请重新输入', { icon: 2 }); + return layer.msg('规格查询包含特殊字符,请重新输入', {icon: 2}); } reloadTable(1); } else if (type === 2) { @@ -45,16 +69,16 @@ function queryTable(type) { // 重载表格 function reloadTable(pageNum) { table.reload("currentTableId", { - page: { - curr: pageNum ? pageNum : 1, + page: { + curr: pageNum ? pageNum : 1, + }, + where: { + encryptedData: JSON.stringify({ + 'pName': $('#pName').val(), + 'name': $('#name').val(), + }), + }, }, - where: { - encryptedData: JSON.stringify({ - 'pName': $('#pName').val(), - 'name': $('#name').val(), - }), - }, - }, ); } @@ -80,7 +104,7 @@ function initTable() { limitName: 'pageSize' }, parseData: function (res) { // res 即为原始返回的数据 - if(res.code === 401){ + if (res.code === 401) { closeWindowOpen(); } if (jjDetailArr && res.list) { @@ -103,7 +127,7 @@ function initTable() { }, cols: [ [ - { type: 'checkbox', width: '5%' }, + {type: 'checkbox', width: '5%'}, { width: '6%', title: "序号", @@ -118,7 +142,7 @@ function initTable() { title: "物机类型", unresize: true, align: "center", - sort:true, + sort: true, }, { field: "pName", @@ -126,7 +150,7 @@ function initTable() { title: "物机名称", unresize: true, align: "center", - sort:true, + sort: true, }, { field: "name", @@ -134,7 +158,7 @@ function initTable() { title: "规格", unresize: true, align: "center", - sort:true, + sort: true, }, { field: "unit", @@ -142,7 +166,7 @@ function initTable() { width: '10%', unresize: true, align: "center", - sort:true, + sort: true, }, { field: "needNum", @@ -212,14 +236,14 @@ function initTable() { const regex = /^(0|[1-9]\d{0,6})$/; if (!regex.test(value)) { obj.reedit(); - return layer.msg('格式不正确,最大输入6位数,且为正整数!', { icon: 7 }) + return layer.msg('格式不正确,最大输入6位数,且为正整数!', {icon: 7}) } } } else if (field === 'remarks') { // 备注 if (value) { if (value.length > 255) { obj.reedit(); - return layer.msg('备注最多输入255位!', { icon: 7 }) + return layer.msg('备注最多输入255位!', {icon: 7}) } } } @@ -298,7 +322,7 @@ function removeByValue(arr, val) { function saveData2(params) { let dataArr = []; if (huancun.length === 0) { - return layer.msg('未添加数据', { icon: 7 }); + return layer.msg('未添加数据', {icon: 7}); } else { $.each(huancunObj, function (index, item) { dataArr.push(item); @@ -313,10 +337,11 @@ function saveData2(params) { } } } - let layerIndex = layer.confirm('
数据即将被添加,请仔细检查数据是否有错误!
', { title: '操作提示' }, function () { + let layerIndex = layer.confirm('
数据即将被添加,请仔细检查数据是否有错误!
', {title: '操作提示'}, function () { layer.close(layerIndex); closePage(1, JSON.stringify(dataArr)); }); + // 替换对象 function updateOrAddObject2(id, newObject) { const index = dataArr.findIndex(obj => obj.id === id); @@ -336,4 +361,8 @@ function closePage(type, params) { window.parent.addFitDatas(params); } parent.layer.close(index); // 再执行关闭 -} \ No newline at end of file +} + +function toolsDownload() { + window.location.href = '../../../template/机具类型导入模板.xlsx'; +} diff --git a/js/demandPlan/plan_check_list.js b/js/demandPlan/plan_check_list.js index 3c29f18..a9e248b 100644 --- a/js/demandPlan/plan_check_list.js +++ b/js/demandPlan/plan_check_list.js @@ -46,6 +46,7 @@ function reloadTable(pageNum) { encryptedData: JSON.stringify({ 'keyWord': $('#keyWord').val(), 'auditStatus': $('#auditStatus').val(), + 'mode': $('#mode').val(), }), }, }, @@ -66,6 +67,7 @@ function initTable() { encryptedData: JSON.stringify({ 'keyWord': $('#keyWord').val(), 'auditStatus': $('#auditStatus').val(), + 'mode': $('#mode').val(), }), }, request: { diff --git a/page/demandPlan/child/apply_plan_edit_form.html b/page/demandPlan/child/apply_plan_edit_form.html index c16e136..55db864 100644 --- a/page/demandPlan/child/apply_plan_edit_form.html +++ b/page/demandPlan/child/apply_plan_edit_form.html @@ -12,121 +12,126 @@ -
-
-
-
-
- -
- +
+ +
+ -
-
-
- -
-
- -
- -
+
-
-
- -
- -
-
-
- -
- +
+ +
+
+
+
-
- -
+
+
+
+ +
+ +
+
+ + + + + + + +
+
+ +
-
+ class="layui-textarea" maxLength="250" lay-affix="clear">
- - -
- -

机具明细

-
- -
- 无数据 -

您还没选择需用机具类型

-

请先添加机具类型后再执申请操作

- -
- +
+
+ + + +
+
diff --git a/page/demandPlan/child/apply_plan_form.html b/page/demandPlan/child/apply_plan_form.html index 383a50f..03c7396 100644 --- a/page/demandPlan/child/apply_plan_form.html +++ b/page/demandPlan/child/apply_plan_form.html @@ -12,120 +12,125 @@ -
-
-
-
-
- -
- +
+ +
+ -
-
-
- -
-
- -
- -
+
-
-
- -
- +
+ +
+
+
+
- - - - - -
-
- -
+
+
+
+ +
+ +
+
+ + + + + + +
+
+ +
-
+ class="layui-textarea" maxLength="250" lay-affix="clear">
- - -
- -

机具明细

-
- -
- 无数据 -

您还没选择需用机具类型

-

请先添加机具类型后再执申请操作

- -
- +
+
+ + + +
+
diff --git a/page/demandPlan/child/choose_tool_type_list.html b/page/demandPlan/child/choose_tool_type_list.html index 04c6bb3..2378de8 100644 --- a/page/demandPlan/child/choose_tool_type_list.html +++ b/page/demandPlan/child/choose_tool_type_list.html @@ -34,47 +34,56 @@ -
-
-
- 搜索信息 -
-
-
-
-
- -
-
-
-
- -
-
-
- - -
-
-

已选:0

+
+
+
+ 搜索信息 +
+ +
+
+
+
- -
-
-
-
-
-
- - +
+
+ +
+
+
+ + +
+
+

已选:0

+
+
+ + +
+
+
+
+
+
+
+
+ +
+
diff --git a/page/demandPlan/plan_check_list.html b/page/demandPlan/plan_check_list.html index 6b9bac4..5a9059f 100644 --- a/page/demandPlan/plan_check_list.html +++ b/page/demandPlan/plan_check_list.html @@ -49,6 +49,8 @@
+ +
diff --git a/template/机具类型导入模板.xlsx b/template/机具类型导入模板.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..c270b023b3a4e8534c43a4f5361dd4c6ce7b5bd7 GIT binary patch literal 9453 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 literal 0 HcmV?d00001