Commit 0b6aa8d1c1c517cb1368bff717f98cdf82ff92d5

Authored by zhongnanhuang
1 parent d3ac1455

feat: update 新版本合并

.umirc.ts
... ... @@ -59,6 +59,13 @@ export default defineConfig({
59 59 access: 'canReadAdminAndFinance',
60 60 },
61 61 {
  62 + name: '预存管理',
  63 + path: '/prepaidManage',
  64 + component: './Prepaid',
  65 + icon: 'AccountBookOutlined',
  66 + access: 'canReadAdminAndFinanceAndSales',
  67 + },
  68 + {
62 69 name: '打印',
63 70 path: '/print',
64 71 component: './OrderPrint',
... ...
src/access.ts
... ... @@ -2,11 +2,18 @@ export default (initialState: API.UserInfo) => {
2 2 // 在这里按照初始化数据定义项目中的权限,统一管理
3 3 // 参考文档 https://umijs.org/docs/max/access
4 4 const { roleSmallVO } = initialState;
5   -
  5 + const canReadAdmin = roleSmallVO?.code === 'admin';
  6 + const canReadProcure = roleSmallVO?.code === 'procure';
  7 + const canReadFinance = roleSmallVO?.code === 'finance';
  8 + const canReadSales =
  9 + roleSmallVO?.code === 'salesManager' ||
  10 + roleSmallVO?.code === 'salesRepresentative';
6 11 return {
7   - canReadAdmin: roleSmallVO?.code === 'admin',
8   - canReadProcure: roleSmallVO?.code === 'procure',
9   - canReadAdminAndFinance:
10   - roleSmallVO?.code === 'admin' || roleSmallVO?.code === 'finance',
  12 + canReadAdmin: canReadAdmin,
  13 + canReadProcure: canReadProcure,
  14 + canReadAdminAndFinance: canReadFinance || canReadAdmin,
  15 + canReadSales: canReadSales,
  16 + canReadAdminAndFinanceAndSales:
  17 + canReadFinance || canReadAdmin || canReadSales,
11 18 };
12 19 };
... ...
src/pages/Order/components/CheckModal.tsx
... ... @@ -27,11 +27,7 @@ import {
27 27 COMFIR_RECEIPT_IMAGES_NUMBER,
28 28 } from '../constant';
29 29 // import { cloneDeep } from 'lodash';
30   -import {
31   - enumValueToLabel,
32   - getAliYunOSSFileNameFromUrl,
33   - transImageFile,
34   -} from '@/utils';
  30 +import { enumValueToLabel, transImageFile } from '@/utils';
35 31 import { PlusOutlined } from '@ant-design/icons';
36 32 import { cloneDeep } from 'lodash';
37 33  
... ... @@ -60,10 +56,11 @@ export default ({
60 56 const handleCancel = () => setPreviewOpen(false);
61 57 const [messageApi, contextHolder] = message.useMessage();
62 58 const [form] = Form.useForm<{ name: string; company: string }>();
63   - let subOrderIds: any[] = subOrders.map((subOrder) => subOrder.id);
  59 + let subOrderIds: any[] = subOrders?.map((subOrder) => subOrder.id);
64 60 const [mainOrderId] = useState(data.id);
65 61  
66 62 const [afterSalesInfo, setAfterSalesInfo] = useState<any>();
  63 + const [prepaidProofImages, setPrepaidProofImages] = useState<any[]>([]);
67 64  
68 65 /**
69 66 * 审核类型
... ... @@ -81,11 +78,12 @@ export default ({
81 78 // });
82 79  
83 80 //附件
84   - let annex = subOrders[0].afterAnnexList;
  81 + let annex = subOrders[0].afterSalesAnnexList;
  82 + let index = 1;
85 83 let annexLinks = annex?.map((f) => {
86 84 return (
87 85 <Button className="p-0 pr-1" type="link" key="key" href={f}>
88   - {getAliYunOSSFileNameFromUrl(f)}
  86 + {'附件' + index++}
89 87 </Button>
90 88 );
91 89 });
... ... @@ -132,6 +130,16 @@ export default ({
132 130 //去重
133 131 paymentReceiptsImagesList = [...new Set(paymentReceiptsImagesList)];
134 132 setPymentReceiptsImages(paymentReceiptsImagesList);
  133 +
  134 + //预存审核的凭证
  135 + let proofImages: any[] = [];
  136 + subOrders?.forEach((item) => {
  137 + let images = item.proofImages;
  138 + if (images !== null && images !== undefined) {
  139 + proofImages.push(...images);
  140 + }
  141 + });
  142 + setPrepaidProofImages(proofImages);
135 143 }, []);
136 144  
137 145 const handleChange: UploadProps['onChange'] = ({ fileList: newFileList }) => {
... ... @@ -591,6 +599,38 @@ export default ({
591 599 <></>
592 600 )}
593 601  
  602 + {checkType(CHECK_TYPE.PREPAID_AUDIT) && (
  603 + <>
  604 + <Divider orientation="center">
  605 + <span className="text-sm">凭证</span>
  606 + </Divider>
  607 + <Image.PreviewGroup
  608 + className="mr-10"
  609 + preview={{
  610 + onChange: (current, prev) =>
  611 + console.log(`current index: ${current}, prev index: ${prev}`),
  612 + }}
  613 + >
  614 + {prepaidProofImages.map((url) => (
  615 + <>
  616 + <Image width={120} src={url} /> <Divider type="vertical" />
  617 + </>
  618 + ))}
  619 + </Image.PreviewGroup>
  620 + <Divider></Divider>
  621 + </>
  622 + )}
  623 +
  624 + {checkType('prepaidAudit') ? (
  625 + <div>请特别注意手机号码和充值金额。</div>
  626 + ) : (
  627 + <div>请特别注意订单总金额与订单金额。</div>
  628 + )}
  629 + <ProFormTextArea
  630 + width="lg"
  631 + name="name"
  632 + placeholder="若驳回,请填写驳回理由"
  633 + />
594 634 {checkType(CHECK_TYPE.FINALCIAL) ? (
595 635 <>
596 636 <div className="pb-4 text-xs decoration-gray-50">
... ...
src/pages/Order/components/DeliverInfoDrawer.tsx
... ... @@ -4,7 +4,6 @@ import { Col, Drawer, Row } from &#39;antd&#39;;
4 4 import { PAYEE_OPTIONS } from '../constant';
5 5  
6 6 export default ({ data, onClose }) => {
7   - console.log(data);
8 7 return (
9 8 <>
10 9 <Drawer
... ...
src/pages/Order/components/FinancialDrawer.tsx
... ... @@ -54,6 +54,7 @@ export default ({
54 54 subOrders?.forEach((item: any) => {
55 55 distinctMap.set(item.mainOrderId, item.totalPayment);
56 56 });
  57 +
57 58 let sum = 0;
58 59 for (let p of distinctMap.values()) {
59 60 sum = FloatAdd(p, sum);
... ...
src/pages/Order/components/OrderDrawer.tsx
1 1 import { RESPONSE_CODE } from '@/constants/enum';
2 2 import {
3   - postKingdeeRepCustomer,
  3 + postCanrdApiUserAddressList,
  4 + postCanrdApiUserList,
4 5 postKingdeeRepCustomerDetail,
5 6 postKingdeeRepMaterial,
6 7 postKingdeeRepMaterialUnit,
... ... @@ -19,6 +20,7 @@ import {
19 20 getAliYunOSSFileNameFromUrl,
20 21 getUserInfo,
21 22 } from '@/utils';
  23 +import { getDefaultString } from '@/utils/StringUtil';
22 24 import { getTeacherCustomFieldNumber } from '@/utils/kingdee';
23 25 import {
24 26 DrawerForm,
... ... @@ -53,10 +55,12 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
53 55 const [submitBtnLoading, setSubmitBtnLoading] = useState(false);
54 56 const [drawerTitle, setDrawerTitle] = useState('');
55 57 const [hasLocalData, setHasLocalData] = useState(false);
56   - const [customer, setCustomer] = useState({});
  58 + // const [customer, setCustomer] = useState({});
57 59 const [localSaveLoading, setLocalSaveLoading] = useState(false);
58 60 const [kingdeeCstomerModalVisible, setKingdeeCstomerModalVisible] =
59 61 useState(false);
  62 + const [paymentMethod, setPaymentMethod] = useState('');
  63 + const [customerRequestCount, setCustomerRequestCount] = useState(0);
60 64 const [
61 65 productParametersDisabledFlagList,
62 66 setProductParametersDisabledFlagList,
... ... @@ -65,8 +69,8 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
65 69 // [],
66 70 // ); //商品的仓库选项
67 71 const [productUnitOptionsList, setProductUnitOptionsList] = useState([]); //商品的单位选项
68   - const [productCustomerContactOptions, setProductCustomerContactOptions] =
69   - useState([]); //客户的收货人选项
  72 + // const [productCustomerContactOptions, setProductCustomerContactOptions] =
  73 + // useState([]); //客户的收货人选项
70 74 const [form] = Form.useForm<{
71 75 isLocalData: boolean;
72 76 salesCode: '';
... ... @@ -188,16 +192,16 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
188 192 let existFlag = false;
189 193  
190 194 //填充收货人选项
191   - let newProductCustomerContactOptions = res?.bomentity?.map((item) => {
192   - let address =
193   - item.contact_person + ',' + item.mobile + ',' + item.contact_address;
194   - if (address === data.contactAddress) {
195   - existFlag = true;
196   - }
197   - return { ...item, label: address, value: address };
198   - });
  195 + // let newProductCustomerContactOptions = res?.bomentity?.map((item) => {
  196 + // let address =
  197 + // item.contact_person + ',' + item.mobile + ',' + item.contact_address;
  198 + // if (address === data.contactAddress) {
  199 + // existFlag = true;
  200 + // }
  201 + // return { ...item, label: address, value: address };
  202 + // });
199 203  
200   - setProductCustomerContactOptions(newProductCustomerContactOptions);
  204 + // setProductCustomerContactOptions(newProductCustomerContactOptions);
201 205  
202 206 if (!existFlag) {
203 207 //清空原来的收货人信息
... ... @@ -211,25 +215,25 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
211 215 /**
212 216 * 回显金蝶信息
213 217 */
214   - async function showKindeeInfo() {
215   - //客户信息
216   - if (copyData.customerId) {
217   - //客户回显
218   - autoFillCustomerContactSelectOptions(copyData.customerId);
219   - }
220   -
221   - //商品单位回显
222   - let list = copyData?.subOrderInformationLists;
223   - if (list) {
224   - let newProductUnitOptionsList = [...productUnitOptionsList];
225   - for (let i = 0; i < list.length; i++) {
226   - newProductUnitOptionsList[i] = [
227   - { label: list[i].unit, value: list[i].unitId },
228   - ];
229   - }
230   - setProductUnitOptionsList(newProductUnitOptionsList);
231   - }
232   - }
  218 + // async function showKindeeInfo() {
  219 + // //客户信息
  220 + // if (copyData.customerId) {
  221 + // //客户回显
  222 + // autoFillCustomerContactSelectOptions(copyData.customerId);
  223 + // }
  224 +
  225 + // //商品单位回显
  226 + // let list = copyData?.subOrderInformationLists;
  227 + // if (list) {
  228 + // let newProductUnitOptionsList = [...productUnitOptionsList];
  229 + // for (let i = 0; i < list.length; i++) {
  230 + // newProductUnitOptionsList[i] = [
  231 + // { label: list[i].unit, value: list[i].unitId },
  232 + // ];
  233 + // }
  234 + // setProductUnitOptionsList(newProductUnitOptionsList);
  235 + // }
  236 + // }
233 237  
234 238 /**
235 239 * 构建回显数据
... ... @@ -262,6 +266,10 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
262 266 copyData.invoicingStatus =
263 267 copyData.subOrderInformationLists[0].invoicingStatus;
264 268  
  269 + copyData.customerNameString = copyData.customerName;
  270 +
  271 + setPaymentMethod(copyData.paymentMethod);
  272 +
265 273 //子订单数据处理:子订单在表单中的命名为list
266 274 let i = 0;
267 275 let newList = copyData.subOrderInformationLists?.map((item) => {
... ... @@ -285,17 +293,15 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
285 293 listItem.shippingWarehouse = 'DALANG_WAREHOUSE';
286 294 }
287 295 }
288   -
289 296 setInvoicingStatus(copyData.invoicingStatus);
290 297 form.setFieldsValue({ ...copyData });
291   -
292 298 //如果是新建,需要清空list
293 299 if (optType('add')) {
294 300 form.resetFields(['list']);
295 301 }
296 302  
297 303 if (!optType('after-sales-check')) {
298   - showKindeeInfo();
  304 + // showKindeeInfo();
299 305 }
300 306 }
301 307 }
... ... @@ -492,12 +498,33 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
492 498 * @param option 收货人信息
493 499 */
494 500 async function autoFillCustomerInfo(option: any) {
495   - form.setFieldValue('customerShippingAddress', option.contact_address);
496   - form.setFieldValue('customerContactNumber', option.mobile);
497   - form.setFieldValue('customerName', option.contact_person);
  501 + if (option.type === 'add') {
  502 + form.setFieldValue('customerShippingAddress', undefined);
  503 + form.setFieldValue('customerContactNumber', undefined);
  504 + form.setFieldValue('institution', undefined);
  505 + form.setFieldValue('institutionContactName', undefined);
  506 + form.setFieldValue('customerShippingAddress', undefined);
  507 + form.setFieldValue('customerNameString', option.name);
  508 + } else {
  509 + form.setFieldValue('customerShippingAddress', option.fullAddress);
  510 + form.setFieldValue('customerContactNumber', option.phone);
  511 + form.setFieldValue('institution', option.institution);
  512 + form.setFieldValue(
  513 + 'institutionContactName',
  514 + option.institutionContactName,
  515 + );
  516 + form.setFieldValue(
  517 + 'customerShippingAddress',
  518 + getDefaultString(option.province) +
  519 + getDefaultString(option.city) +
  520 + getDefaultString(option.district) +
  521 + getDefaultString(option.detail),
  522 + );
  523 + form.setFieldValue('customerNameString', option.realName);
  524 + }
498 525  
499 526 //erp收货地址:需要与客户联系人中的地址一样:姓名,手机号,地址
500   - form.setFieldValue('contactAddress', option.value);
  527 + // form.setFieldValue('contactAddress', option.value);
501 528 }
502 529  
503 530 /**
... ... @@ -559,18 +586,18 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
559 586 * 检查客户是否可以编辑
560 587 * @returns
561 588 */
562   - const customerEditable = () => {
563   - let erpCustomerId = form.getFieldValue('erpCustomerId');
564   - if (
565   - optType('after-sales-check') ||
566   - erpCustomerId === null ||
567   - erpCustomerId === undefined
568   - ) {
569   - return false;
570   - }
571   -
572   - return true;
573   - };
  589 + // const customerEditable = () => {
  590 + // let erpCustomerId = form.getFieldValue('erpCustomerId');
  591 + // if (
  592 + // optType('after-sales-check') ||
  593 + // erpCustomerId === null ||
  594 + // erpCustomerId === undefined
  595 + // ) {
  596 + // return false;
  597 + // }
  598 +
  599 + // return true;
  600 + // };
574 601  
575 602 /**
576 603 * 是否有草稿
... ... @@ -624,6 +651,7 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
624 651 if (preOrderData) {
625 652 let formData = JSON.parse(preOrderData);
626 653 form.setFieldsValue(formData);
  654 + setPaymentMethod(formData.paymentMethod);
627 655 }
628 656 }
629 657  
... ... @@ -737,6 +765,7 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
737 765 values.list = list;
738 766 values.institution = values.institution?.trim();
739 767 values.institutionContactName = values.institutionContactName?.trim();
  768 + values.customerName = values.customerNameString.trim();
740 769  
741 770 if (typeof values.erpCustomerId !== 'string') {
742 771 values.erpCustomerId = values.erpCustomerId?.id;
... ... @@ -878,6 +907,11 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
878 907 name="erpCustomerName"
879 908 hidden
880 909 ></ProFormText>
  910 + <ProFormText
  911 + key="customerNameString"
  912 + name="customerNameString"
  913 + hidden
  914 + ></ProFormText>
881 915  
882 916 <ProFormText
883 917 key="contactAddress"
... ... @@ -886,58 +920,21 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
886 920 ></ProFormText>
887 921  
888 922 <ProFormSelect
889   - name="erpCustomerId"
890   - key="erpCustomerId"
  923 + key="customerName"
  924 + label="收货人"
891 925 width="lg"
892 926 showSearch
893   - disabled={optType('after-sales-check')}
894   - tooltip="空格将作为或条件。例如输入[北京 广东],那么查找出来的将是包含[北京]或者包含[广东]的搜索结果"
895   - label={
896   - <>
897   - <span>客户</span>
898   - <span
899   - className={
900   - 'pl-2 text-xs cursor-pointer ' +
901   - (customerEditable() ? 'text-[#1677ff]' : 'text-gray-400')
902   - }
903   - onClick={() => {
904   - if (!customerEditable()) {
905   - return;
906   - }
907   - let customerId = form.getFieldValue('erpCustomerId');
908   - if (typeof customerId === 'string') {
909   - setCustomer({ ...customer, id: customerId });
910   - } else {
911   - setCustomer({ ...customer, id: customerId.id });
912   - }
913   - setKingdeeCstomerModalVisible(true);
914   - }}
915   - >
916   - 编辑客户信息
917   - </span>
918   - </>
919   - }
920   - placeholder="请选择客户"
921   - rules={[{ required: true, message: '客户必填' }]}
  927 + name="customerName"
  928 + placeholder="请选择收货人"
  929 + rules={[{ required: true, message: '收货人必填' }]}
922 930 onChange={(_, option) => {
923   - //新增客户
924   - if (option?.type === 'add') {
925   - setCustomer({ name: option?.name });
926   - setKingdeeCstomerModalVisible(true);
927   - return;
928   - }
929   - autoFillCustomerContactSelectOptions(option?.id);
930   - }}
931   - initialValue={{
932   - label: copyData?.erpCustomerName,
933   - value: copyData?.customerId,
934   - id: copyData?.customerId,
  931 + autoFillCustomerInfo(option);
935 932 }}
936 933 fieldProps={{
937 934 filterOption() {
938 935 return true;
939 936 },
940   - optionItemRender(item) {
  937 + optionItemRender(item: any) {
941 938 if (item.type === 'add') {
942 939 return (
943 940 <div title={item.name + '(新增客户)'}>
... ... @@ -947,23 +944,43 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
947 944 </div>
948 945 );
949 946 }
  947 +
  948 + let title = '';
  949 + let spanText = '';
  950 + let realName = item.realName;
  951 + let phone = item.phone;
  952 + let province = item.province;
  953 + let city = item.city;
  954 + let district = item.district;
  955 + let detail = item.detail;
  956 + let institution = item.institution;
  957 + let institutionContactName = item.institutionContactName;
  958 +
  959 + title =
  960 + getDefaultString(realName) +
  961 + '|' +
  962 + getDefaultString(phone) +
  963 + '|' +
  964 + getDefaultString(institution) +
  965 + '|' +
  966 + getDefaultString(institutionContactName) +
  967 + '|' +
  968 + getDefaultString(province) +
  969 + getDefaultString(city) +
  970 + getDefaultString(district) +
  971 + getDefaultString(detail);
  972 +
  973 + spanText =
  974 + getDefaultString(realName) +
  975 + '|' +
  976 + getDefaultString(phone) +
  977 + '|' +
  978 + getDefaultString(institution) +
  979 + '|' +
  980 + getDefaultString(institutionContactName);
950 981 return (
951   - <div
952   - title={
953   - item.name +
954   - ' | ' +
955   - item.customerContactNumber +
956   - ' | ' +
957   - (item.customerShippingAddress === undefined
958   - ? '无地址'
959   - : item.customerShippingAddress) +
960   - ' | ' +
961   - item.institutionContactName +
962   - ' | ' +
963   - item.institution
964   - }
965   - >
966   - <span style={{ color: '#333333' }}>{item.name}</span>
  982 + <div title={title}>
  983 + <span style={{ color: '#333333' }}>{spanText}</span>
967 984 </div>
968 985 );
969 986 },
... ... @@ -971,10 +988,10 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
971 988 debounceTime={1000}
972 989 request={async (value, {}) => {
973 990 const keywords = value.keyWords;
974   - const res = await postKingdeeRepCustomer({
975   - data: { search: keywords },
  991 + const res = await postCanrdApiUserAddressList({
  992 + data: { keywords: keywords },
976 993 });
977   - let options = res?.rows?.map((c: any) => {
  994 + let options = res?.data?.map((c: any) => {
978 995 return {
979 996 ...c,
980 997 label: c.name,
... ... @@ -982,7 +999,27 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
982 999 key: c.id,
983 1000 };
984 1001 });
985   -
  1002 + console.log(form.getFieldsValue());
  1003 + console.log(form.getFieldValue('customerName'));
  1004 + //判断如果是在修改或者复制,那么第一次请求的时候,默认生成当前收货人信息的option
  1005 + let realName = form.getFieldValue('customerName');
  1006 + let detail = form.getFieldValue('customerShippingAddress');
  1007 + let institution = form.getFieldValue('institution');
  1008 + let institutionContactName = form.getFieldValue(
  1009 + 'institutionContactNam',
  1010 + );
  1011 + if (customerRequestCount === 0) {
  1012 + setCustomerRequestCount(1);
  1013 + options.push({
  1014 + label: realName,
  1015 + value: realName,
  1016 + key: realName,
  1017 + realName: realName,
  1018 + detail: detail,
  1019 + institution: institution,
  1020 + institutionContactName: institutionContactName,
  1021 + });
  1022 + }
986 1023 //第一个商品默认为要新增客户
987 1024 if (keywords.trim() !== '') {
988 1025 options.unshift({
... ... @@ -997,21 +1034,6 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
997 1034 return options;
998 1035 }}
999 1036 />
1000   - <ProFormSelect
1001   - key="customerName"
1002   - label="收货人"
1003   - width="lg"
1004   - showSearch
1005   - name="customerName"
1006   - placeholder="请选择收货人"
1007   - rules={[{ required: true, message: '收货人必填' }]}
1008   - onChange={(_, option) => {
1009   - autoFillCustomerInfo(option);
1010   - }}
1011   - initialValue={data.contactAddress}
1012   - options={productCustomerContactOptions}
1013   - disabled={optType('after-sales-check')}
1014   - />
1015 1037  
1016 1038 <ProFormText
1017 1039 width="lg"
... ... @@ -1020,7 +1042,6 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
1020 1042 label="联系方式"
1021 1043 placeholder="请输入联系方式"
1022 1044 rules={[{ required: true, message: '联系方式必填' }]}
1023   - disabled
1024 1045 />
1025 1046 <ProFormText
1026 1047 width="lg"
... ... @@ -1029,7 +1050,6 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
1029 1050 label="单位"
1030 1051 placeholder="请输入单位"
1031 1052 rules={[{ required: true, message: '单位必填' }]}
1032   - disabled
1033 1053 />
1034 1054 <ProFormText
1035 1055 width="lg"
... ... @@ -1038,7 +1058,6 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
1038 1058 label="课题组"
1039 1059 placeholder="请输入课题组"
1040 1060 rules={[{ required: true, message: '课题组必填' }]}
1041   - disabled
1042 1061 />
1043 1062 <ProFormTextArea
1044 1063 width="lg"
... ... @@ -1047,7 +1066,6 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
1047 1066 label="收货地址"
1048 1067 placeholder="请输入收货地址"
1049 1068 rules={[{ required: true, message: '收货地址必填' }]}
1050   - disabled
1051 1069 />
1052 1070 <div id="total-payment">
1053 1071 <ProFormDigit
... ... @@ -1089,11 +1107,69 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
1089 1107 width="lg"
1090 1108 key="paymentMethod"
1091 1109 label="支付方式"
  1110 + onChange={(val: any) => {
  1111 + setPaymentMethod(val);
  1112 + }}
1092 1113 options={enumToSelect(PAYMENT_METHOD_OPTIONS)}
1093 1114 rules={[{ required: true, message: '支付方式必填' }]}
1094 1115 disabled={optType('after-sales-check')}
1095 1116 />
1096 1117 <ProFormSelect
  1118 + name="prepaidUid"
  1119 + key="prepaidUid"
  1120 + width="lg"
  1121 + hidden={paymentMethod !== 'WITHHOLDING_ADVANCE_DEPOSIT'}
  1122 + showSearch
  1123 + label="预存账号"
  1124 + onChange={(option: any) => {
  1125 + form.setFieldValue('prepaidAmount', option.nowMoney);
  1126 + }}
  1127 + placeholder="请选择预存账号"
  1128 + rules={[
  1129 + {
  1130 + required: paymentMethod === 'WITHHOLDING_ADVANCE_DEPOSIT',
  1131 + message: '支付方式为扣预存时,预存账号必填',
  1132 + },
  1133 + ]}
  1134 + fieldProps={{
  1135 + filterOption() {
  1136 + return true;
  1137 + },
  1138 + optionItemRender(item) {
  1139 + let name =
  1140 + item.label +
  1141 + ' | ' +
  1142 + item.institution +
  1143 + ' | ' +
  1144 + item.nowMoney +
  1145 + '¥' +
  1146 + ' | ' +
  1147 + item.phone;
  1148 + return (
  1149 + <div title={name}>
  1150 + <span style={{ color: '#333333' }}>{name}</span>
  1151 + </div>
  1152 + );
  1153 + },
  1154 + }}
  1155 + debounceTime={1000}
  1156 + request={async (value, {}) => {
  1157 + const keywords = value.keyWords;
  1158 + const res = await postCanrdApiUserList({
  1159 + data: { keywords: keywords, pageSize: 1000000 },
  1160 + });
  1161 + let options = res?.data?.data?.map((c: any) => {
  1162 + return {
  1163 + ...c,
  1164 + label: c.realName,
  1165 + value: c.uid,
  1166 + key: c.uid,
  1167 + };
  1168 + });
  1169 + return options;
  1170 + }}
  1171 + />
  1172 + <ProFormSelect
1097 1173 placeholder="选择是否需要开票"
1098 1174 name="invoicingStatus"
1099 1175 width="lg"
... ...
src/pages/Order/constant.ts
... ... @@ -8,6 +8,7 @@ export const PAYMENT_CHANNEL_OPTIONS = {
8 8 WECHAT: '微信',
9 9 BANK_TRANSFER: '银行转账',
10 10 BALANCE: '预存款',
  11 + OFFLINE: '线下支付',
11 12 };
12 13  
13 14 export const RECEIPTS_RECORD_TYPES = {
... ... @@ -91,7 +92,6 @@ export const INVOCING_STATUS = {
91 92 * 采购审核
92 93 */
93 94 export const CHECK_TYPE = {
94   - CONFIRM_DELIVER: 'CONFIRM_DELIVER',
95 95 WEARHOUSE_KEEPER: 'WEARHOUSE_KEEPER',
96 96 FINALCIAL: 'FINALCIAL',
97 97 PROCURE: 'PROCURE',
... ... @@ -104,7 +104,7 @@ export const CHECK_TYPE = {
104 104 MODIFY_LEADER_AUDIT: 'MODIFY_LEADER_AUDIT',
105 105 URGENT_INVOICE_AUDITING: 'URGENT_INVOICE_AUDITING',
106 106 PAYMENT_RECEIPTS_AUDIT: 'PAYMENT_RECEIPTS_AUDIT',
107   - CONFIRM_REISSUE: 'CONFIRM_REISSUE',
  107 + PREPAID_AUDIT: 'PREPAID_AUDIT',
108 108 };
109 109  
110 110 /**
... ... @@ -392,7 +392,11 @@ export const HISTORY_OPT_TYPE = new Map&lt;string, string&gt;([
392 392 ['warehouse_audit', '仓库审核'],
393 393 ['post_audit', '后置审核'],
394 394 ['applyModify', '申请修改订单信息'],
395   - ['OUTSIDE_SYSTEM_PUSH', '外部系统推送了本订单'],
  395 + ['OUTSIDE_SYSTEM_PUSH', '外部系统创建订单'],
  396 + ['api_applyAddressModify', '外部系统申请修改收货地址'],
  397 + ['api_applyAfterSales', '外部系统申请售后'],
  398 + ['api_toEvaluated', '外部系统评价'],
  399 + ['api_confirmReceive', '外部系统确认收货'],
396 400 ]);
397 401  
398 402 export const MAIN_ORDER_COLUMNS = [
... ...
src/pages/Order/index.tsx
... ... @@ -4128,6 +4128,9 @@ const OrderPage = () =&gt; {
4128 4128 for (let row of data?.data) {
4129 4129 let mianOrderId = row.id;
4130 4130 let subOrderIds = row.subOrderInformationLists?.map((item) => {
  4131 + //目前子订单存储的totalPayment不准确,这里重新处理取主订单的totalPayment
  4132 + //totalPayment在财务开票计算金额时使用到
  4133 + item.totalPayment = row.totalPayment;
4131 4134 return item.id;
4132 4135 });
4133 4136 mainOrderIdSubOrderIdRelationsMap.set(mianOrderId, subOrderIds);
... ...
src/pages/Prepaid/components/BalanceChangeRecordsModal.tsx 0 → 100644
  1 +import EllipsisDiv from '@/components/Div/EllipsisDiv';
  2 +import { postCanrdApiUserCenterInfo } from '@/services';
  3 +import { ModalForm, ProTable } from '@ant-design/pro-components';
  4 +import { Form } from 'antd';
  5 +import { BALANCE_CHANGE_COLUMNS } from '../constant';
  6 +import '../index.less';
  7 +
  8 +// import { cloneDeep } from 'lodash';
  9 +export default ({ setVisible, userInfoObj, onClose }) => {
  10 + const [form] = Form.useForm<{ name: string; company: string }>();
  11 + const uid = userInfoObj?.uid;
  12 +
  13 + const balanceColumnsInit = () => {
  14 + let columns = BALANCE_CHANGE_COLUMNS.map((item) => {
  15 + let newItem = { ...item };
  16 + let dataIndex = item.dataIndex;
  17 +
  18 + newItem.render = (text, record) => {
  19 + let textValue = record[dataIndex];
  20 + return <EllipsisDiv text={textValue} />;
  21 + };
  22 +
  23 + return newItem;
  24 + });
  25 + return columns;
  26 + };
  27 +
  28 + return (
  29 + <div className="prepaid-index">
  30 + <ModalForm<{
  31 + name: string;
  32 + company: string;
  33 + }>
  34 + width={1000}
  35 + open
  36 + title="余额变动记录"
  37 + form={form}
  38 + autoFocusFirstInput
  39 + submitter={{
  40 + submitButtonProps: {
  41 + style: {
  42 + display: 'none',
  43 + },
  44 + },
  45 + }}
  46 + modalProps={{
  47 + okText: '通过',
  48 + cancelText: '关闭',
  49 + destroyOnClose: true,
  50 + onCancel: () => {
  51 + setVisible(false);
  52 + },
  53 + }}
  54 + onFinish={async (values) => {
  55 + console.log(values);
  56 + onClose();
  57 + }}
  58 + onOpenChange={setVisible}
  59 + >
  60 + <ProTable
  61 + columns={balanceColumnsInit()}
  62 + cardBordered
  63 + pagination={{
  64 + pageSize: 10,
  65 + }}
  66 + request={async (params) => {
  67 + const res = await postCanrdApiUserCenterInfo({
  68 + data: { ...params, uid: uid, type: 4 },
  69 + });
  70 + return {
  71 + data: res?.data?.data || [],
  72 + total: res?.data?.total || 0,
  73 + };
  74 + }}
  75 + columnsState={{
  76 + persistenceKey: 'pro-table-singe-balance',
  77 + persistenceType: 'localStorage',
  78 + defaultValue: {
  79 + option: { fixed: 'right', disable: true },
  80 + },
  81 + onChange(value) {
  82 + console.log('value: ', value);
  83 + },
  84 + }}
  85 + rowKey="id"
  86 + search={false}
  87 + options={{
  88 + setting: {
  89 + listsHeight: 400,
  90 + },
  91 + }}
  92 + form={{}}
  93 + dateFormatter="string"
  94 + headerTitle="余额变动记录"
  95 + scroll={{ x: 1400 }}
  96 + toolBarRender={() => []}
  97 + />
  98 + </ModalForm>
  99 + </div>
  100 + );
  101 +};
... ...
src/pages/Prepaid/components/RechargePrepaymentModal.tsx 0 → 100644
  1 +import { RESPONSE_CODE } from '@/constants/enum';
  2 +import {
  3 + postCanrdApiUserList,
  4 + postPrepaidCreate,
  5 + postPrepaidUpdate,
  6 + postServiceOrderFileProcess,
  7 + postServiceOrderQuerySalesCode,
  8 +} from '@/services';
  9 +import { transImageFile } from '@/utils';
  10 +import { PlusOutlined } from '@ant-design/icons';
  11 +import {
  12 + ModalForm,
  13 + ProFormDigit,
  14 + ProFormSelect,
  15 + ProFormText,
  16 + ProFormTextArea,
  17 +} from '@ant-design/pro-components';
  18 +import { Form, Modal, Upload, UploadFile, UploadProps, message } from 'antd';
  19 +import { RcFile } from 'antd/es/upload';
  20 +import { cloneDeep } from 'lodash';
  21 +import { useEffect, useRef, useState } from 'react';
  22 +
  23 +// import { cloneDeep } from 'lodash';
  24 +export default ({ setVisible, prepaymentObject, onClose }) => {
  25 + const [form] = Form.useForm<{
  26 + proofImages: any;
  27 + id: number;
  28 + customerName: string;
  29 + contactPerson: string;
  30 + salesCode: string;
  31 + rechargeAmount: number;
  32 + notes: string;
  33 + }>();
  34 + const [salesCodeOptions, setSalesCodeOptions] = useState([]);
  35 + const [isCreate, setIsCreate] = useState(true);
  36 + const [fileList, setFileList] = useState<UploadFile[]>([]);
  37 + const [previewOpen, setPreviewOpen] = useState(false);
  38 + const [previewImage, setPreviewImage] = useState('');
  39 + const [previewTitle, setPreviewTitle] = useState('');
  40 + const [messageApi, contextHolder] = message.useMessage();
  41 + const fileListObj = useRef<UploadFile[]>([]); //使用引用类型,使得在useEffect里面设置监听事件后,不用更新监听事件也能保持obj与外界一致
  42 + const getBase64 = (file: RcFile): Promise<string> =>
  43 + new Promise((resolve, reject) => {
  44 + const reader = new FileReader();
  45 + reader.readAsDataURL(file);
  46 + reader.onload = () => resolve(reader.result as string);
  47 + reader.onerror = (error) => reject(error);
  48 + });
  49 + const handleCancel = () => setPreviewOpen(false);
  50 +
  51 + /** 粘贴快捷键的回调 */
  52 + const onPaste = async (e: any) => {
  53 + /** 获取剪切板的数据clipboardData */
  54 + let clipboardData = e.clipboardData,
  55 + i = 0,
  56 + items,
  57 + item,
  58 + types;
  59 +
  60 + /** 为空判断 */
  61 + if (clipboardData) {
  62 + items = clipboardData.items;
  63 + if (!items) {
  64 + message.info('您的剪贴板中没有照片');
  65 + return;
  66 + }
  67 +
  68 + item = items[0];
  69 + types = clipboardData.types || [];
  70 + /** 遍历剪切板的数据 */
  71 + for (; i < types.length; i++) {
  72 + if (types[i] === 'Files') {
  73 + item = items[i];
  74 + break;
  75 + }
  76 + }
  77 +
  78 + /** 判断文件是否为图片 */
  79 + if (item && item.kind === 'file' && item.type.match(/^image\//i)) {
  80 + const imgItem = item.getAsFile();
  81 + const newFileList = cloneDeep(fileListObj.current);
  82 + let filteredArray = newFileList.filter(
  83 + (obj) => obj.status !== 'removed',
  84 + ); //过滤掉状态为已删除的照片
  85 + const listItem = {
  86 + ...imgItem,
  87 + status: 'done',
  88 + url: await getBase64(imgItem),
  89 + originFileObj: imgItem,
  90 + };
  91 +
  92 + if (filteredArray.length >= 3) {
  93 + message.info('发货照片数量不能超过3');
  94 + return;
  95 + }
  96 + fileListObj.current = filteredArray;
  97 + filteredArray.push(listItem);
  98 + setFileList(filteredArray);
  99 + return;
  100 + }
  101 + }
  102 +
  103 + message.info('您的剪贴板中没有照片');
  104 + };
  105 +
  106 + const handlePreview = async (file: UploadFile) => {
  107 + if (!file.url && !file.preview) {
  108 + file.preview = await getBase64(file.originFileObj as RcFile);
  109 + }
  110 + setPreviewImage(file.url || (file.preview as string));
  111 + setPreviewOpen(true);
  112 + setPreviewTitle(
  113 + file.name ||
  114 + file.originFileObj?.name ||
  115 + file.url!.substring(file.url!.lastIndexOf('/') + 1),
  116 + );
  117 + };
  118 +
  119 + const handleBeforeUpload = (file: any) => {
  120 + setFileList([...fileList, file]);
  121 + return false;
  122 + };
  123 +
  124 + const handleChange: UploadProps['onChange'] = ({ fileList: newFileList }) => {
  125 + //fileListObj得在change里变化,change的参数是已经处理过的file数组
  126 + //beforeUpload中的参数file是未处理过,还需要Base64拿到文件数据处理
  127 + fileListObj.current = newFileList;
  128 + setFileList(newFileList);
  129 + };
  130 +
  131 + const props: UploadProps = {
  132 + onRemove: (file) => {
  133 + const index = fileList.indexOf(file);
  134 + const newFileList = fileList.slice();
  135 + newFileList.splice(index, 1);
  136 + setFileList(newFileList);
  137 + },
  138 + beforeUpload: handleBeforeUpload,
  139 + listType: 'picture-card',
  140 + onPreview: handlePreview,
  141 + fileList,
  142 + onChange: handleChange,
  143 + accept: 'image/png, image/jpeg, image/png',
  144 + // action: '/api/service/order/fileProcess',
  145 + name: 'files',
  146 + headers: { Authorization: localStorage.getItem('token') },
  147 + };
  148 +
  149 + const uploadButton = (
  150 + <div>
  151 + <PlusOutlined />
  152 + <div style={{ marginTop: 8 }}>上传凭证</div>
  153 + </div>
  154 + );
  155 +
  156 + /**
  157 + * 获取销售代码枚举,在复制和编辑的时候判断是否为旧的代码
  158 + */
  159 + const getSalesCodeOptions = async () => {
  160 + const res = await postServiceOrderQuerySalesCode();
  161 + let options = res.data?.map((item) => {
  162 + return {
  163 + label: item.userName,
  164 + value: item.userName,
  165 + number: item.number,
  166 + };
  167 + });
  168 + setSalesCodeOptions(options);
  169 + };
  170 +
  171 + // 自定义校验规则
  172 + const validateRechargeAmount = async (rule: any, value: number) => {
  173 + if (value <= 0) {
  174 + throw new Error('充值金额必须大于0');
  175 + }
  176 + };
  177 +
  178 + //自动填充客户信息
  179 + const autoFillCustomerContactSelectOptions = (option: any) => {
  180 + console.log(option);
  181 + //新增
  182 + if (option.value === 3.1415926) {
  183 + form.setFieldValue('customerNameString', option.name);
  184 + } else {
  185 + form.setFieldValue('phone', option.phone);
  186 + form.setFieldValue('contactPerson', option.realName);
  187 + form.setFieldValue('customerNameString', option.institution);
  188 + }
  189 + };
  190 +
  191 + useEffect(() => {
  192 + getSalesCodeOptions();
  193 +
  194 + //修改,信息回显
  195 + if (prepaymentObject !== null) {
  196 + setIsCreate(false);
  197 +
  198 + let values = form.getFieldsValue();
  199 + let keys = Object.keys(values);
  200 + for (let key of keys) {
  201 + form.setFieldValue(key, prepaymentObject[key]);
  202 + }
  203 +
  204 + //客户select回显
  205 + form.setFieldValue('customerName', prepaymentObject.customerName);
  206 +
  207 + //凭证回显
  208 + let images = prepaymentObject.proofImages;
  209 + if (images !== null && images !== undefined) {
  210 + let files = images?.map((item) => {
  211 + return {
  212 + url: item,
  213 + status: 'done',
  214 + isOld: true,
  215 + };
  216 + });
  217 + setFileList(files);
  218 + }
  219 + }
  220 + }, []);
  221 +
  222 + useEffect(() => {
  223 + document.addEventListener('paste', onPaste);
  224 + return () => {
  225 + document.removeEventListener('paste', onPaste);
  226 + };
  227 + }, []);
  228 +
  229 + return (
  230 + <>
  231 + <ModalForm
  232 + width={500}
  233 + open
  234 + title={(isCreate ? '新增' : '修改') + '预存记录'}
  235 + form={form}
  236 + autoFocusFirstInput
  237 + modalProps={{
  238 + okText: '保存',
  239 + cancelText: '取消',
  240 + destroyOnClose: true,
  241 + onCancel: () => {
  242 + setVisible(false);
  243 + },
  244 + }}
  245 + onFinish={async (values) => {
  246 + if (fileList.length <= 0) {
  247 + message.error('凭证不能为空');
  248 + return;
  249 + }
  250 + messageApi.open({
  251 + type: 'loading',
  252 + content: '正在上传图片...',
  253 + duration: 0,
  254 + });
  255 + //附件处理
  256 + let formData = new FormData();
  257 + //附件处理
  258 + console.log(fileList);
  259 + for (let file of fileList) {
  260 + if (file.isOld === undefined) {
  261 + if (file.originFileObj) {
  262 + formData.append('files', file.originFileObj as RcFile);
  263 + } else {
  264 + //有url的话取url(源文件),没url取thumbUrl。有url的时候thumbUrl是略缩图
  265 + if (file?.url === undefined || file?.url === null) {
  266 + formData.append(
  267 + 'files',
  268 + transImageFile(file?.thumbUrl),
  269 + file?.originFileObj?.name,
  270 + );
  271 + } else {
  272 + formData.append(
  273 + 'files',
  274 + transImageFile(file?.url),
  275 + file?.originFileObj?.name,
  276 + );
  277 + }
  278 + }
  279 + }
  280 + }
  281 + let res = await postServiceOrderFileProcess({
  282 + data: formData,
  283 + });
  284 + if (res.result === RESPONSE_CODE.SUCCESS) {
  285 + message.success('上传成功!');
  286 +
  287 + let fileUrls = res?.data?.map((item) => {
  288 + return item;
  289 + });
  290 +
  291 + //旧的凭证也要加上去
  292 + fileList.forEach((item) => {
  293 + if (item.isOld !== undefined) {
  294 + fileUrls.unshift(item.url);
  295 + }
  296 + });
  297 +
  298 + values.proofImages = fileUrls;
  299 +
  300 + if (isCreate) {
  301 + res = await postPrepaidCreate({
  302 + data: {
  303 + ...values,
  304 + customerName: form.getFieldValue('customerNameString'),
  305 + },
  306 + });
  307 + } else {
  308 + let customerNameString = form.getFieldValue('customerNameString');
  309 + let body = { ...values };
  310 + if (customerNameString) {
  311 + //customerNameString不为空说明是有重新选择客户,customerName要取这个值
  312 + body.customerName = customerNameString;
  313 + }
  314 + res = await postPrepaidUpdate({
  315 + data: body,
  316 + });
  317 + }
  318 +
  319 + if (res && res.result === RESPONSE_CODE.SUCCESS) {
  320 + message.success(res.message);
  321 + onClose();
  322 + }
  323 + }
  324 + }}
  325 + onOpenChange={setVisible}
  326 + >
  327 + <ProFormText name="id" label="编号" disabled />
  328 + <ProFormSelect
  329 + name="customerName"
  330 + key="customerName"
  331 + width="lg"
  332 + showSearch
  333 + label="客户名称"
  334 + placeholder="请选择客户"
  335 + onChange={(_, option) => {
  336 + autoFillCustomerContactSelectOptions(option);
  337 + }}
  338 + fieldProps={{
  339 + filterOption() {
  340 + return true;
  341 + },
  342 + optionItemRender(item) {
  343 + if (item.type === 'add') {
  344 + return (
  345 + <div title={item.name + '(新增客户)'}>
  346 + <span style={{ color: '#333333' }}>{item.name}</span>
  347 + {' | '}
  348 + <span style={{ color: 'orange' }}>自定义</span>
  349 + </div>
  350 + );
  351 + }
  352 +
  353 + let name =
  354 + item.label +
  355 + ' | ' +
  356 + item.institution +
  357 + ' | ' +
  358 + item.nowMoney +
  359 + '¥' +
  360 + ' | ' +
  361 + item.phone;
  362 + return (
  363 + <div title={name}>
  364 + <span style={{ color: '#333333' }}>{name}</span>
  365 + </div>
  366 + );
  367 + },
  368 + }}
  369 + debounceTime={1000}
  370 + request={async (value, {}) => {
  371 + const keywords = value.keyWords;
  372 + const res = await postCanrdApiUserList({
  373 + data: { keywords: keywords, pageSize: 1000000 },
  374 + });
  375 + let options = res?.data?.data?.map((c: any) => {
  376 + return {
  377 + ...c,
  378 + label: c.realName,
  379 + value: c.uid,
  380 + key: c.uid,
  381 + };
  382 + });
  383 +
  384 + //第一个默认为要新增客户
  385 + if (keywords.trim() !== '') {
  386 + options.unshift({
  387 + name: keywords,
  388 + type: 'add',
  389 + label: keywords,
  390 + value: 3.1415926,
  391 + key: keywords,
  392 + });
  393 + }
  394 +
  395 + return options;
  396 + }}
  397 + />
  398 + <ProFormText
  399 + name="contactPerson"
  400 + label="联系人"
  401 + rules={[{ required: true, message: '请输入联系人' }]}
  402 + />
  403 + <ProFormText
  404 + name="phone"
  405 + label="手机号"
  406 + rules={[{ required: true, message: '请输入手机号' }]}
  407 + />
  408 + <ProFormSelect
  409 + name="salesCode"
  410 + key="salesCode"
  411 + width="lg"
  412 + showSearch
  413 + label="销售代表"
  414 + placeholder="请输入销售代表"
  415 + rules={[{ required: true, message: '销售代表必填' }]}
  416 + options={salesCodeOptions}
  417 + />
  418 + <ProFormDigit
  419 + name="rechargeAmount"
  420 + label="充值金额(¥)"
  421 + rules={[
  422 + { required: true, message: '请输入充值金额' },
  423 + { validator: validateRechargeAmount },
  424 + ]}
  425 + />
  426 +
  427 + <>
  428 + <div className="pb-4 text-xs decoration-gray-50">可复制照片粘贴</div>
  429 + <Upload {...props}>{fileList.length < 3 ? uploadButton : ''}</Upload>
  430 + </>
  431 +
  432 + <ProFormTextArea name="notes" label="备注" />
  433 + </ModalForm>
  434 +
  435 + <Modal
  436 + open={previewOpen}
  437 + title={previewTitle}
  438 + footer={null}
  439 + onCancel={handleCancel}
  440 + >
  441 + <img alt="图片预览" style={{ width: '100%' }} src={previewImage} />
  442 + </Modal>
  443 +
  444 + {contextHolder}
  445 + </>
  446 + );
  447 +};
... ...
src/pages/Prepaid/constant.tsx 0 → 100644
  1 +import { enumToProTableEnumValue } from '@/utils';
  2 +
  3 +export type PrepaidItem = {
  4 + id: number; // id
  5 + customerName: string; // 购买方
  6 + contactPerson: string; // 联系人
  7 + salesCode: string; // 销售
  8 + phone: string; // 销售
  9 + rechargeAmount: number; // 金额
  10 + notes: string; // 备注
  11 + rechargeSource: string; // 充值来源
  12 + status: string; // 状态
  13 + auditors: string; // 审核人
  14 + auditDate: string; // 审核日期
  15 + auditNotes: string; // 审核备注
  16 +};
  17 +export const PREPAID_STATUS_OPTIONS = {
  18 + CREATED: '待审核',
  19 + AUDIT_FAIL: '审核失败',
  20 + AUDIT_PASS: '审核通过',
  21 +};
  22 +export const SALES_RECHARGE_PREPAYMENT_COLUMNS = [
  23 + // {
  24 + // title: '编号',
  25 + // dataIndex: 'id',
  26 + // key: 'id',
  27 + // valueType: 'index',
  28 + // },
  29 + {
  30 + title: '客户名称',
  31 + dataIndex: 'customerName',
  32 + key: 'customerName',
  33 + valueType: 'text',
  34 + },
  35 + {
  36 + title: '联系人',
  37 + dataIndex: 'contactPerson',
  38 + key: 'contactPerson',
  39 + valueType: 'text',
  40 + },
  41 + {
  42 + title: '销售',
  43 + dataIndex: 'salesCode',
  44 + key: 'salesCode',
  45 + valueType: 'text',
  46 + },
  47 + {
  48 + title: '手机号',
  49 + dataIndex: 'phone',
  50 + key: 'phone',
  51 + valueType: 'text',
  52 + },
  53 + {
  54 + title: '金额',
  55 + dataIndex: 'rechargeAmount',
  56 + key: 'rechargeAmount',
  57 + valueType: 'money',
  58 + hideInSearch: true,
  59 + },
  60 + {
  61 + title: '状态',
  62 + dataIndex: 'status',
  63 + key: 'status',
  64 + valueType: 'text',
  65 + valueEnum: enumToProTableEnumValue(PREPAID_STATUS_OPTIONS),
  66 + },
  67 + {
  68 + title: '备注',
  69 + dataIndex: 'notes',
  70 + key: 'notes',
  71 + valueType: 'text',
  72 + },
  73 + {
  74 + title: '凭证',
  75 + dataIndex: 'proofImages',
  76 + key: 'proofImages',
  77 + },
  78 + {
  79 + title: '创建日期',
  80 + dataIndex: 'createTime',
  81 + key: 'createTime',
  82 + valueType: 'dateTimeRange',
  83 + search: {
  84 + transform: (value) => {
  85 + return {
  86 + createTimeBeginTime: value[0],
  87 + createTimeEndTime: value[1],
  88 + };
  89 + },
  90 + },
  91 + },
  92 + {
  93 + title: '充值来源',
  94 + dataIndex: 'rechargeSource',
  95 + key: 'rechargeSource',
  96 + valueType: 'text',
  97 + hideInTable: true,
  98 + hideInSearch: true,
  99 + },
  100 +
  101 + {
  102 + title: '审核人',
  103 + dataIndex: 'auditors',
  104 + key: 'auditors',
  105 + valueType: 'text',
  106 + hideInTable: true,
  107 + hideInSearch: true,
  108 + },
  109 + {
  110 + title: '审核日期',
  111 + dataIndex: 'auditDate',
  112 + key: 'auditDate',
  113 + valueType: 'dateTimeRange',
  114 + hideInTable: true,
  115 + search: {
  116 + transform: (value) => {
  117 + return {
  118 + auditDateBeginTime: value[0],
  119 + auditDateEndTime: value[1],
  120 + };
  121 + },
  122 + },
  123 + hideInSearch: true,
  124 + },
  125 + {
  126 + title: '审核备注',
  127 + dataIndex: 'auditNotes',
  128 + key: 'auditNotes',
  129 + valueType: 'text',
  130 + },
  131 +];
  132 +
  133 +export const ACCOUNT_COLUMNS = [
  134 + // {
  135 + // title: '编号',
  136 + // dataIndex: 'uid',
  137 + // key: 'uid',
  138 + // valueType: 'index',
  139 + // hideInSearch: true,
  140 + // },
  141 + {
  142 + title: '关键字',
  143 + dataIndex: 'keywords',
  144 + key: 'keywords',
  145 + hideInTable: true,
  146 + fieldProps: {
  147 + placeholder: '请输入 单位|课题组|姓名|手机号|昵称',
  148 + },
  149 + },
  150 + {
  151 + title: '单位',
  152 + dataIndex: 'institution',
  153 + key: 'institution',
  154 + valueType: 'text',
  155 + hideInSearch: true,
  156 + },
  157 + {
  158 + title: '课题组老师',
  159 + dataIndex: 'institutionContactName',
  160 + key: 'institutionContactName',
  161 + valueType: 'text',
  162 + hideInSearch: true,
  163 + },
  164 + {
  165 + title: '手机号',
  166 + dataIndex: 'phone',
  167 + key: 'phone',
  168 + valueType: 'text',
  169 + },
  170 + {
  171 + title: '真实姓名',
  172 + dataIndex: 'realName',
  173 + key: 'realName',
  174 + valueType: 'text',
  175 + hideInSearch: true,
  176 + },
  177 + {
  178 + title: '余额(¥)',
  179 + dataIndex: 'nowMoney',
  180 + key: 'nowMoney',
  181 + valueType: 'money',
  182 + hideInSearch: true,
  183 + },
  184 + {
  185 + title: '账号',
  186 + dataIndex: 'account',
  187 + key: 'account',
  188 + valueType: 'text',
  189 + hideInSearch: true,
  190 + },
  191 + {
  192 + title: '昵称',
  193 + dataIndex: 'nickname',
  194 + key: 'nickname',
  195 + valueType: 'text',
  196 + hideInSearch: true,
  197 + },
  198 + {
  199 + title: '账号创建日期',
  200 + dataIndex: 'createTime',
  201 + key: 'createTime',
  202 + valueType: 'dateRange',
  203 + search: {
  204 + transform: (value) => {
  205 + return {
  206 + dateLimit: value[0] + ',' + value[1],
  207 + };
  208 + },
  209 + },
  210 + },
  211 +];
  212 +
  213 +export const BALANCE_CHANGE_COLUMNS = [
  214 + {
  215 + title: '变动金额(¥)',
  216 + dataIndex: 'number',
  217 + key: 'number',
  218 + dataType: 'money',
  219 + width: 140,
  220 + },
  221 + {
  222 + title: '变动后(¥)',
  223 + dataIndex: 'balance',
  224 + key: 'balance',
  225 + dataType: 'money',
  226 + width: 140,
  227 + },
  228 + {
  229 + title: '类型',
  230 + dataIndex: 'title',
  231 + key: 'title',
  232 + dataType: 'text',
  233 + width: 200,
  234 + },
  235 + {
  236 + title: '备注',
  237 + dataIndex: 'mark',
  238 + key: 'mark',
  239 + dataType: 'text',
  240 + width: 250,
  241 + },
  242 + {
  243 + title: '创建时间',
  244 + dataIndex: 'add_time',
  245 + key: 'add_time',
  246 + dataType: 'datetime',
  247 + },
  248 +];
... ...
src/pages/Prepaid/index.less 0 → 100644
  1 +.prepaid-index td {
  2 + font-family: 'San Francisco', 'Helvetica Neue', Helvetica, Arial,
  3 + 'Microsoft YaHei', 'PingFang SC', 'Hiragino Sans GB', 'Heiti SC',
  4 + 'WenQuanYi Micro Hei', sans-serif;
  5 + font-size: 13px;
  6 +}
... ...
src/pages/Prepaid/index.tsx
... ... @@ -155,7 +155,7 @@ const PrepaidPage = () =&gt; {
155 155 <ButtonConfirm
156 156 key="delete"
157 157 className="p-0"
158   - title={'确认删除编号为[ ' + record.id + ' ]的预存记录吗?'}
  158 + title={'确认删除这条预存记录吗?'}
159 159 text="删除"
160 160 onConfirm={async () => {
161 161 let res = await postPrepaidDelete({
... ...
src/services/definition.ts
... ... @@ -365,6 +365,16 @@ export interface ApiCreateOrderRequest {
365 365 customerShippingAddress?: string;
366 366 /**
367 367 * @description
  368 + * 单位
  369 + */
  370 + institution?: string;
  371 + /**
  372 + * @description
  373 + * 课题组老师
  374 + */
  375 + institutionContactName?: string;
  376 + /**
  377 + * @description
368 378 * 商品列表
369 379 */
370 380 list?: Array<ApiCreateProductRequest>;
... ... @@ -466,6 +476,19 @@ export interface ApiCreateProductRequest {
466 476 unit?: string;
467 477 }
468 478  
  479 +export interface ApiOrderCustomersRequest {
  480 + /** @format int32 */
  481 + current?: number;
  482 + /** @format int32 */
  483 + pageSize?: number;
  484 + /** @format int32 */
  485 + total?: number;
  486 +}
  487 +
  488 +export interface ApiOrderEvaluatedRequest {
  489 + subOrderIds?: Array<number>;
  490 +}
  491 +
469 492 export interface ApiQueryOrderDetailRequest {
470 493 /**
471 494 * @description
... ... @@ -479,6 +502,12 @@ export interface ApiQueryOrderDetailRequest {
479 502 orderId?: string;
480 503 /**
481 504 * @description
  505 + * 子订单状态
  506 + * @format int32
  507 + */
  508 + orderStatus?: number;
  509 + /**
  510 + * @description
482 511 * 账号id
483 512 * @format int32
484 513 */
... ... @@ -500,6 +529,12 @@ export interface ApiQueryOrderStatusCountsRequest {
500 529 }
501 530  
502 531 export interface AuditDto {
  532 + /**
  533 + * @description
  534 + * 主订单id
  535 + * @format int64
  536 + */
  537 + mainOrderId?: number;
503 538 notes?: string;
504 539 /**
505 540 * @description
... ... @@ -854,6 +889,22 @@ export interface InventoryMaterialStockReq {
854 889 materialId?: string;
855 890 }
856 891  
  892 +export interface InvoiceRecordQueryRequest {
  893 + /** @format date */
  894 + createTimeGe?: string;
  895 + /** @format date */
  896 + createTimeLe?: string;
  897 + /** @format int32 */
  898 + pageNumber?: number;
  899 + /** @format int32 */
  900 + pageSize?: number;
  901 + /**
  902 + * @description
  903 + * 用户id
  904 + */
  905 + uid?: string;
  906 +}
  907 +
857 908 export interface Item {
858 909 billDate?: string;
859 910 billNo?: string;
... ... @@ -867,6 +918,20 @@ export interface ItemSaItem {
867 918 itemValue?: string;
868 919 }
869 920  
  921 +export interface MainOrderqueryRequest {
  922 + afterInvoicingStatusIsNull?: boolean;
  923 + orderStatusNotIn?: Array<string>;
  924 + /** @format int32 */
  925 + pageNumber?: number;
  926 + /** @format int32 */
  927 + pageSize?: number;
  928 + /**
  929 + * @description
  930 + * 用户id
  931 + */
  932 + uid?: string;
  933 +}
  934 +
870 935 export interface MaterialListReply {
871 936 count?: string;
872 937 /** @format int32 */
... ... @@ -1529,8 +1594,6 @@ export interface QueryReportFormsDto {
1529 1594 export interface ReissueInvoiceDto {
1530 1595 /** @format int64 */
1531 1596 invoiceId?: number;
1532   - invoiceNumber?: string;
1533   - mainOrderIds?: Array<number>;
1534 1597 notes?: string;
1535 1598 }
1536 1599  
... ... @@ -1708,6 +1771,31 @@ export interface UpdatePwdVO {
1708 1771 userId?: number;
1709 1772 }
1710 1773  
  1774 +export interface UserAddressListRequest {
  1775 + keywords?: string;
  1776 +}
  1777 +
  1778 +export interface UserCenterInfoRequest {
  1779 + /** @format int32 */
  1780 + current?: number;
  1781 + /** @format int32 */
  1782 + pageSize?: number;
  1783 + /** @format int32 */
  1784 + total?: number;
  1785 + /**
  1786 + * @description
  1787 + * 类型:0=消费记录,1=积分明细,2=签到记录,3=持有优惠券,4=余额变动,5=好友关系
  1788 + * @format int32
  1789 + */
  1790 + type?: number;
  1791 + /**
  1792 + * @description
  1793 + * 用户id
  1794 + * @format int32
  1795 + */
  1796 + uid?: number;
  1797 +}
  1798 +
1711 1799 export interface UserDetailRequest {
1712 1800 /** @format int32 */
1713 1801 current?: number;
... ... @@ -1732,6 +1820,11 @@ export interface UserListRequest {
1732 1820 current?: number;
1733 1821 /**
1734 1822 * @description
  1823 + * 创建日期开始时间
  1824 + */
  1825 + dateLimit?: string;
  1826 + /**
  1827 + * @description
1735 1828 * 单位
1736 1829 */
1737 1830 institution?: string;
... ... @@ -1752,10 +1845,21 @@ export interface UserListRequest {
1752 1845 * 手机号
1753 1846 */
1754 1847 phone?: string;
  1848 + /**
  1849 + * @description
  1850 + * salesCode
  1851 + */
  1852 + salesCode?: string;
1755 1853 /** @format int32 */
1756 1854 total?: number;
1757 1855 /**
1758 1856 * @description
  1857 + * id
  1858 + * @format int32
  1859 + */
  1860 + uid?: number;
  1861 + /**
  1862 + * @description
1759 1863 * 用户名
1760 1864 */
1761 1865 username?: string;
... ... @@ -1765,6 +1869,24 @@ export interface View {
1765 1869 contentType?: string;
1766 1870 }
1767 1871  
  1872 +/**
  1873 + * @description
  1874 + * 确认收货请求
  1875 + */
  1876 +export interface ApiOrderConfirmReceiveRequest {
  1877 + /**
  1878 + * @description
  1879 + * 主订单id
  1880 + * @format int64
  1881 + */
  1882 + orderId?: number;
  1883 + /**
  1884 + * @description
  1885 + * 子订单id
  1886 + */
  1887 + subOrderIds?: Array<number>;
  1888 +}
  1889 +
1768 1890 export interface SalesRechargePrepaymentAuditRequest {
1769 1891 /**
1770 1892 * @description
... ... @@ -1806,6 +1928,11 @@ export interface SalesRechargePrepaymentCreateRequest {
1806 1928 phone?: string;
1807 1929 /**
1808 1930 * @description
  1931 + * 凭证
  1932 + */
  1933 + proofImages?: Array<string>;
  1934 + /**
  1935 + * @description
1809 1936 * 充值金额
1810 1937 */
1811 1938 rechargeAmount?: number;
... ... @@ -1969,6 +2096,11 @@ export interface SalesRechargePrepaymentUpdateRequest {
1969 2096 phone?: string;
1970 2097 /**
1971 2098 * @description
  2099 + * 凭证
  2100 + */
  2101 + proofImages?: Array<string>;
  2102 + /**
  2103 + * @description
1972 2104 * 充值金额
1973 2105 */
1974 2106 rechargeAmount?: number;
... ... @@ -1984,6 +2116,101 @@ export interface SalesRechargePrepaymentUpdateRequest {
1984 2116 salesCode?: string;
1985 2117 }
1986 2118  
  2119 +/**
  2120 + * @description
  2121 + * 开票添加对象
  2122 + */
  2123 +export interface StoreOrderInvoiceRequest {
  2124 + /**
  2125 + * @description
  2126 + * 开票备注
  2127 + */
  2128 + comment?: string;
  2129 + /**
  2130 + * @description
  2131 + * 开票内容
  2132 + */
  2133 + content?: string;
  2134 + /**
  2135 + * @description
  2136 + * 创建时间
  2137 + * @format date-time
  2138 + */
  2139 + createTime?: string;
  2140 + /**
  2141 + * @description
  2142 + * 关联订单id
  2143 + */
  2144 + orderIdList?: Array<number>;
  2145 + /**
  2146 + * @description
  2147 + * 买方注册地址
  2148 + */
  2149 + partyAAddress?: string;
  2150 + /**
  2151 + * @description
  2152 + * 买方开户行账号
  2153 + */
  2154 + partyABankAccount?: string;
  2155 + /**
  2156 + * @description
  2157 + * 买方名称
  2158 + */
  2159 + partyAName?: string;
  2160 + /**
  2161 + * @description
  2162 + * 买方开户行
  2163 + */
  2164 + partyAOpenBank?: string;
  2165 + /**
  2166 + * @description
  2167 + * 买方电话号码
  2168 + */
  2169 + partyAPhoneNumber?: string;
  2170 + /**
  2171 + * @description
  2172 + * 买方税号
  2173 + */
  2174 + partyATaxid?: string;
  2175 + /**
  2176 + * @description
  2177 + * 抬头类型
  2178 + */
  2179 + partyAType?: string;
  2180 + /**
  2181 + * @description
  2182 + * 卖方名称
  2183 + */
  2184 + partyBName?: string;
  2185 + /**
  2186 + * @description
  2187 + * 发票金额
  2188 + * @format double
  2189 + */
  2190 + price?: number;
  2191 + /**
  2192 + * @description
  2193 + * 接收邮箱地址
  2194 + */
  2195 + receiveEmail?: string;
  2196 + /**
  2197 + * @description
  2198 + * 发票类型
  2199 + */
  2200 + type?: string;
  2201 + /**
  2202 + * @description
  2203 + * 用户id
  2204 + */
  2205 + uid?: string;
  2206 + /**
  2207 + * @description
  2208 + * 更新时间
  2209 + * @format date-time
  2210 + */
  2211 + updateTime?: string;
  2212 +}
  2213 +
1987 2214 export interface UploadPaymentReceiptDTO {
1988 2215 /**
1989 2216 * @description
... ...
src/services/request.ts
... ... @@ -24,6 +24,9 @@ import type {
24 24 ApiApplyAddressModifyRequest,
25 25 ApiApplyAfterSalesRequest,
26 26 ApiCreateOrderRequest,
  27 + ApiOrderConfirmReceiveRequest,
  28 + ApiOrderCustomersRequest,
  29 + ApiOrderEvaluatedRequest,
27 30 ApiQueryOrderDetailRequest,
28 31 ApiQueryOrderStatusCountsRequest,
29 32 AuditDto,
... ... @@ -41,13 +44,14 @@ import type {
41 44 DictionaryVO,
42 45 Dto,
43 46 InventoryMaterialStockReq,
  47 + InvoiceRecordQueryRequest,
  48 + MainOrderqueryRequest,
44 49 MaterialListReply,
45 50 MaterialMaterialListReq,
46 51 MaterialStockRes,
47 52 MaterialUnitListRes,
48 53 MeasureUnitListRes,
49 54 MessageQueryDTO,
50   - ModelAndView,
51 55 OrderAddVO,
52 56 OrderAuditLogQueryVO,
53 57 OrderBaseInfoQueryVO,
... ... @@ -79,6 +83,7 @@ import type {
79 83 SaveReply,
80 84 ServerResult,
81 85 ShippingWarehouseChangeDto,
  86 + StoreOrderInvoiceRequest,
82 87 SysLogQueryVO,
83 88 SystemCustomFieldReq,
84 89 ToProcureAuditDto,
... ... @@ -88,6 +93,8 @@ import type {
88 93 UpdateHirePurchaseDto,
89 94 UpdatePwdVO,
90 95 UploadPaymentReceiptDTO,
  96 + UserAddressListRequest,
  97 + UserCenterInfoRequest,
91 98 UserDetailRequest,
92 99 UserListRequest,
93 100 } from './definition';
... ... @@ -404,6 +411,77 @@ export const postApiOrderApplyAfterSales = /* #__PURE__ */ (() =&gt; {
404 411 return request;
405 412 })();
406 413  
  414 +/** @description request parameter type for postApiOrderConfirmReceive */
  415 +export interface PostApiOrderConfirmReceiveOption {
  416 + /**
  417 + * @description
  418 + * request
  419 + */
  420 + body: {
  421 + /**
  422 + @description
  423 + request */
  424 + request: ApiOrderConfirmReceiveRequest;
  425 + };
  426 +}
  427 +
  428 +/** @description response type for postApiOrderConfirmReceive */
  429 +export interface PostApiOrderConfirmReceiveResponse {
  430 + /**
  431 + * @description
  432 + * OK
  433 + */
  434 + 200: ServerResult;
  435 + /**
  436 + * @description
  437 + * Created
  438 + */
  439 + 201: any;
  440 + /**
  441 + * @description
  442 + * Unauthorized
  443 + */
  444 + 401: any;
  445 + /**
  446 + * @description
  447 + * Forbidden
  448 + */
  449 + 403: any;
  450 + /**
  451 + * @description
  452 + * Not Found
  453 + */
  454 + 404: any;
  455 +}
  456 +
  457 +export type PostApiOrderConfirmReceiveResponseSuccess =
  458 + PostApiOrderConfirmReceiveResponse[200];
  459 +/**
  460 + * @description
  461 + * 确认收货
  462 + * @tags 内部订单
  463 + * @produces *
  464 + * @consumes application/json
  465 + */
  466 +export const postApiOrderConfirmReceive = /* #__PURE__ */ (() => {
  467 + const method = 'post';
  468 + const url = '/api/order/confirmReceive';
  469 + function request(
  470 + option: PostApiOrderConfirmReceiveOption,
  471 + ): Promise<PostApiOrderConfirmReceiveResponseSuccess> {
  472 + return requester(request.url, {
  473 + method: request.method,
  474 + ...option,
  475 + }) as unknown as Promise<PostApiOrderConfirmReceiveResponseSuccess>;
  476 + }
  477 +
  478 + /** http method */
  479 + request.method = method;
  480 + /** request url */
  481 + request.url = url;
  482 + return request;
  483 +})();
  484 +
407 485 /** @description request parameter type for postApiOrderCreateOrder */
408 486 export interface PostApiOrderCreateOrderOption {
409 487 /**
... ... @@ -414,12 +492,563 @@ export interface PostApiOrderCreateOrderOption {
414 492 /**
415 493 @description
416 494 request */
417   - request: ApiCreateOrderRequest;
  495 + request: ApiCreateOrderRequest;
  496 + };
  497 +}
  498 +
  499 +/** @description response type for postApiOrderCreateOrder */
  500 +export interface PostApiOrderCreateOrderResponse {
  501 + /**
  502 + * @description
  503 + * OK
  504 + */
  505 + 200: ServerResult;
  506 + /**
  507 + * @description
  508 + * Created
  509 + */
  510 + 201: any;
  511 + /**
  512 + * @description
  513 + * Unauthorized
  514 + */
  515 + 401: any;
  516 + /**
  517 + * @description
  518 + * Forbidden
  519 + */
  520 + 403: any;
  521 + /**
  522 + * @description
  523 + * Not Found
  524 + */
  525 + 404: any;
  526 +}
  527 +
  528 +export type PostApiOrderCreateOrderResponseSuccess =
  529 + PostApiOrderCreateOrderResponse[200];
  530 +/**
  531 + * @description
  532 + * 创建订单
  533 + * @tags 内部订单
  534 + * @produces *
  535 + * @consumes application/json
  536 + */
  537 +export const postApiOrderCreateOrder = /* #__PURE__ */ (() => {
  538 + const method = 'post';
  539 + const url = '/api/order/createOrder';
  540 + function request(
  541 + option: PostApiOrderCreateOrderOption,
  542 + ): Promise<PostApiOrderCreateOrderResponseSuccess> {
  543 + return requester(request.url, {
  544 + method: request.method,
  545 + ...option,
  546 + }) as unknown as Promise<PostApiOrderCreateOrderResponseSuccess>;
  547 + }
  548 +
  549 + /** http method */
  550 + request.method = method;
  551 + /** request url */
  552 + request.url = url;
  553 + return request;
  554 +})();
  555 +
  556 +/** @description request parameter type for postApiOrderCustomers */
  557 +export interface PostApiOrderCustomersOption {
  558 + /**
  559 + * @description
  560 + * request
  561 + */
  562 + body: {
  563 + /**
  564 + @description
  565 + request */
  566 + request: ApiOrderCustomersRequest;
  567 + };
  568 +}
  569 +
  570 +/** @description response type for postApiOrderCustomers */
  571 +export interface PostApiOrderCustomersResponse {
  572 + /**
  573 + * @description
  574 + * OK
  575 + */
  576 + 200: ServerResult;
  577 + /**
  578 + * @description
  579 + * Created
  580 + */
  581 + 201: any;
  582 + /**
  583 + * @description
  584 + * Unauthorized
  585 + */
  586 + 401: any;
  587 + /**
  588 + * @description
  589 + * Forbidden
  590 + */
  591 + 403: any;
  592 + /**
  593 + * @description
  594 + * Not Found
  595 + */
  596 + 404: any;
  597 +}
  598 +
  599 +export type PostApiOrderCustomersResponseSuccess =
  600 + PostApiOrderCustomersResponse[200];
  601 +/**
  602 + * @description
  603 + * 查询订单客户信息
  604 + * @tags 内部订单
  605 + * @produces *
  606 + * @consumes application/json
  607 + */
  608 +export const postApiOrderCustomers = /* #__PURE__ */ (() => {
  609 + const method = 'post';
  610 + const url = '/api/order/customers';
  611 + function request(
  612 + option: PostApiOrderCustomersOption,
  613 + ): Promise<PostApiOrderCustomersResponseSuccess> {
  614 + return requester(request.url, {
  615 + method: request.method,
  616 + ...option,
  617 + }) as unknown as Promise<PostApiOrderCustomersResponseSuccess>;
  618 + }
  619 +
  620 + /** http method */
  621 + request.method = method;
  622 + /** request url */
  623 + request.url = url;
  624 + return request;
  625 +})();
  626 +
  627 +/** @description request parameter type for postApiOrderEvaluated */
  628 +export interface PostApiOrderEvaluatedOption {
  629 + /**
  630 + * @description
  631 + * request
  632 + */
  633 + body: {
  634 + /**
  635 + @description
  636 + request */
  637 + request: ApiOrderEvaluatedRequest;
  638 + };
  639 +}
  640 +
  641 +/** @description response type for postApiOrderEvaluated */
  642 +export interface PostApiOrderEvaluatedResponse {
  643 + /**
  644 + * @description
  645 + * OK
  646 + */
  647 + 200: ServerResult;
  648 + /**
  649 + * @description
  650 + * Created
  651 + */
  652 + 201: any;
  653 + /**
  654 + * @description
  655 + * Unauthorized
  656 + */
  657 + 401: any;
  658 + /**
  659 + * @description
  660 + * Forbidden
  661 + */
  662 + 403: any;
  663 + /**
  664 + * @description
  665 + * Not Found
  666 + */
  667 + 404: any;
  668 +}
  669 +
  670 +export type PostApiOrderEvaluatedResponseSuccess =
  671 + PostApiOrderEvaluatedResponse[200];
  672 +/**
  673 + * @description
  674 + * 评价子订单
  675 + * @tags 内部订单
  676 + * @produces *
  677 + * @consumes application/json
  678 + */
  679 +export const postApiOrderEvaluated = /* #__PURE__ */ (() => {
  680 + const method = 'post';
  681 + const url = '/api/order/evaluated';
  682 + function request(
  683 + option: PostApiOrderEvaluatedOption,
  684 + ): Promise<PostApiOrderEvaluatedResponseSuccess> {
  685 + return requester(request.url, {
  686 + method: request.method,
  687 + ...option,
  688 + }) as unknown as Promise<PostApiOrderEvaluatedResponseSuccess>;
  689 + }
  690 +
  691 + /** http method */
  692 + request.method = method;
  693 + /** request url */
  694 + request.url = url;
  695 + return request;
  696 +})();
  697 +
  698 +/** @description request parameter type for postApiOrderInvoicedOrderList */
  699 +export interface PostApiOrderInvoicedOrderListOption {
  700 + /**
  701 + * @description
  702 + * request
  703 + */
  704 + body: {
  705 + /**
  706 + @description
  707 + request */
  708 + request: MainOrderqueryRequest;
  709 + };
  710 +}
  711 +
  712 +/** @description response type for postApiOrderInvoicedOrderList */
  713 +export interface PostApiOrderInvoicedOrderListResponse {
  714 + /**
  715 + * @description
  716 + * OK
  717 + */
  718 + 200: ServerResult;
  719 + /**
  720 + * @description
  721 + * Created
  722 + */
  723 + 201: any;
  724 + /**
  725 + * @description
  726 + * Unauthorized
  727 + */
  728 + 401: any;
  729 + /**
  730 + * @description
  731 + * Forbidden
  732 + */
  733 + 403: any;
  734 + /**
  735 + * @description
  736 + * Not Found
  737 + */
  738 + 404: any;
  739 +}
  740 +
  741 +export type PostApiOrderInvoicedOrderListResponseSuccess =
  742 + PostApiOrderInvoicedOrderListResponse[200];
  743 +/**
  744 + * @description
  745 + * 获取已开票订单
  746 + * @tags 内部订单
  747 + * @produces *
  748 + * @consumes application/json
  749 + */
  750 +export const postApiOrderInvoicedOrderList = /* #__PURE__ */ (() => {
  751 + const method = 'post';
  752 + const url = '/api/order/invoicedOrderList';
  753 + function request(
  754 + option: PostApiOrderInvoicedOrderListOption,
  755 + ): Promise<PostApiOrderInvoicedOrderListResponseSuccess> {
  756 + return requester(request.url, {
  757 + method: request.method,
  758 + ...option,
  759 + }) as unknown as Promise<PostApiOrderInvoicedOrderListResponseSuccess>;
  760 + }
  761 +
  762 + /** http method */
  763 + request.method = method;
  764 + /** request url */
  765 + request.url = url;
  766 + return request;
  767 +})();
  768 +
  769 +/** @description request parameter type for postApiOrderInvoicedRecordList */
  770 +export interface PostApiOrderInvoicedRecordListOption {
  771 + /**
  772 + * @description
  773 + * request
  774 + */
  775 + body: {
  776 + /**
  777 + @description
  778 + request */
  779 + request: InvoiceRecordQueryRequest;
  780 + };
  781 +}
  782 +
  783 +/** @description response type for postApiOrderInvoicedRecordList */
  784 +export interface PostApiOrderInvoicedRecordListResponse {
  785 + /**
  786 + * @description
  787 + * OK
  788 + */
  789 + 200: ServerResult;
  790 + /**
  791 + * @description
  792 + * Created
  793 + */
  794 + 201: any;
  795 + /**
  796 + * @description
  797 + * Unauthorized
  798 + */
  799 + 401: any;
  800 + /**
  801 + * @description
  802 + * Forbidden
  803 + */
  804 + 403: any;
  805 + /**
  806 + * @description
  807 + * Not Found
  808 + */
  809 + 404: any;
  810 +}
  811 +
  812 +export type PostApiOrderInvoicedRecordListResponseSuccess =
  813 + PostApiOrderInvoicedRecordListResponse[200];
  814 +/**
  815 + * @description
  816 + * 获取开票记录
  817 + * @tags 内部订单
  818 + * @produces *
  819 + * @consumes application/json
  820 + */
  821 +export const postApiOrderInvoicedRecordList = /* #__PURE__ */ (() => {
  822 + const method = 'post';
  823 + const url = '/api/order/invoicedRecordList';
  824 + function request(
  825 + option: PostApiOrderInvoicedRecordListOption,
  826 + ): Promise<PostApiOrderInvoicedRecordListResponseSuccess> {
  827 + return requester(request.url, {
  828 + method: request.method,
  829 + ...option,
  830 + }) as unknown as Promise<PostApiOrderInvoicedRecordListResponseSuccess>;
  831 + }
  832 +
  833 + /** http method */
  834 + request.method = method;
  835 + /** request url */
  836 + request.url = url;
  837 + return request;
  838 +})();
  839 +
  840 +/** @description response type for postApiOrderListAllSubOrderBaseInfo */
  841 +export interface PostApiOrderListAllSubOrderBaseInfoResponse {
  842 + /**
  843 + * @description
  844 + * OK
  845 + */
  846 + 200: ServerResult;
  847 + /**
  848 + * @description
  849 + * Created
  850 + */
  851 + 201: any;
  852 + /**
  853 + * @description
  854 + * Unauthorized
  855 + */
  856 + 401: any;
  857 + /**
  858 + * @description
  859 + * Forbidden
  860 + */
  861 + 403: any;
  862 + /**
  863 + * @description
  864 + * Not Found
  865 + */
  866 + 404: any;
  867 +}
  868 +
  869 +export type PostApiOrderListAllSubOrderBaseInfoResponseSuccess =
  870 + PostApiOrderListAllSubOrderBaseInfoResponse[200];
  871 +/**
  872 + * @description
  873 + * 查询所有子订单基本信息
  874 + * @tags 内部订单
  875 + * @produces *
  876 + * @consumes application/json
  877 + */
  878 +export const postApiOrderListAllSubOrderBaseInfo = /* #__PURE__ */ (() => {
  879 + const method = 'post';
  880 + const url = '/api/order/listAllSubOrderBaseInfo';
  881 + function request(): Promise<PostApiOrderListAllSubOrderBaseInfoResponseSuccess> {
  882 + return requester(request.url, {
  883 + method: request.method,
  884 + }) as unknown as Promise<PostApiOrderListAllSubOrderBaseInfoResponseSuccess>;
  885 + }
  886 +
  887 + /** http method */
  888 + request.method = method;
  889 + /** request url */
  890 + request.url = url;
  891 + return request;
  892 +})();
  893 +
  894 +/** @description request parameter type for postApiOrderQueryOrderDetail */
  895 +export interface PostApiOrderQueryOrderDetailOption {
  896 + /**
  897 + * @description
  898 + * request
  899 + */
  900 + body: {
  901 + /**
  902 + @description
  903 + request */
  904 + request: ApiQueryOrderDetailRequest;
  905 + };
  906 +}
  907 +
  908 +/** @description response type for postApiOrderQueryOrderDetail */
  909 +export interface PostApiOrderQueryOrderDetailResponse {
  910 + /**
  911 + * @description
  912 + * OK
  913 + */
  914 + 200: ServerResult;
  915 + /**
  916 + * @description
  917 + * Created
  918 + */
  919 + 201: any;
  920 + /**
  921 + * @description
  922 + * Unauthorized
  923 + */
  924 + 401: any;
  925 + /**
  926 + * @description
  927 + * Forbidden
  928 + */
  929 + 403: any;
  930 + /**
  931 + * @description
  932 + * Not Found
  933 + */
  934 + 404: any;
  935 +}
  936 +
  937 +export type PostApiOrderQueryOrderDetailResponseSuccess =
  938 + PostApiOrderQueryOrderDetailResponse[200];
  939 +/**
  940 + * @description
  941 + * 订单详情
  942 + * @tags 内部订单
  943 + * @produces *
  944 + * @consumes application/json
  945 + */
  946 +export const postApiOrderQueryOrderDetail = /* #__PURE__ */ (() => {
  947 + const method = 'post';
  948 + const url = '/api/order/queryOrderDetail';
  949 + function request(
  950 + option: PostApiOrderQueryOrderDetailOption,
  951 + ): Promise<PostApiOrderQueryOrderDetailResponseSuccess> {
  952 + return requester(request.url, {
  953 + method: request.method,
  954 + ...option,
  955 + }) as unknown as Promise<PostApiOrderQueryOrderDetailResponseSuccess>;
  956 + }
  957 +
  958 + /** http method */
  959 + request.method = method;
  960 + /** request url */
  961 + request.url = url;
  962 + return request;
  963 +})();
  964 +
  965 +/** @description request parameter type for postApiOrderQueryOrderStatusCounts */
  966 +export interface PostApiOrderQueryOrderStatusCountsOption {
  967 + /**
  968 + * @description
  969 + * request
  970 + */
  971 + body: {
  972 + /**
  973 + @description
  974 + request */
  975 + request: ApiQueryOrderStatusCountsRequest;
  976 + };
  977 +}
  978 +
  979 +/** @description response type for postApiOrderQueryOrderStatusCounts */
  980 +export interface PostApiOrderQueryOrderStatusCountsResponse {
  981 + /**
  982 + * @description
  983 + * OK
  984 + */
  985 + 200: ServerResult;
  986 + /**
  987 + * @description
  988 + * Created
  989 + */
  990 + 201: any;
  991 + /**
  992 + * @description
  993 + * Unauthorized
  994 + */
  995 + 401: any;
  996 + /**
  997 + * @description
  998 + * Forbidden
  999 + */
  1000 + 403: any;
  1001 + /**
  1002 + * @description
  1003 + * Not Found
  1004 + */
  1005 + 404: any;
  1006 +}
  1007 +
  1008 +export type PostApiOrderQueryOrderStatusCountsResponseSuccess =
  1009 + PostApiOrderQueryOrderStatusCountsResponse[200];
  1010 +/**
  1011 + * @description
  1012 + * 获取各个订单状态数量
  1013 + * @tags 内部订单
  1014 + * @produces *
  1015 + * @consumes application/json
  1016 + */
  1017 +export const postApiOrderQueryOrderStatusCounts = /* #__PURE__ */ (() => {
  1018 + const method = 'post';
  1019 + const url = '/api/order/queryOrderStatusCounts';
  1020 + function request(
  1021 + option: PostApiOrderQueryOrderStatusCountsOption,
  1022 + ): Promise<PostApiOrderQueryOrderStatusCountsResponseSuccess> {
  1023 + return requester(request.url, {
  1024 + method: request.method,
  1025 + ...option,
  1026 + }) as unknown as Promise<PostApiOrderQueryOrderStatusCountsResponseSuccess>;
  1027 + }
  1028 +
  1029 + /** http method */
  1030 + request.method = method;
  1031 + /** request url */
  1032 + request.url = url;
  1033 + return request;
  1034 +})();
  1035 +
  1036 +/** @description request parameter type for postApiOrderQueryServiceOrder */
  1037 +export interface PostApiOrderQueryServiceOrderOption {
  1038 + /**
  1039 + * @description
  1040 + * request
  1041 + */
  1042 + body: {
  1043 + /**
  1044 + @description
  1045 + request */
  1046 + request: Dto;
418 1047 };
419 1048 }
420 1049  
421   -/** @description response type for postApiOrderCreateOrder */
422   -export interface PostApiOrderCreateOrderResponse {
  1050 +/** @description response type for postApiOrderQueryServiceOrder */
  1051 +export interface PostApiOrderQueryServiceOrderResponse {
423 1052 /**
424 1053 * @description
425 1054 * OK
... ... @@ -447,25 +1076,25 @@ export interface PostApiOrderCreateOrderResponse {
447 1076 404: any;
448 1077 }
449 1078  
450   -export type PostApiOrderCreateOrderResponseSuccess =
451   - PostApiOrderCreateOrderResponse[200];
  1079 +export type PostApiOrderQueryServiceOrderResponseSuccess =
  1080 + PostApiOrderQueryServiceOrderResponse[200];
452 1081 /**
453 1082 * @description
454   - * 创建订单
  1083 + * 查询订单列表
455 1084 * @tags 内部订单
456 1085 * @produces *
457 1086 * @consumes application/json
458 1087 */
459   -export const postApiOrderCreateOrder = /* #__PURE__ */ (() => {
  1088 +export const postApiOrderQueryServiceOrder = /* #__PURE__ */ (() => {
460 1089 const method = 'post';
461   - const url = '/api/order/createOrder';
  1090 + const url = '/api/order/queryServiceOrder';
462 1091 function request(
463   - option: PostApiOrderCreateOrderOption,
464   - ): Promise<PostApiOrderCreateOrderResponseSuccess> {
  1092 + option: PostApiOrderQueryServiceOrderOption,
  1093 + ): Promise<PostApiOrderQueryServiceOrderResponseSuccess> {
465 1094 return requester(request.url, {
466 1095 method: request.method,
467 1096 ...option,
468   - }) as unknown as Promise<PostApiOrderCreateOrderResponseSuccess>;
  1097 + }) as unknown as Promise<PostApiOrderQueryServiceOrderResponseSuccess>;
469 1098 }
470 1099  
471 1100 /** http method */
... ... @@ -475,8 +1104,8 @@ export const postApiOrderCreateOrder = /* #__PURE__ */ (() =&gt; {
475 1104 return request;
476 1105 })();
477 1106  
478   -/** @description request parameter type for postApiOrderQueryOrderDetail */
479   -export interface PostApiOrderQueryOrderDetailOption {
  1107 +/** @description request parameter type for postApiOrderStoreApplyInvoice */
  1108 +export interface PostApiOrderStoreApplyInvoiceOption {
480 1109 /**
481 1110 * @description
482 1111 * request
... ... @@ -485,12 +1114,12 @@ export interface PostApiOrderQueryOrderDetailOption {
485 1114 /**
486 1115 @description
487 1116 request */
488   - request: ApiQueryOrderDetailRequest;
  1117 + request: StoreOrderInvoiceRequest;
489 1118 };
490 1119 }
491 1120  
492   -/** @description response type for postApiOrderQueryOrderDetail */
493   -export interface PostApiOrderQueryOrderDetailResponse {
  1121 +/** @description response type for postApiOrderStoreApplyInvoice */
  1122 +export interface PostApiOrderStoreApplyInvoiceResponse {
494 1123 /**
495 1124 * @description
496 1125 * OK
... ... @@ -518,25 +1147,25 @@ export interface PostApiOrderQueryOrderDetailResponse {
518 1147 404: any;
519 1148 }
520 1149  
521   -export type PostApiOrderQueryOrderDetailResponseSuccess =
522   - PostApiOrderQueryOrderDetailResponse[200];
  1150 +export type PostApiOrderStoreApplyInvoiceResponseSuccess =
  1151 + PostApiOrderStoreApplyInvoiceResponse[200];
523 1152 /**
524 1153 * @description
525   - * 订单详情
  1154 + * 商城申请开票
526 1155 * @tags 内部订单
527 1156 * @produces *
528 1157 * @consumes application/json
529 1158 */
530   -export const postApiOrderQueryOrderDetail = /* #__PURE__ */ (() => {
  1159 +export const postApiOrderStoreApplyInvoice = /* #__PURE__ */ (() => {
531 1160 const method = 'post';
532   - const url = '/api/order/queryOrderDetail';
  1161 + const url = '/api/order/storeApplyInvoice';
533 1162 function request(
534   - option: PostApiOrderQueryOrderDetailOption,
535   - ): Promise<PostApiOrderQueryOrderDetailResponseSuccess> {
  1163 + option: PostApiOrderStoreApplyInvoiceOption,
  1164 + ): Promise<PostApiOrderStoreApplyInvoiceResponseSuccess> {
536 1165 return requester(request.url, {
537 1166 method: request.method,
538 1167 ...option,
539   - }) as unknown as Promise<PostApiOrderQueryOrderDetailResponseSuccess>;
  1168 + }) as unknown as Promise<PostApiOrderStoreApplyInvoiceResponseSuccess>;
540 1169 }
541 1170  
542 1171 /** http method */
... ... @@ -546,8 +1175,8 @@ export const postApiOrderQueryOrderDetail = /* #__PURE__ */ (() =&gt; {
546 1175 return request;
547 1176 })();
548 1177  
549   -/** @description request parameter type for postApiOrderQueryOrderStatusCounts */
550   -export interface PostApiOrderQueryOrderStatusCountsOption {
  1178 +/** @description request parameter type for postApiOrderWaitInvoiceOrderList */
  1179 +export interface PostApiOrderWaitInvoiceOrderListOption {
551 1180 /**
552 1181 * @description
553 1182 * request
... ... @@ -556,12 +1185,12 @@ export interface PostApiOrderQueryOrderStatusCountsOption {
556 1185 /**
557 1186 @description
558 1187 request */
559   - request: ApiQueryOrderStatusCountsRequest;
  1188 + request: MainOrderqueryRequest;
560 1189 };
561 1190 }
562 1191  
563   -/** @description response type for postApiOrderQueryOrderStatusCounts */
564   -export interface PostApiOrderQueryOrderStatusCountsResponse {
  1192 +/** @description response type for postApiOrderWaitInvoiceOrderList */
  1193 +export interface PostApiOrderWaitInvoiceOrderListResponse {
565 1194 /**
566 1195 * @description
567 1196 * OK
... ... @@ -589,25 +1218,25 @@ export interface PostApiOrderQueryOrderStatusCountsResponse {
589 1218 404: any;
590 1219 }
591 1220  
592   -export type PostApiOrderQueryOrderStatusCountsResponseSuccess =
593   - PostApiOrderQueryOrderStatusCountsResponse[200];
  1221 +export type PostApiOrderWaitInvoiceOrderListResponseSuccess =
  1222 + PostApiOrderWaitInvoiceOrderListResponse[200];
594 1223 /**
595 1224 * @description
596   - * 获取各个订单状态数量
  1225 + * 获取可开票订单
597 1226 * @tags 内部订单
598 1227 * @produces *
599 1228 * @consumes application/json
600 1229 */
601   -export const postApiOrderQueryOrderStatusCounts = /* #__PURE__ */ (() => {
  1230 +export const postApiOrderWaitInvoiceOrderList = /* #__PURE__ */ (() => {
602 1231 const method = 'post';
603   - const url = '/api/order/queryOrderStatusCounts';
  1232 + const url = '/api/order/waitInvoiceOrderList';
604 1233 function request(
605   - option: PostApiOrderQueryOrderStatusCountsOption,
606   - ): Promise<PostApiOrderQueryOrderStatusCountsResponseSuccess> {
  1234 + option: PostApiOrderWaitInvoiceOrderListOption,
  1235 + ): Promise<PostApiOrderWaitInvoiceOrderListResponseSuccess> {
607 1236 return requester(request.url, {
608 1237 method: request.method,
609 1238 ...option,
610   - }) as unknown as Promise<PostApiOrderQueryOrderStatusCountsResponseSuccess>;
  1239 + }) as unknown as Promise<PostApiOrderWaitInvoiceOrderListResponseSuccess>;
611 1240 }
612 1241  
613 1242 /** http method */
... ... @@ -617,8 +1246,8 @@ export const postApiOrderQueryOrderStatusCounts = /* #__PURE__ */ (() =&gt; {
617 1246 return request;
618 1247 })();
619 1248  
620   -/** @description request parameter type for postApiOrderQueryServiceOrder */
621   -export interface PostApiOrderQueryServiceOrderOption {
  1249 +/** @description request parameter type for postCanrdApiUserAddressList */
  1250 +export interface PostCanrdApiUserAddressListOption {
622 1251 /**
623 1252 * @description
624 1253 * request
... ... @@ -627,12 +1256,12 @@ export interface PostApiOrderQueryServiceOrderOption {
627 1256 /**
628 1257 @description
629 1258 request */
630   - request: Dto;
  1259 + request: UserAddressListRequest;
631 1260 };
632 1261 }
633 1262  
634   -/** @description response type for postApiOrderQueryServiceOrder */
635   -export interface PostApiOrderQueryServiceOrderResponse {
  1263 +/** @description response type for postCanrdApiUserAddressList */
  1264 +export interface PostCanrdApiUserAddressListResponse {
636 1265 /**
637 1266 * @description
638 1267 * OK
... ... @@ -660,25 +1289,96 @@ export interface PostApiOrderQueryServiceOrderResponse {
660 1289 404: any;
661 1290 }
662 1291  
663   -export type PostApiOrderQueryServiceOrderResponseSuccess =
664   - PostApiOrderQueryServiceOrderResponse[200];
  1292 +export type PostCanrdApiUserAddressListResponseSuccess =
  1293 + PostCanrdApiUserAddressListResponse[200];
665 1294 /**
666 1295 * @description
667   - * 查询订单列表
668   - * @tags 内部订单
  1296 + * 查询地址信息
  1297 + * @tags canrd-mobile-api-controller
669 1298 * @produces *
670 1299 * @consumes application/json
671 1300 */
672   -export const postApiOrderQueryServiceOrder = /* #__PURE__ */ (() => {
  1301 +export const postCanrdApiUserAddressList = /* #__PURE__ */ (() => {
673 1302 const method = 'post';
674   - const url = '/api/order/queryServiceOrder';
  1303 + const url = '/canrd/api/user/address/list';
675 1304 function request(
676   - option: PostApiOrderQueryServiceOrderOption,
677   - ): Promise<PostApiOrderQueryServiceOrderResponseSuccess> {
  1305 + option: PostCanrdApiUserAddressListOption,
  1306 + ): Promise<PostCanrdApiUserAddressListResponseSuccess> {
678 1307 return requester(request.url, {
679 1308 method: request.method,
680 1309 ...option,
681   - }) as unknown as Promise<PostApiOrderQueryServiceOrderResponseSuccess>;
  1310 + }) as unknown as Promise<PostCanrdApiUserAddressListResponseSuccess>;
  1311 + }
  1312 +
  1313 + /** http method */
  1314 + request.method = method;
  1315 + /** request url */
  1316 + request.url = url;
  1317 + return request;
  1318 +})();
  1319 +
  1320 +/** @description request parameter type for postCanrdApiUserCenterInfo */
  1321 +export interface PostCanrdApiUserCenterInfoOption {
  1322 + /**
  1323 + * @description
  1324 + * request
  1325 + */
  1326 + body: {
  1327 + /**
  1328 + @description
  1329 + request */
  1330 + request: UserCenterInfoRequest;
  1331 + };
  1332 +}
  1333 +
  1334 +/** @description response type for postCanrdApiUserCenterInfo */
  1335 +export interface PostCanrdApiUserCenterInfoResponse {
  1336 + /**
  1337 + * @description
  1338 + * OK
  1339 + */
  1340 + 200: ServerResult;
  1341 + /**
  1342 + * @description
  1343 + * Created
  1344 + */
  1345 + 201: any;
  1346 + /**
  1347 + * @description
  1348 + * Unauthorized
  1349 + */
  1350 + 401: any;
  1351 + /**
  1352 + * @description
  1353 + * Forbidden
  1354 + */
  1355 + 403: any;
  1356 + /**
  1357 + * @description
  1358 + * Not Found
  1359 + */
  1360 + 404: any;
  1361 +}
  1362 +
  1363 +export type PostCanrdApiUserCenterInfoResponseSuccess =
  1364 + PostCanrdApiUserCenterInfoResponse[200];
  1365 +/**
  1366 + * @description
  1367 + * 获取会员详情
  1368 + * @tags canrd-mobile-api-controller
  1369 + * @produces *
  1370 + * @consumes application/json
  1371 + */
  1372 +export const postCanrdApiUserCenterInfo = /* #__PURE__ */ (() => {
  1373 + const method = 'post';
  1374 + const url = '/canrd/api/user/center/info';
  1375 + function request(
  1376 + option: PostCanrdApiUserCenterInfoOption,
  1377 + ): Promise<PostCanrdApiUserCenterInfoResponseSuccess> {
  1378 + return requester(request.url, {
  1379 + method: request.method,
  1380 + ...option,
  1381 + }) as unknown as Promise<PostCanrdApiUserCenterInfoResponseSuccess>;
682 1382 }
683 1383  
684 1384 /** http method */
... ... @@ -836,7 +1536,9 @@ export interface GetErrorResponse {
836 1536 * @description
837 1537 * OK
838 1538 */
839   - 200: ModelAndView;
  1539 + 200: {
  1540 + [propertyName: string]: any;
  1541 + };
840 1542 /**
841 1543 * @description
842 1544 * Unauthorized
... ... @@ -857,9 +1559,9 @@ export interface GetErrorResponse {
857 1559 export type GetErrorResponseSuccess = GetErrorResponse[200];
858 1560 /**
859 1561 * @description
860   - * errorHtml
  1562 + * error
861 1563 * @tags basic-error-controller
862   - * @produces text/html
  1564 + * @produces *
863 1565 */
864 1566 export const getError = /* #__PURE__ */ (() => {
865 1567 const method = 'get';
... ... @@ -883,7 +1585,9 @@ export interface PutErrorResponse {
883 1585 * @description
884 1586 * OK
885 1587 */
886   - 200: ModelAndView;
  1588 + 200: {
  1589 + [propertyName: string]: any;
  1590 + };
887 1591 /**
888 1592 * @description
889 1593 * Created
... ... @@ -909,9 +1613,9 @@ export interface PutErrorResponse {
909 1613 export type PutErrorResponseSuccess = PutErrorResponse[200];
910 1614 /**
911 1615 * @description
912   - * errorHtml
  1616 + * error
913 1617 * @tags basic-error-controller
914   - * @produces text/html
  1618 + * @produces *
915 1619 * @consumes application/json
916 1620 */
917 1621 export const putError = /* #__PURE__ */ (() => {
... ... @@ -936,7 +1640,9 @@ export interface PostErrorResponse {
936 1640 * @description
937 1641 * OK
938 1642 */
939   - 200: ModelAndView;
  1643 + 200: {
  1644 + [propertyName: string]: any;
  1645 + };
940 1646 /**
941 1647 * @description
942 1648 * Created
... ... @@ -962,9 +1668,9 @@ export interface PostErrorResponse {
962 1668 export type PostErrorResponseSuccess = PostErrorResponse[200];
963 1669 /**
964 1670 * @description
965   - * errorHtml
  1671 + * error
966 1672 * @tags basic-error-controller
967   - * @produces text/html
  1673 + * @produces *
968 1674 * @consumes application/json
969 1675 */
970 1676 export const postError = /* #__PURE__ */ (() => {
... ... @@ -989,7 +1695,9 @@ export interface DeleteErrorResponse {
989 1695 * @description
990 1696 * OK
991 1697 */
992   - 200: ModelAndView;
  1698 + 200: {
  1699 + [propertyName: string]: any;
  1700 + };
993 1701 /**
994 1702 * @description
995 1703 * No Content
... ... @@ -1010,9 +1718,9 @@ export interface DeleteErrorResponse {
1010 1718 export type DeleteErrorResponseSuccess = DeleteErrorResponse[200];
1011 1719 /**
1012 1720 * @description
1013   - * errorHtml
  1721 + * error
1014 1722 * @tags basic-error-controller
1015   - * @produces text/html
  1723 + * @produces *
1016 1724 */
1017 1725 export const deleteError = /* #__PURE__ */ (() => {
1018 1726 const method = 'delete';
... ... @@ -1036,7 +1744,9 @@ export interface OptionsErrorResponse {
1036 1744 * @description
1037 1745 * OK
1038 1746 */
1039   - 200: ModelAndView;
  1747 + 200: {
  1748 + [propertyName: string]: any;
  1749 + };
1040 1750 /**
1041 1751 * @description
1042 1752 * No Content
... ... @@ -1057,9 +1767,9 @@ export interface OptionsErrorResponse {
1057 1767 export type OptionsErrorResponseSuccess = OptionsErrorResponse[200];
1058 1768 /**
1059 1769 * @description
1060   - * errorHtml
  1770 + * error
1061 1771 * @tags basic-error-controller
1062   - * @produces text/html
  1772 + * @produces *
1063 1773 * @consumes application/json
1064 1774 */
1065 1775 export const optionsError = /* #__PURE__ */ (() => {
... ... @@ -1084,7 +1794,9 @@ export interface HeadErrorResponse {
1084 1794 * @description
1085 1795 * OK
1086 1796 */
1087   - 200: ModelAndView;
  1797 + 200: {
  1798 + [propertyName: string]: any;
  1799 + };
1088 1800 /**
1089 1801 * @description
1090 1802 * No Content
... ... @@ -1105,9 +1817,9 @@ export interface HeadErrorResponse {
1105 1817 export type HeadErrorResponseSuccess = HeadErrorResponse[200];
1106 1818 /**
1107 1819 * @description
1108   - * errorHtml
  1820 + * error
1109 1821 * @tags basic-error-controller
1110   - * @produces text/html
  1822 + * @produces *
1111 1823 * @consumes application/json
1112 1824 */
1113 1825 export const headError = /* #__PURE__ */ (() => {
... ... @@ -1132,7 +1844,9 @@ export interface PatchErrorResponse {
1132 1844 * @description
1133 1845 * OK
1134 1846 */
1135   - 200: ModelAndView;
  1847 + 200: {
  1848 + [propertyName: string]: any;
  1849 + };
1136 1850 /**
1137 1851 * @description
1138 1852 * No Content
... ... @@ -1153,9 +1867,9 @@ export interface PatchErrorResponse {
1153 1867 export type PatchErrorResponseSuccess = PatchErrorResponse[200];
1154 1868 /**
1155 1869 * @description
1156   - * errorHtml
  1870 + * error
1157 1871 * @tags basic-error-controller
1158   - * @produces text/html
  1872 + * @produces *
1159 1873 * @consumes application/json
1160 1874 */
1161 1875 export const patchError = /* #__PURE__ */ (() => {
... ... @@ -6415,6 +7129,77 @@ export const postOrderErpUsersUpdatePass = /* #__PURE__ */ (() =&gt; {
6415 7129 return request;
6416 7130 })();
6417 7131  
  7132 +/** @description request parameter type for postOrderImportImportWeightAndVolume */
  7133 +export interface PostOrderImportImportWeightAndVolumeOption {
  7134 + /**
  7135 + * @description
  7136 + * file
  7137 + */
  7138 + formData: {
  7139 + /**
  7140 + @description
  7141 + file */
  7142 + file: File;
  7143 + };
  7144 +}
  7145 +
  7146 +/** @description response type for postOrderImportImportWeightAndVolume */
  7147 +export interface PostOrderImportImportWeightAndVolumeResponse {
  7148 + /**
  7149 + * @description
  7150 + * OK
  7151 + */
  7152 + 200: ServerResult;
  7153 + /**
  7154 + * @description
  7155 + * Created
  7156 + */
  7157 + 201: any;
  7158 + /**
  7159 + * @description
  7160 + * Unauthorized
  7161 + */
  7162 + 401: any;
  7163 + /**
  7164 + * @description
  7165 + * Forbidden
  7166 + */
  7167 + 403: any;
  7168 + /**
  7169 + * @description
  7170 + * Not Found
  7171 + */
  7172 + 404: any;
  7173 +}
  7174 +
  7175 +export type PostOrderImportImportWeightAndVolumeResponseSuccess =
  7176 + PostOrderImportImportWeightAndVolumeResponse[200];
  7177 +/**
  7178 + * @description
  7179 + * 导入重量和体积
  7180 + * @tags 导入
  7181 + * @produces *
  7182 + * @consumes multipart/form-data
  7183 + */
  7184 +export const postOrderImportImportWeightAndVolume = /* #__PURE__ */ (() => {
  7185 + const method = 'post';
  7186 + const url = '/order/import/importWeightAndVolume';
  7187 + function request(
  7188 + option: PostOrderImportImportWeightAndVolumeOption,
  7189 + ): Promise<PostOrderImportImportWeightAndVolumeResponseSuccess> {
  7190 + return requester(request.url, {
  7191 + method: request.method,
  7192 + ...option,
  7193 + }) as unknown as Promise<PostOrderImportImportWeightAndVolumeResponseSuccess>;
  7194 + }
  7195 +
  7196 + /** http method */
  7197 + request.method = method;
  7198 + /** request url */
  7199 + request.url = url;
  7200 + return request;
  7201 +})();
  7202 +
6418 7203 /** @description request parameter type for postPrepaidAudit */
6419 7204 export interface PostPrepaidAuditOption {
6420 7205 /**
... ...
src/utils/StringUtil.ts 0 → 100644
  1 +export function getDefaultString(val: any) {
  2 + if (val === null || val === undefined) {
  3 + return '无';
  4 + }
  5 +
  6 + return val;
  7 +}
  8 +
  9 +export function isEmpty(val: any) {
  10 + return val === null || val === undefined || val.trim() === '';
  11 +}
... ...