Commit 43a6ae3e4415d96f94708c5179bfa573a5eaeb37
feat: update
Showing
18 changed files
with
1150 additions
and
314 deletions
src/pages/Instalment/components/comfire/comfire.tsx
1 | 1 | import { ModalForm } from '@ant-design/pro-components'; |
2 | -import { Form, message } from 'antd'; | |
2 | +import { Form } from 'antd'; | |
3 | 3 | import { useState } from 'react'; |
4 | 4 | |
5 | 5 | const waitTime = (time: number = 100) => { |
... | ... | @@ -41,7 +41,6 @@ export default ({ currtDid, sureDelete }) => { |
41 | 41 | onFinish={async () => { |
42 | 42 | await waitTime(100); |
43 | 43 | sureDelete([ids]); |
44 | - message.success('提交成功'); | |
45 | 44 | return true; |
46 | 45 | }} |
47 | 46 | > | ... | ... |
src/pages/Instalment/components/detail/detail.tsx
... | ... | @@ -207,6 +207,7 @@ export default ({ toReload }) => { |
207 | 207 | payWay: values.payWay || contextBody.payWay, |
208 | 208 | annex: contextBody.annex, |
209 | 209 | remark: values.remark || contextBody.remark, |
210 | + createByName: null, | |
210 | 211 | }; |
211 | 212 | if (values.annex) { |
212 | 213 | formData.append('file', values.annex[0].originFileObj as RcFile); |
... | ... | @@ -221,6 +222,9 @@ export default ({ toReload }) => { |
221 | 222 | toSendEdit.annex = res.data; |
222 | 223 | } |
223 | 224 | } |
225 | + toSendEdit.createByName = JSON.parse( | |
226 | + localStorage.getItem('userInfo'), | |
227 | + ).username; | |
224 | 228 | const isSaveOrUpdate = await postOrderErpOrderStagesAdd({ |
225 | 229 | data: { ...toSendEdit }, |
226 | 230 | }); |
... | ... | @@ -230,31 +234,32 @@ export default ({ toReload }) => { |
230 | 234 | |
231 | 235 | otherBody.forEach((item) => { |
232 | 236 | let remakeItem = { |
233 | - ossId: item.ossId, | |
237 | + ossId: contextBody.id, | |
234 | 238 | number: item.id, |
235 | 239 | dateRange: item.payDate, |
236 | 240 | fileName: item.fileName, |
241 | + fileUrl: item.fileUrl, | |
237 | 242 | }; |
238 | - if ( | |
239 | - typeof item.fileUrl === 'object' && | |
240 | - item.fileUrl instanceof File | |
241 | - ) { | |
242 | - const formData = new FormData(); | |
243 | - formData.append('file', item.fileUrl as RcFile); | |
244 | - const uploadPromise = async () => { | |
245 | - const res = await postOrderErpOrderStagesUpload({ | |
246 | - data: formData, | |
247 | - headers: { | |
248 | - 'Content-Type': | |
249 | - 'multipart/form-data; boundary=----WebKitFormBoundarynl6gT1BKdPWIejNq', | |
250 | - }, | |
251 | - }); | |
252 | - if (res.data) { | |
253 | - remakeItem.fileUrl = res.data; | |
254 | - } | |
255 | - }; | |
256 | - promises.push(uploadPromise()); | |
257 | - } | |
243 | + // if ( | |
244 | + // typeof item.fileUrl === 'object' && | |
245 | + // item.fileUrl instanceof File | |
246 | + // ) { | |
247 | + // const formData = new FormData(); | |
248 | + // formData.append('file', item.fileUrl as RcFile); | |
249 | + // const uploadPromise = async () => { | |
250 | + // const res = await postOrderErpOrderStagesUpload({ | |
251 | + // data: formData, | |
252 | + // headers: { | |
253 | + // 'Content-Type': | |
254 | + // 'multipart/form-data; boundary=----WebKitFormBoundarynl6gT1BKdPWIejNq', | |
255 | + // }, | |
256 | + // }); | |
257 | + // if (res.data) { | |
258 | + // remakeItem.fileUrl = res.data; | |
259 | + // } | |
260 | + // }; | |
261 | + // promises.push(uploadPromise()); | |
262 | + // } | |
258 | 263 | remakeValue.push(remakeItem); |
259 | 264 | }); |
260 | 265 | ... | ... |
src/pages/Instalment/components/edit/edit.tsx
... | ... | @@ -33,7 +33,6 @@ export default ({ currentContract, toReload }) => { |
33 | 33 | const [total, setTotal] = useState(0); |
34 | 34 | const [payWayBody, setPayWayBody] = useState([]); |
35 | 35 | const [otherBody, setOtherBody] = useState([]); |
36 | - | |
37 | 36 | type OrderStagesWithListItem = { |
38 | 37 | //文件编号 |
39 | 38 | id: number; |
... | ... | @@ -85,6 +84,7 @@ export default ({ currentContract, toReload }) => { |
85 | 84 | } |
86 | 85 | |
87 | 86 | function setSave(value) { |
87 | + console.log(value); | |
88 | 88 | setOtherBody(value); |
89 | 89 | } |
90 | 90 | |
... | ... | @@ -134,18 +134,32 @@ export default ({ currentContract, toReload }) => { |
134 | 134 | } |
135 | 135 | }; |
136 | 136 | |
137 | - async function getBody() { | |
138 | - const res = await postOrderErpOrderStagesSearch({ | |
139 | - data: { contract: currentContract }, | |
140 | - }); | |
141 | - const context = res.data[0]; | |
142 | - | |
143 | - if (context.contract !== null) { | |
144 | - setContextBody(context); | |
145 | - setTotal(context.totalPrice); | |
146 | - form.setFieldValue('totalPrice', context.totalPrice); | |
137 | + async function getBody(value) { | |
138 | + if (value !== null) { | |
139 | + const res = await postOrderErpOrderStagesSearch({ | |
140 | + data: { contract: value }, | |
141 | + }); | |
142 | + const context = res.data[0]; | |
143 | + console.log(context); | |
144 | + if (context.contract !== null) { | |
145 | + setContextBody(context); | |
146 | + setTotal(context.totalPrice); | |
147 | + form.setFieldValue('totalPrice', context.totalPrice); | |
148 | + } | |
149 | + handleInputChange(context.payWay, 0, context.totalPrice); | |
150 | + } else { | |
151 | + const res = await postOrderErpOrderStagesSearch({ | |
152 | + data: { contract: currentContract }, | |
153 | + }); | |
154 | + const context = res.data[0]; | |
155 | + console.log(context); | |
156 | + if (context.contract !== null) { | |
157 | + setContextBody(context); | |
158 | + setTotal(context.totalPrice); | |
159 | + form.setFieldValue('totalPrice', context.totalPrice); | |
160 | + } | |
161 | + handleInputChange(context.payWay, 0, context.totalPrice); | |
147 | 162 | } |
148 | - handleInputChange(context.payWay, 0, context.totalPrice); | |
149 | 163 | } |
150 | 164 | |
151 | 165 | function getEditProductBody(value) { |
... | ... | @@ -157,7 +171,8 @@ export default ({ currentContract, toReload }) => { |
157 | 171 | } |
158 | 172 | |
159 | 173 | useEffect(() => { |
160 | - getBody(); | |
174 | + console.log('1'); | |
175 | + getBody(null); | |
161 | 176 | }, []); |
162 | 177 | |
163 | 178 | return ( |
... | ... | @@ -177,34 +192,35 @@ export default ({ currentContract, toReload }) => { |
177 | 192 | } |
178 | 193 | let remakeValue = []; |
179 | 194 | const promises = []; |
180 | - | |
195 | + console.log(otherBody); | |
181 | 196 | otherBody.forEach((item) => { |
182 | 197 | let remakeItem = { |
183 | 198 | ossId: contextBody.id, |
184 | 199 | number: item.id, |
185 | 200 | dateRange: item.payDate, |
186 | 201 | fileName: item.fileName, |
202 | + fileUrl: item.fileUrl, | |
187 | 203 | }; |
188 | - if ( | |
189 | - typeof item.fileUrl === 'object' && | |
190 | - item.fileUrl instanceof File | |
191 | - ) { | |
192 | - const formData = new FormData(); | |
193 | - formData.append('file', item.fileUrl as RcFile); | |
194 | - const uploadPromise = async () => { | |
195 | - const res = await postOrderErpOrderStagesUpload({ | |
196 | - data: formData, | |
197 | - headers: { | |
198 | - 'Content-Type': | |
199 | - 'multipart/form-data; boundary=----WebKitFormBoundarynl6gT1BKdPWIejNq', | |
200 | - }, | |
201 | - }); | |
202 | - if (res.data) { | |
203 | - remakeItem.fileUrl = res.data; | |
204 | - } | |
205 | - }; | |
206 | - promises.push(uploadPromise()); | |
207 | - } | |
204 | + // if ( | |
205 | + // typeof item.fileUrl === 'object' && | |
206 | + // item.fileUrl instanceof File | |
207 | + // ) { | |
208 | + // const formData = new FormData(); | |
209 | + // formData.append('file', item.fileUrl as RcFile); | |
210 | + // const uploadPromise = async () => { | |
211 | + // const res = await postOrderErpOrderStagesUpload({ | |
212 | + // data: formData, | |
213 | + // headers: { | |
214 | + // 'Content-Type': | |
215 | + // 'multipart/form-data; boundary=----WebKitFormBoundarynl6gT1BKdPWIejNq', | |
216 | + // }, | |
217 | + // }); | |
218 | + // if (res.data) { | |
219 | + // remakeItem.fileUrl = res.data; | |
220 | + // } | |
221 | + // }; | |
222 | + // promises.push(uploadPromise()); | |
223 | + // } | |
208 | 224 | remakeValue.push(remakeItem); |
209 | 225 | }); |
210 | 226 | Promise.all(promises).then(async () => { |
... | ... | @@ -243,8 +259,9 @@ export default ({ currentContract, toReload }) => { |
243 | 259 | const isSaveOrUpdate = await postOrderErpOrderStagesSaveOrUpdate({ |
244 | 260 | data: { ...toSendEdit }, |
245 | 261 | }); |
246 | - if (isSaveOrUpdate) { | |
247 | - getBody(); | |
262 | + if (isSaveOrUpdate.message === '成功') { | |
263 | + console.log('2'); | |
264 | + getBody(toSendEdit.contract); | |
248 | 265 | toReload(); |
249 | 266 | } |
250 | 267 | await waitTime(2000); | ... | ... |
src/pages/Instalment/components/payWayDetail/payWayDetail.tsx
... | ... | @@ -4,19 +4,18 @@ import { |
4 | 4 | EditableProTable, |
5 | 5 | ProFormDatePicker, |
6 | 6 | ProFormRadio, |
7 | - ProFormUploadButton, | |
8 | 7 | } from '@ant-design/pro-components'; |
9 | -import { message } from 'antd'; | |
10 | 8 | import React, { useEffect, useState } from 'react'; |
9 | +import PayWayUpload from '../upload/payWayUpload'; | |
11 | 10 | import './payWayDetail.less'; |
12 | 11 | |
13 | -const waitTime = (time: number = 100) => { | |
14 | - return new Promise((resolve) => { | |
15 | - setTimeout(() => { | |
16 | - resolve(true); | |
17 | - }, time); | |
18 | - }); | |
19 | -}; | |
12 | +// const waitTime = (time: number = 100) => { | |
13 | +// return new Promise((resolve) => { | |
14 | +// setTimeout(() => { | |
15 | +// resolve(true); | |
16 | +// }, time); | |
17 | +// }); | |
18 | +// }; | |
20 | 19 | |
21 | 20 | type DataSourceType = { |
22 | 21 | id: number; |
... | ... | @@ -74,6 +73,7 @@ export default ({ payBody, thisId, currtSave }) => { |
74 | 73 | ]; |
75 | 74 | |
76 | 75 | const [editableKeys, setEditableRowKeys] = useState<React.Key[]>([]); |
76 | + const [isRetrun, setIsRetrun] = useState(false); | |
77 | 77 | const [position, setPosition] = useState<'top' | 'bottom' | 'hidden'>( |
78 | 78 | 'hidden', |
79 | 79 | ); |
... | ... | @@ -81,9 +81,17 @@ export default ({ payBody, thisId, currtSave }) => { |
81 | 81 | readonly DataSourceType[] |
82 | 82 | >([...defaultData]); |
83 | 83 | // const [body, setBody] = useState([]) |
84 | - const [isAccept, setIsAccept] = useState(null); | |
84 | + // const [isAccept, setIsAccept] = useState(null); | |
85 | 85 | // const [isCurrtSave, setIsCurrtSave] = useState(false); |
86 | 86 | |
87 | + const waitTime = (time: number = 100) => { | |
88 | + return new Promise((resolve) => { | |
89 | + setTimeout(() => { | |
90 | + resolve(true); | |
91 | + }, time); | |
92 | + }); | |
93 | + }; | |
94 | + | |
87 | 95 | async function getOther(value, arr) { |
88 | 96 | const res = await postOrderErpOrderStagesPayWaySelect({ |
89 | 97 | data: { ossId: value }, |
... | ... | @@ -106,11 +114,32 @@ export default ({ payBody, thisId, currtSave }) => { |
106 | 114 | }); |
107 | 115 | return currt; |
108 | 116 | }); |
117 | + // console.log(remake); | |
109 | 118 | setPayWayDetailBody(remake); |
119 | + setIsRetrun(true); | |
110 | 120 | } |
111 | 121 | } |
112 | 122 | |
113 | - function setPayWay(value) { | |
123 | + function getUploadFile(value) { | |
124 | + let remakeBody = []; | |
125 | + let remakeBodyItem = {}; | |
126 | + payWayDetailBody.forEach((item) => { | |
127 | + if (item.id === value.id) { | |
128 | + remakeBodyItem = { | |
129 | + ...item, | |
130 | + fileUrl: value.url, | |
131 | + fileName: value.name, | |
132 | + }; | |
133 | + } else { | |
134 | + remakeBodyItem = { ...item }; | |
135 | + } | |
136 | + remakeBody.push(remakeBodyItem); | |
137 | + }); | |
138 | + setPayWayDetailBody(remakeBody); | |
139 | + currtSave(remakeBody); | |
140 | + } | |
141 | + | |
142 | + async function setPayWay(value) { | |
114 | 143 | const remakeData = payWayDetailBody.map((obj) => { |
115 | 144 | return { |
116 | 145 | ...obj, |
... | ... | @@ -127,9 +156,6 @@ export default ({ payBody, thisId, currtSave }) => { |
127 | 156 | getOther(thisId, remakeData); |
128 | 157 | } |
129 | 158 | } |
130 | - // useEffect(() => { | |
131 | - // getOther(thisId) | |
132 | - // }, [thisId]) | |
133 | 159 | |
134 | 160 | useEffect(() => { |
135 | 161 | setPayWay(payBody); |
... | ... | @@ -175,6 +201,7 @@ export default ({ payBody, thisId, currtSave }) => { |
175 | 201 | render: (text, record) => { |
176 | 202 | const handleChange = (value) => { |
177 | 203 | const updatedDataSource = payWayDetailBody.map((item) => { |
204 | + console.log(value); | |
178 | 205 | if (item.id === record.id) { |
179 | 206 | return { |
180 | 207 | ...item, |
... | ... | @@ -207,74 +234,33 @@ export default ({ payBody, thisId, currtSave }) => { |
207 | 234 | title: '付款单回执', |
208 | 235 | dataIndex: 'fileName', |
209 | 236 | render: (text, record) => { |
210 | - if (isAccept !== record.id) { | |
211 | - if ( | |
212 | - typeof record.fileUrl === 'object' && | |
213 | - record.fileUrl instanceof File | |
214 | - ) { | |
215 | - return ( | |
216 | - <a onClick={() => message.error('请先保存')}>{record.fileName}</a> | |
217 | - ); | |
218 | - } else { | |
219 | - return <a href={record.fileUrl}>{record.fileName}</a>; | |
220 | - } | |
237 | + if (record.fileUrl !== undefined) { | |
238 | + return ( | |
239 | + <PayWayUpload | |
240 | + natureModel={{ | |
241 | + id: record.id, | |
242 | + fileName: record.fileName, | |
243 | + fileUrl: record.fileUrl, | |
244 | + }} | |
245 | + setCurryFile={getUploadFile} | |
246 | + key={isRetrun} | |
247 | + ></PayWayUpload> | |
248 | + ); | |
221 | 249 | } else { |
222 | 250 | return ( |
223 | - <ProFormUploadButton | |
224 | - name={record.id} | |
225 | - onChange={(value) => { | |
226 | - console.log(value); | |
227 | - // console.log(payWayDetailBody); | |
228 | - let remakeBody = []; | |
229 | - let remakeBodyItem = {}; | |
230 | - payWayDetailBody.forEach((item) => { | |
231 | - if (item.id === record.id) { | |
232 | - remakeBodyItem = { | |
233 | - ...item, | |
234 | - fileUrl: value.fileList.originFileObj, | |
235 | - fileName: value.fileList.name, | |
236 | - }; | |
237 | - } else { | |
238 | - remakeBodyItem = { ...item }; | |
239 | - } | |
240 | - // if (value.fileList.length == 0) { | |
241 | - // remakeBodyItem = { ...item, fileUrl: undefined, fileName: undefined } | |
242 | - // } | |
243 | - remakeBody.push(remakeBodyItem); | |
244 | - }); | |
245 | - setPayWayDetailBody(remakeBody); | |
246 | - currtSave(remakeBody); | |
251 | + <PayWayUpload | |
252 | + natureModel={{ | |
253 | + id: record.id, | |
254 | + fileName: undefined, | |
255 | + fileUrl: undefined, | |
247 | 256 | }} |
248 | - width="md" | |
249 | - max={1} | |
250 | - /> | |
257 | + setCurryFile={getUploadFile} | |
258 | + key={isRetrun} | |
259 | + ></PayWayUpload> | |
251 | 260 | ); |
252 | 261 | } |
253 | 262 | }, |
254 | 263 | }, |
255 | - { | |
256 | - title: '操作', | |
257 | - valueType: 'option', | |
258 | - width: 200, | |
259 | - render: (text, record) => [ | |
260 | - <a | |
261 | - key="editable" | |
262 | - onClick={() => { | |
263 | - if (isAccept !== record.id) { | |
264 | - setIsAccept(record.id); | |
265 | - } else { | |
266 | - setIsAccept(null); | |
267 | - } | |
268 | - }} | |
269 | - > | |
270 | - {record.fileName !== undefined && | |
271 | - record.fileName !== '' && | |
272 | - record.fileName !== null | |
273 | - ? '重新上传' | |
274 | - : '上传回执'} | |
275 | - </a>, | |
276 | - ], | |
277 | - }, | |
278 | 264 | ]; |
279 | 265 | |
280 | 266 | return ( | ... | ... |
src/pages/Instalment/components/upload/payWayUpload.tsx
0 → 100644
1 | +import { postOrderErpOrderStagesUpload } from '@/services/request'; | |
2 | +import { UploadOutlined } from '@ant-design/icons'; | |
3 | +import type { UploadProps } from 'antd'; | |
4 | +import { Button, Upload, message } from 'antd'; | |
5 | +import { RcFile } from 'antd/es/upload'; | |
6 | +import React, { useEffect } from 'react'; | |
7 | + | |
8 | +const App: React.FC = ({ natureModel, setCurryFile }) => { | |
9 | + const [fileList, setFileList] = React.useState([{}]); | |
10 | + useEffect(() => { | |
11 | + console.log(natureModel); | |
12 | + if (natureModel.fileUrl !== undefined && natureModel.fileUrl !== null) { | |
13 | + setFileList([{ name: natureModel.fileName, url: natureModel.fileUrl }]); | |
14 | + } | |
15 | + }, []); | |
16 | + | |
17 | + const handleUploadChange = (value) => { | |
18 | + setFileList(value.fileList); | |
19 | + setCurryFile({ | |
20 | + id: natureModel.id, | |
21 | + name: null, | |
22 | + url: null, | |
23 | + }); | |
24 | + if ( | |
25 | + value.fileList.length !== 0 && | |
26 | + value.fileList[0].status === 'uploading' | |
27 | + ) { | |
28 | + (async () => { | |
29 | + if (!(value.fileList[0].originFileObj instanceof File)) { | |
30 | + console.log('is not file'); | |
31 | + return false; | |
32 | + } else { | |
33 | + const formData = new FormData(); | |
34 | + formData.append('file', value.fileList[0].originFileObj as RcFile); | |
35 | + const res = await postOrderErpOrderStagesUpload({ | |
36 | + data: formData, | |
37 | + headers: { | |
38 | + 'Content-Type': 'multipart/form-data', | |
39 | + }, | |
40 | + }); | |
41 | + if (res) { | |
42 | + message.success('提交成功'); | |
43 | + console.log({ | |
44 | + uid: value.fileList[0].originFileObj.uid, | |
45 | + name: value.fileList[0].originFileObj.name, | |
46 | + url: res.data, | |
47 | + }); | |
48 | + console.log(natureModel.id); | |
49 | + | |
50 | + setCurryFile({ | |
51 | + id: natureModel.id, | |
52 | + name: value.fileList[0].originFileObj.name, | |
53 | + url: res.data, | |
54 | + }); | |
55 | + setFileList([ | |
56 | + { | |
57 | + id: value.fileList[0].originFileObj.uid, | |
58 | + name: value.fileList[0].originFileObj.name, | |
59 | + url: res.data, | |
60 | + }, | |
61 | + ]); | |
62 | + return ( | |
63 | + <a href={res.data} target="_blank" rel="noopener noreferrer"> | |
64 | + {value.fileList[0].originFileObj.name} | |
65 | + </a> | |
66 | + ); | |
67 | + } | |
68 | + } | |
69 | + })(); | |
70 | + } | |
71 | + }; | |
72 | + | |
73 | + const props: UploadProps = { | |
74 | + onChange(value) { | |
75 | + handleUploadChange(value); | |
76 | + }, | |
77 | + }; | |
78 | + | |
79 | + const shouldShowUploadButton = | |
80 | + fileList.length !== 1 || fileList[0].url === undefined; | |
81 | + | |
82 | + return ( | |
83 | + <Upload | |
84 | + {...props} | |
85 | + fileList={fileList.filter( | |
86 | + (item) => item.url !== undefined && item.url !== null, | |
87 | + )} | |
88 | + > | |
89 | + {shouldShowUploadButton && ( | |
90 | + <Button icon={<UploadOutlined />}>上传</Button> | |
91 | + )} | |
92 | + </Upload> | |
93 | + ); | |
94 | +}; | |
95 | + | |
96 | +export default App; | |
97 | + | |
98 | +{ | |
99 | + /* {!shouldShowUploadButton && <a href={fileList[0].url}>{fileList[0].name}</a>} */ | |
100 | +} | ... | ... |
src/pages/Instalment/components/upload/uploadApp.tsx
... | ... | @@ -21,13 +21,7 @@ const App: React.FC = ({ uploadFile }) => { |
21 | 21 | <p className="ant-upload-drag-icon"> |
22 | 22 | <InboxOutlined /> |
23 | 23 | </p> |
24 | - <p className="ant-upload-text"> | |
25 | - Click or drag file to this area to upload | |
26 | - </p> | |
27 | - <p className="ant-upload-hint"> | |
28 | - Support for a single or bulk upload. Strictly prohibited from | |
29 | - uploading company data or other banned files. | |
30 | - </p> | |
24 | + <p className="ant-upload-text">点击或者拖动文件到此处</p> | |
31 | 25 | </Dragger> |
32 | 26 | <a |
33 | 27 | href="https://order-erp.oss-cn-qingdao.aliyuncs.com/%E5%88%86%E6%9C%9F%E4%BB%98%E6%AC%BE-%E5%AF%BC%E5%85%A5%E6%A8%A1%E6%9D%BF.xlsx?Expires=2035527699&OSSAccessKeyId=LTAIZCPI7OaWud0m&Signature=npHyEhfRd6LugJ0St8OkvRmLYtQ%3D" | ... | ... |
src/pages/Order/components/OrderDrawer.tsx
... | ... | @@ -3,6 +3,8 @@ import { |
3 | 3 | postCanrdApiUserAddressList, |
4 | 4 | postCanrdApiUserDetail, |
5 | 5 | postCanrdApiUserNowMoneyCheck, |
6 | + postDistrictSelectBelongByName, | |
7 | + postDistrictSelectByLevel, | |
6 | 8 | postKingdeeRepCustomerDetail, |
7 | 9 | postKingdeeRepMaterial, |
8 | 10 | postKingdeeRepMaterialUnit, |
... | ... | @@ -71,6 +73,10 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
71 | 73 | // [], |
72 | 74 | // ); //商品的仓库选项 |
73 | 75 | const [productUnitOptionsList, setProductUnitOptionsList] = useState([]); //商品的单位选项 |
76 | + //省市区 | |
77 | + const [province, setProvince] = useState(''); | |
78 | + const [city, setCity] = useState(''); | |
79 | + const [district, setDistrict] = useState(''); | |
74 | 80 | // const [productCustomerContactOptions, setProductCustomerContactOptions] = |
75 | 81 | // useState([]); //客户的收货人选项 |
76 | 82 | const [form] = Form.useForm<{ |
... | ... | @@ -246,7 +252,7 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
246 | 252 | newAccountOptions.push(uidDetail); |
247 | 253 | } |
248 | 254 | |
249 | - //查询当前手机号允许使用的预存账号 | |
255 | + // 查询当前手机号允许使用的预存账号 | |
250 | 256 | if (phone) { |
251 | 257 | let res = await postPrepaidPhoneAvailableList({ data: { phone: phone } }); |
252 | 258 | if (res && res.result === RESPONSE_CODE.SUCCESS) { |
... | ... | @@ -863,6 +869,8 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
863 | 869 | values.institution = values.institution?.trim(); |
864 | 870 | values.institutionContactName = values.institutionContactName?.trim(); |
865 | 871 | values.customerName = values.customerNameString.trim(); |
872 | + values.customerShippingAddress = | |
873 | + province + city + district + values.customerShippingAddress; | |
866 | 874 | |
867 | 875 | if (typeof values.erpCustomerId !== 'string') { |
868 | 876 | values.erpCustomerId = values.erpCustomerId?.id; |
... | ... | @@ -1015,7 +1023,6 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
1015 | 1023 | name="contactAddress" |
1016 | 1024 | hidden |
1017 | 1025 | ></ProFormText> |
1018 | - | |
1019 | 1026 | <ProFormSelect |
1020 | 1027 | key="customerName" |
1021 | 1028 | label="收货人" |
... | ... | @@ -1176,6 +1183,113 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
1176 | 1183 | placeholder="请输入课题组" |
1177 | 1184 | rules={[{ required: true, message: '课题组必填' }]} |
1178 | 1185 | /> |
1186 | + <div | |
1187 | + style={{ | |
1188 | + display: 'flex', | |
1189 | + justifyContent: 'space-between', | |
1190 | + width: 340, | |
1191 | + }} | |
1192 | + > | |
1193 | + <ProFormSelect | |
1194 | + name="province" | |
1195 | + key="province" | |
1196 | + width={100} | |
1197 | + label="省" | |
1198 | + fieldProps={{ | |
1199 | + labelInValue: true, | |
1200 | + }} | |
1201 | + onChange={(value) => { | |
1202 | + setProvince(value?.value); | |
1203 | + }} | |
1204 | + placeholder="请选择" | |
1205 | + rules={[ | |
1206 | + { | |
1207 | + required: true, | |
1208 | + message: '请选择!', | |
1209 | + }, | |
1210 | + ]} | |
1211 | + request={async () => { | |
1212 | + let province = []; | |
1213 | + let res = await postDistrictSelectByLevel({ data: 1 }); | |
1214 | + if (res) { | |
1215 | + res.data.forEach((item) => { | |
1216 | + province.push({ value: item.district, label: item.district }); | |
1217 | + }); | |
1218 | + } | |
1219 | + return province; | |
1220 | + }} | |
1221 | + /> | |
1222 | + <ProFormSelect | |
1223 | + key={province} | |
1224 | + name="city" | |
1225 | + width={100} | |
1226 | + label="市" | |
1227 | + disabled={province === ''} | |
1228 | + fieldProps={{ | |
1229 | + labelInValue: true, | |
1230 | + }} | |
1231 | + placeholder="请选择" | |
1232 | + onChange={(value) => { | |
1233 | + setCity(value?.value); | |
1234 | + }} | |
1235 | + rules={[ | |
1236 | + { | |
1237 | + required: true, | |
1238 | + message: '请选择!', | |
1239 | + }, | |
1240 | + ]} | |
1241 | + request={async () => { | |
1242 | + if (province !== '') { | |
1243 | + let cityOptions = []; | |
1244 | + let res = await postDistrictSelectBelongByName({ | |
1245 | + data: province, | |
1246 | + }); | |
1247 | + if (res && res.data) { | |
1248 | + cityOptions = res.data.map((item) => ({ | |
1249 | + value: item.district, | |
1250 | + label: item.district, | |
1251 | + })); | |
1252 | + } | |
1253 | + return cityOptions; | |
1254 | + } | |
1255 | + return []; | |
1256 | + }} | |
1257 | + /> | |
1258 | + <ProFormSelect | |
1259 | + key={city ? city.toString() : 'district'} | |
1260 | + name="district" | |
1261 | + width={100} | |
1262 | + label="区" | |
1263 | + onChange={(value) => { | |
1264 | + setDistrict(value?.value); | |
1265 | + }} | |
1266 | + disabled={city === ''} | |
1267 | + fieldProps={{ | |
1268 | + labelInValue: true, | |
1269 | + }} | |
1270 | + placeholder="请选择" | |
1271 | + rules={[ | |
1272 | + { | |
1273 | + required: true, | |
1274 | + message: '请选择!', | |
1275 | + }, | |
1276 | + ]} | |
1277 | + request={async () => { | |
1278 | + if (city !== '') { | |
1279 | + let districtOptions = []; | |
1280 | + let res = await postDistrictSelectBelongByName({ data: city }); | |
1281 | + if (res && res.data) { | |
1282 | + districtOptions = res.data.map((item) => ({ | |
1283 | + value: item.district, | |
1284 | + label: item.district, | |
1285 | + })); | |
1286 | + } | |
1287 | + return districtOptions; | |
1288 | + } | |
1289 | + return []; | |
1290 | + }} | |
1291 | + /> | |
1292 | + </div> | |
1179 | 1293 | <ProFormTextArea |
1180 | 1294 | width="lg" |
1181 | 1295 | key="customerShippingAddress" | ... | ... |
src/pages/OrderReport/index.tsx
1 | 1 | import { |
2 | + getOrderErpOrderZoNingSelectAll, | |
3 | + getOrderErpOrderZoNingSelectUserAll, | |
4 | + postOrderErpOrderZoNingSelectSaleUserByProvince, | |
2 | 5 | postServiceOrderQueryReportFormsInformation, |
3 | 6 | postServiceOrderQuerySalesCode, |
4 | 7 | } from '@/services'; |
... | ... | @@ -63,7 +66,7 @@ const OrderReportPage = () => { |
63 | 66 | setLoading(true); |
64 | 67 | let body = { |
65 | 68 | statisticsMethod: '', |
66 | - salesCode: form.getFieldValue('salesCode'), | |
69 | + salesCode: [null], | |
67 | 70 | productBelongBusiness: form.getFieldValue('productBelongBusiness'), |
68 | 71 | maxAccount: form.getFieldValue('maxAccount'), |
69 | 72 | includeExperimentalEquipment: form.getFieldValue( |
... | ... | @@ -72,6 +75,36 @@ const OrderReportPage = () => { |
72 | 75 | // beginTime:"", |
73 | 76 | // endTime:"" |
74 | 77 | }; |
78 | + // console.log(form.getFieldValue('zoning').value); | |
79 | + | |
80 | + let res = await getOrderErpOrderZoNingSelectUserAll(); | |
81 | + if (res && res.data) { | |
82 | + let safeUserList = []; | |
83 | + res.data.forEach((element) => { | |
84 | + safeUserList.push(element.userName); | |
85 | + }); | |
86 | + body = { ...body, salesCode: safeUserList }; | |
87 | + } | |
88 | + if (form.getFieldValue('salesCode')) { | |
89 | + body = { ...body, salesCode: [form.getFieldValue('salesCode')] }; | |
90 | + } | |
91 | + if (form.getFieldValue('zoning')) { | |
92 | + if ( | |
93 | + form.getFieldValue('zoning').value !== '' || | |
94 | + form.getFieldValue('zoning').value !== null || | |
95 | + form.getFieldValue('zoning').value !== undefined | |
96 | + ) { | |
97 | + let res = await postOrderErpOrderZoNingSelectSaleUserByProvince({ | |
98 | + data: form.getFieldValue('zoning').value, | |
99 | + }); | |
100 | + if (res && res.data) { | |
101 | + body = { ...body, salesCode: res.data }; | |
102 | + } | |
103 | + } | |
104 | + } | |
105 | + | |
106 | + if (form.getFieldValue('zoning')) { | |
107 | + } | |
75 | 108 | |
76 | 109 | // if(form.getFieldValue("dateRange")!==undefined){ |
77 | 110 | // body.beginTime=formatDate(form.getFieldValue("dateRange")[0]), |
... | ... | @@ -162,6 +195,30 @@ const OrderReportPage = () => { |
162 | 195 | initialValue={false} |
163 | 196 | label="包含实验设备事业部汇总统计" |
164 | 197 | /> |
198 | + | |
199 | + <ProFormSelect | |
200 | + key="zoning" | |
201 | + name="zoning" | |
202 | + width="md" | |
203 | + label="所属地区" | |
204 | + fieldProps={{ | |
205 | + labelInValue: true, | |
206 | + }} | |
207 | + placeholder="请选择" | |
208 | + request={async () => { | |
209 | + let zoningOptions = []; | |
210 | + let res = await getOrderErpOrderZoNingSelectAll(); | |
211 | + if (res && res.data) { | |
212 | + console.log(res.data); | |
213 | + | |
214 | + zoningOptions = res.data.map((item) => ({ | |
215 | + value: item.zoning, | |
216 | + label: item.zoning, | |
217 | + })); | |
218 | + } | |
219 | + return zoningOptions; | |
220 | + }} | |
221 | + /> | |
165 | 222 | </QueryFilter> |
166 | 223 | </ProCard> |
167 | 224 | ... | ... |
src/pages/ResearchGroup/components/ImportModal.tsx
... | ... | @@ -6,7 +6,7 @@ import { Button, Modal, Upload, message } from 'antd'; |
6 | 6 | import { RcFile, UploadFile, UploadProps } from 'antd/es/upload'; |
7 | 7 | import { useState } from 'react'; |
8 | 8 | export default ({ onClose }) => { |
9 | - // const [form] = Form.useForm<{ name: string; company: string }>(); | |
9 | + // const [form] = Form.useForm<{ name: string; company: string }>(); | |
10 | 10 | const [messageApi, contextHolder] = message.useMessage(); |
11 | 11 | const [fileList, setFileList] = useState<UploadFile[]>([]); |
12 | 12 | const [uploading, setUploading] = useState(false); |
... | ... | @@ -41,8 +41,8 @@ export default ({ onClose }) => { |
41 | 41 | //originFileObj二进制文件 |
42 | 42 | formData.append('file', file.originFileObj as RcFile); |
43 | 43 | }); |
44 | - // console.log(fileList[0] as RcFile) | |
45 | - // formData.append('file', fileList[0] as RcFile); | |
44 | + console.log(fileList[0] as RcFile); | |
45 | + formData.append('file', fileList[0] as RcFile); | |
46 | 46 | setUploading(true); |
47 | 47 | // You can use any AJAX library you like |
48 | 48 | const res = await postResearchGroupsImport({ | ... | ... |
src/pages/ResearchGroup/index.css
0 → 100644
src/pages/ZoNing/components/constant.tsx
1 | 1 | import { List } from 'lodash'; |
2 | 2 | |
3 | 3 | export type zoningItem = { |
4 | - id: number; //id | |
4 | + id?: number; //id | |
5 | 5 | zoning: string; //区域名称 |
6 | 6 | orderProvinceVoList: List<provinceItem>; //所包含的省份列表 |
7 | 7 | orderUserVoList: List<userItem>; //所包含的销售列表 |
8 | 8 | }; |
9 | 9 | |
10 | 10 | export type zoningShowItem = { |
11 | - id: number; //id | |
11 | + id?: number; //id | |
12 | 12 | zoning: string; //区域名称 |
13 | 13 | orderProvinceShowList: string; //所包含的省份列表 |
14 | 14 | orderUserShowList: string; //所包含的销售列表 |
15 | + orderUserNumberShowList: number[]; //销售对应的uId | |
15 | 16 | }; |
16 | 17 | |
17 | 18 | export type provinceItem = { |
18 | - pId: number; | |
19 | + pId?: number; | |
19 | 20 | province: string; |
20 | 21 | }; |
21 | 22 | |
22 | 23 | export type userItem = { |
23 | 24 | uId: number; |
24 | - userName: string; | |
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 | + 澳门特别行政区: '澳门特别行政区', | |
25 | 64 | }; | ... | ... |
src/pages/ZoNing/components/modal.tsx
1 | -import { getOrderErpOrderZoNingSelectProvinceAll } from '@/services'; | |
1 | +import { | |
2 | + getOrderErpOrderZoNingSelectUserAll, | |
3 | + postOrderErpOrderZoNingSaveOrUpdate, | |
4 | +} from '@/services'; | |
2 | 5 | import { PlusOutlined } from '@ant-design/icons'; |
3 | 6 | import { |
4 | 7 | ModalForm, |
... | ... | @@ -7,8 +10,7 @@ import { |
7 | 10 | ProFormText, |
8 | 11 | } from '@ant-design/pro-components'; |
9 | 12 | import { Button, Form, message } from 'antd'; |
10 | -import { zoningItem } from './constant'; | |
11 | - | |
13 | +import { provinceEnum, zoningItem } from './constant'; | |
12 | 14 | const waitTime = (time: number = 100) => { |
13 | 15 | return new Promise((resolve) => { |
14 | 16 | setTimeout(() => { |
... | ... | @@ -17,71 +19,126 @@ const waitTime = (time: number = 100) => { |
17 | 19 | }); |
18 | 20 | }; |
19 | 21 | |
20 | -export default () => { | |
22 | +export default ({ toReload, option, needEditBody }) => { | |
21 | 23 | const [form] = Form.useForm<zoningItem>(); |
24 | + | |
22 | 25 | return ( |
23 | 26 | <ModalForm<{ |
24 | - name: string; | |
25 | - company: string; | |
27 | + zoning: string; | |
28 | + province: string[]; | |
29 | + user: number[]; | |
26 | 30 | }> |
27 | - title="新增区域" | |
31 | + title={option} | |
28 | 32 | trigger={ |
29 | - <Button type="primary"> | |
30 | - <PlusOutlined /> | |
31 | - 新增区域 | |
33 | + <Button type="primary" key={option.id}> | |
34 | + {option !== '编辑' && <PlusOutlined />} | |
35 | + {option} | |
32 | 36 | </Button> |
33 | 37 | } |
34 | 38 | form={form} |
35 | 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 | + }} | |
36 | 49 | modalProps={{ |
37 | 50 | destroyOnClose: true, |
38 | - onCancel: () => console.log('run'), | |
39 | 51 | }} |
40 | - submitTimeout={2000} | |
52 | + submitTimeout={500} | |
41 | 53 | onFinish={async (values) => { |
42 | - await waitTime(2000); | |
43 | - console.log(values.name); | |
44 | - message.success('提交成功'); | |
45 | - return true; | |
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; | |
46 | 78 | }} |
47 | 79 | > |
48 | 80 | <ProForm.Group> |
49 | 81 | <ProFormText |
50 | - width="md" | |
82 | + width="lg" | |
51 | 83 | name="zoning" |
52 | 84 | label="区域名称" |
53 | 85 | placeholder="请输入" |
86 | + rules={[{ required: true, message: '此项为必填项' }]} | |
54 | 87 | /> |
55 | 88 | </ProForm.Group> |
56 | 89 | <ProForm.Group> |
57 | 90 | <ProFormSelect |
91 | + name="user" | |
92 | + width="lg" | |
93 | + label="负责销售" | |
58 | 94 | request={async () => { |
59 | - const provinceList = | |
60 | - await getOrderErpOrderZoNingSelectProvinceAll(); | |
61 | - if (provinceList) { | |
62 | - return provinceList.data.map((item) => ({ | |
63 | - value: { pId: item.pId, province: item.province }, | |
64 | - label: item.province, | |
65 | - })); | |
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; | |
66 | 109 | } |
67 | 110 | return []; |
68 | 111 | }} |
69 | - width="xs" | |
70 | - name="orderProvinceVoList" | |
71 | - label="合同约定生效方式" | |
112 | + fieldProps={{ | |
113 | + mode: 'multiple', | |
114 | + }} | |
115 | + placeholder="请选择" | |
116 | + rules={[ | |
117 | + { | |
118 | + required: true, | |
119 | + message: '请选择!', | |
120 | + type: 'array', | |
121 | + }, | |
122 | + ]} | |
72 | 123 | /> |
73 | 124 | </ProForm.Group> |
74 | 125 | <ProForm.Group> |
75 | 126 | <ProFormSelect |
76 | - width="xs" | |
77 | - options={[ | |
127 | + name="province" | |
128 | + width="lg" | |
129 | + label="管辖地区" | |
130 | + valueEnum={provinceEnum} | |
131 | + fieldProps={{ | |
132 | + mode: 'multiple', | |
133 | + }} | |
134 | + placeholder="请选择" | |
135 | + rules={[ | |
78 | 136 | { |
79 | - value: 'time', | |
80 | - label: '履行完终止', | |
137 | + required: true, | |
138 | + message: '请选择!', | |
139 | + type: 'array', | |
81 | 140 | }, |
82 | 141 | ]} |
83 | - name="orderUserVoList" | |
84 | - label="合同约定失效效方式" | |
85 | 142 | /> |
86 | 143 | </ProForm.Group> |
87 | 144 | </ModalForm> | ... | ... |
src/pages/ZoNing/components/table.tsx
1 | -import type { ProColumns } from '@ant-design/pro-components'; | |
2 | 1 | import { |
3 | - EditableProTable, | |
4 | - ProCard, | |
5 | - ProFormField, | |
6 | -} from '@ant-design/pro-components'; | |
7 | -import React, { useState } from 'react'; | |
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'; | |
8 | 10 | import { zoningItem, zoningShowItem } from './constant'; |
9 | 11 | import Modal from './modal'; |
10 | 12 | |
... | ... | @@ -16,68 +18,81 @@ const waitTime = (time: number = 100) => { |
16 | 18 | }); |
17 | 19 | }; |
18 | 20 | |
19 | -const defaultData: zoningItem[] = [ | |
20 | - { | |
21 | - id: 1, | |
22 | - zoning: '华南地区', | |
23 | - orderProvinceVoList: [ | |
24 | - { | |
25 | - pId: 1, | |
26 | - province: '广东省', | |
27 | - }, | |
28 | - { | |
29 | - pId: 2, | |
30 | - province: '四川省', | |
31 | - }, | |
32 | - { | |
33 | - pId: 3, | |
34 | - province: '北京市', | |
35 | - }, | |
36 | - { | |
37 | - pId: 4, | |
38 | - province: '上海市', | |
39 | - }, | |
40 | - ], | |
41 | - orderUserVoList: [ | |
42 | - { | |
43 | - uId: 1, | |
44 | - userName: '李华', | |
45 | - }, | |
46 | - ], | |
47 | - }, | |
48 | -]; | |
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 | + }); | |
49 | 33 | |
50 | -const defaultShowData: zoningShowItem[] = defaultData.map((item) => { | |
51 | - let orderProvinceShowList = ''; | |
52 | - let orderUserShowList = ''; | |
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 | + }); | |
53 | 41 | |
54 | - item.orderProvinceVoList.forEach((element, index) => { | |
55 | - orderProvinceShowList += element.province; | |
56 | - if (index < item.orderProvinceVoList.length - 1) { | |
57 | - orderProvinceShowList += '、'; | |
42 | + if (orderUserShowList === '') { | |
43 | + orderUserShowList = '全选'; | |
44 | + orderUserNumberShowList.push(0); | |
58 | 45 | } |
59 | - }); | |
60 | 46 | |
61 | - item.orderUserVoList.forEach((event, index) => { | |
62 | - orderUserShowList += event.userName; | |
63 | - if (index < item.orderUserVoList.length - 1) { | |
64 | - orderUserShowList += '、'; | |
65 | - } | |
47 | + return { | |
48 | + id: item.id, | |
49 | + zoning: item.zoning, | |
50 | + orderProvinceShowList, | |
51 | + orderUserShowList, | |
52 | + orderUserNumberShowList, | |
53 | + }; | |
66 | 54 | }); |
67 | - | |
68 | - return { | |
69 | - id: item.id, | |
70 | - zoning: item.zoning, | |
71 | - orderProvinceShowList, | |
72 | - orderUserShowList, | |
73 | - }; | |
74 | -}); | |
55 | + return showArray; | |
56 | +} | |
75 | 57 | |
76 | 58 | export default () => { |
77 | 59 | const [editableKeys, setEditableRowKeys] = useState<React.Key[]>([]); |
78 | 60 | const [dataSource, setDataSource] = useState<readonly zoningItem[]>([]); |
79 | 61 | const [position] = useState<'top' | 'bottom' | 'hidden'>('hidden'); |
80 | 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 | + | |
81 | 96 | const columns: ProColumns<zoningItem>[] = [ |
82 | 97 | { |
83 | 98 | title: '区域名称', |
... | ... | @@ -101,74 +116,72 @@ export default () => { |
101 | 116 | title: '操作', |
102 | 117 | valueType: 'option', |
103 | 118 | width: 200, |
104 | - render: (text, record, _, action) => [ | |
105 | - <a | |
106 | - key="editable" | |
107 | - onClick={() => { | |
108 | - action?.startEditable?.(record.id); | |
109 | - }} | |
110 | - > | |
111 | - 编辑 | |
112 | - </a>, | |
113 | - <a | |
114 | - key="delete" | |
115 | - onClick={() => { | |
116 | - setDataSource(dataSource.filter((item) => item.id !== record.id)); | |
117 | - }} | |
118 | - > | |
119 | - 删除 | |
120 | - </a>, | |
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 | + </>, | |
121 | 140 | ], |
122 | 141 | }, |
123 | 142 | ]; |
124 | 143 | |
125 | 144 | return ( |
126 | - <> | |
127 | - <EditableProTable<zoningItem> | |
128 | - rowKey="id" | |
129 | - headerTitle={<Modal></Modal>} | |
130 | - maxLength={5} | |
131 | - scroll={{ | |
132 | - x: 960, | |
133 | - }} | |
134 | - recordCreatorProps={ | |
135 | - position !== 'hidden' | |
136 | - ? { | |
137 | - position: position as 'top', | |
138 | - record: () => ({ id: (Math.random() * 1000000).toFixed(0) }), | |
139 | - } | |
140 | - : false | |
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 || [] }; | |
141 | 172 | } |
142 | - loading={false} | |
143 | - columns={columns} | |
144 | - request={async () => ({ | |
145 | - data: defaultShowData, | |
146 | - })} | |
147 | - value={dataSource} | |
148 | - onChange={setDataSource} | |
149 | - editable={{ | |
150 | - type: 'multiple', | |
151 | - editableKeys, | |
152 | - onSave: async (rowKey, data, row) => { | |
153 | - console.log(rowKey, data, row); | |
154 | - await waitTime(2000); | |
155 | - }, | |
156 | - onChange: setEditableRowKeys, | |
157 | - }} | |
158 | - /> | |
159 | - <ProCard title="表格数据" headerBordered collapsible defaultCollapsed> | |
160 | - <ProFormField | |
161 | - ignoreFormItem | |
162 | - fieldProps={{ | |
163 | - style: { | |
164 | - width: '100%', | |
165 | - }, | |
166 | - }} | |
167 | - mode="read" | |
168 | - valueType="jsonCode" | |
169 | - text={JSON.stringify(dataSource)} | |
170 | - /> | |
171 | - </ProCard> | |
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 | + /> | |
173 | 186 | ); |
174 | 187 | }; | ... | ... |
src/pages/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/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/services/definition.ts
... | ... | @@ -914,6 +914,13 @@ export interface DictionaryVO { |
914 | 914 | sort?: number; |
915 | 915 | } |
916 | 916 | |
917 | +export interface DistrictDo { | |
918 | + /** @format int32 */ | |
919 | + level?: number; | |
920 | + /** @format int32 */ | |
921 | + pid?: number; | |
922 | +} | |
923 | + | |
917 | 924 | export interface Entry { |
918 | 925 | bankAccount?: string; |
919 | 926 | bankName?: string; |
... | ... | @@ -1061,6 +1068,10 @@ export interface ItemSaItem { |
1061 | 1068 | |
1062 | 1069 | export interface MainOrderqueryRequest { |
1063 | 1070 | afterInvoicingStatusIsNull?: boolean; |
1071 | + /** @format date-time */ | |
1072 | + invoicingTimeGe?: string; | |
1073 | + /** @format date-time */ | |
1074 | + invoicingTimeLe?: string; | |
1064 | 1075 | orderStatusNotIn?: Array<string>; |
1065 | 1076 | /** @format int32 */ |
1066 | 1077 | pageNumber?: number; |
... | ... | @@ -1855,7 +1866,7 @@ export interface QueryReportFormsDto { |
1855 | 1866 | * @description |
1856 | 1867 | * 销售代表 |
1857 | 1868 | */ |
1858 | - salesCode?: string; | |
1869 | + salesCode?: Array<string>; | |
1859 | 1870 | /** |
1860 | 1871 | * @description |
1861 | 1872 | * 统计方式 |
... | ... | @@ -1867,6 +1878,7 @@ export interface ReissueInvoiceDto { |
1867 | 1878 | /** @format int64 */ |
1868 | 1879 | invoiceId?: number; |
1869 | 1880 | notes?: string; |
1881 | + purchaser?: string; | |
1870 | 1882 | } |
1871 | 1883 | |
1872 | 1884 | export interface ResearchGroupAccountAddRequest { | ... | ... |
src/services/request.ts
... | ... | @@ -43,6 +43,7 @@ import type { |
43 | 43 | CustomerSaveReq, |
44 | 44 | DictionaryQueryVO, |
45 | 45 | DictionaryVO, |
46 | + DistrictDo, | |
46 | 47 | Dto, |
47 | 48 | InventoryMaterialStockReq, |
48 | 49 | InvoiceDto, |
... | ... | @@ -1765,6 +1766,338 @@ export const postCommonAudit = /* #__PURE__ */ (() => { |
1765 | 1766 | return request; |
1766 | 1767 | })(); |
1767 | 1768 | |
1769 | +/** @description response type for getDistrictSelectAll */ | |
1770 | +export interface GetDistrictSelectAllResponse { | |
1771 | + /** | |
1772 | + * @description | |
1773 | + * OK | |
1774 | + */ | |
1775 | + 200: ServerResult; | |
1776 | + /** | |
1777 | + * @description | |
1778 | + * Unauthorized | |
1779 | + */ | |
1780 | + 401: any; | |
1781 | + /** | |
1782 | + * @description | |
1783 | + * Forbidden | |
1784 | + */ | |
1785 | + 403: any; | |
1786 | + /** | |
1787 | + * @description | |
1788 | + * Not Found | |
1789 | + */ | |
1790 | + 404: any; | |
1791 | +} | |
1792 | + | |
1793 | +export type GetDistrictSelectAllResponseSuccess = | |
1794 | + GetDistrictSelectAllResponse[200]; | |
1795 | +/** | |
1796 | + * @description | |
1797 | + * 查询全部 | |
1798 | + * @tags order-district-controller | |
1799 | + * @produces * | |
1800 | + */ | |
1801 | +export const getDistrictSelectAll = /* #__PURE__ */ (() => { | |
1802 | + const method = 'get'; | |
1803 | + const url = '/district/selectAll'; | |
1804 | + function request(): Promise<GetDistrictSelectAllResponseSuccess> { | |
1805 | + return requester(request.url, { | |
1806 | + method: request.method, | |
1807 | + }) as unknown as Promise<GetDistrictSelectAllResponseSuccess>; | |
1808 | + } | |
1809 | + | |
1810 | + /** http method */ | |
1811 | + request.method = method; | |
1812 | + /** request url */ | |
1813 | + request.url = url; | |
1814 | + return request; | |
1815 | +})(); | |
1816 | + | |
1817 | +/** @description request parameter type for postDistrictSelectBelong */ | |
1818 | +export interface PostDistrictSelectBelongOption { | |
1819 | + /** | |
1820 | + * @description | |
1821 | + * pid | |
1822 | + */ | |
1823 | + body: { | |
1824 | + /** | |
1825 | + @description | |
1826 | + pid */ | |
1827 | + pid: number; | |
1828 | + }; | |
1829 | +} | |
1830 | + | |
1831 | +/** @description response type for postDistrictSelectBelong */ | |
1832 | +export interface PostDistrictSelectBelongResponse { | |
1833 | + /** | |
1834 | + * @description | |
1835 | + * OK | |
1836 | + */ | |
1837 | + 200: ServerResult; | |
1838 | + /** | |
1839 | + * @description | |
1840 | + * Created | |
1841 | + */ | |
1842 | + 201: any; | |
1843 | + /** | |
1844 | + * @description | |
1845 | + * Unauthorized | |
1846 | + */ | |
1847 | + 401: any; | |
1848 | + /** | |
1849 | + * @description | |
1850 | + * Forbidden | |
1851 | + */ | |
1852 | + 403: any; | |
1853 | + /** | |
1854 | + * @description | |
1855 | + * Not Found | |
1856 | + */ | |
1857 | + 404: any; | |
1858 | +} | |
1859 | + | |
1860 | +export type PostDistrictSelectBelongResponseSuccess = | |
1861 | + PostDistrictSelectBelongResponse[200]; | |
1862 | +/** | |
1863 | + * @description | |
1864 | + * 根据父级进行筛选 | |
1865 | + * @tags order-district-controller | |
1866 | + * @produces * | |
1867 | + * @consumes application/json | |
1868 | + */ | |
1869 | +export const postDistrictSelectBelong = /* #__PURE__ */ (() => { | |
1870 | + const method = 'post'; | |
1871 | + const url = '/district/selectBelong'; | |
1872 | + function request( | |
1873 | + option: PostDistrictSelectBelongOption, | |
1874 | + ): Promise<PostDistrictSelectBelongResponseSuccess> { | |
1875 | + return requester(request.url, { | |
1876 | + method: request.method, | |
1877 | + ...option, | |
1878 | + }) as unknown as Promise<PostDistrictSelectBelongResponseSuccess>; | |
1879 | + } | |
1880 | + | |
1881 | + /** http method */ | |
1882 | + request.method = method; | |
1883 | + /** request url */ | |
1884 | + request.url = url; | |
1885 | + return request; | |
1886 | +})(); | |
1887 | + | |
1888 | +/** @description request parameter type for postDistrictSelectBelongAndLevel */ | |
1889 | +export interface PostDistrictSelectBelongAndLevelOption { | |
1890 | + /** | |
1891 | + * @description | |
1892 | + * districtDo | |
1893 | + */ | |
1894 | + body: { | |
1895 | + /** | |
1896 | + @description | |
1897 | + districtDo */ | |
1898 | + districtDo: DistrictDo; | |
1899 | + }; | |
1900 | +} | |
1901 | + | |
1902 | +/** @description response type for postDistrictSelectBelongAndLevel */ | |
1903 | +export interface PostDistrictSelectBelongAndLevelResponse { | |
1904 | + /** | |
1905 | + * @description | |
1906 | + * OK | |
1907 | + */ | |
1908 | + 200: ServerResult; | |
1909 | + /** | |
1910 | + * @description | |
1911 | + * Created | |
1912 | + */ | |
1913 | + 201: any; | |
1914 | + /** | |
1915 | + * @description | |
1916 | + * Unauthorized | |
1917 | + */ | |
1918 | + 401: any; | |
1919 | + /** | |
1920 | + * @description | |
1921 | + * Forbidden | |
1922 | + */ | |
1923 | + 403: any; | |
1924 | + /** | |
1925 | + * @description | |
1926 | + * Not Found | |
1927 | + */ | |
1928 | + 404: any; | |
1929 | +} | |
1930 | + | |
1931 | +export type PostDistrictSelectBelongAndLevelResponseSuccess = | |
1932 | + PostDistrictSelectBelongAndLevelResponse[200]; | |
1933 | +/** | |
1934 | + * @description | |
1935 | + * 根据父级和等级进行筛选 | |
1936 | + * @tags order-district-controller | |
1937 | + * @produces * | |
1938 | + * @consumes application/json | |
1939 | + */ | |
1940 | +export const postDistrictSelectBelongAndLevel = /* #__PURE__ */ (() => { | |
1941 | + const method = 'post'; | |
1942 | + const url = '/district/selectBelongAndLevel'; | |
1943 | + function request( | |
1944 | + option: PostDistrictSelectBelongAndLevelOption, | |
1945 | + ): Promise<PostDistrictSelectBelongAndLevelResponseSuccess> { | |
1946 | + return requester(request.url, { | |
1947 | + method: request.method, | |
1948 | + ...option, | |
1949 | + }) as unknown as Promise<PostDistrictSelectBelongAndLevelResponseSuccess>; | |
1950 | + } | |
1951 | + | |
1952 | + /** http method */ | |
1953 | + request.method = method; | |
1954 | + /** request url */ | |
1955 | + request.url = url; | |
1956 | + return request; | |
1957 | +})(); | |
1958 | + | |
1959 | +/** @description request parameter type for postDistrictSelectBelongByName */ | |
1960 | +export interface PostDistrictSelectBelongByNameOption { | |
1961 | + /** | |
1962 | + * @description | |
1963 | + * district | |
1964 | + */ | |
1965 | + body: { | |
1966 | + /** | |
1967 | + @description | |
1968 | + district */ | |
1969 | + district: string; | |
1970 | + }; | |
1971 | +} | |
1972 | + | |
1973 | +/** @description response type for postDistrictSelectBelongByName */ | |
1974 | +export interface PostDistrictSelectBelongByNameResponse { | |
1975 | + /** | |
1976 | + * @description | |
1977 | + * OK | |
1978 | + */ | |
1979 | + 200: ServerResult; | |
1980 | + /** | |
1981 | + * @description | |
1982 | + * Created | |
1983 | + */ | |
1984 | + 201: any; | |
1985 | + /** | |
1986 | + * @description | |
1987 | + * Unauthorized | |
1988 | + */ | |
1989 | + 401: any; | |
1990 | + /** | |
1991 | + * @description | |
1992 | + * Forbidden | |
1993 | + */ | |
1994 | + 403: any; | |
1995 | + /** | |
1996 | + * @description | |
1997 | + * Not Found | |
1998 | + */ | |
1999 | + 404: any; | |
2000 | +} | |
2001 | + | |
2002 | +export type PostDistrictSelectBelongByNameResponseSuccess = | |
2003 | + PostDistrictSelectBelongByNameResponse[200]; | |
2004 | +/** | |
2005 | + * @description | |
2006 | + * 根据父级名字进行筛选 | |
2007 | + * @tags order-district-controller | |
2008 | + * @produces * | |
2009 | + * @consumes application/json | |
2010 | + */ | |
2011 | +export const postDistrictSelectBelongByName = /* #__PURE__ */ (() => { | |
2012 | + const method = 'post'; | |
2013 | + const url = '/district/selectBelongByName'; | |
2014 | + function request( | |
2015 | + option: PostDistrictSelectBelongByNameOption, | |
2016 | + ): Promise<PostDistrictSelectBelongByNameResponseSuccess> { | |
2017 | + return requester(request.url, { | |
2018 | + method: request.method, | |
2019 | + ...option, | |
2020 | + }) as unknown as Promise<PostDistrictSelectBelongByNameResponseSuccess>; | |
2021 | + } | |
2022 | + | |
2023 | + /** http method */ | |
2024 | + request.method = method; | |
2025 | + /** request url */ | |
2026 | + request.url = url; | |
2027 | + return request; | |
2028 | +})(); | |
2029 | + | |
2030 | +/** @description request parameter type for postDistrictSelectByLevel */ | |
2031 | +export interface PostDistrictSelectByLevelOption { | |
2032 | + /** | |
2033 | + * @description | |
2034 | + * level | |
2035 | + */ | |
2036 | + body: { | |
2037 | + /** | |
2038 | + @description | |
2039 | + level */ | |
2040 | + level: number; | |
2041 | + }; | |
2042 | +} | |
2043 | + | |
2044 | +/** @description response type for postDistrictSelectByLevel */ | |
2045 | +export interface PostDistrictSelectByLevelResponse { | |
2046 | + /** | |
2047 | + * @description | |
2048 | + * OK | |
2049 | + */ | |
2050 | + 200: ServerResult; | |
2051 | + /** | |
2052 | + * @description | |
2053 | + * Created | |
2054 | + */ | |
2055 | + 201: any; | |
2056 | + /** | |
2057 | + * @description | |
2058 | + * Unauthorized | |
2059 | + */ | |
2060 | + 401: any; | |
2061 | + /** | |
2062 | + * @description | |
2063 | + * Forbidden | |
2064 | + */ | |
2065 | + 403: any; | |
2066 | + /** | |
2067 | + * @description | |
2068 | + * Not Found | |
2069 | + */ | |
2070 | + 404: any; | |
2071 | +} | |
2072 | + | |
2073 | +export type PostDistrictSelectByLevelResponseSuccess = | |
2074 | + PostDistrictSelectByLevelResponse[200]; | |
2075 | +/** | |
2076 | + * @description | |
2077 | + * 根据等级查询 | |
2078 | + * @tags order-district-controller | |
2079 | + * @produces * | |
2080 | + * @consumes application/json | |
2081 | + */ | |
2082 | +export const postDistrictSelectByLevel = /* #__PURE__ */ (() => { | |
2083 | + const method = 'post'; | |
2084 | + const url = '/district/selectByLevel'; | |
2085 | + function request( | |
2086 | + option: PostDistrictSelectByLevelOption, | |
2087 | + ): Promise<PostDistrictSelectByLevelResponseSuccess> { | |
2088 | + return requester(request.url, { | |
2089 | + method: request.method, | |
2090 | + ...option, | |
2091 | + }) as unknown as Promise<PostDistrictSelectByLevelResponseSuccess>; | |
2092 | + } | |
2093 | + | |
2094 | + /** http method */ | |
2095 | + request.method = method; | |
2096 | + /** request url */ | |
2097 | + request.url = url; | |
2098 | + return request; | |
2099 | +})(); | |
2100 | + | |
1768 | 2101 | /** @description response type for getError */ |
1769 | 2102 | export interface GetErrorResponse { |
1770 | 2103 | /** |
... | ... | @@ -7248,6 +7581,78 @@ export const getOrderErpOrderZoNingSelectProvinceAll = /* #__PURE__ */ (() => { |
7248 | 7581 | return request; |
7249 | 7582 | })(); |
7250 | 7583 | |
7584 | +/** @description request parameter type for postOrderErpOrderZoNingSelectSaleUserByProvince */ | |
7585 | +export interface PostOrderErpOrderZoNingSelectSaleUserByProvinceOption { | |
7586 | + /** | |
7587 | + * @description | |
7588 | + * zoning | |
7589 | + */ | |
7590 | + body: { | |
7591 | + /** | |
7592 | + @description | |
7593 | + zoning */ | |
7594 | + zoning: string; | |
7595 | + }; | |
7596 | +} | |
7597 | + | |
7598 | +/** @description response type for postOrderErpOrderZoNingSelectSaleUserByProvince */ | |
7599 | +export interface PostOrderErpOrderZoNingSelectSaleUserByProvinceResponse { | |
7600 | + /** | |
7601 | + * @description | |
7602 | + * OK | |
7603 | + */ | |
7604 | + 200: ServerResult; | |
7605 | + /** | |
7606 | + * @description | |
7607 | + * Created | |
7608 | + */ | |
7609 | + 201: any; | |
7610 | + /** | |
7611 | + * @description | |
7612 | + * Unauthorized | |
7613 | + */ | |
7614 | + 401: any; | |
7615 | + /** | |
7616 | + * @description | |
7617 | + * Forbidden | |
7618 | + */ | |
7619 | + 403: any; | |
7620 | + /** | |
7621 | + * @description | |
7622 | + * Not Found | |
7623 | + */ | |
7624 | + 404: any; | |
7625 | +} | |
7626 | + | |
7627 | +export type PostOrderErpOrderZoNingSelectSaleUserByProvinceResponseSuccess = | |
7628 | + PostOrderErpOrderZoNingSelectSaleUserByProvinceResponse[200]; | |
7629 | +/** | |
7630 | + * @description | |
7631 | + * 查询出这个大区所包含的销售 | |
7632 | + * @tags order-zo-ning-controller | |
7633 | + * @produces * | |
7634 | + * @consumes application/json | |
7635 | + */ | |
7636 | +export const postOrderErpOrderZoNingSelectSaleUserByProvince = | |
7637 | + /* #__PURE__ */ (() => { | |
7638 | + const method = 'post'; | |
7639 | + const url = '/order/erp/orderZoNing/selectSaleUserByProvince'; | |
7640 | + function request( | |
7641 | + option: PostOrderErpOrderZoNingSelectSaleUserByProvinceOption, | |
7642 | + ): Promise<PostOrderErpOrderZoNingSelectSaleUserByProvinceResponseSuccess> { | |
7643 | + return requester(request.url, { | |
7644 | + method: request.method, | |
7645 | + ...option, | |
7646 | + }) as unknown as Promise<PostOrderErpOrderZoNingSelectSaleUserByProvinceResponseSuccess>; | |
7647 | + } | |
7648 | + | |
7649 | + /** http method */ | |
7650 | + request.method = method; | |
7651 | + /** request url */ | |
7652 | + request.url = url; | |
7653 | + return request; | |
7654 | + })(); | |
7655 | + | |
7251 | 7656 | /** @description response type for getOrderErpOrderZoNingSelectUserAll */ |
7252 | 7657 | export interface GetOrderErpOrderZoNingSelectUserAllResponse { |
7253 | 7658 | /** | ... | ... |
tailwind.config.js
1 | -module.exports = { | |
2 | - content: [ | |
3 | - './src/pages/**/*.tsx', | |
4 | - './src/components/**/*.tsx', | |
5 | - './src/layouts/**/*.tsx', | |
6 | - ], | |
7 | - corePlugins: { | |
8 | - preflight: false, | |
9 | - }, | |
1 | +export const content = [ | |
2 | + './src/pages/**/*.tsx', | |
3 | + './src/components/**/*.tsx', | |
4 | + './src/layouts/**/*.tsx', | |
5 | +]; | |
6 | +export const corePlugins = { | |
7 | + preflight: false, | |
10 | 8 | }; | ... | ... |