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
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
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
333
|
const columns: ColumnsType<API.ShopTaskItem> = [
{
title: "门店",
dataIndex: "shopName",
},
{
title: "零售任务(台)",
width: 100,
children: [
{
title: "合计",
dataIndex: "taskCount",
key: "taskCount",
},
{
title: "新能源车",
dataIndex: "newEnergyTaskCount",
key: "newEnergyTaskCount",
},
{
title: "传统燃油车",
dataIndex: "fuelVehicleTaskCount",
key: "fuelVehicleTaskCount",
},
{
title: "毛利任务(元)",
children: [
{
title: "单车",
dataIndex: "vehicleGrossProfitTask",
key: "vehicleGrossProfitTask",
},
{
title: "合计",
dataIndex: "grossProfitTaskTotal",
key: "grossProfitTaskTotal",
render: (text: string, record: API.ShopTaskItem) => {
return (
record.taskCount * record.vehicleGrossProfitTask
).toFixed(2);
},
},
],
},
],
},
{
title: "其中(台)",
children: [
{
title: "线索到店零售",
dataIndex: "clueDealTaskCount",
key: "clueDealTaskCount",
},
{
title: "首客试驾成交",
dataIndex: "testDriveTaskCount",
key: "testDriveTaskCount",
},
{
title: "攻坚车",
dataIndex: "tackCarTaskCount",
key: "tackCarTaskCount",
},
{
title: "车系",
dataIndex: "seriesTaskCount",
key: "seriesTaskCount",
},
],
},
{
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
增加零售任务分配菜单静态页面
|
334
335
336
|
return (
<PageHeaderWrapper title="零售任务分配">
<Card>
|
bdad4eb5
Shinner
调试自动分配接口
|
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
|
<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);
}}
/>
</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
增加零售任务分配菜单静态页面
|
374
375
376
|
</Row>
<Table
rowKey="id"
|
02999d30
Shinner
零售任务分配入口列表二级表头
|
377
|
bordered
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
378
|
loading={loading}
|
02999d30
Shinner
零售任务分配入口列表二级表头
|
379
|
columns={columns}
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
380
381
|
dataSource={data.shopTaskList}
pagination={false}
|
df7d79e7
Shinner
调试零售任务分配接口
|
382
|
scroll={{ y: 450 }}
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
383
|
summary={() => {
|
a21e5b52
Shinner
增加零售任务分配菜单静态页面
|
384
385
386
|
if (!data || !data.shopTaskList || data.shopTaskList.length <= 0) {
return null;
}
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
387
388
389
390
391
392
393
394
395
|
return (
<Table.Summary fixed="bottom">
<Table.Summary.Row
style={{
background: "#FAFAFA",
fontSize: 18,
fontWeight: 500,
}}
>
|
bdad4eb5
Shinner
调试自动分配接口
|
396
397
|
<Table.Summary.Cell index={1}>合计</Table.Summary.Cell>
<Table.Summary.Cell index={2}>
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
398
399
|
{data.totalTaskCount}
</Table.Summary.Cell>
|
bdad4eb5
Shinner
调试自动分配接口
|
400
|
<Table.Summary.Cell index={3}>
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
401
402
|
{data.newEnergyTaskCount}
</Table.Summary.Cell>
|
bdad4eb5
Shinner
调试自动分配接口
|
403
|
<Table.Summary.Cell index={4}>
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
404
405
|
{data.fuelVehicleTaskCount}
</Table.Summary.Cell>
|
02999d30
Shinner
零售任务分配入口列表二级表头
|
406
407
|
<Table.Summary.Cell index={5}>-</Table.Summary.Cell>
<Table.Summary.Cell index={6}>-</Table.Summary.Cell>
|
bdad4eb5
Shinner
调试自动分配接口
|
408
|
<Table.Summary.Cell index={7}>
|
eb77f47f
Shinner
增加表单交互
|
409
|
{data.clueDealTaskCount}
|
11ea8143
Shinner
调试零售任务分配接口
|
410
|
</Table.Summary.Cell>
|
bdad4eb5
Shinner
调试自动分配接口
|
411
|
<Table.Summary.Cell index={8}>
|
eb77f47f
Shinner
增加表单交互
|
412
413
|
{data.testDriveTaskCount}
</Table.Summary.Cell>
|
bdad4eb5
Shinner
调试自动分配接口
|
414
|
<Table.Summary.Cell index={9}>
|
4ddb4140
Shinner
调试零售任务分配接口
|
415
|
{data.tackCarTaskCount}
|
11ea8143
Shinner
调试零售任务分配接口
|
416
|
</Table.Summary.Cell>
|
bdad4eb5
Shinner
调试自动分配接口
|
417
|
<Table.Summary.Cell index={10}>
|
eb77f47f
Shinner
增加表单交互
|
418
419
|
{data.seriesTaskCount}
</Table.Summary.Cell>
|
bdad4eb5
Shinner
调试自动分配接口
|
420
421
|
<Table.Summary.Cell index={11} />
<Table.Summary.Cell index={12} />
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
422
423
424
425
|
</Table.Summary.Row>
</Table.Summary>
);
}}
|
02999d30
Shinner
零售任务分配入口列表二级表头
|
426
|
/>
|
df7d79e7
Shinner
调试零售任务分配接口
|
427
|
{data.revoke ? (
|
d24e7d31
Shinner
增加零售任务分配菜单静态页面
|
428
|
<Row align="middle" justify="center" style={{ marginTop: 50 }}>
|
df7d79e7
Shinner
调试零售任务分配接口
|
429
430
431
432
433
434
435
436
|
<Button onClick={cancelSaleTask}>撤销</Button>
<Button
type="primary"
style={{ marginLeft: 10 }}
onClick={viewProcess}
>
审批进度
</Button>
|
aeeb3492
Shinner
增加预览任务功能
|
437
438
439
440
441
442
443
|
<Button
type="primary"
style={{ marginLeft: 10 }}
onClick={handlePreviewTask}
>
预览任务
</Button>
|
df7d79e7
Shinner
调试零售任务分配接口
|
444
445
|
</Row>
) : (
|
4c5bad19
Shinner
预览任务按钮显示与是否审批无关;调整样式
|
446
447
|
<Row align="middle" justify="center" style={{ marginTop: 50 }}>
{!isReadOnly && (
|
4d0d5719
Shinner
提交审批增加备注和附件提交
|
448
|
<Button type="primary" onClick={() => setApproveOpen(true)}>
|
d24e7d31
Shinner
增加零售任务分配菜单静态页面
|
449
|
提交审批
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
450
|
</Button>
|
4c5bad19
Shinner
预览任务按钮显示与是否审批无关;调整样式
|
451
452
453
454
455
456
457
458
459
|
)}
<Button
type="primary"
style={{ marginLeft: 10 }}
onClick={handlePreviewTask}
>
预览任务
</Button>
</Row>
|
d24e7d31
Shinner
增加零售任务分配菜单静态页面
|
460
|
)}
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
461
|
</Card>
|
a21e5b52
Shinner
增加零售任务分配菜单静态页面
|
462
|
<Modal
|
aeeb3492
Shinner
增加预览任务功能
|
463
464
465
466
|
width={1200}
title="预览任务"
open={etpVisible}
onCancel={() => setEtpVisible(false)}
|
a21e5b52
Shinner
增加零售任务分配菜单静态页面
|
467
468
469
|
destroyOnClose
footer={null}
>
|
aeeb3492
Shinner
增加预览任务功能
|
470
471
472
473
474
475
476
477
478
|
<Row align="middle" justify="start" style={{ marginBottom: 20 }}>
<DatePicker
placeholder="月度"
style={{ width: 230 }}
picker="month"
value={targetMonth}
allowClear={false}
disabled
/>
|
6c7c2fa5
Shinner
编辑车系任务最大位数
|
479
|
{/* <Input.Search
|
aeeb3492
Shinner
增加预览任务功能
|
480
481
482
483
484
485
|
allowClear
placeholder="门店名称"
style={{ width: 263, marginLeft: 20 }}
onSearch={(v) => {
// todo setParams({ shopName: v }, true);
}}
|
6c7c2fa5
Shinner
编辑车系任务最大位数
|
486
|
/> */}
|
aeeb3492
Shinner
增加预览任务功能
|
487
488
489
|
</Row>
<EntryTaskPreview
params={previewTaskParams}
|
bdad4eb5
Shinner
调试自动分配接口
|
490
491
|
showAdviserModal={showAdviserModal}
showSeriesModal={showSeriesModal}
|
aeeb3492
Shinner
增加预览任务功能
|
492
493
494
495
496
497
498
499
500
501
502
503
|
/>
</Modal>
<Modal
width={1200}
title="销顾任务"
open={atpVisible}
onCancel={() => setAtpVisible(false)}
destroyOnClose
footer={null}
>
<AdviserTaskPreview
params={adviserTaskParams}
|
bdad4eb5
Shinner
调试自动分配接口
|
504
|
showSeriesModal={showSeriesModalByAdviser}
|
aeeb3492
Shinner
增加预览任务功能
|
505
506
507
508
509
510
511
512
513
514
515
|
/>
</Modal>
<Modal
width={600}
title="车系任务"
open={stpVisible}
onCancel={() => setStpVisible(false)}
destroyOnClose
footer={null}
>
<SeriesTaskPreview params={seriesTaskParams} />
|
a21e5b52
Shinner
增加零售任务分配菜单静态页面
|
516
|
</Modal>
|
bdad4eb5
Shinner
调试自动分配接口
|
517
518
519
520
|
<Modal
width={800}
title="零售任务快捷分配"
open={autoVisible}
|
90c2447f
Shinner
零售任务快捷分配交互优化
|
521
|
onCancel={() => setAutoVisible(false)}
|
bdad4eb5
Shinner
调试自动分配接口
|
522
523
|
destroyOnClose
footer={null}
|
a60f9f4a
Shinner
调试批量设置接口
|
524
|
maskClosable={false}
|
bdad4eb5
Shinner
调试自动分配接口
|
525
526
527
528
|
>
<SaleTaskAutoAssign
id={data.id}
value={data.shopTaskList}
|
90c2447f
Shinner
零售任务快捷分配交互优化
|
529
|
onCancel={() => setAutoVisible(false)}
|
a60f9f4a
Shinner
调试批量设置接口
|
530
|
onRefresh={handleAutoAssignRefresh}
|
bdad4eb5
Shinner
调试自动分配接口
|
531
532
533
534
535
536
|
/>
</Modal>
<Modal
width={800}
title="批量设置"
open={batchVisible}
|
90c2447f
Shinner
零售任务快捷分配交互优化
|
537
|
onCancel={() => setBatchVisible(false)}
|
bdad4eb5
Shinner
调试自动分配接口
|
538
539
|
destroyOnClose
footer={null}
|
a60f9f4a
Shinner
调试批量设置接口
|
540
|
maskClosable={false}
|
bdad4eb5
Shinner
调试自动分配接口
|
541
|
>
|
90c2447f
Shinner
零售任务快捷分配交互优化
|
542
543
544
545
546
|
<SaleTaskBatchSet
id={data.id}
onCancel={() => setBatchVisible(false)}
onRefresh={handleBatchSetRefresh}
/>
|
bdad4eb5
Shinner
调试自动分配接口
|
547
|
</Modal>
|
e26233dd
Shinner
更换审批进度组件
|
548
549
550
551
552
|
<ApprovalProgressModal
visible={approve.visible}
orderNo={approve.orderNo}
onCancel={() => setApprove({ visible: false, orderNo: "" })}
/>
|
4d0d5719
Shinner
提交审批增加备注和附件提交
|
553
554
555
556
557
|
<ApproveModal
callback={submitSaleTask}
open={approveOpen}
setOpen={setApproveOpen}
/>
|
32942bc1
Shinner
增加零售任务分配菜单静态页面
|
558
559
560
|
</PageHeaderWrapper>
);
}
|