Commit 419f88a87bd6797bcb114e5272423127cb1de40c

Authored by zhongnanhuang
1 parent 0cea8755

feat: update 金蝶订单推送开发

src/pages/Order/components/OrderDrawer.tsx
1 1 import { RESPONSE_CODE } from '@/constants/enum';
2 2 import {
  3 + postKingdeeRepCustomer,
  4 + postKingdeeRepCustomerDetail,
3 5 postKingdeeRepMaterial,
4   - postKingdeeRepMaterialStock,
  6 + postKingdeeRepSystemCustomField,
5 7 postServiceOrderAddOrder,
6   - postServiceOrderQueryCustomerNameInformation,
7 8 postServiceOrderQuerySalesCode,
8 9 postServiceOrderUpdateOrder,
9 10 } from '@/services';
... ... @@ -38,9 +39,12 @@ import {
38 39 export default ({ onClose, data, subOrders, orderOptType }) => {
39 40 const [invoicingStatus, setInvoicingStatus] = useState('');
40 41 const [salesCodeOptions, setSalesCodeOptions] = useState([]);
41   - const [productInvStockOptionsList, setProductInvStockOptionsList] = useState(
42   - [],
43   - ); //商品的仓库选项
  42 + // const [productInvStockOptionsList, setProductInvStockOptionsList] = useState(
  43 + // [],
  44 + // ); //商品的仓库选项
  45 + const [productUnitOptionsList, setProductUnitOptionsList] = useState([]); //商品的单位选项
  46 + const [productCustomerContactOptions, setProductCustomerContactOptions] =
  47 + useState([]); //客户的收货人选项
44 48 const [form] = Form.useForm<{
45 49 salesCode: '';
46 50 customerName: '';
... ... @@ -99,7 +103,11 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
99 103 const getSalesCodeOptions = async () => {
100 104 const res = await postServiceOrderQuerySalesCode();
101 105 let options = res.data?.map((item) => {
102   - return { label: item.userName, value: item.userName };
  106 + return {
  107 + label: item.userName,
  108 + value: item.userName,
  109 + number: item.number,
  110 + };
103 111 });
104 112 setSalesCodeOptions(options);
105 113  
... ... @@ -203,35 +211,102 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
203 211 //商品id
204 212 currentData.materialId = option?.id;
205 213  
  214 + //单位
  215 + currentData.unit = option.base_unit_name;
  216 + currentData.erpUnitId = option.base_unit_id;
  217 +
206 218 form.setFieldValue('list', copyList);
207 219  
208 220 //商品所在的仓库选项填充
209   - console.log(currentData);
210   - let res = await postKingdeeRepMaterialStock({
211   - data: {
212   - material_id: option.id,
213   - },
214   - });
215   - let newProductInvStockOptionsList = [...productInvStockOptionsList];
216   - newProductInvStockOptionsList[index] = res?.rows?.map((item) => {
217   - return { label: item.inv_stock, value: item.inv_stock_id };
218   - });
219   - setProductInvStockOptionsList(newProductInvStockOptionsList);
  221 + // let res = await postKingdeeRepMaterialStock({
  222 + // data: {
  223 + // material_id: option.id,
  224 + // },
  225 + // });
  226 + // let newProductInvStockOptionsList = [...productInvStockOptionsList];
  227 + // newProductInvStockOptionsList[index] = res?.rows?.map((item) => {
  228 + // return { label: item.inv_stock, value: item.inv_stock_id };
  229 + // });
  230 + // setProductInvStockOptionsList(newProductInvStockOptionsList);
  231 +
  232 + //商品单位填充,目前一个商品暂时只有一个单位
  233 + let newProductUnitOptionsList = [...productUnitOptionsList];
  234 + newProductUnitOptionsList[index] = [
  235 + { label: option.base_unit_name, value: option.base_unit_id },
  236 + ];
  237 + setProductUnitOptionsList(newProductUnitOptionsList);
220 238 }
221 239  
222 240 /**
223 241 * 选择收货人后自动填充信息
224 242 * @param option 收货人信息
225 243 */
226   - function autoFillCustomerInfo(option: any) {
227   - form.setFieldValue('institution', option.institution);
228   - form.setFieldValue('institutionContactName', option.institutionContactName);
229   - form.setFieldValue(
230   - 'customerShippingAddress',
231   - option.customerShippingAddress,
232   - );
233   - form.setFieldValue('customerContactNumber', option.customerContactNumber);
234   - form.setFieldValue('customerName', option.customerName);
  244 + async function autoFillCustomerInfo(option: any) {
  245 + form.setFieldValue('customerShippingAddress', option.contact_address);
  246 + form.setFieldValue('customerContactNumber', option.mobile);
  247 + form.setFieldValue('customerName', option.contact_person);
  248 +
  249 + //erp收货地址:需要与客户联系人中的地址一样:姓名,手机号,地址
  250 + form.setFieldValue('erpCustomerAddress', option.value);
  251 + }
  252 +
  253 + /**
  254 + * 填充销售代表的信息
  255 + * @param option
  256 + */
  257 + function autoFillSalesInfo(option: any) {
  258 + //销售代表对应职员编码填充
  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);
235 310 }
236 311  
237 312 /**
... ... @@ -346,6 +421,17 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
346 421 placeholder="id"
347 422 hidden
348 423 />
  424 +
  425 + <ProFormText
  426 + key="number"
  427 + name="number"
  428 + width="lg"
  429 + disabled
  430 + label="销售职员编码"
  431 + placeholder="销售职员编码"
  432 + hidden
  433 + />
  434 +
349 435 <ProFormSelect
350 436 name="salesCode"
351 437 key="salesCode"
... ... @@ -355,26 +441,40 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
355 441 placeholder="请输入销售代表"
356 442 rules={[{ required: true, message: '销售代表必填' }]}
357 443 options={salesCodeOptions}
  444 + onChange={(_, option) => {
  445 + autoFillSalesInfo(option);
  446 + }}
358 447 // disabled={mainInfoDisbled}
359 448 />
  449 + <ProFormText
  450 + key="erpCustomerName"
  451 + name="erpCustomerName"
  452 + hidden
  453 + ></ProFormText>
  454 +
  455 + <ProFormText
  456 + key="erpCustomerAddress"
  457 + name="erpCustomerAddress"
  458 + hidden
  459 + ></ProFormText>
  460 +
360 461 <ProFormSelect
361   - key="customerName"
362   - label="收货人"
  462 + name="erpCustomerId"
  463 + key="customerId"
363 464 width="lg"
364 465 showSearch
365   - name="customerName"
366   - // options={options}
367   - placeholder="请输入收货人"
368   - rules={[{ required: true, message: '收货人必填' }]}
  466 + label="客户"
  467 + placeholder="请选择客户"
  468 + rules={[{ required: true, message: '客户必填' }]}
369 469 onChange={(_, option) => {
370   - autoFillCustomerInfo(option);
  470 + autoFillCustomerContactSelectOptions(option);
371 471 }}
372 472 fieldProps={{
373 473 optionItemRender(item) {
374 474 if (item.type === 'add') {
375 475 return (
376   - <div title={item.customerName + '(新增商品信息)'}>
377   - <span style={{ color: '#333333' }}>{item.customerName}</span>
  476 + <div title={item.name + '(新增客户)'}>
  477 + <span style={{ color: '#333333' }}>{item.name}</span>
378 478 {' | '}
379 479 <span style={{ color: 'orange' }}>自定义</span>
380 480 </div>
... ... @@ -383,7 +483,7 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
383 483 return (
384 484 <div
385 485 title={
386   - item.customerName +
  486 + item.name +
387 487 ' | ' +
388 488 item.customerContactNumber +
389 489 ' | ' +
... ... @@ -396,52 +496,32 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
396 496 item.institution
397 497 }
398 498 >
399   - <span style={{ color: '#333333' }}>{item.customerName}</span>
400   - {' | '}
401   - <span style={{ color: '#339999' }}>
402   - {item.customerContactNumber === undefined
403   - ? '无电话号码'
404   - : item.customerContactNumber}
405   - </span>
406   - {' | '}
407   - <span style={{ color: '#666666' }}>
408   - {item.customerShippingAddress === undefined
409   - ? '无地址'
410   - : item.customerShippingAddress}
411   - </span>
412   - {' | '}
413   - <span style={{ color: '#666666' }}>
414   - {item.institutionContactName === undefined
415   - ? '无课题组'
416   - : item.institutionContactName}
417   - </span>
418   - {' | '}
419   - <span style={{ color: '#666666' }}>
420   - {item.institution === undefined ? '无单位' : item.institution}
421   - </span>
  499 + <span style={{ color: '#333333' }}>{item.name}</span>
422 500 </div>
423 501 );
424 502 },
425 503 }}
  504 + debounceTime={1000}
426 505 request={async (value, { params }) => {
427 506 const keywords = value.keyWords;
428   - const { data } = await postServiceOrderQueryCustomerNameInformation({
429   - data: { customerName: keywords },
  507 + const res = await postKingdeeRepCustomer({
  508 + data: { search: keywords },
430 509 params: params,
431 510 });
432   - let options = data.map((c: any) => {
  511 + console.log(res);
  512 + let options = res?.rows?.map((c: any) => {
433 513 return {
434 514 ...c,
435   - label: c.customerName,
  515 + label: c.name,
436 516 value: c.id,
437 517 key: c.id,
438 518 };
439 519 });
440 520  
441   - //第一个商品默认为要新增的商品
  521 + //第一个商品默认为要新增客户
442 522 if (keywords.trim() !== '') {
443 523 options.unshift({
444   - customerName: keywords,
  524 + name: keywords,
445 525 type: 'add',
446 526 label: keywords,
447 527 value: 3.1415926,
... ... @@ -451,6 +531,103 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
451 531 return options;
452 532 }}
453 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 + // });
  617 +
  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 + />
454 631 <ProFormText
455 632 width="lg"
456 633 key="customerContactNumber"
... ... @@ -458,7 +635,7 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
458 635 label="联系方式"
459 636 placeholder="请输入联系方式"
460 637 rules={[{ required: true, message: '联系方式必填' }]}
461   - // disabled={mainInfoDisbled}
  638 + disabled
462 639 />
463 640 <ProFormText
464 641 width="lg"
... ... @@ -467,7 +644,7 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
467 644 label="单位"
468 645 placeholder="请输入单位"
469 646 rules={[{ required: true, message: '单位必填' }]}
470   - // disabled={mainInfoDisbled}
  647 + disabled
471 648 />
472 649 <ProFormText
473 650 width="lg"
... ... @@ -476,7 +653,7 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
476 653 label="课题组"
477 654 placeholder="请输入课题组"
478 655 rules={[{ required: true, message: '课题组必填' }]}
479   - // disabled={mainInfoDisbled}
  656 + disabled
480 657 />
481 658 <ProFormTextArea
482 659 width="lg"
... ... @@ -485,7 +662,7 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
485 662 label="收货地址"
486 663 placeholder="请输入收货地址"
487 664 rules={[{ required: true, message: '收货地址必填' }]}
488   - // disabled={mainInfoDisbled}
  665 + disabled
489 666 />
490 667 <div id="total-payment">
491 668 <ProFormDigit
... ... @@ -746,14 +923,29 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
746 923 return options;
747 924 }}
748 925 />,
749   - <ProFormSelect
750   - key="inv_stock"
751   - placeholder="请选择商品仓库"
752   - name="invStockId"
  926 + <ProFormText
  927 + key={'productCode' + listMeta.index}
753 928 width="lg"
754   - label="仓库"
755   - options={productInvStockOptionsList[listMeta.index]}
  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="未输入商品名称"
756 940 />,
  941 + // <ProFormSelect
  942 + // key="inv_stock"
  943 + // placeholder="请选择仓库"
  944 + // name="invStockId"
  945 + // width="lg"
  946 + // label="仓库"
  947 + // options={productInvStockOptionsList[listMeta.index]}
  948 + // />,
757 949 <ProFormText
758 950 key={'parameters' + listMeta.index}
759 951 width="lg"
... ... @@ -761,6 +953,7 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
761 953 label="商品参数"
762 954 placeholder="请输入商品参数"
763 955 rules={[{ required: true, message: '商品参数必填' }]}
  956 + disabled
764 957 />,
765 958 <ProFormDigit
766 959 key={'quantity' + listMeta.index}
... ... @@ -776,6 +969,7 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
776 969 placeholder="请输入商品数量"
777 970 rules={[{ required: true, message: '商品数量必填' }]}
778 971 />,
  972 +
779 973 <ProFormDigit
780 974 key={'productPrice' + listMeta.index}
781 975 width="lg"
... ... @@ -790,6 +984,16 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
790 984 placeholder="请输入商品单价"
791 985 rules={[{ required: true, message: '商品单价必填' }]}
792 986 />,
  987 +
  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 + />,
793 997 <ProFormText
794 998 key={'unit' + listMeta.index}
795 999 width="lg"
... ... @@ -797,6 +1001,7 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
797 1001 label="商品单位"
798 1002 placeholder="请输入商品单位"
799 1003 rules={[{ required: true, message: '商品单位必填' }]}
  1004 + hidden
800 1005 />,
801 1006  
802 1007 <ProFormDigit
... ...
src/services/definition.ts
... ... @@ -324,6 +324,49 @@ export interface AuditVO {
324 324 total?: number;
325 325 }
326 326  
  327 +export interface BillEntry {
  328 + auditLock?: boolean;
  329 + baseEntityNumber?: string;
  330 + defValue?: string;
  331 + displayName?: string;
  332 + entityNumber?: string;
  333 + /** @format int32 */
  334 + fieldType?: number;
  335 + id?: string;
  336 + mustInput?: boolean;
  337 + number?: string;
  338 + typeId?: string;
  339 +}
  340 +
  341 +export interface Bomentity {
  342 + birthday?: string;
  343 + contactAddress?: string;
  344 + contactCityId?: string;
  345 + contactCityName?: string;
  346 + contactCityNumber?: string;
  347 + contactCountryId?: string;
  348 + contactCountryName?: string;
  349 + contactCountryNumber?: string;
  350 + contactDistrictId?: string;
  351 + contactDistrictName?: string;
  352 + contactDistrictNumber?: string;
  353 + contactPerson?: string;
  354 + contactProvinceId?: string;
  355 + contactProvinceName?: string;
  356 + contactProvinceNumber?: string;
  357 + email?: string;
  358 + gender?: string;
  359 + groupNumber?: string;
  360 + id?: string;
  361 + isDefaultLinkman?: boolean;
  362 + mobile?: string;
  363 + phone?: string;
  364 + qq?: string;
  365 + rate?: string;
  366 + seq?: string;
  367 + wechat?: string;
  368 +}
  369 +
327 370 export interface CaptchaMessageVO {
328 371 /** @format int32 */
329 372 current?: number;
... ... @@ -337,6 +380,135 @@ export interface CaptchaMessageVO {
337 380 type?: string;
338 381 }
339 382  
  383 +export interface CustomField {
  384 + baseEntityNumber?: string;
  385 + comboItems?: Array<Item>;
  386 + defValue?: string;
  387 + displayName?: string;
  388 + /** @format int32 */
  389 + fieldType?: number;
  390 + id?: string;
  391 + mustInput?: boolean;
  392 + number?: string;
  393 +}
  394 +
  395 +export interface CustomFieldRes {
  396 + head?: Array<CustomField>;
  397 + instantPayFromToEntry?: Array<BillEntry>;
  398 + materialEntity?: Array<CustomField>;
  399 + payFromToEntry?: Array<BillEntry>;
  400 +}
  401 +
  402 +export interface CustomerCustomerListReq {
  403 + clevel?: string;
  404 + contactPersonMain?: string;
  405 + createEndTime?: string;
  406 + createStartTime?: string;
  407 + customerMaturity?: string;
  408 + /** @format int32 */
  409 + enable?: number;
  410 + group?: Array<string>;
  411 + isDataPerm?: boolean;
  412 + mobileMain?: string;
  413 + modifyEndTime?: string;
  414 + modifyStartTime?: string;
  415 + orderBy?: string;
  416 + page?: string;
  417 + pageSize?: string;
  418 + saleDeptId?: string;
  419 + salerId?: string;
  420 + search?: string;
  421 + showAlarm?: boolean;
  422 + showBusinessTime?: boolean;
  423 + showContactDetail?: boolean;
  424 + showDebt?: boolean;
  425 + showTraceInfo?: boolean;
  426 + showUnVisitDays?: boolean;
  427 + traceEndDate?: string;
  428 + traceStartDate?: string;
  429 +}
  430 +
  431 +export interface CustomerDetailDto {
  432 + id?: string;
  433 + number?: string;
  434 + showBusinessTime?: boolean;
  435 + showDebt?: boolean;
  436 + showPeriod?: boolean;
  437 + showUnVisitDays?: boolean;
  438 +}
  439 +
  440 +export interface CustomerDetailRes {
  441 + accountOpenAddr?: string;
  442 + addr?: string;
  443 + bank?: string;
  444 + bankAccount?: string;
  445 + bomentity?: Array<Bomentity>;
  446 + cityId?: string;
  447 + cityName?: string;
  448 + cityNumber?: string;
  449 + clevelId?: string;
  450 + clevelName?: string;
  451 + clevelNumber?: string;
  452 + countryId?: string;
  453 + countryName?: string;
  454 + countryNumber?: string;
  455 + createTime?: string;
  456 + createrFieldName?: string;
  457 + customField?: {
  458 + [propertyName: string]: string;
  459 + };
  460 + districtId?: string;
  461 + districtName?: string;
  462 + districtNumber?: string;
  463 + enable?: string;
  464 + groupId?: string;
  465 + groupName?: string;
  466 + groupNumber?: string;
  467 + id?: string;
  468 + invoiceName?: string;
  469 + invoiceType?: string;
  470 + modifyTime?: string;
  471 + name?: string;
  472 + number?: string;
  473 + provinceId?: string;
  474 + provinceName?: string;
  475 + provinceNumber?: string;
  476 + rate?: string;
  477 + remark?: string;
  478 + saleDeptId?: string;
  479 + saleDeptName?: string;
  480 + saleDeptNumber?: string;
  481 + salerId?: string;
  482 + salerName?: string;
  483 + salerNumber?: string;
  484 + taxpayerNo?: string;
  485 +}
  486 +
  487 +export interface CustomerListRes {
  488 + count?: string;
  489 + /** @format int32 */
  490 + currentPage?: number;
  491 + /** @format int32 */
  492 + currentPageSize?: number;
  493 + /** @format int32 */
  494 + page?: number;
  495 + /** @format int32 */
  496 + pageSize?: number;
  497 + rows?: Array<CustomerListResRow>;
  498 + /** @format int32 */
  499 + totalPage?: number;
  500 +}
  501 +
  502 +export interface CustomerListResRow {
  503 + clevelId?: string;
  504 + enable?: string;
  505 + groupName?: string;
  506 + id?: string;
  507 + name?: string;
  508 + number?: string;
  509 + remark?: string;
  510 +}
  511 +
340 512 export interface DictionaryQueryVO {
341 513 /** @format int32 */
342 514 current?: number;
... ... @@ -366,6 +538,38 @@ export interface DictionaryVO {
366 538 sort?: number;
367 539 }
368 540  
  541 +export interface Entry {
  542 + bankAccount?: string;
  543 + bankName?: string;
  544 + birthInsurance?: string;
  545 + birthInsuranceC?: string;
  546 + childrenCare?: string;
  547 + childrenEdu?: string;
  548 + continueEdu?: string;
  549 + depId?: string;
  550 + empId?: string;
  551 + empInjuryInsurance?: string;
  552 + empInjuryInsuranceC?: string;
  553 + hireDate?: string;
  554 + housingLoan?: string;
  555 + housingRent?: string;
  556 + hpf?: string;
  557 + hpfC?: string;
  558 + idNumber?: string;
  559 + medicalInsurance?: string;
  560 + medicalInsuranceC?: string;
  561 + mobile?: string;
  562 + oldInsurance?: string;
  563 + oldInsuranceC?: string;
  564 + payAmount?: string;
  565 + saItemList?: Array<ItemSaItem>;
  566 + specialDeductTotal?: string;
  567 + supportElderly?: string;
  568 + taxaMount?: string;
  569 + unEmpInsurance?: string;
  570 + unEmpInsuranceC?: string;
  571 +}
  572 +
369 573 export interface FilePathDto {
370 574 url?: string;
371 575 }
... ... @@ -377,6 +581,19 @@ export interface InventoryMaterialStockReq {
377 581 materialId?: string;
378 582 }
379 583  
  584 +export interface Item {
  585 + billDate?: string;
  586 + billNo?: string;
  587 + entryList?: Array<Entry>;
  588 + id?: string;
  589 + remark?: string;
  590 +}
  591 +
  592 +export interface ItemSaItem {
  593 + itemId?: string;
  594 + itemValue?: string;
  595 +}
  596 +
380 597 export interface MaterialListReply {
381 598 count?: string;
382 599 /** @format int32 */
... ... @@ -978,6 +1195,10 @@ export interface SysLogQueryVO {
978 1195 username?: string;
979 1196 }
980 1197  
  1198 +export interface SystemCustomFieldReq {
  1199 + entityNumber?: string;
  1200 +}
  1201 +
981 1202 export interface Unit {
982 1203 /** @format float */
983 1204 coefficient?: number;
... ... @@ -1018,6 +1239,36 @@ export interface Unit {
1018 1239 unitidName?: string;
1019 1240 }
1020 1241  
  1242 +export interface UpdateHirePurchaseDto {
  1243 + /**
  1244 + * @description
  1245 + * 分期付款支付方式
  1246 + */
  1247 + hirePurchaseMethod?: string;
  1248 + /**
  1249 + * @description
  1250 + * 主订单id
  1251 + * @format int64
  1252 + */
  1253 + mainOrderId?: number;
  1254 + /**
  1255 + * @description
  1256 + * 金额
  1257 + */
  1258 + money?: number;
  1259 + /**
  1260 + * @description
  1261 + * 备注
  1262 + */
  1263 + notes?: string;
  1264 + /**
  1265 + * @description
  1266 + * 修改时间
  1267 + * @format date-time
  1268 + */
  1269 + updateTime?: string;
  1270 +}
  1271 +
1021 1272 export interface UpdatePwdVO {
1022 1273 confirmPassword?: string;
1023 1274 password?: string;
... ...
src/services/request.ts
... ... @@ -23,6 +23,11 @@ import type {
23 23 AdminUserVO,
24 24 AuditVO,
25 25 CaptchaMessageVO,
  26 + CustomFieldRes,
  27 + CustomerCustomerListReq,
  28 + CustomerDetailDto,
  29 + CustomerDetailRes,
  30 + CustomerListRes,
26 31 DictionaryQueryVO,
27 32 DictionaryVO,
28 33 Dto,
... ... @@ -30,7 +35,6 @@ import type {
30 35 MaterialListReply,
31 36 MaterialMaterialListReq,
32 37 MaterialStockRes,
33   - ModelAndView,
34 38 OrderAddVO,
35 39 OrderAuditLogQueryVO,
36 40 OrderBaseInfoQueryVO,
... ... @@ -54,6 +58,8 @@ import type {
54 58 ResetPwdVO,
55 59 ServerResult,
56 60 SysLogQueryVO,
  61 + SystemCustomFieldReq,
  62 + UpdateHirePurchaseDto,
57 63 UpdatePwdVO,
58 64 } from './definition';
59 65  
... ... @@ -233,7 +239,9 @@ export interface GetErrorResponse {
233 239 * @description
234 240 * OK
235 241 */
236   - 200: ModelAndView;
  242 + 200: {
  243 + [propertyName: string]: any;
  244 + };
237 245 /**
238 246 * @description
239 247 * Unauthorized
... ... @@ -254,9 +262,9 @@ export interface GetErrorResponse {
254 262 export type GetErrorResponseSuccess = GetErrorResponse[200];
255 263 /**
256 264 * @description
257   - * errorHtml
  265 + * error
258 266 * @tags basic-error-controller
259   - * @produces text/html
  267 + * @produces *
260 268 */
261 269 export const getError = /* #__PURE__ */ (() => {
262 270 const method = 'get';
... ... @@ -280,7 +288,9 @@ export interface PutErrorResponse {
280 288 * @description
281 289 * OK
282 290 */
283   - 200: ModelAndView;
  291 + 200: {
  292 + [propertyName: string]: any;
  293 + };
284 294 /**
285 295 * @description
286 296 * Created
... ... @@ -306,9 +316,9 @@ export interface PutErrorResponse {
306 316 export type PutErrorResponseSuccess = PutErrorResponse[200];
307 317 /**
308 318 * @description
309   - * errorHtml
  319 + * error
310 320 * @tags basic-error-controller
311   - * @produces text/html
  321 + * @produces *
312 322 * @consumes application/json
313 323 */
314 324 export const putError = /* #__PURE__ */ (() => {
... ... @@ -333,7 +343,9 @@ export interface PostErrorResponse {
333 343 * @description
334 344 * OK
335 345 */
336   - 200: ModelAndView;
  346 + 200: {
  347 + [propertyName: string]: any;
  348 + };
337 349 /**
338 350 * @description
339 351 * Created
... ... @@ -359,9 +371,9 @@ export interface PostErrorResponse {
359 371 export type PostErrorResponseSuccess = PostErrorResponse[200];
360 372 /**
361 373 * @description
362   - * errorHtml
  374 + * error
363 375 * @tags basic-error-controller
364   - * @produces text/html
  376 + * @produces *
365 377 * @consumes application/json
366 378 */
367 379 export const postError = /* #__PURE__ */ (() => {
... ... @@ -386,7 +398,9 @@ export interface DeleteErrorResponse {
386 398 * @description
387 399 * OK
388 400 */
389   - 200: ModelAndView;
  401 + 200: {
  402 + [propertyName: string]: any;
  403 + };
390 404 /**
391 405 * @description
392 406 * No Content
... ... @@ -407,9 +421,9 @@ export interface DeleteErrorResponse {
407 421 export type DeleteErrorResponseSuccess = DeleteErrorResponse[200];
408 422 /**
409 423 * @description
410   - * errorHtml
  424 + * error
411 425 * @tags basic-error-controller
412   - * @produces text/html
  426 + * @produces *
413 427 */
414 428 export const deleteError = /* #__PURE__ */ (() => {
415 429 const method = 'delete';
... ... @@ -433,7 +447,9 @@ export interface OptionsErrorResponse {
433 447 * @description
434 448 * OK
435 449 */
436   - 200: ModelAndView;
  450 + 200: {
  451 + [propertyName: string]: any;
  452 + };
437 453 /**
438 454 * @description
439 455 * No Content
... ... @@ -454,9 +470,9 @@ export interface OptionsErrorResponse {
454 470 export type OptionsErrorResponseSuccess = OptionsErrorResponse[200];
455 471 /**
456 472 * @description
457   - * errorHtml
  473 + * error
458 474 * @tags basic-error-controller
459   - * @produces text/html
  475 + * @produces *
460 476 * @consumes application/json
461 477 */
462 478 export const optionsError = /* #__PURE__ */ (() => {
... ... @@ -481,7 +497,9 @@ export interface HeadErrorResponse {
481 497 * @description
482 498 * OK
483 499 */
484   - 200: ModelAndView;
  500 + 200: {
  501 + [propertyName: string]: any;
  502 + };
485 503 /**
486 504 * @description
487 505 * No Content
... ... @@ -502,9 +520,9 @@ export interface HeadErrorResponse {
502 520 export type HeadErrorResponseSuccess = HeadErrorResponse[200];
503 521 /**
504 522 * @description
505   - * errorHtml
  523 + * error
506 524 * @tags basic-error-controller
507   - * @produces text/html
  525 + * @produces *
508 526 * @consumes application/json
509 527 */
510 528 export const headError = /* #__PURE__ */ (() => {
... ... @@ -529,7 +547,9 @@ export interface PatchErrorResponse {
529 547 * @description
530 548 * OK
531 549 */
532   - 200: ModelAndView;
  550 + 200: {
  551 + [propertyName: string]: any;
  552 + };
533 553 /**
534 554 * @description
535 555 * No Content
... ... @@ -550,9 +570,9 @@ export interface PatchErrorResponse {
550 570 export type PatchErrorResponseSuccess = PatchErrorResponse[200];
551 571 /**
552 572 * @description
553   - * errorHtml
  573 + * error
554 574 * @tags basic-error-controller
555   - * @produces text/html
  575 + * @produces *
556 576 * @consumes application/json
557 577 */
558 578 export const patchError = /* #__PURE__ */ (() => {
... ... @@ -571,6 +591,148 @@ export const patchError = /* #__PURE__ */ (() =&gt; {
571 591 return request;
572 592 })();
573 593  
  594 +/** @description request parameter type for postKingdeeRepCustomer */
  595 +export interface PostKingdeeRepCustomerOption {
  596 + /**
  597 + * @description
  598 + * req
  599 + */
  600 + body: {
  601 + /**
  602 + @description
  603 + req */
  604 + req: CustomerCustomerListReq;
  605 + };
  606 +}
  607 +
  608 +/** @description response type for postKingdeeRepCustomer */
  609 +export interface PostKingdeeRepCustomerResponse {
  610 + /**
  611 + * @description
  612 + * OK
  613 + */
  614 + 200: CustomerListRes;
  615 + /**
  616 + * @description
  617 + * Created
  618 + */
  619 + 201: any;
  620 + /**
  621 + * @description
  622 + * Unauthorized
  623 + */
  624 + 401: any;
  625 + /**
  626 + * @description
  627 + * Forbidden
  628 + */
  629 + 403: any;
  630 + /**
  631 + * @description
  632 + * Not Found
  633 + */
  634 + 404: any;
  635 +}
  636 +
  637 +export type PostKingdeeRepCustomerResponseSuccess =
  638 + PostKingdeeRepCustomerResponse[200];
  639 +/**
  640 + * @description
  641 + * listCustomers
  642 + * @tags kingdee-erp-controller
  643 + * @produces *
  644 + * @consumes application/json
  645 + */
  646 +export const postKingdeeRepCustomer = /* #__PURE__ */ (() => {
  647 + const method = 'post';
  648 + const url = '/kingdee/rep/customer';
  649 + function request(
  650 + option: PostKingdeeRepCustomerOption,
  651 + ): Promise<PostKingdeeRepCustomerResponseSuccess> {
  652 + return requester(request.url, {
  653 + method: request.method,
  654 + ...option,
  655 + }) as unknown as Promise<PostKingdeeRepCustomerResponseSuccess>;
  656 + }
  657 +
  658 + /** http method */
  659 + request.method = method;
  660 + /** request url */
  661 + request.url = url;
  662 + return request;
  663 +})();
  664 +
  665 +/** @description request parameter type for postKingdeeRepCustomerDetail */
  666 +export interface PostKingdeeRepCustomerDetailOption {
  667 + /**
  668 + * @description
  669 + * dto
  670 + */
  671 + body: {
  672 + /**
  673 + @description
  674 + dto */
  675 + dto: CustomerDetailDto;
  676 + };
  677 +}
  678 +
  679 +/** @description response type for postKingdeeRepCustomerDetail */
  680 +export interface PostKingdeeRepCustomerDetailResponse {
  681 + /**
  682 + * @description
  683 + * OK
  684 + */
  685 + 200: CustomerDetailRes;
  686 + /**
  687 + * @description
  688 + * Created
  689 + */
  690 + 201: any;
  691 + /**
  692 + * @description
  693 + * Unauthorized
  694 + */
  695 + 401: any;
  696 + /**
  697 + * @description
  698 + * Forbidden
  699 + */
  700 + 403: any;
  701 + /**
  702 + * @description
  703 + * Not Found
  704 + */
  705 + 404: any;
  706 +}
  707 +
  708 +export type PostKingdeeRepCustomerDetailResponseSuccess =
  709 + PostKingdeeRepCustomerDetailResponse[200];
  710 +/**
  711 + * @description
  712 + * getCustomerDetail
  713 + * @tags kingdee-erp-controller
  714 + * @produces *
  715 + * @consumes application/json
  716 + */
  717 +export const postKingdeeRepCustomerDetail = /* #__PURE__ */ (() => {
  718 + const method = 'post';
  719 + const url = '/kingdee/rep/customerDetail';
  720 + function request(
  721 + option: PostKingdeeRepCustomerDetailOption,
  722 + ): Promise<PostKingdeeRepCustomerDetailResponseSuccess> {
  723 + return requester(request.url, {
  724 + method: request.method,
  725 + ...option,
  726 + }) as unknown as Promise<PostKingdeeRepCustomerDetailResponseSuccess>;
  727 + }
  728 +
  729 + /** http method */
  730 + request.method = method;
  731 + /** request url */
  732 + request.url = url;
  733 + return request;
  734 +})();
  735 +
574 736 /** @description response type for getKingdeeRepGetToken */
575 737 export interface GetKingdeeRepGetTokenResponse {
576 738 /**
... ... @@ -761,6 +923,77 @@ export const postKingdeeRepMaterialStock = /* #__PURE__ */ (() =&gt; {
761 923 return request;
762 924 })();
763 925  
  926 +/** @description request parameter type for postKingdeeRepSystemCustomField */
  927 +export interface PostKingdeeRepSystemCustomFieldOption {
  928 + /**
  929 + * @description
  930 + * req
  931 + */
  932 + body: {
  933 + /**
  934 + @description
  935 + req */
  936 + req: SystemCustomFieldReq;
  937 + };
  938 +}
  939 +
  940 +/** @description response type for postKingdeeRepSystemCustomField */
  941 +export interface PostKingdeeRepSystemCustomFieldResponse {
  942 + /**
  943 + * @description
  944 + * OK
  945 + */
  946 + 200: CustomFieldRes;
  947 + /**
  948 + * @description
  949 + * Created
  950 + */
  951 + 201: any;
  952 + /**
  953 + * @description
  954 + * Unauthorized
  955 + */
  956 + 401: any;
  957 + /**
  958 + * @description
  959 + * Forbidden
  960 + */
  961 + 403: any;
  962 + /**
  963 + * @description
  964 + * Not Found
  965 + */
  966 + 404: any;
  967 +}
  968 +
  969 +export type PostKingdeeRepSystemCustomFieldResponseSuccess =
  970 + PostKingdeeRepSystemCustomFieldResponse[200];
  971 +/**
  972 + * @description
  973 + * listCustomFields
  974 + * @tags kingdee-erp-controller
  975 + * @produces *
  976 + * @consumes application/json
  977 + */
  978 +export const postKingdeeRepSystemCustomField = /* #__PURE__ */ (() => {
  979 + const method = 'post';
  980 + const url = '/kingdee/rep/systemCustomField';
  981 + function request(
  982 + option: PostKingdeeRepSystemCustomFieldOption,
  983 + ): Promise<PostKingdeeRepSystemCustomFieldResponseSuccess> {
  984 + return requester(request.url, {
  985 + method: request.method,
  986 + ...option,
  987 + }) as unknown as Promise<PostKingdeeRepSystemCustomFieldResponseSuccess>;
  988 + }
  989 +
  990 + /** http method */
  991 + request.method = method;
  992 + /** request url */
  993 + request.url = url;
  994 + return request;
  995 +})();
  996 +
764 997 /** @description request parameter type for postOfficialWebsiteUploadAliOss */
765 998 export interface PostOfficialWebsiteUploadAliOssOption {
766 999 /**
... ... @@ -8283,7 +8516,7 @@ export interface PostServiceOrderUpdateHirePurchaseOption {
8283 8516 /**
8284 8517 @description
8285 8518 dto */
8286   - dto: Dto;
  8519 + dto: UpdateHirePurchaseDto;
8287 8520 };
8288 8521 }
8289 8522  
... ...