vue2-client 1.15.91 → 1.15.93

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 (461) hide show
  1. package/.cursorrules +19 -19
  2. package/.env.apply +19 -19
  3. package/.env.gaslink +19 -19
  4. package/.env.his +19 -19
  5. package/.env.liuli +20 -20
  6. package/.env.scada +19 -19
  7. package/.eslintrc.js +90 -90
  8. package/.history/public/his/editor/editor_20250606134713.html +51 -0
  9. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527173925.vue +509 -0
  10. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174316.vue +524 -0
  11. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174419.vue +524 -0
  12. package/.history/src/base-client/components/common/AddressSearchCombobox/AddressSearchCombobox_20250527174422.vue +524 -0
  13. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172825.vue +207 -0
  14. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172945.vue +211 -0
  15. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611172949.vue +212 -0
  16. package/.history/src/base-client/components/common/XAddReport/XAddReport_20250611173010.vue +212 -0
  17. package/.history/src/base-client/components/common/XForm/XFormItem_20250508134122.vue +1320 -0
  18. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171604.vue +1332 -0
  19. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171613.vue +1331 -0
  20. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171703.vue +1331 -0
  21. package/.history/src/base-client/components/common/XForm/XFormItem_20250527171720.vue +1331 -0
  22. package/.history/src/base-client/components/common/XForm/XFormItem_20250527174327.vue +1339 -0
  23. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612092804.vue +731 -0
  24. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612112546.vue +748 -0
  25. package/.history/src/base-client/components/common/XReportGrid/XReportTrGroup_20250612113808.vue +748 -0
  26. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115237.vue +1071 -0
  27. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115346.vue +1078 -0
  28. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115350.vue +1077 -0
  29. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115415.vue +1077 -0
  30. package/.history/src/base-client/components/common/XReportGrid/XReport_20250612115429.vue +1077 -0
  31. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611091619.vue +442 -0
  32. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092547.vue +442 -0
  33. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092552.vue +442 -0
  34. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092744.vue +475 -0
  35. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092955.vue +475 -0
  36. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092957.vue +475 -0
  37. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095652.vue +477 -0
  38. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095701.vue +477 -0
  39. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095704.vue +477 -0
  40. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100005.vue +473 -0
  41. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100011.vue +473 -0
  42. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100014.vue +473 -0
  43. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100833.vue +473 -0
  44. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100853.vue +473 -0
  45. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100940.vue +473 -0
  46. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101011.vue +473 -0
  47. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101013.vue +473 -0
  48. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101014.vue +473 -0
  49. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101159.vue +473 -0
  50. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101238.vue +474 -0
  51. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101240.vue +474 -0
  52. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101242.vue +474 -0
  53. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101404.vue +472 -0
  54. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101410.vue +472 -0
  55. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101459.vue +472 -0
  56. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101500.vue +472 -0
  57. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101502.vue +472 -0
  58. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101504.vue +472 -0
  59. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101610.vue +501 -0
  60. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101700.vue +501 -0
  61. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101702.vue +501 -0
  62. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101741.vue +504 -0
  63. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101749.vue +504 -0
  64. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101759.vue +504 -0
  65. package/.history/src/base-client/components/his/XHisEditor/dome_20250611091349.vue +131 -0
  66. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105854.vue +160 -0
  67. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105902.vue +160 -0
  68. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105924.vue +160 -0
  69. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105932.vue +158 -0
  70. package/.history/src/base-client/components/his/XList/XList_20250609135848.vue +173 -0
  71. package/.history/src/base-client/components/his/XList/XList_20250609141026.vue +222 -0
  72. package/.history/src/base-client/components/his/XList/XList_20250609141035.vue +229 -0
  73. package/.history/src/base-client/components/his/XList/XList_20250609141103.vue +229 -0
  74. package/.history/src/base-client/components/his/XList/XList_20250609141105.vue +229 -0
  75. package/.history/src/base-client/components/his/XList/XList_20250609141334.vue +241 -0
  76. package/.history/src/base-client/components/his/XList/XList_20250609141404.vue +241 -0
  77. package/.history/src/base-client/components/his/XList/XList_20250609141406.vue +241 -0
  78. package/.history/src/base-client/components/his/XList/XList_20250609141801.vue +245 -0
  79. package/.history/src/base-client/components/his/XList/XList_20250609142033.vue +245 -0
  80. package/.history/src/base-client/components/his/XList/XList_20250609142038.vue +245 -0
  81. package/.history/src/base-client/components/his/XList/XList_20250609142435.vue +255 -0
  82. package/.history/src/base-client/components/his/XList/XList_20250609142503.vue +255 -0
  83. package/.history/src/base-client/components/his/XList/XList_20250609142504.vue +255 -0
  84. package/.history/src/base-client/components/his/XList/XList_20250609143012.vue +270 -0
  85. package/.history/src/base-client/components/his/XList/XList_20250609143044.vue +270 -0
  86. package/.history/src/base-client/components/his/XList/XList_20250609143046.vue +270 -0
  87. package/.history/src/base-client/components/his/XList/XList_20250609143210.vue +270 -0
  88. package/.history/src/base-client/components/his/XList/XList_20250609144339.vue +294 -0
  89. package/.history/src/base-client/components/his/XList/XList_20250609144410.vue +294 -0
  90. package/.history/src/base-client/components/his/XList/XList_20250609144412.vue +294 -0
  91. package/.history/src/base-client/components/his/XList/XList_20250609144647.vue +303 -0
  92. package/.history/src/base-client/components/his/XList/XList_20250609144716.vue +303 -0
  93. package/.history/src/base-client/components/his/XList/XList_20250609144729.vue +303 -0
  94. package/.history/src/base-client/components/his/XList/XList_20250609151232.vue +288 -0
  95. package/.history/src/base-client/components/his/XList/XList_20250609151247.vue +288 -0
  96. package/.history/src/base-client/components/his/XList/XList_20250609151252.vue +288 -0
  97. package/.history/src/base-client/components/his/XList/XList_20250609161220.vue +317 -0
  98. package/.history/src/base-client/components/his/XList/XList_20250609161258.vue +306 -0
  99. package/.history/src/base-client/components/his/XList/XList_20250609161319.vue +306 -0
  100. package/.history/src/base-client/components/his/XList/XList_20250609161320.vue +306 -0
  101. package/.history/src/base-client/components/his/XList/XList_20250704142024.vue +495 -0
  102. package/.history/src/base-client/components/his/XList/XList_20250704142033.vue +495 -0
  103. package/.history/src/base-client/components/his/XList/XList_20250704142040.vue +494 -0
  104. package/.history/src/base-client/components/his/XList/XList_20250704142211.vue +494 -0
  105. package/.history/src/base-client/components/his/XList/XList_20250704142214.vue +494 -0
  106. package/.history/src/base-client/components/his/XList/XList_20250704143010.vue +495 -0
  107. package/.history/src/base-client/components/his/XList/XList_20250704143203.vue +495 -0
  108. package/.history/src/base-client/components/his/XList/XList_20250707095101.vue +492 -0
  109. package/.history/src/base-client/components/his/XList/XList_20250707100152.vue +492 -0
  110. package/.history/src/base-client/components/his/XList/XList_20250707100200.vue +485 -0
  111. package/.history/src/base-client/components/his/XList/XList_20250707100208.vue +485 -0
  112. package/.history/src/base-client/components/his/XList/XList_20250707100259.vue +488 -0
  113. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250609151519.vue +222 -0
  114. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155514.vue +183 -0
  115. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155556.vue +183 -0
  116. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612155600.vue +183 -0
  117. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612181609.vue +206 -0
  118. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250612181629.vue +209 -0
  119. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095553.vue +242 -0
  120. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095610.vue +242 -0
  121. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613095612.vue +242 -0
  122. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100041.vue +251 -0
  123. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100047.vue +251 -0
  124. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100054.vue +250 -0
  125. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100105.vue +250 -0
  126. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100107.vue +250 -0
  127. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613100114.vue +250 -0
  128. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140844.vue +238 -0
  129. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140910.vue +238 -0
  130. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250613140912.vue +238 -0
  131. package/CHANGELOG.md +824 -824
  132. package/Components.md +60 -60
  133. package/Users/objecrt/af-vue2-client/src/base-client/components/his/XShiftSchedule/XShiftSchedule.vue +36 -0
  134. package/docs/LowCode/lowcode.md +155 -155
  135. package/docs/LowCode/lowcodeForDeveloper.md +230 -230
  136. package/docs/index.md +30 -30
  137. package/docs//345/207/275/346/225/260/344/275/277/347/224/250/347/233/270/345/205/263.md +6 -0
  138. package/index.js +31 -31
  139. package/jest-transform-stub.js +8 -8
  140. package/jest.setup.js +7 -7
  141. package/jsconfig.json +19 -19
  142. package/package.json +1 -1
  143. package/public/his/editor/editor.html +51 -51
  144. package/public/his/editor/mock/bind_data.html +779 -779
  145. package/public/his/editor/mock/data_table.html +40 -40
  146. package/public/his/editor/mock/sign.html +75 -75
  147. package/public/his/editor/vender/JsBarcode.all.js +3669 -3669
  148. package/public/his/editor/vender/date97/My97DatePicker.htm +65 -65
  149. package/public/his/editor/vender/date97/WdatePicker.js +677 -677
  150. package/public/his/editor/vender/date97/calendar.js +4 -4
  151. package/public/his/editor/vender/date97/lang/en.js +13 -13
  152. package/public/his/editor/vender/date97/lang/zh-cn.js +13 -13
  153. package/public/his/editor/vender/date97/lang/zh-tw.js +13 -13
  154. package/public/his/editor/vender/date97/skin/WdatePicker.css +10 -10
  155. package/public/his/editor/vender/date97/skin/default/datepicker.css +328 -328
  156. package/public/his/editor/vender/date97/skin/ext/datepicker.css +308 -308
  157. package/public/his/editor/vender/date97/skin/whyGreen/datepicker.css +255 -255
  158. package/public/his/editor/vender/diff.js +1627 -1627
  159. package/public/his/editor/vender/editor.js +1 -1
  160. package/public/his/editor/vender/fabric.js +31187 -31187
  161. package/public/his/editor/vender/jquery/jquery.base64.js +190 -190
  162. package/public/his/editor/vender/jquery/jquery.js +10872 -10872
  163. package/public/his/editor/vender/jquery/jquery.print.js +255 -255
  164. package/public/his/editor/vender/jquery/zTreeStyle/zTreeStyle.css +96 -96
  165. package/public/his/editor/vender/mui/mui.min.css +4 -4
  166. package/public/his/editor/vender/mui/mui.min.js +5 -5
  167. package/public/his/editor/vender/mui/mui.picker.min.css +6 -6
  168. package/public/his/editor/vender/mui/mui.picker.min.js +6 -6
  169. package/public/his/editor/vender/qrcode.js +7 -7
  170. package/public/his/editor/vender/requirejs/require.js +2145 -2145
  171. package/public/his/editor/vender/signature/jSignature.CompressorSVG.js +518 -518
  172. package/public/his/editor/vender/signature/jSignature.UndoButton.js +164 -164
  173. package/public/his/editor/vender/signature/jSignature.js +1486 -1486
  174. package/public/his/editor/vender/validator.js +5094 -5094
  175. package/public/his/editor/vender/weui/weui.css +5659 -5659
  176. package/public/his/editor/vender/weui/weui.min.css +4 -4
  177. package/public/his/editor/vender/weui/weui.min.js +11 -11
  178. package/public/index.html +27 -27
  179. package/src/assets/img/querySlotDemo.svg +15 -15
  180. package/src/assets/svg/badtwo.svg +1 -1
  181. package/src/assets/svg/goodtwo.svg +1 -1
  182. package/src/base-client/components/AI/AskAiBtn.vue +136 -136
  183. package/src/base-client/components/AI/demo.vue +31 -31
  184. package/src/base-client/components/TreeList/TreeList.vue +91 -0
  185. package/src/base-client/components/TreeList/TreeNode.vue +81 -0
  186. package/src/base-client/components/common/AddressSearchCombobox/IcMapIcon.vue +16 -16
  187. package/src/base-client/components/common/AddressSearchCombobox/demo.vue +36 -36
  188. package/src/base-client/components/common/AddressSearchCombobox/ic_map.svg +6 -6
  189. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
  190. package/src/base-client/components/common/CitySelect/index.js +3 -3
  191. package/src/base-client/components/common/CitySelect/index.md +109 -109
  192. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +669 -669
  193. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +1014 -1014
  194. package/src/base-client/components/common/CreateQuery/index.js +3 -3
  195. package/src/base-client/components/common/CreateQuery/index.md +42 -42
  196. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +452 -452
  197. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +511 -511
  198. package/src/base-client/components/common/CreateSimpleFormQuery/index.js +3 -3
  199. package/src/base-client/components/common/CreateSimpleFormQuery/index.md +42 -42
  200. package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
  201. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  202. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +166 -166
  203. package/src/base-client/components/common/FormGroupQuery/index.js +3 -3
  204. package/src/base-client/components/common/FormGroupQuery/index.md +43 -43
  205. package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
  206. package/src/base-client/components/common/LowCodeComponent/LowCodeEditorModal.vue +108 -108
  207. package/src/base-client/components/common/LowCodeComponent/LowCodeEditorPanel.vue +413 -413
  208. package/src/base-client/components/common/LowCodeComponent/LowCodePageOrganization.vue +502 -502
  209. package/src/base-client/components/common/LowCodeComponent/LowCodeRender.vue +728 -728
  210. package/src/base-client/components/common/LowCodeComponent/LowCodeRenderEnter.vue +29 -29
  211. package/src/base-client/components/common/LowCodeComponent/LowCodeUIStore.vue +219 -219
  212. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeAddPageModal.vue +117 -117
  213. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeCustomJSModal.vue +80 -80
  214. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeEventEditorModal.vue +398 -398
  215. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLifeCycleModal.vue +65 -65
  216. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLogicCallbackModal.vue +64 -64
  217. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLogicParamModal.vue +73 -73
  218. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeRunFunctionParamModal.vue +76 -76
  219. package/src/base-client/components/common/PersonSetting/PersonSetting.vue +208 -208
  220. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  221. package/src/base-client/components/common/Recording/Recording.vue +243 -243
  222. package/src/base-client/components/common/Recording/index.js +3 -3
  223. package/src/base-client/components/common/Tree/Tree.vue +149 -149
  224. package/src/base-client/components/common/Tree/index.js +2 -2
  225. package/src/base-client/components/common/Upload/index.js +3 -3
  226. package/src/base-client/components/common/XAddForm/XAddForm.vue +113 -113
  227. package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
  228. package/src/base-client/components/common/XAddNativeFormOA/XAddNativeFormOA.vue +303 -303
  229. package/src/base-client/components/common/XAddNativeFormOA/index.js +3 -3
  230. package/src/base-client/components/common/XAddNativeFormOA/index.md +146 -146
  231. package/src/base-client/components/common/XAddReport/index.js +3 -3
  232. package/src/base-client/components/common/XAddReport/index.md +56 -56
  233. package/src/base-client/components/common/XBadge/XBadge.vue +94 -94
  234. package/src/base-client/components/common/XButtons/XButtonDemo.vue +28 -28
  235. package/src/base-client/components/common/XButtons/index.js +3 -3
  236. package/src/base-client/components/common/XButtons/index.md +61 -61
  237. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  238. package/src/base-client/components/common/XCardSet/XTiltle.vue +191 -0
  239. package/src/base-client/components/common/XCheckList/XCheckList.vue +106 -106
  240. package/src/base-client/components/common/XCheckList/XCheckListDemo.vue +41 -41
  241. package/src/base-client/components/common/XDataCard/index.js +3 -3
  242. package/src/base-client/components/common/XDataCard/index.md +1 -1
  243. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
  244. package/src/base-client/components/common/XDataDrawer/index.js +3 -3
  245. package/src/base-client/components/common/XDataDrawer/index.md +41 -41
  246. package/src/base-client/components/common/XDatePicker/demo.vue +153 -153
  247. package/src/base-client/components/common/XDescriptions/index.js +3 -3
  248. package/src/base-client/components/common/XDescriptions/index.md +83 -83
  249. package/src/base-client/components/common/XDetailsView/XDetailsView.vue +238 -238
  250. package/src/base-client/components/common/XDetailsView/index.js +3 -3
  251. package/src/base-client/components/common/XForm/XFormItem.vue +24 -1
  252. package/src/base-client/components/common/XForm/XStatusButton.vue +54 -54
  253. package/src/base-client/components/common/XForm/index.md +178 -178
  254. package/src/base-client/components/common/XForm/itemComponent/XClickChangeBtn/index.vue +49 -49
  255. package/src/base-client/components/common/XFormGroup/index.js +3 -3
  256. package/src/base-client/components/common/XFormGroup/index.md +38 -38
  257. package/src/base-client/components/common/XFormGroupDetails/XFormGroupDetails.vue +72 -72
  258. package/src/base-client/components/common/XFormGroupDetails/index.js +3 -3
  259. package/src/base-client/components/common/XFormTable/index.md +92 -92
  260. package/src/base-client/components/common/XLabelSelect/XLabelSelect.vue +110 -110
  261. package/src/base-client/components/common/XLabelSelect/XLabelSelectDemo.vue +35 -35
  262. package/src/base-client/components/common/XLicensePlate/XLicensePlate.vue +193 -193
  263. package/src/base-client/components/common/XLicensePlate/XLicensePlateDemo.vue +48 -48
  264. package/src/base-client/components/common/XPrint/OpenInvoice.vue +21 -21
  265. package/src/base-client/components/common/XPrint/PrintHtml.js +98 -98
  266. package/src/base-client/components/common/XPrint/css/hiPrintCss.js +359 -359
  267. package/src/base-client/components/common/XPrint/css/lodopCss.js +26 -26
  268. package/src/base-client/components/common/XPrint/css/print-lock.css +351 -351
  269. package/src/base-client/components/common/XPrint/index.vue +97 -97
  270. package/src/base-client/components/common/XReport/XReportDesign.vue +463 -463
  271. package/src/base-client/components/common/XReport/XReportJsonRender.vue +381 -381
  272. package/src/base-client/components/common/XReport/index.js +3 -3
  273. package/src/base-client/components/common/XReport/print.js +186 -186
  274. package/src/base-client/components/common/XReportDrawer/index.js +3 -3
  275. package/src/base-client/components/common/XReportGrid/XReportTrGroup.vue +4 -3
  276. package/src/base-client/components/common/XReportGrid/index.js +3 -3
  277. package/src/base-client/components/common/XReportGrid/index.md +44 -44
  278. package/src/base-client/components/common/XReportSlot/XReportSlot.vue +110 -110
  279. package/src/base-client/components/common/XReportSlot/index.js +3 -3
  280. package/src/base-client/components/common/XReportSlot/index.md +48 -48
  281. package/src/base-client/components/common/XSimpleDescriptions/XSimpleDescriptions.vue +166 -166
  282. package/src/base-client/components/common/XSimpleDescriptions/index.js +3 -3
  283. package/src/base-client/components/common/XSimpleDescriptions/index.md +7 -7
  284. package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
  285. package/src/base-client/components/common/XStepView/index.js +3 -3
  286. package/src/base-client/components/common/XStepView/index.md +31 -31
  287. package/src/base-client/components/common/XTab/XTabDemo.vue +22 -22
  288. package/src/base-client/components/common/XTab/index.js +3 -3
  289. package/src/base-client/components/common/XTable/CustomFuncCel.vue +51 -51
  290. package/src/base-client/components/common/XTable/TableCellRenderer.vue +161 -161
  291. package/src/base-client/components/common/XTable/index.md +255 -255
  292. package/src/base-client/components/common/XTagGroup/index.vue +52 -52
  293. package/src/base-client/components/common/XTree/XTree.vue +424 -424
  294. package/src/base-client/components/common/XTree/index.js +3 -3
  295. package/src/base-client/components/common/XTree/index.md +36 -36
  296. package/src/base-client/components/common/XTreeOne/XTreeOne.vue +113 -113
  297. package/src/base-client/components/common/XTreeOne/XTreeOnePro.vue +128 -128
  298. package/src/base-client/components/common/richTextModal/index.vue +56 -56
  299. package/src/base-client/components/common/richTextModal/richDemo.vue +48 -48
  300. package/src/base-client/components/his/XHisEditor/XHisEditor.vue +52 -2
  301. package/src/base-client/components/his/XHisEditor/dome.vue +144 -0
  302. package/src/base-client/components/his/XHisEditor/index.js +3 -3
  303. package/src/base-client/components/his/XImportExcelButton/XFrontImportExcel.vue +214 -0
  304. package/src/base-client/components/his/XImportExcelButton/XFrontImportExcelDemo.vue +21 -0
  305. package/src/base-client/components/his/XImportExcelButton/XImportExcelButton.vue +103 -0
  306. package/src/base-client/components/his/XList/XList.vue +1 -1
  307. package/src/base-client/components/his/XTextCard/XTextCard.vue +207 -207
  308. package/src/base-client/components/his/threeTestOrders/editor.vue +111 -111
  309. package/src/base-client/components/index.js +51 -51
  310. package/src/base-client/components/layout/XTreeView/XTreeView.vue +130 -130
  311. package/src/base-client/components/layout/XTreeView/index.js +3 -3
  312. package/src/base-client/components/layout/XTreeView/index.md +46 -46
  313. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  314. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -281
  315. package/src/base-client/plugins/Config.js +19 -19
  316. package/src/base-client/plugins/GetLoginInfoService.js +183 -183
  317. package/src/base-client/plugins/Recording.js +258 -258
  318. package/src/base-client/plugins/index.js +23 -23
  319. package/src/base-client/plugins/tabs-page-plugin.js +39 -39
  320. package/src/components/Charts/Bar.vue +62 -62
  321. package/src/components/Charts/ChartCard.vue +134 -134
  322. package/src/components/Charts/Liquid.vue +67 -67
  323. package/src/components/Charts/MiniArea.vue +39 -39
  324. package/src/components/Charts/MiniBar.vue +39 -39
  325. package/src/components/Charts/MiniProgress.vue +75 -75
  326. package/src/components/Charts/MiniSmoothArea.vue +40 -40
  327. package/src/components/Charts/Radar.vue +68 -68
  328. package/src/components/Charts/RankList.vue +77 -77
  329. package/src/components/Charts/TagCloud.vue +113 -113
  330. package/src/components/Charts/TransferBar.vue +64 -64
  331. package/src/components/Charts/Trend.vue +82 -82
  332. package/src/components/Charts/chart.less +12 -12
  333. package/src/components/Charts/smooth.area.less +13 -13
  334. package/src/components/CodeMirror/inedx.vue +118 -118
  335. package/src/components/CodeMirror/setting.js +40 -40
  336. package/src/components/NumberInfo/NumberInfo.vue +54 -54
  337. package/src/components/NumberInfo/index.js +3 -3
  338. package/src/components/NumberInfo/index.less +54 -54
  339. package/src/components/NumberInfo/index.md +43 -43
  340. package/src/components/card/ChartCard.vue +79 -79
  341. package/src/components/chart/Bar.vue +60 -60
  342. package/src/components/chart/MiniArea.vue +67 -67
  343. package/src/components/chart/MiniBar.vue +59 -59
  344. package/src/components/chart/MiniProgress.vue +57 -57
  345. package/src/components/chart/Radar.vue +80 -80
  346. package/src/components/chart/RankingList.vue +60 -60
  347. package/src/components/chart/Trend.vue +79 -79
  348. package/src/components/chart/index.less +9 -9
  349. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  350. package/src/components/checkbox/ImgCheckbox.vue +117 -117
  351. package/src/components/checkbox/ImgCheckboxGroup.vue +76 -76
  352. package/src/components/checkbox/index.js +9 -9
  353. package/src/components/exception/ExceptionPage.vue +70 -70
  354. package/src/components/g2Charts/constants.js +202 -202
  355. package/src/components/g2Charts/demo.vue +808 -808
  356. package/src/components/g2Charts/designer.vue +228 -228
  357. package/src/components/g2Charts/designerBaseConfig.vue +61 -61
  358. package/src/components/g2Charts/designerDataConfig.vue +259 -259
  359. package/src/components/g2Charts/designerStyleConfig.vue +16 -16
  360. package/src/components/g2Charts/index.vue +397 -397
  361. package/src/components/index.js +36 -36
  362. package/src/components/input/IInput.vue +66 -66
  363. package/src/components/menu/SideMenu.vue +75 -75
  364. package/src/components/menu/menu.js +273 -273
  365. package/src/components/setting/Setting.vue +234 -234
  366. package/src/components/tool/AStepItem.vue +60 -60
  367. package/src/config/CreateQueryConfig.js +325 -325
  368. package/src/config/default/antd.config.js +89 -89
  369. package/src/config/default/setting.config.js +55 -55
  370. package/src/font-style/font.css +4 -4
  371. package/src/layouts/CommonLayout.vue +56 -56
  372. package/src/layouts/PageLayout.vue +151 -151
  373. package/src/layouts/SinglePageView.vue +136 -136
  374. package/src/layouts/header/AdminHeader.vue +132 -132
  375. package/src/layouts/header/HeaderNotice.vue +177 -177
  376. package/src/layouts/header/InstitutionDetail.vue +181 -181
  377. package/src/layouts/tabs/TabsHead.vue +189 -189
  378. package/src/lib.js +1 -1
  379. package/src/mock/extend/index.js +84 -84
  380. package/src/mock/goods/index.js +108 -108
  381. package/src/pages/DefaultExample/index.vue +77 -77
  382. package/src/pages/DynamicStatistics/ChartSelector.vue +331 -331
  383. package/src/pages/DynamicStatistics/DataTabs.vue +83 -83
  384. package/src/pages/DynamicStatistics/DynamicTable.vue +128 -128
  385. package/src/pages/DynamicStatistics/EvaluationArea.vue +69 -69
  386. package/src/pages/DynamicStatistics/FavoriteList.vue +50 -50
  387. package/src/pages/DynamicStatistics/QuestionHistoryAndFavorites.vue +591 -591
  388. package/src/pages/DynamicStatistics/SearchBar.vue +192 -192
  389. package/src/pages/DynamicStatistics/index.vue +282 -282
  390. package/src/pages/Example/childIndex.vue +15 -15
  391. package/src/pages/Example/index.vue +30 -30
  392. package/src/pages/NewDynamicStatistics/ChartSelector.vue +331 -331
  393. package/src/pages/NewDynamicStatistics/DataTabs.vue +122 -122
  394. package/src/pages/NewDynamicStatistics/DynamicTable.vue +128 -128
  395. package/src/pages/NewDynamicStatistics/EvaluationArea.vue +69 -69
  396. package/src/pages/NewDynamicStatistics/FavoriteList.vue +50 -50
  397. package/src/pages/NewDynamicStatistics/QuestionHistoryAndFavorites.vue +289 -289
  398. package/src/pages/NewDynamicStatistics/SearchBar.vue +193 -193
  399. package/src/pages/NewDynamicStatistics/index.vue +258 -258
  400. package/src/pages/Recording/index.vue +77 -77
  401. package/src/pages/ServiceReview/index.vue +284 -284
  402. package/src/pages/SubExample/index.vue +26 -26
  403. package/src/pages/WorkflowDetail/WorkflowPageDetail/TrimTextTail.vue +23 -23
  404. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkFlowBaseInformationDetails.vue +276 -276
  405. package/src/pages/WorkflowDetail/WorkflowPageDetail/WorkflowListResolution.vue +248 -248
  406. package/src/pages/XReportView/index.vue +64 -64
  407. package/src/pages/XTreeOneProExample/index.vue +67 -67
  408. package/src/pages/dashboard/workplace/WorkPlace.vue +141 -141
  409. package/src/pages/login/Login.vue +380 -380
  410. package/src/pages/login/LoginV3.vue +389 -389
  411. package/src/pages/lowCode/lowCodeEditor.vue +1219 -1219
  412. package/src/pages/lowCode/lowCodeRenderPage.vue +43 -43
  413. package/src/pages/report/ReportTable.js +124 -124
  414. package/src/pages/resourceManage/orgListManage.vue +98 -98
  415. package/src/pages/system/dictionary/index.vue +44 -44
  416. package/src/pages/system/monitor/loginInfor/index.vue +37 -37
  417. package/src/pages/system/monitor/operLog/index.vue +37 -37
  418. package/src/pages/system/settings/modifyPassword.vue +117 -117
  419. package/src/pages/system/ticket/index.vue +480 -480
  420. package/src/pages/system/ticket/submitTicketSuccess.vue +484 -484
  421. package/src/pages/userInfoDetailManage/ChangeMeterRecordQuery/index.vue +64 -64
  422. package/src/pages/userInfoDetailManage/InfoChangeRecordQuery/index.vue +64 -64
  423. package/src/pages/userInfoDetailManage/InstructRecordQuery/index.vue +64 -64
  424. package/src/pages/userInfoDetailManage/MeterParamRecordQuery/index.vue +64 -64
  425. package/src/pages/userInfoDetailManage/TransferRecordQuery/index.vue +66 -66
  426. package/src/pages/userInfoDetailManage/WatchCollectionRecordQuery/index.vue +64 -64
  427. package/src/plugins/EventLogPlugin.js +33 -33
  428. package/src/plugins/FindParentsData.js +17 -17
  429. package/src/router/async/config.async.js +35 -35
  430. package/src/router/index.js +27 -27
  431. package/src/services/DataModel.js +30 -30
  432. package/src/services/LodopFuncs.js +137 -137
  433. package/src/services/api/TicketDetailsViewApi.js +46 -46
  434. package/src/services/api/cas.js +79 -79
  435. package/src/services/api/common.js +346 -346
  436. package/src/services/api/entity.js +18 -18
  437. package/src/services/api/index.js +17 -17
  438. package/src/store/modules/account.js +115 -115
  439. package/src/store/modules/index.js +5 -5
  440. package/src/store/modules/lowCode.js +33 -33
  441. package/src/store/modules/setting.js +119 -119
  442. package/src/theme/default/style.less +58 -58
  443. package/src/utils/authority-utils.js +85 -85
  444. package/src/utils/errorCode.js +6 -6
  445. package/src/utils/excel/Export2Excel.js +43 -0
  446. package/src/utils/formatter.js +74 -74
  447. package/src/utils/htmlToPDF.js +108 -108
  448. package/src/utils/htmlToPDFApi.js +5 -5
  449. package/src/utils/login.js +188 -188
  450. package/src/utils/lowcode/lowcodeComponentMixin.js +120 -120
  451. package/src/utils/lowcode/lowcodeLog.js +29 -29
  452. package/src/utils/lowcode/lowcodeUtils.js +373 -373
  453. package/src/utils/lowcode/registerComponentForEditor.js +1 -1
  454. package/src/utils/lowcode/registerComponentForRender.js +11 -11
  455. package/src/utils/map-utils.js +47 -47
  456. package/src/utils/reg.js +95 -95
  457. package/src/utils/runEvalFunction.js +14 -14
  458. package/src/utils/theme-color-replacer-extend.js +92 -92
  459. package/src/utils/util.js +329 -329
  460. package/src/utils/waterMark.js +31 -31
  461. package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
@@ -0,0 +1,1332 @@
1
+ <template>
2
+ <!-- 输入框 -->
3
+ <x-form-col
4
+ v-if="attr.type === 'input' && show"
5
+ :occupyCol="attr.occupyCol"
6
+ :labelCol="labelCol"
7
+ :flex="attr.flex">
8
+ <a-form-model-item
9
+ :rules="rules"
10
+ :ref="attr.model"
11
+ :label="showLabel?attr.name:undefined"
12
+ :prop="attr.prop ? attr.prop : attr.model">
13
+ <!-- 如果配置了后置按钮插槽 -->
14
+ <a-input-group
15
+ v-if="((attr.inputOnAfterName && attr.inputOnAfterFunc) || (attr.inputOnAfterIcon && attr.inputOnAfterIconFunc)) && mode !== '查询'"
16
+ style="display: flex; width: 100%; padding: 4px 0"
17
+ compact>
18
+ <a-input
19
+ v-model="form[attr.model]"
20
+ :read-only="readOnly"
21
+ :disabled="disabled && !readOnly"
22
+ :whitespace="true"
23
+ @input="attr.dataChangeFunc && debouncedDataChangeFunc()"
24
+ :suffix="attr.inputSuffix && mode !== '新增' ? attr.inputSuffix : ''"
25
+ @blur="mode !== '查询' && attr.inputOnBlurFunc && emitFunc(attr.inputOnBlurFunc,attr)"
26
+ @keyup.enter="mode !== '查询' && attr.inputOnEnterFunc && emitFunc(attr.inputOnEnterFunc, attr)"
27
+ :placeholder="attr.placeholder ? attr.placeholder : '请输入'+attr.name.replace(/\s*/g, '')"
28
+ :ref="`${attr.model}input`"/>
29
+ <a-button
30
+ v-if="attr.inputOnAfterName && attr.inputOnAfterFunc && !attr.inputOnAfterName.includes('|')"
31
+ style="width: auto; min-width: 4rem;max-width: 6rem"
32
+ type="primary"
33
+ @click="emitFunc(attr.inputOnAfterFunc,attr)">
34
+ {{ attr.inputOnAfterName }}
35
+ </a-button>
36
+ <!-- 仅可以配置 一个按钮 以及 一个图标插槽 -->
37
+ <a-button
38
+ style="width: 2rem; flex-shrink: 0;"
39
+ v-else-if="attr.inputOnAfterIcon"
40
+ :type="attr.inputOnAfterIcon && attr.inputOnAfterName ? 'primary' :''"
41
+ :icon="attr.inputOnAfterIcon || 'question'"
42
+ @click="emitFunc(attr.inputOnAfterIconFunc,attr)">
43
+ </a-button>
44
+ <!-- 状态按钮 -->
45
+ <x-status-button
46
+ v-else
47
+ :states="parseStates(attr.inputOnAfterName, attr.inputOnAfterFunc)"
48
+ v-on="generateDynamicEvents(attr.inputOnAfterFunc, attr)"
49
+ style="width: auto; min-width: 4rem; max-width: 6rem"
50
+ />
51
+ </a-input-group>
52
+ <a-input-number
53
+ v-else-if="attr.numberInput && !readOnly"
54
+ v-model="form[attr.model]"
55
+ :whitespace="true"
56
+ @change="attr.dataChangeFunc && debouncedDataChangeFunc()"
57
+ :disabled="disabled && !readOnly"
58
+ style="width:100%"
59
+ @blur="mode !== '查询' && attr.inputOnBlurFunc && emitFunc(attr.inputOnBlurFunc,attr)"
60
+ @keyup.enter="mode !== '查询' && attr.inputOnEnterFunc && emitFunc(attr.inputOnEnterFunc, attr)"
61
+ :suffix="attr.inputSuffix && mode !== '新增' ? attr.inputSuffix : ''"
62
+ :placeholder="attr.placeholder ? attr.placeholder : '请输入'+attr.name.replace(/\s*/g, '')"
63
+ :ref="`${attr.model}input`"/>
64
+ <a-input
65
+ v-else
66
+ v-model="form[attr.model]"
67
+ :whitespace="true"
68
+ :read-only="readOnly"
69
+ :disabled="disabled && !readOnly"
70
+ @input="attr.dataChangeFunc && debouncedDataChangeFunc()"
71
+ :suffix="attr.inputSuffix && mode !== '新增' ? attr.inputSuffix : ''"
72
+ style="width:100%"
73
+ @blur="mode !== '查询' && attr.inputOnBlurFunc && emitFunc(attr.inputOnBlurFunc,attr)"
74
+ @keyup.enter="mode !== '查询' && attr.inputOnEnterFunc && emitFunc(attr.inputOnEnterFunc, attr)"
75
+ :placeholder="attr.placeholder ? attr.placeholder : '请输入'+attr.name.replace(/\s*/g, '')"
76
+ :ref="`${attr.model}input`"/>
77
+ </a-form-model-item>
78
+ </x-form-col>
79
+ <!-- 下拉框 -->
80
+ <x-form-col
81
+ v-else-if="attr.type === 'select' && show"
82
+ :labelCol="labelCol"
83
+ :flex="attr.flex">
84
+ <a-form-model-item
85
+ :rules="rules"
86
+ v-if="!attr.showMode || mode === '查询' || attr.showMode === 'select' "
87
+ :ref="attr.model"
88
+ :label="showLabel?attr.name:undefined"
89
+ :prop="attr.prop ? attr.prop : attr.model">
90
+ <!-- <span slot="label" class="label-box">{{ showLabel?attr.name:undefined }}</span>-->
91
+ <a-select
92
+ v-if="!attr.lazyLoad || attr.lazyLoad === 'false'"
93
+ v-model="form[attr.model]"
94
+ :disabled="disabled"
95
+ @change="attr.dataChangeFunc && debouncedDataChangeFunc()"
96
+ :filter-option="filterOption"
97
+ :getPopupContainer="getPopupContainer"
98
+ dropdownClassName="custom-dropdown"
99
+ :dropdownMatchSelectWidth="false"
100
+ :dropdownStyle="{ position: 'absolute'}"
101
+ :placeholder="attr.placeholder ? attr.placeholder : '请选择'"
102
+ show-search
103
+ :allowClear="true"
104
+ >
105
+ <a-select-option
106
+ v-if="mode === '查询'"
107
+ key="999999"
108
+ value="">全部
109
+ </a-select-option>
110
+ <template v-if="attr.keys">
111
+ <a-select-option
112
+ v-for="(item,index) in attr.keys"
113
+ :key="index.value"
114
+ :value="item.value + ''">
115
+ {{ item.label }}
116
+ </a-select-option>
117
+ </template>
118
+ <template v-else>
119
+ <template
120
+ v-if="attr.keyName.indexOf('logic@') !== -1 || attr.keyName.indexOf('config@') !== -1
121
+ ||attr.keyName.indexOf('search@') !== -1 || attr.keyName.indexOf('search@') !== -1">
122
+ <a-select-option
123
+ v-for="(item,index) in option"
124
+ :key="index.value"
125
+ :value="item.value + ''">
126
+ <template v-if="attr.keyName.indexOf('config@') !== -1 && item.status">
127
+ <!-- 徽标(badge) -->
128
+ <a-badge v-if="item.status !== 'gary'" :color="item.status" :text="item.label"/>
129
+ <a-badge v-else color="#D9D9D9" :text="item.label"/>
130
+ </template>
131
+ <template v-else>
132
+ {{ item.label }}
133
+ </template>
134
+ </a-select-option>
135
+ </template>
136
+ <template
137
+ v-else-if="attr.keyName.indexOf('async ') !== -1 || attr.keyName.indexOf('function ') !== -1">
138
+ <a-select-option
139
+ v-for="(item,index) in optionForFunc"
140
+ :key="index.value"
141
+ :value="item.value + ''">
142
+ <template>
143
+ {{ item.label }}
144
+ </template>
145
+ </a-select-option>
146
+ </template>
147
+ <template v-else>
148
+ <a-select-option
149
+ v-for="item in $appdata.getDictionaryList(attr.keyName)"
150
+ :key="item.value"
151
+ :value="item.value + ''">
152
+ <!-- 徽标(badge) -->
153
+ <x-badge
154
+ :badge-key="attr.keyName"
155
+ :replaceText="item.text"
156
+ :value="item.value"
157
+ :service-name="serviceName"
158
+ :env="env"/>
159
+ </a-select-option>
160
+ </template>
161
+ </template>
162
+ </a-select>
163
+ <a-select
164
+ v-else
165
+ v-model="form[attr.model]"
166
+ :disabled="disabled"
167
+ @change="attr.dataChangeFunc && debouncedDataChangeFunc()"
168
+ :filter-option="filterOption"
169
+ :getPopupContainer="getPopupContainer"
170
+ dropdownClassName="custom-dropdown"
171
+ :dropdownMatchSelectWidth="false"
172
+ :dropdownStyle="{ position: 'absolute'}"
173
+ :placeholder="attr.placeholder ? attr.placeholder : '搜索' + attr.name"
174
+ show-search
175
+ @search="fetchFunction"
176
+ >
177
+ <template #notFoundContent>
178
+ <a-spin v-if="searching" size="small"/>
179
+ </template>
180
+ <a-select-option
181
+ v-if="mode === '查询'"
182
+ key="999999"
183
+ value="">全部
184
+ </a-select-option>
185
+ <a-select-option
186
+ v-for="(item,index) in option"
187
+ :key="index"
188
+ :value="item.value + ''">{{ item.label }}
189
+ </a-select-option>
190
+ </a-select>
191
+ </a-form-model-item>
192
+ <a-form-model-item
193
+ :rules="rules"
194
+ v-else-if="attr.showMode === 'radioGroup'"
195
+ :ref="attr.model"
196
+ :label="showLabel?attr.name:undefined"
197
+ :prop="attr.prop ? attr.prop : attr.model">
198
+ <a-radio-group v-model="form[attr.model]">
199
+ <a-radio-button v-for="modeItem in option" :key="modeItem.value" :value="modeItem.value">
200
+ {{ modeItem.label }}
201
+ </a-radio-button>
202
+ </a-radio-group>
203
+ </a-form-model-item>
204
+ <a-form-model-item
205
+ v-else-if="attr.showMode === 'clickChange' && option.length > 0"
206
+ :ref="attr.model"
207
+ :label="showLabel?attr.name:undefined"
208
+ :prop="attr.prop ? attr.prop : attr.model">
209
+ <XClickChangeBtn></XClickChangeBtn>
210
+ </a-form-model-item>
211
+ </x-form-col>
212
+ <!-- 多选框 -->
213
+ <x-form-col
214
+ v-else-if="attr.type === 'checkbox' && show"
215
+ :labelCol="labelCol"
216
+ :flex="attr.flex">
217
+ <a-form-model-item
218
+ :rules="rules"
219
+ v-if="!attr.showMode || mode === '查询' || attr.showMode === 'select' "
220
+ :ref="attr.model"
221
+ :label="showLabel?attr.name:undefined"
222
+ :prop="attr.prop ? attr.prop : attr.model">
223
+ <a-select
224
+ class="multiple_select"
225
+ style="width:100%"
226
+ v-if="!attr.lazyLoad || attr.lazyLoad === 'false'"
227
+ v-model="form[attr.model]"
228
+ :disabled="disabled"
229
+ :filter-option="filterOption"
230
+ :getPopupContainer="getPopupContainer"
231
+ :placeholder="attr.placeholder ? attr.placeholder : '请选择'"
232
+ @change="attr.dataChangeFunc && debouncedDataChangeFunc()"
233
+ mode="multiple"
234
+ show-search
235
+ allowClear
236
+ >
237
+ <template v-if="attr.keys">
238
+ <a-select-option
239
+ v-for="(item,index) in attr.keys"
240
+ :key="index"
241
+ :value="item.value + ''">
242
+ {{ item.label }}
243
+ </a-select-option>
244
+ </template>
245
+ <template v-else>
246
+ <template
247
+ v-if="attr.keyName.indexOf('logic@') !== -1 || attr.keyName.indexOf('config@') !== -1
248
+ ||attr.keyName.indexOf('search@') !== -1 || attr.keyName.indexOf('search@') !== -1">
249
+ <a-select-option
250
+ v-for="(item,index) in option"
251
+ :key="index"
252
+ :value="item.value">{{ item.label }}
253
+ </a-select-option>
254
+ </template>
255
+ <template v-else>
256
+ <a-select-option
257
+ v-for="item in $appdata.getDictionaryList(attr.keyName)"
258
+ :key="item.value"
259
+ :value="item.value + ''">{{ item.text }}
260
+ </a-select-option>
261
+ </template>
262
+ </template>
263
+ </a-select>
264
+ <a-select
265
+ v-else
266
+ class="multiple_select"
267
+ v-model="form[attr.model]"
268
+ :disabled="disabled"
269
+ :filter-option="filterOption"
270
+ :getPopupContainer="getPopupContainer"
271
+ :placeholder="attr.placeholder ? attr.placeholder : '搜索' + attr.name"
272
+ mode="multiple"
273
+ style="width:100%"
274
+ @change="attr.dataChangeFunc && debouncedDataChangeFunc()"
275
+ show-search
276
+ allowClear
277
+ @search="fetchFunction"
278
+ >
279
+ <template #notFoundContent>
280
+ <a-spin v-if="searching" size="small"/>
281
+ </template>
282
+ <a-select-option
283
+ v-for="(item,index) in option"
284
+ :key="index"
285
+ :value="item.value + ''">{{ item.label }}
286
+ </a-select-option>
287
+ </a-select>
288
+ </a-form-model-item>
289
+ <a-form-model-item
290
+ :rules="rules"
291
+ v-else
292
+ :ref="attr.model"
293
+ :label="showLabel?attr.name:undefined"
294
+ :prop="attr.prop ? attr.prop : attr.model">
295
+ <a-checkbox-group
296
+ v-model="form[attr.model]"
297
+ :options="option"
298
+ @change="attr.dataChangeFunc && debouncedDataChangeFunc()"
299
+ />
300
+ </a-form-model-item>
301
+ </x-form-col>
302
+ <!-- 单选框 -->
303
+ <x-form-col
304
+ v-else-if="attr.type === 'radio' && show"
305
+ :labelCol="labelCol"
306
+ :flex="attr.flex">
307
+ <a-form-model-item
308
+ :rules="rules"
309
+ v-if="!attr.showMode || attr.type === 'radio' "
310
+ :ref="attr.model"
311
+ :label="showLabel?attr.name:undefined"
312
+ :prop="attr.prop ? attr.prop : attr.model">
313
+ <a-radio-group
314
+ v-model="form[attr.model]"
315
+ @change="attr.dataChangeFunc && debouncedDataChangeFunc()"
316
+ >
317
+ <template v-if="attr.keys">
318
+ <a-radio v-for="(item,index) in attr.keys" :key="index" :value="item.value">
319
+ {{ item.label }}
320
+ </a-radio>
321
+ </template>
322
+ <template v-else>
323
+ <template
324
+ v-if="attr.keyName.indexOf('logic@') !== -1 || attr.keyName.indexOf('config@') !== -1
325
+ ||attr.keyName.indexOf('search@') !== -1 || attr.keyName.indexOf('search@') !== -1">
326
+ <a-radio v-for="(item,index) in option" :key="index" :value="item.value">
327
+ {{ item.label }}
328
+ </a-radio>
329
+ </template>
330
+ <template v-else>
331
+ <a-radio v-for="(item,index) in $appdata.getDictionaryList(attr.keyName)" :key="index" :value="item.value">
332
+ {{ item.text }}
333
+ </a-radio>
334
+ </template>
335
+ </template>
336
+ </a-radio-group>
337
+ </a-form-model-item>
338
+ <a-form-model-item
339
+ :rules="rules"
340
+ v-else-if="attr.showMode === 'radioGroup'"
341
+ :ref="attr.model"
342
+ :label="showLabel?attr.name:undefined"
343
+ :prop="attr.prop ? attr.prop : attr.model">
344
+ <a-radio-group v-model="form[attr.model]">
345
+ <a-radio-button v-for="modeItem in option" :key="modeItem.value" :value="modeItem.value">
346
+ {{ modeItem.label }}
347
+ </a-radio-button>
348
+ </a-radio-group>
349
+ </a-form-model-item>
350
+ <a-form-model-item
351
+ :rules="rules"
352
+ v-else-if="attr.showMode === 'clickChange' && option.length > 0"
353
+ :ref="attr.model"
354
+ :label="showLabel?attr.name:undefined"
355
+ :prop="attr.prop ? attr.prop : attr.model">
356
+ <XClickChangeBtn></XClickChangeBtn>
357
+ </a-form-model-item>
358
+ </x-form-col>
359
+ <!-- 时间 日期 框整合 -->
360
+ <x-form-col
361
+ v-else-if="['datePicker', 'rangePicker', 'yearPicker', 'monthPicker', 'yearRangePicker', 'monthRangePicker'].includes(attr.type) && show"
362
+ :labelCol="labelCol"
363
+ :flex="attr.flex">
364
+ <a-form-model-item
365
+ :rules="rules"
366
+ :ref="attr.model"
367
+ :label="showLabel?attr.name:undefined"
368
+ :prop="attr.prop ? attr.prop : attr.model">
369
+ <XFormDatePicker
370
+ :attr="attr"
371
+ :mode="mode"
372
+ :disabled="disabled"
373
+ :readOnly="readOnly"
374
+ :showLabel="showLabel"
375
+ @change="attr.dataChangeFunc && debouncedDataChangeFunc()"
376
+ v-model="form[attr.model]"/>
377
+ </a-form-model-item>
378
+ </x-form-col>
379
+ <!-- 文本域 -->
380
+ <x-form-col
381
+ v-else-if="attr.type === 'textarea' && show"
382
+ :labelCol="labelCol"
383
+ :flex="attr.flex">
384
+ <!-- :style="layout === 'inline'?{width:'calc(100% - 60px)'}:{}"-->
385
+ <a-form-model-item
386
+ :rules="rules"
387
+ :ref="attr.model"
388
+ :label="showLabel?attr.name:undefined"
389
+ :prop="attr.prop ? attr.prop : attr.model">
390
+ <a-textarea
391
+ v-model="form[attr.model]"
392
+ style="width: 100%;"
393
+ :disabled="disabled"
394
+ :placeholder="attr.placeholder ? attr.placeholder : '请输入'+attr.name.replace(/\s*/g, '')"
395
+ :rows="4"/>
396
+ </a-form-model-item>
397
+ </x-form-col>
398
+ <!-- 文件上传 -->
399
+ <x-form-col
400
+ v-else-if="(attr.type === 'file' || attr.type === 'image') && show"
401
+ :labelCol="labelCol"
402
+ :flex="attr.flex">
403
+ <a-form-model-item
404
+ :rules="rules"
405
+ :ref="attr.model"
406
+ :label="showLabel?attr.name:undefined"
407
+ :prop="attr.prop ? attr.prop : attr.model">
408
+ <upload
409
+ :files="files"
410
+ :images="images"
411
+ :model="attr"
412
+ v-bind="attr"
413
+ :service-name="serviceName"
414
+ @setFiles="setFiles"></upload>
415
+ </a-form-model-item>
416
+ </x-form-col>
417
+ <!-- 省市区选择框 -->
418
+ <x-form-col
419
+ v-else-if="attr.type === 'citySelect' && show"
420
+ :labelCol="labelCol"
421
+ :flex="attr.flex">
422
+ <a-form-model-item
423
+ :rules="rules"
424
+ :ref="attr.model"
425
+ :label="showLabel?attr.name:undefined"
426
+ :prop="attr.prop ? attr.prop : attr.model">
427
+ <citySelect
428
+ @change="attr.dataChangeFunc && debouncedDataChangeFunc()"
429
+ ref="citySelect"
430
+ v-model="form[attr.model]"
431
+ :contexts="attr.contexts"
432
+ :value-type="attr.valueType"
433
+ :default-value="form[attr.model]"></citySelect>
434
+ </a-form-model-item>
435
+ </x-form-col>
436
+ <!-- 地点搜索框 -->
437
+ <x-form-col
438
+ v-else-if="attr.type === 'addressSearch' && show"
439
+ :labelCol="labelCol"
440
+ :occupyCol="attr.occupyCol"
441
+ :flex="attr.flex">
442
+ <a-form-model-item
443
+ :rules="rules"
444
+ :ref="attr.model"
445
+ :label="showLabel?attr.name:undefined"
446
+ :prop="attr.prop ? attr.prop : attr.model">
447
+ <address-search-combobox
448
+ :emitFunc="emitFunc"
449
+ :attr="attr"
450
+ :read-only="readOnly"
451
+ v-model="searchResult"
452
+ :resultKeys="{ address: attr.model, coords: `${attr.model}_lng_lat` }"
453
+ ref="addressSearchCombobox"
454
+ searchResultType="Object"
455
+ @onSelect="addressSearchComboboxSelect"
456
+ @onDivisionsChange="onDivisionsChange"
457
+ ></address-search-combobox>
458
+ </a-form-model-item>
459
+ </x-form-col>
460
+ <!-- 人员选择框 -->
461
+ <x-form-col
462
+ v-else-if="attr.type === 'personSetting' && show"
463
+ :labelCol="labelCol"
464
+ :flex="attr.flex">
465
+ <a-form-model-item
466
+ :rules="rules"
467
+ :ref="attr.model"
468
+ :label="showLabel?attr.name:undefined"
469
+ :prop="attr.prop ? attr.prop : attr.model">
470
+ <PersonSetting v-model="form[attr.model]"></PersonSetting>
471
+ </a-form-model-item>
472
+ </x-form-col>
473
+ <!-- 树形选择框 -->
474
+ <x-form-col
475
+ v-else-if="attr.type === 'treeSelect' && show"
476
+ :labelCol="labelCol"
477
+ :flex="attr.flex">
478
+ <x-tree-select
479
+ :rules="rules"
480
+ @onChange="attr.dataChangeFunc && debouncedDataChangeFunc()"
481
+ v-model="form[attr.model]"
482
+ :attr="attr"
483
+ @mounted="itemMounted"
484
+ ref="xTreeSelect">
485
+ </x-tree-select>
486
+ </x-form-col>
487
+ <!-- 列表选择框 -->
488
+ <x-form-col
489
+ v-else-if="attr.type === 'listSelect' && show"
490
+ :labelCol="labelCol"
491
+ :flex="attr.flex">
492
+ <a-form-model-item
493
+ :rules="rules"
494
+ :ref="attr.model"
495
+ :label="showLabel?attr.name:undefined"
496
+ :style="layout === 'inline'&& attr.occupyCol && attr.occupyCol > 1? {width:`calc(100% - ${attr.occupyCol * 1.533}rem)`}:{}"
497
+ :prop="attr.prop ? attr.prop : attr.model">
498
+ <a-popover
499
+ ref="rowChoosePopover"
500
+ :visible="rowChoosePopoverVisible"
501
+ title="选择数据"
502
+ placement="bottom"
503
+ trigger="focus"
504
+ :arrowPointAtCenter="true"
505
+ :overlayStyle="{ width: '1000px', height: '30vh' }">
506
+ <template #content>
507
+ <x-report
508
+ v-if="isCover"
509
+ :use-oss-for-img="false"
510
+ :config-name="queryParamsName"
511
+ :service-name="serviceName"
512
+ :show-img-in-cell="true"
513
+ :display-only="true"
514
+ :edit-mode="false"
515
+ :show-save-button="true"
516
+ :no-padding="true"
517
+ :dont-format="true"
518
+ @rowChoose="rowChoose"
519
+ @cancel="closeRowChooseInput"
520
+ >
521
+ </x-report>
522
+ <x-form-table
523
+ v-else
524
+ title="请选择数据"
525
+ :queryParamsName="queryParamsName"
526
+ :rowSelectMode="true"
527
+ :allowSelectRowNum="1"
528
+ :service-name="serviceName"
529
+ :fixed-query-form="rowChooseFixedQueryValue"
530
+ @rowChoose="rowChoose"
531
+ @afterQuery="rowChooseSearchAfterQuery"
532
+ ref="rowChooseTable">
533
+ <template #button>
534
+ <a-button @click="closeRowChooseInput">
535
+ 关闭
536
+ </a-button>
537
+ </template>
538
+ </x-form-table>
539
+ </template>
540
+ <a-input
541
+ v-model="form[attr.model]"
542
+ :placeholder="attr.placeholder ? attr.placeholder : '请输入'+attr.name.replace(/\s*/g, '')"
543
+ @change="searchRowChooseData"
544
+ @focus="showCloseRowChooseInput"/>
545
+ </a-popover>
546
+ </a-form-model-item>
547
+ </x-form-col>
548
+ <!-- 评分框 -->
549
+ <x-form-col
550
+ v-else-if="attr.type === 'rate' && show"
551
+ :labelCol="labelCol"
552
+ :flex="attr.flex">
553
+ <a-form-model-item
554
+ :rules="rules"
555
+ :ref="attr.model"
556
+ :label="showLabel?attr.name:undefined"
557
+ :prop="attr.prop ? attr.prop : attr.model">
558
+ <x-rate
559
+ v-model="form[attr.model]"
560
+ :mode="mode"
561
+ :disabled="disabled"
562
+ :query-type="attr.queryType"
563
+ :max-count="attr.maxCount"
564
+ :allow-half="attr.allowHalf"
565
+ :icon="attr.rateIcon"
566
+ :placeholder="attr.placeholder ? attr.placeholder : '请选择'+attr.name.replace(/\s*/g, '')"
567
+ @change="attr.dataChangeFunc && debouncedDataChangeFunc()"
568
+ />
569
+ </a-form-model-item>
570
+ </x-form-col>
571
+ <!-- 区间选择器 -->
572
+ <x-form-col
573
+ v-else-if="attr.type === 'intervalPicker' && show"
574
+ :labelCol="labelCol"
575
+ :flex="attr.flex">
576
+ <a-form-model-item
577
+ :rules="rules"
578
+ :ref="attr.model"
579
+ :label="showLabel?attr.name:undefined"
580
+ :prop="attr.prop ? attr.prop : attr.model">
581
+ <x-interval-picker
582
+ v-model="form[attr.model]"
583
+ :mode="mode"
584
+ :read-only="readOnly"
585
+ :disabled="disabled && !readOnly"
586
+ :placeholder="attr.placeholder ? attr.placeholder : '请输入'+attr.name.replace(/\s*/g, '')"
587
+ :start-placeholder="attr.startPlaceholder || '起始值'"
588
+ :end-placeholder="attr.endPlaceholder || '结束值'"
589
+ @blur="attr.inputOnBlurFunc && emitFunc(attr.inputOnBlurFunc,attr)"
590
+ />
591
+ </a-form-model-item>
592
+ </x-form-col>
593
+ <!-- 车牌号选择 -->
594
+ <x-form-col
595
+ v-else-if="attr.type === 'licensePlate' && show"
596
+ :labelCol="labelCol"
597
+ :flex="attr.flex">
598
+ <a-form-model-item
599
+ :rules="rules"
600
+ :ref="attr.model"
601
+ :label="showLabel?attr.name:undefined"
602
+ :style="layout === 'inline'&& attr.occupyCol && attr.occupyCol > 1? {width:`calc(100% - ${attr.occupyCol * 1.533}rem)`}:{}"
603
+ :prop="attr.prop ? attr.prop : attr.model">
604
+ <!-- 如果配置了后置按钮插槽 -->
605
+ <a-input
606
+ v-if="mode ==='查询'"
607
+ v-model="form[attr.model]"
608
+ :whitespace="true"
609
+ :read-only="readOnly"
610
+ :disabled="disabled && !readOnly"
611
+ style="width:100%"
612
+ @blur="attr.inputOnBlurFunc && emitFunc(attr.inputOnBlurFunc,attr)"
613
+ :placeholder="attr.placeholder ? attr.placeholder : '请输入'+attr.name.replace(/\s*/g, '')"
614
+ :ref="`${attr.model}input`"/>
615
+ <x-license-plate
616
+ v-else
617
+ v-model="form[attr.model]"
618
+ @change="attr.dataChangeFunc && debouncedDataChangeFunc()"
619
+ ></x-license-plate>
620
+ </a-form-model-item>
621
+ </x-form-col>
622
+ <!-- 录音 -->
623
+ <x-form-col
624
+ v-else-if="attr.type === 'recording' && show"
625
+ :labelCol="labelCol"
626
+ :flex="attr.flex">
627
+ <recording
628
+ ref="recording"
629
+ @recordingData="recordingData"
630
+ >
631
+ </recording>
632
+ </x-form-col>
633
+ <!-- 表格录入 -->
634
+ <x-form-col
635
+ v-else-if="attr.type === 'rowEdit' && show"
636
+ :labelCol="labelCol"
637
+ :flex="attr.flex">
638
+ <a-form-model-item
639
+ :rules="rules"
640
+ :ref="attr.model"
641
+ :label="showLabel?attr.name:undefined"
642
+ :prop="attr.prop ? attr.prop : attr.model">
643
+ <x-form-table
644
+ :key="'childTable_' + attr.model"
645
+ :title="attr.name"
646
+ :queryParamsName="attr.crud"
647
+ :localEditMode="true"
648
+ :fixed-query-form="childTableFixedQueryForm(attr)"
649
+ :service-name="serviceName"
650
+ @hook:mounted="(h)=>onComponentMounted(h, attr)"
651
+ :ref="'childXFormTable_' + attr.model">
652
+ </x-form-table>
653
+ </a-form-model-item>
654
+ </x-form-col>
655
+ </template>
656
+ <script>
657
+ import { debounce } from 'ant-design-vue/lib/vc-table/src/utils'
658
+ import XFormCol from '@vue2-client/base-client/components/common/XFormCol'
659
+ import XBadge from '@vue2-client/base-client/components/common/XBadge'
660
+ import CitySelect from '@vue2-client/base-client/components/common/CitySelect'
661
+ import PersonSetting from '@vue2-client/base-client/components/common/PersonSetting'
662
+ import AddressSearchCombobox from '@vue2-client/base-client/components/common/AddressSearchCombobox'
663
+ import Upload from '@vue2-client/base-client/components/common/Upload'
664
+ import moment from 'moment'
665
+ import { getConfigByName, runLogic, getConfigByNameAsync } from '@vue2-client/services/api/common'
666
+ import * as util from '@vue2-client/utils/util'
667
+ import XTreeSelect from '@vue2-client/base-client/components/common/XForm/XTreeSelect'
668
+ import { searchToListOption, searchToOption } from '@vue2-client/services/v3Api'
669
+ import { mapState } from 'vuex'
670
+ import { executeStrFunctionByContext } from '@vue2-client/utils/runEvalFunction'
671
+ import XLicensePlate from '@vue2-client/base-client/components/common/XLicensePlate/XLicensePlate.vue'
672
+ import XStatusButton from './XStatusButton.vue'
673
+ import XClickChangeBtn from './itemComponent/XClickChangeBtn'
674
+ import 'moment/locale/zh-cn'
675
+ import XFormDatePicker from '@vue2-client/base-client/components/common/XDatePicker/index.vue'
676
+ import XIntervalPicker from '@vue2-client/base-client/components/common/XIntervalPicker/XIntervalPicker.vue'
677
+ import XRate from '@vue2-client/base-client/components/common/XRate/index.vue'
678
+
679
+ export default {
680
+ name: 'XFormItem',
681
+ components: {
682
+ XFormDatePicker,
683
+ XFormTable: () => import('@vue2-client/base-client/components/common/XFormTable/XFormTable.vue'),
684
+ Recording: () => import('@vue2-client/base-client/components/common/Recording/Recording.vue'),
685
+ XReport: () => import('@vue2-client/base-client/components/common/XReportGrid/XReport.vue'),
686
+ XLicensePlate,
687
+ XTreeSelect,
688
+ XFormCol,
689
+ XBadge,
690
+ CitySelect,
691
+ PersonSetting,
692
+ AddressSearchCombobox,
693
+ Upload,
694
+ XStatusButton,
695
+ XClickChangeBtn,
696
+ XIntervalPicker,
697
+ XRate
698
+ },
699
+ data () {
700
+ // 检索去抖
701
+ this.fetchFunction = debounce(this.fetchFunction, 800)
702
+ return {
703
+ option: [],
704
+ // 最后检索版本
705
+ lastFetchId: 0,
706
+ // 检索中
707
+ searching: false,
708
+ searchResult: '',
709
+ optionForFunc: [],
710
+ // 控制当前表单项是否展示
711
+ show: true,
712
+ // moment
713
+ moment,
714
+ // 行选择器浮层是否显示
715
+ rowChoosePopoverVisible: false,
716
+ // 行选择器CRUD固定查询值
717
+ rowChooseFixedQueryValue: undefined
718
+ }
719
+ },
720
+ props: {
721
+ attr: {
722
+ type: Object,
723
+ default:
724
+ () => {
725
+ return {}
726
+ }
727
+ },
728
+ form: {
729
+ type: Object,
730
+ required:
731
+ true
732
+ },
733
+ disabled: {
734
+ type: Boolean,
735
+ default:
736
+ () => {
737
+ return false
738
+ }
739
+ },
740
+ readOnly: {
741
+ type: Boolean,
742
+ default:
743
+ () => {
744
+ return false
745
+ }
746
+ },
747
+ mode: {
748
+ type: String,
749
+ default:
750
+ () => {
751
+ return '查询'
752
+ }
753
+ },
754
+ files: {
755
+ type: Array,
756
+ default:
757
+ () => {
758
+ return []
759
+ }
760
+ },
761
+ images: {
762
+ type: Array,
763
+ default:
764
+ () => {
765
+ return []
766
+ }
767
+ },
768
+ serviceName: {
769
+ type: String,
770
+ default:
771
+ undefined
772
+ },
773
+ // 调用logic获取数据源的追加参数
774
+ getDataParams: {
775
+ type: Object,
776
+ default:
777
+ undefined
778
+ },
779
+ // 布局
780
+ layout: {
781
+ type: String,
782
+ default:
783
+ 'horizontal'
784
+ },
785
+ // 环境
786
+ env: {
787
+ type: String,
788
+ default:
789
+ () => {
790
+ return 'prod'
791
+ }
792
+ },
793
+ // 设置表单值
794
+ setForm: {
795
+ type: Function,
796
+ default: (val) => {
797
+ console.log(val)
798
+ }
799
+ },
800
+ showLabel: {
801
+ type: Boolean,
802
+ default:
803
+ () => {
804
+ return true
805
+ }
806
+ },
807
+ labelCol: {
808
+ type: Object,
809
+ default: () => {
810
+ return { span: 8 }
811
+ }
812
+ },
813
+ rules: {
814
+ type: Array,
815
+ default:
816
+ () => {
817
+ return undefined
818
+ }
819
+ }
820
+ },
821
+ provide () {
822
+ return {
823
+ FormItemContext: this
824
+ }
825
+ },
826
+ created () {
827
+ this.init()
828
+ if (this.attr.keyName && (this.attr?.keyName?.toString().indexOf('async ') !== -1 || this.attr?.keyName?.toString()?.indexOf('function') !== -1)) {
829
+ this.debouncedUpdateOptions = debounce(this.updateOptions, 200)
830
+ }
831
+ if (this.attr.dataChangeFunc) {
832
+ this.debouncedDataChangeFunc = debounce(this.dataChangeFunc, 200)
833
+ // 执行一次
834
+ this.dataChangeFunc()
835
+ }
836
+ if (this.attr.showFormItemFunc) {
837
+ this.debouncedShowFormItemFunc = debounce(this.showFormItemFunc, 100)
838
+ // 执行一次
839
+ this.showFormItemFunc()
840
+ }
841
+ if (this.attr.showQueryFormItemFunc) {
842
+ this.debouncedShowQueryFormItemFunc = debounce(this.showQueryFormItemFunc, 100)
843
+ // 执行一次
844
+ this.showFormItemFunc()
845
+ }
846
+ // 人员联动框增加监听
847
+ if (this?.attr?.keyName?.toString()?.startsWith('search@根据表单项[') && this?.attr?.keyName?.toString().endsWith(']联动人员')) {
848
+ this.debouncedUserLinkFunc = debounce(() => this.updateResOptions('人员'), 200)
849
+ }
850
+ if (this?.attr?.keyName?.toString()?.startsWith('search@根据表单项[') && this?.attr?.keyName?.toString().endsWith(']联动部门')) {
851
+ this.debouncedDepLinkFunc = debounce(() => this.updateResOptions('部门'), 200)
852
+ }
853
+ // xTreeSelect 自己调用 mounted
854
+ if (this.attr.type !== 'treeSelect') {
855
+ this.$emit('mounted', this.attr)
856
+ }
857
+ },
858
+ computed: {
859
+ ...mapState('account', { currUser: 'user' }),
860
+ queryParamsName () {
861
+ if (this.attr.keyName.startsWith('function')) {
862
+ // 调用异步函数获取内容
863
+ return executeStrFunctionByContext(this, this.attr.keyName, [this.form, runLogic, this.mode, getConfigByNameAsync])
864
+ } else {
865
+ // 按现有方式处理
866
+ return this.attr.keyName.split('@')[this.attr.keyName.split('@').length - 1]
867
+ }
868
+ },
869
+ // 判断弹出时是否Cover,弹出只支持Cover以及CRUD
870
+ isCover () {
871
+ // 如果 queryParamsName 为空,返回空
872
+ if (!this.queryParamsName) {
873
+ return false
874
+ }
875
+ const result = this.queryParamsName.endsWith('Cover')
876
+ return result
877
+ },
878
+ },
879
+ watch: {
880
+ attr: {
881
+ handler () {
882
+ this.init()
883
+ },
884
+ deep: true
885
+ },
886
+ form: {
887
+ handler (newVal, oldVal) {
888
+ // 如果是从函数获取 options
889
+ if (this.attr.keyName && (this.attr.keyName.toString().indexOf('async ') !== -1 || this.attr.keyName.toString().indexOf('function') !== -1)) {
890
+ this.debouncedUpdateOptions()
891
+ }
892
+ // 如果有自定义是否展示表单项函数
893
+ if (this.attr.showFormItemFunc) {
894
+ this.debouncedShowFormItemFunc()
895
+ }
896
+ // 如果有自定义是否展示查询表单项函数
897
+ if (this.attr.showQueryFormItemFunc) {
898
+ this.debouncedShowQueryFormItemFunc()
899
+ }
900
+ // 地址搜索框赋值
901
+ if (this.attr.type === 'addressSearch') {
902
+ this.$refs.addressSearchCombobox.addressInput = this.form[this.attr.model]
903
+ }
904
+ // 数据源来自人员联动时更新数据
905
+ if (this?.attr?.keyName?.toString()?.startsWith('search@根据表单项[') && this?.attr?.keyName?.toString().endsWith(']联动人员')) {
906
+ this.debouncedUserLinkFunc()
907
+ }
908
+ // 数据源来自人员联动时更新数据
909
+ if (this?.attr?.keyName?.toString()?.startsWith('search@根据表单项[') && this?.attr?.keyName?.toString().endsWith(']联动部门')) {
910
+ this.debouncedDepLinkFunc()
911
+ }
912
+ },
913
+ deep: true
914
+ }
915
+ },
916
+ inject: {
917
+ getComponentByName: {
918
+ default: () => () => {
919
+ console.warn('getComponentByName is not provided')
920
+ return null // 或者返回一个默认的函数
921
+ },
922
+ },
923
+ registerComponent: {
924
+ default: () => () => {
925
+ console.warn('registerComponent is not provided')
926
+ return null // 或者返回一个默认的函数
927
+ },
928
+ },
929
+ getSelf: {
930
+ default: () => () => {
931
+ console.warn('getSelf is not provided')
932
+ return null // 或者返回一个默认的函数
933
+ },
934
+ },
935
+ XFormContext: {
936
+ default: () => () => {
937
+ console.warn('XFormContext is not provided')
938
+ return null // 或者返回一个默认的函数
939
+ },
940
+ },
941
+ setRequired: {
942
+ default: () => () => {
943
+ console.warn('setRequired is not provided')
944
+ return null // 或者返回一个默认的函数
945
+ },
946
+ },
947
+ removeRequired: {
948
+ default: () => () => {
949
+ console.warn('removeRequired is not provided')
950
+ return null // 或者返回一个默认的函数
951
+ },
952
+ }
953
+ },
954
+ methods: {
955
+ // 把内部的crud表单录入放到表单中,以便外部可以调用
956
+ onComponentMounted (h, attr) {
957
+ console.log('crud表单', h)
958
+ if (attr.crud) {
959
+ this.registerComponent(attr.model, this.$refs['childXFormTable_' + attr.model])
960
+ }
961
+ },
962
+ childTableFixedQueryForm (item) {
963
+ console.log('传递的form', this.form)
964
+ if (this.modifyModelData?.primaryKeyData) {
965
+ const fixedForm = {}
966
+ fixedForm[item.childTableForeignKeyName] = Object.values(this.modifyModelData.primaryKeyData)[0]
967
+ return fixedForm
968
+ }
969
+ return null
970
+ },
971
+ // 动态生成事件绑定对象
972
+ generateDynamicEvents (inputOnAfterFunc, attr) {
973
+ const events = {}
974
+ const states = this.parseStates(attr.inputOnAfterName, inputOnAfterFunc)
975
+
976
+ states.forEach((state) => {
977
+ // 动态绑定事件名到 emitFunc
978
+ events[state.event] = () => {
979
+ console.info('事件名', state.event)
980
+ this.emitFunc(state.event, attr)
981
+ }
982
+ })
983
+
984
+ return events // 返回 { state1Event: handler, state2Event: handler, ... }
985
+ },
986
+ parseStates (input, events) {
987
+ const eventNames = events.split('|')
988
+ return input.split('|').map((label, index) => ({
989
+ label,
990
+ event: eventNames[index] // 如果没有提供事件名称,则使用默认值
991
+ }))
992
+ },
993
+ focusInput () {
994
+ if (this.attr.defaultFocus) {
995
+ this.$nextTick(h => {
996
+ const el = this.$refs[`${this.attr.model}input`]?.$el
997
+ let inputEl
998
+ if (el) {
999
+ if (el.tagName.toLowerCase() === 'input') {
1000
+ inputEl = el
1001
+ } else {
1002
+ inputEl = el.querySelector('input')
1003
+ }
1004
+ }
1005
+ if (inputEl) {
1006
+ inputEl.focus()
1007
+ if (inputEl.type === 'number') {
1008
+ if (inputEl.valueAsNumber) {
1009
+ inputEl.setSelectionRange(0, inputEl.valueAsNumber.toString().length)
1010
+ }
1011
+ } else {
1012
+ if (inputEl.value) {
1013
+ inputEl.setSelectionRange(0, inputEl.value.length)
1014
+ }
1015
+ }
1016
+ }
1017
+ })
1018
+ }
1019
+ },
1020
+ // 更新人员下拉框数据
1021
+ async updateResOptions (type) {
1022
+ if (this?.attr?.keyName?.toString()?.startsWith('search@根据表单项[') && this?.attr?.keyName?.toString()?.endsWith(`]联动${type}`)) {
1023
+ const startIndex = this.attr.keyName.indexOf('[') + 1
1024
+ const endIndex = this.attr.keyName.indexOf(']', startIndex)
1025
+ const fromModel = this.attr.keyName.substring(startIndex, endIndex).replace('.', '_')
1026
+ const formModelData = Array.isArray(this.form[fromModel])
1027
+ ? this.form[fromModel]
1028
+ : [this.form[fromModel]]
1029
+ if (fromModel?.length && formModelData?.length) {
1030
+ const searchData = { source: `获取${type}`, userid: this.currUser.id, filter: formModelData, filterType: fromModel.indexOf('org') > -1 ? 'org' : 'dep' }
1031
+ await searchToListOption(searchData, res => {
1032
+ this.getDataCallback(
1033
+ res.filter(h => {
1034
+ if (fromModel.indexOf('org') > -1) {
1035
+ return formModelData?.includes(h.orgid || h.f_organization_id || h.parentid)
1036
+ } else {
1037
+ return formModelData?.includes(h?.parentid)
1038
+ }
1039
+ }
1040
+ )
1041
+ )
1042
+ })
1043
+ }
1044
+ }
1045
+ },
1046
+ // js 函数作为数据源
1047
+ async updateOptions () {
1048
+ if (this.attr.keyName && (this.attr.keyName.indexOf('async ') !== -1 || this.attr.keyName.indexOf('function ') !== -1)) {
1049
+ this.optionForFunc = await executeStrFunctionByContext(this, this.attr.keyName, [this.form, runLogic, this.mode, getConfigByNameAsync])
1050
+ }
1051
+ },
1052
+ async dataChangeFunc () {
1053
+ if (this.attr.dataChangeFunc) {
1054
+ await executeStrFunctionByContext(this, this.attr.dataChangeFunc, [this.form, this.setForm, this.attr, util, this.mode, runLogic, getConfigByNameAsync])
1055
+ }
1056
+ },
1057
+ async showFormItemFunc () {
1058
+ if (this.attr.showFormItemFunc) {
1059
+ const obj = executeStrFunctionByContext(this, this.attr.showFormItemFunc, [this.form, this.setForm, this.attr, util, this.mode])
1060
+ // 判断是 bool 还是 obj 兼容
1061
+ if (typeof obj === 'boolean') {
1062
+ this.show = obj
1063
+ } else if (obj && typeof obj === 'object') {
1064
+ // obj 是一个对象,并且不是数组
1065
+ this.show = obj?.show
1066
+ this.readOnly = obj?.readOnly
1067
+ }
1068
+ } else {
1069
+ this.show = true
1070
+ }
1071
+ },
1072
+ async showQueryFormItemFunc () {
1073
+ if (this.attr.showQueryFormItemFunc) {
1074
+ const obj = executeStrFunctionByContext(this, this.attr.showQueryFormItemFunc, [this.form, this.setForm, this.attr, util, this.mode])
1075
+ // 判断是 bool 还是 obj 兼容
1076
+ if (typeof obj === 'boolean') {
1077
+ this.show = obj
1078
+ } else if (obj && typeof obj === 'object') {
1079
+ // obj 是一个对象,并且不是数组
1080
+ this.show = obj?.show
1081
+ this.readOnly = obj?.readOnly
1082
+ }
1083
+ } else {
1084
+ this.show = true
1085
+ }
1086
+ },
1087
+ init () {
1088
+ if (!this.attr.flex) {
1089
+ if (this.mode === '新增/修改') {
1090
+ if (['horizontal', 'vertical'].includes(this.layout) || ['textarea', 'file', 'image'].includes(this.attr.type)) {
1091
+ // 新增修改表单 horizontal 模式下默认为一行
1092
+ this.attr.flex = {
1093
+ xs: 24,
1094
+ sm: 24,
1095
+ md: 24,
1096
+ lg: 24,
1097
+ xl: 24,
1098
+ xxl: 24,
1099
+ fullWidth: true
1100
+ }
1101
+ } else {
1102
+ // 新增修改表单 vertical 模式下默认为1列
1103
+ this.attr.flex = {
1104
+ xs: 24,
1105
+ sm: 12,
1106
+ md: 8,
1107
+ lg: 8,
1108
+ xl: 6,
1109
+ xxl: 6
1110
+ }
1111
+ }
1112
+ } else {
1113
+ this.attr.flex = {
1114
+ xs: 24,
1115
+ sm: 24,
1116
+ md: 8,
1117
+ lg: 6,
1118
+ xl: 6,
1119
+ xxl: 6
1120
+ }
1121
+ }
1122
+ }
1123
+ if (this.attr.keyName && typeof this.attr.keyName === 'string') {
1124
+ if (this.attr.keyName.indexOf('logic@') !== -1) {
1125
+ this.getData({}, res => this.getDataCallback(res))
1126
+ } else if (this.attr.keyName.indexOf('search@') !== -1) {
1127
+ // `tool.getFullTree(this.getRights().where(row.getType()==$organization$))`
1128
+ // 判断是否根据角色查询
1129
+ let source = this.attr.keyName.substring(7)
1130
+ const userid = this.currUser.id
1131
+ let roleName = 'roleName'
1132
+ if (source.startsWith('根据角色[') && source.endsWith(']获取人员')) {
1133
+ const startIndex = source.indexOf('[') + 1
1134
+ const endIndex = source.indexOf(']', startIndex)
1135
+ roleName = source.substring(startIndex, endIndex)
1136
+ source = '根据角色获取人员'
1137
+ }
1138
+ const searchData = { source, userid, roleName }
1139
+ // 判断是否根据某个表单项联动 仅返回列表结构并筛选
1140
+ if (source.startsWith('根据表单项[') && source.endsWith(']联动人员')) {
1141
+ this.updateResOptions('人员')
1142
+ } else if (source.startsWith('根据表单项[') && source.endsWith(']联动部门')) {
1143
+ this.updateResOptions('部门')
1144
+ } else if (this.attr.type === 'select' || this.attr.type === 'checkbox') {
1145
+ // 仅获取最内层数据
1146
+ searchToListOption(searchData, res => this.getDataCallback(res))
1147
+ } else {
1148
+ // 其他资源通用逻辑
1149
+ searchToOption(searchData, res => this.getDataCallback(res))
1150
+ }
1151
+ } else if (this.attr.keyName.indexOf('config@') !== -1) {
1152
+ const configName = this.attr.keyName.substring(7)
1153
+ getConfigByName(configName, this.serviceName, res => {
1154
+ this.getDataCallback(res.value)
1155
+ }, this.env === 'dev')
1156
+ } else if (this.attr.keyName.indexOf('async ') !== -1 || this.attr.keyName.indexOf('function ') !== -1) {
1157
+ this.updateOptions()
1158
+ }
1159
+ } else if (this.attr.keys) {
1160
+ this.getDataCallback(this.attr.keys)
1161
+ }
1162
+ this.focusInput()
1163
+ },
1164
+ addressSearchComboboxSelect (data) {
1165
+ const result = JSON.parse(data)
1166
+ if (result) {
1167
+ // 如果是数组格式
1168
+ if (Array.isArray(result)) {
1169
+ this.form[this.attr.model] = result[0]
1170
+ this.form[`${this.attr.model}_lng_lat`] = result[1]
1171
+ }
1172
+ // 如果是对象格式
1173
+ else if (typeof result === 'object') {
1174
+ this.form[this.attr.model] = result[this.attr.resultKeys?.address || 'address']
1175
+ this.form[`${this.attr.model}_lng_lat`] = result[this.attr.resultKeys?.coords || 'coords']
1176
+ }
1177
+ }
1178
+ },
1179
+ onDivisionsChange (data) {
1180
+ this.emitFunc('addressSearchComboboxSelect', {
1181
+ key: this.attr.model,
1182
+ value: data
1183
+ })
1184
+ },
1185
+ getDataCallback (res) {
1186
+ this.option = res
1187
+ if (this.attr.type === 'treeSelect') {
1188
+ this.$nextTick(() => {
1189
+ this.$refs.xTreeSelect.init({
1190
+ option: this.option,
1191
+ form: this.form,
1192
+ queryType: this.attr.queryType,
1193
+ name: this.attr.name,
1194
+ model: this.attr.model,
1195
+ mode: this.mode,
1196
+ disabled: this.disabled
1197
+ })
1198
+ })
1199
+ } else if (this.attr.type === 'radio' || ['radioGroup', 'clickChange'].includes(this.attr.showMode)) {
1200
+ this.initRadioValue()
1201
+ }
1202
+ },
1203
+ initRadioValue () {
1204
+ const model = this.attr.model
1205
+ if (this.mode === '新增/修改' && (this.form[model] === undefined || this.form[model] === null) && !this.attr.prop) {
1206
+ if (this.attr.keys && this.attr.keys.length > 1) {
1207
+ this.form[model] = this.attr.keys[0].value
1208
+ } else if (this.option.length > 1) {
1209
+ this.form[model] = this.option[0].value
1210
+ }
1211
+ }
1212
+ },
1213
+ // 文件框时设置上传组件的值
1214
+ setFiles (fileIds) {
1215
+ if (!this.form[this.attr.model]) {
1216
+ this.form[this.attr.model] = []
1217
+ }
1218
+ this.form[this.attr.model] = [...fileIds]
1219
+ },
1220
+ // 懒加载检索方法
1221
+ fetchFunction (value) {
1222
+ this.lastFetchId += 1
1223
+ const fetchId = this.lastFetchId
1224
+ this.option = []
1225
+ this.searching = true
1226
+ this.getData({
1227
+ word: value
1228
+ }, res => {
1229
+ if (fetchId !== this.lastFetchId) {
1230
+ return
1231
+ }
1232
+ this.option = res
1233
+ this.searching = false
1234
+ })
1235
+ },
1236
+ // 获取数据
1237
+ getData (value, callbackFun) {
1238
+ if (value !== '') {
1239
+ const logicName = this.attr.keyName
1240
+ const logic = logicName.substring(6)
1241
+ // 调用logic前设置参数
1242
+ if (this.getDataParams && this.getDataParams[this.attr.model]) {
1243
+ Object.assign(value, this.getDataParams[this.attr.model])
1244
+ }
1245
+ runLogic(logic, Object.assign(value, {
1246
+ orgId: this.currUser.orgid,
1247
+ userId: this.currUser.id
1248
+ }), this.serviceName, this.env === 'dev').then(res => {
1249
+ callbackFun(res)
1250
+ }).catch(e => {
1251
+ callbackFun([])
1252
+ console.error('获取数据失败:' + e)
1253
+ })
1254
+ }
1255
+ },
1256
+ filterOption (input, option) {
1257
+ const child = option.componentOptions.children[0]
1258
+ if (child.text) {
1259
+ return child.text.toLowerCase().indexOf(input.toLowerCase()) >= 0
1260
+ } else if (child.elm.innerText) {
1261
+ return child.elm.innerText.toLowerCase().indexOf(input.toLowerCase()) >= 0
1262
+ } else {
1263
+ return child.child.value.toLowerCase().indexOf(input.toLowerCase()) >= 0
1264
+ }
1265
+ },
1266
+ // 表单项变更函数中调用 控制表单组中表单项组名为 groupName 的表单是否展示
1267
+ // func:x-form-show(显示)/x-form-no-show(不显示)
1268
+ emitShowFormFunc (func, groupName) {
1269
+ this.emitFunc(func, groupName)
1270
+ },
1271
+ emitFunc (func, data) {
1272
+ this.$emit('x-form-item-emit-func', func, data, data?.model ? this.form[data.model] : this.form)
1273
+ },
1274
+ itemMounted (h) {
1275
+ this.$emit('mounted', h)
1276
+ },
1277
+ rowChoose (rows) {
1278
+ this.$emit('rowChoose', rows, this.attr, this.closeRowChooseInput)
1279
+ },
1280
+ searchRowChooseData () {
1281
+ if (this.searching) {
1282
+ return
1283
+ }
1284
+ this.lastFetchId += 1
1285
+ const fetchId = this.lastFetchId
1286
+ this.searching = true
1287
+ if (fetchId !== this.lastFetchId) {
1288
+ return
1289
+ }
1290
+ this.rowChooseFixedQueryValue = []
1291
+ this.rowChooseFixedQueryValue[this.attr.model] = this.form[this.attr.model]
1292
+ this.$nextTick(() => {
1293
+ this.$refs.rowChooseTable.refresh(true)
1294
+ })
1295
+ },
1296
+ showCloseRowChooseInput () {
1297
+ this.rowChoosePopoverVisible = true
1298
+ },
1299
+ closeRowChooseInput () {
1300
+ this.rowChoosePopoverVisible = false
1301
+ },
1302
+ rowChooseSearchAfterQuery () {
1303
+ this.searching = false
1304
+ },
1305
+ // 获取 recording 转换后的数据
1306
+ getRecodingData () {
1307
+ return this.$refs.recording.getRecordingData()
1308
+ },
1309
+ recordingData (data) {
1310
+ this.emitFunc('recordingData', data)
1311
+ },
1312
+ getPopupContainer (triggerNode) {
1313
+ return document.body
1314
+ // return triggerNode.parentNode
1315
+ },
1316
+ }
1317
+ }
1318
+ </script>
1319
+
1320
+ <style lang="less" scoped>
1321
+ .custom-dropdown {
1322
+ position: absolute;
1323
+ z-index: 1050;
1324
+ }
1325
+ .multiple_select {
1326
+ :deep(.ant-select-selection){
1327
+ max-height: 32px;
1328
+ overflow-y: scroll;
1329
+ }
1330
+ }
1331
+
1332
+ </style>