wuhongyuq 5 年之前
父節點
當前提交
2354a18622

+ 1 - 3
src/layout/enterprise/transaction.vue

@@ -125,6 +125,4 @@ export default {
   text-align: center;
 }
 </style>
-transaction_id: { type: String, required: true, maxLength: 500 }, // 交易主表ID product_id: { type: String, required: true, maxLength: 500 }, // 产品ID userid:
-{ type: String, required: true, maxLength: 500 }, // 审核人ID result: { type: String, required: true, maxLength: 200 }, // 结果,1:通过审核 2:审核拒绝
-description: { type: String, required: false }, // 审核说明
+

+ 12 - 4
src/layout/layout-part/menus.vue

@@ -1,13 +1,17 @@
 <template>
   <div id="menus">
     <el-menu :default-active="thisRouter()" class="el-menu-vertical-demo" :router="false" :default-openeds="defalutMenu" @select="to">
-      <el-menu-item index="/"> <i class="el-icon-s-grid"></i>首页 </el-menu-item>
+      <!-- <el-col >  -->
+
+      <!-- <el-menu-item index="/"> <i class="el-icon-s-grid"></i>首页 </el-menu-item>
       <el-menu-item index="/government/index"> <i class="el-icon-s-grid"></i>科技政务</el-menu-item>
       <el-menu-item index="/policy/index"> <i class="el-icon-s-grid"></i>科技政策</el-menu-item>
       <el-menu-item index="/record/index"> <i class="el-icon-s-grid"></i>科技数据</el-menu-item>
-      <el-menu-item index="/serve/index"> <i class="el-icon-s-grid"></i>科技服务</el-menu-item>
+      <el-menu-item index="/serve/index"> <i class="el-icon-s-grid"></i>科技服务</el-menu-item> -->
+
       <!-- <el-menu-item index="/resource/index"> <i class="el-icon-s-grid"></i>科技资源</el-menu-item> -->
-      <el-submenu index="1">
+
+      <!-- <el-submenu index="1">
         <template v-slot:title>
           <i class="el-icon-s-grid"></i>
           <span>科技人才</span>
@@ -34,8 +38,12 @@
       <el-menu-item index="/site/index"> <i class="el-icon-s-grid"></i>站点信息管理</el-menu-item>
       <el-menu-item index="/user/index"> <i class="el-icon-s-grid"></i>用户管理</el-menu-item>
       <el-menu-item index="/links/index"> <i class="el-icon-attract"></i>友情链接管理</el-menu-item>
+      <el-menu-item index="/permission/index"> <i class="el-icon-attract"></i>权限管理</el-menu-item>
+      -->
       <!-- <el-menu-item index="/supermaket/chanpinType"> <i class="el-icon-s-grid"></i>产品类型字典表</el-menu-item> -->
-      <el-menu-item index="/dictionary"> <i class="el-icon-attract"></i>平台字典管理</el-menu-item>
+
+      <!-- <el-menu-item index="/dictionary"> <i class="el-icon-attract"></i>平台字典管理</el-menu-item>
+        </el-col> -->
     </el-menu>
   </div>
 </template>

+ 85 - 0
src/layout/layout-part/newmenu.vue

@@ -0,0 +1,85 @@
+<template lang="html">
+  <div id="sideMenu">
+    <div id="menuBox">
+      <el-col :span="24">
+        <el-menu :unique-opened="true">
+          <el-submenu v-for="(item, index) in menu" :key="index" :index="`${index}`">
+            <template slot="title">
+              <i class="el-icon-s-grid"></i>
+              <span>{{ item.name }}</span>
+            </template>
+            <a v-for="(menu_item, menu_index) in item.menu" :key="menu_index" @click="turnTo(menu_item.uri)">
+              <el-menu-item :index="`${index}-${menu_index}`"
+                >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <i class="el-icon-s-grid"></i>{{ menu_item.name }}</el-menu-item
+              >
+            </a>
+          </el-submenu>
+        </el-menu>
+      </el-col>
+    </div>
+  </div>
+</template>
+
+<script>
+import { system, personnel, government, record, serve, enterprise, duijiehui, site, user, links, permission, dictionary } from '@/util/role_menu.js';
+import * as menus from '@/util/role_menu.js';
+import { mapState } from 'vuex';
+import _ from 'lodash';
+export default {
+  name: 'sideMenu',
+  components: {},
+  data() {
+    return {
+      menu: [],
+    };
+  },
+  computed: {
+    ...mapState({
+      menuList: state => state.publics.menuList,
+    }),
+  },
+  created() {
+    this.serrch();
+    if (this.menu.length === 0) this.getMenuList();
+  },
+  methods: {
+    turnTo(uri) {
+      this.$router.push({ path: uri });
+    },
+    async serrch() {
+      this.menu.push(system);
+      this.menu.push(personnel);
+      this.menu.push(government);
+      this.menu.push(record);
+      this.menu.push(serve);
+      this.menu.push(enterprise);
+      this.menu.push(duijiehui);
+      this.menu.push(site);
+      this.menu.push(user);
+      this.menu.push(links);
+      this.menu.push(permission);
+      this.menu.push(dictionary);
+
+      this.$set(this, `menu`, this.menu);
+    },
+    getMenuList() {
+      let res = _.uniqBy(this.menuList, 'menu_id');
+      for (const item of res) {
+        this.menu.push(_.get(menus, item.code));
+      }
+    },
+    openMenuList(index) {
+      if (!this.$refs.collapse[index].show) {
+        this.$refs.collapse.forEach(item => {
+          item.show = false;
+        });
+        this.$refs.collapse[index].show = true;
+      } else {
+        this.$refs.collapse[index].show = false;
+      }
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 3 - 3
src/layout/main-layout.vue

@@ -6,7 +6,7 @@
       </el-header>
       <el-container class="contain">
         <el-aside width="13rem" class="side">
-          <menus></menus>
+          <newmenu></newmenu>
         </el-aside>
         <el-main class="main">
           <router-view />
@@ -18,13 +18,13 @@
 
 <script>
 import heads from '@/layout/layout-part/heads.vue';
-import menus from '@/layout/layout-part/menus.vue';
+import newmenu from '@/layout/layout-part/newmenu.vue';
 import { mapActions, mapState } from 'vuex';
 export default {
   name: 'main-layout',
   props: {},
   components: {
-    menus,
+    newmenu,
     heads,
   },
   data: () => ({}),

+ 73 - 0
src/layout/pesmisson/pesmissondetail.vue

@@ -0,0 +1,73 @@
+<template>
+  <div id="mainForm">
+    <el-row>
+      <el-col :span="24" class="linksForm">
+        <el-form ref="form" :model="form" label-width="100px">
+          <el-form-item label="分配权限">
+            <el-select v-model="form.value2" multiple collapse-tags style="margin-left: 20px;" placeholder="请选择">
+              <el-option v-for="item in option" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select
+            >
+          </el-form-item>
+          <el-form-item>
+            <el-button @click="handleCancel">返回</el-button>
+            <el-button type="primary" @click="handleSave()">提交</el-button>
+          </el-form-item>
+        </el-form>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import upload from '@/components/upload.vue';
+import { mapActions, mapState, createNamespacedHelpers } from 'vuex';
+
+export default {
+  name: 'mainForm',
+  props: {
+    dataList: null,
+    option: null,
+  },
+  components: {},
+  data: () => ({
+    form: {},
+  }),
+  created() {},
+  methods: {
+    async handleSave() {
+      this.$emit('handleSave', { data: this.form, id: this.form.id });
+    },
+    handleCancel() {
+      this.$router.push({ path: '/pesmisson/index' });
+    },
+  },
+  computed: {
+    id() {
+      return this.$route.query.id;
+    },
+    isNew() {
+      return this.$route.query.id ? false : true;
+    },
+  },
+  watch: {
+    isNew: {
+      handler(val) {
+        if (!val) {
+          console.log('in function:');
+          this.search();
+        }
+      },
+      immediate: true,
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.linksForm {
+  margin: 20px 0 0 0;
+}
+.el-form {
+  padding: 0 200px;
+}
+</style>

+ 12 - 0
src/router/index.js

@@ -212,6 +212,18 @@ const routes = [
     path: '/duijiehui/duijiedetail',
     component: () => import('../views/duijiehui/duijiedetail.vue'),
   },
+
+  //权限管理
+  //权限管理-权限列表
+  {
+    path: '/permission/index',
+    component: () => import('../views/permission/index.vue'),
+  },
+  //权限管理-分配权限
+  {
+    path: '/permission/detail',
+    component: () => import('../views/permission/detail.vue'),
+  },
 ];
 
 const router = new VueRouter({

+ 145 - 0
src/util/role_menu.js

@@ -0,0 +1,145 @@
+const api = process.env.NODE_ENV === 'production' ? '' : '';
+export const system = {
+  name: '首页',
+  menu: [
+    {
+      name: '首页',
+      uri: api + '/',
+    },
+  ],
+};
+export const government = {
+  name: '科技政务',
+  menu: [
+    {
+      name: '科技政务',
+      uri: api + '/government/index',
+    },
+  ],
+};
+
+export const policy = {
+  name: '科技政策',
+  menu: [
+    {
+      name: '科技政策',
+      uri: api + '/policy/index',
+    },
+  ],
+};
+
+export const record = {
+  name: '科技数据',
+  menu: [
+    {
+      name: '科技数据',
+      uri: api + '/record/index',
+    },
+  ],
+};
+
+export const serve = {
+  name: '科技服务',
+  menu: [
+    {
+      name: '科技服务',
+      uri: api + '/serve/index',
+    },
+  ],
+};
+
+export const personnel = {
+  name: '科技人才',
+  menu: [
+    {
+      name: '栏目管理',
+      uri: '/personnel/column',
+    },
+    {
+      name: '招聘信息管理',
+      uri: api + '/personnel/recruit',
+    },
+    {
+      name: '人才信息管理',
+      uri: api + '/personnel/resume',
+    },
+    {
+      name: '专家信息管理',
+      uri: api + '/personnel/experts',
+    },
+    {
+      name: '基本信息管理',
+      uri: api + '/personnel/informate',
+    },
+  ],
+};
+export const enterprise = {
+  name: '科技超市管理',
+  menu: [
+    {
+      name: '科技超市商品审核管理',
+      uri: api + '/enterprise/index',
+    },
+    {
+      name: '科技超市交易状态审核管理',
+      uri: api + '/enterprise/transaction',
+    },
+  ],
+};
+
+export const duijiehui = {
+  name: '对接会',
+  menu: [
+    {
+      name: '对接会',
+      uri: api + '/duijiehui/index',
+    },
+  ],
+};
+
+export const site = {
+  name: '站点信息管理',
+  menu: [
+    {
+      name: '站点信息管理',
+      uri: api + '/site/index',
+    },
+  ],
+};
+
+export const user = {
+  name: '用户管理',
+  menu: [
+    {
+      name: '用户管理',
+      uri: api + '/user/index',
+    },
+  ],
+};
+export const links = {
+  name: '友情链接管理',
+  menu: [
+    {
+      name: '友情链接管理',
+      uri: api + '/links/index',
+    },
+  ],
+};
+export const permission = {
+  name: '权限管理',
+  menu: [
+    {
+      name: '权限管理',
+      uri: api + '/permission/index',
+    },
+  ],
+};
+export const dictionary = {
+  name: '平台字典管理',
+  menu: [
+    {
+      name: '平台字典管理',
+      uri: api + '/dictionary',
+    },
+  ],
+};

+ 68 - 0
src/views/permission/detail.vue

@@ -0,0 +1,68 @@
+<template>
+  <div id="detail">
+    <el-row>
+      <el-col :span="24" class="info">
+        <el-col :span="24" class="top">
+          <topInfo :topTitle="topTitle"></topInfo>
+        </el-col>
+        <el-col :span="24" class="main">
+          <pesmissondetail :option="option" :form="form" @handleSave="handleSave"></pesmissondetail>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import topInfo from '@/layout/public/top.vue';
+import pesmissondetail from '@/layout/pesmisson/pesmissondetail.vue';
+export default {
+  name: 'detail',
+  props: {},
+  components: {
+    topInfo, //头部标题
+    pesmissondetail, //用户添加管理
+  },
+  data: () => ({
+    topTitle: '权限角色添加',
+    form: {},
+    option: [
+      { value: '1', label: '首页' },
+      {
+        value: '2',
+        label: '科技人才',
+      },
+      {
+        value: '3',
+        label: '科技政务',
+      },
+      {
+        value: '4',
+        label: '科技数据',
+      },
+      {
+        value: '5',
+        label: '北京烤鸭',
+      },
+    ],
+  }),
+  created() {},
+  computed: {},
+  methods: {
+    handleSave({ data }) {
+      console.log(data);
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.top {
+  height: 40px;
+  background-color: #f5f5f5;
+}
+.main {
+  width: 97%;
+  margin: 0 15px;
+}
+</style>

+ 89 - 0
src/views/permission/index.vue

@@ -0,0 +1,89 @@
+<template>
+  <div id="index">
+    <el-row>
+      <el-col :span="24" class="info">
+        <el-col :span="24" class="top">
+          <topInfo :topTitle="topTitle"></topInfo>
+        </el-col>
+        <el-col :span="24" class="search" style="text-align:right">
+          <el-button size="mini" type="primary" @click="$router.push({ path: './detail' })" icon="el-icon-plus">分配权限</el-button>
+        </el-col>
+        <el-col :span="24" class="main">
+          <!-- <mainData :tableData="tableData" :total="total" @delete="deleteData"></mainData> -->
+          <data-table :fields="fields" @delete="toDelete" :data="list" :opera="opera" @edit="toEdit" :total="total" @query="search"></data-table>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+import topInfo from '@/layout/public/top.vue';
+import dataTable from '@/components/data-table.vue';
+import { mapActions, mapState, createNamespacedHelpers } from 'vuex';
+// const { mapActions: users } = createNamespacedHelpers('users');
+export default {
+  name: 'index',
+  props: {},
+  components: {
+    topInfo, //头部标题
+    dataTable,
+  },
+  data: () => ({
+    topTitle: '权限管理',
+    opera: [
+      {
+        label: '编辑',
+        icon: 'el-icon-edit',
+        method: 'edit',
+      },
+      {
+        label: '删除',
+        icon: 'el-icon-delete',
+        method: 'delete',
+        confirm: true,
+      },
+    ],
+    fields: [{ label: '用户名', prop: 'name' }],
+    list: [],
+    total: 0,
+  }),
+  created() {
+    this.search();
+  },
+  computed: {},
+  methods: {
+    // ...users(['query', 'delete', 'update']),
+    async search({ skip = 0, limit = 10, ...info } = {}) {
+      // const res = await this.query({ skip, limit, ...info });
+      // if (this.$checkRes(res)) {
+      //   this.$set(this, `list`, res.data);
+      //   this.$set(this, `total`, res.total);
+      // }
+    },
+    toEdit({ data }) {
+      this.$router.push({ path: './detail', query: { id: data.id } });
+    },
+    async toDelete({ data }) {
+      const res = await this.delete(data.id);
+      if (this.$checkRes(res, '删除成功', res.errmsg || '删除失败')) this.search();
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.top {
+  height: 40px;
+  background-color: #f5f5f5;
+}
+.search {
+  height: 40px;
+  line-height: 40px;
+  padding: 0 15px;
+}
+.main {
+  width: 97%;
+  margin: 0 15px;
+}
+</style>