Commit ef46f36b484dee2cf5f67d4340c633aeba68bb9c

Authored by 曾国涛
1 parent 83293a3a

fix: 新增和优化多个功能点

- 在发票列表中添加编辑功能- 优化导出功能,支持多条件筛选
- 新增取消开票功能
- 修复部分页面的样式问题
- 优化部分功能的用户体验
src/pages/Invoice/Invoice/index.tsx
... ... @@ -9,6 +9,7 @@ import { INVOCING_STATUS, PAYEE_OPTIONS } from '@/pages/Order/constant';
9 9 import {
10 10 postServiceInvoiceDeleteInvoice,
11 11 postServiceInvoiceGetWriteOffRecord,
  12 + postServiceInvoiceModify,
12 13 postServiceInvoiceQueryInvoice,
13 14 } from '@/services';
14 15 import { orderExport } from '@/services/order';
... ... @@ -100,8 +101,22 @@ const InvoiceRecord = () => {
100 101 key: 'option',
101 102 fixed: 'right',
102 103 width: 160,
103   - render: (text, record) => {
  104 + render: (text, record, _, action) => {
104 105 let btns = [];
  106 +
  107 + if (record.paths?.includes('edit')) {
  108 + btns.push(
  109 + <a
  110 + key="editable"
  111 + onClick={() => {
  112 + action?.startEditable?.(record.id);
  113 + }}
  114 + >
  115 + 编辑
  116 + </a>,
  117 + );
  118 + }
  119 +
105 120 if (record.paths?.includes('writeOff') && !record.writeOffId) {
106 121 btns.push(
107 122 <InvoiceWriteOffModal
... ... @@ -157,7 +172,6 @@ const InvoiceRecord = () =&gt; {
157 172 </Button>,
158 173 );
159 174 }
160   -
161 175 if (record.paths?.includes('deleteInvoice')) {
162 176 btns.push(
163 177 <ButtonConfirm
... ... @@ -169,7 +183,7 @@ const InvoiceRecord = () =&gt; {
169 183 text="删除"
170 184 onConfirm={async () => {
171 185 let res = await postServiceInvoiceDeleteInvoice({
172   - data: { invoiceId: record.invoiceId },
  186 + data: { invoiceId: record.id },
173 187 });
174 188 if (res) {
175 189 message.success(res.message);
... ... @@ -217,6 +231,16 @@ const InvoiceRecord = () =&gt; {
217 231 console.log('value: ', value);
218 232 },
219 233 }}
  234 + editable={{
  235 + type: 'multiple',
  236 + onSave: async (key, row, originRow) => {
  237 + console.log('row: ', row);
  238 + console.log('originRow: ', originRow);
  239 + postServiceInvoiceModify({
  240 + data: row,
  241 + });
  242 + },
  243 + }}
220 244 rowKey="id"
221 245 search={{
222 246 labelWidth: 'auto',
... ...
src/pages/Invoice/InvoiceRecord/components/InvoiceModal.tsx deleted 100644 → 0
1   -import Invoice from '@/pages/Invoice/InvoiceRecord/components/Invoice';
2   -import { postServiceInvoiceGetInvoiceRecord } from '@/services';
3   -import { ModalForm } from '@ant-design/pro-components';
4   -import { Form } from 'antd';
5   -import { useEffect, useState } from 'react';
6   -
7   -export default ({ recordId, getRecord, button }) => {
8   - const [data, setData] = useState<any>({});
9   - const getData = async () => {
10   - let ret = await postServiceInvoiceGetInvoiceRecord({
11   - query: {
12   - id: recordId,
13   - },
14   - });
15   - setData(ret.data);
16   - };
17   - useEffect(() => {
18   - if (recordId) {
19   - getData();
20   - }
21   - }, []);
22   - const [form] = Form.useForm();
23   - return (
24   - <ModalForm
25   - title="预览发票"
26   - trigger={button ? button : <a type="primary">预览</a>}
27   - onOpenChange={(open) => {
28   - if (open) {
29   - if (getRecord) {
30   - setData(getRecord());
31   - } else {
32   - getData();
33   - }
34   - }
35   - }}
36   - width={1200}
37   - form={form}
38   - autoFocusFirstInput
39   - submitter={false}
40   - modalProps={{
41   - destroyOnClose: true,
42   - }}
43   - >
44   - <hr />
45   - <Invoice data={data} />
46   - </ModalForm>
47   - );
48   -};
src/pages/Invoice/InvoiceRecord/index.tsx
... ... @@ -15,7 +15,6 @@ import { ActionType, ModalForm, ProTable } from &#39;@ant-design/pro-components&#39;;
15 15 import { Button, Divider, Space, Table, Tooltip, message } from 'antd';
16 16 import axios from 'axios';
17 17 import { useEffect, useRef, useState } from 'react';
18   -
19 18 const InvoiceRecord = () => {
20 19 const processedRecordRef = useRef<ActionType>();
21 20 const [invoiceTypeValueEnum, setInvoiceTypeValueEnum] = useState({});
... ... @@ -443,8 +442,6 @@ const InvoiceRecord = () =&gt; {
443 442 alwaysShowAlert: true,
444 443 }}
445 444 tableAlertOptionRender={({ selectedRowKeys, selectedRows }) => {
446   - console.log(selectedRows);
447   - console.log(selectedRowKeys);
448 445 return (
449 446 <Space size={16}>
450 447 <Button
... ...
src/pages/Invoice/constant.tsx
... ... @@ -35,6 +35,7 @@ export const INVOICE_COLUMNS = [
35 35 valueType: 'text',
36 36 hideInTable: true,
37 37 hideInSearch: true,
  38 + readonly: true,
38 39 width: 100,
39 40 },
40 41 {
... ... @@ -58,6 +59,7 @@ export const INVOICE_COLUMNS = [
58 59 dataIndex: 'statusText',
59 60 valueType: 'text',
60 61 width: 180,
  62 + readonly: true,
61 63 hideInSearch: true,
62 64 },
63 65 {
... ... @@ -80,12 +82,15 @@ export const INVOICE_COLUMNS = [
80 82 {
81 83 title: '订单状态',
82 84 dataIndex: 'orderTypeText',
  85 + readonly: true,
83 86 valueType: 'text',
  87 + hideInSearch: true,
84 88 width: 180,
85 89 },
86 90 {
87 91 title: '绑定流水号',
88 92 dataIndex: 'serialNumbersTextByOrder',
  93 + readonly: true,
89 94 hideInSearch: true,
90 95 valueType: 'text',
91 96 width: 180,
... ... @@ -158,11 +163,19 @@ export const INVOICE_COLUMNS = [
158 163 dataIndex: 'invoicingTypeText',
159 164 valueType: 'invoicingTypeText',
160 165 hideInSearch: true,
  166 + readonly: true,
161 167 width: 100,
162 168 },
163 169 {
164 170 title: '开票日期',
165 171 dataIndex: 'invoicingTime',
  172 + valueType: 'date',
  173 + width: 150,
  174 + hideInSearch: true,
  175 + },
  176 + {
  177 + title: '开票日期',
  178 + dataIndex: 'invoicingTime',
166 179 valueType: 'dateRange',
167 180 width: 150,
168 181 search: {
... ... @@ -179,7 +192,7 @@ export const INVOICE_COLUMNS = [
179 192 {
180 193 title: '收款时间',
181 194 dataIndex: 'collectionTime',
182   - valueType: 'dateRange',
  195 + valueType: 'date',
183 196 width: 200,
184 197 search: {
185 198 transform: (value) => {
... ...
src/pages/Invoice/waitProcessRecord/components/Invoice.tsx
... ... @@ -139,7 +139,9 @@ const ProjectContainer = styled.div`
139 139 border-top: 2px solid #b16363;
140 140 border-right: 2px solid #b16363;
141 141 border-left: 2px solid #b16363;
  142 + max-height: 500px; /* 设置最大高度,根据需要调整 */
142 143 overflow: auto;
  144 +
143 145 .single-project {
144 146 width: 100%;
145 147 height: 30px;
... ...
src/pages/Invoice/waitProcessRecord/index.tsx
  1 +import { RESPONSE_CODE } from '@/constants/enum';
1 2 import InvoiceRecordDetailModal from '@/pages/Invoice/InvoiceRecord/components/InvoiceRecordDetailModal';
2 3 import InvoiceModal from '@/pages/Invoice/waitProcessRecord/components/InvoiceModal';
3 4 import InvoicingModal from '@/pages/Invoice/waitProcessRecord/components/InvoicingModal';
... ... @@ -7,12 +8,21 @@ import {
7 8 postServiceConstBeforeInvoicingInvoiceRecordStatus,
8 9 postServiceConstInvoiceType,
9 10 postServiceConstInvoicingType,
  11 + postServiceInvoiceCancelInvoiceRecord,
10 12 postServiceInvoiceQueryInvoiceRecordList,
11 13 postServiceOrderQuerySalesCode,
12 14 } from '@/services';
13 15 import { enumToProTableEnumValue, enumToSelect } from '@/utils';
14 16 import { ActionType, ProTable } from '@ant-design/pro-components';
15   -import { Divider, Space, Table, Tooltip } from 'antd';
  17 +import {
  18 + Button,
  19 + Divider,
  20 + Popconfirm,
  21 + Space,
  22 + Table,
  23 + Tooltip,
  24 + message,
  25 +} from 'antd';
16 26 import { useEffect, useRef, useState } from 'react';
17 27  
18 28 const InvoiceRecord = () => {
... ... @@ -345,6 +355,31 @@ const InvoiceRecord = () =&gt; {
345 355 ></ManualInvoicingModal>
346 356 )}
347 357 </>,
  358 + <>
  359 + {record.paths.includes('CANCEL') && (
  360 + <Popconfirm
  361 + title="取消开票"
  362 + description="确认取消开票?"
  363 + onConfirm={async () => {
  364 + let res = await postServiceInvoiceCancelInvoiceRecord({
  365 + data: {
  366 + invoiceRecordIds: [record.id],
  367 + },
  368 + });
  369 + if (res.result === RESPONSE_CODE.SUCCESS) {
  370 + message.success('取消成功');
  371 + }
  372 + waitDealrecordActionRef?.current?.reload();
  373 + }}
  374 + okText="确定"
  375 + cancelText="取消"
  376 + >
  377 + <Button type="link" danger>
  378 + 取消
  379 + </Button>
  380 + </Popconfirm>
  381 + )}
  382 + </>,
348 383 ];
349 384 },
350 385 },
... ...
src/pages/Order/Order/components/InvoicingDrawerForm.tsx
1 1 // import { PlusOutlined } from '@ant-design/icons';
2   -import InvoiceModal from '@/pages/Invoice/InvoiceVerification/components/InvoiceModal';
  2 +import InvoiceModal from '@/pages/Invoice/waitProcessRecord/components/InvoiceModal';
3 3 import {
4 4 postServiceConstGetPayeeEnum,
5 5 postServiceConstInitInvoiceDetailNames,
... ...
src/pages/Order/Order/index.tsx
... ... @@ -926,6 +926,11 @@ const OrderPage = () =&gt; {
926 926 ) : (
927 927 ''
928 928 )}
  929 + {optRecord.uid && (
  930 + <span className="text-[#f44e4e] cursor-pointer">
  931 + (商城订单)
  932 + </span>
  933 + )}
929 934  
930 935 {optRecord.modified ? (
931 936 <Tooltip title="点击查看详情">
... ... @@ -2097,7 +2102,7 @@ const OrderPage = () =&gt; {
2097 2102 title="已和客户确认发票??"
2098 2103 text="确认发票"
2099 2104 onConfirm={async () => {
2100   - let body = { ids: [optRecord.id] };
  2105 + let body = [optRecord.id];
2101 2106 const data = await postServiceOrderConfirmInvoice({
2102 2107 data: body,
2103 2108 });
... ... @@ -3890,13 +3895,11 @@ const OrderPage = () =&gt; {
3890 3895 title="已和客户确认发票?"
3891 3896 text="确认发票"
3892 3897 onConfirm={async () => {
3893   - let body = {
3894   - ids: [
3895   - ...record.subOrderInformationLists.map(
3896   - (subOrder) => subOrder.id,
3897   - ),
3898   - ],
3899   - };
  3898 + let body = [
  3899 + ...record.subOrderInformationLists.map(
  3900 + (subOrder) => subOrder.id,
  3901 + ),
  3902 + ];
3900 3903 const data = await postServiceOrderConfirmInvoice({
3901 3904 data: body,
3902 3905 });
... ... @@ -4164,6 +4167,7 @@ const OrderPage = () =&gt; {
4164 4167 if (
4165 4168 roleCode === 'admin' ||
4166 4169 roleCode === 'salesManager' ||
  4170 + roles.includes('PROCURE') ||
4167 4171 roleCode === 'salesRepresentative'
4168 4172 ) {
4169 4173 radios.push(<Radio value={70}>只看作废</Radio>);
... ...
src/pages/Order/OrderWarning/components/InvoicingDrawerForm.tsx
1 1 // import { PlusOutlined } from '@ant-design/icons';
2   -import InvoiceModal from '@/pages/Invoice/InvoiceVerification/components/InvoiceModal';
  2 +import InvoiceModal from '@/pages/Invoice/waitProcessRecord/components/InvoiceModal';
3 3 import {
4 4 postServiceConstGetPayeeEnum,
5 5 postServiceConstInitInvoiceDetailNames,
... ...
src/pages/Order/OrderWarning/indexhide.tsx
1 1 import ButtonConfirm from '@/components/ButtomConfirm';
2 2 import { RESPONSE_CODE } from '@/constants/enum';
3   -import ImportExpressBillModal from '@/pages/Order/OrderWarning/components/ImportExpressBillModal';
4 3 import InvoicingDrawerForm from '@/pages/Order/OrderWarning/components/InvoicingDrawerForm';
5 4 import ReissueModal from '@/pages/Order/OrderWarning/components/ReissueModal';
6 5 import ReissueModal_old from '@/pages/Order/OrderWarning/components/ReissueModal_old';
... ... @@ -21,7 +20,6 @@ import {
21 20 postServiceOrderSalesConfirm,
22 21 postServiceOrderWarningOrderStatistics,
23 22 } from '@/services';
24   -import { orderExport } from '@/services/order';
25 23 import {
26 24 FloatAdd,
27 25 copyToClipboard,
... ... @@ -48,7 +46,6 @@ import {
48 46 ContainerTwoTone,
49 47 CopyOutlined,
50 48 CopyTwoTone,
51   - DownOutlined,
52 49 EditTwoTone,
53 50 QuestionCircleOutlined,
54 51 } from '@ant-design/icons';
... ... @@ -57,36 +54,52 @@ import {
57 54 ProColumns,
58 55 ProFormInstance,
59 56 ProTable,
60   - ProForm,
61   - ProFormRadio,
62 57 } from '@ant-design/pro-components';
63 58 import {
  59 + Badge,
64 60 Button,
  61 + Card,
65 62 Checkbox,
  63 + Col,
66 64 Divider,
67   - Dropdown,
68 65 Flex,
69 66 FloatButton,
70 67 Image,
71   - MenuProps,
72 68 Modal,
73 69 Popconfirm,
74 70 Radio,
  71 + Row,
75 72 Space,
76 73 Spin,
  74 + Tabs,
77 75 Tag,
78 76 Tooltip,
79 77 message,
80   - Tabs,
81   - Badge,
82   - Card,
83   - Col,
84   - Row,
85 78 } from 'antd';
86 79 import Base64 from 'base-64';
  80 +import { format } from 'date-fns';
87 81 import { cloneDeep } from 'lodash';
88   -import React, { Key, useEffect, useMemo, useRef, useState } from 'react';
  82 +import React, { Key, useEffect, useRef, useState } from 'react';
89 83 import OrderPrintModal from '../../OrderPrint/OrderPrintModal';
  84 +import {
  85 + AFTER_INVOICING_STATUS,
  86 + CHECK_TYPE,
  87 + LOGISTICS_STATUS_OPTIONS,
  88 + MAIN_ORDER_COLUMNS,
  89 + MODIFIED_AUDIT_STATUS_OPTIONS,
  90 + ORDER_STATUS_OPTIONS,
  91 + PAYEE_OPTIONS,
  92 + PAYMENT_CHANNEL_OPTIONS,
  93 + PAYMENT_RECEIPTS_STATUS_OPTIONS,
  94 + POST_AUDIT_OPTIONS,
  95 + PROCURE_ORDER_STATUS,
  96 + PROCURE_PRIMARY_ORDER_STATUS_OPTIONS,
  97 + PRODUCT_BELONG_DEPARTMENT_OPTIONS,
  98 + SHIPPING_WAREHOUSE_OPTIONS,
  99 + TAGS_COLOR,
  100 + getInvoicingType,
  101 + getNeedInvoicing,
  102 +} from '../constant';
90 103 import AfterSalesDrawer from './components/AfterSalesDrawer';
91 104 import ApplyForInvoicingModal from './components/ApplyForInvoicingModal';
92 105 import AttachmentModal from './components/AttachmentModal';
... ... @@ -109,29 +122,8 @@ import ProcureConvertModal from &#39;./components/ProcureConvertModal&#39;;
109 122 import ProductionTimeModal from './components/ProductionTimeModal';
110 123 import ShippingWarehouseChangeModal from './components/ShippingWarehouseChangeModal';
111 124 import UploadPayBillModal from './components/UploadPayBillModal';
112   -import {
113   - AFTER_INVOICING_STATUS,
114   - CHECK_TYPE,
115   - LOGISTICS_STATUS_OPTIONS,
116   - MAIN_ORDER_COLUMNS,
117   - MODIFIED_AUDIT_STATUS_OPTIONS,
118   - ORDER_STATUS_OPTIONS,
119   - PAYEE_OPTIONS,
120   - PAYMENT_CHANNEL_OPTIONS,
121   - PAYMENT_RECEIPTS_STATUS_OPTIONS,
122   - POST_AUDIT_OPTIONS,
123   - PROCURE_ORDER_STATUS,
124   - PROCURE_PRIMARY_ORDER_STATUS_OPTIONS,
125   - PRODUCT_BELONG_DEPARTMENT_OPTIONS,
126   - SHIPPING_WAREHOUSE_OPTIONS,
127   - TAGS_COLOR,
128   - getInvoicingType,
129   - getNeedInvoicing,
130   -} from '../constant';
131 125 import './index.less';
132 126 import { OrderListItemType, OrderType } from './type.d';
133   -import { format } from 'date-fns';
134   -import { useParams } from '@umijs/max';
135 127  
136 128 const OrderPage = () => {
137 129 const [orderDrawerVisible, setOrderDrawerVisible] = useState<boolean>(false);
... ... @@ -196,39 +188,25 @@ const OrderPage = () =&gt; {
196 188 const [currentPage, setCurrentPage] = useState(1);
197 189 const [orderCheckType, setOrderCheckType] = useState('');
198 190 const [imagesViewerOptType, setImagesViewerOptType] = useState('');
199   - const [filterCondifion, setFilterCondition] = useState(0);
  191 + const [filterCondifion] = useState(0);
200 192 const [mainOrderSelectedMap] = useState(new Map()); //选中的主订单Map key:主订单id value:主订单数据
201 193 const [subOrderSelectedMap, setSubOrderSelectedMap] = useState(new Map()); //选中的子订单Map key:主订单id value:选中的子订单数据集合
202 194 const [currentOptMainId, setCurrentMainId] = useState<any>(undefined); //当前操作对象的主订单id
203 195 const [curretnOptSubId, setCurretnOptSubId] = useState<any>(undefined); //当前操作对象的子订单id
204 196 const [subOrderCount, setSubOrderCount] = useState(0);
205   - const [sorted, setSorted] = useState(false);
  197 + const [sorted] = useState(false);
206 198 const mainTableRef = useRef<ActionType>();
207 199 const mainTableFormRef = useRef<ProFormInstance>();
208   - let [searchParams, setSearchParam] = useState(Object); //表格的查询条件存储
209   - const [messageApi, contextHolder] = message.useMessage();
  200 + let [setSearchParam] = useState(Object); //表格的查询条件存储
  201 + const [contextHolder] = message.useMessage();
210 202 const [
211 203 shippingWarehouseChangeModalVisible,
212 204 setShippingWarehouseChangeModalVisible,
213 205 ] = useState(false);
214   - const [canApplyAfterInvoicingStatus, setCanApplyAfterInvoicingStatus] =
215   - useState([]);
  206 + const [setCanApplyAfterInvoicingStatus] = useState([]);
216 207 const [ids, setIds] = useState([]);
217 208 const [recordOptNode, setRecordOptNode] = useState(null);
218 209 const roleCode = userInfo?.roleSmallVO?.code;
219   - const canMergeInvoicing = useMemo(() => {
220   - if (subOrderSelectedMap.size === 0) {
221   - return false;
222   - }
223   - // 检查 value.items 中的每个元素
224   - console.log(
225   - 'map' + JSON.stringify([...subOrderSelectedMap.values()].flat()),
226   - );
227   - return [...subOrderSelectedMap.values()]
228   - .flat()
229   - .every((subItem) => subItem.paths.includes('applyInvoicing_old'));
230   - }, [selectedSubOrderKeys]);
231   -
232 210 const triggerRecordOptNode = async (id) => {
233 211 const res = await postServiceOrderGetCurrentOptNode({
234 212 query: {
... ... @@ -238,18 +216,6 @@ const OrderPage = () =&gt; {
238 216 setRecordOptNode(res.data);
239 217 };
240 218  
241   - const exportLoading = () => {
242   - messageApi.open({
243   - type: 'loading',
244   - content: '正在导出文件...',
245   - duration: 0,
246   - });
247   - };
248   -
249   - const exportLoadingDestory = () => {
250   - messageApi.destroy();
251   - };
252   -
253 219 const refreshTable = () => {
254 220 mainTableRef.current?.reload();
255 221 //刷新表格数据的时候,取消选中行
... ... @@ -257,14 +223,6 @@ const OrderPage = () =&gt; {
257 223 setSelectedSubOrderKeys([]);
258 224 };
259 225  
260   - /*useEffect(() => {
261   - let initAfterInvoicingStatus = async () => {
262   - const afteInvoicingStatus = await getAfterInvoicingStatus();
263   - setAfterInvoicingStatus(afteInvoicingStatus);
264   - };
265   - initAfterInvoicingStatus();
266   - }, []);*/
267   -
268 226 useEffect(() => {
269 227 // 使用URLSearchParams来解析查询参数
270 228 const params = new URLSearchParams(location.search);
... ... @@ -355,16 +313,6 @@ const OrderPage = () =&gt; {
355 313 }
356 314  
357 315 /**
358   - * 财务是否选中排序
359   - * @param e
360   - */
361   - function financeSorted(e: any) {
362   - let checked = e?.target.checked;
363   - setSorted(checked);
364   - refreshTable();
365   - }
366   -
367   - /**
368 316 * 重置当前的操作对象
369 317 */
370 318 function clearOptObject() {
... ... @@ -840,7 +788,7 @@ const OrderPage = () =&gt; {
840 788 onConfirm={() => {
841 789 window.open(
842 790 '/previewApi/onlinePreview?url=' +
843   - encodeURIComponent(Base64.encode(item.url)),
  791 + encodeURIComponent(Base64.encode(item.url)),
844 792 );
845 793 }}
846 794 onCancel={() => {
... ... @@ -912,7 +860,7 @@ const OrderPage = () =&gt; {
912 860 </span>
913 861 {(roleCode === 'salesRepresentative' ||
914 862 roleCode === 'salesManager') &&
915   - !optRecord.isCurrentUserOrder ? (
  863 + !optRecord.isCurrentUserOrder ? (
916 864 <span className="text-[#f44e4e]">(非本账号订单)</span>
917 865 ) : (
918 866 ''
... ... @@ -1096,13 +1044,13 @@ const OrderPage = () =&gt; {
1096 1044 <Tooltip
1097 1045 title={
1098 1046 optRecord.invoicingUrgentCause !== null &&
1099   - optRecord.afterInvoicingStatus ===
  1047 + optRecord.afterInvoicingStatus ===
1100 1048 'URGENT_INVOICE_AUDITING'
1101 1049 ? optRecord.invoicingUrgentCause
1102 1050 : enumValueToLabel(
1103   - optRecord.afterInvoicingStatus,
1104   - AFTER_INVOICING_STATUS,
1105   - )
  1051 + optRecord.afterInvoicingStatus,
  1052 + AFTER_INVOICING_STATUS,
  1053 + )
1106 1054 }
1107 1055 >
1108 1056 <Tag
... ... @@ -1133,7 +1081,7 @@ const OrderPage = () =&gt; {
1133 1081 )}
1134 1082  
1135 1083 {(roleCode === 'warehouseKeeper' || roleCode === 'admin') &&
1136   - optRecord.shippingWarehouse !== null ? (
  1084 + optRecord.shippingWarehouse !== null ? (
1137 1085 <div
1138 1086 className="overflow-hidden whitespace-no-wrap overflow-ellipsis"
1139 1087 title={enumValueToLabel(
... ... @@ -1155,7 +1103,7 @@ const OrderPage = () =&gt; {
1155 1103 {/* 生产时间 */}
1156 1104 <div className="overflow-hidden whitespace-no-wrap overflow-ellipsis">
1157 1105 {optRecord.productionStartTime !== null ||
1158   - optRecord.productionEndTime !== null ? (
  1106 + optRecord.productionEndTime !== null ? (
1159 1107 <MyToolTip
1160 1108 title={
1161 1109 formatdate(optRecord.productionStartTime) +
... ... @@ -1185,7 +1133,7 @@ const OrderPage = () =&gt; {
1185 1133 <Tag
1186 1134 color={
1187 1135 optRecord.invoicingTime === null ||
1188   - optRecord.invoicingTime === undefined
  1136 + optRecord.invoicingTime === undefined
1189 1137 ? TAGS_COLOR.get(optRecord.invoicingStatus)
1190 1138 : 'success'
1191 1139 }
... ... @@ -1213,7 +1161,7 @@ const OrderPage = () =&gt; {
1213 1161  
1214 1162 {/**采购是否已下单状态 */}
1215 1163 {optRecord.procureOrderStatus !== null &&
1216   - optRecord.procureOrderStatus !== undefined ? (
  1164 + optRecord.procureOrderStatus !== undefined ? (
1217 1165 <div className="overflow-hidden whitespace-no-wrap overflow-ellipsis">
1218 1166 <Tag color="success">
1219 1167 {enumValueToLabel(
... ... @@ -1229,21 +1177,21 @@ const OrderPage = () =&gt; {
1229 1177 {/* 物流信息 */}
1230 1178 <div className="overflow-hidden whitespace-no-wrap overflow-ellipsis">
1231 1179 {optRecord.orderStatus === 'CONFIRM_RECEIPT' ||
1232   - optRecord.orderStatus === 'AFTER_SALES_COMPLETION' ||
1233   - optRecord.orderStatus === 'IN_AFTER_SALES' ||
1234   - optRecord.orderStatus === 'SHIPPED' ? (
  1180 + optRecord.orderStatus === 'AFTER_SALES_COMPLETION' ||
  1181 + optRecord.orderStatus === 'IN_AFTER_SALES' ||
  1182 + optRecord.orderStatus === 'SHIPPED' ? (
1235 1183 <MyToolTip
1236 1184 title={
1237 1185 optRecord.serialNumber === undefined
1238 1186 ? '暂无物流信息'
1239 1187 : enumValueToLabel(
1240   - optRecord.logisticsMethod,
1241   - LOGISTICS_STATUS_OPTIONS,
1242   - ) +
1243   - ' ' +
1244   - optRecord.serialNumber +
1245   - ' ' +
1246   - optRecord.logisticsNotes
  1188 + optRecord.logisticsMethod,
  1189 + LOGISTICS_STATUS_OPTIONS,
  1190 + ) +
  1191 + ' ' +
  1192 + optRecord.serialNumber +
  1193 + ' ' +
  1194 + optRecord.logisticsNotes
1247 1195 }
1248 1196 content={
1249 1197 <Button type="link" size="small" style={{ padding: 0 }}>
... ... @@ -1257,7 +1205,7 @@ const OrderPage = () =&gt; {
1257 1205  
1258 1206 {/* 修改审核状态 */}
1259 1207 {optRecord.modifiedAuditStatus !== null &&
1260   - optRecord.modifiedAuditStatus !== 'AUDIT_FAILURE' ? (
  1208 + optRecord.modifiedAuditStatus !== 'AUDIT_FAILURE' ? (
1261 1209 <div className="overflow-hidden whitespace-no-wrap overflow-ellipsis">
1262 1210 <Tooltip
1263 1211 title={recordOptNode ? recordOptNode : <Spin />}
... ... @@ -1697,7 +1645,7 @@ const OrderPage = () =&gt; {
1697 1645 )}
1698 1646  
1699 1647 {optRecord.paths?.includes('queryAnnex') &&
1700   - optRecord.listAnnex?.length > 0 ? (
  1648 + optRecord.listAnnex?.length > 0 ? (
1701 1649 <Button
1702 1650 className="p-0"
1703 1651 type="link"
... ... @@ -2131,7 +2079,7 @@ const OrderPage = () =&gt; {
2131 2079 </Flex>
2132 2080  
2133 2081 {(isProcure() || isWarehousekeeper() || isSales() || isAdmin()) &&
2134   - !isSupplier() ? (
  2082 + !isSupplier() ? (
2135 2083 <div className="pt-2">
2136 2084 <Flex title={optRecord.supplierName}>
2137 2085 <div>
... ... @@ -2206,7 +2154,7 @@ const OrderPage = () =&gt; {
2206 2154 <span className="text-[#8C8C8C]">
2207 2155 申请开票备注:
2208 2156 {optRecord.applyInvoicingNotes === undefined ||
2209   - optRecord.applyInvoicingNotes === null
  2157 + optRecord.applyInvoicingNotes === null
2210 2158 ? '暂无备注'
2211 2159 : optRecord.applyInvoicingNotes}
2212 2160 </span>
... ... @@ -2234,7 +2182,7 @@ const OrderPage = () =&gt; {
2234 2182 <span className="text-[#8C8C8C] mr-3">
2235 2183 财务审核备注:
2236 2184 {optRecord.checkNotes === undefined ||
2237   - optRecord.checkNotes === null
  2185 + optRecord.checkNotes === null
2238 2186 ? '暂无备注'
2239 2187 : optRecord.checkNotes}
2240 2188 </span>
... ... @@ -2258,7 +2206,7 @@ const OrderPage = () =&gt; {
2258 2206 <span className="text-[#8C8C8C]">
2259 2207 重新开票备注:
2260 2208 {optRecord.reissueNotes === undefined ||
2261   - optRecord.reissueNotes === null
  2209 + optRecord.reissueNotes === null
2262 2210 ? '暂无备注'
2263 2211 : optRecord.reissueNotes}
2264 2212 </span>
... ... @@ -2562,9 +2510,9 @@ const OrderPage = () =&gt; {
2562 2510 <span className="text-slate-700">
2563 2511 {record.receivingCompany !== null
2564 2512 ? enumValueToLabel(
2565   - record.receivingCompany,
2566   - getReceivingCompanyOptions(PAYEE_OPTIONS),
2567   - )
  2513 + record.receivingCompany,
  2514 + getReceivingCompanyOptions(PAYEE_OPTIONS),
  2515 + )
2568 2516 : '暂无'}
2569 2517 </span>
2570 2518 </div>
... ... @@ -3356,9 +3304,9 @@ const OrderPage = () =&gt; {
3356 3304 for (let i = 0; i < selectedSubOrders.length; i++) {
3357 3305 if (
3358 3306 selectedSubOrders[i].invoicingStatus ===
3359   - 'UN_INVOICE' ||
  3307 + 'UN_INVOICE' ||
3360 3308 selectedSubOrders[i].afterInvoicingStatus ===
3361   - 'APPLY_FOR_INVOICING'
  3309 + 'APPLY_FOR_INVOICING'
3362 3310 ) {
3363 3311 message.error(
3364 3312 '请选择需要开票且未申请开票的子订单进行申请',
... ... @@ -3393,9 +3341,9 @@ const OrderPage = () =&gt; {
3393 3341 for (let i = 0; i < selectedSubOrders.length; i++) {
3394 3342 if (
3395 3343 selectedSubOrders[i].invoicingStatus ===
3396   - 'UN_INVOICE' ||
  3344 + 'UN_INVOICE' ||
3397 3345 selectedSubOrders[i].afterInvoicingStatus ===
3398   - 'APPLY_FOR_INVOICING'
  3346 + 'APPLY_FOR_INVOICING'
3399 3347 ) {
3400 3348 message.error(
3401 3349 '请选择需要开票且未申请开票的子订单进行申请',
... ... @@ -3600,13 +3548,13 @@ const OrderPage = () =&gt; {
3600 3548 if (
3601 3549 selectedSubOrders[i].orderStatus !== 'AUDITED' &&
3602 3550 selectedSubOrders[i].orderStatus !==
3603   - 'PROCURE_PROCESS' &&
  3551 + 'PROCURE_PROCESS' &&
3604 3552 selectedSubOrders[i].orderStatus !==
3605   - 'PROCURE_PROCESS_FOR_MINE' &&
  3553 + 'PROCURE_PROCESS_FOR_MINE' &&
3606 3554 selectedSubOrders[i].orderStatus !==
3607   - 'PROCURE_WAIT_SHIP' &&
  3555 + 'PROCURE_WAIT_SHIP' &&
3608 3556 selectedSubOrders[i].orderStatus !==
3609   - 'SUPPLIER_WAIT_SHIP' &&
  3557 + 'SUPPLIER_WAIT_SHIP' &&
3610 3558 selectedSubOrders[i].orderStatus !== 'WAIT_SHIP'
3611 3559 ) {
3612 3560 message.error(
... ... @@ -3692,9 +3640,9 @@ const OrderPage = () =&gt; {
3692 3640 if (
3693 3641 selectedSubOrders[i].orderStatus !== 'UNAUDITED' &&
3694 3642 selectedSubOrders[i].orderStatus !==
3695   - 'FINANCE_PROCESS' &&
  3643 + 'FINANCE_PROCESS' &&
3696 3644 selectedSubOrders[i].orderStatus !==
3697   - 'LEADER_AUDITED'
  3645 + 'LEADER_AUDITED'
3698 3646 ) {
3699 3647 message.error(
3700 3648 '请选择[未审核]、[财务待审核]、[领导已审核]的子订单进行审核',
... ... @@ -3762,9 +3710,9 @@ const OrderPage = () =&gt; {
3762 3710 for (let i = 0; i < selectedSubOrders.length; i++) {
3763 3711 if (
3764 3712 selectedSubOrders[i].orderStatus !==
3765   - 'CONFIRM_RECEIPT' &&
  3713 + 'CONFIRM_RECEIPT' &&
3766 3714 selectedSubOrders[i].orderStatus !==
3767   - 'AFTER_SALES_FAILURE'
  3715 + 'AFTER_SALES_FAILURE'
3768 3716 ) {
3769 3717 message.error('请选择确认收货状态的子订单进行售后');
3770 3718 return;
... ... @@ -4096,392 +4044,6 @@ const OrderPage = () =&gt; {
4096 4044 });
4097 4045 }
4098 4046  
4099   - function toolBarRender() {
4100   - let toolBtns = [];
4101   - let radios: any[] = [];
4102   -
4103   - radios.push(<Radio value={0}>全部</Radio>);
4104   -
4105   - if (
4106   - roleCode === 'admin' ||
4107   - roleCode === 'salesManager' ||
4108   - roleCode === 'salesRepresentative'
4109   - ) {
4110   - radios.push(<Radio value={70}>只看作废</Radio>);
4111   - }
4112   -
4113   - if (roleCode === 'warehouseKeeper') {
4114   - radios.push(<Radio value={40}>待处理</Radio>);
4115   - }
4116   -
4117   - //采购可以筛选出需要处理的订单
4118   - if (roleCode === 'procure' && !isSupplier()) {
4119   - radios.push(<Radio value={60}>其他采购</Radio>);
4120   - radios.push(<Radio value={10}>待处理</Radio>);
4121   - }
4122   -
4123   - //财务可以将需要处理的订单排序到前面
4124   - if (roleCode === 'finance') {
4125   - radios.push(<Radio value={50}>加急</Radio>);
4126   -
4127   - radios.push(<Radio value={40}>待处理</Radio>);
4128   -
4129   - radios.push(<Checkbox onChange={financeSorted}>排序</Checkbox>);
4130   - }
4131   -
4132   - if (roleCode === 'salesRepresentative' || roleCode === 'salesManager') {
4133   - radios.push(<Radio value={30}>只看我创建</Radio>);
4134   -
4135   - radios.push(<Radio value={40}>待审核</Radio>);
4136   - }
4137   -
4138   - if (roleCode === 'admin') {
4139   - radios.push(<Radio value={10}>待处理</Radio>);
4140   - radios.push(<Checkbox onChange={financeSorted}>排序</Checkbox>);
4141   - }
4142   -
4143   - //筛选按钮配置
4144   - let radioGroup = (
4145   - <Radio.Group
4146   - onChange={(e: any) => {
4147   - setFilterCondition(e.target.value);
4148   - refreshTable();
4149   - }}
4150   - defaultValue={0}
4151   - >
4152   - {radios}
4153   - </Radio.Group>
4154   - );
4155   -
4156   - toolBtns.push(radioGroup);
4157   -
4158   - toolBtns.push(<ImportExpressBillModal></ImportExpressBillModal>);
4159   -
4160   - //导出按钮配置
4161   - const exportItems: MenuProps['items'] = [
4162   - {
4163   - label: '导出查询结果订单',
4164   - key: '2',
4165   - onClick: async () => {
4166   - let body = { flag: 50, ...searchParams };
4167   - exportLoading();
4168   - orderExport(
4169   - '/api/service/order/export',
4170   - '订单导出结果.xls',
4171   - 'POST',
4172   - body,
4173   - exportLoadingDestory,
4174   - );
4175   - },
4176   - },
4177   - {
4178   - label: '导出已选中订单',
4179   - key: '1',
4180   - onClick: async () => {
4181   - if (mainOrderSelectedMap.size === 0) {
4182   - message.error('请选择订单');
4183   - return;
4184   - }
4185   - let body = { flag: 30, id: Array.from(mainOrderSelectedMap.keys()) };
4186   - exportLoading();
4187   - orderExport(
4188   - '/api/service/order/export',
4189   - '订单导出结果.xls',
4190   - 'POST',
4191   - body,
4192   - exportLoadingDestory,
4193   - );
4194   - },
4195   - },
4196   - {
4197   - label: '导出当天订单',
4198   - key: '4',
4199   - onClick: async () => {
4200   - let body = { flag: 40, ids: [] };
4201   - exportLoading();
4202   - orderExport(
4203   - '/api/service/order/export',
4204   - '订单导出结果.xls',
4205   - 'POST',
4206   - body,
4207   - exportLoadingDestory,
4208   - );
4209   - },
4210   - },
4211   - {
4212   - label: '导出所有订单',
4213   - key: '3',
4214   - onClick: async () => {
4215   - let body = { flag: 10, ids: [] };
4216   - exportLoading();
4217   - orderExport(
4218   - '/api/service/order/export',
4219   - '订单导出结果.xls',
4220   - 'POST',
4221   - body,
4222   - exportLoadingDestory,
4223   - );
4224   - },
4225   - },
4226   - ];
4227   -
4228   - const exportMenuProps = {
4229   - items: exportItems,
4230   - onClick: () => { },
4231   - };
4232   -
4233   - //导出按钮配置
4234   - const auditItems: MenuProps['items'] = [
4235   - {
4236   - label: '后置审核',
4237   - key: '1',
4238   - onClick: async () => {
4239   - setIsMainOrder(true);
4240   - setCheckVisible(true);
4241   - setOrderCheckType(CHECK_TYPE.WAITING_FOR_POST_AUDIT);
4242   - },
4243   - },
4244   - {
4245   - label: '加急开票审核(旧)',
4246   - key: '2',
4247   - disabled: true,
4248   - onClick: async () => {
4249   - setIsMainOrder(true);
4250   - setCheckVisible(true);
4251   - setOrderCheckType(CHECK_TYPE.URGENT_INVOICE_AUDITING_OLD);
4252   - },
4253   - },
4254   - {
4255   - label: '领导审核',
4256   - key: '3',
4257   - onClick: async () => {
4258   - setIsMainOrder(true);
4259   - setCheckVisible(true);
4260   - setOrderCheckType(CHECK_TYPE.LEADER_AUDIT);
4261   - },
4262   - },
4263   - {
4264   - label: '修改申请审核',
4265   - key: '4',
4266   - onClick: async () => {
4267   - setIsMainOrder(true);
4268   - setCheckVisible(true);
4269   - setOrderCheckType(CHECK_TYPE.MODIFY_APPLY_WAIT_FOR_AUDIT);
4270   - },
4271   - },
4272   - ];
4273   -
4274   - const auditProps = {
4275   - items: auditItems,
4276   - onClick: () => { },
4277   - };
4278   -
4279   - if (rolePath?.includes('leaderMergeAudit')) {
4280   - toolBtns.push(
4281   - <Dropdown
4282   - disabled={selectedSubOrderKeys.length === 0}
4283   - menu={auditProps}
4284   - >
4285   - <Button>
4286   - <Space>
4287   - 一键审核
4288   - <DownOutlined />
4289   - </Space>
4290   - </Button>
4291   - </Dropdown>,
4292   - );
4293   - }
4294   -
4295   - if (rolePath?.includes('mergeAudit')) {
4296   - toolBtns.push(
4297   - <Button
4298   - type="primary"
4299   - key="out"
4300   - onClick={() => {
4301   - setIsMainOrder(true);
4302   - if (roleCode === 'procure') {
4303   - setProcureCheckModalVisible(true);
4304   - }
4305   -
4306   - if (roleCode === 'warehouseKeeper') {
4307   - setCheckVisible(true);
4308   - setOrderCheckType(CHECK_TYPE.WEARHOUSE_KEEPER);
4309   - }
4310   - }}
4311   - disabled={selectedSubOrderKeys?.length === 0}
4312   - >
4313   - 一键审核
4314   - </Button>,
4315   - );
4316   - }
4317   -
4318   - if (rolePath?.includes('mergeProcureOrder')) {
4319   - toolBtns.push(
4320   - <Button
4321   - key="mergeProcureOrder"
4322   - type="primary"
4323   - disabled={selectedSubOrderKeys.length === 0}
4324   - onClick={() => {
4325   - Modal.confirm({
4326   - title: '一键下单',
4327   - content: '选中的订单是否都已下单?',
4328   - onOk: async () => {
4329   - let res = await postServiceOrderProcureOrder({
4330   - data: { subIds: [...selectedSubOrderKeys.values()].flat() },
4331   - });
4332   - if (res.result === RESPONSE_CODE.SUCCESS) {
4333   - message.success(res.message);
4334   - refreshTable();
4335   - return true;
4336   - }
4337   - },
4338   - });
4339   - }}
4340   - >
4341   - 一键下单
4342   - </Button>,
4343   - );
4344   - }
4345   -
4346   - if (rolePath?.includes('mergeApplyInvoicing')) {
4347   - toolBtns.push(
4348   - <Button
4349   - type="primary"
4350   - key="out"
4351   - onClick={() => {
4352   - setIsEdit(false);
4353   - setIsMainOrder(true);
4354   - setApplyForInvoicingVisible(true);
4355   - }}
4356   - disabled={!canMergeInvoicing} /*{selectedSubOrderKeys?.length === 0}*/
4357   - >
4358   - {roleCode === 'admin' ? '合并(销售)' : '合并开票'}
4359   - </Button>,
4360   - );
4361   - }
4362   -
4363   - <Button
4364   - type="primary"
4365   - key="out"
4366   - onClick={() => {
4367   - setIsEdit(false);
4368   - setIsMainOrder(true);
4369   - setInvoicingDrawerFormVisible(true);
4370   - }}
4371   - disabled={selectedSubOrderKeys?.length === 0}
4372   - >
4373   - 申请开票(旧)
4374   - </Button>;
4375   -
4376   - if (rolePath?.includes('mergeInvoicing')) {
4377   - toolBtns.push(
4378   - <Button
4379   - type="primary"
4380   - key="out"
4381   - onClick={() => {
4382   - //检查订单状态是否正确
4383   - // 遍历Map中的键值对
4384   - let errorIds = new Set();
4385   - [...subOrderSelectedMap.values()].flat().forEach((subOrder) => {
4386   - if (
4387   - subOrder.afterInvoicingStatus !== 'APPLY_FOR_INVOICING' &&
4388   - subOrder.afterInvoicingStatus !== 'PARTIAL_INVOICING'
4389   - ) {
4390   - errorIds.add(subOrder.mainOrderId);
4391   - return;
4392   - }
4393   - });
4394   - if (errorIds.size > 0) {
4395   - message.error(
4396   - '订单号为:' +
4397   - [...errorIds.values()].join(',') +
4398   - '的订单存在不是[申请开票]或者[部分开票]状态的子订单,请检查!',
4399   - );
4400   - return;
4401   - }
4402   - setIsMainOrder(true);
4403   - setFinancialVisible(true);
4404   - }}
4405   - disabled={selectedSubOrderKeys?.length === 0}
4406   - >
4407   - {roleCode === 'admin' ? '合并(财务)' : '合并开票'}
4408   - </Button>,
4409   - );
4410   - }
4411   -
4412   - toolBtns.push(
4413   - <Button
4414   - type="primary"
4415   - key="inv"
4416   - onClick={() => {
4417   - setIsMainOrder(true);
4418   - let flat = [...subOrderSelectedMap.values()].flat();
4419   - //遍历flat,判断afterInvoicingStatusList存在于canApplyAfterInvoicingStatus
4420   - flat.forEach((item) => {
4421   - if (
4422   - item.invoicingStatus === 'UN_INVOICE' ||
4423   - (item.afterInvoicingStatus !== null &&
4424   - !canApplyAfterInvoicingStatus.includes(
4425   - item.afterInvoicingStatus,
4426   - ))
4427   - ) {
4428   - message.error('存在不能进行开票的订单');
4429   - return;
4430   - }
4431   - });
4432   - //遍历afterInvoicingStatusList
4433   - setInvoicingDrawerFormVisible(true);
4434   - }}
4435   - disabled={selectedSubOrderKeys?.length === 0}
4436   - >
4437   - 申请开票
4438   - </Button>,
4439   - );
4440   -
4441   - if (rolePath?.includes('addOrder')) {
4442   - toolBtns.push(
4443   - <Button
4444   - type="primary"
4445   - key="out"
4446   - onClick={() => {
4447   - setOrderDrawerVisible(true);
4448   - setOrderOptType('add');
4449   - }}
4450   - >
4451   - 新增
4452   - </Button>,
4453   - );
4454   - }
4455   -
4456   - if (rolePath?.includes('importExcel')) {
4457   - toolBtns.push(
4458   - <Button
4459   - type="primary"
4460   - key="out"
4461   - onClick={() => {
4462   - setImportModalVisible(true);
4463   - }}
4464   - >
4465   - 批量发货
4466   - </Button>,
4467   - );
4468   - }
4469   -
4470   - if (rolePath?.includes('export')) {
4471   - toolBtns.push(
4472   - <Dropdown menu={exportMenuProps}>
4473   - <Button>
4474   - <Space>
4475   - 导出
4476   - <DownOutlined />
4477   - </Space>
4478   - </Button>
4479   - </Dropdown>,
4480   - );
4481   - }
4482   -
4483   - return toolBtns;
4484   - }
4485 4047 //选择天数1
4486 4048 const options1 = [
4487 4049 {
... ... @@ -4526,7 +4088,7 @@ const OrderPage = () =&gt; {
4526 4088 };
4527 4089 const confirmInvoice = () => {
4528 4090 console.log('5656confirm');
4529   - }
  4091 + };
4530 4092 const [invoiceWarningNum, setInvoiceWarningNum] = useState(1);
4531 4093 const [invoiceRefundWarningNum, setInvoiceRefundWarningNum] = useState(1);
4532 4094 async function getInvoiceWarningNum() {
... ... @@ -4551,9 +4113,13 @@ const OrderPage = () =&gt; {
4551 4113 children: (
4552 4114 <div>
4553 4115 <div style={{ position: 'relative' }}>
4554   - <Radio.Group options={options1} onChange={radioOnChange1} value={value1} />
  4116 + <Radio.Group
  4117 + options={options1}
  4118 + onChange={radioOnChange1}
  4119 + value={value1}
  4120 + />
4555 4121 <Button
4556   - size='large'
  4122 + size="large"
4557 4123 type="primary"
4558 4124 onClick={confirmInvoice}
4559 4125 style={{ position: 'absolute', right: '20px' }}
... ... @@ -4608,88 +4174,87 @@ const OrderPage = () =&gt; {
4608 4174 search={false}
4609 4175 // labelWidth: 'auto',
4610 4176 // onCollapse: resize,
4611   - request={
4612   - async (
4613   - // 第一个参数 params 查询表单和 params 参数的结合
4614   - // 第一个参数中一定会有 pageSize 和 current ,这两个参数是 antd 的规范
4615   - params,
  4177 + request={async (
  4178 + // 第一个参数 params 查询表单和 params 参数的结合
  4179 + // 第一个参数中一定会有 pageSize 和 current ,这两个参数是 antd 的规范
  4180 + params,
  4181 + sorter,
  4182 + filter,
  4183 + ) => {
  4184 + //订单id处理
  4185 + /**
  4186 + * 以params中的id为主,如果params没id,则取url中的id
  4187 + * 第一次进来这个页面,url带有id的话,会自动填充到查询表单中,但是第一次查询params不会带这个id进来
  4188 + */
  4189 + let orderIds = mainTableFormRef.current?.getFieldValue('id');
  4190 + let subOrderId =
  4191 + mainTableFormRef.current?.getFieldValue('subOrderId');
  4192 + params.id = params.id || orderIds;
  4193 + params.subOrderId = params.subOrderId || subOrderId;
  4194 + if (params.id !== '') {
  4195 + params.id = params.id?.replace(/ /g, '');
  4196 + if (params.id?.indexOf(',')) {
  4197 + params.id = params.id.split(',');
  4198 + params.id = params.id.filter((id) => {
  4199 + return id !== '';
  4200 + });
  4201 + }
  4202 + }
  4203 +
  4204 + params.condition = filterCondifion;
  4205 +
  4206 + //排序
  4207 + params.sorted = sorted;
  4208 + //是否只查看已作废
  4209 + params.isDeleteQueryOrder = filterCondifion === 70;
  4210 + //保存这个搜索条件
  4211 + params.orderStatus = 'CONFIRM_RECEIPT';
  4212 + params.invoicingStatus = 'UN_INVOICE';
  4213 + params.statusDatetimeGe = calDate;
  4214 + console.log(params, '5656finalparams');
  4215 + setSearchParam(params);
  4216 + //订单标记1
  4217 + const { data } = await postServiceOrderQueryServiceOrder({
  4218 + // ...params,
  4219 + // FIXME: remove @ts-ignore
  4220 + // @ts-ignore
4616 4221 sorter,
4617 4222 filter,
4618   - ) => {
4619   - //订单id处理
4620   - /**
4621   - * 以params中的id为主,如果params没id,则取url中的id
4622   - * 第一次进来这个页面,url带有id的话,会自动填充到查询表单中,但是第一次查询params不会带这个id进来
4623   - */
4624   - let orderIds = mainTableFormRef.current?.getFieldValue('id');
4625   - let subOrderId =
4626   - mainTableFormRef.current?.getFieldValue('subOrderId');
4627   - params.id = params.id || orderIds;
4628   - params.subOrderId = params.subOrderId || subOrderId;
4629   - if (params.id !== '') {
4630   - params.id = params.id?.replace(/ /g, '');
4631   - if (params.id?.indexOf(',')) {
4632   - params.id = params.id.split(',');
4633   - params.id = params.id.filter((id) => {
4634   - return id !== '';
4635   - });
4636   - }
4637   - }
  4223 + data: { ...params },
  4224 + });
4638 4225  
4639   - params.condition = filterCondifion;
4640   -
4641   - //排序
4642   - params.sorted = sorted;
4643   - //是否只查看已作废
4644   - params.isDeleteQueryOrder = filterCondifion === 70;
4645   - //保存这个搜索条件
4646   - params.orderStatus = 'CONFIRM_RECEIPT';
4647   - params.invoicingStatus = 'UN_INVOICE';
4648   - params.statusDatetimeGe = calDate;
4649   - console.log(params, '5656finalparams');
4650   - setSearchParam(params);
4651   - //订单标记1
4652   - const { data } = await postServiceOrderQueryServiceOrder({
4653   - // ...params,
4654   - // FIXME: remove @ts-ignore
4655   - // @ts-ignore
4656   - sorter,
4657   - filter,
4658   - data: { ...params },
4659   - });
  4226 + setRolePath(data.specialPath);
  4227 + setSubOrderCount(data.count);
  4228 + setAllMainChecked(false);
  4229 + setSelectedMainOrderKeys([]);
  4230 + subOrderSelectedMap.clear();
  4231 + mainOrderSelectedMap.clear();
  4232 + setData(data?.data);
4660 4233  
4661   - setRolePath(data.specialPath);
4662   - setSubOrderCount(data.count);
4663   - setAllMainChecked(false);
4664   - setSelectedMainOrderKeys([]);
4665   - subOrderSelectedMap.clear();
4666   - mainOrderSelectedMap.clear();
4667   - setData(data?.data);
4668   -
4669   - //主订单id与子订单id的对照关系保存
4670   - mainOrderIdSubOrderIdRelationsMap.clear();
4671   - for (let row of data?.data) {
4672   - let mianOrderId = row.id;
4673   - let subOrderIds = row.subOrderInformationLists?.map((item) => {
4674   - //目前子订单存储的totalPayment不准确,这里重新处理取主订单的totalPayment
4675   - //totalPayment在财务开票计算金额时使用到
4676   - item.totalPayment = row.totalPayment;
4677   - return item.id;
4678   - });
4679   - mainOrderIdSubOrderIdRelationsMap.set(mianOrderId, subOrderIds);
4680   - }
  4234 + //主订单id与子订单id的对照关系保存
  4235 + mainOrderIdSubOrderIdRelationsMap.clear();
  4236 + for (let row of data?.data) {
  4237 + let mianOrderId = row.id;
  4238 + let subOrderIds = row.subOrderInformationLists?.map((item) => {
  4239 + //目前子订单存储的totalPayment不准确,这里重新处理取主订单的totalPayment
  4240 + //totalPayment在财务开票计算金额时使用到
  4241 + item.totalPayment = row.totalPayment;
  4242 + return item.id;
  4243 + });
  4244 + mainOrderIdSubOrderIdRelationsMap.set(mianOrderId, subOrderIds);
  4245 + }
4681 4246  
4682   - return {
4683   - data: data?.data || [],
4684   - total: data?.total || 0,
4685   - };
4686   - }}
  4247 + return {
  4248 + data: data?.data || [],
  4249 + total: data?.total || 0,
  4250 + };
  4251 + }}
4687 4252 toolbar={{
4688 4253 multipleLine: true,
4689 4254 }}
4690   - // toolBarRender={() => {
4691   - // return toolBarRender();
4692   - // }}
  4255 + // toolBarRender={() => {
  4256 + // return toolBarRender();
  4257 + // }}
4693 4258 />
4694 4259  
4695 4260 {orderDrawerVisible && (
... ... @@ -5173,7 +4738,7 @@ const OrderPage = () =&gt; {
5173 4738 {contextHolder}
5174 4739 <FloatButton.BackTop visibilityHeight={0} />
5175 4740 </div>
5176   - )
  4741 + ),
5177 4742 },
5178 4743 {
5179 4744 key: 2,
... ... @@ -5185,7 +4750,11 @@ const OrderPage = () =&gt; {
5185 4750 ),
5186 4751 children: (
5187 4752 <div>
5188   - <Radio.Group options={options2} onChange={radioOnChange2} value={value2} />
  4753 + <Radio.Group
  4754 + options={options2}
  4755 + onChange={radioOnChange2}
  4756 + value={value2}
  4757 + />
5189 4758 <div style={{ height: '25px' }}></div>
5190 4759 <ProTable
5191 4760 id="main-table"
... ... @@ -5241,7 +4810,7 @@ const OrderPage = () =&gt; {
5241 4810 filter,
5242 4811 ) => {
5243 4812 params.orderStatus = 'CONFIRM_INVOICE';
5244   - console.log(params, '5656params')
  4813 + console.log(params, '5656params');
5245 4814 //订单id处理
5246 4815 /**
5247 4816 * 以params中的id为主,如果params没id,则取url中的id
... ... @@ -5271,9 +4840,6 @@ const OrderPage = () =&gt; {
5271 4840 //保存这个搜索条件
5272 4841 setSearchParam(params);
5273 4842  
5274   - useEffect(() => {
5275   - //预警订单
5276   - }, []);
5277 4843 //订单标记2
5278 4844 const { data } = await postServiceOrderQueryServiceOrder({
5279 4845 // ...params,
... ... @@ -5313,9 +4879,9 @@ const OrderPage = () =&gt; {
5313 4879 toolbar={{
5314 4880 multipleLine: true,
5315 4881 }}
5316   - // toolBarRender={() => {
5317   - // return toolBarRender();
5318   - // }}
  4882 + // toolBarRender={() => {
  4883 + // return toolBarRender();
  4884 + // }}
5319 4885 />
5320 4886  
5321 4887 {orderDrawerVisible && (
... ... @@ -5333,527 +4899,475 @@ const OrderPage = () =&gt; {
5333 4899 />
5334 4900 )}
5335 4901  
5336   - {
5337   - checkVisible && (
5338   - <CheckModal
5339   - setCheckVisible={(val: boolean) => {
5340   - setCheckVisible(val);
5341   - if (!val) {
5342   - clearOptObject();
5343   - }
5344   - }}
5345   - data={isMainOrder ? getFirstMainOrder() : buildMainOrder()}
5346   - subOrders={
5347   - isMainOrder
5348   - ? [...subOrderSelectedMap.values()].flat()
5349   - : buildSubOrders()
5350   - }
5351   - orderCheckType={orderCheckType}
5352   - openOrderDrawer={(type: any, id: any) => {
5353   - setCurrentMainId(id);
5354   - setOrderOptType(type);
5355   - setOrderDrawerVisible(true);
5356   - }}
5357   - onClose={() => {
  4902 + {checkVisible && (
  4903 + <CheckModal
  4904 + setCheckVisible={(val: boolean) => {
  4905 + setCheckVisible(val);
  4906 + if (!val) {
5358 4907 clearOptObject();
5359   - setCheckVisible(false);
5360   - refreshTable();
5361   - }}
5362   - />
5363   - )
5364   - }
5365   -
5366   - {
5367   - applyForInvoicingVisible && (
5368   - <ApplyForInvoicingModal
5369   - setCheckVisible={(val: boolean) => {
5370   - setApplyForInvoicingVisible(val);
5371   - if (!val) {
5372   - clearOptObject();
5373   - }
5374   - }}
5375   - subOrders={
5376   - isMainOrder
5377   - ? [...subOrderSelectedMap.values()].flat()
5378   - : buildSubOrders()
5379 4908 }
5380   - totalPayment={getApplyInvoicingTotalPayment()}
5381   - isMainOrder={isMainOrder}
5382   - isEdit={isEdit}
5383   - onClose={() => {
5384   - setApplyForInvoicingVisible(false);
5385   - setIsMainOrder(false);
5386   - clearOptObject();
5387   - refreshTable();
5388   - }}
5389   - />
5390   - )
5391   - }
5392   -
5393   - {
5394   - notesEditVisible && (
5395   - <OrderNotesEditModal
5396   - setNotesEditVisible={(val: boolean) => {
5397   - setNotesEditVisible(val);
5398   - if (!val) {
5399   - clearOptObject();
5400   - }
5401   - }}
5402   - ids={selectedRows}
5403   - notesType={notesType}
5404   - notes={notes}
5405   - onClose={() => {
5406   - setNotesEditVisible(false);
5407   - setSelectedRows([]);
5408   - setNotes(notes);
5409   - setNotesType(1);
5410   - refreshTable();
5411   - }}
5412   - />
5413   - )
5414   - }
  4909 + }}
  4910 + data={isMainOrder ? getFirstMainOrder() : buildMainOrder()}
  4911 + subOrders={
  4912 + isMainOrder
  4913 + ? [...subOrderSelectedMap.values()].flat()
  4914 + : buildSubOrders()
  4915 + }
  4916 + orderCheckType={orderCheckType}
  4917 + openOrderDrawer={(type: any, id: any) => {
  4918 + setCurrentMainId(id);
  4919 + setOrderOptType(type);
  4920 + setOrderDrawerVisible(true);
  4921 + }}
  4922 + onClose={() => {
  4923 + clearOptObject();
  4924 + setCheckVisible(false);
  4925 + refreshTable();
  4926 + }}
  4927 + />
  4928 + )}
5415 4929  
5416   - {
5417   - deliverVisible && (
5418   - <DeliverModal
5419   - data={buildSubOrders()}
5420   - isSendProduct={isSendProduct}
5421   - setVisible={(val: boolean) => {
5422   - setDeliverVisible(val);
5423   - if (!val) {
5424   - clearOptObject();
5425   - }
5426   - }}
5427   - sendType={orderCheckType}
5428   - onClose={() => {
  4930 + {applyForInvoicingVisible && (
  4931 + <ApplyForInvoicingModal
  4932 + setCheckVisible={(val: boolean) => {
  4933 + setApplyForInvoicingVisible(val);
  4934 + if (!val) {
5429 4935 clearOptObject();
5430   - setDeliverVisible(false);
5431   - setIsSendProduct(false);
5432   - refreshTable();
5433   - }}
5434   - />
5435   - )
5436   - }
5437   -
5438   - {
5439   - financialVisible && (
5440   - <FinancialDrawer
5441   - isEdit={isEdit}
5442   - mainOrder={isMainOrder ? getFirstMainOrder() : buildMainOrder()}
5443   - subOrders={
5444   - isMainOrder
5445   - ? [...subOrderSelectedMap.values()].flat()
5446   - : buildSubOrders()
5447 4936 }
5448   - isMainOrder={isMainOrder}
5449   - cancel={() => {
5450   - setFinancialVisible(false);
5451   - clearOptObject();
5452   - setIsMainOrder(false);
5453   - setIsEdit(false);
5454   - }}
5455   - onClose={() => {
5456   - setFinancialVisible(false);
5457   - clearOptObject();
5458   - refreshTable();
5459   - setIsMainOrder(false);
5460   - setIsEdit(false);
5461   - }}
5462   - />
5463   - )
5464   - }
  4937 + }}
  4938 + subOrders={
  4939 + isMainOrder
  4940 + ? [...subOrderSelectedMap.values()].flat()
  4941 + : buildSubOrders()
  4942 + }
  4943 + totalPayment={getApplyInvoicingTotalPayment()}
  4944 + isMainOrder={isMainOrder}
  4945 + isEdit={isEdit}
  4946 + onClose={() => {
  4947 + setApplyForInvoicingVisible(false);
  4948 + setIsMainOrder(false);
  4949 + clearOptObject();
  4950 + refreshTable();
  4951 + }}
  4952 + />
  4953 + )}
5465 4954  
5466   - {
5467   - financialEditVisible && (
5468   - <FinancialEditDrawer
5469   - mainOrder={buildMainOrder()}
5470   - subOrders={buildSubOrders()}
5471   - isMainOrder={isMainOrder}
5472   - setVisible={() => {
5473   - setFinancialEditVisible(false);
  4955 + {notesEditVisible && (
  4956 + <OrderNotesEditModal
  4957 + setNotesEditVisible={(val: boolean) => {
  4958 + setNotesEditVisible(val);
  4959 + if (!val) {
5474 4960 clearOptObject();
5475   - }}
5476   - onClose={() => {
5477   - setFinancialEditVisible(false);
5478   - refreshTable();
5479   - setIsMainOrder(false);
  4961 + }
  4962 + }}
  4963 + ids={selectedRows}
  4964 + notesType={notesType}
  4965 + notes={notes}
  4966 + onClose={() => {
  4967 + setNotesEditVisible(false);
  4968 + setSelectedRows([]);
  4969 + setNotes(notes);
  4970 + setNotesType(1);
  4971 + refreshTable();
  4972 + }}
  4973 + />
  4974 + )}
  4975 +
  4976 + {deliverVisible && (
  4977 + <DeliverModal
  4978 + data={buildSubOrders()}
  4979 + isSendProduct={isSendProduct}
  4980 + setVisible={(val: boolean) => {
  4981 + setDeliverVisible(val);
  4982 + if (!val) {
5480 4983 clearOptObject();
5481   - }}
5482   - />
5483   - )
5484   - }
  4984 + }
  4985 + }}
  4986 + sendType={orderCheckType}
  4987 + onClose={() => {
  4988 + clearOptObject();
  4989 + setDeliverVisible(false);
  4990 + setIsSendProduct(false);
  4991 + refreshTable();
  4992 + }}
  4993 + />
  4994 + )}
5485 4995  
5486   - {
5487   - orderPrintVisible && (
5488   - <OrderPrintModal
5489   - mainOrder={buildMainOrder()}
5490   - subOrders={buildSubOrders()}
5491   - isRePrint={isRePrintOrder}
5492   - setVisible={(val: boolean) => {
5493   - setOrderPrintVisible(val);
5494   - if (!val) {
5495   - clearOptObject();
5496   - }
5497   - }}
5498   - printOptType={orderCheckType}
5499   - onClose={() => {
5500   - setOrderPrintVisible(false);
  4996 + {financialVisible && (
  4997 + <FinancialDrawer
  4998 + isEdit={isEdit}
  4999 + mainOrder={isMainOrder ? getFirstMainOrder() : buildMainOrder()}
  5000 + subOrders={
  5001 + isMainOrder
  5002 + ? [...subOrderSelectedMap.values()].flat()
  5003 + : buildSubOrders()
  5004 + }
  5005 + isMainOrder={isMainOrder}
  5006 + cancel={() => {
  5007 + setFinancialVisible(false);
  5008 + clearOptObject();
  5009 + setIsMainOrder(false);
  5010 + setIsEdit(false);
  5011 + }}
  5012 + onClose={() => {
  5013 + setFinancialVisible(false);
  5014 + clearOptObject();
  5015 + refreshTable();
  5016 + setIsMainOrder(false);
  5017 + setIsEdit(false);
  5018 + }}
  5019 + />
  5020 + )}
  5021 +
  5022 + {financialEditVisible && (
  5023 + <FinancialEditDrawer
  5024 + mainOrder={buildMainOrder()}
  5025 + subOrders={buildSubOrders()}
  5026 + isMainOrder={isMainOrder}
  5027 + setVisible={() => {
  5028 + setFinancialEditVisible(false);
  5029 + clearOptObject();
  5030 + }}
  5031 + onClose={() => {
  5032 + setFinancialEditVisible(false);
  5033 + refreshTable();
  5034 + setIsMainOrder(false);
  5035 + clearOptObject();
  5036 + }}
  5037 + />
  5038 + )}
  5039 +
  5040 + {orderPrintVisible && (
  5041 + <OrderPrintModal
  5042 + mainOrder={buildMainOrder()}
  5043 + subOrders={buildSubOrders()}
  5044 + isRePrint={isRePrintOrder}
  5045 + setVisible={(val: boolean) => {
  5046 + setOrderPrintVisible(val);
  5047 + if (!val) {
5501 5048 clearOptObject();
5502   - setIsRePrintOrder(false);
5503   - refreshTable();
5504   - }}
5505   - />
5506   - )
5507   - }
  5049 + }
  5050 + }}
  5051 + printOptType={orderCheckType}
  5052 + onClose={() => {
  5053 + setOrderPrintVisible(false);
  5054 + clearOptObject();
  5055 + setIsRePrintOrder(false);
  5056 + refreshTable();
  5057 + }}
  5058 + />
  5059 + )}
5508 5060  
5509   - {
5510   - confirmReceiptVisible && (
5511   - <ConfirmReceiptModal
5512   - data={buildSubOrders()}
5513   - onClose={() => {
5514   - setConfirmReceiptVisible(false);
  5061 + {confirmReceiptVisible && (
  5062 + <ConfirmReceiptModal
  5063 + data={buildSubOrders()}
  5064 + onClose={() => {
  5065 + setConfirmReceiptVisible(false);
  5066 + clearOptObject();
  5067 + refreshTable();
  5068 + }}
  5069 + />
  5070 + )}
  5071 +
  5072 + {imagesViewerModalVisible && (
  5073 + <ImagesViewerModal
  5074 + optType={imagesViewerOptType}
  5075 + setVisible={(val: boolean) => {
  5076 + setImagesViewerModalVisible(val);
  5077 + if (!val) {
5515 5078 clearOptObject();
5516   - refreshTable();
5517   - }}
5518   - />
5519   - )
5520   - }
  5079 + }
  5080 + }}
  5081 + onClose={() => {
  5082 + setImagesViewerModalVisible(false);
  5083 + }}
  5084 + orderRow={buildSubOrders()[0]}
  5085 + />
  5086 + )}
5521 5087  
5522   - {
5523   - imagesViewerModalVisible && (
5524   - <ImagesViewerModal
5525   - optType={imagesViewerOptType}
5526   - setVisible={(val: boolean) => {
5527   - setImagesViewerModalVisible(val);
5528   - if (!val) {
5529   - clearOptObject();
5530   - }
5531   - }}
5532   - onClose={() => {
5533   - setImagesViewerModalVisible(false);
5534   - }}
5535   - orderRow={buildSubOrders()[0]}
5536   - />
5537   - )
5538   - }
  5088 + {importModalVisible && (
  5089 + <ImportModal
  5090 + onClose={() => {
  5091 + setImportModalVisible(false);
  5092 + refreshTable();
  5093 + }}
  5094 + />
  5095 + )}
5539 5096  
5540   - {
5541   - importModalVisible && (
5542   - <ImportModal
5543   - onClose={() => {
5544   - setImportModalVisible(false);
5545   - refreshTable();
5546   - }}
5547   - />
5548   - )
5549   - }
  5097 + {attachmentModalVisible && (
  5098 + <AttachmentModal
  5099 + data={buildSubOrders()[0]}
  5100 + onClose={() => {
  5101 + setAttachmentModalVisible(false);
  5102 + clearOptObject();
  5103 + }}
  5104 + />
  5105 + )}
5550 5106  
5551   - {
5552   - attachmentModalVisible && (
5553   - <AttachmentModal
5554   - data={buildSubOrders()[0]}
5555   - onClose={() => {
5556   - setAttachmentModalVisible(false);
5557   - clearOptObject();
5558   - }}
5559   - />
5560   - )
5561   - }
  5107 + {historyModalVisible && (
  5108 + <HistoryModal
  5109 + subOrders={selectedRows}
  5110 + isCancelledOrder={filterCondifion === 70}
  5111 + onClose={() => {
  5112 + setHistoryModalVisible(false);
  5113 + setSelectedRows({});
  5114 + clearOptObject();
  5115 + }}
  5116 + />
  5117 + )}
5562 5118  
5563   - {
5564   - historyModalVisible && (
5565   - <HistoryModal
5566   - subOrders={selectedRows}
5567   - isCancelledOrder={filterCondifion === 70}
5568   - onClose={() => {
5569   - setHistoryModalVisible(false);
5570   - setSelectedRows({});
5571   - clearOptObject();
5572   - }}
5573   - />
5574   - )
5575   - }
  5119 + {deliverInfoDrawerVisible && (
  5120 + <DeliverInfoDrawer
  5121 + data={buildMainOrder()}
  5122 + onClose={() => {
  5123 + setDeliverInfoDrawerVisible(false);
  5124 + clearOptObject();
  5125 + }}
  5126 + />
  5127 + )}
5576 5128  
5577   - {
5578   - deliverInfoDrawerVisible && (
5579   - <DeliverInfoDrawer
5580   - data={buildMainOrder()}
5581   - onClose={() => {
5582   - setDeliverInfoDrawerVisible(false);
5583   - clearOptObject();
5584   - }}
5585   - />
5586   - )
5587   - }
  5129 + {deliverInfoDrawerVisible && (
  5130 + <DeliverInfoDrawer
  5131 + data={buildMainOrder()}
  5132 + onClose={() => {
  5133 + setDeliverInfoDrawerVisible(false);
  5134 + clearOptObject();
  5135 + }}
  5136 + />
  5137 + )}
5588 5138  
5589   - {
5590   - deliverInfoDrawerVisible && (
5591   - <DeliverInfoDrawer
5592   - data={buildMainOrder()}
5593   - onClose={() => {
5594   - setDeliverInfoDrawerVisible(false);
  5139 + {procureCheckModalVisible && (
  5140 + <ProcureCheckModal
  5141 + setCheckVisible={(val: boolean) => {
  5142 + setProcureCheckModalVisible(val);
  5143 + if (!val) {
5595 5144 clearOptObject();
5596   - }}
5597   - />
5598   - )
5599   - }
5600   -
5601   - {
5602   - procureCheckModalVisible && (
5603   - <ProcureCheckModal
5604   - setCheckVisible={(val: boolean) => {
5605   - setProcureCheckModalVisible(val);
5606   - if (!val) {
5607   - clearOptObject();
5608   - }
5609   - }}
5610   - isMainOrder={isMainOrder}
5611   - orders={
5612   - isMainOrder
5613   - ? [...subOrderSelectedMap.values()].flat()
5614   - : buildSubOrders()
5615 5145 }
5616   - onClose={() => {
5617   - setProcureCheckModalVisible(false);
  5146 + }}
  5147 + isMainOrder={isMainOrder}
  5148 + orders={
  5149 + isMainOrder
  5150 + ? [...subOrderSelectedMap.values()].flat()
  5151 + : buildSubOrders()
  5152 + }
  5153 + onClose={() => {
  5154 + setProcureCheckModalVisible(false);
  5155 + clearOptObject();
  5156 + setIsMainOrder(false);
  5157 + refreshTable();
  5158 + }}
  5159 + />
  5160 + )}
  5161 +
  5162 + {afterSalesDrawerVisible && (
  5163 + <AfterSalesDrawer
  5164 + setVisible={(val: boolean) => {
  5165 + setAfterSalesDrawerVisible(val);
  5166 + if (!val) {
5618 5167 clearOptObject();
5619   - setIsMainOrder(false);
5620   - refreshTable();
5621   - }}
5622   - />
5623   - )
5624   - }
  5168 + }
  5169 + }}
  5170 + mainOrder={buildMainOrder()}
  5171 + subOrders={buildSubOrders()}
  5172 + onClose={() => {
  5173 + setAfterSalesDrawerVisible(false);
  5174 + clearOptObject();
  5175 + refreshTable();
  5176 + }}
  5177 + />
  5178 + )}
5625 5179  
5626   - {
5627   - afterSalesDrawerVisible && (
5628   - <AfterSalesDrawer
5629   - setVisible={(val: boolean) => {
5630   - setAfterSalesDrawerVisible(val);
5631   - if (!val) {
5632   - clearOptObject();
5633   - }
5634   - }}
5635   - mainOrder={buildMainOrder()}
5636   - subOrders={buildSubOrders()}
5637   - onClose={() => {
5638   - setAfterSalesDrawerVisible(false);
  5180 + {procureConvertModalVisible && (
  5181 + <ProcureConvertModal
  5182 + setVisible={(val: boolean) => {
  5183 + setProcureConvertModalVisible(val);
  5184 + if (!val) {
5639 5185 clearOptObject();
5640   - refreshTable();
5641   - }}
5642   - />
5643   - )
5644   - }
  5186 + }
  5187 + }}
  5188 + subOrders={buildSubOrders()}
  5189 + onClose={() => {
  5190 + setProcureConvertModalVisible(false);
  5191 + clearOptObject();
  5192 + refreshTable();
  5193 + }}
  5194 + />
  5195 + )}
5645 5196  
5646   - {
5647   - procureConvertModalVisible && (
5648   - <ProcureConvertModal
5649   - setVisible={(val: boolean) => {
5650   - setProcureConvertModalVisible(val);
5651   - if (!val) {
5652   - clearOptObject();
5653   - }
5654   - }}
5655   - subOrders={buildSubOrders()}
5656   - onClose={() => {
5657   - setProcureConvertModalVisible(false);
  5197 + {financialMergeDrawerVisible && (
  5198 + <FinancialMergeDrawer
  5199 + setVisible={(val: boolean) => {
  5200 + setFinancialMergeDrawerVisible(val);
  5201 + if (!val) {
5658 5202 clearOptObject();
5659   - refreshTable();
5660   - }}
5661   - />
5662   - )
5663   - }
5664   -
5665   - {
5666   - financialMergeDrawerVisible && (
5667   - <FinancialMergeDrawer
5668   - setVisible={(val: boolean) => {
5669   - setFinancialMergeDrawerVisible(val);
5670   - if (!val) {
5671   - clearOptObject();
5672   - }
5673   - }}
5674   - dataList={
5675   - isMainOrder
5676   - ? [...subOrderSelectedMap.values()].flat()
5677   - : buildSubOrders()
5678 5203 }
5679   - onClose={() => {
5680   - setFinancialMergeDrawerVisible(false);
5681   - setIsMainOrder(false);
5682   - clearOptObject();
5683   - refreshTable();
5684   - }}
5685   - />
5686   - )
5687   - }
  5204 + }}
  5205 + dataList={
  5206 + isMainOrder
  5207 + ? [...subOrderSelectedMap.values()].flat()
  5208 + : buildSubOrders()
  5209 + }
  5210 + onClose={() => {
  5211 + setFinancialMergeDrawerVisible(false);
  5212 + setIsMainOrder(false);
  5213 + clearOptObject();
  5214 + refreshTable();
  5215 + }}
  5216 + />
  5217 + )}
5688 5218  
5689   - {
5690   - financialReceiptsModalVisible && (
5691   - <FinancialReceiptsModal
5692   - setVisible={(val: boolean) => {
5693   - setFinancialReceiptsModalVisible(val);
5694   - if (!val) {
5695   - clearOptObject();
5696   - }
5697   - }}
5698   - datas={selectedRows}
5699   - onClose={() => {
5700   - setFinancialReceiptsModalVisible(false);
5701   - setSelectedRows({});
5702   - refreshTable();
5703   - }}
5704   - />
5705   - )
5706   - }
  5219 + {financialReceiptsModalVisible && (
  5220 + <FinancialReceiptsModal
  5221 + setVisible={(val: boolean) => {
  5222 + setFinancialReceiptsModalVisible(val);
  5223 + if (!val) {
  5224 + clearOptObject();
  5225 + }
  5226 + }}
  5227 + datas={selectedRows}
  5228 + onClose={() => {
  5229 + setFinancialReceiptsModalVisible(false);
  5230 + setSelectedRows({});
  5231 + refreshTable();
  5232 + }}
  5233 + />
  5234 + )}
5707 5235  
5708   - {
5709   - shippingWarehouseChangeModalVisible && (
5710   - <ShippingWarehouseChangeModal
5711   - setVisible={(val: boolean) => {
5712   - setShippingWarehouseChangeModalVisible(val);
5713   - if (!val) {
5714   - clearOptObject();
5715   - }
5716   - }}
5717   - subOrderIds={ids}
5718   - originShippingWarehouse={buildSubOrders()[0].shippingWarehouse}
5719   - onClose={() => {
5720   - setShippingWarehouseChangeModalVisible(false);
  5236 + {shippingWarehouseChangeModalVisible && (
  5237 + <ShippingWarehouseChangeModal
  5238 + setVisible={(val: boolean) => {
  5239 + setShippingWarehouseChangeModalVisible(val);
  5240 + if (!val) {
5721 5241 clearOptObject();
5722   - setIds([]);
5723   - refreshTable();
5724   - }}
5725   - />
5726   - )
5727   - }
5728   - {
5729   - reissueVisible && (
5730   - <ReissueModal
5731   - setVisible={(val: boolean) => {
5732   - setReissueVisible(val);
5733   - if (!val) {
5734   - clearOptObject();
5735   - }
5736   - }}
5737   - subOrders={
5738   - isMainOrder
5739   - ? [...subOrderSelectedMap.values()].flat()
5740   - : buildSubOrders()
5741 5242 }
5742   - onClose={() => {
5743   - setReissueVisible(false);
  5243 + }}
  5244 + subOrderIds={ids}
  5245 + originShippingWarehouse={buildSubOrders()[0].shippingWarehouse}
  5246 + onClose={() => {
  5247 + setShippingWarehouseChangeModalVisible(false);
  5248 + clearOptObject();
  5249 + setIds([]);
  5250 + refreshTable();
  5251 + }}
  5252 + />
  5253 + )}
  5254 + {reissueVisible && (
  5255 + <ReissueModal
  5256 + setVisible={(val: boolean) => {
  5257 + setReissueVisible(val);
  5258 + if (!val) {
5744 5259 clearOptObject();
5745   - refreshTable();
5746   - }}
5747   - />
5748   - )
5749   - }
5750   - {
5751   - reissueVisibleOld && (
5752   - <ReissueModal_old
5753   - setVisible={(val: boolean) => {
5754   - setReissueVisibleOld(val);
5755   - console.log(reissueVisible);
5756   - if (!val) {
5757   - clearOptObject();
5758   - }
5759   - }}
5760   - mainOrder={buildMainOrder()}
5761   - subOrders={buildSubOrders()}
5762   - onClose={() => {
5763   - setReissueVisibleOld(false);
  5260 + }
  5261 + }}
  5262 + subOrders={
  5263 + isMainOrder
  5264 + ? [...subOrderSelectedMap.values()].flat()
  5265 + : buildSubOrders()
  5266 + }
  5267 + onClose={() => {
  5268 + setReissueVisible(false);
  5269 + clearOptObject();
  5270 + refreshTable();
  5271 + }}
  5272 + />
  5273 + )}
  5274 + {reissueVisibleOld && (
  5275 + <ReissueModal_old
  5276 + setVisible={(val: boolean) => {
  5277 + setReissueVisibleOld(val);
  5278 + console.log(reissueVisible);
  5279 + if (!val) {
5764 5280 clearOptObject();
5765   - refreshTable();
5766   - }}
5767   - />
5768   - )
5769   - }
5770   - {
5771   - productionTimeModalVisible && (
5772   - <ProductionTimeModal
5773   - setVisible={(val: boolean) => {
5774   - setProductionTimeModalVisible(val);
5775   - if (!val) {
5776   - clearOptObject();
5777   - }
5778   - }}
5779   - subOrders={buildSubOrders()}
5780   - onClose={() => {
5781   - setProductionTimeModalVisible(false);
  5281 + }
  5282 + }}
  5283 + mainOrder={buildMainOrder()}
  5284 + subOrders={buildSubOrders()}
  5285 + onClose={() => {
  5286 + setReissueVisibleOld(false);
  5287 + clearOptObject();
  5288 + refreshTable();
  5289 + }}
  5290 + />
  5291 + )}
  5292 + {productionTimeModalVisible && (
  5293 + <ProductionTimeModal
  5294 + setVisible={(val: boolean) => {
  5295 + setProductionTimeModalVisible(val);
  5296 + if (!val) {
5782 5297 clearOptObject();
5783   - refreshTable();
5784   - }}
5785   - />
5786   - )
5787   - }
  5298 + }
  5299 + }}
  5300 + subOrders={buildSubOrders()}
  5301 + onClose={() => {
  5302 + setProductionTimeModalVisible(false);
  5303 + clearOptObject();
  5304 + refreshTable();
  5305 + }}
  5306 + />
  5307 + )}
5788 5308  
5789   - {
5790   - modifiedDiffModalVisible && (
5791   - <ModifiedDiffModal
5792   - setVisible={(val: boolean) => {
5793   - setModifiedDiffModalVisible(val);
5794   - if (!val) {
5795   - clearOptObject();
5796   - }
5797   - }}
5798   - subOrders={buildSubOrders()}
5799   - mainOrder={buildMainOrder()}
5800   - onClose={() => {
5801   - setModifiedDiffModalVisible(false);
  5309 + {modifiedDiffModalVisible && (
  5310 + <ModifiedDiffModal
  5311 + setVisible={(val: boolean) => {
  5312 + setModifiedDiffModalVisible(val);
  5313 + if (!val) {
5802 5314 clearOptObject();
5803   - }}
5804   - />
5805   - )
5806   - }
  5315 + }
  5316 + }}
  5317 + subOrders={buildSubOrders()}
  5318 + mainOrder={buildMainOrder()}
  5319 + onClose={() => {
  5320 + setModifiedDiffModalVisible(false);
  5321 + clearOptObject();
  5322 + }}
  5323 + />
  5324 + )}
5807 5325  
5808   - {
5809   - uploadPayBillModalVisible && (
5810   - <UploadPayBillModal
5811   - setVisible={(val: boolean) => {
5812   - setUploadPayBillModalVisible(val);
5813   - if (!val) {
5814   - clearOptObject();
5815   - }
5816   - }}
5817   - subOrders={buildSubOrders()}
5818   - mainOrder={buildMainOrder()}
5819   - onClose={() => {
5820   - setUploadPayBillModalVisible(false);
  5326 + {uploadPayBillModalVisible && (
  5327 + <UploadPayBillModal
  5328 + setVisible={(val: boolean) => {
  5329 + setUploadPayBillModalVisible(val);
  5330 + if (!val) {
5821 5331 clearOptObject();
5822   - refreshTable();
5823   - }}
5824   - />
5825   - )
5826   - }
5827   - {
5828   - invoicingDrawerFormVisible && (
5829   - <InvoicingDrawerForm
5830   - dataList={
5831   - isMainOrder
5832   - ? [...subOrderSelectedMap.values()].flat()
5833   - : buildSubOrders()
5834 5332 }
5835   - setVisible={(val: boolean) => {
5836   - setInvoicingDrawerFormVisible(val);
5837   - if (!val) {
5838   - clearOptObject();
5839   - }
5840   - }}
5841   - mainOrder={isMainOrder ? getFirstMainOrder() : buildMainOrder()}
5842   - onClose={() => {
5843   - setInvoicingDrawerFormVisible(false);
5844   - setIsMainOrder(true);
  5333 + }}
  5334 + subOrders={buildSubOrders()}
  5335 + mainOrder={buildMainOrder()}
  5336 + onClose={() => {
  5337 + setUploadPayBillModalVisible(false);
  5338 + clearOptObject();
  5339 + refreshTable();
  5340 + }}
  5341 + />
  5342 + )}
  5343 + {invoicingDrawerFormVisible && (
  5344 + <InvoicingDrawerForm
  5345 + dataList={
  5346 + isMainOrder
  5347 + ? [...subOrderSelectedMap.values()].flat()
  5348 + : buildSubOrders()
  5349 + }
  5350 + setVisible={(val: boolean) => {
  5351 + setInvoicingDrawerFormVisible(val);
  5352 + if (!val) {
5845 5353 clearOptObject();
5846   - refreshTable();
5847   - }}
5848   - />
5849   - )
5850   - }
  5354 + }
  5355 + }}
  5356 + mainOrder={isMainOrder ? getFirstMainOrder() : buildMainOrder()}
  5357 + onClose={() => {
  5358 + setInvoicingDrawerFormVisible(false);
  5359 + setIsMainOrder(true);
  5360 + clearOptObject();
  5361 + refreshTable();
  5362 + }}
  5363 + />
  5364 + )}
5851 5365 {contextHolder}
5852 5366 <FloatButton.BackTop visibilityHeight={0} />
5853   - </div >
5854   - )
5855   - }
5856   - ]
  5367 + </div>
  5368 + ),
  5369 + },
  5370 + ];
5857 5371 const [open, setOpen] = useState(true);
5858 5372 //隐藏弹窗
5859 5373 const hideModal = () => {
... ... @@ -5868,9 +5382,9 @@ const OrderPage = () =&gt; {
5868 5382 width={800}
5869 5383 closable={false}
5870 5384 footer={[
5871   - <Button key="confirm" size='large' type="primary" onClick={hideModal}>
  5385 + <Button key="confirm" size="large" type="primary" onClick={hideModal}>
5872 5386 去处理
5873   - </Button>
  5387 + </Button>,
5874 5388 ]}
5875 5389 >
5876 5390 <Row
... ... @@ -5879,76 +5393,102 @@ const OrderPage = () =&gt; {
5879 5393 align="middle" // Vertically center contents
5880 5394 >
5881 5395 <Col span={12}>
5882   - <div style={{ display: 'flex', justifyContent: 'center', marginTop: '20px' }}>
  5396 + <div
  5397 + style={{
  5398 + display: 'flex',
  5399 + justifyContent: 'center',
  5400 + marginTop: '20px',
  5401 + }}
  5402 + >
5883 5403 <Card
5884 5404 bordered={true}
5885 5405 style={{
5886 5406 backgroundColor: '#f0f0f0', // 背景颜色
5887   - width: '200px', // 卡片宽度
5888   - height: '200px', // 卡片高度
  5407 + width: '200px', // 卡片宽度
  5408 + height: '200px', // 卡片高度
5889 5409 display: 'flex',
5890 5410 alignItems: 'center',
5891   - justifyContent: 'center'
  5411 + justifyContent: 'center',
5892 5412 }}
5893 5413 >
5894   - <div style={{
5895   - fontWeight: 'bold', // 字体加粗
5896   - color: 'black', // 字体颜色
5897   - fontSize: '20px', // 字体大小
5898   - }}>
5899   - <div style={{
5900   - fontWeight: 'bold', // 字体加粗
5901   - color: 'black', // 字体颜色
5902   - fontSize: '40px', // 字体大小
5903   - justifyContent: 'center',
5904   - display: 'flex',
5905   - alignItems: 'center',
5906   - marginBottom: '20px',
5907   - }}>
  5414 + <div
  5415 + style={{
  5416 + fontWeight: 'bold', // 字体加粗
  5417 + color: 'black', // 字体颜色
  5418 + fontSize: '20px', // 字体大小
  5419 + }}
  5420 + >
  5421 + <div
  5422 + style={{
  5423 + fontWeight: 'bold', // 字体加粗
  5424 + color: 'black', // 字体颜色
  5425 + fontSize: '40px', // 字体大小
  5426 + justifyContent: 'center',
  5427 + display: 'flex',
  5428 + alignItems: 'center',
  5429 + marginBottom: '20px',
  5430 + }}
  5431 + >
5908 5432 {invoiceWarningNum}
5909 5433 </div>
5910 5434 发票待确认订单
5911 5435 </div>
5912 5436 </Card>
5913   - </div></Col>
  5437 + </div>
  5438 + </Col>
5914 5439 <Col span={12}>
5915   - <div style={{ display: 'flex', justifyContent: 'center', marginTop: '20px' }}>
  5440 + <div
  5441 + style={{
  5442 + display: 'flex',
  5443 + justifyContent: 'center',
  5444 + marginTop: '20px',
  5445 + }}
  5446 + >
5916 5447 <Card
5917 5448 bordered={true}
5918 5449 style={{
5919 5450 backgroundColor: '#f0f0f0', // 背景颜色
5920   - width: '200px', // 卡片宽度
5921   - height: '200px', // 卡片高度
  5451 + width: '200px', // 卡片宽度
  5452 + height: '200px', // 卡片高度
5922 5453 display: 'flex',
5923 5454 alignItems: 'center',
5924   - justifyContent: 'center'
  5455 + justifyContent: 'center',
5925 5456 }}
5926 5457 >
5927   - <div style={{
5928   - fontWeight: 'bold', // 字体加粗
5929   - color: 'black', // 字体颜色
5930   - fontSize: '20px', // 字体大小
5931   - }}>
5932   - <div style={{
5933   - fontWeight: 'bold', // 字体加粗
5934   - color: 'black', // 字体颜色
5935   - fontSize: '40px', // 字体大小
5936   - justifyContent: 'center',
5937   - display: 'flex',
5938   - alignItems: 'center',
5939   - marginBottom: '20px',
5940   - }}>
  5458 + <div
  5459 + style={{
  5460 + fontWeight: 'bold', // 字体加粗
  5461 + color: 'black', // 字体颜色
  5462 + fontSize: '20px', // 字体大小
  5463 + }}
  5464 + >
  5465 + <div
  5466 + style={{
  5467 + fontWeight: 'bold', // 字体加粗
  5468 + color: 'black', // 字体颜色
  5469 + fontSize: '40px', // 字体大小
  5470 + justifyContent: 'center',
  5471 + display: 'flex',
  5472 + alignItems: 'center',
  5473 + marginBottom: '20px',
  5474 + }}
  5475 + >
5941 5476 {invoiceRefundWarningNum}
5942 5477 </div>
5943 5478 回款待确认订单
5944 5479 </div>
5945 5480 </Card>
5946   - </div></Col>
  5481 + </div>
  5482 + </Col>
5947 5483 </Row>
5948 5484 <div style={{ color: 'red', padding: '40px' }}>
5949 5485 <p>预警说明:</p>
5950   - <p>1、从订单确认收货之日起,超过5天未和客户确认发票(不开票的订单除外)的订单将会进行第一次提醒;超过15天未和客户确认发票(不开票的订单除外)的订单将会每天进行一次提醒,并限制下单功能</p>
5951   - <p>2、从发票确认之日起,超过15天未确认回款的订单将会进行第一次提醒,超过25天未确认回款的订单将会每天进行一次提醒,并限制下单功能</p>
  5486 + <p>
  5487 + 1、从订单确认收货之日起,超过5天未和客户确认发票(不开票的订单除外)的订单将会进行第一次提醒;超过15天未和客户确认发票(不开票的订单除外)的订单将会每天进行一次提醒,并限制下单功能
  5488 + </p>
  5489 + <p>
  5490 + 2、从发票确认之日起,超过15天未确认回款的订单将会进行第一次提醒,超过25天未确认回款的订单将会每天进行一次提醒,并限制下单功能
  5491 + </p>
5952 5492 </div>
5953 5493 </Modal>
5954 5494 <Tabs
... ...
src/pages/Order/constant.ts
... ... @@ -124,6 +124,9 @@ export const getNeedInvoicing = (subOrder: any) =&gt; {
124 124 if (subOrder.invoicingTime !== null && subOrder.invoicingTime !== undefined) {
125 125 return '已开票';
126 126 }
  127 + if (subOrder.afterInvoicingStatus === 'COMPLETE_INVOICING') {
  128 + return '已开票';
  129 + }
127 130 if (subOrder.afterInvoicingStatus === 'REISSUE') {
128 131 return '重新开票';
129 132 }
... ...
src/pages/ResearchGroup/index.tsx
... ... @@ -461,7 +461,7 @@ const PrepaidPage = () =&gt; {
461 461 if (record.permissions?.includes('audit')) {
462 462 btns.push(
463 463 <Button
464   - key="delete"
  464 + key="audit"
465 465 className="p-0"
466 466 type="link"
467 467 onClick={async () => {
... ... @@ -565,11 +565,17 @@ const PrepaidPage = () =&gt; {
565 565 // 注释该行则默认不显示下拉选项
566 566 selections: [Table.SELECTION_ALL, Table.SELECTION_INVERT],
567 567 defaultSelectedRowKeys: [],
  568 + alwaysShowAlert: true,
568 569 }}
569 570 tableAlertOptionRender={({ selectedRows, onCleanSelected }) => {
570 571 let ids = selectedRows.map((item: any) => {
571 572 return item.id;
572 573 });
  574 + let canAudit =
  575 + selectedRows.length > 0 &&
  576 + selectedRows.every((item) => {
  577 + return item.paths?.includes('ADD_AUDIT');
  578 + });
573 579 return (
574 580 <Space size={16}>
575 581 <ButtonConfirm
... ... @@ -584,6 +590,21 @@ const PrepaidPage = () =&gt; {
584 590 <Button type="link" onClick={onCleanSelected}>
585 591 取消选中
586 592 </Button>
  593 +
  594 + {
  595 + <Button
  596 + key="audit"
  597 + type="link"
  598 + disabled={!canAudit}
  599 + onClick={async () => {
  600 + setAuditIds(ids);
  601 + setAuditModalVisible(true);
  602 + setAuditType('research_groups_add_audit');
  603 + }}
  604 + >
  605 + 审核
  606 + </Button>
  607 + }
587 608 </Space>
588 609 );
589 610 }}
... ... @@ -655,11 +676,17 @@ const PrepaidPage = () =&gt; {
655 676 // 注释该行则默认不显示下拉选项
656 677 selections: [Table.SELECTION_ALL, Table.SELECTION_INVERT],
657 678 defaultSelectedRowKeys: [],
  679 + alwaysShowAlert: true,
658 680 }}
659 681 tableAlertOptionRender={({ selectedRows, onCleanSelected }) => {
660 682 let ids = selectedRows.map((item: any) => {
661 683 return item.id;
662 684 });
  685 + let canAudit =
  686 + selectedRows.length > 0 &&
  687 + selectedRows.every((item) => {
  688 + return item.permissions?.includes('audit');
  689 + });
663 690 return (
664 691 <Space size={16}>
665 692 <ButtonConfirm
... ... @@ -674,8 +701,10 @@ const PrepaidPage = () =&gt; {
674 701 key="delete"
675 702 className="p-0"
676 703 type="link"
  704 + disabled={!canAudit}
677 705 onClick={async () => {
678 706 setAuditIds(ids);
  707 + setAuditType('research_group_member_request_audit');
679 708 setAuditModalVisible(true);
680 709 }}
681 710 >
... ...
src/services/definition.ts
... ... @@ -1044,6 +1044,10 @@ export interface CancelInvoiceAndBankStatementDto {
1044 1044 invoiceId?: number;
1045 1045 }
1046 1046  
  1047 +export interface CancelInvoiceRecordDto {
  1048 + invoiceRecordIds?: Array<number>;
  1049 +}
  1050 +
1047 1051 export interface CancelSendOrderDto {
1048 1052 subIds?: Array<number>;
1049 1053 }
... ... @@ -1382,32 +1386,6 @@ export interface Entry {
1382 1386 unEmpInsuranceC?: string;
1383 1387 }
1384 1388  
1385   -export interface File {
1386   - absolute?: boolean;
1387   - absoluteFile?: File;
1388   - absolutePath?: string;
1389   - canonicalFile?: File;
1390   - canonicalPath?: string;
1391   - directory?: boolean;
1392   - executable?: boolean;
1393   - file?: boolean;
1394   - /** @format int64 */
1395   - freeSpace?: number;
1396   - hidden?: boolean;
1397   - /** @format int64 */
1398   - lastModified?: number;
1399   - name?: string;
1400   - parent?: string;
1401   - parentFile?: File;
1402   - path?: string;
1403   - readable?: boolean;
1404   - /** @format int64 */
1405   - totalSpace?: number;
1406   - /** @format int64 */
1407   - usableSpace?: number;
1408   - writable?: boolean;
1409   -}
1410   -
1411 1389 export interface FilePathDto {
1412 1390 url?: string;
1413 1391 }
... ... @@ -1498,6 +1476,11 @@ export interface InvoiceDto {
1498 1476 notes?: string;
1499 1477 /**
1500 1478 * @description
  1479 + * 订单类型
  1480 + */
  1481 + orderTypeText?: string;
  1482 + /**
  1483 + * @description
1501 1484 * 权限路径
1502 1485 */
1503 1486 path?: Array<string>;
... ... @@ -1507,7 +1490,6 @@ export interface InvoiceDto {
1507 1490 * 收款单位
1508 1491 */
1509 1492 payee?: string;
1510   - payeeText?: string;
1511 1493 /**
1512 1494 * @description
1513 1495 * 收款单位
... ... @@ -1525,6 +1507,11 @@ export interface InvoiceDto {
1525 1507 sale?: string;
1526 1508 /**
1527 1509 * @description
  1510 + * 绑定流水号
  1511 + */
  1512 + serialNumbersTextByOrder?: string;
  1513 + /**
  1514 + * @description
1528 1515 * 状态
1529 1516 */
1530 1517 status?: string;
... ... @@ -2785,13 +2772,13 @@ export interface QueryBankStatementDto {
2785 2772 /**
2786 2773 * @description
2787 2774 * collection_date
2788   - * @format date
  2775 + * @format date-time
2789 2776 */
2790 2777 collectionDatetimeBegin?: string;
2791 2778 /**
2792 2779 * @description
2793 2780 * collection_date
2794   - * @format date
  2781 + * @format date-time
2795 2782 */
2796 2783 collectionDatetimeEnd?: string;
2797 2784 createByName?: string;
... ... @@ -3638,7 +3625,7 @@ export interface ResetPwdVO {
3638 3625  
3639 3626 export interface Resource {
3640 3627 description?: string;
3641   - file?: File;
  3628 + file?: TsgFile;
3642 3629 filename?: string;
3643 3630 inputStream?: InputStream;
3644 3631 open?: boolean;
... ... @@ -4181,6 +4168,32 @@ export interface CompanyInfo {
4181 4168 taxIdIsNotNull?: boolean;
4182 4169 }
4183 4170  
  4171 +export interface TsgFile {
  4172 + absolute?: boolean;
  4173 + absoluteFile?: TsgFile;
  4174 + absolutePath?: string;
  4175 + canonicalFile?: TsgFile;
  4176 + canonicalPath?: string;
  4177 + directory?: boolean;
  4178 + executable?: boolean;
  4179 + file?: boolean;
  4180 + /** @format int64 */
  4181 + freeSpace?: number;
  4182 + hidden?: boolean;
  4183 + /** @format int64 */
  4184 + lastModified?: number;
  4185 + name?: string;
  4186 + parent?: string;
  4187 + parentFile?: TsgFile;
  4188 + path?: string;
  4189 + readable?: boolean;
  4190 + /** @format int64 */
  4191 + totalSpace?: number;
  4192 + /** @format int64 */
  4193 + usableSpace?: number;
  4194 + writable?: boolean;
  4195 +}
  4196 +
4184 4197 export interface InvoiceDetail {
4185 4198 createByName?: string;
4186 4199 /** @format date-time */
... ...
src/services/request.ts
... ... @@ -35,6 +35,7 @@ import type {
35 35 AuditDto,
36 36 AuditVO,
37 37 CancelInvoiceAndBankStatementDto,
  38 + CancelInvoiceRecordDto,
38 39 CancelSendOrderDto,
39 40 CaptchaMessageVO,
40 41 ClientCommunicationInfo,
... ... @@ -63,7 +64,6 @@ import type {
63 64 MaterialUnitListRes,
64 65 MeasureUnitListRes,
65 66 MessageQueryDTO,
66   - ModelAndView,
67 67 OrderAddVO,
68 68 OrderAuditLogQueryVO,
69 69 OrderBaseInfoQueryVO,
... ... @@ -3237,7 +3237,9 @@ export interface GetErrorResponse {
3237 3237 * @description
3238 3238 * OK
3239 3239 */
3240   - 200: ModelAndView;
  3240 + 200: {
  3241 + [propertyName: string]: any;
  3242 + };
3241 3243 /**
3242 3244 * @description
3243 3245 * Unauthorized
... ... @@ -3258,9 +3260,9 @@ export interface GetErrorResponse {
3258 3260 export type GetErrorResponseSuccess = GetErrorResponse[200];
3259 3261 /**
3260 3262 * @description
3261   - * errorHtml
  3263 + * error
3262 3264 * @tags basic-error-controller
3263   - * @produces text/html
  3265 + * @produces *
3264 3266 */
3265 3267 export const getError = /* #__PURE__ */ (() => {
3266 3268 const method = 'get';
... ... @@ -3284,7 +3286,9 @@ export interface PutErrorResponse {
3284 3286 * @description
3285 3287 * OK
3286 3288 */
3287   - 200: ModelAndView;
  3289 + 200: {
  3290 + [propertyName: string]: any;
  3291 + };
3288 3292 /**
3289 3293 * @description
3290 3294 * Created
... ... @@ -3310,9 +3314,9 @@ export interface PutErrorResponse {
3310 3314 export type PutErrorResponseSuccess = PutErrorResponse[200];
3311 3315 /**
3312 3316 * @description
3313   - * errorHtml
  3317 + * error
3314 3318 * @tags basic-error-controller
3315   - * @produces text/html
  3319 + * @produces *
3316 3320 * @consumes application/json
3317 3321 */
3318 3322 export const putError = /* #__PURE__ */ (() => {
... ... @@ -3337,7 +3341,9 @@ export interface PostErrorResponse {
3337 3341 * @description
3338 3342 * OK
3339 3343 */
3340   - 200: ModelAndView;
  3344 + 200: {
  3345 + [propertyName: string]: any;
  3346 + };
3341 3347 /**
3342 3348 * @description
3343 3349 * Created
... ... @@ -3363,9 +3369,9 @@ export interface PostErrorResponse {
3363 3369 export type PostErrorResponseSuccess = PostErrorResponse[200];
3364 3370 /**
3365 3371 * @description
3366   - * errorHtml
  3372 + * error
3367 3373 * @tags basic-error-controller
3368   - * @produces text/html
  3374 + * @produces *
3369 3375 * @consumes application/json
3370 3376 */
3371 3377 export const postError = /* #__PURE__ */ (() => {
... ... @@ -3390,7 +3396,9 @@ export interface DeleteErrorResponse {
3390 3396 * @description
3391 3397 * OK
3392 3398 */
3393   - 200: ModelAndView;
  3399 + 200: {
  3400 + [propertyName: string]: any;
  3401 + };
3394 3402 /**
3395 3403 * @description
3396 3404 * No Content
... ... @@ -3411,9 +3419,9 @@ export interface DeleteErrorResponse {
3411 3419 export type DeleteErrorResponseSuccess = DeleteErrorResponse[200];
3412 3420 /**
3413 3421 * @description
3414   - * errorHtml
  3422 + * error
3415 3423 * @tags basic-error-controller
3416   - * @produces text/html
  3424 + * @produces *
3417 3425 */
3418 3426 export const deleteError = /* #__PURE__ */ (() => {
3419 3427 const method = 'delete';
... ... @@ -3437,7 +3445,9 @@ export interface OptionsErrorResponse {
3437 3445 * @description
3438 3446 * OK
3439 3447 */
3440   - 200: ModelAndView;
  3448 + 200: {
  3449 + [propertyName: string]: any;
  3450 + };
3441 3451 /**
3442 3452 * @description
3443 3453 * No Content
... ... @@ -3458,9 +3468,9 @@ export interface OptionsErrorResponse {
3458 3468 export type OptionsErrorResponseSuccess = OptionsErrorResponse[200];
3459 3469 /**
3460 3470 * @description
3461   - * errorHtml
  3471 + * error
3462 3472 * @tags basic-error-controller
3463   - * @produces text/html
  3473 + * @produces *
3464 3474 * @consumes application/json
3465 3475 */
3466 3476 export const optionsError = /* #__PURE__ */ (() => {
... ... @@ -3485,7 +3495,9 @@ export interface HeadErrorResponse {
3485 3495 * @description
3486 3496 * OK
3487 3497 */
3488   - 200: ModelAndView;
  3498 + 200: {
  3499 + [propertyName: string]: any;
  3500 + };
3489 3501 /**
3490 3502 * @description
3491 3503 * No Content
... ... @@ -3506,9 +3518,9 @@ export interface HeadErrorResponse {
3506 3518 export type HeadErrorResponseSuccess = HeadErrorResponse[200];
3507 3519 /**
3508 3520 * @description
3509   - * errorHtml
  3521 + * error
3510 3522 * @tags basic-error-controller
3511   - * @produces text/html
  3523 + * @produces *
3512 3524 * @consumes application/json
3513 3525 */
3514 3526 export const headError = /* #__PURE__ */ (() => {
... ... @@ -3533,7 +3545,9 @@ export interface PatchErrorResponse {
3533 3545 * @description
3534 3546 * OK
3535 3547 */
3536   - 200: ModelAndView;
  3548 + 200: {
  3549 + [propertyName: string]: any;
  3550 + };
3537 3551 /**
3538 3552 * @description
3539 3553 * No Content
... ... @@ -3554,9 +3568,9 @@ export interface PatchErrorResponse {
3554 3568 export type PatchErrorResponseSuccess = PatchErrorResponse[200];
3555 3569 /**
3556 3570 * @description
3557   - * errorHtml
  3571 + * error
3558 3572 * @tags basic-error-controller
3559   - * @produces text/html
  3573 + * @produces *
3560 3574 * @consumes application/json
3561 3575 */
3562 3576 export const patchError = /* #__PURE__ */ (() => {
... ... @@ -14094,6 +14108,77 @@ export const postServiceInvoiceCancelInvoiceAndBankStatement =
14094 14108 return request;
14095 14109 })();
14096 14110  
  14111 +/** @description request parameter type for postServiceInvoiceCancelInvoiceRecord */
  14112 +export interface PostServiceInvoiceCancelInvoiceRecordOption {
  14113 + /**
  14114 + * @description
  14115 + * cancelInvoiceRecordDto
  14116 + */
  14117 + body: {
  14118 + /**
  14119 + @description
  14120 + cancelInvoiceRecordDto */
  14121 + cancelInvoiceRecordDto: CancelInvoiceRecordDto;
  14122 + };
  14123 +}
  14124 +
  14125 +/** @description response type for postServiceInvoiceCancelInvoiceRecord */
  14126 +export interface PostServiceInvoiceCancelInvoiceRecordResponse {
  14127 + /**
  14128 + * @description
  14129 + * OK
  14130 + */
  14131 + 200: ServerResult;
  14132 + /**
  14133 + * @description
  14134 + * Created
  14135 + */
  14136 + 201: any;
  14137 + /**
  14138 + * @description
  14139 + * Unauthorized
  14140 + */
  14141 + 401: any;
  14142 + /**
  14143 + * @description
  14144 + * Forbidden
  14145 + */
  14146 + 403: any;
  14147 + /**
  14148 + * @description
  14149 + * Not Found
  14150 + */
  14151 + 404: any;
  14152 +}
  14153 +
  14154 +export type PostServiceInvoiceCancelInvoiceRecordResponseSuccess =
  14155 + PostServiceInvoiceCancelInvoiceRecordResponse[200];
  14156 +/**
  14157 + * @description
  14158 + * 取消开票记录
  14159 + * @tags 发票
  14160 + * @produces *
  14161 + * @consumes application/json
  14162 + */
  14163 +export const postServiceInvoiceCancelInvoiceRecord = /* #__PURE__ */ (() => {
  14164 + const method = 'post';
  14165 + const url = '/service/invoice/cancelInvoiceRecord';
  14166 + function request(
  14167 + option: PostServiceInvoiceCancelInvoiceRecordOption,
  14168 + ): Promise<PostServiceInvoiceCancelInvoiceRecordResponseSuccess> {
  14169 + return requester(request.url, {
  14170 + method: request.method,
  14171 + ...option,
  14172 + }) as unknown as Promise<PostServiceInvoiceCancelInvoiceRecordResponseSuccess>;
  14173 + }
  14174 +
  14175 + /** http method */
  14176 + request.method = method;
  14177 + /** request url */
  14178 + request.url = url;
  14179 + return request;
  14180 +})();
  14181 +
14097 14182 /** @description request parameter type for postServiceInvoiceDealInvoicingResult */
14098 14183 export interface PostServiceInvoiceDealInvoicingResultOption {
14099 14184 /**
... ... @@ -14309,6 +14394,77 @@ export const postServiceInvoiceDownloadInvoice = /* #__PURE__ */ (() =&gt; {
14309 14394 return request;
14310 14395 })();
14311 14396  
  14397 +/** @description request parameter type for postServiceInvoiceExportBankStatements */
  14398 +export interface PostServiceInvoiceExportBankStatementsOption {
  14399 + /**
  14400 + * @description
  14401 + * dto
  14402 + */
  14403 + body: {
  14404 + /**
  14405 + @description
  14406 + dto */
  14407 + dto: QueryBankStatementDto;
  14408 + };
  14409 +}
  14410 +
  14411 +/** @description response type for postServiceInvoiceExportBankStatements */
  14412 +export interface PostServiceInvoiceExportBankStatementsResponse {
  14413 + /**
  14414 + * @description
  14415 + * OK
  14416 + */
  14417 + 200: any;
  14418 + /**
  14419 + * @description
  14420 + * Created
  14421 + */
  14422 + 201: any;
  14423 + /**
  14424 + * @description
  14425 + * Unauthorized
  14426 + */
  14427 + 401: any;
  14428 + /**
  14429 + * @description
  14430 + * Forbidden
  14431 + */
  14432 + 403: any;
  14433 + /**
  14434 + * @description
  14435 + * Not Found
  14436 + */
  14437 + 404: any;
  14438 +}
  14439 +
  14440 +export type PostServiceInvoiceExportBankStatementsResponseSuccess =
  14441 + PostServiceInvoiceExportBankStatementsResponse[200];
  14442 +/**
  14443 + * @description
  14444 + * 导出银行流水
  14445 + * @tags 发票
  14446 + * @produces *
  14447 + * @consumes application/json
  14448 + */
  14449 +export const postServiceInvoiceExportBankStatements = /* #__PURE__ */ (() => {
  14450 + const method = 'post';
  14451 + const url = '/service/invoice/exportBankStatements';
  14452 + function request(
  14453 + option: PostServiceInvoiceExportBankStatementsOption,
  14454 + ): Promise<PostServiceInvoiceExportBankStatementsResponseSuccess> {
  14455 + return requester(request.url, {
  14456 + method: request.method,
  14457 + ...option,
  14458 + }) as unknown as Promise<PostServiceInvoiceExportBankStatementsResponseSuccess>;
  14459 + }
  14460 +
  14461 + /** http method */
  14462 + request.method = method;
  14463 + /** request url */
  14464 + request.url = url;
  14465 + return request;
  14466 +})();
  14467 +
14312 14468 /** @description response type for getServiceInvoiceExportInvoiceDetailsTemplate */
14313 14469 export interface GetServiceInvoiceExportInvoiceDetailsTemplateResponse {
14314 14470 /**
... ... @@ -15134,6 +15290,77 @@ export const postServiceInvoiceInvoicing = /* #__PURE__ */ (() =&gt; {
15134 15290 return request;
15135 15291 })();
15136 15292  
  15293 +/** @description request parameter type for postServiceInvoiceModify */
  15294 +export interface PostServiceInvoiceModifyOption {
  15295 + /**
  15296 + * @description
  15297 + * dto
  15298 + */
  15299 + body: {
  15300 + /**
  15301 + @description
  15302 + dto */
  15303 + dto: InvoiceDto;
  15304 + };
  15305 +}
  15306 +
  15307 +/** @description response type for postServiceInvoiceModify */
  15308 +export interface PostServiceInvoiceModifyResponse {
  15309 + /**
  15310 + * @description
  15311 + * OK
  15312 + */
  15313 + 200: ServerResult;
  15314 + /**
  15315 + * @description
  15316 + * Created
  15317 + */
  15318 + 201: any;
  15319 + /**
  15320 + * @description
  15321 + * Unauthorized
  15322 + */
  15323 + 401: any;
  15324 + /**
  15325 + * @description
  15326 + * Forbidden
  15327 + */
  15328 + 403: any;
  15329 + /**
  15330 + * @description
  15331 + * Not Found
  15332 + */
  15333 + 404: any;
  15334 +}
  15335 +
  15336 +export type PostServiceInvoiceModifyResponseSuccess =
  15337 + PostServiceInvoiceModifyResponse[200];
  15338 +/**
  15339 + * @description
  15340 + * 修改发票
  15341 + * @tags 发票
  15342 + * @produces *
  15343 + * @consumes application/json
  15344 + */
  15345 +export const postServiceInvoiceModify = /* #__PURE__ */ (() => {
  15346 + const method = 'post';
  15347 + const url = '/service/invoice/modify';
  15348 + function request(
  15349 + option: PostServiceInvoiceModifyOption,
  15350 + ): Promise<PostServiceInvoiceModifyResponseSuccess> {
  15351 + return requester(request.url, {
  15352 + method: request.method,
  15353 + ...option,
  15354 + }) as unknown as Promise<PostServiceInvoiceModifyResponseSuccess>;
  15355 + }
  15356 +
  15357 + /** http method */
  15358 + request.method = method;
  15359 + /** request url */
  15360 + request.url = url;
  15361 + return request;
  15362 +})();
  15363 +
15137 15364 /** @description request parameter type for postServiceInvoiceModifyRecord */
15138 15365 export interface PostServiceInvoiceModifyRecordOption {
15139 15366 /**
... ...