Commit 631ce1227a12dba57490921bbaec92b8a29535b2

Authored by 曾国涛
1 parent 6714814c

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

- 在 Order 页面添加锁单提醒功能,展示锁单订单列表
-优化订单列表页面,增加到期时间等字段
- 更新发票相关页面,调整开票时间参数处理- 重构部分组件以支持新功能
.umirc.ts
@@ -101,6 +101,13 @@ export default defineConfig({ @@ -101,6 +101,13 @@ export default defineConfig({
101 component: './Invoice/Invoice', 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 name: '银行流水', 111 name: '银行流水',
105 path: 'invoiceVerification', 112 path: 'invoiceVerification',
106 icon: 'BookOutlined', 113 icon: 'BookOutlined',
src/pages/Invoice/Invoice/index.tsx
@@ -312,7 +312,15 @@ const InvoiceRecord = () => { @@ -312,7 +312,15 @@ const InvoiceRecord = () => {
312 '/api/service/invoice/exportInvoices', 312 '/api/service/invoice/exportInvoices',
313 '发票.xlsx', 313 '发票.xlsx',
314 'POST', 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 messageApi.destroy(); 325 messageApi.destroy();
318 }, 326 },
src/pages/Invoice/InvoiceRecord/index.tsx
@@ -426,8 +426,13 @@ const InvoiceRecord = () => { @@ -426,8 +426,13 @@ const InvoiceRecord = () => {
426 <Button 426 <Button
427 key="out" 427 key="out"
428 onClick={() => { 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 messageApi.open({ 436 messageApi.open({
432 type: 'loading', 437 type: 'loading',
433 content: '正在导出文件...', 438 content: '正在导出文件...',
src/pages/Invoice/constant.tsx
@@ -189,6 +189,7 @@ export const INVOICE_COLUMNS = [ @@ -189,6 +189,7 @@ export const INVOICE_COLUMNS = [
189 { 189 {
190 title: '开票日期', 190 title: '开票日期',
191 valueType: 'dateRange', 191 valueType: 'dateRange',
  192 + dataIndex: 'invoicingTime',
192 width: 150, 193 width: 150,
193 hideInTable: true, 194 hideInTable: true,
194 search: { 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 import { 1 import {
2 postServiceOrderDeliverStatistics, 2 postServiceOrderDeliverStatistics,
  3 + postServiceOrderQueryLockOrders,
3 postServiceOrderWarningOrderStatistics, 4 postServiceOrderWarningOrderStatistics,
4 } from '@/services'; 5 } from '@/services';
5 import { getUserInfo } from '@/utils/user'; 6 import { getUserInfo } from '@/utils/user';
@@ -9,6 +10,7 @@ import { useEffect, useState } from &#39;react&#39;; @@ -9,6 +10,7 @@ import { useEffect, useState } from &#39;react&#39;;
9 import OrderList from '../OrderList/OrderList'; 10 import OrderList from '../OrderList/OrderList';
10 import './index.less'; 11 import './index.less';
11 // import { useNavigate } from 'react-router-dom'; 12 // import { useNavigate } from 'react-router-dom';
  13 +import { ProCard, ProTable } from '@ant-design/pro-components';
12 import { history } from '@umijs/max'; 14 import { history } from '@umijs/max';
13 // import { format } from 'fecha'; 15 // import { format } from 'fecha';
14 16
@@ -102,6 +104,16 @@ const OrderPage = () =&gt; { @@ -102,6 +104,16 @@ const OrderPage = () =&gt; {
102 // location.href = '/order/OrderWarning'; 104 // location.href = '/order/OrderWarning';
103 // history.pushState(null, '', '/order/OrderWarning'); 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 return ( 117 return (
106 <div className="order-page-container"> 118 <div className="order-page-container">
107 <div id="resizeDiv"></div> 119 <div id="resizeDiv"></div>
@@ -123,324 +135,410 @@ const OrderPage = () =&gt; { @@ -123,324 +135,410 @@ const OrderPage = () =&gt; {
123 </Button>, 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 <div 153 <div
154 style={{ 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 style={{ 162 style={{
162 - fontWeight: 'bold', // 字体加粗  
163 - color: 'black', // 字体颜色  
164 - fontSize: '40px', // 字体大小  
165 - justifyContent: 'center', 163 + backgroundColor: '#f0f0f0', // 背景颜色
  164 + width: '200px', // 卡片宽度
  165 + height: '200px', // 卡片高度
166 display: 'flex', 166 display: 'flex',
167 alignItems: 'center', 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 </div> 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 <div 201 <div
202 style={{ 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 style={{ 210 style={{
210 - fontWeight: 'bold', // 字体加粗  
211 - color: 'black', // 字体颜色  
212 - fontSize: '40px', // 字体大小  
213 - justifyContent: 'center', 211 + backgroundColor: '#f0f0f0', // 背景颜色
  212 + width: '200px', // 卡片宽度
  213 + height: '200px', // 卡片高度
214 display: 'flex', 214 display: 'flex',
215 alignItems: 'center', 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 </div> 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 <div 249 <div
250 style={{ 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 style={{ 258 style={{
258 - fontWeight: 'bold', // 字体加粗  
259 - color: 'black', // 字体颜色  
260 - fontSize: '40px', // 字体大小  
261 - justifyContent: 'center', 259 + backgroundColor: '#f0f0f0', // 背景颜色
  260 + width: '200px', // 卡片宽度
  261 + height: '200px', // 卡片高度
262 display: 'flex', 262 display: 'flex',
263 alignItems: 'center', 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 </div> 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 <div 297 <div
298 style={{ 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 style={{ 306 style={{
306 - fontWeight: 'bold', // 字体加粗  
307 - color: 'black', // 字体颜色  
308 - fontSize: '40px', // 字体大小  
309 - justifyContent: 'center', 307 + backgroundColor: '#f0f0f0', // 背景颜色
  308 + width: '200px', // 卡片宽度
  309 + height: '200px', // 卡片高度
310 display: 'flex', 310 display: 'flex',
311 alignItems: 'center', 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 </div> 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 <div 345 <div
346 style={{ 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 style={{ 354 style={{
354 - fontWeight: 'bold', // 字体加粗  
355 - color: 'black', // 字体颜色  
356 - fontSize: '40px', // 字体大小  
357 - justifyContent: 'center', 355 + backgroundColor: '#f0f0f0', // 背景颜色
  356 + width: '200px', // 卡片宽度
  357 + height: '200px', // 卡片高度
358 display: 'flex', 358 display: 'flex',
359 alignItems: 'center', 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 </div> 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 </Modal> 542 </Modal>
445 )} 543 )}
446 {roleCode === 'WAREHOUSE_KEEPER' && ( 544 {roleCode === 'WAREHOUSE_KEEPER' && (
@@ -454,7 +552,7 @@ const OrderPage = () =&gt; { @@ -454,7 +552,7 @@ const OrderPage = () =&gt; {
454 key="confirm" 552 key="confirm"
455 size="large" 553 size="large"
456 type="primary" 554 type="primary"
457 - onClick={navigateToWarning} 555 + onClick={navigateToOrderList}
458 > 556 >
459 去处理 557 去处理
460 </Button>, 558 </Button>,
@@ -507,7 +605,7 @@ const OrderPage = () =&gt; { @@ -507,7 +605,7 @@ const OrderPage = () =&gt; {
507 > 605 >
508 {pendingDelivery} 606 {pendingDelivery}
509 </div> 607 </div>
510 - 待交期提醒 608 + 待转交提醒
511 </div> 609 </div>
512 </Card> 610 </Card>
513 </div> 611 </div>
@@ -555,7 +653,7 @@ const OrderPage = () =&gt; { @@ -555,7 +653,7 @@ const OrderPage = () =&gt; {
555 > 653 >
556 {pendingCompletion} 654 {pendingCompletion}
557 </div> 655 </div>
558 - 交期提醒 656 + 交期延期提醒
559 </div> 657 </div>
560 </Card> 658 </Card>
561 </div> 659 </div>
src/pages/Order/OrderList/OrderDrawer.tsx
@@ -35,10 +35,12 @@ import { @@ -35,10 +35,12 @@ import {
35 DrawerForm, 35 DrawerForm,
36 FormListActionType, 36 FormListActionType,
37 ProCard, 37 ProCard,
  38 + ProFormDatePicker,
38 ProFormDateTimePicker, 39 ProFormDateTimePicker,
39 ProFormDependency, 40 ProFormDependency,
40 ProFormDigit, 41 ProFormDigit,
41 ProFormList, 42 ProFormList,
  43 + ProFormRadio,
42 ProFormSelect, 44 ProFormSelect,
43 ProFormText, 45 ProFormText,
44 ProFormTextArea, 46 ProFormTextArea,
@@ -2096,11 +2098,11 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -2096,11 +2098,11 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
2096 disabled={optType('after-sales-check')} 2098 disabled={optType('after-sales-check')}
2097 />, 2099 />,
2098 2100
2099 - /*<Group key="selfDevelop"> 2101 + <Group key="selfDevelop">
2100 <ProFormRadio.Group 2102 <ProFormRadio.Group
2101 key="selfDevelop" 2103 key="selfDevelop"
2102 name="selfDevelop" 2104 name="selfDevelop"
2103 - label="是否自研" 2105 + label="是否自研产品"
2104 initialValue={false} 2106 initialValue={false}
2105 options={[ 2107 options={[
2106 { 2108 {
@@ -2112,6 +2114,7 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -2112,6 +2114,7 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
2112 value: false, 2114 value: false,
2113 }, 2115 },
2114 ]} 2116 ]}
  2117 + rules={[{ required: true, message: '是否自研产品必填' }]}
2115 /> 2118 />
2116 <ProFormDependency name={['selfDevelop']}> 2119 <ProFormDependency name={['selfDevelop']}>
2117 {({ selfDevelop }) => { 2120 {({ selfDevelop }) => {
@@ -2119,7 +2122,10 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; { @@ -2119,7 +2122,10 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
2119 return ( 2122 return (
2120 <ProFormDatePicker 2123 <ProFormDatePicker
2121 name="deliveryDatetime" 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,7 +2165,7 @@ export default ({ onClose, data, subOrders, orderOptType }) =&gt; {
2159 value: false, 2165 value: false,
2160 }, 2166 },
2161 ]} 2167 ]}
2162 - />,*/ 2168 + />,
2163 2169
2164 <ProFormSelect 2170 <ProFormSelect
2165 key={'shippingWarehouse' + listMeta.index} 2171 key={'shippingWarehouse' + listMeta.index}
src/pages/Order/OrderList/OrderList.tsx
@@ -305,6 +305,7 @@ const OrderList = ({ paramsNew, searchShow, toolbarShow }) =&gt; { @@ -305,6 +305,7 @@ const OrderList = ({ paramsNew, searchShow, toolbarShow }) =&gt; {
305 305
306 text += ',' + record?.customerContactNumber; 306 text += ',' + record?.customerContactNumber;
307 307
  308 + text += ',' + record?.province + record?.city + record?.district;
308 text += ',' + record?.customerShippingAddress; 309 text += ',' + record?.customerShippingAddress;
309 310
310 if (!isSupplier()) { 311 if (!isSupplier()) {
@@ -1032,7 +1033,7 @@ const OrderList = ({ paramsNew, searchShow, toolbarShow }) =&gt; { @@ -1032,7 +1033,7 @@ const OrderList = ({ paramsNew, searchShow, toolbarShow }) =&gt; {
1032 className="overflow-hidden whitespace-no-wrap overflow-ellipsis" 1033 className="overflow-hidden whitespace-no-wrap overflow-ellipsis"
1033 title={optRecord.deliveryDate} 1034 title={optRecord.deliveryDate}
1034 > 1035 >
1035 - <span className="text-[#8C8C8C]">生产日期:</span> 1036 + <span className="text-[#8C8C8C]">产品交期:</span>
1036 <span className="text-slate-700">{optRecord.deliveryDate}</span> 1037 <span className="text-slate-700">{optRecord.deliveryDate}</span>
1037 </div> 1038 </div>
1038 )} 1039 )}
@@ -2181,8 +2182,8 @@ const OrderList = ({ paramsNew, searchShow, toolbarShow }) =&gt; { @@ -2181,8 +2182,8 @@ const OrderList = ({ paramsNew, searchShow, toolbarShow }) =&gt; {
2181 {optRecord.paths?.includes('DELIVER_ORDER') ? ( 2182 {optRecord.paths?.includes('DELIVER_ORDER') ? (
2182 <ButtonConfirm 2183 <ButtonConfirm
2183 className="p-0" 2184 className="p-0"
2184 - title="确认交期?"  
2185 - text="交期" 2185 + title="确认转交项目?"
  2186 + text="转交项目"
2186 onConfirm={async () => { 2187 onConfirm={async () => {
2187 let body = { orderIds: [optRecord.id] }; 2188 let body = { orderIds: [optRecord.id] };
2188 const data = await postServiceOrderDeliverOrders({ 2189 const data = await postServiceOrderDeliverOrders({
src/pages/Order/WarningWhitelist/index.tsx
@@ -13,6 +13,7 @@ import { @@ -13,6 +13,7 @@ import {
13 ActionType, 13 ActionType,
14 ModalForm, 14 ModalForm,
15 ProColumns, 15 ProColumns,
  16 + ProFormDateTimePicker,
16 ProFormText, 17 ProFormText,
17 ProTable, 18 ProTable,
18 } from '@ant-design/pro-components'; 19 } from '@ant-design/pro-components';
@@ -77,6 +78,27 @@ const WarningWhitelist = () =&gt; { @@ -77,6 +78,27 @@ const WarningWhitelist = () =&gt; {
77 ellipsis: true, 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 title: '操作', 102 title: '操作',
81 valueType: 'option', 103 valueType: 'option',
82 key: 'option', 104 key: 'option',
@@ -138,6 +160,27 @@ const WarningWhitelist = () =&gt; { @@ -138,6 +160,27 @@ const WarningWhitelist = () =&gt; {
138 ellipsis: true, 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 title: '添加时间', 184 title: '添加时间',
142 valueType: 'dateTimeRange', 185 valueType: 'dateTimeRange',
143 hideInTable: true, 186 hideInTable: true,
@@ -226,6 +269,7 @@ const WarningWhitelist = () =&gt; { @@ -226,6 +269,7 @@ const WarningWhitelist = () =&gt; {
226 onFinish={async (values) => { 269 onFinish={async (values) => {
227 const res = await postServiceOrderAddWarningUserWhiteList({ 270 const res = await postServiceOrderAddWarningUserWhiteList({
228 data: { 271 data: {
  272 + ...values,
229 userName: values.orderIdsText, 273 userName: values.orderIdsText,
230 }, 274 },
231 }); 275 });
@@ -250,6 +294,7 @@ const WarningWhitelist = () =&gt; { @@ -250,6 +294,7 @@ const WarningWhitelist = () =&gt; {
250 }, 294 },
251 ]} 295 ]}
252 ></ProFormText> 296 ></ProFormText>
  297 + <ProFormDateTimePicker name="expireDatetime" label="到期时间" />
253 </ModalForm>, 298 </ModalForm>,
254 ]} 299 ]}
255 /> 300 />
@@ -306,6 +351,7 @@ const WarningWhitelist = () =&gt; { @@ -306,6 +351,7 @@ const WarningWhitelist = () =&gt; {
306 onFinish={async (values) => { 351 onFinish={async (values) => {
307 const res = await postServiceOrderAddWarningOrderWhiteList({ 352 const res = await postServiceOrderAddWarningOrderWhiteList({
308 data: { 353 data: {
  354 + ...values,
309 orderId: values.orderIdsText, 355 orderId: values.orderIdsText,
310 }, 356 },
311 }); 357 });
@@ -329,6 +375,7 @@ const WarningWhitelist = () =&gt; { @@ -329,6 +375,7 @@ const WarningWhitelist = () =&gt; {
329 }, 375 },
330 ]} 376 ]}
331 ></ProFormText> 377 ></ProFormText>
  378 + <ProFormDateTimePicker name="expireDatetime" label="到期时间" />
332 </ModalForm>, 379 </ModalForm>,
333 ]} 380 ]}
334 /> 381 />
src/pages/Order/constant.ts
@@ -147,6 +147,12 @@ export const getNeedInvoicing = (subOrder: any) =&gt; { @@ -147,6 +147,12 @@ export const getNeedInvoicing = (subOrder: any) =&gt; {
147 if (subOrder.invoicingStatus === 'UN_INVOICE') { 147 if (subOrder.invoicingStatus === 'UN_INVOICE') {
148 return '不需开票'; 148 return '不需开票';
149 } 149 }
  150 + if (subOrder.afterInvoicingStatus === 'WAIT_FLUSH') {
  151 + return '待冲红';
  152 + }
  153 + if (subOrder.afterInvoicingStatus === 'FLUSHED') {
  154 + return '已冲红';
  155 + }
150 return '需要开票'; 156 return '需要开票';
151 }; 157 };
152 158
src/services/definition.ts
@@ -600,6 +600,11 @@ export interface ApiApplyAfterSalesRequest { @@ -600,6 +600,11 @@ export interface ApiApplyAfterSalesRequest {
600 export interface ApiCreateOrderRequest { 600 export interface ApiCreateOrderRequest {
601 /** 601 /**
602 * @description 602 * @description
  603 + * 单位类型
  604 + */
  605 + companyType?: string;
  606 + /**
  607 + * @description
603 * 收货人联系方式 608 * 收货人联系方式
604 */ 609 */
605 customerContactNumber?: string; 610 customerContactNumber?: string;
@@ -3574,21 +3579,54 @@ export interface QueryUserIntegralRecordDto { @@ -3574,21 +3579,54 @@ export interface QueryUserIntegralRecordDto {
3574 } 3579 }
3575 3580
3576 export interface QueryWarningOrderStatistics { 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 excludeWhiteList?: boolean; 3594 excludeWhiteList?: boolean;
  3595 + /** @format date-time */
  3596 + limitOrderDatetimeGe?: string;
  3597 + /** @format date-time */
  3598 + limitOrderDatetimeLe?: string;
  3599 + /** @format int32 */
  3600 + pageSize?: number;
3578 querySelf?: boolean; 3601 querySelf?: boolean;
3579 salesCode?: string; 3602 salesCode?: string;
  3603 + /** @format int32 */
  3604 + start?: number;
  3605 + /** @format int32 */
  3606 + total?: number;
  3607 + /** @format date-time */
  3608 + waitConfirmInvoiceStatusDateTimeGe?: string;
3580 /** @format date-time */ 3609 /** @format date-time */
3581 waitConfirmInvoiceStatusDateTimeLe?: string; 3610 waitConfirmInvoiceStatusDateTimeLe?: string;
3582 /** @format date-time */ 3611 /** @format date-time */
3583 waitConfirmPaymentOrderCreatedDateTimeGe?: string; 3612 waitConfirmPaymentOrderCreatedDateTimeGe?: string;
3584 /** @format date-time */ 3613 /** @format date-time */
  3614 + waitConfirmPaymentStatusDateTimeGe?: string;
  3615 + /** @format date-time */
3585 waitConfirmPaymentStatusDateTimeLe?: string; 3616 waitConfirmPaymentStatusDateTimeLe?: string;
3586 /** @format date-time */ 3617 /** @format date-time */
  3618 + waitConfirmReiceptStatusDateTimeGe?: string;
  3619 + /** @format date-time */
3587 waitConfirmReiceptStatusDateTimeLe?: string; 3620 waitConfirmReiceptStatusDateTimeLe?: string;
3588 /** @format date-time */ 3621 /** @format date-time */
  3622 + waitFeedbackStatusDateTimeGe?: string;
  3623 + /** @format date-time */
3589 waitFeedbackStatusDateTimeLe?: string; 3624 waitFeedbackStatusDateTimeLe?: string;
3590 /** @format date-time */ 3625 /** @format date-time */
  3626 + waitInvoicingStatusDateTimeGe?: string;
  3627 + /** @format date-time */
3591 waitInvoicingStatusDateTimeLe?: string; 3628 waitInvoicingStatusDateTimeLe?: string;
  3629 + warningStatus?: string;
3592 } 3630 }
3593 3631
3594 export interface QueryWarningOrderWhiteListDto { 3632 export interface QueryWarningOrderWhiteListDto {
@@ -3602,6 +3640,10 @@ export interface QueryWarningOrderWhiteListDto { @@ -3602,6 +3640,10 @@ export interface QueryWarningOrderWhiteListDto {
3602 current?: number; 3640 current?: number;
3603 /** @format int32 */ 3641 /** @format int32 */
3604 end?: number; 3642 end?: number;
  3643 + /** @format date-time */
  3644 + expireDatetimeGe?: string;
  3645 + /** @format date-time */
  3646 + expireDatetimeLe?: string;
3605 /** @format int64 */ 3647 /** @format int64 */
3606 orderId?: number; 3648 orderId?: number;
3607 /** @format int32 */ 3649 /** @format int32 */
@@ -3623,6 +3665,10 @@ export interface QueryWarningUserWhiteListDto { @@ -3623,6 +3665,10 @@ export interface QueryWarningUserWhiteListDto {
3623 current?: number; 3665 current?: number;
3624 /** @format int32 */ 3666 /** @format int32 */
3625 end?: number; 3667 end?: number;
  3668 + /** @format date-time */
  3669 + expireDatetimeGe?: string;
  3670 + /** @format date-time */
  3671 + expireDatetimeLe?: string;
3626 /** @format int32 */ 3672 /** @format int32 */
3627 pageSize?: number; 3673 pageSize?: number;
3628 /** @format int32 */ 3674 /** @format int32 */
@@ -4631,6 +4677,8 @@ export interface WarningOrderWhiteListDto { @@ -4631,6 +4677,8 @@ export interface WarningOrderWhiteListDto {
4631 createByName?: string; 4677 createByName?: string;
4632 /** @format date-time */ 4678 /** @format date-time */
4633 createTime?: string; 4679 createTime?: string;
  4680 + /** @format date-time */
  4681 + expireDatetime?: string;
4634 logicDelete?: boolean; 4682 logicDelete?: boolean;
4635 /** @format int64 */ 4683 /** @format int64 */
4636 orderId?: number; 4684 orderId?: number;
@@ -4645,6 +4693,8 @@ export interface WarningUserWhiteListDto { @@ -4645,6 +4693,8 @@ export interface WarningUserWhiteListDto {
4645 createByName?: string; 4693 createByName?: string;
4646 /** @format date-time */ 4694 /** @format date-time */
4647 createTime?: string; 4695 createTime?: string;
  4696 + /** @format date-time */
  4697 + expireDatetime?: string;
4648 /** @format int64 */ 4698 /** @format int64 */
4649 id?: number; 4699 id?: number;
4650 logicDelete?: boolean; 4700 logicDelete?: boolean;
src/services/request.ts
@@ -23823,6 +23823,77 @@ export const postServiceOrderQueryHistoryOrderRecord = /* #__PURE__ */ (() =&gt; { @@ -23823,6 +23823,77 @@ export const postServiceOrderQueryHistoryOrderRecord = /* #__PURE__ */ (() =&gt; {
23823 return request; 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 /** @description request parameter type for postServiceOrderQueryProductInformation */ 23897 /** @description request parameter type for postServiceOrderQueryProductInformation */
23827 export interface PostServiceOrderQueryProductInformationOption { 23898 export interface PostServiceOrderQueryProductInformationOption {
23828 /** 23899 /**
src/utils/order.ts
@@ -36,7 +36,7 @@ export function isSales() { @@ -36,7 +36,7 @@ export function isSales() {
36 export function isProcure() { 36 export function isProcure() {
37 let userInfo = getUserInfo(); 37 let userInfo = getUserInfo();
38 if (userInfo) { 38 if (userInfo) {
39 - return ['procure'].includes(userInfo?.roleSmallVO?.code); 39 + return userInfo.roles.includes('PROCURE');
40 } 40 }
41 return false; 41 return false;
42 } 42 }