From 04102f7237efefa744090ed7c25f7b5d0807b679 Mon Sep 17 00:00:00 2001
From: quanwei <419654421@qq.com>
Date: Thu, 05 Feb 2026 18:11:57 +0800
Subject: [PATCH] 完成运营中心提现和运营中心权限管理

---
 saas_vue/src/views/agentaccess/Index.vue |  288 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 288 insertions(+), 0 deletions(-)

diff --git a/saas_vue/src/views/agentaccess/Index.vue b/saas_vue/src/views/agentaccess/Index.vue
new file mode 100644
index 0000000..3c3bd86
--- /dev/null
+++ b/saas_vue/src/views/agentaccess/Index.vue
@@ -0,0 +1,288 @@
+<template>
+  <!--
+    	作者:系统
+    	时间:2026-01-23
+    	描述:权限管理-菜单&权限
+    -->
+  <div class="product">
+    <!--添加菜单&权限-->
+    <div class="common-level-rail d-b-c">
+      <el-button size="small" type="primary" @click="addClick" icon="el-icon-plus">添加菜单&权限</el-button>
+      <el-form :inline="true" :model="formSearch" size="small">
+        <el-form-item>
+          <el-checkbox v-model="formSearch.is_menu" @change="changeIsMenuFunc">只显示菜单</el-checkbox>
+          <el-checkbox v-model="formSearch.pack_up" @change="changePackUpFunc">收起</el-checkbox>
+        </el-form-item>
+      </el-form>
+    </div>
+    <!--内容-->
+    <div class="product-content">
+      <div class="table-wrap">
+        <div>
+          <el-table
+            size="small"
+            :data="tableData"
+            style="width: 100%;margin-bottom: 20px;"
+            row-key="access_id"
+            border
+            default-expand-all
+            ref="theTable"
+            :tree-props="{ children: 'children' }"
+            v-loading="loading"
+          >
+            <el-table-column prop="name" label="菜单名称">
+              <template slot-scope="scope">
+                <span v-if="scope.row.path=='/plus'" class="fb red f18">
+                  {{scope.row.name}}
+                </span>
+                <span v-else>
+                  {{scope.row.name}}
+                </span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="path" label="路径"></el-table-column>
+            <el-table-column prop="is_route" label="类别" width="90">
+              <template slot-scope="scope">
+                <span v-if="scope.row.is_route==1">页面</span>
+                <span v-if="scope.row.is_route==0">按钮</span>
+                <span v-if="scope.row.is_route==2">独立单页面</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="is_show" label="是否显示" width="80">
+              <template slot-scope="scope">
+                <el-switch
+                  v-model="scope.row.is_show"
+                  :active-value="1"
+                  :inactive-value="0"
+                  @change="isShowFunc(scope.row)"
+                  active-color="#13ce66"
+                  inactive-color="#cccccc"
+                ></el-switch>
+              </template>
+            </el-table-column>
+            <el-table-column prop="sort" label="排序" width="60"></el-table-column>
+            <el-table-column prop="create_time" label="添加时间" width="140"></el-table-column>
+            <el-table-column prop="name" label="操作" width="230">
+              <template slot-scope="scope">
+                <el-button @click="addClick(scope.row,'copy')" type="text" size="small" v-if="scope.row.path!='/plus'">一键复制</el-button>
+                <el-button @click="addClick(scope.row,'child')" type="text" size="small">添加子菜单</el-button>
+                <el-button @click="editClick(scope.row)" type="text" size="small">编辑</el-button>
+                <el-button @click="deleteClick(scope.row)" type="text" size="small" v-if="scope.row.path!='/plus'">删除</el-button>
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+      </div>
+    </div>
+
+    <!--添加-->
+    <Add v-if="open_add" :open_add="open_add" :add_type="add_type" :rawData="rawData" :selectModel="selectModel" @closeDialog="closeDialogFunc($event, 'add')"></Add>
+
+    <!--编辑-->
+    <Edit v-if="open_edit" :open_edit="open_edit" :rawData="rawData" :selectModel="selectModel" @closeDialog="closeDialogFunc($event, 'edit')"></Edit>
+
+  </div>
+</template>
+<script>
+import AccessApi from '@/api/access.js';
+import Edit from './part/Edit.vue';
+import Add from './part/Add';
+import { deepClone } from '@/utils/base.js';
+export default {
+  components: {
+    /*编辑组件*/
+    Edit: Edit,
+    Add: Add
+  },
+  data() {
+    return {
+      /*是否正在加载*/
+      loading: true,
+      /*筛选搜索*/
+      formSearch: {
+        /*是否只显示菜单*/
+        is_menu: false,
+        /*是否收起*/
+        pack_up: false
+      },
+      /*原始数据*/
+      rawData: [],
+      /*表格数据*/
+      tableData: [],
+      /*是否打开添加弹窗*/
+      open_add: false,
+      /*添加类型*/
+      add_type:'',
+      /*选中的对象*/
+      selectModel:{},
+      /*是否打开编辑弹窗*/
+      open_edit: false,
+      /*当前编辑的对象*/
+      userModel: {},
+    };
+  },
+  created() {
+    /*获取列表*/
+    this.getTableList();
+  },
+  methods: {
+    /*列表是否只显示菜单*/
+    changeIsMenuFunc(e) {
+      let list = deepClone(this.rawData);
+      if (e) {
+        this.showScreen(list, 1);
+        this.tableData = list;
+      } else {
+        this.tableData = list;
+      }
+    },
+
+    /*是否显示开关*/
+    isShowFunc(e) {
+      let self = this;
+      AccessApi.agentstatus({ access_id: e.access_id, status: e.is_show }, true)
+        .then(data => {
+          if (data.code == 1) {
+            self.$message({
+              message: data.msg,
+              type: 'success'
+            });
+            self.getTableList();
+          }
+        })
+        .catch(error => {
+          self.loading = false;
+        });
+    },
+
+    /*是否收起*/
+    changePackUpFunc(e) {
+      this.forArr(this.tableData, !e);
+    },
+
+    /*列表收起*/
+    forArr(arr, isExpand) {
+      arr.forEach(i => {
+        this.$refs.theTable.toggleRowExpansion(i, isExpand);
+        if (i.children) {
+          this.forArr(i.children, isExpand);
+        }
+      });
+    },
+
+    /*切换显示类别*/
+    changeShowFunc(e) {
+      let list = deepClone(this.rawData);
+      if (e == 'all') {
+        this.tableData = list;
+      } else {
+        let type;
+        if (e == 'show') {
+          type = 1;
+        }
+        if (e == 'hide') {
+          type = 0;
+        }
+        this.showScreen(list, type);
+        this.tableData = list;
+      }
+    },
+
+    /*显示筛选*/
+    showScreen(list, type) {
+      for (let i = 0; i < list.length; i++) {
+        let item = list[i];
+        if (typeof item.is_menu != 'undefined' && item.is_menu != type) {
+          list.splice(i, 1);
+          i--;
+        } else {
+          if (item.children.length > 0) {
+            this.showScreen(item.children, type);
+          }
+        }
+      }
+    },
+
+    /*获取列表*/
+    getTableList() {
+      let self = this;
+      let Params = {};
+      AccessApi.agentaccessList(Params, true)
+        .then(res => {
+          self.loading = false;
+          self.rawData = res.data;
+          self.tableData = res.data;
+        })
+        .catch(error => {
+          self.loading = false;
+        });
+    },
+
+    /*打开添加*/
+    addClick(e,type) {
+      if(e&&typeof(e)!='undefined'){
+        this.add_type=type;
+        this.selectModel=deepClone(e);
+      }else{
+        this.parents_id=0;
+      }
+      this.open_add = true;
+    },
+
+    /*打开编辑*/
+    editClick(item) {
+      this.selectModel = item;
+      this.open_edit = true;
+    },
+
+    closeDialogFunc(e, f) {
+      if (f == 'add') {
+        this.open_add = e.openDialog;
+        if (e.type == 'success') {
+          this.getTableList();
+        }
+      }
+      if (f == 'edit') {
+        this.open_edit = e.openDialog;
+        if (e.type == 'success') {
+          this.getTableList();
+        }
+      }
+    },
+
+    /*删除用户*/
+    deleteClick(row) {
+      let self = this;
+      self
+        .$confirm('删除后不可恢复,确认删除该记录吗?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        })
+        .then(() => {
+          self.loading = true;
+          AccessApi.agentdelAccess(
+            {
+              access_id: row.access_id
+            },
+            true
+          )
+            .then(data => {
+              if (data.code == 1) {
+                self.loading = false;
+                self.$message({
+                  message: data.msg,
+                  type: 'success'
+                });
+                self.getTableList();
+              }
+            })
+            .catch(error => {
+              self.loading = false;
+            });
+        })
+        .catch(() => {});
+    }
+  }
+};
+</script>

--
Gitblit v1.9.2