Commit 052b61de6086a863f5a7f9085d8b2399c2b2fa72
1 parent
e3479f50
feat: update 供应商复制信息功能,申请修改订单
Showing
6 changed files
with
333 additions
and
96 deletions
src/pages/Order/components/CheckModal.tsx
@@ -326,20 +326,6 @@ export default ({ | @@ -326,20 +326,6 @@ export default ({ | ||
326 | } | 326 | } |
327 | } | 327 | } |
328 | 328 | ||
329 | - /** | ||
330 | - * | ||
331 | - * @param body 后置审核 | ||
332 | - */ | ||
333 | - async function doPostAudit(body: object) { | ||
334 | - const data = await postServiceOrderAudit({ | ||
335 | - data: body, | ||
336 | - }); | ||
337 | - if (data.result === RESPONSE_CODE.SUCCESS) { | ||
338 | - message.success(data.message); | ||
339 | - onClose(); | ||
340 | - } | ||
341 | - } | ||
342 | - | ||
343 | return ( | 329 | return ( |
344 | <> | 330 | <> |
345 | <ModalForm<{ | 331 | <ModalForm<{ |
@@ -366,16 +352,6 @@ export default ({ | @@ -366,16 +352,6 @@ export default ({ | ||
366 | <Button | 352 | <Button |
367 | key="驳回" | 353 | key="驳回" |
368 | onClick={async () => { | 354 | onClick={async () => { |
369 | - if (checkType(CHECK_TYPE.WEARHOUSE_KEEPER)) { | ||
370 | - doCheck({ | ||
371 | - pass: false, | ||
372 | - subOrderIds: subOrderIds, | ||
373 | - type: 'warehouse_audit', | ||
374 | - notes: form.getFieldValue('name'), | ||
375 | - }); | ||
376 | - return; | ||
377 | - } | ||
378 | - | ||
379 | if (checkType(CHECK_TYPE.AFTER_SALES)) { | 355 | if (checkType(CHECK_TYPE.AFTER_SALES)) { |
380 | doAfterSalesCheck({ | 356 | doAfterSalesCheck({ |
381 | applyType: 'after-sales', | 357 | applyType: 'after-sales', |
@@ -411,14 +387,25 @@ export default ({ | @@ -411,14 +387,25 @@ export default ({ | ||
411 | return; | 387 | return; |
412 | } | 388 | } |
413 | 389 | ||
390 | + let type = ''; | ||
391 | + if (checkType(CHECK_TYPE.WEARHOUSE_KEEPER)) { | ||
392 | + type = 'warehouse_audit'; | ||
393 | + } | ||
414 | if (checkType(CHECK_TYPE.WAITING_FOR_POST_AUDIT)) { | 394 | if (checkType(CHECK_TYPE.WAITING_FOR_POST_AUDIT)) { |
415 | - return doPostAudit({ | ||
416 | - pass: false, | ||
417 | - notes: form.getFieldValue('name'), | ||
418 | - type: 'post_audit', | ||
419 | - subOrderIds: subOrderIds, | ||
420 | - }); | 395 | + type = 'post_audit'; |
396 | + } | ||
397 | + if (checkType(CHECK_TYPE.NODE_OPERATING_AUDIT)) { | ||
398 | + type = 'node_operating_audit'; | ||
421 | } | 399 | } |
400 | + if (checkType(CHECK_TYPE.MODIFY_LEADER_AUDIT)) { | ||
401 | + type = 'modify_leader_audit'; | ||
402 | + } | ||
403 | + doCheck({ | ||
404 | + pass: false, | ||
405 | + subOrderIds: subOrderIds, | ||
406 | + type: type, | ||
407 | + notes: form.getFieldValue('name'), | ||
408 | + }); | ||
422 | }} | 409 | }} |
423 | > | 410 | > |
424 | 驳回 | 411 | 驳回 |
@@ -455,16 +442,6 @@ export default ({ | @@ -455,16 +442,6 @@ export default ({ | ||
455 | }} | 442 | }} |
456 | submitTimeout={2000} | 443 | submitTimeout={2000} |
457 | onFinish={async (values) => { | 444 | onFinish={async (values) => { |
458 | - if (checkType(CHECK_TYPE.WEARHOUSE_KEEPER)) { | ||
459 | - //审核通过mainOrderId | ||
460 | - return doCheck({ | ||
461 | - pass: true, | ||
462 | - subOrderIds: subOrderIds, | ||
463 | - type: 'warehouse_audit', | ||
464 | - notes: form.getFieldValue('name'), | ||
465 | - }); | ||
466 | - } | ||
467 | - | ||
468 | if (checkType(CHECK_TYPE.AFTER_SALES)) { | 445 | if (checkType(CHECK_TYPE.AFTER_SALES)) { |
469 | //审核通过 | 446 | //审核通过 |
470 | return doAfterSalesCheck({ | 447 | return doAfterSalesCheck({ |
@@ -499,14 +476,25 @@ export default ({ | @@ -499,14 +476,25 @@ export default ({ | ||
499 | }); | 476 | }); |
500 | } | 477 | } |
501 | 478 | ||
479 | + let type = ''; | ||
480 | + if (checkType(CHECK_TYPE.WEARHOUSE_KEEPER)) { | ||
481 | + type = 'warehouse_audit'; | ||
482 | + } | ||
502 | if (checkType(CHECK_TYPE.WAITING_FOR_POST_AUDIT)) { | 483 | if (checkType(CHECK_TYPE.WAITING_FOR_POST_AUDIT)) { |
503 | - return doPostAudit({ | ||
504 | - pass: true, | ||
505 | - notes: values.name, | ||
506 | - type: 'post_audit', | ||
507 | - subOrderIds: subOrderIds, | ||
508 | - }); | 484 | + type = 'post_audit'; |
485 | + } | ||
486 | + if (checkType(CHECK_TYPE.NODE_OPERATING_AUDIT)) { | ||
487 | + type = 'node_operating_audit'; | ||
488 | + } | ||
489 | + if (checkType(CHECK_TYPE.MODIFY_LEADER_AUDIT)) { | ||
490 | + type = 'modify_leader_audit'; | ||
509 | } | 491 | } |
492 | + doCheck({ | ||
493 | + pass: true, | ||
494 | + subOrderIds: subOrderIds, | ||
495 | + type: type, | ||
496 | + notes: form.getFieldValue('name'), | ||
497 | + }); | ||
510 | }} | 498 | }} |
511 | onOpenChange={setCheckVisible} | 499 | onOpenChange={setCheckVisible} |
512 | > | 500 | > |
src/pages/Order/components/OrderDrawer.tsx
@@ -8,6 +8,7 @@ import { | @@ -8,6 +8,7 @@ import { | ||
8 | postServiceOrderAddOrder, | 8 | postServiceOrderAddOrder, |
9 | postServiceOrderAfterSalesQuerySnapshotOrder, | 9 | postServiceOrderAfterSalesQuerySnapshotOrder, |
10 | postServiceOrderApplyAfterSales, | 10 | postServiceOrderApplyAfterSales, |
11 | + postServiceOrderApplyModify, | ||
11 | postServiceOrderQuerySalesCode, | 12 | postServiceOrderQuerySalesCode, |
12 | postServiceOrderUpdateOrder, | 13 | postServiceOrderUpdateOrder, |
13 | } from '@/services'; | 14 | } from '@/services'; |
@@ -676,12 +677,19 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | @@ -676,12 +677,19 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | ||
676 | } | 677 | } |
677 | 678 | ||
678 | values.applyType = orderOptType; | 679 | values.applyType = orderOptType; |
679 | - if (optType('after-sales') || optType('order-change-normal')) { | 680 | + if (optType('after-sales')) { |
680 | values.filePaths = values.filePaths?.map((file) => { | 681 | values.filePaths = values.filePaths?.map((file) => { |
681 | return { url: file.response.data[0] }; | 682 | return { url: file.response.data[0] }; |
682 | }); | 683 | }); |
683 | res = await postServiceOrderApplyAfterSales({ data: values }); | 684 | res = await postServiceOrderApplyAfterSales({ data: values }); |
684 | } | 685 | } |
686 | + | ||
687 | + if (optType('order-change-normal')) { | ||
688 | + values.filePaths = values.filePaths?.map((file) => { | ||
689 | + return { url: file.response.data[0] }; | ||
690 | + }); | ||
691 | + res = await postServiceOrderApplyModify({ data: values }); | ||
692 | + } | ||
685 | } | 693 | } |
686 | 694 | ||
687 | if (res.result === RESPONSE_CODE.SUCCESS) { | 695 | if (res.result === RESPONSE_CODE.SUCCESS) { |
src/pages/Order/constant.ts
@@ -97,6 +97,8 @@ export const CHECK_TYPE = { | @@ -97,6 +97,8 @@ export const CHECK_TYPE = { | ||
97 | LEADER_AUDIT: 'LEADER_AUDIT', | 97 | LEADER_AUDIT: 'LEADER_AUDIT', |
98 | MODIFY_APPLY_WAIT_FOR_AUDIT: 'MODIFY_APPLY_WAIT_FOR_AUDIT', | 98 | MODIFY_APPLY_WAIT_FOR_AUDIT: 'MODIFY_APPLY_WAIT_FOR_AUDIT', |
99 | WAITING_FOR_POST_AUDIT: 'WAITING_FOR_POST_AUDIT', | 99 | WAITING_FOR_POST_AUDIT: 'WAITING_FOR_POST_AUDIT', |
100 | + NODE_OPERATING_AUDIT: 'NODE_OPERATING_AUDIT', | ||
101 | + MODIFY_LEADER_AUDIT: 'MODIFY_LEADER_AUDIT', | ||
100 | }; | 102 | }; |
101 | 103 | ||
102 | /** | 104 | /** |
@@ -169,10 +171,10 @@ export const ORDER_STATUS_OPTIONS = { | @@ -169,10 +171,10 @@ export const ORDER_STATUS_OPTIONS = { | ||
169 | }; | 171 | }; |
170 | 172 | ||
171 | export const MODIFIED_AUDIT_STATUS_OPTIONS = { | 173 | export const MODIFIED_AUDIT_STATUS_OPTIONS = { |
172 | - AUDIT_FAILURE: '审核成功', | ||
173 | - PENDING_AUDIT_FOR_CURRENT_NODE_PERSONNEL: '当前节点人员待审核', | 174 | + AUDIT_FAILURE: '修改审核失败', |
175 | + PENDING_AUDIT_FOR_CURRENT_NODE_PERSONNEL: '节点待审核', | ||
174 | LEADER_PENDING_AUDIT: '领导待审核', | 176 | LEADER_PENDING_AUDIT: '领导待审核', |
175 | - AUDIT_SUCCESS: '审核成功', | 177 | + AUDIT_SUCCESS: '修改审核成功', |
176 | }; | 178 | }; |
177 | 179 | ||
178 | /** | 180 | /** |
@@ -360,6 +362,7 @@ export const HISTORY_OPT_TYPE = new Map<string, string>([ | @@ -360,6 +362,7 @@ export const HISTORY_OPT_TYPE = new Map<string, string>([ | ||
360 | ['order-change-normal-CHECK', '申请修改审核'], | 362 | ['order-change-normal-CHECK', '申请修改审核'], |
361 | ['warehouse_audit', '仓库审核'], | 363 | ['warehouse_audit', '仓库审核'], |
362 | ['post_audit', '后置审核'], | 364 | ['post_audit', '后置审核'], |
365 | + ['applyModify', '申请修改订单信息'], | ||
363 | ]); | 366 | ]); |
364 | 367 | ||
365 | export const MAIN_ORDER_COLUMNS = [ | 368 | export const MAIN_ORDER_COLUMNS = [ |
@@ -488,6 +491,13 @@ export const MAIN_ORDER_COLUMNS = [ | @@ -488,6 +491,13 @@ export const MAIN_ORDER_COLUMNS = [ | ||
488 | valueEnum: enumToProTableEnumValue(ORDER_STATUS_OPTIONS), | 491 | valueEnum: enumToProTableEnumValue(ORDER_STATUS_OPTIONS), |
489 | }, | 492 | }, |
490 | { | 493 | { |
494 | + title: '修改审核状态', | ||
495 | + dataIndex: 'modifiedAuditStatus', | ||
496 | + valueType: 'select', | ||
497 | + hideInTable: true, | ||
498 | + valueEnum: enumToProTableEnumValue(MODIFIED_AUDIT_STATUS_OPTIONS), | ||
499 | + }, | ||
500 | + { | ||
491 | title: '支付方式', | 501 | title: '支付方式', |
492 | dataIndex: 'paymentMethod', | 502 | dataIndex: 'paymentMethod', |
493 | valueType: 'select', | 503 | valueType: 'select', |
src/pages/Order/index.tsx
@@ -762,7 +762,11 @@ const OrderPage = () => { | @@ -762,7 +762,11 @@ const OrderPage = () => { | ||
762 | {/* 商品名称 */} | 762 | {/* 商品名称 */} |
763 | <div> | 763 | <div> |
764 | <div | 764 | <div |
765 | - className="overflow-hidden whitespace-no-wrap overflow-ellipsis" | 765 | + className="overflow-hidden whitespace-no-wrap overflow-ellipsis hover:cursor-pointer" |
766 | + onClick={() => { | ||
767 | + copyToClipboard(optRecord.productName); | ||
768 | + message.info('商品名称复制成功:' + optRecord.productName); | ||
769 | + }} | ||
766 | title={optRecord.productName} | 770 | title={optRecord.productName} |
767 | > | 771 | > |
768 | <span className="font-medium text-black "> | 772 | <span className="font-medium text-black "> |
@@ -786,6 +790,16 @@ const OrderPage = () => { | @@ -786,6 +790,16 @@ const OrderPage = () => { | ||
786 | ) : ( | 790 | ) : ( |
787 | '' | 791 | '' |
788 | )} | 792 | )} |
793 | + {optRecord.modifiedOptFlag !== null ? ( | ||
794 | + <span className="text-[#f44e4e] cursor-pointer"> | ||
795 | + {optRecord.modifiedOptFlag === 'MODIFY' ? '(修改中)' : ''} | ||
796 | + {optRecord.modifiedOptFlag === 'DELETE' ? '(删除中)' : ''} | ||
797 | + {optRecord.modifiedOptFlag === 'INSERT' ? '(新增中)' : ''} | ||
798 | + </span> | ||
799 | + ) : ( | ||
800 | + '' | ||
801 | + )} | ||
802 | + | ||
789 | {optRecord.modified ? ( | 803 | {optRecord.modified ? ( |
790 | <Tooltip title="点击查看详情"> | 804 | <Tooltip title="点击查看详情"> |
791 | <span | 805 | <span |
@@ -795,7 +809,7 @@ const OrderPage = () => { | @@ -795,7 +809,7 @@ const OrderPage = () => { | ||
795 | setModifiedDiffModalVisible(true); | 809 | setModifiedDiffModalVisible(true); |
796 | }} | 810 | }} |
797 | > | 811 | > |
798 | - (修改过) | 812 | + (内容有变化) |
799 | </span> | 813 | </span> |
800 | </Tooltip> | 814 | </Tooltip> |
801 | ) : ( | 815 | ) : ( |
@@ -810,23 +824,32 @@ const OrderPage = () => { | @@ -810,23 +824,32 @@ const OrderPage = () => { | ||
810 | </div> | 824 | </div> |
811 | 825 | ||
812 | <div | 826 | <div |
813 | - className="overflow-hidden whitespace-no-wrap overflow-ellipsis" | 827 | + className="overflow-hidden whitespace-no-wrap overflow-ellipsis hover:cursor-pointer" |
814 | title={optRecord.parameters} | 828 | title={optRecord.parameters} |
829 | + onClick={() => { | ||
830 | + copyToClipboard(optRecord.parameters); | ||
831 | + message.info('商品名称复制成功:' + optRecord.parameters); | ||
832 | + }} | ||
815 | > | 833 | > |
816 | <span className="text-[#8C8C8C]"> | 834 | <span className="text-[#8C8C8C]"> |
817 | 参数:{optRecord.parameters} | 835 | 参数:{optRecord.parameters} |
818 | </span> | 836 | </span> |
819 | </div> | 837 | </div> |
820 | 838 | ||
821 | - {userInfo.username !== '首能' ? ( | ||
822 | - <Flex title={optRecord.notes}> | ||
823 | - <div className="max-w-[375px] whitespace-no-wrap overflow-hidden overflow-ellipsis"> | ||
824 | - <span className="text-[#8C8C8C]"> | ||
825 | - 备注: | ||
826 | - {optRecord.notes === null ? '暂无备注' : optRecord.notes} | ||
827 | - </span> | ||
828 | - </div> | ||
829 | - {/* 编辑备注按钮 */} | 839 | + <Flex title={optRecord.notes}> |
840 | + <div | ||
841 | + className="max-w-[375px] whitespace-no-wrap overflow-hidden overflow-ellipsis hover:cursor-pointer" | ||
842 | + onClick={() => { | ||
843 | + copyToClipboard(optRecord.notes); | ||
844 | + message.info('备注复制成功:' + optRecord.notes); | ||
845 | + }} | ||
846 | + > | ||
847 | + <span className="text-[#8C8C8C]"> | ||
848 | + 备注: | ||
849 | + {optRecord.notes === null ? '暂无备注' : optRecord.notes} | ||
850 | + </span> | ||
851 | + </div> | ||
852 | + {userInfo.username !== '首能' ? ( | ||
830 | <EditTwoTone | 853 | <EditTwoTone |
831 | className="pl-1 hover:curcor-pointer" | 854 | className="pl-1 hover:curcor-pointer" |
832 | onClick={() => { | 855 | onClick={() => { |
@@ -836,10 +859,10 @@ const OrderPage = () => { | @@ -836,10 +859,10 @@ const OrderPage = () => { | ||
836 | setNotesType(1); | 859 | setNotesType(1); |
837 | }} | 860 | }} |
838 | /> | 861 | /> |
839 | - </Flex> | ||
840 | - ) : ( | ||
841 | - '' | ||
842 | - )} | 862 | + ) : ( |
863 | + '' | ||
864 | + )} | ||
865 | + </Flex> | ||
843 | 866 | ||
844 | {(roleCode === 'procure' || | 867 | {(roleCode === 'procure' || |
845 | roleCode === 'warehouseKeeper' || | 868 | roleCode === 'warehouseKeeper' || |
@@ -1163,7 +1186,8 @@ const OrderPage = () => { | @@ -1163,7 +1186,8 @@ const OrderPage = () => { | ||
1163 | )} | 1186 | )} |
1164 | 1187 | ||
1165 | {/* 修改审核状态 */} | 1188 | {/* 修改审核状态 */} |
1166 | - {optRecord.modifiedAuditStatus !== null ? ( | 1189 | + {optRecord.modifiedAuditStatus !== null && |
1190 | + optRecord.modifiedAuditStatus !== 'AUDIT_FAILURE' ? ( | ||
1167 | <div className="overflow-hidden whitespace-no-wrap overflow-ellipsis"> | 1191 | <div className="overflow-hidden whitespace-no-wrap overflow-ellipsis"> |
1168 | <Tooltip | 1192 | <Tooltip |
1169 | title={enumValueToLabel( | 1193 | title={enumValueToLabel( |
@@ -1182,6 +1206,29 @@ const OrderPage = () => { | @@ -1182,6 +1206,29 @@ const OrderPage = () => { | ||
1182 | ) : ( | 1206 | ) : ( |
1183 | '' | 1207 | '' |
1184 | )} | 1208 | )} |
1209 | + | ||
1210 | + {optRecord.modifiedAuditStatus === 'AUDIT_FAILURE' ? ( | ||
1211 | + <MyToolTip | ||
1212 | + key="key" | ||
1213 | + title={optRecord.modifiedAuditNotes} | ||
1214 | + content={ | ||
1215 | + <> | ||
1216 | + <Tag | ||
1217 | + color={TAGS_COLOR.get(optRecord.modifiedAuditNotes)} | ||
1218 | + style={{ marginRight: '4px' }} | ||
1219 | + > | ||
1220 | + {enumValueToLabel( | ||
1221 | + optRecord.modifiedAuditStatus, | ||
1222 | + MODIFIED_AUDIT_STATUS_OPTIONS, | ||
1223 | + )} | ||
1224 | + </Tag> | ||
1225 | + <QuestionCircleOutlined style={{ color: '#C1C1C1' }} /> | ||
1226 | + </> | ||
1227 | + } | ||
1228 | + /> | ||
1229 | + ) : ( | ||
1230 | + '' | ||
1231 | + )} | ||
1185 | </div> | 1232 | </div> |
1186 | </Flex> | 1233 | </Flex> |
1187 | <Flex className="w-[18%]" wrap="wrap" gap="small"> | 1234 | <Flex className="w-[18%]" wrap="wrap" gap="small"> |
@@ -1226,10 +1273,42 @@ const OrderPage = () => { | @@ -1226,10 +1273,42 @@ const OrderPage = () => { | ||
1226 | onClick={() => { | 1273 | onClick={() => { |
1227 | createOptObject(optRecord.id, record.id); | 1274 | createOptObject(optRecord.id, record.id); |
1228 | setCheckVisible(true); | 1275 | setCheckVisible(true); |
1229 | - setOrderCheckType(CHECK_TYPE.WAITING_FOR_POST_AUDIT); | 1276 | + setOrderCheckType(CHECK_TYPE.NODE_OPERATING_AUDIT); |
1277 | + }} | ||
1278 | + > | ||
1279 | + 节点修改审核 | ||
1280 | + </Button> | ||
1281 | + ) : ( | ||
1282 | + '' | ||
1283 | + )} | ||
1284 | + | ||
1285 | + {optRecord.subPath?.includes('applyModify') ? ( | ||
1286 | + <Button | ||
1287 | + className="p-0" | ||
1288 | + type="link" | ||
1289 | + onClick={() => { | ||
1290 | + createOptObject(optRecord.id, record.id); | ||
1291 | + setOrderDrawerVisible(true); | ||
1292 | + setOrderOptType('order-change-normal'); | ||
1230 | }} | 1293 | }} |
1231 | > | 1294 | > |
1232 | - 修改审核 | 1295 | + 申请修改 |
1296 | + </Button> | ||
1297 | + ) : ( | ||
1298 | + '' | ||
1299 | + )} | ||
1300 | + | ||
1301 | + {optRecord.subPath?.includes('modifiedLeaderAuditRequest') ? ( | ||
1302 | + <Button | ||
1303 | + className="p-0" | ||
1304 | + type="link" | ||
1305 | + onClick={() => { | ||
1306 | + createOptObject(optRecord.id, record.id); | ||
1307 | + setCheckVisible(true); | ||
1308 | + setOrderCheckType(CHECK_TYPE.MODIFY_LEADER_AUDIT); | ||
1309 | + }} | ||
1310 | + > | ||
1311 | + 领导修改审核 | ||
1233 | </Button> | 1312 | </Button> |
1234 | ) : ( | 1313 | ) : ( |
1235 | '' | 1314 | '' |
@@ -1333,7 +1412,7 @@ const OrderPage = () => { | @@ -1333,7 +1412,7 @@ const OrderPage = () => { | ||
1333 | setOrderCheckType(CHECK_TYPE.PROCURE); | 1412 | setOrderCheckType(CHECK_TYPE.PROCURE); |
1334 | }} | 1413 | }} |
1335 | > | 1414 | > |
1336 | - 采购发货 | 1415 | + {userInfo.username === '首能' ? '发货' : '采购发货'} |
1337 | </Button> | 1416 | </Button> |
1338 | ) : ( | 1417 | ) : ( |
1339 | '' | 1418 | '' |
@@ -1950,14 +2029,18 @@ const OrderPage = () => { | @@ -1950,14 +2029,18 @@ const OrderPage = () => { | ||
1950 | <span>{formatDateTime(record.createTime)}</span> | 2029 | <span>{formatDateTime(record.createTime)}</span> |
1951 | <Divider type="vertical" /> | 2030 | <Divider type="vertical" /> |
1952 | <Space split={<Divider type="vertical" />}> | 2031 | <Space split={<Divider type="vertical" />}> |
2032 | + <div | ||
2033 | + className="hover:cursor-pointer" | ||
2034 | + onClick={() => { | ||
2035 | + copyToClipboard(record.salesCode); | ||
2036 | + message.info('代表复制成功:' + record.salesCode); | ||
2037 | + }} | ||
2038 | + > | ||
2039 | + <span className="text-[#8C8C8C]">代表:</span> | ||
2040 | + <span className="text-slate-700">{record.salesCode}</span> | ||
2041 | + </div> | ||
1953 | {userInfo?.username !== '首能' ? ( | 2042 | {userInfo?.username !== '首能' ? ( |
1954 | <> | 2043 | <> |
1955 | - <div> | ||
1956 | - <span className="text-[#8C8C8C]">代表:</span> | ||
1957 | - <span className="text-slate-700"> | ||
1958 | - {record.salesCode} | ||
1959 | - </span> | ||
1960 | - </div> | ||
1961 | <div | 2044 | <div |
1962 | title={record.institution} | 2045 | title={record.institution} |
1963 | className="whitespace-no-wrap overflow-hidden overflow-ellipsis max-w-[150px]" | 2046 | className="whitespace-no-wrap overflow-hidden overflow-ellipsis max-w-[150px]" |
@@ -1977,7 +2060,13 @@ const OrderPage = () => { | @@ -1977,7 +2060,13 @@ const OrderPage = () => { | ||
1977 | ) : ( | 2060 | ) : ( |
1978 | '' | 2061 | '' |
1979 | )} | 2062 | )} |
1980 | - <span> | 2063 | + <span |
2064 | + className="hover:cursor-pointer" | ||
2065 | + onClick={() => { | ||
2066 | + copyToClipboard(record.customerName); | ||
2067 | + message.info('收货人复制成功:' + record.customerName); | ||
2068 | + }} | ||
2069 | + > | ||
1981 | <span className="text-[#8C8C8C]">收货人:</span> | 2070 | <span className="text-[#8C8C8C]">收货人:</span> |
1982 | <span className="text-slate-700"> | 2071 | <span className="text-slate-700"> |
1983 | {record.customerName + ' '} | 2072 | {record.customerName + ' '} |
@@ -2000,7 +2089,13 @@ const OrderPage = () => { | @@ -2000,7 +2089,13 @@ const OrderPage = () => { | ||
2000 | {userInfo?.username === '首能' ? ( | 2089 | {userInfo?.username === '首能' ? ( |
2001 | <div | 2090 | <div |
2002 | title={record.customerShippingAddress} | 2091 | title={record.customerShippingAddress} |
2003 | - className="whitespace-no-wrap overflow-hidden overflow-ellipsis max-w-[500px]" | 2092 | + className="whitespace-no-wrap overflow-hidden overflow-ellipsis max-w-[500px] hover:cursor-pointer" |
2093 | + onClick={() => { | ||
2094 | + copyToClipboard(record.customerShippingAddress); | ||
2095 | + message.info( | ||
2096 | + '收货地址复制成功:' + record.customerShippingAddress, | ||
2097 | + ); | ||
2098 | + }} | ||
2004 | > | 2099 | > |
2005 | <span className="text-[#8C8C8C]">收货地址:</span> | 2100 | <span className="text-[#8C8C8C]">收货地址:</span> |
2006 | <span className="text-slate-700"> | 2101 | <span className="text-slate-700"> |
@@ -2039,24 +2134,35 @@ const OrderPage = () => { | @@ -2039,24 +2134,35 @@ const OrderPage = () => { | ||
2039 | {roleCode === 'finance' ? <Divider type="vertical" /> : ''} | 2134 | {roleCode === 'finance' ? <Divider type="vertical" /> : ''} |
2040 | 2135 | ||
2041 | <div title={record.notes}> | 2136 | <div title={record.notes}> |
2042 | - <div className="max-w-md overflow-hidden whitespace-no-wrap overflow-ellipsis"> | 2137 | + <div |
2138 | + className="max-w-md overflow-hidden whitespace-no-wrap overflow-ellipsis hover:cursor-pointer" | ||
2139 | + onClick={() => { | ||
2140 | + copyToClipboard(record.notes); | ||
2141 | + message.info('备注复制成功:' + record.notes); | ||
2142 | + }} | ||
2143 | + > | ||
2043 | <span className="text-[#8C8C8C]">备注:</span> | 2144 | <span className="text-[#8C8C8C]">备注:</span> |
2044 | <span className="ml-2"> | 2145 | <span className="ml-2"> |
2045 | {record.notes === null ? '暂无备注' : record.notes} | 2146 | {record.notes === null ? '暂无备注' : record.notes} |
2046 | </span> | 2147 | </span> |
2047 | </div> | 2148 | </div> |
2048 | </div> | 2149 | </div> |
2049 | - <Tooltip title="编辑"> | ||
2050 | - <EditTwoTone | ||
2051 | - className="pl-1 hover:curcor-pointer" | ||
2052 | - onClick={() => { | ||
2053 | - setNotesEditVisible(true); | ||
2054 | - setSelectedRows([record.id]); | ||
2055 | - setNotes(record.notes); | ||
2056 | - setNotesType(0); | ||
2057 | - }} | ||
2058 | - /> | ||
2059 | - </Tooltip> | 2150 | + |
2151 | + {userInfo.username !== '首能' ? ( | ||
2152 | + <Tooltip title="编辑"> | ||
2153 | + <EditTwoTone | ||
2154 | + className="pl-1 hover:curcor-pointer" | ||
2155 | + onClick={() => { | ||
2156 | + setNotesEditVisible(true); | ||
2157 | + setSelectedRows([record.id]); | ||
2158 | + setNotes(record.notes); | ||
2159 | + setNotesType(0); | ||
2160 | + }} | ||
2161 | + /> | ||
2162 | + </Tooltip> | ||
2163 | + ) : ( | ||
2164 | + '' | ||
2165 | + )} | ||
2060 | </Flex> | 2166 | </Flex> |
2061 | </Flex> | 2167 | </Flex> |
2062 | <Flex wrap="wrap" gap="middle" vertical> | 2168 | <Flex wrap="wrap" gap="middle" vertical> |
@@ -2115,6 +2221,38 @@ const OrderPage = () => { | @@ -2115,6 +2221,38 @@ const OrderPage = () => { | ||
2115 | <Flex justify="flex-end"> | 2221 | <Flex justify="flex-end"> |
2116 | <Space.Compact direction="vertical" align="end"> | 2222 | <Space.Compact direction="vertical" align="end"> |
2117 | <Space wrap> | 2223 | <Space wrap> |
2224 | + {record.mainPath?.includes('modifiedAuditRequest') ? ( | ||
2225 | + <Button | ||
2226 | + className="p-0" | ||
2227 | + type="link" | ||
2228 | + onClick={() => { | ||
2229 | + createOptObject(null, record.id); | ||
2230 | + setCheckVisible(true); | ||
2231 | + setOrderCheckType(CHECK_TYPE.NODE_OPERATING_AUDIT); | ||
2232 | + }} | ||
2233 | + > | ||
2234 | + 节点修改审核 | ||
2235 | + </Button> | ||
2236 | + ) : ( | ||
2237 | + '' | ||
2238 | + )} | ||
2239 | + | ||
2240 | + {record.mainPath?.includes('modifiedLeaderAuditRequest') ? ( | ||
2241 | + <Button | ||
2242 | + className="p-0" | ||
2243 | + type="link" | ||
2244 | + onClick={() => { | ||
2245 | + createOptObject(null, record.id); | ||
2246 | + setCheckVisible(true); | ||
2247 | + setOrderCheckType(CHECK_TYPE.MODIFY_LEADER_AUDIT); | ||
2248 | + }} | ||
2249 | + > | ||
2250 | + 领导修改审核 | ||
2251 | + </Button> | ||
2252 | + ) : ( | ||
2253 | + '' | ||
2254 | + )} | ||
2255 | + | ||
2118 | {false ? ( | 2256 | {false ? ( |
2119 | <Button | 2257 | <Button |
2120 | className="p-0" | 2258 | className="p-0" |
@@ -2212,7 +2350,7 @@ const OrderPage = () => { | @@ -2212,7 +2350,7 @@ const OrderPage = () => { | ||
2212 | '' | 2350 | '' |
2213 | )} | 2351 | )} |
2214 | 2352 | ||
2215 | - {record.mainPath?.includes('orderChangeRequest') ? ( | 2353 | + {record.mainPath?.includes('applyModify') ? ( |
2216 | <Button | 2354 | <Button |
2217 | className="p-0" | 2355 | className="p-0" |
2218 | type="link" | 2356 | type="link" |
@@ -2396,7 +2534,7 @@ const OrderPage = () => { | @@ -2396,7 +2534,7 @@ const OrderPage = () => { | ||
2396 | setOrderCheckType(CHECK_TYPE.PROCURE); | 2534 | setOrderCheckType(CHECK_TYPE.PROCURE); |
2397 | }} | 2535 | }} |
2398 | > | 2536 | > |
2399 | - 采购发货 | 2537 | + {userInfo.username === '首能' ? '发货' : '采购发货'} |
2400 | </Button> | 2538 | </Button> |
2401 | ) : ( | 2539 | ) : ( |
2402 | '' | 2540 | '' |
@@ -3101,6 +3239,14 @@ const OrderPage = () => { | @@ -3101,6 +3239,14 @@ const OrderPage = () => { | ||
3101 | // 主订单列表 | 3239 | // 主订单列表 |
3102 | const mainOrdersColumns: ProColumns<OrderType>[] = MAIN_ORDER_COLUMNS.map( | 3240 | const mainOrdersColumns: ProColumns<OrderType>[] = MAIN_ORDER_COLUMNS.map( |
3103 | (item) => { | 3241 | (item) => { |
3242 | + //首能账号只能搜索订单编号 | ||
3243 | + let canSearchIndex = ['id', 'salesCode', 'subNotes', 'orderStatus']; | ||
3244 | + if ( | ||
3245 | + userInfo.username === '首能' && | ||
3246 | + !canSearchIndex.includes(item.dataIndex) | ||
3247 | + ) { | ||
3248 | + item.search = false; | ||
3249 | + } | ||
3104 | if (item.dataIndex === 'name') { | 3250 | if (item.dataIndex === 'name') { |
3105 | return { | 3251 | return { |
3106 | ...item, | 3252 | ...item, |
@@ -3126,7 +3272,10 @@ const OrderPage = () => { | @@ -3126,7 +3272,10 @@ const OrderPage = () => { | ||
3126 | /** | 3272 | /** |
3127 | * 采购可以筛选供应商备注 | 3273 | * 采购可以筛选供应商备注 |
3128 | */ | 3274 | */ |
3129 | - if (roleCode === 'procure' || roleCode === 'admin') { | 3275 | + if ( |
3276 | + (roleCode === 'procure' || roleCode === 'admin') && | ||
3277 | + userInfo.username !== '首能' | ||
3278 | + ) { | ||
3130 | mainOrdersColumns.push({ | 3279 | mainOrdersColumns.push({ |
3131 | title: '供应商备注', | 3280 | title: '供应商备注', |
3132 | width: 120, | 3281 | width: 120, |
@@ -3139,7 +3288,10 @@ const OrderPage = () => { | @@ -3139,7 +3288,10 @@ const OrderPage = () => { | ||
3139 | /** | 3288 | /** |
3140 | * 采购可以筛选其他采购 | 3289 | * 采购可以筛选其他采购 |
3141 | */ | 3290 | */ |
3142 | - if (roleCode === 'procure' || roleCode === 'admin') { | 3291 | + if ( |
3292 | + (roleCode === 'procure' || roleCode === 'admin') && | ||
3293 | + userInfo.username !== '首能' | ||
3294 | + ) { | ||
3143 | mainOrdersColumns.push({ | 3295 | mainOrdersColumns.push({ |
3144 | title: '采购名称', | 3296 | title: '采购名称', |
3145 | width: 120, | 3297 | width: 120, |
@@ -3200,7 +3352,7 @@ const OrderPage = () => { | @@ -3200,7 +3352,7 @@ const OrderPage = () => { | ||
3200 | } | 3352 | } |
3201 | 3353 | ||
3202 | //采购可以筛选出需要处理的订单 | 3354 | //采购可以筛选出需要处理的订单 |
3203 | - if (roleCode === 'procure') { | 3355 | + if (roleCode === 'procure' && userInfo.username !== '首能') { |
3204 | radios.push(<Radio value={60}>其他采购</Radio>); | 3356 | radios.push(<Radio value={60}>其他采购</Radio>); |
3205 | radios.push(<Radio value={10}>待处理</Radio>); | 3357 | radios.push(<Radio value={10}>待处理</Radio>); |
3206 | } | 3358 | } |
src/services/definition.ts
@@ -313,8 +313,16 @@ export interface AdminUserVO { | @@ -313,8 +313,16 @@ export interface AdminUserVO { | ||
313 | 313 | ||
314 | export interface AuditDto { | 314 | export interface AuditDto { |
315 | notes?: string; | 315 | notes?: string; |
316 | + /** | ||
317 | + * @description | ||
318 | + * 是否通过 | ||
319 | + */ | ||
316 | pass?: boolean; | 320 | pass?: boolean; |
317 | subOrderIds?: Array<number>; | 321 | subOrderIds?: Array<number>; |
322 | + /** | ||
323 | + * @description | ||
324 | + * 审核类型:post_audit 后置审核、node_operating_audit 节点操作人审核、warehouse_audit 仓库审核 | ||
325 | + */ | ||
318 | type?: string; | 326 | type?: string; |
319 | } | 327 | } |
320 | 328 |
src/services/request.ts
@@ -6398,7 +6398,7 @@ export type PostServiceOrderAfterSalesCheckResponseSuccess = | @@ -6398,7 +6398,7 @@ export type PostServiceOrderAfterSalesCheckResponseSuccess = | ||
6398 | PostServiceOrderAfterSalesCheckResponse[200]; | 6398 | PostServiceOrderAfterSalesCheckResponse[200]; |
6399 | /** | 6399 | /** |
6400 | * @description | 6400 | * @description |
6401 | - * 修改订单审核 | 6401 | + * 修改审核 |
6402 | * @tags 内部订单 | 6402 | * @tags 内部订单 |
6403 | * @produces * | 6403 | * @produces * |
6404 | * @consumes application/json | 6404 | * @consumes application/json |
@@ -6636,6 +6636,77 @@ export const postServiceOrderApplyInvoicing = /* #__PURE__ */ (() => { | @@ -6636,6 +6636,77 @@ export const postServiceOrderApplyInvoicing = /* #__PURE__ */ (() => { | ||
6636 | return request; | 6636 | return request; |
6637 | })(); | 6637 | })(); |
6638 | 6638 | ||
6639 | +/** @description request parameter type for postServiceOrderApplyModify */ | ||
6640 | +export interface PostServiceOrderApplyModifyOption { | ||
6641 | + /** | ||
6642 | + * @description | ||
6643 | + * dto | ||
6644 | + */ | ||
6645 | + body: { | ||
6646 | + /** | ||
6647 | + @description | ||
6648 | + dto */ | ||
6649 | + dto: Dto; | ||
6650 | + }; | ||
6651 | +} | ||
6652 | + | ||
6653 | +/** @description response type for postServiceOrderApplyModify */ | ||
6654 | +export interface PostServiceOrderApplyModifyResponse { | ||
6655 | + /** | ||
6656 | + * @description | ||
6657 | + * OK | ||
6658 | + */ | ||
6659 | + 200: ServerResult; | ||
6660 | + /** | ||
6661 | + * @description | ||
6662 | + * Created | ||
6663 | + */ | ||
6664 | + 201: any; | ||
6665 | + /** | ||
6666 | + * @description | ||
6667 | + * Unauthorized | ||
6668 | + */ | ||
6669 | + 401: any; | ||
6670 | + /** | ||
6671 | + * @description | ||
6672 | + * Forbidden | ||
6673 | + */ | ||
6674 | + 403: any; | ||
6675 | + /** | ||
6676 | + * @description | ||
6677 | + * Not Found | ||
6678 | + */ | ||
6679 | + 404: any; | ||
6680 | +} | ||
6681 | + | ||
6682 | +export type PostServiceOrderApplyModifyResponseSuccess = | ||
6683 | + PostServiceOrderApplyModifyResponse[200]; | ||
6684 | +/** | ||
6685 | + * @description | ||
6686 | + * 申请修改订单信息 | ||
6687 | + * @tags 内部订单 | ||
6688 | + * @produces * | ||
6689 | + * @consumes application/json | ||
6690 | + */ | ||
6691 | +export const postServiceOrderApplyModify = /* #__PURE__ */ (() => { | ||
6692 | + const method = 'post'; | ||
6693 | + const url = '/service/order/applyModify'; | ||
6694 | + function request( | ||
6695 | + option: PostServiceOrderApplyModifyOption, | ||
6696 | + ): Promise<PostServiceOrderApplyModifyResponseSuccess> { | ||
6697 | + return requester(request.url, { | ||
6698 | + method: request.method, | ||
6699 | + ...option, | ||
6700 | + }) as unknown as Promise<PostServiceOrderApplyModifyResponseSuccess>; | ||
6701 | + } | ||
6702 | + | ||
6703 | + /** http method */ | ||
6704 | + request.method = method; | ||
6705 | + /** request url */ | ||
6706 | + request.url = url; | ||
6707 | + return request; | ||
6708 | +})(); | ||
6709 | + | ||
6639 | /** @description request parameter type for postServiceOrderAudit */ | 6710 | /** @description request parameter type for postServiceOrderAudit */ |
6640 | export interface PostServiceOrderAuditOption { | 6711 | export interface PostServiceOrderAuditOption { |
6641 | /** | 6712 | /** |