Commit 941b03f35786001859399cb6dc728f0bd6684c11
Merge branch 'zwl-develop' into 'develop'
fix: 补充功能 See merge request !27
Showing
6 changed files
with
135 additions
and
52 deletions
src/views/project/finance/financeProfit/ProductProfit/InnerData/tableData.tsx
... | ... | @@ -73,6 +73,7 @@ export const EDIT_INFO = [ |
73 | 73 | rules: [{ required: true }], |
74 | 74 | }, |
75 | 75 | ]; |
76 | +// 以下为明细表字段审核详情中的申请字段,用于回显 | |
76 | 77 | export const APPLY_INFO = [ |
77 | 78 | { |
78 | 79 | field: 'packetActualRmbTotalPrice', |
... | ... | @@ -89,6 +90,20 @@ export const APPLY_INFO = [ |
89 | 90 | rules: [{ required: true }], |
90 | 91 | }, |
91 | 92 | { |
93 | + field: 'paidRmbCommission', | |
94 | + component: 'Select', | |
95 | + labelWidth: 150, | |
96 | + label: '中国团队已发提成', | |
97 | + rules: [{ required: true }], | |
98 | + }, | |
99 | + { | |
100 | + field: 'spainPaidRmbCommission', | |
101 | + component: 'Select', | |
102 | + labelWidth: 150, | |
103 | + label: '西班牙团队已发提成', | |
104 | + rules: [{ required: true }], | |
105 | + }, | |
106 | + { | |
92 | 107 | field: 'issuedCommission', |
93 | 108 | component: 'Select', |
94 | 109 | labelWidth: 150, | ... | ... |
src/views/project/finance/financeProfit/ProductProfit/InnerProduce/FinanceEdit.vue
... | ... | @@ -208,7 +208,7 @@ |
208 | 208 | if (loading.value) return; |
209 | 209 | loading.value = true; |
210 | 210 | setDrawerProps({ confirmLoading: true }); |
211 | - if (!input1.value || !input2.value || !input3.value) { | |
211 | + if (!input3.value || !input4.value) { | |
212 | 212 | error('选项不能为空'); |
213 | 213 | loading.value = false; |
214 | 214 | setDrawerProps({ confirmLoading: false }); | ... | ... |
src/views/project/finance/financeProfit/ServiceProfit/PackageProfit/data.tsx
... | ... | @@ -92,24 +92,11 @@ export const searchFormSchema = [ |
92 | 92 | label: '待审核', |
93 | 93 | value: 0, |
94 | 94 | }, { |
95 | - label: '已完成', | |
96 | - value: 1, | |
97 | - }], | |
98 | - }, | |
99 | - }, | |
100 | - { | |
101 | - field: 'orderCommissionStatus', | |
102 | - label: '提成发放状态', | |
103 | - component: 'Select', | |
104 | - colProps: { span: 8 }, | |
105 | - | |
106 | - componentProps: { | |
107 | - options: [ { | |
108 | - label: '未发放', | |
109 | - value: -1, | |
110 | - },{ | |
111 | 95 | label: '已发放', |
112 | - value: 0, | |
96 | + value: 1, | |
97 | + }, { | |
98 | + label: '应发但不发', | |
99 | + value: 2, | |
113 | 100 | }], |
114 | 101 | }, |
115 | 102 | }, |
... | ... | @@ -252,18 +239,6 @@ export const COLUMNS = [ |
252 | 239 | }, |
253 | 240 | }, |
254 | 241 | { |
255 | - title: '提成发放状态', | |
256 | - dataIndex: 'orderCommissionStatus', | |
257 | - width: 120, | |
258 | - customRender: (column) => { | |
259 | - if (column.record?.orderCommissionStatus === null || column.record?.orderCommissionStatus === -1) { | |
260 | - return '未发放'; | |
261 | - } else if (column.record?.orderCommissionStatus === 0) { | |
262 | - return '已发放'; | |
263 | - } | |
264 | - }, | |
265 | - }, | |
266 | - { | |
267 | 242 | title: '备注', |
268 | 243 | dataIndex: 'packNotes', |
269 | 244 | width: 200, |
... | ... | @@ -278,7 +253,9 @@ export const COLUMNS = [ |
278 | 253 | } else if (column.record?.packStatus === 0) { |
279 | 254 | return '待审核'; |
280 | 255 | } else if (column.record?.packStatus === 1) { |
281 | - return '已审核'; | |
256 | + return '已发放'; | |
257 | + } else if (column.record?.packStatus === 2) { | |
258 | + return '应发但不发'; | |
282 | 259 | } |
283 | 260 | }, |
284 | 261 | }, | ... | ... |
src/views/project/finance/financeProfit/ServiceProfit/PackageProfit/index.vue
... | ... | @@ -80,7 +80,8 @@ |
80 | 80 | import { searchFormSchema, COLUMNS, allProjectNoOptions } from './data'; |
81 | 81 | import { BasicModal, useModal } from '/@/components/Modal'; |
82 | 82 | import { useMessage } from '/@/hooks/web/useMessage'; |
83 | - import { onMounted, ref, computed } from 'vue'; | |
83 | + import { onMounted, ref, computed, h } from 'vue'; | |
84 | + import { Modal } from 'ant-design-vue'; | |
84 | 85 | import { useDrawer } from '/@/components/Drawer'; |
85 | 86 | import FinanceEdit from './FinanceEdit.vue'; |
86 | 87 | import CheckDetail from './CheckDetail.vue'; |
... | ... | @@ -223,14 +224,15 @@ |
223 | 224 | ...(role.value === ROLE.ADMIN ? [ |
224 | 225 | { |
225 | 226 | label: '审核通过', |
226 | - popConfirm: { | |
227 | - title: '确认审核?', | |
228 | - confirm: () => { | |
229 | - if (record.packStatus === 0) { | |
230 | - handleStatus(record, true); | |
231 | - } | |
227 | + onClick: () => { | |
228 | + // 如果状态为未完成(-1),则不响应 | |
229 | + if (record.packStatus === -1) { | |
230 | + createMessage.warning('请先完成财务编辑'); | |
232 | 231 | return; |
233 | - }, | |
232 | + } | |
233 | + else{ | |
234 | + showAuditOptions(record); | |
235 | + } | |
234 | 236 | }, |
235 | 237 | }, |
236 | 238 | ] : []), |
... | ... | @@ -258,10 +260,6 @@ |
258 | 260 | label: '历史记录', |
259 | 261 | onClick: handleHistoryDetail.bind(null, record), |
260 | 262 | }, |
261 | - { | |
262 | - label: '设置为已发提成', | |
263 | - onClick: () => handleSetCommissionStatusSingle(record), | |
264 | - }, | |
265 | 263 | ]; |
266 | 264 | return actions; |
267 | 265 | } |
... | ... | @@ -312,12 +310,94 @@ |
312 | 310 | |
313 | 311 | async function handleStatus(record, status) { |
314 | 312 | try { |
315 | - await setPackStatus({ orderId: record.orderId }); | |
313 | + // 检查必要参数是否存在 | |
314 | + if (!record.orderId) { | |
315 | + createMessage.error('缺少必要的参数:orderId'); | |
316 | + return; | |
317 | + } | |
318 | + | |
319 | + // 根据不同的状态调用不同的接口 | |
320 | + if (status === 'approved') { | |
321 | + await setPackStatus({ | |
322 | + orderId: record.orderId, | |
323 | + packStatus: 1 // 已发放状态 | |
324 | + }); | |
325 | + createMessage.success('设置为已发放成功!'); | |
326 | + } else if (status === 'sentButNotPaid') { | |
327 | + await setPackStatus({ | |
328 | + orderId: record.orderId, | |
329 | + packStatus: 2 // 应发但不发状态 | |
330 | + }); | |
331 | + createMessage.success('设置为应发但不发成功!'); | |
332 | + } else { | |
333 | + // 默认已发放 | |
334 | + await setPackStatus({ | |
335 | + orderId: record.orderId, | |
336 | + packStatus: 1 // 默认已发放状态 | |
337 | + }); | |
338 | + createMessage.success('状态更新成功!'); | |
339 | + } | |
340 | + | |
316 | 341 | reload(); |
317 | 342 | } catch (error) { |
318 | - console.error(error); | |
343 | + console.error('Error updating status:', error); | |
344 | + createMessage.error('状态更新失败:' + (error.message || '未知错误')); | |
319 | 345 | } |
320 | 346 | } |
347 | + | |
348 | + // 显示审核选项 | |
349 | + function showAuditOptions(record) { | |
350 | + // 检查当前状态 | |
351 | + const isReviewed = record.packStatus === 1; // 已发放状态 | |
352 | + const isSentButNotPaid = record.packStatus === 2; // 应发但不发状态 | |
353 | + const hasCommission = record.copyCommission; // 是否有提成配置 | |
354 | + | |
355 | + // 使用 Modal 显示选项 | |
356 | + Modal.confirm({ | |
357 | + title: '选择审核结果', | |
358 | + content: h('div', [ | |
359 | + h('div', { style: 'margin-top: 16px;' }, [ | |
360 | + // 已发放按钮 | |
361 | + h('button', { | |
362 | + style: isReviewed | |
363 | + ? 'margin-right: 8px; padding: 4px 8px; color: #666; background-color: #f5f5f5; border-radius: 2px; cursor: not-allowed; border: 1px solid #d9d9d9;' | |
364 | + : 'margin-right: 8px; padding: 4px 8px; color: white; background-color: #40a9ff; border-radius: 2px; cursor: pointer;', | |
365 | + disabled: isReviewed, // 如果已发放则禁用 | |
366 | + onClick: () => { | |
367 | + if (!isReviewed) { | |
368 | + if (hasCommission) { | |
369 | + Modal.destroyAll(); | |
370 | + handleStatus(record, 'approved'); // 已发放 | |
371 | + } else { | |
372 | + createMessage.error('请先在系统中配置包装提成金额'); | |
373 | + } | |
374 | + } | |
375 | + } | |
376 | + }, isReviewed ? '已发放' : '已发放'), | |
377 | + // 应发但不发按钮 | |
378 | + h('button', { | |
379 | + style: (isReviewed || isSentButNotPaid) | |
380 | + ? 'margin-right: 8px; padding: 4px 8px; color: #666; background-color: #f5f5f5; border-radius: 2px; cursor: not-allowed; border: 1px solid #d9d9d9;' | |
381 | + : 'margin-right: 8px; padding: 4px 8px; color: white; background-color: #40a9ff; border-radius: 2px; cursor: pointer;', | |
382 | + disabled: isReviewed || isSentButNotPaid, // 如果已发放或应发但不发则禁用 | |
383 | + onClick: () => { | |
384 | + if (!isReviewed && !isSentButNotPaid) { | |
385 | + if (hasCommission) { | |
386 | + Modal.destroyAll(); | |
387 | + handleStatus(record, 'sentButNotPaid'); // 应发但不发 | |
388 | + } else { | |
389 | + createMessage.error('请先在系统中配置包装提成金额'); | |
390 | + } | |
391 | + } | |
392 | + } | |
393 | + }, (isReviewed || isSentButNotPaid) ? '应发但不发' : '应发但不发'), | |
394 | + ]) | |
395 | + ]), | |
396 | + onCancel: () => { | |
397 | + Modal.destroyAll(); | |
398 | + } | |
399 | + }); | |
400 | + } | |
321 | 401 | |
322 | 402 | function handleHistoryDetail(record) { |
323 | 403 | openHistoryDetail(true, { |
... | ... | @@ -574,12 +654,16 @@ |
574 | 654 | } |
575 | 655 | |
576 | 656 | const handleSetCommissionStatusSingle = async (record) => { |
577 | - try { | |
578 | - await setCommissionStatus({ orderId: record.orderId }); | |
579 | - createMessage.success('设置成功'); | |
580 | - reload(); | |
581 | - } catch (e) { | |
582 | - createMessage.error('设置失败'); | |
657 | + if(record.copyCommission){ | |
658 | + try { | |
659 | + await setCommissionStatus({ orderId: record.orderId }); | |
660 | + createMessage.success('设置成功'); | |
661 | + reload(); | |
662 | + } catch (e) { | |
663 | + createMessage.error('设置失败'); | |
664 | + } | |
665 | + }else{ | |
666 | + error('请先在系统中配置包装提成金额'); | |
583 | 667 | } |
584 | 668 | }; |
585 | 669 | ... | ... |
src/views/project/finance/financeProfit/ServiceProfit/ServiceProfit/FinanceEdit.vue
... | ... | @@ -231,7 +231,7 @@ |
231 | 231 | // id: update.value.data.id, |
232 | 232 | // bgUrl: update.value.data.bgUrl, |
233 | 233 | // }; |
234 | - if (!input1.value || !input2.value || !input3.value || !input4.value) { | |
234 | + if (!input1.value || !input2.value || !input3.value || !input4.value || !input5.value) { | |
235 | 235 | error('选项不能为空'); |
236 | 236 | loading.value = false; |
237 | 237 | setDrawerProps({ confirmLoading: false }); | ... | ... |
src/views/project/order/InvoiceCreate.vue
... | ... | @@ -21,6 +21,7 @@ |
21 | 21 | :max-count="1" |
22 | 22 | :action="uploadUrl" |
23 | 23 | @change="handleChange" |
24 | + @preview="openPic" | |
24 | 25 | > |
25 | 26 | <a-button> 上传报关单 </a-button> |
26 | 27 | </a-upload> |
... | ... | @@ -85,6 +86,7 @@ |
85 | 86 | } |
86 | 87 | function handleChange(info) { |
87 | 88 | if (info.file.status == 'done') { |
89 | + info.file.url = info.file.response.data.fileUrl; // 确保 onPreview 能拿到 url | |
88 | 90 | bgUrl.value = info.file.response.data.fileUrl; |
89 | 91 | } |
90 | 92 | } |
... | ... | @@ -97,4 +99,9 @@ |
97 | 99 | fileList.value = []; |
98 | 100 | } |
99 | 101 | } |
102 | + function openPic(file) { | |
103 | + const url = file.url || file.thumbUrl; | |
104 | + if (!url) return; | |
105 | + window.open(url, '_blank'); | |
106 | +} | |
100 | 107 | </script> | ... | ... |