数通互联化工云平台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

328 lines
8.8 KiB

1 year ago
<!--
@ 作者: 秦东
@ 时间: 2024-05-07 11:26:40
@ 备注: 编辑表单
-->
11 months ago
<script lang="ts" setup>
import { useRoute, useRouter } from "vue-router";
import { formStruct } from "@/api/DesignForm/types";
import { customerFormConfig } from "@/api/DesignForm/type";
import { getProductionMarkForm } from "@/api/DesignForm/requestapi";
1 year ago
11 months ago
import PageForm from "@/views/sysworkflow/lowcodepage/appPage/appPageForm/pageForm.vue";
import PageFlow from "@/views/sysworkflow/lowcodepage/appPage/appPageForm/pageFlow.vue";
import PageList from "@/views/sysworkflow/lowcodepage/appPage/appPageForm/pageList.vue";
import PrintSetupPage from "@/views/sysworkflow/lowcodepage/appPage/appPageForm/printSetupPage.vue";
8 months ago
import AiPage from "@/views/sysworkflow/lowcodepage/appPage/appPageForm/aiPage.vue";
5 months ago
import DataBpard from "@/views/sysworkflow/lowcodepage/appPage/appPageForm/dataBoard.vue";
1 year ago
const props = defineProps({
11 months ago
appCont: {
type: Object,
default() {
return {};
},
},
isShow: {
type: Boolean,
default: false,
},
isNew: {
type: Boolean,
default: false,
},
drawerWith: {
type: Number,
default: 0,
},
formKey: {
type: String,
default: "",
},
groupKey: {
type: String,
default: "",
},
menuId: {
type: String,
default: "",
},
appPageKey: {
type: String,
default: "",
},
1 year ago
});
11 months ago
const emits = defineEmits([
"update:isShow",
"update:isNew",
"update:appPageKey",
"gainSunAppContent",
"updateInit",
]);
const tabsActive = ref(1);
const route: any = useRoute().query || {};
1 year ago
const formConfigCont = reactive<customerFormConfig>({
11 months ago
formName: "",
formlogo: "",
signCode: "",
});
const appPageKey = computed({
get() {
return props.appPageKey;
},
set(val: any) {
emits("update:appPageKey", val);
},
1 year ago
});
//表单版本ID
11 months ago
const formVersion = ref<string>("");
const formPageId = ref<string>("");
1 year ago
const state = reactive<formStruct>({
11 months ago
formData: {
list: [],
form: {
size: "default",
name: "",
formName: formConfigCont.formName,
dataTitle: [],
labelPosition: "left",
dataSource: "no",
dataSourceConfig: {
id: "",
dataBaseName: "",
tableName: "",
tableKey: "",
dsn: {},
},
1 year ago
},
11 months ago
config: {
groupKey: props.formKey,
classify: 4,
},
styles: {
divStyle: {},
labelStyle: {},
inputStyle: {},
},
purview: [],
8 months ago
aiConfig: [],
11 months ago
},
editor: {},
loading: false,
formDataPreview: {},
previewVisible: false, // 预览窗口
designType: route.type, // 当前页面设计类型,有效值search
formDict: {},
formOtherData: {
source: route.source || "",
formName: formConfigCont.formName,
},
5 months ago
echatsViews: [],
11 months ago
});
const appPageInfo = ref();
1 year ago
/**
@ 作者: 秦东
@ 时间: 2024-05-07 15:11:24
@ 功能: 关闭页面
*/
11 months ago
const closeSavePageForm = () => {
emits("update:isShow", false);
emits("gainSunAppContent");
emits("updateInit");
emits("update:isNew", false);
// console.log("appPageInfo.value",appPageInfo.value)
if (tabsActive.value == 1) {
appPageInfo.value.gainTableForm();
}
};
1 year ago
onBeforeMount(() => {
11 months ago
// console.log("onBeforeMount",props.isNew)
// console.log("onBeforeMount--->appPageKey",props.appPageKey)
let send = {
types: 3,
};
if (props.isNew) {
props.appPageKey = "";
state.formData.list = [];
formVersion.value = "";
appPageKey.value = "";
getProductionMarkForm(send)
.then(({ data }) => {
formConfigCont.formlogo = data.formlogo;
formConfigCont.formName = data.formname;
formConfigCont.signCode = data.signCode;
state.formData.form.name = data.formlogo;
state.formData.form.formName = data.formname;
state.formOtherData.formName = data.formname;
})
.finally(() => {});
}
// console.log("onBeforeMount",props.isNew)
// console.log("onBeforeMount--2->appPageKey",props.appPageKey)
if (props.appPageKey == "") {
getProductionMarkForm(send)
.then(({ data }) => {
formConfigCont.formlogo = data.formlogo;
formConfigCont.formName = data.formname;
formConfigCont.signCode = data.signCode;
state.formData.form.name = data.formlogo;
state.formData.form.formName = data.formname;
state.formOtherData.formName = data.formname;
})
.finally(() => {});
}
// console.log("state------------>",state)
});
1 year ago
</script>
<template>
11 months ago
<el-drawer
v-model="props.isShow"
title="设置/编辑自定义表单"
:with-header="false"
:close-on-click-modal="false"
:close-on-press-escape="false"
:destroy-on-close="true"
:size="props.drawerWith"
>
<div class="common-layout">
<el-container>
<el-header class="headerBox">
<div class="headLeft">
<el-space wrap>
<el-avatar shape="square" :size="25" :src="props.appCont.appSvg" />
<el-tooltip
class="box-item"
effect="dark"
:content="props.appCont.appName"
placement="bottom"
>
<el-text class="w-150px mb-2" truncated>{{
props.appCont.appName
}}</el-text>
</el-tooltip>
<i class="fa fa-angle-right"></i>
<el-tooltip
class="box-item"
effect="dark"
:content="state.formData.form.formName"
placement="bottom"
>
<el-text class="w-150px mb-2" truncated>{{
state.formData.form.formName
}}</el-text>
</el-tooltip>
</el-space>
</div>
<div>
<el-tabs
v-model="tabsActive"
@tab-click="handleClick"
:stretch="true"
class="tabsMain"
>
<el-tab-pane label="① 页面管理" :name="1"> </el-tab-pane>
<el-tab-pane label="② 流程设计" :name="2"> </el-tab-pane>
<el-tab-pane label="③ 列表设计" :name="3"> </el-tab-pane>
5 months ago
<el-tab-pane label="④ 数据看板" :name="4"> </el-tab-pane>
8 months ago
<el-tab-pane label="⑤ 打印设计" :name="5"> </el-tab-pane>
11 months ago
</el-tabs>
</div>
<div class="headRight">
<el-button type="danger" size="small" @click="closeSavePageForm"
>关闭</el-button
>
</div>
</el-header>
<el-container>
<PageForm
ref="appPageInfo"
v-if="tabsActive == 1"
:form-Key="props.formKey"
:app-cont="props.appCont"
:menu-id="menuId"
:group-key="props.groupKey"
v-model:state="state"
v-model:form-version="formVersion"
:formconfigcont="formConfigCont"
v-model:app-page-key="appPageKey"
/>
<PageFlow
v-if="tabsActive == 2"
v-model:state="state"
:form-Key="props.formKey"
:app-cont="props.appCont"
:menu-id="menuId"
:group-key="props.groupKey"
v-model:app-page-key="appPageKey"
v-model:form-version="formVersion"
/>
<PageList
v-if="tabsActive == 3"
v-model:state="state"
:form-Key="props.formKey"
:app-cont="props.appCont"
:menu-id="menuId"
:group-key="props.groupKey"
v-model:app-page-key="appPageKey"
v-model:form-version="formVersion"
/>
5 months ago
<DataBpard
v-if="tabsActive == 4"
v-model:state="state"
:form-Key="props.formKey"
:app-cont="props.appCont"
:menu-id="menuId"
:group-key="props.groupKey"
v-model:app-page-key="appPageKey"
v-model:form-version="formVersion"
/>
8 months ago
<PrintSetupPage
v-if="tabsActive == 5"
v-model:state="state"
:form-Key="props.formKey"
:app-cont="props.appCont"
:menu-id="menuId"
:group-key="props.groupKey"
v-model:app-page-key="appPageKey"
v-model:form-version="formVersion"
/>
11 months ago
</el-container>
</el-container>
</div>
</el-drawer>
1 year ago
</template>
11 months ago
<style lang="scss" scoped>
.headerBox {
padding: 0px;
border-bottom: 2px solid #ececec;
display: flex;
align-items: center;
justify-content: space-between;
.headLeft {
width: 300px;
padding-left: 5px;
span {
max-width: 100px;
}
}
.headRight {
width: 300px;
text-align: right;
padding-right: 5px;
}
.tabsMain {
::v-deep .el-tabs__header {
margin: 0px;
}
::v-deep .el-tabs__nav-scroll {
margin: 0 auto !important;
}
1 year ago
11 months ago
::v-deep .el-drawer__body {
padding: 0;
}
}
1 year ago
}
</style>