Commit 795fbf6da1f56cb8701620022d0502be74a7420a

Authored by 曾国涛
2 parents 4a8e9287 7899437a

Merge branch 'master' into invoice

# Conflicts:
#	src/pages/Order/constant.ts
#	src/services/definition.ts
#	src/services/request.ts
Showing 41 changed files with 8157 additions and 2340 deletions
.umirc.ts
@@ -66,6 +66,20 @@ export default defineConfig({ @@ -66,6 +66,20 @@ export default defineConfig({
66 access: 'canReadAdminAndFinanceAndSales', 66 access: 'canReadAdminAndFinanceAndSales',
67 }, 67 },
68 { 68 {
  69 + name: '课题组管理',
  70 + path: '/researchGroup',
  71 + component: './ResearchGroup',
  72 + icon: 'AccountBookOutlined',
  73 + access: 'canReadAdminAndSales',
  74 + },
  75 + {
  76 + name: '分期账单',
  77 + path: '/instalment',
  78 + component: './Instalment',
  79 + icon: 'BookOutlined',
  80 + access: 'canReadLinda',
  81 + },
  82 + {
69 name: '打印', 83 name: '打印',
70 path: '/print', 84 path: '/print',
71 component: './OrderPrint', 85 component: './OrderPrint',
src/access.ts
1 export default (initialState: API.UserInfo) => { 1 export default (initialState: API.UserInfo) => {
2 // 在这里按照初始化数据定义项目中的权限,统一管理 2 // 在这里按照初始化数据定义项目中的权限,统一管理
3 // 参考文档 https://umijs.org/docs/max/access 3 // 参考文档 https://umijs.org/docs/max/access
4 - const { roleSmallVO } = initialState; 4 + const { roleSmallVO, username } = initialState;
5 const canReadAdmin = roleSmallVO?.code === 'admin'; 5 const canReadAdmin = roleSmallVO?.code === 'admin';
6 const canReadProcure = roleSmallVO?.code === 'procure'; 6 const canReadProcure = roleSmallVO?.code === 'procure';
7 const canReadFinance = roleSmallVO?.code === 'finance'; 7 const canReadFinance = roleSmallVO?.code === 'finance';
@@ -11,9 +11,11 @@ export default (initialState: API.UserInfo) => { @@ -11,9 +11,11 @@ export default (initialState: API.UserInfo) => {
11 return { 11 return {
12 canReadAdmin: canReadAdmin, 12 canReadAdmin: canReadAdmin,
13 canReadProcure: canReadProcure, 13 canReadProcure: canReadProcure,
  14 + canReadLinda: username === 'Linda' || username === '吴量',
14 canReadAdminAndFinance: canReadFinance || canReadAdmin, 15 canReadAdminAndFinance: canReadFinance || canReadAdmin,
15 canReadSales: canReadSales, 16 canReadSales: canReadSales,
16 canReadAdminAndFinanceAndSales: 17 canReadAdminAndFinanceAndSales:
17 canReadFinance || canReadAdmin || canReadSales, 18 canReadFinance || canReadAdmin || canReadSales,
  19 + canReadAdminAndSales: canReadAdmin || canReadSales,
18 }; 20 };
19 }; 21 };
src/pages/Instalment/components/comfire/comfire.tsx 0 → 100644
  1 +import { ModalForm } from '@ant-design/pro-components';
  2 +import { Form, message } from 'antd';
  3 +import { useState } from 'react';
  4 +
  5 +const waitTime = (time: number = 100) => {
  6 + return new Promise((resolve) => {
  7 + setTimeout(() => {
  8 + resolve(true);
  9 + }, time);
  10 + });
  11 +};
  12 +
  13 +export default ({ currtDid, sureDelete }) => {
  14 + const [form] = Form.useForm<{ name: string; company: string }>();
  15 + const [ids, setIds] = useState([]);
  16 +
  17 + function getIds() {
  18 + setIds([]);
  19 + setIds(currtDid);
  20 + }
  21 + return (
  22 + <ModalForm<{
  23 + name: string;
  24 + company: string;
  25 + }>
  26 + trigger={
  27 + <a
  28 + onClick={() => {
  29 + getIds();
  30 + }}
  31 + >
  32 + 删除
  33 + </a>
  34 + }
  35 + form={form}
  36 + autoFocusFirstInput
  37 + width={190}
  38 + modalProps={{
  39 + destroyOnClose: true,
  40 + }}
  41 + onFinish={async () => {
  42 + await waitTime(100);
  43 + sureDelete([ids]);
  44 + message.success('提交成功');
  45 + return true;
  46 + }}
  47 + >
  48 + <br />
  49 + <h2>确定删除吗</h2>
  50 + </ModalForm>
  51 + );
  52 +};
src/pages/Instalment/components/detail/detail.tsx 0 → 100644
  1 +import {
  2 + postOrderErpOrderStagesAdd,
  3 + postOrderErpOrderStagesPayWaySaveOrUpdate,
  4 + postOrderErpOrderStagesSearch,
  5 + postOrderErpOrderStagesUpload,
  6 +} from '@/services';
  7 +import { PlusOutlined } from '@ant-design/icons';
  8 +import {
  9 + ModalForm,
  10 + ProCard,
  11 + ProForm,
  12 + ProFormDatePicker,
  13 + ProFormText,
  14 + ProFormTextArea,
  15 + ProFormUploadButton,
  16 +} from '@ant-design/pro-components';
  17 +import { Button, Form, message } from 'antd';
  18 +import { RcFile } from 'antd/es/upload';
  19 +import { useEffect, useState } from 'react';
  20 +import PayWayDetail from '../payWayDetail/payWayDetail';
  21 +import ProductDetail from '../productDetail/productDetail';
  22 +
  23 +const waitTime = (time: number = 100) => {
  24 + return new Promise((resolve) => {
  25 + setTimeout(() => {
  26 + resolve(true);
  27 + }, time);
  28 + });
  29 +};
  30 +
  31 +export default ({ toReload }) => {
  32 + const [form] = Form.useForm<{ name: string; company: string }>();
  33 + const [contextBody, setContextBody] = useState<OrderStagesWithListItem>({
  34 + id: undefined,
  35 + contract: undefined,
  36 + dateRange: undefined,
  37 + terminal: undefined,
  38 + orderStagesDeviceVoList: [],
  39 + totalPrice: undefined,
  40 + payWay: '30/30/30/10',
  41 + annex: undefined,
  42 + remark: undefined,
  43 + });
  44 + const [editProductBody, setEditProductBody] = useState([]);
  45 + const [total, setTotal] = useState(0);
  46 + const [payWayBody, setPayWayBody] = useState([]);
  47 + const [otherBody, setOtherBody] = useState([]);
  48 + const [isDis] = useState(true);
  49 +
  50 + type OrderStagesWithListItem = {
  51 + //文件编号
  52 + id?: number;
  53 + //合同编号
  54 + contract?: string;
  55 + //供应商名称
  56 + vendor?: string;
  57 + //签合同日期
  58 + dateRange?: Date;
  59 + //终端名称
  60 + terminal?: string;
  61 + orderStagesDeviceVoList: orderStagesDevice[];
  62 + //合同总金额
  63 + totalPrice?: number;
  64 + //付款方式
  65 + payWay?: string;
  66 + //附件
  67 + annex?: string;
  68 + //备注
  69 + remark?: string;
  70 + };
  71 +
  72 + type orderStagesDevice = {
  73 + //设备id
  74 + dId: number;
  75 + //设备名称
  76 + deviceName: string;
  77 + //设备型号
  78 + deviceModel: string;
  79 + //数量
  80 + count: number;
  81 + //单价
  82 + unitPrice: number;
  83 + //总价
  84 + price: number;
  85 + };
  86 +
  87 + function setSave(value) {
  88 + setOtherBody(value);
  89 + }
  90 +
  91 + useEffect(() => {
  92 + setContextBody({ ...contextBody, totalPrice: total });
  93 + form.setFieldValue('totalPrice', total);
  94 + }, [total]);
  95 +
  96 + const handleInputChange = (value: string, no: number, priceNow?: number) => {
  97 + if (value === '') {
  98 + message.info('请输入比例!');
  99 + } else {
  100 + let totalPay = 0;
  101 + const payValue: string[] = value.split('/');
  102 + let body:
  103 + | ((prevState: never[]) => never[])
  104 + | { proportion: string; payPrice: number }[] = [];
  105 + if (no === 1) {
  106 + if (payValue.length !== 4) {
  107 + message.warning('比例个数总和不为4个!');
  108 + } else {
  109 + payValue.forEach((item) => {
  110 + totalPay += Number(item);
  111 + });
  112 + }
  113 + if (totalPay !== 100) {
  114 + message.warning('比例总和不为100!');
  115 + } else {
  116 + message.success('输入有效!');
  117 + payValue.forEach((item) => {
  118 + body.push({
  119 + proportion: item + '%',
  120 + payPrice: (Number(item) * total) / 100,
  121 + });
  122 + });
  123 + setPayWayBody(body);
  124 + }
  125 + } else {
  126 + payValue.forEach((item) => {
  127 + totalPay += Number(item);
  128 + });
  129 + payValue.forEach((item) => {
  130 + body.push({
  131 + proportion: item + '%',
  132 + payPrice: (Number(item) * priceNow) / 100,
  133 + });
  134 + });
  135 + setPayWayBody(body);
  136 + }
  137 + }
  138 + };
  139 +
  140 + function getEditProductBody(value) {
  141 + setEditProductBody(value);
  142 + let price = 0;
  143 + value.map((obj) => (price += obj.count * obj.unitPrice));
  144 + setTotal(price);
  145 + setContextBody({ ...contextBody, orderStagesDeviceVoList: value });
  146 + if (contextBody.payWay === '') {
  147 + handleInputChange('30/30/30/10', 0, price);
  148 + } else {
  149 + handleInputChange(contextBody.payWay, 0, price);
  150 + }
  151 + }
  152 +
  153 + function refresh() {
  154 + setEditProductBody([]);
  155 + setContextBody({
  156 + id: undefined,
  157 + contract: undefined,
  158 + dateRange: undefined,
  159 + terminal: undefined,
  160 + orderStagesDeviceVoList: [],
  161 + totalPrice: undefined,
  162 + payWay: '30/30/30/10',
  163 + annex: undefined,
  164 + remark: undefined,
  165 + });
  166 + handleInputChange('30/30/30/10', 0, 0);
  167 + }
  168 +
  169 + return (
  170 + <ModalForm<OrderStagesWithListItem>
  171 + title="新建"
  172 + trigger={
  173 + <Button
  174 + key="button"
  175 + icon={<PlusOutlined />}
  176 + type="primary"
  177 + onClick={() => refresh()}
  178 + >
  179 + 新增
  180 + </Button>
  181 + }
  182 + form={form}
  183 + autoFocusFirstInput
  184 + modalProps={{
  185 + destroyOnClose: true,
  186 + }}
  187 + submitTimeout={2000}
  188 + onFinish={async (values) => {
  189 + console.log(values);
  190 + if (editProductBody.length === 0) {
  191 + message.error('请填写产品数据');
  192 + return false;
  193 + }
  194 + let remakeValue = [];
  195 +
  196 + const formData = new FormData();
  197 + let toSendEdit = {
  198 + id: values.id || contextBody.id,
  199 + contract: values.contract || contextBody.contract,
  200 + vendor: values.vendor || contextBody.vendor,
  201 + dateRange: values.dateRange || contextBody.dateRange,
  202 + terminal: values.terminal || contextBody.terminal,
  203 + orderStagesDeviceDoList:
  204 + values.orderStagesDeviceVoList ||
  205 + contextBody.orderStagesDeviceVoList,
  206 + totalPrice: values.totalPrice || contextBody.totalPrice,
  207 + payWay: values.payWay || contextBody.payWay,
  208 + annex: contextBody.annex,
  209 + remark: values.remark || contextBody.remark,
  210 + };
  211 + if (values.annex) {
  212 + formData.append('file', values.annex[0].originFileObj as RcFile);
  213 + const res = await postOrderErpOrderStagesUpload({
  214 + data: formData,
  215 + headers: {
  216 + 'Content-Type':
  217 + 'multipart/form-data; boundary=----WebKitFormBoundarynl6gT1BKdPWIejNq',
  218 + },
  219 + });
  220 + if (res.data) {
  221 + toSendEdit.annex = res.data;
  222 + }
  223 + }
  224 + const isSaveOrUpdate = await postOrderErpOrderStagesAdd({
  225 + data: { ...toSendEdit },
  226 + });
  227 +
  228 + if (isSaveOrUpdate) {
  229 + const promises = [];
  230 +
  231 + otherBody.forEach((item) => {
  232 + let remakeItem = {
  233 + ossId: item.ossId,
  234 + number: item.id,
  235 + dateRange: item.payDate,
  236 + fileName: item.fileName,
  237 + };
  238 + if (
  239 + typeof item.fileUrl === 'object' &&
  240 + item.fileUrl instanceof File
  241 + ) {
  242 + const formData = new FormData();
  243 + formData.append('file', item.fileUrl as RcFile);
  244 + const uploadPromise = async () => {
  245 + const res = await postOrderErpOrderStagesUpload({
  246 + data: formData,
  247 + headers: {
  248 + 'Content-Type':
  249 + 'multipart/form-data; boundary=----WebKitFormBoundarynl6gT1BKdPWIejNq',
  250 + },
  251 + });
  252 + if (res.data) {
  253 + remakeItem.fileUrl = res.data;
  254 + }
  255 + };
  256 + promises.push(uploadPromise());
  257 + }
  258 + remakeValue.push(remakeItem);
  259 + });
  260 +
  261 + let makeEnd = [];
  262 + const getRetrunIDPromise = async () => {
  263 + let returnOssID = await postOrderErpOrderStagesSearch({
  264 + data: { contract: values.contract || contextBody.contract },
  265 + });
  266 + console.log(returnOssID.data);
  267 +
  268 + if (returnOssID) {
  269 + makeEnd = remakeValue.map((item) => {
  270 + return { ...item, ossId: returnOssID.data[0].id };
  271 + });
  272 + }
  273 + };
  274 +
  275 + promises.push(getRetrunIDPromise());
  276 + Promise.all(promises).then(async () => {
  277 + await postOrderErpOrderStagesPayWaySaveOrUpdate({
  278 + data: makeEnd,
  279 + });
  280 + });
  281 + toReload();
  282 + }
  283 + await waitTime(2000);
  284 + message.success('提交成功');
  285 + return true;
  286 + }}
  287 + >
  288 + <ProCard title="基本信息" headerBordered bordered>
  289 + <ProForm.Group>
  290 + <ProFormText
  291 + width="md"
  292 + name="vendor"
  293 + rules={[{ required: true, message: '此项为必填项' }]}
  294 + label="供应商名称"
  295 + placeholder="请输入"
  296 + initialValue={contextBody.vendor}
  297 + />
  298 +
  299 + <ProFormText
  300 + width="md"
  301 + name="terminal"
  302 + rules={[{ required: true, message: '此项为必填项' }]}
  303 + label="终端名称"
  304 + placeholder="请输入"
  305 + initialValue={contextBody.terminal}
  306 + />
  307 +
  308 + <ProFormDatePicker
  309 + name="dateRange"
  310 + width="md"
  311 + label="签合同日期"
  312 + placeholder="请选择日期"
  313 + fieldProps={{
  314 + format: (value) => value.format('YYYY-MM-DD'),
  315 + }}
  316 + initialValue={contextBody.dateRange}
  317 + />
  318 +
  319 + <ProFormText
  320 + width="md"
  321 + name="payWay"
  322 + rules={[{ required: true, message: '此项为必填项' }]}
  323 + label="付款比例"
  324 + placeholder="请输入"
  325 + initialValue={contextBody.payWay}
  326 + disabled={!isDis}
  327 + onBlur={(e) => {
  328 + setContextBody({ ...contextBody, payWay: e.target.value });
  329 + handleInputChange(e.target.value, 1);
  330 + }}
  331 + />
  332 +
  333 + <ProFormText
  334 + width="md"
  335 + name="contract"
  336 + rules={[{ required: true, message: '此项为必填项' }]}
  337 + label="合同编号"
  338 + placeholder="请输入"
  339 + initialValue={contextBody.contract}
  340 + />
  341 +
  342 + <ProFormUploadButton
  343 + width="md"
  344 + name="annex"
  345 + max={1}
  346 + label="合同附件"
  347 + />
  348 +
  349 + <ProFormText
  350 + width="md"
  351 + name="totalPrice"
  352 + label="合同金额"
  353 + placeholder="请输入"
  354 + disabled={isDis}
  355 + initialValue={'0'}
  356 + />
  357 + </ProForm.Group>
  358 + </ProCard>
  359 + <ProCard
  360 + title={
  361 + <>
  362 + <span style={{ color: 'red' }}>*</span>产品明细
  363 + </>
  364 + }
  365 + style={{ marginTop: 10 }}
  366 + headerBordered
  367 + bordered
  368 + >
  369 + <ProductDetail
  370 + productBody={[]}
  371 + EditProductBody={getEditProductBody}
  372 + ></ProductDetail>
  373 + </ProCard>
  374 +
  375 + <ProCard
  376 + title="付款信息"
  377 + style={{ marginTop: 10 }}
  378 + headerBordered
  379 + bordered
  380 + >
  381 + <PayWayDetail
  382 + payBody={payWayBody}
  383 + thisId={null}
  384 + currtSave={setSave}
  385 + ></PayWayDetail>
  386 + </ProCard>
  387 +
  388 + <ProCard style={{ marginTop: 10 }} headerBordered bordered>
  389 + <ProFormTextArea
  390 + label="备注"
  391 + name="remark"
  392 + initialValue={contextBody.remark}
  393 + />
  394 + </ProCard>
  395 + </ModalForm>
  396 + );
  397 +};
src/pages/Instalment/components/edit/edit.tsx 0 → 100644
  1 +import {
  2 + postOrderErpOrderStagesPayWaySaveOrUpdate,
  3 + postOrderErpOrderStagesSaveOrUpdate,
  4 + postOrderErpOrderStagesSearch,
  5 + postOrderErpOrderStagesUpload,
  6 +} from '@/services';
  7 +import {
  8 + ModalForm,
  9 + ProCard,
  10 + ProForm,
  11 + ProFormDatePicker,
  12 + ProFormText,
  13 + ProFormTextArea,
  14 + ProFormUploadButton,
  15 +} from '@ant-design/pro-components';
  16 +import { Form, message } from 'antd';
  17 +import { RcFile } from 'antd/es/upload';
  18 +import { useEffect, useState } from 'react';
  19 +import PayWayDetail from '../payWayDetail/payWayDetail';
  20 +import ProductDetail from '../productDetail/productDetail';
  21 +
  22 +const waitTime = (time: number = 100) => {
  23 + return new Promise((resolve) => {
  24 + setTimeout(() => {
  25 + resolve(true);
  26 + }, time);
  27 + });
  28 +};
  29 +
  30 +export default ({ currentContract, toReload }) => {
  31 + const [form] = Form.useForm<{ name: string; company: string }>();
  32 + const [contextBody, setContextBody] = useState({});
  33 + const [total, setTotal] = useState(0);
  34 + const [payWayBody, setPayWayBody] = useState([]);
  35 + const [otherBody, setOtherBody] = useState([]);
  36 +
  37 + type OrderStagesWithListItem = {
  38 + //文件编号
  39 + id: number;
  40 + //合同编号
  41 + contract: string;
  42 + //供应商名称
  43 + vendor: string;
  44 + //签合同日期
  45 + dateRange: Date;
  46 + //终端名称
  47 + terminal: string;
  48 + orderStagesDeviceVoList: orderStagesDevice[];
  49 + //合同总金额
  50 + totalPrice: number;
  51 + //付款方式
  52 + payWay: string;
  53 + //附件
  54 + annex: string;
  55 + //备注
  56 + remark: string;
  57 + };
  58 +
  59 + type orderStagesDevice = {
  60 + //设备id
  61 + dId: number;
  62 + //设备名称
  63 + deviceName: string;
  64 + //设备型号
  65 + deviceModel: string;
  66 + //数量
  67 + count: number;
  68 + //单价
  69 + unitPrice: number;
  70 + //总价
  71 + price: number;
  72 + };
  73 +
  74 + async function refresh() {
  75 + const res = await postOrderErpOrderStagesSearch({
  76 + data: { contract: currentContract },
  77 + });
  78 + const context = res.data[0];
  79 +
  80 + if (context.contract !== null) {
  81 + setContextBody(context);
  82 + setTotal(context.totalPrice);
  83 + form.setFieldValue('totalPrice', context.totalPrice);
  84 + }
  85 + }
  86 +
  87 + function setSave(value) {
  88 + setOtherBody(value);
  89 + }
  90 +
  91 + useEffect(() => {
  92 + setContextBody({ ...contextBody, totalPrice: total });
  93 + form.setFieldValue('totalPrice', total);
  94 + }, [total]);
  95 +
  96 + const handleInputChange = (value: string, no: number, priceNow?: number) => {
  97 + let totalPay = 0;
  98 + const payValue: string[] = value.split('/');
  99 + let body:
  100 + | ((prevState: never[]) => never[])
  101 + | { proportion: string; payPrice: number }[] = [];
  102 + if (no === 1) {
  103 + if (payValue.length !== 4) {
  104 + message.warning('比例个数总和不为4个!');
  105 + } else {
  106 + payValue.forEach((item) => {
  107 + totalPay += Number(item);
  108 + });
  109 + }
  110 + if (totalPay !== 100) {
  111 + message.warning('比例总和不为100!');
  112 + } else {
  113 + message.success('输入有效!');
  114 + const price = total;
  115 + payValue.forEach((item) => {
  116 + body.push({
  117 + proportion: item + '%',
  118 + payPrice: (Number(item) * price) / 100,
  119 + });
  120 + });
  121 + setPayWayBody(body);
  122 + }
  123 + } else {
  124 + payValue.forEach((item) => {
  125 + totalPay += Number(item);
  126 + });
  127 + payValue.forEach((item) => {
  128 + body.push({
  129 + proportion: item + '%',
  130 + payPrice: (Number(item) * priceNow) / 100,
  131 + });
  132 + });
  133 + setPayWayBody(body);
  134 + }
  135 + };
  136 +
  137 + async function getBody() {
  138 + const res = await postOrderErpOrderStagesSearch({
  139 + data: { contract: currentContract },
  140 + });
  141 + const context = res.data[0];
  142 +
  143 + if (context.contract !== null) {
  144 + setContextBody(context);
  145 + setTotal(context.totalPrice);
  146 + form.setFieldValue('totalPrice', context.totalPrice);
  147 + }
  148 + handleInputChange(context.payWay, 0, context.totalPrice);
  149 + }
  150 +
  151 + function getEditProductBody(value) {
  152 + let price = 0;
  153 + value.map((obj) => (price += obj.count * obj.unitPrice));
  154 + setTotal(price);
  155 + setContextBody({ ...contextBody, orderStagesDeviceVoList: value });
  156 + handleInputChange(contextBody.payWay, 0, price);
  157 + }
  158 +
  159 + useEffect(() => {
  160 + getBody();
  161 + }, []);
  162 +
  163 + return (
  164 + <ModalForm<OrderStagesWithListItem>
  165 + title="新建"
  166 + trigger={<a onClick={refresh}>编辑</a>}
  167 + form={form}
  168 + autoFocusFirstInput
  169 + modalProps={{
  170 + destroyOnClose: true,
  171 + }}
  172 + submitTimeout={2000}
  173 + onFinish={async (values) => {
  174 + if (contextBody.orderStagesDeviceVoList.length === 0) {
  175 + message.error('请填写产品数据');
  176 + return false;
  177 + }
  178 + let remakeValue = [];
  179 + const promises = [];
  180 +
  181 + otherBody.forEach((item) => {
  182 + let remakeItem = {
  183 + ossId: contextBody.id,
  184 + number: item.id,
  185 + dateRange: item.payDate,
  186 + fileName: item.fileName,
  187 + };
  188 + if (
  189 + typeof item.fileUrl === 'object' &&
  190 + item.fileUrl instanceof File
  191 + ) {
  192 + const formData = new FormData();
  193 + formData.append('file', item.fileUrl as RcFile);
  194 + const uploadPromise = async () => {
  195 + const res = await postOrderErpOrderStagesUpload({
  196 + data: formData,
  197 + headers: {
  198 + 'Content-Type':
  199 + 'multipart/form-data; boundary=----WebKitFormBoundarynl6gT1BKdPWIejNq',
  200 + },
  201 + });
  202 + if (res.data) {
  203 + remakeItem.fileUrl = res.data;
  204 + }
  205 + };
  206 + promises.push(uploadPromise());
  207 + }
  208 + remakeValue.push(remakeItem);
  209 + });
  210 + Promise.all(promises).then(async () => {
  211 + await postOrderErpOrderStagesPayWaySaveOrUpdate({
  212 + data: remakeValue,
  213 + });
  214 + });
  215 + const formData = new FormData();
  216 + let toSendEdit = {
  217 + id: values.id || contextBody.id,
  218 + contract: values.contract || contextBody.contract,
  219 + vendor: values.vendor || contextBody.vendor,
  220 + dateRange: values.dateRange || contextBody.dateRange,
  221 + terminal: values.terminal || contextBody.terminal,
  222 + orderStagesDeviceDoList:
  223 + values.orderStagesDeviceVoList ||
  224 + contextBody.orderStagesDeviceVoList,
  225 + totalPrice: values.totalPrice || contextBody.totalPrice,
  226 + payWay: values.payWay || contextBody.payWay,
  227 + annex: contextBody.annex,
  228 + remark: values.remark || contextBody.remark,
  229 + };
  230 + if (values.annex) {
  231 + formData.append('file', values.annex[0].originFileObj as RcFile);
  232 + const res = await postOrderErpOrderStagesUpload({
  233 + data: formData,
  234 + headers: {
  235 + 'Content-Type':
  236 + 'multipart/form-data; boundary=----WebKitFormBoundarynl6gT1BKdPWIejNq',
  237 + },
  238 + });
  239 + if (res.data) {
  240 + toSendEdit.annex = res.data;
  241 + }
  242 + }
  243 + const isSaveOrUpdate = await postOrderErpOrderStagesSaveOrUpdate({
  244 + data: { ...toSendEdit },
  245 + });
  246 + if (isSaveOrUpdate) {
  247 + getBody();
  248 + toReload();
  249 + }
  250 + await waitTime(2000);
  251 + message.success('提交成功');
  252 + return true;
  253 + }}
  254 + >
  255 + <ProCard title="基本信息" headerBordered bordered>
  256 + <ProForm.Group>
  257 + <ProFormText
  258 + width="md"
  259 + name="vendor"
  260 + rules={[{ required: true, message: '此项为必填项' }]}
  261 + label="供应商名称"
  262 + placeholder="请输入"
  263 + initialValue={contextBody.vendor}
  264 + />
  265 +
  266 + <ProFormText
  267 + width="md"
  268 + name="terminal"
  269 + rules={[{ required: true, message: '此项为必填项' }]}
  270 + label="终端名称"
  271 + placeholder="请输入"
  272 + initialValue={contextBody.terminal}
  273 + />
  274 +
  275 + <ProFormDatePicker
  276 + name="dateRange"
  277 + width="md"
  278 + label="签合同日期"
  279 + placeholder="请选择日期"
  280 + fieldProps={{
  281 + format: (value) => value.format('YYYY-MM-DD'),
  282 + }}
  283 + initialValue={contextBody.dateRange}
  284 + />
  285 +
  286 + <ProFormText
  287 + width="md"
  288 + name="payWay"
  289 + rules={[{ required: true, message: '此项为必填项' }]}
  290 + label="付款比例"
  291 + placeholder="请输入"
  292 + initialValue={contextBody.payWay}
  293 + onBlur={(e) => {
  294 + handleInputChange(e.target.value, 1);
  295 + }}
  296 + />
  297 +
  298 + <ProFormText
  299 + width="md"
  300 + name="contract"
  301 + rules={[{ required: true, message: '此项为必填项' }]}
  302 + label="合同编号"
  303 + placeholder="请输入"
  304 + initialValue={contextBody.contract}
  305 + />
  306 +
  307 + <ProFormUploadButton
  308 + width="md"
  309 + name="annex"
  310 + max={1}
  311 + label="合同附件"
  312 + />
  313 +
  314 + <ProFormText
  315 + width="md"
  316 + name="totalPrice"
  317 + label="合同金额"
  318 + placeholder="请输入"
  319 + disabled
  320 + initialValue={contextBody.totalPrice}
  321 + />
  322 + </ProForm.Group>
  323 + </ProCard>
  324 +
  325 + <ProCard
  326 + title={
  327 + <>
  328 + <span style={{ color: 'red' }}>*</span>产品明细
  329 + </>
  330 + }
  331 + style={{ marginTop: 10 }}
  332 + headerBordered
  333 + bordered
  334 + >
  335 + <ProductDetail
  336 + productBody={contextBody.orderStagesDeviceVoList}
  337 + EditProductBody={getEditProductBody}
  338 + ></ProductDetail>
  339 + </ProCard>
  340 +
  341 + <ProCard
  342 + title="付款信息"
  343 + style={{ marginTop: 10 }}
  344 + headerBordered
  345 + bordered
  346 + >
  347 + <PayWayDetail
  348 + payBody={payWayBody}
  349 + thisId={contextBody.id}
  350 + currtSave={setSave}
  351 + ></PayWayDetail>
  352 + </ProCard>
  353 +
  354 + <ProCard style={{ marginTop: 10 }} headerBordered bordered>
  355 + <ProFormTextArea
  356 + label="备注"
  357 + name="remark"
  358 + initialValue={contextBody.remark}
  359 + />
  360 + </ProCard>
  361 + </ModalForm>
  362 + );
  363 +};
src/pages/Instalment/components/payWayDetail/payWayDetail.css 0 → 100644
  1 +.payway-detail-index td {
  2 + font-family: 'San Francisco', 'Helvetica Neue', Helvetica, Arial,
  3 + 'Microsoft YaHei', 'PingFang SC', 'Hiragino Sans GB', 'Heiti SC',
  4 + 'WenQuanYi Micro Hei', sans-serif;
  5 + font-size: 14px;
  6 + margin: 0;
  7 +}
  8 +
  9 +.payway-detail-index td .css-dev-only-do-not-override-nllxry {
  10 + margin-bottom: 0 !important;
  11 +}
  12 +
  13 +.dataChoose {
  14 + margin: 0;
  15 +}
src/pages/Instalment/components/payWayDetail/payWayDetail.less 0 → 100644
  1 +.payway-detail-index td {
  2 + font-family: 'San Francisco', 'Helvetica Neue', Helvetica, Arial,
  3 + 'Microsoft YaHei', 'PingFang SC', 'Hiragino Sans GB', 'Heiti SC',
  4 + 'WenQuanYi Micro Hei', sans-serif;
  5 + font-size: 14px;
  6 + margin: 0;
  7 +
  8 + .css-dev-only-do-not-override-nllxry {
  9 + margin-bottom: 0 !important;
  10 + }
  11 +}
  12 +
  13 +.dataChoose {
  14 + margin: 0;
  15 +}
  16 +
  17 +// .pay-way-detail-index td .css-dev-only-do-not-override-nllxry{
  18 +// margin-bottom: 0px !important;
  19 +// }
src/pages/Instalment/components/payWayDetail/payWayDetail.tsx 0 → 100644
  1 +import { postOrderErpOrderStagesPayWaySelect } from '@/services';
  2 +import type { ProColumns } from '@ant-design/pro-components';
  3 +import {
  4 + EditableProTable,
  5 + ProFormDatePicker,
  6 + ProFormRadio,
  7 + ProFormUploadButton,
  8 +} from '@ant-design/pro-components';
  9 +import { message } from 'antd';
  10 +import React, { useEffect, useState } from 'react';
  11 +import './payWayDetail.less';
  12 +
  13 +const waitTime = (time: number = 100) => {
  14 + return new Promise((resolve) => {
  15 + setTimeout(() => {
  16 + resolve(true);
  17 + }, time);
  18 + });
  19 +};
  20 +
  21 +type DataSourceType = {
  22 + id: number;
  23 + payStep?: string;
  24 + proportion?: string;
  25 + ossId?: number;
  26 + payPrice?: number;
  27 + payDate?: Date;
  28 + fileName?: string;
  29 + fileUrl?: string;
  30 +};
  31 +
  32 +export default ({ payBody, thisId, currtSave }) => {
  33 + const defaultData: DataSourceType[] = [
  34 + {
  35 + id: 1,
  36 + payStep: '预付款',
  37 + proportion: undefined,
  38 + payPrice: undefined,
  39 + ossId: undefined,
  40 + payDate: undefined,
  41 + fileName: undefined,
  42 + fileUrl: undefined,
  43 + },
  44 + {
  45 + id: 2,
  46 + payStep: '发贷款',
  47 + proportion: undefined,
  48 + payPrice: undefined,
  49 + ossId: undefined,
  50 + payDate: undefined,
  51 + fileName: undefined,
  52 + fileUrl: undefined,
  53 + },
  54 + {
  55 + id: 3,
  56 + payStep: '验收款',
  57 + proportion: undefined,
  58 + payPrice: undefined,
  59 + ossId: undefined,
  60 + payDate: undefined,
  61 + fileName: undefined,
  62 + fileUrl: undefined,
  63 + },
  64 + {
  65 + id: 4,
  66 + payStep: '质保金',
  67 + proportion: undefined,
  68 + payPrice: undefined,
  69 + ossId: undefined,
  70 + payDate: undefined,
  71 + fileName: undefined,
  72 + fileUrl: undefined,
  73 + },
  74 + ];
  75 +
  76 + const [editableKeys, setEditableRowKeys] = useState<React.Key[]>([]);
  77 + const [position, setPosition] = useState<'top' | 'bottom' | 'hidden'>(
  78 + 'hidden',
  79 + );
  80 + const [payWayDetailBody, setPayWayDetailBody] = useState<
  81 + readonly DataSourceType[]
  82 + >([...defaultData]);
  83 + // const [body, setBody] = useState([])
  84 + const [isAccept, setIsAccept] = useState(null);
  85 + // const [isCurrtSave, setIsCurrtSave] = useState(false);
  86 +
  87 + async function getOther(value, arr) {
  88 + const res = await postOrderErpOrderStagesPayWaySelect({
  89 + data: { ossId: value },
  90 + });
  91 + if (res.data) {
  92 + const context = res.data;
  93 + const remake = arr.map((obj) => {
  94 + let currt = obj;
  95 + context.forEach((object) => {
  96 + if (object.number === obj.id) {
  97 + currt = {
  98 + ...obj,
  99 + ossId: value,
  100 + payDate: object.dateRange,
  101 + fileName: object.fileName,
  102 + fileUrl: object.fileUrl,
  103 + };
  104 + return currt;
  105 + }
  106 + });
  107 + return currt;
  108 + });
  109 + setPayWayDetailBody(remake);
  110 + }
  111 + }
  112 +
  113 + function setPayWay(value) {
  114 + const remakeData = payWayDetailBody.map((obj) => {
  115 + return {
  116 + ...obj,
  117 + proportion: value[obj.id - 1]?.proportion,
  118 + payPrice: value[obj.id - 1]?.payPrice,
  119 + };
  120 + });
  121 + // console.log(remakeData);
  122 +
  123 + setPayWayDetailBody(remakeData);
  124 + // console.log(thisId);
  125 +
  126 + if (thisId !== null) {
  127 + getOther(thisId, remakeData);
  128 + }
  129 + }
  130 + // useEffect(() => {
  131 + // getOther(thisId)
  132 + // }, [thisId])
  133 +
  134 + useEffect(() => {
  135 + setPayWay(payBody);
  136 + }, [payBody]);
  137 +
  138 + // function setCurrtSave(value) {
  139 + // // console.log(value);
  140 + // setIsCurrtSave(payWayDetailBody)
  141 + // }
  142 +
  143 + const columns: ProColumns<DataSourceType>[] = [
  144 + {
  145 + title: '编号',
  146 + dataIndex: 'id',
  147 + hideInTable: true,
  148 + editable: false,
  149 + },
  150 + {
  151 + title: '付款信息',
  152 + dataIndex: 'payStep',
  153 + editable: false,
  154 + },
  155 + {
  156 + title: '付款比例',
  157 + dataIndex: 'proportion',
  158 + editable: false,
  159 + },
  160 + {
  161 + title: '付款金额',
  162 + dataIndex: 'payPrice',
  163 + editable: false,
  164 + },
  165 + {
  166 + title: '对应的订单',
  167 + dataIndex: 'ossId',
  168 + editable: false,
  169 + hideInTable: true,
  170 + },
  171 + {
  172 + title: '付款时间',
  173 + dataIndex: 'payDate',
  174 + editable: false,
  175 + render: (text, record) => {
  176 + const handleChange = (value) => {
  177 + const updatedDataSource = payWayDetailBody.map((item) => {
  178 + if (item.id === record.id) {
  179 + return {
  180 + ...item,
  181 + payDate: value,
  182 + };
  183 + }
  184 + return item;
  185 + });
  186 + // console.log(updatedDataSource);
  187 +
  188 + setPayWayDetailBody(updatedDataSource);
  189 + currtSave(updatedDataSource);
  190 + };
  191 +
  192 + return (
  193 + <ProFormDatePicker
  194 + className="dataChoose"
  195 + initialValue={record.payDate}
  196 + value={record.payDate}
  197 + placeholder={'请填写时间'}
  198 + fieldProps={{
  199 + format: (value) => value.format('YYYY-MM-DD'),
  200 + onChange: handleChange,
  201 + }}
  202 + />
  203 + );
  204 + },
  205 + },
  206 + {
  207 + title: '付款单回执',
  208 + dataIndex: 'fileName',
  209 + render: (text, record) => {
  210 + if (isAccept !== record.id) {
  211 + if (
  212 + typeof record.fileUrl === 'object' &&
  213 + record.fileUrl instanceof File
  214 + ) {
  215 + return (
  216 + <a onClick={() => message.error('请先保存')}>{record.fileName}</a>
  217 + );
  218 + } else {
  219 + return <a href={record.fileUrl}>{record.fileName}</a>;
  220 + }
  221 + } else {
  222 + return (
  223 + <ProFormUploadButton
  224 + name={record.id}
  225 + onChange={(value) => {
  226 + // console.log(value);
  227 + // console.log(payWayDetailBody);
  228 + let remakeBody = [];
  229 + let remakeBodyItem = {};
  230 + payWayDetailBody.forEach((item) => {
  231 + if (item.id === record.id) {
  232 + remakeBodyItem = {
  233 + ...item,
  234 + fileUrl: value.file.originFileObj,
  235 + fileName: value.file.name,
  236 + };
  237 + } else {
  238 + remakeBodyItem = { ...item };
  239 + }
  240 + // if (value.fileList.length == 0) {
  241 + // remakeBodyItem = { ...item, fileUrl: undefined, fileName: undefined }
  242 + // }
  243 + remakeBody.push(remakeBodyItem);
  244 + });
  245 + setPayWayDetailBody(remakeBody);
  246 + currtSave(remakeBody);
  247 + }}
  248 + width="md"
  249 + max={1}
  250 + />
  251 + );
  252 + }
  253 + },
  254 + },
  255 + {
  256 + title: '操作',
  257 + valueType: 'option',
  258 + width: 200,
  259 + render: (text, record) => [
  260 + <a
  261 + key="editable"
  262 + onClick={() => {
  263 + if (isAccept !== record.id) {
  264 + setIsAccept(record.id);
  265 + } else {
  266 + setIsAccept(null);
  267 + }
  268 + }}
  269 + >
  270 + {record.fileName !== undefined &&
  271 + record.fileName !== '' &&
  272 + record.fileName !== null
  273 + ? '重新上传'
  274 + : '上传回执'}
  275 + </a>,
  276 + ],
  277 + },
  278 + ];
  279 +
  280 + return (
  281 + <>
  282 + <EditableProTable<DataSourceType>
  283 + rowKey="id"
  284 + className="payway-detail-index"
  285 + toolbar={{ style: { display: 'none' } }}
  286 + ghost={true}
  287 + scroll={{
  288 + x: 960,
  289 + }}
  290 + recordCreatorProps={
  291 + position !== 'hidden'
  292 + ? {
  293 + position: position as 'top',
  294 + record: () => ({ id: (Math.random() * 1000000).toFixed(0) }),
  295 + }
  296 + : false
  297 + }
  298 + loading={false}
  299 + toolBarRender={() => [
  300 + <ProFormRadio.Group
  301 + key="render"
  302 + fieldProps={{
  303 + value: position,
  304 + onChange: (e) => setPosition(e.target.value),
  305 + }}
  306 + />,
  307 + ]}
  308 + columns={columns}
  309 + request={payWayDetailBody}
  310 + value={payWayDetailBody}
  311 + onChange={(value) => {
  312 + setPayWayDetailBody(value);
  313 + // setCurrtSave(payWayDetailBody)
  314 + }}
  315 + editable={{
  316 + type: 'multiple',
  317 + editableKeys,
  318 + onSave: async () => {
  319 + // console.log(rowKey, data, row);
  320 + await waitTime(2000);
  321 + },
  322 + onChange: setEditableRowKeys,
  323 + }}
  324 + />
  325 + </>
  326 + );
  327 +};
src/pages/Instalment/components/productDetail/productDetail.css 0 → 100644
  1 +.product-detail-index td {
  2 + font-family: 'San Francisco', 'Helvetica Neue', Helvetica, Arial,
  3 + 'Microsoft YaHei', 'PingFang SC', 'Hiragino Sans GB', 'Heiti SC',
  4 + 'WenQuanYi Micro Hei', sans-serif;
  5 + font-size: 14px;
  6 +}
src/pages/Instalment/components/productDetail/productDetail.less 0 → 100644
  1 +.product-detail-index td {
  2 + font-family: 'San Francisco', 'Helvetica Neue', Helvetica, Arial,
  3 + 'Microsoft YaHei', 'PingFang SC', 'Hiragino Sans GB', 'Heiti SC',
  4 + 'WenQuanYi Micro Hei', sans-serif;
  5 + font-size: 14px;
  6 +}
src/pages/Instalment/components/productDetail/productDetail.tsx 0 → 100644
  1 +import type { ProColumns } from '@ant-design/pro-components';
  2 +import { EditableProTable, ProFormRadio } from '@ant-design/pro-components';
  3 +import React, { useEffect, useState } from 'react';
  4 +import './productDetail.less';
  5 +
  6 +const waitTime = (time: number = 100) => {
  7 + return new Promise((resolve) => {
  8 + setTimeout(() => {
  9 + resolve(true);
  10 + }, time);
  11 + });
  12 +};
  13 +
  14 +// type DataSourceType = {
  15 +// count?: number;
  16 +// id: React.Key;
  17 +// deviceModel?: string;
  18 +// deviceName?: string;
  19 +// price?: number;
  20 +// unitPrice?: number;
  21 +// };
  22 +
  23 +export default ({ productBody, EditProductBody }) => {
  24 + const [editableKeys, setEditableRowKeys] = useState<React.Key[]>([]);
  25 + const [dataSource, setDataSource] = useState<readonly DataSourceType[]>([]);
  26 + // const [form] = Form.useForm<{ name: string; company: string }>();
  27 + const [position, setPosition] = useState<'top' | 'bottom' | 'hidden'>(
  28 + 'bottom',
  29 + );
  30 + function getDataSourece() {
  31 + if (productBody.length !== 0) {
  32 + setDataSource(productBody);
  33 + }
  34 + }
  35 + function setEditProductBody(value) {
  36 + // console.log(value);
  37 + // console.log(dataSource);
  38 +
  39 + const modifiedArray = value.map((obj) => {
  40 + if (obj.dId && Number(obj.dId) <= 1000) {
  41 + return {
  42 + ...obj,
  43 + count: obj.count,
  44 + dId: null,
  45 + deviceModel: obj.deviceModel,
  46 + deviceName: obj.deviceName,
  47 + price: Number(obj.unitPrice) * Number(obj.count),
  48 + unitPrice: obj.unitPrice,
  49 + };
  50 + } else {
  51 + return { ...obj, price: Number(obj.unitPrice) * Number(obj.count) };
  52 + }
  53 + });
  54 + // console.log(modifiedArray);
  55 +
  56 + EditProductBody(modifiedArray);
  57 + setDataSource(value);
  58 + }
  59 +
  60 + useEffect(() => {
  61 + getDataSourece();
  62 + }, [productBody]);
  63 +
  64 + type DataSourceType = {
  65 + id: React.Key;
  66 + count: number;
  67 + dId?: number;
  68 + deviceModel: string;
  69 + deviceName: string;
  70 + price: number;
  71 + unitPrice: number;
  72 + };
  73 +
  74 + const columns: ProColumns<DataSourceType>[] = [
  75 + {
  76 + title: '设备编号',
  77 + dataIndex: 'dId',
  78 + hideInTable: true,
  79 + },
  80 + {
  81 + title: '设备名称',
  82 + dataIndex: 'deviceName',
  83 + formItemProps: () => {
  84 + return {
  85 + rules: [{ required: true, message: '此项为必填项' }],
  86 + };
  87 + },
  88 + },
  89 + {
  90 + title: '设备型号',
  91 + dataIndex: 'deviceModel',
  92 + width: '15%',
  93 + formItemProps: () => {
  94 + return {
  95 + rules: [{ required: true, message: '此项为必填项' }],
  96 + };
  97 + },
  98 + },
  99 + {
  100 + title: '数量',
  101 + dataIndex: 'count',
  102 + formItemProps: () => {
  103 + return {
  104 + rules: [{ required: true, message: '此项为必填项' }],
  105 + };
  106 + },
  107 + },
  108 + {
  109 + title: '单价',
  110 + dataIndex: 'unitPrice',
  111 + formItemProps: () => {
  112 + return {
  113 + rules: [{ required: true, message: '此项为必填项' }],
  114 + };
  115 + },
  116 + },
  117 + {
  118 + title: '总价',
  119 + dataIndex: 'price',
  120 + hideInSetting: true,
  121 + disable: true,
  122 + editable: false,
  123 + render: (_text, record) => [
  124 + <span key={record.dId}>{record.count * record.unitPrice}</span>,
  125 + ],
  126 + },
  127 + {
  128 + title: '操作',
  129 + valueType: 'option',
  130 + width: 200,
  131 + render: (_text, record, _, action) => [
  132 + <a
  133 + key="editable"
  134 + onClick={() => {
  135 + if (record.dId) {
  136 + action?.startEditable?.(record.dId);
  137 + }
  138 + }}
  139 + >
  140 + 编辑
  141 + </a>,
  142 + <a
  143 + key="delete"
  144 + onClick={() => {
  145 + EditProductBody(
  146 + dataSource.filter((item) => item.dId !== record.dId),
  147 + );
  148 + setDataSource(dataSource.filter((item) => item.dId !== record.dId));
  149 + }}
  150 + >
  151 + 删除
  152 + </a>,
  153 + ],
  154 + },
  155 + ];
  156 +
  157 + return (
  158 + <>
  159 + <EditableProTable<DataSourceType>
  160 + className="product-detail-index"
  161 + rowKey="dId"
  162 + toolbar={{ style: { display: 'none' } }}
  163 + ghost={true}
  164 + scroll={{
  165 + x: 960,
  166 + }}
  167 + recordCreatorProps={
  168 + position !== 'hidden'
  169 + ? {
  170 + position: position as 'top',
  171 + record: () => ({ dId: (Math.random() * 1000).toFixed(0) }),
  172 + }
  173 + : false
  174 + }
  175 + loading={false}
  176 + toolBarRender={() => [
  177 + <ProFormRadio.Group
  178 + key="render"
  179 + fieldProps={{
  180 + value: position,
  181 + onChange: (e) => setPosition(e.target.value),
  182 + }}
  183 + />,
  184 + ]}
  185 + columns={columns}
  186 + request={dataSource}
  187 + value={dataSource}
  188 + onChange={setEditProductBody}
  189 + editable={{
  190 + type: 'multiple',
  191 + editableKeys,
  192 + onSave: async () => {
  193 + await waitTime(500);
  194 + },
  195 + onChange: setEditableRowKeys,
  196 + }}
  197 + />
  198 + </>
  199 + );
  200 +};
src/pages/Instalment/components/read/read.tsx 0 → 100644
  1 +import {
  2 + postOrderErpOrderStagesPayWaySaveOrUpdate,
  3 + postOrderErpOrderStagesSaveOrUpdate,
  4 + postOrderErpOrderStagesSearch,
  5 + postOrderErpOrderStagesUpload,
  6 +} from '@/services';
  7 +import {
  8 + ModalForm,
  9 + ProCard,
  10 + ProForm,
  11 + ProFormDatePicker,
  12 + ProFormText,
  13 + ProFormTextArea,
  14 +} from '@ant-design/pro-components';
  15 +import { Form, message } from 'antd';
  16 +import { RcFile } from 'antd/es/upload';
  17 +import { useEffect, useState } from 'react';
  18 +import PayWayDetail from './readPayWay';
  19 +import ProductDetail from './readProduct';
  20 +
  21 +const waitTime = (time: number = 100) => {
  22 + return new Promise((resolve) => {
  23 + setTimeout(() => {
  24 + resolve(true);
  25 + }, time);
  26 + });
  27 +};
  28 +
  29 +export default ({ currentContract }) => {
  30 + const [form] = Form.useForm<{ name: string; company: string }>();
  31 + const [contextBody, setContextBody] = useState({});
  32 + const [, setEditProductBody] = useState([]);
  33 + const [total, setTotal] = useState(0);
  34 + const [payWayBody, setPayWayBody] = useState([]);
  35 + const [otherBody, setOtherBody] = useState([]);
  36 +
  37 + type OrderStagesWithListItem = {
  38 + //文件编号
  39 + id: number;
  40 + //合同编号
  41 + contract: string;
  42 + //供应商名称
  43 + vendor: string;
  44 + //签合同日期
  45 + dateRange: Date;
  46 + //终端名称
  47 + terminal: string;
  48 + orderStagesDeviceVoList: orderStagesDevice[];
  49 + //合同总金额
  50 + totalPrice: number;
  51 + //付款方式
  52 + payWay: string;
  53 + //附件
  54 + annex: string;
  55 + //备注
  56 + remark: string;
  57 + };
  58 +
  59 + type orderStagesDevice = {
  60 + //设备id
  61 + dId: number;
  62 + //设备名称
  63 + deviceName: string;
  64 + //设备型号
  65 + deviceModel: string;
  66 + //数量
  67 + count: number;
  68 + //单价
  69 + unitPrice: number;
  70 + //总价
  71 + price: number;
  72 + };
  73 +
  74 + async function refresh() {
  75 + const res = await postOrderErpOrderStagesSearch({
  76 + data: { contract: currentContract },
  77 + });
  78 + const context = res.data[0];
  79 + // console.log(context);
  80 +
  81 + if (context.contract !== null) {
  82 + setContextBody(context);
  83 + setTotal(context.totalPrice);
  84 + form.setFieldValue('totalPrice', context.totalPrice);
  85 + }
  86 + }
  87 +
  88 + function setSave(value) {
  89 + // console.log(value);
  90 + setOtherBody(value);
  91 + }
  92 +
  93 + useEffect(() => {
  94 + setContextBody({ ...contextBody, totalPrice: total });
  95 + form.setFieldValue('totalPrice', total);
  96 + }, [total]);
  97 +
  98 + const handleInputChange = (value: string, no: number, priceNow?: number) => {
  99 + let totalPay = 0;
  100 + const payValue: string[] = value.split('/');
  101 + let body:
  102 + | ((prevState: never[]) => never[])
  103 + | { proportion: string; payPrice: number }[] = [];
  104 + if (no === 1) {
  105 + if (payValue.length !== 4) {
  106 + message.warning('比例个数总和不为4个!');
  107 + } else {
  108 + payValue.forEach((item) => {
  109 + totalPay += Number(item);
  110 + });
  111 + }
  112 + if (totalPay !== 100) {
  113 + message.warning('比例总和不为100!');
  114 + } else {
  115 + message.success('输入有效!');
  116 + const price = total;
  117 + payValue.forEach((item) => {
  118 + body.push({
  119 + proportion: item + '%',
  120 + payPrice: (Number(item) * price) / 100,
  121 + });
  122 + });
  123 + setPayWayBody(body);
  124 + }
  125 + } else {
  126 + payValue.forEach((item) => {
  127 + totalPay += Number(item);
  128 + });
  129 + payValue.forEach((item) => {
  130 + body.push({
  131 + proportion: item + '%',
  132 + payPrice: (Number(item) * priceNow) / 100,
  133 + });
  134 + });
  135 + setPayWayBody(body);
  136 + }
  137 + };
  138 +
  139 + async function getBody() {
  140 + const res = await postOrderErpOrderStagesSearch({
  141 + data: { contract: currentContract },
  142 + });
  143 + const context = res.data[0];
  144 + // console.log(context);
  145 +
  146 + if (context.contract !== null) {
  147 + setContextBody(context);
  148 + setTotal(context.totalPrice);
  149 + form.setFieldValue('totalPrice', context.totalPrice);
  150 + }
  151 + handleInputChange(context.payWay, 0, context.totalPrice);
  152 + }
  153 +
  154 + useEffect(() => {
  155 + getBody();
  156 + }, []);
  157 +
  158 + function getEditProductBody(value) {
  159 + // console.log(value);
  160 +
  161 + setEditProductBody(value);
  162 + let price = 0;
  163 + value.map((obj) => (price += obj.count * obj.unitPrice));
  164 + setTotal(price);
  165 + setContextBody({ ...contextBody, orderStagesDeviceVoList: value });
  166 + handleInputChange(contextBody.payWay, 0, price);
  167 + }
  168 +
  169 + return (
  170 + <ModalForm<OrderStagesWithListItem>
  171 + title="新建"
  172 + trigger={<a onClick={refresh}>查看</a>}
  173 + form={form}
  174 + autoFocusFirstInput
  175 + modalProps={{
  176 + destroyOnClose: true,
  177 + // onCancel: () => console.log('run'),
  178 + }}
  179 + submitTimeout={2000}
  180 + onFinish={async (values) => {
  181 + // console.log(values);
  182 + // console.log(otherBody);
  183 + let remakeValue = [];
  184 + // 创建一个用于存储所有异步操作的Promise数组
  185 + const promises = [];
  186 +
  187 + otherBody.forEach((item) => {
  188 + let remakeItem = {
  189 + ossId: item.ossId,
  190 + number: item.id,
  191 + dataRange: item.payDate,
  192 + fileName: item.fileName,
  193 + };
  194 + if (
  195 + typeof item.fileUrl === 'object' &&
  196 + item.fileUrl instanceof File
  197 + ) {
  198 + const formData = new FormData();
  199 + formData.append('file', item.fileUrl as RcFile);
  200 + const uploadPromise = async () => {
  201 + const res = await postOrderErpOrderStagesUpload({
  202 + data: formData,
  203 + headers: {
  204 + 'Content-Type':
  205 + 'multipart/form-data; boundary=----WebKitFormBoundarynl6gT1BKdPWIejNq',
  206 + },
  207 + });
  208 + if (res.data) {
  209 + remakeItem.fileUrl = res.data;
  210 + }
  211 + };
  212 + promises.push(uploadPromise());
  213 + }
  214 + remakeValue.push(remakeItem);
  215 + });
  216 +
  217 + // 使用Promise.all等待所有异步操作完成后再执行保存操作
  218 + Promise.all(promises).then(async () => {
  219 + await postOrderErpOrderStagesPayWaySaveOrUpdate({
  220 + data: remakeValue,
  221 + });
  222 + });
  223 + const formData = new FormData();
  224 + // let toSendEdit={...values,orderStagesDeviceVoList:contextBody.orderStagesDeviceVoList};
  225 + let toSendEdit = {
  226 + id: values.id || contextBody.id,
  227 + contract: values.contract || contextBody.contract,
  228 + vendor: values.vendor || contextBody.vendor,
  229 + dateRange: values.dateRange || contextBody.dateRange,
  230 + terminal: values.terminal || contextBody.terminal,
  231 + orderStagesDeviceDoList:
  232 + values.orderStagesDeviceVoList ||
  233 + contextBody.orderStagesDeviceVoList,
  234 + totalPrice: values.totalPrice || contextBody.totalPrice,
  235 + payWay: values.payWay || contextBody.payWay,
  236 + annex: contextBody.annex,
  237 + remark: values.remark || contextBody.remark,
  238 + };
  239 + if (values.annex) {
  240 + formData.append('file', values.annex[0].originFileObj as RcFile);
  241 + const res = await postOrderErpOrderStagesUpload({
  242 + data: formData,
  243 + headers: {
  244 + 'Content-Type':
  245 + 'multipart/form-data; boundary=----WebKitFormBoundarynl6gT1BKdPWIejNq',
  246 + },
  247 + });
  248 + if (res.data) {
  249 + // console.log(values)
  250 + // console.log(contextBody);
  251 + toSendEdit.annex = res.data;
  252 + }
  253 + }
  254 + const isSaveOrUpdate = await postOrderErpOrderStagesSaveOrUpdate({
  255 + data: { ...toSendEdit },
  256 + });
  257 + if (isSaveOrUpdate) {
  258 + // console.log(isSaveOrUpdate);
  259 + getBody();
  260 + }
  261 + await waitTime(2000);
  262 + message.success('提交成功');
  263 + return true;
  264 + }}
  265 + >
  266 + <ProCard title="基本信息" headerBordered bordered>
  267 + <ProForm.Group>
  268 + <ProFormText
  269 + width="md"
  270 + name="vendor"
  271 + label="供应商名称"
  272 + placeholder="请输入"
  273 + initialValue={contextBody.vendor}
  274 + readonly
  275 + />
  276 +
  277 + <ProFormText
  278 + width="md"
  279 + name="terminal"
  280 + label="终端名称"
  281 + placeholder="请输入"
  282 + initialValue={contextBody.terminal}
  283 + readonly
  284 + />
  285 +
  286 + <ProFormDatePicker
  287 + name="dateRange"
  288 + width="md"
  289 + label="签合同日期"
  290 + placeholder="请选择日期"
  291 + fieldProps={{
  292 + format: (value) => value.format('YYYY-MM-DD'),
  293 + }}
  294 + initialValue={contextBody.dateRange}
  295 + readonly
  296 + />
  297 +
  298 + <ProFormText
  299 + width="md"
  300 + name="payWay"
  301 + label="付款比例"
  302 + placeholder="请输入"
  303 + initialValue={contextBody.payWay}
  304 + readonly
  305 + onBlur={(e) => {
  306 + handleInputChange(e.target.value, 1);
  307 + }}
  308 + />
  309 +
  310 + <ProFormText
  311 + width="md"
  312 + name="contract"
  313 + label="合同编号"
  314 + placeholder="请输入"
  315 + initialValue={contextBody.contract}
  316 + readonly
  317 + />
  318 +
  319 + {/* <ProFormText
  320 + width="md"
  321 + name="annex"
  322 + label="合同附件"
  323 + placeholder="请输入"
  324 + initialValue={contextBody.fileUrl}
  325 + readonly
  326 + /> */}
  327 +
  328 + <ProFormText
  329 + width="md"
  330 + name="totalPrice"
  331 + label="合同金额"
  332 + placeholder="请输入"
  333 + disabled
  334 + readonly
  335 + // rules={[{ required: true, message: '此项为必填项' }]}
  336 + // value={contextBody.totalPrice}
  337 + initialValue={contextBody.totalPrice}
  338 + />
  339 + </ProForm.Group>
  340 + </ProCard>
  341 + <ProCard
  342 + title="产品明细"
  343 + style={{ marginTop: 10 }}
  344 + headerBordered
  345 + bordered
  346 + >
  347 + <ProductDetail
  348 + productBody={contextBody.orderStagesDeviceVoList}
  349 + EditProductBody={getEditProductBody}
  350 + ></ProductDetail>
  351 + </ProCard>
  352 +
  353 + <ProCard
  354 + title="付款信息"
  355 + style={{ marginTop: 10 }}
  356 + headerBordered
  357 + bordered
  358 + >
  359 + <PayWayDetail
  360 + payBody={payWayBody}
  361 + thisId={contextBody.id}
  362 + currtSave={setSave}
  363 + ></PayWayDetail>
  364 + </ProCard>
  365 +
  366 + <ProCard style={{ marginTop: 10 }} headerBordered bordered>
  367 + <ProFormTextArea
  368 + label="备注"
  369 + name="remark"
  370 + initialValue={contextBody.remark}
  371 + readonly
  372 + />
  373 + </ProCard>
  374 + </ModalForm>
  375 + );
  376 +};
src/pages/Instalment/components/read/readPayWay.tsx 0 → 100644
  1 +import { postOrderErpOrderStagesPayWaySelect } from '@/services';
  2 +import type { ProColumns } from '@ant-design/pro-components';
  3 +import {
  4 + EditableProTable,
  5 + ProFormRadio,
  6 + ProFormUploadButton,
  7 +} from '@ant-design/pro-components';
  8 +import { message } from 'antd';
  9 +import React, { useEffect, useState } from 'react';
  10 +
  11 +const waitTime = (time: number = 100) => {
  12 + return new Promise((resolve) => {
  13 + setTimeout(() => {
  14 + resolve(true);
  15 + }, time);
  16 + });
  17 +};
  18 +
  19 +type DataSourceType = {
  20 + id: number;
  21 + payStep?: string;
  22 + proportion?: string;
  23 + ossId?: number;
  24 + payPrice?: number;
  25 + payDate?: Date;
  26 + fileName?: string;
  27 + fileUrl?: string;
  28 +};
  29 +
  30 +export default ({ payBody, thisId, currtSave }) => {
  31 + const defaultData: DataSourceType[] = [
  32 + {
  33 + id: 1,
  34 + payStep: '预付款',
  35 + proportion: undefined,
  36 + payPrice: undefined,
  37 + ossId: undefined,
  38 + payDate: undefined,
  39 + fileName: undefined,
  40 + fileUrl: undefined,
  41 + },
  42 + {
  43 + id: 2,
  44 + payStep: '发贷款',
  45 + proportion: undefined,
  46 + payPrice: undefined,
  47 + ossId: undefined,
  48 + payDate: undefined,
  49 + fileName: undefined,
  50 + fileUrl: undefined,
  51 + },
  52 + {
  53 + id: 3,
  54 + payStep: '验收款',
  55 + proportion: undefined,
  56 + payPrice: undefined,
  57 + ossId: undefined,
  58 + payDate: undefined,
  59 + fileName: undefined,
  60 + fileUrl: undefined,
  61 + },
  62 + {
  63 + id: 4,
  64 + payStep: '质保金',
  65 + proportion: undefined,
  66 + payPrice: undefined,
  67 + ossId: undefined,
  68 + payDate: undefined,
  69 + fileName: undefined,
  70 + fileUrl: undefined,
  71 + },
  72 + ];
  73 +
  74 + const [editableKeys, setEditableRowKeys] = useState<React.Key[]>([]);
  75 + const [position, setPosition] = useState<'top' | 'bottom' | 'hidden'>(
  76 + 'hidden',
  77 + );
  78 + const [payWayDetailBody, setPayWayDetailBody] = useState<
  79 + readonly DataSourceType[]
  80 + >([...defaultData]);
  81 + const [isAccept] = useState(null);
  82 + // const [isCurrtSave, setIsCurrtSave] = useState(false);
  83 +
  84 + async function getOther(value, arr) {
  85 + const res = await postOrderErpOrderStagesPayWaySelect({
  86 + data: { ossId: value },
  87 + });
  88 + if (res.data) {
  89 + const context = res.data;
  90 + const remake = arr.map((obj) => {
  91 + let currt = obj;
  92 + context.forEach((object) => {
  93 + if (object.number === obj.id) {
  94 + currt = {
  95 + ...obj,
  96 + ossId: value,
  97 + payDate: object.dateRange,
  98 + fileName: object.fileName,
  99 + fileUrl: object.fileUrl,
  100 + };
  101 + return currt;
  102 + }
  103 + });
  104 + return currt;
  105 + });
  106 + setPayWayDetailBody(remake);
  107 + }
  108 + }
  109 +
  110 + function setPayWay(value) {
  111 + const remakeData = payWayDetailBody.map((obj) => {
  112 + return {
  113 + ...obj,
  114 + proportion: value[obj.id - 1]?.proportion,
  115 + payPrice: value[obj.id - 1]?.payPrice,
  116 + };
  117 + });
  118 +
  119 + setPayWayDetailBody(remakeData);
  120 +
  121 + if (thisId !== null) {
  122 + getOther(thisId, remakeData);
  123 + }
  124 + }
  125 + // useEffect(() => {
  126 + // getOther(thisId)
  127 + // }, [thisId])
  128 +
  129 + useEffect(() => {
  130 + setPayWay(payBody);
  131 + }, [payBody]);
  132 +
  133 + // function setCurrtSave(_value) {
  134 + // setIsCurrtSave(payWayDetailBody)
  135 + // }
  136 +
  137 + const columns: ProColumns<DataSourceType>[] = [
  138 + {
  139 + title: '编号',
  140 + dataIndex: 'id',
  141 + hideInTable: true,
  142 + editable: false,
  143 + },
  144 + {
  145 + title: '付款信息',
  146 + dataIndex: 'payStep',
  147 + editable: false,
  148 + },
  149 + {
  150 + title: '付款比例',
  151 + dataIndex: 'proportion',
  152 + editable: false,
  153 + },
  154 + {
  155 + title: '付款金额',
  156 + dataIndex: 'payPrice',
  157 + editable: false,
  158 + },
  159 + {
  160 + title: '对应的订单',
  161 + dataIndex: 'ossId',
  162 + editable: false,
  163 + hideInTable: true,
  164 + },
  165 + {
  166 + title: '付款时间',
  167 + dataIndex: 'payDate',
  168 + editable: false,
  169 + render: (_text, record) => {
  170 + return (
  171 + <span>
  172 + {new Intl.DateTimeFormat('zh-CN', {
  173 + year: 'numeric',
  174 + month: 'long',
  175 + day: 'numeric',
  176 + }).format(record.payDate)}
  177 + </span>
  178 + // <ProFormDatePicker
  179 + // className='dataChoose'
  180 + // initialValue={record.payDate}
  181 + // value={record.payDate}
  182 + // placeholder={"请填写时间"}
  183 + // fieldProps={{
  184 + // format: (value) => value.format('YYYY-MM-DD'),
  185 + // onChange: handleChange,
  186 + // }}
  187 + // />
  188 + );
  189 + },
  190 + },
  191 + {
  192 + title: '付款单回执',
  193 + dataIndex: 'fileName',
  194 + render: (_text, record) => {
  195 + if (isAccept !== record.id) {
  196 + if (
  197 + typeof record.fileUrl === 'object' &&
  198 + record.fileUrl instanceof File
  199 + ) {
  200 + return (
  201 + <a onClick={() => message.error('请先保存')}>{record.fileName}</a>
  202 + );
  203 + } else {
  204 + return <a href={record.fileUrl}>{record.fileName}</a>;
  205 + }
  206 + } else {
  207 + return (
  208 + <ProFormUploadButton
  209 + name={record.id}
  210 + onChange={(value) => {
  211 + let remakeBody = [];
  212 + let remakeBodyItem = {};
  213 + payWayDetailBody.forEach((item) => {
  214 + if (item.id === record.id) {
  215 + remakeBodyItem = {
  216 + ...item,
  217 + fileUrl: value.file.originFileObj,
  218 + fileName: value.file.name,
  219 + };
  220 + } else {
  221 + remakeBodyItem = { ...item };
  222 + }
  223 + if (value.fileList.length === 0) {
  224 + remakeBodyItem = {
  225 + ...item,
  226 + fileUrl: undefined,
  227 + fileName: undefined,
  228 + };
  229 + }
  230 + remakeBody.push(remakeBodyItem);
  231 + });
  232 + setPayWayDetailBody(remakeBody);
  233 + currtSave(remakeBody);
  234 + }}
  235 + width="md"
  236 + max={1}
  237 + />
  238 + );
  239 + }
  240 + },
  241 + },
  242 + ];
  243 +
  244 + return (
  245 + <>
  246 + <EditableProTable<DataSourceType>
  247 + rowKey="id"
  248 + className="payway-detail-index"
  249 + toolbar={{ style: { display: 'none' } }}
  250 + ghost={true}
  251 + scroll={{
  252 + x: 960,
  253 + }}
  254 + recordCreatorProps={
  255 + position !== 'hidden'
  256 + ? {
  257 + position: position as 'top',
  258 + record: () => ({ id: (Math.random() * 1000000).toFixed(0) }),
  259 + }
  260 + : false
  261 + }
  262 + loading={false}
  263 + toolBarRender={() => [
  264 + <ProFormRadio.Group
  265 + key="render"
  266 + fieldProps={{
  267 + value: position,
  268 + onChange: (e) => setPosition(e.target.value),
  269 + }}
  270 + />,
  271 + ]}
  272 + columns={columns}
  273 + request={payWayDetailBody}
  274 + value={payWayDetailBody}
  275 + onChange={(value) => {
  276 + setPayWayDetailBody(value);
  277 + // setCurrtSave(payWayDetailBody)
  278 + }}
  279 + editable={{
  280 + type: 'multiple',
  281 + editableKeys,
  282 + onSave: async () => {
  283 + await waitTime(2000);
  284 + },
  285 + onChange: setEditableRowKeys,
  286 + }}
  287 + />
  288 + </>
  289 + );
  290 +};
src/pages/Instalment/components/read/readProduct.tsx 0 → 100644
  1 +import type { ProColumns } from '@ant-design/pro-components';
  2 +import { EditableProTable, ProFormRadio } from '@ant-design/pro-components';
  3 +import { Form } from 'antd';
  4 +import React, { useEffect, useState } from 'react';
  5 +
  6 +const waitTime = (time: number = 100) => {
  7 + return new Promise((resolve) => {
  8 + setTimeout(() => {
  9 + resolve(true);
  10 + }, time);
  11 + });
  12 +};
  13 +
  14 +// type DataSourceType = {
  15 +// count?: number;
  16 +// id: React.Key;
  17 +// deviceModel?: string;
  18 +// deviceName?: string;
  19 +// price?: number;
  20 +// unitPrice?: number;
  21 +// };
  22 +
  23 +export default ({ productBody, EditProductBody }) => {
  24 + const [editableKeys, setEditableRowKeys] = useState<React.Key[]>([]);
  25 + const [dataSource, setDataSource] = useState<readonly DataSourceType[]>([]);
  26 + const [form] = Form.useForm<{ name: string; company: string }>();
  27 + const [position, setPosition] = useState<'top' | 'bottom' | 'hidden'>(
  28 + 'hidden',
  29 + );
  30 + function getDataSourece() {
  31 + if (productBody.length !== 0) {
  32 + setDataSource(productBody);
  33 + }
  34 + }
  35 + function setEditProductBody(value) {
  36 + const modifiedArray = value.map((obj) => {
  37 + if (obj.dId && Number(obj.dId) <= 1000) {
  38 + return {
  39 + ...obj,
  40 + count: obj.count,
  41 + dId: null,
  42 + deviceModel: obj.deviceModel,
  43 + deviceName: obj.deviceName,
  44 + price: obj.price,
  45 + unitPrice: obj.unitPrice,
  46 + };
  47 + } else {
  48 + return obj;
  49 + }
  50 + });
  51 +
  52 + EditProductBody(modifiedArray);
  53 + setDataSource(value);
  54 + }
  55 +
  56 + useEffect(() => {
  57 + getDataSourece();
  58 + }, [productBody]);
  59 +
  60 + type DataSourceType = {
  61 + id: React.Key;
  62 + count: number;
  63 + dId?: number;
  64 + deviceModel: string;
  65 + deviceName: string;
  66 + price: number;
  67 + unitPrice: number;
  68 + };
  69 +
  70 + const columns: ProColumns<DataSourceType>[] = [
  71 + {
  72 + title: '设备编号',
  73 + dataIndex: 'dId',
  74 + hideInTable: true,
  75 + },
  76 + {
  77 + title: '设备名称',
  78 + dataIndex: 'deviceName',
  79 + formItemProps: () => {
  80 + return {
  81 + rules: [{ required: true, message: '此项为必填项' }],
  82 + };
  83 + },
  84 + },
  85 + {
  86 + title: '设备型号',
  87 + dataIndex: 'deviceModel',
  88 + width: '15%',
  89 + formItemProps: () => {
  90 + return {
  91 + rules: [{ required: true, message: '此项为必填项' }],
  92 + };
  93 + },
  94 + },
  95 + {
  96 + title: '数量',
  97 + dataIndex: 'count',
  98 + onChange: (e) => {
  99 + const unitPrice = form.getFieldValue(`data[${rowIndex}].unitPrice`);
  100 + form.setFieldsValue({
  101 + [`data[${rowIndex}].price`]: e * unitPrice,
  102 + });
  103 + },
  104 + formItemProps: () => {
  105 + return {
  106 + rules: [{ required: true, message: '此项为必填项' }],
  107 + };
  108 + },
  109 + },
  110 + {
  111 + title: '单价',
  112 + dataIndex: 'unitPrice',
  113 + formItemProps: () => {
  114 + return {
  115 + rules: [{ required: true, message: '此项为必填项' }],
  116 + };
  117 + },
  118 + },
  119 + {
  120 + title: '总价',
  121 + dataIndex: 'price',
  122 + formItemProps: () => {
  123 + return {
  124 + rules: [{ required: true, message: '此项为必填项' }],
  125 + };
  126 + },
  127 + },
  128 + ];
  129 +
  130 + return (
  131 + <>
  132 + <EditableProTable<DataSourceType>
  133 + className="product-detail-index"
  134 + rowKey="dId"
  135 + toolbar={{ style: { display: 'none' } }}
  136 + ghost={true}
  137 + scroll={{
  138 + x: 960,
  139 + }}
  140 + recordCreatorProps={
  141 + position !== 'hidden'
  142 + ? {
  143 + position: position as 'top',
  144 + record: () => ({ dId: (Math.random() * 1000).toFixed(0) }),
  145 + }
  146 + : false
  147 + }
  148 + loading={false}
  149 + toolBarRender={() => [
  150 + <ProFormRadio.Group
  151 + key="render"
  152 + fieldProps={{
  153 + value: position,
  154 + onChange: (e) => setPosition(e.target.value),
  155 + }}
  156 + />,
  157 + ]}
  158 + columns={columns}
  159 + request={dataSource}
  160 + value={dataSource}
  161 + onChange={setEditProductBody}
  162 + editable={{
  163 + type: 'multiple',
  164 + editableKeys,
  165 + onSave: async () => {
  166 + await waitTime(500);
  167 + },
  168 + onChange: setEditableRowKeys,
  169 + }}
  170 + />
  171 + </>
  172 + );
  173 +};
src/pages/Instalment/components/title/title.less 0 → 100644
  1 +.item {
  2 + background: '#0092ff';
  3 + padding: '8px 0';
  4 + display: flex;
  5 + flex-flow: row nowrap;
  6 + // flex-direction: row;
  7 + // flex-wrap: nowrap;
  8 + align-content: normal;
  9 + align-items: center;
  10 + padding-bottom: 20px;
  11 +}
  12 +
  13 +// .titleSpan{
  14 +// font-weight: bold;
  15 +// width: 100px;
  16 +// }
  17 +
  18 +// .Btn{
  19 +// background: '#0092ff';
  20 +// padding: '8px 0';
  21 +// display: flex;
  22 +// flex-flow: row nowrap;
  23 +// // flex-direction: row;
  24 +// // flex-wrap: nowrap;
  25 +// align-content: normal;
  26 +// align-items: center;
  27 +// padding-bottom: 20px;
  28 +// justify-content: space-between;
  29 +// width: 160px;
  30 +// }
  31 +
  32 +.title-index td {
  33 + font-family: 'San Francisco', 'Helvetica Neue', Helvetica, Arial,
  34 + 'Microsoft YaHei', 'PingFang SC', 'Hiragino Sans GB', 'Heiti SC',
  35 + 'WenQuanYi Micro Hei', sans-serif;
  36 + font-size: 14px;
  37 +}
src/pages/Instalment/components/title/title.tsx 0 → 100644
  1 +import {
  2 + deleteOrderErpOrderStagesDelect,
  3 + getOrderErpOrderStagesListAll,
  4 + postOrderErpOrderStagesSearch,
  5 +} from '@/services';
  6 +import { orderExport } from '@/services/order';
  7 +import { VerticalAlignTopOutlined } from '@ant-design/icons';
  8 +import type { ProColumns } from '@ant-design/pro-components';
  9 +import { ProTable } from '@ant-design/pro-components';
  10 +import { Button, message } from 'antd';
  11 +import { useRef } from 'react';
  12 +import Comfire from '../comfire/comfire';
  13 +import AddModel from '../detail/detail';
  14 +import EditorModel from '../edit/edit';
  15 +import ReadModel from '../read/read';
  16 +import UploadModel from '../upload/uploadModel';
  17 +import './title.less';
  18 +export const waitTimePromise = async (time: number = 100) => {
  19 + return new Promise((resolve) => {
  20 + setTimeout(() => {
  21 + resolve(true);
  22 + }, time);
  23 + });
  24 +};
  25 +
  26 +export const waitTime = async (time: number = 100) => {
  27 + await waitTimePromise(time);
  28 +};
  29 +
  30 +type OrderStagesItem = {
  31 + //文件编号
  32 + id?: number;
  33 + //合同编号
  34 + contract?: string;
  35 + //供应商名称
  36 + vendor?: string;
  37 + //签合同日期
  38 + dateRange?: Date;
  39 + //终端名称
  40 + terminal?: string;
  41 + //设备编号
  42 + dId?: number;
  43 + //设备名称
  44 + deviceName?: string;
  45 + //设备型号
  46 + deviceModel?: string;
  47 + //数量
  48 + count?: number;
  49 + //单价
  50 + unitPrice?: number;
  51 + //总价
  52 + price?: number;
  53 + //合同总金额
  54 + totalPrice?: number;
  55 + //付款方式
  56 + payWay?: string;
  57 + //附件
  58 + annex?: string;
  59 + //备注
  60 + remark?: string;
  61 +};
  62 +
  63 +type OrderStagesWithListItem = {
  64 + //文件编号
  65 + id: number;
  66 + //合同编号
  67 + contract: string;
  68 + //供应商名称
  69 + vendor: string;
  70 + //签合同日期
  71 + dateRange: Date;
  72 + //终端名称
  73 + terminal: string;
  74 + orderStagesDeviceVoList: orderStagesDevice[];
  75 + //合同总金额
  76 + totalPrice: number;
  77 + //付款方式
  78 + payWay: string;
  79 + //附件
  80 + annex: string;
  81 + //备注
  82 + remark: string;
  83 +};
  84 +
  85 +type orderStagesDevice = {
  86 + //设备id
  87 + dId: number;
  88 + //设备名称
  89 + deviceName: string;
  90 + //设备型号
  91 + deviceModel: string;
  92 + //数量
  93 + count: number;
  94 + //单价
  95 + unitPrice: number;
  96 + //总价
  97 + price: number;
  98 +};
  99 +
  100 +export default () => {
  101 + // const actionRef = useRef<ActionType>();
  102 + // const [TableItem, setTableItem] = useState([]);
  103 +
  104 + interface ActionType {
  105 + reload: (resetPageIndex?: boolean) => void;
  106 + reloadAndRest: () => void;
  107 + reset: () => void;
  108 + clearSelected?: () => void;
  109 + startEditable: (rowKey: Key) => boolean;
  110 + cancelEditable: (rowKey: Key) => boolean;
  111 + }
  112 +
  113 + const ref = useRef<ActionType>({
  114 + reload: () => {
  115 + // implementation for reload
  116 + },
  117 + reloadAndRest: () => {
  118 + // implementation for reloadAndRest
  119 + },
  120 + reset: () => {
  121 + // implementation for reset
  122 + },
  123 + startEditable: () => {
  124 + // implementation for startEditable
  125 + },
  126 + cancelEditable: () => {
  127 + // implementation for cancelEditable
  128 + },
  129 + });
  130 +
  131 + function reload() {
  132 + ref.current.reload();
  133 + }
  134 +
  135 + async function toDelete(value) {
  136 + const res = await deleteOrderErpOrderStagesDelect({
  137 + data: {
  138 + ids: null,
  139 + deviceIds: value,
  140 + },
  141 + });
  142 + if (res) {
  143 + message.success('删除成功');
  144 + ref.current.reload();
  145 + } else {
  146 + message.error('删除失败');
  147 + }
  148 + }
  149 +
  150 + const exportLoadingDestory = () => {
  151 + message.success('导出成功');
  152 + };
  153 +
  154 + async function toExport() {
  155 + // await getOrderErpOrderStagesExport()
  156 + orderExport(
  157 + '/api/order/erp/orderStages/export',
  158 + '分期订单.xlsx',
  159 + 'get',
  160 + {},
  161 + exportLoadingDestory,
  162 + );
  163 + }
  164 +
  165 + const columns: ProColumns<OrderStagesItem>[] = [
  166 + {
  167 + title: '文件编号',
  168 + dataIndex: 'id',
  169 + width: '7%',
  170 + render: (_, record) => {
  171 + if (record.id) {
  172 + const text = record.id.toString();
  173 + const paddedText = '0'.repeat(4 - text.length) + text;
  174 + return paddedText;
  175 + }
  176 + },
  177 + },
  178 + {
  179 + title: '签合同日期',
  180 + dataIndex: 'dateRange',
  181 + valueType: 'date',
  182 + filters: true,
  183 + onFilter: true,
  184 + ellipsis: true,
  185 + width: '8%',
  186 + },
  187 + {
  188 + disable: true,
  189 + title: '合同编号',
  190 + dataIndex: 'contract',
  191 + filters: true,
  192 + onFilter: true,
  193 + ellipsis: true,
  194 + width: '9%',
  195 + },
  196 + {
  197 + disable: true,
  198 + title: '供应商名称',
  199 + dataIndex: 'vendor',
  200 + filters: true,
  201 + onFilter: true,
  202 + ellipsis: true,
  203 + },
  204 + {
  205 + disable: true,
  206 + title: '终端名称',
  207 + dataIndex: 'terminal',
  208 + filters: true,
  209 + onFilter: true,
  210 + ellipsis: true,
  211 + width: '6%',
  212 + },
  213 + {
  214 + disable: true,
  215 + title: '设备名称',
  216 + dataIndex: 'deviceName',
  217 + filters: true,
  218 + onFilter: true,
  219 + ellipsis: true,
  220 + },
  221 + {
  222 + disable: true,
  223 + title: '设备型号',
  224 + dataIndex: 'deviceModel',
  225 + filters: true,
  226 + hideInSearch: true,
  227 + onFilter: false,
  228 + ellipsis: true,
  229 + width: '10%',
  230 + },
  231 + {
  232 + disable: true,
  233 + title: '数量',
  234 + dataIndex: 'count',
  235 + filters: true,
  236 + hideInSearch: true,
  237 + onFilter: false,
  238 + ellipsis: true,
  239 + width: '4%',
  240 + },
  241 + {
  242 + disable: true,
  243 + title: '单价',
  244 + dataIndex: 'unitPrice',
  245 + filters: true,
  246 + hideInSearch: true,
  247 + onFilter: false,
  248 + ellipsis: true,
  249 + width: '5%',
  250 + },
  251 + {
  252 + disable: true,
  253 + title: '总价',
  254 + dataIndex: 'price',
  255 + filters: true,
  256 + hideInSearch: true,
  257 + onFilter: false,
  258 + ellipsis: true,
  259 + width: '5%',
  260 + },
  261 + {
  262 + disable: true,
  263 + title: '合同总金额',
  264 + dataIndex: 'totalPrice',
  265 + filters: true,
  266 + hideInSearch: true,
  267 + onFilter: false,
  268 + ellipsis: true,
  269 + width: '6%',
  270 + },
  271 + {
  272 + disable: true,
  273 + title: '付款方式',
  274 + dataIndex: 'payWay',
  275 + filters: true,
  276 + hideInSearch: true,
  277 + onFilter: false,
  278 + ellipsis: true,
  279 + },
  280 + {
  281 + disable: true,
  282 + title: '附件',
  283 + dataIndex: 'annex',
  284 + filters: true,
  285 + hideInSearch: true,
  286 + onFilter: false,
  287 + ellipsis: true,
  288 + width: '5%',
  289 + render: (_, record) => {
  290 + if (record.id) {
  291 + return <a href={record.annex}>{record.annex}</a>;
  292 + }
  293 + },
  294 + },
  295 + {
  296 + disable: true,
  297 + title: '备注',
  298 + dataIndex: 'remark',
  299 + filters: true,
  300 + hideInSearch: true,
  301 + onFilter: false,
  302 + ellipsis: true,
  303 + width: '5%',
  304 + },
  305 + {
  306 + title: '操作',
  307 + valueType: 'option',
  308 + key: 'option',
  309 + width: '10%',
  310 + render: (_text, record) => {
  311 + if (record?.id) {
  312 + return (
  313 + <>
  314 + <ReadModel currentContract={record.contract}></ReadModel>
  315 + &nbsp;
  316 + <EditorModel
  317 + currentContract={record.contract}
  318 + toReload={reload}
  319 + ></EditorModel>
  320 + &nbsp;
  321 + {/* <a key="delect" target="_blank" rel="noopener noreferrer" onClick={() => { toDelete([record.dId]) }}>
  322 + 删除
  323 + </a> */}
  324 + <Comfire currtDid={record.dId} sureDelete={toDelete}></Comfire>
  325 + </>
  326 + );
  327 + }
  328 + return null;
  329 + },
  330 + },
  331 + ];
  332 +
  333 + return (
  334 + <ProTable<OrderStagesItem>
  335 + className="title-index"
  336 + columnEmptyText=""
  337 + columns={columns}
  338 + actionRef={ref}
  339 + cardBordered
  340 + request={async (params) => {
  341 + // console.log(params);
  342 + if (
  343 + params.id !== null ||
  344 + params.contract !== null ||
  345 + params.vendor !== null ||
  346 + params.terminal !== null ||
  347 + params.deviceName !== null ||
  348 + params.dateRange !== null
  349 + ) {
  350 + // console.log(params.id);
  351 + // console.log(params.contract);
  352 + // console.log(params.vendor);
  353 + let PostOrderErpOrderStagesSearchOption = {
  354 + id: params.id,
  355 + contract: params.contract,
  356 + vendor: params.vendor,
  357 + terminal: params.terminal,
  358 + deviceName: params.deviceName,
  359 + dateRange: params.dateRange,
  360 + };
  361 + let res = await postOrderErpOrderStagesSearch({
  362 + data: { ...PostOrderErpOrderStagesSearchOption },
  363 + });
  364 + await waitTime(2000);
  365 + if (res) {
  366 + // setTableItem(res.data)
  367 + const orderStagesWithList: OrderStagesWithListItem[] = res?.data;
  368 + let orderStagesList: OrderStagesItem[] = [];
  369 + for (let ind = 0; ind < orderStagesWithList.length; ind++) {
  370 + for (
  371 + let index = 0;
  372 + index < orderStagesWithList[ind].orderStagesDeviceVoList.length;
  373 + index++
  374 + ) {
  375 + let item: OrderStagesItem = {
  376 + id: undefined,
  377 + contract: undefined,
  378 + vendor: undefined,
  379 + dateRange: undefined,
  380 + terminal: undefined,
  381 + dId: undefined,
  382 + deviceName: undefined,
  383 + deviceModel: undefined,
  384 + count: undefined,
  385 + unitPrice: undefined,
  386 + price: undefined,
  387 + totalPrice: undefined,
  388 + payWay: undefined,
  389 + annex: undefined,
  390 + remark: undefined,
  391 + };
  392 + if (index === 0) {
  393 + item.id = orderStagesWithList[ind].id;
  394 + item.contract = orderStagesWithList[ind].contract;
  395 + item.vendor = orderStagesWithList[ind].vendor;
  396 + item.dateRange = orderStagesWithList[ind].dateRange;
  397 + item.terminal = orderStagesWithList[ind].terminal;
  398 + item.dId =
  399 + orderStagesWithList[ind].orderStagesDeviceVoList[index].dId;
  400 + item.deviceName =
  401 + orderStagesWithList[ind].orderStagesDeviceVoList[
  402 + index
  403 + ].deviceName;
  404 + item.deviceModel =
  405 + orderStagesWithList[ind].orderStagesDeviceVoList[
  406 + index
  407 + ].deviceModel;
  408 + item.count =
  409 + orderStagesWithList[ind].orderStagesDeviceVoList[
  410 + index
  411 + ].count;
  412 + item.unitPrice =
  413 + orderStagesWithList[ind].orderStagesDeviceVoList[
  414 + index
  415 + ].unitPrice;
  416 + item.price =
  417 + orderStagesWithList[ind].orderStagesDeviceVoList[
  418 + index
  419 + ].price;
  420 + item.totalPrice = orderStagesWithList[ind].totalPrice;
  421 + item.payWay = orderStagesWithList[ind].payWay;
  422 + item.annex = orderStagesWithList[ind].annex;
  423 + item.remark = orderStagesWithList[ind].remark;
  424 + orderStagesList.push(item);
  425 + } else {
  426 + item.id = orderStagesWithList[ind].id;
  427 + item.contract = orderStagesWithList[ind].contract;
  428 + item.vendor = orderStagesWithList[ind].vendor;
  429 + item.dateRange = orderStagesWithList[ind].dateRange;
  430 + item.terminal = orderStagesWithList[ind].terminal;
  431 + item.dId =
  432 + orderStagesWithList[ind].orderStagesDeviceVoList[index].dId;
  433 + item.deviceName =
  434 + orderStagesWithList[ind].orderStagesDeviceVoList[
  435 + index
  436 + ].deviceName;
  437 + item.deviceModel =
  438 + orderStagesWithList[ind].orderStagesDeviceVoList[
  439 + index
  440 + ].deviceModel;
  441 + item.count =
  442 + orderStagesWithList[ind].orderStagesDeviceVoList[
  443 + index
  444 + ].count;
  445 + item.unitPrice =
  446 + orderStagesWithList[ind].orderStagesDeviceVoList[
  447 + index
  448 + ].unitPrice;
  449 + item.price =
  450 + orderStagesWithList[ind].orderStagesDeviceVoList[
  451 + index
  452 + ].price;
  453 + item.totalPrice = orderStagesWithList[ind].totalPrice;
  454 + item.payWay = orderStagesWithList[ind].payWay;
  455 + item.annex = orderStagesWithList[ind].annex;
  456 + item.remark = orderStagesWithList[ind].remark;
  457 + orderStagesList.push(item);
  458 + }
  459 + }
  460 + }
  461 + return {
  462 + data: orderStagesList || [],
  463 + };
  464 + }
  465 + } else {
  466 + let res = await getOrderErpOrderStagesListAll();
  467 + await waitTime(2000);
  468 + if (res) {
  469 + // setTableItem(res.data)
  470 + const orderStagesWithList: OrderStagesWithListItem[] = res?.data;
  471 + let orderStagesList: OrderStagesItem[] = [];
  472 + for (let ind = 0; ind < orderStagesWithList.length; ind++) {
  473 + for (
  474 + let index = 0;
  475 + index < orderStagesWithList[ind].orderStagesDeviceVoList.length;
  476 + index++
  477 + ) {
  478 + let item: OrderStagesItem = {
  479 + id: undefined,
  480 + contract: undefined,
  481 + vendor: undefined,
  482 + dateRange: undefined,
  483 + terminal: undefined,
  484 + dId: undefined,
  485 + deviceName: undefined,
  486 + deviceModel: undefined,
  487 + count: undefined,
  488 + unitPrice: undefined,
  489 + price: undefined,
  490 + totalPrice: undefined,
  491 + payWay: undefined,
  492 + annex: undefined,
  493 + remark: undefined,
  494 + };
  495 + if (index === 0) {
  496 + item.id = orderStagesWithList[ind].id;
  497 + item.contract = orderStagesWithList[ind].contract;
  498 + item.vendor = orderStagesWithList[ind].vendor;
  499 + item.dateRange = orderStagesWithList[ind].dateRange;
  500 + item.terminal = orderStagesWithList[ind].terminal;
  501 + item.dId =
  502 + orderStagesWithList[ind].orderStagesDeviceVoList[index].dId;
  503 + item.deviceName =
  504 + orderStagesWithList[ind].orderStagesDeviceVoList[
  505 + index
  506 + ].deviceName;
  507 + item.deviceModel =
  508 + orderStagesWithList[ind].orderStagesDeviceVoList[
  509 + index
  510 + ].deviceModel;
  511 + item.count =
  512 + orderStagesWithList[ind].orderStagesDeviceVoList[
  513 + index
  514 + ].count;
  515 + item.unitPrice =
  516 + orderStagesWithList[ind].orderStagesDeviceVoList[
  517 + index
  518 + ].unitPrice;
  519 + item.price =
  520 + orderStagesWithList[ind].orderStagesDeviceVoList[
  521 + index
  522 + ].price;
  523 + item.totalPrice = orderStagesWithList[ind].totalPrice;
  524 + item.payWay = orderStagesWithList[ind].payWay;
  525 + item.annex = orderStagesWithList[ind].annex;
  526 + item.remark = orderStagesWithList[ind].remark;
  527 + orderStagesList.push(item);
  528 + } else {
  529 + item.id = orderStagesWithList[ind].id;
  530 + item.contract = orderStagesWithList[ind].contract;
  531 + item.vendor = orderStagesWithList[ind].vendor;
  532 + item.dateRange = orderStagesWithList[ind].dateRange;
  533 + item.terminal = orderStagesWithList[ind].terminal;
  534 + item.dId =
  535 + orderStagesWithList[ind].orderStagesDeviceVoList[index].dId;
  536 + item.deviceName =
  537 + orderStagesWithList[ind].orderStagesDeviceVoList[
  538 + index
  539 + ].deviceName;
  540 + item.deviceModel =
  541 + orderStagesWithList[ind].orderStagesDeviceVoList[
  542 + index
  543 + ].deviceModel;
  544 + item.count =
  545 + orderStagesWithList[ind].orderStagesDeviceVoList[
  546 + index
  547 + ].count;
  548 + item.unitPrice =
  549 + orderStagesWithList[ind].orderStagesDeviceVoList[
  550 + index
  551 + ].unitPrice;
  552 + item.price =
  553 + orderStagesWithList[ind].orderStagesDeviceVoList[
  554 + index
  555 + ].price;
  556 + item.totalPrice = orderStagesWithList[ind].totalPrice;
  557 + item.payWay = orderStagesWithList[ind].payWay;
  558 + item.annex = orderStagesWithList[ind].annex;
  559 + item.remark = orderStagesWithList[ind].remark;
  560 + orderStagesList.push(item);
  561 + }
  562 + }
  563 + }
  564 + return {
  565 + data: orderStagesList || [],
  566 + };
  567 + }
  568 + }
  569 + }}
  570 + editable={{
  571 + type: 'multiple',
  572 + }}
  573 + columnsState={{
  574 + persistenceKey: 'pro-table-singe-demos',
  575 + persistenceType: 'localStorage',
  576 + defaultValue: {
  577 + option: { fixed: 'right', disable: true },
  578 + },
  579 + // onChange(value) {
  580 + // console.log('value: ', value);
  581 + // },
  582 + }}
  583 + rowKey="dId"
  584 + search={{
  585 + labelWidth: 'auto',
  586 + }}
  587 + options={{
  588 + setting: {
  589 + listsHeight: 800,
  590 + },
  591 + }}
  592 + form={{
  593 + syncToUrl: (values, type) => {
  594 + if (type === 'get') {
  595 + return {
  596 + ...values,
  597 + created_at: [values.startTime, values.endTime],
  598 + };
  599 + }
  600 + return values;
  601 + },
  602 + }}
  603 + pagination={{
  604 + pageSize: 10,
  605 + // onChange: (page) => console.log(page),
  606 + }}
  607 + dateFormatter="string"
  608 + headerTitle={[]}
  609 + toolBarRender={() => [
  610 + <>
  611 + <AddModel toReload={reload}></AddModel>
  612 + <UploadModel toReload={reload}></UploadModel>
  613 + <Button
  614 + type="primary"
  615 + onClick={() => {
  616 + toExport();
  617 + }}
  618 + >
  619 + <VerticalAlignTopOutlined />
  620 + 导出
  621 + </Button>
  622 + </>,
  623 + ]}
  624 + />
  625 + );
  626 +};
src/pages/Instalment/components/upload/uploadApp.tsx 0 → 100644
  1 +import { InboxOutlined } from '@ant-design/icons';
  2 +import { Upload } from 'antd';
  3 +import React from 'react';
  4 +
  5 +const App: React.FC = ({ uploadFile }) => {
  6 + const { Dragger } = Upload;
  7 +
  8 + const props = {
  9 + name: 'file',
  10 + multiple: true,
  11 + maxCount: 1,
  12 + onChange: (info) => {
  13 + uploadFile(info.file.originFileObj);
  14 + },
  15 + };
  16 +
  17 + return (
  18 + <Dragger {...props}>
  19 + <p className="ant-upload-drag-icon">
  20 + <InboxOutlined />
  21 + </p>
  22 + <p className="ant-upload-text">
  23 + Click or drag file to this area to upload
  24 + </p>
  25 + <p className="ant-upload-hint">
  26 + Support for a single or bulk upload. Strictly prohibited from uploading
  27 + company data or other banned files.
  28 + </p>
  29 + </Dragger>
  30 + );
  31 +};
  32 +
  33 +export default App;
src/pages/Instalment/components/upload/uploadModel.tsx 0 → 100644
  1 +import { postOrderErpOrderStagesImport } from '@/services/request';
  2 +import { VerticalAlignBottomOutlined } from '@ant-design/icons';
  3 +import { ModalForm } from '@ant-design/pro-components';
  4 +import { Button, Form, message } from 'antd';
  5 +import { RcFile } from 'antd/es/upload';
  6 +import { useState } from 'react';
  7 +import App from './uploadApp';
  8 +
  9 +// const waitTime = (time: number = 100) => {
  10 +// return new Promise((resolve) => {
  11 +// setTimeout(() => {
  12 +// resolve(true);
  13 +// }, time);
  14 +// });
  15 +// };
  16 +
  17 +export default ({ toReload }) => {
  18 + const [form] = Form.useForm<{ name: string; company: string }>();
  19 + const [uploadFile, setUploadFile] = useState({});
  20 + // function setUploadFileWay(value) {
  21 + // setUploadFile(value)
  22 + // }
  23 + return (
  24 + <ModalForm<{
  25 + name: string;
  26 + company: string;
  27 + }>
  28 + title="新建表单"
  29 + trigger={
  30 + <Button type="primary">
  31 + <VerticalAlignBottomOutlined />
  32 + 导入
  33 + </Button>
  34 + }
  35 + form={form}
  36 + autoFocusFirstInput
  37 + modalProps={{
  38 + destroyOnClose: true,
  39 + }}
  40 + submitTimeout={2000}
  41 + onFinish={async () => {
  42 + const formData = new FormData();
  43 + formData.append('file', uploadFile as RcFile);
  44 + const res = await postOrderErpOrderStagesImport({
  45 + data: formData,
  46 + headers: {
  47 + 'Content-Type':
  48 + 'multipart/form-data; boundary=----WebKitFormBoundarynl6gT1BKdPWIejNq',
  49 + },
  50 + });
  51 + if (res) {
  52 + message.success('提交成功');
  53 + toReload();
  54 + return true;
  55 + }
  56 + }}
  57 + >
  58 + <App uploadFile={setUploadFile}></App>
  59 + </ModalForm>
  60 + );
  61 +};
src/pages/Instalment/index.tsx 0 → 100644
  1 +import Title from './components/title/title';
  2 +
  3 +const instalment_contect: React.FC = () => (
  4 + <>
  5 + <Title />
  6 + </>
  7 +);
  8 +
  9 +export default instalment_contect;
src/pages/Order/components/CheckModal.tsx
@@ -401,6 +401,9 @@ export default ({ @@ -401,6 +401,9 @@ export default ({
401 if (checkType(CHECK_TYPE.CONFIRM_REISSUE)) { 401 if (checkType(CHECK_TYPE.CONFIRM_REISSUE)) {
402 type = 'confirm_reissue'; 402 type = 'confirm_reissue';
403 } 403 }
  404 + if (checkType(CHECK_TYPE.CREDIT_AUDIT)) {
  405 + type = 'credit_audit';
  406 + }
404 return type; 407 return type;
405 } 408 }
406 409
@@ -648,11 +651,15 @@ export default ({ @@ -648,11 +651,15 @@ export default ({
648 ) : ( 651 ) : (
649 <div>请特别注意订单总金额与订单金额。</div> 652 <div>请特别注意订单总金额与订单金额。</div>
650 )} 653 )}
651 - <ProFormTextArea  
652 - width="lg"  
653 - name="name"  
654 - placeholder="若驳回,请填写驳回理由"  
655 - /> 654 + {!checkType(CHECK_TYPE.CONFIRM_DELIVER) ? (
  655 + <ProFormTextArea
  656 + width="lg"
  657 + name="name"
  658 + placeholder="若驳回,请填写驳回理由"
  659 + />
  660 + ) : (
  661 + <></>
  662 + )}
656 {checkType(CHECK_TYPE.FINALCIAL) ? ( 663 {checkType(CHECK_TYPE.FINALCIAL) ? (
657 <> 664 <>
658 <div className="pb-4 text-xs decoration-gray-50"> 665 <div className="pb-4 text-xs decoration-gray-50">
src/pages/Order/components/ImportExpressBillModal.tsx 0 → 100644
  1 +import { RESPONSE_CODE } from '@/constants/enum';
  2 +import { postOrderImportImportWeightAndVolume } from '@/services';
  3 +import { ModalForm, ProFormUploadDragger } from '@ant-design/pro-components';
  4 +import { Button, Form, message } from 'antd';
  5 +
  6 +export default () => {
  7 + const [form] = Form.useForm();
  8 + const [messageApi, contextHolder] = message.useMessage();
  9 + return (
  10 + <>
  11 + <ModalForm
  12 + title="导入重量、体积"
  13 + trigger={<Button type="primary">导入重量、体积</Button>}
  14 + form={form}
  15 + autoFocusFirstInput
  16 + modalProps={{
  17 + destroyOnClose: true,
  18 + }}
  19 + submitTimeout={2000}
  20 + onFinish={async (values) => {
  21 + console.log(values);
  22 + const formData = new FormData();
  23 + formData.append('file', values.express[0].originFileObj);
  24 + messageApi.open({
  25 + type: 'loading',
  26 + content: '正在导入...',
  27 + duration: 0,
  28 + });
  29 + const res = await postOrderImportImportWeightAndVolume({
  30 + data: formData,
  31 + headers: {
  32 + 'Content-Type':
  33 + 'multipart/form-data; boundary=----WebKitFormBoundarynl6gT1BKdPWIejNq',
  34 + },
  35 + });
  36 + if (res.result === RESPONSE_CODE.SUCCESS) {
  37 + return true;
  38 + } else {
  39 + message.error('导入失败');
  40 + }
  41 + messageApi.destroy();
  42 + }}
  43 + >
  44 + <ProFormUploadDragger max={1} label="上传快递单" name="express" />
  45 + </ModalForm>
  46 + {contextHolder}
  47 + </>
  48 + );
  49 +};
src/pages/Order/components/ImportModal.tsx
@@ -26,7 +26,13 @@ export default ({ onClose }) =&gt; { @@ -26,7 +26,13 @@ export default ({ onClose }) =&gt; {
26 }; 26 };
27 const downloadTemplate = async () => { 27 const downloadTemplate = async () => {
28 exportLoading('正在下载模板...'); 28 exportLoading('正在下载模板...');
29 - orderExport('/api/service/order/exportTemplate', {}, exportLoadingDestory); 29 + orderExport(
  30 + '/api/service/order/exportTemplate',
  31 + '订单.xlsx',
  32 + 'post',
  33 + {},
  34 + exportLoadingDestory,
  35 + );
30 }; 36 };
31 37
32 const handleUpload = async () => { 38 const handleUpload = async () => {
@@ -59,6 +65,8 @@ export default ({ onClose }) =&gt; { @@ -59,6 +65,8 @@ export default ({ onClose }) =&gt; {
59 exportLoading('正在下载错误信息...'); 65 exportLoading('正在下载错误信息...');
60 orderExport( 66 orderExport(
61 '/api/service/order/errorExcelInformation', 67 '/api/service/order/errorExcelInformation',
  68 + '订单.xlsx',
  69 + 'post',
62 formData, 70 formData,
63 exportLoadingDestory, 71 exportLoadingDestory,
64 ); 72 );
src/pages/Order/components/ModifiedDiffModal.tsx
1 import { postServiceOrderModifiedDiff } from '@/services'; 1 import { postServiceOrderModifiedDiff } from '@/services';
2 -import {  
3 - enumValueToLabel,  
4 - getAliYunOSSFileNameFromUrl,  
5 - getUserInfo,  
6 -} from '@/utils'; 2 +import { enumValueToLabel, getAliYunOSSFileNameFromUrl } from '@/utils';
7 import { getReceivingCompanyOptions, isSupplier } from '@/utils/order'; 3 import { getReceivingCompanyOptions, isSupplier } from '@/utils/order';
8 import { Button, Divider, Modal, Space, Table, TableProps } from 'antd'; 4 import { Button, Divider, Modal, Space, Table, TableProps } from 'antd';
9 -import Base64 from 'base-64';  
10 import { useEffect, useState } from 'react'; 5 import { useEffect, useState } from 'react';
11 import { 6 import {
12 PAYEE_OPTIONS, 7 PAYEE_OPTIONS,
  8 + PAYMENT_CHANNEL_OPTIONS,
  9 + PAYMENT_METHOD_OPTIONS,
13 PRODUCT_BELONG_DEPARTMENT_OPTIONS, 10 PRODUCT_BELONG_DEPARTMENT_OPTIONS,
14 SHIPPING_WAREHOUSE_OPTIONS, 11 SHIPPING_WAREHOUSE_OPTIONS,
15 } from '../constant'; 12 } from '../constant';
16 import '../table.less'; 13 import '../table.less';
17 14
18 export default ({ setVisible, subOrders, mainOrder, onClose }) => { 15 export default ({ setVisible, subOrders, mainOrder, onClose }) => {
19 - const userInfo = getUserInfo();  
20 let subIds = subOrders?.map((item: any) => { 16 let subIds = subOrders?.map((item: any) => {
21 return item.id; 17 return item.id;
22 }); 18 });
@@ -77,6 +73,12 @@ export default ({ setVisible, subOrders, mainOrder, onClose }) =&gt; { @@ -77,6 +73,12 @@ export default ({ setVisible, subOrders, mainOrder, onClose }) =&gt; {
77 if (key === '发货仓库') { 73 if (key === '发货仓库') {
78 newText = enumValueToLabel(text, SHIPPING_WAREHOUSE_OPTIONS); 74 newText = enumValueToLabel(text, SHIPPING_WAREHOUSE_OPTIONS);
79 } 75 }
  76 + if (key === '支付渠道') {
  77 + newText = enumValueToLabel(text, PAYMENT_CHANNEL_OPTIONS);
  78 + }
  79 + if (key === '支付方式') {
  80 + newText = enumValueToLabel(text, PAYMENT_METHOD_OPTIONS);
  81 + }
80 if (key === '单价' || key === '合计') { 82 if (key === '单价' || key === '合计') {
81 newText = '¥' + newText; 83 newText = '¥' + newText;
82 } 84 }
@@ -186,6 +188,8 @@ export default ({ setVisible, subOrders, mainOrder, onClose }) =&gt; { @@ -186,6 +188,8 @@ export default ({ setVisible, subOrders, mainOrder, onClose }) =&gt; {
186 ['productBelongBusiness', '所属事业部'], 188 ['productBelongBusiness', '所属事业部'],
187 ['shippingWarehouse', '发货仓库'], 189 ['shippingWarehouse', '发货仓库'],
188 ['notes', '备注'], 190 ['notes', '备注'],
  191 + ['paymentChannel', '支付渠道'],
  192 + ['paymentMethod', '支付方式'],
189 ['listAnnex', '附件'], 193 ['listAnnex', '附件'],
190 ]; 194 ];
191 for (let field of visibleFields) { 195 for (let field of visibleFields) {
@@ -234,7 +238,6 @@ export default ({ setVisible, subOrders, mainOrder, onClose }) =&gt; { @@ -234,7 +238,6 @@ export default ({ setVisible, subOrders, mainOrder, onClose }) =&gt; {
234 ['institutionContactName', '单位联系人'], 238 ['institutionContactName', '单位联系人'],
235 ['institution', '单位'], 239 ['institution', '单位'],
236 ['totalPayment', '支付总金额'], 240 ['totalPayment', '支付总金额'],
237 - ['paymentChannel', '支付渠道'],  
238 ['notes', '备注'], 241 ['notes', '备注'],
239 ['bank', '开户银行'], 242 ['bank', '开户银行'],
240 ['bankAccountNumber', '银行账号'], 243 ['bankAccountNumber', '银行账号'],
src/pages/Order/components/OrderDrawer.tsx
1 import { RESPONSE_CODE } from '@/constants/enum'; 1 import { RESPONSE_CODE } from '@/constants/enum';
2 import { 2 import {
3 postCanrdApiUserAddressList, 3 postCanrdApiUserAddressList,
4 - postCanrdApiUserList, 4 + postCanrdApiUserDetail,
  5 + postCanrdApiUserNowMoneyCheck,
5 postKingdeeRepCustomerDetail, 6 postKingdeeRepCustomerDetail,
6 postKingdeeRepMaterial, 7 postKingdeeRepMaterial,
7 postKingdeeRepMaterialUnit, 8 postKingdeeRepMaterialUnit,
8 postKingdeeRepMeasureUnit, 9 postKingdeeRepMeasureUnit,
  10 + postPrepaidPhoneAvailableList,
9 postServiceOrderAddOrder, 11 postServiceOrderAddOrder,
10 postServiceOrderAfterSalesQuerySnapshotOrder, 12 postServiceOrderAfterSalesQuerySnapshotOrder,
11 postServiceOrderApplyAfterSales, 13 postServiceOrderApplyAfterSales,
12 postServiceOrderApplyModify, 14 postServiceOrderApplyModify,
13 - postServiceOrderQuerySalesCode,  
14 postServiceOrderUpdateOrder, 15 postServiceOrderUpdateOrder,
15 } from '@/services'; 16 } from '@/services';
16 import { 17 import {
@@ -22,6 +23,7 @@ import { @@ -22,6 +23,7 @@ import {
22 } from '@/utils'; 23 } from '@/utils';
23 import { getDefaultString } from '@/utils/StringUtil'; 24 import { getDefaultString } from '@/utils/StringUtil';
24 import { getTeacherCustomFieldNumber } from '@/utils/kingdee'; 25 import { getTeacherCustomFieldNumber } from '@/utils/kingdee';
  26 +import { getSalesCodeOptions } from '@/utils/order';
25 import { 27 import {
26 DrawerForm, 28 DrawerForm,
27 FormListActionType, 29 FormListActionType,
@@ -106,6 +108,7 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -106,6 +108,7 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
106 }, 108 },
107 ]; 109 ];
108 }>(); 110 }>();
  111 + const [accountOptions, setAccountOptions] = useState<any>([]);
109 112
110 let copyData = cloneDeep(data); 113 let copyData = cloneDeep(data);
111 114
@@ -122,15 +125,8 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -122,15 +125,8 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
122 /** 125 /**
123 * 获取销售代码枚举,在复制和编辑的时候判断是否为旧的代码 126 * 获取销售代码枚举,在复制和编辑的时候判断是否为旧的代码
124 */ 127 */
125 - const getSalesCodeOptions = async () => {  
126 - const res = await postServiceOrderQuerySalesCode();  
127 - let options = res.data?.map((item) => {  
128 - return {  
129 - label: item.userName,  
130 - value: item.userName,  
131 - number: item.number,  
132 - };  
133 - }); 128 + const loadSalesCodeOptions = async () => {
  129 + let options = await getSalesCodeOptions();
134 setSalesCodeOptions(options); 130 setSalesCodeOptions(options);
135 131
136 if (optType('copy') || optType('edit')) { 132 if (optType('copy') || optType('edit')) {
@@ -236,6 +232,38 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -236,6 +232,38 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
236 // } 232 // }
237 233
238 /** 234 /**
  235 + * 加载预存账号的options
  236 + */
  237 + async function loadAccountOptions(phone: any) {
  238 + let newAccountOptions = [];
  239 + //预存账号id
  240 + let uid = copyData.prepaidUid;
  241 + let res = await postCanrdApiUserDetail({ data: { uid: uid } });
  242 + if (res && res.result === RESPONSE_CODE.SUCCESS && res.data !== null) {
  243 + let uidDetail = res.data;
  244 + uidDetail.value = uid;
  245 + uidDetail.label = uidDetail.realName;
  246 + newAccountOptions.push(uidDetail);
  247 + }
  248 +
  249 + //查询当前手机号允许使用的预存账号
  250 + if (phone) {
  251 + let res = await postPrepaidPhoneAvailableList({ data: { phone: phone } });
  252 + if (res && res.result === RESPONSE_CODE.SUCCESS) {
  253 + let uidDetails = res.data;
  254 + for (let detail of uidDetails) {
  255 + detail.value = detail.uid;
  256 + detail.label = detail.realName;
  257 + newAccountOptions.push(detail);
  258 + }
  259 + }
  260 + }
  261 +
  262 + console.log(newAccountOptions);
  263 + setAccountOptions(newAccountOptions);
  264 + }
  265 +
  266 + /**
239 * 构建回显数据 267 * 构建回显数据
240 */ 268 */
241 function buildOrderData() { 269 function buildOrderData() {
@@ -303,6 +331,8 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -303,6 +331,8 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
303 if (!optType('after-sales-check')) { 331 if (!optType('after-sales-check')) {
304 // showKindeeInfo(); 332 // showKindeeInfo();
305 } 333 }
  334 +
  335 + loadAccountOptions(form.getFieldValue('customerContactNumber'));
306 } 336 }
307 } 337 }
308 338
@@ -524,6 +554,8 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -524,6 +554,8 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
524 getDefaultString(option.detail), 554 getDefaultString(option.detail),
525 ); 555 );
526 form.setFieldValue('customerNameString', option.realName); 556 form.setFieldValue('customerNameString', option.realName);
  557 +
  558 + loadAccountOptions(option.phone);
527 } 559 }
528 560
529 //erp收货地址:需要与客户联系人中的地址一样:姓名,手机号,地址 561 //erp收货地址:需要与客户联系人中的地址一样:姓名,手机号,地址
@@ -586,6 +618,56 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -586,6 +618,56 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
586 } 618 }
587 619
588 /** 620 /**
  621 + * 检查用户额度
  622 + * @param option
  623 + */
  624 + const checkAccountMoney = async (uid: any, subPrice: any) => {
  625 + let res = await postCanrdApiUserNowMoneyCheck({
  626 + data: { uid: uid, subPrice: subPrice },
  627 + });
  628 + if (res && res.result === RESPONSE_CODE.SUCCESS && res.data) {
  629 + let data = res.data;
  630 + let isCredit = data.isCredit;
  631 + if (isCredit) {
  632 + return true;
  633 + }
  634 +
  635 + message.error(
  636 + '用户余额不足,当前预减的金额为:' +
  637 + data.subPrice +
  638 + ',当前账号余额为:' +
  639 + data.nowMoney +
  640 + ',当前账号可赊账额度为:' +
  641 + data.creditLimit,
  642 + );
  643 + return false;
  644 + }
  645 +
  646 + return false;
  647 + };
  648 +
  649 + /**
  650 + * 总金额改变触发事件
  651 + * 如果是预存单,需要检查余额
  652 + * @param value
  653 + */
  654 + const totalPaymentChange = (value: any) => {
  655 + let paymentMethod = form.getFieldValue('paymentMethod');
  656 + let prepaidUid = form.getFieldValue('prepaidUid');
  657 + if (
  658 + value &&
  659 + paymentMethod &&
  660 + paymentMethod === 'WITHHOLDING_ADVANCE_DEPOSIT' &&
  661 + prepaidUid
  662 + ) {
  663 + let valid = checkAccountMoney(prepaidUid, value);
  664 + if (!valid) {
  665 + form.setFieldValue('prepaidUid', undefined);
  666 + }
  667 + }
  668 + };
  669 +
  670 + /**
589 * 检查客户是否可以编辑 671 * 检查客户是否可以编辑
590 * @returns 672 * @returns
591 */ 673 */
@@ -658,6 +740,18 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -658,6 +740,18 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
658 } 740 }
659 } 741 }
660 742
  743 + const validateContactNumber = (_: any, value: any) => {
  744 + const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
  745 + const phoneRegex = /^\d{1,11}(-\d{1,11})?$/;
  746 +
  747 + if (emailRegex.test(value) || phoneRegex.test(value)) {
  748 + return Promise.resolve();
  749 + }
  750 + return Promise.reject(
  751 + new Error('联系方式必须是邮箱或手机号格式(不能包含空格等特殊符号)'),
  752 + );
  753 + };
  754 +
661 /** 755 /**
662 * 刪除草稿数据 756 * 刪除草稿数据
663 */ 757 */
@@ -667,7 +761,7 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -667,7 +761,7 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
667 761
668 useEffect(() => { 762 useEffect(() => {
669 checkHasLocalData(); 763 checkHasLocalData();
670 - getSalesCodeOptions(); 764 + loadSalesCodeOptions();
671 if (optType('after-sales-check')) { 765 if (optType('after-sales-check')) {
672 getOldOrderData(data.id); 766 getOldOrderData(data.id);
673 } else { 767 } else {
@@ -949,7 +1043,6 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -949,7 +1043,6 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
949 } 1043 }
950 1044
951 let title = ''; 1045 let title = '';
952 - let spanText = '';  
953 let realName = item.realName; 1046 let realName = item.realName;
954 let phone = item.phone; 1047 let phone = item.phone;
955 let province = item.province; 1048 let province = item.province;
@@ -959,31 +1052,41 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -959,31 +1052,41 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
959 let institution = item.institution; 1052 let institution = item.institution;
960 let institutionContactName = item.institutionContactName; 1053 let institutionContactName = item.institutionContactName;
961 1054
962 - title =  
963 - getDefaultString(realName) +  
964 - '|' +  
965 - getDefaultString(phone) +  
966 - '|' +  
967 - getDefaultString(institution) +  
968 - '|' +  
969 - getDefaultString(institutionContactName) +  
970 - '|' + 1055 + let address =
971 getDefaultString(province) + 1056 getDefaultString(province) +
972 getDefaultString(city) + 1057 getDefaultString(city) +
973 getDefaultString(district) + 1058 getDefaultString(district) +
974 getDefaultString(detail); 1059 getDefaultString(detail);
975 1060
976 - spanText = 1061 + title =
977 getDefaultString(realName) + 1062 getDefaultString(realName) +
978 '|' + 1063 '|' +
979 getDefaultString(phone) + 1064 getDefaultString(phone) +
980 '|' + 1065 '|' +
981 getDefaultString(institution) + 1066 getDefaultString(institution) +
982 '|' + 1067 '|' +
983 - getDefaultString(institutionContactName); 1068 + getDefaultString(institutionContactName) +
  1069 + '|' +
  1070 + address;
  1071 +
984 return ( 1072 return (
985 - <div title={title}>  
986 - <span style={{ color: '#333333' }}>{spanText}</span> 1073 + <div title={title} className="whitespace-normal">
  1074 + <span style={{ color: '#333333' }}>
  1075 + {getDefaultString(realName)}
  1076 + </span>
  1077 + |
  1078 + <span className="text-sky-600">
  1079 + {getDefaultString(phone)}
  1080 + </span>
  1081 + |
  1082 + <span style={{ color: '#333333' }}>
  1083 + {getDefaultString(institution)}
  1084 + </span>
  1085 + |
  1086 + <span style={{ color: '#333333' }}>
  1087 + {getDefaultString(institutionContactName)}
  1088 + </span>
  1089 + |<span className="text-orange-400">{address}</span>
987 </div> 1090 </div>
988 ); 1091 );
989 }, 1092 },
@@ -991,6 +1094,9 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -991,6 +1094,9 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
991 debounceTime={1000} 1094 debounceTime={1000}
992 request={async (value, {}) => { 1095 request={async (value, {}) => {
993 const keywords = value.keyWords; 1096 const keywords = value.keyWords;
  1097 + if (keywords === '') {
  1098 + return [];
  1099 + }
994 const res = await postCanrdApiUserAddressList({ 1100 const res = await postCanrdApiUserAddressList({
995 data: { keywords: keywords }, 1101 data: { keywords: keywords },
996 }); 1102 });
@@ -1044,7 +1150,15 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -1044,7 +1150,15 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
1044 name="customerContactNumber" 1150 name="customerContactNumber"
1045 label="联系方式" 1151 label="联系方式"
1046 placeholder="请输入联系方式" 1152 placeholder="请输入联系方式"
1047 - rules={[{ required: true, message: '联系方式必填' }]} 1153 + fieldProps={{
  1154 + onBlur: (v) => {
  1155 + loadAccountOptions(v.target.value);
  1156 + },
  1157 + }}
  1158 + rules={[
  1159 + { required: true, message: '联系方式必填' },
  1160 + { validator: validateContactNumber },
  1161 + ]}
1048 /> 1162 />
1049 <ProFormText 1163 <ProFormText
1050 width="lg" 1164 width="lg"
@@ -1080,7 +1194,12 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -1080,7 +1194,12 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
1080 { required: true, message: '支付总额必填' }, 1194 { required: true, message: '支付总额必填' },
1081 { 1195 {
1082 validator: (_, value) => { 1196 validator: (_, value) => {
1083 - if (value <= 0) { 1197 + let paymentMethod = form.getFieldValue('paymentMethod');
  1198 + if (
  1199 + value <= 0 &&
  1200 + paymentMethod &&
  1201 + paymentMethod === 'WITHHOLDING_ADVANCE_DEPOSIT'
  1202 + ) {
1084 return Promise.reject( 1203 return Promise.reject(
1085 new Error( 1204 new Error(
1086 '支付总额必须大于0 (扣预存的订单现在也必须填写实际金额)', 1205 '支付总额必须大于0 (扣预存的订单现在也必须填写实际金额)',
@@ -1103,6 +1222,9 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -1103,6 +1222,9 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
1103 计算 1222 计算
1104 </Button> 1223 </Button>
1105 ), 1224 ),
  1225 + onChange: (value: any) => {
  1226 + totalPaymentChange(value);
  1227 + },
1106 }} 1228 }}
1107 disabled={optType('after-sales-check')} 1229 disabled={optType('after-sales-check')}
1108 /> 1230 />
@@ -1138,8 +1260,15 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -1138,8 +1260,15 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
1138 hidden={paymentMethod !== 'WITHHOLDING_ADVANCE_DEPOSIT'} 1260 hidden={paymentMethod !== 'WITHHOLDING_ADVANCE_DEPOSIT'}
1139 showSearch 1261 showSearch
1140 label="预存账号" 1262 label="预存账号"
1141 - onChange={(option: any) => {  
1142 - form.setFieldValue('prepaidAmount', option.nowMoney); 1263 + onChange={(value: any) => {
  1264 + //检查用户额度
  1265 + let valid = checkAccountMoney(
  1266 + value,
  1267 + form.getFieldValue('totalPayment'),
  1268 + );
  1269 + if (!valid) {
  1270 + form.setFieldValue('prepaidUid', undefined);
  1271 + }
1143 }} 1272 }}
1144 placeholder="请选择预存账号" 1273 placeholder="请选择预存账号"
1145 rules={[ 1274 rules={[
@@ -1170,21 +1299,22 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -1170,21 +1299,22 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
1170 }, 1299 },
1171 }} 1300 }}
1172 debounceTime={1000} 1301 debounceTime={1000}
1173 - request={async (value, {}) => {  
1174 - const keywords = value.keyWords;  
1175 - const res = await postCanrdApiUserList({  
1176 - data: { keywords: keywords, pageSize: 1000000 },  
1177 - });  
1178 - let options = res?.data?.data?.map((c: any) => {  
1179 - return {  
1180 - ...c,  
1181 - label: c.realName,  
1182 - value: c.uid,  
1183 - key: c.uid,  
1184 - };  
1185 - });  
1186 - return options;  
1187 - }} 1302 + // request={async (value, {}) => {
  1303 + // const keywords = value.keyWords;
  1304 + // const res = await postCanrdApiUserList({
  1305 + // data: { keywords: keywords, pageSize: 50 },
  1306 + // });
  1307 + // let options = res?.data?.data?.map((c: any) => {
  1308 + // return {
  1309 + // ...c,
  1310 + // label: c.realName,
  1311 + // value: c.uid,
  1312 + // key: c.uid,
  1313 + // };
  1314 + // });
  1315 + // return options;
  1316 + // }}
  1317 + options={accountOptions}
1188 /> 1318 />
1189 <ProFormSelect 1319 <ProFormSelect
1190 placeholder="选择是否需要开票" 1320 placeholder="选择是否需要开票"
@@ -1305,8 +1435,6 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -1305,8 +1435,6 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
1305 (sum, item) => FloatAdd(sum, item.subOrderPayment), 1435 (sum, item) => FloatAdd(sum, item.subOrderPayment),
1306 0, 1436 0,
1307 ); 1437 );
1308 - console.log(reduce);  
1309 - console.log(totalPayment);  
1310 if (reduce === totalPayment || value) { 1438 if (reduce === totalPayment || value) {
1311 return Promise.resolve(); 1439 return Promise.resolve();
1312 } 1440 }
@@ -1516,8 +1644,20 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -1516,8 +1644,20 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
1516 label="商品数量" 1644 label="商品数量"
1517 fieldProps={{ 1645 fieldProps={{
1518 onChange: (value) => { 1646 onChange: (value) => {
1519 - listMeta.record.quantity = value;  
1520 - computeSubOrderPayment(listMeta); 1647 + // 确保变更后的值为整数
  1648 + const intValue = parseInt(value, 10);
  1649 + if (!isNaN(intValue)) {
  1650 + listMeta.record.quantity = intValue;
  1651 + computeSubOrderPayment(listMeta);
  1652 + }
  1653 + },
  1654 + parser: (value) => {
  1655 + // 将输入的值转换为整数,如果不是合法数字则返回空字符串触发校验错误
  1656 + return value ? parseInt(value, 10) : '';
  1657 + },
  1658 + formatter: (value) => {
  1659 + // 在显示时始终将其格式化为不带小数部分的整数字符串
  1660 + return value ? value.toString() : '';
1521 }, 1661 },
1522 }} 1662 }}
1523 placeholder="请输入商品数量" 1663 placeholder="请输入商品数量"
src/pages/Order/constant.ts
1 import { postServiceOrderQueryCustomerInformation } from '@/services'; 1 import { postServiceOrderQueryCustomerInformation } from '@/services';
2 import { enumToProTableEnumValue } from '@/utils'; 2 import { enumToProTableEnumValue } from '@/utils';
3 import { getReceivingCompanyOptions, isSupplier } from '@/utils/order'; 3 import { getReceivingCompanyOptions, isSupplier } from '@/utils/order';
4 -  
5 export const COMFIR_RECEIPT_IMAGES_NUMBER = 3; 4 export const COMFIR_RECEIPT_IMAGES_NUMBER = 3;
6 5
7 export const PAYMENT_CHANNEL_OPTIONS = { 6 export const PAYMENT_CHANNEL_OPTIONS = {
@@ -29,6 +28,7 @@ export const PAYMENT_METHOD_OPTIONS = { @@ -29,6 +28,7 @@ export const PAYMENT_METHOD_OPTIONS = {
29 CASH_ON_DELIVERY: '货到付款', 28 CASH_ON_DELIVERY: '货到付款',
30 HIRE_PURCHASE: '分期付款', 29 HIRE_PURCHASE: '分期付款',
31 PAYMENT_RECEIPT: '已回款', 30 PAYMENT_RECEIPT: '已回款',
  31 + PREPAID_NO_NEED_SEND: '预存款无需发货',
32 }; 32 };
33 33
34 export const PRODUCT_BELONG_DEPARTMENT_OPTIONS = { 34 export const PRODUCT_BELONG_DEPARTMENT_OPTIONS = {
@@ -108,6 +108,7 @@ export const CHECK_TYPE = { @@ -108,6 +108,7 @@ export const CHECK_TYPE = {
108 PAYMENT_RECEIPTS_AUDIT: 'PAYMENT_RECEIPTS_AUDIT', 108 PAYMENT_RECEIPTS_AUDIT: 'PAYMENT_RECEIPTS_AUDIT',
109 CONFIRM_REISSUE: 'CONFIRM_REISSUE', 109 CONFIRM_REISSUE: 'CONFIRM_REISSUE',
110 PREPAID_AUDIT: 'PREPAID_AUDIT', 110 PREPAID_AUDIT: 'PREPAID_AUDIT',
  111 + CREDIT_AUDIT: 'CREDIT_AUDIT',
111 }; 112 };
112 113
113 /** 114 /**
@@ -170,6 +171,7 @@ export const PAYMENT_RECEIPTS_STATUS_OPTIONS = { @@ -170,6 +171,7 @@ export const PAYMENT_RECEIPTS_STATUS_OPTIONS = {
170 171
171 export const ORDER_STATUS_OPTIONS = { 172 export const ORDER_STATUS_OPTIONS = {
172 WAIT_CONFIRM_DELIVER_AFTER_INVOICE: '待开票后确认发货', 173 WAIT_CONFIRM_DELIVER_AFTER_INVOICE: '待开票后确认发货',
  174 + SALES_CONFIRM: '销售待确认',
173 UNAUDITED: '未审核', 175 UNAUDITED: '未审核',
174 LEADER_PROCESS: '领导待审核', 176 LEADER_PROCESS: '领导待审核',
175 MODIFY_APPLY_WAIT_FOR_AUDIT: '修改待审核', 177 MODIFY_APPLY_WAIT_FOR_AUDIT: '修改待审核',
@@ -190,6 +192,7 @@ export const ORDER_STATUS_OPTIONS = { @@ -190,6 +192,7 @@ export const ORDER_STATUS_OPTIONS = {
190 AFTER_SALES_FAILURE: '售后失败', 192 AFTER_SALES_FAILURE: '售后失败',
191 NO_NEED_SEND: '无需发货', 193 NO_NEED_SEND: '无需发货',
192 PROCURE_CONVERT_WAREHOUSE_KEEPER: '采购转仓库', 194 PROCURE_CONVERT_WAREHOUSE_KEEPER: '采购转仓库',
  195 + CREDIT_CONFIRM: '赊账待审核',
193 }; 196 };
194 197
195 export const MODIFIED_AUDIT_STATUS_OPTIONS = { 198 export const MODIFIED_AUDIT_STATUS_OPTIONS = {
@@ -221,17 +224,11 @@ export const FINANCIAL_STATUS_OPTIONS = { @@ -221,17 +224,11 @@ export const FINANCIAL_STATUS_OPTIONS = {
221 UN_INVOICING: '取消开票', 224 UN_INVOICING: '取消开票',
222 }; 225 };
223 226
224 -/*export const getAfterInvoicingStatus = async () => {  
225 - let res = await postServiceConstAfterInvoicingStatus();  
226 - if (res.result === RESPONSE_CODE.SUCCESS) {  
227 - return res.data;  
228 - }  
229 - return {};  
230 -};*/  
231 -export let AFTER_INVOICING_STATUS = { 227 +export const AFTER_INVOICING_STATUS = {
232 NOT_YET_INVOICED: '尚未开票', 228 NOT_YET_INVOICED: '尚未开票',
233 APPLY_FOR_INVOICING: '申请开票', 229 APPLY_FOR_INVOICING: '申请开票',
234 URGENT_INVOICE_AUDITING: '加急待审核', 230 URGENT_INVOICE_AUDITING: '加急待审核',
  231 + URGENT_INVOICE_AUDIT_NOTPASS: '加急审核失败',
235 PARTIAL_INVOICING: '部分开票', 232 PARTIAL_INVOICING: '部分开票',
236 COMPLETE_INVOICING: '完全开票', 233 COMPLETE_INVOICING: '完全开票',
237 INVOICING: '开票中', 234 INVOICING: '开票中',
@@ -281,6 +278,10 @@ export const TAGS_COLOR = new Map&lt;string, string&gt;([ @@ -281,6 +278,10 @@ export const TAGS_COLOR = new Map&lt;string, string&gt;([
281 ['AUDIT_NOTPASS', 'error'], 278 ['AUDIT_NOTPASS', 'error'],
282 ['WAIT_CONFIRM_DELIVER_AFTER_INVOICE', 'processing'], 279 ['WAIT_CONFIRM_DELIVER_AFTER_INVOICE', 'processing'],
283 ['INVOICING', 'processing'], 280 ['INVOICING', 'processing'],
  281 + ['SALES_CONFIRM', 'warning'],
  282 + ['URGENT_INVOICE_AUDIT_NOTPASS', 'red'],
  283 + ['REISSUE', 'processing'],
  284 + ['CREDIT_CONFIRM', 'warning'],
284 ]); 285 ]);
285 export const SALES_CODE_OPTIONS = [ 286 export const SALES_CODE_OPTIONS = [
286 { label: 'D-Linda', value: 'D-Linda' }, 287 { label: 'D-Linda', value: 'D-Linda' },
@@ -408,6 +409,8 @@ export const HISTORY_OPT_TYPE = new Map&lt;string, string&gt;([ @@ -408,6 +409,8 @@ export const HISTORY_OPT_TYPE = new Map&lt;string, string&gt;([
408 ['applyModify', '申请修改订单信息'], 409 ['applyModify', '申请修改订单信息'],
409 ['OUTSIDE_SYSTEM_PUSH', '外部系统推送了本订单'], 410 ['OUTSIDE_SYSTEM_PUSH', '外部系统推送了本订单'],
410 ['cancelSendOrder', '取消发货'], 411 ['cancelSendOrder', '取消发货'],
  412 + ['salesConfirm', '商城订单销售确认'],
  413 + ['credit_audit', '赊账审核'],
411 ]); 414 ]);
412 415
413 export const MAIN_ORDER_COLUMNS = [ 416 export const MAIN_ORDER_COLUMNS = [
@@ -621,10 +624,6 @@ export const MAIN_ORDER_COLUMNS = [ @@ -621,10 +624,6 @@ export const MAIN_ORDER_COLUMNS = [
621 dataIndex: 'afterInvoicingStatus', 624 dataIndex: 'afterInvoicingStatus',
622 valueType: 'select', 625 valueType: 'select',
623 hideInTable: true, 626 hideInTable: true,
624 - /*request: async () => {  
625 - let status = await getAfterInvoicingStatus();  
626 - return enumToSelect(status);  
627 - },*/  
628 valueEnum: enumToProTableEnumValue(AFTER_INVOICING_STATUS), 627 valueEnum: enumToProTableEnumValue(AFTER_INVOICING_STATUS),
629 }, 628 },
630 { 629 {
src/pages/Order/index.tsx
1 import ButtonConfirm from '@/components/ButtomConfirm'; 1 import ButtonConfirm from '@/components/ButtomConfirm';
2 import { RESPONSE_CODE } from '@/constants/enum'; 2 import { RESPONSE_CODE } from '@/constants/enum';
  3 +import ImportExpressBillModal from '@/pages/Order/components/ImportExpressBillModal';
3 import InvoicingDrawerForm from '@/pages/Order/components/InvoicingDrawerForm'; 4 import InvoicingDrawerForm from '@/pages/Order/components/InvoicingDrawerForm';
4 import ReissueModal from '@/pages/Order/components/ReissueModal'; 5 import ReissueModal from '@/pages/Order/components/ReissueModal';
5 import { 6 import {
@@ -15,6 +16,7 @@ import { @@ -15,6 +16,7 @@ import {
15 postServiceOrderProvideProcurementRoles, 16 postServiceOrderProvideProcurementRoles,
16 postServiceOrderQueryServiceOrder, 17 postServiceOrderQueryServiceOrder,
17 postServiceOrderSaleCancelInvoicing, 18 postServiceOrderSaleCancelInvoicing,
  19 + postServiceOrderSalesConfirm,
18 } from '@/services'; 20 } from '@/services';
19 import { orderExport } from '@/services/order'; 21 import { orderExport } from '@/services/order';
20 import { 22 import {
@@ -798,7 +800,7 @@ const OrderPage = () =&gt; { @@ -798,7 +800,7 @@ const OrderPage = () =&gt; {
798 key={index} 800 key={index}
799 onConfirm={() => { 801 onConfirm={() => {
800 window.open( 802 window.open(
801 - '/previewApi/onlinePreview?url=' + 803 + '/onlinePreview?url=' +
802 encodeURIComponent(Base64.encode(item.url)), 804 encodeURIComponent(Base64.encode(item.url)),
803 ); 805 );
804 }} 806 }}
@@ -1261,6 +1263,25 @@ const OrderPage = () =&gt; { @@ -1261,6 +1263,25 @@ const OrderPage = () =&gt; {
1261 </div> 1263 </div>
1262 </Flex> 1264 </Flex>
1263 <Flex className="w-[18%]" wrap="wrap" gap="small"> 1265 <Flex className="w-[18%]" wrap="wrap" gap="small">
  1266 + {optRecord.subPath?.includes('salesConfirm') && (
  1267 + <ButtonConfirm
  1268 + className="p-0"
  1269 + title="是否确认此商城订单信息无误?确认无误之后订单将进入审核流程。"
  1270 + text="订单确认"
  1271 + onConfirm={async () => {
  1272 + let res = await postServiceOrderSalesConfirm({
  1273 + data: {
  1274 + subOrderIds: [optRecord.id],
  1275 + },
  1276 + });
  1277 +
  1278 + if (res && res.result === RESPONSE_CODE.SUCCESS) {
  1279 + message.success(res.message);
  1280 + refreshTable();
  1281 + }
  1282 + }}
  1283 + />
  1284 + )}
1264 {optRecord.subPath?.includes('uploadPaymentReceiptBill') ? ( 1285 {optRecord.subPath?.includes('uploadPaymentReceiptBill') ? (
1265 <Button 1286 <Button
1266 className="p-0" 1287 className="p-0"
@@ -1327,6 +1348,23 @@ const OrderPage = () =&gt; { @@ -1327,6 +1348,23 @@ const OrderPage = () =&gt; {
1327 '' 1348 ''
1328 )} 1349 )}
1329 1350
  1351 + {optRecord.subPath?.includes('creditAudit') ? (
  1352 + <Button
  1353 + className="p-0"
  1354 + type="link"
  1355 + onClick={() => {
  1356 + setCurrentMainId(record.id);
  1357 + setCurretnOptSubId(optRecord.id);
  1358 + setCheckVisible(true);
  1359 + setOrderCheckType(CHECK_TYPE.CREDIT_AUDIT);
  1360 + }}
  1361 + >
  1362 + 赊账审核
  1363 + </Button>
  1364 + ) : (
  1365 + ''
  1366 + )}
  1367 +
1330 {optRecord.subPath?.includes('auditPaymentReceipt') ? ( 1368 {optRecord.subPath?.includes('auditPaymentReceipt') ? (
1331 <Button 1369 <Button
1332 className="p-0" 1370 className="p-0"
@@ -1975,7 +2013,7 @@ const OrderPage = () =&gt; { @@ -1975,7 +2013,7 @@ const OrderPage = () =&gt; {
1975 2013
1976 <Flex title={optRecord.notes}> 2014 <Flex title={optRecord.notes}>
1977 <div 2015 <div
1978 - className="overflow-hidden whitespace-normal overflow-ellipsis hover:cursor-pointer" 2016 + className="max-w-[1100px] overflow-hidden whitespace-normal overflow-ellipsis hover:cursor-pointer"
1979 onClick={() => { 2017 onClick={() => {
1980 copyToClipboard(optRecord.notes); 2018 copyToClipboard(optRecord.notes);
1981 message.info('备注复制成功:' + optRecord.notes); 2019 message.info('备注复制成功:' + optRecord.notes);
@@ -2427,7 +2465,7 @@ const OrderPage = () =&gt; { @@ -2427,7 +2465,7 @@ const OrderPage = () =&gt; {
2427 )} 2465 )}
2428 className="whitespace-no-wrap overflow-hidden overflow-ellipsis max-w-[400px]" 2466 className="whitespace-no-wrap overflow-hidden overflow-ellipsis max-w-[400px]"
2429 > 2467 >
2430 - <span className="text-[#8C8C8C]">开票款单位:</span> 2468 + <span className="text-[#8C8C8C]">开票款单位:</span>
2431 <span className="text-slate-700"> 2469 <span className="text-slate-700">
2432 {record.receivingCompany !== null 2470 {record.receivingCompany !== null
2433 ? enumValueToLabel( 2471 ? enumValueToLabel(
@@ -2571,6 +2609,37 @@ const OrderPage = () =&gt; { @@ -2571,6 +2609,37 @@ const OrderPage = () =&gt; {
2571 <Flex justify="flex-end"> 2609 <Flex justify="flex-end">
2572 <Space.Compact direction="vertical" align="end"> 2610 <Space.Compact direction="vertical" align="end">
2573 <Space wrap> 2611 <Space wrap>
  2612 + {record.mainPath?.includes('salesConfirm') && (
  2613 + <ButtonConfirm
  2614 + className="p-0"
  2615 + title="是否确认此商城订单信息无误?确认无误之后订单将进入审核流程。"
  2616 + text="订单确认"
  2617 + onConfirm={async () => {
  2618 + let subIds = subOrderSelectedMap
  2619 + .get(record.id)
  2620 + ?.map((item) => {
  2621 + return item.id;
  2622 + });
  2623 + if (subIds === null || subIds === undefined) {
  2624 + subIds = record.subOrderInformationLists.map(
  2625 + (item) => {
  2626 + return item.id;
  2627 + },
  2628 + );
  2629 + }
  2630 + let res = await postServiceOrderSalesConfirm({
  2631 + data: {
  2632 + subOrderIds: subIds,
  2633 + },
  2634 + });
  2635 +
  2636 + if (res && res.result === RESPONSE_CODE.SUCCESS) {
  2637 + message.success(res.message);
  2638 + refreshTable();
  2639 + }
  2640 + }}
  2641 + />
  2642 + )}
2574 {record.mainPath?.includes('uploadPaymentReceiptBill') ? ( 2643 {record.mainPath?.includes('uploadPaymentReceiptBill') ? (
2575 <Button 2644 <Button
2576 className="p-0" 2645 className="p-0"
@@ -2862,6 +2931,38 @@ const OrderPage = () =&gt; { @@ -2862,6 +2931,38 @@ const OrderPage = () =&gt; {
2862 '' 2931 ''
2863 )} 2932 )}
2864 2933
  2934 + {record.mainPath?.includes('creditAudit') ? (
  2935 + <Button
  2936 + className="p-0"
  2937 + type="link"
  2938 + onClick={() => {
  2939 + let selectedSubOrders = subOrderSelectedMap.get(
  2940 + record.id,
  2941 + );
  2942 + setSelectedRows(selectedSubOrders);
  2943 + if (selectedSubOrders === undefined) {
  2944 + selectedSubOrders = record.subOrderInformationLists;
  2945 + }
  2946 + for (let i = 0; i < selectedSubOrders.length; i++) {
  2947 + if (
  2948 + selectedSubOrders[i].orderStatus !==
  2949 + 'CREDIT_CONFIRM'
  2950 + ) {
  2951 + message.error('请选择[赊账待审核]的子订单进行审核');
  2952 + return;
  2953 + }
  2954 + }
  2955 + createOptObject(null, record.id);
  2956 + setCheckVisible(true);
  2957 + setOrderCheckType(CHECK_TYPE.CREDIT_AUDIT);
  2958 + }}
  2959 + >
  2960 + 赊账审核
  2961 + </Button>
  2962 + ) : (
  2963 + ''
  2964 + )}
  2965 +
2865 {record.mainPath?.includes('editProductionTime') ? ( 2966 {record.mainPath?.includes('editProductionTime') ? (
2866 <Button 2967 <Button
2867 className="p-0" 2968 className="p-0"
@@ -3203,10 +3304,11 @@ const OrderPage = () =&gt; { @@ -3203,10 +3304,11 @@ const OrderPage = () =&gt; {
3203 if ( 3304 if (
3204 orderStatus !== 'UNAUDITED' && 3305 orderStatus !== 'UNAUDITED' &&
3205 orderStatus !== 'AUDIT_FAILED' && 3306 orderStatus !== 'AUDIT_FAILED' &&
3206 - orderStatus !== 'LEADER_PROCESS' 3307 + orderStatus !== 'LEADER_PROCESS' &&
  3308 + orderStatus !== 'SALES_CONFIRM'
3207 ) { 3309 ) {
3208 message.error( 3310 message.error(
3209 - '请选择未审核或者审核失败的订单进行编辑', 3311 + '请选择【未审核、审核失败、销售待确认】的订单进行编辑',
3210 ); 3312 );
3211 return; 3313 return;
3212 } 3314 }
@@ -3712,6 +3814,7 @@ const OrderPage = () =&gt; { @@ -3712,6 +3814,7 @@ const OrderPage = () =&gt; {
3712 'subNotes', 3814 'subNotes',
3713 'orderStatus', 3815 'orderStatus',
3714 'createTime', 3816 'createTime',
  3817 + 'modifiedAuditStatus',
3715 ]; 3818 ];
3716 if (isSupplier() && !canSearchIndex.includes(item.dataIndex)) { 3819 if (isSupplier() && !canSearchIndex.includes(item.dataIndex)) {
3717 item.search = false; 3820 item.search = false;
@@ -3893,6 +3996,8 @@ const OrderPage = () =&gt; { @@ -3893,6 +3996,8 @@ const OrderPage = () =&gt; {
3893 3996
3894 toolBtns.push(radioGroup); 3997 toolBtns.push(radioGroup);
3895 3998
  3999 + toolBtns.push(<ImportExpressBillModal></ImportExpressBillModal>);
  4000 +
3896 //导出按钮配置 4001 //导出按钮配置
3897 const exportItems: MenuProps['items'] = [ 4002 const exportItems: MenuProps['items'] = [
3898 { 4003 {
@@ -3901,20 +4006,32 @@ const OrderPage = () =&gt; { @@ -3901,20 +4006,32 @@ const OrderPage = () =&gt; {
3901 onClick: async () => { 4006 onClick: async () => {
3902 let body = { flag: 50, ...searchParams }; 4007 let body = { flag: 50, ...searchParams };
3903 exportLoading(); 4008 exportLoading();
3904 - orderExport('/api/service/order/export', body, exportLoadingDestory); 4009 + orderExport(
  4010 + '/api/service/order/export',
  4011 + '订单导出结果.xls',
  4012 + 'POST',
  4013 + body,
  4014 + exportLoadingDestory,
  4015 + );
3905 }, 4016 },
3906 }, 4017 },
3907 { 4018 {
3908 label: '导出已选中订单', 4019 label: '导出已选中订单',
3909 key: '1', 4020 key: '1',
3910 onClick: async () => { 4021 onClick: async () => {
3911 - if (selectedMainOrderKeys.length === 0) { 4022 + if (mainOrderSelectedMap.size === 0) {
3912 message.error('请选择订单'); 4023 message.error('请选择订单');
3913 return; 4024 return;
3914 } 4025 }
3915 - let body = { flag: 30, id: selectedMainOrderKeys }; 4026 + let body = { flag: 30, id: Array.from(mainOrderSelectedMap.keys()) };
3916 exportLoading(); 4027 exportLoading();
3917 - orderExport('/api/service/order/export', body, exportLoadingDestory); 4028 + orderExport(
  4029 + '/api/service/order/export',
  4030 + '订单导出结果.xls',
  4031 + 'POST',
  4032 + body,
  4033 + exportLoadingDestory,
  4034 + );
3918 }, 4035 },
3919 }, 4036 },
3920 { 4037 {
@@ -3923,7 +4040,13 @@ const OrderPage = () =&gt; { @@ -3923,7 +4040,13 @@ const OrderPage = () =&gt; {
3923 onClick: async () => { 4040 onClick: async () => {
3924 let body = { flag: 40, ids: [] }; 4041 let body = { flag: 40, ids: [] };
3925 exportLoading(); 4042 exportLoading();
3926 - orderExport('/api/service/order/export', body, exportLoadingDestory); 4043 + orderExport(
  4044 + '/api/service/order/export',
  4045 + '订单导出结果.xls',
  4046 + 'POST',
  4047 + body,
  4048 + exportLoadingDestory,
  4049 + );
3927 }, 4050 },
3928 }, 4051 },
3929 { 4052 {
@@ -3932,7 +4055,13 @@ const OrderPage = () =&gt; { @@ -3932,7 +4055,13 @@ const OrderPage = () =&gt; {
3932 onClick: async () => { 4055 onClick: async () => {
3933 let body = { flag: 10, ids: [] }; 4056 let body = { flag: 10, ids: [] };
3934 exportLoading(); 4057 exportLoading();
3935 - orderExport('/api/service/order/export', body, exportLoadingDestory); 4058 + orderExport(
  4059 + '/api/service/order/export',
  4060 + '订单导出结果.xls',
  4061 + 'POST',
  4062 + body,
  4063 + exportLoadingDestory,
  4064 + );
3936 }, 4065 },
3937 }, 4066 },
3938 ]; 4067 ];
src/pages/OrderPrint/index.css 0 → 100644
  1 +.font0 {
  2 + color: windowtext;
  3 + font-size: 12pt;
  4 + font-weight: 400;
  5 + font-style: normal;
  6 + text-decoration: none;
  7 + font-family: '宋体';
  8 +}
  9 +
  10 +.font1 {
  11 + color: windowtext;
  12 + font-size: 16pt;
  13 + font-weight: 400;
  14 + font-style: normal;
  15 + text-decoration: none;
  16 + font-family: '宋体';
  17 +}
  18 +
  19 +.font2 {
  20 + color: windowtext;
  21 + font-size: 10pt;
  22 + font-weight: 400;
  23 + font-style: normal;
  24 + text-decoration: none;
  25 + font-family: '宋体';
  26 +}
  27 +
  28 +.font3 {
  29 + color: windowtext;
  30 + font-size: 14pt;
  31 + font-weight: 400;
  32 + font-style: normal;
  33 + text-decoration: none;
  34 + font-family: '宋体';
  35 +}
  36 +
  37 +.font4 {
  38 + color: windowtext;
  39 + font-size: 8pt;
  40 + font-weight: 400;
  41 + font-style: normal;
  42 + text-decoration: none;
  43 + font-family: '宋体';
  44 +}
  45 +
  46 +.font5 {
  47 + color: #00f;
  48 + font-size: 11pt;
  49 + font-weight: 400;
  50 + font-style: normal;
  51 + text-decoration: underline;
  52 + font-family: '宋体';
  53 +}
  54 +
  55 +.font6 {
  56 + color: #800080;
  57 + font-size: 11pt;
  58 + font-weight: 400;
  59 + font-style: normal;
  60 + text-decoration: underline;
  61 + font-family: '宋体';
  62 +}
  63 +
  64 +.font7 {
  65 + color: #000;
  66 + font-size: 11pt;
  67 + font-weight: 400;
  68 + font-style: normal;
  69 + text-decoration: none;
  70 + font-family: '宋体';
  71 +}
  72 +
  73 +.font8 {
  74 + color: #f00;
  75 + font-size: 11pt;
  76 + font-weight: 400;
  77 + font-style: normal;
  78 + text-decoration: none;
  79 + font-family: '宋体';
  80 +}
  81 +
  82 +.font9 {
  83 + color: #44546a;
  84 + font-size: 18pt;
  85 + font-weight: 700;
  86 + font-style: normal;
  87 + text-decoration: none;
  88 + font-family: '宋体';
  89 +}
  90 +
  91 +.font10 {
  92 + color: #7f7f7f;
  93 + font-size: 11pt;
  94 + font-weight: 400;
  95 + font-style: italic;
  96 + text-decoration: none;
  97 + font-family: '宋体';
  98 +}
  99 +
  100 +.font11 {
  101 + color: #44546a;
  102 + font-size: 15pt;
  103 + font-weight: 700;
  104 + font-style: normal;
  105 + text-decoration: none;
  106 + font-family: '宋体';
  107 +}
  108 +
  109 +.font12 {
  110 + color: #44546a;
  111 + font-size: 13pt;
  112 + font-weight: 700;
  113 + font-style: normal;
  114 + text-decoration: none;
  115 + font-family: '宋体';
  116 +}
  117 +
  118 +.font13 {
  119 + color: #44546a;
  120 + font-size: 11pt;
  121 + font-weight: 700;
  122 + font-style: normal;
  123 + text-decoration: none;
  124 + font-family: '宋体';
  125 +}
  126 +
  127 +.font14 {
  128 + color: #3f3f76;
  129 + font-size: 11pt;
  130 + font-weight: 400;
  131 + font-style: normal;
  132 + text-decoration: none;
  133 + font-family: '宋体';
  134 +}
  135 +
  136 +.font15 {
  137 + color: #3f3f3f;
  138 + font-size: 11pt;
  139 + font-weight: 700;
  140 + font-style: normal;
  141 + text-decoration: none;
  142 + font-family: '宋体';
  143 +}
  144 +
  145 +.font16 {
  146 + color: #fa7d00;
  147 + font-size: 11pt;
  148 + font-weight: 700;
  149 + font-style: normal;
  150 + text-decoration: none;
  151 + font-family: '宋体';
  152 +}
  153 +
  154 +.font17 {
  155 + color: #fff;
  156 + font-size: 11pt;
  157 + font-weight: 700;
  158 + font-style: normal;
  159 + text-decoration: none;
  160 + font-family: '宋体';
  161 +}
  162 +
  163 +.font18 {
  164 + color: #fa7d00;
  165 + font-size: 11pt;
  166 + font-weight: 400;
  167 + font-style: normal;
  168 + text-decoration: none;
  169 + font-family: '宋体';
  170 +}
  171 +
  172 +.font19 {
  173 + color: #000;
  174 + font-size: 11pt;
  175 + font-weight: 700;
  176 + font-style: normal;
  177 + text-decoration: none;
  178 + font-family: '宋体';
  179 +}
  180 +
  181 +.font20 {
  182 + color: #006100;
  183 + font-size: 11pt;
  184 + font-weight: 400;
  185 + font-style: normal;
  186 + text-decoration: none;
  187 + font-family: '宋体';
  188 +}
  189 +
  190 +.font21 {
  191 + color: #9c0006;
  192 + font-size: 11pt;
  193 + font-weight: 400;
  194 + font-style: normal;
  195 + text-decoration: none;
  196 + font-family: '宋体';
  197 +}
  198 +
  199 +.font22 {
  200 + color: #9c6500;
  201 + font-size: 11pt;
  202 + font-weight: 400;
  203 + font-style: normal;
  204 + text-decoration: none;
  205 + font-family: '宋体';
  206 +}
  207 +
  208 +.font23 {
  209 + color: #fff;
  210 + font-size: 11pt;
  211 + font-weight: 400;
  212 + font-style: normal;
  213 + text-decoration: none;
  214 + font-family: '宋体';
  215 +}
  216 +
  217 +.font24 {
  218 + color: #000;
  219 + font-size: 11pt;
  220 + font-weight: 400;
  221 + font-style: normal;
  222 + text-decoration: none;
  223 + font-family: '宋体';
  224 +}
  225 +
  226 +.style0 {
  227 + text-align: general;
  228 + vertical-align: middle;
  229 + white-space: nowrap;
  230 + color: windowtext;
  231 + font-size: 12pt;
  232 + font-weight: 400;
  233 + font-style: normal;
  234 + text-decoration: none;
  235 + font-family: '宋体';
  236 + border: none;
  237 +}
  238 +
  239 +.style21 {
  240 + color: #00f;
  241 + font-size: 11pt;
  242 + font-weight: 400;
  243 + font-style: normal;
  244 + text-decoration: underline;
  245 + font-family: '宋体';
  246 +}
  247 +
  248 +.style22 {
  249 + color: #800080;
  250 + font-size: 11pt;
  251 + font-weight: 400;
  252 + font-style: normal;
  253 + text-decoration: underline;
  254 + font-family: '宋体';
  255 +}
  256 +
  257 +.style23 {
  258 + background: #ffc;
  259 + border: 0.5pt solid #b2b2b2;
  260 +}
  261 +
  262 +.style24 {
  263 + color: #f00;
  264 + font-size: 11pt;
  265 + font-weight: 400;
  266 + font-style: normal;
  267 + text-decoration: none;
  268 + font-family: '宋体';
  269 +}
  270 +
  271 +.style25 {
  272 + color: #44546a;
  273 + font-size: 18pt;
  274 + font-weight: 700;
  275 + font-style: normal;
  276 + text-decoration: none;
  277 + font-family: '宋体';
  278 +}
  279 +
  280 +.style26 {
  281 + color: #7f7f7f;
  282 + font-size: 11pt;
  283 + font-weight: 400;
  284 + font-style: italic;
  285 + text-decoration: none;
  286 + font-family: '宋体';
  287 +}
  288 +
  289 +.style27 {
  290 + color: #44546a;
  291 + font-size: 15pt;
  292 + font-weight: 700;
  293 + font-style: normal;
  294 + text-decoration: none;
  295 + font-family: '宋体';
  296 + border-bottom: 1pt solid #5b9bd5;
  297 +}
  298 +
  299 +.style28 {
  300 + color: #44546a;
  301 + font-size: 13pt;
  302 + font-weight: 700;
  303 + font-style: normal;
  304 + text-decoration: none;
  305 + font-family: '宋体';
  306 + border-bottom: 1pt solid #5b9bd5;
  307 +}
  308 +
  309 +.style29 {
  310 + color: #44546a;
  311 + font-size: 11pt;
  312 + font-weight: 700;
  313 + font-style: normal;
  314 + text-decoration: none;
  315 + font-family: '宋体';
  316 + border-bottom: 1pt solid #acccea;
  317 +}
  318 +
  319 +.style30 {
  320 + color: #44546a;
  321 + font-size: 11pt;
  322 + font-weight: 700;
  323 + font-style: normal;
  324 + text-decoration: none;
  325 + font-family: '宋体';
  326 +}
  327 +
  328 +.style31 {
  329 + background: #fc9;
  330 + color: #3f3f76;
  331 + font-size: 11pt;
  332 + font-weight: 400;
  333 + font-style: normal;
  334 + text-decoration: none;
  335 + font-family: '宋体';
  336 + border: 0.5pt solid #7f7f7f;
  337 +}
  338 +
  339 +.style32 {
  340 + background: #f2f2f2;
  341 + color: #3f3f3f;
  342 + font-size: 11pt;
  343 + font-weight: 700;
  344 + font-style: normal;
  345 + text-decoration: none;
  346 + font-family: '宋体';
  347 + border: 0.5pt solid #3f3f3f;
  348 +}
  349 +
  350 +.style33 {
  351 + background: #f2f2f2;
  352 + color: #fa7d00;
  353 + font-size: 11pt;
  354 + font-weight: 700;
  355 + font-style: normal;
  356 + text-decoration: none;
  357 + font-family: '宋体';
  358 + border: 0.5pt solid #7f7f7f;
  359 +}
  360 +
  361 +.style34 {
  362 + background: #a5a5a5;
  363 + color: #fff;
  364 + font-size: 11pt;
  365 + font-weight: 700;
  366 + font-style: normal;
  367 + text-decoration: none;
  368 + font-family: '宋体';
  369 + border: 2pt double #3f3f3f;
  370 +}
  371 +
  372 +.style35 {
  373 + color: #fa7d00;
  374 + font-size: 11pt;
  375 + font-weight: 400;
  376 + font-style: normal;
  377 + text-decoration: none;
  378 + font-family: '宋体';
  379 + border-bottom: 2pt double #ff8001;
  380 +}
  381 +
  382 +.style36 {
  383 + color: #000;
  384 + font-size: 11pt;
  385 + font-weight: 700;
  386 + font-style: normal;
  387 + text-decoration: none;
  388 + font-family: '宋体';
  389 + border-top: 0.5pt solid #5b9bd5;
  390 + border-bottom: 2pt double #5b9bd5;
  391 +}
  392 +
  393 +.style37 {
  394 + background: #c6efce;
  395 + color: #006100;
  396 + font-size: 11pt;
  397 + font-weight: 400;
  398 + font-style: normal;
  399 + text-decoration: none;
  400 + font-family: '宋体';
  401 +}
  402 +
  403 +.style38 {
  404 + background: #ffc7ce;
  405 + color: #9c0006;
  406 + font-size: 11pt;
  407 + font-weight: 400;
  408 + font-style: normal;
  409 + text-decoration: none;
  410 + font-family: '宋体';
  411 +}
  412 +
  413 +.style39 {
  414 + background: #ffeb9c;
  415 + color: #9c6500;
  416 + font-size: 11pt;
  417 + font-weight: 400;
  418 + font-style: normal;
  419 + text-decoration: none;
  420 + font-family: '宋体';
  421 +}
  422 +
  423 +.style40 {
  424 + background: #5b9bd5;
  425 + color: #fff;
  426 + font-size: 11pt;
  427 + font-weight: 400;
  428 + font-style: normal;
  429 + text-decoration: none;
  430 + font-family: '宋体';
  431 +}
  432 +
  433 +.style41 {
  434 + background: #ddebf7;
  435 + color: #000;
  436 + font-size: 11pt;
  437 + font-weight: 400;
  438 + font-style: normal;
  439 + text-decoration: none;
  440 + font-family: '宋体';
  441 +}
  442 +
  443 +.style42 {
  444 + background: #bdd7ee;
  445 + color: #000;
  446 + font-size: 11pt;
  447 + font-weight: 400;
  448 + font-style: normal;
  449 + text-decoration: none;
  450 + font-family: '宋体';
  451 +}
  452 +
  453 +.style43 {
  454 + background: #9bc2e6;
  455 + color: #fff;
  456 + font-size: 11pt;
  457 + font-weight: 400;
  458 + font-style: normal;
  459 + text-decoration: none;
  460 + font-family: '宋体';
  461 +}
  462 +
  463 +.style44 {
  464 + background: #ed7d31;
  465 + color: #fff;
  466 + font-size: 11pt;
  467 + font-weight: 400;
  468 + font-style: normal;
  469 + text-decoration: none;
  470 + font-family: '宋体';
  471 +}
  472 +
  473 +.style45 {
  474 + background: #fce4d6;
  475 + color: #000;
  476 + font-size: 11pt;
  477 + font-weight: 400;
  478 + font-style: normal;
  479 + text-decoration: none;
  480 + font-family: '宋体';
  481 +}
  482 +
  483 +.style46 {
  484 + background: #f8cbad;
  485 + color: #000;
  486 + font-size: 11pt;
  487 + font-weight: 400;
  488 + font-style: normal;
  489 + text-decoration: none;
  490 + font-family: '宋体';
  491 +}
  492 +
  493 +.style47 {
  494 + background: #f4b084;
  495 + color: #fff;
  496 + font-size: 11pt;
  497 + font-weight: 400;
  498 + font-style: normal;
  499 + text-decoration: none;
  500 + font-family: '宋体';
  501 +}
  502 +
  503 +.style48 {
  504 + background: #a5a5a5;
  505 + color: #fff;
  506 + font-size: 11pt;
  507 + font-weight: 400;
  508 + font-style: normal;
  509 + text-decoration: none;
  510 + font-family: '宋体';
  511 +}
  512 +
  513 +.style49 {
  514 + background: #ededed;
  515 + color: #000;
  516 + font-size: 11pt;
  517 + font-weight: 400;
  518 + font-style: normal;
  519 + text-decoration: none;
  520 + font-family: '宋体';
  521 +}
  522 +
  523 +.style50 {
  524 + background: #dbdbdb;
  525 + color: #000;
  526 + font-size: 11pt;
  527 + font-weight: 400;
  528 + font-style: normal;
  529 + text-decoration: none;
  530 + font-family: '宋体';
  531 +}
  532 +
  533 +.style51 {
  534 + background: #c9c9c9;
  535 + color: #fff;
  536 + font-size: 11pt;
  537 + font-weight: 400;
  538 + font-style: normal;
  539 + text-decoration: none;
  540 + font-family: '宋体';
  541 +}
  542 +
  543 +.style52 {
  544 + background: #ffc000;
  545 + color: #fff;
  546 + font-size: 11pt;
  547 + font-weight: 400;
  548 + font-style: normal;
  549 + text-decoration: none;
  550 + font-family: '宋体';
  551 +}
  552 +
  553 +.style53 {
  554 + background: #fff2cc;
  555 + color: #000;
  556 + font-size: 11pt;
  557 + font-weight: 400;
  558 + font-style: normal;
  559 + text-decoration: none;
  560 + font-family: '宋体';
  561 +}
  562 +
  563 +.style54 {
  564 + background: #ffe699;
  565 + color: #000;
  566 + font-size: 11pt;
  567 + font-weight: 400;
  568 + font-style: normal;
  569 + text-decoration: none;
  570 + font-family: '宋体';
  571 +}
  572 +
  573 +.style55 {
  574 + background: #ffd966;
  575 + color: #fff;
  576 + font-size: 11pt;
  577 + font-weight: 400;
  578 + font-style: normal;
  579 + text-decoration: none;
  580 + font-family: '宋体';
  581 +}
  582 +
  583 +.style56 {
  584 + background: #4472c4;
  585 + color: #fff;
  586 + font-size: 11pt;
  587 + font-weight: 400;
  588 + font-style: normal;
  589 + text-decoration: none;
  590 + font-family: '宋体';
  591 +}
  592 +
  593 +.style57 {
  594 + background: #d9e1f2;
  595 + color: #000;
  596 + font-size: 11pt;
  597 + font-weight: 400;
  598 + font-style: normal;
  599 + text-decoration: none;
  600 + font-family: '宋体';
  601 +}
  602 +
  603 +.style58 {
  604 + background: #b4c6e7;
  605 + color: #000;
  606 + font-size: 11pt;
  607 + font-weight: 400;
  608 + font-style: normal;
  609 + text-decoration: none;
  610 + font-family: '宋体';
  611 +}
  612 +
  613 +.style59 {
  614 + background: #8ea9db;
  615 + color: #fff;
  616 + font-size: 11pt;
  617 + font-weight: 400;
  618 + font-style: normal;
  619 + text-decoration: none;
  620 + font-family: '宋体';
  621 +}
  622 +
  623 +.style60 {
  624 + background: #70ad47;
  625 + color: #fff;
  626 + font-size: 11pt;
  627 + font-weight: 400;
  628 + font-style: normal;
  629 + text-decoration: none;
  630 + font-family: '宋体';
  631 +}
  632 +
  633 +.style61 {
  634 + background: #e2efda;
  635 + color: #000;
  636 + font-size: 11pt;
  637 + font-weight: 400;
  638 + font-style: normal;
  639 + text-decoration: none;
  640 + font-family: '宋体';
  641 +}
  642 +
  643 +.style62 {
  644 + background: #c6e0b4;
  645 + color: #000;
  646 + font-size: 11pt;
  647 + font-weight: 400;
  648 + font-style: normal;
  649 + text-decoration: none;
  650 + font-family: '宋体';
  651 +}
  652 +
  653 +.style63 {
  654 + background: #a9d08e;
  655 + color: #fff;
  656 + font-size: 11pt;
  657 + font-weight: 400;
  658 + font-style: normal;
  659 + text-decoration: none;
  660 + font-family: '宋体';
  661 +}
  662 +
  663 +td {
  664 + padding-top: 1px;
  665 + padding-right: 1px;
  666 + padding-left: 1px;
  667 + text-align: general;
  668 + vertical-align: middle;
  669 + white-space: nowrap;
  670 + color: windowtext;
  671 + font-size: 12pt;
  672 + font-weight: 400;
  673 + font-style: normal;
  674 + text-decoration: none;
  675 + font-family: '宋体';
  676 + border: none;
  677 +}
  678 +
  679 +.xl65 {
  680 + text-align: center;
  681 + font-size: 16pt;
  682 +}
  683 +
  684 +.xl66 {
  685 + text-align: center;
  686 + font-size: 10pt;
  687 +}
  688 +
  689 +.xl67 {
  690 + text-align: center;
  691 + font-size: 14pt;
  692 +}
  693 +
  694 +.xl68 {
  695 + text-align: center;
  696 + font-size: 14pt;
  697 +}
  698 +
  699 +.xl69 {
  700 + text-align: left;
  701 + font-size: 8pt;
  702 +}
  703 +
  704 +.xl70 {
  705 + text-align: left;
  706 + font-size: 8pt;
  707 +}
  708 +
  709 +.xl71 {
  710 + text-align: center;
  711 + font-size: 8pt;
  712 + border: 0.5pt solid windowtext;
  713 +}
  714 +
  715 +.xl72 {
  716 + text-align: center;
  717 + font-size: 8pt;
  718 + border: 0.5pt solid windowtext;
  719 + white-space: normal;
  720 +}
  721 +
  722 +.xl73 {
  723 + white-space: normal;
  724 + font-size: 8pt;
  725 + border: 0.5pt solid windowtext;
  726 +}
  727 +
  728 +.xl74 {
  729 + text-align: center;
  730 + white-space: normal;
  731 + font-size: 8pt;
  732 + border: 0.5pt solid windowtext;
  733 +}
  734 +
  735 +.xl75 {
  736 + text-align: center;
  737 + white-space: normal;
  738 + font-size: 8pt;
  739 + border: 0.5pt solid windowtext;
  740 +}
  741 +
  742 +.xl76 {
  743 + font-size: 8pt;
  744 +}
  745 +
  746 +.xl77 {
  747 + font-size: 8pt;
  748 +}
  749 +
  750 +.xl78 {
  751 + text-align: center;
  752 + font-size: 8pt;
  753 +}
src/pages/Prepaid/constant.tsx
@@ -226,6 +226,13 @@ export const BALANCE_CHANGE_COLUMNS = [ @@ -226,6 +226,13 @@ export const BALANCE_CHANGE_COLUMNS = [
226 width: 140, 226 width: 140,
227 }, 227 },
228 { 228 {
  229 + title: '变动人',
  230 + dataIndex: 'updateBy',
  231 + key: 'updateBy',
  232 + dataType: 'text',
  233 + width: 200,
  234 + },
  235 + {
229 title: '类型', 236 title: '类型',
230 dataIndex: 'title', 237 dataIndex: 'title',
231 key: 'title', 238 key: 'title',
src/pages/ResearchGroup/components/AuditModal.tsx 0 → 100644
  1 +import { RESPONSE_CODE } from '@/constants/enum';
  2 +import { postCommonAudit } from '@/services';
  3 +import { ModalForm, ProFormTextArea } from '@ant-design/pro-components';
  4 +import { Button, Form, message } from 'antd';
  5 +import { cloneDeep } from 'lodash';
  6 +
  7 +// import { cloneDeep } from 'lodash';
  8 +export default ({ setVisible, ids, onClose }) => {
  9 + const [form] = Form.useForm();
  10 + let auditIds = cloneDeep(ids);
  11 +
  12 + const parseValues = (values: any) => {
  13 + values.ids = auditIds;
  14 + values.notes = form.getFieldValue('auditNotes');
  15 + };
  16 +
  17 + const doAudit = async (values: any) => {
  18 + values.type = 'research_group_member_request_audit';
  19 + let res = await postCommonAudit({ data: values });
  20 + if (res && res.result === RESPONSE_CODE.SUCCESS) {
  21 + message.success(res.message);
  22 + onClose();
  23 + }
  24 + };
  25 +
  26 + const loadbtns = (props: any, defaultDoms: any) => {
  27 + let btns = [];
  28 + //取消
  29 + btns.push(defaultDoms[0]);
  30 +
  31 + //驳回
  32 + btns.push(
  33 + <Button
  34 + type="primary"
  35 + onClick={() => {
  36 + let values = form.getFieldsValue();
  37 + values.pass = false;
  38 + parseValues(values);
  39 + doAudit(values);
  40 + }}
  41 + >
  42 + 驳回
  43 + </Button>,
  44 + );
  45 +
  46 + //确认
  47 + btns.push(defaultDoms[1]);
  48 +
  49 + return btns;
  50 + };
  51 +
  52 + return (
  53 + <>
  54 + <ModalForm
  55 + width={500}
  56 + open
  57 + title="审核"
  58 + form={form}
  59 + autoFocusFirstInput
  60 + modalProps={{
  61 + okText: '通过',
  62 + cancelText: '取消',
  63 + destroyOnClose: true,
  64 + onCancel: () => {
  65 + setVisible(false);
  66 + },
  67 + }}
  68 + onFinish={async (values) => {
  69 + values.pass = true;
  70 + parseValues(values);
  71 + doAudit(values);
  72 + onClose();
  73 + }}
  74 + onOpenChange={setVisible}
  75 + submitter={{
  76 + render: (props, defaultDoms) => {
  77 + return loadbtns(props, defaultDoms);
  78 + },
  79 + }}
  80 + >
  81 + <ProFormTextArea
  82 + name="auditNotes"
  83 + key="auditNotes"
  84 + placeholder="备注"
  85 + label="若驳回,请填写备注"
  86 + />
  87 + </ModalForm>
  88 + </>
  89 + );
  90 +};
src/pages/ResearchGroup/components/ImportModal.tsx 0 → 100644
  1 +import { RESPONSE_CODE } from '@/constants/enum';
  2 +import { postResearchGroupsImport } from '@/services';
  3 +import { orderExport } from '@/services/order';
  4 +import { UploadOutlined } from '@ant-design/icons';
  5 +import { Button, Modal, Upload, message } from 'antd';
  6 +import { RcFile, UploadFile, UploadProps } from 'antd/es/upload';
  7 +import { useState } from 'react';
  8 +export default ({ onClose }) => {
  9 + // const [form] = Form.useForm<{ name: string; company: string }>();
  10 + const [messageApi, contextHolder] = message.useMessage();
  11 + const [fileList, setFileList] = useState<UploadFile[]>([]);
  12 + const [uploading, setUploading] = useState(false);
  13 + const handleChange: UploadProps['onChange'] = ({ fileList: newFileList }) =>
  14 + setFileList(newFileList);
  15 +
  16 + const exportLoading = (content: string) => {
  17 + messageApi.open({
  18 + type: 'loading',
  19 + content: content,
  20 + duration: 0,
  21 + });
  22 + };
  23 +
  24 + const exportLoadingDestory = () => {
  25 + messageApi.destroy();
  26 + };
  27 + const downloadTemplate = async () => {
  28 + exportLoading('正在下载模板...');
  29 + orderExport(
  30 + '/api/research/groups/download/importTemplate',
  31 + '导入模板.xls',
  32 + 'POST',
  33 + {},
  34 + exportLoadingDestory,
  35 + );
  36 + };
  37 +
  38 + const handleUpload = async () => {
  39 + const formData = new FormData();
  40 + fileList.forEach((file) => {
  41 + //originFileObj二进制文件
  42 + formData.append('file', file.originFileObj as RcFile);
  43 + });
  44 + // console.log(fileList[0] as RcFile)
  45 + // formData.append('file', fileList[0] as RcFile);
  46 + setUploading(true);
  47 + // You can use any AJAX library you like
  48 + const res = await postResearchGroupsImport({
  49 + data: formData,
  50 + headers: {
  51 + 'Content-Type':
  52 + 'multipart/form-data; boundary=----WebKitFormBoundarynl6gT1BKdPWIejNq',
  53 + },
  54 + });
  55 +
  56 + if (res.result === RESPONSE_CODE.SUCCESS) {
  57 + message.success(res.message);
  58 + onClose();
  59 + }
  60 +
  61 + setUploading(false);
  62 + };
  63 +
  64 + const props: UploadProps = {
  65 + onRemove: (file) => {
  66 + const index = fileList.indexOf(file);
  67 + const newFileList = fileList.slice();
  68 + newFileList.splice(index, 1);
  69 + setFileList(newFileList);
  70 + },
  71 + beforeUpload: (file) => {
  72 + setFileList([...fileList, file]);
  73 +
  74 + return false;
  75 + },
  76 + fileList,
  77 + onChange: handleChange,
  78 + accept: '.xlsx',
  79 + };
  80 +
  81 + return (
  82 + <>
  83 + <Modal
  84 + width={500}
  85 + open
  86 + title="课题组信息导入"
  87 + footer={[
  88 + <Button key="cancel" onClick={onClose}>
  89 + 取消
  90 + </Button>,
  91 + <Button
  92 + type="primary"
  93 + key="ok"
  94 + onClick={handleUpload}
  95 + disabled={fileList.length === 0}
  96 + loading={uploading}
  97 + >
  98 + {uploading ? '上传中' : '提交'}
  99 + </Button>,
  100 + ]}
  101 + onCancel={async () => {
  102 + onClose();
  103 + }}
  104 + >
  105 + <div className="py-4 font-semibold">
  106 + 导入课题组信息
  107 + <Button type="link" onClick={downloadTemplate}>
  108 + 下载模板
  109 + </Button>
  110 + </div>
  111 + <Upload {...props}>
  112 + <Button icon={<UploadOutlined />} disabled={fileList.length > 0}>
  113 + 点击选择文件
  114 + </Button>
  115 + </Upload>
  116 + </Modal>
  117 + {contextHolder}
  118 + </>
  119 + );
  120 +};
src/pages/ResearchGroup/components/ResearchGroupAddModal.tsx 0 → 100644
  1 +import { RESPONSE_CODE } from '@/constants/enum';
  2 +import {
  3 + postCanrdApiUserAddressList,
  4 + postCanrdApiUserList,
  5 + postResearchGroupsAdd,
  6 + postResearchGroupsDetail,
  7 + postResearchGroupsEdit,
  8 +} from '@/services';
  9 +import { getDefaultString, isEmpty } from '@/utils/StringUtil';
  10 +import { getRandomNumber } from '@/utils/numberUtil';
  11 +import { getSalesCodeOptions } from '@/utils/order';
  12 +import { validatePhoneNumberBool } from '@/utils/validators';
  13 +import {
  14 + ModalForm,
  15 + ProCard,
  16 + ProForm,
  17 + ProFormSelect,
  18 + ProFormText,
  19 +} from '@ant-design/pro-components';
  20 +import { Button, Form, Spin, message } from 'antd';
  21 +import { cloneDeep } from 'lodash';
  22 +import { useEffect, useState } from 'react';
  23 +import '../index.less';
  24 +
  25 +// import { cloneDeep } from 'lodash';
  26 +export default ({ setVisible, researchGroupId, onClose }) => {
  27 + const [form] = Form.useForm();
  28 + const [salesCodeOptions, setSalesCodeOptions] = useState([]);
  29 + const [memberOptions, setMemberOptions] = useState<any[]>([]);
  30 + const [accountOptions, setAccountOptions] = useState<any[]>([]);
  31 + const [researchGroupInfo, setResearchGroupInfo] = useState<any>(null);
  32 + const [modalLoading, setModalLoading] = useState(false);
  33 + const groupId = cloneDeep(researchGroupId);
  34 + const [requestCount, setRequestCount] = useState(1);
  35 +
  36 + /**
  37 + * 获取课题组信息
  38 + * @returns
  39 + */
  40 + const loadResearchGroupInfo = async () => {
  41 + if (groupId === null) {
  42 + return;
  43 + }
  44 + setModalLoading(true);
  45 + let res = await postResearchGroupsDetail({ data: { id: groupId } });
  46 + if (res && res.result === RESPONSE_CODE.SUCCESS) {
  47 + setResearchGroupInfo(res.data);
  48 + }
  49 + setModalLoading(false);
  50 + };
  51 +
  52 + /**
  53 + * 获取销售代码枚举,在复制和编辑的时候判断是否为旧的代码
  54 + */
  55 + const loadSalesCodeOptions = async () => {
  56 + let options = await getSalesCodeOptions();
  57 + setSalesCodeOptions(options);
  58 + };
  59 +
  60 + /**
  61 + * 对options去重
  62 + * @param options
  63 + * @returns
  64 + */
  65 + function deduplicateOptions(options: any) {
  66 + const seen = new Set();
  67 + const result: any[] = [];
  68 + options.forEach((option: any) => {
  69 + const uniqueKey = `${option.realName}-${option.phone}`;
  70 + if (!seen.has(uniqueKey)) {
  71 + seen.add(uniqueKey);
  72 + result.push(option);
  73 + }
  74 + });
  75 + return result;
  76 + }
  77 +
  78 + /**
  79 + * 自动填充客户信息
  80 + * @param option
  81 + */
  82 + function autoFillCustomerInfo(option: any) {
  83 + if (!option) {
  84 + return;
  85 + }
  86 + let realName = option.realName;
  87 + let id = option.value;
  88 + if (id === 3.1415926) {
  89 + message.warning(
  90 + '请填写下方的【客户名称】和【手机号】,填写完成确保信息无误后点击添加按钮。',
  91 + );
  92 + form.setFieldValue('realName', option.name);
  93 + return;
  94 + }
  95 + //判断当前客户信息是否已添加过:id匹配或者option的phone匹配说明添加过了
  96 + let memberIds = form.getFieldValue('members');
  97 + if (!memberIds) {
  98 + //表单项没值的时候默认是undefined。初始化为数组
  99 + memberIds = [];
  100 + }
  101 + if (memberIds.includes(id)) {
  102 + message.info(`${realName} 重复添加`);
  103 + return;
  104 + }
  105 + //表单项的value添加当前option的value
  106 + memberIds.push(id);
  107 + form.setFieldValue('members', memberIds);
  108 + message.success(`${realName} 添加成功`);
  109 + //判断options中是否已经有这个option
  110 + for (let memberOption of memberOptions) {
  111 + if (
  112 + memberIds.includes(memberOption.value) &&
  113 + memberOption.phone === option.phone
  114 + ) {
  115 + return;
  116 + }
  117 + }
  118 + //option添加到memberOptions中
  119 + let newMemberOptions = [...memberOptions];
  120 + newMemberOptions.push(option);
  121 + setMemberOptions(newMemberOptions);
  122 +
  123 + //清空信息
  124 + form.setFieldValue('realName', undefined);
  125 + form.setFieldValue('phone', undefined);
  126 + form.setFieldValue('customerName', null);
  127 + }
  128 +
  129 + /**
  130 + * 保存account的options
  131 + * @param option
  132 + * @returns
  133 + */
  134 + function autoAccountSelectOptions(option: any) {
  135 + if (!option) {
  136 + return;
  137 + }
  138 + let id = option.value;
  139 + //判断当前客户信息是否已添加过:id匹配或者option的phone匹配说明添加过了
  140 + let accountIds = form.getFieldValue('accounts');
  141 + if (!accountIds) {
  142 + //表单项没值的时候默认是undefined。初始化为数组
  143 + accountIds = [];
  144 + }
  145 + if (accountIds.includes(id)) {
  146 + return;
  147 + }
  148 + //option添加到accountOptions中
  149 + setAccountOptions(option);
  150 + }
  151 +
  152 + /**
  153 + * 添加自定义成员
  154 + */
  155 + function addCustomMember() {
  156 + let realName = form.getFieldValue('realName');
  157 + let phone = form.getFieldValue('phone');
  158 + if (isEmpty(realName)) {
  159 + message.error('请填写客户名称');
  160 + }
  161 + if (isEmpty(phone)) {
  162 + message.error('请填写手机号');
  163 + }
  164 + if (!validatePhoneNumberBool(phone)) {
  165 + message.error('请填写正确格式的手机号');
  166 + return;
  167 + }
  168 + let customOption = {
  169 + value: getRandomNumber(10),
  170 + realName: realName,
  171 + phone: phone,
  172 + };
  173 + autoFillCustomerInfo(customOption);
  174 + }
  175 +
  176 + function parseFormValues(values: any) {
  177 + if (!values) {
  178 + return {};
  179 + }
  180 +
  181 + let memberIds = values.members;
  182 + let accountIds = values.accounts;
  183 + values.id = groupId;
  184 +
  185 + //成员对象封装
  186 + if (memberIds) {
  187 + let memberObjs: any[] = [];
  188 + for (let memberOption of memberOptions) {
  189 + if (memberIds.includes(memberOption.value)) {
  190 + memberObjs.push({
  191 + memberName: memberOption.realName,
  192 + memberPhone: memberOption.phone,
  193 + id: memberOption.id,
  194 + groupId: memberOption.groupId,
  195 + });
  196 + }
  197 + }
  198 + values.members = memberObjs;
  199 + }
  200 +
  201 + //预存账号对象封装
  202 + if (accountIds) {
  203 + let accountObjs: any[] = [];
  204 + for (let accountOption of accountOptions) {
  205 + if (accountIds.includes(accountOption.uid)) {
  206 + accountObjs.push({
  207 + accountPhone: accountOption.phone,
  208 + accountId: accountOption.uid,
  209 + accountName: accountOption.realName,
  210 + id: accountOption.id,
  211 + groupId: accountOption.groupId,
  212 + });
  213 + }
  214 + }
  215 + values.accounts = accountObjs;
  216 + }
  217 +
  218 + return values;
  219 + }
  220 +
  221 + /**
  222 + * 设置表单默认信息
  223 + * @returns
  224 + */
  225 + const loadFormDefaultValue = async () => {
  226 + if (!researchGroupInfo) {
  227 + return;
  228 + }
  229 +
  230 + let members = researchGroupInfo.members;
  231 + if (members !== null) {
  232 + let newMemberOptions = [];
  233 + for (let member of members) {
  234 + let name = member.memberName;
  235 + let phone = member.memberPhone;
  236 + let id = member.id;
  237 + newMemberOptions.push({
  238 + ...member,
  239 + realName: name,
  240 + phone: phone,
  241 + value: id,
  242 + });
  243 + }
  244 + setMemberOptions(newMemberOptions);
  245 + form.setFieldValue(
  246 + 'members',
  247 + members?.map((item: any) => {
  248 + return item.id;
  249 + }),
  250 + );
  251 + }
  252 +
  253 + let accounts = researchGroupInfo.accounts;
  254 + if (accounts !== null) {
  255 + let phones: any[] = [];
  256 + let accountIds = accounts
  257 + .filter((account: any) => {
  258 + //id为空的按照手机号查询
  259 + if (account.accountId === null) {
  260 + phones.push(account.accountPhone);
  261 + return false;
  262 + }
  263 + return true;
  264 + })
  265 + .map((item: any) => item.accountId);
  266 +
  267 + let uidIdMap = new Map(
  268 + accounts.map((item: any) => [item.accountId, item.id]),
  269 + );
  270 + let res = await postCanrdApiUserList({
  271 + data: { uids: accountIds, phones: phones },
  272 + });
  273 + if (res && res.result === RESPONSE_CODE.SUCCESS) {
  274 + let accountList = res?.data?.data;
  275 + console.log(accountList);
  276 + let newAccountOptions = accountList?.map((item) => {
  277 + item.value = uidIdMap.get(item.uid);
  278 + return item;
  279 + });
  280 +
  281 + console.log(newAccountOptions);
  282 + setAccountOptions(newAccountOptions);
  283 + }
  284 +
  285 + form.setFieldValue('accounts', accountIds);
  286 + }
  287 +
  288 + form.setFieldValue('group', researchGroupInfo.groupName);
  289 + form.setFieldValue('leader', researchGroupInfo.leaderName);
  290 + };
  291 +
  292 + useEffect(() => {
  293 + loadSalesCodeOptions();
  294 + loadResearchGroupInfo();
  295 + }, []);
  296 +
  297 + useEffect(() => {
  298 + loadFormDefaultValue();
  299 + }, [researchGroupInfo]);
  300 +
  301 + return (
  302 + <div className="research-group-index">
  303 + <ModalForm
  304 + width={800}
  305 + open
  306 + title="新增/编辑课题组"
  307 + form={form}
  308 + autoFocusFirstInput
  309 + submitter={{}}
  310 + modalProps={{
  311 + okText: '提交',
  312 + cancelText: '关闭',
  313 + destroyOnClose: true,
  314 + onCancel: () => {
  315 + setVisible(false);
  316 + },
  317 + }}
  318 + onFinish={async (values) => {
  319 + let newValues = parseFormValues(values);
  320 + let res;
  321 + if (researchGroupInfo === null) {
  322 + res = await postResearchGroupsAdd({
  323 + data: newValues,
  324 + });
  325 + } else {
  326 + res = await postResearchGroupsEdit({
  327 + data: newValues,
  328 + });
  329 + }
  330 + if (res && res.result === RESPONSE_CODE.SUCCESS) {
  331 + message.success(res.message);
  332 + onClose();
  333 + }
  334 + }}
  335 + onOpenChange={setVisible}
  336 + >
  337 + <Spin spinning={modalLoading} tip="加载中...">
  338 + <ProForm.Group>
  339 + <ProFormText
  340 + name="group"
  341 + label="课题组名称"
  342 + placeholder="请输入课题组名称"
  343 + rules={[{ required: true, message: '请输入课题组名称' }]}
  344 + />
  345 + <ProFormSelect
  346 + name="leader"
  347 + key="leader"
  348 + width="lg"
  349 + showSearch
  350 + label="负责人"
  351 + placeholder="请输入课题组负责人"
  352 + rules={[{ required: true, message: '请输入课题组负责人' }]}
  353 + options={salesCodeOptions}
  354 + />
  355 + </ProForm.Group>
  356 +
  357 + <ProFormSelect
  358 + name="accounts"
  359 + key="accounts"
  360 + width="lg"
  361 + showSearch
  362 + label="绑定预存账号(可多选)"
  363 + placeholder="请选择预存账号"
  364 + onChange={(_, option) => {
  365 + autoAccountSelectOptions(option);
  366 + }}
  367 + rules={[{ required: true, message: '请至少选择绑定一个预存账号' }]}
  368 + fieldProps={{
  369 + mode: 'multiple',
  370 + filterOption() {
  371 + return true;
  372 + },
  373 + optionItemRender(item: any) {
  374 + let name =
  375 + item.label +
  376 + ' | ' +
  377 + item.institution +
  378 + ' | ' +
  379 + item.nowMoney +
  380 + '¥' +
  381 + ' | ' +
  382 + item.phone;
  383 + return (
  384 + <div title={name}>
  385 + <span style={{ color: '#333333' }}>{name}</span>
  386 + </div>
  387 + );
  388 + },
  389 + }}
  390 + debounceTime={1000}
  391 + request={async (value, {}) => {
  392 + const keywords = value.keyWords;
  393 + let body = {
  394 + keywords: keywords,
  395 + pageSize: 20,
  396 + researchGroupId: undefined,
  397 + };
  398 +
  399 + if (requestCount === 1) {
  400 + body.researchGroupId = groupId;
  401 + }
  402 +
  403 + const res = await postCanrdApiUserList({
  404 + data: body,
  405 + });
  406 + let options = res?.data?.data?.map((c: any) => {
  407 + return {
  408 + ...c,
  409 + label: c.realName,
  410 + value: c.uid,
  411 + key: c.uid,
  412 + };
  413 + });
  414 +
  415 + setRequestCount(requestCount + 1);
  416 + return options;
  417 + }}
  418 + />
  419 +
  420 + <ProFormSelect
  421 + name="members"
  422 + key="members"
  423 + width="lg"
  424 + showSearch
  425 + label="课题组成员"
  426 + placeholder="请添加课题组成员"
  427 + fieldProps={{
  428 + mode: 'multiple',
  429 + filterOption() {
  430 + return true;
  431 + },
  432 + optionItemRender(item: any) {
  433 + let name = item.realName + ' | ' + item.phone;
  434 + return (
  435 + <div title={name}>
  436 + <span style={{ color: '#333333' }}>{name}</span>
  437 + </div>
  438 + );
  439 + },
  440 + }}
  441 + options={memberOptions}
  442 + />
  443 +
  444 + <ProCard
  445 + title="选择或自定义课题组成员信息"
  446 + bordered
  447 + tooltip="从【客户信息】选择框中可以直接搜索客户,选中后自动添加到【课题组成员】中。也可以自定义输入【客户名称】和【手机号】,点击添加按钮手动添加到【课题组成员】中。"
  448 + >
  449 + <ProForm.Group>
  450 + <ProFormSelect
  451 + key="customerName"
  452 + label="客户信息(选择)"
  453 + width="lg"
  454 + showSearch
  455 + name="customerName"
  456 + placeholder="请选择客户信息"
  457 + onChange={(_, option) => {
  458 + autoFillCustomerInfo(option);
  459 + }}
  460 + fieldProps={{
  461 + filterOption() {
  462 + return true;
  463 + },
  464 + optionItemRender(item: any) {
  465 + if (item.type === 'add') {
  466 + return (
  467 + <div title={item.name + '(新增客户)'}>
  468 + <span style={{ color: '#333333' }}>{item.name}</span>
  469 + {' | '}
  470 + <span style={{ color: 'orange' }}>自定义</span>
  471 + </div>
  472 + );
  473 + }
  474 +
  475 + let title = '';
  476 + let spanText = '';
  477 + let realName = item.realName;
  478 + let phone = item.phone;
  479 +
  480 + title =
  481 + getDefaultString(realName) +
  482 + '|' +
  483 + getDefaultString(phone);
  484 +
  485 + spanText =
  486 + getDefaultString(realName) +
  487 + '|' +
  488 + getDefaultString(phone);
  489 + return (
  490 + <div title={title}>
  491 + <span style={{ color: '#333333' }}>{spanText}</span>
  492 + </div>
  493 + );
  494 + },
  495 + }}
  496 + debounceTime={1000}
  497 + request={async (value, {}) => {
  498 + const keywords = value.keyWords;
  499 + if (keywords === '') {
  500 + return [];
  501 + }
  502 + const res = await postCanrdApiUserAddressList({
  503 + data: { keywords: keywords },
  504 + });
  505 + let options = res?.data?.map((c: any) => {
  506 + return {
  507 + ...c,
  508 + label: c.name,
  509 + value: c.id,
  510 + key: c.id,
  511 + };
  512 + });
  513 +
  514 + //对options去重,realName和phone唯一
  515 + options = deduplicateOptions(options);
  516 +
  517 + //第一个商品默认为要新增客户
  518 + if (keywords.trim() !== '') {
  519 + options.unshift({
  520 + name: keywords,
  521 + type: 'add',
  522 + label: keywords,
  523 + value: 3.1415926,
  524 + key: keywords,
  525 + });
  526 + }
  527 +
  528 + return options;
  529 + }}
  530 + />
  531 + </ProForm.Group>
  532 +
  533 + <ProForm.Group>
  534 + <ProFormText
  535 + name="realName"
  536 + label="客户名称(自定义)"
  537 + placeholder="请输入客户名称"
  538 + rules={[{ required: false, message: '请输入客户名称' }]}
  539 + />
  540 + <ProFormText
  541 + name="phone"
  542 + label="手机号(自定义)"
  543 + width="md"
  544 + placeholder="请输入手机号"
  545 + rules={[{ required: false, message: '请输入手机号' }]}
  546 + />
  547 + </ProForm.Group>
  548 + <Button
  549 + type="primary"
  550 + onClick={() => {
  551 + addCustomMember();
  552 + }}
  553 + >
  554 + 添加
  555 + </Button>
  556 + </ProCard>
  557 + </Spin>
  558 + </ModalForm>
  559 + </div>
  560 + );
  561 +};
src/pages/ResearchGroup/components/ResearchGroupMemberRequestAddModal.tsx 0 → 100644
  1 +import { RESPONSE_CODE } from '@/constants/enum';
  2 +import {
  3 + postCanrdApiUserAddressList,
  4 + postResearchGroupMemberRequestsAdd,
  5 + postResearchGroupMemberRequestsDetail,
  6 + postResearchGroupMemberRequestsEdit,
  7 + postResearchGroupsDetail,
  8 + postResearchGroupsList,
  9 +} from '@/services';
  10 +import { getDefaultString, isEmpty } from '@/utils/StringUtil';
  11 +import { getRandomNumber } from '@/utils/numberUtil';
  12 +
  13 +import { validatePhoneNumberBool } from '@/utils/validators';
  14 +import {
  15 + ModalForm,
  16 + ProCard,
  17 + ProForm,
  18 + ProFormSelect,
  19 + ProFormText,
  20 + ProFormTextArea,
  21 +} from '@ant-design/pro-components';
  22 +import { Button, Form, Spin, message } from 'antd';
  23 +import { cloneDeep } from 'lodash';
  24 +import { useEffect, useState } from 'react';
  25 +import '../index.less';
  26 +
  27 +// import { cloneDeep } from 'lodash';
  28 +export default ({ setVisible, requestId, onClose }) => {
  29 + const [form] = Form.useForm();
  30 + const [memberOptions, setMemberOptions] = useState<any[]>([]);
  31 + const [requestInfo, setRequestInfo] = useState<any>(null);
  32 + const [modalLoading, setModalLoading] = useState(false);
  33 + const [groupOption, setGroupOption] = useState<any>(null);
  34 + const copyRequestId = cloneDeep(requestId);
  35 +
  36 + /**
  37 + * 获取课题组信息
  38 + * @returns
  39 + */
  40 + const loadRequestInfo = async () => {
  41 + if (copyRequestId === null) {
  42 + return;
  43 + }
  44 + setModalLoading(true);
  45 + let res = await postResearchGroupMemberRequestsDetail({
  46 + data: { id: copyRequestId },
  47 + });
  48 + if (res && res.result === RESPONSE_CODE.SUCCESS) {
  49 + setRequestInfo(res.data);
  50 + }
  51 + setModalLoading(false);
  52 + };
  53 +
  54 + /**
  55 + * 对options去重
  56 + * @param options
  57 + * @returns
  58 + */
  59 + function deduplicateOptions(options: any) {
  60 + const seen = new Set();
  61 + const result: any[] = [];
  62 + options.forEach((option: any) => {
  63 + const uniqueKey = `${option.realName}-${option.phone}`;
  64 + if (!seen.has(uniqueKey)) {
  65 + seen.add(uniqueKey);
  66 + result.push(option);
  67 + }
  68 + });
  69 + return result;
  70 + }
  71 +
  72 + /**
  73 + * 自动填充客户信息
  74 + * @param option
  75 + */
  76 + function autoFillCustomerInfo(option: any) {
  77 + if (!option) {
  78 + return;
  79 + }
  80 + let realName = option.realName;
  81 + let id = option.value;
  82 + if (id === 3.1415926) {
  83 + message.warning(
  84 + '请填写下方的【客户名称】和【手机号】,填写完成确保信息无误后点击添加按钮。',
  85 + );
  86 + form.setFieldValue('realName', option.name);
  87 + return;
  88 + }
  89 + //判断当前客户信息是否已添加过:id匹配或者option的phone匹配说明添加过了
  90 + let memberIds = form.getFieldValue('members');
  91 + if (!memberIds) {
  92 + //表单项没值的时候默认是undefined。初始化为数组
  93 + memberIds = [];
  94 + }
  95 + if (memberIds.includes(id)) {
  96 + message.info(`${realName} 重复添加`);
  97 + return;
  98 + }
  99 + //表单项的value添加当前option的value
  100 + memberIds.push(id);
  101 +
  102 + //如果是编辑,每次只保存一个
  103 + if (requestInfo !== null) {
  104 + form.setFieldValue('members', [id]);
  105 + } else {
  106 + form.setFieldValue('members', memberIds);
  107 + }
  108 +
  109 + message.success(`${realName} 添加成功`);
  110 + //判断options中是否已经有这个option
  111 + for (let memberOption of memberOptions) {
  112 + if (
  113 + memberIds.includes(memberOption.value) &&
  114 + memberOption.phone === option.phone
  115 + ) {
  116 + return;
  117 + }
  118 + }
  119 + //option添加到memberOptions中
  120 + let newMemberOptions = [...memberOptions];
  121 + newMemberOptions.push(option);
  122 + setMemberOptions(newMemberOptions);
  123 +
  124 + //清空信息
  125 + form.setFieldValue('realName', undefined);
  126 + form.setFieldValue('phone', undefined);
  127 + form.setFieldValue('customerName', null);
  128 + }
  129 +
  130 + /**
  131 + * 添加自定义成员
  132 + */
  133 + function addCustomMember() {
  134 + let realName = form.getFieldValue('realName');
  135 + let phone = form.getFieldValue('phone');
  136 + if (isEmpty(realName)) {
  137 + message.error('请填写客户名称');
  138 + }
  139 + if (isEmpty(phone)) {
  140 + message.error('请填写手机号');
  141 + }
  142 + if (!validatePhoneNumberBool(phone)) {
  143 + message.error('请填写正确格式的手机号');
  144 + return;
  145 + }
  146 + let customOption = {
  147 + value: getRandomNumber(10),
  148 + realName: realName,
  149 + phone: phone,
  150 + };
  151 + autoFillCustomerInfo(customOption);
  152 + }
  153 +
  154 + function parseFormValues(values: any) {
  155 + if (!values) {
  156 + return {};
  157 + }
  158 +
  159 + let memberIds = values.members;
  160 + values.id = copyRequestId;
  161 +
  162 + //成员对象封装
  163 + if (memberIds) {
  164 + let memberObjs: any[] = [];
  165 + for (let memberOption of memberOptions) {
  166 + if (memberIds.includes(memberOption.value)) {
  167 + memberObjs.push({
  168 + memberName: memberOption.realName,
  169 + memberPhone: memberOption.phone,
  170 + id: memberOption.id,
  171 + groupId: memberOption.groupId,
  172 + });
  173 +
  174 + values.memberName = memberOption.realName;
  175 + values.memberPhone = memberOption.phone;
  176 + }
  177 + }
  178 + values.members = memberObjs;
  179 + }
  180 +
  181 + //课题组信息封装
  182 + if (groupOption) {
  183 + values.groupName = groupOption.groupName;
  184 + }
  185 +
  186 + return values;
  187 + }
  188 +
  189 + /**
  190 + * 设置表单默认信息
  191 + * @returns
  192 + */
  193 + const loadFormDefaultValue = async () => {
  194 + if (!requestInfo) {
  195 + return;
  196 + }
  197 +
  198 + let groupId = requestInfo.groupId;
  199 + if (groupId !== null) {
  200 + let res = await postResearchGroupsDetail({ data: { id: groupId } });
  201 + if (res && res.result === RESPONSE_CODE.SUCCESS) {
  202 + setGroupOption(res.data);
  203 + }
  204 +
  205 + form.setFieldValue('groupId', groupId);
  206 + }
  207 +
  208 + form.setFieldValue('requestNotes', requestInfo.requestNotes);
  209 +
  210 + let memberName = requestInfo.memberName;
  211 + let memberPhone = requestInfo.memberPhone;
  212 +
  213 + let uid = getRandomNumber(10);
  214 + let newMemberOption = [
  215 + { realName: memberName, phone: memberPhone, uid: uid, value: uid },
  216 + ];
  217 + setMemberOptions(newMemberOption);
  218 + //编辑只能选一个member
  219 + form.setFieldValue('members', [uid]);
  220 + };
  221 +
  222 + useEffect(() => {
  223 + loadRequestInfo();
  224 + }, []);
  225 +
  226 + useEffect(() => {
  227 + loadFormDefaultValue();
  228 + }, [requestInfo]);
  229 +
  230 + return (
  231 + <div className="research-group-index">
  232 + <ModalForm
  233 + width={800}
  234 + open
  235 + title={requestInfo !== null ? '编辑申请信息' : '新增申请'}
  236 + form={form}
  237 + autoFocusFirstInput
  238 + submitter={{}}
  239 + modalProps={{
  240 + okText: '提交',
  241 + cancelText: '关闭',
  242 + destroyOnClose: true,
  243 + onCancel: () => {
  244 + setVisible(false);
  245 + },
  246 + }}
  247 + onFinish={async (values) => {
  248 + let newValues = parseFormValues(values);
  249 + let res;
  250 + if (requestInfo === null) {
  251 + res = await postResearchGroupMemberRequestsAdd({
  252 + data: newValues,
  253 + });
  254 + } else {
  255 + res = await postResearchGroupMemberRequestsEdit({
  256 + data: newValues,
  257 + });
  258 + }
  259 + if (res && res.result === RESPONSE_CODE.SUCCESS) {
  260 + message.success(res.message);
  261 + onClose();
  262 + }
  263 + }}
  264 + onOpenChange={setVisible}
  265 + >
  266 + <Spin spinning={modalLoading} tip="加载中...">
  267 + <ProForm.Group>
  268 + <ProFormSelect
  269 + name="groupId"
  270 + key="groupId"
  271 + width="lg"
  272 + showSearch
  273 + label="课题组"
  274 + placeholder="请选择课题组"
  275 + rules={[{ required: true, message: '请选择课题组' }]}
  276 + onChange={(_, option) => {
  277 + setGroupOption(option);
  278 + }}
  279 + fieldProps={{
  280 + filterOption() {
  281 + return true;
  282 + },
  283 + optionItemRender(item: any) {
  284 + let name = item.groupName + ' | ' + item.leaderName;
  285 + return (
  286 + <div title={name}>
  287 + <span style={{ color: '#333333' }}>{name}</span>
  288 + </div>
  289 + );
  290 + },
  291 + }}
  292 + debounceTime={1000}
  293 + request={async (value, {}) => {
  294 + const groupName = value.keyWords;
  295 + let body = { groupName: groupName, pageSize: 20 };
  296 +
  297 + const res = await postResearchGroupsList({
  298 + data: body,
  299 + });
  300 + let options = res?.data?.data?.map((c: any) => {
  301 + return {
  302 + ...c,
  303 + label: c.groupName,
  304 + value: c.id,
  305 + key: c.id,
  306 + };
  307 + });
  308 + return options;
  309 + }}
  310 + />
  311 + </ProForm.Group>
  312 +
  313 + <ProFormSelect
  314 + name="members"
  315 + key="members"
  316 + width="lg"
  317 + showSearch
  318 + label="课题组成员"
  319 + placeholder="请添加课题组成员"
  320 + rules={[{ required: true, message: '请至少添加一个成员' }]}
  321 + fieldProps={{
  322 + mode: 'multiple',
  323 + filterOption() {
  324 + return true;
  325 + },
  326 + optionItemRender(item: any) {
  327 + let name = item.realName + ' | ' + item.phone;
  328 + return (
  329 + <div title={name}>
  330 + <span style={{ color: '#333333' }}>{name}</span>
  331 + </div>
  332 + );
  333 + },
  334 + }}
  335 + options={memberOptions}
  336 + />
  337 +
  338 + <ProCard
  339 + title="选择或自定义课题组成员信息"
  340 + bordered
  341 + tooltip="从【客户信息】选择框中可以直接搜索客户,选中后自动添加到【课题组成员】中。也可以自定义输入【客户名称】和【手机号】,点击添加按钮手动添加到【课题组成员】中。"
  342 + >
  343 + <ProForm.Group>
  344 + <ProFormSelect
  345 + key="customerName"
  346 + label="客户信息(选择)"
  347 + width="lg"
  348 + showSearch
  349 + name="customerName"
  350 + placeholder="请选择客户信息"
  351 + onChange={(_, option) => {
  352 + autoFillCustomerInfo(option);
  353 + }}
  354 + fieldProps={{
  355 + filterOption() {
  356 + return true;
  357 + },
  358 + optionItemRender(item: any) {
  359 + if (item.type === 'add') {
  360 + return (
  361 + <div title={item.name + '(新增客户)'}>
  362 + <span style={{ color: '#333333' }}>{item.name}</span>
  363 + {' | '}
  364 + <span style={{ color: 'orange' }}>自定义</span>
  365 + </div>
  366 + );
  367 + }
  368 +
  369 + let title = '';
  370 + let spanText = '';
  371 + let realName = item.realName;
  372 + let phone = item.phone;
  373 +
  374 + title =
  375 + getDefaultString(realName) +
  376 + '|' +
  377 + getDefaultString(phone);
  378 +
  379 + spanText =
  380 + getDefaultString(realName) +
  381 + '|' +
  382 + getDefaultString(phone);
  383 + return (
  384 + <div title={title}>
  385 + <span style={{ color: '#333333' }}>{spanText}</span>
  386 + </div>
  387 + );
  388 + },
  389 + }}
  390 + debounceTime={1000}
  391 + request={async (value, {}) => {
  392 + const keywords = value.keyWords;
  393 + if (keywords === '') {
  394 + return [];
  395 + }
  396 + const res = await postCanrdApiUserAddressList({
  397 + data: { keywords: keywords },
  398 + });
  399 + let options = res?.data?.map((c: any) => {
  400 + return {
  401 + ...c,
  402 + label: c.name,
  403 + value: c.id,
  404 + key: c.id,
  405 + };
  406 + });
  407 +
  408 + //对options去重,realName和phone唯一
  409 + options = deduplicateOptions(options);
  410 +
  411 + //第一个商品默认为要新增客户
  412 + if (keywords.trim() !== '') {
  413 + options.unshift({
  414 + name: keywords,
  415 + type: 'add',
  416 + label: keywords,
  417 + value: 3.1415926,
  418 + key: keywords,
  419 + });
  420 + }
  421 +
  422 + return options;
  423 + }}
  424 + />
  425 + </ProForm.Group>
  426 +
  427 + <ProForm.Group>
  428 + <ProFormText
  429 + name="realName"
  430 + label="客户名称(自定义)"
  431 + placeholder="请输入客户名称"
  432 + rules={[{ required: false, message: '请输入客户名称' }]}
  433 + />
  434 + <ProFormText
  435 + name="phone"
  436 + label="手机号(自定义)"
  437 + width="md"
  438 + placeholder="请输入手机号"
  439 + rules={[{ required: false, message: '请输入手机号' }]}
  440 + />
  441 + </ProForm.Group>
  442 + <Button
  443 + type="primary"
  444 + onClick={() => {
  445 + addCustomMember();
  446 + }}
  447 + >
  448 + 添加
  449 + </Button>
  450 + </ProCard>
  451 +
  452 + <ProFormTextArea
  453 + name="requestNotes"
  454 + key="requestNotes"
  455 + label="申请备注"
  456 + />
  457 + </Spin>
  458 + </ModalForm>
  459 + </div>
  460 + );
  461 +};
src/pages/ResearchGroup/constant.tsx 0 → 100644
  1 +import { enumToProTableEnumValue } from '@/utils';
  2 +export const AUDIT_STATUS_OPTIONS = {
  3 + CREATED: '未审核',
  4 + AUDIT_PASS: '审核通过',
  5 + AUDIT_FAIL: '审核失败',
  6 +};
  7 +export const RESEARCH_GROUP_COLUMNS = [
  8 + {
  9 + title: '序号',
  10 + dataIndex: 'index',
  11 + valueType: 'index',
  12 + width: 70,
  13 + },
  14 + {
  15 + title: 'ID',
  16 + dataIndex: 'id',
  17 + key: 'id',
  18 + valueType: 'index',
  19 + hideInSearch: true,
  20 + hideInTable: true,
  21 + },
  22 + {
  23 + title: '课题组名称',
  24 + dataIndex: 'groupName',
  25 + key: 'groupName',
  26 + fieldProps: {
  27 + placeholder: '请输入课题组名称',
  28 + },
  29 + },
  30 + {
  31 + title: '预存账号',
  32 + dataIndex: 'accounts',
  33 + key: 'accounts',
  34 + hideInSearch: true,
  35 + },
  36 + {
  37 + title: '预存手机号',
  38 + dataIndex: 'accountPhone',
  39 + key: 'accountPhone',
  40 + hideInTable: true,
  41 + },
  42 + {
  43 + title: '成员名称',
  44 + dataIndex: 'memberName',
  45 + key: 'memberName',
  46 + hideInTable: true,
  47 + },
  48 + {
  49 + title: '成员手机号',
  50 + dataIndex: 'memberPhone',
  51 + key: 'memberPhone',
  52 + hideInTable: true,
  53 + },
  54 + {
  55 + title: '课题组成员',
  56 + dataIndex: 'members',
  57 + key: 'members',
  58 + hideInSearch: true,
  59 + },
  60 + {
  61 + title: '负责人',
  62 + dataIndex: 'leaderName',
  63 + key: 'leaderName',
  64 + fieldProps: {
  65 + placeholder: '请输入负责人姓名',
  66 + },
  67 + },
  68 + {
  69 + title: '创建时间',
  70 + dataIndex: 'createTime',
  71 + key: 'createTime',
  72 + valueType: 'dateTime',
  73 + fieldProps: {
  74 + placeholder: '请选择创建时间',
  75 + },
  76 + hideInSearch: true,
  77 + },
  78 +
  79 + {
  80 + title: '创建人',
  81 + dataIndex: 'createByName',
  82 + key: 'createByName',
  83 + fieldProps: {
  84 + placeholder: '请输入选择创建人',
  85 + },
  86 + hideInSearch: true,
  87 + },
  88 +];
  89 +
  90 +export const RESEARCH_GROUP_MEMBER_REQUEST_COLUMNS = [
  91 + {
  92 + title: '序号',
  93 + dataIndex: 'index',
  94 + valueType: 'index',
  95 + width: 70,
  96 + },
  97 + {
  98 + title: '主键ID',
  99 + dataIndex: 'id',
  100 + key: 'id',
  101 + valueType: 'index',
  102 + hideInSearch: true,
  103 + hideInTable: true,
  104 + },
  105 + {
  106 + title: '课题组名称',
  107 + dataIndex: 'groupName',
  108 + key: 'groupName',
  109 + fieldProps: {
  110 + placeholder: '请输入课题组名称',
  111 + },
  112 + },
  113 + {
  114 + title: '课题组ID',
  115 + dataIndex: 'groupId',
  116 + key: 'groupId',
  117 + hideInSearch: true,
  118 + },
  119 + {
  120 + title: '成员名称',
  121 + dataIndex: 'memberName',
  122 + key: 'memberName',
  123 + },
  124 + {
  125 + title: '成员手机号',
  126 + dataIndex: 'memberPhone',
  127 + key: 'memberPhone',
  128 + },
  129 + {
  130 + title: '申请类型',
  131 + dataIndex: 'requestType',
  132 + key: 'requestType',
  133 + fieldProps: {
  134 + placeholder: '请输入申请类型:APPEND-新增 REMOVE-删除 MODIFY-修改',
  135 + },
  136 + hideInTable: true,
  137 + hideInSearch: true,
  138 + },
  139 + {
  140 + title: '审核状态',
  141 + dataIndex: 'auditStatusText',
  142 + key: 'auditStatusText',
  143 + valueType: 'select',
  144 + hideInSearch: true,
  145 + },
  146 + {
  147 + title: '审核状态',
  148 + dataIndex: 'auditStatus',
  149 + key: 'auditStatus',
  150 + valueType: 'select',
  151 + valueEnum: enumToProTableEnumValue(AUDIT_STATUS_OPTIONS),
  152 + hideInTable: true,
  153 + },
  154 + {
  155 + title: '申请备注',
  156 + dataIndex: 'requestNotes',
  157 + key: 'requestNotes',
  158 + },
  159 + {
  160 + title: '审核备注',
  161 + dataIndex: 'auditNotes',
  162 + key: 'auditNotes',
  163 + },
  164 + {
  165 + title: '创建时间',
  166 + dataIndex: 'createTime',
  167 + key: 'createTime',
  168 + valueType: 'dateTime',
  169 + fieldProps: {
  170 + placeholder: '请选择创建时间',
  171 + },
  172 + hideInSearch: true,
  173 + },
  174 + {
  175 + title: '创建人',
  176 + dataIndex: 'createByName',
  177 + key: 'createByName',
  178 + fieldProps: {
  179 + placeholder: '请输入创建人',
  180 + },
  181 + hideInSearch: true,
  182 + },
  183 +];
src/pages/ResearchGroup/index.less 0 → 100644
  1 +.research-group-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/ResearchGroup/index.tsx 0 → 100644
  1 +import ButtonConfirm from '@/components/ButtomConfirm';
  2 +import EllipsisDiv from '@/components/Div/EllipsisDiv';
  3 +import { RESPONSE_CODE } from '@/constants/enum';
  4 +import {} from '@/pages/Invoice/constant';
  5 +import {
  6 + postCanrdApiUserDetail,
  7 + postResearchGroupMemberRequestsDelete,
  8 + postResearchGroupMemberRequestsList,
  9 + postResearchGroupsDelete,
  10 + postResearchGroupsList,
  11 +} from '@/services';
  12 +import { formatDateTime } from '@/utils';
  13 +import { PlusOutlined } from '@ant-design/icons';
  14 +import { ActionType, ProTable } from '@ant-design/pro-components';
  15 +import {
  16 + Button,
  17 + Col,
  18 + Divider,
  19 + Image,
  20 + Popconfirm,
  21 + Row,
  22 + Space,
  23 + Spin,
  24 + Table,
  25 + Tabs,
  26 + Tag,
  27 + message,
  28 +} from 'antd';
  29 +import React, { useRef, useState } from 'react';
  30 +import AuditModal from './components/AuditModal';
  31 +import ImportModal from './components/ImportModal';
  32 +import ResearchGroupAddModal from './components/ResearchGroupAddModal';
  33 +import ResearchGroupMemberRequestAddModal from './components/ResearchGroupMemberRequestAddModal';
  34 +import {
  35 + RESEARCH_GROUP_COLUMNS,
  36 + RESEARCH_GROUP_MEMBER_REQUEST_COLUMNS,
  37 +} from './constant';
  38 +import './index.less';
  39 +const PrepaidPage = () => {
  40 + const researchGroupActionRef = useRef<ActionType>();
  41 + const memberApplyActionRef = useRef<ActionType>();
  42 + const [researchGroupAddModalVisible, setResearchGroupAddModalVisible] =
  43 + useState(false);
  44 + const [importModalVisible, setImportModalVisible] = useState(false);
  45 + const [auditIds, setAuditIds] = useState<any[]>([]);
  46 + const [auditModalVisible, setAuditModalVisible] = useState(false);
  47 + const [
  48 + researchGroupMemberRequestAddModalVisible,
  49 + setResearchGroupMemberRequestAddModalVisible,
  50 + ] = useState(false);
  51 + // const [checkVisible, setCheckVisible] = useState(false);
  52 + const [accountInfo, setAccountInfo] = useState({
  53 + realName: '',
  54 + phone: '',
  55 + nowMoney: '',
  56 + uid: '',
  57 + });
  58 + const [accountInfoLoading, setAccountInfoLoading] = useState(false);
  59 + const [perms, setPerms] = useState<string[]>([]);
  60 + const [optRecordId, setOptRecordId] = useState<any>(null);
  61 +
  62 + const reloadResearchGroupTable = () => {
  63 + researchGroupActionRef.current?.reload();
  64 + };
  65 +
  66 + const reloadMemberApplyTable = () => {
  67 + memberApplyActionRef.current?.reload();
  68 + };
  69 +
  70 + // const getTableCellText = (target: any) => {
  71 + // if (!target) {
  72 + // return '';
  73 + // }
  74 +
  75 + // if (target.props) {
  76 + // return target.props.text;
  77 + // }
  78 +
  79 + // return target;
  80 + // };
  81 +
  82 + const renderMembersCell = (value: any) => {
  83 + if (!value) {
  84 + return <span></span>;
  85 + }
  86 + let tags = value.map((item: any) => {
  87 + let memberName = item.memberName;
  88 + let memberPhone = item.memberPhone;
  89 + return (
  90 + <Tag
  91 + className="mt-1 mb-0"
  92 + key={item.id}
  93 + color="cyan"
  94 + title={memberName + ' | ' + memberPhone}
  95 + >
  96 + {memberName}
  97 + </Tag>
  98 + );
  99 + });
  100 + return <div className="whitespace-normal">{tags}</div>;
  101 + };
  102 +
  103 + /**
  104 + * 获取预存账号信息
  105 + * @param accountId
  106 + */
  107 + const loadAccountInfo = async (accountId: any, phone: any) => {
  108 + setAccountInfoLoading(true);
  109 + let res = await postCanrdApiUserDetail({
  110 + data: { uid: accountId, phone: phone },
  111 + });
  112 + if (res && res.result === RESPONSE_CODE.SUCCESS && res.data !== null) {
  113 + setAccountInfo(res.data);
  114 + } else {
  115 + setAccountInfo({
  116 + realName: '加载失败',
  117 + phone: '加载失败',
  118 + nowMoney: '加载失败',
  119 + uid: '加载失败',
  120 + });
  121 + }
  122 + setAccountInfoLoading(false);
  123 + };
  124 +
  125 + const renderAccountsCell = (value: any) => {
  126 + if (!value) {
  127 + return <span></span>;
  128 + }
  129 +
  130 + return (
  131 + <div className="whitespace-normal">
  132 + {value.map((item: any) => {
  133 + let accountPhone = item.accountPhone;
  134 + let accountName = item.accountName;
  135 + let accountId = item.accountId;
  136 + return (
  137 + <Popconfirm
  138 + key={item.id}
  139 + title="账号详情"
  140 + description={
  141 + <div className="w-[170px]">
  142 + {accountInfoLoading ? (
  143 + <div>
  144 + <Spin />
  145 + </div>
  146 + ) : (
  147 + <div>
  148 + <Row gutter={4}>
  149 + <Col span={10}>
  150 + <div>编号:</div>
  151 + </Col>
  152 + <Col span={14}>
  153 + <div>{accountInfo.uid}</div>
  154 + </Col>
  155 + </Row>
  156 + <Row gutter={4}>
  157 + <Col span={10}>
  158 + <div>名称:</div>
  159 + </Col>
  160 + <Col span={14}>
  161 + <div>{accountInfo.realName}</div>
  162 + </Col>
  163 + </Row>
  164 + <Row gutter={4}>
  165 + <Col span={10}>
  166 + <div>手机号:</div>
  167 + </Col>
  168 + <Col span={14}>
  169 + <EllipsisDiv text={accountInfo.phone} />
  170 + </Col>
  171 + </Row>
  172 + <Row gutter={4}>
  173 + <Col span={10}>
  174 + <div>余额:</div>
  175 + </Col>
  176 + <Col span={14}>
  177 + <div>{accountInfo.nowMoney}</div>
  178 + </Col>
  179 + </Row>
  180 + </div>
  181 + )}
  182 + </div>
  183 + }
  184 + cancelButtonProps={{
  185 + hidden: true,
  186 + }}
  187 + okButtonProps={{
  188 + hidden: true,
  189 + }}
  190 + >
  191 + <Tag
  192 + className="mt-1 mb-0 hover:cursor-pointer"
  193 + color="geekblue"
  194 + title={accountName + ' | ' + accountPhone}
  195 + onClick={() => {
  196 + loadAccountInfo(accountId, accountPhone);
  197 + }}
  198 + >
  199 + {accountName}
  200 + </Tag>
  201 + </Popconfirm>
  202 + );
  203 + })}
  204 + </div>
  205 + );
  206 + };
  207 +
  208 + /**
  209 + * 删除课题组信息
  210 + * @param ids
  211 + */
  212 + const doDeleteResearchGroup = async (ids: any[]) => {
  213 + let res = await postResearchGroupsDelete({
  214 + data: { ids: ids },
  215 + });
  216 + if (res && res.result === RESPONSE_CODE.SUCCESS) {
  217 + message.success(res.message);
  218 + reloadResearchGroupTable();
  219 + }
  220 + };
  221 +
  222 + /**
  223 + * 删除课题组信息
  224 + * @param ids
  225 + */
  226 + const doDeleteRequest = async (ids: any[]) => {
  227 + let res = await postResearchGroupMemberRequestsDelete({
  228 + data: { ids: ids },
  229 + });
  230 + if (res && res.result === RESPONSE_CODE.SUCCESS) {
  231 + message.success(res.message);
  232 + reloadMemberApplyTable();
  233 + }
  234 + };
  235 +
  236 + /**
  237 + * 加载课题组列表表格的各个列格式
  238 + */
  239 + const researchGroupColumnsInit = () => {
  240 + let columns = RESEARCH_GROUP_COLUMNS.map((item) => {
  241 + let newItem = { ...item };
  242 + let dataIndex = item.dataIndex;
  243 +
  244 + newItem.render = (text, record, index) => {
  245 + let textValue = record[dataIndex];
  246 +
  247 + if (dataIndex.endsWith('Time')) {
  248 + textValue = formatDateTime(textValue);
  249 + }
  250 +
  251 + if (dataIndex === 'members') {
  252 + return renderMembersCell(textValue);
  253 + }
  254 +
  255 + if (dataIndex === 'accounts') {
  256 + return renderAccountsCell(textValue);
  257 + }
  258 +
  259 + if (dataIndex === 'index') {
  260 + textValue = index + 1;
  261 + }
  262 +
  263 + if (
  264 + dataIndex === 'proofImages' &&
  265 + textValue !== null &&
  266 + textValue !== undefined
  267 + ) {
  268 + return (
  269 + <Image.PreviewGroup
  270 + className="mr-10"
  271 + preview={{
  272 + onChange: (current, prev) =>
  273 + console.log(`current index: ${current}, prev index: ${prev}`),
  274 + }}
  275 + >
  276 + {textValue.map((item, index) => (
  277 + <React.Fragment key={index}>
  278 + {index > 0 ? <Divider type="vertical" /> : ''}
  279 + <Image
  280 + className="max-h-[35px] max-w-[45px]"
  281 + src={item}
  282 + title={item}
  283 + />{' '}
  284 + </React.Fragment>
  285 + ))}
  286 + </Image.PreviewGroup>
  287 + );
  288 + }
  289 +
  290 + return <EllipsisDiv text={textValue} />;
  291 + };
  292 +
  293 + return newItem;
  294 + });
  295 +
  296 + columns.push({
  297 + title: '操作',
  298 + valueType: 'option',
  299 + key: 'option',
  300 + fixed: 'right',
  301 + width: 120,
  302 + render: (text, record) => {
  303 + let btns = [];
  304 + if (perms?.includes('modify')) {
  305 + btns.push(
  306 + <Button
  307 + className="p-0"
  308 + key="modify"
  309 + type="link"
  310 + onClick={() => {
  311 + setResearchGroupAddModalVisible(true);
  312 + setOptRecordId(record?.id);
  313 + }}
  314 + >
  315 + 编辑
  316 + </Button>,
  317 + );
  318 + }
  319 +
  320 + if (perms?.includes('delete')) {
  321 + btns.push(
  322 + <ButtonConfirm
  323 + key="delete"
  324 + className="p-0"
  325 + title={'确认删除这个课题组吗?'}
  326 + text="删除"
  327 + onConfirm={async () => {
  328 + doDeleteResearchGroup([record.id]);
  329 + }}
  330 + />,
  331 + );
  332 + }
  333 + return btns;
  334 + },
  335 + });
  336 +
  337 + return columns;
  338 + };
  339 +
  340 + /**
  341 + * 加载申请列表表格的各个列格式
  342 + */
  343 + const memberApplyColumnsInit = () => {
  344 + let columns = RESEARCH_GROUP_MEMBER_REQUEST_COLUMNS.map((item) => {
  345 + let newItem = { ...item };
  346 + let dataIndex = item.dataIndex;
  347 +
  348 + newItem.render = (text, record, index) => {
  349 + let textValue = record[dataIndex];
  350 +
  351 + if (dataIndex.endsWith('Time')) {
  352 + textValue = formatDateTime(textValue);
  353 + }
  354 +
  355 + if (dataIndex === 'members') {
  356 + return renderMembersCell(textValue);
  357 + }
  358 +
  359 + if (dataIndex === 'accounts') {
  360 + return renderAccountsCell(textValue);
  361 + }
  362 +
  363 + if (dataIndex === 'index') {
  364 + textValue = index + 1;
  365 + }
  366 +
  367 + if (
  368 + dataIndex === 'proofImages' &&
  369 + textValue !== null &&
  370 + textValue !== undefined
  371 + ) {
  372 + return (
  373 + <Image.PreviewGroup
  374 + className="mr-10"
  375 + preview={{
  376 + onChange: (current, prev) =>
  377 + console.log(`current index: ${current}, prev index: ${prev}`),
  378 + }}
  379 + >
  380 + {textValue.map((item, index) => (
  381 + <React.Fragment key={index}>
  382 + {index > 0 ? <Divider type="vertical" /> : ''}
  383 + <Image
  384 + className="max-h-[35px] max-w-[45px]"
  385 + src={item}
  386 + title={item}
  387 + />{' '}
  388 + </React.Fragment>
  389 + ))}
  390 + </Image.PreviewGroup>
  391 + );
  392 + }
  393 +
  394 + return <EllipsisDiv text={textValue} />;
  395 + };
  396 +
  397 + return newItem;
  398 + });
  399 +
  400 + columns.push({
  401 + title: '操作',
  402 + valueType: 'option',
  403 + key: 'option',
  404 + fixed: 'right',
  405 + width: 120,
  406 + render: (text, record) => {
  407 + let btns = [];
  408 + if (record.permissions?.includes('modify')) {
  409 + btns.push(
  410 + <Button
  411 + className="p-0"
  412 + key="modify"
  413 + type="link"
  414 + onClick={() => {
  415 + setResearchGroupMemberRequestAddModalVisible(true);
  416 + setOptRecordId(record?.id);
  417 + }}
  418 + >
  419 + 编辑
  420 + </Button>,
  421 + );
  422 + }
  423 +
  424 + if (record.permissions?.includes('delete')) {
  425 + btns.push(
  426 + <ButtonConfirm
  427 + key="delete"
  428 + className="p-0"
  429 + title={'确认删除这个申请吗?'}
  430 + text="删除"
  431 + onConfirm={async () => {
  432 + doDeleteRequest([record.id]);
  433 + }}
  434 + />,
  435 + );
  436 + }
  437 +
  438 + if (record.permissions?.includes('audit')) {
  439 + btns.push(
  440 + <Button
  441 + key="delete"
  442 + className="p-0"
  443 + type="link"
  444 + onClick={async () => {
  445 + setAuditIds([record.id]);
  446 + setAuditModalVisible(true);
  447 + }}
  448 + >
  449 + 审核
  450 + </Button>,
  451 + );
  452 + }
  453 + return btns;
  454 + },
  455 + });
  456 +
  457 + return columns;
  458 + };
  459 +
  460 + const tabsItems = [
  461 + {
  462 + key: 1,
  463 + label: '课题组列表',
  464 + children: (
  465 + <ProTable
  466 + columns={researchGroupColumnsInit()}
  467 + actionRef={researchGroupActionRef}
  468 + cardBordered
  469 + pagination={{
  470 + pageSize: 10,
  471 + }}
  472 + request={async (params) => {
  473 + const res = await postResearchGroupsList({
  474 + data: { ...params },
  475 + });
  476 + setPerms(res.data.specialPath);
  477 + return {
  478 + data: res?.data?.data || [],
  479 + total: res?.data?.total || 0,
  480 + };
  481 + }}
  482 + columnsState={{
  483 + persistenceKey: 'pro-table-singe-research-group',
  484 + persistenceType: 'localStorage',
  485 + defaultValue: {
  486 + option: { fixed: 'right', disable: true },
  487 + },
  488 + onChange(value) {
  489 + console.log('value: ', value);
  490 + },
  491 + }}
  492 + rowKey="id"
  493 + search={{
  494 + labelWidth: 'auto',
  495 + }}
  496 + options={{
  497 + setting: {
  498 + listsHeight: 400,
  499 + },
  500 + }}
  501 + form={{}}
  502 + dateFormatter="string"
  503 + headerTitle="课题组列表"
  504 + scroll={{ x: 1400 }}
  505 + toolBarRender={() => {
  506 + let btns = [];
  507 + if (perms?.includes('add')) {
  508 + btns.push(
  509 + <Button
  510 + key="button"
  511 + icon={<PlusOutlined />}
  512 + onClick={() => {
  513 + setResearchGroupAddModalVisible(true);
  514 + }}
  515 + type="primary"
  516 + >
  517 + 新建
  518 + </Button>,
  519 + );
  520 + }
  521 +
  522 + if (perms?.includes('import')) {
  523 + btns.push(
  524 + <Button
  525 + key="button"
  526 + icon={<PlusOutlined />}
  527 + onClick={() => {
  528 + setImportModalVisible(true);
  529 + }}
  530 + type="primary"
  531 + >
  532 + 批量导入
  533 + </Button>,
  534 + );
  535 + }
  536 +
  537 + return btns;
  538 + }}
  539 + rowSelection={{
  540 + // 自定义选择项参考: https://ant.design/components/table-cn/#components-table-demo-row-selection-custom
  541 + // 注释该行则默认不显示下拉选项
  542 + selections: [Table.SELECTION_ALL, Table.SELECTION_INVERT],
  543 + defaultSelectedRowKeys: [],
  544 + }}
  545 + tableAlertOptionRender={({ selectedRows, onCleanSelected }) => {
  546 + let ids = selectedRows.map((item: any) => {
  547 + return item.id;
  548 + });
  549 + return (
  550 + <Space size={16}>
  551 + <ButtonConfirm
  552 + title="确认删除所选中的课题组信息吗?"
  553 + text="批量删除"
  554 + onConfirm={() => {
  555 + doDeleteResearchGroup(ids);
  556 + onCleanSelected();
  557 + }}
  558 + />
  559 +
  560 + <Button type="link" onClick={onCleanSelected}>
  561 + 取消选中
  562 + </Button>
  563 + </Space>
  564 + );
  565 + }}
  566 + />
  567 + ),
  568 + },
  569 + {
  570 + key: 2,
  571 + label: '申请列表',
  572 + children: (
  573 + <ProTable
  574 + columns={memberApplyColumnsInit()}
  575 + actionRef={memberApplyActionRef}
  576 + cardBordered
  577 + pagination={{
  578 + pageSize: 10,
  579 + }}
  580 + request={async (params) => {
  581 + const res = await postResearchGroupMemberRequestsList({
  582 + data: { ...params },
  583 + });
  584 + setPerms(res.data.specialPath);
  585 + return {
  586 + data: res?.data?.data || [],
  587 + total: res?.data?.total || 0,
  588 + };
  589 + }}
  590 + columnsState={{
  591 + persistenceKey: 'pro-table-singe-research-group',
  592 + persistenceType: 'localStorage',
  593 + defaultValue: {
  594 + option: { fixed: 'right', disable: true },
  595 + },
  596 + onChange(value) {
  597 + console.log('value: ', value);
  598 + },
  599 + }}
  600 + rowKey="id"
  601 + search={{
  602 + labelWidth: 'auto',
  603 + }}
  604 + options={{
  605 + setting: {
  606 + listsHeight: 400,
  607 + },
  608 + }}
  609 + form={{}}
  610 + dateFormatter="string"
  611 + headerTitle="申请列表"
  612 + scroll={{ x: 1400 }}
  613 + toolBarRender={() => {
  614 + let btns = [];
  615 + btns.push(
  616 + <Button
  617 + key="button"
  618 + icon={<PlusOutlined />}
  619 + onClick={() => {
  620 + setResearchGroupMemberRequestAddModalVisible(true);
  621 + }}
  622 + type="primary"
  623 + >
  624 + 新建
  625 + </Button>,
  626 + );
  627 + return btns;
  628 + }}
  629 + rowSelection={{
  630 + // 自定义选择项参考: https://ant.design/components/table-cn/#components-table-demo-row-selection-custom
  631 + // 注释该行则默认不显示下拉选项
  632 + selections: [Table.SELECTION_ALL, Table.SELECTION_INVERT],
  633 + defaultSelectedRowKeys: [],
  634 + }}
  635 + tableAlertOptionRender={({ selectedRows, onCleanSelected }) => {
  636 + let ids = selectedRows.map((item: any) => {
  637 + return item.id;
  638 + });
  639 + return (
  640 + <Space size={16}>
  641 + <ButtonConfirm
  642 + title="确认删除所选中的课题组信息吗?"
  643 + text="批量删除"
  644 + onConfirm={() => {
  645 + doDeleteRequest(ids);
  646 + onCleanSelected();
  647 + }}
  648 + />
  649 + <Button
  650 + key="delete"
  651 + className="p-0"
  652 + type="link"
  653 + onClick={async () => {
  654 + setAuditIds(ids);
  655 + setAuditModalVisible(true);
  656 + }}
  657 + >
  658 + 批量审核
  659 + </Button>
  660 + <Button type="link" onClick={onCleanSelected}>
  661 + 取消选中
  662 + </Button>
  663 + </Space>
  664 + );
  665 + }}
  666 + />
  667 + ),
  668 + },
  669 + ];
  670 + return (
  671 + <div className="research-group-index">
  672 + <Tabs
  673 + defaultActiveKey="1"
  674 + items={tabsItems}
  675 + onChange={(value) => {
  676 + if (value === 1) {
  677 + reloadResearchGroupTable();
  678 + } else {
  679 + reloadMemberApplyTable();
  680 + }
  681 + }}
  682 + />
  683 +
  684 + {researchGroupAddModalVisible && (
  685 + <ResearchGroupAddModal
  686 + setVisible={(val: boolean) => {
  687 + setResearchGroupAddModalVisible(val);
  688 + if (!val) {
  689 + setOptRecordId(null);
  690 + }
  691 + }}
  692 + researchGroupId={optRecordId}
  693 + onClose={() => {
  694 + setResearchGroupAddModalVisible(false);
  695 + setOptRecordId(null);
  696 + reloadResearchGroupTable();
  697 + }}
  698 + />
  699 + )}
  700 +
  701 + {researchGroupMemberRequestAddModalVisible && (
  702 + <ResearchGroupMemberRequestAddModal
  703 + setVisible={(val: boolean) => {
  704 + setResearchGroupMemberRequestAddModalVisible(val);
  705 + if (!val) {
  706 + setOptRecordId(null);
  707 + }
  708 + }}
  709 + requestId={optRecordId}
  710 + onClose={() => {
  711 + setResearchGroupMemberRequestAddModalVisible(false);
  712 + setOptRecordId(null);
  713 + reloadMemberApplyTable();
  714 + }}
  715 + />
  716 + )}
  717 +
  718 + {auditModalVisible && (
  719 + <AuditModal
  720 + setVisible={(val: boolean) => {
  721 + setAuditModalVisible(val);
  722 + if (!val) {
  723 + setOptRecordId(null);
  724 + }
  725 + }}
  726 + ids={auditIds}
  727 + onClose={() => {
  728 + setAuditModalVisible(false);
  729 + setAuditIds([]);
  730 + reloadMemberApplyTable();
  731 + }}
  732 + />
  733 + )}
  734 +
  735 + {importModalVisible && (
  736 + <ImportModal
  737 + onClose={() => {
  738 + setImportModalVisible(false);
  739 + reloadMemberApplyTable();
  740 + }}
  741 + />
  742 + )}
  743 + </div>
  744 + );
  745 +};
  746 +
  747 +export default PrepaidPage;
src/services/definition.ts
@@ -86,6 +86,8 @@ export interface AdminAuthUserVO { @@ -86,6 +86,8 @@ export interface AdminAuthUserVO {
86 export interface AdminDeptQueryVO { 86 export interface AdminDeptQueryVO {
87 /** @format int32 */ 87 /** @format int32 */
88 current?: number; 88 current?: number;
  89 + /** @format int32 */
  90 + end?: number;
89 /** @format int64 */ 91 /** @format int64 */
90 id?: number; 92 id?: number;
91 ids?: Array<number>; 93 ids?: Array<number>;
@@ -95,6 +97,8 @@ export interface AdminDeptQueryVO { @@ -95,6 +97,8 @@ export interface AdminDeptQueryVO {
95 /** @format int64 */ 97 /** @format int64 */
96 pid?: number; 98 pid?: number;
97 /** @format int32 */ 99 /** @format int32 */
  100 + start?: number;
  101 + /** @format int32 */
98 total?: number; 102 total?: number;
99 } 103 }
100 104
@@ -109,6 +113,8 @@ export interface AdminDeptVO { @@ -109,6 +113,8 @@ export interface AdminDeptVO {
109 export interface AdminJobQueryVO { 113 export interface AdminJobQueryVO {
110 /** @format int32 */ 114 /** @format int32 */
111 current?: number; 115 current?: number;
  116 + /** @format int32 */
  117 + end?: number;
112 /** @format int64 */ 118 /** @format int64 */
113 id?: number; 119 id?: number;
114 ids?: Array<number>; 120 ids?: Array<number>;
@@ -118,6 +124,8 @@ export interface AdminJobQueryVO { @@ -118,6 +124,8 @@ export interface AdminJobQueryVO {
118 /** @format int32 */ 124 /** @format int32 */
119 sort?: number; 125 sort?: number;
120 /** @format int32 */ 126 /** @format int32 */
  127 + start?: number;
  128 + /** @format int32 */
121 total?: number; 129 total?: number;
122 } 130 }
123 131
@@ -136,6 +144,8 @@ export interface AdminMenuQueryVO { @@ -136,6 +144,8 @@ export interface AdminMenuQueryVO {
136 /** @format int32 */ 144 /** @format int32 */
137 current?: number; 145 current?: number;
138 /** @format int32 */ 146 /** @format int32 */
  147 + end?: number;
  148 + /** @format int32 */
139 hidden?: number; 149 hidden?: number;
140 icon?: string; 150 icon?: string;
141 /** @format int64 */ 151 /** @format int64 */
@@ -151,6 +161,8 @@ export interface AdminMenuQueryVO { @@ -151,6 +161,8 @@ export interface AdminMenuQueryVO {
151 /** @format int64 */ 161 /** @format int64 */
152 pid?: number; 162 pid?: number;
153 /** @format int32 */ 163 /** @format int32 */
  164 + start?: number;
  165 + /** @format int32 */
154 total?: number; 166 total?: number;
155 /** @format int32 */ 167 /** @format int32 */
156 type?: number; 168 type?: number;
@@ -181,6 +193,8 @@ export interface AdminRoleQueryVO { @@ -181,6 +193,8 @@ export interface AdminRoleQueryVO {
181 /** @format int32 */ 193 /** @format int32 */
182 current?: number; 194 current?: number;
183 dataScope?: string; 195 dataScope?: string;
  196 + /** @format int32 */
  197 + end?: number;
184 /** @format int64 */ 198 /** @format int64 */
185 id?: number; 199 id?: number;
186 ids?: Array<number>; 200 ids?: Array<number>;
@@ -192,6 +206,8 @@ export interface AdminRoleQueryVO { @@ -192,6 +206,8 @@ export interface AdminRoleQueryVO {
192 permission?: string; 206 permission?: string;
193 remark?: string; 207 remark?: string;
194 /** @format int32 */ 208 /** @format int32 */
  209 + start?: number;
  210 + /** @format int32 */
195 total?: number; 211 total?: number;
196 } 212 }
197 213
@@ -209,22 +225,30 @@ export interface AdminUserLoginByPhoneVO { @@ -209,22 +225,30 @@ export interface AdminUserLoginByPhoneVO {
209 /** @format int32 */ 225 /** @format int32 */
210 current?: number; 226 current?: number;
211 /** @format int32 */ 227 /** @format int32 */
  228 + end?: number;
  229 + /** @format int32 */
212 pageSize?: number; 230 pageSize?: number;
213 phone?: string; 231 phone?: string;
214 smsCaptchaCode?: string; 232 smsCaptchaCode?: string;
215 /** @format int32 */ 233 /** @format int32 */
  234 + start?: number;
  235 + /** @format int32 */
216 total?: number; 236 total?: number;
217 } 237 }
218 238
219 export interface AdminUserLoginByPwdVO { 239 export interface AdminUserLoginByPwdVO {
220 /** @format int32 */ 240 /** @format int32 */
221 current?: number; 241 current?: number;
  242 + /** @format int32 */
  243 + end?: number;
222 imgCaptchaCode?: string; 244 imgCaptchaCode?: string;
223 imgCaptchaUuid?: string; 245 imgCaptchaUuid?: string;
224 /** @format int32 */ 246 /** @format int32 */
225 pageSize?: number; 247 pageSize?: number;
226 password?: string; 248 password?: string;
227 /** @format int32 */ 249 /** @format int32 */
  250 + start?: number;
  251 + /** @format int32 */
228 total?: number; 252 total?: number;
229 userName?: string; 253 userName?: string;
230 } 254 }
@@ -234,11 +258,15 @@ export interface AdminUserModifyPwdVO { @@ -234,11 +258,15 @@ export interface AdminUserModifyPwdVO {
234 /** @format int32 */ 258 /** @format int32 */
235 current?: number; 259 current?: number;
236 /** @format int32 */ 260 /** @format int32 */
  261 + end?: number;
  262 + /** @format int32 */
237 pageSize?: number; 263 pageSize?: number;
238 password?: string; 264 password?: string;
239 phone?: string; 265 phone?: string;
240 smsCaptchaCode?: string; 266 smsCaptchaCode?: string;
241 /** @format int32 */ 267 /** @format int32 */
  268 + start?: number;
  269 + /** @format int32 */
242 total?: number; 270 total?: number;
243 } 271 }
244 272
@@ -246,8 +274,12 @@ export interface AdminUserPasswordRecoverEmailVO { @@ -246,8 +274,12 @@ export interface AdminUserPasswordRecoverEmailVO {
246 /** @format int32 */ 274 /** @format int32 */
247 current?: number; 275 current?: number;
248 /** @format int32 */ 276 /** @format int32 */
  277 + end?: number;
  278 + /** @format int32 */
249 pageSize?: number; 279 pageSize?: number;
250 /** @format int32 */ 280 /** @format int32 */
  281 + start?: number;
  282 + /** @format int32 */
251 total?: number; 283 total?: number;
252 userName?: string; 284 userName?: string;
253 } 285 }
@@ -256,6 +288,8 @@ export interface AdminUserQueryVO { @@ -256,6 +288,8 @@ export interface AdminUserQueryVO {
256 /** @format int32 */ 288 /** @format int32 */
257 current?: number; 289 current?: number;
258 email?: string; 290 email?: string;
  291 + /** @format int32 */
  292 + end?: number;
259 /** @format int64 */ 293 /** @format int64 */
260 id?: number; 294 id?: number;
261 ids?: Array<number>; 295 ids?: Array<number>;
@@ -266,6 +300,8 @@ export interface AdminUserQueryVO { @@ -266,6 +300,8 @@ export interface AdminUserQueryVO {
266 phone?: string; 300 phone?: string;
267 sex?: string; 301 sex?: string;
268 /** @format int32 */ 302 /** @format int32 */
  303 + start?: number;
  304 + /** @format int32 */
269 total?: number; 305 total?: number;
270 userName?: string; 306 userName?: string;
271 workerType?: string; 307 workerType?: string;
@@ -276,6 +312,8 @@ export interface AdminUserRegisterVO { @@ -276,6 +312,8 @@ export interface AdminUserRegisterVO {
276 /** @format int32 */ 312 /** @format int32 */
277 current?: number; 313 current?: number;
278 email?: string; 314 email?: string;
  315 + /** @format int32 */
  316 + end?: number;
279 isAgreeAgreement?: boolean; 317 isAgreeAgreement?: boolean;
280 /** @format int32 */ 318 /** @format int32 */
281 pageSize?: number; 319 pageSize?: number;
@@ -285,6 +323,8 @@ export interface AdminUserRegisterVO { @@ -285,6 +323,8 @@ export interface AdminUserRegisterVO {
285 safeQuestion?: string; 323 safeQuestion?: string;
286 smsCaptchaCode?: string; 324 smsCaptchaCode?: string;
287 /** @format int32 */ 325 /** @format int32 */
  326 + start?: number;
  327 + /** @format int32 */
288 total?: number; 328 total?: number;
289 userName?: string; 329 userName?: string;
290 } 330 }
@@ -480,8 +520,12 @@ export interface ApiOrderCustomersRequest { @@ -480,8 +520,12 @@ export interface ApiOrderCustomersRequest {
480 /** @format int32 */ 520 /** @format int32 */
481 current?: number; 521 current?: number;
482 /** @format int32 */ 522 /** @format int32 */
  523 + end?: number;
  524 + /** @format int32 */
483 pageSize?: number; 525 pageSize?: number;
484 /** @format int32 */ 526 /** @format int32 */
  527 + start?: number;
  528 + /** @format int32 */
485 total?: number; 529 total?: number;
486 } 530 }
487 531
@@ -528,220 +572,6 @@ export interface ApiQueryOrderStatusCountsRequest { @@ -528,220 +572,6 @@ export interface ApiQueryOrderStatusCountsRequest {
528 uid?: number; 572 uid?: number;
529 } 573 }
530 574
531 -export interface ApplyInvoiceDto {  
532 - /**  
533 - * @description  
534 - * 备注  
535 - */  
536 - applyInvoicingNotes?: string;  
537 - /**  
538 - * @description  
539 - * 开票备注  
540 - */  
541 - comment?: string;  
542 - /**  
543 - * @description  
544 - * 联系人  
545 - */  
546 - contacts?: string;  
547 - /**  
548 - * @description  
549 - * 开票内容  
550 - */  
551 - content?: string;  
552 - createByName?: string;  
553 - /** @format date-time */  
554 - createTime?: string;  
555 - /**  
556 - * @description  
557 - * id  
558 - * @format int64  
559 - */  
560 - id?: number;  
561 - /**  
562 - * @description  
563 - * 发票地址  
564 - */  
565 - invoiceAddress?: string;  
566 - /**  
567 - * @description  
568 - * 发票明细  
569 - */  
570 - invoiceDetails?: Array<InvoiceDetail>;  
571 - /**  
572 - * @description  
573 - * 关联发票id  
574 - */  
575 - invoiceId?: string;  
576 - /**  
577 - * @description  
578 - * 发票号码  
579 - */  
580 - invoiceNumber?: string;  
581 - /**  
582 - * @description  
583 - * 开票人  
584 - */  
585 - invoicingPerson?: string;  
586 - /**  
587 - * @description  
588 - * 开票时间  
589 - * @format date-time  
590 - */  
591 - invoicingTime?: string;  
592 - /**  
593 - * @description  
594 - * 开具类型  
595 - */  
596 - invoicingType?: string;  
597 - /**  
598 - * @description  
599 - * 开具类型  
600 - */  
601 - invoicingTypeText?: string;  
602 - /** @format date */  
603 - invoicingdate?: string;  
604 - /**  
605 - * @description  
606 - * 是否加急  
607 - */  
608 - isUrgent?: boolean;  
609 - /**  
610 - * @description  
611 - * 是否加急文本  
612 - */  
613 - isUrgentText?: string;  
614 - logicDelete?: boolean;  
615 - /**  
616 - * @description  
617 - * 买方注册地址  
618 - */  
619 - partyAAddress?: string;  
620 - /**  
621 - * @description  
622 - * 买方开户行账号  
623 - */  
624 - partyABankAccount?: string;  
625 - /**  
626 - * @description  
627 - * 买方名称  
628 - */  
629 - partyAName?: string;  
630 - /**  
631 - * @description  
632 - * 买方开户行  
633 - */  
634 - partyAOpenBank?: string;  
635 - /**  
636 - * @description  
637 - * 买方电话号码  
638 - */  
639 - partyAPhoneNumber?: string;  
640 - /**  
641 - * @description  
642 - * 买方税号  
643 - */  
644 - partyATaxid?: string;  
645 - /**  
646 - * @description  
647 - * 抬头类型  
648 - */  
649 - partyAType?: string;  
650 - partyB?: string;  
651 - /**  
652 - * @description  
653 - * 卖方注册地址  
654 - */  
655 - partyBAddress?: string;  
656 - /**  
657 - * @description  
658 - * 卖方开户行账号  
659 - */  
660 - partyBBankAccount?: string;  
661 - /**  
662 - * @description  
663 - * 卖方名称  
664 - */  
665 - partyBName?: string;  
666 - /**  
667 - * @description  
668 - * 卖方开户行  
669 - */  
670 - partyBOpenBank?: string;  
671 - /**  
672 - * @description  
673 - * 卖方电话号码  
674 - */  
675 - partyBPhoneNumber?: string;  
676 - /**  
677 - * @description  
678 - * 卖方税号  
679 - */  
680 - partyBTaxid?: string;  
681 - /**  
682 - * @description  
683 - * 发票金额  
684 - * @format double  
685 - */  
686 - price?: number;  
687 - /**  
688 - * @description  
689 - * 接收邮箱地址  
690 - */  
691 - receiveEmail?: string;  
692 - /**  
693 - * @description  
694 - * 订单来源  
695 - */  
696 - salesCodes?: Array<string>;  
697 - /**  
698 - * @description  
699 - * 订单来源  
700 - */  
701 - salesCodesText?: string;  
702 - /**  
703 - * @description  
704 - * 开票状态  
705 - */  
706 - status?: string;  
707 - /**  
708 - * @description  
709 - * 开票状态  
710 - */  
711 - statusText?: string;  
712 - /**  
713 - * @description  
714 - * 子订单id  
715 - */  
716 - subOrderIds?: Array<number>;  
717 - /**  
718 - * @description  
719 - * 关联订单  
720 - */  
721 - subOrders?: Array<SubOrder>;  
722 - /** @format double */  
723 - totalPrice?: number;  
724 - totalPriceText?: string;  
725 - /**  
726 - * @description  
727 - * 开票类型  
728 - */  
729 - type?: string;  
730 - /**  
731 - * @description  
732 - * 开票类型文本  
733 - */  
734 - typeText?: string;  
735 - /**  
736 - * @description  
737 - * 用户id  
738 - */  
739 - uid?: string;  
740 - updateByName?: string;  
741 - /** @format date-time */  
742 - updateTime?: string;  
743 -}  
744 -  
745 export interface AuditDto { 575 export interface AuditDto {
746 /** 576 /**
747 * @description 577 * @description
@@ -766,11 +596,15 @@ export interface AuditDto { @@ -766,11 +596,15 @@ export interface AuditDto {
766 export interface AuditVO { 596 export interface AuditVO {
767 /** @format int32 */ 597 /** @format int32 */
768 current?: number; 598 current?: number;
  599 + /** @format int32 */
  600 + end?: number;
769 /** @format int64 */ 601 /** @format int64 */
770 id?: number; 602 id?: number;
771 /** @format int32 */ 603 /** @format int32 */
772 pageSize?: number; 604 pageSize?: number;
773 /** @format int32 */ 605 /** @format int32 */
  606 + start?: number;
  607 + /** @format int32 */
774 status?: number; 608 status?: number;
775 /** @format int32 */ 609 /** @format int32 */
776 total?: number; 610 total?: number;
@@ -840,16 +674,32 @@ export interface CancelSendOrderDto { @@ -840,16 +674,32 @@ export interface CancelSendOrderDto {
840 export interface CaptchaMessageVO { 674 export interface CaptchaMessageVO {
841 /** @format int32 */ 675 /** @format int32 */
842 current?: number; 676 current?: number;
  677 + /** @format int32 */
  678 + end?: number;
843 imgCaptchaCode?: string; 679 imgCaptchaCode?: string;
844 imgCaptchaUuid?: string; 680 imgCaptchaUuid?: string;
845 /** @format int32 */ 681 /** @format int32 */
846 pageSize?: number; 682 pageSize?: number;
847 phone?: string; 683 phone?: string;
848 /** @format int32 */ 684 /** @format int32 */
  685 + start?: number;
  686 + /** @format int32 */
849 total?: number; 687 total?: number;
850 type?: string; 688 type?: string;
851 } 689 }
852 690
  691 +export interface CommonAuditRequest {
  692 + extend?: any;
  693 + /**
  694 + * @description
  695 + * id集合
  696 + */
  697 + ids?: Array<string>;
  698 + notes?: string;
  699 + pass?: boolean;
  700 + type?: string;
  701 +}
  702 +
853 export interface Contactperson { 703 export interface Contactperson {
854 birthday?: string; 704 birthday?: string;
855 contactAddress?: string; 705 contactAddress?: string;
@@ -1037,6 +887,8 @@ export interface DictionaryQueryVO { @@ -1037,6 +887,8 @@ export interface DictionaryQueryVO {
1037 dictCode?: string; 887 dictCode?: string;
1038 dictName?: string; 888 dictName?: string;
1039 dictValue?: string; 889 dictValue?: string;
  890 + /** @format int32 */
  891 + end?: number;
1040 /** @format int64 */ 892 /** @format int64 */
1041 id?: number; 893 id?: number;
1042 ids?: Array<number>; 894 ids?: Array<number>;
@@ -1046,6 +898,8 @@ export interface DictionaryQueryVO { @@ -1046,6 +898,8 @@ export interface DictionaryQueryVO {
1046 /** @format int32 */ 898 /** @format int32 */
1047 sort?: number; 899 sort?: number;
1048 /** @format int32 */ 900 /** @format int32 */
  901 + start?: number;
  902 + /** @format int32 */
1049 total?: number; 903 total?: number;
1050 } 904 }
1051 905
@@ -1096,6 +950,8 @@ export interface FilePathDto { @@ -1096,6 +950,8 @@ export interface FilePathDto {
1096 url?: string; 950 url?: string;
1097 } 951 }
1098 952
  953 +export type InputStream = any;
  954 +
1099 export interface InventoryMaterialStockReq { 955 export interface InventoryMaterialStockReq {
1100 auxPropId?: string; 956 auxPropId?: string;
1101 isShowStockPosition?: boolean; 957 isShowStockPosition?: boolean;
@@ -1174,254 +1030,45 @@ export interface InvoiceDto { @@ -1174,254 +1030,45 @@ export interface InvoiceDto {
1174 status?: string; 1030 status?: string;
1175 } 1031 }
1176 1032
1177 -export interface InvoiceRecordDto {  
1178 - /**  
1179 - * @description  
1180 - * 开票备注  
1181 - */  
1182 - comment?: string; 1033 +export interface InvoiceRecordQueryRequest {
  1034 + /** @format date */
  1035 + createTimeGe?: string;
  1036 + /** @format date */
  1037 + createTimeLe?: string;
  1038 + /** @format int32 */
  1039 + pageNumber?: number;
  1040 + /** @format int32 */
  1041 + pageSize?: number;
1183 /** 1042 /**
1184 * @description 1043 * @description
1185 - * 联系人 1044 + * 用户id
1186 */ 1045 */
1187 - contacts?: string; 1046 + uid?: string;
  1047 +}
  1048 +
  1049 +export interface Item {
  1050 + billDate?: string;
  1051 + billNo?: string;
  1052 + entryList?: Array<Entry>;
  1053 + id?: string;
  1054 + remark?: string;
  1055 +}
  1056 +
  1057 +export interface ItemSaItem {
  1058 + itemId?: string;
  1059 + itemValue?: string;
  1060 +}
  1061 +
  1062 +export interface MainOrderqueryRequest {
  1063 + afterInvoicingStatusIsNull?: boolean;
  1064 + orderStatusNotIn?: Array<string>;
  1065 + /** @format int32 */
  1066 + pageNumber?: number;
  1067 + /** @format int32 */
  1068 + pageSize?: number;
1188 /** 1069 /**
1189 * @description 1070 * @description
1190 - * 开票内容  
1191 - */  
1192 - content?: string;  
1193 - createByName?: string;  
1194 - /** @format date-time */  
1195 - createTime?: string;  
1196 - /**  
1197 - * @description  
1198 - * id  
1199 - * @format int64  
1200 - */  
1201 - id?: number;  
1202 - /**  
1203 - * @description  
1204 - * 发票地址  
1205 - */  
1206 - invoiceAddress?: string;  
1207 - /**  
1208 - * @description  
1209 - * 发票明细  
1210 - */  
1211 - invoiceDetails?: Array<InvoiceDetail>;  
1212 - /**  
1213 - * @description  
1214 - * 关联发票id  
1215 - */  
1216 - invoiceId?: string;  
1217 - /**  
1218 - * @description  
1219 - * 发票号码  
1220 - */  
1221 - invoiceNumber?: string;  
1222 - /**  
1223 - * @description  
1224 - * 开票人  
1225 - */  
1226 - invoicingPerson?: string;  
1227 - /**  
1228 - * @description  
1229 - * 开票时间  
1230 - * @format date-time  
1231 - */  
1232 - invoicingTime?: string;  
1233 - /**  
1234 - * @description  
1235 - * 开具类型  
1236 - */  
1237 - invoicingType?: string;  
1238 - /**  
1239 - * @description  
1240 - * 开具类型  
1241 - */  
1242 - invoicingTypeText?: string;  
1243 - /** @format date */  
1244 - invoicingdate?: string;  
1245 - /**  
1246 - * @description  
1247 - * 是否加急  
1248 - */  
1249 - isUrgent?: boolean;  
1250 - /**  
1251 - * @description  
1252 - * 是否加急文本  
1253 - */  
1254 - isUrgentText?: string;  
1255 - logicDelete?: boolean;  
1256 - /**  
1257 - * @description  
1258 - * 买方注册地址  
1259 - */  
1260 - partyAAddress?: string;  
1261 - /**  
1262 - * @description  
1263 - * 买方开户行账号  
1264 - */  
1265 - partyABankAccount?: string;  
1266 - /**  
1267 - * @description  
1268 - * 买方名称  
1269 - */  
1270 - partyAName?: string;  
1271 - /**  
1272 - * @description  
1273 - * 买方开户行  
1274 - */  
1275 - partyAOpenBank?: string;  
1276 - /**  
1277 - * @description  
1278 - * 买方电话号码  
1279 - */  
1280 - partyAPhoneNumber?: string;  
1281 - /**  
1282 - * @description  
1283 - * 买方税号  
1284 - */  
1285 - partyATaxid?: string;  
1286 - /**  
1287 - * @description  
1288 - * 抬头类型  
1289 - */  
1290 - partyAType?: string;  
1291 - partyB?: string;  
1292 - /**  
1293 - * @description  
1294 - * 卖方注册地址  
1295 - */  
1296 - partyBAddress?: string;  
1297 - /**  
1298 - * @description  
1299 - * 卖方开户行账号  
1300 - */  
1301 - partyBBankAccount?: string;  
1302 - /**  
1303 - * @description  
1304 - * 卖方名称  
1305 - */  
1306 - partyBName?: string;  
1307 - /**  
1308 - * @description  
1309 - * 卖方开户行  
1310 - */  
1311 - partyBOpenBank?: string;  
1312 - /**  
1313 - * @description  
1314 - * 卖方电话号码  
1315 - */  
1316 - partyBPhoneNumber?: string;  
1317 - /**  
1318 - * @description  
1319 - * 卖方税号  
1320 - */  
1321 - partyBTaxid?: string;  
1322 - /**  
1323 - * @description  
1324 - * 发票金额  
1325 - * @format double  
1326 - */  
1327 - price?: number;  
1328 - /**  
1329 - * @description  
1330 - * 接收邮箱地址  
1331 - */  
1332 - receiveEmail?: string;  
1333 - /**  
1334 - * @description  
1335 - * 订单来源  
1336 - */  
1337 - salesCodes?: Array<string>;  
1338 - /**  
1339 - * @description  
1340 - * 订单来源  
1341 - */  
1342 - salesCodesText?: string;  
1343 - /**  
1344 - * @description  
1345 - * 开票状态  
1346 - */  
1347 - status?: string;  
1348 - /**  
1349 - * @description  
1350 - * 开票状态  
1351 - */  
1352 - statusText?: string;  
1353 - /**  
1354 - * @description  
1355 - * 子订单id  
1356 - */  
1357 - subOrderIds?: Array<number>;  
1358 - /**  
1359 - * @description  
1360 - * 关联订单  
1361 - */  
1362 - subOrders?: Array<SubOrder>;  
1363 - /** @format double */  
1364 - totalPrice?: number;  
1365 - totalPriceText?: string;  
1366 - /**  
1367 - * @description  
1368 - * 开票类型  
1369 - */  
1370 - type?: string;  
1371 - /**  
1372 - * @description  
1373 - * 开票类型文本  
1374 - */  
1375 - typeText?: string;  
1376 - /**  
1377 - * @description  
1378 - * 用户id  
1379 - */  
1380 - uid?: string;  
1381 - updateByName?: string;  
1382 - /** @format date-time */  
1383 - updateTime?: string;  
1384 -}  
1385 -  
1386 -export interface InvoiceRecordQueryRequest {  
1387 - /** @format date */  
1388 - createTimeGe?: string;  
1389 - /** @format date */  
1390 - createTimeLe?: string;  
1391 - /** @format int32 */  
1392 - pageNumber?: number;  
1393 - /** @format int32 */  
1394 - pageSize?: number;  
1395 - /**  
1396 - * @description  
1397 - * 用户id  
1398 - */  
1399 - uid?: string;  
1400 -}  
1401 -  
1402 -export interface Item {  
1403 - billDate?: string;  
1404 - billNo?: string;  
1405 - entryList?: Array<Entry>;  
1406 - id?: string;  
1407 - remark?: string;  
1408 -}  
1409 -  
1410 -export interface ItemSaItem {  
1411 - itemId?: string;  
1412 - itemValue?: string;  
1413 -}  
1414 -  
1415 -export interface MainOrderqueryRequest {  
1416 - afterInvoicingStatusIsNull?: boolean;  
1417 - orderStatusNotIn?: Array<string>;  
1418 - /** @format int32 */  
1419 - pageNumber?: number;  
1420 - /** @format int32 */  
1421 - pageSize?: number;  
1422 - /**  
1423 - * @description  
1424 - * 用户id 1071 + * 用户id
1425 */ 1072 */
1426 uid?: string; 1073 uid?: string;
1427 } 1074 }
@@ -1555,10 +1202,14 @@ export interface MeasureUnitListResRow { @@ -1555,10 +1202,14 @@ export interface MeasureUnitListResRow {
1555 export interface MessageQueryDTO { 1202 export interface MessageQueryDTO {
1556 /** @format int32 */ 1203 /** @format int32 */
1557 current?: number; 1204 current?: number;
  1205 + /** @format int32 */
  1206 + end?: number;
1558 isReaded?: string; 1207 isReaded?: string;
1559 /** @format int32 */ 1208 /** @format int32 */
1560 pageSize?: number; 1209 pageSize?: number;
1561 /** @format int32 */ 1210 /** @format int32 */
  1211 + start?: number;
  1212 + /** @format int32 */
1562 total?: number; 1213 total?: number;
1563 username?: string; 1214 username?: string;
1564 } 1215 }
@@ -1594,6 +1245,8 @@ export interface OrderAuditLogQueryVO { @@ -1594,6 +1245,8 @@ export interface OrderAuditLogQueryVO {
1594 applyId?: number; 1245 applyId?: number;
1595 /** @format int32 */ 1246 /** @format int32 */
1596 current?: number; 1247 current?: number;
  1248 + /** @format int32 */
  1249 + end?: number;
1597 /** @format int64 */ 1250 /** @format int64 */
1598 id?: number; 1251 id?: number;
1599 ids?: Array<number>; 1252 ids?: Array<number>;
@@ -1603,6 +1256,8 @@ export interface OrderAuditLogQueryVO { @@ -1603,6 +1256,8 @@ export interface OrderAuditLogQueryVO {
1603 /** @format int32 */ 1256 /** @format int32 */
1604 pageSize?: number; 1257 pageSize?: number;
1605 /** @format int32 */ 1258 /** @format int32 */
  1259 + start?: number;
  1260 + /** @format int32 */
1606 total?: number; 1261 total?: number;
1607 } 1262 }
1608 1263
@@ -1637,6 +1292,8 @@ export interface OrderBaseInfoQueryVO { @@ -1637,6 +1292,8 @@ export interface OrderBaseInfoQueryVO {
1637 customerCode?: string; 1292 customerCode?: string;
1638 customerPo?: string; 1293 customerPo?: string;
1639 customerStyle?: string; 1294 customerStyle?: string;
  1295 + /** @format int32 */
  1296 + end?: number;
1640 /** @format int64 */ 1297 /** @format int64 */
1641 id?: number; 1298 id?: number;
1642 ids?: Array<number>; 1299 ids?: Array<number>;
@@ -1658,6 +1315,8 @@ export interface OrderBaseInfoQueryVO { @@ -1658,6 +1315,8 @@ export interface OrderBaseInfoQueryVO {
1658 productionDepartmentConsignTime?: string; 1315 productionDepartmentConsignTime?: string;
1659 projectNo?: string; 1316 projectNo?: string;
1660 /** @format int32 */ 1317 /** @format int32 */
  1318 + start?: number;
  1319 + /** @format int32 */
1661 total?: number; 1320 total?: number;
1662 } 1321 }
1663 1322
@@ -1718,6 +1377,8 @@ export interface OrderFieldLockApplyQueryVO { @@ -1718,6 +1377,8 @@ export interface OrderFieldLockApplyQueryVO {
1718 auditUserId?: number; 1377 auditUserId?: number;
1719 /** @format int32 */ 1378 /** @format int32 */
1720 current?: number; 1379 current?: number;
  1380 + /** @format int32 */
  1381 + end?: number;
1721 fields?: string; 1382 fields?: string;
1722 /** @format int64 */ 1383 /** @format int64 */
1723 id?: number; 1384 id?: number;
@@ -1727,6 +1388,8 @@ export interface OrderFieldLockApplyQueryVO { @@ -1727,6 +1388,8 @@ export interface OrderFieldLockApplyQueryVO {
1727 /** @format int32 */ 1388 /** @format int32 */
1728 pageSize?: number; 1389 pageSize?: number;
1729 /** @format int32 */ 1390 /** @format int32 */
  1391 + start?: number;
  1392 + /** @format int32 */
1730 status?: number; 1393 status?: number;
1731 statusList?: Array<number>; 1394 statusList?: Array<number>;
1732 /** @format int32 */ 1395 /** @format int32 */
@@ -1775,6 +1438,8 @@ export interface OrderInspectionStageVO { @@ -1775,6 +1438,8 @@ export interface OrderInspectionStageVO {
1775 export interface OrderOptLogQueryVO { 1438 export interface OrderOptLogQueryVO {
1776 /** @format int32 */ 1439 /** @format int32 */
1777 current?: number; 1440 current?: number;
  1441 + /** @format int32 */
  1442 + end?: number;
1778 /** @format int64 */ 1443 /** @format int64 */
1779 id?: number; 1444 id?: number;
1780 ids?: Array<number>; 1445 ids?: Array<number>;
@@ -1783,6 +1448,8 @@ export interface OrderOptLogQueryVO { @@ -1783,6 +1448,8 @@ export interface OrderOptLogQueryVO {
1783 /** @format int32 */ 1448 /** @format int32 */
1784 pageSize?: number; 1449 pageSize?: number;
1785 /** @format int32 */ 1450 /** @format int32 */
  1451 + start?: number;
  1452 + /** @format int32 */
1786 total?: number; 1453 total?: number;
1787 } 1454 }
1788 1455
@@ -1832,6 +1499,93 @@ export interface OrderProfitAnalysisVo { @@ -1832,6 +1499,93 @@ export interface OrderProfitAnalysisVo {
1832 orderIds?: Array<number>; 1499 orderIds?: Array<number>;
1833 } 1500 }
1834 1501
  1502 +export interface OrderStageFileDo {
  1503 + file?: File;
  1504 +}
  1505 +
  1506 +export interface OrderStagesDelDo {
  1507 + deviceIds?: Array<number>;
  1508 + ids?: Array<number>;
  1509 +}
  1510 +
  1511 +export interface OrderStagesDeviceDo {
  1512 + /** @format int32 */
  1513 + count?: number;
  1514 + createByName?: string;
  1515 + /** @format date-time */
  1516 + createTime?: string;
  1517 + deviceModel?: string;
  1518 + deviceName?: string;
  1519 + /** @format int32 */
  1520 + did?: number;
  1521 + logicDelete?: boolean;
  1522 + /** @format double */
  1523 + price?: number;
  1524 + /** @format double */
  1525 + unitPrice?: number;
  1526 + updateByName?: string;
  1527 + /** @format date-time */
  1528 + updateTime?: string;
  1529 +}
  1530 +
  1531 +export interface OrderStagesFromDo {
  1532 + annex?: string;
  1533 + contract?: string;
  1534 + createByName?: string;
  1535 + /** @format date-time */
  1536 + createTime?: string;
  1537 + /** @format date-time */
  1538 + dateRange?: string;
  1539 + /** @format int32 */
  1540 + id?: number;
  1541 + logicDelete?: boolean;
  1542 + orderStagesDeviceDoList?: Array<OrderStagesDeviceDo>;
  1543 + payWay?: string;
  1544 + remark?: string;
  1545 + terminal?: string;
  1546 + /** @format double */
  1547 + totalPrice?: number;
  1548 + updateByName?: string;
  1549 + /** @format date-time */
  1550 + updateTime?: string;
  1551 + vendor?: string;
  1552 + /** @format int32 */
  1553 + version?: number;
  1554 +}
  1555 +
  1556 +export interface OrderStagesPayWay {
  1557 + /** @format date-time */
  1558 + dateRange?: string;
  1559 + fileName?: string;
  1560 + fileUrl?: string;
  1561 + /** @format int32 */
  1562 + id?: number;
  1563 + /** @format int32 */
  1564 + number?: number;
  1565 + /** @format int32 */
  1566 + ossId?: number;
  1567 +}
  1568 +
  1569 +export interface OrderStagesPayWayDo {
  1570 + /** @format int32 */
  1571 + ossId?: number;
  1572 +}
  1573 +
  1574 +export interface OrderStagesPayWayFileDo {
  1575 + fileList?: Array<OrderStageFileDo>;
  1576 +}
  1577 +
  1578 +export interface OrderStagesSelDo {
  1579 + contract?: string;
  1580 + /** @format date-time */
  1581 + dateRange?: string;
  1582 + deviceName?: string;
  1583 + /** @format int64 */
  1584 + id?: number;
  1585 + terminal?: string;
  1586 + vendor?: string;
  1587 +}
  1588 +
1835 export interface OrderTrackStageFieldVO { 1589 export interface OrderTrackStageFieldVO {
1836 aitexTestFinishResult?: string; 1590 aitexTestFinishResult?: string;
1837 aitexTestSendTime?: string; 1591 aitexTestSendTime?: string;
@@ -1981,6 +1735,8 @@ export interface QueryBankStatementDto { @@ -1981,6 +1735,8 @@ export interface QueryBankStatementDto {
1981 collectionDatetimeEnd?: string; 1735 collectionDatetimeEnd?: string;
1982 /** @format int32 */ 1736 /** @format int32 */
1983 current?: number; 1737 current?: number;
  1738 + /** @format int32 */
  1739 + end?: number;
1984 /** @format int64 */ 1740 /** @format int64 */
1985 id?: number; 1741 id?: number;
1986 /** @format int32 */ 1742 /** @format int32 */
@@ -2002,6 +1758,8 @@ export interface QueryBankStatementDto { @@ -2002,6 +1758,8 @@ export interface QueryBankStatementDto {
2002 remark?: string; 1758 remark?: string;
2003 remarkNote?: string; 1759 remarkNote?: string;
2004 serialNumber?: string; 1760 serialNumber?: string;
  1761 + /** @format int32 */
  1762 + start?: number;
2005 status?: string; 1763 status?: string;
2006 /** @format int32 */ 1764 /** @format int32 */
2007 total?: number; 1765 total?: number;
@@ -2028,202 +1786,23 @@ export interface QueryCustomerInformationDto { @@ -2028,202 +1786,23 @@ export interface QueryCustomerInformationDto {
2028 export interface QueryHistoryRecordDto { 1786 export interface QueryHistoryRecordDto {
2029 /** 1787 /**
2030 * @description 1788 * @description
2031 - * 子订单id集合  
2032 - */  
2033 - ids?: Array<number>;  
2034 - /**  
2035 - * @description  
2036 - * 查看已经删除的订单,false表示查看未删除的订单,true表示查看删除的订单  
2037 - */  
2038 - isDeleteQueryOrder?: boolean;  
2039 -}  
2040 -  
2041 -export interface QueryInvoiceDetailDto {  
2042 - /**  
2043 - * @description  
2044 - * 发票id  
2045 - * @format int64  
2046 - */  
2047 - invoiceId?: number;  
2048 -}  
2049 -  
2050 -export interface QueryInvoiceProjectDto {  
2051 - /** @format int32 */  
2052 - current?: number;  
2053 - nameLike?: string;  
2054 - /** @format int32 */  
2055 - pageSize?: number;  
2056 - /** @format int32 */  
2057 - total?: number;  
2058 -}  
2059 -  
2060 -export interface QueryInvoiceRecordDto {  
2061 - /**  
2062 - * @description  
2063 - * 联系人  
2064 - */  
2065 - contactsLike?: string;  
2066 - /** @format date-time */  
2067 - createTimeGe?: string;  
2068 - /** @format date-time */  
2069 - createTimeLe?: string;  
2070 - /** @format int32 */  
2071 - current?: number;  
2072 - /**  
2073 - * @description  
2074 - * id  
2075 - * @format int64  
2076 - */  
2077 - id?: number;  
2078 - /**  
2079 - * @description  
2080 - * IdIn  
2081 - */  
2082 - idIn?: Array<number>;  
2083 - /**  
2084 - * @description  
2085 - * 关联发票id  
2086 - */  
2087 - invoiceId?: string;  
2088 - /**  
2089 - * @description  
2090 - * 发票号码  
2091 - */  
2092 - invoiceNumber?: string;  
2093 - /**  
2094 - * @description  
2095 - * 发票号码  
2096 - */  
2097 - invoiceNumberLike?: string;  
2098 - /**  
2099 - * @description  
2100 - * 开票时间  
2101 - * @format date-time  
2102 - */  
2103 - invoicingTimeGe?: string;  
2104 - /**  
2105 - * @description  
2106 - * 开票时间  
2107 - * @format date-time  
2108 - */  
2109 - invoicingTimeLe?: string;  
2110 - /**  
2111 - * @description  
2112 - * 开票类型  
2113 - */  
2114 - invoicingType?: string;  
2115 - /**  
2116 - * @description  
2117 - * 是否加急  
2118 - */  
2119 - isUrgent?: boolean;  
2120 - /**  
2121 - * @description  
2122 - * 订单号  
2123 - * @format int64  
2124 - */  
2125 - mainOrderId?: number;  
2126 - /**  
2127 - * @description  
2128 - * 主订单idIn  
2129 - */  
2130 - mainOrderIdIn?: Array<number>;  
2131 - /**  
2132 - * @description  
2133 - * 订单号  
2134 - */  
2135 - mainOrderIdLike?: string;  
2136 - /**  
2137 - * @description  
2138 - * 是否需要构建发票明细  
2139 - */  
2140 - needBuildDetails?: boolean;  
2141 - /** @format int32 */  
2142 - pageSize?: number;  
2143 - /**  
2144 - * @description  
2145 - * 买方名称  
2146 - */  
2147 - partyANameLike?: string;  
2148 - /**  
2149 - * @description  
2150 - * 买方电话号码  
2151 - */  
2152 - partyAPhoneNumberLike?: string;  
2153 - /**  
2154 - * @description  
2155 - * 买方税号  
2156 - */  
2157 - partyATaxid?: string;  
2158 - /**  
2159 - * @description  
2160 - * 买方税号  
2161 - */  
2162 - partyATaxidLike?: string;  
2163 - partyB?: string;  
2164 - /**  
2165 - * @description  
2166 - * 卖方名称  
2167 - */  
2168 - partyBName?: string;  
2169 - /**  
2170 - * @description  
2171 - * 销售代表  
2172 - */  
2173 - salesCode?: string;  
2174 - /**  
2175 - * @description  
2176 - * 销售代表  
2177 - */  
2178 - salesCodeLike?: string;  
2179 - /**  
2180 - * @description  
2181 - * 发票状态  
2182 - */  
2183 - status?: string;  
2184 - /**  
2185 - * @description  
2186 - * 状态非空  
2187 - */  
2188 - statusIn?: Array<string>;  
2189 - /**  
2190 - * @description  
2191 - * 状态非空  
2192 - */  
2193 - statusIsNotNull?: boolean;  
2194 - /**  
2195 - * @description  
2196 - * 状态为空  
2197 - */  
2198 - statusIsNull?: boolean;  
2199 - /**  
2200 - * @description  
2201 - * 子订单  
2202 - * @format int64  
2203 - */  
2204 - subOrderId?: number;  
2205 - /**  
2206 - * @description  
2207 - * 子订单idIn  
2208 - */  
2209 - subOrderIdIn?: Array<number>;  
2210 - /**  
2211 - * @description  
2212 - * 子订单 1789 + * 子订单id集合
2213 */ 1790 */
2214 - subOrderIdLike?: string;  
2215 - /** @format int32 */  
2216 - total?: number; 1791 + ids?: Array<number>;
2217 /** 1792 /**
2218 * @description 1793 * @description
2219 - * 开票类型 1794 + * 查看已经删除的订单,false表示查看未删除的订单,true表示查看删除的订单
2220 */ 1795 */
2221 - type?: string; 1796 + isDeleteQueryOrder?: boolean;
  1797 +}
  1798 +
  1799 +export interface QueryInvoiceDetailDto {
2222 /** 1800 /**
2223 * @description 1801 * @description
2224 - * 用户id 1802 + * 发票id
  1803 + * @format int64
2225 */ 1804 */
2226 - uid?: string; 1805 + invoiceId?: number;
2227 } 1806 }
2228 1807
2229 export interface QueryMainOrderDto { 1808 export interface QueryMainOrderDto {
@@ -2395,16 +1974,18 @@ export interface ResearchGroupListRequest { @@ -2395,16 +1974,18 @@ export interface ResearchGroupListRequest {
2395 accountPhone?: string; 1974 accountPhone?: string;
2396 /** @format int32 */ 1975 /** @format int32 */
2397 current?: number; 1976 current?: number;
  1977 + /** @format int32 */
  1978 + end?: number;
2398 /** 1979 /**
2399 * @description 1980 * @description
2400 * 课题组名称 1981 * 课题组名称
2401 */ 1982 */
2402 - group?: string; 1983 + groupName?: string;
2403 /** 1984 /**
2404 * @description 1985 * @description
2405 * 课题组负责人 1986 * 课题组负责人
2406 */ 1987 */
2407 - leader?: string; 1988 + leaderName?: string;
2408 /** 1989 /**
2409 * @description 1990 * @description
2410 * 课题组成员名称 1991 * 课题组成员名称
@@ -2418,6 +1999,8 @@ export interface ResearchGroupListRequest { @@ -2418,6 +1999,8 @@ export interface ResearchGroupListRequest {
2418 /** @format int32 */ 1999 /** @format int32 */
2419 pageSize?: number; 2000 pageSize?: number;
2420 /** @format int32 */ 2001 /** @format int32 */
  2002 + start?: number;
  2003 + /** @format int32 */
2421 total?: number; 2004 total?: number;
2422 } 2005 }
2423 2006
@@ -2465,11 +2048,142 @@ export interface ResearchGroupMemberEditRequest { @@ -2465,11 +2048,142 @@ export interface ResearchGroupMemberEditRequest {
2465 memberPhone?: string; 2048 memberPhone?: string;
2466 } 2049 }
2467 2050
  2051 +export interface ResearchGroupMemberRequestAddRequest {
  2052 + /**
  2053 + * @description
  2054 + * 课题组ID
  2055 + * @format int64
  2056 + */
  2057 + groupId?: number;
  2058 + /**
  2059 + * @description
  2060 + * 课题组名称
  2061 + */
  2062 + groupName?: string;
  2063 + members?: Array<ResearchGroupMemberAddRequest>;
  2064 + /**
  2065 + * @description
  2066 + * 申请备注
  2067 + */
  2068 + requestNotes?: string;
  2069 +}
  2070 +
  2071 +export interface ResearchGroupMemberRequestDeleteRequest {
  2072 + /**
  2073 + * @description
  2074 + * 主键id
  2075 + */
  2076 + ids?: Array<number>;
  2077 +}
  2078 +
  2079 +export interface ResearchGroupMemberRequestDetailRequest {
  2080 + /**
  2081 + * @description
  2082 + * 主键id
  2083 + * @format int64
  2084 + */
  2085 + id?: number;
  2086 +}
  2087 +
  2088 +export interface ResearchGroupMemberRequestEditRequest {
  2089 + /**
  2090 + * @description
  2091 + * 课题组ID
  2092 + * @format int64
  2093 + */
  2094 + groupId?: number;
  2095 + /**
  2096 + * @description
  2097 + * 课题组名称
  2098 + */
  2099 + groupName?: string;
  2100 + /**
  2101 + * @description
  2102 + * 主键id
  2103 + * @format int64
  2104 + */
  2105 + id?: number;
  2106 + /**
  2107 + * @description
  2108 + * 成员名称
  2109 + */
  2110 + memberName?: string;
  2111 + /**
  2112 + * @description
  2113 + * 成员手机号
  2114 + */
  2115 + memberPhone?: string;
  2116 + /**
  2117 + * @description
  2118 + * 申请备注
  2119 + */
  2120 + requestNotes?: string;
  2121 +}
  2122 +
  2123 +export interface ResearchGroupMemberRequestsRequest {
  2124 + /**
  2125 + * @description
  2126 + * 审核备注
  2127 + */
  2128 + auditNotes?: string;
  2129 + /**
  2130 + * @description
  2131 + * 审核状态
  2132 + */
  2133 + auditStatus?: string;
  2134 + /**
  2135 + * @description
  2136 + * 创建人
  2137 + */
  2138 + createByName?: string;
  2139 + /** @format int32 */
  2140 + current?: number;
  2141 + /** @format int32 */
  2142 + end?: number;
  2143 + /**
  2144 + * @description
  2145 + * 课题组名称
  2146 + */
  2147 + groupName?: string;
  2148 + /**
  2149 + * @description
  2150 + * 成员名称
  2151 + */
  2152 + memberName?: string;
  2153 + /**
  2154 + * @description
  2155 + * 成员手机号
  2156 + */
  2157 + memberPhone?: string;
  2158 + /** @format int32 */
  2159 + pageSize?: number;
  2160 + /**
  2161 + * @description
  2162 + * 申请备注
  2163 + */
  2164 + requestNotes?: string;
  2165 + /** @format int32 */
  2166 + start?: number;
  2167 + /** @format int32 */
  2168 + total?: number;
  2169 +}
  2170 +
2468 export interface ResetPwdVO { 2171 export interface ResetPwdVO {
2469 /** @format int64 */ 2172 /** @format int64 */
2470 userId?: number; 2173 userId?: number;
2471 } 2174 }
2472 2175
  2176 +export interface Resource {
  2177 + description?: string;
  2178 + file?: TsgFile;
  2179 + filename?: string;
  2180 + inputStream?: InputStream;
  2181 + open?: boolean;
  2182 + readable?: boolean;
  2183 + uri?: URI;
  2184 + url?: TsgURL;
  2185 +}
  2186 +
2473 export interface SalOrderSaveDto { 2187 export interface SalOrderSaveDto {
2474 id?: string; 2188 id?: string;
2475 } 2189 }
@@ -2493,134 +2207,14 @@ export interface ShippingWarehouseChangeDto { @@ -2493,134 +2207,14 @@ export interface ShippingWarehouseChangeDto {
2493 shippingWarehouse?: string; 2207 shippingWarehouse?: string;
2494 } 2208 }
2495 2209
2496 -export interface SubOrder {  
2497 - afterInvoicingStatus?: string;  
2498 - /** @format date-time */  
2499 - afterInvoicingStatusUpdateTime?: string;  
2500 - afterSalesAnnex?: string;  
2501 - afterSalesNotes?: string;  
2502 - afterSalesPlan?: string;  
2503 - annex?: string;  
2504 - applyInvoicingAnnex?: string;  
2505 - applyInvoicingNotes?: string;  
2506 - /** @format date-time */  
2507 - applyTime?: string;  
2508 - /** @format int32 */  
2509 - attrId?: number;  
2510 - checkNotes?: string;  
2511 - /** @format date-time */  
2512 - collectMoneyTime?: string;  
2513 - confirmDeliverNotes?: string;  
2514 - confirmReissueNotes?: string;  
2515 - createByName?: string;  
2516 - /** @format date-time */  
2517 - createTime?: string;  
2518 - /** @format date-time */  
2519 - deadline?: string;  
2520 - ext?: string;  
2521 - extendField?: string;  
2522 - /** @format date-time */  
2523 - financialReceiptIssuanceTime?: string;  
2524 - fullPaymentStatus?: string;  
2525 - /** @format double */  
2526 - goodsVolume?: number;  
2527 - /** @format double */  
2528 - goodsWeight?: number;  
2529 - /** @format int64 */  
2530 - id?: number;  
2531 - image?: string;  
2532 - invoiceApplyUsername?: string;  
2533 - invoiceInformation?: string;  
2534 - /** @format int64 */  
2535 - invoiceRecordId?: number;  
2536 - invoicingCheckAnnex?: string;  
2537 - invoicingNotes?: string;  
2538 - invoicingStatus?: string;  
2539 - /** @format date-time */  
2540 - invoicingTime?: string;  
2541 - invoicingUrgentCause?: string;  
2542 - isUrgent?: boolean;  
2543 - kingdeeErrorMessage?: string;  
2544 - logicDelete?: boolean;  
2545 - logisticsMethod?: string;  
2546 - logisticsNotes?: string;  
2547 - /** @format int64 */  
2548 - mainOrderAmountProportion?: number;  
2549 - /** @format int64 */  
2550 - mainOrderId?: number;  
2551 - materialId?: string;  
2552 - modified?: boolean;  
2553 - modifiedAuditNotes?: string;  
2554 - modifiedAuditStatus?: string;  
2555 - modifiedOptFlag?: string;  
2556 - nextOrderStatus?: string;  
2557 - notes?: string;  
2558 - orderStatus?: string;  
2559 - orderStatusBeforeModify?: string;  
2560 - /** @format date-time */  
2561 - orderStatusUpdateTime?: string;  
2562 - /** @format int32 */  
2563 - packageNumber?: number;  
2564 - parameters?: string;  
2565 - paymentChannel?: string;  
2566 - paymentMethod?: string;  
2567 - paymentReceiptAnnex?: string;  
2568 - paymentReceiptNotes?: string;  
2569 - paymentReceiptStatus?: string;  
2570 - paymentStatus?: string;  
2571 - paymentTransactionId?: string;  
2572 - postAuditNotes?: string;  
2573 - postAuditStatus?: string;  
2574 - /** @format date-time */  
2575 - postAuditStatusUpdateTime?: string;  
2576 - preAfterInvoicingStatus?: string;  
2577 - procureConvertNotes?: string;  
2578 - procureNotes?: string;  
2579 - /** @format date-time */  
2580 - procureOrderDatetime?: string;  
2581 - procureOrderStatus?: string;  
2582 - productBelongBusiness?: string;  
2583 - productCode?: string;  
2584 - /** @format int32 */  
2585 - productId?: number;  
2586 - productName?: string;  
2587 - /** @format int64 */  
2588 - productPrice?: number;  
2589 - /** @format date-time */  
2590 - productionEndTime?: string;  
2591 - /** @format date-time */  
2592 - productionStartTime?: string;  
2593 - productionTimePushStatus?: string;  
2594 - /** @format int32 */  
2595 - quantity?: number;  
2596 - receivingCompany?: string;  
2597 - reissueNotes?: string;  
2598 - serialNumber?: string;  
2599 - shippingWarehouse?: string;  
2600 - /** @format int64 */  
2601 - subOrderPayment?: number;  
2602 - supplierName?: string;  
2603 - supplierNotes?: string;  
2604 - /** @format int64 */  
2605 - totalPayment?: number;  
2606 - /** @format int32 */  
2607 - uid?: number;  
2608 - unit?: string;  
2609 - unitId?: string;  
2610 - updateByName?: string;  
2611 - /** @format date-time */  
2612 - updateTime?: string;  
2613 - urgentInvoiceAuditNotes?: string;  
2614 - /** @format int32 */  
2615 - version?: number;  
2616 -}  
2617 -  
2618 export interface SysLogQueryVO { 2210 export interface SysLogQueryVO {
2619 address?: string; 2211 address?: string;
2620 browser?: string; 2212 browser?: string;
2621 /** @format int32 */ 2213 /** @format int32 */
2622 current?: number; 2214 current?: number;
2623 description?: string; 2215 description?: string;
  2216 + /** @format int32 */
  2217 + end?: number;
2624 exceptionDetail?: string; 2218 exceptionDetail?: string;
2625 /** @format int64 */ 2219 /** @format int64 */
2626 id?: number; 2220 id?: number;
@@ -2631,6 +2225,8 @@ export interface SysLogQueryVO { @@ -2631,6 +2225,8 @@ export interface SysLogQueryVO {
2631 pageSize?: number; 2225 pageSize?: number;
2632 params?: string; 2226 params?: string;
2633 requestIp?: string; 2227 requestIp?: string;
  2228 + /** @format int32 */
  2229 + start?: number;
2634 /** @format int64 */ 2230 /** @format int64 */
2635 time?: number; 2231 time?: number;
2636 /** @format int32 */ 2232 /** @format int32 */
@@ -2653,6 +2249,29 @@ export interface TokenApiDto { @@ -2653,6 +2249,29 @@ export interface TokenApiDto {
2653 username?: string; 2249 username?: string;
2654 } 2250 }
2655 2251
  2252 +export interface URI {
  2253 + absolute?: boolean;
  2254 + authority?: string;
  2255 + fragment?: string;
  2256 + host?: string;
  2257 + opaque?: boolean;
  2258 + path?: string;
  2259 + /** @format int32 */
  2260 + port?: number;
  2261 + query?: string;
  2262 + rawAuthority?: string;
  2263 + rawFragment?: string;
  2264 + rawPath?: string;
  2265 + rawQuery?: string;
  2266 + rawSchemeSpecificPart?: string;
  2267 + rawUserInfo?: string;
  2268 + scheme?: string;
  2269 + schemeSpecificPart?: string;
  2270 + userInfo?: string;
  2271 +}
  2272 +
  2273 +export type URLStreamHandler = any;
  2274 +
2656 export interface Unit { 2275 export interface Unit {
2657 /** @format float */ 2276 /** @format float */
2658 coefficient?: number; 2277 coefficient?: number;
@@ -2771,8 +2390,12 @@ export interface UserCenterInfoRequest { @@ -2771,8 +2390,12 @@ export interface UserCenterInfoRequest {
2771 /** @format int32 */ 2390 /** @format int32 */
2772 current?: number; 2391 current?: number;
2773 /** @format int32 */ 2392 /** @format int32 */
  2393 + end?: number;
  2394 + /** @format int32 */
2774 pageSize?: number; 2395 pageSize?: number;
2775 /** @format int32 */ 2396 /** @format int32 */
  2397 + start?: number;
  2398 + /** @format int32 */
2776 total?: number; 2399 total?: number;
2777 /** 2400 /**
2778 * @description 2401 * @description
@@ -2792,6 +2415,8 @@ export interface UserDetailRequest { @@ -2792,6 +2415,8 @@ export interface UserDetailRequest {
2792 /** @format int32 */ 2415 /** @format int32 */
2793 current?: number; 2416 current?: number;
2794 /** @format int32 */ 2417 /** @format int32 */
  2418 + end?: number;
  2419 + /** @format int32 */
2795 pageSize?: number; 2420 pageSize?: number;
2796 /** 2421 /**
2797 * @description 2422 * @description
@@ -2799,6 +2424,8 @@ export interface UserDetailRequest { @@ -2799,6 +2424,8 @@ export interface UserDetailRequest {
2799 */ 2424 */
2800 phone?: string; 2425 phone?: string;
2801 /** @format int32 */ 2426 /** @format int32 */
  2427 + start?: number;
  2428 + /** @format int32 */
2802 total?: number; 2429 total?: number;
2803 /** 2430 /**
2804 * @description 2431 * @description
@@ -2815,6 +2442,8 @@ export interface UserListRequest { @@ -2815,6 +2442,8 @@ export interface UserListRequest {
2815 * 创建日期开始时间 2442 * 创建日期开始时间
2816 */ 2443 */
2817 dateLimit?: string; 2444 dateLimit?: string;
  2445 + /** @format int32 */
  2446 + end?: number;
2818 /** 2447 /**
2819 * @description 2448 * @description
2820 * 单位 2449 * 单位
@@ -2839,10 +2468,23 @@ export interface UserListRequest { @@ -2839,10 +2468,23 @@ export interface UserListRequest {
2839 phone?: string; 2468 phone?: string;
2840 /** 2469 /**
2841 * @description 2470 * @description
  2471 + * phones
  2472 + */
  2473 + phones?: Array<string>;
  2474 + /**
  2475 + * @description
  2476 + * 内部订单系统课题组id
  2477 + * @format int64
  2478 + */
  2479 + researchGroupId?: number;
  2480 + /**
  2481 + * @description
2842 * salesCode 2482 * salesCode
2843 */ 2483 */
2844 salesCode?: string; 2484 salesCode?: string;
2845 /** @format int32 */ 2485 /** @format int32 */
  2486 + start?: number;
  2487 + /** @format int32 */
2846 total?: number; 2488 total?: number;
2847 /** 2489 /**
2848 * @description 2490 * @description
@@ -2862,6 +2504,13 @@ export interface UserListRequest { @@ -2862,6 +2504,13 @@ export interface UserListRequest {
2862 username?: string; 2504 username?: string;
2863 } 2505 }
2864 2506
  2507 +export interface UserNowMoneyCheckRequest {
  2508 + phone?: string;
  2509 + subPrice?: number;
  2510 + /** @format int64 */
  2511 + uid?: number;
  2512 +}
  2513 +
2865 export interface View { 2514 export interface View {
2866 contentType?: string; 2515 contentType?: string;
2867 } 2516 }
@@ -2884,42 +2533,30 @@ export interface ApiOrderConfirmReceiveRequest { @@ -2884,42 +2533,30 @@ export interface ApiOrderConfirmReceiveRequest {
2884 subOrderIds?: Array<number>; 2533 subOrderIds?: Array<number>;
2885 } 2534 }
2886 2535
2887 -export interface InvoiceDetail { 2536 +export interface TsgFile {
  2537 + absolute?: boolean;
  2538 + absoluteFile?: TsgFile;
  2539 + absolutePath?: string;
  2540 + canonicalFile?: TsgFile;
  2541 + canonicalPath?: string;
  2542 + directory?: boolean;
  2543 + executable?: boolean;
  2544 + file?: boolean;
2888 /** @format int64 */ 2545 /** @format int64 */
2889 - id?: number;  
2890 - /**  
2891 - * @description  
2892 - * 发票id  
2893 - * @format int64  
2894 - */  
2895 - invoiceRecordId?: number;  
2896 - /**  
2897 - * @description  
2898 - * 单价  
2899 - * @format double  
2900 - */  
2901 - price?: number;  
2902 - projectName?: string;  
2903 - /** @format double */  
2904 - quantity?: number;  
2905 - /**  
2906 - * @description  
2907 - * 型号  
2908 - */  
2909 - specification?: string; 2546 + freeSpace?: number;
  2547 + hidden?: boolean;
2910 /** @format int64 */ 2548 /** @format int64 */
2911 - subOrderId?: number;  
2912 - /** @format double */  
2913 - taxPrice?: number;  
2914 - /** @format double */  
2915 - taxRate?: number;  
2916 - /**  
2917 - * @description  
2918 - * 总价  
2919 - * @format double  
2920 - */  
2921 - totalPrice?: number;  
2922 - unit?: string; 2549 + lastModified?: number;
  2550 + name?: string;
  2551 + parent?: string;
  2552 + parentFile?: TsgFile;
  2553 + path?: string;
  2554 + readable?: boolean;
  2555 + /** @format int64 */
  2556 + totalSpace?: number;
  2557 + /** @format int64 */
  2558 + usableSpace?: number;
  2559 + writable?: boolean;
2923 } 2560 }
2924 2561
2925 export interface SalesRechargePrepaymentAuditRequest { 2562 export interface SalesRechargePrepaymentAuditRequest {
@@ -2938,6 +2575,11 @@ export interface SalesRechargePrepaymentAuditRequest { @@ -2938,6 +2575,11 @@ export interface SalesRechargePrepaymentAuditRequest {
2938 * 是否通过 2575 * 是否通过
2939 */ 2576 */
2940 pass?: boolean; 2577 pass?: boolean;
  2578 + /**
  2579 + * @description
  2580 + * 手机号
  2581 + */
  2582 + phone?: string;
2941 } 2583 }
2942 2584
2943 export interface SalesRechargePrepaymentCreateRequest { 2585 export interface SalesRechargePrepaymentCreateRequest {
@@ -3043,6 +2685,8 @@ export interface SalesRechargePrepaymentRequest { @@ -3043,6 +2685,8 @@ export interface SalesRechargePrepaymentRequest {
3043 * @format int32 2685 * @format int32
3044 */ 2686 */
3045 enableFlag?: number; 2687 enableFlag?: number;
  2688 + /** @format int32 */
  2689 + end?: number;
3046 /** 2690 /**
3047 * @description 2691 * @description
3048 * id 2692 * id
@@ -3087,6 +2731,8 @@ export interface SalesRechargePrepaymentRequest { @@ -3087,6 +2731,8 @@ export interface SalesRechargePrepaymentRequest {
3087 * 销售代表 2731 * 销售代表
3088 */ 2732 */
3089 salesCode?: string; 2733 salesCode?: string;
  2734 + /** @format int32 */
  2735 + start?: number;
3090 /** 2736 /**
3091 * @description 2737 * @description
3092 * 状态 2738 * 状态
@@ -3246,6 +2892,25 @@ export interface StoreOrderInvoiceRequest { @@ -3246,6 +2892,25 @@ export interface StoreOrderInvoiceRequest {
3246 updateTime?: string; 2892 updateTime?: string;
3247 } 2893 }
3248 2894
  2895 +export interface TsgURL {
  2896 + authority?: string;
  2897 + content?: any;
  2898 + /** @format int32 */
  2899 + defaultPort?: number;
  2900 + deserializedFields?: URLStreamHandler;
  2901 + file?: string;
  2902 + host?: string;
  2903 + path?: string;
  2904 + /** @format int32 */
  2905 + port?: number;
  2906 + protocol?: string;
  2907 + query?: string;
  2908 + ref?: string;
  2909 + /** @format int32 */
  2910 + serializedHashCode?: number;
  2911 + userInfo?: string;
  2912 +}
  2913 +
3249 /** 2914 /**
3250 * @description 2915 * @description
3251 * 保存用户地址请求对象 2916 * 保存用户地址请求对象
src/services/order.ts
@@ -2,12 +2,14 @@ import axios from &#39;axios&#39;; @@ -2,12 +2,14 @@ import axios from &#39;axios&#39;;
2 2
3 export const orderExport = async ( 3 export const orderExport = async (
4 url: any = '', 4 url: any = '',
  5 + fileName: any = '',
  6 + method: any = '',
5 data: any = {}, 7 data: any = {},
6 exportLoadingDestory: any, 8 exportLoadingDestory: any,
7 ) => { 9 ) => {
8 axios({ 10 axios({
9 url: url, 11 url: url,
10 - method: 'post', 12 + method: method,
11 responseType: 'blob', 13 responseType: 'blob',
12 headers: { Authorization: localStorage.getItem('token') }, 14 headers: { Authorization: localStorage.getItem('token') },
13 data, 15 data,
@@ -18,7 +20,7 @@ export const orderExport = async ( @@ -18,7 +20,7 @@ export const orderExport = async (
18 const downloadUrl = window.URL.createObjectURL(blob); 20 const downloadUrl = window.URL.createObjectURL(blob);
19 const a = document.createElement('a'); 21 const a = document.createElement('a');
20 a.href = downloadUrl; 22 a.href = downloadUrl;
21 - a.download = '订单.xlsx'; // 你可以为文件命名 23 + a.download = fileName; // 你可以为文件命名
22 document.body.appendChild(a); 24 document.body.appendChild(a);
23 a.click(); // 模拟点击操作来下载文件 25 a.click(); // 模拟点击操作来下载文件
24 URL.revokeObjectURL(downloadUrl); // 释放掉 blob 对象所占用的内存 26 URL.revokeObjectURL(downloadUrl); // 释放掉 blob 对象所占用的内存
src/services/request.ts
@@ -29,12 +29,12 @@ import type { @@ -29,12 +29,12 @@ import type {
29 ApiOrderEvaluatedRequest, 29 ApiOrderEvaluatedRequest,
30 ApiQueryOrderDetailRequest, 30 ApiQueryOrderDetailRequest,
31 ApiQueryOrderStatusCountsRequest, 31 ApiQueryOrderStatusCountsRequest,
32 - ApplyInvoiceDto,  
33 AuditDto, 32 AuditDto,
34 AuditVO, 33 AuditVO,
35 CancelInvoiceAndBankStatementDto, 34 CancelInvoiceAndBankStatementDto,
36 CancelSendOrderDto, 35 CancelSendOrderDto,
37 CaptchaMessageVO, 36 CaptchaMessageVO,
  37 + CommonAuditRequest,
38 CustomFieldRes, 38 CustomFieldRes,
39 CustomerCustomerListReq, 39 CustomerCustomerListReq,
40 CustomerDetailDto, 40 CustomerDetailDto,
@@ -46,7 +46,6 @@ import type { @@ -46,7 +46,6 @@ import type {
46 Dto, 46 Dto,
47 InventoryMaterialStockReq, 47 InventoryMaterialStockReq,
48 InvoiceDto, 48 InvoiceDto,
49 - InvoiceRecordDto,  
50 InvoiceRecordQueryRequest, 49 InvoiceRecordQueryRequest,
51 MainOrderqueryRequest, 50 MainOrderqueryRequest,
52 MaterialListReply, 51 MaterialListReply,
@@ -55,13 +54,18 @@ import type { @@ -55,13 +54,18 @@ import type {
55 MaterialUnitListRes, 54 MaterialUnitListRes,
56 MeasureUnitListRes, 55 MeasureUnitListRes,
57 MessageQueryDTO, 56 MessageQueryDTO,
58 - ModelAndView,  
59 OrderAddVO, 57 OrderAddVO,
60 OrderAuditLogQueryVO, 58 OrderAuditLogQueryVO,
61 OrderBaseInfoQueryVO, 59 OrderBaseInfoQueryVO,
62 OrderFieldLockApplyQueryVO, 60 OrderFieldLockApplyQueryVO,
63 OrderOptLogQueryVO, 61 OrderOptLogQueryVO,
64 OrderProfitAnalysisVo, 62 OrderProfitAnalysisVo,
  63 + OrderStagesDelDo,
  64 + OrderStagesFromDo,
  65 + OrderStagesPayWay,
  66 + OrderStagesPayWayDo,
  67 + OrderStagesPayWayFileDo,
  68 + OrderStagesSelDo,
65 OrderUnlockFieldApplyVO, 69 OrderUnlockFieldApplyVO,
66 OrderUpdateVO, 70 OrderUpdateVO,
67 ProcureConvertProcureDto, 71 ProcureConvertProcureDto,
@@ -74,8 +78,6 @@ import type { @@ -74,8 +78,6 @@ import type {
74 QueryCustomerInformationDto, 78 QueryCustomerInformationDto,
75 QueryHistoryRecordDto, 79 QueryHistoryRecordDto,
76 QueryInvoiceDetailDto, 80 QueryInvoiceDetailDto,
77 - QueryInvoiceProjectDto,  
78 - QueryInvoiceRecordDto,  
79 QueryMainOrderDto, 81 QueryMainOrderDto,
80 QueryReportFormsDto, 82 QueryReportFormsDto,
81 ReissueInvoiceDto, 83 ReissueInvoiceDto,
@@ -84,6 +86,11 @@ import type { @@ -84,6 +86,11 @@ import type {
84 ResearchGroupDetailRequest, 86 ResearchGroupDetailRequest,
85 ResearchGroupEditRequest, 87 ResearchGroupEditRequest,
86 ResearchGroupListRequest, 88 ResearchGroupListRequest,
  89 + ResearchGroupMemberRequestAddRequest,
  90 + ResearchGroupMemberRequestDeleteRequest,
  91 + ResearchGroupMemberRequestDetailRequest,
  92 + ResearchGroupMemberRequestEditRequest,
  93 + ResearchGroupMemberRequestsRequest,
87 ResetPwdVO, 94 ResetPwdVO,
88 SalOrderSaveDto, 95 SalOrderSaveDto,
89 SalesRechargePrepaymentAuditRequest, 96 SalesRechargePrepaymentAuditRequest,
@@ -109,6 +116,7 @@ import type { @@ -109,6 +116,7 @@ import type {
109 UserCenterInfoRequest, 116 UserCenterInfoRequest,
110 UserDetailRequest, 117 UserDetailRequest,
111 UserListRequest, 118 UserListRequest,
  119 + UserNowMoneyCheckRequest,
112 } from './definition'; 120 } from './definition';
113 121
114 /** @description request parameter type for postApiLocalStorageUpload */ 122 /** @description request parameter type for postApiLocalStorageUpload */
@@ -1614,13 +1622,156 @@ export const postCanrdApiUserList = /* #__PURE__ */ (() =&gt; { @@ -1614,13 +1622,156 @@ export const postCanrdApiUserList = /* #__PURE__ */ (() =&gt; {
1614 return request; 1622 return request;
1615 })(); 1623 })();
1616 1624
  1625 +/** @description request parameter type for postCanrdApiUserNowMoneyCheck */
  1626 +export interface PostCanrdApiUserNowMoneyCheckOption {
  1627 + /**
  1628 + * @description
  1629 + * request
  1630 + */
  1631 + body: {
  1632 + /**
  1633 + @description
  1634 + request */
  1635 + request: UserNowMoneyCheckRequest;
  1636 + };
  1637 +}
  1638 +
  1639 +/** @description response type for postCanrdApiUserNowMoneyCheck */
  1640 +export interface PostCanrdApiUserNowMoneyCheckResponse {
  1641 + /**
  1642 + * @description
  1643 + * OK
  1644 + */
  1645 + 200: ServerResult;
  1646 + /**
  1647 + * @description
  1648 + * Created
  1649 + */
  1650 + 201: any;
  1651 + /**
  1652 + * @description
  1653 + * Unauthorized
  1654 + */
  1655 + 401: any;
  1656 + /**
  1657 + * @description
  1658 + * Forbidden
  1659 + */
  1660 + 403: any;
  1661 + /**
  1662 + * @description
  1663 + * Not Found
  1664 + */
  1665 + 404: any;
  1666 +}
  1667 +
  1668 +export type PostCanrdApiUserNowMoneyCheckResponseSuccess =
  1669 + PostCanrdApiUserNowMoneyCheckResponse[200];
  1670 +/**
  1671 + * @description
  1672 + * 检查用户额度
  1673 + * @tags canrd-mobile-api-controller
  1674 + * @produces *
  1675 + * @consumes application/json
  1676 + */
  1677 +export const postCanrdApiUserNowMoneyCheck = /* #__PURE__ */ (() => {
  1678 + const method = 'post';
  1679 + const url = '/canrd/api/user/nowMoney/check';
  1680 + function request(
  1681 + option: PostCanrdApiUserNowMoneyCheckOption,
  1682 + ): Promise<PostCanrdApiUserNowMoneyCheckResponseSuccess> {
  1683 + return requester(request.url, {
  1684 + method: request.method,
  1685 + ...option,
  1686 + }) as unknown as Promise<PostCanrdApiUserNowMoneyCheckResponseSuccess>;
  1687 + }
  1688 +
  1689 + /** http method */
  1690 + request.method = method;
  1691 + /** request url */
  1692 + request.url = url;
  1693 + return request;
  1694 +})();
  1695 +
  1696 +/** @description request parameter type for postCommonAudit */
  1697 +export interface PostCommonAuditOption {
  1698 + /**
  1699 + * @description
  1700 + * request
  1701 + */
  1702 + body: {
  1703 + /**
  1704 + @description
  1705 + request */
  1706 + request: CommonAuditRequest;
  1707 + };
  1708 +}
  1709 +
  1710 +/** @description response type for postCommonAudit */
  1711 +export interface PostCommonAuditResponse {
  1712 + /**
  1713 + * @description
  1714 + * OK
  1715 + */
  1716 + 200: ServerResult;
  1717 + /**
  1718 + * @description
  1719 + * Created
  1720 + */
  1721 + 201: any;
  1722 + /**
  1723 + * @description
  1724 + * Unauthorized
  1725 + */
  1726 + 401: any;
  1727 + /**
  1728 + * @description
  1729 + * Forbidden
  1730 + */
  1731 + 403: any;
  1732 + /**
  1733 + * @description
  1734 + * Not Found
  1735 + */
  1736 + 404: any;
  1737 +}
  1738 +
  1739 +export type PostCommonAuditResponseSuccess = PostCommonAuditResponse[200];
  1740 +/**
  1741 + * @description
  1742 + * audit
  1743 + * @tags common-controller
  1744 + * @produces *
  1745 + * @consumes application/json
  1746 + */
  1747 +export const postCommonAudit = /* #__PURE__ */ (() => {
  1748 + const method = 'post';
  1749 + const url = '/common/audit';
  1750 + function request(
  1751 + option: PostCommonAuditOption,
  1752 + ): Promise<PostCommonAuditResponseSuccess> {
  1753 + return requester(request.url, {
  1754 + method: request.method,
  1755 + ...option,
  1756 + }) as unknown as Promise<PostCommonAuditResponseSuccess>;
  1757 + }
  1758 +
  1759 + /** http method */
  1760 + request.method = method;
  1761 + /** request url */
  1762 + request.url = url;
  1763 + return request;
  1764 +})();
  1765 +
1617 /** @description response type for getError */ 1766 /** @description response type for getError */
1618 export interface GetErrorResponse { 1767 export interface GetErrorResponse {
1619 /** 1768 /**
1620 * @description 1769 * @description
1621 * OK 1770 * OK
1622 */ 1771 */
1623 - 200: ModelAndView; 1772 + 200: {
  1773 + [propertyName: string]: any;
  1774 + };
1624 /** 1775 /**
1625 * @description 1776 * @description
1626 * Unauthorized 1777 * Unauthorized
@@ -1641,9 +1792,9 @@ export interface GetErrorResponse { @@ -1641,9 +1792,9 @@ export interface GetErrorResponse {
1641 export type GetErrorResponseSuccess = GetErrorResponse[200]; 1792 export type GetErrorResponseSuccess = GetErrorResponse[200];
1642 /** 1793 /**
1643 * @description 1794 * @description
1644 - * errorHtml 1795 + * error
1645 * @tags basic-error-controller 1796 * @tags basic-error-controller
1646 - * @produces text/html 1797 + * @produces *
1647 */ 1798 */
1648 export const getError = /* #__PURE__ */ (() => { 1799 export const getError = /* #__PURE__ */ (() => {
1649 const method = 'get'; 1800 const method = 'get';
@@ -1667,7 +1818,9 @@ export interface PutErrorResponse { @@ -1667,7 +1818,9 @@ export interface PutErrorResponse {
1667 * @description 1818 * @description
1668 * OK 1819 * OK
1669 */ 1820 */
1670 - 200: ModelAndView; 1821 + 200: {
  1822 + [propertyName: string]: any;
  1823 + };
1671 /** 1824 /**
1672 * @description 1825 * @description
1673 * Created 1826 * Created
@@ -1693,9 +1846,9 @@ export interface PutErrorResponse { @@ -1693,9 +1846,9 @@ export interface PutErrorResponse {
1693 export type PutErrorResponseSuccess = PutErrorResponse[200]; 1846 export type PutErrorResponseSuccess = PutErrorResponse[200];
1694 /** 1847 /**
1695 * @description 1848 * @description
1696 - * errorHtml 1849 + * error
1697 * @tags basic-error-controller 1850 * @tags basic-error-controller
1698 - * @produces text/html 1851 + * @produces *
1699 * @consumes application/json 1852 * @consumes application/json
1700 */ 1853 */
1701 export const putError = /* #__PURE__ */ (() => { 1854 export const putError = /* #__PURE__ */ (() => {
@@ -1720,7 +1873,9 @@ export interface PostErrorResponse { @@ -1720,7 +1873,9 @@ export interface PostErrorResponse {
1720 * @description 1873 * @description
1721 * OK 1874 * OK
1722 */ 1875 */
1723 - 200: ModelAndView; 1876 + 200: {
  1877 + [propertyName: string]: any;
  1878 + };
1724 /** 1879 /**
1725 * @description 1880 * @description
1726 * Created 1881 * Created
@@ -1746,9 +1901,9 @@ export interface PostErrorResponse { @@ -1746,9 +1901,9 @@ export interface PostErrorResponse {
1746 export type PostErrorResponseSuccess = PostErrorResponse[200]; 1901 export type PostErrorResponseSuccess = PostErrorResponse[200];
1747 /** 1902 /**
1748 * @description 1903 * @description
1749 - * errorHtml 1904 + * error
1750 * @tags basic-error-controller 1905 * @tags basic-error-controller
1751 - * @produces text/html 1906 + * @produces *
1752 * @consumes application/json 1907 * @consumes application/json
1753 */ 1908 */
1754 export const postError = /* #__PURE__ */ (() => { 1909 export const postError = /* #__PURE__ */ (() => {
@@ -1773,7 +1928,9 @@ export interface DeleteErrorResponse { @@ -1773,7 +1928,9 @@ export interface DeleteErrorResponse {
1773 * @description 1928 * @description
1774 * OK 1929 * OK
1775 */ 1930 */
1776 - 200: ModelAndView; 1931 + 200: {
  1932 + [propertyName: string]: any;
  1933 + };
1777 /** 1934 /**
1778 * @description 1935 * @description
1779 * No Content 1936 * No Content
@@ -1794,9 +1951,9 @@ export interface DeleteErrorResponse { @@ -1794,9 +1951,9 @@ export interface DeleteErrorResponse {
1794 export type DeleteErrorResponseSuccess = DeleteErrorResponse[200]; 1951 export type DeleteErrorResponseSuccess = DeleteErrorResponse[200];
1795 /** 1952 /**
1796 * @description 1953 * @description
1797 - * errorHtml 1954 + * error
1798 * @tags basic-error-controller 1955 * @tags basic-error-controller
1799 - * @produces text/html 1956 + * @produces *
1800 */ 1957 */
1801 export const deleteError = /* #__PURE__ */ (() => { 1958 export const deleteError = /* #__PURE__ */ (() => {
1802 const method = 'delete'; 1959 const method = 'delete';
@@ -1820,7 +1977,9 @@ export interface OptionsErrorResponse { @@ -1820,7 +1977,9 @@ export interface OptionsErrorResponse {
1820 * @description 1977 * @description
1821 * OK 1978 * OK
1822 */ 1979 */
1823 - 200: ModelAndView; 1980 + 200: {
  1981 + [propertyName: string]: any;
  1982 + };
1824 /** 1983 /**
1825 * @description 1984 * @description
1826 * No Content 1985 * No Content
@@ -1841,9 +2000,9 @@ export interface OptionsErrorResponse { @@ -1841,9 +2000,9 @@ export interface OptionsErrorResponse {
1841 export type OptionsErrorResponseSuccess = OptionsErrorResponse[200]; 2000 export type OptionsErrorResponseSuccess = OptionsErrorResponse[200];
1842 /** 2001 /**
1843 * @description 2002 * @description
1844 - * errorHtml 2003 + * error
1845 * @tags basic-error-controller 2004 * @tags basic-error-controller
1846 - * @produces text/html 2005 + * @produces *
1847 * @consumes application/json 2006 * @consumes application/json
1848 */ 2007 */
1849 export const optionsError = /* #__PURE__ */ (() => { 2008 export const optionsError = /* #__PURE__ */ (() => {
@@ -1868,7 +2027,9 @@ export interface HeadErrorResponse { @@ -1868,7 +2027,9 @@ export interface HeadErrorResponse {
1868 * @description 2027 * @description
1869 * OK 2028 * OK
1870 */ 2029 */
1871 - 200: ModelAndView; 2030 + 200: {
  2031 + [propertyName: string]: any;
  2032 + };
1872 /** 2033 /**
1873 * @description 2034 * @description
1874 * No Content 2035 * No Content
@@ -1889,9 +2050,9 @@ export interface HeadErrorResponse { @@ -1889,9 +2050,9 @@ export interface HeadErrorResponse {
1889 export type HeadErrorResponseSuccess = HeadErrorResponse[200]; 2050 export type HeadErrorResponseSuccess = HeadErrorResponse[200];
1890 /** 2051 /**
1891 * @description 2052 * @description
1892 - * errorHtml 2053 + * error
1893 * @tags basic-error-controller 2054 * @tags basic-error-controller
1894 - * @produces text/html 2055 + * @produces *
1895 * @consumes application/json 2056 * @consumes application/json
1896 */ 2057 */
1897 export const headError = /* #__PURE__ */ (() => { 2058 export const headError = /* #__PURE__ */ (() => {
@@ -1916,7 +2077,9 @@ export interface PatchErrorResponse { @@ -1916,7 +2077,9 @@ export interface PatchErrorResponse {
1916 * @description 2077 * @description
1917 * OK 2078 * OK
1918 */ 2079 */
1919 - 200: ModelAndView; 2080 + 200: {
  2081 + [propertyName: string]: any;
  2082 + };
1920 /** 2083 /**
1921 * @description 2084 * @description
1922 * No Content 2085 * No Content
@@ -1937,9 +2100,9 @@ export interface PatchErrorResponse { @@ -1937,9 +2100,9 @@ export interface PatchErrorResponse {
1937 export type PatchErrorResponseSuccess = PatchErrorResponse[200]; 2100 export type PatchErrorResponseSuccess = PatchErrorResponse[200];
1938 /** 2101 /**
1939 * @description 2102 * @description
1940 - * errorHtml 2103 + * error
1941 * @tags basic-error-controller 2104 * @tags basic-error-controller
1942 - * @produces text/html 2105 + * @produces *
1943 * @consumes application/json 2106 * @consumes application/json
1944 */ 2107 */
1945 export const patchError = /* #__PURE__ */ (() => { 2108 export const patchError = /* #__PURE__ */ (() => {
@@ -6134,22 +6297,22 @@ export const postOrderErpOrderQueryById = /* #__PURE__ */ (() =&gt; { @@ -6134,22 +6297,22 @@ export const postOrderErpOrderQueryById = /* #__PURE__ */ (() =&gt; {
6134 return request; 6297 return request;
6135 })(); 6298 })();
6136 6299
6137 -/** @description request parameter type for postOrderErpProfitAnalysis */  
6138 -export interface PostOrderErpProfitAnalysisOption { 6300 +/** @description request parameter type for postOrderErpOrderStagesAdd */
  6301 +export interface PostOrderErpOrderStagesAddOption {
6139 /** 6302 /**
6140 * @description 6303 * @description
6141 - * orderProfitAnalysisVo 6304 + * orderStagesFromDo
6142 */ 6305 */
6143 body: { 6306 body: {
6144 /** 6307 /**
6145 @description 6308 @description
6146 - orderProfitAnalysisVo */  
6147 - orderProfitAnalysisVo: OrderProfitAnalysisVo; 6309 + orderStagesFromDo */
  6310 + orderStagesFromDo: OrderStagesFromDo;
6148 }; 6311 };
6149 } 6312 }
6150 6313
6151 -/** @description response type for postOrderErpProfitAnalysis */  
6152 -export interface PostOrderErpProfitAnalysisResponse { 6314 +/** @description response type for postOrderErpOrderStagesAdd */
  6315 +export interface PostOrderErpOrderStagesAddResponse {
6153 /** 6316 /**
6154 * @description 6317 * @description
6155 * OK 6318 * OK
@@ -6177,25 +6340,25 @@ export interface PostOrderErpProfitAnalysisResponse { @@ -6177,25 +6340,25 @@ export interface PostOrderErpProfitAnalysisResponse {
6177 404: any; 6340 404: any;
6178 } 6341 }
6179 6342
6180 -export type PostOrderErpProfitAnalysisResponseSuccess =  
6181 - PostOrderErpProfitAnalysisResponse[200]; 6343 +export type PostOrderErpOrderStagesAddResponseSuccess =
  6344 + PostOrderErpOrderStagesAddResponse[200];
6182 /** 6345 /**
6183 * @description 6346 * @description
6184 - * analysis  
6185 - * @tags order-profit-controller 6347 + * 添加或者修改分期账单
  6348 + * @tags order-stages-controller
6186 * @produces * 6349 * @produces *
6187 * @consumes application/json 6350 * @consumes application/json
6188 */ 6351 */
6189 -export const postOrderErpProfitAnalysis = /* #__PURE__ */ (() => { 6352 +export const postOrderErpOrderStagesAdd = /* #__PURE__ */ (() => {
6190 const method = 'post'; 6353 const method = 'post';
6191 - const url = '/order/erp/profit/analysis'; 6354 + const url = '/order/erp/orderStages/add';
6192 function request( 6355 function request(
6193 - option: PostOrderErpProfitAnalysisOption,  
6194 - ): Promise<PostOrderErpProfitAnalysisResponseSuccess> { 6356 + option: PostOrderErpOrderStagesAddOption,
  6357 + ): Promise<PostOrderErpOrderStagesAddResponseSuccess> {
6195 return requester(request.url, { 6358 return requester(request.url, {
6196 method: request.method, 6359 method: request.method,
6197 ...option, 6360 ...option,
6198 - }) as unknown as Promise<PostOrderErpProfitAnalysisResponseSuccess>; 6361 + }) as unknown as Promise<PostOrderErpOrderStagesAddResponseSuccess>;
6199 } 6362 }
6200 6363
6201 /** http method */ 6364 /** http method */
@@ -6205,22 +6368,22 @@ export const postOrderErpProfitAnalysis = /* #__PURE__ */ (() =&gt; { @@ -6205,22 +6368,22 @@ export const postOrderErpProfitAnalysis = /* #__PURE__ */ (() =&gt; {
6205 return request; 6368 return request;
6206 })(); 6369 })();
6207 6370
6208 -/** @description request parameter type for postOrderErpRolesAdd */  
6209 -export interface PostOrderErpRolesAddOption { 6371 +/** @description request parameter type for deleteOrderErpOrderStagesDelect */
  6372 +export interface DeleteOrderErpOrderStagesDelectOption {
6210 /** 6373 /**
6211 * @description 6374 * @description
6212 - * roleVO 6375 + * orderStagesDelDo
6213 */ 6376 */
6214 body: { 6377 body: {
6215 /** 6378 /**
6216 @description 6379 @description
6217 - roleVO */  
6218 - roleVO: AdminRoleVO; 6380 + orderStagesDelDo */
  6381 + orderStagesDelDo: OrderStagesDelDo;
6219 }; 6382 };
6220 } 6383 }
6221 6384
6222 -/** @description response type for postOrderErpRolesAdd */  
6223 -export interface PostOrderErpRolesAddResponse { 6385 +/** @description response type for deleteOrderErpOrderStagesDelect */
  6386 +export interface DeleteOrderErpOrderStagesDelectResponse {
6224 /** 6387 /**
6225 * @description 6388 * @description
6226 * OK 6389 * OK
@@ -6228,9 +6391,9 @@ export interface PostOrderErpRolesAddResponse { @@ -6228,9 +6391,9 @@ export interface PostOrderErpRolesAddResponse {
6228 200: ServerResult; 6391 200: ServerResult;
6229 /** 6392 /**
6230 * @description 6393 * @description
6231 - * Created 6394 + * No Content
6232 */ 6395 */
6233 - 201: any; 6396 + 204: any;
6234 /** 6397 /**
6235 * @description 6398 * @description
6236 * Unauthorized 6399 * Unauthorized
@@ -6241,32 +6404,26 @@ export interface PostOrderErpRolesAddResponse { @@ -6241,32 +6404,26 @@ export interface PostOrderErpRolesAddResponse {
6241 * Forbidden 6404 * Forbidden
6242 */ 6405 */
6243 403: any; 6406 403: any;
6244 - /**  
6245 - * @description  
6246 - * Not Found  
6247 - */  
6248 - 404: any;  
6249 } 6407 }
6250 6408
6251 -export type PostOrderErpRolesAddResponseSuccess =  
6252 - PostOrderErpRolesAddResponse[200]; 6409 +export type DeleteOrderErpOrderStagesDelectResponseSuccess =
  6410 + DeleteOrderErpOrderStagesDelectResponse[200];
6253 /** 6411 /**
6254 * @description 6412 * @description
6255 - * 新增角色  
6256 - * @tags 系统:角色管理 6413 + * 删除分期账单
  6414 + * @tags order-stages-controller
6257 * @produces * 6415 * @produces *
6258 - * @consumes application/json  
6259 */ 6416 */
6260 -export const postOrderErpRolesAdd = /* #__PURE__ */ (() => {  
6261 - const method = 'post';  
6262 - const url = '/order/erp/roles/add'; 6417 +export const deleteOrderErpOrderStagesDelect = /* #__PURE__ */ (() => {
  6418 + const method = 'delete';
  6419 + const url = '/order/erp/orderStages/delect';
6263 function request( 6420 function request(
6264 - option: PostOrderErpRolesAddOption,  
6265 - ): Promise<PostOrderErpRolesAddResponseSuccess> { 6421 + option: DeleteOrderErpOrderStagesDelectOption,
  6422 + ): Promise<DeleteOrderErpOrderStagesDelectResponseSuccess> {
6266 return requester(request.url, { 6423 return requester(request.url, {
6267 method: request.method, 6424 method: request.method,
6268 ...option, 6425 ...option,
6269 - }) as unknown as Promise<PostOrderErpRolesAddResponseSuccess>; 6426 + }) as unknown as Promise<DeleteOrderErpOrderStagesDelectResponseSuccess>;
6270 } 6427 }
6271 6428
6272 /** http method */ 6429 /** http method */
@@ -6276,32 +6433,13 @@ export const postOrderErpRolesAdd = /* #__PURE__ */ (() =&gt; { @@ -6276,32 +6433,13 @@ export const postOrderErpRolesAdd = /* #__PURE__ */ (() =&gt; {
6276 return request; 6433 return request;
6277 })(); 6434 })();
6278 6435
6279 -/** @description request parameter type for postOrderErpRolesAll */  
6280 -export interface PostOrderErpRolesAllOption {  
6281 - /**  
6282 - * @description  
6283 - * queryVO  
6284 - */  
6285 - body: {  
6286 - /**  
6287 - @description  
6288 - queryVO */  
6289 - queryVO: AdminRoleQueryVO;  
6290 - };  
6291 -}  
6292 -  
6293 -/** @description response type for postOrderErpRolesAll */  
6294 -export interface PostOrderErpRolesAllResponse { 6436 +/** @description response type for getOrderErpOrderStagesExport */
  6437 +export interface GetOrderErpOrderStagesExportResponse {
6295 /** 6438 /**
6296 * @description 6439 * @description
6297 * OK 6440 * OK
6298 */ 6441 */
6299 - 200: ServerResult;  
6300 - /**  
6301 - * @description  
6302 - * Created  
6303 - */  
6304 - 201: any; 6442 + 200: any;
6305 /** 6443 /**
6306 * @description 6444 * @description
6307 * Unauthorized 6445 * Unauthorized
@@ -6319,25 +6457,21 @@ export interface PostOrderErpRolesAllResponse { @@ -6319,25 +6457,21 @@ export interface PostOrderErpRolesAllResponse {
6319 404: any; 6457 404: any;
6320 } 6458 }
6321 6459
6322 -export type PostOrderErpRolesAllResponseSuccess =  
6323 - PostOrderErpRolesAllResponse[200]; 6460 +export type GetOrderErpOrderStagesExportResponseSuccess =
  6461 + GetOrderErpOrderStagesExportResponse[200];
6324 /** 6462 /**
6325 * @description 6463 * @description
6326 - * 返回全部的角色  
6327 - * @tags 系统:角色管理 6464 + * 导出分期账单
  6465 + * @tags order-stages-controller
6328 * @produces * 6466 * @produces *
6329 - * @consumes application/json  
6330 */ 6467 */
6331 -export const postOrderErpRolesAll = /* #__PURE__ */ (() => {  
6332 - const method = 'post';  
6333 - const url = '/order/erp/roles/all';  
6334 - function request(  
6335 - option: PostOrderErpRolesAllOption,  
6336 - ): Promise<PostOrderErpRolesAllResponseSuccess> { 6468 +export const getOrderErpOrderStagesExport = /* #__PURE__ */ (() => {
  6469 + const method = 'get';
  6470 + const url = '/order/erp/orderStages/export';
  6471 + function request(): Promise<GetOrderErpOrderStagesExportResponseSuccess> {
6337 return requester(request.url, { 6472 return requester(request.url, {
6338 method: request.method, 6473 method: request.method,
6339 - ...option,  
6340 - }) as unknown as Promise<PostOrderErpRolesAllResponseSuccess>; 6474 + }) as unknown as Promise<GetOrderErpOrderStagesExportResponseSuccess>;
6341 } 6475 }
6342 6476
6343 /** http method */ 6477 /** http method */
@@ -6347,22 +6481,22 @@ export const postOrderErpRolesAll = /* #__PURE__ */ (() =&gt; { @@ -6347,22 +6481,22 @@ export const postOrderErpRolesAll = /* #__PURE__ */ (() =&gt; {
6347 return request; 6481 return request;
6348 })(); 6482 })();
6349 6483
6350 -/** @description request parameter type for postOrderErpRolesAuthMenu */  
6351 -export interface PostOrderErpRolesAuthMenuOption { 6484 +/** @description request parameter type for postOrderErpOrderStagesImport */
  6485 +export interface PostOrderErpOrderStagesImportOption {
6352 /** 6486 /**
6353 * @description 6487 * @description
6354 - * roleVO 6488 + * file
6355 */ 6489 */
6356 - body: { 6490 + formData: {
6357 /** 6491 /**
6358 @description 6492 @description
6359 - roleVO */  
6360 - roleVO: AdminAuthRoleVO; 6493 + file */
  6494 + file: File;
6361 }; 6495 };
6362 } 6496 }
6363 6497
6364 -/** @description response type for postOrderErpRolesAuthMenu */  
6365 -export interface PostOrderErpRolesAuthMenuResponse { 6498 +/** @description response type for postOrderErpOrderStagesImport */
  6499 +export interface PostOrderErpOrderStagesImportResponse {
6366 /** 6500 /**
6367 * @description 6501 * @description
6368 * OK 6502 * OK
@@ -6390,25 +6524,25 @@ export interface PostOrderErpRolesAuthMenuResponse { @@ -6390,25 +6524,25 @@ export interface PostOrderErpRolesAuthMenuResponse {
6390 404: any; 6524 404: any;
6391 } 6525 }
6392 6526
6393 -export type PostOrderErpRolesAuthMenuResponseSuccess =  
6394 - PostOrderErpRolesAuthMenuResponse[200]; 6527 +export type PostOrderErpOrderStagesImportResponseSuccess =
  6528 + PostOrderErpOrderStagesImportResponse[200];
6395 /** 6529 /**
6396 * @description 6530 * @description
6397 - * 授权角色菜单  
6398 - * @tags 系统:角色管理 6531 + * 导入分期账单
  6532 + * @tags order-stages-controller
6399 * @produces * 6533 * @produces *
6400 - * @consumes application/json 6534 + * @consumes multipart/form-data
6401 */ 6535 */
6402 -export const postOrderErpRolesAuthMenu = /* #__PURE__ */ (() => { 6536 +export const postOrderErpOrderStagesImport = /* #__PURE__ */ (() => {
6403 const method = 'post'; 6537 const method = 'post';
6404 - const url = '/order/erp/roles/auth_menu'; 6538 + const url = '/order/erp/orderStages/import';
6405 function request( 6539 function request(
6406 - option: PostOrderErpRolesAuthMenuOption,  
6407 - ): Promise<PostOrderErpRolesAuthMenuResponseSuccess> { 6540 + option: PostOrderErpOrderStagesImportOption,
  6541 + ): Promise<PostOrderErpOrderStagesImportResponseSuccess> {
6408 return requester(request.url, { 6542 return requester(request.url, {
6409 method: request.method, 6543 method: request.method,
6410 ...option, 6544 ...option,
6411 - }) as unknown as Promise<PostOrderErpRolesAuthMenuResponseSuccess>; 6545 + }) as unknown as Promise<PostOrderErpOrderStagesImportResponseSuccess>;
6412 } 6546 }
6413 6547
6414 /** http method */ 6548 /** http method */
@@ -6418,22 +6552,8 @@ export const postOrderErpRolesAuthMenu = /* #__PURE__ */ (() =&gt; { @@ -6418,22 +6552,8 @@ export const postOrderErpRolesAuthMenu = /* #__PURE__ */ (() =&gt; {
6418 return request; 6552 return request;
6419 })(); 6553 })();
6420 6554
6421 -/** @description request parameter type for postOrderErpRolesDelete */  
6422 -export interface PostOrderErpRolesDeleteOption {  
6423 - /**  
6424 - * @description  
6425 - * queryVO  
6426 - */  
6427 - body: {  
6428 - /**  
6429 - @description  
6430 - queryVO */  
6431 - queryVO: AdminRoleQueryVO;  
6432 - };  
6433 -}  
6434 -  
6435 -/** @description response type for postOrderErpRolesDelete */  
6436 -export interface PostOrderErpRolesDeleteResponse { 6555 +/** @description response type for getOrderErpOrderStagesListAll */
  6556 +export interface GetOrderErpOrderStagesListAllResponse {
6437 /** 6557 /**
6438 * @description 6558 * @description
6439 * OK 6559 * OK
@@ -6441,11 +6561,6 @@ export interface PostOrderErpRolesDeleteResponse { @@ -6441,11 +6561,6 @@ export interface PostOrderErpRolesDeleteResponse {
6441 200: ServerResult; 6561 200: ServerResult;
6442 /** 6562 /**
6443 * @description 6563 * @description
6444 - * Created  
6445 - */  
6446 - 201: any;  
6447 - /**  
6448 - * @description  
6449 * Unauthorized 6564 * Unauthorized
6450 */ 6565 */
6451 401: any; 6566 401: any;
@@ -6461,25 +6576,21 @@ export interface PostOrderErpRolesDeleteResponse { @@ -6461,25 +6576,21 @@ export interface PostOrderErpRolesDeleteResponse {
6461 404: any; 6576 404: any;
6462 } 6577 }
6463 6578
6464 -export type PostOrderErpRolesDeleteResponseSuccess =  
6465 - PostOrderErpRolesDeleteResponse[200]; 6579 +export type GetOrderErpOrderStagesListAllResponseSuccess =
  6580 + GetOrderErpOrderStagesListAllResponse[200];
6466 /** 6581 /**
6467 * @description 6582 * @description
6468 - * 删除角色  
6469 - * @tags 系统:角色管理 6583 + * 查询所有分期账单
  6584 + * @tags order-stages-controller
6470 * @produces * 6585 * @produces *
6471 - * @consumes application/json  
6472 */ 6586 */
6473 -export const postOrderErpRolesDelete = /* #__PURE__ */ (() => {  
6474 - const method = 'post';  
6475 - const url = '/order/erp/roles/delete';  
6476 - function request(  
6477 - option: PostOrderErpRolesDeleteOption,  
6478 - ): Promise<PostOrderErpRolesDeleteResponseSuccess> { 6587 +export const getOrderErpOrderStagesListAll = /* #__PURE__ */ (() => {
  6588 + const method = 'get';
  6589 + const url = '/order/erp/orderStages/listAll';
  6590 + function request(): Promise<GetOrderErpOrderStagesListAllResponseSuccess> {
6479 return requester(request.url, { 6591 return requester(request.url, {
6480 method: request.method, 6592 method: request.method,
6481 - ...option,  
6482 - }) as unknown as Promise<PostOrderErpRolesDeleteResponseSuccess>; 6593 + }) as unknown as Promise<GetOrderErpOrderStagesListAllResponseSuccess>;
6483 } 6594 }
6484 6595
6485 /** http method */ 6596 /** http method */
@@ -6489,22 +6600,22 @@ export const postOrderErpRolesDelete = /* #__PURE__ */ (() =&gt; { @@ -6489,22 +6600,22 @@ export const postOrderErpRolesDelete = /* #__PURE__ */ (() =&gt; {
6489 return request; 6600 return request;
6490 })(); 6601 })();
6491 6602
6492 -/** @description request parameter type for postOrderErpRolesDetail */  
6493 -export interface PostOrderErpRolesDetailOption { 6603 +/** @description request parameter type for postOrderErpOrderStagesSaveOrUpdate */
  6604 +export interface PostOrderErpOrderStagesSaveOrUpdateOption {
6494 /** 6605 /**
6495 * @description 6606 * @description
6496 - * queryVO 6607 + * orderStagesFromDo
6497 */ 6608 */
6498 body: { 6609 body: {
6499 /** 6610 /**
6500 @description 6611 @description
6501 - queryVO */  
6502 - queryVO: AdminRoleQueryVO; 6612 + orderStagesFromDo */
  6613 + orderStagesFromDo: OrderStagesFromDo;
6503 }; 6614 };
6504 } 6615 }
6505 6616
6506 -/** @description response type for postOrderErpRolesDetail */  
6507 -export interface PostOrderErpRolesDetailResponse { 6617 +/** @description response type for postOrderErpOrderStagesSaveOrUpdate */
  6618 +export interface PostOrderErpOrderStagesSaveOrUpdateResponse {
6508 /** 6619 /**
6509 * @description 6620 * @description
6510 * OK 6621 * OK
@@ -6532,25 +6643,25 @@ export interface PostOrderErpRolesDetailResponse { @@ -6532,25 +6643,25 @@ export interface PostOrderErpRolesDetailResponse {
6532 404: any; 6643 404: any;
6533 } 6644 }
6534 6645
6535 -export type PostOrderErpRolesDetailResponseSuccess =  
6536 - PostOrderErpRolesDetailResponse[200]; 6646 +export type PostOrderErpOrderStagesSaveOrUpdateResponseSuccess =
  6647 + PostOrderErpOrderStagesSaveOrUpdateResponse[200];
6537 /** 6648 /**
6538 * @description 6649 * @description
6539 - * 获取单个role  
6540 - * @tags 系统:角色管理 6650 + * 添加或者修改分期账单
  6651 + * @tags order-stages-controller
6541 * @produces * 6652 * @produces *
6542 * @consumes application/json 6653 * @consumes application/json
6543 */ 6654 */
6544 -export const postOrderErpRolesDetail = /* #__PURE__ */ (() => { 6655 +export const postOrderErpOrderStagesSaveOrUpdate = /* #__PURE__ */ (() => {
6545 const method = 'post'; 6656 const method = 'post';
6546 - const url = '/order/erp/roles/detail'; 6657 + const url = '/order/erp/orderStages/saveOrUpdate';
6547 function request( 6658 function request(
6548 - option: PostOrderErpRolesDetailOption,  
6549 - ): Promise<PostOrderErpRolesDetailResponseSuccess> { 6659 + option: PostOrderErpOrderStagesSaveOrUpdateOption,
  6660 + ): Promise<PostOrderErpOrderStagesSaveOrUpdateResponseSuccess> {
6550 return requester(request.url, { 6661 return requester(request.url, {
6551 method: request.method, 6662 method: request.method,
6552 ...option, 6663 ...option,
6553 - }) as unknown as Promise<PostOrderErpRolesDetailResponseSuccess>; 6664 + }) as unknown as Promise<PostOrderErpOrderStagesSaveOrUpdateResponseSuccess>;
6554 } 6665 }
6555 6666
6556 /** http method */ 6667 /** http method */
@@ -6560,22 +6671,22 @@ export const postOrderErpRolesDetail = /* #__PURE__ */ (() =&gt; { @@ -6560,22 +6671,22 @@ export const postOrderErpRolesDetail = /* #__PURE__ */ (() =&gt; {
6560 return request; 6671 return request;
6561 })(); 6672 })();
6562 6673
6563 -/** @description request parameter type for postOrderErpRolesEdit */  
6564 -export interface PostOrderErpRolesEditOption { 6674 +/** @description request parameter type for postOrderErpOrderStagesSearch */
  6675 +export interface PostOrderErpOrderStagesSearchOption {
6565 /** 6676 /**
6566 * @description 6677 * @description
6567 - * roleVO 6678 + * orderStagesSelDo
6568 */ 6679 */
6569 body: { 6680 body: {
6570 /** 6681 /**
6571 @description 6682 @description
6572 - roleVO */  
6573 - roleVO: AdminRoleVO; 6683 + orderStagesSelDo */
  6684 + orderStagesSelDo: OrderStagesSelDo;
6574 }; 6685 };
6575 } 6686 }
6576 6687
6577 -/** @description response type for postOrderErpRolesEdit */  
6578 -export interface PostOrderErpRolesEditResponse { 6688 +/** @description response type for postOrderErpOrderStagesSearch */
  6689 +export interface PostOrderErpOrderStagesSearchResponse {
6579 /** 6690 /**
6580 * @description 6691 * @description
6581 * OK 6692 * OK
@@ -6603,25 +6714,25 @@ export interface PostOrderErpRolesEditResponse { @@ -6603,25 +6714,25 @@ export interface PostOrderErpRolesEditResponse {
6603 404: any; 6714 404: any;
6604 } 6715 }
6605 6716
6606 -export type PostOrderErpRolesEditResponseSuccess =  
6607 - PostOrderErpRolesEditResponse[200]; 6717 +export type PostOrderErpOrderStagesSearchResponseSuccess =
  6718 + PostOrderErpOrderStagesSearchResponse[200];
6608 /** 6719 /**
6609 * @description 6720 * @description
6610 - * 修改角色  
6611 - * @tags 系统:角色管理 6721 + * 条件搜索分期账单
  6722 + * @tags order-stages-controller
6612 * @produces * 6723 * @produces *
6613 * @consumes application/json 6724 * @consumes application/json
6614 */ 6725 */
6615 -export const postOrderErpRolesEdit = /* #__PURE__ */ (() => { 6726 +export const postOrderErpOrderStagesSearch = /* #__PURE__ */ (() => {
6616 const method = 'post'; 6727 const method = 'post';
6617 - const url = '/order/erp/roles/edit'; 6728 + const url = '/order/erp/orderStages/search';
6618 function request( 6729 function request(
6619 - option: PostOrderErpRolesEditOption,  
6620 - ): Promise<PostOrderErpRolesEditResponseSuccess> { 6730 + option: PostOrderErpOrderStagesSearchOption,
  6731 + ): Promise<PostOrderErpOrderStagesSearchResponseSuccess> {
6621 return requester(request.url, { 6732 return requester(request.url, {
6622 method: request.method, 6733 method: request.method,
6623 ...option, 6734 ...option,
6624 - }) as unknown as Promise<PostOrderErpRolesEditResponseSuccess>; 6735 + }) as unknown as Promise<PostOrderErpOrderStagesSearchResponseSuccess>;
6625 } 6736 }
6626 6737
6627 /** http method */ 6738 /** http method */
@@ -6631,22 +6742,22 @@ export const postOrderErpRolesEdit = /* #__PURE__ */ (() =&gt; { @@ -6631,22 +6742,22 @@ export const postOrderErpRolesEdit = /* #__PURE__ */ (() =&gt; {
6631 return request; 6742 return request;
6632 })(); 6743 })();
6633 6744
6634 -/** @description request parameter type for postOrderErpRolesListByPage */  
6635 -export interface PostOrderErpRolesListByPageOption { 6745 +/** @description request parameter type for postOrderErpOrderStagesUpload */
  6746 +export interface PostOrderErpOrderStagesUploadOption {
6636 /** 6747 /**
6637 * @description 6748 * @description
6638 - * queryVO 6749 + * file
6639 */ 6750 */
6640 - body: { 6751 + formData: {
6641 /** 6752 /**
6642 @description 6753 @description
6643 - queryVO */  
6644 - queryVO: AdminRoleQueryVO; 6754 + file */
  6755 + file: File;
6645 }; 6756 };
6646 } 6757 }
6647 6758
6648 -/** @description response type for postOrderErpRolesListByPage */  
6649 -export interface PostOrderErpRolesListByPageResponse { 6759 +/** @description response type for postOrderErpOrderStagesUpload */
  6760 +export interface PostOrderErpOrderStagesUploadResponse {
6650 /** 6761 /**
6651 * @description 6762 * @description
6652 * OK 6763 * OK
@@ -6674,25 +6785,25 @@ export interface PostOrderErpRolesListByPageResponse { @@ -6674,25 +6785,25 @@ export interface PostOrderErpRolesListByPageResponse {
6674 404: any; 6785 404: any;
6675 } 6786 }
6676 6787
6677 -export type PostOrderErpRolesListByPageResponseSuccess =  
6678 - PostOrderErpRolesListByPageResponse[200]; 6788 +export type PostOrderErpOrderStagesUploadResponseSuccess =
  6789 + PostOrderErpOrderStagesUploadResponse[200];
6679 /** 6790 /**
6680 * @description 6791 * @description
6681 - * 查询角色  
6682 - * @tags 系统:角色管理 6792 + * 合同文件上传
  6793 + * @tags order-stages-controller
6683 * @produces * 6794 * @produces *
6684 - * @consumes application/json 6795 + * @consumes multipart/form-data
6685 */ 6796 */
6686 -export const postOrderErpRolesListByPage = /* #__PURE__ */ (() => { 6797 +export const postOrderErpOrderStagesUpload = /* #__PURE__ */ (() => {
6687 const method = 'post'; 6798 const method = 'post';
6688 - const url = '/order/erp/roles/list_by_page'; 6799 + const url = '/order/erp/orderStages/upload';
6689 function request( 6800 function request(
6690 - option: PostOrderErpRolesListByPageOption,  
6691 - ): Promise<PostOrderErpRolesListByPageResponseSuccess> { 6801 + option: PostOrderErpOrderStagesUploadOption,
  6802 + ): Promise<PostOrderErpOrderStagesUploadResponseSuccess> {
6692 return requester(request.url, { 6803 return requester(request.url, {
6693 method: request.method, 6804 method: request.method,
6694 ...option, 6805 ...option,
6695 - }) as unknown as Promise<PostOrderErpRolesListByPageResponseSuccess>; 6806 + }) as unknown as Promise<PostOrderErpOrderStagesUploadResponseSuccess>;
6696 } 6807 }
6697 6808
6698 /** http method */ 6809 /** http method */
@@ -6702,22 +6813,22 @@ export const postOrderErpRolesListByPage = /* #__PURE__ */ (() =&gt; { @@ -6702,22 +6813,22 @@ export const postOrderErpRolesListByPage = /* #__PURE__ */ (() =&gt; {
6702 return request; 6813 return request;
6703 })(); 6814 })();
6704 6815
6705 -/** @description request parameter type for postOrderErpUsersAdd */  
6706 -export interface PostOrderErpUsersAddOption { 6816 +/** @description request parameter type for postOrderErpOrderStagesPayWaySaveOrUpdate */
  6817 +export interface PostOrderErpOrderStagesPayWaySaveOrUpdateOption {
6707 /** 6818 /**
6708 * @description 6819 * @description
6709 - * userVO 6820 + * orderStagesPayWayList
6710 */ 6821 */
6711 body: { 6822 body: {
6712 /** 6823 /**
6713 @description 6824 @description
6714 - userVO */  
6715 - userVO: AdminUserVO; 6825 + orderStagesPayWayList */
  6826 + orderStagesPayWayList: Array<OrderStagesPayWay>;
6716 }; 6827 };
6717 } 6828 }
6718 6829
6719 -/** @description response type for postOrderErpUsersAdd */  
6720 -export interface PostOrderErpUsersAddResponse { 6830 +/** @description response type for postOrderErpOrderStagesPayWaySaveOrUpdate */
  6831 +export interface PostOrderErpOrderStagesPayWaySaveOrUpdateResponse {
6721 /** 6832 /**
6722 * @description 6833 * @description
6723 * OK 6834 * OK
@@ -6745,50 +6856,51 @@ export interface PostOrderErpUsersAddResponse { @@ -6745,50 +6856,51 @@ export interface PostOrderErpUsersAddResponse {
6745 404: any; 6856 404: any;
6746 } 6857 }
6747 6858
6748 -export type PostOrderErpUsersAddResponseSuccess =  
6749 - PostOrderErpUsersAddResponse[200]; 6859 +export type PostOrderErpOrderStagesPayWaySaveOrUpdateResponseSuccess =
  6860 + PostOrderErpOrderStagesPayWaySaveOrUpdateResponse[200];
6750 /** 6861 /**
6751 * @description 6862 * @description
6752 - * 新增用户  
6753 - * @tags 系统:用户管理 6863 + * 修改或者保存
  6864 + * @tags order-stages-pay-way-controller
6754 * @produces * 6865 * @produces *
6755 * @consumes application/json 6866 * @consumes application/json
6756 */ 6867 */
6757 -export const postOrderErpUsersAdd = /* #__PURE__ */ (() => {  
6758 - const method = 'post';  
6759 - const url = '/order/erp/users/add';  
6760 - function request(  
6761 - option: PostOrderErpUsersAddOption,  
6762 - ): Promise<PostOrderErpUsersAddResponseSuccess> {  
6763 - return requester(request.url, {  
6764 - method: request.method,  
6765 - ...option,  
6766 - }) as unknown as Promise<PostOrderErpUsersAddResponseSuccess>;  
6767 - } 6868 +export const postOrderErpOrderStagesPayWaySaveOrUpdate =
  6869 + /* #__PURE__ */ (() => {
  6870 + const method = 'post';
  6871 + const url = '/order/erp/orderStagesPayWay/saveOrUpdate';
  6872 + function request(
  6873 + option: PostOrderErpOrderStagesPayWaySaveOrUpdateOption,
  6874 + ): Promise<PostOrderErpOrderStagesPayWaySaveOrUpdateResponseSuccess> {
  6875 + return requester(request.url, {
  6876 + method: request.method,
  6877 + ...option,
  6878 + }) as unknown as Promise<PostOrderErpOrderStagesPayWaySaveOrUpdateResponseSuccess>;
  6879 + }
6768 6880
6769 - /** http method */  
6770 - request.method = method;  
6771 - /** request url */  
6772 - request.url = url;  
6773 - return request;  
6774 -})(); 6881 + /** http method */
  6882 + request.method = method;
  6883 + /** request url */
  6884 + request.url = url;
  6885 + return request;
  6886 + })();
6775 6887
6776 -/** @description request parameter type for postOrderErpUsersAuthRole */  
6777 -export interface PostOrderErpUsersAuthRoleOption { 6888 +/** @description request parameter type for postOrderErpOrderStagesPayWaySelect */
  6889 +export interface PostOrderErpOrderStagesPayWaySelectOption {
6778 /** 6890 /**
6779 * @description 6891 * @description
6780 - * userVO 6892 + * orderStagesPayWayDo
6781 */ 6893 */
6782 body: { 6894 body: {
6783 /** 6895 /**
6784 @description 6896 @description
6785 - userVO */  
6786 - userVO: AdminAuthUserVO; 6897 + orderStagesPayWayDo */
  6898 + orderStagesPayWayDo: OrderStagesPayWayDo;
6787 }; 6899 };
6788 } 6900 }
6789 6901
6790 -/** @description response type for postOrderErpUsersAuthRole */  
6791 -export interface PostOrderErpUsersAuthRoleResponse { 6902 +/** @description response type for postOrderErpOrderStagesPayWaySelect */
  6903 +export interface PostOrderErpOrderStagesPayWaySelectResponse {
6792 /** 6904 /**
6793 * @description 6905 * @description
6794 * OK 6906 * OK
@@ -6816,25 +6928,25 @@ export interface PostOrderErpUsersAuthRoleResponse { @@ -6816,25 +6928,25 @@ export interface PostOrderErpUsersAuthRoleResponse {
6816 404: any; 6928 404: any;
6817 } 6929 }
6818 6930
6819 -export type PostOrderErpUsersAuthRoleResponseSuccess =  
6820 - PostOrderErpUsersAuthRoleResponse[200]; 6931 +export type PostOrderErpOrderStagesPayWaySelectResponseSuccess =
  6932 + PostOrderErpOrderStagesPayWaySelectResponse[200];
6821 /** 6933 /**
6822 * @description 6934 * @description
6823 - * 授权角色  
6824 - * @tags 系统:用户管理 6935 + * 查询该的分期比例
  6936 + * @tags order-stages-pay-way-controller
6825 * @produces * 6937 * @produces *
6826 * @consumes application/json 6938 * @consumes application/json
6827 */ 6939 */
6828 -export const postOrderErpUsersAuthRole = /* #__PURE__ */ (() => { 6940 +export const postOrderErpOrderStagesPayWaySelect = /* #__PURE__ */ (() => {
6829 const method = 'post'; 6941 const method = 'post';
6830 - const url = '/order/erp/users/auth_role'; 6942 + const url = '/order/erp/orderStagesPayWay/select';
6831 function request( 6943 function request(
6832 - option: PostOrderErpUsersAuthRoleOption,  
6833 - ): Promise<PostOrderErpUsersAuthRoleResponseSuccess> { 6944 + option: PostOrderErpOrderStagesPayWaySelectOption,
  6945 + ): Promise<PostOrderErpOrderStagesPayWaySelectResponseSuccess> {
6834 return requester(request.url, { 6946 return requester(request.url, {
6835 method: request.method, 6947 method: request.method,
6836 ...option, 6948 ...option,
6837 - }) as unknown as Promise<PostOrderErpUsersAuthRoleResponseSuccess>; 6949 + }) as unknown as Promise<PostOrderErpOrderStagesPayWaySelectResponseSuccess>;
6838 } 6950 }
6839 6951
6840 /** http method */ 6952 /** http method */
@@ -6844,22 +6956,22 @@ export const postOrderErpUsersAuthRole = /* #__PURE__ */ (() =&gt; { @@ -6844,22 +6956,22 @@ export const postOrderErpUsersAuthRole = /* #__PURE__ */ (() =&gt; {
6844 return request; 6956 return request;
6845 })(); 6957 })();
6846 6958
6847 -/** @description request parameter type for postOrderErpUsersDelete */  
6848 -export interface PostOrderErpUsersDeleteOption { 6959 +/** @description request parameter type for postOrderErpOrderStagesPayWayUploadForPayWay */
  6960 +export interface PostOrderErpOrderStagesPayWayUploadForPayWayOption {
6849 /** 6961 /**
6850 * @description 6962 * @description
6851 - * queryVO 6963 + * orderStagesPayWayFileDo
6852 */ 6964 */
6853 body: { 6965 body: {
6854 /** 6966 /**
6855 @description 6967 @description
6856 - queryVO */  
6857 - queryVO: AdminUserQueryVO; 6968 + orderStagesPayWayFileDo */
  6969 + orderStagesPayWayFileDo: OrderStagesPayWayFileDo;
6858 }; 6970 };
6859 } 6971 }
6860 6972
6861 -/** @description response type for postOrderErpUsersDelete */  
6862 -export interface PostOrderErpUsersDeleteResponse { 6973 +/** @description response type for postOrderErpOrderStagesPayWayUploadForPayWay */
  6974 +export interface PostOrderErpOrderStagesPayWayUploadForPayWayResponse {
6863 /** 6975 /**
6864 * @description 6976 * @description
6865 * OK 6977 * OK
@@ -6887,50 +6999,51 @@ export interface PostOrderErpUsersDeleteResponse { @@ -6887,50 +6999,51 @@ export interface PostOrderErpUsersDeleteResponse {
6887 404: any; 6999 404: any;
6888 } 7000 }
6889 7001
6890 -export type PostOrderErpUsersDeleteResponseSuccess =  
6891 - PostOrderErpUsersDeleteResponse[200]; 7002 +export type PostOrderErpOrderStagesPayWayUploadForPayWayResponseSuccess =
  7003 + PostOrderErpOrderStagesPayWayUploadForPayWayResponse[200];
6892 /** 7004 /**
6893 * @description 7005 * @description
6894 - * 删除用户  
6895 - * @tags 系统:用户管理 7006 + * 付款合同文件上传
  7007 + * @tags order-stages-pay-way-controller
6896 * @produces * 7008 * @produces *
6897 * @consumes application/json 7009 * @consumes application/json
6898 */ 7010 */
6899 -export const postOrderErpUsersDelete = /* #__PURE__ */ (() => {  
6900 - const method = 'post';  
6901 - const url = '/order/erp/users/delete';  
6902 - function request(  
6903 - option: PostOrderErpUsersDeleteOption,  
6904 - ): Promise<PostOrderErpUsersDeleteResponseSuccess> {  
6905 - return requester(request.url, {  
6906 - method: request.method,  
6907 - ...option,  
6908 - }) as unknown as Promise<PostOrderErpUsersDeleteResponseSuccess>;  
6909 - } 7011 +export const postOrderErpOrderStagesPayWayUploadForPayWay =
  7012 + /* #__PURE__ */ (() => {
  7013 + const method = 'post';
  7014 + const url = '/order/erp/orderStagesPayWay/uploadForPayWay';
  7015 + function request(
  7016 + option: PostOrderErpOrderStagesPayWayUploadForPayWayOption,
  7017 + ): Promise<PostOrderErpOrderStagesPayWayUploadForPayWayResponseSuccess> {
  7018 + return requester(request.url, {
  7019 + method: request.method,
  7020 + ...option,
  7021 + }) as unknown as Promise<PostOrderErpOrderStagesPayWayUploadForPayWayResponseSuccess>;
  7022 + }
6910 7023
6911 - /** http method */  
6912 - request.method = method;  
6913 - /** request url */  
6914 - request.url = url;  
6915 - return request;  
6916 -})(); 7024 + /** http method */
  7025 + request.method = method;
  7026 + /** request url */
  7027 + request.url = url;
  7028 + return request;
  7029 + })();
6917 7030
6918 -/** @description request parameter type for postOrderErpUsersEdit */  
6919 -export interface PostOrderErpUsersEditOption { 7031 +/** @description request parameter type for postOrderErpProfitAnalysis */
  7032 +export interface PostOrderErpProfitAnalysisOption {
6920 /** 7033 /**
6921 * @description 7034 * @description
6922 - * userVO 7035 + * orderProfitAnalysisVo
6923 */ 7036 */
6924 body: { 7037 body: {
6925 /** 7038 /**
6926 @description 7039 @description
6927 - userVO */  
6928 - userVO: AdminUserVO; 7040 + orderProfitAnalysisVo */
  7041 + orderProfitAnalysisVo: OrderProfitAnalysisVo;
6929 }; 7042 };
6930 } 7043 }
6931 7044
6932 -/** @description response type for postOrderErpUsersEdit */  
6933 -export interface PostOrderErpUsersEditResponse { 7045 +/** @description response type for postOrderErpProfitAnalysis */
  7046 +export interface PostOrderErpProfitAnalysisResponse {
6934 /** 7047 /**
6935 * @description 7048 * @description
6936 * OK 7049 * OK
@@ -6958,25 +7071,25 @@ export interface PostOrderErpUsersEditResponse { @@ -6958,25 +7071,25 @@ export interface PostOrderErpUsersEditResponse {
6958 404: any; 7071 404: any;
6959 } 7072 }
6960 7073
6961 -export type PostOrderErpUsersEditResponseSuccess =  
6962 - PostOrderErpUsersEditResponse[200]; 7074 +export type PostOrderErpProfitAnalysisResponseSuccess =
  7075 + PostOrderErpProfitAnalysisResponse[200];
6963 /** 7076 /**
6964 * @description 7077 * @description
6965 - * 修改用户  
6966 - * @tags 系统:用户管理 7078 + * analysis
  7079 + * @tags order-profit-controller
6967 * @produces * 7080 * @produces *
6968 * @consumes application/json 7081 * @consumes application/json
6969 */ 7082 */
6970 -export const postOrderErpUsersEdit = /* #__PURE__ */ (() => { 7083 +export const postOrderErpProfitAnalysis = /* #__PURE__ */ (() => {
6971 const method = 'post'; 7084 const method = 'post';
6972 - const url = '/order/erp/users/edit'; 7085 + const url = '/order/erp/profit/analysis';
6973 function request( 7086 function request(
6974 - option: PostOrderErpUsersEditOption,  
6975 - ): Promise<PostOrderErpUsersEditResponseSuccess> { 7087 + option: PostOrderErpProfitAnalysisOption,
  7088 + ): Promise<PostOrderErpProfitAnalysisResponseSuccess> {
6976 return requester(request.url, { 7089 return requester(request.url, {
6977 method: request.method, 7090 method: request.method,
6978 ...option, 7091 ...option,
6979 - }) as unknown as Promise<PostOrderErpUsersEditResponseSuccess>; 7092 + }) as unknown as Promise<PostOrderErpProfitAnalysisResponseSuccess>;
6980 } 7093 }
6981 7094
6982 /** http method */ 7095 /** http method */
@@ -6986,22 +7099,22 @@ export const postOrderErpUsersEdit = /* #__PURE__ */ (() =&gt; { @@ -6986,22 +7099,22 @@ export const postOrderErpUsersEdit = /* #__PURE__ */ (() =&gt; {
6986 return request; 7099 return request;
6987 })(); 7100 })();
6988 7101
6989 -/** @description request parameter type for postOrderErpUsersListByPage */  
6990 -export interface PostOrderErpUsersListByPageOption { 7102 +/** @description request parameter type for postOrderErpRolesAdd */
  7103 +export interface PostOrderErpRolesAddOption {
6991 /** 7104 /**
6992 * @description 7105 * @description
6993 - * queryVO 7106 + * roleVO
6994 */ 7107 */
6995 body: { 7108 body: {
6996 /** 7109 /**
6997 @description 7110 @description
6998 - queryVO */  
6999 - queryVO: AdminUserQueryVO; 7111 + roleVO */
  7112 + roleVO: AdminRoleVO;
7000 }; 7113 };
7001 } 7114 }
7002 7115
7003 -/** @description response type for postOrderErpUsersListByPage */  
7004 -export interface PostOrderErpUsersListByPageResponse { 7116 +/** @description response type for postOrderErpRolesAdd */
  7117 +export interface PostOrderErpRolesAddResponse {
7005 /** 7118 /**
7006 * @description 7119 * @description
7007 * OK 7120 * OK
@@ -7029,25 +7142,25 @@ export interface PostOrderErpUsersListByPageResponse { @@ -7029,25 +7142,25 @@ export interface PostOrderErpUsersListByPageResponse {
7029 404: any; 7142 404: any;
7030 } 7143 }
7031 7144
7032 -export type PostOrderErpUsersListByPageResponseSuccess =  
7033 - PostOrderErpUsersListByPageResponse[200]; 7145 +export type PostOrderErpRolesAddResponseSuccess =
  7146 + PostOrderErpRolesAddResponse[200];
7034 /** 7147 /**
7035 * @description 7148 * @description
7036 - * 查询用户  
7037 - * @tags 系统:用户管理 7149 + * 新增角色
  7150 + * @tags 系统:角色管理
7038 * @produces * 7151 * @produces *
7039 * @consumes application/json 7152 * @consumes application/json
7040 */ 7153 */
7041 -export const postOrderErpUsersListByPage = /* #__PURE__ */ (() => { 7154 +export const postOrderErpRolesAdd = /* #__PURE__ */ (() => {
7042 const method = 'post'; 7155 const method = 'post';
7043 - const url = '/order/erp/users/list_by_page'; 7156 + const url = '/order/erp/roles/add';
7044 function request( 7157 function request(
7045 - option: PostOrderErpUsersListByPageOption,  
7046 - ): Promise<PostOrderErpUsersListByPageResponseSuccess> { 7158 + option: PostOrderErpRolesAddOption,
  7159 + ): Promise<PostOrderErpRolesAddResponseSuccess> {
7047 return requester(request.url, { 7160 return requester(request.url, {
7048 method: request.method, 7161 method: request.method,
7049 ...option, 7162 ...option,
7050 - }) as unknown as Promise<PostOrderErpUsersListByPageResponseSuccess>; 7163 + }) as unknown as Promise<PostOrderErpRolesAddResponseSuccess>;
7051 } 7164 }
7052 7165
7053 /** http method */ 7166 /** http method */
@@ -7057,22 +7170,22 @@ export const postOrderErpUsersListByPage = /* #__PURE__ */ (() =&gt; { @@ -7057,22 +7170,22 @@ export const postOrderErpUsersListByPage = /* #__PURE__ */ (() =&gt; {
7057 return request; 7170 return request;
7058 })(); 7171 })();
7059 7172
7060 -/** @description request parameter type for postOrderErpUsersReset */  
7061 -export interface PostOrderErpUsersResetOption { 7173 +/** @description request parameter type for postOrderErpRolesAll */
  7174 +export interface PostOrderErpRolesAllOption {
7062 /** 7175 /**
7063 * @description 7176 * @description
7064 - * resetPwdVO 7177 + * queryVO
7065 */ 7178 */
7066 body: { 7179 body: {
7067 /** 7180 /**
7068 @description 7181 @description
7069 - resetPwdVO */  
7070 - resetPwdVO: ResetPwdVO; 7182 + queryVO */
  7183 + queryVO: AdminRoleQueryVO;
7071 }; 7184 };
7072 } 7185 }
7073 7186
7074 -/** @description response type for postOrderErpUsersReset */  
7075 -export interface PostOrderErpUsersResetResponse { 7187 +/** @description response type for postOrderErpRolesAll */
  7188 +export interface PostOrderErpRolesAllResponse {
7076 /** 7189 /**
7077 * @description 7190 * @description
7078 * OK 7191 * OK
@@ -7100,25 +7213,25 @@ export interface PostOrderErpUsersResetResponse { @@ -7100,25 +7213,25 @@ export interface PostOrderErpUsersResetResponse {
7100 404: any; 7213 404: any;
7101 } 7214 }
7102 7215
7103 -export type PostOrderErpUsersResetResponseSuccess =  
7104 - PostOrderErpUsersResetResponse[200]; 7216 +export type PostOrderErpRolesAllResponseSuccess =
  7217 + PostOrderErpRolesAllResponse[200];
7105 /** 7218 /**
7106 * @description 7219 * @description
7107 - * 重置密码  
7108 - * @tags 系统:用户管理 7220 + * 返回全部的角色
  7221 + * @tags 系统:角色管理
7109 * @produces * 7222 * @produces *
7110 * @consumes application/json 7223 * @consumes application/json
7111 */ 7224 */
7112 -export const postOrderErpUsersReset = /* #__PURE__ */ (() => { 7225 +export const postOrderErpRolesAll = /* #__PURE__ */ (() => {
7113 const method = 'post'; 7226 const method = 'post';
7114 - const url = '/order/erp/users/reset'; 7227 + const url = '/order/erp/roles/all';
7115 function request( 7228 function request(
7116 - option: PostOrderErpUsersResetOption,  
7117 - ): Promise<PostOrderErpUsersResetResponseSuccess> { 7229 + option: PostOrderErpRolesAllOption,
  7230 + ): Promise<PostOrderErpRolesAllResponseSuccess> {
7118 return requester(request.url, { 7231 return requester(request.url, {
7119 method: request.method, 7232 method: request.method,
7120 ...option, 7233 ...option,
7121 - }) as unknown as Promise<PostOrderErpUsersResetResponseSuccess>; 7234 + }) as unknown as Promise<PostOrderErpRolesAllResponseSuccess>;
7122 } 7235 }
7123 7236
7124 /** http method */ 7237 /** http method */
@@ -7128,22 +7241,22 @@ export const postOrderErpUsersReset = /* #__PURE__ */ (() =&gt; { @@ -7128,22 +7241,22 @@ export const postOrderErpUsersReset = /* #__PURE__ */ (() =&gt; {
7128 return request; 7241 return request;
7129 })(); 7242 })();
7130 7243
7131 -/** @description request parameter type for postOrderErpUsersUpdatePass */  
7132 -export interface PostOrderErpUsersUpdatePassOption { 7244 +/** @description request parameter type for postOrderErpRolesAuthMenu */
  7245 +export interface PostOrderErpRolesAuthMenuOption {
7133 /** 7246 /**
7134 * @description 7247 * @description
7135 - * pwdVO 7248 + * roleVO
7136 */ 7249 */
7137 body: { 7250 body: {
7138 /** 7251 /**
7139 @description 7252 @description
7140 - pwdVO */  
7141 - pwdVO: UpdatePwdVO; 7253 + roleVO */
  7254 + roleVO: AdminAuthRoleVO;
7142 }; 7255 };
7143 } 7256 }
7144 7257
7145 -/** @description response type for postOrderErpUsersUpdatePass */  
7146 -export interface PostOrderErpUsersUpdatePassResponse { 7258 +/** @description response type for postOrderErpRolesAuthMenu */
  7259 +export interface PostOrderErpRolesAuthMenuResponse {
7147 /** 7260 /**
7148 * @description 7261 * @description
7149 * OK 7262 * OK
@@ -7171,25 +7284,25 @@ export interface PostOrderErpUsersUpdatePassResponse { @@ -7171,25 +7284,25 @@ export interface PostOrderErpUsersUpdatePassResponse {
7171 404: any; 7284 404: any;
7172 } 7285 }
7173 7286
7174 -export type PostOrderErpUsersUpdatePassResponseSuccess =  
7175 - PostOrderErpUsersUpdatePassResponse[200]; 7287 +export type PostOrderErpRolesAuthMenuResponseSuccess =
  7288 + PostOrderErpRolesAuthMenuResponse[200];
7176 /** 7289 /**
7177 * @description 7290 * @description
7178 - * 修改密码  
7179 - * @tags 系统:用户管理 7291 + * 授权角色菜单
  7292 + * @tags 系统:角色管理
7180 * @produces * 7293 * @produces *
7181 * @consumes application/json 7294 * @consumes application/json
7182 */ 7295 */
7183 -export const postOrderErpUsersUpdatePass = /* #__PURE__ */ (() => { 7296 +export const postOrderErpRolesAuthMenu = /* #__PURE__ */ (() => {
7184 const method = 'post'; 7297 const method = 'post';
7185 - const url = '/order/erp/users/update_pass'; 7298 + const url = '/order/erp/roles/auth_menu';
7186 function request( 7299 function request(
7187 - option: PostOrderErpUsersUpdatePassOption,  
7188 - ): Promise<PostOrderErpUsersUpdatePassResponseSuccess> { 7300 + option: PostOrderErpRolesAuthMenuOption,
  7301 + ): Promise<PostOrderErpRolesAuthMenuResponseSuccess> {
7189 return requester(request.url, { 7302 return requester(request.url, {
7190 method: request.method, 7303 method: request.method,
7191 ...option, 7304 ...option,
7192 - }) as unknown as Promise<PostOrderErpUsersUpdatePassResponseSuccess>; 7305 + }) as unknown as Promise<PostOrderErpRolesAuthMenuResponseSuccess>;
7193 } 7306 }
7194 7307
7195 /** http method */ 7308 /** http method */
@@ -7199,22 +7312,22 @@ export const postOrderErpUsersUpdatePass = /* #__PURE__ */ (() =&gt; { @@ -7199,22 +7312,22 @@ export const postOrderErpUsersUpdatePass = /* #__PURE__ */ (() =&gt; {
7199 return request; 7312 return request;
7200 })(); 7313 })();
7201 7314
7202 -/** @description request parameter type for postOrderImportImportInvoiceProject */  
7203 -export interface PostOrderImportImportInvoiceProjectOption { 7315 +/** @description request parameter type for postOrderErpRolesDelete */
  7316 +export interface PostOrderErpRolesDeleteOption {
7204 /** 7317 /**
7205 * @description 7318 * @description
7206 - * file 7319 + * queryVO
7207 */ 7320 */
7208 - formData: { 7321 + body: {
7209 /** 7322 /**
7210 @description 7323 @description
7211 - file */  
7212 - file: File; 7324 + queryVO */
  7325 + queryVO: AdminRoleQueryVO;
7213 }; 7326 };
7214 } 7327 }
7215 7328
7216 -/** @description response type for postOrderImportImportInvoiceProject */  
7217 -export interface PostOrderImportImportInvoiceProjectResponse { 7329 +/** @description response type for postOrderErpRolesDelete */
  7330 +export interface PostOrderErpRolesDeleteResponse {
7218 /** 7331 /**
7219 * @description 7332 * @description
7220 * OK 7333 * OK
@@ -7242,25 +7355,25 @@ export interface PostOrderImportImportInvoiceProjectResponse { @@ -7242,25 +7355,25 @@ export interface PostOrderImportImportInvoiceProjectResponse {
7242 404: any; 7355 404: any;
7243 } 7356 }
7244 7357
7245 -export type PostOrderImportImportInvoiceProjectResponseSuccess =  
7246 - PostOrderImportImportInvoiceProjectResponse[200]; 7358 +export type PostOrderErpRolesDeleteResponseSuccess =
  7359 + PostOrderErpRolesDeleteResponse[200];
7247 /** 7360 /**
7248 * @description 7361 * @description
7249 - * 导入发票项目  
7250 - * @tags 导入 7362 + * 删除角色
  7363 + * @tags 系统:角色管理
7251 * @produces * 7364 * @produces *
7252 - * @consumes multipart/form-data 7365 + * @consumes application/json
7253 */ 7366 */
7254 -export const postOrderImportImportInvoiceProject = /* #__PURE__ */ (() => { 7367 +export const postOrderErpRolesDelete = /* #__PURE__ */ (() => {
7255 const method = 'post'; 7368 const method = 'post';
7256 - const url = '/order/import/importInvoiceProject'; 7369 + const url = '/order/erp/roles/delete';
7257 function request( 7370 function request(
7258 - option: PostOrderImportImportInvoiceProjectOption,  
7259 - ): Promise<PostOrderImportImportInvoiceProjectResponseSuccess> { 7371 + option: PostOrderErpRolesDeleteOption,
  7372 + ): Promise<PostOrderErpRolesDeleteResponseSuccess> {
7260 return requester(request.url, { 7373 return requester(request.url, {
7261 method: request.method, 7374 method: request.method,
7262 ...option, 7375 ...option,
7263 - }) as unknown as Promise<PostOrderImportImportInvoiceProjectResponseSuccess>; 7376 + }) as unknown as Promise<PostOrderErpRolesDeleteResponseSuccess>;
7264 } 7377 }
7265 7378
7266 /** http method */ 7379 /** http method */
@@ -7270,22 +7383,22 @@ export const postOrderImportImportInvoiceProject = /* #__PURE__ */ (() =&gt; { @@ -7270,22 +7383,22 @@ export const postOrderImportImportInvoiceProject = /* #__PURE__ */ (() =&gt; {
7270 return request; 7383 return request;
7271 })(); 7384 })();
7272 7385
7273 -/** @description request parameter type for postOrderImportImportWeightAndVolume */  
7274 -export interface PostOrderImportImportWeightAndVolumeOption { 7386 +/** @description request parameter type for postOrderErpRolesDetail */
  7387 +export interface PostOrderErpRolesDetailOption {
7275 /** 7388 /**
7276 * @description 7389 * @description
7277 - * file 7390 + * queryVO
7278 */ 7391 */
7279 - formData: { 7392 + body: {
7280 /** 7393 /**
7281 @description 7394 @description
7282 - file */  
7283 - file: File; 7395 + queryVO */
  7396 + queryVO: AdminRoleQueryVO;
7284 }; 7397 };
7285 } 7398 }
7286 7399
7287 -/** @description response type for postOrderImportImportWeightAndVolume */  
7288 -export interface PostOrderImportImportWeightAndVolumeResponse { 7400 +/** @description response type for postOrderErpRolesDetail */
  7401 +export interface PostOrderErpRolesDetailResponse {
7289 /** 7402 /**
7290 * @description 7403 * @description
7291 * OK 7404 * OK
@@ -7313,25 +7426,25 @@ export interface PostOrderImportImportWeightAndVolumeResponse { @@ -7313,25 +7426,25 @@ export interface PostOrderImportImportWeightAndVolumeResponse {
7313 404: any; 7426 404: any;
7314 } 7427 }
7315 7428
7316 -export type PostOrderImportImportWeightAndVolumeResponseSuccess =  
7317 - PostOrderImportImportWeightAndVolumeResponse[200]; 7429 +export type PostOrderErpRolesDetailResponseSuccess =
  7430 + PostOrderErpRolesDetailResponse[200];
7318 /** 7431 /**
7319 * @description 7432 * @description
7320 - * 导入重量和体积  
7321 - * @tags 导入 7433 + * 获取单个role
  7434 + * @tags 系统:角色管理
7322 * @produces * 7435 * @produces *
7323 - * @consumes multipart/form-data 7436 + * @consumes application/json
7324 */ 7437 */
7325 -export const postOrderImportImportWeightAndVolume = /* #__PURE__ */ (() => { 7438 +export const postOrderErpRolesDetail = /* #__PURE__ */ (() => {
7326 const method = 'post'; 7439 const method = 'post';
7327 - const url = '/order/import/importWeightAndVolume'; 7440 + const url = '/order/erp/roles/detail';
7328 function request( 7441 function request(
7329 - option: PostOrderImportImportWeightAndVolumeOption,  
7330 - ): Promise<PostOrderImportImportWeightAndVolumeResponseSuccess> { 7442 + option: PostOrderErpRolesDetailOption,
  7443 + ): Promise<PostOrderErpRolesDetailResponseSuccess> {
7331 return requester(request.url, { 7444 return requester(request.url, {
7332 method: request.method, 7445 method: request.method,
7333 ...option, 7446 ...option,
7334 - }) as unknown as Promise<PostOrderImportImportWeightAndVolumeResponseSuccess>; 7447 + }) as unknown as Promise<PostOrderErpRolesDetailResponseSuccess>;
7335 } 7448 }
7336 7449
7337 /** http method */ 7450 /** http method */
@@ -7341,22 +7454,22 @@ export const postOrderImportImportWeightAndVolume = /* #__PURE__ */ (() =&gt; { @@ -7341,22 +7454,22 @@ export const postOrderImportImportWeightAndVolume = /* #__PURE__ */ (() =&gt; {
7341 return request; 7454 return request;
7342 })(); 7455 })();
7343 7456
7344 -/** @description request parameter type for postPrepaidAudit */  
7345 -export interface PostPrepaidAuditOption { 7457 +/** @description request parameter type for postOrderErpRolesEdit */
  7458 +export interface PostOrderErpRolesEditOption {
7346 /** 7459 /**
7347 * @description 7460 * @description
7348 - * request 7461 + * roleVO
7349 */ 7462 */
7350 body: { 7463 body: {
7351 /** 7464 /**
7352 @description 7465 @description
7353 - request */  
7354 - request: SalesRechargePrepaymentAuditRequest; 7466 + roleVO */
  7467 + roleVO: AdminRoleVO;
7355 }; 7468 };
7356 } 7469 }
7357 7470
7358 -/** @description response type for postPrepaidAudit */  
7359 -export interface PostPrepaidAuditResponse { 7471 +/** @description response type for postOrderErpRolesEdit */
  7472 +export interface PostOrderErpRolesEditResponse {
7360 /** 7473 /**
7361 * @description 7474 * @description
7362 * OK 7475 * OK
@@ -7384,24 +7497,25 @@ export interface PostPrepaidAuditResponse { @@ -7384,24 +7497,25 @@ export interface PostPrepaidAuditResponse {
7384 404: any; 7497 404: any;
7385 } 7498 }
7386 7499
7387 -export type PostPrepaidAuditResponseSuccess = PostPrepaidAuditResponse[200]; 7500 +export type PostOrderErpRolesEditResponseSuccess =
  7501 + PostOrderErpRolesEditResponse[200];
7388 /** 7502 /**
7389 * @description 7503 * @description
7390 - * 财务审核  
7391 - * @tags prepaid-controller 7504 + * 修改角色
  7505 + * @tags 系统:角色管理
7392 * @produces * 7506 * @produces *
7393 * @consumes application/json 7507 * @consumes application/json
7394 */ 7508 */
7395 -export const postPrepaidAudit = /* #__PURE__ */ (() => { 7509 +export const postOrderErpRolesEdit = /* #__PURE__ */ (() => {
7396 const method = 'post'; 7510 const method = 'post';
7397 - const url = '/prepaid/audit'; 7511 + const url = '/order/erp/roles/edit';
7398 function request( 7512 function request(
7399 - option: PostPrepaidAuditOption,  
7400 - ): Promise<PostPrepaidAuditResponseSuccess> { 7513 + option: PostOrderErpRolesEditOption,
  7514 + ): Promise<PostOrderErpRolesEditResponseSuccess> {
7401 return requester(request.url, { 7515 return requester(request.url, {
7402 method: request.method, 7516 method: request.method,
7403 ...option, 7517 ...option,
7404 - }) as unknown as Promise<PostPrepaidAuditResponseSuccess>; 7518 + }) as unknown as Promise<PostOrderErpRolesEditResponseSuccess>;
7405 } 7519 }
7406 7520
7407 /** http method */ 7521 /** http method */
@@ -7411,22 +7525,22 @@ export const postPrepaidAudit = /* #__PURE__ */ (() =&gt; { @@ -7411,22 +7525,22 @@ export const postPrepaidAudit = /* #__PURE__ */ (() =&gt; {
7411 return request; 7525 return request;
7412 })(); 7526 })();
7413 7527
7414 -/** @description request parameter type for postPrepaidCreate */  
7415 -export interface PostPrepaidCreateOption { 7528 +/** @description request parameter type for postOrderErpRolesListByPage */
  7529 +export interface PostOrderErpRolesListByPageOption {
7416 /** 7530 /**
7417 * @description 7531 * @description
7418 - * request 7532 + * queryVO
7419 */ 7533 */
7420 body: { 7534 body: {
7421 /** 7535 /**
7422 @description 7536 @description
7423 - request */  
7424 - request: SalesRechargePrepaymentCreateRequest; 7537 + queryVO */
  7538 + queryVO: AdminRoleQueryVO;
7425 }; 7539 };
7426 } 7540 }
7427 7541
7428 -/** @description response type for postPrepaidCreate */  
7429 -export interface PostPrepaidCreateResponse { 7542 +/** @description response type for postOrderErpRolesListByPage */
  7543 +export interface PostOrderErpRolesListByPageResponse {
7430 /** 7544 /**
7431 * @description 7545 * @description
7432 * OK 7546 * OK
@@ -7454,24 +7568,25 @@ export interface PostPrepaidCreateResponse { @@ -7454,24 +7568,25 @@ export interface PostPrepaidCreateResponse {
7454 404: any; 7568 404: any;
7455 } 7569 }
7456 7570
7457 -export type PostPrepaidCreateResponseSuccess = PostPrepaidCreateResponse[200]; 7571 +export type PostOrderErpRolesListByPageResponseSuccess =
  7572 + PostOrderErpRolesListByPageResponse[200];
7458 /** 7573 /**
7459 * @description 7574 * @description
7460 - * 新增预存  
7461 - * @tags prepaid-controller 7575 + * 查询角色
  7576 + * @tags 系统:角色管理
7462 * @produces * 7577 * @produces *
7463 * @consumes application/json 7578 * @consumes application/json
7464 */ 7579 */
7465 -export const postPrepaidCreate = /* #__PURE__ */ (() => { 7580 +export const postOrderErpRolesListByPage = /* #__PURE__ */ (() => {
7466 const method = 'post'; 7581 const method = 'post';
7467 - const url = '/prepaid/create'; 7582 + const url = '/order/erp/roles/list_by_page';
7468 function request( 7583 function request(
7469 - option: PostPrepaidCreateOption,  
7470 - ): Promise<PostPrepaidCreateResponseSuccess> { 7584 + option: PostOrderErpRolesListByPageOption,
  7585 + ): Promise<PostOrderErpRolesListByPageResponseSuccess> {
7471 return requester(request.url, { 7586 return requester(request.url, {
7472 method: request.method, 7587 method: request.method,
7473 ...option, 7588 ...option,
7474 - }) as unknown as Promise<PostPrepaidCreateResponseSuccess>; 7589 + }) as unknown as Promise<PostOrderErpRolesListByPageResponseSuccess>;
7475 } 7590 }
7476 7591
7477 /** http method */ 7592 /** http method */
@@ -7481,22 +7596,22 @@ export const postPrepaidCreate = /* #__PURE__ */ (() =&gt; { @@ -7481,22 +7596,22 @@ export const postPrepaidCreate = /* #__PURE__ */ (() =&gt; {
7481 return request; 7596 return request;
7482 })(); 7597 })();
7483 7598
7484 -/** @description request parameter type for postPrepaidDelete */  
7485 -export interface PostPrepaidDeleteOption { 7599 +/** @description request parameter type for postOrderErpUsersAdd */
  7600 +export interface PostOrderErpUsersAddOption {
7486 /** 7601 /**
7487 * @description 7602 * @description
7488 - * request 7603 + * userVO
7489 */ 7604 */
7490 body: { 7605 body: {
7491 /** 7606 /**
7492 @description 7607 @description
7493 - request */  
7494 - request: SalesRechargePrepaymentDeleteRequest; 7608 + userVO */
  7609 + userVO: AdminUserVO;
7495 }; 7610 };
7496 } 7611 }
7497 7612
7498 -/** @description response type for postPrepaidDelete */  
7499 -export interface PostPrepaidDeleteResponse { 7613 +/** @description response type for postOrderErpUsersAdd */
  7614 +export interface PostOrderErpUsersAddResponse {
7500 /** 7615 /**
7501 * @description 7616 * @description
7502 * OK 7617 * OK
@@ -7524,24 +7639,25 @@ export interface PostPrepaidDeleteResponse { @@ -7524,24 +7639,25 @@ export interface PostPrepaidDeleteResponse {
7524 404: any; 7639 404: any;
7525 } 7640 }
7526 7641
7527 -export type PostPrepaidDeleteResponseSuccess = PostPrepaidDeleteResponse[200]; 7642 +export type PostOrderErpUsersAddResponseSuccess =
  7643 + PostOrderErpUsersAddResponse[200];
7528 /** 7644 /**
7529 * @description 7645 * @description
7530 - * 删除预存  
7531 - * @tags prepaid-controller 7646 + * 新增用户
  7647 + * @tags 系统:用户管理
7532 * @produces * 7648 * @produces *
7533 * @consumes application/json 7649 * @consumes application/json
7534 */ 7650 */
7535 -export const postPrepaidDelete = /* #__PURE__ */ (() => { 7651 +export const postOrderErpUsersAdd = /* #__PURE__ */ (() => {
7536 const method = 'post'; 7652 const method = 'post';
7537 - const url = '/prepaid/delete'; 7653 + const url = '/order/erp/users/add';
7538 function request( 7654 function request(
7539 - option: PostPrepaidDeleteOption,  
7540 - ): Promise<PostPrepaidDeleteResponseSuccess> { 7655 + option: PostOrderErpUsersAddOption,
  7656 + ): Promise<PostOrderErpUsersAddResponseSuccess> {
7541 return requester(request.url, { 7657 return requester(request.url, {
7542 method: request.method, 7658 method: request.method,
7543 ...option, 7659 ...option,
7544 - }) as unknown as Promise<PostPrepaidDeleteResponseSuccess>; 7660 + }) as unknown as Promise<PostOrderErpUsersAddResponseSuccess>;
7545 } 7661 }
7546 7662
7547 /** http method */ 7663 /** http method */
@@ -7551,22 +7667,22 @@ export const postPrepaidDelete = /* #__PURE__ */ (() =&gt; { @@ -7551,22 +7667,22 @@ export const postPrepaidDelete = /* #__PURE__ */ (() =&gt; {
7551 return request; 7667 return request;
7552 })(); 7668 })();
7553 7669
7554 -/** @description request parameter type for postPrepaidList */  
7555 -export interface PostPrepaidListOption { 7670 +/** @description request parameter type for postOrderErpUsersAuthRole */
  7671 +export interface PostOrderErpUsersAuthRoleOption {
7556 /** 7672 /**
7557 * @description 7673 * @description
7558 - * request 7674 + * userVO
7559 */ 7675 */
7560 body: { 7676 body: {
7561 /** 7677 /**
7562 @description 7678 @description
7563 - request */  
7564 - request: SalesRechargePrepaymentRequest; 7679 + userVO */
  7680 + userVO: AdminAuthUserVO;
7565 }; 7681 };
7566 } 7682 }
7567 7683
7568 -/** @description response type for postPrepaidList */  
7569 -export interface PostPrepaidListResponse { 7684 +/** @description response type for postOrderErpUsersAuthRole */
  7685 +export interface PostOrderErpUsersAuthRoleResponse {
7570 /** 7686 /**
7571 * @description 7687 * @description
7572 * OK 7688 * OK
@@ -7594,24 +7710,25 @@ export interface PostPrepaidListResponse { @@ -7594,24 +7710,25 @@ export interface PostPrepaidListResponse {
7594 404: any; 7710 404: any;
7595 } 7711 }
7596 7712
7597 -export type PostPrepaidListResponseSuccess = PostPrepaidListResponse[200]; 7713 +export type PostOrderErpUsersAuthRoleResponseSuccess =
  7714 + PostOrderErpUsersAuthRoleResponse[200];
7598 /** 7715 /**
7599 * @description 7716 * @description
7600 - * 查询列表  
7601 - * @tags prepaid-controller 7717 + * 授权角色
  7718 + * @tags 系统:用户管理
7602 * @produces * 7719 * @produces *
7603 * @consumes application/json 7720 * @consumes application/json
7604 */ 7721 */
7605 -export const postPrepaidList = /* #__PURE__ */ (() => { 7722 +export const postOrderErpUsersAuthRole = /* #__PURE__ */ (() => {
7606 const method = 'post'; 7723 const method = 'post';
7607 - const url = '/prepaid/list'; 7724 + const url = '/order/erp/users/auth_role';
7608 function request( 7725 function request(
7609 - option: PostPrepaidListOption,  
7610 - ): Promise<PostPrepaidListResponseSuccess> { 7726 + option: PostOrderErpUsersAuthRoleOption,
  7727 + ): Promise<PostOrderErpUsersAuthRoleResponseSuccess> {
7611 return requester(request.url, { 7728 return requester(request.url, {
7612 method: request.method, 7729 method: request.method,
7613 ...option, 7730 ...option,
7614 - }) as unknown as Promise<PostPrepaidListResponseSuccess>; 7731 + }) as unknown as Promise<PostOrderErpUsersAuthRoleResponseSuccess>;
7615 } 7732 }
7616 7733
7617 /** http method */ 7734 /** http method */
@@ -7621,22 +7738,22 @@ export const postPrepaidList = /* #__PURE__ */ (() =&gt; { @@ -7621,22 +7738,22 @@ export const postPrepaidList = /* #__PURE__ */ (() =&gt; {
7621 return request; 7738 return request;
7622 })(); 7739 })();
7623 7740
7624 -/** @description request parameter type for postPrepaidUpdate */  
7625 -export interface PostPrepaidUpdateOption { 7741 +/** @description request parameter type for postOrderErpUsersDelete */
  7742 +export interface PostOrderErpUsersDeleteOption {
7626 /** 7743 /**
7627 * @description 7744 * @description
7628 - * request 7745 + * queryVO
7629 */ 7746 */
7630 body: { 7747 body: {
7631 /** 7748 /**
7632 @description 7749 @description
7633 - request */  
7634 - request: SalesRechargePrepaymentUpdateRequest; 7750 + queryVO */
  7751 + queryVO: AdminUserQueryVO;
7635 }; 7752 };
7636 } 7753 }
7637 7754
7638 -/** @description response type for postPrepaidUpdate */  
7639 -export interface PostPrepaidUpdateResponse { 7755 +/** @description response type for postOrderErpUsersDelete */
  7756 +export interface PostOrderErpUsersDeleteResponse {
7640 /** 7757 /**
7641 * @description 7758 * @description
7642 * OK 7759 * OK
@@ -7664,24 +7781,25 @@ export interface PostPrepaidUpdateResponse { @@ -7664,24 +7781,25 @@ export interface PostPrepaidUpdateResponse {
7664 404: any; 7781 404: any;
7665 } 7782 }
7666 7783
7667 -export type PostPrepaidUpdateResponseSuccess = PostPrepaidUpdateResponse[200]; 7784 +export type PostOrderErpUsersDeleteResponseSuccess =
  7785 + PostOrderErpUsersDeleteResponse[200];
7668 /** 7786 /**
7669 * @description 7787 * @description
7670 - * 修改预存  
7671 - * @tags prepaid-controller 7788 + * 删除用户
  7789 + * @tags 系统:用户管理
7672 * @produces * 7790 * @produces *
7673 * @consumes application/json 7791 * @consumes application/json
7674 */ 7792 */
7675 -export const postPrepaidUpdate = /* #__PURE__ */ (() => { 7793 +export const postOrderErpUsersDelete = /* #__PURE__ */ (() => {
7676 const method = 'post'; 7794 const method = 'post';
7677 - const url = '/prepaid/update'; 7795 + const url = '/order/erp/users/delete';
7678 function request( 7796 function request(
7679 - option: PostPrepaidUpdateOption,  
7680 - ): Promise<PostPrepaidUpdateResponseSuccess> { 7797 + option: PostOrderErpUsersDeleteOption,
  7798 + ): Promise<PostOrderErpUsersDeleteResponseSuccess> {
7681 return requester(request.url, { 7799 return requester(request.url, {
7682 method: request.method, 7800 method: request.method,
7683 ...option, 7801 ...option,
7684 - }) as unknown as Promise<PostPrepaidUpdateResponseSuccess>; 7802 + }) as unknown as Promise<PostOrderErpUsersDeleteResponseSuccess>;
7685 } 7803 }
7686 7804
7687 /** http method */ 7805 /** http method */
@@ -7691,22 +7809,22 @@ export const postPrepaidUpdate = /* #__PURE__ */ (() =&gt; { @@ -7691,22 +7809,22 @@ export const postPrepaidUpdate = /* #__PURE__ */ (() =&gt; {
7691 return request; 7809 return request;
7692 })(); 7810 })();
7693 7811
7694 -/** @description request parameter type for postResearchGroupsAdd */  
7695 -export interface PostResearchGroupsAddOption { 7812 +/** @description request parameter type for postOrderErpUsersEdit */
  7813 +export interface PostOrderErpUsersEditOption {
7696 /** 7814 /**
7697 * @description 7815 * @description
7698 - * request 7816 + * userVO
7699 */ 7817 */
7700 body: { 7818 body: {
7701 /** 7819 /**
7702 @description 7820 @description
7703 - request */  
7704 - request: ResearchGroupAddRequest; 7821 + userVO */
  7822 + userVO: AdminUserVO;
7705 }; 7823 };
7706 } 7824 }
7707 7825
7708 -/** @description response type for postResearchGroupsAdd */  
7709 -export interface PostResearchGroupsAddResponse { 7826 +/** @description response type for postOrderErpUsersEdit */
  7827 +export interface PostOrderErpUsersEditResponse {
7710 /** 7828 /**
7711 * @description 7829 * @description
7712 * OK 7830 * OK
@@ -7734,25 +7852,25 @@ export interface PostResearchGroupsAddResponse { @@ -7734,25 +7852,25 @@ export interface PostResearchGroupsAddResponse {
7734 404: any; 7852 404: any;
7735 } 7853 }
7736 7854
7737 -export type PostResearchGroupsAddResponseSuccess =  
7738 - PostResearchGroupsAddResponse[200]; 7855 +export type PostOrderErpUsersEditResponseSuccess =
  7856 + PostOrderErpUsersEditResponse[200];
7739 /** 7857 /**
7740 * @description 7858 * @description
7741 - * 新增课题组信息  
7742 - * @tags research-groups-controller 7859 + * 修改用户
  7860 + * @tags 系统:用户管理
7743 * @produces * 7861 * @produces *
7744 * @consumes application/json 7862 * @consumes application/json
7745 */ 7863 */
7746 -export const postResearchGroupsAdd = /* #__PURE__ */ (() => { 7864 +export const postOrderErpUsersEdit = /* #__PURE__ */ (() => {
7747 const method = 'post'; 7865 const method = 'post';
7748 - const url = '/research/groups/add'; 7866 + const url = '/order/erp/users/edit';
7749 function request( 7867 function request(
7750 - option: PostResearchGroupsAddOption,  
7751 - ): Promise<PostResearchGroupsAddResponseSuccess> { 7868 + option: PostOrderErpUsersEditOption,
  7869 + ): Promise<PostOrderErpUsersEditResponseSuccess> {
7752 return requester(request.url, { 7870 return requester(request.url, {
7753 method: request.method, 7871 method: request.method,
7754 ...option, 7872 ...option,
7755 - }) as unknown as Promise<PostResearchGroupsAddResponseSuccess>; 7873 + }) as unknown as Promise<PostOrderErpUsersEditResponseSuccess>;
7756 } 7874 }
7757 7875
7758 /** http method */ 7876 /** http method */
@@ -7762,22 +7880,22 @@ export const postResearchGroupsAdd = /* #__PURE__ */ (() =&gt; { @@ -7762,22 +7880,22 @@ export const postResearchGroupsAdd = /* #__PURE__ */ (() =&gt; {
7762 return request; 7880 return request;
7763 })(); 7881 })();
7764 7882
7765 -/** @description request parameter type for postResearchGroupsDelete */  
7766 -export interface PostResearchGroupsDeleteOption { 7883 +/** @description request parameter type for postOrderErpUsersListByPage */
  7884 +export interface PostOrderErpUsersListByPageOption {
7767 /** 7885 /**
7768 * @description 7886 * @description
7769 - * request 7887 + * queryVO
7770 */ 7888 */
7771 body: { 7889 body: {
7772 /** 7890 /**
7773 @description 7891 @description
7774 - request */  
7775 - request: ResearchGroupDeleteRequest; 7892 + queryVO */
  7893 + queryVO: AdminUserQueryVO;
7776 }; 7894 };
7777 } 7895 }
7778 7896
7779 -/** @description response type for postResearchGroupsDelete */  
7780 -export interface PostResearchGroupsDeleteResponse { 7897 +/** @description response type for postOrderErpUsersListByPage */
  7898 +export interface PostOrderErpUsersListByPageResponse {
7781 /** 7899 /**
7782 * @description 7900 * @description
7783 * OK 7901 * OK
@@ -7805,25 +7923,25 @@ export interface PostResearchGroupsDeleteResponse { @@ -7805,25 +7923,25 @@ export interface PostResearchGroupsDeleteResponse {
7805 404: any; 7923 404: any;
7806 } 7924 }
7807 7925
7808 -export type PostResearchGroupsDeleteResponseSuccess =  
7809 - PostResearchGroupsDeleteResponse[200]; 7926 +export type PostOrderErpUsersListByPageResponseSuccess =
  7927 + PostOrderErpUsersListByPageResponse[200];
7810 /** 7928 /**
7811 * @description 7929 * @description
7812 - * 删除课题组信息  
7813 - * @tags research-groups-controller 7930 + * 查询用户
  7931 + * @tags 系统:用户管理
7814 * @produces * 7932 * @produces *
7815 * @consumes application/json 7933 * @consumes application/json
7816 */ 7934 */
7817 -export const postResearchGroupsDelete = /* #__PURE__ */ (() => { 7935 +export const postOrderErpUsersListByPage = /* #__PURE__ */ (() => {
7818 const method = 'post'; 7936 const method = 'post';
7819 - const url = '/research/groups/delete'; 7937 + const url = '/order/erp/users/list_by_page';
7820 function request( 7938 function request(
7821 - option: PostResearchGroupsDeleteOption,  
7822 - ): Promise<PostResearchGroupsDeleteResponseSuccess> { 7939 + option: PostOrderErpUsersListByPageOption,
  7940 + ): Promise<PostOrderErpUsersListByPageResponseSuccess> {
7823 return requester(request.url, { 7941 return requester(request.url, {
7824 method: request.method, 7942 method: request.method,
7825 ...option, 7943 ...option,
7826 - }) as unknown as Promise<PostResearchGroupsDeleteResponseSuccess>; 7944 + }) as unknown as Promise<PostOrderErpUsersListByPageResponseSuccess>;
7827 } 7945 }
7828 7946
7829 /** http method */ 7947 /** http method */
@@ -7833,22 +7951,22 @@ export const postResearchGroupsDelete = /* #__PURE__ */ (() =&gt; { @@ -7833,22 +7951,22 @@ export const postResearchGroupsDelete = /* #__PURE__ */ (() =&gt; {
7833 return request; 7951 return request;
7834 })(); 7952 })();
7835 7953
7836 -/** @description request parameter type for postResearchGroupsDetail */  
7837 -export interface PostResearchGroupsDetailOption { 7954 +/** @description request parameter type for postOrderErpUsersReset */
  7955 +export interface PostOrderErpUsersResetOption {
7838 /** 7956 /**
7839 * @description 7957 * @description
7840 - * request 7958 + * resetPwdVO
7841 */ 7959 */
7842 body: { 7960 body: {
7843 /** 7961 /**
7844 @description 7962 @description
7845 - request */  
7846 - request: ResearchGroupDetailRequest; 7963 + resetPwdVO */
  7964 + resetPwdVO: ResetPwdVO;
7847 }; 7965 };
7848 } 7966 }
7849 7967
7850 -/** @description response type for postResearchGroupsDetail */  
7851 -export interface PostResearchGroupsDetailResponse { 7968 +/** @description response type for postOrderErpUsersReset */
  7969 +export interface PostOrderErpUsersResetResponse {
7852 /** 7970 /**
7853 * @description 7971 * @description
7854 * OK 7972 * OK
@@ -7876,25 +7994,25 @@ export interface PostResearchGroupsDetailResponse { @@ -7876,25 +7994,25 @@ export interface PostResearchGroupsDetailResponse {
7876 404: any; 7994 404: any;
7877 } 7995 }
7878 7996
7879 -export type PostResearchGroupsDetailResponseSuccess =  
7880 - PostResearchGroupsDetailResponse[200]; 7997 +export type PostOrderErpUsersResetResponseSuccess =
  7998 + PostOrderErpUsersResetResponse[200];
7881 /** 7999 /**
7882 * @description 8000 * @description
7883 - * 查询课题组信息  
7884 - * @tags research-groups-controller 8001 + * 重置密码
  8002 + * @tags 系统:用户管理
7885 * @produces * 8003 * @produces *
7886 * @consumes application/json 8004 * @consumes application/json
7887 */ 8005 */
7888 -export const postResearchGroupsDetail = /* #__PURE__ */ (() => { 8006 +export const postOrderErpUsersReset = /* #__PURE__ */ (() => {
7889 const method = 'post'; 8007 const method = 'post';
7890 - const url = '/research/groups/detail'; 8008 + const url = '/order/erp/users/reset';
7891 function request( 8009 function request(
7892 - option: PostResearchGroupsDetailOption,  
7893 - ): Promise<PostResearchGroupsDetailResponseSuccess> { 8010 + option: PostOrderErpUsersResetOption,
  8011 + ): Promise<PostOrderErpUsersResetResponseSuccess> {
7894 return requester(request.url, { 8012 return requester(request.url, {
7895 method: request.method, 8013 method: request.method,
7896 ...option, 8014 ...option,
7897 - }) as unknown as Promise<PostResearchGroupsDetailResponseSuccess>; 8015 + }) as unknown as Promise<PostOrderErpUsersResetResponseSuccess>;
7898 } 8016 }
7899 8017
7900 /** http method */ 8018 /** http method */
@@ -7904,22 +8022,22 @@ export const postResearchGroupsDetail = /* #__PURE__ */ (() =&gt; { @@ -7904,22 +8022,22 @@ export const postResearchGroupsDetail = /* #__PURE__ */ (() =&gt; {
7904 return request; 8022 return request;
7905 })(); 8023 })();
7906 8024
7907 -/** @description request parameter type for postResearchGroupsEdit */  
7908 -export interface PostResearchGroupsEditOption { 8025 +/** @description request parameter type for postOrderErpUsersUpdatePass */
  8026 +export interface PostOrderErpUsersUpdatePassOption {
7909 /** 8027 /**
7910 * @description 8028 * @description
7911 - * request 8029 + * pwdVO
7912 */ 8030 */
7913 body: { 8031 body: {
7914 /** 8032 /**
7915 @description 8033 @description
7916 - request */  
7917 - request: ResearchGroupEditRequest; 8034 + pwdVO */
  8035 + pwdVO: UpdatePwdVO;
7918 }; 8036 };
7919 } 8037 }
7920 8038
7921 -/** @description response type for postResearchGroupsEdit */  
7922 -export interface PostResearchGroupsEditResponse { 8039 +/** @description response type for postOrderErpUsersUpdatePass */
  8040 +export interface PostOrderErpUsersUpdatePassResponse {
7923 /** 8041 /**
7924 * @description 8042 * @description
7925 * OK 8043 * OK
@@ -7947,25 +8065,25 @@ export interface PostResearchGroupsEditResponse { @@ -7947,25 +8065,25 @@ export interface PostResearchGroupsEditResponse {
7947 404: any; 8065 404: any;
7948 } 8066 }
7949 8067
7950 -export type PostResearchGroupsEditResponseSuccess =  
7951 - PostResearchGroupsEditResponse[200]; 8068 +export type PostOrderErpUsersUpdatePassResponseSuccess =
  8069 + PostOrderErpUsersUpdatePassResponse[200];
7952 /** 8070 /**
7953 * @description 8071 * @description
7954 - * 编辑课题组信息  
7955 - * @tags research-groups-controller 8072 + * 修改密码
  8073 + * @tags 系统:用户管理
7956 * @produces * 8074 * @produces *
7957 * @consumes application/json 8075 * @consumes application/json
7958 */ 8076 */
7959 -export const postResearchGroupsEdit = /* #__PURE__ */ (() => { 8077 +export const postOrderErpUsersUpdatePass = /* #__PURE__ */ (() => {
7960 const method = 'post'; 8078 const method = 'post';
7961 - const url = '/research/groups/edit'; 8079 + const url = '/order/erp/users/update_pass';
7962 function request( 8080 function request(
7963 - option: PostResearchGroupsEditOption,  
7964 - ): Promise<PostResearchGroupsEditResponseSuccess> { 8081 + option: PostOrderErpUsersUpdatePassOption,
  8082 + ): Promise<PostOrderErpUsersUpdatePassResponseSuccess> {
7965 return requester(request.url, { 8083 return requester(request.url, {
7966 method: request.method, 8084 method: request.method,
7967 ...option, 8085 ...option,
7968 - }) as unknown as Promise<PostResearchGroupsEditResponseSuccess>; 8086 + }) as unknown as Promise<PostOrderErpUsersUpdatePassResponseSuccess>;
7969 } 8087 }
7970 8088
7971 /** http method */ 8089 /** http method */
@@ -7975,22 +8093,22 @@ export const postResearchGroupsEdit = /* #__PURE__ */ (() =&gt; { @@ -7975,22 +8093,22 @@ export const postResearchGroupsEdit = /* #__PURE__ */ (() =&gt; {
7975 return request; 8093 return request;
7976 })(); 8094 })();
7977 8095
7978 -/** @description request parameter type for postResearchGroupsList */  
7979 -export interface PostResearchGroupsListOption { 8096 +/** @description request parameter type for postOrderImportImportWeightAndVolume */
  8097 +export interface PostOrderImportImportWeightAndVolumeOption {
7980 /** 8098 /**
7981 * @description 8099 * @description
7982 - * request 8100 + * file
7983 */ 8101 */
7984 - body: { 8102 + formData: {
7985 /** 8103 /**
7986 @description 8104 @description
7987 - request */  
7988 - request: ResearchGroupListRequest; 8105 + file */
  8106 + file: File;
7989 }; 8107 };
7990 } 8108 }
7991 8109
7992 -/** @description response type for postResearchGroupsList */  
7993 -export interface PostResearchGroupsListResponse { 8110 +/** @description response type for postOrderImportImportWeightAndVolume */
  8111 +export interface PostOrderImportImportWeightAndVolumeResponse {
7994 /** 8112 /**
7995 * @description 8113 * @description
7996 * OK 8114 * OK
@@ -8018,25 +8136,25 @@ export interface PostResearchGroupsListResponse { @@ -8018,25 +8136,25 @@ export interface PostResearchGroupsListResponse {
8018 404: any; 8136 404: any;
8019 } 8137 }
8020 8138
8021 -export type PostResearchGroupsListResponseSuccess =  
8022 - PostResearchGroupsListResponse[200]; 8139 +export type PostOrderImportImportWeightAndVolumeResponseSuccess =
  8140 + PostOrderImportImportWeightAndVolumeResponse[200];
8023 /** 8141 /**
8024 * @description 8142 * @description
8025 - * 课题组列表  
8026 - * @tags research-groups-controller 8143 + * 导入重量和体积
  8144 + * @tags 导入
8027 * @produces * 8145 * @produces *
8028 - * @consumes application/json 8146 + * @consumes multipart/form-data
8029 */ 8147 */
8030 -export const postResearchGroupsList = /* #__PURE__ */ (() => { 8148 +export const postOrderImportImportWeightAndVolume = /* #__PURE__ */ (() => {
8031 const method = 'post'; 8149 const method = 'post';
8032 - const url = '/research/groups/list'; 8150 + const url = '/order/import/importWeightAndVolume';
8033 function request( 8151 function request(
8034 - option: PostResearchGroupsListOption,  
8035 - ): Promise<PostResearchGroupsListResponseSuccess> { 8152 + option: PostOrderImportImportWeightAndVolumeOption,
  8153 + ): Promise<PostOrderImportImportWeightAndVolumeResponseSuccess> {
8036 return requester(request.url, { 8154 return requester(request.url, {
8037 method: request.method, 8155 method: request.method,
8038 ...option, 8156 ...option,
8039 - }) as unknown as Promise<PostResearchGroupsListResponseSuccess>; 8157 + }) as unknown as Promise<PostOrderImportImportWeightAndVolumeResponseSuccess>;
8040 } 8158 }
8041 8159
8042 /** http method */ 8160 /** http method */
@@ -8046,22 +8164,22 @@ export const postResearchGroupsList = /* #__PURE__ */ (() =&gt; { @@ -8046,22 +8164,22 @@ export const postResearchGroupsList = /* #__PURE__ */ (() =&gt; {
8046 return request; 8164 return request;
8047 })(); 8165 })();
8048 8166
8049 -/** @description request parameter type for postServiceBankStatementDeleteBankStatement */  
8050 -export interface PostServiceBankStatementDeleteBankStatementOption { 8167 +/** @description request parameter type for postPrepaidAudit */
  8168 +export interface PostPrepaidAuditOption {
8051 /** 8169 /**
8052 * @description 8170 * @description
8053 - * dto 8171 + * request
8054 */ 8172 */
8055 body: { 8173 body: {
8056 /** 8174 /**
8057 @description 8175 @description
8058 - dto */  
8059 - dto: Dto; 8176 + request */
  8177 + request: SalesRechargePrepaymentAuditRequest;
8060 }; 8178 };
8061 } 8179 }
8062 8180
8063 -/** @description response type for postServiceBankStatementDeleteBankStatement */  
8064 -export interface PostServiceBankStatementDeleteBankStatementResponse { 8181 +/** @description response type for postPrepaidAudit */
  8182 +export interface PostPrepaidAuditResponse {
8065 /** 8183 /**
8066 * @description 8184 * @description
8067 * OK 8185 * OK
@@ -8089,51 +8207,49 @@ export interface PostServiceBankStatementDeleteBankStatementResponse { @@ -8089,51 +8207,49 @@ export interface PostServiceBankStatementDeleteBankStatementResponse {
8089 404: any; 8207 404: any;
8090 } 8208 }
8091 8209
8092 -export type PostServiceBankStatementDeleteBankStatementResponseSuccess =  
8093 - PostServiceBankStatementDeleteBankStatementResponse[200]; 8210 +export type PostPrepaidAuditResponseSuccess = PostPrepaidAuditResponse[200];
8094 /** 8211 /**
8095 * @description 8212 * @description
8096 - * 删除银行流水  
8097 - * @tags 银行流水 8213 + * 财务审核
  8214 + * @tags prepaid-controller
8098 * @produces * 8215 * @produces *
8099 * @consumes application/json 8216 * @consumes application/json
8100 */ 8217 */
8101 -export const postServiceBankStatementDeleteBankStatement =  
8102 - /* #__PURE__ */ (() => {  
8103 - const method = 'post';  
8104 - const url = '/service/bankStatement/deleteBankStatement';  
8105 - function request(  
8106 - option: PostServiceBankStatementDeleteBankStatementOption,  
8107 - ): Promise<PostServiceBankStatementDeleteBankStatementResponseSuccess> {  
8108 - return requester(request.url, {  
8109 - method: request.method,  
8110 - ...option,  
8111 - }) as unknown as Promise<PostServiceBankStatementDeleteBankStatementResponseSuccess>;  
8112 - } 8218 +export const postPrepaidAudit = /* #__PURE__ */ (() => {
  8219 + const method = 'post';
  8220 + const url = '/prepaid/audit';
  8221 + function request(
  8222 + option: PostPrepaidAuditOption,
  8223 + ): Promise<PostPrepaidAuditResponseSuccess> {
  8224 + return requester(request.url, {
  8225 + method: request.method,
  8226 + ...option,
  8227 + }) as unknown as Promise<PostPrepaidAuditResponseSuccess>;
  8228 + }
8113 8229
8114 - /** http method */  
8115 - request.method = method;  
8116 - /** request url */  
8117 - request.url = url;  
8118 - return request;  
8119 - })(); 8230 + /** http method */
  8231 + request.method = method;
  8232 + /** request url */
  8233 + request.url = url;
  8234 + return request;
  8235 +})();
8120 8236
8121 -/** @description request parameter type for postServiceBankStatementEditBankStatement */  
8122 -export interface PostServiceBankStatementEditBankStatementOption { 8237 +/** @description request parameter type for postPrepaidCreate */
  8238 +export interface PostPrepaidCreateOption {
8123 /** 8239 /**
8124 * @description 8240 * @description
8125 - * dto 8241 + * request
8126 */ 8242 */
8127 body: { 8243 body: {
8128 /** 8244 /**
8129 @description 8245 @description
8130 - dto */  
8131 - dto: Dto; 8246 + request */
  8247 + request: SalesRechargePrepaymentCreateRequest;
8132 }; 8248 };
8133 } 8249 }
8134 8250
8135 -/** @description response type for postServiceBankStatementEditBankStatement */  
8136 -export interface PostServiceBankStatementEditBankStatementResponse { 8251 +/** @description response type for postPrepaidCreate */
  8252 +export interface PostPrepaidCreateResponse {
8137 /** 8253 /**
8138 * @description 8254 * @description
8139 * OK 8255 * OK
@@ -8161,80 +8277,24 @@ export interface PostServiceBankStatementEditBankStatementResponse { @@ -8161,80 +8277,24 @@ export interface PostServiceBankStatementEditBankStatementResponse {
8161 404: any; 8277 404: any;
8162 } 8278 }
8163 8279
8164 -export type PostServiceBankStatementEditBankStatementResponseSuccess =  
8165 - PostServiceBankStatementEditBankStatementResponse[200]; 8280 +export type PostPrepaidCreateResponseSuccess = PostPrepaidCreateResponse[200];
8166 /** 8281 /**
8167 * @description 8282 * @description
8168 - * 编辑银行流水  
8169 - * @tags 银行流水 8283 + * 新增预存
  8284 + * @tags prepaid-controller
8170 * @produces * 8285 * @produces *
8171 * @consumes application/json 8286 * @consumes application/json
8172 */ 8287 */
8173 -export const postServiceBankStatementEditBankStatement =  
8174 - /* #__PURE__ */ (() => {  
8175 - const method = 'post';  
8176 - const url = '/service/bankStatement/editBankStatement';  
8177 - function request(  
8178 - option: PostServiceBankStatementEditBankStatementOption,  
8179 - ): Promise<PostServiceBankStatementEditBankStatementResponseSuccess> {  
8180 - return requester(request.url, {  
8181 - method: request.method,  
8182 - ...option,  
8183 - }) as unknown as Promise<PostServiceBankStatementEditBankStatementResponseSuccess>;  
8184 - }  
8185 -  
8186 - /** http method */  
8187 - request.method = method;  
8188 - /** request url */  
8189 - request.url = url;  
8190 - return request;  
8191 - })();  
8192 -  
8193 -/** @description response type for postServiceBankStatementExportTemplate */  
8194 -export interface PostServiceBankStatementExportTemplateResponse {  
8195 - /**  
8196 - * @description  
8197 - * OK  
8198 - */  
8199 - 200: any;  
8200 - /**  
8201 - * @description  
8202 - * Created  
8203 - */  
8204 - 201: any;  
8205 - /**  
8206 - * @description  
8207 - * Unauthorized  
8208 - */  
8209 - 401: any;  
8210 - /**  
8211 - * @description  
8212 - * Forbidden  
8213 - */  
8214 - 403: any;  
8215 - /**  
8216 - * @description  
8217 - * Not Found  
8218 - */  
8219 - 404: any;  
8220 -}  
8221 -  
8222 -export type PostServiceBankStatementExportTemplateResponseSuccess =  
8223 - PostServiceBankStatementExportTemplateResponse[200];  
8224 -/**  
8225 - * @description  
8226 - * 下载银行流水模板  
8227 - * @tags 银行流水  
8228 - * @produces *  
8229 - * @consumes application/json  
8230 - */  
8231 -export const postServiceBankStatementExportTemplate = /* #__PURE__ */ (() => { 8288 +export const postPrepaidCreate = /* #__PURE__ */ (() => {
8232 const method = 'post'; 8289 const method = 'post';
8233 - const url = '/service/bankStatement/exportTemplate';  
8234 - function request(): Promise<PostServiceBankStatementExportTemplateResponseSuccess> { 8290 + const url = '/prepaid/create';
  8291 + function request(
  8292 + option: PostPrepaidCreateOption,
  8293 + ): Promise<PostPrepaidCreateResponseSuccess> {
8235 return requester(request.url, { 8294 return requester(request.url, {
8236 method: request.method, 8295 method: request.method,
8237 - }) as unknown as Promise<PostServiceBankStatementExportTemplateResponseSuccess>; 8296 + ...option,
  8297 + }) as unknown as Promise<PostPrepaidCreateResponseSuccess>;
8238 } 8298 }
8239 8299
8240 /** http method */ 8300 /** http method */
@@ -8244,22 +8304,22 @@ export const postServiceBankStatementExportTemplate = /* #__PURE__ */ (() =&gt; { @@ -8244,22 +8304,22 @@ export const postServiceBankStatementExportTemplate = /* #__PURE__ */ (() =&gt; {
8244 return request; 8304 return request;
8245 })(); 8305 })();
8246 8306
8247 -/** @description request parameter type for postServiceBankStatementImportBankStatementForm */  
8248 -export interface PostServiceBankStatementImportBankStatementFormOption { 8307 +/** @description request parameter type for postPrepaidDelete */
  8308 +export interface PostPrepaidDeleteOption {
8249 /** 8309 /**
8250 * @description 8310 * @description
8251 - * file 8311 + * request
8252 */ 8312 */
8253 - formData: { 8313 + body: {
8254 /** 8314 /**
8255 @description 8315 @description
8256 - file */  
8257 - file: File; 8316 + request */
  8317 + request: SalesRechargePrepaymentDeleteRequest;
8258 }; 8318 };
8259 } 8319 }
8260 8320
8261 -/** @description response type for postServiceBankStatementImportBankStatementForm */  
8262 -export interface PostServiceBankStatementImportBankStatementFormResponse { 8321 +/** @description response type for postPrepaidDelete */
  8322 +export interface PostPrepaidDeleteResponse {
8263 /** 8323 /**
8264 * @description 8324 * @description
8265 * OK 8325 * OK
@@ -8287,164 +8347,49 @@ export interface PostServiceBankStatementImportBankStatementFormResponse { @@ -8287,164 +8347,49 @@ export interface PostServiceBankStatementImportBankStatementFormResponse {
8287 404: any; 8347 404: any;
8288 } 8348 }
8289 8349
8290 -export type PostServiceBankStatementImportBankStatementFormResponseSuccess =  
8291 - PostServiceBankStatementImportBankStatementFormResponse[200]; 8350 +export type PostPrepaidDeleteResponseSuccess = PostPrepaidDeleteResponse[200];
8292 /** 8351 /**
8293 * @description 8352 * @description
8294 - * 导入银行流水表格  
8295 - * @tags 银行流水 8353 + * 删除预存
  8354 + * @tags prepaid-controller
8296 * @produces * 8355 * @produces *
8297 - * @consumes multipart/form-data 8356 + * @consumes application/json
8298 */ 8357 */
8299 -export const postServiceBankStatementImportBankStatementForm =  
8300 - /* #__PURE__ */ (() => {  
8301 - const method = 'post';  
8302 - const url = '/service/bankStatement/importBankStatementForm';  
8303 - function request(  
8304 - option: PostServiceBankStatementImportBankStatementFormOption,  
8305 - ): Promise<PostServiceBankStatementImportBankStatementFormResponseSuccess> {  
8306 - return requester(request.url, {  
8307 - method: request.method,  
8308 - ...option,  
8309 - }) as unknown as Promise<PostServiceBankStatementImportBankStatementFormResponseSuccess>;  
8310 - } 8358 +export const postPrepaidDelete = /* #__PURE__ */ (() => {
  8359 + const method = 'post';
  8360 + const url = '/prepaid/delete';
  8361 + function request(
  8362 + option: PostPrepaidDeleteOption,
  8363 + ): Promise<PostPrepaidDeleteResponseSuccess> {
  8364 + return requester(request.url, {
  8365 + method: request.method,
  8366 + ...option,
  8367 + }) as unknown as Promise<PostPrepaidDeleteResponseSuccess>;
  8368 + }
8311 8369
8312 - /** http method */  
8313 - request.method = method;  
8314 - /** request url */  
8315 - request.url = url;  
8316 - return request;  
8317 - })(); 8370 + /** http method */
  8371 + request.method = method;
  8372 + /** request url */
  8373 + request.url = url;
  8374 + return request;
  8375 +})();
8318 8376
8319 -/** @description request parameter type for postServiceBankStatementQueryBankStatement */  
8320 -export interface PostServiceBankStatementQueryBankStatementOption { 8377 +/** @description request parameter type for postPrepaidList */
  8378 +export interface PostPrepaidListOption {
8321 /** 8379 /**
8322 * @description 8380 * @description
8323 - * dto 8381 + * request
8324 */ 8382 */
8325 body: { 8383 body: {
8326 /** 8384 /**
8327 @description 8385 @description
8328 - dto */  
8329 - dto: QueryBankStatementDto; 8386 + request */
  8387 + request: SalesRechargePrepaymentRequest;
8330 }; 8388 };
8331 } 8389 }
8332 8390
8333 -/** @description response type for postServiceBankStatementQueryBankStatement */  
8334 -export interface PostServiceBankStatementQueryBankStatementResponse {  
8335 - /**  
8336 - * @description  
8337 - * OK  
8338 - */  
8339 - 200: ServerResult;  
8340 - /**  
8341 - * @description  
8342 - * Created  
8343 - */  
8344 - 201: any;  
8345 - /**  
8346 - * @description  
8347 - * Unauthorized  
8348 - */  
8349 - 401: any;  
8350 - /**  
8351 - * @description  
8352 - * Forbidden  
8353 - */  
8354 - 403: any;  
8355 - /**  
8356 - * @description  
8357 - * Not Found  
8358 - */  
8359 - 404: any;  
8360 -}  
8361 -  
8362 -export type PostServiceBankStatementQueryBankStatementResponseSuccess =  
8363 - PostServiceBankStatementQueryBankStatementResponse[200];  
8364 -/**  
8365 - * @description  
8366 - * 查询银行流水  
8367 - * @tags 银行流水  
8368 - * @produces *  
8369 - * @consumes application/json  
8370 - */  
8371 -export const postServiceBankStatementQueryBankStatement =  
8372 - /* #__PURE__ */ (() => {  
8373 - const method = 'post';  
8374 - const url = '/service/bankStatement/queryBankStatement';  
8375 - function request(  
8376 - option: PostServiceBankStatementQueryBankStatementOption,  
8377 - ): Promise<PostServiceBankStatementQueryBankStatementResponseSuccess> {  
8378 - return requester(request.url, {  
8379 - method: request.method,  
8380 - ...option,  
8381 - }) as unknown as Promise<PostServiceBankStatementQueryBankStatementResponseSuccess>;  
8382 - }  
8383 -  
8384 - /** http method */  
8385 - request.method = method;  
8386 - /** request url */  
8387 - request.url = url;  
8388 - return request;  
8389 - })();  
8390 -  
8391 -/** @description response type for postServiceConstAfterInvoicingInvoiceRecordStatus */  
8392 -export interface PostServiceConstAfterInvoicingInvoiceRecordStatusResponse {  
8393 - /**  
8394 - * @description  
8395 - * OK  
8396 - */  
8397 - 200: ServerResult;  
8398 - /**  
8399 - * @description  
8400 - * Created  
8401 - */  
8402 - 201: any;  
8403 - /**  
8404 - * @description  
8405 - * Unauthorized  
8406 - */  
8407 - 401: any;  
8408 - /**  
8409 - * @description  
8410 - * Forbidden  
8411 - */  
8412 - 403: any;  
8413 - /**  
8414 - * @description  
8415 - * Not Found  
8416 - */  
8417 - 404: any;  
8418 -}  
8419 -  
8420 -export type PostServiceConstAfterInvoicingInvoiceRecordStatusResponseSuccess =  
8421 - PostServiceConstAfterInvoicingInvoiceRecordStatusResponse[200];  
8422 -/**  
8423 - * @description  
8424 - * 开票后的开票记录状态  
8425 - * @tags front-const-controller  
8426 - * @produces *  
8427 - * @consumes application/json  
8428 - */  
8429 -export const postServiceConstAfterInvoicingInvoiceRecordStatus =  
8430 - /* #__PURE__ */ (() => {  
8431 - const method = 'post';  
8432 - const url = '/service/const/afterInvoicingInvoiceRecordStatus';  
8433 - function request(): Promise<PostServiceConstAfterInvoicingInvoiceRecordStatusResponseSuccess> {  
8434 - return requester(request.url, {  
8435 - method: request.method,  
8436 - }) as unknown as Promise<PostServiceConstAfterInvoicingInvoiceRecordStatusResponseSuccess>;  
8437 - }  
8438 -  
8439 - /** http method */  
8440 - request.method = method;  
8441 - /** request url */  
8442 - request.url = url;  
8443 - return request;  
8444 - })();  
8445 -  
8446 -/** @description response type for postServiceConstAfterInvoicingStatus */  
8447 -export interface PostServiceConstAfterInvoicingStatusResponse { 8391 +/** @description response type for postPrepaidList */
  8392 +export interface PostPrepaidListResponse {
8448 /** 8393 /**
8449 * @description 8394 * @description
8450 * OK 8395 * OK
@@ -8472,22 +8417,24 @@ export interface PostServiceConstAfterInvoicingStatusResponse { @@ -8472,22 +8417,24 @@ export interface PostServiceConstAfterInvoicingStatusResponse {
8472 404: any; 8417 404: any;
8473 } 8418 }
8474 8419
8475 -export type PostServiceConstAfterInvoicingStatusResponseSuccess =  
8476 - PostServiceConstAfterInvoicingStatusResponse[200]; 8420 +export type PostPrepaidListResponseSuccess = PostPrepaidListResponse[200];
8477 /** 8421 /**
8478 * @description 8422 * @description
8479 - * 申请开票后状态  
8480 - * @tags front-const-controller 8423 + * 查询列表
  8424 + * @tags prepaid-controller
8481 * @produces * 8425 * @produces *
8482 * @consumes application/json 8426 * @consumes application/json
8483 */ 8427 */
8484 -export const postServiceConstAfterInvoicingStatus = /* #__PURE__ */ (() => { 8428 +export const postPrepaidList = /* #__PURE__ */ (() => {
8485 const method = 'post'; 8429 const method = 'post';
8486 - const url = '/service/const/afterInvoicingStatus';  
8487 - function request(): Promise<PostServiceConstAfterInvoicingStatusResponseSuccess> { 8430 + const url = '/prepaid/list';
  8431 + function request(
  8432 + option: PostPrepaidListOption,
  8433 + ): Promise<PostPrepaidListResponseSuccess> {
8488 return requester(request.url, { 8434 return requester(request.url, {
8489 method: request.method, 8435 method: request.method,
8490 - }) as unknown as Promise<PostServiceConstAfterInvoicingStatusResponseSuccess>; 8436 + ...option,
  8437 + }) as unknown as Promise<PostPrepaidListResponseSuccess>;
8491 } 8438 }
8492 8439
8493 /** http method */ 8440 /** http method */
@@ -8497,118 +8444,22 @@ export const postServiceConstAfterInvoicingStatus = /* #__PURE__ */ (() =&gt; { @@ -8497,118 +8444,22 @@ export const postServiceConstAfterInvoicingStatus = /* #__PURE__ */ (() =&gt; {
8497 return request; 8444 return request;
8498 })(); 8445 })();
8499 8446
8500 -/** @description response type for postServiceConstBeforeInvoicingInvoiceRecordStatus */  
8501 -export interface PostServiceConstBeforeInvoicingInvoiceRecordStatusResponse {  
8502 - /**  
8503 - * @description  
8504 - * OK  
8505 - */  
8506 - 200: ServerResult;  
8507 - /**  
8508 - * @description  
8509 - * Created  
8510 - */  
8511 - 201: any;  
8512 - /**  
8513 - * @description  
8514 - * Unauthorized  
8515 - */  
8516 - 401: any;  
8517 - /**  
8518 - * @description  
8519 - * Forbidden  
8520 - */  
8521 - 403: any; 8447 +/** @description request parameter type for postPrepaidPhoneAvailableList */
  8448 +export interface PostPrepaidPhoneAvailableListOption {
8522 /** 8449 /**
8523 * @description 8450 * @description
8524 - * Not Found  
8525 - */  
8526 - 404: any;  
8527 -}  
8528 -  
8529 -export type PostServiceConstBeforeInvoicingInvoiceRecordStatusResponseSuccess =  
8530 - PostServiceConstBeforeInvoicingInvoiceRecordStatusResponse[200];  
8531 -/**  
8532 - * @description  
8533 - * 开票前的开票记录状态  
8534 - * @tags front-const-controller  
8535 - * @produces *  
8536 - * @consumes application/json  
8537 - */  
8538 -export const postServiceConstBeforeInvoicingInvoiceRecordStatus =  
8539 - /* #__PURE__ */ (() => {  
8540 - const method = 'post';  
8541 - const url = '/service/const/beforeInvoicingInvoiceRecordStatus';  
8542 - function request(): Promise<PostServiceConstBeforeInvoicingInvoiceRecordStatusResponseSuccess> {  
8543 - return requester(request.url, {  
8544 - method: request.method,  
8545 - }) as unknown as Promise<PostServiceConstBeforeInvoicingInvoiceRecordStatusResponseSuccess>;  
8546 - }  
8547 -  
8548 - /** http method */  
8549 - request.method = method;  
8550 - /** request url */  
8551 - request.url = url;  
8552 - return request;  
8553 - })();  
8554 -  
8555 -/** @description response type for postServiceConstCanApplyAfterInvoicingStatus */  
8556 -export interface PostServiceConstCanApplyAfterInvoicingStatusResponse {  
8557 - /**  
8558 - * @description  
8559 - * OK  
8560 - */  
8561 - 200: ServerResult;  
8562 - /**  
8563 - * @description  
8564 - * Created  
8565 - */  
8566 - 201: any;  
8567 - /**  
8568 - * @description  
8569 - * Unauthorized  
8570 - */  
8571 - 401: any;  
8572 - /**  
8573 - * @description  
8574 - * Forbidden  
8575 - */  
8576 - 403: any;  
8577 - /**  
8578 - * @description  
8579 - * Not Found 8451 + * request
8580 */ 8452 */
8581 - 404: any; 8453 + body: {
  8454 + /**
  8455 + @description
  8456 + request */
  8457 + request: SalesRechargePrepaymentAuditRequest;
  8458 + };
8582 } 8459 }
8583 8460
8584 -export type PostServiceConstCanApplyAfterInvoicingStatusResponseSuccess =  
8585 - PostServiceConstCanApplyAfterInvoicingStatusResponse[200];  
8586 -/**  
8587 - * @description  
8588 - * 开具类型  
8589 - * @tags front-const-controller  
8590 - * @produces *  
8591 - * @consumes application/json  
8592 - */  
8593 -export const postServiceConstCanApplyAfterInvoicingStatus =  
8594 - /* #__PURE__ */ (() => {  
8595 - const method = 'post';  
8596 - const url = '/service/const/canApplyAfterInvoicingStatus';  
8597 - function request(): Promise<PostServiceConstCanApplyAfterInvoicingStatusResponseSuccess> {  
8598 - return requester(request.url, {  
8599 - method: request.method,  
8600 - }) as unknown as Promise<PostServiceConstCanApplyAfterInvoicingStatusResponseSuccess>;  
8601 - }  
8602 -  
8603 - /** http method */  
8604 - request.method = method;  
8605 - /** request url */  
8606 - request.url = url;  
8607 - return request;  
8608 - })();  
8609 -  
8610 -/** @description response type for postServiceConstGetPayeeEnum */  
8611 -export interface PostServiceConstGetPayeeEnumResponse { 8461 +/** @description response type for postPrepaidPhoneAvailableList */
  8462 +export interface PostPrepaidPhoneAvailableListResponse {
8612 /** 8463 /**
8613 * @description 8464 * @description
8614 * OK 8465 * OK
@@ -8636,22 +8487,25 @@ export interface PostServiceConstGetPayeeEnumResponse { @@ -8636,22 +8487,25 @@ export interface PostServiceConstGetPayeeEnumResponse {
8636 404: any; 8487 404: any;
8637 } 8488 }
8638 8489
8639 -export type PostServiceConstGetPayeeEnumResponseSuccess =  
8640 - PostServiceConstGetPayeeEnumResponse[200]; 8490 +export type PostPrepaidPhoneAvailableListResponseSuccess =
  8491 + PostPrepaidPhoneAvailableListResponse[200];
8641 /** 8492 /**
8642 * @description 8493 * @description
8643 - * 获取收款方  
8644 - * @tags front-const-controller 8494 + * 财务审核
  8495 + * @tags prepaid-controller
8645 * @produces * 8496 * @produces *
8646 * @consumes application/json 8497 * @consumes application/json
8647 */ 8498 */
8648 -export const postServiceConstGetPayeeEnum = /* #__PURE__ */ (() => { 8499 +export const postPrepaidPhoneAvailableList = /* #__PURE__ */ (() => {
8649 const method = 'post'; 8500 const method = 'post';
8650 - const url = '/service/const/getPayeeEnum';  
8651 - function request(): Promise<PostServiceConstGetPayeeEnumResponseSuccess> { 8501 + const url = '/prepaid/phone/available/list';
  8502 + function request(
  8503 + option: PostPrepaidPhoneAvailableListOption,
  8504 + ): Promise<PostPrepaidPhoneAvailableListResponseSuccess> {
8652 return requester(request.url, { 8505 return requester(request.url, {
8653 method: request.method, 8506 method: request.method,
8654 - }) as unknown as Promise<PostServiceConstGetPayeeEnumResponseSuccess>; 8507 + ...option,
  8508 + }) as unknown as Promise<PostPrepaidPhoneAvailableListResponseSuccess>;
8655 } 8509 }
8656 8510
8657 /** http method */ 8511 /** http method */
@@ -8661,8 +8515,22 @@ export const postServiceConstGetPayeeEnum = /* #__PURE__ */ (() =&gt; { @@ -8661,8 +8515,22 @@ export const postServiceConstGetPayeeEnum = /* #__PURE__ */ (() =&gt; {
8661 return request; 8515 return request;
8662 })(); 8516 })();
8663 8517
8664 -/** @description response type for postServiceConstInvoiceType */  
8665 -export interface PostServiceConstInvoiceTypeResponse { 8518 +/** @description request parameter type for postPrepaidUpdate */
  8519 +export interface PostPrepaidUpdateOption {
  8520 + /**
  8521 + * @description
  8522 + * request
  8523 + */
  8524 + body: {
  8525 + /**
  8526 + @description
  8527 + request */
  8528 + request: SalesRechargePrepaymentUpdateRequest;
  8529 + };
  8530 +}
  8531 +
  8532 +/** @description response type for postPrepaidUpdate */
  8533 +export interface PostPrepaidUpdateResponse {
8666 /** 8534 /**
8667 * @description 8535 * @description
8668 * OK 8536 * OK
@@ -8690,22 +8558,24 @@ export interface PostServiceConstInvoiceTypeResponse { @@ -8690,22 +8558,24 @@ export interface PostServiceConstInvoiceTypeResponse {
8690 404: any; 8558 404: any;
8691 } 8559 }
8692 8560
8693 -export type PostServiceConstInvoiceTypeResponseSuccess =  
8694 - PostServiceConstInvoiceTypeResponse[200]; 8561 +export type PostPrepaidUpdateResponseSuccess = PostPrepaidUpdateResponse[200];
8695 /** 8562 /**
8696 * @description 8563 * @description
8697 - * 发票类型  
8698 - * @tags front-const-controller 8564 + * 修改预存
  8565 + * @tags prepaid-controller
8699 * @produces * 8566 * @produces *
8700 * @consumes application/json 8567 * @consumes application/json
8701 */ 8568 */
8702 -export const postServiceConstInvoiceType = /* #__PURE__ */ (() => { 8569 +export const postPrepaidUpdate = /* #__PURE__ */ (() => {
8703 const method = 'post'; 8570 const method = 'post';
8704 - const url = '/service/const/invoiceType';  
8705 - function request(): Promise<PostServiceConstInvoiceTypeResponseSuccess> { 8571 + const url = '/prepaid/update';
  8572 + function request(
  8573 + option: PostPrepaidUpdateOption,
  8574 + ): Promise<PostPrepaidUpdateResponseSuccess> {
8706 return requester(request.url, { 8575 return requester(request.url, {
8707 method: request.method, 8576 method: request.method,
8708 - }) as unknown as Promise<PostServiceConstInvoiceTypeResponseSuccess>; 8577 + ...option,
  8578 + }) as unknown as Promise<PostPrepaidUpdateResponseSuccess>;
8709 } 8579 }
8710 8580
8711 /** http method */ 8581 /** http method */
@@ -8715,8 +8585,22 @@ export const postServiceConstInvoiceType = /* #__PURE__ */ (() =&gt; { @@ -8715,8 +8585,22 @@ export const postServiceConstInvoiceType = /* #__PURE__ */ (() =&gt; {
8715 return request; 8585 return request;
8716 })(); 8586 })();
8717 8587
8718 -/** @description response type for postServiceConstInvoicingType */  
8719 -export interface PostServiceConstInvoicingTypeResponse { 8588 +/** @description request parameter type for postResearchGroupMemberRequestsAdd */
  8589 +export interface PostResearchGroupMemberRequestsAddOption {
  8590 + /**
  8591 + * @description
  8592 + * request
  8593 + */
  8594 + body: {
  8595 + /**
  8596 + @description
  8597 + request */
  8598 + request: ResearchGroupMemberRequestAddRequest;
  8599 + };
  8600 +}
  8601 +
  8602 +/** @description response type for postResearchGroupMemberRequestsAdd */
  8603 +export interface PostResearchGroupMemberRequestsAddResponse {
8720 /** 8604 /**
8721 * @description 8605 * @description
8722 * OK 8606 * OK
@@ -8744,22 +8628,25 @@ export interface PostServiceConstInvoicingTypeResponse { @@ -8744,22 +8628,25 @@ export interface PostServiceConstInvoicingTypeResponse {
8744 404: any; 8628 404: any;
8745 } 8629 }
8746 8630
8747 -export type PostServiceConstInvoicingTypeResponseSuccess =  
8748 - PostServiceConstInvoicingTypeResponse[200]; 8631 +export type PostResearchGroupMemberRequestsAddResponseSuccess =
  8632 + PostResearchGroupMemberRequestsAddResponse[200];
8749 /** 8633 /**
8750 * @description 8634 * @description
8751 - * 开具类型  
8752 - * @tags front-const-controller 8635 + * 新增申请信息
  8636 + * @tags research-group-member-requests-controller
8753 * @produces * 8637 * @produces *
8754 * @consumes application/json 8638 * @consumes application/json
8755 */ 8639 */
8756 -export const postServiceConstInvoicingType = /* #__PURE__ */ (() => { 8640 +export const postResearchGroupMemberRequestsAdd = /* #__PURE__ */ (() => {
8757 const method = 'post'; 8641 const method = 'post';
8758 - const url = '/service/const/invoicingType';  
8759 - function request(): Promise<PostServiceConstInvoicingTypeResponseSuccess> { 8642 + const url = '/research/group/member/requests/add';
  8643 + function request(
  8644 + option: PostResearchGroupMemberRequestsAddOption,
  8645 + ): Promise<PostResearchGroupMemberRequestsAddResponseSuccess> {
8760 return requester(request.url, { 8646 return requester(request.url, {
8761 method: request.method, 8647 method: request.method,
8762 - }) as unknown as Promise<PostServiceConstInvoicingTypeResponseSuccess>; 8648 + ...option,
  8649 + }) as unknown as Promise<PostResearchGroupMemberRequestsAddResponseSuccess>;
8763 } 8650 }
8764 8651
8765 /** http method */ 8652 /** http method */
@@ -8769,22 +8656,22 @@ export const postServiceConstInvoicingType = /* #__PURE__ */ (() =&gt; { @@ -8769,22 +8656,22 @@ export const postServiceConstInvoicingType = /* #__PURE__ */ (() =&gt; {
8769 return request; 8656 return request;
8770 })(); 8657 })();
8771 8658
8772 -/** @description request parameter type for postServiceConstListInvoiceDetailNames */  
8773 -export interface PostServiceConstListInvoiceDetailNamesOption { 8659 +/** @description request parameter type for postResearchGroupMemberRequestsDelete */
  8660 +export interface PostResearchGroupMemberRequestsDeleteOption {
8774 /** 8661 /**
8775 * @description 8662 * @description
8776 - * queryInvoiceProjectDto 8663 + * request
8777 */ 8664 */
8778 body: { 8665 body: {
8779 /** 8666 /**
8780 @description 8667 @description
8781 - queryInvoiceProjectDto */  
8782 - queryInvoiceProjectDto: QueryInvoiceProjectDto; 8668 + request */
  8669 + request: ResearchGroupMemberRequestDeleteRequest;
8783 }; 8670 };
8784 } 8671 }
8785 8672
8786 -/** @description response type for postServiceConstListInvoiceDetailNames */  
8787 -export interface PostServiceConstListInvoiceDetailNamesResponse { 8673 +/** @description response type for postResearchGroupMemberRequestsDelete */
  8674 +export interface PostResearchGroupMemberRequestsDeleteResponse {
8788 /** 8675 /**
8789 * @description 8676 * @description
8790 * OK 8677 * OK
@@ -8812,25 +8699,25 @@ export interface PostServiceConstListInvoiceDetailNamesResponse { @@ -8812,25 +8699,25 @@ export interface PostServiceConstListInvoiceDetailNamesResponse {
8812 404: any; 8699 404: any;
8813 } 8700 }
8814 8701
8815 -export type PostServiceConstListInvoiceDetailNamesResponseSuccess =  
8816 - PostServiceConstListInvoiceDetailNamesResponse[200]; 8702 +export type PostResearchGroupMemberRequestsDeleteResponseSuccess =
  8703 + PostResearchGroupMemberRequestsDeleteResponse[200];
8817 /** 8704 /**
8818 * @description 8705 * @description
8819 - * 根据公司名获取收款方  
8820 - * @tags front-const-controller 8706 + * 删除申请信息
  8707 + * @tags research-group-member-requests-controller
8821 * @produces * 8708 * @produces *
8822 * @consumes application/json 8709 * @consumes application/json
8823 */ 8710 */
8824 -export const postServiceConstListInvoiceDetailNames = /* #__PURE__ */ (() => { 8711 +export const postResearchGroupMemberRequestsDelete = /* #__PURE__ */ (() => {
8825 const method = 'post'; 8712 const method = 'post';
8826 - const url = '/service/const/listInvoiceDetailNames'; 8713 + const url = '/research/group/member/requests/delete';
8827 function request( 8714 function request(
8828 - option: PostServiceConstListInvoiceDetailNamesOption,  
8829 - ): Promise<PostServiceConstListInvoiceDetailNamesResponseSuccess> { 8715 + option: PostResearchGroupMemberRequestsDeleteOption,
  8716 + ): Promise<PostResearchGroupMemberRequestsDeleteResponseSuccess> {
8830 return requester(request.url, { 8717 return requester(request.url, {
8831 method: request.method, 8718 method: request.method,
8832 ...option, 8719 ...option,
8833 - }) as unknown as Promise<PostServiceConstListInvoiceDetailNamesResponseSuccess>; 8720 + }) as unknown as Promise<PostResearchGroupMemberRequestsDeleteResponseSuccess>;
8834 } 8721 }
8835 8722
8836 /** http method */ 8723 /** http method */
@@ -8840,8 +8727,22 @@ export const postServiceConstListInvoiceDetailNames = /* #__PURE__ */ (() =&gt; { @@ -8840,8 +8727,22 @@ export const postServiceConstListInvoiceDetailNames = /* #__PURE__ */ (() =&gt; {
8840 return request; 8727 return request;
8841 })(); 8728 })();
8842 8729
8843 -/** @description response type for postServiceConstNotCanModifyInvoiceRecordStatus */  
8844 -export interface PostServiceConstNotCanModifyInvoiceRecordStatusResponse { 8730 +/** @description request parameter type for postResearchGroupMemberRequestsDetail */
  8731 +export interface PostResearchGroupMemberRequestsDetailOption {
  8732 + /**
  8733 + * @description
  8734 + * request
  8735 + */
  8736 + body: {
  8737 + /**
  8738 + @description
  8739 + request */
  8740 + request: ResearchGroupMemberRequestDetailRequest;
  8741 + };
  8742 +}
  8743 +
  8744 +/** @description response type for postResearchGroupMemberRequestsDetail */
  8745 +export interface PostResearchGroupMemberRequestsDetailResponse {
8845 /** 8746 /**
8846 * @description 8747 * @description
8847 * OK 8748 * OK
@@ -8869,56 +8770,60 @@ export interface PostServiceConstNotCanModifyInvoiceRecordStatusResponse { @@ -8869,56 +8770,60 @@ export interface PostServiceConstNotCanModifyInvoiceRecordStatusResponse {
8869 404: any; 8770 404: any;
8870 } 8771 }
8871 8772
8872 -export type PostServiceConstNotCanModifyInvoiceRecordStatusResponseSuccess =  
8873 - PostServiceConstNotCanModifyInvoiceRecordStatusResponse[200]; 8773 +export type PostResearchGroupMemberRequestsDetailResponseSuccess =
  8774 + PostResearchGroupMemberRequestsDetailResponse[200];
8874 /** 8775 /**
8875 * @description 8776 * @description
8876 - * 不能修改的开票记录状态  
8877 - * @tags front-const-controller 8777 + * 查询申请信息
  8778 + * @tags research-group-member-requests-controller
8878 * @produces * 8779 * @produces *
8879 * @consumes application/json 8780 * @consumes application/json
8880 */ 8781 */
8881 -export const postServiceConstNotCanModifyInvoiceRecordStatus =  
8882 - /* #__PURE__ */ (() => {  
8883 - const method = 'post';  
8884 - const url = '/service/const/notCanModifyInvoiceRecordStatus';  
8885 - function request(): Promise<PostServiceConstNotCanModifyInvoiceRecordStatusResponseSuccess> {  
8886 - return requester(request.url, {  
8887 - method: request.method,  
8888 - }) as unknown as Promise<PostServiceConstNotCanModifyInvoiceRecordStatusResponseSuccess>;  
8889 - } 8782 +export const postResearchGroupMemberRequestsDetail = /* #__PURE__ */ (() => {
  8783 + const method = 'post';
  8784 + const url = '/research/group/member/requests/detail';
  8785 + function request(
  8786 + option: PostResearchGroupMemberRequestsDetailOption,
  8787 + ): Promise<PostResearchGroupMemberRequestsDetailResponseSuccess> {
  8788 + return requester(request.url, {
  8789 + method: request.method,
  8790 + ...option,
  8791 + }) as unknown as Promise<PostResearchGroupMemberRequestsDetailResponseSuccess>;
  8792 + }
8890 8793
8891 - /** http method */  
8892 - request.method = method;  
8893 - /** request url */  
8894 - request.url = url;  
8895 - return request;  
8896 - })(); 8794 + /** http method */
  8795 + request.method = method;
  8796 + /** request url */
  8797 + request.url = url;
  8798 + return request;
  8799 +})();
8897 8800
8898 -/** @description request parameter type for getServiceInvoiceListInvoiceProject */  
8899 -export interface GetServiceInvoiceListInvoiceProjectOption {  
8900 - /** @format int32 */  
8901 - query?: {  
8902 - /**  
8903 - @format int32 */  
8904 - current?: number;  
8905 - nameLike?: string;  
8906 - /**  
8907 - @format int32 */  
8908 - pageSize?: number; 8801 +/** @description request parameter type for postResearchGroupMemberRequestsEdit */
  8802 +export interface PostResearchGroupMemberRequestsEditOption {
  8803 + /**
  8804 + * @description
  8805 + * request
  8806 + */
  8807 + body: {
8909 /** 8808 /**
8910 - @format int32 */  
8911 - total?: number; 8809 + @description
  8810 + request */
  8811 + request: ResearchGroupMemberRequestEditRequest;
8912 }; 8812 };
8913 } 8813 }
8914 8814
8915 -/** @description response type for getServiceInvoiceListInvoiceProject */  
8916 -export interface GetServiceInvoiceListInvoiceProjectResponse { 8815 +/** @description response type for postResearchGroupMemberRequestsEdit */
  8816 +export interface PostResearchGroupMemberRequestsEditResponse {
8917 /** 8817 /**
8918 * @description 8818 * @description
8919 * OK 8819 * OK
8920 */ 8820 */
8921 - 200: any; 8821 + 200: ServerResult;
  8822 + /**
  8823 + * @description
  8824 + * Created
  8825 + */
  8826 + 201: any;
8922 /** 8827 /**
8923 * @description 8828 * @description
8924 * Unauthorized 8829 * Unauthorized
@@ -8936,24 +8841,25 @@ export interface GetServiceInvoiceListInvoiceProjectResponse { @@ -8936,24 +8841,25 @@ export interface GetServiceInvoiceListInvoiceProjectResponse {
8936 404: any; 8841 404: any;
8937 } 8842 }
8938 8843
8939 -export type GetServiceInvoiceListInvoiceProjectResponseSuccess =  
8940 - GetServiceInvoiceListInvoiceProjectResponse[200]; 8844 +export type PostResearchGroupMemberRequestsEditResponseSuccess =
  8845 + PostResearchGroupMemberRequestsEditResponse[200];
8941 /** 8846 /**
8942 * @description 8847 * @description
8943 - * invoiceProjectList  
8944 - * @tags 发票 8848 + * 编辑申请信息
  8849 + * @tags research-group-member-requests-controller
8945 * @produces * 8850 * @produces *
  8851 + * @consumes application/json
8946 */ 8852 */
8947 -export const getServiceInvoiceListInvoiceProject = /* #__PURE__ */ (() => {  
8948 - const method = 'get';  
8949 - const url = '/service/invoice/ListInvoiceProject'; 8853 +export const postResearchGroupMemberRequestsEdit = /* #__PURE__ */ (() => {
  8854 + const method = 'post';
  8855 + const url = '/research/group/member/requests/edit';
8950 function request( 8856 function request(
8951 - option?: GetServiceInvoiceListInvoiceProjectOption,  
8952 - ): Promise<GetServiceInvoiceListInvoiceProjectResponseSuccess> { 8857 + option: PostResearchGroupMemberRequestsEditOption,
  8858 + ): Promise<PostResearchGroupMemberRequestsEditResponseSuccess> {
8953 return requester(request.url, { 8859 return requester(request.url, {
8954 method: request.method, 8860 method: request.method,
8955 ...option, 8861 ...option,
8956 - }) as unknown as Promise<GetServiceInvoiceListInvoiceProjectResponseSuccess>; 8862 + }) as unknown as Promise<PostResearchGroupMemberRequestsEditResponseSuccess>;
8957 } 8863 }
8958 8864
8959 /** http method */ 8865 /** http method */
@@ -8963,22 +8869,22 @@ export const getServiceInvoiceListInvoiceProject = /* #__PURE__ */ (() =&gt; { @@ -8963,22 +8869,22 @@ export const getServiceInvoiceListInvoiceProject = /* #__PURE__ */ (() =&gt; {
8963 return request; 8869 return request;
8964 })(); 8870 })();
8965 8871
8966 -/** @description request parameter type for postServiceInvoiceAddInvoice */  
8967 -export interface PostServiceInvoiceAddInvoiceOption { 8872 +/** @description request parameter type for postResearchGroupMemberRequestsList */
  8873 +export interface PostResearchGroupMemberRequestsListOption {
8968 /** 8874 /**
8969 * @description 8875 * @description
8970 - * dto 8876 + * request
8971 */ 8877 */
8972 body: { 8878 body: {
8973 /** 8879 /**
8974 @description 8880 @description
8975 - dto */  
8976 - dto: InvoiceDto; 8881 + request */
  8882 + request: ResearchGroupMemberRequestsRequest;
8977 }; 8883 };
8978 } 8884 }
8979 8885
8980 -/** @description response type for postServiceInvoiceAddInvoice */  
8981 -export interface PostServiceInvoiceAddInvoiceResponse { 8886 +/** @description response type for postResearchGroupMemberRequestsList */
  8887 +export interface PostResearchGroupMemberRequestsListResponse {
8982 /** 8888 /**
8983 * @description 8889 * @description
8984 * OK 8890 * OK
@@ -9006,25 +8912,25 @@ export interface PostServiceInvoiceAddInvoiceResponse { @@ -9006,25 +8912,25 @@ export interface PostServiceInvoiceAddInvoiceResponse {
9006 404: any; 8912 404: any;
9007 } 8913 }
9008 8914
9009 -export type PostServiceInvoiceAddInvoiceResponseSuccess =  
9010 - PostServiceInvoiceAddInvoiceResponse[200]; 8915 +export type PostResearchGroupMemberRequestsListResponseSuccess =
  8916 + PostResearchGroupMemberRequestsListResponse[200];
9011 /** 8917 /**
9012 * @description 8918 * @description
9013 - * 添加发票  
9014 - * @tags 发票 8919 + * 申请列表
  8920 + * @tags research-group-member-requests-controller
9015 * @produces * 8921 * @produces *
9016 * @consumes application/json 8922 * @consumes application/json
9017 */ 8923 */
9018 -export const postServiceInvoiceAddInvoice = /* #__PURE__ */ (() => { 8924 +export const postResearchGroupMemberRequestsList = /* #__PURE__ */ (() => {
9019 const method = 'post'; 8925 const method = 'post';
9020 - const url = '/service/invoice/addInvoice'; 8926 + const url = '/research/group/member/requests/list';
9021 function request( 8927 function request(
9022 - option: PostServiceInvoiceAddInvoiceOption,  
9023 - ): Promise<PostServiceInvoiceAddInvoiceResponseSuccess> { 8928 + option: PostResearchGroupMemberRequestsListOption,
  8929 + ): Promise<PostResearchGroupMemberRequestsListResponseSuccess> {
9024 return requester(request.url, { 8930 return requester(request.url, {
9025 method: request.method, 8931 method: request.method,
9026 ...option, 8932 ...option,
9027 - }) as unknown as Promise<PostServiceInvoiceAddInvoiceResponseSuccess>; 8933 + }) as unknown as Promise<PostResearchGroupMemberRequestsListResponseSuccess>;
9028 } 8934 }
9029 8935
9030 /** http method */ 8936 /** http method */
@@ -9034,22 +8940,22 @@ export const postServiceInvoiceAddInvoice = /* #__PURE__ */ (() =&gt; { @@ -9034,22 +8940,22 @@ export const postServiceInvoiceAddInvoice = /* #__PURE__ */ (() =&gt; {
9034 return request; 8940 return request;
9035 })(); 8941 })();
9036 8942
9037 -/** @description request parameter type for postServiceInvoiceApplyInvoice */  
9038 -export interface PostServiceInvoiceApplyInvoiceOption { 8943 +/** @description request parameter type for postResearchGroupsAdd */
  8944 +export interface PostResearchGroupsAddOption {
9039 /** 8945 /**
9040 * @description 8946 * @description
9041 - * dto 8947 + * request
9042 */ 8948 */
9043 body: { 8949 body: {
9044 /** 8950 /**
9045 @description 8951 @description
9046 - dto */  
9047 - dto: ApplyInvoiceDto; 8952 + request */
  8953 + request: ResearchGroupAddRequest;
9048 }; 8954 };
9049 } 8955 }
9050 8956
9051 -/** @description response type for postServiceInvoiceApplyInvoice */  
9052 -export interface PostServiceInvoiceApplyInvoiceResponse { 8957 +/** @description response type for postResearchGroupsAdd */
  8958 +export interface PostResearchGroupsAddResponse {
9053 /** 8959 /**
9054 * @description 8960 * @description
9055 * OK 8961 * OK
@@ -9077,25 +8983,25 @@ export interface PostServiceInvoiceApplyInvoiceResponse { @@ -9077,25 +8983,25 @@ export interface PostServiceInvoiceApplyInvoiceResponse {
9077 404: any; 8983 404: any;
9078 } 8984 }
9079 8985
9080 -export type PostServiceInvoiceApplyInvoiceResponseSuccess =  
9081 - PostServiceInvoiceApplyInvoiceResponse[200]; 8986 +export type PostResearchGroupsAddResponseSuccess =
  8987 + PostResearchGroupsAddResponse[200];
9082 /** 8988 /**
9083 * @description 8989 * @description
9084 - * 申请开票  
9085 - * @tags 发票 8990 + * 新增课题组信息
  8991 + * @tags research-groups-controller
9086 * @produces * 8992 * @produces *
9087 * @consumes application/json 8993 * @consumes application/json
9088 */ 8994 */
9089 -export const postServiceInvoiceApplyInvoice = /* #__PURE__ */ (() => { 8995 +export const postResearchGroupsAdd = /* #__PURE__ */ (() => {
9090 const method = 'post'; 8996 const method = 'post';
9091 - const url = '/service/invoice/applyInvoice'; 8997 + const url = '/research/groups/add';
9092 function request( 8998 function request(
9093 - option: PostServiceInvoiceApplyInvoiceOption,  
9094 - ): Promise<PostServiceInvoiceApplyInvoiceResponseSuccess> { 8999 + option: PostResearchGroupsAddOption,
  9000 + ): Promise<PostResearchGroupsAddResponseSuccess> {
9095 return requester(request.url, { 9001 return requester(request.url, {
9096 method: request.method, 9002 method: request.method,
9097 ...option, 9003 ...option,
9098 - }) as unknown as Promise<PostServiceInvoiceApplyInvoiceResponseSuccess>; 9004 + }) as unknown as Promise<PostResearchGroupsAddResponseSuccess>;
9099 } 9005 }
9100 9006
9101 /** http method */ 9007 /** http method */
@@ -9105,22 +9011,22 @@ export const postServiceInvoiceApplyInvoice = /* #__PURE__ */ (() =&gt; { @@ -9105,22 +9011,22 @@ export const postServiceInvoiceApplyInvoice = /* #__PURE__ */ (() =&gt; {
9105 return request; 9011 return request;
9106 })(); 9012 })();
9107 9013
9108 -/** @description request parameter type for postServiceInvoiceCancelApply */  
9109 -export interface PostServiceInvoiceCancelApplyOption { 9014 +/** @description request parameter type for postResearchGroupsDelete */
  9015 +export interface PostResearchGroupsDeleteOption {
9110 /** 9016 /**
9111 * @description 9017 * @description
9112 - * dto 9018 + * request
9113 */ 9019 */
9114 body: { 9020 body: {
9115 /** 9021 /**
9116 @description 9022 @description
9117 - dto */  
9118 - dto: Dto; 9023 + request */
  9024 + request: ResearchGroupDeleteRequest;
9119 }; 9025 };
9120 } 9026 }
9121 9027
9122 -/** @description response type for postServiceInvoiceCancelApply */  
9123 -export interface PostServiceInvoiceCancelApplyResponse { 9028 +/** @description response type for postResearchGroupsDelete */
  9029 +export interface PostResearchGroupsDeleteResponse {
9124 /** 9030 /**
9125 * @description 9031 * @description
9126 * OK 9032 * OK
@@ -9148,25 +9054,25 @@ export interface PostServiceInvoiceCancelApplyResponse { @@ -9148,25 +9054,25 @@ export interface PostServiceInvoiceCancelApplyResponse {
9148 404: any; 9054 404: any;
9149 } 9055 }
9150 9056
9151 -export type PostServiceInvoiceCancelApplyResponseSuccess =  
9152 - PostServiceInvoiceCancelApplyResponse[200]; 9057 +export type PostResearchGroupsDeleteResponseSuccess =
  9058 + PostResearchGroupsDeleteResponse[200];
9153 /** 9059 /**
9154 * @description 9060 * @description
9155 - * 取消申请  
9156 - * @tags 发票 9061 + * 删除课题组信息
  9062 + * @tags research-groups-controller
9157 * @produces * 9063 * @produces *
9158 * @consumes application/json 9064 * @consumes application/json
9159 */ 9065 */
9160 -export const postServiceInvoiceCancelApply = /* #__PURE__ */ (() => { 9066 +export const postResearchGroupsDelete = /* #__PURE__ */ (() => {
9161 const method = 'post'; 9067 const method = 'post';
9162 - const url = '/service/invoice/cancelApply'; 9068 + const url = '/research/groups/delete';
9163 function request( 9069 function request(
9164 - option: PostServiceInvoiceCancelApplyOption,  
9165 - ): Promise<PostServiceInvoiceCancelApplyResponseSuccess> { 9070 + option: PostResearchGroupsDeleteOption,
  9071 + ): Promise<PostResearchGroupsDeleteResponseSuccess> {
9166 return requester(request.url, { 9072 return requester(request.url, {
9167 method: request.method, 9073 method: request.method,
9168 ...option, 9074 ...option,
9169 - }) as unknown as Promise<PostServiceInvoiceCancelApplyResponseSuccess>; 9075 + }) as unknown as Promise<PostResearchGroupsDeleteResponseSuccess>;
9170 } 9076 }
9171 9077
9172 /** http method */ 9078 /** http method */
@@ -9176,22 +9082,22 @@ export const postServiceInvoiceCancelApply = /* #__PURE__ */ (() =&gt; { @@ -9176,22 +9082,22 @@ export const postServiceInvoiceCancelApply = /* #__PURE__ */ (() =&gt; {
9176 return request; 9082 return request;
9177 })(); 9083 })();
9178 9084
9179 -/** @description request parameter type for postServiceInvoiceCancelInvoiceAndBankStatement */  
9180 -export interface PostServiceInvoiceCancelInvoiceAndBankStatementOption { 9085 +/** @description request parameter type for postResearchGroupsDetail */
  9086 +export interface PostResearchGroupsDetailOption {
9181 /** 9087 /**
9182 * @description 9088 * @description
9183 - * dto 9089 + * request
9184 */ 9090 */
9185 body: { 9091 body: {
9186 /** 9092 /**
9187 @description 9093 @description
9188 - dto */  
9189 - dto: CancelInvoiceAndBankStatementDto; 9094 + request */
  9095 + request: ResearchGroupDetailRequest;
9190 }; 9096 };
9191 } 9097 }
9192 9098
9193 -/** @description response type for postServiceInvoiceCancelInvoiceAndBankStatement */  
9194 -export interface PostServiceInvoiceCancelInvoiceAndBankStatementResponse { 9099 +/** @description response type for postResearchGroupsDetail */
  9100 +export interface PostResearchGroupsDetailResponse {
9195 /** 9101 /**
9196 * @description 9102 * @description
9197 * OK 9103 * OK
@@ -9219,56 +9125,41 @@ export interface PostServiceInvoiceCancelInvoiceAndBankStatementResponse { @@ -9219,56 +9125,41 @@ export interface PostServiceInvoiceCancelInvoiceAndBankStatementResponse {
9219 404: any; 9125 404: any;
9220 } 9126 }
9221 9127
9222 -export type PostServiceInvoiceCancelInvoiceAndBankStatementResponseSuccess =  
9223 - PostServiceInvoiceCancelInvoiceAndBankStatementResponse[200]; 9128 +export type PostResearchGroupsDetailResponseSuccess =
  9129 + PostResearchGroupsDetailResponse[200];
9224 /** 9130 /**
9225 * @description 9131 * @description
9226 - * 取消发票与银行流水的关联  
9227 - * @tags 发票 9132 + * 查询课题组信息
  9133 + * @tags research-groups-controller
9228 * @produces * 9134 * @produces *
9229 * @consumes application/json 9135 * @consumes application/json
9230 */ 9136 */
9231 -export const postServiceInvoiceCancelInvoiceAndBankStatement =  
9232 - /* #__PURE__ */ (() => {  
9233 - const method = 'post';  
9234 - const url = '/service/invoice/cancelInvoiceAndBankStatement';  
9235 - function request(  
9236 - option: PostServiceInvoiceCancelInvoiceAndBankStatementOption,  
9237 - ): Promise<PostServiceInvoiceCancelInvoiceAndBankStatementResponseSuccess> {  
9238 - return requester(request.url, {  
9239 - method: request.method,  
9240 - ...option,  
9241 - }) as unknown as Promise<PostServiceInvoiceCancelInvoiceAndBankStatementResponseSuccess>;  
9242 - }  
9243 -  
9244 - /** http method */  
9245 - request.method = method;  
9246 - /** request url */  
9247 - request.url = url;  
9248 - return request;  
9249 - })(); 9137 +export const postResearchGroupsDetail = /* #__PURE__ */ (() => {
  9138 + const method = 'post';
  9139 + const url = '/research/groups/detail';
  9140 + function request(
  9141 + option: PostResearchGroupsDetailOption,
  9142 + ): Promise<PostResearchGroupsDetailResponseSuccess> {
  9143 + return requester(request.url, {
  9144 + method: request.method,
  9145 + ...option,
  9146 + }) as unknown as Promise<PostResearchGroupsDetailResponseSuccess>;
  9147 + }
9250 9148
9251 -/** @description request parameter type for postServiceInvoiceDealInvoicingResult */  
9252 -export interface PostServiceInvoiceDealInvoicingResultOption {  
9253 - /**  
9254 - * @description  
9255 - * dto  
9256 - */  
9257 - body: {  
9258 - /**  
9259 - @description  
9260 - dto */  
9261 - dto: Dto;  
9262 - };  
9263 -} 9149 + /** http method */
  9150 + request.method = method;
  9151 + /** request url */
  9152 + request.url = url;
  9153 + return request;
  9154 +})();
9264 9155
9265 -/** @description response type for postServiceInvoiceDealInvoicingResult */  
9266 -export interface PostServiceInvoiceDealInvoicingResultResponse { 9156 +/** @description response type for postResearchGroupsDownloadImportTemplate */
  9157 +export interface PostResearchGroupsDownloadImportTemplateResponse {
9267 /** 9158 /**
9268 * @description 9159 * @description
9269 * OK 9160 * OK
9270 */ 9161 */
9271 - 200: ServerResult; 9162 + 200: any;
9272 /** 9163 /**
9273 * @description 9164 * @description
9274 * Created 9165 * Created
@@ -9291,25 +9182,22 @@ export interface PostServiceInvoiceDealInvoicingResultResponse { @@ -9291,25 +9182,22 @@ export interface PostServiceInvoiceDealInvoicingResultResponse {
9291 404: any; 9182 404: any;
9292 } 9183 }
9293 9184
9294 -export type PostServiceInvoiceDealInvoicingResultResponseSuccess =  
9295 - PostServiceInvoiceDealInvoicingResultResponse[200]; 9185 +export type PostResearchGroupsDownloadImportTemplateResponseSuccess =
  9186 + PostResearchGroupsDownloadImportTemplateResponse[200];
9296 /** 9187 /**
9297 * @description 9188 * @description
9298 - * 拉取开票结果  
9299 - * @tags 发票 9189 + * 课题组导入模板下载
  9190 + * @tags research-groups-controller
9300 * @produces * 9191 * @produces *
9301 * @consumes application/json 9192 * @consumes application/json
9302 */ 9193 */
9303 -export const postServiceInvoiceDealInvoicingResult = /* #__PURE__ */ (() => { 9194 +export const postResearchGroupsDownloadImportTemplate = /* #__PURE__ */ (() => {
9304 const method = 'post'; 9195 const method = 'post';
9305 - const url = '/service/invoice/dealInvoicingResult';  
9306 - function request(  
9307 - option: PostServiceInvoiceDealInvoicingResultOption,  
9308 - ): Promise<PostServiceInvoiceDealInvoicingResultResponseSuccess> { 9196 + const url = '/research/groups/download/importTemplate';
  9197 + function request(): Promise<PostResearchGroupsDownloadImportTemplateResponseSuccess> {
9309 return requester(request.url, { 9198 return requester(request.url, {
9310 method: request.method, 9199 method: request.method,
9311 - ...option,  
9312 - }) as unknown as Promise<PostServiceInvoiceDealInvoicingResultResponseSuccess>; 9200 + }) as unknown as Promise<PostResearchGroupsDownloadImportTemplateResponseSuccess>;
9313 } 9201 }
9314 9202
9315 /** http method */ 9203 /** http method */
@@ -9319,22 +9207,22 @@ export const postServiceInvoiceDealInvoicingResult = /* #__PURE__ */ (() =&gt; { @@ -9319,22 +9207,22 @@ export const postServiceInvoiceDealInvoicingResult = /* #__PURE__ */ (() =&gt; {
9319 return request; 9207 return request;
9320 })(); 9208 })();
9321 9209
9322 -/** @description request parameter type for postServiceInvoiceDeleteInvoice */  
9323 -export interface PostServiceInvoiceDeleteInvoiceOption { 9210 +/** @description request parameter type for postResearchGroupsEdit */
  9211 +export interface PostResearchGroupsEditOption {
9324 /** 9212 /**
9325 * @description 9213 * @description
9326 - * dto 9214 + * request
9327 */ 9215 */
9328 body: { 9216 body: {
9329 /** 9217 /**
9330 @description 9218 @description
9331 - dto */  
9332 - dto: Dto; 9219 + request */
  9220 + request: ResearchGroupEditRequest;
9333 }; 9221 };
9334 } 9222 }
9335 9223
9336 -/** @description response type for postServiceInvoiceDeleteInvoice */  
9337 -export interface PostServiceInvoiceDeleteInvoiceResponse { 9224 +/** @description response type for postResearchGroupsEdit */
  9225 +export interface PostResearchGroupsEditResponse {
9338 /** 9226 /**
9339 * @description 9227 * @description
9340 * OK 9228 * OK
@@ -9362,25 +9250,25 @@ export interface PostServiceInvoiceDeleteInvoiceResponse { @@ -9362,25 +9250,25 @@ export interface PostServiceInvoiceDeleteInvoiceResponse {
9362 404: any; 9250 404: any;
9363 } 9251 }
9364 9252
9365 -export type PostServiceInvoiceDeleteInvoiceResponseSuccess =  
9366 - PostServiceInvoiceDeleteInvoiceResponse[200]; 9253 +export type PostResearchGroupsEditResponseSuccess =
  9254 + PostResearchGroupsEditResponse[200];
9367 /** 9255 /**
9368 * @description 9256 * @description
9369 - * 删除发票  
9370 - * @tags 发票 9257 + * 编辑课题组信息
  9258 + * @tags research-groups-controller
9371 * @produces * 9259 * @produces *
9372 * @consumes application/json 9260 * @consumes application/json
9373 */ 9261 */
9374 -export const postServiceInvoiceDeleteInvoice = /* #__PURE__ */ (() => { 9262 +export const postResearchGroupsEdit = /* #__PURE__ */ (() => {
9375 const method = 'post'; 9263 const method = 'post';
9376 - const url = '/service/invoice/deleteInvoice'; 9264 + const url = '/research/groups/edit';
9377 function request( 9265 function request(
9378 - option: PostServiceInvoiceDeleteInvoiceOption,  
9379 - ): Promise<PostServiceInvoiceDeleteInvoiceResponseSuccess> { 9266 + option: PostResearchGroupsEditOption,
  9267 + ): Promise<PostResearchGroupsEditResponseSuccess> {
9380 return requester(request.url, { 9268 return requester(request.url, {
9381 method: request.method, 9269 method: request.method,
9382 ...option, 9270 ...option,
9383 - }) as unknown as Promise<PostServiceInvoiceDeleteInvoiceResponseSuccess>; 9271 + }) as unknown as Promise<PostResearchGroupsEditResponseSuccess>;
9384 } 9272 }
9385 9273
9386 /** http method */ 9274 /** http method */
@@ -9390,24 +9278,22 @@ export const postServiceInvoiceDeleteInvoice = /* #__PURE__ */ (() =&gt; { @@ -9390,24 +9278,22 @@ export const postServiceInvoiceDeleteInvoice = /* #__PURE__ */ (() =&gt; {
9390 return request; 9278 return request;
9391 })(); 9279 })();
9392 9280
9393 -/** @description request parameter type for postServiceInvoiceDownloadInvoice */  
9394 -export interface PostServiceInvoiceDownloadInvoiceOption { 9281 +/** @description request parameter type for postResearchGroupsImport */
  9282 +export interface PostResearchGroupsImportOption {
9395 /** 9283 /**
9396 * @description 9284 * @description
9397 - * recodId  
9398 - * @format int64 9285 + * file
9399 */ 9286 */
9400 - query?: { 9287 + formData: {
9401 /** 9288 /**
9402 @description 9289 @description
9403 - recodId  
9404 - @format int64 */  
9405 - recodId?: number; 9290 + file */
  9291 + file: File;
9406 }; 9292 };
9407 } 9293 }
9408 9294
9409 -/** @description response type for postServiceInvoiceDownloadInvoice */  
9410 -export interface PostServiceInvoiceDownloadInvoiceResponse { 9295 +/** @description response type for postResearchGroupsImport */
  9296 +export interface PostResearchGroupsImportResponse {
9411 /** 9297 /**
9412 * @description 9298 * @description
9413 * OK 9299 * OK
@@ -9435,25 +9321,25 @@ export interface PostServiceInvoiceDownloadInvoiceResponse { @@ -9435,25 +9321,25 @@ export interface PostServiceInvoiceDownloadInvoiceResponse {
9435 404: any; 9321 404: any;
9436 } 9322 }
9437 9323
9438 -export type PostServiceInvoiceDownloadInvoiceResponseSuccess =  
9439 - PostServiceInvoiceDownloadInvoiceResponse[200]; 9324 +export type PostResearchGroupsImportResponseSuccess =
  9325 + PostResearchGroupsImportResponse[200];
9440 /** 9326 /**
9441 * @description 9327 * @description
9442 - * 下载开票  
9443 - * @tags 发票 9328 + * 课题组信息导入
  9329 + * @tags research-groups-controller
9444 * @produces * 9330 * @produces *
9445 - * @consumes application/json 9331 + * @consumes multipart/form-data
9446 */ 9332 */
9447 -export const postServiceInvoiceDownloadInvoice = /* #__PURE__ */ (() => { 9333 +export const postResearchGroupsImport = /* #__PURE__ */ (() => {
9448 const method = 'post'; 9334 const method = 'post';
9449 - const url = '/service/invoice/downloadInvoice'; 9335 + const url = '/research/groups/import';
9450 function request( 9336 function request(
9451 - option?: PostServiceInvoiceDownloadInvoiceOption,  
9452 - ): Promise<PostServiceInvoiceDownloadInvoiceResponseSuccess> { 9337 + option: PostResearchGroupsImportOption,
  9338 + ): Promise<PostResearchGroupsImportResponseSuccess> {
9453 return requester(request.url, { 9339 return requester(request.url, {
9454 method: request.method, 9340 method: request.method,
9455 ...option, 9341 ...option,
9456 - }) as unknown as Promise<PostServiceInvoiceDownloadInvoiceResponseSuccess>; 9342 + }) as unknown as Promise<PostResearchGroupsImportResponseSuccess>;
9457 } 9343 }
9458 9344
9459 /** http method */ 9345 /** http method */
@@ -9463,13 +9349,32 @@ export const postServiceInvoiceDownloadInvoice = /* #__PURE__ */ (() =&gt; { @@ -9463,13 +9349,32 @@ export const postServiceInvoiceDownloadInvoice = /* #__PURE__ */ (() =&gt; {
9463 return request; 9349 return request;
9464 })(); 9350 })();
9465 9351
9466 -/** @description response type for getServiceInvoiceExport */  
9467 -export interface GetServiceInvoiceExportResponse { 9352 +/** @description request parameter type for postResearchGroupsList */
  9353 +export interface PostResearchGroupsListOption {
  9354 + /**
  9355 + * @description
  9356 + * request
  9357 + */
  9358 + body: {
  9359 + /**
  9360 + @description
  9361 + request */
  9362 + request: ResearchGroupListRequest;
  9363 + };
  9364 +}
  9365 +
  9366 +/** @description response type for postResearchGroupsList */
  9367 +export interface PostResearchGroupsListResponse {
9468 /** 9368 /**
9469 * @description 9369 * @description
9470 * OK 9370 * OK
9471 */ 9371 */
9472 - 200: any; 9372 + 200: ServerResult;
  9373 + /**
  9374 + * @description
  9375 + * Created
  9376 + */
  9377 + 201: any;
9473 /** 9378 /**
9474 * @description 9379 * @description
9475 * Unauthorized 9380 * Unauthorized
@@ -9487,21 +9392,25 @@ export interface GetServiceInvoiceExportResponse { @@ -9487,21 +9392,25 @@ export interface GetServiceInvoiceExportResponse {
9487 404: any; 9392 404: any;
9488 } 9393 }
9489 9394
9490 -export type GetServiceInvoiceExportResponseSuccess =  
9491 - GetServiceInvoiceExportResponse[200]; 9395 +export type PostResearchGroupsListResponseSuccess =
  9396 + PostResearchGroupsListResponse[200];
9492 /** 9397 /**
9493 * @description 9398 * @description
9494 - * download  
9495 - * @tags 发票 9399 + * 课题组列表
  9400 + * @tags research-groups-controller
9496 * @produces * 9401 * @produces *
  9402 + * @consumes application/json
9497 */ 9403 */
9498 -export const getServiceInvoiceExport = /* #__PURE__ */ (() => {  
9499 - const method = 'get';  
9500 - const url = '/service/invoice/export';  
9501 - function request(): Promise<GetServiceInvoiceExportResponseSuccess> { 9404 +export const postResearchGroupsList = /* #__PURE__ */ (() => {
  9405 + const method = 'post';
  9406 + const url = '/research/groups/list';
  9407 + function request(
  9408 + option: PostResearchGroupsListOption,
  9409 + ): Promise<PostResearchGroupsListResponseSuccess> {
9502 return requester(request.url, { 9410 return requester(request.url, {
9503 method: request.method, 9411 method: request.method,
9504 - }) as unknown as Promise<GetServiceInvoiceExportResponseSuccess>; 9412 + ...option,
  9413 + }) as unknown as Promise<PostResearchGroupsListResponseSuccess>;
9505 } 9414 }
9506 9415
9507 /** http method */ 9416 /** http method */
@@ -9511,13 +9420,32 @@ export const getServiceInvoiceExport = /* #__PURE__ */ (() =&gt; { @@ -9511,13 +9420,32 @@ export const getServiceInvoiceExport = /* #__PURE__ */ (() =&gt; {
9511 return request; 9420 return request;
9512 })(); 9421 })();
9513 9422
9514 -/** @description response type for getServiceInvoiceExportInvoiceDetailsTemplate */  
9515 -export interface GetServiceInvoiceExportInvoiceDetailsTemplateResponse { 9423 +/** @description request parameter type for postServiceBankStatementDeleteBankStatement */
  9424 +export interface PostServiceBankStatementDeleteBankStatementOption {
  9425 + /**
  9426 + * @description
  9427 + * dto
  9428 + */
  9429 + body: {
  9430 + /**
  9431 + @description
  9432 + dto */
  9433 + dto: Dto;
  9434 + };
  9435 +}
  9436 +
  9437 +/** @description response type for postServiceBankStatementDeleteBankStatement */
  9438 +export interface PostServiceBankStatementDeleteBankStatementResponse {
9516 /** 9439 /**
9517 * @description 9440 * @description
9518 * OK 9441 * OK
9519 */ 9442 */
9520 - 200: any; 9443 + 200: ServerResult;
  9444 + /**
  9445 + * @description
  9446 + * Created
  9447 + */
  9448 + 201: any;
9521 /** 9449 /**
9522 * @description 9450 * @description
9523 * Unauthorized 9451 * Unauthorized
@@ -9535,22 +9463,26 @@ export interface GetServiceInvoiceExportInvoiceDetailsTemplateResponse { @@ -9535,22 +9463,26 @@ export interface GetServiceInvoiceExportInvoiceDetailsTemplateResponse {
9535 404: any; 9463 404: any;
9536 } 9464 }
9537 9465
9538 -export type GetServiceInvoiceExportInvoiceDetailsTemplateResponseSuccess =  
9539 - GetServiceInvoiceExportInvoiceDetailsTemplateResponse[200]; 9466 +export type PostServiceBankStatementDeleteBankStatementResponseSuccess =
  9467 + PostServiceBankStatementDeleteBankStatementResponse[200];
9540 /** 9468 /**
9541 * @description 9469 * @description
9542 - * 导出发票明细模板  
9543 - * @tags 发票 9470 + * 删除银行流水
  9471 + * @tags 银行流水
9544 * @produces * 9472 * @produces *
  9473 + * @consumes application/json
9545 */ 9474 */
9546 -export const getServiceInvoiceExportInvoiceDetailsTemplate = 9475 +export const postServiceBankStatementDeleteBankStatement =
9547 /* #__PURE__ */ (() => { 9476 /* #__PURE__ */ (() => {
9548 - const method = 'get';  
9549 - const url = '/service/invoice/exportInvoiceDetailsTemplate';  
9550 - function request(): Promise<GetServiceInvoiceExportInvoiceDetailsTemplateResponseSuccess> { 9477 + const method = 'post';
  9478 + const url = '/service/bankStatement/deleteBankStatement';
  9479 + function request(
  9480 + option: PostServiceBankStatementDeleteBankStatementOption,
  9481 + ): Promise<PostServiceBankStatementDeleteBankStatementResponseSuccess> {
9551 return requester(request.url, { 9482 return requester(request.url, {
9552 method: request.method, 9483 method: request.method,
9553 - }) as unknown as Promise<GetServiceInvoiceExportInvoiceDetailsTemplateResponseSuccess>; 9484 + ...option,
  9485 + }) as unknown as Promise<PostServiceBankStatementDeleteBankStatementResponseSuccess>;
9554 } 9486 }
9555 9487
9556 /** http method */ 9488 /** http method */
@@ -9560,8 +9492,8 @@ export const getServiceInvoiceExportInvoiceDetailsTemplate = @@ -9560,8 +9492,8 @@ export const getServiceInvoiceExportInvoiceDetailsTemplate =
9560 return request; 9492 return request;
9561 })(); 9493 })();
9562 9494
9563 -/** @description request parameter type for postServiceInvoiceFindInvoice */  
9564 -export interface PostServiceInvoiceFindInvoiceOption { 9495 +/** @description request parameter type for postServiceBankStatementEditBankStatement */
  9496 +export interface PostServiceBankStatementEditBankStatementOption {
9565 /** 9497 /**
9566 * @description 9498 * @description
9567 * dto 9499 * dto
@@ -9574,8 +9506,8 @@ export interface PostServiceInvoiceFindInvoiceOption { @@ -9574,8 +9506,8 @@ export interface PostServiceInvoiceFindInvoiceOption {
9574 }; 9506 };
9575 } 9507 }
9576 9508
9577 -/** @description response type for postServiceInvoiceFindInvoice */  
9578 -export interface PostServiceInvoiceFindInvoiceResponse { 9509 +/** @description response type for postServiceBankStatementEditBankStatement */
  9510 +export interface PostServiceBankStatementEditBankStatementResponse {
9579 /** 9511 /**
9580 * @description 9512 * @description
9581 * OK 9513 * OK
@@ -9603,57 +9535,42 @@ export interface PostServiceInvoiceFindInvoiceResponse { @@ -9603,57 +9535,42 @@ export interface PostServiceInvoiceFindInvoiceResponse {
9603 404: any; 9535 404: any;
9604 } 9536 }
9605 9537
9606 -export type PostServiceInvoiceFindInvoiceResponseSuccess =  
9607 - PostServiceInvoiceFindInvoiceResponse[200]; 9538 +export type PostServiceBankStatementEditBankStatementResponseSuccess =
  9539 + PostServiceBankStatementEditBankStatementResponse[200];
9608 /** 9540 /**
9609 * @description 9541 * @description
9610 - * 不分页查询发票  
9611 - * @tags 发票 9542 + * 编辑银行流水
  9543 + * @tags 银行流水
9612 * @produces * 9544 * @produces *
9613 * @consumes application/json 9545 * @consumes application/json
9614 */ 9546 */
9615 -export const postServiceInvoiceFindInvoice = /* #__PURE__ */ (() => {  
9616 - const method = 'post';  
9617 - const url = '/service/invoice/findInvoice';  
9618 - function request(  
9619 - option: PostServiceInvoiceFindInvoiceOption,  
9620 - ): Promise<PostServiceInvoiceFindInvoiceResponseSuccess> {  
9621 - return requester(request.url, {  
9622 - method: request.method,  
9623 - ...option,  
9624 - }) as unknown as Promise<PostServiceInvoiceFindInvoiceResponseSuccess>;  
9625 - }  
9626 -  
9627 - /** http method */  
9628 - request.method = method;  
9629 - /** request url */  
9630 - request.url = url;  
9631 - return request;  
9632 -})(); 9547 +export const postServiceBankStatementEditBankStatement =
  9548 + /* #__PURE__ */ (() => {
  9549 + const method = 'post';
  9550 + const url = '/service/bankStatement/editBankStatement';
  9551 + function request(
  9552 + option: PostServiceBankStatementEditBankStatementOption,
  9553 + ): Promise<PostServiceBankStatementEditBankStatementResponseSuccess> {
  9554 + return requester(request.url, {
  9555 + method: request.method,
  9556 + ...option,
  9557 + }) as unknown as Promise<PostServiceBankStatementEditBankStatementResponseSuccess>;
  9558 + }
9633 9559
9634 -/** @description request parameter type for postServiceInvoiceGetInvoiceRecord */  
9635 -export interface PostServiceInvoiceGetInvoiceRecordOption {  
9636 - /**  
9637 - * @description  
9638 - * id  
9639 - * @format int64  
9640 - */  
9641 - query?: {  
9642 - /**  
9643 - @description  
9644 - id  
9645 - @format int64 */  
9646 - id?: number;  
9647 - };  
9648 -} 9560 + /** http method */
  9561 + request.method = method;
  9562 + /** request url */
  9563 + request.url = url;
  9564 + return request;
  9565 + })();
9649 9566
9650 -/** @description response type for postServiceInvoiceGetInvoiceRecord */  
9651 -export interface PostServiceInvoiceGetInvoiceRecordResponse { 9567 +/** @description response type for postServiceBankStatementExportTemplate */
  9568 +export interface PostServiceBankStatementExportTemplateResponse {
9652 /** 9569 /**
9653 * @description 9570 * @description
9654 * OK 9571 * OK
9655 */ 9572 */
9656 - 200: ServerResult; 9573 + 200: any;
9657 /** 9574 /**
9658 * @description 9575 * @description
9659 * Created 9576 * Created
@@ -9676,25 +9593,22 @@ export interface PostServiceInvoiceGetInvoiceRecordResponse { @@ -9676,25 +9593,22 @@ export interface PostServiceInvoiceGetInvoiceRecordResponse {
9676 404: any; 9593 404: any;
9677 } 9594 }
9678 9595
9679 -export type PostServiceInvoiceGetInvoiceRecordResponseSuccess =  
9680 - PostServiceInvoiceGetInvoiceRecordResponse[200]; 9596 +export type PostServiceBankStatementExportTemplateResponseSuccess =
  9597 + PostServiceBankStatementExportTemplateResponse[200];
9681 /** 9598 /**
9682 * @description 9599 * @description
9683 - * 获取开票记录  
9684 - * @tags 发票 9600 + * 下载银行流水模板
  9601 + * @tags 银行流水
9685 * @produces * 9602 * @produces *
9686 * @consumes application/json 9603 * @consumes application/json
9687 */ 9604 */
9688 -export const postServiceInvoiceGetInvoiceRecord = /* #__PURE__ */ (() => { 9605 +export const postServiceBankStatementExportTemplate = /* #__PURE__ */ (() => {
9689 const method = 'post'; 9606 const method = 'post';
9690 - const url = '/service/invoice/getInvoiceRecord';  
9691 - function request(  
9692 - option?: PostServiceInvoiceGetInvoiceRecordOption,  
9693 - ): Promise<PostServiceInvoiceGetInvoiceRecordResponseSuccess> { 9607 + const url = '/service/bankStatement/exportTemplate';
  9608 + function request(): Promise<PostServiceBankStatementExportTemplateResponseSuccess> {
9694 return requester(request.url, { 9609 return requester(request.url, {
9695 method: request.method, 9610 method: request.method,
9696 - ...option,  
9697 - }) as unknown as Promise<PostServiceInvoiceGetInvoiceRecordResponseSuccess>; 9611 + }) as unknown as Promise<PostServiceBankStatementExportTemplateResponseSuccess>;
9698 } 9612 }
9699 9613
9700 /** http method */ 9614 /** http method */
@@ -9704,38 +9618,22 @@ export const postServiceInvoiceGetInvoiceRecord = /* #__PURE__ */ (() =&gt; { @@ -9704,38 +9618,22 @@ export const postServiceInvoiceGetInvoiceRecord = /* #__PURE__ */ (() =&gt; {
9704 return request; 9618 return request;
9705 })(); 9619 })();
9706 9620
9707 -/** @description request parameter type for postServiceInvoiceImportInvoiceDetails */  
9708 -export interface PostServiceInvoiceImportInvoiceDetailsOption { 9621 +/** @description request parameter type for postServiceBankStatementImportBankStatementForm */
  9622 +export interface PostServiceBankStatementImportBankStatementFormOption {
9709 /** 9623 /**
9710 * @description 9624 * @description
9711 - * detailsExcel 9625 + * file
9712 */ 9626 */
9713 formData: { 9627 formData: {
9714 /** 9628 /**
9715 @description 9629 @description
9716 - detailsExcel */  
9717 - detailsExcel: File;  
9718 - };  
9719 -}  
9720 -  
9721 -/** @description request parameter type for postServiceInvoiceImportInvoiceDetails */  
9722 -export interface PostServiceInvoiceImportInvoiceDetailsOption {  
9723 - /**  
9724 - * @description  
9725 - * invoiceRecordId  
9726 - * @format int64  
9727 - */  
9728 - query: {  
9729 - /**  
9730 - @description  
9731 - invoiceRecordId  
9732 - @format int64 */  
9733 - invoiceRecordId: number; 9630 + file */
  9631 + file: File;
9734 }; 9632 };
9735 } 9633 }
9736 9634
9737 -/** @description response type for postServiceInvoiceImportInvoiceDetails */  
9738 -export interface PostServiceInvoiceImportInvoiceDetailsResponse { 9635 +/** @description response type for postServiceBankStatementImportBankStatementForm */
  9636 +export interface PostServiceBankStatementImportBankStatementFormResponse {
9739 /** 9637 /**
9740 * @description 9638 * @description
9741 * OK 9639 * OK
@@ -9763,36 +9661,37 @@ export interface PostServiceInvoiceImportInvoiceDetailsResponse { @@ -9763,36 +9661,37 @@ export interface PostServiceInvoiceImportInvoiceDetailsResponse {
9763 404: any; 9661 404: any;
9764 } 9662 }
9765 9663
9766 -export type PostServiceInvoiceImportInvoiceDetailsResponseSuccess =  
9767 - PostServiceInvoiceImportInvoiceDetailsResponse[200]; 9664 +export type PostServiceBankStatementImportBankStatementFormResponseSuccess =
  9665 + PostServiceBankStatementImportBankStatementFormResponse[200];
9768 /** 9666 /**
9769 * @description 9667 * @description
9770 - * 导入发票明细  
9771 - * @tags 发票 9668 + * 导入银行流水表格
  9669 + * @tags 银行流水
9772 * @produces * 9670 * @produces *
9773 * @consumes multipart/form-data 9671 * @consumes multipart/form-data
9774 */ 9672 */
9775 -export const postServiceInvoiceImportInvoiceDetails = /* #__PURE__ */ (() => {  
9776 - const method = 'post';  
9777 - const url = '/service/invoice/importInvoiceDetails';  
9778 - function request(  
9779 - option: PostServiceInvoiceImportInvoiceDetailsOption,  
9780 - ): Promise<PostServiceInvoiceImportInvoiceDetailsResponseSuccess> {  
9781 - return requester(request.url, {  
9782 - method: request.method,  
9783 - ...option,  
9784 - }) as unknown as Promise<PostServiceInvoiceImportInvoiceDetailsResponseSuccess>;  
9785 - } 9673 +export const postServiceBankStatementImportBankStatementForm =
  9674 + /* #__PURE__ */ (() => {
  9675 + const method = 'post';
  9676 + const url = '/service/bankStatement/importBankStatementForm';
  9677 + function request(
  9678 + option: PostServiceBankStatementImportBankStatementFormOption,
  9679 + ): Promise<PostServiceBankStatementImportBankStatementFormResponseSuccess> {
  9680 + return requester(request.url, {
  9681 + method: request.method,
  9682 + ...option,
  9683 + }) as unknown as Promise<PostServiceBankStatementImportBankStatementFormResponseSuccess>;
  9684 + }
9786 9685
9787 - /** http method */  
9788 - request.method = method;  
9789 - /** request url */  
9790 - request.url = url;  
9791 - return request;  
9792 -})(); 9686 + /** http method */
  9687 + request.method = method;
  9688 + /** request url */
  9689 + request.url = url;
  9690 + return request;
  9691 + })();
9793 9692
9794 -/** @description request parameter type for postServiceInvoiceInvoiceWriteOff */  
9795 -export interface PostServiceInvoiceInvoiceWriteOffOption { 9693 +/** @description request parameter type for postServiceBankStatementQueryBankStatement */
  9694 +export interface PostServiceBankStatementQueryBankStatementOption {
9796 /** 9695 /**
9797 * @description 9696 * @description
9798 * dto 9697 * dto
@@ -9801,12 +9700,12 @@ export interface PostServiceInvoiceInvoiceWriteOffOption { @@ -9801,12 +9700,12 @@ export interface PostServiceInvoiceInvoiceWriteOffOption {
9801 /** 9700 /**
9802 @description 9701 @description
9803 dto */ 9702 dto */
9804 - dto: Dto; 9703 + dto: QueryBankStatementDto;
9805 }; 9704 };
9806 } 9705 }
9807 9706
9808 -/** @description response type for postServiceInvoiceInvoiceWriteOff */  
9809 -export interface PostServiceInvoiceInvoiceWriteOffResponse { 9707 +/** @description response type for postServiceBankStatementQueryBankStatement */
  9708 +export interface PostServiceBankStatementQueryBankStatementResponse {
9810 /** 9709 /**
9811 * @description 9710 * @description
9812 * OK 9711 * OK
@@ -9834,36 +9733,37 @@ export interface PostServiceInvoiceInvoiceWriteOffResponse { @@ -9834,36 +9733,37 @@ export interface PostServiceInvoiceInvoiceWriteOffResponse {
9834 404: any; 9733 404: any;
9835 } 9734 }
9836 9735
9837 -export type PostServiceInvoiceInvoiceWriteOffResponseSuccess =  
9838 - PostServiceInvoiceInvoiceWriteOffResponse[200]; 9736 +export type PostServiceBankStatementQueryBankStatementResponseSuccess =
  9737 + PostServiceBankStatementQueryBankStatementResponse[200];
9839 /** 9738 /**
9840 * @description 9739 * @description
9841 - * 发票核销  
9842 - * @tags 发票 9740 + * 查询银行流水
  9741 + * @tags 银行流水
9843 * @produces * 9742 * @produces *
9844 * @consumes application/json 9743 * @consumes application/json
9845 */ 9744 */
9846 -export const postServiceInvoiceInvoiceWriteOff = /* #__PURE__ */ (() => {  
9847 - const method = 'post';  
9848 - const url = '/service/invoice/invoiceWriteOff';  
9849 - function request(  
9850 - option: PostServiceInvoiceInvoiceWriteOffOption,  
9851 - ): Promise<PostServiceInvoiceInvoiceWriteOffResponseSuccess> {  
9852 - return requester(request.url, {  
9853 - method: request.method,  
9854 - ...option,  
9855 - }) as unknown as Promise<PostServiceInvoiceInvoiceWriteOffResponseSuccess>;  
9856 - } 9745 +export const postServiceBankStatementQueryBankStatement =
  9746 + /* #__PURE__ */ (() => {
  9747 + const method = 'post';
  9748 + const url = '/service/bankStatement/queryBankStatement';
  9749 + function request(
  9750 + option: PostServiceBankStatementQueryBankStatementOption,
  9751 + ): Promise<PostServiceBankStatementQueryBankStatementResponseSuccess> {
  9752 + return requester(request.url, {
  9753 + method: request.method,
  9754 + ...option,
  9755 + }) as unknown as Promise<PostServiceBankStatementQueryBankStatementResponseSuccess>;
  9756 + }
9857 9757
9858 - /** http method */  
9859 - request.method = method;  
9860 - /** request url */  
9861 - request.url = url;  
9862 - return request;  
9863 -})(); 9758 + /** http method */
  9759 + request.method = method;
  9760 + /** request url */
  9761 + request.url = url;
  9762 + return request;
  9763 + })();
9864 9764
9865 -/** @description request parameter type for postServiceInvoiceInvoicing */  
9866 -export interface PostServiceInvoiceInvoicingOption { 9765 +/** @description request parameter type for postServiceInvoiceAddInvoice */
  9766 +export interface PostServiceInvoiceAddInvoiceOption {
9867 /** 9767 /**
9868 * @description 9768 * @description
9869 * dto 9769 * dto
@@ -9872,12 +9772,12 @@ export interface PostServiceInvoiceInvoicingOption { @@ -9872,12 +9772,12 @@ export interface PostServiceInvoiceInvoicingOption {
9872 /** 9772 /**
9873 @description 9773 @description
9874 dto */ 9774 dto */
9875 - dto: Dto; 9775 + dto: InvoiceDto;
9876 }; 9776 };
9877 } 9777 }
9878 9778
9879 -/** @description response type for postServiceInvoiceInvoicing */  
9880 -export interface PostServiceInvoiceInvoicingResponse { 9779 +/** @description response type for postServiceInvoiceAddInvoice */
  9780 +export interface PostServiceInvoiceAddInvoiceResponse {
9881 /** 9781 /**
9882 * @description 9782 * @description
9883 * OK 9783 * OK
@@ -9905,25 +9805,25 @@ export interface PostServiceInvoiceInvoicingResponse { @@ -9905,25 +9805,25 @@ export interface PostServiceInvoiceInvoicingResponse {
9905 404: any; 9805 404: any;
9906 } 9806 }
9907 9807
9908 -export type PostServiceInvoiceInvoicingResponseSuccess =  
9909 - PostServiceInvoiceInvoicingResponse[200]; 9808 +export type PostServiceInvoiceAddInvoiceResponseSuccess =
  9809 + PostServiceInvoiceAddInvoiceResponse[200];
9910 /** 9810 /**
9911 * @description 9811 * @description
9912 - * 9812 + * 添加发
9913 * @tags 发票 9813 * @tags 发票
9914 * @produces * 9814 * @produces *
9915 * @consumes application/json 9815 * @consumes application/json
9916 */ 9816 */
9917 -export const postServiceInvoiceInvoicing = /* #__PURE__ */ (() => { 9817 +export const postServiceInvoiceAddInvoice = /* #__PURE__ */ (() => {
9918 const method = 'post'; 9818 const method = 'post';
9919 - const url = '/service/invoice/invoicing'; 9819 + const url = '/service/invoice/addInvoice';
9920 function request( 9820 function request(
9921 - option: PostServiceInvoiceInvoicingOption,  
9922 - ): Promise<PostServiceInvoiceInvoicingResponseSuccess> { 9821 + option: PostServiceInvoiceAddInvoiceOption,
  9822 + ): Promise<PostServiceInvoiceAddInvoiceResponseSuccess> {
9923 return requester(request.url, { 9823 return requester(request.url, {
9924 method: request.method, 9824 method: request.method,
9925 ...option, 9825 ...option,
9926 - }) as unknown as Promise<PostServiceInvoiceInvoicingResponseSuccess>; 9826 + }) as unknown as Promise<PostServiceInvoiceAddInvoiceResponseSuccess>;
9927 } 9827 }
9928 9828
9929 /** http method */ 9829 /** http method */
@@ -9933,8 +9833,8 @@ export const postServiceInvoiceInvoicing = /* #__PURE__ */ (() =&gt; { @@ -9933,8 +9833,8 @@ export const postServiceInvoiceInvoicing = /* #__PURE__ */ (() =&gt; {
9933 return request; 9833 return request;
9934 })(); 9834 })();
9935 9835
9936 -/** @description request parameter type for postServiceInvoiceModifyRecord */  
9937 -export interface PostServiceInvoiceModifyRecordOption { 9836 +/** @description request parameter type for postServiceInvoiceCancelInvoiceAndBankStatement */
  9837 +export interface PostServiceInvoiceCancelInvoiceAndBankStatementOption {
9938 /** 9838 /**
9939 * @description 9839 * @description
9940 * dto 9840 * dto
@@ -9943,12 +9843,12 @@ export interface PostServiceInvoiceModifyRecordOption { @@ -9943,12 +9843,12 @@ export interface PostServiceInvoiceModifyRecordOption {
9943 /** 9843 /**
9944 @description 9844 @description
9945 dto */ 9845 dto */
9946 - dto: InvoiceRecordDto; 9846 + dto: CancelInvoiceAndBankStatementDto;
9947 }; 9847 };
9948 } 9848 }
9949 9849
9950 -/** @description response type for postServiceInvoiceModifyRecord */  
9951 -export interface PostServiceInvoiceModifyRecordResponse { 9850 +/** @description response type for postServiceInvoiceCancelInvoiceAndBankStatement */
  9851 +export interface PostServiceInvoiceCancelInvoiceAndBankStatementResponse {
9952 /** 9852 /**
9953 * @description 9853 * @description
9954 * OK 9854 * OK
@@ -9976,36 +9876,37 @@ export interface PostServiceInvoiceModifyRecordResponse { @@ -9976,36 +9876,37 @@ export interface PostServiceInvoiceModifyRecordResponse {
9976 404: any; 9876 404: any;
9977 } 9877 }
9978 9878
9979 -export type PostServiceInvoiceModifyRecordResponseSuccess =  
9980 - PostServiceInvoiceModifyRecordResponse[200]; 9879 +export type PostServiceInvoiceCancelInvoiceAndBankStatementResponseSuccess =
  9880 + PostServiceInvoiceCancelInvoiceAndBankStatementResponse[200];
9981 /** 9881 /**
9982 * @description 9882 * @description
9983 - * 修改开票记录 9883 + * 取消发票与银行流水的关联
9984 * @tags 发票 9884 * @tags 发票
9985 * @produces * 9885 * @produces *
9986 * @consumes application/json 9886 * @consumes application/json
9987 */ 9887 */
9988 -export const postServiceInvoiceModifyRecord = /* #__PURE__ */ (() => {  
9989 - const method = 'post';  
9990 - const url = '/service/invoice/modifyRecord';  
9991 - function request(  
9992 - option: PostServiceInvoiceModifyRecordOption,  
9993 - ): Promise<PostServiceInvoiceModifyRecordResponseSuccess> {  
9994 - return requester(request.url, {  
9995 - method: request.method,  
9996 - ...option,  
9997 - }) as unknown as Promise<PostServiceInvoiceModifyRecordResponseSuccess>;  
9998 - } 9888 +export const postServiceInvoiceCancelInvoiceAndBankStatement =
  9889 + /* #__PURE__ */ (() => {
  9890 + const method = 'post';
  9891 + const url = '/service/invoice/cancelInvoiceAndBankStatement';
  9892 + function request(
  9893 + option: PostServiceInvoiceCancelInvoiceAndBankStatementOption,
  9894 + ): Promise<PostServiceInvoiceCancelInvoiceAndBankStatementResponseSuccess> {
  9895 + return requester(request.url, {
  9896 + method: request.method,
  9897 + ...option,
  9898 + }) as unknown as Promise<PostServiceInvoiceCancelInvoiceAndBankStatementResponseSuccess>;
  9899 + }
9999 9900
10000 - /** http method */  
10001 - request.method = method;  
10002 - /** request url */  
10003 - request.url = url;  
10004 - return request;  
10005 -})(); 9901 + /** http method */
  9902 + request.method = method;
  9903 + /** request url */
  9904 + request.url = url;
  9905 + return request;
  9906 + })();
10006 9907
10007 -/** @description request parameter type for postServiceInvoiceQueryInvoice */  
10008 -export interface PostServiceInvoiceQueryInvoiceOption { 9908 +/** @description request parameter type for postServiceInvoiceDeleteInvoice */
  9909 +export interface PostServiceInvoiceDeleteInvoiceOption {
10009 /** 9910 /**
10010 * @description 9911 * @description
10011 * dto 9912 * dto
@@ -10018,8 +9919,8 @@ export interface PostServiceInvoiceQueryInvoiceOption { @@ -10018,8 +9919,8 @@ export interface PostServiceInvoiceQueryInvoiceOption {
10018 }; 9919 };
10019 } 9920 }
10020 9921
10021 -/** @description response type for postServiceInvoiceQueryInvoice */  
10022 -export interface PostServiceInvoiceQueryInvoiceResponse { 9922 +/** @description response type for postServiceInvoiceDeleteInvoice */
  9923 +export interface PostServiceInvoiceDeleteInvoiceResponse {
10023 /** 9924 /**
10024 * @description 9925 * @description
10025 * OK 9926 * OK
@@ -10047,25 +9948,25 @@ export interface PostServiceInvoiceQueryInvoiceResponse { @@ -10047,25 +9948,25 @@ export interface PostServiceInvoiceQueryInvoiceResponse {
10047 404: any; 9948 404: any;
10048 } 9949 }
10049 9950
10050 -export type PostServiceInvoiceQueryInvoiceResponseSuccess =  
10051 - PostServiceInvoiceQueryInvoiceResponse[200]; 9951 +export type PostServiceInvoiceDeleteInvoiceResponseSuccess =
  9952 + PostServiceInvoiceDeleteInvoiceResponse[200];
10052 /** 9953 /**
10053 * @description 9954 * @description
10054 - * 发票页查询 9955 + * 删除发票
10055 * @tags 发票 9956 * @tags 发票
10056 * @produces * 9957 * @produces *
10057 * @consumes application/json 9958 * @consumes application/json
10058 */ 9959 */
10059 -export const postServiceInvoiceQueryInvoice = /* #__PURE__ */ (() => { 9960 +export const postServiceInvoiceDeleteInvoice = /* #__PURE__ */ (() => {
10060 const method = 'post'; 9961 const method = 'post';
10061 - const url = '/service/invoice/queryInvoice'; 9962 + const url = '/service/invoice/deleteInvoice';
10062 function request( 9963 function request(
10063 - option: PostServiceInvoiceQueryInvoiceOption,  
10064 - ): Promise<PostServiceInvoiceQueryInvoiceResponseSuccess> { 9964 + option: PostServiceInvoiceDeleteInvoiceOption,
  9965 + ): Promise<PostServiceInvoiceDeleteInvoiceResponseSuccess> {
10065 return requester(request.url, { 9966 return requester(request.url, {
10066 method: request.method, 9967 method: request.method,
10067 ...option, 9968 ...option,
10068 - }) as unknown as Promise<PostServiceInvoiceQueryInvoiceResponseSuccess>; 9969 + }) as unknown as Promise<PostServiceInvoiceDeleteInvoiceResponseSuccess>;
10069 } 9970 }
10070 9971
10071 /** http method */ 9972 /** http method */
@@ -10075,8 +9976,8 @@ export const postServiceInvoiceQueryInvoice = /* #__PURE__ */ (() =&gt; { @@ -10075,8 +9976,8 @@ export const postServiceInvoiceQueryInvoice = /* #__PURE__ */ (() =&gt; {
10075 return request; 9976 return request;
10076 })(); 9977 })();
10077 9978
10078 -/** @description request parameter type for postServiceInvoiceQueryInvoiceDetail */  
10079 -export interface PostServiceInvoiceQueryInvoiceDetailOption { 9979 +/** @description request parameter type for postServiceInvoiceFindInvoice */
  9980 +export interface PostServiceInvoiceFindInvoiceOption {
10080 /** 9981 /**
10081 * @description 9982 * @description
10082 * dto 9983 * dto
@@ -10085,12 +9986,12 @@ export interface PostServiceInvoiceQueryInvoiceDetailOption { @@ -10085,12 +9986,12 @@ export interface PostServiceInvoiceQueryInvoiceDetailOption {
10085 /** 9986 /**
10086 @description 9987 @description
10087 dto */ 9988 dto */
10088 - dto: QueryInvoiceDetailDto; 9989 + dto: Dto;
10089 }; 9990 };
10090 } 9991 }
10091 9992
10092 -/** @description response type for postServiceInvoiceQueryInvoiceDetail */  
10093 -export interface PostServiceInvoiceQueryInvoiceDetailResponse { 9993 +/** @description response type for postServiceInvoiceFindInvoice */
  9994 +export interface PostServiceInvoiceFindInvoiceResponse {
10094 /** 9995 /**
10095 * @description 9996 * @description
10096 * OK 9997 * OK
@@ -10118,25 +10019,25 @@ export interface PostServiceInvoiceQueryInvoiceDetailResponse { @@ -10118,25 +10019,25 @@ export interface PostServiceInvoiceQueryInvoiceDetailResponse {
10118 404: any; 10019 404: any;
10119 } 10020 }
10120 10021
10121 -export type PostServiceInvoiceQueryInvoiceDetailResponseSuccess =  
10122 - PostServiceInvoiceQueryInvoiceDetailResponse[200]; 10022 +export type PostServiceInvoiceFindInvoiceResponseSuccess =
  10023 + PostServiceInvoiceFindInvoiceResponse[200];
10123 /** 10024 /**
10124 * @description 10025 * @description
10125 - * 查看发票详情 10026 + * 不分页查询发票
10126 * @tags 发票 10027 * @tags 发票
10127 * @produces * 10028 * @produces *
10128 * @consumes application/json 10029 * @consumes application/json
10129 */ 10030 */
10130 -export const postServiceInvoiceQueryInvoiceDetail = /* #__PURE__ */ (() => { 10031 +export const postServiceInvoiceFindInvoice = /* #__PURE__ */ (() => {
10131 const method = 'post'; 10032 const method = 'post';
10132 - const url = '/service/invoice/queryInvoiceDetail'; 10033 + const url = '/service/invoice/findInvoice';
10133 function request( 10034 function request(
10134 - option: PostServiceInvoiceQueryInvoiceDetailOption,  
10135 - ): Promise<PostServiceInvoiceQueryInvoiceDetailResponseSuccess> { 10035 + option: PostServiceInvoiceFindInvoiceOption,
  10036 + ): Promise<PostServiceInvoiceFindInvoiceResponseSuccess> {
10136 return requester(request.url, { 10037 return requester(request.url, {
10137 method: request.method, 10038 method: request.method,
10138 ...option, 10039 ...option,
10139 - }) as unknown as Promise<PostServiceInvoiceQueryInvoiceDetailResponseSuccess>; 10040 + }) as unknown as Promise<PostServiceInvoiceFindInvoiceResponseSuccess>;
10140 } 10041 }
10141 10042
10142 /** http method */ 10043 /** http method */
@@ -10146,8 +10047,8 @@ export const postServiceInvoiceQueryInvoiceDetail = /* #__PURE__ */ (() =&gt; { @@ -10146,8 +10047,8 @@ export const postServiceInvoiceQueryInvoiceDetail = /* #__PURE__ */ (() =&gt; {
10146 return request; 10047 return request;
10147 })(); 10048 })();
10148 10049
10149 -/** @description request parameter type for postServiceInvoiceQueryInvoiceRecordList */  
10150 -export interface PostServiceInvoiceQueryInvoiceRecordListOption { 10050 +/** @description request parameter type for postServiceInvoiceInvoiceWriteOff */
  10051 +export interface PostServiceInvoiceInvoiceWriteOffOption {
10151 /** 10052 /**
10152 * @description 10053 * @description
10153 * dto 10054 * dto
@@ -10156,12 +10057,12 @@ export interface PostServiceInvoiceQueryInvoiceRecordListOption { @@ -10156,12 +10057,12 @@ export interface PostServiceInvoiceQueryInvoiceRecordListOption {
10156 /** 10057 /**
10157 @description 10058 @description
10158 dto */ 10059 dto */
10159 - dto: QueryInvoiceRecordDto; 10060 + dto: Dto;
10160 }; 10061 };
10161 } 10062 }
10162 10063
10163 -/** @description response type for postServiceInvoiceQueryInvoiceRecordList */  
10164 -export interface PostServiceInvoiceQueryInvoiceRecordListResponse { 10064 +/** @description response type for postServiceInvoiceInvoiceWriteOff */
  10065 +export interface PostServiceInvoiceInvoiceWriteOffResponse {
10165 /** 10066 /**
10166 * @description 10067 * @description
10167 * OK 10068 * OK
@@ -10189,25 +10090,25 @@ export interface PostServiceInvoiceQueryInvoiceRecordListResponse { @@ -10189,25 +10090,25 @@ export interface PostServiceInvoiceQueryInvoiceRecordListResponse {
10189 404: any; 10090 404: any;
10190 } 10091 }
10191 10092
10192 -export type PostServiceInvoiceQueryInvoiceRecordListResponseSuccess =  
10193 - PostServiceInvoiceQueryInvoiceRecordListResponse[200]; 10093 +export type PostServiceInvoiceInvoiceWriteOffResponseSuccess =
  10094 + PostServiceInvoiceInvoiceWriteOffResponse[200];
10194 /** 10095 /**
10195 * @description 10096 * @description
10196 - * 获取开票记录列表 10097 + * 发票核销
10197 * @tags 发票 10098 * @tags 发票
10198 * @produces * 10099 * @produces *
10199 * @consumes application/json 10100 * @consumes application/json
10200 */ 10101 */
10201 -export const postServiceInvoiceQueryInvoiceRecordList = /* #__PURE__ */ (() => { 10102 +export const postServiceInvoiceInvoiceWriteOff = /* #__PURE__ */ (() => {
10202 const method = 'post'; 10103 const method = 'post';
10203 - const url = '/service/invoice/queryInvoiceRecordList'; 10104 + const url = '/service/invoice/invoiceWriteOff';
10204 function request( 10105 function request(
10205 - option: PostServiceInvoiceQueryInvoiceRecordListOption,  
10206 - ): Promise<PostServiceInvoiceQueryInvoiceRecordListResponseSuccess> { 10106 + option: PostServiceInvoiceInvoiceWriteOffOption,
  10107 + ): Promise<PostServiceInvoiceInvoiceWriteOffResponseSuccess> {
10207 return requester(request.url, { 10108 return requester(request.url, {
10208 method: request.method, 10109 method: request.method,
10209 ...option, 10110 ...option,
10210 - }) as unknown as Promise<PostServiceInvoiceQueryInvoiceRecordListResponseSuccess>; 10111 + }) as unknown as Promise<PostServiceInvoiceInvoiceWriteOffResponseSuccess>;
10211 } 10112 }
10212 10113
10213 /** http method */ 10114 /** http method */
@@ -10217,57 +10118,8 @@ export const postServiceInvoiceQueryInvoiceRecordList = /* #__PURE__ */ (() =&gt; { @@ -10217,57 +10118,8 @@ export const postServiceInvoiceQueryInvoiceRecordList = /* #__PURE__ */ (() =&gt; {
10217 return request; 10118 return request;
10218 })(); 10119 })();
10219 10120
10220 -/** @description response type for getServiceInvoiceQueryReadyInvoiceRecordList */  
10221 -export interface GetServiceInvoiceQueryReadyInvoiceRecordListResponse {  
10222 - /**  
10223 - * @description  
10224 - * OK  
10225 - */  
10226 - 200: ServerResult;  
10227 - /**  
10228 - * @description  
10229 - * Unauthorized  
10230 - */  
10231 - 401: any;  
10232 - /**  
10233 - * @description  
10234 - * Forbidden  
10235 - */  
10236 - 403: any;  
10237 - /**  
10238 - * @description  
10239 - * Not Found  
10240 - */  
10241 - 404: any;  
10242 -}  
10243 -  
10244 -export type GetServiceInvoiceQueryReadyInvoiceRecordListResponseSuccess =  
10245 - GetServiceInvoiceQueryReadyInvoiceRecordListResponse[200];  
10246 -/**  
10247 - * @description  
10248 - * 获取要开票记录列表  
10249 - * @tags 发票  
10250 - * @produces *  
10251 - */  
10252 -export const getServiceInvoiceQueryReadyInvoiceRecordList =  
10253 - /* #__PURE__ */ (() => {  
10254 - const method = 'get';  
10255 - const url = '/service/invoice/queryReadyInvoiceRecordList';  
10256 - function request(): Promise<GetServiceInvoiceQueryReadyInvoiceRecordListResponseSuccess> {  
10257 - return requester(request.url, {  
10258 - method: request.method,  
10259 - }) as unknown as Promise<GetServiceInvoiceQueryReadyInvoiceRecordListResponseSuccess>;  
10260 - }  
10261 -  
10262 - /** http method */  
10263 - request.method = method;  
10264 - /** request url */  
10265 - request.url = url;  
10266 - return request;  
10267 - })();  
10268 -  
10269 -/** @description request parameter type for postServiceInvoiceReissue */  
10270 -export interface PostServiceInvoiceReissueOption { 10121 +/** @description request parameter type for postServiceInvoiceQueryInvoice */
  10122 +export interface PostServiceInvoiceQueryInvoiceOption {
10271 /** 10123 /**
10272 * @description 10124 * @description
10273 * dto 10125 * dto
@@ -10276,12 +10128,12 @@ export interface PostServiceInvoiceReissueOption { @@ -10276,12 +10128,12 @@ export interface PostServiceInvoiceReissueOption {
10276 /** 10128 /**
10277 @description 10129 @description
10278 dto */ 10130 dto */
10279 - dto: ReissueInvoiceDto; 10131 + dto: Dto;
10280 }; 10132 };
10281 } 10133 }
10282 10134
10283 -/** @description response type for postServiceInvoiceReissue */  
10284 -export interface PostServiceInvoiceReissueResponse { 10135 +/** @description response type for postServiceInvoiceQueryInvoice */
  10136 +export interface PostServiceInvoiceQueryInvoiceResponse {
10285 /** 10137 /**
10286 * @description 10138 * @description
10287 * OK 10139 * OK
@@ -10309,25 +10161,25 @@ export interface PostServiceInvoiceReissueResponse { @@ -10309,25 +10161,25 @@ export interface PostServiceInvoiceReissueResponse {
10309 404: any; 10161 404: any;
10310 } 10162 }
10311 10163
10312 -export type PostServiceInvoiceReissueResponseSuccess =  
10313 - PostServiceInvoiceReissueResponse[200]; 10164 +export type PostServiceInvoiceQueryInvoiceResponseSuccess =
  10165 + PostServiceInvoiceQueryInvoiceResponse[200];
10314 /** 10166 /**
10315 * @description 10167 * @description
10316 - * 重新开票 10168 + * 发票页查询
10317 * @tags 发票 10169 * @tags 发票
10318 * @produces * 10170 * @produces *
10319 * @consumes application/json 10171 * @consumes application/json
10320 */ 10172 */
10321 -export const postServiceInvoiceReissue = /* #__PURE__ */ (() => { 10173 +export const postServiceInvoiceQueryInvoice = /* #__PURE__ */ (() => {
10322 const method = 'post'; 10174 const method = 'post';
10323 - const url = '/service/invoice/reissue'; 10175 + const url = '/service/invoice/queryInvoice';
10324 function request( 10176 function request(
10325 - option: PostServiceInvoiceReissueOption,  
10326 - ): Promise<PostServiceInvoiceReissueResponseSuccess> { 10177 + option: PostServiceInvoiceQueryInvoiceOption,
  10178 + ): Promise<PostServiceInvoiceQueryInvoiceResponseSuccess> {
10327 return requester(request.url, { 10179 return requester(request.url, {
10328 method: request.method, 10180 method: request.method,
10329 ...option, 10181 ...option,
10330 - }) as unknown as Promise<PostServiceInvoiceReissueResponseSuccess>; 10182 + }) as unknown as Promise<PostServiceInvoiceQueryInvoiceResponseSuccess>;
10331 } 10183 }
10332 10184
10333 /** http method */ 10185 /** http method */
@@ -10337,8 +10189,8 @@ export const postServiceInvoiceReissue = /* #__PURE__ */ (() =&gt; { @@ -10337,8 +10189,8 @@ export const postServiceInvoiceReissue = /* #__PURE__ */ (() =&gt; {
10337 return request; 10189 return request;
10338 })(); 10190 })();
10339 10191
10340 -/** @description request parameter type for postServiceInvoiceReissueAudit */  
10341 -export interface PostServiceInvoiceReissueAuditOption { 10192 +/** @description request parameter type for postServiceInvoiceQueryInvoiceDetail */
  10193 +export interface PostServiceInvoiceQueryInvoiceDetailOption {
10342 /** 10194 /**
10343 * @description 10195 * @description
10344 * dto 10196 * dto
@@ -10347,12 +10199,12 @@ export interface PostServiceInvoiceReissueAuditOption { @@ -10347,12 +10199,12 @@ export interface PostServiceInvoiceReissueAuditOption {
10347 /** 10199 /**
10348 @description 10200 @description
10349 dto */ 10201 dto */
10350 - dto: AuditDto; 10202 + dto: QueryInvoiceDetailDto;
10351 }; 10203 };
10352 } 10204 }
10353 10205
10354 -/** @description response type for postServiceInvoiceReissueAudit */  
10355 -export interface PostServiceInvoiceReissueAuditResponse { 10206 +/** @description response type for postServiceInvoiceQueryInvoiceDetail */
  10207 +export interface PostServiceInvoiceQueryInvoiceDetailResponse {
10356 /** 10208 /**
10357 * @description 10209 * @description
10358 * OK 10210 * OK
@@ -10380,25 +10232,25 @@ export interface PostServiceInvoiceReissueAuditResponse { @@ -10380,25 +10232,25 @@ export interface PostServiceInvoiceReissueAuditResponse {
10380 404: any; 10232 404: any;
10381 } 10233 }
10382 10234
10383 -export type PostServiceInvoiceReissueAuditResponseSuccess =  
10384 - PostServiceInvoiceReissueAuditResponse[200]; 10235 +export type PostServiceInvoiceQueryInvoiceDetailResponseSuccess =
  10236 + PostServiceInvoiceQueryInvoiceDetailResponse[200];
10385 /** 10237 /**
10386 * @description 10238 * @description
10387 - * 重新开票审核 10239 + * 查看发票详情
10388 * @tags 发票 10240 * @tags 发票
10389 * @produces * 10241 * @produces *
10390 * @consumes application/json 10242 * @consumes application/json
10391 */ 10243 */
10392 -export const postServiceInvoiceReissueAudit = /* #__PURE__ */ (() => { 10244 +export const postServiceInvoiceQueryInvoiceDetail = /* #__PURE__ */ (() => {
10393 const method = 'post'; 10245 const method = 'post';
10394 - const url = '/service/invoice/reissueAudit'; 10246 + const url = '/service/invoice/queryInvoiceDetail';
10395 function request( 10247 function request(
10396 - option: PostServiceInvoiceReissueAuditOption,  
10397 - ): Promise<PostServiceInvoiceReissueAuditResponseSuccess> { 10248 + option: PostServiceInvoiceQueryInvoiceDetailOption,
  10249 + ): Promise<PostServiceInvoiceQueryInvoiceDetailResponseSuccess> {
10398 return requester(request.url, { 10250 return requester(request.url, {
10399 method: request.method, 10251 method: request.method,
10400 ...option, 10252 ...option,
10401 - }) as unknown as Promise<PostServiceInvoiceReissueAuditResponseSuccess>; 10253 + }) as unknown as Promise<PostServiceInvoiceQueryInvoiceDetailResponseSuccess>;
10402 } 10254 }
10403 10255
10404 /** http method */ 10256 /** http method */
@@ -10408,8 +10260,8 @@ export const postServiceInvoiceReissueAudit = /* #__PURE__ */ (() =&gt; { @@ -10408,8 +10260,8 @@ export const postServiceInvoiceReissueAudit = /* #__PURE__ */ (() =&gt; {
10408 return request; 10260 return request;
10409 })(); 10261 })();
10410 10262
10411 -/** @description request parameter type for postServiceInvoiceUrgentInvoicing */  
10412 -export interface PostServiceInvoiceUrgentInvoicingOption { 10263 +/** @description request parameter type for postServiceInvoiceReissue */
  10264 +export interface PostServiceInvoiceReissueOption {
10413 /** 10265 /**
10414 * @description 10266 * @description
10415 * dto 10267 * dto
@@ -10418,12 +10270,12 @@ export interface PostServiceInvoiceUrgentInvoicingOption { @@ -10418,12 +10270,12 @@ export interface PostServiceInvoiceUrgentInvoicingOption {
10418 /** 10270 /**
10419 @description 10271 @description
10420 dto */ 10272 dto */
10421 - dto: AuditDto; 10273 + dto: ReissueInvoiceDto;
10422 }; 10274 };
10423 } 10275 }
10424 10276
10425 -/** @description response type for postServiceInvoiceUrgentInvoicing */  
10426 -export interface PostServiceInvoiceUrgentInvoicingResponse { 10277 +/** @description response type for postServiceInvoiceReissue */
  10278 +export interface PostServiceInvoiceReissueResponse {
10427 /** 10279 /**
10428 * @description 10280 * @description
10429 * OK 10281 * OK
@@ -10451,25 +10303,25 @@ export interface PostServiceInvoiceUrgentInvoicingResponse { @@ -10451,25 +10303,25 @@ export interface PostServiceInvoiceUrgentInvoicingResponse {
10451 404: any; 10303 404: any;
10452 } 10304 }
10453 10305
10454 -export type PostServiceInvoiceUrgentInvoicingResponseSuccess =  
10455 - PostServiceInvoiceUrgentInvoicingResponse[200]; 10306 +export type PostServiceInvoiceReissueResponseSuccess =
  10307 + PostServiceInvoiceReissueResponse[200];
10456 /** 10308 /**
10457 * @description 10309 * @description
10458 - * 加急开票审核 10310 + * 重新开票
10459 * @tags 发票 10311 * @tags 发票
10460 * @produces * 10312 * @produces *
10461 * @consumes application/json 10313 * @consumes application/json
10462 */ 10314 */
10463 -export const postServiceInvoiceUrgentInvoicing = /* #__PURE__ */ (() => { 10315 +export const postServiceInvoiceReissue = /* #__PURE__ */ (() => {
10464 const method = 'post'; 10316 const method = 'post';
10465 - const url = '/service/invoice/urgentInvoicing'; 10317 + const url = '/service/invoice/reissue';
10466 function request( 10318 function request(
10467 - option: PostServiceInvoiceUrgentInvoicingOption,  
10468 - ): Promise<PostServiceInvoiceUrgentInvoicingResponseSuccess> { 10319 + option: PostServiceInvoiceReissueOption,
  10320 + ): Promise<PostServiceInvoiceReissueResponseSuccess> {
10469 return requester(request.url, { 10321 return requester(request.url, {
10470 method: request.method, 10322 method: request.method,
10471 ...option, 10323 ...option,
10472 - }) as unknown as Promise<PostServiceInvoiceUrgentInvoicingResponseSuccess>; 10324 + }) as unknown as Promise<PostServiceInvoiceReissueResponseSuccess>;
10473 } 10325 }
10474 10326
10475 /** http method */ 10327 /** http method */
src/utils/numberUtil.ts 0 → 100644
  1 +export function getRandomNumber(numDigits: number) {
  2 + if (numDigits <= 0) {
  3 + throw new Error('Number of digits must be greater than 0');
  4 + }
  5 +
  6 + const min = Math.pow(10, numDigits - 1);
  7 + const max = Math.pow(10, numDigits) - 1;
  8 + return Math.floor(Math.random() * (max - min + 1)) + min;
  9 +}
src/utils/order.ts
  1 +import { postServiceOrderQuerySalesCode } from '@/services';
1 import { cloneDeep } from 'lodash'; 2 import { cloneDeep } from 'lodash';
2 import { getUserInfo } from '.'; 3 import { getUserInfo } from '.';
3 export function getReceivingCompanyOptions(PAYEE_OPTIONS: any) { 4 export function getReceivingCompanyOptions(PAYEE_OPTIONS: any) {
@@ -63,3 +64,17 @@ export function isFinance() { @@ -63,3 +64,17 @@ export function isFinance() {
63 } 64 }
64 return false; 65 return false;
65 } 66 }
  67 +/**
  68 + * 获取销售代码枚举,在复制和编辑的时候判断是否为旧的代码
  69 + */
  70 +export const getSalesCodeOptions = async () => {
  71 + const res = await postServiceOrderQuerySalesCode();
  72 + let options = res.data?.map((item) => {
  73 + return {
  74 + label: item.userName,
  75 + value: item.userName,
  76 + number: item.number,
  77 + };
  78 + });
  79 + return options;
  80 +};
src/utils/validators.ts
@@ -5,3 +5,8 @@ export const validatePhoneNumber = (_: any, value: any) =&gt; { @@ -5,3 +5,8 @@ export const validatePhoneNumber = (_: any, value: any) =&gt; {
5 } 5 }
6 return Promise.reject('请输入正确的电话号码格式(例如:13789758969)'); 6 return Promise.reject('请输入正确的电话号码格式(例如:13789758969)');
7 }; 7 };
  8 +
  9 +export const validatePhoneNumberBool = (phoneNumber: any) => {
  10 + const regex = /^1[3456789]\d{9}$/;
  11 + return regex.test(phoneNumber);
  12 +};