6c7c2fa5
Shinner
编辑车系任务最大位数
|
1
|
import React, { useEffect, useState } from "react";
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
2
3
4
5
6
7
8
9
10
11
12
13
14
|
import {
Card,
Table,
DatePicker,
Row,
message,
Input,
Button,
Modal,
} from "antd";
import * as API from "./api";
import { PageHeaderWrapper } from "@ant-design/pro-layout";
import { history } from "umi";
|
d24e7d31
Shinner
增加零售任务分配菜单静态页面
|
15
|
import moment, { Moment } from "moment";
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
16
17
|
import useInitial from "@/hooks/useInitail";
import { Provider, useStore } from "./store";
|
bdad4eb5
Shinner
调试自动分配接口
|
18
|
import ApprovalProgressModal from "@/pages/stock/AdvanceProgress/components/ApproveModal";
|
aeeb3492
Shinner
增加预览任务功能
|
19
20
21
22
|
import EntryTaskPreview from "./components/EntryTaskPreview";
import { OrderTaskApprovalType } from "./entity";
import AdviserTaskPreview from "./components/AdviserTaskPreview";
import SeriesTaskPreview from "./components/SeriesTaskPreview";
|
4d0d5719
Shinner
提交审批增加备注和附件提交
|
23
|
import ApproveModal from "@/pages/order3/Common/ApproveModal";
|
bdad4eb5
Shinner
调试自动分配接口
|
24
25
|
import SaleTaskAutoAssign from "./components/SaleTaskAutoAssign";
import SaleTaskBatchSet from "./components/SaleTaskBatchSet";
|
02999d30
Shinner
零售任务分配入口列表二级表头
|
26
|
import { ColumnsType } from "antd/es/table";
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
27
28
29
30
31
32
33
34
|
export default () => (
<Provider>
<SaleTaskList />
</Provider>
);
function SaleTaskList() {
|
e26233dd
Shinner
更换审批进度组件
|
35
36
|
const { isReadOnly, setShopTaskItem, setIsReadOnly } = useStore();
const [approve, setApprove] = useState({ visible: false, orderNo: "" });
|
4d0d5719
Shinner
提交审批增加备注和附件提交
|
37
|
const [approveOpen, setApproveOpen] = useState(false);
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
38
|
const [targetMonth, setTargetMonth] = useState(moment());
|
aeeb3492
Shinner
增加预览任务功能
|
39
40
41
42
43
44
|
const [etpVisible, setEtpVisible] = useState(false);
const [previewTaskParams, setPreviewTaskParams] = useState({});
const [atpVisible, setAtpVisible] = useState(false);
const [adviserTaskParams, setAdviserTaskParams] = useState({});
const [stpVisible, setStpVisible] = useState(false);
const [seriesTaskParams, setSeriesTaskParams] = useState({});
|
a21e5b52
Shinner
增加零售任务分配菜单静态页面
|
45
|
|
bdad4eb5
Shinner
调试自动分配接口
|
46
47
48
|
const [autoVisible, setAutoVisible] = useState(false);
const [batchVisible, setBatchVisible] = useState(false);
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
49
50
51
52
|
const { data, loading, setParams } = useInitial(
API.getSaleTaskApi,
{} as API.GetSaleTaskApiRes,
{
|
3b0d1ee6
Shinner
增加零售任务分配菜单静态页面
|
53
|
taskDate: targetMonth.valueOf(),
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
54
55
56
|
}
);
|
d24e7d31
Shinner
增加零售任务分配菜单静态页面
|
57
|
useEffect(() => {
|
df7d79e7
Shinner
调试零售任务分配接口
|
58
|
setIsReadOnly(!data.canModified);
|
d24e7d31
Shinner
增加零售任务分配菜单静态页面
|
59
60
|
}, [data]);
|
d24e7d31
Shinner
增加零售任务分配菜单静态页面
|
61
62
63
64
65
66
|
const handleChangeMonth = (date: Moment | null) => {
setTargetMonth(moment(date));
setParams({ taskDate: moment(date).valueOf() }, true);
};
const goToEditPage = (record: API.ShopTaskItem) => {
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
67
|
setShopTaskItem(record);
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
68
69
|
history.push({
pathname: "/order3/saleTask/edit",
|
11ea8143
Shinner
调试零售任务分配接口
|
70
71
72
73
|
query: {
readOnly: isReadOnly ? "1" : "0",
shopId: String(record.shopId),
taskDate: String(targetMonth.valueOf()),
|
d24e7d31
Shinner
增加零售任务分配菜单静态页面
|
74
|
},
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
75
76
77
|
});
};
|
bdad4eb5
Shinner
调试自动分配接口
|
78
79
80
81
82
83
84
85
86
87
88
89
90
|
// 查看销顾任务
const goToAdviserPage = (record: API.ShopTaskItem) => {
history.push({
pathname: "/order3/saleTask/edit",
query: {
readOnly: isReadOnly ? "1" : "0",
shopId: String(record.shopId),
taskDate: String(targetMonth.valueOf()),
currTab: "2",
},
});
};
|
11ea8143
Shinner
调试零售任务分配接口
|
91
92
|
// 查看流程进度
const viewProcess = () => {
|
e26233dd
Shinner
更换审批进度组件
|
93
|
setApprove({
|
11ea8143
Shinner
调试零售任务分配接口
|
94
|
visible: true,
|
11ea8143
Shinner
调试零售任务分配接口
|
95
96
97
98
|
orderNo: data.approvalNumber,
});
};
|
a21e5b52
Shinner
增加零售任务分配菜单静态页面
|
99
|
const cancelSaleTask = () => {
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
100
101
|
Modal.confirm({
title: "提示",
|
11ea8143
Shinner
调试零售任务分配接口
|
102
|
content: `确认撤销【${targetMonth.format("YYYY-MM")}】零售任务审批吗?`,
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
zIndex: 1002,
onOk: () => {
API.cancelSaleTask({
id: data.id,
})
.then((res) => {
message.success("撤销成功");
})
.catch((error: any) => {
message.error(error.message ?? "请求失败");
})
.finally(() => {
setParams({}, true);
});
},
});
};
|
4d0d5719
Shinner
提交审批增加备注和附件提交
|
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
const submitSaleTask = (parmas: any) => {
const hide = message.loading("提交中", 0);
API.submitSaleTask({
id: data.id,
...parmas,
})
.then((res) => {
message.success("提交成功");
})
.catch((error: any) => {
message.error(error.message ?? "请求失败");
})
.finally(() => {
hide();
setParams({}, true);
});
|
a21e5b52
Shinner
增加零售任务分配菜单静态页面
|
137
138
|
};
|
aeeb3492
Shinner
增加预览任务功能
|
139
140
141
142
143
144
145
146
147
|
const handlePreviewTask = () => {
const params: any = {
id: data.id,
orderTaskApprovalType: OrderTaskApprovalType.门店维度,
};
setPreviewTaskParams(params);
setEtpVisible(true);
};
|
bdad4eb5
Shinner
调试自动分配接口
|
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
|
// 销顾任务
const showAdviserModal = (
record: API.TaskListItem,
type: OrderTaskApprovalType
) => {
const params: any = {
id: data.id,
taskId: record.id,
orderTaskApprovalType: OrderTaskApprovalType.门店维度, // 只有门店有查看销顾任务
};
switch (type) {
case OrderTaskApprovalType.门店维度:
params.shopId = record.dataId;
break;
case OrderTaskApprovalType.销售顾问维度:
params.staffId = record.dataId;
break;
case OrderTaskApprovalType.新车一级管理维度:
params.firstManageId = record.dataId;
break;
case OrderTaskApprovalType.新车二级管理维度:
params.secondManageId = record.dataId;
break;
case OrderTaskApprovalType.新车三级管理维度:
params.thirdManageId = record.dataId;
break;
default:
break;
}
setAdviserTaskParams(params);
setAtpVisible(true);
};
// 销顾任务--查看车系任务
const showSeriesModalByAdviser = (record: API.TaskListItem) => {
const params = { ...adviserTaskParams } as any;
params.taskId = record.id;
params.orderTaskApprovalType = OrderTaskApprovalType.车系;
params.staffId = record.dataId;
setSeriesTaskParams(params);
setStpVisible(true);
};
// 车系任务
const showSeriesModal = (
record: API.TaskListItem,
type: OrderTaskApprovalType
) => {
const params: any = {
id: data.id,
taskId: record.id,
orderTaskApprovalType: OrderTaskApprovalType.车系,
};
switch (type) {
case OrderTaskApprovalType.门店维度:
params.shopId = record.dataId;
break;
case OrderTaskApprovalType.销售顾问维度:
params.staffId = record.dataId;
break;
case OrderTaskApprovalType.新车一级管理维度:
params.firstManageId = record.dataId;
break;
case OrderTaskApprovalType.新车二级管理维度:
params.secondManageId = record.dataId;
break;
case OrderTaskApprovalType.新车三级管理维度:
params.thirdManageId = record.dataId;
break;
default:
break;
}
setSeriesTaskParams(params);
setStpVisible(true);
};
|
a60f9f4a
Shinner
调试批量设置接口
|
224
225
226
227
228
229
230
231
232
|
const handleAutoAssignRefresh = () => {
setAutoVisible(false);
setParams({}, true);
};
const handleBatchSetRefresh = () => {
setBatchVisible(false);
setParams({}, true);
};
|
02999d30
Shinner
零售任务分配入口列表二级表头
|
233
234
235
|
const columns: ColumnsType<API.ShopTaskItem> = [
{
title: "门店",
|
d0ec8e16
Shinner
二级表头
|
236
|
width: 150,
|
02999d30
Shinner
零售任务分配入口列表二级表头
|
237
238
239
240
|
dataIndex: "shopName",
},
{
title: "零售任务(台)",
|
02999d30
Shinner
零售任务分配入口列表二级表头
|
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
|
children: [
{
title: "合计",
dataIndex: "taskCount",
key: "taskCount",
},
{
title: "新能源车",
dataIndex: "newEnergyTaskCount",
key: "newEnergyTaskCount",
},
{
title: "传统燃油车",
dataIndex: "fuelVehicleTaskCount",
key: "fuelVehicleTaskCount",
},
|
02999d30
Shinner
零售任务分配入口列表二级表头
|
257
258
259
|
],
},
{
|
d0ec8e16
Shinner
二级表头
|
260
|
title: "毛利任务(元)",
|
02999d30
Shinner
零售任务分配入口列表二级表头
|
261
262
|
children: [
{
|
d0ec8e16
Shinner
二级表头
|
263
264
265
266
267
268
269
270
|
title: "合计",
dataIndex: "grossProfitTaskTotal",
key: "grossProfitTaskTotal",
render: (text: string, record: API.ShopTaskItem) => {
return (record.taskCount * record.vehicleGrossProfitTask).toFixed(
2
);
},
|
02999d30
Shinner
零售任务分配入口列表二级表头
|
271
272
|
},
{
|
d0ec8e16
Shinner
二级表头
|
273
274
275
|
title: "单车",
dataIndex: "vehicleGrossProfitTask",
key: "vehicleGrossProfitTask",
|
02999d30
Shinner
零售任务分配入口列表二级表头
|
276
277
278
279
|
},
],
},
{
|
d0ec8e16
Shinner
二级表头
|
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
|
title: "线索到店成交(台)",
width: 100,
dataIndex: "clueDealTaskCount",
key: "clueDealTaskCount",
},
{
title: "首客试驾成交(台)",
width: 100,
dataIndex: "testDriveTaskCount",
key: "testDriveTaskCount",
},
{
title: "攻坚车任务(台)",
width: 100,
dataIndex: "tackCarTaskCount",
key: "tackCarTaskCount",
},
{
title: "车系任务(台)",
width: 100,
dataIndex: "seriesTaskCount",
key: "seriesTaskCount",
},
{
|
02999d30
Shinner
零售任务分配入口列表二级表头
|
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
|
title: "销顾任务",
render: (text: string, record: API.ShopTaskItem) => {
return (
<a
onClick={() => {
goToAdviserPage(record);
}}
>
查看
</a>
);
},
},
{
title: "操作",
render: (text: string, record: API.ShopTaskItem) => {
return (
<a
onClick={() => {
goToEditPage(record);
}}
>
{isReadOnly ? "查看" : "编辑"}
</a>
);
},
},
];
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
333
334
335
|
return (
<PageHeaderWrapper title="零售任务分配">
<Card>
|
bdad4eb5
Shinner
调试自动分配接口
|
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
|
<Row
align="middle"
justify="space-between"
style={{ marginBottom: 20 }}
>
<Row align="middle" justify="start" style={{ marginBottom: 20 }}>
<DatePicker
placeholder="月度"
style={{ width: 260 }}
picker="month"
value={targetMonth}
onChange={handleChangeMonth}
allowClear={false}
/>
<Input.Search
allowClear
placeholder="门店名称"
style={{ width: 260, marginLeft: 15 }}
onSearch={(v) => {
setParams({ shopName: v }, true);
}}
|
d8aedefd
Shinner
单个门店支持分配到门店和顾问
|
357
358
359
360
361
|
onBlur={(e) => {
if (e.target.value.trim() === "") {
setParams({ shopName: "" }, true);
}
}}
|
bdad4eb5
Shinner
调试自动分配接口
|
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
|
/>
</Row>
{!isReadOnly && (
<Row align="middle" justify="start" style={{ marginBottom: 20 }}>
<Button type="primary" onClick={() => setAutoVisible(true)}>
零售任务快捷分配
</Button>
<Button
type="primary"
style={{ marginLeft: 10 }}
onClick={() => setBatchVisible(true)}
>
批量设置
</Button>
</Row>
)}
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
378
379
380
|
</Row>
<Table
rowKey="id"
|
02999d30
Shinner
零售任务分配入口列表二级表头
|
381
|
bordered
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
382
|
loading={loading}
|
02999d30
Shinner
零售任务分配入口列表二级表头
|
383
|
columns={columns}
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
384
385
|
dataSource={data.shopTaskList}
pagination={false}
|
df7d79e7
Shinner
调试零售任务分配接口
|
386
|
scroll={{ y: 450 }}
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
387
|
summary={() => {
|
a21e5b52
Shinner
增加零售任务分配菜单静态页面
|
388
389
390
|
if (!data || !data.shopTaskList || data.shopTaskList.length <= 0) {
return null;
}
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
391
392
393
394
395
396
397
398
399
|
return (
<Table.Summary fixed="bottom">
<Table.Summary.Row
style={{
background: "#FAFAFA",
fontSize: 18,
fontWeight: 500,
}}
>
|
bdad4eb5
Shinner
调试自动分配接口
|
400
401
|
<Table.Summary.Cell index={1}>合计</Table.Summary.Cell>
<Table.Summary.Cell index={2}>
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
402
403
|
{data.totalTaskCount}
</Table.Summary.Cell>
|
bdad4eb5
Shinner
调试自动分配接口
|
404
|
<Table.Summary.Cell index={3}>
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
405
406
|
{data.newEnergyTaskCount}
</Table.Summary.Cell>
|
bdad4eb5
Shinner
调试自动分配接口
|
407
|
<Table.Summary.Cell index={4}>
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
408
409
|
{data.fuelVehicleTaskCount}
</Table.Summary.Cell>
|
02999d30
Shinner
零售任务分配入口列表二级表头
|
410
|
<Table.Summary.Cell index={5}>-</Table.Summary.Cell>
|
d8aedefd
Shinner
单个门店支持分配到门店和顾问
|
411
412
413
|
<Table.Summary.Cell index={6}>
{data.totalGrossProfitTask}
</Table.Summary.Cell>
|
bdad4eb5
Shinner
调试自动分配接口
|
414
|
<Table.Summary.Cell index={7}>
|
eb77f47f
Shinner
增加表单交互
|
415
|
{data.clueDealTaskCount}
|
11ea8143
Shinner
调试零售任务分配接口
|
416
|
</Table.Summary.Cell>
|
bdad4eb5
Shinner
调试自动分配接口
|
417
|
<Table.Summary.Cell index={8}>
|
eb77f47f
Shinner
增加表单交互
|
418
419
|
{data.testDriveTaskCount}
</Table.Summary.Cell>
|
bdad4eb5
Shinner
调试自动分配接口
|
420
|
<Table.Summary.Cell index={9}>
|
4ddb4140
Shinner
调试零售任务分配接口
|
421
|
{data.tackCarTaskCount}
|
11ea8143
Shinner
调试零售任务分配接口
|
422
|
</Table.Summary.Cell>
|
bdad4eb5
Shinner
调试自动分配接口
|
423
|
<Table.Summary.Cell index={10}>
|
eb77f47f
Shinner
增加表单交互
|
424
425
|
{data.seriesTaskCount}
</Table.Summary.Cell>
|
bdad4eb5
Shinner
调试自动分配接口
|
426
427
|
<Table.Summary.Cell index={11} />
<Table.Summary.Cell index={12} />
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
428
429
430
431
|
</Table.Summary.Row>
</Table.Summary>
);
}}
|
02999d30
Shinner
零售任务分配入口列表二级表头
|
432
|
/>
|
df7d79e7
Shinner
调试零售任务分配接口
|
433
|
{data.revoke ? (
|
d24e7d31
Shinner
增加零售任务分配菜单静态页面
|
434
|
<Row align="middle" justify="center" style={{ marginTop: 50 }}>
|
df7d79e7
Shinner
调试零售任务分配接口
|
435
436
437
438
439
440
441
442
|
<Button onClick={cancelSaleTask}>撤销</Button>
<Button
type="primary"
style={{ marginLeft: 10 }}
onClick={viewProcess}
>
审批进度
</Button>
|
aeeb3492
Shinner
增加预览任务功能
|
443
444
445
446
447
448
449
|
<Button
type="primary"
style={{ marginLeft: 10 }}
onClick={handlePreviewTask}
>
预览任务
</Button>
|
df7d79e7
Shinner
调试零售任务分配接口
|
450
451
|
</Row>
) : (
|
4c5bad19
Shinner
预览任务按钮显示与是否审批无关;调整样式
|
452
453
|
<Row align="middle" justify="center" style={{ marginTop: 50 }}>
{!isReadOnly && (
|
4d0d5719
Shinner
提交审批增加备注和附件提交
|
454
|
<Button type="primary" onClick={() => setApproveOpen(true)}>
|
d24e7d31
Shinner
增加零售任务分配菜单静态页面
|
455
|
提交审批
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
456
|
</Button>
|
4c5bad19
Shinner
预览任务按钮显示与是否审批无关;调整样式
|
457
458
459
460
461
462
463
464
465
|
)}
<Button
type="primary"
style={{ marginLeft: 10 }}
onClick={handlePreviewTask}
>
预览任务
</Button>
</Row>
|
d24e7d31
Shinner
增加零售任务分配菜单静态页面
|
466
|
)}
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
467
|
</Card>
|
a21e5b52
Shinner
增加零售任务分配菜单静态页面
|
468
|
<Modal
|
aeeb3492
Shinner
增加预览任务功能
|
469
470
471
472
|
width={1200}
title="预览任务"
open={etpVisible}
onCancel={() => setEtpVisible(false)}
|
a21e5b52
Shinner
增加零售任务分配菜单静态页面
|
473
474
475
|
destroyOnClose
footer={null}
>
|
aeeb3492
Shinner
增加预览任务功能
|
476
|
<EntryTaskPreview
|
604e7e51
Shinner
预览任务增加门店和顾问搜索
|
477
|
month={targetMonth}
|
aeeb3492
Shinner
增加预览任务功能
|
478
|
params={previewTaskParams}
|
bdad4eb5
Shinner
调试自动分配接口
|
479
480
|
showAdviserModal={showAdviserModal}
showSeriesModal={showSeriesModal}
|
aeeb3492
Shinner
增加预览任务功能
|
481
482
483
484
485
486
487
488
489
490
491
492
|
/>
</Modal>
<Modal
width={1200}
title="销顾任务"
open={atpVisible}
onCancel={() => setAtpVisible(false)}
destroyOnClose
footer={null}
>
<AdviserTaskPreview
params={adviserTaskParams}
|
bdad4eb5
Shinner
调试自动分配接口
|
493
|
showSeriesModal={showSeriesModalByAdviser}
|
aeeb3492
Shinner
增加预览任务功能
|
494
495
496
497
498
499
500
501
502
503
504
|
/>
</Modal>
<Modal
width={600}
title="车系任务"
open={stpVisible}
onCancel={() => setStpVisible(false)}
destroyOnClose
footer={null}
>
<SeriesTaskPreview params={seriesTaskParams} />
|
a21e5b52
Shinner
增加零售任务分配菜单静态页面
|
505
|
</Modal>
|
bdad4eb5
Shinner
调试自动分配接口
|
506
507
508
509
|
<Modal
width={800}
title="零售任务快捷分配"
open={autoVisible}
|
90c2447f
Shinner
零售任务快捷分配交互优化
|
510
|
onCancel={() => setAutoVisible(false)}
|
bdad4eb5
Shinner
调试自动分配接口
|
511
512
|
destroyOnClose
footer={null}
|
a60f9f4a
Shinner
调试批量设置接口
|
513
|
maskClosable={false}
|
bdad4eb5
Shinner
调试自动分配接口
|
514
515
516
517
|
>
<SaleTaskAutoAssign
id={data.id}
value={data.shopTaskList}
|
90c2447f
Shinner
零售任务快捷分配交互优化
|
518
|
onCancel={() => setAutoVisible(false)}
|
a60f9f4a
Shinner
调试批量设置接口
|
519
|
onRefresh={handleAutoAssignRefresh}
|
bdad4eb5
Shinner
调试自动分配接口
|
520
521
522
523
524
525
|
/>
</Modal>
<Modal
width={800}
title="批量设置"
open={batchVisible}
|
90c2447f
Shinner
零售任务快捷分配交互优化
|
526
|
onCancel={() => setBatchVisible(false)}
|
bdad4eb5
Shinner
调试自动分配接口
|
527
528
|
destroyOnClose
footer={null}
|
a60f9f4a
Shinner
调试批量设置接口
|
529
|
maskClosable={false}
|
bdad4eb5
Shinner
调试自动分配接口
|
530
|
>
|
90c2447f
Shinner
零售任务快捷分配交互优化
|
531
532
533
534
535
|
<SaleTaskBatchSet
id={data.id}
onCancel={() => setBatchVisible(false)}
onRefresh={handleBatchSetRefresh}
/>
|
bdad4eb5
Shinner
调试自动分配接口
|
536
|
</Modal>
|
e26233dd
Shinner
更换审批进度组件
|
537
538
539
540
541
|
<ApprovalProgressModal
visible={approve.visible}
orderNo={approve.orderNo}
onCancel={() => setApprove({ visible: false, orderNo: "" })}
/>
|
4d0d5719
Shinner
提交审批增加备注和附件提交
|
542
543
544
545
546
|
<ApproveModal
callback={submitSaleTask}
open={approveOpen}
setOpen={setApproveOpen}
/>
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
547
548
549
|
</PageHeaderWrapper>
);
}
|