|
@@ -0,0 +1,735 @@
|
|
|
+<template>
|
|
|
+ <div class="homeConfig">
|
|
|
+ <el-form class="homeConfig-form scrollbar-box" :model="form"
|
|
|
+ ref="form" :inline="true" :rules="rules" label-width="200px">
|
|
|
+ <el-form-item label="是否开启首页:">
|
|
|
+ <el-radio-group v-model="form.data1">
|
|
|
+ <el-radio :label="true">开启</el-radio>
|
|
|
+ <el-radio :label="false">关闭</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <!--首页开启-->
|
|
|
+ <div class="button-box" v-if="form.data1">
|
|
|
+ <div class="button-box-title-box">
|
|
|
+ <p class="button-box-title-p">居中按钮配置:<span style="color:#666;"> (最多可配置1个按钮)</span></p>
|
|
|
+ <p class="add-button-p" @click="addHomeButton('center')" v-if="!form.data6[0]">新增</p>
|
|
|
+ </div>
|
|
|
+ <div class="button-min-box">
|
|
|
+ <div class="null-box" v-if="!form.data6[0]">未配置</div>
|
|
|
+ <div class="button-for-box" v-for="(item,index) in form.data6" :key="index">
|
|
|
+ <p class="img-title-p"><span>*</span> 按钮图片:<span style="color:#666;">(尺寸限制为147宽*105高)</span></p>
|
|
|
+ <div class="button-for-min-box">
|
|
|
+ <div class="button-for-min-left-box">
|
|
|
+ <el-form-item label="" label-width="0"
|
|
|
+ :prop="'data6.' + index + '.imgUrl'" :rules="rules.imgUrl">
|
|
|
+ <el-upload
|
|
|
+ class="certificate-avatar-uploader"
|
|
|
+ :action="uploadImgUrl"
|
|
|
+ :show-file-list="false"
|
|
|
+ :on-success="handleAvatarSuccess"
|
|
|
+ :headers="headers"
|
|
|
+ :before-upload="(file)=>beforeAvatarUpload(file,'center')">
|
|
|
+ <div class="center-img">
|
|
|
+ <img v-if="item.imgUrl" :src="item.imgUrl">
|
|
|
+ <p v-if="!item.imgUrl" class="el-icon-plus" style="text-align: center;line-height:104px;font-size:30px;color:#999;"></p>
|
|
|
+ </div>
|
|
|
+ </el-upload>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ <div class="button-for-min-right-box">
|
|
|
+ <el-form-item label="按钮类型:" label-width="90px"
|
|
|
+ :prop="'data6.' + index + '.buttonType'" :rules="rules.buttonType">
|
|
|
+ <el-radio-group v-model="item.buttonType">
|
|
|
+ <el-radio :label="true" style="margin-top:4px;">现有模块</el-radio>
|
|
|
+ <el-radio :label="false" style="margin-top:4px;">暂未开放</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="功能模块:" label-width="90px" v-if="item.buttonType"
|
|
|
+ :prop="'data6.' + index + '.menuId'" :rules="rules.menuId">
|
|
|
+ <el-cascader
|
|
|
+ style="width:200px;"
|
|
|
+ :show-all-levels="false"
|
|
|
+ v-model="item.menuId"
|
|
|
+ :options="menuOptionsMax"
|
|
|
+ :props="{ value: 'menuId', label: 'menuName',emitPath:false }"></el-cascader>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="功能名称:" label-width="90px" v-if="!item.buttonType"
|
|
|
+ :prop="'data6.' + index + '.buttonName'" :rules="rules.buttonName">
|
|
|
+ <el-input v-model="item.buttonName" placeholder="请输入内容" maxLength="10" style="width:200px;"
|
|
|
+ :prop="'data6.' + index + '.buttonName'" :rules="rules.buttonName"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="是否启用:" label-width="90px"
|
|
|
+ :prop="'data6.' + index + '.switch'" :rules="rules.switch">
|
|
|
+ <el-switch
|
|
|
+ v-model="item.switch"
|
|
|
+ active-color="#13ce66"
|
|
|
+ inactive-color="#dedede">
|
|
|
+ </el-switch>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ <!--<div class="button-for-sort-button-box">-->
|
|
|
+ <!--<p class="sort-null-p"></p>-->
|
|
|
+ <!--<p class="el-icon-arrow-up" @click="sortClick(form.data6,index,'top')"></p>-->
|
|
|
+ <!--<p class="el-icon-arrow-down" @click="sortClick(form.data6,index,'bottom')"></p>-->
|
|
|
+ <!--<p class="sort-null-p"></p>-->
|
|
|
+ <!--</div>-->
|
|
|
+ <p class="del-p el-icon-close" @click="delHomeButton('center',index)"></p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="button-box" v-if="form.data1">
|
|
|
+ <div class="button-box-title-box">
|
|
|
+ <p class="button-box-title-p">左侧按钮配置:<span style="color:#666;"> (最多可配置3个按钮)</span></p>
|
|
|
+ <p class="add-button-p" @click="addHomeButton('left')" v-if="!form.data7[2]">新增</p>
|
|
|
+ </div>
|
|
|
+ <div class="button-min-box">
|
|
|
+ <div class="null-box" v-if="!form.data7[0]">未配置</div>
|
|
|
+ <div class="button-for-box" v-for="(item,index) in form.data7" :key="index">
|
|
|
+ <p class="img-title-p"><span>*</span> 按钮图片:<span style="color:#666;">(尺寸限制为297宽*136高)</span></p>
|
|
|
+ <div class="button-for-min-box">
|
|
|
+ <div class="button-for-min-left-box">
|
|
|
+ <el-form-item label="" label-width="0"
|
|
|
+ :prop="'data8.' + index + '.imgUrl'" :rules="rules.imgUrl">
|
|
|
+ <el-upload
|
|
|
+ class="certificate-avatar-uploader"
|
|
|
+ :action="uploadImgUrl"
|
|
|
+ :show-file-list="false"
|
|
|
+ :on-success="handleAvatarSuccess"
|
|
|
+ :headers="headers"
|
|
|
+ :before-upload="beforeAvatarUpload">
|
|
|
+ <div class="left-img">
|
|
|
+ <img v-if="item.imgUrl" :src="item.imgUrl">
|
|
|
+ <p v-if="!item.imgUrl" class="el-icon-plus" style="text-align: center;line-height:136px;font-size:30px;color:#999;"></p>
|
|
|
+ </div>
|
|
|
+ </el-upload>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ <div class="button-for-min-right-box">
|
|
|
+ <el-form-item label="按钮类型:" label-width="90px"
|
|
|
+ :prop="'data7.' + index + '.buttonType'" :rules="rules.buttonType">
|
|
|
+ <el-radio-group v-model="item.buttonType">
|
|
|
+ <el-radio :label="true" style="margin-top:4px;">现有模块</el-radio>
|
|
|
+ <el-radio :label="false" style="margin-top:4px;">暂未开放</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="功能模块:" label-width="90px" v-if="item.buttonType"
|
|
|
+ :prop="'data7.' + index + '.menuId'" :rules="rules.menuId">
|
|
|
+ <el-cascader
|
|
|
+ style="width:200px;"
|
|
|
+ :show-all-levels="false"
|
|
|
+ v-model="item.menuId"
|
|
|
+ :options="menuOptionsMax"
|
|
|
+ :props="{ value: 'menuId', label: 'menuName',emitPath:false }"></el-cascader>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="功能名称:" label-width="90px" v-if="!item.buttonType"
|
|
|
+ :prop="'data7.' + index + '.buttonName'" :rules="rules.buttonName">
|
|
|
+ <el-input v-model="item.buttonName" placeholder="请输入内容" maxLength="10" style="width:200px;"
|
|
|
+ :prop="'data7.' + index + '.buttonName'" :rules="rules.buttonName"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="是否启用:" label-width="90px"
|
|
|
+ :prop="'data7.' + index + '.switch'" :rules="rules.switch">
|
|
|
+ <el-switch
|
|
|
+ v-model="item.switch"
|
|
|
+ active-color="#13ce66"
|
|
|
+ inactive-color="#dedede">
|
|
|
+ </el-switch>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ <div class="button-for-sort-button-box">
|
|
|
+ <p class="sort-null-p"></p>
|
|
|
+ <p class="el-icon-arrow-up" @click="sortClick(form.data7,index,'top')"></p>
|
|
|
+ <p class="el-icon-arrow-down" @click="sortClick(form.data7,index,'bottom')"></p>
|
|
|
+ <p class="sort-null-p"></p>
|
|
|
+ </div>
|
|
|
+ <p class="del-p el-icon-close" @click="delHomeButton('left',index)"></p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="button-box" v-if="form.data1">
|
|
|
+ <div class="button-box-title-box">
|
|
|
+ <p class="button-box-title-p">右侧按钮配置:<span style="color:#666;"> (最多可配置3个按钮)</span></p>
|
|
|
+ <p class="add-button-p" @click="addHomeButton('right')" v-if="!form.data8[2]">新增</p>
|
|
|
+ </div>
|
|
|
+ <div class="button-min-box">
|
|
|
+ <div class="null-box" v-if="!form.data8[0]">未配置</div>
|
|
|
+ <div class="button-for-box" v-for="(item,index) in form.data8" :key="index">
|
|
|
+ <p class="img-title-p"><span>*</span> 按钮图片:<span style="color:#666;">(尺寸限制为297宽*136高)</span></p>
|
|
|
+ <div class="button-for-min-box">
|
|
|
+ <div class="button-for-min-left-box">
|
|
|
+ <el-form-item label="" label-width="0"
|
|
|
+ :prop="'data8.' + index + '.imgUrl'" :rules="rules.imgUrl">
|
|
|
+ <el-upload
|
|
|
+ class="certificate-avatar-uploader"
|
|
|
+ :action="uploadImgUrl"
|
|
|
+ :show-file-list="false"
|
|
|
+ :on-success="handleAvatarSuccess"
|
|
|
+ :headers="headers"
|
|
|
+ :before-upload="beforeAvatarUpload">
|
|
|
+ <div class="right-img">
|
|
|
+ <img v-if="item.imgUrl" :src="item.imgUrl">
|
|
|
+ <p v-if="!item.imgUrl" class="el-icon-plus" style="text-align: center;line-height:136px;font-size:30px;color:#999;"></p>
|
|
|
+ </div>
|
|
|
+ </el-upload>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ <div class="button-for-min-right-box">
|
|
|
+ <el-form-item label="按钮类型:" label-width="90px"
|
|
|
+ :prop="'data8.' + index + '.buttonType'" :rules="rules.buttonType">
|
|
|
+ <el-radio-group v-model="item.buttonType">
|
|
|
+ <el-radio :label="true" style="margin-top:4px;">现有模块</el-radio>
|
|
|
+ <el-radio :label="false" style="margin-top:4px;">暂未开放</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="功能模块:" label-width="90px" v-if="item.buttonType"
|
|
|
+ :prop="'data8.' + index + '.menuId'" :rules="rules.menuId">
|
|
|
+ <el-cascader
|
|
|
+ style="width:200px;"
|
|
|
+ :show-all-levels="false"
|
|
|
+ v-model="item.menuId"
|
|
|
+ :options="menuOptionsMax"
|
|
|
+ :props="{ value: 'menuId', label: 'menuName',emitPath:false }"></el-cascader>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="功能名称:" label-width="90px" v-if="!item.buttonType"
|
|
|
+ :prop="'data8.' + index + '.buttonName'" :rules="rules.buttonName">
|
|
|
+ <el-input v-model="item.buttonName" placeholder="请输入内容" maxLength="10" style="width:200px;"
|
|
|
+ :prop="'data8.' + index + '.buttonName'" :rules="rules.buttonName"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="是否启用:" label-width="90px"
|
|
|
+ :prop="'data8.' + index + '.switch'" :rules="rules.switch">
|
|
|
+ <el-switch
|
|
|
+ v-model="item.switch"
|
|
|
+ active-color="#13ce66"
|
|
|
+ inactive-color="#dedede">
|
|
|
+ </el-switch>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ <div class="button-for-sort-button-box">
|
|
|
+ <p class="sort-null-p"></p>
|
|
|
+ <p class="el-icon-arrow-up" @click="sortClick(form.data8,index,'top')"></p>
|
|
|
+ <p class="el-icon-arrow-down" @click="sortClick(form.data8,index,'bottom')"></p>
|
|
|
+ <p class="sort-null-p"></p>
|
|
|
+ </div>
|
|
|
+ <p class="del-p el-icon-close" @click="delHomeButton('right',index)"></p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="button-box" v-if="form.data1">
|
|
|
+ <div class="button-box-title-box">
|
|
|
+ <p class="button-box-title-p">底部按钮配置:<span style="color:#666;"> (最多可配置5个按钮)</span></p>
|
|
|
+ <p class="add-button-p" @click="addHomeButton('bottom')" v-if="!form.data9[4]">新增</p>
|
|
|
+ </div>
|
|
|
+ <div class="button-min-box">
|
|
|
+ <div class="null-box" v-if="!form.data9[0]">未配置</div>
|
|
|
+ <div class="button-for-box" v-for="(item,index) in form.data9" :key="index">
|
|
|
+ <p class="img-title-p"><span>*</span> 按钮图片:<span style="color:#666;">(尺寸限制为140宽*230高)</span></p>
|
|
|
+ <div class="button-for-min-box">
|
|
|
+ <div class="button-for-min-left-box">
|
|
|
+ <el-form-item label="" label-width="0"
|
|
|
+ :prop="'data9.' + index + '.imgUrl'" :rules="rules.imgUrl">
|
|
|
+ <el-upload
|
|
|
+ class="certificate-avatar-uploader"
|
|
|
+ :action="uploadImgUrl"
|
|
|
+ :show-file-list="false"
|
|
|
+ :on-success="handleAvatarSuccess"
|
|
|
+ :headers="headers"
|
|
|
+ :before-upload="beforeAvatarUpload">
|
|
|
+ <div class="bottom-img">
|
|
|
+ <img v-if="item.imgUrl" :src="item.imgUrl">
|
|
|
+ <p v-if="!item.imgUrl" class="el-icon-plus" style="text-align: center;line-height:230px;font-size:30px;color:#999;"></p>
|
|
|
+ </div>
|
|
|
+ </el-upload>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ <div class="button-for-min-right-box">
|
|
|
+ <el-form-item label="按钮类型:" label-width="90px"
|
|
|
+ :prop="'data9.' + index + '.buttonType'" :rules="rules.buttonType">
|
|
|
+ <el-radio-group v-model="item.buttonType">
|
|
|
+ <el-radio :label="true" style="margin-top:4px;">现有模块</el-radio>
|
|
|
+ <el-radio :label="false" style="margin-top:4px;">暂未开放</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="功能模块:" label-width="90px" v-if="item.buttonType"
|
|
|
+ :prop="'data9.' + index + '.menuId'" :rules="rules.menuId">
|
|
|
+ <el-cascader
|
|
|
+ style="width:200px;"
|
|
|
+ :show-all-levels="false"
|
|
|
+ v-model="item.menuId"
|
|
|
+ :options="menuOptionsMax"
|
|
|
+ :props="{ value: 'menuId', label: 'menuName',emitPath:false }"></el-cascader>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="功能名称:" label-width="90px" v-if="!item.buttonType"
|
|
|
+ :prop="'data9.' + index + '.buttonName'" :rules="rules.buttonName">
|
|
|
+ <el-input v-model="item.buttonName" placeholder="请输入内容" maxLength="10" style="width:200px;"
|
|
|
+ :prop="'data9.' + index + '.buttonName'" :rules="rules.buttonName"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="是否启用:" label-width="90px"
|
|
|
+ :prop="'data9.' + index + '.switch'" :rules="rules.switch">
|
|
|
+ <el-switch
|
|
|
+ v-model="item.switch"
|
|
|
+ active-color="#13ce66"
|
|
|
+ inactive-color="#dedede">
|
|
|
+ </el-switch>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ <div class="button-for-sort-button-box">
|
|
|
+ <p class="sort-null-p"></p>
|
|
|
+ <p class="el-icon-arrow-up" @click="sortClick(form.data9,index,'top')"></p>
|
|
|
+ <p class="el-icon-arrow-down" @click="sortClick(form.data9,index,'bottom')"></p>
|
|
|
+ <p class="sort-null-p"></p>
|
|
|
+ </div>
|
|
|
+ <p class="del-p el-icon-close" @click="delHomeButton('bottom',index)"></p>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!--首页关闭-->
|
|
|
+ <el-form-item label="学生登录跳转至指定页面:" v-if="!form.data1">
|
|
|
+ <el-radio-group v-model="form.data2">
|
|
|
+ <el-radio :label="true">开启</el-radio>
|
|
|
+ <el-radio :label="false">关闭</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="学生跳转指定页面:" prop="data3" v-if="!form.data1&&form.data2">
|
|
|
+ <el-cascader
|
|
|
+ :show-all-levels="false"
|
|
|
+ v-model="form.data3"
|
|
|
+ :options="menuOptions"
|
|
|
+ :props="{ value: 'menuId', label: 'menuName',emitPath:false }"></el-cascader>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="老师登录跳转至指定页面:" v-if="!form.data1">
|
|
|
+ <el-radio-group v-model="form.data4">
|
|
|
+ <el-radio :label="true">开启</el-radio>
|
|
|
+ <el-radio :label="false">关闭</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="老师跳转指定页面:" prop="data5" v-if="!form.data1&&form.data4">
|
|
|
+ <el-cascader
|
|
|
+ :show-all-levels="false"
|
|
|
+ v-model="form.data5"
|
|
|
+ :options="menuOptions"
|
|
|
+ :props="{ value: 'menuId', label: 'menuName',emitPath:false }"></el-cascader>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+ import { getToken } from "@/utils/auth";
|
|
|
+ import { listMenu, getMenu, delMenu, addMenu, updateMenu } from "@/api/systemManagement/index";
|
|
|
+ export default {
|
|
|
+ name: 'homeConfig',
|
|
|
+ data(){
|
|
|
+ return{
|
|
|
+ //上传相关
|
|
|
+ uploadImgUrl: window.location.href.split('://')[0]+'://' + this.judgmentNetworkReturnAddress() + "/system/user/teacher/importData", // 上传地址
|
|
|
+ headers: {
|
|
|
+ Authorization: "Bearer " + getToken(),
|
|
|
+ },
|
|
|
+ //数据
|
|
|
+ form:{
|
|
|
+ data1:true,
|
|
|
+ data2:false,
|
|
|
+ data3:'',
|
|
|
+ data4:false,
|
|
|
+ data5:'',
|
|
|
+ data6:[],
|
|
|
+ data7:[],
|
|
|
+ data8:[],
|
|
|
+ data9:[],
|
|
|
+ },
|
|
|
+ rules:{
|
|
|
+ imgUrl: [
|
|
|
+ { required: true, message: "请输入资质名称", trigger: "change" }
|
|
|
+ ],
|
|
|
+ buttonType: [
|
|
|
+ { required: true, message: "请输入排序序号", trigger: "change" }
|
|
|
+ ],
|
|
|
+ menuId: [
|
|
|
+ { required: true, message: "请输入排序序号", trigger: "change" }
|
|
|
+ ],
|
|
|
+ buttonName: [
|
|
|
+ { required: true, message: "请输入排序序号", trigger: "change" }
|
|
|
+ ],
|
|
|
+ switch: [
|
|
|
+ { required: true, message: "请输入排序序号", trigger: "change" }
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ //菜单列表
|
|
|
+ menuOptions:[],
|
|
|
+ menuOptionsMax:[],
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created(){
|
|
|
+
|
|
|
+ },
|
|
|
+ mounted(){
|
|
|
+ this.getMenu();
|
|
|
+ },
|
|
|
+ methods:{
|
|
|
+ //移动排序
|
|
|
+ sortClick(list,index,status){
|
|
|
+ let tindex = null;
|
|
|
+ if(index == 0 && status == 'top'){
|
|
|
+ return
|
|
|
+ }else if(list.length == index+1 && status == 'bottom'){
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (status == 'top'){
|
|
|
+ tindex = index-1
|
|
|
+ list.splice(tindex,0,list[index]);
|
|
|
+ list.splice(index+1,1)
|
|
|
+ } else if(status == 'bottom'){
|
|
|
+ tindex = index+1
|
|
|
+ list.splice(tindex+1,0,list[index]);
|
|
|
+ list.splice(index,1)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //删除首页按钮
|
|
|
+ delHomeButton(type,index){
|
|
|
+ let self = this;
|
|
|
+ if(type === 'center'){
|
|
|
+ this.$confirm('确认删除该按钮?', "警告", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning"
|
|
|
+ }).then(function() {
|
|
|
+ self.form.data6.splice(index,1);
|
|
|
+ }).then(() => {
|
|
|
+ }).catch(() => {});
|
|
|
+ }else if(type === 'left'){
|
|
|
+ this.$confirm('确认删除该按钮?', "警告", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning"
|
|
|
+ }).then(function() {
|
|
|
+ self.form.data7.splice(index,1);
|
|
|
+ }).then(() => {
|
|
|
+ }).catch(() => {});
|
|
|
+ }else if(type === 'right'){
|
|
|
+ this.$confirm('确认删除该按钮?', "警告", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning"
|
|
|
+ }).then(function() {
|
|
|
+ self.form.data8.splice(index,1);
|
|
|
+ }).then(() => {
|
|
|
+ }).catch(() => {});
|
|
|
+ }else if(type === 'bottom'){
|
|
|
+ this.$confirm('确认删除该按钮?', "警告", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ cancelButtonText: "取消",
|
|
|
+ type: "warning"
|
|
|
+ }).then(function() {
|
|
|
+ self.form.data9.splice(index,1);
|
|
|
+ }).then(() => {
|
|
|
+ }).catch(() => {});
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //添加首页按钮
|
|
|
+ addHomeButton(type){
|
|
|
+ if(type === 'center'){
|
|
|
+ this.form.data6.push({
|
|
|
+ imgUrl:null,
|
|
|
+ buttonType:true,
|
|
|
+ menuId:null,
|
|
|
+ buttonName:null,
|
|
|
+ switch:true
|
|
|
+ })
|
|
|
+ }else if(type === 'left'){
|
|
|
+ this.form.data7.push({
|
|
|
+ imgUrl:null,
|
|
|
+ buttonType:true,
|
|
|
+ menuId:null,
|
|
|
+ buttonName:null,
|
|
|
+ switch:true
|
|
|
+ })
|
|
|
+ }else if(type === 'right'){
|
|
|
+ this.form.data8.push({
|
|
|
+ imgUrl:null,
|
|
|
+ buttonType:true,
|
|
|
+ menuId:null,
|
|
|
+ buttonName:null,
|
|
|
+ switch:true
|
|
|
+ })
|
|
|
+ }else if(type === 'bottom'){
|
|
|
+ this.form.data9.push({
|
|
|
+ imgUrl:null,
|
|
|
+ buttonType:true,
|
|
|
+ menuId:null,
|
|
|
+ buttonName:null,
|
|
|
+ switch:true
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //获取菜单列表
|
|
|
+ getMenu(){
|
|
|
+ listMenu({ menuName: undefined, visible: undefined }).then(response => {
|
|
|
+ let list = [];
|
|
|
+ let newList = []
|
|
|
+ for(let i=0;i<response.data.length;i++){
|
|
|
+ if(response.data[i].menuType!=2 && !response.data[i].isFrame){
|
|
|
+ list.push(response.data[i])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ for(let i=0;i<response.data.length;i++){
|
|
|
+ if(response.data[i].component == 'Layout' && !response.data[i].isFrame){
|
|
|
+ newList.push(response.data[i])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.menuOptions = this.handleTree(list, "menuId");
|
|
|
+ this.menuOptionsMax = this.handleTree(newList, "menuId");
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //图片上传相关
|
|
|
+ handleAvatarSuccess(res, file) {
|
|
|
+ console.log('res.data.url==>',res.data.url);
|
|
|
+ console.log('file==>',file);
|
|
|
+ this.form.applyCertificate = res.data.url;
|
|
|
+ this.$forceUpdate()
|
|
|
+ },
|
|
|
+ beforeAvatarUpload(file,status) {
|
|
|
+ console.log('file',file)
|
|
|
+ console.log('status',status)
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+
|
|
|
+ if (file.type == 'image/png' || file.type == 'image/jpeg' || file.type == 'image/gif') {
|
|
|
+ let reader = new FileReader()
|
|
|
+ reader.readAsDataURL(file) // 必须用file.raw
|
|
|
+ reader.onload = e => { // 让页面中的img标签的src指向读取的路径
|
|
|
+ let img = e.target.result;
|
|
|
+ const image = new Image()
|
|
|
+ image.src=img
|
|
|
+ image.onload = _=>{
|
|
|
+ if(status == 'center'){
|
|
|
+ if(image.width <= 147 && image.height <= 105){
|
|
|
+ resolve()
|
|
|
+ }else{
|
|
|
+ this.$message.error('尺寸限制为147*105px')
|
|
|
+ reject();
|
|
|
+ }
|
|
|
+ }else if(status == 'left' || status == 'right'){
|
|
|
+ if(image.width <= 297 && image.height <= 136){
|
|
|
+ resolve()
|
|
|
+ }else{
|
|
|
+ this.$message.error('尺寸限制为297*136px')
|
|
|
+ reject();
|
|
|
+ }
|
|
|
+ }else if(status == 'bottom'){
|
|
|
+ if(image.width <= 140 && image.height <= 230){
|
|
|
+ resolve()
|
|
|
+ }else{
|
|
|
+ this.$message.error('尺寸限制为140*230px')
|
|
|
+ reject();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ this.$message.error('只能上传png/jpeg/gif格式图片');
|
|
|
+ reject();
|
|
|
+ }
|
|
|
+ // let type = false;
|
|
|
+ // if (file.type == 'image/png' || file.type == 'image/jpeg' || file.type == 'image/gif') {
|
|
|
+ // type = true;
|
|
|
+ // }else{
|
|
|
+ // this.$message.error('只能上传png/jpeg/gif格式图片');
|
|
|
+ // type = false;
|
|
|
+ // }
|
|
|
+ // return type;
|
|
|
+ })
|
|
|
+ },
|
|
|
+ }
|
|
|
+ }
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped lang="scss">
|
|
|
+ .homeConfig{
|
|
|
+ display: flex;
|
|
|
+ flex:1;
|
|
|
+ flex-direction: column;
|
|
|
+ padding:20px;
|
|
|
+ overflow: hidden;
|
|
|
+ .homeConfig-form{
|
|
|
+ display: flex;
|
|
|
+ flex:1;
|
|
|
+ flex-direction: column;
|
|
|
+ font-weight:500;
|
|
|
+ .button-box{
|
|
|
+ border-radius:10px;
|
|
|
+ margin-bottom:20px;
|
|
|
+ .button-box-title-box{
|
|
|
+ border-top:4px solid #dedede;
|
|
|
+ display: flex;
|
|
|
+ .button-box-title-p{
|
|
|
+ flex:1;
|
|
|
+ font-size:14px;
|
|
|
+ line-height:80px;
|
|
|
+ margin-left:90px;
|
|
|
+ }
|
|
|
+ .add-button-p{
|
|
|
+ height:30px;
|
|
|
+ width:80px;
|
|
|
+ margin:25px 50px 25px 0;
|
|
|
+ line-height:30px;
|
|
|
+ text-align: center;
|
|
|
+ border-radius:4px;
|
|
|
+ border:1px solid #0183fa;
|
|
|
+ color:#0183fa;
|
|
|
+ font-size:14px;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ .add-button-p:hover{
|
|
|
+ border:1px solid #0183fa;
|
|
|
+ background-color: #0183fa;
|
|
|
+ color:#fff;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .button-min-box{
|
|
|
+ margin:0 50px;
|
|
|
+ /*border:1px solid #dedede;*/
|
|
|
+ .null-box{
|
|
|
+ line-height:100px;
|
|
|
+ font-size:24px;
|
|
|
+ text-align: center;
|
|
|
+ color:#999;
|
|
|
+ padding-bottom:80px;
|
|
|
+ }
|
|
|
+ .button-for-box{
|
|
|
+ border:1px solid #dedede;
|
|
|
+ border-radius:6px;
|
|
|
+ display: inline-block;
|
|
|
+ margin:0 20px 20px 0;
|
|
|
+ position: relative;
|
|
|
+ .img-title-p{
|
|
|
+ font-size:14px;
|
|
|
+ line-height:50px;
|
|
|
+ margin-left:20px;
|
|
|
+ span{
|
|
|
+ color: red;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .button-for-min-box{
|
|
|
+ display: flex;
|
|
|
+ .button-for-min-left-box{
|
|
|
+ padding-left:20px;
|
|
|
+ }
|
|
|
+ .button-for-min-right-box{
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ }
|
|
|
+ .button-for-sort-button-box{
|
|
|
+ width:30px;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ margin:0 20px 0 10px;
|
|
|
+ .sort-null-p{
|
|
|
+ flex:1;
|
|
|
+ }
|
|
|
+ .el-icon-arrow-up{
|
|
|
+ border: 1px solid #dedede;
|
|
|
+ background-color: #dedede;
|
|
|
+ color:#fff;
|
|
|
+ border-top-left-radius: 6px;
|
|
|
+ border-top-right-radius: 6px;
|
|
|
+ line-height: 60px;
|
|
|
+ text-align: center;
|
|
|
+ font-size:18px;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ .el-icon-arrow-down{
|
|
|
+ border: 1px solid #dedede;
|
|
|
+ background-color: #dedede;
|
|
|
+ border-bottom-left-radius: 6px;
|
|
|
+ border-bottom-right-radius: 6px;
|
|
|
+ color:#fff;
|
|
|
+ line-height: 60px;
|
|
|
+ text-align: center;
|
|
|
+ font-size:18px;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ .el-icon-arrow-up:hover{
|
|
|
+ background-color: #0183fa;
|
|
|
+ color:#fff;
|
|
|
+ }
|
|
|
+ .el-icon-arrow-down:hover{
|
|
|
+ background-color: #0183fa;
|
|
|
+ color:#fff;
|
|
|
+ }
|
|
|
+ p:nth-child(4){
|
|
|
+ margin-bottom:40px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .center-img{
|
|
|
+ width:147px;
|
|
|
+ height:105px;
|
|
|
+ overflow: hidden;
|
|
|
+ border-radius: 4px;
|
|
|
+ border:1px solid #dedede;
|
|
|
+ img{
|
|
|
+ display: block;
|
|
|
+ width:146px;
|
|
|
+ height:104px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .left-img{
|
|
|
+ width:297px;
|
|
|
+ height:136px;
|
|
|
+ overflow: hidden;
|
|
|
+ border-radius: 4px;
|
|
|
+ border:1px solid #dedede;
|
|
|
+ img{
|
|
|
+ display: block;
|
|
|
+ width:296px;
|
|
|
+ height:136px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .right-img{
|
|
|
+ width:297px;
|
|
|
+ height:136px;
|
|
|
+ overflow: hidden;
|
|
|
+ border-radius: 4px;
|
|
|
+ border:1px solid #dedede;
|
|
|
+ img{
|
|
|
+ display: block;
|
|
|
+ width:296px;
|
|
|
+ height:136px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .bottom-img{
|
|
|
+ width:140px;
|
|
|
+ height:230px;
|
|
|
+ overflow: hidden;
|
|
|
+ border-radius: 4px;
|
|
|
+ border:1px solid #dedede;
|
|
|
+ img{
|
|
|
+ display: block;
|
|
|
+ width:140px;
|
|
|
+ height:230px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .del-p{
|
|
|
+ cursor: pointer;
|
|
|
+ position: absolute;
|
|
|
+ line-height: 20px;
|
|
|
+ width:20px;
|
|
|
+ text-align: center;
|
|
|
+ color:#FF6666;
|
|
|
+ font-size:14px;
|
|
|
+ top:5px;
|
|
|
+ right:5px;
|
|
|
+ border-radius:50%;
|
|
|
+ }
|
|
|
+ .del-p:hover{
|
|
|
+ background-color: #FF6666;
|
|
|
+ color:#fff;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+</style>
|