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.

245 lines
6.7 KiB

5 years ago
<template>
4 years ago
<div class="form-index-container">
4 years ago
<!-- <el-card class="header-container">
<el-row align="middle" type="flex" :gutter="5">
<i class="el-icon-back" @click="$router.back(-1)" />
<img class="header-logo" src="@/assets/images/indexLogo.svg" @click="$router.push({path:'/home'})">
<el-col />
<el-button type="primary" icon="el-icon-view" @click="previewDialogVisible=true">
预览
</el-button>
<el-button type="success" icon="el-icon-folder-add" @click="saveProjectAsTemplateHandle">
保存为模板
</el-button>
4 years ago
</el-row>
4 years ago
</el-card> -->
4 years ago
<div class="main-container">
<div class="left-menu-container">
4 years ago
<el-menu :collapse="isCollapse"
:default-active="defaultActiveMenu"
class="el-menu-vertical"
>
4 years ago
<el-menu-item v-for="menuItem in menuItemList"
:key="menuItem.key"
:index="menuItem.route"
@click="menuSelectHandle(menuItem.route,menuItem.key)"
>
4 years ago
<i :class="menuItem.icon" />
<span slot="title">{{ menuItem.title }}</span>
</el-menu-item>
5 years ago
</el-menu>
4 years ago
<i v-if="!isCollapse"
class="el-icon-d-arrow-left"
@click="collapseHandle"
/>
<i v-else
class="el-icon-d-arrow-right"
@click="collapseHandle"
/>
4 years ago
</div>
<div class="right-content-container">
4 years ago
<router-view />
4 years ago
</div>
5 years ago
</div>
4 years ago
<el-dialog :visible.sync="previewDialogVisible"
destroy-on-close
fullscreen
4 years ago
>
4 years ago
<pre-view :key="previewKey"
:preview-qrcode="true"
/>
4 years ago
</el-dialog>
5 years ago
</div>
</template>
<script>
4 years ago
import PreView from '@/views/form/preview'
4 years ago
import { formConf } from '@/components/generator/config'
5 years ago
export default {
4 years ago
name: 'NewIndex',
4 years ago
components: { PreView },
5 years ago
data() {
return {
4 years ago
previewKey: +new Date(),
4 years ago
previewDialogVisible: false,
4 years ago
defaultActiveMenu: '',
4 years ago
projectKey: null,
isCollapse: false,
menuItemList: [
{
4 years ago
key: 'edit',
4 years ago
title: '编辑',
icon: 'el-icon-edit',
route: '/project/form/editor'
},
{
4 years ago
key: 'logic',
4 years ago
title: '逻辑',
icon: 'el-icon-menu',
route: '/project/form/logic'
4 years ago
}, {
4 years ago
key: 'view',
4 years ago
title: '外观',
icon: 'el-icon-view',
route: '/project/form/theme'
},
{
4 years ago
key: 'set',
4 years ago
title: '设置',
icon: 'el-icon-setting',
route: '/project/form/setting'
},
{
4 years ago
key: 'publish',
4 years ago
title: '发布',
icon: 'el-icon-video-play',
route: '/project/form/publish'
}, {
4 years ago
key: 'static',
4 years ago
title: '统计',
icon: 'el-icon-data-line',
route: '/project/form/statistics'
4 years ago
},
{
key: 'preview',
title: '预览',
icon: 'el-icon-view'
},
{
key: 'save',
title: '保存',
icon: 'el-icon-folder-add'
},
{
key: 'back',
title: '返回',
icon: 'el-icon-edit'
4 years ago
}
]
5 years ago
}
},
4 years ago
async created() {
4 years ago
this.projectKey = this.$route.query.key
this.defaultActiveMenu = this.$route.path
this.isCollapse = this.$store.state.form.isCollapse
4 years ago
5 years ago
},
methods: {
4 years ago
menuSelectHandle(route, key) {
if (key === 'preview') {
this.previewDialogVisible = true
} else if (key === 'save') {
this.saveProjectAsTemplateHandle()
} else if (key === 'back') {
this.$router.back(-1)
} else { this.$router.replace({ path: route, query: { key: this.projectKey } }) }
4 years ago
},
openPreviewHandle() {
this.previewKey = +new Date()
this.previewDialogVisible = true
},
4 years ago
saveProjectAsTemplateHandle() {
4 years ago
this.$api.post(`${process.env.VUE_APP_API_ROOT_TDUCK}/user/project/template/save`, { key: this.projectKey }).then(() => {
4 years ago
this.msgSuccess('保存成功')
4 years ago
})
},
4 years ago
collapseHandle() {
let isCollapse = !this.isCollapse
this.$store.dispatch('form/setIsCollapse', isCollapse).then(() => {
this.isCollapse = isCollapse
})
5 years ago
}
}
}
</script>
4 years ago
<style lang="scss" scoped>
.form-index-container {
4 years ago
height: 100%;
width: 100%;
}
4 years ago
4 years ago
::v-deep .el-card__body {
4 years ago
padding: 0;
4 years ago
}
4 years ago
4 years ago
::v-deep .el-menu {
4 years ago
border: none;
background-color: transparent;
4 years ago
}
4 years ago
4 years ago
.header-container {
4 years ago
padding-top: 30px;
4 years ago
width: 100%;
4 years ago
height: 50px;
padding: 0 20px;
4 years ago
.el-icon-back {
font-size: 22px;
font-weight: 550;
cursor: pointer;
color: #000;
margin-right: 75px;
4 years ago
&:hover {
color: rgb(32, 160, 255);
4 years ago
}
4 years ago
}
.header-logo {
4 years ago
height: 45px;
4 years ago
width: 200px;
}
4 years ago
}
4 years ago
4 years ago
.main-container {
4 years ago
width: 100vw;
height: calc(100vh - 60px);
display: flex;
flex-direction: row;
.right-content-container {
width: calc(100vw - 100px);
4 years ago
height: calc(100vh - 60px);
4 years ago
overflow-x: hidden;
}
4 years ago
}
4 years ago
4 years ago
.left-menu-container {
4 years ago
max-width: 100px;
text-align: center;
position: relative;
display: flex;
flex-direction: column;
justify-content: space-between;
border-right: solid 1px #e6e6e6;
.el-menu-vertical:not(.el-menu--collapse) {
width: 100px;
min-height: 400px;
}
.el-icon-d-arrow-left,
.el-icon-d-arrow-right {
font-size: 19px;
cursor: pointer;
font-weight: 550;
color: #000;
margin-bottom: 100px;
&:hover {
color: rgb(32, 160, 255);
4 years ago
}
4 years ago
}
4 years ago
}
::v-deep.preview-container {
4 years ago
background-color: #ffffff;
}
5 years ago
</style>