vue2-client 1.16.40 → 1.16.43

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.43",
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({
@@ -85,8 +85,9 @@ defineExpose({
85
85
  }
86
86
  }
87
87
  }
88
- // +号样式
89
- &.h-buttons-table-height-button23 {
88
+ // +号样式(共享基础样式)
89
+ &.h-buttons-table-height-button23,
90
+ &.h-buttons-table-height-button23-no-transform {
90
91
  :deep(.ant-btn-group) {
91
92
  display: inline-flex;
92
93
  align-items: center;
@@ -104,11 +105,15 @@ defineExpose({
104
105
  margin-left: 10px;
105
106
  width: 30px;
106
107
  height: 30px;
107
- /* 自适应上移:按按钮自身高度百分比位移 */
108
- transform: translateY(-100%);
109
108
  }
110
109
  }
111
110
  }
111
+ // 仅在有分页的场景上移
112
+ &.h-buttons-table-height-button23 {
113
+ :deep(.ant-btn-group) {
114
+ .ant-btn { transform: translateY(-100%); }
115
+ }
116
+ }
112
117
  // 居中+悬停高亮的新样式
113
118
  &.h-buttons-plus-center {
114
119
  :deep(.ant-btn-group) {
@@ -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 = {}
@@ -1,149 +1,149 @@
1
- // 测试配置 - 用于演示混合支付功能
2
- export const testChargeConfig = {
3
- "amountFields": [
4
- {
5
- "field": 'f_amount',
6
- "disabled": false,
7
- "label": '费用总额'
8
- },
9
- {
10
- "field": 'f_insurance_amount',
11
- "disabled": true,
12
- "label": '医保支付'
13
- },
14
- {
15
- "field": 'f_self_amount',
16
- "disabled": true,
17
- "label": '自费金额'
18
- },
19
- {
20
- "field": 'out_of_pocket_amount',
21
- "disabled": true,
22
- "label": '自付金额'
23
- },
24
- {
25
- "field": 'biscount_amount',
26
- "disabled": true,
27
- "label": '折扣金额'
28
- },
29
- {
30
- "field": 'billing_amount',
31
- "disabled": true,
32
- "label": '记账金额'
33
- }
34
- ],
35
- "paymentMethods": [
36
- {
37
- "key": '医保卡',
38
- "label": '医保卡'
39
- },
40
- {
41
- "key": '微信/支付宝',
42
- "label": '微信/支付宝'
43
- },
44
- {
45
- "key": '银行卡',
46
- "label": '银行卡'
47
- },
48
- {
49
- "key": '现金',
50
- "label": '现金'
51
- }
52
- ],
53
- "bottomFields": [
54
- {
55
- "field": 'f_balance',
56
- "label": '账户余额',
57
- "disabled": false
58
- },
59
- {
60
- "field": 'received',
61
- "label": '实收',
62
- "disabled": false
63
- },
64
- {
65
- "field": 'change',
66
- "label": '找零',
67
- "disabled": false
68
- }
69
- ],
70
- "actionButtons": [
71
- {
72
- "key": 'charge',
73
- "label": '收费',
74
- "icon": 'check'
75
- },
76
- {
77
- "key": 'refund',
78
- "label": '退费',
79
- "icon": 'undo'
80
- },
81
- {
82
- "key": 'print',
83
- "label": '打印',
84
- "icon": 'printer'
85
- }
86
- ],
87
- "enableMixedPayment": true, // 启用混合支付
88
- // 可配置事件名,参考 fronImport 风格
89
- "eventNames": {
90
- "method": 'method',
91
- "methods": 'methods',
92
- "totalPaymentAmount": 'totalPaymentAmount',
93
- "action": 'action'
94
- },
95
- "dataSourceConfig": 'testChargeLogic'
96
- }
97
-
98
- // 单选模式测试配置
99
- export const testSingleChargeConfig = {
100
- "amountFields": [
101
- {
102
- "field": 'f_amount',
103
- "disabled": false,
104
- "label": '费用总额'
105
- },
106
- {
107
- "field": 'f_insurance_amount',
108
- "disabled": true,
109
- "label": '医保支付'
110
- }
111
- ],
112
- "paymentMethods": [
113
- {
114
- "key": '医保卡',
115
- "label": '医保卡'
116
- },
117
- {
118
- "key": '现金',
119
- "label": '现金'
120
- }
121
- ],
122
- "bottomFields": [
123
- {
124
- "field": 'received',
125
- "label": '实收',
126
- "disabled": false
127
- },
128
- {
129
- "field": 'change',
130
- "label": '找零',
131
- "disabled": false
132
- }
133
- ],
134
- "actionButtons": [
135
- {
136
- "key": 'charge',
137
- "label": '收费',
138
- "icon": 'check'
139
- }
140
- ],
141
- "enableMixedPayment": false, // 禁用混合支付(单选模式)
142
- "eventNames": {
143
- "method": 'method',
144
- "methods": 'methods',
145
- "totalPaymentAmount": 'totalPaymentAmount',
146
- "action": 'action'
147
- },
148
- "dataSourceConfig": 'testChargeLogic'
149
- }
1
+ // 测试配置 - 用于演示混合支付功能
2
+ export const testChargeConfig = {
3
+ "amountFields": [
4
+ {
5
+ "field": 'f_amount',
6
+ "disabled": false,
7
+ "label": '费用总额'
8
+ },
9
+ {
10
+ "field": 'f_insurance_amount',
11
+ "disabled": true,
12
+ "label": '医保支付'
13
+ },
14
+ {
15
+ "field": 'f_self_amount',
16
+ "disabled": true,
17
+ "label": '自费金额'
18
+ },
19
+ {
20
+ "field": 'out_of_pocket_amount',
21
+ "disabled": true,
22
+ "label": '自付金额'
23
+ },
24
+ {
25
+ "field": 'biscount_amount',
26
+ "disabled": true,
27
+ "label": '折扣金额'
28
+ },
29
+ {
30
+ "field": 'billing_amount',
31
+ "disabled": true,
32
+ "label": '记账金额'
33
+ }
34
+ ],
35
+ "paymentMethods": [
36
+ {
37
+ "key": '医保卡',
38
+ "label": '医保卡'
39
+ },
40
+ {
41
+ "key": '微信/支付宝',
42
+ "label": '微信/支付宝'
43
+ },
44
+ {
45
+ "key": '银行卡',
46
+ "label": '银行卡'
47
+ },
48
+ {
49
+ "key": '现金',
50
+ "label": '现金'
51
+ }
52
+ ],
53
+ "bottomFields": [
54
+ {
55
+ "field": 'f_balance',
56
+ "label": '账户余额',
57
+ "disabled": false
58
+ },
59
+ {
60
+ "field": 'received',
61
+ "label": '实收',
62
+ "disabled": false
63
+ },
64
+ {
65
+ "field": 'change',
66
+ "label": '找零',
67
+ "disabled": false
68
+ }
69
+ ],
70
+ "actionButtons": [
71
+ {
72
+ "key": 'charge',
73
+ "label": '收费',
74
+ "icon": 'check'
75
+ },
76
+ {
77
+ "key": 'refund',
78
+ "label": '退费',
79
+ "icon": 'undo'
80
+ },
81
+ {
82
+ "key": 'print',
83
+ "label": '打印',
84
+ "icon": 'printer'
85
+ }
86
+ ],
87
+ "enableMixedPayment": true, // 启用混合支付
88
+ // 可配置事件名,参考 fronImport 风格
89
+ "eventNames": {
90
+ "method": 'method',
91
+ "methods": 'methods',
92
+ "totalPaymentAmount": 'totalPaymentAmount',
93
+ "action": 'action'
94
+ },
95
+ "dataSourceConfig": 'testChargeLogic'
96
+ }
97
+
98
+ // 单选模式测试配置
99
+ export const testSingleChargeConfig = {
100
+ "amountFields": [
101
+ {
102
+ "field": 'f_amount',
103
+ "disabled": false,
104
+ "label": '费用总额'
105
+ },
106
+ {
107
+ "field": 'f_insurance_amount',
108
+ "disabled": true,
109
+ "label": '医保支付'
110
+ }
111
+ ],
112
+ "paymentMethods": [
113
+ {
114
+ "key": '医保卡',
115
+ "label": '医保卡'
116
+ },
117
+ {
118
+ "key": '现金',
119
+ "label": '现金'
120
+ }
121
+ ],
122
+ "bottomFields": [
123
+ {
124
+ "field": 'received',
125
+ "label": '实收',
126
+ "disabled": false
127
+ },
128
+ {
129
+ "field": 'change',
130
+ "label": '找零',
131
+ "disabled": false
132
+ }
133
+ ],
134
+ "actionButtons": [
135
+ {
136
+ "key": 'charge',
137
+ "label": '收费',
138
+ "icon": 'check'
139
+ }
140
+ ],
141
+ "enableMixedPayment": false, // 禁用混合支付(单选模式)
142
+ "eventNames": {
143
+ "method": 'method',
144
+ "methods": 'methods',
145
+ "totalPaymentAmount": 'totalPaymentAmount',
146
+ "action": 'action'
147
+ },
148
+ "dataSourceConfig": 'testChargeLogic'
149
+ }
@@ -153,7 +153,7 @@ export default {
153
153
  const classes = {}
154
154
 
155
155
  const booleanStyleKeys = [
156
- 'description'
156
+ 'description', 'no-padding'
157
157
  ]
158
158
  booleanStyleKeys.forEach(key => {
159
159
  const val = attrs[key]
@@ -476,4 +476,7 @@ export default {
476
476
  }
477
477
  }
478
478
  }
479
+ .xhdesc-no-padding {
480
+ padding: 0px;
481
+ }
479
482
  </style>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="x-radio-container">
2
+ <div class="x-radio-container" :class="wrapperClassObject()">
3
3
  <a-radio-group v-model="innerValue" @change="onChange" class="x-radio-group">
4
4
  <div v-for="item in data" :key="item.value" class="x-radio-item-container">
5
5
  <a-radio :value="item.value" class="x-radio-item">
@@ -87,12 +87,25 @@ export default {
87
87
  onChange (e) {
88
88
  this.innerValue = e.target.value
89
89
  this.$emit('change', e.target.value)
90
- }
90
+ },
91
+ wrapperClassObject () {
92
+ const attrs = this.$attrs || {}
93
+ const classes = {}
94
+ const booleanStyleKeys = [
95
+ 'item-0padding'
96
+ ]
97
+ booleanStyleKeys.forEach(key => {
98
+ const val = attrs[key]
99
+ const truthy = val === true || val === '' || val === 'true'
100
+ if (truthy) classes[`x-radio-${key}`] = true
101
+ })
102
+ return classes
103
+ },
91
104
  }
92
105
  }
93
106
  </script>
94
107
 
95
- <style scoped>
108
+ <style scoped lang="less">
96
109
  .x-radio-container {
97
110
  display: flex;
98
111
  flex-direction: column;
@@ -122,4 +135,16 @@ export default {
122
135
  transition: all 0.3s;
123
136
  max-width: 100%;
124
137
  }
138
+ .x-radio-description {
139
+ padding: 4px 4px 4px 4px;
140
+ }
141
+
142
+ .x-radio-item-0padding {
143
+ &.x-radio-container,
144
+ .x-radio-container {
145
+ :deep(.x-radio-item-container) {
146
+ padding: 0px;
147
+ }
148
+ }
149
+ }
125
150
  </style>
@@ -4,6 +4,7 @@
4
4
  v-model="selectedValue"
5
5
  :placeholder="placeholder"
6
6
  class="x-select"
7
+ :class="wrapperClassObject()"
7
8
  :allowClear="true"
8
9
  :showSearch="true"
9
10
  :filter-option="filterOption"
@@ -56,7 +57,20 @@ export default {
56
57
  },
57
58
  filterOption (input, option) {
58
59
  return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
59
- }
60
+ },
61
+ wrapperClassObject () {
62
+ const attrs = this.$attrs || {}
63
+ const classes = {}
64
+ const booleanStyleKeys = [
65
+ 'x-select4'
66
+ ]
67
+ booleanStyleKeys.forEach(key => {
68
+ const val = attrs[key]
69
+ const truthy = val === true || val === '' || val === 'true'
70
+ if (truthy) classes[`x-select-${key}`] = true
71
+ })
72
+ return classes
73
+ },
60
74
  },
61
75
  watch: {
62
76
  selectedValue (val) {
@@ -65,8 +79,13 @@ export default {
65
79
  }
66
80
  </script>
67
81
 
68
- <style scoped>
82
+ <style scoped lang="less">
69
83
  .x-select {
70
84
  min-width: 150px;
71
85
  }
86
+
87
+ .x-select-x-select4 {
88
+ width: 100%;
89
+ min-width: auto;
90
+ }
72
91
  </style>
@@ -83,7 +83,6 @@ export function getConfig (content, configName, serviceName = process.env.VUE_AP
83
83
  apiPre = '/devApi/'
84
84
  }
85
85
  const getConfigUrl = apiPre + serviceName + '/' + commonApi.getConfig
86
- console.log('getConfigUrl', getConfigUrl)
87
86
  indexedDB.getByWeb(configName, getConfigUrl, { configName: configName }, callback)
88
87
  }
89
88