epx-frame 3.5.0-shpgy.1

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 (1223) hide show
  1. package/.browserslistrc +4 -0
  2. package/.dockerignore +2 -0
  3. package/.editorconfig +5 -0
  4. package/.env.dev +6 -0
  5. package/.env.development +4 -0
  6. package/.env.localize +7 -0
  7. package/.env.ppe +6 -0
  8. package/.env.prd +6 -0
  9. package/.env.pre +6 -0
  10. package/.env.production +6 -0
  11. package/.env.simple +8 -0
  12. package/.eslintignore +2 -0
  13. package/.eslintrc.js +24 -0
  14. package/Dockerfile +12 -0
  15. package/README.md +108 -0
  16. package/babel.config.js +26 -0
  17. package/build/webpack.component.js +54 -0
  18. package/build/webpack.dev.js +114 -0
  19. package/build/webpack.prod.js +133 -0
  20. package/nginx.conf +38 -0
  21. package/package.json +93 -0
  22. package/public/403.html +77 -0
  23. package/public/cmaps/78-EUC-H.bcmap +0 -0
  24. package/public/cmaps/78-EUC-V.bcmap +0 -0
  25. package/public/cmaps/78-H.bcmap +0 -0
  26. package/public/cmaps/78-RKSJ-H.bcmap +0 -0
  27. package/public/cmaps/78-RKSJ-V.bcmap +0 -0
  28. package/public/cmaps/78-V.bcmap +0 -0
  29. package/public/cmaps/78ms-RKSJ-H.bcmap +0 -0
  30. package/public/cmaps/78ms-RKSJ-V.bcmap +0 -0
  31. package/public/cmaps/83pv-RKSJ-H.bcmap +0 -0
  32. package/public/cmaps/90ms-RKSJ-H.bcmap +0 -0
  33. package/public/cmaps/90ms-RKSJ-V.bcmap +0 -0
  34. package/public/cmaps/90msp-RKSJ-H.bcmap +0 -0
  35. package/public/cmaps/90msp-RKSJ-V.bcmap +0 -0
  36. package/public/cmaps/90pv-RKSJ-H.bcmap +0 -0
  37. package/public/cmaps/90pv-RKSJ-V.bcmap +0 -0
  38. package/public/cmaps/Add-H.bcmap +0 -0
  39. package/public/cmaps/Add-RKSJ-H.bcmap +0 -0
  40. package/public/cmaps/Add-RKSJ-V.bcmap +0 -0
  41. package/public/cmaps/Add-V.bcmap +0 -0
  42. package/public/cmaps/Adobe-CNS1-0.bcmap +0 -0
  43. package/public/cmaps/Adobe-CNS1-1.bcmap +0 -0
  44. package/public/cmaps/Adobe-CNS1-2.bcmap +0 -0
  45. package/public/cmaps/Adobe-CNS1-3.bcmap +0 -0
  46. package/public/cmaps/Adobe-CNS1-4.bcmap +0 -0
  47. package/public/cmaps/Adobe-CNS1-5.bcmap +0 -0
  48. package/public/cmaps/Adobe-CNS1-6.bcmap +0 -0
  49. package/public/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
  50. package/public/cmaps/Adobe-GB1-0.bcmap +0 -0
  51. package/public/cmaps/Adobe-GB1-1.bcmap +0 -0
  52. package/public/cmaps/Adobe-GB1-2.bcmap +0 -0
  53. package/public/cmaps/Adobe-GB1-3.bcmap +0 -0
  54. package/public/cmaps/Adobe-GB1-4.bcmap +0 -0
  55. package/public/cmaps/Adobe-GB1-5.bcmap +0 -0
  56. package/public/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
  57. package/public/cmaps/Adobe-Japan1-0.bcmap +0 -0
  58. package/public/cmaps/Adobe-Japan1-1.bcmap +0 -0
  59. package/public/cmaps/Adobe-Japan1-2.bcmap +0 -0
  60. package/public/cmaps/Adobe-Japan1-3.bcmap +0 -0
  61. package/public/cmaps/Adobe-Japan1-4.bcmap +0 -0
  62. package/public/cmaps/Adobe-Japan1-5.bcmap +0 -0
  63. package/public/cmaps/Adobe-Japan1-6.bcmap +0 -0
  64. package/public/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
  65. package/public/cmaps/Adobe-Korea1-0.bcmap +0 -0
  66. package/public/cmaps/Adobe-Korea1-1.bcmap +0 -0
  67. package/public/cmaps/Adobe-Korea1-2.bcmap +0 -0
  68. package/public/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
  69. package/public/cmaps/B5-H.bcmap +0 -0
  70. package/public/cmaps/B5-V.bcmap +0 -0
  71. package/public/cmaps/B5pc-H.bcmap +0 -0
  72. package/public/cmaps/B5pc-V.bcmap +0 -0
  73. package/public/cmaps/CNS-EUC-H.bcmap +0 -0
  74. package/public/cmaps/CNS-EUC-V.bcmap +0 -0
  75. package/public/cmaps/CNS1-H.bcmap +0 -0
  76. package/public/cmaps/CNS1-V.bcmap +0 -0
  77. package/public/cmaps/CNS2-H.bcmap +0 -0
  78. package/public/cmaps/CNS2-V.bcmap +3 -0
  79. package/public/cmaps/ETHK-B5-H.bcmap +0 -0
  80. package/public/cmaps/ETHK-B5-V.bcmap +0 -0
  81. package/public/cmaps/ETen-B5-H.bcmap +0 -0
  82. package/public/cmaps/ETen-B5-V.bcmap +0 -0
  83. package/public/cmaps/ETenms-B5-H.bcmap +3 -0
  84. package/public/cmaps/ETenms-B5-V.bcmap +0 -0
  85. package/public/cmaps/EUC-H.bcmap +0 -0
  86. package/public/cmaps/EUC-V.bcmap +0 -0
  87. package/public/cmaps/Ext-H.bcmap +0 -0
  88. package/public/cmaps/Ext-RKSJ-H.bcmap +0 -0
  89. package/public/cmaps/Ext-RKSJ-V.bcmap +0 -0
  90. package/public/cmaps/Ext-V.bcmap +0 -0
  91. package/public/cmaps/GB-EUC-H.bcmap +0 -0
  92. package/public/cmaps/GB-EUC-V.bcmap +0 -0
  93. package/public/cmaps/GB-H.bcmap +4 -0
  94. package/public/cmaps/GB-V.bcmap +0 -0
  95. package/public/cmaps/GBK-EUC-H.bcmap +0 -0
  96. package/public/cmaps/GBK-EUC-V.bcmap +0 -0
  97. package/public/cmaps/GBK2K-H.bcmap +0 -0
  98. package/public/cmaps/GBK2K-V.bcmap +0 -0
  99. package/public/cmaps/GBKp-EUC-H.bcmap +0 -0
  100. package/public/cmaps/GBKp-EUC-V.bcmap +0 -0
  101. package/public/cmaps/GBT-EUC-H.bcmap +0 -0
  102. package/public/cmaps/GBT-EUC-V.bcmap +0 -0
  103. package/public/cmaps/GBT-H.bcmap +0 -0
  104. package/public/cmaps/GBT-V.bcmap +0 -0
  105. package/public/cmaps/GBTpc-EUC-H.bcmap +0 -0
  106. package/public/cmaps/GBTpc-EUC-V.bcmap +0 -0
  107. package/public/cmaps/GBpc-EUC-H.bcmap +0 -0
  108. package/public/cmaps/GBpc-EUC-V.bcmap +0 -0
  109. package/public/cmaps/H.bcmap +0 -0
  110. package/public/cmaps/HKdla-B5-H.bcmap +0 -0
  111. package/public/cmaps/HKdla-B5-V.bcmap +0 -0
  112. package/public/cmaps/HKdlb-B5-H.bcmap +0 -0
  113. package/public/cmaps/HKdlb-B5-V.bcmap +0 -0
  114. package/public/cmaps/HKgccs-B5-H.bcmap +0 -0
  115. package/public/cmaps/HKgccs-B5-V.bcmap +0 -0
  116. package/public/cmaps/HKm314-B5-H.bcmap +0 -0
  117. package/public/cmaps/HKm314-B5-V.bcmap +0 -0
  118. package/public/cmaps/HKm471-B5-H.bcmap +0 -0
  119. package/public/cmaps/HKm471-B5-V.bcmap +0 -0
  120. package/public/cmaps/HKscs-B5-H.bcmap +0 -0
  121. package/public/cmaps/HKscs-B5-V.bcmap +0 -0
  122. package/public/cmaps/Hankaku.bcmap +0 -0
  123. package/public/cmaps/Hiragana.bcmap +0 -0
  124. package/public/cmaps/KSC-EUC-H.bcmap +0 -0
  125. package/public/cmaps/KSC-EUC-V.bcmap +0 -0
  126. package/public/cmaps/KSC-H.bcmap +0 -0
  127. package/public/cmaps/KSC-Johab-H.bcmap +0 -0
  128. package/public/cmaps/KSC-Johab-V.bcmap +0 -0
  129. package/public/cmaps/KSC-V.bcmap +0 -0
  130. package/public/cmaps/KSCms-UHC-H.bcmap +0 -0
  131. package/public/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
  132. package/public/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
  133. package/public/cmaps/KSCms-UHC-V.bcmap +0 -0
  134. package/public/cmaps/KSCpc-EUC-H.bcmap +0 -0
  135. package/public/cmaps/KSCpc-EUC-V.bcmap +0 -0
  136. package/public/cmaps/Katakana.bcmap +0 -0
  137. package/public/cmaps/LICENSE +36 -0
  138. package/public/cmaps/NWP-H.bcmap +0 -0
  139. package/public/cmaps/NWP-V.bcmap +0 -0
  140. package/public/cmaps/RKSJ-H.bcmap +0 -0
  141. package/public/cmaps/RKSJ-V.bcmap +0 -0
  142. package/public/cmaps/Roman.bcmap +0 -0
  143. package/public/cmaps/UniCNS-UCS2-H.bcmap +0 -0
  144. package/public/cmaps/UniCNS-UCS2-V.bcmap +0 -0
  145. package/public/cmaps/UniCNS-UTF16-H.bcmap +0 -0
  146. package/public/cmaps/UniCNS-UTF16-V.bcmap +0 -0
  147. package/public/cmaps/UniCNS-UTF32-H.bcmap +0 -0
  148. package/public/cmaps/UniCNS-UTF32-V.bcmap +0 -0
  149. package/public/cmaps/UniCNS-UTF8-H.bcmap +0 -0
  150. package/public/cmaps/UniCNS-UTF8-V.bcmap +0 -0
  151. package/public/cmaps/UniGB-UCS2-H.bcmap +0 -0
  152. package/public/cmaps/UniGB-UCS2-V.bcmap +0 -0
  153. package/public/cmaps/UniGB-UTF16-H.bcmap +0 -0
  154. package/public/cmaps/UniGB-UTF16-V.bcmap +0 -0
  155. package/public/cmaps/UniGB-UTF32-H.bcmap +0 -0
  156. package/public/cmaps/UniGB-UTF32-V.bcmap +0 -0
  157. package/public/cmaps/UniGB-UTF8-H.bcmap +0 -0
  158. package/public/cmaps/UniGB-UTF8-V.bcmap +0 -0
  159. package/public/cmaps/UniJIS-UCS2-H.bcmap +0 -0
  160. package/public/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
  161. package/public/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
  162. package/public/cmaps/UniJIS-UCS2-V.bcmap +0 -0
  163. package/public/cmaps/UniJIS-UTF16-H.bcmap +0 -0
  164. package/public/cmaps/UniJIS-UTF16-V.bcmap +0 -0
  165. package/public/cmaps/UniJIS-UTF32-H.bcmap +0 -0
  166. package/public/cmaps/UniJIS-UTF32-V.bcmap +0 -0
  167. package/public/cmaps/UniJIS-UTF8-H.bcmap +0 -0
  168. package/public/cmaps/UniJIS-UTF8-V.bcmap +0 -0
  169. package/public/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
  170. package/public/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
  171. package/public/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
  172. package/public/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
  173. package/public/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
  174. package/public/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
  175. package/public/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
  176. package/public/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
  177. package/public/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
  178. package/public/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
  179. package/public/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
  180. package/public/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
  181. package/public/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
  182. package/public/cmaps/UniKS-UCS2-H.bcmap +0 -0
  183. package/public/cmaps/UniKS-UCS2-V.bcmap +0 -0
  184. package/public/cmaps/UniKS-UTF16-H.bcmap +0 -0
  185. package/public/cmaps/UniKS-UTF16-V.bcmap +0 -0
  186. package/public/cmaps/UniKS-UTF32-H.bcmap +0 -0
  187. package/public/cmaps/UniKS-UTF32-V.bcmap +0 -0
  188. package/public/cmaps/UniKS-UTF8-H.bcmap +0 -0
  189. package/public/cmaps/UniKS-UTF8-V.bcmap +0 -0
  190. package/public/cmaps/V.bcmap +0 -0
  191. package/public/cmaps/WP-Symbol.bcmap +0 -0
  192. package/public/favicon.ico +0 -0
  193. package/public/font/font_2530548_ikl5ryc86u.css +535 -0
  194. package/public/font/font_2530548_ikl5ryc86u.ttf +0 -0
  195. package/public/font/font_2530548_ikl5ryc86u.woff +0 -0
  196. package/public/font/font_2530548_ikl5ryc86u.woff2 +0 -0
  197. package/public/font/font_2612462_d2s6adyaymf.css +93 -0
  198. package/public/font/font_2612462_d2s6adyaymf.ttf +0 -0
  199. package/public/font/font_2612462_d2s6adyaymf.woff +0 -0
  200. package/public/font/font_2612462_d2s6adyaymf.woff2 +0 -0
  201. package/public/img/banner.png +0 -0
  202. package/public/img/icons/android-chrome-192x192.png +0 -0
  203. package/public/img/icons/android-chrome-512x512.png +0 -0
  204. package/public/img/icons/android-chrome-maskable-192x192.png +0 -0
  205. package/public/img/icons/android-chrome-maskable-512x512.png +0 -0
  206. package/public/img/icons/apple-touch-icon-120x120.png +0 -0
  207. package/public/img/icons/apple-touch-icon-152x152.png +0 -0
  208. package/public/img/icons/apple-touch-icon-180x180.png +0 -0
  209. package/public/img/icons/apple-touch-icon-60x60.png +0 -0
  210. package/public/img/icons/apple-touch-icon-76x76.png +0 -0
  211. package/public/img/icons/apple-touch-icon.png +0 -0
  212. package/public/img/icons/favicon-16x16.png +0 -0
  213. package/public/img/icons/favicon-32x32.png +0 -0
  214. package/public/img/icons/msapplication-icon-144x144.png +0 -0
  215. package/public/img/icons/mstile-150x150.png +0 -0
  216. package/public/img/icons/safari-pinned-tab.svg +149 -0
  217. package/public/img/success.png +0 -0
  218. package/public/img/tip.png +0 -0
  219. package/public/index.html +132 -0
  220. package/public/js/babel-standalone.min.js +25 -0
  221. package/public/js/config.js +0 -0
  222. package/public/js/jquery-3.6.0.min.js +2 -0
  223. package/public/js/pdf.worker.js +45929 -0
  224. package/public/js/signature_pad.min.js +6 -0
  225. package/public/js/tinymce/icons/default/icons.js +170 -0
  226. package/public/js/tinymce/icons/default/icons.min.js +1 -0
  227. package/public/js/tinymce/jquery.tinymce.min.js +92 -0
  228. package/public/js/tinymce/langs/readme.md +3 -0
  229. package/public/js/tinymce/langs/zh_CN.js +419 -0
  230. package/public/js/tinymce/license.txt +504 -0
  231. package/public/js/tinymce/plugins/advlist/plugin.js +281 -0
  232. package/public/js/tinymce/plugins/advlist/plugin.min.js +9 -0
  233. package/public/js/tinymce/plugins/anchor/plugin.js +216 -0
  234. package/public/js/tinymce/plugins/anchor/plugin.min.js +9 -0
  235. package/public/js/tinymce/plugins/autolink/plugin.js +185 -0
  236. package/public/js/tinymce/plugins/autolink/plugin.min.js +9 -0
  237. package/public/js/tinymce/plugins/autoresize/plugin.js +171 -0
  238. package/public/js/tinymce/plugins/autoresize/plugin.min.js +9 -0
  239. package/public/js/tinymce/plugins/autosave/plugin.js +214 -0
  240. package/public/js/tinymce/plugins/autosave/plugin.min.js +9 -0
  241. package/public/js/tinymce/plugins/bbcode/plugin.js +99 -0
  242. package/public/js/tinymce/plugins/bbcode/plugin.min.js +9 -0
  243. package/public/js/tinymce/plugins/charmap/plugin.js +1706 -0
  244. package/public/js/tinymce/plugins/charmap/plugin.min.js +9 -0
  245. package/public/js/tinymce/plugins/code/plugin.js +92 -0
  246. package/public/js/tinymce/plugins/code/plugin.min.js +9 -0
  247. package/public/js/tinymce/plugins/codesample/plugin.js +1717 -0
  248. package/public/js/tinymce/plugins/codesample/plugin.min.js +9 -0
  249. package/public/js/tinymce/plugins/colorpicker/plugin.js +22 -0
  250. package/public/js/tinymce/plugins/colorpicker/plugin.min.js +9 -0
  251. package/public/js/tinymce/plugins/contextmenu/plugin.js +22 -0
  252. package/public/js/tinymce/plugins/contextmenu/plugin.min.js +9 -0
  253. package/public/js/tinymce/plugins/data/plugin.min.js +209 -0
  254. package/public/js/tinymce/plugins/directionality/plugin.js +314 -0
  255. package/public/js/tinymce/plugins/directionality/plugin.min.js +9 -0
  256. package/public/js/tinymce/plugins/emoticons/js/emojiimages.js +9424 -0
  257. package/public/js/tinymce/plugins/emoticons/js/emojiimages.min.js +3 -0
  258. package/public/js/tinymce/plugins/emoticons/js/emojis.js +9423 -0
  259. package/public/js/tinymce/plugins/emoticons/js/emojis.min.js +2 -0
  260. package/public/js/tinymce/plugins/emoticons/plugin.js +564 -0
  261. package/public/js/tinymce/plugins/emoticons/plugin.min.js +9 -0
  262. package/public/js/tinymce/plugins/fullpage/plugin.js +544 -0
  263. package/public/js/tinymce/plugins/fullpage/plugin.min.js +9 -0
  264. package/public/js/tinymce/plugins/fullscreen/plugin.js +851 -0
  265. package/public/js/tinymce/plugins/fullscreen/plugin.min.js +9 -0
  266. package/public/js/tinymce/plugins/help/plugin.js +846 -0
  267. package/public/js/tinymce/plugins/help/plugin.min.js +9 -0
  268. package/public/js/tinymce/plugins/hr/plugin.js +46 -0
  269. package/public/js/tinymce/plugins/hr/plugin.min.js +9 -0
  270. package/public/js/tinymce/plugins/image/plugin.js +1660 -0
  271. package/public/js/tinymce/plugins/image/plugin.min.js +9 -0
  272. package/public/js/tinymce/plugins/imagetools/plugin.js +1304 -0
  273. package/public/js/tinymce/plugins/imagetools/plugin.min.js +9 -0
  274. package/public/js/tinymce/plugins/importcss/plugin.js +337 -0
  275. package/public/js/tinymce/plugins/importcss/plugin.min.js +9 -0
  276. package/public/js/tinymce/plugins/insertdatetime/plugin.js +177 -0
  277. package/public/js/tinymce/plugins/insertdatetime/plugin.min.js +9 -0
  278. package/public/js/tinymce/plugins/legacyoutput/plugin.js +199 -0
  279. package/public/js/tinymce/plugins/legacyoutput/plugin.min.js +9 -0
  280. package/public/js/tinymce/plugins/link/plugin.js +1219 -0
  281. package/public/js/tinymce/plugins/link/plugin.min.js +9 -0
  282. package/public/js/tinymce/plugins/lists/plugin.js +2163 -0
  283. package/public/js/tinymce/plugins/lists/plugin.min.js +9 -0
  284. package/public/js/tinymce/plugins/media/plugin.js +1315 -0
  285. package/public/js/tinymce/plugins/media/plugin.min.js +9 -0
  286. package/public/js/tinymce/plugins/nonbreaking/plugin.js +101 -0
  287. package/public/js/tinymce/plugins/nonbreaking/plugin.min.js +9 -0
  288. package/public/js/tinymce/plugins/noneditable/plugin.js +117 -0
  289. package/public/js/tinymce/plugins/noneditable/plugin.min.js +9 -0
  290. package/public/js/tinymce/plugins/pagebreak/plugin.js +107 -0
  291. package/public/js/tinymce/plugins/pagebreak/plugin.min.js +9 -0
  292. package/public/js/tinymce/plugins/pagelink/plugin.min.js +171 -0
  293. package/public/js/tinymce/plugins/paper/plugin.min.js +80 -0
  294. package/public/js/tinymce/plugins/paste/plugin.js +1707 -0
  295. package/public/js/tinymce/plugins/paste/plugin.min.js +9 -0
  296. package/public/js/tinymce/plugins/preview/plugin.js +127 -0
  297. package/public/js/tinymce/plugins/preview/plugin.min.js +9 -0
  298. package/public/js/tinymce/plugins/print/plugin.js +53 -0
  299. package/public/js/tinymce/plugins/print/plugin.min.js +9 -0
  300. package/public/js/tinymce/plugins/quickbars/plugin.js +488 -0
  301. package/public/js/tinymce/plugins/quickbars/plugin.min.js +9 -0
  302. package/public/js/tinymce/plugins/save/plugin.js +119 -0
  303. package/public/js/tinymce/plugins/save/plugin.min.js +9 -0
  304. package/public/js/tinymce/plugins/searchreplace/plugin.js +1167 -0
  305. package/public/js/tinymce/plugins/searchreplace/plugin.min.js +9 -0
  306. package/public/js/tinymce/plugins/spellchecker/plugin.js +737 -0
  307. package/public/js/tinymce/plugins/spellchecker/plugin.min.js +9 -0
  308. package/public/js/tinymce/plugins/tabfocus/plugin.js +128 -0
  309. package/public/js/tinymce/plugins/tabfocus/plugin.min.js +9 -0
  310. package/public/js/tinymce/plugins/table/plugin.min.js +9805 -0
  311. package/public/js/tinymce/plugins/table/plugin.min.js1 +9 -0
  312. package/public/js/tinymce/plugins/template/plugin.js +562 -0
  313. package/public/js/tinymce/plugins/template/plugin.min.js +9 -0
  314. package/public/js/tinymce/plugins/textattribute/plugin.min.js +76 -0
  315. package/public/js/tinymce/plugins/textcolor/plugin.js +22 -0
  316. package/public/js/tinymce/plugins/textcolor/plugin.min.js +9 -0
  317. package/public/js/tinymce/plugins/textpattern/plugin.js +1392 -0
  318. package/public/js/tinymce/plugins/textpattern/plugin.min.js +9 -0
  319. package/public/js/tinymce/plugins/toc/plugin.js +235 -0
  320. package/public/js/tinymce/plugins/toc/plugin.min.js +9 -0
  321. package/public/js/tinymce/plugins/visualblocks/plugin.js +104 -0
  322. package/public/js/tinymce/plugins/visualblocks/plugin.min.js +9 -0
  323. package/public/js/tinymce/plugins/visualchars/plugin.js +541 -0
  324. package/public/js/tinymce/plugins/visualchars/plugin.min.js +9 -0
  325. package/public/js/tinymce/plugins/wordcount/plugin.js +416 -0
  326. package/public/js/tinymce/plugins/wordcount/plugin.min.js +9 -0
  327. package/public/js/tinymce/readme.md +77 -0
  328. package/public/js/tinymce/skins/content/dark/content.css +59 -0
  329. package/public/js/tinymce/skins/content/dark/content.min.css +7 -0
  330. package/public/js/tinymce/skins/content/dark/content.min.css.map +1 -0
  331. package/public/js/tinymce/skins/content/default/content.css +49 -0
  332. package/public/js/tinymce/skins/content/default/content.min.css +7 -0
  333. package/public/js/tinymce/skins/content/default/content.min.css.map +1 -0
  334. package/public/js/tinymce/skins/content/document/content.css +54 -0
  335. package/public/js/tinymce/skins/content/document/content.min.css +7 -0
  336. package/public/js/tinymce/skins/content/document/content.min.css.map +1 -0
  337. package/public/js/tinymce/skins/content/writer/content.css +50 -0
  338. package/public/js/tinymce/skins/content/writer/content.min.css +7 -0
  339. package/public/js/tinymce/skins/content/writer/content.min.css.map +1 -0
  340. package/public/js/tinymce/skins/ui/oxide/content.css +693 -0
  341. package/public/js/tinymce/skins/ui/oxide/content.inline.css +687 -0
  342. package/public/js/tinymce/skins/ui/oxide/content.inline.min.css +7 -0
  343. package/public/js/tinymce/skins/ui/oxide/content.inline.min.css.map +1 -0
  344. package/public/js/tinymce/skins/ui/oxide/content.min.css +7 -0
  345. package/public/js/tinymce/skins/ui/oxide/content.min.css.map +1 -0
  346. package/public/js/tinymce/skins/ui/oxide/content.mobile.css +29 -0
  347. package/public/js/tinymce/skins/ui/oxide/content.mobile.min.css +7 -0
  348. package/public/js/tinymce/skins/ui/oxide/content.mobile.min.css.map +1 -0
  349. package/public/js/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff +0 -0
  350. package/public/js/tinymce/skins/ui/oxide/skin.css +2937 -0
  351. package/public/js/tinymce/skins/ui/oxide/skin.min.css +7 -0
  352. package/public/js/tinymce/skins/ui/oxide/skin.min.css.map +1 -0
  353. package/public/js/tinymce/skins/ui/oxide/skin.mobile.css +673 -0
  354. package/public/js/tinymce/skins/ui/oxide/skin.mobile.min.css +7 -0
  355. package/public/js/tinymce/skins/ui/oxide/skin.mobile.min.css.map +1 -0
  356. package/public/js/tinymce/skins/ui/oxide/skin.shadowdom.min.css +7 -0
  357. package/public/js/tinymce/skins/ui/oxide-dark/content.css +675 -0
  358. package/public/js/tinymce/skins/ui/oxide-dark/content.inline.css +687 -0
  359. package/public/js/tinymce/skins/ui/oxide-dark/content.inline.min.css +7 -0
  360. package/public/js/tinymce/skins/ui/oxide-dark/content.inline.min.css.map +1 -0
  361. package/public/js/tinymce/skins/ui/oxide-dark/content.min.css +7 -0
  362. package/public/js/tinymce/skins/ui/oxide-dark/content.min.css.map +1 -0
  363. package/public/js/tinymce/skins/ui/oxide-dark/content.mobile.css +29 -0
  364. package/public/js/tinymce/skins/ui/oxide-dark/content.mobile.min.css +7 -0
  365. package/public/js/tinymce/skins/ui/oxide-dark/content.mobile.min.css.map +1 -0
  366. package/public/js/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff +0 -0
  367. package/public/js/tinymce/skins/ui/oxide-dark/skin.css +2937 -0
  368. package/public/js/tinymce/skins/ui/oxide-dark/skin.min.css +7 -0
  369. package/public/js/tinymce/skins/ui/oxide-dark/skin.min.css.map +1 -0
  370. package/public/js/tinymce/skins/ui/oxide-dark/skin.mobile.css +673 -0
  371. package/public/js/tinymce/skins/ui/oxide-dark/skin.mobile.min.css +7 -0
  372. package/public/js/tinymce/skins/ui/oxide-dark/skin.mobile.min.css.map +1 -0
  373. package/public/js/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css +7 -0
  374. package/public/js/tinymce/themes/mobile/theme.js +13612 -0
  375. package/public/js/tinymce/themes/mobile/theme.min.js +9 -0
  376. package/public/js/tinymce/themes/silver/theme.js +31769 -0
  377. package/public/js/tinymce/themes/silver/theme.min.js +9 -0
  378. package/public/js/tinymce/tinymce.d.ts +2916 -0
  379. package/public/js/tinymce/tinymce.min.js +9 -0
  380. package/public/luckysheet/iconfont.css +456 -0
  381. package/public/luckysheet/luckysheet.css +1 -0
  382. package/public/luckysheet/luckysheet.umd.js +27 -0
  383. package/public/luckysheet/plugin.js +1 -0
  384. package/public/luckysheet/plugins.css +10 -0
  385. package/public/luckysheet/pluginsCss.css +1 -0
  386. package/public/robots.txt +2 -0
  387. package/public/signature.html +445 -0
  388. package/sh.exe.stackdump +11 -0
  389. package/src/App.vue +31 -0
  390. package/src/api/README.md +1 -0
  391. package/src/api/config.js +187 -0
  392. package/src/api/createHttp.js +160 -0
  393. package/src/api/index.js +32 -0
  394. package/src/assets/bdrz/banlizhong.png +0 -0
  395. package/src/assets/bdrz/chenggong.png +0 -0
  396. package/src/assets/bdrz/danwei.png +0 -0
  397. package/src/assets/bdrz/hedui.png +0 -0
  398. package/src/assets/bdrz/laoziguanli.png +0 -0
  399. package/src/assets/bdrz/location.png +0 -0
  400. package/src/assets/bdrz/locationl.png +0 -0
  401. package/src/assets/bdrz/phone.png +0 -0
  402. package/src/assets/bdrz/phonel.png +0 -0
  403. package/src/assets/bdrz/shouzhi.png +0 -0
  404. package/src/assets/bdrz/time.png +0 -0
  405. package/src/assets/bdrz/timel.png +0 -0
  406. package/src/assets/bdrz/wancheng.png +0 -0
  407. package/src/assets/bdrz/zuobiao.png +0 -0
  408. package/src/assets/customTranslate/customTranslate.js +13 -0
  409. package/src/assets/customTranslate/translations.js +218 -0
  410. package/src/assets/data/card.png +0 -0
  411. package/src/assets/data/code.png +0 -0
  412. package/src/assets/home/apply.png +0 -0
  413. package/src/assets/home/banner1.png +0 -0
  414. package/src/assets/home/banner11.png +0 -0
  415. package/src/assets/home/banner12.png +0 -0
  416. package/src/assets/home/banner2.png +0 -0
  417. package/src/assets/home/banner3.png +0 -0
  418. package/src/assets/home/benke.png +0 -0
  419. package/src/assets/home/chengguo.png +0 -0
  420. package/src/assets/home/gaojirencaisousuo.png +0 -0
  421. package/src/assets/home/hangyebiaozhun.png +0 -0
  422. package/src/assets/home/huojiang.png +0 -0
  423. package/src/assets/home/icon-test.png +0 -0
  424. package/src/assets/home/kaoshi.png +0 -0
  425. package/src/assets/home/kejichengguo.png +0 -0
  426. package/src/assets/home/keyanxiangmu.png +0 -0
  427. package/src/assets/home/lunwendao.png +0 -0
  428. package/src/assets/home/message.png +0 -0
  429. package/src/assets/home/my-yanjiubaogao.png +0 -0
  430. package/src/assets/home/nodata.png +0 -0
  431. package/src/assets/home/people.png +0 -0
  432. package/src/assets/home/qita.png +0 -0
  433. package/src/assets/home/schoollogo.png +0 -0
  434. package/src/assets/home/search.png +0 -0
  435. package/src/assets/home/shenbaoguanli.png +0 -0
  436. package/src/assets/home/shouye.png +0 -0
  437. package/src/assets/home/title.png +0 -0
  438. package/src/assets/home/todo.png +0 -0
  439. package/src/assets/home/wave0.png +0 -0
  440. package/src/assets/home/wave1.png +0 -0
  441. package/src/assets/home/wave2.png +0 -0
  442. package/src/assets/home/wodeshuju(1).png +0 -0
  443. package/src/assets/home/xinxizhongxin.png +0 -0
  444. package/src/assets/home/yanjiusheng.png +0 -0
  445. package/src/assets/home/yeji.png +0 -0
  446. package/src/assets/home/zhengjiuniandukaohe.png +0 -0
  447. package/src/assets/home/zhengshu.png +0 -0
  448. package/src/assets/home/zhidao.png +0 -0
  449. package/src/assets/home/zhuanli.png +0 -0
  450. package/src/assets/home/zhuanye.png +0 -0
  451. package/src/assets/home/zhuzuoquan.png +0 -0
  452. package/src/assets/images/add.png +0 -0
  453. package/src/assets/images/app.png +0 -0
  454. package/src/assets/images/apply_bg.png +0 -0
  455. package/src/assets/images/auto.png +0 -0
  456. package/src/assets/images/book.png +0 -0
  457. package/src/assets/images/clear.png +0 -0
  458. package/src/assets/images/contact_bg.png +0 -0
  459. package/src/assets/images/data/benke.png +0 -0
  460. package/src/assets/images/data/chengguo.png +0 -0
  461. package/src/assets/images/data/chubanwu.png +0 -0
  462. package/src/assets/images/data/erjidanwei.png +0 -0
  463. package/src/assets/images/data/hangyebiaozhun.png +0 -0
  464. package/src/assets/images/data/huojiang(1).png +0 -0
  465. package/src/assets/images/data/huojiang(2).png +0 -0
  466. package/src/assets/images/data/icon-test.png +0 -0
  467. package/src/assets/images/data/jianzhi.png +0 -0
  468. package/src/assets/images/data/jiaozhigong.png +0 -0
  469. package/src/assets/images/data/keyanxiangmu.png +0 -0
  470. package/src/assets/images/data/keyanxiangmu/346/213/267/350/264/2352.png +0 -0
  471. package/src/assets/images/data/lunwen(1).png +0 -0
  472. package/src/assets/images/data/lunwendao.png +0 -0
  473. package/src/assets/images/data/lunwendao/346/213/267/350/264/2352.png +0 -0
  474. package/src/assets/images/data/pingtai.png +0 -0
  475. package/src/assets/images/data/pingtai/346/213/267/350/264/235.png +0 -0
  476. package/src/assets/images/data/shengbujijiaoxuechengguojiang.png +0 -0
  477. package/src/assets/images/data/wudachengguozhuanhuazhongxin.png +0 -0
  478. package/src/assets/images/data/xueke(1).png +0 -0
  479. package/src/assets/images/data/yanjiusheng.png +0 -0
  480. package/src/assets/images/data/zhidao.png +0 -0
  481. package/src/assets/images/data/zhuanli.png +0 -0
  482. package/src/assets/images/data/zhuzuoquan.png +0 -0
  483. package/src/assets/images/error.png +0 -0
  484. package/src/assets/images/file.png +0 -0
  485. package/src/assets/images/hall_banner.png +0 -0
  486. package/src/assets/images/hr.png +0 -0
  487. package/src/assets/images/index/benke.png +0 -0
  488. package/src/assets/images/index/chengguo.png +0 -0
  489. package/src/assets/images/index/gaojirencaisousuo.png +0 -0
  490. package/src/assets/images/index/hangyebiaozhun.png +0 -0
  491. package/src/assets/images/index/huojiang.png +0 -0
  492. package/src/assets/images/index/icon-test.png +0 -0
  493. package/src/assets/images/index/kaoshi.png +0 -0
  494. package/src/assets/images/index/kejichengguo.png +0 -0
  495. package/src/assets/images/index/keyanxiangmu.png +0 -0
  496. package/src/assets/images/index/lunwendao.png +0 -0
  497. package/src/assets/images/index/my-yanjiubaogao.png +0 -0
  498. package/src/assets/images/index/qita.png +0 -0
  499. package/src/assets/images/index/shenbaoguanli.png +0 -0
  500. package/src/assets/images/index/wodeshuju(1).png +0 -0
  501. package/src/assets/images/index/xinxizhongxin.png +0 -0
  502. package/src/assets/images/index/yanjiusheng.png +0 -0
  503. package/src/assets/images/index/yeji.png +0 -0
  504. package/src/assets/images/index/zhengjiuniandukaohe.png +0 -0
  505. package/src/assets/images/index/zhengshu.png +0 -0
  506. package/src/assets/images/index/zhidao.png +0 -0
  507. package/src/assets/images/index/zhuanli.png +0 -0
  508. package/src/assets/images/index/zhuanye.png +0 -0
  509. package/src/assets/images/index/zhuzuoquan.png +0 -0
  510. package/src/assets/images/index//344/270/232/345/212/241/347/224/263/346/212/245/344/270/200/347/253/231/345/274/217/345/212/236/347/220/206.png +0 -0
  511. package/src/assets/images/index//345/276/205/345/212/236.png +0 -0
  512. package/src/assets/images/index//346/244/255/345/234/2064/346/213/267/350/264/2355.png +0 -0
  513. package/src/assets/images/index//346/244/255/345/234/2065/346/213/267/350/264/235.png +0 -0
  514. package/src/assets/images/index//346/266/210/346/201/257.png +0 -0
  515. package/src/assets/images/index//347/224/263/350/257/267.png +0 -0
  516. package/src/assets/images/index//351/273/230/350/256/244/345/255/246/346/240/241logo.png +0 -0
  517. package/src/assets/images/jian.png +0 -0
  518. package/src/assets/images/login.jpg +0 -0
  519. package/src/assets/images/logo.png +0 -0
  520. package/src/assets/images/m_hall_banner.png +0 -0
  521. package/src/assets/images/mlogin.png +0 -0
  522. package/src/assets/images/module.png +0 -0
  523. package/src/assets/images/offical/111.png +0 -0
  524. package/src/assets/images/offical/haiwaigaocengcirencai.png +0 -0
  525. package/src/assets/images/offical/jiaoxue(1).png +0 -0
  526. package/src/assets/images/offical/niandukaohe-weikaohe.png +0 -0
  527. package/src/assets/images/offical/pinqikaohe.png +0 -0
  528. package/src/assets/images/offical/renshiguanlixinxi_yingongchuguo.png +0 -0
  529. package/src/assets/images/offical/shengbujijiaoxuechengguojiang.png +0 -0
  530. package/src/assets/images/offical/shujucaiji.png +0 -0
  531. package/src/assets/images/offical/yeji(1).png +0 -0
  532. package/src/assets/images/offical/zhuanye.png +0 -0
  533. package/src/assets/images/offical//345/244/232/350/276/271/345/275/2421/346/213/267/350/264/23510.png +0 -0
  534. package/src/assets/images/qq.png +0 -0
  535. package/src/assets/images/role_select.png +0 -0
  536. package/src/assets/images/staff.png +0 -0
  537. package/src/assets/images/success.png +0 -0
  538. package/src/assets/images/theme/aurorablue.png +0 -0
  539. package/src/assets/images/theme/classicblue.png +0 -0
  540. package/src/assets/images/theme/deepblue.png +0 -0
  541. package/src/assets/images/theme/forestgreen.png +0 -0
  542. package/src/assets/images/theme/orange.png +0 -0
  543. package/src/assets/images/theme/palevioletred.png +0 -0
  544. package/src/assets/images/theme/purple.png +0 -0
  545. package/src/assets/images/theme/skyblue.png +0 -0
  546. package/src/assets/images/theme/tiffanyblue.png +0 -0
  547. package/src/assets/images/user_bg.png +0 -0
  548. package/src/assets/images/weixin.png +0 -0
  549. package/src/assets/login/bgimg.jpg +0 -0
  550. package/src/assets/moren.png +0 -0
  551. package/src/assets/wage/baseBanner.png +0 -0
  552. package/src/frame/base/AppModuleTreeFind.vue +51 -0
  553. package/src/frame/base/AttributeSubAdd.vue +29 -0
  554. package/src/frame/base/ChooseApplication.vue +176 -0
  555. package/src/frame/base/ChooseApplicationSet.vue +165 -0
  556. package/src/frame/base/ClientAppItem.vue +217 -0
  557. package/src/frame/base/ClientApplication.vue +446 -0
  558. package/src/frame/base/ClientApplicationList.vue +180 -0
  559. package/src/frame/base/ClientModule.vue +65 -0
  560. package/src/frame/base/ClientModuleIndex.vue +413 -0
  561. package/src/frame/base/ClientTreePage.vue +29 -0
  562. package/src/frame/base/ConfigModuleIndex.vue +82 -0
  563. package/src/frame/base/CurrentClientApplication.vue +33 -0
  564. package/src/frame/base/DeptTreeFind.vue +51 -0
  565. package/src/frame/base/EntityList.vue +71 -0
  566. package/src/frame/base/ModuleTreeFind.vue +51 -0
  567. package/src/frame/base/PageList.vue +47 -0
  568. package/src/frame/base/PermissManage.vue +95 -0
  569. package/src/frame/base/RoleAccredit.vue +961 -0
  570. package/src/frame/base/ServiceAccredit.vue +956 -0
  571. package/src/frame/base/ServiceMenu.vue +380 -0
  572. package/src/frame/base/ServiceOperate.vue +929 -0
  573. package/src/frame/base/ServiceTreePage.vue +31 -0
  574. package/src/frame/components/AddUsedInterface.vue +154 -0
  575. package/src/frame/components/Alert.vue +35 -0
  576. package/src/frame/components/AppList.vue +254 -0
  577. package/src/frame/components/Apply/ApplyIndex.vue +207 -0
  578. package/src/frame/components/AttributeList.vue +612 -0
  579. package/src/frame/components/Banner.vue +25 -0
  580. package/src/frame/components/CardO.vue +112 -0
  581. package/src/frame/components/CheckForm.vue +20 -0
  582. package/src/frame/components/ClientAdminFormItem.vue +49 -0
  583. package/src/frame/components/ClientFormItem.vue +45 -0
  584. package/src/frame/components/ClientList.vue +135 -0
  585. package/src/frame/components/CodeDetail.vue +374 -0
  586. package/src/frame/components/CodeManage.vue +755 -0
  587. package/src/frame/components/ComponentFind.vue +356 -0
  588. package/src/frame/components/ComponentList.vue +521 -0
  589. package/src/frame/components/ConfigParamFormItem.vue +193 -0
  590. package/src/frame/components/CreatePage.vue +329 -0
  591. package/src/frame/components/DataLog.vue +91 -0
  592. package/src/frame/components/DblogList.vue +158 -0
  593. package/src/frame/components/DeptFind.vue +126 -0
  594. package/src/frame/components/DropDown/DropDownMenu.vue +267 -0
  595. package/src/frame/components/DropDown/DropDownMenuItem.vue +489 -0
  596. package/src/frame/components/DynamicUserList.vue +69 -0
  597. package/src/frame/components/EditListTable.vue +774 -0
  598. package/src/frame/components/EntityCheckboxFind.vue +88 -0
  599. package/src/frame/components/EntityRelationAdd.vue +201 -0
  600. package/src/frame/components/EntityRelationAddFormItem.vue +100 -0
  601. package/src/frame/components/EntityRightFormItem.vue +616 -0
  602. package/src/frame/components/EntityRightSubList.vue +588 -0
  603. package/src/frame/components/EntityTreeManage.vue +852 -0
  604. package/src/frame/components/EntityViewFields.vue +401 -0
  605. package/src/frame/components/EntityViewSubList.vue +976 -0
  606. package/src/frame/components/ExportSystemConfig.vue +103 -0
  607. package/src/frame/components/FieldAddFormItem.vue +35 -0
  608. package/src/frame/components/Footer.vue +120 -0
  609. package/src/frame/components/FormulaEditor.vue +1216 -0
  610. package/src/frame/components/HallNav.vue +450 -0
  611. package/src/frame/components/HeaderNav.vue +417 -0
  612. package/src/frame/components/IconCard.vue +158 -0
  613. package/src/frame/components/IconFontLibrary.vue +59 -0
  614. package/src/frame/components/IconFontList.vue +75 -0
  615. package/src/frame/components/IdentifyList.vue +33 -0
  616. package/src/frame/components/ImportSystemConfig.vue +206 -0
  617. package/src/frame/components/InterfaceSubList.vue +295 -0
  618. package/src/frame/components/JsPanel.vue +103 -0
  619. package/src/frame/components/LanguageImportPage.vue +598 -0
  620. package/src/frame/components/LanguageSetting.vue +449 -0
  621. package/src/frame/components/List/LinkItem.vue +98 -0
  622. package/src/frame/components/List/List.vue +17 -0
  623. package/src/frame/components/List/ListItem.vue +52 -0
  624. package/src/frame/components/ListTable.vue +796 -0
  625. package/src/frame/components/MEntitySubList.vue +199 -0
  626. package/src/frame/components/MenuTreeFind.vue +107 -0
  627. package/src/frame/components/MessageList.vue +137 -0
  628. package/src/frame/components/MessageRuleFormItem.vue +61 -0
  629. package/src/frame/components/MessageRuleReceiverFormItem.vue +173 -0
  630. package/src/frame/components/MessageTemplate.vue +791 -0
  631. package/src/frame/components/MetaList.vue +65 -0
  632. package/src/frame/components/Mine.vue +114 -0
  633. package/src/frame/components/Nav.vue +599 -0
  634. package/src/frame/components/NavFormCatalogItem.vue +9 -0
  635. package/src/frame/components/NumList.vue +108 -0
  636. package/src/frame/components/OperateLog.vue +168 -0
  637. package/src/frame/components/PageCatalog.vue +454 -0
  638. package/src/frame/components/PageChart.vue +306 -0
  639. package/src/frame/components/PageSwipes.vue +179 -0
  640. package/src/frame/components/PersonFormItem.vue +92 -0
  641. package/src/frame/components/Popup.vue +181 -0
  642. package/src/frame/components/PrintFormList.vue +495 -0
  643. package/src/frame/components/PublishEntity.vue +87 -0
  644. package/src/frame/components/ReportFormList.vue +247 -0
  645. package/src/frame/components/ReportList.vue +493 -0
  646. package/src/frame/components/RightSubList.vue +253 -0
  647. package/src/frame/components/RoleAddUser.vue +50 -0
  648. package/src/frame/components/RoleApplicationCard.vue +299 -0
  649. package/src/frame/components/RoleApplicationList.vue +766 -0
  650. package/src/frame/components/RoleApplicationSet.vue +845 -0
  651. package/src/frame/components/RuleText.vue +98 -0
  652. package/src/frame/components/Search.vue +270 -0
  653. package/src/frame/components/ServiceFormItem.vue +29 -0
  654. package/src/frame/components/SubAdd.vue +0 -0
  655. package/src/frame/components/SystemNav.vue +18 -0
  656. package/src/frame/components/TaskNumCard.vue +26 -0
  657. package/src/frame/components/TimerRuleFormItem.vue +227 -0
  658. package/src/frame/components/TodoList.vue +429 -0
  659. package/src/frame/components/UpdateSystemConfig.vue +186 -0
  660. package/src/frame/components/UserCard.vue +110 -0
  661. package/src/frame/components/UserFind.vue +438 -0
  662. package/src/frame/components/UserFormItem.vue +666 -0
  663. package/src/frame/components/UserList.vue +17 -0
  664. package/src/frame/components/UserManage.vue +716 -0
  665. package/src/frame/components/ValidateRuleFormItem.vue +40 -0
  666. package/src/frame/components/ViewFieldDefine.vue +554 -0
  667. package/src/frame/components/attribute/Form.vue +439 -0
  668. package/src/frame/components/authorization/AddApiPermiss.vue +179 -0
  669. package/src/frame/components/authorization/AddAuthorization.vue +135 -0
  670. package/src/frame/components/authorization/AddEntityFind.vue +68 -0
  671. package/src/frame/components/authorization/AddNoApi.vue +143 -0
  672. package/src/frame/components/authorization/AddRoleScope.vue +291 -0
  673. package/src/frame/components/authorization/ApiShareOtherList.vue +353 -0
  674. package/src/frame/components/authorization/ApiSystemList.vue +315 -0
  675. package/src/frame/components/authorization/AuthorizationRoleSystem.vue +213 -0
  676. package/src/frame/components/authorization/EntityConstraintFormItem.vue +255 -0
  677. package/src/frame/components/authorization/OtherShareApiList.vue +248 -0
  678. package/src/frame/components/authorization/PermissRoleAuthorization.vue +583 -0
  679. package/src/frame/components/authorization/PermissRoleTabs.vue +117 -0
  680. package/src/frame/components/authorization/RoleLevel.vue +113 -0
  681. package/src/frame/components/authorization/RoleLevelScope.vue +247 -0
  682. package/src/frame/components/card/CardList.vue +78 -0
  683. package/src/frame/components/card/CardListItem.vue +147 -0
  684. package/src/frame/components/card/Title.vue +38 -0
  685. package/src/frame/components/chart/CircularPie.vue +11 -0
  686. package/src/frame/components/chart/Column.vue +11 -0
  687. package/src/frame/components/chart/HoriColumn.vue +11 -0
  688. package/src/frame/components/chart/Line.vue +11 -0
  689. package/src/frame/components/chart/Pie.vue +11 -0
  690. package/src/frame/components/custom-bpmn/CustomContextPad.js +58 -0
  691. package/src/frame/components/custom-bpmn/CustomPalette.js +257 -0
  692. package/src/frame/components/custom-bpmn/CustomRenderer.js +115 -0
  693. package/src/frame/components/custom-bpmn/CustomRendererBpmn.js +45 -0
  694. package/src/frame/components/custom-bpmn/PropertiesView.vue +4046 -0
  695. package/src/frame/components/custom-bpmn/img/chaxun.png +0 -0
  696. package/src/frame/components/custom-bpmn/img/fasong.png +0 -0
  697. package/src/frame/components/custom-bpmn/img/gengxin.png +0 -0
  698. package/src/frame/components/custom-bpmn/img/jiagong.png +0 -0
  699. package/src/frame/components/custom-bpmn/img/jiekou.png +0 -0
  700. package/src/frame/components/custom-bpmn/img/shanchu.png +0 -0
  701. package/src/frame/components/custom-bpmn/img/tongbu.png +0 -0
  702. package/src/frame/components/custom-bpmn/img/xinzeng.png +0 -0
  703. package/src/frame/components/custom-bpmn/img/xunhuanend.png +0 -0
  704. package/src/frame/components/custom-bpmn/img/xunhuanstart.png +0 -0
  705. package/src/frame/components/custom-bpmn/img/ywgz.png +0 -0
  706. package/src/frame/components/custom-bpmn/index.js +6 -0
  707. package/src/frame/components/custom-bpmn/palette.js +18 -0
  708. package/src/frame/components/custom-bpmn/util.js +5 -0
  709. package/src/frame/components/expand/AddForm.vue +91 -0
  710. package/src/frame/components/expand/AddFormItem.vue +144 -0
  711. package/src/frame/components/filter/Filter.vue +744 -0
  712. package/src/frame/components/filter/FilterItem.vue +516 -0
  713. package/src/frame/components/form/Cascader.vue +79 -0
  714. package/src/frame/components/form/CheckBox.vue +88 -0
  715. package/src/frame/components/form/Date.vue +154 -0
  716. package/src/frame/components/form/DateRange.vue +108 -0
  717. package/src/frame/components/form/Field.vue +91 -0
  718. package/src/frame/components/form/File.vue +415 -0
  719. package/src/frame/components/form/FormItem.vue +128 -0
  720. package/src/frame/components/form/Hidden.vue +77 -0
  721. package/src/frame/components/form/Input.vue +123 -0
  722. package/src/frame/components/form/List.vue +149 -0
  723. package/src/frame/components/form/Object.vue +225 -0
  724. package/src/frame/components/form/Photo.vue +235 -0
  725. package/src/frame/components/form/Textarea.vue +133 -0
  726. package/src/frame/components/grid/Module.vue +63 -0
  727. package/src/frame/components/grid/ModuleItem.vue +205 -0
  728. package/src/frame/components/hall/AppCollect.vue +189 -0
  729. package/src/frame/components/hall/AppList.vue +407 -0
  730. package/src/frame/components/hall/AppVisitRecord.vue +170 -0
  731. package/src/frame/components/hall/Banner.vue +21 -0
  732. package/src/frame/components/hall/ServiceCard.vue +202 -0
  733. package/src/frame/components/hall/UserCard.vue +112 -0
  734. package/src/frame/components/mscope/Scope.vue +90 -0
  735. package/src/frame/components/mscope/ScopeItem.vue +372 -0
  736. package/src/frame/components/mscope/drawer.vue +43 -0
  737. package/src/frame/components/permiss/AddApi.vue +119 -0
  738. package/src/frame/components/permiss/AddNoEntityApi.vue +131 -0
  739. package/src/frame/components/permiss/AddSystemPermiss.vue +107 -0
  740. package/src/frame/components/permiss/AllocateRole.vue +107 -0
  741. package/src/frame/components/permiss/ApiSubList.vue +193 -0
  742. package/src/frame/components/permiss/FieldScope.vue +138 -0
  743. package/src/frame/components/permiss/ListTable.vue +842 -0
  744. package/src/frame/components/permiss/PermissEdit.vue +61 -0
  745. package/src/frame/components/permiss/PermissManage.vue +96 -0
  746. package/src/frame/components/permiss/PermissManageAdd.vue +203 -0
  747. package/src/frame/components/permiss/RoleMenu.vue +405 -0
  748. package/src/frame/components/permiss/RoleSubList.vue +264 -0
  749. package/src/frame/components/permiss/jurisdiction.vue +425 -0
  750. package/src/frame/components/report/ChartLine.vue +253 -0
  751. package/src/frame/components/report/ChartPie.vue +345 -0
  752. package/src/frame/components/report/Config.vue +709 -0
  753. package/src/frame/components/report/Design.vue +2783 -0
  754. package/src/frame/components/report/Index.vue +115 -0
  755. package/src/frame/components/report/ReportTable.vue +1051 -0
  756. package/src/frame/components/report/StatList.vue +229 -0
  757. package/src/frame/components/right/RoleDataList.vue +291 -0
  758. package/src/frame/components/right/RoleFieldList.vue +348 -0
  759. package/src/frame/components/scope/Scope.vue +497 -0
  760. package/src/frame/components/scope/ScopeDrawer.vue +195 -0
  761. package/src/frame/components/scope/ScopeItem.vue +973 -0
  762. package/src/frame/components/task-list/TaskList.vue +617 -0
  763. package/src/frame/components/task-list/Visual.vue +45 -0
  764. package/src/frame/components/task-list/index.js +3 -0
  765. package/src/frame/components/task-list-page/TaskListPage.vue +26 -0
  766. package/src/frame/components/task-list-page/index.js +8 -0
  767. package/src/frame/components/upLoad.vue +69 -0
  768. package/src/frame/components/viewport/LookViewList.vue +28 -0
  769. package/src/frame/components/viewport/ViewAddForm.vue +151 -0
  770. package/src/frame/components/viewport/ViewDefineList.vue +53 -0
  771. package/src/frame/components/viewport/ViewFiedList.vue +646 -0
  772. package/src/frame/components/viewport/ViewScope.vue +109 -0
  773. package/src/frame/index.js +37 -0
  774. package/src/frame/packages/add-form/AddForm.vue +2128 -0
  775. package/src/frame/packages/add-form/Preview.vue +312 -0
  776. package/src/frame/packages/add-form/index.js +8 -0
  777. package/src/frame/packages/add-form-item/AddFormItem.vue +446 -0
  778. package/src/frame/packages/add-form-item/Preview.vue +92 -0
  779. package/src/frame/packages/add-form-item/index.js +8 -0
  780. package/src/frame/packages/alter/Alert.vue +42 -0
  781. package/src/frame/packages/alter/Visual.vue +58 -0
  782. package/src/frame/packages/alter/index.js +8 -0
  783. package/src/frame/packages/app-index/AppIndex.vue +188 -0
  784. package/src/frame/packages/app-index/index.js +8 -0
  785. package/src/frame/packages/app-nav/AppNav.vue +1553 -0
  786. package/src/frame/packages/app-nav/Preview.vue +13 -0
  787. package/src/frame/packages/app-nav/index.js +8 -0
  788. package/src/frame/packages/app-tabs/Tabs.vue +121 -0
  789. package/src/frame/packages/app-tabs/index.js +8 -0
  790. package/src/frame/packages/apply-form/ApplyForm.vue +68 -0
  791. package/src/frame/packages/apply-form/index.js +3 -0
  792. package/src/frame/packages/approval-index/ApprovalIndex.vue +465 -0
  793. package/src/frame/packages/approval-index/index.js +8 -0
  794. package/src/frame/packages/approval-index-page/ApprovalIndexPage.vue +21 -0
  795. package/src/frame/packages/approval-index-page/index.js +8 -0
  796. package/src/frame/packages/base-page/BasePage.vue +221 -0
  797. package/src/frame/packages/base-page/index.js +8 -0
  798. package/src/frame/packages/button/Button.vue +47 -0
  799. package/src/frame/packages/button/Preview.vue +33 -0
  800. package/src/frame/packages/button/index.js +8 -0
  801. package/src/frame/packages/card/Card.vue +291 -0
  802. package/src/frame/packages/card/index.js +8 -0
  803. package/src/frame/packages/card-form-item/CardFormItem.vue +301 -0
  804. package/src/frame/packages/card-form-item/Visual.vue +101 -0
  805. package/src/frame/packages/card-form-item/index.js +3 -0
  806. package/src/frame/packages/category-list/CategoryList.vue +854 -0
  807. package/src/frame/packages/category-list/index.js +8 -0
  808. package/src/frame/packages/chart/Chart.vue +124 -0
  809. package/src/frame/packages/chart/ChartColumn.vue +365 -0
  810. package/src/frame/packages/chart/ChartFormItem.vue +241 -0
  811. package/src/frame/packages/chart/ChartLine.vue +317 -0
  812. package/src/frame/packages/chart/ChartPie.vue +384 -0
  813. package/src/frame/packages/chart/Funnel.vue +379 -0
  814. package/src/frame/packages/chart/ReportTable.vue +1139 -0
  815. package/src/frame/packages/chart/index.js +23 -0
  816. package/src/frame/packages/check-history/CheckHistory.vue +510 -0
  817. package/src/frame/packages/check-history/Steps.vue +213 -0
  818. package/src/frame/packages/check-history/index.js +8 -0
  819. package/src/frame/packages/component/Component.vue +16 -0
  820. package/src/frame/packages/component/index.js +8 -0
  821. package/src/frame/packages/contacts/Card.vue +133 -0
  822. package/src/frame/packages/contacts/Contacts.vue +167 -0
  823. package/src/frame/packages/contacts/index.js +8 -0
  824. package/src/frame/packages/edit-entity-list/EditEntityList.vue +108 -0
  825. package/src/frame/packages/entity-add-page/EntityAddPage.vue +100 -0
  826. package/src/frame/packages/entity-add-page/index.js +8 -0
  827. package/src/frame/packages/entity-apply-page/EntityApplyPage.vue +60 -0
  828. package/src/frame/packages/entity-apply-page/index.js +3 -0
  829. package/src/frame/packages/entity-list/Config.vue +275 -0
  830. package/src/frame/packages/entity-list/EntityList.scss +88 -0
  831. package/src/frame/packages/entity-list/EntityList.vue +2105 -0
  832. package/src/frame/packages/entity-list/Preview.vue +232 -0
  833. package/src/frame/packages/entity-list/components/EditField.vue +76 -0
  834. package/src/frame/packages/entity-list/components/Field.vue +166 -0
  835. package/src/frame/packages/entity-list/config.js +0 -0
  836. package/src/frame/packages/entity-list/index.js +20 -0
  837. package/src/frame/packages/entity-list-find/EntityListFind.vue +161 -0
  838. package/src/frame/packages/entity-list-find/index.js +8 -0
  839. package/src/frame/packages/entity-list-find-page/EntityListFindPage.vue +72 -0
  840. package/src/frame/packages/entity-list-find-page/index.js +8 -0
  841. package/src/frame/packages/entity-list-page/EntityListPage.vue +91 -0
  842. package/src/frame/packages/entity-list-page/index.js +8 -0
  843. package/src/frame/packages/entity-no-submit-sub-list/EntityNoSubmitSubList.vue +302 -0
  844. package/src/frame/packages/entity-no-submit-sub-list/index.js +8 -0
  845. package/src/frame/packages/entity-sub-grid/EntitySubGrid.vue +46 -0
  846. package/src/frame/packages/entity-sub-grid/EntitySubGridItem.vue +68 -0
  847. package/src/frame/packages/entity-sub-grid/index.js +13 -0
  848. package/src/frame/packages/entity-sub-list/EntitySubList.vue +418 -0
  849. package/src/frame/packages/entity-sub-list/index.js +8 -0
  850. package/src/frame/packages/entity-tree-find/EntitytTreeFind.vue +460 -0
  851. package/src/frame/packages/entity-tree-find/index.js +8 -0
  852. package/src/frame/packages/entity-tree-find-page/EntityTreeFindPage.vue +29 -0
  853. package/src/frame/packages/entity-tree-find-page/index.js +8 -0
  854. package/src/frame/packages/export/Export.vue +530 -0
  855. package/src/frame/packages/export/index.js +8 -0
  856. package/src/frame/packages/footer/Footer.vue +142 -0
  857. package/src/frame/packages/footer/index.js +3 -0
  858. package/src/frame/packages/form/Form.vue +611 -0
  859. package/src/frame/packages/form/index.js +8 -0
  860. package/src/frame/packages/form-item/CheckBox.vue +160 -0
  861. package/src/frame/packages/form-item/Color.vue +135 -0
  862. package/src/frame/packages/form-item/Date.vue +330 -0
  863. package/src/frame/packages/form-item/File.vue +712 -0
  864. package/src/frame/packages/form-item/FormItem.vue +464 -0
  865. package/src/frame/packages/form-item/Hidden.vue +55 -0
  866. package/src/frame/packages/form-item/Html.vue +291 -0
  867. package/src/frame/packages/form-item/Input.vue +320 -0
  868. package/src/frame/packages/form-item/Location.vue +313 -0
  869. package/src/frame/packages/form-item/Number.vue +217 -0
  870. package/src/frame/packages/form-item/Object.vue +1195 -0
  871. package/src/frame/packages/form-item/Password.vue +128 -0
  872. package/src/frame/packages/form-item/Photo.vue +362 -0
  873. package/src/frame/packages/form-item/Radio.vue +157 -0
  874. package/src/frame/packages/form-item/Rule.vue +989 -0
  875. package/src/frame/packages/form-item/Scope.vue +224 -0
  876. package/src/frame/packages/form-item/Select.vue +226 -0
  877. package/src/frame/packages/form-item/Signature.vue +242 -0
  878. package/src/frame/packages/form-item/Switch.vue +124 -0
  879. package/src/frame/packages/form-item/Tag.vue +216 -0
  880. package/src/frame/packages/form-item/Textarea.vue +279 -0
  881. package/src/frame/packages/form-item/index.js +45 -0
  882. package/src/frame/packages/grid/Grid.vue +70 -0
  883. package/src/frame/packages/grid/GridItem.vue +190 -0
  884. package/src/frame/packages/grid/index.js +13 -0
  885. package/src/frame/packages/header/Breadcrumb.vue +55 -0
  886. package/src/frame/packages/header/Header.vue +602 -0
  887. package/src/frame/packages/header/Preview.vue +252 -0
  888. package/src/frame/packages/header/index.js +16 -0
  889. package/src/frame/packages/icon/Icon.vue +47 -0
  890. package/src/frame/packages/icon/index.js +7 -0
  891. package/src/frame/packages/iframe/Iframe.vue +17 -0
  892. package/src/frame/packages/iframe/index.js +8 -0
  893. package/src/frame/packages/image/image.vue +23 -0
  894. package/src/frame/packages/import/Import.vue +832 -0
  895. package/src/frame/packages/import/index.js +8 -0
  896. package/src/frame/packages/layout/Column.vue +47 -0
  897. package/src/frame/packages/layout/ColumnPreview.vue +119 -0
  898. package/src/frame/packages/layout/Config.vue +114 -0
  899. package/src/frame/packages/layout/Layout.vue +62 -0
  900. package/src/frame/packages/layout/Preview.vue +111 -0
  901. package/src/frame/packages/layout/index.js +10 -0
  902. package/src/frame/packages/list/List.vue +426 -0
  903. package/src/frame/packages/list/index.js +8 -0
  904. package/src/frame/packages/list/visual/List.vue +349 -0
  905. package/src/frame/packages/load-page/LoadPage.vue +29 -0
  906. package/src/frame/packages/load-page/index.js +8 -0
  907. package/src/frame/packages/m-entity-add-page/MEntityAddPage.vue +100 -0
  908. package/src/frame/packages/m-entity-add-page/index.js +8 -0
  909. package/src/frame/packages/m-entity-list/MEntityList.vue +1083 -0
  910. package/src/frame/packages/m-entity-list/index.js +3 -0
  911. package/src/frame/packages/m-entity-list-find/MEntityListFind.vue +329 -0
  912. package/src/frame/packages/m-entity-list-find/Visual.vue +105 -0
  913. package/src/frame/packages/m-entity-list-find/index.js +3 -0
  914. package/src/frame/packages/m-entity-tree-find/MEntityTreeFind.vue +339 -0
  915. package/src/frame/packages/m-entity-tree-find/index.js +8 -0
  916. package/src/frame/packages/menu/Menu.vue +174 -0
  917. package/src/frame/packages/menu/MenuItem.vue +94 -0
  918. package/src/frame/packages/menu/index.js +16 -0
  919. package/src/frame/packages/menu-index/MenuIndex.vue +444 -0
  920. package/src/frame/packages/menu-index/index.js +8 -0
  921. package/src/frame/packages/mine/Mine.vue +404 -0
  922. package/src/frame/packages/module-index-page/ModuleIndexPage.vue +250 -0
  923. package/src/frame/packages/module-index-page/index.js +7 -0
  924. package/src/frame/packages/module-list/ModuleList.vue +222 -0
  925. package/src/frame/packages/module-list/index.js +8 -0
  926. package/src/frame/packages/module-list-page/ModuleListPage.vue +24 -0
  927. package/src/frame/packages/module-list-page/index.js +8 -0
  928. package/src/frame/packages/nav-add-form/NavAddForm.vue +626 -0
  929. package/src/frame/packages/nav-add-form/index.js +8 -0
  930. package/src/frame/packages/num/CardNum.vue +267 -0
  931. package/src/frame/packages/num/NumItem.vue +192 -0
  932. package/src/frame/packages/num/NumSubItem.vue +137 -0
  933. package/src/frame/packages/num/Statistic.vue +42 -0
  934. package/src/frame/packages/num/index.js +17 -0
  935. package/src/frame/packages/org-chart/OrgChart.vue +301 -0
  936. package/src/frame/packages/org-chart/index.js +8 -0
  937. package/src/frame/packages/page/Page.vue +322 -0
  938. package/src/frame/packages/page/index.js +8 -0
  939. package/src/frame/packages/page-help/PageHelp.vue +28 -0
  940. package/src/frame/packages/page-help/Preview.vue +35 -0
  941. package/src/frame/packages/page-help/index.js +8 -0
  942. package/src/frame/packages/page-tabs/PageTabs.vue +188 -0
  943. package/src/frame/packages/page-tabs/index.js +8 -0
  944. package/src/frame/packages/progress/Progress.vue +287 -0
  945. package/src/frame/packages/progress/ProgressItem.vue +39 -0
  946. package/src/frame/packages/progress/index.js +13 -0
  947. package/src/frame/packages/progress-chart/ProcessChart.vue +210 -0
  948. package/src/frame/packages/progress-chart/index.js +8 -0
  949. package/src/frame/packages/report-form-list/ReportFormList.vue +0 -0
  950. package/src/frame/packages/router-view/RouterView.vue +229 -0
  951. package/src/frame/packages/router-view/index.js +8 -0
  952. package/src/frame/packages/scope/Scope.vue +594 -0
  953. package/src/frame/packages/scope/ScopeDrawer.vue +201 -0
  954. package/src/frame/packages/scope/ScopeItem.vue +987 -0
  955. package/src/frame/packages/scope/index.js +15 -0
  956. package/src/frame/packages/search/Fields.vue +326 -0
  957. package/src/frame/packages/search/Filter.vue +473 -0
  958. package/src/frame/packages/search/Keyword.vue +106 -0
  959. package/src/frame/packages/search/Mobile.vue +314 -0
  960. package/src/frame/packages/search/Select.vue +238 -0
  961. package/src/frame/packages/search/index.js +22 -0
  962. package/src/frame/packages/step/Step.vue +149 -0
  963. package/src/frame/packages/step/index.js +8 -0
  964. package/src/frame/packages/step-item/StepItem.vue +126 -0
  965. package/src/frame/packages/step-item/index.js +8 -0
  966. package/src/frame/packages/tab-bar/Config.vue +11 -0
  967. package/src/frame/packages/tab-bar/TabBar.vue +25 -0
  968. package/src/frame/packages/tab-bar/index.js +3 -0
  969. package/src/frame/packages/text/Text.vue +25 -0
  970. package/src/frame/packages/text-editor/TextEditor.vue +22 -0
  971. package/src/frame/packages/title/Title.vue +21 -0
  972. package/src/frame/packages/title/index.js +8 -0
  973. package/src/frame/packages/visual-config-page/ComponentLibrary.vue +198 -0
  974. package/src/frame/packages/visual-config-page/ComponentList.vue +565 -0
  975. package/src/frame/packages/visual-config-page/ComponentPreview.vue +153 -0
  976. package/src/frame/packages/visual-config-page/ConfigOption.vue +16 -0
  977. package/src/frame/packages/visual-config-page/ConfigPanel.vue +576 -0
  978. package/src/frame/packages/visual-config-page/PagePreview.vue +53 -0
  979. package/src/frame/packages/visual-config-page/VisualConfigPage.vue +632 -0
  980. package/src/frame/packages/visual-config-page/index.js +24 -0
  981. package/src/frame/popup.js +31 -0
  982. package/src/frame/views/Add.vue +823 -0
  983. package/src/frame/views/App.vue +49 -0
  984. package/src/frame/views/AppRoleSelect.vue +272 -0
  985. package/src/frame/views/AppSubModule.vue +50 -0
  986. package/src/frame/views/BatchEdit.vue +206 -0
  987. package/src/frame/views/Bpmn.vue +553 -0
  988. package/src/frame/views/Container.vue +294 -0
  989. package/src/frame/views/DblogList.vue +348 -0
  990. package/src/frame/views/EntityCheckList.vue +164 -0
  991. package/src/frame/views/EntityCheckPage.vue +44 -0
  992. package/src/frame/views/EntityDetailPage.vue +75 -0
  993. package/src/frame/views/EntityEditApply.vue +136 -0
  994. package/src/frame/views/EntityEditPage.vue +13 -0
  995. package/src/frame/views/EntityFind.vue +135 -0
  996. package/src/frame/views/EntitySingleAdd.vue +31 -0
  997. package/src/frame/views/EntitySubListPage.vue +44 -0
  998. package/src/frame/views/EntityTreeFind.vue +188 -0
  999. package/src/frame/views/EntityTreePage.vue +37 -0
  1000. package/src/frame/views/EntityTreePageOld.vue +536 -0
  1001. package/src/frame/views/Error.vue +29 -0
  1002. package/src/frame/views/ExcelDesign.vue +1795 -0
  1003. package/src/frame/views/ExcelPreview.vue +173 -0
  1004. package/src/frame/views/ExportPage.vue +19 -0
  1005. package/src/frame/views/FormDesign.vue +1049 -0
  1006. package/src/frame/views/IconFontLibraryPage.vue +74 -0
  1007. package/src/frame/views/ImportPage.vue +19 -0
  1008. package/src/frame/views/List.vue +955 -0
  1009. package/src/frame/views/LocalLogin.vue +27 -0
  1010. package/src/frame/views/Login.vue +1059 -0
  1011. package/src/frame/views/MEntityListPage.vue +83 -0
  1012. package/src/frame/views/MEntitySubListPage.vue +44 -0
  1013. package/src/frame/views/MainModule.vue +83 -0
  1014. package/src/frame/views/MenuIndex.vue +444 -0
  1015. package/src/frame/views/MinePage.vue +18 -0
  1016. package/src/frame/views/Module.vue +203 -0
  1017. package/src/frame/views/ModuleIndex.vue +377 -0
  1018. package/src/frame/views/PageAttriTree.vue +419 -0
  1019. package/src/frame/views/PageAttributeTreePage.vue +424 -0
  1020. package/src/frame/views/PageConfig.vue +218 -0
  1021. package/src/frame/views/Permission.vue +695 -0
  1022. package/src/frame/views/PersonalInfo.vue +659 -0
  1023. package/src/frame/views/QyWechat.vue +69 -0
  1024. package/src/frame/views/ReportFormList.vue +146 -0
  1025. package/src/frame/views/ReportFormListPage.vue +91 -0
  1026. package/src/frame/views/RoleTreePage.vue +180 -0
  1027. package/src/frame/views/ServiceHelp.vue +177 -0
  1028. package/src/frame/views/SubModule.vue +67 -0
  1029. package/src/frame/views/SystemIndex.vue +105 -0
  1030. package/src/frame/views/SystemTabs.vue +87 -0
  1031. package/src/frame/views/TaskPage.vue +46 -0
  1032. package/src/frame/views/client/AddForm.vue +64 -0
  1033. package/src/frame/views/client/AppMarket.vue +345 -0
  1034. package/src/frame/views/client/ClientIndex.vue +261 -0
  1035. package/src/frame/views/client/ClientModuleIndexPage.vue +25 -0
  1036. package/src/frame/views/client/CopySystem.vue +179 -0
  1037. package/src/frame/views/client/CreateMethod.vue +133 -0
  1038. package/src/frame/views/client/Login.vue +234 -0
  1039. package/src/frame/views/client/OpenClientManage.vue +53 -0
  1040. package/src/frame/views/client/PageTabsCyclic.vue +121 -0
  1041. package/src/frame/views/client/SelfBuiltSystem.vue +272 -0
  1042. package/src/frame/views/client/StandardProduct.vue +325 -0
  1043. package/src/frame/views/client/SystemList.vue +160 -0
  1044. package/src/frame/views/client/SystemManager.vue +346 -0
  1045. package/src/frame/views/layout/CardList.vue +123 -0
  1046. package/src/frame/views/layout/Grid.vue +95 -0
  1047. package/src/frame/views/match/AddTargetField.vue +118 -0
  1048. package/src/frame/views/match/MatchAddFormItem.vue +34 -0
  1049. package/src/frame/views/match/conversion.vue +209 -0
  1050. package/src/frame/views/match/customize.vue +344 -0
  1051. package/src/frame/views/match/fieldMatch.vue +518 -0
  1052. package/src/frame/views/report/AddFormItem.vue +67 -0
  1053. package/src/frame/views/report/DesignReport.vue +1213 -0
  1054. package/src/frame/views/report/LookReport.vue +221 -0
  1055. package/src/frame/views/report/ReportAdd.vue +237 -0
  1056. package/src/frame/views/report/ReportFormList.vue +235 -0
  1057. package/src/frame/views/report/ReportList.vue +163 -0
  1058. package/src/frame/views/report/ReportTreeFind.vue +188 -0
  1059. package/src/frame/views/visual/Add.vue +1818 -0
  1060. package/src/frame/views/visual/AddForm.vue +228 -0
  1061. package/src/frame/views/visual/AddFormItem.vue +242 -0
  1062. package/src/frame/views/visual/AppIndex.vue +149 -0
  1063. package/src/frame/views/visual/ApplyForm.vue +142 -0
  1064. package/src/frame/views/visual/AttributeList.vue +329 -0
  1065. package/src/frame/views/visual/BasePage.vue +73 -0
  1066. package/src/frame/views/visual/Button.vue +119 -0
  1067. package/src/frame/views/visual/Card.vue +68 -0
  1068. package/src/frame/views/visual/CardNum.vue +74 -0
  1069. package/src/frame/views/visual/CategoryList.vue +566 -0
  1070. package/src/frame/views/visual/Chart.vue +53 -0
  1071. package/src/frame/views/visual/CheckForm.vue +106 -0
  1072. package/src/frame/views/visual/CheckHistory.vue +28 -0
  1073. package/src/frame/views/visual/ClientList.vue +42 -0
  1074. package/src/frame/views/visual/CodeManage.vue +128 -0
  1075. package/src/frame/views/visual/Component.vue +1142 -0
  1076. package/src/frame/views/visual/ComponentList.vue +288 -0
  1077. package/src/frame/views/visual/Config.vue +888 -0
  1078. package/src/frame/views/visual/ConfigItem.vue +218 -0
  1079. package/src/frame/views/visual/ConfigSelectItems.vue +521 -0
  1080. package/src/frame/views/visual/CreatePage.vue +397 -0
  1081. package/src/frame/views/visual/DblogList.vue +137 -0
  1082. package/src/frame/views/visual/EntityAddPage.vue +52 -0
  1083. package/src/frame/views/visual/EntityApplyPage.vue +57 -0
  1084. package/src/frame/views/visual/EntityCheckPage.vue +69 -0
  1085. package/src/frame/views/visual/EntityFindPage.vue +55 -0
  1086. package/src/frame/views/visual/EntityList.vue +442 -0
  1087. package/src/frame/views/visual/EntityListPage.vue +97 -0
  1088. package/src/frame/views/visual/EntityNoSubmitSubList.vue +252 -0
  1089. package/src/frame/views/visual/EntityRightSubList.vue +32 -0
  1090. package/src/frame/views/visual/EntitySubAdd.vue +11 -0
  1091. package/src/frame/views/visual/EntitySubGrid.vue +39 -0
  1092. package/src/frame/views/visual/EntitySubGridItem.vue +96 -0
  1093. package/src/frame/views/visual/EntitySubList.vue +298 -0
  1094. package/src/frame/views/visual/EntityTreeFindPage.vue +36 -0
  1095. package/src/frame/views/visual/EntityTreeManage.vue +144 -0
  1096. package/src/frame/views/visual/EntityTreePage.vue +46 -0
  1097. package/src/frame/views/visual/Grid.vue +46 -0
  1098. package/src/frame/views/visual/GridItem.vue +41 -0
  1099. package/src/frame/views/visual/HeaderNew.vue +326 -0
  1100. package/src/frame/views/visual/Iframe.vue +32 -0
  1101. package/src/frame/views/visual/Image.vue +49 -0
  1102. package/src/frame/views/visual/Import.vue +59 -0
  1103. package/src/frame/views/visual/InterfaceSubList.vue +23 -0
  1104. package/src/frame/views/visual/Layout.vue +0 -0
  1105. package/src/frame/views/visual/ListFirst.vue +613 -0
  1106. package/src/frame/views/visual/LoadPage.vue +42 -0
  1107. package/src/frame/views/visual/MEntityAddPage.vue +71 -0
  1108. package/src/frame/views/visual/MEntityList.vue +472 -0
  1109. package/src/frame/views/visual/MEntityListPage.vue +46 -0
  1110. package/src/frame/views/visual/MEntitySubList.vue +237 -0
  1111. package/src/frame/views/visual/MetaList.vue +23 -0
  1112. package/src/frame/views/visual/Mine.vue +37 -0
  1113. package/src/frame/views/visual/ModuleIndexPage.vue +68 -0
  1114. package/src/frame/views/visual/ModuleList.vue +44 -0
  1115. package/src/frame/views/visual/NavAddForm.vue +144 -0
  1116. package/src/frame/views/visual/NavFormCatalogItem.vue +21 -0
  1117. package/src/frame/views/visual/NumItem.vue +69 -0
  1118. package/src/frame/views/visual/NumStatistic.vue +85 -0
  1119. package/src/frame/views/visual/NumSubItem.vue +63 -0
  1120. package/src/frame/views/visual/OrgChart.vue +121 -0
  1121. package/src/frame/views/visual/PageCatalog.vue +26 -0
  1122. package/src/frame/views/visual/PageConfig.vue +278 -0
  1123. package/src/frame/views/visual/PageTabs.vue +54 -0
  1124. package/src/frame/views/visual/ProcessChart.vue +24 -0
  1125. package/src/frame/views/visual/Progress.vue +39 -0
  1126. package/src/frame/views/visual/ProgressItem.vue +43 -0
  1127. package/src/frame/views/visual/Text.vue +36 -0
  1128. package/src/frame/views/visual/TextEditor.vue +36 -0
  1129. package/src/frame/views/visual/Title.vue +44 -0
  1130. package/src/frame/views/visual/TodoList.vue +18 -0
  1131. package/src/frame/views/visual/TreeFind.vue +39 -0
  1132. package/src/frame/views/visual/UserFormItem.vue +50 -0
  1133. package/src/frame/views/visual/UserManage.vue +36 -0
  1134. package/src/frame/views/visual/chart/CircularPie.vue +7 -0
  1135. package/src/frame/views/visual/chart/Column.vue +73 -0
  1136. package/src/frame/views/visual/chart/HoriColumn.vue +7 -0
  1137. package/src/frame/views/visual/chart/Line.vue +7 -0
  1138. package/src/frame/views/visual/chart/Pie.vue +7 -0
  1139. package/src/frame/views/visual/config/Chart.vue +136 -0
  1140. package/src/frame/views/visual/config/Color.vue +39 -0
  1141. package/src/frame/views/visual/config/DesignReport.vue +20 -0
  1142. package/src/frame/views/visual/config/Event.vue +218 -0
  1143. package/src/frame/views/visual/config/Field.vue +494 -0
  1144. package/src/frame/views/visual/config/Html.vue +26 -0
  1145. package/src/frame/views/visual/config/Image.vue +118 -0
  1146. package/src/frame/views/visual/config/Input.vue +52 -0
  1147. package/src/frame/views/visual/config/List.vue +63 -0
  1148. package/src/frame/views/visual/config/ListField.vue +1229 -0
  1149. package/src/frame/views/visual/config/MField.vue +594 -0
  1150. package/src/frame/views/visual/config/Number.vue +36 -0
  1151. package/src/frame/views/visual/config/Object.vue +106 -0
  1152. package/src/frame/views/visual/config/Operate.vue +1657 -0
  1153. package/src/frame/views/visual/config/OrderField.vue +507 -0
  1154. package/src/frame/views/visual/config/Page.vue +44 -0
  1155. package/src/frame/views/visual/config/Params.vue +104 -0
  1156. package/src/frame/views/visual/config/Radio.vue +54 -0
  1157. package/src/frame/views/visual/config/Row.vue +64 -0
  1158. package/src/frame/views/visual/config/Scope.vue +314 -0
  1159. package/src/frame/views/visual/config/Select.vue +54 -0
  1160. package/src/frame/views/visual/config/Switch.vue +36 -0
  1161. package/src/frame/views/visual/config/Textarea.vue +38 -0
  1162. package/src/frame/views/visual/config/Tree.vue +111 -0
  1163. package/src/frame/views/visual/search/Fields.vue +52 -0
  1164. package/src/frame/views/visual/search/Filter.vue +50 -0
  1165. package/src/frame/views/visual/search/Mobile.vue +54 -0
  1166. package/src/frame/views/visual/step/Index.vue +11 -0
  1167. package/src/frame/views/visual/step/Item.vue +157 -0
  1168. package/src/index.js +369 -0
  1169. package/src/main.js +54 -0
  1170. package/src/plugins/element.js +167 -0
  1171. package/src/plugins/frame.js +12 -0
  1172. package/src/plugins/i18n.js +51 -0
  1173. package/src/plugins/index.js +11 -0
  1174. package/src/plugins/oa.js +3 -0
  1175. package/src/plugins/vant.js +80 -0
  1176. package/src/product/oa/components/AddForm.vue +87 -0
  1177. package/src/product/oa/components/MeetingAddForm.vue +85 -0
  1178. package/src/product/oa/components/MeetingExport.vue +422 -0
  1179. package/src/product/oa/components/MeetingRoomUse.vue +371 -0
  1180. package/src/product/oa/index.js +31 -0
  1181. package/src/registerServiceWorker.js +32 -0
  1182. package/src/router/config.js +416 -0
  1183. package/src/router/index.js +26 -0
  1184. package/src/store/actions.js +46 -0
  1185. package/src/store/export.js +23 -0
  1186. package/src/store/index.js +17 -0
  1187. package/src/store/modules/config.js +201 -0
  1188. package/src/store/modules/file.js +32 -0
  1189. package/src/store/modules/index.js +9 -0
  1190. package/src/store/modules/list.js +130 -0
  1191. package/src/store/modules/meta.js +210 -0
  1192. package/src/store/modules/page.js +75 -0
  1193. package/src/store/modules/router.js +140 -0
  1194. package/src/store/modules/tabs.js +62 -0
  1195. package/src/store/modules/user.js +71 -0
  1196. package/src/styles/index.scss +143 -0
  1197. package/src/styles/theme/element.scss +240 -0
  1198. package/src/styles/theme/utils/config.scss +4 -0
  1199. package/src/styles/theme/utils/function.scss +44 -0
  1200. package/src/styles/theme/utils/mixins.scss +317 -0
  1201. package/src/styles/theme/utils/var.scss +112 -0
  1202. package/src/utils/Config.js +25 -0
  1203. package/src/utils/axios.js +121 -0
  1204. package/src/utils/chartTheme.js +471 -0
  1205. package/src/utils/directives/global.js +127 -0
  1206. package/src/utils/fieldFactory.js +147 -0
  1207. package/src/utils/index.js +21 -0
  1208. package/src/utils/loadComponent.js +39 -0
  1209. package/src/utils/meta.js +355 -0
  1210. package/src/utils/mixins/component.js +368 -0
  1211. package/src/utils/mixins/global.js +985 -0
  1212. package/src/utils/mixins/index.js +11 -0
  1213. package/src/utils/page.js +126 -0
  1214. package/src/utils/util.js +381 -0
  1215. package/src/vant-variables.less +1 -0
  1216. package/src/vue.bus.js +18 -0
  1217. package/start-code-dev.sh +24 -0
  1218. package/start-code-pgy.sh +25 -0
  1219. package/start-code-ppe.sh +23 -0
  1220. package/start-code-prd.sh +25 -0
  1221. package/start-code-pre.sh +25 -0
  1222. package/vue.config.js +101 -0
  1223. package/webpack.config.js +97 -0
@@ -0,0 +1,2783 @@
1
+ <template>
2
+ <div class="container" ref="container" :style="$component.style">
3
+ <div class="report-header">
4
+ <div class="report-title">
5
+ <i class="report-back el-icon-arrow-left" @click="backPage"></i>
6
+ <span class="report-name">
7
+ <span v-if="!editName">{{reportInfo.NAME}}</span>
8
+ <el-input v-else v-model="reportInfo.NAME" size="small" @change="setReportName"></el-input>
9
+ <i v-if="!editName" class="el-icon-edit-outline" @click="editName=!editName"></i>
10
+ <i v-else class="el-icon-circle-check" @click="setReportName"></i>
11
+ </span>
12
+ <!-- <el-button type="text" icon="el-icon-setting">设置</el-button> -->
13
+ </div>
14
+ <div class="report-operate">
15
+ <el-button type="text" @click="globalSetting=true">全局设置</el-button>
16
+ <el-button size="medium" @click="exportReport" :loading="exportLoading">{{exportLoading? '正在导出,请稍后...' : '导出'}}</el-button>
17
+ <el-button size="medium" type="primary" @click="previewChart=!previewChart">预览</el-button>
18
+ </div>
19
+ </div>
20
+
21
+ <div class="report-bar">
22
+ <span class="report-bar__item">
23
+ 统计对象:{{reportInfo['OBJECT#']}}
24
+ </span>
25
+ <span class="report-bar__item" v-if="reportInfo['OBJECT_VIEW#']">
26
+ 统计对象视图:{{reportInfo['OBJECT_VIEW#']}}
27
+ </span>
28
+ <span class="report-bar__item">
29
+ 报表类型:
30
+ <el-popover
31
+ placement="top-start"
32
+ title=""
33
+ width="280"
34
+ trigger="click"
35
+ >
36
+ <ul class="report-type__list">
37
+ <li :class="{'report-type__item': true, active: reportInfo.TYPE===reportType.type && reportInfo.CHART_TYPE===reportType.chartType}" v-for="reportType in reportTypeList" :key="reportType.chartType" @click="setReportType(reportType)">
38
+ <i :class="reportType.icon"></i>
39
+ <span>{{reportType.text}}</span>
40
+ </li>
41
+ </ul>
42
+ <el-input class="reprot-bar__type" slot="reference" prefix-icon="el-icon-date" suffix-icon="el-icon-arrow-down" size="small" :value="reportInfo.TYPE==='1'? '统计表': reportInfo['CHART_TYPE#']" readonly></el-input>
43
+ </el-popover>
44
+ </span>
45
+ <span class="report-bar__item">
46
+ 统计范围:
47
+ <span class="report-scope__text" :title="scopeText">{{scopeText}}</span>
48
+ <el-button type="text" @click="filterDrawer=!filterDrawer">设置</el-button>
49
+ <epx-scope-drawer :visible.sync="filterDrawer" v-model="scopeParams" ref="filterDrawer" :modeType="['FIXED_VALUE', 'SYSTEM_VARIABLE', 'DYNAMIC_VALUE', 'DEFINED']" :metaId="reportInfo.OBJECT" />
50
+ </span>
51
+ </div>
52
+ <div class="report-design">
53
+ <div class="report-left-container" >
54
+ <i class="report-left__foldicon el-icon-s-unfold" v-show="foldFieldContainer" @click="foldFieldContainer=false"></i>
55
+ <div :class="['report-left__inner', { 'report-left__inner--fold': foldFieldContainer }]">
56
+ <div class="report-field">
57
+ <div class="report-field__title">
58
+ <span>字段</span>
59
+ <i class="report-left__foldicon el-icon-s-fold" @click="foldFieldContainer=true"></i>
60
+ </div>
61
+ <div class="report-field__container">
62
+ <el-button-group class="field-tab">
63
+ <el-button :type="showFieldType==='entity'? 'primary': 'default'" size="small" @click="showFieldType='entity'">对象字段</el-button>
64
+ <el-button :type="showFieldType==='custom'? 'primary': 'default'" size="small" @click="showFieldType='custom'">自定义字段</el-button>
65
+ </el-button-group>
66
+ <template v-if="showFieldType==='entity'">
67
+ <div class="report-entity-field" v-if="reportStatisFields.entityFields">
68
+ <ul class="report-field__list">
69
+ <li :class="['report-field__item', {'report-field__item--meta': field.linkFlag }]" v-for="field in reportStatisFields.entityFields" :key="field.id" @dragstart="dragstart(field)" :draggable="!field.linkFlag? 'true' : 'false'">
70
+ <p class="report-field__name">
71
+ <i :class="['report-field__foldicon', {'report-field__foldicon--open':openField[field.code] },'el-icon-caret-right']" v-if="field.children && field.children.length>0" @click="$set(openField, field.code, !openField[field.code])"></i>
72
+ <span :title="field.text">{{field.text}}</span>
73
+ <i class="report-field__handler el-icon-rank"></i>
74
+ </p>
75
+ <ul class="report-field__list" v-show="openField[field.code]" v-if="field.children && field.children.length>0">
76
+ <li class="report-field__item report-field__subitem" v-for="child in field.children" :key="child.id" @dragstart.stop="dragstart(child)" draggable="true">
77
+ <p class="report-field__name">
78
+ <i :class="['report-field__foldicon', {'report-field__foldicon--open':openField[child.code] },'el-icon-caret-right']" v-if="child.children && child.children.length>0" @click="$set(openField, child.code, !openField[child.code])"></i>
79
+ <span :title="child.text">{{child.text}}</span>
80
+ <i class="report-field__handler el-icon-rank"></i>
81
+ </p>
82
+ <ul class="report-field__list" v-show="openField[child.code]" v-if="child.children && child.children.length>0">
83
+ <li class="report-field__item report-field__subchild" v-for="subChild in child.children" :key="subChild.id" @dragstart.stop="dragstart(subChild)" draggable="true">
84
+ <p class="report-field__name">
85
+ <span :title="subChild.text">{{subChild.text}}</span>
86
+ <i class="report-field__handler el-icon-rank"></i>
87
+ </p>
88
+ </li>
89
+ </ul>
90
+ </li>
91
+ </ul>
92
+ </li>
93
+ </ul>
94
+ <!-- </draggable> -->
95
+ </div>
96
+ </template>
97
+ <template v-else>
98
+ <div class="report-custom-field">
99
+ <ul class="report-field__list">
100
+ <li class="report-field__item" v-for="field in reportStatisFields.customFields" :key="field.id" @dragstart="dragstart(field, 'custom')" draggable="true">
101
+ <p class="report-field__name">
102
+ <span :title="field.text">{{field.text }}</span>
103
+ <span class="report-stat__operate">
104
+ <el-button type="text" icon="el-icon-edit" @click="editCustomField(field)"></el-button>
105
+ <el-popconfirm
106
+ title="确认删除?"
107
+ @confirm="deleteCustomField(field)"
108
+ >
109
+ <el-button class="delete-icon" slot="reference" type="text" icon="el-icon-delete"></el-button>
110
+ </el-popconfirm>
111
+ </span>
112
+ </p>
113
+
114
+ </li>
115
+ </ul>
116
+ <div class="report-field__operate">
117
+ <el-button type="text" @click="addFieldDialog=true; addFieldForm={}">添加自定义字段</el-button>
118
+ </div>
119
+ </div>
120
+ </template>
121
+ </div>
122
+ </div>
123
+ <div class="report-index">
124
+ <div class="report-field__title">
125
+ <span>指标</span>
126
+ </div>
127
+ <div class="report-index__content">
128
+ <template v-if="reportStatisFields.statisIndexFields">
129
+ <draggable
130
+ tag="ul"
131
+ class="report-field__list"
132
+ :list="reportStatisFields.statisIndexFields"
133
+ :sort="false"
134
+ :group="{ name: 'stat', pull: 'clone', put: false }"
135
+ :clone="el=>cloneField(el, '1')"
136
+ filter=".report-field__item--meta"
137
+ >
138
+ <li :class="['report-field__item', { 'report-field__item--meta': field.linkFlag }]" v-for="field in reportStatisFields.statisIndexFields" :key="field.id" >
139
+ <p class="report-field__name">
140
+ <i :class="['report-field__foldicon', {'report-field__foldicon--open':openIndexField[field.code] },'el-icon-caret-right']" v-if="field.children && field.children.length>0" @click="$set(openIndexField, field.code, !openIndexField[field.code])"></i>
141
+ <span :title="field.text">{{field.text}}</span>
142
+ <i class="report-field__handler el-icon-rank"></i>
143
+ </p>
144
+ <draggable
145
+ tag="ul"
146
+ class="report-field__list"
147
+ :list="field.children"
148
+ :sort="false"
149
+ :group="{ name: 'stat', pull: 'clone', put: false }"
150
+ :clone="el=>cloneField(el, '1')"
151
+ v-show="openIndexField[field.code]"
152
+ >
153
+ <li :class="['report-field__item', 'report-field__subitem']" v-for="child in field.children" :key="child.id" >
154
+ <p class="report-field__name">
155
+ <i :class="['report-field__foldicon', {'report-field__foldicon--open':openIndexField[child.code] },'el-icon-caret-right']" v-if="child.children && child.children.length>0" @click="$set(openIndexField, child.code, !openIndexField[child.code])"></i>
156
+ <span :title="child.text">{{child.text}}</span>
157
+ <i class="report-field__handler el-icon-rank"></i>
158
+ </p>
159
+ <draggable
160
+ tag="ul"
161
+ class="report-field__list"
162
+ :list="child.children"
163
+ :sort="false"
164
+ :group="{ name: 'stat', pull: 'clone', put: false }"
165
+ :clone="el=>cloneField(el, '1')"
166
+ v-show="openIndexField[child.code]"
167
+ >
168
+ <li :class="['report-field__item', 'report-field__subchild']" v-for="subChild in child.children" :key="subChild.id" >
169
+ <p class="report-field__name">
170
+ <span :title="subChild.text">{{subChild.text}}</span>
171
+ <i class="report-field__handler el-icon-rank"></i>
172
+ </p>
173
+ </li>
174
+ </draggable>
175
+ </li>
176
+ </draggable>
177
+ </li>
178
+ </draggable>
179
+ </template>
180
+ </div>
181
+ </div>
182
+ </div>
183
+ </div>
184
+ <div class="report-stat">
185
+ <div class="report-stat-container">
186
+ <div class="report-stat__title">
187
+ <span>横轴统计维度</span>
188
+ <el-button type="text" @click="showAddOptionDialog('1')">+ 添加统计项</el-button>
189
+ </div>
190
+ <div class="report-stat__content" ref="rowStat" v-if="rowList" @dragover="ev=>allowDrop(ev, '1')" @drop="ev=>drop(ev, '1')">
191
+ <epx-report-stat-list
192
+ v-model="rowList"
193
+ position="1"
194
+ :dropType="dropType"
195
+ :reportId="$query.id"
196
+ :dropElementId="dropElementId"
197
+ @change="refreshData"
198
+ @dragstart="dragStatItem"
199
+ @add="addStatItem" @edit="editStatItem" @delete="deleteStatItem" />
200
+ <div class="drop-indicator" @dragover.stop :style="{display: dropPosition && dropType==='1'? 'block': 'none' ,top: dropPosition + 'px' }"></div>
201
+ <div class="stat-null-data" v-if="rowList.length===0">
202
+ <i class="epx-icon-color-kong"></i>
203
+ <p>您可以从左侧列表拖拽所需的统计字段, 也可以手动添加统计项</p>
204
+ </div>
205
+ </div>
206
+ </div>
207
+ <div class="report-stat-container" v-if="reportInfo.CHART_TYPE!=='pie' && reportInfo.CHART_TYPE!=='circularPie' && reportInfo.CHART_TYPE!=='funnel'">
208
+ <div class="report-stat__title" >
209
+ <span>纵轴统计维度</span>
210
+ <el-button type="text" @click="showAddOptionDialog('2')">+ 添加统计项</el-button>
211
+ </div>
212
+ <div class="report-stat__content" ref="columnStat" v-if="columnList" @dragover="e=>allowDrop(e, '2')" @drop="e=>drop(e, '2')">
213
+ <epx-report-stat-list
214
+ v-model="columnList"
215
+ :dropElementId="dropElementId"
216
+ position="2"
217
+ :dropType="dropType"
218
+ @dragstart="dragStatItem"
219
+ :reportId="$query.id"
220
+ @change="refreshData"
221
+ @add="addStatItem"
222
+ @edit="editStatItem"
223
+ @delete="deleteStatItem"
224
+ />
225
+ <div class="stat-null-data" v-if="columnList.length===0">
226
+ <i class="epx-icon-color-kong"></i>
227
+ <p>您可以从左侧列表拖拽所需的统计字段, 也可以手动添加统计项</p>
228
+ </div>
229
+ <div class="drop-indicator" :style="{display: dropPosition && dropType==='2'? 'block': 'none' ,top: dropPosition + 'px' }"></div>
230
+ </div>
231
+ </div>
232
+ <div class="report-stat-container report-stat-index">
233
+ <div class="report-stat__title">
234
+ <span>统计指标</span>
235
+ <el-button type="text" @click="openAddStatIndexDialog">+ 添加指标</el-button>
236
+ </div>
237
+ <div class="report-stat__content">
238
+ <draggable
239
+ tag="ul"
240
+ class="report-stat__list"
241
+ :list="statisIndexList"
242
+ :group="{ name: 'stat', pull: false }"
243
+ @change="changeStatIndex"
244
+ >
245
+ <li :class="['report-stat__item']" v-for="index in statisIndexList" :key="index.ID">
246
+ <p class="report-stat__name">
247
+ <span class="report-stat__text" :title="index.NAME || index.INDEX_NAME">{{index.NAME || index.INDEX_NAME}}</span>
248
+ <span class="report-stat__operate">
249
+ <el-button type="text" icon="el-icon-edit" @click="editStatIndex(index)"></el-button>
250
+ <el-popconfirm
251
+ title="确认删除?"
252
+ @confirm="deleteStatIndex(index)"
253
+ >
254
+ <el-button class="delete-icon" slot="reference" type="text" icon="el-icon-delete"></el-button>
255
+ </el-popconfirm>
256
+ </span>
257
+ </p>
258
+ </li>
259
+ </draggable>
260
+ </div>
261
+ </div>
262
+ </div>
263
+ <div class="report-view">
264
+ <div class="null-data" v-if="rowList && columnList && rowList.length===0 && columnList.length===0 && statisIndexList.length===0">
265
+ <i class="epx-icon-color-kong"></i>
266
+ <span>请先设置统计维度</span>
267
+ </div>
268
+ <template v-else-if="chartComponent">
269
+ <!-- 统计图配置 -->
270
+ <epx-report-config :report="reportInfo" @change="refreshChart"></epx-report-config>
271
+ <div class="report-view__chart" v-if="showChart">
272
+ <epx-page @refreshData="refreshData" @update="v=>updateCondition(v)" :designMode="true" :metaId="$metaId" :inline="true" :component="chartComponent" :init-config='chartConfig'></epx-page>
273
+ </div>
274
+ </template>
275
+ </div>
276
+ </div>
277
+ <!-- 全局设置 -->
278
+ <el-drawer
279
+ title="全局设置"
280
+ width="380px"
281
+ :visible.sync="globalSetting"
282
+ :append-to-body="true"
283
+ :modal-append-to-body="false"
284
+ direction="rtl"
285
+ >
286
+ <div class="attribute-pane__content" v-if="globalSetting">
287
+ <epx-table-form class="form-content" ref="form" :fieldsConfigs="fieldsConfigs" v-model="formData" :column="1" label-align="left"></epx-table-form>
288
+ <div :style="{textAlign: 'center'}">
289
+ <el-button size="medium" @click="globalSetting=false">取消</el-button>
290
+ <el-button type="primary" size="medium" @click="updateForm">保存</el-button>
291
+ </div>
292
+ </div>
293
+ </el-drawer>
294
+ <!-- 预览 -->
295
+ <el-dialog
296
+ title="报表预览"
297
+ :visible.sync="previewChart"
298
+ :append-to-body="true"
299
+ width="80%"
300
+ >
301
+ <epx-page v-if="chartComponent && showChart" @refreshData="refreshData" @update="v=>updateCondition(v)" :designMode="true" :metaId="$metaId" :inline="true" :component="chartComponent" :init-config='chartConfig'></epx-page>
302
+ </el-dialog>
303
+ <!-- 统计字段编辑 -->
304
+ <el-dialog
305
+ class="custom-dialog"
306
+ title="统计字段设置"
307
+ :visible.sync="editEntityFieldDialog"
308
+ :append-to-body="true"
309
+ destroy-on-close
310
+ width="560px"
311
+ >
312
+ <div class="custom-dialog__content" v-if="editEntityFieldDialog">
313
+ <el-tabs v-model="statFieldTabs" :class="{'hide-tabs': editFieldForm.POSITION!=='2' }">
314
+ <el-tab-pane label="统计字段" name="stat">
315
+ <div class="add-field-item">
316
+ <label for="">统计字段:</label>
317
+ <div class="add-field-input">
318
+ <span>{{editFieldForm['STA_FIELD#']}}</span>
319
+ </div>
320
+ </div>
321
+ <div class="add-field-item" v-if="reportInfo.TYPE==='1'">
322
+ <label for="">是否合计项:</label>
323
+ <div class="add-field-input">
324
+ <el-switch
325
+ v-model="editFieldForm.TOTAL_ITEM_FLAG"
326
+ active-value="1"
327
+ inactive-value="0"
328
+ >
329
+ </el-switch>
330
+ </div>
331
+ </div>
332
+ <template v-if="editFieldForm.INDEX_FLAG==='1'">
333
+ <div class="add-field-item" >
334
+ <label class="is-required" for="">标题:</label>
335
+ <div class="add-field-input">
336
+ <el-input size="small" v-model="editFieldForm.NAME"></el-input>
337
+ </div>
338
+ </div>
339
+ <div class="add-field-item" >
340
+ <label for="">计算方式:</label>
341
+ <div class="add-field-input">
342
+ <epx-radio v-model="editFieldForm.MODE" :fieldConfigs="{codeKey: 'FM_REPORT_TIME_MODE', state: 'EDIT'}"></epx-radio>
343
+ </div>
344
+ </div>
345
+ </template>
346
+ <template v-else-if="statField">
347
+ <div class="add-field-item" v-if="statField.dataType==='object' || statField.dataType==='user' || statField.dataType==='dept'">
348
+ <label for="">排序方式:</label>
349
+ <div class="add-field-input add-field-input__flex">
350
+ <el-select class="add-field__order" v-model="editFieldForm.ORDER_FIELD" size="small">
351
+ <el-option v-for="item in getMetaFields(statField.relatedEntity)" :key="item.attriName" :label="item.attriLabel" :value="item.attriName"></el-option>
352
+ </el-select>
353
+ <el-select class="add-field__order" v-model="editFieldForm.SORT" size="small" :style="{width: '100px'}">
354
+ <el-option label="升序" value="ASC"></el-option>
355
+ <el-option label="逆序" value="DESC"></el-option>
356
+ </el-select>
357
+ </div>
358
+ </div>
359
+ <div class="add-field-item" v-if="statField.dataType==='object' || statField.dataType==='user' || statField.dataType==='dept'">
360
+ <label for="">对象范围:</label>
361
+ <div class="add-field-input add-field-input__flex">
362
+ <epx-form-scope v-model="editFieldForm.OBJECT_FIELD_SCOPE" :metaId="statField.relatedEntity" :fieldConfigs="{attriName: statField.code, attriLabel: statField.text, state: 'EDIT'}"></epx-form-scope>
363
+ </div>
364
+ </div>
365
+ <div class="add-field-item" v-else-if="statField.dataType==='date'">
366
+ <label for="">分组方式:</label>
367
+ <div class="add-field-input">
368
+ <epx-radio v-model="editFieldForm.DATE_GROUP_TYPE" :fieldConfigs="{codeKey: 'DATE_GROUP_TYPE', state: 'EDIT'}"></epx-radio>
369
+ </div>
370
+ </div>
371
+ <template v-else-if="statField.dataType==='list' && statField.optionType==='treeList'">
372
+ <div class="add-field-item" >
373
+ <label for="">统计层级:</label>
374
+ <epx-radio v-model="editFieldForm.STATIS_FIELD_LEVEL" :fieldConfigs="{codeKey: 'STATIS_FIELD_LEVEL', state: 'EDIT'}" @change="statFieldTreeOptionSelectAll = false; $nextTick(()=>statFieldTreeOptionSelectAll = true)"></epx-radio>
375
+ </div>
376
+ <div class="add-field-item" >
377
+ <label for="">统计选项:</label>
378
+ <div class="add-field-input">
379
+ <el-checkbox class="add-field__checkall" v-model="statFieldTreeOptionSelectAll" >全选</el-checkbox>
380
+ <el-tree v-if="editFieldForm.STATIS_FIELD_LEVEL==='all'" ref="fieldOptionTree" node-key="id" class="option-tree" :data="getTreeCodeById(statField.codeKey)" :check-strictly="true" @check-change="checkChange" show-checkbox :props="{label: 'name',children: 'children'}">
381
+ </el-tree>
382
+ <el-checkbox-group v-else class="add-field__checkgroup" v-model="editFieldForm.STATIS_CUSTOM_OPTIONS">
383
+ <el-checkbox v-for="option in statFieldTreeOptions" node-key="id" :label="option.id" :key="option.id">{{option.name}}</el-checkbox>
384
+ </el-checkbox-group>
385
+ </div>
386
+ </div>
387
+ </template>
388
+ <div class="add-field-item" v-else-if="statField.dataType==='list'">
389
+ <label for="">统计选项:</label>
390
+ <div class="add-field-input">
391
+ <el-checkbox class="add-field__checkall" v-model="statFieldOptionSelectAll" >全选</el-checkbox>
392
+ <el-checkbox-group class="add-field__checkgroup" v-model="editFieldForm.STATIS_CUSTOM_OPTIONS" >
393
+ <el-checkbox v-for="option in statFieldOptions" :label="option.id" :key="option.id">{{option.name}}</el-checkbox>
394
+ </el-checkbox-group>
395
+ </div>
396
+ </div>
397
+ </template>
398
+ </el-tab-pane>
399
+ <el-tab-pane label="统计指标" name="index">
400
+ <div class="add-field-item">
401
+ <label for="">指标类别:</label>
402
+ <div class="add-field-input">
403
+ <el-radio-group v-model="editFieldForm.STA_INDEX_TYPE">
404
+ <el-radio label="default">默认</el-radio>
405
+ <el-radio label="field">指标字段</el-radio>
406
+ <el-radio label="custom">自定义</el-radio>
407
+ </el-radio-group>
408
+ </div>
409
+ </div>
410
+ <template v-if="editFieldForm.STA_INDEX_TYPE==='field'">
411
+ <div class="add-field-item">
412
+ <label for="">指标字段:</label>
413
+ <div class="add-field-input">
414
+ <el-popover
415
+ trigger="click"
416
+ placement="bottom"
417
+ width="160"
418
+ >
419
+ <el-input
420
+ size="small"
421
+ slot="reference"
422
+ placeholder="请输入内容"
423
+ suffix-icon="el-icon-search"
424
+ :value="getLabel(editFieldForm.STA_INDEX_FIELD, reportStatisFields.statisIndexFields)"
425
+ >
426
+ </el-input>
427
+ <el-tree class="field-tree" :data="reportStatisFields.statisIndexFields" :props="{label: 'text',value: 'id'}" @node-click="node=>{$set(editFieldForm,'STA_INDEX_FIELD', node.id); $set(editFieldForm,'STA_INDEX_FIELD_CODE', node.code)}"></el-tree>
428
+ </el-popover>
429
+ </div>
430
+ </div>
431
+ <div class="add-field-item" >
432
+ <label class="add-field-item__label is-required" for="">计算方式:</label>
433
+ <div class="add-field-input">
434
+ <epx-radio v-model="editFieldForm.MODE" :fieldConfigs="{codeKey: 'FM_REPORT_TIME_MODE', state: 'EDIT'}"></epx-radio>
435
+ </div>
436
+ </div>
437
+ </template>
438
+ </el-tab-pane>
439
+ </el-tabs>
440
+ </div>
441
+ <div slot="footer" class="dialog-footer">
442
+ <el-button @click.stop="editEntityFieldDialog = false">取 消</el-button>
443
+ <el-button type="primary" @click="saveEntityField">保 存</el-button>
444
+ </div>
445
+ </el-dialog>
446
+ <!-- 统计指标编辑 -->
447
+ <el-dialog
448
+ class="custom-dialog"
449
+ title="统计指标"
450
+ :visible.sync="editStatIndexDialog"
451
+ :append-to-body="true"
452
+ destroy-on-close
453
+ width="560px"
454
+ >
455
+ <div class="custom-dialog__content">
456
+ <div class="add-field-item" >
457
+ <label class="add-field-item__label is-required" for="">指标标题:</label>
458
+ <div class="add-field-input">
459
+ <el-input size="small" v-model="editStatIndexForm.INDEX_NAME"></el-input>
460
+ </div>
461
+ </div>
462
+ <!-- <div class="add-field-item">
463
+ <label for="">指标类别:</label>
464
+ <div class="add-field-input">
465
+ <epx-radio v-model="editStatIndexForm.INDEX_TYPE" :fieldConfigs="{codeKey: 'STATIS_INDEX_TYPE', state: 'EDIT'}"></epx-radio>
466
+ </div>
467
+ </div> -->
468
+ <template v-if="editStatIndexForm.INDEX_TYPE==='field'">
469
+ <div class="add-field-item">
470
+ <label for="">指标字段:</label>
471
+ <div class="add-field-input">
472
+ <el-popover
473
+ trigger="click"
474
+ placement="bottom"
475
+ width="160"
476
+ >
477
+ <el-input
478
+ size="small"
479
+ slot="reference"
480
+ placeholder="请输入内容"
481
+ suffix-icon="el-icon-search"
482
+ :value="getLabel(editStatIndexForm.INDEX_FIELD, reportStatisFields.statisIndexFields)"
483
+ >
484
+ </el-input>
485
+ <el-tree class="field-tree" :data="reportStatisFields.statisIndexFields" :props="{label: 'text',value: 'id'}" @node-click="node=>$set(editStatIndexForm,'INDEX_FIELD', node.id)"></el-tree>
486
+ </el-popover>
487
+ </div>
488
+ </div>
489
+ <div class="add-field-item" >
490
+ <label class="add-field-item__label is-required" for="">计算方式:</label>
491
+ <div class="add-field-input">
492
+ <epx-radio v-model="editStatIndexForm.INDEX_CALCULATE_METHOD" :fieldConfigs="{codeKey: 'FM_REPORT_TIME_MODE', state: 'EDIT'}"></epx-radio>
493
+ </div>
494
+ </div>
495
+ <div class="add-field-item" >
496
+ <label class="add-field-item__label" for="">数值单位:</label>
497
+ <div class="add-field-input">
498
+ <epx-radio v-model="editStatIndexForm.NUM_UNIT" :fieldConfigs="{codeKey: 'report_num_nuit', state: 'EDIT'}"></epx-radio>
499
+ </div>
500
+ </div>
501
+ <div class="add-field-item" >
502
+ <label class="add-field-item__label" for="">单位后缀:</label>
503
+ <div class="add-field-input">
504
+ <el-input size="small" v-model="editStatIndexForm.UNIT_SUFFIX"></el-input>
505
+ </div>
506
+ </div>
507
+ <div class="add-field-item" >
508
+ <label class="add-field-item__label" for="">小数点位数:</label>
509
+ <div class="add-field-input">
510
+ <epx-select v-model="editStatIndexForm.DECIMAL_LENGTH" :fieldConfigs="{attriLabel: '小数点位数', codeKey: 'REPORT_DECIMAL_LENGTH', state: 'EDIT'}"></epx-select>
511
+ </div>
512
+ </div>
513
+ <div class="add-field-item" >
514
+ <label class="add-field-item__label" for="">千分符标识:</label>
515
+ <div class="add-field-input">
516
+ <el-switch
517
+ v-model="editStatIndexForm.THOUSAND_CENTS_FLAG"
518
+ active-value="1"
519
+ inactive-value="0"
520
+ >
521
+ </el-switch>
522
+ </div>
523
+ </div>
524
+ </template>
525
+ <template v-else-if="editStatIndexForm.IS_RECORED_FLAG!=='1'">
526
+ <div class="add-field-item">
527
+ <label for="">计算公式:</label>
528
+ <div class="add-field-input">
529
+ <epx-rule v-model="editStatIndexForm.INDEX_FORMULA" :metaId="reportInfo.OBJECT" :fieldConfigs="{state: 'EDIT'}"></epx-rule>
530
+ </div>
531
+ </div>
532
+ </template>
533
+ </div>
534
+ <div slot="footer" class="dialog-footer">
535
+ <el-button @click="editStatIndexDialog = false">取 消</el-button>
536
+ <el-button type="primary" @click="saveStatIndex">保 存</el-button>
537
+ </div>
538
+ </el-dialog>
539
+ <el-dialog
540
+ class="custom-dialog"
541
+ title="新增编辑自定义字段"
542
+ :visible.sync="addFieldDialog"
543
+ :append-to-body="true"
544
+ destroy-on-close
545
+ width="560px"
546
+ >
547
+ <div class="custom-dialog__content">
548
+ <div class="add-field-item">
549
+ <label class="is-required" for="">字段名称:</label>
550
+ <div class="add-field-input">
551
+ <el-input size="medium" v-model="addFieldForm.FIELD_NAME"></el-input>
552
+ </div>
553
+ </div>
554
+ <div class="add-field-item">
555
+ <label class="is-required" for="">统计项:</label>
556
+ <div class="add-field-input">
557
+ <draggable
558
+ tag="ul"
559
+ class="field-option__list"
560
+ :list="addFieldForm.options"
561
+ >
562
+ <li class="field-option__item" v-for="(option, index) in addFieldForm.options" :key="option.ID || option.NAME">
563
+ <i class="report-field__handler el-icon-rank"></i>
564
+ <span>{{option.NAME}}</span>
565
+ <span class="report-stat__operate">
566
+ <el-button type="text" icon="el-icon-edit" @click="editFieldOption(option, index)"></el-button>
567
+ <el-popconfirm
568
+ title="确认删除?"
569
+ @confirm="addFieldForm.options.splice(index, 1)"
570
+ >
571
+ <el-button class="delete-icon" slot="reference" type="text" icon="el-icon-delete"></el-button>
572
+ </el-popconfirm>
573
+ </span>
574
+ </li>
575
+ </draggable>
576
+ <el-button type="text" @click="showAddOptionToField">+ 添加</el-button>
577
+ </div>
578
+ </div>
579
+ <div class="add-field-item">
580
+ <label for="">设为常用:</label>
581
+ <div class="add-field-input">
582
+ <el-switch
583
+ v-model="addFieldForm.IS_FAVORITE"
584
+ active-value="1"
585
+ inactive-value="0"
586
+ >
587
+ </el-switch>
588
+ </div>
589
+ </div>
590
+ </div>
591
+ <div slot="footer" class="dialog-footer">
592
+ <el-button @click="addFieldDialog = false">取 消</el-button>
593
+ <el-button type="primary" @click="addCustomField">确 定</el-button>
594
+ </div>
595
+ </el-dialog>
596
+ <!-- 自定义选项 -->
597
+ <el-dialog
598
+ class="custom-dialog"
599
+ title="新增自定义统计项"
600
+ :visible.sync="addOptionDialog"
601
+ :append-to-body="true"
602
+ destroy-on-close
603
+ width="560px"
604
+ >
605
+ <div class="custom-dialog__content" v-if="addOptionDialog">
606
+ <el-tabs v-model="statFieldTabs" :class="{'hide-tabs': addOptionForm.POSITION!=='2' || addOptionForm.isToField }">
607
+ <el-tab-pane label="统计字段" name="stat">
608
+ <div class="add-field-item" v-if="addOptionForm.UP">
609
+ <label for="">上级:</label>
610
+ <div class="add-field-input">
611
+ <span>{{addOptionForm['UP#']}}</span>
612
+ </div>
613
+ </div>
614
+ <div class="add-field-item" v-if="addOptionForm.ID===undefined">
615
+ <label for="">添加方式:</label>
616
+ <div class="add-field-input">
617
+ <el-radio-group v-model="addOptionForm.ADD_TYPE">
618
+ <el-radio label="custom">自定义</el-radio>
619
+ <el-radio label="field">字段选项</el-radio>
620
+ <el-radio label="favorite_item">常用统计项</el-radio>
621
+ </el-radio-group>
622
+ </div>
623
+ </div>
624
+ <template v-if="addOptionForm.ADD_TYPE==='custom'">
625
+ <div class="add-field-item">
626
+ <label class="is-required" for="">标题:</label>
627
+ <div class="add-field-input">
628
+ <el-input size="small" v-model="addOptionForm.NAME"></el-input>
629
+ </div>
630
+ </div>
631
+ <div class="add-field-item" v-if="addOptionForm.IS_RECORED_FLAG!=='1'">
632
+ <label for="">统计范围:</label>
633
+ <div class="add-field-input">
634
+ <epx-form-scope v-if="addOptionDialog" v-model="addOptionForm.SCOPE" :metaId="reportInfo.OBJECT" :fieldConfigs="{state: 'EDIT'}" />
635
+ </div>
636
+ </div>
637
+ </template>
638
+ <template v-else-if="addOptionForm.ADD_TYPE==='field'">
639
+ <div class="add-field-item">
640
+ <label for="">统计字段:</label>
641
+ <el-popover
642
+ trigger="click"
643
+ placement="bottom"
644
+ width="160"
645
+ >
646
+ <el-input
647
+ size="small"
648
+ slot="reference"
649
+ placeholder="请输入内容"
650
+ suffix-icon="el-icon-search"
651
+ :value="getLabel(addOptionForm.STA_FIELD, reportStatisFields.entityFields)">
652
+ </el-input>
653
+ <el-tree class="field-tree" :data="entityListFields" :props="{label: 'text',value: 'id'}" @node-click="node=>{(node.dataType==='list' || node.dataType==='treeList' || node.dataType==='object'|| node.dataType==='user'|| node.dataType==='dept')? $set(addOptionForm,'STA_FIELD', node.id): $message.error('请选择选项类型的字段')}"></el-tree>
654
+ </el-popover>
655
+ </div>
656
+ <template v-if="statOptionField">
657
+ <template v-if="statOptionField.dataType==='list' && statOptionField.optionType==='treeList'">
658
+ <div class="add-field-item" >
659
+ <label for="">统计层级:</label>
660
+ <epx-radio v-model="addOptionForm.STATIS_FIELD_LEVEL" :fieldConfigs="{codeKey: 'STATIS_FIELD_LEVEL', state: 'EDIT'}" @change="$set(addOptionForm, 'STATIS_CUSTOM_OPTIONS', [])"></epx-radio>
661
+ </div>
662
+ <div class="add-field-item" >
663
+ <label for="">统计选项:</label>
664
+ <div class="add-field-input">
665
+ <el-checkbox class="add-field__checkall" v-model="statOptionFieldTreeOptionSelectAll" >全选</el-checkbox>
666
+ <el-tree v-if="addOptionForm.STATIS_FIELD_LEVEL==='all'" ref="addOptionTree" node-key="id" class="option-tree" :data="getTreeCodeById(statOptionField.codeKey)" :check-strictly="true" @check-change="checkOptionChange" show-checkbox :props="{label: 'name',children: 'children'}">
667
+ </el-tree>
668
+ <el-checkbox-group v-else class="add-field__checkgroup" v-model="addOptionForm.STATIS_CUSTOM_OPTIONS">
669
+ <el-checkbox v-for="option in statOptionFieldTreeOptions" :label="option.id" :key="option.id">{{option.name}}</el-checkbox>
670
+ </el-checkbox-group>
671
+ </div>
672
+ </div>
673
+ </template>
674
+ <div class="add-field-item" v-else-if="statOptionField.dataType==='list'">
675
+ <label for="">统计选项:</label>
676
+ <div class="add-field-input">
677
+ <el-checkbox class="add-field__checkall" v-model="statOptionFieldOptionSelectAll" >全选</el-checkbox>
678
+ <el-checkbox-group class="add-field__checkgroup" v-model="addOptionForm.STATIS_CUSTOM_OPTIONS" >
679
+ <el-checkbox v-for="option in statOptionFieldOptions" :label="option.id" :key="option.id">{{option.name}}</el-checkbox>
680
+ </el-checkbox-group>
681
+ </div>
682
+ </div>
683
+ <template v-if="statOptionField.dataType==='object' || statOptionField.dataType==='user' || statOptionField.dataType==='dept'">
684
+ <div class="add-field-item" >
685
+ <label for="">统计范围:</label>
686
+ <div class="add-field-input">
687
+ <epx-form-scope v-model="addOptionForm.SCOPE" :metaId="statOptionField.relatedEntity" :fieldConfigs="{state: 'EDIT'}" />
688
+ </div>
689
+ </div>
690
+ <div class="add-field-item">
691
+ <label for="">统计选项:</label>
692
+ <div class="add-field-input">
693
+ <el-checkbox class="add-field__checkall" v-model="statOptionFieldOptionSelectAll" >全选</el-checkbox>
694
+ <el-checkbox-group class="add-field__checkgroup" v-model="addOptionForm.STATIS_CUSTOM_OPTIONS" >
695
+ <el-checkbox v-for="option in statOptionFieldData" :label="option.id" :key="option.id">{{option.text}}</el-checkbox>
696
+ </el-checkbox-group>
697
+ </div>
698
+ </div>
699
+ </template>
700
+ </template>
701
+ </template>
702
+ <template v-else-if="addOptionForm.ADD_TYPE==='favorite_item'">
703
+ <div class="add-field-item">
704
+ <label for="">常用统计项:</label>
705
+ <div class="add-field-input" >
706
+ <ul class="common-field__list">
707
+ <li
708
+ :class="['common-field__item', { 'fold': foldCommonField[field.id] }]"
709
+ v-for="field in reportStatisFields.customFields"
710
+ :key="field.id"
711
+ >
712
+ <p class="common-field__name">
713
+ <el-checkbox v-model="checkfieldAllOptions[field.id]">{{field.text}}</el-checkbox>
714
+ <i class="common-field__fold el-icon-arrow-up" @click="$set(foldCommonField, field.id, !foldCommonField[field.id])"></i>
715
+ </p>
716
+ <el-checkbox-group class="common-field-option__checkboxgroup" v-show="!foldCommonField[field.id]" v-model="addOptionForm.FAVORITE_ITEM">
717
+ <el-checkbox v-for="option in field['children']" :label="option.id" :key="option.id">{{option.text}}</el-checkbox>
718
+ </el-checkbox-group>
719
+ </li>
720
+ </ul>
721
+ </div>
722
+ </div>
723
+ </template>
724
+ </el-tab-pane>
725
+ <el-tab-pane label="统计指标" name="index">
726
+ <div class="add-field-item">
727
+ <label for="">指标类别:</label>
728
+ <div class="add-field-input">
729
+ <el-radio-group v-model="addOptionForm.STA_INDEX_TYPE">
730
+ <el-radio label="default">默认</el-radio>
731
+ <el-radio label="field">指标字段</el-radio>
732
+ <el-radio label="custom">自定义</el-radio>
733
+ </el-radio-group>
734
+ </div>
735
+ </div>
736
+ <template v-if="addOptionForm.STA_INDEX_TYPE==='field'">
737
+ <div class="add-field-item">
738
+ <label for="">指标字段:</label>
739
+ <div class="add-field-input">
740
+ <el-popover
741
+ trigger="click"
742
+ placement="bottom"
743
+ width="160"
744
+ >
745
+ <el-input
746
+ size="small"
747
+ slot="reference"
748
+ placeholder="请输入内容"
749
+ suffix-icon="el-icon-search"
750
+ :value="getLabel(addOptionForm.STA_INDEX_FIELD, reportStatisFields.statisIndexFields)"
751
+ >
752
+ </el-input>
753
+ <el-tree class="field-tree" :data="reportStatisFields.statisIndexFields" :props="{label: 'text',value: 'id'}" @node-click="node=>{$set(addOptionForm,'STA_INDEX_FIELD', node.id); $set(addOptionForm,'STA_INDEX_FIELD_CODE', node.code)}"></el-tree>
754
+ </el-popover>
755
+ </div>
756
+ </div>
757
+ <div class="add-field-item" >
758
+ <label class="add-field-item__label is-required" for="">计算方式:</label>
759
+ <div class="add-field-input">
760
+ <epx-radio v-model="addOptionForm.MODE" :fieldConfigs="{codeKey: 'FM_REPORT_TIME_MODE', state: 'EDIT'}"></epx-radio>
761
+ </div>
762
+ </div>
763
+ <div class="add-field-item" >
764
+ <label class="add-field-item__label is-required" for="">百分比列</label>
765
+ <div class="add-field-input">
766
+ <el-input-number v-model="addOptionForm.POINT_PER_COL"></el-input-number>
767
+ </div>
768
+ </div>
769
+ </template>
770
+ </el-tab-pane>
771
+ </el-tabs>
772
+ </div>
773
+ <div slot="footer" class="dialog-footer">
774
+ <el-button @click.stop="addOptionDialog = false">取 消</el-button>
775
+ <el-button type="primary" @click="addStatOption">确 定</el-button>
776
+ </div>
777
+ </el-dialog>
778
+
779
+ </div>
780
+ </template>
781
+
782
+ <script>
783
+ /* eslint-disable no-eval */
784
+ import component from '@/utils/mixins/component'
785
+ import draggable from 'vuedraggable'
786
+ import { mapGetters } from 'vuex'
787
+ export default {
788
+ name: 'epx-report-design',
789
+ mixins: [component],
790
+ components: {
791
+ draggable
792
+ },
793
+ style: {
794
+ margin: 0
795
+ },
796
+ data () {
797
+ return {
798
+ reportInfo: {},
799
+ editName: false,
800
+ reportTypeList: [
801
+ { icon: 'epx-icon-tongjibiao', text: '统计表', type: '1', chartType: '' },
802
+ { icon: 'epx-icon-bingzhuangtu', text: '饼状图', type: '2', chartType: 'pie' },
803
+ { icon: 'epx-icon-huanxingtu', text: '空心饼状图', type: '2', chartType: 'circularPie' },
804
+ { icon: 'epx-icon-zhexiantu', text: '折线图', type: '2', chartType: 'line' },
805
+ { icon: 'epx-icon-zhuzhuangtu', text: '柱状图', type: '2', chartType: 'column' },
806
+ { icon: 'epx-icon-tiaoxingtu', text: '横向柱状图', type: '2', chartType: 'horiColumn' },
807
+ { icon: 'epx-icon-loudoutu', text: '漏斗图', type: '2', chartType: 'funnel' }
808
+ ],
809
+ exportLoading: false,
810
+ previewChart: false,
811
+ filterDrawer: false,
812
+ rowList: null,
813
+ columnList: null,
814
+ reportStatisFields: {},
815
+ statisIndexList: [],
816
+ openField: {},
817
+ openIndexField: {},
818
+ addFieldForm: {},
819
+ editFieldForm: {},
820
+ foldFieldContainer: false,
821
+ showFieldType: 'entity',
822
+ addFieldDialog: false,
823
+ addOptionDialog: false,
824
+ showStatScope: false,
825
+ editEntityFieldDialog: false,
826
+ addOptionForm: {
827
+ ADD_TYPE: 'custom'
828
+ },
829
+ statOptionFieldData: [],
830
+ editStatIndexDialog: false,
831
+ editStatIndexForm: {},
832
+ checkedOption: [],
833
+ showChart: true,
834
+ checkfieldAllOptions: {},
835
+ dropPosition: {},
836
+ dropType: null,
837
+ dropElementId: null,
838
+ foldCommonField: {},
839
+ globalSetting: false,
840
+ formData: {},
841
+ fieldsConfigs: [],
842
+ statFieldTabs: 'stat'
843
+ }
844
+ },
845
+ computed: {
846
+ ...mapGetters([
847
+ 'getCodeById',
848
+ 'getTreeCodeById',
849
+ 'getMeta'
850
+ ]),
851
+ scopeParams: {
852
+ get () {
853
+ const { SCOPE } = this.reportInfo
854
+ if (SCOPE) {
855
+ try {
856
+ const scope = JSON.parse(SCOPE)
857
+ return scope.scopeParams || []
858
+ } catch (error) {
859
+ return []
860
+ }
861
+ }
862
+ return []
863
+ },
864
+ set (v) {
865
+ this.setReportScope(v)
866
+ }
867
+ },
868
+ scopeText () {
869
+ const length = this.scopeParams.length
870
+ if (length > 0) {
871
+ return this.scopeParams.reduce((str, item, index) => str + item.text + (index === length - 1 ? '' : item.link === 'or' ? ' 或者 ' : ' 并且 '), '')
872
+ } else {
873
+ return '全部'
874
+ }
875
+ },
876
+ allFieldsConfigs () {
877
+ const meta = this.getMeta(this.reportInfo.OBJECT)
878
+ if (meta) {
879
+ return meta.getAllFieldConfigs()
880
+ }
881
+ return []
882
+ },
883
+ entityFields () {
884
+ const { entityFields } = this.reportStatisFields
885
+ return JSON.parse(JSON.stringify(entityFields || [])).map(item => {
886
+ if (item.relationMeta) {
887
+ item.children = item.relationMeta.children || []
888
+ }
889
+ return item
890
+ })
891
+ },
892
+ entityListFields () {
893
+ const formatList = (arr) => {
894
+ return arr.filter(item => {
895
+ if (item.children) item.children = formatList(item.children)
896
+ return item.dataType === 'list' || item.dataType === 'treeList' || item.dataType === 'object' || (item.children && item.children.length > 0)
897
+ })
898
+ }
899
+ return formatList(this.entityFields)
900
+ },
901
+ getMetaFields () {
902
+ return metaId => {
903
+ if (metaId) {
904
+ const meta = this.getMeta(metaId)
905
+ if (!meta) {
906
+ this.$store.dispatch({
907
+ type: 'ADD_META',
908
+ metaId
909
+ })
910
+ return []
911
+ } else {
912
+ return meta.getAllFieldConfigs()
913
+ }
914
+ }
915
+ return []
916
+ }
917
+ },
918
+ statField () {
919
+ const { STA_FIELD } = this.editFieldForm
920
+ if (STA_FIELD) {
921
+ const field = this.findField(STA_FIELD, this.entityFields)
922
+ return field
923
+ }
924
+ return null
925
+ },
926
+ statFieldOptions () {
927
+ const { codeKey } = this.statField || {}
928
+ if (!codeKey) return []
929
+ return this.getCodeById(codeKey) || []
930
+ },
931
+ statFieldTreeOptions () {
932
+ const { codeKey } = this.statField || {}
933
+ const { STATIS_FIELD_LEVEL } = this.editFieldForm
934
+ const limit = STATIS_FIELD_LEVEL === 'all' ? null : STATIS_FIELD_LEVEL
935
+ if (!codeKey) return []
936
+ const list = []
937
+ const treeList = this.getTreeCodeById(codeKey) || []
938
+ const getList = (treeList, level = 1) => {
939
+ for (const item of treeList) {
940
+ list.push(item)
941
+ if (item.children) {
942
+ if (!limit || level + 1 <= limit) {
943
+ getList(item.children, level + 1)
944
+ }
945
+ }
946
+ }
947
+ }
948
+ getList(treeList)
949
+ return list
950
+ },
951
+ statFieldTreeOptionSelectAll: {
952
+ get () {
953
+ const { STATIS_CUSTOM_OPTIONS = [] } = this.editFieldForm
954
+ return STATIS_CUSTOM_OPTIONS.length === this.statFieldTreeOptions.length
955
+ },
956
+ set (v) {
957
+ const { STATIS_FIELD_LEVEL } = this.editFieldForm
958
+ if (STATIS_FIELD_LEVEL === 'all') {
959
+ this.$nextTick(() => {
960
+ if (v) {
961
+ this.$refs.fieldOptionTree.setCheckedKeys(this.statFieldTreeOptions.map(item => item.id))
962
+ } else {
963
+ this.$refs.fieldOptionTree.setCheckedKeys([])
964
+ }
965
+ })
966
+ } else {
967
+ if (v) {
968
+ this.$set(this.editFieldForm, 'STATIS_CUSTOM_OPTIONS', this.statFieldTreeOptions.map(item => item.id))
969
+ } else {
970
+ this.$set(this.editFieldForm, 'STATIS_CUSTOM_OPTIONS', [])
971
+ }
972
+ }
973
+ }
974
+ },
975
+ statFieldOptionSelectAll: {
976
+ get () {
977
+ const { STATIS_CUSTOM_OPTIONS = [] } = this.editFieldForm
978
+ return STATIS_CUSTOM_OPTIONS.length === this.statFieldOptions.length
979
+ },
980
+ set (v) {
981
+ if (v) {
982
+ this.$set(this.editFieldForm, 'STATIS_CUSTOM_OPTIONS', this.statFieldOptions.map(item => item.id))
983
+ } else {
984
+ this.$set(this.editFieldForm, 'STATIS_CUSTOM_OPTIONS', [])
985
+ }
986
+ }
987
+ },
988
+ statOptionField () {
989
+ const { STA_FIELD } = this.addOptionForm
990
+ if (STA_FIELD) {
991
+ const field = this.findField(STA_FIELD, this.entityFields)
992
+ return field
993
+ }
994
+ return null
995
+ },
996
+ statOptionFieldOptions () {
997
+ const { codeKey } = this.statOptionField || {}
998
+ if (!codeKey) return []
999
+ const codes = this.getCodeById(codeKey)
1000
+ if (!codes) {
1001
+ this.$store.dispatch({
1002
+ type: 'ADD_LIST',
1003
+ key: codeKey,
1004
+ dataType: 'list'
1005
+ })
1006
+ }
1007
+ return codes || []
1008
+ },
1009
+ statOptionFieldTreeOptions () {
1010
+ const { codeKey } = this.statOptionField || {}
1011
+ const { STATIS_FIELD_LEVEL } = this.addOptionForm
1012
+ const limit = STATIS_FIELD_LEVEL === 'all' ? null : STATIS_FIELD_LEVEL
1013
+ if (!codeKey) return []
1014
+ const list = []
1015
+ const treeList = this.getTreeCodeById(codeKey)
1016
+ if (!treeList) {
1017
+ this.$store.dispatch({
1018
+ type: 'ADD_LIST',
1019
+ key: codeKey,
1020
+ dataType: 'treeList'
1021
+ })
1022
+ }
1023
+ const getList = (treeList, level = 1) => {
1024
+ for (const item of treeList) {
1025
+ list.push(item)
1026
+ if (item.children) {
1027
+ if (!limit || level + 1 <= limit) {
1028
+ getList(item.children, level + 1)
1029
+ }
1030
+ }
1031
+ }
1032
+ }
1033
+ getList(treeList || [])
1034
+ return list
1035
+ },
1036
+ statOptionFieldTreeOptionSelectAll: {
1037
+ get () {
1038
+ const { STATIS_CUSTOM_OPTIONS = [] } = this.addOptionForm
1039
+ return STATIS_CUSTOM_OPTIONS.length === this.statOptionFieldTreeOptions.length
1040
+ },
1041
+ set (v) {
1042
+ const { STATIS_FIELD_LEVEL } = this.addOptionForm
1043
+ if (STATIS_FIELD_LEVEL === 'all') {
1044
+ this.$nextTick(() => {
1045
+ if (v) {
1046
+ this.$refs.addOptionTree.setCheckedKeys(this.statOptionFieldTreeOptions.map(item => item.id))
1047
+ this.$set(this.addOptionForm, 'STATIS_OPTION', 'all')
1048
+ } else {
1049
+ this.$refs.addOptionTree.setCheckedKeys([])
1050
+ this.$set(this.addOptionForm, 'STATIS_OPTION', 'custom')
1051
+ }
1052
+ })
1053
+ } else {
1054
+ if (v) {
1055
+ this.$set(this.addOptionForm, 'STATIS_CUSTOM_OPTIONS', this.statOptionFieldTreeOptions.map(item => item.id))
1056
+ this.$set(this.addOptionForm, 'STATIS_OPTION', 'all')
1057
+ } else {
1058
+ this.$set(this.addOptionForm, 'STATIS_CUSTOM_OPTIONS', [])
1059
+ this.$set(this.addOptionForm, 'STATIS_OPTION', 'custom')
1060
+ }
1061
+ }
1062
+ }
1063
+ },
1064
+ statOptionFieldOptionSelectAll: {
1065
+ get () {
1066
+ const { dataType } = this.statOptionField
1067
+ const data = (dataType === 'object' || dataType === 'user' || dataType === 'dept') ? this.statOptionFieldData : this.statOptionFieldOptions
1068
+ const { STATIS_CUSTOM_OPTIONS = [] } = this.addOptionForm
1069
+ return STATIS_CUSTOM_OPTIONS.length === data.length
1070
+ },
1071
+ set (v) {
1072
+ const { dataType } = this.statOptionField
1073
+ const data = (dataType === 'object' || dataType === 'user' || dataType === 'dept') ? this.statOptionFieldData : this.statOptionFieldOptions
1074
+ if (v) {
1075
+ this.$set(this.addOptionForm, 'STATIS_CUSTOM_OPTIONS', data.map(item => item.id))
1076
+ this.$set(this.addOptionForm, 'STATIS_OPTION', 'all')
1077
+ } else {
1078
+ this.$set(this.addOptionForm, 'STATIS_CUSTOM_OPTIONS', [])
1079
+ this.$set(this.addOptionForm, 'STATIS_OPTION', 'custom')
1080
+ }
1081
+ }
1082
+ },
1083
+ fieldOptions () {
1084
+ const { codeKey } = this.statOptionField || {}
1085
+ if (!codeKey) return []
1086
+ return this.getCodeById(codeKey) || []
1087
+ },
1088
+ fieldTreeOptions () {
1089
+ const { codeKey } = this.statOptionField || {}
1090
+ if (!codeKey) return []
1091
+ const list = []
1092
+ const treeList = this.getTreeCodeById(codeKey) || []
1093
+ const getList = (treeList) => {
1094
+ for (const item in treeList) {
1095
+ list.push(item)
1096
+ if (item.children) getList(item.chidlren)
1097
+ }
1098
+ }
1099
+ getList(treeList)
1100
+ return list
1101
+ },
1102
+ chartComponent () {
1103
+ const { TYPE, CHART_TYPE } = this.reportInfo
1104
+ if (TYPE === '1') {
1105
+ return 'design-report-table'
1106
+ } else if (CHART_TYPE === 'pie' || CHART_TYPE === 'circularPie') {
1107
+ return 'design-chart-pie'
1108
+ } else if (CHART_TYPE === 'column' || CHART_TYPE === 'horiColumn') {
1109
+ return 'design-chart-column'
1110
+ } else if (CHART_TYPE === 'line') {
1111
+ return 'design-chart-line'
1112
+ } else if (CHART_TYPE === 'funnel') {
1113
+ return 'design-chart-funnel'
1114
+ }
1115
+ return ''
1116
+ },
1117
+ chartConfig () {
1118
+ const { ID, TYPE, CHART_TYPE, OBJECT, NAME } = this.reportInfo
1119
+ return { ...this.$query, reportId: ID, reportType: TYPE, staObject: OBJECT, reportName: NAME, chartType: CHART_TYPE }
1120
+ },
1121
+ getLabel () {
1122
+ return (v, arr) => {
1123
+ const item = this.getItemById(v, arr)
1124
+ if (item) return item.text || v
1125
+ return v
1126
+ }
1127
+ }
1128
+ },
1129
+ watch: {
1130
+ 'addOptionForm.FAVORITE_ITEM' (v) {
1131
+ for (const field of this.reportStatisFields.customFields) {
1132
+ if (field.children) {
1133
+ const isCheckAll = field.children.every(item => v.includes(item.id))
1134
+ if (this.checkfieldAllOptions[field.id] !== isCheckAll) {
1135
+ this.$set(this.checkfieldAllOptions, field.id, isCheckAll)
1136
+ }
1137
+ }
1138
+ }
1139
+ },
1140
+ checkfieldAllOptions: {
1141
+ handler (v) {
1142
+ const { FAVORITE_ITEM } = this.addOptionForm
1143
+ for (const key in v) {
1144
+ if (!this.lastCheckfieldAllOptions || v[key] !== this.lastCheckfieldAllOptions[key]) {
1145
+ // 更新字段选值
1146
+ const field = this.reportStatisFields.customFields.find(item => item.id === key)
1147
+ if (v[key]) {
1148
+ for (const option of field.children) {
1149
+ if (!FAVORITE_ITEM.includes(option.id)) FAVORITE_ITEM.push(option.id)
1150
+ }
1151
+ } else {
1152
+ for (const option of field.children) {
1153
+ const index = FAVORITE_ITEM.findIndex(id => id === option.id)
1154
+ if (index !== -1) {
1155
+ FAVORITE_ITEM.splice(index, 1)
1156
+ }
1157
+ }
1158
+ }
1159
+ }
1160
+ }
1161
+ this.lastCheckfieldAllOptions = { ...v }
1162
+ this.$set(this.addOptionForm, 'FAVORITE_ITEM', FAVORITE_ITEM)
1163
+ },
1164
+ deep: true
1165
+ },
1166
+ 'addOptionForm.STA_FIELD' (v) {
1167
+ const { dataType } = this.statOptionField
1168
+ if (dataType === 'object' || dataType === 'user' || dataType === 'dept') {
1169
+ this.getObjectDataById()
1170
+ }
1171
+ },
1172
+ 'addOptionForm.SCOPE' (v) {
1173
+ const { dataType } = this.statOptionField
1174
+ if (dataType === 'object' || dataType === 'user' || dataType === 'dept') {
1175
+ this.getObjectDataById()
1176
+ }
1177
+ }
1178
+ },
1179
+ methods: {
1180
+ getReportInfo () {
1181
+ this.$http.get({
1182
+ entityId: 'FM_REPORT_BASE',
1183
+ id: this.$query.id
1184
+ })
1185
+ .then(data => {
1186
+ this.reportInfo = data.data
1187
+ this.formData = { ...data.data }
1188
+ this.getEntityMeta()
1189
+ this.getReportStatisFields()
1190
+ })
1191
+ },
1192
+ getEntityMeta () {
1193
+ const { OBJECT } = this.reportInfo
1194
+ this.$store.dispatch({
1195
+ type: 'ADD_META',
1196
+ metaId: OBJECT
1197
+ })
1198
+ },
1199
+ getFieldConfigs () {
1200
+ this.$FieldFactory.createFields({
1201
+ meta: this.$meta,
1202
+ metaId: this.$metaId,
1203
+ pageType: 'EDIT',
1204
+ fields: ['CELL_PAGE']
1205
+ })
1206
+ .then(data => {
1207
+ this.fieldsConfigs = [...data]
1208
+ })
1209
+ },
1210
+ updateForm () {
1211
+ const params = {}
1212
+ for (const key in this.formData) {
1213
+ if (!key.includes('#')) {
1214
+ params[`bean.${key}`] = this.formData[key]
1215
+ }
1216
+ }
1217
+ this.$http.update({
1218
+ entityId: 'FM_REPORT_BASE',
1219
+ ...params
1220
+ })
1221
+ .then(() => {
1222
+ this.globalSetting = false
1223
+ this.$message.success('保存成功')
1224
+ })
1225
+ .catch(err => {
1226
+ this.$message.error(err.errorText)
1227
+ })
1228
+ },
1229
+ getItemById (id, arr) {
1230
+ let item = null;
1231
+ (function poll (arr, leval) {
1232
+ for (let i = 0; i < arr.length; i++) {
1233
+ if (arr[i].id === id) {
1234
+ item = arr[i]
1235
+ } else if (arr[i].id !== id && arr[i].children && arr[i].children.length > 0) {
1236
+ poll(arr[i].children, leval + 1)
1237
+ }
1238
+ }
1239
+ })(arr, 0)
1240
+ return item
1241
+ },
1242
+ getReportStatisFields () {
1243
+ this.$http.get({
1244
+ action: 'reportStatisFields',
1245
+ entityId: 'FM_REPORT_BASE',
1246
+ metaId: this.reportInfo.OBJECT,
1247
+ reportId: this.reportInfo.ID
1248
+ })
1249
+ .then(data => {
1250
+ let { customFields, entityFields = '{}', statisIndexFields = '{}' } = data
1251
+ customFields = eval(`(${customFields})`)
1252
+ entityFields = eval(`(${entityFields})`)
1253
+ statisIndexFields = eval(`(${statisIndexFields})`)
1254
+ const formatField = (arr) => {
1255
+ return arr.map(item => {
1256
+ if (item.linkCode) {
1257
+ item.code = item.linkCode.replace(/\|/g, '.')
1258
+ }
1259
+ if (item.children) {
1260
+ item.children = formatField(item.children)
1261
+ }
1262
+ return item
1263
+ })
1264
+ }
1265
+ if (entityFields) {
1266
+ if (entityFields[0]) this.$set(this.openField, entityFields[0].code, true)
1267
+ }
1268
+ if (statisIndexFields) {
1269
+ if (statisIndexFields[0]) this.$set(this.openField, 'index-' + statisIndexFields[0].code, true)
1270
+
1271
+ statisIndexFields.unshift({
1272
+ id: 'record',
1273
+ text: '记录数',
1274
+ isRecoredFlag: '1'
1275
+ })
1276
+ }
1277
+ // .filter(item => item.children.length > 0)
1278
+ this.reportStatisFields = {
1279
+ customFields: formatField(customFields),
1280
+ entityFields: formatField(entityFields),
1281
+ statisIndexFields: formatField(statisIndexFields)
1282
+ }
1283
+ })
1284
+ },
1285
+ getStatList () {
1286
+ const params = {
1287
+ entityId: 'FM_REPORT_ITEM',
1288
+ reportId: this.$query.id,
1289
+ up_field: 'UP',
1290
+ showEntity: '1',
1291
+ multiFlag: true,
1292
+ dir: 'ASC',
1293
+ mysort: 'ORDER_NUM',
1294
+ node: 'root'
1295
+ }
1296
+ this.$http.getTree({
1297
+ ...params,
1298
+ position: '1'
1299
+ })
1300
+ .then(data => {
1301
+ this.rowList = data
1302
+ })
1303
+ this.$http.getTree({
1304
+ ...params,
1305
+ position: '2'
1306
+ })
1307
+ .then(data => {
1308
+ this.columnList = data
1309
+ })
1310
+ },
1311
+ getStatisIndex () {
1312
+ this.$http.list({
1313
+ entityId: 'FM_REPORT_STATIS_INDEX',
1314
+ 'scope.REPORT': this.$query.id
1315
+ })
1316
+ .then(data => {
1317
+ this.statisIndexList = data.entitys
1318
+ })
1319
+ },
1320
+ getCommonReportStatisFields () {
1321
+ this.$http.get({
1322
+ action: 'reportStatisFields',
1323
+ entityId: 'FM_REPORT_BASE',
1324
+ metaId: this.reportInfo.OBJECT,
1325
+ onlyCustomFieldFlag: '1'
1326
+ })
1327
+ .then(data => {
1328
+ let { customFields } = data
1329
+ customFields = eval(`(${customFields})`)
1330
+ this.commonStatisFields = customFields
1331
+ })
1332
+ },
1333
+ checkChange (v, isCheck) {
1334
+ if (isCheck) {
1335
+ if (v.parent) this.$refs.fieldOptionTree.setChecked(v.parent, true)
1336
+ }
1337
+ this.$set(this.editFieldForm, 'STATIS_CUSTOM_OPTIONS', this.$refs.fieldOptionTree.getCheckedKeys())
1338
+ },
1339
+ checkOptionChange (v, isCheck) {
1340
+ if (isCheck) {
1341
+ if (v.parent) this.$refs.addOptionTree.setChecked(v.parent, true)
1342
+ }
1343
+ this.$set(this.addOptionForm, 'STATIS_CUSTOM_OPTIONS', this.$refs.addOptionTree.getCheckedKeys())
1344
+ },
1345
+ setReportName () {
1346
+ this.$http.update({
1347
+ entityId: 'FM_REPORT_BASE',
1348
+ 'bean.ID': this.reportInfo.ID,
1349
+ 'bean.NAME': this.reportInfo.NAME
1350
+ })
1351
+ .then(() => {
1352
+ this.editName = false
1353
+ })
1354
+ .catch(err => {
1355
+ this.$message.error(err.errorText)
1356
+ })
1357
+ },
1358
+ setReportScope (scopeParams) {
1359
+ const scope = JSON.stringify({ scopeParams })
1360
+ this.$http.update({
1361
+ entityId: 'FM_REPORT_BASE',
1362
+ 'bean.ID': this.reportInfo.ID,
1363
+ 'bean.SCOPE': scope
1364
+ })
1365
+ .then(() => {
1366
+ this.$set(this.reportInfo, 'SCOPE', scope)
1367
+ this.refreshData()
1368
+ })
1369
+ .catch(err => {
1370
+ this.$message.error(err.errorText)
1371
+ })
1372
+ },
1373
+ setReportType (reportType) {
1374
+ const { TYPE, CHART_TYPE } = this.reportInfo
1375
+ const setFn = () => {
1376
+ this.$http.update({
1377
+ entityId: 'FM_REPORT_BASE',
1378
+ 'bean.ID': this.reportInfo.ID,
1379
+ 'bean.TYPE': reportType.type,
1380
+ 'bean.CHART_TYPE': reportType.type === '1' ? '' : reportType.chartType
1381
+ })
1382
+ .then(data => {
1383
+ this.$set(this.reportInfo, 'TYPE', reportType.type)
1384
+ this.$set(this.reportInfo, 'CHART_TYPE', reportType.chartType)
1385
+ this.$set(this.reportInfo, 'CHART_TYPE#', reportType.text)
1386
+ this.refreshData()
1387
+ })
1388
+ .catch(err => {
1389
+ this.$message.error(err.errorText)
1390
+ })
1391
+ }
1392
+ if (TYPE !== reportType.type) {
1393
+ // 提示
1394
+ this.$confirm(`切换为${reportType.type === '1' ? '统计表' : '统计图'}将清空统计项,是否切换?`, '提示', {
1395
+ confirmButtonText: '确定',
1396
+ cancelButtonText: '取消',
1397
+ type: 'warning'
1398
+ }).then(() => {
1399
+ this.$http.$post({
1400
+ action: 'removeReportItems',
1401
+ entityId: 'FM_REPORT_BASE',
1402
+ reportId: this.$query.id
1403
+ })
1404
+ setFn()
1405
+ })
1406
+ } else if (CHART_TYPE !== reportType.chartType) {
1407
+ setFn()
1408
+ }
1409
+ },
1410
+ exportReport () {
1411
+ const staObject = this.reportInfo.OBJECT
1412
+ this.exportLoading = true
1413
+ this.$http.$post({
1414
+ action: 'getReportData',
1415
+ entityId: staObject,
1416
+ reportId: this.reportInfo.ID,
1417
+ reportType: 'toExcel'
1418
+ }, {
1419
+ responseType: 'blob'
1420
+ })
1421
+ .then(({ blob, filename }) => {
1422
+ const objectUrl = URL.createObjectURL(blob)
1423
+ var a = document.createElement('a')
1424
+ document.body.appendChild(a)
1425
+ a.href = objectUrl
1426
+ a.download = filename || new Date().getTime() + '.xlsx'
1427
+ a.click()
1428
+ window.URL.revokeObjectURL(objectUrl)
1429
+ document.body.removeChild(a)
1430
+ this.exportLoading = false
1431
+ })
1432
+ .catch(err => {
1433
+ this.exportLoading = false
1434
+ this.$message.error(err.message)
1435
+ })
1436
+ },
1437
+ cloneField (el, INDEX_FLAG = '0') {
1438
+ if (el.isRecoredFlag) {
1439
+ return {
1440
+ NAME: el.text,
1441
+ IS_RECORED_FLAG: '1'
1442
+ }
1443
+ }
1444
+ const object = {
1445
+ NAME: el.text,
1446
+ REPORT: this.$query.id,
1447
+ STA_FIELD: el.id,
1448
+ 'STA_FIELD#': el.text,
1449
+ STA_FIELD_CODE: el.code,
1450
+ STATIS_FIELD_TYPE: 'field',
1451
+ STATIS_OPTION: 'all',
1452
+ STATIS_FIELD_LEVEL: 'all',
1453
+ MODEL: '2',
1454
+ INDEX_FLAG,
1455
+ IS_META: el.type === 'meta',
1456
+ children: []
1457
+ }
1458
+ if (INDEX_FLAG === '1') {
1459
+ object.MODE = 'COUNT'
1460
+ object.MODEL = '1'
1461
+ this.dragEvt = {
1462
+ name: 'index',
1463
+ element: object
1464
+ }
1465
+ }
1466
+ return object
1467
+ },
1468
+ dragstart (field, type) {
1469
+ let element = null
1470
+ if (type === 'custom') {
1471
+ element = this.cloneCustomField(field)
1472
+ } else {
1473
+ element = this.cloneField(field)
1474
+ }
1475
+ this.dragEvt = {
1476
+ name: 'field',
1477
+ element
1478
+ }
1479
+ },
1480
+ allowDrop (ev, position) {
1481
+ if (!this.dragEvt) return
1482
+ const { element } = this.dragEvt
1483
+ if (position === '1' && element.INDEX_FLAG === '1') return
1484
+ let dropElem = ev.target
1485
+ while (dropElem && !(dropElem.className && (dropElem.className.includes('report-stat__list') || dropElem.className.includes('report-stat__item') || dropElem.className.includes('report-stat__content')))) {
1486
+ dropElem = dropElem.parentNode
1487
+ }
1488
+ if (!dropElem) return
1489
+ this.dropType = position
1490
+ const el = position === '2' ? this.$refs.columnStat : this.$refs.rowStat
1491
+ const { top: elTop } = el.getBoundingClientRect()
1492
+ this.dropElementId = null
1493
+ const key = dropElem.getAttribute('data-key')
1494
+ const { top, bottom } = dropElem.getBoundingClientRect()
1495
+ if (ev.clientY < top + 8) {
1496
+ this.dropPosition = top - elTop
1497
+ this.dropData = {
1498
+ elem: dropElem,
1499
+ key,
1500
+ type: 'before'
1501
+ }
1502
+ } else if (ev.clientY > top + 24) {
1503
+ this.dropPosition = bottom - elTop
1504
+ this.dropData = {
1505
+ elem: dropElem,
1506
+ key,
1507
+ type: 'after'
1508
+ }
1509
+ } else {
1510
+ this.dropElementId = key
1511
+ this.dropPosition = null
1512
+ const indexFlag = dropElem.getAttribute('data-index-flag')
1513
+ if (indexFlag === '1') return
1514
+ this.dropData = {
1515
+ elem: dropElem,
1516
+ key,
1517
+ type: 'inner'
1518
+ }
1519
+ }
1520
+ // 获取插入元素位置
1521
+ // 如果是在li上 则添加到元素末尾 li高亮
1522
+ // 如果是在ul上 则添加到具体位置
1523
+ ev.preventDefault()
1524
+ },
1525
+
1526
+ dragStatItem (statItem) {
1527
+ this.dragEvt = {
1528
+ name: 'stat',
1529
+ element: statItem
1530
+ }
1531
+ },
1532
+ getStatItem (id, statList = []) {
1533
+ for (let i = 0; i < statList.length; i++) {
1534
+ const item = statList[i]
1535
+ if (item.id === id) {
1536
+ return { item, index: i, arr: statList }
1537
+ } else if (item.children) {
1538
+ const child = this.getStatItem(id, item.children)
1539
+ if (child) return child
1540
+ }
1541
+ }
1542
+ },
1543
+ drop (ev, position) {
1544
+ const { TYPE, CHART_TYPE } = this.reportInfo
1545
+ if (position === '2' && TYPE !== '1') {
1546
+ if (this.statisIndexList.length > 1) {
1547
+ this.$message.error('统计图设置了多个统计维度不允许设置纵轴')
1548
+ return
1549
+ }
1550
+ }
1551
+ if (this.dragEvt) {
1552
+ const { key, type } = this.dropData
1553
+ const { element, name } = this.dragEvt
1554
+ if (element.IS_META) {
1555
+ this.$message.error('不允许拖拽对象')
1556
+ return
1557
+ }
1558
+ const { item: dropElem = {}, index, arr } = this.getStatItem(key, position === '2' ? this.columnList : this.rowList) || {}
1559
+ if (type === 'inner' && CHART_TYPE === 'funnel') {
1560
+ this.$message.error('漏斗图只允许设置一级维度')
1561
+ return
1562
+ }
1563
+ if (name === 'stat') {
1564
+ const evt = { element, type, dropElem, index, dropArr: [...arr] }
1565
+ this.moveStatItem(evt)
1566
+ } else if (name === 'field' || name === 'index') {
1567
+ this.addStatElement({ element, parent: type === 'inner' ? dropElem.id : dropElem.parent, position, newIndex: index })
1568
+ }
1569
+ }
1570
+ this.dragField = null
1571
+ this.dropData = null
1572
+ this.dropPosition = null
1573
+ this.dropElem = null
1574
+ // ev.target.appendChild(document.getElementById(data))
1575
+ ev.preventDefault()
1576
+ },
1577
+ moveStatItem (moved) {
1578
+ const { element, dropElem, type, index, dropArr } = moved
1579
+ let str = ''; let parent = ''
1580
+ let arr = []
1581
+ if (type === 'inner') {
1582
+ arr = [...dropElem.children, { ...element, isNew: true }]
1583
+ parent = dropElem.id
1584
+ } else if (type === 'before') {
1585
+ arr = [...dropArr]
1586
+ arr.splice(index, 0, { ...element, isNew: true })
1587
+ parent = dropElem.parent
1588
+ } else if (type === 'after') {
1589
+ arr = [...dropArr]
1590
+ arr.splice(index + 1, 0, { ...element, isNew: true })
1591
+ parent = dropElem.parent
1592
+ }
1593
+ str = arr.filter(item => item.id !== element.id || item.isNew).reduce((str, item, index) => (str += item.id + ':' + index + ','), '')
1594
+ this.$http.$request({
1595
+ action: 'moveTree',
1596
+ entityId: 'FM_REPORT_ITEM',
1597
+ id: element.id,
1598
+ selfAttriName: 'ID',
1599
+ newParentId: parent || 'root',
1600
+ orderString: str,
1601
+ orderAtrriName: 'ORDER_NUM'
1602
+ })
1603
+ .then(data => {
1604
+ this.refreshData()
1605
+ })
1606
+ },
1607
+ addStatElement (added) {
1608
+ const { element, parent, position, newIndex } = added
1609
+ const formData = {
1610
+ 'bean.REPORT': this.reportId
1611
+ }
1612
+ for (const key in element) {
1613
+ if (key !== 'children') formData[`bean.${key}`] = element[key]
1614
+ }
1615
+ formData['bean.POSITION'] = position
1616
+ formData['bean.ORDER_NUM'] = newIndex
1617
+ if (parent) formData['bean.UP'] = parent
1618
+ this.$http.save({
1619
+ entityId: 'FM_REPORT_ITEM',
1620
+ ...formData
1621
+ })
1622
+ .then(data => {
1623
+ this.refreshData()
1624
+ })
1625
+ },
1626
+ cloneCustomField (el) {
1627
+ const object = {
1628
+ NAME: el.text,
1629
+ REPORT: this.$query.id,
1630
+ NEW_STA_FIELD: el.id,
1631
+ STATIS_FIELD_TYPE: 'custom',
1632
+ MODEL: '2',
1633
+ children: []
1634
+ }
1635
+ return object
1636
+ },
1637
+ singleAdd (position) {
1638
+ this.position = position
1639
+ this.singleDrawar = false
1640
+ this.$nextTick(() => {
1641
+ setTimeout(() => {
1642
+ this.singleDrawar = true
1643
+ }, 0)
1644
+ })
1645
+ this.singleInitCondition = []
1646
+ this.singleFilterFields = []
1647
+ this.singleSearchParams = []
1648
+ // this.$store.commit(SET_ROUTER_QUERY, { position: position })
1649
+ // this.$store.commit(SET_TAB_QUERY, { key: this.$tab.key, query: { position: position } })
1650
+ const obj = { POSITION: position }
1651
+ if (position === '1') {
1652
+ obj['POSITION#'] = '横向'
1653
+ } else if (position === '2') {
1654
+ obj['POSITION#'] = '纵向'
1655
+ }
1656
+ this.pageTypes = 'ADD'
1657
+ this.dialogSingleAddVisible = true
1658
+ this.defaultValue = { CLIENT: this.$tab.CLIENT, SYSTEM: this.$tab.SYSTEM, REPORT: this.reportId, 'REPORT#': this.reportData.NAME, MODE: 'COUNT', 'MODE#': '数量', MODEL: '1', 'MODEL#': '固定', ...obj }
1659
+ },
1660
+ findField (id, fields) {
1661
+ for (const item of fields) {
1662
+ if (item.id === id) return item
1663
+ else if (item.children) {
1664
+ const child = this.findField(id, item.children)
1665
+ if (child) return child
1666
+ }
1667
+ }
1668
+ },
1669
+ selectOptionField (data) {
1670
+ this.$set(this.addOptionForm, 'STA_FIELD', data.id)
1671
+ this.$set(this.addOptionForm, 'STA_FIELD#', data.text)
1672
+ if (data.dataType === 'list') {
1673
+ this.$store.dispatch({
1674
+ type: 'ADD_LIST',
1675
+ key: data.codeKey,
1676
+ dataType: data.optionType || data.dataType
1677
+ })
1678
+ }
1679
+ },
1680
+ getObjectDataById () {
1681
+ const { SCOPE } = this.addOptionForm
1682
+ const scopeParams = JSON.parse(SCOPE || '{}').scopeParams || []
1683
+ const { relatedEntity } = this.statOptionField
1684
+ if (relatedEntity) {
1685
+ this.$http.$post({
1686
+ action: 'getTree',
1687
+ entityId: relatedEntity,
1688
+ scopeParams: JSON.stringify(scopeParams)
1689
+ })
1690
+ .then(data => {
1691
+ this.statOptionFieldData = data
1692
+ })
1693
+ }
1694
+ },
1695
+ refreshData () {
1696
+ this.getStatList()
1697
+ this.showChart = false
1698
+ this.$nextTick(() => {
1699
+ this.showChart = true
1700
+ })
1701
+ },
1702
+ refreshChart () {
1703
+ this.showChart = false
1704
+ this.$nextTick(() => {
1705
+ this.showChart = true
1706
+ })
1707
+ },
1708
+ addStatItem (position, item) {
1709
+ const { CHART_TYPE } = this.reportInfo
1710
+ if (CHART_TYPE === 'funnel') {
1711
+ this.$message.error('漏斗图只允许设置一级维度')
1712
+ return
1713
+ }
1714
+ this.addOptionForm = {
1715
+ ADD_TYPE: 'custom',
1716
+ REPORT: this.$query.id,
1717
+ MODEL: '1',
1718
+ STATIS_CUSTOM_OPTIONS: [],
1719
+ POSITION: position,
1720
+ UP: item.id,
1721
+ 'UP#': item.text,
1722
+ FAVORITE_ITEM: [],
1723
+ STA_INDEX_TYPE: 'default'
1724
+ }
1725
+ this.addOptionDialog = true
1726
+ this.statFieldTabs = 'stat'
1727
+ },
1728
+ async editStatItem (item) {
1729
+ this.$http.get({
1730
+ entityId: 'FM_REPORT_ITEM',
1731
+ id: item.id
1732
+ })
1733
+ .then(async data => {
1734
+ let { ID, NAME, INDEX_FLAG, MODEL, MODE, STATIS_FIELD_TYPE, NEW_STA_FIELD, STA_FIELD, 'STA_FIELD#': fieldName, TOTAL_ITEM_FLAG, ORDER_FIELD, OBJECT_FIELD_SCOPE, SORT, DATE_GROUP_TYPE, STATIS_OPTION, STATIS_FIELD_LEVEL, STATIS_CUSTOM_OPTIONS = '', SCOPE, IS_RECORED_FLAG, STA_INDEX_TYPE = 'default', ...otherData } = data.data
1735
+ if (MODEL === '2') {
1736
+ // 自定义字段
1737
+ if (STATIS_FIELD_TYPE === 'custom') {
1738
+ const field = this.reportStatisFields.customFields.find(item => item.id === NEW_STA_FIELD)
1739
+ this.editCustomField(field)
1740
+ return
1741
+ }
1742
+ if (STATIS_CUSTOM_OPTIONS) {
1743
+ STATIS_CUSTOM_OPTIONS = STATIS_CUSTOM_OPTIONS.split(',')
1744
+ } else {
1745
+ STATIS_CUSTOM_OPTIONS = []
1746
+ }
1747
+
1748
+ this.editFieldForm = {
1749
+ ID,
1750
+ NAME,
1751
+ STA_FIELD,
1752
+ 'STA_FIELD#': fieldName,
1753
+ TOTAL_ITEM_FLAG,
1754
+ ORDER_FIELD,
1755
+ OBJECT_FIELD_SCOPE,
1756
+ SORT,
1757
+ DATE_GROUP_TYPE,
1758
+ STATIS_OPTION,
1759
+ STATIS_FIELD_LEVEL,
1760
+ STATIS_CUSTOM_OPTIONS,
1761
+ INDEX_FLAG,
1762
+ MODEL,
1763
+ MODE,
1764
+ IS_RECORED_FLAG,
1765
+ STA_INDEX_TYPE: STA_INDEX_TYPE || 'default',
1766
+ ...otherData
1767
+ }
1768
+ this.editEntityFieldDialog = true
1769
+ const { codeKey, dataType, optionType } = this.statField || {}
1770
+ if (dataType === 'list') {
1771
+ if (this.statFieldOptions.length === 0) {
1772
+ await this.$store.dispatch({
1773
+ type: 'ADD_LIST',
1774
+ key: codeKey,
1775
+ dataType: optionType || dataType
1776
+ })
1777
+ }
1778
+ if (!STATIS_OPTION || STATIS_OPTION === 'all') {
1779
+ if ((optionType || dataType) === 'treeList') {
1780
+ if (STATIS_FIELD_LEVEL === 'all') {
1781
+ this.$nextTick(() => {
1782
+ this.$refs.fieldOptionTree.setCheckedKeys(this.statFieldTreeOptions.map(item => item.id))
1783
+ })
1784
+ } else {
1785
+ this.editFieldForm.STATIS_CUSTOM_OPTIONS = this.statFieldTreeOptions.map(item => item.id)
1786
+ }
1787
+ } else {
1788
+ this.editFieldForm.STATIS_CUSTOM_OPTIONS = this.statFieldOptions.map(item => item.id)
1789
+ }
1790
+ } else {
1791
+ this.$nextTick(() => {
1792
+ this.$refs.fieldOptionTree.setCheckedKeys(this.editFieldForm.STATIS_CUSTOM_OPTIONS)
1793
+ })
1794
+ }
1795
+ }
1796
+ } else {
1797
+ this.addOptionForm = {
1798
+ ADD_TYPE: 'custom',
1799
+ ID,
1800
+ NAME,
1801
+ SCOPE,
1802
+ IS_RECORED_FLAG,
1803
+ FAVORITE_ITEM: [],
1804
+ STA_INDEX_TYPE: STA_INDEX_TYPE || 'default',
1805
+ ...otherData
1806
+ }
1807
+ this.addOptionDialog = true
1808
+ this.statFieldTabs = 'stat'
1809
+ }
1810
+ })
1811
+ },
1812
+ deleteStatItem (item) {
1813
+ this.$http.removeMulti({
1814
+ entityId: 'FM_REPORT_ITEM',
1815
+ ids: item.id
1816
+ })
1817
+ .then(data => {
1818
+ this.$message.success('删除成功')
1819
+ this.refreshData()
1820
+ })
1821
+ .catch(err => {
1822
+ this.$message.error(err.errorText)
1823
+ })
1824
+ },
1825
+ saveEntityField () {
1826
+ const { dataType, optionType } = this.statField || {}
1827
+ const formData = {}
1828
+ for (const key in this.editFieldForm) {
1829
+ if (key === 'STATIS_CUSTOM_OPTIONS' && this.editFieldForm[key]) {
1830
+ formData[`bean.${key}`] = this.editFieldForm[key].join(',')
1831
+ } else if (!key.includes('#')) {
1832
+ formData[`bean.${key}`] = this.editFieldForm[key]
1833
+ }
1834
+ }
1835
+ if (dataType === 'list' || dataType === 'treeList') {
1836
+ if ((optionType || dataType) === 'treeList') {
1837
+ if (this.statFieldTreeOptionSelectAll) {
1838
+ formData['bean.STATIS_OPTION'] = 'all'
1839
+ formData['bean.STATIS_CUSTOM_OPTIONS'] = ''
1840
+ } else {
1841
+ formData['bean.STATIS_OPTION'] = 'custom'
1842
+ }
1843
+ } else {
1844
+ if (this.statFieldOptionSelectAll) {
1845
+ formData['bean.STATIS_OPTION'] = 'all'
1846
+ formData['bean.STATIS_CUSTOM_OPTIONS'] = ''
1847
+ } else {
1848
+ formData['bean.STATIS_OPTION'] = 'custom'
1849
+ }
1850
+ }
1851
+ }
1852
+ this.$http.update({
1853
+ entityId: 'FM_REPORT_ITEM',
1854
+ ...formData
1855
+ })
1856
+ .then(data => {
1857
+ this.$message.success('设置成功')
1858
+ this.editFieldForm = {}
1859
+ this.editEntityFieldDialog = false
1860
+ this.refreshData()
1861
+ })
1862
+ },
1863
+ changeStatIndex (evt) {
1864
+ if (evt.added) {
1865
+ const { TYPE, CHART_TYPE } = this.reportInfo
1866
+ if (TYPE !== '1') {
1867
+ if (this.statisIndexList.length > 1) {
1868
+ if (CHART_TYPE === 'pie' || CHART_TYPE === 'circularPie' || CHART_TYPE === 'funnel') {
1869
+ this.$message.error(`${CHART_TYPE === 'funnel' ? '漏斗图' : '饼图'}只允许设置一个统计维度`)
1870
+ return this.getStatisIndex()
1871
+ } else if (this.columnList.length > 0) {
1872
+ this.$message.error('统计图设置了纵轴不允许添加多个统计维度')
1873
+ return this.getStatisIndex()
1874
+ }
1875
+ }
1876
+ }
1877
+ this.addStatIndex(evt.added)
1878
+ } else if (evt.moved) {
1879
+ this.moveStatIndex(evt.moved)
1880
+ }
1881
+ },
1882
+ addStatIndex (added) {
1883
+ const { element, newIndex } = added
1884
+ let form = {
1885
+ 'bean.REPORT': this.$query.id,
1886
+ 'bean.INDEX_NAME': element.NAME,
1887
+ 'bean.INDEX_TYPE': 'field',
1888
+ 'bean.INDEX_FIELD': element.STA_FIELD,
1889
+ 'bean.INDEX_FIELD_CODE': element.STA_FIELD_CODE,
1890
+ 'bean.INDEX_CALCULATE_METHOD': 'SUM',
1891
+ 'bean.ORDER_NUM': newIndex + 1
1892
+
1893
+ }
1894
+ if (element.IS_RECORED_FLAG) {
1895
+ form = {
1896
+ 'bean.REPORT': this.$query.id,
1897
+ 'bean.INDEX_NAME': element.NAME,
1898
+ 'bean.IS_RECORED_FLAG': '1',
1899
+ 'bean.ORDER_NUM': newIndex + 1
1900
+ }
1901
+ }
1902
+
1903
+ this.$http.save({
1904
+ entityId: 'FM_REPORT_STATIS_INDEX',
1905
+ ...form
1906
+ })
1907
+ .then(() => {
1908
+ this.getStatisIndex()
1909
+ this.refreshData()
1910
+ })
1911
+ .catch(err => {
1912
+ this.$message.error(err.errorText)
1913
+ })
1914
+ },
1915
+ openAddStatIndexDialog () {
1916
+ this.editStatIndexDialog = true
1917
+ this.editStatIndexForm = {
1918
+ REPORT: this.$query.id,
1919
+ INDEX_TYPE: 'custom',
1920
+ ORDER_NUM: this.statisIndexList.length
1921
+ }
1922
+ },
1923
+ editStatIndex (index) {
1924
+ this.editStatIndexDialog = true
1925
+ this.editStatIndexForm = index
1926
+ },
1927
+ deleteStatIndex (index) {
1928
+ this.$http.removeMulti({
1929
+ entityId: 'FM_REPORT_STATIS_INDEX',
1930
+ ids: index.ID
1931
+ })
1932
+ .then(() => {
1933
+ this.$message.success('删除成功')
1934
+ this.getStatisIndex()
1935
+ this.refreshData()
1936
+ })
1937
+ .catch(err => {
1938
+ this.$message.error(err.errorText)
1939
+ })
1940
+ },
1941
+ saveStatIndex () {
1942
+ const params = {
1943
+ entityId: 'FM_REPORT_STATIS_INDEX'
1944
+ }
1945
+ if (this.editStatIndexForm.ID) {
1946
+ params.action = 'update'
1947
+ } else {
1948
+ const { TYPE, CHART_TYPE } = this.reportInfo
1949
+ if (TYPE !== '1') {
1950
+ if (this.statisIndexList.length > 0) {
1951
+ if (CHART_TYPE === 'pie' || CHART_TYPE === 'circularPie' || CHART_TYPE === 'funnel') {
1952
+ this.$message.error(`${CHART_TYPE === 'funnel' ? '漏斗图' : '饼图'}只允许设置一个统计维度`)
1953
+ return
1954
+ } else if (this.columnList.length > 0) {
1955
+ this.$message.error('统计图设置了纵轴不允许添加多个统计维度')
1956
+ return
1957
+ }
1958
+ }
1959
+ }
1960
+ }
1961
+ if (!this.editStatIndexForm.INDEX_NAME) {
1962
+ this.$message.error('请输入指标标题')
1963
+ return
1964
+ }
1965
+ for (const key in this.editStatIndexForm) {
1966
+ if (!key.includes('#')) params[`bean.${key}`] = this.editStatIndexForm[key]
1967
+ }
1968
+ const field = this.reportStatisFields.statisIndexFields.find(item => item.id === this.editStatIndexForm.INDEX_FIELD)
1969
+ if (field) {
1970
+ params['bean.INDEX_FIELD_CODE'] = field.code
1971
+ }
1972
+ if (this.isSaveStatIndex) return
1973
+ this.isSaveStatIndex = true
1974
+ this.$http.save({
1975
+ ...params
1976
+ })
1977
+ .then(data => {
1978
+ this.$message.success('修改成功')
1979
+ this.editStatIndexForm = {}
1980
+ this.editStatIndexDialog = false
1981
+ this.isSaveStatIndex = false
1982
+ this.getStatisIndex()
1983
+ this.refreshData()
1984
+ })
1985
+ .catch(err => {
1986
+ this.isSaveStatIndex = false
1987
+ this.$message.error(err.errorText)
1988
+ })
1989
+ },
1990
+ moveStatIndex (moved) {
1991
+ const { element } = moved
1992
+ const str = this.statisIndexList.reduce((str, item, index) => (str += item.ID + ':' + index + ','), '')
1993
+ this.$http.$request({
1994
+ action: 'moveTree',
1995
+ entityId: 'FM_REPORT_STATIS_INDEX',
1996
+ id: element.ID,
1997
+ selfAttriName: 'ID',
1998
+ newParentId: 'root',
1999
+ orderString: str,
2000
+ orderAtrriName: 'ORDER_NUM'
2001
+ })
2002
+ .then(data => {
2003
+ this.getStatisIndex()
2004
+ this.refreshData()
2005
+ })
2006
+ },
2007
+ showAddOptionDialog (POSITION) {
2008
+ this.addOptionForm = {
2009
+ ADD_TYPE: 'custom',
2010
+ REPORT: this.$query.id,
2011
+ MODEL: '1',
2012
+ STATIS_CUSTOM_OPTIONS: [],
2013
+ POSITION,
2014
+ FAVORITE_ITEM: []
2015
+ }
2016
+ this.addOptionDialog = true
2017
+ },
2018
+ addStatOption () {
2019
+ const { isToField, UP, ADD_TYPE, STATIS_CUSTOM_OPTIONS, POSITION, FAVORITE_ITEM, ...otherForm } = this.addOptionForm
2020
+ if (isToField) {
2021
+ this.addOptionToField()
2022
+ return
2023
+ }
2024
+ const { TYPE } = this.reportInfo
2025
+ if (POSITION === '2' && TYPE !== '1') {
2026
+ if (this.statisIndexList.length > 1) {
2027
+ this.$message.error('统计图设置了多个统计维度不允许设置纵轴')
2028
+ return
2029
+ }
2030
+ }
2031
+ if (ADD_TYPE === 'field') {
2032
+ if (STATIS_CUSTOM_OPTIONS.length === 0) {
2033
+ this.$message.error('请选择统计选项')
2034
+ return
2035
+ }
2036
+ if (this.isSaveStatOption) return
2037
+ this.isSaveStatOption = true
2038
+ for (const item of STATIS_CUSTOM_OPTIONS) {
2039
+ const { code, text, dataType, optionType } = this.statOptionField
2040
+ let list = this.statOptionFieldOptions
2041
+ if ((optionType || dataType) === 'treeList') {
2042
+ list = this.statOptionFieldTreeOptions
2043
+ } else if (dataType === 'object' || dataType === 'user' || dataType === 'dept') {
2044
+ list = this.statOptionFieldData
2045
+ }
2046
+ const codeItem = list.find(option => option.id === item)
2047
+
2048
+ this.$http.save({
2049
+ 'bean.REPORT': this.$query.id,
2050
+ entityId: 'FM_REPORT_ITEM',
2051
+ 'bean.ADD_TYPE': 'custom',
2052
+ 'bean.MODEL': '1',
2053
+ 'bean.UP': UP,
2054
+ 'bean.ORDER_NUM': POSITION === '1' ? this.rowList.length : this.columnList.length,
2055
+ 'bean.POSITION': POSITION,
2056
+ 'bean.NAME': codeItem.name || codeItem.text,
2057
+ 'bean.SCOPE': JSON.stringify({ scopeParams: [{ field: code.replace(/\./g, '|'), mode: 'equal', values: codeItem.code || codeItem.id, text: `${text} 等于 ${codeItem.name || codeItem.text}` }] })
2058
+ })
2059
+ .then(() => {
2060
+ this.addOptionForm = {}
2061
+ this.addOptionDialog = false
2062
+ this.refreshData()
2063
+ this.isSaveStatOption = false
2064
+ })
2065
+ .catch(err => {
2066
+ this.$message.error(err.message)
2067
+ this.isSaveStatOption = false
2068
+ })
2069
+ }
2070
+ } else if (ADD_TYPE === 'favorite_item') {
2071
+ // 获取统计项
2072
+ if (this.isSaveStatOption) return
2073
+ this.isSaveStatOption = true
2074
+ this.$http.save({
2075
+ action: 'saveCustomItem',
2076
+ entityId: 'FM_REPORT_ITEM',
2077
+ reportId: this.$query.id,
2078
+ position: POSITION,
2079
+ reportObject: this.reportInfo.OBJECT,
2080
+ upItemId: UP,
2081
+ 'bean.ADD_TYPE': ADD_TYPE,
2082
+ 'bean.FAVORITE_ITEM': FAVORITE_ITEM.join(',')
2083
+ })
2084
+ .then(() => {
2085
+ this.$message.success('添加成功')
2086
+ this.addOptionForm = {}
2087
+ this.addOptionDialog = false
2088
+ this.refreshData()
2089
+ this.isSaveStatOption = false
2090
+ })
2091
+ .catch(err => {
2092
+ this.$message.error(err.message)
2093
+ this.isSaveStatOption = false
2094
+ })
2095
+ } else {
2096
+ if (!this.addOptionForm.NAME) {
2097
+ this.$message.error('请输入标题')
2098
+ return
2099
+ }
2100
+ const form = {}
2101
+ if (this.addOptionForm.ID) form.action = 'update'
2102
+ for (const key in otherForm) {
2103
+ if (!key.includes('#')) form[`bean.${key}`] = otherForm[key]
2104
+ }
2105
+ if (this.isSaveStatOption) return
2106
+ this.isSaveStatOption = true
2107
+ this.$http.save({
2108
+ entityId: 'FM_REPORT_ITEM',
2109
+ 'bean.REPORT': this.$query.id,
2110
+ 'bean.POSITION': POSITION,
2111
+ ...form
2112
+ })
2113
+ .then(() => {
2114
+ this.$message.success(this.addOptionForm.ID ? '修改成功' : '添加成功')
2115
+ this.addOptionForm = {}
2116
+ this.addOptionDialog = false
2117
+ this.isSaveStatOption = false
2118
+ this.refreshData()
2119
+ })
2120
+ .catch(err => {
2121
+ this.$message.error(err.message)
2122
+ this.isSaveStatOption = false
2123
+ })
2124
+ }
2125
+ },
2126
+ showAddOptionToField () {
2127
+ this.addOptionForm = {
2128
+ isToField: true,
2129
+ ADD_TYPE: 'custom',
2130
+ MODEL: '1',
2131
+ STATIS_CUSTOM_OPTIONS: [],
2132
+ FAVORITE_ITEM: []
2133
+ }
2134
+ this.addOptionDialog = true
2135
+ this.statFieldTabs = 'stat'
2136
+ },
2137
+ addOptionToField () {
2138
+ const { ID, ADD_TYPE, STATIS_CUSTOM_OPTIONS, FAVORITE_ITEM, NAME, SCOPE } = this.addOptionForm
2139
+ if (!this.addFieldForm.options) this.$set(this.addFieldForm, 'options', [])
2140
+ if (ID !== undefined) {
2141
+ this.addFieldForm.options.splice(ID, 1, { ADD_TYPE: 'custom', NAME, STATIS_SCOPE: SCOPE })
2142
+ } else {
2143
+ if (ADD_TYPE === 'field') {
2144
+ for (const item of STATIS_CUSTOM_OPTIONS) {
2145
+ const { code, text, dataType, optionType } = this.statOptionField
2146
+ let list = this.statOptionFieldOptions
2147
+ if ((optionType || dataType) === 'treeList') {
2148
+ list = this.statOptionFieldTreeOptions
2149
+ } else if (dataType === 'object' || dataType === 'user' || dataType === 'dept') {
2150
+ list = this.statOptionFieldData
2151
+ }
2152
+ const codeItem = list.find(option => option.id === item)
2153
+ this.addFieldForm.options.push({
2154
+ ADD_TYPE: 'custom',
2155
+ NAME: codeItem.name || codeItem.text,
2156
+ STATIS_SCOPE: JSON.stringify({ scopeParams: [{ field: code.replace(/\./g, '|'), mode: 'equal', values: codeItem.code || codeItem.id, text: `${text} 等于 ${codeItem.name || codeItem.text}` }] })
2157
+ })
2158
+ }
2159
+ } else if (ADD_TYPE === 'favorite_item') {
2160
+ const allOptions = this.reportStatisFields.customFields.reduce((arr, item) => [...arr, ...item.children], [])
2161
+ FAVORITE_ITEM.forEach(item => {
2162
+ const option = allOptions.find(option => option.id === item)
2163
+ this.addFieldForm.options.push({
2164
+ ADD_TYPE: 'custom',
2165
+ NAME: option.data.NAME,
2166
+ STATIS_SCOPE: option.data.STATIS_SCOPE
2167
+ })
2168
+ })
2169
+ } else {
2170
+ this.addFieldForm.options.push({
2171
+ ADD_TYPE: 'custom',
2172
+ NAME: NAME,
2173
+ STATIS_SCOPE: SCOPE
2174
+ })
2175
+ }
2176
+ }
2177
+
2178
+ this.addOptionDialog = false
2179
+ this.addOptionForm = {}
2180
+ },
2181
+ editFieldOption (option, index) {
2182
+ this.addOptionForm = {
2183
+ ID: index,
2184
+ isToField: true,
2185
+ ADD_TYPE: 'custom',
2186
+ NAME: option.NAME,
2187
+ SCOPE: option.STATIS_SCOPE,
2188
+ FAVORITE_ITEM: []
2189
+ }
2190
+ this.addOptionDialog = true
2191
+ this.statFieldTabs = 'stat'
2192
+ },
2193
+ addCustomField () {
2194
+ const { ID, options, FIELD_NAME, IS_FAVORITE } = this.addFieldForm
2195
+ if (!FIELD_NAME) {
2196
+ this.$message.error('请输入字段名称')
2197
+ return
2198
+ }
2199
+ if (!options || options.length === 0) {
2200
+ this.$message.error('请添加统计项')
2201
+ return
2202
+ }
2203
+ const form = {
2204
+ action: 'saveFavoriteField',
2205
+ entityId: 'FM_REPORT_FIELD_FAVORITE',
2206
+ 'bean.FIELD_NAME': FIELD_NAME,
2207
+ 'bean.IS_FAVORITE': IS_FAVORITE,
2208
+ staObject: this.reportInfo.OBJECT,
2209
+ subData: JSON.stringify(options.map((item, index) => ({ ...item, ORDER_NUM: index + 1 })))
2210
+ }
2211
+ if (ID) {
2212
+ form['bean.ID'] = ID
2213
+ }
2214
+ if (IS_FAVORITE) {
2215
+ form['bean.ENTITY_ID'] = this.reportInfo.OBJECT
2216
+ form['bean.REPORT'] = null
2217
+ } else {
2218
+ form['bean.ENTITY_ID'] = null
2219
+ form['bean.REPORT'] = this.$query.id
2220
+ }
2221
+ if (this.isSaveCustomField) return
2222
+ this.isSaveCustomField = true
2223
+ this.$http.$post(form)
2224
+ .then(() => {
2225
+ this.$message.success(ID ? '修改成功' : '添加成功')
2226
+ this.getReportStatisFields()
2227
+ this.addFieldForm = {}
2228
+ this.addFieldDialog = false
2229
+ this.isSaveCustomField = false
2230
+ })
2231
+ .catch(err => {
2232
+ this.isSaveCustomField = false
2233
+ this.$message.error(err.message)
2234
+ })
2235
+ },
2236
+ editCustomField (field) {
2237
+ this.addFieldForm = {
2238
+ ID: field.id,
2239
+ FIELD_NAME: field.text,
2240
+ IS_FAVORITE: field.isFavoriteFlag,
2241
+ options: field.children.map(item => ({ ADD_TYPE: item.data.ADD_TYPE, NAME: item.data.NAME, STATIS_SCOPE: item.data.STATIS_SCOPE }))
2242
+ }
2243
+ this.addFieldDialog = true
2244
+ },
2245
+ deleteCustomField (field) {
2246
+ this.$http.removeMulti({
2247
+ entityId: 'FM_REPORT_FIELD_FAVORITE',
2248
+ ids: field.id
2249
+ })
2250
+ .then(() => {
2251
+ this.$message.success('删除成功')
2252
+ this.getReportStatisFields()
2253
+ })
2254
+ .catch(err => {
2255
+ this.$message.error(err.message)
2256
+ })
2257
+ }
2258
+ },
2259
+ created () {
2260
+ this.$store.commit('SWITCH_MENU_SHOW', false)
2261
+ this.$store.commit('SWITCH_APP_NAV_SHOW', false)
2262
+ this.getReportInfo()
2263
+ this.getStatList()
2264
+ this.getStatisIndex()
2265
+ this.getCommonReportStatisFields()
2266
+ this.getFieldConfigs()
2267
+ },
2268
+ mounted () {
2269
+ const { openType } = this.$query
2270
+ if (openType === '2') {
2271
+ this.$refs.container.style.position = 'static'
2272
+ }
2273
+ },
2274
+ beforeDestroy () {
2275
+ this.$store.commit('SWITCH_MENU_SHOW', true)
2276
+ this.$store.commit('SWITCH_APP_NAV_SHOW', true)
2277
+ }
2278
+ }
2279
+ </script>
2280
+
2281
+ <style lang="scss" scoped>
2282
+ .container {
2283
+ position: fixed;
2284
+ top: -0;
2285
+ left: -0;
2286
+ width: 100%;
2287
+ height: 100%;
2288
+ background: #F3F5FA;
2289
+ }
2290
+ .report-header {
2291
+ height: 56px;
2292
+ background: #fff;
2293
+ padding: 0 20px;
2294
+ display: flex;
2295
+ align-items: center;
2296
+ justify-content: space-between;
2297
+ border-bottom: 1px solid #E8E8E8;
2298
+ }
2299
+ .report-title {
2300
+ display: flex;
2301
+ align-items: center;
2302
+ }
2303
+ .report-back {
2304
+ font-size: 20px;
2305
+ cursor: pointer;
2306
+ position: relative;
2307
+ top: 1px
2308
+ }
2309
+ .report-name {
2310
+ color: #222;
2311
+ font-size: 16px;
2312
+ margin: 0 12px 0 6px;
2313
+ display: flex;
2314
+ align-items: center;
2315
+ white-space: nowrap;
2316
+ i {
2317
+ font-size: 18px;
2318
+ color: #444;
2319
+ cursor: pointer;
2320
+ margin-left: 8px;
2321
+ }
2322
+ }
2323
+ .report-bar {
2324
+ padding: 4px 20px;
2325
+ box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.15);
2326
+ background: #fff;
2327
+ margin-bottom: 2px;
2328
+ }
2329
+ .report-bar__item {
2330
+ margin-right: 40px;
2331
+ }
2332
+ .reprot-bar__type {
2333
+ width: 140px;
2334
+ cursor: pointer;
2335
+ &::v-deep {
2336
+ .el-input__inner {
2337
+ cursor: pointer;
2338
+ }
2339
+ }
2340
+ }
2341
+ .report-type__list {
2342
+ width: 280px;
2343
+ display: flex;
2344
+ flex-wrap: wrap;
2345
+ }
2346
+ .report-type__item {
2347
+ width: 70px;
2348
+ height: 70px;
2349
+ display: flex;
2350
+ flex-direction: column;
2351
+ justify-content: center;
2352
+ align-items: center;
2353
+ cursor: pointer;
2354
+ line-height: 20px;
2355
+ &:hover {
2356
+ background: #F2F3F7;
2357
+ border-radius: 4px;
2358
+ }
2359
+ &.active {
2360
+ i, span {
2361
+ @include font_color_primary;
2362
+ }
2363
+ }
2364
+ i {
2365
+ font-size: 18px;
2366
+ color: #666;
2367
+ margin-bottom: 8px;
2368
+ }
2369
+ span {
2370
+ font-size: 12px;
2371
+ color: #444
2372
+ }
2373
+ }
2374
+ .report-scope__text {
2375
+ display: inline-block;
2376
+ max-width: 500px;
2377
+ white-space: nowrap;
2378
+ overflow: hidden;
2379
+ text-overflow: ellipsis;
2380
+ position: relative;
2381
+ top: 6px;
2382
+ margin-right: 6px;
2383
+ }
2384
+ .report-design {
2385
+ display: flex;
2386
+ height: calc(100% - 107px);
2387
+ }
2388
+ .report-left-container {
2389
+ height: 100%;
2390
+ }
2391
+ .report-left__inner {
2392
+ width: 220px;
2393
+ height: 100%;
2394
+ overflow: hidden;
2395
+ }
2396
+ .report-left__inner--fold {
2397
+ width: 0
2398
+ }
2399
+
2400
+ .report-field {
2401
+ width: 220px;
2402
+ height: 70%;
2403
+ background: #fff;
2404
+ }
2405
+ .report-field__title {
2406
+ height: 40px;
2407
+ background: #F5F7FA;
2408
+ padding: 0 14px;
2409
+ display: flex;
2410
+ align-items: center;
2411
+ justify-content: space-between;
2412
+ span {
2413
+ color: #222;
2414
+ }
2415
+ i {
2416
+ color: #888;
2417
+ cursor: pointer;
2418
+ font-size: 18px;
2419
+ }
2420
+ }
2421
+ .report-left__foldicon {
2422
+ color: #888;
2423
+ cursor: pointer;
2424
+ font-size: 18px;
2425
+ line-height: 40px;
2426
+ margin: 0 10px;
2427
+ }
2428
+ .report-field__container {
2429
+ height: 100%;
2430
+ }
2431
+ .report-field__container, .report-index {
2432
+ height: calc(100% - 40px);
2433
+ }
2434
+ .report-index {
2435
+ width: 220px;
2436
+ height: 30%;
2437
+ overflow: auto;
2438
+ background: #fff;
2439
+ }
2440
+ .report-index__content {
2441
+ height: calc(100% - 40px);
2442
+ overflow: auto;
2443
+ }
2444
+ .field-tab {
2445
+ text-align: center;
2446
+ margin: 10px 0 10px 24px;
2447
+ }
2448
+
2449
+ .report-entity-field, .report-custom-field {
2450
+ height: calc(100% - 52px);
2451
+ overflow: auto;
2452
+ }
2453
+ .report-field__name {
2454
+ height: 32px;
2455
+ padding: 0 20px 0 30px;
2456
+ display: flex;
2457
+ align-items: center;
2458
+ justify-content: space-between;
2459
+ cursor: pointer;
2460
+ position: relative;
2461
+ >span:first-child {
2462
+ flex: 1;
2463
+ white-space: nowrap;
2464
+ overflow: hidden;
2465
+ text-overflow: ellipsis;
2466
+ }
2467
+ i {
2468
+ color: #888;
2469
+ }
2470
+ &:hover {
2471
+ background: #E6F6FF;
2472
+ .report-field__handler {
2473
+ display: inline;
2474
+ }
2475
+ .report-stat__operate {
2476
+ display: inline;
2477
+ }
2478
+ }
2479
+ }
2480
+ .report-field__handler {
2481
+ display: none;
2482
+ }
2483
+ .report-field__subitem {
2484
+ .report-field__name {
2485
+ padding-left: 50px;
2486
+ >i:first-child {
2487
+ left: 30px;
2488
+ }
2489
+ }
2490
+ }
2491
+ .report-field__subchild {
2492
+ .report-field__name {
2493
+ padding-left: 70px;
2494
+
2495
+ }
2496
+
2497
+ }
2498
+ .report-field__foldicon {
2499
+ position: absolute;
2500
+ left: 10px;
2501
+ transition: all .5s;
2502
+ }
2503
+ .report-field__foldicon--open {
2504
+ transform: rotate(90deg);
2505
+ }
2506
+ .report-custom-field {
2507
+ display: flex;
2508
+ flex-direction: column;
2509
+ .report-field__list {
2510
+ flex: 1;
2511
+ overflow: auto;
2512
+ }
2513
+ }
2514
+ .report-field__item--meta {
2515
+ >.report-field__name {
2516
+ color: red;
2517
+ }
2518
+ }
2519
+ .report-field__operate {
2520
+ text-align: center;
2521
+ height: 40px;
2522
+ line-height: 40px;
2523
+ border-top: 1px solid #e3e3e3;
2524
+ }
2525
+ .common-field-option__checkboxgroup {
2526
+ padding: 0 30px;
2527
+ &::v-deep {
2528
+ .el-checkbox {
2529
+ display: block;
2530
+ }
2531
+ }
2532
+ }
2533
+ /***统计维度 */
2534
+ .report-stat {
2535
+ height: 100%;
2536
+ width: 280px;
2537
+ flex-shrink: 0;
2538
+ margin: 0 10px;
2539
+ display: flex;
2540
+ flex-direction: column;
2541
+ }
2542
+ .report-stat-container {
2543
+ flex: 2;
2544
+ background: #FFFFFF;
2545
+ margin-top: 10px;
2546
+ overflow: hidden;
2547
+ }
2548
+ .report-stat__title {
2549
+ height: 40px;
2550
+ border-bottom: 1px solid #DCDFE6;
2551
+ padding: 0 12px;
2552
+ display: flex;
2553
+ align-items: center;
2554
+ justify-content: space-between;
2555
+ >span {
2556
+ color: #222
2557
+ }
2558
+ }
2559
+ .report-stat-index {
2560
+ flex: 1;
2561
+ margin-bottom: 10px;
2562
+ }
2563
+ .report-stat__content {
2564
+ height: calc(100% - 40px);
2565
+ position: relative
2566
+ }
2567
+ .drop-indicator {
2568
+ position: absolute;
2569
+ width: 100%;
2570
+ height: 2px;
2571
+ @include bg_color_primary;
2572
+ }
2573
+ .report-stat__list {
2574
+ height: 100%;
2575
+ overflow: auto;
2576
+ }
2577
+ .report-stat__item {
2578
+ &::v-deep {
2579
+ .ghost {
2580
+ background: #E6F6FF;
2581
+ }
2582
+ }
2583
+ }
2584
+
2585
+ .report-stat__name {
2586
+ padding: 0 16px;
2587
+ height: 32px;
2588
+ display: flex;
2589
+ justify-content: space-between;
2590
+ align-items: center;
2591
+ cursor: pointer;
2592
+ .report-stat__text {
2593
+ flex: 1;
2594
+ white-space: nowrap;
2595
+ overflow: hidden;
2596
+ text-overflow: ellipsis;
2597
+ }
2598
+ &:hover {
2599
+ background: #E6F6FF;
2600
+ .report-stat__operate {
2601
+ display: inline;
2602
+ }
2603
+ }
2604
+ }
2605
+ .report-stat__operate {
2606
+ display: none;
2607
+ }
2608
+ .delete-icon {
2609
+ margin-left: 8px;
2610
+ &::v-deep {
2611
+ &.el-button--text {
2612
+ color: red;
2613
+ }
2614
+ }
2615
+ }
2616
+
2617
+ /*** 显示区域 */
2618
+ .report-view {
2619
+ position: relative;
2620
+ margin: 10px;
2621
+ margin-left: 0;
2622
+ flex: 1;
2623
+ height: calc(100% - 20px);
2624
+ overflow: auto;
2625
+ }
2626
+ .null-data {
2627
+ background: #fff;
2628
+ height: 100%;
2629
+ display: flex;
2630
+ flex-direction: column;
2631
+ align-items: center;
2632
+ >i {
2633
+ margin-top: 100px;
2634
+ font-size: 120px;
2635
+ }
2636
+ >span {
2637
+ color: #666;
2638
+ }
2639
+ }
2640
+ /***新增字段弹窗 */
2641
+ .add-field-item {
2642
+ display: flex;
2643
+ align-items: center;
2644
+ margin: 24px 0;
2645
+ >label {
2646
+ width: 100px;
2647
+ margin-right: 8px;
2648
+ flex-shrink: 0;
2649
+ position: relative;
2650
+ &.is-required::before {
2651
+ position: absolute;
2652
+ left: -8px;
2653
+ content: '*';
2654
+ color: red
2655
+ }
2656
+ }
2657
+ }
2658
+ .add-field-input__flex {
2659
+ display: flex;
2660
+ }
2661
+ .add-field-input {
2662
+ &::v-deep {
2663
+ .el-input {
2664
+ width: 200px;
2665
+ }
2666
+ }
2667
+ }
2668
+ .add-field__order {
2669
+ &::v-deep {
2670
+ .el-input {
2671
+ width: 120px;
2672
+ margin-right: 8px;
2673
+ }
2674
+ }
2675
+ }
2676
+ .add-field__checkall {
2677
+ &::v-deep {
2678
+ &.el-checkbox {
2679
+ margin-right: 30px;
2680
+ }
2681
+ }
2682
+ }
2683
+ .add-field__checkgroup {
2684
+ display: inline;
2685
+ }
2686
+ .field-option__item {
2687
+ width: 300px;
2688
+ height: 32px;
2689
+ display: flex;
2690
+ justify-content: space-between;
2691
+ align-items: center;
2692
+ background: #F2F3F7;
2693
+ margin-bottom: 10px;
2694
+ padding: 0 12px 0 6px;
2695
+ color: #444;
2696
+ cursor: pointer;
2697
+ &:hover {
2698
+ @include bg_color_primary(.1);
2699
+ .report-stat__operate {
2700
+ display: inline;
2701
+ }
2702
+ }
2703
+
2704
+ }
2705
+ .common-field__fold {
2706
+ display: inline-block;
2707
+ transition: all .5s;
2708
+ cursor: pointer;
2709
+ }
2710
+ .common-field__item {
2711
+ &.fold {
2712
+ .common-field__fold {
2713
+ transform: rotate(180deg);
2714
+ }
2715
+ }
2716
+ }
2717
+ .common-field__name {
2718
+ width: 300px;
2719
+ display: flex;
2720
+ justify-content: space-between;
2721
+ }
2722
+ .custom-dialog {
2723
+ &::v-deep {
2724
+ .el-dialog__footer {
2725
+ text-align: center;
2726
+ border-top: 1px solid #DCDFE6;
2727
+ padding-bottom: 10px;
2728
+ }
2729
+ }
2730
+ }
2731
+ .custom-dialog__content {
2732
+ padding: 0 20px;
2733
+ }
2734
+ .stat-null-data {
2735
+ width: 100%;
2736
+ padding: 20px;
2737
+ box-sizing: border-box;
2738
+ position: absolute;
2739
+ top: 40%;
2740
+ left: 50%;
2741
+ transform: translate(-50%, -50%);
2742
+ text-align: center;
2743
+ >i {
2744
+ font-size: 80px;
2745
+ }
2746
+ >p {
2747
+ color: #666;
2748
+ font-size: 12px;
2749
+ line-height: 20px;
2750
+ }
2751
+ }
2752
+ .field-tree {
2753
+ max-height: 400px;
2754
+ overflow: auto;
2755
+ }
2756
+ .attribute-pane__content {
2757
+ padding: 0 10px;
2758
+ height: 100%;
2759
+ }
2760
+ .form__label {
2761
+ margin: 10px 0;
2762
+ }
2763
+ .form-content {
2764
+ height: calc(100% - 76px);
2765
+ padding-bottom: 20px;
2766
+ overflow: auto;
2767
+ &::v-deep {
2768
+ .table-form-item__label {
2769
+ width: 90px;
2770
+ padding-left: 0;
2771
+ }
2772
+ .table-form-item__content {
2773
+ .el-input, .el-input-number--medium {
2774
+ width: 200px;
2775
+ }
2776
+ }
2777
+ }
2778
+ }
2779
+ .report-view__chart {
2780
+ height: calc(100% - 40px);
2781
+ background: #fff;
2782
+ }
2783
+ </style>