实习08

项目:PaaS平台

客户端:https://gateway-new-test.facethink.com/console/manage/orderRequest

运营端:https://gateway-new-test.facethink.com/admin/manage/orderRequest

负责:用户端和运营端的订单申请页面

需求文档:https://wiki.zhiyinlou.com/pages/viewpage.action?pageId=202300625

接口文档:https://wiki.zhiyinlou.com/pages/viewpage.action?pageId=203298542

问题/难点:

1、在订单申请列表中,订单有7种状态(0-6不同状态的展示)
2、在运营端表格操作列,需要通过状态对不同操作进行展示和禁用
3、运营端在表格中利用render函数渲染Poptip组件(iview)
4、通过name获取指定cookie

实现:

问题(1)

效果图
android

利用switch语句,通过列表传入的状态数据(0-6)展示对应的状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
render: (h, params) => {
let text;
switch (params.row.applyStatus) {
case 0:
case '0':
text = '待审核';
break;
case 1:
case '1':
text = '待支付';
break;
case 2:
case '2':
text = '待生效';
break;
case 3:
case '3':
text = '已生效';
break;
case 4:
case '4':
text = '已退款';
break;
case 5:
case '5':
text = '已过期';
break;
case 6:
case '6':
text = '未通过';
break;
default:
text = 'error, bad order status';
}
return h(
'div',
text,
);
},
问题(2)

效果图

android

通过css的pointerEvents属性,通过判断当前操作是否可以点击,如果不允许点击将按钮置灰

pointer-events 属性用于设置元素是否对鼠标事件做出反应。

相关代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 以审核操作为例子

h('a', {
style: {
marginRight: '10px',
color: params.row.applyStatus == 0 ? '#2d8cf0' : '#D7D7D7',
pointerEvents: params.row.applyStatus == 0 ? 'unset' : 'none',
},
on: {
click: () => {
this.examineOrder(params.row.applyNo);
},
},
}, '审核'),
问题(3)

效果图
android

iview这个组件库,如果想自定义表格内容,只能通过render函数,所以如果渲染组件库的组件,也得利用render

之后组件库的属性通过props对象来设置,点击事件通过on对象设置

相关代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
h(Poptip, {
// props对应组件库的属性
props: {
confirm: true,
title: '请再次确认申请信息是否正确,接口是否已经开通',
},
style: {
cursor: 'pointer',
marginRight: '10px',
color: params.row.applyStatus == 2 ? '#2d8cf0' : '#D7D7D7',
pointerEvents: params.row.applyStatus == 2 ? 'unset' : 'none',
},
// 组件库的回掉事件
on: {
'on-ok': () => {
this.forceOrder(params.row.applyNo);
},
},
}, '生效'),
问题(4)

documtn.cookie获取不到指定cookie,通过封装一个函数获取指定key的cookie

1
2
3
4
5
6
7
8
9
10
11
12
13
getCookie(cookieName) {
const strCookie = document.cookie;
const cookieList = strCookie.split(';');

for (let i = 0; i < cookieList.length; i++) {
const arr = cookieList[i].split('=');
if (cookieName === arr[0].trim()) {
return arr[1];
}
}

return '';
},

实习08
http://example.com/2023/04/18/internship08/
Author
John Doe
Posted on
April 18, 2023
Licensed under