项目: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)
效果图

利用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)
效果图
通过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)
效果图

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: { 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 ''; },
|