From 617dcdcba6b5134fbd6b7cdf77c459556d19cc9a Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 04 十一月 2026 16:44:58 +0800
Subject: [PATCH] feat(crm): 开票管理新增销售订单选择,开票金额带出订单未开票金额
---
src/views/crm/invoice/data.ts | 46 ++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 42 insertions(+), 4 deletions(-)
diff --git a/src/views/crm/invoice/data.ts b/src/views/crm/invoice/data.ts
index cd22af7..8a5e9ba 100644
--- a/src/views/crm/invoice/data.ts
+++ b/src/views/crm/invoice/data.ts
@@ -6,8 +6,10 @@
import { useUserStore } from '@vben/stores';
import { getContractSimpleList } from '#/api/crm/contract';
+import { getSaleOrderRemainPrice } from '#/api/crm/invoice';
import { getSimpleUserList } from '#/api/system/user';
import CrmCustomerSelect from '#/components/crm-customer-select.vue';
+import { ErpSaleOrderSelect } from '#/views/erp/sale/order/components';
import { markRaw } from 'vue';
@@ -56,6 +58,34 @@
defaultValue: userStore.userInfo?.id,
},
{
+ fieldName: 'saleOrderId',
+ label: '閿�鍞鍗�',
+ component: markRaw(ErpSaleOrderSelect),
+ dependencies: {
+ triggerFields: ['id'],
+ disabled: (values) => !!values.id,
+ },
+ componentProps: (_values, form) => ({
+ placeholder: '璇烽�夋嫨閿�鍞鍗曪紙鍙笉閫夛級',
+ allowClear: true,
+ // 鍙厑璁搁�夋嫨瀹℃牳閫氳繃鐨勯攢鍞鍗曪紙ErpAuditStatus.APPROVE = 20锛�
+ status: 20,
+ onChange: async (item: any) => {
+ if (!item) {
+ form.setFieldValue('price', undefined);
+ return;
+ }
+ // 瀹㈡埛銆佸悎鍚屻�佹姮澶撮殢閿�鍞鍗曞甫鍑�
+ form.setFieldValue('customerId', item.customerId);
+ form.setFieldValue('contractId', item.contractId);
+ form.setFieldValue('invoiceTitle', item.customerName);
+ // 寮�绁ㄩ噾棰濋粯璁ゅ甫鍑鸿璁㈠崟鐨勬湭寮�绁ㄩ噾棰�
+ const remainPrice = await getSaleOrderRemainPrice(item.id);
+ form.setFieldValue('price', remainPrice > 0 ? remainPrice : 0);
+ },
+ }),
+ },
+ {
fieldName: 'customerId',
label: '瀹㈡埛鍚嶇О',
component: markRaw(CrmCustomerSelect),
@@ -68,8 +98,9 @@
},
}),
dependencies: {
- triggerFields: ['id'],
- disabled: (values) => !!values.id,
+ triggerFields: ['id', 'saleOrderId'],
+ // 閫変簡閿�鍞鍗曟椂瀹㈡埛鐢辫鍗曠‘瀹氾紝涓嶅彲鏀�
+ disabled: (values) => !!values.id || !!values.saleOrderId,
},
},
{
@@ -77,8 +108,10 @@
label: '鍚堝悓鍚嶇О',
component: 'Select',
dependencies: {
- triggerFields: ['customerId'],
- disabled: (values) => !values.customerId || !!values.id,
+ triggerFields: ['customerId', 'saleOrderId'],
+ // 閫変簡閿�鍞鍗曟椂鍚堝悓鐢辫鍗曞甫鍑猴紝涓嶅彲鏀�
+ disabled: (values) =>
+ !values.customerId || !!values.id || !!values.saleOrderId,
async componentProps(values, form) {
if (!values.customerId) {
return {
@@ -233,6 +266,11 @@
slots: { default: 'contractNo' },
},
{
+ title: '閿�鍞鍗曞彿',
+ field: 'saleOrderNo',
+ minWidth: 160,
+ },
+ {
title: '鍙戠エ绫诲瀷',
field: 'invoiceType',
minWidth: 120,
--
Gitblit v1.9.3