system-clients 3.1.94-aode → 3.1.94

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.
Files changed (79) hide show
  1. package/.eslintrc.js +16 -16
  2. package/.gradle/{5.5 → 4.4}/fileChanges/last-build.bin +0 -0
  3. package/.gradle/4.4/fileHashes/fileHashes.bin +0 -0
  4. package/.gradle/4.4/fileHashes/fileHashes.lock +0 -0
  5. package/.gradle/{5.5 → 5.2.1}/gc.properties +0 -0
  6. package/{dist/static/.gitkeep → .gradle/buildOutputCleanup/built.bin} +0 -0
  7. package/.gradle/buildOutputCleanup/cache.properties +2 -2
  8. package/.gradle/buildOutputCleanup/cache.properties.lock +1 -0
  9. package/SystemClient.iml +1 -1
  10. package/build/webpack.base.conf.js +85 -82
  11. package/package.json +4 -4
  12. package/src/components/Main.vue +107 -26
  13. package/src/components/TabButton.vue +201 -0
  14. package/src/components/Tabs.vue +67 -0
  15. package/src/components/equipment/EquipmentManage.vue +1 -1
  16. package/src/components/equipment/PcAdd.vue +5 -5
  17. package/src/components/equipment/PcList.vue +5 -5
  18. package/src/components/equipment/PhoneAdd.vue +4 -4
  19. package/src/components/equipment/PhoneList.vue +4 -4
  20. package/src/components/equipment/PosAdd.vue +231 -45
  21. package/src/components/equipment/PosList.vue +198 -68
  22. package/src/components/equipment/PosManage.vue +80 -9
  23. package/src/components/equipment/PosManageBoth.vue +125 -0
  24. package/src/components/equipment/PosParamAdd.vue +236 -0
  25. package/src/components/equipment/PosParamList.vue +121 -0
  26. package/src/components/equipment/PosParamManage.vue +51 -0
  27. package/src/components/parammanage/ParamManage.vue +2 -2
  28. package/src/components/parammanage/ParamPage.vue +7 -7
  29. package/src/components/parammanage/SinglePage.vue +4 -4
  30. package/src/components/server/ImageVieweTest.vue +56 -0
  31. package/src/components/server/ImageViewer.vue +350 -0
  32. package/src/components/server/Login.vue +48 -42
  33. package/src/components/server/PcdBuildingSelect.vue +241 -0
  34. package/src/components/server/ResSelect.vue +5 -0
  35. package/src/components/server/ResSelectGroup.vue +196 -159
  36. package/src/components/server/RightTree.vue +262 -257
  37. package/src/plugins/GetLoginInfoService.js +514 -514
  38. package/src/styles/less/aofeng/standard.less +446 -60
  39. package/src/styles/less/aofeng/themeOne/BinaryTemplate.less +686 -686
  40. package/src/styles/less/aofeng/themeOne/systemStyle.less +2650 -2650
  41. package/src/styles/less/manageStyle/manageStyle/manageChile.less +180 -0
  42. package/src/styles/less/manageStyle/manageStyle/manageStyle.less +1102 -0
  43. package/src/styles/less/manageStyle/manageStyle/safeStyle.less +498 -0
  44. package/src/styles/less/tables.less +50 -0
  45. package/src/styles/less/type.less +16 -3
  46. package/src/styles/less/variables.less +6 -3
  47. package/src/system.js +10 -0
  48. package/static/{ewmlogo.png → logo.png} +0 -0
  49. package/static/newStyle/about-us.png +0 -0
  50. package/yarn-error.log +6896 -0
  51. package/.gradle/5.5/fileHashes/fileHashes.lock +0 -0
  52. package/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  53. package/.npmignore +0 -10
  54. package/build/.npmignore +0 -1
  55. package/dist/static/batchleft.png +0 -0
  56. package/dist/static/batchright.png +0 -0
  57. package/dist/static/bluemainbg.jpg +0 -0
  58. package/dist/static/huangtengbiaozhi.png +0 -0
  59. package/dist/static/login_bg.jpg +0 -0
  60. package/dist/static/login_title.png +0 -0
  61. package/dist/static/login_title1.png +0 -0
  62. package/dist/static/loginbg.jpg +0 -0
  63. package/dist/static/loginlogo.png +0 -0
  64. package/dist/static/main_logo.png +0 -0
  65. package/dist/static/mainbg.jpg +0 -0
  66. package/dist/static/menulogo.png +0 -0
  67. package/dist/static/newmainbg.jpg +0 -0
  68. package/dist/static/psicon.png +0 -0
  69. package/dist/static/singleleft.png +0 -0
  70. package/dist/static/singleright.png +0 -0
  71. package/dist/static/treeopen.png +0 -0
  72. package/dist/static/treeout.png +0 -0
  73. package/dist/static/treeset.png +0 -0
  74. package/dist/static/usericon.png +0 -0
  75. package/dist/static/xinxi.png +0 -0
  76. package/package-lock.json +0 -10507
  77. package/src/.npmignore +0 -1
  78. package/static/aodelogo.png +0 -0
  79. package/static/aodenewlogo.png +0 -0
package/.eslintrc.js CHANGED
@@ -1,16 +1,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
- }
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
File without changes
@@ -1,2 +1,2 @@
1
- #Wed Jul 14 16:55:53 CST 2021
2
- gradle.version=5.5
1
+ #Fri Mar 13 10:30:51 GMT+08:00 2020
2
+ gradle.version=3.5
package/SystemClient.iml CHANGED
@@ -1,5 +1,5 @@
1
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">
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="1.6.18" type="JAVA_MODULE" version="4">
3
3
  <component name="NewModuleRootManager" inherit-compiler-output="true">
4
4
  <exclude-output />
5
5
  <content url="file://$MODULE_DIR$">
@@ -1,82 +1,85 @@
1
- var path = require('path')
2
- var cssLoaders = require('./css-loaders')
3
- var projectRoot = path.resolve(__dirname, '../')
4
-
5
- module.exports = {
6
- entry: {
7
- app: './src/main.js'
8
- },
9
- output: {
10
- path: path.resolve(__dirname, '../dist/static'),
11
- publicPath: 'static/',
12
- filename: '[name].js'
13
- },
14
- resolve: {
15
- extensions: ['', '.js', '.vue'],
16
- fallback: [path.join(__dirname, '../node_modules')],
17
- alias: {
18
- 'test': path.resolve(__dirname, '../test'),
19
- 'src': path.resolve(__dirname, '../src')
20
- }
21
- },
22
- resolveLoader: {
23
- fallback: [path.join(__dirname, '../node_modules')]
24
- },
25
- module: {
26
- loaders: [
27
- {
28
- test: /\.vue$/,
29
- loader: 'vue'
30
- },
31
- {
32
- test: /\.js$/,
33
- loader: 'babel',
34
- include: [
35
- `${projectRoot}\\src`,
36
- `${projectRoot}\\build`,
37
- `${projectRoot}\\examples`,
38
- `${projectRoot}\\test`,
39
- `${projectRoot}\\node_modules\\vue-client\\src`,
40
- `${projectRoot}\\node_modules\\vue-strap\\src`
41
- ],
42
- options: {
43
- presets: ['es2015']
44
- }
45
- },
46
- {
47
- test: /\.json$/,
48
- loader: 'json'
49
- },
50
- {
51
- test: /\.css$/,
52
- loader: 'css'
53
- },
54
- {
55
- test: /\.html$/,
56
- loader: 'vue-html'
57
- },
58
- {
59
- test: /\.less$/,
60
- loader: 'style!css!less'
61
- },
62
- {
63
- test: /\.(png|jpg|gif|svg|woff2?|eot|ttf)(\?.*)?$/,
64
- loader: 'url',
65
- query: {
66
- limit: 10000,
67
- name: '[name].[ext]?[hash:7]'
68
- }
69
- }
70
- ]
71
- },
72
- vue: {
73
- loaders: cssLoaders({
74
- sourceMap: false,
75
- extract: false
76
- })
77
- },
78
- plugins: [],
79
- eslint: {
80
- formatter: require('eslint-friendly-formatter')
81
- }
82
- }
1
+ var path = require('path')
2
+ var cssLoaders = require('./css-loaders')
3
+ var projectRoot = path.resolve(__dirname, '../')
4
+
5
+ module.exports = {
6
+ entry: {
7
+ app: './src/main.js'
8
+ },
9
+ output: {
10
+ path: path.resolve(__dirname, '../dist/mergeUser'),
11
+ publicPath: 'mergeUser/',
12
+ filename: '[name].js'
13
+ },
14
+ resolve: {
15
+ extensions: ['', '.js', '.vue'],
16
+ fallback: [path.join(__dirname, '../node_modules')],
17
+ alias: {
18
+ 'src': path.resolve(__dirname, '../src'),
19
+ 'test': path.resolve(__dirname, '../test')
20
+ }
21
+ },
22
+ resolveLoader: {
23
+ fallback: [path.join(__dirname, '../node_modules')]
24
+ },
25
+ module: {
26
+ loaders: [
27
+ {
28
+ test: /\.vue$/,
29
+ loader: 'vue'
30
+ },
31
+ {
32
+ test: /\.js$/,
33
+ loader: 'babel',
34
+ include: [
35
+ /src/,
36
+ /build/,
37
+ /examples/,
38
+ /test/,
39
+ /node_modules\/vue-client\/src/,
40
+ /node_modules\/vue-strap\/src/,
41
+ /node_modules\/system-clients\/src/,
42
+ /node_modules\/ldap-clients\/src/,
43
+ /node_modules\/address-client\/src/
44
+ ],
45
+ options: {
46
+ presets: ['es2015']
47
+ }
48
+ },
49
+ {
50
+ test: /\.json$/,
51
+ loader: 'json'
52
+ },
53
+ {
54
+ test: /\.html$/,
55
+ loader: 'vue-html'
56
+ },
57
+ {
58
+ test: /\.less$/,
59
+ loader: 'style!css!less'
60
+ },
61
+ {
62
+ test: /\.css$/,
63
+ loader: 'style!css'
64
+ },
65
+ {
66
+ test: /\.(png|jpg|gif|svg|woff2?|eot|ttf)(\?.*)?$/,
67
+ loader: 'url',
68
+ query: {
69
+ limit: 10000,
70
+ name: '[name].[ext]?[hash:7]'
71
+ }
72
+ }
73
+ ]
74
+ },
75
+ vue: {
76
+ loaders: cssLoaders({
77
+ sourceMap: false,
78
+ extract: false
79
+ })
80
+ },
81
+ plugins: [],
82
+ eslint: {
83
+ formatter: require('eslint-friendly-formatter')
84
+ }
85
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "system-clients",
3
- "version": "3.1.94-aode",
3
+ "version": "3.1.94",
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.21.60",
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": "^3.0.0-alpha.2",
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"
@@ -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
+ <!-- &lt;!&ndash;<div class="system-logo-chi-img1" style="float: right" @mouseenter="mouseenteruser()" @mouseleave="mouseleaveuser()"></div>&ndash;&gt;-->
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
+ <!-- &lt;!&ndash; <li>系统信息及设置</li>&ndash;&gt;-->
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
- <div class='flex-row system-main' id="box" v-el:box v-if="!isManger">
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
+ <!-- &lt;!&ndash; <icon-tree :functions='functions.functions' :userid='userid' v-show="!treeOrIcon"></icon-tree>&ndash;&gt;-->
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
- <span class="glyphicon glyphicon-asterisk" style="color:#a1d0f5"></span>
8
- <span>组织编码:</span>
9
- <label style="margin-right:14px;">{{$login.f.number}}</label>
10
- <span class="glyphicon glyphicon-user" style="color:#a1d0f5"></span>
11
- <span>登录人:</span>
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
- <div class="logopicaode" >
18
- <div class="aodeloginedlogo"></div>
19
- </div>
20
- <h3 style="margin-bottom: 12px;height: 35px;">&nbsp;&nbsp;</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
+ <!--&lt;!&ndash; <icon-tree :functions='functions.functions' :userid='userid' v-show="!treeOrIcon"></icon-tree>&ndash;&gt;-->
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>