Commit 941b03f35786001859399cb6dc728f0bd6684c11

Authored by
2 parents 8524ad17 a4ffebc4

Merge branch 'zwl-develop' into 'develop'

fix: 补充功能



See merge request !27
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>
... ...