Commit 325a0b92f06645791df8551013ef8de58eae2345
Merge remote-tracking branch 'origin/master'
Showing
39 changed files
with
9124 additions
and
442 deletions
.umirc.ts
... | ... | @@ -66,6 +66,20 @@ export default defineConfig({ |
66 | 66 | access: 'canReadAdminAndFinanceAndSales', |
67 | 67 | }, |
68 | 68 | { |
69 | + name: '课题组管理', | |
70 | + path: '/researchGroup', | |
71 | + component: './ResearchGroup', | |
72 | + icon: 'AccountBookOutlined', | |
73 | + access: 'canReadAdminAndSales', | |
74 | + }, | |
75 | + { | |
76 | + name: '分期账单', | |
77 | + path: '/instalment', | |
78 | + component: './Instalment', | |
79 | + icon: 'BookOutlined', | |
80 | + access: 'canReadLinda', | |
81 | + }, | |
82 | + { | |
69 | 83 | name: '打印', |
70 | 84 | path: '/print', |
71 | 85 | component: './OrderPrint', | ... | ... |
src/access.ts
1 | 1 | export default (initialState: API.UserInfo) => { |
2 | 2 | // 在这里按照初始化数据定义项目中的权限,统一管理 |
3 | 3 | // 参考文档 https://umijs.org/docs/max/access |
4 | - const { roleSmallVO } = initialState; | |
4 | + const { roleSmallVO, username } = initialState; | |
5 | 5 | const canReadAdmin = roleSmallVO?.code === 'admin'; |
6 | 6 | const canReadProcure = roleSmallVO?.code === 'procure'; |
7 | 7 | const canReadFinance = roleSmallVO?.code === 'finance'; |
... | ... | @@ -11,9 +11,11 @@ export default (initialState: API.UserInfo) => { |
11 | 11 | return { |
12 | 12 | canReadAdmin: canReadAdmin, |
13 | 13 | canReadProcure: canReadProcure, |
14 | + canReadLinda: username === 'Linda' || username === '吴量', | |
14 | 15 | canReadAdminAndFinance: canReadFinance || canReadAdmin, |
15 | 16 | canReadSales: canReadSales, |
16 | 17 | canReadAdminAndFinanceAndSales: |
17 | 18 | canReadFinance || canReadAdmin || canReadSales, |
19 | + canReadAdminAndSales: canReadAdmin || canReadSales, | |
18 | 20 | }; |
19 | 21 | }; | ... | ... |
src/pages/Instalment/components/comfire/comfire.tsx
0 → 100644
1 | +import { ModalForm } from '@ant-design/pro-components'; | |
2 | +import { Form, message } from 'antd'; | |
3 | +import { useState } from 'react'; | |
4 | + | |
5 | +const waitTime = (time: number = 100) => { | |
6 | + return new Promise((resolve) => { | |
7 | + setTimeout(() => { | |
8 | + resolve(true); | |
9 | + }, time); | |
10 | + }); | |
11 | +}; | |
12 | + | |
13 | +export default ({ currtDid, sureDelete }) => { | |
14 | + const [form] = Form.useForm<{ name: string; company: string }>(); | |
15 | + const [ids, setIds] = useState([]); | |
16 | + | |
17 | + function getIds() { | |
18 | + setIds([]); | |
19 | + setIds(currtDid); | |
20 | + } | |
21 | + return ( | |
22 | + <ModalForm<{ | |
23 | + name: string; | |
24 | + company: string; | |
25 | + }> | |
26 | + trigger={ | |
27 | + <a | |
28 | + onClick={() => { | |
29 | + getIds(); | |
30 | + }} | |
31 | + > | |
32 | + 删除 | |
33 | + </a> | |
34 | + } | |
35 | + form={form} | |
36 | + autoFocusFirstInput | |
37 | + width={190} | |
38 | + modalProps={{ | |
39 | + destroyOnClose: true, | |
40 | + }} | |
41 | + onFinish={async () => { | |
42 | + await waitTime(100); | |
43 | + sureDelete([ids]); | |
44 | + message.success('提交成功'); | |
45 | + return true; | |
46 | + }} | |
47 | + > | |
48 | + <br /> | |
49 | + <h2>确定删除吗</h2> | |
50 | + </ModalForm> | |
51 | + ); | |
52 | +}; | ... | ... |
src/pages/Instalment/components/detail/detail.tsx
0 → 100644
1 | +import { | |
2 | + postOrderErpOrderStagesAdd, | |
3 | + postOrderErpOrderStagesPayWaySaveOrUpdate, | |
4 | + postOrderErpOrderStagesSearch, | |
5 | + postOrderErpOrderStagesUpload, | |
6 | +} from '@/services'; | |
7 | +import { PlusOutlined } from '@ant-design/icons'; | |
8 | +import { | |
9 | + ModalForm, | |
10 | + ProCard, | |
11 | + ProForm, | |
12 | + ProFormDatePicker, | |
13 | + ProFormText, | |
14 | + ProFormTextArea, | |
15 | + ProFormUploadButton, | |
16 | +} from '@ant-design/pro-components'; | |
17 | +import { Button, Form, message } from 'antd'; | |
18 | +import { RcFile } from 'antd/es/upload'; | |
19 | +import { useEffect, useState } from 'react'; | |
20 | +import PayWayDetail from '../payWayDetail/payWayDetail'; | |
21 | +import ProductDetail from '../productDetail/productDetail'; | |
22 | + | |
23 | +const waitTime = (time: number = 100) => { | |
24 | + return new Promise((resolve) => { | |
25 | + setTimeout(() => { | |
26 | + resolve(true); | |
27 | + }, time); | |
28 | + }); | |
29 | +}; | |
30 | + | |
31 | +export default ({ toReload }) => { | |
32 | + const [form] = Form.useForm<{ name: string; company: string }>(); | |
33 | + const [contextBody, setContextBody] = useState<OrderStagesWithListItem>({ | |
34 | + id: undefined, | |
35 | + contract: undefined, | |
36 | + dateRange: undefined, | |
37 | + terminal: undefined, | |
38 | + orderStagesDeviceVoList: [], | |
39 | + totalPrice: undefined, | |
40 | + payWay: '30/30/30/10', | |
41 | + annex: undefined, | |
42 | + remark: undefined, | |
43 | + }); | |
44 | + const [editProductBody, setEditProductBody] = useState([]); | |
45 | + const [total, setTotal] = useState(0); | |
46 | + const [payWayBody, setPayWayBody] = useState([]); | |
47 | + const [otherBody, setOtherBody] = useState([]); | |
48 | + const [isDis] = useState(true); | |
49 | + | |
50 | + type OrderStagesWithListItem = { | |
51 | + //文件编号 | |
52 | + id?: number; | |
53 | + //合同编号 | |
54 | + contract?: string; | |
55 | + //供应商名称 | |
56 | + vendor?: string; | |
57 | + //签合同日期 | |
58 | + dateRange?: Date; | |
59 | + //终端名称 | |
60 | + terminal?: string; | |
61 | + orderStagesDeviceVoList: orderStagesDevice[]; | |
62 | + //合同总金额 | |
63 | + totalPrice?: number; | |
64 | + //付款方式 | |
65 | + payWay?: string; | |
66 | + //附件 | |
67 | + annex?: string; | |
68 | + //备注 | |
69 | + remark?: string; | |
70 | + }; | |
71 | + | |
72 | + type orderStagesDevice = { | |
73 | + //设备id | |
74 | + dId: number; | |
75 | + //设备名称 | |
76 | + deviceName: string; | |
77 | + //设备型号 | |
78 | + deviceModel: string; | |
79 | + //数量 | |
80 | + count: number; | |
81 | + //单价 | |
82 | + unitPrice: number; | |
83 | + //总价 | |
84 | + price: number; | |
85 | + }; | |
86 | + | |
87 | + function setSave(value) { | |
88 | + setOtherBody(value); | |
89 | + } | |
90 | + | |
91 | + useEffect(() => { | |
92 | + setContextBody({ ...contextBody, totalPrice: total }); | |
93 | + form.setFieldValue('totalPrice', total); | |
94 | + }, [total]); | |
95 | + | |
96 | + const handleInputChange = (value: string, no: number, priceNow?: number) => { | |
97 | + if (value === '') { | |
98 | + message.info('请输入比例!'); | |
99 | + } else { | |
100 | + let totalPay = 0; | |
101 | + const payValue: string[] = value.split('/'); | |
102 | + let body: | |
103 | + | ((prevState: never[]) => never[]) | |
104 | + | { proportion: string; payPrice: number }[] = []; | |
105 | + if (no === 1) { | |
106 | + if (payValue.length !== 4) { | |
107 | + message.warning('比例个数总和不为4个!'); | |
108 | + } else { | |
109 | + payValue.forEach((item) => { | |
110 | + totalPay += Number(item); | |
111 | + }); | |
112 | + } | |
113 | + if (totalPay !== 100) { | |
114 | + message.warning('比例总和不为100!'); | |
115 | + } else { | |
116 | + message.success('输入有效!'); | |
117 | + payValue.forEach((item) => { | |
118 | + body.push({ | |
119 | + proportion: item + '%', | |
120 | + payPrice: (Number(item) * total) / 100, | |
121 | + }); | |
122 | + }); | |
123 | + setPayWayBody(body); | |
124 | + } | |
125 | + } else { | |
126 | + payValue.forEach((item) => { | |
127 | + totalPay += Number(item); | |
128 | + }); | |
129 | + payValue.forEach((item) => { | |
130 | + body.push({ | |
131 | + proportion: item + '%', | |
132 | + payPrice: (Number(item) * priceNow) / 100, | |
133 | + }); | |
134 | + }); | |
135 | + setPayWayBody(body); | |
136 | + } | |
137 | + } | |
138 | + }; | |
139 | + | |
140 | + function getEditProductBody(value) { | |
141 | + setEditProductBody(value); | |
142 | + let price = 0; | |
143 | + value.map((obj) => (price += obj.count * obj.unitPrice)); | |
144 | + setTotal(price); | |
145 | + setContextBody({ ...contextBody, orderStagesDeviceVoList: value }); | |
146 | + if (contextBody.payWay === '') { | |
147 | + handleInputChange('30/30/30/10', 0, price); | |
148 | + } else { | |
149 | + handleInputChange(contextBody.payWay, 0, price); | |
150 | + } | |
151 | + } | |
152 | + | |
153 | + function refresh() { | |
154 | + setEditProductBody([]); | |
155 | + setContextBody({ | |
156 | + id: undefined, | |
157 | + contract: undefined, | |
158 | + dateRange: undefined, | |
159 | + terminal: undefined, | |
160 | + orderStagesDeviceVoList: [], | |
161 | + totalPrice: undefined, | |
162 | + payWay: '30/30/30/10', | |
163 | + annex: undefined, | |
164 | + remark: undefined, | |
165 | + }); | |
166 | + handleInputChange('30/30/30/10', 0, 0); | |
167 | + } | |
168 | + | |
169 | + return ( | |
170 | + <ModalForm<OrderStagesWithListItem> | |
171 | + title="新建" | |
172 | + trigger={ | |
173 | + <Button | |
174 | + key="button" | |
175 | + icon={<PlusOutlined />} | |
176 | + type="primary" | |
177 | + onClick={() => refresh()} | |
178 | + > | |
179 | + 新增 | |
180 | + </Button> | |
181 | + } | |
182 | + form={form} | |
183 | + autoFocusFirstInput | |
184 | + modalProps={{ | |
185 | + destroyOnClose: true, | |
186 | + }} | |
187 | + submitTimeout={2000} | |
188 | + onFinish={async (values) => { | |
189 | + console.log(values); | |
190 | + if (editProductBody.length === 0) { | |
191 | + message.error('请填写产品数据'); | |
192 | + return false; | |
193 | + } | |
194 | + let remakeValue = []; | |
195 | + | |
196 | + const formData = new FormData(); | |
197 | + let toSendEdit = { | |
198 | + id: values.id || contextBody.id, | |
199 | + contract: values.contract || contextBody.contract, | |
200 | + vendor: values.vendor || contextBody.vendor, | |
201 | + dateRange: values.dateRange || contextBody.dateRange, | |
202 | + terminal: values.terminal || contextBody.terminal, | |
203 | + orderStagesDeviceDoList: | |
204 | + values.orderStagesDeviceVoList || | |
205 | + contextBody.orderStagesDeviceVoList, | |
206 | + totalPrice: values.totalPrice || contextBody.totalPrice, | |
207 | + payWay: values.payWay || contextBody.payWay, | |
208 | + annex: contextBody.annex, | |
209 | + remark: values.remark || contextBody.remark, | |
210 | + }; | |
211 | + if (values.annex) { | |
212 | + formData.append('file', values.annex[0].originFileObj as RcFile); | |
213 | + const res = await postOrderErpOrderStagesUpload({ | |
214 | + data: formData, | |
215 | + headers: { | |
216 | + 'Content-Type': | |
217 | + 'multipart/form-data; boundary=----WebKitFormBoundarynl6gT1BKdPWIejNq', | |
218 | + }, | |
219 | + }); | |
220 | + if (res.data) { | |
221 | + toSendEdit.annex = res.data; | |
222 | + } | |
223 | + } | |
224 | + const isSaveOrUpdate = await postOrderErpOrderStagesAdd({ | |
225 | + data: { ...toSendEdit }, | |
226 | + }); | |
227 | + | |
228 | + if (isSaveOrUpdate) { | |
229 | + const promises = []; | |
230 | + | |
231 | + otherBody.forEach((item) => { | |
232 | + let remakeItem = { | |
233 | + ossId: item.ossId, | |
234 | + number: item.id, | |
235 | + dateRange: item.payDate, | |
236 | + fileName: item.fileName, | |
237 | + }; | |
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 | + } | |
258 | + remakeValue.push(remakeItem); | |
259 | + }); | |
260 | + | |
261 | + let makeEnd = []; | |
262 | + const getRetrunIDPromise = async () => { | |
263 | + let returnOssID = await postOrderErpOrderStagesSearch({ | |
264 | + data: { contract: values.contract || contextBody.contract }, | |
265 | + }); | |
266 | + console.log(returnOssID.data); | |
267 | + | |
268 | + if (returnOssID) { | |
269 | + makeEnd = remakeValue.map((item) => { | |
270 | + return { ...item, ossId: returnOssID.data[0].id }; | |
271 | + }); | |
272 | + } | |
273 | + }; | |
274 | + | |
275 | + promises.push(getRetrunIDPromise()); | |
276 | + Promise.all(promises).then(async () => { | |
277 | + await postOrderErpOrderStagesPayWaySaveOrUpdate({ | |
278 | + data: makeEnd, | |
279 | + }); | |
280 | + }); | |
281 | + toReload(); | |
282 | + } | |
283 | + await waitTime(2000); | |
284 | + message.success('提交成功'); | |
285 | + return true; | |
286 | + }} | |
287 | + > | |
288 | + <ProCard title="基本信息" headerBordered bordered> | |
289 | + <ProForm.Group> | |
290 | + <ProFormText | |
291 | + width="md" | |
292 | + name="vendor" | |
293 | + rules={[{ required: true, message: '此项为必填项' }]} | |
294 | + label="供应商名称" | |
295 | + placeholder="请输入" | |
296 | + initialValue={contextBody.vendor} | |
297 | + /> | |
298 | + | |
299 | + <ProFormText | |
300 | + width="md" | |
301 | + name="terminal" | |
302 | + rules={[{ required: true, message: '此项为必填项' }]} | |
303 | + label="终端名称" | |
304 | + placeholder="请输入" | |
305 | + initialValue={contextBody.terminal} | |
306 | + /> | |
307 | + | |
308 | + <ProFormDatePicker | |
309 | + name="dateRange" | |
310 | + width="md" | |
311 | + label="签合同日期" | |
312 | + placeholder="请选择日期" | |
313 | + fieldProps={{ | |
314 | + format: (value) => value.format('YYYY-MM-DD'), | |
315 | + }} | |
316 | + initialValue={contextBody.dateRange} | |
317 | + /> | |
318 | + | |
319 | + <ProFormText | |
320 | + width="md" | |
321 | + name="payWay" | |
322 | + rules={[{ required: true, message: '此项为必填项' }]} | |
323 | + label="付款比例" | |
324 | + placeholder="请输入" | |
325 | + initialValue={contextBody.payWay} | |
326 | + disabled={!isDis} | |
327 | + onBlur={(e) => { | |
328 | + setContextBody({ ...contextBody, payWay: e.target.value }); | |
329 | + handleInputChange(e.target.value, 1); | |
330 | + }} | |
331 | + /> | |
332 | + | |
333 | + <ProFormText | |
334 | + width="md" | |
335 | + name="contract" | |
336 | + rules={[{ required: true, message: '此项为必填项' }]} | |
337 | + label="合同编号" | |
338 | + placeholder="请输入" | |
339 | + initialValue={contextBody.contract} | |
340 | + /> | |
341 | + | |
342 | + <ProFormUploadButton | |
343 | + width="md" | |
344 | + name="annex" | |
345 | + max={1} | |
346 | + label="合同附件" | |
347 | + /> | |
348 | + | |
349 | + <ProFormText | |
350 | + width="md" | |
351 | + name="totalPrice" | |
352 | + label="合同金额" | |
353 | + placeholder="请输入" | |
354 | + disabled={isDis} | |
355 | + initialValue={'0'} | |
356 | + /> | |
357 | + </ProForm.Group> | |
358 | + </ProCard> | |
359 | + <ProCard | |
360 | + title={ | |
361 | + <> | |
362 | + <span style={{ color: 'red' }}>*</span>产品明细 | |
363 | + </> | |
364 | + } | |
365 | + style={{ marginTop: 10 }} | |
366 | + headerBordered | |
367 | + bordered | |
368 | + > | |
369 | + <ProductDetail | |
370 | + productBody={[]} | |
371 | + EditProductBody={getEditProductBody} | |
372 | + ></ProductDetail> | |
373 | + </ProCard> | |
374 | + | |
375 | + <ProCard | |
376 | + title="付款信息" | |
377 | + style={{ marginTop: 10 }} | |
378 | + headerBordered | |
379 | + bordered | |
380 | + > | |
381 | + <PayWayDetail | |
382 | + payBody={payWayBody} | |
383 | + thisId={null} | |
384 | + currtSave={setSave} | |
385 | + ></PayWayDetail> | |
386 | + </ProCard> | |
387 | + | |
388 | + <ProCard style={{ marginTop: 10 }} headerBordered bordered> | |
389 | + <ProFormTextArea | |
390 | + label="备注" | |
391 | + name="remark" | |
392 | + initialValue={contextBody.remark} | |
393 | + /> | |
394 | + </ProCard> | |
395 | + </ModalForm> | |
396 | + ); | |
397 | +}; | ... | ... |
src/pages/Instalment/components/edit/edit.tsx
0 → 100644
1 | +import { | |
2 | + postOrderErpOrderStagesPayWaySaveOrUpdate, | |
3 | + postOrderErpOrderStagesSaveOrUpdate, | |
4 | + postOrderErpOrderStagesSearch, | |
5 | + postOrderErpOrderStagesUpload, | |
6 | +} from '@/services'; | |
7 | +import { | |
8 | + ModalForm, | |
9 | + ProCard, | |
10 | + ProForm, | |
11 | + ProFormDatePicker, | |
12 | + ProFormText, | |
13 | + ProFormTextArea, | |
14 | + ProFormUploadButton, | |
15 | +} from '@ant-design/pro-components'; | |
16 | +import { Form, message } from 'antd'; | |
17 | +import { RcFile } from 'antd/es/upload'; | |
18 | +import { useEffect, useState } from 'react'; | |
19 | +import PayWayDetail from '../payWayDetail/payWayDetail'; | |
20 | +import ProductDetail from '../productDetail/productDetail'; | |
21 | + | |
22 | +const waitTime = (time: number = 100) => { | |
23 | + return new Promise((resolve) => { | |
24 | + setTimeout(() => { | |
25 | + resolve(true); | |
26 | + }, time); | |
27 | + }); | |
28 | +}; | |
29 | + | |
30 | +export default ({ currentContract, toReload }) => { | |
31 | + const [form] = Form.useForm<{ name: string; company: string }>(); | |
32 | + const [contextBody, setContextBody] = useState({}); | |
33 | + const [total, setTotal] = useState(0); | |
34 | + const [payWayBody, setPayWayBody] = useState([]); | |
35 | + const [otherBody, setOtherBody] = useState([]); | |
36 | + | |
37 | + type OrderStagesWithListItem = { | |
38 | + //文件编号 | |
39 | + id: number; | |
40 | + //合同编号 | |
41 | + contract: string; | |
42 | + //供应商名称 | |
43 | + vendor: string; | |
44 | + //签合同日期 | |
45 | + dateRange: Date; | |
46 | + //终端名称 | |
47 | + terminal: string; | |
48 | + orderStagesDeviceVoList: orderStagesDevice[]; | |
49 | + //合同总金额 | |
50 | + totalPrice: number; | |
51 | + //付款方式 | |
52 | + payWay: string; | |
53 | + //附件 | |
54 | + annex: string; | |
55 | + //备注 | |
56 | + remark: string; | |
57 | + }; | |
58 | + | |
59 | + type orderStagesDevice = { | |
60 | + //设备id | |
61 | + dId: number; | |
62 | + //设备名称 | |
63 | + deviceName: string; | |
64 | + //设备型号 | |
65 | + deviceModel: string; | |
66 | + //数量 | |
67 | + count: number; | |
68 | + //单价 | |
69 | + unitPrice: number; | |
70 | + //总价 | |
71 | + price: number; | |
72 | + }; | |
73 | + | |
74 | + async function refresh() { | |
75 | + const res = await postOrderErpOrderStagesSearch({ | |
76 | + data: { contract: currentContract }, | |
77 | + }); | |
78 | + const context = res.data[0]; | |
79 | + | |
80 | + if (context.contract !== null) { | |
81 | + setContextBody(context); | |
82 | + setTotal(context.totalPrice); | |
83 | + form.setFieldValue('totalPrice', context.totalPrice); | |
84 | + } | |
85 | + } | |
86 | + | |
87 | + function setSave(value) { | |
88 | + setOtherBody(value); | |
89 | + } | |
90 | + | |
91 | + useEffect(() => { | |
92 | + setContextBody({ ...contextBody, totalPrice: total }); | |
93 | + form.setFieldValue('totalPrice', total); | |
94 | + }, [total]); | |
95 | + | |
96 | + const handleInputChange = (value: string, no: number, priceNow?: number) => { | |
97 | + let totalPay = 0; | |
98 | + const payValue: string[] = value.split('/'); | |
99 | + let body: | |
100 | + | ((prevState: never[]) => never[]) | |
101 | + | { proportion: string; payPrice: number }[] = []; | |
102 | + if (no === 1) { | |
103 | + if (payValue.length !== 4) { | |
104 | + message.warning('比例个数总和不为4个!'); | |
105 | + } else { | |
106 | + payValue.forEach((item) => { | |
107 | + totalPay += Number(item); | |
108 | + }); | |
109 | + } | |
110 | + if (totalPay !== 100) { | |
111 | + message.warning('比例总和不为100!'); | |
112 | + } else { | |
113 | + message.success('输入有效!'); | |
114 | + const price = total; | |
115 | + payValue.forEach((item) => { | |
116 | + body.push({ | |
117 | + proportion: item + '%', | |
118 | + payPrice: (Number(item) * price) / 100, | |
119 | + }); | |
120 | + }); | |
121 | + setPayWayBody(body); | |
122 | + } | |
123 | + } else { | |
124 | + payValue.forEach((item) => { | |
125 | + totalPay += Number(item); | |
126 | + }); | |
127 | + payValue.forEach((item) => { | |
128 | + body.push({ | |
129 | + proportion: item + '%', | |
130 | + payPrice: (Number(item) * priceNow) / 100, | |
131 | + }); | |
132 | + }); | |
133 | + setPayWayBody(body); | |
134 | + } | |
135 | + }; | |
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); | |
147 | + } | |
148 | + handleInputChange(context.payWay, 0, context.totalPrice); | |
149 | + } | |
150 | + | |
151 | + function getEditProductBody(value) { | |
152 | + let price = 0; | |
153 | + value.map((obj) => (price += obj.count * obj.unitPrice)); | |
154 | + setTotal(price); | |
155 | + setContextBody({ ...contextBody, orderStagesDeviceVoList: value }); | |
156 | + handleInputChange(contextBody.payWay, 0, price); | |
157 | + } | |
158 | + | |
159 | + useEffect(() => { | |
160 | + getBody(); | |
161 | + }, []); | |
162 | + | |
163 | + return ( | |
164 | + <ModalForm<OrderStagesWithListItem> | |
165 | + title="新建" | |
166 | + trigger={<a onClick={refresh}>编辑</a>} | |
167 | + form={form} | |
168 | + autoFocusFirstInput | |
169 | + modalProps={{ | |
170 | + destroyOnClose: true, | |
171 | + }} | |
172 | + submitTimeout={2000} | |
173 | + onFinish={async (values) => { | |
174 | + if (contextBody.orderStagesDeviceVoList.length === 0) { | |
175 | + message.error('请填写产品数据'); | |
176 | + return false; | |
177 | + } | |
178 | + let remakeValue = []; | |
179 | + const promises = []; | |
180 | + | |
181 | + otherBody.forEach((item) => { | |
182 | + let remakeItem = { | |
183 | + ossId: contextBody.id, | |
184 | + number: item.id, | |
185 | + dateRange: item.payDate, | |
186 | + fileName: item.fileName, | |
187 | + }; | |
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 | + } | |
208 | + remakeValue.push(remakeItem); | |
209 | + }); | |
210 | + Promise.all(promises).then(async () => { | |
211 | + await postOrderErpOrderStagesPayWaySaveOrUpdate({ | |
212 | + data: remakeValue, | |
213 | + }); | |
214 | + }); | |
215 | + const formData = new FormData(); | |
216 | + let toSendEdit = { | |
217 | + id: values.id || contextBody.id, | |
218 | + contract: values.contract || contextBody.contract, | |
219 | + vendor: values.vendor || contextBody.vendor, | |
220 | + dateRange: values.dateRange || contextBody.dateRange, | |
221 | + terminal: values.terminal || contextBody.terminal, | |
222 | + orderStagesDeviceDoList: | |
223 | + values.orderStagesDeviceVoList || | |
224 | + contextBody.orderStagesDeviceVoList, | |
225 | + totalPrice: values.totalPrice || contextBody.totalPrice, | |
226 | + payWay: values.payWay || contextBody.payWay, | |
227 | + annex: contextBody.annex, | |
228 | + remark: values.remark || contextBody.remark, | |
229 | + }; | |
230 | + if (values.annex) { | |
231 | + formData.append('file', values.annex[0].originFileObj as RcFile); | |
232 | + const res = await postOrderErpOrderStagesUpload({ | |
233 | + data: formData, | |
234 | + headers: { | |
235 | + 'Content-Type': | |
236 | + 'multipart/form-data; boundary=----WebKitFormBoundarynl6gT1BKdPWIejNq', | |
237 | + }, | |
238 | + }); | |
239 | + if (res.data) { | |
240 | + toSendEdit.annex = res.data; | |
241 | + } | |
242 | + } | |
243 | + const isSaveOrUpdate = await postOrderErpOrderStagesSaveOrUpdate({ | |
244 | + data: { ...toSendEdit }, | |
245 | + }); | |
246 | + if (isSaveOrUpdate) { | |
247 | + getBody(); | |
248 | + toReload(); | |
249 | + } | |
250 | + await waitTime(2000); | |
251 | + message.success('提交成功'); | |
252 | + return true; | |
253 | + }} | |
254 | + > | |
255 | + <ProCard title="基本信息" headerBordered bordered> | |
256 | + <ProForm.Group> | |
257 | + <ProFormText | |
258 | + width="md" | |
259 | + name="vendor" | |
260 | + rules={[{ required: true, message: '此项为必填项' }]} | |
261 | + label="供应商名称" | |
262 | + placeholder="请输入" | |
263 | + initialValue={contextBody.vendor} | |
264 | + /> | |
265 | + | |
266 | + <ProFormText | |
267 | + width="md" | |
268 | + name="terminal" | |
269 | + rules={[{ required: true, message: '此项为必填项' }]} | |
270 | + label="终端名称" | |
271 | + placeholder="请输入" | |
272 | + initialValue={contextBody.terminal} | |
273 | + /> | |
274 | + | |
275 | + <ProFormDatePicker | |
276 | + name="dateRange" | |
277 | + width="md" | |
278 | + label="签合同日期" | |
279 | + placeholder="请选择日期" | |
280 | + fieldProps={{ | |
281 | + format: (value) => value.format('YYYY-MM-DD'), | |
282 | + }} | |
283 | + initialValue={contextBody.dateRange} | |
284 | + /> | |
285 | + | |
286 | + <ProFormText | |
287 | + width="md" | |
288 | + name="payWay" | |
289 | + rules={[{ required: true, message: '此项为必填项' }]} | |
290 | + label="付款比例" | |
291 | + placeholder="请输入" | |
292 | + initialValue={contextBody.payWay} | |
293 | + onBlur={(e) => { | |
294 | + handleInputChange(e.target.value, 1); | |
295 | + }} | |
296 | + /> | |
297 | + | |
298 | + <ProFormText | |
299 | + width="md" | |
300 | + name="contract" | |
301 | + rules={[{ required: true, message: '此项为必填项' }]} | |
302 | + label="合同编号" | |
303 | + placeholder="请输入" | |
304 | + initialValue={contextBody.contract} | |
305 | + /> | |
306 | + | |
307 | + <ProFormUploadButton | |
308 | + width="md" | |
309 | + name="annex" | |
310 | + max={1} | |
311 | + label="合同附件" | |
312 | + /> | |
313 | + | |
314 | + <ProFormText | |
315 | + width="md" | |
316 | + name="totalPrice" | |
317 | + label="合同金额" | |
318 | + placeholder="请输入" | |
319 | + disabled | |
320 | + initialValue={contextBody.totalPrice} | |
321 | + /> | |
322 | + </ProForm.Group> | |
323 | + </ProCard> | |
324 | + | |
325 | + <ProCard | |
326 | + title={ | |
327 | + <> | |
328 | + <span style={{ color: 'red' }}>*</span>产品明细 | |
329 | + </> | |
330 | + } | |
331 | + style={{ marginTop: 10 }} | |
332 | + headerBordered | |
333 | + bordered | |
334 | + > | |
335 | + <ProductDetail | |
336 | + productBody={contextBody.orderStagesDeviceVoList} | |
337 | + EditProductBody={getEditProductBody} | |
338 | + ></ProductDetail> | |
339 | + </ProCard> | |
340 | + | |
341 | + <ProCard | |
342 | + title="付款信息" | |
343 | + style={{ marginTop: 10 }} | |
344 | + headerBordered | |
345 | + bordered | |
346 | + > | |
347 | + <PayWayDetail | |
348 | + payBody={payWayBody} | |
349 | + thisId={contextBody.id} | |
350 | + currtSave={setSave} | |
351 | + ></PayWayDetail> | |
352 | + </ProCard> | |
353 | + | |
354 | + <ProCard style={{ marginTop: 10 }} headerBordered bordered> | |
355 | + <ProFormTextArea | |
356 | + label="备注" | |
357 | + name="remark" | |
358 | + initialValue={contextBody.remark} | |
359 | + /> | |
360 | + </ProCard> | |
361 | + </ModalForm> | |
362 | + ); | |
363 | +}; | ... | ... |
src/pages/Instalment/components/payWayDetail/payWayDetail.css
0 → 100644
1 | +.payway-detail-index td { | |
2 | + font-family: 'San Francisco', 'Helvetica Neue', Helvetica, Arial, | |
3 | + 'Microsoft YaHei', 'PingFang SC', 'Hiragino Sans GB', 'Heiti SC', | |
4 | + 'WenQuanYi Micro Hei', sans-serif; | |
5 | + font-size: 14px; | |
6 | + margin: 0; | |
7 | +} | |
8 | + | |
9 | +.payway-detail-index td .css-dev-only-do-not-override-nllxry { | |
10 | + margin-bottom: 0 !important; | |
11 | +} | |
12 | + | |
13 | +.dataChoose { | |
14 | + margin: 0; | |
15 | +} | ... | ... |
src/pages/Instalment/components/payWayDetail/payWayDetail.less
0 → 100644
1 | +.payway-detail-index td { | |
2 | + font-family: 'San Francisco', 'Helvetica Neue', Helvetica, Arial, | |
3 | + 'Microsoft YaHei', 'PingFang SC', 'Hiragino Sans GB', 'Heiti SC', | |
4 | + 'WenQuanYi Micro Hei', sans-serif; | |
5 | + font-size: 14px; | |
6 | + margin: 0; | |
7 | + | |
8 | + .css-dev-only-do-not-override-nllxry { | |
9 | + margin-bottom: 0 !important; | |
10 | + } | |
11 | +} | |
12 | + | |
13 | +.dataChoose { | |
14 | + margin: 0; | |
15 | +} | |
16 | + | |
17 | +// .pay-way-detail-index td .css-dev-only-do-not-override-nllxry{ | |
18 | +// margin-bottom: 0px !important; | |
19 | +// } | ... | ... |
src/pages/Instalment/components/payWayDetail/payWayDetail.tsx
0 → 100644
1 | +import { postOrderErpOrderStagesPayWaySelect } from '@/services'; | |
2 | +import type { ProColumns } from '@ant-design/pro-components'; | |
3 | +import { | |
4 | + EditableProTable, | |
5 | + ProFormDatePicker, | |
6 | + ProFormRadio, | |
7 | + ProFormUploadButton, | |
8 | +} from '@ant-design/pro-components'; | |
9 | +import { message } from 'antd'; | |
10 | +import React, { useEffect, useState } from 'react'; | |
11 | +import './payWayDetail.less'; | |
12 | + | |
13 | +const waitTime = (time: number = 100) => { | |
14 | + return new Promise((resolve) => { | |
15 | + setTimeout(() => { | |
16 | + resolve(true); | |
17 | + }, time); | |
18 | + }); | |
19 | +}; | |
20 | + | |
21 | +type DataSourceType = { | |
22 | + id: number; | |
23 | + payStep?: string; | |
24 | + proportion?: string; | |
25 | + ossId?: number; | |
26 | + payPrice?: number; | |
27 | + payDate?: Date; | |
28 | + fileName?: string; | |
29 | + fileUrl?: string; | |
30 | +}; | |
31 | + | |
32 | +export default ({ payBody, thisId, currtSave }) => { | |
33 | + const defaultData: DataSourceType[] = [ | |
34 | + { | |
35 | + id: 1, | |
36 | + payStep: '预付款', | |
37 | + proportion: undefined, | |
38 | + payPrice: undefined, | |
39 | + ossId: undefined, | |
40 | + payDate: undefined, | |
41 | + fileName: undefined, | |
42 | + fileUrl: undefined, | |
43 | + }, | |
44 | + { | |
45 | + id: 2, | |
46 | + payStep: '发贷款', | |
47 | + proportion: undefined, | |
48 | + payPrice: undefined, | |
49 | + ossId: undefined, | |
50 | + payDate: undefined, | |
51 | + fileName: undefined, | |
52 | + fileUrl: undefined, | |
53 | + }, | |
54 | + { | |
55 | + id: 3, | |
56 | + payStep: '验收款', | |
57 | + proportion: undefined, | |
58 | + payPrice: undefined, | |
59 | + ossId: undefined, | |
60 | + payDate: undefined, | |
61 | + fileName: undefined, | |
62 | + fileUrl: undefined, | |
63 | + }, | |
64 | + { | |
65 | + id: 4, | |
66 | + payStep: '质保金', | |
67 | + proportion: undefined, | |
68 | + payPrice: undefined, | |
69 | + ossId: undefined, | |
70 | + payDate: undefined, | |
71 | + fileName: undefined, | |
72 | + fileUrl: undefined, | |
73 | + }, | |
74 | + ]; | |
75 | + | |
76 | + const [editableKeys, setEditableRowKeys] = useState<React.Key[]>([]); | |
77 | + const [position, setPosition] = useState<'top' | 'bottom' | 'hidden'>( | |
78 | + 'hidden', | |
79 | + ); | |
80 | + const [payWayDetailBody, setPayWayDetailBody] = useState< | |
81 | + readonly DataSourceType[] | |
82 | + >([...defaultData]); | |
83 | + // const [body, setBody] = useState([]) | |
84 | + const [isAccept, setIsAccept] = useState(null); | |
85 | + // const [isCurrtSave, setIsCurrtSave] = useState(false); | |
86 | + | |
87 | + async function getOther(value, arr) { | |
88 | + const res = await postOrderErpOrderStagesPayWaySelect({ | |
89 | + data: { ossId: value }, | |
90 | + }); | |
91 | + if (res.data) { | |
92 | + const context = res.data; | |
93 | + const remake = arr.map((obj) => { | |
94 | + let currt = obj; | |
95 | + context.forEach((object) => { | |
96 | + if (object.number === obj.id) { | |
97 | + currt = { | |
98 | + ...obj, | |
99 | + ossId: value, | |
100 | + payDate: object.dateRange, | |
101 | + fileName: object.fileName, | |
102 | + fileUrl: object.fileUrl, | |
103 | + }; | |
104 | + return currt; | |
105 | + } | |
106 | + }); | |
107 | + return currt; | |
108 | + }); | |
109 | + setPayWayDetailBody(remake); | |
110 | + } | |
111 | + } | |
112 | + | |
113 | + function setPayWay(value) { | |
114 | + const remakeData = payWayDetailBody.map((obj) => { | |
115 | + return { | |
116 | + ...obj, | |
117 | + proportion: value[obj.id - 1]?.proportion, | |
118 | + payPrice: value[obj.id - 1]?.payPrice, | |
119 | + }; | |
120 | + }); | |
121 | + // console.log(remakeData); | |
122 | + | |
123 | + setPayWayDetailBody(remakeData); | |
124 | + // console.log(thisId); | |
125 | + | |
126 | + if (thisId !== null) { | |
127 | + getOther(thisId, remakeData); | |
128 | + } | |
129 | + } | |
130 | + // useEffect(() => { | |
131 | + // getOther(thisId) | |
132 | + // }, [thisId]) | |
133 | + | |
134 | + useEffect(() => { | |
135 | + setPayWay(payBody); | |
136 | + }, [payBody]); | |
137 | + | |
138 | + // function setCurrtSave(value) { | |
139 | + // // console.log(value); | |
140 | + // setIsCurrtSave(payWayDetailBody) | |
141 | + // } | |
142 | + | |
143 | + const columns: ProColumns<DataSourceType>[] = [ | |
144 | + { | |
145 | + title: '编号', | |
146 | + dataIndex: 'id', | |
147 | + hideInTable: true, | |
148 | + editable: false, | |
149 | + }, | |
150 | + { | |
151 | + title: '付款信息', | |
152 | + dataIndex: 'payStep', | |
153 | + editable: false, | |
154 | + }, | |
155 | + { | |
156 | + title: '付款比例', | |
157 | + dataIndex: 'proportion', | |
158 | + editable: false, | |
159 | + }, | |
160 | + { | |
161 | + title: '付款金额', | |
162 | + dataIndex: 'payPrice', | |
163 | + editable: false, | |
164 | + }, | |
165 | + { | |
166 | + title: '对应的订单', | |
167 | + dataIndex: 'ossId', | |
168 | + editable: false, | |
169 | + hideInTable: true, | |
170 | + }, | |
171 | + { | |
172 | + title: '付款时间', | |
173 | + dataIndex: 'payDate', | |
174 | + editable: false, | |
175 | + render: (text, record) => { | |
176 | + const handleChange = (value) => { | |
177 | + const updatedDataSource = payWayDetailBody.map((item) => { | |
178 | + if (item.id === record.id) { | |
179 | + return { | |
180 | + ...item, | |
181 | + payDate: value, | |
182 | + }; | |
183 | + } | |
184 | + return item; | |
185 | + }); | |
186 | + // console.log(updatedDataSource); | |
187 | + | |
188 | + setPayWayDetailBody(updatedDataSource); | |
189 | + currtSave(updatedDataSource); | |
190 | + }; | |
191 | + | |
192 | + return ( | |
193 | + <ProFormDatePicker | |
194 | + className="dataChoose" | |
195 | + initialValue={record.payDate} | |
196 | + value={record.payDate} | |
197 | + placeholder={'请填写时间'} | |
198 | + fieldProps={{ | |
199 | + format: (value) => value.format('YYYY-MM-DD'), | |
200 | + onChange: handleChange, | |
201 | + }} | |
202 | + /> | |
203 | + ); | |
204 | + }, | |
205 | + }, | |
206 | + { | |
207 | + title: '付款单回执', | |
208 | + dataIndex: 'fileName', | |
209 | + 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 | + } | |
221 | + } else { | |
222 | + 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.file.originFileObj, | |
235 | + fileName: value.file.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); | |
247 | + }} | |
248 | + width="md" | |
249 | + max={1} | |
250 | + /> | |
251 | + ); | |
252 | + } | |
253 | + }, | |
254 | + }, | |
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 | + ]; | |
279 | + | |
280 | + return ( | |
281 | + <> | |
282 | + <EditableProTable<DataSourceType> | |
283 | + rowKey="id" | |
284 | + className="payway-detail-index" | |
285 | + toolbar={{ style: { display: 'none' } }} | |
286 | + ghost={true} | |
287 | + scroll={{ | |
288 | + x: 960, | |
289 | + }} | |
290 | + recordCreatorProps={ | |
291 | + position !== 'hidden' | |
292 | + ? { | |
293 | + position: position as 'top', | |
294 | + record: () => ({ id: (Math.random() * 1000000).toFixed(0) }), | |
295 | + } | |
296 | + : false | |
297 | + } | |
298 | + loading={false} | |
299 | + toolBarRender={() => [ | |
300 | + <ProFormRadio.Group | |
301 | + key="render" | |
302 | + fieldProps={{ | |
303 | + value: position, | |
304 | + onChange: (e) => setPosition(e.target.value), | |
305 | + }} | |
306 | + />, | |
307 | + ]} | |
308 | + columns={columns} | |
309 | + request={payWayDetailBody} | |
310 | + value={payWayDetailBody} | |
311 | + onChange={(value) => { | |
312 | + setPayWayDetailBody(value); | |
313 | + // setCurrtSave(payWayDetailBody) | |
314 | + }} | |
315 | + editable={{ | |
316 | + type: 'multiple', | |
317 | + editableKeys, | |
318 | + onSave: async () => { | |
319 | + // console.log(rowKey, data, row); | |
320 | + await waitTime(2000); | |
321 | + }, | |
322 | + onChange: setEditableRowKeys, | |
323 | + }} | |
324 | + /> | |
325 | + </> | |
326 | + ); | |
327 | +}; | ... | ... |
src/pages/Instalment/components/productDetail/productDetail.css
0 → 100644
src/pages/Instalment/components/productDetail/productDetail.less
0 → 100644
src/pages/Instalment/components/productDetail/productDetail.tsx
0 → 100644
1 | +import type { ProColumns } from '@ant-design/pro-components'; | |
2 | +import { EditableProTable, ProFormRadio } from '@ant-design/pro-components'; | |
3 | +import React, { useEffect, useState } from 'react'; | |
4 | +import './productDetail.less'; | |
5 | + | |
6 | +const waitTime = (time: number = 100) => { | |
7 | + return new Promise((resolve) => { | |
8 | + setTimeout(() => { | |
9 | + resolve(true); | |
10 | + }, time); | |
11 | + }); | |
12 | +}; | |
13 | + | |
14 | +// type DataSourceType = { | |
15 | +// count?: number; | |
16 | +// id: React.Key; | |
17 | +// deviceModel?: string; | |
18 | +// deviceName?: string; | |
19 | +// price?: number; | |
20 | +// unitPrice?: number; | |
21 | +// }; | |
22 | + | |
23 | +export default ({ productBody, EditProductBody }) => { | |
24 | + const [editableKeys, setEditableRowKeys] = useState<React.Key[]>([]); | |
25 | + const [dataSource, setDataSource] = useState<readonly DataSourceType[]>([]); | |
26 | + // const [form] = Form.useForm<{ name: string; company: string }>(); | |
27 | + const [position, setPosition] = useState<'top' | 'bottom' | 'hidden'>( | |
28 | + 'bottom', | |
29 | + ); | |
30 | + function getDataSourece() { | |
31 | + if (productBody.length !== 0) { | |
32 | + setDataSource(productBody); | |
33 | + } | |
34 | + } | |
35 | + function setEditProductBody(value) { | |
36 | + // console.log(value); | |
37 | + // console.log(dataSource); | |
38 | + | |
39 | + const modifiedArray = value.map((obj) => { | |
40 | + if (obj.dId && Number(obj.dId) <= 1000) { | |
41 | + return { | |
42 | + ...obj, | |
43 | + count: obj.count, | |
44 | + dId: null, | |
45 | + deviceModel: obj.deviceModel, | |
46 | + deviceName: obj.deviceName, | |
47 | + price: Number(obj.unitPrice) * Number(obj.count), | |
48 | + unitPrice: obj.unitPrice, | |
49 | + }; | |
50 | + } else { | |
51 | + return { ...obj, price: Number(obj.unitPrice) * Number(obj.count) }; | |
52 | + } | |
53 | + }); | |
54 | + // console.log(modifiedArray); | |
55 | + | |
56 | + EditProductBody(modifiedArray); | |
57 | + setDataSource(value); | |
58 | + } | |
59 | + | |
60 | + useEffect(() => { | |
61 | + getDataSourece(); | |
62 | + }, [productBody]); | |
63 | + | |
64 | + type DataSourceType = { | |
65 | + id: React.Key; | |
66 | + count: number; | |
67 | + dId?: number; | |
68 | + deviceModel: string; | |
69 | + deviceName: string; | |
70 | + price: number; | |
71 | + unitPrice: number; | |
72 | + }; | |
73 | + | |
74 | + const columns: ProColumns<DataSourceType>[] = [ | |
75 | + { | |
76 | + title: '设备编号', | |
77 | + dataIndex: 'dId', | |
78 | + hideInTable: true, | |
79 | + }, | |
80 | + { | |
81 | + title: '设备名称', | |
82 | + dataIndex: 'deviceName', | |
83 | + formItemProps: () => { | |
84 | + return { | |
85 | + rules: [{ required: true, message: '此项为必填项' }], | |
86 | + }; | |
87 | + }, | |
88 | + }, | |
89 | + { | |
90 | + title: '设备型号', | |
91 | + dataIndex: 'deviceModel', | |
92 | + width: '15%', | |
93 | + formItemProps: () => { | |
94 | + return { | |
95 | + rules: [{ required: true, message: '此项为必填项' }], | |
96 | + }; | |
97 | + }, | |
98 | + }, | |
99 | + { | |
100 | + title: '数量', | |
101 | + dataIndex: 'count', | |
102 | + formItemProps: () => { | |
103 | + return { | |
104 | + rules: [{ required: true, message: '此项为必填项' }], | |
105 | + }; | |
106 | + }, | |
107 | + }, | |
108 | + { | |
109 | + title: '单价', | |
110 | + dataIndex: 'unitPrice', | |
111 | + formItemProps: () => { | |
112 | + return { | |
113 | + rules: [{ required: true, message: '此项为必填项' }], | |
114 | + }; | |
115 | + }, | |
116 | + }, | |
117 | + { | |
118 | + title: '总价', | |
119 | + dataIndex: 'price', | |
120 | + hideInSetting: true, | |
121 | + disable: true, | |
122 | + editable: false, | |
123 | + render: (_text, record) => [ | |
124 | + <span key={record.dId}>{record.count * record.unitPrice}</span>, | |
125 | + ], | |
126 | + }, | |
127 | + { | |
128 | + title: '操作', | |
129 | + valueType: 'option', | |
130 | + width: 200, | |
131 | + render: (_text, record, _, action) => [ | |
132 | + <a | |
133 | + key="editable" | |
134 | + onClick={() => { | |
135 | + if (record.dId) { | |
136 | + action?.startEditable?.(record.dId); | |
137 | + } | |
138 | + }} | |
139 | + > | |
140 | + 编辑 | |
141 | + </a>, | |
142 | + <a | |
143 | + key="delete" | |
144 | + onClick={() => { | |
145 | + EditProductBody( | |
146 | + dataSource.filter((item) => item.dId !== record.dId), | |
147 | + ); | |
148 | + setDataSource(dataSource.filter((item) => item.dId !== record.dId)); | |
149 | + }} | |
150 | + > | |
151 | + 删除 | |
152 | + </a>, | |
153 | + ], | |
154 | + }, | |
155 | + ]; | |
156 | + | |
157 | + return ( | |
158 | + <> | |
159 | + <EditableProTable<DataSourceType> | |
160 | + className="product-detail-index" | |
161 | + rowKey="dId" | |
162 | + toolbar={{ style: { display: 'none' } }} | |
163 | + ghost={true} | |
164 | + scroll={{ | |
165 | + x: 960, | |
166 | + }} | |
167 | + recordCreatorProps={ | |
168 | + position !== 'hidden' | |
169 | + ? { | |
170 | + position: position as 'top', | |
171 | + record: () => ({ dId: (Math.random() * 1000).toFixed(0) }), | |
172 | + } | |
173 | + : false | |
174 | + } | |
175 | + loading={false} | |
176 | + toolBarRender={() => [ | |
177 | + <ProFormRadio.Group | |
178 | + key="render" | |
179 | + fieldProps={{ | |
180 | + value: position, | |
181 | + onChange: (e) => setPosition(e.target.value), | |
182 | + }} | |
183 | + />, | |
184 | + ]} | |
185 | + columns={columns} | |
186 | + request={dataSource} | |
187 | + value={dataSource} | |
188 | + onChange={setEditProductBody} | |
189 | + editable={{ | |
190 | + type: 'multiple', | |
191 | + editableKeys, | |
192 | + onSave: async () => { | |
193 | + await waitTime(500); | |
194 | + }, | |
195 | + onChange: setEditableRowKeys, | |
196 | + }} | |
197 | + /> | |
198 | + </> | |
199 | + ); | |
200 | +}; | ... | ... |
src/pages/Instalment/components/read/read.tsx
0 → 100644
1 | +import { | |
2 | + postOrderErpOrderStagesPayWaySaveOrUpdate, | |
3 | + postOrderErpOrderStagesSaveOrUpdate, | |
4 | + postOrderErpOrderStagesSearch, | |
5 | + postOrderErpOrderStagesUpload, | |
6 | +} from '@/services'; | |
7 | +import { | |
8 | + ModalForm, | |
9 | + ProCard, | |
10 | + ProForm, | |
11 | + ProFormDatePicker, | |
12 | + ProFormText, | |
13 | + ProFormTextArea, | |
14 | +} from '@ant-design/pro-components'; | |
15 | +import { Form, message } from 'antd'; | |
16 | +import { RcFile } from 'antd/es/upload'; | |
17 | +import { useEffect, useState } from 'react'; | |
18 | +import PayWayDetail from './readPayWay'; | |
19 | +import ProductDetail from './readProduct'; | |
20 | + | |
21 | +const waitTime = (time: number = 100) => { | |
22 | + return new Promise((resolve) => { | |
23 | + setTimeout(() => { | |
24 | + resolve(true); | |
25 | + }, time); | |
26 | + }); | |
27 | +}; | |
28 | + | |
29 | +export default ({ currentContract }) => { | |
30 | + const [form] = Form.useForm<{ name: string; company: string }>(); | |
31 | + const [contextBody, setContextBody] = useState({}); | |
32 | + const [, setEditProductBody] = useState([]); | |
33 | + const [total, setTotal] = useState(0); | |
34 | + const [payWayBody, setPayWayBody] = useState([]); | |
35 | + const [otherBody, setOtherBody] = useState([]); | |
36 | + | |
37 | + type OrderStagesWithListItem = { | |
38 | + //文件编号 | |
39 | + id: number; | |
40 | + //合同编号 | |
41 | + contract: string; | |
42 | + //供应商名称 | |
43 | + vendor: string; | |
44 | + //签合同日期 | |
45 | + dateRange: Date; | |
46 | + //终端名称 | |
47 | + terminal: string; | |
48 | + orderStagesDeviceVoList: orderStagesDevice[]; | |
49 | + //合同总金额 | |
50 | + totalPrice: number; | |
51 | + //付款方式 | |
52 | + payWay: string; | |
53 | + //附件 | |
54 | + annex: string; | |
55 | + //备注 | |
56 | + remark: string; | |
57 | + }; | |
58 | + | |
59 | + type orderStagesDevice = { | |
60 | + //设备id | |
61 | + dId: number; | |
62 | + //设备名称 | |
63 | + deviceName: string; | |
64 | + //设备型号 | |
65 | + deviceModel: string; | |
66 | + //数量 | |
67 | + count: number; | |
68 | + //单价 | |
69 | + unitPrice: number; | |
70 | + //总价 | |
71 | + price: number; | |
72 | + }; | |
73 | + | |
74 | + async function refresh() { | |
75 | + const res = await postOrderErpOrderStagesSearch({ | |
76 | + data: { contract: currentContract }, | |
77 | + }); | |
78 | + const context = res.data[0]; | |
79 | + // console.log(context); | |
80 | + | |
81 | + if (context.contract !== null) { | |
82 | + setContextBody(context); | |
83 | + setTotal(context.totalPrice); | |
84 | + form.setFieldValue('totalPrice', context.totalPrice); | |
85 | + } | |
86 | + } | |
87 | + | |
88 | + function setSave(value) { | |
89 | + // console.log(value); | |
90 | + setOtherBody(value); | |
91 | + } | |
92 | + | |
93 | + useEffect(() => { | |
94 | + setContextBody({ ...contextBody, totalPrice: total }); | |
95 | + form.setFieldValue('totalPrice', total); | |
96 | + }, [total]); | |
97 | + | |
98 | + const handleInputChange = (value: string, no: number, priceNow?: number) => { | |
99 | + let totalPay = 0; | |
100 | + const payValue: string[] = value.split('/'); | |
101 | + let body: | |
102 | + | ((prevState: never[]) => never[]) | |
103 | + | { proportion: string; payPrice: number }[] = []; | |
104 | + if (no === 1) { | |
105 | + if (payValue.length !== 4) { | |
106 | + message.warning('比例个数总和不为4个!'); | |
107 | + } else { | |
108 | + payValue.forEach((item) => { | |
109 | + totalPay += Number(item); | |
110 | + }); | |
111 | + } | |
112 | + if (totalPay !== 100) { | |
113 | + message.warning('比例总和不为100!'); | |
114 | + } else { | |
115 | + message.success('输入有效!'); | |
116 | + const price = total; | |
117 | + payValue.forEach((item) => { | |
118 | + body.push({ | |
119 | + proportion: item + '%', | |
120 | + payPrice: (Number(item) * price) / 100, | |
121 | + }); | |
122 | + }); | |
123 | + setPayWayBody(body); | |
124 | + } | |
125 | + } else { | |
126 | + payValue.forEach((item) => { | |
127 | + totalPay += Number(item); | |
128 | + }); | |
129 | + payValue.forEach((item) => { | |
130 | + body.push({ | |
131 | + proportion: item + '%', | |
132 | + payPrice: (Number(item) * priceNow) / 100, | |
133 | + }); | |
134 | + }); | |
135 | + setPayWayBody(body); | |
136 | + } | |
137 | + }; | |
138 | + | |
139 | + async function getBody() { | |
140 | + const res = await postOrderErpOrderStagesSearch({ | |
141 | + data: { contract: currentContract }, | |
142 | + }); | |
143 | + const context = res.data[0]; | |
144 | + // console.log(context); | |
145 | + | |
146 | + if (context.contract !== null) { | |
147 | + setContextBody(context); | |
148 | + setTotal(context.totalPrice); | |
149 | + form.setFieldValue('totalPrice', context.totalPrice); | |
150 | + } | |
151 | + handleInputChange(context.payWay, 0, context.totalPrice); | |
152 | + } | |
153 | + | |
154 | + useEffect(() => { | |
155 | + getBody(); | |
156 | + }, []); | |
157 | + | |
158 | + function getEditProductBody(value) { | |
159 | + // console.log(value); | |
160 | + | |
161 | + setEditProductBody(value); | |
162 | + let price = 0; | |
163 | + value.map((obj) => (price += obj.count * obj.unitPrice)); | |
164 | + setTotal(price); | |
165 | + setContextBody({ ...contextBody, orderStagesDeviceVoList: value }); | |
166 | + handleInputChange(contextBody.payWay, 0, price); | |
167 | + } | |
168 | + | |
169 | + return ( | |
170 | + <ModalForm<OrderStagesWithListItem> | |
171 | + title="新建" | |
172 | + trigger={<a onClick={refresh}>查看</a>} | |
173 | + form={form} | |
174 | + autoFocusFirstInput | |
175 | + modalProps={{ | |
176 | + destroyOnClose: true, | |
177 | + // onCancel: () => console.log('run'), | |
178 | + }} | |
179 | + submitTimeout={2000} | |
180 | + onFinish={async (values) => { | |
181 | + // console.log(values); | |
182 | + // console.log(otherBody); | |
183 | + let remakeValue = []; | |
184 | + // 创建一个用于存储所有异步操作的Promise数组 | |
185 | + const promises = []; | |
186 | + | |
187 | + otherBody.forEach((item) => { | |
188 | + let remakeItem = { | |
189 | + ossId: item.ossId, | |
190 | + number: item.id, | |
191 | + dataRange: item.payDate, | |
192 | + fileName: item.fileName, | |
193 | + }; | |
194 | + if ( | |
195 | + typeof item.fileUrl === 'object' && | |
196 | + item.fileUrl instanceof File | |
197 | + ) { | |
198 | + const formData = new FormData(); | |
199 | + formData.append('file', item.fileUrl as RcFile); | |
200 | + const uploadPromise = async () => { | |
201 | + const res = await postOrderErpOrderStagesUpload({ | |
202 | + data: formData, | |
203 | + headers: { | |
204 | + 'Content-Type': | |
205 | + 'multipart/form-data; boundary=----WebKitFormBoundarynl6gT1BKdPWIejNq', | |
206 | + }, | |
207 | + }); | |
208 | + if (res.data) { | |
209 | + remakeItem.fileUrl = res.data; | |
210 | + } | |
211 | + }; | |
212 | + promises.push(uploadPromise()); | |
213 | + } | |
214 | + remakeValue.push(remakeItem); | |
215 | + }); | |
216 | + | |
217 | + // 使用Promise.all等待所有异步操作完成后再执行保存操作 | |
218 | + Promise.all(promises).then(async () => { | |
219 | + await postOrderErpOrderStagesPayWaySaveOrUpdate({ | |
220 | + data: remakeValue, | |
221 | + }); | |
222 | + }); | |
223 | + const formData = new FormData(); | |
224 | + // let toSendEdit={...values,orderStagesDeviceVoList:contextBody.orderStagesDeviceVoList}; | |
225 | + let toSendEdit = { | |
226 | + id: values.id || contextBody.id, | |
227 | + contract: values.contract || contextBody.contract, | |
228 | + vendor: values.vendor || contextBody.vendor, | |
229 | + dateRange: values.dateRange || contextBody.dateRange, | |
230 | + terminal: values.terminal || contextBody.terminal, | |
231 | + orderStagesDeviceDoList: | |
232 | + values.orderStagesDeviceVoList || | |
233 | + contextBody.orderStagesDeviceVoList, | |
234 | + totalPrice: values.totalPrice || contextBody.totalPrice, | |
235 | + payWay: values.payWay || contextBody.payWay, | |
236 | + annex: contextBody.annex, | |
237 | + remark: values.remark || contextBody.remark, | |
238 | + }; | |
239 | + if (values.annex) { | |
240 | + formData.append('file', values.annex[0].originFileObj as RcFile); | |
241 | + const res = await postOrderErpOrderStagesUpload({ | |
242 | + data: formData, | |
243 | + headers: { | |
244 | + 'Content-Type': | |
245 | + 'multipart/form-data; boundary=----WebKitFormBoundarynl6gT1BKdPWIejNq', | |
246 | + }, | |
247 | + }); | |
248 | + if (res.data) { | |
249 | + // console.log(values) | |
250 | + // console.log(contextBody); | |
251 | + toSendEdit.annex = res.data; | |
252 | + } | |
253 | + } | |
254 | + const isSaveOrUpdate = await postOrderErpOrderStagesSaveOrUpdate({ | |
255 | + data: { ...toSendEdit }, | |
256 | + }); | |
257 | + if (isSaveOrUpdate) { | |
258 | + // console.log(isSaveOrUpdate); | |
259 | + getBody(); | |
260 | + } | |
261 | + await waitTime(2000); | |
262 | + message.success('提交成功'); | |
263 | + return true; | |
264 | + }} | |
265 | + > | |
266 | + <ProCard title="基本信息" headerBordered bordered> | |
267 | + <ProForm.Group> | |
268 | + <ProFormText | |
269 | + width="md" | |
270 | + name="vendor" | |
271 | + label="供应商名称" | |
272 | + placeholder="请输入" | |
273 | + initialValue={contextBody.vendor} | |
274 | + readonly | |
275 | + /> | |
276 | + | |
277 | + <ProFormText | |
278 | + width="md" | |
279 | + name="terminal" | |
280 | + label="终端名称" | |
281 | + placeholder="请输入" | |
282 | + initialValue={contextBody.terminal} | |
283 | + readonly | |
284 | + /> | |
285 | + | |
286 | + <ProFormDatePicker | |
287 | + name="dateRange" | |
288 | + width="md" | |
289 | + label="签合同日期" | |
290 | + placeholder="请选择日期" | |
291 | + fieldProps={{ | |
292 | + format: (value) => value.format('YYYY-MM-DD'), | |
293 | + }} | |
294 | + initialValue={contextBody.dateRange} | |
295 | + readonly | |
296 | + /> | |
297 | + | |
298 | + <ProFormText | |
299 | + width="md" | |
300 | + name="payWay" | |
301 | + label="付款比例" | |
302 | + placeholder="请输入" | |
303 | + initialValue={contextBody.payWay} | |
304 | + readonly | |
305 | + onBlur={(e) => { | |
306 | + handleInputChange(e.target.value, 1); | |
307 | + }} | |
308 | + /> | |
309 | + | |
310 | + <ProFormText | |
311 | + width="md" | |
312 | + name="contract" | |
313 | + label="合同编号" | |
314 | + placeholder="请输入" | |
315 | + initialValue={contextBody.contract} | |
316 | + readonly | |
317 | + /> | |
318 | + | |
319 | + {/* <ProFormText | |
320 | + width="md" | |
321 | + name="annex" | |
322 | + label="合同附件" | |
323 | + placeholder="请输入" | |
324 | + initialValue={contextBody.fileUrl} | |
325 | + readonly | |
326 | + /> */} | |
327 | + | |
328 | + <ProFormText | |
329 | + width="md" | |
330 | + name="totalPrice" | |
331 | + label="合同金额" | |
332 | + placeholder="请输入" | |
333 | + disabled | |
334 | + readonly | |
335 | + // rules={[{ required: true, message: '此项为必填项' }]} | |
336 | + // value={contextBody.totalPrice} | |
337 | + initialValue={contextBody.totalPrice} | |
338 | + /> | |
339 | + </ProForm.Group> | |
340 | + </ProCard> | |
341 | + <ProCard | |
342 | + title="产品明细" | |
343 | + style={{ marginTop: 10 }} | |
344 | + headerBordered | |
345 | + bordered | |
346 | + > | |
347 | + <ProductDetail | |
348 | + productBody={contextBody.orderStagesDeviceVoList} | |
349 | + EditProductBody={getEditProductBody} | |
350 | + ></ProductDetail> | |
351 | + </ProCard> | |
352 | + | |
353 | + <ProCard | |
354 | + title="付款信息" | |
355 | + style={{ marginTop: 10 }} | |
356 | + headerBordered | |
357 | + bordered | |
358 | + > | |
359 | + <PayWayDetail | |
360 | + payBody={payWayBody} | |
361 | + thisId={contextBody.id} | |
362 | + currtSave={setSave} | |
363 | + ></PayWayDetail> | |
364 | + </ProCard> | |
365 | + | |
366 | + <ProCard style={{ marginTop: 10 }} headerBordered bordered> | |
367 | + <ProFormTextArea | |
368 | + label="备注" | |
369 | + name="remark" | |
370 | + initialValue={contextBody.remark} | |
371 | + readonly | |
372 | + /> | |
373 | + </ProCard> | |
374 | + </ModalForm> | |
375 | + ); | |
376 | +}; | ... | ... |
src/pages/Instalment/components/read/readPayWay.tsx
0 → 100644
1 | +import { postOrderErpOrderStagesPayWaySelect } from '@/services'; | |
2 | +import type { ProColumns } from '@ant-design/pro-components'; | |
3 | +import { | |
4 | + EditableProTable, | |
5 | + ProFormRadio, | |
6 | + ProFormUploadButton, | |
7 | +} from '@ant-design/pro-components'; | |
8 | +import { message } from 'antd'; | |
9 | +import React, { useEffect, useState } from 'react'; | |
10 | + | |
11 | +const waitTime = (time: number = 100) => { | |
12 | + return new Promise((resolve) => { | |
13 | + setTimeout(() => { | |
14 | + resolve(true); | |
15 | + }, time); | |
16 | + }); | |
17 | +}; | |
18 | + | |
19 | +type DataSourceType = { | |
20 | + id: number; | |
21 | + payStep?: string; | |
22 | + proportion?: string; | |
23 | + ossId?: number; | |
24 | + payPrice?: number; | |
25 | + payDate?: Date; | |
26 | + fileName?: string; | |
27 | + fileUrl?: string; | |
28 | +}; | |
29 | + | |
30 | +export default ({ payBody, thisId, currtSave }) => { | |
31 | + const defaultData: DataSourceType[] = [ | |
32 | + { | |
33 | + id: 1, | |
34 | + payStep: '预付款', | |
35 | + proportion: undefined, | |
36 | + payPrice: undefined, | |
37 | + ossId: undefined, | |
38 | + payDate: undefined, | |
39 | + fileName: undefined, | |
40 | + fileUrl: undefined, | |
41 | + }, | |
42 | + { | |
43 | + id: 2, | |
44 | + payStep: '发贷款', | |
45 | + proportion: undefined, | |
46 | + payPrice: undefined, | |
47 | + ossId: undefined, | |
48 | + payDate: undefined, | |
49 | + fileName: undefined, | |
50 | + fileUrl: undefined, | |
51 | + }, | |
52 | + { | |
53 | + id: 3, | |
54 | + payStep: '验收款', | |
55 | + proportion: undefined, | |
56 | + payPrice: undefined, | |
57 | + ossId: undefined, | |
58 | + payDate: undefined, | |
59 | + fileName: undefined, | |
60 | + fileUrl: undefined, | |
61 | + }, | |
62 | + { | |
63 | + id: 4, | |
64 | + payStep: '质保金', | |
65 | + proportion: undefined, | |
66 | + payPrice: undefined, | |
67 | + ossId: undefined, | |
68 | + payDate: undefined, | |
69 | + fileName: undefined, | |
70 | + fileUrl: undefined, | |
71 | + }, | |
72 | + ]; | |
73 | + | |
74 | + const [editableKeys, setEditableRowKeys] = useState<React.Key[]>([]); | |
75 | + const [position, setPosition] = useState<'top' | 'bottom' | 'hidden'>( | |
76 | + 'hidden', | |
77 | + ); | |
78 | + const [payWayDetailBody, setPayWayDetailBody] = useState< | |
79 | + readonly DataSourceType[] | |
80 | + >([...defaultData]); | |
81 | + const [isAccept] = useState(null); | |
82 | + // const [isCurrtSave, setIsCurrtSave] = useState(false); | |
83 | + | |
84 | + async function getOther(value, arr) { | |
85 | + const res = await postOrderErpOrderStagesPayWaySelect({ | |
86 | + data: { ossId: value }, | |
87 | + }); | |
88 | + if (res.data) { | |
89 | + const context = res.data; | |
90 | + const remake = arr.map((obj) => { | |
91 | + let currt = obj; | |
92 | + context.forEach((object) => { | |
93 | + if (object.number === obj.id) { | |
94 | + currt = { | |
95 | + ...obj, | |
96 | + ossId: value, | |
97 | + payDate: object.dateRange, | |
98 | + fileName: object.fileName, | |
99 | + fileUrl: object.fileUrl, | |
100 | + }; | |
101 | + return currt; | |
102 | + } | |
103 | + }); | |
104 | + return currt; | |
105 | + }); | |
106 | + setPayWayDetailBody(remake); | |
107 | + } | |
108 | + } | |
109 | + | |
110 | + function setPayWay(value) { | |
111 | + const remakeData = payWayDetailBody.map((obj) => { | |
112 | + return { | |
113 | + ...obj, | |
114 | + proportion: value[obj.id - 1]?.proportion, | |
115 | + payPrice: value[obj.id - 1]?.payPrice, | |
116 | + }; | |
117 | + }); | |
118 | + | |
119 | + setPayWayDetailBody(remakeData); | |
120 | + | |
121 | + if (thisId !== null) { | |
122 | + getOther(thisId, remakeData); | |
123 | + } | |
124 | + } | |
125 | + // useEffect(() => { | |
126 | + // getOther(thisId) | |
127 | + // }, [thisId]) | |
128 | + | |
129 | + useEffect(() => { | |
130 | + setPayWay(payBody); | |
131 | + }, [payBody]); | |
132 | + | |
133 | + // function setCurrtSave(_value) { | |
134 | + // setIsCurrtSave(payWayDetailBody) | |
135 | + // } | |
136 | + | |
137 | + const columns: ProColumns<DataSourceType>[] = [ | |
138 | + { | |
139 | + title: '编号', | |
140 | + dataIndex: 'id', | |
141 | + hideInTable: true, | |
142 | + editable: false, | |
143 | + }, | |
144 | + { | |
145 | + title: '付款信息', | |
146 | + dataIndex: 'payStep', | |
147 | + editable: false, | |
148 | + }, | |
149 | + { | |
150 | + title: '付款比例', | |
151 | + dataIndex: 'proportion', | |
152 | + editable: false, | |
153 | + }, | |
154 | + { | |
155 | + title: '付款金额', | |
156 | + dataIndex: 'payPrice', | |
157 | + editable: false, | |
158 | + }, | |
159 | + { | |
160 | + title: '对应的订单', | |
161 | + dataIndex: 'ossId', | |
162 | + editable: false, | |
163 | + hideInTable: true, | |
164 | + }, | |
165 | + { | |
166 | + title: '付款时间', | |
167 | + dataIndex: 'payDate', | |
168 | + editable: false, | |
169 | + render: (_text, record) => { | |
170 | + return ( | |
171 | + <span> | |
172 | + {new Intl.DateTimeFormat('zh-CN', { | |
173 | + year: 'numeric', | |
174 | + month: 'long', | |
175 | + day: 'numeric', | |
176 | + }).format(record.payDate)} | |
177 | + </span> | |
178 | + // <ProFormDatePicker | |
179 | + // className='dataChoose' | |
180 | + // initialValue={record.payDate} | |
181 | + // value={record.payDate} | |
182 | + // placeholder={"请填写时间"} | |
183 | + // fieldProps={{ | |
184 | + // format: (value) => value.format('YYYY-MM-DD'), | |
185 | + // onChange: handleChange, | |
186 | + // }} | |
187 | + // /> | |
188 | + ); | |
189 | + }, | |
190 | + }, | |
191 | + { | |
192 | + title: '付款单回执', | |
193 | + dataIndex: 'fileName', | |
194 | + render: (_text, record) => { | |
195 | + if (isAccept !== record.id) { | |
196 | + if ( | |
197 | + typeof record.fileUrl === 'object' && | |
198 | + record.fileUrl instanceof File | |
199 | + ) { | |
200 | + return ( | |
201 | + <a onClick={() => message.error('请先保存')}>{record.fileName}</a> | |
202 | + ); | |
203 | + } else { | |
204 | + return <a href={record.fileUrl}>{record.fileName}</a>; | |
205 | + } | |
206 | + } else { | |
207 | + return ( | |
208 | + <ProFormUploadButton | |
209 | + name={record.id} | |
210 | + onChange={(value) => { | |
211 | + let remakeBody = []; | |
212 | + let remakeBodyItem = {}; | |
213 | + payWayDetailBody.forEach((item) => { | |
214 | + if (item.id === record.id) { | |
215 | + remakeBodyItem = { | |
216 | + ...item, | |
217 | + fileUrl: value.file.originFileObj, | |
218 | + fileName: value.file.name, | |
219 | + }; | |
220 | + } else { | |
221 | + remakeBodyItem = { ...item }; | |
222 | + } | |
223 | + if (value.fileList.length === 0) { | |
224 | + remakeBodyItem = { | |
225 | + ...item, | |
226 | + fileUrl: undefined, | |
227 | + fileName: undefined, | |
228 | + }; | |
229 | + } | |
230 | + remakeBody.push(remakeBodyItem); | |
231 | + }); | |
232 | + setPayWayDetailBody(remakeBody); | |
233 | + currtSave(remakeBody); | |
234 | + }} | |
235 | + width="md" | |
236 | + max={1} | |
237 | + /> | |
238 | + ); | |
239 | + } | |
240 | + }, | |
241 | + }, | |
242 | + ]; | |
243 | + | |
244 | + return ( | |
245 | + <> | |
246 | + <EditableProTable<DataSourceType> | |
247 | + rowKey="id" | |
248 | + className="payway-detail-index" | |
249 | + toolbar={{ style: { display: 'none' } }} | |
250 | + ghost={true} | |
251 | + scroll={{ | |
252 | + x: 960, | |
253 | + }} | |
254 | + recordCreatorProps={ | |
255 | + position !== 'hidden' | |
256 | + ? { | |
257 | + position: position as 'top', | |
258 | + record: () => ({ id: (Math.random() * 1000000).toFixed(0) }), | |
259 | + } | |
260 | + : false | |
261 | + } | |
262 | + loading={false} | |
263 | + toolBarRender={() => [ | |
264 | + <ProFormRadio.Group | |
265 | + key="render" | |
266 | + fieldProps={{ | |
267 | + value: position, | |
268 | + onChange: (e) => setPosition(e.target.value), | |
269 | + }} | |
270 | + />, | |
271 | + ]} | |
272 | + columns={columns} | |
273 | + request={payWayDetailBody} | |
274 | + value={payWayDetailBody} | |
275 | + onChange={(value) => { | |
276 | + setPayWayDetailBody(value); | |
277 | + // setCurrtSave(payWayDetailBody) | |
278 | + }} | |
279 | + editable={{ | |
280 | + type: 'multiple', | |
281 | + editableKeys, | |
282 | + onSave: async () => { | |
283 | + await waitTime(2000); | |
284 | + }, | |
285 | + onChange: setEditableRowKeys, | |
286 | + }} | |
287 | + /> | |
288 | + </> | |
289 | + ); | |
290 | +}; | ... | ... |
src/pages/Instalment/components/read/readProduct.tsx
0 → 100644
1 | +import type { ProColumns } from '@ant-design/pro-components'; | |
2 | +import { EditableProTable, ProFormRadio } from '@ant-design/pro-components'; | |
3 | +import { Form } from 'antd'; | |
4 | +import React, { useEffect, useState } from 'react'; | |
5 | + | |
6 | +const waitTime = (time: number = 100) => { | |
7 | + return new Promise((resolve) => { | |
8 | + setTimeout(() => { | |
9 | + resolve(true); | |
10 | + }, time); | |
11 | + }); | |
12 | +}; | |
13 | + | |
14 | +// type DataSourceType = { | |
15 | +// count?: number; | |
16 | +// id: React.Key; | |
17 | +// deviceModel?: string; | |
18 | +// deviceName?: string; | |
19 | +// price?: number; | |
20 | +// unitPrice?: number; | |
21 | +// }; | |
22 | + | |
23 | +export default ({ productBody, EditProductBody }) => { | |
24 | + const [editableKeys, setEditableRowKeys] = useState<React.Key[]>([]); | |
25 | + const [dataSource, setDataSource] = useState<readonly DataSourceType[]>([]); | |
26 | + const [form] = Form.useForm<{ name: string; company: string }>(); | |
27 | + const [position, setPosition] = useState<'top' | 'bottom' | 'hidden'>( | |
28 | + 'hidden', | |
29 | + ); | |
30 | + function getDataSourece() { | |
31 | + if (productBody.length !== 0) { | |
32 | + setDataSource(productBody); | |
33 | + } | |
34 | + } | |
35 | + function setEditProductBody(value) { | |
36 | + const modifiedArray = value.map((obj) => { | |
37 | + if (obj.dId && Number(obj.dId) <= 1000) { | |
38 | + return { | |
39 | + ...obj, | |
40 | + count: obj.count, | |
41 | + dId: null, | |
42 | + deviceModel: obj.deviceModel, | |
43 | + deviceName: obj.deviceName, | |
44 | + price: obj.price, | |
45 | + unitPrice: obj.unitPrice, | |
46 | + }; | |
47 | + } else { | |
48 | + return obj; | |
49 | + } | |
50 | + }); | |
51 | + | |
52 | + EditProductBody(modifiedArray); | |
53 | + setDataSource(value); | |
54 | + } | |
55 | + | |
56 | + useEffect(() => { | |
57 | + getDataSourece(); | |
58 | + }, [productBody]); | |
59 | + | |
60 | + type DataSourceType = { | |
61 | + id: React.Key; | |
62 | + count: number; | |
63 | + dId?: number; | |
64 | + deviceModel: string; | |
65 | + deviceName: string; | |
66 | + price: number; | |
67 | + unitPrice: number; | |
68 | + }; | |
69 | + | |
70 | + const columns: ProColumns<DataSourceType>[] = [ | |
71 | + { | |
72 | + title: '设备编号', | |
73 | + dataIndex: 'dId', | |
74 | + hideInTable: true, | |
75 | + }, | |
76 | + { | |
77 | + title: '设备名称', | |
78 | + dataIndex: 'deviceName', | |
79 | + formItemProps: () => { | |
80 | + return { | |
81 | + rules: [{ required: true, message: '此项为必填项' }], | |
82 | + }; | |
83 | + }, | |
84 | + }, | |
85 | + { | |
86 | + title: '设备型号', | |
87 | + dataIndex: 'deviceModel', | |
88 | + width: '15%', | |
89 | + formItemProps: () => { | |
90 | + return { | |
91 | + rules: [{ required: true, message: '此项为必填项' }], | |
92 | + }; | |
93 | + }, | |
94 | + }, | |
95 | + { | |
96 | + title: '数量', | |
97 | + dataIndex: 'count', | |
98 | + onChange: (e) => { | |
99 | + const unitPrice = form.getFieldValue(`data[${rowIndex}].unitPrice`); | |
100 | + form.setFieldsValue({ | |
101 | + [`data[${rowIndex}].price`]: e * unitPrice, | |
102 | + }); | |
103 | + }, | |
104 | + formItemProps: () => { | |
105 | + return { | |
106 | + rules: [{ required: true, message: '此项为必填项' }], | |
107 | + }; | |
108 | + }, | |
109 | + }, | |
110 | + { | |
111 | + title: '单价', | |
112 | + dataIndex: 'unitPrice', | |
113 | + formItemProps: () => { | |
114 | + return { | |
115 | + rules: [{ required: true, message: '此项为必填项' }], | |
116 | + }; | |
117 | + }, | |
118 | + }, | |
119 | + { | |
120 | + title: '总价', | |
121 | + dataIndex: 'price', | |
122 | + formItemProps: () => { | |
123 | + return { | |
124 | + rules: [{ required: true, message: '此项为必填项' }], | |
125 | + }; | |
126 | + }, | |
127 | + }, | |
128 | + ]; | |
129 | + | |
130 | + return ( | |
131 | + <> | |
132 | + <EditableProTable<DataSourceType> | |
133 | + className="product-detail-index" | |
134 | + rowKey="dId" | |
135 | + toolbar={{ style: { display: 'none' } }} | |
136 | + ghost={true} | |
137 | + scroll={{ | |
138 | + x: 960, | |
139 | + }} | |
140 | + recordCreatorProps={ | |
141 | + position !== 'hidden' | |
142 | + ? { | |
143 | + position: position as 'top', | |
144 | + record: () => ({ dId: (Math.random() * 1000).toFixed(0) }), | |
145 | + } | |
146 | + : false | |
147 | + } | |
148 | + loading={false} | |
149 | + toolBarRender={() => [ | |
150 | + <ProFormRadio.Group | |
151 | + key="render" | |
152 | + fieldProps={{ | |
153 | + value: position, | |
154 | + onChange: (e) => setPosition(e.target.value), | |
155 | + }} | |
156 | + />, | |
157 | + ]} | |
158 | + columns={columns} | |
159 | + request={dataSource} | |
160 | + value={dataSource} | |
161 | + onChange={setEditProductBody} | |
162 | + editable={{ | |
163 | + type: 'multiple', | |
164 | + editableKeys, | |
165 | + onSave: async () => { | |
166 | + await waitTime(500); | |
167 | + }, | |
168 | + onChange: setEditableRowKeys, | |
169 | + }} | |
170 | + /> | |
171 | + </> | |
172 | + ); | |
173 | +}; | ... | ... |
src/pages/Instalment/components/title/title.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 | +// .titleSpan{ | |
14 | +// font-weight: bold; | |
15 | +// width: 100px; | |
16 | +// } | |
17 | + | |
18 | +// .Btn{ | |
19 | +// background: '#0092ff'; | |
20 | +// padding: '8px 0'; | |
21 | +// display: flex; | |
22 | +// flex-flow: row nowrap; | |
23 | +// // flex-direction: row; | |
24 | +// // flex-wrap: nowrap; | |
25 | +// align-content: normal; | |
26 | +// align-items: center; | |
27 | +// padding-bottom: 20px; | |
28 | +// justify-content: space-between; | |
29 | +// width: 160px; | |
30 | +// } | |
31 | + | |
32 | +.title-index td { | |
33 | + font-family: 'San Francisco', 'Helvetica Neue', Helvetica, Arial, | |
34 | + 'Microsoft YaHei', 'PingFang SC', 'Hiragino Sans GB', 'Heiti SC', | |
35 | + 'WenQuanYi Micro Hei', sans-serif; | |
36 | + font-size: 14px; | |
37 | +} | ... | ... |
src/pages/Instalment/components/title/title.tsx
0 → 100644
1 | +import { | |
2 | + deleteOrderErpOrderStagesDelect, | |
3 | + getOrderErpOrderStagesListAll, | |
4 | + postOrderErpOrderStagesSearch, | |
5 | +} from '@/services'; | |
6 | +import { orderExport } from '@/services/order'; | |
7 | +import { VerticalAlignTopOutlined } from '@ant-design/icons'; | |
8 | +import type { ProColumns } from '@ant-design/pro-components'; | |
9 | +import { ProTable } from '@ant-design/pro-components'; | |
10 | +import { Button, message } from 'antd'; | |
11 | +import { useRef } from 'react'; | |
12 | +import Comfire from '../comfire/comfire'; | |
13 | +import AddModel from '../detail/detail'; | |
14 | +import EditorModel from '../edit/edit'; | |
15 | +import ReadModel from '../read/read'; | |
16 | +import UploadModel from '../upload/uploadModel'; | |
17 | +import './title.less'; | |
18 | +export const waitTimePromise = async (time: number = 100) => { | |
19 | + return new Promise((resolve) => { | |
20 | + setTimeout(() => { | |
21 | + resolve(true); | |
22 | + }, time); | |
23 | + }); | |
24 | +}; | |
25 | + | |
26 | +export const waitTime = async (time: number = 100) => { | |
27 | + await waitTimePromise(time); | |
28 | +}; | |
29 | + | |
30 | +type OrderStagesItem = { | |
31 | + //文件编号 | |
32 | + id?: number; | |
33 | + //合同编号 | |
34 | + contract?: string; | |
35 | + //供应商名称 | |
36 | + vendor?: string; | |
37 | + //签合同日期 | |
38 | + dateRange?: Date; | |
39 | + //终端名称 | |
40 | + terminal?: string; | |
41 | + //设备编号 | |
42 | + dId?: number; | |
43 | + //设备名称 | |
44 | + deviceName?: string; | |
45 | + //设备型号 | |
46 | + deviceModel?: string; | |
47 | + //数量 | |
48 | + count?: number; | |
49 | + //单价 | |
50 | + unitPrice?: number; | |
51 | + //总价 | |
52 | + price?: number; | |
53 | + //合同总金额 | |
54 | + totalPrice?: number; | |
55 | + //付款方式 | |
56 | + payWay?: string; | |
57 | + //附件 | |
58 | + annex?: string; | |
59 | + //备注 | |
60 | + remark?: string; | |
61 | +}; | |
62 | + | |
63 | +type OrderStagesWithListItem = { | |
64 | + //文件编号 | |
65 | + id: number; | |
66 | + //合同编号 | |
67 | + contract: string; | |
68 | + //供应商名称 | |
69 | + vendor: string; | |
70 | + //签合同日期 | |
71 | + dateRange: Date; | |
72 | + //终端名称 | |
73 | + terminal: string; | |
74 | + orderStagesDeviceVoList: orderStagesDevice[]; | |
75 | + //合同总金额 | |
76 | + totalPrice: number; | |
77 | + //付款方式 | |
78 | + payWay: string; | |
79 | + //附件 | |
80 | + annex: string; | |
81 | + //备注 | |
82 | + remark: string; | |
83 | +}; | |
84 | + | |
85 | +type orderStagesDevice = { | |
86 | + //设备id | |
87 | + dId: number; | |
88 | + //设备名称 | |
89 | + deviceName: string; | |
90 | + //设备型号 | |
91 | + deviceModel: string; | |
92 | + //数量 | |
93 | + count: number; | |
94 | + //单价 | |
95 | + unitPrice: number; | |
96 | + //总价 | |
97 | + price: number; | |
98 | +}; | |
99 | + | |
100 | +export default () => { | |
101 | + // const actionRef = useRef<ActionType>(); | |
102 | + // const [TableItem, setTableItem] = useState([]); | |
103 | + | |
104 | + interface ActionType { | |
105 | + reload: (resetPageIndex?: boolean) => void; | |
106 | + reloadAndRest: () => void; | |
107 | + reset: () => void; | |
108 | + clearSelected?: () => void; | |
109 | + startEditable: (rowKey: Key) => boolean; | |
110 | + cancelEditable: (rowKey: Key) => boolean; | |
111 | + } | |
112 | + | |
113 | + const ref = useRef<ActionType>({ | |
114 | + reload: () => { | |
115 | + // implementation for reload | |
116 | + }, | |
117 | + reloadAndRest: () => { | |
118 | + // implementation for reloadAndRest | |
119 | + }, | |
120 | + reset: () => { | |
121 | + // implementation for reset | |
122 | + }, | |
123 | + startEditable: () => { | |
124 | + // implementation for startEditable | |
125 | + }, | |
126 | + cancelEditable: () => { | |
127 | + // implementation for cancelEditable | |
128 | + }, | |
129 | + }); | |
130 | + | |
131 | + function reload() { | |
132 | + ref.current.reload(); | |
133 | + } | |
134 | + | |
135 | + async function toDelete(value) { | |
136 | + const res = await deleteOrderErpOrderStagesDelect({ | |
137 | + data: { | |
138 | + ids: null, | |
139 | + deviceIds: value, | |
140 | + }, | |
141 | + }); | |
142 | + if (res) { | |
143 | + message.success('删除成功'); | |
144 | + ref.current.reload(); | |
145 | + } else { | |
146 | + message.error('删除失败'); | |
147 | + } | |
148 | + } | |
149 | + | |
150 | + const exportLoadingDestory = () => { | |
151 | + message.success('导出成功'); | |
152 | + }; | |
153 | + | |
154 | + async function toExport() { | |
155 | + // await getOrderErpOrderStagesExport() | |
156 | + orderExport( | |
157 | + '/api/order/erp/orderStages/export', | |
158 | + '分期订单.xlsx', | |
159 | + 'get', | |
160 | + {}, | |
161 | + exportLoadingDestory, | |
162 | + ); | |
163 | + } | |
164 | + | |
165 | + const columns: ProColumns<OrderStagesItem>[] = [ | |
166 | + { | |
167 | + title: '文件编号', | |
168 | + dataIndex: 'id', | |
169 | + width: '7%', | |
170 | + render: (_, record) => { | |
171 | + if (record.id) { | |
172 | + const text = record.id.toString(); | |
173 | + const paddedText = '0'.repeat(4 - text.length) + text; | |
174 | + return paddedText; | |
175 | + } | |
176 | + }, | |
177 | + }, | |
178 | + { | |
179 | + title: '签合同日期', | |
180 | + dataIndex: 'dateRange', | |
181 | + valueType: 'date', | |
182 | + filters: true, | |
183 | + onFilter: true, | |
184 | + ellipsis: true, | |
185 | + width: '8%', | |
186 | + }, | |
187 | + { | |
188 | + disable: true, | |
189 | + title: '合同编号', | |
190 | + dataIndex: 'contract', | |
191 | + filters: true, | |
192 | + onFilter: true, | |
193 | + ellipsis: true, | |
194 | + width: '9%', | |
195 | + }, | |
196 | + { | |
197 | + disable: true, | |
198 | + title: '供应商名称', | |
199 | + dataIndex: 'vendor', | |
200 | + filters: true, | |
201 | + onFilter: true, | |
202 | + ellipsis: true, | |
203 | + }, | |
204 | + { | |
205 | + disable: true, | |
206 | + title: '终端名称', | |
207 | + dataIndex: 'terminal', | |
208 | + filters: true, | |
209 | + onFilter: true, | |
210 | + ellipsis: true, | |
211 | + width: '6%', | |
212 | + }, | |
213 | + { | |
214 | + disable: true, | |
215 | + title: '设备名称', | |
216 | + dataIndex: 'deviceName', | |
217 | + filters: true, | |
218 | + onFilter: true, | |
219 | + ellipsis: true, | |
220 | + }, | |
221 | + { | |
222 | + disable: true, | |
223 | + title: '设备型号', | |
224 | + dataIndex: 'deviceModel', | |
225 | + filters: true, | |
226 | + hideInSearch: true, | |
227 | + onFilter: false, | |
228 | + ellipsis: true, | |
229 | + width: '10%', | |
230 | + }, | |
231 | + { | |
232 | + disable: true, | |
233 | + title: '数量', | |
234 | + dataIndex: 'count', | |
235 | + filters: true, | |
236 | + hideInSearch: true, | |
237 | + onFilter: false, | |
238 | + ellipsis: true, | |
239 | + width: '4%', | |
240 | + }, | |
241 | + { | |
242 | + disable: true, | |
243 | + title: '单价', | |
244 | + dataIndex: 'unitPrice', | |
245 | + filters: true, | |
246 | + hideInSearch: true, | |
247 | + onFilter: false, | |
248 | + ellipsis: true, | |
249 | + width: '5%', | |
250 | + }, | |
251 | + { | |
252 | + disable: true, | |
253 | + title: '总价', | |
254 | + dataIndex: 'price', | |
255 | + filters: true, | |
256 | + hideInSearch: true, | |
257 | + onFilter: false, | |
258 | + ellipsis: true, | |
259 | + width: '5%', | |
260 | + }, | |
261 | + { | |
262 | + disable: true, | |
263 | + title: '合同总金额', | |
264 | + dataIndex: 'totalPrice', | |
265 | + filters: true, | |
266 | + hideInSearch: true, | |
267 | + onFilter: false, | |
268 | + ellipsis: true, | |
269 | + width: '6%', | |
270 | + }, | |
271 | + { | |
272 | + disable: true, | |
273 | + title: '付款方式', | |
274 | + dataIndex: 'payWay', | |
275 | + filters: true, | |
276 | + hideInSearch: true, | |
277 | + onFilter: false, | |
278 | + ellipsis: true, | |
279 | + }, | |
280 | + { | |
281 | + disable: true, | |
282 | + title: '附件', | |
283 | + dataIndex: 'annex', | |
284 | + filters: true, | |
285 | + hideInSearch: true, | |
286 | + onFilter: false, | |
287 | + ellipsis: true, | |
288 | + width: '5%', | |
289 | + render: (_, record) => { | |
290 | + if (record.id) { | |
291 | + return <a href={record.annex}>{record.annex}</a>; | |
292 | + } | |
293 | + }, | |
294 | + }, | |
295 | + { | |
296 | + disable: true, | |
297 | + title: '备注', | |
298 | + dataIndex: 'remark', | |
299 | + filters: true, | |
300 | + hideInSearch: true, | |
301 | + onFilter: false, | |
302 | + ellipsis: true, | |
303 | + width: '5%', | |
304 | + }, | |
305 | + { | |
306 | + title: '操作', | |
307 | + valueType: 'option', | |
308 | + key: 'option', | |
309 | + width: '10%', | |
310 | + render: (_text, record) => { | |
311 | + if (record?.id) { | |
312 | + return ( | |
313 | + <> | |
314 | + <ReadModel currentContract={record.contract}></ReadModel> | |
315 | + | |
316 | + <EditorModel | |
317 | + currentContract={record.contract} | |
318 | + toReload={reload} | |
319 | + ></EditorModel> | |
320 | + | |
321 | + {/* <a key="delect" target="_blank" rel="noopener noreferrer" onClick={() => { toDelete([record.dId]) }}> | |
322 | + 删除 | |
323 | + </a> */} | |
324 | + <Comfire currtDid={record.dId} sureDelete={toDelete}></Comfire> | |
325 | + </> | |
326 | + ); | |
327 | + } | |
328 | + return null; | |
329 | + }, | |
330 | + }, | |
331 | + ]; | |
332 | + | |
333 | + return ( | |
334 | + <ProTable<OrderStagesItem> | |
335 | + className="title-index" | |
336 | + columnEmptyText="" | |
337 | + columns={columns} | |
338 | + actionRef={ref} | |
339 | + cardBordered | |
340 | + request={async (params) => { | |
341 | + // console.log(params); | |
342 | + if ( | |
343 | + params.id !== null || | |
344 | + params.contract !== null || | |
345 | + params.vendor !== null || | |
346 | + params.terminal !== null || | |
347 | + params.deviceName !== null || | |
348 | + params.dateRange !== null | |
349 | + ) { | |
350 | + // console.log(params.id); | |
351 | + // console.log(params.contract); | |
352 | + // console.log(params.vendor); | |
353 | + let PostOrderErpOrderStagesSearchOption = { | |
354 | + id: params.id, | |
355 | + contract: params.contract, | |
356 | + vendor: params.vendor, | |
357 | + terminal: params.terminal, | |
358 | + deviceName: params.deviceName, | |
359 | + dateRange: params.dateRange, | |
360 | + }; | |
361 | + let res = await postOrderErpOrderStagesSearch({ | |
362 | + data: { ...PostOrderErpOrderStagesSearchOption }, | |
363 | + }); | |
364 | + await waitTime(2000); | |
365 | + if (res) { | |
366 | + // setTableItem(res.data) | |
367 | + const orderStagesWithList: OrderStagesWithListItem[] = res?.data; | |
368 | + let orderStagesList: OrderStagesItem[] = []; | |
369 | + for (let ind = 0; ind < orderStagesWithList.length; ind++) { | |
370 | + for ( | |
371 | + let index = 0; | |
372 | + index < orderStagesWithList[ind].orderStagesDeviceVoList.length; | |
373 | + index++ | |
374 | + ) { | |
375 | + let item: OrderStagesItem = { | |
376 | + id: undefined, | |
377 | + contract: undefined, | |
378 | + vendor: undefined, | |
379 | + dateRange: undefined, | |
380 | + terminal: undefined, | |
381 | + dId: undefined, | |
382 | + deviceName: undefined, | |
383 | + deviceModel: undefined, | |
384 | + count: undefined, | |
385 | + unitPrice: undefined, | |
386 | + price: undefined, | |
387 | + totalPrice: undefined, | |
388 | + payWay: undefined, | |
389 | + annex: undefined, | |
390 | + remark: undefined, | |
391 | + }; | |
392 | + if (index === 0) { | |
393 | + item.id = orderStagesWithList[ind].id; | |
394 | + item.contract = orderStagesWithList[ind].contract; | |
395 | + item.vendor = orderStagesWithList[ind].vendor; | |
396 | + item.dateRange = orderStagesWithList[ind].dateRange; | |
397 | + item.terminal = orderStagesWithList[ind].terminal; | |
398 | + item.dId = | |
399 | + orderStagesWithList[ind].orderStagesDeviceVoList[index].dId; | |
400 | + item.deviceName = | |
401 | + orderStagesWithList[ind].orderStagesDeviceVoList[ | |
402 | + index | |
403 | + ].deviceName; | |
404 | + item.deviceModel = | |
405 | + orderStagesWithList[ind].orderStagesDeviceVoList[ | |
406 | + index | |
407 | + ].deviceModel; | |
408 | + item.count = | |
409 | + orderStagesWithList[ind].orderStagesDeviceVoList[ | |
410 | + index | |
411 | + ].count; | |
412 | + item.unitPrice = | |
413 | + orderStagesWithList[ind].orderStagesDeviceVoList[ | |
414 | + index | |
415 | + ].unitPrice; | |
416 | + item.price = | |
417 | + orderStagesWithList[ind].orderStagesDeviceVoList[ | |
418 | + index | |
419 | + ].price; | |
420 | + item.totalPrice = orderStagesWithList[ind].totalPrice; | |
421 | + item.payWay = orderStagesWithList[ind].payWay; | |
422 | + item.annex = orderStagesWithList[ind].annex; | |
423 | + item.remark = orderStagesWithList[ind].remark; | |
424 | + orderStagesList.push(item); | |
425 | + } else { | |
426 | + item.id = orderStagesWithList[ind].id; | |
427 | + item.contract = orderStagesWithList[ind].contract; | |
428 | + item.vendor = orderStagesWithList[ind].vendor; | |
429 | + item.dateRange = orderStagesWithList[ind].dateRange; | |
430 | + item.terminal = orderStagesWithList[ind].terminal; | |
431 | + item.dId = | |
432 | + orderStagesWithList[ind].orderStagesDeviceVoList[index].dId; | |
433 | + item.deviceName = | |
434 | + orderStagesWithList[ind].orderStagesDeviceVoList[ | |
435 | + index | |
436 | + ].deviceName; | |
437 | + item.deviceModel = | |
438 | + orderStagesWithList[ind].orderStagesDeviceVoList[ | |
439 | + index | |
440 | + ].deviceModel; | |
441 | + item.count = | |
442 | + orderStagesWithList[ind].orderStagesDeviceVoList[ | |
443 | + index | |
444 | + ].count; | |
445 | + item.unitPrice = | |
446 | + orderStagesWithList[ind].orderStagesDeviceVoList[ | |
447 | + index | |
448 | + ].unitPrice; | |
449 | + item.price = | |
450 | + orderStagesWithList[ind].orderStagesDeviceVoList[ | |
451 | + index | |
452 | + ].price; | |
453 | + item.totalPrice = orderStagesWithList[ind].totalPrice; | |
454 | + item.payWay = orderStagesWithList[ind].payWay; | |
455 | + item.annex = orderStagesWithList[ind].annex; | |
456 | + item.remark = orderStagesWithList[ind].remark; | |
457 | + orderStagesList.push(item); | |
458 | + } | |
459 | + } | |
460 | + } | |
461 | + return { | |
462 | + data: orderStagesList || [], | |
463 | + }; | |
464 | + } | |
465 | + } else { | |
466 | + let res = await getOrderErpOrderStagesListAll(); | |
467 | + await waitTime(2000); | |
468 | + if (res) { | |
469 | + // setTableItem(res.data) | |
470 | + const orderStagesWithList: OrderStagesWithListItem[] = res?.data; | |
471 | + let orderStagesList: OrderStagesItem[] = []; | |
472 | + for (let ind = 0; ind < orderStagesWithList.length; ind++) { | |
473 | + for ( | |
474 | + let index = 0; | |
475 | + index < orderStagesWithList[ind].orderStagesDeviceVoList.length; | |
476 | + index++ | |
477 | + ) { | |
478 | + let item: OrderStagesItem = { | |
479 | + id: undefined, | |
480 | + contract: undefined, | |
481 | + vendor: undefined, | |
482 | + dateRange: undefined, | |
483 | + terminal: undefined, | |
484 | + dId: undefined, | |
485 | + deviceName: undefined, | |
486 | + deviceModel: undefined, | |
487 | + count: undefined, | |
488 | + unitPrice: undefined, | |
489 | + price: undefined, | |
490 | + totalPrice: undefined, | |
491 | + payWay: undefined, | |
492 | + annex: undefined, | |
493 | + remark: undefined, | |
494 | + }; | |
495 | + if (index === 0) { | |
496 | + item.id = orderStagesWithList[ind].id; | |
497 | + item.contract = orderStagesWithList[ind].contract; | |
498 | + item.vendor = orderStagesWithList[ind].vendor; | |
499 | + item.dateRange = orderStagesWithList[ind].dateRange; | |
500 | + item.terminal = orderStagesWithList[ind].terminal; | |
501 | + item.dId = | |
502 | + orderStagesWithList[ind].orderStagesDeviceVoList[index].dId; | |
503 | + item.deviceName = | |
504 | + orderStagesWithList[ind].orderStagesDeviceVoList[ | |
505 | + index | |
506 | + ].deviceName; | |
507 | + item.deviceModel = | |
508 | + orderStagesWithList[ind].orderStagesDeviceVoList[ | |
509 | + index | |
510 | + ].deviceModel; | |
511 | + item.count = | |
512 | + orderStagesWithList[ind].orderStagesDeviceVoList[ | |
513 | + index | |
514 | + ].count; | |
515 | + item.unitPrice = | |
516 | + orderStagesWithList[ind].orderStagesDeviceVoList[ | |
517 | + index | |
518 | + ].unitPrice; | |
519 | + item.price = | |
520 | + orderStagesWithList[ind].orderStagesDeviceVoList[ | |
521 | + index | |
522 | + ].price; | |
523 | + item.totalPrice = orderStagesWithList[ind].totalPrice; | |
524 | + item.payWay = orderStagesWithList[ind].payWay; | |
525 | + item.annex = orderStagesWithList[ind].annex; | |
526 | + item.remark = orderStagesWithList[ind].remark; | |
527 | + orderStagesList.push(item); | |
528 | + } else { | |
529 | + item.id = orderStagesWithList[ind].id; | |
530 | + item.contract = orderStagesWithList[ind].contract; | |
531 | + item.vendor = orderStagesWithList[ind].vendor; | |
532 | + item.dateRange = orderStagesWithList[ind].dateRange; | |
533 | + item.terminal = orderStagesWithList[ind].terminal; | |
534 | + item.dId = | |
535 | + orderStagesWithList[ind].orderStagesDeviceVoList[index].dId; | |
536 | + item.deviceName = | |
537 | + orderStagesWithList[ind].orderStagesDeviceVoList[ | |
538 | + index | |
539 | + ].deviceName; | |
540 | + item.deviceModel = | |
541 | + orderStagesWithList[ind].orderStagesDeviceVoList[ | |
542 | + index | |
543 | + ].deviceModel; | |
544 | + item.count = | |
545 | + orderStagesWithList[ind].orderStagesDeviceVoList[ | |
546 | + index | |
547 | + ].count; | |
548 | + item.unitPrice = | |
549 | + orderStagesWithList[ind].orderStagesDeviceVoList[ | |
550 | + index | |
551 | + ].unitPrice; | |
552 | + item.price = | |
553 | + orderStagesWithList[ind].orderStagesDeviceVoList[ | |
554 | + index | |
555 | + ].price; | |
556 | + item.totalPrice = orderStagesWithList[ind].totalPrice; | |
557 | + item.payWay = orderStagesWithList[ind].payWay; | |
558 | + item.annex = orderStagesWithList[ind].annex; | |
559 | + item.remark = orderStagesWithList[ind].remark; | |
560 | + orderStagesList.push(item); | |
561 | + } | |
562 | + } | |
563 | + } | |
564 | + return { | |
565 | + data: orderStagesList || [], | |
566 | + }; | |
567 | + } | |
568 | + } | |
569 | + }} | |
570 | + editable={{ | |
571 | + type: 'multiple', | |
572 | + }} | |
573 | + columnsState={{ | |
574 | + persistenceKey: 'pro-table-singe-demos', | |
575 | + persistenceType: 'localStorage', | |
576 | + defaultValue: { | |
577 | + option: { fixed: 'right', disable: true }, | |
578 | + }, | |
579 | + // onChange(value) { | |
580 | + // console.log('value: ', value); | |
581 | + // }, | |
582 | + }} | |
583 | + rowKey="dId" | |
584 | + search={{ | |
585 | + labelWidth: 'auto', | |
586 | + }} | |
587 | + options={{ | |
588 | + setting: { | |
589 | + listsHeight: 800, | |
590 | + }, | |
591 | + }} | |
592 | + form={{ | |
593 | + syncToUrl: (values, type) => { | |
594 | + if (type === 'get') { | |
595 | + return { | |
596 | + ...values, | |
597 | + created_at: [values.startTime, values.endTime], | |
598 | + }; | |
599 | + } | |
600 | + return values; | |
601 | + }, | |
602 | + }} | |
603 | + pagination={{ | |
604 | + pageSize: 10, | |
605 | + // onChange: (page) => console.log(page), | |
606 | + }} | |
607 | + dateFormatter="string" | |
608 | + headerTitle={[]} | |
609 | + toolBarRender={() => [ | |
610 | + <> | |
611 | + <AddModel toReload={reload}></AddModel> | |
612 | + <UploadModel toReload={reload}></UploadModel> | |
613 | + <Button | |
614 | + type="primary" | |
615 | + onClick={() => { | |
616 | + toExport(); | |
617 | + }} | |
618 | + > | |
619 | + <VerticalAlignTopOutlined /> | |
620 | + 导出 | |
621 | + </Button> | |
622 | + </>, | |
623 | + ]} | |
624 | + /> | |
625 | + ); | |
626 | +}; | ... | ... |
src/pages/Instalment/components/upload/uploadApp.tsx
0 → 100644
1 | +import { InboxOutlined } from '@ant-design/icons'; | |
2 | +import { Upload } from 'antd'; | |
3 | +import React from 'react'; | |
4 | + | |
5 | +const App: React.FC = ({ uploadFile }) => { | |
6 | + const { Dragger } = Upload; | |
7 | + | |
8 | + const props = { | |
9 | + name: 'file', | |
10 | + multiple: true, | |
11 | + maxCount: 1, | |
12 | + onChange: (info) => { | |
13 | + uploadFile(info.file.originFileObj); | |
14 | + }, | |
15 | + }; | |
16 | + | |
17 | + return ( | |
18 | + <Dragger {...props}> | |
19 | + <p className="ant-upload-drag-icon"> | |
20 | + <InboxOutlined /> | |
21 | + </p> | |
22 | + <p className="ant-upload-text"> | |
23 | + Click or drag file to this area to upload | |
24 | + </p> | |
25 | + <p className="ant-upload-hint"> | |
26 | + Support for a single or bulk upload. Strictly prohibited from uploading | |
27 | + company data or other banned files. | |
28 | + </p> | |
29 | + </Dragger> | |
30 | + ); | |
31 | +}; | |
32 | + | |
33 | +export default App; | ... | ... |
src/pages/Instalment/components/upload/uploadModel.tsx
0 → 100644
1 | +import { postOrderErpOrderStagesImport } from '@/services/request'; | |
2 | +import { VerticalAlignBottomOutlined } from '@ant-design/icons'; | |
3 | +import { ModalForm } from '@ant-design/pro-components'; | |
4 | +import { Button, Form, message } from 'antd'; | |
5 | +import { RcFile } from 'antd/es/upload'; | |
6 | +import { useState } from 'react'; | |
7 | +import App from './uploadApp'; | |
8 | + | |
9 | +// const waitTime = (time: number = 100) => { | |
10 | +// return new Promise((resolve) => { | |
11 | +// setTimeout(() => { | |
12 | +// resolve(true); | |
13 | +// }, time); | |
14 | +// }); | |
15 | +// }; | |
16 | + | |
17 | +export default ({ toReload }) => { | |
18 | + const [form] = Form.useForm<{ name: string; company: string }>(); | |
19 | + const [uploadFile, setUploadFile] = useState({}); | |
20 | + // function setUploadFileWay(value) { | |
21 | + // setUploadFile(value) | |
22 | + // } | |
23 | + return ( | |
24 | + <ModalForm<{ | |
25 | + name: string; | |
26 | + company: string; | |
27 | + }> | |
28 | + title="新建表单" | |
29 | + trigger={ | |
30 | + <Button type="primary"> | |
31 | + <VerticalAlignBottomOutlined /> | |
32 | + 导入 | |
33 | + </Button> | |
34 | + } | |
35 | + form={form} | |
36 | + autoFocusFirstInput | |
37 | + modalProps={{ | |
38 | + destroyOnClose: true, | |
39 | + }} | |
40 | + submitTimeout={2000} | |
41 | + onFinish={async () => { | |
42 | + const formData = new FormData(); | |
43 | + formData.append('file', uploadFile as RcFile); | |
44 | + const res = await postOrderErpOrderStagesImport({ | |
45 | + data: formData, | |
46 | + headers: { | |
47 | + 'Content-Type': | |
48 | + 'multipart/form-data; boundary=----WebKitFormBoundarynl6gT1BKdPWIejNq', | |
49 | + }, | |
50 | + }); | |
51 | + if (res) { | |
52 | + message.success('提交成功'); | |
53 | + toReload(); | |
54 | + return true; | |
55 | + } | |
56 | + }} | |
57 | + > | |
58 | + <App uploadFile={setUploadFile}></App> | |
59 | + </ModalForm> | |
60 | + ); | |
61 | +}; | ... | ... |
src/pages/Instalment/index.tsx
0 → 100644
src/pages/Order/components/CheckModal.tsx
src/pages/Order/components/ImportModal.tsx
... | ... | @@ -26,7 +26,13 @@ export default ({ onClose }) => { |
26 | 26 | }; |
27 | 27 | const downloadTemplate = async () => { |
28 | 28 | exportLoading('正在下载模板...'); |
29 | - orderExport('/api/service/order/exportTemplate', {}, exportLoadingDestory); | |
29 | + orderExport( | |
30 | + '/api/service/order/exportTemplate', | |
31 | + '订单.xlsx', | |
32 | + 'post', | |
33 | + {}, | |
34 | + exportLoadingDestory, | |
35 | + ); | |
30 | 36 | }; |
31 | 37 | |
32 | 38 | const handleUpload = async () => { |
... | ... | @@ -59,6 +65,8 @@ export default ({ onClose }) => { |
59 | 65 | exportLoading('正在下载错误信息...'); |
60 | 66 | orderExport( |
61 | 67 | '/api/service/order/errorExcelInformation', |
68 | + '订单.xlsx', | |
69 | + 'post', | |
62 | 70 | formData, |
63 | 71 | exportLoadingDestory, |
64 | 72 | ); | ... | ... |
src/pages/Order/components/ModifiedDiffModal.tsx
1 | 1 | import { postServiceOrderModifiedDiff } from '@/services'; |
2 | -import { | |
3 | - enumValueToLabel, | |
4 | - getAliYunOSSFileNameFromUrl, | |
5 | - getUserInfo, | |
6 | -} from '@/utils'; | |
2 | +import { enumValueToLabel, getAliYunOSSFileNameFromUrl } from '@/utils'; | |
7 | 3 | import { getReceivingCompanyOptions, isSupplier } from '@/utils/order'; |
8 | 4 | import { Button, Divider, Modal, Space, Table, TableProps } from 'antd'; |
9 | -import Base64 from 'base-64'; | |
10 | 5 | import { useEffect, useState } from 'react'; |
11 | 6 | import { |
12 | 7 | PAYEE_OPTIONS, |
8 | + PAYMENT_CHANNEL_OPTIONS, | |
9 | + PAYMENT_METHOD_OPTIONS, | |
13 | 10 | PRODUCT_BELONG_DEPARTMENT_OPTIONS, |
14 | 11 | SHIPPING_WAREHOUSE_OPTIONS, |
15 | 12 | } from '../constant'; |
16 | 13 | import '../table.less'; |
17 | 14 | |
18 | 15 | export default ({ setVisible, subOrders, mainOrder, onClose }) => { |
19 | - const userInfo = getUserInfo(); | |
20 | 16 | let subIds = subOrders?.map((item: any) => { |
21 | 17 | return item.id; |
22 | 18 | }); |
... | ... | @@ -77,6 +73,12 @@ export default ({ setVisible, subOrders, mainOrder, onClose }) => { |
77 | 73 | if (key === '发货仓库') { |
78 | 74 | newText = enumValueToLabel(text, SHIPPING_WAREHOUSE_OPTIONS); |
79 | 75 | } |
76 | + if (key === '支付渠道') { | |
77 | + newText = enumValueToLabel(text, PAYMENT_CHANNEL_OPTIONS); | |
78 | + } | |
79 | + if (key === '支付方式') { | |
80 | + newText = enumValueToLabel(text, PAYMENT_METHOD_OPTIONS); | |
81 | + } | |
80 | 82 | if (key === '单价' || key === '合计') { |
81 | 83 | newText = '¥' + newText; |
82 | 84 | } |
... | ... | @@ -186,6 +188,8 @@ export default ({ setVisible, subOrders, mainOrder, onClose }) => { |
186 | 188 | ['productBelongBusiness', '所属事业部'], |
187 | 189 | ['shippingWarehouse', '发货仓库'], |
188 | 190 | ['notes', '备注'], |
191 | + ['paymentChannel', '支付渠道'], | |
192 | + ['paymentMethod', '支付方式'], | |
189 | 193 | ['listAnnex', '附件'], |
190 | 194 | ]; |
191 | 195 | for (let field of visibleFields) { |
... | ... | @@ -234,7 +238,6 @@ export default ({ setVisible, subOrders, mainOrder, onClose }) => { |
234 | 238 | ['institutionContactName', '单位联系人'], |
235 | 239 | ['institution', '单位'], |
236 | 240 | ['totalPayment', '支付总金额'], |
237 | - ['paymentChannel', '支付渠道'], | |
238 | 241 | ['notes', '备注'], |
239 | 242 | ['bank', '开户银行'], |
240 | 243 | ['bankAccountNumber', '银行账号'], | ... | ... |
src/pages/Order/components/OrderDrawer.tsx
1 | 1 | import { RESPONSE_CODE } from '@/constants/enum'; |
2 | 2 | import { |
3 | 3 | postCanrdApiUserAddressList, |
4 | - postCanrdApiUserList, | |
4 | + postCanrdApiUserDetail, | |
5 | + postCanrdApiUserNowMoneyCheck, | |
5 | 6 | postKingdeeRepCustomerDetail, |
6 | 7 | postKingdeeRepMaterial, |
7 | 8 | postKingdeeRepMaterialUnit, |
8 | 9 | postKingdeeRepMeasureUnit, |
10 | + postPrepaidPhoneAvailableList, | |
9 | 11 | postServiceOrderAddOrder, |
10 | 12 | postServiceOrderAfterSalesQuerySnapshotOrder, |
11 | 13 | postServiceOrderApplyAfterSales, |
12 | 14 | postServiceOrderApplyModify, |
13 | - postServiceOrderQuerySalesCode, | |
14 | 15 | postServiceOrderUpdateOrder, |
15 | 16 | } from '@/services'; |
16 | 17 | import { |
... | ... | @@ -22,6 +23,7 @@ import { |
22 | 23 | } from '@/utils'; |
23 | 24 | import { getDefaultString } from '@/utils/StringUtil'; |
24 | 25 | import { getTeacherCustomFieldNumber } from '@/utils/kingdee'; |
26 | +import { getSalesCodeOptions } from '@/utils/order'; | |
25 | 27 | import { |
26 | 28 | DrawerForm, |
27 | 29 | FormListActionType, |
... | ... | @@ -106,6 +108,7 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
106 | 108 | }, |
107 | 109 | ]; |
108 | 110 | }>(); |
111 | + const [accountOptions, setAccountOptions] = useState<any>([]); | |
109 | 112 | |
110 | 113 | let copyData = cloneDeep(data); |
111 | 114 | |
... | ... | @@ -122,15 +125,8 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
122 | 125 | /** |
123 | 126 | * 获取销售代码枚举,在复制和编辑的时候判断是否为旧的代码 |
124 | 127 | */ |
125 | - const getSalesCodeOptions = async () => { | |
126 | - const res = await postServiceOrderQuerySalesCode(); | |
127 | - let options = res.data?.map((item) => { | |
128 | - return { | |
129 | - label: item.userName, | |
130 | - value: item.userName, | |
131 | - number: item.number, | |
132 | - }; | |
133 | - }); | |
128 | + const loadSalesCodeOptions = async () => { | |
129 | + let options = await getSalesCodeOptions(); | |
134 | 130 | setSalesCodeOptions(options); |
135 | 131 | |
136 | 132 | if (optType('copy') || optType('edit')) { |
... | ... | @@ -236,6 +232,38 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
236 | 232 | // } |
237 | 233 | |
238 | 234 | /** |
235 | + * 加载预存账号的options | |
236 | + */ | |
237 | + async function loadAccountOptions(phone: any) { | |
238 | + let newAccountOptions = []; | |
239 | + //预存账号id | |
240 | + let uid = copyData.prepaidUid; | |
241 | + let res = await postCanrdApiUserDetail({ data: { uid: uid } }); | |
242 | + if (res && res.result === RESPONSE_CODE.SUCCESS && res.data !== null) { | |
243 | + let uidDetail = res.data; | |
244 | + uidDetail.value = uid; | |
245 | + uidDetail.label = uidDetail.realName; | |
246 | + newAccountOptions.push(uidDetail); | |
247 | + } | |
248 | + | |
249 | + //查询当前手机号允许使用的预存账号 | |
250 | + if (phone) { | |
251 | + let res = await postPrepaidPhoneAvailableList({ data: { phone: phone } }); | |
252 | + if (res && res.result === RESPONSE_CODE.SUCCESS) { | |
253 | + let uidDetails = res.data; | |
254 | + for (let detail of uidDetails) { | |
255 | + detail.value = detail.uid; | |
256 | + detail.label = detail.realName; | |
257 | + newAccountOptions.push(detail); | |
258 | + } | |
259 | + } | |
260 | + } | |
261 | + | |
262 | + console.log(newAccountOptions); | |
263 | + setAccountOptions(newAccountOptions); | |
264 | + } | |
265 | + | |
266 | + /** | |
239 | 267 | * 构建回显数据 |
240 | 268 | */ |
241 | 269 | function buildOrderData() { |
... | ... | @@ -303,6 +331,8 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
303 | 331 | if (!optType('after-sales-check')) { |
304 | 332 | // showKindeeInfo(); |
305 | 333 | } |
334 | + | |
335 | + loadAccountOptions(form.getFieldValue('customerContactNumber')); | |
306 | 336 | } |
307 | 337 | } |
308 | 338 | |
... | ... | @@ -524,6 +554,8 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
524 | 554 | getDefaultString(option.detail), |
525 | 555 | ); |
526 | 556 | form.setFieldValue('customerNameString', option.realName); |
557 | + | |
558 | + loadAccountOptions(option.phone); | |
527 | 559 | } |
528 | 560 | |
529 | 561 | //erp收货地址:需要与客户联系人中的地址一样:姓名,手机号,地址 |
... | ... | @@ -586,6 +618,56 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
586 | 618 | } |
587 | 619 | |
588 | 620 | /** |
621 | + * 检查用户额度 | |
622 | + * @param option | |
623 | + */ | |
624 | + const checkAccountMoney = async (uid: any, subPrice: any) => { | |
625 | + let res = await postCanrdApiUserNowMoneyCheck({ | |
626 | + data: { uid: uid, subPrice: subPrice }, | |
627 | + }); | |
628 | + if (res && res.result === RESPONSE_CODE.SUCCESS && res.data) { | |
629 | + let data = res.data; | |
630 | + let isCredit = data.isCredit; | |
631 | + if (isCredit) { | |
632 | + return true; | |
633 | + } | |
634 | + | |
635 | + message.error( | |
636 | + '用户余额不足,当前预减的金额为:' + | |
637 | + data.subPrice + | |
638 | + ',当前账号余额为:' + | |
639 | + data.nowMoney + | |
640 | + ',当前账号可赊账额度为:' + | |
641 | + data.creditLimit, | |
642 | + ); | |
643 | + return false; | |
644 | + } | |
645 | + | |
646 | + return false; | |
647 | + }; | |
648 | + | |
649 | + /** | |
650 | + * 总金额改变触发事件 | |
651 | + * 如果是预存单,需要检查余额 | |
652 | + * @param value | |
653 | + */ | |
654 | + const totalPaymentChange = (value: any) => { | |
655 | + let paymentMethod = form.getFieldValue('paymentMethod'); | |
656 | + let prepaidUid = form.getFieldValue('prepaidUid'); | |
657 | + if ( | |
658 | + value && | |
659 | + paymentMethod && | |
660 | + paymentMethod === 'WITHHOLDING_ADVANCE_DEPOSIT' && | |
661 | + prepaidUid | |
662 | + ) { | |
663 | + let valid = checkAccountMoney(prepaidUid, value); | |
664 | + if (!valid) { | |
665 | + form.setFieldValue('prepaidUid', undefined); | |
666 | + } | |
667 | + } | |
668 | + }; | |
669 | + | |
670 | + /** | |
589 | 671 | * 检查客户是否可以编辑 |
590 | 672 | * @returns |
591 | 673 | */ |
... | ... | @@ -658,6 +740,19 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
658 | 740 | } |
659 | 741 | } |
660 | 742 | |
743 | + const validateContactNumber = (_: any, value: any) => { | |
744 | + console.log(value); | |
745 | + const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; | |
746 | + const phoneRegex = /^\d{1,11}$/; | |
747 | + | |
748 | + if (emailRegex.test(value) || phoneRegex.test(value)) { | |
749 | + return Promise.resolve(); | |
750 | + } | |
751 | + return Promise.reject( | |
752 | + new Error('联系方式必须是邮箱或手机号格式(不能包含空格等特殊符号)'), | |
753 | + ); | |
754 | + }; | |
755 | + | |
661 | 756 | /** |
662 | 757 | * 刪除草稿数据 |
663 | 758 | */ |
... | ... | @@ -667,7 +762,7 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
667 | 762 | |
668 | 763 | useEffect(() => { |
669 | 764 | checkHasLocalData(); |
670 | - getSalesCodeOptions(); | |
765 | + loadSalesCodeOptions(); | |
671 | 766 | if (optType('after-sales-check')) { |
672 | 767 | getOldOrderData(data.id); |
673 | 768 | } else { |
... | ... | @@ -949,7 +1044,6 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
949 | 1044 | } |
950 | 1045 | |
951 | 1046 | let title = ''; |
952 | - let spanText = ''; | |
953 | 1047 | let realName = item.realName; |
954 | 1048 | let phone = item.phone; |
955 | 1049 | let province = item.province; |
... | ... | @@ -959,31 +1053,41 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
959 | 1053 | let institution = item.institution; |
960 | 1054 | let institutionContactName = item.institutionContactName; |
961 | 1055 | |
962 | - title = | |
963 | - getDefaultString(realName) + | |
964 | - '|' + | |
965 | - getDefaultString(phone) + | |
966 | - '|' + | |
967 | - getDefaultString(institution) + | |
968 | - '|' + | |
969 | - getDefaultString(institutionContactName) + | |
970 | - '|' + | |
1056 | + let address = | |
971 | 1057 | getDefaultString(province) + |
972 | 1058 | getDefaultString(city) + |
973 | 1059 | getDefaultString(district) + |
974 | 1060 | getDefaultString(detail); |
975 | 1061 | |
976 | - spanText = | |
1062 | + title = | |
977 | 1063 | getDefaultString(realName) + |
978 | 1064 | '|' + |
979 | 1065 | getDefaultString(phone) + |
980 | 1066 | '|' + |
981 | 1067 | getDefaultString(institution) + |
982 | 1068 | '|' + |
983 | - getDefaultString(institutionContactName); | |
1069 | + getDefaultString(institutionContactName) + | |
1070 | + '|' + | |
1071 | + address; | |
1072 | + | |
984 | 1073 | return ( |
985 | - <div title={title}> | |
986 | - <span style={{ color: '#333333' }}>{spanText}</span> | |
1074 | + <div title={title} className="whitespace-normal"> | |
1075 | + <span style={{ color: '#333333' }}> | |
1076 | + {getDefaultString(realName)} | |
1077 | + </span> | |
1078 | + | | |
1079 | + <span className="text-sky-600"> | |
1080 | + {getDefaultString(phone)} | |
1081 | + </span> | |
1082 | + | | |
1083 | + <span style={{ color: '#333333' }}> | |
1084 | + {getDefaultString(institution)} | |
1085 | + </span> | |
1086 | + | | |
1087 | + <span style={{ color: '#333333' }}> | |
1088 | + {getDefaultString(institutionContactName)} | |
1089 | + </span> | |
1090 | + |<span className="text-orange-400">{address}</span> | |
987 | 1091 | </div> |
988 | 1092 | ); |
989 | 1093 | }, |
... | ... | @@ -1047,7 +1151,15 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
1047 | 1151 | name="customerContactNumber" |
1048 | 1152 | label="联系方式" |
1049 | 1153 | placeholder="请输入联系方式" |
1050 | - rules={[{ required: true, message: '联系方式必填' }]} | |
1154 | + fieldProps={{ | |
1155 | + onBlur: (v) => { | |
1156 | + loadAccountOptions(v.target.value); | |
1157 | + }, | |
1158 | + }} | |
1159 | + rules={[ | |
1160 | + { required: true, message: '联系方式必填' }, | |
1161 | + { validator: validateContactNumber }, | |
1162 | + ]} | |
1051 | 1163 | /> |
1052 | 1164 | <ProFormText |
1053 | 1165 | width="lg" |
... | ... | @@ -1081,18 +1193,23 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
1081 | 1193 | label="支付总额(¥)" |
1082 | 1194 | rules={[ |
1083 | 1195 | { required: true, message: '支付总额必填' }, |
1084 | - // { | |
1085 | - // validator: (_, value) => { | |
1086 | - // if (value <= 0) { | |
1087 | - // return Promise.reject( | |
1088 | - // new Error( | |
1089 | - // '支付总额必须大于0 (扣预存的订单现在也必须填写实际金额)', | |
1090 | - // ), | |
1091 | - // ); | |
1092 | - // } | |
1093 | - // return Promise.resolve(); | |
1094 | - // }, | |
1095 | - // }, | |
1196 | + { | |
1197 | + validator: (_, value) => { | |
1198 | + let paymentMethod = form.getFieldValue('paymentMethod'); | |
1199 | + if ( | |
1200 | + value <= 0 && | |
1201 | + paymentMethod && | |
1202 | + paymentMethod === 'WITHHOLDING_ADVANCE_DEPOSIT' | |
1203 | + ) { | |
1204 | + return Promise.reject( | |
1205 | + new Error( | |
1206 | + '支付总额必须大于0 (扣预存的订单现在也必须填写实际金额)', | |
1207 | + ), | |
1208 | + ); | |
1209 | + } | |
1210 | + return Promise.resolve(); | |
1211 | + }, | |
1212 | + }, | |
1096 | 1213 | ]} |
1097 | 1214 | tooltip="点击计算,合计所有子订单金额" |
1098 | 1215 | fieldProps={{ |
... | ... | @@ -1106,6 +1223,9 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
1106 | 1223 | 计算 |
1107 | 1224 | </Button> |
1108 | 1225 | ), |
1226 | + onChange: (value: any) => { | |
1227 | + totalPaymentChange(value); | |
1228 | + }, | |
1109 | 1229 | }} |
1110 | 1230 | disabled={optType('after-sales-check')} |
1111 | 1231 | /> |
... | ... | @@ -1141,8 +1261,15 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
1141 | 1261 | hidden={paymentMethod !== 'WITHHOLDING_ADVANCE_DEPOSIT'} |
1142 | 1262 | showSearch |
1143 | 1263 | label="预存账号" |
1144 | - onChange={(option: any) => { | |
1145 | - form.setFieldValue('prepaidAmount', option.nowMoney); | |
1264 | + onChange={(value: any) => { | |
1265 | + //检查用户额度 | |
1266 | + let valid = checkAccountMoney( | |
1267 | + value, | |
1268 | + form.getFieldValue('totalPayment'), | |
1269 | + ); | |
1270 | + if (!valid) { | |
1271 | + form.setFieldValue('prepaidUid', undefined); | |
1272 | + } | |
1146 | 1273 | }} |
1147 | 1274 | placeholder="请选择预存账号" |
1148 | 1275 | rules={[ |
... | ... | @@ -1173,21 +1300,22 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
1173 | 1300 | }, |
1174 | 1301 | }} |
1175 | 1302 | debounceTime={1000} |
1176 | - request={async (value, {}) => { | |
1177 | - const keywords = value.keyWords; | |
1178 | - const res = await postCanrdApiUserList({ | |
1179 | - data: { keywords: keywords, pageSize: 1000000 }, | |
1180 | - }); | |
1181 | - let options = res?.data?.data?.map((c: any) => { | |
1182 | - return { | |
1183 | - ...c, | |
1184 | - label: c.realName, | |
1185 | - value: c.uid, | |
1186 | - key: c.uid, | |
1187 | - }; | |
1188 | - }); | |
1189 | - return options; | |
1190 | - }} | |
1303 | + // request={async (value, {}) => { | |
1304 | + // const keywords = value.keyWords; | |
1305 | + // const res = await postCanrdApiUserList({ | |
1306 | + // data: { keywords: keywords, pageSize: 50 }, | |
1307 | + // }); | |
1308 | + // let options = res?.data?.data?.map((c: any) => { | |
1309 | + // return { | |
1310 | + // ...c, | |
1311 | + // label: c.realName, | |
1312 | + // value: c.uid, | |
1313 | + // key: c.uid, | |
1314 | + // }; | |
1315 | + // }); | |
1316 | + // return options; | |
1317 | + // }} | |
1318 | + options={accountOptions} | |
1191 | 1319 | /> |
1192 | 1320 | <ProFormSelect |
1193 | 1321 | placeholder="选择是否需要开票" |
... | ... | @@ -1308,8 +1436,6 @@ export default ({ onClose, data, subOrders, orderOptType }) => { |
1308 | 1436 | (sum, item) => FloatAdd(sum, item.subOrderPayment), |
1309 | 1437 | 0, |
1310 | 1438 | ); |
1311 | - console.log(reduce); | |
1312 | - console.log(totalPayment); | |
1313 | 1439 | if (reduce === totalPayment || value) { |
1314 | 1440 | return Promise.resolve(); |
1315 | 1441 | } | ... | ... |
src/pages/Order/constant.ts
... | ... | @@ -108,6 +108,7 @@ export const CHECK_TYPE = { |
108 | 108 | PAYMENT_RECEIPTS_AUDIT: 'PAYMENT_RECEIPTS_AUDIT', |
109 | 109 | CONFIRM_REISSUE: 'CONFIRM_REISSUE', |
110 | 110 | PREPAID_AUDIT: 'PREPAID_AUDIT', |
111 | + CREDIT_AUDIT: 'CREDIT_AUDIT', | |
111 | 112 | }; |
112 | 113 | |
113 | 114 | /** |
... | ... | @@ -192,6 +193,7 @@ export const ORDER_STATUS_OPTIONS = { |
192 | 193 | AFTER_SALES_FAILURE: '售后失败', |
193 | 194 | NO_NEED_SEND: '无需发货', |
194 | 195 | PROCURE_CONVERT_WAREHOUSE_KEEPER: '采购转仓库', |
196 | + CREDIT_CONFIRM: '赊账待审核', | |
195 | 197 | }; |
196 | 198 | |
197 | 199 | export const MODIFIED_AUDIT_STATUS_OPTIONS = { |
... | ... | @@ -227,8 +229,10 @@ export const AFTER_INVOICING_STATUS = { |
227 | 229 | NOT_YET_INVOICED: '尚未开票', |
228 | 230 | APPLY_FOR_INVOICING: '申请开票', |
229 | 231 | URGENT_INVOICE_AUDITING: '加急待审核', |
232 | + URGENT_INVOICE_AUDIT_NOTPASS: '加急审核失败', | |
230 | 233 | PARTIAL_INVOICING: '部分开票', |
231 | 234 | COMPLETE_INVOICING: '完全开票', |
235 | + REISSUE: '重新开票', | |
232 | 236 | }; |
233 | 237 | |
234 | 238 | export const TAGS_COLOR = new Map<string, string>([ |
... | ... | @@ -274,6 +278,9 @@ export const TAGS_COLOR = new Map<string, string>([ |
274 | 278 | ['AUDIT_NOTPASS', 'error'], |
275 | 279 | ['WAIT_CONFIRM_DELIVER_AFTER_INVOICE', 'processing'], |
276 | 280 | ['SALES_CONFIRM', 'warning'], |
281 | + ['URGENT_INVOICE_AUDIT_NOTPASS', 'red'], | |
282 | + ['REISSUE', 'processing'], | |
283 | + ['CREDIT_CONFIRM', 'warning'], | |
277 | 284 | ]); |
278 | 285 | export const SALES_CODE_OPTIONS = [ |
279 | 286 | { label: 'D-Linda', value: 'D-Linda' }, |
... | ... | @@ -402,6 +409,7 @@ export const HISTORY_OPT_TYPE = new Map<string, string>([ |
402 | 409 | ['OUTSIDE_SYSTEM_PUSH', '外部系统推送了本订单'], |
403 | 410 | ['cancelSendOrder', '取消发货'], |
404 | 411 | ['salesConfirm', '商城订单销售确认'], |
412 | + ['credit_audit', '赊账审核'], | |
405 | 413 | ]); |
406 | 414 | |
407 | 415 | export const MAIN_ORDER_COLUMNS = [ | ... | ... |
src/pages/Order/index.tsx
... | ... | @@ -1317,6 +1317,23 @@ const OrderPage = () => { |
1317 | 1317 | '' |
1318 | 1318 | )} |
1319 | 1319 | |
1320 | + {optRecord.subPath?.includes('creditAudit') ? ( | |
1321 | + <Button | |
1322 | + className="p-0" | |
1323 | + type="link" | |
1324 | + onClick={() => { | |
1325 | + setCurrentMainId(record.id); | |
1326 | + setCurretnOptSubId(optRecord.id); | |
1327 | + setCheckVisible(true); | |
1328 | + setOrderCheckType(CHECK_TYPE.CREDIT_AUDIT); | |
1329 | + }} | |
1330 | + > | |
1331 | + 赊账审核 | |
1332 | + </Button> | |
1333 | + ) : ( | |
1334 | + '' | |
1335 | + )} | |
1336 | + | |
1320 | 1337 | {optRecord.subPath?.includes('auditPaymentReceipt') ? ( |
1321 | 1338 | <Button |
1322 | 1339 | className="p-0" |
... | ... | @@ -1928,7 +1945,7 @@ const OrderPage = () => { |
1928 | 1945 | |
1929 | 1946 | <Flex title={optRecord.notes}> |
1930 | 1947 | <div |
1931 | - className="overflow-hidden whitespace-normal overflow-ellipsis hover:cursor-pointer" | |
1948 | + className="max-w-[1100px] overflow-hidden whitespace-normal overflow-ellipsis hover:cursor-pointer" | |
1932 | 1949 | onClick={() => { |
1933 | 1950 | copyToClipboard(optRecord.notes); |
1934 | 1951 | message.info('备注复制成功:' + optRecord.notes); |
... | ... | @@ -2850,6 +2867,38 @@ const OrderPage = () => { |
2850 | 2867 | '' |
2851 | 2868 | )} |
2852 | 2869 | |
2870 | + {record.mainPath?.includes('creditAudit') ? ( | |
2871 | + <Button | |
2872 | + className="p-0" | |
2873 | + type="link" | |
2874 | + onClick={() => { | |
2875 | + let selectedSubOrders = subOrderSelectedMap.get( | |
2876 | + record.id, | |
2877 | + ); | |
2878 | + setSelectedRows(selectedSubOrders); | |
2879 | + if (selectedSubOrders === undefined) { | |
2880 | + selectedSubOrders = record.subOrderInformationLists; | |
2881 | + } | |
2882 | + for (let i = 0; i < selectedSubOrders.length; i++) { | |
2883 | + if ( | |
2884 | + selectedSubOrders[i].orderStatus !== | |
2885 | + 'CREDIT_CONFIRM' | |
2886 | + ) { | |
2887 | + message.error('请选择[赊账待审核]的子订单进行审核'); | |
2888 | + return; | |
2889 | + } | |
2890 | + } | |
2891 | + createOptObject(null, record.id); | |
2892 | + setCheckVisible(true); | |
2893 | + setOrderCheckType(CHECK_TYPE.CREDIT_AUDIT); | |
2894 | + }} | |
2895 | + > | |
2896 | + 赊账审核 | |
2897 | + </Button> | |
2898 | + ) : ( | |
2899 | + '' | |
2900 | + )} | |
2901 | + | |
2853 | 2902 | {record.mainPath?.includes('editProductionTime') ? ( |
2854 | 2903 | <Button |
2855 | 2904 | className="p-0" |
... | ... | @@ -3154,10 +3203,11 @@ const OrderPage = () => { |
3154 | 3203 | if ( |
3155 | 3204 | orderStatus !== 'UNAUDITED' && |
3156 | 3205 | orderStatus !== 'AUDIT_FAILED' && |
3157 | - orderStatus !== 'LEADER_PROCESS' | |
3206 | + orderStatus !== 'LEADER_PROCESS' && | |
3207 | + orderStatus !== 'SALES_CONFIRM' | |
3158 | 3208 | ) { |
3159 | 3209 | message.error( |
3160 | - '请选择未审核或者审核失败的订单进行编辑', | |
3210 | + '请选择【未审核、审核失败、销售待确认】的订单进行编辑', | |
3161 | 3211 | ); |
3162 | 3212 | return; |
3163 | 3213 | } |
... | ... | @@ -3861,11 +3911,11 @@ const OrderPage = () => { |
3861 | 3911 | label: '导出已选中订单', |
3862 | 3912 | key: '1', |
3863 | 3913 | onClick: async () => { |
3864 | - if (selectedMainOrderKeys.length === 0) { | |
3914 | + if (mainOrderSelectedMap.size === 0) { | |
3865 | 3915 | message.error('请选择订单'); |
3866 | 3916 | return; |
3867 | 3917 | } |
3868 | - let body = { flag: 30, id: selectedMainOrderKeys }; | |
3918 | + let body = { flag: 30, id: Array.from(mainOrderSelectedMap.keys()) }; | |
3869 | 3919 | exportLoading(); |
3870 | 3920 | orderExport('/api/service/order/export', body, exportLoadingDestory); |
3871 | 3921 | }, | ... | ... |
src/pages/OrderPrint/index.css
0 → 100644
1 | +.font0 { | |
2 | + color: windowtext; | |
3 | + font-size: 12pt; | |
4 | + font-weight: 400; | |
5 | + font-style: normal; | |
6 | + text-decoration: none; | |
7 | + font-family: '宋体'; | |
8 | +} | |
9 | + | |
10 | +.font1 { | |
11 | + color: windowtext; | |
12 | + font-size: 16pt; | |
13 | + font-weight: 400; | |
14 | + font-style: normal; | |
15 | + text-decoration: none; | |
16 | + font-family: '宋体'; | |
17 | +} | |
18 | + | |
19 | +.font2 { | |
20 | + color: windowtext; | |
21 | + font-size: 10pt; | |
22 | + font-weight: 400; | |
23 | + font-style: normal; | |
24 | + text-decoration: none; | |
25 | + font-family: '宋体'; | |
26 | +} | |
27 | + | |
28 | +.font3 { | |
29 | + color: windowtext; | |
30 | + font-size: 14pt; | |
31 | + font-weight: 400; | |
32 | + font-style: normal; | |
33 | + text-decoration: none; | |
34 | + font-family: '宋体'; | |
35 | +} | |
36 | + | |
37 | +.font4 { | |
38 | + color: windowtext; | |
39 | + font-size: 8pt; | |
40 | + font-weight: 400; | |
41 | + font-style: normal; | |
42 | + text-decoration: none; | |
43 | + font-family: '宋体'; | |
44 | +} | |
45 | + | |
46 | +.font5 { | |
47 | + color: #00f; | |
48 | + font-size: 11pt; | |
49 | + font-weight: 400; | |
50 | + font-style: normal; | |
51 | + text-decoration: underline; | |
52 | + font-family: '宋体'; | |
53 | +} | |
54 | + | |
55 | +.font6 { | |
56 | + color: #800080; | |
57 | + font-size: 11pt; | |
58 | + font-weight: 400; | |
59 | + font-style: normal; | |
60 | + text-decoration: underline; | |
61 | + font-family: '宋体'; | |
62 | +} | |
63 | + | |
64 | +.font7 { | |
65 | + color: #000; | |
66 | + font-size: 11pt; | |
67 | + font-weight: 400; | |
68 | + font-style: normal; | |
69 | + text-decoration: none; | |
70 | + font-family: '宋体'; | |
71 | +} | |
72 | + | |
73 | +.font8 { | |
74 | + color: #f00; | |
75 | + font-size: 11pt; | |
76 | + font-weight: 400; | |
77 | + font-style: normal; | |
78 | + text-decoration: none; | |
79 | + font-family: '宋体'; | |
80 | +} | |
81 | + | |
82 | +.font9 { | |
83 | + color: #44546a; | |
84 | + font-size: 18pt; | |
85 | + font-weight: 700; | |
86 | + font-style: normal; | |
87 | + text-decoration: none; | |
88 | + font-family: '宋体'; | |
89 | +} | |
90 | + | |
91 | +.font10 { | |
92 | + color: #7f7f7f; | |
93 | + font-size: 11pt; | |
94 | + font-weight: 400; | |
95 | + font-style: italic; | |
96 | + text-decoration: none; | |
97 | + font-family: '宋体'; | |
98 | +} | |
99 | + | |
100 | +.font11 { | |
101 | + color: #44546a; | |
102 | + font-size: 15pt; | |
103 | + font-weight: 700; | |
104 | + font-style: normal; | |
105 | + text-decoration: none; | |
106 | + font-family: '宋体'; | |
107 | +} | |
108 | + | |
109 | +.font12 { | |
110 | + color: #44546a; | |
111 | + font-size: 13pt; | |
112 | + font-weight: 700; | |
113 | + font-style: normal; | |
114 | + text-decoration: none; | |
115 | + font-family: '宋体'; | |
116 | +} | |
117 | + | |
118 | +.font13 { | |
119 | + color: #44546a; | |
120 | + font-size: 11pt; | |
121 | + font-weight: 700; | |
122 | + font-style: normal; | |
123 | + text-decoration: none; | |
124 | + font-family: '宋体'; | |
125 | +} | |
126 | + | |
127 | +.font14 { | |
128 | + color: #3f3f76; | |
129 | + font-size: 11pt; | |
130 | + font-weight: 400; | |
131 | + font-style: normal; | |
132 | + text-decoration: none; | |
133 | + font-family: '宋体'; | |
134 | +} | |
135 | + | |
136 | +.font15 { | |
137 | + color: #3f3f3f; | |
138 | + font-size: 11pt; | |
139 | + font-weight: 700; | |
140 | + font-style: normal; | |
141 | + text-decoration: none; | |
142 | + font-family: '宋体'; | |
143 | +} | |
144 | + | |
145 | +.font16 { | |
146 | + color: #fa7d00; | |
147 | + font-size: 11pt; | |
148 | + font-weight: 700; | |
149 | + font-style: normal; | |
150 | + text-decoration: none; | |
151 | + font-family: '宋体'; | |
152 | +} | |
153 | + | |
154 | +.font17 { | |
155 | + color: #fff; | |
156 | + font-size: 11pt; | |
157 | + font-weight: 700; | |
158 | + font-style: normal; | |
159 | + text-decoration: none; | |
160 | + font-family: '宋体'; | |
161 | +} | |
162 | + | |
163 | +.font18 { | |
164 | + color: #fa7d00; | |
165 | + font-size: 11pt; | |
166 | + font-weight: 400; | |
167 | + font-style: normal; | |
168 | + text-decoration: none; | |
169 | + font-family: '宋体'; | |
170 | +} | |
171 | + | |
172 | +.font19 { | |
173 | + color: #000; | |
174 | + font-size: 11pt; | |
175 | + font-weight: 700; | |
176 | + font-style: normal; | |
177 | + text-decoration: none; | |
178 | + font-family: '宋体'; | |
179 | +} | |
180 | + | |
181 | +.font20 { | |
182 | + color: #006100; | |
183 | + font-size: 11pt; | |
184 | + font-weight: 400; | |
185 | + font-style: normal; | |
186 | + text-decoration: none; | |
187 | + font-family: '宋体'; | |
188 | +} | |
189 | + | |
190 | +.font21 { | |
191 | + color: #9c0006; | |
192 | + font-size: 11pt; | |
193 | + font-weight: 400; | |
194 | + font-style: normal; | |
195 | + text-decoration: none; | |
196 | + font-family: '宋体'; | |
197 | +} | |
198 | + | |
199 | +.font22 { | |
200 | + color: #9c6500; | |
201 | + font-size: 11pt; | |
202 | + font-weight: 400; | |
203 | + font-style: normal; | |
204 | + text-decoration: none; | |
205 | + font-family: '宋体'; | |
206 | +} | |
207 | + | |
208 | +.font23 { | |
209 | + color: #fff; | |
210 | + font-size: 11pt; | |
211 | + font-weight: 400; | |
212 | + font-style: normal; | |
213 | + text-decoration: none; | |
214 | + font-family: '宋体'; | |
215 | +} | |
216 | + | |
217 | +.font24 { | |
218 | + color: #000; | |
219 | + font-size: 11pt; | |
220 | + font-weight: 400; | |
221 | + font-style: normal; | |
222 | + text-decoration: none; | |
223 | + font-family: '宋体'; | |
224 | +} | |
225 | + | |
226 | +.style0 { | |
227 | + text-align: general; | |
228 | + vertical-align: middle; | |
229 | + white-space: nowrap; | |
230 | + color: windowtext; | |
231 | + font-size: 12pt; | |
232 | + font-weight: 400; | |
233 | + font-style: normal; | |
234 | + text-decoration: none; | |
235 | + font-family: '宋体'; | |
236 | + border: none; | |
237 | +} | |
238 | + | |
239 | +.style21 { | |
240 | + color: #00f; | |
241 | + font-size: 11pt; | |
242 | + font-weight: 400; | |
243 | + font-style: normal; | |
244 | + text-decoration: underline; | |
245 | + font-family: '宋体'; | |
246 | +} | |
247 | + | |
248 | +.style22 { | |
249 | + color: #800080; | |
250 | + font-size: 11pt; | |
251 | + font-weight: 400; | |
252 | + font-style: normal; | |
253 | + text-decoration: underline; | |
254 | + font-family: '宋体'; | |
255 | +} | |
256 | + | |
257 | +.style23 { | |
258 | + background: #ffc; | |
259 | + border: 0.5pt solid #b2b2b2; | |
260 | +} | |
261 | + | |
262 | +.style24 { | |
263 | + color: #f00; | |
264 | + font-size: 11pt; | |
265 | + font-weight: 400; | |
266 | + font-style: normal; | |
267 | + text-decoration: none; | |
268 | + font-family: '宋体'; | |
269 | +} | |
270 | + | |
271 | +.style25 { | |
272 | + color: #44546a; | |
273 | + font-size: 18pt; | |
274 | + font-weight: 700; | |
275 | + font-style: normal; | |
276 | + text-decoration: none; | |
277 | + font-family: '宋体'; | |
278 | +} | |
279 | + | |
280 | +.style26 { | |
281 | + color: #7f7f7f; | |
282 | + font-size: 11pt; | |
283 | + font-weight: 400; | |
284 | + font-style: italic; | |
285 | + text-decoration: none; | |
286 | + font-family: '宋体'; | |
287 | +} | |
288 | + | |
289 | +.style27 { | |
290 | + color: #44546a; | |
291 | + font-size: 15pt; | |
292 | + font-weight: 700; | |
293 | + font-style: normal; | |
294 | + text-decoration: none; | |
295 | + font-family: '宋体'; | |
296 | + border-bottom: 1pt solid #5b9bd5; | |
297 | +} | |
298 | + | |
299 | +.style28 { | |
300 | + color: #44546a; | |
301 | + font-size: 13pt; | |
302 | + font-weight: 700; | |
303 | + font-style: normal; | |
304 | + text-decoration: none; | |
305 | + font-family: '宋体'; | |
306 | + border-bottom: 1pt solid #5b9bd5; | |
307 | +} | |
308 | + | |
309 | +.style29 { | |
310 | + color: #44546a; | |
311 | + font-size: 11pt; | |
312 | + font-weight: 700; | |
313 | + font-style: normal; | |
314 | + text-decoration: none; | |
315 | + font-family: '宋体'; | |
316 | + border-bottom: 1pt solid #acccea; | |
317 | +} | |
318 | + | |
319 | +.style30 { | |
320 | + color: #44546a; | |
321 | + font-size: 11pt; | |
322 | + font-weight: 700; | |
323 | + font-style: normal; | |
324 | + text-decoration: none; | |
325 | + font-family: '宋体'; | |
326 | +} | |
327 | + | |
328 | +.style31 { | |
329 | + background: #fc9; | |
330 | + color: #3f3f76; | |
331 | + font-size: 11pt; | |
332 | + font-weight: 400; | |
333 | + font-style: normal; | |
334 | + text-decoration: none; | |
335 | + font-family: '宋体'; | |
336 | + border: 0.5pt solid #7f7f7f; | |
337 | +} | |
338 | + | |
339 | +.style32 { | |
340 | + background: #f2f2f2; | |
341 | + color: #3f3f3f; | |
342 | + font-size: 11pt; | |
343 | + font-weight: 700; | |
344 | + font-style: normal; | |
345 | + text-decoration: none; | |
346 | + font-family: '宋体'; | |
347 | + border: 0.5pt solid #3f3f3f; | |
348 | +} | |
349 | + | |
350 | +.style33 { | |
351 | + background: #f2f2f2; | |
352 | + color: #fa7d00; | |
353 | + font-size: 11pt; | |
354 | + font-weight: 700; | |
355 | + font-style: normal; | |
356 | + text-decoration: none; | |
357 | + font-family: '宋体'; | |
358 | + border: 0.5pt solid #7f7f7f; | |
359 | +} | |
360 | + | |
361 | +.style34 { | |
362 | + background: #a5a5a5; | |
363 | + color: #fff; | |
364 | + font-size: 11pt; | |
365 | + font-weight: 700; | |
366 | + font-style: normal; | |
367 | + text-decoration: none; | |
368 | + font-family: '宋体'; | |
369 | + border: 2pt double #3f3f3f; | |
370 | +} | |
371 | + | |
372 | +.style35 { | |
373 | + color: #fa7d00; | |
374 | + font-size: 11pt; | |
375 | + font-weight: 400; | |
376 | + font-style: normal; | |
377 | + text-decoration: none; | |
378 | + font-family: '宋体'; | |
379 | + border-bottom: 2pt double #ff8001; | |
380 | +} | |
381 | + | |
382 | +.style36 { | |
383 | + color: #000; | |
384 | + font-size: 11pt; | |
385 | + font-weight: 700; | |
386 | + font-style: normal; | |
387 | + text-decoration: none; | |
388 | + font-family: '宋体'; | |
389 | + border-top: 0.5pt solid #5b9bd5; | |
390 | + border-bottom: 2pt double #5b9bd5; | |
391 | +} | |
392 | + | |
393 | +.style37 { | |
394 | + background: #c6efce; | |
395 | + color: #006100; | |
396 | + font-size: 11pt; | |
397 | + font-weight: 400; | |
398 | + font-style: normal; | |
399 | + text-decoration: none; | |
400 | + font-family: '宋体'; | |
401 | +} | |
402 | + | |
403 | +.style38 { | |
404 | + background: #ffc7ce; | |
405 | + color: #9c0006; | |
406 | + font-size: 11pt; | |
407 | + font-weight: 400; | |
408 | + font-style: normal; | |
409 | + text-decoration: none; | |
410 | + font-family: '宋体'; | |
411 | +} | |
412 | + | |
413 | +.style39 { | |
414 | + background: #ffeb9c; | |
415 | + color: #9c6500; | |
416 | + font-size: 11pt; | |
417 | + font-weight: 400; | |
418 | + font-style: normal; | |
419 | + text-decoration: none; | |
420 | + font-family: '宋体'; | |
421 | +} | |
422 | + | |
423 | +.style40 { | |
424 | + background: #5b9bd5; | |
425 | + color: #fff; | |
426 | + font-size: 11pt; | |
427 | + font-weight: 400; | |
428 | + font-style: normal; | |
429 | + text-decoration: none; | |
430 | + font-family: '宋体'; | |
431 | +} | |
432 | + | |
433 | +.style41 { | |
434 | + background: #ddebf7; | |
435 | + color: #000; | |
436 | + font-size: 11pt; | |
437 | + font-weight: 400; | |
438 | + font-style: normal; | |
439 | + text-decoration: none; | |
440 | + font-family: '宋体'; | |
441 | +} | |
442 | + | |
443 | +.style42 { | |
444 | + background: #bdd7ee; | |
445 | + color: #000; | |
446 | + font-size: 11pt; | |
447 | + font-weight: 400; | |
448 | + font-style: normal; | |
449 | + text-decoration: none; | |
450 | + font-family: '宋体'; | |
451 | +} | |
452 | + | |
453 | +.style43 { | |
454 | + background: #9bc2e6; | |
455 | + color: #fff; | |
456 | + font-size: 11pt; | |
457 | + font-weight: 400; | |
458 | + font-style: normal; | |
459 | + text-decoration: none; | |
460 | + font-family: '宋体'; | |
461 | +} | |
462 | + | |
463 | +.style44 { | |
464 | + background: #ed7d31; | |
465 | + color: #fff; | |
466 | + font-size: 11pt; | |
467 | + font-weight: 400; | |
468 | + font-style: normal; | |
469 | + text-decoration: none; | |
470 | + font-family: '宋体'; | |
471 | +} | |
472 | + | |
473 | +.style45 { | |
474 | + background: #fce4d6; | |
475 | + color: #000; | |
476 | + font-size: 11pt; | |
477 | + font-weight: 400; | |
478 | + font-style: normal; | |
479 | + text-decoration: none; | |
480 | + font-family: '宋体'; | |
481 | +} | |
482 | + | |
483 | +.style46 { | |
484 | + background: #f8cbad; | |
485 | + color: #000; | |
486 | + font-size: 11pt; | |
487 | + font-weight: 400; | |
488 | + font-style: normal; | |
489 | + text-decoration: none; | |
490 | + font-family: '宋体'; | |
491 | +} | |
492 | + | |
493 | +.style47 { | |
494 | + background: #f4b084; | |
495 | + color: #fff; | |
496 | + font-size: 11pt; | |
497 | + font-weight: 400; | |
498 | + font-style: normal; | |
499 | + text-decoration: none; | |
500 | + font-family: '宋体'; | |
501 | +} | |
502 | + | |
503 | +.style48 { | |
504 | + background: #a5a5a5; | |
505 | + color: #fff; | |
506 | + font-size: 11pt; | |
507 | + font-weight: 400; | |
508 | + font-style: normal; | |
509 | + text-decoration: none; | |
510 | + font-family: '宋体'; | |
511 | +} | |
512 | + | |
513 | +.style49 { | |
514 | + background: #ededed; | |
515 | + color: #000; | |
516 | + font-size: 11pt; | |
517 | + font-weight: 400; | |
518 | + font-style: normal; | |
519 | + text-decoration: none; | |
520 | + font-family: '宋体'; | |
521 | +} | |
522 | + | |
523 | +.style50 { | |
524 | + background: #dbdbdb; | |
525 | + color: #000; | |
526 | + font-size: 11pt; | |
527 | + font-weight: 400; | |
528 | + font-style: normal; | |
529 | + text-decoration: none; | |
530 | + font-family: '宋体'; | |
531 | +} | |
532 | + | |
533 | +.style51 { | |
534 | + background: #c9c9c9; | |
535 | + color: #fff; | |
536 | + font-size: 11pt; | |
537 | + font-weight: 400; | |
538 | + font-style: normal; | |
539 | + text-decoration: none; | |
540 | + font-family: '宋体'; | |
541 | +} | |
542 | + | |
543 | +.style52 { | |
544 | + background: #ffc000; | |
545 | + color: #fff; | |
546 | + font-size: 11pt; | |
547 | + font-weight: 400; | |
548 | + font-style: normal; | |
549 | + text-decoration: none; | |
550 | + font-family: '宋体'; | |
551 | +} | |
552 | + | |
553 | +.style53 { | |
554 | + background: #fff2cc; | |
555 | + color: #000; | |
556 | + font-size: 11pt; | |
557 | + font-weight: 400; | |
558 | + font-style: normal; | |
559 | + text-decoration: none; | |
560 | + font-family: '宋体'; | |
561 | +} | |
562 | + | |
563 | +.style54 { | |
564 | + background: #ffe699; | |
565 | + color: #000; | |
566 | + font-size: 11pt; | |
567 | + font-weight: 400; | |
568 | + font-style: normal; | |
569 | + text-decoration: none; | |
570 | + font-family: '宋体'; | |
571 | +} | |
572 | + | |
573 | +.style55 { | |
574 | + background: #ffd966; | |
575 | + color: #fff; | |
576 | + font-size: 11pt; | |
577 | + font-weight: 400; | |
578 | + font-style: normal; | |
579 | + text-decoration: none; | |
580 | + font-family: '宋体'; | |
581 | +} | |
582 | + | |
583 | +.style56 { | |
584 | + background: #4472c4; | |
585 | + color: #fff; | |
586 | + font-size: 11pt; | |
587 | + font-weight: 400; | |
588 | + font-style: normal; | |
589 | + text-decoration: none; | |
590 | + font-family: '宋体'; | |
591 | +} | |
592 | + | |
593 | +.style57 { | |
594 | + background: #d9e1f2; | |
595 | + color: #000; | |
596 | + font-size: 11pt; | |
597 | + font-weight: 400; | |
598 | + font-style: normal; | |
599 | + text-decoration: none; | |
600 | + font-family: '宋体'; | |
601 | +} | |
602 | + | |
603 | +.style58 { | |
604 | + background: #b4c6e7; | |
605 | + color: #000; | |
606 | + font-size: 11pt; | |
607 | + font-weight: 400; | |
608 | + font-style: normal; | |
609 | + text-decoration: none; | |
610 | + font-family: '宋体'; | |
611 | +} | |
612 | + | |
613 | +.style59 { | |
614 | + background: #8ea9db; | |
615 | + color: #fff; | |
616 | + font-size: 11pt; | |
617 | + font-weight: 400; | |
618 | + font-style: normal; | |
619 | + text-decoration: none; | |
620 | + font-family: '宋体'; | |
621 | +} | |
622 | + | |
623 | +.style60 { | |
624 | + background: #70ad47; | |
625 | + color: #fff; | |
626 | + font-size: 11pt; | |
627 | + font-weight: 400; | |
628 | + font-style: normal; | |
629 | + text-decoration: none; | |
630 | + font-family: '宋体'; | |
631 | +} | |
632 | + | |
633 | +.style61 { | |
634 | + background: #e2efda; | |
635 | + color: #000; | |
636 | + font-size: 11pt; | |
637 | + font-weight: 400; | |
638 | + font-style: normal; | |
639 | + text-decoration: none; | |
640 | + font-family: '宋体'; | |
641 | +} | |
642 | + | |
643 | +.style62 { | |
644 | + background: #c6e0b4; | |
645 | + color: #000; | |
646 | + font-size: 11pt; | |
647 | + font-weight: 400; | |
648 | + font-style: normal; | |
649 | + text-decoration: none; | |
650 | + font-family: '宋体'; | |
651 | +} | |
652 | + | |
653 | +.style63 { | |
654 | + background: #a9d08e; | |
655 | + color: #fff; | |
656 | + font-size: 11pt; | |
657 | + font-weight: 400; | |
658 | + font-style: normal; | |
659 | + text-decoration: none; | |
660 | + font-family: '宋体'; | |
661 | +} | |
662 | + | |
663 | +td { | |
664 | + padding-top: 1px; | |
665 | + padding-right: 1px; | |
666 | + padding-left: 1px; | |
667 | + text-align: general; | |
668 | + vertical-align: middle; | |
669 | + white-space: nowrap; | |
670 | + color: windowtext; | |
671 | + font-size: 12pt; | |
672 | + font-weight: 400; | |
673 | + font-style: normal; | |
674 | + text-decoration: none; | |
675 | + font-family: '宋体'; | |
676 | + border: none; | |
677 | +} | |
678 | + | |
679 | +.xl65 { | |
680 | + text-align: center; | |
681 | + font-size: 16pt; | |
682 | +} | |
683 | + | |
684 | +.xl66 { | |
685 | + text-align: center; | |
686 | + font-size: 10pt; | |
687 | +} | |
688 | + | |
689 | +.xl67 { | |
690 | + text-align: center; | |
691 | + font-size: 14pt; | |
692 | +} | |
693 | + | |
694 | +.xl68 { | |
695 | + text-align: center; | |
696 | + font-size: 14pt; | |
697 | +} | |
698 | + | |
699 | +.xl69 { | |
700 | + text-align: left; | |
701 | + font-size: 8pt; | |
702 | +} | |
703 | + | |
704 | +.xl70 { | |
705 | + text-align: left; | |
706 | + font-size: 8pt; | |
707 | +} | |
708 | + | |
709 | +.xl71 { | |
710 | + text-align: center; | |
711 | + font-size: 8pt; | |
712 | + border: 0.5pt solid windowtext; | |
713 | +} | |
714 | + | |
715 | +.xl72 { | |
716 | + text-align: center; | |
717 | + font-size: 8pt; | |
718 | + border: 0.5pt solid windowtext; | |
719 | + white-space: normal; | |
720 | +} | |
721 | + | |
722 | +.xl73 { | |
723 | + white-space: normal; | |
724 | + font-size: 8pt; | |
725 | + border: 0.5pt solid windowtext; | |
726 | +} | |
727 | + | |
728 | +.xl74 { | |
729 | + text-align: center; | |
730 | + white-space: normal; | |
731 | + font-size: 8pt; | |
732 | + border: 0.5pt solid windowtext; | |
733 | +} | |
734 | + | |
735 | +.xl75 { | |
736 | + text-align: center; | |
737 | + white-space: normal; | |
738 | + font-size: 8pt; | |
739 | + border: 0.5pt solid windowtext; | |
740 | +} | |
741 | + | |
742 | +.xl76 { | |
743 | + font-size: 8pt; | |
744 | +} | |
745 | + | |
746 | +.xl77 { | |
747 | + font-size: 8pt; | |
748 | +} | |
749 | + | |
750 | +.xl78 { | |
751 | + text-align: center; | |
752 | + font-size: 8pt; | |
753 | +} | ... | ... |
src/pages/ResearchGroup/components/AuditModal.tsx
0 → 100644
1 | +import { RESPONSE_CODE } from '@/constants/enum'; | |
2 | +import { postCommonAudit } from '@/services'; | |
3 | +import { ModalForm, ProFormTextArea } from '@ant-design/pro-components'; | |
4 | +import { Button, Form, message } from 'antd'; | |
5 | +import { cloneDeep } from 'lodash'; | |
6 | + | |
7 | +// import { cloneDeep } from 'lodash'; | |
8 | +export default ({ setVisible, ids, onClose }) => { | |
9 | + const [form] = Form.useForm(); | |
10 | + let auditIds = cloneDeep(ids); | |
11 | + | |
12 | + const parseValues = (values: any) => { | |
13 | + values.ids = auditIds; | |
14 | + values.notes = form.getFieldValue('auditNotes'); | |
15 | + }; | |
16 | + | |
17 | + const doAudit = async (values: any) => { | |
18 | + values.type = 'research_group_member_request_audit'; | |
19 | + let res = await postCommonAudit({ data: values }); | |
20 | + if (res && res.result === RESPONSE_CODE.SUCCESS) { | |
21 | + message.success(res.message); | |
22 | + onClose(); | |
23 | + } | |
24 | + }; | |
25 | + | |
26 | + const loadbtns = (props: any, defaultDoms: any) => { | |
27 | + let btns = []; | |
28 | + //取消 | |
29 | + btns.push(defaultDoms[0]); | |
30 | + | |
31 | + //驳回 | |
32 | + btns.push( | |
33 | + <Button | |
34 | + type="primary" | |
35 | + onClick={() => { | |
36 | + let values = form.getFieldsValue(); | |
37 | + values.pass = false; | |
38 | + parseValues(values); | |
39 | + doAudit(values); | |
40 | + }} | |
41 | + > | |
42 | + 驳回 | |
43 | + </Button>, | |
44 | + ); | |
45 | + | |
46 | + //确认 | |
47 | + btns.push(defaultDoms[1]); | |
48 | + | |
49 | + return btns; | |
50 | + }; | |
51 | + | |
52 | + return ( | |
53 | + <> | |
54 | + <ModalForm | |
55 | + width={500} | |
56 | + open | |
57 | + title="审核" | |
58 | + form={form} | |
59 | + autoFocusFirstInput | |
60 | + modalProps={{ | |
61 | + okText: '通过', | |
62 | + cancelText: '取消', | |
63 | + destroyOnClose: true, | |
64 | + onCancel: () => { | |
65 | + setVisible(false); | |
66 | + }, | |
67 | + }} | |
68 | + onFinish={async (values) => { | |
69 | + values.pass = true; | |
70 | + parseValues(values); | |
71 | + doAudit(values); | |
72 | + onClose(); | |
73 | + }} | |
74 | + onOpenChange={setVisible} | |
75 | + submitter={{ | |
76 | + render: (props, defaultDoms) => { | |
77 | + return loadbtns(props, defaultDoms); | |
78 | + }, | |
79 | + }} | |
80 | + > | |
81 | + <ProFormTextArea | |
82 | + name="auditNotes" | |
83 | + key="auditNotes" | |
84 | + placeholder="备注" | |
85 | + label="若驳回,请填写备注" | |
86 | + /> | |
87 | + </ModalForm> | |
88 | + </> | |
89 | + ); | |
90 | +}; | ... | ... |
src/pages/ResearchGroup/components/ImportModal.tsx
0 → 100644
1 | +import { RESPONSE_CODE } from '@/constants/enum'; | |
2 | +import { postResearchGroupsImport } from '@/services'; | |
3 | +import { orderExport } from '@/services/order'; | |
4 | +import { UploadOutlined } from '@ant-design/icons'; | |
5 | +import { Button, Modal, Upload, message } from 'antd'; | |
6 | +import { RcFile, UploadFile, UploadProps } from 'antd/es/upload'; | |
7 | +import { useState } from 'react'; | |
8 | +export default ({ onClose }) => { | |
9 | + // const [form] = Form.useForm<{ name: string; company: string }>(); | |
10 | + const [messageApi, contextHolder] = message.useMessage(); | |
11 | + const [fileList, setFileList] = useState<UploadFile[]>([]); | |
12 | + const [uploading, setUploading] = useState(false); | |
13 | + const handleChange: UploadProps['onChange'] = ({ fileList: newFileList }) => | |
14 | + setFileList(newFileList); | |
15 | + | |
16 | + const exportLoading = (content: string) => { | |
17 | + messageApi.open({ | |
18 | + type: 'loading', | |
19 | + content: content, | |
20 | + duration: 0, | |
21 | + }); | |
22 | + }; | |
23 | + | |
24 | + const exportLoadingDestory = () => { | |
25 | + messageApi.destroy(); | |
26 | + }; | |
27 | + const downloadTemplate = async () => { | |
28 | + exportLoading('正在下载模板...'); | |
29 | + orderExport( | |
30 | + '/api/research/groups/download/importTemplate', | |
31 | + {}, | |
32 | + exportLoadingDestory, | |
33 | + ); | |
34 | + }; | |
35 | + | |
36 | + const handleUpload = async () => { | |
37 | + const formData = new FormData(); | |
38 | + fileList.forEach((file) => { | |
39 | + //originFileObj二进制文件 | |
40 | + formData.append('file', file.originFileObj as RcFile); | |
41 | + }); | |
42 | + // console.log(fileList[0] as RcFile) | |
43 | + // formData.append('file', fileList[0] as RcFile); | |
44 | + setUploading(true); | |
45 | + // You can use any AJAX library you like | |
46 | + const res = await postResearchGroupsImport({ | |
47 | + data: formData, | |
48 | + headers: { | |
49 | + 'Content-Type': | |
50 | + 'multipart/form-data; boundary=----WebKitFormBoundarynl6gT1BKdPWIejNq', | |
51 | + }, | |
52 | + }); | |
53 | + | |
54 | + if (res.result === RESPONSE_CODE.SUCCESS) { | |
55 | + message.success(res.message); | |
56 | + onClose(); | |
57 | + } | |
58 | + | |
59 | + setUploading(false); | |
60 | + }; | |
61 | + | |
62 | + const props: UploadProps = { | |
63 | + onRemove: (file) => { | |
64 | + const index = fileList.indexOf(file); | |
65 | + const newFileList = fileList.slice(); | |
66 | + newFileList.splice(index, 1); | |
67 | + setFileList(newFileList); | |
68 | + }, | |
69 | + beforeUpload: (file) => { | |
70 | + setFileList([...fileList, file]); | |
71 | + | |
72 | + return false; | |
73 | + }, | |
74 | + fileList, | |
75 | + onChange: handleChange, | |
76 | + accept: '.xlsx', | |
77 | + }; | |
78 | + | |
79 | + return ( | |
80 | + <> | |
81 | + <Modal | |
82 | + width={500} | |
83 | + open | |
84 | + title="课题组信息导入" | |
85 | + footer={[ | |
86 | + <Button key="cancel" onClick={onClose}> | |
87 | + 取消 | |
88 | + </Button>, | |
89 | + <Button | |
90 | + type="primary" | |
91 | + key="ok" | |
92 | + onClick={handleUpload} | |
93 | + disabled={fileList.length === 0} | |
94 | + loading={uploading} | |
95 | + > | |
96 | + {uploading ? '上传中' : '提交'} | |
97 | + </Button>, | |
98 | + ]} | |
99 | + onCancel={async () => { | |
100 | + onClose(); | |
101 | + }} | |
102 | + > | |
103 | + <div className="py-4 font-semibold"> | |
104 | + 导入课题组信息 | |
105 | + <Button type="link" onClick={downloadTemplate}> | |
106 | + 下载模板 | |
107 | + </Button> | |
108 | + </div> | |
109 | + <Upload {...props}> | |
110 | + <Button icon={<UploadOutlined />} disabled={fileList.length > 0}> | |
111 | + 点击选择文件 | |
112 | + </Button> | |
113 | + </Upload> | |
114 | + </Modal> | |
115 | + {contextHolder} | |
116 | + </> | |
117 | + ); | |
118 | +}; | ... | ... |
src/pages/ResearchGroup/components/ResearchGroupAddModal.tsx
0 → 100644
1 | +import { RESPONSE_CODE } from '@/constants/enum'; | |
2 | +import { | |
3 | + postCanrdApiUserAddressList, | |
4 | + postCanrdApiUserList, | |
5 | + postResearchGroupsAdd, | |
6 | + postResearchGroupsDetail, | |
7 | + postResearchGroupsEdit, | |
8 | +} from '@/services'; | |
9 | +import { getDefaultString, isEmpty } from '@/utils/StringUtil'; | |
10 | +import { getRandomNumber } from '@/utils/numberUtil'; | |
11 | +import { getSalesCodeOptions } from '@/utils/order'; | |
12 | +import { validatePhoneNumberBool } from '@/utils/validators'; | |
13 | +import { | |
14 | + ModalForm, | |
15 | + ProCard, | |
16 | + ProForm, | |
17 | + ProFormSelect, | |
18 | + ProFormText, | |
19 | +} from '@ant-design/pro-components'; | |
20 | +import { Button, Form, Spin, message } from 'antd'; | |
21 | +import { cloneDeep } from 'lodash'; | |
22 | +import { useEffect, useState } from 'react'; | |
23 | +import '../index.less'; | |
24 | + | |
25 | +// import { cloneDeep } from 'lodash'; | |
26 | +export default ({ setVisible, researchGroupId, onClose }) => { | |
27 | + const [form] = Form.useForm(); | |
28 | + const [salesCodeOptions, setSalesCodeOptions] = useState([]); | |
29 | + const [memberOptions, setMemberOptions] = useState<any[]>([]); | |
30 | + const [accountOptions, setAccountOptions] = useState<any[]>([]); | |
31 | + const [researchGroupInfo, setResearchGroupInfo] = useState<any>(null); | |
32 | + const [modalLoading, setModalLoading] = useState(false); | |
33 | + const groupId = cloneDeep(researchGroupId); | |
34 | + const [requestCount, setRequestCount] = useState(1); | |
35 | + | |
36 | + /** | |
37 | + * 获取课题组信息 | |
38 | + * @returns | |
39 | + */ | |
40 | + const loadResearchGroupInfo = async () => { | |
41 | + if (groupId === null) { | |
42 | + return; | |
43 | + } | |
44 | + setModalLoading(true); | |
45 | + let res = await postResearchGroupsDetail({ data: { id: groupId } }); | |
46 | + if (res && res.result === RESPONSE_CODE.SUCCESS) { | |
47 | + setResearchGroupInfo(res.data); | |
48 | + } | |
49 | + setModalLoading(false); | |
50 | + }; | |
51 | + | |
52 | + /** | |
53 | + * 获取销售代码枚举,在复制和编辑的时候判断是否为旧的代码 | |
54 | + */ | |
55 | + const loadSalesCodeOptions = async () => { | |
56 | + let options = await getSalesCodeOptions(); | |
57 | + setSalesCodeOptions(options); | |
58 | + }; | |
59 | + | |
60 | + /** | |
61 | + * 对options去重 | |
62 | + * @param options | |
63 | + * @returns | |
64 | + */ | |
65 | + function deduplicateOptions(options: any) { | |
66 | + const seen = new Set(); | |
67 | + const result: any[] = []; | |
68 | + options.forEach((option: any) => { | |
69 | + const uniqueKey = `${option.realName}-${option.phone}`; | |
70 | + if (!seen.has(uniqueKey)) { | |
71 | + seen.add(uniqueKey); | |
72 | + result.push(option); | |
73 | + } | |
74 | + }); | |
75 | + return result; | |
76 | + } | |
77 | + | |
78 | + /** | |
79 | + * 自动填充客户信息 | |
80 | + * @param option | |
81 | + */ | |
82 | + function autoFillCustomerInfo(option: any) { | |
83 | + if (!option) { | |
84 | + return; | |
85 | + } | |
86 | + let realName = option.realName; | |
87 | + let id = option.value; | |
88 | + if (id === 3.1415926) { | |
89 | + message.warning( | |
90 | + '请填写下方的【客户名称】和【手机号】,填写完成确保信息无误后点击添加按钮。', | |
91 | + ); | |
92 | + form.setFieldValue('realName', option.name); | |
93 | + return; | |
94 | + } | |
95 | + //判断当前客户信息是否已添加过:id匹配或者option的phone匹配说明添加过了 | |
96 | + let memberIds = form.getFieldValue('members'); | |
97 | + if (!memberIds) { | |
98 | + //表单项没值的时候默认是undefined。初始化为数组 | |
99 | + memberIds = []; | |
100 | + } | |
101 | + if (memberIds.includes(id)) { | |
102 | + message.info(`${realName} 重复添加`); | |
103 | + return; | |
104 | + } | |
105 | + //表单项的value添加当前option的value | |
106 | + memberIds.push(id); | |
107 | + form.setFieldValue('members', memberIds); | |
108 | + message.success(`${realName} 添加成功`); | |
109 | + //判断options中是否已经有这个option | |
110 | + for (let memberOption of memberOptions) { | |
111 | + if ( | |
112 | + memberIds.includes(memberOption.value) && | |
113 | + memberOption.phone === option.phone | |
114 | + ) { | |
115 | + return; | |
116 | + } | |
117 | + } | |
118 | + //option添加到memberOptions中 | |
119 | + let newMemberOptions = [...memberOptions]; | |
120 | + newMemberOptions.push(option); | |
121 | + setMemberOptions(newMemberOptions); | |
122 | + | |
123 | + //清空信息 | |
124 | + form.setFieldValue('realName', undefined); | |
125 | + form.setFieldValue('phone', undefined); | |
126 | + form.setFieldValue('customerName', null); | |
127 | + } | |
128 | + | |
129 | + /** | |
130 | + * 保存account的options | |
131 | + * @param option | |
132 | + * @returns | |
133 | + */ | |
134 | + function autoAccountSelectOptions(option: any) { | |
135 | + if (!option) { | |
136 | + return; | |
137 | + } | |
138 | + let id = option.value; | |
139 | + //判断当前客户信息是否已添加过:id匹配或者option的phone匹配说明添加过了 | |
140 | + let accountIds = form.getFieldValue('accounts'); | |
141 | + if (!accountIds) { | |
142 | + //表单项没值的时候默认是undefined。初始化为数组 | |
143 | + accountIds = []; | |
144 | + } | |
145 | + if (accountIds.includes(id)) { | |
146 | + return; | |
147 | + } | |
148 | + //option添加到accountOptions中 | |
149 | + setAccountOptions(option); | |
150 | + } | |
151 | + | |
152 | + /** | |
153 | + * 添加自定义成员 | |
154 | + */ | |
155 | + function addCustomMember() { | |
156 | + let realName = form.getFieldValue('realName'); | |
157 | + let phone = form.getFieldValue('phone'); | |
158 | + if (isEmpty(realName)) { | |
159 | + message.error('请填写客户名称'); | |
160 | + } | |
161 | + if (isEmpty(phone)) { | |
162 | + message.error('请填写手机号'); | |
163 | + } | |
164 | + if (!validatePhoneNumberBool(phone)) { | |
165 | + message.error('请填写正确格式的手机号'); | |
166 | + return; | |
167 | + } | |
168 | + let customOption = { | |
169 | + value: getRandomNumber(10), | |
170 | + realName: realName, | |
171 | + phone: phone, | |
172 | + }; | |
173 | + autoFillCustomerInfo(customOption); | |
174 | + } | |
175 | + | |
176 | + function parseFormValues(values: any) { | |
177 | + if (!values) { | |
178 | + return {}; | |
179 | + } | |
180 | + | |
181 | + let memberIds = values.members; | |
182 | + let accountIds = values.accounts; | |
183 | + values.id = groupId; | |
184 | + | |
185 | + //成员对象封装 | |
186 | + if (memberIds) { | |
187 | + let memberObjs: any[] = []; | |
188 | + for (let memberOption of memberOptions) { | |
189 | + if (memberIds.includes(memberOption.value)) { | |
190 | + memberObjs.push({ | |
191 | + memberName: memberOption.realName, | |
192 | + memberPhone: memberOption.phone, | |
193 | + id: memberOption.id, | |
194 | + groupId: memberOption.groupId, | |
195 | + }); | |
196 | + } | |
197 | + } | |
198 | + values.members = memberObjs; | |
199 | + } | |
200 | + | |
201 | + //预存账号对象封装 | |
202 | + if (accountIds) { | |
203 | + let accountObjs: any[] = []; | |
204 | + for (let accountOption of accountOptions) { | |
205 | + if (accountIds.includes(accountOption.uid)) { | |
206 | + accountObjs.push({ | |
207 | + accountPhone: accountOption.phone, | |
208 | + accountId: accountOption.uid, | |
209 | + accountName: accountOption.realName, | |
210 | + id: accountOption.id, | |
211 | + groupId: accountOption.groupId, | |
212 | + }); | |
213 | + } | |
214 | + } | |
215 | + values.accounts = accountObjs; | |
216 | + } | |
217 | + | |
218 | + return values; | |
219 | + } | |
220 | + | |
221 | + /** | |
222 | + * 设置表单默认信息 | |
223 | + * @returns | |
224 | + */ | |
225 | + const loadFormDefaultValue = async () => { | |
226 | + if (!researchGroupInfo) { | |
227 | + return; | |
228 | + } | |
229 | + | |
230 | + let members = researchGroupInfo.members; | |
231 | + if (members !== null) { | |
232 | + let newMemberOptions = []; | |
233 | + for (let member of members) { | |
234 | + let name = member.memberName; | |
235 | + let phone = member.memberPhone; | |
236 | + let id = member.id; | |
237 | + newMemberOptions.push({ | |
238 | + ...member, | |
239 | + realName: name, | |
240 | + phone: phone, | |
241 | + value: id, | |
242 | + }); | |
243 | + } | |
244 | + setMemberOptions(newMemberOptions); | |
245 | + form.setFieldValue( | |
246 | + 'members', | |
247 | + members?.map((item: any) => { | |
248 | + return item.id; | |
249 | + }), | |
250 | + ); | |
251 | + } | |
252 | + | |
253 | + let accounts = researchGroupInfo.accounts; | |
254 | + if (accounts !== null) { | |
255 | + let phones: any[] = []; | |
256 | + let accountIds = accounts | |
257 | + .filter((account: any) => { | |
258 | + //id为空的按照手机号查询 | |
259 | + if (account.accountId === null) { | |
260 | + phones.push(account.accountPhone); | |
261 | + return false; | |
262 | + } | |
263 | + return true; | |
264 | + }) | |
265 | + .map((item: any) => item.accountId); | |
266 | + | |
267 | + let uidIdMap = new Map( | |
268 | + accounts.map((item: any) => [item.accountId, item.id]), | |
269 | + ); | |
270 | + let res = await postCanrdApiUserList({ | |
271 | + data: { uids: accountIds, phones: phones }, | |
272 | + }); | |
273 | + if (res && res.result === RESPONSE_CODE.SUCCESS) { | |
274 | + let accountList = res?.data?.data; | |
275 | + console.log(accountList); | |
276 | + let newAccountOptions = accountList?.map((item) => { | |
277 | + item.value = uidIdMap.get(item.uid); | |
278 | + return item; | |
279 | + }); | |
280 | + | |
281 | + console.log(newAccountOptions); | |
282 | + setAccountOptions(newAccountOptions); | |
283 | + } | |
284 | + | |
285 | + form.setFieldValue('accounts', accountIds); | |
286 | + } | |
287 | + | |
288 | + form.setFieldValue('group', researchGroupInfo.groupName); | |
289 | + form.setFieldValue('leader', researchGroupInfo.leaderName); | |
290 | + }; | |
291 | + | |
292 | + useEffect(() => { | |
293 | + loadSalesCodeOptions(); | |
294 | + loadResearchGroupInfo(); | |
295 | + }, []); | |
296 | + | |
297 | + useEffect(() => { | |
298 | + loadFormDefaultValue(); | |
299 | + }, [researchGroupInfo]); | |
300 | + | |
301 | + return ( | |
302 | + <div className="research-group-index"> | |
303 | + <ModalForm | |
304 | + width={800} | |
305 | + open | |
306 | + title="新增/编辑课题组" | |
307 | + form={form} | |
308 | + autoFocusFirstInput | |
309 | + submitter={{}} | |
310 | + modalProps={{ | |
311 | + okText: '提交', | |
312 | + cancelText: '关闭', | |
313 | + destroyOnClose: true, | |
314 | + onCancel: () => { | |
315 | + setVisible(false); | |
316 | + }, | |
317 | + }} | |
318 | + onFinish={async (values) => { | |
319 | + let newValues = parseFormValues(values); | |
320 | + let res; | |
321 | + if (researchGroupInfo === null) { | |
322 | + res = await postResearchGroupsAdd({ | |
323 | + data: newValues, | |
324 | + }); | |
325 | + } else { | |
326 | + res = await postResearchGroupsEdit({ | |
327 | + data: newValues, | |
328 | + }); | |
329 | + } | |
330 | + if (res && res.result === RESPONSE_CODE.SUCCESS) { | |
331 | + message.success(res.message); | |
332 | + onClose(); | |
333 | + } | |
334 | + }} | |
335 | + onOpenChange={setVisible} | |
336 | + > | |
337 | + <Spin spinning={modalLoading} tip="加载中..."> | |
338 | + <ProForm.Group> | |
339 | + <ProFormText | |
340 | + name="group" | |
341 | + label="课题组名称" | |
342 | + placeholder="请输入课题组名称" | |
343 | + rules={[{ required: true, message: '请输入课题组名称' }]} | |
344 | + /> | |
345 | + <ProFormSelect | |
346 | + name="leader" | |
347 | + key="leader" | |
348 | + width="lg" | |
349 | + showSearch | |
350 | + label="负责人" | |
351 | + placeholder="请输入课题组负责人" | |
352 | + rules={[{ required: true, message: '请输入课题组负责人' }]} | |
353 | + options={salesCodeOptions} | |
354 | + /> | |
355 | + </ProForm.Group> | |
356 | + | |
357 | + <ProFormSelect | |
358 | + name="accounts" | |
359 | + key="accounts" | |
360 | + width="lg" | |
361 | + showSearch | |
362 | + label="绑定预存账号(可多选)" | |
363 | + placeholder="请选择预存账号" | |
364 | + onChange={(_, option) => { | |
365 | + autoAccountSelectOptions(option); | |
366 | + }} | |
367 | + rules={[{ required: true, message: '请至少选择绑定一个预存账号' }]} | |
368 | + fieldProps={{ | |
369 | + mode: 'multiple', | |
370 | + filterOption() { | |
371 | + return true; | |
372 | + }, | |
373 | + optionItemRender(item: any) { | |
374 | + let name = | |
375 | + item.label + | |
376 | + ' | ' + | |
377 | + item.institution + | |
378 | + ' | ' + | |
379 | + item.nowMoney + | |
380 | + '¥' + | |
381 | + ' | ' + | |
382 | + item.phone; | |
383 | + return ( | |
384 | + <div title={name}> | |
385 | + <span style={{ color: '#333333' }}>{name}</span> | |
386 | + </div> | |
387 | + ); | |
388 | + }, | |
389 | + }} | |
390 | + debounceTime={1000} | |
391 | + request={async (value, {}) => { | |
392 | + const keywords = value.keyWords; | |
393 | + let body = { | |
394 | + keywords: keywords, | |
395 | + pageSize: 20, | |
396 | + researchGroupId: undefined, | |
397 | + }; | |
398 | + | |
399 | + if (requestCount === 1) { | |
400 | + body.researchGroupId = groupId; | |
401 | + } | |
402 | + | |
403 | + const res = await postCanrdApiUserList({ | |
404 | + data: body, | |
405 | + }); | |
406 | + let options = res?.data?.data?.map((c: any) => { | |
407 | + return { | |
408 | + ...c, | |
409 | + label: c.realName, | |
410 | + value: c.uid, | |
411 | + key: c.uid, | |
412 | + }; | |
413 | + }); | |
414 | + | |
415 | + setRequestCount(requestCount + 1); | |
416 | + return options; | |
417 | + }} | |
418 | + /> | |
419 | + | |
420 | + <ProFormSelect | |
421 | + name="members" | |
422 | + key="members" | |
423 | + width="lg" | |
424 | + showSearch | |
425 | + label="课题组成员" | |
426 | + placeholder="请添加课题组成员" | |
427 | + fieldProps={{ | |
428 | + mode: 'multiple', | |
429 | + filterOption() { | |
430 | + return true; | |
431 | + }, | |
432 | + optionItemRender(item: any) { | |
433 | + let name = item.realName + ' | ' + item.phone; | |
434 | + return ( | |
435 | + <div title={name}> | |
436 | + <span style={{ color: '#333333' }}>{name}</span> | |
437 | + </div> | |
438 | + ); | |
439 | + }, | |
440 | + }} | |
441 | + options={memberOptions} | |
442 | + /> | |
443 | + | |
444 | + <ProCard | |
445 | + title="选择或自定义课题组成员信息" | |
446 | + bordered | |
447 | + tooltip="从【客户信息】选择框中可以直接搜索客户,选中后自动添加到【课题组成员】中。也可以自定义输入【客户名称】和【手机号】,点击添加按钮手动添加到【课题组成员】中。" | |
448 | + > | |
449 | + <ProForm.Group> | |
450 | + <ProFormSelect | |
451 | + key="customerName" | |
452 | + label="客户信息(选择)" | |
453 | + width="lg" | |
454 | + showSearch | |
455 | + name="customerName" | |
456 | + placeholder="请选择客户信息" | |
457 | + onChange={(_, option) => { | |
458 | + autoFillCustomerInfo(option); | |
459 | + }} | |
460 | + fieldProps={{ | |
461 | + filterOption() { | |
462 | + return true; | |
463 | + }, | |
464 | + optionItemRender(item: any) { | |
465 | + if (item.type === 'add') { | |
466 | + return ( | |
467 | + <div title={item.name + '(新增客户)'}> | |
468 | + <span style={{ color: '#333333' }}>{item.name}</span> | |
469 | + {' | '} | |
470 | + <span style={{ color: 'orange' }}>自定义</span> | |
471 | + </div> | |
472 | + ); | |
473 | + } | |
474 | + | |
475 | + let title = ''; | |
476 | + let spanText = ''; | |
477 | + let realName = item.realName; | |
478 | + let phone = item.phone; | |
479 | + | |
480 | + title = | |
481 | + getDefaultString(realName) + | |
482 | + '|' + | |
483 | + getDefaultString(phone); | |
484 | + | |
485 | + spanText = | |
486 | + getDefaultString(realName) + | |
487 | + '|' + | |
488 | + getDefaultString(phone); | |
489 | + return ( | |
490 | + <div title={title}> | |
491 | + <span style={{ color: '#333333' }}>{spanText}</span> | |
492 | + </div> | |
493 | + ); | |
494 | + }, | |
495 | + }} | |
496 | + debounceTime={1000} | |
497 | + request={async (value, {}) => { | |
498 | + const keywords = value.keyWords; | |
499 | + if (keywords === '') { | |
500 | + return []; | |
501 | + } | |
502 | + const res = await postCanrdApiUserAddressList({ | |
503 | + data: { keywords: keywords }, | |
504 | + }); | |
505 | + let options = res?.data?.map((c: any) => { | |
506 | + return { | |
507 | + ...c, | |
508 | + label: c.name, | |
509 | + value: c.id, | |
510 | + key: c.id, | |
511 | + }; | |
512 | + }); | |
513 | + | |
514 | + //对options去重,realName和phone唯一 | |
515 | + options = deduplicateOptions(options); | |
516 | + | |
517 | + //第一个商品默认为要新增客户 | |
518 | + if (keywords.trim() !== '') { | |
519 | + options.unshift({ | |
520 | + name: keywords, | |
521 | + type: 'add', | |
522 | + label: keywords, | |
523 | + value: 3.1415926, | |
524 | + key: keywords, | |
525 | + }); | |
526 | + } | |
527 | + | |
528 | + return options; | |
529 | + }} | |
530 | + /> | |
531 | + </ProForm.Group> | |
532 | + | |
533 | + <ProForm.Group> | |
534 | + <ProFormText | |
535 | + name="realName" | |
536 | + label="客户名称(自定义)" | |
537 | + placeholder="请输入客户名称" | |
538 | + rules={[{ required: false, message: '请输入客户名称' }]} | |
539 | + /> | |
540 | + <ProFormText | |
541 | + name="phone" | |
542 | + label="手机号(自定义)" | |
543 | + width="md" | |
544 | + placeholder="请输入手机号" | |
545 | + rules={[{ required: false, message: '请输入手机号' }]} | |
546 | + /> | |
547 | + </ProForm.Group> | |
548 | + <Button | |
549 | + type="primary" | |
550 | + onClick={() => { | |
551 | + addCustomMember(); | |
552 | + }} | |
553 | + > | |
554 | + 添加 | |
555 | + </Button> | |
556 | + </ProCard> | |
557 | + </Spin> | |
558 | + </ModalForm> | |
559 | + </div> | |
560 | + ); | |
561 | +}; | ... | ... |
src/pages/ResearchGroup/components/ResearchGroupMemberRequestAddModal.tsx
0 → 100644
1 | +import { RESPONSE_CODE } from '@/constants/enum'; | |
2 | +import { | |
3 | + postCanrdApiUserAddressList, | |
4 | + postResearchGroupMemberRequestsAdd, | |
5 | + postResearchGroupMemberRequestsDetail, | |
6 | + postResearchGroupMemberRequestsEdit, | |
7 | + postResearchGroupsDetail, | |
8 | + postResearchGroupsList, | |
9 | +} from '@/services'; | |
10 | +import { getDefaultString, isEmpty } from '@/utils/StringUtil'; | |
11 | +import { getRandomNumber } from '@/utils/numberUtil'; | |
12 | + | |
13 | +import { validatePhoneNumberBool } from '@/utils/validators'; | |
14 | +import { | |
15 | + ModalForm, | |
16 | + ProCard, | |
17 | + ProForm, | |
18 | + ProFormSelect, | |
19 | + ProFormText, | |
20 | + ProFormTextArea, | |
21 | +} from '@ant-design/pro-components'; | |
22 | +import { Button, Form, Spin, message } from 'antd'; | |
23 | +import { cloneDeep } from 'lodash'; | |
24 | +import { useEffect, useState } from 'react'; | |
25 | +import '../index.less'; | |
26 | + | |
27 | +// import { cloneDeep } from 'lodash'; | |
28 | +export default ({ setVisible, requestId, onClose }) => { | |
29 | + const [form] = Form.useForm(); | |
30 | + const [memberOptions, setMemberOptions] = useState<any[]>([]); | |
31 | + const [requestInfo, setRequestInfo] = useState<any>(null); | |
32 | + const [modalLoading, setModalLoading] = useState(false); | |
33 | + const [groupOption, setGroupOption] = useState<any>(null); | |
34 | + const copyRequestId = cloneDeep(requestId); | |
35 | + | |
36 | + /** | |
37 | + * 获取课题组信息 | |
38 | + * @returns | |
39 | + */ | |
40 | + const loadRequestInfo = async () => { | |
41 | + if (copyRequestId === null) { | |
42 | + return; | |
43 | + } | |
44 | + setModalLoading(true); | |
45 | + let res = await postResearchGroupMemberRequestsDetail({ | |
46 | + data: { id: copyRequestId }, | |
47 | + }); | |
48 | + if (res && res.result === RESPONSE_CODE.SUCCESS) { | |
49 | + setRequestInfo(res.data); | |
50 | + } | |
51 | + setModalLoading(false); | |
52 | + }; | |
53 | + | |
54 | + /** | |
55 | + * 对options去重 | |
56 | + * @param options | |
57 | + * @returns | |
58 | + */ | |
59 | + function deduplicateOptions(options: any) { | |
60 | + const seen = new Set(); | |
61 | + const result: any[] = []; | |
62 | + options.forEach((option: any) => { | |
63 | + const uniqueKey = `${option.realName}-${option.phone}`; | |
64 | + if (!seen.has(uniqueKey)) { | |
65 | + seen.add(uniqueKey); | |
66 | + result.push(option); | |
67 | + } | |
68 | + }); | |
69 | + return result; | |
70 | + } | |
71 | + | |
72 | + /** | |
73 | + * 自动填充客户信息 | |
74 | + * @param option | |
75 | + */ | |
76 | + function autoFillCustomerInfo(option: any) { | |
77 | + if (!option) { | |
78 | + return; | |
79 | + } | |
80 | + let realName = option.realName; | |
81 | + let id = option.value; | |
82 | + if (id === 3.1415926) { | |
83 | + message.warning( | |
84 | + '请填写下方的【客户名称】和【手机号】,填写完成确保信息无误后点击添加按钮。', | |
85 | + ); | |
86 | + form.setFieldValue('realName', option.name); | |
87 | + return; | |
88 | + } | |
89 | + //判断当前客户信息是否已添加过:id匹配或者option的phone匹配说明添加过了 | |
90 | + let memberIds = form.getFieldValue('members'); | |
91 | + if (!memberIds) { | |
92 | + //表单项没值的时候默认是undefined。初始化为数组 | |
93 | + memberIds = []; | |
94 | + } | |
95 | + if (memberIds.includes(id)) { | |
96 | + message.info(`${realName} 重复添加`); | |
97 | + return; | |
98 | + } | |
99 | + //表单项的value添加当前option的value | |
100 | + memberIds.push(id); | |
101 | + | |
102 | + //如果是编辑,每次只保存一个 | |
103 | + if (requestInfo !== null) { | |
104 | + form.setFieldValue('members', [id]); | |
105 | + } else { | |
106 | + form.setFieldValue('members', memberIds); | |
107 | + } | |
108 | + | |
109 | + message.success(`${realName} 添加成功`); | |
110 | + //判断options中是否已经有这个option | |
111 | + for (let memberOption of memberOptions) { | |
112 | + if ( | |
113 | + memberIds.includes(memberOption.value) && | |
114 | + memberOption.phone === option.phone | |
115 | + ) { | |
116 | + return; | |
117 | + } | |
118 | + } | |
119 | + //option添加到memberOptions中 | |
120 | + let newMemberOptions = [...memberOptions]; | |
121 | + newMemberOptions.push(option); | |
122 | + setMemberOptions(newMemberOptions); | |
123 | + | |
124 | + //清空信息 | |
125 | + form.setFieldValue('realName', undefined); | |
126 | + form.setFieldValue('phone', undefined); | |
127 | + form.setFieldValue('customerName', null); | |
128 | + } | |
129 | + | |
130 | + /** | |
131 | + * 添加自定义成员 | |
132 | + */ | |
133 | + function addCustomMember() { | |
134 | + let realName = form.getFieldValue('realName'); | |
135 | + let phone = form.getFieldValue('phone'); | |
136 | + if (isEmpty(realName)) { | |
137 | + message.error('请填写客户名称'); | |
138 | + } | |
139 | + if (isEmpty(phone)) { | |
140 | + message.error('请填写手机号'); | |
141 | + } | |
142 | + if (!validatePhoneNumberBool(phone)) { | |
143 | + message.error('请填写正确格式的手机号'); | |
144 | + return; | |
145 | + } | |
146 | + let customOption = { | |
147 | + value: getRandomNumber(10), | |
148 | + realName: realName, | |
149 | + phone: phone, | |
150 | + }; | |
151 | + autoFillCustomerInfo(customOption); | |
152 | + } | |
153 | + | |
154 | + function parseFormValues(values: any) { | |
155 | + if (!values) { | |
156 | + return {}; | |
157 | + } | |
158 | + | |
159 | + let memberIds = values.members; | |
160 | + values.id = copyRequestId; | |
161 | + | |
162 | + //成员对象封装 | |
163 | + if (memberIds) { | |
164 | + let memberObjs: any[] = []; | |
165 | + for (let memberOption of memberOptions) { | |
166 | + if (memberIds.includes(memberOption.value)) { | |
167 | + memberObjs.push({ | |
168 | + memberName: memberOption.realName, | |
169 | + memberPhone: memberOption.phone, | |
170 | + id: memberOption.id, | |
171 | + groupId: memberOption.groupId, | |
172 | + }); | |
173 | + | |
174 | + values.memberName = memberOption.realName; | |
175 | + values.memberPhone = memberOption.phone; | |
176 | + } | |
177 | + } | |
178 | + values.members = memberObjs; | |
179 | + } | |
180 | + | |
181 | + //课题组信息封装 | |
182 | + if (groupOption) { | |
183 | + values.groupName = groupOption.groupName; | |
184 | + } | |
185 | + | |
186 | + return values; | |
187 | + } | |
188 | + | |
189 | + /** | |
190 | + * 设置表单默认信息 | |
191 | + * @returns | |
192 | + */ | |
193 | + const loadFormDefaultValue = async () => { | |
194 | + if (!requestInfo) { | |
195 | + return; | |
196 | + } | |
197 | + | |
198 | + let groupId = requestInfo.groupId; | |
199 | + if (groupId !== null) { | |
200 | + let res = await postResearchGroupsDetail({ data: { id: groupId } }); | |
201 | + if (res && res.result === RESPONSE_CODE.SUCCESS) { | |
202 | + setGroupOption(res.data); | |
203 | + } | |
204 | + | |
205 | + form.setFieldValue('groupId', groupId); | |
206 | + } | |
207 | + | |
208 | + form.setFieldValue('requestNotes', requestInfo.requestNotes); | |
209 | + | |
210 | + let memberName = requestInfo.memberName; | |
211 | + let memberPhone = requestInfo.memberPhone; | |
212 | + | |
213 | + let uid = getRandomNumber(10); | |
214 | + let newMemberOption = [ | |
215 | + { realName: memberName, phone: memberPhone, uid: uid, value: uid }, | |
216 | + ]; | |
217 | + setMemberOptions(newMemberOption); | |
218 | + //编辑只能选一个member | |
219 | + form.setFieldValue('members', [uid]); | |
220 | + }; | |
221 | + | |
222 | + useEffect(() => { | |
223 | + loadRequestInfo(); | |
224 | + }, []); | |
225 | + | |
226 | + useEffect(() => { | |
227 | + loadFormDefaultValue(); | |
228 | + }, [requestInfo]); | |
229 | + | |
230 | + return ( | |
231 | + <div className="research-group-index"> | |
232 | + <ModalForm | |
233 | + width={800} | |
234 | + open | |
235 | + title={requestInfo !== null ? '编辑申请信息' : '新增申请'} | |
236 | + form={form} | |
237 | + autoFocusFirstInput | |
238 | + submitter={{}} | |
239 | + modalProps={{ | |
240 | + okText: '提交', | |
241 | + cancelText: '关闭', | |
242 | + destroyOnClose: true, | |
243 | + onCancel: () => { | |
244 | + setVisible(false); | |
245 | + }, | |
246 | + }} | |
247 | + onFinish={async (values) => { | |
248 | + let newValues = parseFormValues(values); | |
249 | + let res; | |
250 | + if (requestInfo === null) { | |
251 | + res = await postResearchGroupMemberRequestsAdd({ | |
252 | + data: newValues, | |
253 | + }); | |
254 | + } else { | |
255 | + res = await postResearchGroupMemberRequestsEdit({ | |
256 | + data: newValues, | |
257 | + }); | |
258 | + } | |
259 | + if (res && res.result === RESPONSE_CODE.SUCCESS) { | |
260 | + message.success(res.message); | |
261 | + onClose(); | |
262 | + } | |
263 | + }} | |
264 | + onOpenChange={setVisible} | |
265 | + > | |
266 | + <Spin spinning={modalLoading} tip="加载中..."> | |
267 | + <ProForm.Group> | |
268 | + <ProFormSelect | |
269 | + name="groupId" | |
270 | + key="groupId" | |
271 | + width="lg" | |
272 | + showSearch | |
273 | + label="课题组" | |
274 | + placeholder="请选择课题组" | |
275 | + rules={[{ required: true, message: '请选择课题组' }]} | |
276 | + onChange={(_, option) => { | |
277 | + setGroupOption(option); | |
278 | + }} | |
279 | + fieldProps={{ | |
280 | + filterOption() { | |
281 | + return true; | |
282 | + }, | |
283 | + optionItemRender(item: any) { | |
284 | + let name = item.groupName + ' | ' + item.leaderName; | |
285 | + return ( | |
286 | + <div title={name}> | |
287 | + <span style={{ color: '#333333' }}>{name}</span> | |
288 | + </div> | |
289 | + ); | |
290 | + }, | |
291 | + }} | |
292 | + debounceTime={1000} | |
293 | + request={async (value, {}) => { | |
294 | + const groupName = value.keyWords; | |
295 | + let body = { groupName: groupName, pageSize: 20 }; | |
296 | + | |
297 | + const res = await postResearchGroupsList({ | |
298 | + data: body, | |
299 | + }); | |
300 | + let options = res?.data?.data?.map((c: any) => { | |
301 | + return { | |
302 | + ...c, | |
303 | + label: c.groupName, | |
304 | + value: c.id, | |
305 | + key: c.id, | |
306 | + }; | |
307 | + }); | |
308 | + return options; | |
309 | + }} | |
310 | + /> | |
311 | + </ProForm.Group> | |
312 | + | |
313 | + <ProFormSelect | |
314 | + name="members" | |
315 | + key="members" | |
316 | + width="lg" | |
317 | + showSearch | |
318 | + label="课题组成员" | |
319 | + placeholder="请添加课题组成员" | |
320 | + rules={[{ required: true, message: '请至少添加一个成员' }]} | |
321 | + fieldProps={{ | |
322 | + mode: 'multiple', | |
323 | + filterOption() { | |
324 | + return true; | |
325 | + }, | |
326 | + optionItemRender(item: any) { | |
327 | + let name = item.realName + ' | ' + item.phone; | |
328 | + return ( | |
329 | + <div title={name}> | |
330 | + <span style={{ color: '#333333' }}>{name}</span> | |
331 | + </div> | |
332 | + ); | |
333 | + }, | |
334 | + }} | |
335 | + options={memberOptions} | |
336 | + /> | |
337 | + | |
338 | + <ProCard | |
339 | + title="选择或自定义课题组成员信息" | |
340 | + bordered | |
341 | + tooltip="从【客户信息】选择框中可以直接搜索客户,选中后自动添加到【课题组成员】中。也可以自定义输入【客户名称】和【手机号】,点击添加按钮手动添加到【课题组成员】中。" | |
342 | + > | |
343 | + <ProForm.Group> | |
344 | + <ProFormSelect | |
345 | + key="customerName" | |
346 | + label="客户信息(选择)" | |
347 | + width="lg" | |
348 | + showSearch | |
349 | + name="customerName" | |
350 | + placeholder="请选择客户信息" | |
351 | + onChange={(_, option) => { | |
352 | + autoFillCustomerInfo(option); | |
353 | + }} | |
354 | + fieldProps={{ | |
355 | + filterOption() { | |
356 | + return true; | |
357 | + }, | |
358 | + optionItemRender(item: any) { | |
359 | + if (item.type === 'add') { | |
360 | + return ( | |
361 | + <div title={item.name + '(新增客户)'}> | |
362 | + <span style={{ color: '#333333' }}>{item.name}</span> | |
363 | + {' | '} | |
364 | + <span style={{ color: 'orange' }}>自定义</span> | |
365 | + </div> | |
366 | + ); | |
367 | + } | |
368 | + | |
369 | + let title = ''; | |
370 | + let spanText = ''; | |
371 | + let realName = item.realName; | |
372 | + let phone = item.phone; | |
373 | + | |
374 | + title = | |
375 | + getDefaultString(realName) + | |
376 | + '|' + | |
377 | + getDefaultString(phone); | |
378 | + | |
379 | + spanText = | |
380 | + getDefaultString(realName) + | |
381 | + '|' + | |
382 | + getDefaultString(phone); | |
383 | + return ( | |
384 | + <div title={title}> | |
385 | + <span style={{ color: '#333333' }}>{spanText}</span> | |
386 | + </div> | |
387 | + ); | |
388 | + }, | |
389 | + }} | |
390 | + debounceTime={1000} | |
391 | + request={async (value, {}) => { | |
392 | + const keywords = value.keyWords; | |
393 | + if (keywords === '') { | |
394 | + return []; | |
395 | + } | |
396 | + const res = await postCanrdApiUserAddressList({ | |
397 | + data: { keywords: keywords }, | |
398 | + }); | |
399 | + let options = res?.data?.map((c: any) => { | |
400 | + return { | |
401 | + ...c, | |
402 | + label: c.name, | |
403 | + value: c.id, | |
404 | + key: c.id, | |
405 | + }; | |
406 | + }); | |
407 | + | |
408 | + //对options去重,realName和phone唯一 | |
409 | + options = deduplicateOptions(options); | |
410 | + | |
411 | + //第一个商品默认为要新增客户 | |
412 | + if (keywords.trim() !== '') { | |
413 | + options.unshift({ | |
414 | + name: keywords, | |
415 | + type: 'add', | |
416 | + label: keywords, | |
417 | + value: 3.1415926, | |
418 | + key: keywords, | |
419 | + }); | |
420 | + } | |
421 | + | |
422 | + return options; | |
423 | + }} | |
424 | + /> | |
425 | + </ProForm.Group> | |
426 | + | |
427 | + <ProForm.Group> | |
428 | + <ProFormText | |
429 | + name="realName" | |
430 | + label="客户名称(自定义)" | |
431 | + placeholder="请输入客户名称" | |
432 | + rules={[{ required: false, message: '请输入客户名称' }]} | |
433 | + /> | |
434 | + <ProFormText | |
435 | + name="phone" | |
436 | + label="手机号(自定义)" | |
437 | + width="md" | |
438 | + placeholder="请输入手机号" | |
439 | + rules={[{ required: false, message: '请输入手机号' }]} | |
440 | + /> | |
441 | + </ProForm.Group> | |
442 | + <Button | |
443 | + type="primary" | |
444 | + onClick={() => { | |
445 | + addCustomMember(); | |
446 | + }} | |
447 | + > | |
448 | + 添加 | |
449 | + </Button> | |
450 | + </ProCard> | |
451 | + | |
452 | + <ProFormTextArea | |
453 | + name="requestNotes" | |
454 | + key="requestNotes" | |
455 | + label="申请备注" | |
456 | + /> | |
457 | + </Spin> | |
458 | + </ModalForm> | |
459 | + </div> | |
460 | + ); | |
461 | +}; | ... | ... |
src/pages/ResearchGroup/constant.tsx
0 → 100644
1 | +import { enumToProTableEnumValue } from '@/utils'; | |
2 | +export const AUDIT_STATUS_OPTIONS = { | |
3 | + CREATED: '未审核', | |
4 | + AUDIT_PASS: '审核通过', | |
5 | + AUDIT_FAIL: '审核失败', | |
6 | +}; | |
7 | +export const RESEARCH_GROUP_COLUMNS = [ | |
8 | + { | |
9 | + title: '序号', | |
10 | + dataIndex: 'index', | |
11 | + valueType: 'index', | |
12 | + width: 70, | |
13 | + }, | |
14 | + { | |
15 | + title: 'ID', | |
16 | + dataIndex: 'id', | |
17 | + key: 'id', | |
18 | + valueType: 'index', | |
19 | + hideInSearch: true, | |
20 | + hideInTable: true, | |
21 | + }, | |
22 | + { | |
23 | + title: '课题组名称', | |
24 | + dataIndex: 'groupName', | |
25 | + key: 'groupName', | |
26 | + fieldProps: { | |
27 | + placeholder: '请输入课题组名称', | |
28 | + }, | |
29 | + }, | |
30 | + { | |
31 | + title: '预存账号', | |
32 | + dataIndex: 'accounts', | |
33 | + key: 'accounts', | |
34 | + hideInSearch: true, | |
35 | + }, | |
36 | + { | |
37 | + title: '预存手机号', | |
38 | + dataIndex: 'accountPhone', | |
39 | + key: 'accountPhone', | |
40 | + hideInTable: true, | |
41 | + }, | |
42 | + { | |
43 | + title: '成员名称', | |
44 | + dataIndex: 'memberName', | |
45 | + key: 'memberName', | |
46 | + hideInTable: true, | |
47 | + }, | |
48 | + { | |
49 | + title: '成员手机号', | |
50 | + dataIndex: 'memberPhone', | |
51 | + key: 'memberPhone', | |
52 | + hideInTable: true, | |
53 | + }, | |
54 | + { | |
55 | + title: '课题组成员', | |
56 | + dataIndex: 'members', | |
57 | + key: 'members', | |
58 | + hideInSearch: true, | |
59 | + }, | |
60 | + { | |
61 | + title: '负责人', | |
62 | + dataIndex: 'leaderName', | |
63 | + key: 'leaderName', | |
64 | + fieldProps: { | |
65 | + placeholder: '请输入负责人姓名', | |
66 | + }, | |
67 | + }, | |
68 | + { | |
69 | + title: '创建时间', | |
70 | + dataIndex: 'createTime', | |
71 | + key: 'createTime', | |
72 | + valueType: 'dateTime', | |
73 | + fieldProps: { | |
74 | + placeholder: '请选择创建时间', | |
75 | + }, | |
76 | + hideInSearch: true, | |
77 | + }, | |
78 | + | |
79 | + { | |
80 | + title: '创建人', | |
81 | + dataIndex: 'createByName', | |
82 | + key: 'createByName', | |
83 | + fieldProps: { | |
84 | + placeholder: '请输入选择创建人', | |
85 | + }, | |
86 | + hideInSearch: true, | |
87 | + }, | |
88 | +]; | |
89 | + | |
90 | +export const RESEARCH_GROUP_MEMBER_REQUEST_COLUMNS = [ | |
91 | + { | |
92 | + title: '序号', | |
93 | + dataIndex: 'index', | |
94 | + valueType: 'index', | |
95 | + width: 70, | |
96 | + }, | |
97 | + { | |
98 | + title: '主键ID', | |
99 | + dataIndex: 'id', | |
100 | + key: 'id', | |
101 | + valueType: 'index', | |
102 | + hideInSearch: true, | |
103 | + hideInTable: true, | |
104 | + }, | |
105 | + { | |
106 | + title: '课题组名称', | |
107 | + dataIndex: 'groupName', | |
108 | + key: 'groupName', | |
109 | + fieldProps: { | |
110 | + placeholder: '请输入课题组名称', | |
111 | + }, | |
112 | + }, | |
113 | + { | |
114 | + title: '课题组ID', | |
115 | + dataIndex: 'groupId', | |
116 | + key: 'groupId', | |
117 | + hideInSearch: true, | |
118 | + }, | |
119 | + { | |
120 | + title: '成员名称', | |
121 | + dataIndex: 'memberName', | |
122 | + key: 'memberName', | |
123 | + }, | |
124 | + { | |
125 | + title: '成员手机号', | |
126 | + dataIndex: 'memberPhone', | |
127 | + key: 'memberPhone', | |
128 | + }, | |
129 | + { | |
130 | + title: '申请类型', | |
131 | + dataIndex: 'requestType', | |
132 | + key: 'requestType', | |
133 | + fieldProps: { | |
134 | + placeholder: '请输入申请类型:APPEND-新增 REMOVE-删除 MODIFY-修改', | |
135 | + }, | |
136 | + hideInTable: true, | |
137 | + hideInSearch: true, | |
138 | + }, | |
139 | + { | |
140 | + title: '审核状态', | |
141 | + dataIndex: 'auditStatusText', | |
142 | + key: 'auditStatusText', | |
143 | + valueType: 'select', | |
144 | + hideInSearch: true, | |
145 | + }, | |
146 | + { | |
147 | + title: '审核状态', | |
148 | + dataIndex: 'auditStatus', | |
149 | + key: 'auditStatus', | |
150 | + valueType: 'select', | |
151 | + valueEnum: enumToProTableEnumValue(AUDIT_STATUS_OPTIONS), | |
152 | + hideInTable: true, | |
153 | + }, | |
154 | + { | |
155 | + title: '申请备注', | |
156 | + dataIndex: 'requestNotes', | |
157 | + key: 'requestNotes', | |
158 | + }, | |
159 | + { | |
160 | + title: '审核备注', | |
161 | + dataIndex: 'auditNotes', | |
162 | + key: 'auditNotes', | |
163 | + }, | |
164 | + { | |
165 | + title: '创建时间', | |
166 | + dataIndex: 'createTime', | |
167 | + key: 'createTime', | |
168 | + valueType: 'dateTime', | |
169 | + fieldProps: { | |
170 | + placeholder: '请选择创建时间', | |
171 | + }, | |
172 | + hideInSearch: true, | |
173 | + }, | |
174 | + { | |
175 | + title: '创建人', | |
176 | + dataIndex: 'createByName', | |
177 | + key: 'createByName', | |
178 | + fieldProps: { | |
179 | + placeholder: '请输入创建人', | |
180 | + }, | |
181 | + hideInSearch: true, | |
182 | + }, | |
183 | +]; | ... | ... |
src/pages/ResearchGroup/index.less
0 → 100644
src/pages/ResearchGroup/index.tsx
0 → 100644
1 | +import ButtonConfirm from '@/components/ButtomConfirm'; | |
2 | +import EllipsisDiv from '@/components/Div/EllipsisDiv'; | |
3 | +import { RESPONSE_CODE } from '@/constants/enum'; | |
4 | +import {} from '@/pages/Invoice/constant'; | |
5 | +import { | |
6 | + postCanrdApiUserDetail, | |
7 | + postResearchGroupMemberRequestsDelete, | |
8 | + postResearchGroupMemberRequestsList, | |
9 | + postResearchGroupsDelete, | |
10 | + postResearchGroupsList, | |
11 | +} from '@/services'; | |
12 | +import { formatDateTime } from '@/utils'; | |
13 | +import { PlusOutlined } from '@ant-design/icons'; | |
14 | +import { ActionType, ProTable } from '@ant-design/pro-components'; | |
15 | +import { | |
16 | + Button, | |
17 | + Col, | |
18 | + Divider, | |
19 | + Image, | |
20 | + Popconfirm, | |
21 | + Row, | |
22 | + Space, | |
23 | + Spin, | |
24 | + Table, | |
25 | + Tabs, | |
26 | + Tag, | |
27 | + message, | |
28 | +} from 'antd'; | |
29 | +import React, { useRef, useState } from 'react'; | |
30 | +import AuditModal from './components/AuditModal'; | |
31 | +import ImportModal from './components/ImportModal'; | |
32 | +import ResearchGroupAddModal from './components/ResearchGroupAddModal'; | |
33 | +import ResearchGroupMemberRequestAddModal from './components/ResearchGroupMemberRequestAddModal'; | |
34 | +import { | |
35 | + RESEARCH_GROUP_COLUMNS, | |
36 | + RESEARCH_GROUP_MEMBER_REQUEST_COLUMNS, | |
37 | +} from './constant'; | |
38 | +import './index.less'; | |
39 | +const PrepaidPage = () => { | |
40 | + const researchGroupActionRef = useRef<ActionType>(); | |
41 | + const memberApplyActionRef = useRef<ActionType>(); | |
42 | + const [researchGroupAddModalVisible, setResearchGroupAddModalVisible] = | |
43 | + useState(false); | |
44 | + const [importModalVisible, setImportModalVisible] = useState(false); | |
45 | + const [auditIds, setAuditIds] = useState<any[]>([]); | |
46 | + const [auditModalVisible, setAuditModalVisible] = useState(false); | |
47 | + const [ | |
48 | + researchGroupMemberRequestAddModalVisible, | |
49 | + setResearchGroupMemberRequestAddModalVisible, | |
50 | + ] = useState(false); | |
51 | + // const [checkVisible, setCheckVisible] = useState(false); | |
52 | + const [accountInfo, setAccountInfo] = useState({ | |
53 | + realName: '', | |
54 | + phone: '', | |
55 | + nowMoney: '', | |
56 | + uid: '', | |
57 | + }); | |
58 | + const [accountInfoLoading, setAccountInfoLoading] = useState(false); | |
59 | + const [perms, setPerms] = useState<string[]>([]); | |
60 | + const [optRecordId, setOptRecordId] = useState<any>(null); | |
61 | + | |
62 | + const reloadResearchGroupTable = () => { | |
63 | + researchGroupActionRef.current?.reload(); | |
64 | + }; | |
65 | + | |
66 | + const reloadMemberApplyTable = () => { | |
67 | + memberApplyActionRef.current?.reload(); | |
68 | + }; | |
69 | + | |
70 | + // const getTableCellText = (target: any) => { | |
71 | + // if (!target) { | |
72 | + // return ''; | |
73 | + // } | |
74 | + | |
75 | + // if (target.props) { | |
76 | + // return target.props.text; | |
77 | + // } | |
78 | + | |
79 | + // return target; | |
80 | + // }; | |
81 | + | |
82 | + const renderMembersCell = (value: any) => { | |
83 | + if (!value) { | |
84 | + return <span></span>; | |
85 | + } | |
86 | + let tags = value.map((item: any) => { | |
87 | + let memberName = item.memberName; | |
88 | + let memberPhone = item.memberPhone; | |
89 | + return ( | |
90 | + <Tag | |
91 | + className="mt-1 mb-0" | |
92 | + key={item.id} | |
93 | + color="cyan" | |
94 | + title={memberName + ' | ' + memberPhone} | |
95 | + > | |
96 | + {memberName} | |
97 | + </Tag> | |
98 | + ); | |
99 | + }); | |
100 | + return <div className="whitespace-normal">{tags}</div>; | |
101 | + }; | |
102 | + | |
103 | + /** | |
104 | + * 获取预存账号信息 | |
105 | + * @param accountId | |
106 | + */ | |
107 | + const loadAccountInfo = async (accountId: any, phone: any) => { | |
108 | + setAccountInfoLoading(true); | |
109 | + let res = await postCanrdApiUserDetail({ | |
110 | + data: { uid: accountId, phone: phone }, | |
111 | + }); | |
112 | + if (res && res.result === RESPONSE_CODE.SUCCESS && res.data !== null) { | |
113 | + setAccountInfo(res.data); | |
114 | + } else { | |
115 | + setAccountInfo({ | |
116 | + realName: '加载失败', | |
117 | + phone: '加载失败', | |
118 | + nowMoney: '加载失败', | |
119 | + uid: '加载失败', | |
120 | + }); | |
121 | + } | |
122 | + setAccountInfoLoading(false); | |
123 | + }; | |
124 | + | |
125 | + const renderAccountsCell = (value: any) => { | |
126 | + if (!value) { | |
127 | + return <span></span>; | |
128 | + } | |
129 | + | |
130 | + return ( | |
131 | + <div className="whitespace-normal"> | |
132 | + {value.map((item: any) => { | |
133 | + let accountPhone = item.accountPhone; | |
134 | + let accountName = item.accountName; | |
135 | + let accountId = item.accountId; | |
136 | + return ( | |
137 | + <Popconfirm | |
138 | + key={item.id} | |
139 | + title="账号详情" | |
140 | + description={ | |
141 | + <div className="w-[170px]"> | |
142 | + {accountInfoLoading ? ( | |
143 | + <div> | |
144 | + <Spin /> | |
145 | + </div> | |
146 | + ) : ( | |
147 | + <div> | |
148 | + <Row gutter={4}> | |
149 | + <Col span={10}> | |
150 | + <div>编号:</div> | |
151 | + </Col> | |
152 | + <Col span={14}> | |
153 | + <div>{accountInfo.uid}</div> | |
154 | + </Col> | |
155 | + </Row> | |
156 | + <Row gutter={4}> | |
157 | + <Col span={10}> | |
158 | + <div>名称:</div> | |
159 | + </Col> | |
160 | + <Col span={14}> | |
161 | + <div>{accountInfo.realName}</div> | |
162 | + </Col> | |
163 | + </Row> | |
164 | + <Row gutter={4}> | |
165 | + <Col span={10}> | |
166 | + <div>手机号:</div> | |
167 | + </Col> | |
168 | + <Col span={14}> | |
169 | + <EllipsisDiv text={accountInfo.phone} /> | |
170 | + </Col> | |
171 | + </Row> | |
172 | + <Row gutter={4}> | |
173 | + <Col span={10}> | |
174 | + <div>余额:</div> | |
175 | + </Col> | |
176 | + <Col span={14}> | |
177 | + <div>{accountInfo.nowMoney}</div> | |
178 | + </Col> | |
179 | + </Row> | |
180 | + </div> | |
181 | + )} | |
182 | + </div> | |
183 | + } | |
184 | + cancelButtonProps={{ | |
185 | + hidden: true, | |
186 | + }} | |
187 | + okButtonProps={{ | |
188 | + hidden: true, | |
189 | + }} | |
190 | + > | |
191 | + <Tag | |
192 | + className="mt-1 mb-0 hover:cursor-pointer" | |
193 | + color="geekblue" | |
194 | + title={accountName + ' | ' + accountPhone} | |
195 | + onClick={() => { | |
196 | + loadAccountInfo(accountId, accountPhone); | |
197 | + }} | |
198 | + > | |
199 | + {accountName} | |
200 | + </Tag> | |
201 | + </Popconfirm> | |
202 | + ); | |
203 | + })} | |
204 | + </div> | |
205 | + ); | |
206 | + }; | |
207 | + | |
208 | + /** | |
209 | + * 删除课题组信息 | |
210 | + * @param ids | |
211 | + */ | |
212 | + const doDeleteResearchGroup = async (ids: any[]) => { | |
213 | + let res = await postResearchGroupsDelete({ | |
214 | + data: { ids: ids }, | |
215 | + }); | |
216 | + if (res && res.result === RESPONSE_CODE.SUCCESS) { | |
217 | + message.success(res.message); | |
218 | + reloadResearchGroupTable(); | |
219 | + } | |
220 | + }; | |
221 | + | |
222 | + /** | |
223 | + * 删除课题组信息 | |
224 | + * @param ids | |
225 | + */ | |
226 | + const doDeleteRequest = async (ids: any[]) => { | |
227 | + let res = await postResearchGroupMemberRequestsDelete({ | |
228 | + data: { ids: ids }, | |
229 | + }); | |
230 | + if (res && res.result === RESPONSE_CODE.SUCCESS) { | |
231 | + message.success(res.message); | |
232 | + reloadMemberApplyTable(); | |
233 | + } | |
234 | + }; | |
235 | + | |
236 | + /** | |
237 | + * 加载课题组列表表格的各个列格式 | |
238 | + */ | |
239 | + const researchGroupColumnsInit = () => { | |
240 | + let columns = RESEARCH_GROUP_COLUMNS.map((item) => { | |
241 | + let newItem = { ...item }; | |
242 | + let dataIndex = item.dataIndex; | |
243 | + | |
244 | + newItem.render = (text, record, index) => { | |
245 | + let textValue = record[dataIndex]; | |
246 | + | |
247 | + if (dataIndex.endsWith('Time')) { | |
248 | + textValue = formatDateTime(textValue); | |
249 | + } | |
250 | + | |
251 | + if (dataIndex === 'members') { | |
252 | + return renderMembersCell(textValue); | |
253 | + } | |
254 | + | |
255 | + if (dataIndex === 'accounts') { | |
256 | + return renderAccountsCell(textValue); | |
257 | + } | |
258 | + | |
259 | + if (dataIndex === 'index') { | |
260 | + textValue = index + 1; | |
261 | + } | |
262 | + | |
263 | + if ( | |
264 | + dataIndex === 'proofImages' && | |
265 | + textValue !== null && | |
266 | + textValue !== undefined | |
267 | + ) { | |
268 | + return ( | |
269 | + <Image.PreviewGroup | |
270 | + className="mr-10" | |
271 | + preview={{ | |
272 | + onChange: (current, prev) => | |
273 | + console.log(`current index: ${current}, prev index: ${prev}`), | |
274 | + }} | |
275 | + > | |
276 | + {textValue.map((item, index) => ( | |
277 | + <React.Fragment key={index}> | |
278 | + {index > 0 ? <Divider type="vertical" /> : ''} | |
279 | + <Image | |
280 | + className="max-h-[35px] max-w-[45px]" | |
281 | + src={item} | |
282 | + title={item} | |
283 | + />{' '} | |
284 | + </React.Fragment> | |
285 | + ))} | |
286 | + </Image.PreviewGroup> | |
287 | + ); | |
288 | + } | |
289 | + | |
290 | + return <EllipsisDiv text={textValue} />; | |
291 | + }; | |
292 | + | |
293 | + return newItem; | |
294 | + }); | |
295 | + | |
296 | + columns.push({ | |
297 | + title: '操作', | |
298 | + valueType: 'option', | |
299 | + key: 'option', | |
300 | + fixed: 'right', | |
301 | + width: 120, | |
302 | + render: (text, record) => { | |
303 | + let btns = []; | |
304 | + if (perms?.includes('modify')) { | |
305 | + btns.push( | |
306 | + <Button | |
307 | + className="p-0" | |
308 | + key="modify" | |
309 | + type="link" | |
310 | + onClick={() => { | |
311 | + setResearchGroupAddModalVisible(true); | |
312 | + setOptRecordId(record?.id); | |
313 | + }} | |
314 | + > | |
315 | + 编辑 | |
316 | + </Button>, | |
317 | + ); | |
318 | + } | |
319 | + | |
320 | + if (perms?.includes('delete')) { | |
321 | + btns.push( | |
322 | + <ButtonConfirm | |
323 | + key="delete" | |
324 | + className="p-0" | |
325 | + title={'确认删除这个课题组吗?'} | |
326 | + text="删除" | |
327 | + onConfirm={async () => { | |
328 | + doDeleteResearchGroup([record.id]); | |
329 | + }} | |
330 | + />, | |
331 | + ); | |
332 | + } | |
333 | + return btns; | |
334 | + }, | |
335 | + }); | |
336 | + | |
337 | + return columns; | |
338 | + }; | |
339 | + | |
340 | + /** | |
341 | + * 加载申请列表表格的各个列格式 | |
342 | + */ | |
343 | + const memberApplyColumnsInit = () => { | |
344 | + let columns = RESEARCH_GROUP_MEMBER_REQUEST_COLUMNS.map((item) => { | |
345 | + let newItem = { ...item }; | |
346 | + let dataIndex = item.dataIndex; | |
347 | + | |
348 | + newItem.render = (text, record, index) => { | |
349 | + let textValue = record[dataIndex]; | |
350 | + | |
351 | + if (dataIndex.endsWith('Time')) { | |
352 | + textValue = formatDateTime(textValue); | |
353 | + } | |
354 | + | |
355 | + if (dataIndex === 'members') { | |
356 | + return renderMembersCell(textValue); | |
357 | + } | |
358 | + | |
359 | + if (dataIndex === 'accounts') { | |
360 | + return renderAccountsCell(textValue); | |
361 | + } | |
362 | + | |
363 | + if (dataIndex === 'index') { | |
364 | + textValue = index + 1; | |
365 | + } | |
366 | + | |
367 | + if ( | |
368 | + dataIndex === 'proofImages' && | |
369 | + textValue !== null && | |
370 | + textValue !== undefined | |
371 | + ) { | |
372 | + return ( | |
373 | + <Image.PreviewGroup | |
374 | + className="mr-10" | |
375 | + preview={{ | |
376 | + onChange: (current, prev) => | |
377 | + console.log(`current index: ${current}, prev index: ${prev}`), | |
378 | + }} | |
379 | + > | |
380 | + {textValue.map((item, index) => ( | |
381 | + <React.Fragment key={index}> | |
382 | + {index > 0 ? <Divider type="vertical" /> : ''} | |
383 | + <Image | |
384 | + className="max-h-[35px] max-w-[45px]" | |
385 | + src={item} | |
386 | + title={item} | |
387 | + />{' '} | |
388 | + </React.Fragment> | |
389 | + ))} | |
390 | + </Image.PreviewGroup> | |
391 | + ); | |
392 | + } | |
393 | + | |
394 | + return <EllipsisDiv text={textValue} />; | |
395 | + }; | |
396 | + | |
397 | + return newItem; | |
398 | + }); | |
399 | + | |
400 | + columns.push({ | |
401 | + title: '操作', | |
402 | + valueType: 'option', | |
403 | + key: 'option', | |
404 | + fixed: 'right', | |
405 | + width: 120, | |
406 | + render: (text, record) => { | |
407 | + let btns = []; | |
408 | + if (record.permissions?.includes('modify')) { | |
409 | + btns.push( | |
410 | + <Button | |
411 | + className="p-0" | |
412 | + key="modify" | |
413 | + type="link" | |
414 | + onClick={() => { | |
415 | + setResearchGroupMemberRequestAddModalVisible(true); | |
416 | + setOptRecordId(record?.id); | |
417 | + }} | |
418 | + > | |
419 | + 编辑 | |
420 | + </Button>, | |
421 | + ); | |
422 | + } | |
423 | + | |
424 | + if (record.permissions?.includes('delete')) { | |
425 | + btns.push( | |
426 | + <ButtonConfirm | |
427 | + key="delete" | |
428 | + className="p-0" | |
429 | + title={'确认删除这个申请吗?'} | |
430 | + text="删除" | |
431 | + onConfirm={async () => { | |
432 | + doDeleteRequest([record.id]); | |
433 | + }} | |
434 | + />, | |
435 | + ); | |
436 | + } | |
437 | + | |
438 | + if (record.permissions?.includes('audit')) { | |
439 | + btns.push( | |
440 | + <Button | |
441 | + key="delete" | |
442 | + className="p-0" | |
443 | + type="link" | |
444 | + onClick={async () => { | |
445 | + setAuditIds([record.id]); | |
446 | + setAuditModalVisible(true); | |
447 | + }} | |
448 | + > | |
449 | + 审核 | |
450 | + </Button>, | |
451 | + ); | |
452 | + } | |
453 | + return btns; | |
454 | + }, | |
455 | + }); | |
456 | + | |
457 | + return columns; | |
458 | + }; | |
459 | + | |
460 | + const tabsItems = [ | |
461 | + { | |
462 | + key: 1, | |
463 | + label: '课题组列表', | |
464 | + children: ( | |
465 | + <ProTable | |
466 | + columns={researchGroupColumnsInit()} | |
467 | + actionRef={researchGroupActionRef} | |
468 | + cardBordered | |
469 | + pagination={{ | |
470 | + pageSize: 10, | |
471 | + }} | |
472 | + request={async (params) => { | |
473 | + const res = await postResearchGroupsList({ | |
474 | + data: { ...params }, | |
475 | + }); | |
476 | + setPerms(res.data.specialPath); | |
477 | + return { | |
478 | + data: res?.data?.data || [], | |
479 | + total: res?.data?.total || 0, | |
480 | + }; | |
481 | + }} | |
482 | + columnsState={{ | |
483 | + persistenceKey: 'pro-table-singe-research-group', | |
484 | + persistenceType: 'localStorage', | |
485 | + defaultValue: { | |
486 | + option: { fixed: 'right', disable: true }, | |
487 | + }, | |
488 | + onChange(value) { | |
489 | + console.log('value: ', value); | |
490 | + }, | |
491 | + }} | |
492 | + rowKey="id" | |
493 | + search={{ | |
494 | + labelWidth: 'auto', | |
495 | + }} | |
496 | + options={{ | |
497 | + setting: { | |
498 | + listsHeight: 400, | |
499 | + }, | |
500 | + }} | |
501 | + form={{}} | |
502 | + dateFormatter="string" | |
503 | + headerTitle="课题组列表" | |
504 | + scroll={{ x: 1400 }} | |
505 | + toolBarRender={() => { | |
506 | + let btns = []; | |
507 | + if (perms?.includes('add')) { | |
508 | + btns.push( | |
509 | + <Button | |
510 | + key="button" | |
511 | + icon={<PlusOutlined />} | |
512 | + onClick={() => { | |
513 | + setResearchGroupAddModalVisible(true); | |
514 | + }} | |
515 | + type="primary" | |
516 | + > | |
517 | + 新建 | |
518 | + </Button>, | |
519 | + ); | |
520 | + } | |
521 | + | |
522 | + if (perms?.includes('import')) { | |
523 | + btns.push( | |
524 | + <Button | |
525 | + key="button" | |
526 | + icon={<PlusOutlined />} | |
527 | + onClick={() => { | |
528 | + setImportModalVisible(true); | |
529 | + }} | |
530 | + type="primary" | |
531 | + > | |
532 | + 批量导入 | |
533 | + </Button>, | |
534 | + ); | |
535 | + } | |
536 | + | |
537 | + return btns; | |
538 | + }} | |
539 | + rowSelection={{ | |
540 | + // 自定义选择项参考: https://ant.design/components/table-cn/#components-table-demo-row-selection-custom | |
541 | + // 注释该行则默认不显示下拉选项 | |
542 | + selections: [Table.SELECTION_ALL, Table.SELECTION_INVERT], | |
543 | + defaultSelectedRowKeys: [], | |
544 | + }} | |
545 | + tableAlertOptionRender={({ selectedRows, onCleanSelected }) => { | |
546 | + let ids = selectedRows.map((item: any) => { | |
547 | + return item.id; | |
548 | + }); | |
549 | + return ( | |
550 | + <Space size={16}> | |
551 | + <ButtonConfirm | |
552 | + title="确认删除所选中的课题组信息吗?" | |
553 | + text="批量删除" | |
554 | + onConfirm={() => { | |
555 | + doDeleteResearchGroup(ids); | |
556 | + onCleanSelected(); | |
557 | + }} | |
558 | + /> | |
559 | + | |
560 | + <Button type="link" onClick={onCleanSelected}> | |
561 | + 取消选中 | |
562 | + </Button> | |
563 | + </Space> | |
564 | + ); | |
565 | + }} | |
566 | + /> | |
567 | + ), | |
568 | + }, | |
569 | + { | |
570 | + key: 2, | |
571 | + label: '申请列表', | |
572 | + children: ( | |
573 | + <ProTable | |
574 | + columns={memberApplyColumnsInit()} | |
575 | + actionRef={memberApplyActionRef} | |
576 | + cardBordered | |
577 | + pagination={{ | |
578 | + pageSize: 10, | |
579 | + }} | |
580 | + request={async (params) => { | |
581 | + const res = await postResearchGroupMemberRequestsList({ | |
582 | + data: { ...params }, | |
583 | + }); | |
584 | + setPerms(res.data.specialPath); | |
585 | + return { | |
586 | + data: res?.data?.data || [], | |
587 | + total: res?.data?.total || 0, | |
588 | + }; | |
589 | + }} | |
590 | + columnsState={{ | |
591 | + persistenceKey: 'pro-table-singe-research-group', | |
592 | + persistenceType: 'localStorage', | |
593 | + defaultValue: { | |
594 | + option: { fixed: 'right', disable: true }, | |
595 | + }, | |
596 | + onChange(value) { | |
597 | + console.log('value: ', value); | |
598 | + }, | |
599 | + }} | |
600 | + rowKey="id" | |
601 | + search={{ | |
602 | + labelWidth: 'auto', | |
603 | + }} | |
604 | + options={{ | |
605 | + setting: { | |
606 | + listsHeight: 400, | |
607 | + }, | |
608 | + }} | |
609 | + form={{}} | |
610 | + dateFormatter="string" | |
611 | + headerTitle="申请列表" | |
612 | + scroll={{ x: 1400 }} | |
613 | + toolBarRender={() => { | |
614 | + let btns = []; | |
615 | + btns.push( | |
616 | + <Button | |
617 | + key="button" | |
618 | + icon={<PlusOutlined />} | |
619 | + onClick={() => { | |
620 | + setResearchGroupMemberRequestAddModalVisible(true); | |
621 | + }} | |
622 | + type="primary" | |
623 | + > | |
624 | + 新建 | |
625 | + </Button>, | |
626 | + ); | |
627 | + return btns; | |
628 | + }} | |
629 | + rowSelection={{ | |
630 | + // 自定义选择项参考: https://ant.design/components/table-cn/#components-table-demo-row-selection-custom | |
631 | + // 注释该行则默认不显示下拉选项 | |
632 | + selections: [Table.SELECTION_ALL, Table.SELECTION_INVERT], | |
633 | + defaultSelectedRowKeys: [], | |
634 | + }} | |
635 | + tableAlertOptionRender={({ selectedRows, onCleanSelected }) => { | |
636 | + let ids = selectedRows.map((item: any) => { | |
637 | + return item.id; | |
638 | + }); | |
639 | + return ( | |
640 | + <Space size={16}> | |
641 | + <ButtonConfirm | |
642 | + title="确认删除所选中的课题组信息吗?" | |
643 | + text="批量删除" | |
644 | + onConfirm={() => { | |
645 | + doDeleteRequest(ids); | |
646 | + onCleanSelected(); | |
647 | + }} | |
648 | + /> | |
649 | + <Button | |
650 | + key="delete" | |
651 | + className="p-0" | |
652 | + type="link" | |
653 | + onClick={async () => { | |
654 | + setAuditIds(ids); | |
655 | + setAuditModalVisible(true); | |
656 | + }} | |
657 | + > | |
658 | + 批量审核 | |
659 | + </Button> | |
660 | + <Button type="link" onClick={onCleanSelected}> | |
661 | + 取消选中 | |
662 | + </Button> | |
663 | + </Space> | |
664 | + ); | |
665 | + }} | |
666 | + /> | |
667 | + ), | |
668 | + }, | |
669 | + ]; | |
670 | + return ( | |
671 | + <div className="research-group-index"> | |
672 | + <Tabs | |
673 | + defaultActiveKey="1" | |
674 | + items={tabsItems} | |
675 | + onChange={(value) => { | |
676 | + if (value === 1) { | |
677 | + reloadResearchGroupTable(); | |
678 | + } else { | |
679 | + reloadMemberApplyTable(); | |
680 | + } | |
681 | + }} | |
682 | + /> | |
683 | + | |
684 | + {researchGroupAddModalVisible && ( | |
685 | + <ResearchGroupAddModal | |
686 | + setVisible={(val: boolean) => { | |
687 | + setResearchGroupAddModalVisible(val); | |
688 | + if (!val) { | |
689 | + setOptRecordId(null); | |
690 | + } | |
691 | + }} | |
692 | + researchGroupId={optRecordId} | |
693 | + onClose={() => { | |
694 | + setResearchGroupAddModalVisible(false); | |
695 | + setOptRecordId(null); | |
696 | + reloadResearchGroupTable(); | |
697 | + }} | |
698 | + /> | |
699 | + )} | |
700 | + | |
701 | + {researchGroupMemberRequestAddModalVisible && ( | |
702 | + <ResearchGroupMemberRequestAddModal | |
703 | + setVisible={(val: boolean) => { | |
704 | + setResearchGroupMemberRequestAddModalVisible(val); | |
705 | + if (!val) { | |
706 | + setOptRecordId(null); | |
707 | + } | |
708 | + }} | |
709 | + requestId={optRecordId} | |
710 | + onClose={() => { | |
711 | + setResearchGroupMemberRequestAddModalVisible(false); | |
712 | + setOptRecordId(null); | |
713 | + reloadMemberApplyTable(); | |
714 | + }} | |
715 | + /> | |
716 | + )} | |
717 | + | |
718 | + {auditModalVisible && ( | |
719 | + <AuditModal | |
720 | + setVisible={(val: boolean) => { | |
721 | + setAuditModalVisible(val); | |
722 | + if (!val) { | |
723 | + setOptRecordId(null); | |
724 | + } | |
725 | + }} | |
726 | + ids={auditIds} | |
727 | + onClose={() => { | |
728 | + setAuditModalVisible(false); | |
729 | + setAuditIds([]); | |
730 | + reloadMemberApplyTable(); | |
731 | + }} | |
732 | + /> | |
733 | + )} | |
734 | + | |
735 | + {importModalVisible && ( | |
736 | + <ImportModal | |
737 | + onClose={() => { | |
738 | + setImportModalVisible(false); | |
739 | + reloadMemberApplyTable(); | |
740 | + }} | |
741 | + /> | |
742 | + )} | |
743 | + </div> | |
744 | + ); | |
745 | +}; | |
746 | + | |
747 | +export default PrepaidPage; | ... | ... |
src/services/definition.ts
... | ... | @@ -86,6 +86,8 @@ export interface AdminAuthUserVO { |
86 | 86 | export interface AdminDeptQueryVO { |
87 | 87 | /** @format int32 */ |
88 | 88 | current?: number; |
89 | + /** @format int32 */ | |
90 | + end?: number; | |
89 | 91 | /** @format int64 */ |
90 | 92 | id?: number; |
91 | 93 | ids?: Array<number>; |
... | ... | @@ -95,6 +97,8 @@ export interface AdminDeptQueryVO { |
95 | 97 | /** @format int64 */ |
96 | 98 | pid?: number; |
97 | 99 | /** @format int32 */ |
100 | + start?: number; | |
101 | + /** @format int32 */ | |
98 | 102 | total?: number; |
99 | 103 | } |
100 | 104 | |
... | ... | @@ -109,6 +113,8 @@ export interface AdminDeptVO { |
109 | 113 | export interface AdminJobQueryVO { |
110 | 114 | /** @format int32 */ |
111 | 115 | current?: number; |
116 | + /** @format int32 */ | |
117 | + end?: number; | |
112 | 118 | /** @format int64 */ |
113 | 119 | id?: number; |
114 | 120 | ids?: Array<number>; |
... | ... | @@ -118,6 +124,8 @@ export interface AdminJobQueryVO { |
118 | 124 | /** @format int32 */ |
119 | 125 | sort?: number; |
120 | 126 | /** @format int32 */ |
127 | + start?: number; | |
128 | + /** @format int32 */ | |
121 | 129 | total?: number; |
122 | 130 | } |
123 | 131 | |
... | ... | @@ -136,6 +144,8 @@ export interface AdminMenuQueryVO { |
136 | 144 | /** @format int32 */ |
137 | 145 | current?: number; |
138 | 146 | /** @format int32 */ |
147 | + end?: number; | |
148 | + /** @format int32 */ | |
139 | 149 | hidden?: number; |
140 | 150 | icon?: string; |
141 | 151 | /** @format int64 */ |
... | ... | @@ -151,6 +161,8 @@ export interface AdminMenuQueryVO { |
151 | 161 | /** @format int64 */ |
152 | 162 | pid?: number; |
153 | 163 | /** @format int32 */ |
164 | + start?: number; | |
165 | + /** @format int32 */ | |
154 | 166 | total?: number; |
155 | 167 | /** @format int32 */ |
156 | 168 | type?: number; |
... | ... | @@ -181,6 +193,8 @@ export interface AdminRoleQueryVO { |
181 | 193 | /** @format int32 */ |
182 | 194 | current?: number; |
183 | 195 | dataScope?: string; |
196 | + /** @format int32 */ | |
197 | + end?: number; | |
184 | 198 | /** @format int64 */ |
185 | 199 | id?: number; |
186 | 200 | ids?: Array<number>; |
... | ... | @@ -192,6 +206,8 @@ export interface AdminRoleQueryVO { |
192 | 206 | permission?: string; |
193 | 207 | remark?: string; |
194 | 208 | /** @format int32 */ |
209 | + start?: number; | |
210 | + /** @format int32 */ | |
195 | 211 | total?: number; |
196 | 212 | } |
197 | 213 | |
... | ... | @@ -209,22 +225,30 @@ export interface AdminUserLoginByPhoneVO { |
209 | 225 | /** @format int32 */ |
210 | 226 | current?: number; |
211 | 227 | /** @format int32 */ |
228 | + end?: number; | |
229 | + /** @format int32 */ | |
212 | 230 | pageSize?: number; |
213 | 231 | phone?: string; |
214 | 232 | smsCaptchaCode?: string; |
215 | 233 | /** @format int32 */ |
234 | + start?: number; | |
235 | + /** @format int32 */ | |
216 | 236 | total?: number; |
217 | 237 | } |
218 | 238 | |
219 | 239 | export interface AdminUserLoginByPwdVO { |
220 | 240 | /** @format int32 */ |
221 | 241 | current?: number; |
242 | + /** @format int32 */ | |
243 | + end?: number; | |
222 | 244 | imgCaptchaCode?: string; |
223 | 245 | imgCaptchaUuid?: string; |
224 | 246 | /** @format int32 */ |
225 | 247 | pageSize?: number; |
226 | 248 | password?: string; |
227 | 249 | /** @format int32 */ |
250 | + start?: number; | |
251 | + /** @format int32 */ | |
228 | 252 | total?: number; |
229 | 253 | userName?: string; |
230 | 254 | } |
... | ... | @@ -234,11 +258,15 @@ export interface AdminUserModifyPwdVO { |
234 | 258 | /** @format int32 */ |
235 | 259 | current?: number; |
236 | 260 | /** @format int32 */ |
261 | + end?: number; | |
262 | + /** @format int32 */ | |
237 | 263 | pageSize?: number; |
238 | 264 | password?: string; |
239 | 265 | phone?: string; |
240 | 266 | smsCaptchaCode?: string; |
241 | 267 | /** @format int32 */ |
268 | + start?: number; | |
269 | + /** @format int32 */ | |
242 | 270 | total?: number; |
243 | 271 | } |
244 | 272 | |
... | ... | @@ -246,8 +274,12 @@ export interface AdminUserPasswordRecoverEmailVO { |
246 | 274 | /** @format int32 */ |
247 | 275 | current?: number; |
248 | 276 | /** @format int32 */ |
277 | + end?: number; | |
278 | + /** @format int32 */ | |
249 | 279 | pageSize?: number; |
250 | 280 | /** @format int32 */ |
281 | + start?: number; | |
282 | + /** @format int32 */ | |
251 | 283 | total?: number; |
252 | 284 | userName?: string; |
253 | 285 | } |
... | ... | @@ -256,6 +288,8 @@ export interface AdminUserQueryVO { |
256 | 288 | /** @format int32 */ |
257 | 289 | current?: number; |
258 | 290 | email?: string; |
291 | + /** @format int32 */ | |
292 | + end?: number; | |
259 | 293 | /** @format int64 */ |
260 | 294 | id?: number; |
261 | 295 | ids?: Array<number>; |
... | ... | @@ -266,6 +300,8 @@ export interface AdminUserQueryVO { |
266 | 300 | phone?: string; |
267 | 301 | sex?: string; |
268 | 302 | /** @format int32 */ |
303 | + start?: number; | |
304 | + /** @format int32 */ | |
269 | 305 | total?: number; |
270 | 306 | userName?: string; |
271 | 307 | workerType?: string; |
... | ... | @@ -276,6 +312,8 @@ export interface AdminUserRegisterVO { |
276 | 312 | /** @format int32 */ |
277 | 313 | current?: number; |
278 | 314 | email?: string; |
315 | + /** @format int32 */ | |
316 | + end?: number; | |
279 | 317 | isAgreeAgreement?: boolean; |
280 | 318 | /** @format int32 */ |
281 | 319 | pageSize?: number; |
... | ... | @@ -285,6 +323,8 @@ export interface AdminUserRegisterVO { |
285 | 323 | safeQuestion?: string; |
286 | 324 | smsCaptchaCode?: string; |
287 | 325 | /** @format int32 */ |
326 | + start?: number; | |
327 | + /** @format int32 */ | |
288 | 328 | total?: number; |
289 | 329 | userName?: string; |
290 | 330 | } |
... | ... | @@ -480,8 +520,12 @@ export interface ApiOrderCustomersRequest { |
480 | 520 | /** @format int32 */ |
481 | 521 | current?: number; |
482 | 522 | /** @format int32 */ |
523 | + end?: number; | |
524 | + /** @format int32 */ | |
483 | 525 | pageSize?: number; |
484 | 526 | /** @format int32 */ |
527 | + start?: number; | |
528 | + /** @format int32 */ | |
485 | 529 | total?: number; |
486 | 530 | } |
487 | 531 | |
... | ... | @@ -552,11 +596,15 @@ export interface AuditDto { |
552 | 596 | export interface AuditVO { |
553 | 597 | /** @format int32 */ |
554 | 598 | current?: number; |
599 | + /** @format int32 */ | |
600 | + end?: number; | |
555 | 601 | /** @format int64 */ |
556 | 602 | id?: number; |
557 | 603 | /** @format int32 */ |
558 | 604 | pageSize?: number; |
559 | 605 | /** @format int32 */ |
606 | + start?: number; | |
607 | + /** @format int32 */ | |
560 | 608 | status?: number; |
561 | 609 | /** @format int32 */ |
562 | 610 | total?: number; |
... | ... | @@ -626,16 +674,32 @@ export interface CancelSendOrderDto { |
626 | 674 | export interface CaptchaMessageVO { |
627 | 675 | /** @format int32 */ |
628 | 676 | current?: number; |
677 | + /** @format int32 */ | |
678 | + end?: number; | |
629 | 679 | imgCaptchaCode?: string; |
630 | 680 | imgCaptchaUuid?: string; |
631 | 681 | /** @format int32 */ |
632 | 682 | pageSize?: number; |
633 | 683 | phone?: string; |
634 | 684 | /** @format int32 */ |
685 | + start?: number; | |
686 | + /** @format int32 */ | |
635 | 687 | total?: number; |
636 | 688 | type?: string; |
637 | 689 | } |
638 | 690 | |
691 | +export interface CommonAuditRequest { | |
692 | + extend?: any; | |
693 | + /** | |
694 | + * @description | |
695 | + * id集合 | |
696 | + */ | |
697 | + ids?: Array<string>; | |
698 | + notes?: string; | |
699 | + pass?: boolean; | |
700 | + type?: string; | |
701 | +} | |
702 | + | |
639 | 703 | export interface Contactperson { |
640 | 704 | birthday?: string; |
641 | 705 | contactAddress?: string; |
... | ... | @@ -823,6 +887,8 @@ export interface DictionaryQueryVO { |
823 | 887 | dictCode?: string; |
824 | 888 | dictName?: string; |
825 | 889 | dictValue?: string; |
890 | + /** @format int32 */ | |
891 | + end?: number; | |
826 | 892 | /** @format int64 */ |
827 | 893 | id?: number; |
828 | 894 | ids?: Array<number>; |
... | ... | @@ -832,6 +898,8 @@ export interface DictionaryQueryVO { |
832 | 898 | /** @format int32 */ |
833 | 899 | sort?: number; |
834 | 900 | /** @format int32 */ |
901 | + start?: number; | |
902 | + /** @format int32 */ | |
835 | 903 | total?: number; |
836 | 904 | } |
837 | 905 | |
... | ... | @@ -882,6 +950,8 @@ export interface FilePathDto { |
882 | 950 | url?: string; |
883 | 951 | } |
884 | 952 | |
953 | +export type InputStream = any; | |
954 | + | |
885 | 955 | export interface InventoryMaterialStockReq { |
886 | 956 | auxPropId?: string; |
887 | 957 | isShowStockPosition?: boolean; |
... | ... | @@ -1132,10 +1202,14 @@ export interface MeasureUnitListResRow { |
1132 | 1202 | export interface MessageQueryDTO { |
1133 | 1203 | /** @format int32 */ |
1134 | 1204 | current?: number; |
1205 | + /** @format int32 */ | |
1206 | + end?: number; | |
1135 | 1207 | isReaded?: string; |
1136 | 1208 | /** @format int32 */ |
1137 | 1209 | pageSize?: number; |
1138 | 1210 | /** @format int32 */ |
1211 | + start?: number; | |
1212 | + /** @format int32 */ | |
1139 | 1213 | total?: number; |
1140 | 1214 | username?: string; |
1141 | 1215 | } |
... | ... | @@ -1171,6 +1245,8 @@ export interface OrderAuditLogQueryVO { |
1171 | 1245 | applyId?: number; |
1172 | 1246 | /** @format int32 */ |
1173 | 1247 | current?: number; |
1248 | + /** @format int32 */ | |
1249 | + end?: number; | |
1174 | 1250 | /** @format int64 */ |
1175 | 1251 | id?: number; |
1176 | 1252 | ids?: Array<number>; |
... | ... | @@ -1180,6 +1256,8 @@ export interface OrderAuditLogQueryVO { |
1180 | 1256 | /** @format int32 */ |
1181 | 1257 | pageSize?: number; |
1182 | 1258 | /** @format int32 */ |
1259 | + start?: number; | |
1260 | + /** @format int32 */ | |
1183 | 1261 | total?: number; |
1184 | 1262 | } |
1185 | 1263 | |
... | ... | @@ -1214,6 +1292,8 @@ export interface OrderBaseInfoQueryVO { |
1214 | 1292 | customerCode?: string; |
1215 | 1293 | customerPo?: string; |
1216 | 1294 | customerStyle?: string; |
1295 | + /** @format int32 */ | |
1296 | + end?: number; | |
1217 | 1297 | /** @format int64 */ |
1218 | 1298 | id?: number; |
1219 | 1299 | ids?: Array<number>; |
... | ... | @@ -1235,6 +1315,8 @@ export interface OrderBaseInfoQueryVO { |
1235 | 1315 | productionDepartmentConsignTime?: string; |
1236 | 1316 | projectNo?: string; |
1237 | 1317 | /** @format int32 */ |
1318 | + start?: number; | |
1319 | + /** @format int32 */ | |
1238 | 1320 | total?: number; |
1239 | 1321 | } |
1240 | 1322 | |
... | ... | @@ -1295,6 +1377,8 @@ export interface OrderFieldLockApplyQueryVO { |
1295 | 1377 | auditUserId?: number; |
1296 | 1378 | /** @format int32 */ |
1297 | 1379 | current?: number; |
1380 | + /** @format int32 */ | |
1381 | + end?: number; | |
1298 | 1382 | fields?: string; |
1299 | 1383 | /** @format int64 */ |
1300 | 1384 | id?: number; |
... | ... | @@ -1304,6 +1388,8 @@ export interface OrderFieldLockApplyQueryVO { |
1304 | 1388 | /** @format int32 */ |
1305 | 1389 | pageSize?: number; |
1306 | 1390 | /** @format int32 */ |
1391 | + start?: number; | |
1392 | + /** @format int32 */ | |
1307 | 1393 | status?: number; |
1308 | 1394 | statusList?: Array<number>; |
1309 | 1395 | /** @format int32 */ |
... | ... | @@ -1352,6 +1438,8 @@ export interface OrderInspectionStageVO { |
1352 | 1438 | export interface OrderOptLogQueryVO { |
1353 | 1439 | /** @format int32 */ |
1354 | 1440 | current?: number; |
1441 | + /** @format int32 */ | |
1442 | + end?: number; | |
1355 | 1443 | /** @format int64 */ |
1356 | 1444 | id?: number; |
1357 | 1445 | ids?: Array<number>; |
... | ... | @@ -1360,6 +1448,8 @@ export interface OrderOptLogQueryVO { |
1360 | 1448 | /** @format int32 */ |
1361 | 1449 | pageSize?: number; |
1362 | 1450 | /** @format int32 */ |
1451 | + start?: number; | |
1452 | + /** @format int32 */ | |
1363 | 1453 | total?: number; |
1364 | 1454 | } |
1365 | 1455 | |
... | ... | @@ -1409,6 +1499,93 @@ export interface OrderProfitAnalysisVo { |
1409 | 1499 | orderIds?: Array<number>; |
1410 | 1500 | } |
1411 | 1501 | |
1502 | +export interface OrderStageFileDo { | |
1503 | + file?: File; | |
1504 | +} | |
1505 | + | |
1506 | +export interface OrderStagesDelDo { | |
1507 | + deviceIds?: Array<number>; | |
1508 | + ids?: Array<number>; | |
1509 | +} | |
1510 | + | |
1511 | +export interface OrderStagesDeviceDo { | |
1512 | + /** @format int32 */ | |
1513 | + count?: number; | |
1514 | + createByName?: string; | |
1515 | + /** @format date-time */ | |
1516 | + createTime?: string; | |
1517 | + deviceModel?: string; | |
1518 | + deviceName?: string; | |
1519 | + /** @format int32 */ | |
1520 | + did?: number; | |
1521 | + logicDelete?: boolean; | |
1522 | + /** @format double */ | |
1523 | + price?: number; | |
1524 | + /** @format double */ | |
1525 | + unitPrice?: number; | |
1526 | + updateByName?: string; | |
1527 | + /** @format date-time */ | |
1528 | + updateTime?: string; | |
1529 | +} | |
1530 | + | |
1531 | +export interface OrderStagesFromDo { | |
1532 | + annex?: string; | |
1533 | + contract?: string; | |
1534 | + createByName?: string; | |
1535 | + /** @format date-time */ | |
1536 | + createTime?: string; | |
1537 | + /** @format date-time */ | |
1538 | + dateRange?: string; | |
1539 | + /** @format int32 */ | |
1540 | + id?: number; | |
1541 | + logicDelete?: boolean; | |
1542 | + orderStagesDeviceDoList?: Array<OrderStagesDeviceDo>; | |
1543 | + payWay?: string; | |
1544 | + remark?: string; | |
1545 | + terminal?: string; | |
1546 | + /** @format double */ | |
1547 | + totalPrice?: number; | |
1548 | + updateByName?: string; | |
1549 | + /** @format date-time */ | |
1550 | + updateTime?: string; | |
1551 | + vendor?: string; | |
1552 | + /** @format int32 */ | |
1553 | + version?: number; | |
1554 | +} | |
1555 | + | |
1556 | +export interface OrderStagesPayWay { | |
1557 | + /** @format date-time */ | |
1558 | + dateRange?: string; | |
1559 | + fileName?: string; | |
1560 | + fileUrl?: string; | |
1561 | + /** @format int32 */ | |
1562 | + id?: number; | |
1563 | + /** @format int32 */ | |
1564 | + number?: number; | |
1565 | + /** @format int32 */ | |
1566 | + ossId?: number; | |
1567 | +} | |
1568 | + | |
1569 | +export interface OrderStagesPayWayDo { | |
1570 | + /** @format int32 */ | |
1571 | + ossId?: number; | |
1572 | +} | |
1573 | + | |
1574 | +export interface OrderStagesPayWayFileDo { | |
1575 | + fileList?: Array<OrderStageFileDo>; | |
1576 | +} | |
1577 | + | |
1578 | +export interface OrderStagesSelDo { | |
1579 | + contract?: string; | |
1580 | + /** @format date-time */ | |
1581 | + dateRange?: string; | |
1582 | + deviceName?: string; | |
1583 | + /** @format int64 */ | |
1584 | + id?: number; | |
1585 | + terminal?: string; | |
1586 | + vendor?: string; | |
1587 | +} | |
1588 | + | |
1412 | 1589 | export interface OrderTrackStageFieldVO { |
1413 | 1590 | aitexTestFinishResult?: string; |
1414 | 1591 | aitexTestSendTime?: string; |
... | ... | @@ -1558,6 +1735,8 @@ export interface QueryBankStatementDto { |
1558 | 1735 | collectionDatetimeEnd?: string; |
1559 | 1736 | /** @format int32 */ |
1560 | 1737 | current?: number; |
1738 | + /** @format int32 */ | |
1739 | + end?: number; | |
1561 | 1740 | /** @format int64 */ |
1562 | 1741 | id?: number; |
1563 | 1742 | /** @format int32 */ |
... | ... | @@ -1579,6 +1758,8 @@ export interface QueryBankStatementDto { |
1579 | 1758 | remark?: string; |
1580 | 1759 | remarkNote?: string; |
1581 | 1760 | serialNumber?: string; |
1761 | + /** @format int32 */ | |
1762 | + start?: number; | |
1582 | 1763 | status?: string; |
1583 | 1764 | /** @format int32 */ |
1584 | 1765 | total?: number; |
... | ... | @@ -1668,11 +1849,341 @@ export interface ReissueInvoiceDto { |
1668 | 1849 | notes?: string; |
1669 | 1850 | } |
1670 | 1851 | |
1852 | +export interface ResearchGroupAccountAddRequest { | |
1853 | + /** | |
1854 | + * @description | |
1855 | + * 关联的账号id | |
1856 | + * @format int64 | |
1857 | + */ | |
1858 | + accountId?: number; | |
1859 | + /** | |
1860 | + * @description | |
1861 | + * 关联的账号名称 | |
1862 | + */ | |
1863 | + accountName?: string; | |
1864 | + /** | |
1865 | + * @description | |
1866 | + * 关联的账号手机号 | |
1867 | + */ | |
1868 | + accountPhone?: string; | |
1869 | + /** | |
1870 | + * @description | |
1871 | + * 课题组id | |
1872 | + * @format int64 | |
1873 | + */ | |
1874 | + groupId?: number; | |
1875 | +} | |
1876 | + | |
1877 | +export interface ResearchGroupAccountEditRequest { | |
1878 | + /** | |
1879 | + * @description | |
1880 | + * 关联的账号id | |
1881 | + * @format int64 | |
1882 | + */ | |
1883 | + accountId?: number; | |
1884 | + /** | |
1885 | + * @description | |
1886 | + * 关联的账号名称 | |
1887 | + */ | |
1888 | + accountName?: string; | |
1889 | + /** | |
1890 | + * @description | |
1891 | + * 关联的账号手机号 | |
1892 | + */ | |
1893 | + accountPhone?: string; | |
1894 | + /** | |
1895 | + * @description | |
1896 | + * 课题组id | |
1897 | + * @format int64 | |
1898 | + */ | |
1899 | + groupId?: number; | |
1900 | + /** | |
1901 | + * @description | |
1902 | + * 主键id | |
1903 | + * @format int64 | |
1904 | + */ | |
1905 | + id?: number; | |
1906 | +} | |
1907 | + | |
1908 | +export interface ResearchGroupAddRequest { | |
1909 | + accounts?: Array<ResearchGroupAccountAddRequest>; | |
1910 | + /** | |
1911 | + * @description | |
1912 | + * 课题组名称 | |
1913 | + */ | |
1914 | + group?: string; | |
1915 | + /** | |
1916 | + * @description | |
1917 | + * 课题组负责人 | |
1918 | + */ | |
1919 | + leader?: string; | |
1920 | + members?: Array<ResearchGroupMemberAddRequest>; | |
1921 | +} | |
1922 | + | |
1923 | +export interface ResearchGroupDeleteRequest { | |
1924 | + /** | |
1925 | + * @description | |
1926 | + * 主键id | |
1927 | + */ | |
1928 | + ids?: Array<number>; | |
1929 | +} | |
1930 | + | |
1931 | +export interface ResearchGroupDetailRequest { | |
1932 | + /** | |
1933 | + * @description | |
1934 | + * 主键id | |
1935 | + * @format int64 | |
1936 | + */ | |
1937 | + id?: number; | |
1938 | +} | |
1939 | + | |
1940 | +export interface ResearchGroupEditRequest { | |
1941 | + /** | |
1942 | + * @description | |
1943 | + * 课题组预存账号 | |
1944 | + */ | |
1945 | + accounts?: Array<ResearchGroupAccountEditRequest>; | |
1946 | + /** | |
1947 | + * @description | |
1948 | + * 课题组名称 | |
1949 | + */ | |
1950 | + group?: string; | |
1951 | + /** | |
1952 | + * @description | |
1953 | + * 主键id | |
1954 | + * @format int64 | |
1955 | + */ | |
1956 | + id?: number; | |
1957 | + /** | |
1958 | + * @description | |
1959 | + * 课题组负责人 | |
1960 | + */ | |
1961 | + leader?: string; | |
1962 | + /** | |
1963 | + * @description | |
1964 | + * 课题组成员集合 | |
1965 | + */ | |
1966 | + members?: Array<ResearchGroupMemberEditRequest>; | |
1967 | +} | |
1968 | + | |
1969 | +export interface ResearchGroupListRequest { | |
1970 | + /** | |
1971 | + * @description | |
1972 | + * 预存账号手机号 | |
1973 | + */ | |
1974 | + accountPhone?: string; | |
1975 | + /** @format int32 */ | |
1976 | + current?: number; | |
1977 | + /** @format int32 */ | |
1978 | + end?: number; | |
1979 | + /** | |
1980 | + * @description | |
1981 | + * 课题组名称 | |
1982 | + */ | |
1983 | + groupName?: string; | |
1984 | + /** | |
1985 | + * @description | |
1986 | + * 课题组负责人 | |
1987 | + */ | |
1988 | + leaderName?: string; | |
1989 | + /** | |
1990 | + * @description | |
1991 | + * 课题组成员名称 | |
1992 | + */ | |
1993 | + memberName?: string; | |
1994 | + /** | |
1995 | + * @description | |
1996 | + * 课题组成员手机号 | |
1997 | + */ | |
1998 | + memberPhone?: string; | |
1999 | + /** @format int32 */ | |
2000 | + pageSize?: number; | |
2001 | + /** @format int32 */ | |
2002 | + start?: number; | |
2003 | + /** @format int32 */ | |
2004 | + total?: number; | |
2005 | +} | |
2006 | + | |
2007 | +export interface ResearchGroupMemberAddRequest { | |
2008 | + /** | |
2009 | + * @description | |
2010 | + * 课题组ID | |
2011 | + * @format int64 | |
2012 | + */ | |
2013 | + groupId?: number; | |
2014 | + /** | |
2015 | + * @description | |
2016 | + * 成员名称 | |
2017 | + */ | |
2018 | + memberName?: string; | |
2019 | + /** | |
2020 | + * @description | |
2021 | + * 成员手机号 | |
2022 | + */ | |
2023 | + memberPhone?: string; | |
2024 | +} | |
2025 | + | |
2026 | +export interface ResearchGroupMemberEditRequest { | |
2027 | + /** | |
2028 | + * @description | |
2029 | + * 课题组ID | |
2030 | + * @format int64 | |
2031 | + */ | |
2032 | + groupId?: number; | |
2033 | + /** | |
2034 | + * @description | |
2035 | + * 主键id | |
2036 | + * @format int64 | |
2037 | + */ | |
2038 | + id?: number; | |
2039 | + /** | |
2040 | + * @description | |
2041 | + * 成员名称 | |
2042 | + */ | |
2043 | + memberName?: string; | |
2044 | + /** | |
2045 | + * @description | |
2046 | + * 成员手机号 | |
2047 | + */ | |
2048 | + memberPhone?: string; | |
2049 | +} | |
2050 | + | |
2051 | +export interface ResearchGroupMemberRequestAddRequest { | |
2052 | + /** | |
2053 | + * @description | |
2054 | + * 课题组ID | |
2055 | + * @format int64 | |
2056 | + */ | |
2057 | + groupId?: number; | |
2058 | + /** | |
2059 | + * @description | |
2060 | + * 课题组名称 | |
2061 | + */ | |
2062 | + groupName?: string; | |
2063 | + members?: Array<ResearchGroupMemberAddRequest>; | |
2064 | + /** | |
2065 | + * @description | |
2066 | + * 申请备注 | |
2067 | + */ | |
2068 | + requestNotes?: string; | |
2069 | +} | |
2070 | + | |
2071 | +export interface ResearchGroupMemberRequestDeleteRequest { | |
2072 | + /** | |
2073 | + * @description | |
2074 | + * 主键id | |
2075 | + */ | |
2076 | + ids?: Array<number>; | |
2077 | +} | |
2078 | + | |
2079 | +export interface ResearchGroupMemberRequestDetailRequest { | |
2080 | + /** | |
2081 | + * @description | |
2082 | + * 主键id | |
2083 | + * @format int64 | |
2084 | + */ | |
2085 | + id?: number; | |
2086 | +} | |
2087 | + | |
2088 | +export interface ResearchGroupMemberRequestEditRequest { | |
2089 | + /** | |
2090 | + * @description | |
2091 | + * 课题组ID | |
2092 | + * @format int64 | |
2093 | + */ | |
2094 | + groupId?: number; | |
2095 | + /** | |
2096 | + * @description | |
2097 | + * 课题组名称 | |
2098 | + */ | |
2099 | + groupName?: string; | |
2100 | + /** | |
2101 | + * @description | |
2102 | + * 主键id | |
2103 | + * @format int64 | |
2104 | + */ | |
2105 | + id?: number; | |
2106 | + /** | |
2107 | + * @description | |
2108 | + * 成员名称 | |
2109 | + */ | |
2110 | + memberName?: string; | |
2111 | + /** | |
2112 | + * @description | |
2113 | + * 成员手机号 | |
2114 | + */ | |
2115 | + memberPhone?: string; | |
2116 | + /** | |
2117 | + * @description | |
2118 | + * 申请备注 | |
2119 | + */ | |
2120 | + requestNotes?: string; | |
2121 | +} | |
2122 | + | |
2123 | +export interface ResearchGroupMemberRequestsRequest { | |
2124 | + /** | |
2125 | + * @description | |
2126 | + * 审核备注 | |
2127 | + */ | |
2128 | + auditNotes?: string; | |
2129 | + /** | |
2130 | + * @description | |
2131 | + * 审核状态 | |
2132 | + */ | |
2133 | + auditStatus?: string; | |
2134 | + /** | |
2135 | + * @description | |
2136 | + * 创建人 | |
2137 | + */ | |
2138 | + createByName?: string; | |
2139 | + /** @format int32 */ | |
2140 | + current?: number; | |
2141 | + /** @format int32 */ | |
2142 | + end?: number; | |
2143 | + /** | |
2144 | + * @description | |
2145 | + * 课题组名称 | |
2146 | + */ | |
2147 | + groupName?: string; | |
2148 | + /** | |
2149 | + * @description | |
2150 | + * 成员名称 | |
2151 | + */ | |
2152 | + memberName?: string; | |
2153 | + /** | |
2154 | + * @description | |
2155 | + * 成员手机号 | |
2156 | + */ | |
2157 | + memberPhone?: string; | |
2158 | + /** @format int32 */ | |
2159 | + pageSize?: number; | |
2160 | + /** | |
2161 | + * @description | |
2162 | + * 申请备注 | |
2163 | + */ | |
2164 | + requestNotes?: string; | |
2165 | + /** @format int32 */ | |
2166 | + start?: number; | |
2167 | + /** @format int32 */ | |
2168 | + total?: number; | |
2169 | +} | |
2170 | + | |
1671 | 2171 | export interface ResetPwdVO { |
1672 | 2172 | /** @format int64 */ |
1673 | 2173 | userId?: number; |
1674 | 2174 | } |
1675 | 2175 | |
2176 | +export interface Resource { | |
2177 | + description?: string; | |
2178 | + file?: TsgFile; | |
2179 | + filename?: string; | |
2180 | + inputStream?: InputStream; | |
2181 | + open?: boolean; | |
2182 | + readable?: boolean; | |
2183 | + uri?: URI; | |
2184 | + url?: TsgURL; | |
2185 | +} | |
2186 | + | |
1676 | 2187 | export interface SalOrderSaveDto { |
1677 | 2188 | id?: string; |
1678 | 2189 | } |
... | ... | @@ -1702,6 +2213,8 @@ export interface SysLogQueryVO { |
1702 | 2213 | /** @format int32 */ |
1703 | 2214 | current?: number; |
1704 | 2215 | description?: string; |
2216 | + /** @format int32 */ | |
2217 | + end?: number; | |
1705 | 2218 | exceptionDetail?: string; |
1706 | 2219 | /** @format int64 */ |
1707 | 2220 | id?: number; |
... | ... | @@ -1712,6 +2225,8 @@ export interface SysLogQueryVO { |
1712 | 2225 | pageSize?: number; |
1713 | 2226 | params?: string; |
1714 | 2227 | requestIp?: string; |
2228 | + /** @format int32 */ | |
2229 | + start?: number; | |
1715 | 2230 | /** @format int64 */ |
1716 | 2231 | time?: number; |
1717 | 2232 | /** @format int32 */ |
... | ... | @@ -1734,6 +2249,29 @@ export interface TokenApiDto { |
1734 | 2249 | username?: string; |
1735 | 2250 | } |
1736 | 2251 | |
2252 | +export interface URI { | |
2253 | + absolute?: boolean; | |
2254 | + authority?: string; | |
2255 | + fragment?: string; | |
2256 | + host?: string; | |
2257 | + opaque?: boolean; | |
2258 | + path?: string; | |
2259 | + /** @format int32 */ | |
2260 | + port?: number; | |
2261 | + query?: string; | |
2262 | + rawAuthority?: string; | |
2263 | + rawFragment?: string; | |
2264 | + rawPath?: string; | |
2265 | + rawQuery?: string; | |
2266 | + rawSchemeSpecificPart?: string; | |
2267 | + rawUserInfo?: string; | |
2268 | + scheme?: string; | |
2269 | + schemeSpecificPart?: string; | |
2270 | + userInfo?: string; | |
2271 | +} | |
2272 | + | |
2273 | +export type URLStreamHandler = any; | |
2274 | + | |
1737 | 2275 | export interface Unit { |
1738 | 2276 | /** @format float */ |
1739 | 2277 | coefficient?: number; |
... | ... | @@ -1852,8 +2390,12 @@ export interface UserCenterInfoRequest { |
1852 | 2390 | /** @format int32 */ |
1853 | 2391 | current?: number; |
1854 | 2392 | /** @format int32 */ |
2393 | + end?: number; | |
2394 | + /** @format int32 */ | |
1855 | 2395 | pageSize?: number; |
1856 | 2396 | /** @format int32 */ |
2397 | + start?: number; | |
2398 | + /** @format int32 */ | |
1857 | 2399 | total?: number; |
1858 | 2400 | /** |
1859 | 2401 | * @description |
... | ... | @@ -1873,6 +2415,8 @@ export interface UserDetailRequest { |
1873 | 2415 | /** @format int32 */ |
1874 | 2416 | current?: number; |
1875 | 2417 | /** @format int32 */ |
2418 | + end?: number; | |
2419 | + /** @format int32 */ | |
1876 | 2420 | pageSize?: number; |
1877 | 2421 | /** |
1878 | 2422 | * @description |
... | ... | @@ -1880,6 +2424,8 @@ export interface UserDetailRequest { |
1880 | 2424 | */ |
1881 | 2425 | phone?: string; |
1882 | 2426 | /** @format int32 */ |
2427 | + start?: number; | |
2428 | + /** @format int32 */ | |
1883 | 2429 | total?: number; |
1884 | 2430 | /** |
1885 | 2431 | * @description |
... | ... | @@ -1896,6 +2442,8 @@ export interface UserListRequest { |
1896 | 2442 | * 创建日期开始时间 |
1897 | 2443 | */ |
1898 | 2444 | dateLimit?: string; |
2445 | + /** @format int32 */ | |
2446 | + end?: number; | |
1899 | 2447 | /** |
1900 | 2448 | * @description |
1901 | 2449 | * 单位 |
... | ... | @@ -1920,10 +2468,23 @@ export interface UserListRequest { |
1920 | 2468 | phone?: string; |
1921 | 2469 | /** |
1922 | 2470 | * @description |
2471 | + * phones | |
2472 | + */ | |
2473 | + phones?: Array<string>; | |
2474 | + /** | |
2475 | + * @description | |
2476 | + * 内部订单系统课题组id | |
2477 | + * @format int64 | |
2478 | + */ | |
2479 | + researchGroupId?: number; | |
2480 | + /** | |
2481 | + * @description | |
1923 | 2482 | * salesCode |
1924 | 2483 | */ |
1925 | 2484 | salesCode?: string; |
1926 | 2485 | /** @format int32 */ |
2486 | + start?: number; | |
2487 | + /** @format int32 */ | |
1927 | 2488 | total?: number; |
1928 | 2489 | /** |
1929 | 2490 | * @description |
... | ... | @@ -1933,11 +2494,23 @@ export interface UserListRequest { |
1933 | 2494 | uid?: number; |
1934 | 2495 | /** |
1935 | 2496 | * @description |
2497 | + * ids | |
2498 | + */ | |
2499 | + uids?: Array<number>; | |
2500 | + /** | |
2501 | + * @description | |
1936 | 2502 | * 用户名 |
1937 | 2503 | */ |
1938 | 2504 | username?: string; |
1939 | 2505 | } |
1940 | 2506 | |
2507 | +export interface UserNowMoneyCheckRequest { | |
2508 | + phone?: string; | |
2509 | + subPrice?: number; | |
2510 | + /** @format int64 */ | |
2511 | + uid?: number; | |
2512 | +} | |
2513 | + | |
1941 | 2514 | export interface View { |
1942 | 2515 | contentType?: string; |
1943 | 2516 | } |
... | ... | @@ -1960,6 +2533,32 @@ export interface ApiOrderConfirmReceiveRequest { |
1960 | 2533 | subOrderIds?: Array<number>; |
1961 | 2534 | } |
1962 | 2535 | |
2536 | +export interface TsgFile { | |
2537 | + absolute?: boolean; | |
2538 | + absoluteFile?: TsgFile; | |
2539 | + absolutePath?: string; | |
2540 | + canonicalFile?: TsgFile; | |
2541 | + canonicalPath?: string; | |
2542 | + directory?: boolean; | |
2543 | + executable?: boolean; | |
2544 | + file?: boolean; | |
2545 | + /** @format int64 */ | |
2546 | + freeSpace?: number; | |
2547 | + hidden?: boolean; | |
2548 | + /** @format int64 */ | |
2549 | + lastModified?: number; | |
2550 | + name?: string; | |
2551 | + parent?: string; | |
2552 | + parentFile?: TsgFile; | |
2553 | + path?: string; | |
2554 | + readable?: boolean; | |
2555 | + /** @format int64 */ | |
2556 | + totalSpace?: number; | |
2557 | + /** @format int64 */ | |
2558 | + usableSpace?: number; | |
2559 | + writable?: boolean; | |
2560 | +} | |
2561 | + | |
1963 | 2562 | export interface SalesRechargePrepaymentAuditRequest { |
1964 | 2563 | /** |
1965 | 2564 | * @description |
... | ... | @@ -1976,6 +2575,11 @@ export interface SalesRechargePrepaymentAuditRequest { |
1976 | 2575 | * 是否通过 |
1977 | 2576 | */ |
1978 | 2577 | pass?: boolean; |
2578 | + /** | |
2579 | + * @description | |
2580 | + * 手机号 | |
2581 | + */ | |
2582 | + phone?: string; | |
1979 | 2583 | } |
1980 | 2584 | |
1981 | 2585 | export interface SalesRechargePrepaymentCreateRequest { |
... | ... | @@ -2081,6 +2685,8 @@ export interface SalesRechargePrepaymentRequest { |
2081 | 2685 | * @format int32 |
2082 | 2686 | */ |
2083 | 2687 | enableFlag?: number; |
2688 | + /** @format int32 */ | |
2689 | + end?: number; | |
2084 | 2690 | /** |
2085 | 2691 | * @description |
2086 | 2692 | * id |
... | ... | @@ -2125,6 +2731,8 @@ export interface SalesRechargePrepaymentRequest { |
2125 | 2731 | * 销售代表 |
2126 | 2732 | */ |
2127 | 2733 | salesCode?: string; |
2734 | + /** @format int32 */ | |
2735 | + start?: number; | |
2128 | 2736 | /** |
2129 | 2737 | * @description |
2130 | 2738 | * 状态 |
... | ... | @@ -2284,6 +2892,57 @@ export interface StoreOrderInvoiceRequest { |
2284 | 2892 | updateTime?: string; |
2285 | 2893 | } |
2286 | 2894 | |
2895 | +export interface TsgURL { | |
2896 | + authority?: string; | |
2897 | + content?: any; | |
2898 | + /** @format int32 */ | |
2899 | + defaultPort?: number; | |
2900 | + deserializedFields?: URLStreamHandler; | |
2901 | + file?: string; | |
2902 | + host?: string; | |
2903 | + path?: string; | |
2904 | + /** @format int32 */ | |
2905 | + port?: number; | |
2906 | + protocol?: string; | |
2907 | + query?: string; | |
2908 | + ref?: string; | |
2909 | + /** @format int32 */ | |
2910 | + serializedHashCode?: number; | |
2911 | + userInfo?: string; | |
2912 | +} | |
2913 | + | |
2914 | +/** | |
2915 | + * @description | |
2916 | + * 保存用户地址请求对象 | |
2917 | + */ | |
2918 | +export interface UserAddressSaveRequest { | |
2919 | + /** | |
2920 | + * @description | |
2921 | + * 联系电话 | |
2922 | + */ | |
2923 | + customerContactNumber: string; | |
2924 | + /** | |
2925 | + * @description | |
2926 | + * 客户姓名 | |
2927 | + */ | |
2928 | + customerName: string; | |
2929 | + /** | |
2930 | + * @description | |
2931 | + * 收货地址 | |
2932 | + */ | |
2933 | + customerShippingAddress?: string; | |
2934 | + /** | |
2935 | + * @description | |
2936 | + * 客户单位 | |
2937 | + */ | |
2938 | + institution?: string; | |
2939 | + /** | |
2940 | + * @description | |
2941 | + * 课题组老师 | |
2942 | + */ | |
2943 | + institutionContactName?: string; | |
2944 | +} | |
2945 | + | |
2287 | 2946 | export interface UploadPaymentReceiptDTO { |
2288 | 2947 | /** |
2289 | 2948 | * @description | ... | ... |
src/services/order.ts
... | ... | @@ -2,12 +2,14 @@ import axios from 'axios'; |
2 | 2 | |
3 | 3 | export const orderExport = async ( |
4 | 4 | url: any = '', |
5 | + fileName: any = '', | |
6 | + method: any = '', | |
5 | 7 | data: any = {}, |
6 | 8 | exportLoadingDestory: any, |
7 | 9 | ) => { |
8 | 10 | axios({ |
9 | 11 | url: url, |
10 | - method: 'post', | |
12 | + method: method, | |
11 | 13 | responseType: 'blob', |
12 | 14 | headers: { Authorization: localStorage.getItem('token') }, |
13 | 15 | data, |
... | ... | @@ -18,7 +20,7 @@ export const orderExport = async ( |
18 | 20 | const downloadUrl = window.URL.createObjectURL(blob); |
19 | 21 | const a = document.createElement('a'); |
20 | 22 | a.href = downloadUrl; |
21 | - a.download = '订单.xlsx'; // 你可以为文件命名 | |
23 | + a.download = fileName; // 你可以为文件命名 | |
22 | 24 | document.body.appendChild(a); |
23 | 25 | a.click(); // 模拟点击操作来下载文件 |
24 | 26 | URL.revokeObjectURL(downloadUrl); // 释放掉 blob 对象所占用的内存 | ... | ... |
src/services/request.ts
... | ... | @@ -34,6 +34,7 @@ import type { |
34 | 34 | CancelInvoiceAndBankStatementDto, |
35 | 35 | CancelSendOrderDto, |
36 | 36 | CaptchaMessageVO, |
37 | + CommonAuditRequest, | |
37 | 38 | CustomFieldRes, |
38 | 39 | CustomerCustomerListReq, |
39 | 40 | CustomerDetailDto, |
... | ... | @@ -59,6 +60,12 @@ import type { |
59 | 60 | OrderFieldLockApplyQueryVO, |
60 | 61 | OrderOptLogQueryVO, |
61 | 62 | OrderProfitAnalysisVo, |
63 | + OrderStagesDelDo, | |
64 | + OrderStagesFromDo, | |
65 | + OrderStagesPayWay, | |
66 | + OrderStagesPayWayDo, | |
67 | + OrderStagesPayWayFileDo, | |
68 | + OrderStagesSelDo, | |
62 | 69 | OrderUnlockFieldApplyVO, |
63 | 70 | OrderUpdateVO, |
64 | 71 | ProcureConvertProcureDto, |
... | ... | @@ -74,6 +81,16 @@ import type { |
74 | 81 | QueryMainOrderDto, |
75 | 82 | QueryReportFormsDto, |
76 | 83 | ReissueInvoiceDto, |
84 | + ResearchGroupAddRequest, | |
85 | + ResearchGroupDeleteRequest, | |
86 | + ResearchGroupDetailRequest, | |
87 | + ResearchGroupEditRequest, | |
88 | + ResearchGroupListRequest, | |
89 | + ResearchGroupMemberRequestAddRequest, | |
90 | + ResearchGroupMemberRequestDeleteRequest, | |
91 | + ResearchGroupMemberRequestDetailRequest, | |
92 | + ResearchGroupMemberRequestEditRequest, | |
93 | + ResearchGroupMemberRequestsRequest, | |
77 | 94 | ResetPwdVO, |
78 | 95 | SalOrderSaveDto, |
79 | 96 | SalesRechargePrepaymentAuditRequest, |
... | ... | @@ -95,9 +112,11 @@ import type { |
95 | 112 | UpdatePwdVO, |
96 | 113 | UploadPaymentReceiptDTO, |
97 | 114 | UserAddressListRequest, |
115 | + UserAddressSaveRequest, | |
98 | 116 | UserCenterInfoRequest, |
99 | 117 | UserDetailRequest, |
100 | 118 | UserListRequest, |
119 | + UserNowMoneyCheckRequest, | |
101 | 120 | } from './definition'; |
102 | 121 | |
103 | 122 | /** @description request parameter type for postApiLocalStorageUpload */ |
... | ... | @@ -1460,6 +1479,78 @@ export const postCanrdApiUserDetail = /* #__PURE__ */ (() => { |
1460 | 1479 | return request; |
1461 | 1480 | })(); |
1462 | 1481 | |
1482 | +/** @description request parameter type for postCanrdApiUserInnerOrderSystemAddressSave */ | |
1483 | +export interface PostCanrdApiUserInnerOrderSystemAddressSaveOption { | |
1484 | + /** | |
1485 | + * @description | |
1486 | + * request | |
1487 | + */ | |
1488 | + body: { | |
1489 | + /** | |
1490 | + @description | |
1491 | + request */ | |
1492 | + request: UserAddressSaveRequest; | |
1493 | + }; | |
1494 | +} | |
1495 | + | |
1496 | +/** @description response type for postCanrdApiUserInnerOrderSystemAddressSave */ | |
1497 | +export interface PostCanrdApiUserInnerOrderSystemAddressSaveResponse { | |
1498 | + /** | |
1499 | + * @description | |
1500 | + * OK | |
1501 | + */ | |
1502 | + 200: ServerResult; | |
1503 | + /** | |
1504 | + * @description | |
1505 | + * Created | |
1506 | + */ | |
1507 | + 201: any; | |
1508 | + /** | |
1509 | + * @description | |
1510 | + * Unauthorized | |
1511 | + */ | |
1512 | + 401: any; | |
1513 | + /** | |
1514 | + * @description | |
1515 | + * Forbidden | |
1516 | + */ | |
1517 | + 403: any; | |
1518 | + /** | |
1519 | + * @description | |
1520 | + * Not Found | |
1521 | + */ | |
1522 | + 404: any; | |
1523 | +} | |
1524 | + | |
1525 | +export type PostCanrdApiUserInnerOrderSystemAddressSaveResponseSuccess = | |
1526 | + PostCanrdApiUserInnerOrderSystemAddressSaveResponse[200]; | |
1527 | +/** | |
1528 | + * @description | |
1529 | + * 查询地址信息 | |
1530 | + * @tags canrd-mobile-api-controller | |
1531 | + * @produces * | |
1532 | + * @consumes application/json | |
1533 | + */ | |
1534 | +export const postCanrdApiUserInnerOrderSystemAddressSave = | |
1535 | + /* #__PURE__ */ (() => { | |
1536 | + const method = 'post'; | |
1537 | + const url = '/canrd/api/user/innerOrderSystem/address/save'; | |
1538 | + function request( | |
1539 | + option: PostCanrdApiUserInnerOrderSystemAddressSaveOption, | |
1540 | + ): Promise<PostCanrdApiUserInnerOrderSystemAddressSaveResponseSuccess> { | |
1541 | + return requester(request.url, { | |
1542 | + method: request.method, | |
1543 | + ...option, | |
1544 | + }) as unknown as Promise<PostCanrdApiUserInnerOrderSystemAddressSaveResponseSuccess>; | |
1545 | + } | |
1546 | + | |
1547 | + /** http method */ | |
1548 | + request.method = method; | |
1549 | + /** request url */ | |
1550 | + request.url = url; | |
1551 | + return request; | |
1552 | + })(); | |
1553 | + | |
1463 | 1554 | /** @description request parameter type for postCanrdApiUserList */ |
1464 | 1555 | export interface PostCanrdApiUserListOption { |
1465 | 1556 | /** |
... | ... | @@ -1531,6 +1622,147 @@ export const postCanrdApiUserList = /* #__PURE__ */ (() => { |
1531 | 1622 | return request; |
1532 | 1623 | })(); |
1533 | 1624 | |
1625 | +/** @description request parameter type for postCanrdApiUserNowMoneyCheck */ | |
1626 | +export interface PostCanrdApiUserNowMoneyCheckOption { | |
1627 | + /** | |
1628 | + * @description | |
1629 | + * request | |
1630 | + */ | |
1631 | + body: { | |
1632 | + /** | |
1633 | + @description | |
1634 | + request */ | |
1635 | + request: UserNowMoneyCheckRequest; | |
1636 | + }; | |
1637 | +} | |
1638 | + | |
1639 | +/** @description response type for postCanrdApiUserNowMoneyCheck */ | |
1640 | +export interface PostCanrdApiUserNowMoneyCheckResponse { | |
1641 | + /** | |
1642 | + * @description | |
1643 | + * OK | |
1644 | + */ | |
1645 | + 200: ServerResult; | |
1646 | + /** | |
1647 | + * @description | |
1648 | + * Created | |
1649 | + */ | |
1650 | + 201: any; | |
1651 | + /** | |
1652 | + * @description | |
1653 | + * Unauthorized | |
1654 | + */ | |
1655 | + 401: any; | |
1656 | + /** | |
1657 | + * @description | |
1658 | + * Forbidden | |
1659 | + */ | |
1660 | + 403: any; | |
1661 | + /** | |
1662 | + * @description | |
1663 | + * Not Found | |
1664 | + */ | |
1665 | + 404: any; | |
1666 | +} | |
1667 | + | |
1668 | +export type PostCanrdApiUserNowMoneyCheckResponseSuccess = | |
1669 | + PostCanrdApiUserNowMoneyCheckResponse[200]; | |
1670 | +/** | |
1671 | + * @description | |
1672 | + * 检查用户额度 | |
1673 | + * @tags canrd-mobile-api-controller | |
1674 | + * @produces * | |
1675 | + * @consumes application/json | |
1676 | + */ | |
1677 | +export const postCanrdApiUserNowMoneyCheck = /* #__PURE__ */ (() => { | |
1678 | + const method = 'post'; | |
1679 | + const url = '/canrd/api/user/nowMoney/check'; | |
1680 | + function request( | |
1681 | + option: PostCanrdApiUserNowMoneyCheckOption, | |
1682 | + ): Promise<PostCanrdApiUserNowMoneyCheckResponseSuccess> { | |
1683 | + return requester(request.url, { | |
1684 | + method: request.method, | |
1685 | + ...option, | |
1686 | + }) as unknown as Promise<PostCanrdApiUserNowMoneyCheckResponseSuccess>; | |
1687 | + } | |
1688 | + | |
1689 | + /** http method */ | |
1690 | + request.method = method; | |
1691 | + /** request url */ | |
1692 | + request.url = url; | |
1693 | + return request; | |
1694 | +})(); | |
1695 | + | |
1696 | +/** @description request parameter type for postCommonAudit */ | |
1697 | +export interface PostCommonAuditOption { | |
1698 | + /** | |
1699 | + * @description | |
1700 | + * request | |
1701 | + */ | |
1702 | + body: { | |
1703 | + /** | |
1704 | + @description | |
1705 | + request */ | |
1706 | + request: CommonAuditRequest; | |
1707 | + }; | |
1708 | +} | |
1709 | + | |
1710 | +/** @description response type for postCommonAudit */ | |
1711 | +export interface PostCommonAuditResponse { | |
1712 | + /** | |
1713 | + * @description | |
1714 | + * OK | |
1715 | + */ | |
1716 | + 200: ServerResult; | |
1717 | + /** | |
1718 | + * @description | |
1719 | + * Created | |
1720 | + */ | |
1721 | + 201: any; | |
1722 | + /** | |
1723 | + * @description | |
1724 | + * Unauthorized | |
1725 | + */ | |
1726 | + 401: any; | |
1727 | + /** | |
1728 | + * @description | |
1729 | + * Forbidden | |
1730 | + */ | |
1731 | + 403: any; | |
1732 | + /** | |
1733 | + * @description | |
1734 | + * Not Found | |
1735 | + */ | |
1736 | + 404: any; | |
1737 | +} | |
1738 | + | |
1739 | +export type PostCommonAuditResponseSuccess = PostCommonAuditResponse[200]; | |
1740 | +/** | |
1741 | + * @description | |
1742 | + * audit | |
1743 | + * @tags common-controller | |
1744 | + * @produces * | |
1745 | + * @consumes application/json | |
1746 | + */ | |
1747 | +export const postCommonAudit = /* #__PURE__ */ (() => { | |
1748 | + const method = 'post'; | |
1749 | + const url = '/common/audit'; | |
1750 | + function request( | |
1751 | + option: PostCommonAuditOption, | |
1752 | + ): Promise<PostCommonAuditResponseSuccess> { | |
1753 | + return requester(request.url, { | |
1754 | + method: request.method, | |
1755 | + ...option, | |
1756 | + }) as unknown as Promise<PostCommonAuditResponseSuccess>; | |
1757 | + } | |
1758 | + | |
1759 | + /** http method */ | |
1760 | + request.method = method; | |
1761 | + /** request url */ | |
1762 | + request.url = url; | |
1763 | + return request; | |
1764 | +})(); | |
1765 | + | |
1534 | 1766 | /** @description response type for getError */ |
1535 | 1767 | export interface GetErrorResponse { |
1536 | 1768 | /** |
... | ... | @@ -6065,22 +6297,22 @@ export const postOrderErpOrderQueryById = /* #__PURE__ */ (() => { |
6065 | 6297 | return request; |
6066 | 6298 | })(); |
6067 | 6299 | |
6068 | -/** @description request parameter type for postOrderErpProfitAnalysis */ | |
6069 | -export interface PostOrderErpProfitAnalysisOption { | |
6300 | +/** @description request parameter type for postOrderErpOrderStagesAdd */ | |
6301 | +export interface PostOrderErpOrderStagesAddOption { | |
6070 | 6302 | /** |
6071 | 6303 | * @description |
6072 | - * orderProfitAnalysisVo | |
6304 | + * orderStagesFromDo | |
6073 | 6305 | */ |
6074 | 6306 | body: { |
6075 | 6307 | /** |
6076 | 6308 | @description |
6077 | - orderProfitAnalysisVo */ | |
6078 | - orderProfitAnalysisVo: OrderProfitAnalysisVo; | |
6309 | + orderStagesFromDo */ | |
6310 | + orderStagesFromDo: OrderStagesFromDo; | |
6079 | 6311 | }; |
6080 | 6312 | } |
6081 | 6313 | |
6082 | -/** @description response type for postOrderErpProfitAnalysis */ | |
6083 | -export interface PostOrderErpProfitAnalysisResponse { | |
6314 | +/** @description response type for postOrderErpOrderStagesAdd */ | |
6315 | +export interface PostOrderErpOrderStagesAddResponse { | |
6084 | 6316 | /** |
6085 | 6317 | * @description |
6086 | 6318 | * OK |
... | ... | @@ -6108,25 +6340,25 @@ export interface PostOrderErpProfitAnalysisResponse { |
6108 | 6340 | 404: any; |
6109 | 6341 | } |
6110 | 6342 | |
6111 | -export type PostOrderErpProfitAnalysisResponseSuccess = | |
6112 | - PostOrderErpProfitAnalysisResponse[200]; | |
6343 | +export type PostOrderErpOrderStagesAddResponseSuccess = | |
6344 | + PostOrderErpOrderStagesAddResponse[200]; | |
6113 | 6345 | /** |
6114 | 6346 | * @description |
6115 | - * analysis | |
6116 | - * @tags order-profit-controller | |
6347 | + * 添加或者修改分期账单 | |
6348 | + * @tags order-stages-controller | |
6117 | 6349 | * @produces * |
6118 | 6350 | * @consumes application/json |
6119 | 6351 | */ |
6120 | -export const postOrderErpProfitAnalysis = /* #__PURE__ */ (() => { | |
6352 | +export const postOrderErpOrderStagesAdd = /* #__PURE__ */ (() => { | |
6121 | 6353 | const method = 'post'; |
6122 | - const url = '/order/erp/profit/analysis'; | |
6354 | + const url = '/order/erp/orderStages/add'; | |
6123 | 6355 | function request( |
6124 | - option: PostOrderErpProfitAnalysisOption, | |
6125 | - ): Promise<PostOrderErpProfitAnalysisResponseSuccess> { | |
6356 | + option: PostOrderErpOrderStagesAddOption, | |
6357 | + ): Promise<PostOrderErpOrderStagesAddResponseSuccess> { | |
6126 | 6358 | return requester(request.url, { |
6127 | 6359 | method: request.method, |
6128 | 6360 | ...option, |
6129 | - }) as unknown as Promise<PostOrderErpProfitAnalysisResponseSuccess>; | |
6361 | + }) as unknown as Promise<PostOrderErpOrderStagesAddResponseSuccess>; | |
6130 | 6362 | } |
6131 | 6363 | |
6132 | 6364 | /** http method */ |
... | ... | @@ -6136,22 +6368,22 @@ export const postOrderErpProfitAnalysis = /* #__PURE__ */ (() => { |
6136 | 6368 | return request; |
6137 | 6369 | })(); |
6138 | 6370 | |
6139 | -/** @description request parameter type for postOrderErpRolesAdd */ | |
6140 | -export interface PostOrderErpRolesAddOption { | |
6371 | +/** @description request parameter type for deleteOrderErpOrderStagesDelect */ | |
6372 | +export interface DeleteOrderErpOrderStagesDelectOption { | |
6141 | 6373 | /** |
6142 | 6374 | * @description |
6143 | - * roleVO | |
6375 | + * orderStagesDelDo | |
6144 | 6376 | */ |
6145 | 6377 | body: { |
6146 | 6378 | /** |
6147 | 6379 | @description |
6148 | - roleVO */ | |
6149 | - roleVO: AdminRoleVO; | |
6380 | + orderStagesDelDo */ | |
6381 | + orderStagesDelDo: OrderStagesDelDo; | |
6150 | 6382 | }; |
6151 | 6383 | } |
6152 | 6384 | |
6153 | -/** @description response type for postOrderErpRolesAdd */ | |
6154 | -export interface PostOrderErpRolesAddResponse { | |
6385 | +/** @description response type for deleteOrderErpOrderStagesDelect */ | |
6386 | +export interface DeleteOrderErpOrderStagesDelectResponse { | |
6155 | 6387 | /** |
6156 | 6388 | * @description |
6157 | 6389 | * OK |
... | ... | @@ -6159,9 +6391,9 @@ export interface PostOrderErpRolesAddResponse { |
6159 | 6391 | 200: ServerResult; |
6160 | 6392 | /** |
6161 | 6393 | * @description |
6162 | - * Created | |
6394 | + * No Content | |
6163 | 6395 | */ |
6164 | - 201: any; | |
6396 | + 204: any; | |
6165 | 6397 | /** |
6166 | 6398 | * @description |
6167 | 6399 | * Unauthorized |
... | ... | @@ -6172,32 +6404,26 @@ export interface PostOrderErpRolesAddResponse { |
6172 | 6404 | * Forbidden |
6173 | 6405 | */ |
6174 | 6406 | 403: any; |
6175 | - /** | |
6176 | - * @description | |
6177 | - * Not Found | |
6178 | - */ | |
6179 | - 404: any; | |
6180 | 6407 | } |
6181 | 6408 | |
6182 | -export type PostOrderErpRolesAddResponseSuccess = | |
6183 | - PostOrderErpRolesAddResponse[200]; | |
6409 | +export type DeleteOrderErpOrderStagesDelectResponseSuccess = | |
6410 | + DeleteOrderErpOrderStagesDelectResponse[200]; | |
6184 | 6411 | /** |
6185 | 6412 | * @description |
6186 | - * 新增角色 | |
6187 | - * @tags 系统:角色管理 | |
6413 | + * 删除分期账单 | |
6414 | + * @tags order-stages-controller | |
6188 | 6415 | * @produces * |
6189 | - * @consumes application/json | |
6190 | 6416 | */ |
6191 | -export const postOrderErpRolesAdd = /* #__PURE__ */ (() => { | |
6192 | - const method = 'post'; | |
6193 | - const url = '/order/erp/roles/add'; | |
6417 | +export const deleteOrderErpOrderStagesDelect = /* #__PURE__ */ (() => { | |
6418 | + const method = 'delete'; | |
6419 | + const url = '/order/erp/orderStages/delect'; | |
6194 | 6420 | function request( |
6195 | - option: PostOrderErpRolesAddOption, | |
6196 | - ): Promise<PostOrderErpRolesAddResponseSuccess> { | |
6421 | + option: DeleteOrderErpOrderStagesDelectOption, | |
6422 | + ): Promise<DeleteOrderErpOrderStagesDelectResponseSuccess> { | |
6197 | 6423 | return requester(request.url, { |
6198 | 6424 | method: request.method, |
6199 | 6425 | ...option, |
6200 | - }) as unknown as Promise<PostOrderErpRolesAddResponseSuccess>; | |
6426 | + }) as unknown as Promise<DeleteOrderErpOrderStagesDelectResponseSuccess>; | |
6201 | 6427 | } |
6202 | 6428 | |
6203 | 6429 | /** http method */ |
... | ... | @@ -6207,32 +6433,13 @@ export const postOrderErpRolesAdd = /* #__PURE__ */ (() => { |
6207 | 6433 | return request; |
6208 | 6434 | })(); |
6209 | 6435 | |
6210 | -/** @description request parameter type for postOrderErpRolesAll */ | |
6211 | -export interface PostOrderErpRolesAllOption { | |
6212 | - /** | |
6213 | - * @description | |
6214 | - * queryVO | |
6215 | - */ | |
6216 | - body: { | |
6217 | - /** | |
6218 | - @description | |
6219 | - queryVO */ | |
6220 | - queryVO: AdminRoleQueryVO; | |
6221 | - }; | |
6222 | -} | |
6223 | - | |
6224 | -/** @description response type for postOrderErpRolesAll */ | |
6225 | -export interface PostOrderErpRolesAllResponse { | |
6436 | +/** @description response type for getOrderErpOrderStagesExport */ | |
6437 | +export interface GetOrderErpOrderStagesExportResponse { | |
6226 | 6438 | /** |
6227 | 6439 | * @description |
6228 | 6440 | * OK |
6229 | 6441 | */ |
6230 | - 200: ServerResult; | |
6231 | - /** | |
6232 | - * @description | |
6233 | - * Created | |
6234 | - */ | |
6235 | - 201: any; | |
6442 | + 200: any; | |
6236 | 6443 | /** |
6237 | 6444 | * @description |
6238 | 6445 | * Unauthorized |
... | ... | @@ -6250,25 +6457,781 @@ export interface PostOrderErpRolesAllResponse { |
6250 | 6457 | 404: any; |
6251 | 6458 | } |
6252 | 6459 | |
6253 | -export type PostOrderErpRolesAllResponseSuccess = | |
6254 | - PostOrderErpRolesAllResponse[200]; | |
6460 | +export type GetOrderErpOrderStagesExportResponseSuccess = | |
6461 | + GetOrderErpOrderStagesExportResponse[200]; | |
6255 | 6462 | /** |
6256 | 6463 | * @description |
6257 | - * 返回全部的角色 | |
6258 | - * @tags 系统:角色管理 | |
6464 | + * 导出分期账单 | |
6465 | + * @tags order-stages-controller | |
6259 | 6466 | * @produces * |
6260 | - * @consumes application/json | |
6261 | 6467 | */ |
6262 | -export const postOrderErpRolesAll = /* #__PURE__ */ (() => { | |
6263 | - const method = 'post'; | |
6264 | - const url = '/order/erp/roles/all'; | |
6265 | - function request( | |
6266 | - option: PostOrderErpRolesAllOption, | |
6267 | - ): Promise<PostOrderErpRolesAllResponseSuccess> { | |
6468 | +export const getOrderErpOrderStagesExport = /* #__PURE__ */ (() => { | |
6469 | + const method = 'get'; | |
6470 | + const url = '/order/erp/orderStages/export'; | |
6471 | + function request(): Promise<GetOrderErpOrderStagesExportResponseSuccess> { | |
6268 | 6472 | return requester(request.url, { |
6269 | 6473 | method: request.method, |
6270 | - ...option, | |
6271 | - }) as unknown as Promise<PostOrderErpRolesAllResponseSuccess>; | |
6474 | + }) as unknown as Promise<GetOrderErpOrderStagesExportResponseSuccess>; | |
6475 | + } | |
6476 | + | |
6477 | + /** http method */ | |
6478 | + request.method = method; | |
6479 | + /** request url */ | |
6480 | + request.url = url; | |
6481 | + return request; | |
6482 | +})(); | |
6483 | + | |
6484 | +/** @description request parameter type for postOrderErpOrderStagesImport */ | |
6485 | +export interface PostOrderErpOrderStagesImportOption { | |
6486 | + /** | |
6487 | + * @description | |
6488 | + * file | |
6489 | + */ | |
6490 | + formData: { | |
6491 | + /** | |
6492 | + @description | |
6493 | + file */ | |
6494 | + file: File; | |
6495 | + }; | |
6496 | +} | |
6497 | + | |
6498 | +/** @description response type for postOrderErpOrderStagesImport */ | |
6499 | +export interface PostOrderErpOrderStagesImportResponse { | |
6500 | + /** | |
6501 | + * @description | |
6502 | + * OK | |
6503 | + */ | |
6504 | + 200: ServerResult; | |
6505 | + /** | |
6506 | + * @description | |
6507 | + * Created | |
6508 | + */ | |
6509 | + 201: any; | |
6510 | + /** | |
6511 | + * @description | |
6512 | + * Unauthorized | |
6513 | + */ | |
6514 | + 401: any; | |
6515 | + /** | |
6516 | + * @description | |
6517 | + * Forbidden | |
6518 | + */ | |
6519 | + 403: any; | |
6520 | + /** | |
6521 | + * @description | |
6522 | + * Not Found | |
6523 | + */ | |
6524 | + 404: any; | |
6525 | +} | |
6526 | + | |
6527 | +export type PostOrderErpOrderStagesImportResponseSuccess = | |
6528 | + PostOrderErpOrderStagesImportResponse[200]; | |
6529 | +/** | |
6530 | + * @description | |
6531 | + * 导入分期账单 | |
6532 | + * @tags order-stages-controller | |
6533 | + * @produces * | |
6534 | + * @consumes multipart/form-data | |
6535 | + */ | |
6536 | +export const postOrderErpOrderStagesImport = /* #__PURE__ */ (() => { | |
6537 | + const method = 'post'; | |
6538 | + const url = '/order/erp/orderStages/import'; | |
6539 | + function request( | |
6540 | + option: PostOrderErpOrderStagesImportOption, | |
6541 | + ): Promise<PostOrderErpOrderStagesImportResponseSuccess> { | |
6542 | + return requester(request.url, { | |
6543 | + method: request.method, | |
6544 | + ...option, | |
6545 | + }) as unknown as Promise<PostOrderErpOrderStagesImportResponseSuccess>; | |
6546 | + } | |
6547 | + | |
6548 | + /** http method */ | |
6549 | + request.method = method; | |
6550 | + /** request url */ | |
6551 | + request.url = url; | |
6552 | + return request; | |
6553 | +})(); | |
6554 | + | |
6555 | +/** @description response type for getOrderErpOrderStagesListAll */ | |
6556 | +export interface GetOrderErpOrderStagesListAllResponse { | |
6557 | + /** | |
6558 | + * @description | |
6559 | + * OK | |
6560 | + */ | |
6561 | + 200: ServerResult; | |
6562 | + /** | |
6563 | + * @description | |
6564 | + * Unauthorized | |
6565 | + */ | |
6566 | + 401: any; | |
6567 | + /** | |
6568 | + * @description | |
6569 | + * Forbidden | |
6570 | + */ | |
6571 | + 403: any; | |
6572 | + /** | |
6573 | + * @description | |
6574 | + * Not Found | |
6575 | + */ | |
6576 | + 404: any; | |
6577 | +} | |
6578 | + | |
6579 | +export type GetOrderErpOrderStagesListAllResponseSuccess = | |
6580 | + GetOrderErpOrderStagesListAllResponse[200]; | |
6581 | +/** | |
6582 | + * @description | |
6583 | + * 查询所有分期账单 | |
6584 | + * @tags order-stages-controller | |
6585 | + * @produces * | |
6586 | + */ | |
6587 | +export const getOrderErpOrderStagesListAll = /* #__PURE__ */ (() => { | |
6588 | + const method = 'get'; | |
6589 | + const url = '/order/erp/orderStages/listAll'; | |
6590 | + function request(): Promise<GetOrderErpOrderStagesListAllResponseSuccess> { | |
6591 | + return requester(request.url, { | |
6592 | + method: request.method, | |
6593 | + }) as unknown as Promise<GetOrderErpOrderStagesListAllResponseSuccess>; | |
6594 | + } | |
6595 | + | |
6596 | + /** http method */ | |
6597 | + request.method = method; | |
6598 | + /** request url */ | |
6599 | + request.url = url; | |
6600 | + return request; | |
6601 | +})(); | |
6602 | + | |
6603 | +/** @description request parameter type for postOrderErpOrderStagesSaveOrUpdate */ | |
6604 | +export interface PostOrderErpOrderStagesSaveOrUpdateOption { | |
6605 | + /** | |
6606 | + * @description | |
6607 | + * orderStagesFromDo | |
6608 | + */ | |
6609 | + body: { | |
6610 | + /** | |
6611 | + @description | |
6612 | + orderStagesFromDo */ | |
6613 | + orderStagesFromDo: OrderStagesFromDo; | |
6614 | + }; | |
6615 | +} | |
6616 | + | |
6617 | +/** @description response type for postOrderErpOrderStagesSaveOrUpdate */ | |
6618 | +export interface PostOrderErpOrderStagesSaveOrUpdateResponse { | |
6619 | + /** | |
6620 | + * @description | |
6621 | + * OK | |
6622 | + */ | |
6623 | + 200: ServerResult; | |
6624 | + /** | |
6625 | + * @description | |
6626 | + * Created | |
6627 | + */ | |
6628 | + 201: any; | |
6629 | + /** | |
6630 | + * @description | |
6631 | + * Unauthorized | |
6632 | + */ | |
6633 | + 401: any; | |
6634 | + /** | |
6635 | + * @description | |
6636 | + * Forbidden | |
6637 | + */ | |
6638 | + 403: any; | |
6639 | + /** | |
6640 | + * @description | |
6641 | + * Not Found | |
6642 | + */ | |
6643 | + 404: any; | |
6644 | +} | |
6645 | + | |
6646 | +export type PostOrderErpOrderStagesSaveOrUpdateResponseSuccess = | |
6647 | + PostOrderErpOrderStagesSaveOrUpdateResponse[200]; | |
6648 | +/** | |
6649 | + * @description | |
6650 | + * 添加或者修改分期账单 | |
6651 | + * @tags order-stages-controller | |
6652 | + * @produces * | |
6653 | + * @consumes application/json | |
6654 | + */ | |
6655 | +export const postOrderErpOrderStagesSaveOrUpdate = /* #__PURE__ */ (() => { | |
6656 | + const method = 'post'; | |
6657 | + const url = '/order/erp/orderStages/saveOrUpdate'; | |
6658 | + function request( | |
6659 | + option: PostOrderErpOrderStagesSaveOrUpdateOption, | |
6660 | + ): Promise<PostOrderErpOrderStagesSaveOrUpdateResponseSuccess> { | |
6661 | + return requester(request.url, { | |
6662 | + method: request.method, | |
6663 | + ...option, | |
6664 | + }) as unknown as Promise<PostOrderErpOrderStagesSaveOrUpdateResponseSuccess>; | |
6665 | + } | |
6666 | + | |
6667 | + /** http method */ | |
6668 | + request.method = method; | |
6669 | + /** request url */ | |
6670 | + request.url = url; | |
6671 | + return request; | |
6672 | +})(); | |
6673 | + | |
6674 | +/** @description request parameter type for postOrderErpOrderStagesSearch */ | |
6675 | +export interface PostOrderErpOrderStagesSearchOption { | |
6676 | + /** | |
6677 | + * @description | |
6678 | + * orderStagesSelDo | |
6679 | + */ | |
6680 | + body: { | |
6681 | + /** | |
6682 | + @description | |
6683 | + orderStagesSelDo */ | |
6684 | + orderStagesSelDo: OrderStagesSelDo; | |
6685 | + }; | |
6686 | +} | |
6687 | + | |
6688 | +/** @description response type for postOrderErpOrderStagesSearch */ | |
6689 | +export interface PostOrderErpOrderStagesSearchResponse { | |
6690 | + /** | |
6691 | + * @description | |
6692 | + * OK | |
6693 | + */ | |
6694 | + 200: ServerResult; | |
6695 | + /** | |
6696 | + * @description | |
6697 | + * Created | |
6698 | + */ | |
6699 | + 201: any; | |
6700 | + /** | |
6701 | + * @description | |
6702 | + * Unauthorized | |
6703 | + */ | |
6704 | + 401: any; | |
6705 | + /** | |
6706 | + * @description | |
6707 | + * Forbidden | |
6708 | + */ | |
6709 | + 403: any; | |
6710 | + /** | |
6711 | + * @description | |
6712 | + * Not Found | |
6713 | + */ | |
6714 | + 404: any; | |
6715 | +} | |
6716 | + | |
6717 | +export type PostOrderErpOrderStagesSearchResponseSuccess = | |
6718 | + PostOrderErpOrderStagesSearchResponse[200]; | |
6719 | +/** | |
6720 | + * @description | |
6721 | + * 条件搜索分期账单 | |
6722 | + * @tags order-stages-controller | |
6723 | + * @produces * | |
6724 | + * @consumes application/json | |
6725 | + */ | |
6726 | +export const postOrderErpOrderStagesSearch = /* #__PURE__ */ (() => { | |
6727 | + const method = 'post'; | |
6728 | + const url = '/order/erp/orderStages/search'; | |
6729 | + function request( | |
6730 | + option: PostOrderErpOrderStagesSearchOption, | |
6731 | + ): Promise<PostOrderErpOrderStagesSearchResponseSuccess> { | |
6732 | + return requester(request.url, { | |
6733 | + method: request.method, | |
6734 | + ...option, | |
6735 | + }) as unknown as Promise<PostOrderErpOrderStagesSearchResponseSuccess>; | |
6736 | + } | |
6737 | + | |
6738 | + /** http method */ | |
6739 | + request.method = method; | |
6740 | + /** request url */ | |
6741 | + request.url = url; | |
6742 | + return request; | |
6743 | +})(); | |
6744 | + | |
6745 | +/** @description request parameter type for postOrderErpOrderStagesUpload */ | |
6746 | +export interface PostOrderErpOrderStagesUploadOption { | |
6747 | + /** | |
6748 | + * @description | |
6749 | + * file | |
6750 | + */ | |
6751 | + formData: { | |
6752 | + /** | |
6753 | + @description | |
6754 | + file */ | |
6755 | + file: File; | |
6756 | + }; | |
6757 | +} | |
6758 | + | |
6759 | +/** @description response type for postOrderErpOrderStagesUpload */ | |
6760 | +export interface PostOrderErpOrderStagesUploadResponse { | |
6761 | + /** | |
6762 | + * @description | |
6763 | + * OK | |
6764 | + */ | |
6765 | + 200: ServerResult; | |
6766 | + /** | |
6767 | + * @description | |
6768 | + * Created | |
6769 | + */ | |
6770 | + 201: any; | |
6771 | + /** | |
6772 | + * @description | |
6773 | + * Unauthorized | |
6774 | + */ | |
6775 | + 401: any; | |
6776 | + /** | |
6777 | + * @description | |
6778 | + * Forbidden | |
6779 | + */ | |
6780 | + 403: any; | |
6781 | + /** | |
6782 | + * @description | |
6783 | + * Not Found | |
6784 | + */ | |
6785 | + 404: any; | |
6786 | +} | |
6787 | + | |
6788 | +export type PostOrderErpOrderStagesUploadResponseSuccess = | |
6789 | + PostOrderErpOrderStagesUploadResponse[200]; | |
6790 | +/** | |
6791 | + * @description | |
6792 | + * 合同文件上传 | |
6793 | + * @tags order-stages-controller | |
6794 | + * @produces * | |
6795 | + * @consumes multipart/form-data | |
6796 | + */ | |
6797 | +export const postOrderErpOrderStagesUpload = /* #__PURE__ */ (() => { | |
6798 | + const method = 'post'; | |
6799 | + const url = '/order/erp/orderStages/upload'; | |
6800 | + function request( | |
6801 | + option: PostOrderErpOrderStagesUploadOption, | |
6802 | + ): Promise<PostOrderErpOrderStagesUploadResponseSuccess> { | |
6803 | + return requester(request.url, { | |
6804 | + method: request.method, | |
6805 | + ...option, | |
6806 | + }) as unknown as Promise<PostOrderErpOrderStagesUploadResponseSuccess>; | |
6807 | + } | |
6808 | + | |
6809 | + /** http method */ | |
6810 | + request.method = method; | |
6811 | + /** request url */ | |
6812 | + request.url = url; | |
6813 | + return request; | |
6814 | +})(); | |
6815 | + | |
6816 | +/** @description request parameter type for postOrderErpOrderStagesPayWaySaveOrUpdate */ | |
6817 | +export interface PostOrderErpOrderStagesPayWaySaveOrUpdateOption { | |
6818 | + /** | |
6819 | + * @description | |
6820 | + * orderStagesPayWayList | |
6821 | + */ | |
6822 | + body: { | |
6823 | + /** | |
6824 | + @description | |
6825 | + orderStagesPayWayList */ | |
6826 | + orderStagesPayWayList: Array<OrderStagesPayWay>; | |
6827 | + }; | |
6828 | +} | |
6829 | + | |
6830 | +/** @description response type for postOrderErpOrderStagesPayWaySaveOrUpdate */ | |
6831 | +export interface PostOrderErpOrderStagesPayWaySaveOrUpdateResponse { | |
6832 | + /** | |
6833 | + * @description | |
6834 | + * OK | |
6835 | + */ | |
6836 | + 200: ServerResult; | |
6837 | + /** | |
6838 | + * @description | |
6839 | + * Created | |
6840 | + */ | |
6841 | + 201: any; | |
6842 | + /** | |
6843 | + * @description | |
6844 | + * Unauthorized | |
6845 | + */ | |
6846 | + 401: any; | |
6847 | + /** | |
6848 | + * @description | |
6849 | + * Forbidden | |
6850 | + */ | |
6851 | + 403: any; | |
6852 | + /** | |
6853 | + * @description | |
6854 | + * Not Found | |
6855 | + */ | |
6856 | + 404: any; | |
6857 | +} | |
6858 | + | |
6859 | +export type PostOrderErpOrderStagesPayWaySaveOrUpdateResponseSuccess = | |
6860 | + PostOrderErpOrderStagesPayWaySaveOrUpdateResponse[200]; | |
6861 | +/** | |
6862 | + * @description | |
6863 | + * 修改或者保存 | |
6864 | + * @tags order-stages-pay-way-controller | |
6865 | + * @produces * | |
6866 | + * @consumes application/json | |
6867 | + */ | |
6868 | +export const postOrderErpOrderStagesPayWaySaveOrUpdate = | |
6869 | + /* #__PURE__ */ (() => { | |
6870 | + const method = 'post'; | |
6871 | + const url = '/order/erp/orderStagesPayWay/saveOrUpdate'; | |
6872 | + function request( | |
6873 | + option: PostOrderErpOrderStagesPayWaySaveOrUpdateOption, | |
6874 | + ): Promise<PostOrderErpOrderStagesPayWaySaveOrUpdateResponseSuccess> { | |
6875 | + return requester(request.url, { | |
6876 | + method: request.method, | |
6877 | + ...option, | |
6878 | + }) as unknown as Promise<PostOrderErpOrderStagesPayWaySaveOrUpdateResponseSuccess>; | |
6879 | + } | |
6880 | + | |
6881 | + /** http method */ | |
6882 | + request.method = method; | |
6883 | + /** request url */ | |
6884 | + request.url = url; | |
6885 | + return request; | |
6886 | + })(); | |
6887 | + | |
6888 | +/** @description request parameter type for postOrderErpOrderStagesPayWaySelect */ | |
6889 | +export interface PostOrderErpOrderStagesPayWaySelectOption { | |
6890 | + /** | |
6891 | + * @description | |
6892 | + * orderStagesPayWayDo | |
6893 | + */ | |
6894 | + body: { | |
6895 | + /** | |
6896 | + @description | |
6897 | + orderStagesPayWayDo */ | |
6898 | + orderStagesPayWayDo: OrderStagesPayWayDo; | |
6899 | + }; | |
6900 | +} | |
6901 | + | |
6902 | +/** @description response type for postOrderErpOrderStagesPayWaySelect */ | |
6903 | +export interface PostOrderErpOrderStagesPayWaySelectResponse { | |
6904 | + /** | |
6905 | + * @description | |
6906 | + * OK | |
6907 | + */ | |
6908 | + 200: ServerResult; | |
6909 | + /** | |
6910 | + * @description | |
6911 | + * Created | |
6912 | + */ | |
6913 | + 201: any; | |
6914 | + /** | |
6915 | + * @description | |
6916 | + * Unauthorized | |
6917 | + */ | |
6918 | + 401: any; | |
6919 | + /** | |
6920 | + * @description | |
6921 | + * Forbidden | |
6922 | + */ | |
6923 | + 403: any; | |
6924 | + /** | |
6925 | + * @description | |
6926 | + * Not Found | |
6927 | + */ | |
6928 | + 404: any; | |
6929 | +} | |
6930 | + | |
6931 | +export type PostOrderErpOrderStagesPayWaySelectResponseSuccess = | |
6932 | + PostOrderErpOrderStagesPayWaySelectResponse[200]; | |
6933 | +/** | |
6934 | + * @description | |
6935 | + * 查询该的分期比例 | |
6936 | + * @tags order-stages-pay-way-controller | |
6937 | + * @produces * | |
6938 | + * @consumes application/json | |
6939 | + */ | |
6940 | +export const postOrderErpOrderStagesPayWaySelect = /* #__PURE__ */ (() => { | |
6941 | + const method = 'post'; | |
6942 | + const url = '/order/erp/orderStagesPayWay/select'; | |
6943 | + function request( | |
6944 | + option: PostOrderErpOrderStagesPayWaySelectOption, | |
6945 | + ): Promise<PostOrderErpOrderStagesPayWaySelectResponseSuccess> { | |
6946 | + return requester(request.url, { | |
6947 | + method: request.method, | |
6948 | + ...option, | |
6949 | + }) as unknown as Promise<PostOrderErpOrderStagesPayWaySelectResponseSuccess>; | |
6950 | + } | |
6951 | + | |
6952 | + /** http method */ | |
6953 | + request.method = method; | |
6954 | + /** request url */ | |
6955 | + request.url = url; | |
6956 | + return request; | |
6957 | +})(); | |
6958 | + | |
6959 | +/** @description request parameter type for postOrderErpOrderStagesPayWayUploadForPayWay */ | |
6960 | +export interface PostOrderErpOrderStagesPayWayUploadForPayWayOption { | |
6961 | + /** | |
6962 | + * @description | |
6963 | + * orderStagesPayWayFileDo | |
6964 | + */ | |
6965 | + body: { | |
6966 | + /** | |
6967 | + @description | |
6968 | + orderStagesPayWayFileDo */ | |
6969 | + orderStagesPayWayFileDo: OrderStagesPayWayFileDo; | |
6970 | + }; | |
6971 | +} | |
6972 | + | |
6973 | +/** @description response type for postOrderErpOrderStagesPayWayUploadForPayWay */ | |
6974 | +export interface PostOrderErpOrderStagesPayWayUploadForPayWayResponse { | |
6975 | + /** | |
6976 | + * @description | |
6977 | + * OK | |
6978 | + */ | |
6979 | + 200: ServerResult; | |
6980 | + /** | |
6981 | + * @description | |
6982 | + * Created | |
6983 | + */ | |
6984 | + 201: any; | |
6985 | + /** | |
6986 | + * @description | |
6987 | + * Unauthorized | |
6988 | + */ | |
6989 | + 401: any; | |
6990 | + /** | |
6991 | + * @description | |
6992 | + * Forbidden | |
6993 | + */ | |
6994 | + 403: any; | |
6995 | + /** | |
6996 | + * @description | |
6997 | + * Not Found | |
6998 | + */ | |
6999 | + 404: any; | |
7000 | +} | |
7001 | + | |
7002 | +export type PostOrderErpOrderStagesPayWayUploadForPayWayResponseSuccess = | |
7003 | + PostOrderErpOrderStagesPayWayUploadForPayWayResponse[200]; | |
7004 | +/** | |
7005 | + * @description | |
7006 | + * 付款合同文件上传 | |
7007 | + * @tags order-stages-pay-way-controller | |
7008 | + * @produces * | |
7009 | + * @consumes application/json | |
7010 | + */ | |
7011 | +export const postOrderErpOrderStagesPayWayUploadForPayWay = | |
7012 | + /* #__PURE__ */ (() => { | |
7013 | + const method = 'post'; | |
7014 | + const url = '/order/erp/orderStagesPayWay/uploadForPayWay'; | |
7015 | + function request( | |
7016 | + option: PostOrderErpOrderStagesPayWayUploadForPayWayOption, | |
7017 | + ): Promise<PostOrderErpOrderStagesPayWayUploadForPayWayResponseSuccess> { | |
7018 | + return requester(request.url, { | |
7019 | + method: request.method, | |
7020 | + ...option, | |
7021 | + }) as unknown as Promise<PostOrderErpOrderStagesPayWayUploadForPayWayResponseSuccess>; | |
7022 | + } | |
7023 | + | |
7024 | + /** http method */ | |
7025 | + request.method = method; | |
7026 | + /** request url */ | |
7027 | + request.url = url; | |
7028 | + return request; | |
7029 | + })(); | |
7030 | + | |
7031 | +/** @description request parameter type for postOrderErpProfitAnalysis */ | |
7032 | +export interface PostOrderErpProfitAnalysisOption { | |
7033 | + /** | |
7034 | + * @description | |
7035 | + * orderProfitAnalysisVo | |
7036 | + */ | |
7037 | + body: { | |
7038 | + /** | |
7039 | + @description | |
7040 | + orderProfitAnalysisVo */ | |
7041 | + orderProfitAnalysisVo: OrderProfitAnalysisVo; | |
7042 | + }; | |
7043 | +} | |
7044 | + | |
7045 | +/** @description response type for postOrderErpProfitAnalysis */ | |
7046 | +export interface PostOrderErpProfitAnalysisResponse { | |
7047 | + /** | |
7048 | + * @description | |
7049 | + * OK | |
7050 | + */ | |
7051 | + 200: ServerResult; | |
7052 | + /** | |
7053 | + * @description | |
7054 | + * Created | |
7055 | + */ | |
7056 | + 201: any; | |
7057 | + /** | |
7058 | + * @description | |
7059 | + * Unauthorized | |
7060 | + */ | |
7061 | + 401: any; | |
7062 | + /** | |
7063 | + * @description | |
7064 | + * Forbidden | |
7065 | + */ | |
7066 | + 403: any; | |
7067 | + /** | |
7068 | + * @description | |
7069 | + * Not Found | |
7070 | + */ | |
7071 | + 404: any; | |
7072 | +} | |
7073 | + | |
7074 | +export type PostOrderErpProfitAnalysisResponseSuccess = | |
7075 | + PostOrderErpProfitAnalysisResponse[200]; | |
7076 | +/** | |
7077 | + * @description | |
7078 | + * analysis | |
7079 | + * @tags order-profit-controller | |
7080 | + * @produces * | |
7081 | + * @consumes application/json | |
7082 | + */ | |
7083 | +export const postOrderErpProfitAnalysis = /* #__PURE__ */ (() => { | |
7084 | + const method = 'post'; | |
7085 | + const url = '/order/erp/profit/analysis'; | |
7086 | + function request( | |
7087 | + option: PostOrderErpProfitAnalysisOption, | |
7088 | + ): Promise<PostOrderErpProfitAnalysisResponseSuccess> { | |
7089 | + return requester(request.url, { | |
7090 | + method: request.method, | |
7091 | + ...option, | |
7092 | + }) as unknown as Promise<PostOrderErpProfitAnalysisResponseSuccess>; | |
7093 | + } | |
7094 | + | |
7095 | + /** http method */ | |
7096 | + request.method = method; | |
7097 | + /** request url */ | |
7098 | + request.url = url; | |
7099 | + return request; | |
7100 | +})(); | |
7101 | + | |
7102 | +/** @description request parameter type for postOrderErpRolesAdd */ | |
7103 | +export interface PostOrderErpRolesAddOption { | |
7104 | + /** | |
7105 | + * @description | |
7106 | + * roleVO | |
7107 | + */ | |
7108 | + body: { | |
7109 | + /** | |
7110 | + @description | |
7111 | + roleVO */ | |
7112 | + roleVO: AdminRoleVO; | |
7113 | + }; | |
7114 | +} | |
7115 | + | |
7116 | +/** @description response type for postOrderErpRolesAdd */ | |
7117 | +export interface PostOrderErpRolesAddResponse { | |
7118 | + /** | |
7119 | + * @description | |
7120 | + * OK | |
7121 | + */ | |
7122 | + 200: ServerResult; | |
7123 | + /** | |
7124 | + * @description | |
7125 | + * Created | |
7126 | + */ | |
7127 | + 201: any; | |
7128 | + /** | |
7129 | + * @description | |
7130 | + * Unauthorized | |
7131 | + */ | |
7132 | + 401: any; | |
7133 | + /** | |
7134 | + * @description | |
7135 | + * Forbidden | |
7136 | + */ | |
7137 | + 403: any; | |
7138 | + /** | |
7139 | + * @description | |
7140 | + * Not Found | |
7141 | + */ | |
7142 | + 404: any; | |
7143 | +} | |
7144 | + | |
7145 | +export type PostOrderErpRolesAddResponseSuccess = | |
7146 | + PostOrderErpRolesAddResponse[200]; | |
7147 | +/** | |
7148 | + * @description | |
7149 | + * 新增角色 | |
7150 | + * @tags 系统:角色管理 | |
7151 | + * @produces * | |
7152 | + * @consumes application/json | |
7153 | + */ | |
7154 | +export const postOrderErpRolesAdd = /* #__PURE__ */ (() => { | |
7155 | + const method = 'post'; | |
7156 | + const url = '/order/erp/roles/add'; | |
7157 | + function request( | |
7158 | + option: PostOrderErpRolesAddOption, | |
7159 | + ): Promise<PostOrderErpRolesAddResponseSuccess> { | |
7160 | + return requester(request.url, { | |
7161 | + method: request.method, | |
7162 | + ...option, | |
7163 | + }) as unknown as Promise<PostOrderErpRolesAddResponseSuccess>; | |
7164 | + } | |
7165 | + | |
7166 | + /** http method */ | |
7167 | + request.method = method; | |
7168 | + /** request url */ | |
7169 | + request.url = url; | |
7170 | + return request; | |
7171 | +})(); | |
7172 | + | |
7173 | +/** @description request parameter type for postOrderErpRolesAll */ | |
7174 | +export interface PostOrderErpRolesAllOption { | |
7175 | + /** | |
7176 | + * @description | |
7177 | + * queryVO | |
7178 | + */ | |
7179 | + body: { | |
7180 | + /** | |
7181 | + @description | |
7182 | + queryVO */ | |
7183 | + queryVO: AdminRoleQueryVO; | |
7184 | + }; | |
7185 | +} | |
7186 | + | |
7187 | +/** @description response type for postOrderErpRolesAll */ | |
7188 | +export interface PostOrderErpRolesAllResponse { | |
7189 | + /** | |
7190 | + * @description | |
7191 | + * OK | |
7192 | + */ | |
7193 | + 200: ServerResult; | |
7194 | + /** | |
7195 | + * @description | |
7196 | + * Created | |
7197 | + */ | |
7198 | + 201: any; | |
7199 | + /** | |
7200 | + * @description | |
7201 | + * Unauthorized | |
7202 | + */ | |
7203 | + 401: any; | |
7204 | + /** | |
7205 | + * @description | |
7206 | + * Forbidden | |
7207 | + */ | |
7208 | + 403: any; | |
7209 | + /** | |
7210 | + * @description | |
7211 | + * Not Found | |
7212 | + */ | |
7213 | + 404: any; | |
7214 | +} | |
7215 | + | |
7216 | +export type PostOrderErpRolesAllResponseSuccess = | |
7217 | + PostOrderErpRolesAllResponse[200]; | |
7218 | +/** | |
7219 | + * @description | |
7220 | + * 返回全部的角色 | |
7221 | + * @tags 系统:角色管理 | |
7222 | + * @produces * | |
7223 | + * @consumes application/json | |
7224 | + */ | |
7225 | +export const postOrderErpRolesAll = /* #__PURE__ */ (() => { | |
7226 | + const method = 'post'; | |
7227 | + const url = '/order/erp/roles/all'; | |
7228 | + function request( | |
7229 | + option: PostOrderErpRolesAllOption, | |
7230 | + ): Promise<PostOrderErpRolesAllResponseSuccess> { | |
7231 | + return requester(request.url, { | |
7232 | + method: request.method, | |
7233 | + ...option, | |
7234 | + }) as unknown as Promise<PostOrderErpRolesAllResponseSuccess>; | |
6272 | 7235 | } |
6273 | 7236 | |
6274 | 7237 | /** http method */ |
... | ... | @@ -6282,18 +7245,941 @@ export const postOrderErpRolesAll = /* #__PURE__ */ (() => { |
6282 | 7245 | export interface PostOrderErpRolesAuthMenuOption { |
6283 | 7246 | /** |
6284 | 7247 | * @description |
6285 | - * roleVO | |
7248 | + * roleVO | |
7249 | + */ | |
7250 | + body: { | |
7251 | + /** | |
7252 | + @description | |
7253 | + roleVO */ | |
7254 | + roleVO: AdminAuthRoleVO; | |
7255 | + }; | |
7256 | +} | |
7257 | + | |
7258 | +/** @description response type for postOrderErpRolesAuthMenu */ | |
7259 | +export interface PostOrderErpRolesAuthMenuResponse { | |
7260 | + /** | |
7261 | + * @description | |
7262 | + * OK | |
7263 | + */ | |
7264 | + 200: ServerResult; | |
7265 | + /** | |
7266 | + * @description | |
7267 | + * Created | |
7268 | + */ | |
7269 | + 201: any; | |
7270 | + /** | |
7271 | + * @description | |
7272 | + * Unauthorized | |
7273 | + */ | |
7274 | + 401: any; | |
7275 | + /** | |
7276 | + * @description | |
7277 | + * Forbidden | |
7278 | + */ | |
7279 | + 403: any; | |
7280 | + /** | |
7281 | + * @description | |
7282 | + * Not Found | |
7283 | + */ | |
7284 | + 404: any; | |
7285 | +} | |
7286 | + | |
7287 | +export type PostOrderErpRolesAuthMenuResponseSuccess = | |
7288 | + PostOrderErpRolesAuthMenuResponse[200]; | |
7289 | +/** | |
7290 | + * @description | |
7291 | + * 授权角色菜单 | |
7292 | + * @tags 系统:角色管理 | |
7293 | + * @produces * | |
7294 | + * @consumes application/json | |
7295 | + */ | |
7296 | +export const postOrderErpRolesAuthMenu = /* #__PURE__ */ (() => { | |
7297 | + const method = 'post'; | |
7298 | + const url = '/order/erp/roles/auth_menu'; | |
7299 | + function request( | |
7300 | + option: PostOrderErpRolesAuthMenuOption, | |
7301 | + ): Promise<PostOrderErpRolesAuthMenuResponseSuccess> { | |
7302 | + return requester(request.url, { | |
7303 | + method: request.method, | |
7304 | + ...option, | |
7305 | + }) as unknown as Promise<PostOrderErpRolesAuthMenuResponseSuccess>; | |
7306 | + } | |
7307 | + | |
7308 | + /** http method */ | |
7309 | + request.method = method; | |
7310 | + /** request url */ | |
7311 | + request.url = url; | |
7312 | + return request; | |
7313 | +})(); | |
7314 | + | |
7315 | +/** @description request parameter type for postOrderErpRolesDelete */ | |
7316 | +export interface PostOrderErpRolesDeleteOption { | |
7317 | + /** | |
7318 | + * @description | |
7319 | + * queryVO | |
7320 | + */ | |
7321 | + body: { | |
7322 | + /** | |
7323 | + @description | |
7324 | + queryVO */ | |
7325 | + queryVO: AdminRoleQueryVO; | |
7326 | + }; | |
7327 | +} | |
7328 | + | |
7329 | +/** @description response type for postOrderErpRolesDelete */ | |
7330 | +export interface PostOrderErpRolesDeleteResponse { | |
7331 | + /** | |
7332 | + * @description | |
7333 | + * OK | |
7334 | + */ | |
7335 | + 200: ServerResult; | |
7336 | + /** | |
7337 | + * @description | |
7338 | + * Created | |
7339 | + */ | |
7340 | + 201: any; | |
7341 | + /** | |
7342 | + * @description | |
7343 | + * Unauthorized | |
7344 | + */ | |
7345 | + 401: any; | |
7346 | + /** | |
7347 | + * @description | |
7348 | + * Forbidden | |
7349 | + */ | |
7350 | + 403: any; | |
7351 | + /** | |
7352 | + * @description | |
7353 | + * Not Found | |
7354 | + */ | |
7355 | + 404: any; | |
7356 | +} | |
7357 | + | |
7358 | +export type PostOrderErpRolesDeleteResponseSuccess = | |
7359 | + PostOrderErpRolesDeleteResponse[200]; | |
7360 | +/** | |
7361 | + * @description | |
7362 | + * 删除角色 | |
7363 | + * @tags 系统:角色管理 | |
7364 | + * @produces * | |
7365 | + * @consumes application/json | |
7366 | + */ | |
7367 | +export const postOrderErpRolesDelete = /* #__PURE__ */ (() => { | |
7368 | + const method = 'post'; | |
7369 | + const url = '/order/erp/roles/delete'; | |
7370 | + function request( | |
7371 | + option: PostOrderErpRolesDeleteOption, | |
7372 | + ): Promise<PostOrderErpRolesDeleteResponseSuccess> { | |
7373 | + return requester(request.url, { | |
7374 | + method: request.method, | |
7375 | + ...option, | |
7376 | + }) as unknown as Promise<PostOrderErpRolesDeleteResponseSuccess>; | |
7377 | + } | |
7378 | + | |
7379 | + /** http method */ | |
7380 | + request.method = method; | |
7381 | + /** request url */ | |
7382 | + request.url = url; | |
7383 | + return request; | |
7384 | +})(); | |
7385 | + | |
7386 | +/** @description request parameter type for postOrderErpRolesDetail */ | |
7387 | +export interface PostOrderErpRolesDetailOption { | |
7388 | + /** | |
7389 | + * @description | |
7390 | + * queryVO | |
7391 | + */ | |
7392 | + body: { | |
7393 | + /** | |
7394 | + @description | |
7395 | + queryVO */ | |
7396 | + queryVO: AdminRoleQueryVO; | |
7397 | + }; | |
7398 | +} | |
7399 | + | |
7400 | +/** @description response type for postOrderErpRolesDetail */ | |
7401 | +export interface PostOrderErpRolesDetailResponse { | |
7402 | + /** | |
7403 | + * @description | |
7404 | + * OK | |
7405 | + */ | |
7406 | + 200: ServerResult; | |
7407 | + /** | |
7408 | + * @description | |
7409 | + * Created | |
7410 | + */ | |
7411 | + 201: any; | |
7412 | + /** | |
7413 | + * @description | |
7414 | + * Unauthorized | |
7415 | + */ | |
7416 | + 401: any; | |
7417 | + /** | |
7418 | + * @description | |
7419 | + * Forbidden | |
7420 | + */ | |
7421 | + 403: any; | |
7422 | + /** | |
7423 | + * @description | |
7424 | + * Not Found | |
7425 | + */ | |
7426 | + 404: any; | |
7427 | +} | |
7428 | + | |
7429 | +export type PostOrderErpRolesDetailResponseSuccess = | |
7430 | + PostOrderErpRolesDetailResponse[200]; | |
7431 | +/** | |
7432 | + * @description | |
7433 | + * 获取单个role | |
7434 | + * @tags 系统:角色管理 | |
7435 | + * @produces * | |
7436 | + * @consumes application/json | |
7437 | + */ | |
7438 | +export const postOrderErpRolesDetail = /* #__PURE__ */ (() => { | |
7439 | + const method = 'post'; | |
7440 | + const url = '/order/erp/roles/detail'; | |
7441 | + function request( | |
7442 | + option: PostOrderErpRolesDetailOption, | |
7443 | + ): Promise<PostOrderErpRolesDetailResponseSuccess> { | |
7444 | + return requester(request.url, { | |
7445 | + method: request.method, | |
7446 | + ...option, | |
7447 | + }) as unknown as Promise<PostOrderErpRolesDetailResponseSuccess>; | |
7448 | + } | |
7449 | + | |
7450 | + /** http method */ | |
7451 | + request.method = method; | |
7452 | + /** request url */ | |
7453 | + request.url = url; | |
7454 | + return request; | |
7455 | +})(); | |
7456 | + | |
7457 | +/** @description request parameter type for postOrderErpRolesEdit */ | |
7458 | +export interface PostOrderErpRolesEditOption { | |
7459 | + /** | |
7460 | + * @description | |
7461 | + * roleVO | |
7462 | + */ | |
7463 | + body: { | |
7464 | + /** | |
7465 | + @description | |
7466 | + roleVO */ | |
7467 | + roleVO: AdminRoleVO; | |
7468 | + }; | |
7469 | +} | |
7470 | + | |
7471 | +/** @description response type for postOrderErpRolesEdit */ | |
7472 | +export interface PostOrderErpRolesEditResponse { | |
7473 | + /** | |
7474 | + * @description | |
7475 | + * OK | |
7476 | + */ | |
7477 | + 200: ServerResult; | |
7478 | + /** | |
7479 | + * @description | |
7480 | + * Created | |
7481 | + */ | |
7482 | + 201: any; | |
7483 | + /** | |
7484 | + * @description | |
7485 | + * Unauthorized | |
7486 | + */ | |
7487 | + 401: any; | |
7488 | + /** | |
7489 | + * @description | |
7490 | + * Forbidden | |
7491 | + */ | |
7492 | + 403: any; | |
7493 | + /** | |
7494 | + * @description | |
7495 | + * Not Found | |
7496 | + */ | |
7497 | + 404: any; | |
7498 | +} | |
7499 | + | |
7500 | +export type PostOrderErpRolesEditResponseSuccess = | |
7501 | + PostOrderErpRolesEditResponse[200]; | |
7502 | +/** | |
7503 | + * @description | |
7504 | + * 修改角色 | |
7505 | + * @tags 系统:角色管理 | |
7506 | + * @produces * | |
7507 | + * @consumes application/json | |
7508 | + */ | |
7509 | +export const postOrderErpRolesEdit = /* #__PURE__ */ (() => { | |
7510 | + const method = 'post'; | |
7511 | + const url = '/order/erp/roles/edit'; | |
7512 | + function request( | |
7513 | + option: PostOrderErpRolesEditOption, | |
7514 | + ): Promise<PostOrderErpRolesEditResponseSuccess> { | |
7515 | + return requester(request.url, { | |
7516 | + method: request.method, | |
7517 | + ...option, | |
7518 | + }) as unknown as Promise<PostOrderErpRolesEditResponseSuccess>; | |
7519 | + } | |
7520 | + | |
7521 | + /** http method */ | |
7522 | + request.method = method; | |
7523 | + /** request url */ | |
7524 | + request.url = url; | |
7525 | + return request; | |
7526 | +})(); | |
7527 | + | |
7528 | +/** @description request parameter type for postOrderErpRolesListByPage */ | |
7529 | +export interface PostOrderErpRolesListByPageOption { | |
7530 | + /** | |
7531 | + * @description | |
7532 | + * queryVO | |
7533 | + */ | |
7534 | + body: { | |
7535 | + /** | |
7536 | + @description | |
7537 | + queryVO */ | |
7538 | + queryVO: AdminRoleQueryVO; | |
7539 | + }; | |
7540 | +} | |
7541 | + | |
7542 | +/** @description response type for postOrderErpRolesListByPage */ | |
7543 | +export interface PostOrderErpRolesListByPageResponse { | |
7544 | + /** | |
7545 | + * @description | |
7546 | + * OK | |
7547 | + */ | |
7548 | + 200: ServerResult; | |
7549 | + /** | |
7550 | + * @description | |
7551 | + * Created | |
7552 | + */ | |
7553 | + 201: any; | |
7554 | + /** | |
7555 | + * @description | |
7556 | + * Unauthorized | |
7557 | + */ | |
7558 | + 401: any; | |
7559 | + /** | |
7560 | + * @description | |
7561 | + * Forbidden | |
7562 | + */ | |
7563 | + 403: any; | |
7564 | + /** | |
7565 | + * @description | |
7566 | + * Not Found | |
7567 | + */ | |
7568 | + 404: any; | |
7569 | +} | |
7570 | + | |
7571 | +export type PostOrderErpRolesListByPageResponseSuccess = | |
7572 | + PostOrderErpRolesListByPageResponse[200]; | |
7573 | +/** | |
7574 | + * @description | |
7575 | + * 查询角色 | |
7576 | + * @tags 系统:角色管理 | |
7577 | + * @produces * | |
7578 | + * @consumes application/json | |
7579 | + */ | |
7580 | +export const postOrderErpRolesListByPage = /* #__PURE__ */ (() => { | |
7581 | + const method = 'post'; | |
7582 | + const url = '/order/erp/roles/list_by_page'; | |
7583 | + function request( | |
7584 | + option: PostOrderErpRolesListByPageOption, | |
7585 | + ): Promise<PostOrderErpRolesListByPageResponseSuccess> { | |
7586 | + return requester(request.url, { | |
7587 | + method: request.method, | |
7588 | + ...option, | |
7589 | + }) as unknown as Promise<PostOrderErpRolesListByPageResponseSuccess>; | |
7590 | + } | |
7591 | + | |
7592 | + /** http method */ | |
7593 | + request.method = method; | |
7594 | + /** request url */ | |
7595 | + request.url = url; | |
7596 | + return request; | |
7597 | +})(); | |
7598 | + | |
7599 | +/** @description request parameter type for postOrderErpUsersAdd */ | |
7600 | +export interface PostOrderErpUsersAddOption { | |
7601 | + /** | |
7602 | + * @description | |
7603 | + * userVO | |
7604 | + */ | |
7605 | + body: { | |
7606 | + /** | |
7607 | + @description | |
7608 | + userVO */ | |
7609 | + userVO: AdminUserVO; | |
7610 | + }; | |
7611 | +} | |
7612 | + | |
7613 | +/** @description response type for postOrderErpUsersAdd */ | |
7614 | +export interface PostOrderErpUsersAddResponse { | |
7615 | + /** | |
7616 | + * @description | |
7617 | + * OK | |
7618 | + */ | |
7619 | + 200: ServerResult; | |
7620 | + /** | |
7621 | + * @description | |
7622 | + * Created | |
7623 | + */ | |
7624 | + 201: any; | |
7625 | + /** | |
7626 | + * @description | |
7627 | + * Unauthorized | |
7628 | + */ | |
7629 | + 401: any; | |
7630 | + /** | |
7631 | + * @description | |
7632 | + * Forbidden | |
7633 | + */ | |
7634 | + 403: any; | |
7635 | + /** | |
7636 | + * @description | |
7637 | + * Not Found | |
7638 | + */ | |
7639 | + 404: any; | |
7640 | +} | |
7641 | + | |
7642 | +export type PostOrderErpUsersAddResponseSuccess = | |
7643 | + PostOrderErpUsersAddResponse[200]; | |
7644 | +/** | |
7645 | + * @description | |
7646 | + * 新增用户 | |
7647 | + * @tags 系统:用户管理 | |
7648 | + * @produces * | |
7649 | + * @consumes application/json | |
7650 | + */ | |
7651 | +export const postOrderErpUsersAdd = /* #__PURE__ */ (() => { | |
7652 | + const method = 'post'; | |
7653 | + const url = '/order/erp/users/add'; | |
7654 | + function request( | |
7655 | + option: PostOrderErpUsersAddOption, | |
7656 | + ): Promise<PostOrderErpUsersAddResponseSuccess> { | |
7657 | + return requester(request.url, { | |
7658 | + method: request.method, | |
7659 | + ...option, | |
7660 | + }) as unknown as Promise<PostOrderErpUsersAddResponseSuccess>; | |
7661 | + } | |
7662 | + | |
7663 | + /** http method */ | |
7664 | + request.method = method; | |
7665 | + /** request url */ | |
7666 | + request.url = url; | |
7667 | + return request; | |
7668 | +})(); | |
7669 | + | |
7670 | +/** @description request parameter type for postOrderErpUsersAuthRole */ | |
7671 | +export interface PostOrderErpUsersAuthRoleOption { | |
7672 | + /** | |
7673 | + * @description | |
7674 | + * userVO | |
7675 | + */ | |
7676 | + body: { | |
7677 | + /** | |
7678 | + @description | |
7679 | + userVO */ | |
7680 | + userVO: AdminAuthUserVO; | |
7681 | + }; | |
7682 | +} | |
7683 | + | |
7684 | +/** @description response type for postOrderErpUsersAuthRole */ | |
7685 | +export interface PostOrderErpUsersAuthRoleResponse { | |
7686 | + /** | |
7687 | + * @description | |
7688 | + * OK | |
7689 | + */ | |
7690 | + 200: ServerResult; | |
7691 | + /** | |
7692 | + * @description | |
7693 | + * Created | |
7694 | + */ | |
7695 | + 201: any; | |
7696 | + /** | |
7697 | + * @description | |
7698 | + * Unauthorized | |
7699 | + */ | |
7700 | + 401: any; | |
7701 | + /** | |
7702 | + * @description | |
7703 | + * Forbidden | |
7704 | + */ | |
7705 | + 403: any; | |
7706 | + /** | |
7707 | + * @description | |
7708 | + * Not Found | |
7709 | + */ | |
7710 | + 404: any; | |
7711 | +} | |
7712 | + | |
7713 | +export type PostOrderErpUsersAuthRoleResponseSuccess = | |
7714 | + PostOrderErpUsersAuthRoleResponse[200]; | |
7715 | +/** | |
7716 | + * @description | |
7717 | + * 授权角色 | |
7718 | + * @tags 系统:用户管理 | |
7719 | + * @produces * | |
7720 | + * @consumes application/json | |
7721 | + */ | |
7722 | +export const postOrderErpUsersAuthRole = /* #__PURE__ */ (() => { | |
7723 | + const method = 'post'; | |
7724 | + const url = '/order/erp/users/auth_role'; | |
7725 | + function request( | |
7726 | + option: PostOrderErpUsersAuthRoleOption, | |
7727 | + ): Promise<PostOrderErpUsersAuthRoleResponseSuccess> { | |
7728 | + return requester(request.url, { | |
7729 | + method: request.method, | |
7730 | + ...option, | |
7731 | + }) as unknown as Promise<PostOrderErpUsersAuthRoleResponseSuccess>; | |
7732 | + } | |
7733 | + | |
7734 | + /** http method */ | |
7735 | + request.method = method; | |
7736 | + /** request url */ | |
7737 | + request.url = url; | |
7738 | + return request; | |
7739 | +})(); | |
7740 | + | |
7741 | +/** @description request parameter type for postOrderErpUsersDelete */ | |
7742 | +export interface PostOrderErpUsersDeleteOption { | |
7743 | + /** | |
7744 | + * @description | |
7745 | + * queryVO | |
7746 | + */ | |
7747 | + body: { | |
7748 | + /** | |
7749 | + @description | |
7750 | + queryVO */ | |
7751 | + queryVO: AdminUserQueryVO; | |
7752 | + }; | |
7753 | +} | |
7754 | + | |
7755 | +/** @description response type for postOrderErpUsersDelete */ | |
7756 | +export interface PostOrderErpUsersDeleteResponse { | |
7757 | + /** | |
7758 | + * @description | |
7759 | + * OK | |
7760 | + */ | |
7761 | + 200: ServerResult; | |
7762 | + /** | |
7763 | + * @description | |
7764 | + * Created | |
7765 | + */ | |
7766 | + 201: any; | |
7767 | + /** | |
7768 | + * @description | |
7769 | + * Unauthorized | |
7770 | + */ | |
7771 | + 401: any; | |
7772 | + /** | |
7773 | + * @description | |
7774 | + * Forbidden | |
7775 | + */ | |
7776 | + 403: any; | |
7777 | + /** | |
7778 | + * @description | |
7779 | + * Not Found | |
7780 | + */ | |
7781 | + 404: any; | |
7782 | +} | |
7783 | + | |
7784 | +export type PostOrderErpUsersDeleteResponseSuccess = | |
7785 | + PostOrderErpUsersDeleteResponse[200]; | |
7786 | +/** | |
7787 | + * @description | |
7788 | + * 删除用户 | |
7789 | + * @tags 系统:用户管理 | |
7790 | + * @produces * | |
7791 | + * @consumes application/json | |
7792 | + */ | |
7793 | +export const postOrderErpUsersDelete = /* #__PURE__ */ (() => { | |
7794 | + const method = 'post'; | |
7795 | + const url = '/order/erp/users/delete'; | |
7796 | + function request( | |
7797 | + option: PostOrderErpUsersDeleteOption, | |
7798 | + ): Promise<PostOrderErpUsersDeleteResponseSuccess> { | |
7799 | + return requester(request.url, { | |
7800 | + method: request.method, | |
7801 | + ...option, | |
7802 | + }) as unknown as Promise<PostOrderErpUsersDeleteResponseSuccess>; | |
7803 | + } | |
7804 | + | |
7805 | + /** http method */ | |
7806 | + request.method = method; | |
7807 | + /** request url */ | |
7808 | + request.url = url; | |
7809 | + return request; | |
7810 | +})(); | |
7811 | + | |
7812 | +/** @description request parameter type for postOrderErpUsersEdit */ | |
7813 | +export interface PostOrderErpUsersEditOption { | |
7814 | + /** | |
7815 | + * @description | |
7816 | + * userVO | |
7817 | + */ | |
7818 | + body: { | |
7819 | + /** | |
7820 | + @description | |
7821 | + userVO */ | |
7822 | + userVO: AdminUserVO; | |
7823 | + }; | |
7824 | +} | |
7825 | + | |
7826 | +/** @description response type for postOrderErpUsersEdit */ | |
7827 | +export interface PostOrderErpUsersEditResponse { | |
7828 | + /** | |
7829 | + * @description | |
7830 | + * OK | |
7831 | + */ | |
7832 | + 200: ServerResult; | |
7833 | + /** | |
7834 | + * @description | |
7835 | + * Created | |
7836 | + */ | |
7837 | + 201: any; | |
7838 | + /** | |
7839 | + * @description | |
7840 | + * Unauthorized | |
7841 | + */ | |
7842 | + 401: any; | |
7843 | + /** | |
7844 | + * @description | |
7845 | + * Forbidden | |
7846 | + */ | |
7847 | + 403: any; | |
7848 | + /** | |
7849 | + * @description | |
7850 | + * Not Found | |
7851 | + */ | |
7852 | + 404: any; | |
7853 | +} | |
7854 | + | |
7855 | +export type PostOrderErpUsersEditResponseSuccess = | |
7856 | + PostOrderErpUsersEditResponse[200]; | |
7857 | +/** | |
7858 | + * @description | |
7859 | + * 修改用户 | |
7860 | + * @tags 系统:用户管理 | |
7861 | + * @produces * | |
7862 | + * @consumes application/json | |
7863 | + */ | |
7864 | +export const postOrderErpUsersEdit = /* #__PURE__ */ (() => { | |
7865 | + const method = 'post'; | |
7866 | + const url = '/order/erp/users/edit'; | |
7867 | + function request( | |
7868 | + option: PostOrderErpUsersEditOption, | |
7869 | + ): Promise<PostOrderErpUsersEditResponseSuccess> { | |
7870 | + return requester(request.url, { | |
7871 | + method: request.method, | |
7872 | + ...option, | |
7873 | + }) as unknown as Promise<PostOrderErpUsersEditResponseSuccess>; | |
7874 | + } | |
7875 | + | |
7876 | + /** http method */ | |
7877 | + request.method = method; | |
7878 | + /** request url */ | |
7879 | + request.url = url; | |
7880 | + return request; | |
7881 | +})(); | |
7882 | + | |
7883 | +/** @description request parameter type for postOrderErpUsersListByPage */ | |
7884 | +export interface PostOrderErpUsersListByPageOption { | |
7885 | + /** | |
7886 | + * @description | |
7887 | + * queryVO | |
7888 | + */ | |
7889 | + body: { | |
7890 | + /** | |
7891 | + @description | |
7892 | + queryVO */ | |
7893 | + queryVO: AdminUserQueryVO; | |
7894 | + }; | |
7895 | +} | |
7896 | + | |
7897 | +/** @description response type for postOrderErpUsersListByPage */ | |
7898 | +export interface PostOrderErpUsersListByPageResponse { | |
7899 | + /** | |
7900 | + * @description | |
7901 | + * OK | |
7902 | + */ | |
7903 | + 200: ServerResult; | |
7904 | + /** | |
7905 | + * @description | |
7906 | + * Created | |
7907 | + */ | |
7908 | + 201: any; | |
7909 | + /** | |
7910 | + * @description | |
7911 | + * Unauthorized | |
7912 | + */ | |
7913 | + 401: any; | |
7914 | + /** | |
7915 | + * @description | |
7916 | + * Forbidden | |
7917 | + */ | |
7918 | + 403: any; | |
7919 | + /** | |
7920 | + * @description | |
7921 | + * Not Found | |
7922 | + */ | |
7923 | + 404: any; | |
7924 | +} | |
7925 | + | |
7926 | +export type PostOrderErpUsersListByPageResponseSuccess = | |
7927 | + PostOrderErpUsersListByPageResponse[200]; | |
7928 | +/** | |
7929 | + * @description | |
7930 | + * 查询用户 | |
7931 | + * @tags 系统:用户管理 | |
7932 | + * @produces * | |
7933 | + * @consumes application/json | |
7934 | + */ | |
7935 | +export const postOrderErpUsersListByPage = /* #__PURE__ */ (() => { | |
7936 | + const method = 'post'; | |
7937 | + const url = '/order/erp/users/list_by_page'; | |
7938 | + function request( | |
7939 | + option: PostOrderErpUsersListByPageOption, | |
7940 | + ): Promise<PostOrderErpUsersListByPageResponseSuccess> { | |
7941 | + return requester(request.url, { | |
7942 | + method: request.method, | |
7943 | + ...option, | |
7944 | + }) as unknown as Promise<PostOrderErpUsersListByPageResponseSuccess>; | |
7945 | + } | |
7946 | + | |
7947 | + /** http method */ | |
7948 | + request.method = method; | |
7949 | + /** request url */ | |
7950 | + request.url = url; | |
7951 | + return request; | |
7952 | +})(); | |
7953 | + | |
7954 | +/** @description request parameter type for postOrderErpUsersReset */ | |
7955 | +export interface PostOrderErpUsersResetOption { | |
7956 | + /** | |
7957 | + * @description | |
7958 | + * resetPwdVO | |
7959 | + */ | |
7960 | + body: { | |
7961 | + /** | |
7962 | + @description | |
7963 | + resetPwdVO */ | |
7964 | + resetPwdVO: ResetPwdVO; | |
7965 | + }; | |
7966 | +} | |
7967 | + | |
7968 | +/** @description response type for postOrderErpUsersReset */ | |
7969 | +export interface PostOrderErpUsersResetResponse { | |
7970 | + /** | |
7971 | + * @description | |
7972 | + * OK | |
7973 | + */ | |
7974 | + 200: ServerResult; | |
7975 | + /** | |
7976 | + * @description | |
7977 | + * Created | |
7978 | + */ | |
7979 | + 201: any; | |
7980 | + /** | |
7981 | + * @description | |
7982 | + * Unauthorized | |
7983 | + */ | |
7984 | + 401: any; | |
7985 | + /** | |
7986 | + * @description | |
7987 | + * Forbidden | |
7988 | + */ | |
7989 | + 403: any; | |
7990 | + /** | |
7991 | + * @description | |
7992 | + * Not Found | |
7993 | + */ | |
7994 | + 404: any; | |
7995 | +} | |
7996 | + | |
7997 | +export type PostOrderErpUsersResetResponseSuccess = | |
7998 | + PostOrderErpUsersResetResponse[200]; | |
7999 | +/** | |
8000 | + * @description | |
8001 | + * 重置密码 | |
8002 | + * @tags 系统:用户管理 | |
8003 | + * @produces * | |
8004 | + * @consumes application/json | |
8005 | + */ | |
8006 | +export const postOrderErpUsersReset = /* #__PURE__ */ (() => { | |
8007 | + const method = 'post'; | |
8008 | + const url = '/order/erp/users/reset'; | |
8009 | + function request( | |
8010 | + option: PostOrderErpUsersResetOption, | |
8011 | + ): Promise<PostOrderErpUsersResetResponseSuccess> { | |
8012 | + return requester(request.url, { | |
8013 | + method: request.method, | |
8014 | + ...option, | |
8015 | + }) as unknown as Promise<PostOrderErpUsersResetResponseSuccess>; | |
8016 | + } | |
8017 | + | |
8018 | + /** http method */ | |
8019 | + request.method = method; | |
8020 | + /** request url */ | |
8021 | + request.url = url; | |
8022 | + return request; | |
8023 | +})(); | |
8024 | + | |
8025 | +/** @description request parameter type for postOrderErpUsersUpdatePass */ | |
8026 | +export interface PostOrderErpUsersUpdatePassOption { | |
8027 | + /** | |
8028 | + * @description | |
8029 | + * pwdVO | |
8030 | + */ | |
8031 | + body: { | |
8032 | + /** | |
8033 | + @description | |
8034 | + pwdVO */ | |
8035 | + pwdVO: UpdatePwdVO; | |
8036 | + }; | |
8037 | +} | |
8038 | + | |
8039 | +/** @description response type for postOrderErpUsersUpdatePass */ | |
8040 | +export interface PostOrderErpUsersUpdatePassResponse { | |
8041 | + /** | |
8042 | + * @description | |
8043 | + * OK | |
8044 | + */ | |
8045 | + 200: ServerResult; | |
8046 | + /** | |
8047 | + * @description | |
8048 | + * Created | |
8049 | + */ | |
8050 | + 201: any; | |
8051 | + /** | |
8052 | + * @description | |
8053 | + * Unauthorized | |
8054 | + */ | |
8055 | + 401: any; | |
8056 | + /** | |
8057 | + * @description | |
8058 | + * Forbidden | |
8059 | + */ | |
8060 | + 403: any; | |
8061 | + /** | |
8062 | + * @description | |
8063 | + * Not Found | |
8064 | + */ | |
8065 | + 404: any; | |
8066 | +} | |
8067 | + | |
8068 | +export type PostOrderErpUsersUpdatePassResponseSuccess = | |
8069 | + PostOrderErpUsersUpdatePassResponse[200]; | |
8070 | +/** | |
8071 | + * @description | |
8072 | + * 修改密码 | |
8073 | + * @tags 系统:用户管理 | |
8074 | + * @produces * | |
8075 | + * @consumes application/json | |
8076 | + */ | |
8077 | +export const postOrderErpUsersUpdatePass = /* #__PURE__ */ (() => { | |
8078 | + const method = 'post'; | |
8079 | + const url = '/order/erp/users/update_pass'; | |
8080 | + function request( | |
8081 | + option: PostOrderErpUsersUpdatePassOption, | |
8082 | + ): Promise<PostOrderErpUsersUpdatePassResponseSuccess> { | |
8083 | + return requester(request.url, { | |
8084 | + method: request.method, | |
8085 | + ...option, | |
8086 | + }) as unknown as Promise<PostOrderErpUsersUpdatePassResponseSuccess>; | |
8087 | + } | |
8088 | + | |
8089 | + /** http method */ | |
8090 | + request.method = method; | |
8091 | + /** request url */ | |
8092 | + request.url = url; | |
8093 | + return request; | |
8094 | +})(); | |
8095 | + | |
8096 | +/** @description request parameter type for postOrderImportImportWeightAndVolume */ | |
8097 | +export interface PostOrderImportImportWeightAndVolumeOption { | |
8098 | + /** | |
8099 | + * @description | |
8100 | + * file | |
8101 | + */ | |
8102 | + formData: { | |
8103 | + /** | |
8104 | + @description | |
8105 | + file */ | |
8106 | + file: File; | |
8107 | + }; | |
8108 | +} | |
8109 | + | |
8110 | +/** @description response type for postOrderImportImportWeightAndVolume */ | |
8111 | +export interface PostOrderImportImportWeightAndVolumeResponse { | |
8112 | + /** | |
8113 | + * @description | |
8114 | + * OK | |
8115 | + */ | |
8116 | + 200: ServerResult; | |
8117 | + /** | |
8118 | + * @description | |
8119 | + * Created | |
8120 | + */ | |
8121 | + 201: any; | |
8122 | + /** | |
8123 | + * @description | |
8124 | + * Unauthorized | |
8125 | + */ | |
8126 | + 401: any; | |
8127 | + /** | |
8128 | + * @description | |
8129 | + * Forbidden | |
8130 | + */ | |
8131 | + 403: any; | |
8132 | + /** | |
8133 | + * @description | |
8134 | + * Not Found | |
8135 | + */ | |
8136 | + 404: any; | |
8137 | +} | |
8138 | + | |
8139 | +export type PostOrderImportImportWeightAndVolumeResponseSuccess = | |
8140 | + PostOrderImportImportWeightAndVolumeResponse[200]; | |
8141 | +/** | |
8142 | + * @description | |
8143 | + * 导入重量和体积 | |
8144 | + * @tags 导入 | |
8145 | + * @produces * | |
8146 | + * @consumes multipart/form-data | |
8147 | + */ | |
8148 | +export const postOrderImportImportWeightAndVolume = /* #__PURE__ */ (() => { | |
8149 | + const method = 'post'; | |
8150 | + const url = '/order/import/importWeightAndVolume'; | |
8151 | + function request( | |
8152 | + option: PostOrderImportImportWeightAndVolumeOption, | |
8153 | + ): Promise<PostOrderImportImportWeightAndVolumeResponseSuccess> { | |
8154 | + return requester(request.url, { | |
8155 | + method: request.method, | |
8156 | + ...option, | |
8157 | + }) as unknown as Promise<PostOrderImportImportWeightAndVolumeResponseSuccess>; | |
8158 | + } | |
8159 | + | |
8160 | + /** http method */ | |
8161 | + request.method = method; | |
8162 | + /** request url */ | |
8163 | + request.url = url; | |
8164 | + return request; | |
8165 | +})(); | |
8166 | + | |
8167 | +/** @description request parameter type for postPrepaidAudit */ | |
8168 | +export interface PostPrepaidAuditOption { | |
8169 | + /** | |
8170 | + * @description | |
8171 | + * request | |
6286 | 8172 | */ |
6287 | 8173 | body: { |
6288 | 8174 | /** |
6289 | 8175 | @description |
6290 | - roleVO */ | |
6291 | - roleVO: AdminAuthRoleVO; | |
8176 | + request */ | |
8177 | + request: SalesRechargePrepaymentAuditRequest; | |
6292 | 8178 | }; |
6293 | 8179 | } |
6294 | 8180 | |
6295 | -/** @description response type for postOrderErpRolesAuthMenu */ | |
6296 | -export interface PostOrderErpRolesAuthMenuResponse { | |
8181 | +/** @description response type for postPrepaidAudit */ | |
8182 | +export interface PostPrepaidAuditResponse { | |
6297 | 8183 | /** |
6298 | 8184 | * @description |
6299 | 8185 | * OK |
... | ... | @@ -6321,25 +8207,24 @@ export interface PostOrderErpRolesAuthMenuResponse { |
6321 | 8207 | 404: any; |
6322 | 8208 | } |
6323 | 8209 | |
6324 | -export type PostOrderErpRolesAuthMenuResponseSuccess = | |
6325 | - PostOrderErpRolesAuthMenuResponse[200]; | |
8210 | +export type PostPrepaidAuditResponseSuccess = PostPrepaidAuditResponse[200]; | |
6326 | 8211 | /** |
6327 | 8212 | * @description |
6328 | - * 授权角色菜单 | |
6329 | - * @tags 系统:角色管理 | |
8213 | + * 财务审核 | |
8214 | + * @tags prepaid-controller | |
6330 | 8215 | * @produces * |
6331 | 8216 | * @consumes application/json |
6332 | 8217 | */ |
6333 | -export const postOrderErpRolesAuthMenu = /* #__PURE__ */ (() => { | |
8218 | +export const postPrepaidAudit = /* #__PURE__ */ (() => { | |
6334 | 8219 | const method = 'post'; |
6335 | - const url = '/order/erp/roles/auth_menu'; | |
8220 | + const url = '/prepaid/audit'; | |
6336 | 8221 | function request( |
6337 | - option: PostOrderErpRolesAuthMenuOption, | |
6338 | - ): Promise<PostOrderErpRolesAuthMenuResponseSuccess> { | |
8222 | + option: PostPrepaidAuditOption, | |
8223 | + ): Promise<PostPrepaidAuditResponseSuccess> { | |
6339 | 8224 | return requester(request.url, { |
6340 | 8225 | method: request.method, |
6341 | 8226 | ...option, |
6342 | - }) as unknown as Promise<PostOrderErpRolesAuthMenuResponseSuccess>; | |
8227 | + }) as unknown as Promise<PostPrepaidAuditResponseSuccess>; | |
6343 | 8228 | } |
6344 | 8229 | |
6345 | 8230 | /** http method */ |
... | ... | @@ -6349,22 +8234,22 @@ export const postOrderErpRolesAuthMenu = /* #__PURE__ */ (() => { |
6349 | 8234 | return request; |
6350 | 8235 | })(); |
6351 | 8236 | |
6352 | -/** @description request parameter type for postOrderErpRolesDelete */ | |
6353 | -export interface PostOrderErpRolesDeleteOption { | |
8237 | +/** @description request parameter type for postPrepaidCreate */ | |
8238 | +export interface PostPrepaidCreateOption { | |
6354 | 8239 | /** |
6355 | 8240 | * @description |
6356 | - * queryVO | |
8241 | + * request | |
6357 | 8242 | */ |
6358 | 8243 | body: { |
6359 | 8244 | /** |
6360 | 8245 | @description |
6361 | - queryVO */ | |
6362 | - queryVO: AdminRoleQueryVO; | |
8246 | + request */ | |
8247 | + request: SalesRechargePrepaymentCreateRequest; | |
6363 | 8248 | }; |
6364 | 8249 | } |
6365 | 8250 | |
6366 | -/** @description response type for postOrderErpRolesDelete */ | |
6367 | -export interface PostOrderErpRolesDeleteResponse { | |
8251 | +/** @description response type for postPrepaidCreate */ | |
8252 | +export interface PostPrepaidCreateResponse { | |
6368 | 8253 | /** |
6369 | 8254 | * @description |
6370 | 8255 | * OK |
... | ... | @@ -6392,25 +8277,24 @@ export interface PostOrderErpRolesDeleteResponse { |
6392 | 8277 | 404: any; |
6393 | 8278 | } |
6394 | 8279 | |
6395 | -export type PostOrderErpRolesDeleteResponseSuccess = | |
6396 | - PostOrderErpRolesDeleteResponse[200]; | |
8280 | +export type PostPrepaidCreateResponseSuccess = PostPrepaidCreateResponse[200]; | |
6397 | 8281 | /** |
6398 | 8282 | * @description |
6399 | - * 删除角色 | |
6400 | - * @tags 系统:角色管理 | |
8283 | + * 新增预存 | |
8284 | + * @tags prepaid-controller | |
6401 | 8285 | * @produces * |
6402 | 8286 | * @consumes application/json |
6403 | 8287 | */ |
6404 | -export const postOrderErpRolesDelete = /* #__PURE__ */ (() => { | |
8288 | +export const postPrepaidCreate = /* #__PURE__ */ (() => { | |
6405 | 8289 | const method = 'post'; |
6406 | - const url = '/order/erp/roles/delete'; | |
8290 | + const url = '/prepaid/create'; | |
6407 | 8291 | function request( |
6408 | - option: PostOrderErpRolesDeleteOption, | |
6409 | - ): Promise<PostOrderErpRolesDeleteResponseSuccess> { | |
8292 | + option: PostPrepaidCreateOption, | |
8293 | + ): Promise<PostPrepaidCreateResponseSuccess> { | |
6410 | 8294 | return requester(request.url, { |
6411 | 8295 | method: request.method, |
6412 | 8296 | ...option, |
6413 | - }) as unknown as Promise<PostOrderErpRolesDeleteResponseSuccess>; | |
8297 | + }) as unknown as Promise<PostPrepaidCreateResponseSuccess>; | |
6414 | 8298 | } |
6415 | 8299 | |
6416 | 8300 | /** http method */ |
... | ... | @@ -6420,22 +8304,22 @@ export const postOrderErpRolesDelete = /* #__PURE__ */ (() => { |
6420 | 8304 | return request; |
6421 | 8305 | })(); |
6422 | 8306 | |
6423 | -/** @description request parameter type for postOrderErpRolesDetail */ | |
6424 | -export interface PostOrderErpRolesDetailOption { | |
8307 | +/** @description request parameter type for postPrepaidDelete */ | |
8308 | +export interface PostPrepaidDeleteOption { | |
6425 | 8309 | /** |
6426 | 8310 | * @description |
6427 | - * queryVO | |
8311 | + * request | |
6428 | 8312 | */ |
6429 | 8313 | body: { |
6430 | 8314 | /** |
6431 | 8315 | @description |
6432 | - queryVO */ | |
6433 | - queryVO: AdminRoleQueryVO; | |
8316 | + request */ | |
8317 | + request: SalesRechargePrepaymentDeleteRequest; | |
6434 | 8318 | }; |
6435 | 8319 | } |
6436 | 8320 | |
6437 | -/** @description response type for postOrderErpRolesDetail */ | |
6438 | -export interface PostOrderErpRolesDetailResponse { | |
8321 | +/** @description response type for postPrepaidDelete */ | |
8322 | +export interface PostPrepaidDeleteResponse { | |
6439 | 8323 | /** |
6440 | 8324 | * @description |
6441 | 8325 | * OK |
... | ... | @@ -6463,25 +8347,24 @@ export interface PostOrderErpRolesDetailResponse { |
6463 | 8347 | 404: any; |
6464 | 8348 | } |
6465 | 8349 | |
6466 | -export type PostOrderErpRolesDetailResponseSuccess = | |
6467 | - PostOrderErpRolesDetailResponse[200]; | |
8350 | +export type PostPrepaidDeleteResponseSuccess = PostPrepaidDeleteResponse[200]; | |
6468 | 8351 | /** |
6469 | 8352 | * @description |
6470 | - * 获取单个role | |
6471 | - * @tags 系统:角色管理 | |
8353 | + * 删除预存 | |
8354 | + * @tags prepaid-controller | |
6472 | 8355 | * @produces * |
6473 | 8356 | * @consumes application/json |
6474 | 8357 | */ |
6475 | -export const postOrderErpRolesDetail = /* #__PURE__ */ (() => { | |
8358 | +export const postPrepaidDelete = /* #__PURE__ */ (() => { | |
6476 | 8359 | const method = 'post'; |
6477 | - const url = '/order/erp/roles/detail'; | |
8360 | + const url = '/prepaid/delete'; | |
6478 | 8361 | function request( |
6479 | - option: PostOrderErpRolesDetailOption, | |
6480 | - ): Promise<PostOrderErpRolesDetailResponseSuccess> { | |
8362 | + option: PostPrepaidDeleteOption, | |
8363 | + ): Promise<PostPrepaidDeleteResponseSuccess> { | |
6481 | 8364 | return requester(request.url, { |
6482 | 8365 | method: request.method, |
6483 | 8366 | ...option, |
6484 | - }) as unknown as Promise<PostOrderErpRolesDetailResponseSuccess>; | |
8367 | + }) as unknown as Promise<PostPrepaidDeleteResponseSuccess>; | |
6485 | 8368 | } |
6486 | 8369 | |
6487 | 8370 | /** http method */ |
... | ... | @@ -6491,22 +8374,22 @@ export const postOrderErpRolesDetail = /* #__PURE__ */ (() => { |
6491 | 8374 | return request; |
6492 | 8375 | })(); |
6493 | 8376 | |
6494 | -/** @description request parameter type for postOrderErpRolesEdit */ | |
6495 | -export interface PostOrderErpRolesEditOption { | |
8377 | +/** @description request parameter type for postPrepaidList */ | |
8378 | +export interface PostPrepaidListOption { | |
6496 | 8379 | /** |
6497 | 8380 | * @description |
6498 | - * roleVO | |
8381 | + * request | |
6499 | 8382 | */ |
6500 | 8383 | body: { |
6501 | 8384 | /** |
6502 | 8385 | @description |
6503 | - roleVO */ | |
6504 | - roleVO: AdminRoleVO; | |
8386 | + request */ | |
8387 | + request: SalesRechargePrepaymentRequest; | |
6505 | 8388 | }; |
6506 | 8389 | } |
6507 | 8390 | |
6508 | -/** @description response type for postOrderErpRolesEdit */ | |
6509 | -export interface PostOrderErpRolesEditResponse { | |
8391 | +/** @description response type for postPrepaidList */ | |
8392 | +export interface PostPrepaidListResponse { | |
6510 | 8393 | /** |
6511 | 8394 | * @description |
6512 | 8395 | * OK |
... | ... | @@ -6534,25 +8417,24 @@ export interface PostOrderErpRolesEditResponse { |
6534 | 8417 | 404: any; |
6535 | 8418 | } |
6536 | 8419 | |
6537 | -export type PostOrderErpRolesEditResponseSuccess = | |
6538 | - PostOrderErpRolesEditResponse[200]; | |
8420 | +export type PostPrepaidListResponseSuccess = PostPrepaidListResponse[200]; | |
6539 | 8421 | /** |
6540 | 8422 | * @description |
6541 | - * 修改角色 | |
6542 | - * @tags 系统:角色管理 | |
8423 | + * 查询列表 | |
8424 | + * @tags prepaid-controller | |
6543 | 8425 | * @produces * |
6544 | 8426 | * @consumes application/json |
6545 | 8427 | */ |
6546 | -export const postOrderErpRolesEdit = /* #__PURE__ */ (() => { | |
8428 | +export const postPrepaidList = /* #__PURE__ */ (() => { | |
6547 | 8429 | const method = 'post'; |
6548 | - const url = '/order/erp/roles/edit'; | |
8430 | + const url = '/prepaid/list'; | |
6549 | 8431 | function request( |
6550 | - option: PostOrderErpRolesEditOption, | |
6551 | - ): Promise<PostOrderErpRolesEditResponseSuccess> { | |
8432 | + option: PostPrepaidListOption, | |
8433 | + ): Promise<PostPrepaidListResponseSuccess> { | |
6552 | 8434 | return requester(request.url, { |
6553 | 8435 | method: request.method, |
6554 | 8436 | ...option, |
6555 | - }) as unknown as Promise<PostOrderErpRolesEditResponseSuccess>; | |
8437 | + }) as unknown as Promise<PostPrepaidListResponseSuccess>; | |
6556 | 8438 | } |
6557 | 8439 | |
6558 | 8440 | /** http method */ |
... | ... | @@ -6562,22 +8444,22 @@ export const postOrderErpRolesEdit = /* #__PURE__ */ (() => { |
6562 | 8444 | return request; |
6563 | 8445 | })(); |
6564 | 8446 | |
6565 | -/** @description request parameter type for postOrderErpRolesListByPage */ | |
6566 | -export interface PostOrderErpRolesListByPageOption { | |
8447 | +/** @description request parameter type for postPrepaidPhoneAvailableList */ | |
8448 | +export interface PostPrepaidPhoneAvailableListOption { | |
6567 | 8449 | /** |
6568 | 8450 | * @description |
6569 | - * queryVO | |
8451 | + * request | |
6570 | 8452 | */ |
6571 | 8453 | body: { |
6572 | 8454 | /** |
6573 | 8455 | @description |
6574 | - queryVO */ | |
6575 | - queryVO: AdminRoleQueryVO; | |
8456 | + request */ | |
8457 | + request: SalesRechargePrepaymentAuditRequest; | |
6576 | 8458 | }; |
6577 | 8459 | } |
6578 | 8460 | |
6579 | -/** @description response type for postOrderErpRolesListByPage */ | |
6580 | -export interface PostOrderErpRolesListByPageResponse { | |
8461 | +/** @description response type for postPrepaidPhoneAvailableList */ | |
8462 | +export interface PostPrepaidPhoneAvailableListResponse { | |
6581 | 8463 | /** |
6582 | 8464 | * @description |
6583 | 8465 | * OK |
... | ... | @@ -6605,25 +8487,25 @@ export interface PostOrderErpRolesListByPageResponse { |
6605 | 8487 | 404: any; |
6606 | 8488 | } |
6607 | 8489 | |
6608 | -export type PostOrderErpRolesListByPageResponseSuccess = | |
6609 | - PostOrderErpRolesListByPageResponse[200]; | |
8490 | +export type PostPrepaidPhoneAvailableListResponseSuccess = | |
8491 | + PostPrepaidPhoneAvailableListResponse[200]; | |
6610 | 8492 | /** |
6611 | 8493 | * @description |
6612 | - * 查询角色 | |
6613 | - * @tags 系统:角色管理 | |
8494 | + * 财务审核 | |
8495 | + * @tags prepaid-controller | |
6614 | 8496 | * @produces * |
6615 | 8497 | * @consumes application/json |
6616 | 8498 | */ |
6617 | -export const postOrderErpRolesListByPage = /* #__PURE__ */ (() => { | |
8499 | +export const postPrepaidPhoneAvailableList = /* #__PURE__ */ (() => { | |
6618 | 8500 | const method = 'post'; |
6619 | - const url = '/order/erp/roles/list_by_page'; | |
8501 | + const url = '/prepaid/phone/available/list'; | |
6620 | 8502 | function request( |
6621 | - option: PostOrderErpRolesListByPageOption, | |
6622 | - ): Promise<PostOrderErpRolesListByPageResponseSuccess> { | |
8503 | + option: PostPrepaidPhoneAvailableListOption, | |
8504 | + ): Promise<PostPrepaidPhoneAvailableListResponseSuccess> { | |
6623 | 8505 | return requester(request.url, { |
6624 | 8506 | method: request.method, |
6625 | 8507 | ...option, |
6626 | - }) as unknown as Promise<PostOrderErpRolesListByPageResponseSuccess>; | |
8508 | + }) as unknown as Promise<PostPrepaidPhoneAvailableListResponseSuccess>; | |
6627 | 8509 | } |
6628 | 8510 | |
6629 | 8511 | /** http method */ |
... | ... | @@ -6633,22 +8515,22 @@ export const postOrderErpRolesListByPage = /* #__PURE__ */ (() => { |
6633 | 8515 | return request; |
6634 | 8516 | })(); |
6635 | 8517 | |
6636 | -/** @description request parameter type for postOrderErpUsersAdd */ | |
6637 | -export interface PostOrderErpUsersAddOption { | |
8518 | +/** @description request parameter type for postPrepaidUpdate */ | |
8519 | +export interface PostPrepaidUpdateOption { | |
6638 | 8520 | /** |
6639 | 8521 | * @description |
6640 | - * userVO | |
8522 | + * request | |
6641 | 8523 | */ |
6642 | 8524 | body: { |
6643 | 8525 | /** |
6644 | 8526 | @description |
6645 | - userVO */ | |
6646 | - userVO: AdminUserVO; | |
8527 | + request */ | |
8528 | + request: SalesRechargePrepaymentUpdateRequest; | |
6647 | 8529 | }; |
6648 | 8530 | } |
6649 | 8531 | |
6650 | -/** @description response type for postOrderErpUsersAdd */ | |
6651 | -export interface PostOrderErpUsersAddResponse { | |
8532 | +/** @description response type for postPrepaidUpdate */ | |
8533 | +export interface PostPrepaidUpdateResponse { | |
6652 | 8534 | /** |
6653 | 8535 | * @description |
6654 | 8536 | * OK |
... | ... | @@ -6676,25 +8558,24 @@ export interface PostOrderErpUsersAddResponse { |
6676 | 8558 | 404: any; |
6677 | 8559 | } |
6678 | 8560 | |
6679 | -export type PostOrderErpUsersAddResponseSuccess = | |
6680 | - PostOrderErpUsersAddResponse[200]; | |
8561 | +export type PostPrepaidUpdateResponseSuccess = PostPrepaidUpdateResponse[200]; | |
6681 | 8562 | /** |
6682 | 8563 | * @description |
6683 | - * 新增用户 | |
6684 | - * @tags 系统:用户管理 | |
8564 | + * 修改预存 | |
8565 | + * @tags prepaid-controller | |
6685 | 8566 | * @produces * |
6686 | 8567 | * @consumes application/json |
6687 | 8568 | */ |
6688 | -export const postOrderErpUsersAdd = /* #__PURE__ */ (() => { | |
8569 | +export const postPrepaidUpdate = /* #__PURE__ */ (() => { | |
6689 | 8570 | const method = 'post'; |
6690 | - const url = '/order/erp/users/add'; | |
8571 | + const url = '/prepaid/update'; | |
6691 | 8572 | function request( |
6692 | - option: PostOrderErpUsersAddOption, | |
6693 | - ): Promise<PostOrderErpUsersAddResponseSuccess> { | |
8573 | + option: PostPrepaidUpdateOption, | |
8574 | + ): Promise<PostPrepaidUpdateResponseSuccess> { | |
6694 | 8575 | return requester(request.url, { |
6695 | 8576 | method: request.method, |
6696 | 8577 | ...option, |
6697 | - }) as unknown as Promise<PostOrderErpUsersAddResponseSuccess>; | |
8578 | + }) as unknown as Promise<PostPrepaidUpdateResponseSuccess>; | |
6698 | 8579 | } |
6699 | 8580 | |
6700 | 8581 | /** http method */ |
... | ... | @@ -6704,22 +8585,22 @@ export const postOrderErpUsersAdd = /* #__PURE__ */ (() => { |
6704 | 8585 | return request; |
6705 | 8586 | })(); |
6706 | 8587 | |
6707 | -/** @description request parameter type for postOrderErpUsersAuthRole */ | |
6708 | -export interface PostOrderErpUsersAuthRoleOption { | |
8588 | +/** @description request parameter type for postResearchGroupMemberRequestsAdd */ | |
8589 | +export interface PostResearchGroupMemberRequestsAddOption { | |
6709 | 8590 | /** |
6710 | 8591 | * @description |
6711 | - * userVO | |
8592 | + * request | |
6712 | 8593 | */ |
6713 | 8594 | body: { |
6714 | 8595 | /** |
6715 | 8596 | @description |
6716 | - userVO */ | |
6717 | - userVO: AdminAuthUserVO; | |
8597 | + request */ | |
8598 | + request: ResearchGroupMemberRequestAddRequest; | |
6718 | 8599 | }; |
6719 | 8600 | } |
6720 | 8601 | |
6721 | -/** @description response type for postOrderErpUsersAuthRole */ | |
6722 | -export interface PostOrderErpUsersAuthRoleResponse { | |
8602 | +/** @description response type for postResearchGroupMemberRequestsAdd */ | |
8603 | +export interface PostResearchGroupMemberRequestsAddResponse { | |
6723 | 8604 | /** |
6724 | 8605 | * @description |
6725 | 8606 | * OK |
... | ... | @@ -6747,25 +8628,25 @@ export interface PostOrderErpUsersAuthRoleResponse { |
6747 | 8628 | 404: any; |
6748 | 8629 | } |
6749 | 8630 | |
6750 | -export type PostOrderErpUsersAuthRoleResponseSuccess = | |
6751 | - PostOrderErpUsersAuthRoleResponse[200]; | |
8631 | +export type PostResearchGroupMemberRequestsAddResponseSuccess = | |
8632 | + PostResearchGroupMemberRequestsAddResponse[200]; | |
6752 | 8633 | /** |
6753 | 8634 | * @description |
6754 | - * 授权角色 | |
6755 | - * @tags 系统:用户管理 | |
8635 | + * 新增申请信息 | |
8636 | + * @tags research-group-member-requests-controller | |
6756 | 8637 | * @produces * |
6757 | 8638 | * @consumes application/json |
6758 | 8639 | */ |
6759 | -export const postOrderErpUsersAuthRole = /* #__PURE__ */ (() => { | |
8640 | +export const postResearchGroupMemberRequestsAdd = /* #__PURE__ */ (() => { | |
6760 | 8641 | const method = 'post'; |
6761 | - const url = '/order/erp/users/auth_role'; | |
8642 | + const url = '/research/group/member/requests/add'; | |
6762 | 8643 | function request( |
6763 | - option: PostOrderErpUsersAuthRoleOption, | |
6764 | - ): Promise<PostOrderErpUsersAuthRoleResponseSuccess> { | |
8644 | + option: PostResearchGroupMemberRequestsAddOption, | |
8645 | + ): Promise<PostResearchGroupMemberRequestsAddResponseSuccess> { | |
6765 | 8646 | return requester(request.url, { |
6766 | 8647 | method: request.method, |
6767 | 8648 | ...option, |
6768 | - }) as unknown as Promise<PostOrderErpUsersAuthRoleResponseSuccess>; | |
8649 | + }) as unknown as Promise<PostResearchGroupMemberRequestsAddResponseSuccess>; | |
6769 | 8650 | } |
6770 | 8651 | |
6771 | 8652 | /** http method */ |
... | ... | @@ -6775,22 +8656,22 @@ export const postOrderErpUsersAuthRole = /* #__PURE__ */ (() => { |
6775 | 8656 | return request; |
6776 | 8657 | })(); |
6777 | 8658 | |
6778 | -/** @description request parameter type for postOrderErpUsersDelete */ | |
6779 | -export interface PostOrderErpUsersDeleteOption { | |
8659 | +/** @description request parameter type for postResearchGroupMemberRequestsDelete */ | |
8660 | +export interface PostResearchGroupMemberRequestsDeleteOption { | |
6780 | 8661 | /** |
6781 | 8662 | * @description |
6782 | - * queryVO | |
8663 | + * request | |
6783 | 8664 | */ |
6784 | 8665 | body: { |
6785 | 8666 | /** |
6786 | 8667 | @description |
6787 | - queryVO */ | |
6788 | - queryVO: AdminUserQueryVO; | |
8668 | + request */ | |
8669 | + request: ResearchGroupMemberRequestDeleteRequest; | |
6789 | 8670 | }; |
6790 | 8671 | } |
6791 | 8672 | |
6792 | -/** @description response type for postOrderErpUsersDelete */ | |
6793 | -export interface PostOrderErpUsersDeleteResponse { | |
8673 | +/** @description response type for postResearchGroupMemberRequestsDelete */ | |
8674 | +export interface PostResearchGroupMemberRequestsDeleteResponse { | |
6794 | 8675 | /** |
6795 | 8676 | * @description |
6796 | 8677 | * OK |
... | ... | @@ -6818,25 +8699,25 @@ export interface PostOrderErpUsersDeleteResponse { |
6818 | 8699 | 404: any; |
6819 | 8700 | } |
6820 | 8701 | |
6821 | -export type PostOrderErpUsersDeleteResponseSuccess = | |
6822 | - PostOrderErpUsersDeleteResponse[200]; | |
8702 | +export type PostResearchGroupMemberRequestsDeleteResponseSuccess = | |
8703 | + PostResearchGroupMemberRequestsDeleteResponse[200]; | |
6823 | 8704 | /** |
6824 | 8705 | * @description |
6825 | - * 删除用户 | |
6826 | - * @tags 系统:用户管理 | |
8706 | + * 删除申请信息 | |
8707 | + * @tags research-group-member-requests-controller | |
6827 | 8708 | * @produces * |
6828 | 8709 | * @consumes application/json |
6829 | 8710 | */ |
6830 | -export const postOrderErpUsersDelete = /* #__PURE__ */ (() => { | |
8711 | +export const postResearchGroupMemberRequestsDelete = /* #__PURE__ */ (() => { | |
6831 | 8712 | const method = 'post'; |
6832 | - const url = '/order/erp/users/delete'; | |
8713 | + const url = '/research/group/member/requests/delete'; | |
6833 | 8714 | function request( |
6834 | - option: PostOrderErpUsersDeleteOption, | |
6835 | - ): Promise<PostOrderErpUsersDeleteResponseSuccess> { | |
8715 | + option: PostResearchGroupMemberRequestsDeleteOption, | |
8716 | + ): Promise<PostResearchGroupMemberRequestsDeleteResponseSuccess> { | |
6836 | 8717 | return requester(request.url, { |
6837 | 8718 | method: request.method, |
6838 | 8719 | ...option, |
6839 | - }) as unknown as Promise<PostOrderErpUsersDeleteResponseSuccess>; | |
8720 | + }) as unknown as Promise<PostResearchGroupMemberRequestsDeleteResponseSuccess>; | |
6840 | 8721 | } |
6841 | 8722 | |
6842 | 8723 | /** http method */ |
... | ... | @@ -6846,22 +8727,22 @@ export const postOrderErpUsersDelete = /* #__PURE__ */ (() => { |
6846 | 8727 | return request; |
6847 | 8728 | })(); |
6848 | 8729 | |
6849 | -/** @description request parameter type for postOrderErpUsersEdit */ | |
6850 | -export interface PostOrderErpUsersEditOption { | |
8730 | +/** @description request parameter type for postResearchGroupMemberRequestsDetail */ | |
8731 | +export interface PostResearchGroupMemberRequestsDetailOption { | |
6851 | 8732 | /** |
6852 | 8733 | * @description |
6853 | - * userVO | |
8734 | + * request | |
6854 | 8735 | */ |
6855 | 8736 | body: { |
6856 | 8737 | /** |
6857 | 8738 | @description |
6858 | - userVO */ | |
6859 | - userVO: AdminUserVO; | |
8739 | + request */ | |
8740 | + request: ResearchGroupMemberRequestDetailRequest; | |
6860 | 8741 | }; |
6861 | 8742 | } |
6862 | 8743 | |
6863 | -/** @description response type for postOrderErpUsersEdit */ | |
6864 | -export interface PostOrderErpUsersEditResponse { | |
8744 | +/** @description response type for postResearchGroupMemberRequestsDetail */ | |
8745 | +export interface PostResearchGroupMemberRequestsDetailResponse { | |
6865 | 8746 | /** |
6866 | 8747 | * @description |
6867 | 8748 | * OK |
... | ... | @@ -6889,25 +8770,25 @@ export interface PostOrderErpUsersEditResponse { |
6889 | 8770 | 404: any; |
6890 | 8771 | } |
6891 | 8772 | |
6892 | -export type PostOrderErpUsersEditResponseSuccess = | |
6893 | - PostOrderErpUsersEditResponse[200]; | |
8773 | +export type PostResearchGroupMemberRequestsDetailResponseSuccess = | |
8774 | + PostResearchGroupMemberRequestsDetailResponse[200]; | |
6894 | 8775 | /** |
6895 | 8776 | * @description |
6896 | - * 修改用户 | |
6897 | - * @tags 系统:用户管理 | |
8777 | + * 查询申请信息 | |
8778 | + * @tags research-group-member-requests-controller | |
6898 | 8779 | * @produces * |
6899 | 8780 | * @consumes application/json |
6900 | 8781 | */ |
6901 | -export const postOrderErpUsersEdit = /* #__PURE__ */ (() => { | |
8782 | +export const postResearchGroupMemberRequestsDetail = /* #__PURE__ */ (() => { | |
6902 | 8783 | const method = 'post'; |
6903 | - const url = '/order/erp/users/edit'; | |
8784 | + const url = '/research/group/member/requests/detail'; | |
6904 | 8785 | function request( |
6905 | - option: PostOrderErpUsersEditOption, | |
6906 | - ): Promise<PostOrderErpUsersEditResponseSuccess> { | |
8786 | + option: PostResearchGroupMemberRequestsDetailOption, | |
8787 | + ): Promise<PostResearchGroupMemberRequestsDetailResponseSuccess> { | |
6907 | 8788 | return requester(request.url, { |
6908 | 8789 | method: request.method, |
6909 | 8790 | ...option, |
6910 | - }) as unknown as Promise<PostOrderErpUsersEditResponseSuccess>; | |
8791 | + }) as unknown as Promise<PostResearchGroupMemberRequestsDetailResponseSuccess>; | |
6911 | 8792 | } |
6912 | 8793 | |
6913 | 8794 | /** http method */ |
... | ... | @@ -6917,22 +8798,22 @@ export const postOrderErpUsersEdit = /* #__PURE__ */ (() => { |
6917 | 8798 | return request; |
6918 | 8799 | })(); |
6919 | 8800 | |
6920 | -/** @description request parameter type for postOrderErpUsersListByPage */ | |
6921 | -export interface PostOrderErpUsersListByPageOption { | |
8801 | +/** @description request parameter type for postResearchGroupMemberRequestsEdit */ | |
8802 | +export interface PostResearchGroupMemberRequestsEditOption { | |
6922 | 8803 | /** |
6923 | 8804 | * @description |
6924 | - * queryVO | |
8805 | + * request | |
6925 | 8806 | */ |
6926 | 8807 | body: { |
6927 | 8808 | /** |
6928 | 8809 | @description |
6929 | - queryVO */ | |
6930 | - queryVO: AdminUserQueryVO; | |
8810 | + request */ | |
8811 | + request: ResearchGroupMemberRequestEditRequest; | |
6931 | 8812 | }; |
6932 | 8813 | } |
6933 | 8814 | |
6934 | -/** @description response type for postOrderErpUsersListByPage */ | |
6935 | -export interface PostOrderErpUsersListByPageResponse { | |
8815 | +/** @description response type for postResearchGroupMemberRequestsEdit */ | |
8816 | +export interface PostResearchGroupMemberRequestsEditResponse { | |
6936 | 8817 | /** |
6937 | 8818 | * @description |
6938 | 8819 | * OK |
... | ... | @@ -6960,25 +8841,25 @@ export interface PostOrderErpUsersListByPageResponse { |
6960 | 8841 | 404: any; |
6961 | 8842 | } |
6962 | 8843 | |
6963 | -export type PostOrderErpUsersListByPageResponseSuccess = | |
6964 | - PostOrderErpUsersListByPageResponse[200]; | |
8844 | +export type PostResearchGroupMemberRequestsEditResponseSuccess = | |
8845 | + PostResearchGroupMemberRequestsEditResponse[200]; | |
6965 | 8846 | /** |
6966 | 8847 | * @description |
6967 | - * 查询用户 | |
6968 | - * @tags 系统:用户管理 | |
8848 | + * 编辑申请信息 | |
8849 | + * @tags research-group-member-requests-controller | |
6969 | 8850 | * @produces * |
6970 | 8851 | * @consumes application/json |
6971 | 8852 | */ |
6972 | -export const postOrderErpUsersListByPage = /* #__PURE__ */ (() => { | |
8853 | +export const postResearchGroupMemberRequestsEdit = /* #__PURE__ */ (() => { | |
6973 | 8854 | const method = 'post'; |
6974 | - const url = '/order/erp/users/list_by_page'; | |
8855 | + const url = '/research/group/member/requests/edit'; | |
6975 | 8856 | function request( |
6976 | - option: PostOrderErpUsersListByPageOption, | |
6977 | - ): Promise<PostOrderErpUsersListByPageResponseSuccess> { | |
8857 | + option: PostResearchGroupMemberRequestsEditOption, | |
8858 | + ): Promise<PostResearchGroupMemberRequestsEditResponseSuccess> { | |
6978 | 8859 | return requester(request.url, { |
6979 | 8860 | method: request.method, |
6980 | 8861 | ...option, |
6981 | - }) as unknown as Promise<PostOrderErpUsersListByPageResponseSuccess>; | |
8862 | + }) as unknown as Promise<PostResearchGroupMemberRequestsEditResponseSuccess>; | |
6982 | 8863 | } |
6983 | 8864 | |
6984 | 8865 | /** http method */ |
... | ... | @@ -6988,22 +8869,22 @@ export const postOrderErpUsersListByPage = /* #__PURE__ */ (() => { |
6988 | 8869 | return request; |
6989 | 8870 | })(); |
6990 | 8871 | |
6991 | -/** @description request parameter type for postOrderErpUsersReset */ | |
6992 | -export interface PostOrderErpUsersResetOption { | |
8872 | +/** @description request parameter type for postResearchGroupMemberRequestsList */ | |
8873 | +export interface PostResearchGroupMemberRequestsListOption { | |
6993 | 8874 | /** |
6994 | 8875 | * @description |
6995 | - * resetPwdVO | |
8876 | + * request | |
6996 | 8877 | */ |
6997 | 8878 | body: { |
6998 | 8879 | /** |
6999 | 8880 | @description |
7000 | - resetPwdVO */ | |
7001 | - resetPwdVO: ResetPwdVO; | |
8881 | + request */ | |
8882 | + request: ResearchGroupMemberRequestsRequest; | |
7002 | 8883 | }; |
7003 | 8884 | } |
7004 | 8885 | |
7005 | -/** @description response type for postOrderErpUsersReset */ | |
7006 | -export interface PostOrderErpUsersResetResponse { | |
8886 | +/** @description response type for postResearchGroupMemberRequestsList */ | |
8887 | +export interface PostResearchGroupMemberRequestsListResponse { | |
7007 | 8888 | /** |
7008 | 8889 | * @description |
7009 | 8890 | * OK |
... | ... | @@ -7031,25 +8912,25 @@ export interface PostOrderErpUsersResetResponse { |
7031 | 8912 | 404: any; |
7032 | 8913 | } |
7033 | 8914 | |
7034 | -export type PostOrderErpUsersResetResponseSuccess = | |
7035 | - PostOrderErpUsersResetResponse[200]; | |
8915 | +export type PostResearchGroupMemberRequestsListResponseSuccess = | |
8916 | + PostResearchGroupMemberRequestsListResponse[200]; | |
7036 | 8917 | /** |
7037 | 8918 | * @description |
7038 | - * 重置密码 | |
7039 | - * @tags 系统:用户管理 | |
8919 | + * 申请列表 | |
8920 | + * @tags research-group-member-requests-controller | |
7040 | 8921 | * @produces * |
7041 | 8922 | * @consumes application/json |
7042 | 8923 | */ |
7043 | -export const postOrderErpUsersReset = /* #__PURE__ */ (() => { | |
8924 | +export const postResearchGroupMemberRequestsList = /* #__PURE__ */ (() => { | |
7044 | 8925 | const method = 'post'; |
7045 | - const url = '/order/erp/users/reset'; | |
8926 | + const url = '/research/group/member/requests/list'; | |
7046 | 8927 | function request( |
7047 | - option: PostOrderErpUsersResetOption, | |
7048 | - ): Promise<PostOrderErpUsersResetResponseSuccess> { | |
8928 | + option: PostResearchGroupMemberRequestsListOption, | |
8929 | + ): Promise<PostResearchGroupMemberRequestsListResponseSuccess> { | |
7049 | 8930 | return requester(request.url, { |
7050 | 8931 | method: request.method, |
7051 | 8932 | ...option, |
7052 | - }) as unknown as Promise<PostOrderErpUsersResetResponseSuccess>; | |
8933 | + }) as unknown as Promise<PostResearchGroupMemberRequestsListResponseSuccess>; | |
7053 | 8934 | } |
7054 | 8935 | |
7055 | 8936 | /** http method */ |
... | ... | @@ -7059,22 +8940,22 @@ export const postOrderErpUsersReset = /* #__PURE__ */ (() => { |
7059 | 8940 | return request; |
7060 | 8941 | })(); |
7061 | 8942 | |
7062 | -/** @description request parameter type for postOrderErpUsersUpdatePass */ | |
7063 | -export interface PostOrderErpUsersUpdatePassOption { | |
8943 | +/** @description request parameter type for postResearchGroupsAdd */ | |
8944 | +export interface PostResearchGroupsAddOption { | |
7064 | 8945 | /** |
7065 | 8946 | * @description |
7066 | - * pwdVO | |
8947 | + * request | |
7067 | 8948 | */ |
7068 | 8949 | body: { |
7069 | 8950 | /** |
7070 | 8951 | @description |
7071 | - pwdVO */ | |
7072 | - pwdVO: UpdatePwdVO; | |
8952 | + request */ | |
8953 | + request: ResearchGroupAddRequest; | |
7073 | 8954 | }; |
7074 | 8955 | } |
7075 | 8956 | |
7076 | -/** @description response type for postOrderErpUsersUpdatePass */ | |
7077 | -export interface PostOrderErpUsersUpdatePassResponse { | |
8957 | +/** @description response type for postResearchGroupsAdd */ | |
8958 | +export interface PostResearchGroupsAddResponse { | |
7078 | 8959 | /** |
7079 | 8960 | * @description |
7080 | 8961 | * OK |
... | ... | @@ -7102,25 +8983,25 @@ export interface PostOrderErpUsersUpdatePassResponse { |
7102 | 8983 | 404: any; |
7103 | 8984 | } |
7104 | 8985 | |
7105 | -export type PostOrderErpUsersUpdatePassResponseSuccess = | |
7106 | - PostOrderErpUsersUpdatePassResponse[200]; | |
8986 | +export type PostResearchGroupsAddResponseSuccess = | |
8987 | + PostResearchGroupsAddResponse[200]; | |
7107 | 8988 | /** |
7108 | 8989 | * @description |
7109 | - * 修改密码 | |
7110 | - * @tags 系统:用户管理 | |
8990 | + * 新增课题组信息 | |
8991 | + * @tags research-groups-controller | |
7111 | 8992 | * @produces * |
7112 | 8993 | * @consumes application/json |
7113 | 8994 | */ |
7114 | -export const postOrderErpUsersUpdatePass = /* #__PURE__ */ (() => { | |
8995 | +export const postResearchGroupsAdd = /* #__PURE__ */ (() => { | |
7115 | 8996 | const method = 'post'; |
7116 | - const url = '/order/erp/users/update_pass'; | |
8997 | + const url = '/research/groups/add'; | |
7117 | 8998 | function request( |
7118 | - option: PostOrderErpUsersUpdatePassOption, | |
7119 | - ): Promise<PostOrderErpUsersUpdatePassResponseSuccess> { | |
8999 | + option: PostResearchGroupsAddOption, | |
9000 | + ): Promise<PostResearchGroupsAddResponseSuccess> { | |
7120 | 9001 | return requester(request.url, { |
7121 | 9002 | method: request.method, |
7122 | 9003 | ...option, |
7123 | - }) as unknown as Promise<PostOrderErpUsersUpdatePassResponseSuccess>; | |
9004 | + }) as unknown as Promise<PostResearchGroupsAddResponseSuccess>; | |
7124 | 9005 | } |
7125 | 9006 | |
7126 | 9007 | /** http method */ |
... | ... | @@ -7130,22 +9011,22 @@ export const postOrderErpUsersUpdatePass = /* #__PURE__ */ (() => { |
7130 | 9011 | return request; |
7131 | 9012 | })(); |
7132 | 9013 | |
7133 | -/** @description request parameter type for postOrderImportImportWeightAndVolume */ | |
7134 | -export interface PostOrderImportImportWeightAndVolumeOption { | |
9014 | +/** @description request parameter type for postResearchGroupsDelete */ | |
9015 | +export interface PostResearchGroupsDeleteOption { | |
7135 | 9016 | /** |
7136 | 9017 | * @description |
7137 | - * file | |
9018 | + * request | |
7138 | 9019 | */ |
7139 | - formData: { | |
9020 | + body: { | |
7140 | 9021 | /** |
7141 | 9022 | @description |
7142 | - file */ | |
7143 | - file: File; | |
9023 | + request */ | |
9024 | + request: ResearchGroupDeleteRequest; | |
7144 | 9025 | }; |
7145 | 9026 | } |
7146 | 9027 | |
7147 | -/** @description response type for postOrderImportImportWeightAndVolume */ | |
7148 | -export interface PostOrderImportImportWeightAndVolumeResponse { | |
9028 | +/** @description response type for postResearchGroupsDelete */ | |
9029 | +export interface PostResearchGroupsDeleteResponse { | |
7149 | 9030 | /** |
7150 | 9031 | * @description |
7151 | 9032 | * OK |
... | ... | @@ -7173,25 +9054,25 @@ export interface PostOrderImportImportWeightAndVolumeResponse { |
7173 | 9054 | 404: any; |
7174 | 9055 | } |
7175 | 9056 | |
7176 | -export type PostOrderImportImportWeightAndVolumeResponseSuccess = | |
7177 | - PostOrderImportImportWeightAndVolumeResponse[200]; | |
9057 | +export type PostResearchGroupsDeleteResponseSuccess = | |
9058 | + PostResearchGroupsDeleteResponse[200]; | |
7178 | 9059 | /** |
7179 | 9060 | * @description |
7180 | - * 导入重量和体积 | |
7181 | - * @tags 导入 | |
9061 | + * 删除课题组信息 | |
9062 | + * @tags research-groups-controller | |
7182 | 9063 | * @produces * |
7183 | - * @consumes multipart/form-data | |
9064 | + * @consumes application/json | |
7184 | 9065 | */ |
7185 | -export const postOrderImportImportWeightAndVolume = /* #__PURE__ */ (() => { | |
9066 | +export const postResearchGroupsDelete = /* #__PURE__ */ (() => { | |
7186 | 9067 | const method = 'post'; |
7187 | - const url = '/order/import/importWeightAndVolume'; | |
9068 | + const url = '/research/groups/delete'; | |
7188 | 9069 | function request( |
7189 | - option: PostOrderImportImportWeightAndVolumeOption, | |
7190 | - ): Promise<PostOrderImportImportWeightAndVolumeResponseSuccess> { | |
9070 | + option: PostResearchGroupsDeleteOption, | |
9071 | + ): Promise<PostResearchGroupsDeleteResponseSuccess> { | |
7191 | 9072 | return requester(request.url, { |
7192 | 9073 | method: request.method, |
7193 | 9074 | ...option, |
7194 | - }) as unknown as Promise<PostOrderImportImportWeightAndVolumeResponseSuccess>; | |
9075 | + }) as unknown as Promise<PostResearchGroupsDeleteResponseSuccess>; | |
7195 | 9076 | } |
7196 | 9077 | |
7197 | 9078 | /** http method */ |
... | ... | @@ -7201,8 +9082,8 @@ export const postOrderImportImportWeightAndVolume = /* #__PURE__ */ (() => { |
7201 | 9082 | return request; |
7202 | 9083 | })(); |
7203 | 9084 | |
7204 | -/** @description request parameter type for postPrepaidAudit */ | |
7205 | -export interface PostPrepaidAuditOption { | |
9085 | +/** @description request parameter type for postResearchGroupsDetail */ | |
9086 | +export interface PostResearchGroupsDetailOption { | |
7206 | 9087 | /** |
7207 | 9088 | * @description |
7208 | 9089 | * request |
... | ... | @@ -7211,12 +9092,12 @@ export interface PostPrepaidAuditOption { |
7211 | 9092 | /** |
7212 | 9093 | @description |
7213 | 9094 | request */ |
7214 | - request: SalesRechargePrepaymentAuditRequest; | |
9095 | + request: ResearchGroupDetailRequest; | |
7215 | 9096 | }; |
7216 | 9097 | } |
7217 | 9098 | |
7218 | -/** @description response type for postPrepaidAudit */ | |
7219 | -export interface PostPrepaidAuditResponse { | |
9099 | +/** @description response type for postResearchGroupsDetail */ | |
9100 | +export interface PostResearchGroupsDetailResponse { | |
7220 | 9101 | /** |
7221 | 9102 | * @description |
7222 | 9103 | * OK |
... | ... | @@ -7244,24 +9125,25 @@ export interface PostPrepaidAuditResponse { |
7244 | 9125 | 404: any; |
7245 | 9126 | } |
7246 | 9127 | |
7247 | -export type PostPrepaidAuditResponseSuccess = PostPrepaidAuditResponse[200]; | |
9128 | +export type PostResearchGroupsDetailResponseSuccess = | |
9129 | + PostResearchGroupsDetailResponse[200]; | |
7248 | 9130 | /** |
7249 | 9131 | * @description |
7250 | - * 财务审核 | |
7251 | - * @tags prepaid-controller | |
9132 | + * 查询课题组信息 | |
9133 | + * @tags research-groups-controller | |
7252 | 9134 | * @produces * |
7253 | 9135 | * @consumes application/json |
7254 | 9136 | */ |
7255 | -export const postPrepaidAudit = /* #__PURE__ */ (() => { | |
9137 | +export const postResearchGroupsDetail = /* #__PURE__ */ (() => { | |
7256 | 9138 | const method = 'post'; |
7257 | - const url = '/prepaid/audit'; | |
9139 | + const url = '/research/groups/detail'; | |
7258 | 9140 | function request( |
7259 | - option: PostPrepaidAuditOption, | |
7260 | - ): Promise<PostPrepaidAuditResponseSuccess> { | |
9141 | + option: PostResearchGroupsDetailOption, | |
9142 | + ): Promise<PostResearchGroupsDetailResponseSuccess> { | |
7261 | 9143 | return requester(request.url, { |
7262 | 9144 | method: request.method, |
7263 | 9145 | ...option, |
7264 | - }) as unknown as Promise<PostPrepaidAuditResponseSuccess>; | |
9146 | + }) as unknown as Promise<PostResearchGroupsDetailResponseSuccess>; | |
7265 | 9147 | } |
7266 | 9148 | |
7267 | 9149 | /** http method */ |
... | ... | @@ -7271,27 +9153,13 @@ export const postPrepaidAudit = /* #__PURE__ */ (() => { |
7271 | 9153 | return request; |
7272 | 9154 | })(); |
7273 | 9155 | |
7274 | -/** @description request parameter type for postPrepaidCreate */ | |
7275 | -export interface PostPrepaidCreateOption { | |
7276 | - /** | |
7277 | - * @description | |
7278 | - * request | |
7279 | - */ | |
7280 | - body: { | |
7281 | - /** | |
7282 | - @description | |
7283 | - request */ | |
7284 | - request: SalesRechargePrepaymentCreateRequest; | |
7285 | - }; | |
7286 | -} | |
7287 | - | |
7288 | -/** @description response type for postPrepaidCreate */ | |
7289 | -export interface PostPrepaidCreateResponse { | |
9156 | +/** @description response type for postResearchGroupsDownloadImportTemplate */ | |
9157 | +export interface PostResearchGroupsDownloadImportTemplateResponse { | |
7290 | 9158 | /** |
7291 | 9159 | * @description |
7292 | 9160 | * OK |
7293 | 9161 | */ |
7294 | - 200: ServerResult; | |
9162 | + 200: any; | |
7295 | 9163 | /** |
7296 | 9164 | * @description |
7297 | 9165 | * Created |
... | ... | @@ -7314,24 +9182,22 @@ export interface PostPrepaidCreateResponse { |
7314 | 9182 | 404: any; |
7315 | 9183 | } |
7316 | 9184 | |
7317 | -export type PostPrepaidCreateResponseSuccess = PostPrepaidCreateResponse[200]; | |
9185 | +export type PostResearchGroupsDownloadImportTemplateResponseSuccess = | |
9186 | + PostResearchGroupsDownloadImportTemplateResponse[200]; | |
7318 | 9187 | /** |
7319 | 9188 | * @description |
7320 | - * 新增预存 | |
7321 | - * @tags prepaid-controller | |
9189 | + * 课题组导入模板下载 | |
9190 | + * @tags research-groups-controller | |
7322 | 9191 | * @produces * |
7323 | 9192 | * @consumes application/json |
7324 | 9193 | */ |
7325 | -export const postPrepaidCreate = /* #__PURE__ */ (() => { | |
9194 | +export const postResearchGroupsDownloadImportTemplate = /* #__PURE__ */ (() => { | |
7326 | 9195 | const method = 'post'; |
7327 | - const url = '/prepaid/create'; | |
7328 | - function request( | |
7329 | - option: PostPrepaidCreateOption, | |
7330 | - ): Promise<PostPrepaidCreateResponseSuccess> { | |
9196 | + const url = '/research/groups/download/importTemplate'; | |
9197 | + function request(): Promise<PostResearchGroupsDownloadImportTemplateResponseSuccess> { | |
7331 | 9198 | return requester(request.url, { |
7332 | 9199 | method: request.method, |
7333 | - ...option, | |
7334 | - }) as unknown as Promise<PostPrepaidCreateResponseSuccess>; | |
9200 | + }) as unknown as Promise<PostResearchGroupsDownloadImportTemplateResponseSuccess>; | |
7335 | 9201 | } |
7336 | 9202 | |
7337 | 9203 | /** http method */ |
... | ... | @@ -7341,8 +9207,8 @@ export const postPrepaidCreate = /* #__PURE__ */ (() => { |
7341 | 9207 | return request; |
7342 | 9208 | })(); |
7343 | 9209 | |
7344 | -/** @description request parameter type for postPrepaidDelete */ | |
7345 | -export interface PostPrepaidDeleteOption { | |
9210 | +/** @description request parameter type for postResearchGroupsEdit */ | |
9211 | +export interface PostResearchGroupsEditOption { | |
7346 | 9212 | /** |
7347 | 9213 | * @description |
7348 | 9214 | * request |
... | ... | @@ -7351,12 +9217,12 @@ export interface PostPrepaidDeleteOption { |
7351 | 9217 | /** |
7352 | 9218 | @description |
7353 | 9219 | request */ |
7354 | - request: SalesRechargePrepaymentDeleteRequest; | |
9220 | + request: ResearchGroupEditRequest; | |
7355 | 9221 | }; |
7356 | 9222 | } |
7357 | 9223 | |
7358 | -/** @description response type for postPrepaidDelete */ | |
7359 | -export interface PostPrepaidDeleteResponse { | |
9224 | +/** @description response type for postResearchGroupsEdit */ | |
9225 | +export interface PostResearchGroupsEditResponse { | |
7360 | 9226 | /** |
7361 | 9227 | * @description |
7362 | 9228 | * OK |
... | ... | @@ -7384,24 +9250,25 @@ export interface PostPrepaidDeleteResponse { |
7384 | 9250 | 404: any; |
7385 | 9251 | } |
7386 | 9252 | |
7387 | -export type PostPrepaidDeleteResponseSuccess = PostPrepaidDeleteResponse[200]; | |
9253 | +export type PostResearchGroupsEditResponseSuccess = | |
9254 | + PostResearchGroupsEditResponse[200]; | |
7388 | 9255 | /** |
7389 | 9256 | * @description |
7390 | - * 删除预存 | |
7391 | - * @tags prepaid-controller | |
9257 | + * 编辑课题组信息 | |
9258 | + * @tags research-groups-controller | |
7392 | 9259 | * @produces * |
7393 | 9260 | * @consumes application/json |
7394 | 9261 | */ |
7395 | -export const postPrepaidDelete = /* #__PURE__ */ (() => { | |
9262 | +export const postResearchGroupsEdit = /* #__PURE__ */ (() => { | |
7396 | 9263 | const method = 'post'; |
7397 | - const url = '/prepaid/delete'; | |
9264 | + const url = '/research/groups/edit'; | |
7398 | 9265 | function request( |
7399 | - option: PostPrepaidDeleteOption, | |
7400 | - ): Promise<PostPrepaidDeleteResponseSuccess> { | |
9266 | + option: PostResearchGroupsEditOption, | |
9267 | + ): Promise<PostResearchGroupsEditResponseSuccess> { | |
7401 | 9268 | return requester(request.url, { |
7402 | 9269 | method: request.method, |
7403 | 9270 | ...option, |
7404 | - }) as unknown as Promise<PostPrepaidDeleteResponseSuccess>; | |
9271 | + }) as unknown as Promise<PostResearchGroupsEditResponseSuccess>; | |
7405 | 9272 | } |
7406 | 9273 | |
7407 | 9274 | /** http method */ |
... | ... | @@ -7411,22 +9278,22 @@ export const postPrepaidDelete = /* #__PURE__ */ (() => { |
7411 | 9278 | return request; |
7412 | 9279 | })(); |
7413 | 9280 | |
7414 | -/** @description request parameter type for postPrepaidList */ | |
7415 | -export interface PostPrepaidListOption { | |
9281 | +/** @description request parameter type for postResearchGroupsImport */ | |
9282 | +export interface PostResearchGroupsImportOption { | |
7416 | 9283 | /** |
7417 | 9284 | * @description |
7418 | - * request | |
9285 | + * file | |
7419 | 9286 | */ |
7420 | - body: { | |
9287 | + formData: { | |
7421 | 9288 | /** |
7422 | 9289 | @description |
7423 | - request */ | |
7424 | - request: SalesRechargePrepaymentRequest; | |
9290 | + file */ | |
9291 | + file: File; | |
7425 | 9292 | }; |
7426 | 9293 | } |
7427 | 9294 | |
7428 | -/** @description response type for postPrepaidList */ | |
7429 | -export interface PostPrepaidListResponse { | |
9295 | +/** @description response type for postResearchGroupsImport */ | |
9296 | +export interface PostResearchGroupsImportResponse { | |
7430 | 9297 | /** |
7431 | 9298 | * @description |
7432 | 9299 | * OK |
... | ... | @@ -7454,24 +9321,25 @@ export interface PostPrepaidListResponse { |
7454 | 9321 | 404: any; |
7455 | 9322 | } |
7456 | 9323 | |
7457 | -export type PostPrepaidListResponseSuccess = PostPrepaidListResponse[200]; | |
9324 | +export type PostResearchGroupsImportResponseSuccess = | |
9325 | + PostResearchGroupsImportResponse[200]; | |
7458 | 9326 | /** |
7459 | 9327 | * @description |
7460 | - * 查询列表 | |
7461 | - * @tags prepaid-controller | |
9328 | + * 课题组信息导入 | |
9329 | + * @tags research-groups-controller | |
7462 | 9330 | * @produces * |
7463 | - * @consumes application/json | |
9331 | + * @consumes multipart/form-data | |
7464 | 9332 | */ |
7465 | -export const postPrepaidList = /* #__PURE__ */ (() => { | |
9333 | +export const postResearchGroupsImport = /* #__PURE__ */ (() => { | |
7466 | 9334 | const method = 'post'; |
7467 | - const url = '/prepaid/list'; | |
9335 | + const url = '/research/groups/import'; | |
7468 | 9336 | function request( |
7469 | - option: PostPrepaidListOption, | |
7470 | - ): Promise<PostPrepaidListResponseSuccess> { | |
9337 | + option: PostResearchGroupsImportOption, | |
9338 | + ): Promise<PostResearchGroupsImportResponseSuccess> { | |
7471 | 9339 | return requester(request.url, { |
7472 | 9340 | method: request.method, |
7473 | 9341 | ...option, |
7474 | - }) as unknown as Promise<PostPrepaidListResponseSuccess>; | |
9342 | + }) as unknown as Promise<PostResearchGroupsImportResponseSuccess>; | |
7475 | 9343 | } |
7476 | 9344 | |
7477 | 9345 | /** http method */ |
... | ... | @@ -7481,8 +9349,8 @@ export const postPrepaidList = /* #__PURE__ */ (() => { |
7481 | 9349 | return request; |
7482 | 9350 | })(); |
7483 | 9351 | |
7484 | -/** @description request parameter type for postPrepaidUpdate */ | |
7485 | -export interface PostPrepaidUpdateOption { | |
9352 | +/** @description request parameter type for postResearchGroupsList */ | |
9353 | +export interface PostResearchGroupsListOption { | |
7486 | 9354 | /** |
7487 | 9355 | * @description |
7488 | 9356 | * request |
... | ... | @@ -7491,12 +9359,12 @@ export interface PostPrepaidUpdateOption { |
7491 | 9359 | /** |
7492 | 9360 | @description |
7493 | 9361 | request */ |
7494 | - request: SalesRechargePrepaymentUpdateRequest; | |
9362 | + request: ResearchGroupListRequest; | |
7495 | 9363 | }; |
7496 | 9364 | } |
7497 | 9365 | |
7498 | -/** @description response type for postPrepaidUpdate */ | |
7499 | -export interface PostPrepaidUpdateResponse { | |
9366 | +/** @description response type for postResearchGroupsList */ | |
9367 | +export interface PostResearchGroupsListResponse { | |
7500 | 9368 | /** |
7501 | 9369 | * @description |
7502 | 9370 | * OK |
... | ... | @@ -7524,24 +9392,25 @@ export interface PostPrepaidUpdateResponse { |
7524 | 9392 | 404: any; |
7525 | 9393 | } |
7526 | 9394 | |
7527 | -export type PostPrepaidUpdateResponseSuccess = PostPrepaidUpdateResponse[200]; | |
9395 | +export type PostResearchGroupsListResponseSuccess = | |
9396 | + PostResearchGroupsListResponse[200]; | |
7528 | 9397 | /** |
7529 | 9398 | * @description |
7530 | - * 修改预存 | |
7531 | - * @tags prepaid-controller | |
9399 | + * 课题组列表 | |
9400 | + * @tags research-groups-controller | |
7532 | 9401 | * @produces * |
7533 | 9402 | * @consumes application/json |
7534 | 9403 | */ |
7535 | -export const postPrepaidUpdate = /* #__PURE__ */ (() => { | |
9404 | +export const postResearchGroupsList = /* #__PURE__ */ (() => { | |
7536 | 9405 | const method = 'post'; |
7537 | - const url = '/prepaid/update'; | |
9406 | + const url = '/research/groups/list'; | |
7538 | 9407 | function request( |
7539 | - option: PostPrepaidUpdateOption, | |
7540 | - ): Promise<PostPrepaidUpdateResponseSuccess> { | |
9408 | + option: PostResearchGroupsListOption, | |
9409 | + ): Promise<PostResearchGroupsListResponseSuccess> { | |
7541 | 9410 | return requester(request.url, { |
7542 | 9411 | method: request.method, |
7543 | 9412 | ...option, |
7544 | - }) as unknown as Promise<PostPrepaidUpdateResponseSuccess>; | |
9413 | + }) as unknown as Promise<PostResearchGroupsListResponseSuccess>; | |
7545 | 9414 | } |
7546 | 9415 | |
7547 | 9416 | /** http method */ | ... | ... |
src/utils/numberUtil.ts
0 → 100644
1 | +export function getRandomNumber(numDigits: number) { | |
2 | + if (numDigits <= 0) { | |
3 | + throw new Error('Number of digits must be greater than 0'); | |
4 | + } | |
5 | + | |
6 | + const min = Math.pow(10, numDigits - 1); | |
7 | + const max = Math.pow(10, numDigits) - 1; | |
8 | + return Math.floor(Math.random() * (max - min + 1)) + min; | |
9 | +} | ... | ... |
src/utils/order.ts
1 | +import { postServiceOrderQuerySalesCode } from '@/services'; | |
1 | 2 | import { cloneDeep } from 'lodash'; |
2 | 3 | import { getUserInfo } from '.'; |
3 | 4 | export function getReceivingCompanyOptions(PAYEE_OPTIONS: any) { |
... | ... | @@ -63,3 +64,17 @@ export function isFinance() { |
63 | 64 | } |
64 | 65 | return false; |
65 | 66 | } |
67 | +/** | |
68 | + * 获取销售代码枚举,在复制和编辑的时候判断是否为旧的代码 | |
69 | + */ | |
70 | +export const getSalesCodeOptions = async () => { | |
71 | + const res = await postServiceOrderQuerySalesCode(); | |
72 | + let options = res.data?.map((item) => { | |
73 | + return { | |
74 | + label: item.userName, | |
75 | + value: item.userName, | |
76 | + number: item.number, | |
77 | + }; | |
78 | + }); | |
79 | + return options; | |
80 | +}; | ... | ... |
src/utils/validators.ts
... | ... | @@ -5,3 +5,8 @@ export const validatePhoneNumber = (_: any, value: any) => { |
5 | 5 | } |
6 | 6 | return Promise.reject('请输入正确的电话号码格式(例如:13789758969)'); |
7 | 7 | }; |
8 | + | |
9 | +export const validatePhoneNumberBool = (phoneNumber: any) => { | |
10 | + const regex = /^1[3456789]\d{9}$/; | |
11 | + return regex.test(phoneNumber); | |
12 | +}; | ... | ... |