From 99a83d93748cd2bd786d17e06ee06ad2b7b2f508 Mon Sep 17 00:00:00 2001 From: BianLzhaoMin <11485688+bianliangzhaomin123@user.noreply.gitee.com> Date: Tue, 10 Feb 2026 09:17:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../www/html/safetyPlan/safetyPlanShipment.js | 13 +- .../safetyPlan/safetyPlanShipmentDetail.html | 4 +- .../safetyPlan/safetyPlanShipmentDetail.js | 70 +++++--- .../safetyPlan/safetyPlanShipmentItem.html | 4 +- .../html/safetyPlan/safetyPlanShipmentItem.js | 159 ++++++++++++++++-- .../assets/apps/H52D34F00/www/js/dataBase.js | 54 +++--- .../assets/apps/H52D34F00/www/js/public.js | 4 +- 7 files changed, 234 insertions(+), 74 deletions(-) diff --git a/app/src/main/assets/apps/H52D34F00/www/html/safetyPlan/safetyPlanShipment.js b/app/src/main/assets/apps/H52D34F00/www/html/safetyPlan/safetyPlanShipment.js index 4212408..def6253 100644 --- a/app/src/main/assets/apps/H52D34F00/www/html/safetyPlan/safetyPlanShipment.js +++ b/app/src/main/assets/apps/H52D34F00/www/html/safetyPlan/safetyPlanShipment.js @@ -1,5 +1,5 @@ // 全局变量 -const API_BASE_URL = commonService+'/backstage/'; +const API_BASE_URL = commonService + '/backstage/'; const API_ENDPOINT = 'purchase/getProPurchaseList'; let token = localStorage.getItem("safetyToken"); console.log('safetyPlanShipment.js - 初始化,从localStorage获取safetyToken:', token); @@ -34,11 +34,11 @@ function loadProjectList(pageNum) { type: 'GET', url: url, dataType: 'json', - beforeSend: function(xhr) { + beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', token); console.log('📤 设置Authorization header:', token ? '已设置' : '未设置'); }, - success: function(response) { + success: function (response) { showLoading(false); console.log('✅ API响应成功'); console.log('完整响应:', JSON.stringify(response, null, 2)); @@ -64,7 +64,7 @@ function loadProjectList(pageNum) { showEmpty(true); } }, - error: function(xhr, errorStatus, error) { + error: function (xhr, errorStatus, error) { showLoading(false); console.error('❌ API请求失败'); console.error('状态码:', xhr.status); @@ -80,7 +80,7 @@ function loadProjectList(pageNum) { // 渲染工程列表 function renderProjectList(projects) { const projectList = document.getElementById('projectList'); - + if (!projects || projects.length === 0) { showEmpty(true); return; @@ -212,7 +212,8 @@ function showEmpty(show) { // 返回上一页 function goBack() { - window.location.href = 'safetyPlanIndex.html'; + // window.location.href = 'safetyPlanIndex.html'; + window.location.href = '../index.html'; } // 进入工程详情(第2层) diff --git a/app/src/main/assets/apps/H52D34F00/www/html/safetyPlan/safetyPlanShipmentDetail.html b/app/src/main/assets/apps/H52D34F00/www/html/safetyPlan/safetyPlanShipmentDetail.html index 4663961..0815739 100644 --- a/app/src/main/assets/apps/H52D34F00/www/html/safetyPlan/safetyPlanShipmentDetail.html +++ b/app/src/main/assets/apps/H52D34F00/www/html/safetyPlan/safetyPlanShipmentDetail.html @@ -1,5 +1,6 @@ + @@ -7,6 +8,7 @@ +
@@ -64,5 +66,5 @@ - + \ No newline at end of file diff --git a/app/src/main/assets/apps/H52D34F00/www/html/safetyPlan/safetyPlanShipmentDetail.js b/app/src/main/assets/apps/H52D34F00/www/html/safetyPlan/safetyPlanShipmentDetail.js index 4ee5775..977a99d 100644 --- a/app/src/main/assets/apps/H52D34F00/www/html/safetyPlan/safetyPlanShipmentDetail.js +++ b/app/src/main/assets/apps/H52D34F00/www/html/safetyPlan/safetyPlanShipmentDetail.js @@ -1,5 +1,5 @@ // 全局变量 -const API_BASE_URL = commonService+'/backstage/'; +const API_BASE_URL = commonService + '/backstage/'; const API_ENDPOINT = 'purchase/getProApplyList'; let token = localStorage.getItem("safetyToken"); console.log('safetyPlanShipmentDetail.js - 初始化,从localStorage获取safetyToken:', token); @@ -7,16 +7,18 @@ let currentPage = 1; let pageSize = 20; let proId = null; let projectName = ''; +let status = null; // 状态参数 let allPlans = []; // 存储所有计划数据用于搜索 let filteredPlans = []; // 存储过滤后的数据 let currentStatusFilter = ''; // 当前状态筛选 // 页面加载 document.addEventListener('DOMContentLoaded', () => { - // 从URL获取proId + // 从URL获取proId、projectName和status const urlParams = new URLSearchParams(window.location.search); proId = urlParams.get('proId'); projectName = urlParams.get('projectName') || ''; + status = urlParams.get('status'); if (!proId) { alert('缺少工程ID参数'); @@ -57,11 +59,11 @@ function loadPlanList(pageNum) { type: 'GET', url: url, dataType: 'json', - beforeSend: function(xhr) { + beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', token); console.log('📤 设置Authorization header:', token ? '已设置' : '未设置'); }, - success: function(response) { + success: function (response) { showLoading(false); console.log('✅ API响应成功'); console.log('完整响应:', JSON.stringify(response, null, 2)); @@ -89,7 +91,7 @@ function loadPlanList(pageNum) { showEmpty(true); } }, - error: function(xhr, status, error) { + error: function (xhr, status, error) { showLoading(false); console.error('❌ API请求失败'); console.error('状态码:', xhr.status); @@ -111,7 +113,7 @@ function loadPlanList(pageNum) { // 渲染需求计划列表 function renderPlanList(plans) { const planList = document.getElementById('planList'); - + if (!plans || plans.length === 0) { showEmpty(true); return; @@ -130,17 +132,29 @@ function renderPlanList(plans) { function createPlanCard(plan) { const card = document.createElement('div'); card.className = 'plan-card'; - card.onclick = () => goToPlanDetail(plan.id); - const status = determinePlanStatus(plan); + const planStatus = determinePlanStatus(plan); + + // 卡片点击时传递status参数(优先使用URL中的status,如果没有则使用计划的状态) + card.onclick = () => goToPlanDetail(plan.id, status || planStatus); const progress = calculateProgress(plan); const lkNum = plan.lkNum || 0; const needNum = plan.needNum || 0; + // 根据状态判断按钮文本 + let buttonText = '发货'; + if (planStatus === '已发货') { + buttonText = '详情'; + } else if (planStatus === '部分发货') { + buttonText = '补发货'; + } else if (planStatus === '待发货') { + buttonText = '发货'; + } + card.innerHTML = `
${plan.planCode}
-
${status}
+
${planStatus}
@@ -166,10 +180,18 @@ function createPlanCard(plan) {
已发货: ${lkNum}/${needNum}
- +
`; + // 为按钮添加点击事件,阻止事件冒泡 + const button = card.querySelector('.action-btn'); + button.addEventListener('click', function (e) { + e.stopPropagation(); + // 按钮点击传递计划的状态 + goToPlanDetail(plan.id, planStatus); + }); + return card; } @@ -232,17 +254,17 @@ function renderPagination(response) { // 搜索计划 function searchPlans() { const searchText = document.querySelector('.search-input').value.toLowerCase(); - filteredPlans = allPlans.filter(plan => + filteredPlans = allPlans.filter(plan => plan.planCode.toLowerCase().includes(searchText) ); - + // 应用状态筛选 if (currentStatusFilter) { - filteredPlans = filteredPlans.filter(plan => + filteredPlans = filteredPlans.filter(plan => determinePlanStatus(plan) === currentStatusFilter ); } - + renderPlanList(filteredPlans); } @@ -250,23 +272,23 @@ function searchPlans() { function filterByStatus() { const statusFilter = document.getElementById('statusFilter').value; currentStatusFilter = statusFilter; - + filteredPlans = allPlans; - + if (statusFilter) { - filteredPlans = filteredPlans.filter(plan => + filteredPlans = filteredPlans.filter(plan => determinePlanStatus(plan) === statusFilter ); } - + // 应用搜索文本 const searchText = document.querySelector('.search-input').value.toLowerCase(); if (searchText) { - filteredPlans = filteredPlans.filter(plan => + filteredPlans = filteredPlans.filter(plan => plan.planCode.toLowerCase().includes(searchText) ); } - + renderPlanList(filteredPlans); } @@ -296,7 +318,11 @@ function goBack() { } // 进入计划详情(第3层) -function goToPlanDetail(planId) { - window.location.href = `safetyPlanShipmentItem.html?planId=${planId}&proId=${proId}`; +function goToPlanDetail(planId, status) { + let url = `safetyPlanShipmentItem.html?planId=${planId}&proId=${proId}`; + if (status) { + url += `&status=${encodeURIComponent(status)}`; + } + window.location.href = url; } diff --git a/app/src/main/assets/apps/H52D34F00/www/html/safetyPlan/safetyPlanShipmentItem.html b/app/src/main/assets/apps/H52D34F00/www/html/safetyPlan/safetyPlanShipmentItem.html index 9e46869..7400466 100644 --- a/app/src/main/assets/apps/H52D34F00/www/html/safetyPlan/safetyPlanShipmentItem.html +++ b/app/src/main/assets/apps/H52D34F00/www/html/safetyPlan/safetyPlanShipmentItem.html @@ -1,5 +1,6 @@ + @@ -7,6 +8,7 @@ +
@@ -81,5 +83,5 @@ - + \ No newline at end of file diff --git a/app/src/main/assets/apps/H52D34F00/www/html/safetyPlan/safetyPlanShipmentItem.js b/app/src/main/assets/apps/H52D34F00/www/html/safetyPlan/safetyPlanShipmentItem.js index 161c071..f7797b7 100644 --- a/app/src/main/assets/apps/H52D34F00/www/html/safetyPlan/safetyPlanShipmentItem.js +++ b/app/src/main/assets/apps/H52D34F00/www/html/safetyPlan/safetyPlanShipmentItem.js @@ -1,20 +1,24 @@ // 全局变量 -const API_BASE_URL = commonService+'/'; +const API_BASE_URL = commonService + '/'; const GET_DETAILS_ENDPOINT = 'backstage/purchase/getOutApplyDetails'; -const SUBMIT_SHIPMENT_ENDPOINT = 'backstage/purchase/addPurchaseData'; +const SUBMIT_SHIPMENT_ENDPOINT = 'backstage/purchase/addPurchaseData'; // 正常发货接口 +const SUBMIT_SHIPMENT_ENDPOINT_BUFFER = 'backstage/purchase/addPurchaseDataBySupplement'; // 部分发货时 补发货接口 let token = localStorage.getItem("safetyToken"); console.log('safetyPlanShipmentItem.js - 初始化,从localStorage获取safetyToken:', token); let planId = null; let proId = null; +let status = null; // 状态参数 let planDetails = null; // 存储计划详情 let shipmentDetails = []; // 存储发货明细 +let newOutStatus = null; // 新的outStatus // 页面加载 document.addEventListener('DOMContentLoaded', () => { - // 从URL获取planId和proId + // 从URL获取planId、proId和status const urlParams = new URLSearchParams(window.location.search); planId = urlParams.get('planId'); proId = urlParams.get('proId'); + status = urlParams.get('status'); if (!planId) { alert('缺少计划ID参数'); @@ -50,11 +54,11 @@ function loadPlanDetails() { dataType: 'json', contentType: 'application/x-www-form-urlencoded; charset=UTF-8', data: 'encryptedData=' + encodeURIComponent(JSON.stringify(encryptedData)), - beforeSend: function(xhr) { + beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', token); console.log('📤 设置Authorization header:', token ? '已设置' : '未设置'); }, - success: function(response) { + success: function (response) { showLoading(false); console.log('✅ API响应成功'); console.log('完整响应:', JSON.stringify(response, null, 2)); @@ -75,6 +79,8 @@ function loadPlanDetails() { renderPlanInfo(); renderDetailsList(); initShipmentDetails(); + // 根据status处理表单和输入框的禁用状态 + handleStatusBasedUI(); } else { console.warn('❌ No data found in response'); console.warn('响应内容:', JSON.stringify(response, null, 2)); @@ -82,7 +88,7 @@ function loadPlanDetails() { goBack(); } }, - error: function(xhr, status, error) { + error: function (xhr, status, error) { showLoading(false); console.error('❌ API请求失败'); console.error('状态码:', xhr.status); @@ -117,6 +123,34 @@ function renderPlanInfo() { return; } + // 格式化日期时间(如果outTime是时间戳或其他格式,需要转换) + let displayTime = data.outTime || data.applyTime || '-'; + if (displayTime !== '-') { + // 如果是时间戳,转换为可读格式 + if (typeof displayTime === 'number' || /^\d+$/.test(displayTime)) { + const date = new Date(parseInt(displayTime)); + displayTime = date.toLocaleString('zh-CN', { + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + second: '2-digit' + }); + } else if (displayTime.includes('T')) { + // 如果是ISO格式,转换为可读格式 + const date = new Date(displayTime); + displayTime = date.toLocaleString('zh-CN', { + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + second: '2-digit' + }); + } + } + infoGrid.innerHTML = `
计划编号
@@ -124,11 +158,11 @@ function renderPlanInfo() {
申请人
-
${data.userName || '-'}
+
${data.creator || '-'}
申请时间
-
${data.applyTime || '-'}
+
${data.createTime || '-'}
`; console.log('✅ renderPlanInfo - 渲染完成'); @@ -159,7 +193,7 @@ function renderDetailsList() { const needNum = item.needNum ? parseInt(item.needNum) : 0; const pendingNum = needNum - lkNum; - console.log("数量:"+lkNum+"needNum:"); + console.log("数量:" + lkNum + "needNum:"); const card = document.createElement('div'); card.className = 'detail-card'; card.innerHTML = ` @@ -211,6 +245,82 @@ function renderDetailsList() { console.log('✅ renderDetailsList - 渲染完成,共', list.length, '条数据'); } +// 根据状态处理UI的禁用和显示 +function handleStatusBasedUI() { + if (!status) { + return; // 如果没有status参数,不处理 + } + + const data = planDetails.data || {}; + const outStatus = data.outStatus; + newOutStatus = outStatus; + + // 如果状态为"已发货" + if (status === '已发货') { + // 禁用所有发货数量输入框 + const shipmentInputs = document.querySelectorAll('.shipment-input'); + shipmentInputs.forEach(input => { + input.disabled = true; + }); + + // 禁用发货信息表单 + document.getElementById('fhDay').disabled = true; + document.getElementById('jbUser').disabled = true; + document.getElementById('address').disabled = true; + document.getElementById('remark').disabled = true; + + // 隐藏提交发货按钮 + const submitBtn = document.querySelector('.btn-primary'); + if (submitBtn) { + submitBtn.style.display = 'none'; + } + } + // 如果状态为"待发货"或"部分发货" + else if (status === '待发货' || status === '部分发货') { + // 如果outStatus为1,禁用表单并回填数据 + if (outStatus == 1) { + // 禁用发货信息表单 + document.getElementById('fhDay').disabled = true; + document.getElementById('jbUser').disabled = true; + document.getElementById('address').disabled = true; + document.getElementById('remark').disabled = true; + + // 回填表单数据 + if (data.outTime) { + // 格式化日期(如果outTime是时间戳或其他格式,需要转换) + let dateValue = data.outTime; + // 如果是时间戳,转换为YYYY-MM-DD格式 + if (typeof dateValue === 'number' || /^\d+$/.test(dateValue)) { + const date = new Date(parseInt(dateValue)); + dateValue = date.toISOString().split('T')[0]; + } else if (dateValue.includes(' ')) { + // 如果是日期时间字符串,只取日期部分 + dateValue = dateValue.split(' ')[0]; + } + document.getElementById('fhDay').value = dateValue; + } + if (data.manager) { + document.getElementById('jbUser').value = data.manager; + } + if (data.address) { + document.getElementById('address').value = data.address; + } + if (data.remark) { + document.getElementById('remark').value = data.remark; + } + } + // 如果outStatus为0,表单无需禁用(保持默认状态) + + // 如果status为"部分发货"且outStatus==1,修改按钮文本为"补充发货" + if (status === '部分发货' && outStatus == 1) { + const submitBtn = document.querySelector('.btn-primary'); + if (submitBtn) { + submitBtn.textContent = '补充发货'; + } + } + } +} + // 初始化发货明细 function initShipmentDetails() { const list = planDetails.list || []; @@ -264,6 +374,7 @@ function submitShipment() { const detailsList = []; const list = planDetails.list || []; let totalShipmentNum = 0; + console.log('newOutStatus--list:', list); list.forEach(item => { const inputElement = document.getElementById(`shipment_${item.detailId}`); @@ -292,7 +403,7 @@ function submitShipment() { const detail = { modelId: item.modelId, planId: item.planId, - detailId: item.detailId, + // detailId: item.detailId, type: item.type, name: item.name, model: item.model, @@ -312,6 +423,12 @@ function submitShipment() { contractId: '' }] }; + + if (status === '部分发货' && newOutStatus == 1) { + detail.id = item.id; + } else { + detail.detailId = item.detailId; + } detailsList.push(detail); } }); @@ -340,6 +457,12 @@ function submitShipmentToServer(detailsList, fhDay, jbUser, address, remark) { showSubmitLoading(true); const planCode = planDetails.data.planCode; + const outStatus = planDetails.data.outStatus; + + // 判断使用哪个接口:当status为"部分发货"且outStatus==1时,使用补发货接口 + const endpoint = (status === '部分发货' && outStatus == 1) + ? SUBMIT_SHIPMENT_ENDPOINT_BUFFER + : SUBMIT_SHIPMENT_ENDPOINT; const submitData = { planCode: planCode, @@ -352,23 +475,29 @@ function submitShipmentToServer(detailsList, fhDay, jbUser, address, remark) { proId: proId }; + if (status === '部分发货' && newOutStatus == 1) { + submitData.id = planDetails.data.id; + } + console.log('========== safetyPlanShipmentItem.js - 提交发货 =========='); - console.log('请求URL:', API_BASE_URL + SUBMIT_SHIPMENT_ENDPOINT); + console.log('状态判断 - status:', status, ', outStatus:', outStatus); + console.log('使用的接口:', endpoint); + console.log('请求URL:', API_BASE_URL + endpoint); console.log('请求数据:', JSON.stringify(submitData, null, 2)); console.log('请求Headers:', { 'Authorization': token ? '已设置' : '未设置' }); console.log('Token值:', token); $.ajax({ type: 'POST', - url: API_BASE_URL + SUBMIT_SHIPMENT_ENDPOINT, + url: API_BASE_URL + endpoint, dataType: 'json', contentType: 'application/x-www-form-urlencoded; charset=UTF-8', data: 'params=' + encodeURIComponent(JSON.stringify(submitData)), - beforeSend: function(xhr) { + beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', token); console.log('📤 设置Authorization header:', token ? '已设置' : '未设置'); }, - success: function(response) { + success: function (response) { showSubmitLoading(false); console.log('✅ API响应成功'); console.log('完整响应:', JSON.stringify(response, null, 2)); @@ -379,7 +508,7 @@ function submitShipmentToServer(detailsList, fhDay, jbUser, address, remark) { alert('发货失败: ' + (response.msg || response.message || '未知错误')); } }, - error: function(xhr, errorStatus, error) { + error: function (xhr, errorStatus, error) { showSubmitLoading(false); console.error('❌ API请求失败'); console.error('状态码:', xhr.status); diff --git a/app/src/main/assets/apps/H52D34F00/www/js/dataBase.js b/app/src/main/assets/apps/H52D34F00/www/js/dataBase.js index f57f601..f70b2c1 100644 --- a/app/src/main/assets/apps/H52D34F00/www/js/dataBase.js +++ b/app/src/main/assets/apps/H52D34F00/www/js/dataBase.js @@ -1,39 +1,39 @@ //localStorage.setItem("url", "http://10.1.0.142:1935/gz_imw") -localStorage.setItem("url", "http://192.168.0.38:8080/GZMachinesWeb") +localStorage.setItem("url", "http://192.168.0.133:8080/GZMachinesWeb") //localStorage.setItem("url", "http://192.168.8.103:8080/gz_imw") //localStorage.setItem("url", "http://172.20.10.3:8080/GZMachinesWeb"); //localStorage.setItem("url", "http://36.33.26.177:1356/GZMachinesWeb"); //localStorage.setItem("url", "http://10.1.0.142:1935/GZMachinesWeb"); -$(function() { - onDeviceReady(); +$(function () { + onDeviceReady(); }); function onDeviceReady() { - deviceReady = true; - dataBase = openDatabase("ImtMachineWeb", "", "工作簿", 1024 * 1024, function() {}); - if(!dataBase) { - alert("数据库创建失败!"); - } else { - create(dataBase); - } + deviceReady = true; + dataBase = openDatabase("ImtMachineWeb", "", "工作簿", 1024 * 1024, function () { }); + if (!dataBase) { + alert("数据库创建失败!"); + } else { + create(dataBase); + } } function create(dataBase) { - dataBase.transaction(function(tx) { - tx.executeSql( - "CREATE TABLE IF NOT EXISTS BM_USER(ID INT(11) NOT NULL," + - "NAME VARCHAR(50)," + - "PASSWORD VARCAHR(50)," + - "POST_ID INT(11)," + //职位ID - "LOGIN_NAME VARCAHR(50)," + - "ORG_ID INT(11),"+ - "LOGGED VARCHAR(10)," + - "PRIMARY KEY (ID))", [], - function(tx, result) { - }, - function(tx, error) { - alert('创建BM_USER表失败:' + error.message); - } - ); - }) + dataBase.transaction(function (tx) { + tx.executeSql( + "CREATE TABLE IF NOT EXISTS BM_USER(ID INT(11) NOT NULL," + + "NAME VARCHAR(50)," + + "PASSWORD VARCAHR(50)," + + "POST_ID INT(11)," + //职位ID + "LOGIN_NAME VARCAHR(50)," + + "ORG_ID INT(11)," + + "LOGGED VARCHAR(10)," + + "PRIMARY KEY (ID))", [], + function (tx, result) { + }, + function (tx, error) { + alert('创建BM_USER表失败:' + error.message); + } + ); + }) } diff --git a/app/src/main/assets/apps/H52D34F00/www/js/public.js b/app/src/main/assets/apps/H52D34F00/www/js/public.js index 235ed84..ff41f3b 100644 --- a/app/src/main/assets/apps/H52D34F00/www/js/public.js +++ b/app/src/main/assets/apps/H52D34F00/www/js/public.js @@ -1,5 +1,5 @@ -const commonIp = "http://192.168.0.38:21520"; -const commonService = commonIp+"/gz-aqgqj"; +const commonIp = "http://192.168.0.133:21520"; +const commonService = commonIp + "/gz-aqgqj";