n20-common-lib 1.2.5 → 1.2.8

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.
@@ -8,91 +8,60 @@
8
8
  active-text-color="#ffffff"
9
9
  >
10
10
  <template v-for="omenus in menus">
11
- <template v-for="item in omenus.menu">
11
+ <template v-for="itemA in omenus.menu">
12
12
  <!-- 一级菜单 -->
13
- <el-menu-item
14
- v-if="!item.children"
15
- :key="item.title"
16
- :index="item.uuid"
17
- @click="linkFn(item)"
18
- >
19
- <i
20
- v-if="item.iconUrl"
21
- class="el-icon- icon-url"
22
- :style="{ backgroundImage: `url(${item.iconUrl})` }"
23
- ></i>
24
- <i v-else :class="item.iconClass"></i>
25
- <span v-if="!item.href" slot="title">{{ item | titleF }}</span>
26
- <a
27
- v-else
28
- slot="title"
29
- :href="item.href"
30
- target="_blank"
31
- :rel="/^\//.test(item.href) ? 'opener' : undefined"
32
- >{{ item | titleF }}</a
33
- >
34
- </el-menu-item>
13
+ <MenuItem
14
+ v-if="!itemA.children"
15
+ :key="itemA.title"
16
+ :item="itemA"
17
+ @click="linkFn"
18
+ />
35
19
  <el-submenu
36
20
  v-else
37
- :key="item.title"
38
- :index="item.title"
21
+ :key="itemA.title"
22
+ :index="itemA.title"
39
23
  popper-class="nav-menu-pop"
40
24
  >
41
- <template slot="title">
42
- <i
43
- v-if="item.iconUrl"
44
- class="el-icon- icon-url"
45
- :style="{ backgroundImage: `url(${item.iconUrl})` }"
46
- ></i>
47
- <i v-else :class="item.iconClass"></i>
48
- <span>{{ item | titleF }}</span>
49
- </template>
50
- <template v-for="itemc in item.children">
25
+ <SubmenuTitle slot="title" :item="itemA" />
26
+ <template v-for="itemB in itemA.children">
51
27
  <!-- 二级菜单 -->
52
- <el-menu-item
53
- v-if="!itemc.children"
54
- :key="itemc.title"
55
- :index="itemc.uuid"
56
- @click="linkFn(itemc)"
57
- >
58
- <i
59
- v-if="itemc.iconUrl"
60
- class="el-icon- icon-url"
61
- :style="{ backgroundImage: `url(${itemc.iconUrl})` }"
62
- ></i>
63
- <i v-else :class="itemc.iconClass"></i>
64
- <span slot="title">{{ itemc | titleF }}</span>
65
- </el-menu-item>
28
+ <MenuItem
29
+ v-if="!itemB.children"
30
+ :key="itemB.title"
31
+ :item="itemB"
32
+ @click="linkFn"
33
+ />
66
34
  <el-submenu
67
35
  v-else
68
- :key="itemc.title"
69
- :index="itemc.title"
36
+ :key="itemB.title"
37
+ :index="itemB.title"
70
38
  popper-class="nav-menu-pop"
71
39
  >
72
- <template slot="title">
73
- <i
74
- v-if="itemc.iconUrl"
75
- class="el-icon- icon-url"
76
- :style="{ backgroundImage: `url(${itemc.iconUrl})` }"
77
- ></i>
78
- <i v-else :class="itemc.iconClass"></i>
79
- <span>{{ itemc | titleF }}</span>
80
- </template>
81
- <template v-for="itemcc in itemc.children">
40
+ <SubmenuTitle slot="title" :item="itemB" />
41
+ <template v-for="itemC in itemB.children">
82
42
  <!-- 三级菜单 -->
83
- <el-menu-item
84
- :key="itemcc.title"
85
- :index="itemcc.uuid"
86
- @click="linkFn(itemcc)"
43
+ <MenuItem
44
+ v-if="!itemC.children"
45
+ :key="itemC.title"
46
+ :item="itemC"
47
+ @click="linkFn"
48
+ />
49
+ <el-submenu
50
+ v-else
51
+ :key="itemC.title"
52
+ :index="itemC.title"
53
+ popper-class="nav-menu-pop"
87
54
  >
88
- <i
89
- v-if="itemcc.iconUrl"
90
- class="el-icon- icon-url"
91
- :style="{ backgroundImage: `url(${itemcc.iconUrl})` }"
92
- ></i>
93
- <i v-else :class="itemcc.iconClass"></i>
94
- <span slot="title">{{ itemcc | titleF }}</span>
95
- </el-menu-item>
55
+ <SubmenuTitle slot="title" :item="itemC" />
56
+ <template v-for="itemD in itemC.children">
57
+ <!-- 四级菜单 -->
58
+ <MenuItem
59
+ :key="itemD.title"
60
+ :item="itemD"
61
+ @click="linkFn"
62
+ />
63
+ </template>
64
+ </el-submenu>
96
65
  </template>
97
66
  </el-submenu>
98
67
  </template>
@@ -101,17 +70,23 @@
101
70
  </template>
102
71
  <span class="flex-item"></span>
103
72
  <div class="open-collapsed-btn">
104
- <span :class="collapse ? 'n20-icon-caidanshouqi f-s-l rotate-icon':'n20-icon-caidanshouqi f-s-l' " @click="setCollapse"></span>
73
+ <span
74
+ :class="
75
+ collapse
76
+ ? 'n20-icon-caidanshouqi f-s-l rotate-icon'
77
+ : 'n20-icon-caidanshouqi f-s-l'
78
+ "
79
+ @click="setCollapse"
80
+ ></span>
105
81
  </div>
106
82
  </el-menu>
107
83
  </template>
108
84
 
109
85
  <script>
110
- import { labelF } from '../utils'
86
+ import MenuItem from './menuItem.vue'
87
+ import SubmenuTitle from './submenuTitle.vue'
111
88
  export default {
112
- filters: {
113
- titleF: labelF
114
- },
89
+ components: { MenuItem, SubmenuTitle },
115
90
  props: {
116
91
  menus: {
117
92
  type: Array,
@@ -0,0 +1,34 @@
1
+ <template>
2
+ <el-menu-item :index="item.uuid" @click="$emit('click', item)">
3
+ <i
4
+ v-if="item.iconUrl"
5
+ class="el-icon- icon-url"
6
+ :style="{ backgroundImage: `url(${item.iconUrl})` }"
7
+ ></i>
8
+ <i v-else :class="item.iconClass"></i>
9
+ <span v-if="!item.href" slot="title">{{ item | titleF }}</span>
10
+ <a
11
+ v-else
12
+ slot="title"
13
+ :href="item.href"
14
+ target="_blank"
15
+ :rel="/^\//.test(item.href) ? 'opener' : undefined"
16
+ >{{ item | titleF }}</a
17
+ >
18
+ </el-menu-item>
19
+ </template>
20
+
21
+ <script>
22
+ import { labelF } from '../utils'
23
+ export default {
24
+ filters: {
25
+ titleF: labelF
26
+ },
27
+ props: {
28
+ item: {
29
+ type: Object,
30
+ default: () => ({})
31
+ }
32
+ }
33
+ }
34
+ </script>
@@ -0,0 +1,26 @@
1
+ <template>
2
+ <component :is="'slot'">
3
+ <i
4
+ v-if="item.iconUrl"
5
+ class="el-icon- icon-url"
6
+ :style="{ backgroundImage: `url(${item.iconUrl})` }"
7
+ ></i>
8
+ <i v-else :class="item.iconClass"></i>
9
+ <span>{{ item | titleF }}</span>
10
+ </component>
11
+ </template>
12
+
13
+ <script>
14
+ import { labelF } from '../utils'
15
+ export default {
16
+ filters: {
17
+ titleF: labelF
18
+ },
19
+ props: {
20
+ item: {
21
+ type: Object,
22
+ default: () => ({})
23
+ }
24
+ }
25
+ }
26
+ </script>
@@ -89,6 +89,23 @@
89
89
  <el-dropdown-item command="myDeal" divided>{{
90
90
  '我的交易' | $l(i18n)
91
91
  }}</el-dropdown-item>
92
+ <el-dropdown-item
93
+ v-if="customOpt.agency && customOpt.agency.show"
94
+ command="myAgency"
95
+ divided
96
+ >
97
+ <div class="flex-box flex-v">
98
+ <span>{{ '工作代理' | $l(i18n) }}</span>
99
+ <el-badge
100
+ v-if="customOpt.agency.underway"
101
+ class="m-l-auto font-size-small color-primary"
102
+ is-dot
103
+ type="primary"
104
+ style="line-height: initial"
105
+ >进行中</el-badge
106
+ >
107
+ </div>
108
+ </el-dropdown-item>
92
109
  <el-divider class="m-t-s m-b-s" />
93
110
  <div class="user-log-time p-l p-r p-b-s">
94
111
  <i
@@ -171,6 +188,9 @@ const i18n = {
171
188
  我的交易: {
172
189
  en: 'My deal'
173
190
  },
191
+ 工作代理: {
192
+ en: 'My agency'
193
+ },
174
194
  登录时长: {
175
195
  en: 'Login duration'
176
196
  },
@@ -209,6 +229,12 @@ export default {
209
229
  changePwd,
210
230
  noticePop
211
231
  },
232
+ inject: {
233
+ customOpt: {
234
+ type: Object,
235
+ default: () => ({})
236
+ }
237
+ },
212
238
  data() {
213
239
  return {
214
240
  show: false,
@@ -271,18 +297,15 @@ export default {
271
297
  case 'dowApp':
272
298
  this.dowApp()
273
299
  break
274
- case 'setStyle':
275
- this.setStyle()
276
- break
277
300
  case 'changePassword':
278
301
  this.changePassword()
279
302
  break
280
- case 'myDeal':
281
- this.myDeal()
282
- break
283
303
  case 'logOut':
284
304
  this.logOut()
285
305
  break
306
+ default:
307
+ this.$emit('custom-event', { type: c })
308
+ break
286
309
  }
287
310
  },
288
311
  setLang() {
@@ -302,18 +325,10 @@ export default {
302
325
  aDom = undefined
303
326
  })
304
327
  },
305
- setStyle() {
306
- // alert('主题设置')
307
- this.$emit('custom-event', { type: 'setStyle' })
308
- },
309
328
  changePassword() {
310
329
  // alert('修改密码')
311
330
  this.cpwdV = true
312
331
  },
313
- myDeal() {
314
- // alert('我的交易')
315
- this.$emit('custom-event', { type: 'myDeal' })
316
- },
317
332
  logOut() {
318
333
  // alert('退出登录')
319
334
  this.$confirm(
@@ -21,6 +21,7 @@
21
21
  v-else
22
22
  :key="'cl-table-' + i"
23
23
  :formatter="item.formatter | colfF"
24
+ :filters="item.filters | colftF(filtersMap)"
24
25
  v-bind="item"
25
26
  />
26
27
  </template>
@@ -104,7 +105,7 @@ export default {
104
105
  let mc = colf.match(/{(\S+)\|rate}/)
105
106
  let key = mc && mc[1]
106
107
 
107
- return (row) => numerify(row[key], '0.00[00]')
108
+ return (row) => numerify(row[key], '0.000000')
108
109
  } else {
109
110
  let mc = colf.match(/{[^}]+}/g) || []
110
111
  let mcv = mc.map((m) => m.replace(/{|}/g, ''))
@@ -117,6 +118,10 @@ export default {
117
118
  return str
118
119
  }
119
120
  }
121
+ },
122
+ colftF(colft, fMap) {
123
+ if (typeof colft !== 'string') return colft
124
+ return fMap[colft]
120
125
  }
121
126
  },
122
127
  props: {
@@ -133,6 +138,10 @@ export default {
133
138
  require: true,
134
139
  default: () => []
135
140
  },
141
+ filtersMap: {
142
+ type: Object,
143
+ default: () => ({})
144
+ },
136
145
  pageObj: {
137
146
  type: Object,
138
147
  default: undefined
@@ -1,5 +1,7 @@
1
1
  import Tooltip from './tooltip.vue'
2
2
 
3
+ let timer = undefined
4
+
3
5
  function tipShow(el, tip) {
4
6
  if (el.$tooltipTitle) {
5
7
  if (!el.$tooltipTitleOverflow || el.clientWidth < el.scrollWidth) {
@@ -8,6 +10,12 @@ function tipShow(el, tip) {
8
10
  tip.$refs['title-pop'].doDestroy()
9
11
  tip.$nextTick(() => {
10
12
  tip.visible = true
13
+ timer = setInterval(() => {
14
+ if (tip.visible && !el.scrollWidth) {
15
+ tipHide(el, tip)
16
+ clearInterval(timer)
17
+ }
18
+ }, 1000)
11
19
  })
12
20
  }
13
21
  }
package/src/index.js CHANGED
@@ -44,6 +44,7 @@ import Anchor from './components/Anchor/index.vue'
44
44
  import AnchorItem from './components/Anchor/AnchorItem.vue'
45
45
  import FlowStep from './components/FlowStep/index.vue'
46
46
  import CascaderArea from './components/CascaderArea/index.vue'
47
+ import FileExportAsync from './components/FileExportAsync/index.vue'
47
48
  /* old */
48
49
  import TableO from './components/Table/indexO.vue'
49
50
  import FiltersO from './components/Filters/indexO.vue'
@@ -59,6 +60,8 @@ import VClickOutside from './directives/VClickOutside/index.js'
59
60
  import VHas from './directives/VHas/index.js'
60
61
 
61
62
  /** 注入方法 */
63
+ import dayjs from 'dayjs'
64
+ import numerify from 'numerify'
62
65
  import axios from './utils/axios.js'
63
66
  import auth from './utils/auth.js'
64
67
  import { msgPor, msgboxPor } from './utils/msgboxPor.js'
@@ -121,6 +124,7 @@ const components = [
121
124
  AnchorItem,
122
125
  FlowStep,
123
126
  CascaderArea,
127
+ FileExportAsync,
124
128
  /* old */
125
129
  TableO,
126
130
  FiltersO,
@@ -211,8 +215,11 @@ export {
211
215
  AnchorItem,
212
216
  FlowStep,
213
217
  CascaderArea,
218
+ FileExportAsync,
214
219
  repairEl,
215
220
  linkPush,
216
221
  linkGo,
217
- isHas
222
+ isHas,
223
+ dayjs,
224
+ numerify
218
225
  }
@@ -79,10 +79,10 @@
79
79
  { required: true, message: '请输入名称', trigger: 'blur' }
80
80
  ]"
81
81
  >
82
- <el-input v-model="activeMenu.label" class="w-224" />
82
+ <el-input v-model="activeMenu.label" class="input-w" />
83
83
  </el-form-item>
84
84
  <el-form-item label="属性:">
85
- <el-select v-model="activeMenu.resType" class="w-224">
85
+ <el-select v-model="activeMenu.resType" class="input-w">
86
86
  <el-option value="1" label="左边栏菜单" />
87
87
  <el-option value="2" label="隐藏菜单" />
88
88
  <el-option value="3" label="权限按钮" />
@@ -99,7 +99,7 @@
99
99
  >
100
100
  <el-input
101
101
  v-model="activeMenu.appNo"
102
- class="w-224"
102
+ class="input-w"
103
103
  @change="(val) => setAppNo(val, activeMenu)"
104
104
  />
105
105
  </el-form-item>
@@ -112,7 +112,7 @@
112
112
  { required: true, message: '请输入访问路径', trigger: 'blur' }
113
113
  ]"
114
114
  >
115
- <el-input v-model="activeMenu.pageurl" class="w-224" />
115
+ <el-input v-model="activeMenu.pageurl" class="input-w" />
116
116
  </el-form-item>
117
117
  <el-form-item label="图标:">
118
118
  <div class="flex-box">
@@ -151,7 +151,7 @@
151
151
  </el-form-item>
152
152
  </template>
153
153
  <el-form-item v-if="activeMenu.treeno" label="权限编码:">
154
- <div class="w-224 flex-box">
154
+ <div class="input-w flex-box">
155
155
  <el-input class="flex-item" :value="activeMenu.treeno" readonly />
156
156
  </div>
157
157
  </el-form-item>
@@ -4,7 +4,7 @@ $--border-radius-base: 4px !default;
4
4
  $--input-width: 224px !default;
5
5
 
6
6
  // 项目中可以直接使用
7
- // .w-224 {width: $--input-width;}
7
+ // .input-w {width: $--input-width;}
8
8
  // .button-4em{min-width: 72px;}
9
9
  /* 格式化样式
10
10
  ---------------- */