n20-common-lib 2.2.7 → 2.2.9

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n20-common-lib",
3
- "version": "2.2.7",
3
+ "version": "2.2.9",
4
4
  "private": false,
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -1,4 +1,4 @@
1
- .elx-table {
1
+ .plTableBox .elx-table {
2
2
  .elx-body--column,
3
3
  .elx-footer--column,
4
4
  .elx-header--column {
@@ -41,6 +41,12 @@
41
41
  top: 3px;
42
42
  }
43
43
  }
44
+ .elx-checkbox--indeterminate-icon:after {
45
+ position: absolute;
46
+ top: 50%;
47
+ left: 50%;
48
+ width: 7px;
49
+ }
44
50
  }
45
51
 
46
52
  .elx-cell--sort {
@@ -89,7 +95,13 @@
89
95
  padding-left: 0;
90
96
  }
91
97
  .elx-table--filter-wrapper {
92
- margin-top: 16px;
98
+ margin-top: 6px;
99
+ min-width: auto;
100
+ border: 1px solid #ebeef5;
101
+ border-radius: 2px;
102
+ background-color: #fff;
103
+ box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.15);
104
+ box-sizing: border-box;
93
105
  }
94
106
  .filter--active {
95
107
  .elx-cell--title {
@@ -146,6 +146,7 @@ import qrCode from './qrcode.vue'
146
146
  import { siteTree2menus, siteTree2RelaNos } from './utils'
147
147
  import CaMap from '../../plugins/Sign/CaMap.js'
148
148
  import importG from '../../utils/importGlobal.js'
149
+ import { setItem } from '../../utils/storageEdit'
149
150
 
150
151
  function encode(pwd = '', key = 0) {
151
152
  if (pwd === '') return ''
@@ -596,15 +597,25 @@ export default {
596
597
  sessionStorage.setItem('menuTree', JSON.stringify(layoutMenus))
597
598
 
598
599
  let relaNos = siteTree2RelaNos(data)
599
- sessionStorage.setItem('relaNos', JSON.stringify(relaNos))
600
+ // sessionStorage.setItem('relaNos', JSON.stringify(relaNos))
601
+ setItem('relaNos', relaNos)
602
+
603
+ let relaNosG = []
604
+ for (let i = 0; i < relaNos.length; i++) {
605
+ let item = relaNos[i]
606
+ relaNosG.push(...item.relaNos)
607
+ }
608
+ setItem('relaNosGlobal', relaNosG)
600
609
 
601
610
  // XXX: 兼容旧版resources
602
- sessionStorage.setItem('resources', JSON.stringify(data))
611
+ // sessionStorage.setItem('resources', JSON.stringify(data))
612
+ setItem('resources', data)
603
613
  },
604
614
  // 新增不同单位对应不同角色,具有不同权限
605
615
  getCltRelaNos() {
606
616
  if (this.asyncRelaNos) {
607
- sessionStorage.setItem('cltrelaNos', '{}')
617
+ // sessionStorage.setItem('cltrelaNos', '{}')
618
+ setItem('cltrelaNos', {})
608
619
  return Promise.resolve()
609
620
  }
610
621
 
@@ -621,7 +632,8 @@ export default {
621
632
  cltrelaMap.forEach((item) => {
622
633
  cltrelaNos[item.cltNo] = item.relaNos
623
634
  })
624
- sessionStorage.setItem('cltrelaNos', JSON.stringify(cltrelaNos))
635
+ // sessionStorage.setItem('cltrelaNos', JSON.stringify(cltrelaNos))
636
+ setItem('cltrelaNos', cltrelaNos)
625
637
  })
626
638
  .finally(resolve)
627
639
  })
@@ -75,7 +75,7 @@ export function colf_BD_F(colf, map) {
75
75
  return ({ row }) => tplFn(row, sc, mck, map)
76
76
  }
77
77
 
78
- export function colft_BD_F(colft, fMap) {
78
+ export function colft_BD_F(colft, fMap, key) {
79
79
  let list = undefined
80
80
  if (typeof colft !== 'string') {
81
81
  list = colft
@@ -83,6 +83,10 @@ export function colft_BD_F(colft, fMap) {
83
83
  list = fMap[colft]
84
84
  }
85
85
  if (Array.isArray(list)) {
86
- return list.map((item) => ({ ...item, label: item.text }))
86
+ return list.map((item) => ({
87
+ label: item.text,
88
+ data: { count: item.count },
89
+ ...item
90
+ }))
87
91
  }
88
92
  }
@@ -26,24 +26,28 @@
26
26
  </el-table>
27
27
  <ux-table
28
28
  v-else
29
+ ref="ux-table"
29
30
  :key="colsKey"
30
31
  :header-cell-style="{ 'text-align': 'center' }"
31
32
  :data="data"
32
33
  :height="height"
33
34
  v-bind="$attrs"
34
- v-on="$listeners"
35
+ v-on="{ ...$listeners, 'filter-change': bigFilter, 'expand-change': bigExpand }"
35
36
  >
36
37
  <template v-for="(item, i) in columns">
37
- <slot v-if="item.slotName" :name="item.slotName" :column="item"></slot>
38
+ <slot v-if="item.slotName" :name="item.slotName" :column="item" :big-data="bigData"></slot>
38
39
  <ux-table-column
39
40
  v-else-if="item.render"
40
41
  :key="'cl-table-' + i"
42
+ :filters="item.filters | colft_BD_F(filtersMap)"
43
+ :class-name="item | colKey"
41
44
  :field="item.prop"
42
45
  :title="item.label"
43
46
  :type="item.type | typeF"
47
+ :show-overflow="item | overflowF"
44
48
  v-bind="item"
45
49
  >
46
- <columnRender slot-scope="{ row, $index }" :c-render="item.render" :row="row" :index="$index" />
50
+ <columnRender slot-scope="{ row, $rowIndex }" :c-render="item.render" :row="row" :index="$rowIndex" />
47
51
  </ux-table-column>
48
52
 
49
53
  <ux-table-column
@@ -51,9 +55,11 @@
51
55
  :key="'cl-table-' + i"
52
56
  :formatter="item.formatter | colf_BD_F(item.formatterMap)"
53
57
  :filters="item.filters | colft_BD_F(filtersMap)"
58
+ :class-name="item | colKey"
54
59
  :field="item.prop"
55
60
  :title="item.label"
56
61
  :type="item.type | typeF"
62
+ :show-overflow="item | overflowF"
57
63
  v-bind="item"
58
64
  />
59
65
  </template>
@@ -92,8 +98,15 @@ export default {
92
98
  typeF(type) {
93
99
  return type && type === 'selection' ? 'checkbox' : type
94
100
  },
101
+ overflowF(item) {
102
+ return item.showOverflowTooltip || item['show-overflow-tooltip'] ? 'tooltip' : 'ellipsis'
103
+ },
95
104
  colf_BD_F,
96
- colft_BD_F
105
+ colft_BD_F,
106
+ colKey(item) {
107
+ let key = item.columnKey || item['column-key']
108
+ return key ? 'key@' + key : ''
109
+ }
97
110
  },
98
111
  props: {
99
112
  bigData: {
@@ -135,24 +148,71 @@ export default {
135
148
  colsKey: 0
136
149
  }
137
150
  },
151
+ provide() {
152
+ let bigData = this.bigData
153
+ return {
154
+ bigData
155
+ }
156
+ },
138
157
  watch: {
139
158
  columns() {
140
159
  this.colsKey = this.colsKey + 1
141
160
  }
142
161
  },
143
162
  mounted() {
144
- let inTable = this.$refs['el-table']
145
- if (inTable) {
146
- this.$refs['table'] = inTable
147
- this.clearSelection = inTable.clearSelection
148
- this.toggleRowSelection = inTable.toggleRowSelection
149
- this.toggleAllSelection = inTable.toggleAllSelection
150
- this.toggleRowExpansion = inTable.toggleRowExpansion
151
- this.setCurrentRow = inTable.setCurrentRow
152
- this.clearSort = inTable.clearSort
153
- this.clearFilter = inTable.clearFilter
154
- this.doLayout = inTable.doLayout
155
- this.sort = inTable.sort
163
+ if (!this.bigData) {
164
+ let inTable = this.$refs['el-table']
165
+ if (inTable) {
166
+ this.$refs['table'] = inTable
167
+ this.clearSelection = inTable.clearSelection
168
+ this.toggleRowSelection = inTable.toggleRowSelection
169
+ this.toggleAllSelection = inTable.toggleAllSelection
170
+ this.toggleRowExpansion = inTable.toggleRowExpansion
171
+ this.setCurrentRow = inTable.setCurrentRow
172
+ this.clearSort = inTable.clearSort
173
+ this.clearFilter = inTable.clearFilter
174
+ this.doLayout = inTable.doLayout
175
+ this.sort = inTable.sort
176
+ }
177
+ } else {
178
+ let inTable = this.$refs['ux-table']
179
+ if (inTable) {
180
+ this.$refs['table'] = inTable
181
+ this.clearSelection = inTable.clearSelection
182
+ this.toggleRowSelection = function (row, selected) {
183
+ inTable.toggleRowSelection([{ row, selected }])
184
+ }
185
+ this.toggleAllSelection = inTable.toggleAllSelection
186
+ this.toggleRowExpansion = inTable.toggleRowExpansion
187
+ this.setCurrentRow = inTable.setCurrentRow
188
+ this.clearSort = inTable.clearSort
189
+ this.clearFilter = inTable.clearFilter
190
+ //
191
+ this.doLayout = inTable.loadData
192
+ this.sort = inTable.sort
193
+ }
194
+ }
195
+ },
196
+ methods: {
197
+ bigFilter(arg) {
198
+ let filters = arg.filters || []
199
+ let elFilters = {}
200
+ filters.forEach((item) => {
201
+ let key = item.column.className
202
+ if (key && typeof key === 'string') {
203
+ let _key = key.split(',').find((s) => s.includes('key@'))
204
+
205
+ if (_key) _key = _key.replace('key@', '')
206
+
207
+ if (_key) key = _key
208
+ }
209
+
210
+ elFilters[key || item.property] = item.column.filterMultiple ? item.values : item.values[0]
211
+ })
212
+ this.$emit('filter-change', elFilters, arg)
213
+ },
214
+ bigExpand(arg) {
215
+ this.$emit('expand-change', arg.row, arg.expanded, arg)
156
216
  }
157
217
  }
158
218
  }
@@ -1,17 +1,21 @@
1
1
  <template>
2
- <el-table-column v-bind="$attrs">
2
+ <el-table-column v-if="!bigData" v-bind="$attrs">
3
3
  <OperateBtns slot-scope="{ row, $index }" :btn-list="btnList" :row="row" @command="(c) => $emit(c, row, $index)" />
4
4
  </el-table-column>
5
+ <ux-table-column v-else :field="$attrs.prop" :title="$attrs.label" v-bind="$attrs">
6
+ <OperateBtns slot-scope="{ row, $index }" :btn-list="btnList" :row="row" @command="(c) => $emit(c, row, $index)" />
7
+ </ux-table-column>
5
8
  </template>
6
9
 
7
10
  <script>
8
- import { $lc } from '../../utils/i18n/index'
11
+ // import { $lc } from '../../utils/i18n/index'
9
12
  import OperateBtns from './OperateBtns.vue'
10
13
  export default {
11
14
  name: 'TableOperateColumn',
12
15
  components: {
13
16
  OperateBtns
14
17
  },
18
+ inject: ['bigData'],
15
19
  props: {
16
20
  btnList: {
17
21
  type: Array,
@@ -17,24 +17,42 @@
17
17
  suffix-icon="el-icon-search"
18
18
  />
19
19
  <div v-if="filterStore.multiple">
20
- <el-checkbox v-model="allCheck" :label="true" :indeterminate="indeterminate">全部</el-checkbox>
20
+ <div>
21
+ <el-checkbox
22
+ v-model="filterStore.isAllSelected"
23
+ :label="true"
24
+ :indeterminate="indeterminate"
25
+ @change="allCheckFn"
26
+ >{{ '全部' | $lc }}{{ filters | alltextF }}</el-checkbox
27
+ >
28
+ </div>
21
29
  <div class="input-w p-b-s" style="max-height: 226px; overflow: auto">
22
30
  <template v-for="filter in filters">
23
31
  <el-checkbox
24
32
  v-if="filter.label.includes(searchVal)"
25
33
  :key="filter.value"
26
- v-model="filter.checked"
34
+ v-model="filter._checked"
27
35
  class="m-t-s m-r-0"
28
36
  style="display: block"
37
+ @change="(val) => itemCheckFn(val, filter)"
29
38
  >
30
39
  <span class="align-bottom">{{ filter.label }}</span>
40
+ <span>{{ filter | countF }}</span>
31
41
  </el-checkbox>
32
42
  </template>
33
43
  </div>
44
+ <div class="flex-box flex-c m-t-s">
45
+ <el-button type="primary" size="mini" @click="handleConfirm">
46
+ {{ '确认' | $lc }}
47
+ </el-button>
48
+ <el-button plain size="mini" @click="handleReset">{{ '清空' | $lc }}</el-button>
49
+ </div>
34
50
  </div>
35
51
  <div v-else>
36
52
  <ul class="el-table-filter__list">
37
- <li class="el-table-filter__list-item text-l" :class="{ 'is-active': !allCheck }">全部</li>
53
+ <li class="el-table-filter__list-item text-l" @click="allCheckFn">
54
+ {{ '全部' | $lc }}{{ filters | alltextF }}
55
+ </li>
38
56
  </ul>
39
57
  <ul class="el-table-filter__list" style="max-height: 226px; overflow: auto">
40
58
  <template v-for="filter in filters">
@@ -42,12 +60,11 @@
42
60
  v-if="filter.label.includes(searchVal)"
43
61
  :key="filter.value"
44
62
  class="el-table-filter__list-item text-l"
45
- :class="{ 'is-active': filter.checked }"
46
- @click="filter.checked = !filter.checked"
63
+ :class="{ 'is-active': filter._checked }"
64
+ @click="itemCheckFn(!filter._checked, filter)"
47
65
  >
48
- <span class="text-ellipsis align-bottom" style="display: inline-block; max-width: 12em">{{
49
- filter.label
50
- }}</span>
66
+ <span class="text-ellipsis align-bottom">{{ filter.label }}</span>
67
+ <span>{{ filter | countF }}</span>
51
68
  </li>
52
69
  </template>
53
70
  </ul>
@@ -57,16 +74,40 @@
57
74
  </template>
58
75
 
59
76
  <script>
60
- import { $lc } from '../../utils/i18n/index'
77
+ // import { $lc } from '../../utils/i18n/index'
78
+ function getCount(item) {
79
+ return item.count || (item.data ? item.data.count : undefined)
80
+ }
81
+
61
82
  export default {
62
83
  name: 'ElxTableFilter',
84
+ filters: {
85
+ countF(item) {
86
+ let N = getCount(item)
87
+ if (N !== undefined) {
88
+ return ' (' + N + ')'
89
+ } else {
90
+ return ''
91
+ }
92
+ },
93
+ alltextF(list = []) {
94
+ if (list.some((c) => getCount(c) !== undefined)) {
95
+ let total = 0
96
+ list.forEach((c) => {
97
+ total = total + (Number(c) || 0)
98
+ })
99
+ return ' (' + total + ')'
100
+ } else {
101
+ return ''
102
+ }
103
+ }
104
+ },
63
105
  props: {
64
106
  filterStore: { type: Object, default: () => ({}) }
65
107
  },
66
108
  data() {
67
109
  return {
68
- searchVal: '',
69
- filteredValue: []
110
+ searchVal: ''
70
111
  }
71
112
  },
72
113
  computed: {
@@ -75,31 +116,68 @@ export default {
75
116
  },
76
117
  filters() {
77
118
  return this.filterStore.options
78
- // _checked
79
119
  },
80
120
  multiple() {
81
121
  return this.filterStore.multiple
82
122
  },
83
123
  indeterminate() {
84
124
  return this.filterStore.isIndeterminate
85
- },
86
- allCheck: {
87
- get() {
88
- return this.filterStore.isAllSelected
89
- },
90
- set(val) {
91
- this.filterStore.isAllSelected = val
92
- }
93
125
  }
94
126
  },
95
127
  watch: {
96
128
  'filterStore.visible': {
97
- handler() {
98
- console.log(this.filterStore, 1212)
129
+ handler(val) {
130
+ if (val) this.searchVal = ''
99
131
  }
100
132
  }
101
133
  },
102
134
  mounted() {},
103
- methods: {}
135
+ methods: {
136
+ allCheckFn(t) {
137
+ if (this.filterStore.multiple) {
138
+ this.filterStore.options.forEach((e) => {
139
+ this.$set(e, '_checked', t)
140
+ this.$set(e, 'checked', t)
141
+ })
142
+ this.$set(this.filterStore, 'isAllSelected', t)
143
+ this.$set(this.filterStore, 'isIndeterminate', false)
144
+ } else {
145
+ this.$parent.resetFilterEvent()
146
+ }
147
+ },
148
+ itemCheckFn(t, i) {
149
+ if (this.filterStore.multiple) {
150
+ this.$set(i, '_checked', t)
151
+
152
+ this.$parent.checkFilterOptions()
153
+ } else {
154
+ this.filterStore.options.forEach((e) => {
155
+ this.$set(e, '_checked', false)
156
+ this.$set(e, '_checked', false)
157
+ })
158
+
159
+ this.$set(i, '_checked', t)
160
+ this.$set(i, 'checked', t)
161
+
162
+ this.$parent.checkFilterOptions()
163
+ this.$parent.confirmFilterEvent()
164
+ }
165
+ },
166
+ handleConfirm() {
167
+ let someC = false
168
+ this.filterStore.options.forEach((e) => {
169
+ e.checked = e._checked
170
+ e._checked && (someC = true)
171
+ })
172
+ if (someC) {
173
+ this.$parent.confirmFilterEvent()
174
+ } else {
175
+ this.$parent.resetFilterEvent()
176
+ }
177
+ },
178
+ handleReset() {
179
+ this.$parent.resetFilterEvent()
180
+ }
181
+ }
104
182
  }
105
183
  </script>
@@ -1,5 +1,5 @@
1
+ import 'umy-table/lib/theme-chalk/elx-table.css'
1
2
  import { UTable, UTableColumn, UxGrid, UxTableColumn } from 'umy-table'
2
-
3
3
  import ElxTableFilter from './ElxTableFilter.vue'
4
4
 
5
5
  function install(Vue) {
@@ -9,6 +9,7 @@ function install(Vue) {
9
9
 
10
10
  Vue.component('UxTable', UxGrid)
11
11
 
12
+ setPropsDefault(UxTableColumn, { headerAlign: { default: 'center' } })
12
13
  const _created = UxTableColumn.created
13
14
  UxTableColumn.created = function () {
14
15
  _created.call(this, ...arguments)
@@ -1,4 +1,5 @@
1
1
  import { getRela, getCltRela } from '../../utils/relaNo.js'
2
+ import { getItem } from '../../utils/storageEdit'
2
3
 
3
4
  export function has(vals, clt) {
4
5
  let relaNos = []
@@ -19,7 +20,7 @@ export function hasG(vals, clt) {
19
20
  if (clt) {
20
21
  relaNos = getCltRela(clt)
21
22
  } else {
22
- relaNos = getRela().relaNosGlobal
23
+ relaNos = getItem('relaNosGlobal')
23
24
  }
24
25
  if (typeof vals === 'string') {
25
26
  return relaNos.includes(vals)
@@ -1,5 +1,5 @@
1
1
  import axios from './axios'
2
-
2
+ import { getItem, setItem } from './storageEdit'
3
3
  // 按需/按模块 加载权限
4
4
  async function asyncGetRelaNos(appNo, rns) {
5
5
  let uno = sessionStorage.getItem('userNo')
@@ -20,27 +20,34 @@ async function asyncGetRelaNos(appNo, rns) {
20
20
  { loading: false, noMsg: true }
21
21
  )
22
22
 
23
- let ssRelaNos = JSON.parse(sessionStorage.getItem('relaNos'))
24
- let ssCltrelaNos = JSON.parse(sessionStorage.getItem('cltrelaNos'))
23
+ let ssRelaNos = getItem('relaNos') // JSON.parse(sessionStorage.getItem('relaNos'))
24
+ let ssCltrelaNos = getItem('cltrelaNos') // JSON.parse(sessionStorage.getItem('cltrelaNos'))
25
25
 
26
- let relaNos = []
26
+ let rnObj = ssRelaNos.find((el) => el.appNo === appNo)
27
+ if (!rnObj) {
28
+ rnObj = { appNo: appNo || 'null', relaNos: [] }
29
+ ssRelaNos.push(rnObj)
30
+ }
31
+ let oRelaNos = []
27
32
  data.forEach((el) => {
28
- ssCltrelaNos[el.cltNo] || (ssCltrelaNos[el.cltNo] = [])
29
-
30
- relaNos.push(...el.relaNos)
31
- ssCltrelaNos[el.cltNo].push(...el.relaNos)
33
+ if (ssCltrelaNos[el.cltNo]) {
34
+ ssCltrelaNos[el.cltNo].push(...el.relaNos)
35
+ } else {
36
+ ssCltrelaNos[el.cltNo] = el.relaNos
37
+ }
38
+ oRelaNos.push(...el.relaNos)
32
39
  })
33
- relaNos = Array.from(new Set(relaNos))
40
+ oRelaNos = [...new Set(oRelaNos)]
41
+ rnObj.relaNos = oRelaNos
34
42
 
35
- let rnObj = ssRelaNos.find((el) => el.appNo === appNo)
36
- if (rnObj) {
37
- rnObj.relaNos = relaNos
38
- } else {
39
- ssRelaNos.push({ appNo: appNo || 'null', relaNos: relaNos })
40
- }
43
+ // sessionStorage.setItem('relaNos', JSON.stringify(ssRelaNos))
44
+ setItem('relaNos', ssRelaNos)
45
+ // sessionStorage.setItem('cltrelaNos', JSON.stringify(ssCltrelaNos))
46
+ setItem('cltrelaNos', ssCltrelaNos)
41
47
 
42
- sessionStorage.setItem('relaNos', JSON.stringify(ssRelaNos))
43
- sessionStorage.setItem('cltrelaNos', JSON.stringify(ssCltrelaNos))
48
+ let ssRelaNosG = getItem('relaNosGlobal')
49
+ ssRelaNosG.push(...oRelaNos)
50
+ setItem('relaNosGlobal', ssRelaNosG)
44
51
  }
45
52
 
46
53
  export default asyncGetRelaNos
@@ -51,7 +51,7 @@ let loadingCount = 0
51
51
  function showLoading(opt) {
52
52
  let loading = opt.loading
53
53
  if (loading === true) {
54
- if (loadingCount === 0 && !document.querySelector('.xhr-loading-top')) {
54
+ if (loadingCount === 0 && !document.querySelector('.xhr-loading-top:not(.el-loading-fade-leave-active)')) {
55
55
  loadingBox = _Loading.service({
56
56
  lock: true,
57
57
  text: $lc('加载中'),
@@ -1,33 +1,31 @@
1
1
  import forEachs from './forEachs'
2
+ import { getItem } from './storageEdit'
2
3
 
3
4
  const name = process.env.VUE_APP_RelaAppNo || process.env.VUE_APP_NAME
4
5
 
5
- let relaObj = {
6
- appNo: name,
7
- relaNos: []
8
- }
6
+ let relaObj = undefined
7
+ let cltrelaNos = undefined
9
8
 
10
9
  export function getRela() {
10
+ if (!relaObj) setRela()
11
+
11
12
  return relaObj
12
13
  }
13
14
 
14
15
  export function setRela() {
15
- let relaNosStr = sessionStorage.getItem('relaNos')
16
- if (relaNosStr) {
17
- let relaNos = JSON.parse(relaNosStr)
18
- Object.assign(
19
- relaObj,
20
- relaNos.find((r) => r.appNo === name)
21
- )
22
- console.log(relaObj, 'has权限列表')
16
+ let _relaNos = getItem('relaNos') // sessionStorage.getItem('relaNos')
17
+ if (_relaNos) {
18
+ let relaNos = _relaNos
19
+ relaObj = relaNos.find((r) => r.appNo === name)
20
+ let relaNosG = getItem('relaNosGlobal')
23
21
 
24
- relaObj.relaNosGlobal = relaNos.map((item) => item.relaNos).flat()
22
+ console.log({ relaObj, relaNosGlobal: relaNosG }, 'has权限列表')
25
23
  return
26
24
  }
27
25
  /* 兼容旧门户 */
28
- let resourcesStr = sessionStorage.getItem('resources')
29
- if (resourcesStr) {
30
- let resources = JSON.parse(resourcesStr)
26
+ let _resources = getItem('resources') // sessionStorage.getItem('resources')
27
+ if (_resources) {
28
+ let resources = _resources
31
29
  let relaNos = []
32
30
  forEachs(resources, (item) => {
33
31
  relaNos.push(item.relaNo)
@@ -37,13 +35,12 @@ export function setRela() {
37
35
  }
38
36
  }
39
37
 
40
- let cltrelaNos = undefined
41
38
  export function getCltRela(clt) {
42
39
  /* 获取全部单位权限 */
43
40
  if (!cltrelaNos) {
44
- let cltrelaNosStr = sessionStorage.getItem('cltrelaNos')
45
- if (cltrelaNosStr) {
46
- cltrelaNos = JSON.parse(cltrelaNosStr)
41
+ let _cltrelaNos = getItem('cltrelaNos') // sessionStorage.getItem('cltrelaNos')
42
+ if (_cltrelaNos) {
43
+ cltrelaNos = _cltrelaNos
47
44
  } else {
48
45
  cltrelaNos = {}
49
46
  }
@@ -52,14 +49,34 @@ export function getCltRela(clt) {
52
49
  if (Array.isArray(clt)) {
53
50
  let clts = clt
54
51
  let cltI = clts[0]
55
- let cltRela = cltrelaNos[cltI]
52
+ let cltRela = []
53
+ for (let id in cltrelaNos) {
54
+ let ids = id.split(',')
55
+ if (ids.includes(cltI)) {
56
+ cltRela.push(...cltrelaNos[id])
57
+ }
58
+ }
56
59
 
57
60
  for (let i = 1; i < clt.length; i++) {
58
- cltRela = aandb(cltRela, cltrelaNos[clts[i]])
61
+ let cltRela2 = []
62
+ for (let id in cltrelaNos) {
63
+ let ids = id.split(',')
64
+ if (ids.includes(clts[i])) {
65
+ cltRela2.push(...cltrelaNos[id])
66
+ }
67
+ }
68
+ cltRela = aandb(cltRela, cltRela2)
59
69
  }
60
70
  return cltRela || []
61
71
  } else {
62
- return cltrelaNos[clt] || []
72
+ let cltRela = []
73
+ for (let id in cltrelaNos) {
74
+ let ids = id.split(',')
75
+ if (ids.includes(clt)) {
76
+ cltRela.push(...cltrelaNos[id])
77
+ }
78
+ }
79
+ return cltRela
63
80
  }
64
81
  }
65
82