eoss-ui 0.5.71 → 0.5.73

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 (54) hide show
  1. package/lib/cascader.js +22 -3
  2. package/lib/data-table.js +26 -11
  3. package/lib/dialog.js +2 -3
  4. package/lib/eoss-ui.common.js +388 -109
  5. package/lib/icon.js +3 -2
  6. package/lib/icons.js +1 -1
  7. package/lib/index.js +1 -1
  8. package/lib/login.js +12 -2
  9. package/lib/main.js +101 -26
  10. package/lib/menu.js +3 -0
  11. package/lib/nav.js +172 -14
  12. package/lib/select.js +1 -2
  13. package/lib/selector.js +3 -3
  14. package/lib/theme-chalk/base.css +1 -1
  15. package/lib/theme-chalk/fonts/iconfont.ttf +0 -0
  16. package/lib/theme-chalk/fonts/iconfont.woff +0 -0
  17. package/lib/theme-chalk/icon.css +1 -1
  18. package/lib/theme-chalk/index.css +1 -1
  19. package/lib/theme-chalk/main.css +1 -1
  20. package/lib/theme-chalk/menu.css +1 -1
  21. package/lib/theme-chalk/nav.css +1 -1
  22. package/lib/theme-chalk/sizer.css +1 -1
  23. package/lib/theme-chalk/upload.css +1 -1
  24. package/lib/tree.js +4 -4
  25. package/package.json +2 -2
  26. package/packages/cascader/src/main.vue +22 -3
  27. package/packages/data-table/src/main.vue +23 -13
  28. package/packages/dialog/src/main.vue +0 -1
  29. package/packages/icon/src/main.vue +1 -0
  30. package/packages/icons/src/icon.json +1 -1
  31. package/packages/login/src/main.vue +5 -0
  32. package/packages/main/src/main.vue +28 -14
  33. package/packages/main/src/settings.vue +13 -0
  34. package/packages/menu/src/main.vue +3 -0
  35. package/packages/nav/src/main.vue +113 -7
  36. package/packages/select/src/main.vue +1 -2
  37. package/packages/selector/src/main.vue +1 -1
  38. package/packages/theme-chalk/lib/base.css +1 -1
  39. package/packages/theme-chalk/lib/fonts/iconfont.ttf +0 -0
  40. package/packages/theme-chalk/lib/fonts/iconfont.woff +0 -0
  41. package/packages/theme-chalk/lib/icon.css +1 -1
  42. package/packages/theme-chalk/lib/index.css +1 -1
  43. package/packages/theme-chalk/lib/main.css +1 -1
  44. package/packages/theme-chalk/lib/menu.css +1 -1
  45. package/packages/theme-chalk/lib/nav.css +1 -1
  46. package/packages/theme-chalk/lib/sizer.css +1 -1
  47. package/packages/theme-chalk/lib/upload.css +1 -1
  48. package/packages/theme-chalk/src/fonts/iconfont.ttf +0 -0
  49. package/packages/theme-chalk/src/fonts/iconfont.woff +0 -0
  50. package/packages/theme-chalk/src/icon.scss +432 -437
  51. package/packages/theme-chalk/src/main.scss +19 -15
  52. package/packages/theme-chalk/src/nav.scss +31 -2
  53. package/packages/tree/src/main.vue +2 -2
  54. package/src/index.js +1 -1
package/lib/tree.js CHANGED
@@ -3642,7 +3642,7 @@ module.exports = require("json-bigint");
3642
3642
  // ESM COMPAT FLAG
3643
3643
  __webpack_require__.r(__webpack_exports__);
3644
3644
 
3645
- // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/tree/src/main.vue?vue&type=template&id=2902064e&
3645
+ // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./packages/tree/src/main.vue?vue&type=template&id=4df0cd89&
3646
3646
  var render = function () {
3647
3647
  var _vm = this
3648
3648
  var _h = _vm.$createElement
@@ -3843,7 +3843,7 @@ var staticRenderFns = []
3843
3843
  render._withStripped = true
3844
3844
 
3845
3845
 
3846
- // CONCATENATED MODULE: ./packages/tree/src/main.vue?vue&type=template&id=2902064e&
3846
+ // CONCATENATED MODULE: ./packages/tree/src/main.vue?vue&type=template&id=4df0cd89&
3847
3847
 
3848
3848
  // EXTERNAL MODULE: ./src/config/api.js
3849
3849
  var api = __webpack_require__(1);
@@ -4218,7 +4218,7 @@ var util = __webpack_require__(0);
4218
4218
  if (Object.prototype.hasOwnProperty.call(this.search, 'value')) {
4219
4219
  this.searchValue = this.search.value;
4220
4220
  }
4221
- this.getTreeData(param);
4221
+ this.getTreeData(this.param);
4222
4222
  },
4223
4223
  mounted: function mounted() {},
4224
4224
 
@@ -4239,9 +4239,9 @@ var util = __webpack_require__(0);
4239
4239
  getTreeDatas: function getTreeDatas(param) {
4240
4240
  var _this2 = this;
4241
4241
 
4242
- this.loading = true;
4243
4242
  var params = util["a" /* default */].extend({}, this.param, this.where, param);
4244
4243
  if (!this.url || !this.isRemote) return;
4244
+ this.loading = true;
4245
4245
  util["a" /* default */].ajax({
4246
4246
  url: this.url,
4247
4247
  method: this.method,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eoss-ui",
3
- "version": "0.5.71",
3
+ "version": "0.5.73",
4
4
  "description": "eoss内部业务组件",
5
5
  "main": "lib/eoss-ui.common.js",
6
6
  "files": [
@@ -97,7 +97,7 @@
97
97
  "cp-cli": "^1.0.2",
98
98
  "cross-env": "^3.1.3",
99
99
  "css-loader": "^2.1.0",
100
- "eoss-element": "^0.2.98",
100
+ "eoss-element": "^0.2.99",
101
101
  "es6-promise": "^4.0.5",
102
102
  "eslint": "4.18.2",
103
103
  "eslint-config-elemefe": "0.1.1",
@@ -92,7 +92,26 @@ export default {
92
92
  return {};
93
93
  },
94
94
  created() {},
95
- methods: {},
95
+ methods: {
96
+ getLabel(val, data) {
97
+ let label = '';
98
+ for (let i = 0; i < data.length; i++) {
99
+ let item = data[i];
100
+ if (val == item[this.newProps.value]) {
101
+ label = item[this.newProps.label];
102
+ break;
103
+ } else {
104
+ if (item.children && item.children.length) {
105
+ label = this.getLabel(val, item.children);
106
+ if (label) {
107
+ break;
108
+ }
109
+ }
110
+ }
111
+ }
112
+ return label;
113
+ }
114
+ },
96
115
  render(h) {
97
116
  if (!this.hide) {
98
117
  if (this.readonly) {
@@ -105,7 +124,7 @@ export default {
105
124
  return item
106
125
  .map((ele) => {
107
126
  if (typeof ele === 'string') {
108
- return ele;
127
+ return this.getLabel(ele, this.datas);
109
128
  } else {
110
129
  return ele[this.newProps.label];
111
130
  }
@@ -113,7 +132,7 @@ export default {
113
132
  .join(this.separator);
114
133
  } else {
115
134
  if (typeof item === 'string') {
116
- return item;
135
+ return this.getLabel(item, this.datas);
117
136
  } else {
118
137
  return item[this.newProps.label];
119
138
  }
@@ -456,7 +456,7 @@ export default {
456
456
  show: true,
457
457
  sysCodes: [],
458
458
  infiniteDisabled: this.infiniteScroll,
459
- isUpadeData: false
459
+ isReload: false
460
460
  };
461
461
  },
462
462
  computed: {
@@ -541,13 +541,8 @@ export default {
541
541
  if (this.list && this.list.length) {
542
542
  return this.list;
543
543
  }
544
- if (
545
- this.page &&
546
- this.data &&
547
- this.data.length &&
548
- this.config.totalCount < this.data.length + 2
549
- ) {
550
- this.config.totalCount = this.data.length - this.lose;
544
+ this.config.totalCount = this.data.length - this.lose;
545
+ if (this.page && this.data.length > this.config.pageSize) {
551
546
  return this.data.filter((item, index) => {
552
547
  return (
553
548
  index > (this.config.pageNum - 1) * this.config.pageSize - 1 &&
@@ -622,6 +617,13 @@ export default {
622
617
  this.resetHeight();
623
618
  this.doLayout();
624
619
  },
620
+ // data: {
621
+ // immediate: true,
622
+ // deep: true,
623
+ // handler(val) {
624
+ // this.config.totalCount = val.length - this.lose;
625
+ // }
626
+ // },
625
627
  page() {
626
628
  this.resetHeight();
627
629
  this.doLayout();
@@ -673,7 +675,7 @@ export default {
673
675
  param: {
674
676
  deep: true,
675
677
  handler(val) {
676
- this.getTableData(112);
678
+ this.getTableData();
677
679
  }
678
680
  },
679
681
  page: {
@@ -1011,6 +1013,10 @@ export default {
1011
1013
  .then((res) => {
1012
1014
  this.tableLoading = false;
1013
1015
  if (res.rCode === 0 || res.status === 'success') {
1016
+ if (this.isReload) {
1017
+ this.list = [];
1018
+ this.isReload = false;
1019
+ }
1014
1020
  let results =
1015
1021
  this.parseData !== undefined
1016
1022
  ? this.parseData(res.results || res.data || res)
@@ -1021,10 +1027,13 @@ export default {
1021
1027
  );
1022
1028
  this.config.pageNum += 1;
1023
1029
  } else {
1024
- this.list = results.data || results.records || results.list || [];
1025
- this.$refs.oaTable &&
1026
- this.$refs.oaTable.resetScroll &&
1027
- this.$refs.oaTable.resetScroll(0, 0);
1030
+ this.$nextTick(() => {
1031
+ this.list =
1032
+ results.data || results.records || results.list || [];
1033
+ this.$refs.oaTable &&
1034
+ this.$refs.oaTable.resetScroll &&
1035
+ this.$refs.oaTable.resetScroll(0, 0);
1036
+ });
1028
1037
  }
1029
1038
  this.config.totalCount =
1030
1039
  results.count || results.total || results.totalCount;
@@ -1444,6 +1453,7 @@ export default {
1444
1453
  this.config = util.extend({}, this.config, obj.config);
1445
1454
  }
1446
1455
  if (this.url) {
1456
+ this.isReload = true;
1447
1457
  this.getTableData({ where: obj && obj.where ? obj.where : {}, first });
1448
1458
  }
1449
1459
  },
@@ -447,7 +447,6 @@ export default {
447
447
  this.show = false;
448
448
  this.$emit('close', res, this);
449
449
  if (this.closeParent && this.esDialog) {
450
- console.log(12121);
451
450
  this.esDialog.handleClosed(res);
452
451
  }
453
452
  },
@@ -24,6 +24,7 @@ export default {
24
24
  this.code = val;
25
25
  this.className = 'es-icon';
26
26
  } else {
27
+ this.code = '';
27
28
  this.className = val;
28
29
  }
29
30
  } else {
@@ -1 +1 @@
1
- ["zuomian","monitor","maximize","pointer-up","pointer-left","pointer-down","tri-down","retrograde","rainfall","caveat","print","alarm","table","duigouquan","bumen","mm","accelerate","quanping","password","qing","kaifa","daoru","piaochongicon","instructions","notice","wifi","tishicuo","minganciguanli","switch-off","switch-on","narrow","yidongduan","web","upload","message","go-back","close","shujutongji","folder","edit","enter","dian","wendu","shangwu","shenbao","magnifier","project-add","xiexian","caidan","tupian","home","yinyu","wenhao","template","daiban","set","zhengwen","cuowu","chenggong","indent","increase","ziliaoku","tuichu","quit","leaf","refresh","statistic","gengduo","lvyou","mail","user","zhishi","weizhi","jinggao","zuzhijigou","xue","fenxiang","jinrong","shanchu","jianhao","jiahao","yinzhang","renyuanqiehuan","gouxuanzhong1","circle","fuxuankuang1","fangkuang","application","wenjianjia","jiaren","xiugai","duanxinguanli","workbench","rizhi","gongwen","qingshi","shiwu","official","baogao","document","wodeyouxiang","ziliaojiaohuan","denglu","podium","fangkuai","xuewei","duoyun","pm","xiajia","huanbao","dunpai","shu","gongzuozheng","more","fenlei","delete","fengsu","bar","yuanqu","duomeiti","youjian","qiye","zuixinzixun","biaoge","omit","diaotou","jiantou-left","jiantou-right","jiantou-up","roles","jiantou-next","chijiuhuacunchu","zhuanhuan","cloudy","form","wuye","tri-up","pointer-right","bianji","tri-right","tri-left","daimaguanli","jiankong","kaifazhong","fujian","bingtu","zhuzhuangtu","lose","rmb","move","xiazai","yiban","laoshi","clear","jinyong","yunxing","weihu","chakan","pifu","ren","gouwuche","loading2","yulan","ziliao","yidong","fenxiang11","kaoqin","change","shidu","portfolio","info","yanjing","laba","camera","xitongxiaoxi","xitongguanli","webduan","wagnz","group","shengqian","jiantou-prev","attention","look","guanzhu","daikuan","tubiao","duigou","star","dayin","xinzeng","reduce","goup","calendar","tree","yingyong","caution","zhuanfa","add","zongtiqixian","daochu","gongwu","ihouse","chilun","weixiu","chengguo","trophy","duiwu","qiehuanjiaose","door","shebei","fangjian","microscope","huaxue","shiyanshianquan","shiyan","qiyexinxi","yewuxinxi","lab","shiyanguanli","yuqing","big-screen","signal-search","database","star-mark","cng","professor","informatization","code","science","price","xunhuan","savings","administration","aid","biao","line","xietong","jingzheng","enterprise","datatable","toubiao","bingdu","keji2","qiyeku5","touzi5","zijinliu","zhishichanquan3","kejifuwu2","zhishichanquan2","zijinanquan","kejifuwu1","geju","yiqingfangkong","kejifuwu","anquanfangkong","shujufuwu","shujuceng","shujugongxiang","flows","setup","shujulian","caiwujianguan","caiwuliushui","mubiaogeju","juxing","fuwuqi","touzijigou","xiezilou","jianzhu","logo","touzhi","zijin","fintech","touzixiangmu","library","touziguanli","zhongda","ziyuan","shujutai","shujudongtai","bank","shujuzhongxin","zhongyaomubiao","touzishijian","caiwuguanli","mingzhong","touzishenpi","jingzhenggeju","property","keji","qiyeku","zhongyaojihui","touzilicai","zhishichanquan","touzi","tzz","menu","xiangmushu","pdf","jiazai","gongsi","rise","jbxx","zwxx","jypx","jcgl","ndkh","grjl","shgx","gou","shijian","fukuan","guoji","shoukuan","down","gongzuotai","gaigedongtai","xitongshezhi","relation","zuzhirenshi","kaohepingjia","caiwujiandu","sanzhongyida","mima","xianshi","zhanghao","bangongshi","checked","checke","help","kuoda","banli","xiaoxi","shouqicaidan","shouqicaidan-right","smile","tongzhi","guanji","shuaxin","guiji","tianjiawenjianjia","yunxiazai","del","touzifangan","zongheguanli","sanzhongyida_mian","gongwenguanli1","heguiguanli","jingyingfenxi","txl","diannao","renliziyuan","caiwuxitong","shiwuguanli","shouye","bangongyongpin","sidebar","zhidulashi","log","fawenguanli","huiyiguanli","zuzhishishi","gongwenqianshou","jinxiupeixun","gongwenbao","jiaohuan","daibanshixiang","richeng","tongxunlu","yongche","yanzheng","daibanxinxi","shuben","fanfu","guangbo","shuzhuangtu","bengqiye","tongguo","dengdai","cross","daichuli","zhenggai","shouli","shujuhecha","guanli","paper-file","wenjian","dakaiwenjian","yewu","jiance","jiheguanli","jinru","arrow-right","lingdao","rencai","prev","next","jianpan","qrcode","bohui","homepage","download","gantanhao","dingding","weixin","pad","ios","android","txt","doc","audioo","video","zip","shuru","duanxin","saoma","youxiang","word","excel","fileword","picture","ppt","ca","usb-key","wenjianjiadakai"]
1
+ ["zuomian","monitor","maximize","pointer-up","pointer-left","pointer-down","tri-down","retrograde","rainfall","caveat","print","alarm","table","duigouquan","bumen","mm","accelerate","quanping","password","qing","kaifa","daoru","piaochongicon","instructions","notice","wifi","tishicuo","minganciguanli","switch-off","switch-on","narrow","yidongduan","web","upload","message","go-back","close","shujutongji","folder","edit","enter","dian","wendu","shangwu","shenbao","magnifier","project-add","xiexian","caidan","tupian","home","yinyu","wenhao","template","daiban","set","zhengwen","cuowu","chenggong","indent","increase","ziliaoku","tuichu","quit","leaf","refresh","statistic","gengduo","lvyou","mail","user","zhishi","weizhi","jinggao","zuzhijigou","xue","fenxiang","jinrong","shanchu","jianhao","jiahao","yinzhang","renyuanqiehuan","gouxuanzhong1","circle","fuxuankuang1","fangkuang","application","wenjianjia","jiaren","xiugai","duanxinguanli","workbench","rizhi","gongwen","qingshi","shiwu","official","baogao","document","wodeyouxiang","ziliaojiaohuan","denglu","podium","fangkuai","xuewei","duoyun","pm","xiajia","huanbao","dunpai","shu","gongzuozheng","more","fenlei","delete","fengsu","bar","yuanqu","duomeiti","youjian","qiye","zuixinzixun","biaoge","omit","diaotou","jiantou-left","jiantou-right","jiantou-up","roles","jiantou-next","chijiuhuacunchu","zhuanhuan","cloudy","form","wuye","tri-up","pointer-right","bianji","tri-right","tri-left","daimaguanli","jiankong","kaifazhong","fujian","bingtu","zhuzhuangtu","lose","rmb","move","xiazai","yiban","laoshi","clear","jinyong","yunxing","weihu","chakan","pifu","ren","gouwuche","loading2","yulan","ziliao","yidong","fenxiang11","kaoqin","change","shidu","portfolio","info","yanjing","laba","camera","xitongxiaoxi","xitongguanli","webduan","wagnz","group","shengqian","jiantou-prev","attention","look","guanzhu","daikuan","tubiao","duigou","star","dayin","xinzeng","reduce","goup","calendar","tree","yingyong","caution","zhuanfa","add","zongtiqixian","daochu","gongwu","ihouse","chilun","weixiu","chengguo","trophy","duiwu","qiehuanjiaose","door","shebei","fangjian","microscope","huaxue","shiyanshianquan","shiyan","qiyexinxi","yewuxinxi","lab","shiyanguanli","yuqing","big-screen","signal-search","database","star-mark","cng","professor","informatization","code","science","price","xunhuan","savings","administration","aid","biao","line","xietong","jingzheng","enterprise","datatable","toubiao","bingdu","keji2","qiyeku5","touzi5","zijinliu","zhishichanquan3","kejifuwu2","zhishichanquan2","zijinanquan","kejifuwu1","geju","yiqingfangkong","kejifuwu","anquanfangkong","shujufuwu","shujuceng","shujugongxiang","flows","setup","shujulian","caiwujianguan","caiwuliushui","mubiaogeju","juxing","fuwuqi","touzijigou","xiezilou","jianzhu","logo","touzhi","zijin","fintech","touzixiangmu","library","touziguanli","zhongda","ziyuan","shujutai","shujudongtai","bank","shujuzhongxin","zhongyaomubiao","touzishijian","caiwuguanli","mingzhong","touzishenpi","jingzhenggeju","property","keji","qiyeku","zhongyaojihui","touzilicai","zhishichanquan","touzi","tzz","menu","xiangmushu","pdf","jiazai","gongsi","rise","jbxx","zwxx","jypx","jcgl","ndkh","grjl","shgx","gou","shijian","fukuan","guoji","shoukuan","down","gongzuotai","gaigedongtai","xitongshezhi","relation","zuzhirenshi","kaohepingjia","caiwujiandu","sanzhongyida","mima","xianshi","zhanghao","bangongshi","checked","checke","help","kuoda","banli","xiaoxi","shouqicaidan","shouqicaidan-right","smile","tongzhi","guanji","shuaxin","guiji","tianjiawenjianjia","yunxiazai","del","touzifangan","zongheguanli","sanzhongyida_mian","gongwenguanli1","heguiguanli","jingyingfenxi","txl","diannao","renliziyuan","caiwuxitong","shiwuguanli","shouye","bangongyongpin","sidebar","zhidulashi","log","fawenguanli","huiyiguanli","zuzhishishi","gongwenqianshou","jinxiupeixun","gongwenbao","jiaohuan","daibanshixiang","richeng","tongxunlu","yongche","yanzheng","daibanxinxi","shuben","fanfu","guangbo","shuzhuangtu","bengqiye","tongguo","dengdai","cross","daichuli","zhenggai","shouli","shujuhecha","guanli","paper-file","wenjian","dakaiwenjian","yewu","jiance","jiheguanli","jinru","arrow-right","lingdao","rencai","prev","next","jianpan","qrcode","bohui","homepage","download","gantanhao","dingding","weixin","pad","ios","android","txt","doc","audioo","video","zip","shuru","duanxin","saoma","youxiang","word","excel","fileword","picture","ppt","ca","usb-key","wenjianjiadakai","yingyonglan"]
@@ -60,6 +60,7 @@
60
60
  size="large"
61
61
  type="text"
62
62
  name="username"
63
+ tabindex="1"
63
64
  exclude
64
65
  :placeholder="username.placeholder"
65
66
  :focusShow="focusShow"
@@ -81,6 +82,7 @@
81
82
  v-model="formData.password"
82
83
  size="large"
83
84
  name="password"
85
+ tabindex="2"
84
86
  type="password"
85
87
  :placeholder="password.placeholder"
86
88
  autocomplete="off"
@@ -106,6 +108,7 @@
106
108
  <el-input
107
109
  size="large"
108
110
  name="identifyingCode"
111
+ tabindex="3"
109
112
  type="text"
110
113
  v-model="formData.identifyingCode"
111
114
  placeholder="请输入验证码"
@@ -222,6 +225,7 @@
222
225
  size="large"
223
226
  type="text"
224
227
  name="target"
228
+ tabindex="4"
225
229
  :placeholder="
226
230
  active == 6 ? phone.placeholder : email.placeholder
227
231
  "
@@ -245,6 +249,7 @@
245
249
  placeholder="请输入验证码"
246
250
  autocomplete="off"
247
251
  class="es-label-image-code"
252
+ tabindex="5"
248
253
  >
249
254
  <template slot="prefix">
250
255
  <i class="es-icon-yanzheng es-label-code-image"></i>
@@ -78,8 +78,12 @@
78
78
  </div>
79
79
  <div class="es-main-box" v-if="reset">
80
80
  <div class="es-main-left" v-if="layout !== 'topnav' && showSide">
81
- <div class="es-main-side" v-if="layout === 'topside'">
82
- <div class="es-main-side-logo">
81
+ <div
82
+ class="es-main-side"
83
+ :class="{ 'es-main-topside': layout === 'topside' }"
84
+ v-if="layout === 'topside' || layout === 'side'"
85
+ >
86
+ <div class="es-main-side-logo" v-if="layout === 'topside'">
83
87
  <img class="es-main-logo" :src="logoUrl" v-if="logoUrl" />
84
88
  </div>
85
89
  <es-handle-user
@@ -116,16 +120,17 @@
116
120
  <es-nav
117
121
  v-if="showMenu && showDefault"
118
122
  :is-top="layout == 'topside'"
123
+ :overlap="layout == 'side'"
119
124
  :data="menu"
120
125
  :default-active="active"
121
126
  :width="navsWidth"
122
- :nav-width="navWidth"
127
+ :nav-width="_navWidth"
123
128
  :icons="icons"
124
129
  :menu-icon="menuIcon"
125
130
  :sub-icon="subIcon"
126
131
  :biserial="biserial"
127
132
  :title="showNavTitle ? title : false"
128
- :showCollapse="showNavTitle"
133
+ :showCollapse="showNavTitle ? showCollapse : false"
129
134
  :menu-tips="menuTips"
130
135
  :is-default="isDefault"
131
136
  :paddingLeft="navPaddingLeft"
@@ -220,13 +225,6 @@
220
225
  </div>
221
226
  </div>
222
227
  </div>
223
- <!-- <div v-show="set" ref="box" class="es-sets-button">
224
- <el-button
225
- type="primary"
226
- class="es-icon-xitongguanli"
227
- ref="area"
228
- ></el-button>
229
- </div> -->
230
228
  <settings
231
229
  v-bind="$attrs"
232
230
  :theme="color"
@@ -431,7 +429,15 @@ export default {
431
429
  appCode: String,
432
430
  //菜单左边距
433
431
  navPaddingLeft: Number,
434
- navWidth: String
432
+ navBoxWidth: {
433
+ type: String,
434
+ default: '230px'
435
+ },
436
+ navWidth: String,
437
+ showCollapse: {
438
+ type: Boolean,
439
+ default: true
440
+ }
435
441
  },
436
442
  computed: {
437
443
  showHeader() {
@@ -463,7 +469,14 @@ export default {
463
469
  return true;
464
470
  },
465
471
  navsWidth() {
466
- return this.layout === 'topside' ? '230px' : undefined;
472
+ return this.layout === 'topside' ? this.navBoxWidth : undefined;
473
+ },
474
+ _navWidth() {
475
+ return this.layout === 'side'
476
+ ? this.navBoxWidth
477
+ : this.layout === 'subsystem' || this.layout === 'topside'
478
+ ? '0'
479
+ : this.navWidth;
467
480
  },
468
481
  showNavTitle() {
469
482
  return this.layout !== 'topside';
@@ -518,7 +531,7 @@ export default {
518
531
  } else {
519
532
  return { set: !this.set, system: false };
520
533
  }
521
- } else if (this.layout === 'topside') {
534
+ } else if (this.layout === 'topside' || this.layout === 'side') {
522
535
  if (this.hides && Object.keys(this.hides).length) {
523
536
  return {
524
537
  ...this.hides,
@@ -1368,6 +1381,7 @@ export default {
1368
1381
  }
1369
1382
  }
1370
1383
  } else {
1384
+ this.tabs = [];
1371
1385
  this.handleJump(obj.url, obj.urlopenmode, obj);
1372
1386
  }
1373
1387
  return obj;
@@ -89,6 +89,19 @@
89
89
  <i class="es-icon-gou" v-show="activeName == 'topside'"></i>
90
90
  </div>
91
91
  </el-tooltip>
92
+ <el-tooltip
93
+ class="es-setting-navs-item"
94
+ effect="dark"
95
+ content="侧边菜单布局"
96
+ placement="bottom"
97
+ >
98
+ <div
99
+ class="es-setting-navs es-setting-side-navs"
100
+ @click.stop="handleLayout('side')"
101
+ >
102
+ <i class="es-icon-gou" v-show="activeName == 'side'"></i>
103
+ </div>
104
+ </el-tooltip>
92
105
  </div>
93
106
  </div>
94
107
  </el-drawer>
@@ -67,6 +67,9 @@ export default {
67
67
  },
68
68
  width() {
69
69
  this.getMaxWidth();
70
+ },
71
+ height() {
72
+ this.$refs.esMenu.update();
70
73
  }
71
74
  },
72
75
  data() {
@@ -5,8 +5,21 @@
5
5
  :class="biserial ? 'es-nav-biserial' : ''"
6
6
  :style="{ width: boxWidth, height: height }"
7
7
  >
8
- <div class="es-nav-initial" v-if="biserial">
8
+ <div
9
+ class="es-nav-initial"
10
+ v-if="biserial"
11
+ :style="{
12
+ width: _navWidth,
13
+ left:
14
+ this.overlap && !this.subMenu.length
15
+ ? '15px'
16
+ : show
17
+ ? '-' + boxWidth
18
+ : ''
19
+ }"
20
+ >
9
21
  <es-menu
22
+ :class="{ 'es-nav-overlap': overlap }"
10
23
  v-bind="$attrs"
11
24
  sub-nav
12
25
  :data="menu"
@@ -22,11 +35,15 @@
22
35
  </div>
23
36
  <div
24
37
  class="es-nav-main"
38
+ :class="{ 'es-nav-overlap': overlap }"
25
39
  :biserial="biserial"
26
- :style="{ width: biserial ? width : boxWidth }"
40
+ :style="{
41
+ width: biserial ? width : boxWidth,
42
+ left: show ? '15px' : navWidth
43
+ }"
27
44
  v-show="biserial ? subMenu.length : menu.length"
28
45
  >
29
- <div class="es-nav-title" v-if="showTitle">
46
+ <div class="es-nav-title" v-if="showTitle" ref="navTitle">
30
47
  <span v-show="!isCollapse">{{ headline }}</span>
31
48
  <template v-if="showCollapse">
32
49
  <i
@@ -48,6 +65,7 @@
48
65
  :collapse="isCollapse"
49
66
  :default-active="menuActive"
50
67
  :width="isTop ? boxWidth : menuWidth"
68
+ :height="menuHeight"
51
69
  :style="{ height: menuHeight }"
52
70
  :is-default="isDefault"
53
71
  :biserial="biserial"
@@ -60,6 +78,15 @@
60
78
  @close="handleClose"
61
79
  ></es-menu>
62
80
  </div>
81
+
82
+ <div v-show="show" ref="box" class="es-sets-button">
83
+ <el-button
84
+ round
85
+ type="primary"
86
+ class="es-icon-yingyonglan"
87
+ ref="area"
88
+ ></el-button>
89
+ </div>
63
90
  </div>
64
91
  </template>
65
92
  <script>
@@ -103,9 +130,16 @@ export default {
103
130
  subIcon: {
104
131
  type: Boolean,
105
132
  default: true
106
- }
133
+ },
134
+ overlap: Boolean
107
135
  },
108
136
  computed: {
137
+ show() {
138
+ return this.overlap && this.subMenu.length;
139
+ },
140
+ showMenu() {
141
+ return this.biserial ? this.subMenu.length : this.menu.length;
142
+ },
109
143
  menu() {
110
144
  return this.data;
111
145
  },
@@ -135,15 +169,23 @@ export default {
135
169
  },
136
170
  boxWidth() {
137
171
  if (!this.biserial) {
172
+ if (this.overlap) {
173
+ return this.navWidth;
174
+ }
138
175
  if (this.isShow) {
139
176
  return this.width;
140
177
  } else {
141
178
  return this.navWidth;
142
179
  }
143
180
  }
144
- return this.subMenu && this.subMenu.length && this.isShow
181
+ return this.subMenu && this.subMenu.length && this.isShow && !this.overlap
145
182
  ? parseInt(this.width, 10) + parseInt(this.navWidth, 10) + 'px'
146
183
  : this.navWidth;
184
+ },
185
+ _navWidth() {
186
+ return this.overlap
187
+ ? parseInt(this.navWidth, 10) - 30 + 'px'
188
+ : this.navWidth;
147
189
  }
148
190
  },
149
191
  watch: {
@@ -208,6 +250,9 @@ export default {
208
250
  } else {
209
251
  this.subMenu = [];
210
252
  }
253
+ },
254
+ showMenu() {
255
+ this.resetHeight();
211
256
  }
212
257
  },
213
258
  data() {
@@ -224,8 +269,61 @@ export default {
224
269
  },
225
270
  mounted() {
226
271
  this.resetHeight();
272
+ this.move();
227
273
  },
228
274
  methods: {
275
+ //设置按钮拖动
276
+ move() {
277
+ let area = this.$refs.area.$el;
278
+ let box = this.$refs.box;
279
+ let [sTime, eTime] = [0, 0];
280
+ area.addEventListener('mousedown', (e) => {
281
+ sTime = new Date().getTime();
282
+ let { y: downY, x: downX } = e;
283
+ let { height: winH, width: winW } =
284
+ document.body.getBoundingClientRect();
285
+ //防止拖动期间选中和复制网页文本
286
+ document.body.onselectstart = document.body.oncontextmenu = () => {
287
+ return false;
288
+ };
289
+ document.onmousemove = (eve) => {
290
+ let size = 40;
291
+ let { y: moveY, x: moveX } = eve;
292
+ let { top: boxTop, left: boxLeft } = box.getBoundingClientRect();
293
+ boxTop += moveY - downY;
294
+ boxLeft += moveX - downX;
295
+ boxTop >= winH - size && (boxTop = winH - size);
296
+ boxTop <= -size && (boxTop = -size);
297
+ boxLeft >= winW - size && (boxLeft = winW - size);
298
+ boxLeft <= -size && (boxLeft = -size);
299
+ if (boxTop < 0) {
300
+ boxTop = 0;
301
+ }
302
+ if (boxLeft < 0) {
303
+ boxLeft = 0;
304
+ }
305
+ box.style.top = boxTop + 'px';
306
+ box.style.left = boxLeft + 'px';
307
+ downY = moveY;
308
+ downX = moveX;
309
+ };
310
+ document.onmouseup = () => {
311
+ eTime = new Date().getTime();
312
+ let isClick = eTime - sTime < 200;
313
+ if (isClick) {
314
+ let onArea = () => {
315
+ this.subMenu = [];
316
+ area.removeEventListener('click', onArea);
317
+ };
318
+ area.addEventListener('click', onArea);
319
+ }
320
+ document.onmousemove = null;
321
+ document.body.onselectstart = document.body.oncontextmenu = () => {
322
+ return true;
323
+ };
324
+ };
325
+ });
326
+ },
229
327
  handleChange() {
230
328
  if (this.biserial) {
231
329
  this.isShow = !this.isShow;
@@ -233,7 +331,7 @@ export default {
233
331
  this.isCollapse = !this.isCollapse;
234
332
  if (this.isCollapse) {
235
333
  this.isShow = false;
236
- this.menuWidth = '70px';
334
+ this.menuWidth = this.navWidth;
237
335
  } else {
238
336
  this.isShow = true;
239
337
  this.menuWidth = this.width;
@@ -270,8 +368,16 @@ export default {
270
368
  height -= item.offsetHeight + mt + mb;
271
369
  }
272
370
  });
371
+ if (this.overlap) {
372
+ height -= 15;
373
+ }
273
374
  this.height = height + 'px';
274
- this.menuHeight = this.showTitle ? height - 49 + 'px' : height + 'px';
375
+ if (this.showTitle) {
376
+ let theight = this.$refs.navTitle.offsetHeight;
377
+ this.menuHeight = height - theight + 'px';
378
+ } else {
379
+ this.menuHeight = height + 'px';
380
+ }
275
381
  });
276
382
  }
277
383
  }
@@ -200,7 +200,6 @@ export default {
200
200
  immediate: true,
201
201
  handler(val, old) {
202
202
  if (val && val !== old) {
203
- console.log(1);
204
203
  this.label = this.service ? 'label' : 'shortName';
205
204
  this.valKey = this.service ? 'value' : 'cciValue';
206
205
  const options = store.get(val);
@@ -213,6 +212,7 @@ export default {
213
212
  }
214
213
  },
215
214
  url: {
215
+ immediate: true,
216
216
  handler(val, old) {
217
217
  if (val && old !== val && !this.sysCode) {
218
218
  this.getData();
@@ -222,7 +222,6 @@ export default {
222
222
  param: {
223
223
  deep: true,
224
224
  handler(val, old) {
225
- console.log(3);
226
225
  if (this.url && JSON.stringify(val) !== JSON.stringify(old)) {
227
226
  this.options = [];
228
227
  this.getData(this.sysCode);
@@ -115,7 +115,7 @@
115
115
  type="text"
116
116
  ref="reference"
117
117
  autocomplete="off"
118
- clearable="clearable"
118
+ :clearable="clearable"
119
119
  showClearIcon
120
120
  :name="name"
121
121
  :readonly="filterable ? false : true"