Commit b65804494e6e506376019cd3f98f8e06cb8f4172

Authored by boyang
2 parents 23988153 cfc0fa55

fix: 弹窗跳转一次

Too many changes to show.

To preserve performance only 9 of 10 files are displayed.

src/pages/Invoice/Invoice/components/AddBankStatementModal.tsx
@@ -14,11 +14,21 @@ export default ({ getRows, onFinish }) => { @@ -14,11 +14,21 @@ export default ({ getRows, onFinish }) => {
14 dataIndex: 'id', 14 dataIndex: 'id',
15 }, 15 },
16 { 16 {
  17 + title: '编号',
  18 + hideInTable: true,
  19 + dataIndex: 'id',
  20 + },
  21 + {
17 title: '流水号', 22 title: '流水号',
18 hideInSearch: true, 23 hideInSearch: true,
19 dataIndex: 'serialNumber', 24 dataIndex: 'serialNumber',
20 }, 25 },
21 { 26 {
  27 + title: '流水号',
  28 + hideInTable: true,
  29 + dataIndex: 'serialNumber',
  30 + },
  31 + {
22 title: '收款时间', 32 title: '收款时间',
23 dataIndex: 'collectionDatetime', 33 dataIndex: 'collectionDatetime',
24 hideInSearch: true, 34 hideInSearch: true,
@@ -26,7 +36,7 @@ export default ({ getRows, onFinish }) => { @@ -26,7 +36,7 @@ export default ({ getRows, onFinish }) => {
26 }, 36 },
27 { 37 {
28 title: '收款方', 38 title: '收款方',
29 - hideInTable: true, 39 + hideInSearch: true,
30 dataIndex: 'payeeText', 40 dataIndex: 'payeeText',
31 }, 41 },
32 { 42 {
src/pages/Invoice/Invoice/components/InvoiceVerificationModal.tsx
@@ -20,7 +20,6 @@ export default ({ invoiceId, setVisible, onClose }) => { @@ -20,7 +20,6 @@ export default ({ invoiceId, setVisible, onClose }) => {
20 const [bankChooseModalVisible, setBankChooseModalVisible] = useState(false); 20 const [bankChooseModalVisible, setBankChooseModalVisible] = useState(false);
21 const [invoiceInfo, setInvoiceInfo] = useState({}); 21 const [invoiceInfo, setInvoiceInfo] = useState({});
22 const [relationOrderIds, setRelationOrderIds] = useState([]); 22 const [relationOrderIds, setRelationOrderIds] = useState([]);
23 - const [setRelationBankStatements] = useState([]);  
24 const actionRef = useRef<ActionType>(); 23 const actionRef = useRef<ActionType>();
25 24
26 const loadInvoiceData = async () => { 25 const loadInvoiceData = async () => {
@@ -31,7 +30,6 @@ export default ({ invoiceId, setVisible, onClose }) =&gt; { @@ -31,7 +30,6 @@ export default ({ invoiceId, setVisible, onClose }) =&gt; {
31 setInvoiceInfo(res.data); 30 setInvoiceInfo(res.data);
32 setRelationOrderIds(res.data.mainOrderIds); 31 setRelationOrderIds(res.data.mainOrderIds);
33 console.log('bs:' + res.data.bankStatementDtos); 32 console.log('bs:' + res.data.bankStatementDtos);
34 - setRelationBankStatements(res.data.bankStatementDtos);  
35 } 33 }
36 }; 34 };
37 35
@@ -117,6 +115,18 @@ export default ({ invoiceId, setVisible, onClose }) =&gt; { @@ -117,6 +115,18 @@ export default ({ invoiceId, setVisible, onClose }) =&gt; {
117 }, 115 },
118 { 116 {
119 key: '11', 117 key: '11',
  118 + label: '订单类型',
  119 + children: invoiceInfo?.orderTypeText,
  120 + span: 12,
  121 + },
  122 + {
  123 + key: '12',
  124 + label: '绑定流水号',
  125 + children: invoiceInfo?.serialNumbersTextByOrder,
  126 + span: 12,
  127 + },
  128 + {
  129 + key: '13',
120 label: '备注', 130 label: '备注',
121 children: invoiceInfo?.notes, 131 children: invoiceInfo?.notes,
122 span: 24, 132 span: 24,
src/pages/Invoice/Invoice/components/invoiceWriteOffModal.tsx
@@ -30,24 +30,29 @@ export default ({ getData, triggerButton, readOnly }) =&gt; { @@ -30,24 +30,29 @@ export default ({ getData, triggerButton, readOnly }) =&gt; {
30 { 30 {
31 title: '发票号码', 31 title: '发票号码',
32 dataIndex: 'invoiceNumber', 32 dataIndex: 'invoiceNumber',
  33 + ellipsis: true,
33 }, 34 },
34 { 35 {
35 title: '收款方', 36 title: '收款方',
36 dataIndex: 'payeeText', 37 dataIndex: 'payeeText',
  38 + ellipsis: true,
37 }, 39 },
38 { 40 {
39 title: '付款方', 41 title: '付款方',
40 dataIndex: 'purchaser', 42 dataIndex: 'purchaser',
  43 + ellipsis: true,
41 }, 44 },
42 { 45 {
43 title: '金额', 46 title: '金额',
44 dataIndex: 'money', 47 dataIndex: 'money',
45 valueType: 'money', 48 valueType: 'money',
  49 + ellipsis: true,
46 }, 50 },
47 { 51 {
48 title: '日期', 52 title: '日期',
49 dataIndex: 'invoicingTime', 53 dataIndex: 'invoicingTime',
50 valueType: 'date', 54 valueType: 'date',
  55 + ellipsis: true,
51 }, 56 },
52 ]; 57 ];
53 if (!readOnly) { 58 if (!readOnly) {
@@ -84,49 +89,52 @@ export default ({ getData, triggerButton, readOnly }) =&gt; { @@ -84,49 +89,52 @@ export default ({ getData, triggerButton, readOnly }) =&gt; {
84 { 89 {
85 title: '流水号', 90 title: '流水号',
86 dataIndex: 'serialNumber', 91 dataIndex: 'serialNumber',
  92 + ellipsis: true,
87 }, 93 },
88 { 94 {
89 title: '收款方', 95 title: '收款方',
90 dataIndex: 'payeeText', 96 dataIndex: 'payeeText',
  97 + ellipsis: true,
91 }, 98 },
92 { 99 {
93 title: '付款方', 100 title: '付款方',
94 dataIndex: 'payer', 101 dataIndex: 'payer',
  102 + ellipsis: true,
95 }, 103 },
96 { 104 {
97 title: '金额', 105 title: '金额',
98 dataIndex: 'amount', 106 dataIndex: 'amount',
99 valueType: 'money', 107 valueType: 'money',
  108 + ellipsis: true,
100 }, 109 },
101 { 110 {
102 title: '日期', 111 title: '日期',
103 dataIndex: 'collectionDatetime', 112 dataIndex: 'collectionDatetime',
104 valueType: 'date', 113 valueType: 'date',
  114 + ellipsis: true,
105 }, 115 },
106 ]; 116 ];
107 - if (!readOnly) {  
108 - columns.push({  
109 - title: '操作',  
110 - valueType: 'option',  
111 - width: 200,  
112 - render: (text, record) => [  
113 - <a  
114 - key="delete"  
115 - onClick={() => {  
116 - const tableDataSource =  
117 - formRef.current?.getFieldValue('bankStatements');  
118 - console.log(JSON.stringify(tableDataSource));  
119 - formRef.current?.setFieldValue(  
120 - 'bankStatements',  
121 - tableDataSource.filter((item) => item.id !== record.id),  
122 - );  
123 - }}  
124 - >  
125 - 删除  
126 - </a>,  
127 - ],  
128 - });  
129 - } 117 + columns.push({
  118 + title: '操作',
  119 + valueType: 'option',
  120 + width: 200,
  121 + render: (text, record) => [
  122 + <a
  123 + key="delete"
  124 + onClick={() => {
  125 + const tableDataSource =
  126 + formRef.current?.getFieldValue('bankStatements');
  127 + console.log(JSON.stringify(tableDataSource));
  128 + formRef.current?.setFieldValue(
  129 + 'bankStatements',
  130 + tableDataSource.filter((item) => item.id !== record.id),
  131 + );
  132 + }}
  133 + >
  134 + 删除
  135 + </a>,
  136 + ],
  137 + });
130 return columns; 138 return columns;
131 }; 139 };
132 140
@@ -155,9 +163,9 @@ export default ({ getData, triggerButton, readOnly }) =&gt; { @@ -155,9 +163,9 @@ export default ({ getData, triggerButton, readOnly }) =&gt; {
155 return getData(); 163 return getData();
156 }} 164 }}
157 /*initialValues={{ 165 /*initialValues={{
158 - invoiceWriteOffId:invoiceWriteOffId,  
159 - invoices:originInvoices,  
160 - }}*/ 166 + invoiceWriteOffId:invoiceWriteOffId,
  167 + invoices:originInvoices,
  168 + }}*/
161 > 169 >
162 <ProFormText name={'invoiceWriteOffId'} hidden={true}></ProFormText> 170 <ProFormText name={'invoiceWriteOffId'} hidden={true}></ProFormText>
163 171
@@ -295,30 +303,27 @@ export default ({ getData, triggerButton, readOnly }) =&gt; { @@ -295,30 +303,27 @@ export default ({ getData, triggerButton, readOnly }) =&gt; {
295 recordCreatorProps={false} 303 recordCreatorProps={false}
296 toolBarRender={() => [ 304 toolBarRender={() => [
297 <> 305 <>
298 - {!readOnly && (  
299 - <AddBankStatementModal  
300 - getRows={() => formRef.current?.getFieldValue('bankStatements')}  
301 - onFinish={(datas) => {  
302 - const bankStatements =  
303 - formRef.current?.getFieldValue('bankStatements');  
304 - // 添加非空判断,并处理为空的情况  
305 - const mergedBankStatements =  
306 - bankStatements && Array.isArray(bankStatements)  
307 - ? bankStatements  
308 - : [];  
309 - const mergedDatas =  
310 - datas && Array.isArray(datas) ? datas : [];  
311 - let res = [...mergedBankStatements, ...mergedDatas];  
312 - //对res 进行去重处理,根据id去重  
313 - const resMap = new Map();  
314 - res.forEach((item) => {  
315 - resMap.set(item.id, item);  
316 - });  
317 - res = Array.from(resMap.values());  
318 - formRef.current?.setFieldValue('bankStatements', res);  
319 - }}  
320 - />  
321 - )} 306 + <AddBankStatementModal
  307 + getRows={() => formRef.current?.getFieldValue('bankStatements')}
  308 + onFinish={(datas) => {
  309 + const bankStatements =
  310 + formRef.current?.getFieldValue('bankStatements');
  311 + // 添加非空判断,并处理为空的情况
  312 + const mergedBankStatements =
  313 + bankStatements && Array.isArray(bankStatements)
  314 + ? bankStatements
  315 + : [];
  316 + const mergedDatas = datas && Array.isArray(datas) ? datas : [];
  317 + let res = [...mergedBankStatements, ...mergedDatas];
  318 + //对res 进行去重处理,根据id去重
  319 + const resMap = new Map();
  320 + res.forEach((item) => {
  321 + resMap.set(item.id, item);
  322 + });
  323 + res = Array.from(resMap.values());
  324 + formRef.current?.setFieldValue('bankStatements', res);
  325 + }}
  326 + />
322 </>, 327 </>,
323 ]} 328 ]}
324 columns={getBankStatementColumns()} 329 columns={getBankStatementColumns()}
src/pages/Invoice/Invoice/index.tsx
@@ -11,6 +11,7 @@ import { @@ -11,6 +11,7 @@ import {
11 postServiceInvoiceGetWriteOffRecord, 11 postServiceInvoiceGetWriteOffRecord,
12 postServiceInvoiceQueryInvoice, 12 postServiceInvoiceQueryInvoice,
13 } from '@/services'; 13 } from '@/services';
  14 +import { orderExport } from '@/services/order';
14 import { enumValueToLabel, formatDateTime } from '@/utils'; 15 import { enumValueToLabel, formatDateTime } from '@/utils';
15 import { formatDate } from '@/utils/time'; 16 import { formatDate } from '@/utils/time';
16 import { ActionType, ProTable } from '@ant-design/pro-components'; 17 import { ActionType, ProTable } from '@ant-design/pro-components';
@@ -23,6 +24,7 @@ const InvoiceRecord = () =&gt; { @@ -23,6 +24,7 @@ const InvoiceRecord = () =&gt; {
23 const [invoiceVerificationVisible, setInvoiceVerificationVisible] = 24 const [invoiceVerificationVisible, setInvoiceVerificationVisible] =
24 useState(false); 25 useState(false);
25 const [invoiceId, setInvoiceId] = useState(undefined); 26 const [invoiceId, setInvoiceId] = useState(undefined);
  27 + const [messageApi, contextHolder] = message.useMessage();
26 const reloadInvoiceTable = () => { 28 const reloadInvoiceTable = () => {
27 invoiceActionRef.current?.reload(); 29 invoiceActionRef.current?.reload();
28 }; 30 };
@@ -216,6 +218,31 @@ const InvoiceRecord = () =&gt; { @@ -216,6 +218,31 @@ const InvoiceRecord = () =&gt; {
216 rowKey="id" 218 rowKey="id"
217 search={{ 219 search={{
218 labelWidth: 'auto', 220 labelWidth: 'auto',
  221 + optionRender: (searchConfig, formProps, dom) => [
  222 + ...dom.reverse(),
  223 + <Button
  224 + key="out"
  225 + onClick={() => {
  226 + const values = searchConfig?.form?.getFieldsValue();
  227 + messageApi.open({
  228 + type: 'loading',
  229 + content: '导出中...',
  230 + duration: 0,
  231 + });
  232 + orderExport(
  233 + '/api/service/invoice/exportInvoices',
  234 + '发票.xlsx',
  235 + 'POST',
  236 + values,
  237 + () => {
  238 + messageApi.destroy();
  239 + },
  240 + );
  241 + }}
  242 + >
  243 + 导出
  244 + </Button>,
  245 + ],
219 }} 246 }}
220 options={{ 247 options={{
221 setting: { 248 setting: {
@@ -265,6 +292,7 @@ const InvoiceRecord = () =&gt; { @@ -265,6 +292,7 @@ const InvoiceRecord = () =&gt; {
265 ) : ( 292 ) : (
266 '' 293 ''
267 )} 294 )}
  295 + {contextHolder}
268 </div> 296 </div>
269 ); 297 );
270 }; 298 };
src/pages/Invoice/InvoiceVerification/index.tsx
1 import ButtonConfirm from '@/components/ButtomConfirm'; 1 import ButtonConfirm from '@/components/ButtomConfirm';
2 import EllipsisDiv from '@/components/Div/EllipsisDiv'; 2 import EllipsisDiv from '@/components/Div/EllipsisDiv';
3 import { RESPONSE_CODE } from '@/constants/enum'; 3 import { RESPONSE_CODE } from '@/constants/enum';
  4 +import InvoiceWriteOffModal from '@/pages/Invoice/Invoice/components/invoiceWriteOffModal';
4 import BankImportModal from '@/pages/Invoice/InvoiceVerification/components/BankImportModal'; 5 import BankImportModal from '@/pages/Invoice/InvoiceVerification/components/BankImportModal';
5 import InvoiceRecordDetailModal from '@/pages/Invoice/InvoiceVerification/components/InvoiceRecordDetailModal'; 6 import InvoiceRecordDetailModal from '@/pages/Invoice/InvoiceVerification/components/InvoiceRecordDetailModal';
6 import InvoiceVerificationModal from '@/pages/Invoice/InvoiceVerification/components/InvoiceVerificationModal'; 7 import InvoiceVerificationModal from '@/pages/Invoice/InvoiceVerification/components/InvoiceVerificationModal';
@@ -13,7 +14,9 @@ import { @@ -13,7 +14,9 @@ import {
13 postServiceBankStatementDeleteBankStatement, 14 postServiceBankStatementDeleteBankStatement,
14 postServiceBankStatementEditBankStatement, 15 postServiceBankStatementEditBankStatement,
15 postServiceBankStatementQueryBankStatement, 16 postServiceBankStatementQueryBankStatement,
  17 + postServiceInvoiceGetWriteOffRecord,
16 } from '@/services'; 18 } from '@/services';
  19 +import { orderExport } from '@/services/order';
17 import { enumValueToLabel, formatDateTime } from '@/utils'; 20 import { enumValueToLabel, formatDateTime } from '@/utils';
18 import { formatDate } from '@/utils/time'; 21 import { formatDate } from '@/utils/time';
19 import { PlusOutlined } from '@ant-design/icons'; 22 import { PlusOutlined } from '@ant-design/icons';
@@ -27,6 +30,7 @@ const InvoiceRecord = () =&gt; { @@ -27,6 +30,7 @@ const InvoiceRecord = () =&gt; {
27 const [bankImportModalVisible, setBankImportModalVisible] = useState(false); 30 const [bankImportModalVisible, setBankImportModalVisible] = useState(false);
28 const [invoiceVerificationVisible, setInvoiceVerificationVisible] = 31 const [invoiceVerificationVisible, setInvoiceVerificationVisible] =
29 useState(false); 32 useState(false);
  33 + const [messageApi, contextHolder] = message.useMessage();
30 const [invoiceId] = useState(undefined); 34 const [invoiceId] = useState(undefined);
31 const [invoiceRecordDetailVisible, setInvoiceRecordDetailVisible] = 35 const [invoiceRecordDetailVisible, setInvoiceRecordDetailVisible] =
32 useState(false); 36 useState(false);
@@ -133,6 +137,28 @@ const InvoiceRecord = () =&gt; { @@ -133,6 +137,28 @@ const InvoiceRecord = () =&gt; {
133 ); 137 );
134 } 138 }
135 139
  140 + if (record.writeOffId !== null) {
  141 + btns.push(
  142 + <InvoiceWriteOffModal
  143 + getData={async () => {
  144 + console.log(record.writeOffId);
  145 + const res = await postServiceInvoiceGetWriteOffRecord({
  146 + data: { id: record.writeOffId },
  147 + });
  148 + const data = res.data;
  149 + return {
  150 + invoiceWriteOffId: data.id,
  151 + invoices: data.invoiceDtos,
  152 + bankStatements: data.bankStatementDtos,
  153 + };
  154 + }}
  155 + key="writeOff"
  156 + triggerButton={<Button type="link">核销记录</Button>}
  157 + readOnly={true}
  158 + />,
  159 + );
  160 + }
  161 +
136 if (record.paths?.includes('deleteBankStatement')) { 162 if (record.paths?.includes('deleteBankStatement')) {
137 btns.push( 163 btns.push(
138 <ButtonConfirm 164 <ButtonConfirm
@@ -202,6 +228,31 @@ const InvoiceRecord = () =&gt; { @@ -202,6 +228,31 @@ const InvoiceRecord = () =&gt; {
202 rowKey="id" 228 rowKey="id"
203 search={{ 229 search={{
204 labelWidth: 'auto', 230 labelWidth: 'auto',
  231 + optionRender: (searchConfig, formProps, dom) => [
  232 + ...dom.reverse(),
  233 + <Button
  234 + key="out"
  235 + onClick={() => {
  236 + const values = searchConfig?.form?.getFieldsValue();
  237 + messageApi.open({
  238 + type: 'loading',
  239 + content: '导出中...',
  240 + duration: 0,
  241 + });
  242 + orderExport(
  243 + '/api/service/invoice/exportBankStatements',
  244 + '银行流水.xlsx',
  245 + 'POST',
  246 + values,
  247 + () => {
  248 + messageApi.destroy();
  249 + },
  250 + );
  251 + }}
  252 + >
  253 + 导出
  254 + </Button>,
  255 + ],
205 }} 256 }}
206 options={{ 257 options={{
207 setting: { 258 setting: {
@@ -260,6 +311,7 @@ const InvoiceRecord = () =&gt; { @@ -260,6 +311,7 @@ const InvoiceRecord = () =&gt; {
260 ) : ( 311 ) : (
261 '' 312 ''
262 )} 313 )}
  314 + {contextHolder}
263 </div> 315 </div>
264 ); 316 );
265 }; 317 };
src/pages/Invoice/constant.tsx
@@ -78,6 +78,43 @@ export const INVOICE_COLUMNS = [ @@ -78,6 +78,43 @@ export const INVOICE_COLUMNS = [
78 hideInTable: true, 78 hideInTable: true,
79 }, 79 },
80 { 80 {
  81 + title: '订单状态',
  82 + dataIndex: 'orderTypeText',
  83 + valueType: 'text',
  84 + width: 180,
  85 + },
  86 + {
  87 + title: '绑定流水号',
  88 + dataIndex: 'serialNumbersTextByOrder',
  89 +
  90 + valueType: 'text',
  91 + width: 180,
  92 + },
  93 + {
  94 + title: '是否预付款',
  95 + dataIndex: 'orderIsPrePay',
  96 + valueType: 'select',
  97 + valueEnum: {
  98 + true: {
  99 + text: '是',
  100 + status: true,
  101 + },
  102 + false: {
  103 + text: '否',
  104 + status: false,
  105 + },
  106 + },
  107 + hideInTable: true,
  108 + width: 180,
  109 + },
  110 + {
  111 + title: '绑定流水号',
  112 + dataIndex: 'serialNumberLike',
  113 + hideInTable: true,
  114 + valueType: 'text',
  115 + width: 180,
  116 + },
  117 + {
81 title: '购买方', 118 title: '购买方',
82 dataIndex: 'purchaser', 119 dataIndex: 'purchaser',
83 valueType: 'text', 120 valueType: 'text',
src/pages/Order/Order/index.tsx
@@ -214,7 +214,7 @@ const OrderPage = () =&gt; { @@ -214,7 +214,7 @@ const OrderPage = () =&gt; {
214 const [ids, setIds] = useState([]); 214 const [ids, setIds] = useState([]);
215 const [recordOptNode, setRecordOptNode] = useState(null); 215 const [recordOptNode, setRecordOptNode] = useState(null);
216 const roleCode = userInfo?.roleSmallVO?.code; 216 const roleCode = userInfo?.roleSmallVO?.code;
217 - // const navigate = useNavigate(); 217 + const roles = userInfo?.roles;
218 const canMergeInvoicing = useMemo(() => { 218 const canMergeInvoicing = useMemo(() => {
219 if (subOrderSelectedMap.size === 0) { 219 if (subOrderSelectedMap.size === 0) {
220 return false; 220 return false;
@@ -228,6 +228,7 @@ const OrderPage = () =&gt; { @@ -228,6 +228,7 @@ const OrderPage = () =&gt; {
228 .every((subItem) => subItem.paths.includes('applyInvoicing_old')); 228 .every((subItem) => subItem.paths.includes('applyInvoicing_old'));
229 }, [selectedSubOrderKeys]); 229 }, [selectedSubOrderKeys]);
230 230
  231 + console.log(JSON.stringify(userInfo));
231 const triggerRecordOptNode = async (id) => { 232 const triggerRecordOptNode = async (id) => {
232 const res = await postServiceOrderGetCurrentOptNode({ 233 const res = await postServiceOrderGetCurrentOptNode({
233 query: { 234 query: {
@@ -2096,8 +2097,9 @@ const OrderPage = () =&gt; { @@ -2096,8 +2097,9 @@ const OrderPage = () =&gt; {
2096 title="已和客户确认发票??" 2097 title="已和客户确认发票??"
2097 text="确认发票" 2098 text="确认发票"
2098 onConfirm={async () => { 2099 onConfirm={async () => {
  2100 + let body = { ids: [optRecord.id] };
2099 const data = await postServiceOrderConfirmInvoice({ 2101 const data = await postServiceOrderConfirmInvoice({
2100 - data: [optRecord.id], 2102 + data: body,
2101 }); 2103 });
2102 if (data.result === RESPONSE_CODE.SUCCESS) { 2104 if (data.result === RESPONSE_CODE.SUCCESS) {
2103 message.success(data.message); 2105 message.success(data.message);
@@ -2108,7 +2110,6 @@ const OrderPage = () =&gt; { @@ -2108,7 +2110,6 @@ const OrderPage = () =&gt; {
2108 ) : ( 2110 ) : (
2109 '' 2111 ''
2110 )} 2112 )}
2111 -  
2112 {optRecord.paths?.includes('orderCancel') ? ( 2113 {optRecord.paths?.includes('orderCancel') ? (
2113 <ButtonConfirm 2114 <ButtonConfirm
2114 className="p-0" 2115 className="p-0"
@@ -3889,12 +3890,15 @@ const OrderPage = () =&gt; { @@ -3889,12 +3890,15 @@ const OrderPage = () =&gt; {
3889 title="已和客户确认发票?" 3890 title="已和客户确认发票?"
3890 text="确认发票" 3891 text="确认发票"
3891 onConfirm={async () => { 3892 onConfirm={async () => {
3892 - const data = await postServiceOrderConfirmInvoice({  
3893 - data: [ 3893 + let body = {
  3894 + ids: [
3894 ...record.subOrderInformationLists.map( 3895 ...record.subOrderInformationLists.map(
3895 (subOrder) => subOrder.id, 3896 (subOrder) => subOrder.id,
3896 ), 3897 ),
3897 ], 3898 ],
  3899 + };
  3900 + const data = await postServiceOrderConfirmInvoice({
  3901 + data: body,
3898 }); 3902 });
3899 if (data.result === RESPONSE_CODE.SUCCESS) { 3903 if (data.result === RESPONSE_CODE.SUCCESS) {
3900 message.success(data.message); 3904 message.success(data.message);
@@ -4042,7 +4046,7 @@ const OrderPage = () =&gt; { @@ -4042,7 +4046,7 @@ const OrderPage = () =&gt; {
4042 /** 4046 /**
4043 * 采购的订单状态筛选内容 4047 * 采购的订单状态筛选内容
4044 */ 4048 */
4045 - if (roleCode === 'procure' && item.dataIndex === 'orderStatus') { 4049 + if (roles.includes('PROCURE') && item.dataIndex === 'orderStatus') {
4046 item.valueEnum = enumToProTableEnumValue( 4050 item.valueEnum = enumToProTableEnumValue(
4047 PROCURE_PRIMARY_ORDER_STATUS_OPTIONS, 4051 PROCURE_PRIMARY_ORDER_STATUS_OPTIONS,
4048 ); 4052 );
@@ -4054,7 +4058,12 @@ const OrderPage = () =&gt; { @@ -4054,7 +4058,12 @@ const OrderPage = () =&gt; {
4054 /** 4058 /**
4055 * 采购可以筛选供应商备注 4059 * 采购可以筛选供应商备注
4056 */ 4060 */
4057 - if ((roleCode === 'procure' || roleCode === 'admin') && !isSupplier()) { 4061 + if (
  4062 + (roleCode === 'procure' ||
  4063 + roles.includes('PROCURE') ||
  4064 + roleCode === 'admin') &&
  4065 + !isSupplier()
  4066 + ) {
4058 mainOrdersColumns.push({ 4067 mainOrdersColumns.push({
4059 title: '供应商备注', 4068 title: '供应商备注',
4060 width: 120, 4069 width: 120,
@@ -4067,7 +4076,12 @@ const OrderPage = () =&gt; { @@ -4067,7 +4076,12 @@ const OrderPage = () =&gt; {
4067 /** 4076 /**
4068 * 采购可以筛选其他采购 4077 * 采购可以筛选其他采购
4069 */ 4078 */
4070 - if ((roleCode === 'procure' || roleCode === 'admin') && !isSupplier()) { 4079 + if (
  4080 + (roleCode === 'procure' ||
  4081 + roles.includes('PROCURE') ||
  4082 + roleCode === 'admin') &&
  4083 + !isSupplier()
  4084 + ) {
4071 mainOrdersColumns.push({ 4085 mainOrdersColumns.push({
4072 title: '采购名称', 4086 title: '采购名称',
4073 width: 120, 4087 width: 120,
@@ -4087,7 +4101,12 @@ const OrderPage = () =&gt; { @@ -4087,7 +4101,12 @@ const OrderPage = () =&gt; {
4087 /** 4101 /**
4088 * 排除采购 4102 * 排除采购
4089 */ 4103 */
4090 - if ((roleCode === 'procure' || roleCode === 'admin') && !isSupplier()) { 4104 + if (
  4105 + (roleCode === 'procure' ||
  4106 + roles.includes('PROCURE') ||
  4107 + roleCode === 'admin') &&
  4108 + !isSupplier()
  4109 + ) {
4091 mainOrdersColumns.push({ 4110 mainOrdersColumns.push({
4092 title: '采购排除', 4111 title: '采购排除',
4093 width: 120, 4112 width: 120,
@@ -4122,7 +4141,11 @@ const OrderPage = () =&gt; { @@ -4122,7 +4141,11 @@ const OrderPage = () =&gt; {
4122 } 4141 }
4123 4142
4124 //判断是否是采购,是的话新增一个筛选条件 4143 //判断是否是采购,是的话新增一个筛选条件
4125 - if (roleCode === 'procure' || roleCode === 'admin') { 4144 + if (
  4145 + roleCode === 'procure' ||
  4146 + roles.includes('PROCURE') ||
  4147 + roleCode === 'admin'
  4148 + ) {
4126 mainOrdersColumns.push({ 4149 mainOrdersColumns.push({
4127 title: isSupplier() ? '下单状态' : '采购下单状态', 4150 title: isSupplier() ? '下单状态' : '采购下单状态',
4128 dataIndex: 'procureOrderStatus', 4151 dataIndex: 'procureOrderStatus',
@@ -4151,7 +4174,7 @@ const OrderPage = () =&gt; { @@ -4151,7 +4174,7 @@ const OrderPage = () =&gt; {
4151 } 4174 }
4152 4175
4153 //采购可以筛选出需要处理的订单 4176 //采购可以筛选出需要处理的订单
4154 - if (roleCode === 'procure' && !isSupplier()) { 4177 + if (roles.includes('PROCURE') && !isSupplier()) {
4155 radios.push(<Radio value={60}>其他采购</Radio>); 4178 radios.push(<Radio value={60}>其他采购</Radio>);
4156 radios.push(<Radio value={10}>待处理</Radio>); 4179 radios.push(<Radio value={10}>待处理</Radio>);
4157 } 4180 }
@@ -4335,7 +4358,7 @@ const OrderPage = () =&gt; { @@ -4335,7 +4358,7 @@ const OrderPage = () =&gt; {
4335 key="out" 4358 key="out"
4336 onClick={() => { 4359 onClick={() => {
4337 setIsMainOrder(true); 4360 setIsMainOrder(true);
4338 - if (roleCode === 'procure') { 4361 + if (roles.includes('PROCURE')) {
4339 setProcureCheckModalVisible(true); 4362 setProcureCheckModalVisible(true);
4340 } 4363 }
4341 4364
src/pages/ResearchGroup/components/ResearchGroupAddModal.tsx
@@ -267,9 +267,15 @@ export default ({ setVisible, researchGroupId, onClose }) =&gt; { @@ -267,9 +267,15 @@ export default ({ setVisible, researchGroupId, onClose }) =&gt; {
267 let uidIdMap = new Map( 267 let uidIdMap = new Map(
268 accounts.map((item: any) => [item.accountId, item.id]), 268 accounts.map((item: any) => [item.accountId, item.id]),
269 ); 269 );
270 - let res = await postCanrdApiUserList({  
271 - data: { uids: accountIds, phones: phones },  
272 - }); 270 + let data = {};
  271 + if (accountIds.length > 0) {
  272 + data = { ...data, uids: accountIds };
  273 + }
  274 + if (phones.length > 0) {
  275 + data = { ...data, phones: phones };
  276 + }
  277 +
  278 + let res = await postCanrdApiUserList({ data });
273 if (res && res.result === RESPONSE_CODE.SUCCESS) { 279 if (res && res.result === RESPONSE_CODE.SUCCESS) {
274 let accountList = res?.data?.data; 280 let accountList = res?.data?.data;
275 console.log(accountList); 281 console.log(accountList);
src/services/definition.ts
@@ -3,82 +3,82 @@ @@ -3,82 +3,82 @@
3 /** Do not modify manually. 3 /** Do not modify manually.
4 content is generated automatically by `ts-gear`. */ 4 content is generated automatically by `ts-gear`. */
5 export type ModelAndViewStatus = 5 export type ModelAndViewStatus =
6 - | "100 CONTINUE"  
7 - | "101 SWITCHING_PROTOCOLS"  
8 - | "102 PROCESSING"  
9 - | "103 CHECKPOINT"  
10 - | "200 OK"  
11 - | "201 CREATED"  
12 - | "202 ACCEPTED"  
13 - | "203 NON_AUTHORITATIVE_INFORMATION"  
14 - | "204 NO_CONTENT"  
15 - | "205 RESET_CONTENT"  
16 - | "206 PARTIAL_CONTENT"  
17 - | "207 MULTI_STATUS"  
18 - | "208 ALREADY_REPORTED"  
19 - | "226 IM_USED"  
20 - | "300 MULTIPLE_CHOICES"  
21 - | "301 MOVED_PERMANENTLY"  
22 - | "302 FOUND"  
23 - | "302 MOVED_TEMPORARILY"  
24 - | "303 SEE_OTHER"  
25 - | "304 NOT_MODIFIED"  
26 - | "305 USE_PROXY"  
27 - | "307 TEMPORARY_REDIRECT"  
28 - | "308 PERMANENT_REDIRECT"  
29 - | "400 BAD_REQUEST"  
30 - | "401 UNAUTHORIZED"  
31 - | "402 PAYMENT_REQUIRED"  
32 - | "403 FORBIDDEN"  
33 - | "404 NOT_FOUND"  
34 - | "405 METHOD_NOT_ALLOWED"  
35 - | "406 NOT_ACCEPTABLE"  
36 - | "407 PROXY_AUTHENTICATION_REQUIRED"  
37 - | "408 REQUEST_TIMEOUT"  
38 - | "409 CONFLICT"  
39 - | "410 GONE"  
40 - | "411 LENGTH_REQUIRED"  
41 - | "412 PRECONDITION_FAILED"  
42 - | "413 PAYLOAD_TOO_LARGE"  
43 - | "413 REQUEST_ENTITY_TOO_LARGE"  
44 - | "414 URI_TOO_LONG"  
45 - | "414 REQUEST_URI_TOO_LONG"  
46 - | "415 UNSUPPORTED_MEDIA_TYPE"  
47 - | "416 REQUESTED_RANGE_NOT_SATISFIABLE"  
48 - | "417 EXPECTATION_FAILED"  
49 - | "418 I_AM_A_TEAPOT"  
50 - | "419 INSUFFICIENT_SPACE_ON_RESOURCE"  
51 - | "420 METHOD_FAILURE"  
52 - | "421 DESTINATION_LOCKED"  
53 - | "422 UNPROCESSABLE_ENTITY"  
54 - | "423 LOCKED"  
55 - | "424 FAILED_DEPENDENCY"  
56 - | "425 TOO_EARLY"  
57 - | "426 UPGRADE_REQUIRED"  
58 - | "428 PRECONDITION_REQUIRED"  
59 - | "429 TOO_MANY_REQUESTS"  
60 - | "431 REQUEST_HEADER_FIELDS_TOO_LARGE"  
61 - | "451 UNAVAILABLE_FOR_LEGAL_REASONS"  
62 - | "500 INTERNAL_SERVER_ERROR"  
63 - | "501 NOT_IMPLEMENTED"  
64 - | "502 BAD_GATEWAY"  
65 - | "503 SERVICE_UNAVAILABLE"  
66 - | "504 GATEWAY_TIMEOUT"  
67 - | "505 HTTP_VERSION_NOT_SUPPORTED"  
68 - | "506 VARIANT_ALSO_NEGOTIATES"  
69 - | "507 INSUFFICIENT_STORAGE"  
70 - | "508 LOOP_DETECTED"  
71 - | "509 BANDWIDTH_LIMIT_EXCEEDED"  
72 - | "510 NOT_EXTENDED"  
73 - | "511 NETWORK_AUTHENTICATION_REQUIRED"; 6 + | '100 CONTINUE'
  7 + | '101 SWITCHING_PROTOCOLS'
  8 + | '102 PROCESSING'
  9 + | '103 CHECKPOINT'
  10 + | '200 OK'
  11 + | '201 CREATED'
  12 + | '202 ACCEPTED'
  13 + | '203 NON_AUTHORITATIVE_INFORMATION'
  14 + | '204 NO_CONTENT'
  15 + | '205 RESET_CONTENT'
  16 + | '206 PARTIAL_CONTENT'
  17 + | '207 MULTI_STATUS'
  18 + | '208 ALREADY_REPORTED'
  19 + | '226 IM_USED'
  20 + | '300 MULTIPLE_CHOICES'
  21 + | '301 MOVED_PERMANENTLY'
  22 + | '302 FOUND'
  23 + | '302 MOVED_TEMPORARILY'
  24 + | '303 SEE_OTHER'
  25 + | '304 NOT_MODIFIED'
  26 + | '305 USE_PROXY'
  27 + | '307 TEMPORARY_REDIRECT'
  28 + | '308 PERMANENT_REDIRECT'
  29 + | '400 BAD_REQUEST'
  30 + | '401 UNAUTHORIZED'
  31 + | '402 PAYMENT_REQUIRED'
  32 + | '403 FORBIDDEN'
  33 + | '404 NOT_FOUND'
  34 + | '405 METHOD_NOT_ALLOWED'
  35 + | '406 NOT_ACCEPTABLE'
  36 + | '407 PROXY_AUTHENTICATION_REQUIRED'
  37 + | '408 REQUEST_TIMEOUT'
  38 + | '409 CONFLICT'
  39 + | '410 GONE'
  40 + | '411 LENGTH_REQUIRED'
  41 + | '412 PRECONDITION_FAILED'
  42 + | '413 PAYLOAD_TOO_LARGE'
  43 + | '413 REQUEST_ENTITY_TOO_LARGE'
  44 + | '414 URI_TOO_LONG'
  45 + | '414 REQUEST_URI_TOO_LONG'
  46 + | '415 UNSUPPORTED_MEDIA_TYPE'
  47 + | '416 REQUESTED_RANGE_NOT_SATISFIABLE'
  48 + | '417 EXPECTATION_FAILED'
  49 + | '418 I_AM_A_TEAPOT'
  50 + | '419 INSUFFICIENT_SPACE_ON_RESOURCE'
  51 + | '420 METHOD_FAILURE'
  52 + | '421 DESTINATION_LOCKED'
  53 + | '422 UNPROCESSABLE_ENTITY'
  54 + | '423 LOCKED'
  55 + | '424 FAILED_DEPENDENCY'
  56 + | '425 TOO_EARLY'
  57 + | '426 UPGRADE_REQUIRED'
  58 + | '428 PRECONDITION_REQUIRED'
  59 + | '429 TOO_MANY_REQUESTS'
  60 + | '431 REQUEST_HEADER_FIELDS_TOO_LARGE'
  61 + | '451 UNAVAILABLE_FOR_LEGAL_REASONS'
  62 + | '500 INTERNAL_SERVER_ERROR'
  63 + | '501 NOT_IMPLEMENTED'
  64 + | '502 BAD_GATEWAY'
  65 + | '503 SERVICE_UNAVAILABLE'
  66 + | '504 GATEWAY_TIMEOUT'
  67 + | '505 HTTP_VERSION_NOT_SUPPORTED'
  68 + | '506 VARIANT_ALSO_NEGOTIATES'
  69 + | '507 INSUFFICIENT_STORAGE'
  70 + | '508 LOOP_DETECTED'
  71 + | '509 BANDWIDTH_LIMIT_EXCEEDED'
  72 + | '510 NOT_EXTENDED'
  73 + | '511 NETWORK_AUTHENTICATION_REQUIRED';
74 export type ProcureReturnBillDtoSendStore = 74 export type ProcureReturnBillDtoSendStore =
75 - | "DALANG_WAREHOUSE"  
76 - | "HOUJIE_WAREHOUSE"; 75 + | 'DALANG_WAREHOUSE'
  76 + | 'HOUJIE_WAREHOUSE';
77 export type ProcureReturnBillDtoStatus = 77 export type ProcureReturnBillDtoStatus =
78 - | "AUDIT_NOTPASS"  
79 - | "WAIT_SEND"  
80 - | "SENDED"  
81 - | "WAIT_AUDIT"; 78 + | 'AUDIT_NOTPASS'
  79 + | 'WAIT_SEND'
  80 + | 'SENDED'
  81 + | 'WAIT_AUDIT';
82 export interface AdminAuthRoleVO { 82 export interface AdminAuthRoleVO {
83 menuIds?: Array<number>; 83 menuIds?: Array<number>;
84 /** @format int64 */ 84 /** @format int64 */
@@ -1465,11 +1465,20 @@ export interface InvoiceDto { @@ -1465,11 +1465,20 @@ export interface InvoiceDto {
1465 invoiceStatus?: string; 1465 invoiceStatus?: string;
1466 /** 1466 /**
1467 * @description 1467 * @description
  1468 + * 发票类型
  1469 + */
  1470 + invoiceStatusText?: string;
  1471 + /**
  1472 + * @description
1468 * 开票日期 1473 * 开票日期
1469 * @format date-time 1474 * @format date-time
1470 */ 1475 */
1471 invoicingTime?: string; 1476 invoicingTime?: string;
1472 invoicingType?: string; 1477 invoicingType?: string;
  1478 + /**
  1479 + * @description
  1480 + * 开具类型
  1481 + */
1473 invoicingTypeText?: string; 1482 invoicingTypeText?: string;
1474 logicDelete?: boolean; 1483 logicDelete?: boolean;
1475 /** 1484 /**
@@ -1501,6 +1510,11 @@ export interface InvoiceDto { @@ -1501,6 +1510,11 @@ export interface InvoiceDto {
1501 payeeText?: string; 1510 payeeText?: string;
1502 /** 1511 /**
1503 * @description 1512 * @description
  1513 + * 收款单位
  1514 + */
  1515 + payeeText?: string;
  1516 + /**
  1517 + * @description
1504 * 购买方 1518 * 购买方
1505 */ 1519 */
1506 purchaser?: string; 1520 purchaser?: string;
@@ -3693,6 +3707,9 @@ export interface SubOrder { @@ -3693,6 +3707,9 @@ export interface SubOrder {
3693 id?: number; 3707 id?: number;
3694 image?: string; 3708 image?: string;
3695 invoiceApplyUsername?: string; 3709 invoiceApplyUsername?: string;
  3710 + invoiceConfirmStatus?: string;
  3711 + /** @format date-time */
  3712 + invoiceConfirmStatusDatetime?: string;
3696 invoiceInformation?: string; 3713 invoiceInformation?: string;
3697 /** @format int64 */ 3714 /** @format int64 */
3698 invoiceRecordId?: number; 3715 invoiceRecordId?: number;