eoss-ui 0.5.81-beta4 → 0.5.81-beta6

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 (36) hide show
  1. package/lib/eoss-ui.common.js +1610 -1104
  2. package/lib/index.js +1 -1
  3. package/lib/main.js +1571 -1122
  4. package/lib/selector-panel.js +64 -11
  5. package/lib/selector.js +8 -4
  6. package/lib/theme-chalk/index.css +1 -1
  7. package/lib/theme-chalk/main.css +1 -1
  8. package/lib/theme-chalk/selector-panel.css +1 -1
  9. package/lib/theme-chalk/simplicity.css +1 -1
  10. package/lib/theme-chalk/tree.css +1 -1
  11. package/package.json +1 -1
  12. package/packages/main/src/default/index.vue +1 -1
  13. package/packages/main/src/main.vue +13 -12
  14. package/packages/main/src/simplicity/apps.vue +176 -145
  15. package/packages/main/src/simplicity/index.vue +160 -238
  16. package/packages/main/src/simplicity/menu-list.vue +117 -32
  17. package/packages/main/src/simplicity/message.vue +35 -25
  18. package/packages/main/src/simplicity/notice.vue +72 -39
  19. package/packages/main/src/simplicity/router-page.vue +53 -0
  20. package/packages/main/src/simplicity/settings.vue +1 -1
  21. package/packages/main/src/simplicity/sub-menu.vue +69 -69
  22. package/packages/main/src/simplicity/user.vue +4 -4
  23. package/packages/main/src/simplicity/userinfo.vue +1 -0
  24. package/packages/selector/src/main.vue +6 -2
  25. package/packages/selector-panel/src/main.vue +21 -2
  26. package/packages/selector-panel/src/selection.vue +6 -0
  27. package/packages/theme-chalk/lib/index.css +1 -1
  28. package/packages/theme-chalk/lib/main.css +1 -1
  29. package/packages/theme-chalk/lib/selector-panel.css +1 -1
  30. package/packages/theme-chalk/lib/simplicity.css +1 -1
  31. package/packages/theme-chalk/lib/tree.css +1 -1
  32. package/packages/theme-chalk/src/common/var.scss +2 -0
  33. package/packages/theme-chalk/src/selector-panel.scss +2 -1
  34. package/packages/theme-chalk/src/simplicity.scss +191 -5
  35. package/packages/theme-chalk/src/tree.scss +4 -2
  36. package/src/index.js +1 -1
@@ -1,24 +1,93 @@
1
1
  <template>
2
- <el-scrollbar>
3
- <div
4
- class="es-simplicity-menus-item"
5
- v-for="(item, index) in data"
6
- :key="item.id"
7
- :class="{ 'is-active': active === item.id }"
8
- @click="handleClick(item)"
9
- >
10
- <es-icon
11
- class="es-simplicity_apps-icon"
12
- :style="setStyle(index)"
13
- :contents="item.icons || item.icon || menuIcon"
14
- ></es-icon>
15
- <div class="es-simplicity-menus-tips" v-if="item.tips">
16
- {{ item.tips > 99 ? '99+' : item.tips }}
2
+ <el-scrollbar :class="{ 'is-fold': fold }" ref="scrollbar">
3
+ <template v-for="(item, index) in data">
4
+ <el-popover
5
+ v-if="
6
+ (item.children && item.children.length) ||
7
+ (item.fourthTabs, item.fourthTabs.length)
8
+ "
9
+ placement="right"
10
+ trigger="hover"
11
+ popper-class="es-simplicity-menus-sub"
12
+ :width="width"
13
+ :key="item.id"
14
+ @show="show = true"
15
+ @hide="show = false"
16
+ >
17
+ <menu-list
18
+ ref="menus"
19
+ :active="active"
20
+ :popover="show"
21
+ :data="[...(item.children || []), ...(item.fourthTabs || [])]"
22
+ :menuIcon="menuIcon"
23
+ :color="color"
24
+ :backgroundColor="backgroundColor"
25
+ :width="width"
26
+ @command="handleClick"
27
+ ></menu-list>
28
+ <div
29
+ slot="reference"
30
+ class="es-simplicity-menus-item"
31
+ :key="item.id"
32
+ :class="{ 'is-active': defaultActive === item.id, 'is-fold': fold }"
33
+ :title="fold ? item.text || item.name : ''"
34
+ >
35
+ <template v-if="fold">
36
+ <el-badge is-dot :hidden="!item.tips">
37
+ <es-icon
38
+ class="es-simplicity_apps-icon"
39
+ :style="setStyle(index)"
40
+ :contents="item.icons || item.icon || menuIcon"
41
+ ></es-icon>
42
+ </el-badge>
43
+ </template>
44
+ <template v-else>
45
+ <es-icon
46
+ class="es-simplicity_apps-icon"
47
+ :style="setStyle(index)"
48
+ :contents="item.icons || item.icon || menuIcon"
49
+ ></es-icon>
50
+ <div class="es-simplicity-menus-tips" v-if="item.tips">
51
+ {{ item.tips > 99 ? '99+' : item.tips }}
52
+ </div>
53
+ </template>
54
+ <div class="es-simplicity_apps-text" v-show="!fold">
55
+ {{ item.text || item.name }}
56
+ </div>
57
+ </div>
58
+ </el-popover>
59
+ <div
60
+ v-else
61
+ class="es-simplicity-menus-item"
62
+ :key="item.id"
63
+ :class="{ 'is-active': defaultActive === item.id, 'is-fold': fold }"
64
+ :title="fold ? item.text || item.name : ''"
65
+ @click="handleClick(item)"
66
+ >
67
+ <template v-if="fold">
68
+ <el-badge is-dot :hidden="!item.tips">
69
+ <es-icon
70
+ class="es-simplicity_apps-icon"
71
+ :style="setStyle(index)"
72
+ :contents="item.icons || item.icon || menuIcon"
73
+ ></es-icon>
74
+ </el-badge>
75
+ </template>
76
+ <template v-else>
77
+ <es-icon
78
+ class="es-simplicity_apps-icon"
79
+ :style="setStyle(index)"
80
+ :contents="item.icons || item.icon || menuIcon"
81
+ ></es-icon>
82
+ <div class="es-simplicity-menus-tips" v-if="item.tips">
83
+ {{ item.tips > 99 ? '99+' : item.tips }}
84
+ </div>
85
+ </template>
86
+ <div class="es-simplicity_apps-text" v-show="!fold">
87
+ {{ item.text || item.name }}
88
+ </div>
17
89
  </div>
18
- <div class="es-simplicity_apps-text">
19
- {{ item.text || item.name }}
20
- </div>
21
- </div>
90
+ </template>
22
91
  </el-scrollbar>
23
92
  </template>
24
93
 
@@ -27,19 +96,33 @@ export default {
27
96
  name: 'MenuList',
28
97
  components: {},
29
98
  props: {
30
- index: [Number, String],
99
+ active: String,
31
100
  menuIcon: String,
32
101
  color: [String, Array],
33
102
  backgroundColor: [String, Array],
34
- data: Array
103
+ data: Array,
104
+ fold: Boolean,
105
+ width: Number,
106
+ popover: Boolean
35
107
  },
36
108
  data() {
37
109
  return {
38
- active: ''
110
+ defaultActive: this.active,
111
+ show: false,
112
+ height: document.body.offsetHeight - 44
39
113
  };
40
114
  },
41
115
  computed: {},
42
- watch: {},
116
+ watch: {
117
+ popover() {
118
+ if (this.$el.offsetHeight > this.height) {
119
+ this.$el.style.height = this.height + 'px';
120
+ this.$refs.scrollbar.update();
121
+ } else {
122
+ this.$el.style.height = '';
123
+ }
124
+ }
125
+ },
43
126
  created() {},
44
127
  mounted() {},
45
128
  methods: {
@@ -64,15 +147,17 @@ export default {
64
147
  return obj;
65
148
  },
66
149
  handleClick(res) {
67
- this.active = res.id;
68
- this.$emit(
69
- 'command',
70
- res,
71
- this.index !== undefined ? this.index + 1 : this.index
72
- );
73
- },
74
- clearActive() {
75
- this.active = '';
150
+ this.defaultActive = res.id;
151
+ if (res.url) {
152
+ if (res.urlopenmode == 1) {
153
+ util.win.open(res.url);
154
+ return;
155
+ } else if (res.urlopenmode == 2) {
156
+ util.win.location.href = res.url;
157
+ return;
158
+ }
159
+ }
160
+ this.$emit('command', res);
76
161
  }
77
162
  }
78
163
  };
@@ -1,49 +1,59 @@
1
1
  <template>
2
2
  <el-drawer
3
- class="es-msgs-box"
4
- custom-class="es-msgs-main"
3
+ class="es-simplicity-message"
4
+ modal-class="es-simplicity-message-modal"
5
5
  direction="rtl"
6
- size="200px"
7
- :modal="false"
6
+ size="648px"
8
7
  :withHeader="false"
9
8
  :visible.sync="show"
9
+ :modal-append-to-body="false"
10
10
  >
11
- <div class="es-msg-header">
12
- <span class="es-msg-title">消息提示</span>
13
- <span class="es-overlook" @click="handleIgnoreAll">全部忽略</span>
11
+ <div class="es-simplicity-message-header">
12
+ <span class="es-simplicity-message-title">消息提示</span>
13
+ <span class="es-simplicity-message-overlook" @click="handleIgnoreAll"
14
+ >全部忽略</span
15
+ >
14
16
  </div>
15
- <div class="es-msg-lists-box">
16
- <div class="es-msg-lists">
17
+ <div class="es-simplicity-message-lists-box">
18
+ <div class="es-simplicity-message-lists">
17
19
  <el-scrollbar class="es-scrollbar">
18
20
  <div v-infinite-scroll="getMsg" :infinite-scroll-disabled="disabled">
19
- <el-card
21
+ <div
20
22
  v-for="(item, index) in msgs"
21
23
  :key="item.id"
22
- class="es-msg-item"
24
+ class="es-simplicity-message-item"
23
25
  >
24
- <i
25
- class="el-icon-circle-close"
26
- title="忽略"
27
- @click="handleIgnore(item, index)"
28
- ></i>
29
- <div class="es-msg-item-title">{{ item.title }}</div>
26
+ <div class="es-simplicity-message-item-title">
27
+ {{ item.title }}
28
+ </div>
30
29
  <div>
31
- <span class="es-msg-item-time">{{ item.time }}</span>
30
+ <span class="es-simplicity-message-item-time">
31
+ {{ item.time }}
32
+ </span>
32
33
  <span
33
- class="es-overlook"
34
+ class="es-simplicity-message-handler"
34
35
  v-show="item.handlerUrl"
35
36
  @click="handleMessage(item, index)"
36
- >处理</span
37
37
  >
38
+ 处理
39
+ </span>
40
+ <span
41
+ class="es-simplicity-message-overlook"
42
+ @click="handleIgnore(item, index)"
43
+ >
44
+ 忽略
45
+ </span>
38
46
  </div>
39
- </el-card>
40
- <p class="es-msg-tips" v-if="loading">加载中...</p>
41
- <p class="es-msg-tips" v-if="noMore && count > 0">没有更多了</p>
47
+ </div>
48
+ <p class="es-simplicity-message-tips" v-if="loading">加载中...</p>
49
+ <p class="es-simplicity-message-tips" v-if="noMore && count > 0">
50
+ 没有更多了
51
+ </p>
42
52
  </div>
43
53
  </el-scrollbar>
44
54
  </div>
45
55
  </div>
46
- <div class="es-msg-total">当前共有{{ count }}条消息记录</div>
56
+ <div class="es-simplicity-message-total">共有 {{ count }} 条消息记录</div>
47
57
  <es-dialog
48
58
  title="处理"
49
59
  name="manage"
@@ -63,7 +73,7 @@ import {
63
73
  } from 'eoss-ui/src/config/api.js';
64
74
  import util from 'eoss-ui/src/utils/util';
65
75
  export default {
66
- name: 'message',
76
+ name: 'Message',
67
77
  provide() {
68
78
  return {
69
79
  deleteMessage: this.handleRemove
@@ -1,44 +1,53 @@
1
1
  <template>
2
2
  <transition name="el-drawer-fade" @after-enter="handleMouse(false)">
3
3
  <div
4
- class="es-notice-box"
5
- v-show="data.length"
4
+ class="es-simplicity-notice-box"
5
+ :class="{ 'es-in': msgs.length }"
6
+ v-show="msgs.length"
6
7
  @mouseover="handleMouse(true)"
7
8
  @mouseout="handleMouse(false)"
8
9
  >
9
- <div class="es-msgs-box" :class="{ 'es-in': data.length }">
10
- <div class="es-msg-header">
11
- <span class="es-notice-title">通知消息</span>
12
- </div>
13
- <div class="es-msg-lists-box">
14
- <div class="es-msg-lists">
15
- <el-scrollbar class="es-scrollbar">
16
- <el-card
17
- v-for="(item, index) in data"
18
- :key="item.id"
19
- class="es-msg-item"
20
- >
21
- <div class="es-msg-item-title">{{ item.title }}</div>
22
- <div>
23
- <span class="es-msg-item-time">{{ item.time }}</span>
24
- <span
25
- class="es-overlook"
26
- v-show="item.handlerUrl"
27
- @click="handleMessage(item, index)"
28
- >处理</span
29
- >
30
- </div>
31
- </el-card>
32
- </el-scrollbar>
33
- </div>
34
- </div>
10
+ <div class="es-simplicity-notice-header">
11
+ <span class="es-notice-title">通知消息</span>
12
+ </div>
13
+ <el-scrollbar
14
+ class="es-simplicity-notice-lists es-simplicity-message-lists"
15
+ >
35
16
  <div
36
- class="es-notice-footer"
37
- style="display:flex;justify-content: space-between;"
17
+ v-for="(item, index) in msgs"
18
+ :key="item.id"
19
+ class="es-simplicity-message-item"
38
20
  >
39
- <span @click="handleIgnoreAll">忽略全部</span
40
- ><span @click="afterEnter">我知道了</span>
21
+ <div class="es-simplicity-message-item-title">
22
+ {{ item.title }}
23
+ </div>
24
+ <div>
25
+ <span class="es-simplicity-message-item-time">
26
+ {{ item.time }}
27
+ </span>
28
+ <span
29
+ class="es-simplicity-message-handler"
30
+ v-show="item.handlerUrl"
31
+ @click="handleMessage(item, index)"
32
+ >
33
+ 处理
34
+ </span>
35
+ <span
36
+ class="es-simplicity-message-overlook"
37
+ @click="handleIgnore(item, index)"
38
+ >
39
+ 忽略
40
+ </span>
41
+ </div>
41
42
  </div>
43
+ </el-scrollbar>
44
+ <div class="es-notice-footer">
45
+ <span class="es-simplicity-message-overlook" @click="handleIgnoreAll"
46
+ >忽略全部</span
47
+ >
48
+ <span class="es-simplicity-message-handler" @click="afterEnter"
49
+ >我知道了</span
50
+ >
42
51
  </div>
43
52
  <es-dialog
44
53
  title="处理"
@@ -53,10 +62,10 @@
53
62
  </transition>
54
63
  </template>
55
64
  <script>
56
- import { ignoreAllSysMsg } from 'eoss-ui/src/config/api.js';
65
+ import { ignoreSysMsg, ignoreAllSysMsg } from 'eoss-ui/src/config/api.js';
57
66
  import util from 'eoss-ui/src/utils/util';
58
67
  export default {
59
- name: 'notice',
68
+ name: 'Notice',
60
69
  provide() {
61
70
  return {
62
71
  deleteNotice: this.handleRemove
@@ -73,12 +82,19 @@ export default {
73
82
  }
74
83
  },
75
84
  computed: {},
85
+ watch: {
86
+ data: {
87
+ immediate: true,
88
+ deep: true,
89
+ handler(val) {
90
+ this.msgs = val;
91
+ }
92
+ }
93
+ },
76
94
  data() {
77
95
  return {
78
96
  //加载数据
79
97
  loading: false,
80
- //消息页码
81
- pageNum: 1,
82
98
  //消息数据,
83
99
  msgs: [],
84
100
  //即时消息
@@ -98,19 +114,36 @@ export default {
98
114
  handleMouse(flag) {
99
115
  this.$emit('opened', flag);
100
116
  },
117
+ //忽略
118
+ handleIgnore(res, i) {
119
+ util
120
+ .ajax({
121
+ url: ignoreSysMsg,
122
+ params: {
123
+ id: res.id
124
+ }
125
+ })
126
+ .then((res) => {
127
+ if (res.rCode == 0) {
128
+ this.msgs.splice(i, 1);
129
+ } else {
130
+ let msg = res.msg || '系统错误,请联系管理员!';
131
+ this.$message.error(msg);
132
+ }
133
+ });
134
+ },
101
135
  //全部忽略
102
136
  handleIgnoreAll() {
103
137
  util
104
138
  .ajax({
105
139
  url: ignoreAllSysMsg
106
140
  })
107
- .then(res => {
108
- this.count = 0;
141
+ .then((res) => {
109
142
  this.msgs = [];
110
143
  this.$emit('ignore', { type: 'ignore', value: 'all' });
111
144
  this.$emit('opened', false);
112
145
  })
113
- .catch(err => {
146
+ .catch((err) => {
114
147
  if (err.message && err.message !== 'canceled') {
115
148
  this.$message.error(err.message);
116
149
  }
@@ -0,0 +1,53 @@
1
+ <template>
2
+ <keep-alive>
3
+ <router-view :name="appCode" />
4
+ </keep-alive>
5
+ </template>
6
+
7
+ <script>
8
+ import util from 'eoss-ui/src/utils/util';
9
+ export default {
10
+ name: 'RouterPage',
11
+ components: {},
12
+ props: {
13
+ appCode: String,
14
+ path: String,
15
+ url: String,
16
+ query: {
17
+ type: Object,
18
+ default() {
19
+ return {};
20
+ }
21
+ },
22
+ show: Boolean
23
+ },
24
+ data() {
25
+ return {
26
+ params: {}
27
+ };
28
+ },
29
+ computed: {},
30
+ watch: {
31
+ show(val) {
32
+ if (val) {
33
+ this.jump();
34
+ }
35
+ }
36
+ },
37
+ created() {},
38
+ mounted() {
39
+ this.params = util.getParams({ url: this.url });
40
+ this.jump();
41
+ },
42
+ methods: {
43
+ jump() {
44
+ this.$router.push({
45
+ path: this.path,
46
+ query: { ...this.query, ...this.params }
47
+ });
48
+ }
49
+ }
50
+ };
51
+ </script>
52
+
53
+ <style lang="scss" scoped></style>
@@ -38,7 +38,7 @@
38
38
  <script>
39
39
  import util from 'eoss-ui/src/utils/util';
40
40
  export default {
41
- name: 'message',
41
+ name: 'Message',
42
42
  props: {
43
43
  visible: Boolean,
44
44
  //主题颜色选择颜色集合
@@ -1,31 +1,47 @@
1
1
  <template>
2
- <div class="es-simplicity-menus">
3
- <div class="es-simplicity-menus-box">
4
- <div class="es-simplicity-menus-title">{{ text }}</div>
5
- <menu-list
6
- ref="menus"
7
- :data="menus"
8
- :menuIcon="menuIcon"
9
- :color="color"
10
- :backgroundColor="backgroundColor"
11
- @command="handleCommand"
12
- ></menu-list>
2
+ <el-drawer
3
+ class="es-simplicity-subMenus"
4
+ direction="ltr"
5
+ modal-class="es-simplicity-apps-modal"
6
+ size="auto"
7
+ :modal-append-to-body="false"
8
+ :close-on-press-escape="false"
9
+ :modal="false"
10
+ :with-header="false"
11
+ :wrapperClosable="false"
12
+ :visible.sync="show"
13
+ >
14
+ <div class="es-simplicity-menus">
15
+ <div class="es-simplicity-menus-box" :style="{ width: width + 'px' }">
16
+ <div class="es-simplicity-menus-title">
17
+ <span class="es-simplicity-menus-title-text" v-if="!fold">{{
18
+ title || text
19
+ }}</span>
20
+ <i
21
+ class="es-icon-shouqicaidan es-simplicity-menus-title-icon"
22
+ v-show="!fold"
23
+ @click="handleFold(true)"
24
+ ></i>
25
+ <i
26
+ class="es-icon-shouqicaidan-right es-simplicity-menus-title-icon"
27
+ v-show="fold"
28
+ @click="handleFold(false)"
29
+ ></i>
30
+ </div>
31
+ <menu-list
32
+ ref="menus"
33
+ :active="active"
34
+ :data="menus"
35
+ :menuIcon="menuIcon"
36
+ :color="color"
37
+ :backgroundColor="backgroundColor"
38
+ :fold="fold"
39
+ :width="size"
40
+ @command="handleCommand"
41
+ ></menu-list>
42
+ </div>
13
43
  </div>
14
- <div
15
- class="es-simplicity-menus-box"
16
- v-if="subMenus.length"
17
- v-for="(item, index) in subMenus"
18
- :key="item.id"
19
- >
20
- <div class="es-simplicity-menus-title">{{ item.text || item.name }}</div>
21
- <menu-list
22
- :index="index"
23
- :data="item.data"
24
- :menuIcon="menuIcon"
25
- @command="handleCommand"
26
- ></menu-list>
27
- </div>
28
- </div>
44
+ </el-drawer>
29
45
  </template>
30
46
 
31
47
  <script>
@@ -34,6 +50,8 @@ export default {
34
50
  name: 'SubMenu',
35
51
  components: { MenuList },
36
52
  props: {
53
+ title: String,
54
+ active: String,
37
55
  color: {
38
56
  type: [String, Array],
39
57
  default: '#fff'
@@ -51,6 +69,11 @@ export default {
51
69
  ];
52
70
  }
53
71
  },
72
+ size: {
73
+ type: Number,
74
+ default: 220
75
+ },
76
+ visible: Boolean,
54
77
  text: String,
55
78
  menuIcon: String,
56
79
  children: {
@@ -68,63 +91,40 @@ export default {
68
91
  },
69
92
  data() {
70
93
  return {
71
- active: '',
94
+ fold: false,
95
+ width: this.size,
72
96
  subMenus: []
73
97
  };
74
98
  },
75
99
  computed: {
76
100
  menus() {
77
101
  return [...this.children, ...this.fourthTabs];
102
+ },
103
+ show: {
104
+ get() {
105
+ return this.visible;
106
+ },
107
+ set(val) {
108
+ this.$emit('update:visible', val);
109
+ return val;
110
+ }
78
111
  }
79
112
  },
80
113
  watch: {},
81
114
  created() {},
82
115
  mounted() {},
83
116
  methods: {
84
- handleCommand(res, num) {
85
- if (res.url) {
86
- if (res.urlopenmode == 1) {
87
- util.win.open(res.url);
88
- } else if (res.urlopenmode == 2) {
89
- util.win.location.href = res.url;
90
- } else {
91
- this.$emit('command', res);
92
- }
93
- }
94
- let data = [...(res.children || []), ...(res.fourthTabs || [])];
95
- if (data.length) {
96
- if (num === undefined) {
97
- this.subMenus = [{ ...res, data: data }];
98
- } else {
99
- let item = this.subMenus[num];
100
- if (item) {
101
- if (item.id !== res.id) {
102
- this.subMenus.splice(
103
- parseInt(num, 10),
104
- this.subMenus.length - 1,
105
- {
106
- ...res,
107
- data: data
108
- }
109
- );
110
- }
111
- } else {
112
- this.subMenus.push({
113
- ...res,
114
- data: data
115
- });
116
- }
117
- }
118
- this.$emit('command', num === undefined ? 2 : 2 + parseInt(num, 10));
117
+ handleFold(res) {
118
+ this.fold = res;
119
+ if (res) {
120
+ this.width = 48;
119
121
  } else {
120
- if (num === undefined) {
121
- this.$emit('command', 1);
122
- this.subMenus = [];
123
- } else {
124
- this.subMenus.splice(parseInt(num, 10));
125
- this.$emit('command', 1 + parseInt(num, 10));
126
- }
122
+ this.width = this.size;
127
123
  }
124
+ this.$emit('update:fold', res);
125
+ },
126
+ handleCommand(res) {
127
+ this.$emit('command', res);
128
128
  },
129
129
  clearSubmenu() {
130
130
  this.$refs.menus.clearActive();