Commit 0ac97673380cbb111d4bbd08f642b848af353bf6

Authored by 曾国涛
1 parent 74f66707

feat: 手动开票功能开发

.umirc.ts
@@ -91,6 +91,7 @@ export default defineConfig({ @@ -91,6 +91,7 @@ export default defineConfig({
91 path: '/client', 91 path: '/client',
92 component: './Client', 92 component: './Client',
93 icon: 'BookOutlined', 93 icon: 'BookOutlined',
  94 + access: 'canReadAdmin',
94 },*/ 95 },*/
95 { 96 {
96 name: '打印', 97 name: '打印',
src/pages/Client/Components/ClientDrawer.tsx 0 → 100644
  1 +import {
  2 + postServiceConstClientLevels,
  3 + postServiceConstTradeStatus,
  4 +} from '@/services';
  5 +import { enumToSelect } from '@/utils';
  6 +import {
  7 + DrawerForm,
  8 + ProFormDateTimePicker,
  9 + ProFormSelect,
  10 + ProFormText,
  11 +} from '@ant-design/pro-components';
  12 +import { Form, message } from 'antd';
  13 +
  14 +export default () => {
  15 + const [form] = Form.useForm<{ name: string; company: string }>();
  16 +
  17 + return (
  18 + <DrawerForm
  19 + title="新建表单"
  20 + resize={{
  21 + onResize() {
  22 + console.log('resize!');
  23 + },
  24 + maxWidth: window.innerWidth * 0.8,
  25 + minWidth: 300,
  26 + }}
  27 + form={form}
  28 + trigger={<a type="primary">新增客户</a>}
  29 + autoFocusFirstInput
  30 + drawerProps={{
  31 + destroyOnClose: true,
  32 + }}
  33 + submitTimeout={2000}
  34 + onFinish={async (values) => {
  35 + console.log(values);
  36 + message.success('提交成功');
  37 + // 不返回不会关闭弹框
  38 + return true;
  39 + }}
  40 + >
  41 + <ProFormText name="name" label="客户名称" placeholder="请输入名称" />
  42 + <ProFormText
  43 + name="companyName"
  44 + label="单位名称"
  45 + placeholder="请输入单位名称"
  46 + />
  47 + <ProFormText
  48 + name="companyAddress"
  49 + label="单位地址"
  50 + placeholder="请输入单位地址"
  51 + />
  52 + <ProFormText
  53 + name="phoneNumber"
  54 + label="联系电话"
  55 + placeholder="请输入联系电话"
  56 + />
  57 + <ProFormText
  58 + name="source"
  59 + label="客户来源"
  60 + placeholder="请输入客户来源"
  61 + />
  62 + <ProFormText
  63 + name="requirements"
  64 + label="客户需求"
  65 + placeholder="请输入客户需求"
  66 + />
  67 + <ProFormText name="referrers" label="推荐人" placeholder="请输入推荐人" />
  68 + <ProFormSelect
  69 + name="hasScheme"
  70 + label="是否已报方案"
  71 + placeholder="请选择是否已报方案"
  72 + options={[
  73 + {
  74 + label: '是',
  75 + value: true,
  76 + },
  77 + {
  78 + label: '否',
  79 + value: false,
  80 + },
  81 + ]}
  82 + />
  83 + <ProFormDateTimePicker
  84 + name="quoteDatetime"
  85 + label="报价时间"
  86 + placeholder="请输入报价时间"
  87 + />
  88 + <ProFormSelect
  89 + name="level"
  90 + label="客户等级"
  91 + placeholder="请输入客户等级"
  92 + request={async () => {
  93 + const res = await postServiceConstClientLevels();
  94 + return enumToSelect(res.data);
  95 + }}
  96 + />
  97 + <ProFormSelect
  98 + name="tradeStatus"
  99 + label="跟进状态"
  100 + placeholder="请输入跟进状态"
  101 + request={async () => {
  102 + const res = await postServiceConstTradeStatus();
  103 + return enumToSelect(res.data);
  104 + }}
  105 + />
  106 + <ProFormText name="notes" label="备注" placeholder="请输入备注" />
  107 + </DrawerForm>
  108 + );
  109 +};
src/pages/Client/index.tsx
1 -import { EllipsisOutlined, PlusOutlined } from '@ant-design/icons';  
2 -import type { ActionType, ProColumns } from '@ant-design/pro-components';  
3 -import { ProTable, TableDropdown } from '@ant-design/pro-components';  
4 -import { request } from '@umijs/max';  
5 -import { Button, Dropdown, Space, Tag } from 'antd'; 1 +import ClientDrawer from '@/pages/Client/Components/ClientDrawer';
  2 +import { postAdminClientQueryClientPage } from '@/services';
  3 +import { EllipsisOutlined } from '@ant-design/icons';
  4 +import type { ActionType } from '@ant-design/pro-components';
  5 +import { ProTable } from '@ant-design/pro-components';
  6 +import { Button, Dropdown } from 'antd';
6 import { useRef } from 'react'; 7 import { useRef } from 'react';
7 8
8 export const waitTimePromise = async (time: number = 100) => { 9 export const waitTimePromise = async (time: number = 100) => {
@@ -17,107 +18,69 @@ export const waitTime = async (time: number = 100) =&gt; { @@ -17,107 +18,69 @@ export const waitTime = async (time: number = 100) =&gt; {
17 await waitTimePromise(time); 18 await waitTimePromise(time);
18 }; 19 };
19 20
20 -type GithubIssueItem = {  
21 - url: string;  
22 - id: number;  
23 - number: number;  
24 - title: string;  
25 - labels: {  
26 - name: string;  
27 - color: string;  
28 - }[];  
29 - state: string;  
30 - comments: number;  
31 - created_at: string;  
32 - updated_at: string;  
33 - closed_at?: string;  
34 -};  
35 -  
36 -const columns: ProColumns<GithubIssueItem>[] = [ 21 +const columns = [
37 { 22 {
38 dataIndex: 'index', 23 dataIndex: 'index',
39 valueType: 'indexBorder', 24 valueType: 'indexBorder',
40 width: 48, 25 width: 48,
41 }, 26 },
42 { 27 {
43 - title: '标题',  
44 - dataIndex: 'title',  
45 - copyable: true,  
46 - ellipsis: true,  
47 - tooltip: '标题过长会自动收缩',  
48 - formItemProps: {  
49 - rules: [  
50 - {  
51 - required: true,  
52 - message: '此项为必填项',  
53 - },  
54 - ],  
55 - }, 28 + title: '客户名称',
  29 + dataIndex: 'name',
56 }, 30 },
57 { 31 {
58 - disable: true,  
59 - title: '状态',  
60 - dataIndex: 'state',  
61 - filters: true,  
62 - onFilter: true,  
63 - ellipsis: true,  
64 - valueType: 'select',  
65 - valueEnum: {  
66 - all: { text: '超长'.repeat(50) },  
67 - open: {  
68 - text: '未解决',  
69 - status: 'Error',  
70 - },  
71 - closed: {  
72 - text: '已解决',  
73 - status: 'Success',  
74 - disabled: true,  
75 - },  
76 - processing: {  
77 - text: '解决中',  
78 - status: 'Processing',  
79 - },  
80 - }, 32 + title: '单位名称',
  33 + dataIndex: 'companyName',
81 }, 34 },
82 { 35 {
83 - disable: true,  
84 - title: '标签',  
85 - dataIndex: 'labels',  
86 - search: false,  
87 - renderFormItem: (_, { defaultRender }) => {  
88 - return defaultRender(_);  
89 - },  
90 - render: (_, record) => (  
91 - <Space>  
92 - {record.labels.map(({ name, color }) => (  
93 - <Tag color={color} key={name}>  
94 - {name}  
95 - </Tag>  
96 - ))}  
97 - </Space>  
98 - ), 36 + title: '单位地址',
  37 + dataIndex: 'companyName',
99 }, 38 },
100 { 39 {
101 - title: '创建时间',  
102 - key: 'showTime',  
103 - dataIndex: 'created_at',  
104 - valueType: 'date',  
105 - sorter: true,  
106 - hideInSearch: true, 40 + title: '联系电话',
  41 + dataIndex: 'phoneNumber',
  42 + },
  43 + {
  44 + title: '客户来源',
  45 + dataIndex: 'sourceText',
  46 + },
  47 + {
  48 + title: '推荐人',
  49 + dataIndex: 'referrers',
  50 + },
  51 + {
  52 + title: '客户需求',
  53 + dataIndex: 'requirements',
  54 + },
  55 + {
  56 + title: '是否已报方案',
  57 + dataIndex: 'hasSchemeText',
  58 + },
  59 + {
  60 + title: '报价时间',
  61 + key: 'since',
  62 + dataIndex: 'quoteDatetime',
  63 + valueType: 'dateTime',
  64 + },
  65 + {
  66 + title: '跟进状态',
  67 + dataIndex: 'tradeStatusText',
  68 + },
  69 + {
  70 + title: '客户等级',
  71 + dataIndex: 'levelText',
107 }, 72 },
108 { 73 {
109 title: '创建时间', 74 title: '创建时间',
110 - dataIndex: 'created_at',  
111 - valueType: 'dateRange',  
112 - hideInTable: true,  
113 - search: {  
114 - transform: (value) => {  
115 - return {  
116 - startTime: value[0],  
117 - endTime: value[1],  
118 - };  
119 - },  
120 - }, 75 + key: 'since',
  76 + dataIndex: 'createTime',
  77 + valueType: 'dateTime',
  78 + },
  79 + {
  80 + title: '最新跟进时间',
  81 + key: 'since',
  82 + dataIndex: 'latestCommunicationTime',
  83 + valueType: 'dateTime',
121 }, 84 },
122 { 85 {
123 title: '操作', 86 title: '操作',
@@ -130,19 +93,11 @@ const columns: ProColumns&lt;GithubIssueItem&gt;[] = [ @@ -130,19 +93,11 @@ const columns: ProColumns&lt;GithubIssueItem&gt;[] = [
130 action?.startEditable?.(record.id); 93 action?.startEditable?.(record.id);
131 }} 94 }}
132 > 95 >
133 - 编辑 96 + 查询详情
134 </a>, 97 </a>,
135 <a href={record.url} target="_blank" rel="noopener noreferrer" key="view"> 98 <a href={record.url} target="_blank" rel="noopener noreferrer" key="view">
136 - 查看 99 + 跟进记录
137 </a>, 100 </a>,
138 - <TableDropdown  
139 - key="actionGroup"  
140 - onSelect={() => action?.reload()}  
141 - menus={[  
142 - { key: 'copy', name: '复制' },  
143 - { key: 'delete', name: '删除' },  
144 - ]}  
145 - />,  
146 ], 101 ],
147 }, 102 },
148 ]; 103 ];
@@ -150,18 +105,18 @@ const columns: ProColumns&lt;GithubIssueItem&gt;[] = [ @@ -150,18 +105,18 @@ const columns: ProColumns&lt;GithubIssueItem&gt;[] = [
150 export default () => { 105 export default () => {
151 const actionRef = useRef<ActionType>(); 106 const actionRef = useRef<ActionType>();
152 return ( 107 return (
153 - <ProTable<GithubIssueItem> 108 + <ProTable
154 columns={columns} 109 columns={columns}
155 actionRef={actionRef} 110 actionRef={actionRef}
156 cardBordered 111 cardBordered
157 - request={async (params, sort, filter) => {  
158 - console.log(sort, filter);  
159 - await waitTime(2000);  
160 - return request<{  
161 - data: GithubIssueItem[];  
162 - }>('https://proapi.azurewebsites.net/github/issues', {  
163 - params, 112 + request={async (params) => {
  113 + const res = await postAdminClientQueryClientPage({
  114 + data: {
  115 + ...params,
  116 + },
164 }); 117 });
  118 + const data = res.data.data;
  119 + return data;
165 }} 120 }}
166 editable={{ 121 editable={{
167 type: 'multiple', 122 type: 'multiple',
@@ -204,16 +159,7 @@ export default () =&gt; { @@ -204,16 +159,7 @@ export default () =&gt; {
204 dateFormatter="string" 159 dateFormatter="string"
205 headerTitle="高级表格" 160 headerTitle="高级表格"
206 toolBarRender={() => [ 161 toolBarRender={() => [
207 - <Button  
208 - key="button"  
209 - icon={<PlusOutlined />}  
210 - onClick={() => {  
211 - actionRef.current?.reload();  
212 - }}  
213 - type="primary"  
214 - >  
215 - 新建  
216 - </Button>, 162 + <ClientDrawer key="button" />,
217 <Dropdown 163 <Dropdown
218 key="menu" 164 key="menu"
219 menu={{ 165 menu={{
src/services/definition.ts
@@ -83,6 +83,101 @@ export interface AdminAuthUserVO { @@ -83,6 +83,101 @@ export interface AdminAuthUserVO {
83 userId?: number; 83 userId?: number;
84 } 84 }
85 85
  86 +export interface AdminClientDto {
  87 + /**
  88 + * @description
  89 + * 公司地址
  90 + */
  91 + companyAddress?: string;
  92 + companyId?: string;
  93 + /**
  94 + * @description
  95 + * 公司名称
  96 + */
  97 + companyName?: string;
  98 + contacts?: string;
  99 + createBy?: string;
  100 + /** @format date-time */
  101 + createTime?: string;
  102 + /** @format int32 */
  103 + enableFlag?: number;
  104 + /**
  105 + * @description
  106 + * 是否已报方案
  107 + * @format int32
  108 + */
  109 + hasScheme?: number;
  110 + hasSchemeText?: string;
  111 + /** @format date-time */
  112 + latestCommunicationTime?: string;
  113 + /**
  114 + * @description
  115 + * 客户等级
  116 + */
  117 + level?: string;
  118 + /**
  119 + * @description
  120 + * 客户等级
  121 + */
  122 + levelText?: string;
  123 + modifyBy?: string;
  124 + /** @format date-time */
  125 + modifyTime?: string;
  126 + /**
  127 + * @description
  128 + * 名称
  129 + */
  130 + name?: string;
  131 + /**
  132 + * @description
  133 + * 备注
  134 + */
  135 + notes?: string;
  136 + /**
  137 + * @description
  138 + * 电话号码
  139 + */
  140 + phoneNumber?: string;
  141 + /**
  142 + * @description
  143 + * 报价时间
  144 + * @format date-time
  145 + */
  146 + quoteDatetime?: string;
  147 + /**
  148 + * @description
  149 + * 推荐人
  150 + */
  151 + referrers?: string;
  152 + /**
  153 + * @description
  154 + * 需求
  155 + */
  156 + requirements?: string;
  157 + /**
  158 + * @description
  159 + * 来源
  160 + */
  161 + source?: string;
  162 + /**
  163 + * @description
  164 + * 来源
  165 + */
  166 + sourceText?: string;
  167 + /**
  168 + * @description
  169 + * 跟进状态
  170 + */
  171 + tradeStatus?: string;
  172 + /**
  173 + * @description
  174 + * 跟进状态
  175 + */
  176 + tradeStatusText?: string;
  177 + /** @format int32 */
  178 + version?: number;
  179 +}
  180 +
86 export interface AdminDeptQueryVO { 181 export interface AdminDeptQueryVO {
87 /** @format int32 */ 182 /** @format int32 */
88 current?: number; 183 current?: number;
@@ -1810,6 +1905,31 @@ export interface QueryBankStatementDto { @@ -1810,6 +1905,31 @@ export interface QueryBankStatementDto {
1810 total?: number; 1905 total?: number;
1811 } 1906 }
1812 1907
  1908 +export interface QueryClientDto {
  1909 + companyAddressLike?: string;
  1910 + companyIds?: Array<number>;
  1911 + companyNameLike?: string;
  1912 + /** @format date-time */
  1913 + createTimeGe?: string;
  1914 + /** @format date-time */
  1915 + createTimeLe?: string;
  1916 + /** @format int32 */
  1917 + current?: number;
  1918 + /** @format int32 */
  1919 + end?: number;
  1920 + hasScheme?: string;
  1921 + level?: string;
  1922 + namelike?: string;
  1923 + /** @format int32 */
  1924 + pageSize?: number;
  1925 + phoneNumber?: string;
  1926 + /** @format int32 */
  1927 + start?: number;
  1928 + /** @format int32 */
  1929 + total?: number;
  1930 + tradeStatus?: string;
  1931 +}
  1932 +
1813 export interface QueryCustomerInformationDto { 1933 export interface QueryCustomerInformationDto {
1814 /** 1934 /**
1815 * @description 1935 * @description
@@ -2214,325 +2334,6 @@ export interface ResearchGroupMemberRequestsRequest { @@ -2214,325 +2334,6 @@ export interface ResearchGroupMemberRequestsRequest {
2214 total?: number; 2334 total?: number;
2215 } 2335 }
2216 2336
2217 -export interface ResearchGroupAccountAddRequest {  
2218 - /**  
2219 - * @description  
2220 - * 关联的账号id  
2221 - * @format int64  
2222 - */  
2223 - accountId?: number;  
2224 - /**  
2225 - * @description  
2226 - * 关联的账号名称  
2227 - */  
2228 - accountName?: string;  
2229 - /**  
2230 - * @description  
2231 - * 关联的账号手机号  
2232 - */  
2233 - accountPhone?: string;  
2234 - /**  
2235 - * @description  
2236 - * 课题组id  
2237 - * @format int64  
2238 - */  
2239 - groupId?: number;  
2240 -}  
2241 -  
2242 -export interface ResearchGroupAccountEditRequest {  
2243 - /**  
2244 - * @description  
2245 - * 关联的账号id  
2246 - * @format int64  
2247 - */  
2248 - accountId?: number;  
2249 - /**  
2250 - * @description  
2251 - * 关联的账号名称  
2252 - */  
2253 - accountName?: string;  
2254 - /**  
2255 - * @description  
2256 - * 关联的账号手机号  
2257 - */  
2258 - accountPhone?: string;  
2259 - /**  
2260 - * @description  
2261 - * 课题组id  
2262 - * @format int64  
2263 - */  
2264 - groupId?: number;  
2265 - /**  
2266 - * @description  
2267 - * 主键id  
2268 - * @format int64  
2269 - */  
2270 - id?: number;  
2271 -}  
2272 -  
2273 -export interface ResearchGroupAddRequest {  
2274 - accounts?: Array<ResearchGroupAccountAddRequest>;  
2275 - /**  
2276 - * @description  
2277 - * 课题组名称  
2278 - */  
2279 - group?: string;  
2280 - /**  
2281 - * @description  
2282 - * 课题组负责人  
2283 - */  
2284 - leader?: string;  
2285 - members?: Array<ResearchGroupMemberAddRequest>;  
2286 -}  
2287 -  
2288 -export interface ResearchGroupDeleteRequest {  
2289 - /**  
2290 - * @description  
2291 - * 主键id  
2292 - */  
2293 - ids?: Array<number>;  
2294 -}  
2295 -  
2296 -export interface ResearchGroupDetailRequest {  
2297 - /**  
2298 - * @description  
2299 - * 主键id  
2300 - * @format int64  
2301 - */  
2302 - id?: number;  
2303 -}  
2304 -  
2305 -export interface ResearchGroupEditRequest {  
2306 - /**  
2307 - * @description  
2308 - * 课题组预存账号  
2309 - */  
2310 - accounts?: Array<ResearchGroupAccountEditRequest>;  
2311 - /**  
2312 - * @description  
2313 - * 课题组名称  
2314 - */  
2315 - group?: string;  
2316 - /**  
2317 - * @description  
2318 - * 主键id  
2319 - * @format int64  
2320 - */  
2321 - id?: number;  
2322 - /**  
2323 - * @description  
2324 - * 课题组负责人  
2325 - */  
2326 - leader?: string;  
2327 - /**  
2328 - * @description  
2329 - * 课题组成员集合  
2330 - */  
2331 - members?: Array<ResearchGroupMemberEditRequest>;  
2332 -}  
2333 -  
2334 -export interface ResearchGroupListRequest {  
2335 - /**  
2336 - * @description  
2337 - * 预存账号手机号  
2338 - */  
2339 - accountPhone?: string;  
2340 - /** @format int32 */  
2341 - current?: number;  
2342 - /** @format int32 */  
2343 - end?: number;  
2344 - /**  
2345 - * @description  
2346 - * 课题组名称  
2347 - */  
2348 - groupName?: string;  
2349 - /**  
2350 - * @description  
2351 - * 课题组负责人  
2352 - */  
2353 - leaderName?: string;  
2354 - /**  
2355 - * @description  
2356 - * 课题组成员名称  
2357 - */  
2358 - memberName?: string;  
2359 - /**  
2360 - * @description  
2361 - * 课题组成员手机号  
2362 - */  
2363 - memberPhone?: string;  
2364 - /** @format int32 */  
2365 - pageSize?: number;  
2366 - /** @format int32 */  
2367 - start?: number;  
2368 - /** @format int32 */  
2369 - total?: number;  
2370 -}  
2371 -  
2372 -export interface ResearchGroupMemberAddRequest {  
2373 - /**  
2374 - * @description  
2375 - * 课题组ID  
2376 - * @format int64  
2377 - */  
2378 - groupId?: number;  
2379 - /**  
2380 - * @description  
2381 - * 成员名称  
2382 - */  
2383 - memberName?: string;  
2384 - /**  
2385 - * @description  
2386 - * 成员手机号  
2387 - */  
2388 - memberPhone?: string;  
2389 -}  
2390 -  
2391 -export interface ResearchGroupMemberEditRequest {  
2392 - /**  
2393 - * @description  
2394 - * 课题组ID  
2395 - * @format int64  
2396 - */  
2397 - groupId?: number;  
2398 - /**  
2399 - * @description  
2400 - * 主键id  
2401 - * @format int64  
2402 - */  
2403 - id?: number;  
2404 - /**  
2405 - * @description  
2406 - * 成员名称  
2407 - */  
2408 - memberName?: string;  
2409 - /**  
2410 - * @description  
2411 - * 成员手机号  
2412 - */  
2413 - memberPhone?: string;  
2414 -}  
2415 -  
2416 -export interface ResearchGroupMemberRequestAddRequest {  
2417 - /**  
2418 - * @description  
2419 - * 课题组ID  
2420 - * @format int64  
2421 - */  
2422 - groupId?: number;  
2423 - /**  
2424 - * @description  
2425 - * 课题组名称  
2426 - */  
2427 - groupName?: string;  
2428 - members?: Array<ResearchGroupMemberAddRequest>;  
2429 - /**  
2430 - * @description  
2431 - * 申请备注  
2432 - */  
2433 - requestNotes?: string;  
2434 -}  
2435 -  
2436 -export interface ResearchGroupMemberRequestDeleteRequest {  
2437 - /**  
2438 - * @description  
2439 - * 主键id  
2440 - */  
2441 - ids?: Array<number>;  
2442 -}  
2443 -  
2444 -export interface ResearchGroupMemberRequestDetailRequest {  
2445 - /**  
2446 - * @description  
2447 - * 主键id  
2448 - * @format int64  
2449 - */  
2450 - id?: number;  
2451 -}  
2452 -  
2453 -export interface ResearchGroupMemberRequestEditRequest {  
2454 - /**  
2455 - * @description  
2456 - * 课题组ID  
2457 - * @format int64  
2458 - */  
2459 - groupId?: number;  
2460 - /**  
2461 - * @description  
2462 - * 课题组名称  
2463 - */  
2464 - groupName?: string;  
2465 - /**  
2466 - * @description  
2467 - * 主键id  
2468 - * @format int64  
2469 - */  
2470 - id?: number;  
2471 - /**  
2472 - * @description  
2473 - * 成员名称  
2474 - */  
2475 - memberName?: string;  
2476 - /**  
2477 - * @description  
2478 - * 成员手机号  
2479 - */  
2480 - memberPhone?: string;  
2481 - /**  
2482 - * @description  
2483 - * 申请备注  
2484 - */  
2485 - requestNotes?: string;  
2486 -}  
2487 -  
2488 -export interface ResearchGroupMemberRequestsRequest {  
2489 - /**  
2490 - * @description  
2491 - * 审核备注  
2492 - */  
2493 - auditNotes?: string;  
2494 - /**  
2495 - * @description  
2496 - * 审核状态  
2497 - */  
2498 - auditStatus?: string;  
2499 - /**  
2500 - * @description  
2501 - * 创建人  
2502 - */  
2503 - createByName?: string;  
2504 - /** @format int32 */  
2505 - current?: number;  
2506 - /** @format int32 */  
2507 - end?: number;  
2508 - /**  
2509 - * @description  
2510 - * 课题组名称  
2511 - */  
2512 - groupName?: string;  
2513 - /**  
2514 - * @description  
2515 - * 成员名称  
2516 - */  
2517 - memberName?: string;  
2518 - /**  
2519 - * @description  
2520 - * 成员手机号  
2521 - */  
2522 - memberPhone?: string;  
2523 - /** @format int32 */  
2524 - pageSize?: number;  
2525 - /**  
2526 - * @description  
2527 - * 申请备注  
2528 - */  
2529 - requestNotes?: string;  
2530 - /** @format int32 */  
2531 - start?: number;  
2532 - /** @format int32 */  
2533 - total?: number;  
2534 -}  
2535 -  
2536 export interface ResetPwdVO { 2337 export interface ResetPwdVO {
2537 /** @format int64 */ 2338 /** @format int64 */
2538 userId?: number; 2339 userId?: number;
@@ -3162,6 +2963,10 @@ export interface SalesRechargePrepaymentUpdateRequest { @@ -3162,6 +2963,10 @@ export interface SalesRechargePrepaymentUpdateRequest {
3162 salesCode?: string; 2963 salesCode?: string;
3163 } 2964 }
3164 2965
  2966 +export type ServerResultSimplePageUtilsAdminClientDto = ServerResult<
  2967 + SimplePageUtils<AdminClientDto>
  2968 +>;
  2969 +export type SimplePageUtilsAdminClientDto = SimplePageUtils<AdminClientDto>;
3165 /** 2970 /**
3166 * @description 2971 * @description
3167 * 开票添加对象 2972 * 开票添加对象
@@ -3338,3 +3143,14 @@ export interface Dto { @@ -3338,3 +3143,14 @@ export interface Dto {
3338 */ 3143 */
3339 subOrderIds?: Array<string>; 3144 subOrderIds?: Array<string>;
3340 } 3145 }
  3146 +
  3147 +export interface SimplePageUtils<AdminClientDto = any> {
  3148 + /** @format int64 */
  3149 + count?: number;
  3150 + data?: Array<AdminClientDto>;
  3151 + /** @format int64 */
  3152 + pageSize?: number;
  3153 + specialPath?: Array<string>;
  3154 + /** @format int64 */
  3155 + total?: number;
  3156 +}
src/services/request.ts
@@ -6,6 +6,7 @@ import { request as requester } from &#39;umi&#39;; @@ -6,6 +6,7 @@ import { request as requester } from &#39;umi&#39;;
6 import type { 6 import type {
7 AdminAuthRoleVO, 7 AdminAuthRoleVO,
8 AdminAuthUserVO, 8 AdminAuthUserVO,
  9 + AdminClientDto,
9 AdminDeptQueryVO, 10 AdminDeptQueryVO,
10 AdminDeptVO, 11 AdminDeptVO,
11 AdminJobQueryVO, 12 AdminJobQueryVO,
@@ -56,7 +57,6 @@ import type { @@ -56,7 +57,6 @@ import type {
56 MaterialUnitListRes, 57 MaterialUnitListRes,
57 MeasureUnitListRes, 58 MeasureUnitListRes,
58 MessageQueryDTO, 59 MessageQueryDTO,
59 - ModelAndView,  
60 OrderAddVO, 60 OrderAddVO,
61 OrderAuditLogQueryVO, 61 OrderAuditLogQueryVO,
62 OrderBaseInfoQueryVO, 62 OrderBaseInfoQueryVO,
@@ -80,6 +80,7 @@ import type { @@ -80,6 +80,7 @@ import type {
80 QueryAfterSalesInfoSnapshotDto, 80 QueryAfterSalesInfoSnapshotDto,
81 QueryAnnexDto, 81 QueryAnnexDto,
82 QueryBankStatementDto, 82 QueryBankStatementDto,
  83 + QueryClientDto,
83 QueryCustomerInformationDto, 84 QueryCustomerInformationDto,
84 QueryHistoryRecordDto, 85 QueryHistoryRecordDto,
85 QueryInvoiceDetailDto, 86 QueryInvoiceDetailDto,
@@ -106,6 +107,7 @@ import type { @@ -106,6 +107,7 @@ import type {
106 SaveReply, 107 SaveReply,
107 ServerResult, 108 ServerResult,
108 ShippingWarehouseChangeDto, 109 ShippingWarehouseChangeDto,
  110 + SimplePageUtils,
109 StoreOrderInvoiceRequest, 111 StoreOrderInvoiceRequest,
110 SysLogQueryVO, 112 SysLogQueryVO,
111 SystemCustomFieldReq, 113 SystemCustomFieldReq,
@@ -124,6 +126,148 @@ import type { @@ -124,6 +126,148 @@ import type {
124 UserNowMoneyCheckRequest, 126 UserNowMoneyCheckRequest,
125 } from './definition'; 127 } from './definition';
126 128
  129 +/** @description request parameter type for postAdminClientAddAdminClient */
  130 +export interface PostAdminClientAddAdminClientOption {
  131 + /**
  132 + * @description
  133 + * dto
  134 + */
  135 + body: {
  136 + /**
  137 + @description
  138 + dto */
  139 + dto: AdminClientDto;
  140 + };
  141 +}
  142 +
  143 +/** @description response type for postAdminClientAddAdminClient */
  144 +export interface PostAdminClientAddAdminClientResponse {
  145 + /**
  146 + * @description
  147 + * OK
  148 + */
  149 + 200: ServerResult;
  150 + /**
  151 + * @description
  152 + * Created
  153 + */
  154 + 201: any;
  155 + /**
  156 + * @description
  157 + * Unauthorized
  158 + */
  159 + 401: any;
  160 + /**
  161 + * @description
  162 + * Forbidden
  163 + */
  164 + 403: any;
  165 + /**
  166 + * @description
  167 + * Not Found
  168 + */
  169 + 404: any;
  170 +}
  171 +
  172 +export type PostAdminClientAddAdminClientResponseSuccess =
  173 + PostAdminClientAddAdminClientResponse[200];
  174 +/**
  175 + * @description
  176 + * 客户管理
  177 + * @tags 客户管理
  178 + * @produces *
  179 + * @consumes application/json
  180 + */
  181 +export const postAdminClientAddAdminClient = /* #__PURE__ */ (() => {
  182 + const method = 'post';
  183 + const url = '/admin/client/addAdminClient';
  184 + function request(
  185 + option: PostAdminClientAddAdminClientOption,
  186 + ): Promise<PostAdminClientAddAdminClientResponseSuccess> {
  187 + return requester(request.url, {
  188 + method: request.method,
  189 + ...option,
  190 + }) as unknown as Promise<PostAdminClientAddAdminClientResponseSuccess>;
  191 + }
  192 +
  193 + /** http method */
  194 + request.method = method;
  195 + /** request url */
  196 + request.url = url;
  197 + return request;
  198 +})();
  199 +
  200 +/** @description request parameter type for postAdminClientQueryClientPage */
  201 +export interface PostAdminClientQueryClientPageOption {
  202 + /**
  203 + * @description
  204 + * dto
  205 + */
  206 + body: {
  207 + /**
  208 + @description
  209 + dto */
  210 + dto: QueryClientDto;
  211 + };
  212 +}
  213 +
  214 +/** @description response type for postAdminClientQueryClientPage */
  215 +export interface PostAdminClientQueryClientPageResponse {
  216 + /**
  217 + * @description
  218 + * OK
  219 + */
  220 + 200: ServerResult<SimplePageUtils<AdminClientDto>>;
  221 + /**
  222 + * @description
  223 + * Created
  224 + */
  225 + 201: any;
  226 + /**
  227 + * @description
  228 + * Unauthorized
  229 + */
  230 + 401: any;
  231 + /**
  232 + * @description
  233 + * Forbidden
  234 + */
  235 + 403: any;
  236 + /**
  237 + * @description
  238 + * Not Found
  239 + */
  240 + 404: any;
  241 +}
  242 +
  243 +export type PostAdminClientQueryClientPageResponseSuccess =
  244 + PostAdminClientQueryClientPageResponse[200];
  245 +/**
  246 + * @description
  247 + * 客户管理
  248 + * @tags 客户管理
  249 + * @produces *
  250 + * @consumes application/json
  251 + */
  252 +export const postAdminClientQueryClientPage = /* #__PURE__ */ (() => {
  253 + const method = 'post';
  254 + const url = '/admin/client/queryClientPage';
  255 + function request(
  256 + option: PostAdminClientQueryClientPageOption,
  257 + ): Promise<PostAdminClientQueryClientPageResponseSuccess> {
  258 + return requester(request.url, {
  259 + method: request.method,
  260 + ...option,
  261 + }) as unknown as Promise<PostAdminClientQueryClientPageResponseSuccess>;
  262 + }
  263 +
  264 + /** http method */
  265 + request.method = method;
  266 + /** request url */
  267 + request.url = url;
  268 + return request;
  269 +})();
  270 +
127 /** @description request parameter type for postApiLocalStorageUpload */ 271 /** @description request parameter type for postApiLocalStorageUpload */
128 export interface PostApiLocalStorageUploadOption { 272 export interface PostApiLocalStorageUploadOption {
129 /** 273 /**
@@ -2319,7 +2463,9 @@ export interface GetErrorResponse { @@ -2319,7 +2463,9 @@ export interface GetErrorResponse {
2319 * @description 2463 * @description
2320 * OK 2464 * OK
2321 */ 2465 */
2322 - 200: ModelAndView; 2466 + 200: {
  2467 + [propertyName: string]: any;
  2468 + };
2323 /** 2469 /**
2324 * @description 2470 * @description
2325 * Unauthorized 2471 * Unauthorized
@@ -2340,9 +2486,9 @@ export interface GetErrorResponse { @@ -2340,9 +2486,9 @@ export interface GetErrorResponse {
2340 export type GetErrorResponseSuccess = GetErrorResponse[200]; 2486 export type GetErrorResponseSuccess = GetErrorResponse[200];
2341 /** 2487 /**
2342 * @description 2488 * @description
2343 - * errorHtml 2489 + * error
2344 * @tags basic-error-controller 2490 * @tags basic-error-controller
2345 - * @produces text/html 2491 + * @produces *
2346 */ 2492 */
2347 export const getError = /* #__PURE__ */ (() => { 2493 export const getError = /* #__PURE__ */ (() => {
2348 const method = 'get'; 2494 const method = 'get';
@@ -2366,7 +2512,9 @@ export interface PutErrorResponse { @@ -2366,7 +2512,9 @@ export interface PutErrorResponse {
2366 * @description 2512 * @description
2367 * OK 2513 * OK
2368 */ 2514 */
2369 - 200: ModelAndView; 2515 + 200: {
  2516 + [propertyName: string]: any;
  2517 + };
2370 /** 2518 /**
2371 * @description 2519 * @description
2372 * Created 2520 * Created
@@ -2392,9 +2540,9 @@ export interface PutErrorResponse { @@ -2392,9 +2540,9 @@ export interface PutErrorResponse {
2392 export type PutErrorResponseSuccess = PutErrorResponse[200]; 2540 export type PutErrorResponseSuccess = PutErrorResponse[200];
2393 /** 2541 /**
2394 * @description 2542 * @description
2395 - * errorHtml 2543 + * error
2396 * @tags basic-error-controller 2544 * @tags basic-error-controller
2397 - * @produces text/html 2545 + * @produces *
2398 * @consumes application/json 2546 * @consumes application/json
2399 */ 2547 */
2400 export const putError = /* #__PURE__ */ (() => { 2548 export const putError = /* #__PURE__ */ (() => {
@@ -2419,7 +2567,9 @@ export interface PostErrorResponse { @@ -2419,7 +2567,9 @@ export interface PostErrorResponse {
2419 * @description 2567 * @description
2420 * OK 2568 * OK
2421 */ 2569 */
2422 - 200: ModelAndView; 2570 + 200: {
  2571 + [propertyName: string]: any;
  2572 + };
2423 /** 2573 /**
2424 * @description 2574 * @description
2425 * Created 2575 * Created
@@ -2445,9 +2595,9 @@ export interface PostErrorResponse { @@ -2445,9 +2595,9 @@ export interface PostErrorResponse {
2445 export type PostErrorResponseSuccess = PostErrorResponse[200]; 2595 export type PostErrorResponseSuccess = PostErrorResponse[200];
2446 /** 2596 /**
2447 * @description 2597 * @description
2448 - * errorHtml 2598 + * error
2449 * @tags basic-error-controller 2599 * @tags basic-error-controller
2450 - * @produces text/html 2600 + * @produces *
2451 * @consumes application/json 2601 * @consumes application/json
2452 */ 2602 */
2453 export const postError = /* #__PURE__ */ (() => { 2603 export const postError = /* #__PURE__ */ (() => {
@@ -2472,7 +2622,9 @@ export interface DeleteErrorResponse { @@ -2472,7 +2622,9 @@ export interface DeleteErrorResponse {
2472 * @description 2622 * @description
2473 * OK 2623 * OK
2474 */ 2624 */
2475 - 200: ModelAndView; 2625 + 200: {
  2626 + [propertyName: string]: any;
  2627 + };
2476 /** 2628 /**
2477 * @description 2629 * @description
2478 * No Content 2630 * No Content
@@ -2493,9 +2645,9 @@ export interface DeleteErrorResponse { @@ -2493,9 +2645,9 @@ export interface DeleteErrorResponse {
2493 export type DeleteErrorResponseSuccess = DeleteErrorResponse[200]; 2645 export type DeleteErrorResponseSuccess = DeleteErrorResponse[200];
2494 /** 2646 /**
2495 * @description 2647 * @description
2496 - * errorHtml 2648 + * error
2497 * @tags basic-error-controller 2649 * @tags basic-error-controller
2498 - * @produces text/html 2650 + * @produces *
2499 */ 2651 */
2500 export const deleteError = /* #__PURE__ */ (() => { 2652 export const deleteError = /* #__PURE__ */ (() => {
2501 const method = 'delete'; 2653 const method = 'delete';
@@ -2519,7 +2671,9 @@ export interface OptionsErrorResponse { @@ -2519,7 +2671,9 @@ export interface OptionsErrorResponse {
2519 * @description 2671 * @description
2520 * OK 2672 * OK
2521 */ 2673 */
2522 - 200: ModelAndView; 2674 + 200: {
  2675 + [propertyName: string]: any;
  2676 + };
2523 /** 2677 /**
2524 * @description 2678 * @description
2525 * No Content 2679 * No Content
@@ -2540,9 +2694,9 @@ export interface OptionsErrorResponse { @@ -2540,9 +2694,9 @@ export interface OptionsErrorResponse {
2540 export type OptionsErrorResponseSuccess = OptionsErrorResponse[200]; 2694 export type OptionsErrorResponseSuccess = OptionsErrorResponse[200];
2541 /** 2695 /**
2542 * @description 2696 * @description
2543 - * errorHtml 2697 + * error
2544 * @tags basic-error-controller 2698 * @tags basic-error-controller
2545 - * @produces text/html 2699 + * @produces *
2546 * @consumes application/json 2700 * @consumes application/json
2547 */ 2701 */
2548 export const optionsError = /* #__PURE__ */ (() => { 2702 export const optionsError = /* #__PURE__ */ (() => {
@@ -2567,7 +2721,9 @@ export interface HeadErrorResponse { @@ -2567,7 +2721,9 @@ export interface HeadErrorResponse {
2567 * @description 2721 * @description
2568 * OK 2722 * OK
2569 */ 2723 */
2570 - 200: ModelAndView; 2724 + 200: {
  2725 + [propertyName: string]: any;
  2726 + };
2571 /** 2727 /**
2572 * @description 2728 * @description
2573 * No Content 2729 * No Content
@@ -2588,9 +2744,9 @@ export interface HeadErrorResponse { @@ -2588,9 +2744,9 @@ export interface HeadErrorResponse {
2588 export type HeadErrorResponseSuccess = HeadErrorResponse[200]; 2744 export type HeadErrorResponseSuccess = HeadErrorResponse[200];
2589 /** 2745 /**
2590 * @description 2746 * @description
2591 - * errorHtml 2747 + * error
2592 * @tags basic-error-controller 2748 * @tags basic-error-controller
2593 - * @produces text/html 2749 + * @produces *
2594 * @consumes application/json 2750 * @consumes application/json
2595 */ 2751 */
2596 export const headError = /* #__PURE__ */ (() => { 2752 export const headError = /* #__PURE__ */ (() => {
@@ -2615,7 +2771,9 @@ export interface PatchErrorResponse { @@ -2615,7 +2771,9 @@ export interface PatchErrorResponse {
2615 * @description 2771 * @description
2616 * OK 2772 * OK
2617 */ 2773 */
2618 - 200: ModelAndView; 2774 + 200: {
  2775 + [propertyName: string]: any;
  2776 + };
2619 /** 2777 /**
2620 * @description 2778 * @description
2621 * No Content 2779 * No Content
@@ -2636,9 +2794,9 @@ export interface PatchErrorResponse { @@ -2636,9 +2794,9 @@ export interface PatchErrorResponse {
2636 export type PatchErrorResponseSuccess = PatchErrorResponse[200]; 2794 export type PatchErrorResponseSuccess = PatchErrorResponse[200];
2637 /** 2795 /**
2638 * @description 2796 * @description
2639 - * errorHtml 2797 + * error
2640 * @tags basic-error-controller 2798 * @tags basic-error-controller
2641 - * @produces text/html 2799 + * @produces *
2642 * @consumes application/json 2800 * @consumes application/json
2643 */ 2801 */
2644 export const patchError = /* #__PURE__ */ (() => { 2802 export const patchError = /* #__PURE__ */ (() => {
@@ -10650,6 +10808,114 @@ export const postServiceBankStatementQueryBankStatement = @@ -10650,6 +10808,114 @@ export const postServiceBankStatementQueryBankStatement =
10650 return request; 10808 return request;
10651 })(); 10809 })();
10652 10810
  10811 +/** @description response type for postServiceConstClientLevels */
  10812 +export interface PostServiceConstClientLevelsResponse {
  10813 + /**
  10814 + * @description
  10815 + * OK
  10816 + */
  10817 + 200: ServerResult;
  10818 + /**
  10819 + * @description
  10820 + * Created
  10821 + */
  10822 + 201: any;
  10823 + /**
  10824 + * @description
  10825 + * Unauthorized
  10826 + */
  10827 + 401: any;
  10828 + /**
  10829 + * @description
  10830 + * Forbidden
  10831 + */
  10832 + 403: any;
  10833 + /**
  10834 + * @description
  10835 + * Not Found
  10836 + */
  10837 + 404: any;
  10838 +}
  10839 +
  10840 +export type PostServiceConstClientLevelsResponseSuccess =
  10841 + PostServiceConstClientLevelsResponse[200];
  10842 +/**
  10843 + * @description
  10844 + * 客户等级
  10845 + * @tags front-const-controller
  10846 + * @produces *
  10847 + * @consumes application/json
  10848 + */
  10849 +export const postServiceConstClientLevels = /* #__PURE__ */ (() => {
  10850 + const method = 'post';
  10851 + const url = '/service/const/clientLevels';
  10852 + function request(): Promise<PostServiceConstClientLevelsResponseSuccess> {
  10853 + return requester(request.url, {
  10854 + method: request.method,
  10855 + }) as unknown as Promise<PostServiceConstClientLevelsResponseSuccess>;
  10856 + }
  10857 +
  10858 + /** http method */
  10859 + request.method = method;
  10860 + /** request url */
  10861 + request.url = url;
  10862 + return request;
  10863 +})();
  10864 +
  10865 +/** @description response type for postServiceConstTradeStatus */
  10866 +export interface PostServiceConstTradeStatusResponse {
  10867 + /**
  10868 + * @description
  10869 + * OK
  10870 + */
  10871 + 200: ServerResult;
  10872 + /**
  10873 + * @description
  10874 + * Created
  10875 + */
  10876 + 201: any;
  10877 + /**
  10878 + * @description
  10879 + * Unauthorized
  10880 + */
  10881 + 401: any;
  10882 + /**
  10883 + * @description
  10884 + * Forbidden
  10885 + */
  10886 + 403: any;
  10887 + /**
  10888 + * @description
  10889 + * Not Found
  10890 + */
  10891 + 404: any;
  10892 +}
  10893 +
  10894 +export type PostServiceConstTradeStatusResponseSuccess =
  10895 + PostServiceConstTradeStatusResponse[200];
  10896 +/**
  10897 + * @description
  10898 + * 跟进状态
  10899 + * @tags front-const-controller
  10900 + * @produces *
  10901 + * @consumes application/json
  10902 + */
  10903 +export const postServiceConstTradeStatus = /* #__PURE__ */ (() => {
  10904 + const method = 'post';
  10905 + const url = '/service/const/tradeStatus';
  10906 + function request(): Promise<PostServiceConstTradeStatusResponseSuccess> {
  10907 + return requester(request.url, {
  10908 + method: request.method,
  10909 + }) as unknown as Promise<PostServiceConstTradeStatusResponseSuccess>;
  10910 + }
  10911 +
  10912 + /** http method */
  10913 + request.method = method;
  10914 + /** request url */
  10915 + request.url = url;
  10916 + return request;
  10917 +})();
  10918 +
10653 /** @description request parameter type for postServiceInvoiceAddInvoice */ 10919 /** @description request parameter type for postServiceInvoiceAddInvoice */
10654 export interface PostServiceInvoiceAddInvoiceOption { 10920 export interface PostServiceInvoiceAddInvoiceOption {
10655 /** 10921 /**