Parcourir la source

路由白名单功能上线

Jing il y a 7 heures
Parent
commit
d5a10840fd

+ 45 - 0
src/api/router.js

@@ -0,0 +1,45 @@
+// 路由白名单
+import request from '@/utils/request'
+
+//路由白名单列表
+export const getWhiteRouterList = (params) => {
+  return request({
+    url: '/website/getWhiteRouterList',
+    method: 'get',
+    params
+  })
+}
+// 创建路由白名单
+export const addWhiteRouter = (data) => {
+  return request({
+    url: '/website/addWhiteRouter',
+    method: 'post',
+    data
+  })
+}
+
+// 删除路由白名单
+export const delWhiteRouter = (data) => {
+  return request({
+    url: '/website/delWhiteRouter',
+    method: 'post',
+    data
+  })
+}
+
+//更新路由白名单
+export const upWhiteRouter = (data) => {
+  return request({
+    url: '/website/upWhiteRouter',    
+    method: 'post',    
+    data  
+  })
+} 
+//获取路由白名单详情
+export const getWhiteRouterInfo = (params) => {
+  return request({
+    url: '/website/getWhiteRouterInfo',
+    method: 'get',
+    params
+  })
+} 

+ 16 - 0
src/router/index.js

@@ -1091,6 +1091,22 @@ export const constantRoutes = [
     ]
 
   },
+  {
+    path: '/routerList',
+    component: Layout,
+    children: [
+      {
+        name: '',
+        path: '',
+        component: () => import('@/views/router/routerList'),
+        meta: {
+          title: '路由白名单',
+          hidden: true,
+          breadcrumb: true
+        }
+      }
+    ]
+  },
 ]
 
 /**

+ 61 - 52
src/views/menu/department.vue

@@ -10,7 +10,7 @@
 
     <!--表格内容 start------------------------------------------------------------>
     <div class="layerBox">
-      <tableTitle :name="tableDivTitle"/>
+      <tableTitle :name="tableDivTitle" />
       <el-row>
         <template>
           <el-table :data="tableData" style="width: 100%">
@@ -19,7 +19,8 @@
             <el-table-column fixed="right" label="操作" width="200" header-align="center">
               <template slot-scope="scope">
                 <div class="listBtnBox">
-                  <div class="listDeleteBtn" @click="deleteRow(scope.row.id)"><i class="el-icon-edit-outline"></i>删除</div>
+                  <div class="listDeleteBtn" @click="deleteRow(scope.row.id)"><i class="el-icon-edit-outline"></i>删除
+                  </div>
                   <div class="listEditBtn" @click="editRow(scope.row.id)"><i class="el-icon-edit-outline"></i>编辑</div>
                 </div>
               </template>
@@ -33,7 +34,9 @@
     <div class="alignBox">
       <el-row>
         <el-col :span="24">
-          <el-pagination :current-page="getApiData.page" @size-change="handleSizeChange" @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper" :total="allCount"></el-pagination>
+          <el-pagination :current-page="getApiData.page" @size-change="handleSizeChange"
+            @current-change="handleCurrentChange" :page-size="10" layout="total, prev, pager, next, jumper"
+            :total="allCount"></el-pagination>
         </el-col>
       </el-row>
     </div>
@@ -43,11 +46,11 @@
     <!--弹出框 start------------------------------------------------------------>
     <el-dialog :title="editId ? '编辑职能部门' : '添加职能部门'" :visible.sync="windowStatus" :close-on-click-modal="false">
       <el-form :model="form" ref="form" :rules="formRules" autocomplete="off" label-position="left">
-        <div class="formDiv">
+        <!-- <div class="formDiv">
           <el-form-item label="选择上级部门" :label-width="formLabelWidth" prop="pid" class="custom-align-right">
-            <el-cascader :key="searchDepartmentKey" v-model="form.pid" placeholder="选择导航池所属行政区划" :props="searchDepartmentData" filterable clearable></el-cascader>
+            <el-cascader :key="searchDepartmentKey" v-model="form.pid" placeholder="请选择上级部门" :props="searchDepartmentData" filterable clearable></el-cascader>
           </el-form-item>
-        </div>
+        </div> -->
         <div class="formDiv">
           <el-form-item label="部门名称:" :label-width="formLabelWidth" prop="name" class="custom-align-right">
             <el-input v-model="form.name" autocomplete="off" placeholder="请输入职能部门名称"></el-input>
@@ -57,7 +60,7 @@
       <div slot="footer" class="dialog-footer">
         <div>
           <el-button @click="closeWindow">取 消</el-button>
-          <el-button type="primary" @click="addData" v-if="editId==0">提交</el-button>
+          <el-button type="primary" @click="addData" v-if="editId == 0">提交</el-button>
           <el-button type="primary" @click="editData" v-else>修改</el-button>
         </div>
       </div>
@@ -80,14 +83,14 @@ export default {
   data() {
     //0.全局操作 start ------------------------------------------------------------>
     //表单验证
-    const validateEmpty = (rule,value,callback) => {
+    const validateEmpty = (rule, value, callback) => {
       if (!value || value.trim() === "") {
         callback(new Error('该项不能为空!'));
       } else {
         callback();
       }
     }
-    const validateArray = (rule,value,callback) => {
+    const validateArray = (rule, value, callback) => {
       if (value.length == 0) {
         callback(new Error('该项不能为空!'))
       } else {
@@ -99,21 +102,21 @@ export default {
 
     return {
       //1.列表和分页相关 start ------------------------------------------------------------>
-      tableDivTitle:"职能部门管理",
+      tableDivTitle: "职能部门管理",
       tableData: [],//列表
-      allCount:0,//总条数
-      editId:0,//要修改的网站id
-      getApiData:{
-        search:"",//职能部门名称
-        page:1,//当前是第几页
-        pageSize:10,//一共多少条
+      allCount: 0,//总条数
+      editId: 0,//要修改的网站id
+      getApiData: {
+        search: "",//职能部门名称
+        page: 1,//当前是第几页
+        pageSize: 10,//一共多少条
       },
       //行政职能部门
-      searchDepartmentKey:0, 
+      searchDepartmentKey: 0,
       searchDepartmentData: {
         checkStrictly: true,
         lazy: true,
-        async lazyLoad (node, resolve) {
+        async lazyLoad(node, resolve) {
           const { level, data } = node;
           if (data && data.children && data.children.length !== 0) {
             return resolve(node)
@@ -121,9 +124,9 @@ export default {
           console.log(level)
           let parentId = level == 0 ? 0 : data.value
           let parames = {
-            'pid':parentId
+            'pid': parentId
           }
-          self.$store.dispatch('public/getAllDepartment',parames).then(res=> {
+          self.$store.dispatch('public/getAllDepartment', parames).then(res => {
             if (res.data) {
               const nodes = res.data.map(item => ({
                 value: item.id,
@@ -140,7 +143,7 @@ export default {
 
       //2.弹出框设置 start ------------------------------------------------------------>
       //是否显示弹出窗口
-      windowStatus:false,
+      windowStatus: false,
       formLabelWidth: '120px',
       //弹出框设置 end ------------------------------------------------------------>
 
@@ -150,16 +153,16 @@ export default {
       //3.弹出框中的表单设置 start ------------------------------------------------------------>
       //3.1 表单收集的数据
       form: {
-        pid:"",
-        name:""
+        pid: 0,
+        name: ""
       },
-     
+
       //3.2表单验证规则
       formRules: {
         //角色名称不能为空
-        pid:[{required:true,trigger:'blur',validator:validateArray}],
+        // pid:[{required:true,trigger:'blur',validator:validateArray}],
         //职能描述不能为空
-        name:[{required:true,trigger:'blur',validator:validateEmpty}],
+        name: [{ required: true, trigger: 'blur', validator: validateEmpty }],
       },
       //弹出框中的表单设置 end ------------------------------------------------------------>
     }
@@ -167,8 +170,8 @@ export default {
   methods: {
     //1.列表和分页相关 start ------------------------------------------------------------>
     //1.1 获取内容
-    getData(){
-      this.$store.dispatch('public/getDepartmentList',this.getApiData).then(res=> {
+    getData() {
+      this.$store.dispatch('public/getDepartmentList', this.getApiData).then(res => {
         console.log(res)
         this.tableData = res.data.rows;
         this.allCount = res.data.count;
@@ -191,14 +194,14 @@ export default {
       this.getData();
     },
     //1.4 删除职能部门
-    deleteRow(id){
+    deleteRow(id) {
       this.$confirm('此操作将永久删除该条数据, 是否继续?', '提示', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'
       }).then(() => {
         console.log("当前删除:" + id)
-        this.$store.dispatch('public/delDepartment',{id:id}).then(res=> {
+        this.$store.dispatch('public/delDepartment', { id: id }).then(res => {
           this.getData();
           this.$message({
             type: 'success',
@@ -227,29 +230,28 @@ export default {
       //this.$refs.form.clearValidate();
     },
     //2.2 关闭弹出框
-    closeWindow(){
+    closeWindow() {
       this.windowStatus = false;
       this.clearToServe();
       this.$refs.form.clearValidate();
     },
     //2.3 清空提交窗口
-    clearToServe(){
+    clearToServe() {
       this.editId = 0;
-      this.form.pid = [];
+      this.form.pid = 0;
       this.form.name = "";
     },
     //弹出框设置 end ------------------------------------------------------------>
 
     //4.添加 start ------------------------------------------------------------>
-    addData(){
-      if(this.form.pid.length!=0){
-        const lastPicValue = this.form.pid[this.form.pid.length - 1];
-        this.form.pid = String(lastPicValue);
+    addData() {
+      if (this.form.pid.length != 0) {
+        this.form.pid = 0
       }
       this.$refs.form.validate(valid => {
         if (valid) {
-          this.$store.dispatch('public/addDepartment',this.form).then(res=> {
-            if(res.code == 200){
+          this.$store.dispatch('public/addDepartment', this.form).then(res => {
+            if (res.code == 200) {
               this.$message({
                 type: 'success',
                 message: '已成功添加职能部门!'
@@ -257,7 +259,7 @@ export default {
               console.log(res)
               this.closeWindow();
               this.getData();
-            }else{
+            } else {
               this.$message({
                 type: 'warning',
                 message: res.message
@@ -279,11 +281,11 @@ export default {
 
     //4.编辑 start ------------------------------------------------------------>
     //回显数据
-    editRow(id){
+    editRow(id) {
       this.openWindow();
       //设置要编辑的id
       this.editId = id;
-      this.$store.dispatch('public/getDepartmentMain',{id:id}).then(res=> {
+      this.$store.dispatch('public/getDepartmentMain', { id: id }).then(res => {
         console.log(res)
         this.form.name = res.data.name;
         this.form.pid = res.data.pid;
@@ -314,7 +316,7 @@ export default {
       })
     },
     //回显职能部门
-    async loadCascaderPath(path,type) {
+    async loadCascaderPath(path, type) {
       for (let i = 0; i < path.length; i++) {
         const parentId = path[i - 1] || 0; // 获取当前层级的父级ID
         const level = i; // 当前层级的索引
@@ -333,16 +335,16 @@ export default {
       }
     },
     //提交编辑
-    editData(){
+    editData() {
       this.form.id = this.editId;
-      if(this.form.pid.length!=0){
+      if (this.form.pid.length != 0) {
         const lastPicValue = this.form.pid[this.form.pid.length - 1];
         this.form.pid = String(lastPicValue);
-      } 
+      }
       //获取选中的节点
       this.$refs.form.validate(valid => {
         if (valid) {
-          this.$store.dispatch('public/upDepartment',this.form).then(res=> {
+          this.$store.dispatch('public/upDepartment', this.form).then(res => {
             console.log(res)
             this.closeWindow();
             this.$message({
@@ -362,12 +364,12 @@ export default {
     //编辑 end ------------------------------------------------------------>
 
   },
-  mounted(){
+  mounted() {
     //获取页面列表
     this.getData();
     //获取菜单树
     //this.getAllMenuList();
-  } 
+  }
 }
 </script>
 
@@ -375,19 +377,26 @@ export default {
 .layerBoxNoBg {
   padding: 30px 0 0 0;
 }
+
 //表单微调 start------------------------------------------------------------>*/
-::v-deep .custom-form-item > .el-form-item__label {
+::v-deep .custom-form-item>.el-form-item__label {
   line-height: 140px !important;
 }
+
 ::v-deep .custom-textarea .el-textarea__inner {
-  resize: none; /* 禁止用拖拽调整大小 */
+  resize: none;
+  /* 禁止用拖拽调整大小 */
 }
+
 ::v-deep .custom-align-right .el-form-item__label {
-  text-align: right; /* 设置标签文字右对齐 */
+  text-align: right;
+  /* 设置标签文字右对齐 */
 }
+
 ::v-deep .el-select-group__title {
   color: #909399;
 }
+
 ::v-deep .el-select {
   width: 100% !important;
 }

+ 1 - 1
src/views/news/addGood.vue

@@ -593,7 +593,7 @@ export default {
           this.$store.dispatch('news/addGood', this.form).then(res => {
             if (res.code == 200) {
               //汇报结果
-              if (this.type_id == 10000) {
+              if (this.user_type == 10000) {
                 this.$message({
                   type: 'success',
                   message: '已成功添加商品!'

+ 43 - 0
src/views/router/components/tableTitle.vue

@@ -0,0 +1,43 @@
+<template>
+  <div class="tableTitle">
+    <span class="tableFloatLine"></span>
+    {{name}}
+  </div>
+</template>
+
+<script>
+export default {
+  props: {
+    name: {
+      type: String,
+      required: true,
+    },
+  },
+  data() {
+    return {
+      someData: '',
+    };
+  },
+};
+</script>
+
+<style scoped lang="less">
+  .tableTitle {
+    height: 38px;
+    line-height: 38px;
+    color:#333333;
+    position: relative;
+    margin-bottom: 30px;
+    .tableFloatLine {
+      // display: inline-block;
+      width: 3px;
+      height:16px;
+      background:#5570F1;
+      display: block;
+      position: absolute;
+      left:-20px;
+      top:10px;
+      // vertical-align: middle;
+    }
+  }
+</style>

+ 695 - 0
src/views/router/routerList.vue

@@ -0,0 +1,695 @@
+<template>
+    <!-- 路由白名单位管理 -->
+    <div>
+        <!-- 提示信息 -->
+        <div class="tips">
+            <el-row>
+                <el-col :span="24">
+                    <i class="tipsIcon"></i>
+                    <span class="tipsText">通常来说,用户访问了非路由列表中的地址,前端会阻止其访问。但是部分功能,比如商圈,广告等并不存在于导航池中,自然也就不存在于路由列表。此时需要手动添加路由使其可以访问。</span>
+                </el-col>
+            </el-row>
+        </div>
+        <!-- 头部搜索框部分 -->
+        <div class="title">
+            <el-row>
+                <el-col :span="6" class="left">
+                    <div class="searchBox">
+                        <div class="searchTitle">网站名称</div>
+                        <el-select v-model="webSiteName_id" :multiple="false" :multiple-limit="1" filterable remote
+                            reserve-keyword placeholder="请输入网站名称" clearable :remote-method="getWebNavList"
+                            :loading="webSiteLoading" @change="selectWebSite">
+                            <el-option v-for="item in webSiteList" :key="item.id" :label="item.title"
+                                :value="item.id">
+                            </el-option>
+                        </el-select>
+                    </div>
+                </el-col>
+              
+                <el-col :span="6" class="left">
+                    <div class="searchBox">
+                        <div class="searchTitle">所属功能</div>
+                        <el-input v-model="function_name" class="input" clearable placeholder="请输入所属功能"></el-input>
+                    </div>
+                </el-col>
+                <el-col :span="8" class="right">
+                    <div class="btnList">
+                        <button class="search" @click="goSearch">搜索</button>
+                        <button class="reset" @click="goReset">重置</button>
+                    </div>
+                </el-col>
+            </el-row>
+        </div>
+        <!--表格内容 start------------------------------------------------------------>
+        <div class="layerBox">
+            <tableTitle :name="tableDivTitle" />
+            <button class="btn" @click="addWhiteRouter">添加路由</button>
+            <el-row>
+                <template>
+                    <el-table class="my-table" v-loading="loading" :data="tableData" style="width: 100%">
+                        <el-table-column fixed prop="id" label="编号" width="90">
+                        </el-table-column>
+                        <el-table-column prop="website_names" label="所属网站">
+                            <template slot-scope="scope">
+                                <div class="titleWidth">{{scope.row.website_names.join('、')}}</div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column prop="router_url" label="路由路径" width="110">
+                        </el-table-column>
+                        <el-table-column prop="function_name" label="所属功能" width="110">
+                        </el-table-column>
+                         <el-table-column fixed="right" label="操作" width="200" align="center">
+                            <template slot-scope="scope">
+                                <div class="listBtnBox">
+                                    <div class="listEditBtn" @click="goEdit(scope.row.id, scope.row)"><i
+                                            class="el-icon-edit-outline"></i>编辑</div>
+                                    <div class="listDeleteBtn" @click="deleteRow(scope.row.id, tableData)"><i
+                                        class="el-icon-delete"></i>删除</div>
+                                </div>
+                            </template>
+                        </el-table-column>
+                    
+                    </el-table>
+                </template>
+            </el-row>
+        </div>
+        <!--分页 start------------------------------------------------------------>
+        <div class="alignBox">
+            <el-row>
+                <el-col :span="24">
+                    <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange"
+                        :current-page="page" :page-size="pageSize" layout="total, prev, pager, next, jumper"
+                        :total="total">
+                    </el-pagination>
+                </el-col>
+            </el-row>
+        </div>
+        <!--分页 end------------------------------------------------------------>
+        <!--表格内容 end------------------------------------------------------------>
+
+        <!-- 弹出框 编辑 start----------------------------------------------------------->
+        <el-dialog :title="dialogName" :visible.sync="dialogTableVisible" width="50%" top="8vh"
+            :close-on-click-modal="false">
+            <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
+                <div class="dialogText">
+                    <el-form-item label="网站名称:" prop="website_id">
+                        <el-cascader
+                            :props="props"
+                            v-model="ruleForm.website_id"
+                            placeholder="请输入网站名称"
+                            :options="webSiteAllList"
+                            filterable
+                            >
+                        </el-cascader>
+         
+                    </el-form-item>
+                    <el-form-item label="所属功能:" prop="function_name">
+                        <el-input v-model="ruleForm.function_name" placeholder="请输入所属功能"></el-input>
+                    </el-form-item>
+                    <el-form-item label="路由地址:" prop="router_url">
+                        <el-input v-model="ruleForm.router_url" placeholder="例如:/xiangcunshangcheng"></el-input>
+                    </el-form-item>
+                </div>
+                <div class="dialogBtn">
+                    <el-button type="info" @click="cancelForm">取消</el-button>
+                    <el-button type="primary" @click="submitForm">提交</el-button>
+                </div>
+            </el-form>
+        </el-dialog>
+        <!-- 弹出框 编辑 end----------------------------------------------------------->
+    </div>
+</template>
+
+<script>
+//表格标题
+import tableTitle from './components/tableTitle.vue';
+
+//引入公用样式
+import '@/styles/global.less';
+import { getWhiteRouterList,delWhiteRouter,addWhiteRouter,upWhiteRouter } from '@/api/router'
+export default {
+    components: {
+        tableTitle,//表格标题-
+    },
+    data() {
+        const validateEmpty = (rule, value, callback) => {
+            if (value.length == 0) {
+                callback(new Error('该项不能为空!'))
+            } else {
+                callback()
+            }
+        }
+        return {
+            props:{ 
+                multiple: true,
+                label:"website_name",
+                value:"id"
+            },
+            tableDivTitle: "路由白名单",  //列表标题
+            dialogTableVisible: false,      //编辑弹框
+            dialogName: '编辑', //编辑弹窗名称
+            loading: true, //加载中
+            tableData: [],//表格数据
+            // 可以输入的搜索框相关
+            webSiteList: [],//获取关联网站列表
+            webSiteAllList: [],//获取关联网站列表
+            webSiteLoading: false,
+            value: '',
+            // 分页相关
+            page: 1,
+            pageSize: 10,
+            total: 0,
+            // 搜索框相关
+            webSiteName_id: '', //网站名称id
+            function_name: '', //所属功能
+            website_id: [], //网站id
+            id:"", //当前编辑的id
+            ruleForm: {
+                website_id: '', //网站名称
+                function_name: '', //路由白名单位名称
+                router_url: '', //路由白名单位标识
+                
+            },
+            rules: {
+                website_id: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+                function_name: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+                router_url: [{ required: true, trigger: 'blur', validator: validateEmpty }],
+            }
+        }
+    },
+    methods: {
+        //1.列表和分页相关 start ------------------------------------------------------------>
+        //1.1 开始请求列表信息方法
+        getData() {
+                getWhiteRouterList({
+                    page: this.page,
+                    pageSize: this.pageSize,
+                    name: this.function_name,
+                    website_id: this.webSiteName_id, //路由白名单位名称 id
+                }).then(data => {
+                    this.loading=false;
+                    console.log("返回数据",data);
+                    this.tableData = data.data.rows
+                    this.total = data.data.count
+               
+                })
+        },
+
+        //1.2 删除内容
+        deleteRow(id) {
+            let data = new FormData()
+            data.append('id', id)
+            this.$confirm('注意:删除后,该条信息及其绑定关系全部删除', '是否确认删除该条信息?', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+            }).then(() => {
+                console.log("当前删除:" + id)
+
+                delWhiteRouter({
+                    id: id
+                }).then(data => {
+                    console.log(data);
+                    if (data.code = 200) {
+                        this.$message({
+                            message: '删除成功',
+                            type: 'success'
+                        })
+                        this.getData()
+                    } else if (data.code == 0) {
+                        this.$message({
+                            message: data.message,
+                            type: 'error'
+                        })
+                    }
+                })
+
+            }).catch(() => {
+                this.$message({
+                    type: 'warning',
+                    message: '已取消删除'
+                });
+            });
+        },
+        //1.4 列表内容分页
+        //直接跳转
+        handleSizeChange(val) {
+            this.page = val;
+            this.getData();
+        },
+        //1.5 点击分页
+        handleCurrentChange(val) {
+            this.page = val;
+            this.getData();
+        },
+        // 1.6 搜索按钮
+        goSearch() {
+            getWhiteRouterList({
+                page: this.page,
+                pageSize: this.pageSize,
+                function_name: this.function_name,
+                website_id: this.webSiteName_id, //路由白名单位名称 id
+            }).then(data => {
+                console.log(data);
+                this.tableData = data.data.rows
+                this.total = data.data.count
+        
+            })
+
+        },
+        //1.7 重置按钮
+        goReset() {
+            this.webSiteName_id = ""
+            this.function_name = ""
+            this.getData()
+        },
+        //列表和分页相关 end ------------------------------------------------------------>
+
+        //1.8 编辑
+        goEdit(id, val) {
+            // console.log(id);
+            this.dialogName = '编辑'
+            this.id = id
+            this.dialogTableVisible = true
+            console.log(id, val);
+            // console.log("状态", val.status);
+            //数据回显
+            this.ruleForm.website_id = val.website_id //网站id
+            this.ruleForm.function_name = val.function_name //功能名称
+            this.ruleForm.router_url = val.router_url //路由地址
+        },
+
+        //2.0 添加
+        addWhiteRouter() {
+            this.dialogTableVisible = true
+            this.dialogName = "添加"
+
+            //添加时清空回显回来的数据
+            this.ruleForm.website_id = '' //网站id
+            this.ruleForm.function_name = '' //功能名称
+            this.ruleForm.router_url = '' //路由地址
+        },
+
+
+        // 2.1 弹出层相关方法
+        // 提交表单
+        submitForm() {
+            // 判断用户是否输入数据
+            if (this.dialogName == "添加") {
+                this.$refs.ruleForm.validate(valid => {
+                    if (valid) {
+                            // Flatten the website_id array
+                            const flattenedWebsiteId = this.ruleForm.website_id.flat();
+                            addWhiteRouter({
+                                website_id: flattenedWebsiteId,
+                                function_name: this.ruleForm.function_name,
+                                router_url: this.ruleForm.router_url,
+                        
+                            }).then(data => {
+                                console.log(data);
+                                if (data.code == 200) {
+                                    this.$message({
+                                        message: '添加成功',
+                                        type: 'success'
+                                    })
+                                    this.dialogTableVisible = false
+                                    this.getData()
+                                } else {
+                                    this.$message({
+                                        message: data.message,
+                                        type: 'error'
+                                    })
+                                    this.dialogTableVisible = true
+                                    return
+                                }
+                            })
+                    }
+                })
+            }
+
+            if (this.dialogName == "编辑") {
+                // Flatten the website_id array
+                this.$refs.ruleForm.validate(valid => {
+                if (valid) {
+                        const flattenedWebsiteId = this.ruleForm.website_id.flat();
+                        upWhiteRouter({
+                            website_id: flattenedWebsiteId,
+                            function_name: this.ruleForm.function_name,
+                            router_url: this.ruleForm.router_url,        
+                            id: this.id
+                        }).then(data => {
+                            console.log(data);
+                            if (data.code == 200) {
+                                this.$message({
+                                    message: '编辑成功',
+                                    type: 'success'
+                                })
+                                this.dialogTableVisible = false
+                            }else {
+                                this.$message({
+                                    message: data.message,
+                                    type: 'error'
+                                })
+                                this.dialogTableVisible = true
+                            }
+                            this.getData()
+                        })
+            }
+            
+        })
+        }
+        },
+        //取消添加或编辑
+        cancelForm() {
+            this.dialogTableVisible = false
+        },
+        //搜索部分的输入关键词下拉框
+        selectWebSite(value) {
+            this.webSiteName_id = value
+        },
+        //
+        getWebNavList(query) {
+            if (query !== '') {
+                this.webSiteLoading = true;
+                let data = { keyword: query }
+                let dataArr = [];
+                this.$store.dispatch('pool/getNavWebList', data).then(res => {
+                    this.webSiteList = res.data;
+                    this.webSiteLoading = false;
+                }).catch(() => {
+                    this.$message({
+                        type: 'info',
+                        message: '网络错误,请重试!'
+                    });
+                })
+            } else {
+                this.navList = [];
+            }
+        },
+        
+        getWebNavLists(node,query) {
+            if (query !== '') {
+                this.webSiteLoading = true;
+                let data = { keyword: query }
+                let dataArr = [];
+                this.$store.dispatch('pool/getNavWebList', data).then(res => {
+                    this.webSiteAllList = res.data;
+                    this.webSiteLoading = false;
+                }).catch(() => {
+                    this.$message({
+                        type: 'info',
+                        message: '网络错误,请重试!'
+                    });
+                })
+            } else {
+                this.navList = [];
+            }
+        },
+    },
+    mounted() {
+        this.getData(),
+        this.getWebNavList();
+        this.getWebNavLists();
+    
+    },
+}
+</script>
+
+<style scoped lang="less">
+input[aria-hidden=true] {
+    display: none !important;
+}
+
+// 提示信息
+.tips {
+    margin: 30px;
+    background-color: #e9ecf9;
+    border-radius: 11px;
+    .tipsIcon {
+        margin: 10px 15px;
+        display: inline-block;
+        width: 24px;
+        height: 24px;
+        background: url("../../assets/advertise/Info Circle.png") no-repeat;
+        vertical-align: middle;
+    }
+    .tipsText {
+        font-size: 14px;
+        color: #666666;
+    }
+}
+
+// 头部
+.title {
+    margin: 30px 30px 20px 30px;
+    padding: 30px 30px 40px 30px;
+    background-color: #fff;
+    border-radius: 20px 20px 20px 20px;
+    border: 1px solid #E9EDF7;
+    .left {
+        float: left;
+    }
+    .right {
+        float: right;
+    }
+    .searchBox {
+        ::v-deep .el-input {
+            position: relative;
+            font-size: 14px;
+            display: inline-block;
+            width: 80%;
+        }
+
+        .searchTitle {
+            padding-bottom: 10px;
+            font-family: Microsoft YaHei, Microsoft YaHei;
+            font-weight: 400;
+            font-size: 14px;
+            color: #999999;
+            line-height: 16px;
+        }
+
+        .el-select {
+            width: 100%;
+            display: inline-block;
+            position: relative;
+        }
+    }
+
+
+    .btnList {
+        float: right;
+        padding-top: 28px;
+
+        button {
+            height: 38px;
+            border: none;
+            border-radius: 8px;
+            padding: 0 30px;
+        }
+
+        .search {
+            background-color: #5570f1;
+            color: #fff;
+            margin-right: 20px;
+        }
+
+        .reset {
+            font-family: Microsoft YaHei, Microsoft YaHei;
+            font-weight: 400;
+            font-size: 16px;
+            color: #333333;
+            background: #F5F7FB;
+            border-radius: 8px 8px 8px 8px;
+            border: 1px solid rgba(85, 112, 241, 0.11);
+        }
+    }
+}
+
+.layerBox {
+    padding: 30px 20px;
+    position: relative;
+
+    .btn {
+        position: absolute;
+        top: 30px;
+        right: 20px;
+        height: 38px;
+        color: #fff;
+        background-color: #5570f1;
+        border: none;
+        border-radius: 8px;
+        padding: 8px 28px 9px;
+        box-sizing: border-box;
+    }
+
+    .listBtnBox {
+        justify-content: left;
+    }
+
+
+    .listDeleteBtn,
+    .listEditBtn,
+    .listLookBtn {
+        margin-left: 0px;
+        padding-left: 0px;
+        margin-right: 20px;
+        width: 76px;
+        height: 36px;
+        line-height: 36px;
+    }
+
+
+    .listLookBtn {
+        text-align: center;
+        border-radius: 8px;
+        cursor: pointer;
+        color: #55b5f1;
+        background-color: rgba(85, 181, 241, 0.16);
+
+        >i {
+            padding-right: 8px;
+        }
+    }
+
+    ::v-deep .el-form-item {
+        margin-bottom: 50px;
+    }
+
+    ::v-deep .el-select {
+        width: 100%;
+    }
+
+    ::v-deep .el-input--medium,
+    ::v-deep .el-form-item__label {
+        line-height: 36px;
+        font-size: 16px;
+    }
+}
+
+// 弹出层内容
+.dialogText {
+    margin: 0 7px 0 3px;
+    padding-bottom: 1px;
+    padding: 30px 60px 1px 20px;
+    background-color: #f5f7fb;
+
+    .adImage {
+        width: 140px;
+        height: 140px;
+        line-height: 210px;
+        border-radius: 12px;
+        border: 1px solid rgba(85, 112, 241, 0.11);
+
+        img {
+            width: 140px;
+            height: 80px;
+        }
+    }
+
+
+
+    ::v-deep .avatar {
+        width: 140px;
+        height: auto;
+    }
+
+    .price {
+        ::v-deep .el-input {
+            width: 29%;
+        }
+    }
+
+    .example {
+        font-family: Microsoft YaHei;
+        color: #5570F1;
+    }
+
+    .el_btnList {
+        margin-right: 15px;
+        margin-top: 20px;
+    }
+
+    //日期时间选择器的宽
+    ::v-deep .el-date-editor.el-input {
+        width: 48%;
+    }
+
+    ::v-deep .el-button+.el-button {
+        margin-left: 0px;
+    }
+
+    ::v-deep .el-select {
+        width: 100%;
+    }
+
+    ::v-deep .el-form-item {
+        margin-bottom: 50px;
+    }
+}
+
+// 弹出层按钮
+.dialogBtn {
+    text-align: center;
+    margin: 50px auto 20px;
+
+    button {
+        width: 184px;
+        padding: 16px;
+        font-family: Microsoft YaHei, Microsoft YaHei;
+        font-weight: 400;
+        font-size: 20px;
+        border: none;
+        border-radius: 12px 12px 12px 12px;
+    }
+
+    // 取消
+    .cancel {
+        color: #333333;
+        background-color: #f5f7fb;
+        border: 2px solid rgba(85, 112, 241, 0.11);
+    }
+
+    // 提交
+    .submit {
+        color: #fff;
+        background-color: #5570F1;
+        margin-left: 40px;
+    }
+}
+
+//审核弹出框
+.radioGroup {
+    ::v-deep .el-form-item {
+        margin-top: 40px;
+        margin-bottom: 0;
+    }
+}
+
+.graph {
+    background-color: #f5f7fb;
+    padding: 60px 100px;
+    overflow: hidden;
+
+    li {
+        float: left;
+    }
+
+    >li:first-child {
+        margin-right: 100px;
+    }
+}
+
+.dialog-footer {
+    margin: 0 auto;
+}
+
+.titleWidth {
+//   width: 600px;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+::v-deep.el-cascader{
+    width: 100%;
+}
+</style>