simple-frame-unit 1.0.2

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 (260) hide show
  1. package/.env.dev +14 -0
  2. package/CHANGELOG.md +9 -0
  3. package/README.md +24 -0
  4. package/dist/ed-frame-vue.common.1.js +11046 -0
  5. package/dist/ed-frame-vue.common.1.js.map +1 -0
  6. package/dist/ed-frame-vue.common.2.js +1715 -0
  7. package/dist/ed-frame-vue.common.2.js.map +1 -0
  8. package/dist/ed-frame-vue.common.js +53427 -0
  9. package/dist/ed-frame-vue.common.js.map +1 -0
  10. package/dist/ed-frame-vue.umd.1.js +11046 -0
  11. package/dist/ed-frame-vue.umd.1.js.map +1 -0
  12. package/dist/ed-frame-vue.umd.2.js +1715 -0
  13. package/dist/ed-frame-vue.umd.2.js.map +1 -0
  14. package/dist/ed-frame-vue.umd.js +53437 -0
  15. package/dist/ed-frame-vue.umd.js.map +1 -0
  16. package/dist/ed-frame-vue.umd.min.1.js +17 -0
  17. package/dist/ed-frame-vue.umd.min.1.js.map +1 -0
  18. package/dist/ed-frame-vue.umd.min.2.js +4 -0
  19. package/dist/ed-frame-vue.umd.min.2.js.map +1 -0
  20. package/dist/ed-frame-vue.umd.min.js +470 -0
  21. package/dist/ed-frame-vue.umd.min.js.map +1 -0
  22. package/import.easydata.js +46 -0
  23. package/lib/CHANGELOG.md +18 -0
  24. package/lib/README.md +27 -0
  25. package/lib/api/ds/index.js +124 -0
  26. package/lib/api/easyData.js +90 -0
  27. package/lib/api/easyform/easyForm.js +32 -0
  28. package/lib/api/index.js +61 -0
  29. package/lib/api/interface/index.js +32 -0
  30. package/lib/api/system.js +20 -0
  31. package/lib/index.js +80 -0
  32. package/lib/packages/BasicTemplate/EasyDataTemplate.vue +189 -0
  33. package/lib/packages/BasicTemplate/Props.js +64 -0
  34. package/lib/packages/BasicTemplate/components/TemplateComp.vue +263 -0
  35. package/lib/packages/BasicTemplate/components/TemplateViews.vue +292 -0
  36. package/lib/packages/BasicTemplate/hooks/business.js +74 -0
  37. package/lib/packages/BasicTemplate/hooks/getFormData.js +89 -0
  38. package/lib/packages/BasicTemplate/hooks/queryFormData.js +194 -0
  39. package/lib/packages/BasicTemplate/hooks/submitForm.js +53 -0
  40. package/lib/packages/BasicTemplate/hooks/useEmits.js +15 -0
  41. package/lib/packages/BasicTemplate/hooks/validate.js +42 -0
  42. package/lib/packages/EasyDataForm/EasyDataForm.vue +597 -0
  43. package/lib/packages/EasyDataForm/Props.js +22 -0
  44. package/lib/packages/EasyDataForm/components/FormItem.vue +228 -0
  45. package/lib/packages/EasyDataForm/hooks/useChosePopup.js +85 -0
  46. package/lib/packages/EasyDataForm/hooks/useEmits.js +19 -0
  47. package/lib/packages/EasyDataForm/hooks/useForm.js +169 -0
  48. package/lib/packages/EasyDataForm/hooks/useUpload.js +168 -0
  49. package/lib/packages/EasyDataList/EasyDataList.vue +348 -0
  50. package/lib/packages/EasyDataList/Props.js +116 -0
  51. package/lib/packages/EasyDataList/components/BasicModal.vue +150 -0
  52. package/lib/packages/EasyDataList/components/FormAction.vue +63 -0
  53. package/lib/packages/EasyDataList/hooks/useEmits.js +30 -0
  54. package/lib/packages/EasyDataList/hooks/useForm.js +62 -0
  55. package/lib/packages/EasyDataList/hooks/useTable.js +314 -0
  56. package/lib/packages/EasyDataTable/EasyDataTable.vue +233 -0
  57. package/lib/packages/EasyDataView/EasyDataView.vue +105 -0
  58. package/lib/packages/EdRichPreview/index.js +32 -0
  59. package/lib/packages/EdRichText/index.vue +167 -0
  60. package/lib/packages/EdRichText/replaceUrl.js +49 -0
  61. package/lib/packages/components/FileView.vue +97 -0
  62. package/lib/packages/index.js +11 -0
  63. package/lib/packages/mixins/EasyDataMixins.js +133 -0
  64. package/lib/packages/mixins/useTable.jsx +130 -0
  65. package/lib/pages/DataSource/index.js +8 -0
  66. package/lib/pages/DataSource/src/components/ControlViews/BaseProps.js +103 -0
  67. package/lib/pages/DataSource/src/components/ControlViews/control.js +1089 -0
  68. package/lib/pages/DataSource/src/components/ControlViews/index.vue +301 -0
  69. package/lib/pages/DataSource/src/components/TableOperationModal.vue +225 -0
  70. package/lib/pages/DataSource/src/components/TablePropsModal.vue +367 -0
  71. package/lib/pages/DataSource/src/components/ViewPropsModal.vue +737 -0
  72. package/lib/pages/DataSource/src/components/modal/ChooseDict.vue +119 -0
  73. package/lib/pages/DataSource/src/hooks/useTable.js +138 -0
  74. package/lib/pages/DataSource/src/index.vue +431 -0
  75. package/lib/pages/Interface/index.js +8 -0
  76. package/lib/pages/Interface/src/components/InterfaceCall.vue +73 -0
  77. package/lib/pages/Interface/src/components/InterfaceDepend.vue +299 -0
  78. package/lib/pages/Interface/src/components/InterfaceFee.vue +131 -0
  79. package/lib/pages/Interface/src/components/InterfaceMessage.vue +878 -0
  80. package/lib/pages/Interface/src/components/InterfaceMock.vue +203 -0
  81. package/lib/pages/Interface/src/components/InterfaceParam.vue +308 -0
  82. package/lib/pages/Interface/src/components/InterfaceRepeat.vue +281 -0
  83. package/lib/pages/Interface/src/components/InterfaceVariable.vue +31 -0
  84. package/lib/pages/Interface/src/index.vue +216 -0
  85. package/lib/pages/Template/index.js +8 -0
  86. package/lib/pages/Template/src/components/DefineModal.vue +524 -0
  87. package/lib/pages/Template/src/components/TemplatePreview.vue +109 -0
  88. package/lib/pages/Template/src/components/model/AddDialog.vue +60 -0
  89. package/lib/pages/Template/src/components/model/TemplatePreview2.vue +101 -0
  90. package/lib/pages/Template/src/hooks/index.js +3 -0
  91. package/lib/pages/Template/src/hooks/useEmits.js +64 -0
  92. package/lib/pages/Template/src/index.vue +124 -0
  93. package/lib/popup/index.js +8 -0
  94. package/lib/popup/src/DataSourceChoose.vue +44 -0
  95. package/lib/popup/src/DataSourceViewIdChoose.vue +67 -0
  96. package/lib/popup/src/DictChoose.vue +104 -0
  97. package/lib/popup/src/InterfaceChoose.vue +46 -0
  98. package/lib/popup/src/OrgChoose.vue +121 -0
  99. package/lib/popup/src/RoleChoose.vue +101 -0
  100. package/lib/popup/src/TemplateChoose.vue +43 -0
  101. package/lib/popup/src/UserChoose.vue +161 -0
  102. package/lib/popup//347/273/204/344/273/266/345/274/200/345/217/221/350/247/204/350/214/203.md +25 -0
  103. package/lib/style/custom.scss +126 -0
  104. package/lib/style/deep.scss +109 -0
  105. package/lib/style/index.scss +4 -0
  106. package/lib/utils/MapLoader.js +48 -0
  107. package/lib/utils/dateUtils.js +58 -0
  108. package/lib/utils/index.js +8 -0
  109. package/lib/utils/setting.js +25 -0
  110. package/lib/utils/sortable/index.js +3784 -0
  111. package/lib/utils/useBusiness.js +212 -0
  112. package/lib/utils/utils.js +588 -0
  113. package/package.json +77 -0
  114. package/src/App.vue +12 -0
  115. package/src/assets/Vue.png +0 -0
  116. package/src/assets/avatar.png +0 -0
  117. package/src/assets/images/bg.png +0 -0
  118. package/src/assets/images/logo-bills.png +0 -0
  119. package/src/assets/images/pic.png +0 -0
  120. package/src/assets/images/weplus-logo.png +0 -0
  121. package/src/assets/marker.png +0 -0
  122. package/src/assets/styles/common.scss +359 -0
  123. package/src/assets/styles/ele-docs.css +3278 -0
  124. package/src/assets/styles/fonts/icomoon.eot +0 -0
  125. package/src/assets/styles/fonts/icomoon.svg +14 -0
  126. package/src/assets/styles/fonts/icomoon.ttf +0 -0
  127. package/src/assets/styles/fonts/icomoon.woff +0 -0
  128. package/src/assets/styles/fonts/style.css +39 -0
  129. package/src/assets/styles/higtlightEle.css +84 -0
  130. package/src/assets/svg/code.svg +7 -0
  131. package/src/assets/svg/password.svg +1 -0
  132. package/src/components/Popups/DiyCompDictChoose.vue +112 -0
  133. package/src/components/Popups/index.js +28 -0
  134. package/src/components/ed-base-vue/global/variable.js +8 -0
  135. package/src/components/ed-base-vue/index.js +81 -0
  136. package/src/components/ed-base-vue/package/EdCard/index.js +7 -0
  137. package/src/components/ed-base-vue/package/EdCard/src/index.vue +87 -0
  138. package/src/components/ed-base-vue/package/EdCodeEditor/index.js +8 -0
  139. package/src/components/ed-base-vue/package/EdCodeEditor/src/AceEditor/AceConfig.js +71 -0
  140. package/src/components/ed-base-vue/package/EdCodeEditor/src/AceEditor/Editor.vue +137 -0
  141. package/src/components/ed-base-vue/package/EdCodeEditor/src/AceEditor/Toolbar.vue +68 -0
  142. package/src/components/ed-base-vue/package/EdCodeEditor/src/AceEditor/index.vue +119 -0
  143. package/src/components/ed-base-vue/package/EdCodeEditor/src/AceEditor/webpack-resolver.js +51 -0
  144. package/src/components/ed-base-vue/package/EdCodeEditor/src/Codemirror/Toolbar.vue +57 -0
  145. package/src/components/ed-base-vue/package/EdCodeEditor/src/Codemirror/config.js +64 -0
  146. package/src/components/ed-base-vue/package/EdCodeEditor/src/Codemirror/index.vue +309 -0
  147. package/src/components/ed-base-vue/package/EdCodeEditor/src/EdCodeEditor.vue +238 -0
  148. package/src/components/ed-base-vue/package/EdDate/index.js +8 -0
  149. package/src/components/ed-base-vue/package/EdDate/src/index.js +50 -0
  150. package/src/components/ed-base-vue/package/EdDescriptions/index.js +8 -0
  151. package/src/components/ed-base-vue/package/EdDescriptions/src/EdDescriptions.vue +46 -0
  152. package/src/components/ed-base-vue/package/EdDescriptions/src/EdDescriptionsItem.js +20 -0
  153. package/src/components/ed-base-vue/package/EdDescriptions/src/Props.js +20 -0
  154. package/src/components/ed-base-vue/package/EdDialog/index.js +8 -0
  155. package/src/components/ed-base-vue/package/EdDialog/src/EdDialog.vue +138 -0
  156. package/src/components/ed-base-vue/package/EdDialog/src/Props.js +91 -0
  157. package/src/components/ed-base-vue/package/EdDialog/src/components/DialogFooter.vue +42 -0
  158. package/src/components/ed-base-vue/package/EdDialog/src/components/DialogWrapper.vue +53 -0
  159. package/src/components/ed-base-vue/package/EdDrawer/index.js +8 -0
  160. package/src/components/ed-base-vue/package/EdDrawer/src/DrawerFooter.vue +41 -0
  161. package/src/components/ed-base-vue/package/EdDrawer/src/EdDrawer.vue +150 -0
  162. package/src/components/ed-base-vue/package/EdDrawer/src/props.js +71 -0
  163. package/src/components/ed-base-vue/package/EdFlow/index.js +8 -0
  164. package/src/components/ed-base-vue/package/EdFlow/src/EdFlowItem.vue +733 -0
  165. package/src/components/ed-base-vue/package/EdFlow/src/index.vue +148 -0
  166. package/src/components/ed-base-vue/package/EdForm/index.js +8 -0
  167. package/src/components/ed-base-vue/package/EdForm/src/EdForm.vue +172 -0
  168. package/src/components/ed-base-vue/package/EdForm/src/Props.js +33 -0
  169. package/src/components/ed-base-vue/package/EdForm/src/components/EdFormItem.vue +34 -0
  170. package/src/components/ed-base-vue/package/EdIcons/index.js +8 -0
  171. package/src/components/ed-base-vue/package/EdIcons/src/hooks/Icons.js +406 -0
  172. package/src/components/ed-base-vue/package/EdIcons/src/hooks/Icons1.js +830 -0
  173. package/src/components/ed-base-vue/package/EdIcons/src/index.vue +13 -0
  174. package/src/components/ed-base-vue/package/EdImage/index.js +8 -0
  175. package/src/components/ed-base-vue/package/EdImage/src/index.vue +28 -0
  176. package/src/components/ed-base-vue/package/EdInputArray/index.js +8 -0
  177. package/src/components/ed-base-vue/package/EdInputArray/src/Props.js +26 -0
  178. package/src/components/ed-base-vue/package/EdInputArray/src/index.vue +97 -0
  179. package/src/components/ed-base-vue/package/EdInputColor/index.js +8 -0
  180. package/src/components/ed-base-vue/package/EdInputColor/src/InputColor.vue +81 -0
  181. package/src/components/ed-base-vue/package/EdInputMap/index.js +9 -0
  182. package/src/components/ed-base-vue/package/EdInputMap/src/EdInputMap.vue +246 -0
  183. package/src/components/ed-base-vue/package/EdInputMap/src/EdInputMapProps.js +6 -0
  184. package/src/components/ed-base-vue/package/EdInputPop/index.js +13 -0
  185. package/src/components/ed-base-vue/package/EdInputPop/src/EdInputPop.vue +144 -0
  186. package/src/components/ed-base-vue/package/EdInputPop/src/Props.js +48 -0
  187. package/src/components/ed-base-vue/package/EdInputTable/index.js +8 -0
  188. package/src/components/ed-base-vue/package/EdInputTable/src/EdInputTable.vue +368 -0
  189. package/src/components/ed-base-vue/package/EdInputTable/src/Fetch.js +40 -0
  190. package/src/components/ed-base-vue/package/EdJsonEditor/index.js +13 -0
  191. package/src/components/ed-base-vue/package/EdJsonEditor/src/EdJsonEditor.vue +198 -0
  192. package/src/components/ed-base-vue/package/EdJsonEditor/src/assets/img/jsoneditor-icons.svg +749 -0
  193. package/src/components/ed-base-vue/package/EdJsonEditor/src/assets/jsoneditor.css +2031 -0
  194. package/src/components/ed-base-vue/package/EdJsonEditor/src/assets/plus.svg +1 -0
  195. package/src/components/ed-base-vue/package/EdJsonEditor/src/hooks.js +63 -0
  196. package/src/components/ed-base-vue/package/EdJsonViewer/index.js +8 -0
  197. package/src/components/ed-base-vue/package/EdJsonViewer/src/EdJsonViewer.vue +44 -0
  198. package/src/components/ed-base-vue/package/EdLable/index.js +8 -0
  199. package/src/components/ed-base-vue/package/EdLable/src/index.vue +34 -0
  200. package/src/components/ed-base-vue/package/EdLink/index.js +8 -0
  201. package/src/components/ed-base-vue/package/EdLink/src/index.vue +43 -0
  202. package/src/components/ed-base-vue/package/EdMarkEditor/index.js +15 -0
  203. package/src/components/ed-base-vue/package/EdMarkEditor/src/EdMarkEditor.vue +368 -0
  204. package/src/components/ed-base-vue/package/EdMarkEditor/src/extra-function.js +538 -0
  205. package/src/components/ed-base-vue/package/EdMarkEditor/src/highlight.js +95 -0
  206. package/src/components/ed-base-vue/package/EdTable/index.js +8 -0
  207. package/src/components/ed-base-vue/package/EdTable/src/EdTable.vue +240 -0
  208. package/src/components/ed-base-vue/package/EdTable/src/Props.js +97 -0
  209. package/src/components/ed-base-vue/package/EdTable/src/components/TableColumnItem.js +24 -0
  210. package/src/components/ed-base-vue/package/EdTable/src/components/TablePagination.vue +73 -0
  211. package/src/components/ed-base-vue/package/EdTableEditor/index.js +8 -0
  212. package/src/components/ed-base-vue/package/EdTableEditor/src/EdTableEditor.vue +282 -0
  213. package/src/components/ed-base-vue/package/EdTableEditor/src/Props.js +107 -0
  214. package/src/components/ed-base-vue/package/EdTableEditor/src/hooks/validate.js +90 -0
  215. package/src/components/ed-base-vue/package/EdUpload/index.js +8 -0
  216. package/src/components/ed-base-vue/package/EdUpload/src/Props.js +90 -0
  217. package/src/components/ed-base-vue/package/EdUpload/src/index.vue +88 -0
  218. package/src/components/ed-base-vue/package/EdViewer/index.js +8 -0
  219. package/src/components/ed-base-vue/package/EdViewer/src/EdViewer.vue +310 -0
  220. package/src/components/ed-base-vue/package/EdWangEditor/index.js +14 -0
  221. package/src/components/ed-base-vue/package/EdWangEditor/src/EdWangEditor.vue +127 -0
  222. package/src/components/ed-base-vue/package/ExtendSlot.js +12 -0
  223. package/src/components/ed-base-vue/package/OptionSlot.js +65 -0
  224. package/src/components/ed-base-vue/plugin/Message/index.js +2 -0
  225. package/src/components/ed-base-vue/plugin/Message/src/main.js +91 -0
  226. package/src/components/ed-base-vue/plugin/Message/src/main.vue +253 -0
  227. package/src/components/ed-base-vue/plugin/print/index.js +156 -0
  228. package/src/components/ed-base-vue/plugin/sortable/index.js +3784 -0
  229. package/src/components/ed-base-vue/style/custom.scss +107 -0
  230. package/src/components/ed-base-vue/style/deep.scss +100 -0
  231. package/src/components/ed-base-vue/style/index.scss +4 -0
  232. package/src/components/ed-base-vue/tools/date-format.js +315 -0
  233. package/src/components/ed-base-vue/tools/utils.js +124 -0
  234. package/src/layouts/components/AppMain.vue +17 -0
  235. package/src/layouts/components/Header.vue +256 -0
  236. package/src/layouts/components/Logo.vue +56 -0
  237. package/src/layouts/components/Navbar.vue +169 -0
  238. package/src/layouts/components/SideBar.vue +107 -0
  239. package/src/layouts/components/index.js +5 -0
  240. package/src/layouts/index.vue +57 -0
  241. package/src/main.js +42 -0
  242. package/src/request/config.js +6 -0
  243. package/src/request/index.js +85 -0
  244. package/src/request/request.js +147 -0
  245. package/src/router/index.js +65 -0
  246. package/src/router/modules/baseRouter.js +43 -0
  247. package/src/router/modules/easydata.js +49 -0
  248. package/src/views/base/BaseRichPreview.vue +23 -0
  249. package/src/views/base/BaseRichText.vue +28 -0
  250. package/src/views/base/EdFormView.vue +54 -0
  251. package/src/views/base/EdTable.vue +98 -0
  252. package/src/views/base/inputTable.vue +103 -0
  253. package/src/views/easydata/Interface.vue +3 -0
  254. package/src/views/easydata/dataSource.vue +13 -0
  255. package/src/views/easydata/dataSourceView.vue +71 -0
  256. package/src/views/easydata/templateDemo.vue +89 -0
  257. package/src/views/easydata/templateInfo.vue +13 -0
  258. package/src/views/index.vue +17 -0
  259. package/src/views/login.vue +208 -0
  260. package/src/views/redirect.vue +15 -0
@@ -0,0 +1,292 @@
1
+ <template>
2
+ <div class="es-template">
3
+ <el-tabs v-if="controlProps.pageStyle === 'tabs'" v-model="current" :before-leave="beforeLeave"
4
+ class="es-template--tabs"
5
+ v-bind="controlProps" @tab-click="tabsChange">
6
+ <el-tab-pane v-for="(oneModule, indexOne) in modules" :id="oneModule.id" :key="indexOne"
7
+ :label="oneModule.moduleName">
8
+ <!-- View -->
9
+ <TemplateComp :ref="oneModule.id" :bizParams="bizParams" :errorMessage="errorMessage[oneModule.id]"
10
+ :modules="oneModule.twoModules"
11
+ :oneModuleId="oneModule.id"
12
+ :formData="formData"
13
+ :oneModuleName="oneModule.moduleName" :saveData="saveData[oneModule.id]"
14
+ class="es-template__content" @callInterface="callInterface"></TemplateComp>
15
+
16
+ <!-- Action -->
17
+ <div v-if="showSubmit && !readOnly" :id="'btn_'+oneModule.id" class="es-template__footer">
18
+ <el-button v-if="getModuleProp(oneModule, 'isDownloadPdf')" :disabled="loading" :loading="pdfLoading"
19
+ icon="el-icon-download" plain type="primary"
20
+ @click="exportPdf(oneModule)">导出PDF
21
+ </el-button>
22
+ <el-button v-if="getModuleProp(oneModule, 'isSubmit')" :disabled="loading" :loading="loading || btnLoading"
23
+ plain
24
+ type="danger" @click="submitForm(oneModule)">提交
25
+ </el-button>
26
+ </div>
27
+ </el-tab-pane>
28
+ </el-tabs>
29
+ <!---->
30
+ <div v-if="controlProps.pageStyle === 'steps'"
31
+ :class="{'es-steps--isVertical' : isVertical}" class="es-template--steps">
32
+ <el-steps :active="current"
33
+ :direction="controlProps.direction"
34
+ :style="{height: 'auto'}"
35
+ align-center>
36
+ <el-step v-for="(oneModule, indexOne) in modules" :key="indexOne" :title="oneModule.moduleName"></el-step>
37
+ </el-steps>
38
+
39
+ <div ref="stepsMain" class="es-template--steps__main">
40
+ <div v-for="(oneModule, indexOne) in modules" v-show="current === indexOne" :key="indexOne">
41
+ <TemplateComp :ref="oneModule.id" :bizParams="bizParams"
42
+ :errorMessage="errorMessage[oneModule.id]"
43
+ :modules="oneModule.twoModules"
44
+ :oneModuleId="oneModule.id"
45
+ :formData="formData"
46
+ :oneModuleName="oneModule.moduleName" :saveData="saveData[oneModule.id]"
47
+ class="es-template__content" @callInterface="callInterface"></TemplateComp>
48
+
49
+ <div class="es-template__footer">
50
+ <el-button v-if="indexOne > 0" @click="handlerStep('prev')">上一步</el-button>
51
+ <el-button v-if="indexOne === modules.length-1" :disabled="loading" :loading="loading || btnLoading"
52
+ plain
53
+ type="danger" @click="submitAllForm()">提交
54
+ </el-button>
55
+ <el-button v-if="indexOne < modules.length-1" @click="handlerStep('next')">下一步</el-button>
56
+ </div>
57
+ </div>
58
+ </div>
59
+ </div>
60
+ </div>
61
+ </template>
62
+
63
+ <script>
64
+ import TemplateComp from './TemplateComp'
65
+ import validate from '../hooks/validate'
66
+ import getFormData from '../hooks/getFormData'
67
+ import business from '../hooks/business'
68
+ import submitForm from '../hooks/submitForm'
69
+ import queryFormData from '../hooks/queryFormData'
70
+ import useEmits from "../hooks/useEmits";
71
+
72
+ import html2canvas from 'html2canvas';
73
+ import jsPDF from 'jspdf';
74
+
75
+ export default {
76
+ name: "TemplateViews",
77
+ mixins: [validate, getFormData, submitForm, business, queryFormData, useEmits],
78
+ components: {TemplateComp},
79
+ props: {
80
+ config: {type: Object},
81
+ formData: {type: Object},
82
+ readOnly: {type: Boolean, default: false},
83
+ bizParams: {type: Object},
84
+ extraParams: {type: Object},
85
+ },
86
+ provide() {
87
+ return {
88
+ _tempV: this
89
+ };
90
+ },
91
+ data() {
92
+ return {
93
+ current: 0,
94
+ controlProps: {},
95
+ modules: [],
96
+ template: {},
97
+ moduleInfo: {},
98
+ // show/hide
99
+ showSubmit: true,
100
+ loading: false,
101
+ pdfLoading: false,
102
+ btnLoading: false,
103
+ errorMessage: {},
104
+ }
105
+ },
106
+ computed: {
107
+ // 是否tabs模式
108
+ isTabs() {
109
+ return this.controlProps.pageStyle && this.controlProps.pageStyle === 'tabs'
110
+ },
111
+
112
+ isPageLoad() {
113
+ return this.isTabs ? this.controlProps.isPageLoad === 'true' : false
114
+ },
115
+
116
+ isVertical() {
117
+ return this.controlProps.direction === 'vertical'
118
+ },
119
+ },
120
+ watch: {
121
+ config: {
122
+ handler(newVal, oldVal) {
123
+ if (newVal && newVal.prop) {
124
+ this.__resetTemp();
125
+ this.controlProps = newVal.prop
126
+ if (newVal.modules) {
127
+ this.modules = newVal.modules
128
+ }
129
+ if (newVal.moduleInfo) {
130
+ this.moduleInfo = newVal.moduleInfo
131
+ }
132
+ if (newVal.template) {
133
+ this.template = newVal.template
134
+ }
135
+ // this.queryModuleData()
136
+ }
137
+ },
138
+ deep: true,
139
+ immediate: true
140
+ },
141
+
142
+ bizParams: {
143
+ handler(newVal, oldVal) {
144
+ if (newVal && Object.keys(newVal).length > 0 && Object.keys(this.moduleInfo).length > 0) {
145
+ this.queryModuleData()
146
+ }
147
+ },
148
+ deep: true,
149
+ immediate: true
150
+ }
151
+ },
152
+ methods: {
153
+ __resetTemp() {
154
+ this.modules = []
155
+ this.controlProps = {}
156
+ this.template = {}
157
+ this.components = []
158
+ this.saveData = {}
159
+ this.loadPage = {}
160
+ this.current = 0
161
+ this.showSubmit = true
162
+ this.btnLoading = false
163
+ },
164
+
165
+ resetData() {
166
+ this.saveData = {}
167
+ this.current = 0
168
+ this.loadPage = {}
169
+ },
170
+
171
+
172
+ handleChange(model, value, control) {
173
+ this.$emit('change', model, value, control)
174
+ },
175
+
176
+ /**
177
+ * 导出PDF
178
+ * @param oneModule
179
+ */
180
+ exportPdf(oneModule) {
181
+ this.pdfLoading = true
182
+ let oneModuleEle = document.getElementById(oneModule.id);
183
+ let btnOneModuleEle = document.getElementById('btn_' + oneModule.id);
184
+ oneModuleEle.removeChild(btnOneModuleEle);
185
+ this.downPdf(oneModule.moduleName, oneModuleEle);
186
+ oneModuleEle.appendChild(btnOneModuleEle);
187
+ this.pdfLoading = false
188
+ },
189
+
190
+ downPdf(pdfName, ele) {
191
+ pdfName = pdfName + ".pdf"
192
+ html2canvas(ele, {
193
+ dpi: 300,
194
+ // allowTaint: true, //允许 canvas 污染, allowTaint参数要去掉,否则是无法通过toDataURL导出canvas数据的
195
+ useCORS: true //允许canvas画布内 可以跨域请求外部链接图片, 允许跨域请求。
196
+ }).then((canvas) => {
197
+ let contentWidth = canvas.width;
198
+ let contentHeight = canvas.height;
199
+ //一页pdf显示html页面生成的canvas高度;
200
+ let pageHeight = contentWidth / 592.28 * 841.89;
201
+ //未生成pdf的html页面高度
202
+ let leftHeight = contentHeight;
203
+ //页面偏移
204
+ let position = 0;
205
+ //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高
206
+ let imgWidth = 595.28;
207
+ let imgHeight = 595.28 / contentWidth * contentHeight + 100;
208
+ //添加水印
209
+ let ctx = canvas.getContext("2d")
210
+ let watermarkerCnt = contentHeight / 200
211
+ for (let i = 0; i < watermarkerCnt; i++) {
212
+ ctx.rotate((-5 * Math.PI) / 180); // 水印初始偏转角度
213
+ ctx.font = "30px microsoft yahei";
214
+ ctx.fillStyle = "rgba(213,213,213,0.5)";
215
+ let watermarkerStr = ''
216
+ for (let j = 0; j < 10; j++) {
217
+ watermarkerStr += '小榄村镇银行 '
218
+ }
219
+ ctx.fillText(watermarkerStr, -300, (i + 1) * 200);
220
+ ctx.rotate((5 * Math.PI) / 180); // 把水印偏转角度调整为原来的,不然他会一直转
221
+ }
222
+
223
+ let pageData = canvas.toDataURL('image/jpeg', 1.0);
224
+ let pdf = new jsPDF('', 'pt', 'a4');
225
+ //有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89)
226
+ //当内容未超过pdf一页显示的范围,无需分页
227
+ if (leftHeight < pageHeight) {
228
+ //在pdf.addImage(pageData, 'JPEG', 左,上,宽度,高度)设置在pdf中显示;
229
+ pdf.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight);
230
+ // pdf.addImage(pageData, 'JPEG', 20, 40, imgWidth, imgHeight);
231
+ } else { // 分页
232
+ while (leftHeight > 0) {
233
+ pdf.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight);
234
+ leftHeight -= pageHeight;
235
+ position -= 841.89;
236
+ //避免添加空白页
237
+ if (leftHeight > 0) {
238
+ pdf.addPage();
239
+ }
240
+ }
241
+ }
242
+ //可动态生成
243
+ pdf.save(pdfName);
244
+ })
245
+ },
246
+
247
+ /**
248
+ * @name tabsChange
249
+ * @param activeKey
250
+ */
251
+ tabsChange(activeKey) {
252
+ if (this.isPageLoad && !this.loadPage[activeKey]) {
253
+ this.queryModuleData()
254
+ }
255
+ },
256
+
257
+ /**
258
+ * 在离开当前tab前,检查二级模块是否需要重新从后端加载数据,或使用前端最新数据
259
+ */
260
+ beforeLeave(newActiveName, oldActiveName) {
261
+ if (oldActiveName !== undefined && this.modules[oldActiveName]) {
262
+ const oneModuleId = this.modules[oldActiveName].id
263
+ if (this.modules[oldActiveName].twoModules) {
264
+ this.modules[oldActiveName].twoModules.forEach(twoModule => {
265
+ const twoModuleId = twoModule.id
266
+ if (this.isViewTempType(oneModuleId, twoModuleId) === false) {
267
+ if (this.$refs[oneModuleId][0] && this.$refs[oneModuleId][0].$refs[twoModuleId][0]) {
268
+ this.$refs[oneModuleId][0].$refs[twoModuleId][0].getFormData(false, true).then(moduleData => {
269
+ this.$set(this.saveData[oneModuleId], twoModuleId, moduleData)
270
+ })
271
+ }
272
+ }
273
+ })
274
+ }
275
+ }
276
+ return true
277
+ },
278
+
279
+ /**
280
+ * @name handlerStep
281
+ * @param type
282
+ */
283
+ handlerStep(type) {
284
+ if (type === 'next') {
285
+ this.beforeLeave(null, this.current++)
286
+ } else if (type === 'prev') {
287
+ this.beforeLeave(null, this.current--)
288
+ }
289
+ }
290
+ }
291
+ }
292
+ </script>
@@ -0,0 +1,74 @@
1
+ import { getVarType} from "../../../utils/utils";
2
+
3
+ export default {
4
+ methods: {
5
+ /**
6
+ * 获取的模版数据转换为前端使用的模型信息
7
+ * @param {*} dataModel
8
+ */
9
+ toViewModel(dataModel) {
10
+ if (dataModel) {
11
+ if (dataModel instanceof Array && dataModel.length === 0) {
12
+ return {}
13
+ } else if (dataModel instanceof Array && dataModel.length > 0) {
14
+ let dataList = Object.assign({data: []}, dataModel[0])
15
+ dataModel.forEach((data) => {
16
+ if (data.dataInfoArray && data.dataInfoArray instanceof Array && data.dataInfoArray.length > 0) {
17
+ data.dataInfoArray.forEach((d) => {
18
+ dataList.data.push(d)
19
+ })
20
+ } else if (data.keyInfoView) {
21
+ dataList.data.push({keyInfo: data.keyInfoView})
22
+ } else if (data.keyInfoObject) {
23
+ dataList.data.push({keyInfo: data.keyInfoObject})
24
+ } else {
25
+ dataList.data.push({keyInfo: data})
26
+ }
27
+ })
28
+ return dataList
29
+ } else {
30
+ return dataModel
31
+ }
32
+ }
33
+ return {}
34
+ },
35
+
36
+ /**
37
+ * @name getOneModuleId
38
+ * @param id
39
+ * @return {null}
40
+ * @description 获取一级模块数据
41
+ */
42
+ getOneModuleId(id) {
43
+ let moduleId = null
44
+ this.modules.map(oneModule => {
45
+ let module = oneModule.twoModule.find(i => i.id === id)
46
+ if (module) moduleId = module.id
47
+ })
48
+
49
+ return moduleId
50
+ },
51
+
52
+ /**
53
+ * 解析模块对象中的属性值
54
+ * @param {*} module
55
+ * @param {*} key
56
+ * @returns Object
57
+ */
58
+ getModuleProp(module, key) {
59
+ const {prop} = module
60
+ let item = prop && prop[key] ? prop[key] : module[key]
61
+ if (item && item.value) {
62
+ const itemType = getVarType(item.value)
63
+ if (itemType === 'boolean') {
64
+ return itemType
65
+ } else if (itemType === 'string') {
66
+ return item.value === 'true' ? true : item.value === 'false' ? false : item.value
67
+ } else {
68
+ return item.value
69
+ }
70
+ }
71
+ return undefined
72
+ },
73
+ }
74
+ }
@@ -0,0 +1,89 @@
1
+ export default {
2
+ methods: {
3
+ /**
4
+ * @name getFormData
5
+ * @param moduleId 一级/二级模块ID
6
+ * @param isValidate 是否进行校验,默认false
7
+ * @return {Promise<unknown>|*|string|Promise<*|string>}
8
+ * @description 获取模板数据
9
+ */
10
+ getFormData(moduleId, isValidate = false) {
11
+ if (moduleId && typeof moduleId === "string") {
12
+ const module = this.modules.find(i => i.id === moduleId);
13
+ return module ? this._getOneFormData(module.id, isValidate) : this._getTowFormData(moduleId, isValidate);
14
+ } else if (typeof moduleId === "boolean") {
15
+ return this._getAllFormData(moduleId)
16
+ } else {
17
+ return this._getAllFormData(isValidate)
18
+ }
19
+ },
20
+
21
+ // 获取所有模板数据
22
+ _getAllFormData(isValidate) {
23
+ const PromiseAll = []
24
+ this.modules.map(module => PromiseAll.push(this.$refs[module.id][0].getFormData(isValidate)))
25
+ return new Promise((resolve, reject) => {
26
+ Promise.all(PromiseAll).then(data => {
27
+ let formData = []
28
+ data.map(one => one.map(tow => formData.push(tow)))
29
+ resolve(formData)
30
+ }).catch(err => {
31
+ console.log(err)
32
+ reject(err)
33
+ })
34
+ })
35
+ },
36
+
37
+ // 获取单个一级模块数据
38
+ async _getOneFormData(moduleId, isValidate) {
39
+ return new Promise((resolve, reject) => {
40
+ const module = this.modules.find(i => i.id === moduleId);
41
+ if (module) {
42
+ this.$refs[module.id][0].getFormData(isValidate).then(data => {
43
+ console.log(data)
44
+ resolve(data)
45
+ }).catch(err => {
46
+ console.log(err)
47
+ this.$message.error(err)
48
+ reject(err)
49
+ })
50
+ } else {
51
+ this.$message.error('未查询到此模块')
52
+ reject('未查询到此模块')
53
+ }
54
+ })
55
+ },
56
+
57
+ // 获取单个二级模块数据
58
+ _getTowFormData(moduleId, isValidate) {
59
+ let oneRefs, module = null
60
+ this.modules.map(oneModule => {
61
+ oneModule.twoModules.map(twoModule => {
62
+ if (twoModule.id === moduleId) {
63
+ oneRefs = this.$refs[oneModule.id][0]
64
+ module = twoModule
65
+ }
66
+ })
67
+ })
68
+ if (module) {
69
+ return oneRefs.$refs[module.id][0].getFormData(isValidate)
70
+ } else {
71
+ return '未查询到此模块'
72
+ }
73
+ },
74
+
75
+ /** 获取动态模板超级提交时,所有参数,提交url */
76
+ async _getSubmitData(isValidate = false) {
77
+ const viewModels = await this.getFormData(isValidate)
78
+ return {
79
+ url: this.moduleInfo.save_url,
80
+ params: {
81
+ bizParams: this.bizParams,
82
+ viewModels: viewModels,
83
+ extraParams: this.extraParams
84
+ }
85
+ }
86
+
87
+ }
88
+ }
89
+ }
@@ -0,0 +1,194 @@
1
+ import {convertToViewModel, deepMerge, getVarType} from "../../../utils/utils";
2
+ import {postAction} from "../../../api";
3
+ import {TempType} from "../../../api/easyData";
4
+
5
+ /**
6
+ * 请求
7
+ * @param url
8
+ * @param params
9
+ * @return {Promise<unknown>}
10
+ */
11
+ export const httpsQueryData = (url, params) => {
12
+ return new Promise((resolve, reject) => {
13
+ postAction(url, params).then(res => {
14
+ if (res.success && res.data) {
15
+ resolve(res.data)
16
+ } else {
17
+ reject(res.message)
18
+ }
19
+ }).catch(err => {
20
+ reject(err.message)
21
+ })
22
+ })
23
+ }
24
+
25
+ export default {
26
+ data() {
27
+ return {
28
+ saveData: {},
29
+ errorMessage: {},
30
+ }
31
+ },
32
+ methods: {
33
+ // 初始化saveData
34
+ initSaveData() {
35
+ let message = {}
36
+ let data = {}
37
+ this.modules.map(oneModule => {
38
+ data[oneModule.id] = {}
39
+ message[oneModule.id] = {}
40
+ oneModule.twoModules.map(twoModule => {
41
+ data[oneModule.id][twoModule.id] = {}
42
+ message[oneModule.id][twoModule.id] = ""
43
+ })
44
+ })
45
+
46
+ return {
47
+ data: deepMerge(data, this.saveData),
48
+ message
49
+ }
50
+ },
51
+
52
+ /**
53
+ * @name queryModuleData
54
+ * @description 查询模块数据
55
+ */
56
+ queryModuleData: async function () {
57
+ const {data, message} = this.initSaveData()
58
+ this.saveData = data
59
+ this.errorMessage = message
60
+ let queryUrl = this.moduleInfo.query_url
61
+ if (queryUrl) {
62
+ if (Object.keys(this.bizParams).length > 0) {
63
+ this.loading = true
64
+ let params = {
65
+ bizParams: this.bizParams,
66
+ templateViewModel: convertToViewModel(this.moduleInfo)
67
+ }
68
+ if (this.isPageLoad) {
69
+ params.page = this.current
70
+ }
71
+ await this.getQueryData(queryUrl, params)
72
+ } else {
73
+ this.$emit('loadOk')
74
+ }
75
+ } else {
76
+ this.$message.error('请设置模板的queryUrl属性')
77
+ }
78
+ },
79
+
80
+ /**
81
+ * 获取数据
82
+ * @param queryUrl
83
+ * @param params
84
+ * @return {Promise<unknown>}
85
+ */
86
+ getQueryData(queryUrl, params) {
87
+ return new Promise((resolve, reject) => {
88
+ httpsQueryData(queryUrl, params).then(async data => {
89
+ this.$emit('loadOk')
90
+ this.loading = false
91
+ Object.keys(data).map(dataKey => {
92
+ Object.keys(data[dataKey]).map(async twoDataKey => {
93
+ let twoData = data[dataKey][twoDataKey]
94
+ let {twoModule, dataList, message, success} = twoData
95
+ let moduleData
96
+ if (this.needReload(dataKey, twoDataKey)) {
97
+ //当有错误时
98
+ if (getVarType(success) === 'undefined' || success !== true) {
99
+ this.errorMessage[dataKey][twoDataKey] = message ? message : `查询${twoModule.moduleName}数据失败`
100
+ }
101
+
102
+ //当有自动获取数据时
103
+ if (twoModule.dataFrom === "fromInterface" && twoModule.autoQuery && twoModule.autoQuery === 'true') {
104
+ moduleData = await this.callInterface(twoModule)
105
+ } else {
106
+ moduleData = this.toViewModel(dataList)
107
+ }
108
+ moduleData.result = {message, success}
109
+ this.$set(this.saveData[dataKey], twoDataKey, moduleData)
110
+ }
111
+ })
112
+ })
113
+ })
114
+ })
115
+ },
116
+
117
+ /**
118
+ * 查询并更新二级模块数据
119
+ * @param oneModuleId
120
+ * @param module
121
+ * @return {Promise<void>}
122
+ */
123
+ async getQueryTwoData(oneModuleId, module) {
124
+ let moduleData = await this.callInterface(module)
125
+ this.$set(this.saveData[oneModuleId], module.id, moduleData)
126
+ },
127
+
128
+ /**
129
+ * @name callInterface
130
+ * @param module
131
+ * @return {Promise<unknown>}
132
+ */
133
+ callInterface(module) {
134
+ return new Promise(async (resolve) => {
135
+ let passModuleId = module.passModule?.split(',') || []
136
+ if (passModuleId.length > 0) await this.saveOneModule(this.current)
137
+
138
+ let queryUrl = this.moduleInfo.query_module_url
139
+ if (queryUrl) {
140
+ try {
141
+ let saveData = []
142
+ if (passModuleId.length > 0) {
143
+ passModuleId.forEach((passModule) => {
144
+ let passModuleData = this.saveData[passModule] ? this.saveData[passModule] : {}
145
+ saveData.push(passModuleData)
146
+ })
147
+ }
148
+
149
+ let params = {
150
+ bizParams: this.bizParams,
151
+ templateViewModel: this.moduleInfo,
152
+ moduleId: module.id,
153
+ viewModels: saveData
154
+ }
155
+
156
+ this.btnLoading = true
157
+ let res = await httpsQueryData(queryUrl, params)
158
+ if(res){
159
+ this.btnLoading = false
160
+ resolve(this.toViewModel(res.dataList))
161
+ }
162
+ } catch (e) {
163
+ this.$message.error(e.message)
164
+ }
165
+ } else {
166
+ this.$message.error('请设置模板的queryModuleUrl属性')
167
+ }
168
+ })
169
+ },
170
+
171
+ /**
172
+ * 判断是否需要重新加载后台查询的二级模块数据 (二级模块没有数据 或者二级模块是展示模块)
173
+ * @param {*} oneModuleId 一级模块ID
174
+ * @param {*} twoModuleId 二级模块ID
175
+ */
176
+ needReload(oneModuleId, twoModuleId) {
177
+ return true
178
+ // const twoModuleData = this.saveData[oneModuleId] ? this.saveData[oneModuleId][twoModuleId] : undefined
179
+ // if (!twoModuleData || Object.keys(twoModuleData).length <= 0) {
180
+ // return true
181
+ // }
182
+ // return this.isViewTempType(oneModuleId, twoModuleId)
183
+ },
184
+ /**
185
+ * 查询二级模块是视图属性
186
+ */
187
+ isViewTempType(oneModuleId, twoModuleId) {
188
+ const twoModuleVue = this.$refs[oneModuleId] ? this.$refs[oneModuleId][0].$refs[twoModuleId] ? this.$refs[oneModuleId][0].$refs[twoModuleId][0] : undefined : undefined
189
+ if(twoModuleVue)
190
+ return TempType.view === twoModuleVue.getType()
191
+ return true
192
+ }
193
+ }
194
+ }
@@ -0,0 +1,53 @@
1
+ export default {
2
+ methods: {
3
+ /**
4
+ * @name 提交信息
5
+ * @param modules
6
+ */
7
+ async submitForm(modules = Object) {
8
+ const isSuper = this.getModuleProp(modules, 'isSuper');
9
+ const saveUrl = this.moduleInfo['save_url'];
10
+ if (isSuper) {
11
+ await this.submitAllForm(saveUrl)
12
+ } else {
13
+ await this.submitOneForm(saveUrl, modules.id)
14
+ }
15
+ },
16
+
17
+ // 超级提交 - 提交所有信息
18
+ async submitAllForm(saveUrl = this.moduleInfo.save_url) {
19
+ const formDataAll = await this.getFormData(true)
20
+ await this.submitHttps(saveUrl, formDataAll)
21
+ this.submitOk(formDataAll, true)
22
+ },
23
+
24
+ // 单个提交 -- 提交一级模块
25
+ async submitOneForm(saveUrl, moduleId) {
26
+ const formDataOne = await this.getFormData(moduleId, true)
27
+ await this.submitHttps(saveUrl, formDataOne)
28
+ this.submitOk(formDataOne, false)
29
+ },
30
+
31
+ // 提交
32
+ async submitHttps(saveUrl, submitData) {
33
+ let params = {
34
+ bizParams: this.bizParams,
35
+ viewModels: submitData,
36
+ extraParams: this.extraParams
37
+ }
38
+
39
+ if (!saveUrl) {
40
+ this.$message.error('请设置模板的saveUrl属性')
41
+ }
42
+
43
+ this.loading = true
44
+ const res = await this.$EdFrame.postAction(saveUrl, params)
45
+ if (res.code === 0) {
46
+ this.$message.success(res.message || '保存成功!')
47
+ } else {
48
+ this.$message.error(res.message || '保存失败!')
49
+ }
50
+ this.loading = false
51
+ }
52
+ }
53
+ }