Commit 631ce1227a12dba57490921bbaec92b8a29535b2

Authored by 曾国涛
1 parent 6714814c

feat(Order): 添加锁单提醒功能并优化订单相关页面

- 在 Order 页面添加锁单提醒功能,展示锁单订单列表
-优化订单列表页面,增加到期时间等字段
- 更新发票相关页面,调整开票时间参数处理- 重构部分组件以支持新功能
.umirc.ts
... ... @@ -101,6 +101,13 @@ export default defineConfig({
101 101 component: './Invoice/Invoice',
102 102 },
103 103 {
  104 + name: '待红冲发票',
  105 + path: 'waitFlushInvoice',
  106 + icon: 'BookOutlined',
  107 + access: 'canReadAdminAndFinanceAndSales',
  108 + component: './Invoice/waitFlushInvoice',
  109 + },
  110 + {
104 111 name: '银行流水',
105 112 path: 'invoiceVerification',
106 113 icon: 'BookOutlined',
... ...
src/pages/Invoice/Invoice/index.tsx
... ... @@ -312,7 +312,15 @@ const InvoiceRecord = () => {
312 312 '/api/service/invoice/exportInvoices',
313 313 '发票.xlsx',
314 314 'POST',
315   - values,
  315 + {
  316 + ...values,
  317 + invoicingBeginTime: values?.invoicingTime
  318 + ? values?.invoicingTime[0]
  319 + : null,
  320 + invoicingEndTime: values?.invoicingTime
  321 + ? values?.invoicingTime[1]
  322 + : null,
  323 + },
316 324 () => {
317 325 messageApi.destroy();
318 326 },
... ...
src/pages/Invoice/InvoiceRecord/index.tsx
... ... @@ -426,8 +426,13 @@ const InvoiceRecord = () => {
426 426 <Button
427 427 key="out"
428 428 onClick={() => {
429   - const values = searchConfig?.form?.getFieldsValue();
430   - console.log(values);
  429 + const searchParams = searchConfig?.form?.getFieldsValue();
  430 + const values = {
  431 + ...searchConfig?.form?.getFieldsValue(),
  432 + invoicingDateGe: searchParams.invoicingDate[0],
  433 + invoicingDateLe: searchParams.invoicingDate[1],
  434 + };
  435 + console.log(searchConfig);
431 436 messageApi.open({
432 437 type: 'loading',
433 438 content: '正在导出文件...',
... ...
src/pages/Invoice/constant.tsx
... ... @@ -189,6 +189,7 @@ export const INVOICE_COLUMNS = [
189 189 {
190 190 title: '开票日期',
191 191 valueType: 'dateRange',
  192 + dataIndex: 'invoicingTime',
192 193 width: 150,
193 194 hideInTable: true,
194 195 search: {
... ...
src/pages/Invoice/waitFlushInvoice/index.tsx 0 → 100644
  1 +import { RESPONSE_CODE } from '@/constants/enum';
  2 +import BankImportModal from '@/pages/Invoice/Invoice/components/BankImportModal';
  3 +import InvoiceVerificationModal from '@/pages/Invoice/Invoice/components/InvoiceVerificationModal';
  4 +import { PAYEE_OPTIONS } from '@/pages/Order/constant';
  5 +import {
  6 + postServiceInvoiceDeleteInvoice,
  7 + postServiceInvoiceModify,
  8 + postServiceInvoiceQueryInvoice,
  9 +} from '@/services';
  10 +import { downloadFile } from '@/services/order';
  11 +import { enumToProTableEnumValue, getUserInfo } from '@/utils';
  12 +import { ActionType, ProTable } from '@ant-design/pro-components';
  13 +import { Button, Popconfirm, Space, Table, message } from 'antd';
  14 +import { useRef, useState } from 'react';
  15 +
  16 +const InvoiceRecord = () => {
  17 + const invoiceActionRef = useRef<ActionType>();
  18 + const [bankImportModalVisible, setBankImportModalVisible] = useState(false);
  19 + const [invoiceVerificationVisible, setInvoiceVerificationVisible] =
  20 + useState(false);
  21 + const [invoiceId, setInvoiceId] = useState(undefined);
  22 + const [setPerms] = useState([]);
  23 + const [messageApi, contextHolder] = message.useMessage();
  24 + const reloadInvoiceTable = () => {
  25 + invoiceActionRef.current?.reload();
  26 + };
  27 + const userInfo = getUserInfo();
  28 +
  29 + return (
  30 + <div className="invoice-index">
  31 + <ProTable
  32 + columns={[
  33 + {
  34 + dataIndex: 'invoiceId',
  35 + title: 'id',
  36 + valueType: 'text',
  37 + hideInTable: true,
  38 + hideInSearch: true,
  39 + readonly: true,
  40 + width: 100,
  41 + },
  42 + {
  43 + dataIndex: 'invoiceNumber',
  44 + title: '发票号码',
  45 + valueType: 'text',
  46 + width: 180,
  47 + },
  48 + {
  49 + dataIndex: 'mainOrderId',
  50 + title: '订单编号',
  51 + valueType: 'text',
  52 + width: 160,
  53 + hideInTable: true,
  54 + },
  55 + {
  56 + dataIndex: 'invoiceStatusText',
  57 + title: '开票类型',
  58 + hideInSearch: true,
  59 + valueType: 'text',
  60 + width: 100,
  61 + },
  62 + {
  63 + dataIndex: 'invoiceStatus',
  64 + title: '发票类型',
  65 + valueType: 'select',
  66 + hideInTable: true,
  67 + width: 100,
  68 + valueEnum: enumToProTableEnumValue({
  69 + SPECIALLY_INVOICED: '专票',
  70 + COMMON_INVOICED: '普票',
  71 + }),
  72 + },
  73 + {
  74 + title: '金额',
  75 + dataIndex: 'money',
  76 + hideInTable: false,
  77 + hideInSearch: true,
  78 + valueType: 'money',
  79 + width: 180,
  80 + },
  81 + {
  82 + title: '购买方',
  83 + dataIndex: 'purchaser',
  84 + valueType: 'text',
  85 + width: 200,
  86 + },
  87 + {
  88 + title: '购方税号',
  89 + dataIndex: 'partyATaxid',
  90 + hideInSearch: true,
  91 + valueType: 'text',
  92 + width: 180,
  93 + },
  94 + {
  95 + title: '联系人',
  96 + dataIndex: 'contacts',
  97 + valueType: 'text',
  98 + width: 100,
  99 + },
  100 + {
  101 + title: '收款单位',
  102 + dataIndex: 'payee',
  103 + valueType: 'text',
  104 + width: 200,
  105 + valueEnum: enumToProTableEnumValue(PAYEE_OPTIONS),
  106 + },
  107 + {
  108 + title: '开票日期',
  109 + dataIndex: 'invoicingTime',
  110 + valueType: 'date',
  111 + width: 150,
  112 + hideInSearch: true,
  113 + },
  114 + {
  115 + title: '申请人',
  116 + dataIndex: 'createByName',
  117 + valueType: 'text',
  118 + width: 100,
  119 + },
  120 + {
  121 + title: '操作',
  122 + valueType: 'option',
  123 + key: 'option',
  124 + fixed: 'right',
  125 + width: 160,
  126 + render: ({ record }) => {
  127 + let btns = [];
  128 + if (record.paths?.includes('queryInvoiceDetails')) {
  129 + btns.push(
  130 + <Button
  131 + className="p-0"
  132 + key="view"
  133 + type="link"
  134 + onClick={() => {
  135 + setInvoiceVerificationVisible(true);
  136 + setInvoiceId(record.id);
  137 + }}
  138 + >
  139 + 查看
  140 + </Button>,
  141 + );
  142 + }
  143 + if (record.paths?.includes('deleteInvoice')) {
  144 + btns.push(
  145 + <Popconfirm
  146 + key="delete"
  147 + title={'冲红'}
  148 + description={
  149 + '确认冲红发票号码为[ ' +
  150 + record.invoiceNumber +
  151 + ' ]的发票吗?'
  152 + }
  153 + onConfirm={async () => {
  154 + let res = await postServiceInvoiceDeleteInvoice({
  155 + data: { invoiceIds: [record.id] },
  156 + });
  157 + if (res) {
  158 + message.success(res.message);
  159 + reloadInvoiceTable();
  160 + }
  161 + }}
  162 + okText="确认"
  163 + cancelText="取消"
  164 + >
  165 + <Button type={'link'} danger>
  166 + 删除
  167 + </Button>
  168 + </Popconfirm>,
  169 + );
  170 + }
  171 + return btns;
  172 + },
  173 + },
  174 + ]}
  175 + actionRef={invoiceActionRef}
  176 + cardBordered
  177 + pagination={{
  178 + pageSizeOptions: ['10', '20', '50', '100'],
  179 + }}
  180 + rowSelection={{
  181 + // 自定义选择项参考: https://ant.design/components/table-cn/#components-table-demo-row-selection-custom
  182 + // 注释该行则默认不显示下拉选项
  183 + selections: [Table.SELECTION_ALL, Table.SELECTION_INVERT],
  184 + alwaysShowAlert: true,
  185 + }}
  186 + tableAlertRender={({ selectedRowKeys, onCleanSelected }) => {
  187 + return (
  188 + <Space size={24}>
  189 + <span>
  190 + 已选 {selectedRowKeys.length} 项
  191 + <a style={{ marginInlineStart: 8 }} onClick={onCleanSelected}>
  192 + 取消选择
  193 + </a>
  194 + </span>
  195 + </Space>
  196 + );
  197 + }}
  198 + tableAlertOptionRender={({ selectedRowKeys, onCleanSelected }) => {
  199 + console.log('selected' + JSON.stringify(selectedRowKeys));
  200 + return (
  201 + <>
  202 + {(userInfo.roles?.includes('ADMIN') ||
  203 + userInfo.roles?.includes('FINANCE')) && (
  204 + <Space size={16}>
  205 + <Popconfirm
  206 + title="确定要冲红选中的订单吗?"
  207 + onConfirm={async () => {
  208 + const res = await postServiceInvoiceDeleteInvoice({
  209 + data: { invoiceIds: selectedRowKeys },
  210 + });
  211 + if (res.result === RESPONSE_CODE.SUCCESS) {
  212 + message.success('成功');
  213 + }
  214 + invoiceActionRef.current?.reload();
  215 + onCleanSelected();
  216 + }}
  217 + okText="确定"
  218 + cancelText="取消"
  219 + >
  220 + <Button type="primary" danger>
  221 + 批量冲红
  222 + </Button>
  223 + </Popconfirm>
  224 + </Space>
  225 + )}
  226 + </>
  227 + );
  228 + }}
  229 + request={async (params) => {
  230 + const res = await postServiceInvoiceQueryInvoice({
  231 + data: {
  232 + afterInvoicingStatus: 'WAIT_FLUSH',
  233 + ...params,
  234 + },
  235 + });
  236 + if (res) {
  237 + setPerms(res?.data?.specialPath);
  238 + return {
  239 + data: res?.data?.data || [],
  240 + total: res?.data?.total || 0,
  241 + };
  242 + }
  243 + }}
  244 + columnsState={{
  245 + persistenceKey: 'pro-table-singe-demos',
  246 + persistenceType: 'localStorage',
  247 + defaultValue: {
  248 + option: { fixed: 'right', disable: true },
  249 + },
  250 + onChange(value) {
  251 + console.log('value: ', value);
  252 + },
  253 + }}
  254 + editable={{
  255 + type: 'multiple',
  256 + onSave: async (key, row, originRow) => {
  257 + console.log('row: ', row);
  258 + console.log('originRow: ', originRow);
  259 + postServiceInvoiceModify({
  260 + data: row,
  261 + });
  262 + },
  263 + }}
  264 + rowKey="id"
  265 + search={{
  266 + labelWidth: 'auto',
  267 + optionRender: (searchConfig, formProps, dom) => [
  268 + ...dom.reverse(),
  269 + <Button
  270 + key="out"
  271 + onClick={() => {
  272 + const values = searchConfig?.form?.getFieldsValue();
  273 + messageApi.open({
  274 + type: 'loading',
  275 + content: '导出中...',
  276 + duration: 0,
  277 + });
  278 + downloadFile(
  279 + '/api/service/invoice/exportInvoices',
  280 + '发票.xlsx',
  281 + 'POST',
  282 + {
  283 + ...values,
  284 + invoicingBeginTime: values.invoicingTime[0],
  285 + invoicingEndTime: values.invoicingTime[1],
  286 + },
  287 + () => {
  288 + messageApi.destroy();
  289 + },
  290 + );
  291 + }}
  292 + >
  293 + 导出
  294 + </Button>,
  295 + ],
  296 + }}
  297 + options={{
  298 + setting: {
  299 + listsHeight: 400,
  300 + },
  301 + }}
  302 + form={{}}
  303 + dateFormatter="string"
  304 + headerTitle="发票列表"
  305 + scroll={{ x: 1400, y: 360 }}
  306 + />
  307 +
  308 + {bankImportModalVisible ? (
  309 + <BankImportModal
  310 + setVisible={setBankImportModalVisible}
  311 + onClose={() => {
  312 + setBankImportModalVisible(false);
  313 + invoiceActionRef.current?.reload();
  314 + }}
  315 + ></BankImportModal>
  316 + ) : (
  317 + ''
  318 + )}
  319 +
  320 + {invoiceVerificationVisible ? (
  321 + <InvoiceVerificationModal
  322 + setVisible={setInvoiceVerificationVisible}
  323 + invoiceId={invoiceId}
  324 + onClose={() => {
  325 + invoiceActionRef.current?.reload();
  326 + }}
  327 + ></InvoiceVerificationModal>
  328 + ) : (
  329 + ''
  330 + )}
  331 + {contextHolder}
  332 + </div>
  333 + );
  334 +};
  335 +
  336 +export default InvoiceRecord;
... ...
src/pages/Order/Order/index.tsx
1 1 import {
2 2 postServiceOrderDeliverStatistics,
  3 + postServiceOrderQueryLockOrders,
3 4 postServiceOrderWarningOrderStatistics,
4 5 } from '@/services';
5 6 import { getUserInfo } from '@/utils/user';
... ... @@ -9,6 +10,7 @@ import { useEffect, useState } from &#39;react&#39;;
9 10 import OrderList from '../OrderList/OrderList';
10 11 import './index.less';
11 12 // import { useNavigate } from 'react-router-dom';
  13 +import { ProCard, ProTable } from '@ant-design/pro-components';
12 14 import { history } from '@umijs/max';
13 15 // import { format } from 'fecha';
14 16  
... ... @@ -102,6 +104,16 @@ const OrderPage = () =&gt; {
102 104 // location.href = '/order/OrderWarning';
103 105 // history.pushState(null, '', '/order/OrderWarning');
104 106 };
  107 + const navigateToOrderList = () => {
  108 + setOpen(false);
  109 + setDeliveryOpen(false);
  110 + // history.push('/order/OrderWarning');
  111 + // window.location.replace = '/order/OrderWarning';
  112 + // navigate('/order/OrderWarning');
  113 + history.push('/order/order');
  114 + // location.href = '/order/OrderWarning';
  115 + // history.pushState(null, '', '/order/OrderWarning');
  116 + };
105 117 return (
106 118 <div className="order-page-container">
107 119 <div id="resizeDiv"></div>
... ... @@ -123,324 +135,410 @@ const OrderPage = () =&gt; {
123 135 </Button>,
124 136 ]}
125 137 >
126   - <Row
127   - gutter={16}
128   - justify="space-between" // Aligns Cols to the start and end
129   - align="middle" // Vertically center contents
  138 + <ProCard
  139 + tabs={{
  140 + type: 'card',
  141 + }}
130 142 >
131   - {/* 新增卡片1: 待确认收货订单 */}
132   - <Col span={4}>
133   - {' '}
134   - {/* 修改位置:将 span 改为 6,以保证一行四个卡片 */}
135   - <div
136   - style={{
137   - display: 'flex',
138   - justifyContent: 'center',
139   - marginTop: '20px',
140   - }}
  143 + <ProCard.TabPane key="tab1" tab="订单预警">
  144 + <Row
  145 + gutter={16}
  146 + justify="space-between" // Aligns Cols to the start and end
  147 + align="middle" // Vertically center contents
141 148 >
142   - <Card
143   - bordered={true}
144   - style={{
145   - backgroundColor: '#f0f0f0', // 背景颜色
146   - width: '200px', // 卡片宽度
147   - height: '200px', // 卡片高度
148   - display: 'flex',
149   - alignItems: 'center',
150   - justifyContent: 'center',
151   - }}
152   - >
  149 + {/* 新增卡片1: 待确认收货订单 */}
  150 + <Col span={4}>
  151 + {' '}
  152 + {/* 修改位置:将 span 改为 6,以保证一行四个卡片 */}
153 153 <div
154 154 style={{
155   - fontWeight: 'bold', // 字体加粗
156   - color: 'black', // 字体颜色
157   - fontSize: '18px', // 字体大小
  155 + display: 'flex',
  156 + justifyContent: 'center',
  157 + marginTop: '20px',
158 158 }}
159 159 >
160   - <div
  160 + <Card
  161 + bordered={true}
161 162 style={{
162   - fontWeight: 'bold', // 字体加粗
163   - color: 'black', // 字体颜色
164   - fontSize: '40px', // 字体大小
165   - justifyContent: 'center',
  163 + backgroundColor: '#f0f0f0', // 背景颜色
  164 + width: '200px', // 卡片宽度
  165 + height: '200px', // 卡片高度
166 166 display: 'flex',
167 167 alignItems: 'center',
168   - marginBottom: '20px',
  168 + justifyContent: 'center',
169 169 }}
170 170 >
171   - {invoiceRefundWarningNum}
172   - </div>
173   - 待确认收货订单
  171 + <div
  172 + style={{
  173 + fontWeight: 'bold', // 字体加粗
  174 + color: 'black', // 字体颜色
  175 + fontSize: '18px', // 字体大小
  176 + }}
  177 + >
  178 + <div
  179 + style={{
  180 + fontWeight: 'bold', // 字体加粗
  181 + color: 'black', // 字体颜色
  182 + fontSize: '40px', // 字体大小
  183 + justifyContent: 'center',
  184 + display: 'flex',
  185 + alignItems: 'center',
  186 + marginBottom: '20px',
  187 + }}
  188 + >
  189 + {invoiceRefundWarningNum}
  190 + </div>
  191 + 待确认收货订单
  192 + </div>
  193 + </Card>
174 194 </div>
175   - </Card>
176   - </div>
177   - </Col>
  195 + </Col>
178 196  
179   - {/* 新增卡片1: 待确认收货订单 */}
180   - <Col span={4}>
181   - {' '}
182   - {/* 修改位置:将 span 改为 6,以保证一行四个卡片 */}
183   - <div
184   - style={{
185   - display: 'flex',
186   - justifyContent: 'center',
187   - marginTop: '20px',
188   - }}
189   - >
190   - <Card
191   - bordered={true}
192   - style={{
193   - backgroundColor: '#f0f0f0', // 背景颜色
194   - width: '200px', // 卡片宽度
195   - height: '200px', // 卡片高度
196   - display: 'flex',
197   - alignItems: 'center',
198   - justifyContent: 'center',
199   - }}
200   - >
  197 + {/* 新增卡片1: 待确认收货订单 */}
  198 + <Col span={4}>
  199 + {' '}
  200 + {/* 修改位置:将 span 改为 6,以保证一行四个卡片 */}
201 201 <div
202 202 style={{
203   - fontWeight: 'bold', // 字体加粗
204   - color: 'black', // 字体颜色
205   - fontSize: '18px', // 字体大小
  203 + display: 'flex',
  204 + justifyContent: 'center',
  205 + marginTop: '20px',
206 206 }}
207 207 >
208   - <div
  208 + <Card
  209 + bordered={true}
209 210 style={{
210   - fontWeight: 'bold', // 字体加粗
211   - color: 'black', // 字体颜色
212   - fontSize: '40px', // 字体大小
213   - justifyContent: 'center',
  211 + backgroundColor: '#f0f0f0', // 背景颜色
  212 + width: '200px', // 卡片宽度
  213 + height: '200px', // 卡片高度
214 214 display: 'flex',
215 215 alignItems: 'center',
216   - marginBottom: '20px',
  216 + justifyContent: 'center',
217 217 }}
218 218 >
219   - {invoiceCreateWarningNum}
220   - </div>
221   - 待开票订单
  219 + <div
  220 + style={{
  221 + fontWeight: 'bold', // 字体加粗
  222 + color: 'black', // 字体颜色
  223 + fontSize: '18px', // 字体大小
  224 + }}
  225 + >
  226 + <div
  227 + style={{
  228 + fontWeight: 'bold', // 字体加粗
  229 + color: 'black', // 字体颜色
  230 + fontSize: '40px', // 字体大小
  231 + justifyContent: 'center',
  232 + display: 'flex',
  233 + alignItems: 'center',
  234 + marginBottom: '20px',
  235 + }}
  236 + >
  237 + {invoiceCreateWarningNum}
  238 + </div>
  239 + 待开票订单
  240 + </div>
  241 + </Card>
222 242 </div>
223   - </Card>
224   - </div>
225   - </Col>
  243 + </Col>
226 244  
227   - {/* 新增卡片2: 待回访登记订单 */}
228   - <Col span={4}>
229   - {' '}
230   - {/* 修改位置:将 span 改为 6,以保证一行四个卡片 */}
231   - <div
232   - style={{
233   - display: 'flex',
234   - justifyContent: 'center',
235   - marginTop: '20px',
236   - }}
237   - >
238   - <Card
239   - bordered={true}
240   - style={{
241   - backgroundColor: '#f0f0f0', // 背景颜色
242   - width: '200px', // 卡片宽度
243   - height: '200px', // 卡片高度
244   - display: 'flex',
245   - alignItems: 'center',
246   - justifyContent: 'center',
247   - }}
248   - >
  245 + {/* 新增卡片2: 待回访登记订单 */}
  246 + <Col span={4}>
  247 + {' '}
  248 + {/* 修改位置:将 span 改为 6,以保证一行四个卡片 */}
249 249 <div
250 250 style={{
251   - fontWeight: 'bold', // 字体加粗
252   - color: 'black', // 字体颜色
253   - fontSize: '18px', // 字体大小
  251 + display: 'flex',
  252 + justifyContent: 'center',
  253 + marginTop: '20px',
254 254 }}
255 255 >
256   - <div
  256 + <Card
  257 + bordered={true}
257 258 style={{
258   - fontWeight: 'bold', // 字体加粗
259   - color: 'black', // 字体颜色
260   - fontSize: '40px', // 字体大小
261   - justifyContent: 'center',
  259 + backgroundColor: '#f0f0f0', // 背景颜色
  260 + width: '200px', // 卡片宽度
  261 + height: '200px', // 卡片高度
262 262 display: 'flex',
263 263 alignItems: 'center',
264   - marginBottom: '20px',
  264 + justifyContent: 'center',
265 265 }}
266 266 >
267   - {waitFeedback}
268   - </div>
269   - 待回访登记订单
  267 + <div
  268 + style={{
  269 + fontWeight: 'bold', // 字体加粗
  270 + color: 'black', // 字体颜色
  271 + fontSize: '18px', // 字体大小
  272 + }}
  273 + >
  274 + <div
  275 + style={{
  276 + fontWeight: 'bold', // 字体加粗
  277 + color: 'black', // 字体颜色
  278 + fontSize: '40px', // 字体大小
  279 + justifyContent: 'center',
  280 + display: 'flex',
  281 + alignItems: 'center',
  282 + marginBottom: '20px',
  283 + }}
  284 + >
  285 + {waitFeedback}
  286 + </div>
  287 + 待回访登记订单
  288 + </div>
  289 + </Card>
270 290 </div>
271   - </Card>
272   - </div>
273   - </Col>
  291 + </Col>
274 292  
275   - {/* 现有卡片: 发票待确认订单 */}
276   - <Col span={4}>
277   - {' '}
278   - {/* 修改位置:将 span 改为 6,以保证一行四个卡片 */}
279   - <div
280   - style={{
281   - display: 'flex',
282   - justifyContent: 'center',
283   - marginTop: '20px',
284   - }}
285   - >
286   - <Card
287   - bordered={true}
288   - style={{
289   - backgroundColor: '#f0f0f0', // 背景颜色
290   - width: '200px', // 卡片宽度
291   - height: '200px', // 卡片高度
292   - display: 'flex',
293   - alignItems: 'center',
294   - justifyContent: 'center',
295   - }}
296   - >
  293 + {/* 现有卡片: 发票待确认订单 */}
  294 + <Col span={4}>
  295 + {' '}
  296 + {/* 修改位置:将 span 改为 6,以保证一行四个卡片 */}
297 297 <div
298 298 style={{
299   - fontWeight: 'bold', // 字体加粗
300   - color: 'black', // 字体颜色
301   - fontSize: '18px', // 字体大小
  299 + display: 'flex',
  300 + justifyContent: 'center',
  301 + marginTop: '20px',
302 302 }}
303 303 >
304   - <div
  304 + <Card
  305 + bordered={true}
305 306 style={{
306   - fontWeight: 'bold', // 字体加粗
307   - color: 'black', // 字体颜色
308   - fontSize: '40px', // 字体大小
309   - justifyContent: 'center',
  307 + backgroundColor: '#f0f0f0', // 背景颜色
  308 + width: '200px', // 卡片宽度
  309 + height: '200px', // 卡片高度
310 310 display: 'flex',
311 311 alignItems: 'center',
312   - marginBottom: '20px',
  312 + justifyContent: 'center',
313 313 }}
314 314 >
315   - {invoiceWarningNum}
316   - </div>
317   - 待确认发票订单
  315 + <div
  316 + style={{
  317 + fontWeight: 'bold', // 字体加粗
  318 + color: 'black', // 字体颜色
  319 + fontSize: '18px', // 字体大小
  320 + }}
  321 + >
  322 + <div
  323 + style={{
  324 + fontWeight: 'bold', // 字体加粗
  325 + color: 'black', // 字体颜色
  326 + fontSize: '40px', // 字体大小
  327 + justifyContent: 'center',
  328 + display: 'flex',
  329 + alignItems: 'center',
  330 + marginBottom: '20px',
  331 + }}
  332 + >
  333 + {invoiceWarningNum}
  334 + </div>
  335 + 待确认发票订单
  336 + </div>
  337 + </Card>
318 338 </div>
319   - </Card>
320   - </div>
321   - </Col>
  339 + </Col>
322 340  
323   - {/* 现有卡片: 回款待确认订单 */}
324   - <Col span={4}>
325   - {' '}
326   - {/* 修改位置:将 span 改为 6,以保证一行四个卡片 */}
327   - <div
328   - style={{
329   - display: 'flex',
330   - justifyContent: 'center',
331   - marginTop: '20px',
332   - }}
333   - >
334   - <Card
335   - bordered={true}
336   - style={{
337   - backgroundColor: '#f0f0f0', // 背景颜色
338   - width: '200px', // 卡片宽度
339   - height: '200px', // 卡片高度
340   - display: 'flex',
341   - alignItems: 'center',
342   - justifyContent: 'center',
343   - }}
344   - >
  341 + {/* 现有卡片: 回款待确认订单 */}
  342 + <Col span={4}>
  343 + {' '}
  344 + {/* 修改位置:将 span 改为 6,以保证一行四个卡片 */}
345 345 <div
346 346 style={{
347   - fontWeight: 'bold', // 字体加粗
348   - color: 'black', // 字体颜色
349   - fontSize: '18px', // 字体大小
  347 + display: 'flex',
  348 + justifyContent: 'center',
  349 + marginTop: '20px',
350 350 }}
351 351 >
352   - <div
  352 + <Card
  353 + bordered={true}
353 354 style={{
354   - fontWeight: 'bold', // 字体加粗
355   - color: 'black', // 字体颜色
356   - fontSize: '40px', // 字体大小
357   - justifyContent: 'center',
  355 + backgroundColor: '#f0f0f0', // 背景颜色
  356 + width: '200px', // 卡片宽度
  357 + height: '200px', // 卡片高度
358 358 display: 'flex',
359 359 alignItems: 'center',
360   - marginBottom: '20px',
  360 + justifyContent: 'center',
361 361 }}
362 362 >
363   - {waitConfirmPayment}
364   - </div>
365   - 待回款订单
  363 + <div
  364 + style={{
  365 + fontWeight: 'bold', // 字体加粗
  366 + color: 'black', // 字体颜色
  367 + fontSize: '18px', // 字体大小
  368 + }}
  369 + >
  370 + <div
  371 + style={{
  372 + fontWeight: 'bold', // 字体加粗
  373 + color: 'black', // 字体颜色
  374 + fontSize: '40px', // 字体大小
  375 + justifyContent: 'center',
  376 + display: 'flex',
  377 + alignItems: 'center',
  378 + marginBottom: '20px',
  379 + }}
  380 + >
  381 + {waitConfirmPayment}
  382 + </div>
  383 + 待回款订单
  384 + </div>
  385 + </Card>
366 386 </div>
367   - </Card>
368   - </div>
369   - </Col>
370   - </Row>
  387 + </Col>
  388 + </Row>
371 389  
372   - <div>
373   - <p
374   - style={{
375   - color: 'red',
376   - paddingLeft: '20px',
377   - paddingRight: '20px',
378   - marginTop: '10px',
379   - }}
380   - >
381   - 预警说明:
382   - </p>
383   - <div
384   - style={{
385   - marginLeft: '20px',
386   - marginRight: '20px',
387   - marginBottom: '20px',
388   - }}
389   - >
390   - <span style={{ color: 'red' }}>确认收货预警:</span>
391   - <span>
392   - 从发货之日起计算,国内超过7天(海外30天)未【确认收货】,将进行确认收货预警提醒,超过10天(海外60天)未确认收货将锁单,并且每次登录都会提醒
393   - </span>
394   - </div>
395   - <div
396   - style={{
397   - marginLeft: '20px',
398   - marginRight: '20px',
399   - marginBottom: '20px',
400   - }}
401   - >
402   - <span style={{ color: 'red' }}>开票预警:</span>
403   - <span>
404   - 需要开票的订单从确认收货后开始计算,超过21天未申请开票的订单将会在每日登录时进行预警提醒;超过40天未申请开票将预警并锁单。
405   - </span>
406   - </div>
407   - <div
408   - style={{
409   - marginLeft: '20px',
410   - marginRight: '20px',
411   - marginBottom: '20px',
412   - }}
413   - >
414   - <span style={{ color: 'red' }}>回访登记预警:</span>
415   - <span>
416   - 从【确认收货】之日起计算,国内超过20天(海外30天)未【回访登记】,将进行回访登记预警提醒,超过45天(海外60天)未回访登记将锁单,并且每次登录都会提醒
417   - </span>
418   - </div>
419   - <div
420   - style={{
421   - marginLeft: '20px',
422   - marginRight: '20px',
423   - marginBottom: '20px',
424   - }}
425   - >
426   - <span style={{ color: 'red' }}>确认发票预警:</span>
427   - <span>
428   - 从发票开出之日起,超过5天未和客户确认发票(不开票的订单除外)的订单将会进行第一次提醒;超过15天未和客户确认发票(不开票的订单除外)的订单将会每天进行一次提醒,并限制下单功能
429   - </span>
430   - </div>
431   - <div
432   - style={{
433   - marginLeft: '20px',
434   - marginRight: '20px',
435   - marginBottom: '20px',
436   - }}
437   - >
438   - <span style={{ color: 'red' }}>回款预警:</span>
439   - <span>
440   - 从【发票确认】之日起,超过30天未确认回款的订单将会每周提醒,超过90天未确认回款的订单将会每天进行一次提醒,并限制下单功能
441   - </span>
442   - </div>
443   - </div>
  390 + <div>
  391 + <p
  392 + style={{
  393 + color: 'red',
  394 + paddingLeft: '20px',
  395 + paddingRight: '20px',
  396 + marginTop: '10px',
  397 + }}
  398 + >
  399 + 预警说明:
  400 + </p>
  401 + <div
  402 + style={{
  403 + marginLeft: '20px',
  404 + marginRight: '20px',
  405 + marginBottom: '20px',
  406 + }}
  407 + >
  408 + <span style={{ color: 'red' }}>确认收货预警:</span>
  409 + <span>
  410 + 从发货之日起计算,国内超过7天(海外30天)未【确认收货】,将进行确认收货预警提醒,超过10天(海外60天)未确认收货将锁单,并且每次登录都会提醒
  411 + </span>
  412 + </div>
  413 + <div
  414 + style={{
  415 + marginLeft: '20px',
  416 + marginRight: '20px',
  417 + marginBottom: '20px',
  418 + }}
  419 + >
  420 + <span style={{ color: 'red' }}>开票预警:</span>
  421 + <span>
  422 + 需要开票的订单从确认收货后开始计算,超过21天未申请开票的订单将会在每日登录时进行预警提醒;超过40天未申请开票将预警并锁单。
  423 + </span>
  424 + </div>
  425 + <div
  426 + style={{
  427 + marginLeft: '20px',
  428 + marginRight: '20px',
  429 + marginBottom: '20px',
  430 + }}
  431 + >
  432 + <span style={{ color: 'red' }}>回访登记预警:</span>
  433 + <span>
  434 + 从【确认收货】之日起计算,国内超过20天(海外30天)未【回访登记】,将进行回访登记预警提醒,超过45天(海外60天)未回访登记将锁单,并且每次登录都会提醒
  435 + </span>
  436 + </div>
  437 + <div
  438 + style={{
  439 + marginLeft: '20px',
  440 + marginRight: '20px',
  441 + marginBottom: '20px',
  442 + }}
  443 + >
  444 + <span style={{ color: 'red' }}>确认发票预警:</span>
  445 + <span>
  446 + 从发票开出之日起,超过5天未和客户确认发票(不开票的订单除外)的订单将会进行第一次提醒;超过15天未和客户确认发票(不开票的订单除外)的订单将会每天进行一次提醒,并限制下单功能
  447 + </span>
  448 + </div>
  449 + <div
  450 + style={{
  451 + marginLeft: '20px',
  452 + marginRight: '20px',
  453 + marginBottom: '20px',
  454 + }}
  455 + >
  456 + <span style={{ color: 'red' }}>回款预警:</span>
  457 + <span>
  458 + 从【发票确认】之日起,超过30天未确认回款的订单将会每周提醒,超过90天未确认回款的订单将会每天进行一次提醒,并限制下单功能
  459 + </span>
  460 + </div>
  461 + </div>
  462 + </ProCard.TabPane>
  463 + <ProCard.TabPane key="tab2" tab="锁单提醒">
  464 + <ProTable
  465 + columns={[
  466 + {
  467 + dataIndex: 'index',
  468 + valueType: 'indexBorder',
  469 + width: 48,
  470 + },
  471 + {
  472 + title: '订单号',
  473 + dataIndex: 'subId',
  474 + key: 'subId',
  475 + hideInSearch: true,
  476 + },
  477 + {
  478 + title: '锁单时间',
  479 + dataIndex: 'limitDatetime',
  480 + key: 'limitDatetime',
  481 + hideInSearch: true,
  482 + },
  483 + {
  484 + title: '锁单原因',
  485 + dataIndex: 'limitReason',
  486 + key: 'limitReason',
  487 + hideInSearch: true,
  488 + },
  489 + {
  490 + title: '锁单原因',
  491 + width: 120,
  492 + dataIndex: 'warningStatus',
  493 + valueType: 'select',
  494 + hideInTable: true,
  495 + valueEnum: {
  496 + waitConfirmReicept: {
  497 + text: '待确认收货',
  498 + status: 'waitConfirmReicept',
  499 + },
  500 + invoicingWarning: {
  501 + text: '待开票',
  502 + status: 'invoicingWarning',
  503 + },
  504 + waitFeedbackWarning: {
  505 + text: '待回访登记',
  506 + status: 'waitFeedbackWarning',
  507 + },
  508 + invoiceConfirmWarning: {
  509 + text: '待确认发票',
  510 + status: 'invoiceConfirmWarning',
  511 + },
  512 + paymentReceiptStatusWarning: {
  513 + text: '待回款',
  514 + status: 'paymentReceiptStatusWarning',
  515 + },
  516 + },
  517 + },
  518 + {
  519 + title: '锁单时间',
  520 + dataIndex: 'limitDatetime',
  521 + valueType: 'dateTimeRange',
  522 + search: {
  523 + transform: (value: any) => ({
  524 + limitOrderDatetimeGe: value[0],
  525 + limitOrderDatetimeLe: value[1],
  526 + }),
  527 + },
  528 + hideInTable: true,
  529 + },
  530 + ]}
  531 + request={async (params) => {
  532 + const res = await postServiceOrderQueryLockOrders({
  533 + data: params,
  534 + });
  535 + return res.data;
  536 + }}
  537 + rowKey="index"
  538 + pagination={{ pageSize: 10 }}
  539 + />
  540 + </ProCard.TabPane>
  541 + </ProCard>
444 542 </Modal>
445 543 )}
446 544 {roleCode === 'WAREHOUSE_KEEPER' && (
... ... @@ -454,7 +552,7 @@ const OrderPage = () =&gt; {
454 552 key="confirm"
455 553 size="large"
456 554 type="primary"
457   - onClick={navigateToWarning}
  555 + onClick={navigateToOrderList}
458 556 >
459 557 去处理
460 558 </Button>,
... ... @@ -507,7 +605,7 @@ const OrderPage = () =&gt; {
507 605 >
508 606 {pendingDelivery}
509 607 </div>
510   - 待交期提醒
  608 + 待转交提醒
511 609 </div>
512 610 </Card>
513 611 </div>
... ... @@ -555,7 +653,7 @@ const OrderPage = () =&gt; {
555 653 >
556 654 {pendingCompletion}
557 655 </div>
558   - 交期提醒
  656 + 交期延期提醒
559 657 </div>
560 658 </Card>
561 659 </div>
... ...
src/pages/Order/OrderList/OrderDrawer.tsx
... ... @@ -35,10 +35,12 @@ import {
35 35 DrawerForm,
36 36 FormListActionType,
37 37 ProCard,
  38 + ProFormDatePicker,
38 39 ProFormDateTimePicker,
39 40 ProFormDependency,
40 41 ProFormDigit,
41 42 ProFormList,
  43 + ProFormRadio,
42 44 ProFormSelect,
43 45 ProFormText,
44 46 ProFormTextArea,
... ... @@ -2096,11 +2098,11 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
2096 2098 disabled={optType('after-sales-check')}
2097 2099 />,
2098 2100  
2099   - /*<Group key="selfDevelop">
  2101 + <Group key="selfDevelop">
2100 2102 <ProFormRadio.Group
2101 2103 key="selfDevelop"
2102 2104 name="selfDevelop"
2103   - label="是否自研"
  2105 + label="是否自研产品"
2104 2106 initialValue={false}
2105 2107 options={[
2106 2108 {
... ... @@ -2112,6 +2114,7 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
2112 2114 value: false,
2113 2115 },
2114 2116 ]}
  2117 + rules={[{ required: true, message: '是否自研产品必填' }]}
2115 2118 />
2116 2119 <ProFormDependency name={['selfDevelop']}>
2117 2120 {({ selfDevelop }) => {
... ... @@ -2119,7 +2122,10 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
2119 2122 return (
2120 2123 <ProFormDatePicker
2121 2124 name="deliveryDatetime"
2122   - label="日期"
  2125 + label="产品交期(填写前请先与工程师沟通)"
  2126 + rules={[
  2127 + { required: true, message: '产品交期必填' },
  2128 + ]}
2123 2129 />
2124 2130 );
2125 2131 }
... ... @@ -2159,7 +2165,7 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
2159 2165 value: false,
2160 2166 },
2161 2167 ]}
2162   - />,*/
  2168 + />,
2163 2169  
2164 2170 <ProFormSelect
2165 2171 key={'shippingWarehouse' + listMeta.index}
... ...
src/pages/Order/OrderList/OrderList.tsx
... ... @@ -305,6 +305,7 @@ const OrderList = ({ paramsNew, searchShow, toolbarShow }) =&gt; {
305 305  
306 306 text += ',' + record?.customerContactNumber;
307 307  
  308 + text += ',' + record?.province + record?.city + record?.district;
308 309 text += ',' + record?.customerShippingAddress;
309 310  
310 311 if (!isSupplier()) {
... ... @@ -1032,7 +1033,7 @@ const OrderList = ({ paramsNew, searchShow, toolbarShow }) =&gt; {
1032 1033 className="overflow-hidden whitespace-no-wrap overflow-ellipsis"
1033 1034 title={optRecord.deliveryDate}
1034 1035 >
1035   - <span className="text-[#8C8C8C]">生产日期:</span>
  1036 + <span className="text-[#8C8C8C]">产品交期:</span>
1036 1037 <span className="text-slate-700">{optRecord.deliveryDate}</span>
1037 1038 </div>
1038 1039 )}
... ... @@ -2181,8 +2182,8 @@ const OrderList = ({ paramsNew, searchShow, toolbarShow }) =&gt; {
2181 2182 {optRecord.paths?.includes('DELIVER_ORDER') ? (
2182 2183 <ButtonConfirm
2183 2184 className="p-0"
2184   - title="确认交期?"
2185   - text="交期"
  2185 + title="确认转交项目?"
  2186 + text="转交项目"
2186 2187 onConfirm={async () => {
2187 2188 let body = { orderIds: [optRecord.id] };
2188 2189 const data = await postServiceOrderDeliverOrders({
... ...
src/pages/Order/WarningWhitelist/index.tsx
... ... @@ -13,6 +13,7 @@ import {
13 13 ActionType,
14 14 ModalForm,
15 15 ProColumns,
  16 + ProFormDateTimePicker,
16 17 ProFormText,
17 18 ProTable,
18 19 } from '@ant-design/pro-components';
... ... @@ -77,6 +78,27 @@ const WarningWhitelist = () =&gt; {
77 78 ellipsis: true,
78 79 },
79 80 {
  81 + title: '到期时间',
  82 + dataIndex: 'expireDatetime',
  83 + hideInSearch: true,
  84 + ellipsis: true,
  85 + },
  86 + {
  87 + title: '到期时间',
  88 + valueType: 'dateTimeRange',
  89 + hideInTable: true,
  90 + search: {
  91 + transform: (value) => {
  92 + if (value) {
  93 + return {
  94 + expireDatetimeGe: value[0],
  95 + expireDatetimeLe: value[1],
  96 + };
  97 + }
  98 + },
  99 + },
  100 + },
  101 + {
80 102 title: '操作',
81 103 valueType: 'option',
82 104 key: 'option',
... ... @@ -138,6 +160,27 @@ const WarningWhitelist = () =&gt; {
138 160 ellipsis: true,
139 161 },
140 162 {
  163 + title: '到期时间',
  164 + dataIndex: 'expireDatetime',
  165 + hideInSearch: true,
  166 + ellipsis: true,
  167 + },
  168 + {
  169 + title: '到期时间',
  170 + valueType: 'dateTimeRange',
  171 + hideInTable: true,
  172 + search: {
  173 + transform: (value) => {
  174 + if (value) {
  175 + return {
  176 + expireDatetimeGe: value[0],
  177 + expireDatetimeLe: value[1],
  178 + };
  179 + }
  180 + },
  181 + },
  182 + },
  183 + {
141 184 title: '添加时间',
142 185 valueType: 'dateTimeRange',
143 186 hideInTable: true,
... ... @@ -226,6 +269,7 @@ const WarningWhitelist = () =&gt; {
226 269 onFinish={async (values) => {
227 270 const res = await postServiceOrderAddWarningUserWhiteList({
228 271 data: {
  272 + ...values,
229 273 userName: values.orderIdsText,
230 274 },
231 275 });
... ... @@ -250,6 +294,7 @@ const WarningWhitelist = () =&gt; {
250 294 },
251 295 ]}
252 296 ></ProFormText>
  297 + <ProFormDateTimePicker name="expireDatetime" label="到期时间" />
253 298 </ModalForm>,
254 299 ]}
255 300 />
... ... @@ -306,6 +351,7 @@ const WarningWhitelist = () =&gt; {
306 351 onFinish={async (values) => {
307 352 const res = await postServiceOrderAddWarningOrderWhiteList({
308 353 data: {
  354 + ...values,
309 355 orderId: values.orderIdsText,
310 356 },
311 357 });
... ... @@ -329,6 +375,7 @@ const WarningWhitelist = () =&gt; {
329 375 },
330 376 ]}
331 377 ></ProFormText>
  378 + <ProFormDateTimePicker name="expireDatetime" label="到期时间" />
332 379 </ModalForm>,
333 380 ]}
334 381 />
... ...
src/pages/Order/constant.ts
... ... @@ -147,6 +147,12 @@ export const getNeedInvoicing = (subOrder: any) =&gt; {
147 147 if (subOrder.invoicingStatus === 'UN_INVOICE') {
148 148 return '不需开票';
149 149 }
  150 + if (subOrder.afterInvoicingStatus === 'WAIT_FLUSH') {
  151 + return '待冲红';
  152 + }
  153 + if (subOrder.afterInvoicingStatus === 'FLUSHED') {
  154 + return '已冲红';
  155 + }
150 156 return '需要开票';
151 157 };
152 158  
... ...
src/services/definition.ts
... ... @@ -600,6 +600,11 @@ export interface ApiApplyAfterSalesRequest {
600 600 export interface ApiCreateOrderRequest {
601 601 /**
602 602 * @description
  603 + * 单位类型
  604 + */
  605 + companyType?: string;
  606 + /**
  607 + * @description
603 608 * 收货人联系方式
604 609 */
605 610 customerContactNumber?: string;
... ... @@ -3574,21 +3579,54 @@ export interface QueryUserIntegralRecordDto {
3574 3579 }
3575 3580  
3576 3581 export interface QueryWarningOrderStatistics {
  3582 + companyType?: string;
  3583 + companyTypeNe?: string;
  3584 + createByName?: string;
  3585 + createByNameLike?: string;
  3586 + /** @format date-time */
  3587 + createTimeGe?: string;
  3588 + /** @format date-time */
  3589 + createTimeLe?: string;
  3590 + /** @format int32 */
  3591 + current?: number;
  3592 + /** @format int32 */
  3593 + end?: number;
3577 3594 excludeWhiteList?: boolean;
  3595 + /** @format date-time */
  3596 + limitOrderDatetimeGe?: string;
  3597 + /** @format date-time */
  3598 + limitOrderDatetimeLe?: string;
  3599 + /** @format int32 */
  3600 + pageSize?: number;
3578 3601 querySelf?: boolean;
3579 3602 salesCode?: string;
  3603 + /** @format int32 */
  3604 + start?: number;
  3605 + /** @format int32 */
  3606 + total?: number;
  3607 + /** @format date-time */
  3608 + waitConfirmInvoiceStatusDateTimeGe?: string;
3580 3609 /** @format date-time */
3581 3610 waitConfirmInvoiceStatusDateTimeLe?: string;
3582 3611 /** @format date-time */
3583 3612 waitConfirmPaymentOrderCreatedDateTimeGe?: string;
3584 3613 /** @format date-time */
  3614 + waitConfirmPaymentStatusDateTimeGe?: string;
  3615 + /** @format date-time */
3585 3616 waitConfirmPaymentStatusDateTimeLe?: string;
3586 3617 /** @format date-time */
  3618 + waitConfirmReiceptStatusDateTimeGe?: string;
  3619 + /** @format date-time */
3587 3620 waitConfirmReiceptStatusDateTimeLe?: string;
3588 3621 /** @format date-time */
  3622 + waitFeedbackStatusDateTimeGe?: string;
  3623 + /** @format date-time */
3589 3624 waitFeedbackStatusDateTimeLe?: string;
3590 3625 /** @format date-time */
  3626 + waitInvoicingStatusDateTimeGe?: string;
  3627 + /** @format date-time */
3591 3628 waitInvoicingStatusDateTimeLe?: string;
  3629 + warningStatus?: string;
3592 3630 }
3593 3631  
3594 3632 export interface QueryWarningOrderWhiteListDto {
... ... @@ -3602,6 +3640,10 @@ export interface QueryWarningOrderWhiteListDto {
3602 3640 current?: number;
3603 3641 /** @format int32 */
3604 3642 end?: number;
  3643 + /** @format date-time */
  3644 + expireDatetimeGe?: string;
  3645 + /** @format date-time */
  3646 + expireDatetimeLe?: string;
3605 3647 /** @format int64 */
3606 3648 orderId?: number;
3607 3649 /** @format int32 */
... ... @@ -3623,6 +3665,10 @@ export interface QueryWarningUserWhiteListDto {
3623 3665 current?: number;
3624 3666 /** @format int32 */
3625 3667 end?: number;
  3668 + /** @format date-time */
  3669 + expireDatetimeGe?: string;
  3670 + /** @format date-time */
  3671 + expireDatetimeLe?: string;
3626 3672 /** @format int32 */
3627 3673 pageSize?: number;
3628 3674 /** @format int32 */
... ... @@ -4631,6 +4677,8 @@ export interface WarningOrderWhiteListDto {
4631 4677 createByName?: string;
4632 4678 /** @format date-time */
4633 4679 createTime?: string;
  4680 + /** @format date-time */
  4681 + expireDatetime?: string;
4634 4682 logicDelete?: boolean;
4635 4683 /** @format int64 */
4636 4684 orderId?: number;
... ... @@ -4645,6 +4693,8 @@ export interface WarningUserWhiteListDto {
4645 4693 createByName?: string;
4646 4694 /** @format date-time */
4647 4695 createTime?: string;
  4696 + /** @format date-time */
  4697 + expireDatetime?: string;
4648 4698 /** @format int64 */
4649 4699 id?: number;
4650 4700 logicDelete?: boolean;
... ...
src/services/request.ts
... ... @@ -23823,6 +23823,77 @@ export const postServiceOrderQueryHistoryOrderRecord = /* #__PURE__ */ (() =&gt; {
23823 23823 return request;
23824 23824 })();
23825 23825  
  23826 +/** @description request parameter type for postServiceOrderQueryLockOrders */
  23827 +export interface PostServiceOrderQueryLockOrdersOption {
  23828 + /**
  23829 + * @description
  23830 + * dto
  23831 + */
  23832 + body: {
  23833 + /**
  23834 + @description
  23835 + dto */
  23836 + dto: QueryWarningOrderStatistics;
  23837 + };
  23838 +}
  23839 +
  23840 +/** @description response type for postServiceOrderQueryLockOrders */
  23841 +export interface PostServiceOrderQueryLockOrdersResponse {
  23842 + /**
  23843 + * @description
  23844 + * OK
  23845 + */
  23846 + 200: ServerResult;
  23847 + /**
  23848 + * @description
  23849 + * Created
  23850 + */
  23851 + 201: any;
  23852 + /**
  23853 + * @description
  23854 + * Unauthorized
  23855 + */
  23856 + 401: any;
  23857 + /**
  23858 + * @description
  23859 + * Forbidden
  23860 + */
  23861 + 403: any;
  23862 + /**
  23863 + * @description
  23864 + * Not Found
  23865 + */
  23866 + 404: any;
  23867 +}
  23868 +
  23869 +export type PostServiceOrderQueryLockOrdersResponseSuccess =
  23870 + PostServiceOrderQueryLockOrdersResponse[200];
  23871 +/**
  23872 + * @description
  23873 + * 查询锁单订单列表
  23874 + * @tags 内部订单
  23875 + * @produces *
  23876 + * @consumes application/json
  23877 + */
  23878 +export const postServiceOrderQueryLockOrders = /* #__PURE__ */ (() => {
  23879 + const method = 'post';
  23880 + const url = '/service/order/queryLockOrders';
  23881 + function request(
  23882 + option: PostServiceOrderQueryLockOrdersOption,
  23883 + ): Promise<PostServiceOrderQueryLockOrdersResponseSuccess> {
  23884 + return requester(request.url, {
  23885 + method: request.method,
  23886 + ...option,
  23887 + }) as unknown as Promise<PostServiceOrderQueryLockOrdersResponseSuccess>;
  23888 + }
  23889 +
  23890 + /** http method */
  23891 + request.method = method;
  23892 + /** request url */
  23893 + request.url = url;
  23894 + return request;
  23895 +})();
  23896 +
23826 23897 /** @description request parameter type for postServiceOrderQueryProductInformation */
23827 23898 export interface PostServiceOrderQueryProductInformationOption {
23828 23899 /**
... ...
src/utils/order.ts
... ... @@ -36,7 +36,7 @@ export function isSales() {
36 36 export function isProcure() {
37 37 let userInfo = getUserInfo();
38 38 if (userInfo) {
39   - return ['procure'].includes(userInfo?.roleSmallVO?.code);
  39 + return userInfo.roles.includes('PROCURE');
40 40 }
41 41 return false;
42 42 }
... ...