Jelajahi Sumber

站点管理

rkljw 10 bulan lalu
induk
melakukan
608e795017

+ 11 - 0
src/api/authority.js

@@ -7,4 +7,15 @@ export default {
     delMenu (parames){
         return request.get("/authority/delMenu",parames)
     },
+    
+    //添加菜单
+    addMenu (parames){
+        return request.post("/authority/addMenu",parames)
+    },
+     //编辑菜单
+     updateMenu (parames){
+        return request.post("/authority/updateMenu",parames)
+    },
+
+
 }

+ 2 - 0
src/api/index.js

@@ -4,9 +4,11 @@ import user from './user'
 import login from "@/api/login"
 import pub from "@/api/pub"
 import authority from "@/api/authority"
+import website from "@/api/website"
 export default {
     user,
     login,
     pub,
     authority, //权限管理
+    website, //站点管理
 }

+ 1 - 1
src/api/pub.js

@@ -2,7 +2,7 @@ import {request} from '@/axios/request'
 
 export default {
     getMenuList(){
-        return request.get("/user/getMenuList")
+        return request.get("/authority/getRecursionMenu")
     },
     getCommonRegion(data){
         return request.get("/seller/common/getCommonRegion",data)

+ 22 - 0
src/api/website.js

@@ -0,0 +1,22 @@
+import { request } from '../axios/request'
+export default {
+    //站点列表
+    getWebsiteList (parames){
+        return request.get("/website/getWebsiteList",parames)
+    },
+    //删除站点
+    delWebsite (parames){
+        return request.get("/website/delWebsite",parames)
+    },
+    
+    //添加站点
+    addWebsite (parames){
+        return request.post("/website/addWebsite",parames)
+    },
+     //编辑站点
+     updateWebsite (parames){
+        return request.post("/website/updateWebsite",parames)
+    },
+
+
+}

+ 4 - 4
src/axios/request.js

@@ -17,10 +17,10 @@ instance.defaults.withCredentials=false
 // 添加请求拦截器
 instance.interceptors.request.use(function (config) {
  
-  if(!token){
-      console.log("没有token,跳转到login")
-      window.location.href = "/login"
-  }
+  // if(!token){
+  //     console.log("没有token,跳转到login")
+  //     window.location.href = "/login"
+  // }
   return Object.assign({}, config, {
     headers: {
       'loginDevice': 'localhost:8099',

+ 2 - 5
src/components/DialogSlot/index.vue

@@ -2,7 +2,7 @@
   <div class="dialogSlot-aa"
        :class="dialogClass">
     <el-dialog v-model="innerVisibleShow"
-               @close="closeDlg"
+               @closeDlg="closeDlg"
                destroy-on-close
                show-close
                close-on-press-escape
@@ -47,7 +47,7 @@ export default {
       type: String,
       default: "",
     },
-    close: {
+    closeDlg: {
       type: Function,
     },
     dialogWidth: {
@@ -76,9 +76,6 @@ export default {
     },
   },
   methods: {
-    closeDlg() {
-      this.$emit("DialogClose");
-    },
     async searchSure() {
       this.$emit("searchSureClick"); // 此方法名字歧义  不建议使用 但是旧代码再用 还不能删除
       this.$emit("sureClick");

+ 20 - 0
src/router/index.js

@@ -16,6 +16,26 @@ const routes = [{
                 component: () =>
                     import ('@views/menu/index.vue')
             },
+            {
+                meta: {
+                    action: "roleList",
+                    title: '权限菜单'
+                },
+                path: 'roleList',
+                name: 'roleList',
+                component: () =>
+                    import ('@views/menu/index.vue')
+            },
+            {
+                meta: {
+                    action: "websiteList",
+                    title: '站点列表'
+                },
+                path: 'websiteList',
+                name: 'websiteList',
+                component: () =>
+                    import ('@views/website/index.vue')
+            },
            
         ]
     },

+ 0 - 12
src/router/ownShop.js

@@ -1,12 +0,0 @@
-// 自营店相关菜单的路由文件
-const ownShopRouter = [{
-    meta: {
-        action: "cateManage",
-        title: '分类对应管理',
-    },
-    path: 'cateManage',
-    name: 'cateManage',
-    component: () =>
-        import ('@views/ownShop/cateManage')
-}, ]
-export default ownShopRouter

+ 0 - 1
src/views/LeftLayout.vue

@@ -1,6 +1,5 @@
 <template>
   <div class="left-layout">
-    {{menu.length}}
     <div 
       class="left-menu"
       v-if="menu.length"

+ 1 - 1
src/views/login/index.vue

@@ -58,7 +58,7 @@
                 if(res.code==200){
                   document.setCookie("token",res.data.token,86400)
                   this.$message.success('登录成功')
-                   this.$router.push("/#/home")
+                   this.$router.push("/home")
                 }else{
                     this.$message.error("登录失败")
                 }

+ 50 - 7
src/views/menu/components/edit.vue

@@ -7,6 +7,21 @@
       >
         <el-input v-model.number="form.label"  placeholder="请输入菜单名称"></el-input>
       </el-form-item>
+      <el-form-item
+          label="父级菜单:"
+          prop="pid"
+      >
+      <el-cascader
+      v-model="form.pid"
+      :options="menulist"
+      :props="{
+                checkStrictly: true,
+                value:'id',
+                label:'label',
+                children:'children',
+              }" 
+      clearable></el-cascader>
+    </el-form-item>
       <el-form-item label="路由地址:" prop="url">
         <el-input v-model="form.url"  placeholder="输入路由地址" ></el-input>
       </el-form-item>
@@ -35,7 +50,7 @@
       <el-form-item>
         <div style="text-align: center">
           <el-button type="primary" @click="onSubmit" :disabled="Isdisabled" :loading="isloading">保存</el-button>
-          <el-button style="color: #5075FC " @click="coles">取消</el-button>
+          <el-button style="color: #5075FC " @click="closeDlg">取消</el-button>
         </div>
       </el-form-item>
     </el-form>
@@ -47,6 +62,13 @@ export default {
     menuDataForm: {
       type: Object,
       default: () => {}
+    },
+    isloading:{
+      type:Boolean,
+      default: true
+    },
+    closeDlg:{
+      type:Function
     }
   },
   data() {
@@ -58,9 +80,10 @@ export default {
         sort:"",
         is_links:"",
         hidden:"",
+        pid:[0]
       },
+      menulist: [],
       Isdisabled: false,
-      isloading: false,
       rules: {
         label: [
           { required: true, message: '菜单名称必填' },
@@ -78,10 +101,13 @@ export default {
     if(this.menuDataForm) {
       this.form = Object.assign({} , this.menuDataForm)
     }
+    this.getRecursionMenu()
   },
   methods: {
-    coles() {
-      this.$emit('colesClick')
+    closeDlg() {
+      // this.isloading = false
+      console.log("edit提交")
+      this.$emit('closeDlg',1)
     },
     onSubmit() {
       let that = this
@@ -90,10 +116,27 @@ export default {
           this.$emit('menuSubmitClick', this.form)
         }
       })
-    }
+    },
+    getRecursionMenu(){
+      let _t= this
+      let parames = {}
+      this.$api.pub.getMenuList(parames).then(res=>{
+                if(res.code==200){
+                  // id: 4, pid: 1, label: "权限设置"
+                  // res.data.concat({"id":1,"label":"一级目录","children":[]});
+                  // console.log(res.data)
+                  _t.menulist = res.data
+                }else{
+                    this.$message.error("查询失败")
+                }
+            })
+    },
+    
   }
 }
 </script>
-<style scoped>
-
+<style>
+.el-cascader-node>.el-radio{
+  margin-top:25px;
+}
 </style>

+ 57 - 10
src/views/menu/index.vue

@@ -5,7 +5,7 @@
         <!-- 查询表单 -->
         <el-form :inline="true" class="demo-form-inline">
           <el-form-item>
-            <el-button type="primary" size="small" @click="updateClick">添加菜单</el-button>
+            <el-button type="primary" size="small" @click="addClick">添加菜单</el-button>
           </el-form-item>
         
         </el-form>
@@ -16,12 +16,12 @@
           style="width: 100%;font-size: 15px;"
           :header-cell-style="{background:'#FAFAFA'}"
         >
-          <el-table-column label="编号" width="100" prop="id"></el-table-column>
-          <el-table-column label="菜单名称" prop="label" width="200"></el-table-column>
-          <el-table-column label="路由地址" prop="url" width="150"></el-table-column>
-          <el-table-column label="图标" prop="icon" width="150"></el-table-column>
-          <el-table-column label="排序" prop="sort" width="150"></el-table-column>
-          <el-table-column label="是否外链" width="150"  prop="is_links">
+          <el-table-column label="编号" width="150" prop="id"></el-table-column>
+          <el-table-column label="菜单名称" prop="label" width="250"></el-table-column>
+          <el-table-column label="路由地址" prop="url" width="200"></el-table-column>
+          <el-table-column label="图标" prop="icon" width="200"></el-table-column>
+          <el-table-column label="排序" prop="sort" width="200"></el-table-column>
+          <el-table-column label="是否外链" width="200"  prop="is_links">
             <template v-slot="{row}">
               <el-switch
                 v-model="row.is_links"
@@ -32,7 +32,7 @@
             </template>
           </el-table-column>
 
-          <el-table-column label="是否隐藏" width="150">
+          <el-table-column label="是否隐藏" width="200">
             <template v-slot="{row}">
               
               <el-switch
@@ -77,11 +77,15 @@
       @close="menuDialogShow = false"
       @DialogClose="menuDialogShow = false"
       :innerVisible="menuDialogShow"
+      @colesClick="menuDialogShow  = false"
   >
     <editFrom
         @colesClick="menuDialogShow = false"
         :menuDataForm="menuDataForm"
-        @menuSubmitClick="menuSubmitClick">
+         :isloading="isloading"
+        @menuSubmitClick="menuSubmitClick"
+        @closeDlg="closeDlg"
+        >
     </editFrom>
   </DialogSlot>
   </template>
@@ -119,6 +123,7 @@
         MenuRowIndex:'',
         menuDataForm: {},
         menuTableData: [],
+        isloading:false, //提交按钮状态
         menuDialogShow: false, // 控制保存弹窗
       }
     },
@@ -167,6 +172,10 @@
         _t.pageSize = 10
        this.getList()
       },
+      addClick(){
+        this.menuDataForm = {}
+        this.menuDialogShow = true
+      },
       //更新菜单
       updateClick(row,index){
         console.log(row)
@@ -174,9 +183,47 @@
         this.rowIndex = index
         this.menuDialogShow = true
       },
+      // menuDialogShow(){
+      //   this.isloading = false
+      // },
+      closeDlg(val){
+          console.log("aaaaaa",val)
+          this.menuDialogShow = false
+          this.isloading = false
+      },
       menuSubmitClick(data){
-        
+        let _t = this
         console.log("提交数据",data)
+        let parames = data
+        _t.isloading = true
+        //有id更新,没有新增
+        if(parames.id){
+          this.$api.authority.updateMenu(parames).then(res=>{
+                _t.loadingFlag = false;
+                if(res.code==200){
+                  _t.tableData[_t.rowIndex] = parames
+                     console.log("修改成功")
+                     location.reload();
+                }else{
+                    this.$message.error("修改失败")
+                }
+                this.menuDialogShow = false
+                this.isloading = false
+            })
+        }else{
+          this.$api.authority.addMenu(parames).then(res=>{
+                _t.loadingFlag = false;
+                if(res.code==200){
+                     console.log("创建成功")
+                     location.reload();
+                }else{
+                    this.$message.error(res.message)
+                }
+                this.menuDialogShow = false
+                this.isloading = false
+            })
+        }
+       
       },
       //删除菜单
       deleteAuthority(row, index) {

+ 142 - 0
src/views/role/components/edit.vue

@@ -0,0 +1,142 @@
+<template>
+  <div>
+    <el-form ref="form" :rules="rules"  :model="form" label-width="120px">
+      <el-form-item
+          label="菜单名称:"
+          prop="label"
+      >
+        <el-input v-model.number="form.label"  placeholder="请输入菜单名称"></el-input>
+      </el-form-item>
+      <el-form-item
+          label="父级菜单:"
+          prop="pid"
+      >
+      <el-cascader
+      v-model="form.pid"
+      :options="menulist"
+      :props="{
+                checkStrictly: true,
+                value:'id',
+                label:'label',
+                children:'children',
+              }" 
+      clearable></el-cascader>
+    </el-form-item>
+      <el-form-item label="路由地址:" prop="url">
+        <el-input v-model="form.url"  placeholder="输入路由地址" ></el-input>
+      </el-form-item>
+      <el-form-item label="图标:" prop="icon">
+        <el-input v-model="form.icon"  placeholder="输入图标地址" ></el-input>
+      </el-form-item>
+      <el-form-item label="排序:" prop="sort">
+        <el-input v-model="form.sort"  placeholder="输入排序" ></el-input>
+      </el-form-item>
+      <el-form-item label="是否外链:" prop="is_links">
+        <el-switch
+            v-model="form.is_links"
+            :active-value="1"
+            :inactive-value="0"
+        >
+        </el-switch>
+      </el-form-item>
+      <el-form-item label="是否隐藏:" prop="hidden">
+        <el-switch
+            v-model="form.hidden"
+            :active-value="1"
+            :inactive-value="0"
+        >
+        </el-switch>
+      </el-form-item>
+      <el-form-item>
+        <div style="text-align: center">
+          <el-button type="primary" @click="onSubmit" :disabled="Isdisabled" :loading="isloading">保存</el-button>
+          <el-button style="color: #5075FC " @click="closeDlg">取消</el-button>
+        </div>
+      </el-form-item>
+    </el-form>
+  </div>
+</template>
+<script>
+export default {
+  props: {
+    menuDataForm: {
+      type: Object,
+      default: () => {}
+    },
+    isloading:{
+      type:Boolean,
+      default: true
+    },
+    closeDlg:{
+      type:Function
+    }
+  },
+  data() {
+    return {
+      form: {
+        label: '',
+        url:"",
+        icon:"",
+        sort:"",
+        is_links:"",
+        hidden:"",
+        pid:[0]
+      },
+      menulist: [],
+      Isdisabled: false,
+      rules: {
+        label: [
+          { required: true, message: '菜单名称必填' },
+        ],
+        url: [
+          { required: true, message: '路由地址必填' }
+        ],
+        sort: [
+          { pattern: /^[1-9]\d*$/, message: '排序值格式错误' },
+        ]
+      }
+    }
+  },
+  mounted() {
+    if(this.menuDataForm) {
+      this.form = Object.assign({} , this.menuDataForm)
+    }
+    this.getRecursionMenu()
+  },
+  methods: {
+    closeDlg() {
+      // this.isloading = false
+      console.log("edit提交")
+      this.$emit('closeDlg',1)
+    },
+    onSubmit() {
+      let that = this
+      that.$refs['form'].validate((valid) => {
+        if (valid) {
+          this.$emit('menuSubmitClick', this.form)
+        }
+      })
+    },
+    getRecursionMenu(){
+      let _t= this
+      let parames = {}
+      this.$api.pub.getMenuList(parames).then(res=>{
+                if(res.code==200){
+                  // id: 4, pid: 1, label: "权限设置"
+                  // res.data.concat({"id":1,"label":"一级目录","children":[]});
+                  // console.log(res.data)
+                  _t.menulist = res.data
+                }else{
+                    this.$message.error("查询失败")
+                }
+            })
+    },
+    
+  }
+}
+</script>
+<style>
+.el-cascader-node>.el-radio{
+  margin-top:25px;
+}
+</style>

+ 255 - 0
src/views/role/index.vue

@@ -0,0 +1,255 @@
+<template>
+    <div class="main-content__div">
+      <!-- 列表 -->
+      <div class="table-box__div" v-cloak v-loading="loadingFlag">
+        <!-- 查询表单 -->
+        <el-form :inline="true" class="demo-form-inline">
+          <el-form-item>
+            <el-button type="primary" size="small" @click="addClick">添加角色</el-button>
+          </el-form-item>
+        
+        </el-form>
+        <el-table
+          size="mini"
+          :data="tableData"
+          :empty-text="tableDataLoadingText"
+          style="width: 100%;font-size: 15px;"
+          :header-cell-style="{background:'#FAFAFA'}"
+        >
+          <el-table-column label="编号" width="150" prop="id"></el-table-column>
+          <el-table-column label="菜单名称" prop="label" width="250"></el-table-column>
+          <el-table-column label="路由地址" prop="url" width="200"></el-table-column>
+          <el-table-column label="图标" prop="icon" width="200"></el-table-column>
+          <el-table-column label="排序" prop="sort" width="200"></el-table-column>
+          <el-table-column label="是否外链" width="200"  prop="is_links">
+            <template v-slot="{row}">
+              <el-switch
+                v-model="row.is_links"
+                :active-value="1"
+                :inactive-value="0"
+              disabled
+              ></el-switch>
+            </template>
+          </el-table-column>
+
+          <el-table-column label="是否隐藏" width="200">
+            <template v-slot="{row}">
+              
+              <el-switch
+                v-model="row.hidden"
+                :active-value="1"
+                :inactive-value="0"
+                disabled
+              ></el-switch>
+            </template>
+          </el-table-column>
+          <el-table-column   prop="" label="操作" align="center" >
+                  <template v-slot="scope">
+                    <div style="display: flex;flex-direction: column;justify-content: center;align-items: center;">
+                      <span class="btn "  @click="nextClick(scope.row.id)">查看下级</span>
+                      <span class="btn"  @click="updateClick(scope.row, scope.$index)">编辑</span>
+                      <span class="btn"  @click="deleteAuthority(scope.row,scope.$index)">删除</span>
+                    </div>
+                  </template>
+                </el-table-column>
+        </el-table>
+        <!-- 分页 -->
+        <div class="block" v-show="pagination" style="margin-top: 10px;float: right;">
+          <el-pagination
+            background
+            @current-change="handleCurrentChange"
+            :current-page="currentPage"
+            :page-size="pageSize"
+            layout="total, prev, pager, next, jumper"
+            :total="parseInt(tableCount)">
+          </el-pagination>
+        </div>
+      </div>
+    </div>
+  <Dialog title="温馨提示" content="您确认要删除该菜单吗?"
+          @close="DialogShow = false"
+          @submitSureClick="submitSureClickDel"
+          @DialogFalse="DialogShow = false"
+          :innerVisible="DialogShow">
+  </Dialog>
+  <DialogSlot
+      title="添加/编辑"
+      @close="menuDialogShow = false"
+      @DialogClose="menuDialogShow = false"
+      :innerVisible="menuDialogShow"
+      @colesClick="menuDialogShow  = false"
+  >
+    <editFrom
+        @colesClick="menuDialogShow = false"
+        :menuDataForm="menuDataForm"
+         :isloading="isloading"
+        @menuSubmitClick="menuSubmitClick"
+        @closeDlg="closeDlg"
+        >
+    </editFrom>
+  </DialogSlot>
+  </template>
+  <script>
+  import Dialog from "../../components/dialog";
+  import editFrom from "./components/edit";
+  import DialogSlot from "../../components/DialogSlot";
+  export default {
+    components: {
+      Dialog,
+      editFrom,
+      DialogSlot
+    },
+    data() {
+      return {
+        value:"1",
+        //  菜单列表数据
+        tableData: [],
+        //  加载中数据提示
+        tableDataLoadingText:"拼命加载中······",
+        //  是否显示分页
+        pagination:false,
+        //  每页显示的条数
+        pageSize:10,
+        //  当前页
+        currentPage:1,
+        //  菜单列表数据总条数
+        tableCount:0,
+  
+        loadingFlag: false,
+        isShowSource: false, // 是否显示来源列
+        id:0,
+        DialogShow: false, //控制删除弹窗
+        MenuId:'',
+        MenuRowIndex:'',
+        menuDataForm: {},
+        menuTableData: [],
+        isloading:false, //提交按钮状态
+        menuDialogShow: false, // 控制保存弹窗
+      }
+    },
+    mounted() {},
+    methods: {
+      // 获取菜单信息列表
+      getList:function(){
+        let _t = this;
+        _t.loadingFlag = true;
+        let parames = {
+            'page':this.currentPage,
+            'pageSize':this.pageSize,
+            'id':this.id
+        }
+        this.$api.authority.getMenuList(parames).then(res=>{
+                _t.loadingFlag = false;
+                if(res.code==200){
+                  if(res.data.rows.length==0){
+                    this.$message.error("没有下级了,休息一下吧!!!")
+                    return
+                  }
+                    _t.tableData = res.data.rows;
+                    _t.tableCount = res.data.count;
+                     //  总条数大于每页显示的条数时显示分页
+                    if( _t.tableCount > _t.pageSize ){
+                     _t.pagination = true;
+                    }
+                    if( _t.tableData.length==0 ){
+                     _t.tableDataLoadingText = "暂无数据";
+                    }
+                }else{
+                    this.$message.error("查询失败")
+                }
+            })
+      },
+      // 点击翻页
+      handleCurrentChange(val) {
+        this.currentPage = val;
+        this.getList();
+      },
+      // 查看下一级
+      nextClick( id ){
+        let _t = this;
+        _t.id = id
+        _t.currentPage = 1
+        _t.pageSize = 10
+       this.getList()
+      },
+      addClick(){
+        this.menuDataForm = {}
+        this.menuDialogShow = true
+      },
+      //更新菜单
+      updateClick(row,index){
+        console.log(row)
+        this.menuDataForm = row
+        this.rowIndex = index
+        this.menuDialogShow = true
+      },
+      // menuDialogShow(){
+      //   this.isloading = false
+      // },
+      closeDlg(val){
+          console.log("aaaaaa",val)
+          this.menuDialogShow = false
+          this.isloading = false
+      },
+      menuSubmitClick(data){
+        let _t = this
+        console.log("提交数据",data)
+        let parames = data
+        _t.isloading = true
+        //有id更新,没有新增
+        if(parames.id){
+          this.$api.authority.updateMenu(parames).then(res=>{
+                _t.loadingFlag = false;
+                if(res.code==200){
+                  _t.tableData[_t.rowIndex] = parames
+                     console.log("修改成功")
+                     location.reload();
+                }else{
+                    this.$message.error("修改失败")
+                }
+                this.menuDialogShow = false
+                this.isloading = false
+            })
+        }else{
+          this.$api.authority.addMenu(parames).then(res=>{
+                _t.loadingFlag = false;
+                if(res.code==200){
+                     console.log("创建成功")
+                     location.reload();
+                }else{
+                    this.$message.error(res.message)
+                }
+                this.menuDialogShow = false
+                this.isloading = false
+            })
+        }
+       
+      },
+      //删除菜单
+      deleteAuthority(row, index) {
+        this.MenuId = row.id
+        this.MenuRowIndex = index
+        this.DialogShow = true
+      },
+      submitSureClickDel(row,index){
+        let parames = {
+          'id':this.MenuId
+        }
+        this.$api.authority.delMenu(parames).then(res=>{
+          if(res.code==200){
+            this.DialogShow = false
+            this.getList()
+          }else{
+            this.$message.error("查询失败")
+          }
+        })
+      }
+
+    },
+    created() {
+        this.getList();
+    }
+  }
+  </script>
+  
+  

+ 142 - 0
src/views/website/components/edit.vue

@@ -0,0 +1,142 @@
+<template>
+  <div>
+    <el-form ref="form" :rules="rules"  :model="form" label-width="120px">
+      <el-form-item
+          label="菜单名称:"
+          prop="label"
+      >
+        <el-input v-model.number="form.label"  placeholder="请输入菜单名称"></el-input>
+      </el-form-item>
+      <el-form-item
+          label="父级菜单:"
+          prop="pid"
+      >
+      <el-cascader
+      v-model="form.pid"
+      :options="menulist"
+      :props="{
+                checkStrictly: true,
+                value:'id',
+                label:'label',
+                children:'children',
+              }" 
+      clearable></el-cascader>
+    </el-form-item>
+      <el-form-item label="路由地址:" prop="url">
+        <el-input v-model="form.url"  placeholder="输入路由地址" ></el-input>
+      </el-form-item>
+      <el-form-item label="图标:" prop="icon">
+        <el-input v-model="form.icon"  placeholder="输入图标地址" ></el-input>
+      </el-form-item>
+      <el-form-item label="排序:" prop="sort">
+        <el-input v-model="form.sort"  placeholder="输入排序" ></el-input>
+      </el-form-item>
+      <el-form-item label="是否外链:" prop="is_links">
+        <el-switch
+            v-model="form.is_links"
+            :active-value="1"
+            :inactive-value="0"
+        >
+        </el-switch>
+      </el-form-item>
+      <el-form-item label="是否隐藏:" prop="hidden">
+        <el-switch
+            v-model="form.hidden"
+            :active-value="1"
+            :inactive-value="0"
+        >
+        </el-switch>
+      </el-form-item>
+      <el-form-item>
+        <div style="text-align: center">
+          <el-button type="primary" @click="onSubmit" :disabled="Isdisabled" :loading="isloading">保存</el-button>
+          <el-button style="color: #5075FC " @click="closeDlg">取消</el-button>
+        </div>
+      </el-form-item>
+    </el-form>
+  </div>
+</template>
+<script>
+export default {
+  props: {
+    menuDataForm: {
+      type: Object,
+      default: () => {}
+    },
+    isloading:{
+      type:Boolean,
+      default: true
+    },
+    closeDlg:{
+      type:Function
+    }
+  },
+  data() {
+    return {
+      form: {
+        label: '',
+        url:"",
+        icon:"",
+        sort:"",
+        is_links:"",
+        hidden:"",
+        pid:[0]
+      },
+      menulist: [],
+      Isdisabled: false,
+      rules: {
+        label: [
+          { required: true, message: '菜单名称必填' },
+        ],
+        url: [
+          { required: true, message: '路由地址必填' }
+        ],
+        sort: [
+          { pattern: /^[1-9]\d*$/, message: '排序值格式错误' },
+        ]
+      }
+    }
+  },
+  mounted() {
+    if(this.menuDataForm) {
+      this.form = Object.assign({} , this.menuDataForm)
+    }
+    this.getRecursionMenu()
+  },
+  methods: {
+    closeDlg() {
+      // this.isloading = false
+      console.log("edit提交")
+      this.$emit('closeDlg',1)
+    },
+    onSubmit() {
+      let that = this
+      that.$refs['form'].validate((valid) => {
+        if (valid) {
+          this.$emit('menuSubmitClick', this.form)
+        }
+      })
+    },
+    getRecursionMenu(){
+      let _t= this
+      let parames = {}
+      this.$api.pub.getMenuList(parames).then(res=>{
+                if(res.code==200){
+                  // id: 4, pid: 1, label: "权限设置"
+                  // res.data.concat({"id":1,"label":"一级目录","children":[]});
+                  // console.log(res.data)
+                  _t.menulist = res.data
+                }else{
+                    this.$message.error("查询失败")
+                }
+            })
+    },
+    
+  }
+}
+</script>
+<style>
+.el-cascader-node>.el-radio{
+  margin-top:25px;
+}
+</style>

+ 268 - 0
src/views/website/index.vue

@@ -0,0 +1,268 @@
+<template>
+    <div class="main-content__div">
+      <div class="table-box__div" v-cloak v-loading="loadingFlag">
+      <el-form  class="demo-form-inline">
+        <el-form-item label="站点名称">
+          <el-input
+            placeholder="站点名称"
+            v-model="searchFrom.website_name"
+            style="width:150px;"
+            size="small"
+            clearable>
+          </el-input>
+        </el-form-item>
+        
+        <!-- 搜索按钮 -->
+        <el-form-item>
+          <el-button type="primary" size="small" >搜索</el-button>
+        </el-form-item>
+       
+      </el-form>
+      </div>
+      <!-- 列表 -->
+      <div class="table-box__div" v-cloak v-loading="loadingFlag">
+        <!-- 查询表单 -->
+        <el-form :inline="true" class="demo-form-inline">
+          <el-form-item>
+            <el-button type="primary" size="small" @click="addClick">添加站点</el-button>
+          </el-form-item>
+        
+        </el-form>
+        <el-table
+          size="mini"
+          :data="tableData"
+          :empty-text="tableDataLoadingText"
+          style="width: 100%;font-size: 15px;"
+          :header-cell-style="{background:'#FAFAFA'}"
+        >
+          <el-table-column label="编号" width="150" prop="id"></el-table-column>
+          <el-table-column label="站点名称" prop="website_name" width="250"></el-table-column>
+          <el-table-column label="站点栏目" prop="column_name" width="200"></el-table-column>
+          <el-table-column label="站点logo" prop="logo" width="200"></el-table-column>
+          <el-table-column label="站点地址" prop="website_url" width="200"></el-table-column>
+          <el-table-column label="站点城市" prop="city_name" width="200"></el-table-column>
+          <el-table-column label="站点状态" width="200"  prop="is_links">
+            <template v-slot="{row}">
+              <el-switch
+                v-model="row.status"
+                :active-value="1"
+                :inactive-value="0"
+              disabled
+              ></el-switch>
+            </template>
+          </el-table-column>
+          <el-table-column label="创建时间" prop="created_at" width="200"></el-table-column>
+          <el-table-column   prop="" label="操作" align="center" >
+                  <template v-slot="scope">
+                    <div style="display: flex;flex-direction: column;justify-content: center;align-items: center;">
+                      <span class="btn"  @click="updateClick(scope.row, scope.$index)">编辑</span>
+                      <span class="btn"  @click="deleteAuthority(scope.row,scope.$index)">删除</span>
+                    </div>
+                  </template>
+                </el-table-column>
+        </el-table>
+        <!-- 分页 -->
+        <div class="block" v-show="pagination" style="margin-top: 10px;float: right;">
+          <el-pagination
+            background
+            @current-change="handleCurrentChange"
+            :current-page="currentPage"
+            :page-size="pageSize"
+            layout="total, prev, pager, next, jumper"
+            :total="parseInt(tableCount)">
+          </el-pagination>
+        </div>
+      </div>
+    </div>
+  <Dialog title="温馨提示" content="您确认要删除该菜单吗?"
+          @close="DialogShow = false"
+          @submitSureClick="submitSureClickDel"
+          @DialogFalse="DialogShow = false"
+          :innerVisible="DialogShow">
+  </Dialog>
+  <DialogSlot
+      title="添加/编辑"
+      @close="menuDialogShow = false"
+      @DialogClose="menuDialogShow = false"
+      :innerVisible="menuDialogShow"
+      @colesClick="menuDialogShow  = false"
+  >
+    <editFrom
+        @colesClick="menuDialogShow = false"
+        :menuDataForm="menuDataForm"
+         :isloading="isloading"
+        @menuSubmitClick="menuSubmitClick"
+        @closeDlg="closeDlg"
+        >
+    </editFrom>
+  </DialogSlot>
+  </template>
+  <script>
+  import Dialog from "../../components/dialog";
+  import editFrom from "./components/edit";
+  import DialogSlot from "../../components/DialogSlot";
+  export default {
+    components: {
+      Dialog,
+      editFrom,
+      DialogSlot
+    },
+    data() {
+      return {
+        value:"1",
+        //  菜站点数据
+        tableData: [],
+        //  加载中数据提示
+        tableDataLoadingText:"拼命加载中······",
+        //  是否显示分页
+        pagination:false,
+        //  每页显示的条数
+        pageSize:10,
+        //  当前页
+        currentPage:1,
+        //  菜单列表数据总条数
+        tableCount:0,
+        keyWord:'',
+        loadingFlag: false,
+        isShowSource: false, // 是否显示来源列
+        id:0,
+        DialogShow: false, //控制删除弹窗
+        MenuId:'',
+        MenuRowIndex:'',
+        menuDataForm: {},
+        menuTableData: [],
+        isloading:false, //提交按钮状态
+        menuDialogShow: false, // 控制保存弹窗
+        searchFrom:{
+          "website_name":''
+        }
+      }
+    },
+    mounted() {},
+    methods: {
+      // 获取菜单信息列表
+      getList:function(){
+        console.log("#######################@@@")
+        let _t = this;
+        _t.loadingFlag = true;
+        let parames = {
+            'page':this.currentPage,
+            'pageSize':this.pageSize,
+            'keyWord':this.keyWord
+        }
+        this.$api.website.getWebsiteList(parames).then(res=>{
+                _t.loadingFlag = false;
+                if(res.code==200){
+                  if(res.data.rows.length==0){
+                    this.$message.error("没有数据了")
+                    return
+                  }
+                    _t.tableData = res.data.rows;
+                    _t.tableCount = res.data.count;
+                     //  总条数大于每页显示的条数时显示分页
+                    if( _t.tableCount > _t.pageSize ){
+                     _t.pagination = true;
+                    }
+                    if( _t.tableData.length==0 ){
+                     _t.tableDataLoadingText = "暂无数据";
+                    }
+                }else{
+                    this.$message.error("查询失败")
+                }
+            })
+      },
+      // 点击翻页
+      handleCurrentChange(val) {
+        this.currentPage = val;
+        this.getList();
+      },
+
+      addClick(){
+        this.menuDataForm = {}
+        this.menuDialogShow = true
+      },
+      //更新菜单
+      updateClick(row,index){
+        console.log(row)
+        this.menuDataForm = row
+        this.rowIndex = index
+        this.menuDialogShow = true
+      },
+      // menuDialogShow(){
+      //   this.isloading = false
+      // },
+      closeDlg(val){
+          console.log("aaaaaa",val)
+          this.menuDialogShow = false
+          this.isloading = false
+      },
+      menuSubmitClick(data){
+        let _t = this
+        console.log("提交数据",data)
+        let parames = data
+        _t.isloading = true
+        //有id更新,没有新增
+        if(parames.id){
+          this.$api.authority.updateMenu(parames).then(res=>{
+                _t.loadingFlag = false;
+                if(res.code==200){
+                  _t.tableData[_t.rowIndex] = parames
+                     console.log("修改成功")
+                     location.reload();
+                }else{
+                    this.$message.error("修改失败")
+                }
+                this.menuDialogShow = false
+                this.isloading = false
+            })
+        }else{
+          this.$api.authority.addMenu(parames).then(res=>{
+                _t.loadingFlag = false;
+                if(res.code==200){
+                     console.log("创建成功")
+                     location.reload();
+                }else{
+                    this.$message.error(res.message)
+                }
+                this.menuDialogShow = false
+                this.isloading = false
+            })
+        }
+       
+      },
+      //删除菜单
+      deleteAuthority(row, index) {
+        this.MenuId = row.id
+        this.MenuRowIndex = index
+        this.DialogShow = true
+      },
+      submitSureClickDel(row,index){
+        let parames = {
+          'id':this.MenuId
+        }
+        this.$api.authority.delMenu(parames).then(res=>{
+          if(res.code==200){
+            this.DialogShow = false
+            this.getList()
+          }else{
+            this.$message.error("查询失败")
+          }
+        })
+      }
+
+    },
+    created() {
+        this.getList();
+    }
+  }
+  </script>
+  <style >
+   .demo-form-inline{
+      display: flex;
+   }
+   .demo-form-inline .el-form-item{
+    margin: 0 20px;
+   }
+  </style>
+  
+