Commit 631ce1227a12dba57490921bbaec92b8a29535b2
1 parent
6714814c
feat(Order): 添加锁单提醒功能并优化订单相关页面
- 在 Order 页面添加锁单提醒功能,展示锁单订单列表 -优化订单列表页面,增加到期时间等字段 - 更新发票相关页面,调整开票时间参数处理- 重构部分组件以支持新功能
Showing
13 changed files
with
911 additions
and
275 deletions
.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 'react'; | @@ -9,6 +10,7 @@ import { useEffect, useState } from 'react'; | ||
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 = () => { | @@ -102,6 +104,16 @@ const OrderPage = () => { | ||
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 = () => { | @@ -123,324 +135,410 @@ const OrderPage = () => { | ||
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 = () => { | @@ -454,7 +552,7 @@ const OrderPage = () => { | ||
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 = () => { | @@ -507,7 +605,7 @@ const OrderPage = () => { | ||
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 = () => { | @@ -555,7 +653,7 @@ const OrderPage = () => { | ||
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 }) => { | @@ -2096,11 +2098,11 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | ||
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 }) => { | @@ -2112,6 +2114,7 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | ||
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 }) => { | @@ -2119,7 +2122,10 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | ||
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 }) => { | @@ -2159,7 +2165,7 @@ export default ({ onClose, data, subOrders, orderOptType }) => { | ||
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 }) => { | @@ -305,6 +305,7 @@ const OrderList = ({ paramsNew, searchShow, toolbarShow }) => { | ||
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 }) => { | @@ -1032,7 +1033,7 @@ const OrderList = ({ paramsNew, searchShow, toolbarShow }) => { | ||
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 }) => { | @@ -2181,8 +2182,8 @@ const OrderList = ({ paramsNew, searchShow, toolbarShow }) => { | ||
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 = () => { | @@ -77,6 +78,27 @@ const WarningWhitelist = () => { | ||
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 = () => { | @@ -138,6 +160,27 @@ const WarningWhitelist = () => { | ||
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 = () => { | @@ -226,6 +269,7 @@ const WarningWhitelist = () => { | ||
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 = () => { | @@ -250,6 +294,7 @@ const WarningWhitelist = () => { | ||
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 = () => { | @@ -306,6 +351,7 @@ const WarningWhitelist = () => { | ||
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 = () => { | @@ -329,6 +375,7 @@ const WarningWhitelist = () => { | ||
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) => { | @@ -147,6 +147,12 @@ export const getNeedInvoicing = (subOrder: any) => { | ||
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__ */ (() => { | @@ -23823,6 +23823,77 @@ export const postServiceOrderQueryHistoryOrderRecord = /* #__PURE__ */ (() => { | ||
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 | } |