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.
- package/.env.dev +14 -0
- package/CHANGELOG.md +9 -0
- package/README.md +24 -0
- package/dist/ed-frame-vue.common.1.js +11046 -0
- package/dist/ed-frame-vue.common.1.js.map +1 -0
- package/dist/ed-frame-vue.common.2.js +1715 -0
- package/dist/ed-frame-vue.common.2.js.map +1 -0
- package/dist/ed-frame-vue.common.js +53427 -0
- package/dist/ed-frame-vue.common.js.map +1 -0
- package/dist/ed-frame-vue.umd.1.js +11046 -0
- package/dist/ed-frame-vue.umd.1.js.map +1 -0
- package/dist/ed-frame-vue.umd.2.js +1715 -0
- package/dist/ed-frame-vue.umd.2.js.map +1 -0
- package/dist/ed-frame-vue.umd.js +53437 -0
- package/dist/ed-frame-vue.umd.js.map +1 -0
- package/dist/ed-frame-vue.umd.min.1.js +17 -0
- package/dist/ed-frame-vue.umd.min.1.js.map +1 -0
- package/dist/ed-frame-vue.umd.min.2.js +4 -0
- package/dist/ed-frame-vue.umd.min.2.js.map +1 -0
- package/dist/ed-frame-vue.umd.min.js +470 -0
- package/dist/ed-frame-vue.umd.min.js.map +1 -0
- package/import.easydata.js +46 -0
- package/lib/CHANGELOG.md +18 -0
- package/lib/README.md +27 -0
- package/lib/api/ds/index.js +124 -0
- package/lib/api/easyData.js +90 -0
- package/lib/api/easyform/easyForm.js +32 -0
- package/lib/api/index.js +61 -0
- package/lib/api/interface/index.js +32 -0
- package/lib/api/system.js +20 -0
- package/lib/index.js +80 -0
- package/lib/packages/BasicTemplate/EasyDataTemplate.vue +189 -0
- package/lib/packages/BasicTemplate/Props.js +64 -0
- package/lib/packages/BasicTemplate/components/TemplateComp.vue +263 -0
- package/lib/packages/BasicTemplate/components/TemplateViews.vue +292 -0
- package/lib/packages/BasicTemplate/hooks/business.js +74 -0
- package/lib/packages/BasicTemplate/hooks/getFormData.js +89 -0
- package/lib/packages/BasicTemplate/hooks/queryFormData.js +194 -0
- package/lib/packages/BasicTemplate/hooks/submitForm.js +53 -0
- package/lib/packages/BasicTemplate/hooks/useEmits.js +15 -0
- package/lib/packages/BasicTemplate/hooks/validate.js +42 -0
- package/lib/packages/EasyDataForm/EasyDataForm.vue +597 -0
- package/lib/packages/EasyDataForm/Props.js +22 -0
- package/lib/packages/EasyDataForm/components/FormItem.vue +228 -0
- package/lib/packages/EasyDataForm/hooks/useChosePopup.js +85 -0
- package/lib/packages/EasyDataForm/hooks/useEmits.js +19 -0
- package/lib/packages/EasyDataForm/hooks/useForm.js +169 -0
- package/lib/packages/EasyDataForm/hooks/useUpload.js +168 -0
- package/lib/packages/EasyDataList/EasyDataList.vue +348 -0
- package/lib/packages/EasyDataList/Props.js +116 -0
- package/lib/packages/EasyDataList/components/BasicModal.vue +150 -0
- package/lib/packages/EasyDataList/components/FormAction.vue +63 -0
- package/lib/packages/EasyDataList/hooks/useEmits.js +30 -0
- package/lib/packages/EasyDataList/hooks/useForm.js +62 -0
- package/lib/packages/EasyDataList/hooks/useTable.js +314 -0
- package/lib/packages/EasyDataTable/EasyDataTable.vue +233 -0
- package/lib/packages/EasyDataView/EasyDataView.vue +105 -0
- package/lib/packages/EdRichPreview/index.js +32 -0
- package/lib/packages/EdRichText/index.vue +167 -0
- package/lib/packages/EdRichText/replaceUrl.js +49 -0
- package/lib/packages/components/FileView.vue +97 -0
- package/lib/packages/index.js +11 -0
- package/lib/packages/mixins/EasyDataMixins.js +133 -0
- package/lib/packages/mixins/useTable.jsx +130 -0
- package/lib/pages/DataSource/index.js +8 -0
- package/lib/pages/DataSource/src/components/ControlViews/BaseProps.js +103 -0
- package/lib/pages/DataSource/src/components/ControlViews/control.js +1089 -0
- package/lib/pages/DataSource/src/components/ControlViews/index.vue +301 -0
- package/lib/pages/DataSource/src/components/TableOperationModal.vue +225 -0
- package/lib/pages/DataSource/src/components/TablePropsModal.vue +367 -0
- package/lib/pages/DataSource/src/components/ViewPropsModal.vue +737 -0
- package/lib/pages/DataSource/src/components/modal/ChooseDict.vue +119 -0
- package/lib/pages/DataSource/src/hooks/useTable.js +138 -0
- package/lib/pages/DataSource/src/index.vue +431 -0
- package/lib/pages/Interface/index.js +8 -0
- package/lib/pages/Interface/src/components/InterfaceCall.vue +73 -0
- package/lib/pages/Interface/src/components/InterfaceDepend.vue +299 -0
- package/lib/pages/Interface/src/components/InterfaceFee.vue +131 -0
- package/lib/pages/Interface/src/components/InterfaceMessage.vue +878 -0
- package/lib/pages/Interface/src/components/InterfaceMock.vue +203 -0
- package/lib/pages/Interface/src/components/InterfaceParam.vue +308 -0
- package/lib/pages/Interface/src/components/InterfaceRepeat.vue +281 -0
- package/lib/pages/Interface/src/components/InterfaceVariable.vue +31 -0
- package/lib/pages/Interface/src/index.vue +216 -0
- package/lib/pages/Template/index.js +8 -0
- package/lib/pages/Template/src/components/DefineModal.vue +524 -0
- package/lib/pages/Template/src/components/TemplatePreview.vue +109 -0
- package/lib/pages/Template/src/components/model/AddDialog.vue +60 -0
- package/lib/pages/Template/src/components/model/TemplatePreview2.vue +101 -0
- package/lib/pages/Template/src/hooks/index.js +3 -0
- package/lib/pages/Template/src/hooks/useEmits.js +64 -0
- package/lib/pages/Template/src/index.vue +124 -0
- package/lib/popup/index.js +8 -0
- package/lib/popup/src/DataSourceChoose.vue +44 -0
- package/lib/popup/src/DataSourceViewIdChoose.vue +67 -0
- package/lib/popup/src/DictChoose.vue +104 -0
- package/lib/popup/src/InterfaceChoose.vue +46 -0
- package/lib/popup/src/OrgChoose.vue +121 -0
- package/lib/popup/src/RoleChoose.vue +101 -0
- package/lib/popup/src/TemplateChoose.vue +43 -0
- package/lib/popup/src/UserChoose.vue +161 -0
- package/lib/popup//347/273/204/344/273/266/345/274/200/345/217/221/350/247/204/350/214/203.md +25 -0
- package/lib/style/custom.scss +126 -0
- package/lib/style/deep.scss +109 -0
- package/lib/style/index.scss +4 -0
- package/lib/utils/MapLoader.js +48 -0
- package/lib/utils/dateUtils.js +58 -0
- package/lib/utils/index.js +8 -0
- package/lib/utils/setting.js +25 -0
- package/lib/utils/sortable/index.js +3784 -0
- package/lib/utils/useBusiness.js +212 -0
- package/lib/utils/utils.js +588 -0
- package/package.json +77 -0
- package/src/App.vue +12 -0
- package/src/assets/Vue.png +0 -0
- package/src/assets/avatar.png +0 -0
- package/src/assets/images/bg.png +0 -0
- package/src/assets/images/logo-bills.png +0 -0
- package/src/assets/images/pic.png +0 -0
- package/src/assets/images/weplus-logo.png +0 -0
- package/src/assets/marker.png +0 -0
- package/src/assets/styles/common.scss +359 -0
- package/src/assets/styles/ele-docs.css +3278 -0
- package/src/assets/styles/fonts/icomoon.eot +0 -0
- package/src/assets/styles/fonts/icomoon.svg +14 -0
- package/src/assets/styles/fonts/icomoon.ttf +0 -0
- package/src/assets/styles/fonts/icomoon.woff +0 -0
- package/src/assets/styles/fonts/style.css +39 -0
- package/src/assets/styles/higtlightEle.css +84 -0
- package/src/assets/svg/code.svg +7 -0
- package/src/assets/svg/password.svg +1 -0
- package/src/components/Popups/DiyCompDictChoose.vue +112 -0
- package/src/components/Popups/index.js +28 -0
- package/src/components/ed-base-vue/global/variable.js +8 -0
- package/src/components/ed-base-vue/index.js +81 -0
- package/src/components/ed-base-vue/package/EdCard/index.js +7 -0
- package/src/components/ed-base-vue/package/EdCard/src/index.vue +87 -0
- package/src/components/ed-base-vue/package/EdCodeEditor/index.js +8 -0
- package/src/components/ed-base-vue/package/EdCodeEditor/src/AceEditor/AceConfig.js +71 -0
- package/src/components/ed-base-vue/package/EdCodeEditor/src/AceEditor/Editor.vue +137 -0
- package/src/components/ed-base-vue/package/EdCodeEditor/src/AceEditor/Toolbar.vue +68 -0
- package/src/components/ed-base-vue/package/EdCodeEditor/src/AceEditor/index.vue +119 -0
- package/src/components/ed-base-vue/package/EdCodeEditor/src/AceEditor/webpack-resolver.js +51 -0
- package/src/components/ed-base-vue/package/EdCodeEditor/src/Codemirror/Toolbar.vue +57 -0
- package/src/components/ed-base-vue/package/EdCodeEditor/src/Codemirror/config.js +64 -0
- package/src/components/ed-base-vue/package/EdCodeEditor/src/Codemirror/index.vue +309 -0
- package/src/components/ed-base-vue/package/EdCodeEditor/src/EdCodeEditor.vue +238 -0
- package/src/components/ed-base-vue/package/EdDate/index.js +8 -0
- package/src/components/ed-base-vue/package/EdDate/src/index.js +50 -0
- package/src/components/ed-base-vue/package/EdDescriptions/index.js +8 -0
- package/src/components/ed-base-vue/package/EdDescriptions/src/EdDescriptions.vue +46 -0
- package/src/components/ed-base-vue/package/EdDescriptions/src/EdDescriptionsItem.js +20 -0
- package/src/components/ed-base-vue/package/EdDescriptions/src/Props.js +20 -0
- package/src/components/ed-base-vue/package/EdDialog/index.js +8 -0
- package/src/components/ed-base-vue/package/EdDialog/src/EdDialog.vue +138 -0
- package/src/components/ed-base-vue/package/EdDialog/src/Props.js +91 -0
- package/src/components/ed-base-vue/package/EdDialog/src/components/DialogFooter.vue +42 -0
- package/src/components/ed-base-vue/package/EdDialog/src/components/DialogWrapper.vue +53 -0
- package/src/components/ed-base-vue/package/EdDrawer/index.js +8 -0
- package/src/components/ed-base-vue/package/EdDrawer/src/DrawerFooter.vue +41 -0
- package/src/components/ed-base-vue/package/EdDrawer/src/EdDrawer.vue +150 -0
- package/src/components/ed-base-vue/package/EdDrawer/src/props.js +71 -0
- package/src/components/ed-base-vue/package/EdFlow/index.js +8 -0
- package/src/components/ed-base-vue/package/EdFlow/src/EdFlowItem.vue +733 -0
- package/src/components/ed-base-vue/package/EdFlow/src/index.vue +148 -0
- package/src/components/ed-base-vue/package/EdForm/index.js +8 -0
- package/src/components/ed-base-vue/package/EdForm/src/EdForm.vue +172 -0
- package/src/components/ed-base-vue/package/EdForm/src/Props.js +33 -0
- package/src/components/ed-base-vue/package/EdForm/src/components/EdFormItem.vue +34 -0
- package/src/components/ed-base-vue/package/EdIcons/index.js +8 -0
- package/src/components/ed-base-vue/package/EdIcons/src/hooks/Icons.js +406 -0
- package/src/components/ed-base-vue/package/EdIcons/src/hooks/Icons1.js +830 -0
- package/src/components/ed-base-vue/package/EdIcons/src/index.vue +13 -0
- package/src/components/ed-base-vue/package/EdImage/index.js +8 -0
- package/src/components/ed-base-vue/package/EdImage/src/index.vue +28 -0
- package/src/components/ed-base-vue/package/EdInputArray/index.js +8 -0
- package/src/components/ed-base-vue/package/EdInputArray/src/Props.js +26 -0
- package/src/components/ed-base-vue/package/EdInputArray/src/index.vue +97 -0
- package/src/components/ed-base-vue/package/EdInputColor/index.js +8 -0
- package/src/components/ed-base-vue/package/EdInputColor/src/InputColor.vue +81 -0
- package/src/components/ed-base-vue/package/EdInputMap/index.js +9 -0
- package/src/components/ed-base-vue/package/EdInputMap/src/EdInputMap.vue +246 -0
- package/src/components/ed-base-vue/package/EdInputMap/src/EdInputMapProps.js +6 -0
- package/src/components/ed-base-vue/package/EdInputPop/index.js +13 -0
- package/src/components/ed-base-vue/package/EdInputPop/src/EdInputPop.vue +144 -0
- package/src/components/ed-base-vue/package/EdInputPop/src/Props.js +48 -0
- package/src/components/ed-base-vue/package/EdInputTable/index.js +8 -0
- package/src/components/ed-base-vue/package/EdInputTable/src/EdInputTable.vue +368 -0
- package/src/components/ed-base-vue/package/EdInputTable/src/Fetch.js +40 -0
- package/src/components/ed-base-vue/package/EdJsonEditor/index.js +13 -0
- package/src/components/ed-base-vue/package/EdJsonEditor/src/EdJsonEditor.vue +198 -0
- package/src/components/ed-base-vue/package/EdJsonEditor/src/assets/img/jsoneditor-icons.svg +749 -0
- package/src/components/ed-base-vue/package/EdJsonEditor/src/assets/jsoneditor.css +2031 -0
- package/src/components/ed-base-vue/package/EdJsonEditor/src/assets/plus.svg +1 -0
- package/src/components/ed-base-vue/package/EdJsonEditor/src/hooks.js +63 -0
- package/src/components/ed-base-vue/package/EdJsonViewer/index.js +8 -0
- package/src/components/ed-base-vue/package/EdJsonViewer/src/EdJsonViewer.vue +44 -0
- package/src/components/ed-base-vue/package/EdLable/index.js +8 -0
- package/src/components/ed-base-vue/package/EdLable/src/index.vue +34 -0
- package/src/components/ed-base-vue/package/EdLink/index.js +8 -0
- package/src/components/ed-base-vue/package/EdLink/src/index.vue +43 -0
- package/src/components/ed-base-vue/package/EdMarkEditor/index.js +15 -0
- package/src/components/ed-base-vue/package/EdMarkEditor/src/EdMarkEditor.vue +368 -0
- package/src/components/ed-base-vue/package/EdMarkEditor/src/extra-function.js +538 -0
- package/src/components/ed-base-vue/package/EdMarkEditor/src/highlight.js +95 -0
- package/src/components/ed-base-vue/package/EdTable/index.js +8 -0
- package/src/components/ed-base-vue/package/EdTable/src/EdTable.vue +240 -0
- package/src/components/ed-base-vue/package/EdTable/src/Props.js +97 -0
- package/src/components/ed-base-vue/package/EdTable/src/components/TableColumnItem.js +24 -0
- package/src/components/ed-base-vue/package/EdTable/src/components/TablePagination.vue +73 -0
- package/src/components/ed-base-vue/package/EdTableEditor/index.js +8 -0
- package/src/components/ed-base-vue/package/EdTableEditor/src/EdTableEditor.vue +282 -0
- package/src/components/ed-base-vue/package/EdTableEditor/src/Props.js +107 -0
- package/src/components/ed-base-vue/package/EdTableEditor/src/hooks/validate.js +90 -0
- package/src/components/ed-base-vue/package/EdUpload/index.js +8 -0
- package/src/components/ed-base-vue/package/EdUpload/src/Props.js +90 -0
- package/src/components/ed-base-vue/package/EdUpload/src/index.vue +88 -0
- package/src/components/ed-base-vue/package/EdViewer/index.js +8 -0
- package/src/components/ed-base-vue/package/EdViewer/src/EdViewer.vue +310 -0
- package/src/components/ed-base-vue/package/EdWangEditor/index.js +14 -0
- package/src/components/ed-base-vue/package/EdWangEditor/src/EdWangEditor.vue +127 -0
- package/src/components/ed-base-vue/package/ExtendSlot.js +12 -0
- package/src/components/ed-base-vue/package/OptionSlot.js +65 -0
- package/src/components/ed-base-vue/plugin/Message/index.js +2 -0
- package/src/components/ed-base-vue/plugin/Message/src/main.js +91 -0
- package/src/components/ed-base-vue/plugin/Message/src/main.vue +253 -0
- package/src/components/ed-base-vue/plugin/print/index.js +156 -0
- package/src/components/ed-base-vue/plugin/sortable/index.js +3784 -0
- package/src/components/ed-base-vue/style/custom.scss +107 -0
- package/src/components/ed-base-vue/style/deep.scss +100 -0
- package/src/components/ed-base-vue/style/index.scss +4 -0
- package/src/components/ed-base-vue/tools/date-format.js +315 -0
- package/src/components/ed-base-vue/tools/utils.js +124 -0
- package/src/layouts/components/AppMain.vue +17 -0
- package/src/layouts/components/Header.vue +256 -0
- package/src/layouts/components/Logo.vue +56 -0
- package/src/layouts/components/Navbar.vue +169 -0
- package/src/layouts/components/SideBar.vue +107 -0
- package/src/layouts/components/index.js +5 -0
- package/src/layouts/index.vue +57 -0
- package/src/main.js +42 -0
- package/src/request/config.js +6 -0
- package/src/request/index.js +85 -0
- package/src/request/request.js +147 -0
- package/src/router/index.js +65 -0
- package/src/router/modules/baseRouter.js +43 -0
- package/src/router/modules/easydata.js +49 -0
- package/src/views/base/BaseRichPreview.vue +23 -0
- package/src/views/base/BaseRichText.vue +28 -0
- package/src/views/base/EdFormView.vue +54 -0
- package/src/views/base/EdTable.vue +98 -0
- package/src/views/base/inputTable.vue +103 -0
- package/src/views/easydata/Interface.vue +3 -0
- package/src/views/easydata/dataSource.vue +13 -0
- package/src/views/easydata/dataSourceView.vue +71 -0
- package/src/views/easydata/templateDemo.vue +89 -0
- package/src/views/easydata/templateInfo.vue +13 -0
- package/src/views/index.vue +17 -0
- package/src/views/login.vue +208 -0
- 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
|
+
}
|