vue2-client 1.16.40 → 1.16.41

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": "vue2-client",
3
- "version": "1.16.40",
3
+ "version": "1.16.41",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve --no-eslint",
@@ -85,7 +85,7 @@
85
85
  import { GetGDMap } from '@vue2-client/utils/map-utils'
86
86
  import { debounce } from 'ant-design-vue/lib/vc-table/src/utils'
87
87
  import { mapState } from 'vuex'
88
- import { runLogic } from '@vue2-client/services/api/common'
88
+ import { getConfigByName, runLogic } from '@vue2-client/services/api/common'
89
89
  import IcMapIcon from '@vue2-client/base-client/components/common/AddressSearchCombobox/IcMapIcon.vue'
90
90
 
91
91
  export default {
@@ -117,12 +117,14 @@ export default {
117
117
  // 生成地址串中省市区街道信息禁止修改
118
118
  readOnlyDivisions: false,
119
119
  // cur 位置
120
- curPosition: null,
120
+ curPosition: {},
121
+ gaode_key: '',
122
+ gaode_secret_key: '',
121
123
  searchFlag: false,
122
124
  }
123
125
  },
124
126
  computed: {
125
- ...mapState('setting', ['isMobile', 'gaode_key', 'gaode_secret_key'])
127
+ ...mapState('setting', ['isMobile'])
126
128
  },
127
129
  props: {
128
130
  attr: {
@@ -175,6 +177,15 @@ export default {
175
177
  mounted () {
176
178
  },
177
179
  methods: {
180
+ getGaoDeKey () {
181
+ return new Promise((resolve) => {
182
+ getConfigByName('gaoDeKeyConfig', 'af-system', (config) => {
183
+ this.gaode_secret_key = config.gaode_secret_key
184
+ this.gaode_key = config.gaode_key
185
+ resolve()
186
+ })
187
+ })
188
+ },
178
189
  change (value) {
179
190
  if (this.readOnlyDivisions && !this.divisionsChange) {
180
191
  // 如果省市区街道信息禁止修改
@@ -435,7 +446,10 @@ export default {
435
446
  watch: {
436
447
  'visible' (val) {
437
448
  if (val) {
438
- this.$nextTick(() => {
449
+ this.$nextTick(async () => {
450
+ if (!this.gaode_key) {
451
+ await this.getGaoDeKey()
452
+ }
439
453
  GetGDMap(this.gaode_secret_key, this.gaode_key).then(aMap => {
440
454
  this.initMap(aMap)
441
455
  this.mapAutocomplete = new (aMap).AutoComplete({
@@ -1,174 +1,174 @@
1
- <template>
2
- <div class="row">
3
- <div class="content">
4
- <a-skeleton :loading="loading" :paragraph="{ rows: 4 }" />
5
- <div v-show="!loading">
6
- <template v-if="!loadError">
7
- <a-descriptions v-if="realData" :column="isMobile ? 1 : column" size="small" :title="title">
8
- <a-descriptions-item
9
- v-for="(value, key) in realData"
10
- :key="key"
11
- :label="key">
12
- {{ formatText(value) }}
13
- </a-descriptions-item>
14
- </a-descriptions>
15
- </template>
16
- <template v-else>
17
- <a-empty>
18
- <span slot="description"> 页面配置不存在,请联系系统管理员 </span>
19
- </a-empty>
20
- </template>
21
- </div>
22
- </div>
23
- <div class="extra" v-if="extraShow">
24
- <slot name="addonAfter"/>
25
- </div>
26
- </div>
27
- </template>
28
- <script>
29
-
30
- import { mapState } from 'vuex'
31
- import { getRealKeyData } from '@vue2-client/utils/formatter'
32
- import { getConfigByName } from '@vue2-client/services/api/common'
33
-
34
- export default {
35
- name: 'XDescriptions',
36
- components: {
37
- },
38
- props: {
39
- // 标题
40
- title: {
41
- type: String,
42
- required: true
43
- },
44
- // 内容
45
- content: {
46
- type: Object,
47
- required: true
48
- },
49
- // 模型名
50
- model: {
51
- type: String,
52
- required: false,
53
- default: ''
54
- },
55
- // 配置名称
56
- configName: {
57
- type: String,
58
- required: true
59
- },
60
- // 配置所属命名空间
61
- serviceName: {
62
- type: String,
63
- default: undefined
64
- },
65
- env: {
66
- type: String,
67
- default: 'prod'
68
- },
69
- // 每列显示数量
70
- column: {
71
- type: Number,
72
- default: 2
73
- },
74
- // 每列显示数量
75
- getRealData: {
76
- type: Boolean,
77
- default: false
78
- },
79
- // 是否展示插槽
80
- extraShow: {
81
- type: Boolean,
82
- default: true
83
- }
84
- },
85
- created () {
86
- this.initConfig()
87
- },
88
- data () {
89
- return {
90
- // 加载状态
91
- loading: false,
92
- loadError: false,
93
- realData: undefined
94
- }
95
- },
96
- computed: {
97
- ...mapState('setting', { isMobile: 'isMobile' })
98
- },
99
- methods: {
100
- initConfig () {
101
- this.loading = true
102
- this.loadError = false
103
- if (this.configName) {
104
- this.getConfig()
105
- } else {
106
- this.loading = false
107
- this.loadError = true
108
- }
109
- },
110
- getConfig () {
111
- getConfigByName(this.configName, this.serviceName, (res) => {
112
- const mapIndex = {}
113
- const result = {}
114
- if (res.formJson) {
115
- res.formJson.filter(item => {
116
- const model = item.model
117
- return model.indexOf(this.model) > 0
118
- })[0].groupItems.forEach(item => {
119
- mapIndex[item.model.substring(item.model.indexOf('_') + 1)] = item.name
120
- })
121
- for (const key of Object.keys(this.content)) {
122
- const name = mapIndex[key]
123
- if (name) {
124
- result[name] = this.content[key]
125
- } else {
126
- result[key] = this.content[key]
127
- }
128
- }
129
- } else if (res.column) {
130
- // [{label:'标签1',filed:'字段1'}]
131
- let content = {}
132
- if (this.getRealData) {
133
- content = getRealKeyData(this.content)
134
- } else {
135
- content = this.content
136
- }
137
- if (typeof content === 'string') {
138
- content = JSON.parse(content)
139
- }
140
- res.column.forEach(item => {
141
- result[item.label] = content[item.filed]
142
- })
143
- }
144
- this.realData = result
145
- this.loading = false
146
- }, this.env === 'dev')
147
- },
148
- // 文字格式化
149
- formatText (value) {
150
- return value ?? '--'
151
- }
152
- }
153
- }
154
- </script>
155
- <style>
156
- .row {
157
- display: flex;
158
-
159
- .content {
160
- -webkit-box-flex: 1;
161
- flex: auto;
162
- -ms-flex: auto;
163
- }
164
-
165
- .extra {
166
- flex: 0 1 auto;
167
- -webkit-box-flex: 0;
168
- -ms-flex: 0 1 auto;
169
- min-width: 242px;
170
- margin-left: 88px;
171
- text-align: right;
172
- }
173
- }
174
- </style>
1
+ <template>
2
+ <div class="row">
3
+ <div class="content">
4
+ <a-skeleton :loading="loading" :paragraph="{ rows: 4 }" />
5
+ <div v-show="!loading">
6
+ <template v-if="!loadError">
7
+ <a-descriptions v-if="realData" :column="isMobile ? 1 : column" size="small" :title="title">
8
+ <a-descriptions-item
9
+ v-for="(value, key) in realData"
10
+ :key="key"
11
+ :label="key">
12
+ {{ formatText(value) }}
13
+ </a-descriptions-item>
14
+ </a-descriptions>
15
+ </template>
16
+ <template v-else>
17
+ <a-empty>
18
+ <span slot="description"> 页面配置不存在,请联系系统管理员 </span>
19
+ </a-empty>
20
+ </template>
21
+ </div>
22
+ </div>
23
+ <div class="extra" v-if="extraShow">
24
+ <slot name="addonAfter"/>
25
+ </div>
26
+ </div>
27
+ </template>
28
+ <script>
29
+
30
+ import { mapState } from 'vuex'
31
+ import { getRealKeyData } from '@vue2-client/utils/formatter'
32
+ import { getConfigByName } from '@vue2-client/services/api/common'
33
+
34
+ export default {
35
+ name: 'XDescriptions',
36
+ components: {
37
+ },
38
+ props: {
39
+ // 标题
40
+ title: {
41
+ type: String,
42
+ required: true
43
+ },
44
+ // 内容
45
+ content: {
46
+ type: Object,
47
+ required: true
48
+ },
49
+ // 模型名
50
+ model: {
51
+ type: String,
52
+ required: false,
53
+ default: ''
54
+ },
55
+ // 配置名称
56
+ configName: {
57
+ type: String,
58
+ required: true
59
+ },
60
+ // 配置所属命名空间
61
+ serviceName: {
62
+ type: String,
63
+ default: undefined
64
+ },
65
+ env: {
66
+ type: String,
67
+ default: 'prod'
68
+ },
69
+ // 每列显示数量
70
+ column: {
71
+ type: Number,
72
+ default: 2
73
+ },
74
+ // 每列显示数量
75
+ getRealData: {
76
+ type: Boolean,
77
+ default: false
78
+ },
79
+ // 是否展示插槽
80
+ extraShow: {
81
+ type: Boolean,
82
+ default: true
83
+ }
84
+ },
85
+ created () {
86
+ this.initConfig()
87
+ },
88
+ data () {
89
+ return {
90
+ // 加载状态
91
+ loading: false,
92
+ loadError: false,
93
+ realData: undefined
94
+ }
95
+ },
96
+ computed: {
97
+ ...mapState('setting', { isMobile: 'isMobile' })
98
+ },
99
+ methods: {
100
+ initConfig () {
101
+ this.loading = true
102
+ this.loadError = false
103
+ if (this.configName) {
104
+ this.getConfig()
105
+ } else {
106
+ this.loading = false
107
+ this.loadError = true
108
+ }
109
+ },
110
+ getConfig () {
111
+ getConfigByName(this.configName, this.serviceName, (res) => {
112
+ const mapIndex = {}
113
+ const result = {}
114
+ if (res.formJson) {
115
+ res.formJson.filter(item => {
116
+ const model = item.model
117
+ return model.indexOf(this.model) > 0
118
+ })[0].groupItems.forEach(item => {
119
+ mapIndex[item.model.substring(item.model.indexOf('_') + 1)] = item.name
120
+ })
121
+ for (const key of Object.keys(this.content)) {
122
+ const name = mapIndex[key]
123
+ if (name) {
124
+ result[name] = this.content[key]
125
+ } else {
126
+ result[key] = this.content[key]
127
+ }
128
+ }
129
+ } else if (res.column) {
130
+ // [{label:'标签1',filed:'字段1'}]
131
+ let content = {}
132
+ if (this.getRealData) {
133
+ content = getRealKeyData(this.content)
134
+ } else {
135
+ content = this.content
136
+ }
137
+ if (typeof content === 'string') {
138
+ content = JSON.parse(content)
139
+ }
140
+ res.column.forEach(item => {
141
+ result[item.label] = content[item.filed]
142
+ })
143
+ }
144
+ this.realData = result
145
+ this.loading = false
146
+ }, this.env === 'dev')
147
+ },
148
+ // 文字格式化
149
+ formatText (value) {
150
+ return value ?? '--'
151
+ }
152
+ }
153
+ }
154
+ </script>
155
+ <style>
156
+ .row {
157
+ display: flex;
158
+
159
+ .content {
160
+ -webkit-box-flex: 1;
161
+ flex: auto;
162
+ -ms-flex: auto;
163
+ }
164
+
165
+ .extra {
166
+ flex: 0 1 auto;
167
+ -webkit-box-flex: 0;
168
+ -ms-flex: 0 1 auto;
169
+ min-width: 242px;
170
+ margin-left: 88px;
171
+ text-align: right;
172
+ }
173
+ }
174
+ </style>
@@ -328,11 +328,8 @@ export default {
328
328
  value = config.data[cell.dataIndex]
329
329
  }
330
330
 
331
- // 检查值是否为空(允许 0 和 false)
332
- const isEmptyString = typeof value === 'string' && value.trim() === ''
333
- const isEmptyArray = Array.isArray(value) && value.length === 0
334
- const isNullish = value === null || value === undefined
335
- if (isNullish || isEmptyString || isEmptyArray) {
331
+ // 检查值是否为空
332
+ if (!value || (typeof value === 'string' && value.trim() === '')) {
336
333
  const message = cell.requiredMessage || this.getDefaultRequiredMessage(cell.type)
337
334
  errors.push({
338
335
  dataIndex: cell.dataIndex,
@@ -822,18 +819,12 @@ export default {
822
819
  this.getConfigAndJoin(this.config, lock)
823
820
 
824
821
  // 用定时器循环查看锁状态
825
- // 先清理可能存在的旧轮询,避免重复打印与重复初始化
826
- if (this.timer) {
827
- clearInterval(this.timer)
828
- this.timer = undefined
829
- }
830
822
  this.timer = setInterval(() => {
831
823
  if (!lock.status) {
832
824
  clearInterval(this.timer)
833
- this.timer = undefined
834
825
  console.log('拼接完成', this.config)
835
826
  // 将初始化好的配置拷贝一份留存
836
- this.originalConfig = JSON.parse(JSON.stringify(this.config))
827
+ this.originalConfig = Object.assign({}, this.config)
837
828
  if (!this.dontFormat) {
838
829
  // 扫描配置文件中有没有rowSpan,进行格式化调整
839
830
  this.formatConfigRow(this.config)
@@ -873,8 +864,8 @@ export default {
873
864
  if (this.configData === undefined) {
874
865
  console.error('未找到数据!')
875
866
  } else {
876
- this.originalConfig = JSON.parse(JSON.stringify(this.config))
877
- this.originalConfig.data = Object.assign({}, this.originalConfig.data, JSON.parse(JSON.stringify(this.configData)))
867
+ this.originalConfig = Object.assign({}, this.config)
868
+ this.originalConfig.data = Object.assign(this.originalConfig.data, JSON.parse(JSON.stringify(this.configData)))
878
869
  this.type = 'display'
879
870
  // this.onlyDisplay = true
880
871
  this.showSkeleton = false
@@ -888,12 +879,12 @@ export default {
888
879
  this.config = res
889
880
  if (this.config.designMode === 'json') {
890
881
  if (this.configData !== undefined) {
891
- this.config.data = Object.assign({}, this.config.data, JSON.parse(JSON.stringify(this.configData)))
882
+ this.config.data = Object.assign({}, this.config.data, this.configData)
892
883
  }
893
884
  this.jsonConfigInit()
894
885
  } else {
895
886
  if (this.configData !== undefined) {
896
- this.config.data = Object.assign({}, this.config.data, JSON.parse(JSON.stringify(this.configData)))
887
+ this.config.data = Object.assign(this.config.data, this.configData)
897
888
  }
898
889
  if (this.config.data.images === undefined) {
899
890
  this.config.data.images = {}
@@ -926,14 +917,14 @@ export default {
926
917
  if (this.localConfig.designMode === 'json') {
927
918
  this.config = this.localConfig
928
919
  if (this.configData !== undefined) {
929
- this.config.data = Object.assign({}, this.config.data, JSON.parse(JSON.stringify(this.configData)))
920
+ this.config.data = Object.assign(this.config.data, this.configData)
930
921
  }
931
922
  this.jsonConfigInit()
932
923
  } else {
933
924
  // 如果配置是普通渲染器
934
925
  this.config = this.localConfig
935
926
  if (this.configData !== undefined) {
936
- this.config.data = Object.assign({}, this.config.data, JSON.parse(JSON.stringify(this.configData)))
927
+ this.config.data = Object.assign(this.config.data, this.configData)
937
928
  }
938
929
  if (this.config.data.images === undefined) {
939
930
  this.config.data.images = {}