Commit 3af0bf55683d30297678281bf85098d301d951c2

Authored by zhongnanhuang
2 parents ef0f521b 1abb1273

Merge branch 'znh' into 'develop'

feat: update



See merge request !26
src/pages/Order/components/ApplyForInvoicingModal.tsx
1 import { RESPONSE_CODE } from '@/constants/enum'; 1 import { RESPONSE_CODE } from '@/constants/enum';
2 import { postServiceOrderApplyInvoicing } from '@/services'; 2 import { postServiceOrderApplyInvoicing } from '@/services';
  3 +import { getAliYunOSSFileNameFromUrl } from '@/utils';
3 import { 4 import {
4 ModalForm, 5 ModalForm,
5 ProFormTextArea, 6 ProFormTextArea,
6 ProFormUploadDragger, 7 ProFormUploadDragger,
7 } from '@ant-design/pro-components'; 8 } from '@ant-design/pro-components';
8 import { Form, message } from 'antd'; 9 import { Form, message } from 'antd';
9 -export default ({ setCheckVisible, subOrders, onClose }) => { 10 +import { cloneDeep } from 'lodash';
  11 +export default ({ setCheckVisible, isEdit, subOrders, onClose }) => {
  12 + const subOrder = cloneDeep(subOrders[0]);
  13 + let newListAnnex = subOrder.afterAnnexList?.map((path) => {
  14 + let i = 0;
  15 + return {
  16 + uid: i++,
  17 + name: getAliYunOSSFileNameFromUrl(path),
  18 + status: 'uploaded',
  19 + url: path,
  20 + response: { data: [path] },
  21 + };
  22 + });
  23 +
  24 + subOrder.filePaths = newListAnnex;
  25 +
10 const [form] = Form.useForm<{ 26 const [form] = Form.useForm<{
11 applyInvoicingNotes: string; 27 applyInvoicingNotes: string;
12 filePaths: any; 28 filePaths: any;
13 subIds: any[]; 29 subIds: any[];
  30 + afterInvoicingUpdate: boolean;
14 }>(); 31 }>();
15 let subOrderIds = subOrders?.map((subOrder) => subOrder.id); 32 let subOrderIds = subOrders?.map((subOrder) => subOrder.id);
16 33
@@ -19,10 +36,12 @@ export default ({ setCheckVisible, subOrders, onClose }) =&gt; { @@ -19,10 +36,12 @@ export default ({ setCheckVisible, subOrders, onClose }) =&gt; {
19 applyInvoicingNotes: string; 36 applyInvoicingNotes: string;
20 filePaths: any; 37 filePaths: any;
21 subIds: any[]; 38 subIds: any[];
  39 + afterInvoicingUpdate: boolean;
22 }> 40 }>
23 width={500} 41 width={500}
24 open 42 open
25 - title="申请开票" 43 + title={isEdit ? '修改信息' : '申请开票'}
  44 + initialValues={subOrder}
26 form={form} 45 form={form}
27 autoFocusFirstInput 46 autoFocusFirstInput
28 modalProps={{ 47 modalProps={{
@@ -46,6 +65,12 @@ export default ({ setCheckVisible, subOrders, onClose }) =&gt; { @@ -46,6 +65,12 @@ export default ({ setCheckVisible, subOrders, onClose }) =&gt; {
46 return { url: item.response.data[0] }; 65 return { url: item.response.data[0] };
47 }); 66 });
48 67
  68 + if (isEdit) {
  69 + values.afterInvoicingUpdate = true;
  70 + } else {
  71 + values.afterInvoicingUpdate = false;
  72 + }
  73 +
49 const res = await postServiceOrderApplyInvoicing({ data: values }); 74 const res = await postServiceOrderApplyInvoicing({ data: values });
50 75
51 if (res.result === RESPONSE_CODE.SUCCESS) { 76 if (res.result === RESPONSE_CODE.SUCCESS) {
src/pages/Order/components/CheckModal.tsx
@@ -6,10 +6,11 @@ import { @@ -6,10 +6,11 @@ import {
6 import { ModalForm, ProFormTextArea } from '@ant-design/pro-components'; 6 import { ModalForm, ProFormTextArea } from '@ant-design/pro-components';
7 import { Button, Form, Modal, UploadFile, message } from 'antd'; 7 import { Button, Form, Modal, UploadFile, message } from 'antd';
8 import Upload, { RcFile, UploadProps } from 'antd/es/upload'; 8 import Upload, { RcFile, UploadProps } from 'antd/es/upload';
9 -import { useRef, useState } from 'react'; 9 +import { useEffect, useRef, useState } from 'react';
10 import { CHECK_TYPE, COMFIR_RECEIPT_IMAGES_NUMBER } from '../constant'; 10 import { CHECK_TYPE, COMFIR_RECEIPT_IMAGES_NUMBER } from '../constant';
11 // import { cloneDeep } from 'lodash'; 11 // import { cloneDeep } from 'lodash';
12 import { PlusOutlined } from '@ant-design/icons'; 12 import { PlusOutlined } from '@ant-design/icons';
  13 +import { cloneDeep } from 'lodash';
13 export default ({ 14 export default ({
14 setCheckVisible, 15 setCheckVisible,
15 data, 16 data,
@@ -39,66 +40,66 @@ export default ({ @@ -39,66 +40,66 @@ export default ({
39 setFileList(newFileList); 40 setFileList(newFileList);
40 }; 41 };
41 42
42 - // /** 粘贴快捷键的回调 */  
43 - // const onPaste = async (e: any) => {  
44 - // /** 获取剪切板的数据clipboardData */  
45 - // let clipboardData = e.clipboardData,  
46 - // i = 0,  
47 - // items,  
48 - // item,  
49 - // types; 43 + /** 粘贴快捷键的回调 */
  44 + const onPaste = async (e: any) => {
  45 + /** 获取剪切板的数据clipboardData */
  46 + let clipboardData = e.clipboardData,
  47 + i = 0,
  48 + items,
  49 + item,
  50 + types;
50 51
51 - // /** 为空判断 */  
52 - // if (clipboardData) {  
53 - // items = clipboardData.items;  
54 - // if (!items) {  
55 - // message.info('您的剪贴板中没有照片');  
56 - // return;  
57 - // } 52 + /** 为空判断 */
  53 + if (clipboardData) {
  54 + items = clipboardData.items;
  55 + if (!items) {
  56 + message.info('您的剪贴板中没有照片');
  57 + return;
  58 + }
58 59
59 - // item = items[0];  
60 - // types = clipboardData.types || [];  
61 - // /** 遍历剪切板的数据 */  
62 - // for (; i < types.length; i++) {  
63 - // if (types[i] === 'Files') {  
64 - // item = items[i];  
65 - // break;  
66 - // }  
67 - // } 60 + item = items[0];
  61 + types = clipboardData.types || [];
  62 + /** 遍历剪切板的数据 */
  63 + for (; i < types.length; i++) {
  64 + if (types[i] === 'Files') {
  65 + item = items[i];
  66 + break;
  67 + }
  68 + }
68 69
69 - // /** 判断文件是否为图片 */  
70 - // if (item && item.kind === 'file' && item.type.match(/^image\//i)) {  
71 - // const imgItem = item.getAsFile();  
72 - // const newFileList = cloneDeep(fileListObj.current);  
73 - // let filteredArray = newFileList.filter(  
74 - // (obj) => obj.status !== 'removed',  
75 - // ); //过滤掉状态为已删除的照片  
76 - // const listItem = {  
77 - // ...imgItem,  
78 - // status: 'done',  
79 - // url: await getBase64(imgItem),  
80 - // originFileObj: imgItem,  
81 - // }; 70 + /** 判断文件是否为图片 */
  71 + if (item && item.kind === 'file' && item.type.match(/^image\//i)) {
  72 + const imgItem = item.getAsFile();
  73 + const newFileList = cloneDeep(fileListObj.current);
  74 + let filteredArray = newFileList.filter(
  75 + (obj) => obj.status !== 'removed',
  76 + ); //过滤掉状态为已删除的照片
  77 + const listItem = {
  78 + ...imgItem,
  79 + status: 'done',
  80 + url: await getBase64(imgItem),
  81 + originFileObj: imgItem,
  82 + };
82 83
83 - // if (filteredArray.length >= COMFIR_RECEIPT_IMAGES_NUMBER) {  
84 - // message.info('发货凭证照片数量不能超过3');  
85 - // return;  
86 - // }  
87 - // fileListObj.current = filteredArray;  
88 - // filteredArray.push(listItem);  
89 - // setFileList(filteredArray);  
90 - // return;  
91 - // }  
92 - // } 84 + if (filteredArray.length >= COMFIR_RECEIPT_IMAGES_NUMBER) {
  85 + message.info('发货照片数量不能超过3');
  86 + return;
  87 + }
  88 + fileListObj.current = filteredArray;
  89 + filteredArray.push(listItem);
  90 + setFileList(filteredArray);
  91 + return;
  92 + }
  93 + }
93 94
94 - // message.info('您的剪贴板中没有照片');  
95 - // };  
96 - // useEffect(() => {  
97 - // document.addEventListener('paste', onPaste);  
98 - // return () => {  
99 - // document.removeEventListener('paste', onPaste);  
100 - // };  
101 - // }, []); 95 + message.info('您的剪贴板中没有照片');
  96 + };
  97 + useEffect(() => {
  98 + document.addEventListener('paste', onPaste);
  99 + return () => {
  100 + document.removeEventListener('paste', onPaste);
  101 + };
  102 + }, []);
102 const uploadButton = ( 103 const uploadButton = (
103 <div> 104 <div>
104 <PlusOutlined /> 105 <PlusOutlined />
@@ -277,16 +278,14 @@ export default ({ @@ -277,16 +278,14 @@ export default ({
277 278
278 //附件处理 279 //附件处理
279 console.log(fileList); 280 console.log(fileList);
280 - let fileUrls = fileList?.map((file) => {  
281 - return { url: file.response?.data[0] };  
282 - }); 281 +
283 //财务审核 282 //财务审核
284 - return doFinancailCheck({  
285 - checkNotes: values.name,  
286 - ids: subOrderIds,  
287 - checkPassOrReject: true,  
288 - invoicingCheckAnnex: fileUrls,  
289 - }); 283 + // return doFinancailCheck({
  284 + // checkNotes: values.name,
  285 + // ids: subOrderIds,
  286 + // checkPassOrReject: true,
  287 + // invoicingCheckAnnex: fileUrls,
  288 + // });
290 }} 289 }}
291 onOpenChange={setCheckVisible} 290 onOpenChange={setCheckVisible}
292 > 291 >
src/pages/Order/constant.ts
@@ -275,12 +275,16 @@ export const MAIN_ORDER_COLUMNS = [ @@ -275,12 +275,16 @@ export const MAIN_ORDER_COLUMNS = [
275 data: { name: 'institution', institution: keywords }, 275 data: { name: 'institution', institution: keywords },
276 params: params, 276 params: params,
277 }); 277 });
278 - let options = data.map((c: any) => {  
279 - return {  
280 - label: c.orderValue,  
281 - value: c.orderValue,  
282 - };  
283 - }); 278 + let options = data
  279 + .filter((c: any) => {
  280 + return c.orderName === 'institution';
  281 + })
  282 + .map((item: any) => {
  283 + return {
  284 + label: item.orderValue,
  285 + value: item.orderValue,
  286 + };
  287 + });
284 return options; 288 return options;
285 }, 289 },
286 }, 290 },
@@ -301,12 +305,16 @@ export const MAIN_ORDER_COLUMNS = [ @@ -301,12 +305,16 @@ export const MAIN_ORDER_COLUMNS = [
301 }, 305 },
302 params: params, 306 params: params,
303 }); 307 });
304 - let options = data.map((c: any) => {  
305 - return {  
306 - label: c.orderValue,  
307 - value: c.orderValue,  
308 - };  
309 - }); 308 + let options = data
  309 + .filter((c: any) => {
  310 + return c.orderName === 'institutionCustomerUser';
  311 + })
  312 + .map((item: any) => {
  313 + return {
  314 + label: item.orderValue,
  315 + value: item.orderValue,
  316 + };
  317 + });
310 return options; 318 return options;
311 }, 319 },
312 }, 320 },
src/pages/Order/index.tsx
@@ -4,6 +4,7 @@ import { @@ -4,6 +4,7 @@ import {
4 postServiceOrderAfterSalesCompletion, 4 postServiceOrderAfterSalesCompletion,
5 postServiceOrderNoNeedSend, 5 postServiceOrderNoNeedSend,
6 postServiceOrderOrderCancel, 6 postServiceOrderOrderCancel,
  7 + postServiceOrderProcurePrint,
7 postServiceOrderQueryServiceOrder, 8 postServiceOrderQueryServiceOrder,
8 } from '@/services'; 9 } from '@/services';
9 import { orderExport } from '@/services/order'; 10 import { orderExport } from '@/services/order';
@@ -102,7 +103,7 @@ const OrderPage = () =&gt; { @@ -102,7 +103,7 @@ const OrderPage = () =&gt; {
102 const [deliverInfoDrawerVisible, setDeliverInfoDrawerVisible] = 103 const [deliverInfoDrawerVisible, setDeliverInfoDrawerVisible] =
103 useState<boolean>(false); 104 useState<boolean>(false);
104 const [orderOptType, setOrderOptType] = useState<string>(''); 105 const [orderOptType, setOrderOptType] = useState<string>('');
105 - const [isFinalcialEdit, setIsFinalcialEdit] = useState<boolean>(false); 106 + const [isEdit, setIsEdit] = useState<boolean>(false);
106 const [expandedRowKeys, setExpandedRowKeys] = useState<Key[]>([]); 107 const [expandedRowKeys, setExpandedRowKeys] = useState<Key[]>([]);
107 const [orderRow, setOrderRow] = useState<Partial<OrderType>>({}); 108 const [orderRow, setOrderRow] = useState<Partial<OrderType>>({});
108 const [mainOrderAllItemKeys, setMainOrderAllItemKeys] = useState([]); 109 const [mainOrderAllItemKeys, setMainOrderAllItemKeys] = useState([]);
@@ -117,6 +118,10 @@ const OrderPage = () =&gt; { @@ -117,6 +118,10 @@ const OrderPage = () =&gt; {
117 const [currentPage, setCurrentPage] = useState(1); 118 const [currentPage, setCurrentPage] = useState(1);
118 const [orderCheckType, setOrderCheckType] = useState(''); 119 const [orderCheckType, setOrderCheckType] = useState('');
119 const [onlyShowCancelOrder, setOnlyShowCancelOrder] = useState(false); 120 const [onlyShowCancelOrder, setOnlyShowCancelOrder] = useState(false);
  121 + const [onlyShowProcureToBeProcessed, setOnlyShowProcureToBeProcessed] =
  122 + useState(false);
  123 + const [onlyShowFinancialToBeProcessed, setOnlyShowFinancialToBeProcessed] =
  124 + useState(false);
120 const mainTableRef = useRef(); 125 const mainTableRef = useRef();
121 let [searchParams, setSearchParam] = useState(Object); //表格的查询条件存储 126 let [searchParams, setSearchParam] = useState(Object); //表格的查询条件存储
122 const [messageApi, contextHolder] = message.useMessage(); 127 const [messageApi, contextHolder] = message.useMessage();
@@ -158,6 +163,16 @@ const OrderPage = () =&gt; { @@ -158,6 +163,16 @@ const OrderPage = () =&gt; {
158 refreshTable(); 163 refreshTable();
159 } 164 }
160 165
  166 + function changeProcureToBeProcessed(e: any) {
  167 + setOnlyShowProcureToBeProcessed(e.target.checked);
  168 + refreshTable();
  169 + }
  170 +
  171 + function changeFinancialToBeProcessed(e: any) {
  172 + setOnlyShowFinancialToBeProcessed(e.target.checked);
  173 + refreshTable();
  174 + }
  175 +
161 // const resize = () => { 176 // const resize = () => {
162 // // 计算元素底部到视口顶部的距离 177 // // 计算元素底部到视口顶部的距离
163 // let bottomDistance = document 178 // let bottomDistance = document
@@ -432,6 +447,7 @@ const OrderPage = () =&gt; { @@ -432,6 +447,7 @@ const OrderPage = () =&gt; {
432 </div> 447 </div>
433 {/* 编辑备注按钮 */} 448 {/* 编辑备注按钮 */}
434 <EditTwoTone 449 <EditTwoTone
  450 + className="pl-1 hover:curcor-pointer"
435 onClick={() => { 451 onClick={() => {
436 setNotesEditVisible(true); 452 setNotesEditVisible(true);
437 setOrderRow(optRecord); 453 setOrderRow(optRecord);
@@ -709,19 +725,36 @@ const OrderPage = () =&gt; { @@ -709,19 +725,36 @@ const OrderPage = () =&gt; {
709 )} 725 )}
710 726
711 {optRecord.subPath?.includes('procurePrint') ? ( 727 {optRecord.subPath?.includes('procurePrint') ? (
712 - <Button 728 + <ButtonConfirm
713 className="p-0" 729 className="p-0"
714 - type="link"  
715 - onClick={async () => {  
716 - setOrderPrintVisible(true);  
717 - setSelectedRows([optRecord]);  
718 - setOrderRow(record);  
719 - setOrderCheckType(CHECK_TYPE.PROCURE); 730 + title="确认打印?"
  731 + text="采购打印"
  732 + onConfirm={async () => {
  733 + let res = await postServiceOrderProcurePrint({
  734 + data: {
  735 + ids: [optRecord.id],
  736 + },
  737 + });
  738 +
  739 + if (res.result === RESPONSE_CODE.SUCCESS) {
  740 + message.success(res.message);
  741 + refreshTable();
  742 + }
720 }} 743 }}
721 - >  
722 - 采购打印  
723 - </Button> 744 + />
724 ) : ( 745 ) : (
  746 + // <Button
  747 + // className="p-0"
  748 + // type="link"
  749 + // onClick={async () => {
  750 + // setOrderPrintVisible(true);
  751 + // setSelectedRows([optRecord]);
  752 + // setOrderRow(record);
  753 + // setOrderCheckType(CHECK_TYPE.PROCURE);
  754 + // }}
  755 + // >
  756 + // 采购打印
  757 + // </Button>
725 '' 758 ''
726 )} 759 )}
727 760
@@ -733,7 +766,7 @@ const OrderPage = () =&gt; { @@ -733,7 +766,7 @@ const OrderPage = () =&gt; {
733 setFinancialVisible(true); 766 setFinancialVisible(true);
734 setOrderRow(record); 767 setOrderRow(record);
735 setSelectedRows([optRecord]); 768 setSelectedRows([optRecord]);
736 - setIsFinalcialEdit(true); 769 + setIsEdit(true);
737 }} 770 }}
738 > 771 >
739 编辑 772 编辑
@@ -747,7 +780,7 @@ const OrderPage = () =&gt; { @@ -747,7 +780,7 @@ const OrderPage = () =&gt; {
747 type="link" 780 type="link"
748 onClick={() => { 781 onClick={() => {
749 setFinancialVisible(true); 782 setFinancialVisible(true);
750 - setIsFinalcialEdit(false); 783 + setIsEdit(false);
751 setOrderRow(record); 784 setOrderRow(record);
752 setSelectedRows([optRecord]); 785 setSelectedRows([optRecord]);
753 setIsMainOrder(false); 786 setIsMainOrder(false);
@@ -766,6 +799,7 @@ const OrderPage = () =&gt; { @@ -766,6 +799,7 @@ const OrderPage = () =&gt; {
766 onClick={() => { 799 onClick={() => {
767 setApplyForInvoicingVisible(true); 800 setApplyForInvoicingVisible(true);
768 setSelectedRows([optRecord]); 801 setSelectedRows([optRecord]);
  802 + setIsEdit(false);
769 }} 803 }}
770 > 804 >
771 申请开票 805 申请开票
@@ -963,7 +997,7 @@ const OrderPage = () =&gt; { @@ -963,7 +997,7 @@ const OrderPage = () =&gt; {
963 placement="topLeft" 997 placement="topLeft"
964 > 998 >
965 <span className="text-[#8C8C8C]"> 999 <span className="text-[#8C8C8C]">
966 - 销售申请开票备注: 1000 + 申请开票备注:
967 {optRecord.applyInvoicingNotes === undefined || 1001 {optRecord.applyInvoicingNotes === undefined ||
968 optRecord.applyInvoicingNotes === null 1002 optRecord.applyInvoicingNotes === null
969 ? '暂无备注' 1003 ? '暂无备注'
@@ -973,6 +1007,17 @@ const OrderPage = () =&gt; { @@ -973,6 +1007,17 @@ const OrderPage = () =&gt; {
973 </div> 1007 </div>
974 1008
975 {getAfterAnnexList()} 1009 {getAfterAnnexList()}
  1010 +
  1011 + <Tooltip title="编辑">
  1012 + <EditTwoTone
  1013 + className="pl-1 hover:curcor-pointer"
  1014 + onClick={() => {
  1015 + setApplyForInvoicingVisible(true);
  1016 + setSelectedRows([optRecord]);
  1017 + setIsEdit(true);
  1018 + }}
  1019 + />
  1020 + </Tooltip>
976 </div> 1021 </div>
977 <Divider type="vertical" className="mx-5" /> 1022 <Divider type="vertical" className="mx-5" />
978 <div className="flex items-center max-w-[500px]"> 1023 <div className="flex items-center max-w-[500px]">
@@ -1114,7 +1159,7 @@ const OrderPage = () =&gt; { @@ -1114,7 +1159,7 @@ const OrderPage = () =&gt; {
1114 </div> 1159 </div>
1115 <Tooltip title="编辑"> 1160 <Tooltip title="编辑">
1116 <EditTwoTone 1161 <EditTwoTone
1117 - className="hover:curcor-pointer" 1162 + className="pl-1 hover:curcor-pointer"
1118 onClick={() => { 1163 onClick={() => {
1119 setNotesEditVisible(true); 1164 setNotesEditVisible(true);
1120 setOrderRow(record); 1165 setOrderRow(record);
@@ -1344,7 +1389,7 @@ const OrderPage = () =&gt; { @@ -1344,7 +1389,7 @@ const OrderPage = () =&gt; {
1344 } 1389 }
1345 setOrderRow(record); 1390 setOrderRow(record);
1346 setFinancialVisible(true); 1391 setFinancialVisible(true);
1347 - setIsFinalcialEdit(false); 1392 + setIsEdit(false);
1348 }} 1393 }}
1349 > 1394 >
1350 开票 1395 开票
@@ -1378,6 +1423,7 @@ const OrderPage = () =&gt; { @@ -1378,6 +1423,7 @@ const OrderPage = () =&gt; {
1378 } 1423 }
1379 } 1424 }
1380 setApplyForInvoicingVisible(true); 1425 setApplyForInvoicingVisible(true);
  1426 + setIsEdit(false);
1381 }} 1427 }}
1382 > 1428 >
1383 申请开票 1429 申请开票
@@ -1674,22 +1720,58 @@ const OrderPage = () =&gt; { @@ -1674,22 +1720,58 @@ const OrderPage = () =&gt; {
1674 )} 1720 )}
1675 1721
1676 {record.mainPath?.includes('procurePrint') ? ( 1722 {record.mainPath?.includes('procurePrint') ? (
1677 - <Button 1723 + <ButtonConfirm
1678 className="p-0" 1724 className="p-0"
1679 - type="link"  
1680 - onClick={() => {  
1681 - if (!selectedRowObj[record.id]?.length) {  
1682 - return message.error('请选择选择子订单'); 1725 + title="确认打印?"
  1726 + text="采购打印"
  1727 + onConfirm={async () => {
  1728 + let selectedSubOrders = selectedRowObj[record.id];
  1729 + if (selectedSubOrders === undefined) {
  1730 + selectedSubOrders = record.subOrderInformationLists;
  1731 + }
  1732 + for (let i = 0; i < selectedSubOrders.length; i++) {
  1733 + if (
  1734 + selectedSubOrders[i].orderStatus !==
  1735 + 'PROCURE_PROCESS_FOR_MINE'
  1736 + ) {
  1737 + message.error(
  1738 + '请选择采购待打印状态的子订单进行打印',
  1739 + );
  1740 + return false;
  1741 + }
  1742 + }
  1743 +
  1744 + const ids = selectedSubOrders?.map((item) => {
  1745 + return item.id;
  1746 + });
  1747 + let res = await postServiceOrderProcurePrint({
  1748 + data: {
  1749 + ids: ids,
  1750 + },
  1751 + });
  1752 +
  1753 + if (res.result === RESPONSE_CODE.SUCCESS) {
  1754 + message.success(res.message);
  1755 + refreshTable();
1683 } 1756 }
1684 - setSelectedRows(selectedRowObj[record.id]);  
1685 - setOrderRow(record);  
1686 - setOrderPrintVisible(true);  
1687 - setOrderCheckType(CHECK_TYPE.PROCURE);  
1688 }} 1757 }}
1689 - >  
1690 - 采购打印  
1691 - </Button> 1758 + />
1692 ) : ( 1759 ) : (
  1760 + // <Button
  1761 + // className="p-0"
  1762 + // type="link"
  1763 + // onClick={() => {
  1764 + // if (!selectedRowObj[record.id]?.length) {
  1765 + // return message.error('请选择选择子订单');
  1766 + // }
  1767 + // setSelectedRows(selectedRowObj[record.id]);
  1768 + // setOrderRow(record);
  1769 + // setOrderPrintVisible(true);
  1770 + // setOrderCheckType(CHECK_TYPE.PROCURE);
  1771 + // }}
  1772 + // >
  1773 + // 采购打印
  1774 + // </Button>
1693 '' 1775 ''
1694 )} 1776 )}
1695 </Space> 1777 </Space>
@@ -1722,12 +1804,38 @@ const OrderPage = () =&gt; { @@ -1722,12 +1804,38 @@ const OrderPage = () =&gt; {
1722 ); 1804 );
1723 1805
1724 function toolBarRender() { 1806 function toolBarRender() {
  1807 + let roleCode = userInfo?.roleSmallVO?.code;
1725 let toolBtns = []; 1808 let toolBtns = [];
1726 1809
1727 toolBtns.push( 1810 toolBtns.push(
1728 <Checkbox onChange={changeCancelOrderShow}>只看作废</Checkbox>, 1811 <Checkbox onChange={changeCancelOrderShow}>只看作废</Checkbox>,
1729 ); 1812 );
1730 1813
  1814 + //采购可以筛选出需要处理的订单
  1815 + if (roleCode === 'procure') {
  1816 + toolBtns.push(
  1817 + <Checkbox onChange={changeProcureToBeProcessed}>只看需处理</Checkbox>,
  1818 + );
  1819 + }
  1820 +
  1821 + //财务可以将需要处理的订单排序到前面
  1822 + if (roleCode === 'finance') {
  1823 + toolBtns.push(
  1824 + <Checkbox onChange={changeFinancialToBeProcessed}>排序</Checkbox>,
  1825 + );
  1826 + }
  1827 +
  1828 + if (roleCode === 'admin') {
  1829 + toolBtns.push(
  1830 + <Checkbox onChange={changeProcureToBeProcessed}>
  1831 + 只看需处理(采购)
  1832 + </Checkbox>,
  1833 + );
  1834 + toolBtns.push(
  1835 + <Checkbox onChange={changeFinancialToBeProcessed}>排序</Checkbox>,
  1836 + );
  1837 + }
  1838 +
1731 //导出按钮配置 1839 //导出按钮配置
1732 const items: MenuProps['items'] = [ 1840 const items: MenuProps['items'] = [
1733 { 1841 {
@@ -1920,7 +2028,6 @@ const OrderPage = () =&gt; { @@ -1920,7 +2028,6 @@ const OrderPage = () =&gt; {
1920 sorter, 2028 sorter,
1921 filter, 2029 filter,
1922 ) => { 2030 ) => {
1923 - //保存这个搜索条件  
1924 //订单id处理 2031 //订单id处理
1925 if (params.id !== '') { 2032 if (params.id !== '') {
1926 if (params.id?.indexOf(',')) { 2033 if (params.id?.indexOf(',')) {
@@ -1930,6 +2037,19 @@ const OrderPage = () =&gt; { @@ -1930,6 +2037,19 @@ const OrderPage = () =&gt; {
1930 }); 2037 });
1931 } 2038 }
1932 } 2039 }
  2040 + //采购是否只查看需要自己处理的
  2041 + if (onlyShowProcureToBeProcessed) {
  2042 + params.condition = 10;
  2043 + }
  2044 +
  2045 + //财务是否只查看需要自己处理的
  2046 + if (onlyShowFinancialToBeProcessed) {
  2047 + params.condition = 20;
  2048 + }
  2049 +
  2050 + //是否只查看已作废
  2051 + params.isDeleteQueryOrder = onlyShowCancelOrder;
  2052 + //保存这个搜索条件
1933 setSearchParam(params); 2053 setSearchParam(params);
1934 const { data } = await postServiceOrderQueryServiceOrder({ 2054 const { data } = await postServiceOrderQueryServiceOrder({
1935 // ...params, 2055 // ...params,
@@ -1937,7 +2057,7 @@ const OrderPage = () =&gt; { @@ -1937,7 +2057,7 @@ const OrderPage = () =&gt; {
1937 // @ts-ignore 2057 // @ts-ignore
1938 sorter, 2058 sorter,
1939 filter, 2059 filter,
1940 - data: { ...params, isDeleteQueryOrder: onlyShowCancelOrder }, 2060 + data: { ...params },
1941 }); 2061 });
1942 2062
1943 let mainOrderIds = data?.data?.map((d) => d.id); 2063 let mainOrderIds = data?.data?.map((d) => d.id);
@@ -1992,6 +2112,7 @@ const OrderPage = () =&gt; { @@ -1992,6 +2112,7 @@ const OrderPage = () =&gt; {
1992 <ApplyForInvoicingModal 2112 <ApplyForInvoicingModal
1993 setCheckVisible={setApplyForInvoicingVisible} 2113 setCheckVisible={setApplyForInvoicingVisible}
1994 subOrders={selectedRows} 2114 subOrders={selectedRows}
  2115 + isEdit={isEdit}
1995 onClose={() => { 2116 onClose={() => {
1996 setApplyForInvoicingVisible(false); 2117 setApplyForInvoicingVisible(false);
1997 setSelectedRows({}); 2118 setSelectedRows({});
@@ -2032,7 +2153,7 @@ const OrderPage = () =&gt; { @@ -2032,7 +2153,7 @@ const OrderPage = () =&gt; {
2032 2153
2033 {financialVisible && ( 2154 {financialVisible && (
2034 <FinancialDrawer 2155 <FinancialDrawer
2035 - isEdit={isFinalcialEdit} 2156 + isEdit={isEdit}
2036 mainOrder={orderRow} 2157 mainOrder={orderRow}
2037 subOrders={selectedRows} 2158 subOrders={selectedRows}
2038 isMainOrder={isMainOrder} 2159 isMainOrder={isMainOrder}
@@ -2040,14 +2161,14 @@ const OrderPage = () =&gt; { @@ -2040,14 +2161,14 @@ const OrderPage = () =&gt; {
2040 setFinancialVisible(false); 2161 setFinancialVisible(false);
2041 setOrderRow({}); 2162 setOrderRow({});
2042 setIsMainOrder(false); 2163 setIsMainOrder(false);
2043 - setIsFinalcialEdit(false); 2164 + setIsEdit(false);
2044 }} 2165 }}
2045 onClose={() => { 2166 onClose={() => {
2046 setFinancialVisible(false); 2167 setFinancialVisible(false);
2047 setOrderRow({}); 2168 setOrderRow({});
2048 refreshTable(); 2169 refreshTable();
2049 setIsMainOrder(false); 2170 setIsMainOrder(false);
2050 - setIsFinalcialEdit(false); 2171 + setIsEdit(false);
2051 }} 2172 }}
2052 /> 2173 />
2053 )} 2174 )}
src/pages/OrderPrint/OrderPrintModal.tsx
@@ -45,10 +45,10 @@ export default ({ @@ -45,10 +45,10 @@ export default ({
45 return; 45 return;
46 } 46 }
47 confirm({ 47 confirm({
48 - title: '确认打印出货单', 48 + title: '打印出货单',
49 icon: <ExclamationCircleFilled />, 49 icon: <ExclamationCircleFilled />,
50 - content: '您是否已打印出货单?',  
51 - okText: '是的我已打印', 50 + content: '请确认订单信息是否正确。点击打印后订单状态将变为待发货状态。',
  51 + okText: '打印',
52 okType: 'primary', 52 okType: 'primary',
53 okButtonProps: {}, 53 okButtonProps: {},
54 cancelText: '取消', 54 cancelText: '取消',
@@ -80,6 +80,15 @@ export default ({ @@ -80,6 +80,15 @@ export default ({
80 } 80 }
81 81
82 if (res.result === RESPONSE_CODE.SUCCESS) { 82 if (res.result === RESPONSE_CODE.SUCCESS) {
  83 + //printJS打印出货单
  84 + printJS({
  85 + printable: 'printArea', // 元素id,不支持多个
  86 + scanStyles: false,
  87 + type: 'html',
  88 + targetStyle: ['* '],
  89 + targetStyles: ['*'],
  90 + style: printerCSS(),
  91 + });
83 message.success(res.message); 92 message.success(res.message);
84 onClose(); 93 onClose();
85 } 94 }
@@ -96,19 +105,18 @@ export default ({ @@ -96,19 +105,18 @@ export default ({
96 centered 105 centered
97 open 106 open
98 onOk={() => { 107 onOk={() => {
99 - //printJS打印出货单  
100 - printJS({  
101 - printable: 'printArea', // 元素id,不支持多个  
102 - scanStyles: false,  
103 - type: 'html',  
104 - targetStyle: ['* '],  
105 - targetStyles: ['*'],  
106 - style: printerCSS(),  
107 - onPrintDialogClose: () => {  
108 - showPropsConfirm();  
109 - },  
110 - });  
111 - 108 + if (isRePrint) {
  109 + printJS({
  110 + printable: 'printArea', // 元素id,不支持多个
  111 + scanStyles: false,
  112 + type: 'html',
  113 + targetStyle: ['* '],
  114 + targetStyles: ['*'],
  115 + style: printerCSS(),
  116 + });
  117 + setVisible(false);
  118 + }
  119 + showPropsConfirm();
112 // onClose(); 120 // onClose();
113 }} 121 }}
114 onCancel={() => setVisible(false)} 122 onCancel={() => setVisible(false)}