Commit ea6f0208f9a4d939abba3cd893a23f44b1846966

Authored by 曾国涛
1 parent c5ccb53f

feat(invoice): optimize invoice components and enhance user experience

- 重构Client页面表格组件,文件重命名为AllRecordTable.tsx,优化表格项显示
- 修改发票类型显示名称,增加文本复制功能,提升用户交互体验
- 移除部分不必要组件和代码,简化页面结构,提高代码可维护性- 修正InvoiceModal组件中submitter属性,改进页面提交逻辑- 优化InvoiceRecordDetailModal组件,简化订单号显示方式,增加复制功能
- 调整InvoicingModal和ManualInvoicingModal组件,移除冗余的select和list组件
-增加pageSizeOptions配置,提供分页大小选择,改善数据浏览体验
- 修复Invoice组件中开票日期显示格式问题,统一数据展示样式
- 优化Order组件中的按钮权限判断逻辑,提升页面响应性
- 删除不再使用的enumToSelect函数,精简代码依赖
- 修正InvoicingDrawerForm组件中产品名称复制功能的实现
- 优化表单验证逻辑,增强数据校验的准确性和用户体验

通过这些改动,- 实现导出客户信息为Excel文件的功能。
- 使用useMessage钩子来管理Ant Design消息提示。
- 添加单元格操作按钮,包括查看沟通历史、详情和编辑客户信息。
- 组件使用了editable、columnsState和form等高级特性,以提供更好的用户体验和数据管理。

通过这个提交,我们完成了客户记录的表格展示页面,实现了数据的查询、筛选、导出及一些基本操作,提升了项目的业务功能完备性。"增加客户统计信息和调整客户端表格布局"
.umirc.ts
@@ -58,6 +58,20 @@ export default defineConfig({ @@ -58,6 +58,20 @@ export default defineConfig({
58 icon: 'BookOutlined', 58 icon: 'BookOutlined',
59 access: 'canReadAdminAndFinance', 59 access: 'canReadAdminAndFinance',
60 }, 60 },
  61 + /*{
  62 + name: '发票管理',
  63 + path: '/Invoice',
  64 + icon: 'BookOutlined',
  65 + access: 'canReadAdminAndFinance',
  66 + routes:[
  67 + {
  68 + name: '权限管理',
  69 + path: 'authrity',
  70 + icon: 'BookOutlined',
  71 + component: './Invoice/InvoiceRecord' },
  72 + ]
  73 + },*/
  74 +
61 { 75 {
62 name: '预存管理', 76 name: '预存管理',
63 path: '/prepaidManage', 77 path: '/prepaidManage',
@@ -91,7 +105,7 @@ export default defineConfig({ @@ -91,7 +105,7 @@ export default defineConfig({
91 path: '/client', 105 path: '/client',
92 component: './Client', 106 component: './Client',
93 icon: 'BookOutlined', 107 icon: 'BookOutlined',
94 - access: 'canReadAdmin', 108 + access: 'canReadAdminAndSales',
95 }, 109 },
96 { 110 {
97 name: '打印', 111 name: '打印',
src/pages/Client/Components/ClientStatistic.tsx 0 → 100644
  1 +import { postAdminClientGetStatisticalData } from '@/services';
  2 +import { StatisticCard } from '@ant-design/pro-components';
  3 +import { useEffect, useState } from 'react';
  4 +
  5 +export default () => {
  6 + const [clientStatistic, setClientStatistic] = useState([]);
  7 + useEffect(() => {
  8 + const pullStatistic = async () => {
  9 + let statisticalData = await postAdminClientGetStatisticalData();
  10 + console.log('stati' + JSON.stringify(statisticalData.data));
  11 + setClientStatistic(statisticalData.data);
  12 + };
  13 + pullStatistic();
  14 + }, []);
  15 + return (
  16 + <StatisticCard.Group>
  17 + {clientStatistic.map((stat, index) => (
  18 + <StatisticCard
  19 + key={index}
  20 + statistic={{
  21 + title: stat.title,
  22 + tip: stat.tip || '', // 如果tip不存在,则使用空字符串
  23 + value: stat.value,
  24 + status: stat.status || 'default', // 如果status不存在,则使用'default'
  25 + }}
  26 + />
  27 + ))}
  28 + </StatisticCard.Group>
  29 + );
  30 +};
src/pages/Client/index.tsx
1 import ClientDrawer from '@/pages/Client/Components/ClientDrawer'; 1 import ClientDrawer from '@/pages/Client/Components/ClientDrawer';
2 import ClientImportModal from '@/pages/Client/Components/ClientImportModal'; 2 import ClientImportModal from '@/pages/Client/Components/ClientImportModal';
  3 +import ClientStatistic from '@/pages/Client/Components/ClientStatistic';
3 import CommunicationHistoryModal from '@/pages/Client/Components/CommunicationHistoryModal'; 4 import CommunicationHistoryModal from '@/pages/Client/Components/CommunicationHistoryModal';
4 import { 5 import {
5 postAdminClientQueryClientPage, 6 postAdminClientQueryClientPage,
  7 + postServiceConstClientGroupFilters,
6 postServiceConstClientLevels, 8 postServiceConstClientLevels,
7 postServiceConstTradeStatus, 9 postServiceConstTradeStatus,
8 } from '@/services'; 10 } from '@/services';
@@ -10,42 +12,48 @@ import { orderExport } from &#39;@/services/order&#39;; @@ -10,42 +12,48 @@ import { orderExport } from &#39;@/services/order&#39;;
10 import { enumToSelect } from '@/utils'; 12 import { enumToSelect } from '@/utils';
11 import type { ActionType } from '@ant-design/pro-components'; 13 import type { ActionType } from '@ant-design/pro-components';
12 import { ProTable } from '@ant-design/pro-components'; 14 import { ProTable } from '@ant-design/pro-components';
13 -import { Button, message } from 'antd';  
14 -import { useRef } from 'react'; 15 +import { Button, Radio, Space, message } from 'antd';
  16 +import { useEffect, useRef, useState } from 'react';
15 17
16 const columns = [ 18 const columns = [
17 { 19 {
18 dataIndex: 'index', 20 dataIndex: 'index',
19 valueType: 'indexBorder', 21 valueType: 'indexBorder',
  22 + ellipsis: true,
20 width: 48, 23 width: 48,
21 }, 24 },
22 { 25 {
23 title: '客户名称', 26 title: '客户名称',
24 dataIndex: 'name', 27 dataIndex: 'name',
25 width: 100, 28 width: 100,
  29 + ellipsis: true,
26 hideInSearch: true, 30 hideInSearch: true,
27 }, 31 },
28 { 32 {
29 title: '单位名称', 33 title: '单位名称',
30 width: 150, 34 width: 150,
  35 + ellipsis: true,
31 dataIndex: 'companyName', 36 dataIndex: 'companyName',
32 hideInSearch: true, 37 hideInSearch: true,
33 }, 38 },
34 { 39 {
35 title: '单位地址', 40 title: '单位地址',
36 width: 250, 41 width: 250,
  42 + ellipsis: true,
37 dataIndex: 'companyAddressText', 43 dataIndex: 'companyAddressText',
38 hideInSearch: true, 44 hideInSearch: true,
39 }, 45 },
40 { 46 {
41 title: '联系电话', 47 title: '联系电话',
42 width: 150, 48 width: 150,
  49 + ellipsis: true,
43 dataIndex: 'phoneNumber', 50 dataIndex: 'phoneNumber',
44 hideInSearch: true, 51 hideInSearch: true,
45 }, 52 },
46 { 53 {
47 title: '客户来源', 54 title: '客户来源',
48 width: 150, 55 width: 150,
  56 + ellipsis: true,
49 dataIndex: 'source', 57 dataIndex: 'source',
50 hideInSearch: true, 58 hideInSearch: true,
51 }, 59 },
@@ -53,17 +61,20 @@ const columns = [ @@ -53,17 +61,20 @@ const columns = [
53 title: '推荐人', 61 title: '推荐人',
54 dataIndex: 'referrers', 62 dataIndex: 'referrers',
55 width: 150, 63 width: 150,
  64 + ellipsis: true,
56 hideInSearch: true, 65 hideInSearch: true,
57 }, 66 },
58 { 67 {
59 title: '客户需求', 68 title: '客户需求',
60 dataIndex: 'requirements', 69 dataIndex: 'requirements',
61 width: 150, 70 width: 150,
  71 + ellipsis: true,
62 hideInSearch: true, 72 hideInSearch: true,
63 }, 73 },
64 { 74 {
65 title: '是否已报方案', 75 title: '是否已报方案',
66 width: 150, 76 width: 150,
  77 + ellipsis: true,
67 dataIndex: 'hasSchemeText', 78 dataIndex: 'hasSchemeText',
68 hideInSearch: true, 79 hideInSearch: true,
69 }, 80 },
@@ -71,6 +82,7 @@ const columns = [ @@ -71,6 +82,7 @@ const columns = [
71 title: '报价时间', 82 title: '报价时间',
72 key: 'since', 83 key: 'since',
73 width: 150, 84 width: 150,
  85 + ellipsis: true,
74 dataIndex: 'quoteDatetime', 86 dataIndex: 'quoteDatetime',
75 valueType: 'dateTime', 87 valueType: 'dateTime',
76 hideInSearch: true, 88 hideInSearch: true,
@@ -78,12 +90,14 @@ const columns = [ @@ -78,12 +90,14 @@ const columns = [
78 { 90 {
79 title: '跟进状态', 91 title: '跟进状态',
80 width: 150, 92 width: 150,
  93 + ellipsis: true,
81 dataIndex: 'tradeStatusText', 94 dataIndex: 'tradeStatusText',
82 hideInSearch: true, 95 hideInSearch: true,
83 }, 96 },
84 { 97 {
85 title: '客户等级', 98 title: '客户等级',
86 width: 150, 99 width: 150,
  100 + ellipsis: true,
87 dataIndex: 'levelText', 101 dataIndex: 'levelText',
88 hideInSearch: true, 102 hideInSearch: true,
89 }, 103 },
@@ -91,6 +105,7 @@ const columns = [ @@ -91,6 +105,7 @@ const columns = [
91 title: '创建时间', 105 title: '创建时间',
92 key: 'since', 106 key: 'since',
93 width: 150, 107 width: 150,
  108 + ellipsis: true,
94 dataIndex: 'createTime', 109 dataIndex: 'createTime',
95 valueType: 'dateTime', 110 valueType: 'dateTime',
96 hideInSearch: true, 111 hideInSearch: true,
@@ -99,6 +114,7 @@ const columns = [ @@ -99,6 +114,7 @@ const columns = [
99 title: '最新跟进时间', 114 title: '最新跟进时间',
100 key: 'since', 115 key: 'since',
101 width: 150, 116 width: 150,
  117 + ellipsis: true,
102 dataIndex: 'latestCommunicationTime', 118 dataIndex: 'latestCommunicationTime',
103 valueType: 'dateTime', 119 valueType: 'dateTime',
104 hideInSearch: true, 120 hideInSearch: true,
@@ -207,101 +223,128 @@ const columns = [ @@ -207,101 +223,128 @@ const columns = [
207 223
208 export default () => { 224 export default () => {
209 const [messageApi, contextHolder] = message.useMessage(); 225 const [messageApi, contextHolder] = message.useMessage();
  226 + const [groupFilter, setGroupFilter] = useState('All');
  227 + const [groupFilterOptions, setGroupFilterDataOptions] = useState([]);
210 const actionRef = useRef<ActionType>(); 228 const actionRef = useRef<ActionType>();
  229 + useEffect(() => {
  230 + const pullGroupFilterDataOptions = async () => {
  231 + const res = await postServiceConstClientGroupFilters();
  232 + console.log('setGroupFilterDataOptions' + JSON.stringify(res.data));
  233 + setGroupFilterDataOptions(enumToSelect(res.data));
  234 + };
  235 + pullGroupFilterDataOptions();
  236 + }, []);
  237 + useEffect(() => {
  238 + actionRef.current?.reload();
  239 + }, [groupFilter]);
211 return ( 240 return (
212 <> 241 <>
213 - <ProTable  
214 - columns={columns}  
215 - actionRef={actionRef}  
216 - cardBordered  
217 - request={async (params) => {  
218 - const res = await postAdminClientQueryClientPage({  
219 - data: {  
220 - ...params, 242 + <Space direction="vertical" size="middle" style={{ display: 'flex' }}>
  243 + <ClientStatistic></ClientStatistic>
  244 + <ProTable
  245 + columns={columns}
  246 + actionRef={actionRef}
  247 + cardBordered
  248 + request={async (params) => {
  249 + const res = await postAdminClientQueryClientPage({
  250 + data: {
  251 + ...params,
  252 + groupFilter: groupFilter,
  253 + },
  254 + });
  255 + const data = res.data;
  256 + return data;
  257 + }}
  258 + search={{
  259 + defaultCollapsed: false,
  260 + optionRender: (searchConfig, formProps, dom) => [
  261 + ...dom.reverse(),
  262 + <Button
  263 + key="out"
  264 + onClick={() => {
  265 + const values = searchConfig?.form?.getFieldsValue();
  266 + messageApi.open({
  267 + type: 'loading',
  268 + content: '导出中...',
  269 + duration: 0,
  270 + });
  271 + orderExport(
  272 + '/api/admin/client/exportClients',
  273 + '客户信息.xlsx',
  274 + 'POST',
  275 + values,
  276 + () => {
  277 + messageApi.destroy();
  278 + },
  279 + );
  280 + }}
  281 + >
  282 + 导出
  283 + </Button>,
  284 + ],
  285 + }}
  286 + scroll={{
  287 + x: 1400,
  288 + }}
  289 + editable={{
  290 + type: 'multiple',
  291 + }}
  292 + columnsState={{
  293 + persistenceKey: 'pro-table-singe-demos',
  294 + persistenceType: 'localStorage',
  295 + defaultValue: {
  296 + option: { fixed: 'right', disable: true },
  297 + },
  298 + onChange(value) {
  299 + console.log('value: ', value);
221 }, 300 },
222 - });  
223 - const data = res.data;  
224 - return data;  
225 - }}  
226 - search={{  
227 - defaultCollapsed: false,  
228 - optionRender: (searchConfig, formProps, dom) => [  
229 - ...dom.reverse(),  
230 - <Button  
231 - key="out"  
232 - onClick={() => {  
233 - const values = searchConfig?.form?.getFieldsValue();  
234 - messageApi.open({  
235 - type: 'loading',  
236 - content: '导出中...',  
237 - duration: 0,  
238 - });  
239 - orderExport(  
240 - '/api/admin/client/exportClients',  
241 - '客户信息.xlsx',  
242 - 'POST',  
243 - values,  
244 - () => {  
245 - messageApi.destroy();  
246 - },  
247 - ); 301 + }}
  302 + rowKey="id"
  303 + options={{
  304 + setting: {
  305 + listsHeight: 400,
  306 + },
  307 + }}
  308 + form={{
  309 + // 由于配置了 transform,提交的参与与定义的不同这里需要转化一下
  310 + syncToUrl: (values, type) => {
  311 + if (type === 'get') {
  312 + return {
  313 + ...values,
  314 + created_at: [values.startTime, values.endTime],
  315 + };
  316 + }
  317 + return values;
  318 + },
  319 + }}
  320 + pagination={{
  321 + pageSize: 5,
  322 + onChange: (page) => console.log(page),
  323 + }}
  324 + dateFormatter="string"
  325 + headerTitle="高级表格"
  326 + toolBarRender={() => [
  327 + <div key={'groupFilter'}>
  328 + <Radio.Group
  329 + options={groupFilterOptions}
  330 + onChange={(e) => {
  331 + setGroupFilter(e.target.value);
  332 + }}
  333 + value={groupFilter}
  334 + optionType="button"
  335 + />
  336 + </div>,
  337 + <ClientDrawer
  338 + optType={'add'}
  339 + key="button"
  340 + onFinish={() => {
  341 + actionRef.current.reload();
248 }} 342 }}
249 - >  
250 - 导出  
251 - </Button>,  
252 - ],  
253 - }}  
254 - scroll={{  
255 - x: 1400,  
256 - }}  
257 - editable={{  
258 - type: 'multiple',  
259 - }}  
260 - columnsState={{  
261 - persistenceKey: 'pro-table-singe-demos',  
262 - persistenceType: 'localStorage',  
263 - defaultValue: {  
264 - option: { fixed: 'right', disable: true },  
265 - },  
266 - onChange(value) {  
267 - console.log('value: ', value);  
268 - },  
269 - }}  
270 - rowKey="id"  
271 - options={{  
272 - setting: {  
273 - listsHeight: 400,  
274 - },  
275 - }}  
276 - form={{  
277 - // 由于配置了 transform,提交的参与与定义的不同这里需要转化一下  
278 - syncToUrl: (values, type) => {  
279 - if (type === 'get') {  
280 - return {  
281 - ...values,  
282 - created_at: [values.startTime, values.endTime],  
283 - };  
284 - }  
285 - return values;  
286 - },  
287 - }}  
288 - pagination={{  
289 - pageSize: 5,  
290 - onChange: (page) => console.log(page),  
291 - }}  
292 - dateFormatter="string"  
293 - headerTitle="高级表格"  
294 - toolBarRender={() => [  
295 - <ClientDrawer  
296 - optType={'add'}  
297 - key="button"  
298 - onFinish={() => {  
299 - actionRef.current.reload();  
300 - }}  
301 - ></ClientDrawer>,  
302 - <ClientImportModal key="import" />,  
303 - ]}  
304 - /> 343 + ></ClientDrawer>,
  344 + <ClientImportModal key="import" />,
  345 + ]}
  346 + />
  347 + </Space>
305 {contextHolder} 348 {contextHolder}
306 </> 349 </>
307 ); 350 );
src/pages/Invoice/InvoiceRecord/index.less 0 → 100644
  1 +.invoice-index td {
  2 + font-family: 'San Francisco', 'Helvetica Neue', Helvetica, Arial,
  3 + 'Microsoft YaHei', 'PingFang SC', 'Hiragino Sans GB', 'Heiti SC',
  4 + 'WenQuanYi Micro Hei', sans-serif;
  5 + font-size: 14px;
  6 +}
  7 +
  8 +.invoice-detail td {
  9 + font-family: 'San Francisco', 'Helvetica Neue', Helvetica, Arial,
  10 + 'Microsoft YaHei', 'PingFang SC', 'Hiragino Sans GB', 'Heiti SC',
  11 + 'WenQuanYi Micro Hei', sans-serif;
  12 + font-size: 14px;
  13 +}
  14 +
  15 +.bank-statement-choose td {
  16 + font-family: 'San Francisco', 'Helvetica Neue', Helvetica, Arial,
  17 + 'Microsoft YaHei', 'PingFang SC', 'Hiragino Sans GB', 'Heiti SC',
  18 + 'WenQuanYi Micro Hei', sans-serif;
  19 + font-size: 14px;
  20 +}
src/pages/Invoice/InvoiceRecord/index.tsx 0 → 100644
  1 +import ButtonConfirm from '@/components/ButtomConfirm';
  2 +import EllipsisDiv from '@/components/Div/EllipsisDiv';
  3 +import { RESPONSE_CODE } from '@/constants/enum';
  4 +import AddInvoiceDrawerForm from '@/pages/Invoice/components/AddInvoiceDrawerForm';
  5 +import BankImportModal from '@/pages/Invoice/components/BankImportModal';
  6 +import InvoiceModal from '@/pages/Invoice/components/InvoiceModal';
  7 +import InvoiceRecordDetailModal from '@/pages/Invoice/components/InvoiceRecordDetailModal';
  8 +import InvoiceVerificationModal from '@/pages/Invoice/components/InvoiceVerificationModal';
  9 +import InvoicingModal from '@/pages/Invoice/components/InvoicingModal';
  10 +import ManualInvoicingModal from '@/pages/Invoice/components/ManualInvoicingModal';
  11 +import {
  12 + BANK_STATEMENT_COLUMNS,
  13 + INVOICE_COLUMNS,
  14 + INVOICE_STATUS,
  15 +} from '@/pages/Invoice/constant';
  16 +import { INVOCING_STATUS, PAYEE_OPTIONS } from '@/pages/Order/constant';
  17 +import {
  18 + postServiceBankStatementDeleteBankStatement,
  19 + postServiceBankStatementEditBankStatement,
  20 + postServiceBankStatementQueryBankStatement,
  21 + postServiceConstAfterInvoicingInvoiceRecordStatus,
  22 + postServiceConstBeforeInvoicingInvoiceRecordStatus,
  23 + postServiceConstInvoiceType,
  24 + postServiceConstInvoicingType,
  25 + postServiceInvoiceDeleteInvoice,
  26 + postServiceInvoiceInvoicing,
  27 + postServiceInvoiceQueryInvoice,
  28 + postServiceInvoiceQueryInvoiceRecordList,
  29 + postServiceOrderQuerySalesCode,
  30 +} from '@/services';
  31 +import { excelExport } from '@/services/exportRequest';
  32 +import {
  33 + enumToProTableEnumValue,
  34 + enumToSelect,
  35 + enumValueToLabel,
  36 + formatDateTime,
  37 +} from '@/utils';
  38 +import { formatDate } from '@/utils/time';
  39 +import { PlusOutlined } from '@ant-design/icons';
  40 +import { ActionType, ModalForm, ProTable } from '@ant-design/pro-components';
  41 +import { Button, Space, Table, Tabs, message } from 'antd';
  42 +import { useEffect, useRef, useState } from 'react';
  43 +
  44 +const InvoiceRecord = () => {
  45 + const invoiceActionRef = useRef<ActionType>();
  46 + const bankActionRef = useRef<ActionType>();
  47 + const waitDealrecordActionRef = useRef<ActionType>();
  48 + const processedRecordRef = useRef<ActionType>();
  49 + const [invoiceTypeValueEnum, setInvoiceTypeValueEnum] = useState({});
  50 + const [invoicingTypeValueEnum, setInvoicingTypeValueEnum] = useState({});
  51 + const [salesCodeValueEnum, setSalesCodeValueEnum] = useState({});
  52 + const [bankImportModalVisible, setBankImportModalVisible] = useState(false);
  53 + const [invoiceVerificationVisible, setInvoiceVerificationVisible] =
  54 + useState(false);
  55 + const [invoiceId, setInvoiceId] = useState(undefined);
  56 + const [invoiceRecordDetailVisible, setInvoiceRecordDetailVisible] =
  57 + useState(false);
  58 + const [invoiceRecord, setInvoiceRecord] = useState({});
  59 + const [messageApi, contextHolder] = message.useMessage();
  60 +
  61 + useEffect(() => {
  62 + async function extracted() {
  63 + let invoiceTypeRet = await postServiceConstInvoiceType();
  64 + setInvoiceTypeValueEnum(invoiceTypeRet.data);
  65 + }
  66 +
  67 + extracted().catch(console.error);
  68 + }, []);
  69 +
  70 + useEffect(() => {
  71 + async function extracted() {
  72 + let invoicingTypeRet = await postServiceConstInvoicingType();
  73 + setInvoicingTypeValueEnum(invoicingTypeRet.data);
  74 + }
  75 +
  76 + extracted().catch(console.error);
  77 + }, []);
  78 +
  79 + useEffect(() => {
  80 + async function extracted() {
  81 + const res = await postServiceOrderQuerySalesCode();
  82 + let map = {};
  83 + res.data?.forEach((item) => {
  84 + map[item.userName] = {
  85 + text: item.userName,
  86 + status: item.userName,
  87 + };
  88 + });
  89 + setSalesCodeValueEnum(map);
  90 + }
  91 +
  92 + extracted().catch(console.error);
  93 + }, []);
  94 +
  95 + const reloadInvoiceTable = () => {
  96 + invoiceActionRef.current?.reload();
  97 + };
  98 +
  99 + const reloadBankStatementTable = () => {
  100 + bankActionRef.current?.reload();
  101 + };
  102 + const reloadRecordTable = () => {
  103 + waitDealrecordActionRef.current?.reload();
  104 + processedRecordRef.current?.reload();
  105 + };
  106 +
  107 + const getTableCellText = (target: any) => {
  108 + if (!target) {
  109 + return '';
  110 + }
  111 +
  112 + if (target.props) {
  113 + return target.props.text;
  114 + }
  115 +
  116 + return target;
  117 + };
  118 +
  119 + const waitDealRecordColumns = [
  120 + {
  121 + dataIndex: 'index',
  122 + valueType: 'indexBorder',
  123 + hideInSearch: true,
  124 + ellipsis: true,
  125 + width: 48,
  126 + },
  127 + {
  128 + title: '开票编号',
  129 + valueType: 'text',
  130 + dataIndex: 'id',
  131 + copyable: true,
  132 + hideInSearch: true,
  133 + ellipsis: true,
  134 + width: 100,
  135 + },
  136 + {
  137 + title: '发票状态',
  138 + valueType: 'Text',
  139 + dataIndex: 'statusText',
  140 + ellipsis: true,
  141 + hideInSearch: true,
  142 + },
  143 + {
  144 + title: '申请开票时间',
  145 + dataIndex: 'createTime',
  146 + valueType: 'dateTime',
  147 + hideInSearch: true,
  148 + ellipsis: true,
  149 + },
  150 + {
  151 + title: '销售代表',
  152 + valueType: 'text',
  153 + hideInSearch: true,
  154 + ellipsis: true,
  155 + dataIndex: 'createByName',
  156 + },
  157 + {
  158 + title: '购方名称',
  159 + valueType: 'text',
  160 + dataIndex: 'partyAName',
  161 + hideInSearch: true,
  162 + ellipsis: true,
  163 + },
  164 + {
  165 + title: '购方税号',
  166 + valueType: 'text',
  167 + hideInSearch: true,
  168 + dataIndex: 'partyATaxid',
  169 + ellipsis: true,
  170 + },
  171 + {
  172 + title: '收款单位',
  173 + valueType: 'text',
  174 + hideInSearch: true,
  175 + dataIndex: 'partyBName',
  176 + ellipsis: true,
  177 + },
  178 + {
  179 + title: '开票金额',
  180 + valueType: 'money',
  181 + dataIndex: 'price',
  182 + hideInSearch: true,
  183 + ellipsis: true,
  184 + },
  185 + {
  186 + title: '开具类型',
  187 + valueType: 'Text',
  188 + dataIndex: 'invoicingTypeText',
  189 + hideInSearch: true,
  190 + ellipsis: true,
  191 + },
  192 + {
  193 + title: '发票类型',
  194 + valueType: 'Text',
  195 + dataIndex: 'typeText',
  196 + hideInSearch: true,
  197 + ellipsis: true,
  198 + },
  199 + {
  200 + title: '是否加急',
  201 + valueType: 'Text',
  202 + dataIndex: 'isUrgentText',
  203 + hideInSearch: true,
  204 + ellipsis: true,
  205 + },
  206 + {
  207 + title: '申请备注',
  208 + valueType: 'text',
  209 + dataIndex: 'applyInvoicingNotes',
  210 + hideInSearch: true,
  211 + ellipsis: true,
  212 + },
  213 + {
  214 + title: '购方名称',
  215 + valueType: 'Text',
  216 + dataIndex: 'partyANameLike',
  217 + hideInTable: true,
  218 + },
  219 + {
  220 + title: '收款单位',
  221 + valueType: 'select',
  222 + dataIndex: 'partyB',
  223 + filters: true,
  224 + onFilter: true,
  225 + hideInTable: true,
  226 + valueEnum: enumToProTableEnumValue(PAYEE_OPTIONS),
  227 + },
  228 + {
  229 + title: '主订单号',
  230 + valueType: 'Text',
  231 + dataIndex: 'mainOrderId',
  232 + hideInTable: true,
  233 + },
  234 + {
  235 + title: '子订单号',
  236 + valueType: 'Text',
  237 + dataIndex: 'subOrderId',
  238 + hideInTable: true,
  239 + },
  240 + {
  241 + title: '销售代表',
  242 + valueType: 'select',
  243 + dataIndex: 'salesCode',
  244 + filters: true,
  245 + onFilter: true,
  246 + hideInTable: true,
  247 + valueEnum: salesCodeValueEnum,
  248 + },
  249 + {
  250 + title: '发票类型',
  251 + valueType: 'select',
  252 + dataIndex: 'type',
  253 + filters: true,
  254 + onFilter: true,
  255 + hideInTable: true,
  256 + valueEnum: enumToProTableEnumValue(invoiceTypeValueEnum),
  257 + },
  258 + {
  259 + title: '开具类型',
  260 + valueType: 'select',
  261 + dataIndex: 'invoicingType',
  262 + filters: true,
  263 + onFilter: true,
  264 + hideInTable: true,
  265 + valueEnum: enumToProTableEnumValue(invoicingTypeValueEnum),
  266 + },
  267 + {
  268 + title: '开票状态',
  269 + valueType: 'select',
  270 + dataIndex: 'status',
  271 + filters: true,
  272 + onFilter: true,
  273 + hideInTable: true,
  274 + request: async () => {
  275 + const res = await postServiceConstBeforeInvoicingInvoiceRecordStatus();
  276 + return enumToSelect(res.data);
  277 + },
  278 + },
  279 + {
  280 + title: '是否加急',
  281 + valueType: 'select',
  282 + dataIndex: 'isUrgent',
  283 + filters: true,
  284 + onFilter: true,
  285 + hideInTable: true,
  286 + valueEnum: {
  287 + true: {
  288 + text: '是',
  289 + status: true,
  290 + },
  291 + false: {
  292 + text: '否',
  293 + status: false,
  294 + },
  295 + },
  296 + },
  297 + {
  298 + title: '申请开票时间',
  299 + dataIndex: 'createTime',
  300 + valueType: 'dateTimeRange',
  301 + width: 200,
  302 + hideInTable: true,
  303 + search: {
  304 + transform: (value) => {
  305 + if (value) {
  306 + return {
  307 + createTimeGe: value[0],
  308 + createTimeLe: value[1],
  309 + };
  310 + }
  311 + },
  312 + },
  313 + },
  314 + {
  315 + title: '操作',
  316 + valueType: 'option',
  317 + key: 'option',
  318 + render: (text, record) => {
  319 + return [
  320 + /*<InvoiceRecordDetailModal
  321 + key="detail"
  322 + id={record.id}
  323 + subOrderIds={record.subOrderIds}
  324 + onClose={()=>{
  325 + waitDealrecordActionRef.current?.reload();
  326 + }
  327 + }
  328 + />*/
  329 + <>
  330 + {record.paths.includes('DETAIL') && (
  331 + <a
  332 + key="detail"
  333 + onClick={() => {
  334 + setInvoiceRecordDetailVisible(true);
  335 + setInvoiceRecord(record);
  336 + }}
  337 + >
  338 + 详情
  339 + </a>
  340 + )}
  341 + </>,
  342 + <>
  343 + {record.paths.includes('PREVIEW') && (
  344 + <InvoiceModal key="invoiceModal" recordId={record.id} />
  345 + )}
  346 + </>,
  347 + <>
  348 + {record.paths.includes('INVOICING') && (
  349 + <ManualInvoicingModal
  350 + key={'ManualInvoicingModal'}
  351 + record={record}
  352 + ></ManualInvoicingModal>
  353 + )}
  354 + </>,
  355 + ];
  356 + },
  357 + },
  358 + ];
  359 +
  360 + const processedRecordColumns = [
  361 + {
  362 + dataIndex: 'index',
  363 + valueType: 'indexBorder',
  364 + },
  365 + {
  366 + title: '开票编号',
  367 + valueType: 'text',
  368 + dataIndex: 'id',
  369 + copyable: true,
  370 + ellipsis: true,
  371 + },
  372 + {
  373 + title: '发票号码',
  374 + valueType: 'text',
  375 + dataIndex: 'invoiceNumber',
  376 + copyable: true,
  377 + ellipsis: true,
  378 + },
  379 + {
  380 + title: '开票日期',
  381 + dataIndex: 'invoicingDate',
  382 + valueType: 'date',
  383 + hideInSearch: true,
  384 + ellipsis: true,
  385 + },
  386 + {
  387 + title: '发票类型',
  388 + valueType: 'Text',
  389 + dataIndex: 'typeText',
  390 + hideInSearch: true,
  391 + ellipsis: true,
  392 + },
  393 + {
  394 + title: '发票状态',
  395 + valueType: 'Text',
  396 + dataIndex: 'statusText',
  397 + hideInSearch: true,
  398 + ellipsis: true,
  399 + },
  400 + {
  401 + title: '购方名称',
  402 + valueType: 'text',
  403 + dataIndex: 'partyAName',
  404 + hideInSearch: true,
  405 + ellipsis: true,
  406 + },
  407 + {
  408 + title: '购方税号',
  409 + valueType: 'text',
  410 + dataIndex: 'partyATaxid',
  411 + ellipsis: true,
  412 + },
  413 + {
  414 + title: '收款单位',
  415 + valueType: 'text',
  416 + dataIndex: 'partyBName',
  417 + hideInSearch: true,
  418 + ellipsis: true,
  419 + },
  420 + {
  421 + title: '联系人',
  422 + valueType: 'text',
  423 + dataIndex: 'contacts',
  424 + hideInSearch: true,
  425 + ellipsis: true,
  426 + },
  427 + {
  428 + title: '申请人',
  429 + valueType: 'text',
  430 + dataIndex: 'createByName',
  431 + hideInSearch: true,
  432 + ellipsis: true,
  433 + },
  434 + {
  435 + title: '开票金额(元)',
  436 + valueType: 'money',
  437 + dataIndex: 'price',
  438 + hideInSearch: true,
  439 + ellipsis: true,
  440 + },
  441 + {
  442 + title: '备注',
  443 + valueType: 'text',
  444 + dataIndex: 'contacts',
  445 + hideInSearch: true,
  446 + ellipsis: true,
  447 + },
  448 + {
  449 + title: '失败原因',
  450 + valueType: 'text',
  451 + dataIndex: 'failureReason',
  452 + hideInSearch: true,
  453 + ellipsis: true,
  454 + },
  455 +
  456 + {
  457 + title: '购方名称',
  458 + valueType: 'text',
  459 + dataIndex: 'partyANameLike',
  460 + hideInTable: true,
  461 + },
  462 + {
  463 + title: '发票类型',
  464 + valueType: 'select',
  465 + dataIndex: 'type',
  466 + filters: true,
  467 + onFilter: true,
  468 + hideInTable: true,
  469 + valueEnum: enumToProTableEnumValue(invoiceTypeValueEnum),
  470 + },
  471 +
  472 + {
  473 + title: '开票状态',
  474 + valueType: 'select',
  475 + dataIndex: 'status',
  476 + filters: true,
  477 + onFilter: true,
  478 + hideInTable: true,
  479 + request: async () => {
  480 + const res = await postServiceConstAfterInvoicingInvoiceRecordStatus();
  481 + return enumToSelect(res.data);
  482 + },
  483 + },
  484 + {
  485 + title: '销售代表',
  486 + valueType: 'select',
  487 + dataIndex: 'salesCode',
  488 + filters: true,
  489 + onFilter: true,
  490 + hideInTable: true,
  491 + valueEnum: salesCodeValueEnum,
  492 + },
  493 + {
  494 + title: '联系人',
  495 + valueType: 'text',
  496 + dataIndex: 'contactsLike',
  497 + hideInTable: true,
  498 + },
  499 + {
  500 + title: '开票日期',
  501 + dataIndex: 'invoicingDate',
  502 + valueType: 'dateRange',
  503 + hideInTable: true,
  504 + search: {
  505 + transform: (value) => {
  506 + if (value) {
  507 + return {
  508 + invoicingDateGe: value[0],
  509 + invoicingDateLe: value[1],
  510 + };
  511 + }
  512 + },
  513 + },
  514 + },
  515 + {
  516 + title: '收款单位',
  517 + valueType: 'select',
  518 + dataIndex: 'partyB',
  519 + filters: true,
  520 + onFilter: true,
  521 + hideInTable: true,
  522 + valueEnum: enumToProTableEnumValue(PAYEE_OPTIONS),
  523 + },
  524 + {
  525 + title: '操作',
  526 + valueType: 'option',
  527 + key: 'option',
  528 + render: (text, record) => [
  529 + <>
  530 + {record.status === 'SUCCESS' && record.paths.includes('DETAIL') && (
  531 + <a
  532 + key="detail"
  533 + onClick={() => {
  534 + setInvoiceRecordDetailVisible(true);
  535 + setInvoiceRecord(record);
  536 + }}
  537 + >
  538 + 详情
  539 + </a>
  540 + )}
  541 + </>,
  542 + <>
  543 + {record.status === 'SUCCESS' &&
  544 + record.paths.includes('DOWNLOAD_INVOICE') && (
  545 + <a href={record.invoiceAddress} download>
  546 + 下载发票
  547 + </a>
  548 + )}
  549 + </>,
  550 + <>
  551 + {record.status === 'FAIL' && record.paths.includes('RETRY') && (
  552 + <ModalForm
  553 + title="提示"
  554 + trigger={
  555 + <Button type="link" danger>
  556 + 重试
  557 + </Button>
  558 + }
  559 + autoFocusFirstInput
  560 + modalProps={{
  561 + destroyOnClose: true,
  562 + }}
  563 + submitTimeout={2000}
  564 + onFinish={async () => {
  565 + const res = await postServiceInvoiceInvoicing({
  566 + data: {
  567 + invoiceRecordIds: [record.id],
  568 + },
  569 + });
  570 + if (res) {
  571 + message.success(res.message);
  572 + processedRecordRef?.current?.reload();
  573 + }
  574 + return true;
  575 + }}
  576 + >
  577 + 确定重试订单信息吗?
  578 + </ModalForm>
  579 + )}
  580 + </>,
  581 + <>
  582 + {record.paths.includes('INVOICING') && (
  583 + <ManualInvoicingModal
  584 + key={'ManualInvoicingModal'}
  585 + record={record}
  586 + ></ManualInvoicingModal>
  587 + )}
  588 + </>,
  589 + ],
  590 + },
  591 + ];
  592 + /**
  593 + * 加载发票列表表格的各个列格式
  594 + */
  595 + const invoicecColumnsInit = () => {
  596 + let columns = INVOICE_COLUMNS.map((item) => {
  597 + let newItem = { ...item };
  598 + let dataIndex = item.dataIndex;
  599 + let dataType = item.valueType;
  600 +
  601 + newItem.render = (text, record) => {
  602 + let textValue = record[dataIndex];
  603 +
  604 + if (dataType === 'dateRange' || dataType === 'date') {
  605 + textValue = formatDate(textValue);
  606 + }
  607 +
  608 + if (dataType === 'dateTime') {
  609 + textValue = formatDateTime(textValue);
  610 + }
  611 +
  612 + if (dataType === 'money') {
  613 + textValue = '¥' + textValue;
  614 + }
  615 +
  616 + switch (dataIndex) {
  617 + case 'invoiceStatus':
  618 + return (
  619 + <EllipsisDiv
  620 + text={enumValueToLabel(
  621 + getTableCellText(textValue),
  622 + INVOCING_STATUS,
  623 + )}
  624 + />
  625 + );
  626 +
  627 + case 'status':
  628 + return (
  629 + <EllipsisDiv
  630 + text={enumValueToLabel(
  631 + getTableCellText(textValue),
  632 + INVOICE_STATUS,
  633 + )}
  634 + />
  635 + );
  636 +
  637 + case 'payee':
  638 + return (
  639 + <EllipsisDiv
  640 + text={enumValueToLabel(
  641 + getTableCellText(textValue),
  642 + PAYEE_OPTIONS,
  643 + )}
  644 + />
  645 + );
  646 +
  647 + default:
  648 + return <EllipsisDiv text={getTableCellText(textValue)} />;
  649 + }
  650 + };
  651 +
  652 + return newItem;
  653 + });
  654 +
  655 + columns.push({
  656 + title: '操作',
  657 + valueType: 'option',
  658 + key: 'option',
  659 + fixed: 'right',
  660 + width: 120,
  661 + render: (text, record) => {
  662 + let btns = [];
  663 + if (record.path?.includes('writeOff')) {
  664 + btns.push(
  665 + <a
  666 + key="editable"
  667 + onClick={() => {
  668 + setInvoiceVerificationVisible(true);
  669 + setInvoiceId(record.invoiceId);
  670 + }}
  671 + >
  672 + 核销
  673 + </a>,
  674 + );
  675 + }
  676 +
  677 + if (record.path?.includes('queryInvoiceDetails')) {
  678 + btns.push(
  679 + <Button
  680 + className="p-0"
  681 + key="view"
  682 + type="link"
  683 + onClick={() => {
  684 + setInvoiceVerificationVisible(true);
  685 + setInvoiceId(record.invoiceId);
  686 + }}
  687 + >
  688 + 查看
  689 + </Button>,
  690 + );
  691 + }
  692 +
  693 + if (record.path?.includes('deleteInvoice')) {
  694 + btns.push(
  695 + <ButtonConfirm
  696 + key="delete"
  697 + className="p-0"
  698 + title={
  699 + '确认删除发票号码为[ ' + record.invoiceNumber + ' ]的发票吗?'
  700 + }
  701 + text="删除"
  702 + onConfirm={async () => {
  703 + let res = await postServiceInvoiceDeleteInvoice({
  704 + data: { invoiceId: record.invoiceId },
  705 + });
  706 + if (res) {
  707 + message.success(res.message);
  708 + reloadInvoiceTable();
  709 + }
  710 + }}
  711 + />,
  712 + );
  713 + }
  714 + return btns;
  715 + },
  716 + });
  717 +
  718 + return columns;
  719 + };
  720 +
  721 + const bankStatemetColumnsInit = () => {
  722 + let columns = BANK_STATEMENT_COLUMNS.map((item) => {
  723 + let newItem = { ...item };
  724 + let dataIndex = item.dataIndex;
  725 + let dataType = item.valueType;
  726 +
  727 + newItem.render = (text, record) => {
  728 + let textValue = record[dataIndex];
  729 +
  730 + if (dataType === 'date') {
  731 + textValue = formatDate(textValue);
  732 + }
  733 +
  734 + if (dataType === 'dateTime') {
  735 + textValue = formatDateTime(textValue);
  736 + }
  737 +
  738 + if (dataType === 'money') {
  739 + if (textValue === null || textValue === undefined) {
  740 + textValue = '';
  741 + } else {
  742 + textValue = '¥' + textValue;
  743 + }
  744 + }
  745 +
  746 + switch (dataIndex) {
  747 + case 'invoiceStatus':
  748 + return (
  749 + <EllipsisDiv
  750 + text={enumValueToLabel(
  751 + getTableCellText(textValue),
  752 + INVOCING_STATUS,
  753 + )}
  754 + />
  755 + );
  756 +
  757 + case 'status':
  758 + return (
  759 + <EllipsisDiv
  760 + text={enumValueToLabel(
  761 + getTableCellText(textValue),
  762 + INVOICE_STATUS,
  763 + )}
  764 + />
  765 + );
  766 +
  767 + case 'payee':
  768 + return (
  769 + <EllipsisDiv
  770 + text={enumValueToLabel(
  771 + getTableCellText(textValue),
  772 + PAYEE_OPTIONS,
  773 + )}
  774 + />
  775 + );
  776 +
  777 + default:
  778 + return <EllipsisDiv text={getTableCellText(textValue)} />;
  779 + }
  780 + };
  781 +
  782 + return newItem;
  783 + });
  784 +
  785 + columns.push({
  786 + title: '操作',
  787 + valueType: 'option',
  788 + key: 'option',
  789 + fixed: 'right',
  790 + width: 120,
  791 + render: (text, record, _, action) => {
  792 + let btns = [];
  793 + if (record.path?.includes('editBankStatement')) {
  794 + btns.push(
  795 + <a
  796 + key="editable"
  797 + onClick={() => {
  798 + action?.startEditable?.(record.id);
  799 + }}
  800 + >
  801 + 编辑
  802 + </a>,
  803 + );
  804 + }
  805 +
  806 + if (record.path?.includes('deleteBankStatement')) {
  807 + btns.push(
  808 + <ButtonConfirm
  809 + key="delete"
  810 + className="p-0"
  811 + title={'是否删除该银行流水记录?'}
  812 + text="删除"
  813 + onConfirm={async () => {
  814 + let res = await postServiceBankStatementDeleteBankStatement({
  815 + data: { id: record.id },
  816 + });
  817 + if (res.result === RESPONSE_CODE.SUCCESS) {
  818 + message.success(res.message);
  819 + reloadBankStatementTable();
  820 + }
  821 + }}
  822 + />,
  823 + );
  824 + }
  825 + return btns;
  826 + },
  827 + });
  828 +
  829 + return columns;
  830 + };
  831 +
  832 + const tabsItems = [
  833 + {
  834 + key: 1,
  835 + label: '待处理',
  836 + children: (
  837 + <ProTable
  838 + columns={waitDealRecordColumns}
  839 + actionRef={waitDealrecordActionRef}
  840 + cardBordered
  841 + pagination={{
  842 + showSizeChanger: true, // 显示可以选择每页显示条数的下拉菜单
  843 + pageSizeOptions: ['10', '20', '50', '100'], // 设置可以选择的每页显示条数选项
  844 + }}
  845 + rowSelection={{
  846 + selections: [Table.SELECTION_ALL, Table.SELECTION_INVERT],
  847 + alwaysShowAlert: true,
  848 + }}
  849 + tableAlertOptionRender={({ selectedRowKeys, selectedRows }) => {
  850 + console.log(selectedRows);
  851 + console.log(selectedRowKeys);
  852 + return (
  853 + <Space size={16}>
  854 + <InvoicingModal
  855 + reloadRecordTable={reloadRecordTable}
  856 + key="button"
  857 + selectedRowKeys={selectedRowKeys}
  858 + />
  859 + </Space>
  860 + );
  861 + }}
  862 + request={async (params) => {
  863 + let res = await postServiceInvoiceQueryInvoiceRecordList({
  864 + data: {
  865 + ...params,
  866 + statusIn: [
  867 + 'WAITING_FOR_INVOICING',
  868 + 'AUDITING',
  869 + 'AUDITING_NOT_PASSED',
  870 + 'CANCELED',
  871 + ],
  872 + needBuildDetails: true,
  873 + needBuildSubOrders: true,
  874 + },
  875 + });
  876 + return {
  877 + data: res?.data?.data,
  878 + total: res?.data?.total || 0,
  879 + };
  880 + }}
  881 + columnsState={{
  882 + persistenceKey: 'pro-table-singe-demos',
  883 + persistenceType: 'localStorage',
  884 + defaultValue: {
  885 + option: { fixed: 'right', disable: true },
  886 + },
  887 + onChange(value) {
  888 + console.log('value: ', value);
  889 + },
  890 + }}
  891 + rowKey="id"
  892 + search={{
  893 + labelWidth: 'auto',
  894 + }}
  895 + options={{
  896 + setting: {
  897 + listsHeight: 400,
  898 + },
  899 + }}
  900 + form={{}}
  901 + dateFormatter="string"
  902 + headerTitle="待开票列表"
  903 + scroll={{ x: 1400, y: 360 }}
  904 + />
  905 + ),
  906 + },
  907 + {
  908 + key: 2,
  909 + label: '开票记录',
  910 + children: (
  911 + <ProTable
  912 + columns={processedRecordColumns}
  913 + actionRef={processedRecordRef}
  914 + cardBordered
  915 + pagination={{
  916 + showSizeChanger: true, // 显示可以选择每页显示条数的下拉菜单
  917 + pageSizeOptions: ['10', '20', '50', '100'], // 设置可以选择的每页显示条数选项
  918 + }}
  919 + editable={{
  920 + type: 'multiple',
  921 + onSave: async (rowKey, data) => {
  922 + await postServiceBankStatementEditBankStatement({ data: data });
  923 + },
  924 + actionRender: (row, config, defaultDom) => [
  925 + defaultDom.save,
  926 + defaultDom.cancel,
  927 + ],
  928 + }}
  929 + search={{
  930 + labelWidth: 'auto',
  931 + defaultCollapsed: false,
  932 + optionRender: (searchConfig, formProps, dom) => [
  933 + ...dom,
  934 + <Button
  935 + key="out"
  936 + onClick={() => {
  937 + const values = searchConfig?.form?.getFieldsValue();
  938 + console.log(values);
  939 + messageApi.open({
  940 + type: 'loading',
  941 + content: '正在导出文件...',
  942 + });
  943 + excelExport(
  944 + '/api/service/invoice/exportInvoiceRecords',
  945 + {
  946 + ...values,
  947 + statusIn: ['INVOICING', 'SUCCESS', 'FAIL'],
  948 + },
  949 + () => {
  950 + messageApi.destroy();
  951 + },
  952 + );
  953 + }}
  954 + >
  955 + 导出
  956 + </Button>,
  957 + ],
  958 + }}
  959 + request={async (params) => {
  960 + let res = await postServiceInvoiceQueryInvoiceRecordList({
  961 + data: {
  962 + ...params,
  963 + statusIn: ['INVOICING', 'SUCCESS', 'FAIL'],
  964 + },
  965 + });
  966 + return {
  967 + data: res?.data?.data,
  968 + total: res?.data?.total || 0,
  969 + };
  970 + }}
  971 + columnsState={{
  972 + persistenceKey: 'pro-table-singe-demos',
  973 + persistenceType: 'localStorage',
  974 + defaultValue: {
  975 + option: { fixed: 'right', disable: true },
  976 + },
  977 + onChange(value) {
  978 + console.log('value: ', value);
  979 + },
  980 + }}
  981 + rowKey="id"
  982 + options={{
  983 + setting: {
  984 + listsHeight: 400,
  985 + },
  986 + }}
  987 + form={{}}
  988 + dateFormatter="string"
  989 + headerTitle="待开票列表"
  990 + scroll={{ x: 1400, y: 360 }}
  991 + toolBarRender={() => []}
  992 + />
  993 + ),
  994 + },
  995 + {
  996 + key: 3,
  997 + label: '发票管理',
  998 + children: (
  999 + <ProTable
  1000 + columns={invoicecColumnsInit()}
  1001 + actionRef={invoiceActionRef}
  1002 + cardBordered
  1003 + pagination={{
  1004 + pageSize: 10,
  1005 + }}
  1006 + request={async (params) => {
  1007 + const res = await postServiceInvoiceQueryInvoice({
  1008 + data: { ...params },
  1009 + });
  1010 + if (res) {
  1011 + return {
  1012 + data: res?.data?.data || [],
  1013 + total: res?.data?.total || 0,
  1014 + };
  1015 + }
  1016 + }}
  1017 + columnsState={{
  1018 + persistenceKey: 'pro-table-singe-demos',
  1019 + persistenceType: 'localStorage',
  1020 + defaultValue: {
  1021 + option: { fixed: 'right', disable: true },
  1022 + },
  1023 + onChange(value) {
  1024 + console.log('value: ', value);
  1025 + },
  1026 + }}
  1027 + rowKey="id"
  1028 + search={{
  1029 + labelWidth: 'auto',
  1030 + }}
  1031 + options={{
  1032 + setting: {
  1033 + listsHeight: 400,
  1034 + },
  1035 + }}
  1036 + form={{}}
  1037 + dateFormatter="string"
  1038 + headerTitle="发票列表"
  1039 + scroll={{ x: 1400, y: 360 }}
  1040 + toolBarRender={() => [
  1041 + <AddInvoiceDrawerForm
  1042 + onClose={() => {
  1043 + invoiceActionRef.current?.reload();
  1044 + bankActionRef.current?.reload();
  1045 + }}
  1046 + key="add"
  1047 + ></AddInvoiceDrawerForm>,
  1048 + ]}
  1049 + />
  1050 + ),
  1051 + },
  1052 + {
  1053 + key: 4,
  1054 + label: '银行流水',
  1055 + children: (
  1056 + <ProTable
  1057 + columns={bankStatemetColumnsInit()}
  1058 + actionRef={bankActionRef}
  1059 + cardBordered
  1060 + pagination={{
  1061 + pageSize: 10,
  1062 + }}
  1063 + editable={{
  1064 + type: 'multiple',
  1065 + onSave: async (rowKey, data) => {
  1066 + await postServiceBankStatementEditBankStatement({ data: data });
  1067 + },
  1068 + actionRender: (row, config, defaultDom) => [
  1069 + defaultDom.save,
  1070 + defaultDom.cancel,
  1071 + ],
  1072 + }}
  1073 + request={async (params) => {
  1074 + const res = await postServiceBankStatementQueryBankStatement({
  1075 + data: { ...params },
  1076 + });
  1077 + if (res) {
  1078 + return {
  1079 + data: res?.data?.data || [],
  1080 + total: res?.data?.total || 0,
  1081 + };
  1082 + }
  1083 + }}
  1084 + columnsState={{
  1085 + persistenceKey: 'pro-table-singe-demos',
  1086 + persistenceType: 'localStorage',
  1087 + defaultValue: {
  1088 + option: { fixed: 'right', disable: true },
  1089 + },
  1090 + onChange(value) {
  1091 + console.log('value: ', value);
  1092 + },
  1093 + }}
  1094 + rowKey="id"
  1095 + search={{
  1096 + labelWidth: 'auto',
  1097 + }}
  1098 + options={{
  1099 + setting: {
  1100 + listsHeight: 400,
  1101 + },
  1102 + }}
  1103 + form={{}}
  1104 + dateFormatter="string"
  1105 + headerTitle="银行流水列表"
  1106 + scroll={{ x: 1400, y: 360 }}
  1107 + toolBarRender={() => [
  1108 + <Button
  1109 + key="button"
  1110 + icon={<PlusOutlined />}
  1111 + onClick={() => {
  1112 + setBankImportModalVisible(true);
  1113 + }}
  1114 + type="primary"
  1115 + >
  1116 + 导入
  1117 + </Button>,
  1118 + ]}
  1119 + />
  1120 + ),
  1121 + },
  1122 + ];
  1123 + return (
  1124 + <div className="invoice-index">
  1125 + <Tabs
  1126 + defaultActiveKey="1"
  1127 + items={tabsItems}
  1128 + onChange={(value) => {
  1129 + if (value === 1) {
  1130 + invoiceActionRef.current?.reload();
  1131 + } else {
  1132 + bankActionRef.current?.reload();
  1133 + }
  1134 + }}
  1135 + />
  1136 +
  1137 + {bankImportModalVisible ? (
  1138 + <BankImportModal
  1139 + setVisible={setBankImportModalVisible}
  1140 + onClose={() => {
  1141 + setBankImportModalVisible(false);
  1142 + invoiceActionRef.current?.reload();
  1143 + bankActionRef.current?.reload();
  1144 + }}
  1145 + ></BankImportModal>
  1146 + ) : (
  1147 + ''
  1148 + )}
  1149 +
  1150 + {invoiceVerificationVisible ? (
  1151 + <InvoiceVerificationModal
  1152 + setVisible={setInvoiceVerificationVisible}
  1153 + invoiceId={invoiceId}
  1154 + onClose={() => {
  1155 + invoiceActionRef.current?.reload();
  1156 + bankActionRef.current?.reload();
  1157 + }}
  1158 + ></InvoiceVerificationModal>
  1159 + ) : (
  1160 + ''
  1161 + )}
  1162 + {invoiceRecordDetailVisible ? (
  1163 + <InvoiceRecordDetailModal
  1164 + key="detail"
  1165 + id={invoiceRecord.id}
  1166 + setVisible={setInvoiceRecordDetailVisible}
  1167 + />
  1168 + ) : (
  1169 + ''
  1170 + )}
  1171 + {contextHolder}
  1172 + </div>
  1173 + );
  1174 +};
  1175 +
  1176 +export default InvoiceRecord;
src/pages/Invoice/components/Invoice.tsx
@@ -155,10 +155,7 @@ export default ({ data }) =&gt; { @@ -155,10 +155,7 @@ export default ({ data }) =&gt; {
155 </Col> 155 </Col>
156 <Col className="title col_18 no-border"> 156 <Col className="title col_18 no-border">
157 电子发票( 157 电子发票(
158 - {data.type === 'SPECIAL_TICKET'  
159 - ? '增值税专用发票'  
160 - : '增值税普通发票'}  
161 - ) 158 + {data.type === 'SPECIAL_TICKET' ? '增值税专用发票' : '普通发票'})
162 </Col> 159 </Col>
163 <UnderLine className="UnderLine"> 160 <UnderLine className="UnderLine">
164 <div></div> 161 <div></div>
@@ -198,13 +195,13 @@ export default ({ data }) =&gt; { @@ -198,13 +195,13 @@ export default ({ data }) =&gt; {
198 <Col className=""> 195 <Col className="">
199 <div className="text-center">单位</div> 196 <div className="text-center">单位</div>
200 </Col> 197 </Col>
201 - <Col className=""> 198 + <Col className="col_2">
202 <div className="text-center">数量</div> 199 <div className="text-center">数量</div>
203 </Col> 200 </Col>
204 <Col className="col_2"> 201 <Col className="col_2">
205 <div className="text-center">单价</div> 202 <div className="text-center">单价</div>
206 </Col> 203 </Col>
207 - <Col className="col_3"> 204 + <Col className="col_2">
208 <div className="text-center">金额</div> 205 <div className="text-center">金额</div>
209 </Col> 206 </Col>
210 <Col className=""> 207 <Col className="">
@@ -242,22 +239,22 @@ export default ({ data }) =&gt; { @@ -242,22 +239,22 @@ export default ({ data }) =&gt; {
242 > 239 >
243 <div className="text-center">{specification}</div> 240 <div className="text-center">{specification}</div>
244 </Col> 241 </Col>
245 - <Col className="col_4 transparent-border" key={'unit'}> 242 + <Col className=" transparent-border" key={'unit'}>
246 <div className="text-center">{unit}</div> 243 <div className="text-center">{unit}</div>
247 </Col> 244 </Col>
248 - <Col className="col_4 transparent-border" key={'quantity'}> 245 + <Col className="col_2 transparent-border" key={'quantity'}>
249 <div className="text-center">{quantity}</div> 246 <div className="text-center">{quantity}</div>
250 </Col> 247 </Col>
251 <Col className="col_2 transparent-border" key={'price'}> 248 <Col className="col_2 transparent-border" key={'price'}>
252 <div className="text-center">{price}</div> 249 <div className="text-center">{price}</div>
253 </Col> 250 </Col>
254 <Col 251 <Col
255 - className="col_3 transparent-border" 252 + className="col_2 transparent-border"
256 key={'totalPrice'} 253 key={'totalPrice'}
257 > 254 >
258 <div className="text-center">{totalPrice}</div> 255 <div className="text-center">{totalPrice}</div>
259 </Col> 256 </Col>
260 - <Col className="col_9 transparent-border" key={'taxRate'}> 257 + <Col className=" transparent-border" key={'taxRate'}>
261 <div className="text-center">{taxRate}</div> 258 <div className="text-center">{taxRate}</div>
262 </Col> 259 </Col>
263 <Col className="col_2 transparent-border" key={'taxPrice'}> 260 <Col className="col_2 transparent-border" key={'taxPrice'}>
src/pages/Invoice/components/InvoiceModal.tsx
@@ -36,6 +36,7 @@ export default ({ recordId, getRecord, button }) =&gt; { @@ -36,6 +36,7 @@ export default ({ recordId, getRecord, button }) =&gt; {
36 width={1200} 36 width={1200}
37 form={form} 37 form={form}
38 autoFocusFirstInput 38 autoFocusFirstInput
  39 + submitter={false}
39 modalProps={{ 40 modalProps={{
40 destroyOnClose: true, 41 destroyOnClose: true,
41 }} 42 }}
src/pages/Invoice/components/InvoiceRecordDetailModal.tsx
@@ -12,7 +12,6 @@ import { @@ -12,7 +12,6 @@ import {
12 ModalForm, 12 ModalForm,
13 ProCard, 13 ProCard,
14 ProForm, 14 ProForm,
15 - ProFormFieldSet,  
16 ProFormInstance, 15 ProFormInstance,
17 ProFormList, 16 ProFormList,
18 ProFormSelect, 17 ProFormSelect,
@@ -83,16 +82,15 @@ export default ({ id, setVisible }) =&gt; { @@ -83,16 +82,15 @@ export default ({ id, setVisible }) =&gt; {
83 const data = ret.data; 82 const data = ret.data;
84 const orderIdMap = data.orderIdMap; 83 const orderIdMap = data.orderIdMap;
85 const orderIdList = []; 84 const orderIdList = [];
86 - //遍历orderIdMap属性。  
87 - for (const key in orderIdMap) {  
88 - if (key in Object.getOwnPropertyNames(orderIdMap)) {  
89 - const orderId = {  
90 - mainId: key,  
91 - subIds: orderIdMap[key],  
92 - };  
93 - orderIdList.push(orderId);  
94 - }  
95 - } 85 +
  86 + // 使用Object.entries()遍历属性
  87 + Object.entries(orderIdMap).forEach(([key, value]) => {
  88 + const orderId = {
  89 + mainId: key,
  90 + subIds: value,
  91 + };
  92 + orderIdList.push(orderId);
  93 + });
96 return { 94 return {
97 ...data, 95 ...data,
98 orderIdList: orderIdList, 96 orderIdList: orderIdList,
@@ -248,53 +246,45 @@ export default ({ id, setVisible }) =&gt; { @@ -248,53 +246,45 @@ export default ({ id, setVisible }) =&gt; {
248 { required: true, message: 'Please select your country!' }, 246 { required: true, message: 'Please select your country!' },
249 ]} 247 ]}
250 /> 248 />
251 - <ProFormFieldSet  
252 - name="list" 249 + <ProFormList
253 label="订单号" 250 label="订单号"
254 - transform={(value: any) => ({  
255 - list: value,  
256 - startTime: value[0],  
257 - endTime: value[1],  
258 - })} 251 + name="orderIdList"
  252 + creatorButtonProps={false}
  253 + itemRender={({}, { record }) => {
  254 + console.log('record' + JSON.stringify(record));
  255 + return (
  256 + <Space>
  257 + <Button
  258 + key={record.mainId}
  259 + className="pl-1 pr-0"
  260 + type="link"
  261 + target="_blank"
  262 + href={'/order?id=' + record.mainId}
  263 + >
  264 + {record.mainId}
  265 + </Button>
  266 + (
  267 + {record.subIds.map((item) => {
  268 + return (
  269 + <Button
  270 + key={item}
  271 + className="pl-1 pr-0"
  272 + type="link"
  273 + target="_blank"
  274 + href={'/order?subOrderId=' + item}
  275 + >
  276 + {item}
  277 + </Button>
  278 + );
  279 + })}
  280 + )
  281 + <Divider type="vertical" />
  282 + </Space>
  283 + );
  284 + }}
259 > 285 >
260 - <ProFormList  
261 - name="orderIdList"  
262 - creatorButtonProps={false}  
263 - itemRender={({}, { record }) => {  
264 - return (  
265 - <Space>  
266 - <Button  
267 - key={record.mainId}  
268 - className="pl-1 pr-0"  
269 - type="link"  
270 - target="_blank"  
271 - href={'/order?id=' + record.mainId}  
272 - >  
273 - {record.mainId}  
274 - </Button>  
275 - (  
276 - {record.subIds.map((item) => {  
277 - return (  
278 - <Button  
279 - key={item}  
280 - className="pl-1 pr-0"  
281 - type="link"  
282 - target="_blank"  
283 - href={'/order?subOrderId=' + item}  
284 - >  
285 - {item}  
286 - </Button>  
287 - );  
288 - })}  
289 - )  
290 - <Divider type="vertical" />  
291 - </Space>  
292 - );  
293 - }}  
294 - >  
295 - <ProFormText allowClear={false} width="xs" name={['name']} />  
296 - </ProFormList>  
297 - </ProFormFieldSet> 286 + <ProFormText allowClear={false} width="xs" name={['name']} />
  287 + </ProFormList>
298 </ProForm.Group> 288 </ProForm.Group>
299 </ProCard> 289 </ProCard>
300 <hr /> 290 <hr />
src/pages/Invoice/components/InvoicingModal.tsx
1 import { RESPONSE_CODE } from '@/constants/enum'; 1 import { RESPONSE_CODE } from '@/constants/enum';
2 -import {  
3 - postServiceInvoiceGetInvoicingAccount,  
4 - postServiceInvoiceInvoicing,  
5 -} from '@/services';  
6 -import { ModalForm, ProFormSelect } from '@ant-design/pro-components'; 2 +import { postServiceInvoiceInvoicing } from '@/services';
  3 +import { ModalForm } from '@ant-design/pro-components';
7 import { Button, Form, message } from 'antd'; 4 import { Button, Form, message } from 'antd';
8 5
9 export default ({ selectedRowKeys, reloadRecordTable }) => { 6 export default ({ selectedRowKeys, reloadRecordTable }) => {
@@ -41,7 +38,7 @@ export default ({ selectedRowKeys, reloadRecordTable }) =&gt; { @@ -41,7 +38,7 @@ export default ({ selectedRowKeys, reloadRecordTable }) =&gt; {
41 return true; 38 return true;
42 }} 39 }}
43 > 40 >
44 - <ProFormSelect 41 + {/*<ProFormSelect
45 name="invoicingAccount" 42 name="invoicingAccount"
46 label="开票账号" 43 label="开票账号"
47 request={async () => { 44 request={async () => {
@@ -55,7 +52,7 @@ export default ({ selectedRowKeys, reloadRecordTable }) =&gt; { @@ -55,7 +52,7 @@ export default ({ selectedRowKeys, reloadRecordTable }) =&gt; {
55 }} 52 }}
56 placeholder="请选择开票账号" 53 placeholder="请选择开票账号"
57 rules={[{ required: true, message: '请选择开票账号!' }]} 54 rules={[{ required: true, message: '请选择开票账号!' }]}
58 - /> 55 + />*/}
59 </ModalForm> 56 </ModalForm>
60 ); 57 );
61 }; 58 };
src/pages/Invoice/components/ManualInvoicingModal.tsx
@@ -6,11 +6,7 @@ import { @@ -6,11 +6,7 @@ import {
6 } from '@/services'; 6 } from '@/services';
7 import { 7 import {
8 ModalForm, 8 ModalForm,
9 - ProCard,  
10 ProFormDatePicker, 9 ProFormDatePicker,
11 - ProFormDigit,  
12 - ProFormList,  
13 - ProFormMoney,  
14 ProFormText, 10 ProFormText,
15 } from '@ant-design/pro-components'; 11 } from '@ant-design/pro-components';
16 import { Col, Form, Row, message } from 'antd'; 12 import { Col, Form, Row, message } from 'antd';
@@ -52,12 +48,12 @@ export default ({ record }) =&gt; { @@ -52,12 +48,12 @@ export default ({ record }) =&gt; {
52 } 48 }
53 }} 49 }}
54 > 50 >
55 - <ProFormText 51 + {/*<ProFormText
56 rules={[{ required: true, message: '此项为必填项' }]} 52 rules={[{ required: true, message: '此项为必填项' }]}
57 width={'md'} 53 width={'md'}
58 name="invoicingPerson" 54 name="invoicingPerson"
59 label="开票人" 55 label="开票人"
60 - /> 56 + />*/}
61 <ProFormText 57 <ProFormText
62 rules={[{ required: true, message: '此项为必填项' }]} 58 rules={[{ required: true, message: '此项为必填项' }]}
63 width={'md'} 59 width={'md'}
@@ -102,7 +98,7 @@ export default ({ record }) =&gt; { @@ -102,7 +98,7 @@ export default ({ record }) =&gt; {
102 ></UploadC> 98 ></UploadC>
103 </Col> 99 </Col>
104 </Row> 100 </Row>
105 - <ProFormList 101 + {/*<ProFormList
106 name="invoiceDetailDtoList" 102 name="invoiceDetailDtoList"
107 label="明细" 103 label="明细"
108 creatorButtonProps={false} 104 creatorButtonProps={false}
@@ -128,7 +124,7 @@ export default ({ record }) =&gt; { @@ -128,7 +124,7 @@ export default ({ record }) =&gt; {
128 /> 124 />
129 <ProFormDigit label="税率" name="taxRate" min={0} max={100} /> 125 <ProFormDigit label="税率" name="taxRate" min={0} max={100} />
130 <ProFormMoney label="税额" name="taxPrice" locale="zh-CN" min={0} /> 126 <ProFormMoney label="税额" name="taxPrice" locale="zh-CN" min={0} />
131 - </ProFormList> 127 + </ProFormList>*/}
132 </ModalForm> 128 </ModalForm>
133 ); 129 );
134 }; 130 };
src/pages/Invoice/index.tsx
@@ -298,7 +298,7 @@ const InvoicePage = () =&gt; { @@ -298,7 +298,7 @@ const InvoicePage = () =&gt; {
298 { 298 {
299 title: '申请开票时间', 299 title: '申请开票时间',
300 dataIndex: 'createTime', 300 dataIndex: 'createTime',
301 - valueType: 'dateRange', 301 + valueType: 'dateTimeRange',
302 width: 200, 302 width: 200,
303 hideInTable: true, 303 hideInTable: true,
304 search: { 304 search: {
@@ -319,24 +319,32 @@ const InvoicePage = () =&gt; { @@ -319,24 +319,32 @@ const InvoicePage = () =&gt; {
319 render: (text, record) => { 319 render: (text, record) => {
320 return [ 320 return [
321 /*<InvoiceRecordDetailModal 321 /*<InvoiceRecordDetailModal
322 - key="detail"  
323 - id={record.id}  
324 - subOrderIds={record.subOrderIds}  
325 - onClose={()=>{  
326 - waitDealrecordActionRef.current?.reload();  
327 - }  
328 - }  
329 - />*/  
330 - <a  
331 - key="detail"  
332 - onClick={() => {  
333 - setInvoiceRecordDetailVisible(true);  
334 - setInvoiceRecord(record);  
335 - }}  
336 - >  
337 - 详情  
338 - </a>,  
339 - <InvoiceModal key="invoiceModal" recordId={record.id} />, 322 + key="detail"
  323 + id={record.id}
  324 + subOrderIds={record.subOrderIds}
  325 + onClose={()=>{
  326 + waitDealrecordActionRef.current?.reload();
  327 + }
  328 + }
  329 + />*/
  330 + <>
  331 + {record.paths.includes('DETAIL') && (
  332 + <a
  333 + key="detail"
  334 + onClick={() => {
  335 + setInvoiceRecordDetailVisible(true);
  336 + setInvoiceRecord(record);
  337 + }}
  338 + >
  339 + 详情
  340 + </a>
  341 + )}
  342 + </>,
  343 + <>
  344 + {record.paths.includes('PREVIEW') && (
  345 + <InvoiceModal key="invoiceModal" recordId={record.id} />
  346 + )}
  347 + </>,
340 <> 348 <>
341 {record.paths.includes('INVOICING') && ( 349 {record.paths.includes('INVOICING') && (
342 <ManualInvoicingModal 350 <ManualInvoicingModal
@@ -371,8 +379,8 @@ const InvoicePage = () =&gt; { @@ -371,8 +379,8 @@ const InvoicePage = () =&gt; {
371 }, 379 },
372 { 380 {
373 title: '开票日期', 381 title: '开票日期',
374 - dataIndex: 'invoicingTime',  
375 - valueType: 'dateTime', 382 + dataIndex: 'invoicingDate',
  383 + valueType: 'date',
376 hideInSearch: true, 384 hideInSearch: true,
377 ellipsis: true, 385 ellipsis: true,
378 }, 386 },
@@ -491,15 +499,15 @@ const InvoicePage = () =&gt; { @@ -491,15 +499,15 @@ const InvoicePage = () =&gt; {
491 }, 499 },
492 { 500 {
493 title: '开票日期', 501 title: '开票日期',
494 - dataIndex: 'invoicingTime', 502 + dataIndex: 'invoicingDate',
495 valueType: 'dateRange', 503 valueType: 'dateRange',
496 hideInTable: true, 504 hideInTable: true,
497 search: { 505 search: {
498 transform: (value) => { 506 transform: (value) => {
499 if (value) { 507 if (value) {
500 return { 508 return {
501 - invoicingTimeGe: value[0],  
502 - invoicingTimeLe: value[1], 509 + invoicingDateGe: value[0],
  510 + invoicingDateLe: value[1],
503 }; 511 };
504 } 512 }
505 }, 513 },
@@ -519,28 +527,29 @@ const InvoicePage = () =&gt; { @@ -519,28 +527,29 @@ const InvoicePage = () =&gt; {
519 valueType: 'option', 527 valueType: 'option',
520 key: 'option', 528 key: 'option',
521 render: (text, record) => [ 529 render: (text, record) => [
522 - <a  
523 - key="detail"  
524 - onClick={() => {  
525 - setInvoiceRecordDetailVisible(true);  
526 - setInvoiceRecord(record);  
527 - }}  
528 - >  
529 - 详情  
530 - </a>,  
531 <> 530 <>
532 - {record.status === 'SUCCESS' && (  
533 - <>  
534 - {record.status === 'SUCCESS' && (  
535 - <a href={record.invoiceAddress} download>  
536 - 下载发票  
537 - </a>  
538 - )}  
539 - </> 531 + {record.status === 'SUCCESS' && record.paths.includes('DETAIL') && (
  532 + <a
  533 + key="detail"
  534 + onClick={() => {
  535 + setInvoiceRecordDetailVisible(true);
  536 + setInvoiceRecord(record);
  537 + }}
  538 + >
  539 + 详情
  540 + </a>
540 )} 541 )}
541 </>, 542 </>,
542 <> 543 <>
543 - {record.status === 'FAIL' && ( 544 + {record.status === 'SUCCESS' &&
  545 + record.paths.includes('DOWNLOAD_INVOICE') && (
  546 + <a href={record.invoiceAddress} download>
  547 + 下载发票
  548 + </a>
  549 + )}
  550 + </>,
  551 + <>
  552 + {record.status === 'FAIL' && record.paths.includes('RETRY') && (
544 <ModalForm 553 <ModalForm
545 title="提示" 554 title="提示"
546 trigger={ 555 trigger={
@@ -831,7 +840,8 @@ const InvoicePage = () =&gt; { @@ -831,7 +840,8 @@ const InvoicePage = () =&gt; {
831 actionRef={waitDealrecordActionRef} 840 actionRef={waitDealrecordActionRef}
832 cardBordered 841 cardBordered
833 pagination={{ 842 pagination={{
834 - pageSize: 10, 843 + showSizeChanger: true, // 显示可以选择每页显示条数的下拉菜单
  844 + pageSizeOptions: ['10', '20', '50', '100'], // 设置可以选择的每页显示条数选项
835 }} 845 }}
836 rowSelection={{ 846 rowSelection={{
837 selections: [Table.SELECTION_ALL, Table.SELECTION_INVERT], 847 selections: [Table.SELECTION_ALL, Table.SELECTION_INVERT],
@@ -904,7 +914,8 @@ const InvoicePage = () =&gt; { @@ -904,7 +914,8 @@ const InvoicePage = () =&gt; {
904 actionRef={processedRecordRef} 914 actionRef={processedRecordRef}
905 cardBordered 915 cardBordered
906 pagination={{ 916 pagination={{
907 - pageSize: 10, 917 + showSizeChanger: true, // 显示可以选择每页显示条数的下拉菜单
  918 + pageSizeOptions: ['10', '20', '50', '100'], // 设置可以选择的每页显示条数选项
908 }} 919 }}
909 editable={{ 920 editable={{
910 type: 'multiple', 921 type: 'multiple',
src/pages/Order/components/InvoicingDrawerForm.tsx
@@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
2 import InvoiceModal from '@/pages/Invoice/components/InvoiceModal'; 2 import InvoiceModal from '@/pages/Invoice/components/InvoiceModal';
3 import { 3 import {
4 postServiceConstGetPayeeEnum, 4 postServiceConstGetPayeeEnum,
  5 + postServiceConstInitInvoiceDetailNames,
5 postServiceConstInvoiceType, 6 postServiceConstInvoiceType,
6 postServiceConstInvoicingType, 7 postServiceConstInvoicingType,
7 postServiceConstListInvoiceDetailNames, 8 postServiceConstListInvoiceDetailNames,
@@ -15,33 +16,91 @@ import { @@ -15,33 +16,91 @@ import {
15 ProCard, 16 ProCard,
16 ProFormDigit, 17 ProFormDigit,
17 ProFormGroup, 18 ProFormGroup,
  19 + ProFormInstance,
18 ProFormList, 20 ProFormList,
19 ProFormMoney, 21 ProFormMoney,
20 ProFormSelect, 22 ProFormSelect,
21 ProFormText, 23 ProFormText,
22 ProFormTextArea, 24 ProFormTextArea,
23 } from '@ant-design/pro-components'; 25 } from '@ant-design/pro-components';
24 -import { Button, Divider, Form } from 'antd';  
25 -import { useEffect } from 'react'; 26 +import { Button, Divider, Form, Space, Tooltip, message } from 'antd';
  27 +import { useEffect, useRef, useState } from 'react';
26 28
27 export default ({ dataList, setVisible, onClose }) => { 29 export default ({ dataList, setVisible, onClose }) => {
28 // let subOrderIds = dataList?.map((item) => { 30 // let subOrderIds = dataList?.map((item) => {
29 // return item.id; 31 // return item.id;
30 - // }); 32 + // })
31 const [form] = Form.useForm(); 33 const [form] = Form.useForm();
  34 + const [projectOptions] = useState();
  35 + const [dataListCopy] = useState(dataList);
  36 + const formRef = useRef<ProFormInstance>();
  37 + useEffect(() => {
  38 + const initOptions = async () => {
  39 + const res = await postServiceConstInitInvoiceDetailNames({
  40 + data: dataListCopy.map((item) => {
  41 + return item.productName;
  42 + }),
  43 + });
  44 + const options = res.data;
  45 + const datas = dataListCopy.map((item) => {
  46 + return {
  47 + ...item,
  48 + projectName: options[item.productName],
  49 + };
  50 + });
  51 + const initialValue = datas.map((item) => {
  52 + return {
  53 + productName: item.productName,
  54 + projectName: item.projectName,
  55 + subOrderId: item.id,
  56 + specification: item.parameters,
  57 + unit: item.unit,
  58 + quantity: item.quantity,
  59 + price: item.productPrice,
  60 + totalPrice: item.subOrderPayment,
  61 + };
  62 + });
  63 + form.setFieldValue('invoiceDetails', initialValue);
  64 + };
  65 + initOptions();
  66 + }, []);
  67 +
  68 + useEffect(() => {}, [projectOptions]);
  69 +
  70 + function copyToClipboard(text: string) {
  71 + // 创建一个临时的textarea元素
  72 + const textarea = document.createElement('textarea');
  73 + textarea.value = text;
  74 +
  75 + // 将textarea元素添加到DOM中
  76 + document.body.appendChild(textarea);
  77 +
  78 + // 选中textarea中的文本
  79 + textarea.select();
  80 +
  81 + try {
  82 + // 尝试执行复制命令
  83 + document.execCommand('copy');
  84 + return true;
  85 + } catch (err) {
  86 + return false;
  87 + } finally {
  88 + // 移除临时的textarea元素
  89 + document.body.removeChild(textarea);
  90 + }
  91 + }
  92 +
32 useEffect(() => {}, []); 93 useEffect(() => {}, []);
33 return ( 94 return (
34 <DrawerForm 95 <DrawerForm
35 open 96 open
36 - title="合并开票" 97 + title="申请开票"
37 resize={{ 98 resize={{
38 - onResize() {  
39 - console.log('resize!');  
40 - },  
41 maxWidth: window.innerWidth * 0.8, 99 maxWidth: window.innerWidth * 0.8,
42 minWidth: 500, 100 minWidth: 500,
43 }} 101 }}
44 form={form} 102 form={form}
  103 + formRef={formRef}
45 autoFocusFirstInput 104 autoFocusFirstInput
46 drawerProps={{ 105 drawerProps={{
47 destroyOnClose: true, 106 destroyOnClose: true,
@@ -53,12 +112,11 @@ export default ({ dataList, setVisible, onClose }) =&gt; { @@ -53,12 +112,11 @@ export default ({ dataList, setVisible, onClose }) =&gt; {
53 key={'invoicePreview'} 112 key={'invoicePreview'}
54 button={<Button type="primary"> 发票预览 </Button>} 113 button={<Button type="primary"> 发票预览 </Button>}
55 getRecord={() => { 114 getRecord={() => {
56 - const totalPrice = dataList.reduce(  
57 - (accumulator, currentValue) => {  
58 - return accumulator + currentValue.subOrderPayment;  
59 - },  
60 - 0,  
61 - ); 115 + const totalPrice = form
  116 + .getFieldValue('invoiceDetails')
  117 + .reduce((accumulator, currentValue) => {
  118 + return accumulator + currentValue.totalPrice;
  119 + }, 0);
62 return { 120 return {
63 ...form.getFieldsValue(), 121 ...form.getFieldsValue(),
64 totalPrice: totalPrice, 122 totalPrice: totalPrice,
@@ -75,7 +133,7 @@ export default ({ dataList, setVisible, onClose }) =&gt; { @@ -75,7 +133,7 @@ export default ({ dataList, setVisible, onClose }) =&gt; {
75 postServiceInvoiceApplyInvoice({ 133 postServiceInvoiceApplyInvoice({
76 data: { 134 data: {
77 ...values, 135 ...values,
78 - subOrderIds: dataList.map((item) => { 136 + subOrderIds: dataListCopy.map((item) => {
79 return item.id; 137 return item.id;
80 }), 138 }),
81 }, 139 },
@@ -90,7 +148,7 @@ export default ({ dataList, setVisible, onClose }) =&gt; { @@ -90,7 +148,7 @@ export default ({ dataList, setVisible, onClose }) =&gt; {
90 name="subOrderIdObjs" 148 name="subOrderIdObjs"
91 readonly={true} 149 readonly={true}
92 label="开票订单" 150 label="开票订单"
93 - initialValue={dataList.map((item) => { 151 + initialValue={dataListCopy.map((item) => {
94 return { 152 return {
95 value: item.id, 153 value: item.id,
96 }; 154 };
@@ -181,7 +239,7 @@ export default ({ dataList, setVisible, onClose }) =&gt; { @@ -181,7 +239,7 @@ export default ({ dataList, setVisible, onClose }) =&gt; {
181 name="price" 239 name="price"
182 locale="zh-CN" 240 locale="zh-CN"
183 rules={[{ required: true, message: '请填写开票金额!' }]} 241 rules={[{ required: true, message: '请填写开票金额!' }]}
184 - initialValue={dataList.reduce((accumulator, currentValue) => { 242 + initialValue={dataListCopy.reduce((accumulator, currentValue) => {
185 return accumulator + currentValue.subOrderPayment; 243 return accumulator + currentValue.subOrderPayment;
186 }, 0)} 244 }, 0)}
187 /> 245 />
@@ -257,23 +315,24 @@ export default ({ dataList, setVisible, onClose }) =&gt; { @@ -257,23 +315,24 @@ export default ({ dataList, setVisible, onClose }) =&gt; {
257 <ProFormList 315 <ProFormList
258 name="invoiceDetails" 316 name="invoiceDetails"
259 label="开票明细" 317 label="开票明细"
260 - initialValue={dataList.map((item) => {  
261 - console.log('item:' + JSON.stringify(item));  
262 - return {  
263 - subOrderId: item.id,  
264 - /*projectName: item.productName,*/  
265 - specification: item.parameters,  
266 - unit: item.unit,  
267 - quantity: item.quantity,  
268 - price: item.productPrice,  
269 - totalPrice: item.subOrderPayment,  
270 - };  
271 - })} 318 + /*initialValue={dataListCopy.map((item) => {
  319 + console.log("item"+JSON.stringify(item));
  320 + return {
  321 + productName: item.productName,
  322 + projectName: item.projectName,
  323 + subOrderId: item.id,
  324 + /!*projectName: item.productName,*!/
  325 + specification: item.parameters,
  326 + unit: item.unit,
  327 + quantity: item.quantity,
  328 + price: item.productPrice,
  329 + totalPrice: item.subOrderPayment,
  330 + };
  331 + })}*/
272 rules={[ 332 rules={[
273 { 333 {
274 required: true, 334 required: true,
275 validator: async (_, value) => { 335 validator: async (_, value) => {
276 - console.log(value);  
277 if (value && value.length > 0) { 336 if (value && value.length > 0) {
278 return; 337 return;
279 } 338 }
@@ -282,7 +341,6 @@ export default ({ dataList, setVisible, onClose }) =&gt; { @@ -282,7 +341,6 @@ export default ({ dataList, setVisible, onClose }) =&gt; {
282 }, 341 },
283 ]} 342 ]}
284 itemRender={(doms, listMeta) => { 343 itemRender={(doms, listMeta) => {
285 - console.log(listMeta);  
286 return ( 344 return (
287 <ProCard 345 <ProCard
288 bordered 346 bordered
@@ -292,12 +350,23 @@ export default ({ dataList, setVisible, onClose }) =&gt; { @@ -292,12 +350,23 @@ export default ({ dataList, setVisible, onClose }) =&gt; {
292 marginBlockEnd: 8, 350 marginBlockEnd: 8,
293 }} 351 }}
294 > 352 >
295 - <ProFormText  
296 - key={'subOrderId' + listMeta.index}  
297 - name="subOrderId"  
298 - label="子订单id"  
299 - hidden  
300 - /> 353 + <Tooltip title="点击复制商品名称">
  354 + <Space
  355 + className="hover:cursor-pointer"
  356 + style={{
  357 + margin: 16,
  358 + marginTop: 4,
  359 + marginLeft: 0,
  360 + fontSize: 15,
  361 + }}
  362 + onClick={() => {
  363 + copyToClipboard(listMeta.record.productName);
  364 + message.info('商品名称复制成功!');
  365 + }}
  366 + >
  367 + 商品名称:{listMeta.record.productName}
  368 + </Space>
  369 + </Tooltip>
301 <ProFormSelect 370 <ProFormSelect
302 key={'projectName' + listMeta.index} 371 key={'projectName' + listMeta.index}
303 width="md" 372 width="md"
@@ -343,12 +412,14 @@ export default ({ dataList, setVisible, onClose }) =&gt; { @@ -343,12 +412,14 @@ export default ({ dataList, setVisible, onClose }) =&gt; {
343 option.productAndServiceCatagoryAbbreviation + 412 option.productAndServiceCatagoryAbbreviation +
344 '*' + 413 '*' +
345 option.name; 414 option.name;
346 - currentData.specification = option.specification;  
347 - currentData.unit = option.unit; 415 + console.log(
  416 + 'copyList' + JSON.stringify(listMeta.record.projectName),
  417 + );
348 form.setFieldValue('invoiceDetails', copyList); 418 form.setFieldValue('invoiceDetails', copyList);
349 }} 419 }}
350 debounceTime={1000} 420 debounceTime={1000}
351 label="项目名称" 421 label="项目名称"
  422 + initialValue={listMeta.record.projectName}
352 placeholder="请输入名称" 423 placeholder="请输入名称"
353 /> 424 />
354 <ProFormText 425 <ProFormText
@@ -377,8 +448,6 @@ export default ({ dataList, setVisible, onClose }) =&gt; { @@ -377,8 +448,6 @@ export default ({ dataList, setVisible, onClose }) =&gt; {
377 len += 1; // 半角字符 448 len += 1; // 半角字符
378 } 449 }
379 } 450 }
380 - console.log(value);  
381 - console.log(len);  
382 if (len <= 40) { 451 if (len <= 40) {
383 return Promise.resolve(); 452 return Promise.resolve();
384 } 453 }
@@ -400,18 +469,46 @@ export default ({ dataList, setVisible, onClose }) =&gt; { @@ -400,18 +469,46 @@ export default ({ dataList, setVisible, onClose }) =&gt; {
400 key={'quantity' + listMeta.index} 469 key={'quantity' + listMeta.index}
401 label="数量" 470 label="数量"
402 name="quantity" 471 name="quantity"
403 - min={0} 472 + rules={[
  473 + {
  474 + validator: (_, value) => {
  475 + if (value === undefined || value > 0) {
  476 + return Promise.resolve();
  477 + }
  478 + return Promise.reject(new Error('数量必须大于0'));
  479 + },
  480 + },
  481 + ]}
404 /> 482 />
405 <ProFormDigit 483 <ProFormDigit
406 key={'price' + listMeta.index} 484 key={'price' + listMeta.index}
407 label="单价" 485 label="单价"
408 name="price" 486 name="price"
409 - min={0} 487 + rules={[
  488 + {
  489 + validator: (_, value) => {
  490 + if (value === undefined || value > 0) {
  491 + return Promise.resolve();
  492 + }
  493 + return Promise.reject(new Error('单价必须大于0'));
  494 + },
  495 + },
  496 + ]}
410 /> 497 />
411 <ProFormMoney 498 <ProFormMoney
412 key={'totalPrice' + listMeta.index} 499 key={'totalPrice' + listMeta.index}
413 label="金额" 500 label="金额"
414 name="totalPrice" 501 name="totalPrice"
  502 + rules={[
  503 + {
  504 + validator: (_, value) => {
  505 + if (value === undefined || value > 0) {
  506 + return Promise.resolve();
  507 + }
  508 + return Promise.reject(new Error('金额必须大于0'));
  509 + },
  510 + },
  511 + ]}
415 locale="zh-CN" 512 locale="zh-CN"
416 /> 513 />
417 </ProCard> 514 </ProCard>
src/pages/Order/index.tsx
@@ -1283,7 +1283,7 @@ const OrderPage = () =&gt; { @@ -1283,7 +1283,7 @@ const OrderPage = () =&gt; {
1283 </div> 1283 </div>
1284 </Flex> 1284 </Flex>
1285 <Flex className="w-[18%]" wrap="wrap" gap="small"> 1285 <Flex className="w-[18%]" wrap="wrap" gap="small">
1286 - {optRecord.subPath?.includes('postAudit') ? ( 1286 + {optRecord.paths?.includes('postAudit') ? (
1287 <Button 1287 <Button
1288 className="p-0" 1288 className="p-0"
1289 type="link" 1289 type="link"
@@ -1299,7 +1299,7 @@ const OrderPage = () =&gt; { @@ -1299,7 +1299,7 @@ const OrderPage = () =&gt; {
1299 '' 1299 ''
1300 )} 1300 )}
1301 {/* 加急审核 */} 1301 {/* 加急审核 */}
1302 - {optRecord.subPath?.includes('URGENT_INVOICE_AUDITING') ? ( 1302 + {optRecord.paths?.includes('URGENT_INVOICE_AUDITING') ? (
1303 <Button 1303 <Button
1304 className="p-0" 1304 className="p-0"
1305 type="link" 1305 type="link"
@@ -1316,7 +1316,7 @@ const OrderPage = () =&gt; { @@ -1316,7 +1316,7 @@ const OrderPage = () =&gt; {
1316 ) : ( 1316 ) : (
1317 '' 1317 ''
1318 )} 1318 )}
1319 - {optRecord.subPath?.includes('URGENT_INVOICE_AUDITING_old') ? ( 1319 + {optRecord.paths?.includes('URGENT_INVOICE_AUDITING_old') ? (
1320 <Button 1320 <Button
1321 className="p-0" 1321 className="p-0"
1322 type="link" 1322 type="link"
@@ -1333,7 +1333,7 @@ const OrderPage = () =&gt; { @@ -1333,7 +1333,7 @@ const OrderPage = () =&gt; {
1333 ) : ( 1333 ) : (
1334 '' 1334 ''
1335 )} 1335 )}
1336 - {optRecord.subPath?.includes('salesConfirm') && ( 1336 + {optRecord.paths?.includes('salesConfirm') && (
1337 <ButtonConfirm 1337 <ButtonConfirm
1338 className="p-0" 1338 className="p-0"
1339 title="是否确认此商城订单信息无误?确认无误之后订单将进入审核流程。" 1339 title="是否确认此商城订单信息无误?确认无误之后订单将进入审核流程。"
@@ -1352,7 +1352,7 @@ const OrderPage = () =&gt; { @@ -1352,7 +1352,7 @@ const OrderPage = () =&gt; {
1352 }} 1352 }}
1353 /> 1353 />
1354 )} 1354 )}
1355 - {optRecord.subPath?.includes('uploadPaymentReceiptBill') ? ( 1355 + {optRecord.paths?.includes('uploadPaymentReceiptBill') ? (
1356 <Button 1356 <Button
1357 className="p-0" 1357 className="p-0"
1358 type="link" 1358 type="link"
@@ -1366,7 +1366,7 @@ const OrderPage = () =&gt; { @@ -1366,7 +1366,7 @@ const OrderPage = () =&gt; {
1366 ) : ( 1366 ) : (
1367 '' 1367 ''
1368 )} 1368 )}
1369 - {optRecord.subPath?.includes('reissue_old') ? ( 1369 + {optRecord.paths?.includes('reissue_old') ? (
1370 /*optRecord.afterInvoicingStatus==='PARTIAL_INVOICING'|| 1370 /*optRecord.afterInvoicingStatus==='PARTIAL_INVOICING'||
1371 optRecord.afterInvoicingStatus==='COMPLETE_INVOICING'*/ 1371 optRecord.afterInvoicingStatus==='COMPLETE_INVOICING'*/
1372 <Button 1372 <Button
@@ -1382,7 +1382,7 @@ const OrderPage = () =&gt; { @@ -1382,7 +1382,7 @@ const OrderPage = () =&gt; {
1382 ) : ( 1382 ) : (
1383 '' 1383 ''
1384 )} 1384 )}
1385 - {optRecord.subPath?.includes('reissue') ? ( 1385 + {optRecord.paths?.includes('reissue') ? (
1386 /*optRecord.afterInvoicingStatus==='PARTIAL_INVOICING'|| 1386 /*optRecord.afterInvoicingStatus==='PARTIAL_INVOICING'||
1387 optRecord.afterInvoicingStatus==='COMPLETE_INVOICING'*/ 1387 optRecord.afterInvoicingStatus==='COMPLETE_INVOICING'*/
1388 <Button 1388 <Button
@@ -1400,7 +1400,7 @@ const OrderPage = () =&gt; { @@ -1400,7 +1400,7 @@ const OrderPage = () =&gt; {
1400 '' 1400 ''
1401 )} 1401 )}
1402 1402
1403 - {optRecord.subPath?.includes('confirmReissue_old') ? ( 1403 + {optRecord.paths?.includes('confirmReissue_old') ? (
1404 <Button 1404 <Button
1405 className="p-0" 1405 className="p-0"
1406 type="link" 1406 type="link"
@@ -1416,7 +1416,7 @@ const OrderPage = () =&gt; { @@ -1416,7 +1416,7 @@ const OrderPage = () =&gt; {
1416 ) : ( 1416 ) : (
1417 '' 1417 ''
1418 )} 1418 )}
1419 - {optRecord.subPath?.includes('confirmReissue') ? ( 1419 + {optRecord.paths?.includes('confirmReissue') ? (
1420 <Button 1420 <Button
1421 className="p-0" 1421 className="p-0"
1422 type="link" 1422 type="link"
@@ -1433,7 +1433,7 @@ const OrderPage = () =&gt; { @@ -1433,7 +1433,7 @@ const OrderPage = () =&gt; {
1433 '' 1433 ''
1434 )} 1434 )}
1435 1435
1436 - {optRecord.subPath?.includes('leaderAudit') ? ( 1436 + {optRecord.paths?.includes('leaderAudit') ? (
1437 <Button 1437 <Button
1438 className="p-0" 1438 className="p-0"
1439 type="link" 1439 type="link"
@@ -1450,7 +1450,7 @@ const OrderPage = () =&gt; { @@ -1450,7 +1450,7 @@ const OrderPage = () =&gt; {
1450 '' 1450 ''
1451 )} 1451 )}
1452 1452
1453 - {optRecord.subPath?.includes('creditAudit') ? ( 1453 + {optRecord.paths?.includes('creditAudit') ? (
1454 <Button 1454 <Button
1455 className="p-0" 1455 className="p-0"
1456 type="link" 1456 type="link"
@@ -1467,7 +1467,7 @@ const OrderPage = () =&gt; { @@ -1467,7 +1467,7 @@ const OrderPage = () =&gt; {
1467 '' 1467 ''
1468 )} 1468 )}
1469 1469
1470 - {optRecord.subPath?.includes('auditPaymentReceipt') ? ( 1470 + {optRecord.paths?.includes('auditPaymentReceipt') ? (
1471 <Button 1471 <Button
1472 className="p-0" 1472 className="p-0"
1473 type="link" 1473 type="link"
@@ -1483,7 +1483,7 @@ const OrderPage = () =&gt; { @@ -1483,7 +1483,7 @@ const OrderPage = () =&gt; {
1483 '' 1483 ''
1484 )} 1484 )}
1485 1485
1486 - {optRecord.subPath?.includes('modifiedAuditRequest') ? ( 1486 + {optRecord.paths?.includes('modifiedAuditRequest') ? (
1487 <Button 1487 <Button
1488 className="p-0" 1488 className="p-0"
1489 type="link" 1489 type="link"
@@ -1499,7 +1499,7 @@ const OrderPage = () =&gt; { @@ -1499,7 +1499,7 @@ const OrderPage = () =&gt; {
1499 '' 1499 ''
1500 )} 1500 )}
1501 1501
1502 - {optRecord.subPath?.includes('applyModify') ? ( 1502 + {optRecord.paths?.includes('applyModify') ? (
1503 <Button 1503 <Button
1504 className="p-0" 1504 className="p-0"
1505 type="link" 1505 type="link"
@@ -1515,7 +1515,7 @@ const OrderPage = () =&gt; { @@ -1515,7 +1515,7 @@ const OrderPage = () =&gt; {
1515 '' 1515 ''
1516 )} 1516 )}
1517 1517
1518 - {optRecord.subPath?.includes('modifiedLeaderAuditRequest') ? ( 1518 + {optRecord.paths?.includes('modifiedLeaderAuditRequest') ? (
1519 <Button 1519 <Button
1520 className="p-0" 1520 className="p-0"
1521 type="link" 1521 type="link"
@@ -1531,7 +1531,7 @@ const OrderPage = () =&gt; { @@ -1531,7 +1531,7 @@ const OrderPage = () =&gt; {
1531 '' 1531 ''
1532 )} 1532 )}
1533 1533
1534 - {optRecord.subPath?.includes('shippingWarehouseChangeRequest') ? ( 1534 + {optRecord.paths?.includes('shippingWarehouseChangeRequest') ? (
1535 <Button 1535 <Button
1536 className="p-0" 1536 className="p-0"
1537 type="link" 1537 type="link"
@@ -1547,7 +1547,7 @@ const OrderPage = () =&gt; { @@ -1547,7 +1547,7 @@ const OrderPage = () =&gt; {
1547 '' 1547 ''
1548 )} 1548 )}
1549 1549
1550 - {optRecord.subPath?.includes('saleCancelInvoicing_old') ? ( 1550 + {optRecord.paths?.includes('saleCancelInvoicing_old') ? (
1551 <ButtonConfirm 1551 <ButtonConfirm
1552 className="p-0" 1552 className="p-0"
1553 title="确认取消申请开票?" 1553 title="确认取消申请开票?"
@@ -1568,7 +1568,7 @@ const OrderPage = () =&gt; { @@ -1568,7 +1568,7 @@ const OrderPage = () =&gt; {
1568 ) : ( 1568 ) : (
1569 '' 1569 ''
1570 )} 1570 )}
1571 - {optRecord.subPath?.includes('saleCancelInvoicing') ? ( 1571 + {optRecord.paths?.includes('saleCancelInvoicing') ? (
1572 <ButtonConfirm 1572 <ButtonConfirm
1573 className="p-0" 1573 className="p-0"
1574 title="确认取消申请开票?" 1574 title="确认取消申请开票?"
@@ -1589,7 +1589,7 @@ const OrderPage = () =&gt; { @@ -1589,7 +1589,7 @@ const OrderPage = () =&gt; {
1589 ) : ( 1589 ) : (
1590 '' 1590 ''
1591 )} 1591 )}
1592 - {optRecord.subPath?.includes('noNeedInvoicingEdit') ? ( 1592 + {optRecord.paths?.includes('noNeedInvoicingEdit') ? (
1593 <Button 1593 <Button
1594 className="p-0" 1594 className="p-0"
1595 type="link" 1595 type="link"
@@ -1604,7 +1604,7 @@ const OrderPage = () =&gt; { @@ -1604,7 +1604,7 @@ const OrderPage = () =&gt; {
1604 ) : ( 1604 ) : (
1605 '' 1605 ''
1606 )} 1606 )}
1607 - {optRecord.subPath?.includes('sendProduct') ? ( 1607 + {optRecord.paths?.includes('sendProduct') ? (
1608 <Button 1608 <Button
1609 className="p-0" 1609 className="p-0"
1610 type="link" 1610 type="link"
@@ -1621,7 +1621,7 @@ const OrderPage = () =&gt; { @@ -1621,7 +1621,7 @@ const OrderPage = () =&gt; {
1621 '' 1621 ''
1622 )} 1622 )}
1623 1623
1624 - {optRecord.subPath?.includes('supplierSendOrder') ? ( 1624 + {optRecord.paths?.includes('supplierSendOrder') ? (
1625 <Button 1625 <Button
1626 className="p-0" 1626 className="p-0"
1627 type="link" 1627 type="link"
@@ -1639,7 +1639,7 @@ const OrderPage = () =&gt; { @@ -1639,7 +1639,7 @@ const OrderPage = () =&gt; {
1639 '' 1639 ''
1640 )} 1640 )}
1641 1641
1642 - {optRecord.subPath?.includes('procureSend') ? ( 1642 + {optRecord.paths?.includes('procureSend') ? (
1643 <Button 1643 <Button
1644 className="p-0" 1644 className="p-0"
1645 type="link" 1645 type="link"
@@ -1656,7 +1656,7 @@ const OrderPage = () =&gt; { @@ -1656,7 +1656,7 @@ const OrderPage = () =&gt; {
1656 '' 1656 ''
1657 )} 1657 )}
1658 1658
1659 - {optRecord.subPath?.includes('editProductionTime') ? ( 1659 + {optRecord.paths?.includes('editProductionTime') ? (
1660 <Button 1660 <Button
1661 className="p-0" 1661 className="p-0"
1662 type="link" 1662 type="link"
@@ -1671,7 +1671,7 @@ const OrderPage = () =&gt; { @@ -1671,7 +1671,7 @@ const OrderPage = () =&gt; {
1671 '' 1671 ''
1672 )} 1672 )}
1673 1673
1674 - {optRecord.subPath?.includes('queryAnnex') && 1674 + {optRecord.paths?.includes('queryAnnex') &&
1675 optRecord.listAnnex?.length > 0 ? ( 1675 optRecord.listAnnex?.length > 0 ? (
1676 <Button 1676 <Button
1677 className="p-0" 1677 className="p-0"
@@ -1688,7 +1688,7 @@ const OrderPage = () =&gt; { @@ -1688,7 +1688,7 @@ const OrderPage = () =&gt; {
1688 '' 1688 ''
1689 )} 1689 )}
1690 1690
1691 - {optRecord.subPath?.includes('modifySendInformation') ? ( 1691 + {optRecord.paths?.includes('modifySendInformation') ? (
1692 <Button 1692 <Button
1693 className="p-0" 1693 className="p-0"
1694 type="link" 1694 type="link"
@@ -1704,7 +1704,7 @@ const OrderPage = () =&gt; { @@ -1704,7 +1704,7 @@ const OrderPage = () =&gt; {
1704 '' 1704 ''
1705 )} 1705 )}
1706 1706
1707 - {optRecord.subPath?.includes('printOrder') ? ( 1707 + {optRecord.paths?.includes('printOrder') ? (
1708 <Button 1708 <Button
1709 className="p-0" 1709 className="p-0"
1710 type="link" 1710 type="link"
@@ -1720,7 +1720,7 @@ const OrderPage = () =&gt; { @@ -1720,7 +1720,7 @@ const OrderPage = () =&gt; {
1720 '' 1720 ''
1721 )} 1721 )}
1722 1722
1723 - {optRecord.subPath?.includes('supplierPrint') ? ( 1723 + {optRecord.paths?.includes('supplierPrint') ? (
1724 <Button 1724 <Button
1725 className="p-0" 1725 className="p-0"
1726 type="link" 1726 type="link"
@@ -1736,7 +1736,7 @@ const OrderPage = () =&gt; { @@ -1736,7 +1736,7 @@ const OrderPage = () =&gt; {
1736 '' 1736 ''
1737 )} 1737 )}
1738 1738
1739 - {optRecord.subPath?.includes('procurePrint') ? ( 1739 + {optRecord.paths?.includes('procurePrint') ? (
1740 <ButtonConfirm 1740 <ButtonConfirm
1741 className="p-0" 1741 className="p-0"
1742 title="确认打印?" 1742 title="确认打印?"
@@ -1770,7 +1770,7 @@ const OrderPage = () =&gt; { @@ -1770,7 +1770,7 @@ const OrderPage = () =&gt; {
1770 '' 1770 ''
1771 )} 1771 )}
1772 1772
1773 - {optRecord.subPath?.includes('editOrder') && false ? ( 1773 + {optRecord.paths?.includes('editOrder') && false ? (
1774 <Button 1774 <Button
1775 className="p-0" 1775 className="p-0"
1776 type="link" 1776 type="link"
@@ -1786,7 +1786,7 @@ const OrderPage = () =&gt; { @@ -1786,7 +1786,7 @@ const OrderPage = () =&gt; {
1786 '' 1786 ''
1787 )} 1787 )}
1788 1788
1789 - {optRecord.subPath?.includes('invoicing') ? ( 1789 + {optRecord.paths?.includes('invoicing') ? (
1790 <Button 1790 <Button
1791 className="p-0" 1791 className="p-0"
1792 type="link" 1792 type="link"
@@ -1803,7 +1803,7 @@ const OrderPage = () =&gt; { @@ -1803,7 +1803,7 @@ const OrderPage = () =&gt; {
1803 '' 1803 ''
1804 )} 1804 )}
1805 1805
1806 - {optRecord.subPath?.includes('applyInvoicing') ? ( 1806 + {optRecord.paths?.includes('applyInvoicing') ? (
1807 <Button 1807 <Button
1808 className="p-0" 1808 className="p-0"
1809 type="link" 1809 type="link"
@@ -1820,7 +1820,7 @@ const OrderPage = () =&gt; { @@ -1820,7 +1820,7 @@ const OrderPage = () =&gt; {
1820 '' 1820 ''
1821 )} 1821 )}
1822 1822
1823 - {optRecord.subPath?.includes('applyInvoicing_old') ? ( 1823 + {optRecord.paths?.includes('applyInvoicing_old') ? (
1824 <Button 1824 <Button
1825 className="p-0" 1825 className="p-0"
1826 type="link" 1826 type="link"
@@ -1837,7 +1837,7 @@ const OrderPage = () =&gt; { @@ -1837,7 +1837,7 @@ const OrderPage = () =&gt; {
1837 '' 1837 ''
1838 )} 1838 )}
1839 1839
1840 - {optRecord.subPath?.includes('checkOrder') ? ( 1840 + {optRecord.paths?.includes('checkOrder') ? (
1841 <Button 1841 <Button
1842 className="p-0" 1842 className="p-0"
1843 type="link" 1843 type="link"
@@ -1854,7 +1854,7 @@ const OrderPage = () =&gt; { @@ -1854,7 +1854,7 @@ const OrderPage = () =&gt; {
1854 '' 1854 ''
1855 )} 1855 )}
1856 1856
1857 - {optRecord.subPath?.includes('afterSalesCheck') ? ( 1857 + {optRecord.paths?.includes('afterSalesCheck') ? (
1858 <Button 1858 <Button
1859 className="p-0" 1859 className="p-0"
1860 type="link" 1860 type="link"
@@ -1870,7 +1870,7 @@ const OrderPage = () =&gt; { @@ -1870,7 +1870,7 @@ const OrderPage = () =&gt; {
1870 '' 1870 ''
1871 )} 1871 )}
1872 1872
1873 - {optRecord.subPath?.includes('financeCheckOrder') ? ( 1873 + {optRecord.paths?.includes('financeCheckOrder') ? (
1874 <Button 1874 <Button
1875 className="p-0" 1875 className="p-0"
1876 type="link" 1876 type="link"
@@ -1886,7 +1886,7 @@ const OrderPage = () =&gt; { @@ -1886,7 +1886,7 @@ const OrderPage = () =&gt; {
1886 '' 1886 ''
1887 )} 1887 )}
1888 1888
1889 - {optRecord.subPath?.includes('procureCheckOrder') ? ( 1889 + {optRecord.paths?.includes('procureCheckOrder') ? (
1890 <Button 1890 <Button
1891 className="p-0" 1891 className="p-0"
1892 type="link" 1892 type="link"
@@ -1902,7 +1902,7 @@ const OrderPage = () =&gt; { @@ -1902,7 +1902,7 @@ const OrderPage = () =&gt; {
1902 '' 1902 ''
1903 )} 1903 )}
1904 1904
1905 - {optRecord.subPath?.includes('procureConvertProcure') ? ( 1905 + {optRecord.paths?.includes('procureConvertProcure') ? (
1906 <Button 1906 <Button
1907 className="p-0" 1907 className="p-0"
1908 type="link" 1908 type="link"
@@ -1918,7 +1918,7 @@ const OrderPage = () =&gt; { @@ -1918,7 +1918,7 @@ const OrderPage = () =&gt; {
1918 '' 1918 ''
1919 )} 1919 )}
1920 1920
1921 - {optRecord.subPath?.includes('rePrintOrder') ? ( 1921 + {optRecord.paths?.includes('rePrintOrder') ? (
1922 <Button 1922 <Button
1923 className="p-0" 1923 className="p-0"
1924 type="link" 1924 type="link"
@@ -1934,7 +1934,7 @@ const OrderPage = () =&gt; { @@ -1934,7 +1934,7 @@ const OrderPage = () =&gt; {
1934 '' 1934 ''
1935 )} 1935 )}
1936 1936
1937 - {optRecord.subPath?.includes('confirmReceipt') ? ( 1937 + {optRecord.paths?.includes('confirmReceipt') ? (
1938 <Button 1938 <Button
1939 className="p-0" 1939 className="p-0"
1940 type="link" 1940 type="link"
@@ -1949,7 +1949,7 @@ const OrderPage = () =&gt; { @@ -1949,7 +1949,7 @@ const OrderPage = () =&gt; {
1949 '' 1949 ''
1950 )} 1950 )}
1951 1951
1952 - {optRecord.subPath?.includes('applyAfterSales') ? ( 1952 + {optRecord.paths?.includes('applyAfterSales') ? (
1953 <Button 1953 <Button
1954 className="p-0" 1954 className="p-0"
1955 type="link" 1955 type="link"
@@ -1965,7 +1965,7 @@ const OrderPage = () =&gt; { @@ -1965,7 +1965,7 @@ const OrderPage = () =&gt; {
1965 '' 1965 ''
1966 )} 1966 )}
1967 1967
1968 - {optRecord.subPath?.includes('procureOrder') ? ( 1968 + {optRecord.paths?.includes('procureOrder') ? (
1969 <ButtonConfirm 1969 <ButtonConfirm
1970 className="p-0" 1970 className="p-0"
1971 title="是否已下单?" 1971 title="是否已下单?"
@@ -1985,7 +1985,7 @@ const OrderPage = () =&gt; { @@ -1985,7 +1985,7 @@ const OrderPage = () =&gt; {
1985 '' 1985 ''
1986 )} 1986 )}
1987 1987
1988 - {optRecord.subPath?.includes('cancelSend') ? ( 1988 + {optRecord.paths?.includes('cancelSend') ? (
1989 <ButtonConfirm 1989 <ButtonConfirm
1990 className="p-0" 1990 className="p-0"
1991 title="是否取消发货" 1991 title="是否取消发货"
@@ -2005,7 +2005,7 @@ const OrderPage = () =&gt; { @@ -2005,7 +2005,7 @@ const OrderPage = () =&gt; {
2005 '' 2005 ''
2006 )} 2006 )}
2007 2007
2008 - {optRecord.subPath?.includes('noNeedSend') ? ( 2008 + {optRecord.paths?.includes('noNeedSend') ? (
2009 <ButtonConfirm 2009 <ButtonConfirm
2010 className="p-0" 2010 className="p-0"
2011 title="此订单是否无需发货?" 2011 title="此订单是否无需发货?"
@@ -2025,7 +2025,7 @@ const OrderPage = () =&gt; { @@ -2025,7 +2025,7 @@ const OrderPage = () =&gt; {
2025 '' 2025 ''
2026 )} 2026 )}
2027 2027
2028 - {optRecord.subPath?.includes('viewImages') ? ( 2028 + {optRecord.paths?.includes('viewImages') ? (
2029 <Button 2029 <Button
2030 className="p-0" 2030 className="p-0"
2031 type="link" 2031 type="link"
@@ -2041,7 +2041,7 @@ const OrderPage = () =&gt; { @@ -2041,7 +2041,7 @@ const OrderPage = () =&gt; {
2041 '' 2041 ''
2042 )} 2042 )}
2043 2043
2044 - {optRecord.subPath?.includes('confirmDeliver') ? ( 2044 + {optRecord.paths?.includes('confirmDeliver') ? (
2045 <Button 2045 <Button
2046 className="p-0" 2046 className="p-0"
2047 type="link" 2047 type="link"
@@ -2057,7 +2057,7 @@ const OrderPage = () =&gt; { @@ -2057,7 +2057,7 @@ const OrderPage = () =&gt; {
2057 '' 2057 ''
2058 )} 2058 )}
2059 2059
2060 - {optRecord.subPath?.includes('orderCancel') ? ( 2060 + {optRecord.paths?.includes('orderCancel') ? (
2061 <ButtonConfirm 2061 <ButtonConfirm
2062 className="p-0" 2062 className="p-0"
2063 title="确认作废?" 2063 title="确认作废?"
@@ -2677,7 +2677,7 @@ const OrderPage = () =&gt; { @@ -2677,7 +2677,7 @@ const OrderPage = () =&gt; {
2677 <Flex justify="flex-end"> 2677 <Flex justify="flex-end">
2678 <Space.Compact direction="vertical" align="end"> 2678 <Space.Compact direction="vertical" align="end">
2679 <Space wrap> 2679 <Space wrap>
2680 - {record.mainPath?.includes('postAudit') ? ( 2680 + {record.paths?.includes('postAudit') ? (
2681 <Button 2681 <Button
2682 className="p-0" 2682 className="p-0"
2683 type="link" 2683 type="link"
@@ -2693,7 +2693,7 @@ const OrderPage = () =&gt; { @@ -2693,7 +2693,7 @@ const OrderPage = () =&gt; {
2693 ) : ( 2693 ) : (
2694 '' 2694 ''
2695 )} 2695 )}
2696 - {record.mainPath?.includes('URGENT_INVOICE_AUDITING') ? ( 2696 + {record.paths?.includes('URGENT_INVOICE_AUDITING') ? (
2697 <Button 2697 <Button
2698 className="p-0" 2698 className="p-0"
2699 type="link" 2699 type="link"
@@ -2708,7 +2708,7 @@ const OrderPage = () =&gt; { @@ -2708,7 +2708,7 @@ const OrderPage = () =&gt; {
2708 ) : ( 2708 ) : (
2709 '' 2709 ''
2710 )} 2710 )}
2711 - {record.mainPath?.includes('URGENT_INVOICE_AUDITING_old') ? ( 2711 + {record.paths?.includes('URGENT_INVOICE_AUDITING_old') ? (
2712 <Button 2712 <Button
2713 className="p-0" 2713 className="p-0"
2714 type="link" 2714 type="link"
@@ -2725,7 +2725,7 @@ const OrderPage = () =&gt; { @@ -2725,7 +2725,7 @@ const OrderPage = () =&gt; {
2725 ) : ( 2725 ) : (
2726 '' 2726 ''
2727 )} 2727 )}
2728 - {record.mainPath?.includes('salesConfirm') && ( 2728 + {record.paths?.includes('salesConfirm') && (
2729 <ButtonConfirm 2729 <ButtonConfirm
2730 className="p-0" 2730 className="p-0"
2731 title="是否确认此商城订单信息无误?确认无误之后订单将进入审核流程。" 2731 title="是否确认此商城订单信息无误?确认无误之后订单将进入审核流程。"
@@ -2756,7 +2756,7 @@ const OrderPage = () =&gt; { @@ -2756,7 +2756,7 @@ const OrderPage = () =&gt; {
2756 }} 2756 }}
2757 /> 2757 />
2758 )} 2758 )}
2759 - {record.mainPath?.includes('uploadPaymentReceiptBill') ? ( 2759 + {record.paths?.includes('uploadPaymentReceiptBill') ? (
2760 <Button 2760 <Button
2761 className="p-0" 2761 className="p-0"
2762 type="link" 2762 type="link"
@@ -2771,7 +2771,7 @@ const OrderPage = () =&gt; { @@ -2771,7 +2771,7 @@ const OrderPage = () =&gt; {
2771 '' 2771 ''
2772 )} 2772 )}
2773 2773
2774 - {record.mainPath?.includes('modifiedAuditRequest') ? ( 2774 + {record.paths?.includes('modifiedAuditRequest') ? (
2775 <Button 2775 <Button
2776 className="p-0" 2776 className="p-0"
2777 type="link" 2777 type="link"
@@ -2787,7 +2787,7 @@ const OrderPage = () =&gt; { @@ -2787,7 +2787,7 @@ const OrderPage = () =&gt; {
2787 '' 2787 ''
2788 )} 2788 )}
2789 2789
2790 - {record.mainPath?.includes('auditPaymentReceipt') ? ( 2790 + {record.paths?.includes('auditPaymentReceipt') ? (
2791 <Button 2791 <Button
2792 className="p-0" 2792 className="p-0"
2793 type="link" 2793 type="link"
@@ -2803,7 +2803,7 @@ const OrderPage = () =&gt; { @@ -2803,7 +2803,7 @@ const OrderPage = () =&gt; {
2803 '' 2803 ''
2804 )} 2804 )}
2805 2805
2806 - {record.mainPath?.includes('modifiedLeaderAuditRequest') ? ( 2806 + {record.paths?.includes('modifiedLeaderAuditRequest') ? (
2807 <Button 2807 <Button
2808 className="p-0" 2808 className="p-0"
2809 type="link" 2809 type="link"
@@ -2835,7 +2835,7 @@ const OrderPage = () =&gt; { @@ -2835,7 +2835,7 @@ const OrderPage = () =&gt; {
2835 '' 2835 ''
2836 )} 2836 )}
2837 2837
2838 - {record.mainPath?.includes('reissue_old') ? ( 2838 + {record.paths?.includes('reissue_old') ? (
2839 /*optRecord.afterInvoicingStatus==='PARTIAL_INVOICING'|| 2839 /*optRecord.afterInvoicingStatus==='PARTIAL_INVOICING'||
2840 optRecord.afterInvoicingStatus==='COMPLETE_INVOICING'*/ 2840 optRecord.afterInvoicingStatus==='COMPLETE_INVOICING'*/
2841 <Button 2841 <Button
@@ -2853,7 +2853,7 @@ const OrderPage = () =&gt; { @@ -2853,7 +2853,7 @@ const OrderPage = () =&gt; {
2853 '' 2853 ''
2854 )} 2854 )}
2855 2855
2856 - {record.mainPath?.includes('confirmReissue_old') ? ( 2856 + {record.paths?.includes('confirmReissue_old') ? (
2857 <Button 2857 <Button
2858 className="p-0" 2858 className="p-0"
2859 type="link" 2859 type="link"
@@ -2870,7 +2870,7 @@ const OrderPage = () =&gt; { @@ -2870,7 +2870,7 @@ const OrderPage = () =&gt; {
2870 '' 2870 ''
2871 )} 2871 )}
2872 2872
2873 - {record.mainPath?.includes('reissue') ? ( 2873 + {record.paths?.includes('reissue') ? (
2874 /*optRecord.afterInvoicingStatus==='PARTIAL_INVOICING'|| 2874 /*optRecord.afterInvoicingStatus==='PARTIAL_INVOICING'||
2875 optRecord.afterInvoicingStatus==='COMPLETE_INVOICING'*/ 2875 optRecord.afterInvoicingStatus==='COMPLETE_INVOICING'*/
2876 <Button 2876 <Button
@@ -2887,7 +2887,7 @@ const OrderPage = () =&gt; { @@ -2887,7 +2887,7 @@ const OrderPage = () =&gt; {
2887 '' 2887 ''
2888 )} 2888 )}
2889 2889
2890 - {record.mainPath?.includes('confirmReissue') ? ( 2890 + {record.paths?.includes('confirmReissue') ? (
2891 <Button 2891 <Button
2892 className="p-0" 2892 className="p-0"
2893 type="link" 2893 type="link"
@@ -2904,7 +2904,7 @@ const OrderPage = () =&gt; { @@ -2904,7 +2904,7 @@ const OrderPage = () =&gt; {
2904 '' 2904 ''
2905 )} 2905 )}
2906 2906
2907 - {record.mainPath?.includes('procureOrder') ? ( 2907 + {record.paths?.includes('procureOrder') ? (
2908 <ButtonConfirm 2908 <ButtonConfirm
2909 className="p-0" 2909 className="p-0"
2910 title="是否下单?" 2910 title="是否下单?"
@@ -2936,7 +2936,7 @@ const OrderPage = () =&gt; { @@ -2936,7 +2936,7 @@ const OrderPage = () =&gt; {
2936 '' 2936 ''
2937 )} 2937 )}
2938 2938
2939 - {record.mainPath?.includes('cancelSend') ? ( 2939 + {record.paths?.includes('cancelSend') ? (
2940 <ButtonConfirm 2940 <ButtonConfirm
2941 className="p-0" 2941 className="p-0"
2942 title="是否取消发货?" 2942 title="是否取消发货?"
@@ -2968,7 +2968,7 @@ const OrderPage = () =&gt; { @@ -2968,7 +2968,7 @@ const OrderPage = () =&gt; {
2968 '' 2968 ''
2969 )} 2969 )}
2970 2970
2971 - {record.mainPath?.includes('applyModify') ? ( 2971 + {record.paths?.includes('applyModify') ? (
2972 <Button 2972 <Button
2973 className="p-0" 2973 className="p-0"
2974 type="link" 2974 type="link"
@@ -2984,7 +2984,7 @@ const OrderPage = () =&gt; { @@ -2984,7 +2984,7 @@ const OrderPage = () =&gt; {
2984 '' 2984 ''
2985 )} 2985 )}
2986 2986
2987 - {record.mainPath?.includes('leaderAudit') ? ( 2987 + {record.paths?.includes('leaderAudit') ? (
2988 <Button 2988 <Button
2989 className="p-0" 2989 className="p-0"
2990 type="link" 2990 type="link"
@@ -3016,7 +3016,7 @@ const OrderPage = () =&gt; { @@ -3016,7 +3016,7 @@ const OrderPage = () =&gt; {
3016 '' 3016 ''
3017 )} 3017 )}
3018 3018
3019 - {record.mainPath?.includes('changeOrderAudit') ? ( 3019 + {record.paths?.includes('changeOrderAudit') ? (
3020 <Button 3020 <Button
3021 className="p-0" 3021 className="p-0"
3022 type="link" 3022 type="link"
@@ -3050,7 +3050,7 @@ const OrderPage = () =&gt; { @@ -3050,7 +3050,7 @@ const OrderPage = () =&gt; {
3050 '' 3050 ''
3051 )} 3051 )}
3052 3052
3053 - {record.mainPath?.includes('creditAudit') ? ( 3053 + {record.paths?.includes('creditAudit') ? (
3054 <Button 3054 <Button
3055 className="p-0" 3055 className="p-0"
3056 type="link" 3056 type="link"
@@ -3082,7 +3082,7 @@ const OrderPage = () =&gt; { @@ -3082,7 +3082,7 @@ const OrderPage = () =&gt; {
3082 '' 3082 ''
3083 )} 3083 )}
3084 3084
3085 - {record.mainPath?.includes('editProductionTime') ? ( 3085 + {record.paths?.includes('editProductionTime') ? (
3086 <Button 3086 <Button
3087 className="p-0" 3087 className="p-0"
3088 type="link" 3088 type="link"
@@ -3097,7 +3097,7 @@ const OrderPage = () =&gt; { @@ -3097,7 +3097,7 @@ const OrderPage = () =&gt; {
3097 '' 3097 ''
3098 )} 3098 )}
3099 3099
3100 - {record.mainPath?.includes('procureConvertProcure') ? ( 3100 + {record.paths?.includes('procureConvertProcure') ? (
3101 <Button 3101 <Button
3102 className="p-0" 3102 className="p-0"
3103 type="link" 3103 type="link"
@@ -3111,7 +3111,7 @@ const OrderPage = () =&gt; { @@ -3111,7 +3111,7 @@ const OrderPage = () =&gt; {
3111 3111
3112 for (let i = 0; i < selectedSubOrders.length; i++) { 3112 for (let i = 0; i < selectedSubOrders.length; i++) {
3113 if ( 3113 if (
3114 - !selectedSubOrders[i].subPath.includes( 3114 + !selectedSubOrders[i].paths.includes(
3115 'procureConvertProcure', 3115 'procureConvertProcure',
3116 ) 3116 )
3117 ) { 3117 ) {
@@ -3129,7 +3129,7 @@ const OrderPage = () =&gt; { @@ -3129,7 +3129,7 @@ const OrderPage = () =&gt; {
3129 ) : ( 3129 ) : (
3130 '' 3130 ''
3131 )} 3131 )}
3132 - {record.mainPath?.includes('sendProduct') ? ( 3132 + {record.paths?.includes('sendProduct') ? (
3133 <Button 3133 <Button
3134 className="p-0" 3134 className="p-0"
3135 type="link" 3135 type="link"
@@ -3150,7 +3150,7 @@ const OrderPage = () =&gt; { @@ -3150,7 +3150,7 @@ const OrderPage = () =&gt; {
3150 )} 3150 )}
3151 3151
3152 {/* 供应商发货 */} 3152 {/* 供应商发货 */}
3153 - {record.mainPath?.includes('supplierSendOrder') ? ( 3153 + {record.paths?.includes('supplierSendOrder') ? (
3154 <Button 3154 <Button
3155 className="p-0" 3155 className="p-0"
3156 type="link" 3156 type="link"
@@ -3170,7 +3170,7 @@ const OrderPage = () =&gt; { @@ -3170,7 +3170,7 @@ const OrderPage = () =&gt; {
3170 '' 3170 ''
3171 )} 3171 )}
3172 3172
3173 - {record.mainPath?.includes('procureSend') ? ( 3173 + {record.paths?.includes('procureSend') ? (
3174 <Button 3174 <Button
3175 className="p-0" 3175 className="p-0"
3176 type="link" 3176 type="link"
@@ -3190,7 +3190,7 @@ const OrderPage = () =&gt; { @@ -3190,7 +3190,7 @@ const OrderPage = () =&gt; {
3190 '' 3190 ''
3191 )} 3191 )}
3192 3192
3193 - {record.mainPath?.includes('printOrder') ? ( 3193 + {record.paths?.includes('printOrder') ? (
3194 <Button 3194 <Button
3195 className="p-0" 3195 className="p-0"
3196 type="link" 3196 type="link"
@@ -3203,8 +3203,8 @@ const OrderPage = () =&gt; { @@ -3203,8 +3203,8 @@ const OrderPage = () =&gt; {
3203 } 3203 }
3204 3204
3205 for (let subOrderRecord of selectedSubOrders) { 3205 for (let subOrderRecord of selectedSubOrders) {
3206 - let subPath = subOrderRecord.subPath;  
3207 - if (!checkePrintable(subPath)) { 3206 + let paths = subOrderRecord.paths;
  3207 + if (!checkePrintable(paths)) {
3208 return message.error('请选择可以打印的子订单'); 3208 return message.error('请选择可以打印的子订单');
3209 } 3209 }
3210 } 3210 }
@@ -3219,7 +3219,7 @@ const OrderPage = () =&gt; { @@ -3219,7 +3219,7 @@ const OrderPage = () =&gt; {
3219 '' 3219 ''
3220 )} 3220 )}
3221 3221
3222 - {record.mainPath?.includes('supplierPrint') ? ( 3222 + {record.paths?.includes('supplierPrint') ? (
3223 <Button 3223 <Button
3224 className="p-0" 3224 className="p-0"
3225 type="link" 3225 type="link"
@@ -3239,7 +3239,7 @@ const OrderPage = () =&gt; { @@ -3239,7 +3239,7 @@ const OrderPage = () =&gt; {
3239 '' 3239 ''
3240 )} 3240 )}
3241 3241
3242 - {record.mainPath?.includes('rePrintOrder') ? ( 3242 + {record.paths?.includes('rePrintOrder') ? (
3243 <Button 3243 <Button
3244 className="p-0" 3244 className="p-0"
3245 type="link" 3245 type="link"
@@ -3257,7 +3257,7 @@ const OrderPage = () =&gt; { @@ -3257,7 +3257,7 @@ const OrderPage = () =&gt; {
3257 ) : ( 3257 ) : (
3258 '' 3258 ''
3259 )} 3259 )}
3260 - {record.mainPath?.includes('confirmReceipt') ? ( 3260 + {record.paths?.includes('confirmReceipt') ? (
3261 <Button 3261 <Button
3262 className="p-0" 3262 className="p-0"
3263 type="link" 3263 type="link"
@@ -3271,7 +3271,7 @@ const OrderPage = () =&gt; { @@ -3271,7 +3271,7 @@ const OrderPage = () =&gt; {
3271 ) : ( 3271 ) : (
3272 '' 3272 ''
3273 )} 3273 )}
3274 - {record.mainPath?.includes('modifySendInformation') ? ( 3274 + {record.paths?.includes('modifySendInformation') ? (
3275 <Button 3275 <Button
3276 className="p-0" 3276 className="p-0"
3277 type="link" 3277 type="link"
@@ -3301,7 +3301,7 @@ const OrderPage = () =&gt; { @@ -3301,7 +3301,7 @@ const OrderPage = () =&gt; {
3301 ) : ( 3301 ) : (
3302 '' 3302 ''
3303 )} 3303 )}
3304 - {record.mainPath?.includes('invoicing') ? ( 3304 + {record.paths?.includes('invoicing') ? (
3305 <Button 3305 <Button
3306 type="link" 3306 type="link"
3307 className="p-0" 3307 className="p-0"
@@ -3317,7 +3317,7 @@ const OrderPage = () =&gt; { @@ -3317,7 +3317,7 @@ const OrderPage = () =&gt; {
3317 '' 3317 ''
3318 )} 3318 )}
3319 3319
3320 - {record.mainPath?.includes('applyInvoicing_old') ? ( 3320 + {record.paths?.includes('applyInvoicing_old') ? (
3321 <Button 3321 <Button
3322 type="link" 3322 type="link"
3323 className="p-0" 3323 className="p-0"
@@ -3354,7 +3354,7 @@ const OrderPage = () =&gt; { @@ -3354,7 +3354,7 @@ const OrderPage = () =&gt; {
3354 '' 3354 ''
3355 )} 3355 )}
3356 3356
3357 - {record.mainPath?.includes('applyInvoicing') ? ( 3357 + {record.paths?.includes('applyInvoicing') ? (
3358 <Button 3358 <Button
3359 type="link" 3359 type="link"
3360 className="p-0" 3360 className="p-0"
@@ -3391,7 +3391,7 @@ const OrderPage = () =&gt; { @@ -3391,7 +3391,7 @@ const OrderPage = () =&gt; {
3391 '' 3391 ''
3392 )} 3392 )}
3393 3393
3394 - {record.mainPath?.includes('updateOrder') ? ( 3394 + {record.paths?.includes('updateOrder') ? (
3395 <Button 3395 <Button
3396 className="p-0" 3396 className="p-0"
3397 type="link" 3397 type="link"
@@ -3456,7 +3456,7 @@ const OrderPage = () =&gt; { @@ -3456,7 +3456,7 @@ const OrderPage = () =&gt; {
3456 '' 3456 ''
3457 )} 3457 )}
3458 3458
3459 - {record?.subOrderInformationLists[0].subPath?.includes( 3459 + {record?.subOrderInformationLists[0].paths?.includes(
3460 'noNeedInvoicingEdit', 3460 'noNeedInvoicingEdit',
3461 ) ? ( 3461 ) ? (
3462 <Button 3462 <Button
@@ -3474,7 +3474,7 @@ const OrderPage = () =&gt; { @@ -3474,7 +3474,7 @@ const OrderPage = () =&gt; {
3474 '' 3474 ''
3475 )} 3475 )}
3476 3476
3477 - {record.mainPath?.includes('checkOrder') ? ( 3477 + {record.paths?.includes('checkOrder') ? (
3478 <Button 3478 <Button
3479 className="p-0" 3479 className="p-0"
3480 type="link" 3480 type="link"
@@ -3511,7 +3511,7 @@ const OrderPage = () =&gt; { @@ -3511,7 +3511,7 @@ const OrderPage = () =&gt; {
3511 '' 3511 ''
3512 )} 3512 )}
3513 3513
3514 - {record.mainPath?.includes('afterSalesCheck') ? ( 3514 + {record.paths?.includes('afterSalesCheck') ? (
3515 <Button 3515 <Button
3516 className="p-0" 3516 className="p-0"
3517 type="link" 3517 type="link"
@@ -3544,7 +3544,7 @@ const OrderPage = () =&gt; { @@ -3544,7 +3544,7 @@ const OrderPage = () =&gt; {
3544 '' 3544 ''
3545 )} 3545 )}
3546 3546
3547 - {record.mainPath?.includes('noNeedSend') ? ( 3547 + {record.paths?.includes('noNeedSend') ? (
3548 <ButtonConfirm 3548 <ButtonConfirm
3549 className="p-0" 3549 className="p-0"
3550 title="此订单是否无需发货?" 3550 title="此订单是否无需发货?"
@@ -3594,7 +3594,7 @@ const OrderPage = () =&gt; { @@ -3594,7 +3594,7 @@ const OrderPage = () =&gt; {
3594 '' 3594 ''
3595 )} 3595 )}
3596 3596
3597 - {record.mainPath?.includes('saleCancelInvoicing_old') ? ( 3597 + {record.paths?.includes('saleCancelInvoicing_old') ? (
3598 <ButtonConfirm 3598 <ButtonConfirm
3599 className="p-0" 3599 className="p-0"
3600 title="确认取消申请开票?" 3600 title="确认取消申请开票?"
@@ -3637,7 +3637,7 @@ const OrderPage = () =&gt; { @@ -3637,7 +3637,7 @@ const OrderPage = () =&gt; {
3637 '' 3637 ''
3638 )} 3638 )}
3639 {/* 财务审核:主订单暂无 */} 3639 {/* 财务审核:主订单暂无 */}
3640 - {record.mainPath?.includes('financeCheckOrder') ? ( 3640 + {record.paths?.includes('financeCheckOrder') ? (
3641 <Button 3641 <Button
3642 className="p-0" 3642 className="p-0"
3643 type="link" 3643 type="link"
@@ -3675,7 +3675,7 @@ const OrderPage = () =&gt; { @@ -3675,7 +3675,7 @@ const OrderPage = () =&gt; {
3675 )} 3675 )}
3676 3676
3677 {/* 采购审核 */} 3677 {/* 采购审核 */}
3678 - {record.mainPath?.includes('procureCheckOrder') ? ( 3678 + {record.paths?.includes('procureCheckOrder') ? (
3679 <Button 3679 <Button
3680 className="p-0" 3680 className="p-0"
3681 type="link" 3681 type="link"
@@ -3708,7 +3708,7 @@ const OrderPage = () =&gt; { @@ -3708,7 +3708,7 @@ const OrderPage = () =&gt; {
3708 '' 3708 ''
3709 )} 3709 )}
3710 3710
3711 - {record.mainPath?.includes('applyAfterSales') ? ( 3711 + {record.paths?.includes('applyAfterSales') ? (
3712 <Button 3712 <Button
3713 className="p-0" 3713 className="p-0"
3714 type="link" 3714 type="link"
@@ -3743,7 +3743,7 @@ const OrderPage = () =&gt; { @@ -3743,7 +3743,7 @@ const OrderPage = () =&gt; {
3743 '' 3743 ''
3744 )} 3744 )}
3745 3745
3746 - {/* {record.mainPath?.includes('afterSalesCompletion') ? ( 3746 + {/* {record.paths?.includes('afterSalesCompletion') ? (
3747 <ButtonConfirm 3747 <ButtonConfirm
3748 className="p-0" 3748 className="p-0"
3749 title="售后是否已完成?" 3749 title="售后是否已完成?"
@@ -3787,7 +3787,7 @@ const OrderPage = () =&gt; { @@ -3787,7 +3787,7 @@ const OrderPage = () =&gt; {
3787 '' 3787 ''
3788 )} */} 3788 )} */}
3789 3789
3790 - {record.mainPath?.includes('salOrderSave') ? ( 3790 + {record.paths?.includes('salOrderSave') ? (
3791 <ButtonConfirm 3791 <ButtonConfirm
3792 className="p-0" 3792 className="p-0"
3793 title="是否推送至金蝶ERP?" 3793 title="是否推送至金蝶ERP?"
@@ -3809,7 +3809,7 @@ const OrderPage = () =&gt; { @@ -3809,7 +3809,7 @@ const OrderPage = () =&gt; {
3809 '' 3809 ''
3810 )} 3810 )}
3811 3811
3812 - {record.mainPath?.includes('salBillOutbound') ? ( 3812 + {record.paths?.includes('salBillOutbound') ? (
3813 <ButtonConfirm 3813 <ButtonConfirm
3814 className="p-0" 3814 className="p-0"
3815 title="是否下推金蝶ERP出库单?" 3815 title="是否下推金蝶ERP出库单?"
@@ -3831,7 +3831,7 @@ const OrderPage = () =&gt; { @@ -3831,7 +3831,7 @@ const OrderPage = () =&gt; {
3831 '' 3831 ''
3832 )} 3832 )}
3833 3833
3834 - {record.mainPath?.includes('orderCancel') ? ( 3834 + {record.paths?.includes('orderCancel') ? (
3835 <ButtonConfirm 3835 <ButtonConfirm
3836 className="p-0" 3836 className="p-0"
3837 title="确认作废?" 3837 title="确认作废?"
@@ -3854,7 +3854,7 @@ const OrderPage = () =&gt; { @@ -3854,7 +3854,7 @@ const OrderPage = () =&gt; {
3854 '' 3854 ''
3855 )} 3855 )}
3856 3856
3857 - {record.mainPath?.includes('procurePrint') ? ( 3857 + {record.paths?.includes('procurePrint') ? (
3858 <ButtonConfirm 3858 <ButtonConfirm
3859 className="p-0" 3859 className="p-0"
3860 title="确认打印?" 3860 title="确认打印?"
@@ -4205,6 +4205,7 @@ const OrderPage = () =&gt; { @@ -4205,6 +4205,7 @@ const OrderPage = () =&gt; {
4205 { 4205 {
4206 label: '加急开票审核(旧)', 4206 label: '加急开票审核(旧)',
4207 key: '2', 4207 key: '2',
  4208 + disabled: true,
4208 onClick: async () => { 4209 onClick: async () => {
4209 setIsMainOrder(true); 4210 setIsMainOrder(true);
4210 setCheckVisible(true); 4211 setCheckVisible(true);
@@ -4313,7 +4314,7 @@ const OrderPage = () =&gt; { @@ -4313,7 +4314,7 @@ const OrderPage = () =&gt; {
4313 setIsMainOrder(true); 4314 setIsMainOrder(true);
4314 setApplyForInvoicingVisible(true); 4315 setApplyForInvoicingVisible(true);
4315 }} 4316 }}
4316 - disabled={selectedSubOrderKeys?.length === 0} 4317 + disabled={true} /*{selectedSubOrderKeys?.length === 0}*/
4317 > 4318 >
4318 {roleCode === 'admin' ? '合并(销售)' : '合并开票'} 4319 {roleCode === 'admin' ? '合并(销售)' : '合并开票'}
4319 </Button>, 4320 </Button>,
src/pages/Order/type.d.ts
@@ -19,7 +19,7 @@ export interface OrderListItemType { @@ -19,7 +19,7 @@ export interface OrderListItemType {
19 goodsWeight: any; 19 goodsWeight: any;
20 receivingCompany: any; 20 receivingCompany: any;
21 modified: any; 21 modified: any;
22 - mainPath: any; 22 + paths: any;
23 totalPayment: ReactNode; 23 totalPayment: ReactNode;
24 notes: ReactNode; 24 notes: ReactNode;
25 invoiceIdentificationNumber: ReactNode; 25 invoiceIdentificationNumber: ReactNode;
src/pages/User/ZoNing/components/constant.tsx deleted 100644 → 0
1 -import { List } from 'lodash';  
2 -  
3 -export type zoningItem = {  
4 - id?: number; //id  
5 - zoning: string; //区域名称  
6 - orderProvinceVoList: List<provinceItem>; //所包含的省份列表  
7 - orderUserVoList: List<userItem>; //所包含的销售列表  
8 -};  
9 -  
10 -export type zoningShowItem = {  
11 - id?: number; //id  
12 - zoning: string; //区域名称  
13 - orderProvinceShowList: string; //所包含的省份列表  
14 - orderUserShowList: string; //所包含的销售列表  
15 - orderUserNumberShowList: number[]; //销售对应的uId  
16 -};  
17 -  
18 -export type provinceItem = {  
19 - pId?: number;  
20 - province: string;  
21 -};  
22 -  
23 -export type userItem = {  
24 - uId: number;  
25 - userName?: string;  
26 -};  
27 -  
28 -export const provinceEnum = {  
29 - 全选: '全选',  
30 - 北京市: '北京市',  
31 - 天津市: '天津市',  
32 - 河北省: '河北省',  
33 - 山西省: '山西省',  
34 - 内蒙古自治区: '内蒙古自治区',  
35 - 辽宁省: '辽宁省',  
36 - 吉林省: '吉林省',  
37 - 黑龙江省: '黑龙江省',  
38 - 上海市: '上海市',  
39 - 江苏省: '江苏省',  
40 - 浙江省: '浙江省',  
41 - 安徽省: '安徽省',  
42 - 福建省: '福建省',  
43 - 江西省: '江西省',  
44 - 山东省: '山东省',  
45 - 河南省: '河南省',  
46 - 湖北省: '湖北省',  
47 - 湖南省: '湖南省',  
48 - 广东省: '广东省',  
49 - 广西壮族自治区: '广西壮族自治区',  
50 - 海南省: '海南省',  
51 - 重庆市: '重庆市',  
52 - 四川省: '四川省',  
53 - 贵州省: '贵州省',  
54 - 云南省: '云南省',  
55 - 西藏自治区: '西藏自治区',  
56 - 陕西省: '陕西省',  
57 - 甘肃省: '甘肃省',  
58 - 青海省: '青海省',  
59 - 宁夏回族自治区: '宁夏回族自治区',  
60 - 新疆维吾尔自治区: '新疆维吾尔自治区',  
61 - 台湾省: '台湾省',  
62 - 香港特别行政区: '香港特别行政区',  
63 - 澳门特别行政区: '澳门特别行政区',  
64 -};  
src/pages/User/ZoNing/components/modal.tsx deleted 100644 → 0
1 -import {  
2 - getOrderErpOrderZoNingSelectUserAll,  
3 - postOrderErpOrderZoNingSaveOrUpdate,  
4 -} from '@/services';  
5 -import { PlusOutlined } from '@ant-design/icons';  
6 -import {  
7 - ModalForm,  
8 - ProForm,  
9 - ProFormSelect,  
10 - ProFormText,  
11 -} from '@ant-design/pro-components';  
12 -import { Button, Form, message } from 'antd';  
13 -import { provinceEnum, zoningItem } from './constant';  
14 -const waitTime = (time: number = 100) => {  
15 - return new Promise((resolve) => {  
16 - setTimeout(() => {  
17 - resolve(true);  
18 - }, time);  
19 - });  
20 -};  
21 -  
22 -export default ({ toReload, option, needEditBody }) => {  
23 - const [form] = Form.useForm<zoningItem>();  
24 -  
25 - return (  
26 - <ModalForm<{  
27 - zoning: string;  
28 - province: string[];  
29 - user: number[];  
30 - }>  
31 - title={option}  
32 - trigger={  
33 - <Button type="primary" key={option.id}>  
34 - {option !== '编辑' && <PlusOutlined />}  
35 - {option}  
36 - </Button>  
37 - }  
38 - form={form}  
39 - autoFocusFirstInput  
40 - initialValues={{  
41 - zoning: needEditBody.zoning ? needEditBody.zoning : '',  
42 - province: needEditBody.orderProvinceShowList  
43 - ? needEditBody.orderProvinceShowList.split('、')  
44 - : [],  
45 - user: needEditBody.orderUserNumberShowList  
46 - ? needEditBody.orderUserNumberShowList  
47 - : [],  
48 - }}  
49 - modalProps={{  
50 - destroyOnClose: true,  
51 - }}  
52 - submitTimeout={500}  
53 - onFinish={async (values) => {  
54 - console.log(values);  
55 - const orderProvinceList = values.province.map((item) => {  
56 - return { province: item };  
57 - });  
58 - const orderUserList = values.user.map((item) => {  
59 - return { uId: item };  
60 - });  
61 - const fetchData: zoningItem = {  
62 - zoning: values.zoning,  
63 - orderProvinceVoList: orderProvinceList,  
64 - orderUserVoList: orderUserList,  
65 - };  
66 - let res = await postOrderErpOrderZoNingSaveOrUpdate({  
67 - data: fetchData,  
68 - });  
69 - if (res) {  
70 - console.log(res);  
71 - await waitTime(500);  
72 - console.log(values);  
73 - message.success('提交成功');  
74 - toReload();  
75 - return true;  
76 - }  
77 - return false;  
78 - }}  
79 - >  
80 - <ProForm.Group>  
81 - <ProFormText  
82 - width="lg"  
83 - name="zoning"  
84 - label="区域名称"  
85 - placeholder="请输入"  
86 - rules={[{ required: true, message: '此项为必填项' }]}  
87 - />  
88 - </ProForm.Group>  
89 - <ProForm.Group>  
90 - <ProFormSelect  
91 - name="user"  
92 - width="lg"  
93 - label="负责销售"  
94 - request={async () => {  
95 - const userList = await getOrderErpOrderZoNingSelectUserAll();  
96 - if (userList) {  
97 - let userSelList = [];  
98 - userList.data.forEach((item: { uId: any; userName: any }) =>  
99 - userSelList.push({  
100 - value: item.uId,  
101 - label: item.userName,  
102 - }),  
103 - );  
104 - userSelList.unshift({  
105 - value: 0,  
106 - label: '全选',  
107 - });  
108 - return userSelList;  
109 - }  
110 - return [];  
111 - }}  
112 - fieldProps={{  
113 - mode: 'multiple',  
114 - }}  
115 - placeholder="请选择"  
116 - rules={[  
117 - {  
118 - required: true,  
119 - message: '请选择!',  
120 - type: 'array',  
121 - },  
122 - ]}  
123 - />  
124 - </ProForm.Group>  
125 - <ProForm.Group>  
126 - <ProFormSelect  
127 - name="province"  
128 - width="lg"  
129 - label="管辖地区"  
130 - valueEnum={provinceEnum}  
131 - fieldProps={{  
132 - mode: 'multiple',  
133 - }}  
134 - placeholder="请选择"  
135 - rules={[  
136 - {  
137 - required: true,  
138 - message: '请选择!',  
139 - type: 'array',  
140 - },  
141 - ]}  
142 - />  
143 - </ProForm.Group>  
144 - </ModalForm>  
145 - );  
146 -};  
src/pages/User/ZoNing/components/table.tsx deleted 100644 → 0
1 -import {  
2 - deleteOrderErpOrderZoNingDelete,  
3 - getOrderErpOrderZoNingSelectAll,  
4 -} from '@/services';  
5 -import type { ProColumns } from '@ant-design/pro-components';  
6 -import { EditableProTable } from '@ant-design/pro-components';  
7 -import { Button, Popconfirm, PopconfirmProps, message } from 'antd';  
8 -import React, { useRef, useState } from 'react';  
9 -import '../index.less';  
10 -import { zoningItem, zoningShowItem } from './constant';  
11 -import Modal from './modal';  
12 -  
13 -const waitTime = (time: number = 100) => {  
14 - return new Promise((resolve) => {  
15 - setTimeout(() => {  
16 - resolve(true);  
17 - }, time);  
18 - });  
19 -};  
20 -  
21 -function changeToShow(array: zoningItem[]) {  
22 - console.log(JSON.parse(localStorage.getItem('userInfo')).username);  
23 - const showArray: zoningShowItem[] = array.map((item) => {  
24 - let orderProvinceShowList = '';  
25 - let orderUserShowList = '';  
26 - let orderUserNumberShowList: number[] = [];  
27 - item.orderProvinceVoList.forEach((element, index) => {  
28 - orderProvinceShowList += element.province;  
29 - if (index < item.orderProvinceVoList.length - 1) {  
30 - orderProvinceShowList += '、';  
31 - }  
32 - });  
33 -  
34 - item.orderUserVoList.forEach((event, index) => {  
35 - orderUserShowList += event.userName;  
36 - orderUserNumberShowList.push(event.uId);  
37 - if (index < item.orderUserVoList.length - 1) {  
38 - orderUserShowList += '、';  
39 - }  
40 - });  
41 -  
42 - if (orderUserShowList === '') {  
43 - orderUserShowList = '全选';  
44 - orderUserNumberShowList.push(0);  
45 - }  
46 -  
47 - return {  
48 - id: item.id,  
49 - zoning: item.zoning,  
50 - orderProvinceShowList,  
51 - orderUserShowList,  
52 - orderUserNumberShowList,  
53 - };  
54 - });  
55 - return showArray;  
56 -}  
57 -  
58 -export default () => {  
59 - const [editableKeys, setEditableRowKeys] = useState<React.Key[]>([]);  
60 - const [dataSource, setDataSource] = useState<readonly zoningItem[]>([]);  
61 - const [position] = useState<'top' | 'bottom' | 'hidden'>('hidden');  
62 -  
63 - interface ActionType {  
64 - reload: (resetPageIndex?: boolean) => void;  
65 - reloadAndRest: () => void;  
66 - reset: () => void;  
67 - clearSelected?: () => void;  
68 - startEditable: (rowKey: Key) => boolean;  
69 - cancelEditable: (rowKey: Key) => boolean;  
70 - }  
71 -  
72 - const ref = useRef<ActionType>({  
73 - reload: () => {},  
74 - reloadAndRest: () => {},  
75 - reset: () => {},  
76 - startEditable: () => {},  
77 - cancelEditable: () => {},  
78 - });  
79 -  
80 - function reload() {  
81 - ref.current.reload();  
82 - }  
83 -  
84 - const confirm: PopconfirmProps['onConfirm'] = async (id) => {  
85 - await deleteOrderErpOrderZoNingDelete({  
86 - data: id,  
87 - });  
88 - reload();  
89 - message.success('删除成功');  
90 - };  
91 -  
92 - const cancel: PopconfirmProps['onCancel'] = () => {  
93 - message.error('取消删除');  
94 - };  
95 -  
96 - const columns: ProColumns<zoningItem>[] = [  
97 - {  
98 - title: '区域名称',  
99 - dataIndex: 'zoning',  
100 - width: 200,  
101 - },  
102 - {  
103 - title: '管辖省份',  
104 - dataIndex: 'orderProvinceShowList',  
105 - readonly: true,  
106 - width: 600,  
107 - },  
108 - {  
109 - title: '负责销售',  
110 - key: 'state',  
111 - dataIndex: 'orderUserShowList',  
112 - valueType: 'select',  
113 - width: 200,  
114 - },  
115 - {  
116 - title: '操作',  
117 - valueType: 'option',  
118 - width: 200,  
119 - render: (text, record) => [  
120 - <>  
121 - <Modal  
122 - toReload={reload}  
123 - option={'编辑'}  
124 - needEditBody={record}  
125 - key={record.id}  
126 - />  
127 - <Popconfirm  
128 - title="删除此项"  
129 - description="你确定你要删除此项吗?"  
130 - onConfirm={() => {  
131 - confirm(record.id);  
132 - }}  
133 - onCancel={cancel}  
134 - okText="确定"  
135 - cancelText="取消"  
136 - >  
137 - <Button>删除</Button>  
138 - </Popconfirm>  
139 - </>,  
140 - ],  
141 - },  
142 - ];  
143 -  
144 - return (  
145 - <EditableProTable<zoningItem>  
146 - rowKey="id"  
147 - className="table-index"  
148 - deletePopconfirmMessage  
149 - actionRef={ref}  
150 - headerTitle={  
151 - <Modal toReload={reload} option={'新增区域'} needEditBody={{}}></Modal>  
152 - }  
153 - maxLength={5}  
154 - scroll={{  
155 - x: 960,  
156 - }}  
157 - recordCreatorProps={  
158 - position !== 'hidden'  
159 - ? {  
160 - position: position as 'top',  
161 - record: () => ({ id: (Math.random() * 1000000).toFixed(0) }),  
162 - }  
163 - : false  
164 - }  
165 - loading={false}  
166 - columns={columns}  
167 - request={async () => {  
168 - const res = await getOrderErpOrderZoNingSelectAll();  
169 - if (res) {  
170 - const initDataSource = changeToShow(res.data);  
171 - return { data: initDataSource || [] };  
172 - }  
173 - }}  
174 - value={dataSource}  
175 - onChange={setDataSource}  
176 - editable={{  
177 - type: 'multiple',  
178 - editableKeys,  
179 - onSave: async (rowKey, data, row) => {  
180 - console.log(rowKey, data, row);  
181 - await waitTime(2000);  
182 - },  
183 - onChange: setEditableRowKeys,  
184 - }}  
185 - />  
186 - );  
187 -};  
src/pages/User/ZoNing/index.tsx deleted 100644 → 0
1 -import Table from './components/table';  
2 -const instalment_contect: React.FC = () => (  
3 - <>  
4 - <Table></Table>  
5 - </>  
6 -);  
7 -  
8 -export default instalment_contect;  
src/services/definition.ts
@@ -221,8 +221,9 @@ export interface AdminDeptVO { @@ -221,8 +221,9 @@ export interface AdminDeptVO {
221 pid?: number; 221 pid?: number;
222 } 222 }
223 223
224 -export interface AdminInvoicingAccountDto { 224 +export interface AdminInvoicingAccountDTO {
225 account?: string; 225 account?: string;
  226 + accountText?: string;
226 createByName?: string; 227 createByName?: string;
227 /** @format date-time */ 228 /** @format date-time */
228 createTime?: string; 229 createTime?: string;
@@ -230,6 +231,7 @@ export interface AdminInvoicingAccountDto { @@ -230,6 +231,7 @@ export interface AdminInvoicingAccountDto {
230 id?: number; 231 id?: number;
231 logicDelete?: boolean; 232 logicDelete?: boolean;
232 password?: string; 233 password?: string;
  234 + paths?: Array<string>;
233 updateByName?: string; 235 updateByName?: string;
234 /** @format date-time */ 236 /** @format date-time */
235 updateTime?: string; 237 updateTime?: string;
@@ -698,7 +700,7 @@ export interface ApiQueryOrderStatusCountsRequest { @@ -698,7 +700,7 @@ export interface ApiQueryOrderStatusCountsRequest {
698 uid?: number; 700 uid?: number;
699 } 701 }
700 702
701 -export interface ApplyInvoiceDto { 703 +export interface ApplyInvoiceDTO {
702 /** 704 /**
703 * @description 705 * @description
704 * 备注 706 * 备注
@@ -749,6 +751,9 @@ export interface ApplyInvoiceDto { @@ -749,6 +751,9 @@ export interface ApplyInvoiceDto {
749 * 发票号码 751 * 发票号码
750 */ 752 */
751 invoiceNumber?: string; 753 invoiceNumber?: string;
  754 + invoicingAccount?: string;
  755 + /** @format date */
  756 + invoicingDate?: string;
752 /** 757 /**
753 * @description 758 * @description
754 * 开票人 759 * 开票人
@@ -770,8 +775,6 @@ export interface ApplyInvoiceDto { @@ -770,8 +775,6 @@ export interface ApplyInvoiceDto {
770 * 开具类型 775 * 开具类型
771 */ 776 */
772 invoicingTypeText?: string; 777 invoicingTypeText?: string;
773 - /** @format date */  
774 - invoicingdate?: string;  
775 /** 778 /**
776 * @description 779 * @description
777 * 是否加急 780 * 是否加急
@@ -1437,7 +1440,7 @@ export interface InvoiceDto { @@ -1437,7 +1440,7 @@ export interface InvoiceDto {
1437 subOrderIds?: Array<number>; 1440 subOrderIds?: Array<number>;
1438 } 1441 }
1439 1442
1440 -export interface InvoiceRecordDto { 1443 +export interface InvoiceRecordDTO {
1441 applyInvoicingNotes?: string; 1444 applyInvoicingNotes?: string;
1442 /** 1445 /**
1443 * @description 1446 * @description
@@ -1484,6 +1487,9 @@ export interface InvoiceRecordDto { @@ -1484,6 +1487,9 @@ export interface InvoiceRecordDto {
1484 * 发票号码 1487 * 发票号码
1485 */ 1488 */
1486 invoiceNumber?: string; 1489 invoiceNumber?: string;
  1490 + invoicingAccount?: string;
  1491 + /** @format date */
  1492 + invoicingDate?: string;
1487 /** 1493 /**
1488 * @description 1494 * @description
1489 * 开票人 1495 * 开票人
@@ -1505,8 +1511,6 @@ export interface InvoiceRecordDto { @@ -1505,8 +1511,6 @@ export interface InvoiceRecordDto {
1505 * 开具类型 1511 * 开具类型
1506 */ 1512 */
1507 invoicingTypeText?: string; 1513 invoicingTypeText?: string;
1508 - /** @format date */  
1509 - invoicingdate?: string;  
1510 /** 1514 /**
1511 * @description 1515 * @description
1512 * 是否加急 1516 * 是否加急
@@ -1695,6 +1699,18 @@ export interface InvoiceRecordQueryRequest { @@ -1695,6 +1699,18 @@ export interface InvoiceRecordQueryRequest {
1695 /** 1699 /**
1696 * @description 1700 * @description
1697 * 开票时间 1701 * 开票时间
  1702 + * @format date
  1703 + */
  1704 + invoicingDateGe?: string;
  1705 + /**
  1706 + * @description
  1707 + * 开票时间
  1708 + * @format date
  1709 + */
  1710 + invoicingDateLe?: string;
  1711 + /**
  1712 + * @description
  1713 + * 开票时间
1698 * @format date-time 1714 * @format date-time
1699 */ 1715 */
1700 invoicingTimeGe?: string; 1716 invoicingTimeGe?: string;
@@ -2589,6 +2605,7 @@ export interface QueryClientDto { @@ -2589,6 +2605,7 @@ export interface QueryClientDto {
2589 companyAddressLike?: string; 2605 companyAddressLike?: string;
2590 companyIds?: Array<number>; 2606 companyIds?: Array<number>;
2591 companyNameLike?: string; 2607 companyNameLike?: string;
  2608 + createByUserIdIn?: Array<number>;
2592 /** @format date-time */ 2609 /** @format date-time */
2593 createTimeGe?: string; 2610 createTimeGe?: string;
2594 /** @format date-time */ 2611 /** @format date-time */
@@ -2597,6 +2614,7 @@ export interface QueryClientDto { @@ -2597,6 +2614,7 @@ export interface QueryClientDto {
2597 current?: number; 2614 current?: number;
2598 /** @format int32 */ 2615 /** @format int32 */
2599 end?: number; 2616 end?: number;
  2617 + groupFilter?: string;
2600 hasScheme?: boolean; 2618 hasScheme?: boolean;
2601 level?: string; 2619 level?: string;
2602 namelike?: string; 2620 namelike?: string;
@@ -2728,6 +2746,18 @@ export interface QueryInvoiceRecordDto { @@ -2728,6 +2746,18 @@ export interface QueryInvoiceRecordDto {
2728 /** 2746 /**
2729 * @description 2747 * @description
2730 * 开票时间 2748 * 开票时间
  2749 + * @format date
  2750 + */
  2751 + invoicingDateGe?: string;
  2752 + /**
  2753 + * @description
  2754 + * 开票时间
  2755 + * @format date
  2756 + */
  2757 + invoicingDateLe?: string;
  2758 + /**
  2759 + * @description
  2760 + * 开票时间
2731 * @format date-time 2761 * @format date-time
2732 */ 2762 */
2733 invoicingTimeGe?: string; 2763 invoicingTimeGe?: string;
@@ -2908,75 +2938,53 @@ export interface ReissueInvoiceDto { @@ -2908,75 +2938,53 @@ export interface ReissueInvoiceDto {
2908 purchaser?: string; 2938 purchaser?: string;
2909 } 2939 }
2910 2940
2911 -export interface ResearchGroupAccountAddRequest {  
2912 - /**  
2913 - * @description  
2914 - * 关联的账号id  
2915 - * @format int64  
2916 - */  
2917 - accountId?: number;  
2918 - /**  
2919 - * @description  
2920 - * 关联的账号名称  
2921 - */  
2922 - accountName?: string; 2941 +export interface ResearchGroupAddRequest {
  2942 + accounts?: Array<ResearchGroupAccounts>;
2923 /** 2943 /**
2924 * @description 2944 * @description
2925 - * 关联的账号手机号 2945 + * 单位名称
2926 */ 2946 */
2927 - accountPhone?: string; 2947 + companyName?: string;
  2948 + createByName?: string;
  2949 + /** @format date-time */
  2950 + createTime?: string;
2928 /** 2951 /**
2929 * @description 2952 * @description
2930 - * 课题组id  
2931 - * @format int64 2953 + * 课题组名称
2932 */ 2954 */
2933 - groupId?: number;  
2934 -}  
2935 -  
2936 -export interface ResearchGroupAccountEditRequest { 2955 + groupName?: string;
2937 /** 2956 /**
2938 * @description 2957 * @description
2939 - * 关联的账号id 2958 + * 主键id
2940 * @format int64 2959 * @format int64
2941 */ 2960 */
2942 - accountId?: number;  
2943 - /**  
2944 - * @description  
2945 - * 关联的账号名称  
2946 - */  
2947 - accountName?: string;  
2948 - /**  
2949 - * @description  
2950 - * 关联的账号手机号  
2951 - */  
2952 - accountPhone?: string; 2961 + id?: number;
2953 /** 2962 /**
2954 * @description 2963 * @description
2955 - * 课题组id  
2956 - * @format int64 2964 + * 负责人
2957 */ 2965 */
2958 - groupId?: number; 2966 + leaderName?: string;
  2967 + logicDelete?: boolean;
  2968 + members?: Array<ResearchGroupMembers>;
  2969 + paths?: Array<string>;
2959 /** 2970 /**
2960 * @description 2971 * @description
2961 - * 主键id  
2962 - * @format int64 2972 + * 状态
2963 */ 2973 */
2964 - id?: number;  
2965 -}  
2966 -  
2967 -export interface ResearchGroupAddRequest {  
2968 - accounts?: Array<ResearchGroupAccountAddRequest>; 2974 + status?: string;
2969 /** 2975 /**
2970 * @description 2976 * @description
2971 - * 课题组名称 2977 + * 冗余字段,当前状态备注
2972 */ 2978 */
2973 - group?: string; 2979 + statusNotes?: string;
2974 /** 2980 /**
2975 * @description 2981 * @description
2976 - * 课题组负责人 2982 + * 状态文本
2977 */ 2983 */
2978 - leader?: string;  
2979 - members?: Array<ResearchGroupMemberAddRequest>; 2984 + statusText?: string;
  2985 + updateByName?: string;
  2986 + /** @format date-time */
  2987 + updateTime?: string;
2980 } 2988 }
2981 2989
2982 export interface ResearchGroupDeleteRequest { 2990 export interface ResearchGroupDeleteRequest {
@@ -2997,16 +3005,20 @@ export interface ResearchGroupDetailRequest { @@ -2997,16 +3005,20 @@ export interface ResearchGroupDetailRequest {
2997 } 3005 }
2998 3006
2999 export interface ResearchGroupEditRequest { 3007 export interface ResearchGroupEditRequest {
  3008 + accounts?: Array<ResearchGroupAccounts>;
3000 /** 3009 /**
3001 * @description 3010 * @description
3002 - * 课题组预存账号 3011 + * 单位名称
3003 */ 3012 */
3004 - accounts?: Array<ResearchGroupAccountEditRequest>; 3013 + companyName?: string;
  3014 + createByName?: string;
  3015 + /** @format date-time */
  3016 + createTime?: string;
3005 /** 3017 /**
3006 * @description 3018 * @description
3007 * 课题组名称 3019 * 课题组名称
3008 */ 3020 */
3009 - group?: string; 3021 + groupName?: string;
3010 /** 3022 /**
3011 * @description 3023 * @description
3012 * 主键id 3024 * 主键id
@@ -3015,14 +3027,30 @@ export interface ResearchGroupEditRequest { @@ -3015,14 +3027,30 @@ export interface ResearchGroupEditRequest {
3015 id?: number; 3027 id?: number;
3016 /** 3028 /**
3017 * @description 3029 * @description
3018 - * 课题组负责人 3030 + * 负责人
3019 */ 3031 */
3020 - leader?: string; 3032 + leaderName?: string;
  3033 + logicDelete?: boolean;
  3034 + members?: Array<ResearchGroupMembers>;
  3035 + paths?: Array<string>;
3021 /** 3036 /**
3022 * @description 3037 * @description
3023 - * 课题组成员集合 3038 + * 状态
3024 */ 3039 */
3025 - members?: Array<ResearchGroupMemberEditRequest>; 3040 + status?: string;
  3041 + /**
  3042 + * @description
  3043 + * 冗余字段,当前状态备注
  3044 + */
  3045 + statusNotes?: string;
  3046 + /**
  3047 + * @description
  3048 + * 状态文本
  3049 + */
  3050 + statusText?: string;
  3051 + updateByName?: string;
  3052 + /** @format date-time */
  3053 + updateTime?: string;
3026 } 3054 }
3027 3055
3028 export interface ResearchGroupListRequest { 3056 export interface ResearchGroupListRequest {
@@ -3031,6 +3059,11 @@ export interface ResearchGroupListRequest { @@ -3031,6 +3059,11 @@ export interface ResearchGroupListRequest {
3031 * 预存账号手机号 3059 * 预存账号手机号
3032 */ 3060 */
3033 accountPhone?: string; 3061 accountPhone?: string;
  3062 + /**
  3063 + * @description
  3064 + * 公司名称
  3065 + */
  3066 + companyNameLike?: string;
3034 /** @format int32 */ 3067 /** @format int32 */
3035 current?: number; 3068 current?: number;
3036 /** @format int32 */ 3069 /** @format int32 */
@@ -3042,6 +3075,11 @@ export interface ResearchGroupListRequest { @@ -3042,6 +3075,11 @@ export interface ResearchGroupListRequest {
3042 groupName?: string; 3075 groupName?: string;
3043 /** 3076 /**
3044 * @description 3077 * @description
  3078 + * id
  3079 + */
  3080 + idIn?: Array<number>;
  3081 + /**
  3082 + * @description
3045 * 课题组负责人 3083 * 课题组负责人
3046 */ 3084 */
3047 leaderName?: string; 3085 leaderName?: string;
@@ -3059,30 +3097,34 @@ export interface ResearchGroupListRequest { @@ -3059,30 +3097,34 @@ export interface ResearchGroupListRequest {
3059 pageSize?: number; 3097 pageSize?: number;
3060 /** @format int32 */ 3098 /** @format int32 */
3061 start?: number; 3099 start?: number;
  3100 + /**
  3101 + * @description
  3102 + * 状态
  3103 + */
  3104 + status?: string;
3062 /** @format int32 */ 3105 /** @format int32 */
3063 total?: number; 3106 total?: number;
3064 } 3107 }
3065 3108
3066 -export interface ResearchGroupMemberAddRequest { 3109 +export interface ResearchGroupMemberRequestAddRequest {
3067 /** 3110 /**
3068 * @description 3111 * @description
3069 - * 课题组ID  
3070 - * @format int64 3112 + * 审核备注
3071 */ 3113 */
3072 - groupId?: number; 3114 + auditNotes?: string;
3073 /** 3115 /**
3074 * @description 3116 * @description
3075 - * 成员名称 3117 + * 审核状态:CREATED-未审核 AUDIT_FAIL-审核不通过 AUDIT_PASS-审核通过
3076 */ 3118 */
3077 - memberName?: string; 3119 + auditStatus?: string;
3078 /** 3120 /**
3079 * @description 3121 * @description
3080 - * 成员手机号 3122 + * 审核状态:CREATED-未审核 AUDIT_FAIL-审核不通过 AUDIT_PASS-审核通过
3081 */ 3123 */
3082 - memberPhone?: string;  
3083 -}  
3084 -  
3085 -export interface ResearchGroupMemberEditRequest { 3124 + auditStatusText?: string;
  3125 + createByName?: string;
  3126 + /** @format date-time */
  3127 + createTime?: string;
3086 /** 3128 /**
3087 * @description 3129 * @description
3088 * 课题组ID 3130 * 课题组ID
@@ -3091,10 +3133,16 @@ export interface ResearchGroupMemberEditRequest { @@ -3091,10 +3133,16 @@ export interface ResearchGroupMemberEditRequest {
3091 groupId?: number; 3133 groupId?: number;
3092 /** 3134 /**
3093 * @description 3135 * @description
  3136 + * 课题组名称
  3137 + */
  3138 + groupName?: string;
  3139 + /**
  3140 + * @description
3094 * 主键id 3141 * 主键id
3095 * @format int64 3142 * @format int64
3096 */ 3143 */
3097 id?: number; 3144 id?: number;
  3145 + logicDelete?: boolean;
3098 /** 3146 /**
3099 * @description 3147 * @description
3100 * 成员名称 3148 * 成员名称
@@ -3105,26 +3153,26 @@ export interface ResearchGroupMemberEditRequest { @@ -3105,26 +3153,26 @@ export interface ResearchGroupMemberEditRequest {
3105 * 成员手机号 3153 * 成员手机号
3106 */ 3154 */
3107 memberPhone?: string; 3155 memberPhone?: string;
3108 -}  
3109 -  
3110 -export interface ResearchGroupMemberRequestAddRequest { 3156 + members?: Array<ResearchGroupMembers>;
  3157 + paths?: Array<string>;
3111 /** 3158 /**
3112 * @description 3159 * @description
3113 - * 课题组ID  
3114 - * @format int64 3160 + * 权限
3115 */ 3161 */
3116 - groupId?: number; 3162 + permissions?: Array<string>;
3117 /** 3163 /**
3118 * @description 3164 * @description
3119 - * 课题组名称 3165 + * 申请备注
3120 */ 3166 */
3121 - groupName?: string;  
3122 - members?: Array<ResearchGroupMemberAddRequest>; 3167 + requestNotes?: string;
3123 /** 3168 /**
3124 * @description 3169 * @description
3125 - * 申请备注 3170 + * 申请类型:APPEND-新增 REMOVE-删除 MODIFY-修改
3126 */ 3171 */
3127 - requestNotes?: string; 3172 + requestType?: string;
  3173 + updateByName?: string;
  3174 + /** @format date-time */
  3175 + updateTime?: string;
3128 } 3176 }
3129 3177
3130 export interface ResearchGroupMemberRequestDeleteRequest { 3178 export interface ResearchGroupMemberRequestDeleteRequest {
@@ -3147,6 +3195,24 @@ export interface ResearchGroupMemberRequestDetailRequest { @@ -3147,6 +3195,24 @@ export interface ResearchGroupMemberRequestDetailRequest {
3147 export interface ResearchGroupMemberRequestEditRequest { 3195 export interface ResearchGroupMemberRequestEditRequest {
3148 /** 3196 /**
3149 * @description 3197 * @description
  3198 + * 审核备注
  3199 + */
  3200 + auditNotes?: string;
  3201 + /**
  3202 + * @description
  3203 + * 审核状态:CREATED-未审核 AUDIT_FAIL-审核不通过 AUDIT_PASS-审核通过
  3204 + */
  3205 + auditStatus?: string;
  3206 + /**
  3207 + * @description
  3208 + * 审核状态:CREATED-未审核 AUDIT_FAIL-审核不通过 AUDIT_PASS-审核通过
  3209 + */
  3210 + auditStatusText?: string;
  3211 + createByName?: string;
  3212 + /** @format date-time */
  3213 + createTime?: string;
  3214 + /**
  3215 + * @description
3150 * 课题组ID 3216 * 课题组ID
3151 * @format int64 3217 * @format int64
3152 */ 3218 */
@@ -3162,6 +3228,7 @@ export interface ResearchGroupMemberRequestEditRequest { @@ -3162,6 +3228,7 @@ export interface ResearchGroupMemberRequestEditRequest {
3162 * @format int64 3228 * @format int64
3163 */ 3229 */
3164 id?: number; 3230 id?: number;
  3231 + logicDelete?: boolean;
3165 /** 3232 /**
3166 * @description 3233 * @description
3167 * 成员名称 3234 * 成员名称
@@ -3172,11 +3239,25 @@ export interface ResearchGroupMemberRequestEditRequest { @@ -3172,11 +3239,25 @@ export interface ResearchGroupMemberRequestEditRequest {
3172 * 成员手机号 3239 * 成员手机号
3173 */ 3240 */
3174 memberPhone?: string; 3241 memberPhone?: string;
  3242 + paths?: Array<string>;
  3243 + /**
  3244 + * @description
  3245 + * 权限
  3246 + */
  3247 + permissions?: Array<string>;
3175 /** 3248 /**
3176 * @description 3249 * @description
3177 * 申请备注 3250 * 申请备注
3178 */ 3251 */
3179 requestNotes?: string; 3252 requestNotes?: string;
  3253 + /**
  3254 + * @description
  3255 + * 申请类型:APPEND-新增 REMOVE-删除 MODIFY-修改
  3256 + */
  3257 + requestType?: string;
  3258 + updateByName?: string;
  3259 + /** @format date-time */
  3260 + updateTime?: string;
3180 } 3261 }
3181 3262
3182 export interface ResearchGroupMemberRequestsRequest { 3263 export interface ResearchGroupMemberRequestsRequest {
@@ -3385,6 +3466,7 @@ export interface SubOrder { @@ -3385,6 +3466,7 @@ export interface SubOrder {
3385 /** @format date-time */ 3466 /** @format date-time */
3386 updateTime?: string; 3467 updateTime?: string;
3387 urgentInvoiceAuditNotes?: string; 3468 urgentInvoiceAuditNotes?: string;
  3469 + useOldInvoicingProcess?: boolean;
3388 /** @format int32 */ 3470 /** @format int32 */
3389 version?: number; 3471 version?: number;
3390 } 3472 }
@@ -3815,6 +3897,76 @@ export interface InvoiceDetail { @@ -3815,6 +3897,76 @@ export interface InvoiceDetail {
3815 unit?: string; 3897 unit?: string;
3816 } 3898 }
3817 3899
  3900 +export interface ResearchGroupAccounts {
  3901 + /**
  3902 + * @description
  3903 + * 关联的账号id
  3904 + * @format int64
  3905 + */
  3906 + accountId?: number;
  3907 + /**
  3908 + * @description
  3909 + * 关联的账号名称
  3910 + */
  3911 + accountName?: string;
  3912 + /**
  3913 + * @description
  3914 + * 关联的账号手机号
  3915 + */
  3916 + accountPhone?: string;
  3917 + createByName?: string;
  3918 + /** @format date-time */
  3919 + createTime?: string;
  3920 + /**
  3921 + * @description
  3922 + * 课题组id
  3923 + * @format int64
  3924 + */
  3925 + groupId?: number;
  3926 + /**
  3927 + * @description
  3928 + * 主键id
  3929 + * @format int64
  3930 + */
  3931 + id?: number;
  3932 + logicDelete?: boolean;
  3933 + updateByName?: string;
  3934 + /** @format date-time */
  3935 + updateTime?: string;
  3936 +}
  3937 +
  3938 +export interface ResearchGroupMembers {
  3939 + createByName?: string;
  3940 + /** @format date-time */
  3941 + createTime?: string;
  3942 + /**
  3943 + * @description
  3944 + * 课题组ID
  3945 + * @format int64
  3946 + */
  3947 + groupId?: number;
  3948 + /**
  3949 + * @description
  3950 + * 主键id
  3951 + * @format int64
  3952 + */
  3953 + id?: number;
  3954 + logicDelete?: boolean;
  3955 + /**
  3956 + * @description
  3957 + * 成员名称
  3958 + */
  3959 + memberName?: string;
  3960 + /**
  3961 + * @description
  3962 + * 成员手机号
  3963 + */
  3964 + memberPhone?: string;
  3965 + updateByName?: string;
  3966 + /** @format date-time */
  3967 + updateTime?: string;
  3968 +}
  3969 +
3818 export interface SalesRechargePrepaymentAuditRequest { 3970 export interface SalesRechargePrepaymentAuditRequest {
3819 /** 3971 /**
3820 * @description 3972 * @description
src/services/request.ts
@@ -9,7 +9,7 @@ import type { @@ -9,7 +9,7 @@ import type {
9 AdminClientDto, 9 AdminClientDto,
10 AdminDeptQueryVO, 10 AdminDeptQueryVO,
11 AdminDeptVO, 11 AdminDeptVO,
12 - AdminInvoicingAccountDto, 12 + AdminInvoicingAccountDTO,
13 AdminJobQueryVO, 13 AdminJobQueryVO,
14 AdminJobVO, 14 AdminJobVO,
15 AdminMenuQueryVO, 15 AdminMenuQueryVO,
@@ -31,7 +31,7 @@ import type { @@ -31,7 +31,7 @@ import type {
31 ApiOrderEvaluatedRequest, 31 ApiOrderEvaluatedRequest,
32 ApiQueryOrderDetailRequest, 32 ApiQueryOrderDetailRequest,
33 ApiQueryOrderStatusCountsRequest, 33 ApiQueryOrderStatusCountsRequest,
34 - ApplyInvoiceDto, 34 + ApplyInvoiceDTO,
35 AuditDto, 35 AuditDto,
36 AuditVO, 36 AuditVO,
37 CancelInvoiceAndBankStatementDto, 37 CancelInvoiceAndBankStatementDto,
@@ -54,7 +54,7 @@ import type { @@ -54,7 +54,7 @@ import type {
54 Dto, 54 Dto,
55 InventoryMaterialStockReq, 55 InventoryMaterialStockReq,
56 InvoiceDto, 56 InvoiceDto,
57 - InvoiceRecordDto, 57 + InvoiceRecordDTO,
58 InvoiceRecordQueryRequest, 58 InvoiceRecordQueryRequest,
59 MainOrderqueryRequest, 59 MainOrderqueryRequest,
60 MaterialListReply, 60 MaterialListReply,
@@ -63,7 +63,6 @@ import type { @@ -63,7 +63,6 @@ import type {
63 MaterialUnitListRes, 63 MaterialUnitListRes,
64 MeasureUnitListRes, 64 MeasureUnitListRes,
65 MessageQueryDTO, 65 MessageQueryDTO,
66 - ModelAndView,  
67 OrderAddVO, 66 OrderAddVO,
68 OrderAuditLogQueryVO, 67 OrderAuditLogQueryVO,
69 OrderBaseInfoQueryVO, 68 OrderBaseInfoQueryVO,
@@ -474,6 +473,60 @@ export const postAdminClientExportClients = /* #__PURE__ */ (() =&gt; { @@ -474,6 +473,60 @@ export const postAdminClientExportClients = /* #__PURE__ */ (() =&gt; {
474 return request; 473 return request;
475 })(); 474 })();
476 475
  476 +/** @description response type for postAdminClientGetStatisticalData */
  477 +export interface PostAdminClientGetStatisticalDataResponse {
  478 + /**
  479 + * @description
  480 + * OK
  481 + */
  482 + 200: ServerResult;
  483 + /**
  484 + * @description
  485 + * Created
  486 + */
  487 + 201: any;
  488 + /**
  489 + * @description
  490 + * Unauthorized
  491 + */
  492 + 401: any;
  493 + /**
  494 + * @description
  495 + * Forbidden
  496 + */
  497 + 403: any;
  498 + /**
  499 + * @description
  500 + * Not Found
  501 + */
  502 + 404: any;
  503 +}
  504 +
  505 +export type PostAdminClientGetStatisticalDataResponseSuccess =
  506 + PostAdminClientGetStatisticalDataResponse[200];
  507 +/**
  508 + * @description
  509 + * 修改跟进信息
  510 + * @tags 客户管理
  511 + * @produces *
  512 + * @consumes application/json
  513 + */
  514 +export const postAdminClientGetStatisticalData = /* #__PURE__ */ (() => {
  515 + const method = 'post';
  516 + const url = '/admin/client/getStatisticalData';
  517 + function request(): Promise<PostAdminClientGetStatisticalDataResponseSuccess> {
  518 + return requester(request.url, {
  519 + method: request.method,
  520 + }) as unknown as Promise<PostAdminClientGetStatisticalDataResponseSuccess>;
  521 + }
  522 +
  523 + /** http method */
  524 + request.method = method;
  525 + /** request url */
  526 + request.url = url;
  527 + return request;
  528 +})();
  529 +
477 /** @description request parameter type for postAdminClientImportClient */ 530 /** @description request parameter type for postAdminClientImportClient */
478 export interface PostAdminClientImportClientOption { 531 export interface PostAdminClientImportClientOption {
479 /** 532 /**
@@ -3172,7 +3225,9 @@ export interface GetErrorResponse { @@ -3172,7 +3225,9 @@ export interface GetErrorResponse {
3172 * @description 3225 * @description
3173 * OK 3226 * OK
3174 */ 3227 */
3175 - 200: ModelAndView; 3228 + 200: {
  3229 + [propertyName: string]: any;
  3230 + };
3176 /** 3231 /**
3177 * @description 3232 * @description
3178 * Unauthorized 3233 * Unauthorized
@@ -3193,9 +3248,9 @@ export interface GetErrorResponse { @@ -3193,9 +3248,9 @@ export interface GetErrorResponse {
3193 export type GetErrorResponseSuccess = GetErrorResponse[200]; 3248 export type GetErrorResponseSuccess = GetErrorResponse[200];
3194 /** 3249 /**
3195 * @description 3250 * @description
3196 - * errorHtml 3251 + * error
3197 * @tags basic-error-controller 3252 * @tags basic-error-controller
3198 - * @produces text/html 3253 + * @produces *
3199 */ 3254 */
3200 export const getError = /* #__PURE__ */ (() => { 3255 export const getError = /* #__PURE__ */ (() => {
3201 const method = 'get'; 3256 const method = 'get';
@@ -3219,7 +3274,9 @@ export interface PutErrorResponse { @@ -3219,7 +3274,9 @@ export interface PutErrorResponse {
3219 * @description 3274 * @description
3220 * OK 3275 * OK
3221 */ 3276 */
3222 - 200: ModelAndView; 3277 + 200: {
  3278 + [propertyName: string]: any;
  3279 + };
3223 /** 3280 /**
3224 * @description 3281 * @description
3225 * Created 3282 * Created
@@ -3245,9 +3302,9 @@ export interface PutErrorResponse { @@ -3245,9 +3302,9 @@ export interface PutErrorResponse {
3245 export type PutErrorResponseSuccess = PutErrorResponse[200]; 3302 export type PutErrorResponseSuccess = PutErrorResponse[200];
3246 /** 3303 /**
3247 * @description 3304 * @description
3248 - * errorHtml 3305 + * error
3249 * @tags basic-error-controller 3306 * @tags basic-error-controller
3250 - * @produces text/html 3307 + * @produces *
3251 * @consumes application/json 3308 * @consumes application/json
3252 */ 3309 */
3253 export const putError = /* #__PURE__ */ (() => { 3310 export const putError = /* #__PURE__ */ (() => {
@@ -3272,7 +3329,9 @@ export interface PostErrorResponse { @@ -3272,7 +3329,9 @@ export interface PostErrorResponse {
3272 * @description 3329 * @description
3273 * OK 3330 * OK
3274 */ 3331 */
3275 - 200: ModelAndView; 3332 + 200: {
  3333 + [propertyName: string]: any;
  3334 + };
3276 /** 3335 /**
3277 * @description 3336 * @description
3278 * Created 3337 * Created
@@ -3298,9 +3357,9 @@ export interface PostErrorResponse { @@ -3298,9 +3357,9 @@ export interface PostErrorResponse {
3298 export type PostErrorResponseSuccess = PostErrorResponse[200]; 3357 export type PostErrorResponseSuccess = PostErrorResponse[200];
3299 /** 3358 /**
3300 * @description 3359 * @description
3301 - * errorHtml 3360 + * error
3302 * @tags basic-error-controller 3361 * @tags basic-error-controller
3303 - * @produces text/html 3362 + * @produces *
3304 * @consumes application/json 3363 * @consumes application/json
3305 */ 3364 */
3306 export const postError = /* #__PURE__ */ (() => { 3365 export const postError = /* #__PURE__ */ (() => {
@@ -3325,7 +3384,9 @@ export interface DeleteErrorResponse { @@ -3325,7 +3384,9 @@ export interface DeleteErrorResponse {
3325 * @description 3384 * @description
3326 * OK 3385 * OK
3327 */ 3386 */
3328 - 200: ModelAndView; 3387 + 200: {
  3388 + [propertyName: string]: any;
  3389 + };
3329 /** 3390 /**
3330 * @description 3391 * @description
3331 * No Content 3392 * No Content
@@ -3346,9 +3407,9 @@ export interface DeleteErrorResponse { @@ -3346,9 +3407,9 @@ export interface DeleteErrorResponse {
3346 export type DeleteErrorResponseSuccess = DeleteErrorResponse[200]; 3407 export type DeleteErrorResponseSuccess = DeleteErrorResponse[200];
3347 /** 3408 /**
3348 * @description 3409 * @description
3349 - * errorHtml 3410 + * error
3350 * @tags basic-error-controller 3411 * @tags basic-error-controller
3351 - * @produces text/html 3412 + * @produces *
3352 */ 3413 */
3353 export const deleteError = /* #__PURE__ */ (() => { 3414 export const deleteError = /* #__PURE__ */ (() => {
3354 const method = 'delete'; 3415 const method = 'delete';
@@ -3372,7 +3433,9 @@ export interface OptionsErrorResponse { @@ -3372,7 +3433,9 @@ export interface OptionsErrorResponse {
3372 * @description 3433 * @description
3373 * OK 3434 * OK
3374 */ 3435 */
3375 - 200: ModelAndView; 3436 + 200: {
  3437 + [propertyName: string]: any;
  3438 + };
3376 /** 3439 /**
3377 * @description 3440 * @description
3378 * No Content 3441 * No Content
@@ -3393,9 +3456,9 @@ export interface OptionsErrorResponse { @@ -3393,9 +3456,9 @@ export interface OptionsErrorResponse {
3393 export type OptionsErrorResponseSuccess = OptionsErrorResponse[200]; 3456 export type OptionsErrorResponseSuccess = OptionsErrorResponse[200];
3394 /** 3457 /**
3395 * @description 3458 * @description
3396 - * errorHtml 3459 + * error
3397 * @tags basic-error-controller 3460 * @tags basic-error-controller
3398 - * @produces text/html 3461 + * @produces *
3399 * @consumes application/json 3462 * @consumes application/json
3400 */ 3463 */
3401 export const optionsError = /* #__PURE__ */ (() => { 3464 export const optionsError = /* #__PURE__ */ (() => {
@@ -3420,7 +3483,9 @@ export interface HeadErrorResponse { @@ -3420,7 +3483,9 @@ export interface HeadErrorResponse {
3420 * @description 3483 * @description
3421 * OK 3484 * OK
3422 */ 3485 */
3423 - 200: ModelAndView; 3486 + 200: {
  3487 + [propertyName: string]: any;
  3488 + };
3424 /** 3489 /**
3425 * @description 3490 * @description
3426 * No Content 3491 * No Content
@@ -3441,9 +3506,9 @@ export interface HeadErrorResponse { @@ -3441,9 +3506,9 @@ export interface HeadErrorResponse {
3441 export type HeadErrorResponseSuccess = HeadErrorResponse[200]; 3506 export type HeadErrorResponseSuccess = HeadErrorResponse[200];
3442 /** 3507 /**
3443 * @description 3508 * @description
3444 - * errorHtml 3509 + * error
3445 * @tags basic-error-controller 3510 * @tags basic-error-controller
3446 - * @produces text/html 3511 + * @produces *
3447 * @consumes application/json 3512 * @consumes application/json
3448 */ 3513 */
3449 export const headError = /* #__PURE__ */ (() => { 3514 export const headError = /* #__PURE__ */ (() => {
@@ -3468,7 +3533,9 @@ export interface PatchErrorResponse { @@ -3468,7 +3533,9 @@ export interface PatchErrorResponse {
3468 * @description 3533 * @description
3469 * OK 3534 * OK
3470 */ 3535 */
3471 - 200: ModelAndView; 3536 + 200: {
  3537 + [propertyName: string]: any;
  3538 + };
3472 /** 3539 /**
3473 * @description 3540 * @description
3474 * No Content 3541 * No Content
@@ -3489,9 +3556,9 @@ export interface PatchErrorResponse { @@ -3489,9 +3556,9 @@ export interface PatchErrorResponse {
3489 export type PatchErrorResponseSuccess = PatchErrorResponse[200]; 3556 export type PatchErrorResponseSuccess = PatchErrorResponse[200];
3490 /** 3557 /**
3491 * @description 3558 * @description
3492 - * errorHtml 3559 + * error
3493 * @tags basic-error-controller 3560 * @tags basic-error-controller
3494 - * @produces text/html 3561 + * @produces *
3495 * @consumes application/json 3562 * @consumes application/json
3496 */ 3563 */
3497 export const patchError = /* #__PURE__ */ (() => { 3564 export const patchError = /* #__PURE__ */ (() => {
@@ -10517,7 +10584,7 @@ export type PostResearchGroupMemberRequestsAddResponseSuccess = @@ -10517,7 +10584,7 @@ export type PostResearchGroupMemberRequestsAddResponseSuccess =
10517 /** 10584 /**
10518 * @description 10585 * @description
10519 * 新增申请信息 10586 * 新增申请信息
10520 - * @tags research-group-member-requests-controller 10587 + * @tags research-group-request-controller
10521 * @produces * 10588 * @produces *
10522 * @consumes application/json 10589 * @consumes application/json
10523 */ 10590 */
@@ -10588,7 +10655,7 @@ export type PostResearchGroupMemberRequestsDeleteResponseSuccess = @@ -10588,7 +10655,7 @@ export type PostResearchGroupMemberRequestsDeleteResponseSuccess =
10588 /** 10655 /**
10589 * @description 10656 * @description
10590 * 删除申请信息 10657 * 删除申请信息
10591 - * @tags research-group-member-requests-controller 10658 + * @tags research-group-request-controller
10592 * @produces * 10659 * @produces *
10593 * @consumes application/json 10660 * @consumes application/json
10594 */ 10661 */
@@ -10659,7 +10726,7 @@ export type PostResearchGroupMemberRequestsDetailResponseSuccess = @@ -10659,7 +10726,7 @@ export type PostResearchGroupMemberRequestsDetailResponseSuccess =
10659 /** 10726 /**
10660 * @description 10727 * @description
10661 * 查询申请信息 10728 * 查询申请信息
10662 - * @tags research-group-member-requests-controller 10729 + * @tags research-group-request-controller
10663 * @produces * 10730 * @produces *
10664 * @consumes application/json 10731 * @consumes application/json
10665 */ 10732 */
@@ -10730,7 +10797,7 @@ export type PostResearchGroupMemberRequestsEditResponseSuccess = @@ -10730,7 +10797,7 @@ export type PostResearchGroupMemberRequestsEditResponseSuccess =
10730 /** 10797 /**
10731 * @description 10798 * @description
10732 * 编辑申请信息 10799 * 编辑申请信息
10733 - * @tags research-group-member-requests-controller 10800 + * @tags research-group-request-controller
10734 * @produces * 10801 * @produces *
10735 * @consumes application/json 10802 * @consumes application/json
10736 */ 10803 */
@@ -10801,7 +10868,7 @@ export type PostResearchGroupMemberRequestsListResponseSuccess = @@ -10801,7 +10868,7 @@ export type PostResearchGroupMemberRequestsListResponseSuccess =
10801 /** 10868 /**
10802 * @description 10869 * @description
10803 * 申请列表 10870 * 申请列表
10804 - * @tags research-group-member-requests-controller 10871 + * @tags research-group-request-controller
10805 * @produces * 10872 * @produces *
10806 * @consumes application/json 10873 * @consumes application/json
10807 */ 10874 */
@@ -11865,6 +11932,60 @@ export const postServiceConstCanApplyAfterInvoicingStatus = @@ -11865,6 +11932,60 @@ export const postServiceConstCanApplyAfterInvoicingStatus =
11865 return request; 11932 return request;
11866 })(); 11933 })();
11867 11934
  11935 +/** @description response type for postServiceConstClientGroupFilters */
  11936 +export interface PostServiceConstClientGroupFiltersResponse {
  11937 + /**
  11938 + * @description
  11939 + * OK
  11940 + */
  11941 + 200: ServerResult;
  11942 + /**
  11943 + * @description
  11944 + * Created
  11945 + */
  11946 + 201: any;
  11947 + /**
  11948 + * @description
  11949 + * Unauthorized
  11950 + */
  11951 + 401: any;
  11952 + /**
  11953 + * @description
  11954 + * Forbidden
  11955 + */
  11956 + 403: any;
  11957 + /**
  11958 + * @description
  11959 + * Not Found
  11960 + */
  11961 + 404: any;
  11962 +}
  11963 +
  11964 +export type PostServiceConstClientGroupFiltersResponseSuccess =
  11965 + PostServiceConstClientGroupFiltersResponse[200];
  11966 +/**
  11967 + * @description
  11968 + * 获取客户分组
  11969 + * @tags front-const-controller
  11970 + * @produces *
  11971 + * @consumes application/json
  11972 + */
  11973 +export const postServiceConstClientGroupFilters = /* #__PURE__ */ (() => {
  11974 + const method = 'post';
  11975 + const url = '/service/const/clientGroupFilters';
  11976 + function request(): Promise<PostServiceConstClientGroupFiltersResponseSuccess> {
  11977 + return requester(request.url, {
  11978 + method: request.method,
  11979 + }) as unknown as Promise<PostServiceConstClientGroupFiltersResponseSuccess>;
  11980 + }
  11981 +
  11982 + /** http method */
  11983 + request.method = method;
  11984 + /** request url */
  11985 + request.url = url;
  11986 + return request;
  11987 +})();
  11988 +
11868 /** @description response type for postServiceConstClientLevels */ 11989 /** @description response type for postServiceConstClientLevels */
11869 export interface PostServiceConstClientLevelsResponse { 11990 export interface PostServiceConstClientLevelsResponse {
11870 /** 11991 /**
@@ -11973,6 +12094,77 @@ export const postServiceConstGetPayeeEnum = /* #__PURE__ */ (() =&gt; { @@ -11973,6 +12094,77 @@ export const postServiceConstGetPayeeEnum = /* #__PURE__ */ (() =&gt; {
11973 return request; 12094 return request;
11974 })(); 12095 })();
11975 12096
  12097 +/** @description request parameter type for postServiceConstInitInvoiceDetailNames */
  12098 +export interface PostServiceConstInitInvoiceDetailNamesOption {
  12099 + /**
  12100 + * @description
  12101 + * productNames
  12102 + */
  12103 + body: {
  12104 + /**
  12105 + @description
  12106 + productNames */
  12107 + productNames: Array<string>;
  12108 + };
  12109 +}
  12110 +
  12111 +/** @description response type for postServiceConstInitInvoiceDetailNames */
  12112 +export interface PostServiceConstInitInvoiceDetailNamesResponse {
  12113 + /**
  12114 + * @description
  12115 + * OK
  12116 + */
  12117 + 200: ServerResult;
  12118 + /**
  12119 + * @description
  12120 + * Created
  12121 + */
  12122 + 201: any;
  12123 + /**
  12124 + * @description
  12125 + * Unauthorized
  12126 + */
  12127 + 401: any;
  12128 + /**
  12129 + * @description
  12130 + * Forbidden
  12131 + */
  12132 + 403: any;
  12133 + /**
  12134 + * @description
  12135 + * Not Found
  12136 + */
  12137 + 404: any;
  12138 +}
  12139 +
  12140 +export type PostServiceConstInitInvoiceDetailNamesResponseSuccess =
  12141 + PostServiceConstInitInvoiceDetailNamesResponse[200];
  12142 +/**
  12143 + * @description
  12144 + * 根据公司名获取收款方
  12145 + * @tags front-const-controller
  12146 + * @produces *
  12147 + * @consumes application/json
  12148 + */
  12149 +export const postServiceConstInitInvoiceDetailNames = /* #__PURE__ */ (() => {
  12150 + const method = 'post';
  12151 + const url = '/service/const/initInvoiceDetailNames';
  12152 + function request(
  12153 + option: PostServiceConstInitInvoiceDetailNamesOption,
  12154 + ): Promise<PostServiceConstInitInvoiceDetailNamesResponseSuccess> {
  12155 + return requester(request.url, {
  12156 + method: request.method,
  12157 + ...option,
  12158 + }) as unknown as Promise<PostServiceConstInitInvoiceDetailNamesResponseSuccess>;
  12159 + }
  12160 +
  12161 + /** http method */
  12162 + request.method = method;
  12163 + /** request url */
  12164 + request.url = url;
  12165 + return request;
  12166 +})();
  12167 +
11976 /** @description response type for postServiceConstInvoiceType */ 12168 /** @description response type for postServiceConstInvoiceType */
11977 export interface PostServiceConstInvoiceTypeResponse { 12169 export interface PostServiceConstInvoiceTypeResponse {
11978 /** 12170 /**
@@ -12152,6 +12344,60 @@ export const postServiceConstListInvoiceDetailNames = /* #__PURE__ */ (() =&gt; { @@ -12152,6 +12344,60 @@ export const postServiceConstListInvoiceDetailNames = /* #__PURE__ */ (() =&gt; {
12152 return request; 12344 return request;
12153 })(); 12345 })();
12154 12346
  12347 +/** @description response type for postServiceConstListResearchGroupsStatus */
  12348 +export interface PostServiceConstListResearchGroupsStatusResponse {
  12349 + /**
  12350 + * @description
  12351 + * OK
  12352 + */
  12353 + 200: ServerResult;
  12354 + /**
  12355 + * @description
  12356 + * Created
  12357 + */
  12358 + 201: any;
  12359 + /**
  12360 + * @description
  12361 + * Unauthorized
  12362 + */
  12363 + 401: any;
  12364 + /**
  12365 + * @description
  12366 + * Forbidden
  12367 + */
  12368 + 403: any;
  12369 + /**
  12370 + * @description
  12371 + * Not Found
  12372 + */
  12373 + 404: any;
  12374 +}
  12375 +
  12376 +export type PostServiceConstListResearchGroupsStatusResponseSuccess =
  12377 + PostServiceConstListResearchGroupsStatusResponse[200];
  12378 +/**
  12379 + * @description
  12380 + * 获取课题组状态
  12381 + * @tags front-const-controller
  12382 + * @produces *
  12383 + * @consumes application/json
  12384 + */
  12385 +export const postServiceConstListResearchGroupsStatus = /* #__PURE__ */ (() => {
  12386 + const method = 'post';
  12387 + const url = '/service/const/listResearchGroupsStatus';
  12388 + function request(): Promise<PostServiceConstListResearchGroupsStatusResponseSuccess> {
  12389 + return requester(request.url, {
  12390 + method: request.method,
  12391 + }) as unknown as Promise<PostServiceConstListResearchGroupsStatusResponseSuccess>;
  12392 + }
  12393 +
  12394 + /** http method */
  12395 + request.method = method;
  12396 + /** request url */
  12397 + request.url = url;
  12398 + return request;
  12399 +})();
  12400 +
12155 /** @description response type for postServiceConstNotCanModifyInvoiceRecordStatus */ 12401 /** @description response type for postServiceConstNotCanModifyInvoiceRecordStatus */
12156 export interface PostServiceConstNotCanModifyInvoiceRecordStatusResponse { 12402 export interface PostServiceConstNotCanModifyInvoiceRecordStatusResponse {
12157 /** 12403 /**
@@ -12416,7 +12662,7 @@ export interface PostServiceInvoiceAddInvoicingAccountOption { @@ -12416,7 +12662,7 @@ export interface PostServiceInvoiceAddInvoicingAccountOption {
12416 /** 12662 /**
12417 @description 12663 @description
12418 dto */ 12664 dto */
12419 - dto: AdminInvoicingAccountDto; 12665 + dto: AdminInvoicingAccountDTO;
12420 }; 12666 };
12421 } 12667 }
12422 12668
@@ -12487,7 +12733,7 @@ export interface PostServiceInvoiceApplyInvoiceOption { @@ -12487,7 +12733,7 @@ export interface PostServiceInvoiceApplyInvoiceOption {
12487 /** 12733 /**
12488 @description 12734 @description
12489 dto */ 12735 dto */
12490 - dto: ApplyInvoiceDto; 12736 + dto: ApplyInvoiceDTO;
12491 }; 12737 };
12492 } 12738 }
12493 12739
@@ -13534,7 +13780,7 @@ export interface PostServiceInvoiceModifyRecordOption { @@ -13534,7 +13780,7 @@ export interface PostServiceInvoiceModifyRecordOption {
13534 /** 13780 /**
13535 @description 13781 @description
13536 dto */ 13782 dto */
13537 - dto: InvoiceRecordDto; 13783 + dto: InvoiceRecordDTO;
13538 }; 13784 };
13539 } 13785 }
13540 13786