Commit ab2242a1aecf989e6a13ffc45a0df69a6ddf0fa5
1 parent
d4ba96aa
修改应付应收小数点
Showing
18 changed files
with
303 additions
and
86 deletions
src/api/project/invoice.ts
@@ -52,11 +52,24 @@ export const getInvoice = async (params: any) => { | @@ -52,11 +52,24 @@ export const getInvoice = async (params: any) => { | ||
52 | url: Api.INVOICE, | 52 | url: Api.INVOICE, |
53 | params, | 53 | params, |
54 | }); | 54 | }); |
55 | + const formattedRecords = res.records.map((record: any) => { | ||
56 | + return { | ||
57 | + ...record, | ||
58 | + actualPayedAmount1: record.actualPayedAmount1?.toFixed(2), | ||
59 | + actualPayedAmount2: record.actualPayedAmount2?.toFixed(2), | ||
60 | + actualPayedAmount3: record.actualPayedAmount3?.toFixed(2), | ||
61 | + actualReceivableAmount: record.actualReceivableAmount?.toFixed(2), | ||
62 | + deductAmount: record.deductAmount?.toFixed(2), | ||
63 | + otherAmount: record.otherAmount?.toFixed(2), | ||
64 | + totalCustomerAmount: record.totalCustomerAmount?.toFixed(2), | ||
65 | + totalPayAmount: record.totalPayAmount?.toFixed(2), | ||
66 | + }; | ||
67 | + }); | ||
55 | const orderStore = useOrderStoreWithOut(); | 68 | const orderStore = useOrderStoreWithOut(); |
56 | orderStore.setTotal(res.total); | 69 | orderStore.setTotal(res.total); |
57 | return new Promise((resolve) => { | 70 | return new Promise((resolve) => { |
58 | resolve({ | 71 | resolve({ |
59 | - items: res.records, | 72 | + items: formattedRecords, |
60 | total: res.total, | 73 | total: res.total, |
61 | }); | 74 | }); |
62 | }); | 75 | }); |
@@ -148,12 +161,25 @@ export const getCheck = async (params: any) => { | @@ -148,12 +161,25 @@ export const getCheck = async (params: any) => { | ||
148 | url: Api.CHECK_BILL, | 161 | url: Api.CHECK_BILL, |
149 | params, | 162 | params, |
150 | }); | 163 | }); |
164 | + const formattedRecords = res.records.map((record: any) => { | ||
165 | + return { | ||
166 | + ...record, | ||
167 | + actualPayedAmount1: record.actualPayedAmount1?.toFixed(2), | ||
168 | + actualPayedAmount2: record.actualPayedAmount2?.toFixed(2), | ||
169 | + actualPayedAmount3: record.actualPayedAmount3?.toFixed(2), | ||
170 | + actualPayedAmount: record.actualPayedAmount?.toFixed(2), | ||
171 | + deductAmount: record.deductAmount?.toFixed(2), | ||
172 | + unPayedAmount: record.unPayedAmount?.toFixed(2), | ||
173 | + totalActualPayedAmount: record.totalActualPayedAmount?.toFixed(2), | ||
174 | + totalProductionAmount: record.totalProductionAmount?.toFixed(2), | ||
175 | + }; | ||
176 | + }); | ||
151 | const orderStore = useOrderStoreWithOut(); | 177 | const orderStore = useOrderStoreWithOut(); |
152 | orderStore.setTotal(res.total); | 178 | orderStore.setTotal(res.total); |
153 | // return res.records; | 179 | // return res.records; |
154 | return new Promise((resolve) => { | 180 | return new Promise((resolve) => { |
155 | resolve({ | 181 | resolve({ |
156 | - items: res.records, | 182 | + items: formattedRecords, |
157 | total: res.total, | 183 | total: res.total, |
158 | }); | 184 | }); |
159 | }); | 185 | }); |
src/views/project/approve/PayPanel.vue
@@ -323,14 +323,14 @@ | @@ -323,14 +323,14 @@ | ||
323 | itemArray.value = []; | 323 | itemArray.value = []; |
324 | mockData.value = data.fieldInfos.checkBillOrderDO; | 324 | mockData.value = data.fieldInfos.checkBillOrderDO; |
325 | console.log(mockData, '5656mockdata'); | 325 | console.log(mockData, '5656mockdata'); |
326 | - actualPayCalculate.value = mockData.value.actualPayCalculate; // 实际付款金额计算 | 326 | + actualPayCalculate.value = mockData.value.actualPayCalculate?.toFixed(2); // 实际付款金额计算 |
327 | checkNo.value = mockData.value.checkNo; // 对账单号 | 327 | checkNo.value = mockData.value.checkNo; // 对账单号 |
328 | - actualPayedAmount.value = mockData.value.actualPayedAmount; // 实际应付金额 | 328 | + actualPayedAmount.value = mockData.value.actualPayedAmount?.toFixed(2); // 实际应付金额 |
329 | payedDate.value = mockData.value.payedDate; // 付款日期 | 329 | payedDate.value = mockData.value.payedDate; // 付款日期 |
330 | actualPayedDate.value = mockData.value.actualPayedDate; // 实际付款日期 | 330 | actualPayedDate.value = mockData.value.actualPayedDate; // 实际付款日期 |
331 | - unPayedAmount.value = mockData.value.unPayedAmount; // 未付金额 | ||
332 | - totalActualPayedAmount.value = mockData.value.totalActualPayedAmount; // 实际付款金额汇总 | ||
333 | - deductAmount.value = mockData.value.deductAmount; // 扣款金额 | 331 | + unPayedAmount.value = mockData.value.unPayedAmount?.toFixed(2); // 未付金额 |
332 | + totalActualPayedAmount.value = mockData.value.totalActualPayedAmount?.toFixed(2); // 实际付款金额汇总 | ||
333 | + deductAmount.value = mockData.value.deductAmount?.toFixed(2); // 扣款金额 | ||
334 | const match = mockData.value.invoiceUrl.match(/aliyuncs\.com\/(.*?)\?/); | 334 | const match = mockData.value.invoiceUrl.match(/aliyuncs\.com\/(.*?)\?/); |
335 | if (match && match[1]) { | 335 | if (match && match[1]) { |
336 | // 对提取的部分进行解码 | 336 | // 对提取的部分进行解码 |
src/views/project/approve/ReceivePanel.vue
@@ -293,12 +293,12 @@ | @@ -293,12 +293,12 @@ | ||
293 | openModal(true, { data }); | 293 | openModal(true, { data }); |
294 | mockData.value = data.fieldInfos.invoiceBillOrderDO; | 294 | mockData.value = data.fieldInfos.invoiceBillOrderDO; |
295 | id.value = data.id; | 295 | id.value = data.id; |
296 | - totalPayAmount.value = mockData.value.totalPayAmount; | ||
297 | - totalCustomerAmount.value = mockData.value.totalCustomerAmount; | ||
298 | - deductAmount.value = mockData.value.deductAmount; | 296 | + totalPayAmount.value = mockData.value.totalPayAmount?.toFixed(2); |
297 | + totalCustomerAmount.value = mockData.value.totalCustomerAmount?.toFixed(2); | ||
298 | + deductAmount.value = mockData.value.deductAmount?.toFixed(2); | ||
299 | backRefundDate.value = mockData.value.backRefundDate; | 299 | backRefundDate.value = mockData.value.backRefundDate; |
300 | actualRefundDate.value = mockData.value.actualRefundDate; | 300 | actualRefundDate.value = mockData.value.actualRefundDate; |
301 | - otherAmount.value = mockData.value.otherAmount; | 301 | + otherAmount.value = mockData.value.otherAmount?.toFixed(2); |
302 | invoiceNo.value = mockData.value.invoiceNo; | 302 | invoiceNo.value = mockData.value.invoiceNo; |
303 | payee.value = mockData.value.payee; | 303 | payee.value = mockData.value.payee; |
304 | } | 304 | } |
src/views/project/finance/pay/CheckDetail.vue
@@ -80,7 +80,7 @@ | @@ -80,7 +80,7 @@ | ||
80 | dataIndex: 'productionDepartmentPrice', | 80 | dataIndex: 'productionDepartmentPrice', |
81 | customRender: (column) => { | 81 | customRender: (column) => { |
82 | const { record } = column || {}; | 82 | const { record } = column || {}; |
83 | - return record?.profitAnalysisInfo?.productionDepartmentPrice; | 83 | + return record?.profitAnalysisInfo?.productionDepartmentPrice?.toFixed(2); |
84 | // ? `¥ ${record?.profitAnalysisInfo?.productionDepartmentPrice}` | 84 | // ? `¥ ${record?.profitAnalysisInfo?.productionDepartmentPrice}` |
85 | // : ''; | 85 | // : ''; |
86 | }, | 86 | }, |
@@ -91,7 +91,7 @@ | @@ -91,7 +91,7 @@ | ||
91 | dataIndex: 'productionDepartmentTotalPrice', | 91 | dataIndex: 'productionDepartmentTotalPrice', |
92 | customRender: (column) => { | 92 | customRender: (column) => { |
93 | const { record } = column || {}; | 93 | const { record } = column || {}; |
94 | - return record?.profitAnalysisInfo?.productionDepartmentTotalPrice; | 94 | + return record?.profitAnalysisInfo?.productionDepartmentTotalPrice?.toFixed(2); |
95 | // ? `¥ ${record?.profitAnalysisInfo?.productionDepartmentTotalPrice}` | 95 | // ? `¥ ${record?.profitAnalysisInfo?.productionDepartmentTotalPrice}` |
96 | // : ''; | 96 | // : ''; |
97 | }, | 97 | }, |
src/views/project/finance/pay/CheckSum.vue
@@ -41,26 +41,46 @@ | @@ -41,26 +41,46 @@ | ||
41 | title: '生产科总价汇总¥', | 41 | title: '生产科总价汇总¥', |
42 | dataIndex: 'productionDepartmentTotalPrice', | 42 | dataIndex: 'productionDepartmentTotalPrice', |
43 | width: 150, | 43 | width: 150, |
44 | + customRender: (res) => { | ||
45 | + // console.log(res, 56562); | ||
46 | + return res.record.exportVOS[0].productionDepartmentTotalPrice.toFixed(2); | ||
47 | + }, | ||
44 | }, | 48 | }, |
45 | { | 49 | { |
46 | title: '生产科扣款金额汇总¥', | 50 | title: '生产科扣款金额汇总¥', |
47 | dataIndex: 'deductAmount', | 51 | dataIndex: 'deductAmount', |
48 | width: 160, | 52 | width: 160, |
53 | + customRender: (res) => { | ||
54 | + // console.log(res, 56562); | ||
55 | + return res.record.exportVOS[0].deductAmount.toFixed(2); | ||
56 | + }, | ||
49 | }, | 57 | }, |
50 | { | 58 | { |
51 | title: '生产科实际应付金额¥', | 59 | title: '生产科实际应付金额¥', |
52 | dataIndex: 'calculateActualPayedAmount', | 60 | dataIndex: 'calculateActualPayedAmount', |
53 | width: 160, | 61 | width: 160, |
62 | + customRender: (res) => { | ||
63 | + // console.log(res, 56562); | ||
64 | + return res.record.exportVOS[0].calculateActualPayedAmount.toFixed(2); | ||
65 | + }, | ||
54 | }, | 66 | }, |
55 | { | 67 | { |
56 | title: '实际付款金额汇总¥', | 68 | title: '实际付款金额汇总¥', |
57 | dataIndex: 'actualPayedAmount', | 69 | dataIndex: 'actualPayedAmount', |
58 | width: 160, | 70 | width: 160, |
71 | + customRender: (res) => { | ||
72 | + // console.log(res, 56562); | ||
73 | + return res.record.exportVOS[0].actualPayedAmount.toFixed(2); | ||
74 | + }, | ||
59 | }, | 75 | }, |
60 | { | 76 | { |
61 | title: '未付金额¥', | 77 | title: '未付金额¥', |
62 | dataIndex: 'unPayedAmount', | 78 | dataIndex: 'unPayedAmount', |
63 | width: 150, | 79 | width: 150, |
80 | + customRender: (res) => { | ||
81 | + // console.log(res, 56562); | ||
82 | + return res.record.exportVOS[0].unPayedAmount.toFixed(2); | ||
83 | + }, | ||
64 | }, | 84 | }, |
65 | ]; | 85 | ]; |
66 | // const ids = ref<number[]>([]); | 86 | // const ids = ref<number[]>([]); |
src/views/project/finance/pay/Commit.vue
@@ -14,11 +14,11 @@ | @@ -14,11 +14,11 @@ | ||
14 | <script lang="ts" setup> | 14 | <script lang="ts" setup> |
15 | import { BasicModal, useModalInner } from '@/components/Modal'; | 15 | import { BasicModal, useModalInner } from '@/components/Modal'; |
16 | import { ref } from 'vue'; | 16 | import { ref } from 'vue'; |
17 | - import type { Dayjs } from 'dayjs'; | ||
18 | import { checkCommit } from '@/api/project/invoice'; | 17 | import { checkCommit } from '@/api/project/invoice'; |
19 | 18 | ||
20 | const id = ref(); | 19 | const id = ref(); |
21 | const date = ref(); | 20 | const date = ref(); |
21 | + const emit = defineEmits(['success']); | ||
22 | 22 | ||
23 | const [register, { closeModal }] = useModalInner(async (data) => { | 23 | const [register, { closeModal }] = useModalInner(async (data) => { |
24 | id.value = data.data.id; | 24 | id.value = data.data.id; |
@@ -40,6 +40,7 @@ | @@ -40,6 +40,7 @@ | ||
40 | const formattedDate = formatDate(date.value); | 40 | const formattedDate = formatDate(date.value); |
41 | 41 | ||
42 | checkCommit({ id: id.value, actualPayedDate: formattedDate }); | 42 | checkCommit({ id: id.value, actualPayedDate: formattedDate }); |
43 | + emit('success'); | ||
43 | closeModal(); | 44 | closeModal(); |
44 | } | 45 | } |
45 | </script> | 46 | </script> |
src/views/project/finance/pay/DeductShow.vue
@@ -74,17 +74,6 @@ | @@ -74,17 +74,6 @@ | ||
74 | const baseUrl = url.split('?')[0]; | 74 | const baseUrl = url.split('?')[0]; |
75 | return imageExtensions.some((ext) => baseUrl.toLowerCase().endsWith(ext)); | 75 | return imageExtensions.some((ext) => baseUrl.toLowerCase().endsWith(ext)); |
76 | } | 76 | } |
77 | - // function openPic(url) { | ||
78 | - // window.open('', '', '').document.write(`<!DOCTYPE html> | ||
79 | - // <html> | ||
80 | - // <body | ||
81 | - // style="display: flex; | ||
82 | - // justify-content: center; | ||
83 | - // align-items: center;"> | ||
84 | - // <img src='${url}' width="500px" height="500px"/> | ||
85 | - // </body> | ||
86 | - // </html>`); | ||
87 | - // } | ||
88 | // 检查 URL 是否为 PDF 格式 | 77 | // 检查 URL 是否为 PDF 格式 |
89 | function isPdfUrl(url: string): boolean { | 78 | function isPdfUrl(url: string): boolean { |
90 | return url.toLowerCase().endsWith('.pdf'); | 79 | return url.toLowerCase().endsWith('.pdf'); |
src/views/project/finance/pay/FinanceEdit.vue
@@ -12,9 +12,18 @@ | @@ -12,9 +12,18 @@ | ||
12 | showFooter | 12 | showFooter |
13 | :destroyOnClose="true" | 13 | :destroyOnClose="true" |
14 | > | 14 | > |
15 | - <div> | 15 | + <!-- <div> |
16 | <BasicForm @register="registerForm" /> | 16 | <BasicForm @register="registerForm" /> |
17 | - </div> | 17 | + </div> --> |
18 | + <div style="font-size: 15px">实际应收金额1$</div> | ||
19 | + <a-input v-model:value="input1" placeholder="请输入" :disabled="status === 10" auto-size /> | ||
20 | + <div style="margin: 16px 0"></div> | ||
21 | + <div style="font-size: 15px">实际应收金额2$</div> | ||
22 | + <a-input v-model:value="input2" placeholder="请输入" :disabled="status === 10" auto-size /> | ||
23 | + <div style="margin: 16px 0"></div> | ||
24 | + <div style="font-size: 15px">实际应收金额3$</div> | ||
25 | + <a-input v-model:value="input3" placeholder="请输入" :disabled="status === 10" auto-size /> | ||
26 | + <div style="margin: 16px 0"></div> | ||
18 | 27 | ||
19 | <!-- <template #titleToolbar> <a-button type="primary"> 申请编辑权限 </a-button></template> --> | 28 | <!-- <template #titleToolbar> <a-button type="primary"> 申请编辑权限 </a-button></template> --> |
20 | <template #appendFooter> | 29 | <template #appendFooter> |
@@ -29,6 +38,7 @@ | @@ -29,6 +38,7 @@ | ||
29 | import { defineComponent, ref, computed, unref, toRaw, reactive } from 'vue'; | 38 | import { defineComponent, ref, computed, unref, toRaw, reactive } from 'vue'; |
30 | import { getEmailList } from '/@/api/sys/config'; | 39 | import { getEmailList } from '/@/api/sys/config'; |
31 | import { updateAmountInfo } from '@/api/project/invoice'; | 40 | import { updateAmountInfo } from '@/api/project/invoice'; |
41 | + import { useMessage } from '/@/hooks/web/useMessage'; | ||
32 | 42 | ||
33 | const emit = defineEmits(['success']); | 43 | const emit = defineEmits(['success']); |
34 | const schemas: FormSchema[] = [ | 44 | const schemas: FormSchema[] = [ |
@@ -87,14 +97,33 @@ | @@ -87,14 +97,33 @@ | ||
87 | span: 24, | 97 | span: 24, |
88 | }, | 98 | }, |
89 | }); | 99 | }); |
90 | - | 100 | + const { createMessage } = useMessage(); |
101 | + const { error } = createMessage; | ||
91 | const update = ref(); | 102 | const update = ref(); |
92 | const status = ref(); | 103 | const status = ref(); |
104 | + const input1 = ref(); | ||
105 | + const input2 = ref(); | ||
106 | + const input3 = ref(); | ||
107 | + const id = ref(); | ||
93 | const [register, { setDrawerProps, closeDrawer }] = useDrawerInner((data) => { | 108 | const [register, { setDrawerProps, closeDrawer }] = useDrawerInner((data) => { |
94 | // 方式1 | 109 | // 方式1 |
95 | resetFields(); | 110 | resetFields(); |
96 | status.value = data.data.status; | 111 | status.value = data.data.status; |
112 | + id.value = data.data.id; | ||
113 | + input1.value = data.data.actualPayedAmount1; | ||
114 | + input2.value = data.data.actualPayedAmount2; | ||
115 | + input3.value = data.data.actualPayedAmount3; | ||
97 | setDrawerProps({ confirmLoading: false }); | 116 | setDrawerProps({ confirmLoading: false }); |
117 | + // 将金额格式化为两位小数 | ||
118 | + // setFieldsValue({ | ||
119 | + // actualPayedAmount1: | ||
120 | + // data.data.actualPayedAmount1 !== null ? data.data.actualPayedAmount1.toFixed(2) : undefined, | ||
121 | + // actualPayedAmount2: | ||
122 | + // data.data.actualPayedAmount2 !== null ? data.data.actualPayedAmount2.toFixed(2) : undefined, | ||
123 | + // actualPayedAmount3: | ||
124 | + // data.data.actualPayedAmount3 !== null ? data.data.actualPayedAmount3.toFixed(2) : undefined, | ||
125 | + // ...toRaw(data.data), // 其他字段 | ||
126 | + // }); | ||
98 | setFieldsValue({ | 127 | setFieldsValue({ |
99 | ...toRaw(data.data), | 128 | ...toRaw(data.data), |
100 | }); | 129 | }); |
@@ -103,16 +132,22 @@ | @@ -103,16 +132,22 @@ | ||
103 | }); | 132 | }); |
104 | //完成编辑 | 133 | //完成编辑 |
105 | async function handleSubmit() { | 134 | async function handleSubmit() { |
106 | - const values = await validate(); | ||
107 | - const updatedValues = { | ||
108 | - ...values, | ||
109 | - id: update.value.data.id, | ||
110 | - }; | ||
111 | - console.log(updatedValues, 56565); | ||
112 | - await updateAmountInfo({ | ||
113 | - ...updatedValues, | ||
114 | - }); | ||
115 | - emit('success'); | ||
116 | - closeDrawer(); | 135 | + // const values = await validate(); |
136 | + // const updatedValues = { | ||
137 | + // ...values, | ||
138 | + // id: update.value.data.id, | ||
139 | + // }; | ||
140 | + if (!input1.value || !input2.value || !input3.value) { | ||
141 | + error('选项不能为空'); | ||
142 | + } else { | ||
143 | + await updateAmountInfo({ | ||
144 | + id: id.value, | ||
145 | + actualPayedAmount1: input1.value, | ||
146 | + actualPayedAmount2: input2.value, | ||
147 | + actualPayedAmount3: input3.value, | ||
148 | + }); | ||
149 | + emit('success'); | ||
150 | + closeDrawer(); | ||
151 | + } | ||
117 | } | 152 | } |
118 | </script> | 153 | </script> |
src/views/project/finance/pay/index.vue
@@ -15,7 +15,7 @@ | @@ -15,7 +15,7 @@ | ||
15 | <CheckDetail @register="registerInvoiceDetail" /> | 15 | <CheckDetail @register="registerInvoiceDetail" /> |
16 | <DeductShow @register="registerDeductShow" /> | 16 | <DeductShow @register="registerDeductShow" /> |
17 | <InvoiceShow @register="registerInvoiceShow" /> | 17 | <InvoiceShow @register="registerInvoiceShow" /> |
18 | - <Commit @register="registerCommit" /> | 18 | + <Commit @register="registerCommit" @success="handleSuccess" /> |
19 | </template> | 19 | </template> |
20 | <template #bodyCell="{ column, record }"> | 20 | <template #bodyCell="{ column, record }"> |
21 | <template v-if="column.key === 'action'"> | 21 | <template v-if="column.key === 'action'"> |
src/views/project/finance/pay/pay.data.tsx
@@ -56,6 +56,9 @@ export const columns: BasicColumn[] = [ | @@ -56,6 +56,9 @@ export const columns: BasicColumn[] = [ | ||
56 | title: '生产科扣款金额¥', | 56 | title: '生产科扣款金额¥', |
57 | dataIndex: 'deductAmount', | 57 | dataIndex: 'deductAmount', |
58 | width: 160, | 58 | width: 160, |
59 | + // customRender: (column) => { | ||
60 | + // return column.record.deductAmount?.toFixed(2); | ||
61 | + // }, | ||
59 | }, | 62 | }, |
60 | { | 63 | { |
61 | title: '扣款责任部门', | 64 | title: '扣款责任部门', |
@@ -78,6 +81,9 @@ export const columns: BasicColumn[] = [ | @@ -78,6 +81,9 @@ export const columns: BasicColumn[] = [ | ||
78 | title: '生产科实际应付金额¥', | 81 | title: '生产科实际应付金额¥', |
79 | dataIndex: 'actualPayedAmount', | 82 | dataIndex: 'actualPayedAmount', |
80 | width: 180, | 83 | width: 180, |
84 | + // customRender: (column) => { | ||
85 | + // return column.record.actualPayedAmount?.toFixed(2); | ||
86 | + // }, | ||
81 | }, | 87 | }, |
82 | { | 88 | { |
83 | title: '生产科发票上传', | 89 | title: '生产科发票上传', |
@@ -95,16 +101,26 @@ export const columns: BasicColumn[] = [ | @@ -95,16 +101,26 @@ export const columns: BasicColumn[] = [ | ||
95 | title: '实际付款金额1¥', | 101 | title: '实际付款金额1¥', |
96 | dataIndex: 'actualPayedAmount1', | 102 | dataIndex: 'actualPayedAmount1', |
97 | width: 160, | 103 | width: 160, |
104 | + // customRender: (column) => { | ||
105 | + // console.log(column, '5656ccc'); | ||
106 | + // return column.record.actualPayedAmount1?.toFixed(2); | ||
107 | + // }, | ||
98 | }, | 108 | }, |
99 | { | 109 | { |
100 | title: '实际付款金额2¥', | 110 | title: '实际付款金额2¥', |
101 | dataIndex: 'actualPayedAmount2', | 111 | dataIndex: 'actualPayedAmount2', |
102 | width: 160, | 112 | width: 160, |
113 | + // customRender: (column) => { | ||
114 | + // return column.record.actualPayedAmount2?.toFixed(2); | ||
115 | + // }, | ||
103 | }, | 116 | }, |
104 | { | 117 | { |
105 | title: '实际付款金额3¥', | 118 | title: '实际付款金额3¥', |
106 | dataIndex: 'actualPayedAmount3', | 119 | dataIndex: 'actualPayedAmount3', |
107 | width: 160, | 120 | width: 160, |
121 | + // customRender: (column) => { | ||
122 | + // return column.record.actualPayedAmount3?.toFixed(2); | ||
123 | + // }, | ||
108 | }, | 124 | }, |
109 | { | 125 | { |
110 | title: '生产科发票审核', | 126 | title: '生产科发票审核', |
src/views/project/finance/receive/Commit.vue
@@ -25,6 +25,7 @@ | @@ -25,6 +25,7 @@ | ||
25 | const id = ref(); | 25 | const id = ref(); |
26 | const payee = ref(); | 26 | const payee = ref(); |
27 | const date = ref(); | 27 | const date = ref(); |
28 | + const emit = defineEmits(['success']); | ||
28 | 29 | ||
29 | const [register, { closeModal }] = useModalInner(async (data) => { | 30 | const [register, { closeModal }] = useModalInner(async (data) => { |
30 | id.value = data.data.id; | 31 | id.value = data.data.id; |
@@ -45,6 +46,7 @@ | @@ -45,6 +46,7 @@ | ||
45 | async function handleOk() { | 46 | async function handleOk() { |
46 | const formattedDate = formatDate(date.value); | 47 | const formattedDate = formatDate(date.value); |
47 | commit({ id: id.value, actualRefundDate: formattedDate, payee: payee.value }); | 48 | commit({ id: id.value, actualRefundDate: formattedDate, payee: payee.value }); |
49 | + emit('success'); | ||
48 | closeModal(); | 50 | closeModal(); |
49 | } | 51 | } |
50 | </script> | 52 | </script> |
src/views/project/finance/receive/DeductShow.vue
@@ -13,7 +13,20 @@ | @@ -13,7 +13,20 @@ | ||
13 | <a-list-item-meta> | 13 | <a-list-item-meta> |
14 | <template #title> | 14 | <template #title> |
15 | <!-- <a :href="item.url" target="_blank" rel="noopener noreferrer">{{ item.name }}</a> --> | 15 | <!-- <a :href="item.url" target="_blank" rel="noopener noreferrer">{{ item.name }}</a> --> |
16 | - <a @click="openPic(item.url)">{{ item.name }}</a> | 16 | + <!-- <a @click="openPic(item.url)">{{ item.name }}</a> --> |
17 | + <a | ||
18 | + v-if="isImageUrl(item.url)" | ||
19 | + @click="openPic(item.url)" | ||
20 | + style="display: flex; align-items: center" | ||
21 | + > | ||
22 | + <img | ||
23 | + :src="item.url" | ||
24 | + alt="Image" | ||
25 | + style="max-width: 150px; max-height: 150px; margin-right: 10px" | ||
26 | + /> | ||
27 | + {{ item.name }} | ||
28 | + </a> | ||
29 | + <a v-else @click="openPic(item.url)">{{ item.name }}</a> | ||
17 | </template> | 30 | </template> |
18 | </a-list-item-meta> | 31 | </a-list-item-meta> |
19 | </a-list-item> | 32 | </a-list-item> |
@@ -28,6 +41,7 @@ | @@ -28,6 +41,7 @@ | ||
28 | import { InboxOutlined } from '@ant-design/icons-vue'; | 41 | import { InboxOutlined } from '@ant-design/icons-vue'; |
29 | import { message } from 'ant-design-vue'; | 42 | import { message } from 'ant-design-vue'; |
30 | import { getInvoiceDeductUrlById } from '@/api/project/invoice'; | 43 | import { getInvoiceDeductUrlById } from '@/api/project/invoice'; |
44 | + import { view } from '@/utils/pdfShow'; | ||
31 | 45 | ||
32 | interface Item { | 46 | interface Item { |
33 | name: string; | 47 | name: string; |
@@ -54,15 +68,41 @@ | @@ -54,15 +68,41 @@ | ||
54 | itemArray.value = []; | 68 | itemArray.value = []; |
55 | closeModal(); | 69 | closeModal(); |
56 | } | 70 | } |
57 | - function openPic(url) { | ||
58 | - window.open('', '', '').document.write(`<!DOCTYPE html> | ||
59 | - <html> | ||
60 | - <body | ||
61 | - style="display: flex; | ||
62 | - justify-content: center; | ||
63 | - align-items: center;"> | ||
64 | - <img src='${url}' width="500px" height="500px"/> | ||
65 | - </body> | ||
66 | - </html>`); | 71 | + // function openPic(url) { |
72 | + // window.open('', '', '').document.write(`<!DOCTYPE html> | ||
73 | + // <html> | ||
74 | + // <body | ||
75 | + // style="display: flex; | ||
76 | + // justify-content: center; | ||
77 | + // align-items: center;"> | ||
78 | + // <img src='${url}' width="500px" height="500px"/> | ||
79 | + // </body> | ||
80 | + // </html>`); | ||
81 | + // } | ||
82 | + // 新增的函数:判断 URL 是否为图片格式 | ||
83 | + function isImageUrl(url: string): boolean { | ||
84 | + const imageExtensions = ['png', 'jpg', 'jpeg', 'gif', 'bmp', 'svg']; | ||
85 | + const baseUrl = url.split('?')[0]; | ||
86 | + return imageExtensions.some((ext) => baseUrl.toLowerCase().endsWith(ext)); | ||
87 | + } | ||
88 | + // 检查 URL 是否为 PDF 格式 | ||
89 | + function isPdfUrl(url: string): boolean { | ||
90 | + return url.toLowerCase().endsWith('.pdf'); | ||
91 | + } | ||
92 | + // 打开图片或 PDF | ||
93 | + function openPic(url: string) { | ||
94 | + const baseUrl = url.split('?')[0]; // 获取问号前的部分 | ||
95 | + if (isImageUrl(baseUrl)) { | ||
96 | + window.open('', '', '').document.write(`<!DOCTYPE html> | ||
97 | + <html> | ||
98 | + <body style="display: flex; justify-content: center; align-items: center;"> | ||
99 | + <img src='${url}' width="500px" height="500px"/> | ||
100 | + </body> | ||
101 | + </html>`); | ||
102 | + } else if (isPdfUrl(baseUrl)) { | ||
103 | + view(url); // 新标签页打开 PDF | ||
104 | + } else { | ||
105 | + console.log('不支持的文件类型'); | ||
106 | + } | ||
67 | } | 107 | } |
68 | </script> | 108 | </script> |
src/views/project/finance/receive/FinanceEdit.vue
@@ -12,9 +12,21 @@ | @@ -12,9 +12,21 @@ | ||
12 | showFooter | 12 | showFooter |
13 | :destroyOnClose="true" | 13 | :destroyOnClose="true" |
14 | > | 14 | > |
15 | - <div> | 15 | + <!-- <div> |
16 | <BasicForm @register="registerForm" /> | 16 | <BasicForm @register="registerForm" /> |
17 | - </div> | 17 | + </div> --> |
18 | + <div style="font-size: 15px">实际应收金额1$</div> | ||
19 | + <a-input v-model:value="input1" placeholder="请输入" :disabled="status === 10" auto-size /> | ||
20 | + <div style="margin: 16px 0"></div> | ||
21 | + <div style="font-size: 15px">实际应收金额2$</div> | ||
22 | + <a-input v-model:value="input2" placeholder="请输入" :disabled="status === 10" auto-size /> | ||
23 | + <div style="margin: 16px 0"></div> | ||
24 | + <div style="font-size: 15px">实际应收金额3$</div> | ||
25 | + <a-input v-model:value="input3" placeholder="请输入" :disabled="status === 10" auto-size /> | ||
26 | + <div style="margin: 16px 0"></div> | ||
27 | + <div style="font-size: 15px">其他费用金额$</div> | ||
28 | + <a-input v-model:value="input4" placeholder="请输入" :disabled="status === 10" auto-size /> | ||
29 | + <div style="margin: 16px 0"></div> | ||
18 | 30 | ||
19 | <!-- <template #titleToolbar> <a-button type="primary"> 申请编辑权限 </a-button></template> --> | 31 | <!-- <template #titleToolbar> <a-button type="primary"> 申请编辑权限 </a-button></template> --> |
20 | <template #appendFooter> | 32 | <template #appendFooter> |
@@ -29,6 +41,7 @@ | @@ -29,6 +41,7 @@ | ||
29 | import { defineComponent, ref, computed, unref, toRaw, reactive } from 'vue'; | 41 | import { defineComponent, ref, computed, unref, toRaw, reactive } from 'vue'; |
30 | import { getEmailList } from '/@/api/sys/config'; | 42 | import { getEmailList } from '/@/api/sys/config'; |
31 | import { updateAmount } from '@/api/project/invoice'; | 43 | import { updateAmount } from '@/api/project/invoice'; |
44 | + import { useMessage } from '/@/hooks/web/useMessage'; | ||
32 | 45 | ||
33 | const emit = defineEmits(['success']); | 46 | const emit = defineEmits(['success']); |
34 | const schemas: FormSchema[] = [ | 47 | const schemas: FormSchema[] = [ |
@@ -99,15 +112,28 @@ | @@ -99,15 +112,28 @@ | ||
99 | span: 24, | 112 | span: 24, |
100 | }, | 113 | }, |
101 | }); | 114 | }); |
115 | + const { createMessage } = useMessage(); | ||
116 | + const { error } = createMessage; | ||
102 | 117 | ||
103 | const update = ref(); | 118 | const update = ref(); |
104 | const status = ref(); | 119 | const status = ref(); |
120 | + | ||
121 | + const input1 = ref(); | ||
122 | + const input2 = ref(); | ||
123 | + const input3 = ref(); | ||
124 | + const input4 = ref(); | ||
125 | + const id = ref(); | ||
105 | const [register, { setDrawerProps, closeDrawer }] = useDrawerInner((data) => { | 126 | const [register, { setDrawerProps, closeDrawer }] = useDrawerInner((data) => { |
106 | // 方式1 | 127 | // 方式1 |
107 | - console.log(data, '56565dataaa'); | ||
108 | status.value = data.data.status; | 128 | status.value = data.data.status; |
129 | + id.value = data.data.id; | ||
130 | + input1.value = data.data.actualPayedAmount1; | ||
131 | + input2.value = data.data.actualPayedAmount2; | ||
132 | + input3.value = data.data.actualPayedAmount3; | ||
133 | + input4.value = data.data.otherAmount; | ||
109 | resetFields(); | 134 | resetFields(); |
110 | setDrawerProps({ confirmLoading: false }); | 135 | setDrawerProps({ confirmLoading: false }); |
136 | + console.log(data, '5656666dd'); | ||
111 | setFieldsValue({ | 137 | setFieldsValue({ |
112 | ...toRaw(data.data), | 138 | ...toRaw(data.data), |
113 | }); | 139 | }); |
@@ -115,16 +141,24 @@ | @@ -115,16 +141,24 @@ | ||
115 | }); | 141 | }); |
116 | //完成编辑 | 142 | //完成编辑 |
117 | async function handleSubmit() { | 143 | async function handleSubmit() { |
118 | - const values = await validate(); | ||
119 | - const updatedValues = { | ||
120 | - ...values, | ||
121 | - id: update.value.data.id, | ||
122 | - bgUrl: update.value.data.bgUrl, | ||
123 | - }; | ||
124 | - await updateAmount({ | ||
125 | - ...updatedValues, | ||
126 | - }); | ||
127 | - emit('success'); | ||
128 | - closeDrawer(); | 144 | + // const values = await validate(); |
145 | + // const updatedValues = { | ||
146 | + // ...values, | ||
147 | + // id: update.value.data.id, | ||
148 | + // bgUrl: update.value.data.bgUrl, | ||
149 | + // }; | ||
150 | + if (!input1.value || !input2.value || !input3.value || !input4.value) { | ||
151 | + error('选项不能为空'); | ||
152 | + } else { | ||
153 | + await updateAmount({ | ||
154 | + id: id.value, | ||
155 | + actualPayedAmount1: input1.value, | ||
156 | + actualPayedAmount2: input2.value, | ||
157 | + actualPayedAmount3: input3.value, | ||
158 | + otherAmount: input4.value, | ||
159 | + }); | ||
160 | + emit('success'); | ||
161 | + closeDrawer(); | ||
162 | + } | ||
129 | } | 163 | } |
130 | </script> | 164 | </script> |
src/views/project/finance/receive/InvoiceAnalysis.vue
@@ -41,31 +41,50 @@ | @@ -41,31 +41,50 @@ | ||
41 | title: '客户总金额汇总$', | 41 | title: '客户总金额汇总$', |
42 | dataIndex: 'customerTotalPrice', | 42 | dataIndex: 'customerTotalPrice', |
43 | width: 50, | 43 | width: 50, |
44 | + customRender: (res) => { | ||
45 | + console.log(res, '5656analres'); | ||
46 | + return res.record.exportVOS[0].customerTotalPrice.toFixed(2); | ||
47 | + }, | ||
44 | }, | 48 | }, |
45 | { | 49 | { |
46 | title: '客户扣款金额汇总$', | 50 | title: '客户扣款金额汇总$', |
47 | dataIndex: 'deductAmount', | 51 | dataIndex: 'deductAmount', |
48 | width: 50, | 52 | width: 50, |
53 | + customRender: (res) => { | ||
54 | + return res.record.exportVOS[0].deductAmount.toFixed(2); | ||
55 | + }, | ||
49 | }, | 56 | }, |
50 | { | 57 | { |
51 | title: '实际应收款$', | 58 | title: '实际应收款$', |
52 | - dataIndex: 'otherAmount', | 59 | + dataIndex: 'actualReceivableAmount', |
53 | width: 50, | 60 | width: 50, |
61 | + customRender: (res) => { | ||
62 | + return res.record.exportVOS[0].actualReceivableAmount.toFixed(2); | ||
63 | + }, | ||
54 | }, | 64 | }, |
55 | { | 65 | { |
56 | title: '实际收款金额汇总$', | 66 | title: '实际收款金额汇总$', |
57 | - dataIndex: 'actualReceivableAmount', | 67 | + dataIndex: 'actualPayedAmount', |
58 | width: 50, | 68 | width: 50, |
69 | + customRender: (res) => { | ||
70 | + return res.record.exportVOS[0].actualPayedAmount.toFixed(2); | ||
71 | + }, | ||
59 | }, | 72 | }, |
60 | { | 73 | { |
61 | title: '其他费用金额汇总$', | 74 | title: '其他费用金额汇总$', |
62 | - dataIndex: 'otherTotalAmount', | 75 | + dataIndex: 'otherAmount', |
63 | width: 50, | 76 | width: 50, |
77 | + customRender: (res) => { | ||
78 | + return res.record.exportVOS[0].otherAmount.toFixed(2); | ||
79 | + }, | ||
64 | }, | 80 | }, |
65 | { | 81 | { |
66 | title: '未收金额合计$', | 82 | title: '未收金额合计$', |
67 | - dataIndex: 'actualPayedAmount', | 83 | + dataIndex: 'otherTotalAmount', |
68 | width: 50, | 84 | width: 50, |
85 | + customRender: (res) => { | ||
86 | + return res.record.exportVOS[0].otherTotalAmount.toFixed(2); | ||
87 | + }, | ||
69 | }, | 88 | }, |
70 | ]; | 89 | ]; |
71 | // const ids = ref<number[]>([]); | 90 | // const ids = ref<number[]>([]); |
src/views/project/finance/receive/TrackEdit.vue
@@ -86,10 +86,10 @@ | @@ -86,10 +86,10 @@ | ||
86 | } | 86 | } |
87 | function handleShow() { | 87 | function handleShow() { |
88 | // if (!visible) { | 88 | // if (!visible) { |
89 | - input1.value = 0; | ||
90 | - deductUrl.value = ''; | ||
91 | - updateDeductUrl.value = ''; | ||
92 | - fileList.value = []; | 89 | + // input1.value = 0; |
90 | + // deductUrl.value = ''; | ||
91 | + // updateDeductUrl.value = ''; | ||
92 | + // fileList.value = []; | ||
93 | // } | 93 | // } |
94 | // input1.value = ''; | 94 | // input1.value = ''; |
95 | // deductUrl.value = ''; | 95 | // deductUrl.value = ''; |
src/views/project/finance/receive/index.vue
@@ -13,7 +13,7 @@ | @@ -13,7 +13,7 @@ | ||
13 | <TrackEdit @register="registerTrackEdit" @success="handleSuccess" /> | 13 | <TrackEdit @register="registerTrackEdit" @success="handleSuccess" /> |
14 | <InvoiceDetail @register="registerInvoiceDetail" /> | 14 | <InvoiceDetail @register="registerInvoiceDetail" /> |
15 | <DeductShow @register="registerDeductShow" /> | 15 | <DeductShow @register="registerDeductShow" /> |
16 | - <Commit @register="registerCommit" /> | 16 | + <Commit @register="registerCommit" @success="handleSuccess" /> |
17 | <ReUploadBgUrl @register="registerReUploadBgUrl" /> | 17 | <ReUploadBgUrl @register="registerReUploadBgUrl" /> |
18 | </template> | 18 | </template> |
19 | <template #bodyCell="{ column, record }"> | 19 | <template #bodyCell="{ column, record }"> |
src/views/project/finance/receive/receive.data.tsx
@@ -62,6 +62,9 @@ export const columns: BasicColumn[] = [ | @@ -62,6 +62,9 @@ export const columns: BasicColumn[] = [ | ||
62 | title: '发生扣款金额$', | 62 | title: '发生扣款金额$', |
63 | dataIndex: 'deductAmount', | 63 | dataIndex: 'deductAmount', |
64 | width: 120, | 64 | width: 120, |
65 | + // customRender: (column) => { | ||
66 | + // return column.record.deductAmount?.toFixed(2); | ||
67 | + // }, | ||
65 | }, | 68 | }, |
66 | { | 69 | { |
67 | title: '上传扣款单', | 70 | title: '上传扣款单', |
@@ -80,26 +83,41 @@ export const columns: BasicColumn[] = [ | @@ -80,26 +83,41 @@ export const columns: BasicColumn[] = [ | ||
80 | title: '实际应收金额$', | 83 | title: '实际应收金额$', |
81 | dataIndex: 'actualReceivableAmount', | 84 | dataIndex: 'actualReceivableAmount', |
82 | width: 120, | 85 | width: 120, |
86 | + // customRender: (column) => { | ||
87 | + // return column.record.actualReceivableAmount?.toFixed(2); | ||
88 | + // }, | ||
83 | }, | 89 | }, |
84 | { | 90 | { |
85 | title: '实际收款金额1$', | 91 | title: '实际收款金额1$', |
86 | dataIndex: 'actualPayedAmount1', | 92 | dataIndex: 'actualPayedAmount1', |
87 | width: 120, | 93 | width: 120, |
94 | + // customRender: (column) => { | ||
95 | + // return column.record.actualPayedAmount1?.toFixed(2); | ||
96 | + // }, | ||
88 | }, | 97 | }, |
89 | { | 98 | { |
90 | title: '实际收款金额2$', | 99 | title: '实际收款金额2$', |
91 | dataIndex: 'actualPayedAmount2', | 100 | dataIndex: 'actualPayedAmount2', |
92 | width: 120, | 101 | width: 120, |
102 | + // customRender: (column) => { | ||
103 | + // return column.record.actualPayedAmount2?.toFixed(2); | ||
104 | + // }, | ||
93 | }, | 105 | }, |
94 | { | 106 | { |
95 | title: '实际收款金额3$', | 107 | title: '实际收款金额3$', |
96 | dataIndex: 'actualPayedAmount3', | 108 | dataIndex: 'actualPayedAmount3', |
97 | width: 120, | 109 | width: 120, |
110 | + // customRender: (column) => { | ||
111 | + // return column.record.actualPayedAmount3?.toFixed(2); | ||
112 | + // }, | ||
98 | }, | 113 | }, |
99 | { | 114 | { |
100 | title: '其他费用$', | 115 | title: '其他费用$', |
101 | dataIndex: 'otherAmount', | 116 | dataIndex: 'otherAmount', |
102 | width: 120, | 117 | width: 120, |
118 | + // customRender: (column) => { | ||
119 | + // return column.record.otherAmount?.toFixed(2); | ||
120 | + // }, | ||
103 | }, | 121 | }, |
104 | { | 122 | { |
105 | title: '总经理审核', | 123 | title: '总经理审核', |
@@ -124,39 +142,56 @@ export const columnsAnalysis: BasicColumn[] = [ | @@ -124,39 +142,56 @@ export const columnsAnalysis: BasicColumn[] = [ | ||
124 | title: '实际应付金额总计$', | 142 | title: '实际应付金额总计$', |
125 | dataIndex: 'actualPayedAmount', | 143 | dataIndex: 'actualPayedAmount', |
126 | width: 50, | 144 | width: 50, |
127 | - // customRender: (column) => { | ||
128 | - // console.log(column, 5656666); | ||
129 | - // return 1; | ||
130 | - // }, | 145 | + customRender: (column) => { |
146 | + return column.record.actualPayedAmount?.toFixed(2); | ||
147 | + }, | ||
131 | }, | 148 | }, |
132 | { | 149 | { |
133 | title: '实际应收金额总计$', | 150 | title: '实际应收金额总计$', |
134 | dataIndex: 'actualReceivableAmount', | 151 | dataIndex: 'actualReceivableAmount', |
135 | width: 50, | 152 | width: 50, |
153 | + customRender: (column) => { | ||
154 | + return column.record.actualReceivableAmount?.toFixed(2); | ||
155 | + }, | ||
136 | }, | 156 | }, |
137 | { | 157 | { |
138 | title: '客户总价$', | 158 | title: '客户总价$', |
139 | dataIndex: 'customerTotalPrice', | 159 | dataIndex: 'customerTotalPrice', |
140 | width: 50, | 160 | width: 50, |
161 | + customRender: (column) => { | ||
162 | + return column.record.customerTotalPrice?.toFixed(2); | ||
163 | + }, | ||
141 | }, | 164 | }, |
142 | { | 165 | { |
143 | title: '发生扣款金额总计$', | 166 | title: '发生扣款金额总计$', |
144 | dataIndex: 'deductAmount', | 167 | dataIndex: 'deductAmount', |
145 | width: 50, | 168 | width: 50, |
169 | + customRender: (column) => { | ||
170 | + return column.record.deductAmount?.toFixed(2); | ||
171 | + }, | ||
146 | }, | 172 | }, |
147 | { | 173 | { |
148 | title: '实际应收金额总计$', | 174 | title: '实际应收金额总计$', |
149 | dataIndex: 'actualReceivableAmount', | 175 | dataIndex: 'actualReceivableAmount', |
150 | width: 50, | 176 | width: 50, |
177 | + customRender: (column) => { | ||
178 | + return column.record.actualReceivableAmount?.toFixed(2); | ||
179 | + }, | ||
151 | }, | 180 | }, |
152 | { | 181 | { |
153 | title: '实际应收$', | 182 | title: '实际应收$', |
154 | dataIndex: 'otherAmount', | 183 | dataIndex: 'otherAmount', |
155 | width: 50, | 184 | width: 50, |
185 | + customRender: (column) => { | ||
186 | + return column.record.otherAmount?.toFixed(2); | ||
187 | + }, | ||
156 | }, | 188 | }, |
157 | { | 189 | { |
158 | title: '其他费用金额汇总$', | 190 | title: '其他费用金额汇总$', |
159 | dataIndex: 'otherTotalAmount', | 191 | dataIndex: 'otherTotalAmount', |
160 | width: 50, | 192 | width: 50, |
193 | + customRender: (column) => { | ||
194 | + return column.record.otherTotalAmount?.toFixed(2); | ||
195 | + }, | ||
161 | }, | 196 | }, |
162 | ]; | 197 | ]; |
vite.config.ts
@@ -21,14 +21,14 @@ export default defineApplicationConfig({ | @@ -21,14 +21,14 @@ export default defineApplicationConfig({ | ||
21 | }, | 21 | }, |
22 | server: { | 22 | server: { |
23 | proxy: { | 23 | proxy: { |
24 | - // '/aliyun-oss-pdf': { | ||
25 | - // target: VITE_ALIYUN_OSS_DOMAIN, | ||
26 | - // changeOrigin: true, | ||
27 | - // secure: true, // 确保使用 HTTPS | ||
28 | - // rewrite(path) { | ||
29 | - // return path.replace(/^\/aliyun-oss-pdf/, ''); | ||
30 | - // }, | ||
31 | - // }, | 24 | + '/aliyun-oss-pdf': { |
25 | + target: 'https://test-alterego.oss-cn-qingdao.aliyuncs.com', | ||
26 | + changeOrigin: true, | ||
27 | + secure: true, // 确保使用 HTTPS | ||
28 | + rewrite(path) { | ||
29 | + return path.replace(/^\/aliyun-oss-pdf/, ''); | ||
30 | + }, | ||
31 | + }, | ||
32 | '/basic-api/order': { | 32 | '/basic-api/order': { |
33 | target: 'http://47.104.8.35:18001', | 33 | target: 'http://47.104.8.35:18001', |
34 | // target: 'http://localhost:8001', | 34 | // target: 'http://localhost:8001', |