vue2-client 1.15.117 → 1.15.119

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 (561) 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/XChart/XChart_20250812134005.vue +160 -0
  32. package/.history/src/base-client/components/his/XChart/XChart_20250812134010.vue +160 -0
  33. package/.history/src/base-client/components/his/XChart/XChart_20250812134019.vue +160 -0
  34. package/.history/src/base-client/components/his/XChart/XChart_20250812134037.vue +160 -0
  35. package/.history/src/base-client/components/his/XChart/XChart_20250812134112.vue +160 -0
  36. package/.history/src/base-client/components/his/XChart/XChart_20250812134114.vue +160 -0
  37. package/.history/src/base-client/components/his/XChart/XChart_20250812134828.vue +148 -0
  38. package/.history/src/base-client/components/his/XChart/XChart_20250812134838.vue +155 -0
  39. package/.history/src/base-client/components/his/XChart/XChart_20250812134846.vue +155 -0
  40. package/.history/src/base-client/components/his/XChart/XChart_20250812134917.vue +155 -0
  41. package/.history/src/base-client/components/his/XChart/XChart_20250812151145.vue +149 -0
  42. package/.history/src/base-client/components/his/XChart/XChart_20250812151810.vue +153 -0
  43. package/.history/src/base-client/components/his/XChart/XChart_20250812151822.vue +153 -0
  44. package/.history/src/base-client/components/his/XChart/XChart_20250812151910.vue +153 -0
  45. package/.history/src/base-client/components/his/XChart/XChart_20250812152858.vue +258 -0
  46. package/.history/src/base-client/components/his/XChart/XChart_20250812152902.vue +258 -0
  47. package/.history/src/base-client/components/his/XChart/XChart_20250812152907.vue +258 -0
  48. package/.history/src/base-client/components/his/XChart/XChart_20250812152919.vue +258 -0
  49. package/.history/src/base-client/components/his/XChart/XChart_20250812153141.vue +269 -0
  50. package/.history/src/base-client/components/his/XChart/XChart_20250812153149.vue +276 -0
  51. package/.history/src/base-client/components/his/XChart/XChart_20250812153153.vue +276 -0
  52. package/.history/src/base-client/components/his/XChart/XChart_20250812153155.vue +276 -0
  53. package/.history/src/base-client/components/his/XChart/XChart_20250812153157.vue +276 -0
  54. package/.history/src/base-client/components/his/XChart/XChart_20250812153158.vue +276 -0
  55. package/.history/src/base-client/components/his/XChart/XChart_20250812153200.vue +276 -0
  56. package/.history/src/base-client/components/his/XChart/XChart_20250812153210.vue +276 -0
  57. package/.history/src/base-client/components/his/XChart/XChart_20250812153918.vue +275 -0
  58. package/.history/src/base-client/components/his/XChart/XChart_20250812154157.vue +280 -0
  59. package/.history/src/base-client/components/his/XChart/XChart_20250812154212.vue +280 -0
  60. package/.history/src/base-client/components/his/XChart/XChart_20250812154250.vue +280 -0
  61. package/.history/src/base-client/components/his/XChart/XChart_20250812154252.vue +280 -0
  62. package/.history/src/base-client/components/his/XChart/XChart_20250812154444.vue +280 -0
  63. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611091619.vue +442 -0
  64. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092547.vue +442 -0
  65. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092552.vue +442 -0
  66. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092744.vue +475 -0
  67. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092955.vue +475 -0
  68. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611092957.vue +475 -0
  69. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095652.vue +477 -0
  70. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095701.vue +477 -0
  71. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611095704.vue +477 -0
  72. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100005.vue +473 -0
  73. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100011.vue +473 -0
  74. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100014.vue +473 -0
  75. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100833.vue +473 -0
  76. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100853.vue +473 -0
  77. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611100940.vue +473 -0
  78. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101011.vue +473 -0
  79. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101013.vue +473 -0
  80. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101014.vue +473 -0
  81. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101159.vue +473 -0
  82. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101238.vue +474 -0
  83. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101240.vue +474 -0
  84. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101242.vue +474 -0
  85. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101404.vue +472 -0
  86. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101410.vue +472 -0
  87. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101459.vue +472 -0
  88. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101500.vue +472 -0
  89. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101502.vue +472 -0
  90. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101504.vue +472 -0
  91. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101610.vue +501 -0
  92. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101700.vue +501 -0
  93. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101702.vue +501 -0
  94. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101741.vue +504 -0
  95. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101749.vue +504 -0
  96. package/.history/src/base-client/components/his/XHisEditor/XHisEditor_20250611101759.vue +504 -0
  97. package/.history/src/base-client/components/his/XHisEditor/dome_20250611091349.vue +131 -0
  98. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105854.vue +160 -0
  99. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105902.vue +160 -0
  100. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105924.vue +160 -0
  101. package/.history/src/base-client/components/his/XHisEditor/dome_20250611105932.vue +158 -0
  102. package/.history/src/base-client/components/his/XList/XList_20250609135848.vue +173 -0
  103. package/.history/src/base-client/components/his/XList/XList_20250609141026.vue +222 -0
  104. package/.history/src/base-client/components/his/XList/XList_20250609141035.vue +229 -0
  105. package/.history/src/base-client/components/his/XList/XList_20250609141103.vue +229 -0
  106. package/.history/src/base-client/components/his/XList/XList_20250609141105.vue +229 -0
  107. package/.history/src/base-client/components/his/XList/XList_20250609141334.vue +241 -0
  108. package/.history/src/base-client/components/his/XList/XList_20250609141404.vue +241 -0
  109. package/.history/src/base-client/components/his/XList/XList_20250609141406.vue +241 -0
  110. package/.history/src/base-client/components/his/XList/XList_20250609141801.vue +245 -0
  111. package/.history/src/base-client/components/his/XList/XList_20250609142033.vue +245 -0
  112. package/.history/src/base-client/components/his/XList/XList_20250609142038.vue +245 -0
  113. package/.history/src/base-client/components/his/XList/XList_20250609142435.vue +255 -0
  114. package/.history/src/base-client/components/his/XList/XList_20250609142503.vue +255 -0
  115. package/.history/src/base-client/components/his/XList/XList_20250609142504.vue +255 -0
  116. package/.history/src/base-client/components/his/XList/XList_20250609143012.vue +270 -0
  117. package/.history/src/base-client/components/his/XList/XList_20250609143044.vue +270 -0
  118. package/.history/src/base-client/components/his/XList/XList_20250609143046.vue +270 -0
  119. package/.history/src/base-client/components/his/XList/XList_20250609143210.vue +270 -0
  120. package/.history/src/base-client/components/his/XList/XList_20250609144339.vue +294 -0
  121. package/.history/src/base-client/components/his/XList/XList_20250609144410.vue +294 -0
  122. package/.history/src/base-client/components/his/XList/XList_20250609144412.vue +294 -0
  123. package/.history/src/base-client/components/his/XList/XList_20250609144647.vue +303 -0
  124. package/.history/src/base-client/components/his/XList/XList_20250609144716.vue +303 -0
  125. package/.history/src/base-client/components/his/XList/XList_20250609144729.vue +303 -0
  126. package/.history/src/base-client/components/his/XList/XList_20250609151232.vue +288 -0
  127. package/.history/src/base-client/components/his/XList/XList_20250609151247.vue +288 -0
  128. package/.history/src/base-client/components/his/XList/XList_20250609151252.vue +288 -0
  129. package/.history/src/base-client/components/his/XList/XList_20250609161220.vue +317 -0
  130. package/.history/src/base-client/components/his/XList/XList_20250609161258.vue +306 -0
  131. package/.history/src/base-client/components/his/XList/XList_20250609161319.vue +306 -0
  132. package/.history/src/base-client/components/his/XList/XList_20250609161320.vue +306 -0
  133. package/.history/src/base-client/components/his/XList/XList_20250704142024.vue +495 -0
  134. package/.history/src/base-client/components/his/XList/XList_20250704142033.vue +495 -0
  135. package/.history/src/base-client/components/his/XList/XList_20250704142040.vue +494 -0
  136. package/.history/src/base-client/components/his/XList/XList_20250704142211.vue +494 -0
  137. package/.history/src/base-client/components/his/XList/XList_20250704142214.vue +494 -0
  138. package/.history/src/base-client/components/his/XList/XList_20250704143010.vue +495 -0
  139. package/.history/src/base-client/components/his/XList/XList_20250704143203.vue +495 -0
  140. package/.history/src/base-client/components/his/XList/XList_20250707095101.vue +492 -0
  141. package/.history/src/base-client/components/his/XList/XList_20250707100152.vue +492 -0
  142. package/.history/src/base-client/components/his/XList/XList_20250707100200.vue +485 -0
  143. package/.history/src/base-client/components/his/XList/XList_20250707100208.vue +485 -0
  144. package/.history/src/base-client/components/his/XList/XList_20250707100259.vue +488 -0
  145. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807134604.vue +263 -0
  146. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807134615.vue +302 -0
  147. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807134621.vue +301 -0
  148. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807134634.vue +311 -0
  149. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807134644.vue +330 -0
  150. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807134653.vue +330 -0
  151. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807134836.vue +330 -0
  152. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135247.vue +330 -0
  153. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135303.vue +354 -0
  154. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135316.vue +363 -0
  155. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135323.vue +363 -0
  156. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135334.vue +366 -0
  157. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135342.vue +364 -0
  158. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135349.vue +364 -0
  159. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135351.vue +346 -0
  160. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135354.vue +346 -0
  161. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135401.vue +346 -0
  162. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135406.vue +346 -0
  163. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807135424.vue +346 -0
  164. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807143043.vue +254 -0
  165. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807155506.vue +329 -0
  166. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807155535.vue +330 -0
  167. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807155543.vue +330 -0
  168. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807155926.vue +304 -0
  169. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807155928.vue +304 -0
  170. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807172548.vue +298 -0
  171. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807172609.vue +298 -0
  172. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807172623.vue +298 -0
  173. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807172631.vue +298 -0
  174. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807172701.vue +298 -0
  175. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807172704.vue +298 -0
  176. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807175937.vue +290 -0
  177. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807175942.vue +290 -0
  178. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807180210.vue +290 -0
  179. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807180424.vue +290 -0
  180. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807180448.vue +290 -0
  181. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807180915.vue +262 -0
  182. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250807180917.vue +262 -0
  183. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250808101106.vue +283 -0
  184. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250808101112.vue +289 -0
  185. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250808101118.vue +289 -0
  186. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250808101129.vue +294 -0
  187. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250808101137.vue +318 -0
  188. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250808101145.vue +320 -0
  189. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250808101154.vue +320 -0
  190. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250808101211.vue +320 -0
  191. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250808101236.vue +320 -0
  192. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250808101239.vue +320 -0
  193. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250811114001.vue +342 -0
  194. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250811114005.vue +342 -0
  195. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250811114014.vue +345 -0
  196. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250811114020.vue +345 -0
  197. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250811114028.vue +345 -0
  198. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250811114108.vue +345 -0
  199. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250811114115.vue +345 -0
  200. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250811114333.vue +346 -0
  201. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250811114339.vue +350 -0
  202. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250811114344.vue +355 -0
  203. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250811114351.vue +355 -0
  204. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250811114408.vue +355 -0
  205. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250811114410.vue +355 -0
  206. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250813154330.vue +389 -0
  207. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250813154338.vue +389 -0
  208. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250813154402.vue +389 -0
  209. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250813154425.vue +389 -0
  210. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250813154428.vue +389 -0
  211. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250813171922.vue +391 -0
  212. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250813171957.vue +391 -0
  213. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250813172004.vue +391 -0
  214. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250813172012.vue +391 -0
  215. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250813172241.vue +391 -0
  216. package/.history/src/base-client/components/his/XShiftSchedule/XShiftSchedule_20250813172242.vue +391 -0
  217. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807103845.vue +142 -0
  218. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807103852.vue +142 -0
  219. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807103857.vue +142 -0
  220. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807103859.vue +142 -0
  221. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807103907.vue +142 -0
  222. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807103910.vue +142 -0
  223. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807103911.vue +142 -0
  224. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807103913.vue +142 -0
  225. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807103916.vue +142 -0
  226. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807103931.vue +142 -0
  227. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807145127.vue +85 -0
  228. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807145136.vue +81 -0
  229. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807145142.vue +81 -0
  230. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807145145.vue +81 -0
  231. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807145148.vue +81 -0
  232. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807145151.vue +81 -0
  233. package/.history/src/base-client/components/his/XShiftSchedule/dome_20250807145155.vue +81 -0
  234. package/CHANGELOG.md +824 -824
  235. package/Components.md +60 -60
  236. package/Users/objecrt/af-vue2-client/src/base-client/components/his/XShiftSchedule/XShiftSchedule.vue +213 -0
  237. package/docs/LowCode/lowcode.md +155 -155
  238. package/docs/LowCode/lowcodeForDeveloper.md +230 -230
  239. package/docs/index.md +30 -30
  240. package/index.js +31 -31
  241. package/jest-transform-stub.js +8 -8
  242. package/jest.setup.js +7 -7
  243. package/jsconfig.json +19 -19
  244. package/package.json +1 -1
  245. package/public/his/editor/editor.html +51 -51
  246. package/public/his/editor/mock/bind_data.html +779 -779
  247. package/public/his/editor/mock/data_table.html +40 -40
  248. package/public/his/editor/mock/sign.html +75 -75
  249. package/public/his/editor/vender/JsBarcode.all.js +3669 -3669
  250. package/public/his/editor/vender/date97/My97DatePicker.htm +65 -65
  251. package/public/his/editor/vender/date97/WdatePicker.js +677 -677
  252. package/public/his/editor/vender/date97/calendar.js +4 -4
  253. package/public/his/editor/vender/date97/lang/en.js +13 -13
  254. package/public/his/editor/vender/date97/lang/zh-cn.js +13 -13
  255. package/public/his/editor/vender/date97/lang/zh-tw.js +13 -13
  256. package/public/his/editor/vender/date97/skin/WdatePicker.css +10 -10
  257. package/public/his/editor/vender/date97/skin/default/datepicker.css +328 -328
  258. package/public/his/editor/vender/date97/skin/ext/datepicker.css +308 -308
  259. package/public/his/editor/vender/date97/skin/whyGreen/datepicker.css +255 -255
  260. package/public/his/editor/vender/diff.js +1627 -1627
  261. package/public/his/editor/vender/editor.js +1 -1
  262. package/public/his/editor/vender/fabric.js +31187 -31187
  263. package/public/his/editor/vender/jquery/jquery.base64.js +190 -190
  264. package/public/his/editor/vender/jquery/jquery.js +10872 -10872
  265. package/public/his/editor/vender/jquery/jquery.print.js +255 -255
  266. package/public/his/editor/vender/jquery/zTreeStyle/zTreeStyle.css +96 -96
  267. package/public/his/editor/vender/mui/mui.min.css +4 -4
  268. package/public/his/editor/vender/mui/mui.min.js +5 -5
  269. package/public/his/editor/vender/mui/mui.picker.min.css +6 -6
  270. package/public/his/editor/vender/mui/mui.picker.min.js +6 -6
  271. package/public/his/editor/vender/qrcode.js +7 -7
  272. package/public/his/editor/vender/requirejs/require.js +2145 -2145
  273. package/public/his/editor/vender/signature/jSignature.CompressorSVG.js +518 -518
  274. package/public/his/editor/vender/signature/jSignature.UndoButton.js +164 -164
  275. package/public/his/editor/vender/signature/jSignature.js +1486 -1486
  276. package/public/his/editor/vender/validator.js +5094 -5094
  277. package/public/his/editor/vender/weui/weui.css +5659 -5659
  278. package/public/his/editor/vender/weui/weui.min.css +4 -4
  279. package/public/his/editor/vender/weui/weui.min.js +11 -11
  280. package/public/index.html +27 -27
  281. package/src/assets/img/querySlotDemo.svg +15 -15
  282. package/src/assets/svg/badtwo.svg +1 -1
  283. package/src/assets/svg/goodtwo.svg +1 -1
  284. package/src/base-client/components/AI/AskAiBtn.vue +136 -136
  285. package/src/base-client/components/AI/demo.vue +31 -31
  286. package/src/base-client/components/TreeList/TreeList.vue +91 -0
  287. package/src/base-client/components/TreeList/TreeNode.vue +81 -0
  288. package/src/base-client/components/common/AddressSearchCombobox/IcMapIcon.vue +16 -16
  289. package/src/base-client/components/common/AddressSearchCombobox/demo.vue +36 -36
  290. package/src/base-client/components/common/AddressSearchCombobox/ic_map.svg +6 -6
  291. package/src/base-client/components/common/AmapMarker/AmapPointRendering.vue +120 -120
  292. package/src/base-client/components/common/CitySelect/index.js +3 -3
  293. package/src/base-client/components/common/CitySelect/index.md +109 -109
  294. package/src/base-client/components/common/CreateQuery/CreateQuery.vue +669 -669
  295. package/src/base-client/components/common/CreateQuery/CreateQueryItem.vue +1014 -1014
  296. package/src/base-client/components/common/CreateQuery/index.js +3 -3
  297. package/src/base-client/components/common/CreateQuery/index.md +42 -42
  298. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQuery.vue +452 -452
  299. package/src/base-client/components/common/CreateSimpleFormQuery/CreateSimpleFormQueryItem.vue +511 -511
  300. package/src/base-client/components/common/CreateSimpleFormQuery/index.js +3 -3
  301. package/src/base-client/components/common/CreateSimpleFormQuery/index.md +42 -42
  302. package/src/base-client/components/common/FormGroupEdit/index.js +3 -3
  303. package/src/base-client/components/common/FormGroupEdit/index.md +43 -43
  304. package/src/base-client/components/common/FormGroupQuery/FormGroupQuery.vue +166 -166
  305. package/src/base-client/components/common/FormGroupQuery/index.js +3 -3
  306. package/src/base-client/components/common/FormGroupQuery/index.md +43 -43
  307. package/src/base-client/components/common/JSONToTree/jsontotree.vue +271 -271
  308. package/src/base-client/components/common/LowCodeComponent/LowCodeEditorModal.vue +108 -108
  309. package/src/base-client/components/common/LowCodeComponent/LowCodeEditorPanel.vue +413 -413
  310. package/src/base-client/components/common/LowCodeComponent/LowCodePageOrganization.vue +502 -502
  311. package/src/base-client/components/common/LowCodeComponent/LowCodeRender.vue +728 -728
  312. package/src/base-client/components/common/LowCodeComponent/LowCodeRenderEnter.vue +29 -29
  313. package/src/base-client/components/common/LowCodeComponent/LowCodeUIStore.vue +219 -219
  314. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeAddPageModal.vue +117 -117
  315. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeCustomJSModal.vue +80 -80
  316. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeEventEditorModal.vue +398 -398
  317. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLifeCycleModal.vue +65 -65
  318. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLogicCallbackModal.vue +64 -64
  319. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeLogicParamModal.vue +73 -73
  320. package/src/base-client/components/common/LowCodeComponent/modal/lowCodeRunFunctionParamModal.vue +76 -76
  321. package/src/base-client/components/common/PersonSetting/PersonSetting.vue +208 -208
  322. package/src/base-client/components/common/PersonSetting/index.js +3 -3
  323. package/src/base-client/components/common/Recording/Recording.vue +243 -243
  324. package/src/base-client/components/common/Recording/index.js +3 -3
  325. package/src/base-client/components/common/Tree/Tree.vue +149 -149
  326. package/src/base-client/components/common/Tree/index.js +2 -2
  327. package/src/base-client/components/common/Upload/index.js +3 -3
  328. package/src/base-client/components/common/XAddForm/XAddForm.vue +113 -113
  329. package/src/base-client/components/common/XAddNativeForm/index.md +146 -146
  330. package/src/base-client/components/common/XAddNativeFormOA/XAddNativeFormOA.vue +303 -303
  331. package/src/base-client/components/common/XAddNativeFormOA/index.js +3 -3
  332. package/src/base-client/components/common/XAddNativeFormOA/index.md +146 -146
  333. package/src/base-client/components/common/XAddReport/index.js +3 -3
  334. package/src/base-client/components/common/XAddReport/index.md +56 -56
  335. package/src/base-client/components/common/XBadge/XBadge.vue +94 -94
  336. package/src/base-client/components/common/XButtons/XButtonDemo.vue +28 -28
  337. package/src/base-client/components/common/XButtons/index.js +3 -3
  338. package/src/base-client/components/common/XButtons/index.md +61 -61
  339. package/src/base-client/components/common/XCard/XCard.vue +64 -64
  340. package/src/base-client/components/common/XCardSet/XTiltle.vue +191 -0
  341. package/src/base-client/components/common/XCheckList/XCheckList.vue +106 -106
  342. package/src/base-client/components/common/XCheckList/XCheckListDemo.vue +41 -41
  343. package/src/base-client/components/common/XDataCard/index.js +3 -3
  344. package/src/base-client/components/common/XDataCard/index.md +1 -1
  345. package/src/base-client/components/common/XDataDrawer/XDataDrawer.vue +180 -180
  346. package/src/base-client/components/common/XDataDrawer/index.js +3 -3
  347. package/src/base-client/components/common/XDataDrawer/index.md +41 -41
  348. package/src/base-client/components/common/XDatePicker/demo.vue +153 -153
  349. package/src/base-client/components/common/XDescriptions/index.js +3 -3
  350. package/src/base-client/components/common/XDescriptions/index.md +83 -83
  351. package/src/base-client/components/common/XDetailsView/XDetailsView.vue +238 -238
  352. package/src/base-client/components/common/XDetailsView/index.js +3 -3
  353. package/src/base-client/components/common/XForm/XFormItem.vue +25 -2
  354. package/src/base-client/components/common/XForm/XStatusButton.vue +54 -54
  355. package/src/base-client/components/common/XForm/index.md +178 -178
  356. package/src/base-client/components/common/XForm/itemComponent/XClickChangeBtn/index.vue +49 -49
  357. package/src/base-client/components/common/XFormGroup/index.js +3 -3
  358. package/src/base-client/components/common/XFormGroup/index.md +38 -38
  359. package/src/base-client/components/common/XFormGroupDetails/XFormGroupDetails.vue +72 -72
  360. package/src/base-client/components/common/XFormGroupDetails/index.js +3 -3
  361. package/src/base-client/components/common/XFormTable/demo.vue +2 -2
  362. package/src/base-client/components/common/XFormTable/index.md +92 -92
  363. package/src/base-client/components/common/XLabelSelect/XLabelSelect.vue +110 -110
  364. package/src/base-client/components/common/XLabelSelect/XLabelSelectDemo.vue +35 -35
  365. package/src/base-client/components/common/XLicensePlate/XLicensePlate.vue +193 -193
  366. package/src/base-client/components/common/XLicensePlate/XLicensePlateDemo.vue +48 -48
  367. package/src/base-client/components/common/XPrint/OpenInvoice.vue +21 -21
  368. package/src/base-client/components/common/XPrint/PrintHtml.js +98 -98
  369. package/src/base-client/components/common/XPrint/css/hiPrintCss.js +359 -359
  370. package/src/base-client/components/common/XPrint/css/lodopCss.js +26 -26
  371. package/src/base-client/components/common/XPrint/css/print-lock.css +351 -351
  372. package/src/base-client/components/common/XPrint/index.vue +97 -97
  373. package/src/base-client/components/common/XReport/XReportDesign.vue +463 -463
  374. package/src/base-client/components/common/XReport/XReportJsonRender.vue +381 -381
  375. package/src/base-client/components/common/XReport/index.js +3 -3
  376. package/src/base-client/components/common/XReport/print.js +186 -186
  377. package/src/base-client/components/common/XReportDrawer/index.js +3 -3
  378. package/src/base-client/components/common/XReportGrid/index.js +3 -3
  379. package/src/base-client/components/common/XReportGrid/index.md +44 -44
  380. package/src/base-client/components/common/XReportSlot/XReportSlot.vue +110 -110
  381. package/src/base-client/components/common/XReportSlot/index.js +3 -3
  382. package/src/base-client/components/common/XReportSlot/index.md +48 -48
  383. package/src/base-client/components/common/XSimpleDescriptions/XSimpleDescriptions.vue +166 -166
  384. package/src/base-client/components/common/XSimpleDescriptions/index.js +3 -3
  385. package/src/base-client/components/common/XSimpleDescriptions/index.md +7 -7
  386. package/src/base-client/components/common/XStepView/XStepView.vue +252 -252
  387. package/src/base-client/components/common/XStepView/index.js +3 -3
  388. package/src/base-client/components/common/XStepView/index.md +31 -31
  389. package/src/base-client/components/common/XTab/XTabDemo.vue +22 -22
  390. package/src/base-client/components/common/XTab/index.js +3 -3
  391. package/src/base-client/components/common/XTable/CustomFuncCel.vue +51 -51
  392. package/src/base-client/components/common/XTable/TableCellRenderer.vue +161 -161
  393. package/src/base-client/components/common/XTable/index.md +255 -255
  394. package/src/base-client/components/common/XTagGroup/index.vue +52 -52
  395. package/src/base-client/components/common/XTree/XTree.vue +424 -424
  396. package/src/base-client/components/common/XTree/index.js +3 -3
  397. package/src/base-client/components/common/XTree/index.md +36 -36
  398. package/src/base-client/components/common/XTreeOne/XTreeOne.vue +113 -113
  399. package/src/base-client/components/common/XTreeOne/XTreeOnePro.vue +128 -128
  400. package/src/base-client/components/common/richTextModal/index.vue +56 -56
  401. package/src/base-client/components/common/richTextModal/richDemo.vue +48 -48
  402. package/src/base-client/components/his/XChart/XChart.vue +282 -282
  403. package/src/base-client/components/his/XChart/dome.vue +19 -19
  404. package/src/base-client/components/his/XHisEditor/XHisEditor.vue +51 -2
  405. package/src/base-client/components/his/XHisEditor/dome.vue +144 -0
  406. package/src/base-client/components/his/XHisEditor/index.js +3 -3
  407. package/src/base-client/components/his/XImportExcelButton/XFrontImportExcel.vue +5 -2
  408. package/src/base-client/components/his/XShiftSchedule/XShiftSchedule.vue +4 -0
  409. package/src/base-client/components/his/XTextCard/XTextCard.vue +207 -207
  410. package/src/base-client/components/his/threeTestOrders/editor.vue +111 -111
  411. package/src/base-client/components/index.js +51 -51
  412. package/src/base-client/components/layout/XTreeView/XTreeView.vue +130 -130
  413. package/src/base-client/components/layout/XTreeView/index.js +3 -3
  414. package/src/base-client/components/layout/XTreeView/index.md +46 -46
  415. package/src/base-client/components/system/DictionaryDetailsView/DictionaryDetailsView.vue +232 -232
  416. package/src/base-client/components/system/QueryParamsDetailsView/QueryParamsDetailsView.vue +281 -281
  417. package/src/base-client/plugins/Config.js +19 -19
  418. package/src/base-client/plugins/GetLoginInfoService.js +183 -183
  419. package/src/base-client/plugins/Recording.js +258 -258
  420. package/src/base-client/plugins/index.js +23 -23
  421. package/src/base-client/plugins/tabs-page-plugin.js +39 -39
  422. package/src/components/Charts/Bar.vue +62 -62
  423. package/src/components/Charts/ChartCard.vue +134 -134
  424. package/src/components/Charts/Liquid.vue +67 -67
  425. package/src/components/Charts/MiniArea.vue +39 -39
  426. package/src/components/Charts/MiniBar.vue +39 -39
  427. package/src/components/Charts/MiniProgress.vue +75 -75
  428. package/src/components/Charts/MiniSmoothArea.vue +40 -40
  429. package/src/components/Charts/Radar.vue +68 -68
  430. package/src/components/Charts/RankList.vue +77 -77
  431. package/src/components/Charts/TagCloud.vue +113 -113
  432. package/src/components/Charts/TransferBar.vue +64 -64
  433. package/src/components/Charts/Trend.vue +82 -82
  434. package/src/components/Charts/chart.less +12 -12
  435. package/src/components/Charts/smooth.area.less +13 -13
  436. package/src/components/CodeMirror/inedx.vue +118 -118
  437. package/src/components/CodeMirror/setting.js +40 -40
  438. package/src/components/NumberInfo/NumberInfo.vue +54 -54
  439. package/src/components/NumberInfo/index.js +3 -3
  440. package/src/components/NumberInfo/index.less +54 -54
  441. package/src/components/NumberInfo/index.md +43 -43
  442. package/src/components/card/ChartCard.vue +79 -79
  443. package/src/components/chart/Bar.vue +60 -60
  444. package/src/components/chart/MiniArea.vue +67 -67
  445. package/src/components/chart/MiniBar.vue +59 -59
  446. package/src/components/chart/MiniProgress.vue +57 -57
  447. package/src/components/chart/Radar.vue +80 -80
  448. package/src/components/chart/RankingList.vue +60 -60
  449. package/src/components/chart/Trend.vue +79 -79
  450. package/src/components/chart/index.less +9 -9
  451. package/src/components/checkbox/ColorCheckbox.vue +157 -157
  452. package/src/components/checkbox/ImgCheckbox.vue +117 -117
  453. package/src/components/checkbox/ImgCheckboxGroup.vue +76 -76
  454. package/src/components/checkbox/index.js +9 -9
  455. package/src/components/exception/ExceptionPage.vue +70 -70
  456. package/src/components/g2Charts/constants.js +202 -202
  457. package/src/components/g2Charts/demo.vue +808 -808
  458. package/src/components/g2Charts/designer.vue +228 -228
  459. package/src/components/g2Charts/designerBaseConfig.vue +61 -61
  460. package/src/components/g2Charts/designerDataConfig.vue +259 -259
  461. package/src/components/g2Charts/designerStyleConfig.vue +16 -16
  462. package/src/components/g2Charts/index.vue +397 -397
  463. package/src/components/index.js +36 -36
  464. package/src/components/input/IInput.vue +66 -66
  465. package/src/components/menu/SideMenu.vue +75 -75
  466. package/src/components/menu/menu.js +273 -273
  467. package/src/components/setting/Setting.vue +234 -234
  468. package/src/components/tool/AStepItem.vue +60 -60
  469. package/src/config/CreateQueryConfig.js +325 -325
  470. package/src/config/default/antd.config.js +89 -89
  471. package/src/config/default/setting.config.js +55 -55
  472. package/src/font-style/font.css +4 -4
  473. package/src/layouts/CommonLayout.vue +56 -56
  474. package/src/layouts/PageLayout.vue +151 -151
  475. package/src/layouts/SinglePageView.vue +136 -136
  476. package/src/layouts/header/AdminHeader.vue +132 -132
  477. package/src/layouts/header/HeaderNotice.vue +177 -177
  478. package/src/layouts/header/InstitutionDetail.vue +181 -181
  479. package/src/layouts/tabs/TabsHead.vue +189 -189
  480. package/src/lib.js +1 -1
  481. package/src/mock/extend/index.js +84 -84
  482. package/src/mock/goods/index.js +108 -108
  483. package/src/pages/DefaultExample/index.vue +77 -77
  484. package/src/pages/DynamicStatistics/ChartSelector.vue +331 -331
  485. package/src/pages/DynamicStatistics/DataTabs.vue +83 -83
  486. package/src/pages/DynamicStatistics/DynamicTable.vue +128 -128
  487. package/src/pages/DynamicStatistics/EvaluationArea.vue +69 -69
  488. package/src/pages/DynamicStatistics/FavoriteList.vue +50 -50
  489. package/src/pages/DynamicStatistics/QuestionHistoryAndFavorites.vue +591 -591
  490. package/src/pages/DynamicStatistics/SearchBar.vue +192 -192
  491. package/src/pages/DynamicStatistics/index.vue +282 -282
  492. package/src/pages/Example/childIndex.vue +15 -15
  493. package/src/pages/Example/index.vue +30 -30
  494. package/src/pages/NewDynamicStatistics/ChartSelector.vue +331 -331
  495. package/src/pages/NewDynamicStatistics/DataTabs.vue +122 -122
  496. package/src/pages/NewDynamicStatistics/DynamicTable.vue +128 -128
  497. package/src/pages/NewDynamicStatistics/EvaluationArea.vue +69 -69
  498. package/src/pages/NewDynamicStatistics/FavoriteList.vue +50 -50
  499. package/src/pages/NewDynamicStatistics/QuestionHistoryAndFavorites.vue +289 -289
  500. package/src/pages/NewDynamicStatistics/SearchBar.vue +193 -193
  501. package/src/pages/NewDynamicStatistics/index.vue +258 -258
  502. package/src/pages/Recording/index.vue +77 -77
  503. package/src/pages/ServiceReview/index.vue +284 -284
  504. package/src/pages/SubExample/index.vue +26 -26
  505. package/src/pages/WorkflowDetail/WorkflowPageDetail/TrimTextTail.vue +23 -23
  506. package/src/pages/XReportView/index.vue +64 -64
  507. package/src/pages/XTreeOneProExample/index.vue +67 -67
  508. package/src/pages/dashboard/workplace/WorkPlace.vue +141 -141
  509. package/src/pages/login/Login.vue +379 -379
  510. package/src/pages/login/LoginV3.vue +389 -389
  511. package/src/pages/lowCode/lowCodeEditor.vue +1219 -1219
  512. package/src/pages/lowCode/lowCodeRenderPage.vue +43 -43
  513. package/src/pages/report/ReportTable.js +124 -124
  514. package/src/pages/resourceManage/orgListManage.vue +98 -98
  515. package/src/pages/system/dictionary/index.vue +44 -44
  516. package/src/pages/system/monitor/loginInfor/index.vue +37 -37
  517. package/src/pages/system/monitor/operLog/index.vue +37 -37
  518. package/src/pages/system/settings/modifyPassword.vue +117 -117
  519. package/src/pages/system/ticket/index.vue +480 -480
  520. package/src/pages/system/ticket/submitTicketSuccess.vue +484 -484
  521. package/src/pages/userInfoDetailManage/ChangeMeterRecordQuery/index.vue +64 -64
  522. package/src/pages/userInfoDetailManage/InfoChangeRecordQuery/index.vue +64 -64
  523. package/src/pages/userInfoDetailManage/InstructRecordQuery/index.vue +64 -64
  524. package/src/pages/userInfoDetailManage/MeterParamRecordQuery/index.vue +64 -64
  525. package/src/pages/userInfoDetailManage/TransferRecordQuery/index.vue +66 -66
  526. package/src/pages/userInfoDetailManage/WatchCollectionRecordQuery/index.vue +64 -64
  527. package/src/plugins/EventLogPlugin.js +33 -33
  528. package/src/plugins/FindParentsData.js +17 -17
  529. package/src/router/async/config.async.js +35 -35
  530. package/src/router/async/router.map.js +2 -2
  531. package/src/router/index.js +27 -27
  532. package/src/services/DataModel.js +30 -30
  533. package/src/services/LodopFuncs.js +137 -137
  534. package/src/services/api/TicketDetailsViewApi.js +46 -46
  535. package/src/services/api/cas.js +79 -79
  536. package/src/services/api/common.js +346 -346
  537. package/src/services/api/entity.js +18 -18
  538. package/src/services/api/index.js +17 -17
  539. package/src/store/modules/account.js +115 -115
  540. package/src/store/modules/index.js +5 -5
  541. package/src/store/modules/lowCode.js +33 -33
  542. package/src/store/modules/setting.js +119 -119
  543. package/src/theme/default/style.less +58 -58
  544. package/src/utils/authority-utils.js +85 -85
  545. package/src/utils/errorCode.js +6 -6
  546. package/src/utils/formatter.js +74 -74
  547. package/src/utils/htmlToPDF.js +108 -108
  548. package/src/utils/htmlToPDFApi.js +5 -5
  549. package/src/utils/login.js +188 -188
  550. package/src/utils/lowcode/lowcodeComponentMixin.js +120 -120
  551. package/src/utils/lowcode/lowcodeLog.js +29 -29
  552. package/src/utils/lowcode/lowcodeUtils.js +373 -373
  553. package/src/utils/lowcode/registerComponentForEditor.js +1 -1
  554. package/src/utils/lowcode/registerComponentForRender.js +11 -11
  555. package/src/utils/map-utils.js +47 -47
  556. package/src/utils/reg.js +95 -95
  557. package/src/utils/runEvalFunction.js +14 -14
  558. package/src/utils/theme-color-replacer-extend.js +92 -92
  559. package/src/utils/util.js +329 -329
  560. package/src/utils/waterMark.js +31 -31
  561. package//350/277/201/347/247/273/346/227/245/345/277/227.md +15 -15
@@ -1,728 +1,728 @@
1
- <template>
2
- <div style="width: 100%">
3
- <template v-for="(page,pageIndex) in pageConfig.page">
4
- <!-- 拖拽时显示的临时容器 -->
5
- <template v-if="showDragSpan">
6
- <div style="display: flex" :key="pageIndex">
7
- <template v-for="item in dragConfig">
8
- <div class="container" style="font-size: 1.5em" :key="item.id" :style="'width:' + item.width + 'px'">
9
- 宽度:{{ item.span }}
10
- </div>
11
- </template>
12
- </div>
13
- </template>
14
- <!-- 渲染器主体 -->
15
- <template v-for="(row,rowIndex) in page.body">
16
- <a-row
17
- :key="pageIndex + '_' + rowIndex"
18
- type="flex"
19
- :justify="row.config.justify"
20
- :gutter="row.config.gutter"
21
- :align="row.config.align">
22
- <template v-if="!showDragSpan">
23
- <template v-for="(item, itemIndex) in row.body">
24
- <a-col :span="item.span" :key="item.id">
25
- <!-- 显示容器 -->
26
- <div
27
- v-if="item.type === 'container' && editMode"
28
- style="display: flex;align-items: center"
29
- @click="clickComponentInEditor(item)">
30
- <div :class="item.selected ? 'selected_container' : 'container'">
31
- <div>
32
- <p style="font-size: 1.5em">宽度:{{ item.span }}</p>
33
- </div>
34
- <div>
35
- <a-button @click.stop="handelContainerDelete(item.id, pageIndex)">删除</a-button>
36
- </div>
37
- </div>
38
- <div
39
- v-if="itemIndex !== row.body.length - 1"
40
- style="width: 6px;font-size: 1em;color: rgb( 24,144,255)"
41
- class="dragDiv"
42
- @mousedown="dragStart($event, item.id, row)">
43
- || <br> ||
44
- </div>
45
- </div>
46
- <!-- 显示Tab容器 -->
47
- <div
48
- v-else-if="item.type === 'tabs'">
49
- <a-tabs>
50
- <template v-for="(tab) in item.body">
51
- <a-tab-pane :key="tab.key" :tab="tab.label">
52
- <LowCodeRender
53
- ref="sub"
54
- :is-root="false"
55
- @showDraw="handelSubShowDraw"
56
- @showModal="handelSubShowModal"
57
- v-if="renderSub"
58
- @spanDrag="handleDrag"
59
- @containerDelete="handleContainerDelete"
60
- @clickComponentInEditor="clickComponentInner"
61
- :page-config="tab.body"
62
- :edit-mode="editMode"/>
63
- </a-tab-pane>
64
- </template>
65
- </a-tabs>
66
- </div>
67
- <!-- 递归显示页面容器 -->
68
- <div
69
- v-else-if="item.type === 'container_page'"
70
- style="display: flex;align-items: center">
71
- <LowCodeRender
72
- ref="sub"
73
- :is-root="false"
74
- @showDraw="handelSubShowDraw"
75
- @showModal="handelSubShowModal"
76
- v-if="renderSub"
77
- @spanDrag="handleDrag"
78
- @containerDelete="handleContainerDelete"
79
- @clickComponentInEditor="clickComponentInner"
80
- :page-config="item"
81
- :edit-mode="editMode"/>
82
- <div
83
- v-if="itemIndex !== row.body.length - 1"
84
- style="width: 6px;font-size: 1em;color: rgb( 24,144,255);"
85
- class="dragDiv"
86
- @mousedown="dragStart($event, item.id, row)">
87
- || <br> ||
88
- </div>
89
- </div>
90
- <!-- 页面渲染 / 编辑模式中,将弹框或抽屉中的内容渲染为页面 -->
91
- <div :ref="item.id" :id="item.id" v-else-if="editMode || (page.type !== 'modal' && page.type !== 'draw')">
92
- <div
93
- @click="clickComponentInEditor(item)"
94
- :class=" editMode ? 'componentInEditor' : '' ">
95
- <component
96
- v-if="checkComponentRequiredProps(item.type, item.props)"
97
- :lifeCycleFunction="resolveLifeCycleEvent(item)"
98
- :is="resolveComponentType(item.type, item.id)"
99
- :propsData="{...item.props}"
100
- @componentDidMounted="componentDidMounted"
101
- @onEvent="handleEvent"
102
- :mixinComponentId="item.id"/>
103
- <div v-else class="propsNotFixedComponent">
104
- <p style="line-height: 200px; text-align: center; font-size: 2em; margin: 0">{{ item.type }}</p>
105
- <p style="text-align: center; font-size: 1.2em">必填参数未设置完全!暂停渲染</p>
106
- </div>
107
- </div>
108
- </div>
109
- </a-col>
110
- </template>
111
- </template>
112
- </a-row>
113
- </template>
114
- </template>
115
- <!-- 弹框渲染 -->
116
- <template v-for="(modal, modalIndex) in pageConfig.page.filter(page => page.type === 'modal')">
117
- <a-modal
118
- :key="'modalIndex_' + modalIndex"
119
- :title="modal.title"
120
- :width="modal.width"
121
- :dialog-style="{ top: '5rem' }"
122
- :visible="modalVisible[modal.id]"
123
- :z-index="1003"
124
- :maskClosable="false"
125
- @cancel="closeModalOrDraw(modal.id, 'modal')"
126
- :destroyOnClose="true">
127
- <template v-for="(row, rowIndex) in modal.body">
128
- <template v-for="(item, itemIndex) in row.body">
129
- <div v-if="item.type === 'tabs'" :key="'modalItem_' + rowIndex + '_' + itemIndex">
130
- <h1>tabssssss</h1>
131
- </div>
132
- <div v-else :key="'modalItem_' + rowIndex + '_' + itemIndex">
133
- <component
134
- v-if="checkComponentRequiredProps(item.type, item.props)"
135
- :lifeCycleFunction="resolveLifeCycleEvent(item)"
136
- :is="resolveComponentType(item.type)"
137
- :propsData="{...item.props, showModalOrDraw: false}"
138
- @componentDidMounted="componentDidMounted"
139
- @onEvent="handleEvent"
140
- :mixinComponentId="item.id"/>
141
- <div v-else class="propsNotFixedComponent">
142
- <p style="line-height: 200px; text-align: center; font-size: 2em; margin: 0">{{ item.type }}</p>
143
- <p style="text-align: center; font-size: 1.2em">必填参数未设置完全!暂停渲染</p>
144
- </div>
145
- </div>
146
- </template>
147
- </template>
148
- </a-modal>
149
- </template>
150
- <!-- 抽屉渲染 -->
151
- <template v-for="(draw, drawIndex) in pageConfig.page.filter(page => page.type === 'draw')">
152
- <a-drawer
153
- :key="'drawIndex_' + drawIndex"
154
- :title="draw.title"
155
- :width="draw.width"
156
- :visible="drawVisible[draw.id]"
157
- :z-index="1003"
158
- @close="closeModalOrDraw(draw.id, 'draw')"
159
- :destroyOnClose="true">
160
- <template v-for="(row, rowIndex) in draw.body">
161
- <template v-for="(item, itemIndex) in row.body">
162
- <div v-if="item.type === 'tabs'" :key="'drawItem_' + rowIndex + '_' + itemIndex">
163
- <h1>tabssssss</h1>
164
- </div>
165
- <div v-else :key="'drawItem_' + rowIndex + '_' + itemIndex">
166
- <component
167
- v-if="checkComponentRequiredProps(item.type, item.props)"
168
- :lifeCycleFunction="resolveLifeCycleEvent(item)"
169
- :is="resolveComponentType(item.type)"
170
- :propsData="{...item.props, showModalOrDraw: false}"
171
- @componentDidMounted="componentDidMounted"
172
- @onEvent="handleEvent"
173
- :mixinComponentId="item.id"/>
174
- <div v-else class="propsNotFixedComponent">
175
- <p style="line-height: 200px; text-align: center; font-size: 2em; margin: 0">{{ item.type }}</p>
176
- <p style="text-align: center; font-size: 1.2em">必填参数未设置完全!暂停渲染</p>
177
- </div>
178
- </div>
179
- </template>
180
- </template>
181
- </a-drawer>
182
- </template>
183
- </div>
184
- </template>
185
-
186
- <script>
187
- // eslint-disable-next-line no-unused-vars
188
- import Vue from 'vue'
189
- import * as allComponents from '@vue2-client/utils/lowcode/registerComponentForRender'
190
- import lowcodeLog from '@vue2-client/utils/lowcode/lowcodeLog'
191
- import * as lowcodeUtils from '@vue2-client/utils/lowcode/lowcodeUtils'
192
- import { runLogic } from '@vue2-client/services/api/common'
193
-
194
- export default {
195
- name: 'LowCodeRender',
196
- props: {
197
- // 页面配置
198
- pageConfig: {
199
- type: Object,
200
- required: true
201
- },
202
- // 是否为编辑模式
203
- editMode: {
204
- type: Boolean,
205
- default: true
206
- },
207
- // 用于标识渲染器是否为顶级渲染器
208
- // 非顶级渲染器在控制弹框、抽屉显隐的时候需要emit而不是修改值
209
- isRoot: {
210
- type: Boolean,
211
- default: true
212
- }
213
- },
214
- data () {
215
- return {
216
- // 传递给组件的Props合集
217
- propsData: {},
218
- // 是否为拖拽模式
219
- showDragSpan: false,
220
- // 拖拽的缓存
221
- dragConfig: [],
222
- // 记录拖拽位移单位量
223
- beforeSpanThrough: -1,
224
- // 记录拖拽之前的span
225
- originalSpan: -1,
226
- // 记录拖拽目标下一个元素的原始span
227
- nextOriginalSpan: -1,
228
- // 弹框显示集合
229
- modalVisible: {},
230
- // 抽屉显示集合
231
- drawVisible: {},
232
- // 控制递归渲染
233
- renderSub: true,
234
- // 用于控制组件外框闪烁
235
- colClassName: '',
236
- // 控制容器渲染,用于递归时,刷新递归中容器的状态
237
- showContainer: true,
238
- // 控制闪烁的定时器
239
- twinkTimer: undefined,
240
- // 缓存正在闪烁的组件,用于还原状态
241
- twinkBefore: undefined
242
- }
243
- },
244
- inject: [
245
- 'componentsMap'
246
- ],
247
- mounted () {
248
- // 初始化控制弹框和抽屉的变量合集
249
- this.pageConfig.page.forEach(page => {
250
- if (page.type === 'modal') {
251
- this.modalVisible[page.id] = false
252
- } else if (page.type === 'draw') {
253
- this.drawVisible[page.id] = false
254
- }
255
- })
256
- },
257
- methods: {
258
- // 检查组件必要的props是否全部满足
259
- checkComponentRequiredProps (type, props) {
260
- if (type === 'container') {
261
- return true
262
- }
263
- const propertiesDef = lowcodeUtils.getEditorConfigByType(type).properties
264
- const defKeys = Object.keys(propertiesDef)
265
- const requiredProps = []
266
- defKeys.forEach(key => {
267
- if (propertiesDef[key].required) {
268
- requiredProps.push(key)
269
- }
270
- })
271
- for (let i = 0; i < requiredProps.length; i++) {
272
- const eachRequired = requiredProps[i]
273
- if (props[eachRequired] === undefined || props[eachRequired] === '' || props[eachRequired] === null) {
274
- return false
275
- }
276
- }
277
- return true
278
- },
279
- // 用于控制递归渲染器中的修改抽屉显隐
280
- handelSubShowDraw (id, visible) {
281
- this.drawVisible[id] = visible === 'open'
282
- this.$forceUpdate()
283
- lowcodeLog(
284
- id,
285
- '修改抽屉可见性',
286
- visible === 'open' ? '可见' : '隐藏',
287
- false,
288
- true
289
- )
290
- },
291
- // 用于控制递归渲染器中的修改弹框显隐
292
- handelSubShowModal (id, visible) {
293
- this.modalVisible[id] = visible === 'open'
294
- this.$forceUpdate()
295
- lowcodeLog(
296
- id,
297
- '修改弹窗可见性',
298
- visible === 'open' ? '可见' : '隐藏',
299
- false,
300
- true
301
- )
302
- },
303
- // 将钩子函数格式化成mixin的格式并传入
304
- resolveLifeCycleEvent (config) {
305
- if (!config.onEvent || !config.onEvent.lifeCycle) {
306
- return undefined
307
- } else {
308
- const result = []
309
- const lifeCycle = config.onEvent.lifeCycle
310
- lifeCycle.forEach(item => {
311
- result.push({
312
- lifeCycleName: item.lifeCycle,
313
- functionStr: item.LifeCycleFunction
314
- })
315
- })
316
- return result
317
- }
318
- },
319
- // 关闭弹窗或抽屉
320
- closeModalOrDraw (id, type) {
321
- if (type === 'modal') {
322
- this.modalVisible[id] = false
323
- } else if (type === 'draw') {
324
- this.drawVisible[id] = false
325
- }
326
- this.$forceUpdate()
327
- },
328
- // 递归拖拽完成后的回调
329
- handleDrag (targetEle, nextEle) {
330
- this.$emit('spanDrag', targetEle, nextEle)
331
- },
332
- // 递归容器删除后的回调
333
- handleContainerDelete (id) {
334
- this.$emit('containerDelete', id)
335
- },
336
- // 刷新递归的渲染器
337
- refreshSubRender () {
338
- this.renderSub = false
339
- this.$nextTick(() => {
340
- this.renderSub = true
341
- })
342
- },
343
- // 刷新递归容器
344
- refreshSubContainer () {
345
- this.showContainer = false
346
- this.$nextTick(() => {
347
- this.showContainer = true
348
- })
349
- },
350
- // 递归点击组件后的回调
351
- clickComponentInner (configItem) {
352
- this.$emit('clickComponentInEditor', configItem, this)
353
- },
354
- // 拖拽改变Span
355
- dragStart (event, id, row) {
356
- // 获取目标html元素
357
- const targetElement = event.srcElement
358
- // 获取外层元素用于计算总宽度
359
- const outerElement = targetElement.parentNode.parentNode.parentNode
360
- const outerWidth = outerElement.offsetWidth
361
- // 计算每一个span对应的像素
362
- const outerSpanWidth = outerWidth / 24
363
-
364
- // 记录初始X
365
- const startX = event.clientX
366
-
367
- // 记录兄弟元素
368
- const targetElementBros = outerElement.childNodes
369
-
370
- let targetComponent
371
- let targetNextComponent
372
-
373
- // 缓存拖拽组件,用于显示拖拽时的实时Span,拖拽完成后再统一赋值
374
- this.dragConfig = []
375
- for (let i = 0; i < row.body.length; i++) {
376
- this.dragConfig.push({
377
- id: row.body[i].id,
378
- span: row.body[i].span,
379
- width: targetElementBros[i].offsetWidth
380
- })
381
- }
382
-
383
- this.showDragSpan = true
384
-
385
- // 保存目标容器,和目标的下一个容器,用于改变宽度
386
- for (let i = 0; i < this.dragConfig.length; i++) {
387
- const item = this.dragConfig[i]
388
- if (item.id === id) {
389
- targetComponent = this.dragConfig[i]
390
- targetNextComponent = this.dragConfig[i + 1]
391
- }
392
- }
393
-
394
- // 如果鼠标之后没有组件,禁止移动
395
- if (!targetComponent || !targetNextComponent) {
396
- this.$message.error('单个组件无法移动!')
397
- this.showDragSpan = false
398
- return
399
- }
400
-
401
- // 保存原始的像素宽度
402
- const orignalTargetWidth = targetComponent.width
403
- const orignalTargetNextWidth = targetNextComponent.width
404
-
405
- // 保存原始的span
406
- this.originalSpan = targetComponent.span
407
- this.nextOriginalSpan = targetNextComponent.span
408
-
409
- // 拖拽事件
410
- const onDrag = (e) => {
411
- // 计算出移动的像素数
412
- let deltaX = e.clientX - startX
413
- // 判断移动方向
414
- let direction = 1
415
- if (deltaX < 0) {
416
- direction = -1
417
- deltaX = 0 - deltaX
418
- }
419
-
420
- // 根据移动像素数计算出移动了多少个span
421
- const throughSpanNum = Math.floor(deltaX / outerSpanWidth)
422
- if (this.beforeSpanThrough === -1) {
423
- this.beforeSpanThrough = throughSpanNum
424
- }
425
-
426
- // 将移动的距离更新到临时显示的span中
427
- if (direction > 0) {
428
- targetComponent.width = orignalTargetWidth + deltaX
429
- targetNextComponent.width = orignalTargetNextWidth - deltaX
430
- if (this.beforeSpanThrough !== throughSpanNum) {
431
- this.beforeSpanThrough = throughSpanNum
432
- targetComponent.span = this.originalSpan + throughSpanNum
433
- targetNextComponent.span = this.nextOriginalSpan - throughSpanNum
434
- }
435
- } else {
436
- targetComponent.width = orignalTargetWidth - deltaX
437
- targetNextComponent.width = orignalTargetNextWidth + deltaX
438
- if (this.beforeSpanThrough !== throughSpanNum) {
439
- this.beforeSpanThrough = throughSpanNum
440
- targetComponent.span = this.originalSpan - throughSpanNum
441
- targetNextComponent.span = this.nextOriginalSpan + throughSpanNum
442
- }
443
- }
444
- }
445
-
446
- // 拖拽结束
447
- const dragEnd = (e) => {
448
- // 解绑事件,更新数据
449
- this.showDragSpan = false
450
- document.removeEventListener('mouseup', dragEnd)
451
- document.removeEventListener('mousemove', onDrag)
452
- this.$emit('spanDrag', targetComponent, targetNextComponent)
453
- }
454
-
455
- // 绑定拖拽事件和结束事件
456
- document.addEventListener('mouseup', dragEnd)
457
- document.addEventListener('mousemove', onDrag)
458
- },
459
- // 解析配置中的type,找出对应的渲染器
460
- resolveComponentType (type, componentId) {
461
- // 从组件注册中拿到所有注册的组件
462
- const allComponentKeys = Object.keys(allComponents)
463
- for (let i = 0; i < allComponentKeys.length; i++) {
464
- const keyStr = allComponentKeys[i].toString()
465
- if (type === keyStr) {
466
- return allComponents[keyStr]
467
- }
468
- }
469
- },
470
- // mixin中组件mounted后的回调
471
- componentDidMounted (vm, id) {
472
- // 将组件注册到全局的Map中
473
- if (vm && id) {
474
- this.componentsMap[id] = vm
475
- }
476
- // 如果组件中有props,将其挨个set到vm中
477
- const config = lowcodeUtils.getComponentConfig(id, this.pageConfig)
478
- const keys = Object.keys(config.props)
479
- keys.forEach(key => {
480
- if (config.props[key] !== undefined && config.props[key] !== '') {
481
- Vue.set(vm, key, config.props[key])
482
- }
483
- })
484
- },
485
- // 点击组件
486
- clickComponentInEditor (configItem) {
487
- this.$emit('clickComponentInEditor', configItem, this)
488
- },
489
- // 删除容器
490
- handelContainerDelete (id, pageIndex) {
491
- this.$emit('containerDelete', id, pageIndex)
492
- },
493
- // 处理组件的事件
494
- handleEvent (data, eventTiggerType, id) {
495
- // 找到目标对象的配置
496
- const targetConfig = lowcodeUtils.getComponentConfig(id, this.pageConfig.page)
497
- // 找到目标对象对应触发事件的配置
498
- const eventConfigs = targetConfig.onEvent[eventTiggerType]
499
-
500
- if (!eventConfigs) {
501
- return
502
- }
503
-
504
- const vm = this.componentsMap[id]
505
- lowcodeLog(
506
- ` 事件数据:${data} \n 源组件: ${id}`,
507
- '触发事件',
508
- eventTiggerType,
509
- true
510
- )
511
-
512
- let targetComponentId = ''
513
-
514
- // 遍历该类型触发事件,挨个执行
515
- eventConfigs.forEach(eachEvent => {
516
- lowcodeLog(
517
- ` 事件数据:${data} \n 目标组件: ${targetComponentId}`,
518
- '开始遍历执行事件',
519
- eachEvent.eventType,
520
- false
521
- )
522
- // 修改弹窗显隐
523
- if (eachEvent.eventType === 'showDraw') {
524
- // 如果不是顶级渲染器,则向外抛出事件
525
- if (!this.isRoot) {
526
- this.$emit('showDraw', eachEvent.containerId, eachEvent.visible)
527
- } else {
528
- this.drawVisible[eachEvent.containerId] = eachEvent.visible === 'open'
529
- this.$forceUpdate()
530
- lowcodeLog(
531
- eachEvent.containerId,
532
- '修改抽屉可见性',
533
- eachEvent.visible === 'open' ? '可见' : '隐藏',
534
- false,
535
- true
536
- )
537
- }
538
- } else if (eachEvent.eventType === 'showModal') {
539
- // 修改抽屉显隐
540
- // 如果不是顶级渲染器,则向外抛出事件
541
- if (!this.isRoot) {
542
- this.$emit('showModal', eachEvent.containerId, eachEvent.visible)
543
- } else {
544
- this.modalVisible[eachEvent.containerId] = eachEvent.visible === 'open'
545
- this.$forceUpdate()
546
- lowcodeLog(
547
- eachEvent.containerId,
548
- '修改弹窗可见性',
549
- eachEvent.visible === 'open' ? '可见' : '隐藏',
550
- false,
551
- true
552
- )
553
- }
554
- } else if (eachEvent.eventType === 'customJSFunction') {
555
- const targetVM = this.componentsMap[eachEvent.target]
556
- // eslint-disable-next-line no-eval
557
- const customFunction = eval('(' + eachEvent.JSFunction + ')')
558
- customFunction(eachEvent.eventType, data, targetVM, vm)
559
- lowcodeLog(
560
- undefined,
561
- '执行自定义函数完成',
562
- undefined,
563
- false,
564
- true
565
- )
566
- } else if (eachEvent.eventType === 'runLogic') {
567
- // 运行Logic
568
- // eslint-disable-next-line no-eval
569
- const logicCallBackFunction = eval('(' + eachEvent.logicCallBackFunction + ')')
570
- // eslint-disable-next-line no-eval
571
- const logicParamFunction = eval('(' + eachEvent.logicParamFunction + ')')
572
- // 将需要的组件变量组织好,并传递给函数
573
- const componentData = {}
574
- const allComponents = Object.keys(this.componentsMap)
575
- allComponents.forEach(component => {
576
- componentData[component] = this.componentsMap[component].dataForLowCode
577
- })
578
- const param = logicParamFunction(componentData, data)
579
- lowcodeLog(
580
- JSON.stringify(param),
581
- '执行Logic',
582
- eachEvent.logicName,
583
- false,
584
- true
585
- )
586
- runLogic(eachEvent.logicName, param, eachEvent.serviceName)
587
- .then(res => { logicCallBackFunction(this.componentsMap, res) })
588
- } else if (eachEvent.eventType === 'changeProps') {
589
- // 修改组件props
590
- const targetConfig = lowcodeUtils.getComponentConfig(eachEvent.target, this.pageConfig.page)
591
- targetConfig.props[eachEvent.targetKey] = data
592
- lowcodeLog(
593
- `目标key:${eachEvent.targetKey},新的值:${JSON.stringify(data)}`,
594
- '修改Props',
595
- targetConfig.id,
596
- false,
597
- true
598
- )
599
- } else if (eachEvent.eventType === 'log') {
600
- // 打印日志
601
- lowcodeLog(
602
- JSON.stringify(data),
603
- '打印日志',
604
- targetConfig.id,
605
- false,
606
- true
607
- )
608
- } else if (eachEvent.eventType === 'runFunction') {
609
- // 修改组件的值
610
- // 寻找target
611
- targetComponentId = eachEvent.target
612
- const targetVM = this.componentsMap[targetComponentId]
613
- // 调用函数获取参数
614
- // eslint-disable-next-line no-eval
615
- const paramFunction = eval('(' + eachEvent.runFunctionParam + ')')
616
- const params = paramFunction(vm, data)
617
- // 执行
618
- targetVM[eachEvent.eventType](...params)
619
- lowcodeLog(
620
- JSON.stringify(data),
621
- '执行目标方法完成',
622
- eachEvent.eventType,
623
- false,
624
- true
625
- )
626
- }
627
- })
628
- },
629
- // 组件闪烁
630
- twink (id) {
631
- // 如果组件不在本层渲染器,则向下递归
632
- if (this.$refs[id] === undefined || this.$refs[id].length === 0) {
633
- if (this.$refs.sub) {
634
- this.$refs.sub[0].twink(id)
635
- }
636
- } else {
637
- const _this = this
638
- // 将之前闪烁的组件还原,避免在classname赋值以后打断动画,样式被保留
639
- if (this.twinkBefore) {
640
- this.twinkBefore.className = ''
641
- }
642
- this.twinkBefore = this.$refs[id][0]
643
- // 如果存在定时器则将之前的动画打断
644
- if (!this.twinkTimer) {
645
- this.twinkTimer = []
646
- } else {
647
- this.twinkTimer.forEach(timer => {
648
- clearTimeout(timer)
649
- })
650
- }
651
- // 定义关键帧间隔
652
- const frame = 400
653
- this.$refs[id][0].className = 'colWithBorder'
654
- for (let i = 1; i <= 3; i++) {
655
- const timer = setTimeout(() => {
656
- if (i % 2 !== 0) {
657
- _this.$refs[id][0].className = ''
658
- } else {
659
- _this.$refs[id][0].className = 'colWithBorder'
660
- }
661
- }, frame * i)
662
- this.twinkTimer.push(timer)
663
- }
664
- }
665
- }
666
- },
667
- watch: {
668
- pageConfig: {
669
- handler (newVal) {
670
- },
671
- deep: true
672
- }
673
- }
674
- }
675
- </script>
676
-
677
- <style scoped>
678
- .componentInEditor{
679
- border: none;
680
- }
681
- .componentInEditor:hover{
682
- border: 2px rgb( 24,144,255) solid;
683
- box-shadow: 3px 3px 5px 1px rgba(0,0,0,0.2);
684
- }
685
- .colWithBorder{
686
- border: 2px rgb( 24,144,255) solid;
687
- box-shadow: 3px 3px 5px 1px rgba(0,0,0,0.2);
688
- }
689
- .container{
690
- display: flex;
691
- flex-direction: column;
692
- align-items: center;
693
- justify-content: space-evenly;
694
- width: calc(100% - 6px);
695
- height: 50vh;
696
- border: rgba( 24,144,255, 0.2) 2px solid;
697
- background-color: rgba(24, 144, 255, 0.05);
698
- }
699
- .selected_container{
700
- display: flex;
701
- flex-direction: column;
702
- align-items: center;
703
- justify-content: space-evenly;
704
- width: calc(100% - 6px);
705
- height: 50vh;
706
- border: rgba( 24,144,255, 0.2) 2px solid;
707
- background-color: rgba( 24,144,255, 0.2);
708
- }
709
- .colSpanSuit{
710
- color: green;
711
- font-size: 1.5em;
712
- }
713
- .colSpanNotSuit{
714
- color: red;
715
- font-size: 1.5em;
716
- }
717
- .dragDiv:hover{
718
- cursor: w-resize;
719
- z-index: 99999;
720
- }
721
-
722
- .propsNotFixedComponent {
723
- background-color: rgba(24, 144, 255, 0.05);
724
- border: rgba( 24,144,255, 0.2) 2px dashed;
725
- width: 100%;
726
- height: 300px;
727
- }
728
- </style>
1
+ <template>
2
+ <div style="width: 100%">
3
+ <template v-for="(page,pageIndex) in pageConfig.page">
4
+ <!-- 拖拽时显示的临时容器 -->
5
+ <template v-if="showDragSpan">
6
+ <div style="display: flex" :key="pageIndex">
7
+ <template v-for="item in dragConfig">
8
+ <div class="container" style="font-size: 1.5em" :key="item.id" :style="'width:' + item.width + 'px'">
9
+ 宽度:{{ item.span }}
10
+ </div>
11
+ </template>
12
+ </div>
13
+ </template>
14
+ <!-- 渲染器主体 -->
15
+ <template v-for="(row,rowIndex) in page.body">
16
+ <a-row
17
+ :key="pageIndex + '_' + rowIndex"
18
+ type="flex"
19
+ :justify="row.config.justify"
20
+ :gutter="row.config.gutter"
21
+ :align="row.config.align">
22
+ <template v-if="!showDragSpan">
23
+ <template v-for="(item, itemIndex) in row.body">
24
+ <a-col :span="item.span" :key="item.id">
25
+ <!-- 显示容器 -->
26
+ <div
27
+ v-if="item.type === 'container' && editMode"
28
+ style="display: flex;align-items: center"
29
+ @click="clickComponentInEditor(item)">
30
+ <div :class="item.selected ? 'selected_container' : 'container'">
31
+ <div>
32
+ <p style="font-size: 1.5em">宽度:{{ item.span }}</p>
33
+ </div>
34
+ <div>
35
+ <a-button @click.stop="handelContainerDelete(item.id, pageIndex)">删除</a-button>
36
+ </div>
37
+ </div>
38
+ <div
39
+ v-if="itemIndex !== row.body.length - 1"
40
+ style="width: 6px;font-size: 1em;color: rgb( 24,144,255)"
41
+ class="dragDiv"
42
+ @mousedown="dragStart($event, item.id, row)">
43
+ || <br> ||
44
+ </div>
45
+ </div>
46
+ <!-- 显示Tab容器 -->
47
+ <div
48
+ v-else-if="item.type === 'tabs'">
49
+ <a-tabs>
50
+ <template v-for="(tab) in item.body">
51
+ <a-tab-pane :key="tab.key" :tab="tab.label">
52
+ <LowCodeRender
53
+ ref="sub"
54
+ :is-root="false"
55
+ @showDraw="handelSubShowDraw"
56
+ @showModal="handelSubShowModal"
57
+ v-if="renderSub"
58
+ @spanDrag="handleDrag"
59
+ @containerDelete="handleContainerDelete"
60
+ @clickComponentInEditor="clickComponentInner"
61
+ :page-config="tab.body"
62
+ :edit-mode="editMode"/>
63
+ </a-tab-pane>
64
+ </template>
65
+ </a-tabs>
66
+ </div>
67
+ <!-- 递归显示页面容器 -->
68
+ <div
69
+ v-else-if="item.type === 'container_page'"
70
+ style="display: flex;align-items: center">
71
+ <LowCodeRender
72
+ ref="sub"
73
+ :is-root="false"
74
+ @showDraw="handelSubShowDraw"
75
+ @showModal="handelSubShowModal"
76
+ v-if="renderSub"
77
+ @spanDrag="handleDrag"
78
+ @containerDelete="handleContainerDelete"
79
+ @clickComponentInEditor="clickComponentInner"
80
+ :page-config="item"
81
+ :edit-mode="editMode"/>
82
+ <div
83
+ v-if="itemIndex !== row.body.length - 1"
84
+ style="width: 6px;font-size: 1em;color: rgb( 24,144,255);"
85
+ class="dragDiv"
86
+ @mousedown="dragStart($event, item.id, row)">
87
+ || <br> ||
88
+ </div>
89
+ </div>
90
+ <!-- 页面渲染 / 编辑模式中,将弹框或抽屉中的内容渲染为页面 -->
91
+ <div :ref="item.id" :id="item.id" v-else-if="editMode || (page.type !== 'modal' && page.type !== 'draw')">
92
+ <div
93
+ @click="clickComponentInEditor(item)"
94
+ :class=" editMode ? 'componentInEditor' : '' ">
95
+ <component
96
+ v-if="checkComponentRequiredProps(item.type, item.props)"
97
+ :lifeCycleFunction="resolveLifeCycleEvent(item)"
98
+ :is="resolveComponentType(item.type, item.id)"
99
+ :propsData="{...item.props}"
100
+ @componentDidMounted="componentDidMounted"
101
+ @onEvent="handleEvent"
102
+ :mixinComponentId="item.id"/>
103
+ <div v-else class="propsNotFixedComponent">
104
+ <p style="line-height: 200px; text-align: center; font-size: 2em; margin: 0">{{ item.type }}</p>
105
+ <p style="text-align: center; font-size: 1.2em">必填参数未设置完全!暂停渲染</p>
106
+ </div>
107
+ </div>
108
+ </div>
109
+ </a-col>
110
+ </template>
111
+ </template>
112
+ </a-row>
113
+ </template>
114
+ </template>
115
+ <!-- 弹框渲染 -->
116
+ <template v-for="(modal, modalIndex) in pageConfig.page.filter(page => page.type === 'modal')">
117
+ <a-modal
118
+ :key="'modalIndex_' + modalIndex"
119
+ :title="modal.title"
120
+ :width="modal.width"
121
+ :dialog-style="{ top: '5rem' }"
122
+ :visible="modalVisible[modal.id]"
123
+ :z-index="1003"
124
+ :maskClosable="false"
125
+ @cancel="closeModalOrDraw(modal.id, 'modal')"
126
+ :destroyOnClose="true">
127
+ <template v-for="(row, rowIndex) in modal.body">
128
+ <template v-for="(item, itemIndex) in row.body">
129
+ <div v-if="item.type === 'tabs'" :key="'modalItem_' + rowIndex + '_' + itemIndex">
130
+ <h1>tabssssss</h1>
131
+ </div>
132
+ <div v-else :key="'modalItem_' + rowIndex + '_' + itemIndex">
133
+ <component
134
+ v-if="checkComponentRequiredProps(item.type, item.props)"
135
+ :lifeCycleFunction="resolveLifeCycleEvent(item)"
136
+ :is="resolveComponentType(item.type)"
137
+ :propsData="{...item.props, showModalOrDraw: false}"
138
+ @componentDidMounted="componentDidMounted"
139
+ @onEvent="handleEvent"
140
+ :mixinComponentId="item.id"/>
141
+ <div v-else class="propsNotFixedComponent">
142
+ <p style="line-height: 200px; text-align: center; font-size: 2em; margin: 0">{{ item.type }}</p>
143
+ <p style="text-align: center; font-size: 1.2em">必填参数未设置完全!暂停渲染</p>
144
+ </div>
145
+ </div>
146
+ </template>
147
+ </template>
148
+ </a-modal>
149
+ </template>
150
+ <!-- 抽屉渲染 -->
151
+ <template v-for="(draw, drawIndex) in pageConfig.page.filter(page => page.type === 'draw')">
152
+ <a-drawer
153
+ :key="'drawIndex_' + drawIndex"
154
+ :title="draw.title"
155
+ :width="draw.width"
156
+ :visible="drawVisible[draw.id]"
157
+ :z-index="1003"
158
+ @close="closeModalOrDraw(draw.id, 'draw')"
159
+ :destroyOnClose="true">
160
+ <template v-for="(row, rowIndex) in draw.body">
161
+ <template v-for="(item, itemIndex) in row.body">
162
+ <div v-if="item.type === 'tabs'" :key="'drawItem_' + rowIndex + '_' + itemIndex">
163
+ <h1>tabssssss</h1>
164
+ </div>
165
+ <div v-else :key="'drawItem_' + rowIndex + '_' + itemIndex">
166
+ <component
167
+ v-if="checkComponentRequiredProps(item.type, item.props)"
168
+ :lifeCycleFunction="resolveLifeCycleEvent(item)"
169
+ :is="resolveComponentType(item.type)"
170
+ :propsData="{...item.props, showModalOrDraw: false}"
171
+ @componentDidMounted="componentDidMounted"
172
+ @onEvent="handleEvent"
173
+ :mixinComponentId="item.id"/>
174
+ <div v-else class="propsNotFixedComponent">
175
+ <p style="line-height: 200px; text-align: center; font-size: 2em; margin: 0">{{ item.type }}</p>
176
+ <p style="text-align: center; font-size: 1.2em">必填参数未设置完全!暂停渲染</p>
177
+ </div>
178
+ </div>
179
+ </template>
180
+ </template>
181
+ </a-drawer>
182
+ </template>
183
+ </div>
184
+ </template>
185
+
186
+ <script>
187
+ // eslint-disable-next-line no-unused-vars
188
+ import Vue from 'vue'
189
+ import * as allComponents from '@vue2-client/utils/lowcode/registerComponentForRender'
190
+ import lowcodeLog from '@vue2-client/utils/lowcode/lowcodeLog'
191
+ import * as lowcodeUtils from '@vue2-client/utils/lowcode/lowcodeUtils'
192
+ import { runLogic } from '@vue2-client/services/api/common'
193
+
194
+ export default {
195
+ name: 'LowCodeRender',
196
+ props: {
197
+ // 页面配置
198
+ pageConfig: {
199
+ type: Object,
200
+ required: true
201
+ },
202
+ // 是否为编辑模式
203
+ editMode: {
204
+ type: Boolean,
205
+ default: true
206
+ },
207
+ // 用于标识渲染器是否为顶级渲染器
208
+ // 非顶级渲染器在控制弹框、抽屉显隐的时候需要emit而不是修改值
209
+ isRoot: {
210
+ type: Boolean,
211
+ default: true
212
+ }
213
+ },
214
+ data () {
215
+ return {
216
+ // 传递给组件的Props合集
217
+ propsData: {},
218
+ // 是否为拖拽模式
219
+ showDragSpan: false,
220
+ // 拖拽的缓存
221
+ dragConfig: [],
222
+ // 记录拖拽位移单位量
223
+ beforeSpanThrough: -1,
224
+ // 记录拖拽之前的span
225
+ originalSpan: -1,
226
+ // 记录拖拽目标下一个元素的原始span
227
+ nextOriginalSpan: -1,
228
+ // 弹框显示集合
229
+ modalVisible: {},
230
+ // 抽屉显示集合
231
+ drawVisible: {},
232
+ // 控制递归渲染
233
+ renderSub: true,
234
+ // 用于控制组件外框闪烁
235
+ colClassName: '',
236
+ // 控制容器渲染,用于递归时,刷新递归中容器的状态
237
+ showContainer: true,
238
+ // 控制闪烁的定时器
239
+ twinkTimer: undefined,
240
+ // 缓存正在闪烁的组件,用于还原状态
241
+ twinkBefore: undefined
242
+ }
243
+ },
244
+ inject: [
245
+ 'componentsMap'
246
+ ],
247
+ mounted () {
248
+ // 初始化控制弹框和抽屉的变量合集
249
+ this.pageConfig.page.forEach(page => {
250
+ if (page.type === 'modal') {
251
+ this.modalVisible[page.id] = false
252
+ } else if (page.type === 'draw') {
253
+ this.drawVisible[page.id] = false
254
+ }
255
+ })
256
+ },
257
+ methods: {
258
+ // 检查组件必要的props是否全部满足
259
+ checkComponentRequiredProps (type, props) {
260
+ if (type === 'container') {
261
+ return true
262
+ }
263
+ const propertiesDef = lowcodeUtils.getEditorConfigByType(type).properties
264
+ const defKeys = Object.keys(propertiesDef)
265
+ const requiredProps = []
266
+ defKeys.forEach(key => {
267
+ if (propertiesDef[key].required) {
268
+ requiredProps.push(key)
269
+ }
270
+ })
271
+ for (let i = 0; i < requiredProps.length; i++) {
272
+ const eachRequired = requiredProps[i]
273
+ if (props[eachRequired] === undefined || props[eachRequired] === '' || props[eachRequired] === null) {
274
+ return false
275
+ }
276
+ }
277
+ return true
278
+ },
279
+ // 用于控制递归渲染器中的修改抽屉显隐
280
+ handelSubShowDraw (id, visible) {
281
+ this.drawVisible[id] = visible === 'open'
282
+ this.$forceUpdate()
283
+ lowcodeLog(
284
+ id,
285
+ '修改抽屉可见性',
286
+ visible === 'open' ? '可见' : '隐藏',
287
+ false,
288
+ true
289
+ )
290
+ },
291
+ // 用于控制递归渲染器中的修改弹框显隐
292
+ handelSubShowModal (id, visible) {
293
+ this.modalVisible[id] = visible === 'open'
294
+ this.$forceUpdate()
295
+ lowcodeLog(
296
+ id,
297
+ '修改弹窗可见性',
298
+ visible === 'open' ? '可见' : '隐藏',
299
+ false,
300
+ true
301
+ )
302
+ },
303
+ // 将钩子函数格式化成mixin的格式并传入
304
+ resolveLifeCycleEvent (config) {
305
+ if (!config.onEvent || !config.onEvent.lifeCycle) {
306
+ return undefined
307
+ } else {
308
+ const result = []
309
+ const lifeCycle = config.onEvent.lifeCycle
310
+ lifeCycle.forEach(item => {
311
+ result.push({
312
+ lifeCycleName: item.lifeCycle,
313
+ functionStr: item.LifeCycleFunction
314
+ })
315
+ })
316
+ return result
317
+ }
318
+ },
319
+ // 关闭弹窗或抽屉
320
+ closeModalOrDraw (id, type) {
321
+ if (type === 'modal') {
322
+ this.modalVisible[id] = false
323
+ } else if (type === 'draw') {
324
+ this.drawVisible[id] = false
325
+ }
326
+ this.$forceUpdate()
327
+ },
328
+ // 递归拖拽完成后的回调
329
+ handleDrag (targetEle, nextEle) {
330
+ this.$emit('spanDrag', targetEle, nextEle)
331
+ },
332
+ // 递归容器删除后的回调
333
+ handleContainerDelete (id) {
334
+ this.$emit('containerDelete', id)
335
+ },
336
+ // 刷新递归的渲染器
337
+ refreshSubRender () {
338
+ this.renderSub = false
339
+ this.$nextTick(() => {
340
+ this.renderSub = true
341
+ })
342
+ },
343
+ // 刷新递归容器
344
+ refreshSubContainer () {
345
+ this.showContainer = false
346
+ this.$nextTick(() => {
347
+ this.showContainer = true
348
+ })
349
+ },
350
+ // 递归点击组件后的回调
351
+ clickComponentInner (configItem) {
352
+ this.$emit('clickComponentInEditor', configItem, this)
353
+ },
354
+ // 拖拽改变Span
355
+ dragStart (event, id, row) {
356
+ // 获取目标html元素
357
+ const targetElement = event.srcElement
358
+ // 获取外层元素用于计算总宽度
359
+ const outerElement = targetElement.parentNode.parentNode.parentNode
360
+ const outerWidth = outerElement.offsetWidth
361
+ // 计算每一个span对应的像素
362
+ const outerSpanWidth = outerWidth / 24
363
+
364
+ // 记录初始X
365
+ const startX = event.clientX
366
+
367
+ // 记录兄弟元素
368
+ const targetElementBros = outerElement.childNodes
369
+
370
+ let targetComponent
371
+ let targetNextComponent
372
+
373
+ // 缓存拖拽组件,用于显示拖拽时的实时Span,拖拽完成后再统一赋值
374
+ this.dragConfig = []
375
+ for (let i = 0; i < row.body.length; i++) {
376
+ this.dragConfig.push({
377
+ id: row.body[i].id,
378
+ span: row.body[i].span,
379
+ width: targetElementBros[i].offsetWidth
380
+ })
381
+ }
382
+
383
+ this.showDragSpan = true
384
+
385
+ // 保存目标容器,和目标的下一个容器,用于改变宽度
386
+ for (let i = 0; i < this.dragConfig.length; i++) {
387
+ const item = this.dragConfig[i]
388
+ if (item.id === id) {
389
+ targetComponent = this.dragConfig[i]
390
+ targetNextComponent = this.dragConfig[i + 1]
391
+ }
392
+ }
393
+
394
+ // 如果鼠标之后没有组件,禁止移动
395
+ if (!targetComponent || !targetNextComponent) {
396
+ this.$message.error('单个组件无法移动!')
397
+ this.showDragSpan = false
398
+ return
399
+ }
400
+
401
+ // 保存原始的像素宽度
402
+ const orignalTargetWidth = targetComponent.width
403
+ const orignalTargetNextWidth = targetNextComponent.width
404
+
405
+ // 保存原始的span
406
+ this.originalSpan = targetComponent.span
407
+ this.nextOriginalSpan = targetNextComponent.span
408
+
409
+ // 拖拽事件
410
+ const onDrag = (e) => {
411
+ // 计算出移动的像素数
412
+ let deltaX = e.clientX - startX
413
+ // 判断移动方向
414
+ let direction = 1
415
+ if (deltaX < 0) {
416
+ direction = -1
417
+ deltaX = 0 - deltaX
418
+ }
419
+
420
+ // 根据移动像素数计算出移动了多少个span
421
+ const throughSpanNum = Math.floor(deltaX / outerSpanWidth)
422
+ if (this.beforeSpanThrough === -1) {
423
+ this.beforeSpanThrough = throughSpanNum
424
+ }
425
+
426
+ // 将移动的距离更新到临时显示的span中
427
+ if (direction > 0) {
428
+ targetComponent.width = orignalTargetWidth + deltaX
429
+ targetNextComponent.width = orignalTargetNextWidth - deltaX
430
+ if (this.beforeSpanThrough !== throughSpanNum) {
431
+ this.beforeSpanThrough = throughSpanNum
432
+ targetComponent.span = this.originalSpan + throughSpanNum
433
+ targetNextComponent.span = this.nextOriginalSpan - throughSpanNum
434
+ }
435
+ } else {
436
+ targetComponent.width = orignalTargetWidth - deltaX
437
+ targetNextComponent.width = orignalTargetNextWidth + deltaX
438
+ if (this.beforeSpanThrough !== throughSpanNum) {
439
+ this.beforeSpanThrough = throughSpanNum
440
+ targetComponent.span = this.originalSpan - throughSpanNum
441
+ targetNextComponent.span = this.nextOriginalSpan + throughSpanNum
442
+ }
443
+ }
444
+ }
445
+
446
+ // 拖拽结束
447
+ const dragEnd = (e) => {
448
+ // 解绑事件,更新数据
449
+ this.showDragSpan = false
450
+ document.removeEventListener('mouseup', dragEnd)
451
+ document.removeEventListener('mousemove', onDrag)
452
+ this.$emit('spanDrag', targetComponent, targetNextComponent)
453
+ }
454
+
455
+ // 绑定拖拽事件和结束事件
456
+ document.addEventListener('mouseup', dragEnd)
457
+ document.addEventListener('mousemove', onDrag)
458
+ },
459
+ // 解析配置中的type,找出对应的渲染器
460
+ resolveComponentType (type, componentId) {
461
+ // 从组件注册中拿到所有注册的组件
462
+ const allComponentKeys = Object.keys(allComponents)
463
+ for (let i = 0; i < allComponentKeys.length; i++) {
464
+ const keyStr = allComponentKeys[i].toString()
465
+ if (type === keyStr) {
466
+ return allComponents[keyStr]
467
+ }
468
+ }
469
+ },
470
+ // mixin中组件mounted后的回调
471
+ componentDidMounted (vm, id) {
472
+ // 将组件注册到全局的Map中
473
+ if (vm && id) {
474
+ this.componentsMap[id] = vm
475
+ }
476
+ // 如果组件中有props,将其挨个set到vm中
477
+ const config = lowcodeUtils.getComponentConfig(id, this.pageConfig)
478
+ const keys = Object.keys(config.props)
479
+ keys.forEach(key => {
480
+ if (config.props[key] !== undefined && config.props[key] !== '') {
481
+ Vue.set(vm, key, config.props[key])
482
+ }
483
+ })
484
+ },
485
+ // 点击组件
486
+ clickComponentInEditor (configItem) {
487
+ this.$emit('clickComponentInEditor', configItem, this)
488
+ },
489
+ // 删除容器
490
+ handelContainerDelete (id, pageIndex) {
491
+ this.$emit('containerDelete', id, pageIndex)
492
+ },
493
+ // 处理组件的事件
494
+ handleEvent (data, eventTiggerType, id) {
495
+ // 找到目标对象的配置
496
+ const targetConfig = lowcodeUtils.getComponentConfig(id, this.pageConfig.page)
497
+ // 找到目标对象对应触发事件的配置
498
+ const eventConfigs = targetConfig.onEvent[eventTiggerType]
499
+
500
+ if (!eventConfigs) {
501
+ return
502
+ }
503
+
504
+ const vm = this.componentsMap[id]
505
+ lowcodeLog(
506
+ ` 事件数据:${data} \n 源组件: ${id}`,
507
+ '触发事件',
508
+ eventTiggerType,
509
+ true
510
+ )
511
+
512
+ let targetComponentId = ''
513
+
514
+ // 遍历该类型触发事件,挨个执行
515
+ eventConfigs.forEach(eachEvent => {
516
+ lowcodeLog(
517
+ ` 事件数据:${data} \n 目标组件: ${targetComponentId}`,
518
+ '开始遍历执行事件',
519
+ eachEvent.eventType,
520
+ false
521
+ )
522
+ // 修改弹窗显隐
523
+ if (eachEvent.eventType === 'showDraw') {
524
+ // 如果不是顶级渲染器,则向外抛出事件
525
+ if (!this.isRoot) {
526
+ this.$emit('showDraw', eachEvent.containerId, eachEvent.visible)
527
+ } else {
528
+ this.drawVisible[eachEvent.containerId] = eachEvent.visible === 'open'
529
+ this.$forceUpdate()
530
+ lowcodeLog(
531
+ eachEvent.containerId,
532
+ '修改抽屉可见性',
533
+ eachEvent.visible === 'open' ? '可见' : '隐藏',
534
+ false,
535
+ true
536
+ )
537
+ }
538
+ } else if (eachEvent.eventType === 'showModal') {
539
+ // 修改抽屉显隐
540
+ // 如果不是顶级渲染器,则向外抛出事件
541
+ if (!this.isRoot) {
542
+ this.$emit('showModal', eachEvent.containerId, eachEvent.visible)
543
+ } else {
544
+ this.modalVisible[eachEvent.containerId] = eachEvent.visible === 'open'
545
+ this.$forceUpdate()
546
+ lowcodeLog(
547
+ eachEvent.containerId,
548
+ '修改弹窗可见性',
549
+ eachEvent.visible === 'open' ? '可见' : '隐藏',
550
+ false,
551
+ true
552
+ )
553
+ }
554
+ } else if (eachEvent.eventType === 'customJSFunction') {
555
+ const targetVM = this.componentsMap[eachEvent.target]
556
+ // eslint-disable-next-line no-eval
557
+ const customFunction = eval('(' + eachEvent.JSFunction + ')')
558
+ customFunction(eachEvent.eventType, data, targetVM, vm)
559
+ lowcodeLog(
560
+ undefined,
561
+ '执行自定义函数完成',
562
+ undefined,
563
+ false,
564
+ true
565
+ )
566
+ } else if (eachEvent.eventType === 'runLogic') {
567
+ // 运行Logic
568
+ // eslint-disable-next-line no-eval
569
+ const logicCallBackFunction = eval('(' + eachEvent.logicCallBackFunction + ')')
570
+ // eslint-disable-next-line no-eval
571
+ const logicParamFunction = eval('(' + eachEvent.logicParamFunction + ')')
572
+ // 将需要的组件变量组织好,并传递给函数
573
+ const componentData = {}
574
+ const allComponents = Object.keys(this.componentsMap)
575
+ allComponents.forEach(component => {
576
+ componentData[component] = this.componentsMap[component].dataForLowCode
577
+ })
578
+ const param = logicParamFunction(componentData, data)
579
+ lowcodeLog(
580
+ JSON.stringify(param),
581
+ '执行Logic',
582
+ eachEvent.logicName,
583
+ false,
584
+ true
585
+ )
586
+ runLogic(eachEvent.logicName, param, eachEvent.serviceName)
587
+ .then(res => { logicCallBackFunction(this.componentsMap, res) })
588
+ } else if (eachEvent.eventType === 'changeProps') {
589
+ // 修改组件props
590
+ const targetConfig = lowcodeUtils.getComponentConfig(eachEvent.target, this.pageConfig.page)
591
+ targetConfig.props[eachEvent.targetKey] = data
592
+ lowcodeLog(
593
+ `目标key:${eachEvent.targetKey},新的值:${JSON.stringify(data)}`,
594
+ '修改Props',
595
+ targetConfig.id,
596
+ false,
597
+ true
598
+ )
599
+ } else if (eachEvent.eventType === 'log') {
600
+ // 打印日志
601
+ lowcodeLog(
602
+ JSON.stringify(data),
603
+ '打印日志',
604
+ targetConfig.id,
605
+ false,
606
+ true
607
+ )
608
+ } else if (eachEvent.eventType === 'runFunction') {
609
+ // 修改组件的值
610
+ // 寻找target
611
+ targetComponentId = eachEvent.target
612
+ const targetVM = this.componentsMap[targetComponentId]
613
+ // 调用函数获取参数
614
+ // eslint-disable-next-line no-eval
615
+ const paramFunction = eval('(' + eachEvent.runFunctionParam + ')')
616
+ const params = paramFunction(vm, data)
617
+ // 执行
618
+ targetVM[eachEvent.eventType](...params)
619
+ lowcodeLog(
620
+ JSON.stringify(data),
621
+ '执行目标方法完成',
622
+ eachEvent.eventType,
623
+ false,
624
+ true
625
+ )
626
+ }
627
+ })
628
+ },
629
+ // 组件闪烁
630
+ twink (id) {
631
+ // 如果组件不在本层渲染器,则向下递归
632
+ if (this.$refs[id] === undefined || this.$refs[id].length === 0) {
633
+ if (this.$refs.sub) {
634
+ this.$refs.sub[0].twink(id)
635
+ }
636
+ } else {
637
+ const _this = this
638
+ // 将之前闪烁的组件还原,避免在classname赋值以后打断动画,样式被保留
639
+ if (this.twinkBefore) {
640
+ this.twinkBefore.className = ''
641
+ }
642
+ this.twinkBefore = this.$refs[id][0]
643
+ // 如果存在定时器则将之前的动画打断
644
+ if (!this.twinkTimer) {
645
+ this.twinkTimer = []
646
+ } else {
647
+ this.twinkTimer.forEach(timer => {
648
+ clearTimeout(timer)
649
+ })
650
+ }
651
+ // 定义关键帧间隔
652
+ const frame = 400
653
+ this.$refs[id][0].className = 'colWithBorder'
654
+ for (let i = 1; i <= 3; i++) {
655
+ const timer = setTimeout(() => {
656
+ if (i % 2 !== 0) {
657
+ _this.$refs[id][0].className = ''
658
+ } else {
659
+ _this.$refs[id][0].className = 'colWithBorder'
660
+ }
661
+ }, frame * i)
662
+ this.twinkTimer.push(timer)
663
+ }
664
+ }
665
+ }
666
+ },
667
+ watch: {
668
+ pageConfig: {
669
+ handler (newVal) {
670
+ },
671
+ deep: true
672
+ }
673
+ }
674
+ }
675
+ </script>
676
+
677
+ <style scoped>
678
+ .componentInEditor{
679
+ border: none;
680
+ }
681
+ .componentInEditor:hover{
682
+ border: 2px rgb( 24,144,255) solid;
683
+ box-shadow: 3px 3px 5px 1px rgba(0,0,0,0.2);
684
+ }
685
+ .colWithBorder{
686
+ border: 2px rgb( 24,144,255) solid;
687
+ box-shadow: 3px 3px 5px 1px rgba(0,0,0,0.2);
688
+ }
689
+ .container{
690
+ display: flex;
691
+ flex-direction: column;
692
+ align-items: center;
693
+ justify-content: space-evenly;
694
+ width: calc(100% - 6px);
695
+ height: 50vh;
696
+ border: rgba( 24,144,255, 0.2) 2px solid;
697
+ background-color: rgba(24, 144, 255, 0.05);
698
+ }
699
+ .selected_container{
700
+ display: flex;
701
+ flex-direction: column;
702
+ align-items: center;
703
+ justify-content: space-evenly;
704
+ width: calc(100% - 6px);
705
+ height: 50vh;
706
+ border: rgba( 24,144,255, 0.2) 2px solid;
707
+ background-color: rgba( 24,144,255, 0.2);
708
+ }
709
+ .colSpanSuit{
710
+ color: green;
711
+ font-size: 1.5em;
712
+ }
713
+ .colSpanNotSuit{
714
+ color: red;
715
+ font-size: 1.5em;
716
+ }
717
+ .dragDiv:hover{
718
+ cursor: w-resize;
719
+ z-index: 99999;
720
+ }
721
+
722
+ .propsNotFixedComponent {
723
+ background-color: rgba(24, 144, 255, 0.05);
724
+ border: rgba( 24,144,255, 0.2) 2px dashed;
725
+ width: 100%;
726
+ height: 300px;
727
+ }
728
+ </style>