vue2-client 1.8.310 → 1.8.311

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 (215) hide show
  1. package/.env +19 -19
  2. package/.eslintrc.js +90 -90
  3. package/CHANGELOG.md +824 -824
  4. package/Components.md +60 -60
  5. package/babel.config.js +21 -21
  6. package/docs/LowCode/lowcode.md +155 -155
  7. package/docs/LowCode/lowcodeForDeveloper.md +230 -230
  8. package/docs/index.md +30 -30
  9. package/index.js +31 -31
  10. package/jest-transform-stub.js +8 -8
  11. package/jest.config.js +21 -21
  12. package/jest.setup.js +7 -7
  13. package/package.json +97 -97
  14. package/public/index.html +27 -27
  15. package/src/App.vue +188 -188
  16. package/src/ReportView.js +19 -19
  17. package/src/assets/img/querySlotDemo.svg +15 -15
  18. package/src/assets/svg/badtwo.svg +1 -1
  19. package/src/assets/svg/goodtwo.svg +1 -1
  20. package/src/base-client/components/common/AMisRender/index.js +3 -3
  21. package/src/base-client/components/common/AMisRender/index.vue +263 -263
  22. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +438 -416
  23. package/src/base-client/components/common/AddressSearchCombobox/demo.vue +36 -36
  24. package/src/base-client/components/common/AddressSearchCombobox/ic_map.svg +6 -6
  25. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
  26. package/src/base-client/components/common/CitySelect/CitySelect.vue +342 -342
  27. package/src/base-client/components/common/CitySelect/index.js +3 -3
  28. package/src/base-client/components/common/CitySelect/index.md +109 -109
  29. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +669 -669
  30. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +1014 -1014
  31. package/src/base-client/components/common/CreateQuery/index.js +3 -3
  32. package/src/base-client/components/common/CreateQuery/index.md +42 -42
  33. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +452 -452
  34. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +511 -511
  35. package/src/base-client/components/common/CreateSimpleFormQuery/index.js +3 -3
  36. package/src/base-client/components/common/CreateSimpleFormQuery/index.md +42 -42
  37. package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +149 -149
  38. package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
  39. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  40. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +166 -166
  41. package/src/base-client/components/common/FormGroupQuery/index.js +3 -3
  42. package/src/base-client/components/common/FormGroupQuery/index.md +43 -43
  43. package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
  44. package/src/base-client/components/common/LowCodeComponent/LowCodeEditorModal.vue +108 -108
  45. package/src/base-client/components/common/LowCodeComponent/LowCodeEditorPanel.vue +350 -350
  46. package/src/base-client/components/common/LowCodeComponent/LowCodePageOrganization.vue +502 -502
  47. package/src/base-client/components/common/LowCodeComponent/LowCodeRender.vue +699 -699
  48. package/src/base-client/components/common/LowCodeComponent/LowCodeRenderEnter.vue +29 -29
  49. package/src/base-client/components/common/LowCodeComponent/LowCodeUIStore.vue +162 -162
  50. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeAddPageModal.vue +117 -117
  51. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeCustomJSModal.vue +80 -80
  52. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeEventEditorModal.vue +398 -398
  53. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLifeCycleModal.vue +65 -65
  54. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLogicCallbackModal.vue +64 -64
  55. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLogicParamModal.vue +73 -73
  56. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeRunFunctionParamModal.vue +76 -76
  57. package/src/base-client/components/common/PersonSetting/PersonSetting.vue +208 -208
  58. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  59. package/src/base-client/components/common/Tree/Tree.vue +149 -149
  60. package/src/base-client/components/common/Tree/index.js +2 -2
  61. package/src/base-client/components/common/Upload/Upload.vue +239 -239
  62. package/src/base-client/components/common/Upload/index.js +3 -3
  63. package/src/base-client/components/common/XAddForm/XAddForm.vue +105 -105
  64. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +807 -807
  65. package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
  66. package/src/base-client/components/common/XAddNativeForm/lowcodeEditorRegister.js +16 -16
  67. package/src/base-client/components/common/XAddNativeFormOA/XAddNativeFormOA.vue +303 -303
  68. package/src/base-client/components/common/XAddNativeFormOA/index.js +3 -3
  69. package/src/base-client/components/common/XAddNativeFormOA/index.md +146 -146
  70. package/src/base-client/components/common/XBadge/XBadge.vue +78 -78
  71. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  72. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
  73. package/src/base-client/components/common/XDataDrawer/index.js +3 -3
  74. package/src/base-client/components/common/XDataDrawer/index.md +41 -41
  75. package/src/base-client/components/common/XDescriptions/XDescriptions.vue +187 -187
  76. package/src/base-client/components/common/XDescriptions/XDescriptionsGroup.vue +306 -306
  77. package/src/base-client/components/common/XDescriptions/demo.vue +50 -50
  78. package/src/base-client/components/common/XDescriptions/index.js +3 -3
  79. package/src/base-client/components/common/XDescriptions/index.md +83 -83
  80. package/src/base-client/components/common/XDescriptions/lowcodeEditorRegister.js +31 -31
  81. package/src/base-client/components/common/XDetailsView/XDetailsView.vue +214 -214
  82. package/src/base-client/components/common/XDetailsView/index.js +3 -3
  83. package/src/base-client/components/common/XForm/XForm.vue +294 -294
  84. package/src/base-client/components/common/XForm/XFormItem.vue +911 -911
  85. package/src/base-client/components/common/XForm/XTreeSelect.vue +207 -207
  86. package/src/base-client/components/common/XForm/index.md +178 -178
  87. package/src/base-client/components/common/XFormCol/XFormCol.vue +36 -36
  88. package/src/base-client/components/common/XFormGroup/XFormGroup.vue +241 -241
  89. package/src/base-client/components/common/XFormGroup/demo.vue +40 -40
  90. package/src/base-client/components/common/XFormGroup/index.js +3 -3
  91. package/src/base-client/components/common/XFormGroup/index.md +38 -38
  92. package/src/base-client/components/common/XFormGroupDetails/XFormGroupDetails.vue +72 -72
  93. package/src/base-client/components/common/XFormGroupDetails/index.js +3 -3
  94. package/src/base-client/components/common/XFormTable/XFormTable.vue +539 -539
  95. package/src/base-client/components/common/XFormTable/demo.vue +72 -72
  96. package/src/base-client/components/common/XFormTable/index.md +98 -98
  97. package/src/base-client/components/common/XFormTable/lowcodeEditorRegister.js +30 -30
  98. package/src/base-client/components/common/XImportExcel/XImportExcel.vue +147 -147
  99. package/src/base-client/components/common/XReport/XReport.vue +858 -858
  100. package/src/base-client/components/common/XReport/XReportDemo.vue +266 -266
  101. package/src/base-client/components/common/XReport/XReportDesign.vue +509 -509
  102. package/src/base-client/components/common/XReport/XReportJsonRender.vue +295 -295
  103. package/src/base-client/components/common/XReport/XReportTrGroup.vue +801 -801
  104. package/src/base-client/components/common/XReport/index.js +3 -3
  105. package/src/base-client/components/common/XReport/index.md +44 -44
  106. package/src/base-client/components/common/XReportSlot/XReportSlot.vue +110 -110
  107. package/src/base-client/components/common/XReportSlot/index.js +3 -3
  108. package/src/base-client/components/common/XReportSlot/index.md +48 -48
  109. package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
  110. package/src/base-client/components/common/XStepView/index.js +3 -3
  111. package/src/base-client/components/common/XStepView/index.md +31 -31
  112. package/src/base-client/components/common/XTable/XTable.vue +676 -676
  113. package/src/base-client/components/common/XTable/index.md +255 -255
  114. package/src/base-client/components/common/XTree/XTree.vue +423 -423
  115. package/src/base-client/components/common/XTree/index.js +3 -3
  116. package/src/base-client/components/common/XTree/index.md +36 -36
  117. package/src/base-client/components/common/XTreeOne/XTreeOne.vue +114 -114
  118. package/src/base-client/components/common/XTreeOne/lowcodeEditorRegister.js +11 -11
  119. package/src/base-client/components/index.js +51 -51
  120. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  121. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -281
  122. package/src/base-client/plugins/AppData.js +121 -121
  123. package/src/base-client/plugins/Config.js +19 -19
  124. package/src/base-client/plugins/GetLoginInfoService.js +183 -183
  125. package/src/base-client/plugins/tabs-page-plugin.js +39 -39
  126. package/src/bootstrap.js +39 -39
  127. package/src/components/FilePreview/FilePreview.vue +166 -166
  128. package/src/components/NumberInfo/NumberInfo.vue +54 -54
  129. package/src/components/STable/index.js +361 -361
  130. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  131. package/src/components/checkbox/ImgCheckbox.vue +163 -163
  132. package/src/components/menu/SideMenu.vue +75 -75
  133. package/src/components/menu/menu.js +273 -273
  134. package/src/components/tool/AStepItem.vue +60 -60
  135. package/src/config/default/antd.config.js +89 -89
  136. package/src/config/default/setting.config.js +55 -55
  137. package/src/font-style/font.css +4 -4
  138. package/src/layouts/CommonLayout.vue +56 -56
  139. package/src/layouts/PageLayout.vue +151 -151
  140. package/src/layouts/SinglePageView.vue +138 -138
  141. package/src/layouts/header/AdminHeader.vue +132 -132
  142. package/src/layouts/header/HeaderNotice.vue +177 -177
  143. package/src/layouts/tabs/TabsHead.vue +189 -189
  144. package/src/layouts/tabs/TabsView.vue +387 -387
  145. package/src/lib.js +1 -1
  146. package/src/main.js +26 -26
  147. package/src/mock/extend/index.js +84 -84
  148. package/src/mock/goods/index.js +108 -108
  149. package/src/pages/AMisDemo/AMisDemo.vue +325 -325
  150. package/src/pages/AMisDemo/AMisDemo2.vue +74 -74
  151. package/src/pages/DynamicStatistics/ChartSelector.vue +331 -331
  152. package/src/pages/DynamicStatistics/DataTabs.vue +83 -83
  153. package/src/pages/DynamicStatistics/DynamicTable.vue +128 -128
  154. package/src/pages/DynamicStatistics/EvaluationArea.vue +69 -69
  155. package/src/pages/DynamicStatistics/FavoriteList.vue +51 -51
  156. package/src/pages/DynamicStatistics/QuestionHistoryAndFavorites.vue +591 -591
  157. package/src/pages/DynamicStatistics/SearchBar.vue +192 -192
  158. package/src/pages/DynamicStatistics/index.vue +282 -282
  159. package/src/pages/Example/index.vue +33 -33
  160. package/src/pages/ServiceReview/index.vue +284 -284
  161. package/src/pages/XReportView/index.vue +62 -62
  162. package/src/pages/login/Login.vue +378 -378
  163. package/src/pages/login/LoginV3.vue +389 -389
  164. package/src/pages/lowCode/lowCodeEditor.vue +1030 -1030
  165. package/src/pages/lowCode/lowCodeRenderPage.vue +43 -43
  166. package/src/pages/resourceManage/orgListManage.vue +98 -98
  167. package/src/pages/system/dictionary/index.vue +44 -44
  168. package/src/pages/system/monitor/loginInfor/index.vue +37 -37
  169. package/src/pages/system/monitor/operLog/index.vue +37 -37
  170. package/src/pages/system/settings/modifyPassword.vue +117 -117
  171. package/src/pages/system/ticket/index.vue +480 -480
  172. package/src/pages/system/ticket/submitTicketSuccess.vue +484 -484
  173. package/src/router/async/config.async.js +34 -34
  174. package/src/router/async/router.map.js +104 -104
  175. package/src/router/guards.js +223 -223
  176. package/src/router/index.js +27 -27
  177. package/src/router.js +19 -19
  178. package/src/services/api/TicketDetailsViewApi.js +46 -46
  179. package/src/services/api/cas.js +79 -79
  180. package/src/services/api/common.js +307 -307
  181. package/src/services/api/entity.js +18 -18
  182. package/src/services/api/index.js +17 -17
  183. package/src/services/api/restTools.js +46 -46
  184. package/src/services/apiService.js +14 -14
  185. package/src/services/user.js +71 -71
  186. package/src/services/v3Api.js +81 -81
  187. package/src/store/modules/index.js +5 -5
  188. package/src/store/modules/lowCode.js +33 -33
  189. package/src/store/modules/setting.js +119 -119
  190. package/src/theme/default/style.less +58 -58
  191. package/src/theme/global.less +139 -139
  192. package/src/utils/authority-utils.js +85 -85
  193. package/src/utils/errorCode.js +6 -6
  194. package/src/utils/formatter.js +80 -80
  195. package/src/utils/htmlToPDF.js +108 -108
  196. package/src/utils/htmlToPDFApi.js +5 -5
  197. package/src/utils/indexedDB.js +258 -258
  198. package/src/utils/login.js +188 -188
  199. package/src/utils/lowcode/lowcodeComponentMixin.js +120 -120
  200. package/src/utils/lowcode/lowcodeLog.js +29 -29
  201. package/src/utils/lowcode/lowcodeUtils.js +373 -373
  202. package/src/utils/lowcode/registerComponentForEditor.js +11 -11
  203. package/src/utils/lowcode/registerComponentForRender.js +11 -11
  204. package/src/utils/map-utils.js +47 -47
  205. package/src/utils/reg.js +95 -95
  206. package/src/utils/request.js +347 -347
  207. package/src/utils/routerUtil.js +435 -435
  208. package/src/utils/runEvalFunction.js +6 -6
  209. package/src/utils/util.js +241 -241
  210. package/src/utils/waterMark.js +31 -31
  211. package/test/Amis.spec.js +163 -163
  212. package/test/Tree.spec.js +167 -167
  213. package/test/myDialog.spec.js +46 -46
  214. package/vue.config.js +181 -181
  215. package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
@@ -1,350 +1,350 @@
1
- <template>
2
- <!-- 属性编辑 -->
3
- <a-card>
4
- <template v-if="editorPropertiesConfig === 'unregistered'">
5
- <p>所选组件并未注册</p>
6
- </template>
7
- <template v-else>
8
- <!-- 组件名 -->
9
- <template v-if="editorPropertiesConfig.name">
10
- <div class="select_title">
11
- <span style="font-size: 1.2em; margin-right: 10%; font-weight: bold">组件名</span>
12
- <a-tag
13
- v-if="editorPropertiesConfig.name || editorPropertiesConfig.id"
14
- :color="determineComponentColorAndText(editorPropertiesConfig.type).color">
15
- {{ determineComponentColorAndText(editorPropertiesConfig.type).text }}
16
- </a-tag>
17
- </div>
18
- <h4>{{ editorPropertiesConfig.name }}</h4>
19
- </template>
20
- <template v-else-if="editorPropertiesConfig.id">
21
- <div class="select_title">
22
- <span style="font-size: 1.2em; margin-right: 10%; font-weight: bold">组件ID</span>
23
- <a-tag
24
- style="height: 100%"
25
- v-if="editorPropertiesConfig.name || editorPropertiesConfig.id"
26
- :color="determineComponentColorAndText(editorPropertiesConfig.type).color">
27
- {{ determineComponentColorAndText(editorPropertiesConfig.type).text }}
28
- </a-tag>
29
- </div>
30
- <h4>{{ editorPropertiesConfig.id }}</h4>
31
- </template>
32
- <!-- 切换 -->
33
- <a-menu v-model="editorPanelCurrent" mode="horizontal" @click="() => null">
34
- <a-menu-item key="properties">属性</a-menu-item>
35
- <a-menu-item key="events" :disabled="disableEventEditor">事件</a-menu-item>
36
- </a-menu>
37
- <!-- 属性编辑 -->
38
- <div v-if="editorPanelCurrent[0] === 'properties'">
39
- <!-- 组件属性编辑 -->
40
- <div v-if="editorPropertiesConfig.props !== undefined">
41
- <div v-if="editorPropertiesConfig.span">
42
- 栅格数:
43
- <a-row>
44
- <a-col :span="16">
45
- <a-slider
46
- :id="editorPropertiesConfig.id"
47
- :max="24"
48
- :min="1"
49
- v-model="editorPropertiesConfig.span"
50
- @change="changeSpan" />
51
- </a-col>
52
- <a-col :span="7">
53
- <a-input-number v-model="editorPropertiesConfig.span" :min="1" :max="24" style="margin-left: 16px; width: 100%" />
54
- </a-col>
55
- </a-row>
56
- </div>
57
- <template v-for="(value,key) in editorPropertiesConfig.props">
58
- <div :key="editorPropertiesConfig.id + '_' + key">
59
- <a-tooltip>
60
- <template slot="title" v-if="resolveEditorPropsLabel(editorPropertiesConfig.type, key).desc">
61
- {{ resolveEditorPropsLabel(editorPropertiesConfig.type, key).desc }}
62
- </template>
63
- {{ resolveEditorPropsLabel(editorPropertiesConfig.type, key).label }}
64
- <span v-if="resolveEditorPropsLabel(editorPropertiesConfig.type, key).required" style="color: red">*</span>
65
- :
66
- </a-tooltip>
67
- <a-input :default-value="value" @change="editorPropertiesInputChange($event, key)"/>
68
- </div>
69
- </template>
70
- </div>
71
- <!-- 行属性编辑 -->
72
- <div v-if="editorPropertiesConfig.config !== undefined">
73
- <div>
74
- 垂直对齐方式:
75
- <a-select style="width: 100%" @change="rowPropertiesAlignChange" :default-value="editorPropertiesConfig.config.align">
76
- <a-select-option value="top">
77
- 顶部对齐
78
- </a-select-option>
79
- <a-select-option value="middle">
80
- 居中对齐
81
- </a-select-option>
82
- <a-select-option value="bottom">
83
- 底部对齐
84
- </a-select-option>
85
- </a-select>
86
- </div>
87
- <div>
88
- 栅格间隔:
89
- <a-input :default-value="editorPropertiesConfig.config.gutter" @change="rowPropertiesGutterChange($event)"/>
90
- </div>
91
- <div>
92
- 水平排列方式:
93
- <a-select style="width: 100%" @change="rowPropertiesJustifyChange" :default-value="editorPropertiesConfig.config.justify">
94
- <a-select-option value="start">
95
- 对齐开始
96
- </a-select-option>
97
- <a-select-option value="end">
98
- 对齐结尾
99
- </a-select-option>
100
- <a-select-option value="center">
101
- 居中
102
- </a-select-option>
103
- <a-select-option value="space-around">
104
- 空隙环绕
105
- </a-select-option>
106
- <a-select-option value="space-between">
107
- 空隙间隔
108
- </a-select-option>
109
- </a-select>
110
- </div>
111
- </div>
112
- </div>
113
- <!-- 事件编辑 -->
114
- <div v-else-if="editorPanelCurrent[0] === 'events' && showEventEditor">
115
- <template v-if="editorPropertiesConfig.onEvent !== undefined">
116
- <a-collapse v-model="eventCollapseActive">
117
- <a-collapse-panel
118
- v-for="(eventConfig,eventType) in editorPropertiesConfig.onEvent"
119
- :key="eventType"
120
- :header="resolveEventType(eventType)">
121
- <div v-for="(singleEvent,singleEventIndex) in eventConfig" :key="singleEventIndex" class="singleEvent">
122
- <p>
123
- <span style="color:rgb( 24,144,255)">{{ resolveEventName(singleEvent) }}</span>
124
- </p>
125
- <!-- 事件 编辑/删除 按钮 -->
126
- <div style="display: flex; justify-content: space-evenly">
127
- <a-icon type="edit" theme="twoTone" class="edit_icon" @click="editEventIconClick(eventType,singleEventIndex)"/>
128
- <a-popconfirm title="确认删除" ok-text="确认删除" cancel-text="取消" @confirm="removeEventClick(eventType,singleEventIndex)" @cancel="() => null">
129
- <a-icon type="delete" theme="twoTone" class="edit_icon"/>
130
- </a-popconfirm>
131
- </div>
132
- </div>
133
- </a-collapse-panel>
134
- </a-collapse>
135
- </template>
136
- <a-button v-if="editorPropertiesConfig.id !== undefined" @click="addEvent">添加事件</a-button>
137
- <p v-else>您未选择任何组件</p>
138
- </div>
139
- </template>
140
- </a-card>
141
- </template>
142
-
143
- <script>
144
-
145
- import * as lowcodeUtils from '@vue2-client/utils/lowcode/lowcodeUtils'
146
- import lowcodeLog from '@vue2-client/utils/lowcode/lowcodeLog'
147
-
148
- export default {
149
- name: 'LowCodeEditorPanel',
150
- props: {
151
- // 用于保存右侧编辑组件的属性
152
- // eslint-disable-next-line vue/require-default-prop
153
- editorPropertiesConfig: {
154
- type: Object,
155
- require: true
156
- },
157
- disableEventEditor: {
158
- type: Boolean,
159
- default: false
160
- }
161
- },
162
- methods: {
163
- refresh () {
164
- this.showEventEditor = false
165
- this.$nextTick(() => {
166
- this.showEventEditor = true
167
- })
168
- },
169
- // 根据组件类型,返回标签颜色和文字
170
- determineComponentColorAndText (type) {
171
- switch (type) {
172
- case 'container':
173
- return {
174
- color: 'blue',
175
- text: '容器'
176
- }
177
- case 'container_page':
178
- return {
179
- color: 'blue',
180
- text: '容器'
181
- }
182
- case 'row':
183
- return {
184
- color: 'orange',
185
- text: '行'
186
- }
187
- default:
188
- return {
189
- color: 'green',
190
- text: '组件'
191
- }
192
- }
193
- },
194
- // 事件编辑器中,点击编辑按钮
195
- editEventIconClick (eventType, eventIndex) {
196
- // 找到目标配置
197
- const targetConfig = lowcodeUtils.getComponentConfig(this.editorPropertiesConfig.id, this.config.page)
198
- // 将目标对应的配置赋值到事件编辑器缓存
199
- this.eventEditorContent = { ...targetConfig.onEvent[eventType][eventIndex] }
200
- this.eventEditorContent.emitType = eventType
201
- this.eventEditorCurrent = {
202
- type: eventType,
203
- index: eventIndex
204
- }
205
- this.$store.commit('setEventEditorContent', this.eventEditorContent)
206
- this.$emit('openModal', 'eventEditor')
207
- },
208
- // 删除事件
209
- removeEventClick (eventType, eventIndex) {
210
- const targetConfig = lowcodeUtils.getComponentConfig(this.editorPropertiesConfig.id, this.config.page)
211
- targetConfig.onEvent[eventType].splice(eventIndex, 1)
212
- if (targetConfig.onEvent[eventType].length === 0) {
213
- delete targetConfig.onEvent[eventType]
214
- }
215
- this.$forceUpdate()
216
- },
217
- // 添加事件
218
- addEvent () {
219
- this.$emit('openModal', 'eventEditor')
220
- },
221
- resolveEventType (eventType) {
222
- if (eventType === 'lifeCycle') {
223
- return '生命周期函数'
224
- } else {
225
- return eventType
226
- }
227
- },
228
- resolveEventName (eventConfig) {
229
- if (eventConfig.emitType === 'lifeCycle') {
230
- return eventConfig.lifeCycle
231
- } else {
232
- switch (eventConfig.eventType) {
233
- case 'runFunction':
234
- return '调用组件方法'
235
- case 'changeProps':
236
- return '修改组件Props'
237
- case 'runLogic':
238
- return '发送请求'
239
- case 'log':
240
- return '打印日志'
241
- case 'customJSFunction':
242
- return '自定义JS'
243
- case 'showModal':
244
- return '修改组件显隐'
245
- case 'showDraw':
246
- return '修改组件显隐'
247
- }
248
- }
249
- },
250
- // 行修改Justify
251
- rowPropertiesJustifyChange (justify) {
252
- const target = lowcodeUtils.getRowConfigById(this.editorPropertiesConfig.id, this.config)
253
- target.config.justify = justify
254
- },
255
- // 行修改Align
256
- rowPropertiesAlignChange (align) {
257
- const target = lowcodeUtils.getRowConfigById(this.editorPropertiesConfig.id, this.config)
258
- target.config.align = align
259
- },
260
- // 行修改Gutter
261
- rowPropertiesGutterChange (event) {
262
- const target = lowcodeUtils.getRowConfigById(this.editorPropertiesConfig.id, this.config)
263
- target.config.gutter = Number(event.target.value)
264
- },
265
- // 组件属性编辑
266
- editorPropertiesInputChange (event, key) {
267
- this.$emit('controlRender', false)
268
- // 如果当前有定时器,清除该定时器,并设置新的定时器
269
- // 也就是说:每次操作间隔指定时间后才会触发更新
270
- // 如果在此期间又进行了操作,则重新开始计时
271
- if (this.inputTimeout) {
272
- clearTimeout(this.inputTimeout)
273
- }
274
- this.inputTimeout = setTimeout(() => {
275
- const target = lowcodeUtils.getComponentConfig(this.editorPropertiesConfig.id, this.config.page)
276
- lowcodeLog('组件属性修改', '触发更新', target.id, true, false)
277
- // 拿到组件注册的配置
278
- const editorConfig = lowcodeUtils.getEditorConfigById(this.editorPropertiesConfig.id, this.config.page)
279
- // 根据类型,将input框中的内容赋值
280
- if (editorConfig.properties[key].type === 'object') {
281
- target.props[key] = JSON.parse(event.target.value)
282
- } else if (editorConfig.properties[key].type === 'string') {
283
- target.props[key] = event.target.value
284
- } else if (editorConfig.properties[key].type === 'boolean') {
285
- const input = event.target.value.toLowerCase()
286
- target.props[key] = input === 'true' || input !== '0'
287
- }
288
- this.$emit('controlRender', true)
289
- }, 1500)
290
- },
291
- // span属性通过input框修改
292
- changeSpan (event) {
293
- this.editorPropertiesConfig.span = event
294
- },
295
- // 通过组件类型和key解析出该key对应的中文定义
296
- resolveEditorPropsLabel (type, key) {
297
- // 获取配置中的定义
298
- const def = lowcodeUtils.getEditorConfigByType(type)
299
- const propsDef = def.properties
300
- const targetDef = propsDef[key]
301
- if (!targetDef.label) {
302
- targetDef.label = key
303
- } else {
304
- targetDef.label = targetDef.label + '(' + key + ')'
305
- }
306
- if (!targetDef.desc) {
307
- targetDef.desc = '未配置该参数的说明!'
308
- }
309
- return targetDef
310
- },
311
- },
312
- data () {
313
- return {
314
- // 控制右侧编辑器切换标签页
315
- editorPanelCurrent: ['properties'],
316
- // 控制右侧事件编辑刷新
317
- showEventEditor: true,
318
- // 当前激活的是组件事件中哪一类触发属性,对应事件编辑中的手风琴面板
319
- eventCollapseActive: undefined,
320
- // 事件编辑弹框内容回显
321
- eventEditorContent: {},
322
- // 编辑属性时用到的定时器
323
- inputTimeout: undefined,
324
- }
325
- },
326
- computed: {
327
- config () {
328
- return this.$store.state.lowCode.config
329
- }
330
- }
331
- }
332
- </script>
333
-
334
- <style scoped lang="less">
335
- .select_title {
336
- width: 100%;
337
- justify-content: space-between;
338
- display: flex;
339
- align-items: center;
340
- margin-bottom: 3%
341
- }
342
- .singleEvent {
343
- border: black dashed 1px;
344
- padding: 10%;
345
- margin-bottom: 3%;
346
- }
347
- .edit_icon:hover {
348
- cursor: pointer;
349
- }
350
- </style>
1
+ <template>
2
+ <!-- 属性编辑 -->
3
+ <a-card>
4
+ <template v-if="editorPropertiesConfig === 'unregistered'">
5
+ <p>所选组件并未注册</p>
6
+ </template>
7
+ <template v-else>
8
+ <!-- 组件名 -->
9
+ <template v-if="editorPropertiesConfig.name">
10
+ <div class="select_title">
11
+ <span style="font-size: 1.2em; margin-right: 10%; font-weight: bold">组件名</span>
12
+ <a-tag
13
+ v-if="editorPropertiesConfig.name || editorPropertiesConfig.id"
14
+ :color="determineComponentColorAndText(editorPropertiesConfig.type).color">
15
+ {{ determineComponentColorAndText(editorPropertiesConfig.type).text }}
16
+ </a-tag>
17
+ </div>
18
+ <h4>{{ editorPropertiesConfig.name }}</h4>
19
+ </template>
20
+ <template v-else-if="editorPropertiesConfig.id">
21
+ <div class="select_title">
22
+ <span style="font-size: 1.2em; margin-right: 10%; font-weight: bold">组件ID</span>
23
+ <a-tag
24
+ style="height: 100%"
25
+ v-if="editorPropertiesConfig.name || editorPropertiesConfig.id"
26
+ :color="determineComponentColorAndText(editorPropertiesConfig.type).color">
27
+ {{ determineComponentColorAndText(editorPropertiesConfig.type).text }}
28
+ </a-tag>
29
+ </div>
30
+ <h4>{{ editorPropertiesConfig.id }}</h4>
31
+ </template>
32
+ <!-- 切换 -->
33
+ <a-menu v-model="editorPanelCurrent" mode="horizontal" @click="() => null">
34
+ <a-menu-item key="properties">属性</a-menu-item>
35
+ <a-menu-item key="events" :disabled="disableEventEditor">事件</a-menu-item>
36
+ </a-menu>
37
+ <!-- 属性编辑 -->
38
+ <div v-if="editorPanelCurrent[0] === 'properties'">
39
+ <!-- 组件属性编辑 -->
40
+ <div v-if="editorPropertiesConfig.props !== undefined">
41
+ <div v-if="editorPropertiesConfig.span">
42
+ 栅格数:
43
+ <a-row>
44
+ <a-col :span="16">
45
+ <a-slider
46
+ :id="editorPropertiesConfig.id"
47
+ :max="24"
48
+ :min="1"
49
+ v-model="editorPropertiesConfig.span"
50
+ @change="changeSpan" />
51
+ </a-col>
52
+ <a-col :span="7">
53
+ <a-input-number v-model="editorPropertiesConfig.span" :min="1" :max="24" style="margin-left: 16px; width: 100%" />
54
+ </a-col>
55
+ </a-row>
56
+ </div>
57
+ <template v-for="(value,key) in editorPropertiesConfig.props">
58
+ <div :key="editorPropertiesConfig.id + '_' + key">
59
+ <a-tooltip>
60
+ <template slot="title" v-if="resolveEditorPropsLabel(editorPropertiesConfig.type, key).desc">
61
+ {{ resolveEditorPropsLabel(editorPropertiesConfig.type, key).desc }}
62
+ </template>
63
+ {{ resolveEditorPropsLabel(editorPropertiesConfig.type, key).label }}
64
+ <span v-if="resolveEditorPropsLabel(editorPropertiesConfig.type, key).required" style="color: red">*</span>
65
+ :
66
+ </a-tooltip>
67
+ <a-input :default-value="value" @change="editorPropertiesInputChange($event, key)"/>
68
+ </div>
69
+ </template>
70
+ </div>
71
+ <!-- 行属性编辑 -->
72
+ <div v-if="editorPropertiesConfig.config !== undefined">
73
+ <div>
74
+ 垂直对齐方式:
75
+ <a-select style="width: 100%" @change="rowPropertiesAlignChange" :default-value="editorPropertiesConfig.config.align">
76
+ <a-select-option value="top">
77
+ 顶部对齐
78
+ </a-select-option>
79
+ <a-select-option value="middle">
80
+ 居中对齐
81
+ </a-select-option>
82
+ <a-select-option value="bottom">
83
+ 底部对齐
84
+ </a-select-option>
85
+ </a-select>
86
+ </div>
87
+ <div>
88
+ 栅格间隔:
89
+ <a-input :default-value="editorPropertiesConfig.config.gutter" @change="rowPropertiesGutterChange($event)"/>
90
+ </div>
91
+ <div>
92
+ 水平排列方式:
93
+ <a-select style="width: 100%" @change="rowPropertiesJustifyChange" :default-value="editorPropertiesConfig.config.justify">
94
+ <a-select-option value="start">
95
+ 对齐开始
96
+ </a-select-option>
97
+ <a-select-option value="end">
98
+ 对齐结尾
99
+ </a-select-option>
100
+ <a-select-option value="center">
101
+ 居中
102
+ </a-select-option>
103
+ <a-select-option value="space-around">
104
+ 空隙环绕
105
+ </a-select-option>
106
+ <a-select-option value="space-between">
107
+ 空隙间隔
108
+ </a-select-option>
109
+ </a-select>
110
+ </div>
111
+ </div>
112
+ </div>
113
+ <!-- 事件编辑 -->
114
+ <div v-else-if="editorPanelCurrent[0] === 'events' && showEventEditor">
115
+ <template v-if="editorPropertiesConfig.onEvent !== undefined">
116
+ <a-collapse v-model="eventCollapseActive">
117
+ <a-collapse-panel
118
+ v-for="(eventConfig,eventType) in editorPropertiesConfig.onEvent"
119
+ :key="eventType"
120
+ :header="resolveEventType(eventType)">
121
+ <div v-for="(singleEvent,singleEventIndex) in eventConfig" :key="singleEventIndex" class="singleEvent">
122
+ <p>
123
+ <span style="color:rgb( 24,144,255)">{{ resolveEventName(singleEvent) }}</span>
124
+ </p>
125
+ <!-- 事件 编辑/删除 按钮 -->
126
+ <div style="display: flex; justify-content: space-evenly">
127
+ <a-icon type="edit" theme="twoTone" class="edit_icon" @click="editEventIconClick(eventType,singleEventIndex)"/>
128
+ <a-popconfirm title="确认删除" ok-text="确认删除" cancel-text="取消" @confirm="removeEventClick(eventType,singleEventIndex)" @cancel="() => null">
129
+ <a-icon type="delete" theme="twoTone" class="edit_icon"/>
130
+ </a-popconfirm>
131
+ </div>
132
+ </div>
133
+ </a-collapse-panel>
134
+ </a-collapse>
135
+ </template>
136
+ <a-button v-if="editorPropertiesConfig.id !== undefined" @click="addEvent">添加事件</a-button>
137
+ <p v-else>您未选择任何组件</p>
138
+ </div>
139
+ </template>
140
+ </a-card>
141
+ </template>
142
+
143
+ <script>
144
+
145
+ import * as lowcodeUtils from '@vue2-client/utils/lowcode/lowcodeUtils'
146
+ import lowcodeLog from '@vue2-client/utils/lowcode/lowcodeLog'
147
+
148
+ export default {
149
+ name: 'LowCodeEditorPanel',
150
+ props: {
151
+ // 用于保存右侧编辑组件的属性
152
+ // eslint-disable-next-line vue/require-default-prop
153
+ editorPropertiesConfig: {
154
+ type: Object,
155
+ require: true
156
+ },
157
+ disableEventEditor: {
158
+ type: Boolean,
159
+ default: false
160
+ }
161
+ },
162
+ methods: {
163
+ refresh () {
164
+ this.showEventEditor = false
165
+ this.$nextTick(() => {
166
+ this.showEventEditor = true
167
+ })
168
+ },
169
+ // 根据组件类型,返回标签颜色和文字
170
+ determineComponentColorAndText (type) {
171
+ switch (type) {
172
+ case 'container':
173
+ return {
174
+ color: 'blue',
175
+ text: '容器'
176
+ }
177
+ case 'container_page':
178
+ return {
179
+ color: 'blue',
180
+ text: '容器'
181
+ }
182
+ case 'row':
183
+ return {
184
+ color: 'orange',
185
+ text: '行'
186
+ }
187
+ default:
188
+ return {
189
+ color: 'green',
190
+ text: '组件'
191
+ }
192
+ }
193
+ },
194
+ // 事件编辑器中,点击编辑按钮
195
+ editEventIconClick (eventType, eventIndex) {
196
+ // 找到目标配置
197
+ const targetConfig = lowcodeUtils.getComponentConfig(this.editorPropertiesConfig.id, this.config.page)
198
+ // 将目标对应的配置赋值到事件编辑器缓存
199
+ this.eventEditorContent = { ...targetConfig.onEvent[eventType][eventIndex] }
200
+ this.eventEditorContent.emitType = eventType
201
+ this.eventEditorCurrent = {
202
+ type: eventType,
203
+ index: eventIndex
204
+ }
205
+ this.$store.commit('setEventEditorContent', this.eventEditorContent)
206
+ this.$emit('openModal', 'eventEditor')
207
+ },
208
+ // 删除事件
209
+ removeEventClick (eventType, eventIndex) {
210
+ const targetConfig = lowcodeUtils.getComponentConfig(this.editorPropertiesConfig.id, this.config.page)
211
+ targetConfig.onEvent[eventType].splice(eventIndex, 1)
212
+ if (targetConfig.onEvent[eventType].length === 0) {
213
+ delete targetConfig.onEvent[eventType]
214
+ }
215
+ this.$forceUpdate()
216
+ },
217
+ // 添加事件
218
+ addEvent () {
219
+ this.$emit('openModal', 'eventEditor')
220
+ },
221
+ resolveEventType (eventType) {
222
+ if (eventType === 'lifeCycle') {
223
+ return '生命周期函数'
224
+ } else {
225
+ return eventType
226
+ }
227
+ },
228
+ resolveEventName (eventConfig) {
229
+ if (eventConfig.emitType === 'lifeCycle') {
230
+ return eventConfig.lifeCycle
231
+ } else {
232
+ switch (eventConfig.eventType) {
233
+ case 'runFunction':
234
+ return '调用组件方法'
235
+ case 'changeProps':
236
+ return '修改组件Props'
237
+ case 'runLogic':
238
+ return '发送请求'
239
+ case 'log':
240
+ return '打印日志'
241
+ case 'customJSFunction':
242
+ return '自定义JS'
243
+ case 'showModal':
244
+ return '修改组件显隐'
245
+ case 'showDraw':
246
+ return '修改组件显隐'
247
+ }
248
+ }
249
+ },
250
+ // 行修改Justify
251
+ rowPropertiesJustifyChange (justify) {
252
+ const target = lowcodeUtils.getRowConfigById(this.editorPropertiesConfig.id, this.config)
253
+ target.config.justify = justify
254
+ },
255
+ // 行修改Align
256
+ rowPropertiesAlignChange (align) {
257
+ const target = lowcodeUtils.getRowConfigById(this.editorPropertiesConfig.id, this.config)
258
+ target.config.align = align
259
+ },
260
+ // 行修改Gutter
261
+ rowPropertiesGutterChange (event) {
262
+ const target = lowcodeUtils.getRowConfigById(this.editorPropertiesConfig.id, this.config)
263
+ target.config.gutter = Number(event.target.value)
264
+ },
265
+ // 组件属性编辑
266
+ editorPropertiesInputChange (event, key) {
267
+ this.$emit('controlRender', false)
268
+ // 如果当前有定时器,清除该定时器,并设置新的定时器
269
+ // 也就是说:每次操作间隔指定时间后才会触发更新
270
+ // 如果在此期间又进行了操作,则重新开始计时
271
+ if (this.inputTimeout) {
272
+ clearTimeout(this.inputTimeout)
273
+ }
274
+ this.inputTimeout = setTimeout(() => {
275
+ const target = lowcodeUtils.getComponentConfig(this.editorPropertiesConfig.id, this.config.page)
276
+ lowcodeLog('组件属性修改', '触发更新', target.id, true, false)
277
+ // 拿到组件注册的配置
278
+ const editorConfig = lowcodeUtils.getEditorConfigById(this.editorPropertiesConfig.id, this.config.page)
279
+ // 根据类型,将input框中的内容赋值
280
+ if (editorConfig.properties[key].type === 'object') {
281
+ target.props[key] = JSON.parse(event.target.value)
282
+ } else if (editorConfig.properties[key].type === 'string') {
283
+ target.props[key] = event.target.value
284
+ } else if (editorConfig.properties[key].type === 'boolean') {
285
+ const input = event.target.value.toLowerCase()
286
+ target.props[key] = input === 'true' || input !== '0'
287
+ }
288
+ this.$emit('controlRender', true)
289
+ }, 1500)
290
+ },
291
+ // span属性通过input框修改
292
+ changeSpan (event) {
293
+ this.editorPropertiesConfig.span = event
294
+ },
295
+ // 通过组件类型和key解析出该key对应的中文定义
296
+ resolveEditorPropsLabel (type, key) {
297
+ // 获取配置中的定义
298
+ const def = lowcodeUtils.getEditorConfigByType(type)
299
+ const propsDef = def.properties
300
+ const targetDef = propsDef[key]
301
+ if (!targetDef.label) {
302
+ targetDef.label = key
303
+ } else {
304
+ targetDef.label = targetDef.label + '(' + key + ')'
305
+ }
306
+ if (!targetDef.desc) {
307
+ targetDef.desc = '未配置该参数的说明!'
308
+ }
309
+ return targetDef
310
+ },
311
+ },
312
+ data () {
313
+ return {
314
+ // 控制右侧编辑器切换标签页
315
+ editorPanelCurrent: ['properties'],
316
+ // 控制右侧事件编辑刷新
317
+ showEventEditor: true,
318
+ // 当前激活的是组件事件中哪一类触发属性,对应事件编辑中的手风琴面板
319
+ eventCollapseActive: undefined,
320
+ // 事件编辑弹框内容回显
321
+ eventEditorContent: {},
322
+ // 编辑属性时用到的定时器
323
+ inputTimeout: undefined,
324
+ }
325
+ },
326
+ computed: {
327
+ config () {
328
+ return this.$store.state.lowCode.config
329
+ }
330
+ }
331
+ }
332
+ </script>
333
+
334
+ <style scoped lang="less">
335
+ .select_title {
336
+ width: 100%;
337
+ justify-content: space-between;
338
+ display: flex;
339
+ align-items: center;
340
+ margin-bottom: 3%
341
+ }
342
+ .singleEvent {
343
+ border: black dashed 1px;
344
+ padding: 10%;
345
+ margin-bottom: 3%;
346
+ }
347
+ .edit_icon:hover {
348
+ cursor: pointer;
349
+ }
350
+ </style>