From 5fcb82c0c0e1a7612b17c908d6b25802257a32f5 Mon Sep 17 00:00:00 2001 From: b2894lxlx <517289602@qq.com> Date: Sat, 22 Aug 2026 21:11:48 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E8=B0=83=E6=95=B4=E9=85=8D=E8=BD=BD?= =?UTF-8?q?=E3=80=81=E6=80=BB=E5=8D=95=202=E3=80=81=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=94=B6=E4=BB=98=E6=AC=BE=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/business/loading-manage.js | 6 + src/api/business/master-order.js | 2 + src/api/payment/billLedger.js | 27 + src/api/payment/billPayment.js | 21 + src/api/payment/invoiceApplication.js | 38 + src/api/payment/invoiceReceipt.js | 43 + src/api/payment/paymentApplication.js | 37 + src/api/payment/receiptClaimRecord.js | 21 + src/api/payment/receiptFlow.js | 21 + .../settlement/receivable-payable-detail.js | 9 +- src/option/business/contract-manage.js | 17 - src/option/payment/billLedger.js | 11 + src/option/payment/billPayment.js | 12 + src/option/payment/invoiceApplication.js | 34 + src/option/payment/invoiceReceipt.js | 16 + src/option/payment/paymentApplication.js | 20 + src/option/payment/receiptClaimRecord.js | 17 + src/option/payment/receiptFlow.js | 12 + src/router/views/index.js | 114 + src/utils/settlement-transfer.js | 25 + .../components/business-crud-page.vue | 1314 +--------- .../components/master-order-dispatch.vue | 35 +- .../components/master-order-editor.vue | 8 +- src/views/business/contract-manage.vue | 2125 ++++++++++++++++- src/views/business/loading-manage.vue | 118 +- src/views/business/temporary-credit-limit.vue | 657 ++++- src/views/payment/bill-ledger-form.vue | 599 +++++ src/views/payment/bill-ledger.vue | 116 + src/views/payment/bill-payment-form.vue | 434 ++++ src/views/payment/bill-payment.vue | 146 ++ .../payment/components/bill-ledger-search.vue | 149 ++ .../payment/components/bill-ledger-table.vue | 121 + .../components/bill-payment-search.vue | 94 + .../payment/components/bill-payment-table.vue | 149 ++ .../payment/invoice-application-form.vue | 1044 ++++++++ src/views/payment/invoice-application.vue | 474 ++++ src/views/payment/invoice-receipt-form.vue | 834 +++++++ src/views/payment/invoice-receipt.vue | 480 ++++ .../payment/payment-application-form.vue | 852 +++++++ src/views/payment/payment-application.vue | 476 ++++ .../payment/receipt-claim-record-form.vue | 369 +++ src/views/payment/receipt-claim-record.vue | 294 +++ src/views/payment/receipt-flow-form.vue | 537 +++++ src/views/payment/receipt-flow.vue | 269 +++ .../components/formal-settlement-editor.vue | 125 +- .../components/pre-settlement-editor.vue | 419 +++- .../settlement/formal-settlement-form.vue | 88 + src/views/settlement/formal-settlement.vue | 16 +- src/views/settlement/pre-settlement-form.vue | 90 + src/views/settlement/pre-settlement.vue | 10 +- .../settlement/receivable-payable-detail.vue | 224 +- 51 files changed, 11663 insertions(+), 1506 deletions(-) create mode 100644 src/api/payment/billLedger.js create mode 100644 src/api/payment/billPayment.js create mode 100644 src/api/payment/invoiceApplication.js create mode 100644 src/api/payment/invoiceReceipt.js create mode 100644 src/api/payment/paymentApplication.js create mode 100644 src/api/payment/receiptClaimRecord.js create mode 100644 src/api/payment/receiptFlow.js create mode 100644 src/option/payment/billLedger.js create mode 100644 src/option/payment/billPayment.js create mode 100644 src/option/payment/invoiceApplication.js create mode 100644 src/option/payment/invoiceReceipt.js create mode 100644 src/option/payment/paymentApplication.js create mode 100644 src/option/payment/receiptClaimRecord.js create mode 100644 src/option/payment/receiptFlow.js create mode 100644 src/utils/settlement-transfer.js create mode 100644 src/views/payment/bill-ledger-form.vue create mode 100644 src/views/payment/bill-ledger.vue create mode 100644 src/views/payment/bill-payment-form.vue create mode 100644 src/views/payment/bill-payment.vue create mode 100644 src/views/payment/components/bill-ledger-search.vue create mode 100644 src/views/payment/components/bill-ledger-table.vue create mode 100644 src/views/payment/components/bill-payment-search.vue create mode 100644 src/views/payment/components/bill-payment-table.vue create mode 100644 src/views/payment/invoice-application-form.vue create mode 100644 src/views/payment/invoice-application.vue create mode 100644 src/views/payment/invoice-receipt-form.vue create mode 100644 src/views/payment/invoice-receipt.vue create mode 100644 src/views/payment/payment-application-form.vue create mode 100644 src/views/payment/payment-application.vue create mode 100644 src/views/payment/receipt-claim-record-form.vue create mode 100644 src/views/payment/receipt-claim-record.vue create mode 100644 src/views/payment/receipt-flow-form.vue create mode 100644 src/views/payment/receipt-flow.vue create mode 100644 src/views/settlement/formal-settlement-form.vue create mode 100644 src/views/settlement/pre-settlement-form.vue diff --git a/src/api/business/loading-manage.js b/src/api/business/loading-manage.js index 6938bc3..fdb3a36 100644 --- a/src/api/business/loading-manage.js +++ b/src/api/business/loading-manage.js @@ -24,6 +24,12 @@ export const getDetail = id => }, }); +export const getCarrierContracts = () => + request({ + url: `${baseUrl}/carrier-contracts`, + method: 'get', + }); + export const saveDraft = row => request({ url: `${baseUrl}/save-draft`, diff --git a/src/api/business/master-order.js b/src/api/business/master-order.js index ca13ae0..baa7938 100644 --- a/src/api/business/master-order.js +++ b/src/api/business/master-order.js @@ -5,6 +5,8 @@ const baseUrl = '/blade-transport/master-order'; export const getList = (current, size, params) => request({ url: `${baseUrl}/list`, method: 'get', params: { current, size, ...params } }); export const getDetail = id => request({ url: `${baseUrl}/detail`, method: 'get', params: { id } }); +export const getCarriers = id => + request({ url: `${baseUrl}/carriers`, method: 'get', params: { id } }); export const submit = data => request({ url: `${baseUrl}/submit`, method: 'post', data }); export const saveDraft = data => request({ url: `${baseUrl}/draft`, method: 'post', data }); export const copy = id => request({ url: `${baseUrl}/copy`, method: 'post', params: { id } }); diff --git a/src/api/payment/billLedger.js b/src/api/payment/billLedger.js new file mode 100644 index 0000000..706c051 --- /dev/null +++ b/src/api/payment/billLedger.js @@ -0,0 +1,27 @@ +import request from '@/axios'; + +const baseUrl = '/blade-transport/bill-ledger'; + +export const getList = (current, size, params) => + request({ url: `${baseUrl}/list`, method: 'get', params: { current, size, ...params } }); +export const getDetail = id => request({ url: `${baseUrl}/detail`, method: 'get', params: { id } }); +export const getExpiryCounts = () => request({ url: `${baseUrl}/expiry-counts`, method: 'get' }); +export const getAvailableOptions = (keyword, deptId, selectedId) => + request({ + url: `${baseUrl}/available-options`, + method: 'get', + params: { keyword, deptId, selectedId }, + }); +export const submit = data => request({ url: `${baseUrl}/submit`, method: 'post', data }); +export const remove = id => request({ url: `${baseUrl}/remove`, method: 'post', params: { id } }); + +export const billTypeOptions = [ + { label: '开票', value: 'issued' }, + { label: '收票', value: 'received' }, +]; + +export const maturityStatusOptions = [ + { label: '未到期', value: 'unexpired' }, + { label: '今日到期', value: 'due_today' }, + { label: '已到期', value: 'expired' }, +]; diff --git a/src/api/payment/billPayment.js b/src/api/payment/billPayment.js new file mode 100644 index 0000000..1b378f2 --- /dev/null +++ b/src/api/payment/billPayment.js @@ -0,0 +1,21 @@ +import request from '@/axios'; + +const baseUrl = '/blade-transport/bill-payment'; + +export const getList = (current, size, params) => + request({ url: `${baseUrl}/list`, method: 'get', params: { current, size, ...params } }); +export const getDetail = id => request({ url: `${baseUrl}/detail`, method: 'get', params: { id } }); +export const save = data => request({ url: `${baseUrl}/save`, method: 'post', data }); +export const remove = id => request({ url: `${baseUrl}/remove`, method: 'post', params: { id } }); +export const submit = data => request({ url: `${baseUrl}/submit`, method: 'post', data }); +export const approve = data => request({ url: `${baseUrl}/approve`, method: 'post', data }); +export const returnBill = data => request({ url: `${baseUrl}/return`, method: 'post', data }); +export const voidBill = data => request({ url: `${baseUrl}/void`, method: 'post', data }); + +export const approvalStatusOptions = [ + { label: '草稿', value: 'draft' }, + { label: '审批中', value: 'reviewing' }, + { label: '已驳回', value: 'returned' }, + { label: '审批通过', value: 'approved' }, + { label: '已作废', value: 'voided' }, +]; diff --git a/src/api/payment/invoiceApplication.js b/src/api/payment/invoiceApplication.js new file mode 100644 index 0000000..806a89f --- /dev/null +++ b/src/api/payment/invoiceApplication.js @@ -0,0 +1,38 @@ +import request from '@/axios'; + +const baseUrl = '/blade-transport/invoice-application'; + +export const getList = (current, size, params) => + request({ url: `${baseUrl}/list`, method: 'get', params: { current, size, ...params } }); +export const getDetail = id => request({ url: `${baseUrl}/detail`, method: 'get', params: { id } }); +export const getSettlementCandidates = keyword => + request({ url: `${baseUrl}/settlement-candidates`, method: 'get', params: { keyword } }); +export const getSettlementDetails = settlementIds => + request({ url: `${baseUrl}/settlement-details`, method: 'get', params: { settlementIds } }); +export const getReceiverInformation = settlementIds => + request({ url: `${baseUrl}/receiver-information`, method: 'get', params: { settlementIds } }); +export const save = data => request({ url: `${baseUrl}/save`, method: 'post', data }); +export const remove = id => request({ url: `${baseUrl}/remove`, method: 'post', params: { id } }); +export const submit = data => request({ url: `${baseUrl}/submit`, method: 'post', data }); +export const approve = data => request({ url: `${baseUrl}/approve`, method: 'post', data }); +export const returnBill = data => request({ url: `${baseUrl}/return`, method: 'post', data }); +export const voidBill = data => request({ url: `${baseUrl}/void`, method: 'post', data }); +export const syncKingdee = id => + request({ url: `${baseUrl}/sync-kingdee`, method: 'post', params: { id } }); + +export const invoiceTypeOptions = [ + { label: '电子专票', value: 'electronic_special' }, + { label: '电子普票', value: 'electronic_normal' }, +]; +export const approvalStatusOptions = [ + { label: '草稿', value: 'draft' }, + { label: '审批中', value: 'reviewing' }, + { label: '审批通过', value: 'approved' }, + { label: '已驳回', value: 'returned' }, + { label: '已作废', value: 'voided' }, +]; +export const kingdeeStatusOptions = [ + { label: '未同步', value: 'unsynced' }, + { label: '已同步', value: 'synced' }, + { label: '同步失败', value: 'failed' }, +]; diff --git a/src/api/payment/invoiceReceipt.js b/src/api/payment/invoiceReceipt.js new file mode 100644 index 0000000..d4cf692 --- /dev/null +++ b/src/api/payment/invoiceReceipt.js @@ -0,0 +1,43 @@ +import request from '@/axios'; + +const baseUrl = '/blade-transport/invoice-receipt'; + +export const getList = (current, size, params) => + request({ url: `${baseUrl}/list`, method: 'get', params: { current, size, ...params } }); +export const getDetail = id => request({ url: `${baseUrl}/detail`, method: 'get', params: { id } }); +export const getInvoicePool = keyword => + request({ url: `${baseUrl}/invoice-pool`, method: 'get', params: { keyword } }); +export const getSettlementCandidates = (keyword, receiptId) => + request({ + url: `${baseUrl}/settlement-candidates`, + method: 'get', + params: { keyword, receiptId }, + }); +export const getReferenceInformation = settlementIds => + request({ + url: `${baseUrl}/reference-information`, + method: 'get', + params: { settlementIds }, + }); +export const save = data => request({ url: `${baseUrl}/save`, method: 'post', data }); +export const remove = id => request({ url: `${baseUrl}/remove`, method: 'post', params: { id } }); +export const submit = data => request({ url: `${baseUrl}/submit`, method: 'post', data }); +export const approve = data => request({ url: `${baseUrl}/approve`, method: 'post', data }); +export const returnBill = data => request({ url: `${baseUrl}/return`, method: 'post', data }); +export const voidBill = data => request({ url: `${baseUrl}/void`, method: 'post', data }); +export const syncKingdee = id => + request({ url: `${baseUrl}/sync-kingdee`, method: 'post', params: { id } }); + +export const approvalStatusOptions = [ + { label: '草稿', value: 'draft' }, + { label: '审批中', value: 'reviewing' }, + { label: '审批通过', value: 'approved' }, + { label: '已驳回', value: 'returned' }, + { label: '已作废', value: 'voided' }, +]; + +export const kingdeeStatusOptions = [ + { label: '未同步', value: 'unsynced' }, + { label: '已同步', value: 'synced' }, + { label: '同步失败', value: 'failed' }, +]; diff --git a/src/api/payment/paymentApplication.js b/src/api/payment/paymentApplication.js new file mode 100644 index 0000000..3031f6f --- /dev/null +++ b/src/api/payment/paymentApplication.js @@ -0,0 +1,37 @@ +import request from '@/axios'; + +const baseUrl = '/blade-transport/payment-application'; +export const getList = (current, size, params) => + request({ url: `${baseUrl}/list`, method: 'get', params: { current, size, ...params } }); +export const getDetail = id => request({ url: `${baseUrl}/detail`, method: 'get', params: { id } }); +export const save = data => request({ url: `${baseUrl}/save`, method: 'post', data }); +export const remove = id => request({ url: `${baseUrl}/remove`, method: 'post', params: { id } }); +export const submit = data => request({ url: `${baseUrl}/submit`, method: 'post', data }); +export const approve = data => request({ url: `${baseUrl}/approve`, method: 'post', data }); +export const returnBill = data => request({ url: `${baseUrl}/return`, method: 'post', data }); +export const voidBill = data => request({ url: `${baseUrl}/void`, method: 'post', data }); +export const syncKingdee = id => + request({ url: `${baseUrl}/sync-kingdee`, method: 'post', params: { id } }); + +export const paymentTypeOptions = [ + { label: '项目预付', value: 'project_advance' }, + { label: '进度预付', value: 'progress_advance' }, + { label: '结算付款', value: 'settlement_payment' }, +]; +export const paymentMethodOptions = [ + { label: '银行转账', value: 'bank_transfer' }, + { label: '银行承兑汇票', value: 'bank_draft' }, + { label: '商业承兑汇票', value: 'commercial_draft' }, +]; +export const approvalStatusOptions = [ + { label: '草稿', value: 'draft' }, + { label: '审批中', value: 'reviewing' }, + { label: '审批通过', value: 'approved' }, + { label: '已驳回', value: 'returned' }, + { label: '已作废', value: 'voided' }, +]; +export const kingdeeStatusOptions = [ + { label: '未生成', value: 'unsynced' }, + { label: '已生成', value: 'synced' }, + { label: '生成失败', value: 'failed' }, +]; diff --git a/src/api/payment/receiptClaimRecord.js b/src/api/payment/receiptClaimRecord.js new file mode 100644 index 0000000..4bda63f --- /dev/null +++ b/src/api/payment/receiptClaimRecord.js @@ -0,0 +1,21 @@ +import request from '@/axios'; + +const baseUrl = '/blade-transport/receipt-claim-record'; + +export const getList = (current, size, params) => + request({ url: `${baseUrl}/list`, method: 'get', params: { current, size, ...params } }); +export const getDetail = id => request({ url: `${baseUrl}/detail`, method: 'get', params: { id } }); +export const updateAttachments = data => + request({ url: `${baseUrl}/attachments`, method: 'post', data }); +export const voidClaim = id => request({ url: `${baseUrl}/void`, method: 'post', params: { id } }); + +export const claimStatusOptions = [ + { label: '已认领', value: 'claimed' }, + { label: '已作废', value: 'voided' }, +]; + +export const kingdeeBillStatusOptions = [ + { label: '未生成', value: 'none' }, + { label: '审核通过', value: 'approved' }, + { label: '处理失败', value: 'failed' }, +]; diff --git a/src/api/payment/receiptFlow.js b/src/api/payment/receiptFlow.js new file mode 100644 index 0000000..64cec7b --- /dev/null +++ b/src/api/payment/receiptFlow.js @@ -0,0 +1,21 @@ +import request from '@/axios'; + +const baseUrl = '/blade-transport/receipt-flow'; + +export const getList = (current, size, params) => + request({ url: `${baseUrl}/list`, method: 'get', params: { current, size, ...params } }); +export const getDetail = id => request({ url: `${baseUrl}/detail`, method: 'get', params: { id } }); +export const getSettlementCandidates = (keyword, flowId) => + request({ + url: `${baseUrl}/settlement-candidates`, + method: 'get', + params: { keyword, flowId }, + }); +export const claim = data => request({ url: `${baseUrl}/claim`, method: 'post', data }); +export const sync = () => request({ url: `${baseUrl}/sync`, method: 'post' }); + +export const claimStatusOptions = [ + { label: '未认领', value: 'unclaimed' }, + { label: '部分认领', value: 'partial' }, + { label: '认领完成', value: 'claimed' }, +]; diff --git a/src/api/settlement/receivable-payable-detail.js b/src/api/settlement/receivable-payable-detail.js index 3a6e871..3e9c2e2 100644 --- a/src/api/settlement/receivable-payable-detail.js +++ b/src/api/settlement/receivable-payable-detail.js @@ -15,21 +15,16 @@ export const getChangeRecords = (current, size, params) => params: { current, size, ...params }, }); -export const updateFee = data => - request({ url: `${baseUrl}/update-fee`, method: 'post', data }); +export const updateFee = data => request({ url: `${baseUrl}/update-fee`, method: 'post', data }); export const getUpdateFeeContracts = params => request({ url: `${baseUrl}/update-fee-contracts`, method: 'get', params }); -export const adjustFee = data => - request({ url: `${baseUrl}/adjust-fee`, method: 'post', data }); +export const adjustFee = data => request({ url: `${baseUrl}/adjust-fee`, method: 'post', data }); export const calculateAdjustedFee = data => request({ url: `${baseUrl}/calculate-adjusted-fee`, method: 'post', data }); -export const transferSettlement = data => - request({ url: `${baseUrl}/transfer-settlement`, method: 'post', data }); - export const getTransferCandidates = (current, size, params) => request({ url: `${baseUrl}/transfer-candidates`, diff --git a/src/option/business/contract-manage.js b/src/option/business/contract-manage.js index f1dafee..eaaae45 100644 --- a/src/option/business/contract-manage.js +++ b/src/option/business/contract-manage.js @@ -40,30 +40,13 @@ export const config = { enableAllDept: true, allDeptReadonly: false, batchDelete: false, - enableContractForm: true, enableProjectSelect: true, projectQueryParams: { approvalStatuses: 'approved,change_approved', }, - enableContractPeriod: true, - enableContractFileUpload: true, - enableCurrentUserHandler: true, - enableBillingPlan: true, - enableSettlementRule: true, - enableReconciliation: false, - enableFeeGenerationMode: true, - enableSettlementConfigTabs: true, - enablePaymentRatio: true, - enableAttachmentTable: true, - enableChangeRecord: true, - enableOrganizationSelect: true, - enableContractCreateActions: true, - enableContractExpiryTags: true, actions: ['copy'], statusProp: 'approvalStatus', statusTextProp: 'approvalStatusName', - customMenuActions: true, - contractNameDetail: true, detailSections: [ { title: '基本信息', diff --git a/src/option/payment/billLedger.js b/src/option/payment/billLedger.js new file mode 100644 index 0000000..bb320c7 --- /dev/null +++ b/src/option/payment/billLedger.js @@ -0,0 +1,11 @@ +export const billLedgerTableColumns = [ + { prop: 'billNo', label: '票据编号', minWidth: 170 }, + { prop: 'receiverName', label: '收票单位', minWidth: 170 }, + { prop: 'issuerName', label: '出票单位', minWidth: 170 }, + { prop: 'billTypeName', label: '汇票类型', minWidth: 110 }, + { prop: 'faceAmount', label: '票面金额', minWidth: 130, money: true }, + { prop: 'availableBalance', label: '可用余额', minWidth: 130, money: true }, + { prop: 'issueDate', label: '出票日期', minWidth: 120 }, + { prop: 'maturityDate', label: '到期日期', minWidth: 120 }, + { prop: 'remark', label: '备注', minWidth: 180 }, +]; diff --git a/src/option/payment/billPayment.js b/src/option/payment/billPayment.js new file mode 100644 index 0000000..b91bc55 --- /dev/null +++ b/src/option/payment/billPayment.js @@ -0,0 +1,12 @@ +export const billPaymentTableColumns = [ + { prop: 'paymentNo', label: '单据号', minWidth: 160 }, + { prop: 'deptName', label: '使用部门', minWidth: 150 }, + { prop: 'paymentDate', label: '付款日期', minWidth: 120 }, + { prop: 'usedAmount', label: '使用金额', minWidth: 130, money: true }, + { prop: 'remark', label: '备注', minWidth: 180 }, + { prop: 'approvalStatusName', label: '单据状态', minWidth: 110, status: true }, + { prop: 'currentNode', label: '当前节点', minWidth: 120 }, + { prop: 'currentProcessor', label: '当前处理人', minWidth: 130 }, + { prop: 'createUserName', label: '创建人', minWidth: 110 }, + { prop: 'createTime', label: '创建时间', minWidth: 170 }, +]; diff --git a/src/option/payment/invoiceApplication.js b/src/option/payment/invoiceApplication.js new file mode 100644 index 0000000..40f8e17 --- /dev/null +++ b/src/option/payment/invoiceApplication.js @@ -0,0 +1,34 @@ +export const invoiceApplicationTableColumns = [ + { prop: 'applicationNo', label: '单据号', minWidth: 170, link: true }, + { prop: 'settlementNos', label: '结算单号', minWidth: 190, link: true }, + { prop: 'projectName', label: '所属项目', minWidth: 140 }, + { prop: 'deptName', label: '所属组织', minWidth: 140 }, + { prop: 'issuerName', label: '开票方', minWidth: 150 }, + { prop: 'receiverName', label: '受票方', minWidth: 150 }, + { prop: 'invoiceAmount', label: '开票金额', minWidth: 130, money: true }, + { prop: 'createUserName', label: '创建人', minWidth: 110 }, + { prop: 'createTime', label: '创建时间', minWidth: 170 }, + { prop: 'approvalStatusName', label: '状态', minWidth: 110, status: true }, + { prop: 'currentNode', label: '当前节点', minWidth: 130 }, + { prop: 'currentProcessor', label: '当前处理人', minWidth: 130 }, + { prop: 'kingdeeBillNo', label: '金蝶单据号', minWidth: 150 }, + { prop: 'kingdeeStatusName', label: '金蝶单据状态', minWidth: 140 }, +]; + +export const invoiceApplicationDetailColumns = [ + { prop: 'documentNo', label: '单据号', minWidth: 180, link: true }, + { prop: 'waybillNo', label: '运单号', minWidth: 160, link: true }, + { prop: 'vehicleNo', label: '车号', minWidth: 120 }, + { prop: 'departureAddress', label: '发货地址', minWidth: 180 }, + { prop: 'arrivalAddress', label: '到货地址', minWidth: 180 }, + { prop: 'actualDepartureTime', label: '实际发货时间', minWidth: 170 }, + { prop: 'actualCompletionTime', label: '实际完成时间', minWidth: 170 }, + { prop: 'transportType', label: '运输类型', minWidth: 120 }, + { prop: 'cargoName', label: '货物名称', minWidth: 140 }, + { prop: 'cargoType', label: '货物类型', minWidth: 130 }, + { prop: 'transportQuantity', label: '运输总量', minWidth: 120 }, + { prop: 'mileage', label: '里程(KM)', minWidth: 120 }, + { prop: 'batchNo', label: '批次号', minWidth: 120 }, + { prop: 'freightAmount', label: '运费', minWidth: 120, money: true }, + { prop: 'feeItemsJson', label: '费用项目', minWidth: 180 }, +]; diff --git a/src/option/payment/invoiceReceipt.js b/src/option/payment/invoiceReceipt.js new file mode 100644 index 0000000..b1ca9e2 --- /dev/null +++ b/src/option/payment/invoiceReceipt.js @@ -0,0 +1,16 @@ +export const invoiceReceiptTableColumns = [ + { prop: 'invoiceNo', label: '发票号', minWidth: 180, link: true }, + { prop: 'invoiceDate', label: '开票日期', minWidth: 120 }, + { prop: 'projectName', label: '所属项目', minWidth: 140 }, + { prop: 'deptName', label: '所属组织', minWidth: 150 }, + { prop: 'payerName', label: '付款方', minWidth: 150 }, + { prop: 'payeeName', label: '收款方', minWidth: 150 }, + { prop: 'invoiceAmount', label: '收票金额', minWidth: 130, money: true }, + { prop: 'approvalStatusName', label: '审核状态', minWidth: 110, status: true }, + { prop: 'currentNode', label: '当前节点', minWidth: 130 }, + { prop: 'currentProcessor', label: '当前处理人', minWidth: 130 }, + { prop: 'createUserName', label: '创建人', minWidth: 110 }, + { prop: 'createTime', label: '创建时间', minWidth: 170 }, + { prop: 'kingdeeBillNo', label: '金蝶单据号', minWidth: 150 }, + { prop: 'kingdeeStatusName', label: '金蝶单据状态', minWidth: 140 }, +]; diff --git a/src/option/payment/paymentApplication.js b/src/option/payment/paymentApplication.js new file mode 100644 index 0000000..ed650f7 --- /dev/null +++ b/src/option/payment/paymentApplication.js @@ -0,0 +1,20 @@ +export const paymentApplicationTableColumns = [ + { prop: 'paymentNo', label: '单据号', minWidth: 140, link: true }, + { prop: 'paymentTypeName', label: '付款类型', minWidth: 110 }, + { prop: 'projectName', label: '所属项目', minWidth: 140 }, + { prop: 'deptName', label: '所属组织', minWidth: 120 }, + { prop: 'contractNo', label: '合同编号', minWidth: 130 }, + { prop: 'contractName', label: '合同名称', minWidth: 140 }, + { prop: 'payerName', label: '付款方', minWidth: 130 }, + { prop: 'payeeName', label: '收款方', minWidth: 130 }, + { prop: 'appliedAmount', label: '申请付款金额', minWidth: 140, money: true }, + { prop: 'paidAmount', label: '已付款金额', minWidth: 130, money: true }, + { prop: 'matchedInvoiceAmount', label: '匹配发票金额', minWidth: 130, money: true }, + { prop: 'applicantName', label: '申请人', minWidth: 100 }, + { prop: 'applyDate', label: '申请日期', minWidth: 120 }, + { prop: 'approvalStatusName', label: '审核状态', minWidth: 110, status: true }, + { prop: 'currentNode', label: '当前节点', minWidth: 120 }, + { prop: 'currentProcessor', label: '当前处理人', minWidth: 120 }, + { prop: 'kingdeeBillNo', label: '金蝶单据号', minWidth: 130 }, + { prop: 'kingdeeStatusName', label: '金蝶单据状态', minWidth: 130 }, +]; diff --git a/src/option/payment/receiptClaimRecord.js b/src/option/payment/receiptClaimRecord.js new file mode 100644 index 0000000..d1f1d96 --- /dev/null +++ b/src/option/payment/receiptClaimRecord.js @@ -0,0 +1,17 @@ +export const receiptClaimRecordTableColumns = [ + { prop: 'receiptNoticeNo', label: '认领通知单', minWidth: 150, link: true }, + { prop: 'payerName', label: '付款人', minWidth: 130 }, + { prop: 'receiptAmount', label: '付款金额', minWidth: 130, money: true }, + { prop: 'counterpartyName', label: '对方户名', minWidth: 150 }, + { prop: 'counterpartyAccount', label: '对方账号', minWidth: 170 }, + { prop: 'counterpartyBank', label: '对方开户行', minWidth: 150 }, + { prop: 'summary', label: '摘要', minWidth: 160 }, + { prop: 'transactionTime', label: '交易时间', minWidth: 170 }, + { prop: 'claimAmount', label: '认领金额', minWidth: 130, money: true }, + { prop: 'claimDate', label: '认领日期', minWidth: 120 }, + { prop: 'claimerName', label: '认领人', minWidth: 120 }, + { prop: 'claimerDeptName', label: '所属组织', minWidth: 150 }, + { prop: 'claimStatusName', label: '状态', minWidth: 110, status: true }, + { prop: 'kingdeeBillNo', label: '金蝶单据号', minWidth: 170 }, + { prop: 'kingdeeBillStatusName', label: '金蝶单据状态', minWidth: 140 }, +]; diff --git a/src/option/payment/receiptFlow.js b/src/option/payment/receiptFlow.js new file mode 100644 index 0000000..f54c7fe --- /dev/null +++ b/src/option/payment/receiptFlow.js @@ -0,0 +1,12 @@ +export const receiptFlowTableColumns = [ + { prop: 'receiptNoticeNo', label: '认领通知单', minWidth: 150 }, + { prop: 'payerName', label: '付款人', minWidth: 130 }, + { prop: 'receiptAmount', label: '付款金额', minWidth: 130, money: true }, + { prop: 'counterpartyName', label: '对方户名', minWidth: 150 }, + { prop: 'counterpartyAccount', label: '对方账号', minWidth: 170 }, + { prop: 'counterpartyBank', label: '对方开户行', minWidth: 150 }, + { prop: 'summary', label: '摘要', minWidth: 160 }, + { prop: 'transactionTime', label: '交易时间', minWidth: 170 }, + { prop: 'claimStatusName', label: '认领状态', minWidth: 110, status: true }, + { prop: 'claimedAmount', label: '已认领金额', minWidth: 130, money: true }, +]; diff --git a/src/router/views/index.js b/src/router/views/index.js index fd2018f..7149479 100644 --- a/src/router/views/index.js +++ b/src/router/views/index.js @@ -2,6 +2,120 @@ import Layout from '@/page/index/index.vue'; import Store from '@/store/'; export default [ + { + path: '/payment/bill-payment/form', + component: Layout, + children: [ + { + path: '', + name: '汇票付款表单', + meta: { keepAlive: false, activeMenu: '/payment/bill-payment' }, + component: () => import('@/views/payment/bill-payment-form.vue'), + }, + ], + }, + { + path: '/payment/bill-ledger/form', + component: Layout, + children: [ + { + path: '', + name: '汇票台账表单', + meta: { keepAlive: false, activeMenu: '/payment/bill-ledger' }, + component: () => import('@/views/payment/bill-ledger-form.vue'), + }, + ], + }, + { + path: '/payment/receipt-claim-record/form', + component: Layout, + children: [ + { + path: '', + name: '认领记录详情', + meta: { keepAlive: false, activeMenu: '/payment/receipt-claim-record' }, + component: () => import('@/views/payment/receipt-claim-record-form.vue'), + }, + ], + }, + { + path: '/payment/receipt-flow/form', + component: Layout, + children: [ + { + path: '', + name: '收款流水认领', + meta: { keepAlive: false, activeMenu: '/payment/receipt-flow' }, + component: () => import('@/views/payment/receipt-flow-form.vue'), + }, + ], + }, + { + path: '/payment/invoice-receipt/form', + component: Layout, + children: [ + { + path: '', + name: '收票登记', + meta: { keepAlive: false, activeMenu: '/payment/invoice-receipt' }, + component: () => import('@/views/payment/invoice-receipt-form.vue'), + }, + ], + }, + { + path: '/payment/invoice-application/form', + component: Layout, + children: [ + { + path: '', + name: '开票申请', + meta: { keepAlive: false, activeMenu: '/payment/invoice-application' }, + component: () => import('@/views/payment/invoice-application-form.vue'), + }, + ], + }, + { + path: '/payment/payment-application/form', + component: Layout, + children: [ + { + path: '', + name: '付款申请', + meta: { keepAlive: false, activeMenu: '/payment/payment-application' }, + component: () => import('@/views/payment/payment-application-form.vue'), + }, + ], + }, + { + path: '/settlement/pre-settlement/form', + component: Layout, + children: [ + { + path: '', + name: '新增编辑预结算', + meta: { + keepAlive: false, + activeMenu: '/settlement/pre-settlement', + }, + component: () => import('@/views/settlement/pre-settlement-form.vue'), + }, + ], + }, + { + path: '/settlement/formal-settlement/form', + component: Layout, + children: [ + { + path: '', + name: '新增编辑正式结算', + meta: { + keepAlive: false, + activeMenu: '/settlement/formal-settlement', + }, + component: () => import('@/views/settlement/formal-settlement-form.vue'), + }, + ], + }, { path: '/business/contract-manage/form', component: Layout, diff --git a/src/utils/settlement-transfer.js b/src/utils/settlement-transfer.js new file mode 100644 index 0000000..71003e2 --- /dev/null +++ b/src/utils/settlement-transfer.js @@ -0,0 +1,25 @@ +const STORAGE_PREFIX = 'settlement-transfer-'; + +const storageKey = token => `${STORAGE_PREFIX}${token}`; + +export const createSettlementTransfer = payload => { + const token = `${Date.now()}-${Math.random().toString(36).slice(2, 10)}`; + window.sessionStorage.setItem(storageKey(token), JSON.stringify(payload)); + return token; +}; + +export const readSettlementTransfer = token => { + if (!token) return null; + const value = window.sessionStorage.getItem(storageKey(token)); + if (!value) return null; + try { + return JSON.parse(value); + } catch (error) { + removeSettlementTransfer(token); + return null; + } +}; + +export const removeSettlementTransfer = token => { + if (token) window.sessionStorage.removeItem(storageKey(token)); +}; diff --git a/src/views/business/components/business-crud-page.vue b/src/views/business/components/business-crud-page.vue index 3372b81..15a178d 100644 --- a/src/views/business/components/business-crud-page.vue +++ b/src/views/business/components/business-crud-page.vue @@ -3,7 +3,6 @@ :class="[ 'business-crud-page', { - 'business-crud-page--contract-form': isContractFormPage, 'business-crud-page--form-page': isStandaloneFormPage, }, ]" @@ -29,7 +28,6 @@ @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" - @search-icon-change="handleSearchIconChange" @on-load="onLoad" > @@ -184,34 +175,8 @@
模板信息
- - - - - - - - - - - - - -