vue2-client 1.22.11 → 1.22.13

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.
Files changed (93) hide show
  1. package/.claude/settings.local.json +30 -30
  2. package/.eslintrc.js +74 -74
  3. package/.idea/deployment.xml +14 -0
  4. package/.idea/inspectionProfiles/Project_Default.xml +0 -18
  5. package/.idea/misc.xml +6 -0
  6. package/.idea/vue2-client.iml +4 -7
  7. package/Components.md +60 -60
  8. package/index.js +31 -31
  9. package/jest-transform-stub.js +8 -8
  10. package/jest.setup.js +7 -7
  11. package/package.json +1 -1
  12. package/src/assets/img/querySlotDemo.svg +15 -15
  13. package/src/base-client/components/common/AfMap/map/index.vue +1 -0
  14. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
  15. package/src/base-client/components/common/AmapMarker/index.js +3 -3
  16. package/src/base-client/components/common/CitySelect/index.js +3 -3
  17. package/src/base-client/components/common/CitySelect/index.md +109 -109
  18. package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
  19. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  20. package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
  21. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  22. package/src/base-client/components/common/Tree/index.js +2 -2
  23. package/src/base-client/components/common/Upload/index.js +3 -3
  24. package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
  25. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  26. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
  27. package/src/base-client/components/common/XDataDrawer/index.js +3 -3
  28. package/src/base-client/components/common/XDataDrawer/index.md +41 -41
  29. package/src/base-client/components/common/XDescriptions/index.js +3 -3
  30. package/src/base-client/components/common/XDescriptions/index.md +382 -382
  31. package/src/base-client/components/common/XDetailsView/index.js +3 -3
  32. package/src/base-client/components/common/XForm/index.md +178 -178
  33. package/src/base-client/components/common/XFormGroupDetails/index.js +3 -3
  34. package/src/base-client/components/common/XFormTable/SummaryStatCard.vue +205 -0
  35. package/src/base-client/components/common/XFormTable/XFormTable.vue +3 -0
  36. package/src/base-client/components/common/XFormTable/demo.vue +1 -1
  37. package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
  38. package/src/base-client/components/common/XStepView/index.js +3 -3
  39. package/src/base-client/components/common/XStepView/index.md +31 -31
  40. package/src/base-client/components/common/XTable/index.md +255 -255
  41. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  42. package/src/base-client/plugins/Config.js +19 -19
  43. package/src/base-client/plugins/tabs-page-plugin.js +39 -39
  44. package/src/components/Charts/Bar.vue +62 -62
  45. package/src/components/Charts/ChartCard.vue +134 -134
  46. package/src/components/Charts/Liquid.vue +67 -67
  47. package/src/components/Charts/MiniArea.vue +39 -39
  48. package/src/components/Charts/MiniBar.vue +39 -39
  49. package/src/components/Charts/MiniProgress.vue +75 -75
  50. package/src/components/Charts/MiniSmoothArea.vue +40 -40
  51. package/src/components/Charts/Radar.vue +68 -68
  52. package/src/components/Charts/RankList.vue +77 -77
  53. package/src/components/Charts/TagCloud.vue +113 -113
  54. package/src/components/Charts/TransferBar.vue +64 -64
  55. package/src/components/Charts/Trend.vue +82 -82
  56. package/src/components/Charts/chart.less +12 -12
  57. package/src/components/Charts/smooth.area.less +13 -13
  58. package/src/components/NumberInfo/NumberInfo.vue +54 -54
  59. package/src/components/NumberInfo/index.js +3 -3
  60. package/src/components/NumberInfo/index.less +54 -54
  61. package/src/components/NumberInfo/index.md +43 -43
  62. package/src/components/STable/index.js +953 -953
  63. package/src/components/card/ChartCard.vue +79 -79
  64. package/src/components/chart/Bar.vue +60 -60
  65. package/src/components/chart/MiniArea.vue +67 -67
  66. package/src/components/chart/MiniBar.vue +59 -59
  67. package/src/components/chart/MiniProgress.vue +57 -57
  68. package/src/components/chart/Radar.vue +80 -80
  69. package/src/components/chart/RankingList.vue +60 -60
  70. package/src/components/chart/Trend.vue +79 -79
  71. package/src/components/chart/index.less +9 -9
  72. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  73. package/src/components/input/IInput.vue +66 -66
  74. package/src/components/menu/SideMenu.vue +75 -75
  75. package/src/components/menu/menu.js +273 -273
  76. package/src/components/tool/AStepItem.vue +60 -60
  77. package/src/layouts/CommonLayout.vue +56 -56
  78. package/src/lib.js +1 -1
  79. package/src/mock/extend/index.js +84 -84
  80. package/src/mock/goods/index.js +108 -108
  81. package/src/pages/dashboard/workplace/WorkPlace.vue +141 -141
  82. package/src/pages/system/dictionary/index.vue +44 -44
  83. package/src/pages/system/monitor/loginInfor/index.vue +37 -37
  84. package/src/pages/system/monitor/operLog/index.vue +37 -37
  85. package/src/services/api/cas.js +79 -79
  86. package/src/store/modules/setting.js +119 -119
  87. package/src/utils/errorCode.js +6 -6
  88. package/tests/unit/a.log +0 -0
  89. package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
  90. package/.idea/MarsCodeWorkspaceAppSettings.xml +0 -7
  91. package/.idea/google-java-format.xml +0 -6
  92. package/.idea/jsLinters/eslint.xml +0 -6
  93. package/.vscode/settings.json +0 -28
@@ -1,3 +1,3 @@
1
- import XDetailsView from './XDetailsView'
2
-
3
- export default XDetailsView
1
+ import XDetailsView from './XDetailsView'
2
+
3
+ export default XDetailsView
@@ -1,178 +1,178 @@
1
- # XForm
2
-
3
- 动态表单控件,根据JSON配置生成一个完整的动态表单
4
-
5
-
6
- ## 何时使用
7
-
8
- 当需要一个动态生成的表单时
9
-
10
-
11
- 引用方式:
12
-
13
- ```javascript
14
- import XForm from '@vue2-client/base-client/components/XForm/XForm'
15
-
16
- export default {
17
- components: {
18
- XForm
19
- }
20
- }
21
- ```
22
-
23
-
24
-
25
- ## 代码演示
26
-
27
- ```html
28
- <x-form
29
- :json-data="json"
30
- :isExports="true"
31
- @onSubmit="onSubmit">
32
- </x-form>
33
- ```
34
-
35
- ## API
36
-
37
- | 参数 | 说明 | 类型 | 默认值 |
38
- |-----------|--------------------------|---------|------|
39
- | jsonData | JSON配置,根据[工具>查询配置生成]功能生成 | Object | {} |
40
- | isExports | 是否显示导出按钮 | Boolean | true |
41
- | getDataParams | 调用logic获取数据源的追加参数 | Object | - |
42
- | @onSubmit | 表单的提交事件 | event | - |
43
-
44
- ## 例子1
45
- ----
46
- (基础使用)
47
-
48
- ```vue
49
- <template>
50
- <x-form
51
- v-if="loaded"
52
- :json-data="formItemJson"
53
- :isExports="false"
54
- @onSubmit="onSubmit">
55
- </x-form>
56
- </template>
57
-
58
- <script>
59
- import XForm from '@vue2-client/base-client/components/XForm/XForm'
60
-
61
- export default {
62
- components: {
63
- XForm
64
- },
65
- data () {
66
- return {
67
- // 加载查询参数JSON配置文件是否完成
68
- loaded: false,
69
- // 从查询参数JSON配置中得到的生成表单的JSON
70
- formItemJson: undefined,
71
- // 表单
72
- form: {}
73
- }
74
- },
75
- created () {
76
- this.getQueryJson()
77
- },
78
- methods: {
79
- // 加载查询参数JSON配置文件
80
- getQueryJson () {
81
- this.formItemJson = [
82
- {
83
- "name":"燃气公司",
84
- "keyName":"orgList",
85
- "model":"orgName",
86
- "placeholder":"请选择",
87
- "type":"select"
88
- },
89
- {
90
- "name":"用户地址",
91
- "model":"f_address",
92
- "type":"input"
93
- },
94
- {
95
- "name":"指令类型",
96
- "keyName":"指令类型",
97
- "model":"f_instruct_type",
98
- "placeholder":"请选择",
99
- "type":"select"
100
- },
101
- {
102
- "name":"指令说明",
103
- "model":"f_instruct_title",
104
- "placeholder":"请输入指令说明",
105
- "type":"input"
106
- },
107
- {
108
- "name":"指令状态",
109
- "keyName":"指令状态",
110
- "model":"f_instruct_state",
111
- "placeholder":"请选择",
112
- "type":"select"
113
- },
114
- {
115
- "name":"响应结果",
116
- "model":"f_receive_state",
117
- "placeholder":"请输入响应结果",
118
- "type":"input"
119
- },
120
- {
121
- "name":"生成时间",
122
- "model":"f_instruct_date",
123
- "type":"rangePicker"
124
- },
125
- {
126
- "name":"操作人",
127
- "model":"f_inputtor",
128
- "placeholder":"请输入操作人员",
129
- "type":"input"
130
- }
131
- ]
132
- this.loaded = true
133
- },
134
- // 表单提交方法
135
- onSubmit (res) {
136
- // 如果通过校验
137
- if (res.valid) {
138
- // 表单赋值
139
- this.form = res.form
140
- } else {
141
- return false
142
- }
143
- }
144
- }
145
- }
146
- </script>
147
- ```
148
-
149
- 注意事项
150
- ----
151
-
152
- > 本组件已经实现了自适应布局,在不同分辨率下的设备均可得到基本理想的展示效果
153
- >
154
- > 以上示例查询参数配置为后台生成后的结果,此处为了方便调试,所以直接写在了代码中,实际使用请通过发起请求获取查询参数配置,如下:
155
- ```vue
156
- <script>
157
- import { commonApi } from '@vue2-client/base-client/api/common'
158
- import Vue from 'vue'
159
-
160
- export default {
161
- data () {
162
- return {
163
- // 查询配置文件名
164
- queryParamsName: 'instructQueryParams'
165
- }
166
- },
167
- methods: {
168
- getConfig () {
169
- Vue.resetpost(commonApi.getConfig, {str: this.queryParamsName}).then((res) => {
170
- this.formItemJson = res.formJson
171
- this.columnItemJson = res.columnJson
172
- this.loaded = true
173
- })
174
- }
175
- }
176
- }
177
- </script>
178
- ```
1
+ # XForm
2
+
3
+ 动态表单控件,根据JSON配置生成一个完整的动态表单
4
+
5
+
6
+ ## 何时使用
7
+
8
+ 当需要一个动态生成的表单时
9
+
10
+
11
+ 引用方式:
12
+
13
+ ```javascript
14
+ import XForm from '@vue2-client/base-client/components/XForm/XForm'
15
+
16
+ export default {
17
+ components: {
18
+ XForm
19
+ }
20
+ }
21
+ ```
22
+
23
+
24
+
25
+ ## 代码演示
26
+
27
+ ```html
28
+ <x-form
29
+ :json-data="json"
30
+ :isExports="true"
31
+ @onSubmit="onSubmit">
32
+ </x-form>
33
+ ```
34
+
35
+ ## API
36
+
37
+ | 参数 | 说明 | 类型 | 默认值 |
38
+ |-----------|--------------------------|---------|------|
39
+ | jsonData | JSON配置,根据[工具>查询配置生成]功能生成 | Object | {} |
40
+ | isExports | 是否显示导出按钮 | Boolean | true |
41
+ | getDataParams | 调用logic获取数据源的追加参数 | Object | - |
42
+ | @onSubmit | 表单的提交事件 | event | - |
43
+
44
+ ## 例子1
45
+ ----
46
+ (基础使用)
47
+
48
+ ```vue
49
+ <template>
50
+ <x-form
51
+ v-if="loaded"
52
+ :json-data="formItemJson"
53
+ :isExports="false"
54
+ @onSubmit="onSubmit">
55
+ </x-form>
56
+ </template>
57
+
58
+ <script>
59
+ import XForm from '@vue2-client/base-client/components/XForm/XForm'
60
+
61
+ export default {
62
+ components: {
63
+ XForm
64
+ },
65
+ data () {
66
+ return {
67
+ // 加载查询参数JSON配置文件是否完成
68
+ loaded: false,
69
+ // 从查询参数JSON配置中得到的生成表单的JSON
70
+ formItemJson: undefined,
71
+ // 表单
72
+ form: {}
73
+ }
74
+ },
75
+ created () {
76
+ this.getQueryJson()
77
+ },
78
+ methods: {
79
+ // 加载查询参数JSON配置文件
80
+ getQueryJson () {
81
+ this.formItemJson = [
82
+ {
83
+ "name":"燃气公司",
84
+ "keyName":"orgList",
85
+ "model":"orgName",
86
+ "placeholder":"请选择",
87
+ "type":"select"
88
+ },
89
+ {
90
+ "name":"用户地址",
91
+ "model":"f_address",
92
+ "type":"input"
93
+ },
94
+ {
95
+ "name":"指令类型",
96
+ "keyName":"指令类型",
97
+ "model":"f_instruct_type",
98
+ "placeholder":"请选择",
99
+ "type":"select"
100
+ },
101
+ {
102
+ "name":"指令说明",
103
+ "model":"f_instruct_title",
104
+ "placeholder":"请输入指令说明",
105
+ "type":"input"
106
+ },
107
+ {
108
+ "name":"指令状态",
109
+ "keyName":"指令状态",
110
+ "model":"f_instruct_state",
111
+ "placeholder":"请选择",
112
+ "type":"select"
113
+ },
114
+ {
115
+ "name":"响应结果",
116
+ "model":"f_receive_state",
117
+ "placeholder":"请输入响应结果",
118
+ "type":"input"
119
+ },
120
+ {
121
+ "name":"生成时间",
122
+ "model":"f_instruct_date",
123
+ "type":"rangePicker"
124
+ },
125
+ {
126
+ "name":"操作人",
127
+ "model":"f_inputtor",
128
+ "placeholder":"请输入操作人员",
129
+ "type":"input"
130
+ }
131
+ ]
132
+ this.loaded = true
133
+ },
134
+ // 表单提交方法
135
+ onSubmit (res) {
136
+ // 如果通过校验
137
+ if (res.valid) {
138
+ // 表单赋值
139
+ this.form = res.form
140
+ } else {
141
+ return false
142
+ }
143
+ }
144
+ }
145
+ }
146
+ </script>
147
+ ```
148
+
149
+ 注意事项
150
+ ----
151
+
152
+ > 本组件已经实现了自适应布局,在不同分辨率下的设备均可得到基本理想的展示效果
153
+ >
154
+ > 以上示例查询参数配置为后台生成后的结果,此处为了方便调试,所以直接写在了代码中,实际使用请通过发起请求获取查询参数配置,如下:
155
+ ```vue
156
+ <script>
157
+ import { commonApi } from '@vue2-client/base-client/api/common'
158
+ import Vue from 'vue'
159
+
160
+ export default {
161
+ data () {
162
+ return {
163
+ // 查询配置文件名
164
+ queryParamsName: 'instructQueryParams'
165
+ }
166
+ },
167
+ methods: {
168
+ getConfig () {
169
+ Vue.resetpost(commonApi.getConfig, {str: this.queryParamsName}).then((res) => {
170
+ this.formItemJson = res.formJson
171
+ this.columnItemJson = res.columnJson
172
+ this.loaded = true
173
+ })
174
+ }
175
+ }
176
+ }
177
+ </script>
178
+ ```
@@ -1,3 +1,3 @@
1
- import XFormGroupDetails from './XFormGroupDetails'
2
-
3
- export default XFormGroupDetails
1
+ import XFormGroupDetails from './XFormGroupDetails'
2
+
3
+ export default XFormGroupDetails
@@ -0,0 +1,205 @@
1
+ <template>
2
+ <div>
3
+ <template v-if="summaryStatConfig">
4
+ <div v-if="loading" class="summary-stat-loading">加载中...</div>
5
+ <a-row v-else :gutter="16">
6
+ <a-col
7
+ style="margin-bottom: 12px"
8
+ v-for="(item, index) in summaryStatConfig.items"
9
+ :key="index"
10
+ :span="item.span || 6"
11
+ >
12
+ <a-card :body-style="{ padding: '16px' }" class="summary-stat-card">
13
+ <div class="stat-content">
14
+ <div class="stat-icon" :style="getItemIconStyle(item)">
15
+ <a-icon :type="item.icon || 'dashboard'" />
16
+ </div>
17
+ <div class="stat-info">
18
+ <div class="stat-title">{{ item.title }}</div>
19
+ <div class="stat-value" :style="getItemValueStyle(item)">
20
+ <span v-if="item.prefix" class="stat-prefix">{{ item.prefix }}</span>
21
+ <span>{{ getItemFormattedValue(item) }}</span>
22
+ <span v-if="item.suffix" class="stat-suffix">{{ item.suffix }}</span>
23
+ </div>
24
+ </div>
25
+ </div>
26
+ </a-card>
27
+ </a-col>
28
+ </a-row>
29
+ </template>
30
+ </div>
31
+ </template>
32
+
33
+ <script>
34
+ import { runLogic } from '@vue2-client/services/api/common'
35
+
36
+ export default {
37
+ name: 'SummaryStatCard',
38
+ props: {
39
+ serviceName: {
40
+ type: String,
41
+ default: undefined
42
+ },
43
+ summaryStatConfig: {
44
+ type: Object,
45
+ default: process.env.VUE_APP_SYSTEM_NAME
46
+ }
47
+ },
48
+ data() {
49
+ return {
50
+ logicResult: null,
51
+ loading: false,
52
+ error: null
53
+ }
54
+ },
55
+ computed: {
56
+ },
57
+ watch: {
58
+ summaryStatConfig: {
59
+ handler() {
60
+ if (this.summaryStatConfig && this.summaryStatConfig.dataSource) {
61
+ this.fetchLogicData()
62
+ } else {
63
+ this.logicResult = null
64
+ this.error = null
65
+ }
66
+ },
67
+ deep: true,
68
+ immediate: true
69
+ }
70
+ },
71
+ methods: {
72
+ async fetchLogicData() {
73
+ if (!this.summaryStatConfig || !this.summaryStatConfig.dataSource) {
74
+ this.logicResult = null
75
+ return
76
+ }
77
+ this.loading = true
78
+ this.error = null
79
+ try {
80
+ const res = await runLogic(this.summaryStatConfig.dataSource, {}, this.serviceName)
81
+ this.logicResult = res?.data || res
82
+ } catch (e) {
83
+ this.error = e
84
+ this.logicResult = null
85
+ } finally {
86
+ this.loading = false
87
+ }
88
+ },
89
+ getItemValue(item) {
90
+ if (!this.logicResult || !item.dataField) return null
91
+ return this.logicResult[item.dataField]
92
+ },
93
+ getItemFormattedValue(item) {
94
+ const val = this.getItemValue(item)
95
+ if (val === null || val === undefined) return '-'
96
+ const num = Number(val)
97
+ if (isNaN(num)) return val
98
+ if (num >= 10000) {
99
+ return (num / 10000).toFixed(1) + 'w'
100
+ }
101
+ return num.toLocaleString()
102
+ },
103
+ getItemIconStyle(item) {
104
+ const iconSize = item.iconSize || 32
105
+ return {
106
+ width: iconSize + 'px',
107
+ height: iconSize + 'px',
108
+ borderRadius: '8px',
109
+ display: 'flex',
110
+ alignItems: 'center',
111
+ justifyContent: 'center',
112
+ fontSize: (iconSize * 0.6) + 'px',
113
+ backgroundColor: (item.iconColor || '#1890ff') + '20',
114
+ color: item.iconColor || '#1890ff'
115
+ }
116
+ },
117
+ getItemValueStyle(item) {
118
+ return {
119
+ fontSize: (item.fontSize || 24) + 'px',
120
+ color: item.color || '#333333'
121
+ }
122
+ },
123
+ formattedValue() {
124
+ const num = Number(this.value)
125
+ if (isNaN(num)) return this.value
126
+ if (num >= 10000) {
127
+ return (num / 10000).toFixed(1) + 'w'
128
+ }
129
+ return num.toLocaleString()
130
+ },
131
+ iconStyle() {
132
+ const iconSize = this.config.iconSize || 32
133
+ return {
134
+ width: iconSize + 'px',
135
+ height: iconSize + 'px',
136
+ borderRadius: '8px',
137
+ display: 'flex',
138
+ alignItems: 'center',
139
+ justifyContent: 'center',
140
+ fontSize: (iconSize * 0.6) + 'px',
141
+ backgroundColor: this.config.iconColor + '20',
142
+ color: this.config.iconColor
143
+ }
144
+ },
145
+ valueStyle() {
146
+ return {
147
+ fontSize: (this.config.fontSize || 24) + 'px',
148
+ color: this.config.color || '#333333'
149
+ }
150
+ }
151
+ }
152
+ }
153
+ </script>
154
+
155
+ <style scoped lang="less">
156
+ .summary-stat-card {
157
+ border-radius: 8px;
158
+ transition: box-shadow 0.3s;
159
+
160
+ &:hover {
161
+ box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
162
+ }
163
+
164
+ .stat-content {
165
+ display: flex;
166
+ align-items: center;
167
+ gap: 16px;
168
+ }
169
+
170
+ .stat-info {
171
+ flex: 1;
172
+ min-width: 0;
173
+ }
174
+
175
+ .stat-title {
176
+ font-size: 14px;
177
+ color: #8c8c8c;
178
+ margin-bottom: 4px;
179
+ white-space: nowrap;
180
+ overflow: hidden;
181
+ text-overflow: ellipsis;
182
+ }
183
+
184
+ .stat-value {
185
+ font-weight: 600;
186
+ line-height: 1.2;
187
+ display: flex;
188
+ align-items: baseline;
189
+ gap: 2px;
190
+ }
191
+
192
+ .stat-prefix,
193
+ .stat-suffix {
194
+ font-size: 14px;
195
+ font-weight: normal;
196
+ }
197
+ }
198
+
199
+ .summary-stat-loading,
200
+ .summary-stat-error {
201
+ padding: 16px;
202
+ text-align: center;
203
+ color: #999;
204
+ }
205
+ </style>
@@ -15,6 +15,7 @@
15
15
  <a-row style="height: 12px" v-if="xTreeConfigName"></a-row>
16
16
  <div v-show="!loading">
17
17
  <template v-if="!loadError">
18
+ <SummaryStatCard v-if="realQueryConfig.summaryStatConfig" :summaryStatConfig="realQueryConfig.summaryStatConfig" :serviceName="serviceName" />
18
19
  <x-add-form
19
20
  ref="xAddForm"
20
21
  @onLocalSubmit="onLocalSubmit"
@@ -222,10 +223,12 @@ import { executeStrFunctionByContext } from '@vue2-client/utils/runEvalFunction'
222
223
  import { getRealKeyData } from '@vue2-client/utils/util'
223
224
  import * as util from '@vue2-client/utils/util'
224
225
  import UserInfoDetailManage from '@vue2-client/pages/userInfoDetailManage/index.vue'
226
+ import SummaryStatCard from '@/base-client/components/common/XFormTable/SummaryStatCard.vue'
225
227
 
226
228
  export default {
227
229
  name: 'XFormTable',
228
230
  components: {
231
+ SummaryStatCard,
229
232
  UserInfoDetailManage,
230
233
  XTreePro,
231
234
  XTable,
@@ -30,7 +30,7 @@ export default {
30
30
  data() {
31
31
  return {
32
32
  // 查询配置文件名
33
- queryParamsName: 'UserFilesListCRUD',
33
+ queryParamsName: 'Test01CRUD',
34
34
  // 查询配置左侧tree
35
35
  xTreeConfigName: 'addressType',
36
36
  // 新增表单固定值