Merge remote-tracking branch 'origin/master'

This commit is contained in:
haozq 2025-02-26 16:55:53 +08:00
commit 3640434634
3 changed files with 137 additions and 119 deletions

View File

@ -238,11 +238,12 @@ function initTable() {
layerOptions.yes = function (index, layero) { layerOptions.yes = function (index, layero) {
//提交子页面时执行 //提交子页面时执行
// 获取弹出层中的form表单元素 // 获取弹出层中的form表单元素
const formSubmit = layer.getChildFrame("form", index); // const formSubmit = layer.getChildFrame("form", index);
// 查找class样式为submitBtn的按钮 // 查找class样式为submitBtn的按钮
const submited = formSubmit.find("button.subBtn"); // const submited = formSubmit.find("button.subBtn");
// 触发点击事件,会对表单进行验证,验证成功则提交表单,失败则返回错误信息 // 触发点击事件,会对表单进行验证,验证成功则提交表单,失败则返回错误信息
submited.click(); // submited.click();
initTable();
}; };
layer.open(layerOptions); layer.open(layerOptions);
} }

View File

@ -64,16 +64,24 @@ function initTable() {
, {field: 'evaluateMonth', align: 'center', title: '评价年月'} , {field: 'evaluateMonth', align: 'center', title: '评价年月'}
, {field: 'projectNum', align: 'center', title: '项目数量'} , {field: 'projectNum', align: 'center', title: '项目数量'}
, {field: 'outsourcerNum', align: 'center', title: '外包商数量'} , {field: 'outsourcerNum', align: 'center', title: '外包商数量'}
, {field: 'isApprove', align: 'center', title: '评价状态', templet: d =>{ , {
field: 'isApprove', align: 'center', title: '评价状态', templet: d => {
if (d.rejectReason) { if (d.rejectReason) {
return '评价驳回' return '评价驳回'
} else { } else {
return Number(d.isApprove) === 0 ? '待评价' : (Number(d.isApprove) === 1 ? '已评价' : '') return Number(d.isApprove) === 0 ? '待评价' : (Number(d.isApprove) === 1 ? '已评价' : '')
} }
// Number(d.isApprove) === 0 ? '待评价' : (Number(d.isApprove) === 1 ? '已评价' : '') // Number(d.isApprove) === 0 ? '待评价' : (Number(d.isApprove) === 1 ? '已评价' : '')
}} }
, {field: 'status', align: 'center', title: '审核状态', templet: d => }
Number(d.status) === 0 ? '待审核' : (Number(d.status) === 1 ? '已审核' : '审核中') , {
field: 'status', align: 'center', title: '审核状态', templet: d => {
if (d.rejectReason) {
return '审核驳回'
} else {
return Number(d.status) === 0 ? '待审核' : (Number(d.status) === 1 ? '已审核' : '审核中')
}
}
} }
, {field: 'rejectReason', align: 'center', title: '驳回原因'} , {field: 'rejectReason', align: 'center', title: '驳回原因'}
, { , {

View File

@ -20,6 +20,10 @@
display: flex; display: flex;
align-items: center; align-items: center;
} }
.layui-layer-iframe .layui-layer-btn0 {
display: none;
}
</style> </style>
</head> </head>
@ -189,12 +193,14 @@
loading: true, loading: true,
done: function (res) { done: function (res) {
var tableView = this.elem.next(); var tableView = this.elem.next();
layui.each(res.data, function (i, item) { layui.each(res.data, function (i, item1) {
if (item.isApprove == '1') { // Condition to make the row non-editable if (item1.isApprove == '1') { // Condition to make the row non-editable
}
var cols = tableView.find('tr[data-index=' + i + ']').find('td'); var cols = tableView.find('tr[data-index=' + i + ']').find('td');
cols.each(function (index, item) { cols.each(function (index, item) {
//对field为subNameproName 的列不进行设置 //对field为subNameproName 的列不进行设置
if (index > 2) { if (index > 2 && index != cols.length - 1) {
$(this).data('edit', 'false'); $(this).data('edit', 'false');
$(this).removeAttr('data-edit'); $(this).removeAttr('data-edit');
$(this).addClass('layui-disabled'); $(this).addClass('layui-disabled');
@ -203,12 +209,22 @@
//将td元素的style属性设置为pointer-events: none禁止点击 //将td元素的style属性设置为pointer-events: none禁止点击
$(this).css('pointer-events', 'none'); $(this).css('pointer-events', 'none');
delete item.dataset.edit delete item.dataset.edit
let fileDom = '';
// 只要有文件列表并且文件列表数量大于0添加文件信息
// if (item1.fileList && item1.fileList.length > 0) {
// // 根据文件列表的索引判断将哪个文件添加到相应的列
// fileDom = `<span>${item1.fileList[index - 3]}</span>`;
// }
// console.log('fileDomfileDomfileDomfileDom', fileDom)
// // 将fileDom添加到当前单元格
// $(this).append(fileDom);
} }
}); });
}
}); });
var columsName = ['subName'];//需要合并的列名称 ['business_tenant_name','land','contract_begin','contract_end','history_arrears','period']; var columsName = ['subName'];//需要合并的列名称 ['business_tenant_name','land','contract_begin','contract_end','history_arrears','period'];
var columsIndex = [1];//需要合并的列索引值 [2,3,5,6,14,15]; var columsIndex = [1];//需要合并的列索引值 [2,3,5,6,14,15];
@ -225,31 +241,31 @@
text: '评价', text: '评价',
type: 'button' type: 'button'
}); });
let fileList = []
let uploadDom = []
// 将自定义元素插入到最后一个单元格 // 将自定义元素插入到最后一个单元格
div.append(customElement); div.append(customElement);
customElement.on('click', function (event) { customElement.on('click', function (event) {
event.stopPropagation(); // 阻止事件冒泡 event.stopPropagation()
event.preventDefault() event.preventDefault()
console.log('按钮被点击了');
let rowIndex = $(this).closest('tr').data('index') let rowIndex = $(this).closest('tr').data('index')
const tableList = JSON.parse(msg) const tableList = JSON.parse(msg)
console.log('rowIndex当前行的索引', rowIndex)
// 在这里添加按钮点击后的逻辑
// 组装dom // 组装dom
let formHtml = `<div class="dialog-title">${tableList[rowIndex].proName}</div>` let formHtml = `<div class="dialog-title">${tableList[rowIndex].proName}</div>`
let innerHtml = '' let innerHtml = ''
dialogLabelList.forEach((e, index) => { dialogLabelList.forEach((e, index) => {
fileList.push('')
uploadDom.push('#uploadBtn' + index)
innerHtml += `<div style="padding:6px 0;display: flex; align-items: center;"> innerHtml += `<div style="padding:6px 0;display: flex; align-items: center;">
<div style="margin-right: 10px;width: 200px";>${e.title}</div> <div style="margin-right: 10px;width: 200px";>${e.title}</div>
<input type="text" data-id="${dialogLabelInfo[index].field}" id="numberInput" name="numberInput" min="0.01" step="0.01" placeholder="请输入大于0的数字" style=";width:180px; padding:1px 5px;" value="${tableList[rowIndex][dialogLabelInfo[index].field]}"> <input type="text" data-id="${dialogLabelInfo[index].field}" id="numberInput" name="numberInput" min="0.01" step="0.01" placeholder="请输入大于0的数字" style=";width:180px; padding:1px 5px;" value="${tableList[rowIndex][dialogLabelInfo[index].field]}">
<button type="button" data-index="${index}" class="uploadBtn" id="uploadBtn${index}" style="color: #4CAF50; border: none; margin-left: 10px; cursor: pointer;"> <button type="button" data-index="${index}" id="uploadBtn${index}" style="color: #4CAF50; border: none; margin-left: 10px; cursor: pointer;">
+ 上传评分依据 + 上传评分依据
</button> </button>
<div class="upload-success" id="upload-success_${index}" style="display:none"><i data-index="${index}" class="layui-icon" style="font-size: 18px; color: red; cursor: pointer;">&#xe640;</i> </div>
</div>` </div>`
}) })
@ -273,41 +289,31 @@
var upload = layui.upload; var upload = layui.upload;
// 执行上传功能 // 执行上传功能
var uploadInst = upload.render({ var uploadInst = upload.render({
elem: '.uploadBtn', // 上传按钮 elem: uploadDom.join(','),
url: ctxPath + '/upload/file', // 文件上传接口(这里要根据实际接口替换) url: ctxPath + '/upload/file',
accept: 'file', // 选择文件类型 accept: 'file',
multiple: false, // 支持多文件上传 multiple: false,
auto: true, // 禁用自动上传,点击确定按钮后上传
bindAction: '#uploadConfirm', // 确定按钮触发上传
choose: function (obj) {
// 当选择文件时会触发这个方法
var files = obj.pushFile(); // 获取文件列表
console.log(files);
obj.pushFile([])
},
done: function (res) { done: function (res) {
// 上传完毕回调 // 上传完毕回调
console.log('文件上传成功'); console.log('文件上传成功');
console.log(res); console.log(res);
var dataIndex = $(this.elem).data('index'); var dataIndex = $(this.elem).data('index');
console.log('当前按钮的 data-index:', dataIndex); fileList[dataIndex] = res.obj
// 隐藏当前上传按钮 // 隐藏当前上传按钮
// $(this.elem).hide();
$(`#uploadBtn${dataIndex}`).hide() $(`#uploadBtn${dataIndex}`).hide()
$(`#upload-success_${dataIndex}`).show()
// 插入新的 DOM 元素,例如:显示上传成功的消息或其他操作 $(`#upload-success_${dataIndex}`).prepend(`<span class="prepend-content">${res.message}</span>`)
var newDom = $(`<div class="upload-success">${res.message}<i data-index="${dataIndex}" class="layui-icon" style="font-size: 18px; color: red; cursor: pointer;">&#xe640;</i> </div>`); // 插入新的 DOM 元素,
$(this.elem).parent().append(newDom); // var newDom = $(`<div class="upload-success">${res.message}<i data-index="${dataIndex}" class="layui-icon" style="font-size: 18px; color: red; cursor: pointer;">&#xe640;</i> </div>`);
// $(this.elem).parent().append(newDom);
}, },
error: function () { error: function () {
// 请求异常回调 // 请求异常回调
console.log('文件上传失败'); console.log('文件上传失败');
} }
}); })
}); })
// $('.uploadBtn').on('click', function (event) { // $('.uploadBtn').on('click', function (event) {
// event.stopPropagation(); // 阻止事件冒泡 // event.stopPropagation(); // 阻止事件冒泡
// event.preventDefault(); // 阻止默认行为 // event.preventDefault(); // 阻止默认行为
@ -315,7 +321,7 @@
// }); // });
}, },
yes: function (index, layero) { yes: function (index) {
// 点击"确定"按钮时的逻辑 // 点击"确定"按钮时的逻辑
let formData = {}; let formData = {};
@ -334,12 +340,14 @@
}) })
const currentRows = tableList[rowIndex] const currentRows = tableList[rowIndex]
Object.assign(currentRows, formData) Object.assign(currentRows, formData)
currentRows.fileList = fileList
let dataForm = { let dataForm = {
templateId: getUrlParam('templateId'), templateId: getUrlParam('templateId'),
evaluateId: getUrlParam('id'), evaluateId: getUrlParam('id'),
id: getUrlParam('detailsId'), id: getUrlParam('detailsId'),
jsonData: JSON.stringify([currentRows]), jsonData: JSON.stringify([currentRows]),
titleFiled: fields.join(',') titleFiled: fields.join(','),
} }
console.log('提交时的formDat参数', dataForm) console.log('提交时的formDat参数', dataForm)
@ -363,12 +371,9 @@
// 这里可以执行你需要的操作 // 这里可以执行你需要的操作
}, },
btn2: function (index, layero) { btn2: function (index) {
// 点击"取消"按钮时的逻辑 layer.close(index) // 关闭弹框
console.log('取消按钮被点击了'); return false
// 这里可以执行你需要的操作,通常是关闭弹框
layer.close(index); // 关闭弹框
return false; // 防止关闭弹框后执行默认的按钮行为
} }
}) })
}); });
@ -377,9 +382,13 @@
var dataIndex = $(this).data('index'); var dataIndex = $(this).data('index');
console.log('删除图标被点击data-index:', dataIndex); console.log('删除图标被点击data-index:', dataIndex);
fileList[dataIndex] = ''
// 执行删除操作 // 执行删除操作
$(this).parent().remove() // $(this).parent().remove()
$(`#upload-success_${dataIndex}`).hide(function () {
// 当隐藏完之后,移除插入的内容
$(`#upload-success_${dataIndex} .prepend-content`).remove();
})
$(`#uploadBtn${dataIndex}`).show() $(`#uploadBtn${dataIndex}`).show()
}); });
tableLoading && layer.close(tableLoading); tableLoading && layer.close(tableLoading);
@ -397,54 +406,54 @@
} }
}); });
// 单元格普通编辑事件 // 单元格普通编辑事件
table.on('edit(baseTable)', function (obj) { // table.on('edit(baseTable)', function (obj) {
var value = obj.value // 得到修改后的值 // var value = obj.value // 得到修改后的值
var data = obj.data // 得到所在行所有键值 // var data = obj.data // 得到所在行所有键值
var field = obj.field; // 得到字段 // var field = obj.field; // 得到字段
//判断修改的是当前行的第几个单元格 // //判断修改的是当前行的第几个单元格
let index = headerRows[2].findIndex(item => item.field === field); // let index = headerRows[2].findIndex(item => item.field === field);
//获取其对应的二级标题 用于计算 // //获取其对应的二级标题 用于计算
let currentItem = headerRows[1][index]; // let currentItem = headerRows[1][index];
let standardScore = Number(currentItem.standardScore); // let standardScore = Number(currentItem.standardScore);
//是否包含前缀0 // //是否包含前缀0
if (value.indexOf('0') === 0 && value.length > 1) { // if (value.indexOf('0') === 0 && value.length > 1) {
layer.msg('输入值不能以0开头'); // layer.msg('输入值不能以0开头');
//清空当前单元格 // //清空当前单元格
obj.update({ // obj.update({
[field]: '' // [field]: ''
}); // });
return; // return;
} // }
//判断是否数字 // //判断是否数字
if (value < 0) { // if (value < 0) {
layer.msg('输入值不能小于0'); // layer.msg('输入值不能小于0');
//清空当前单元格 // //清空当前单元格
obj.update({ // obj.update({
[field]: '' // [field]: ''
}); // });
return; // return;
} // }
if (!isPositiveInteger(value)) { // if (!isPositiveInteger(value)) {
layer.msg('请输入正整数'); // layer.msg('请输入正整数');
//清空当前单元格 // //清空当前单元格
obj.update({ // obj.update({
[field]: '' // [field]: ''
}); // });
return; // return;
} // }
if (value > standardScore) { // if (value > standardScore) {
layer.msg('输入值不能大于标准值'); // layer.msg('输入值不能大于标准值');
//清空当前单元格 // //清空当前单元格
obj.update({ // obj.update({
[field]: '' // [field]: ''
}); // });
return; // return;
} // }
// // 更新数据中对应的字段 // // // 更新数据中对应的字段
let update = {}; // let update = {};
update[field] = value; // update[field] = value;
obj.update(update); // obj.update(update);
}); // });
} }