diff --git a/api/init.json b/api/init.json
index 6017d27..b735a35 100644
--- a/api/init.json
+++ b/api/init.json
@@ -143,7 +143,13 @@
"href": "page/car_application_audit/payment_list.html",
"icon": "fa fa-asterisk",
"target": "_self"
- }
+ },
+ {
+ "title": "付款单审核",
+ "href": "page/car_application_audit/car_audit_list.html",
+ "icon": "fa fa-asterisk",
+ "target": "_self"
+ }
]
}
]
diff --git a/css/car_settlement/payment_form.css b/css/car_settlement/payment_form.css
index 8e7e594..ae1ea70 100644
--- a/css/car_settlement/payment_form.css
+++ b/css/car_settlement/payment_form.css
@@ -466,4 +466,44 @@ blockquote {
#dispatch-car-table td a:hover {
color: #66b1ff;
text-decoration: underline;
-}
\ No newline at end of file
+}
+
+
+
+/* ===================== 计划表格专属优化样式 ===================== */
+/* 表格整体布局与基础样式 */
+#plan-detail-table {
+ table-layout: fixed; /* 固定列宽布局,避免内容撑开列宽 */
+ width: 100%;
+ border-collapse: collapse; /* 合并边框,避免双线条 */
+ border-spacing: 0;
+ font-size: 12px;
+ color: #333;
+ background-color: #fff;
+ box-sizing: border-box;
+}
+
+/* 表头样式:统一行高 + 禁止折行 + 背景色 */
+#plan-detail-table th {
+ padding: 0 8px;
+ height: 40px;
+ line-height: 40px; /* 垂直居中,统一行高 */
+ text-align: center;
+ white-space: nowrap; /* 禁止文字折行 */
+ overflow: hidden;
+ text-overflow: ellipsis; /* 超长表头省略显示 */
+ background-color: #F2F2F2;
+ border: 1px solid #DDDDDD;
+ vertical-align: middle;
+}
+
+/* 内容单元格样式:统一内边距 + 边框 + 垂直居中 */
+#plan-detail-table td {
+ padding: 6px 8px;
+ text-align: center;
+ vertical-align: middle; /* 关键:输入框/文字垂直居中 */
+ border: 1px solid #DDDDDD;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
diff --git a/js/car_application_audit/car_audit_detail_list.js b/js/car_application_audit/car_audit_detail_list.js
index 6aea297..5709819 100644
--- a/js/car_application_audit/car_audit_detail_list.js
+++ b/js/car_application_audit/car_audit_detail_list.js
@@ -45,8 +45,7 @@ function reloadTable(pageNum) {
encryptedData: JSON.stringify({
'keyWord': $('#keyWord').val(),
'status': $('#status').val(),
- 'contractId': objParam.contractId,
- 'supId': objParam.supId,
+ 'id': objParam.id,
}),
},
},
@@ -62,13 +61,12 @@ function initTable() {
authorization: sessionStorage.getItem("gz-token"),
},
height: "full-170",
- url: dataUrl + "backstage/carBalance/getSltDetailsList",
+ url: dataUrl + "backstage/carBalance/getBalanceDataList",
where: {
encryptedData: JSON.stringify({
'keyWord': $('#keyWord').val(),
'status': $('#status').val(),
- 'contractId': objParam.contractId,
- 'supId': objParam.supId,
+ 'id': objParam.id,
}),
},
request: {
@@ -200,7 +198,7 @@ function exportExcel() {
let params = {
'keyWord': $('#keyWord').val(),
'status': $('#status').val(),
- 'supId': objParam.supId
+ 'id': objParam.id
}
let url = dataUrl + "backstage/carBalance/export2";
exportExcelUtil(url, '付款单录入详情', JSON.stringify(params));
@@ -208,7 +206,7 @@ function exportExcel() {
// 详情
function paymentDetail(obj) {
- openIframeByParamObj2("paymentDetail2", "详情", "./car_audit_detail.html", "92%", "95%", obj);
+ openIframeByParamObj2("paymentDetail2", "详情", "./child/settlement_detail.html", "92%", "95%", obj);
}
diff --git a/js/car_application_audit/car_audit_list.js b/js/car_application_audit/car_audit_list.js
index a1ff94f..c20968a 100644
--- a/js/car_application_audit/car_audit_list.js
+++ b/js/car_application_audit/car_audit_list.js
@@ -179,7 +179,7 @@ function initTable() {
}
if(!(content.indexOf('驳回') > -1)){
- html += "驳回
|
"
+ html += "修改|
"
}
html += "详情";
@@ -245,7 +245,7 @@ function planAuditDetail(obj) {
// 需求计划申请审核
function checkDetail(obj) {
obj.checkType = 2;
- openIframeByParamObj("check_detail", "审核", "./child/car_audit_detail.html", "92%", "95%", obj,1);
+ openIframeByParamObj("car_check_detail", "审核", "./child/car_audit_detail.html", "92%", "95%", obj,1);
}
//提交
@@ -280,3 +280,7 @@ function checkSubmit(obj) {
});
})
}
+
+function checkUpdate(obj){
+ openIframeByParamObj("car_audit_update", "修改", "./child/car_audit_update.html", "92%", "95%", obj,2);
+}
diff --git a/js/car_application_audit/car_audit_update.js b/js/car_application_audit/car_audit_update.js
new file mode 100644
index 0000000..5cb316f
--- /dev/null
+++ b/js/car_application_audit/car_audit_update.js
@@ -0,0 +1,764 @@
+let idParam, objParam, fileList = new Array(), imgListUp = new Array();
+let form, laydate, layer, upload, table, util;
+let pageNum = 1, tableIns; // 定义分页
+let jjDataArr = []; // 清单数据
+let delIdArr = []; // 存储要删除的文件ID(关键:新增初始化)
+let planId = ''; // 计划ID
+let allDataList = [];
+
+function setParams(obj) {
+ objParam = JSON.parse(obj);
+ // 初始化删除文件ID数组(避免残留)
+ delIdArr = [];
+ 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: '#fkTime'
+ });
+ form.verify();
+ form.on('submit(formData)', function (data) {
+ submitApply(data);
+ });
+ form.render();
+ let uploadObj = upload.render({
+ elem: '#test2',
+ multiple: true,
+ dataType: "json",
+ exts: 'jpg|png|jpeg|doc|docx|pdf|xlsx|xls',
+ acceptMime: 'image/jpg,image/png,image/jpeg,application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
+ number: 5, //最大上传数量
+ size: 1024 * 10, //最大文件大小,单位k
+ auto: false, //是否自动上传 ,默认为true
+ bindAction: '#hideUpload', //绑定的按钮
+ choose: function (obj) {
+ let length = $('.file-iteme').length;
+ if (length >= 5) {
+ return layer.msg('最多上传5个附件证明', {icon: 7});
+ }
+ uploadObj.config.elem.next()[0].value = '';
+ let num = 0;
+ obj.preview(function (index, file, result) {
+ num++;
+ if (num <= (5 - length)) {
+ $('#uploader-list').append(
+ '' +
+ '
' +
+ handleFileType(index, file, result) +
+ '
'
+ );
+ let map = new Map();//将选择的图片索引和图片写成对象存入集合
+ map.index = index;
+ map.file = file;
+ fileList.push(map);
+ }
+ });
+ }
+ });
+
+ getBalanceDataDetails();
+ });
+}
+
+// 获取数据详情
+function getBalanceDataDetails() {
+ let encryptedData = {id: objParam.id};
+ let url = dataUrl + 'backstage/carBalance/getBalanceDataDetails?encryptedData=' + encodeURIComponent(JSON.stringify(encryptedData));
+ ajaxRequest(url, "GET", null, true, function () {
+ }, function (result) {
+ if (result.code === 200) {
+
+ //基本信息回显
+ let dataObj = result.data;
+ $('#supName').val(dataObj.supName);
+ $('#fkTime').val(util.toDateString(dataObj.fkTime, 'yyyy-MM-dd'));
+ $('#money').val(dataObj.money);
+ $('#remark').val(dataObj.remark);
+ $('#planListNum').val(dataObj.planList.length)
+
+ // ========== 保留:附件回显+加入 ==========
+ let cent = '';
+ // 清空原有fileList和delIdArr(避免重复)
+ fileList = [];
+ delIdArr = []; // 重置删除文件ID数组
+ if (dataObj.fileList.length > 0) {
+ for (let i = 0; i < dataObj.fileList.length; i++) {
+ let l = dataObj.fileList[i];
+ let path = fileUrl + l.fileUrl + '?token=' + sessionStorage.getItem("gz-token");
+ let file = { name: l.fileName, id: l.id, type: l.type };
+ cent += '' +
+ '
' +
+ handleFileType(i, file, path, l.type) +
+ '
';
+ // 回显附件加入fileList(标记为已存在的文件)
+ fileList.push({
+ index: i,
+ file: file,
+ isExist: true, // 标记为回显的旧文件
+ fileId: l.id // 存储文件ID,用于删除
+ });
+ }
+ }
+ console.log("aa==",fileList)
+ $('#uploader-list').append(cent);
+
+ // 计划明细回显
+ planDetail(dataObj.planList)
+ // 用车明细回显
+ carDetail(dataObj.detailsList)
+
+ // ========== 保留:初始化allDataList和jjDataArr ==========
+ allDataList = dataObj.detailsList || [];
+ jjDataArr = dataObj.planList || [];
+ }
+ }, function (xhr, status, error) {
+ errorFn(xhr, status, error)
+ }, null);
+}
+
+function planDetail(list) {
+ $('#plan-detail-table tr:not(:first)').remove();
+ if (list.length > 0) {
+ let html = '';
+ $.each(list, function (index, item) {
+ html += '' +
+ '| ' + (index + 1) + ' | ' +
+ '' + item.proName + ' | ' +
+ '' + item.code + ' | ' +
+ '' + item.supName + ' | ' +
+ '' + item.carNum + ' | ' +
+ '' + item.money + ' | ' +
+ '' + item.ygMoney + ' | ' +
+ '' +
+ '' +
+ ' | ' +
+ '
';
+ });
+ $('#plan-detail-table').append(html);
+ }
+}
+
+// ========== 保留:delPlanDetail删除关联用车明细+同步数据 ==========
+function delPlanDetail(index) {
+ let planList = $('#plan-detail-table tr:not(:first)');
+ if (planList.length <= 1) {
+ return layer.msg('计划明细至少保留1条数据,无法删除!', {icon: 7});
+ }
+ let currentTr = planList.eq(index);
+ let delCode = currentTr.find('td:eq(2)').text().trim();
+ if (!delCode) {
+ return layer.msg('未获取到需求计划编号,无法删除!', {icon: 2});
+ }
+
+ layer.confirm('确定删除该计划明细及对应的用车明细数据吗?', {icon: 3, title: '提示'}, function (layIndex) {
+ currentTr.remove();
+ $('#plan-detail-table tr:not(:first)').each(function(i) {
+ $(this).find('td:eq(0)').text(i + 1);
+ });
+ //删除用车明细中code匹配的数据
+ deleteCarDetailByCode(delCode);
+ // 同步更新jjDataArr和allDataList
+ jjDataArr = jjDataArr.filter(item => item.code !== delCode);
+ allDataList = allDataList.filter(item => item.planCode !== delCode);
+ layer.close(layIndex);
+ })
+}
+
+// ========== 保留:deleteCarDetailByCode精准删除用车明细 ==========
+function deleteCarDetailByCode(delCode) {
+ // 1. 删除普通车辆表格中对应code的数据
+ $('#dispatch-car-table tr:not(:first)').each(function() {
+ let $tr = $(this);
+ // 优先获取a标签文本,避免索引错误
+ let carCode = $tr.find('td:last a').text().trim() || '';
+ if (!carCode) {
+ carCode = $tr.find('td:last').text().replace(/<.*?>/g, '').trim();
+ }
+ if (carCode === delCode) {
+ $tr.remove();
+ }
+ });
+
+ // 2. 删除吊车表格中对应code的数据
+ $('#dispatch-car-table2 tr:not(:first)').each(function() {
+ let $tr = $(this);
+ // 优先获取a标签文本,避免索引错误
+ let dcCode = $tr.find('td:last a').text().trim() || '';
+ if (!dcCode) {
+ dcCode = $tr.find('td:last').text().replace(/<.*?>/g, '').trim();
+ }
+ if (dcCode === delCode) {
+ $tr.remove();
+ }
+ });
+
+ // 3. 处理删除后无数据的情况
+ if ($('#dispatch-car-table tr:not(:first)').length === 0) {
+ $('#dispatch-car-table').css('display', 'none');
+ }
+ if ($('#dispatch-car-table2 tr:not(:first)').length === 0) {
+ $('#dispatch-car-table2').css('display', 'none');
+ }
+}
+
+function carDetail(list) {
+ // 派车明细
+ let carList = list.filter(item => {
+ return item.type === '车辆';
+ })
+ let dcList = list.filter(item => {
+ return item.type === '吊车';
+ })
+ setDispatchCarTable(carList);
+ setDispatchCarTable2(dcList);
+
+ // 派车明细-车辆
+ function setDispatchCarTable(list) {
+ $('#dispatch-car-table tr:not(:first)').remove();
+ if (list.length > 0) {
+ let html = '';
+ if (list && list.length > 0) {
+ $.each(list, function (index, item) {
+ let imgNum = 0;
+ imgNum += item.carImage.filter(item => {
+ return item.type !== '6'
+ }).length;
+ imgNum += item.driverUserImage.filter(item => {
+ return item.type !== '6'
+ }).length;
+ imgNum += item.fileList.length;
+
+ const actualGls = formatToTwoDecimals(item.exeGls) || 0.00; // 实际公里数初始=预估公里数
+
+ html += "" +
+ "| " + item.type + " | " +
+ "" + item.name + " | " +
+ "" + item.model + " | " +
+ "" + item.carNum + " | " +
+ "" + (item.ton + '吨') + " | " +
+ "" + item.goodsName + " | " +
+ "" + item.startAddress + " | " +
+ "" + item.endAddress + " | " +
+
+ " | " +
+
+ "" + item.glsPrice + " | " +
+ " ¥ " + (item.glsMoney ? item.glsMoney : 0) + " | " +
+ "" + imgNum + "查看附件>> | " +
+ "" + item.planCode + " | " +
+ "
";
+ })
+ } else {
+ html = '| 暂无数据 |
';
+ }
+ $('#dispatch-car-table').removeAttr('style').append(html);
+ } else {
+ $('#dispatch-car-table').css('display', 'none');
+ }
+ }
+
+ // 派车明细-吊车
+ function setDispatchCarTable2(list) {
+ $('#dispatch-car-table2 tr:not(:first)').remove();
+ if (list.length > 0) {
+ let html = '';
+ if (list && list.length > 0) {
+ $.each(list, function (index, item) {
+ let imgNum = 0;
+ imgNum += item.driverUserImage.filter(item => {
+ return item.type === '2' || item.type === '3'
+ }).length;
+ imgNum += item.operaImage.filter(item => {
+ return item.type === '2' || item.type === '3' || item.type === '6'
+ }).length;
+ imgNum += item.fileList.length;
+
+ const actualPlanDay = item.exeDay || 0;
+ const actualDcMoney = formatToTwoDecimals(item.money);
+
+ html += '' +
+ '| ' + item.type + ' | ' +
+ '' + item.name + ' | ' +
+ '' + item.model + ' | ' +
+ '' + item.carNum + ' | ' +
+ '' + item.useAddress + ' | ' +
+ // '' + item.planDay + ' | ' +
+ " | " +
+ '' + setZlPrice(item) + ' | ' +
+ ' ¥ ' + item.dcMoney + ' | ' +
+
+ " | " +
+
+ "" + imgNum + "查看附件>> | " +
+ "" + item.planCode + " | " +
+ '
';
+ })
+ } else {
+ html = '| 暂无数据 |
';
+ }
+ $('#dispatch-car-table2').removeAttr('style').append(html);
+
+ // 设置租赁单价
+ function setZlPrice(item) {
+ let html = '';
+ if (item.dcUnit === '元/月/台') {
+ html += '' + item.monthPrice + '(' + item.dcUnit + ')' + '
';
+ } else {
+ html += '' + item.dayPrice + '(' + item.dcUnit + ')' + '
';
+ }
+ if (item.isOutSet === 1) {
+ html += '' + (item.jcMoney ? item.jcMoney : 0) + '(进出场费)
'
+ }
+ return html;
+ }
+ } else {
+ $('#dispatch-car-table2').css('display', 'none');
+ }
+ }
+}
+
+// 设置文件类型
+function handleFileType(index, file, result) {
+ let html = '', img = '';
+ if (file.ext) {
+ file.ext = file.ext.toLowerCase();
+ }
+ if (file.name) {
+ file.name = file.name.toLowerCase();
+ }
+ if (file.ext === 'doc' || file.ext === 'docx') {
+ img = '../../../images/docx.png';
+ } else if (file.ext === 'xls' || file.ext === 'xlsx') {
+ img = '../../../images/xlsx.png';
+ } else if (file.ext === 'pdf') {
+ img = '../../../images/pdf.png';
+ } else {
+ return '
';
+ }
+ html += '' +
+ '

' +
+ '
' + file.name + '
' +
+ '
';
+ return html;
+}
+
+// ========== 保留+优化:附件删除逻辑(兼容回显/新增,收集delIdArr) ==========
+$(document).on("click", ".file-iteme .handle", function (event) {
+ event.stopPropagation();
+ let $this = $(this);
+ let $parent = $this.parent();
+ let fileId = $parent.attr('data-file-id'); // 回显文件的ID
+ let index = $this.next().attr('data-index'); // 新增文件的索引
+
+ // 1. 收集要删除的文件ID(用于后端删除)
+ if (fileId) {
+ delIdArr.push(fileId); // 存储要删除的旧文件ID
+ }
+
+ // 2. 过滤fileList数组
+ let newFileList = [];
+ $.each(fileList, function (inx, ele) {
+ // 排除要删除的文件(新增文件按index,回显文件按fileId)
+ if ((index && index != ele.index) || (fileId && ele.fileId != fileId)) {
+ newFileList.push(ele);
+ }
+ });
+
+ // 3. 更新fileList
+ fileList = newFileList;
+ // 4. 删除DOM
+ $parent.remove();
+});
+
+function saveData2() {
+ $('#formSubmit').trigger('click')
+}
+
+// ========== 保留+核心修改:submitApply(delFileId逗号分隔) ==========
+function submitApply(data) {
+ // 校验附件证明是否上传(保留:兼容回显附件)
+ console.log('fileList:', fileList)
+ let totalFileCount = fileList.length;
+ if (totalFileCount === 0) {
+ return layer.msg('请上传付款单', {icon: 7});
+ }
+ if (jjDataArr.length === 0) {
+ return layer.msg('请选择需求计划', {icon: 7});
+ }
+ if (allDataList.length === 0) {
+ return layer.msg('用车明细数据为空,无法提交', {icon: 7});
+ }
+
+ data.field.supId = objParam.supId;
+ data.field.id = objParam.id; // 修改操作必须传主键ID
+ // ========== 核心修改:delFileId用逗号分隔 ==========
+ data.field.delFileId = delIdArr.join(','); // 数组转逗号分隔字符串
+ console.log('delFileId(逗号分隔):', data.field.delFileId); // 调试用
+
+ let planList = [], detailsList = [];
+ $.each(jjDataArr, function (index, item) {
+ let obj = {
+ id: item.id || '',
+ planId: item.planId || item.id,
+ supId: objParam.supId,
+ money: item.money,
+ type: item.type || '1',
+ proId: item.proId || '',
+ carNum: item.carNum || item.needNum || 0
+ };
+ planList.push(obj);
+ })
+
+ const actualValues = getEditedActualValues();
+
+ $.each(allDataList, function (index, item) {
+ const carActual = actualValues.carActualList.find(v => v.outDetailId == item.id); // 普通车辆
+ const craneActual = actualValues.craneActualList.find(v => v.outDetailId == item.id); // 吊车
+ let obj = {
+ id: item.id || '',
+ planId: item.planId || '',
+ type: item.type || '车辆',
+ supId: item.supId || objParam.supId,
+ proId: item.proId || '',
+ money: item.cost || item.money || 0,
+ outId: item.outId || '',
+ exeGls: carActual?.exeGls || item.exeGls || '',
+ inMoney: carActual?.inMoney || craneActual?.inMoney || '',
+ exeDay: craneActual?.exeDay || item.exeDay || '',
+ outDetailId: item.id || '',
+ modelId: item.modelId || '',
+ ton: item.ton || 0
+ };
+ detailsList.push(obj);
+ })
+ data.field.planList = planList;
+ data.field.detailsList = detailsList;
+
+ let formData = new FormData();
+ //遍历最终文件集合(仅上传新增文件)
+ for (let i = 0; i < fileList.length; i++) {
+ let fileItem = fileList[i];
+ if (!fileItem.isExist && fileItem.file) {
+ formData.append("file[]", fileItem.file)
+ }
+ }
+ formData.append('params', JSON.stringify(data.field));
+ console.log("提交参数:", data.field); // 调试用
+
+ let loadingMsg = layer.msg('正在提交保存,请稍等...', {icon: 16, shade: 0.01, time: '0'});
+ let url = dataUrl + 'backstage/carBalance/updateBalanceData';
+ ajaxRequestByUploadFile(url, formData, 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 chooseFitType() {
+ let params = {
+ contractId: objParam.contractId,
+ supId: objParam.supId,
+ planId: planId,
+ jjDataArr: JSON.stringify(jjDataArr)
+ };
+ openIframeByParamObj("choose_plan_code_list", '选择需要付款的需求计划编号', "./choose_plan_code_list.html", '92%', '95%', params);
+}
+
+// 需求计划单据赋值
+function addFitDatas(data, planIdArr) {
+ jjDataArr = JSON.parse(data);
+ console.error(jjDataArr);
+
+ let money = 0;
+ $.each(jjDataArr, function (index, item) {
+ const dataNum = item.money ? item.money : 0;
+ const num = Number(dataNum);
+ const cents = Math.round(num * 1000);
+ money += cents;
+ })
+ $('#money').val(money / 1000);
+ if (!planId) {
+ $('#chooseValue').val('选择数据(已选择 ' + planIdArr.length + ' 条)');
+ $('#no_data_title').css({'display': 'none'});
+ $('#search-info').removeAttr('style');
+ $('#table-box').removeAttr('style');
+ planId = planIdArr.join('@');
+ getPayCarDetails();
+ } else {
+ $('#chooseValue').val('选择数据(已选择 ' + planIdArr.length + ' 条)');
+ planId = planIdArr.join('@');
+ getPayCarDetails();
+ }
+}
+
+// 派车录入详情明细-派车资料等明细
+function getPayCarDetails(id) {
+ let encryptedData = {planId: planId};
+ let url = dataUrl + 'backstage/carBalance/getPayCarDetails?encryptedData=' + encodeURIComponent(JSON.stringify(encryptedData));
+ ajaxRequest(url, "GET", null, true, function () {
+ }, function (result) {
+ if (result.code === 200) {
+ dataObj = result.data;
+ setTableData(result.data);
+ }
+ }, function (xhr, status, error) {
+ errorFn(xhr, status, error)
+ }, null);
+
+ function setTableData(list) {
+ allDataList.splice(0, allDataList.length);
+ allDataList = list;
+ // 派车明细
+ let carList = list.filter(item => {
+ return item.type === '车辆';
+ })
+ let dcList = list.filter(item => {
+ return item.type === '吊车';
+ })
+ setDispatchCarTable(carList);
+ setDispatchCarTable2(dcList);
+ }
+
+ // 派车明细-车辆
+ function setDispatchCarTable(list) {
+ $('#dispatch-car-table tr:not(:first)').remove();
+ if (list.length > 0) {
+ let html = '';
+ if (list && list.length > 0) {
+ $.each(list, function (index, item) {
+ let imgNum = 0;
+ imgNum += item.carImage.filter(item => {
+ return item.type !== '6'
+ }).length;
+ imgNum += item.driverUserImage.filter(item => {
+ return item.type !== '6'
+ }).length;
+ imgNum += item.fileList.length;
+
+ const actualGls = formatToTwoDecimals(item.gls) || 0.00; // 实际公里数初始=预估公里数
+ // const actualMoney = formatToTwoDecimals(0); // 实际金额初始=预估金额
+
+ html += "" +
+ "| " + item.type + " | " +
+ "" + item.name + " | " +
+ "" + item.model + " | " +
+ "" + item.carNum + " | " +
+ "" + (item.ton + '吨') + " | " +
+ "" + item.goodsName + " | " +
+ "" + item.startAddress + " | " +
+ "" + item.endAddress + " | " +
+ "" + item.gls + " | " +
+
+ " | " +
+
+ "" + item.glsPrice + " | " +
+ " ¥ " + (item.glsMoney ? item.glsMoney : 0) + " | " +
+
+ // " | " +
+
+ "" + imgNum + "查看附件>> | " +
+ "" + item.planCode + " | " +
+ "
";
+ })
+ } else {
+ html = '| 暂无数据 |
';
+ }
+ $('#dispatch-car-table').removeAttr('style').append(html);
+ } else {
+ $('#dispatch-car-table').css('display', 'none');
+ }
+ }
+
+ // 派车明细-吊车
+ function setDispatchCarTable2(list) {
+ $('#dispatch-car-table2 tr:not(:first)').remove();
+ if (list.length > 0) {
+ let html = '';
+ if (list && list.length > 0) {
+ $.each(list, function (index, item) {
+ let imgNum = 0;
+ imgNum += item.driverUserImage.filter(item => {
+ return item.type === '2' || item.type === '3'
+ }).length;
+ imgNum += item.operaImage.filter(item => {
+ return item.type === '2' || item.type === '3' || item.type === '6'
+ }).length;
+ imgNum += item.fileList.length;
+
+ const actualPlanDay = item.planDay || 0;
+ const actualDcMoney = formatToTwoDecimals(0);
+
+ html += '' +
+ '| ' + item.type + ' | ' +
+ '' + item.name + ' | ' +
+ '' + item.model + ' | ' +
+ '' + item.carNum + ' | ' +
+ '' + item.useAddress + ' | ' +
+ '' + item.planDay + ' | ' +
+ " | " +
+ '' + setZlPrice(item) + ' | ' +
+ ' ¥ ' + item.dcMoney + ' | ' +
+
+ " | " +
+
+ "" + imgNum + "查看附件>> | " +
+ "" + item.planCode + " | " +
+ '
';
+ })
+ } else {
+ html = '| 暂无数据 |
';
+ }
+ $('#dispatch-car-table2').removeAttr('style').append(html);
+
+ // 设置租赁单价
+ function setZlPrice(item) {
+ let html = '';
+ if (item.dcUnit === '元/月/台') {
+ html += '' + item.monthPrice + '(' + item.dcUnit + ')' + '
';
+ } else {
+ html += '' + item.dayPrice + '(' + item.dcUnit + ')' + '
';
+ }
+ if (item.isOutSet === 1) {
+ html += '' + (item.jcMoney ? item.jcMoney : 0) + '(进出场费)
'
+ }
+ return html;
+ }
+ } else {
+ $('#dispatch-car-table2').css('display', 'none');
+ }
+ }
+}
+
+// 需求计划详情
+function viewPlanDetail(obj) {
+ obj.id = obj.planId;
+ obj.code = obj.planCode;
+ let content = '../car_demand_plan/child/apply_plan_detail.html';
+ if (obj.code.indexOf('spec-') > -1) {
+ content = '../car_demand_plan/child/emerg_internal_car_detail.html';
+ }
+ openIframeByParamObj2("viewPlanDetail", "车辆需求计划", content, "92%", "95%", obj);
+}
+
+// 查看附件
+function viewFileDetail(obj, type) {
+ let title = '行驶证/挂靠协议驾驶证/身份证/导航图'
+ if (type === 1) {
+ title = '行驶证/挂靠协议驾驶证/身份证/导航图'
+ } else if (type === 2) {
+ title = '操作证/身份证/导航图'
+ }
+ obj.type = type;
+ openIframeByParamObj("viewFileDetail", title, '../../car_demand_plan/child/view_file_detail.html', "92%", "95%", obj);
+}
+
+// ========== 保留:收集编辑后的实际值 ==========
+function getEditedActualValues() {
+ // 存储最终收集的实际值
+ let actualValues = {
+ carActualList: [], // 普通车辆实际值(实际公里数、实际金额)
+ craneActualList: [] // 吊车实际值(实际金额)
+ };
+
+ // 1. 收集普通车辆的实际公里数、实际金额
+ $('#dispatch-car-table tr:not(:first)').each(function () {
+ const $tr = $(this);
+ const itemId = $tr.find('.actual-gls').data('id'); // 获取数据ID
+ if (!itemId) return; // 无ID则跳过
+
+ // 修复列索引:实际公里数输入框在td:eq(9),预估公里数在td:eq(8)
+ const actualGls = $tr.find('.actual-gls').val().trim() || $tr.find('td:eq(8)').text().trim() || '0.00';
+ const actualMoney = $tr.find('.actual-money').val()?.trim() || '0.00';
+
+ actualValues.carActualList.push({
+ outDetailId: itemId,
+ exeGls: formatToTwoDecimals(actualGls),
+ inMoney: formatToTwoDecimals(actualMoney)
+ });
+ });
+
+ // 2. 收集吊车的实际金额
+ $('#dispatch-car-table2 tr:not(:first)').each(function () {
+ const $tr = $(this);
+ const itemId = $tr.find('.actual-dc-money').data('id'); // 获取数据ID
+ if (!itemId) return; // 无ID则跳过
+
+ const actualPlanDay = $tr.find('.actual-dc-planDay').val().trim() || $tr.find('td:eq(5)').text().trim() || '0';
+ const actualDcMoney = $tr.find('.actual-dc-money').val().trim() || '0.00';
+
+ actualValues.craneActualList.push({
+ outDetailId: itemId,
+ inMoney: formatToTwoDecimals(actualDcMoney),
+ exeDay: actualPlanDay
+ });
+ });
+ return actualValues;
+}
+
+// 全局工具函数:格式化数字为两位小数(处理空值、非数字)
+function formatToTwoDecimals(num) {
+ if (num === null || num === undefined || num === '' || isNaN(Number(num))) return '0.00';
+ return Number(num).toFixed(2);
+}
+
+// 输入框正则校验(仅正数 + 最多两位小数 + 不超过1亿元)
+$(document).on('input', '.actual-gls, .actual-money, .actual-dc-money', function () {
+ this.value = this.value
+ .replace(/[^0-9.]/g, '') // 过滤非法字符
+ .replace(/\.{2,}/g, '.') // 单个小数点
+ .replace(/^0+(?=\d)/, ''); // 去除开头多余0
+
+ if (this.value.indexOf('.') !== -1) {
+ const parts = this.value.split('.');
+ this.value = parts[0] + '.' + parts[1].substring(0, 2);
+ }
+
+ const numValue = Number(this.value || 0);
+ const maxAmount = 100000000;
+ if (numValue > maxAmount) {
+ this.value = maxAmount.toFixed(2);
+ }
+});
+
+// 失焦格式化
+$(document).on('blur', '.actual-gls, .actual-money, .actual-dc-money', function () {
+ this.value = formatToTwoDecimals(this.value);
+});
+
+// 关闭页面
+function closePage(type) {
+ let index = parent.layer.getFrameIndex(window.name); // 先得到当前 iframe层的索引
+ if (type == 1) {
+ window.parent.reloadData();
+ }
+ parent.layer.close(index); // 再执行关闭
+}
diff --git a/js/car_application_audit/settlement_detail.js b/js/car_application_audit/settlement_detail.js
new file mode 100644
index 0000000..da96cf0
--- /dev/null
+++ b/js/car_application_audit/settlement_detail.js
@@ -0,0 +1,369 @@
+let objParam, dataObj;
+let form, table, upload, tableIns, layer, element;
+let pageNum = 1;
+
+function setParams(params) {
+ objParam = JSON.parse(params);
+ $('#titleName').html(objParam.supName + '供应商付款记录');
+ $('#code').html(objParam.code + setPayStatus());
+ layui.use(["form", "table", 'upload', 'layer', 'element'], function () {
+ form = layui.form;
+ table = layui.table;
+ upload = layui.upload;
+ layer = layui.layer;
+ });
+
+ function setPayStatus() {
+ if (objParam.status === '未付') {
+ return "●待付款";
+ } else {
+ return "●已付款";
+ }
+ }
+
+ getSltDetailsInfo();
+ getPayCarDetails();
+}
+
+//admission fee
+
+// 供应商付款记录-详情
+function getSltDetailsInfo() {
+ let encryptedData = {planId: objParam.planId};
+ let url = dataUrl + 'backstage/carBalance/getSltDetailsInfo?encryptedData=' + encodeURIComponent(JSON.stringify(encryptedData));
+ ajaxRequest(url, "GET", null, true, function () {
+ }, function (result) {
+ if (result.code === 200) {
+ dataObj = result.data;
+ setTableData(result.data);
+ }
+ }, function (xhr, status, error) {
+ errorFn(xhr, status, error)
+ }, null);
+
+ function setTableData(obj) {
+ console.log(obj)
+ $('#supName').html(objParam.supName);
+ $('#planCode').html("" + obj.code + "");
+ $('#proName').html(obj.proName);
+ $('#carNum').html(obj.carNum);
+ $('#money').html('¥' + obj.money);
+ $('#dispatchDay').html(obj.dispatchDay);
+ $('#remark').html(obj.remark);
+ // 附件文档
+ setFileTable(obj.fileList);
+ }
+
+ // 附件文档赋值
+ function setFileTable(fileList) {
+ $('#file-table tr:not(:first)').remove();
+ let html = '';
+ if (fileList && fileList.length > 0) {
+ $.each(fileList, function (index, item) {
+ html += '' +
+ '| ' + handleFileType(item.fileName) + item.fileName + ' | ' +
+ '' + (item.type) + ' | ' +
+ ' ' + item.createName + ' | ' +
+ '' + item.createTime + ' | ' +
+ '预览' +
+ '下载' +
+ ' | ' +
+ '
';
+ })
+ } else {
+ html = '| 暂无数据 |
';
+ }
+ $('#file-table tbody').after(html);
+ }
+
+ // 处理文件类型
+ function handleFileType(value) {
+ value = value.toLowerCase();
+ let src = '';
+ if (value.indexOf('docx') > -1 || value.indexOf('doc') > -1) {
+ src = '../../../images/docx.png'
+ } else if (value.indexOf('xls') > -1 || value.indexOf('xlsx') > -1) {
+ src = '../../../images/xlsx.png'
+ } else if (value.indexOf('pdf') > -1) {
+ src = '../../../images/pdf.png'
+ } else if (value.indexOf('png') > -1 || value.indexOf('jpg') > -1 || value.indexOf('jpeg') > -1) {
+ src = '../../../images/img_icon.png'
+ }
+ return '
'
+ }
+
+
+}
+
+// 用车明细
+function getPayCarDetails() {
+ let encryptedData = {planId: objParam.planId};
+ let url = dataUrl + 'backstage/carBalance/getPayCarDetails?encryptedData=' + encodeURIComponent(JSON.stringify(encryptedData));
+ ajaxRequest(url, "GET", null, true, function () {
+ }, function (result) {
+ if (result.code === 200) {
+ setData(result.data);
+ }
+ }, function (xhr, status, error) {
+ errorFn(xhr, status, error)
+ }, null);
+
+ function setData(list) {
+ // 用车明细
+ let carList = list.filter(item => {
+ return item.type === '车辆';
+ })
+ let dcList = list.filter(item => {
+ return item.type === '吊车';
+ })
+ setDispatchCarTable(carList);
+ setDispatchCarTable2(dcList);
+ }
+
+ // 派车明细-车辆
+ function setDispatchCarTable(list) {
+ $('#dispatch-car-table tr:not(:first)').remove();
+ if (list.length > 0) {
+ let html = '';
+ if (list && list.length > 0) {
+ $.each(list, function (index, item) {
+ let imgNum = 0;
+ imgNum += item.carImage.filter(item => {
+ return item.type !== '6'
+ }).length;
+ imgNum += item.driverUserImage.filter(item => {
+ return item.type !== '6'
+ }).length;
+ imgNum += item.fileList.length;
+ html += "" +
+ "| " + item.type + " | " +
+ "" + item.name + " | " +
+ "" + item.model + " | " +
+ "" + item.carNum + " | " +
+ "" + (item.ton + '吨') + " | " +
+ "" + item.goodsName + " | " +
+ "" + item.startAddress + " | " +
+ "" + item.endAddress + " | " +
+ "" + item.gls + " | " +
+ "" + parseFloat(item.glsPrice).toFixed(2) + " | " +
+ " ¥ " + (item.glsMoney ? parseFloat(item.glsMoney).toFixed(2) : 0) + " | " +
+ "" + imgNum + "查看附件>> | " +
+ "" + item.planCode + " | " +
+ "
";
+ })
+ } else {
+ html = '| 暂无数据 |
';
+ }
+ $('#dispatch-car-table').removeAttr('style').append(html);
+ } else {
+ $('#dispatch-car-table').css('display', 'none');
+ }
+ }
+
+ // 派车明细-吊车
+ function setDispatchCarTable2(list) {
+ $('#dispatch-car-table2 tr:not(:first)').remove();
+ if (list.length > 0) {
+ let html = '';
+ if (list && list.length > 0) {
+ $.each(list, function (index, item) {
+ let imgNum = 0;
+ imgNum += item.driverUserImage.filter(item => {
+ return item.type === '2' || item.type === '3'
+ }).length;
+ imgNum += item.operaImage.filter(item => {
+ return item.type === '2' || item.type === '3' || item.type === '6'
+ }).length;
+ imgNum += item.fileList.length;
+ html += '' +
+ '| ' + item.type + ' | ' +
+ '' + item.name + ' | ' +
+ '' + item.model + ' | ' +
+ '' + item.carNum + ' | ' +
+ '' + item.useAddress + ' | ' +
+ '' + item.planDay + ' | ' +
+ '' + item.days + ' | ' +
+ '' + item.fee + '元 | ' +
+ '' + setZlPrice(item) + ' | ' +
+ ' ¥ ' + parseFloat(item.cost).toFixed(2) + ' | ' +
+ "" + imgNum + "查看附件>> | " +
+ "" + item.planCode + " | " +
+ "录入 | " +
+ '
';
+ })
+ } else {
+ html = '| 暂无数据 |
';
+ }
+ $('#dispatch-car-table2').removeAttr('style').append(html);
+
+ // 设置租赁单价
+ function setZlPrice(item) {
+ let html = '';
+ if (item.dcUnit === '元/月/台') {
+ html += '' + parseFloat(item.monthPrice).toFixed(2) + '(' + item.dcUnit + ')' + '
';
+ } else {
+ html += '' + parseFloat(item.dayPrice).toFixed(2) + '(' + item.dcUnit + ')' + '
';
+ }
+ if (item.isOutSet === 1) {
+ html += '' + (item.jcMoney ? parseFloat(item.jcMoney).toFixed(2) : 0) + '(进出场费)
'
+ }
+ return html;
+ }
+ } else {
+ $('#dispatch-car-table2').css('display', 'none');
+ }
+ }
+}
+
+
+// 预览文件
+function viewFile(obj) {
+ let fileName = obj.fileName.toLowerCase();
+ if (fileName.indexOf('png') > -1 || fileName.indexOf('jpg') > -1 || fileName.indexOf('jpeg') > -1) {
+ layer.photos({
+ shade: 0.5,
+ photos: {
+ "title": "图片预览",
+ "start": 0,
+ "data": [
+ {
+ "alt": "layer",
+ "pid": 1,
+ "src": fileUrl + obj.fileUrl + '?token=' + sessionStorage.getItem("gz-token"),
+ }
+ ]
+ }
+ });
+ } else {
+ // 调用公司的预览文件的服务
+ commonViewFile(obj.fileUrl);
+ }
+}
+
+// 下载文件
+function downLoadFile(obj) {
+ let url = dataUrl + "sys/file/download?fileId=" + obj.id;
+ downLoadFileUtil(url, obj.fileName, null);
+}
+
+// 查看附件
+function viewFileDetail(obj, type) {
+ let title = '行驶证/挂靠协议驾驶证/身份证/导航图'
+ if (type === 1) {
+ title = '行驶证/挂靠协议驾驶证/身份证/导航图'
+ } else if (type === 2) {
+ title = '操作证/身份证/导航图'
+ }
+ obj.type = type;
+ openIframeByParamObj("viewFileDetail", title, '../../car_demand_plan/child/view_file_detail.html', "92%", "95%", obj);
+}
+
+// 需求计划详情
+function viewPlanDetail(obj) {
+ obj.id = obj.planId;
+ obj.code = obj.planCode || obj.code;
+ let content = '../car_demand_plan/child/apply_plan_detail.html';
+ if (obj.code.indexOf('spec-') > -1) {
+ content = '../car_demand_plan/child/emerg_internal_car_detail.html';
+ }
+ openIframeByParamObj2("viewPlanDetail", "车辆需求计划", content, "92%", "95%", obj);
+}
+
+function enter(obj) {
+ var html = `
+
+ `;
+ layer.open({
+ type: 1,
+ title: '录入信息',
+ content: html,
+ area: ['500px', '300px'],
+ shade: 0.3,
+ btn: [], // 不显示默认按钮
+ success: function (layero) {
+ // 渲染表单
+ form.render();
+
+ // 表单提交事件
+ form.on('submit(submitForm)', function (data) {
+ obj.days = data.field.days;
+ obj.fee = data.field.fee;
+ let params = {
+ encryptedData: JSON.stringify(obj)
+ }
+ let url = dataUrl + 'backstage/carBalance/updatePayCar';
+ ajaxRequest(url, "POST", params, true, function () {
+ }, function (result) {
+ if (result.code === 200) {
+ getPayCarDetails()
+ }
+ }, function (xhr, status, error) {
+ errorFn(xhr, status, error)
+ }, null);
+
+
+ // 显示成功提示
+ layer.msg('录入成功!', {icon: 1});
+
+ // 关闭弹窗
+ layer.closeAll('page');
+
+ return false; // 阻止表单跳转
+ });
+
+ // 重置按钮事件
+ layero.find('#resetForm').on('click', function () {
+ form.val('feeForm', {
+ 'days': '',
+ 'fee': ''
+ });
+ return false; // 阻止默认重置行为
+ });
+ }
+ });
+}
+
+// 打印
+function print() {
+ $("#main-box").print({
+ globalStyles: true,
+ mediaPrint: false,
+ noPrintSelector: ".no-print",
+ iframe: true,
+ append: null,
+ prepend: null,
+ manuallyCopyFormValues: true,
+ deferred: $.Deferred()
+ });
+}
+
+// 关闭页面
+function closePage(type) {
+ let index = parent.layer.getFrameIndex(window.name); // 先得到当前 iframe层的索引
+ parent.layer.close(index); // 再执行关闭
+}
\ No newline at end of file
diff --git a/page/car_application_audit/car_audit_list.html b/page/car_application_audit/car_audit_list.html
index 019e11f..e6d6668 100644
--- a/page/car_application_audit/car_audit_list.html
+++ b/page/car_application_audit/car_audit_list.html
@@ -38,8 +38,8 @@
- - 全部
- - 待提交
+ - 全部
+ - 待提交
- 待审核
- 已通过
- 已驳回
diff --git a/page/car_application_audit/child/car_audit_update.html b/page/car_application_audit/child/car_audit_update.html
new file mode 100644
index 0000000..e8de76c
--- /dev/null
+++ b/page/car_application_audit/child/car_audit_update.html
@@ -0,0 +1,160 @@
+
+
+
+
+
+
+ 供应商付款-审核修改
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 付款单附件*
+
+
+

+
+
+
提示:最多上传5个附件
+
支持格式:jpg、png、jpeg
+
doc、docx、pdf、xlsx、xls
+
+
+
+
+
+
+
+
+
+
+ | 序号 |
+ 工程名称 |
+ 需求计划编号 |
+ 供应商名称 |
+ 用车数量 |
+ 金额 |
+ 预估金额 |
+ 操作 |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | 类型 |
+ 车型 |
+ 型号 |
+ 车牌 |
+ 吨位 |
+ 货物名称 |
+ 起运地 |
+ 目的地 |
+
+ 公里数 |
+ 单价 (元/吨*公里) |
+ 金额 |
+ 行驶证/挂靠协议 驾驶证/身份证/导航图 |
+ 需求计划编号 |
+
+
+
+
+ | 类型 |
+ 车型 |
+ 型号 |
+ 车牌 |
+ 使用地 |
+
+ 使用天数 |
+ 租赁单价 |
+ 金额 |
+ 出入场金额 |
+ 操作证/ 身份证/导航图 |
+ 需求计划编号 |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/page/car_application_audit/child/settlement_detail.html b/page/car_application_audit/child/settlement_detail.html
index d224908..056f92f 100644
--- a/page/car_application_audit/child/settlement_detail.html
+++ b/page/car_application_audit/child/settlement_detail.html
@@ -151,6 +151,6 @@
-
+
-