vue2-client 1.2.24 → 1.2.27

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/CHANGELOG.md CHANGED
@@ -1,6 +1,23 @@
1
1
  # Change Log
2
2
  > 所有关于本项目的变化都在该文档里。
3
3
 
4
+ **##1.2.27 -2022-03-29 @朱子峰**
5
+ - 功能新增:
6
+ - [XAddNativeForm]:将XAddForm从模态框中抽取,用于页面直接展示Form
7
+
8
+ **##1.2.25 -2022-03-26 @江超**
9
+ - 功能修改:
10
+ - [查询配置生成]:表单[新增/修改场景]增加[version(版本号)]类型
11
+ - [api.js]:移除[跨域代理前缀]
12
+ - 问题修复:
13
+ - [查询配置生成]:修复修改已有查询配置时,部分数据显示状态不一致的问题
14
+ - [设备详情页]:修复设备抄表记录,异常记录查询报错的问题
15
+ - [XFormItem]:修复非懒加载搜索的下拉框显示问题
16
+
17
+ **##1.2.20 - 1.2.24 -2022-03-25 @朱子峰**
18
+ - 功能修改:
19
+ - [工单关闭/开始处理]:工单关闭和开始处理时,不由id来进行判断,改由姓名进行判断是否为同一个人
20
+
4
21
  **##1.2.17 - 1.2.19 -2022-03-25 @朱子峰**
5
22
  - 问题修复:
6
23
  - [钉钉消息推送]:将类别字段从int修改为String,直接传字典中的值
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue2-client",
3
- "version": "1.2.24",
3
+ "version": "1.2.27",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "vue-cli-service serve",
@@ -440,6 +440,7 @@
440
440
  <a-select-option key="add">仅支持新增</a-select-option>
441
441
  <a-select-option key="edit">仅支持修改</a-select-option>
442
442
  <a-select-option key="silenceAdd">静默新增(不生成表单)</a-select-option>
443
+ <a-select-option key="version">版本号</a-select-option>
443
444
  <a-popover
444
445
  slot="suffixIcon"
445
446
  title="关于新增/修改场景选择"
@@ -807,7 +808,7 @@ export default {
807
808
  }
808
809
  }
809
810
  // 必选项兼容处理
810
- if (columnItem.rule && !isNaN(columnItem.rule.required)) {
811
+ if (columnItem.rule && columnItem.rule.required && columnItem.rule.required !== 'false') {
811
812
  columnItem.rule.required = columnItem.rule.required.toString()
812
813
  } else {
813
814
  if (!columnItem.rule) {
@@ -815,6 +816,12 @@ export default {
815
816
  }
816
817
  columnItem.rule.required = 'false'
817
818
  }
819
+ // 数据源加载方式兼容处理
820
+ if (columnItem.lazyLoad && columnItem.lazyLoad !== 'false') {
821
+ columnItem.lazyLoad = columnItem.lazyLoad.toString()
822
+ } else {
823
+ columnItem.lazyLoad = 'false'
824
+ }
818
825
  // 下拉框数据源兼容处理
819
826
  if ((columnItem.formType === 'select' || columnItem.formType === 'cascader') && columnItem.selectKey) {
820
827
  // 数据源为logic
@@ -1015,6 +1022,9 @@ export default {
1015
1022
  if (item.selectKey.substring(0, 6) !== 'logic@') {
1016
1023
  item.selectKey = 'logic@' + item.selectKey
1017
1024
  }
1025
+ if (!item.lazyLoad) {
1026
+ delete item.lazyLoad
1027
+ }
1018
1028
  } else if (item.selectType === 'fixArray') {
1019
1029
  // 数据源为固定json集合
1020
1030
  if (!this.isJSON(item.selectKey)) {
@@ -492,7 +492,7 @@ export default {
492
492
  )
493
493
  for (const columnItem of this.form.column) {
494
494
  // 必选项兼容处理
495
- if (columnItem.rule && !isNaN(columnItem.rule.required)) {
495
+ if (columnItem.rule && columnItem.rule.required && columnItem.rule.required !== 'false') {
496
496
  columnItem.rule.required = columnItem.rule.required.toString()
497
497
  } else {
498
498
  if (!columnItem.rule) {
@@ -500,6 +500,12 @@ export default {
500
500
  }
501
501
  columnItem.rule.required = 'false'
502
502
  }
503
+ // 数据源加载方式兼容处理
504
+ if (columnItem.lazyLoad && columnItem.lazyLoad !== 'false') {
505
+ columnItem.lazyLoad = columnItem.lazyLoad.toString()
506
+ } else {
507
+ columnItem.lazyLoad = 'false'
508
+ }
503
509
  // 下拉框数据源兼容处理
504
510
  if ((columnItem.formType === 'select' || columnItem.formType === 'cascader') && columnItem.selectKey) {
505
511
  // 数据源为logic
@@ -623,6 +629,9 @@ export default {
623
629
  if (item.selectKey.substring(0, 6) !== 'logic@') {
624
630
  item.selectKey = 'logic@' + item.selectKey
625
631
  }
632
+ if (!item.lazyLoad) {
633
+ delete item.lazyLoad
634
+ }
626
635
  } else if (item.selectType === 'fixArray') {
627
636
  // 数据源为固定json集合
628
637
  if (!this.isJSON(item.selectKey)) {
@@ -113,6 +113,12 @@ export default {
113
113
  return item.addOrEdit === 'silenceAdd'
114
114
  })
115
115
  },
116
+ // 过滤出版本号表单项
117
+ versionJsonData: function () {
118
+ return this.jsonData.filter(function (item) {
119
+ return item.addOrEdit === 'version'
120
+ })
121
+ },
116
122
  ...mapState('account', { currUser: 'user' })
117
123
  },
118
124
  props: {
@@ -314,6 +320,14 @@ export default {
314
320
  this.form[item.model] = undefined
315
321
  }
316
322
  }
323
+ // 追加版本号信息
324
+ for (const item of this.versionJsonData) {
325
+ if (!this.modifyModelData[item.model]) {
326
+ this.form[item.model] = 0
327
+ } else {
328
+ this.form[item.model] = this.modifyModelData[item.model] + ''
329
+ }
330
+ }
317
331
  },
318
332
  onClose () {
319
333
  this.$emit('update:visible', false)
@@ -0,0 +1,315 @@
1
+ <template>
2
+ <div class="table-page-search-wrapper">
3
+ <a-form-model
4
+ v-if="loaded"
5
+ ref="selectForm"
6
+ :model="form"
7
+ :rules="rules">
8
+ <a-row :gutter="16">
9
+ <x-form-item
10
+ v-for="(item, index) in realJsonData"
11
+ mode="新增/修改"
12
+ :attr="item"
13
+ :form="form"
14
+ :key="index"
15
+ :disabled="itemDisabled(item)"
16
+ :xl="12"
17
+ :xxl="8"
18
+ />
19
+ <div v-for="group in realJsonSelectsData" :key="group[0].group">
20
+ <x-form-col v-for="groupItem in group" :key="groupItem.group + groupItem.groupIndex" :xl="12" :xxl="8">
21
+ <a-form-model-item :label="groupItem.name" :disabled="itemDisabled(groupItem)">
22
+ <a-select v-model="form[groupItem.model]" :disabled="itemDisabledPlus(groupItem.group,groupItem.groupIndex)" :allowClear="true" @change="selectsItemCheck(groupItem.group,groupItem.groupIndex,form[groupItem.model],group)" placeholder="请选择">
23
+ <template v-for="option in SelectsArray[groupItem.group][groupItem.groupIndex]">
24
+ <a-select-option :key="option.label" :value="option.value">
25
+ {{ option.label }}
26
+ </a-select-option>
27
+ </template>
28
+ </a-select>
29
+ </a-form-model-item>
30
+ </x-form-col>
31
+ </div>
32
+ </a-row>
33
+ </a-form-model>
34
+ </div>
35
+ </template>
36
+ <script>
37
+ import XFormItem from '@vue2-client/base-client/components/common/XForm/XFormItem'
38
+ import { formatDate } from '@vue2-client/utils/util'
39
+ import { mapState } from 'vuex'
40
+ import { post } from '@vue2-client/services/api/restTools'
41
+
42
+ export default {
43
+ name: 'XAddNativeForm',
44
+ components: {
45
+ XFormItem
46
+ },
47
+ data () {
48
+ return {
49
+ // 内容加载是否完成
50
+ loaded: false,
51
+ // 表单Model
52
+ form: undefined,
53
+ // 多层下拉框组 数据储存
54
+ SelectsArray: {},
55
+ // 多层下拉框组 各组数量
56
+ SelectsNumber: {},
57
+ // 校验
58
+ rules: {},
59
+ // 图标样式
60
+ iconStyle: {
61
+ position: 'relative',
62
+ top: '1px'
63
+ }
64
+ }
65
+ },
66
+ computed: {
67
+ // 过滤出用于新增/修改场景的表单项
68
+ realJsonData: function () {
69
+ return this.jsonData.filter(function (item) {
70
+ return item.addOrEdit && item.addOrEdit !== 'no' && item.addOrEdit !== 'silenceAdd' && !item.group
71
+ })
72
+ },
73
+ // 过滤出多个下拉框分组级联得数据
74
+ realJsonSelectsData: function () {
75
+ const Selectsata = this.jsonData.filter(item => !item.isOnlyAddOrEdit && item.group)
76
+ const groupName = [...new Set(Selectsata.map(item => item.group))]
77
+ // 初始化数据组
78
+ groupName.forEach(item => {
79
+ this.SelectsArray[item] = []
80
+ })
81
+ return groupName.map(groupName => {
82
+ const SelectsItem = Selectsata.filter(item => {
83
+ if (item.groupIndex === 1) {
84
+ if (item.keyName.substring(0, 6) === 'logic@') {
85
+ // 请求logic
86
+ post('/webmeterapi/' + item.keyName.substring(6), {}).then(res => {
87
+ this.SelectsArray[item.group][item.groupIndex] = res
88
+ })
89
+ } else {
90
+ this.SelectsArray[item.group][item.groupIndex] = JSON.parse(item.keyName)
91
+ }
92
+ }
93
+ return item.group === groupName
94
+ }
95
+ )
96
+ this.SelectsNumber[groupName] = SelectsItem.length ? SelectsItem.length : 0
97
+ return SelectsItem
98
+ })
99
+ },
100
+ // 过滤出用于静默新增场景的表单项
101
+ silenceAddJsonData: function () {
102
+ return this.jsonData.filter(function (item) {
103
+ return item.addOrEdit === 'silenceAdd'
104
+ })
105
+ },
106
+ // 过滤出版本号表单项
107
+ versionJsonData: function () {
108
+ return this.jsonData.filter(function (item) {
109
+ return item.addOrEdit === 'version'
110
+ })
111
+ },
112
+ ...mapState('account', { currUser: 'user' })
113
+ },
114
+ props: {
115
+ jsonData: {
116
+ type: Array,
117
+ default: () => {
118
+ return []
119
+ }
120
+ },
121
+ // 业务类型
122
+ businessType: {
123
+ type: String,
124
+ default: ''
125
+ },
126
+ // 修改操作前查询出的业务数据
127
+ modifyModelData: {
128
+ type: Object,
129
+ default: () => {
130
+ return {}
131
+ }
132
+ },
133
+ // 新增或修改业务是否执行中
134
+ loading: {
135
+ type: Boolean,
136
+ default: () => {
137
+ return false
138
+ }
139
+ },
140
+ // 固定新增表单
141
+ fixedAddForm: {
142
+ type: Object,
143
+ default: () => {
144
+ return {}
145
+ }
146
+ }
147
+ },
148
+ watch: {
149
+ visible (rel) {
150
+ if (rel) {
151
+ this.formItemLoad()
152
+ }
153
+ }
154
+ },
155
+ mounted () {
156
+ this.formItemLoad()
157
+ },
158
+ methods: {
159
+ selectsItemCheck (groupName, index, value, group) {
160
+ const tem = { }
161
+ // 获取当前下拉框子下拉框的数据
162
+ this.SelectsArray[groupName][index + 1] = this.SelectsArray[groupName][index].filter(item => item.value === value)[0].children
163
+ // 清空子下拉框的子们的数据
164
+ for (let i = index; i < this.SelectsNumber[groupName]; i++) {
165
+ tem[group[i].model] = undefined
166
+ }
167
+ this.form = Object.assign({}, this.form, tem)
168
+ // 清空子下拉框的子们的数据源
169
+ for (let i = index + 2; i <= this.SelectsNumber[groupName]; i++) {
170
+ this.SelectsArray[groupName][i] = []
171
+ }
172
+ },
173
+ formItemLoad () {
174
+ const formData = Object.assign({}, this.fixedAddForm)
175
+ for (let i = 0; i < this.realJsonData.length; i++) {
176
+ const item = this.realJsonData[i]
177
+ formData[item.model] = undefined
178
+ // 处理表单校验情况
179
+ if (item.rule) {
180
+ this.rules[item.model] = []
181
+ const required = item.rule.required ? item.rule.required === true || item.rule.required === 'true' : false
182
+ let trigger
183
+ let message
184
+ if (required) {
185
+ switch (item.type) {
186
+ case 'select':
187
+ message = '请选择' + item.name
188
+ trigger = 'change'
189
+ break
190
+ default:
191
+ message = '请输入' + item.name
192
+ trigger = 'blur'
193
+ }
194
+ this.rules[item.model].push({
195
+ required: true,
196
+ message: message,
197
+ trigger: trigger
198
+ })
199
+ }
200
+
201
+ switch (item.rule.type) {
202
+ case 'number':
203
+ case 'integer':
204
+ case 'float':
205
+ let defaultValue
206
+ let message
207
+ switch (item.rule.type) {
208
+ case 'number':
209
+ message = '数字'
210
+ defaultValue = 0
211
+ break
212
+ case 'integer':
213
+ message = '整数'
214
+ defaultValue = 0
215
+ break
216
+ case 'float':
217
+ message = '小数'
218
+ defaultValue = 0.0
219
+ break
220
+ }
221
+ this.rules[item.model].push({
222
+ type: item.rule.type,
223
+ message: item.name + '必须为' + message,
224
+ transform: (value) => {
225
+ if (value && value.length !== 0) {
226
+ return Number(value)
227
+ } else {
228
+ return defaultValue
229
+ }
230
+ },
231
+ trigger: 'blur'
232
+ })
233
+ break
234
+ }
235
+ }
236
+ }
237
+ this.form = formData
238
+ if (Object.keys(this.modifyModelData).length > 0) {
239
+ this.getModifyModelData()
240
+ }
241
+ this.loaded = true
242
+ },
243
+ itemDisabled (value) {
244
+ return (this.businessType === '新增' && value.addOrEdit === 'edit') ||
245
+ (this.businessType === '修改' && value.addOrEdit === 'add')
246
+ },
247
+ itemDisabledPlus (group, index) {
248
+ return (!this.SelectsArray[group][index]) || (this.SelectsArray[group][index] && this.SelectsArray[group][index].length === 0)
249
+ },
250
+ resetForm () {
251
+ this.$refs.selectForm.resetFields()
252
+ },
253
+ async onSubmit () {
254
+ this.$refs.selectForm.validate(async valid => {
255
+ for (const key of Object.keys(this.form)) {
256
+ if (this.form[key] === null || this.form[key] === '') {
257
+ this.form[key] = undefined
258
+ }
259
+ }
260
+ const requestParameters = Object.assign({}, this.form)
261
+ // 追加静默新增字段
262
+ if (this.businessType === '新增') {
263
+ for (const item of this.silenceAddJsonData) {
264
+ switch (item.silencePurpose) {
265
+ case 'createTime':
266
+ requestParameters[item.model] = formatDate('now')
267
+ break
268
+ case 'operator':
269
+ requestParameters[item.model] = this.currUser.name
270
+ break
271
+ case 'orgId':
272
+ requestParameters[item.model] = this.currUser.orgid
273
+ break
274
+ }
275
+ }
276
+ // 通过请求追加静默新增:自定义字段
277
+ for (const item of this.silenceAddJsonData.filter((item) => item.silencePurpose === 'customize')) {
278
+ requestParameters[item.model] = await this.getSilenceSource(item.silenceSource, requestParameters)
279
+ }
280
+ }
281
+ const data = {
282
+ valid: valid,
283
+ form: requestParameters
284
+ }
285
+ this.$emit('onSubmit', data)
286
+ })
287
+ },
288
+ async getSilenceSource (silenceSource, requestParameters) {
289
+ const result = await post('/webmeterapi/' + silenceSource, requestParameters)
290
+ return result
291
+ },
292
+ getModifyModelData () {
293
+ for (let i = 0; i < this.realJsonData.length; i++) {
294
+ const item = this.realJsonData[i]
295
+ if (this.modifyModelData[item.model] || this.modifyModelData[item.model] === 0) {
296
+ this.form[item.model] = this.modifyModelData[item.model] + ''
297
+ } else {
298
+ this.form[item.model] = undefined
299
+ }
300
+ }
301
+ // 追加版本号信息
302
+ for (const item of this.versionJsonData) {
303
+ if (!this.modifyModelData[item.model]) {
304
+ this.form[item.model] = 0
305
+ } else {
306
+ this.form[item.model] = this.modifyModelData[item.model] + ''
307
+ }
308
+ }
309
+ },
310
+ onClose () {
311
+ this.$emit('update:visible', false)
312
+ }
313
+ }
314
+ }
315
+ </script>
@@ -0,0 +1,3 @@
1
+ import XAddNativeForm from './XAddNativeForm'
2
+
3
+ export default XAddNativeForm
@@ -0,0 +1,56 @@
1
+ # XAddNativeForm
2
+
3
+ 动态新增/修改表单控件,根据JSON配置生成一个完整的可供新增/修改数据的动态表单
4
+
5
+
6
+ ## 何时使用
7
+
8
+ 当需要一个可供新增/修改数据的动态生成的表单时
9
+
10
+
11
+ 引用方式:
12
+
13
+ ```javascript
14
+ import XAddNativeForm from '@vue2-client/base-client/components/XAddNativeForm/XAddNativeForm'
15
+
16
+ export default {
17
+ components: {
18
+ XAddNativeForm
19
+ }
20
+ }
21
+ ```
22
+
23
+
24
+
25
+ ## 代码演示
26
+
27
+ ```html
28
+ <x-add-form
29
+ :business-type="businessType"
30
+ :json-data="formItems"
31
+ :modify-model-data="modifyModelData"
32
+ :loading="loading"
33
+ @onSubmit="onSubmit">
34
+ </x-add-form>
35
+ ```
36
+
37
+ ## API
38
+
39
+ | 参数 | 说明 | 类型 | 默认值 |
40
+ |-----------------|--------------------------|---------|-------|
41
+ | businessType | 业务类型 | String | '' |
42
+ | jsonData | JSON配置,根据[工具>查询配置生成]功能生成 | Object | {} |
43
+ | modifyModelData | 修改操作前查询出的业务数据 | Object | {} |
44
+ | loading | 新增或修改业务是否执行中 | Boolean | false |
45
+ | fixedAddForm | 固定新增表单,会和新增表单合并 | Object | {} |
46
+ | @onSubmit | 表单的提交事件 | event | - |
47
+
48
+ ## 例子1
49
+ ----
50
+ 参考XFormTable组件
51
+ ```
52
+
53
+ 注意事项
54
+ ----
55
+
56
+ > 本组件已经实现了自适应布局,在不同分辨率下的设备均可得到基本理想的展示效果
@@ -44,7 +44,7 @@
44
44
  :label="attr.name"
45
45
  :prop="attr.model">
46
46
  <a-select
47
- v-if="!attr.lazyLoad"
47
+ v-if="!attr.lazyLoad || attr.lazyLoad === 'false'"
48
48
  v-model="form[attr.model]"
49
49
  :disabled="disabled"
50
50
  show-search
@@ -216,7 +216,7 @@ export default {
216
216
  }
217
217
  },
218
218
  created () {
219
- if (!this.attr.lazyLoad && this.attr.keyName && this.attr.keyName.indexOf('logic@') !== -1) {
219
+ if ((!this.attr.lazyLoad || this.attr.lazyLoad === 'false') && this.attr.keyName && this.attr.keyName.indexOf('logic@') !== -1) {
220
220
  this.getData({}, res => {
221
221
  this.option = res
222
222
  })
@@ -542,6 +542,7 @@
542
542
  .ant-layout-sider-zero-width-trigger {
543
543
  top: 50%;
544
544
  background-color: @shadow-color;
545
+ z-index: 9999;
545
546
  }
546
547
  }
547
548
  }
@@ -45,9 +45,9 @@
45
45
  </a-tabs>
46
46
  <div v-if="!loadDeviceDetails">
47
47
  <device-details-main :details="details" v-if="tabActiveKey === '1'"/>
48
- <device-details-read :device-no="details.f_device_no" :device-id="details.id" v-if="tabActiveKey === '2'"/>
48
+ <device-details-read :device-id="details.id" v-if="tabActiveKey === '2'"/>
49
49
  <device-details-instruct :device-no="details.f_device_no" v-if="tabActiveKey === '3'"/>
50
- <device-details-singular :device-no="details.f_device_no" v-if="tabActiveKey === '4'"/>
50
+ <device-details-singular :device-id="details.id" v-if="tabActiveKey === '4'"/>
51
51
  <device-details-instruct-operate :device="details" v-if="tabActiveKey === '5'"/>
52
52
  </div>
53
53
  </template>
@@ -31,8 +31,8 @@
31
31
  }
32
32
  },
33
33
  props: {
34
- deviceNo: {
35
- type: String,
34
+ deviceId: {
35
+ type: Number,
36
36
  required: true
37
37
  }
38
38
  },
@@ -42,10 +42,10 @@
42
42
  methods: {
43
43
  initView () {
44
44
  this.tabActiveKey = '1'
45
- this.fixedQueryForm['e_f_device_id'] = this.deviceNo
45
+ this.fixedQueryForm['e_f_device_id'] = this.deviceId
46
46
  },
47
47
  onSubmit (res) {
48
- res.form['e_f_device_id'] = this.deviceNo
48
+ res.form['e_f_device_id'] = this.deviceId
49
49
  this.$emit('onSubmit', res)
50
50
  },
51
51
  toDetail (record, id) {
@@ -23,10 +23,6 @@
23
23
  XFormTable
24
24
  },
25
25
  props: {
26
- deviceNo: {
27
- type: String,
28
- required: true
29
- },
30
26
  deviceId: {
31
27
  type: Number,
32
28
  required: true
@@ -68,12 +64,12 @@
68
64
  methods: {
69
65
  initView () {
70
66
  this.logicParam = {
71
- id: this.deviceNo
67
+ id: this.deviceId
72
68
  }
73
- this.fixedQueryForm['i_id'] = this.deviceId
69
+ this.fixedQueryForm['d_id'] = this.deviceId
74
70
  },
75
71
  onSubmit (res) {
76
- res.form['i_id'] = this.deviceId
72
+ res.form['d_id'] = this.deviceId
77
73
  this.$emit('onSubmit', res)
78
74
  },
79
75
  refresh () {
@@ -1,11 +1,11 @@
1
1
  // 跨域代理前缀
2
2
  // const API_PROXY_PREFIX='/api'
3
3
  // const BASE_URL = process.env.NODE_ENV === 'production' ? process.env.VUE_APP_API_BASE_URL : API_PROXY_PREFIX
4
- const BASE_URL = process.env.VUE_APP_API_BASE_URL
4
+
5
5
  module.exports = {
6
- LOGIN: `${BASE_URL}/rs/logic/getLogin`,
7
- ROUTES: `${BASE_URL}/rs/user/userLogin/智慧燃气`,
8
- SEARCH: `${BASE_URL}/rs/search`,
9
- GOODS: `${BASE_URL}/goods`,
10
- GOODS_COLUMNS: `${BASE_URL}/columns`
6
+ LOGIN: `/rs/logic/getLogin`,
7
+ ROUTES: `/rs/user/userLogin/智慧燃气`,
8
+ SEARCH: `/rs/search`,
9
+ GOODS: `/goods`,
10
+ GOODS_COLUMNS: `/columns`
11
11
  }
@@ -113,9 +113,10 @@ function loadInterceptors () {
113
113
  // 让每个请求携带自定义 token 请根据实际情况自行修改
114
114
  if (token) {
115
115
  config.headers['Access-Token'] = token
116
+ config.headers['Cookie'] = Cookie
116
117
  }
117
118
  if (!config.headers['Content-Type']) {
118
- config.headers['Content-Type'] = 'application/json;charset=UTF-8'
119
+ config.headers['Content-Type'] = 'application/json/x-www-form-urlencoded;charset=UTF-8'
119
120
  }
120
121
  return config
121
122
  }, errorHandler)
@@ -1,3 +1,4 @@
1
+ import Vue from 'vue'
1
2
  import routerMap from '@vue2-client/router/async/router.map'
2
3
  import { mergeI18nFromRoutes } from '@vue2-client/utils/i18n'
3
4
  import Router from 'vue-router'
@@ -135,6 +136,11 @@ function loadRoutes (routesConfig) {
135
136
  // 应用配置
136
137
  const { router, store, i18n } = appOptions
137
138
 
139
+ // 刷新页面时,有些全局状态丢失,在此处从本地缓存拿出来赋值
140
+ if (JSON.stringify(Vue.$login.f) == '{}') {
141
+ const login = store.getters['account/login']
142
+ Object.assign(Vue.$login, login)
143
+ }
138
144
  // 如果 routesConfig 有值,则更新到本地,否则从本地获取
139
145
  if (routesConfig) {
140
146
  store.commit('account/setRoutesConfig', routesConfig)