Commit b31916ea3003d11f9ebc0a28159acfa0a3f78bba

Authored by 曾国涛
2 parents 3df49f82 21e11c8d

Merge branch 'productCollect'

.umirc.ts
@@ -151,10 +151,28 @@ export default defineConfig({ @@ -151,10 +151,28 @@ export default defineConfig({
151 access: 'canReadAdmin', 151 access: 'canReadAdmin',
152 }, 152 },
153 { 153 {
154 - name: '礼品申领',  
155 - path: '/productCollectBill',  
156 - component: './productCollectBill', 154 + name: '礼品管理',
  155 + path: '/product',
157 icon: 'BookOutlined', 156 icon: 'BookOutlined',
  157 + routes: [
  158 + {
  159 + name: '礼品采购',
  160 + path: 'procure',
  161 + access: 'canReadProductManagerAndProcureAndAdmin',
  162 + component: './product/procure',
  163 + },
  164 + {
  165 + name: '礼品库存',
  166 + path: 'product',
  167 + access: 'canReadProductManagerAndAdmin',
  168 + component: './product/product',
  169 + },
  170 + {
  171 + name: '礼品申领',
  172 + path: 'productCollect',
  173 + component: './product/productCollect',
  174 + },
  175 + ],
158 }, 176 },
159 { 177 {
160 name: '客户管理', 178 name: '客户管理',
README.md
@@ -19,7 +19,7 @@ @@ -19,7 +19,7 @@
19 19
20 # 订单列表 20 # 订单列表
21 21
22 -文件地址/src/pages/Order/index.tsx 22 +文件地址/src/pages/Order/indexcopy.tsx
23 23
24 搜索columns,新建/修改下面的对象 24 搜索columns,新建/修改下面的对象
25 25
src/access.ts
@@ -11,6 +11,7 @@ export default (initialState: API.UserInfo) => { @@ -11,6 +11,7 @@ export default (initialState: API.UserInfo) => {
11 const canReadSales = 11 const canReadSales =
12 roles?.includes('SALES_MANAGER') || roles?.includes('SALES_REPRESENTATIVE'); 12 roles?.includes('SALES_MANAGER') || roles?.includes('SALES_REPRESENTATIVE');
13 const canReadSalesManager = roles?.includes('SALES_MANAGER'); 13 const canReadSalesManager = roles?.includes('SALES_MANAGER');
  14 + const canReadProductManager = roles?.includes('PRODUCT_MANAGER');
14 return { 15 return {
15 canReadAdmin: canReadAdmin, 16 canReadAdmin: canReadAdmin,
16 canReadProcure: canReadProcure || canReadAdmin, 17 canReadProcure: canReadProcure || canReadAdmin,
@@ -25,5 +26,8 @@ export default (initialState: API.UserInfo) => { @@ -25,5 +26,8 @@ export default (initialState: API.UserInfo) => {
25 canReadAdminAndSalesManager: canReadAdmin || canReadSalesManager, 26 canReadAdminAndSalesManager: canReadAdmin || canReadSalesManager,
26 canReadAdminAndSalesAndWarehouseKeeper: 27 canReadAdminAndSalesAndWarehouseKeeper:
27 canReadAdmin || canReadSales || canReadWarehouseKeeper, 28 canReadAdmin || canReadSales || canReadWarehouseKeeper,
  29 + canReadProductManagerAndProcureAndAdmin:
  30 + canReadAdmin || canReadProductManager || canReadProcure,
  31 + canReadProductManagerAndAdmin: canReadAdmin || canReadProductManager,
28 }; 32 };
29 }; 33 };
src/models/enum.ts
@@ -3,6 +3,7 @@ import { @@ -3,6 +3,7 @@ import {
3 postServiceConstInvoiceReissueRecordStatus, 3 postServiceConstInvoiceReissueRecordStatus,
4 postServiceConstPayees, 4 postServiceConstPayees,
5 postServiceConstProductCollectBillStatus, 5 postServiceConstProductCollectBillStatus,
  6 + postServiceConstProducts,
6 postServiceConstStores, 7 postServiceConstStores,
7 } from '@/services'; 8 } from '@/services';
8 import { useCallback } from 'react'; 9 import { useCallback } from 'react';
@@ -28,11 +29,16 @@ export default () => { @@ -28,11 +29,16 @@ export default () => {
28 const result = await postServiceConstStores(); 29 const result = await postServiceConstStores();
29 return result.data; 30 return result.data;
30 }, []); 31 }, []);
  32 + const getProducts = useCallback(async () => {
  33 + const res = await postServiceConstProducts();
  34 + return res.data;
  35 + }, []);
31 return { 36 return {
32 getPayees, 37 getPayees,
33 getInvoiceReissueRecordStatus, 38 getInvoiceReissueRecordStatus,
34 getInvoiceFlushStatus, 39 getInvoiceFlushStatus,
35 getProductCollectBillAuditStatus, 40 getProductCollectBillAuditStatus,
36 getWarehouse, 41 getWarehouse,
  42 + getProducts,
37 }; 43 };
38 }; 44 };
src/pages/product/procure/components/AddOrUpdate.tsx 0 → 100644
  1 +import {
  2 + postOrderErpTicketsUpload,
  3 + postProcureBillAddOrModify,
  4 +} from '@/services';
  5 +import { useModel } from '@@/exports';
  6 +import { UploadOutlined } from '@ant-design/icons';
  7 +import {
  8 + ActionType,
  9 + EditableProTable,
  10 + ModalForm,
  11 + ProCard,
  12 + ProColumns,
  13 + ProForm,
  14 + ProFormDependency,
  15 + ProFormField,
  16 + ProFormSwitch,
  17 + ProFormTextArea,
  18 +} from '@ant-design/pro-components';
  19 +import { Button, Form, Upload, message } from 'antd';
  20 +import React, { useEffect, useRef, useState } from 'react';
  21 +
  22 +export default ({ record, onfinish }) => {
  23 + const [editableKeys, setEditableRowKeys] = useState<React.Key[]>([]);
  24 + const [controlled, setControlled] = useState<boolean>(false);
  25 + const [processedRecord, setProcessedRecord] = useState(record);
  26 + const formRef = useRef(null);
  27 + const editorFormRef = useRef(null);
  28 + const { getProducts } = useModel('enum');
  29 + const actionRef = useRef<ActionType>();
  30 + // 使用 useEffect 为 procureBillDetailList 中的每个元素添加 key
  31 + useEffect(() => {
  32 + if (record?.procureBillDetailList) {
  33 + const updatedProcureBillDetailList = record.procureBillDetailList.map(
  34 + (item) => ({
  35 + ...item,
  36 + key: item.key || `key-${Math.random().toString(36).substr(2, 9)}`, // 动态生成唯一 key
  37 + }),
  38 + );
  39 + setProcessedRecord({
  40 + ...record,
  41 + procureBillDetailList: updatedProcureBillDetailList,
  42 + });
  43 + }
  44 + }, [record]);
  45 +
  46 + const columns: ProColumns[] = [
  47 + {
  48 + title: '商品',
  49 + dataIndex: 'productId',
  50 + valueType: 'select',
  51 + request: async () => {
  52 + const res = await getProducts();
  53 + return res.map((item) => ({
  54 + ...item,
  55 + label: item.name,
  56 + value: item.id,
  57 + productUnitName: item.baseUnitName,
  58 + productUnitPrice: item.unitPrice,
  59 + }));
  60 + },
  61 + fieldProps: (_, { rowIndex }) => ({
  62 + onSelect: (value, option) => {
  63 + console.log('option111111' + JSON.stringify(option));
  64 + const currentTableData = editorFormRef.current?.getRowsData?.();
  65 + if (currentTableData) {
  66 + const updatedData = [...currentTableData];
  67 + updatedData[rowIndex] = {
  68 + ...updatedData[rowIndex],
  69 + productUnitName: option.productUnitName,
  70 + productUnitPrice: option.productUnitPrice,
  71 + };
  72 + formRef.current?.setFieldsValue({
  73 + procureBillDetailList: updatedData,
  74 + });
  75 + }
  76 + },
  77 + }),
  78 + },
  79 + {
  80 + title: '单位',
  81 + dataIndex: 'productUnitName',
  82 + valueType: 'text',
  83 + editable: false,
  84 + },
  85 + {
  86 + title: '单价',
  87 + dataIndex: 'productUnitPrice',
  88 + valueType: 'digit',
  89 + editable: false,
  90 + },
  91 + {
  92 + title: '数量',
  93 + dataIndex: 'number',
  94 + valueType: 'digit',
  95 + },
  96 + {
  97 + title: '备注',
  98 + dataIndex: 'notes',
  99 + valueType: 'textarea',
  100 + },
  101 + {
  102 + title: '附件',
  103 + dataIndex: 'annexUpload',
  104 + renderFormItem: (_, { record }) => (
  105 + <Upload
  106 + fileList={
  107 + record.annexList?.map((url) => ({
  108 + uid: url,
  109 + name: url.split('/').pop(),
  110 + status: 'done',
  111 + url,
  112 + })) || []
  113 + }
  114 + onPreview={(file) => {
  115 + window.open(file.url || file.thumbUrl); // 打开文件预览
  116 + }}
  117 + customRequest={async (options) => {
  118 + const { file, onSuccess, onError } = options;
  119 +
  120 + const formData = new FormData();
  121 + formData.append('file', file);
  122 +
  123 + try {
  124 + const res = await postOrderErpTicketsUpload({
  125 + data: formData,
  126 + headers: { 'Content-Type': 'multipart/form-data' },
  127 + });
  128 +
  129 + if (res.message === '成功') {
  130 + message.success(`${file.name} 上传成功`);
  131 +
  132 + // 更新文件列表
  133 + const currentData = formRef.current?.getFieldValue(
  134 + 'procureBillDetailList',
  135 + );
  136 + const currentRow = currentData.find(
  137 + (row) => row.key === record.key,
  138 + );
  139 + const existingAnnex = currentRow?.annexList || []; // 取现有的 annex 数据
  140 +
  141 + const updatedAnnex = [...existingAnnex, res.data]; // 合并新的文件 URL
  142 +
  143 + // 更新表单数据
  144 + const updatedData = currentData.map((row) =>
  145 + row.key === record.key
  146 + ? { ...row, annexList: updatedAnnex }
  147 + : row,
  148 + );
  149 + formRef.current?.setFieldValue(
  150 + 'procureBillDetailList',
  151 + updatedData,
  152 + );
  153 +
  154 + onSuccess?.('上传成功');
  155 + } else {
  156 + message.error(`${file.name} 上传失败`);
  157 + onError?.(new Error('上传失败'));
  158 + }
  159 + } catch (error) {
  160 + message.error(`${file.name} 上传错误`);
  161 + onError?.(error);
  162 + }
  163 + }}
  164 + onRemove={(file) => {
  165 + const currentData =
  166 + formRef.current?.getFieldValue('procureBillDetailList') || [];
  167 + const updatedData = currentData.map((row) => {
  168 + if (row.key === record.key) {
  169 + return {
  170 + ...row,
  171 + annexList: row.annexList.filter((url) => url !== file.url), // 移除对应文件 URL
  172 + };
  173 + }
  174 + return row;
  175 + });
  176 +
  177 + formRef.current?.setFieldsValue({
  178 + procureBillDetailList: updatedData,
  179 + });
  180 +
  181 + // 触发状态更新
  182 + setProcessedRecord((prevRecord) => ({
  183 + ...prevRecord,
  184 + procureBillDetailList: updatedData,
  185 + }));
  186 + }}
  187 + >
  188 + <Button icon={<UploadOutlined />}>上传附件</Button>
  189 + </Upload>
  190 + ),
  191 + render: (_, record) => (
  192 + <div>
  193 + {record.annexList?.map((url, index) => {
  194 + const shortName =
  195 + url.split('/').pop()?.slice(0, 15) || `附件 ${index + 1}`;
  196 + return (
  197 + <a
  198 + key={index}
  199 + href={url}
  200 + target="_blank"
  201 + rel="noopener noreferrer"
  202 + title={url} // 悬停显示完整链接
  203 + style={{
  204 + display: 'block',
  205 + marginBottom: '4px',
  206 + whiteSpace: 'nowrap',
  207 + overflow: 'hidden',
  208 + textOverflow: 'ellipsis',
  209 + maxWidth: '200px', // 限制显示宽度
  210 + }}
  211 + >
  212 + {shortName.length < url.split('/').pop()?.length
  213 + ? `${shortName}...`
  214 + : shortName}
  215 + </a>
  216 + );
  217 + })}
  218 + </div>
  219 + ),
  220 + },
  221 + {
  222 + title: '附件',
  223 + hideInTable: true,
  224 + dataIndex: 'annexList',
  225 + },
  226 + {
  227 + title: '操作',
  228 + valueType: 'option',
  229 + render: (text, record, _, action) => [
  230 + <a
  231 + key="editable"
  232 + onClick={() => {
  233 + action?.startEditable?.(record.key);
  234 + }}
  235 + >
  236 + 编辑
  237 + </a>,
  238 + <a
  239 + key="delete"
  240 + onClick={() => {
  241 + const tableDataSource = formRef.current?.getFieldValue(
  242 + 'procureBillDetailList',
  243 + );
  244 + formRef.current?.setFieldsValue({
  245 + table: tableDataSource.filter((item) => item.key !== record.key),
  246 + });
  247 + }}
  248 + >
  249 + 删除
  250 + </a>,
  251 + ],
  252 + },
  253 + ];
  254 +
  255 + const [form] = Form.useForm();
  256 + return (
  257 + <ModalForm
  258 + formRef={formRef}
  259 + initialValues={processedRecord}
  260 + validateTrigger="onBlur"
  261 + title="新建表单"
  262 + trigger={
  263 + record?.id ? (
  264 + <Button type="link">修改</Button>
  265 + ) : (
  266 + <Button type="primary">新建</Button>
  267 + )
  268 + }
  269 + form={form}
  270 + autoFocusFirstInput
  271 + width={1500}
  272 + modalProps={{
  273 + destroyOnClose: true,
  274 + onCancel: () => console.log('run'),
  275 + }}
  276 + submitTimeout={2000}
  277 + onFinish={async (values) => {
  278 + const res = await postProcureBillAddOrModify({
  279 + data: {
  280 + ...record,
  281 + ...values,
  282 + },
  283 + });
  284 + if (res) {
  285 + message.success(res.message);
  286 + onfinish();
  287 + }
  288 + return true;
  289 + }}
  290 + >
  291 + <EditableProTable
  292 + rowKey="key"
  293 + scroll={{
  294 + x: 960,
  295 + }}
  296 + editableFormRef={editorFormRef}
  297 + headerTitle="可编辑表格"
  298 + maxLength={5}
  299 + name="procureBillDetailList"
  300 + controlled={controlled}
  301 + recordCreatorProps={{
  302 + position: 'bottom',
  303 + record: () => ({
  304 + key: `key-${Math.random().toString(36).substr(2, 9)}`,
  305 + }),
  306 + }}
  307 + actionRef={actionRef}
  308 + toolBarRender={() => [
  309 + <ProFormSwitch
  310 + key="render"
  311 + fieldProps={{
  312 + style: {
  313 + marginBlockEnd: 0,
  314 + },
  315 + checked: controlled,
  316 + onChange: (value) => {
  317 + setControlled(value);
  318 + },
  319 + }}
  320 + checkedChildren="数据更新通知 Form"
  321 + unCheckedChildren="保存后通知 Form"
  322 + noStyle
  323 + />,
  324 + <Button
  325 + key="rows"
  326 + onClick={() => {
  327 + const rows = editorFormRef.current?.getRowsData?.();
  328 + console.log(rows);
  329 + }}
  330 + >
  331 + 获取 table 的数据
  332 + </Button>,
  333 + ]}
  334 + columns={columns}
  335 + editable={{
  336 + type: 'multiple',
  337 + editableKeys,
  338 + onChange: setEditableRowKeys,
  339 + actionRender: (row, config, defaultDom) => {
  340 + return [defaultDom.save, defaultDom.delete, defaultDom.cancel];
  341 + },
  342 + }}
  343 + />
  344 + <ProForm.Item>
  345 + <ProCard title="表格数据" headerBordered collapsible defaultCollapsed>
  346 + <ProFormDependency name={['procureBillDetailList']}>
  347 + {({ procureBillDetailList }) => (
  348 + <ProFormField
  349 + ignoreFormItem
  350 + fieldProps={{
  351 + style: {
  352 + width: '100%',
  353 + },
  354 + }}
  355 + mode="read"
  356 + valueType="jsonCode"
  357 + text={JSON.stringify(procureBillDetailList)}
  358 + />
  359 + )}
  360 + </ProFormDependency>
  361 + </ProCard>
  362 + </ProForm.Item>
  363 + <ProFormTextArea name="notes" label="备注" />
  364 + </ModalForm>
  365 + );
  366 +};
src/pages/product/procure/components/Audit.tsx 0 → 100644
  1 +import { RESPONSE_CODE } from '@/constants/enum';
  2 +import { postProcureBillAudit } from '@/services';
  3 +import { ModalForm, ProFormTextArea } from '@ant-design/pro-components';
  4 +import { Button, Form, message } from 'antd';
  5 +
  6 +export default ({ recordId, onClose }) => {
  7 + const [form] = Form.useForm<{ name: string; company: string }>();
  8 + return (
  9 + <ModalForm
  10 + title="审核"
  11 + trigger={<Button type="link">审核</Button>}
  12 + form={form}
  13 + autoFocusFirstInput
  14 + modalProps={{
  15 + destroyOnClose: true,
  16 + onCancel: () => console.log('run'),
  17 + }}
  18 + submitTimeout={2000}
  19 + submitter={{
  20 + searchConfig: {
  21 + submitText: '通过',
  22 + resetText: '取消',
  23 + },
  24 + render: (props, defaultDoms) => {
  25 + return [
  26 + defaultDoms[0],
  27 + <Button
  28 + type={'primary'}
  29 + key="ok"
  30 + onClick={async () => {
  31 + const res = await postProcureBillAudit({
  32 + data: {
  33 + ...form.getFieldsValue(),
  34 + id: recordId,
  35 + passed: false,
  36 + },
  37 + });
  38 + if (res.result === RESPONSE_CODE.SUCCESS) {
  39 + message.success('提交成功');
  40 + }
  41 + props.submit();
  42 + }}
  43 + >
  44 + 驳回
  45 + </Button>,
  46 + <Button
  47 + type={'primary'}
  48 + key="ok"
  49 + onClick={async () => {
  50 + const res = await postProcureBillAudit({
  51 + data: {
  52 + ...form.getFieldsValue(),
  53 + id: recordId,
  54 + passed: true,
  55 + },
  56 + });
  57 + if (res.result === RESPONSE_CODE.SUCCESS) {
  58 + message.success('提交成功');
  59 + }
  60 + props.submit();
  61 + }}
  62 + >
  63 + 通过
  64 + </Button>,
  65 + ];
  66 + },
  67 + }}
  68 + onFinish={async () => {
  69 + onClose();
  70 + return true;
  71 + }}
  72 + >
  73 + <ProFormTextArea name="auditRemarks" label="备注" />
  74 + </ModalForm>
  75 + );
  76 +};
src/pages/product/procure/index.tsx 0 → 100644
  1 +import ButtonConfirm from '@/components/ButtomConfirm';
  2 +import { RESPONSE_CODE } from '@/constants/enum';
  3 +import AddOrUpdate from '@/pages/product/procure/components/AddOrUpdate';
  4 +import {
  5 + postProcureBillDelete,
  6 + postProcureBillPage,
  7 + postServiceConstProcureBillAuditStatus,
  8 +} from '@/services';
  9 +import { enumToSelect } from '@/utils';
  10 +import { ProTable, type ActionType } from '@ant-design/pro-components';
  11 +import { message } from 'antd';
  12 +import { useRef } from 'react';
  13 +import Audit from './components/Audit';
  14 +
  15 +export default () => {
  16 + const actionRef = useRef<ActionType>();
  17 + const columns = [
  18 + {
  19 + title: '单号',
  20 + dataIndex: 'id',
  21 + ellipsis: true,
  22 + hideInSearch: true,
  23 + },
  24 + {
  25 + title: '创建时间',
  26 + dataIndex: 'createTime',
  27 + ellipsis: true,
  28 + width: 180,
  29 + hideInSearch: true,
  30 + },
  31 + {
  32 + title: '创建人',
  33 + dataIndex: 'createByName',
  34 + ellipsis: true,
  35 + width: 180,
  36 + hideInSearch: true,
  37 + },
  38 + {
  39 + title: '总金额',
  40 + dataIndex: 'totalPrice',
  41 + ellipsis: true,
  42 + width: 180,
  43 + hideInSearch: true,
  44 + },
  45 + {
  46 + title: '审核状态',
  47 + dataIndex: 'auditStatusText',
  48 + ellipsis: true,
  49 + width: 180,
  50 + hideInSearch: true,
  51 + },
  52 + {
  53 + title: '审核备注',
  54 + dataIndex: 'auditNotes',
  55 + ellipsis: true,
  56 + width: 180,
  57 + hideInSearch: true,
  58 + },
  59 + {
  60 + title: '备注',
  61 + dataIndex: 'notes',
  62 + ellipsis: true,
  63 + width: 180,
  64 + hideInSearch: true,
  65 + },
  66 + {
  67 + title: '采购单号',
  68 + dataIndex: 'id',
  69 + ellipsis: true,
  70 + hideInTable: true,
  71 + },
  72 + {
  73 + title: '创建人',
  74 + dataIndex: 'createByNameLike',
  75 + ellipsis: true,
  76 + hideInTable: true,
  77 + },
  78 + {
  79 + title: '创建时间',
  80 + valueType: 'dateTimeRange',
  81 + hideInTable: true,
  82 + search: {
  83 + transform: (value) => {
  84 + if (value) {
  85 + return {
  86 + createTimeGe: value[0],
  87 + createTimeLe: value[1],
  88 + };
  89 + }
  90 + },
  91 + },
  92 + },
  93 + {
  94 + title: '审核状态',
  95 + valueType: 'select',
  96 + key: 'auditStatus',
  97 + dataIndex: 'auditStatus',
  98 + filters: true,
  99 + onFilter: true,
  100 + hideInTable: true,
  101 + request: async () => {
  102 + const res = await postServiceConstProcureBillAuditStatus();
  103 + return enumToSelect(res.data);
  104 + },
  105 + },
  106 + {
  107 + title: '操作',
  108 + valueType: 'option',
  109 + key: 'option',
  110 + render: (text, record) => [
  111 + record.paths?.includes('UPDATE') && (
  112 + <AddOrUpdate
  113 + key="update"
  114 + record={record}
  115 + onfinish={() => {
  116 + actionRef.current?.reload();
  117 + }}
  118 + />
  119 + ),
  120 + record.paths?.includes('UPDATE') && (
  121 + <ButtonConfirm
  122 + key="delete"
  123 + className="p-0"
  124 + title={'确认删除该记录?'}
  125 + text="删除"
  126 + onConfirm={async () => {
  127 + let res = await postProcureBillDelete({
  128 + query: { id: record.id },
  129 + });
  130 + if (res) {
  131 + message.success(res.message);
  132 + actionRef.current?.reload();
  133 + }
  134 + }}
  135 + />
  136 + ),
  137 + record.paths?.includes('AUDIT') && (
  138 + <Audit
  139 + recordId={record.id}
  140 + onClose={() => {
  141 + actionRef.current?.reload();
  142 + }}
  143 + ></Audit>
  144 + ),
  145 + ],
  146 + },
  147 + ];
  148 +
  149 + return (
  150 + <ProTable
  151 + actionRef={actionRef}
  152 + columns={columns}
  153 + request={async (params) => {
  154 + const res = await postProcureBillPage({
  155 + data: {
  156 + ...params,
  157 + },
  158 + });
  159 + if (res.result === RESPONSE_CODE.SUCCESS) {
  160 + return {
  161 + data: res?.data?.data,
  162 + total: res?.data?.total || 0,
  163 + };
  164 + }
  165 + return {
  166 + data: [],
  167 + success: false,
  168 + };
  169 + }}
  170 + rowKey="id"
  171 + pagination={{
  172 + showQuickJumper: true,
  173 + }}
  174 + expandable={{
  175 + expandedRowRender: (record) => (
  176 + <ProTable
  177 + columns={[
  178 + {
  179 + title: '商品名称',
  180 + dataIndex: 'productName',
  181 + key: 'productName',
  182 + },
  183 + {
  184 + title: '单位',
  185 + dataIndex: 'productUnitName',
  186 + key: 'productUnitName',
  187 + },
  188 + {
  189 + title: '单价',
  190 + dataIndex: 'productUnitPrice',
  191 + key: 'productUnitPrice',
  192 + },
  193 + { title: '数量', dataIndex: 'number', key: 'number' },
  194 + { title: '小计', dataIndex: 'totalPrice', key: 'totalPrice' },
  195 + {
  196 + title: '附件',
  197 + dataIndex: 'annex',
  198 + key: 'annex',
  199 + render: (_, record) => (
  200 + <div>
  201 + {record.annexList?.map((url, index) => {
  202 + const shortName =
  203 + url.split('/').pop()?.slice(0, 15) ||
  204 + `附件 ${index + 1}`;
  205 + return (
  206 + <a
  207 + key={index}
  208 + href={url}
  209 + target="_blank"
  210 + rel="noopener noreferrer"
  211 + title={url} // 悬停显示完整链接
  212 + style={{
  213 + display: 'block',
  214 + marginBottom: '4px',
  215 + whiteSpace: 'nowrap',
  216 + overflow: 'hidden',
  217 + textOverflow: 'ellipsis',
  218 + maxWidth: '200px', // 限制显示宽度
  219 + }}
  220 + >
  221 + {shortName.length < url.split('/').pop()?.length
  222 + ? `${shortName}...`
  223 + : shortName}
  224 + </a>
  225 + );
  226 + })}
  227 + </div>
  228 + ),
  229 + },
  230 + { title: '备注', dataIndex: 'notes', key: 'notes' },
  231 + ]}
  232 + headerTitle={false}
  233 + search={false}
  234 + options={false}
  235 + dataSource={record.procureBillDetailList}
  236 + pagination={false}
  237 + />
  238 + ),
  239 + }}
  240 + dateFormatter="string"
  241 + headerTitle="采购管理"
  242 + options={false}
  243 + toolBarRender={() => [
  244 + <AddOrUpdate
  245 + key="add"
  246 + record={undefined}
  247 + onfinish={() => actionRef.current?.reload()}
  248 + />,
  249 + ]}
  250 + />
  251 + );
  252 +};
src/pages/productCollectBill/components/AddOrUpdate.tsx renamed to src/pages/product/product/components/AddOrUpdate.tsx
1 -import { postProductCollectBillAddOrModify } from '@/services';  
2 -import { useModel } from '@@/exports'; 1 +import { postProductAddOrModify } from '@/services';
3 import { 2 import {
4 ModalForm, 3 ModalForm,
5 ProFormDigit, 4 ProFormDigit,
6 - ProFormSelect,  
7 ProFormText, 5 ProFormText,
8 - ProFormTextArea,  
9 } from '@ant-design/pro-components'; 6 } from '@ant-design/pro-components';
10 import { Button, Form, message } from 'antd'; 7 import { Button, Form, message } from 'antd';
11 8
12 export default ({ record, onFinish }) => { 9 export default ({ record, onFinish }) => {
13 const [form] = Form.useForm(); 10 const [form] = Form.useForm();
14 - const { getWarehouse } = useModel('enum');  
15 return ( 11 return (
16 <ModalForm 12 <ModalForm
17 title="新建表单" 13 title="新建表单"
@@ -30,8 +26,11 @@ export default ({ record, onFinish }) =&gt; { @@ -30,8 +26,11 @@ export default ({ record, onFinish }) =&gt; {
30 }} 26 }}
31 submitTimeout={2000} 27 submitTimeout={2000}
32 onFinish={async (values) => { 28 onFinish={async (values) => {
33 - let res = await postProductCollectBillAddOrModify({  
34 - data: values, 29 + let res = await postProductAddOrModify({
  30 + data: {
  31 + ...record,
  32 + ...values,
  33 + },
35 }); 34 });
36 if (res) { 35 if (res) {
37 message.success(res.message); 36 message.success(res.message);
@@ -40,49 +39,35 @@ export default ({ record, onFinish }) =&gt; { @@ -40,49 +39,35 @@ export default ({ record, onFinish }) =&gt; {
40 return true; 39 return true;
41 }} 40 }}
42 > 41 >
43 - <ProFormDigit  
44 - label="id"  
45 - name="id"  
46 - initialValue={record?.id}  
47 - width="sm"  
48 - hidden={true} 42 + <ProFormText
  43 + width="md"
  44 + initialValue={record?.name}
  45 + name="name"
  46 + label="商品名称"
  47 + rules={[{ required: true, message: '商品名称必填' }]}
49 /> 48 />
50 <ProFormText 49 <ProFormText
51 width="md" 50 width="md"
52 - initialValue={record?.productName}  
53 - name="productName"  
54 - label="申领物品"  
55 - rules={[{ required: true, message: '申领物品必填' }]} 51 + initialValue={record?.baseUnitName}
  52 + name="baseUnitName"
  53 + label="商品单位"
  54 + rules={[{ required: true, message: '商品单位必填' }]}
56 /> 55 />
57 <ProFormDigit 56 <ProFormDigit
58 - label="申领数量"  
59 - name="productNumber"  
60 - initialValue={record?.productNumber} 57 + label="商品单价"
  58 + name="unitPrice"
  59 + initialValue={record?.unitPrice}
61 width="sm" 60 width="sm"
62 - min={1}  
63 - rules={[{ required: true, message: '申领数量必填' }]} 61 + min={0}
  62 + rules={[{ required: true, message: '商品单价必填' }]}
64 /> 63 />
65 - <ProFormSelect  
66 - width="md"  
67 - request={async () => {  
68 - const res = await getWarehouse();  
69 - console.log('options:' + res);  
70 - let options = Object.entries(res).map(([value, label]) => ({  
71 - label,  
72 - value,  
73 - }));  
74 - console.log('options:' + options);  
75 - return options;  
76 - }}  
77 - // initialValue={record?.warehouseCode}  
78 - name="warehouseCode"  
79 - label="申领仓库"  
80 - rules={[{ required: true, message: '申领仓库为必填项' }]}  
81 - />  
82 - <ProFormTextArea  
83 - initialValue={record?.applyRemarks}  
84 - name="applyRemarks"  
85 - label="申领备注" 64 + <ProFormDigit
  65 + label="商品库存"
  66 + name="inventory"
  67 + initialValue={record?.inventory}
  68 + width="sm"
  69 + min={0}
  70 + rules={[{ required: true, message: '商品库存必填' }]}
86 /> 71 />
87 </ModalForm> 72 </ModalForm>
88 ); 73 );
src/pages/product/product/index.tsx 0 → 100644
  1 +import ButtonConfirm from '@/components/ButtomConfirm';
  2 +import { RESPONSE_CODE } from '@/constants/enum';
  3 +import AddOrUpdate from '@/pages/product/product/components/AddOrUpdate';
  4 +import { postProductDelete, postProductPage } from '@/services';
  5 +import type { ActionType, ProColumns } from '@ant-design/pro-components';
  6 +import { ProTable } from '@ant-design/pro-components';
  7 +import { message } from 'antd';
  8 +import { useRef } from 'react';
  9 +
  10 +export default () => {
  11 + const actionRef = useRef<ActionType>();
  12 + const columns: ProColumns[] = [
  13 + {
  14 + title: '编号',
  15 + dataIndex: 'id',
  16 + ellipsis: true,
  17 + },
  18 + {
  19 + title: '商品名称',
  20 + dataIndex: 'name',
  21 + ellipsis: true,
  22 + hideInSearch: true,
  23 + },
  24 + {
  25 + title: '商品名称',
  26 + dataIndex: 'nameLike',
  27 + ellipsis: true,
  28 + hideInTable: true,
  29 + },
  30 + {
  31 + title: '单位',
  32 + dataIndex: 'baseUnitName',
  33 + ellipsis: true,
  34 + hideInSearch: true,
  35 + },
  36 + {
  37 + title: '单价',
  38 + dataIndex: 'unitPrice',
  39 + ellipsis: true,
  40 + hideInSearch: true,
  41 + },
  42 + {
  43 + title: '库存',
  44 + dataIndex: 'inventory',
  45 + ellipsis: true,
  46 + hideInSearch: true,
  47 + },
  48 +
  49 + {
  50 + title: '操作',
  51 + valueType: 'option',
  52 + key: 'option',
  53 + render: (text, record) => [
  54 + record.paths?.includes('UPDATE') && (
  55 + <AddOrUpdate
  56 + key={'addOrUpdate'}
  57 + record={record}
  58 + onFinish={() => {
  59 + actionRef.current?.reload();
  60 + }}
  61 + />
  62 + ),
  63 + record.paths?.includes('UPDATE') && (
  64 + <ButtonConfirm
  65 + key="delete"
  66 + className="p-0"
  67 + title={'确认删除该记录?'}
  68 + text="删除"
  69 + onConfirm={async () => {
  70 + let res = await postProductDelete({
  71 + query: { id: record.id },
  72 + });
  73 + if (res) {
  74 + message.success(res.message);
  75 + actionRef.current?.reload();
  76 + }
  77 + }}
  78 + />
  79 + ),
  80 + ],
  81 + },
  82 + ];
  83 + return (
  84 + <ProTable
  85 + columns={columns}
  86 + actionRef={actionRef}
  87 + cardBordered
  88 + request={async (params) => {
  89 + const res = await postProductPage({
  90 + data: {
  91 + ...params,
  92 + },
  93 + });
  94 + if (res.result === RESPONSE_CODE.SUCCESS) {
  95 + return {
  96 + data: res?.data?.data,
  97 + total: res?.data?.total || 0,
  98 + };
  99 + }
  100 + return {
  101 + data: [],
  102 + success: false,
  103 + };
  104 + }}
  105 + editable={{
  106 + type: 'multiple',
  107 + }}
  108 + columnsState={{
  109 + persistenceKey: 'pro-table-singe-demos',
  110 + persistenceType: 'localStorage',
  111 + defaultValue: {
  112 + option: { fixed: 'right', disable: true },
  113 + },
  114 + onChange(value) {
  115 + console.log('value: ', value);
  116 + },
  117 + }}
  118 + rowKey="id"
  119 + search={{
  120 + labelWidth: 'auto',
  121 + }}
  122 + options={{
  123 + setting: {
  124 + listsHeight: 400,
  125 + },
  126 + }}
  127 + form={{
  128 + // 由于配置了 transform,提交的参数与定义的不同这里需要转化一下
  129 + syncToUrl: (values, type) => {
  130 + if (type === 'get') {
  131 + return {
  132 + ...values,
  133 + created_at: [values.startTime, values.endTime],
  134 + };
  135 + }
  136 + return values;
  137 + },
  138 + }}
  139 + pagination={{
  140 + pageSize: 5,
  141 + onChange: (page) => console.log(page),
  142 + }}
  143 + dateFormatter="string"
  144 + headerTitle="商品列表"
  145 + toolBarRender={() => [
  146 + <AddOrUpdate
  147 + key="AddOrUpdate"
  148 + record={null}
  149 + onFinish={() => {
  150 + actionRef.current?.reload();
  151 + }}
  152 + />,
  153 + ]}
  154 + />
  155 + );
  156 +};
src/pages/product/productCollect/components/AddOrUpdate.tsx 0 → 100644
  1 +import { postProductCollectBillAddOrModify } from '@/services';
  2 +import { useModel } from '@@/exports';
  3 +import {
  4 + ActionType,
  5 + EditableProTable,
  6 + ModalForm,
  7 + ProCard,
  8 + ProColumns,
  9 + ProForm,
  10 + ProFormDependency,
  11 + ProFormField,
  12 + ProFormSwitch,
  13 + ProFormTextArea,
  14 +} from '@ant-design/pro-components';
  15 +import { Button, Form, message } from 'antd';
  16 +import React, { useEffect, useRef, useState } from 'react';
  17 +
  18 +export default ({ record, onfinish }) => {
  19 + const [editableKeys, setEditableRowKeys] = useState<React.Key[]>([]);
  20 + const [controlled, setControlled] = useState<boolean>(false);
  21 + const [processedRecord, setProcessedRecord] = useState(record);
  22 + const formRef = useRef(null);
  23 + const editorFormRef = useRef(null);
  24 + const { getProducts } = useModel('enum');
  25 + const actionRef = useRef<ActionType>();
  26 + useEffect(() => {
  27 + if (record?.details) {
  28 + const updateddetails = record.details.map((item) => ({
  29 + ...item,
  30 + key: item.key || `key-${Math.random().toString(36).substr(2, 9)}`, // 动态生成唯一 key
  31 + }));
  32 + setProcessedRecord({
  33 + ...record,
  34 + details: updateddetails,
  35 + });
  36 + }
  37 + }, [record]);
  38 +
  39 + const columns: ProColumns[] = [
  40 + {
  41 + title: '商品',
  42 + dataIndex: 'productId',
  43 + valueType: 'select',
  44 + request: async () => {
  45 + const res = await getProducts();
  46 + return res.map((item) => ({
  47 + ...item,
  48 + label: item.name,
  49 + value: item.id,
  50 + productUnitName: item.baseUnitName,
  51 + productUnitPrice: item.unitPrice,
  52 + }));
  53 + },
  54 + fieldProps: (_, { rowIndex }) => ({
  55 + onSelect: (value, option) => {
  56 + const currentTableData = editorFormRef.current?.getRowsData?.();
  57 + if (currentTableData) {
  58 + const updatedData = [...currentTableData];
  59 + updatedData[rowIndex] = {
  60 + ...updatedData[rowIndex],
  61 + productUnitName: option.productUnitName,
  62 + productUnitPrice: option.productUnitPrice,
  63 + };
  64 + formRef.current?.setFieldsValue({
  65 + details: updatedData,
  66 + });
  67 + }
  68 + },
  69 + }),
  70 + },
  71 + {
  72 + title: '单位',
  73 + dataIndex: 'productUnitName',
  74 + valueType: 'text',
  75 + editable: false,
  76 + },
  77 + {
  78 + title: '单价',
  79 + dataIndex: 'productUnitPrice',
  80 + valueType: 'digit',
  81 + editable: false,
  82 + },
  83 + {
  84 + title: '数量',
  85 + dataIndex: 'number',
  86 + valueType: 'digit',
  87 + },
  88 + {
  89 + title: '备注',
  90 + dataIndex: 'notes',
  91 + valueType: 'textarea',
  92 + },
  93 + {
  94 + title: '操作',
  95 + valueType: 'option',
  96 + render: (text, record, _, action) => [
  97 + <a
  98 + key="editable"
  99 + onClick={() => {
  100 + action?.startEditable?.(record.key);
  101 + }}
  102 + >
  103 + 编辑
  104 + </a>,
  105 + <a
  106 + key="delete"
  107 + onClick={() => {
  108 + const tableDataSource = formRef.current?.getFieldValue('details');
  109 + formRef.current?.setFieldsValue({
  110 + table: tableDataSource.filter((item) => item.key !== record.key),
  111 + });
  112 + }}
  113 + >
  114 + 删除
  115 + </a>,
  116 + ],
  117 + },
  118 + ];
  119 +
  120 + const [form] = Form.useForm();
  121 + return (
  122 + <ModalForm
  123 + formRef={formRef}
  124 + initialValues={processedRecord}
  125 + validateTrigger="onBlur"
  126 + title="新建表单"
  127 + trigger={
  128 + record?.id ? (
  129 + <Button type="link">修改</Button>
  130 + ) : (
  131 + <Button type="primary">新建</Button>
  132 + )
  133 + }
  134 + form={form}
  135 + autoFocusFirstInput
  136 + width={1500}
  137 + modalProps={{
  138 + destroyOnClose: true,
  139 + onCancel: () => console.log('run'),
  140 + }}
  141 + submitTimeout={2000}
  142 + onFinish={async (values) => {
  143 + const res = await postProductCollectBillAddOrModify({
  144 + data: {
  145 + ...record,
  146 + ...values,
  147 + },
  148 + });
  149 + if (res) {
  150 + message.success(res.message);
  151 + onfinish();
  152 + }
  153 + return true;
  154 + }}
  155 + >
  156 + <EditableProTable
  157 + rowKey="key"
  158 + scroll={{
  159 + x: 960,
  160 + }}
  161 + editableFormRef={editorFormRef}
  162 + headerTitle="可编辑表格"
  163 + maxLength={5}
  164 + name="details"
  165 + controlled={controlled}
  166 + recordCreatorProps={{
  167 + position: 'bottom',
  168 + record: () => ({
  169 + key: `key-${Math.random().toString(36).substr(2, 9)}`,
  170 + }),
  171 + }}
  172 + actionRef={actionRef}
  173 + toolBarRender={() => [
  174 + <ProFormSwitch
  175 + key="render"
  176 + fieldProps={{
  177 + style: {
  178 + marginBlockEnd: 0,
  179 + },
  180 + checked: controlled,
  181 + onChange: (value) => {
  182 + setControlled(value);
  183 + },
  184 + }}
  185 + checkedChildren="数据更新通知 Form"
  186 + unCheckedChildren="保存后通知 Form"
  187 + noStyle
  188 + />,
  189 + <Button
  190 + key="rows"
  191 + onClick={() => {
  192 + const rows = editorFormRef.current?.getRowsData?.();
  193 + console.log(rows);
  194 + }}
  195 + >
  196 + 获取 table 的数据
  197 + </Button>,
  198 + ]}
  199 + columns={columns}
  200 + editable={{
  201 + type: 'multiple',
  202 + editableKeys,
  203 + onChange: setEditableRowKeys,
  204 + actionRender: (row, config, defaultDom) => {
  205 + return [defaultDom.save, defaultDom.delete, defaultDom.cancel];
  206 + },
  207 + }}
  208 + />
  209 + <ProForm.Item>
  210 + <ProCard title="表格数据" headerBordered collapsible defaultCollapsed>
  211 + <ProFormDependency name={['details']}>
  212 + {({ details }) => (
  213 + <ProFormField
  214 + ignoreFormItem
  215 + fieldProps={{
  216 + style: {
  217 + width: '100%',
  218 + },
  219 + }}
  220 + mode="read"
  221 + valueType="jsonCode"
  222 + text={JSON.stringify(details)}
  223 + />
  224 + )}
  225 + </ProFormDependency>
  226 + </ProCard>
  227 + </ProForm.Item>
  228 + <ProFormTextArea name="auditRemarks" label="备注" />
  229 + </ModalForm>
  230 + );
  231 +};
src/pages/productCollectBill/components/Audit.tsx renamed to src/pages/product/productCollect/components/Audit.tsx
src/pages/product/productCollect/index.tsx 0 → 100644
  1 +import ButtonConfirm from '@/components/ButtomConfirm';
  2 +import { RESPONSE_CODE } from '@/constants/enum';
  3 +import AddOrUpdate from '@/pages/product/productCollect/components/AddOrUpdate';
  4 +import {
  5 + postProductCollectBillDelete,
  6 + postProductCollectBillPage,
  7 + postServiceConstProductCollectBillStatus,
  8 +} from '@/services';
  9 +import { enumToSelect } from '@/utils';
  10 +import {
  11 + ProTable,
  12 + type ActionType,
  13 + type ProColumns,
  14 +} from '@ant-design/pro-components';
  15 +import { message } from 'antd';
  16 +import { useRef } from 'react';
  17 +import Audit from './components/Audit';
  18 +
  19 +export default () => {
  20 + const actionRef = useRef<ActionType>();
  21 + const columns: ProColumns[] = [
  22 + {
  23 + dataIndex: 'index',
  24 + valueType: 'indexBorder',
  25 + width: 48,
  26 + },
  27 + {
  28 + title: '申领人',
  29 + dataIndex: 'createByName',
  30 + ellipsis: true,
  31 + width: 180,
  32 + hideInSearch: true,
  33 + },
  34 + {
  35 + title: '申请时间',
  36 + dataIndex: 'createTime',
  37 + ellipsis: true,
  38 + width: 180,
  39 + hideInSearch: true,
  40 + },
  41 + {
  42 + title: '审核状态',
  43 + dataIndex: 'auditStatusText',
  44 + ellipsis: true,
  45 + width: 180,
  46 + hideInSearch: true,
  47 + },
  48 + {
  49 + title: '申领备注',
  50 + dataIndex: 'applyRemarks',
  51 + valueType: 'textarea',
  52 + ellipsis: true,
  53 + width: 180,
  54 + hideInSearch: true,
  55 + },
  56 + {
  57 + title: '审核备注',
  58 + dataIndex: 'auditRemarks',
  59 + valueType: 'textarea',
  60 + ellipsis: true,
  61 + width: 180,
  62 + hideInSearch: true,
  63 + },
  64 +
  65 + {
  66 + title: '申领物品',
  67 + dataIndex: 'productNameLike',
  68 + ellipsis: true,
  69 + width: 180,
  70 + hideInTable: true,
  71 + },
  72 + {
  73 + title: '申领人',
  74 + dataIndex: 'createByNameLike',
  75 + hideInTable: true,
  76 + },
  77 + {
  78 + title: '申请时间',
  79 + valueType: 'dateTimeRange',
  80 + hideInTable: true,
  81 + search: {
  82 + transform: (value) => {
  83 + if (value) {
  84 + return {
  85 + createTimeGe: value[0],
  86 + createTimeLe: value[1],
  87 + };
  88 + }
  89 + },
  90 + },
  91 + },
  92 + {
  93 + title: '审核状态',
  94 + valueType: 'select',
  95 + key: 'auditStatus',
  96 + dataIndex: 'auditStatus',
  97 + filters: true,
  98 + onFilter: true,
  99 + hideInTable: true,
  100 + request: async () => {
  101 + const res = await postServiceConstProductCollectBillStatus();
  102 + return enumToSelect(res.data);
  103 + },
  104 + },
  105 + {
  106 + title: '操作',
  107 + valueType: 'option',
  108 + key: 'option',
  109 + render: (text, record) => [
  110 + record.paths?.includes('UPDATE') && (
  111 + <AddOrUpdate
  112 + record={record}
  113 + onfinish={() => {
  114 + actionRef.current?.reload();
  115 + }}
  116 + />
  117 + ),
  118 + record.paths?.includes('UPDATE') && (
  119 + <ButtonConfirm
  120 + key="delete"
  121 + className="p-0"
  122 + title={'确认删除该记录?'}
  123 + text="删除"
  124 + onConfirm={async () => {
  125 + let res = await postProductCollectBillDelete({
  126 + query: { id: record.id },
  127 + });
  128 + if (res) {
  129 + message.success(res.message);
  130 + actionRef.current?.reload();
  131 + }
  132 + }}
  133 + />
  134 + ),
  135 + record.paths?.includes('AUDIT') && (
  136 + <Audit
  137 + recordId={record.id}
  138 + onClose={() => {
  139 + actionRef.current?.reload();
  140 + }}
  141 + />
  142 + ),
  143 + ],
  144 + },
  145 + ];
  146 +
  147 + return (
  148 + <ProTable
  149 + actionRef={actionRef}
  150 + columns={columns}
  151 + request={async (params) => {
  152 + const res = await postProductCollectBillPage({
  153 + data: {
  154 + ...params,
  155 + },
  156 + });
  157 + if (res.result === RESPONSE_CODE.SUCCESS) {
  158 + return {
  159 + data: res?.data?.data,
  160 + total: res?.data?.total || 0,
  161 + };
  162 + }
  163 + return {
  164 + data: [],
  165 + success: false,
  166 + };
  167 + }}
  168 + rowKey="id"
  169 + pagination={{
  170 + showQuickJumper: true,
  171 + }}
  172 + expandable={{
  173 + expandedRowRender: (record) => (
  174 + <ProTable
  175 + columns={[
  176 + {
  177 + title: '商品名称',
  178 + dataIndex: 'productName',
  179 + key: 'productName',
  180 + },
  181 + { title: '数量', dataIndex: 'number', key: 'number' },
  182 + { title: '备注', dataIndex: 'notes', key: 'notes' },
  183 + ]}
  184 + headerTitle={false}
  185 + search={false}
  186 + options={false}
  187 + dataSource={record.details}
  188 + pagination={false}
  189 + />
  190 + ),
  191 + }}
  192 + dateFormatter="string"
  193 + headerTitle="采购管理"
  194 + options={false}
  195 + toolBarRender={() => [
  196 + <AddOrUpdate
  197 + key="add"
  198 + record={undefined}
  199 + onfinish={() => actionRef.current?.reload()}
  200 + />,
  201 + ]}
  202 + />
  203 + );
  204 +};
src/pages/productCollectBill/index.tsx renamed to src/pages/product/productCollect/indexcopy.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 AddOrUpdate from '@/pages/productCollectBill/components/AddOrUpdate';  
4 -import Audit from '@/pages/productCollectBill/components/Audit'; 3 +import AddOrUpdate from '@/pages/product/productCollect/components/AddOrUpdate';
  4 +import Audit from '@/pages/product/productCollect/components/Audit';
5 import { 5 import {
6 postProductCollectBillDelete, 6 postProductCollectBillDelete,
7 postProductCollectBillPage, 7 postProductCollectBillPage,
@@ -96,8 +96,6 @@ export default () =&gt; { @@ -96,8 +96,6 @@ export default () =&gt; {
96 hideInTable: true, 96 hideInTable: true,
97 request: async () => { 97 request: async () => {
98 const res = await postServiceConstStores(); 98 const res = await postServiceConstStores();
99 - console.log('Stores' + JSON.stringify(res));  
100 - console.log('Stores' + JSON.stringify(res.data));  
101 return enumToSelect(res.data); 99 return enumToSelect(res.data);
102 }, 100 },
103 }, 101 },
@@ -131,8 +129,6 @@ export default () =&gt; { @@ -131,8 +129,6 @@ export default () =&gt; {
131 hideInTable: true, 129 hideInTable: true,
132 request: async () => { 130 request: async () => {
133 const res = await postServiceConstProductCollectBillStatus(); 131 const res = await postServiceConstProductCollectBillStatus();
134 - console.log('auditStaus' + JSON.stringify(res));  
135 - console.log('auditStaus' + JSON.stringify(res.data));  
136 return enumToSelect(res.data); 132 return enumToSelect(res.data);
137 }, 133 },
138 }, 134 },
src/services/definition.ts
@@ -79,6 +79,10 @@ export type ProcureReturnBillDtoStatus = @@ -79,6 +79,10 @@ export type ProcureReturnBillDtoStatus =
79 | 'WAIT_SEND' 79 | 'WAIT_SEND'
80 | 'SENDED' 80 | 'SENDED'
81 | 'WAIT_AUDIT'; 81 | 'WAIT_AUDIT';
  82 +export type ProcureBillInfoAuditStatus =
  83 + | 'WAIT_AUDIT'
  84 + | 'AUDIT_PASS'
  85 + | 'AUDIT_REFUSE';
82 export type ProductCollectBillAuditStatus = 86 export type ProductCollectBillAuditStatus =
83 | 'WAIT_AUDIT' 87 | 'WAIT_AUDIT'
84 | 'AUDIT_PASS' 88 | 'AUDIT_PASS'
@@ -215,6 +219,10 @@ export interface AdminClientDto { @@ -215,6 +219,10 @@ export interface AdminClientDto {
215 export interface AdminDeptQueryVO { 219 export interface AdminDeptQueryVO {
216 createByName?: string; 220 createByName?: string;
217 createByNameLike?: string; 221 createByNameLike?: string;
  222 + /** @format date-time */
  223 + createTimeGe?: string;
  224 + /** @format date-time */
  225 + createTimeLe?: string;
218 /** @format int32 */ 226 /** @format int32 */
219 current?: number; 227 current?: number;
220 /** @format int32 */ 228 /** @format int32 */
@@ -261,6 +269,10 @@ export interface AdminInvoicingAccountDTO { @@ -261,6 +269,10 @@ export interface AdminInvoicingAccountDTO {
261 export interface AdminJobQueryVO { 269 export interface AdminJobQueryVO {
262 createByName?: string; 270 createByName?: string;
263 createByNameLike?: string; 271 createByNameLike?: string;
  272 + /** @format date-time */
  273 + createTimeGe?: string;
  274 + /** @format date-time */
  275 + createTimeLe?: string;
264 /** @format int32 */ 276 /** @format int32 */
265 current?: number; 277 current?: number;
266 /** @format int32 */ 278 /** @format int32 */
@@ -293,6 +305,10 @@ export interface AdminMenuQueryVO { @@ -293,6 +305,10 @@ export interface AdminMenuQueryVO {
293 component?: string; 305 component?: string;
294 createByName?: string; 306 createByName?: string;
295 createByNameLike?: string; 307 createByNameLike?: string;
  308 + /** @format date-time */
  309 + createTimeGe?: string;
  310 + /** @format date-time */
  311 + createTimeLe?: string;
296 /** @format int32 */ 312 /** @format int32 */
297 current?: number; 313 current?: number;
298 /** @format int32 */ 314 /** @format int32 */
@@ -344,6 +360,10 @@ export interface AdminMenuVO { @@ -344,6 +360,10 @@ export interface AdminMenuVO {
344 export interface AdminRoleQueryVO { 360 export interface AdminRoleQueryVO {
345 createByName?: string; 361 createByName?: string;
346 createByNameLike?: string; 362 createByNameLike?: string;
  363 + /** @format date-time */
  364 + createTimeGe?: string;
  365 + /** @format date-time */
  366 + createTimeLe?: string;
347 /** @format int32 */ 367 /** @format int32 */
348 current?: number; 368 current?: number;
349 dataScope?: string; 369 dataScope?: string;
@@ -378,6 +398,10 @@ export interface AdminRoleVO { @@ -378,6 +398,10 @@ export interface AdminRoleVO {
378 export interface AdminUserLoginByPhoneVO { 398 export interface AdminUserLoginByPhoneVO {
379 createByName?: string; 399 createByName?: string;
380 createByNameLike?: string; 400 createByNameLike?: string;
  401 + /** @format date-time */
  402 + createTimeGe?: string;
  403 + /** @format date-time */
  404 + createTimeLe?: string;
381 /** @format int32 */ 405 /** @format int32 */
382 current?: number; 406 current?: number;
383 /** @format int32 */ 407 /** @format int32 */
@@ -395,6 +419,10 @@ export interface AdminUserLoginByPhoneVO { @@ -395,6 +419,10 @@ export interface AdminUserLoginByPhoneVO {
395 export interface AdminUserLoginByPwdVO { 419 export interface AdminUserLoginByPwdVO {
396 createByName?: string; 420 createByName?: string;
397 createByNameLike?: string; 421 createByNameLike?: string;
  422 + /** @format date-time */
  423 + createTimeGe?: string;
  424 + /** @format date-time */
  425 + createTimeLe?: string;
398 /** @format int32 */ 426 /** @format int32 */
399 current?: number; 427 current?: number;
400 /** @format int32 */ 428 /** @format int32 */
@@ -415,6 +443,10 @@ export interface AdminUserModifyPwdVO { @@ -415,6 +443,10 @@ export interface AdminUserModifyPwdVO {
415 confirmPassword?: string; 443 confirmPassword?: string;
416 createByName?: string; 444 createByName?: string;
417 createByNameLike?: string; 445 createByNameLike?: string;
  446 + /** @format date-time */
  447 + createTimeGe?: string;
  448 + /** @format date-time */
  449 + createTimeLe?: string;
418 /** @format int32 */ 450 /** @format int32 */
419 current?: number; 451 current?: number;
420 /** @format int32 */ 452 /** @format int32 */
@@ -433,6 +465,10 @@ export interface AdminUserModifyPwdVO { @@ -433,6 +465,10 @@ export interface AdminUserModifyPwdVO {
433 export interface AdminUserPasswordRecoverEmailVO { 465 export interface AdminUserPasswordRecoverEmailVO {
434 createByName?: string; 466 createByName?: string;
435 createByNameLike?: string; 467 createByNameLike?: string;
  468 + /** @format date-time */
  469 + createTimeGe?: string;
  470 + /** @format date-time */
  471 + createTimeLe?: string;
436 /** @format int32 */ 472 /** @format int32 */
437 current?: number; 473 current?: number;
438 /** @format int32 */ 474 /** @format int32 */
@@ -449,6 +485,10 @@ export interface AdminUserPasswordRecoverEmailVO { @@ -449,6 +485,10 @@ export interface AdminUserPasswordRecoverEmailVO {
449 export interface AdminUserQueryVO { 485 export interface AdminUserQueryVO {
450 createByName?: string; 486 createByName?: string;
451 createByNameLike?: string; 487 createByNameLike?: string;
  488 + /** @format date-time */
  489 + createTimeGe?: string;
  490 + /** @format date-time */
  491 + createTimeLe?: string;
452 /** @format int32 */ 492 /** @format int32 */
453 current?: number; 493 current?: number;
454 email?: string; 494 email?: string;
@@ -475,6 +515,10 @@ export interface AdminUserRegisterVO { @@ -475,6 +515,10 @@ export interface AdminUserRegisterVO {
475 confirmPassword?: string; 515 confirmPassword?: string;
476 createByName?: string; 516 createByName?: string;
477 createByNameLike?: string; 517 createByNameLike?: string;
  518 + /** @format date-time */
  519 + createTimeGe?: string;
  520 + /** @format date-time */
  521 + createTimeLe?: string;
478 /** @format int32 */ 522 /** @format int32 */
479 current?: number; 523 current?: number;
480 email?: string; 524 email?: string;
@@ -707,6 +751,10 @@ export interface ApiCreateProductRequest { @@ -707,6 +751,10 @@ export interface ApiCreateProductRequest {
707 export interface ApiOrderCustomersRequest { 751 export interface ApiOrderCustomersRequest {
708 createByName?: string; 752 createByName?: string;
709 createByNameLike?: string; 753 createByNameLike?: string;
  754 + /** @format date-time */
  755 + createTimeGe?: string;
  756 + /** @format date-time */
  757 + createTimeLe?: string;
710 /** @format int32 */ 758 /** @format int32 */
711 current?: number; 759 current?: number;
712 /** @format int32 */ 760 /** @format int32 */
@@ -1016,6 +1064,10 @@ export interface AuditDto { @@ -1016,6 +1064,10 @@ export interface AuditDto {
1016 export interface AuditVO { 1064 export interface AuditVO {
1017 createByName?: string; 1065 createByName?: string;
1018 createByNameLike?: string; 1066 createByNameLike?: string;
  1067 + /** @format date-time */
  1068 + createTimeGe?: string;
  1069 + /** @format date-time */
  1070 + createTimeLe?: string;
1019 /** @format int32 */ 1071 /** @format int32 */
1020 current?: number; 1072 current?: number;
1021 /** @format int32 */ 1073 /** @format int32 */
@@ -1100,6 +1152,10 @@ export interface CancelSendOrderDto { @@ -1100,6 +1152,10 @@ export interface CancelSendOrderDto {
1100 export interface CaptchaMessageVO { 1152 export interface CaptchaMessageVO {
1101 createByName?: string; 1153 createByName?: string;
1102 createByNameLike?: string; 1154 createByNameLike?: string;
  1155 + /** @format date-time */
  1156 + createTimeGe?: string;
  1157 + /** @format date-time */
  1158 + createTimeLe?: string;
1103 /** @format int32 */ 1159 /** @format int32 */
1104 current?: number; 1160 current?: number;
1105 /** @format int32 */ 1161 /** @format int32 */
@@ -1375,6 +1431,10 @@ export interface CustomerSaveReq { @@ -1375,6 +1431,10 @@ export interface CustomerSaveReq {
1375 export interface DictionaryQueryVO { 1431 export interface DictionaryQueryVO {
1376 createByName?: string; 1432 createByName?: string;
1377 createByNameLike?: string; 1433 createByNameLike?: string;
  1434 + /** @format date-time */
  1435 + createTimeGe?: string;
  1436 + /** @format date-time */
  1437 + createTimeLe?: string;
1378 /** @format int32 */ 1438 /** @format int32 */
1379 current?: number; 1439 current?: number;
1380 dictCode?: string; 1440 dictCode?: string;
@@ -2244,6 +2304,10 @@ export interface MergeIntegralDto { @@ -2244,6 +2304,10 @@ export interface MergeIntegralDto {
2244 export interface MessageQueryDTO { 2304 export interface MessageQueryDTO {
2245 createByName?: string; 2305 createByName?: string;
2246 createByNameLike?: string; 2306 createByNameLike?: string;
  2307 + /** @format date-time */
  2308 + createTimeGe?: string;
  2309 + /** @format date-time */
  2310 + createTimeLe?: string;
2247 /** @format int32 */ 2311 /** @format int32 */
2248 current?: number; 2312 current?: number;
2249 /** @format int32 */ 2313 /** @format int32 */
@@ -2289,6 +2353,10 @@ export interface OrderAuditLogQueryVO { @@ -2289,6 +2353,10 @@ export interface OrderAuditLogQueryVO {
2289 applyId?: number; 2353 applyId?: number;
2290 createByName?: string; 2354 createByName?: string;
2291 createByNameLike?: string; 2355 createByNameLike?: string;
  2356 + /** @format date-time */
  2357 + createTimeGe?: string;
  2358 + /** @format date-time */
  2359 + createTimeLe?: string;
2292 /** @format int32 */ 2360 /** @format int32 */
2293 current?: number; 2361 current?: number;
2294 /** @format int32 */ 2362 /** @format int32 */
@@ -2335,6 +2403,10 @@ export interface OrderBaseInfoQueryVO { @@ -2335,6 +2403,10 @@ export interface OrderBaseInfoQueryVO {
2335 collection?: string; 2403 collection?: string;
2336 createByName?: string; 2404 createByName?: string;
2337 createByNameLike?: string; 2405 createByNameLike?: string;
  2406 + /** @format date-time */
  2407 + createTimeGe?: string;
  2408 + /** @format date-time */
  2409 + createTimeLe?: string;
2338 /** @format int32 */ 2410 /** @format int32 */
2339 current?: number; 2411 current?: number;
2340 customerCode?: string; 2412 customerCode?: string;
@@ -2431,6 +2503,10 @@ export interface OrderFieldLockApplyQueryVO { @@ -2431,6 +2503,10 @@ export interface OrderFieldLockApplyQueryVO {
2431 auditUserId?: number; 2503 auditUserId?: number;
2432 createByName?: string; 2504 createByName?: string;
2433 createByNameLike?: string; 2505 createByNameLike?: string;
  2506 + /** @format date-time */
  2507 + createTimeGe?: string;
  2508 + /** @format date-time */
  2509 + createTimeLe?: string;
2434 /** @format int32 */ 2510 /** @format int32 */
2435 current?: number; 2511 current?: number;
2436 /** @format int32 */ 2512 /** @format int32 */
@@ -2502,6 +2578,10 @@ export interface OrderMainProDo { @@ -2502,6 +2578,10 @@ export interface OrderMainProDo {
2502 export interface OrderOptLogQueryVO { 2578 export interface OrderOptLogQueryVO {
2503 createByName?: string; 2579 createByName?: string;
2504 createByNameLike?: string; 2580 createByNameLike?: string;
  2581 + /** @format date-time */
  2582 + createTimeGe?: string;
  2583 + /** @format date-time */
  2584 + createTimeLe?: string;
2505 /** @format int32 */ 2585 /** @format int32 */
2506 current?: number; 2586 current?: number;
2507 /** @format int32 */ 2587 /** @format int32 */
@@ -2745,6 +2825,17 @@ export interface OrderZoNingProvinceUserDo { @@ -2745,6 +2825,17 @@ export interface OrderZoNingProvinceUserDo {
2745 zoning?: string; 2825 zoning?: string;
2746 } 2826 }
2747 2827
  2828 +export interface ProcureBillAuditDto {
  2829 + /**
  2830 + * @description
  2831 + * 审核备注
  2832 + */
  2833 + auditRemarks?: string;
  2834 + /** @format int64 */
  2835 + id?: number;
  2836 + passed?: boolean;
  2837 +}
  2838 +
2748 export interface ProcureConvertProcureDto { 2839 export interface ProcureConvertProcureDto {
2749 /** 2840 /**
2750 * @description 2841 * @description
@@ -2925,6 +3016,10 @@ export interface QueryBankStatementDto { @@ -2925,6 +3016,10 @@ export interface QueryBankStatementDto {
2925 collectionDatetimeEnd?: string; 3016 collectionDatetimeEnd?: string;
2926 createByName?: string; 3017 createByName?: string;
2927 createByNameLike?: string; 3018 createByNameLike?: string;
  3019 + /** @format date-time */
  3020 + createTimeGe?: string;
  3021 + /** @format date-time */
  3022 + createTimeLe?: string;
2928 /** @format int32 */ 3023 /** @format int32 */
2929 current?: number; 3024 current?: number;
2930 /** @format int32 */ 3025 /** @format int32 */
@@ -3107,6 +3202,10 @@ export interface QueryInvoiceDetailDto { @@ -3107,6 +3202,10 @@ export interface QueryInvoiceDetailDto {
3107 export interface QueryInvoiceProjectDto { 3202 export interface QueryInvoiceProjectDto {
3108 createByName?: string; 3203 createByName?: string;
3109 createByNameLike?: string; 3204 createByNameLike?: string;
  3205 + /** @format date-time */
  3206 + createTimeGe?: string;
  3207 + /** @format date-time */
  3208 + createTimeLe?: string;
3110 /** @format int32 */ 3209 /** @format int32 */
3111 current?: number; 3210 current?: number;
3112 /** @format int32 */ 3211 /** @format int32 */
@@ -3412,6 +3511,10 @@ export interface QueryUseOldInvoicingDto { @@ -3412,6 +3511,10 @@ export interface QueryUseOldInvoicingDto {
3412 export interface QueryUserIntegralRecordDto { 3511 export interface QueryUserIntegralRecordDto {
3413 createByName?: string; 3512 createByName?: string;
3414 createByNameLike?: string; 3513 createByNameLike?: string;
  3514 + /** @format date-time */
  3515 + createTimeGe?: string;
  3516 + /** @format date-time */
  3517 + createTimeLe?: string;
3415 /** @format int32 */ 3518 /** @format int32 */
3416 current?: number; 3519 current?: number;
3417 /** @format int32 */ 3520 /** @format int32 */
@@ -3580,6 +3683,10 @@ export interface ResearchGroupListRequest { @@ -3580,6 +3683,10 @@ export interface ResearchGroupListRequest {
3580 companyNameLike?: string; 3683 companyNameLike?: string;
3581 createByName?: string; 3684 createByName?: string;
3582 createByNameLike?: string; 3685 createByNameLike?: string;
  3686 + /** @format date-time */
  3687 + createTimeGe?: string;
  3688 + /** @format date-time */
  3689 + createTimeLe?: string;
3583 /** @format int32 */ 3690 /** @format int32 */
3584 current?: number; 3691 current?: number;
3585 /** @format int32 */ 3692 /** @format int32 */
@@ -3732,6 +3839,10 @@ export interface ResearchGroupMemberRequestsRequest { @@ -3732,6 +3839,10 @@ export interface ResearchGroupMemberRequestsRequest {
3732 */ 3839 */
3733 createByName?: string; 3840 createByName?: string;
3734 createByNameLike?: string; 3841 createByNameLike?: string;
  3842 + /** @format date-time */
  3843 + createTimeGe?: string;
  3844 + /** @format date-time */
  3845 + createTimeLe?: string;
3735 /** @format int32 */ 3846 /** @format int32 */
3736 current?: number; 3847 current?: number;
3737 /** @format int32 */ 3848 /** @format int32 */
@@ -4070,6 +4181,10 @@ export interface SysLogQueryVO { @@ -4070,6 +4181,10 @@ export interface SysLogQueryVO {
4070 browser?: string; 4181 browser?: string;
4071 createByName?: string; 4182 createByName?: string;
4072 createByNameLike?: string; 4183 createByNameLike?: string;
  4184 + /** @format date-time */
  4185 + createTimeGe?: string;
  4186 + /** @format date-time */
  4187 + createTimeLe?: string;
4073 /** @format int32 */ 4188 /** @format int32 */
4074 current?: number; 4189 current?: number;
4075 description?: string; 4190 description?: string;
@@ -4109,6 +4224,10 @@ export interface TicketsSearchVo { @@ -4109,6 +4224,10 @@ export interface TicketsSearchVo {
4109 createByName?: string; 4224 createByName?: string;
4110 createByNameLike?: string; 4225 createByNameLike?: string;
4111 createTime?: Array<LocalDateTime>; 4226 createTime?: Array<LocalDateTime>;
  4227 + /** @format date-time */
  4228 + createTimeGe?: string;
  4229 + /** @format date-time */
  4230 + createTimeLe?: string;
4112 /** @format int32 */ 4231 /** @format int32 */
4113 current?: number; 4232 current?: number;
4114 detailText?: string; 4233 detailText?: string;
@@ -4300,6 +4419,10 @@ export interface UserAddressListRequest { @@ -4300,6 +4419,10 @@ export interface UserAddressListRequest {
4300 export interface UserCenterInfoRequest { 4419 export interface UserCenterInfoRequest {
4301 createByName?: string; 4420 createByName?: string;
4302 createByNameLike?: string; 4421 createByNameLike?: string;
  4422 + /** @format date-time */
  4423 + createTimeGe?: string;
  4424 + /** @format date-time */
  4425 + createTimeLe?: string;
4303 /** @format int32 */ 4426 /** @format int32 */
4304 current?: number; 4427 current?: number;
4305 /** @format int32 */ 4428 /** @format int32 */
@@ -4327,6 +4450,10 @@ export interface UserCenterInfoRequest { @@ -4327,6 +4450,10 @@ export interface UserCenterInfoRequest {
4327 export interface UserDetailRequest { 4450 export interface UserDetailRequest {
4328 createByName?: string; 4451 createByName?: string;
4329 createByNameLike?: string; 4452 createByNameLike?: string;
  4453 + /** @format date-time */
  4454 + createTimeGe?: string;
  4455 + /** @format date-time */
  4456 + createTimeLe?: string;
4330 /** @format int32 */ 4457 /** @format int32 */
4331 current?: number; 4458 current?: number;
4332 /** @format int32 */ 4459 /** @format int32 */
@@ -4352,6 +4479,10 @@ export interface UserDetailRequest { @@ -4352,6 +4479,10 @@ export interface UserDetailRequest {
4352 export interface UserListRequest { 4479 export interface UserListRequest {
4353 createByName?: string; 4480 createByName?: string;
4354 createByNameLike?: string; 4481 createByNameLike?: string;
  4482 + /** @format date-time */
  4483 + createTimeGe?: string;
  4484 + /** @format date-time */
  4485 + createTimeLe?: string;
4355 /** @format int32 */ 4486 /** @format int32 */
4356 current?: number; 4487 current?: number;
4357 /** 4488 /**
@@ -4688,6 +4819,10 @@ export interface InvoiceReissueRecord { @@ -4688,6 +4819,10 @@ export interface InvoiceReissueRecord {
4688 createDatetimeLe?: string; 4819 createDatetimeLe?: string;
4689 /** @format date-time */ 4820 /** @format date-time */
4690 createTime?: string; 4821 createTime?: string;
  4822 + /** @format date-time */
  4823 + createTimeGe?: string;
  4824 + /** @format date-time */
  4825 + createTimeLe?: string;
4691 /** @format int32 */ 4826 /** @format int32 */
4692 current?: number; 4827 current?: number;
4693 /** @format int32 */ 4828 /** @format int32 */
@@ -4769,6 +4904,67 @@ export interface InvoiceReissueRecord { @@ -4769,6 +4904,67 @@ export interface InvoiceReissueRecord {
4769 updateTime?: string; 4904 updateTime?: string;
4770 } 4905 }
4771 4906
  4907 +export interface ProcureBillDetail {
  4908 + annexList?: Array<string>;
  4909 + annexs?: string;
  4910 + createByName?: string;
  4911 + /** @format date-time */
  4912 + createTime?: string;
  4913 + /** @format int64 */
  4914 + id?: number;
  4915 + /** @format int64 */
  4916 + infoId?: number;
  4917 + logicDelete?: boolean;
  4918 + notes?: string;
  4919 + number?: number;
  4920 + paths?: Array<string>;
  4921 + /** @format int64 */
  4922 + productId?: number;
  4923 + productName?: string;
  4924 + productUnitName?: string;
  4925 + productUnitPrice?: number;
  4926 + totalPrice?: number;
  4927 + updateByName?: string;
  4928 + /** @format date-time */
  4929 + updateTime?: string;
  4930 +}
  4931 +
  4932 +export interface ProcureBillInfo {
  4933 + auditNotes?: string;
  4934 + auditNotesLike?: string;
  4935 + auditStatus?: ProcureBillInfoAuditStatus;
  4936 + auditStatusText?: string;
  4937 + createByName?: string;
  4938 + createByNameLike?: string;
  4939 + /** @format date-time */
  4940 + createTime?: string;
  4941 + /** @format date-time */
  4942 + createTimeGe?: string;
  4943 + /** @format date-time */
  4944 + createTimeLe?: string;
  4945 + /** @format int32 */
  4946 + current?: number;
  4947 + /** @format int32 */
  4948 + end?: number;
  4949 + /** @format int64 */
  4950 + id?: number;
  4951 + logicDelete?: boolean;
  4952 + notes?: string;
  4953 + notesLike?: string;
  4954 + /** @format int32 */
  4955 + pageSize?: number;
  4956 + paths?: Array<string>;
  4957 + procureBillDetailList?: Array<ProcureBillDetail>;
  4958 + /** @format int32 */
  4959 + start?: number;
  4960 + /** @format int32 */
  4961 + total?: number;
  4962 + totalPrice?: number;
  4963 + updateByName?: string;
  4964 + /** @format date-time */
  4965 + updateTime?: string;
  4966 +}
  4967 +
4772 /** 4968 /**
4773 * @description 4969 * @description
4774 * 礼品申领单 4970 * 礼品申领单
@@ -4860,6 +5056,42 @@ export interface ProductCollectBill { @@ -4860,6 +5056,42 @@ export interface ProductCollectBill {
4860 warehouseText?: string; 5056 warehouseText?: string;
4861 } 5057 }
4862 5058
  5059 +export interface Product {
  5060 + /** @format int64 */
  5061 + baseUnit?: number;
  5062 + baseUnitName?: string;
  5063 + createByName?: string;
  5064 + createByNameLike?: string;
  5065 + /** @format date-time */
  5066 + createTime?: string;
  5067 + /** @format date-time */
  5068 + createTimeGe?: string;
  5069 + /** @format date-time */
  5070 + createTimeLe?: string;
  5071 + /** @format int32 */
  5072 + current?: number;
  5073 + /** @format int32 */
  5074 + end?: number;
  5075 + /** @format int64 */
  5076 + id?: number;
  5077 + idIn?: Array<number>;
  5078 + inventory?: number;
  5079 + logicDelete?: boolean;
  5080 + name?: string;
  5081 + nameLike?: string;
  5082 + /** @format int32 */
  5083 + pageSize?: number;
  5084 + paths?: Array<string>;
  5085 + /** @format int32 */
  5086 + start?: number;
  5087 + /** @format int32 */
  5088 + total?: number;
  5089 + unitPrice?: number;
  5090 + updateByName?: string;
  5091 + /** @format date-time */
  5092 + updateTime?: string;
  5093 +}
  5094 +
4863 export interface ResearchGroupAccounts { 5095 export interface ResearchGroupAccounts {
4864 /** 5096 /**
4865 * @description 5097 * @description
@@ -5052,6 +5284,10 @@ export interface SalesRechargePrepaymentRequest { @@ -5052,6 +5284,10 @@ export interface SalesRechargePrepaymentRequest {
5052 * @format date-time 5284 * @format date-time
5053 */ 5285 */
5054 createTimeEndTime?: string; 5286 createTimeEndTime?: string;
  5287 + /** @format date-time */
  5288 + createTimeGe?: string;
  5289 + /** @format date-time */
  5290 + createTimeLe?: string;
5055 /** @format int32 */ 5291 /** @format int32 */
5056 current?: number; 5292 current?: number;
5057 /** 5293 /**
src/services/request.ts
@@ -70,7 +70,6 @@ import type { @@ -70,7 +70,6 @@ import type {
70 MeasureUnitListRes, 70 MeasureUnitListRes,
71 MergeIntegralDto, 71 MergeIntegralDto,
72 MessageQueryDTO, 72 MessageQueryDTO,
73 - ModelAndView,  
74 OrderAddVO, 73 OrderAddVO,
75 OrderAuditLogQueryVO, 74 OrderAuditLogQueryVO,
76 OrderBaseInfoQueryVO, 75 OrderBaseInfoQueryVO,
@@ -89,11 +88,14 @@ import type { @@ -89,11 +88,14 @@ import type {
89 OrderUnlockFieldApplyVO, 88 OrderUnlockFieldApplyVO,
90 OrderUpdateVO, 89 OrderUpdateVO,
91 OrderZoNingProvinceUserDo, 90 OrderZoNingProvinceUserDo,
  91 + ProcureBillAuditDto,
  92 + ProcureBillInfo,
92 ProcureConvertProcureDto, 93 ProcureConvertProcureDto,
93 ProcureOrderDto, 94 ProcureOrderDto,
94 ProcurePrintDto, 95 ProcurePrintDto,
95 ProcureReturnBillApprovalDto, 96 ProcureReturnBillApprovalDto,
96 ProcureReturnBillDto, 97 ProcureReturnBillDto,
  98 + Product,
97 ProductCollectBill, 99 ProductCollectBill,
98 ProductInformationDto, 100 ProductInformationDto,
99 QueryAfterSalesInfoSnapshotDto, 101 QueryAfterSalesInfoSnapshotDto,
@@ -163,6 +165,292 @@ import type { @@ -163,6 +165,292 @@ import type {
163 WarningUserWhiteListDto, 165 WarningUserWhiteListDto,
164 } from './definition'; 166 } from './definition';
165 167
  168 +/** @description request parameter type for postProcureBillAddOrModify */
  169 +export interface PostProcureBillAddOrModifyOption {
  170 + /**
  171 + * @description
  172 + * dto
  173 + */
  174 + body: {
  175 + /**
  176 + @description
  177 + dto */
  178 + dto: ProcureBillInfo;
  179 + };
  180 +}
  181 +
  182 +/** @description response type for postProcureBillAddOrModify */
  183 +export interface PostProcureBillAddOrModifyResponse {
  184 + /**
  185 + * @description
  186 + * OK
  187 + */
  188 + 200: ServerResult;
  189 + /**
  190 + * @description
  191 + * Created
  192 + */
  193 + 201: any;
  194 + /**
  195 + * @description
  196 + * Unauthorized
  197 + */
  198 + 401: any;
  199 + /**
  200 + * @description
  201 + * Forbidden
  202 + */
  203 + 403: any;
  204 + /**
  205 + * @description
  206 + * Not Found
  207 + */
  208 + 404: any;
  209 +}
  210 +
  211 +export type PostProcureBillAddOrModifyResponseSuccess =
  212 + PostProcureBillAddOrModifyResponse[200];
  213 +/**
  214 + * @description
  215 + * 新增或修改
  216 + * @tags 采购管理
  217 + * @produces *
  218 + * @consumes application/json
  219 + */
  220 +export const postProcureBillAddOrModify = /* #__PURE__ */ (() => {
  221 + const method = 'post';
  222 + const url = '/ProcureBill/addOrModify';
  223 + function request(
  224 + option: PostProcureBillAddOrModifyOption,
  225 + ): Promise<PostProcureBillAddOrModifyResponseSuccess> {
  226 + return requester(request.url, {
  227 + method: request.method,
  228 + ...option,
  229 + }) as unknown as Promise<PostProcureBillAddOrModifyResponseSuccess>;
  230 + }
  231 +
  232 + /** http method */
  233 + request.method = method;
  234 + /** request url */
  235 + request.url = url;
  236 + return request;
  237 +})();
  238 +
  239 +/** @description request parameter type for postProcureBillAudit */
  240 +export interface PostProcureBillAuditOption {
  241 + /**
  242 + * @description
  243 + * dto
  244 + */
  245 + body: {
  246 + /**
  247 + @description
  248 + dto */
  249 + dto: ProcureBillAuditDto;
  250 + };
  251 +}
  252 +
  253 +/** @description response type for postProcureBillAudit */
  254 +export interface PostProcureBillAuditResponse {
  255 + /**
  256 + * @description
  257 + * OK
  258 + */
  259 + 200: ServerResult;
  260 + /**
  261 + * @description
  262 + * Created
  263 + */
  264 + 201: any;
  265 + /**
  266 + * @description
  267 + * Unauthorized
  268 + */
  269 + 401: any;
  270 + /**
  271 + * @description
  272 + * Forbidden
  273 + */
  274 + 403: any;
  275 + /**
  276 + * @description
  277 + * Not Found
  278 + */
  279 + 404: any;
  280 +}
  281 +
  282 +export type PostProcureBillAuditResponseSuccess =
  283 + PostProcureBillAuditResponse[200];
  284 +/**
  285 + * @description
  286 + * 审核
  287 + * @tags 采购管理
  288 + * @produces *
  289 + * @consumes application/json
  290 + */
  291 +export const postProcureBillAudit = /* #__PURE__ */ (() => {
  292 + const method = 'post';
  293 + const url = '/ProcureBill/audit';
  294 + function request(
  295 + option: PostProcureBillAuditOption,
  296 + ): Promise<PostProcureBillAuditResponseSuccess> {
  297 + return requester(request.url, {
  298 + method: request.method,
  299 + ...option,
  300 + }) as unknown as Promise<PostProcureBillAuditResponseSuccess>;
  301 + }
  302 +
  303 + /** http method */
  304 + request.method = method;
  305 + /** request url */
  306 + request.url = url;
  307 + return request;
  308 +})();
  309 +
  310 +/** @description request parameter type for postProcureBillDelete */
  311 +export interface PostProcureBillDeleteOption {
  312 + /**
  313 + * @description
  314 + * id
  315 + * @format int64
  316 + */
  317 + query: {
  318 + /**
  319 + @description
  320 + id
  321 + @format int64 */
  322 + id: number;
  323 + };
  324 +}
  325 +
  326 +/** @description response type for postProcureBillDelete */
  327 +export interface PostProcureBillDeleteResponse {
  328 + /**
  329 + * @description
  330 + * OK
  331 + */
  332 + 200: ServerResult;
  333 + /**
  334 + * @description
  335 + * Created
  336 + */
  337 + 201: any;
  338 + /**
  339 + * @description
  340 + * Unauthorized
  341 + */
  342 + 401: any;
  343 + /**
  344 + * @description
  345 + * Forbidden
  346 + */
  347 + 403: any;
  348 + /**
  349 + * @description
  350 + * Not Found
  351 + */
  352 + 404: any;
  353 +}
  354 +
  355 +export type PostProcureBillDeleteResponseSuccess =
  356 + PostProcureBillDeleteResponse[200];
  357 +/**
  358 + * @description
  359 + * 删除
  360 + * @tags 采购管理
  361 + * @produces *
  362 + * @consumes application/json
  363 + */
  364 +export const postProcureBillDelete = /* #__PURE__ */ (() => {
  365 + const method = 'post';
  366 + const url = '/ProcureBill/delete';
  367 + function request(
  368 + option: PostProcureBillDeleteOption,
  369 + ): Promise<PostProcureBillDeleteResponseSuccess> {
  370 + return requester(request.url, {
  371 + method: request.method,
  372 + ...option,
  373 + }) as unknown as Promise<PostProcureBillDeleteResponseSuccess>;
  374 + }
  375 +
  376 + /** http method */
  377 + request.method = method;
  378 + /** request url */
  379 + request.url = url;
  380 + return request;
  381 +})();
  382 +
  383 +/** @description request parameter type for postProcureBillPage */
  384 +export interface PostProcureBillPageOption {
  385 + /**
  386 + * @description
  387 + * dto
  388 + */
  389 + body: {
  390 + /**
  391 + @description
  392 + dto */
  393 + dto: ProcureBillInfo;
  394 + };
  395 +}
  396 +
  397 +/** @description response type for postProcureBillPage */
  398 +export interface PostProcureBillPageResponse {
  399 + /**
  400 + * @description
  401 + * OK
  402 + */
  403 + 200: ServerResult;
  404 + /**
  405 + * @description
  406 + * Created
  407 + */
  408 + 201: any;
  409 + /**
  410 + * @description
  411 + * Unauthorized
  412 + */
  413 + 401: any;
  414 + /**
  415 + * @description
  416 + * Forbidden
  417 + */
  418 + 403: any;
  419 + /**
  420 + * @description
  421 + * Not Found
  422 + */
  423 + 404: any;
  424 +}
  425 +
  426 +export type PostProcureBillPageResponseSuccess =
  427 + PostProcureBillPageResponse[200];
  428 +/**
  429 + * @description
  430 + * 分页查询
  431 + * @tags 采购管理
  432 + * @produces *
  433 + * @consumes application/json
  434 + */
  435 +export const postProcureBillPage = /* #__PURE__ */ (() => {
  436 + const method = 'post';
  437 + const url = '/ProcureBill/page';
  438 + function request(
  439 + option: PostProcureBillPageOption,
  440 + ): Promise<PostProcureBillPageResponseSuccess> {
  441 + return requester(request.url, {
  442 + method: request.method,
  443 + ...option,
  444 + }) as unknown as Promise<PostProcureBillPageResponseSuccess>;
  445 + }
  446 +
  447 + /** http method */
  448 + request.method = method;
  449 + /** request url */
  450 + request.url = url;
  451 + return request;
  452 +})();
  453 +
166 /** @description request parameter type for postAdminClientAddAdminClient */ 454 /** @description request parameter type for postAdminClientAddAdminClient */
167 export interface PostAdminClientAddAdminClientOption { 455 export interface PostAdminClientAddAdminClientOption {
168 /** 456 /**
@@ -3540,7 +3828,9 @@ export interface GetErrorResponse { @@ -3540,7 +3828,9 @@ export interface GetErrorResponse {
3540 * @description 3828 * @description
3541 * OK 3829 * OK
3542 */ 3830 */
3543 - 200: ModelAndView; 3831 + 200: {
  3832 + [propertyName: string]: any;
  3833 + };
3544 /** 3834 /**
3545 * @description 3835 * @description
3546 * Unauthorized 3836 * Unauthorized
@@ -3561,9 +3851,9 @@ export interface GetErrorResponse { @@ -3561,9 +3851,9 @@ export interface GetErrorResponse {
3561 export type GetErrorResponseSuccess = GetErrorResponse[200]; 3851 export type GetErrorResponseSuccess = GetErrorResponse[200];
3562 /** 3852 /**
3563 * @description 3853 * @description
3564 - * errorHtml 3854 + * error
3565 * @tags basic-error-controller 3855 * @tags basic-error-controller
3566 - * @produces text/html 3856 + * @produces *
3567 */ 3857 */
3568 export const getError = /* #__PURE__ */ (() => { 3858 export const getError = /* #__PURE__ */ (() => {
3569 const method = 'get'; 3859 const method = 'get';
@@ -3587,7 +3877,9 @@ export interface PutErrorResponse { @@ -3587,7 +3877,9 @@ export interface PutErrorResponse {
3587 * @description 3877 * @description
3588 * OK 3878 * OK
3589 */ 3879 */
3590 - 200: ModelAndView; 3880 + 200: {
  3881 + [propertyName: string]: any;
  3882 + };
3591 /** 3883 /**
3592 * @description 3884 * @description
3593 * Created 3885 * Created
@@ -3613,9 +3905,9 @@ export interface PutErrorResponse { @@ -3613,9 +3905,9 @@ export interface PutErrorResponse {
3613 export type PutErrorResponseSuccess = PutErrorResponse[200]; 3905 export type PutErrorResponseSuccess = PutErrorResponse[200];
3614 /** 3906 /**
3615 * @description 3907 * @description
3616 - * errorHtml 3908 + * error
3617 * @tags basic-error-controller 3909 * @tags basic-error-controller
3618 - * @produces text/html 3910 + * @produces *
3619 * @consumes application/json 3911 * @consumes application/json
3620 */ 3912 */
3621 export const putError = /* #__PURE__ */ (() => { 3913 export const putError = /* #__PURE__ */ (() => {
@@ -3640,7 +3932,9 @@ export interface PostErrorResponse { @@ -3640,7 +3932,9 @@ export interface PostErrorResponse {
3640 * @description 3932 * @description
3641 * OK 3933 * OK
3642 */ 3934 */
3643 - 200: ModelAndView; 3935 + 200: {
  3936 + [propertyName: string]: any;
  3937 + };
3644 /** 3938 /**
3645 * @description 3939 * @description
3646 * Created 3940 * Created
@@ -3666,9 +3960,9 @@ export interface PostErrorResponse { @@ -3666,9 +3960,9 @@ export interface PostErrorResponse {
3666 export type PostErrorResponseSuccess = PostErrorResponse[200]; 3960 export type PostErrorResponseSuccess = PostErrorResponse[200];
3667 /** 3961 /**
3668 * @description 3962 * @description
3669 - * errorHtml 3963 + * error
3670 * @tags basic-error-controller 3964 * @tags basic-error-controller
3671 - * @produces text/html 3965 + * @produces *
3672 * @consumes application/json 3966 * @consumes application/json
3673 */ 3967 */
3674 export const postError = /* #__PURE__ */ (() => { 3968 export const postError = /* #__PURE__ */ (() => {
@@ -3693,7 +3987,9 @@ export interface DeleteErrorResponse { @@ -3693,7 +3987,9 @@ export interface DeleteErrorResponse {
3693 * @description 3987 * @description
3694 * OK 3988 * OK
3695 */ 3989 */
3696 - 200: ModelAndView; 3990 + 200: {
  3991 + [propertyName: string]: any;
  3992 + };
3697 /** 3993 /**
3698 * @description 3994 * @description
3699 * No Content 3995 * No Content
@@ -3714,9 +4010,9 @@ export interface DeleteErrorResponse { @@ -3714,9 +4010,9 @@ export interface DeleteErrorResponse {
3714 export type DeleteErrorResponseSuccess = DeleteErrorResponse[200]; 4010 export type DeleteErrorResponseSuccess = DeleteErrorResponse[200];
3715 /** 4011 /**
3716 * @description 4012 * @description
3717 - * errorHtml 4013 + * error
3718 * @tags basic-error-controller 4014 * @tags basic-error-controller
3719 - * @produces text/html 4015 + * @produces *
3720 */ 4016 */
3721 export const deleteError = /* #__PURE__ */ (() => { 4017 export const deleteError = /* #__PURE__ */ (() => {
3722 const method = 'delete'; 4018 const method = 'delete';
@@ -3740,7 +4036,9 @@ export interface OptionsErrorResponse { @@ -3740,7 +4036,9 @@ export interface OptionsErrorResponse {
3740 * @description 4036 * @description
3741 * OK 4037 * OK
3742 */ 4038 */
3743 - 200: ModelAndView; 4039 + 200: {
  4040 + [propertyName: string]: any;
  4041 + };
3744 /** 4042 /**
3745 * @description 4043 * @description
3746 * No Content 4044 * No Content
@@ -3761,9 +4059,9 @@ export interface OptionsErrorResponse { @@ -3761,9 +4059,9 @@ export interface OptionsErrorResponse {
3761 export type OptionsErrorResponseSuccess = OptionsErrorResponse[200]; 4059 export type OptionsErrorResponseSuccess = OptionsErrorResponse[200];
3762 /** 4060 /**
3763 * @description 4061 * @description
3764 - * errorHtml 4062 + * error
3765 * @tags basic-error-controller 4063 * @tags basic-error-controller
3766 - * @produces text/html 4064 + * @produces *
3767 * @consumes application/json 4065 * @consumes application/json
3768 */ 4066 */
3769 export const optionsError = /* #__PURE__ */ (() => { 4067 export const optionsError = /* #__PURE__ */ (() => {
@@ -3788,7 +4086,9 @@ export interface HeadErrorResponse { @@ -3788,7 +4086,9 @@ export interface HeadErrorResponse {
3788 * @description 4086 * @description
3789 * OK 4087 * OK
3790 */ 4088 */
3791 - 200: ModelAndView; 4089 + 200: {
  4090 + [propertyName: string]: any;
  4091 + };
3792 /** 4092 /**
3793 * @description 4093 * @description
3794 * No Content 4094 * No Content
@@ -3809,9 +4109,9 @@ export interface HeadErrorResponse { @@ -3809,9 +4109,9 @@ export interface HeadErrorResponse {
3809 export type HeadErrorResponseSuccess = HeadErrorResponse[200]; 4109 export type HeadErrorResponseSuccess = HeadErrorResponse[200];
3810 /** 4110 /**
3811 * @description 4111 * @description
3812 - * errorHtml 4112 + * error
3813 * @tags basic-error-controller 4113 * @tags basic-error-controller
3814 - * @produces text/html 4114 + * @produces *
3815 * @consumes application/json 4115 * @consumes application/json
3816 */ 4116 */
3817 export const headError = /* #__PURE__ */ (() => { 4117 export const headError = /* #__PURE__ */ (() => {
@@ -3836,7 +4136,9 @@ export interface PatchErrorResponse { @@ -3836,7 +4136,9 @@ export interface PatchErrorResponse {
3836 * @description 4136 * @description
3837 * OK 4137 * OK
3838 */ 4138 */
3839 - 200: ModelAndView; 4139 + 200: {
  4140 + [propertyName: string]: any;
  4141 + };
3840 /** 4142 /**
3841 * @description 4143 * @description
3842 * No Content 4144 * No Content
@@ -3857,9 +4159,9 @@ export interface PatchErrorResponse { @@ -3857,9 +4159,9 @@ export interface PatchErrorResponse {
3857 export type PatchErrorResponseSuccess = PatchErrorResponse[200]; 4159 export type PatchErrorResponseSuccess = PatchErrorResponse[200];
3858 /** 4160 /**
3859 * @description 4161 * @description
3860 - * errorHtml 4162 + * error
3861 * @tags basic-error-controller 4163 * @tags basic-error-controller
3862 - * @produces text/html 4164 + * @produces *
3863 * @consumes application/json 4165 * @consumes application/json
3864 */ 4166 */
3865 export const patchError = /* #__PURE__ */ (() => { 4167 export const patchError = /* #__PURE__ */ (() => {
@@ -12959,8 +13261,8 @@ export const postProcureReturnBillSend = /* #__PURE__ */ (() =&gt; { @@ -12959,8 +13261,8 @@ export const postProcureReturnBillSend = /* #__PURE__ */ (() =&gt; {
12959 return request; 13261 return request;
12960 })(); 13262 })();
12961 13263
12962 -/** @description request parameter type for postProductCollectBillAddOrModify */  
12963 -export interface PostProductCollectBillAddOrModifyOption { 13264 +/** @description request parameter type for postProductAddOrModify */
  13265 +export interface PostProductAddOrModifyOption {
12964 /** 13266 /**
12965 * @description 13267 * @description
12966 * dto 13268 * dto
@@ -12969,12 +13271,12 @@ export interface PostProductCollectBillAddOrModifyOption { @@ -12969,12 +13271,12 @@ export interface PostProductCollectBillAddOrModifyOption {
12969 /** 13271 /**
12970 @description 13272 @description
12971 dto */ 13273 dto */
12972 - dto: ProductCollectBill; 13274 + dto: Product;
12973 }; 13275 };
12974 } 13276 }
12975 13277
12976 -/** @description response type for postProductCollectBillAddOrModify */  
12977 -export interface PostProductCollectBillAddOrModifyResponse { 13278 +/** @description response type for postProductAddOrModify */
  13279 +export interface PostProductAddOrModifyResponse {
12978 /** 13280 /**
12979 * @description 13281 * @description
12980 * OK 13282 * OK
@@ -13002,8 +13304,221 @@ export interface PostProductCollectBillAddOrModifyResponse { @@ -13002,8 +13304,221 @@ export interface PostProductCollectBillAddOrModifyResponse {
13002 404: any; 13304 404: any;
13003 } 13305 }
13004 13306
13005 -export type PostProductCollectBillAddOrModifyResponseSuccess =  
13006 - PostProductCollectBillAddOrModifyResponse[200]; 13307 +export type PostProductAddOrModifyResponseSuccess =
  13308 + PostProductAddOrModifyResponse[200];
  13309 +/**
  13310 + * @description
  13311 + * 新增或修改
  13312 + * @tags 商品管理
  13313 + * @produces *
  13314 + * @consumes application/json
  13315 + */
  13316 +export const postProductAddOrModify = /* #__PURE__ */ (() => {
  13317 + const method = 'post';
  13318 + const url = '/product/addOrModify';
  13319 + function request(
  13320 + option: PostProductAddOrModifyOption,
  13321 + ): Promise<PostProductAddOrModifyResponseSuccess> {
  13322 + return requester(request.url, {
  13323 + method: request.method,
  13324 + ...option,
  13325 + }) as unknown as Promise<PostProductAddOrModifyResponseSuccess>;
  13326 + }
  13327 +
  13328 + /** http method */
  13329 + request.method = method;
  13330 + /** request url */
  13331 + request.url = url;
  13332 + return request;
  13333 +})();
  13334 +
  13335 +/** @description request parameter type for postProductDelete */
  13336 +export interface PostProductDeleteOption {
  13337 + /**
  13338 + * @description
  13339 + * id
  13340 + * @format int64
  13341 + */
  13342 + query: {
  13343 + /**
  13344 + @description
  13345 + id
  13346 + @format int64 */
  13347 + id: number;
  13348 + };
  13349 +}
  13350 +
  13351 +/** @description response type for postProductDelete */
  13352 +export interface PostProductDeleteResponse {
  13353 + /**
  13354 + * @description
  13355 + * OK
  13356 + */
  13357 + 200: ServerResult;
  13358 + /**
  13359 + * @description
  13360 + * Created
  13361 + */
  13362 + 201: any;
  13363 + /**
  13364 + * @description
  13365 + * Unauthorized
  13366 + */
  13367 + 401: any;
  13368 + /**
  13369 + * @description
  13370 + * Forbidden
  13371 + */
  13372 + 403: any;
  13373 + /**
  13374 + * @description
  13375 + * Not Found
  13376 + */
  13377 + 404: any;
  13378 +}
  13379 +
  13380 +export type PostProductDeleteResponseSuccess = PostProductDeleteResponse[200];
  13381 +/**
  13382 + * @description
  13383 + * 删除
  13384 + * @tags 商品管理
  13385 + * @produces *
  13386 + * @consumes application/json
  13387 + */
  13388 +export const postProductDelete = /* #__PURE__ */ (() => {
  13389 + const method = 'post';
  13390 + const url = '/product/delete';
  13391 + function request(
  13392 + option: PostProductDeleteOption,
  13393 + ): Promise<PostProductDeleteResponseSuccess> {
  13394 + return requester(request.url, {
  13395 + method: request.method,
  13396 + ...option,
  13397 + }) as unknown as Promise<PostProductDeleteResponseSuccess>;
  13398 + }
  13399 +
  13400 + /** http method */
  13401 + request.method = method;
  13402 + /** request url */
  13403 + request.url = url;
  13404 + return request;
  13405 +})();
  13406 +
  13407 +/** @description request parameter type for postProductPage */
  13408 +export interface PostProductPageOption {
  13409 + /**
  13410 + * @description
  13411 + * dto
  13412 + */
  13413 + body: {
  13414 + /**
  13415 + @description
  13416 + dto */
  13417 + dto: Product;
  13418 + };
  13419 +}
  13420 +
  13421 +/** @description response type for postProductPage */
  13422 +export interface PostProductPageResponse {
  13423 + /**
  13424 + * @description
  13425 + * OK
  13426 + */
  13427 + 200: ServerResult;
  13428 + /**
  13429 + * @description
  13430 + * Created
  13431 + */
  13432 + 201: any;
  13433 + /**
  13434 + * @description
  13435 + * Unauthorized
  13436 + */
  13437 + 401: any;
  13438 + /**
  13439 + * @description
  13440 + * Forbidden
  13441 + */
  13442 + 403: any;
  13443 + /**
  13444 + * @description
  13445 + * Not Found
  13446 + */
  13447 + 404: any;
  13448 +}
  13449 +
  13450 +export type PostProductPageResponseSuccess = PostProductPageResponse[200];
  13451 +/**
  13452 + * @description
  13453 + * 分页查询
  13454 + * @tags 商品管理
  13455 + * @produces *
  13456 + * @consumes application/json
  13457 + */
  13458 +export const postProductPage = /* #__PURE__ */ (() => {
  13459 + const method = 'post';
  13460 + const url = '/product/page';
  13461 + function request(
  13462 + option: PostProductPageOption,
  13463 + ): Promise<PostProductPageResponseSuccess> {
  13464 + return requester(request.url, {
  13465 + method: request.method,
  13466 + ...option,
  13467 + }) as unknown as Promise<PostProductPageResponseSuccess>;
  13468 + }
  13469 +
  13470 + /** http method */
  13471 + request.method = method;
  13472 + /** request url */
  13473 + request.url = url;
  13474 + return request;
  13475 +})();
  13476 +
  13477 +/** @description request parameter type for postProductCollectBillAddOrModify */
  13478 +export interface PostProductCollectBillAddOrModifyOption {
  13479 + /**
  13480 + * @description
  13481 + * dto
  13482 + */
  13483 + body: {
  13484 + /**
  13485 + @description
  13486 + dto */
  13487 + dto: ProductCollectBill;
  13488 + };
  13489 +}
  13490 +
  13491 +/** @description response type for postProductCollectBillAddOrModify */
  13492 +export interface PostProductCollectBillAddOrModifyResponse {
  13493 + /**
  13494 + * @description
  13495 + * OK
  13496 + */
  13497 + 200: ServerResult;
  13498 + /**
  13499 + * @description
  13500 + * Created
  13501 + */
  13502 + 201: any;
  13503 + /**
  13504 + * @description
  13505 + * Unauthorized
  13506 + */
  13507 + 401: any;
  13508 + /**
  13509 + * @description
  13510 + * Forbidden
  13511 + */
  13512 + 403: any;
  13513 + /**
  13514 + * @description
  13515 + * Not Found
  13516 + */
  13517 + 404: any;
  13518 +}
  13519 +
  13520 +export type PostProductCollectBillAddOrModifyResponseSuccess =
  13521 + PostProductCollectBillAddOrModifyResponse[200];
13007 /** 13522 /**
13008 * @description 13523 * @description
13009 * 新增或修改 13524 * 新增或修改
@@ -15808,6 +16323,60 @@ export const postServiceConstPlatformType = /* #__PURE__ */ (() =&gt; { @@ -15808,6 +16323,60 @@ export const postServiceConstPlatformType = /* #__PURE__ */ (() =&gt; {
15808 return request; 16323 return request;
15809 })(); 16324 })();
15810 16325
  16326 +/** @description response type for postServiceConstProcureBillAuditStatus */
  16327 +export interface PostServiceConstProcureBillAuditStatusResponse {
  16328 + /**
  16329 + * @description
  16330 + * OK
  16331 + */
  16332 + 200: ServerResult;
  16333 + /**
  16334 + * @description
  16335 + * Created
  16336 + */
  16337 + 201: any;
  16338 + /**
  16339 + * @description
  16340 + * Unauthorized
  16341 + */
  16342 + 401: any;
  16343 + /**
  16344 + * @description
  16345 + * Forbidden
  16346 + */
  16347 + 403: any;
  16348 + /**
  16349 + * @description
  16350 + * Not Found
  16351 + */
  16352 + 404: any;
  16353 +}
  16354 +
  16355 +export type PostServiceConstProcureBillAuditStatusResponseSuccess =
  16356 + PostServiceConstProcureBillAuditStatusResponse[200];
  16357 +/**
  16358 + * @description
  16359 + * 采购单审核状态
  16360 + * @tags front-const-controller
  16361 + * @produces *
  16362 + * @consumes application/json
  16363 + */
  16364 +export const postServiceConstProcureBillAuditStatus = /* #__PURE__ */ (() => {
  16365 + const method = 'post';
  16366 + const url = '/service/const/procureBillAuditStatus';
  16367 + function request(): Promise<PostServiceConstProcureBillAuditStatusResponseSuccess> {
  16368 + return requester(request.url, {
  16369 + method: request.method,
  16370 + }) as unknown as Promise<PostServiceConstProcureBillAuditStatusResponseSuccess>;
  16371 + }
  16372 +
  16373 + /** http method */
  16374 + request.method = method;
  16375 + /** request url */
  16376 + request.url = url;
  16377 + return request;
  16378 +})();
  16379 +
15811 /** @description response type for postServiceConstProcureReturnBills */ 16380 /** @description response type for postServiceConstProcureReturnBills */
15812 export interface PostServiceConstProcureReturnBillsResponse { 16381 export interface PostServiceConstProcureReturnBillsResponse {
15813 /** 16382 /**
@@ -15916,6 +16485,60 @@ export const postServiceConstProductCollectBillStatus = /* #__PURE__ */ (() =&gt; { @@ -15916,6 +16485,60 @@ export const postServiceConstProductCollectBillStatus = /* #__PURE__ */ (() =&gt; {
15916 return request; 16485 return request;
15917 })(); 16486 })();
15918 16487
  16488 +/** @description response type for postServiceConstProducts */
  16489 +export interface PostServiceConstProductsResponse {
  16490 + /**
  16491 + * @description
  16492 + * OK
  16493 + */
  16494 + 200: ServerResult;
  16495 + /**
  16496 + * @description
  16497 + * Created
  16498 + */
  16499 + 201: any;
  16500 + /**
  16501 + * @description
  16502 + * Unauthorized
  16503 + */
  16504 + 401: any;
  16505 + /**
  16506 + * @description
  16507 + * Forbidden
  16508 + */
  16509 + 403: any;
  16510 + /**
  16511 + * @description
  16512 + * Not Found
  16513 + */
  16514 + 404: any;
  16515 +}
  16516 +
  16517 +export type PostServiceConstProductsResponseSuccess =
  16518 + PostServiceConstProductsResponse[200];
  16519 +/**
  16520 + * @description
  16521 + * 商品列表
  16522 + * @tags front-const-controller
  16523 + * @produces *
  16524 + * @consumes application/json
  16525 + */
  16526 +export const postServiceConstProducts = /* #__PURE__ */ (() => {
  16527 + const method = 'post';
  16528 + const url = '/service/const/products';
  16529 + function request(): Promise<PostServiceConstProductsResponseSuccess> {
  16530 + return requester(request.url, {
  16531 + method: request.method,
  16532 + }) as unknown as Promise<PostServiceConstProductsResponseSuccess>;
  16533 + }
  16534 +
  16535 + /** http method */
  16536 + request.method = method;
  16537 + /** request url */
  16538 + request.url = url;
  16539 + return request;
  16540 +})();
  16541 +
15919 /** @description response type for postServiceConstStores */ 16542 /** @description response type for postServiceConstStores */
15920 export interface PostServiceConstStoresResponse { 16543 export interface PostServiceConstStoresResponse {
15921 /** 16544 /**
@@ -16030,6 +16653,12 @@ export interface GetServiceInvoiceListInvoiceProjectOption { @@ -16030,6 +16653,12 @@ export interface GetServiceInvoiceListInvoiceProjectOption {
16030 createByName?: string; 16653 createByName?: string;
16031 createByNameLike?: string; 16654 createByNameLike?: string;
16032 /** 16655 /**
  16656 + @format date-time */
  16657 + createTimeGe?: string;
  16658 + /**
  16659 + @format date-time */
  16660 + createTimeLe?: string;
  16661 + /**
16033 @format int32 */ 16662 @format int32 */
16034 current?: number; 16663 current?: number;
16035 /** 16664 /**