From bd7005a97aa7b46f71a839ad422e10335ca2477d Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Fri, 21 Aug 2026 09:23:14 +0800 Subject: [PATCH] 1 --- 悦/货代SAAS平台后台/AGENTS.md | 8 ---- .../2026-08-18-customer-arap-amount-design.md | 7 +-- 悦/货代SAAS平台后台/index.html | 48 ------------------- 悦/货代SAAS平台后台/prototype-src/app.js | 48 ------------------- 4 files changed, 4 insertions(+), 107 deletions(-) diff --git a/悦/货代SAAS平台后台/AGENTS.md b/悦/货代SAAS平台后台/AGENTS.md index cbff1dd..a0494de 100644 --- a/悦/货代SAAS平台后台/AGENTS.md +++ b/悦/货代SAAS平台后台/AGENTS.md @@ -133,14 +133,6 @@ node tests/verify-prototype-modules.cjs 精确页面 ID 清单以 `prototype-src/manifest.json` 为准,避免在本文件重复 169 个 ID 后产生双份维护。 -### 四期原型边界 - -- 四期已确认范围与页面级索引先读 `../../四期/README.md`;本原型中的完整菜单不自动等于四期开发范围。 -- 四期命中 `03-overseas-warehouse.html` 时只进入尾程订单、入库单、换标单、托盘、箱号、产品和库存相关页面;明确跳过 `overseas-outbound`、`fba-outbound-order`、`fba-outbound-order-detail`、`fba-return-outbound`。 -- `04-overseas-delivery.html` 的海外派送和库存离仓履约不属于四期;不得因尾程订单已纳入就把该模块一并纳入。 -- 四期海外业务读取 `07-overseas-business.html` 的海外采购、本土卡车和本土散板页面;通用资料只按任务读取 `gen-partner-warehouse`、`gen-overseas-quote`、`gen-exchange-rate`、`vehicle`、`vehicle-detail`,车队报价明确涉及时再读 `delivery-fleet-quote`。 -- 柜子确认国内出仓后的现有 `CarrierScheduleQuery` 和船节点定时查询整体归四期,当前没有独立原型页面;界面任务按 `../../四期/README.md` 从订舱、船期或货柜详情定位,不得借用 `04-overseas-delivery.html` 作为实现入口。 - ## 共享文件快速索引 | 文件 | 内容 | 何时读取 | diff --git a/悦/货代SAAS平台后台/docs/superpowers/specs/2026-08-18-customer-arap-amount-design.md b/悦/货代SAAS平台后台/docs/superpowers/specs/2026-08-18-customer-arap-amount-design.md index ccd336e..8262a6c 100644 --- a/悦/货代SAAS平台后台/docs/superpowers/specs/2026-08-18-customer-arap-amount-design.md +++ b/悦/货代SAAS平台后台/docs/superpowers/specs/2026-08-18-customer-arap-amount-design.md @@ -21,7 +21,7 @@ 每条 `arapData` 记录增加 `amount` 字段。金额为必填数字,不得小于 0,最多保留两位小数。当前原型未定义每条费用的币种,本次不新增币种字段,也不擅自添加人民币或美元符号。 -新增和编辑共用弹框增加“金额 *”输入框: +新增和编辑共用弹框在“费用类型”之后增加“金额 *”输入框: - 新增时为空,由用户填写。 - 编辑时回填当前记录金额。 @@ -31,8 +31,9 @@ ## 展示范围 - 列表在“费用类型”之后增加“金额”列。 -- 详情页“单据信息”增加“金额”。 -- 审核弹框摘要增加“金额”,使审核人能够在通过或驳回前核对。 +- 详情页“单据信息”在“费用类型”之后增加“金额”。 +- 审核弹框摘要在“费用类型”之后增加“金额”,使审核人能够在通过或驳回前核对。 +- 所有新增、编辑和展示位置均保持“费用类型 -> 金额”的字段顺序。 - 空态表格的 `colspan` 与新增列数保持一致。 ## 审核状态 diff --git a/悦/货代SAAS平台后台/index.html b/悦/货代SAAS平台后台/index.html index 147d977..59030e4 100644 --- a/悦/货代SAAS平台后台/index.html +++ b/悦/货代SAAS平台后台/index.html @@ -16348,48 +16348,6 @@ function saveCustomerDeduction(){ if(currentCustomerAccountId===id&&document.getElementById('page-customer-account-detail').classList.contains('active'))renderCustomerAccountDetail(); showToast('扣款成功,账户余额已更新','success'); } -function validateCustomerDeduction(account,amount){ - if(!account||account.status!=='正常')return '当前账户状态不允许扣款'; - if(!Number.isFinite(amount)||amount<=0)return '请输入大于0的扣款金额'; - var available=Number((account.balance-account.frozen).toFixed(2)); - if(amount>available)return '扣款金额不能超过可用余额'; - return ''; -} -function applyCustomerDeduction(account,transactions,values){ - account.balance=Number((account.balance-values.amount).toFixed(2)); - account.lastChange=values.time; - var transaction={no:values.no,time:values.time,type:values.type,order:values.order||'',income:0,expense:values.amount,balance:account.balance,operator:'当前用户',remark:values.remark||'手动扣款'}; - transactions.unshift(transaction); - return transaction; -} -function showCustomerDeduction(id){ - var d=customerAccountData.find(function(x){return x.id===id;}); - if(!d)return; - if(d.status!=='正常'){showToast('当前账户状态不允许扣款','error');return;} - document.getElementById('ca-deduction-id').value=id; - document.getElementById('ca-deduction-customer').value=d.name; - document.getElementById('ca-deduction-current').value=caMoney(d.balance); - document.getElementById('ca-deduction-available').value=caMoney(d.balance-d.frozen); - document.getElementById('ca-deduction-amount').value=''; - document.getElementById('ca-deduction-type').value='贴牌'; - document.getElementById('ca-deduction-date').value=caToday(); - document.getElementById('ca-deduction-order').value=''; - document.getElementById('ca-deduction-remark').value=''; - showModal('modal-customer-deduction'); -} -function saveCustomerDeduction(){ - var id=document.getElementById('ca-deduction-id').value,d=customerAccountData.find(function(x){return x.id===id;}),amount=parseFloat(document.getElementById('ca-deduction-amount').value),type=document.getElementById('ca-deduction-type').value,date=document.getElementById('ca-deduction-date').value,order=document.getElementById('ca-deduction-order').value.trim(),remark=document.getElementById('ca-deduction-remark').value.trim(); - var error=validateCustomerDeduction(d,amount); - if(error){showToast(error,'error');return;} - if(!date){showToast('请选择扣款日期','error');return;} - var time=date+' '+new Date().toTimeString().slice(0,5),seq=String(Date.now()).slice(-8); - if(!customerAccountTransactions[id])customerAccountTransactions[id]=[]; - applyCustomerDeduction(d,customerAccountTransactions[id],{amount:amount,type:type,time:time,no:'AC'+date.replace(/-/g,'')+seq,order:order,remark:remark}); - hideModal('modal-customer-deduction'); - renderCustomerAccounts(); - if(currentCustomerAccountId===id&&document.getElementById('page-customer-account-detail').classList.contains('active'))renderCustomerAccountDetail(); - showToast('扣款成功,账户余额已更新','success'); -} function renderCashflow(){renderTable('tbody-cashflow',cashflowData,['no','type','party','amt','cur','balance','date','remark'],(d,c)=>{ if(c==='type')return `${d.type}`; @@ -18548,12 +18506,6 @@ function ctClearance(no){ if(!d){showToast('未找到该货柜','warning');return;} showToast('货柜 '+no+' 已发起清关处理','success'); } -function ctSetFleetRegion(no,val){ - var d=ctListData.find(function(x){return x.no===no;}); - if(!d){return;} - d.fleetRegion=val; - showToast('货柜 '+no+' 车队区域已设为:'+(val||'未选择'),'success'); -} function ctSetFleet(no,val){ var d=ctListData.find(function(x){return x.no===no;}); if(!d){return;} diff --git a/悦/货代SAAS平台后台/prototype-src/app.js b/悦/货代SAAS平台后台/prototype-src/app.js index 3f5d532..3c78f96 100644 --- a/悦/货代SAAS平台后台/prototype-src/app.js +++ b/悦/货代SAAS平台后台/prototype-src/app.js @@ -4252,48 +4252,6 @@ function saveCustomerDeduction(){ if(currentCustomerAccountId===id&&document.getElementById('page-customer-account-detail').classList.contains('active'))renderCustomerAccountDetail(); showToast('扣款成功,账户余额已更新','success'); } -function validateCustomerDeduction(account,amount){ - if(!account||account.status!=='正常')return '当前账户状态不允许扣款'; - if(!Number.isFinite(amount)||amount<=0)return '请输入大于0的扣款金额'; - var available=Number((account.balance-account.frozen).toFixed(2)); - if(amount>available)return '扣款金额不能超过可用余额'; - return ''; -} -function applyCustomerDeduction(account,transactions,values){ - account.balance=Number((account.balance-values.amount).toFixed(2)); - account.lastChange=values.time; - var transaction={no:values.no,time:values.time,type:values.type,order:values.order||'',income:0,expense:values.amount,balance:account.balance,operator:'当前用户',remark:values.remark||'手动扣款'}; - transactions.unshift(transaction); - return transaction; -} -function showCustomerDeduction(id){ - var d=customerAccountData.find(function(x){return x.id===id;}); - if(!d)return; - if(d.status!=='正常'){showToast('当前账户状态不允许扣款','error');return;} - document.getElementById('ca-deduction-id').value=id; - document.getElementById('ca-deduction-customer').value=d.name; - document.getElementById('ca-deduction-current').value=caMoney(d.balance); - document.getElementById('ca-deduction-available').value=caMoney(d.balance-d.frozen); - document.getElementById('ca-deduction-amount').value=''; - document.getElementById('ca-deduction-type').value='贴牌'; - document.getElementById('ca-deduction-date').value=caToday(); - document.getElementById('ca-deduction-order').value=''; - document.getElementById('ca-deduction-remark').value=''; - showModal('modal-customer-deduction'); -} -function saveCustomerDeduction(){ - var id=document.getElementById('ca-deduction-id').value,d=customerAccountData.find(function(x){return x.id===id;}),amount=parseFloat(document.getElementById('ca-deduction-amount').value),type=document.getElementById('ca-deduction-type').value,date=document.getElementById('ca-deduction-date').value,order=document.getElementById('ca-deduction-order').value.trim(),remark=document.getElementById('ca-deduction-remark').value.trim(); - var error=validateCustomerDeduction(d,amount); - if(error){showToast(error,'error');return;} - if(!date){showToast('请选择扣款日期','error');return;} - var time=date+' '+new Date().toTimeString().slice(0,5),seq=String(Date.now()).slice(-8); - if(!customerAccountTransactions[id])customerAccountTransactions[id]=[]; - applyCustomerDeduction(d,customerAccountTransactions[id],{amount:amount,type:type,time:time,no:'AC'+date.replace(/-/g,'')+seq,order:order,remark:remark}); - hideModal('modal-customer-deduction'); - renderCustomerAccounts(); - if(currentCustomerAccountId===id&&document.getElementById('page-customer-account-detail').classList.contains('active'))renderCustomerAccountDetail(); - showToast('扣款成功,账户余额已更新','success'); -} function renderCashflow(){renderTable('tbody-cashflow',cashflowData,['no','type','party','amt','cur','balance','date','remark'],(d,c)=>{ if(c==='type')return `${d.type}`; @@ -6452,12 +6410,6 @@ function ctClearance(no){ if(!d){showToast('未找到该货柜','warning');return;} showToast('货柜 '+no+' 已发起清关处理','success'); } -function ctSetFleetRegion(no,val){ - var d=ctListData.find(function(x){return x.no===no;}); - if(!d){return;} - d.fleetRegion=val; - showToast('货柜 '+no+' 车队区域已设为:'+(val||'未选择'),'success'); -} function ctSetFleet(no,val){ var d=ctListData.find(function(x){return x.no===no;}); if(!d){return;}