apply-clients 7.1.36-1 → 7.1.36-yuchuan-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/dev-server.js +8 -2
- package/dist-android.7z +0 -0
- package/dist.7z +0 -0
- package/package.json +1 -1
- package/rebel.xml +16 -0
- package/src/AndroidApp.vue +35 -35
- package/src/apply.js +31 -4
- package/src/applyAndroid.js +83 -76
- package/src/components/android/AppSign.vue +13 -10
- package/src/components/android/Process/AppExplorationUser.vue +454 -454
- package/src/components/android/Process/AppServiceControl.vue +3 -3
- package/src/components/android/Process/Processes/AppChaiChuInfo.vue +546 -0
- package/src/components/android/Process/Processes/AppDevicesManagement.vue +2 -1
- package/src/components/android/Process/Processes/AppInstallationDetails.vue +69 -20
- package/src/components/android/Process/Processes/newAppDevicesManagement.vue +2 -1
- package/src/components/android/Process/Processes/newAppInstallationDetails.vue +5 -5
- package/src/components/android/Supervisory/AppProcessSupervisory.vue +334 -298
- package/src/components/android/Task/GuanXianJianShe/AppExplorationGuanXian.vue +432 -0
- package/src/components/android/Task/ShenHe/BuZhangShenHe.vue +64 -0
- package/src/components/android/Task/ShenHe/JingLiShenHe.vue +64 -0
- package/src/components/android/Task/UpBuild/UpJianLi.vue +98 -95
- package/src/components/product/ApplyCharge/ApplyChargeList.vue +27 -0
- package/src/components/product/ApplyGaiXianCharge/ApplyGaiXianChargeList.vue +198 -0
- package/src/components/product/ApplyGaiXianCharge/ApplyGaiXianChargeSearch.vue +30 -0
- package/src/components/product/ApplyGuanXian/GuanXianCaiLiao.vue +235 -0
- package/src/components/product/ApplyGuanXian/GuanXianExplorationSelect.vue +323 -0
- package/src/components/product/ApplyGuanXian/GuanXianExplorationUser.vue +144 -0
- package/src/components/product/ApplyGuanXian/GuanXianSupervisoryhCart.vue +119 -0
- package/src/components/product/ApplyGuanXian/TabButton.vue +157 -0
- package/src/components/product/ApplyGuanXian/Tabs.vue +67 -0
- package/src/components/product/Function/InstallInfoSelect.vue +370 -370
- package/src/components/product/Function/Service/FunctionServiceControl.vue +475 -475
- package/src/components/product/Ignition/IgnitionList.vue +236 -232
- package/src/components/product/Ignition/IgnitionListManage.vue +69 -28
- package/src/components/product/Ignition/IgnitionRecord.vue +56 -17
- package/src/components/product/List/ShowDevices.vue +279 -277
- package/src/components/product/Print/OrderPrint/printChaiChuOrder.vue +260 -0
- package/src/components/product/Process/ExplorationSelect.vue +581 -566
- package/src/components/product/Process/ExplorationUser.vue +158 -155
- package/src/components/product/Process/NewExplorationUser.vue +184 -0
- package/src/components/product/Process/Processes/ApplyChaiChuInfo.vue +587 -0
- package/src/components/product/Process/Processes/InstallationDetails.vue +86 -33
- package/src/components/product/Process/Processes/Print/printCharge.vue +5 -1
- package/src/components/product/Process/Processes/Print/printPaymentApproval.vue +224 -221
- package/src/components/product/Process/Processes/Print/printPaymentSubject.vue +170 -0
- package/src/components/product/Process/Processes/chargeManagement.vue +24 -6
- package/src/components/product/Process/Processes/devicesManagement.vue +2 -1
- package/src/components/product/Process/Processes/newInstallationDetails.vue +3 -3
- package/src/components/product/Process/Processes/selectChaiChuUserinfo.vue +230 -0
- package/src/components/product/Process/Processes/selectOldUserinfo.vue +241 -241
- package/src/components/product/Process/Service/ServiceControl.vue +178 -16
- package/src/components/product/Report/ReportItems.vue +79 -0
- package/src/components/product/Report/apply-stair-anzhuang.vue +361 -0
- package/src/components/product/Report/apply-stair-kaifa.vue +138 -0
- package/src/components/product/Report/apply-stair-tongqi.vue +137 -0
- package/src/components/product/Report/apply-stair-wtongqi.vue +138 -0
- package/src/components/product/ServiceView.vue +644 -632
- package/src/components/product/Supervisory/Service/SupervisoryServiceControl.vue +594 -551
- package/src/components/product/Supervisory/SupervisoryList.vue +78 -26
- package/src/main.js +27 -27
- package/static/images/lefticon//347/273/274/345/220/210/344/270/232/345/212/241.png +0 -0
- package/static/images/lefticon//347/273/274/345/220/210/346/237/245/350/257/242.png +0 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="flex-row">
|
|
3
|
+
<div class="basic-main">
|
|
4
|
+
<div :class="showData ? 'top' : 'auto'">
|
|
5
|
+
<guan-xian-exploration-select v-ref:query :show-data="showData"></guan-xian-exploration-select>
|
|
6
|
+
</div>
|
|
7
|
+
<div v-if="showtotal" style="height: 89%">
|
|
8
|
+
<div class="col-sm-2" style="margin-top: 20px">
|
|
9
|
+
<guan-xian-supervisoryh-cart :selectdata="selectdata"></guan-xian-supervisoryh-cart>
|
|
10
|
+
</div>
|
|
11
|
+
<tabset v-ref:tabs :close="false" :active.sync="active">
|
|
12
|
+
<tab :header='selectdata.defname'>
|
|
13
|
+
<service-control v-ref:service :selectdata="selectdata"></service-control>
|
|
14
|
+
</tab>
|
|
15
|
+
<tab header='附件'>
|
|
16
|
+
<apply-upload :blodid="selectdata.f_process_id"
|
|
17
|
+
:isupload = "true"
|
|
18
|
+
:isdelete="true"
|
|
19
|
+
:isusetype="true"
|
|
20
|
+
:isremark = "true"
|
|
21
|
+
:takeimg="true"
|
|
22
|
+
:issearch="true"
|
|
23
|
+
:defname="selectdata.defname">
|
|
24
|
+
</apply-upload>
|
|
25
|
+
</tab>
|
|
26
|
+
</tabset>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
</template>
|
|
31
|
+
<script>
|
|
32
|
+
import Vue from 'vue'
|
|
33
|
+
import {HttpResetClass} from 'vue-client'
|
|
34
|
+
export default {
|
|
35
|
+
title: '管线建设流程',
|
|
36
|
+
data () {
|
|
37
|
+
return {
|
|
38
|
+
showData: true, // 控制列表数据
|
|
39
|
+
showtotal: false, // 详情显示
|
|
40
|
+
selectdata: {},
|
|
41
|
+
xmlname: '', // 配置文件名
|
|
42
|
+
active: 0 // 配置文件名
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
ready () {
|
|
46
|
+
console.log('=============用户信息=================')
|
|
47
|
+
console.log(this.$login.f)
|
|
48
|
+
console.log(this.$login.r)
|
|
49
|
+
},
|
|
50
|
+
methods: {
|
|
51
|
+
// 获取页面配置json文件
|
|
52
|
+
async loadName () {
|
|
53
|
+
|
|
54
|
+
let data = {
|
|
55
|
+
workname: this.selectdata.processname
|
|
56
|
+
}
|
|
57
|
+
let res = await this.$resetpost(
|
|
58
|
+
'rs/logic/ApplyGetConfigs',
|
|
59
|
+
{data: data},
|
|
60
|
+
{resolveMsg: null, rejectMsg: '配置数据获取失败!!!'}
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
Vue.prototype.$workflow_vue = res.data
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
events: {
|
|
67
|
+
'onMessage' (data) {
|
|
68
|
+
console.log('接收消息')
|
|
69
|
+
console.log(data)
|
|
70
|
+
if (data.type === 'apply-task') {
|
|
71
|
+
this.$refs.query.$refs.cp.$refs.cri.search()
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
// 刷新控制层
|
|
75
|
+
async 'breakControl' (servicedata) {
|
|
76
|
+
|
|
77
|
+
if (servicedata.id) {
|
|
78
|
+
let data = {
|
|
79
|
+
condition: `u.id = ${servicedata.id}`,
|
|
80
|
+
data: {
|
|
81
|
+
userid: this.$login.f.id,
|
|
82
|
+
f_filiale: this.$login.f.f_fengongsi
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
let res = await this.$resetpost(
|
|
86
|
+
'rs/sql/getGuanXianApply',
|
|
87
|
+
{data: data},
|
|
88
|
+
{resolveMsg: null, rejectMsg: '数据更新失败,请手查询更新!!!'}
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
this.selectdata = res.data[0]
|
|
92
|
+
} else {
|
|
93
|
+
this.selectdata = servicedata
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
this.showtotal = false
|
|
97
|
+
this.$nextTick(() => {
|
|
98
|
+
this.showtotal = true
|
|
99
|
+
})
|
|
100
|
+
|
|
101
|
+
},
|
|
102
|
+
// 初始化
|
|
103
|
+
async 'apply' (val) {
|
|
104
|
+
this.showtotal = false
|
|
105
|
+
this.selectdata = val
|
|
106
|
+
|
|
107
|
+
// 次方法必须同步执行,否则后续会出问题
|
|
108
|
+
// 获取页面json配置文件
|
|
109
|
+
await this.loadName()
|
|
110
|
+
|
|
111
|
+
// 显示详细
|
|
112
|
+
this.showtotal = true
|
|
113
|
+
// 关闭列表数据
|
|
114
|
+
this.showData = false
|
|
115
|
+
// 关闭分页
|
|
116
|
+
this.$refs.query.$refs.cp.pager = false
|
|
117
|
+
},
|
|
118
|
+
'search' () {
|
|
119
|
+
this.selectdata = {}
|
|
120
|
+
// 关闭详细
|
|
121
|
+
this.showtotal = false
|
|
122
|
+
// 显示列表数据
|
|
123
|
+
this.showData = true
|
|
124
|
+
// 显示分页
|
|
125
|
+
this.$refs.query.$refs.cp.pager = true
|
|
126
|
+
// 调用查询
|
|
127
|
+
this.$refs.query.$refs.cp.$refs.cri.search()
|
|
128
|
+
},
|
|
129
|
+
'loadPage' () {
|
|
130
|
+
this.selectdata = {}
|
|
131
|
+
// 关闭详细
|
|
132
|
+
this.showtotal = false
|
|
133
|
+
// 显示列表数据
|
|
134
|
+
this.showData = true
|
|
135
|
+
// 显示分页
|
|
136
|
+
this.$refs.query.$refs.cp.pager = true
|
|
137
|
+
// 调用查询
|
|
138
|
+
this.$refs.query.$refs.cp.loadPage(this.$refs.query.model.pageIndex)
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
watch: {
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
</script>
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div style="overflow: auto;background-color: #FFFFFF;">
|
|
3
|
+
<div class="row" v-for="(i,row) in defnames">
|
|
4
|
+
<div :class="row.id === selectdata.actid ? 'item selectIndex' : 'item'" @click="getdefname(row)" >
|
|
5
|
+
{{ row.defname }}
|
|
6
|
+
<br>
|
|
7
|
+
{{i === (defnames.length) - 1 ? row.sendtime : row.finishtime}}
|
|
8
|
+
</div>
|
|
9
|
+
<div class="arrow glyphicon glyphicon-menu-down" v-if="i !== defnames.length-1" aria-hidden="true"></div>
|
|
10
|
+
</div>
|
|
11
|
+
</div>
|
|
12
|
+
</template>
|
|
13
|
+
|
|
14
|
+
<script>
|
|
15
|
+
import {HttpResetClass} from 'vue-client'
|
|
16
|
+
import {isEmpty} from '../../Util'
|
|
17
|
+
export default {
|
|
18
|
+
title: "流程节点",
|
|
19
|
+
props:['selectdata'],
|
|
20
|
+
data(){
|
|
21
|
+
return{
|
|
22
|
+
defnames: [] // 所有节点
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
created () {
|
|
26
|
+
this.initial()
|
|
27
|
+
},
|
|
28
|
+
methods :{
|
|
29
|
+
async initial () {
|
|
30
|
+
// 获取流程节点信息
|
|
31
|
+
|
|
32
|
+
let data = {
|
|
33
|
+
processid: this.selectdata.f_process_id
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
let res = await this.$resetpost(
|
|
37
|
+
'rs/sql/getAllNode',
|
|
38
|
+
{data: data},
|
|
39
|
+
{resolveMsg: null, rejectMsg: '流程节点信息获取失败!!!'}
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
this.defnames = res.data
|
|
43
|
+
},
|
|
44
|
+
//点击获取节点名
|
|
45
|
+
getdefname (row) {
|
|
46
|
+
// 发起节点都可查看
|
|
47
|
+
if(row.defname === this.$workflow_vue.start_activity){
|
|
48
|
+
row = Object.assign({},this.selectdata,row)
|
|
49
|
+
this.$dispatch('apply', row)
|
|
50
|
+
return
|
|
51
|
+
}
|
|
52
|
+
if(this.check(row.actorexpression)){
|
|
53
|
+
row = Object.assign({},this.selectdata,row)
|
|
54
|
+
this.$dispatch('apply', row)
|
|
55
|
+
return
|
|
56
|
+
}
|
|
57
|
+
this.$showMessage("对不起,您没有查看此节点的权限!")
|
|
58
|
+
},
|
|
59
|
+
// 检测是否有权限
|
|
60
|
+
check (actorexpression){
|
|
61
|
+
let str = null
|
|
62
|
+
|
|
63
|
+
if (isEmpty(actorexpression)) {
|
|
64
|
+
return true
|
|
65
|
+
}
|
|
66
|
+
return true
|
|
67
|
+
if (actorexpression.indexOf('D') === 0) {
|
|
68
|
+
str = actorexpression.substring(2, actorexpression.length-1)
|
|
69
|
+
return this.$login.f.f_parentname.includes(str)
|
|
70
|
+
}
|
|
71
|
+
if (actorexpression.indexOf('RS') === 0) {
|
|
72
|
+
for (str of actorexpression.substring(3, actorexpression.length-1).split(',')) {
|
|
73
|
+
return this.$login.f.rolesnames.includes(str)
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (actorexpression.indexOf('R') === 0) {
|
|
78
|
+
str = actorexpression.substring(2, actorexpression.length-1)
|
|
79
|
+
return this.$login.f.rolesnames.includes(str)
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if (actorexpression.indexOf('PI') === 0) {
|
|
83
|
+
str = actorexpression.substring(3, actorexpression.length-1)
|
|
84
|
+
return this.$login.f.id.includes(str)
|
|
85
|
+
}
|
|
86
|
+
if (actorexpression.indexOf('P') === 0) {
|
|
87
|
+
str = actorexpression.substring(2, actorexpression.length-1)
|
|
88
|
+
return this.$login.f.name.includes(str)
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return this.$login.f.rolesnames.includes('流程监控')
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
watch:{
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
</script>
|
|
98
|
+
|
|
99
|
+
<style scoped>
|
|
100
|
+
.row{
|
|
101
|
+
text-align: center;
|
|
102
|
+
height: auto;
|
|
103
|
+
margin-right: 20px;
|
|
104
|
+
}
|
|
105
|
+
.item{
|
|
106
|
+
border-radius: 2em;
|
|
107
|
+
border: 1px solid silver;
|
|
108
|
+
line-height: 25px;
|
|
109
|
+
}
|
|
110
|
+
.arrow{
|
|
111
|
+
width: 100%;
|
|
112
|
+
color: #5ac0d9;
|
|
113
|
+
font-weight: bold;
|
|
114
|
+
}
|
|
115
|
+
.selectIndex{
|
|
116
|
+
background-color: #5ac0d9;
|
|
117
|
+
color: #ffffff;
|
|
118
|
+
}
|
|
119
|
+
</style>
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class='flex foot_tabset1'>
|
|
3
|
+
<!-- Nav tabs -->
|
|
4
|
+
<ul class="nav nav-{{navStyle}}" role="tablist" style="margin-left: 1%;overflow: hidden">
|
|
5
|
+
<li style="margin: 5px"
|
|
6
|
+
:id="'vc-tabset-li-'+attach +'-'+$index"
|
|
7
|
+
v-for="r in renderData"
|
|
8
|
+
@click.prevent="handleTabListClick($index, r)"
|
|
9
|
+
:disabled="r.disabled"
|
|
10
|
+
>
|
|
11
|
+
<button class="button_new" style="width: max-content" v-bind:class="{
|
|
12
|
+
'btn-succ': ($index === active),
|
|
13
|
+
'disabled': r.disabled
|
|
14
|
+
}">
|
|
15
|
+
<slot name="header">
|
|
16
|
+
{{r.header}}
|
|
17
|
+
</slot>
|
|
18
|
+
<!-- 关闭按钮 -->
|
|
19
|
+
<span class="glyphicon glyphicon-remove" style="margin-left: 15px;" @click="deletetTab(r)" v-if="close" :id="'vc-tabset-close-'+attach +'-'+$index"></span>
|
|
20
|
+
</button>
|
|
21
|
+
|
|
22
|
+
</li>
|
|
23
|
+
</ul>
|
|
24
|
+
|
|
25
|
+
<!-- Tab panes -->
|
|
26
|
+
<div class="tab-content span" v-el:tab-content>
|
|
27
|
+
<slot></slot>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
</template>
|
|
31
|
+
|
|
32
|
+
<script>
|
|
33
|
+
import {remove} from 'vue-client/src/stores/Remove.js'
|
|
34
|
+
|
|
35
|
+
export default {
|
|
36
|
+
props: {
|
|
37
|
+
navStyle: {
|
|
38
|
+
type: String,
|
|
39
|
+
default: 'tabs'
|
|
40
|
+
},
|
|
41
|
+
effect: {
|
|
42
|
+
type: String,
|
|
43
|
+
default: 'fadein'
|
|
44
|
+
},
|
|
45
|
+
active: {
|
|
46
|
+
type: Number,
|
|
47
|
+
default: 0
|
|
48
|
+
},
|
|
49
|
+
close: {
|
|
50
|
+
type: Boolean,
|
|
51
|
+
default: false
|
|
52
|
+
},
|
|
53
|
+
attach: {
|
|
54
|
+
type: String,
|
|
55
|
+
default: 'vuestrap'
|
|
56
|
+
},
|
|
57
|
+
content: {}
|
|
58
|
+
},
|
|
59
|
+
ready () {
|
|
60
|
+
remove.$on('remove', (name) => {
|
|
61
|
+
//tag
|
|
62
|
+
this.$removeTab(name)
|
|
63
|
+
})
|
|
64
|
+
},
|
|
65
|
+
data () {
|
|
66
|
+
return {
|
|
67
|
+
// 数据格式:{comp, header,disabled}
|
|
68
|
+
// - comp: 当前页签对应的tab组件
|
|
69
|
+
renderData: []
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
methods: {
|
|
73
|
+
handleTabListClick (index, el) {
|
|
74
|
+
// 没有打开过, 则添加显示
|
|
75
|
+
//tag
|
|
76
|
+
//tag
|
|
77
|
+
if (!this.$parent.show.includes(el.header)) {
|
|
78
|
+
this.$parent.show.push(el.header)
|
|
79
|
+
}
|
|
80
|
+
if (el.comp._scope && el.comp._scope.tab) {
|
|
81
|
+
this.$dispatch('tab-changed', el.comp._scope.tab.comp.name)
|
|
82
|
+
}
|
|
83
|
+
if (!el.disabled) this.active = index
|
|
84
|
+
},
|
|
85
|
+
// deletetab函数为自己添加
|
|
86
|
+
deletetTab (el) {
|
|
87
|
+
this.$removeTab(el.comp._scope.tab.comp.name)
|
|
88
|
+
remove.$emit('delete', el.comp._scope.tab.comp.name)
|
|
89
|
+
},
|
|
90
|
+
// 根据删除也下标,修改所有页签的下标
|
|
91
|
+
modifyAllIndex (index) {
|
|
92
|
+
let cur = this.active
|
|
93
|
+
this.$nextTick(() => {
|
|
94
|
+
// 关闭页签以后的多有页签的的下标向前挪动一位,之前的页签不动
|
|
95
|
+
for (var i = index; i < this.renderData.length; i++) {
|
|
96
|
+
this.renderData[i].comp.index -= 1
|
|
97
|
+
}
|
|
98
|
+
// 修改激活页
|
|
99
|
+
// 获取当前激活页签下标,关闭在当前激活页之后(包含当前激活页),当前激活页下标不变
|
|
100
|
+
// 当关闭当前激活页之前(激活页向前移动一位)
|
|
101
|
+
if (this.active > index || this.active === this.renderData.length) {
|
|
102
|
+
this.active = cur - 1
|
|
103
|
+
} else if (cur === 0) {
|
|
104
|
+
this.active = 0
|
|
105
|
+
} else {
|
|
106
|
+
this.active = cur
|
|
107
|
+
}
|
|
108
|
+
if (this.active === -1) {
|
|
109
|
+
this.$dispatch('tab-changed', null)
|
|
110
|
+
}else {
|
|
111
|
+
this.$dispatch('tab-changed', this.renderData[this.active].comp._scope.tab.comp.name)
|
|
112
|
+
}
|
|
113
|
+
})
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
events: {
|
|
117
|
+
'delete' (index) {
|
|
118
|
+
this.modifyAllIndex(index)
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
</script>
|
|
123
|
+
|
|
124
|
+
<style scoped>
|
|
125
|
+
ul > li > a {
|
|
126
|
+
position: relative;
|
|
127
|
+
}
|
|
128
|
+
ul > li > a > span {
|
|
129
|
+
display: none;
|
|
130
|
+
}
|
|
131
|
+
/*ul > li > a:hover > span {*/
|
|
132
|
+
/*display: initial;*/
|
|
133
|
+
/*position: absolute;*/
|
|
134
|
+
/*right: 0;*/
|
|
135
|
+
/*top: 35%;*/
|
|
136
|
+
/*border: 1px solid #EAEAEA;*/
|
|
137
|
+
/*}*/
|
|
138
|
+
/*ul > li > a:hover > span:hover {*/
|
|
139
|
+
/*border: 1px solid #EAEAEA;*/
|
|
140
|
+
/*color: #5cb95c;*/
|
|
141
|
+
/*}*/
|
|
142
|
+
ul > li > button {
|
|
143
|
+
background-color: #FFFFFF;
|
|
144
|
+
border-radius: 4px;
|
|
145
|
+
color: #999;
|
|
146
|
+
border: 1px solid #5cb95c;
|
|
147
|
+
}
|
|
148
|
+
.btn-succ{
|
|
149
|
+
background-color: #6aa6e2;
|
|
150
|
+
border-radius: 4px;
|
|
151
|
+
color: #fff;
|
|
152
|
+
}
|
|
153
|
+
.foot_tabset1 > .nav {
|
|
154
|
+
overflow-x: scroll;
|
|
155
|
+
white-space: nowrap;
|
|
156
|
+
}
|
|
157
|
+
</style>
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div role="tabpanel" class="tab-pane"
|
|
3
|
+
v-bind:class="{hide:!show}"
|
|
4
|
+
v-show="show"
|
|
5
|
+
:transition="transition"
|
|
6
|
+
>
|
|
7
|
+
<slot></slot>
|
|
8
|
+
</div>
|
|
9
|
+
</template>
|
|
10
|
+
|
|
11
|
+
<script>
|
|
12
|
+
import coerceBoolean from 'vue-client/src/vue-strap/src/utils/coerceBoolean.js'
|
|
13
|
+
|
|
14
|
+
export default {
|
|
15
|
+
props: {
|
|
16
|
+
header: {
|
|
17
|
+
type: String
|
|
18
|
+
},
|
|
19
|
+
disabled: {
|
|
20
|
+
type: Boolean,
|
|
21
|
+
coerce: coerceBoolean,
|
|
22
|
+
default: false
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
data () {
|
|
26
|
+
return {
|
|
27
|
+
index: 0,
|
|
28
|
+
show: false
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
watch: {
|
|
32
|
+
'header' (val) {
|
|
33
|
+
// header变化时,通知tabset
|
|
34
|
+
let data = this.$parent.renderData.find((v) => v.comp === this)
|
|
35
|
+
data.header = val
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
computed: {
|
|
39
|
+
show () {
|
|
40
|
+
return (this.$parent.active === this.index)
|
|
41
|
+
},
|
|
42
|
+
transition () {
|
|
43
|
+
return this.$parent.effect
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
created () {
|
|
47
|
+
this.$parent.renderData.push({
|
|
48
|
+
comp: this,
|
|
49
|
+
header: this.header,
|
|
50
|
+
disabled: this.disabled
|
|
51
|
+
})
|
|
52
|
+
},
|
|
53
|
+
ready () {
|
|
54
|
+
// 找到当前tab的索引
|
|
55
|
+
this.index = this.$parent.$children.findIndex((v) => v.$el === this.$el)
|
|
56
|
+
},
|
|
57
|
+
beforeDestroy () {
|
|
58
|
+
this.$parent.renderData.splice(this.index, 1)
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
</script>
|
|
62
|
+
|
|
63
|
+
<style scoped>
|
|
64
|
+
.tab-content > .tab-pane {
|
|
65
|
+
display: block;
|
|
66
|
+
}
|
|
67
|
+
</style>
|