vue2-client 1.11.5 → 1.11.6-alpha

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 (434) hide show
  1. package/.babelrc +3 -0
  2. package/.cursorrules +19 -19
  3. package/.env +19 -19
  4. package/.env.gaslink +19 -19
  5. package/.env.his +19 -19
  6. package/.env.liuli +19 -19
  7. package/.env.revenue +19 -19
  8. package/.env.scada +19 -19
  9. package/.eslintrc.js +90 -90
  10. package/CHANGELOG.md +824 -824
  11. package/Components.md +60 -60
  12. package/babel.config.js +1 -4
  13. package/docs/Logic/345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +45 -45
  14. package/docs/LowCode/lowcode.md +155 -155
  15. package/docs/LowCode/lowcodeForDeveloper.md +230 -230
  16. package/docs/index.md +30 -30
  17. package/docs//345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +174 -174
  18. package/index.js +31 -31
  19. package/jest-transform-stub.js +8 -8
  20. package/jest.config.js +3 -2
  21. package/jest.setup.js +7 -7
  22. package/jsconfig.json +19 -19
  23. package/package.json +108 -107
  24. package/public/his/editor/editor.html +51 -51
  25. package/public/his/editor/mock/bind_data.html +779 -779
  26. package/public/his/editor/mock/data_table.html +40 -40
  27. package/public/his/editor/mock/sign.html +75 -75
  28. package/public/his/editor/vender/JsBarcode.all.js +3669 -3669
  29. package/public/his/editor/vender/date97/My97DatePicker.htm +65 -65
  30. package/public/his/editor/vender/date97/WdatePicker.js +677 -677
  31. package/public/his/editor/vender/date97/calendar.js +4 -4
  32. package/public/his/editor/vender/date97/lang/en.js +13 -13
  33. package/public/his/editor/vender/date97/lang/zh-cn.js +13 -13
  34. package/public/his/editor/vender/date97/lang/zh-tw.js +13 -13
  35. package/public/his/editor/vender/date97/skin/WdatePicker.css +10 -10
  36. package/public/his/editor/vender/date97/skin/default/datepicker.css +328 -328
  37. package/public/his/editor/vender/date97/skin/ext/datepicker.css +308 -308
  38. package/public/his/editor/vender/date97/skin/whyGreen/datepicker.css +255 -255
  39. package/public/his/editor/vender/diff.js +1627 -1627
  40. package/public/his/editor/vender/editor.js +1 -1
  41. package/public/his/editor/vender/fabric.js +31187 -31187
  42. package/public/his/editor/vender/jquery/jquery.base64.js +190 -190
  43. package/public/his/editor/vender/jquery/jquery.js +10872 -10872
  44. package/public/his/editor/vender/jquery/jquery.print.js +255 -255
  45. package/public/his/editor/vender/jquery/zTreeStyle/zTreeStyle.css +96 -96
  46. package/public/his/editor/vender/mui/mui.min.css +4 -4
  47. package/public/his/editor/vender/mui/mui.min.js +5 -5
  48. package/public/his/editor/vender/mui/mui.picker.min.css +6 -6
  49. package/public/his/editor/vender/mui/mui.picker.min.js +6 -6
  50. package/public/his/editor/vender/qrcode.js +7 -7
  51. package/public/his/editor/vender/requirejs/require.js +2145 -2145
  52. package/public/his/editor/vender/signature/jSignature.CompressorSVG.js +518 -518
  53. package/public/his/editor/vender/signature/jSignature.UndoButton.js +164 -164
  54. package/public/his/editor/vender/signature/jSignature.js +1486 -1486
  55. package/public/his/editor/vender/validator.js +5094 -5094
  56. package/public/his/editor/vender/weui/weui.css +5659 -5659
  57. package/public/his/editor/vender/weui/weui.min.css +4 -4
  58. package/public/his/editor/vender/weui/weui.min.js +11 -11
  59. package/public/index.html +27 -27
  60. package/src/ReportView.js +19 -19
  61. package/src/assets/img/querySlotDemo.svg +15 -15
  62. package/src/assets/svg/badtwo.svg +1 -1
  63. package/src/assets/svg/goodtwo.svg +1 -1
  64. package/src/base-client/components/AI/AskAiBtn.vue +136 -136
  65. package/src/base-client/components/AI/demo.vue +31 -31
  66. package/src/base-client/components/common/AMisRender/index.js +3 -3
  67. package/src/base-client/components/common/AMisRender/index.vue +263 -263
  68. package/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox.vue +470 -470
  69. package/src/base-client/components/common/AddressSearchCombobox/IcMapIcon.vue +16 -16
  70. package/src/base-client/components/common/AddressSearchCombobox/demo.vue +36 -36
  71. package/src/base-client/components/common/AddressSearchCombobox/ic_map.svg +6 -6
  72. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
  73. package/src/base-client/components/common/CitySelect/CitySelect.vue +366 -366
  74. package/src/base-client/components/common/CitySelect/index.js +3 -3
  75. package/src/base-client/components/common/CitySelect/index.md +109 -109
  76. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +669 -669
  77. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +1014 -1014
  78. package/src/base-client/components/common/CreateQuery/index.js +3 -3
  79. package/src/base-client/components/common/CreateQuery/index.md +42 -42
  80. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +452 -452
  81. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +511 -511
  82. package/src/base-client/components/common/CreateSimpleFormQuery/index.js +3 -3
  83. package/src/base-client/components/common/CreateSimpleFormQuery/index.md +42 -42
  84. package/src/base-client/components/common/FormGroupEdit/FormGroupEdit.vue +149 -149
  85. package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
  86. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  87. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +166 -166
  88. package/src/base-client/components/common/FormGroupQuery/index.js +3 -3
  89. package/src/base-client/components/common/FormGroupQuery/index.md +43 -43
  90. package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
  91. package/src/base-client/components/common/LowCodeComponent/LowCodeEditorModal.vue +108 -108
  92. package/src/base-client/components/common/LowCodeComponent/LowCodeEditorPanel.vue +413 -413
  93. package/src/base-client/components/common/LowCodeComponent/LowCodePageOrganization.vue +502 -502
  94. package/src/base-client/components/common/LowCodeComponent/LowCodeRender.vue +728 -728
  95. package/src/base-client/components/common/LowCodeComponent/LowCodeRenderEnter.vue +29 -29
  96. package/src/base-client/components/common/LowCodeComponent/LowCodeUIStore.vue +219 -219
  97. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeAddPageModal.vue +117 -117
  98. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeCustomJSModal.vue +80 -80
  99. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeEventEditorModal.vue +398 -398
  100. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLifeCycleModal.vue +65 -65
  101. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLogicCallbackModal.vue +64 -64
  102. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLogicParamModal.vue +73 -73
  103. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeRunFunctionParamModal.vue +76 -76
  104. package/src/base-client/components/common/PersonSetting/PersonSetting.vue +208 -208
  105. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  106. package/src/base-client/components/common/Recording/Recording.vue +243 -243
  107. package/src/base-client/components/common/Recording/index.js +3 -3
  108. package/src/base-client/components/common/Tree/Tree.vue +149 -149
  109. package/src/base-client/components/common/Tree/index.js +2 -2
  110. package/src/base-client/components/common/Upload/index.js +3 -3
  111. package/src/base-client/components/common/XAddForm/XAddForm.vue +113 -113
  112. package/src/base-client/components/common/XAddNativeForm/XAddNativeForm.vue +1146 -1146
  113. package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
  114. package/src/base-client/components/common/XAddNativeFormOA/XAddNativeFormOA.vue +303 -303
  115. package/src/base-client/components/common/XAddNativeFormOA/index.js +3 -3
  116. package/src/base-client/components/common/XAddNativeFormOA/index.md +146 -146
  117. package/src/base-client/components/common/XAddReport/index.js +3 -3
  118. package/src/base-client/components/common/XAddReport/index.md +56 -56
  119. package/src/base-client/components/common/XBadge/XBadge.vue +94 -94
  120. package/src/base-client/components/common/XButtons/XButtonDemo.vue +28 -28
  121. package/src/base-client/components/common/XButtons/XButtons.vue +71 -71
  122. package/src/base-client/components/common/XButtons/index.js +3 -3
  123. package/src/base-client/components/common/XButtons/index.md +61 -61
  124. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  125. package/src/base-client/components/common/XCheckList/XCheckList.vue +106 -106
  126. package/src/base-client/components/common/XCheckList/XCheckListDemo.vue +41 -41
  127. package/src/base-client/components/common/XConversation/XConversationDemo.vue +28 -28
  128. package/src/base-client/components/common/XDataCard/index.js +3 -3
  129. package/src/base-client/components/common/XDataCard/index.md +1 -1
  130. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
  131. package/src/base-client/components/common/XDataDrawer/index.js +3 -3
  132. package/src/base-client/components/common/XDataDrawer/index.md +41 -41
  133. package/src/base-client/components/common/XDatePicker/demo.vue +153 -153
  134. package/src/base-client/components/common/XDatePicker/index.vue +259 -259
  135. package/src/base-client/components/common/XDescriptions/XDescriptions.vue +169 -169
  136. package/src/base-client/components/common/XDescriptions/XDescriptionsGroup.vue +61 -51
  137. package/src/base-client/components/common/XDescriptions/demo.vue +10 -9
  138. package/src/base-client/components/common/XDescriptions/index.js +3 -3
  139. package/src/base-client/components/common/XDescriptions/index.md +83 -83
  140. package/src/base-client/components/common/XDetailsView/XDetailsView.vue +238 -238
  141. package/src/base-client/components/common/XDetailsView/index.js +3 -3
  142. package/src/base-client/components/common/XForm/XStatusButton.vue +54 -54
  143. package/src/base-client/components/common/XForm/XTreeSelect.vue +264 -264
  144. package/src/base-client/components/common/XForm/index.md +178 -178
  145. package/src/base-client/components/common/XForm/itemComponent/XClickChangeBtn/index.vue +49 -49
  146. package/src/base-client/components/common/XFormGroup/demo.vue +3 -10
  147. package/src/base-client/components/common/XFormGroup/index.js +3 -3
  148. package/src/base-client/components/common/XFormGroup/index.md +38 -38
  149. package/src/base-client/components/common/XFormGroupDetails/XFormGroupDetails.vue +72 -72
  150. package/src/base-client/components/common/XFormGroupDetails/index.js +3 -3
  151. package/src/base-client/components/common/XFormTable/index.md +92 -92
  152. package/src/base-client/components/common/XImportExcel/XImportExcel.vue +167 -167
  153. package/src/base-client/components/common/XLabelSelect/XLabelSelect.vue +110 -110
  154. package/src/base-client/components/common/XLabelSelect/XLabelSelectDemo.vue +35 -35
  155. package/src/base-client/components/common/XLicensePlate/XLicensePlate.vue +193 -193
  156. package/src/base-client/components/common/XLicensePlate/XLicensePlateDemo.vue +48 -48
  157. package/src/base-client/components/common/XPrint/Demo.vue +41 -41
  158. package/src/base-client/components/common/XPrint/OpenInvoice.vue +21 -21
  159. package/src/base-client/components/common/XPrint/PrintBill.vue +302 -302
  160. package/src/base-client/components/common/XPrint/PrintHtml.js +98 -98
  161. package/src/base-client/components/common/XPrint/css/hiPrintCss.js +359 -359
  162. package/src/base-client/components/common/XPrint/css/lodopCss.js +26 -26
  163. package/src/base-client/components/common/XPrint/css/print-lock.css +351 -351
  164. package/src/base-client/components/common/XPrint/index.vue +97 -97
  165. package/src/base-client/components/common/XReport/XReport.vue +892 -892
  166. package/src/base-client/components/common/XReport/XReportDesign.vue +463 -463
  167. package/src/base-client/components/common/XReport/XReportJsonRender.vue +381 -381
  168. package/src/base-client/components/common/XReport/index.js +3 -3
  169. package/src/base-client/components/common/XReport/index.md +44 -44
  170. package/src/base-client/components/common/XReport/print.js +186 -186
  171. package/src/base-client/components/common/XReportDrawer/index.js +3 -3
  172. package/src/base-client/components/common/XReportGrid/index.js +3 -3
  173. package/src/base-client/components/common/XReportGrid/index.md +44 -44
  174. package/src/base-client/components/common/XReportSlot/XReportSlot.vue +110 -110
  175. package/src/base-client/components/common/XReportSlot/index.js +3 -3
  176. package/src/base-client/components/common/XReportSlot/index.md +48 -48
  177. package/src/base-client/components/common/XSimpleDescriptions/index.js +3 -3
  178. package/src/base-client/components/common/XSimpleDescriptions/index.md +7 -7
  179. package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
  180. package/src/base-client/components/common/XStepView/index.js +3 -3
  181. package/src/base-client/components/common/XStepView/index.md +31 -31
  182. package/src/base-client/components/common/XTab/XTabDemo.vue +22 -22
  183. package/src/base-client/components/common/XTab/index.js +3 -3
  184. package/src/base-client/components/common/XTable/CustomFuncCel.vue +51 -51
  185. package/src/base-client/components/common/XTable/TableCellRenderer.vue +161 -161
  186. package/src/base-client/components/common/XTable/index.md +255 -255
  187. package/src/base-client/components/common/XTagGroup/index.vue +52 -52
  188. package/src/base-client/components/common/XTree/XTree.vue +424 -424
  189. package/src/base-client/components/common/XTree/index.js +3 -3
  190. package/src/base-client/components/common/XTree/index.md +36 -36
  191. package/src/base-client/components/common/XTreeOne/XTreeOne.vue +113 -113
  192. package/src/base-client/components/common/XTreeOne/XTreeOnePro.vue +128 -128
  193. package/src/base-client/components/common/richTextModal/index.vue +56 -56
  194. package/src/base-client/components/common/richTextModal/richDemo.vue +48 -48
  195. package/src/base-client/components/his/XHisEditor/XHisEditor.vue +359 -359
  196. package/src/base-client/components/his/XHisEditor/index.js +3 -3
  197. package/src/base-client/components/index.js +51 -51
  198. package/src/base-client/components/layout/XPageView/XErrorView.vue +11 -11
  199. package/src/base-client/components/layout/XPageView/index.js +3 -3
  200. package/src/base-client/components/layout/XPageView/index.md +38 -38
  201. package/src/base-client/components/layout/XTreeView/XTreeView.vue +130 -130
  202. package/src/base-client/components/layout/XTreeView/index.js +3 -3
  203. package/src/base-client/components/layout/XTreeView/index.md +46 -46
  204. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  205. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -281
  206. package/src/base-client/plugins/AppData.js +121 -121
  207. package/src/base-client/plugins/Config.js +19 -19
  208. package/src/base-client/plugins/GetLoginInfoService.js +183 -183
  209. package/src/base-client/plugins/Recording.js +258 -258
  210. package/src/base-client/plugins/index.js +23 -23
  211. package/src/base-client/plugins/tabs-page-plugin.js +39 -39
  212. package/src/bootstrap.js +42 -42
  213. package/src/components/Charts/Bar.vue +62 -62
  214. package/src/components/Charts/ChartCard.vue +134 -134
  215. package/src/components/Charts/Liquid.vue +67 -67
  216. package/src/components/Charts/MiniArea.vue +39 -39
  217. package/src/components/Charts/MiniBar.vue +39 -39
  218. package/src/components/Charts/MiniProgress.vue +75 -75
  219. package/src/components/Charts/MiniSmoothArea.vue +40 -40
  220. package/src/components/Charts/Radar.vue +68 -68
  221. package/src/components/Charts/RankList.vue +77 -77
  222. package/src/components/Charts/TagCloud.vue +113 -113
  223. package/src/components/Charts/TransferBar.vue +64 -64
  224. package/src/components/Charts/Trend.vue +82 -82
  225. package/src/components/Charts/chart.less +12 -12
  226. package/src/components/Charts/smooth.area.less +13 -13
  227. package/src/components/CodeMirror/inedx.vue +118 -118
  228. package/src/components/CodeMirror/setting.js +40 -40
  229. package/src/components/FilePreview/FilePreview.vue +166 -166
  230. package/src/components/HeightScanner/index.vue +571 -571
  231. package/src/components/NumberInfo/NumberInfo.vue +54 -54
  232. package/src/components/NumberInfo/index.js +3 -3
  233. package/src/components/NumberInfo/index.less +54 -54
  234. package/src/components/NumberInfo/index.md +43 -43
  235. package/src/components/card/ChartCard.vue +79 -79
  236. package/src/components/chart/Bar.vue +60 -60
  237. package/src/components/chart/MiniArea.vue +67 -67
  238. package/src/components/chart/MiniBar.vue +59 -59
  239. package/src/components/chart/MiniProgress.vue +57 -57
  240. package/src/components/chart/Radar.vue +80 -80
  241. package/src/components/chart/RankingList.vue +60 -60
  242. package/src/components/chart/Trend.vue +79 -79
  243. package/src/components/chart/index.less +9 -9
  244. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  245. package/src/components/checkbox/ImgCheckbox.vue +117 -117
  246. package/src/components/checkbox/ImgCheckboxGroup.vue +76 -76
  247. package/src/components/checkbox/index.js +9 -9
  248. package/src/components/exception/ExceptionPage.vue +70 -70
  249. package/src/components/g2Charts/constants.js +202 -202
  250. package/src/components/g2Charts/demo.vue +808 -808
  251. package/src/components/g2Charts/designer.vue +228 -228
  252. package/src/components/g2Charts/designerBaseConfig.vue +61 -61
  253. package/src/components/g2Charts/designerDataConfig.vue +259 -259
  254. package/src/components/g2Charts/designerStyleConfig.vue +16 -16
  255. package/src/components/g2Charts/index.vue +397 -397
  256. package/src/components/index.js +36 -36
  257. package/src/components/input/IInput.vue +66 -66
  258. package/src/components/menu/SideMenu.vue +75 -75
  259. package/src/components/menu/menu.js +273 -273
  260. package/src/components/setting/Setting.vue +234 -234
  261. package/src/components/tool/AStepItem.vue +60 -60
  262. package/src/config/default/antd.config.js +89 -89
  263. package/src/config/default/setting.config.js +55 -55
  264. package/src/expression/ExpressionRunner.js +26 -0
  265. package/src/expression/TestExpression.js +508 -0
  266. package/src/expression/core/Delegate.js +113 -0
  267. package/src/expression/core/Expression.js +1323 -0
  268. package/src/expression/core/Program.js +933 -0
  269. package/src/expression/core/Token.js +27 -0
  270. package/src/expression/enums/ExpressionType.js +81 -0
  271. package/src/expression/enums/TokenType.js +11 -0
  272. package/src/expression/exception/ExpressionException.js +28 -0
  273. package/src/expression/exception/ReturnWayException.js +14 -0
  274. package/src/expression/exception/ServiceException.js +22 -0
  275. package/src/expression/instances/JSONArray.js +48 -0
  276. package/src/expression/instances/JSONObject.js +122 -0
  277. package/src/expression/instances/LogicConsole.js +45 -0
  278. package/src/expression/ts/TestExpression.ts +509 -0
  279. package/src/expression/{core → ts/core}/Delegate.ts +3 -1
  280. package/src/expression/{core → ts/core}/Expression.ts +23 -6
  281. package/src/expression/{core → ts/core}/Program.ts +1 -1
  282. package/src/expression/ts/exception/BreakWayException.ts +2 -0
  283. package/src/expression/ts/exception/ContinueWayException.ts +2 -0
  284. package/src/expression/{exception → ts/exception}/ExpressionException.ts +10 -4
  285. package/src/expression/{instances → ts/instances}/JSONObject.ts +6 -2
  286. package/src/font-style/font.css +4 -4
  287. package/src/layouts/CommonLayout.vue +56 -56
  288. package/src/layouts/GridView.vue +45 -45
  289. package/src/layouts/PageLayout.vue +151 -151
  290. package/src/layouts/SinglePageView.vue +136 -136
  291. package/src/layouts/header/AdminHeader.vue +132 -132
  292. package/src/layouts/header/HeaderNotice.vue +177 -177
  293. package/src/layouts/header/InstitutionDetail.vue +181 -181
  294. package/src/layouts/tabs/TabsHead.vue +189 -189
  295. package/src/layouts/tabs/TabsView.vue +389 -389
  296. package/src/lib.js +1 -1
  297. package/src/logic/LogicRunner.js +67 -0
  298. package/src/logic/TestLogic.js +13 -0
  299. package/src/logic/plugins/common/DateTools.js +32 -0
  300. package/src/logic/plugins/index.js +5 -0
  301. package/src/logic/ts/LogicRunner.ts +67 -0
  302. package/src/logic/ts/TestLogic.ts +13 -0
  303. package/src/main.js +34 -34
  304. package/src/mock/extend/index.js +84 -84
  305. package/src/mock/goods/index.js +108 -108
  306. package/src/pages/AMisDemo/AMisDemo.vue +325 -325
  307. package/src/pages/AMisDemo/AMisDemo2.vue +74 -74
  308. package/src/pages/DefaultExample/index.vue +77 -77
  309. package/src/pages/DynamicStatistics/ChartSelector.vue +331 -331
  310. package/src/pages/DynamicStatistics/DataTabs.vue +83 -83
  311. package/src/pages/DynamicStatistics/DynamicTable.vue +128 -128
  312. package/src/pages/DynamicStatistics/EvaluationArea.vue +69 -69
  313. package/src/pages/DynamicStatistics/FavoriteList.vue +50 -50
  314. package/src/pages/DynamicStatistics/QuestionHistoryAndFavorites.vue +591 -591
  315. package/src/pages/DynamicStatistics/SearchBar.vue +192 -192
  316. package/src/pages/DynamicStatistics/index.vue +282 -282
  317. package/src/pages/Example/childIndex.vue +15 -15
  318. package/src/pages/Example/index.vue +30 -30
  319. package/src/pages/LogicCallExample/index.vue +30 -0
  320. package/src/pages/NewDynamicStatistics/ChartSelector.vue +331 -331
  321. package/src/pages/NewDynamicStatistics/DataTabs.vue +122 -122
  322. package/src/pages/NewDynamicStatistics/DynamicTable.vue +128 -128
  323. package/src/pages/NewDynamicStatistics/EvaluationArea.vue +69 -69
  324. package/src/pages/NewDynamicStatistics/FavoriteList.vue +50 -50
  325. package/src/pages/NewDynamicStatistics/QuestionHistoryAndFavorites.vue +289 -289
  326. package/src/pages/NewDynamicStatistics/SearchBar.vue +193 -193
  327. package/src/pages/NewDynamicStatistics/index.vue +258 -258
  328. package/src/pages/Recording/index.vue +77 -77
  329. package/src/pages/ServiceReview/index.vue +284 -284
  330. package/src/pages/SubExample/index.vue +26 -26
  331. package/src/pages/WorkflowDetail/WorkFlowDemo.vue +32 -32
  332. package/src/pages/WorkflowDetail/WorkflowPageDetail/LeaveMessage.vue +131 -131
  333. package/src/pages/WorkflowDetail/WorkflowPageDetail/TrimTextTail.vue +23 -23
  334. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowBaseInformation.vue +302 -302
  335. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowBaseInformationDetails.vue +276 -276
  336. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowHandleReso.vue +997 -997
  337. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowTimeline.vue +222 -222
  338. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkOrderParentDetails.vue +233 -233
  339. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowDetailResso.vue +261 -261
  340. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowListResolution.vue +248 -248
  341. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowLog.vue +73 -73
  342. package/src/pages/XPageViewExample/index.vue +38 -38
  343. package/src/pages/XReportView/index.vue +64 -64
  344. package/src/pages/dashboard/workplace/WorkPlace.vue +141 -141
  345. package/src/pages/login/Login.vue +378 -378
  346. package/src/pages/login/LoginV3.vue +389 -389
  347. package/src/pages/lowCode/lowCodeEditor.vue +1219 -1219
  348. package/src/pages/lowCode/lowCodeRenderPage.vue +43 -43
  349. package/src/pages/report/ReportTable.js +124 -124
  350. package/src/pages/resourceManage/orgListManage.vue +98 -98
  351. package/src/pages/system/dictionary/index.vue +44 -44
  352. package/src/pages/system/monitor/loginInfor/index.vue +37 -37
  353. package/src/pages/system/monitor/operLog/index.vue +37 -37
  354. package/src/pages/system/settings/modifyPassword.vue +117 -117
  355. package/src/pages/system/ticket/index.vue +480 -480
  356. package/src/pages/system/ticket/submitTicketSuccess.vue +484 -484
  357. package/src/pages/userInfoDetailManage/ChangeMeterRecordQuery/index.vue +64 -64
  358. package/src/pages/userInfoDetailManage/FillCardRecordQuery/index.vue +76 -76
  359. package/src/pages/userInfoDetailManage/FillGasRecordQuery/index.vue +74 -74
  360. package/src/pages/userInfoDetailManage/InfoChangeRecordQuery/index.vue +64 -64
  361. package/src/pages/userInfoDetailManage/InstructRecordQuery/index.vue +64 -64
  362. package/src/pages/userInfoDetailManage/MachineRecordQuery/index.vue +74 -74
  363. package/src/pages/userInfoDetailManage/MeterParamRecordQuery/index.vue +64 -64
  364. package/src/pages/userInfoDetailManage/OtherChargeRecordQuery/index.vue +74 -74
  365. package/src/pages/userInfoDetailManage/TransferRecordQuery/index.vue +66 -66
  366. package/src/pages/userInfoDetailManage/UserChargeRecordQuery/index.vue +92 -92
  367. package/src/pages/userInfoDetailManage/UserHandRecordQuery/index.vue +86 -86
  368. package/src/pages/userInfoDetailManage/UserRecordQuery/index.vue +73 -73
  369. package/src/pages/userInfoDetailManage/WatchCollectionRecordQuery/index.vue +64 -64
  370. package/src/pages/userInfoDetailManage/index.vue +82 -82
  371. package/src/pages/userInfoDetailManage/userInfoDetailQueryTabs.vue +132 -132
  372. package/src/plugins/EventLogPlugin.js +33 -33
  373. package/src/plugins/FindParentsData.js +17 -17
  374. package/src/plugins/HiPrintPlugin.js +124 -124
  375. package/src/router/async/config.async.js +35 -35
  376. package/src/router/async/router.map.js +4 -2
  377. package/src/router/index.js +27 -27
  378. package/src/router.js +19 -19
  379. package/src/services/DataModel.js +30 -30
  380. package/src/services/LodopFuncs.js +137 -137
  381. package/src/services/api/TicketDetailsViewApi.js +46 -46
  382. package/src/services/api/cas.js +79 -79
  383. package/src/services/api/common.js +346 -346
  384. package/src/services/api/entity.js +18 -18
  385. package/src/services/api/index.js +17 -17
  386. package/src/services/api/restTools.js +145 -145
  387. package/src/services/api/workFlow.js +63 -63
  388. package/src/services/apiService.js +15 -15
  389. package/src/services/user.js +92 -90
  390. package/src/services/v3Api.js +116 -116
  391. package/src/store/modules/account.js +115 -115
  392. package/src/store/modules/index.js +5 -5
  393. package/src/store/modules/lowCode.js +33 -33
  394. package/src/store/modules/setting.js +119 -119
  395. package/src/store/mutation-types.js +1 -0
  396. package/src/theme/default/style.less +58 -58
  397. package/src/theme/global.less +159 -159
  398. package/src/utils/EncryptUtil.js +23 -0
  399. package/src/utils/authority-utils.js +85 -85
  400. package/src/utils/errorCode.js +6 -6
  401. package/src/utils/formatter.js +74 -74
  402. package/src/utils/htmlToPDF.js +108 -108
  403. package/src/utils/htmlToPDFApi.js +5 -5
  404. package/src/utils/login.js +188 -188
  405. package/src/utils/lowcode/lowcodeComponentMixin.js +120 -120
  406. package/src/utils/lowcode/lowcodeLog.js +29 -29
  407. package/src/utils/lowcode/lowcodeUtils.js +373 -373
  408. package/src/utils/lowcode/registerComponentForEditor.js +1 -1
  409. package/src/utils/lowcode/registerComponentForRender.js +11 -11
  410. package/src/utils/map-utils.js +47 -47
  411. package/src/utils/reg.js +95 -95
  412. package/src/utils/request.js +22 -2
  413. package/src/utils/runEvalFunction.js +14 -14
  414. package/src/utils/theme-color-replacer-extend.js +92 -92
  415. package/src/utils/util.js +329 -329
  416. package/src/utils/waterMark.js +31 -31
  417. package/test/Amis.spec.js +163 -163
  418. package/test/Tree.spec.js +167 -167
  419. package/test/myDialog.spec.js +46 -46
  420. package/test/request.test.js +17 -0
  421. package/test/util.test.js +52 -52
  422. package/test/v3Api.test.js +1983 -1983
  423. package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
  424. package/src/expression/TestExpression.ts +0 -72
  425. /package/src/expression/exception/{BreakWayException.ts → BreakWayException.js} +0 -0
  426. /package/src/expression/exception/{ContinueWayException.ts → ContinueWayException.js} +0 -0
  427. /package/src/expression/{ExpressionRunner.ts → ts/ExpressionRunner.ts} +0 -0
  428. /package/src/expression/{core → ts/core}/Token.ts +0 -0
  429. /package/src/expression/{enums → ts/enums}/ExpressionType.ts +0 -0
  430. /package/src/expression/{enums → ts/enums}/TokenType.ts +0 -0
  431. /package/src/expression/{exception → ts/exception}/ReturnWayException.ts +0 -0
  432. /package/src/expression/{exception → ts/exception}/ServiceException.ts +0 -0
  433. /package/src/expression/{instances → ts/instances}/JSONArray.ts +0 -0
  434. /package/src/expression/{instances → ts/instances}/LogicConsole.ts +0 -0
@@ -1,511 +1,511 @@
1
- <template>
2
- <a-modal
3
- :destroyOnClose="true"
4
- :visible="visible"
5
- :width="1250"
6
- :zIndex="1001"
7
- title="数据字段配置"
8
- @cancel="modelCancel"
9
- @ok="submitItem">
10
- <a-form-model
11
- ref="itemForm"
12
- :model="item"
13
- :rules="itemRules"
14
- layout="vertical">
15
- <a-row :gutter="16">
16
- <a-col :span="6">
17
- <a-card :bodyStyle="bodyStyle" title="基本属性">
18
- <a-divider style="font-size: 14px;margin-top: 0">字段信息</a-divider>
19
- <a-form-model-item label="标签名称" prop="title">
20
- <a-input v-model="item.title" placeholder="请输入标签名称"/>
21
- </a-form-model-item>
22
- <a-form-model-item
23
- label="字段名称"
24
- prop="key">
25
- <a-input ref="key" v-model="item.key" :disabled="keyDisabled" placeholder="请输入字段名">
26
- <a-popover slot="suffix" placement="bottom" title="关于字段名称">
27
- <template slot="content">
28
- <p>设置数据字段的名称</p>
29
- <p>用作SQL查询时为<span style="font-weight: bold">表别名.数据列名</span>的格式,如:i.id</p>
30
- </template>
31
- <a-icon style="color: rgba(0,0,0,.45)" type="info-circle"/>
32
- </a-popover>
33
- </a-input>
34
- </a-form-model-item>
35
- <a-form-model-item
36
- v-if="item.formType ==='addressSearch'"
37
- label="坐标字段名">
38
- <a-input :disabled="true" :value="`${item.key}_lng_lat`">
39
- <a-popover slot="suffix" placement="bottom" title="坐标字段名">
40
- <template slot="content">
41
- <p>表单类型为地点搜索框时:</p>
42
- <p>新增/修改表单内,字段名称会存放地址名称,坐标字段名会存放坐标信息</p>
43
- </template>
44
- <a-icon style="color: rgba(0,0,0,.45)" type="info-circle"/>
45
- </a-popover>
46
- </a-input>
47
- </a-form-model-item>
48
- </a-card>
49
- </a-col>
50
- <a-col :span="9">
51
- <a-card :bodyStyle="bodyStyle" title="核心配置">
52
- <template>
53
- <a-divider style="font-size: 14px;margin-top: 0">表单配置</a-divider>
54
- <a-form-model-item label="表单类型" prop="formType">
55
- <a-select v-model="item.formType" placeholder="请选择表单类型" @change="changeFormType(item)">
56
- <a-select-option v-for="formTypeItem in formType" :key="formTypeItem.key">{{ formTypeItem.label }}</a-select-option>
57
- </a-select>
58
- </a-form-model-item>
59
- <template v-if="item.formType">
60
- <a-form-model-item label="表单校验" prop="rule">
61
- <a-row :gutter="16">
62
- <a-col v-if="(item.formType === 'input' || item.formType === 'textarea' ) && item.formType !=='file' && item.formType !=='image' " :span="12" >
63
- <a-select v-model="item.rule.type" :getPopupContainer=" triggerNode => { return triggerNode.parentNode } " placeholder="校验类型">
64
- <a-select-option v-for="ruleTypeItem in formRuleType" :key="ruleTypeItem.key">{{ ruleTypeItem.label }}</a-select-option>
65
- <a-popover slot="suffixIcon" placement="bottom" title="关于表单校验类型">
66
- <template slot="content">
67
- <p>设置表单项的校验类型</p>
68
- </template>
69
- <a-icon style="color: rgba(0,0,0,.45)" type="info-circle"/>
70
- </a-popover>
71
- </a-select>
72
- </a-col>
73
- <a-col :span="12">
74
- <a-radio-group v-model="item.rule.required" button-style="solid" default-value="false">
75
- <a-radio-button value="true">
76
- 必选项
77
- </a-radio-button>
78
- <a-radio-button value="false">
79
- 非必选项
80
- </a-radio-button>
81
- </a-radio-group>
82
- </a-col>
83
- </a-row>
84
- </a-form-model-item>
85
- <a-form-model-item label="新增/修改场景选择" prop="addOrEdit">
86
- <a-select v-model="item.addOrEdit" placeholder="请选择场景">
87
- <a-select-option v-for="addOrEditItem in addOrEditTypeV" :key="addOrEditItem.key">{{ addOrEditItem.label }}</a-select-option>
88
- <a-popover
89
- slot="suffixIcon"
90
- placement="bottom"
91
- title="关于新增/修改场景选择">
92
- <template slot="content">
93
- <p>设置表单项的新增/修改场景</p>
94
- <p>静默新增类型用于非人为新增的数据,不会生成表单项,且必须设置字段用途</p>
95
- </template>
96
- <a-icon style="color: rgba(0,0,0,.45)" type="info-circle"/>
97
- </a-popover>
98
- </a-select>
99
- </a-form-model-item>
100
- <a-form-model-item v-if="item.addOrEdit === 'silenceAdd'" label="字段用途" prop="silencePurpose">
101
- <a-select v-model="item.silencePurpose" :getPopupContainer=" triggerNode => { return triggerNode.parentNode } " placeholder="请选择字段用途">
102
- <a-select-option v-for="silencePurposeTypeItem in silencePurposeType" :key="silencePurposeTypeItem.key">{{ silencePurposeTypeItem.label }}</a-select-option>
103
- <a-popover
104
- slot="suffixIcon"
105
- placement="bottom"
106
- title="关于字段用途">
107
- <template slot="content">
108
- <p>用于静默新增时设置字段用途</p>
109
- <p>在新增数据的表单提交时,页面会根据设置的字段用途自动获取相关数据并追加到表单中</p>
110
- <p>当字段用途选择为<span style="font-weight: bold">自定义</span>时,必须指定一个业务逻辑(Logic)名称,表单提交前会将表单内容作为参数调用该Logic接口,并将Logic返回值作为表单值
111
- </p>
112
- </template>
113
- <a-icon style="color: rgba(0,0,0,.45)" type="info-circle"/>
114
- </a-popover>
115
- </a-select>
116
- </a-form-model-item>
117
- <a-form-model-item v-if="item.silencePurpose === 'customize'" label="字段用途对应Logic" prop="silenceSource">
118
- <a-input v-model="item.silenceSource" placeholder="请输入业务逻辑名称"/>
119
- </a-form-model-item>
120
- </template>
121
- </template>
122
- </a-card>
123
- </a-col>
124
- <a-col v-if="item.formType" :span="9">
125
- <a-card :bodyStyle="bodyStyle" title="扩展属性">
126
- <template v-if="item.formType === 'input' || item.formType === 'select'">
127
- <a-divider style="font-size: 14px;margin-top: 0">提示相关</a-divider>
128
- <a-form-model-item label="表单水印" prop="placeholder">
129
- <a-input v-model="item.placeholder" placeholder="表单水印(placeholder)" />
130
- </a-form-model-item>
131
- </template>
132
- <template v-if="selectDataShow">
133
- <a-divider style="font-size: 14px;margin-top: 0">数据源相关</a-divider>
134
- <a-form-model-item label="数据源类型" prop="selectType">
135
- <a-select v-model="item.selectType" placeholder="请选择数据源类型" @change="changeSelectKType">
136
- <a-select-option v-for="selectDataTypeItem in selectDataType.filter(h=>!h.noMatch.includes(item.formType))" :key="selectDataTypeItem.key">{{ selectDataTypeItem.label }}</a-select-option>
137
- <a-popover
138
- slot="suffixIcon"
139
- placement="bottom"
140
- title="关于数据源类型">
141
- <template slot="content">
142
- <p>设置数据源</p>
143
- <p>数据源类型分为三种,你可以根据需要选择</p>
144
- <p>字典键:选项从字典表(t_dictionary)获取,你只需要选择字典键的名称即可</p>
145
- <p>业务逻辑名称:选项通过发起http请求调用指定的业务逻辑(Logic)接口获取</p>
146
- <p>固定集合:选项为静态值,JSONArray格式</p>
147
- <p>当表单为树形选择框类型时,返回的数据需按照以下形式:</p>
148
- <json-viewer
149
- :expand-depth="parseInt('100')"
150
- :value="DemoJson"
151
- style="overflow: auto;max-height: 440px"></json-viewer>
152
- </template>
153
- <a-icon style="color: rgba(0,0,0,.45)" type="info-circle"/>
154
- </a-popover>
155
- </a-select>
156
- </a-form-model-item>
157
- <a-form-model-item v-if="item.selectType" label="数据源" prop="selectKey">
158
- <a-select
159
- v-if="item.selectType === 'key'"
160
- v-model="item.selectKey"
161
- :filter-option="filterOption"
162
- placeholder="请选择字典键"
163
- show-search
164
- @change="changeSelectKey(item)">
165
- <template>
166
- <a-select-option
167
- v-for="(optionItem,index) in option"
168
- :key="index"
169
- :value="Object.keys(optionItem)[0]">{{ optionItem[Object.keys(optionItem)[0]] }}
170
- </a-select-option>
171
- </template>
172
- </a-select>
173
- <a-input v-if="item.selectType === 'logic'" v-model="item.selectKey" placeholder="请输入业务逻辑名称"/>
174
- <a-textarea v-if="item.selectType === 'fixArray'" v-model="item.selectKey" placeholder="请录入数据源"/>
175
- </a-form-model-item>
176
- <a-form-model-item v-if="item.selectType === 'logic'" label="数据源加载方式" prop="selectLoadType">
177
- <a-radio-group v-model="item.lazyLoad" button-style="solid" default-value="false">
178
- <a-radio-button value="true">
179
- {{ item.formType === 'treeSelect' ? '异步加载节点' : '懒加载搜索' }}
180
- </a-radio-button>
181
- <a-radio-button value="false">
182
- 一次性加载
183
- </a-radio-button>
184
- </a-radio-group>
185
- </a-form-model-item>
186
- </template>
187
- <a-form-model-item v-if="selectDataShow || item.groupIndexView" label="关联外键字段" prop="selectKeyName">
188
- <a-input v-model="item.selectKeyName" placeholder="该列关联的外键字段">
189
- <a-popover slot="suffix" placement="bottom" title="关于关联外键字段">
190
- <template slot="content">
191
- <p><span style="font-weight: bold;"><span style="color: #FF0036">非必需的实验性功能:</span>设置该参数需开发岗指导</span></p>
192
- <p>当字段与主子表外键有关系时,你可以指定<span style="font-weight: bold">该列所关联的外键字段名</span>
193
- </p>
194
- <p>设置该参数是为了该字段用作表单查询时,系统可以通过设置的关联外键字段,而非字面值作为查询条件</p>
195
- <p>示例:</p>
196
- <p>主表为t_userfiles(表档案)表,别名为u,与t_gasbrand(气表品牌表)有关联关系,别名为g,为了显示表档案对应的气表品牌数据,我们将数据字段名设置为g.f_gasbrand</p>
197
- <p>这样我们就可以在table中看到气表品牌了,但是用户如果通过气表品牌下拉框进行筛选,我们指定的g.f_gasbrand只是气表品牌的值,而实际关联字段是u.f_gasbrand_id</p>
198
- <p>所以如果我们指定了关联外键字段u.f_gasbrand_id,系统则会使用u.f_gasbrand_id筛选数据,而不是g.f_gasbrand,从而优化了查询效率
199
- </p>
200
- </template>
201
- <a-icon style="color: rgba(0,0,0,.45)" type="info-circle"/>
202
- </a-popover>
203
- </a-input>
204
- </a-form-model-item>
205
- <template v-if="item.formType === 'file' || item.formType === 'image'">
206
- <a-divider style="font-size: 14px;margin-top: 0">文件上传相关</a-divider>
207
- <a-form-model-item label="允许上传文件数量" prop="accept" style="margin-bottom: 5px;">
208
- <a-slider
209
- v-model="item.acceptCount"
210
- :marks="{ 1: '1', 3: '3', 5: '5', 10: '10', 15: '15', 20: '20'}"
211
- :max="20"
212
- :min="1"
213
- />
214
- </a-form-model-item>
215
- <a-form-model-item label="附件用途" prop="useType">
216
- <a-select v-model="item.useType" placeholder="指定文件用途,同表单不同用途">
217
- <a-select-option v-for="userTypeItem in $appdata.getDictionaryList('useType')" :key="userTypeItem.value">{{ userTypeItem.value }}</a-select-option>
218
- </a-select>
219
- </a-form-model-item>
220
- <a-form-model-item label="上传的仓库" prop="resUploadStock">
221
- <a-select v-model="item.resUploadStock" placeholder="选择文件上传到的仓库" @change="changeStock">
222
- <a-select-option v-for="stock in stockList" :key="stock.id">{{ stock.f_name }}</a-select-option>
223
- </a-select>
224
- </a-form-model-item>
225
- <a-form-model-item v-if="item.resUploadStock" label="具体路径" prop="pathKey">
226
- <a-select v-model="item.pathKey" placeholder="仓库扩展路径">
227
- <a-select-option v-for="pathKey in lowerPath" :key="pathKey.label">{{ pathKey.label }}</a-select-option>
228
- </a-select>
229
- </a-form-model-item>
230
- <a-form-model-item v-if="item.formType === 'file'" label="允许上传文件类型" prop="accept">
231
- <a-select v-model="item.accept" mode="tags" placeholder="指定文件类型,默认不限制" @change="itemAcceptChange">
232
- <a-select-option v-for="type_item in fileType" :key="type_item.accept">{{ type_item.label }}</a-select-option>
233
- </a-select>
234
- </a-form-model-item>
235
- </template>
236
- </a-card>
237
- </a-col>
238
- </a-row>
239
- </a-form-model>
240
- </a-modal>
241
- </template>
242
-
243
- <script>
244
- import {
245
- fileType,
246
- formRuleType,
247
- formType,
248
- silencePurposeType,
249
- addOrEditType,
250
- selectDataType
251
- } from '@vue2-client/config/CreateQueryConfig'
252
- import { post } from '@vue2-client/services/api'
253
- import JsonViewer from 'vue-json-viewer'
254
- import { getDictionaryParam } from '@vue2-client/services/api/common'
255
-
256
- const DemoJson = [{
257
- value: 'zhejiang',
258
- label: 'Zhejiang',
259
- children: [{ value: 'hangzhou', label: 'Hangzhou', children: [{ value: 'xihu', label: 'West Lake' }] }]
260
- }]
261
-
262
- export default {
263
- name: 'CreateSimpleFormQueryItem',
264
- components: {
265
- JsonViewer
266
- },
267
- computed: {
268
- // 是否展示数据源相关字段
269
- selectDataShow () {
270
- return this.item.formType === 'select' || this.item.formType === 'checkbox' || this.item.formType === 'radio' || this.item.formType === 'treeSelect'
271
- },
272
- // 字段名称是否禁用
273
- keyDisabled () {
274
- return this.item.formType === 'file' || this.item.formType === 'image'
275
- },
276
- addOrEditTypeV () {
277
- return addOrEditType.filter(item => {
278
- return item.match.findIndex(type => type === this.item.formType || type === 'all') > -1
279
- })
280
- }
281
- },
282
- data () {
283
- return {
284
- DemoJson,
285
- formType,
286
- formRuleType,
287
- fileType,
288
- silencePurposeType,
289
- addOrEditType,
290
- selectDataType,
291
- // 控制modal框
292
- visible: false,
293
- type: '',
294
- bodyStyle: {
295
- height: '500px',
296
- overflowY: 'auto'
297
- },
298
- // 表单项
299
- item: {
300
- key: '',
301
- title: '',
302
- rule: {
303
- required: 'false'
304
- },
305
- formType: 'input',
306
- accept: undefined,
307
- acceptCount: 3,
308
- pathKey: undefined,
309
- groupIndexView: undefined,
310
- selectType: undefined,
311
- selectKey: undefined,
312
- addOrEdit: 'all',
313
- fileRootPath: undefined,
314
- selectKeyName: undefined,
315
- resUploadStock: undefined
316
- },
317
- // 数据仓库列表
318
- stockList: [],
319
- // 扩展目录
320
- lowerPath: [],
321
- parent_node: [],
322
- // 必填控制
323
- itemRules: {
324
- formType: [{ required: true, message: '请输入表单类型', trigger: 'change' }],
325
- key: [{ required: true, message: '请输入字段名称', trigger: 'blur' }],
326
- title: [{ required: true, message: '请输入标签名称', trigger: 'blur' }],
327
- selectType: [{ required: true, message: '请选择数据源类型', trigger: 'change' }],
328
- selectKey: [{ required: true, message: '请输入数据源内容', trigger: 'blur' }],
329
- 'slot.value': [{ required: true, message: '请输入文本溢出上限长度', trigger: 'blur' }],
330
- 'slot.keyMap': [{ required: true, message: '请输入徽标字典键', trigger: 'blur' }],
331
- silencePurpose: [{ required: true, message: '请选择字段用途', trigger: 'change' }],
332
- silenceSource: [{ required: true, message: '请输入业务逻辑名称', trigger: 'blur' }],
333
- resUploadStock: [{ required: true, message: '请选择上传到的仓库', trigger: 'blur' }],
334
- pathKey: [{ required: true, message: '请选择上传到的扩展目录', trigger: 'blur' }]
335
- },
336
- // 字典键集合
337
- option: []
338
- }
339
- },
340
- mounted () {
341
- this.resetDataMode()
342
- },
343
- props: { },
344
- methods: {
345
- initItem (lysis = {}) {
346
- this.item = Object.assign({
347
- key: '',
348
- title: '',
349
- rule: {
350
- required: 'false'
351
- },
352
- selectKey: undefined,
353
- formType: 'input',
354
- acceptCount: 3,
355
- fileRootPath: undefined,
356
- pathKey: undefined,
357
- accept: undefined,
358
- selectType: undefined,
359
- groupIndex: undefined,
360
- groupIndexView: undefined,
361
- addOrEdit: 'all',
362
- selectKeyName: undefined,
363
- resUploadStock: undefined
364
- }, lysis)
365
- },
366
- // 控制 展示
367
- flashModal (show = 'None') {
368
- const bool = show === 'None' ? !this.visible : !!show
369
- if (bool && this.option.length === 0) {
370
- getDictionaryParam(true).then(res => {
371
- this.option = res
372
- })
373
- }
374
- this.visible = bool
375
- },
376
- // 编辑数据字段前准备数据
377
- editColumnItemExecute (_item) {
378
- this.type = '修改'
379
- const defaultValue = { formType: 'input', type: 'string', addOrEdit: 'all', slot: { type: 'default' }, rule: {}, selectKey: {} }
380
- _item = Object.assign({}, defaultValue, _item)
381
- if (_item.formType === 'file' || _item.formType === 'image') {
382
- this.getStocks()
383
- // 如果有仓库 则获取该仓库的扩展路径
384
- if (_item.resUploadStock) {
385
- this.lowerPath = this.stockList.filter(item => item.id === _item.resUploadStock)[0]?.f_lower_path_json ?? []
386
- }
387
- }
388
- if (_item.selectKey && _item.selectKey.length >= 6 && _item.selectType === 'logic' && _item.selectKey.substring(0, 6) === 'logic@') {
389
- _item.selectKey = _item.selectKey.substring(6)
390
- } else if (_item.selectKey && _item.selectKey instanceof Array) {
391
- _item.selectKey = JSON.stringify(_item.selectKey)
392
- }
393
- // 兼容旧作用域插槽属性
394
- this.compatibleTheSlot(_item)
395
- this.item = _item
396
- this.flashModal()
397
- },
398
- // 增加数据字段前数据处理
399
- addColumnItemExecute () {
400
- this.type = '新增'
401
- this.initItem()
402
- this.flashModal()
403
- },
404
- modelCancel () {
405
- this.flashModal()
406
- },
407
- submitItem () {
408
- this.$refs.itemForm.validate(valid => {
409
- if (valid) { this.itemHandle() }
410
- })
411
- },
412
- visitAcceptFile () {
413
- window.open('https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/input/file#attr-accept')
414
- },
415
- // 修改上传到哪个仓库
416
- changeStock (stock) {
417
- if (stock) {
418
- const stockValue = this.stockList.filter(item => item.id === stock)[0]
419
- this.lowerPath = stockValue.f_lower_path_json ?? []
420
- this.item.resUploadMode = stockValue.f_stock_type
421
- this.item.fileRootPath = stockValue.f_root_path
422
- this.item.stockAlias = stockValue.f_alias
423
- this.item.pathKey = undefined
424
- }
425
- },
426
- // 文件上传限制类型修改
427
- itemAcceptChange (newVal) {
428
- if (newVal.includes('*')) {
429
- this.item.accept = ['*']
430
- }
431
- },
432
- getColumn () {
433
- let result = {}
434
- this.$emit('getColumn', val => { result = val })
435
- return result
436
- },
437
- changeFormType (item) {
438
- this.initItem({ key: item.key, title: item.title, formType: item.formType })
439
- if (item.formType === 'file' || item.formType === 'image') {
440
- this.item.acceptCount = 3
441
- this.getStocks()
442
- this.item.accept = item.formType === 'file' ? ['*'] : ['.jpg,.jpeg,.ico,.gif,svg,.webp,.png,.bmp,.pjpeg,']
443
- this.item.resUploadMode = 'server'
444
- this.item.key = item.formType === 'file' ? 'FilesId' : 'Images'
445
- } else {
446
- if (['FilesId', 'Images'].includes(this.item.key)) { this.item.key = '' }
447
- this.resetDataMode()
448
- }
449
- },
450
- // 获取所有仓库
451
- getStocks () {
452
- if (this.stockList.length === 0) {
453
- post('/api/af-system/logic/getFilesStock', {}).then(res => {
454
- this.stockList = res.sort((a, b) => b.progress - a.progress)
455
- }).catch(e => {})
456
- }
457
- },
458
- // 重置数据模式
459
- resetDataMode () {},
460
- itemHandle () {
461
- // 查询表单项或者新增/修改表单项
462
- if (this.item.selectType && this.item.selectType === 'logic' && this.item.selectKey.substring(0, 6) !== 'logic@') {
463
- // 数据源为logic
464
- this.item.selectKey = 'logic@' + this.item.selectKey
465
- } else if (this.item.selectType && this.item.selectType === 'fixArray' && !this.isJSON(this.item.selectKey)) {
466
- // 数据源为固定json集合
467
- this.$message.warning('下拉框数据源不是JSON集合')
468
- return
469
- }
470
- // 如果和数据源字段无关
471
- if (!this.selectDataShow) {
472
- this.delKey(this.item, 'selectType', 'selectKey', 'lazyLoad', 'selectKeyName')
473
- }
474
- this.delKey(this.item, 'addOrEdit', 'queryType', 'default', 'silencePurpose', 'silenceSource', 'lazyLoad')
475
- this.$emit('itemHandle', this.item, this.type)
476
- this.initItem()
477
- this.resetDataMode()
478
- },
479
- changeSelectKType () {
480
- this.item.selectKey = undefined
481
- },
482
- changeSelectKey (item) {
483
- },
484
- filterOption (input, option) {
485
- return (
486
- option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
487
- )
488
- },
489
- delKey (obj, ...args) {
490
- args.forEach(v => {
491
- delete obj[v]
492
- })
493
- return obj
494
- },
495
- // 判断是否为json字符串
496
- isJSON (str) {
497
- if (typeof str == 'string') {
498
- try {
499
- const obj = JSON.parse(str)
500
- return !!(typeof obj == 'object' && obj)
501
- } catch (e) {
502
- return false
503
- }
504
- }
505
- },
506
- // 兼容旧插槽函数
507
- compatibleTheSlot (_item) {
508
- }
509
- }
510
- }
511
- </script>
1
+ <template>
2
+ <a-modal
3
+ :destroyOnClose="true"
4
+ :visible="visible"
5
+ :width="1250"
6
+ :zIndex="1001"
7
+ title="数据字段配置"
8
+ @cancel="modelCancel"
9
+ @ok="submitItem">
10
+ <a-form-model
11
+ ref="itemForm"
12
+ :model="item"
13
+ :rules="itemRules"
14
+ layout="vertical">
15
+ <a-row :gutter="16">
16
+ <a-col :span="6">
17
+ <a-card :bodyStyle="bodyStyle" title="基本属性">
18
+ <a-divider style="font-size: 14px;margin-top: 0">字段信息</a-divider>
19
+ <a-form-model-item label="标签名称" prop="title">
20
+ <a-input v-model="item.title" placeholder="请输入标签名称"/>
21
+ </a-form-model-item>
22
+ <a-form-model-item
23
+ label="字段名称"
24
+ prop="key">
25
+ <a-input ref="key" v-model="item.key" :disabled="keyDisabled" placeholder="请输入字段名">
26
+ <a-popover slot="suffix" placement="bottom" title="关于字段名称">
27
+ <template slot="content">
28
+ <p>设置数据字段的名称</p>
29
+ <p>用作SQL查询时为<span style="font-weight: bold">表别名.数据列名</span>的格式,如:i.id</p>
30
+ </template>
31
+ <a-icon style="color: rgba(0,0,0,.45)" type="info-circle"/>
32
+ </a-popover>
33
+ </a-input>
34
+ </a-form-model-item>
35
+ <a-form-model-item
36
+ v-if="item.formType ==='addressSearch'"
37
+ label="坐标字段名">
38
+ <a-input :disabled="true" :value="`${item.key}_lng_lat`">
39
+ <a-popover slot="suffix" placement="bottom" title="坐标字段名">
40
+ <template slot="content">
41
+ <p>表单类型为地点搜索框时:</p>
42
+ <p>新增/修改表单内,字段名称会存放地址名称,坐标字段名会存放坐标信息</p>
43
+ </template>
44
+ <a-icon style="color: rgba(0,0,0,.45)" type="info-circle"/>
45
+ </a-popover>
46
+ </a-input>
47
+ </a-form-model-item>
48
+ </a-card>
49
+ </a-col>
50
+ <a-col :span="9">
51
+ <a-card :bodyStyle="bodyStyle" title="核心配置">
52
+ <template>
53
+ <a-divider style="font-size: 14px;margin-top: 0">表单配置</a-divider>
54
+ <a-form-model-item label="表单类型" prop="formType">
55
+ <a-select v-model="item.formType" placeholder="请选择表单类型" @change="changeFormType(item)">
56
+ <a-select-option v-for="formTypeItem in formType" :key="formTypeItem.key">{{ formTypeItem.label }}</a-select-option>
57
+ </a-select>
58
+ </a-form-model-item>
59
+ <template v-if="item.formType">
60
+ <a-form-model-item label="表单校验" prop="rule">
61
+ <a-row :gutter="16">
62
+ <a-col v-if="(item.formType === 'input' || item.formType === 'textarea' ) && item.formType !=='file' && item.formType !=='image' " :span="12" >
63
+ <a-select v-model="item.rule.type" :getPopupContainer=" triggerNode => { return triggerNode.parentNode } " placeholder="校验类型">
64
+ <a-select-option v-for="ruleTypeItem in formRuleType" :key="ruleTypeItem.key">{{ ruleTypeItem.label }}</a-select-option>
65
+ <a-popover slot="suffixIcon" placement="bottom" title="关于表单校验类型">
66
+ <template slot="content">
67
+ <p>设置表单项的校验类型</p>
68
+ </template>
69
+ <a-icon style="color: rgba(0,0,0,.45)" type="info-circle"/>
70
+ </a-popover>
71
+ </a-select>
72
+ </a-col>
73
+ <a-col :span="12">
74
+ <a-radio-group v-model="item.rule.required" button-style="solid" default-value="false">
75
+ <a-radio-button value="true">
76
+ 必选项
77
+ </a-radio-button>
78
+ <a-radio-button value="false">
79
+ 非必选项
80
+ </a-radio-button>
81
+ </a-radio-group>
82
+ </a-col>
83
+ </a-row>
84
+ </a-form-model-item>
85
+ <a-form-model-item label="新增/修改场景选择" prop="addOrEdit">
86
+ <a-select v-model="item.addOrEdit" placeholder="请选择场景">
87
+ <a-select-option v-for="addOrEditItem in addOrEditTypeV" :key="addOrEditItem.key">{{ addOrEditItem.label }}</a-select-option>
88
+ <a-popover
89
+ slot="suffixIcon"
90
+ placement="bottom"
91
+ title="关于新增/修改场景选择">
92
+ <template slot="content">
93
+ <p>设置表单项的新增/修改场景</p>
94
+ <p>静默新增类型用于非人为新增的数据,不会生成表单项,且必须设置字段用途</p>
95
+ </template>
96
+ <a-icon style="color: rgba(0,0,0,.45)" type="info-circle"/>
97
+ </a-popover>
98
+ </a-select>
99
+ </a-form-model-item>
100
+ <a-form-model-item v-if="item.addOrEdit === 'silenceAdd'" label="字段用途" prop="silencePurpose">
101
+ <a-select v-model="item.silencePurpose" :getPopupContainer=" triggerNode => { return triggerNode.parentNode } " placeholder="请选择字段用途">
102
+ <a-select-option v-for="silencePurposeTypeItem in silencePurposeType" :key="silencePurposeTypeItem.key">{{ silencePurposeTypeItem.label }}</a-select-option>
103
+ <a-popover
104
+ slot="suffixIcon"
105
+ placement="bottom"
106
+ title="关于字段用途">
107
+ <template slot="content">
108
+ <p>用于静默新增时设置字段用途</p>
109
+ <p>在新增数据的表单提交时,页面会根据设置的字段用途自动获取相关数据并追加到表单中</p>
110
+ <p>当字段用途选择为<span style="font-weight: bold">自定义</span>时,必须指定一个业务逻辑(Logic)名称,表单提交前会将表单内容作为参数调用该Logic接口,并将Logic返回值作为表单值
111
+ </p>
112
+ </template>
113
+ <a-icon style="color: rgba(0,0,0,.45)" type="info-circle"/>
114
+ </a-popover>
115
+ </a-select>
116
+ </a-form-model-item>
117
+ <a-form-model-item v-if="item.silencePurpose === 'customize'" label="字段用途对应Logic" prop="silenceSource">
118
+ <a-input v-model="item.silenceSource" placeholder="请输入业务逻辑名称"/>
119
+ </a-form-model-item>
120
+ </template>
121
+ </template>
122
+ </a-card>
123
+ </a-col>
124
+ <a-col v-if="item.formType" :span="9">
125
+ <a-card :bodyStyle="bodyStyle" title="扩展属性">
126
+ <template v-if="item.formType === 'input' || item.formType === 'select'">
127
+ <a-divider style="font-size: 14px;margin-top: 0">提示相关</a-divider>
128
+ <a-form-model-item label="表单水印" prop="placeholder">
129
+ <a-input v-model="item.placeholder" placeholder="表单水印(placeholder)" />
130
+ </a-form-model-item>
131
+ </template>
132
+ <template v-if="selectDataShow">
133
+ <a-divider style="font-size: 14px;margin-top: 0">数据源相关</a-divider>
134
+ <a-form-model-item label="数据源类型" prop="selectType">
135
+ <a-select v-model="item.selectType" placeholder="请选择数据源类型" @change="changeSelectKType">
136
+ <a-select-option v-for="selectDataTypeItem in selectDataType.filter(h=>!h.noMatch.includes(item.formType))" :key="selectDataTypeItem.key">{{ selectDataTypeItem.label }}</a-select-option>
137
+ <a-popover
138
+ slot="suffixIcon"
139
+ placement="bottom"
140
+ title="关于数据源类型">
141
+ <template slot="content">
142
+ <p>设置数据源</p>
143
+ <p>数据源类型分为三种,你可以根据需要选择</p>
144
+ <p>字典键:选项从字典表(t_dictionary)获取,你只需要选择字典键的名称即可</p>
145
+ <p>业务逻辑名称:选项通过发起http请求调用指定的业务逻辑(Logic)接口获取</p>
146
+ <p>固定集合:选项为静态值,JSONArray格式</p>
147
+ <p>当表单为树形选择框类型时,返回的数据需按照以下形式:</p>
148
+ <json-viewer
149
+ :expand-depth="parseInt('100')"
150
+ :value="DemoJson"
151
+ style="overflow: auto;max-height: 440px"></json-viewer>
152
+ </template>
153
+ <a-icon style="color: rgba(0,0,0,.45)" type="info-circle"/>
154
+ </a-popover>
155
+ </a-select>
156
+ </a-form-model-item>
157
+ <a-form-model-item v-if="item.selectType" label="数据源" prop="selectKey">
158
+ <a-select
159
+ v-if="item.selectType === 'key'"
160
+ v-model="item.selectKey"
161
+ :filter-option="filterOption"
162
+ placeholder="请选择字典键"
163
+ show-search
164
+ @change="changeSelectKey(item)">
165
+ <template>
166
+ <a-select-option
167
+ v-for="(optionItem,index) in option"
168
+ :key="index"
169
+ :value="Object.keys(optionItem)[0]">{{ optionItem[Object.keys(optionItem)[0]] }}
170
+ </a-select-option>
171
+ </template>
172
+ </a-select>
173
+ <a-input v-if="item.selectType === 'logic'" v-model="item.selectKey" placeholder="请输入业务逻辑名称"/>
174
+ <a-textarea v-if="item.selectType === 'fixArray'" v-model="item.selectKey" placeholder="请录入数据源"/>
175
+ </a-form-model-item>
176
+ <a-form-model-item v-if="item.selectType === 'logic'" label="数据源加载方式" prop="selectLoadType">
177
+ <a-radio-group v-model="item.lazyLoad" button-style="solid" default-value="false">
178
+ <a-radio-button value="true">
179
+ {{ item.formType === 'treeSelect' ? '异步加载节点' : '懒加载搜索' }}
180
+ </a-radio-button>
181
+ <a-radio-button value="false">
182
+ 一次性加载
183
+ </a-radio-button>
184
+ </a-radio-group>
185
+ </a-form-model-item>
186
+ </template>
187
+ <a-form-model-item v-if="selectDataShow || item.groupIndexView" label="关联外键字段" prop="selectKeyName">
188
+ <a-input v-model="item.selectKeyName" placeholder="该列关联的外键字段">
189
+ <a-popover slot="suffix" placement="bottom" title="关于关联外键字段">
190
+ <template slot="content">
191
+ <p><span style="font-weight: bold;"><span style="color: #FF0036">非必需的实验性功能:</span>设置该参数需开发岗指导</span></p>
192
+ <p>当字段与主子表外键有关系时,你可以指定<span style="font-weight: bold">该列所关联的外键字段名</span>
193
+ </p>
194
+ <p>设置该参数是为了该字段用作表单查询时,系统可以通过设置的关联外键字段,而非字面值作为查询条件</p>
195
+ <p>示例:</p>
196
+ <p>主表为t_userfiles(表档案)表,别名为u,与t_gasbrand(气表品牌表)有关联关系,别名为g,为了显示表档案对应的气表品牌数据,我们将数据字段名设置为g.f_gasbrand</p>
197
+ <p>这样我们就可以在table中看到气表品牌了,但是用户如果通过气表品牌下拉框进行筛选,我们指定的g.f_gasbrand只是气表品牌的值,而实际关联字段是u.f_gasbrand_id</p>
198
+ <p>所以如果我们指定了关联外键字段u.f_gasbrand_id,系统则会使用u.f_gasbrand_id筛选数据,而不是g.f_gasbrand,从而优化了查询效率
199
+ </p>
200
+ </template>
201
+ <a-icon style="color: rgba(0,0,0,.45)" type="info-circle"/>
202
+ </a-popover>
203
+ </a-input>
204
+ </a-form-model-item>
205
+ <template v-if="item.formType === 'file' || item.formType === 'image'">
206
+ <a-divider style="font-size: 14px;margin-top: 0">文件上传相关</a-divider>
207
+ <a-form-model-item label="允许上传文件数量" prop="accept" style="margin-bottom: 5px;">
208
+ <a-slider
209
+ v-model="item.acceptCount"
210
+ :marks="{ 1: '1', 3: '3', 5: '5', 10: '10', 15: '15', 20: '20'}"
211
+ :max="20"
212
+ :min="1"
213
+ />
214
+ </a-form-model-item>
215
+ <a-form-model-item label="附件用途" prop="useType">
216
+ <a-select v-model="item.useType" placeholder="指定文件用途,同表单不同用途">
217
+ <a-select-option v-for="userTypeItem in $appdata.getDictionaryList('useType')" :key="userTypeItem.value">{{ userTypeItem.value }}</a-select-option>
218
+ </a-select>
219
+ </a-form-model-item>
220
+ <a-form-model-item label="上传的仓库" prop="resUploadStock">
221
+ <a-select v-model="item.resUploadStock" placeholder="选择文件上传到的仓库" @change="changeStock">
222
+ <a-select-option v-for="stock in stockList" :key="stock.id">{{ stock.f_name }}</a-select-option>
223
+ </a-select>
224
+ </a-form-model-item>
225
+ <a-form-model-item v-if="item.resUploadStock" label="具体路径" prop="pathKey">
226
+ <a-select v-model="item.pathKey" placeholder="仓库扩展路径">
227
+ <a-select-option v-for="pathKey in lowerPath" :key="pathKey.label">{{ pathKey.label }}</a-select-option>
228
+ </a-select>
229
+ </a-form-model-item>
230
+ <a-form-model-item v-if="item.formType === 'file'" label="允许上传文件类型" prop="accept">
231
+ <a-select v-model="item.accept" mode="tags" placeholder="指定文件类型,默认不限制" @change="itemAcceptChange">
232
+ <a-select-option v-for="type_item in fileType" :key="type_item.accept">{{ type_item.label }}</a-select-option>
233
+ </a-select>
234
+ </a-form-model-item>
235
+ </template>
236
+ </a-card>
237
+ </a-col>
238
+ </a-row>
239
+ </a-form-model>
240
+ </a-modal>
241
+ </template>
242
+
243
+ <script>
244
+ import {
245
+ fileType,
246
+ formRuleType,
247
+ formType,
248
+ silencePurposeType,
249
+ addOrEditType,
250
+ selectDataType
251
+ } from '@vue2-client/config/CreateQueryConfig'
252
+ import { post } from '@vue2-client/services/api'
253
+ import JsonViewer from 'vue-json-viewer'
254
+ import { getDictionaryParam } from '@vue2-client/services/api/common'
255
+
256
+ const DemoJson = [{
257
+ value: 'zhejiang',
258
+ label: 'Zhejiang',
259
+ children: [{ value: 'hangzhou', label: 'Hangzhou', children: [{ value: 'xihu', label: 'West Lake' }] }]
260
+ }]
261
+
262
+ export default {
263
+ name: 'CreateSimpleFormQueryItem',
264
+ components: {
265
+ JsonViewer
266
+ },
267
+ computed: {
268
+ // 是否展示数据源相关字段
269
+ selectDataShow () {
270
+ return this.item.formType === 'select' || this.item.formType === 'checkbox' || this.item.formType === 'radio' || this.item.formType === 'treeSelect'
271
+ },
272
+ // 字段名称是否禁用
273
+ keyDisabled () {
274
+ return this.item.formType === 'file' || this.item.formType === 'image'
275
+ },
276
+ addOrEditTypeV () {
277
+ return addOrEditType.filter(item => {
278
+ return item.match.findIndex(type => type === this.item.formType || type === 'all') > -1
279
+ })
280
+ }
281
+ },
282
+ data () {
283
+ return {
284
+ DemoJson,
285
+ formType,
286
+ formRuleType,
287
+ fileType,
288
+ silencePurposeType,
289
+ addOrEditType,
290
+ selectDataType,
291
+ // 控制modal框
292
+ visible: false,
293
+ type: '',
294
+ bodyStyle: {
295
+ height: '500px',
296
+ overflowY: 'auto'
297
+ },
298
+ // 表单项
299
+ item: {
300
+ key: '',
301
+ title: '',
302
+ rule: {
303
+ required: 'false'
304
+ },
305
+ formType: 'input',
306
+ accept: undefined,
307
+ acceptCount: 3,
308
+ pathKey: undefined,
309
+ groupIndexView: undefined,
310
+ selectType: undefined,
311
+ selectKey: undefined,
312
+ addOrEdit: 'all',
313
+ fileRootPath: undefined,
314
+ selectKeyName: undefined,
315
+ resUploadStock: undefined
316
+ },
317
+ // 数据仓库列表
318
+ stockList: [],
319
+ // 扩展目录
320
+ lowerPath: [],
321
+ parent_node: [],
322
+ // 必填控制
323
+ itemRules: {
324
+ formType: [{ required: true, message: '请输入表单类型', trigger: 'change' }],
325
+ key: [{ required: true, message: '请输入字段名称', trigger: 'blur' }],
326
+ title: [{ required: true, message: '请输入标签名称', trigger: 'blur' }],
327
+ selectType: [{ required: true, message: '请选择数据源类型', trigger: 'change' }],
328
+ selectKey: [{ required: true, message: '请输入数据源内容', trigger: 'blur' }],
329
+ 'slot.value': [{ required: true, message: '请输入文本溢出上限长度', trigger: 'blur' }],
330
+ 'slot.keyMap': [{ required: true, message: '请输入徽标字典键', trigger: 'blur' }],
331
+ silencePurpose: [{ required: true, message: '请选择字段用途', trigger: 'change' }],
332
+ silenceSource: [{ required: true, message: '请输入业务逻辑名称', trigger: 'blur' }],
333
+ resUploadStock: [{ required: true, message: '请选择上传到的仓库', trigger: 'blur' }],
334
+ pathKey: [{ required: true, message: '请选择上传到的扩展目录', trigger: 'blur' }]
335
+ },
336
+ // 字典键集合
337
+ option: []
338
+ }
339
+ },
340
+ mounted () {
341
+ this.resetDataMode()
342
+ },
343
+ props: { },
344
+ methods: {
345
+ initItem (lysis = {}) {
346
+ this.item = Object.assign({
347
+ key: '',
348
+ title: '',
349
+ rule: {
350
+ required: 'false'
351
+ },
352
+ selectKey: undefined,
353
+ formType: 'input',
354
+ acceptCount: 3,
355
+ fileRootPath: undefined,
356
+ pathKey: undefined,
357
+ accept: undefined,
358
+ selectType: undefined,
359
+ groupIndex: undefined,
360
+ groupIndexView: undefined,
361
+ addOrEdit: 'all',
362
+ selectKeyName: undefined,
363
+ resUploadStock: undefined
364
+ }, lysis)
365
+ },
366
+ // 控制 展示
367
+ flashModal (show = 'None') {
368
+ const bool = show === 'None' ? !this.visible : !!show
369
+ if (bool && this.option.length === 0) {
370
+ getDictionaryParam(true).then(res => {
371
+ this.option = res
372
+ })
373
+ }
374
+ this.visible = bool
375
+ },
376
+ // 编辑数据字段前准备数据
377
+ editColumnItemExecute (_item) {
378
+ this.type = '修改'
379
+ const defaultValue = { formType: 'input', type: 'string', addOrEdit: 'all', slot: { type: 'default' }, rule: {}, selectKey: {} }
380
+ _item = Object.assign({}, defaultValue, _item)
381
+ if (_item.formType === 'file' || _item.formType === 'image') {
382
+ this.getStocks()
383
+ // 如果有仓库 则获取该仓库的扩展路径
384
+ if (_item.resUploadStock) {
385
+ this.lowerPath = this.stockList.filter(item => item.id === _item.resUploadStock)[0]?.f_lower_path_json ?? []
386
+ }
387
+ }
388
+ if (_item.selectKey && _item.selectKey.length >= 6 && _item.selectType === 'logic' && _item.selectKey.substring(0, 6) === 'logic@') {
389
+ _item.selectKey = _item.selectKey.substring(6)
390
+ } else if (_item.selectKey && _item.selectKey instanceof Array) {
391
+ _item.selectKey = JSON.stringify(_item.selectKey)
392
+ }
393
+ // 兼容旧作用域插槽属性
394
+ this.compatibleTheSlot(_item)
395
+ this.item = _item
396
+ this.flashModal()
397
+ },
398
+ // 增加数据字段前数据处理
399
+ addColumnItemExecute () {
400
+ this.type = '新增'
401
+ this.initItem()
402
+ this.flashModal()
403
+ },
404
+ modelCancel () {
405
+ this.flashModal()
406
+ },
407
+ submitItem () {
408
+ this.$refs.itemForm.validate(valid => {
409
+ if (valid) { this.itemHandle() }
410
+ })
411
+ },
412
+ visitAcceptFile () {
413
+ window.open('https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/input/file#attr-accept')
414
+ },
415
+ // 修改上传到哪个仓库
416
+ changeStock (stock) {
417
+ if (stock) {
418
+ const stockValue = this.stockList.filter(item => item.id === stock)[0]
419
+ this.lowerPath = stockValue.f_lower_path_json ?? []
420
+ this.item.resUploadMode = stockValue.f_stock_type
421
+ this.item.fileRootPath = stockValue.f_root_path
422
+ this.item.stockAlias = stockValue.f_alias
423
+ this.item.pathKey = undefined
424
+ }
425
+ },
426
+ // 文件上传限制类型修改
427
+ itemAcceptChange (newVal) {
428
+ if (newVal.includes('*')) {
429
+ this.item.accept = ['*']
430
+ }
431
+ },
432
+ getColumn () {
433
+ let result = {}
434
+ this.$emit('getColumn', val => { result = val })
435
+ return result
436
+ },
437
+ changeFormType (item) {
438
+ this.initItem({ key: item.key, title: item.title, formType: item.formType })
439
+ if (item.formType === 'file' || item.formType === 'image') {
440
+ this.item.acceptCount = 3
441
+ this.getStocks()
442
+ this.item.accept = item.formType === 'file' ? ['*'] : ['.jpg,.jpeg,.ico,.gif,svg,.webp,.png,.bmp,.pjpeg,']
443
+ this.item.resUploadMode = 'server'
444
+ this.item.key = item.formType === 'file' ? 'FilesId' : 'Images'
445
+ } else {
446
+ if (['FilesId', 'Images'].includes(this.item.key)) { this.item.key = '' }
447
+ this.resetDataMode()
448
+ }
449
+ },
450
+ // 获取所有仓库
451
+ getStocks () {
452
+ if (this.stockList.length === 0) {
453
+ post('/api/af-system/logic/getFilesStock', {}).then(res => {
454
+ this.stockList = res.sort((a, b) => b.progress - a.progress)
455
+ }).catch(e => {})
456
+ }
457
+ },
458
+ // 重置数据模式
459
+ resetDataMode () {},
460
+ itemHandle () {
461
+ // 查询表单项或者新增/修改表单项
462
+ if (this.item.selectType && this.item.selectType === 'logic' && this.item.selectKey.substring(0, 6) !== 'logic@') {
463
+ // 数据源为logic
464
+ this.item.selectKey = 'logic@' + this.item.selectKey
465
+ } else if (this.item.selectType && this.item.selectType === 'fixArray' && !this.isJSON(this.item.selectKey)) {
466
+ // 数据源为固定json集合
467
+ this.$message.warning('下拉框数据源不是JSON集合')
468
+ return
469
+ }
470
+ // 如果和数据源字段无关
471
+ if (!this.selectDataShow) {
472
+ this.delKey(this.item, 'selectType', 'selectKey', 'lazyLoad', 'selectKeyName')
473
+ }
474
+ this.delKey(this.item, 'addOrEdit', 'queryType', 'default', 'silencePurpose', 'silenceSource', 'lazyLoad')
475
+ this.$emit('itemHandle', this.item, this.type)
476
+ this.initItem()
477
+ this.resetDataMode()
478
+ },
479
+ changeSelectKType () {
480
+ this.item.selectKey = undefined
481
+ },
482
+ changeSelectKey (item) {
483
+ },
484
+ filterOption (input, option) {
485
+ return (
486
+ option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
487
+ )
488
+ },
489
+ delKey (obj, ...args) {
490
+ args.forEach(v => {
491
+ delete obj[v]
492
+ })
493
+ return obj
494
+ },
495
+ // 判断是否为json字符串
496
+ isJSON (str) {
497
+ if (typeof str == 'string') {
498
+ try {
499
+ const obj = JSON.parse(str)
500
+ return !!(typeof obj == 'object' && obj)
501
+ } catch (e) {
502
+ return false
503
+ }
504
+ }
505
+ },
506
+ // 兼容旧插槽函数
507
+ compatibleTheSlot (_item) {
508
+ }
509
+ }
510
+ }
511
+ </script>