Commit 5cbe46aeeb696388e33373d8f674bb6bece61233
1 parent
419f88a8
feat: update 金蝶客户新增、修改
Showing
5 changed files
with
1230 additions
and
815 deletions
src/pages/Order/components/KingdeeCustomerModal.tsx
0 → 100644
1 | +import { | ||
2 | + postKingdeeRepCustomerDetail, | ||
3 | + postKingdeeRepCustomerSave, | ||
4 | +} from '@/services'; | ||
5 | +import { getTeacherCustomFieldNumber } from '@/utils/kingdee'; | ||
6 | +import { CloseCircleOutlined } from '@ant-design/icons'; | ||
7 | +import { | ||
8 | + ModalForm, | ||
9 | + ProFormGroup, | ||
10 | + ProFormList, | ||
11 | + ProFormText, | ||
12 | +} from '@ant-design/pro-components'; | ||
13 | +import { Form, message } from 'antd'; | ||
14 | + | ||
15 | +// import { cloneDeep } from 'lodash'; | ||
16 | +export default ({ setVisible, data, onClose }) => { | ||
17 | + const [form] = Form.useForm(); | ||
18 | + console.log(data); | ||
19 | + | ||
20 | + /** | ||
21 | + * 回显客户信息 | ||
22 | + * @param id | ||
23 | + */ | ||
24 | + async function queryAndShowCustomer(id: any) { | ||
25 | + //查询客户信息 | ||
26 | + let res = await postKingdeeRepCustomerDetail({ | ||
27 | + data: { | ||
28 | + id: id, | ||
29 | + }, | ||
30 | + }); | ||
31 | + | ||
32 | + if (res) { | ||
33 | + form.setFieldValue('name', res.name); | ||
34 | + form.setFieldValue('id', res.id); | ||
35 | + form.setFieldValue('contact_persons', res.bomentity); | ||
36 | + let customFiledNumber = await getTeacherCustomFieldNumber(); | ||
37 | + form.setFieldValue('teacherName', res.custom_field[customFiledNumber]); | ||
38 | + } | ||
39 | + } | ||
40 | + | ||
41 | + if (data) { | ||
42 | + //修改 | ||
43 | + if (data.id) { | ||
44 | + queryAndShowCustomer(data.id); | ||
45 | + } else { | ||
46 | + //新增 | ||
47 | + form.setFieldValue('name', data.name); | ||
48 | + form.setFieldValue('contact_persons', [{}]); | ||
49 | + } | ||
50 | + } | ||
51 | + return ( | ||
52 | + <> | ||
53 | + <ModalForm | ||
54 | + width={900} | ||
55 | + open | ||
56 | + title="客户信息" | ||
57 | + form={form} | ||
58 | + autoFocusFirstInput | ||
59 | + modalProps={{ | ||
60 | + okText: '保存', | ||
61 | + cancelText: '取消', | ||
62 | + destroyOnClose: true, | ||
63 | + onCancel: () => { | ||
64 | + setVisible(false); | ||
65 | + }, | ||
66 | + }} | ||
67 | + onFinish={async (values) => { | ||
68 | + //查询客户自定义字段,课题组 | ||
69 | + let custom_field_umber = await getTeacherCustomFieldNumber(); | ||
70 | + | ||
71 | + if (custom_field_umber) { | ||
72 | + let customFieldObj = {}; | ||
73 | + customFieldObj[custom_field_umber] = values.teacherName; | ||
74 | + values.custom_field = customFieldObj; | ||
75 | + } | ||
76 | + let customSaveRes = await postKingdeeRepCustomerSave({ | ||
77 | + data: values, | ||
78 | + }); | ||
79 | + if (customSaveRes) { | ||
80 | + let id_number_map = customSaveRes.id_number_map; | ||
81 | + let ids = customSaveRes.ids; | ||
82 | + if (id_number_map && ids) { | ||
83 | + message.success('保存成功'); | ||
84 | + let id = ids[0]; | ||
85 | + onClose(id); | ||
86 | + } | ||
87 | + } | ||
88 | + }} | ||
89 | + onOpenChange={setVisible} | ||
90 | + > | ||
91 | + <ProFormText key="key" name="id" label="id" placeholder="id" hidden /> | ||
92 | + <ProFormGroup key="group"> | ||
93 | + <ProFormText | ||
94 | + name="name" | ||
95 | + width="md" | ||
96 | + label="客户名称" | ||
97 | + initialValue={data} | ||
98 | + placeholder="请输入客户名称" | ||
99 | + rules={[ | ||
100 | + { | ||
101 | + required: true, | ||
102 | + pattern: new RegExp('^.+-.+$'), | ||
103 | + message: | ||
104 | + '格式错误,请按照:“单位-名称” 命名,若无单位可写:“无-名称”', | ||
105 | + }, | ||
106 | + { required: true, message: '客户名称必填' }, | ||
107 | + ]} | ||
108 | + /> | ||
109 | + <ProFormText | ||
110 | + name="teacherName" | ||
111 | + width="md" | ||
112 | + label="课题组老师" | ||
113 | + placeholder="请输入课题组老师" | ||
114 | + rules={[ | ||
115 | + { required: true, message: '课题组老师必填,若没有请填“无”' }, | ||
116 | + ]} | ||
117 | + /> | ||
118 | + </ProFormGroup> | ||
119 | + | ||
120 | + <ProFormList | ||
121 | + creatorButtonProps={{ disabled: false }} | ||
122 | + name="contact_persons" | ||
123 | + label="联系人信息" | ||
124 | + actionGuard={{ | ||
125 | + beforeRemoveRow: async () => { | ||
126 | + return new Promise((resolve) => { | ||
127 | + let contactPersons = form.getFieldValue('contact_persons'); | ||
128 | + if (contactPersons.length === 1) { | ||
129 | + message.error('至少要有一个联系人'); | ||
130 | + resolve(false); | ||
131 | + return; | ||
132 | + } | ||
133 | + resolve(true); | ||
134 | + }); | ||
135 | + }, | ||
136 | + }} | ||
137 | + deleteIconProps={{ | ||
138 | + Icon: CloseCircleOutlined, | ||
139 | + tooltipText: '不需要这行了', | ||
140 | + }} | ||
141 | + > | ||
142 | + <ProFormGroup key="group"> | ||
143 | + {[ | ||
144 | + <ProFormText | ||
145 | + key="key" | ||
146 | + name="id" | ||
147 | + label="id" | ||
148 | + placeholder="id" | ||
149 | + hidden | ||
150 | + />, | ||
151 | + <ProFormText | ||
152 | + key="key" | ||
153 | + name="contact_person" | ||
154 | + label="收货人姓名" | ||
155 | + placeholder="联系人姓名" | ||
156 | + rules={[{ required: true, message: '收货人姓名必填' }]} | ||
157 | + />, | ||
158 | + <ProFormText | ||
159 | + key="key" | ||
160 | + name="mobile" | ||
161 | + label="联系方式" | ||
162 | + placeholder="联系方式" | ||
163 | + rules={[{ required: true, message: '联系方式必填' }]} | ||
164 | + />, | ||
165 | + <ProFormText | ||
166 | + key="key" | ||
167 | + name="contact_address" | ||
168 | + label="收货地址" | ||
169 | + width="md" | ||
170 | + placeholder="请输入收货地址" | ||
171 | + rules={[{ required: true, message: '收货地址必填' }]} | ||
172 | + />, | ||
173 | + ]} | ||
174 | + </ProFormGroup> | ||
175 | + </ProFormList> | ||
176 | + </ModalForm> | ||
177 | + </> | ||
178 | + ); | ||
179 | +}; |
src/pages/Order/components/OrderDrawer.tsx
@@ -3,7 +3,6 @@ import { | @@ -3,7 +3,6 @@ import { | ||
3 | postKingdeeRepCustomer, | 3 | postKingdeeRepCustomer, |
4 | postKingdeeRepCustomerDetail, | 4 | postKingdeeRepCustomerDetail, |
5 | postKingdeeRepMaterial, | 5 | postKingdeeRepMaterial, |
6 | - postKingdeeRepSystemCustomField, | ||
7 | postServiceOrderAddOrder, | 6 | postServiceOrderAddOrder, |
8 | postServiceOrderQuerySalesCode, | 7 | postServiceOrderQuerySalesCode, |
9 | postServiceOrderUpdateOrder, | 8 | postServiceOrderUpdateOrder, |
@@ -13,6 +12,7 @@ import { | @@ -13,6 +12,7 @@ import { | ||
13 | getAliYunOSSFileNameFromUrl, | 12 | getAliYunOSSFileNameFromUrl, |
14 | getUserInfo, | 13 | getUserInfo, |
15 | } from '@/utils'; | 14 | } from '@/utils'; |
15 | +import { getTeacherCustomFieldNumber } from '@/utils/kingdee'; | ||
16 | import { | 16 | import { |
17 | DrawerForm, | 17 | DrawerForm, |
18 | FormListActionType, | 18 | FormListActionType, |
@@ -35,10 +35,14 @@ import { | @@ -35,10 +35,14 @@ import { | ||
35 | PAYMENT_METHOD_OPTIONS, | 35 | PAYMENT_METHOD_OPTIONS, |
36 | PRODUCT_BELONG_DEPARTMENT_OPTIONS, | 36 | PRODUCT_BELONG_DEPARTMENT_OPTIONS, |
37 | } from '../constant'; | 37 | } from '../constant'; |
38 | +import KingdeeCustomerModal from './KingdeeCustomerModal'; | ||
38 | 39 | ||
39 | export default ({ onClose, data, subOrders, orderOptType }) => { | 40 | export default ({ onClose, data, subOrders, orderOptType }) => { |
40 | const [invoicingStatus, setInvoicingStatus] = useState(''); | 41 | const [invoicingStatus, setInvoicingStatus] = useState(''); |
41 | const [salesCodeOptions, setSalesCodeOptions] = useState([]); | 42 | const [salesCodeOptions, setSalesCodeOptions] = useState([]); |
43 | + const [customer, setCustomer] = useState({}); | ||
44 | + const [kingdeeCstomerModalVisible, setKingdeeCstomerModalVisible] = | ||
45 | + useState(false); | ||
42 | // const [productInvStockOptionsList, setProductInvStockOptionsList] = useState( | 46 | // const [productInvStockOptionsList, setProductInvStockOptionsList] = useState( |
43 | // [], | 47 | // [], |
44 | // ); //商品的仓库选项 | 48 | // ); //商品的仓库选项 |
@@ -119,7 +123,6 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | @@ -119,7 +123,6 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | ||
119 | includeFlag = true; | 123 | includeFlag = true; |
120 | } | 124 | } |
121 | } | 125 | } |
122 | - console.log(includeFlag); | ||
123 | if (!includeFlag) { | 126 | if (!includeFlag) { |
124 | form.resetFields(['salesCode']); | 127 | form.resetFields(['salesCode']); |
125 | message.warning('检测到销售代码为旧的,已清空,请重新选择'); | 128 | message.warning('检测到销售代码为旧的,已清空,请重新选择'); |
@@ -127,48 +130,6 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | @@ -127,48 +130,6 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | ||
127 | } | 130 | } |
128 | }; | 131 | }; |
129 | 132 | ||
130 | - useEffect(() => { | ||
131 | - getSalesCodeOptions(); | ||
132 | - }, []); | ||
133 | - | ||
134 | - useEffect(() => { | ||
135 | - // 在组件挂载或数据变化时,更新组件状态 | ||
136 | - if (data) { | ||
137 | - setInvoicingStatus(data.invoicingStatus); | ||
138 | - } | ||
139 | - }, [data]); | ||
140 | - | ||
141 | - // let mainInfoDisbled = optType('edit'); | ||
142 | - if (optType('edit') || optType('copy')) { | ||
143 | - //如果是复制,需要开票,不回显是否需要开票字段 | ||
144 | - if (optType('copy')) { | ||
145 | - if (data.invoicingStatus === 'INVOICED') { | ||
146 | - data.invoicingStatus = undefined; | ||
147 | - } | ||
148 | - } | ||
149 | - //订单修改和新增的子订单列表命名是list | ||
150 | - data.list = data.subOrderInformationLists; | ||
151 | - //主订单事业部默认显示子订单第一条的事业部 | ||
152 | - data.productBelongBusiness = data.list[0].productBelongBusiness; | ||
153 | - data.paymentMethod = data.list[0].paymentMethod; | ||
154 | - data.paymentChannel = data.list[0].paymentChannel; | ||
155 | - data.invoicingStatus = data.list[0].invoicingStatus; | ||
156 | - | ||
157 | - data.list = data.list?.map((item) => { | ||
158 | - item.filePaths = item.listAnnex?.map((path) => { | ||
159 | - let i = 0; | ||
160 | - return { | ||
161 | - uid: i++, | ||
162 | - name: getAliYunOSSFileNameFromUrl(path), | ||
163 | - status: 'uploaded', | ||
164 | - url: path, | ||
165 | - response: { data: [path] }, | ||
166 | - }; | ||
167 | - }); | ||
168 | - return item; | ||
169 | - }); | ||
170 | - } | ||
171 | - | ||
172 | //复制的时候,如果是不需要开票,要把开票信息清空 | 133 | //复制的时候,如果是不需要开票,要把开票信息清空 |
173 | if (optType('copy') && data.invoicingStatus === 'UN_INVOICE') { | 134 | if (optType('copy') && data.invoicingStatus === 'UN_INVOICE') { |
174 | data.invoiceIdentificationNumber = undefined; | 135 | data.invoiceIdentificationNumber = undefined; |
@@ -193,6 +154,92 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | @@ -193,6 +154,92 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | ||
193 | }, [data]); | 154 | }, [data]); |
194 | 155 | ||
195 | /** | 156 | /** |
157 | + * 选择客户后自动为收货人Select添加选项,填充课题组和单位信息 | ||
158 | + * @param option 客户选项 | ||
159 | + */ | ||
160 | + async function autoFillCustomerContactSelectOptions(customerId: any) { | ||
161 | + //查询单位详细信息 | ||
162 | + let res = await postKingdeeRepCustomerDetail({ | ||
163 | + data: { | ||
164 | + id: customerId, | ||
165 | + }, | ||
166 | + }); | ||
167 | + | ||
168 | + //erp客户名称 | ||
169 | + form.setFieldValue('erpCustomerName', res?.name); | ||
170 | + | ||
171 | + //重新设置当前option | ||
172 | + form.setFieldValue('erpCustomerId', { | ||
173 | + label: res?.name, | ||
174 | + value: res?.id, | ||
175 | + id: res?.id, | ||
176 | + }); | ||
177 | + | ||
178 | + //查询客户自定义字段,课题组 | ||
179 | + let entity_number = await getTeacherCustomFieldNumber(); | ||
180 | + | ||
181 | + //在单位详细信息中拿到自定义字段的值 | ||
182 | + let customField = res?.custom_field; | ||
183 | + if (customField) { | ||
184 | + let teacherName = customField[entity_number]; | ||
185 | + //填充到课题组老师表单字段中 | ||
186 | + form.setFieldValue('institutionContactName', teacherName); | ||
187 | + } | ||
188 | + | ||
189 | + //单位名称,从客户名称中获取,客户名称规则<单位名称>-<联系人名称和电话> | ||
190 | + let namePortions = res?.name?.split('-'); | ||
191 | + if (namePortions && namePortions.length >= 2) { | ||
192 | + form.setFieldValue('institution', namePortions[0]); | ||
193 | + } | ||
194 | + | ||
195 | + //如果原来的收货信息没有包含在这次查询出来的收货人选项中,那么清除原来的收货人信息 | ||
196 | + let existFlag = false; | ||
197 | + | ||
198 | + //填充收货人选项 | ||
199 | + let newProductCustomerContactOptions = res?.bomentity?.map((item) => { | ||
200 | + let address = | ||
201 | + item.contact_person + ',' + item.mobile + ',' + item.contact_address; | ||
202 | + if (address === data.contactAddress) { | ||
203 | + existFlag = true; | ||
204 | + } | ||
205 | + return { ...item, label: address, value: address }; | ||
206 | + }); | ||
207 | + | ||
208 | + setProductCustomerContactOptions(newProductCustomerContactOptions); | ||
209 | + | ||
210 | + if (!existFlag) { | ||
211 | + //清空原来的收货人信息 | ||
212 | + form.setFieldValue('customerShippingAddress', undefined); | ||
213 | + form.setFieldValue('customerContactNumber', undefined); | ||
214 | + form.setFieldValue('customerName', undefined); | ||
215 | + form.setFieldValue('erpCustomerAddress', undefined); | ||
216 | + } | ||
217 | + } | ||
218 | + | ||
219 | + /** | ||
220 | + * 回显金蝶信息 | ||
221 | + */ | ||
222 | + async function showKindeeInfo() { | ||
223 | + //客户信息 | ||
224 | + if (data.customerId) { | ||
225 | + //客户回显 | ||
226 | + autoFillCustomerContactSelectOptions(data.customerId); | ||
227 | + } | ||
228 | + | ||
229 | + //商品单位回显 | ||
230 | + let list = data?.subOrderInformationLists; | ||
231 | + if (list) { | ||
232 | + let newProductUnitOptionsList = [...productUnitOptionsList]; | ||
233 | + for (let i = 0; i < list.length; i++) { | ||
234 | + newProductUnitOptionsList[i] = [ | ||
235 | + { label: list[i].unit, value: list[i].unitId }, | ||
236 | + ]; | ||
237 | + } | ||
238 | + setProductUnitOptionsList(newProductUnitOptionsList); | ||
239 | + } | ||
240 | + } | ||
241 | + | ||
242 | + /** | ||
196 | * | 243 | * |
197 | * @param option 商品名称所对应的商品数据 | 244 | * @param option 商品名称所对应的商品数据 |
198 | * @param currentRowData list中当前行的数据 | 245 | * @param currentRowData list中当前行的数据 |
@@ -213,7 +260,7 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | @@ -213,7 +260,7 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | ||
213 | 260 | ||
214 | //单位 | 261 | //单位 |
215 | currentData.unit = option.base_unit_name; | 262 | currentData.unit = option.base_unit_name; |
216 | - currentData.erpUnitId = option.base_unit_id; | 263 | + currentData.unitId = option.base_unit_id; |
217 | 264 | ||
218 | form.setFieldValue('list', copyList); | 265 | form.setFieldValue('list', copyList); |
219 | 266 | ||
@@ -247,7 +294,7 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | @@ -247,7 +294,7 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | ||
247 | form.setFieldValue('customerName', option.contact_person); | 294 | form.setFieldValue('customerName', option.contact_person); |
248 | 295 | ||
249 | //erp收货地址:需要与客户联系人中的地址一样:姓名,手机号,地址 | 296 | //erp收货地址:需要与客户联系人中的地址一样:姓名,手机号,地址 |
250 | - form.setFieldValue('erpCustomerAddress', option.value); | 297 | + form.setFieldValue('contactAddress', option.value); |
251 | } | 298 | } |
252 | 299 | ||
253 | /** | 300 | /** |
@@ -255,58 +302,9 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | @@ -255,58 +302,9 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | ||
255 | * @param option | 302 | * @param option |
256 | */ | 303 | */ |
257 | function autoFillSalesInfo(option: any) { | 304 | function autoFillSalesInfo(option: any) { |
305 | + console.log(option); | ||
258 | //销售代表对应职员编码填充 | 306 | //销售代表对应职员编码填充 |
259 | - form.setFieldValue('number', option.number); | ||
260 | - } | ||
261 | - | ||
262 | - /** | ||
263 | - * 选择客户后自动为收货人Select添加选项,填充课题组和单位信息 | ||
264 | - * @param option 客户选项 | ||
265 | - */ | ||
266 | - async function autoFillCustomerContactSelectOptions(option: any) { | ||
267 | - //查询单位详细信息 | ||
268 | - let res = await postKingdeeRepCustomerDetail({ | ||
269 | - data: { | ||
270 | - id: option.id, | ||
271 | - }, | ||
272 | - }); | ||
273 | - | ||
274 | - //erp客户名称 | ||
275 | - form.setFieldValue('erpCustomerName', option.name); | ||
276 | - | ||
277 | - //查询客户自定义字段,课题组 | ||
278 | - let customFiledRes = await postKingdeeRepSystemCustomField({ | ||
279 | - data: { | ||
280 | - entity_number: 'bd_customer', | ||
281 | - }, | ||
282 | - }); | ||
283 | - | ||
284 | - //遍历自定义字段的head,找到名称为"课题组老师"的entity_number | ||
285 | - let entity_number = ''; | ||
286 | - customFiledRes?.head?.forEach((item) => { | ||
287 | - if (item.display_name === '课题组老师') { | ||
288 | - entity_number = item.number; | ||
289 | - } | ||
290 | - }); | ||
291 | - //在单位详细信息中拿到自定义字段的值 | ||
292 | - let teacherName = res?.custom_field[entity_number]; | ||
293 | - //填充到课题组老师表单字段中 | ||
294 | - form.setFieldValue('institutionContactName', teacherName); | ||
295 | - | ||
296 | - //单位名称,从客户名称中获取,客户名称规则<单位名称>-<联系人名称和电话> | ||
297 | - let namePortions = res?.name.split('-'); | ||
298 | - if (namePortions.length >= 2) { | ||
299 | - form.setFieldValue('institution', namePortions[0]); | ||
300 | - } | ||
301 | - | ||
302 | - //填充收货人选项 | ||
303 | - let newProductCustomerContactOptions = res?.bomentity?.map((item) => { | ||
304 | - let address = | ||
305 | - item.contact_person + ',' + item.mobile + ',' + item.contact_address; | ||
306 | - return { ...item, label: address, value: address }; | ||
307 | - }); | ||
308 | - console.log(newProductCustomerContactOptions); | ||
309 | - setProductCustomerContactOptions(newProductCustomerContactOptions); | 307 | + form.setFieldValue('empNumber', option.number); |
310 | } | 308 | } |
311 | 309 | ||
312 | /** | 310 | /** |
@@ -343,725 +341,822 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | @@ -343,725 +341,822 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | ||
343 | form.setFieldValue('totalPayment', totalPayment); | 341 | form.setFieldValue('totalPayment', totalPayment); |
344 | } | 342 | } |
345 | 343 | ||
346 | - return ( | ||
347 | - <DrawerForm<{ | ||
348 | - deleteSubOrderLists: any; | ||
349 | - name: string; | ||
350 | - company: string; | ||
351 | - }> | ||
352 | - open | ||
353 | - width="35%" | ||
354 | - title={optType('add') || optType('copy') ? '新建订单' : '修改订单'} | ||
355 | - resize={{ | ||
356 | - onResize() { | ||
357 | - console.log('resize!'); | ||
358 | - }, | ||
359 | - maxWidth: window.innerWidth * 0.8, | ||
360 | - minWidth: 400, | ||
361 | - }} | ||
362 | - // layout="horizontal" | ||
363 | - // labelCol={{ span: 8 }} | ||
364 | - form={form} | ||
365 | - autoFocusFirstInput | ||
366 | - drawerProps={{ | ||
367 | - destroyOnClose: true, | ||
368 | - maskClosable: false, | ||
369 | - }} | ||
370 | - submitTimeout={2000} | ||
371 | - onFinish={async (values) => { | ||
372 | - let res = {}; | ||
373 | - //附件处理 | ||
374 | - let list = values.list; | ||
375 | - // console.log(list); | ||
376 | - list = list.map((item) => { | ||
377 | - item.filePaths = item.filePaths?.map((file) => { | ||
378 | - console.log(file); | ||
379 | - return { url: file.response.data[0] }; | ||
380 | - }); | ||
381 | - return item; | ||
382 | - }); | 344 | + useEffect(() => { |
345 | + getSalesCodeOptions(); | ||
346 | + showKindeeInfo(); | ||
347 | + }, []); | ||
383 | 348 | ||
384 | - values.list = list; | ||
385 | - values.institution = values.institution?.trim(); | ||
386 | - values.institutionContactName = values.institutionContactName?.trim(); | 349 | + useEffect(() => { |
350 | + // 在组件挂载或数据变化时,更新组件状态 | ||
351 | + if (data) { | ||
352 | + setInvoicingStatus(data.invoicingStatus); | ||
353 | + } | ||
354 | + }, [data]); | ||
387 | 355 | ||
388 | - if (optType('add') || optType('copy')) { | ||
389 | - res = await postServiceOrderAddOrder({ data: values }); | ||
390 | - } else { | ||
391 | - //计算已删除的子订单id | ||
392 | - const originIds = originSubOrders.map((item) => { | ||
393 | - return item.id; | ||
394 | - }); | ||
395 | - const curIds = form.getFieldValue('list')?.map((item) => { | ||
396 | - return item.id; | 356 | + // let mainInfoDisbled = optType('edit'); |
357 | + if (optType('edit') || optType('copy')) { | ||
358 | + //如果是复制,需要开票,不回显是否需要开票字段 | ||
359 | + if (optType('copy')) { | ||
360 | + if (data.invoicingStatus === 'INVOICED') { | ||
361 | + data.invoicingStatus = undefined; | ||
362 | + } | ||
363 | + } | ||
364 | + //订单修改和新增的子订单列表命名是list | ||
365 | + data.list = data.subOrderInformationLists; | ||
366 | + //主订单事业部默认显示子订单第一条的事业部 | ||
367 | + data.productBelongBusiness = data.list[0].productBelongBusiness; | ||
368 | + data.paymentMethod = data.list[0].paymentMethod; | ||
369 | + data.paymentChannel = data.list[0].paymentChannel; | ||
370 | + data.invoicingStatus = data.list[0].invoicingStatus; | ||
371 | + | ||
372 | + data.list = data.list?.map((item) => { | ||
373 | + item.filePaths = item.listAnnex?.map((path) => { | ||
374 | + let i = 0; | ||
375 | + return { | ||
376 | + uid: i++, | ||
377 | + name: getAliYunOSSFileNameFromUrl(path), | ||
378 | + status: 'uploaded', | ||
379 | + url: path, | ||
380 | + response: { data: [path] }, | ||
381 | + }; | ||
382 | + }); | ||
383 | + return item; | ||
384 | + }); | ||
385 | + } | ||
386 | + | ||
387 | + return ( | ||
388 | + <> | ||
389 | + <DrawerForm<{ | ||
390 | + deleteSubOrderLists: any; | ||
391 | + name: string; | ||
392 | + company: string; | ||
393 | + }> | ||
394 | + open | ||
395 | + width="35%" | ||
396 | + title={optType('add') || optType('copy') ? '新建订单' : '修改订单'} | ||
397 | + resize={{ | ||
398 | + onResize() { | ||
399 | + console.log('resize!'); | ||
400 | + }, | ||
401 | + maxWidth: window.innerWidth * 0.8, | ||
402 | + minWidth: 400, | ||
403 | + }} | ||
404 | + // layout="horizontal" | ||
405 | + // labelCol={{ span: 8 }} | ||
406 | + form={form} | ||
407 | + autoFocusFirstInput | ||
408 | + drawerProps={{ | ||
409 | + destroyOnClose: true, | ||
410 | + maskClosable: false, | ||
411 | + }} | ||
412 | + submitTimeout={2000} | ||
413 | + onFinish={async (values) => { | ||
414 | + let res = {}; | ||
415 | + //附件处理 | ||
416 | + let list = values.list; | ||
417 | + // console.log(list); | ||
418 | + list = list.map((item) => { | ||
419 | + item.filePaths = item.filePaths?.map((file) => { | ||
420 | + console.log(file); | ||
421 | + return { url: file.response.data[0] }; | ||
422 | + }); | ||
423 | + return item; | ||
397 | }); | 424 | }); |
398 | - let diff = originIds.filter((item) => !curIds.includes(item)); | ||
399 | - values.deleteSubOrderLists = diff; | ||
400 | - res = await postServiceOrderUpdateOrder({ data: values }); | ||
401 | - } | ||
402 | 425 | ||
403 | - if (res.result === RESPONSE_CODE.SUCCESS) { | ||
404 | - message.success(res.message); | ||
405 | - // 不返回不会关闭弹框 | ||
406 | - onClose(true); | ||
407 | - return true; | ||
408 | - } | ||
409 | - }} | ||
410 | - onOpenChange={(val) => { | ||
411 | - return !val && onClose(); | ||
412 | - }} | ||
413 | - > | ||
414 | - <h2>订单基本信息</h2> | ||
415 | - <ProFormText | ||
416 | - key="id" | ||
417 | - name="id" | ||
418 | - width="lg" | ||
419 | - disabled | ||
420 | - label="id" | ||
421 | - placeholder="id" | ||
422 | - hidden | ||
423 | - /> | 426 | + values.list = list; |
427 | + values.institution = values.institution?.trim(); | ||
428 | + values.institutionContactName = values.institutionContactName?.trim(); | ||
429 | + | ||
430 | + if (typeof values.erpCustomerId !== 'string') { | ||
431 | + values.erpCustomerId = values.erpCustomerId?.id; | ||
432 | + } | ||
424 | 433 | ||
425 | - <ProFormText | ||
426 | - key="number" | ||
427 | - name="number" | ||
428 | - width="lg" | ||
429 | - disabled | ||
430 | - label="销售职员编码" | ||
431 | - placeholder="销售职员编码" | ||
432 | - hidden | ||
433 | - /> | 434 | + if (optType('add') || optType('copy')) { |
435 | + res = await postServiceOrderAddOrder({ data: values }); | ||
436 | + } else { | ||
437 | + //计算已删除的子订单id | ||
438 | + const originIds = originSubOrders.map((item) => { | ||
439 | + return item.id; | ||
440 | + }); | ||
441 | + const curIds = form.getFieldValue('list')?.map((item) => { | ||
442 | + return item.id; | ||
443 | + }); | ||
444 | + let diff = originIds.filter((item) => !curIds.includes(item)); | ||
445 | + values.deleteSubOrderLists = diff; | ||
446 | + res = await postServiceOrderUpdateOrder({ data: values }); | ||
447 | + } | ||
434 | 448 | ||
435 | - <ProFormSelect | ||
436 | - name="salesCode" | ||
437 | - key="salesCode" | ||
438 | - width="lg" | ||
439 | - showSearch | ||
440 | - label="销售代表" | ||
441 | - placeholder="请输入销售代表" | ||
442 | - rules={[{ required: true, message: '销售代表必填' }]} | ||
443 | - options={salesCodeOptions} | ||
444 | - onChange={(_, option) => { | ||
445 | - autoFillSalesInfo(option); | 449 | + if (res.result === RESPONSE_CODE.SUCCESS) { |
450 | + message.success(res.message); | ||
451 | + // 不返回不会关闭弹框 | ||
452 | + onClose(true); | ||
453 | + return true; | ||
454 | + } | ||
455 | + }} | ||
456 | + onOpenChange={(val) => { | ||
457 | + return !val && onClose(); | ||
446 | }} | 458 | }} |
447 | - // disabled={mainInfoDisbled} | ||
448 | - /> | ||
449 | - <ProFormText | ||
450 | - key="erpCustomerName" | ||
451 | - name="erpCustomerName" | ||
452 | - hidden | ||
453 | - ></ProFormText> | 459 | + > |
460 | + <h2>订单基本信息</h2> | ||
461 | + <ProFormText | ||
462 | + key="id" | ||
463 | + name="id" | ||
464 | + width="lg" | ||
465 | + disabled | ||
466 | + label="id" | ||
467 | + placeholder="id" | ||
468 | + hidden | ||
469 | + /> | ||
454 | 470 | ||
455 | - <ProFormText | ||
456 | - key="erpCustomerAddress" | ||
457 | - name="erpCustomerAddress" | ||
458 | - hidden | ||
459 | - ></ProFormText> | 471 | + <ProFormText |
472 | + key="empNumber" | ||
473 | + name="empNumber" | ||
474 | + width="lg" | ||
475 | + label="销售职员编码" | ||
476 | + placeholder="销售职员编码" | ||
477 | + hidden | ||
478 | + /> | ||
460 | 479 | ||
461 | - <ProFormSelect | ||
462 | - name="erpCustomerId" | ||
463 | - key="customerId" | ||
464 | - width="lg" | ||
465 | - showSearch | ||
466 | - label="客户" | ||
467 | - placeholder="请选择客户" | ||
468 | - rules={[{ required: true, message: '客户必填' }]} | ||
469 | - onChange={(_, option) => { | ||
470 | - autoFillCustomerContactSelectOptions(option); | ||
471 | - }} | ||
472 | - fieldProps={{ | ||
473 | - optionItemRender(item) { | ||
474 | - if (item.type === 'add') { | 480 | + <ProFormSelect |
481 | + name="salesCode" | ||
482 | + key="salesCode" | ||
483 | + width="lg" | ||
484 | + showSearch | ||
485 | + label="销售代表" | ||
486 | + placeholder="请输入销售代表" | ||
487 | + rules={[{ required: true, message: '销售代表必填' }]} | ||
488 | + options={salesCodeOptions} | ||
489 | + onChange={(_, option) => { | ||
490 | + autoFillSalesInfo(option); | ||
491 | + }} | ||
492 | + // disabled={mainInfoDisbled} | ||
493 | + /> | ||
494 | + <ProFormText | ||
495 | + key="erpCustomerName" | ||
496 | + name="erpCustomerName" | ||
497 | + hidden | ||
498 | + ></ProFormText> | ||
499 | + | ||
500 | + <ProFormText | ||
501 | + key="contactAddress" | ||
502 | + name="contactAddress" | ||
503 | + hidden | ||
504 | + ></ProFormText> | ||
505 | + | ||
506 | + <ProFormSelect | ||
507 | + name="erpCustomerId" | ||
508 | + key="erpCustomerId" | ||
509 | + width="lg" | ||
510 | + showSearch | ||
511 | + label={ | ||
512 | + <> | ||
513 | + <span>客户</span> | ||
514 | + <span | ||
515 | + className="pl-2 text-xs text-[#1677ff] cursor-pointer" | ||
516 | + onClick={() => { | ||
517 | + let customerId = form.getFieldValue('erpCustomerId'); | ||
518 | + if (typeof customerId === 'string') { | ||
519 | + setCustomer({ ...customer, id: customerId }); | ||
520 | + } else { | ||
521 | + setCustomer({ ...customer, id: customerId.id }); | ||
522 | + } | ||
523 | + setKingdeeCstomerModalVisible(true); | ||
524 | + }} | ||
525 | + > | ||
526 | + 编辑客户信息 | ||
527 | + </span> | ||
528 | + </> | ||
529 | + } | ||
530 | + placeholder="请选择客户" | ||
531 | + rules={[{ required: true, message: '客户必填' }]} | ||
532 | + onChange={(_, option) => { | ||
533 | + //新增客户 | ||
534 | + if (option.type === 'add') { | ||
535 | + setCustomer({ name: option.name }); | ||
536 | + setKingdeeCstomerModalVisible(true); | ||
537 | + return; | ||
538 | + } | ||
539 | + autoFillCustomerContactSelectOptions(option.id); | ||
540 | + }} | ||
541 | + initialValue={{ | ||
542 | + label: data?.erpCustomerName, | ||
543 | + value: data?.customerId, | ||
544 | + id: data?.customerId, | ||
545 | + }} | ||
546 | + fieldProps={{ | ||
547 | + optionItemRender(item) { | ||
548 | + if (item.type === 'add') { | ||
549 | + return ( | ||
550 | + <div title={item.name + '(新增客户)'}> | ||
551 | + <span style={{ color: '#333333' }}>{item.name}</span> | ||
552 | + {' | '} | ||
553 | + <span style={{ color: 'orange' }}>自定义</span> | ||
554 | + </div> | ||
555 | + ); | ||
556 | + } | ||
475 | return ( | 557 | return ( |
476 | - <div title={item.name + '(新增客户)'}> | 558 | + <div |
559 | + title={ | ||
560 | + item.name + | ||
561 | + ' | ' + | ||
562 | + item.customerContactNumber + | ||
563 | + ' | ' + | ||
564 | + (item.customerShippingAddress === undefined | ||
565 | + ? '无地址' | ||
566 | + : item.customerShippingAddress) + | ||
567 | + ' | ' + | ||
568 | + item.institutionContactName + | ||
569 | + ' | ' + | ||
570 | + item.institution | ||
571 | + } | ||
572 | + > | ||
477 | <span style={{ color: '#333333' }}>{item.name}</span> | 573 | <span style={{ color: '#333333' }}>{item.name}</span> |
478 | - {' | '} | ||
479 | - <span style={{ color: 'orange' }}>自定义</span> | ||
480 | </div> | 574 | </div> |
481 | ); | 575 | ); |
576 | + }, | ||
577 | + }} | ||
578 | + debounceTime={1000} | ||
579 | + request={async (value, {}) => { | ||
580 | + const keywords = value.keyWords; | ||
581 | + const res = await postKingdeeRepCustomer({ | ||
582 | + data: { search: keywords }, | ||
583 | + }); | ||
584 | + let options = res?.rows?.map((c: any) => { | ||
585 | + return { | ||
586 | + ...c, | ||
587 | + label: c.name, | ||
588 | + value: c.id, | ||
589 | + key: c.id, | ||
590 | + }; | ||
591 | + }); | ||
592 | + | ||
593 | + //第一个商品默认为要新增客户 | ||
594 | + if (keywords.trim() !== '') { | ||
595 | + options.unshift({ | ||
596 | + name: keywords, | ||
597 | + type: 'add', | ||
598 | + label: keywords, | ||
599 | + value: 3.1415926, | ||
600 | + key: keywords, | ||
601 | + }); | ||
482 | } | 602 | } |
483 | - return ( | ||
484 | - <div | ||
485 | - title={ | ||
486 | - item.name + | ||
487 | - ' | ' + | ||
488 | - item.customerContactNumber + | ||
489 | - ' | ' + | ||
490 | - (item.customerShippingAddress === undefined | ||
491 | - ? '无地址' | ||
492 | - : item.customerShippingAddress) + | ||
493 | - ' | ' + | ||
494 | - item.institutionContactName + | ||
495 | - ' | ' + | ||
496 | - item.institution | ||
497 | - } | ||
498 | - > | ||
499 | - <span style={{ color: '#333333' }}>{item.name}</span> | ||
500 | - </div> | ||
501 | - ); | ||
502 | - }, | ||
503 | - }} | ||
504 | - debounceTime={1000} | ||
505 | - request={async (value, { params }) => { | ||
506 | - const keywords = value.keyWords; | ||
507 | - const res = await postKingdeeRepCustomer({ | ||
508 | - data: { search: keywords }, | ||
509 | - params: params, | ||
510 | - }); | ||
511 | - console.log(res); | ||
512 | - let options = res?.rows?.map((c: any) => { | ||
513 | - return { | ||
514 | - ...c, | ||
515 | - label: c.name, | ||
516 | - value: c.id, | ||
517 | - key: c.id, | ||
518 | - }; | ||
519 | - }); | 603 | + return options; |
604 | + }} | ||
605 | + /> | ||
606 | + <ProFormSelect | ||
607 | + key="customerName" | ||
608 | + label="收货人" | ||
609 | + width="lg" | ||
610 | + showSearch | ||
611 | + name="customerName" | ||
612 | + placeholder="请选择收货人" | ||
613 | + rules={[{ required: true, message: '收货人必填' }]} | ||
614 | + onChange={(_, option) => { | ||
615 | + autoFillCustomerInfo(option); | ||
616 | + }} | ||
617 | + initialValue={data.contactAddress} | ||
618 | + options={productCustomerContactOptions} | ||
619 | + // fieldProps={{ | ||
620 | + // optionItemRender(item) { | ||
621 | + // if (item.type === 'add') { | ||
622 | + // return ( | ||
623 | + // <div title={item.name + '(新增收货人)'}> | ||
624 | + // <span style={{ color: '#333333' }}>{item.name}</span> | ||
625 | + // {' | '} | ||
626 | + // <span style={{ color: 'orange' }}>自定义</span> | ||
627 | + // </div> | ||
628 | + // ); | ||
629 | + // } | ||
630 | + // return ( | ||
631 | + // <div | ||
632 | + // title={ | ||
633 | + // item.name + | ||
634 | + // ' | ' + | ||
635 | + // item.customerContactNumber + | ||
636 | + // ' | ' + | ||
637 | + // (item.customerShippingAddress === undefined | ||
638 | + // ? '无地址' | ||
639 | + // : item.customerShippingAddress) + | ||
640 | + // ' | ' + | ||
641 | + // item.institutionContactName + | ||
642 | + // ' | ' + | ||
643 | + // item.institution | ||
644 | + // } | ||
645 | + // > | ||
646 | + // <span style={{ color: '#333333' }}>{item.name}</span> | ||
647 | + // {' | '} | ||
648 | + // <span style={{ color: '#339999' }}> | ||
649 | + // {item.customerContactNumber === undefined | ||
650 | + // ? '无电话号码' | ||
651 | + // : item.customerContactNumber} | ||
652 | + // </span> | ||
653 | + // {' | '} | ||
654 | + // <span style={{ color: '#666666' }}> | ||
655 | + // {item.customerShippingAddress === undefined | ||
656 | + // ? '无地址' | ||
657 | + // : item.customerShippingAddress} | ||
658 | + // </span> | ||
659 | + // {' | '} | ||
660 | + // <span style={{ color: '#666666' }}> | ||
661 | + // {item.institutionContactName === undefined | ||
662 | + // ? '无课题组' | ||
663 | + // : item.institutionContactName} | ||
664 | + // </span> | ||
665 | + // {' | '} | ||
666 | + // <span style={{ color: '#666666' }}> | ||
667 | + // {item.institution === undefined ? '无单位' : item.institution} | ||
668 | + // </span> | ||
669 | + // </div> | ||
670 | + // ); | ||
671 | + // }, | ||
672 | + // }} | ||
673 | + // debounceTime={1000} | ||
674 | + // request={async (value, { params }) => { | ||
675 | + // const keywords = value.keyWords; | ||
676 | + // const res = await postKingdeeRepCustomer({ | ||
677 | + // data: { search: keywords }, | ||
678 | + // params: params, | ||
679 | + // }); | ||
680 | + // console.log(res) | ||
681 | + // let options = res?.rows?.map((c: any) => { | ||
682 | + // return { | ||
683 | + // ...c, | ||
684 | + // label: c.name, | ||
685 | + // value: c.id, | ||
686 | + // key: c.id, | ||
687 | + // }; | ||
688 | + // }); | ||
520 | 689 | ||
521 | - //第一个商品默认为要新增客户 | ||
522 | - if (keywords.trim() !== '') { | ||
523 | - options.unshift({ | ||
524 | - name: keywords, | ||
525 | - type: 'add', | ||
526 | - label: keywords, | ||
527 | - value: 3.1415926, | ||
528 | - key: keywords, | ||
529 | - }); | ||
530 | - } | ||
531 | - return options; | ||
532 | - }} | ||
533 | - /> | ||
534 | - <ProFormSelect | ||
535 | - key="customerName" | ||
536 | - label="收货人" | ||
537 | - width="lg" | ||
538 | - showSearch | ||
539 | - name="customerName" | ||
540 | - // options={options} | ||
541 | - placeholder="请输入收货人" | ||
542 | - rules={[{ required: true, message: '收货人必填' }]} | ||
543 | - onChange={(_, option) => { | ||
544 | - autoFillCustomerInfo(option); | ||
545 | - }} | ||
546 | - options={productCustomerContactOptions} | ||
547 | - // fieldProps={{ | ||
548 | - // optionItemRender(item) { | ||
549 | - // if (item.type === 'add') { | ||
550 | - // return ( | ||
551 | - // <div title={item.name + '(新增收货人)'}> | ||
552 | - // <span style={{ color: '#333333' }}>{item.name}</span> | ||
553 | - // {' | '} | ||
554 | - // <span style={{ color: 'orange' }}>自定义</span> | ||
555 | - // </div> | ||
556 | - // ); | ||
557 | - // } | ||
558 | - // return ( | ||
559 | - // <div | ||
560 | - // title={ | ||
561 | - // item.name + | ||
562 | - // ' | ' + | ||
563 | - // item.customerContactNumber + | ||
564 | - // ' | ' + | ||
565 | - // (item.customerShippingAddress === undefined | ||
566 | - // ? '无地址' | ||
567 | - // : item.customerShippingAddress) + | ||
568 | - // ' | ' + | ||
569 | - // item.institutionContactName + | ||
570 | - // ' | ' + | ||
571 | - // item.institution | ||
572 | - // } | ||
573 | - // > | ||
574 | - // <span style={{ color: '#333333' }}>{item.name}</span> | ||
575 | - // {' | '} | ||
576 | - // <span style={{ color: '#339999' }}> | ||
577 | - // {item.customerContactNumber === undefined | ||
578 | - // ? '无电话号码' | ||
579 | - // : item.customerContactNumber} | ||
580 | - // </span> | ||
581 | - // {' | '} | ||
582 | - // <span style={{ color: '#666666' }}> | ||
583 | - // {item.customerShippingAddress === undefined | ||
584 | - // ? '无地址' | ||
585 | - // : item.customerShippingAddress} | ||
586 | - // </span> | ||
587 | - // {' | '} | ||
588 | - // <span style={{ color: '#666666' }}> | ||
589 | - // {item.institutionContactName === undefined | ||
590 | - // ? '无课题组' | ||
591 | - // : item.institutionContactName} | ||
592 | - // </span> | ||
593 | - // {' | '} | ||
594 | - // <span style={{ color: '#666666' }}> | ||
595 | - // {item.institution === undefined ? '无单位' : item.institution} | ||
596 | - // </span> | ||
597 | - // </div> | ||
598 | - // ); | ||
599 | - // }, | ||
600 | - // }} | ||
601 | - // debounceTime={1000} | ||
602 | - // request={async (value, { params }) => { | ||
603 | - // const keywords = value.keyWords; | ||
604 | - // const res = await postKingdeeRepCustomer({ | ||
605 | - // data: { search: keywords }, | ||
606 | - // params: params, | ||
607 | - // }); | ||
608 | - // console.log(res) | ||
609 | - // let options = res?.rows?.map((c: any) => { | ||
610 | - // return { | ||
611 | - // ...c, | ||
612 | - // label: c.name, | ||
613 | - // value: c.id, | ||
614 | - // key: c.id, | ||
615 | - // }; | ||
616 | - // }); | 690 | + // //第一个商品默认为要新增的商品 |
691 | + // if (keywords.trim() !== '') { | ||
692 | + // options.unshift({ | ||
693 | + // name: keywords, | ||
694 | + // type: 'add', | ||
695 | + // label: keywords, | ||
696 | + // value: 3.1415926, | ||
697 | + // key: keywords, | ||
698 | + // }); | ||
699 | + // } | ||
700 | + // return options; | ||
701 | + // }} | ||
702 | + /> | ||
703 | + <ProFormText | ||
704 | + width="lg" | ||
705 | + key="customerContactNumber" | ||
706 | + name="customerContactNumber" | ||
707 | + label="联系方式" | ||
708 | + placeholder="请输入联系方式" | ||
709 | + rules={[{ required: true, message: '联系方式必填' }]} | ||
710 | + disabled | ||
711 | + /> | ||
712 | + <ProFormText | ||
713 | + width="lg" | ||
714 | + key="institution" | ||
715 | + name="institution" | ||
716 | + label="单位" | ||
717 | + placeholder="请输入单位" | ||
718 | + rules={[{ required: true, message: '单位必填' }]} | ||
719 | + disabled | ||
720 | + /> | ||
721 | + <ProFormText | ||
722 | + width="lg" | ||
723 | + key="institutionContactName" | ||
724 | + name="institutionContactName" | ||
725 | + label="课题组" | ||
726 | + placeholder="请输入课题组" | ||
727 | + rules={[{ required: true, message: '课题组必填' }]} | ||
728 | + disabled | ||
729 | + /> | ||
730 | + <ProFormTextArea | ||
731 | + width="lg" | ||
732 | + key="customerShippingAddress" | ||
733 | + name="customerShippingAddress" | ||
734 | + label="收货地址" | ||
735 | + placeholder="请输入收货地址" | ||
736 | + rules={[{ required: true, message: '收货地址必填' }]} | ||
737 | + disabled | ||
738 | + /> | ||
739 | + <div id="total-payment"> | ||
740 | + <ProFormDigit | ||
741 | + name="totalPayment" | ||
742 | + width="lg" | ||
743 | + key="totalPayment" | ||
744 | + label="支付总额(¥)" | ||
745 | + rules={[{ required: true, message: '支付总额必填' }]} | ||
746 | + tooltip="点击计算,合计所有子订单金额" | ||
747 | + fieldProps={{ | ||
748 | + addonAfter: ( | ||
749 | + <Button | ||
750 | + className="rounded-l-none" | ||
751 | + type="primary" | ||
752 | + onClick={computeTotalPayment} | ||
753 | + > | ||
754 | + 计算 | ||
755 | + </Button> | ||
756 | + ), | ||
757 | + }} | ||
758 | + // disabled={mainInfoDisbled} | ||
759 | + /> | ||
760 | + </div> | ||
617 | 761 | ||
618 | - // //第一个商品默认为要新增的商品 | ||
619 | - // if (keywords.trim() !== '') { | ||
620 | - // options.unshift({ | ||
621 | - // name: keywords, | ||
622 | - // type: 'add', | ||
623 | - // label: keywords, | ||
624 | - // value: 3.1415926, | ||
625 | - // key: keywords, | ||
626 | - // }); | ||
627 | - // } | ||
628 | - // return options; | ||
629 | - // }} | ||
630 | - /> | ||
631 | - <ProFormText | ||
632 | - width="lg" | ||
633 | - key="customerContactNumber" | ||
634 | - name="customerContactNumber" | ||
635 | - label="联系方式" | ||
636 | - placeholder="请输入联系方式" | ||
637 | - rules={[{ required: true, message: '联系方式必填' }]} | ||
638 | - disabled | ||
639 | - /> | ||
640 | - <ProFormText | ||
641 | - width="lg" | ||
642 | - key="institution" | ||
643 | - name="institution" | ||
644 | - label="单位" | ||
645 | - placeholder="请输入单位" | ||
646 | - rules={[{ required: true, message: '单位必填' }]} | ||
647 | - disabled | ||
648 | - /> | ||
649 | - <ProFormText | ||
650 | - width="lg" | ||
651 | - key="institutionContactName" | ||
652 | - name="institutionContactName" | ||
653 | - label="课题组" | ||
654 | - placeholder="请输入课题组" | ||
655 | - rules={[{ required: true, message: '课题组必填' }]} | ||
656 | - disabled | ||
657 | - /> | ||
658 | - <ProFormTextArea | ||
659 | - width="lg" | ||
660 | - key="customerShippingAddress" | ||
661 | - name="customerShippingAddress" | ||
662 | - label="收货地址" | ||
663 | - placeholder="请输入收货地址" | ||
664 | - rules={[{ required: true, message: '收货地址必填' }]} | ||
665 | - disabled | ||
666 | - /> | ||
667 | - <div id="total-payment"> | ||
668 | - <ProFormDigit | ||
669 | - name="totalPayment" | 762 | + <ProFormSelect |
763 | + placeholder="请输入支付渠道" | ||
764 | + name="paymentChannel" | ||
670 | width="lg" | 765 | width="lg" |
671 | - key="totalPayment" | ||
672 | - label="支付总额(¥)" | ||
673 | - rules={[{ required: true, message: '支付总额必填' }]} | ||
674 | - tooltip="点击计算,合计所有子订单金额" | ||
675 | - fieldProps={{ | ||
676 | - addonAfter: ( | ||
677 | - <Button | ||
678 | - className="rounded-l-none" | ||
679 | - type="primary" | ||
680 | - onClick={computeTotalPayment} | ||
681 | - > | ||
682 | - 计算 | ||
683 | - </Button> | ||
684 | - ), | 766 | + key="paymentChannel" |
767 | + label="支付渠道" | ||
768 | + options={enumToSelect(PAYMENT_CHANNEL_OPTIONS)} | ||
769 | + rules={[{ required: true, message: '支付渠道必填' }]} | ||
770 | + // disabled={mainInfoDisbled} | ||
771 | + /> | ||
772 | + <ProFormSelect | ||
773 | + placeholder="请输入支付方式" | ||
774 | + name="paymentMethod" | ||
775 | + width="lg" | ||
776 | + key="paymentMethod" | ||
777 | + label="支付方式" | ||
778 | + options={enumToSelect(PAYMENT_METHOD_OPTIONS)} | ||
779 | + rules={[{ required: true, message: '支付方式必填' }]} | ||
780 | + // disabled={mainInfoDisbled} | ||
781 | + /> | ||
782 | + <ProFormSelect | ||
783 | + placeholder="选择是否需要开票" | ||
784 | + name="invoicingStatus" | ||
785 | + width="lg" | ||
786 | + key="invoicingStatus" | ||
787 | + label="是否需要开票" | ||
788 | + options={getInvoicingSelect()} | ||
789 | + // disabled={mainInfoDisbled} | ||
790 | + onChange={(_, option) => { | ||
791 | + setInvoicingStatus(option.value); | ||
792 | + if (option.value === 'UN_INVOICE') { | ||
793 | + form.setFieldValue('invoiceIdentificationNumber', undefined); | ||
794 | + form.setFieldValue('bank', undefined); | ||
795 | + form.setFieldValue('bankAccountNumber', undefined); | ||
796 | + } | ||
685 | }} | 797 | }} |
798 | + rules={[{ required: true, message: '是否需要开票必填' }]} | ||
799 | + /> | ||
800 | + <ProFormText | ||
801 | + width="lg" | ||
802 | + name="invoiceIdentificationNumber" | ||
803 | + label="开票信息" | ||
804 | + key="invoiceIdentificationNumber" | ||
686 | // disabled={mainInfoDisbled} | 805 | // disabled={mainInfoDisbled} |
806 | + hidden={invoicingStatus === 'UN_INVOICE'} | ||
807 | + placeholder="请输入开票信息" | ||
808 | + rules={[ | ||
809 | + { | ||
810 | + required: invoicingStatus === 'UN_INVOICE' ? false : true, | ||
811 | + message: '开票信息必填', | ||
812 | + }, | ||
813 | + ]} | ||
687 | /> | 814 | /> |
688 | - </div> | ||
689 | 815 | ||
690 | - <ProFormSelect | ||
691 | - placeholder="请输入支付渠道" | ||
692 | - name="paymentChannel" | ||
693 | - width="lg" | ||
694 | - key="paymentChannel" | ||
695 | - label="支付渠道" | ||
696 | - options={enumToSelect(PAYMENT_CHANNEL_OPTIONS)} | ||
697 | - rules={[{ required: true, message: '支付渠道必填' }]} | ||
698 | - // disabled={mainInfoDisbled} | ||
699 | - /> | ||
700 | - <ProFormSelect | ||
701 | - placeholder="请输入支付方式" | ||
702 | - name="paymentMethod" | ||
703 | - width="lg" | ||
704 | - key="paymentMethod" | ||
705 | - label="支付方式" | ||
706 | - options={enumToSelect(PAYMENT_METHOD_OPTIONS)} | ||
707 | - rules={[{ required: true, message: '支付方式必填' }]} | ||
708 | - // disabled={mainInfoDisbled} | ||
709 | - /> | ||
710 | - <ProFormSelect | ||
711 | - placeholder="选择是否需要开票" | ||
712 | - name="invoicingStatus" | ||
713 | - width="lg" | ||
714 | - key="invoicingStatus" | ||
715 | - label="是否需要开票" | ||
716 | - options={getInvoicingSelect()} | ||
717 | - // disabled={mainInfoDisbled} | ||
718 | - onChange={(_, option) => { | ||
719 | - setInvoicingStatus(option.value); | ||
720 | - if (option.value === 'UN_INVOICE') { | ||
721 | - form.setFieldValue('invoiceIdentificationNumber', undefined); | ||
722 | - form.setFieldValue('bank', undefined); | ||
723 | - form.setFieldValue('bankAccountNumber', undefined); | ||
724 | - } | ||
725 | - }} | ||
726 | - rules={[{ required: true, message: '是否需要开票必填' }]} | ||
727 | - /> | ||
728 | - <ProFormText | ||
729 | - width="lg" | ||
730 | - name="invoiceIdentificationNumber" | ||
731 | - label="开票信息" | ||
732 | - key="invoiceIdentificationNumber" | ||
733 | - // disabled={mainInfoDisbled} | ||
734 | - hidden={invoicingStatus === 'UN_INVOICE'} | ||
735 | - placeholder="请输入开票信息" | ||
736 | - rules={[ | ||
737 | - { | ||
738 | - required: invoicingStatus === 'UN_INVOICE' ? false : true, | ||
739 | - message: '开票信息必填', | ||
740 | - }, | ||
741 | - ]} | ||
742 | - /> | ||
743 | - | ||
744 | - {getUserInfo().roleSmallVO?.code === 'admin' ? ( | ||
745 | - <ProFormDateTimePicker | 816 | + {getUserInfo().roleSmallVO?.code === 'admin' ? ( |
817 | + <ProFormDateTimePicker | ||
818 | + width="lg" | ||
819 | + key="invoicingTime" | ||
820 | + name="invoicingTime" | ||
821 | + // disabled={mainInfoDisbled} | ||
822 | + hidden={invoicingStatus === 'UN_INVOICE'} | ||
823 | + label="开票时间" | ||
824 | + placeholder="请输入开票时间" | ||
825 | + /> | ||
826 | + ) : ( | ||
827 | + '' | ||
828 | + )} | ||
829 | + <ProFormText | ||
746 | width="lg" | 830 | width="lg" |
747 | - key="invoicingTime" | ||
748 | - name="invoicingTime" | 831 | + name="bank" |
832 | + key="bank" | ||
833 | + label="开户银行" | ||
749 | // disabled={mainInfoDisbled} | 834 | // disabled={mainInfoDisbled} |
750 | hidden={invoicingStatus === 'UN_INVOICE'} | 835 | hidden={invoicingStatus === 'UN_INVOICE'} |
751 | - label="开票时间" | ||
752 | - placeholder="请输入开票时间" | 836 | + placeholder="请输入开户银行" |
837 | + /> | ||
838 | + <ProFormText | ||
839 | + width="lg" | ||
840 | + key="bankAccountNumber" | ||
841 | + name="bankAccountNumber" | ||
842 | + hidden={invoicingStatus === 'UN_INVOICE'} | ||
843 | + label="银行账号" | ||
844 | + // disabled={mainInfoDisbled} | ||
845 | + placeholder="请输入银行账号" | ||
846 | + /> | ||
847 | + <ProFormTextArea | ||
848 | + width="lg" | ||
849 | + name="notes" | ||
850 | + label="备注" | ||
851 | + key="notes" | ||
852 | + // disabled={mainInfoDisbled} | ||
853 | + placeholder="请输入备注" | ||
854 | + rules={[ | ||
855 | + { | ||
856 | + max: 120, // 最大长度为120个字符 | ||
857 | + message: '备注不能超过120个字符', | ||
858 | + }, | ||
859 | + ]} | ||
753 | /> | 860 | /> |
754 | - ) : ( | ||
755 | - '' | ||
756 | - )} | ||
757 | - <ProFormText | ||
758 | - width="lg" | ||
759 | - name="bank" | ||
760 | - key="bank" | ||
761 | - label="开户银行" | ||
762 | - // disabled={mainInfoDisbled} | ||
763 | - hidden={invoicingStatus === 'UN_INVOICE'} | ||
764 | - placeholder="请输入开户银行" | ||
765 | - /> | ||
766 | - <ProFormText | ||
767 | - width="lg" | ||
768 | - key="bankAccountNumber" | ||
769 | - name="bankAccountNumber" | ||
770 | - hidden={invoicingStatus === 'UN_INVOICE'} | ||
771 | - label="银行账号" | ||
772 | - // disabled={mainInfoDisbled} | ||
773 | - placeholder="请输入银行账号" | ||
774 | - /> | ||
775 | - <ProFormTextArea | ||
776 | - width="lg" | ||
777 | - name="notes" | ||
778 | - label="备注" | ||
779 | - key="notes" | ||
780 | - // disabled={mainInfoDisbled} | ||
781 | - placeholder="请输入备注" | ||
782 | - rules={[ | ||
783 | - { | ||
784 | - max: 120, // 最大长度为120个字符 | ||
785 | - message: '备注不能超过120个字符', | ||
786 | - }, | ||
787 | - ]} | ||
788 | - /> | ||
789 | 861 | ||
790 | - <h2>商品信息</h2> | ||
791 | - <ProFormList | ||
792 | - creatorButtonProps={{ disabled: false }} | ||
793 | - name="list" | ||
794 | - label="" | ||
795 | - copyIconProps={false} //复制按钮不显示 | ||
796 | - initialValue={[ | ||
797 | - { | ||
798 | - productCode: '', | ||
799 | - productName: '', | ||
800 | - quantity: '', | ||
801 | - productPrice: '', | ||
802 | - parameters: '', | ||
803 | - subOrderPayment: '', | ||
804 | - }, | ||
805 | - ]} | ||
806 | - actionGuard={{ | ||
807 | - beforeRemoveRow: async (index) => { | ||
808 | - return new Promise((resolve) => { | ||
809 | - if (index === 0) { | ||
810 | - message.error('第一行数据不能删除'); | ||
811 | - resolve(false); | ||
812 | - return; | ||
813 | - } | ||
814 | - resolve(true); | ||
815 | - }); | ||
816 | - }, | ||
817 | - }} | ||
818 | - itemRender={(doms, listMeta) => { | ||
819 | - if (optType('edit')) { | ||
820 | - let i = 0; | ||
821 | - let defaultFileList = listMeta.record?.listAnnex?.map((annex) => { | ||
822 | - return { | ||
823 | - uid: i++, | ||
824 | - name: annex, | ||
825 | - status: 'uploaded', | ||
826 | - url: annex, | ||
827 | - response: { data: [annex] }, | ||
828 | - }; | ||
829 | - }); | ||
830 | - fileList[listMeta.index] = defaultFileList; | ||
831 | - } | ||
832 | - let itemFileList = fileList[listMeta.index]; | ||
833 | - return ( | ||
834 | - <ProCard | ||
835 | - bordered | ||
836 | - extra={doms.action} | ||
837 | - title={'商品' + (listMeta.index + 1)} | ||
838 | - style={{ | ||
839 | - marginBlockEnd: 8, | ||
840 | - }} | ||
841 | - > | ||
842 | - {[ | ||
843 | - <ProFormText | ||
844 | - key={'material' + listMeta.index} | ||
845 | - name="materialId" | ||
846 | - hidden | ||
847 | - ></ProFormText>, | ||
848 | - <ProFormSelect | ||
849 | - key="key" | ||
850 | - label="商品名称" | ||
851 | - width="lg" | ||
852 | - showSearch | ||
853 | - name="productName" | ||
854 | - // options={options} | ||
855 | - placeholder="请搜索商品" | ||
856 | - rules={[{ required: true, message: '商品名称必填' }]} | ||
857 | - onChange={(_, option) => { | ||
858 | - autoFillProductInfo(option, listMeta, listMeta.index); | ||
859 | - }} | ||
860 | - fieldProps={{ | ||
861 | - optionItemRender(item) { | ||
862 | - if (item.type === 'add') { | 862 | + <h2>商品信息</h2> |
863 | + <ProFormList | ||
864 | + creatorButtonProps={{ disabled: false }} | ||
865 | + name="list" | ||
866 | + label="" | ||
867 | + copyIconProps={false} //复制按钮不显示 | ||
868 | + initialValue={[ | ||
869 | + { | ||
870 | + productCode: '', | ||
871 | + productName: '', | ||
872 | + quantity: '', | ||
873 | + productPrice: '', | ||
874 | + parameters: '', | ||
875 | + subOrderPayment: '', | ||
876 | + }, | ||
877 | + ]} | ||
878 | + actionGuard={{ | ||
879 | + beforeRemoveRow: async (index) => { | ||
880 | + return new Promise((resolve) => { | ||
881 | + if (index === 0) { | ||
882 | + message.error('第一行数据不能删除'); | ||
883 | + resolve(false); | ||
884 | + return; | ||
885 | + } | ||
886 | + resolve(true); | ||
887 | + }); | ||
888 | + }, | ||
889 | + }} | ||
890 | + itemRender={(doms, listMeta) => { | ||
891 | + if (optType('edit')) { | ||
892 | + let i = 0; | ||
893 | + let defaultFileList = listMeta.record?.listAnnex?.map((annex) => { | ||
894 | + return { | ||
895 | + uid: i++, | ||
896 | + name: annex, | ||
897 | + status: 'uploaded', | ||
898 | + url: annex, | ||
899 | + response: { data: [annex] }, | ||
900 | + }; | ||
901 | + }); | ||
902 | + fileList[listMeta.index] = defaultFileList; | ||
903 | + } | ||
904 | + let itemFileList = fileList[listMeta.index]; | ||
905 | + return ( | ||
906 | + <ProCard | ||
907 | + bordered | ||
908 | + extra={doms.action} | ||
909 | + title={'商品' + (listMeta.index + 1)} | ||
910 | + style={{ | ||
911 | + marginBlockEnd: 8, | ||
912 | + }} | ||
913 | + > | ||
914 | + {[ | ||
915 | + <ProFormText | ||
916 | + key={'material' + listMeta.index} | ||
917 | + name="materialId" | ||
918 | + hidden | ||
919 | + ></ProFormText>, | ||
920 | + <ProFormSelect | ||
921 | + key="key" | ||
922 | + label="商品名称" | ||
923 | + width="lg" | ||
924 | + showSearch | ||
925 | + name="productName" | ||
926 | + // options={options} | ||
927 | + placeholder="请搜索商品" | ||
928 | + rules={[{ required: true, message: '商品名称必填' }]} | ||
929 | + onChange={(_, option) => { | ||
930 | + autoFillProductInfo(option, listMeta, listMeta.index); | ||
931 | + }} | ||
932 | + initialValue={{ | ||
933 | + label: listMeta?.record?.productName, | ||
934 | + value: listMeta?.record?.materialId, | ||
935 | + }} | ||
936 | + fieldProps={{ | ||
937 | + optionItemRender(item) { | ||
938 | + if (item.type === 'add') { | ||
939 | + return ( | ||
940 | + <div title={item.name + '(新增商品信息)'}> | ||
941 | + <span style={{ color: '#333333' }}> | ||
942 | + {item.name} | ||
943 | + </span> | ||
944 | + {' | '} | ||
945 | + <span style={{ color: 'orange' }}>新增商品</span> | ||
946 | + </div> | ||
947 | + ); | ||
948 | + } | ||
863 | return ( | 949 | return ( |
864 | - <div title={item.name + '(新增商品信息)'}> | 950 | + <div |
951 | + title={ | ||
952 | + item.label + | ||
953 | + ' | ' + | ||
954 | + (item.model === undefined | ||
955 | + ? '无参数' | ||
956 | + : item.model) + | ||
957 | + ' | ' + | ||
958 | + item.base_unit_name | ||
959 | + } | ||
960 | + > | ||
865 | <span style={{ color: '#333333' }}> | 961 | <span style={{ color: '#333333' }}> |
866 | - {item.name} | 962 | + {item.label} |
963 | + </span> | ||
964 | + {' | '} | ||
965 | + <span style={{ color: '#339999' }}> | ||
966 | + {item.model === undefined ? '无参数' : item.model} | ||
867 | </span> | 967 | </span> |
868 | {' | '} | 968 | {' | '} |
869 | - <span style={{ color: 'orange' }}>新增商品</span> | 969 | + <span style={{ color: '#666666' }}> |
970 | + {item.base_unit_name === undefined | ||
971 | + ? '无单位' | ||
972 | + : item.base_unit_name} | ||
973 | + </span> | ||
870 | </div> | 974 | </div> |
871 | ); | 975 | ); |
872 | - } | ||
873 | - return ( | ||
874 | - <div | ||
875 | - title={ | ||
876 | - item.label + | ||
877 | - ' | ' + | ||
878 | - (item.model === undefined ? '无参数' : item.model) + | ||
879 | - ' | ' + | ||
880 | - item.base_unit_name | ||
881 | - } | ||
882 | - > | ||
883 | - <span style={{ color: '#333333' }}>{item.label}</span> | ||
884 | - {' | '} | ||
885 | - <span style={{ color: '#339999' }}> | ||
886 | - {item.model === undefined ? '无参数' : item.model} | ||
887 | - </span> | ||
888 | - {' | '} | ||
889 | - <span style={{ color: '#666666' }}> | ||
890 | - {item.base_unit_name === undefined | ||
891 | - ? '无单位' | ||
892 | - : item.base_unit_name} | ||
893 | - </span> | ||
894 | - </div> | ||
895 | - ); | ||
896 | - }, | ||
897 | - }} | ||
898 | - debounceTime={1000} | ||
899 | - request={async (value) => { | ||
900 | - const keywords = value.keyWords; | ||
901 | - const res = await postKingdeeRepMaterial({ | ||
902 | - data: { search: keywords }, | ||
903 | - }); | ||
904 | - let options = res?.rows?.map((p: any) => { | ||
905 | - return { | ||
906 | - ...p, | ||
907 | - label: p.name, | ||
908 | - value: p.id + '|' + p.name, | ||
909 | - key: p.id, | ||
910 | - }; | ||
911 | - }); | ||
912 | - | ||
913 | - //第一个商品默认为要新增的商品 | ||
914 | - if (keywords.trim() !== '') { | ||
915 | - options.unshift({ | ||
916 | - productName: keywords, | ||
917 | - type: 'add', | ||
918 | - label: keywords, | ||
919 | - value: 13 + '|' + keywords, | ||
920 | - key: keywords, | 976 | + }, |
977 | + }} | ||
978 | + debounceTime={1000} | ||
979 | + request={async (value) => { | ||
980 | + const keywords = value.keyWords; | ||
981 | + const res = await postKingdeeRepMaterial({ | ||
982 | + data: { search: keywords }, | ||
983 | + }); | ||
984 | + let options = res?.rows?.map((p: any) => { | ||
985 | + return { | ||
986 | + ...p, | ||
987 | + label: p.name, | ||
988 | + value: p.id + '|' + p.name, | ||
989 | + key: p.id, | ||
990 | + }; | ||
921 | }); | 991 | }); |
922 | - } | ||
923 | - return options; | ||
924 | - }} | ||
925 | - />, | ||
926 | - <ProFormText | ||
927 | - key={'productCode' + listMeta.index} | ||
928 | - width="lg" | ||
929 | - name="productCode" | ||
930 | - disabled | ||
931 | - label={ | ||
932 | - <> | ||
933 | - <span>商品编码</span> | ||
934 | - <span className="pl-2 text-xs text-gray-400"> | ||
935 | - 新增商品时,商品编码由系统自动生成 | ||
936 | - </span> | ||
937 | - </> | ||
938 | - } | ||
939 | - placeholder="未输入商品名称" | ||
940 | - />, | ||
941 | - // <ProFormSelect | ||
942 | - // key="inv_stock" | ||
943 | - // placeholder="请选择仓库" | ||
944 | - // name="invStockId" | ||
945 | - // width="lg" | ||
946 | - // label="仓库" | ||
947 | - // options={productInvStockOptionsList[listMeta.index]} | ||
948 | - // />, | ||
949 | - <ProFormText | ||
950 | - key={'parameters' + listMeta.index} | ||
951 | - width="lg" | ||
952 | - name="parameters" | ||
953 | - label="商品参数" | ||
954 | - placeholder="请输入商品参数" | ||
955 | - rules={[{ required: true, message: '商品参数必填' }]} | ||
956 | - disabled | ||
957 | - />, | ||
958 | - <ProFormDigit | ||
959 | - key={'quantity' + listMeta.index} | ||
960 | - width="lg" | ||
961 | - name="quantity" | ||
962 | - label="商品数量" | ||
963 | - fieldProps={{ | ||
964 | - onChange: (value) => { | ||
965 | - listMeta.record.quantity = value; | ||
966 | - computeSubOrderPayment(listMeta); | ||
967 | - }, | ||
968 | - }} | ||
969 | - placeholder="请输入商品数量" | ||
970 | - rules={[{ required: true, message: '商品数量必填' }]} | ||
971 | - />, | ||
972 | - | ||
973 | - <ProFormDigit | ||
974 | - key={'productPrice' + listMeta.index} | ||
975 | - width="lg" | ||
976 | - name="productPrice" | ||
977 | - label="商品单价" | ||
978 | - fieldProps={{ | ||
979 | - onChange: (value) => { | ||
980 | - listMeta.record.productPrice = value; | ||
981 | - computeSubOrderPayment(listMeta); | ||
982 | - }, | ||
983 | - }} | ||
984 | - placeholder="请输入商品单价" | ||
985 | - rules={[{ required: true, message: '商品单价必填' }]} | ||
986 | - />, | ||
987 | 992 | ||
988 | - <ProFormSelect | ||
989 | - key="erpUnitId" | ||
990 | - placeholder="请选择单位" | ||
991 | - name="erpUnitId" | ||
992 | - width="lg" | ||
993 | - label="单位" | ||
994 | - options={productUnitOptionsList[listMeta.index]} | ||
995 | - rules={[{ required: true, message: '商品单位必填' }]} | ||
996 | - />, | ||
997 | - <ProFormText | ||
998 | - key={'unit' + listMeta.index} | ||
999 | - width="lg" | ||
1000 | - name="unit" | ||
1001 | - label="商品单位" | ||
1002 | - placeholder="请输入商品单位" | ||
1003 | - rules={[{ required: true, message: '商品单位必填' }]} | ||
1004 | - hidden | ||
1005 | - />, | 993 | + //第一个商品默认为要新增的商品 |
994 | + if (keywords.trim() !== '') { | ||
995 | + options.unshift({ | ||
996 | + productName: keywords, | ||
997 | + type: 'add', | ||
998 | + label: keywords, | ||
999 | + value: 13 + '|' + keywords, | ||
1000 | + key: keywords, | ||
1001 | + }); | ||
1002 | + } | ||
1003 | + return options; | ||
1004 | + }} | ||
1005 | + />, | ||
1006 | + <ProFormText | ||
1007 | + key={'productCode' + listMeta.index} | ||
1008 | + width="lg" | ||
1009 | + name="productCode" | ||
1010 | + disabled | ||
1011 | + label={ | ||
1012 | + <> | ||
1013 | + <span>商品编码</span> | ||
1014 | + <span className="pl-2 text-xs text-gray-400"> | ||
1015 | + 新增商品时,商品编码由系统自动生成 | ||
1016 | + </span> | ||
1017 | + </> | ||
1018 | + } | ||
1019 | + placeholder="未输入商品名称" | ||
1020 | + />, | ||
1021 | + // <ProFormSelect | ||
1022 | + // key="inv_stock" | ||
1023 | + // placeholder="请选择仓库" | ||
1024 | + // name="invStockId" | ||
1025 | + // width="lg" | ||
1026 | + // label="仓库" | ||
1027 | + // options={productInvStockOptionsList[listMeta.index]} | ||
1028 | + // />, | ||
1029 | + <ProFormText | ||
1030 | + key={'parameters' + listMeta.index} | ||
1031 | + width="lg" | ||
1032 | + name="parameters" | ||
1033 | + label="商品参数" | ||
1034 | + placeholder="请输入商品参数" | ||
1035 | + rules={[{ required: true, message: '商品参数必填' }]} | ||
1036 | + disabled | ||
1037 | + />, | ||
1038 | + <ProFormDigit | ||
1039 | + key={'quantity' + listMeta.index} | ||
1040 | + width="lg" | ||
1041 | + name="quantity" | ||
1042 | + label="商品数量" | ||
1043 | + fieldProps={{ | ||
1044 | + onChange: (value) => { | ||
1045 | + listMeta.record.quantity = value; | ||
1046 | + computeSubOrderPayment(listMeta); | ||
1047 | + }, | ||
1048 | + }} | ||
1049 | + placeholder="请输入商品数量" | ||
1050 | + rules={[{ required: true, message: '商品数量必填' }]} | ||
1051 | + />, | ||
1006 | 1052 | ||
1007 | - <ProFormDigit | ||
1008 | - width="lg" | ||
1009 | - key={'subOrderPayment' + listMeta.index} | ||
1010 | - name="subOrderPayment" | ||
1011 | - label="子订单金额" | ||
1012 | - placeholder="请输入子订单金额" | ||
1013 | - tooltip="商品数量和单价变化后会自动计算子订单金额" | ||
1014 | - rules={[{ required: true, message: '子订单金额必填' }]} | ||
1015 | - />, | ||
1016 | - <ProFormSelect | ||
1017 | - key={'productBelongBusiness' + listMeta.index} | ||
1018 | - placeholder="请输入所属事业部" | ||
1019 | - name="productBelongBusiness" | ||
1020 | - width="lg" | ||
1021 | - label="所属事业部" | ||
1022 | - options={enumToSelect(PRODUCT_BELONG_DEPARTMENT_OPTIONS)} | ||
1023 | - initialValue={'EXPERIMENTAL_CONSUMABLES'} | ||
1024 | - rules={[{ required: true, message: '所属事业部必填' }]} | ||
1025 | - // disabled={mainInfoDisbled} | ||
1026 | - />, | ||
1027 | - <ProFormTextArea | ||
1028 | - key={'notes' + listMeta.index} | ||
1029 | - width="lg" | ||
1030 | - name="notes" | ||
1031 | - label={ | ||
1032 | - <div> | ||
1033 | - <span>备注</span> | ||
1034 | - <span className="pl-2 text-xs text-gray-400"> | ||
1035 | - 备注将体现在出货单上,请将需要仓管看见的信息写在备注上,例如需要开收据等信息。 | ||
1036 | - </span> | ||
1037 | - </div> | ||
1038 | - } | ||
1039 | - placeholder="请输入备注" | ||
1040 | - rules={[ | ||
1041 | - { | ||
1042 | - max: 120, // 最大长度为120个字符 | ||
1043 | - message: '备注不能超过120个字符', | ||
1044 | - }, | ||
1045 | - ]} | ||
1046 | - />, | ||
1047 | - <> | ||
1048 | - <ProFormUploadDragger | ||
1049 | - key={'filePaths' + listMeta.index} | ||
1050 | - label="附件" | ||
1051 | - name="filePaths" | ||
1052 | - action="/api/service/order/fileProcess" | 1053 | + <ProFormDigit |
1054 | + key={'productPrice' + listMeta.index} | ||
1055 | + width="lg" | ||
1056 | + name="productPrice" | ||
1057 | + label="商品单价" | ||
1053 | fieldProps={{ | 1058 | fieldProps={{ |
1054 | - headers: { Authorization: localStorage.getItem('token') }, | ||
1055 | - itemFileList, | 1059 | + onChange: (value) => { |
1060 | + listMeta.record.productPrice = value; | ||
1061 | + computeSubOrderPayment(listMeta); | ||
1062 | + }, | ||
1056 | }} | 1063 | }} |
1057 | - /> | ||
1058 | - </>, | ||
1059 | - ]} | ||
1060 | - </ProCard> | ||
1061 | - ); | ||
1062 | - }} | ||
1063 | - actionRef={actionRef} | ||
1064 | - ></ProFormList> | ||
1065 | - </DrawerForm> | 1064 | + placeholder="请输入商品单价" |
1065 | + rules={[{ required: true, message: '商品单价必填' }]} | ||
1066 | + />, | ||
1067 | + | ||
1068 | + <ProFormSelect | ||
1069 | + key="unitId" | ||
1070 | + placeholder="请选择单位" | ||
1071 | + name="unitId" | ||
1072 | + width="lg" | ||
1073 | + label="单位" | ||
1074 | + options={productUnitOptionsList[listMeta.index]} | ||
1075 | + rules={[{ required: true, message: '商品单位必填' }]} | ||
1076 | + />, | ||
1077 | + <ProFormText | ||
1078 | + key={'unit' + listMeta.index} | ||
1079 | + width="lg" | ||
1080 | + name="unit" | ||
1081 | + label="商品单位" | ||
1082 | + placeholder="请输入商品单位" | ||
1083 | + rules={[{ required: true, message: '商品单位必填' }]} | ||
1084 | + hidden | ||
1085 | + />, | ||
1086 | + | ||
1087 | + <ProFormDigit | ||
1088 | + width="lg" | ||
1089 | + key={'subOrderPayment' + listMeta.index} | ||
1090 | + name="subOrderPayment" | ||
1091 | + label="子订单金额" | ||
1092 | + placeholder="请输入子订单金额" | ||
1093 | + tooltip="商品数量和单价变化后会自动计算子订单金额" | ||
1094 | + rules={[{ required: true, message: '子订单金额必填' }]} | ||
1095 | + />, | ||
1096 | + <ProFormSelect | ||
1097 | + key={'productBelongBusiness' + listMeta.index} | ||
1098 | + placeholder="请输入所属事业部" | ||
1099 | + name="productBelongBusiness" | ||
1100 | + width="lg" | ||
1101 | + label="所属事业部" | ||
1102 | + options={enumToSelect(PRODUCT_BELONG_DEPARTMENT_OPTIONS)} | ||
1103 | + initialValue={'EXPERIMENTAL_CONSUMABLES'} | ||
1104 | + rules={[{ required: true, message: '所属事业部必填' }]} | ||
1105 | + // disabled={mainInfoDisbled} | ||
1106 | + />, | ||
1107 | + <ProFormTextArea | ||
1108 | + key={'notes' + listMeta.index} | ||
1109 | + width="lg" | ||
1110 | + name="notes" | ||
1111 | + label={ | ||
1112 | + <div> | ||
1113 | + <span>备注</span> | ||
1114 | + <span className="pl-2 text-xs text-gray-400"> | ||
1115 | + 备注将体现在出货单上,请将需要仓管看见的信息写在备注上,例如需要开收据等信息。 | ||
1116 | + </span> | ||
1117 | + </div> | ||
1118 | + } | ||
1119 | + placeholder="请输入备注" | ||
1120 | + rules={[ | ||
1121 | + { | ||
1122 | + max: 120, // 最大长度为120个字符 | ||
1123 | + message: '备注不能超过120个字符', | ||
1124 | + }, | ||
1125 | + ]} | ||
1126 | + />, | ||
1127 | + <> | ||
1128 | + <ProFormUploadDragger | ||
1129 | + key={'filePaths' + listMeta.index} | ||
1130 | + label="附件" | ||
1131 | + name="filePaths" | ||
1132 | + action="/api/service/order/fileProcess" | ||
1133 | + fieldProps={{ | ||
1134 | + headers: { | ||
1135 | + Authorization: localStorage.getItem('token'), | ||
1136 | + }, | ||
1137 | + itemFileList, | ||
1138 | + }} | ||
1139 | + /> | ||
1140 | + </>, | ||
1141 | + ]} | ||
1142 | + </ProCard> | ||
1143 | + ); | ||
1144 | + }} | ||
1145 | + actionRef={actionRef} | ||
1146 | + ></ProFormList> | ||
1147 | + </DrawerForm> | ||
1148 | + | ||
1149 | + {kingdeeCstomerModalVisible && ( | ||
1150 | + <KingdeeCustomerModal | ||
1151 | + setVisible={setKingdeeCstomerModalVisible} | ||
1152 | + data={customer} | ||
1153 | + onClose={(customerId: any) => { | ||
1154 | + setKingdeeCstomerModalVisible(false); | ||
1155 | + //回显已经新建好的客户 | ||
1156 | + autoFillCustomerContactSelectOptions(customerId); | ||
1157 | + }} | ||
1158 | + /> | ||
1159 | + )} | ||
1160 | + </> | ||
1066 | ); | 1161 | ); |
1067 | }; | 1162 | }; |
src/services/definition.ts
@@ -380,6 +380,25 @@ export interface CaptchaMessageVO { | @@ -380,6 +380,25 @@ export interface CaptchaMessageVO { | ||
380 | type?: string; | 380 | type?: string; |
381 | } | 381 | } |
382 | 382 | ||
383 | +export interface Contactperson { | ||
384 | + birthday?: string; | ||
385 | + contactAddress?: string; | ||
386 | + contactCityId?: string; | ||
387 | + contactCountryId?: string; | ||
388 | + contactDistrictId?: string; | ||
389 | + contactPerson?: string; | ||
390 | + contactProvinceId?: string; | ||
391 | + email?: string; | ||
392 | + /** @format int32 */ | ||
393 | + gender?: number; | ||
394 | + id?: string; | ||
395 | + isDefaultLinkman?: boolean; | ||
396 | + mobile?: string; | ||
397 | + phone?: string; | ||
398 | + qq?: string; | ||
399 | + wechat?: string; | ||
400 | +} | ||
401 | + | ||
383 | export interface CustomField { | 402 | export interface CustomField { |
384 | baseEntityNumber?: string; | 403 | baseEntityNumber?: string; |
385 | comboItems?: Array<Item>; | 404 | comboItems?: Array<Item>; |
@@ -509,6 +528,39 @@ export interface CustomerListResRow { | @@ -509,6 +528,39 @@ export interface CustomerListResRow { | ||
509 | remark?: string; | 528 | remark?: string; |
510 | } | 529 | } |
511 | 530 | ||
531 | +export interface CustomerSaveReq { | ||
532 | + accountOpenAddr?: string; | ||
533 | + addr?: string; | ||
534 | + bank?: string; | ||
535 | + bankAccount?: string; | ||
536 | + cityId?: string; | ||
537 | + clevelId?: string; | ||
538 | + contactPersons?: Array<Contactperson>; | ||
539 | + countryId?: string; | ||
540 | + customField?: { | ||
541 | + [propertyName: string]: string; | ||
542 | + }; | ||
543 | + districtId?: string; | ||
544 | + groupId?: string; | ||
545 | + groupNumber?: string; | ||
546 | + id?: string; | ||
547 | + ignoreWarn?: boolean; | ||
548 | + invoiceName?: string; | ||
549 | + /** @format int32 */ | ||
550 | + invoiceType?: number; | ||
551 | + mulLabel?: Array<Mullabel>; | ||
552 | + name?: string; | ||
553 | + number?: string; | ||
554 | + provinceId?: string; | ||
555 | + rate?: string; | ||
556 | + remark?: string; | ||
557 | + saleDeptId?: string; | ||
558 | + saleDeptNumber?: string; | ||
559 | + salerId?: string; | ||
560 | + salerNumber?: string; | ||
561 | + taxpayerNo?: string; | ||
562 | +} | ||
563 | + | ||
512 | export interface DictionaryQueryVO { | 564 | export interface DictionaryQueryVO { |
513 | /** @format int32 */ | 565 | /** @format int32 */ |
514 | current?: number; | 566 | current?: number; |
@@ -1165,6 +1217,13 @@ export interface ResetPwdVO { | @@ -1165,6 +1217,13 @@ export interface ResetPwdVO { | ||
1165 | userId?: number; | 1217 | userId?: number; |
1166 | } | 1218 | } |
1167 | 1219 | ||
1220 | +export interface SaveReply { | ||
1221 | + idNumberMap?: { | ||
1222 | + [propertyName: string]: string; | ||
1223 | + }; | ||
1224 | + ids?: Array<string>; | ||
1225 | +} | ||
1226 | + | ||
1168 | export interface ServerResult { | 1227 | export interface ServerResult { |
1169 | data?: any; | 1228 | data?: any; |
1170 | message?: string; | 1229 | message?: string; |
src/services/request.ts
@@ -28,6 +28,7 @@ import type { | @@ -28,6 +28,7 @@ import type { | ||
28 | CustomerDetailDto, | 28 | CustomerDetailDto, |
29 | CustomerDetailRes, | 29 | CustomerDetailRes, |
30 | CustomerListRes, | 30 | CustomerListRes, |
31 | + CustomerSaveReq, | ||
31 | DictionaryQueryVO, | 32 | DictionaryQueryVO, |
32 | DictionaryVO, | 33 | DictionaryVO, |
33 | Dto, | 34 | Dto, |
@@ -35,6 +36,7 @@ import type { | @@ -35,6 +36,7 @@ import type { | ||
35 | MaterialListReply, | 36 | MaterialListReply, |
36 | MaterialMaterialListReq, | 37 | MaterialMaterialListReq, |
37 | MaterialStockRes, | 38 | MaterialStockRes, |
39 | + ModelAndView, | ||
38 | OrderAddVO, | 40 | OrderAddVO, |
39 | OrderAuditLogQueryVO, | 41 | OrderAuditLogQueryVO, |
40 | OrderBaseInfoQueryVO, | 42 | OrderBaseInfoQueryVO, |
@@ -56,6 +58,7 @@ import type { | @@ -56,6 +58,7 @@ import type { | ||
56 | QueryMainOrderDto, | 58 | QueryMainOrderDto, |
57 | QueryReportFormsDto, | 59 | QueryReportFormsDto, |
58 | ResetPwdVO, | 60 | ResetPwdVO, |
61 | + SaveReply, | ||
59 | ServerResult, | 62 | ServerResult, |
60 | SysLogQueryVO, | 63 | SysLogQueryVO, |
61 | SystemCustomFieldReq, | 64 | SystemCustomFieldReq, |
@@ -239,9 +242,7 @@ export interface GetErrorResponse { | @@ -239,9 +242,7 @@ export interface GetErrorResponse { | ||
239 | * @description | 242 | * @description |
240 | * OK | 243 | * OK |
241 | */ | 244 | */ |
242 | - 200: { | ||
243 | - [propertyName: string]: any; | ||
244 | - }; | 245 | + 200: ModelAndView; |
245 | /** | 246 | /** |
246 | * @description | 247 | * @description |
247 | * Unauthorized | 248 | * Unauthorized |
@@ -262,9 +263,9 @@ export interface GetErrorResponse { | @@ -262,9 +263,9 @@ export interface GetErrorResponse { | ||
262 | export type GetErrorResponseSuccess = GetErrorResponse[200]; | 263 | export type GetErrorResponseSuccess = GetErrorResponse[200]; |
263 | /** | 264 | /** |
264 | * @description | 265 | * @description |
265 | - * error | 266 | + * errorHtml |
266 | * @tags basic-error-controller | 267 | * @tags basic-error-controller |
267 | - * @produces * | 268 | + * @produces text/html |
268 | */ | 269 | */ |
269 | export const getError = /* #__PURE__ */ (() => { | 270 | export const getError = /* #__PURE__ */ (() => { |
270 | const method = 'get'; | 271 | const method = 'get'; |
@@ -288,9 +289,7 @@ export interface PutErrorResponse { | @@ -288,9 +289,7 @@ export interface PutErrorResponse { | ||
288 | * @description | 289 | * @description |
289 | * OK | 290 | * OK |
290 | */ | 291 | */ |
291 | - 200: { | ||
292 | - [propertyName: string]: any; | ||
293 | - }; | 292 | + 200: ModelAndView; |
294 | /** | 293 | /** |
295 | * @description | 294 | * @description |
296 | * Created | 295 | * Created |
@@ -316,9 +315,9 @@ export interface PutErrorResponse { | @@ -316,9 +315,9 @@ export interface PutErrorResponse { | ||
316 | export type PutErrorResponseSuccess = PutErrorResponse[200]; | 315 | export type PutErrorResponseSuccess = PutErrorResponse[200]; |
317 | /** | 316 | /** |
318 | * @description | 317 | * @description |
319 | - * error | 318 | + * errorHtml |
320 | * @tags basic-error-controller | 319 | * @tags basic-error-controller |
321 | - * @produces * | 320 | + * @produces text/html |
322 | * @consumes application/json | 321 | * @consumes application/json |
323 | */ | 322 | */ |
324 | export const putError = /* #__PURE__ */ (() => { | 323 | export const putError = /* #__PURE__ */ (() => { |
@@ -343,9 +342,7 @@ export interface PostErrorResponse { | @@ -343,9 +342,7 @@ export interface PostErrorResponse { | ||
343 | * @description | 342 | * @description |
344 | * OK | 343 | * OK |
345 | */ | 344 | */ |
346 | - 200: { | ||
347 | - [propertyName: string]: any; | ||
348 | - }; | 345 | + 200: ModelAndView; |
349 | /** | 346 | /** |
350 | * @description | 347 | * @description |
351 | * Created | 348 | * Created |
@@ -371,9 +368,9 @@ export interface PostErrorResponse { | @@ -371,9 +368,9 @@ export interface PostErrorResponse { | ||
371 | export type PostErrorResponseSuccess = PostErrorResponse[200]; | 368 | export type PostErrorResponseSuccess = PostErrorResponse[200]; |
372 | /** | 369 | /** |
373 | * @description | 370 | * @description |
374 | - * error | 371 | + * errorHtml |
375 | * @tags basic-error-controller | 372 | * @tags basic-error-controller |
376 | - * @produces * | 373 | + * @produces text/html |
377 | * @consumes application/json | 374 | * @consumes application/json |
378 | */ | 375 | */ |
379 | export const postError = /* #__PURE__ */ (() => { | 376 | export const postError = /* #__PURE__ */ (() => { |
@@ -398,9 +395,7 @@ export interface DeleteErrorResponse { | @@ -398,9 +395,7 @@ export interface DeleteErrorResponse { | ||
398 | * @description | 395 | * @description |
399 | * OK | 396 | * OK |
400 | */ | 397 | */ |
401 | - 200: { | ||
402 | - [propertyName: string]: any; | ||
403 | - }; | 398 | + 200: ModelAndView; |
404 | /** | 399 | /** |
405 | * @description | 400 | * @description |
406 | * No Content | 401 | * No Content |
@@ -421,9 +416,9 @@ export interface DeleteErrorResponse { | @@ -421,9 +416,9 @@ export interface DeleteErrorResponse { | ||
421 | export type DeleteErrorResponseSuccess = DeleteErrorResponse[200]; | 416 | export type DeleteErrorResponseSuccess = DeleteErrorResponse[200]; |
422 | /** | 417 | /** |
423 | * @description | 418 | * @description |
424 | - * error | 419 | + * errorHtml |
425 | * @tags basic-error-controller | 420 | * @tags basic-error-controller |
426 | - * @produces * | 421 | + * @produces text/html |
427 | */ | 422 | */ |
428 | export const deleteError = /* #__PURE__ */ (() => { | 423 | export const deleteError = /* #__PURE__ */ (() => { |
429 | const method = 'delete'; | 424 | const method = 'delete'; |
@@ -447,9 +442,7 @@ export interface OptionsErrorResponse { | @@ -447,9 +442,7 @@ export interface OptionsErrorResponse { | ||
447 | * @description | 442 | * @description |
448 | * OK | 443 | * OK |
449 | */ | 444 | */ |
450 | - 200: { | ||
451 | - [propertyName: string]: any; | ||
452 | - }; | 445 | + 200: ModelAndView; |
453 | /** | 446 | /** |
454 | * @description | 447 | * @description |
455 | * No Content | 448 | * No Content |
@@ -470,9 +463,9 @@ export interface OptionsErrorResponse { | @@ -470,9 +463,9 @@ export interface OptionsErrorResponse { | ||
470 | export type OptionsErrorResponseSuccess = OptionsErrorResponse[200]; | 463 | export type OptionsErrorResponseSuccess = OptionsErrorResponse[200]; |
471 | /** | 464 | /** |
472 | * @description | 465 | * @description |
473 | - * error | 466 | + * errorHtml |
474 | * @tags basic-error-controller | 467 | * @tags basic-error-controller |
475 | - * @produces * | 468 | + * @produces text/html |
476 | * @consumes application/json | 469 | * @consumes application/json |
477 | */ | 470 | */ |
478 | export const optionsError = /* #__PURE__ */ (() => { | 471 | export const optionsError = /* #__PURE__ */ (() => { |
@@ -497,9 +490,7 @@ export interface HeadErrorResponse { | @@ -497,9 +490,7 @@ export interface HeadErrorResponse { | ||
497 | * @description | 490 | * @description |
498 | * OK | 491 | * OK |
499 | */ | 492 | */ |
500 | - 200: { | ||
501 | - [propertyName: string]: any; | ||
502 | - }; | 493 | + 200: ModelAndView; |
503 | /** | 494 | /** |
504 | * @description | 495 | * @description |
505 | * No Content | 496 | * No Content |
@@ -520,9 +511,9 @@ export interface HeadErrorResponse { | @@ -520,9 +511,9 @@ export interface HeadErrorResponse { | ||
520 | export type HeadErrorResponseSuccess = HeadErrorResponse[200]; | 511 | export type HeadErrorResponseSuccess = HeadErrorResponse[200]; |
521 | /** | 512 | /** |
522 | * @description | 513 | * @description |
523 | - * error | 514 | + * errorHtml |
524 | * @tags basic-error-controller | 515 | * @tags basic-error-controller |
525 | - * @produces * | 516 | + * @produces text/html |
526 | * @consumes application/json | 517 | * @consumes application/json |
527 | */ | 518 | */ |
528 | export const headError = /* #__PURE__ */ (() => { | 519 | export const headError = /* #__PURE__ */ (() => { |
@@ -547,9 +538,7 @@ export interface PatchErrorResponse { | @@ -547,9 +538,7 @@ export interface PatchErrorResponse { | ||
547 | * @description | 538 | * @description |
548 | * OK | 539 | * OK |
549 | */ | 540 | */ |
550 | - 200: { | ||
551 | - [propertyName: string]: any; | ||
552 | - }; | 541 | + 200: ModelAndView; |
553 | /** | 542 | /** |
554 | * @description | 543 | * @description |
555 | * No Content | 544 | * No Content |
@@ -570,9 +559,9 @@ export interface PatchErrorResponse { | @@ -570,9 +559,9 @@ export interface PatchErrorResponse { | ||
570 | export type PatchErrorResponseSuccess = PatchErrorResponse[200]; | 559 | export type PatchErrorResponseSuccess = PatchErrorResponse[200]; |
571 | /** | 560 | /** |
572 | * @description | 561 | * @description |
573 | - * error | 562 | + * errorHtml |
574 | * @tags basic-error-controller | 563 | * @tags basic-error-controller |
575 | - * @produces * | 564 | + * @produces text/html |
576 | * @consumes application/json | 565 | * @consumes application/json |
577 | */ | 566 | */ |
578 | export const patchError = /* #__PURE__ */ (() => { | 567 | export const patchError = /* #__PURE__ */ (() => { |
@@ -733,6 +722,77 @@ export const postKingdeeRepCustomerDetail = /* #__PURE__ */ (() => { | @@ -733,6 +722,77 @@ export const postKingdeeRepCustomerDetail = /* #__PURE__ */ (() => { | ||
733 | return request; | 722 | return request; |
734 | })(); | 723 | })(); |
735 | 724 | ||
725 | +/** @description request parameter type for postKingdeeRepCustomerSave */ | ||
726 | +export interface PostKingdeeRepCustomerSaveOption { | ||
727 | + /** | ||
728 | + * @description | ||
729 | + * req | ||
730 | + */ | ||
731 | + body: { | ||
732 | + /** | ||
733 | + @description | ||
734 | + req */ | ||
735 | + req: CustomerSaveReq; | ||
736 | + }; | ||
737 | +} | ||
738 | + | ||
739 | +/** @description response type for postKingdeeRepCustomerSave */ | ||
740 | +export interface PostKingdeeRepCustomerSaveResponse { | ||
741 | + /** | ||
742 | + * @description | ||
743 | + * OK | ||
744 | + */ | ||
745 | + 200: SaveReply; | ||
746 | + /** | ||
747 | + * @description | ||
748 | + * Created | ||
749 | + */ | ||
750 | + 201: any; | ||
751 | + /** | ||
752 | + * @description | ||
753 | + * Unauthorized | ||
754 | + */ | ||
755 | + 401: any; | ||
756 | + /** | ||
757 | + * @description | ||
758 | + * Forbidden | ||
759 | + */ | ||
760 | + 403: any; | ||
761 | + /** | ||
762 | + * @description | ||
763 | + * Not Found | ||
764 | + */ | ||
765 | + 404: any; | ||
766 | +} | ||
767 | + | ||
768 | +export type PostKingdeeRepCustomerSaveResponseSuccess = | ||
769 | + PostKingdeeRepCustomerSaveResponse[200]; | ||
770 | +/** | ||
771 | + * @description | ||
772 | + * getCustomerDetail | ||
773 | + * @tags kingdee-erp-controller | ||
774 | + * @produces * | ||
775 | + * @consumes application/json | ||
776 | + */ | ||
777 | +export const postKingdeeRepCustomerSave = /* #__PURE__ */ (() => { | ||
778 | + const method = 'post'; | ||
779 | + const url = '/kingdee/rep/customerSave'; | ||
780 | + function request( | ||
781 | + option: PostKingdeeRepCustomerSaveOption, | ||
782 | + ): Promise<PostKingdeeRepCustomerSaveResponseSuccess> { | ||
783 | + return requester(request.url, { | ||
784 | + method: request.method, | ||
785 | + ...option, | ||
786 | + }) as unknown as Promise<PostKingdeeRepCustomerSaveResponseSuccess>; | ||
787 | + } | ||
788 | + | ||
789 | + /** http method */ | ||
790 | + request.method = method; | ||
791 | + /** request url */ | ||
792 | + request.url = url; | ||
793 | + return request; | ||
794 | +})(); | ||
795 | + | ||
736 | /** @description response type for getKingdeeRepGetToken */ | 796 | /** @description response type for getKingdeeRepGetToken */ |
737 | export interface GetKingdeeRepGetTokenResponse { | 797 | export interface GetKingdeeRepGetTokenResponse { |
738 | /** | 798 | /** |
src/utils/kingdee.ts
0 → 100644
1 | +import { postKingdeeRepSystemCustomField } from '@/services'; | ||
2 | + | ||
3 | +/** | ||
4 | + * 获取课题组老师的自定义字段id | ||
5 | + * @returns | ||
6 | + */ | ||
7 | +export async function getTeacherCustomFieldNumber() { | ||
8 | + let customFiledRes = await postKingdeeRepSystemCustomField({ | ||
9 | + data: { | ||
10 | + entity_number: 'bd_customer', | ||
11 | + }, | ||
12 | + }); | ||
13 | + | ||
14 | + //遍历自定义字段的head,找到名称为"课题组老师"的entity_number | ||
15 | + let entity_number = ''; | ||
16 | + customFiledRes?.head?.forEach((item) => { | ||
17 | + if (item.display_name === '课题组老师') { | ||
18 | + entity_number = item.number; | ||
19 | + } | ||
20 | + }); | ||
21 | + return entity_number; | ||
22 | +} |