vue2-client 1.20.19 → 1.20.21

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 (86) hide show
  1. package/.claude/settings.local.json +30 -30
  2. package/.eslintrc.js +74 -74
  3. package/Components.md +60 -60
  4. package/index.js +31 -31
  5. package/jest-transform-stub.js +8 -8
  6. package/jest.setup.js +7 -7
  7. package/package.json +1 -1
  8. package/src/assets/img/querySlotDemo.svg +15 -15
  9. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
  10. package/src/base-client/components/common/CitySelect/index.js +3 -3
  11. package/src/base-client/components/common/CitySelect/index.md +109 -109
  12. package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
  13. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  14. package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
  15. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  16. package/src/base-client/components/common/Tree/Tree.vue +149 -149
  17. package/src/base-client/components/common/Tree/index.js +2 -2
  18. package/src/base-client/components/common/Upload/index.js +3 -3
  19. package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
  20. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  21. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
  22. package/src/base-client/components/common/XDataDrawer/index.js +3 -3
  23. package/src/base-client/components/common/XDataDrawer/index.md +41 -41
  24. package/src/base-client/components/common/XDescriptions/XDescriptionsGroup.vue +671 -671
  25. package/src/base-client/components/common/XDescriptions/index.js +3 -3
  26. package/src/base-client/components/common/XDescriptions/index.md +382 -382
  27. package/src/base-client/components/common/XForm/index.md +178 -178
  28. package/src/base-client/components/common/XFormTable/XFormTable.vue +8 -0
  29. package/src/base-client/components/common/XFormTable/demo.vue +79 -37
  30. package/src/base-client/components/common/XInspectionDetailDrawer/components/CheckItems.vue +42 -17
  31. package/src/base-client/components/common/XInspectionDetailDrawer/components/HazardPhotos.vue +48 -19
  32. package/src/base-client/components/common/XInspectionDetailDrawer/services/inspectionService.js +5 -3
  33. package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
  34. package/src/base-client/components/common/XStepView/index.js +3 -3
  35. package/src/base-client/components/common/XStepView/index.md +31 -31
  36. package/src/base-client/components/common/XTable/XTable.vue +20 -0
  37. package/src/base-client/components/common/XTable/index.md +255 -255
  38. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  39. package/src/base-client/plugins/Config.js +19 -19
  40. package/src/base-client/plugins/tabs-page-plugin.js +39 -39
  41. package/src/components/Charts/Bar.vue +62 -62
  42. package/src/components/Charts/ChartCard.vue +134 -134
  43. package/src/components/Charts/Liquid.vue +67 -67
  44. package/src/components/Charts/MiniArea.vue +39 -39
  45. package/src/components/Charts/MiniBar.vue +39 -39
  46. package/src/components/Charts/MiniProgress.vue +75 -75
  47. package/src/components/Charts/MiniSmoothArea.vue +40 -40
  48. package/src/components/Charts/Radar.vue +68 -68
  49. package/src/components/Charts/RankList.vue +77 -77
  50. package/src/components/Charts/TagCloud.vue +113 -113
  51. package/src/components/Charts/TransferBar.vue +64 -64
  52. package/src/components/Charts/Trend.vue +82 -82
  53. package/src/components/Charts/chart.less +12 -12
  54. package/src/components/Charts/smooth.area.less +13 -13
  55. package/src/components/NumberInfo/NumberInfo.vue +54 -54
  56. package/src/components/NumberInfo/index.js +3 -3
  57. package/src/components/NumberInfo/index.less +54 -54
  58. package/src/components/NumberInfo/index.md +43 -43
  59. package/src/components/card/ChartCard.vue +79 -79
  60. package/src/components/chart/Bar.vue +60 -60
  61. package/src/components/chart/MiniArea.vue +67 -67
  62. package/src/components/chart/MiniBar.vue +59 -59
  63. package/src/components/chart/MiniProgress.vue +57 -57
  64. package/src/components/chart/Radar.vue +80 -80
  65. package/src/components/chart/RankingList.vue +60 -60
  66. package/src/components/chart/Trend.vue +79 -79
  67. package/src/components/chart/index.less +9 -9
  68. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  69. package/src/components/input/IInput.vue +66 -66
  70. package/src/components/menu/SideMenu.vue +75 -75
  71. package/src/components/menu/menu.js +273 -273
  72. package/src/components/tool/AStepItem.vue +60 -60
  73. package/src/layouts/CommonLayout.vue +56 -56
  74. package/src/lib.js +1 -1
  75. package/src/mock/extend/index.js +84 -84
  76. package/src/mock/goods/index.js +108 -108
  77. package/src/pages/WorkflowDetail/WorkFlowDemo4.vue +127 -0
  78. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowBaseInformation.vue +417 -417
  79. package/src/pages/dashboard/workplace/WorkPlace.vue +141 -141
  80. package/src/pages/system/dictionary/index.vue +44 -44
  81. package/src/pages/system/monitor/loginInfor/index.vue +37 -37
  82. package/src/pages/system/monitor/operLog/index.vue +37 -37
  83. package/src/services/api/cas.js +79 -79
  84. package/src/store/modules/setting.js +119 -119
  85. package/src/utils/errorCode.js +6 -6
  86. package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
@@ -1,232 +1,232 @@
1
- <template>
2
- <a-drawer
3
- title="字典详情"
4
- placement="right"
5
- :width="isMobile ? screenWidth : screenWidth * 0.85"
6
- :visible="visible"
7
- @close="onClose"
8
- >
9
- <a-spin :spinning="loadDetails">
10
- <a-page-header
11
- :title="'字典名称:' + details.f_name"
12
- >
13
- <div class="row">
14
- <div class="content">
15
- <a-descriptions size="small" :column="isMobile ? 1 : 2">
16
- <a-descriptions-item label="字典编号">{{ details.id }}</a-descriptions-item>
17
- <a-descriptions-item label="字典键">{{ details.f_key }}</a-descriptions-item>
18
- <a-descriptions-item label="备注">{{ details.f_remark }}</a-descriptions-item>
19
- <a-descriptions-item label="创建时间">{{ format(details.f_input_date) }}</a-descriptions-item>
20
- </a-descriptions>
21
- </div>
22
- <div class="extra">
23
- <a-row class="status-list">
24
- <a-col :xs="12" :sm="24">
25
- </a-col>
26
- </a-row>
27
- </div>
28
- </div>
29
- <!-- actions -->
30
- <template #extra>
31
- <a-button-group style="margin-right: 4px;">
32
- <a-button type="dashed" @click="initView" :loading="loadDetails">刷新</a-button>
33
- </a-button-group>
34
- </template>
35
- <template slot="footer">
36
- <a-tabs :default-active-key="tabActiveKey" :activeKey="tabActiveKey" @change="handleTabChange" style="margin-bottom: 23px;">
37
- <template v-for="value in tabList">
38
- <a-tab-pane :key="value.key" :tab="value.tab"/>
39
- </template>
40
- </a-tabs>
41
- <div v-if="!loadDetails">
42
- <template v-if="tabActiveKey === '1'">
43
- <x-form-table
44
- title="字典数据配置"
45
- :fixed-add-form="fixedAddForm"
46
- :fixed-query-form="fixedQueryForm"
47
- serviceName="af-system"
48
- queryParamsName="crud_dictionary_value_manage"
49
- @afterSubmit="afterSubmit"
50
- >
51
- </x-form-table>
52
- </template>
53
- </div>
54
- </template>
55
- </a-page-header>
56
- </a-spin>
57
- </a-drawer>
58
- </template>
59
-
60
- <script>
61
- import { DictionaryDetailsViewApi, post } from '@vue2-client/services/api'
62
- import { mapState } from 'vuex'
63
- import { formatDate } from '@vue2-client/utils/util'
64
- import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable'
65
-
66
- export default {
67
- name: 'DictionaryDetailsView',
68
- components: {
69
- XFormTable
70
- },
71
- data () {
72
- return {
73
- // 页面宽度
74
- screenWidth: document.documentElement.clientWidth,
75
- // Tab页签
76
- tabActiveKey: '1',
77
- // 字典详情
78
- details: {
79
- id: 0,
80
- f_name: '',
81
- f_key: '',
82
- f_remark: '',
83
- f_input_date: '',
84
- f_state: 0
85
- },
86
- tabList: [
87
- { key: '1', tab: '字典数据' }
88
- ],
89
- // 固定新增数据
90
- fixedAddForm: {},
91
- // 固定查询数据
92
- fixedQueryForm: {},
93
- // 详情加载
94
- loadDetails: true
95
- }
96
- },
97
- mounted () {
98
- this.initView()
99
- },
100
- computed: {
101
- ...mapState('account', { currUser: 'user' }),
102
- ...mapState('setting', ['isMobile'])
103
- },
104
- props: {
105
- id: {
106
- type: String,
107
- required: true
108
- },
109
- visible: {
110
- type: Boolean,
111
- default: false
112
- }
113
- },
114
- methods: {
115
- // 初始化组件
116
- initView () {
117
- this.tabActiveKey = '1'
118
- this.fixedQueryForm.v_f_dictionary_id = this.id
119
- this.fixedAddForm.v_f_dictionary_id = this.id
120
- this.getDetails(this.id)
121
- },
122
- onClose () {
123
- this.$emit('update:visible', false)
124
- },
125
- // 获取详情信息
126
- getDetails (userId) {
127
- this.loadDetails = true
128
- return post(DictionaryDetailsViewApi.getDictionaryDetails, {
129
- id: userId
130
- })
131
- .then(res => {
132
- this.details = res
133
- this.loadDetails = false
134
- }, err => {
135
- this.loadDetails = false
136
- console.error(err)
137
- })
138
- },
139
- // Tab切换
140
- handleTabChange (key) {
141
- this.tabActiveKey = key
142
- },
143
- // 日期格式化
144
- format (date, format) {
145
- return formatDate(date, format)
146
- },
147
- afterSubmit () {
148
- this.$appdata.load()
149
- }
150
- },
151
- watch: {
152
- 'visible' (val) {
153
- if (val) {
154
- this.initView()
155
- }
156
- }
157
- }
158
- }
159
- </script>
160
-
161
- <style lang="less" scoped>
162
- .business {
163
- color: #ffffff;
164
- }
165
- .business:enabled:hover {
166
- background-color: #85CE61 !important;
167
- border-color: #85CE61 !important;
168
- }
169
- .business:enabled {
170
- background-color: #67c23a;
171
- border-color: #67c23a;
172
- }
173
- .business:disabled {
174
- color: rgba(0, 0, 0, 0.25);
175
- }
176
- .detail-layout {
177
- margin-left: 44px;
178
- }
179
- .text {
180
- color: rgba(0, 0, 0, .45);
181
- }
182
-
183
- .heading {
184
- color: rgba(0, 0, 0, .85);
185
- font-size: 20px;
186
- }
187
-
188
- .no-data {
189
- color: rgba(0, 0, 0, .25);
190
- text-align: center;
191
- line-height: 64px;
192
- font-size: 16px;
193
-
194
- i {
195
- font-size: 24px;
196
- margin-right: 16px;
197
- position: relative;
198
- top: 3px;
199
- }
200
- }
201
-
202
- .mobile {
203
- .detail-layout {
204
- margin-left: unset;
205
- }
206
- .text {
207
-
208
- }
209
- .status-list {
210
- text-align: left;
211
- }
212
- }
213
-
214
- .row {
215
- display: flex;
216
-
217
- .content {
218
- -webkit-box-flex: 1;
219
- flex: auto;
220
- -ms-flex: auto;
221
- }
222
-
223
- .extra {
224
- flex: 0 1 auto;
225
- -webkit-box-flex: 0;
226
- -ms-flex: 0 1 auto;
227
- min-width: 242px;
228
- margin-left: 88px;
229
- text-align: right;
230
- }
231
- }
232
- </style>
1
+ <template>
2
+ <a-drawer
3
+ title="字典详情"
4
+ placement="right"
5
+ :width="isMobile ? screenWidth : screenWidth * 0.85"
6
+ :visible="visible"
7
+ @close="onClose"
8
+ >
9
+ <a-spin :spinning="loadDetails">
10
+ <a-page-header
11
+ :title="'字典名称:' + details.f_name"
12
+ >
13
+ <div class="row">
14
+ <div class="content">
15
+ <a-descriptions size="small" :column="isMobile ? 1 : 2">
16
+ <a-descriptions-item label="字典编号">{{ details.id }}</a-descriptions-item>
17
+ <a-descriptions-item label="字典键">{{ details.f_key }}</a-descriptions-item>
18
+ <a-descriptions-item label="备注">{{ details.f_remark }}</a-descriptions-item>
19
+ <a-descriptions-item label="创建时间">{{ format(details.f_input_date) }}</a-descriptions-item>
20
+ </a-descriptions>
21
+ </div>
22
+ <div class="extra">
23
+ <a-row class="status-list">
24
+ <a-col :xs="12" :sm="24">
25
+ </a-col>
26
+ </a-row>
27
+ </div>
28
+ </div>
29
+ <!-- actions -->
30
+ <template #extra>
31
+ <a-button-group style="margin-right: 4px;">
32
+ <a-button type="dashed" @click="initView" :loading="loadDetails">刷新</a-button>
33
+ </a-button-group>
34
+ </template>
35
+ <template slot="footer">
36
+ <a-tabs :default-active-key="tabActiveKey" :activeKey="tabActiveKey" @change="handleTabChange" style="margin-bottom: 23px;">
37
+ <template v-for="value in tabList">
38
+ <a-tab-pane :key="value.key" :tab="value.tab"/>
39
+ </template>
40
+ </a-tabs>
41
+ <div v-if="!loadDetails">
42
+ <template v-if="tabActiveKey === '1'">
43
+ <x-form-table
44
+ title="字典数据配置"
45
+ :fixed-add-form="fixedAddForm"
46
+ :fixed-query-form="fixedQueryForm"
47
+ serviceName="af-system"
48
+ queryParamsName="crud_dictionary_value_manage"
49
+ @afterSubmit="afterSubmit"
50
+ >
51
+ </x-form-table>
52
+ </template>
53
+ </div>
54
+ </template>
55
+ </a-page-header>
56
+ </a-spin>
57
+ </a-drawer>
58
+ </template>
59
+
60
+ <script>
61
+ import { DictionaryDetailsViewApi, post } from '@vue2-client/services/api'
62
+ import { mapState } from 'vuex'
63
+ import { formatDate } from '@vue2-client/utils/util'
64
+ import XFormTable from '@vue2-client/base-client/components/common/XFormTable/XFormTable'
65
+
66
+ export default {
67
+ name: 'DictionaryDetailsView',
68
+ components: {
69
+ XFormTable
70
+ },
71
+ data () {
72
+ return {
73
+ // 页面宽度
74
+ screenWidth: document.documentElement.clientWidth,
75
+ // Tab页签
76
+ tabActiveKey: '1',
77
+ // 字典详情
78
+ details: {
79
+ id: 0,
80
+ f_name: '',
81
+ f_key: '',
82
+ f_remark: '',
83
+ f_input_date: '',
84
+ f_state: 0
85
+ },
86
+ tabList: [
87
+ { key: '1', tab: '字典数据' }
88
+ ],
89
+ // 固定新增数据
90
+ fixedAddForm: {},
91
+ // 固定查询数据
92
+ fixedQueryForm: {},
93
+ // 详情加载
94
+ loadDetails: true
95
+ }
96
+ },
97
+ mounted () {
98
+ this.initView()
99
+ },
100
+ computed: {
101
+ ...mapState('account', { currUser: 'user' }),
102
+ ...mapState('setting', ['isMobile'])
103
+ },
104
+ props: {
105
+ id: {
106
+ type: String,
107
+ required: true
108
+ },
109
+ visible: {
110
+ type: Boolean,
111
+ default: false
112
+ }
113
+ },
114
+ methods: {
115
+ // 初始化组件
116
+ initView () {
117
+ this.tabActiveKey = '1'
118
+ this.fixedQueryForm.v_f_dictionary_id = this.id
119
+ this.fixedAddForm.v_f_dictionary_id = this.id
120
+ this.getDetails(this.id)
121
+ },
122
+ onClose () {
123
+ this.$emit('update:visible', false)
124
+ },
125
+ // 获取详情信息
126
+ getDetails (userId) {
127
+ this.loadDetails = true
128
+ return post(DictionaryDetailsViewApi.getDictionaryDetails, {
129
+ id: userId
130
+ })
131
+ .then(res => {
132
+ this.details = res
133
+ this.loadDetails = false
134
+ }, err => {
135
+ this.loadDetails = false
136
+ console.error(err)
137
+ })
138
+ },
139
+ // Tab切换
140
+ handleTabChange (key) {
141
+ this.tabActiveKey = key
142
+ },
143
+ // 日期格式化
144
+ format (date, format) {
145
+ return formatDate(date, format)
146
+ },
147
+ afterSubmit () {
148
+ this.$appdata.load()
149
+ }
150
+ },
151
+ watch: {
152
+ 'visible' (val) {
153
+ if (val) {
154
+ this.initView()
155
+ }
156
+ }
157
+ }
158
+ }
159
+ </script>
160
+
161
+ <style lang="less" scoped>
162
+ .business {
163
+ color: #ffffff;
164
+ }
165
+ .business:enabled:hover {
166
+ background-color: #85CE61 !important;
167
+ border-color: #85CE61 !important;
168
+ }
169
+ .business:enabled {
170
+ background-color: #67c23a;
171
+ border-color: #67c23a;
172
+ }
173
+ .business:disabled {
174
+ color: rgba(0, 0, 0, 0.25);
175
+ }
176
+ .detail-layout {
177
+ margin-left: 44px;
178
+ }
179
+ .text {
180
+ color: rgba(0, 0, 0, .45);
181
+ }
182
+
183
+ .heading {
184
+ color: rgba(0, 0, 0, .85);
185
+ font-size: 20px;
186
+ }
187
+
188
+ .no-data {
189
+ color: rgba(0, 0, 0, .25);
190
+ text-align: center;
191
+ line-height: 64px;
192
+ font-size: 16px;
193
+
194
+ i {
195
+ font-size: 24px;
196
+ margin-right: 16px;
197
+ position: relative;
198
+ top: 3px;
199
+ }
200
+ }
201
+
202
+ .mobile {
203
+ .detail-layout {
204
+ margin-left: unset;
205
+ }
206
+ .text {
207
+
208
+ }
209
+ .status-list {
210
+ text-align: left;
211
+ }
212
+ }
213
+
214
+ .row {
215
+ display: flex;
216
+
217
+ .content {
218
+ -webkit-box-flex: 1;
219
+ flex: auto;
220
+ -ms-flex: auto;
221
+ }
222
+
223
+ .extra {
224
+ flex: 0 1 auto;
225
+ -webkit-box-flex: 0;
226
+ -ms-flex: 0 1 auto;
227
+ min-width: 242px;
228
+ margin-left: 88px;
229
+ text-align: right;
230
+ }
231
+ }
232
+ </style>
@@ -1,19 +1,19 @@
1
- const asyncReady = async function (vm, name) {
2
- // 获取配置信息
3
- try {
4
- const res = await vm.$resetget('/rs/vue/' + name + '.json', { resolveMsg: null, rejectMsg: null })
5
- Object.assign(vm.config, res)
6
- } catch (error) {
7
- // 忽略704,文件找不到异常
8
- if (error.status !== 704) {
9
- throw error
10
- }
11
- }
12
- }
13
- export default {
14
- install (Vue) {
15
- Vue.getConfig = Vue.prototype.$getConfig = function (vm, name) {
16
- return asyncReady(vm, name)
17
- }
18
- }
19
- }
1
+ const asyncReady = async function (vm, name) {
2
+ // 获取配置信息
3
+ try {
4
+ const res = await vm.$resetget('/rs/vue/' + name + '.json', { resolveMsg: null, rejectMsg: null })
5
+ Object.assign(vm.config, res)
6
+ } catch (error) {
7
+ // 忽略704,文件找不到异常
8
+ if (error.status !== 704) {
9
+ throw error
10
+ }
11
+ }
12
+ }
13
+ export default {
14
+ install (Vue) {
15
+ Vue.getConfig = Vue.prototype.$getConfig = function (vm, name) {
16
+ return asyncReady(vm, name)
17
+ }
18
+ }
19
+ }
@@ -1,39 +1,39 @@
1
- const TabsPagePlugin = {
2
- install (Vue) {
3
- Vue.mixin({
4
- methods: {
5
- $closePage (closeRoute, nextRoute) {
6
- const event = new CustomEvent('page:close', { detail: { closeRoute, nextRoute } })
7
- window.dispatchEvent(event)
8
- },
9
- $refreshPage (route) {
10
- const path = typeof route === 'object' ? route.path : route
11
- const event = new CustomEvent('page:refresh', { detail: { pageKey: path } })
12
- window.dispatchEvent(event)
13
- },
14
- $openPage (route, title) {
15
- this.$setPageTitle(route, title)
16
- this.$router.push(route)
17
- },
18
- $setPageTitle (route, title) {
19
- if (title) {
20
- // let path = typeof route === 'object' ? route.path : route
21
- // path = path && path.split('?')[0]
22
- const path = typeof route === 'object' ? this.$router.resolve(route).route.fullPath : route
23
- this.$store.commit('setting/setCustomTitle', { path, title })
24
- }
25
- }
26
- },
27
- computed: {
28
- customTitle () {
29
- const customTitles = this.$store.state.setting.customTitles
30
- // const path = this.$route.path.split('?')[0]
31
- const custom = customTitles.find(item => item.path === this.$route.fullPath)
32
- return custom && custom.title
33
- }
34
- }
35
- })
36
- }
37
- }
38
-
39
- export default TabsPagePlugin
1
+ const TabsPagePlugin = {
2
+ install (Vue) {
3
+ Vue.mixin({
4
+ methods: {
5
+ $closePage (closeRoute, nextRoute) {
6
+ const event = new CustomEvent('page:close', { detail: { closeRoute, nextRoute } })
7
+ window.dispatchEvent(event)
8
+ },
9
+ $refreshPage (route) {
10
+ const path = typeof route === 'object' ? route.path : route
11
+ const event = new CustomEvent('page:refresh', { detail: { pageKey: path } })
12
+ window.dispatchEvent(event)
13
+ },
14
+ $openPage (route, title) {
15
+ this.$setPageTitle(route, title)
16
+ this.$router.push(route)
17
+ },
18
+ $setPageTitle (route, title) {
19
+ if (title) {
20
+ // let path = typeof route === 'object' ? route.path : route
21
+ // path = path && path.split('?')[0]
22
+ const path = typeof route === 'object' ? this.$router.resolve(route).route.fullPath : route
23
+ this.$store.commit('setting/setCustomTitle', { path, title })
24
+ }
25
+ }
26
+ },
27
+ computed: {
28
+ customTitle () {
29
+ const customTitles = this.$store.state.setting.customTitles
30
+ // const path = this.$route.path.split('?')[0]
31
+ const custom = customTitles.find(item => item.path === this.$route.fullPath)
32
+ return custom && custom.title
33
+ }
34
+ }
35
+ })
36
+ }
37
+ }
38
+
39
+ export default TabsPagePlugin