Merge remote-tracking branch 'origin/main'

# Conflicts:
#	js/car_demand_plan/child/apply_plan_form.js
#	js/car_demand_plan/child/choose_type_list.js
This commit is contained in:
syruan 2025-04-24 14:21:54 +08:00
commit 37d082780e
9 changed files with 264 additions and 47 deletions

View File

@ -163,7 +163,6 @@
window.history.pushState({}, 0, url);
}
initPage(miniAdmin);
sessionStorage.setItem('us', JSON.stringify(result.data));
} else if (result.code === 401) {
closeWindowOpen();
}
@ -172,8 +171,8 @@
}, null);
} else {
console.log('走的自己登录');
// login(miniAdmin);
window.location = 'page/401.html';
login(miniAdmin);
// window.location = 'page/401.html';
}
/* var options = {
iniUrl: "api/init.json", // 初始化接口
@ -225,9 +224,10 @@
// 登录获取token
let login_url = dataUrl + 'login/userLogin'
const params = {
"username": 'sa',
// "password": '3NBzZK7qxhMhrmvi63FnuQ==',
"password": 'ebbd6ea34bbab2b0813afcf59c8c9556',
// "username": 'sa',
// "password": 'ebbd6ea34bbab2b0813afcf59c8c9556',
"username": 'bns',
"password": '1769fb2837e10e9d22c1c25add76355a',
}
ajaxRequest(login_url, "POST", params, true, function () {
}, function (result) {
@ -246,4 +246,4 @@
</script>
</body>
</html>
</html>

View File

@ -4,11 +4,12 @@ let form, layer, table;
let isPage = getUrlParam('isPage');
if (isPage) { // 首页跳转
$('#plan-detail-box>div').eq(0).remove();
$('#plan-detail-box').css({ 'justify-content': 'end', 'height': '50px' });
$('#plan-detail-box').css({'justify-content': 'end', 'height': '50px'});
$('body').css('margin', '0');
let obj = decodeURIComponent(getUrlParam('obj'))
setParams(obj);
}
function setParams(obj) {
objParam = JSON.parse(obj);
if (objParam.checkType === 2) {
@ -60,10 +61,48 @@ function setPlanBasicTableInfo(obj) {
$('#carStart').html(obj.carStart);
$('#carEnd').html(obj.carEnd);
setRoutePoint(obj.routePoint);
// 附件文档
setFileTable(obj.fileList);
}
function setRoutePoint(data) {
// 清空之前的表格
$('#routePoint').empty();
let html = '';
html += "<table class='classTable'>";
if (data != null && data !== "") {
// 分割数据并过滤掉空值
let result = data.split("routePoint;").filter(item => item.trim() !== "");
if (result && result.length > 0) {
// 动态生成表头
html += "<tr>";
for (let i = 0; i < Math.min(result.length, 4); i++) {
html += "<th>途经点</th>";
}
html += "</tr>";
// 动态生成表格内容,每行最多 4 列
let rowCount = Math.ceil(result.length / 4); // 计算需要多少行
for (let row = 0; row < rowCount; row++) {
html += "<tr>";
for (let col = 0; col < 4; col++) {
let index = row * 4 + col;
if (index < result.length) {
html += "<td>" + result[index] + "</td>";
} else {
html += "<td></td>"; // 如果没有数据,填充空白单元格
}
}
html += "</tr>";
}
}
}
html += "</table>";
// 将生成的 HTML 插入到页面中
$('#routePoint').append(html);
}
// 附件文档赋值
function setFileTable(fileList) {
$('#file-table tr:not(:first)').remove();
@ -140,13 +179,13 @@ function queryTable(type) {
let flag = checkValue(name);
if (flag) {
$('#name').val('');
return layer.msg('名称查询包含特殊字符,请重新输入', { icon: 2 });
return layer.msg('名称查询包含特殊字符,请重新输入', {icon: 2});
}
let model = $('#model').val();
let flag2 = checkValue(model);
if (flag2) {
$('#model').val('');
return layer.msg('规格查询包含特殊字符,请重新输入', { icon: 2 });
return layer.msg('规格查询包含特殊字符,请重新输入', {icon: 2});
}
reloadTable(1);
} else if (type === 2) {
@ -165,17 +204,17 @@ function reloadData() {
// 重载表格
function reloadTable(pageNum) {
table.reload("currentTableId", {
page: {
curr: pageNum ? pageNum : 1,
page: {
curr: pageNum ? pageNum : 1,
},
where: {
encryptedData: JSON.stringify({
'name': $('#name').val(),
'model': $('#model').val(),
'id': objParam.id
}),
},
},
where: {
encryptedData: JSON.stringify({
'name': $('#name').val(),
'model': $('#model').val(),
'id': objParam.id
}),
},
},
);
}
@ -270,7 +309,7 @@ function initTable() {
{
field: "backDate",
width: '10%',
title: "退还日期",
title: "预计使用时间",
unresize: true,
align: "center",
sort: true,

View File

@ -5,6 +5,10 @@ let jjDataArr = []; // 配件数据
let proList = []; // 工程下拉选
let delIdArr = [];
let detailIdArr = [];
let addNum = 0;
let addNums = 1;
let tjdDataArr = new Array(); // 厂家的安全工器具数据
function setParams(obj) {
objParam = JSON.parse(obj);
layui.use(['form', 'layer', 'laydate', 'upload', 'table'], function () {
@ -119,6 +123,16 @@ function getPlanDetails() {
$('#uploader-list').append(html);
setTable(obj.detailList);
//途径点
if (obj.routePoint != null && obj.routePoint !== "") {
let result = obj.routePoint.split("routePoint;").filter(item => item.trim() !== "");
$('#routePoint').val(result[0])
for (let i = 1; i < result.length; i++) {
addTjd();
$('#routePoint' + addNum).val(result[i]);
}
}
layui.form.render();
}
// 申请明细
@ -168,12 +182,15 @@ function submitApply(data) {
if (parseInt(list[i].needNum) === 0) {
return layer.msg('申请明细数据' + (i + 1) + '行,未填写需用量', { icon: 7 });
}
if (parseInt(list[i].needDay) === 0) {
return layer.msg('申请明细数据' + (i + 1) + '行,未填写需用天数', { icon: 7 });
}
}
let routePointStr = ""; //
$('input[name="routePoint"]').each(function (index, item) {
let routePoint = $('input[name="routePoint"]').eq(index).val();
// 拼接字符串
routePointStr += routePoint + "routePoint;";
})
data.field.routePoint = routePointStr;
data.field.id = objParam.id;
data.field.detailList = list;
@ -246,7 +263,8 @@ function getBaseTableData() {
model: $(this).find('td').eq(4).html(),
unit: $(this).find('td').eq(5).html(),
needNum: needNum ? needNum : 0,
needDay: times ? times : 0,
// needDay: times ? times : 0,
backDate: times,
remark: $(this).find('td').eq(8).find('input[name="remarks"]').val(),
})
})
@ -344,7 +362,7 @@ function setTableData(results) {
html += "<td>" + l.model + "</td>";
html += "<td>" + l.unit + "</td>";
html += "<td>" + setFormInput(l.needNum, 1) + "</td>";
html += "<td>" + setFormInput(l.times == null ? 0 : l.times, 2) + "</td>";
html += "<td>" + setFormInput(l.backDate == null ? 0 : l.backDate, 2) + "</td>";
html += "<td>" + setFormInput(l.remarks, 3) + "</td>";
html += "</tr>";
}
@ -352,6 +370,12 @@ function setTableData(results) {
html += "<tr><td colspan='9' class='center'>没有相关数据</td></tr>";
}
$("#baseTable tbody").empty().append(html);
$('.refund-date').each(function(){
laydate.render({
elem: this, // 指定元素
type: 'date' // 可选,指定为日期类型,默认即是'date'
});
});
layui.form.render();
}
@ -360,7 +384,8 @@ function setFormInput(value, type) {
if (type === 1) { // 需用量
html += '<input class="layui-input" name="needNum" onblur="checkValue(this,1,\'需用量\')" value="' + setNullValue(value) + '" autocomplete="off" lay-verify="required" maxlength="9">';
} else if (type === 2) { // 需用天数
html += '<input class="layui-input" name="times" onblur="checkValue(this,2,\'需用天数\')" value="' + setNullValue(value) + '" autocomplete="off" lay-verify="required" maxlength="9">';
// html += '<input class="layui-input" name="times" onblur="checkValue(this,2,\'需用天数\')" value="' + setNullValue(value) + '" autocomplete="off" lay-verify="required" maxlength="9">';
html += '<input class="layui-input refund-date" readonly name="times" id="refundDate" value="' + setNullValue(value) + '" autocomplete="off">';
} else if (type === 3) { // 备注
html += '<input class="layui-input" placeholder="请输入备注" id="remarks" name="remarks" value="' + setNullValue(value) + '" maxLength="60" lay-affix="clear"></input>';
}
@ -546,6 +571,50 @@ function handleFileType(index, file, result) {
return html;
}
// 添加途径点
function addTjd() {
addNum = addNum + 1;
addNums ++;
if(addNums>10){
addNum= 10;
addNums =10;
layer.msg('途径点不能超过10个!', { icon: 5 })
return false;
}
let html = '<div class="layui-form-item addTjd">' +
'<div class="layui-inline">' +
'<label class="layui-form-label required" style="width: 110px !important;">途径点</label>' +
'<div class="layui-input-inline">' +
'<input class="layui-input" name="routePoint" id="routePoint' + (addNum) + '" autocomplete="off" lay-verify="required" maxlength="30" lay-affix="clear">' +
'</div>' +
'</div>' +
'<img style="cursor: pointer;" onclick="delTjd(this,' + addNum + ')" src="../../../images/del_icon2.png">' +
'</div>';
let addTjdNum = $('.addTjd').length;
if (addTjdNum === 0) {
$('#tjd').after(html);
} else {
$('.addTjd').eq(addTjdNum - 1).after(html);
}
layui.form.render();
}
// 删除途径点
function delTjd(that, addNum) {
addNums = addNums -1;
let tjdId = $('#routePoint' + addNum).val();
$(that).parent('.layui-form-item').remove();
if (tjdId) {
// 删除缓存数据
for (let i = 0; i < tjdDataArr.length; i++) {
if (tjdDataArr[i].tjdId == tjdId) {
tjdDataArr.splice(i, 1);
break;
}
}
}
}
// 关闭页面
function closePage(type) {
let index = parent.layer.getFrameIndex(window.name); // 先得到当前 iframe层的索引

View File

@ -4,6 +4,9 @@ let pageNum = 1, tableIns; // 定义分页
let jjDataArr = []; // 配件数据
let proList = []; // 工程下拉选
let delIdArr = [];
let addNum = 0;
let addNums = 1;
let tjdDataArr = new Array(); // 厂家的安全工器具数据
function setParams(obj) {
objParam = JSON.parse(obj);
layui.use(['form', 'layer', 'laydate', 'upload', 'table'], function () {
@ -131,6 +134,13 @@ function submitApply(data) {
}
let routePointStr = ""; //
$('input[name="routePoint"]').each(function (index, item) {
let routePoint = $('input[name="routePoint"]').eq(index).val();
// 拼接字符串
routePointStr += routePoint + "routePoint;";
})
console.log("routePointStr",routePointStr)
let loadingMsg = layer.msg('正在提交保存,请稍等...', { icon: 16, shade: 0.01, time: '0' });
let url = dataUrl + 'backstage/carNeedPlan/addNeedPlanData';
@ -143,6 +153,7 @@ function submitApply(data) {
data.field.detailList = list;
data.field.applyType = '0';
data.field.routePoint = routePointStr;
console.error(data.field);
formData.append('params', JSON.stringify(data.field));
ajaxRequestByUploadFile(url, formData, function () {
@ -180,7 +191,8 @@ function getBaseTableData() {
model: $(this).find('td').eq(4).html(),
unit: $(this).find('td').eq(5).html(),
needNum: needNum ? needNum : 0,
needDay: times ? times : 0,
// needDay: times ? times : 0,
backDate: times ? times : 0,
remark: $(this).find('td').eq(8).find('input[name="remarks"]').val(),
})
})
@ -300,7 +312,8 @@ function setFormInput(value, type) {
if (type === 1) { // 需用量
html += '<input class="layui-input" name="needNum" onblur="checkValue(this,1,\'需用量\')" value="' + setNullValue(value) + '" autocomplete="off" lay-verify="required" maxlength="9">';
} else if (type === 2) { // 需用天数
html += '<input class="layui-input refund-date" name="times" id="refundDate" value="' + setNullValue(value) + '" autocomplete="off">';
html += '<input class="layui-input refund-date" readonly name="times" id="refundDate" value="' + setNullValue(value) + '" autocomplete="off">';
// html += '<input class="layui-input" name="times" onblur="checkValue(this,2,\'需用天数\')" value="' + setNullValue(value) + '" autocomplete="off" lay-verify="required" maxlength="9">';
} else if (type === 3) { // 备注
html += '<input class="layui-input" placeholder="请输入备注" id="remarks" name="remarks" value="' + setNullValue(value) + '" maxLength="60" lay-affix="clear"></input>';
}
@ -480,6 +493,50 @@ function handleFileType(index, file, result) {
return html;
}
// 添加途径点
function addTjd() {
addNum = addNum + 1;
addNums ++;
if(addNums>10){
addNum= 10;
addNums =10;
layer.msg('途径点不能超过10个!', { icon: 5 })
return false;
}
let html = '<div class="layui-form-item addTjd">' +
'<div class="layui-inline">' +
'<label class="layui-form-label required" style="width: 110px !important;">途径点</label>' +
'<div class="layui-input-inline">' +
'<input class="layui-input" name="routePoint" autocomplete="off" lay-verify="required" maxlength="30" lay-affix="clear">' +
'</div>' +
'</div>' +
'<img style="cursor: pointer;" onclick="delTjd(this,' + addNum + ')" src="../../../images/del_icon2.png">' +
'</div>';
let addTjdNum = $('.addTjd').length;
if (addTjdNum === 0) {
$('#tjd').after(html);
} else {
$('.addTjd').eq(addTjdNum - 1).after(html);
}
layui.form.render();
}
// 删除途径点
function delTjd(that, addNum) {
addNums = addNums -1;
let tjdId = $('#routePoint' + addNum).val();
$(that).parent('.layui-form-item').remove();
if (tjdId) {
// 删除缓存数据
for (let i = 0; i < tjdDataArr.length; i++) {
if (tjdDataArr[i].tjdId == tjdId) {
tjdDataArr.splice(i, 1);
break;
}
}
}
}
// 关闭页面
function closePage(type) {
let index = parent.layer.getFrameIndex(window.name); // 先得到当前 iframe层的索引

View File

@ -1,5 +1,5 @@
let objParam;
let form, table, element, tableIns, layer, util;
let form, table, element, tableIns, layer, util,laydate;
let pageNum = 1;
let quanju = new Array();//全局
let huancun = new Array();//缓存
@ -8,12 +8,13 @@ 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','laydate'], function () {
form = layui.form;
table = layui.table;
element = layui.element;
layer = layui.layer;
util = layui.util;
laydate = layui.laydate;
initTable();
});
}
@ -162,8 +163,13 @@ function initTable() {
title: "<span style='color:red'> * </span>预计使用时间",
unresize: true,
align: "center",
edit: 'text',
style: 'outline: 1px solid #e6e6e6;outline-offset: -5px;',
templet: (d) =>
'<div class="layui-input-inline"><input type="text" class="layui-input date-picker" id="date_' +
d.id +
'" value="' +
(d.times || "") +
'" readonly></div>',
style: "outline: 1px solid #e6e6e6;outline-offset: -5px;",
},
{
field: "remarks",
@ -205,6 +211,20 @@ function initTable() {
$('.layui-table th[data-field="0"] input[type="checkbox"]').prop('checked', true);//data-field值默认为0如果在分页部分自定义了属性名则需要改成对应的属性名
$('.layui-table th[data-field="0"] input[type="checkbox"]').next().addClass('layui-form-checked');//data-field值默认为0如果在分页部分自定义了属性名则需要改成对应的属性名
}
// 初始化日期选择器
res.data.forEach((item) => {
laydate.render({
elem: "#date_" + item.id,
done: (value) => {
// 更新数据
const data = {}
data.id = item.id
data.times = value
item.times = data.times
updateOrAddObject(item.id, item)
},
})
})
},
});
table.on('edit(currentTableId2)', function (obj) {
@ -218,7 +238,7 @@ function initTable() {
return layer.msg('需用量格式不正确最大数量只能输入10且为正整数', { icon: 7 })
}
}
} else if (field === 'remarks') { // 备注
} else if (field === 'remarks') { // 备注
if (value) {
if (value.length > 255) {
obj.reedit();
@ -268,7 +288,7 @@ function initTable() {
});
}
// 根据id 判断对象数组的对象是否存在 如果存在则替换,不存在则添加
// 根据id 判断对象数组的对象是否存在 如果存在则替换,不存在则添加
function updateOrAddObject(id, newObject) {
const index = jjDetailArr.findIndex(obj => obj.id === id);
if (index !== -1) {
@ -340,4 +360,4 @@ function closePage(type, params) {
window.parent.addFitDatas(params);
}
parent.layer.close(index); // 再执行关闭
}
}

View File

@ -1,11 +1,11 @@
const dataUrl = 'http://127.0.0.1:21522/gz_car/'; // 数据请求路径
const fileUrl = 'http://127.0.0.1:21522/gz_car/statics'; // 文件路径
const viewFileUrl = 'http://192.168.0.14:8012/onlinePreview?url=' //14服务器预览文件
// const dataUrl = 'http://127.0.0.1:21522/gz_car/'; // 数据请求路径
// const fileUrl = 'http://127.0.0.1:21522/gz_car/statics'; // 文件路径
// const viewFileUrl = 'http://192.168.0.14:8012/onlinePreview?url=' //14服务器预览文件
/* const dataUrl = 'http://192.168.0.14:21999/'; // 数据请求路径
const fileUrl = 'http://192.168.0.14:21999/statics'; // 文件路径
const dataUrl = 'http://192.168.0.16:21522/gz-car/'; // 数据请求路径
const fileUrl = 'http://192.168.0.16:21522/gz-car/statics'; // 文件路径
const signFileUrl = 'http://127.0.0.1:21995/statics'; // 签名文件路径
const viewFileUrl = 'http://192.168.0.14:8012/onlinePreview?url=' //14服务器预览文件 */
const viewFileUrl = 'http://192.168.0.14:8012/onlinePreview?url=' //14服务器预览文件
/* 请求 */
function ajaxRequest(url, type, data, async, beforeFn, successFn, errorFn, contentType) {
@ -231,7 +231,7 @@ function getUrlParam(key) {
// 预览文件
function commonViewFile(params) {
let path = fileUrl + params + '?auth=' + sessionStorage.getItem("gz-token");
// path = fileUrl + params
// path = fileUrl + params
console.log(path);
let encodePath = encodeURIComponent(useBase64.encode64(path));
window.open(viewFileUrl + encodePath + '&token=' + generateToken());
@ -544,4 +544,4 @@ function numToChinese(num) {
} else if (num === 36) {
return '三十六';
}
}
}

View File

@ -80,6 +80,7 @@
<td ></td>
</tr>
</table>
<div id="routePoint"></div>
</div>
<div id="file-box">

View File

@ -134,6 +134,21 @@
</div>
</div>
<div class="layui-form-item" id="tjd">
<div class="layui-inline">
<label class="layui-form-label required" style="width: 110px !important;">途径点</label>
<div class="layui-input-inline">
<input class="layui-input" name="routePoint" id="routePoint" autocomplete="off" lay-verify="required"
maxlength="30" lay-affix="clear">
</div>
</div>
</div>
<div class="layout" style="justify-content: start;margin-left: 8%;">
<p>多个途径点请点击继续,最多10个</p>
<div onclick="addTjd()" style="cursor: pointer;color: #55a9ff;margin: 0 5px;"><img
src="../../../images/add.png" width="20px" height="20px"><span>添加途径点</span></div>
</div>
<button type="submit" id="formSubmit" class="layui-btn" lay-submit="" lay-filter="formData"
style="display: none;"></button>
@ -207,7 +222,7 @@
<th style="width: 10%" class="center">规格</th>
<th style="width: 10%" class="center">单位</th>
<th style="width: 15%" class="center"><span style="color: red;">*</span>需用量</th>
<th style="width: 15%" class="center"><span style="color: red;">*</span>需用天数</th>
<th style="width: 15%" class="center">预计使用时间</th>
<th style="width: 15%" class="center">备注</th>
</tr>
</thead>

View File

@ -137,6 +137,22 @@
</div>
</div>
<div class="layui-form-item" id="tjd">
<div class="layui-inline">
<label class="layui-form-label required" style="width: 110px !important;">途径点</label>
<div class="layui-input-inline">
<input class="layui-input" name="routePoint" autocomplete="off" lay-verify="required"
maxlength="30" lay-affix="clear">
</div>
</div>
</div>
<div class="layout" style="justify-content: start;margin-left: 8%;">
<p>多个途径点请点击继续,最多10个</p>
<div onclick="addTjd()" style="cursor: pointer;color: #55a9ff;margin: 0 5px;"><img
src="../../../images/add.png" width="20px" height="20px"><span>添加途径点</span></div>
</div>
</form>
<div class="layui-upload" style="padding: 0 39px;">
@ -207,7 +223,7 @@
<th style="width: 10%" class="center">规格</th>
<th style="width: 10%" class="center">单位</th>
<th style="width: 15%" class="center"><span style="color: red;">*</span>需用量</th>
<th style="width: 15%" class="center"><span style="color: red;">*</span>需用天数</th>
<th style="width: 15%" class="center">预计使用时间</th>
<th style="width: 15%" class="center">备注</th>
</tr>
</thead>