From 69659ea640f4ca35476715ca22919998b3aafa1f Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Fri, 24 Jan 2025 14:33:51 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9C=80=E6=B1=82=E8=AE=A1=E5=88=92=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/demandPlan/apply_plan_list.js | 9 + js/demandPlan/child/apply_plan_edit_form.js | 465 ++++++++++++++++++ .../child/apply_plan_edit_form.html | 137 ++++++ 3 files changed, 611 insertions(+) create mode 100644 js/demandPlan/child/apply_plan_edit_form.js create mode 100644 page/demandPlan/child/apply_plan_edit_form.html diff --git a/js/demandPlan/apply_plan_list.js b/js/demandPlan/apply_plan_list.js index 563dfb8..32809ec 100644 --- a/js/demandPlan/apply_plan_list.js +++ b/js/demandPlan/apply_plan_list.js @@ -173,8 +173,12 @@ function initTable() { align: "center", unresize: true, templet: function (d) { + let status = getCheckStatus(d.statusType, d.status); let html = ""; html += "详情"; + if (status.indexOf('驳回') > -1) { + html += "
|
修改"; + } return html; }, }, @@ -232,6 +236,11 @@ function applyPlan(obj) { openIframeByParamObj("apply_plan", "机具需求计划申请", "./child/apply_plan_form.html", "92%", "95%", obj); } +// 申请修改 +function editApplyPlan(obj) { + openIframeByParamObj("editApplyPlan", "机具需求计划申请修改", "./child/apply_plan_edit_form.html", "92%", "95%", obj); +} + // 详情 function applyPlanDetail(obj) { openIframeByParamObj("apply_plan_detail", "详情", "./child/apply_plan_detail.html", "92%", "95%", obj); diff --git a/js/demandPlan/child/apply_plan_edit_form.js b/js/demandPlan/child/apply_plan_edit_form.js new file mode 100644 index 0000000..2cef8c2 --- /dev/null +++ b/js/demandPlan/child/apply_plan_edit_form.js @@ -0,0 +1,465 @@ +let idParam, objParam; +let form, laydate, layer, upload, table, util; +let pageNum = 1, tableIns; // 定义分页 +let jjDataArr = []; // 配件数据 +let proList = []; // 工程下拉选 +let delIdArr = []; +let detailIdArr = []; +function setParams(obj) { + objParam = JSON.parse(obj); + layui.use(['form', 'layer', 'laydate', 'upload', 'table'], function () { + form = layui.form; + layer = layui.layer; + laydate = layui.laydate; + upload = layui.upload; + table = layui.table; + util = layui.util; + laydate.render({ + elem: '#needTime' + }); + form.verify(); + form.on('submit(formData)', function (data) { + submitApply(data); + }); + form.render(); + getProList(); + getPlanDetails(); + getPlanDetailsList(); + }); +} + +// 工程下拉选 +function getProList() { + let url = dataUrl + 'backstage/planApplication/getProList'; + ajaxRequest(url, "POST", null, false, function () { + }, function (result) { + if (result.code === 200) { + setSelectData(result.data); + } + }, function (xhr, status, error) { + errorFn(xhr, status, error) + }, null); +} + +// 工程下拉选赋值 +function setSelectData(proList) { + let html = ''; + $.each(proList, function (index, item) { + html += '' + }) + $('#projectId').empty().append(html); + layui.form.render(); +} + +// 计划申请详情 +function getPlanDetails() { + let params = { + encryptedData: JSON.stringify({ + 'id': objParam.id + }) + }; + let url = dataUrl + 'backstage/planApplication/getPlanDetails'; + ajaxRequest(url, "POST", params, true, function () { + }, function (result) { + console.error(result); + if (result.code === 200) { + setFormData(result.data); + } else { + } + }, function (xhr, status, error) { + errorFn(xhr, status, error) + }, null); + + function setFormData(obj) { + form.val('formInfo', obj); + layui.form.render(); + } +} + +// 安全工器具明细 +function getPlanDetailsList() { + let params = { + encryptedData: JSON.stringify({ + 'id': objParam.id + }) + }; + let url = dataUrl + 'backstage/planApplication/getPlanDetailsList2'; + ajaxRequest(url, "POST", params, true, function () { + }, function (result) { + console.error(result); + if (result.code === 200) { + setTable(result.data); + } else { + } + }, function (xhr, status, error) { + errorFn(xhr, status, error) + }, null); + + function setTable(obj) { + $.each(obj, function (index, item) { + let obj = Object.assign({}, item); + obj.ppName = item.type; + obj.pName = item.typeName; + obj.name = item.module; + obj.dataId = item.id; + obj.id = item.moduleId; + jjDataArr.push(obj); + detailIdArr.push(item.id); + }) + $('#no_data_title').css({ 'display': 'none' }); + $('#search-info').removeAttr('style'); + $('#table-box').removeAttr('style'); + setTableData(jjDataArr); + } +} + +function saveData2() { + $('#formSubmit').trigger('click') +} + +function setNumColor(value, type) { // 1.需要量 2.已发货量 3.差缺量 + let color = '#66b1ff'; + if (type === 1) { + color = '#66b1ff'; + } else if (type === 2) { + color = '#19be6b'; + } else if (type === 3) { + color = '#ff9900'; + } + return '' + value + ""; +} + + +// 提交 +function submitApply(data) { + let list = getBaseTableData(); + // 校验配件入库数量 + if (list.length === 0) { + 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 }); + } + if (parseInt(list[i].times) === 0) { + return layer.msg('机具明细,第' + (i + 1) + '行,未填写需用天数', { icon: 7 }); + } + } + data.field.id = objParam.id; + data.field.jsonData = JSON.stringify(list); + // 删除的工器具ID + let detailIdArr2 = []; + $.each(jjDataArr, function (index, item) { + detailIdArr2.push(item.dataId); + }) + console.error(detailIdArr); + console.error(detailIdArr2); + let delDetailArr = getMinus(detailIdArr2, detailIdArr); + console.error(delDetailArr); + + if (delDetailArr && delDetailArr.length > 0) { + data.field.delIds = delDetailArr; + } + let loadingMsg = layer.msg('正在提交保存,请稍等...', { icon: 16, shade: 0.01, time: '0' }); + let url = dataUrl + 'backstage/planApplication/updatePlan'; + let params = { + encryptedData: JSON.stringify(data.field) + }; + ajaxRequest(url, 'POST', params, true, function () { + $('.save').addClass("layui-btn-disabled").attr("disabled", true); + $('.cancel').addClass("layui-btn-disabled").attr("disabled", true); + }, function (result) { + layer.close(loadingMsg); + $('.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 }); + closePage(1); + } else { + layer.msg(result.msg, { icon: 2 }); + } + }, function (xhr, status, error) { + layer.close(loadingMsg); // 关闭提示层 + 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) + }, null); + + // 获取差集 + function getMinus(a, b) { + let minus = b.filter(item => !a.includes(item)); + return minus; + } +} + +// 机具明细数据 +function getBaseTableData() { + let tableData = []; + $('#baseTable tbody tr').each(function (index, item) { + let times = $(this).find('td').eq(7).find('input[name="times"]').val(); + let needNum = $(this).find('td').eq(6).find('input[name="needNum"]').val(); + let dataId = null; + if ($(this).attr('dataId') === 'undefined') { + dataId = null; + } else { + dataId = $(this).attr('dataId'); + } + tableData.push({ + moduleId: $(this).attr('id'), + id: dataId, + type: $(this).find('td').eq(2).html(), + typeName: $(this).find('td').eq(3).html(), + module: $(this).find('td').eq(4).html(), + unit: $(this).find('td').eq(5).html(), + needNum: needNum ? needNum : 0, + times: times ? times : 0, + remarks: $(this).find('td').eq(8).find('input[name="remarks"]').val(), + }) + }) + return tableData; +} + +// 选择机具类型 +function chooseFitType() { + let params = {}; + openIframeByParamObj("choose_fit_type", '选择需求计划机具类型(设备类请备注大、中、小)', "./choose_tool_type_list.html", '92%', '95%', params); +} +// 查询 +function search() { + let keyWord = $('#pName').val(); + let keyWord2 = $('#name').val(); + if (!keyWord && !keyWord2) { + setTableData(jjDataArr); + } else if (keyWord && !keyWord2) { + let dataList = jjDataArr.filter(item => { + return item.pName.indexOf(keyWord) > -1; + }) + setTableData(dataList); + } else if (!keyWord && keyWord2) { + let dataList = jjDataArr.filter(item => { + return item.name.indexOf(keyWord2) > -1; + }) + setTableData(dataList); + } else if (keyWord && keyWord2) { + let dataList = jjDataArr.filter(item => { + return item.pName.indexOf(keyWord) > -1 && item.name.indexOf(keyWord2) > -1; + }) + setTableData(dataList); + } +} + +// 重置 +function resetSearch() { + $('#pName').val(''); + $('#name').val(''); + setTableData(jjDataArr); +} + +// 子页面回调数据 +function addFitDatas(data) { + console.log('新增的数据:' + data); + if (jjDataArr.length > 0) { // 继续添加数据 + let newJjDataArr = JSON.parse(data); + $.each(newJjDataArr, function (index, item) { + updateOrAddObject(item.id, item); + }); + // setTableData(jjDataArr); + goOnAddData(); + } else { // 第一次添加数据 + jjDataArr = JSON.parse(data); + if (jjDataArr && jjDataArr.length > 0) { + $('#no_data_title').css({ 'display': 'none' }); + $('#search-info').removeAttr('style'); + $('#table-box').removeAttr('style'); + setTableData(jjDataArr); + } + } + + function updateOrAddObject(id, newObject) { + const index = jjDataArr.findIndex(obj => obj.id === id); + if (index !== -1) { + // 如果对象存在,则替换它 + let oldData = jjDataArr[index]; + newObject.dataId = oldData.dataId; + jjDataArr[index] = newObject; + } else { + // 如果对象不存在,则添加到数组 + jjDataArr.push(newObject); + } + } +} + +// 安全工器具表格赋值 +function setTableData(results) { + $('#allCheck').prop('checked', false) + delIdArr.splice(0, delIdArr.length); + var html = ""; + if (results && results.length > 0) { + for (var i = 0; i < results.length; i++) { + var l = results[i]; + html += ""; + html += ''; + html += "" + + (i + 1) + ""; + html += "" + l.ppName + ""; + html += "" + l.pName + ""; + html += "" + l.name + ""; + html += "" + l.unit + ""; + html += "" + setFormInput(l.needNum, 1) + ""; + html += "" + setFormInput(l.times == null ? 0 : l.times, 2) + ""; + html += "" + setFormInput(l.remarks, 3) + ""; + html += ""; + } + } else { + html += "没有相关数据"; + } + $("#baseTable tbody").empty().append(html); + layui.form.render(); +} + +function setFormInput(value, type) { + let html = '
'; + if (type === 1) { // 需用量 + html += ''; + } else if (type === 2) { // 需用天数 + html += ''; + } else if (type === 3) { // 备注 + html += ''; + } + html += '
'; + return html; + +} + +// 复选框全选 +function selectAll(selectStatus) {//传入参数(全选框的选中状态) + if (selectStatus) { + $("input[name='check']").each(function (i, n) { + n.checked = true; + }); + $.each(jjDataArr, function (index, item) { + delIdArr.push(item.id); + }) + } else { + $("input[name='check']").each(function (i, n) { + n.checked = false; + }); + delIdArr.splice(0, delIdArr.length); + } +} + +// 单个选中 +function sel(selectStatus, that, id) { + if (selectStatus) { + $(that).prop('checked', true); + delIdArr.push(id); + } else { + $(that).prop('checked', false); + for (let i = 0; i < delIdArr.length; i++) { + if (delIdArr[i] == id) { + delIdArr.splice(i, 1); + break; + } + } + } +} + +// 删除选中 +function delFitType() { + if (delIdArr.length == 0) { + layer.msg('请先选择需要删除的数据!', { icon: 7 }) + return; + } + 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++) { + let id = jjDataArr[j].id; + if (delIdArr[i] == id) { + jjDataArr.splice(j, 1); + break; + } + } + } + + if (jjDataArr.length === 0) { + $('#no_data_title').removeAttr('style'); + $('#search-info').css({ 'display': 'none' }); + $('#table-box').css({ 'display': 'none' }); + } else { + // setTableData(jjDataArr); + handleDelTableData(delIdArr); + } + delIdArr.splice(0, delIdArr.length); + }); +} + +// 删除表格数据 +function handleDelTableData(delIdArr) { + if (delIdArr.length > 0) { + $.each(delIdArr, function (index, item) { + $('#baseTable tbody tr').each(function () { + let id = $(this).attr('id'); + if (parseInt(id) === item) { + $(this).remove(); + return false; + } + }) + }) + } + $('#baseTable tbody tr').each(function (index, item) { + $(this).find('td').eq(1).html(index + 1); + }) +} + +// 继续添加数据 +function goOnAddData() { + if (jjDataArr.length > 0) { + $.each(jjDataArr, function (index, item) { + $('#baseTable tbody tr').each(function () { + let id = $(this).attr('id'); + if (parseInt(id) === parseInt(item.id)) { + let times = $(this).find('td').eq(7).find('input[name="times"]').val(), + needNum = $(this).find('td').eq(6).find('input[name="needNum"]').val(), + remarks = $(this).find('td').eq(8).find('input[name="remarks"]').val(); + if (!item.times || parseInt(item.times) === 0) { + item.times = times; + } + if (!item.needNum || parseInt(item.needNum) === 0) { + item.needNum = needNum; + } + if (!item.remarks) { + item.remarks = remarks; + } + } + }) + }); + setTableData(jjDataArr); + $('#baseTable tbody tr').each(function (index, item) { + $(this).find('td').eq(1).html(index + 1); + }) + } +} + + +// 校验数据 +function checkValue(that, type, name) { + let value = $(that).val(); + if (type === 1 || type === 2) { // 需用量 / 需用天数 + const regex = /^(0|[1-9]\d{0,6})$/; + if (!regex.test(value) && value) { + layer.msg('' + name + '输入有误,请重新输入!', { icon: 5 }) + $(that).val(0); + } + } +} + +// 关闭页面 +function closePage(type) { + let index = parent.layer.getFrameIndex(window.name); // 先得到当前 iframe层的索引 + if (type == 1) { + window.parent.reloadData(); + } + parent.layer.close(index); // 再执行关闭 +} \ No newline at end of file diff --git a/page/demandPlan/child/apply_plan_edit_form.html b/page/demandPlan/child/apply_plan_edit_form.html new file mode 100644 index 0000000..1097122 --- /dev/null +++ b/page/demandPlan/child/apply_plan_edit_form.html @@ -0,0 +1,137 @@ + + + + + + + 需求计划申请修改 + + + + + + + +
+
+
+
+
+ +
+ +
+
+
+ +
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ +
+ +
+
+ +
+
+ +

机具明细

+
+ +
+ 无数据 +

您还没选择需用机具类型

+

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

+ +
+ + +
+
+ + +
+
+ + + + + + + + \ No newline at end of file