Browse Source

优化

master
陈裕财 3 years ago
parent
commit
44e6b97e00
  1. 137
      src/components/Mdp/index.scss
  2. 6
      src/components/MdpDateRange/index.vue
  3. 8
      src/components/MdpDateRangeX/index.vue
  4. 8
      src/components/MdpDateX/index.vue
  5. 8
      src/components/MdpFieldX/index.vue
  6. 6
      src/components/MdpSelectDict/index.vue
  7. 8
      src/components/MdpSelectDictTag/index.vue
  8. 10
      src/components/MdpSelectDictX/index.vue
  9. 10
      src/components/MdpSelectUserX/index.vue
  10. 6
      src/views/xm/core/components/MdpSelectUserXm/index.vue
  11. 2
      src/views/xm/core/crowd/XmTaskCrowdMng.vue
  12. 2
      src/views/xm/core/xmMenu/XmEpicFeatures.vue
  13. 2
      src/views/xm/core/xmMenu/XmMenuMng.vue
  14. 4
      src/views/xm/core/xmTask/XmTaskMng.vue
  15. 2
      src/views/xm/core/xmTaskSbillDetail/XmTaskSbillDetailMng.vue
  16. 2
      src/views/xm/core/xmTaskWorkItem/XmSubTaskList.vue
  17. 2
      src/views/xm/core/xmWorkload/WorkloadSetDayList.vue
  18. 2
      src/views/xm/core/xmWorkload/WorkloadSetMonthList.vue
  19. 2
      src/views/xm/core/xmWorkload/XmWorkloadInfo.vue
  20. 2
      src/views/xm/core/xmWorkload/XmWorkloadMng.vue
  21. 2
      src/views/xm/core/xmWorkload/XmWorkloadSimpleList.vue
  22. 2
      src/views/xm/core/xmWorkload/XmWorkloadSimpleListForBizDate.vue

137
src/components/Mdp/index.scss

@ -4,15 +4,15 @@
margin-right: 5px;
align-items: center;
cursor: pointer;
height: 40px;
line-height: 40px;
height: 28px;
line-height: 28px;
.field-avater {
background-color: #ff9f73;
}
.field-info {
height: 40px;
line-height: 40px;
height: 28px;
line-height: 28px;
display: flex;
flex-direction: column;
.field-value {
@ -21,7 +21,7 @@
font-size: 0.75rem;
}
.field-value-center {
line-height: 40px;
line-height: 28px;
font-size: 0.75rem;
}
.field-label {
@ -32,12 +32,11 @@
}
}
.field-oper {
height: 40px;
line-height: 40px;
margin-left: 5px;
height: 28px;
line-height: 28px;
margin-right: 5px;
display: none;
}
}
}
.field-box:hover .field-info.enabled {
display: none;
@ -45,11 +44,14 @@
.field-box:hover .field-oper.enabled {
display: inline;
}
.dashed-circle {
width: 40px;
height: 40px;
border: 2px dashed #000000;
border-radius: 40px/40px;
height: 28px;
width: 28px;
line-height: 28px;
border: 2px dashed #000000;
border-radius: 50%;
}
.field-box:hover .dashed-circle {
border: 2px dashed #409eff;
@ -57,7 +59,7 @@
.avatar-container {
height: 40px;
height: 28px;
display: flex;
align-items: center;
.avatar-wrapper {
@ -66,8 +68,8 @@
flex-direction: row;
align-items: center;
.user-avatar {
height: 36px;
width: 36px;
height: 28px;
width: 28px;
border-radius: 50%;
margin-right: 5px;
}
@ -76,7 +78,108 @@
font-size: 0.75rem;
}
.el-icon-caret-bottom {
font-size: 22px;
font-size: 18px;
}
}
}
.field-box.small {
height: 32px;
line-height: 32px;
.field-info {
height: 32px;
line-height: 32px;
.field-value {
height: 20px;
line-height: 20px;
}
.field-value-center {
line-height: 32px;
}
.field-label {
height: 20px;
line-height: 20px;
}
}
.field-oper {
height: 32px;
line-height: 32px;
}
}
.small .dashed-circle {
height: 32px;
width: 32px;
line-height: 32px;
}
.small .avatar-container {
height: 32px;
.avatar-wrapper {
.user-avatar {
height: 32px;
width: 32px;
}
.username{
color: #7D7D7D;
font-size: 0.75rem;
}
.el-icon-caret-bottom {
font-size: 18px;
}
}
}
.field-box.medium {
height: 36px;
line-height: 36px;
.field-info {
height: 36px;
line-height: 36px;
.field-value {
height: 20px;
line-height: 20px;
}
.field-value-center {
line-height: 36px;
}
.field-label {
height: 20px;
line-height: 20px;
}
}
.field-oper {
height: 36px;
line-height: 36px;
}
}
.medium .dashed-circle {
height: 36px;
width: 36px;
line-height: 36px;
}
.medium .avatar-container {
height: 36px;
.avatar-wrapper {
.user-avatar {
height: 36px;
width: 36px;
}
.username{
color: #7D7D7D;
font-size: 0.75rem;
}
.el-icon-caret-bottom {
font-size: 18px;
}
}
}

6
src/components/MdpDateRange/index.vue

@ -1,5 +1,5 @@
<template>
<el-date-picker :type="type" :style="styleObj" v-model="dateRange" :value-format="valueFormat" :format="format"
<el-date-picker :size="size" :type="type" :style="styleObj" v-model="dateRange" :value-format="valueFormat" :format="format"
unlink-panels
:range-separator="rangeSepaSrator"
:start-placeholder="startPlaceholder"
@ -36,6 +36,10 @@ export default {
}
},
props: {
size:{
type:String,
default:'small',// medium/small/mini
},
value: {

8
src/components/MdpDateRangeX/index.vue

@ -1,6 +1,6 @@
<template>
<div class="field-box">
<el-avatar class="field-avater" :class="{'dashed-circle':avaterCpd.isNull}" :icon="avaterCpd.icon" :style="{backgroundColor:avaterCpd.color}">{{avaterCpd.innerText}}</el-avatar>
<div :class="{'field-box':true,'small':size=='small','medium':size=='medium'}">
<el-avatar :size="size" class="field-avater" :class="{'dashed-circle':avaterCpd.isNull}" :icon="avaterCpd.icon" :style="{backgroundColor:avaterCpd.color}">{{avaterCpd.innerText}}</el-avatar>
<div class="field-info" :class="{disabled:disabled===true,enabled:disabled!==true}">
<slot name="field-info" :value="dateRange">
@ -79,6 +79,10 @@ export default {
}
},
props: {
size:{
type:String,
default:'small',// medium/small/mini
},
disabled:{
type:Boolean,
default:false,

8
src/components/MdpDateX/index.vue

@ -1,7 +1,7 @@
<template>
<div class="field-box">
<el-avatar class="avater" :class="{'dashed-circle':avaterCpd.isNull}" :icon="avaterCpd.icon" :style="{backgroundColor:avaterCpd.color}">{{avaterCpd.innerText}}</el-avatar>
<div :class="{'field-box':true,'small':size=='small','medium':size=='medium'}">
<el-avatar :size="size" class="avater" :class="{'dashed-circle':avaterCpd.isNull}" :icon="avaterCpd.icon" :style="{backgroundColor:avaterCpd.color}">{{avaterCpd.innerText}}</el-avatar>
<div class="field-info" :class="{disabled:disabled===true,enabled:disabled!==true}">
<slot name="field-info">
@ -78,6 +78,10 @@
}
},
props: {
size:{
type:String,
default:'small',// medium/small/mini
},
disabled:{
type:Boolean,

8
src/components/MdpFieldX/index.vue

@ -1,9 +1,9 @@
<template>
<div class="field-box" @click="showSelect">
<div :class="{'field-box':true,'small':size=='small','medium':size=='medium'}" @click="showSelect">
<slot>
<slot name="avater" :value="myVal" :field="{label:label,color:color,getColor:getColor,icon:icon,getIcon:getIcon,disabled:disabled,clearable:clearable}">
<el-avatar class="field-avater" :class="{'dashed-circle':avaterCpd.isNull}" :icon="avaterCpd.icon" :style="{backgroundColor:avaterCpd.color}">{{avaterCpd.innerText}}</el-avatar>
<el-avatar :size="size" class="field-avater" :class="{'dashed-circle':avaterCpd.isNull}" :icon="avaterCpd.icon" :style="{backgroundColor:avaterCpd.color}">{{avaterCpd.innerText}}</el-avatar>
</slot>
<div class="field-info" :class="{disabled:disabled===true,enabled:disabled!==true}">
<slot name="info">
@ -90,6 +90,10 @@ import util from '@/common/js/util'
}
},
props: {
size:{
type:String,
default:'small',// medium/small/mini
},
disabled:{
type:Boolean,

6
src/components/MdpSelectDict/index.vue

@ -1,5 +1,5 @@
<template>
<el-select :placeholder="placeholder" class="my-select" ref="selectRef" v-model="myVal" @change="onChange" :clearable="clearable" @visible-change="$emit('visible-change',$event)" @focus="$emit('focus',$event)" @blur="$emit('blur',$event)" @clear="$emit('blur',$event)" @click="$emit('click',$event)">
<el-select :size="size" :placeholder="placeholder" ref="selectRef" v-model="myVal" @change="onChange" :clearable="clearable" @visible-change="$emit('visible-change',$event)" @focus="$emit('focus',$event)" @blur="$emit('blur',$event)" @clear="$emit('blur',$event)" @click="$emit('click',$event)">
<slot>
<el-option :style="styleObj" v-for="(item,index) in dict" :key="index" :value="item.id" :label="item.name">
<slot :item="item" :dict="dict">
@ -40,6 +40,10 @@
}
},
props: {
size:{
type:String,
default:'small',// medium/small/mini
},
placeholder:{
type:String,
default:"请选择",

8
src/components/MdpSelectDictTag/index.vue

@ -1,11 +1,11 @@
<template>
<div class="field-box">
<div :class="{'field-box':true,'small':size=='small','medium':size=='medium'}">
<div class="field-info" :class="{disabled:disabled===true,enabled:disabled!==true}">
<div v-if="(currentItem&&currentItem.id)"><el-tag :type="currentItem.className" :closable="closable" :effect="effect">{{currentItem.name}}</el-tag></div>
<div v-else> {{currentItem.name}} </div>
</div>
<div v-if="disabled!==true" class="field-oper" :class="{disabled:disabled===true,enabled:disabled!==true}">
<mdp-select-dict :dict="dict" v-model="myVal" @change="onChange" :clearable="closable" @visible-change="$emit('visible-change',$event)" @focus="$emit('focus',$event)" @blur="$emit('blur',$event)" @clear="$emit('blur',$event)" @click="$emit('click',$event)"></mdp-select-dict>
<mdp-select-dict :size="size" :dict="dict" v-model="myVal" @change="onChange" :clearable="closable" @visible-change="$emit('visible-change',$event)" @focus="$emit('focus',$event)" @blur="$emit('blur',$event)" @clear="$emit('blur',$event)" @click="$emit('click',$event)"></mdp-select-dict>
</div>
</div>
@ -50,6 +50,10 @@
}
},
props: {
size:{
type:String,
default:'small',// medium/small/mini
},
disabled:{
type:Boolean,
default:false,

10
src/components/MdpSelectDictX/index.vue

@ -1,7 +1,7 @@
<template>
<div class="field-box" @click="showSelect">
<div :class="{'field-box':true,'small':size=='small','medium':size=='medium'}" @click="showSelect">
<slot name="avater" class="field-avater">
<el-avatar
<el-avatar :size="size"
:class="{ 'dashed-circle': avaterCpd.isNull }"
:icon="avaterCpd.icon"
:style="{ backgroundColor: avaterCpd.color }"
@ -22,7 +22,7 @@
</div>
<div class="field-oper" :class="{disabled:disabled===true,enabled:disabled!==true}">
<slot name="oper">
<mdp-select-dict @visible-change="$emit('visible-change',$event)" @focus="$emit('focus',$event)" @blur="$emit('blur',$event)" @clear="$emit('blur',$event)" @click="$emit('click',$event)"
<mdp-select-dict :size="size" @visible-change="$emit('visible-change',$event)" @focus="$emit('focus',$event)" @blur="$emit('blur',$event)" @clear="$emit('blur',$event)" @click="$emit('click',$event)"
v-if="disabled !== true"
:dict="dict"
ref="selectRef"
@ -130,6 +130,10 @@ export default {
},
},
props: {
size:{
type:String,
default:'small',// medium/small/mini
},
disabled: {
type: Boolean,
default: false,

10
src/components/MdpSelectUserX/index.vue

@ -1,7 +1,7 @@
<template>
<el-row>
<div class="field-box">
<el-avatar class="avater" :class="{'dashed-circle':avaterCpd.isNull}" :style="{backgroundColor:avaterCpd.color}" :src="getHeadimgurl(avaterCpd.userid,avaterCpd.headimgurl)" @error="onImgError(avaterCpd.userid,$event)">{{avaterCpd.innerText}}</el-avatar>
<div :class="{'field-box':true,'small':size=='small','medium':size=='medium'}">
<el-avatar :size="size" class="avater" :class="{'dashed-circle':avaterCpd.isNull}" :style="{backgroundColor:avaterCpd.color}" :src="getHeadimgurl(avaterCpd.userid,avaterCpd.headimgurl)" @error="onImgError(avaterCpd.userid,$event)">{{avaterCpd.innerText}}</el-avatar>
<div class="field-info" :class="{disabled:disabled===true,enabled:disabled!==true}">
<slot name="info" :value="myVal">
@ -14,7 +14,7 @@
</div>
<div v-if="disabled!==true" class="field-oper" :value="myVal" :class="{disabled:disabled===true,enabled:disabled!==true}">
<slot name="oper">
<el-select v-model="myVal" @change="onSelectChange" :clearable="clearable" value-key="userid" @visible-change="$emit('visible-change',$event)" @focus="$emit('focus',$event)" @blur="$emit('blur',$event)" @clear="$emit('blur',$event)" @click="$emit('click',$event)">
<el-select :size="size" v-model="myVal" @change="onSelectChange" :clearable="clearable" value-key="userid" @visible-change="$emit('visible-change',$event)" @focus="$emit('focus',$event)" @blur="$emit('blur',$event)" @clear="$emit('blur',$event)" @click="$emit('click',$event)">
<el-option disabled value="" style="margin-bottom:5px;">
<el-row><el-button :type="deptUserVisible?'':'primary'" @click.stop="deptUserVisible=false">常用用户</el-button> <el-button :type="deptUserVisible?'primary':''" @click.stop="deptUserVisible=true"></el-button><el-button v-if="projectId" :type="projectVisible?'primary':''" @click.stop="projectVisible=true"></el-button> </el-row>
</el-option>
@ -128,6 +128,10 @@
}
},
props: {
size:{
type:String,
default:'small',// medium/small/mini
},
projectId:{
type:String,
default:''

6
src/views/xm/core/components/MdpSelectUserXm/index.vue

@ -1,6 +1,6 @@
<template>
<el-row>
<div class="field-box">
<div :class="{'field-box':true,'small':size=='small','medium':size=='medium'}">
<div class="avatar-container">
<div class="avatar-wrapper">
<img v-if="avaterCpd.userid" class="user-avatar" :class="{'dashed-circle':avaterCpd.isNull}" :style="{backgroundColor:avaterCpd.color}" :src="getHeadimgurl(avaterCpd.userid,avaterCpd.headimgurl)" @error="onImgError(avaterCpd.userid,$event)"></img>
@ -154,6 +154,10 @@
}
},
props: {
size:{
type:String,
default:'small',// medium/small/mini
},
projectId:{
type:String,
default:''

2
src/views/xm/core/crowd/XmTaskCrowdMng.vue

@ -208,7 +208,7 @@
:tree-props="{ children: 'children' }"
row-key="id"
ref="table"
:row-style="{height:'60px'}"
>
<el-table-column
label="全选"

2
src/views/xm/core/xmMenu/XmEpicFeatures.vue

@ -79,7 +79,7 @@
</div>
</el-row>
<el-row >
<el-table ref="table" :cell-style="cellStyleCalc" :expand-row-keys="expandRowKeysCpd" :header-cell-style="cellStyleCalc" :row-style="{height:'60px'}" stripe fit border :height="maxTableHeight" :data="xmMenusTreeData" current-row-key="menuId" row-key="menuId" :tree-props="{children: 'children'}" @sort-change="sortChange" highlight-current-row v-loading="load.list" @selection-change="selsChange" @row-click="rowClick"
<el-table ref="table" :cell-style="cellStyleCalc" :expand-row-keys="expandRowKeysCpd" :header-cell-style="cellStyleCalc" stripe fit border :height="maxTableHeight" :data="xmMenusTreeData" current-row-key="menuId" row-key="menuId" :tree-props="{children: 'children'}" @sort-change="sortChange" highlight-current-row v-loading="load.list" @selection-change="selsChange" @row-click="rowClick"
element-loading-text="努力加载中"
element-loading-spinner="el-icon-loading"
>

2
src/views/xm/core/xmMenu/XmMenuMng.vue

@ -226,7 +226,7 @@
</span>
</el-row>
<el-row v-if="displayType=='table'">
<el-table element-loading-text="努力加载中" element-loading-spinner="el-icon-loading" :cell-style="cellStyleCalc" :expand-row-keys="expandRowKeysCpd" :header-cell-style="cellStyleCalc" :row-style="{height:'60px'}" stripe fit border ref="table" :height="maxTableHeight" :data="xmMenusTreeData" current-row-key="menuId" row-key="menuId" @sort-change="sortChange" highlight-current-row v-loading="load.list" @selection-change="selsChange" @row-click="rowClick">
<el-table element-loading-text="努力加载中" element-loading-spinner="el-icon-loading" :cell-style="cellStyleCalc" :expand-row-keys="expandRowKeysCpd" :header-cell-style="cellStyleCalc" stripe fit border ref="table" :height="maxTableHeight" :data="xmMenusTreeData" current-row-key="menuId" row-key="menuId" @sort-change="sortChange" highlight-current-row v-loading="load.list" @selection-change="selsChange" @row-click="rowClick">
<el-table-column sortable type="selection" width="40"></el-table-column>
<el-table-column prop="menuName" label="故事名称" min-width="300" fixed="left">

4
src/views/xm/core/xmTask/XmTaskMng.vue

@ -372,7 +372,7 @@
tooltip-effect="light"
:height="tableHeight"
row-key="id"
:row-style="{height:'60px'}"
>
<el-table-column
label="全选"
@ -411,7 +411,7 @@
width="100"
>
<template slot-scope="scope">
<mdp-select-dict-tag @visible-change="selectVisible(scope.row,$event)" :dict="dicts['taskState']" v-model="scope.row.taskState" placeholder="任务状态" style="display:block;" @change="editXmTaskSomeFields(scope.row,'taskState',$event)">
<mdp-select-dict-tag size="small" @visible-change="selectVisible(scope.row,$event)" :dict="dicts['taskState']" v-model="scope.row.taskState" placeholder="任务状态" style="display:block;" @change="editXmTaskSomeFields(scope.row,'taskState',$event)">
</mdp-select-dict-tag>
</template>
</el-table-column>

2
src/views/xm/core/xmTaskSbillDetail/XmTaskSbillDetailMng.vue

@ -10,7 +10,7 @@
</el-row>
<el-row class="padding-top">
<!--列表 XmTaskSbillDetail 工时登记表-->
<el-table ref="xmTaskSbillDetailTable" :row-style="{height:'50px'}" :data="xmTaskSbillDetails" :height="maxTableHeight" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table ref="xmTaskSbillDetailTable" :data="xmTaskSbillDetails" :height="maxTableHeight" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column type="selection" width="55" show-overflow-tooltip fixed="left"></el-table-column>
<el-table-column sortable type="index" width="55" show-overflow-tooltip fixed="left"></el-table-column>
<!--

2
src/views/xm/core/xmTaskWorkItem/XmSubTaskList.vue

@ -1,7 +1,7 @@
<template>
<el-row v-show="xmTasks.length>0">
<el-row>
<el-table :data="xmTasks" :row-style="{height:'60px'}" :max-height="400" v-loading="load.list" @selection-change="selsChange" @row-click="rowClick">
<el-table :data="xmTasks" :max-height="400" v-loading="load.list" @selection-change="selsChange" @row-click="rowClick">
<el-table-column type="selection" label="全选"></el-table-column>
<el-table-column prop="name" label="名称">
<template slot-scope="scope">

2
src/views/xm/core/xmWorkload/WorkloadSetDayList.vue

@ -55,7 +55,7 @@
<el-table
ref="xmWorkloadTable"
:data="xmProjectWorkloadSetDays"
:row-style="{ height: '50px' }"
highlight-current-row
v-loading="load.list"
@row-click="rowClick"

2
src/views/xm/core/xmWorkload/WorkloadSetMonthList.vue

@ -55,7 +55,7 @@
<el-table
ref="xmWorkloadTable"
:data="xmProjectWorkloadSetMonths"
:row-style="{ height: '50px' }"
highlight-current-row
v-loading="load.list"
@row-click="rowClick"

2
src/views/xm/core/xmWorkload/XmWorkloadInfo.vue

@ -49,7 +49,7 @@
</el-row>
<el-row class="padding-top">
<!--列表 XmWorkload 工时登记表-->
<el-table ref="xmWorkloadTable" :data="xmWorkloads" :row-style="{height:'50px'}" :height="maxTableHeight" @sort-change="sortChange" highlight-current-row
<el-table ref="xmWorkloadTable" :data="xmWorkloads" :height="maxTableHeight" @sort-change="sortChange" highlight-current-row
v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;" >
<el-table-column type="selection" width="55" show-overflow-tooltip fixed="left"></el-table-column>
<el-table-column sortable type="index" width="55" show-overflow-tooltip fixed="left"></el-table-column>

2
src/views/xm/core/xmWorkload/XmWorkloadMng.vue

@ -47,7 +47,7 @@
</el-row>
<el-row class="padding-top">
<!--列表 XmWorkload 工时登记表-->
<el-table ref="xmWorkloadTable" :data="xmWorkloads" :row-style="{height:'50px'}" :height="maxTableHeight" @sort-change="sortChange" highlight-current-row
<el-table ref="xmWorkloadTable" :data="xmWorkloads" :height="maxTableHeight" @sort-change="sortChange" highlight-current-row
v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;" :header-cell-style="{'text-align':'center'}"
:cell-style="{'text-align':'center'}">
<el-table-column type="selection" width="55" show-overflow-tooltip fixed="left"></el-table-column>

2
src/views/xm/core/xmWorkload/XmWorkloadSimpleList.vue

@ -13,7 +13,7 @@
<el-tag type="warning">{{xmTask.budgetWorkload>0?Math.round(xmTask.actWorkload/xmTask.budgetWorkload*100):0}}%&nbsp;</el-tag>
</el-descriptions-item>
</el-descriptions>
<el-table ref="xmWorkloadTable" :max-height="maxTableHeight" :data="xmWorkloads" :row-style="{height:'50px'}" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table ref="xmWorkloadTable" :max-height="maxTableHeight" :data="xmWorkloads" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column type="selection" width="55" show-overflow-tooltip></el-table-column>
<el-table-column prop="username" label="姓名" width="120" show-overflow-tooltip>
<template slot-scope="scope">

2
src/views/xm/core/xmWorkload/XmWorkloadSimpleListForBizDate.vue

@ -1,7 +1,7 @@
<template>
<section>
<el-row class="padding-top">
<el-table ref="xmWorkloadTable" :max-height="maxTableHeight" :data="xmWorkloads" :row-style="{height:'50px'}" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table ref="xmWorkloadTable" :max-height="maxTableHeight" :data="xmWorkloads" @sort-change="sortChange" highlight-current-row v-loading="load.list" border @selection-change="selsChange" @row-click="rowClick" style="width: 100%;">
<el-table-column type="selection" width="55" show-overflow-tooltip></el-table-column>
<el-table-column prop="username" label="姓名" width="120" show-overflow-tooltip>
<template slot-scope="scope">

Loading…
Cancel
Save