Commit b86fb27eb104f6fed3f949bf7d280bf3d9ec4f6b

Authored by 曾国涛
1 parent b4ce1862

feat(user-management): add user management routes and components

- Introduce new routes for user management including authority and role management.
- Add corresponding component views for user management features.
- Refactor definition.ts to include new types and interfaces for client and company info.
- Update OrderPrint and ZoNing components with new functionalities.
- Modify table.tsx and modal.tsx in ZoNing components to support user and province selection.
.umirc.ts
... ... @@ -99,6 +99,22 @@ export default defineConfig({
99 99 component: './OrderPrint',
100 100 layout: false,
101 101 },
  102 + /*{
  103 + name: '用户管理',
  104 + path: '/user',
  105 + routes:[
  106 + {
  107 + name: '权限管理',
  108 + path: 'authrity',
  109 + icon: 'BookOutlined',
  110 + component: './Instalment' },
  111 + {
  112 + name: '角色管理',
  113 + path: 'role',
  114 + icon: 'BookOutlined',
  115 + component: './User/ZoNing' },
  116 + ]
  117 + },*/
102 118 ],
103 119  
104 120 npmClient: 'pnpm',
... ...
src/pages/Order/components/InvoicingDrawerForm.tsx
... ... @@ -20,10 +20,10 @@ import {
20 20 ProFormText,
21 21 ProFormTextArea,
22 22 } from '@ant-design/pro-components';
23   -import { Button, Divider, Form, Tag } from 'antd';
  23 +import { Button, Divider, Form } from 'antd';
24 24 import { useEffect } from 'react';
25 25  
26   -export default ({ dataList, mainOrder, setVisible, onClose }) => {
  26 +export default ({ dataList, setVisible, onClose }) => {
27 27 // let subOrderIds = dataList?.map((item) => {
28 28 // return item.id;
29 29 // });
... ... @@ -38,7 +38,7 @@ export default ({ dataList, mainOrder, setVisible, onClose }) => {
38 38 console.log('resize!');
39 39 },
40 40 maxWidth: window.innerWidth * 0.8,
41   - minWidth: 400,
  41 + minWidth: 500,
42 42 }}
43 43 form={form}
44 44 autoFocusFirstInput
... ... @@ -88,18 +88,6 @@ export default ({ dataList, mainOrder, setVisible, onClose }) => {
88 88 <ProFormText readonly={true} name="value" label="" />
89 89 </ProFormGroup>
90 90 </ProFormList>
91   - <ProFormText
92   - rules={[
93   - {
94   - required: true,
95   - },
96   - ]}
97   - width="md"
98   - name="partyAName"
99   - label="购方名称"
100   - initialValue={mainOrder.institution}
101   - placeholder="请输入名称"
102   - />
103 91 <ProFormSelect
104 92 key="key"
105 93 label="购方名称"
... ... @@ -114,19 +102,13 @@ export default ({ dataList, mainOrder, setVisible, onClose }) =&gt; {
114 102 fieldProps={{
115 103 optionItemRender(item) {
116 104 if (item.type === 'add') {
117   - return (
118   - <>
119   - <Tag key={item.name}>{item.name}</Tag>
120   - <Divider type="vertical" />
121   - <Tag key={item.id}>新增</Tag>
122   - </>
123   - );
  105 + return <>{item.name}</>;
124 106 }
125 107 return (
126 108 <>
127   - <Tag key={item.name}>{item.name}</Tag>
  109 + {item.name}
128 110 <Divider type="vertical" />
129   - <Tag key={item.taxId}>{item.taxId}</Tag>
  111 + {item.taxId}
130 112 </>
131 113 );
132 114 },
... ... @@ -135,7 +117,10 @@ export default ({ dataList, mainOrder, setVisible, onClose }) =&gt; {
135 117 request={async (value) => {
136 118 const keywords = value.keyWords;
137 119 const res = await postServiceInvoiceQueryCompanyInfo({
138   - data: { nameLike: keywords },
  120 + data: {
  121 + nameLike: keywords,
  122 + taxIdIsNotNull: true,
  123 + },
139 124 });
140 125 let options = res?.data?.map((company) => {
141 126 return {
... ... @@ -159,7 +144,6 @@ export default ({ dataList, mainOrder, setVisible, onClose }) =&gt; {
159 144 return options;
160 145 }}
161 146 />
162   - ,
163 147 <ProFormText
164 148 width="md"
165 149 name="partyATaxid"
... ...
src/pages/Order/index.tsx
... ... @@ -1311,12 +1311,12 @@ const OrderPage = () =&gt; {
1311 1311 setOrderCheckType(CHECK_TYPE.URGENT_INVOICE_AUDITING);
1312 1312 }}
1313 1313 >
1314   - 加急审核
  1314 + 加急审核(新)
1315 1315 </Button>
1316 1316 ) : (
1317 1317 ''
1318 1318 )}
1319   - {optRecord.subPath?.includes('URGENT_INVOICE_AUDITING') ? (
  1319 + {optRecord.subPath?.includes('URGENT_INVOICE_AUDITING_old') ? (
1320 1320 <Button
1321 1321 className="p-0"
1322 1322 type="link"
... ... @@ -1394,13 +1394,13 @@ const OrderPage = () =&gt; {
1394 1394 setReissueVisible(true);
1395 1395 }}
1396 1396 >
1397   - 重新开票
  1397 + 重新开票(新)
1398 1398 </Button>
1399 1399 ) : (
1400 1400 ''
1401 1401 )}
1402 1402  
1403   - {optRecord.subPath?.includes('confirmReissue') ? (
  1403 + {optRecord.subPath?.includes('confirmReissue_old') ? (
1404 1404 <Button
1405 1405 className="p-0"
1406 1406 type="link"
... ... @@ -1427,7 +1427,7 @@ const OrderPage = () =&gt; {
1427 1427 setOrderCheckType(CHECK_TYPE.CONFIRM_REISSUE);
1428 1428 }}
1429 1429 >
1430   - 重新开票审核
  1430 + 重新开票审核(新)
1431 1431 </Button>
1432 1432 ) : (
1433 1433 ''
... ... @@ -1547,7 +1547,7 @@ const OrderPage = () =&gt; {
1547 1547 ''
1548 1548 )}
1549 1549  
1550   - {optRecord.subPath?.includes('saleCancelInvoicing') ? (
  1550 + {optRecord.subPath?.includes('saleCancelInvoicing_old') ? (
1551 1551 <ButtonConfirm
1552 1552 className="p-0"
1553 1553 title="确认取消申请开票?"
... ... @@ -1572,7 +1572,7 @@ const OrderPage = () =&gt; {
1572 1572 <ButtonConfirm
1573 1573 className="p-0"
1574 1574 title="确认取消申请开票?"
1575   - text="取消申请"
  1575 + text="取消申请(新)"
1576 1576 onConfirm={async () => {
1577 1577 let res = await postServiceInvoiceCancelApply({
1578 1578 data: {
... ... @@ -1803,23 +1803,6 @@ const OrderPage = () =&gt; {
1803 1803 ''
1804 1804 )}
1805 1805  
1806   - {/*{optRecord.subPath?.includes('applyInvoicing') ? (
1807   - <Button
1808   - className="p-0"
1809   - type="link"
1810   - onClick={() => {
1811   - setApplyForInvoicingVisible(true);
1812   - createOptObject(optRecord.id, record.id);
1813   - setIsEdit(false);
1814   - setIsMainOrder(false);
1815   - }}
1816   - >
1817   - 申请开票
1818   - </Button>
1819   - ) : (
1820   - ''
1821   - )}*/}
1822   -
1823 1806 {optRecord.subPath?.includes('applyInvoicing') ? (
1824 1807 <Button
1825 1808 className="p-0"
... ... @@ -1831,13 +1814,13 @@ const OrderPage = () =&gt; {
1831 1814 setIsMainOrder(false);
1832 1815 }}
1833 1816 >
1834   - 申请开票
  1817 + 申请开票(新)
1835 1818 </Button>
1836 1819 ) : (
1837 1820 ''
1838 1821 )}
1839 1822  
1840   - {optRecord.subPath?.includes('applyInvoicing') ? (
  1823 + {optRecord.subPath?.includes('applyInvoicing_old') ? (
1841 1824 <Button
1842 1825 className="p-0"
1843 1826 type="link"
... ... @@ -2720,12 +2703,12 @@ const OrderPage = () =&gt; {
2720 2703 setOrderCheckType(CHECK_TYPE.URGENT_INVOICE_AUDITING);
2721 2704 }}
2722 2705 >
2723   - 加急审核
  2706 + 加急审核(新)
2724 2707 </Button>
2725 2708 ) : (
2726 2709 ''
2727 2710 )}
2728   - {record.mainPath?.includes('URGENT_INVOICE_AUDITING') ? (
  2711 + {record.mainPath?.includes('URGENT_INVOICE_AUDITING_old') ? (
2729 2712 <Button
2730 2713 className="p-0"
2731 2714 type="link"
... ... @@ -2870,7 +2853,7 @@ const OrderPage = () =&gt; {
2870 2853 ''
2871 2854 )}
2872 2855  
2873   - {record.mainPath?.includes('confirmReissue') ? (
  2856 + {record.mainPath?.includes('confirmReissue_old') ? (
2874 2857 <Button
2875 2858 className="p-0"
2876 2859 type="link"
... ... @@ -2898,7 +2881,7 @@ const OrderPage = () =&gt; {
2898 2881 setReissueVisible(true);
2899 2882 }}
2900 2883 >
2901   - 重新开票
  2884 + 重新开票(新)
2902 2885 </Button>
2903 2886 ) : (
2904 2887 ''
... ... @@ -2915,7 +2898,7 @@ const OrderPage = () =&gt; {
2915 2898 setOrderCheckType(CHECK_TYPE.CONFIRM_REISSUE);
2916 2899 }}
2917 2900 >
2918   - 重新开票审核
  2901 + 重新开票审核(新)
2919 2902 </Button>
2920 2903 ) : (
2921 2904 ''
... ... @@ -3334,7 +3317,7 @@ const OrderPage = () =&gt; {
3334 3317 ''
3335 3318 )}
3336 3319  
3337   - {record.mainPath?.includes('applyInvoicing') ? (
  3320 + {record.mainPath?.includes('applyInvoicing_old') ? (
3338 3321 <Button
3339 3322 type="link"
3340 3323 className="p-0"
... ... @@ -3402,7 +3385,7 @@ const OrderPage = () =&gt; {
3402 3385 setIsMainOrder(false);
3403 3386 }}
3404 3387 >
3405   - 申请开票
  3388 + 申请开票(新)
3406 3389 </Button>
3407 3390 ) : (
3408 3391 ''
... ... @@ -3610,7 +3593,7 @@ const OrderPage = () =&gt; {
3610 3593 ''
3611 3594 )}
3612 3595  
3613   - {record.mainPath?.includes('saleCancelInvoicing') ? (
  3596 + {record.mainPath?.includes('saleCancelInvoicing_old') ? (
3614 3597 <ButtonConfirm
3615 3598 className="p-0"
3616 3599 title="确认取消申请开票?"
... ...
src/pages/User/ZoNing/components/constant.tsx 0 → 100644
  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 0 → 100644
  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 0 → 100644
  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.css 0 → 100644
  1 +.item {
  2 + background: '#0092ff';
  3 + padding: '8px 0';
  4 + display: flex;
  5 + flex-flow: row nowrap;
  6 + align-content: normal;
  7 + align-items: center;
  8 + padding-bottom: 20px;
  9 +}
  10 +
  11 +.table-index td {
  12 + font-family: 'San Francisco', 'Helvetica Neue', Helvetica, Arial,
  13 + 'Microsoft YaHei', 'PingFang SC', 'Hiragino Sans GB', 'Heiti SC',
  14 + 'WenQuanYi Micro Hei', sans-serif;
  15 + font-size: 14px;
  16 +}
... ...
src/pages/User/ZoNing/index.less 0 → 100644
  1 +.item {
  2 + background: '#0092ff';
  3 + padding: '8px 0';
  4 + display: flex;
  5 + flex-flow: row nowrap;
  6 + // flex-direction: row;
  7 + // flex-wrap: nowrap;
  8 + align-content: normal;
  9 + align-items: center;
  10 + padding-bottom: 20px;
  11 +}
  12 +
  13 +.table-index td {
  14 + font-family: 'San Francisco', 'Helvetica Neue', Helvetica, Arial,
  15 + 'Microsoft YaHei', 'PingFang SC', 'Hiragino Sans GB', 'Heiti SC',
  16 + 'WenQuanYi Micro Hei', sans-serif;
  17 + font-size: 14px;
  18 +}
... ...
src/pages/User/ZoNing/index.tsx 0 → 100644
  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
... ... @@ -83,6 +83,117 @@ export interface AdminAuthUserVO {
83 83 userId?: number;
84 84 }
85 85  
  86 +export interface AdminClientDto {
  87 + /**
  88 + * @description
  89 + * 市
  90 + */
  91 + city?: string;
  92 + /**
  93 + * @description
  94 + * 单位地址
  95 + */
  96 + companyAddress?: string;
  97 + /**
  98 + * @description
  99 + * 单位地址
  100 + */
  101 + companyAddressText?: string;
  102 + companyId?: string;
  103 + /**
  104 + * @description
  105 + * 单位名称
  106 + */
  107 + companyName?: string;
  108 + contacts?: string;
  109 + createBy?: string;
  110 + /** @format date-time */
  111 + createTime?: string;
  112 + /**
  113 + * @description
  114 + * 区
  115 + */
  116 + district?: string;
  117 + /** @format int32 */
  118 + enableFlag?: number;
  119 + /**
  120 + * @description
  121 + * 是否已报方案
  122 + */
  123 + hasScheme?: boolean;
  124 + hasSchemeText?: string;
  125 + /** @format int64 */
  126 + id?: number;
  127 + /** @format date-time */
  128 + latestCommunicationTime?: string;
  129 + /**
  130 + * @description
  131 + * 客户等级
  132 + */
  133 + level?: string;
  134 + /**
  135 + * @description
  136 + * 客户等级
  137 + */
  138 + levelText?: string;
  139 + modifyBy?: string;
  140 + /** @format date-time */
  141 + modifyTime?: string;
  142 + /**
  143 + * @description
  144 + * 名称
  145 + */
  146 + name?: string;
  147 + /**
  148 + * @description
  149 + * 备注
  150 + */
  151 + notes?: string;
  152 + /**
  153 + * @description
  154 + * 电话号码
  155 + */
  156 + phoneNumber?: string;
  157 + /**
  158 + * @description
  159 + * 省
  160 + */
  161 + province?: string;
  162 + /**
  163 + * @description
  164 + * 报价时间
  165 + * @format date-time
  166 + */
  167 + quoteDatetime?: string;
  168 + /**
  169 + * @description
  170 + * 推荐人
  171 + */
  172 + referrers?: string;
  173 + /**
  174 + * @description
  175 + * 需求
  176 + */
  177 + requirements?: string;
  178 + /**
  179 + * @description
  180 + * 来源
  181 + */
  182 + source?: string;
  183 + /**
  184 + * @description
  185 + * 跟进状态
  186 + */
  187 + tradeStatus?: string;
  188 + /**
  189 + * @description
  190 + * 跟进状态
  191 + */
  192 + tradeStatusText?: string;
  193 + /** @format int32 */
  194 + version?: number;
  195 +}
  196 +
86 197 export interface AdminDeptQueryVO {
87 198 /** @format int32 */
88 199 current?: number;
... ... @@ -916,6 +1027,50 @@ export interface CommonAuditRequest {
916 1027 type?: string;
917 1028 }
918 1029  
  1030 +export interface CompanyInfoDto {
  1031 + address?: string;
  1032 + bank?: string;
  1033 + bankAccount?: string;
  1034 + /**
  1035 + * @description
  1036 + * 创建字段的用户的名字
  1037 + */
  1038 + createByName?: string;
  1039 + /**
  1040 + * @description
  1041 + * 创建时间
  1042 + * @format date-time
  1043 + */
  1044 + createTime?: string;
  1045 + /** @format int64 */
  1046 + id?: number;
  1047 + /**
  1048 + * @description
  1049 + * 逻辑删除 默认为1表示未删除,为0表示已经删除
  1050 + */
  1051 + logicDelete?: boolean;
  1052 + name?: string;
  1053 + phoneNumber?: string;
  1054 + taxId?: string;
  1055 + /**
  1056 + * @description
  1057 + * 更新字段的用户的名字
  1058 + */
  1059 + updateByName?: string;
  1060 + /**
  1061 + * @description
  1062 + * 更新时间
  1063 + * @format date-time
  1064 + */
  1065 + updateTime?: string;
  1066 + /**
  1067 + * @description
  1068 + * 版本号
  1069 + * @format int32
  1070 + */
  1071 + version?: number;
  1072 +}
  1073 +
919 1074 export interface Contactperson {
920 1075 birthday?: string;
921 1076 contactAddress?: string;
... ... @@ -2421,7 +2576,7 @@ export interface QueryClientDto {
2421 2576 current?: number;
2422 2577 /** @format int32 */
2423 2578 end?: number;
2424   - hasScheme?: string;
  2579 + hasScheme?: boolean;
2425 2580 level?: string;
2426 2581 namelike?: string;
2427 2582 /** @format int32 */
... ... @@ -2434,6 +2589,27 @@ export interface QueryClientDto {
2434 2589 tradeStatus?: string;
2435 2590 }
2436 2591  
  2592 +export interface QueryCommunicationInfoDto {
  2593 + /** @format int64 */
  2594 + clientId?: number;
  2595 + content?: string;
  2596 + /** @format int32 */
  2597 + current?: number;
  2598 + /** @format date-time */
  2599 + datetime?: string;
  2600 + /** @format int32 */
  2601 + end?: number;
  2602 + /** @format int64 */
  2603 + id?: number;
  2604 + /** @format int32 */
  2605 + pageSize?: number;
  2606 + /** @format int32 */
  2607 + start?: number;
  2608 + /** @format int32 */
  2609 + total?: number;
  2610 + way?: string;
  2611 +}
  2612 +
2437 2613 export interface QueryCustomerInformationDto {
2438 2614 /**
2439 2615 * @description
... ... @@ -3518,50 +3694,40 @@ export interface ApiOrderConfirmReceiveRequest {
3518 3694 subOrderIds?: Array<number>;
3519 3695 }
3520 3696  
3521   -export interface CompanyInfo {
3522   - address?: string;
3523   - addressLike?: string;
3524   - bank?: string;
3525   - bankAccount?: string;
  3697 +export interface ClientCommunicationInfo {
  3698 + /** @format int64 */
  3699 + clientId?: number;
3526 3700 /**
3527 3701 * @description
3528   - * 创建字段的用户的名字
  3702 + * 内容
3529 3703 */
  3704 + content?: string;
3530 3705 createByName?: string;
  3706 + /** @format date-time */
  3707 + createTime?: string;
3531 3708 /**
3532 3709 * @description
3533   - * 创建时间
  3710 + * 跟进时间
3534 3711 * @format date-time
3535 3712 */
3536   - createTime?: string;
  3713 + datetime?: string;
3537 3714 /** @format int64 */
3538 3715 id?: number;
3539   - /**
3540   - * @description
3541   - * 逻辑删除 默认为1表示未删除,为0表示已经删除
3542   - */
3543 3716 logicDelete?: boolean;
3544   - name?: string;
3545   - nameLike?: string;
3546   - phoneNumber?: string;
3547   - taxId?: string;
3548   - /**
3549   - * @description
3550   - * 更新字段的用户的名字
3551   - */
3552 3717 updateByName?: string;
3553   - /**
3554   - * @description
3555   - * 更新时间
3556   - * @format date-time
3557   - */
  3718 + /** @format date-time */
3558 3719 updateTime?: string;
3559 3720 /**
3560 3721 * @description
3561   - * 版本号
3562   - * @format int32
  3722 + * 方式
3563 3723 */
3564   - version?: number;
  3724 + way?: string;
  3725 +}
  3726 +
  3727 +export interface CompanyInfo {
  3728 + addressLike?: string;
  3729 + nameLike?: string;
  3730 + taxIdIsNotNull?: boolean;
3565 3731 }
3566 3732  
3567 3733 export interface TsgFile {
... ...
src/services/request.ts
... ... @@ -6,6 +6,7 @@ import { request as requester } from &#39;umi&#39;;
6 6 import type {
7 7 AdminAuthRoleVO,
8 8 AdminAuthUserVO,
  9 + AdminClientDto,
9 10 AdminDeptQueryVO,
10 11 AdminDeptVO,
11 12 AdminJobQueryVO,
... ... @@ -35,8 +36,10 @@ import type {
35 36 CancelInvoiceAndBankStatementDto,
36 37 CancelSendOrderDto,
37 38 CaptchaMessageVO,
  39 + ClientCommunicationInfo,
38 40 CommonAuditRequest,
39 41 CompanyInfo,
  42 + CompanyInfoDto,
40 43 CustomFieldRes,
41 44 CustomerCustomerListReq,
42 45 CustomerDetailDto,
... ... @@ -59,7 +62,6 @@ import type {
59 62 MaterialUnitListRes,
60 63 MeasureUnitListRes,
61 64 MessageQueryDTO,
62   - ModelAndView,
63 65 OrderAddVO,
64 66 OrderAuditLogQueryVO,
65 67 OrderBaseInfoQueryVO,
... ... @@ -84,6 +86,7 @@ import type {
84 86 QueryAnnexDto,
85 87 QueryBankStatementDto,
86 88 QueryClientDto,
  89 + QueryCommunicationInfoDto,
87 90 QueryCustomerInformationDto,
88 91 QueryHistoryRecordDto,
89 92 QueryInvoiceDetailDto,
... ... @@ -130,6 +133,631 @@ import type {
130 133 UserNowMoneyCheckRequest,
131 134 } from './definition';
132 135  
  136 +/** @description request parameter type for postAdminClientAddAdminClient */
  137 +export interface PostAdminClientAddAdminClientOption {
  138 + /**
  139 + * @description
  140 + * dto
  141 + */
  142 + body: {
  143 + /**
  144 + @description
  145 + dto */
  146 + dto: AdminClientDto;
  147 + };
  148 +}
  149 +
  150 +/** @description response type for postAdminClientAddAdminClient */
  151 +export interface PostAdminClientAddAdminClientResponse {
  152 + /**
  153 + * @description
  154 + * OK
  155 + */
  156 + 200: ServerResult;
  157 + /**
  158 + * @description
  159 + * Created
  160 + */
  161 + 201: any;
  162 + /**
  163 + * @description
  164 + * Unauthorized
  165 + */
  166 + 401: any;
  167 + /**
  168 + * @description
  169 + * Forbidden
  170 + */
  171 + 403: any;
  172 + /**
  173 + * @description
  174 + * Not Found
  175 + */
  176 + 404: any;
  177 +}
  178 +
  179 +export type PostAdminClientAddAdminClientResponseSuccess =
  180 + PostAdminClientAddAdminClientResponse[200];
  181 +/**
  182 + * @description
  183 + * 添加客户
  184 + * @tags 客户管理
  185 + * @produces *
  186 + * @consumes application/json
  187 + */
  188 +export const postAdminClientAddAdminClient = /* #__PURE__ */ (() => {
  189 + const method = 'post';
  190 + const url = '/admin/client/addAdminClient';
  191 + function request(
  192 + option: PostAdminClientAddAdminClientOption,
  193 + ): Promise<PostAdminClientAddAdminClientResponseSuccess> {
  194 + return requester(request.url, {
  195 + method: request.method,
  196 + ...option,
  197 + }) as unknown as Promise<PostAdminClientAddAdminClientResponseSuccess>;
  198 + }
  199 +
  200 + /** http method */
  201 + request.method = method;
  202 + /** request url */
  203 + request.url = url;
  204 + return request;
  205 +})();
  206 +
  207 +/** @description request parameter type for postAdminClientAddClientComunicationInfo */
  208 +export interface PostAdminClientAddClientComunicationInfoOption {
  209 + /**
  210 + * @description
  211 + * dto
  212 + */
  213 + body: {
  214 + /**
  215 + @description
  216 + dto */
  217 + dto: QueryCommunicationInfoDto;
  218 + };
  219 +}
  220 +
  221 +/** @description response type for postAdminClientAddClientComunicationInfo */
  222 +export interface PostAdminClientAddClientComunicationInfoResponse {
  223 + /**
  224 + * @description
  225 + * OK
  226 + */
  227 + 200: ServerResult;
  228 + /**
  229 + * @description
  230 + * Created
  231 + */
  232 + 201: any;
  233 + /**
  234 + * @description
  235 + * Unauthorized
  236 + */
  237 + 401: any;
  238 + /**
  239 + * @description
  240 + * Forbidden
  241 + */
  242 + 403: any;
  243 + /**
  244 + * @description
  245 + * Not Found
  246 + */
  247 + 404: any;
  248 +}
  249 +
  250 +export type PostAdminClientAddClientComunicationInfoResponseSuccess =
  251 + PostAdminClientAddClientComunicationInfoResponse[200];
  252 +/**
  253 + * @description
  254 + * 添加跟进信息
  255 + * @tags 客户管理
  256 + * @produces *
  257 + * @consumes application/json
  258 + */
  259 +export const postAdminClientAddClientComunicationInfo = /* #__PURE__ */ (() => {
  260 + const method = 'post';
  261 + const url = '/admin/client/addClientComunicationInfo';
  262 + function request(
  263 + option: PostAdminClientAddClientComunicationInfoOption,
  264 + ): Promise<PostAdminClientAddClientComunicationInfoResponseSuccess> {
  265 + return requester(request.url, {
  266 + method: request.method,
  267 + ...option,
  268 + }) as unknown as Promise<PostAdminClientAddClientComunicationInfoResponseSuccess>;
  269 + }
  270 +
  271 + /** http method */
  272 + request.method = method;
  273 + /** request url */
  274 + request.url = url;
  275 + return request;
  276 +})();
  277 +
  278 +/** @description request parameter type for postAdminClientAddOrModifyClientComunicationInfo */
  279 +export interface PostAdminClientAddOrModifyClientComunicationInfoOption {
  280 + /**
  281 + * @description
  282 + * dto
  283 + */
  284 + body: {
  285 + /**
  286 + @description
  287 + dto */
  288 + dto: ClientCommunicationInfo;
  289 + };
  290 +}
  291 +
  292 +/** @description response type for postAdminClientAddOrModifyClientComunicationInfo */
  293 +export interface PostAdminClientAddOrModifyClientComunicationInfoResponse {
  294 + /**
  295 + * @description
  296 + * OK
  297 + */
  298 + 200: ServerResult;
  299 + /**
  300 + * @description
  301 + * Created
  302 + */
  303 + 201: any;
  304 + /**
  305 + * @description
  306 + * Unauthorized
  307 + */
  308 + 401: any;
  309 + /**
  310 + * @description
  311 + * Forbidden
  312 + */
  313 + 403: any;
  314 + /**
  315 + * @description
  316 + * Not Found
  317 + */
  318 + 404: any;
  319 +}
  320 +
  321 +export type PostAdminClientAddOrModifyClientComunicationInfoResponseSuccess =
  322 + PostAdminClientAddOrModifyClientComunicationInfoResponse[200];
  323 +/**
  324 + * @description
  325 + * 修改跟进信息
  326 + * @tags 客户管理
  327 + * @produces *
  328 + * @consumes application/json
  329 + */
  330 +export const postAdminClientAddOrModifyClientComunicationInfo =
  331 + /* #__PURE__ */ (() => {
  332 + const method = 'post';
  333 + const url = '/admin/client/addOrModifyClientComunicationInfo';
  334 + function request(
  335 + option: PostAdminClientAddOrModifyClientComunicationInfoOption,
  336 + ): Promise<PostAdminClientAddOrModifyClientComunicationInfoResponseSuccess> {
  337 + return requester(request.url, {
  338 + method: request.method,
  339 + ...option,
  340 + }) as unknown as Promise<PostAdminClientAddOrModifyClientComunicationInfoResponseSuccess>;
  341 + }
  342 +
  343 + /** http method */
  344 + request.method = method;
  345 + /** request url */
  346 + request.url = url;
  347 + return request;
  348 + })();
  349 +
  350 +/** @description response type for postAdminClientDownloadImportTemplate */
  351 +export interface PostAdminClientDownloadImportTemplateResponse {
  352 + /**
  353 + * @description
  354 + * OK
  355 + */
  356 + 200: any;
  357 + /**
  358 + * @description
  359 + * Created
  360 + */
  361 + 201: any;
  362 + /**
  363 + * @description
  364 + * Unauthorized
  365 + */
  366 + 401: any;
  367 + /**
  368 + * @description
  369 + * Forbidden
  370 + */
  371 + 403: any;
  372 + /**
  373 + * @description
  374 + * Not Found
  375 + */
  376 + 404: any;
  377 +}
  378 +
  379 +export type PostAdminClientDownloadImportTemplateResponseSuccess =
  380 + PostAdminClientDownloadImportTemplateResponse[200];
  381 +/**
  382 + * @description
  383 + * 下载导入模板
  384 + * @tags 客户管理
  385 + * @produces *
  386 + * @consumes application/json
  387 + */
  388 +export const postAdminClientDownloadImportTemplate = /* #__PURE__ */ (() => {
  389 + const method = 'post';
  390 + const url = '/admin/client/downloadImportTemplate';
  391 + function request(): Promise<PostAdminClientDownloadImportTemplateResponseSuccess> {
  392 + return requester(request.url, {
  393 + method: request.method,
  394 + }) as unknown as Promise<PostAdminClientDownloadImportTemplateResponseSuccess>;
  395 + }
  396 +
  397 + /** http method */
  398 + request.method = method;
  399 + /** request url */
  400 + request.url = url;
  401 + return request;
  402 +})();
  403 +
  404 +/** @description request parameter type for postAdminClientExportClients */
  405 +export interface PostAdminClientExportClientsOption {
  406 + /**
  407 + * @description
  408 + * dto
  409 + */
  410 + body: {
  411 + /**
  412 + @description
  413 + dto */
  414 + dto: QueryClientDto;
  415 + };
  416 +}
  417 +
  418 +/** @description response type for postAdminClientExportClients */
  419 +export interface PostAdminClientExportClientsResponse {
  420 + /**
  421 + * @description
  422 + * OK
  423 + */
  424 + 200: any;
  425 + /**
  426 + * @description
  427 + * Created
  428 + */
  429 + 201: any;
  430 + /**
  431 + * @description
  432 + * Unauthorized
  433 + */
  434 + 401: any;
  435 + /**
  436 + * @description
  437 + * Forbidden
  438 + */
  439 + 403: any;
  440 + /**
  441 + * @description
  442 + * Not Found
  443 + */
  444 + 404: any;
  445 +}
  446 +
  447 +export type PostAdminClientExportClientsResponseSuccess =
  448 + PostAdminClientExportClientsResponse[200];
  449 +/**
  450 + * @description
  451 + * 导出客户信息
  452 + * @tags 客户管理
  453 + * @produces *
  454 + * @consumes application/json
  455 + */
  456 +export const postAdminClientExportClients = /* #__PURE__ */ (() => {
  457 + const method = 'post';
  458 + const url = '/admin/client/exportClients';
  459 + function request(
  460 + option: PostAdminClientExportClientsOption,
  461 + ): Promise<PostAdminClientExportClientsResponseSuccess> {
  462 + return requester(request.url, {
  463 + method: request.method,
  464 + ...option,
  465 + }) as unknown as Promise<PostAdminClientExportClientsResponseSuccess>;
  466 + }
  467 +
  468 + /** http method */
  469 + request.method = method;
  470 + /** request url */
  471 + request.url = url;
  472 + return request;
  473 +})();
  474 +
  475 +/** @description request parameter type for postAdminClientImportClient */
  476 +export interface PostAdminClientImportClientOption {
  477 + /**
  478 + * @description
  479 + * file
  480 + */
  481 + formData: {
  482 + /**
  483 + @description
  484 + file */
  485 + file: File;
  486 + };
  487 +}
  488 +
  489 +/** @description response type for postAdminClientImportClient */
  490 +export interface PostAdminClientImportClientResponse {
  491 + /**
  492 + * @description
  493 + * OK
  494 + */
  495 + 200: ServerResult;
  496 + /**
  497 + * @description
  498 + * Created
  499 + */
  500 + 201: any;
  501 + /**
  502 + * @description
  503 + * Unauthorized
  504 + */
  505 + 401: any;
  506 + /**
  507 + * @description
  508 + * Forbidden
  509 + */
  510 + 403: any;
  511 + /**
  512 + * @description
  513 + * Not Found
  514 + */
  515 + 404: any;
  516 +}
  517 +
  518 +export type PostAdminClientImportClientResponseSuccess =
  519 + PostAdminClientImportClientResponse[200];
  520 +/**
  521 + * @description
  522 + * 导入客户
  523 + * @tags 客户管理
  524 + * @produces *
  525 + * @consumes multipart/form-data
  526 + */
  527 +export const postAdminClientImportClient = /* #__PURE__ */ (() => {
  528 + const method = 'post';
  529 + const url = '/admin/client/importClient';
  530 + function request(
  531 + option: PostAdminClientImportClientOption,
  532 + ): Promise<PostAdminClientImportClientResponseSuccess> {
  533 + return requester(request.url, {
  534 + method: request.method,
  535 + ...option,
  536 + }) as unknown as Promise<PostAdminClientImportClientResponseSuccess>;
  537 + }
  538 +
  539 + /** http method */
  540 + request.method = method;
  541 + /** request url */
  542 + request.url = url;
  543 + return request;
  544 +})();
  545 +
  546 +/** @description request parameter type for postAdminClientModifyClientComunicationInfo */
  547 +export interface PostAdminClientModifyClientComunicationInfoOption {
  548 + /**
  549 + * @description
  550 + * dto
  551 + */
  552 + body: {
  553 + /**
  554 + @description
  555 + dto */
  556 + dto: QueryCommunicationInfoDto;
  557 + };
  558 +}
  559 +
  560 +/** @description response type for postAdminClientModifyClientComunicationInfo */
  561 +export interface PostAdminClientModifyClientComunicationInfoResponse {
  562 + /**
  563 + * @description
  564 + * OK
  565 + */
  566 + 200: ServerResult;
  567 + /**
  568 + * @description
  569 + * Created
  570 + */
  571 + 201: any;
  572 + /**
  573 + * @description
  574 + * Unauthorized
  575 + */
  576 + 401: any;
  577 + /**
  578 + * @description
  579 + * Forbidden
  580 + */
  581 + 403: any;
  582 + /**
  583 + * @description
  584 + * Not Found
  585 + */
  586 + 404: any;
  587 +}
  588 +
  589 +export type PostAdminClientModifyClientComunicationInfoResponseSuccess =
  590 + PostAdminClientModifyClientComunicationInfoResponse[200];
  591 +/**
  592 + * @description
  593 + * 修改跟进信息
  594 + * @tags 客户管理
  595 + * @produces *
  596 + * @consumes application/json
  597 + */
  598 +export const postAdminClientModifyClientComunicationInfo =
  599 + /* #__PURE__ */ (() => {
  600 + const method = 'post';
  601 + const url = '/admin/client/modifyClientComunicationInfo';
  602 + function request(
  603 + option: PostAdminClientModifyClientComunicationInfoOption,
  604 + ): Promise<PostAdminClientModifyClientComunicationInfoResponseSuccess> {
  605 + return requester(request.url, {
  606 + method: request.method,
  607 + ...option,
  608 + }) as unknown as Promise<PostAdminClientModifyClientComunicationInfoResponseSuccess>;
  609 + }
  610 +
  611 + /** http method */
  612 + request.method = method;
  613 + /** request url */
  614 + request.url = url;
  615 + return request;
  616 + })();
  617 +
  618 +/** @description request parameter type for postAdminClientModifyClientInfo */
  619 +export interface PostAdminClientModifyClientInfoOption {
  620 + /**
  621 + * @description
  622 + * dto
  623 + */
  624 + body: {
  625 + /**
  626 + @description
  627 + dto */
  628 + dto: AdminClientDto;
  629 + };
  630 +}
  631 +
  632 +/** @description response type for postAdminClientModifyClientInfo */
  633 +export interface PostAdminClientModifyClientInfoResponse {
  634 + /**
  635 + * @description
  636 + * OK
  637 + */
  638 + 200: ServerResult;
  639 + /**
  640 + * @description
  641 + * Created
  642 + */
  643 + 201: any;
  644 + /**
  645 + * @description
  646 + * Unauthorized
  647 + */
  648 + 401: any;
  649 + /**
  650 + * @description
  651 + * Forbidden
  652 + */
  653 + 403: any;
  654 + /**
  655 + * @description
  656 + * Not Found
  657 + */
  658 + 404: any;
  659 +}
  660 +
  661 +export type PostAdminClientModifyClientInfoResponseSuccess =
  662 + PostAdminClientModifyClientInfoResponse[200];
  663 +/**
  664 + * @description
  665 + * 修改跟进信息
  666 + * @tags 客户管理
  667 + * @produces *
  668 + * @consumes application/json
  669 + */
  670 +export const postAdminClientModifyClientInfo = /* #__PURE__ */ (() => {
  671 + const method = 'post';
  672 + const url = '/admin/client/modifyClientInfo';
  673 + function request(
  674 + option: PostAdminClientModifyClientInfoOption,
  675 + ): Promise<PostAdminClientModifyClientInfoResponseSuccess> {
  676 + return requester(request.url, {
  677 + method: request.method,
  678 + ...option,
  679 + }) as unknown as Promise<PostAdminClientModifyClientInfoResponseSuccess>;
  680 + }
  681 +
  682 + /** http method */
  683 + request.method = method;
  684 + /** request url */
  685 + request.url = url;
  686 + return request;
  687 +})();
  688 +
  689 +/** @description request parameter type for postAdminClientQueryClientComunicationInfo */
  690 +export interface PostAdminClientQueryClientComunicationInfoOption {
  691 + /**
  692 + * @description
  693 + * dto
  694 + */
  695 + body: {
  696 + /**
  697 + @description
  698 + dto */
  699 + dto: QueryCommunicationInfoDto;
  700 + };
  701 +}
  702 +
  703 +/** @description response type for postAdminClientQueryClientComunicationInfo */
  704 +export interface PostAdminClientQueryClientComunicationInfoResponse {
  705 + /**
  706 + * @description
  707 + * OK
  708 + */
  709 + 200: ServerResult;
  710 + /**
  711 + * @description
  712 + * Created
  713 + */
  714 + 201: any;
  715 + /**
  716 + * @description
  717 + * Unauthorized
  718 + */
  719 + 401: any;
  720 + /**
  721 + * @description
  722 + * Forbidden
  723 + */
  724 + 403: any;
  725 + /**
  726 + * @description
  727 + * Not Found
  728 + */
  729 + 404: any;
  730 +}
  731 +
  732 +export type PostAdminClientQueryClientComunicationInfoResponseSuccess =
  733 + PostAdminClientQueryClientComunicationInfoResponse[200];
  734 +/**
  735 + * @description
  736 + * 获取跟进信息
  737 + * @tags 客户管理
  738 + * @produces *
  739 + * @consumes application/json
  740 + */
  741 +export const postAdminClientQueryClientComunicationInfo =
  742 + /* #__PURE__ */ (() => {
  743 + const method = 'post';
  744 + const url = '/admin/client/queryClientComunicationInfo';
  745 + function request(
  746 + option: PostAdminClientQueryClientComunicationInfoOption,
  747 + ): Promise<PostAdminClientQueryClientComunicationInfoResponseSuccess> {
  748 + return requester(request.url, {
  749 + method: request.method,
  750 + ...option,
  751 + }) as unknown as Promise<PostAdminClientQueryClientComunicationInfoResponseSuccess>;
  752 + }
  753 +
  754 + /** http method */
  755 + request.method = method;
  756 + /** request url */
  757 + request.url = url;
  758 + return request;
  759 + })();
  760 +
133 761 /** @description request parameter type for postAdminClientQueryClientPage */
134 762 export interface PostAdminClientQueryClientPageOption {
135 763 /**
... ... @@ -173,33 +801,107 @@ export interface PostAdminClientQueryClientPageResponse {
173 801 404: any;
174 802 }
175 803  
176   -export type PostAdminClientQueryClientPageResponseSuccess =
177   - PostAdminClientQueryClientPageResponse[200];
  804 +export type PostAdminClientQueryClientPageResponseSuccess =
  805 + PostAdminClientQueryClientPageResponse[200];
  806 +/**
  807 + * @description
  808 + * 客户管理
  809 + * @tags 客户管理
  810 + * @produces *
  811 + * @consumes application/json
  812 + */
  813 +export const postAdminClientQueryClientPage = /* #__PURE__ */ (() => {
  814 + const method = 'post';
  815 + const url = '/admin/client/queryClientPage';
  816 + function request(
  817 + option: PostAdminClientQueryClientPageOption,
  818 + ): Promise<PostAdminClientQueryClientPageResponseSuccess> {
  819 + return requester(request.url, {
  820 + method: request.method,
  821 + ...option,
  822 + }) as unknown as Promise<PostAdminClientQueryClientPageResponseSuccess>;
  823 + }
  824 +
  825 + /** http method */
  826 + request.method = method;
  827 + /** request url */
  828 + request.url = url;
  829 + return request;
  830 +})();
  831 +
  832 +/** @description request parameter type for postAdminClientRemoveClientComunicationInfo */
  833 +export interface PostAdminClientRemoveClientComunicationInfoOption {
  834 + /**
  835 + * @description
  836 + * id
  837 + * @format int64
  838 + */
  839 + query?: {
  840 + /**
  841 + @description
  842 + id
  843 + @format int64 */
  844 + id?: number;
  845 + };
  846 +}
  847 +
  848 +/** @description response type for postAdminClientRemoveClientComunicationInfo */
  849 +export interface PostAdminClientRemoveClientComunicationInfoResponse {
  850 + /**
  851 + * @description
  852 + * OK
  853 + */
  854 + 200: ServerResult;
  855 + /**
  856 + * @description
  857 + * Created
  858 + */
  859 + 201: any;
  860 + /**
  861 + * @description
  862 + * Unauthorized
  863 + */
  864 + 401: any;
  865 + /**
  866 + * @description
  867 + * Forbidden
  868 + */
  869 + 403: any;
  870 + /**
  871 + * @description
  872 + * Not Found
  873 + */
  874 + 404: any;
  875 +}
  876 +
  877 +export type PostAdminClientRemoveClientComunicationInfoResponseSuccess =
  878 + PostAdminClientRemoveClientComunicationInfoResponse[200];
178 879 /**
179 880 * @description
180   - * 客户管理
  881 + * 删除跟进信息
181 882 * @tags 客户管理
182 883 * @produces *
183 884 * @consumes application/json
184 885 */
185   -export const postAdminClientQueryClientPage = /* #__PURE__ */ (() => {
186   - const method = 'post';
187   - const url = '/admin/client/queryClientPage';
188   - function request(
189   - option: PostAdminClientQueryClientPageOption,
190   - ): Promise<PostAdminClientQueryClientPageResponseSuccess> {
191   - return requester(request.url, {
192   - method: request.method,
193   - ...option,
194   - }) as unknown as Promise<PostAdminClientQueryClientPageResponseSuccess>;
195   - }
  886 +export const postAdminClientRemoveClientComunicationInfo =
  887 + /* #__PURE__ */ (() => {
  888 + const method = 'post';
  889 + const url = '/admin/client/removeClientComunicationInfo';
  890 + function request(
  891 + option?: PostAdminClientRemoveClientComunicationInfoOption,
  892 + ): Promise<PostAdminClientRemoveClientComunicationInfoResponseSuccess> {
  893 + return requester(request.url, {
  894 + method: request.method,
  895 + ...option,
  896 + }) as unknown as Promise<PostAdminClientRemoveClientComunicationInfoResponseSuccess>;
  897 + }
196 898  
197   - /** http method */
198   - request.method = method;
199   - /** request url */
200   - request.url = url;
201   - return request;
202   -})();
  899 + /** http method */
  900 + request.method = method;
  901 + /** request url */
  902 + request.url = url;
  903 + return request;
  904 + })();
203 905  
204 906 /** @description request parameter type for postApiLocalStorageUpload */
205 907 export interface PostApiLocalStorageUploadOption {
... ... @@ -1916,6 +2618,78 @@ export const postDistrictAddOrderAndProvince = /* #__PURE__ */ (() =&gt; {
1916 2618 return request;
1917 2619 })();
1918 2620  
  2621 +/** @description request parameter type for postDistrictFindProvinceAndCityAndDistrict */
  2622 +export interface PostDistrictFindProvinceAndCityAndDistrictOption {
  2623 + /**
  2624 + * @description
  2625 + * str
  2626 + */
  2627 + body: {
  2628 + /**
  2629 + @description
  2630 + str */
  2631 + str: string;
  2632 + };
  2633 +}
  2634 +
  2635 +/** @description response type for postDistrictFindProvinceAndCityAndDistrict */
  2636 +export interface PostDistrictFindProvinceAndCityAndDistrictResponse {
  2637 + /**
  2638 + * @description
  2639 + * OK
  2640 + */
  2641 + 200: ServerResult;
  2642 + /**
  2643 + * @description
  2644 + * Created
  2645 + */
  2646 + 201: any;
  2647 + /**
  2648 + * @description
  2649 + * Unauthorized
  2650 + */
  2651 + 401: any;
  2652 + /**
  2653 + * @description
  2654 + * Forbidden
  2655 + */
  2656 + 403: any;
  2657 + /**
  2658 + * @description
  2659 + * Not Found
  2660 + */
  2661 + 404: any;
  2662 +}
  2663 +
  2664 +export type PostDistrictFindProvinceAndCityAndDistrictResponseSuccess =
  2665 + PostDistrictFindProvinceAndCityAndDistrictResponse[200];
  2666 +/**
  2667 + * @description
  2668 + * 读取字符串中的数据
  2669 + * @tags order-district-controller
  2670 + * @produces *
  2671 + * @consumes application/json
  2672 + */
  2673 +export const postDistrictFindProvinceAndCityAndDistrict =
  2674 + /* #__PURE__ */ (() => {
  2675 + const method = 'post';
  2676 + const url = '/district/findProvinceAndCityAndDistrict';
  2677 + function request(
  2678 + option: PostDistrictFindProvinceAndCityAndDistrictOption,
  2679 + ): Promise<PostDistrictFindProvinceAndCityAndDistrictResponseSuccess> {
  2680 + return requester(request.url, {
  2681 + method: request.method,
  2682 + ...option,
  2683 + }) as unknown as Promise<PostDistrictFindProvinceAndCityAndDistrictResponseSuccess>;
  2684 + }
  2685 +
  2686 + /** http method */
  2687 + request.method = method;
  2688 + /** request url */
  2689 + request.url = url;
  2690 + return request;
  2691 + })();
  2692 +
1919 2693 /** @description request parameter type for postDistrictSelOrderProvince */
1920 2694 export interface PostDistrictSelOrderProvinceOption {
1921 2695 /**
... ... @@ -2396,7 +3170,9 @@ export interface GetErrorResponse {
2396 3170 * @description
2397 3171 * OK
2398 3172 */
2399   - 200: ModelAndView;
  3173 + 200: {
  3174 + [propertyName: string]: any;
  3175 + };
2400 3176 /**
2401 3177 * @description
2402 3178 * Unauthorized
... ... @@ -2417,9 +3193,9 @@ export interface GetErrorResponse {
2417 3193 export type GetErrorResponseSuccess = GetErrorResponse[200];
2418 3194 /**
2419 3195 * @description
2420   - * errorHtml
  3196 + * error
2421 3197 * @tags basic-error-controller
2422   - * @produces text/html
  3198 + * @produces *
2423 3199 */
2424 3200 export const getError = /* #__PURE__ */ (() => {
2425 3201 const method = 'get';
... ... @@ -2443,7 +3219,9 @@ export interface PutErrorResponse {
2443 3219 * @description
2444 3220 * OK
2445 3221 */
2446   - 200: ModelAndView;
  3222 + 200: {
  3223 + [propertyName: string]: any;
  3224 + };
2447 3225 /**
2448 3226 * @description
2449 3227 * Created
... ... @@ -2469,9 +3247,9 @@ export interface PutErrorResponse {
2469 3247 export type PutErrorResponseSuccess = PutErrorResponse[200];
2470 3248 /**
2471 3249 * @description
2472   - * errorHtml
  3250 + * error
2473 3251 * @tags basic-error-controller
2474   - * @produces text/html
  3252 + * @produces *
2475 3253 * @consumes application/json
2476 3254 */
2477 3255 export const putError = /* #__PURE__ */ (() => {
... ... @@ -2496,7 +3274,9 @@ export interface PostErrorResponse {
2496 3274 * @description
2497 3275 * OK
2498 3276 */
2499   - 200: ModelAndView;
  3277 + 200: {
  3278 + [propertyName: string]: any;
  3279 + };
2500 3280 /**
2501 3281 * @description
2502 3282 * Created
... ... @@ -2522,9 +3302,9 @@ export interface PostErrorResponse {
2522 3302 export type PostErrorResponseSuccess = PostErrorResponse[200];
2523 3303 /**
2524 3304 * @description
2525   - * errorHtml
  3305 + * error
2526 3306 * @tags basic-error-controller
2527   - * @produces text/html
  3307 + * @produces *
2528 3308 * @consumes application/json
2529 3309 */
2530 3310 export const postError = /* #__PURE__ */ (() => {
... ... @@ -2549,7 +3329,9 @@ export interface DeleteErrorResponse {
2549 3329 * @description
2550 3330 * OK
2551 3331 */
2552   - 200: ModelAndView;
  3332 + 200: {
  3333 + [propertyName: string]: any;
  3334 + };
2553 3335 /**
2554 3336 * @description
2555 3337 * No Content
... ... @@ -2570,9 +3352,9 @@ export interface DeleteErrorResponse {
2570 3352 export type DeleteErrorResponseSuccess = DeleteErrorResponse[200];
2571 3353 /**
2572 3354 * @description
2573   - * errorHtml
  3355 + * error
2574 3356 * @tags basic-error-controller
2575   - * @produces text/html
  3357 + * @produces *
2576 3358 */
2577 3359 export const deleteError = /* #__PURE__ */ (() => {
2578 3360 const method = 'delete';
... ... @@ -2596,7 +3378,9 @@ export interface OptionsErrorResponse {
2596 3378 * @description
2597 3379 * OK
2598 3380 */
2599   - 200: ModelAndView;
  3381 + 200: {
  3382 + [propertyName: string]: any;
  3383 + };
2600 3384 /**
2601 3385 * @description
2602 3386 * No Content
... ... @@ -2617,9 +3401,9 @@ export interface OptionsErrorResponse {
2617 3401 export type OptionsErrorResponseSuccess = OptionsErrorResponse[200];
2618 3402 /**
2619 3403 * @description
2620   - * errorHtml
  3404 + * error
2621 3405 * @tags basic-error-controller
2622   - * @produces text/html
  3406 + * @produces *
2623 3407 * @consumes application/json
2624 3408 */
2625 3409 export const optionsError = /* #__PURE__ */ (() => {
... ... @@ -2644,7 +3428,9 @@ export interface HeadErrorResponse {
2644 3428 * @description
2645 3429 * OK
2646 3430 */
2647   - 200: ModelAndView;
  3431 + 200: {
  3432 + [propertyName: string]: any;
  3433 + };
2648 3434 /**
2649 3435 * @description
2650 3436 * No Content
... ... @@ -2665,9 +3451,9 @@ export interface HeadErrorResponse {
2665 3451 export type HeadErrorResponseSuccess = HeadErrorResponse[200];
2666 3452 /**
2667 3453 * @description
2668   - * errorHtml
  3454 + * error
2669 3455 * @tags basic-error-controller
2670   - * @produces text/html
  3456 + * @produces *
2671 3457 * @consumes application/json
2672 3458 */
2673 3459 export const headError = /* #__PURE__ */ (() => {
... ... @@ -2692,7 +3478,9 @@ export interface PatchErrorResponse {
2692 3478 * @description
2693 3479 * OK
2694 3480 */
2695   - 200: ModelAndView;
  3481 + 200: {
  3482 + [propertyName: string]: any;
  3483 + };
2696 3484 /**
2697 3485 * @description
2698 3486 * No Content
... ... @@ -2713,9 +3501,9 @@ export interface PatchErrorResponse {
2713 3501 export type PatchErrorResponseSuccess = PatchErrorResponse[200];
2714 3502 /**
2715 3503 * @description
2716   - * errorHtml
  3504 + * error
2717 3505 * @tags basic-error-controller
2718   - * @produces text/html
  3506 + * @produces *
2719 3507 * @consumes application/json
2720 3508 */
2721 3509 export const patchError = /* #__PURE__ */ (() => {
... ... @@ -7945,6 +8733,78 @@ export const postOrderErpOrderZoNingSelectSaleUserByProvince =
7945 8733 return request;
7946 8734 })();
7947 8735  
  8736 +/** @description request parameter type for postOrderErpOrderZoNingSelectSaleUserHasZoning */
  8737 +export interface PostOrderErpOrderZoNingSelectSaleUserHasZoningOption {
  8738 + /**
  8739 + * @description
  8740 + * id
  8741 + */
  8742 + body: {
  8743 + /**
  8744 + @description
  8745 + id */
  8746 + id: number;
  8747 + };
  8748 +}
  8749 +
  8750 +/** @description response type for postOrderErpOrderZoNingSelectSaleUserHasZoning */
  8751 +export interface PostOrderErpOrderZoNingSelectSaleUserHasZoningResponse {
  8752 + /**
  8753 + * @description
  8754 + * OK
  8755 + */
  8756 + 200: ServerResult;
  8757 + /**
  8758 + * @description
  8759 + * Created
  8760 + */
  8761 + 201: any;
  8762 + /**
  8763 + * @description
  8764 + * Unauthorized
  8765 + */
  8766 + 401: any;
  8767 + /**
  8768 + * @description
  8769 + * Forbidden
  8770 + */
  8771 + 403: any;
  8772 + /**
  8773 + * @description
  8774 + * Not Found
  8775 + */
  8776 + 404: any;
  8777 +}
  8778 +
  8779 +export type PostOrderErpOrderZoNingSelectSaleUserHasZoningResponseSuccess =
  8780 + PostOrderErpOrderZoNingSelectSaleUserHasZoningResponse[200];
  8781 +/**
  8782 + * @description
  8783 + * 查询出该销售所在的大区
  8784 + * @tags order-zo-ning-controller
  8785 + * @produces *
  8786 + * @consumes application/json
  8787 + */
  8788 +export const postOrderErpOrderZoNingSelectSaleUserHasZoning =
  8789 + /* #__PURE__ */ (() => {
  8790 + const method = 'post';
  8791 + const url = '/order/erp/orderZoNing/selectSaleUserHasZoning';
  8792 + function request(
  8793 + option: PostOrderErpOrderZoNingSelectSaleUserHasZoningOption,
  8794 + ): Promise<PostOrderErpOrderZoNingSelectSaleUserHasZoningResponseSuccess> {
  8795 + return requester(request.url, {
  8796 + method: request.method,
  8797 + ...option,
  8798 + }) as unknown as Promise<PostOrderErpOrderZoNingSelectSaleUserHasZoningResponseSuccess>;
  8799 + }
  8800 +
  8801 + /** http method */
  8802 + request.method = method;
  8803 + /** request url */
  8804 + request.url = url;
  8805 + return request;
  8806 + })();
  8807 +
7948 8808 /** @description response type for getOrderErpOrderZoNingSelectUserAll */
7949 8809 export interface GetOrderErpOrderZoNingSelectUserAllResponse {
7950 8810 /**
... ... @@ -11017,6 +11877,60 @@ export const postServiceConstCanApplyAfterInvoicingStatus =
11017 11877 return request;
11018 11878 })();
11019 11879  
  11880 +/** @description response type for postServiceConstClientLevels */
  11881 +export interface PostServiceConstClientLevelsResponse {
  11882 + /**
  11883 + * @description
  11884 + * OK
  11885 + */
  11886 + 200: ServerResult;
  11887 + /**
  11888 + * @description
  11889 + * Created
  11890 + */
  11891 + 201: any;
  11892 + /**
  11893 + * @description
  11894 + * Unauthorized
  11895 + */
  11896 + 401: any;
  11897 + /**
  11898 + * @description
  11899 + * Forbidden
  11900 + */
  11901 + 403: any;
  11902 + /**
  11903 + * @description
  11904 + * Not Found
  11905 + */
  11906 + 404: any;
  11907 +}
  11908 +
  11909 +export type PostServiceConstClientLevelsResponseSuccess =
  11910 + PostServiceConstClientLevelsResponse[200];
  11911 +/**
  11912 + * @description
  11913 + * 客户等级
  11914 + * @tags front-const-controller
  11915 + * @produces *
  11916 + * @consumes application/json
  11917 + */
  11918 +export const postServiceConstClientLevels = /* #__PURE__ */ (() => {
  11919 + const method = 'post';
  11920 + const url = '/service/const/clientLevels';
  11921 + function request(): Promise<PostServiceConstClientLevelsResponseSuccess> {
  11922 + return requester(request.url, {
  11923 + method: request.method,
  11924 + }) as unknown as Promise<PostServiceConstClientLevelsResponseSuccess>;
  11925 + }
  11926 +
  11927 + /** http method */
  11928 + request.method = method;
  11929 + /** request url */
  11930 + request.url = url;
  11931 + return request;
  11932 +})();
  11933 +
11020 11934 /** @description response type for postServiceConstGetPayeeEnum */
11021 11935 export interface PostServiceConstGetPayeeEnumResponse {
11022 11936 /**
... ... @@ -11305,6 +12219,60 @@ export const postServiceConstNotCanModifyInvoiceRecordStatus =
11305 12219 return request;
11306 12220 })();
11307 12221  
  12222 +/** @description response type for postServiceConstTradeStatus */
  12223 +export interface PostServiceConstTradeStatusResponse {
  12224 + /**
  12225 + * @description
  12226 + * OK
  12227 + */
  12228 + 200: ServerResult;
  12229 + /**
  12230 + * @description
  12231 + * Created
  12232 + */
  12233 + 201: any;
  12234 + /**
  12235 + * @description
  12236 + * Unauthorized
  12237 + */
  12238 + 401: any;
  12239 + /**
  12240 + * @description
  12241 + * Forbidden
  12242 + */
  12243 + 403: any;
  12244 + /**
  12245 + * @description
  12246 + * Not Found
  12247 + */
  12248 + 404: any;
  12249 +}
  12250 +
  12251 +export type PostServiceConstTradeStatusResponseSuccess =
  12252 + PostServiceConstTradeStatusResponse[200];
  12253 +/**
  12254 + * @description
  12255 + * 跟进状态
  12256 + * @tags front-const-controller
  12257 + * @produces *
  12258 + * @consumes application/json
  12259 + */
  12260 +export const postServiceConstTradeStatus = /* #__PURE__ */ (() => {
  12261 + const method = 'post';
  12262 + const url = '/service/const/tradeStatus';
  12263 + function request(): Promise<PostServiceConstTradeStatusResponseSuccess> {
  12264 + return requester(request.url, {
  12265 + method: request.method,
  12266 + }) as unknown as Promise<PostServiceConstTradeStatusResponseSuccess>;
  12267 + }
  12268 +
  12269 + /** http method */
  12270 + request.method = method;
  12271 + /** request url */
  12272 + request.url = url;
  12273 + return request;
  12274 +})();
  12275 +
11308 12276 /** @description request parameter type for getServiceInvoiceListInvoiceProject */
11309 12277 export interface GetServiceInvoiceListInvoiceProjectOption {
11310 12278 /** @format int32 */
... ... @@ -12524,7 +13492,7 @@ export interface PostServiceInvoicePutCompanyInfoOption {
12524 13492 /**
12525 13493 @description
12526 13494 dto */
12527   - dto: CompanyInfo;
  13495 + dto: CompanyInfoDto;
12528 13496 };
12529 13497 }
12530 13498  
... ...