system-clients 3.1.93-aode → 3.1.95
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/.eslintrc.js +16 -16
- package/{dist/static/.gitkeep → .gradle/5.2.1/gc.properties} +0 -0
- package/.gradle/5.5/fileHashes/fileHashes.lock +0 -0
- package/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/.gradle/buildOutputCleanup/cache.properties +2 -2
- package/SystemClient.iml +12 -12
- package/build/webpack.base.conf.js +4 -5
- package/package.json +4 -4
- package/src/components/Main.vue +107 -26
- package/src/components/TabButton.vue +201 -0
- package/src/components/Tabs.vue +67 -0
- package/src/components/equipment/EquipmentManage.vue +1 -1
- package/src/components/equipment/PcAdd.vue +5 -5
- package/src/components/equipment/PcList.vue +5 -5
- package/src/components/equipment/PhoneAdd.vue +4 -4
- package/src/components/equipment/PhoneList.vue +4 -4
- package/src/components/equipment/PosAdd.vue +231 -45
- package/src/components/equipment/PosList.vue +198 -68
- package/src/components/equipment/PosManage.vue +80 -9
- package/src/components/equipment/PosManageBoth.vue +125 -0
- package/src/components/equipment/PosParamAdd.vue +236 -0
- package/src/components/equipment/PosParamList.vue +121 -0
- package/src/components/equipment/PosParamManage.vue +51 -0
- package/src/components/parammanage/ParamManage.vue +2 -2
- package/src/components/parammanage/ParamPage.vue +7 -7
- package/src/components/parammanage/SinglePage.vue +4 -4
- package/src/components/server/ImageVieweTest.vue +56 -0
- package/src/components/server/ImageViewer.vue +350 -0
- package/src/components/server/Login.vue +734 -711
- package/src/components/server/PcdBuildingSelect.vue +241 -0
- package/src/components/server/ResSelect.vue +5 -0
- package/src/components/server/ResSelectGroup.vue +155 -118
- package/src/components/server/RightTree.vue +262 -257
- package/src/plugins/GetLoginInfoService.js +514 -514
- package/src/styles/less/aofeng/standard.less +446 -60
- package/src/styles/less/aofeng/themeOne/BinaryTemplate.less +13 -13
- package/src/styles/less/aofeng/themeOne/systemStyle.less +2650 -2650
- package/src/styles/less/manageStyle/manageStyle/manageChile.less +180 -0
- package/src/styles/less/manageStyle/manageStyle/manageStyle.less +1102 -0
- package/src/styles/less/manageStyle/manageStyle/safeStyle.less +498 -0
- package/src/styles/less/tables.less +50 -0
- package/src/styles/less/type.less +16 -3
- package/src/styles/less/variables.less +6 -3
- package/src/system.js +10 -0
- package/static/{ewmlogo.png → logo.png} +0 -0
- package/static/newStyle/a.png +0 -0
- package/static/newStyle/about-us.png +0 -0
- package/yarn-error.log +6896 -0
- package/dist/static/batchleft.png +0 -0
- package/dist/static/batchright.png +0 -0
- package/dist/static/bluemainbg.jpg +0 -0
- package/dist/static/huangtengbiaozhi.png +0 -0
- package/dist/static/login_bg.jpg +0 -0
- package/dist/static/login_title.png +0 -0
- package/dist/static/login_title1.png +0 -0
- package/dist/static/loginbg.jpg +0 -0
- package/dist/static/loginlogo.png +0 -0
- package/dist/static/main_logo.png +0 -0
- package/dist/static/mainbg.jpg +0 -0
- package/dist/static/menulogo.png +0 -0
- package/dist/static/newmainbg.jpg +0 -0
- package/dist/static/psicon.png +0 -0
- package/dist/static/singleleft.png +0 -0
- package/dist/static/singleright.png +0 -0
- package/dist/static/treeopen.png +0 -0
- package/dist/static/treeout.png +0 -0
- package/dist/static/treeset.png +0 -0
- package/dist/static/usericon.png +0 -0
- package/dist/static/xinxi.png +0 -0
- package/static/aodelogo.png +0 -0
- package/static/aodenewlogo.png +0 -0
package/.eslintrc.js
CHANGED
@@ -1,16 +1,16 @@
|
|
1
|
-
module.exports = {
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
}
|
1
|
+
// module.exports = {
|
2
|
+
// root: true,
|
3
|
+
// // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style
|
4
|
+
// extends: 'standard',
|
5
|
+
// // required to lint *.vue files
|
6
|
+
// plugins: [
|
7
|
+
// 'eslint-plugin-html'
|
8
|
+
// ],
|
9
|
+
// // add your custom rules here
|
10
|
+
// 'rules': {
|
11
|
+
// // allow paren-less arrow functions
|
12
|
+
// 'arrow-parens': 0,
|
13
|
+
// // allow debugger during development
|
14
|
+
// 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0
|
15
|
+
// }
|
16
|
+
// }
|
File without changes
|
Binary file
|
Binary file
|
@@ -1,2 +1,2 @@
|
|
1
|
-
#
|
2
|
-
gradle.version=5.5
|
1
|
+
#Mon Jul 19 11:31:20 CST 2021
|
2
|
+
gradle.version=5.5
|
package/SystemClient.iml
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<module external.linked.project.id="SystemClient" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="3.0.49" type="JAVA_MODULE" version="4">
|
3
|
-
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
4
|
-
<exclude-output />
|
5
|
-
<content url="file://$MODULE_DIR$">
|
6
|
-
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
|
7
|
-
<excludeFolder url="file://$MODULE_DIR$/build" />
|
8
|
-
</content>
|
9
|
-
<orderEntry type="inheritedJdk" />
|
10
|
-
<orderEntry type="sourceFolder" forTests="false" />
|
11
|
-
</component>
|
12
|
-
</module>
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<module external.linked.project.id="SystemClient" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="3.0.49" type="JAVA_MODULE" version="4">
|
3
|
+
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
4
|
+
<exclude-output />
|
5
|
+
<content url="file://$MODULE_DIR$">
|
6
|
+
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
|
7
|
+
<excludeFolder url="file://$MODULE_DIR$/build" />
|
8
|
+
</content>
|
9
|
+
<orderEntry type="inheritedJdk" />
|
10
|
+
<orderEntry type="sourceFolder" forTests="false" />
|
11
|
+
</component>
|
12
|
+
</module>
|
@@ -37,11 +37,10 @@ module.exports = {
|
|
37
37
|
`${projectRoot}\\examples`,
|
38
38
|
`${projectRoot}\\test`,
|
39
39
|
`${projectRoot}\\node_modules\\vue-client\\src`,
|
40
|
-
`${projectRoot}\\node_modules\\vue-strap\\src
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
}
|
40
|
+
`${projectRoot}\\node_modules\\vue-strap\\src`,
|
41
|
+
`${projectRoot}\\node_modules\\ldap-clients\\src`,
|
42
|
+
`${projectRoot}\\node_modules\\sale-client\\src`
|
43
|
+
]
|
45
44
|
},
|
46
45
|
{
|
47
46
|
test: /\.json$/,
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "system-clients",
|
3
|
-
"version": "3.1.
|
3
|
+
"version": "3.1.95",
|
4
4
|
"description": "系统基础框架",
|
5
5
|
"main": "src/index.js",
|
6
6
|
"directories": {
|
@@ -19,6 +19,7 @@
|
|
19
19
|
"dependencies": {
|
20
20
|
"base64-js": "^1.3.0",
|
21
21
|
"js-base64": "^2.4.9",
|
22
|
+
"jsencrypt": "^3.0.0-rc.1",
|
22
23
|
"less": "^2.7.1",
|
23
24
|
"less-loader": "^2.2.3",
|
24
25
|
"src": "^1.1.2",
|
@@ -75,7 +76,7 @@
|
|
75
76
|
"style": "0.0.3",
|
76
77
|
"style-loader": "^0.20.3",
|
77
78
|
"url-loader": "^0.5.7",
|
78
|
-
"vue-client": "1.
|
79
|
+
"vue-client": "1.24.33",
|
79
80
|
"vue-hot-reload-api": "^1.2.0",
|
80
81
|
"vue-html-loader": "^1.0.0",
|
81
82
|
"vue-loader": "^8.2.1",
|
@@ -83,9 +84,8 @@
|
|
83
84
|
"vue-router": "^0.7.13",
|
84
85
|
"vue-strap": "^1.0.9",
|
85
86
|
"vue-style-loader": "^1.0.0",
|
86
|
-
"vue-validator": "
|
87
|
+
"vue-validator": "2.1.7",
|
87
88
|
"webpack": "^1.12.2",
|
88
|
-
"jsencrypt": "3.0.0-rc.1",
|
89
89
|
"webpack-dev-middleware": "^1.4.0",
|
90
90
|
"webpack-hot-middleware": "^2.6.0",
|
91
91
|
"webpack-merge": "^0.8.3"
|
package/src/components/Main.vue
CHANGED
@@ -1,25 +1,76 @@
|
|
1
1
|
<template>
|
2
|
-
<div @click="hindsetting1()">
|
2
|
+
<div @click="hindsetting1()" :class="{'with-watermark':showwatermakeflag}">
|
3
|
+
<!-- <div class="system-main" id="box" v-el:box v-if="!isManger">-->
|
4
|
+
<!-- <div class="system-logo" style="height: auto">-->
|
5
|
+
<!-- <img :src="imgs.logoimg" alt=""/>-->
|
6
|
+
<!-- <label>{{systemname}}</label>-->
|
7
|
+
<!-- <div class="system-logo-chi" >-->
|
8
|
+
<!-- <div v-if="userpane" class="auto system-logo-prompt" style="float: right">-->
|
9
|
+
<!-- <span>{{orgpathnames}}</span>-->
|
10
|
+
<!-- </div>-->
|
11
|
+
<!-- <!–<div class="system-logo-chi-img1" style="float: right" @mouseenter="mouseenteruser()" @mouseleave="mouseleaveuser()"></div>–>-->
|
12
|
+
<!-- <span style="float: right; padding-top: 2px" @mouseenter="mouseenteruser()" @mouseleave="mouseleaveuser()" class="system-logo-chi-span-1">{{$login.f.name}}</span>-->
|
13
|
+
<!-- <span style="border-left: 1px solid;float: right;padding-top: 2px" class="system-logo-chi-span-1"> <img src="../../static/newStyle/login-f.png" height="20" width="20"> </span>-->
|
14
|
+
<!-- <a href="index.html" onclick="return confirm('您确定要退出系统吗?');" style="float: right;padding-top: 2px">-->
|
15
|
+
<!-- <img src="../../static/newStyle/system-off.png" alt="" >-->
|
16
|
+
<!-- <span class="system-logo-chi-span-1">退出系统</span>-->
|
17
|
+
<!-- </a>-->
|
18
|
+
<!-- <div style="float: right" :class="{'dropstyle':setting,'dropstyle-1':!setting}">-->
|
19
|
+
<!-- <dropdown class="auto" >-->
|
20
|
+
<!-- <span data-toggle="dropdown" @click="hindsetting()" >-->
|
21
|
+
<!-- <img :src="srcsetting" alt=""><span>系统设置</span>-->
|
22
|
+
<!-- </span>-->
|
23
|
+
<!-- <ul slot="dropdown-menu" class="dropdown-menu dropdown-menu-up dropstyle-chi" >-->
|
24
|
+
<!-- <!– <li>系统信息及设置</li>–>-->
|
25
|
+
<!-- <li style="color: #ffffff;white-space: nowrap" @click="show=true">修改密码</li>-->
|
26
|
+
<!-- <li style="color: #ffffff;white-space: nowrap" @click="AddChangeMsgShow=true">系统版本</li>-->
|
27
|
+
<!-- </ul>-->
|
28
|
+
<!-- </dropdown>-->
|
29
|
+
<!-- </div>-->
|
3
30
|
|
4
|
-
|
31
|
+
<!-- </div>-->
|
32
|
+
<!-- </div>-->
|
33
|
+
<!-- <div class="system-left tree-flex" :class="{'system-left-1': !treeOrIcon}" id="top" v-el:top >-->
|
34
|
+
<!-- <div class="system-left-chi" :class="{'system-left-icon': !treeOrIcon}" >-->
|
35
|
+
<!-- <div class="span system-left-tree" >-->
|
36
|
+
<!-- <left-tree :functions='functions.functions' :userid='userid' @isnodo="isnodo" :treeOrIcon="treeOrIcon" :tabs="tabs" v-ref:tree></left-tree>-->
|
37
|
+
<!-- <!– <icon-tree :functions='functions.functions' :userid='userid' v-show="!treeOrIcon"></icon-tree>–>-->
|
38
|
+
<!-- </div>-->
|
39
|
+
<!-- </div>-->
|
40
|
+
<!-- <div class="system-foot-stretch" >-->
|
41
|
+
<!-- <a @click="changeShow()"><img src="../../static/images/lefticon/菜单伸缩.png" alt=""></a>-->
|
42
|
+
<!-- </div>-->
|
43
|
+
<!-- </div>-->
|
44
|
+
|
45
|
+
|
46
|
+
<!-- <div class="system-right" :class="{'system-right-1': !treeOrIcon}" id="bottom" v-el:bottom>-->
|
47
|
+
<!-- <div class="span">-->
|
48
|
+
<!-- <echarts-box v-if="$refs.mic.tabs.length === 0"></echarts-box>-->
|
49
|
+
<!-- <dynamic :comps='[]' :showup="true" :showhide="false" name='main' :selecttab.sync="selecttab" @tab-changed="tabChange" @tabscg="tabcg" v-ref:mic v-show="!($refs.mic.tabs.length === 0)"></dynamic>-->
|
50
|
+
<!-- </div>-->
|
51
|
+
<!-- </div>-->
|
52
|
+
<!-- <div class="system-foot" v-el:bottom>-->
|
53
|
+
|
54
|
+
<!-- <div class="system-foot-box">-->
|
5
55
|
|
56
|
+
<!-- </div>-->
|
57
|
+
<!-- </div>-->
|
58
|
+
<!-- </div>-->
|
59
|
+
<div class='flex-row system-main' id="box" v-el:box v-if="!isManger">
|
6
60
|
<div class="auto " :class="{'login-operator1':$refs.mic.tabs.length === 0,'login-operator':$refs.mic.tabs.length != 0}">
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
<label>{{orgpathnames}}</label>
|
61
|
+
<span>
|
62
|
+
<img
|
63
|
+
src="../assets/people.png" height="15" width="15">
|
64
|
+
登录人:</span>
|
65
|
+
<label>{{orgpathnames}}</label>
|
13
66
|
</div>
|
14
67
|
<div class="system-left tree-flex" :class="{'tree-flex-icon': !treeOrIcon}" id="top" v-el:top >
|
15
68
|
<div class="system-left-chi" :class="{'system-left-icon': !treeOrIcon}" >
|
16
69
|
<div class="span system-left-tree " style="height:85%">
|
17
|
-
<
|
18
|
-
<div class="aodeloginedlogo"></div>
|
19
|
-
</div>
|
20
|
-
<h3 style="margin-bottom: 12px;height: 35px;"> </h3>
|
70
|
+
<h3>{{systemname}}</h3>
|
21
71
|
<!-- <div class="span" style="margin-bottom:10px;padding-bottom:5px;padding-top:5px;flex: 1;border-top: 1px solid #e5e5e5;border-bottom: 1px solid #e5e5e5;">-->
|
22
72
|
<left-tree :functions='functions.functions' :userid='userid' @isnodo="isnodo" v-show="treeOrIcon" :tabs="tabs" v-ref:tree></left-tree>
|
73
|
+
<!--<!– <icon-tree :functions='functions.functions' :userid='userid' v-show="!treeOrIcon"></icon-tree>–>-->
|
23
74
|
</div>
|
24
75
|
|
25
76
|
<div class="tree-flex-footer">
|
@@ -70,6 +121,47 @@
|
|
70
121
|
import vue from 'vue'
|
71
122
|
import co from 'co'
|
72
123
|
|
124
|
+
let getwartermakr = async function(self){
|
125
|
+
let param = {
|
126
|
+
tablename:'t_singlevalue',
|
127
|
+
condition: " 1=1 and name=\'水印内容\'"
|
128
|
+
};
|
129
|
+
let result =await self.$resetpost('rs/sql/saleSingleTable',{data:param},{resolveMsg: null, rejectMsg: null});
|
130
|
+
if(result && result.data.length>0){
|
131
|
+
self.showwatermakeflag = true;
|
132
|
+
createWaterMark(result.data[0].value);
|
133
|
+
}else{
|
134
|
+
self.showwatermakeflag = false;
|
135
|
+
}
|
136
|
+
}
|
137
|
+
|
138
|
+
let createWaterMark = function(userName){
|
139
|
+
let style;
|
140
|
+
if (style) style.remove();
|
141
|
+
let width = window.parseInt(document.body.clientWidth);
|
142
|
+
let canvasWidth = width / window.parseInt(width / 320);
|
143
|
+
let fontFamily = window.getComputedStyle(document.body)["font-family"];
|
144
|
+
let canvas = document.createElement("canvas");
|
145
|
+
canvas.width = canvasWidth;
|
146
|
+
canvas.height = 200;
|
147
|
+
let ctx = canvas.getContext("2d");
|
148
|
+
ctx.rotate((-20 * Math.PI) / 180);
|
149
|
+
ctx.font = `20px ${fontFamily}`;
|
150
|
+
ctx.fillStyle = "rgba(8,8,8,.1)";
|
151
|
+
ctx.fillText(userName, 50, 200);
|
152
|
+
let imgSrc = canvas.toDataURL("image/png");
|
153
|
+
style = document.createElement("style");
|
154
|
+
style.innerHTML = `.with-watermark:before{
|
155
|
+
content: "";
|
156
|
+
width: 100%;
|
157
|
+
height: 100%;
|
158
|
+
display: block;
|
159
|
+
position: absolute;
|
160
|
+
background-image: url("${imgSrc}");
|
161
|
+
}`;
|
162
|
+
(document.head.append || document.head.appendChild).apply(document.head, [style]);
|
163
|
+
}
|
164
|
+
|
73
165
|
window.onunload = () => {
|
74
166
|
vue.http({url: `rs/user/update/${this.$login.f.ename}`, method: 'GET'})
|
75
167
|
}
|
@@ -99,8 +191,8 @@
|
|
99
191
|
tabs:[], //已初始化页签数组
|
100
192
|
selecttab:'',
|
101
193
|
setting:true,
|
102
|
-
srcsetting:'../../static/newStyle/setting.png'
|
103
|
-
|
194
|
+
srcsetting:'../../static/newStyle/setting.png',
|
195
|
+
showwatermakeflag:false,
|
104
196
|
// headerHint: true, // 右侧顶部提示信息
|
105
197
|
// value: 25645.26,
|
106
198
|
// AddChangeMsgShow: false,
|
@@ -108,6 +200,7 @@
|
|
108
200
|
}
|
109
201
|
},
|
110
202
|
ready () {
|
203
|
+
getwartermakr(this);
|
111
204
|
let component = this.$login.getUrlCompileParames('component')
|
112
205
|
if (component) {
|
113
206
|
this.isManger = true
|
@@ -453,18 +546,6 @@
|
|
453
546
|
.tree-img {
|
454
547
|
font-size: 1.2em;
|
455
548
|
}
|
456
|
-
.aodeloginedlogo {
|
457
|
-
background:url(../../static/aodenewlogo.png);
|
458
|
-
background-size:80%;
|
459
|
-
background-repeat: no-repeat;
|
460
|
-
}
|
461
|
-
.logopicaode{
|
462
|
-
width: 100%;
|
463
|
-
height: 61px;
|
464
|
-
float: left;
|
465
|
-
margin-left: 2.5%;
|
466
|
-
margin-top: 10px;
|
467
|
-
}
|
468
549
|
|
469
550
|
/*将较长信息截断显示,鼠标悬停显示全部信息*/
|
470
551
|
.cutout50 {
|
@@ -0,0 +1,201 @@
|
|
1
|
+
<template>
|
2
|
+
<div class='flex foot_tabset1'>
|
3
|
+
<!-- Nav tabs -->
|
4
|
+
<ul class="nav nav-{{navStyle}}" role="tablist" style="margin-left: 1%">
|
5
|
+
<li style="margin-right: 10px;height: 100%"
|
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 v-if="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"
|
20
|
+
:id="'vc-tabset-close-'+attach +'-'+$index"></span>
|
21
|
+
</button>
|
22
|
+
<span v-if="!button" v-bind:class="{
|
23
|
+
'span-active': ($index === active),
|
24
|
+
'span-disable': ($index !== active)
|
25
|
+
}">
|
26
|
+
<slot name="header">
|
27
|
+
{{ r.header }}
|
28
|
+
</slot>
|
29
|
+
<!-- 关闭按钮 -->
|
30
|
+
<span class="glyphicon glyphicon-remove" style="margin-left: 15px;" @click="deletetTab(r)" v-if="close"
|
31
|
+
:id="'vc-tabset-close-'+attach +'-'+$index"></span>
|
32
|
+
</span>
|
33
|
+
|
34
|
+
</li>
|
35
|
+
</ul>
|
36
|
+
|
37
|
+
<!-- Tab panes -->
|
38
|
+
<div class="tab-content span" v-el:tab-content>
|
39
|
+
<slot></slot>
|
40
|
+
</div>
|
41
|
+
</div>
|
42
|
+
</template>
|
43
|
+
|
44
|
+
<script>
|
45
|
+
import {remove} from 'vue-client/src/stores/Remove.js'
|
46
|
+
|
47
|
+
export default {
|
48
|
+
props: {
|
49
|
+
navStyle: {
|
50
|
+
type: String,
|
51
|
+
default: 'tabs'
|
52
|
+
},
|
53
|
+
effect: {
|
54
|
+
type: String,
|
55
|
+
default: 'fadein'
|
56
|
+
},
|
57
|
+
active: {
|
58
|
+
type: Number,
|
59
|
+
default: 0
|
60
|
+
},
|
61
|
+
close: {
|
62
|
+
type: Boolean,
|
63
|
+
default: false
|
64
|
+
},
|
65
|
+
button: {
|
66
|
+
type: Boolean,
|
67
|
+
default: true
|
68
|
+
},
|
69
|
+
attach: {
|
70
|
+
type: String,
|
71
|
+
default: 'vuestrap'
|
72
|
+
},
|
73
|
+
content: {}
|
74
|
+
},
|
75
|
+
ready() {
|
76
|
+
remove.$on('remove', (name) => {
|
77
|
+
console.log('tabset收$on 到的名字为:', name)
|
78
|
+
this.$removeTab(name)
|
79
|
+
})
|
80
|
+
},
|
81
|
+
data() {
|
82
|
+
return {
|
83
|
+
// 数据格式:{comp, header,disabled}
|
84
|
+
// - comp: 当前页签对应的tab组件
|
85
|
+
renderData: []
|
86
|
+
}
|
87
|
+
},
|
88
|
+
methods: {
|
89
|
+
handleTabListClick(index, el) {
|
90
|
+
// 没有打开过, 则添加显示
|
91
|
+
this.$dispatch('tab-changed')
|
92
|
+
if (!this.$parent.show.includes(el.header)) {
|
93
|
+
this.$parent.show.push(el.header)
|
94
|
+
}
|
95
|
+
if (el.comp._scope && el.comp._scope.tab) {
|
96
|
+
this.$dispatch('tab-changed', el.comp._scope.tab.comp.name)
|
97
|
+
}
|
98
|
+
if (!el.disabled) this.active = index
|
99
|
+
},
|
100
|
+
// deletetab函数为自己添加
|
101
|
+
deletetTab(el) {
|
102
|
+
this.$removeTab(el.comp._scope.tab.comp.name)
|
103
|
+
remove.$emit('delete', el.comp._scope.tab.comp.name)
|
104
|
+
},
|
105
|
+
// 根据删除也下标,修改所有页签的下标
|
106
|
+
modifyAllIndex(index) {
|
107
|
+
let cur = this.active
|
108
|
+
this.$nextTick(() => {
|
109
|
+
// 关闭页签以后的多有页签的的下标向前挪动一位,之前的页签不动
|
110
|
+
for (var i = index; i < this.renderData.length; i++) {
|
111
|
+
this.renderData[i].comp.index -= 1
|
112
|
+
}
|
113
|
+
// 修改激活页
|
114
|
+
// 获取当前激活页签下标,关闭在当前激活页之后(包含当前激活页),当前激活页下标不变
|
115
|
+
// 当关闭当前激活页之前(激活页向前移动一位)
|
116
|
+
if (this.active > index || this.active === this.renderData.length) {
|
117
|
+
this.active = cur - 1
|
118
|
+
} else if (cur === 0) {
|
119
|
+
this.active = 0
|
120
|
+
} else {
|
121
|
+
this.active = cur
|
122
|
+
}
|
123
|
+
if (this.active === -1) {
|
124
|
+
this.$dispatch('tab-changed', null)
|
125
|
+
} else {
|
126
|
+
this.$dispatch('tab-changed', this.renderData[this.active].comp._scope.tab.comp.name)
|
127
|
+
}
|
128
|
+
})
|
129
|
+
}
|
130
|
+
},
|
131
|
+
events: {
|
132
|
+
'delete'(index) {
|
133
|
+
this.modifyAllIndex(index)
|
134
|
+
}
|
135
|
+
}
|
136
|
+
}
|
137
|
+
</script>
|
138
|
+
|
139
|
+
<style scoped>
|
140
|
+
ul > li > a {
|
141
|
+
position: relative;
|
142
|
+
}
|
143
|
+
|
144
|
+
ul > li > a > span {
|
145
|
+
display: none;
|
146
|
+
}
|
147
|
+
|
148
|
+
.span-active {
|
149
|
+
width: max-content;
|
150
|
+
border-bottom: 3px solid #5ac0d9;
|
151
|
+
height: 100%;
|
152
|
+
display: inline-block;
|
153
|
+
font-size: 1.5rem;
|
154
|
+
color: #666;
|
155
|
+
font-weight: 550;
|
156
|
+
padding: 0px 10px;
|
157
|
+
padding-top: 3px;
|
158
|
+
vertical-align: bottom;
|
159
|
+
}
|
160
|
+
|
161
|
+
.span-disable {
|
162
|
+
width: max-content;
|
163
|
+
height: 100%;
|
164
|
+
display: inline-block;
|
165
|
+
font-size: 1.5rem;
|
166
|
+
color: #666;
|
167
|
+
font-weight: 550;
|
168
|
+
padding: 0px 10px;
|
169
|
+
padding-top: 3px;
|
170
|
+
vertical-align: bottom;
|
171
|
+
}
|
172
|
+
|
173
|
+
/*ul > li > a:hover > span {*/
|
174
|
+
/*display: initial;*/
|
175
|
+
/*position: absolute;*/
|
176
|
+
/*right: 0;*/
|
177
|
+
/*top: 35%;*/
|
178
|
+
/*border: 1px solid #EAEAEA;*/
|
179
|
+
/*}*/
|
180
|
+
/*ul > li > a:hover > span:hover {*/
|
181
|
+
/*border: 1px solid #EAEAEA;*/
|
182
|
+
/*color: #5cb95c;*/
|
183
|
+
/*}*/
|
184
|
+
ul > li > button {
|
185
|
+
background-color: #FFFFFF;
|
186
|
+
border-radius: 4px;
|
187
|
+
color: #999;
|
188
|
+
border: 1px solid #5cb95c;
|
189
|
+
}
|
190
|
+
|
191
|
+
.btn-succ {
|
192
|
+
background-color: #6aa6e2;
|
193
|
+
border-radius: 4px;
|
194
|
+
color: #fff;
|
195
|
+
}
|
196
|
+
|
197
|
+
.foot_tabset1 > .nav {
|
198
|
+
/*overflow-x: scroll;*/
|
199
|
+
white-space: nowrap;
|
200
|
+
}
|
201
|
+
</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>
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<div class="form-horizontal select-overspread" style="background: white; padding: 0 1%;">
|
5
5
|
<div class="row">
|
6
6
|
<div class="col-sm-2 form-group">
|
7
|
-
<label class="font_normal_body">终端类型</label>
|
7
|
+
<label class="font_normal_body" title="参数管理:终端类型">终端类型</label>
|
8
8
|
<v-select id="f_charge_type"
|
9
9
|
v-model="model.f_equipment_type"
|
10
10
|
placeholder='终端类型'
|
@@ -1,23 +1,23 @@
|
|
1
1
|
<template>
|
2
|
-
<div class="
|
2
|
+
<div class="row select-overspread">
|
3
3
|
<validator name='v'>
|
4
4
|
<ul class="nav nav-tabs" >
|
5
5
|
<li role="presentation" class="active"><a href="#">PC端MAC</a></li>
|
6
6
|
</ul>
|
7
7
|
<form class="form-horizontal">
|
8
|
-
<div class="col-sm-6">
|
8
|
+
<div class="col-sm-6 form-group">
|
9
9
|
<label class="font_normal_body">使用人员</label>
|
10
10
|
<input type="text" style="width: 60%" class="input_search" v-model="model.f_username" placeholder="使用人员" >
|
11
11
|
</div>
|
12
|
-
<div class="col-sm-6">
|
12
|
+
<div class="col-sm-6 form-group">
|
13
13
|
<label class="font_normal_body">所属地址</label>
|
14
14
|
<input type="text" style="width: 60%" class="input_search" v-model="model.f_mac_outlets" placeholder="所属地址" >
|
15
15
|
</div>
|
16
|
-
<div class="col-sm-6">
|
16
|
+
<div class="col-sm-6 form-group">
|
17
17
|
<label class="font_normal_body">mac地址</label>
|
18
18
|
<input type="text" style="width: 60%" class="input_search" v-model="model.f_mac_number" placeholder="mac地址" >
|
19
19
|
</div>
|
20
|
-
<div class="col-sm-6">
|
20
|
+
<div class="col-sm-6 form-group">
|
21
21
|
<label class="font_normal_body">使用公司</label>
|
22
22
|
|
23
23
|
<res-select restype='organization'
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<criteria partial='criteria' @condition-changed='$parent.selfSearch' v-ref:cri>
|
5
5
|
<div novalidate class="form-horizontal select-overspread container-fluid auto" partial>
|
6
6
|
<div class="row">
|
7
|
-
<div class="col-sm-3">
|
7
|
+
<div class="col-sm-3 form-group">
|
8
8
|
<label class="font_normal_body">使用公司</label>
|
9
9
|
<res-select restype='organization'
|
10
10
|
is-mul="false"
|
@@ -13,12 +13,12 @@
|
|
13
13
|
</res-select>
|
14
14
|
</div>
|
15
15
|
|
16
|
-
<div class="col-sm-3" >
|
16
|
+
<div class="col-sm-3 form-group" >
|
17
17
|
<label class="font_normal_body">使用人员</label>
|
18
18
|
<input type="text" class="input_search" style="width:60%" v-model="model.f_username"
|
19
19
|
condition="f_username like '%{}%'" placeholder="使用人员">
|
20
20
|
</div>
|
21
|
-
<div class="col-sm-3" >
|
21
|
+
<div class="col-sm-3 form-group" >
|
22
22
|
<label class="font_normal_body">所属地址</label>
|
23
23
|
<input type="text" class="input_search" style="width:60%" v-model="model.f_mac_outlets"
|
24
24
|
condition="f_mac_outlets like '%{}%'" placeholder="所属地址">
|
@@ -31,7 +31,7 @@
|
|
31
31
|
</div>
|
32
32
|
</div>
|
33
33
|
<div class="row" v-show="$parent.$parent.criteriaShow">
|
34
|
-
<div class="col-sm-3" >
|
34
|
+
<div class="col-sm-3 form-group" >
|
35
35
|
<label class="font_normal_body">MAC地址</label>
|
36
36
|
<input type="text" class="input_search" style="width:60%" v-model="model.f_mac_number"
|
37
37
|
condition="f_mac_number like '%{}%'" placeholder="MAC地址">
|
@@ -58,7 +58,7 @@
|
|
58
58
|
<td style="text-align:center">{{row.f_mac_outlets}}</td>
|
59
59
|
<td style="text-align:center">{{row.f_mac_number}}</td>
|
60
60
|
<td style="text-align:center">
|
61
|
-
<button class="btn btn-
|
61
|
+
<button class="btn btn-danger" @click.stop="$parent.$parent.$parent.del(row)">删除</button>
|
62
62
|
</td>
|
63
63
|
</tr>
|
64
64
|
</template>
|