2 Commits 6779753b49 ... f325c6d8e0

Author SHA1 Message Date
  chenjiaxin f325c6d8e0 fix:合并带阿米 2 weeks ago
  chenjiaxin 678b7c6a09 feat:权限控制列表 2 weeks ago

+ 2 - 0
.env.development

@@ -4,8 +4,10 @@ ENV = 'development'
 # base api
 # base api
 
 
 VUE_APP_OAUTH_API = '/app/backstage/auth/'
 VUE_APP_OAUTH_API = '/app/backstage/auth/'
+VUE_APP_SYSTEM_API = '/app/sys/'
 VUE_APP_AI_API = '/app/ai/'
 VUE_APP_AI_API = '/app/ai/'
 
 
+
 # 静态资源
 # 静态资源
 VUE_APP_RESOURCE_URL='/pim'
 VUE_APP_RESOURCE_URL='/pim'
 VUE_APP_IMS_API='/ims/'
 VUE_APP_IMS_API='/ims/'

+ 2 - 0
.env.production

@@ -3,7 +3,9 @@ ENV = 'production'
 
 
 # base api
 # base api
 VUE_APP_OAUTH_API = '/app/backstage/auth/'
 VUE_APP_OAUTH_API = '/app/backstage/auth/'
+VUE_APP_SYSTEM_API = '/app/sys/'
 VUE_APP_AI_API = '/app/ai/'
 VUE_APP_AI_API = '/app/ai/'
+
 #静态资源
 #静态资源
 VUE_APP_RESOURCE_URL = ''
 VUE_APP_RESOURCE_URL = ''
 
 

+ 44 - 43
src/api/auth/org.js

@@ -1,38 +1,18 @@
-import requestAuth from '@/utils/requestAuth'
+import requestSys from '@/utils/requestSys'
 
 
-import request from '@/utils/request'
-
-//组织集合
-export function orgCombobox(query) {
-  return requestAuth({
-    url: '/sysOrg/orgCombobox',
-    method: 'get',
-    params: query
-  })
-}
-
-// 组织搜索
-export function orgSearch(query) {
-  return requestAuth({
-    url: '/sysOrg/search',
-    method: 'get',
-    params: query
-  })
-}
 
 
 // 获取组织列表
 // 获取组织列表
 export function fetchList(query) {
 export function fetchList(query) {
-  return requestAuth({
-    url: '/sysOrg/list',
+  return requestSys({
+    url: '/org/page',
     method: 'get',
     method: 'get',
     params: query
     params: query
   })
   })
 }
 }
-
-// 获取组织列表
-export function sysOrgList(query) {
-  return requestAuth({
-    url: '/sysOrg/list',
+// 获取上级组织
+export function fetchGropList(query) {
+  return requestSys({
+    url: '/org/orgTreeSelector',
     method: 'get',
     method: 'get',
     params: query
     params: query
   })
   })
@@ -40,33 +20,54 @@ export function sysOrgList(query) {
 
 
 // 创建组织
 // 创建组织
 export function createOrg(data) {
 export function createOrg(data) {
-  return requestAuth({
-    url: '/sysOrg/save',
+  return requestSys({
+    url: '/org/add',
     method: 'post',
     method: 'post',
     data
     data
   })
   })
 }
 }
 // 更新组织信息
 // 更新组织信息
 export function updateOrg(data) {
 export function updateOrg(data) {
-  return requestAuth({
-    url: '/sysOrg/update',
+  return requestSys({
+    url: '/org/edit',
     method: 'post',
     method: 'post',
     data
     data
   })
   })
 }
 }
 // 删除组织信息
 // 删除组织信息
-export function deleteOrg(id) {
-  return requestAuth({
-    url: '/sysOrg/delete',
-    method: 'delete',
-    params: {
-      orgId: id
-    }
+export function deleteOrg(data) {
+  return requestSys({
+    url: '/org/delete',
+    method: 'post',
+    data
+  })
+}
+
+// 组织搜索
+export function orgSearch(query) {
+  return requestSys({
+    url: '/sysOrg/search',
+    method: 'get',
+    params: query
+  })
+}
+
+
+
+// 获取组织列表
+export function sysOrgList(query) {
+  return requestSys({
+    url: '/sysOrg/list',
+    method: 'get',
+    params: query
   })
   })
 }
 }
+
+
+
 // 通过id查询组织信息
 // 通过id查询组织信息
 export function getOrgById(id) {
 export function getOrgById(id) {
-  return requestAuth({
+  return requestSys({
     url: '/sysOrg/info/' + id,
     url: '/sysOrg/info/' + id,
     method: 'get'
     method: 'get'
   })
   })
@@ -75,7 +76,7 @@ export function getOrgById(id) {
 
 
 // 获取资源数和组织资源关系
 // 获取资源数和组织资源关系
 export function getOrgResTree(id) {
 export function getOrgResTree(id) {
-  return requestAuth({
+  return requestSys({
     url: '/sysOrgResRel/list',
     url: '/sysOrgResRel/list',
     method: 'get',
     method: 'get',
     params: {
     params: {
@@ -87,7 +88,7 @@ export function getOrgResTree(id) {
 
 
 // 获取组织列表(键值对,ID:名称)
 // 获取组织列表(键值对,ID:名称)
 export function fetchOrgKeyValueList() {
 export function fetchOrgKeyValueList() {
-  return requestAuth({
+  return requestSys({
     url: '/sysOrg/keyValueList',
     url: '/sysOrg/keyValueList',
     method: 'get'
     method: 'get'
   })
   })
@@ -95,7 +96,7 @@ export function fetchOrgKeyValueList() {
 
 
 
 
 export function getOrgDistributionChannel(id) {
 export function getOrgDistributionChannel(id) {
-  return request({
+  return requestSys({
     url: '/pimOrgDistributionChannel/list',
     url: '/pimOrgDistributionChannel/list',
     method: 'get',
     method: 'get',
     params: { orgId: id }
     params: { orgId: id }
@@ -103,7 +104,7 @@ export function getOrgDistributionChannel(id) {
 }
 }
 
 
 export function saveOrgDistributionChannel(data) {
 export function saveOrgDistributionChannel(data) {
-  return request({
+  return requestSys({
     url: '/pimOrgDistributionChannel/save',
     url: '/pimOrgDistributionChannel/save',
     method: 'post',
     method: 'post',
     data
     data

+ 5 - 1
src/constants/index.js

@@ -4,7 +4,11 @@ export const auditStatus = [
   { value: 1, label: '审核通过' },
   { value: 1, label: '审核通过' },
   { value: 2, label: '审核拒绝' }
   { value: 2, label: '审核拒绝' }
 ];
 ];
-
+// 组织分类
+export const orgCategory = [
+  { value: 'DEPT', label: '部门' },
+  { value: 'COMPANY', label: '公司' },
+];
 export default {
 export default {
   auditStatus
   auditStatus
 }
 }

+ 0 - 1
src/layout/components/Navbar.vue

@@ -134,7 +134,6 @@ export default {
   .right-menu {
   .right-menu {
     position: fixed;
     position: fixed;
     right: 20px;
     right: 20px;
-    height: 100%;
     line-height: 50px;
     line-height: 50px;
     display: flex;
     display: flex;
     flex-direction: row;
     flex-direction: row;

+ 4 - 0
src/permission.js

@@ -35,6 +35,10 @@ router.beforeEach(async (to, from, next) => {
             { routerPath: "/auth" },
             { routerPath: "/auth" },
             { routerPath: "/auth/user" },
             { routerPath: "/auth/user" },
             { routerPath: "/auth/role" },
             { routerPath: "/auth/role" },
+            { routerPath: "/auth/orgGroup" },
+            { routerPath: "/auth/changePassword" },
+            { routerPath: "/auth/org" },
+            { routerPath: "/auth/res" },
             { routerPath: "/video" },
             { routerPath: "/video" },
             { routerPath: "/video/oralVideo" }]
             { routerPath: "/video/oralVideo" }]
           const accessRoutes = await store.dispatch('permission/generateRoutes', data);
           const accessRoutes = await store.dispatch('permission/generateRoutes', data);

+ 2 - 2
src/store/modules/user.js

@@ -102,8 +102,8 @@ const actions = {
         //名称
         //名称
         commit('SET_NAME', data.nickname);
         commit('SET_NAME', data.nickname);
         //按钮权限
         //按钮权限
-        // const btns = data.perms;
-        // sessionStorage.setItem('userBtns', btns);
+        const btns = data.buttonCodeList;
+        sessionStorage.setItem('userBtns', btns);
         //头像
         //头像
         const avatar = data.avatar || 'https://testdgxcx-oss.gloria.com.cn/goelia-ai/avata.png';
         const avatar = data.avatar || 'https://testdgxcx-oss.gloria.com.cn/goelia-ai/avata.png';
         commit('SET_AVATAR', avatar);
         commit('SET_AVATAR', avatar);

+ 6 - 3
src/styles/layout.scss

@@ -1,16 +1,19 @@
 .filter-container {
 .filter-container {
   display: flex;
   display: flex;
   flex-direction: row;
   flex-direction: row;
-  align-items: center;
   justify-content: space-between;
   justify-content: space-between;
-  &-lf {
+  &-lt {
     display: flex;
     display: flex;
     margin-right: 20px;
     margin-right: 20px;
     .filter-item {
     .filter-item {
       margin-right: 10px;
       margin-right: 10px;
     }
     }
   }
   }
-  &-rf {
+  &-rt {
     display: flex;
     display: flex;
   }
   }
 }
 }
+.table-container {
+  width: 100%;
+  overflow-x: auto;
+}

+ 72 - 0
src/utils/requestSys.js

@@ -0,0 +1,72 @@
+import axios from 'axios'
+import { Message, MessageBox } from 'element-ui'
+import store from '../store'
+import { getToken } from '@/utils/auth'
+
+// 创建axios实例
+const service = axios.create({
+  baseURL: process.env.VUE_APP_SYSTEM_API, // api 的 base_url
+  timeout: 50000 // 请求超时时间
+});
+
+// request拦截器
+service.interceptors.request.use(
+  config => {
+    if (store.getters.token) {
+      config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
+    }
+    return config
+  },
+  error => {
+    // Do something with request error
+    Promise.reject(error)
+  }
+);
+
+// response 拦截器
+service.interceptors.response.use(
+  response => {
+    //code为非20000是抛错 可结合自己业务进行修改
+    let res = response.data;
+    if (res.code !== 200) {
+      Message.closeAll();
+      Message({
+        message: res.msg,
+        type: 'error',
+        duration: 5 * 1000
+      });
+      if (typeof (res) == "string") {
+        res = JSON.parse(res)
+      }
+      // 用户模块  先隐藏
+      if (res.code === 401) {
+        Message.closeAll();
+        MessageBox.confirm('登录失效,请重新登录', '确定登出', {
+          confirmButtonText: '重新登录',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(() => {
+          store.dispatch('FedLogOut').then(() => {
+            location.reload() // 为了重新实例化vue-router对象 避免bug
+          })
+        })
+      } else {
+        return Promise.reject('error');
+      }
+    } else {
+      return response.data
+    }
+  },
+  error => {
+    console.log('err' + error); // for debug
+    Message.closeAll();
+    Message({
+      message: error.message,
+      type: 'error',
+      duration: 5 * 1000
+    });
+    return Promise.reject(error)
+  }
+);
+
+export default service

+ 93 - 151
src/views/auth/org/components/org/addOrEditOrgDialog.vue

@@ -3,8 +3,8 @@
     :title="textMap[addOrEditData.status]"
     :title="textMap[addOrEditData.status]"
     :visible.sync="addOrEditData.visible"
     :visible.sync="addOrEditData.visible"
     @opened="initData"
     @opened="initData"
-    width="60%"
-    top="1%"
+    width="600px"
+    top="10%"
   >
   >
     <el-form
     <el-form
       ref="dataForm"
       ref="dataForm"
@@ -12,85 +12,41 @@
       :model="org"
       :model="org"
       label-position="left"
       label-position="left"
       label-width="90px"
       label-width="90px"
-      style="width: 700px; margin-left:30px;"
+      style="width: 400px; margin-left:30px;"
     >
     >
-      <el-form-item label="ID" v-if="addOrEditData.status === 'update'">
-        <el-input v-model="org.orgId" disabled />
-      </el-form-item>
-
-      <el-form-item label="名称" prop="name">
-        <el-input v-model="org.name" />
+      <el-form-item label="上级组织" prop="parentId">
+        <el-cascader
+          v-model="org.parentId"
+          :options="orgGroupList"
+          :props="defaultProps"
+          :show-all-levels="false"
+          clearable
+        />
       </el-form-item>
       </el-form-item>
 
 
-      <el-form-item
-        label="标识"
-        prop="identify"
-        v-if="addOrEditData.status === 'create'"
-      >
-        <el-input v-model="org.identify" />
-      </el-form-item>
-      <el-form-item label="标识" prop="identify" v-else>
-        {{ org.identify }}
+      <el-form-item label="组织名称" prop="name">
+        <el-input v-model="org.name" clearable />
       </el-form-item>
       </el-form-item>
 
 
-      <el-form-item label="组织类型" prop="orgGroup" v-if="org.type === -1">
-        <span>超级管理员</span>
-      </el-form-item>
-      <el-form-item label="组织类型" prop="orgGroup" v-else>
-        <el-select
-          v-model="org.orgGroupId"
-          class="filter-item"
-          placeholder="Please select"
-        >
+      <el-form-item label="组织分类" prop="category">
+        <el-select v-model="org.category" class="filter-item" clearable>
           <el-option
           <el-option
-            v-for="orgGroup in orgGroupList"
-            :key="orgGroup.orgGroupId"
-            :label="orgGroup.orgGroupName"
-            :value="orgGroup.orgGroupId"
+            v-for="orgGroup in orgCategory"
+            :key="orgGroup.value"
+            :label="orgGroup.label"
+            :value="orgGroup.value"
           />
           />
         </el-select>
         </el-select>
       </el-form-item>
       </el-form-item>
-
-      <el-form-item
-        label="用户名"
-        prop="username"
-        v-if="addOrEditData.status === 'create'"
-      >
-        <el-input v-model="org.username" />
-      </el-form-item>
-
-      <el-form-item
-        label="密码"
-        v-if="addOrEditData.status === 'create'"
-        prop="password"
-      >
-        <el-input
-          type="password"
-          v-model="org.password"
-          placeholder="请输入大于6位数密码"
-        />
-      </el-form-item>
-
-      <el-form-item label="级别" v-if="addOrEditData.status === 'update'">
-        <el-input v-model="org.level" disabled />
-      </el-form-item>
-
-      <el-form-item
-        label="秘钥"
-        prop="secret"
-        v-if="addOrEditData.status === 'update'"
-      >
-        <el-input v-model="org.secret" disabled />
-      </el-form-item>
-      <el-form-item label="详细地址">
-        <el-input v-model="addr.address" />
+      <el-form-item label="排序" prop="sortCode">
+        <el-input v-model="org.sortCode" clearable />
       </el-form-item>
       </el-form-item>
     </el-form>
     </el-form>
     <div slot="footer" class="dialog-footer">
     <div slot="footer" class="dialog-footer">
-      <el-button @click="dialogFormVisible = false">取消</el-button>
+      <el-button @click="handleClose">取消</el-button>
       <el-button
       <el-button
         type="primary"
         type="primary"
-        v-has="'sysOrg:save'"
+        :loading="btnloading"
         @click="addOrEditData.status === 'create' ? createData() : updateData()"
         @click="addOrEditData.status === 'create' ? createData() : updateData()"
         >确认</el-button
         >确认</el-button
       >
       >
@@ -100,10 +56,9 @@
 
 
 <script>
 <script>
 import waves from "@/directive/waves"; // 水波纹指令
 import waves from "@/directive/waves"; // 水波纹指令
-/*获取组织组信息*/
-import { queryOrgGroupALL } from "@/api/auth/orgGroup";
+import { orgCategory } from "@/constants/index";
 /* 组织 */
 /* 组织 */
-import { createOrg, updateOrg, getOrgById } from "@/api/auth/org";
+import { fetchGropList, createOrg, updateOrg } from "@/api/auth/org";
 
 
 export default {
 export default {
   name: "addOrEditOrgDialog", //添加 或 编辑组织信息
   name: "addOrEditOrgDialog", //添加 或 编辑组织信息
@@ -113,104 +68,72 @@ export default {
   props: ["addOrEditData"],
   props: ["addOrEditData"],
   data() {
   data() {
     return {
     return {
-      props: {},
-      pcdDataList: null,
-      pList: null,
-      cList: null,
-      dList: null,
+      orgCategory,
+      btnloading: false,
+      defaultProps: {
+        label: "name",
+        value: "id",
+        checkStrictly: true,
+        emitPath: false
+      },
       org: {
       org: {
-        orgId: null,
-        identify: null,
+        parentId: null,
         name: null,
         name: null,
-        type: 0,
-        secret: null,
-        orgParentId: null,
-        username: null,
-        password: null,
-        orgGroup: null,
-        addr: null
-      },
-      addr: {
-        provId: null,
-        cityId: null,
-        dictId: null,
-        address: null
+        category: null,
+        sortCode: null
       },
       },
       textMap: {
       textMap: {
-        create: "添加",
-        update: "更新"
+        create: "新建组织",
+        update: "编辑组织"
       },
       },
-      orgGroupList: null,
+      orgGroupList: [],
       rules: {
       rules: {
-        name: [{ required: true, message: "请填写名称", trigger: "change" }],
-        identify: [
-          { required: true, message: "请填写标识", trigger: "change" }
+        name: [{ required: true, message: "请填写组织名称", trigger: "blur" }],
+        parentId: [
+          { required: true, message: "请选择上级组织", trigger: "change" }
         ],
         ],
-        type: [{ required: true, message: "请选择类型", trigger: "blur" }],
-        secret: [{ required: true, message: "请输入密钥", trigger: "change" }],
-        username: [
-          { required: true, message: "请填写用户名", trigger: "change" }
+        category: [
+          { required: true, message: "请选择组织分类", trigger: "change" }
         ],
         ],
-        password: [
-          { required: true, message: "请填写密码", trigger: "change", min: 6 }
-        ]
+        sortCode: [{ required: true, message: "请输入排序", trigger: "blur" }]
       }
       }
     };
     };
   },
   },
-  watch: {},
   methods: {
   methods: {
-    initData() {
+    async initData() {
       //对整个表单进行重置,将所有字段值重置为初始值并移除校验结果
       //对整个表单进行重置,将所有字段值重置为初始值并移除校验结果
-      this.$nextTick(() => {
-        this.$refs["dataForm"].resetFields();
-      });
-      queryOrgGroupALL().then(response => {
-        this.orgGroupList = response.data;
+      // this.$nextTick(() => {
+      //   this.$refs["dataForm"].resetFields();
+      // });
+      await fetchGropList().then(response => {
+        const data = response.data;
+        this.orgGroupList = [
+          { id: 0, name: "顶级", weight: 1, children: data }
+        ];
       });
       });
-      if (this.addOrEditData.orgId != null) {
-        this.queryOrgEntity();
+      if (this.addOrEditData.status === "update") {
+        this.org = this.addOrEditData.orgData;
       }
       }
     },
     },
-    queryOrgEntity() {
-      getOrgById(this.addOrEditData.orgId).then(response => {
-        this.org = Object.assign({}, response.data); // copy obj
-        if (response.addr != null) {
-          let addrData = response.addr;
-          //省份
-          this.addr.provId = addrData.provId;
-          if (addrData.provId != null) {
-            this.cList = addrData.cityList;
-          }
-          //城市
-          this.addr.cityId = addrData.cityId;
-          if (addrData.cityId != null) {
-            this.dList = addrData.dictList;
-          }
-          //区域
-          this.addr.dictId = addrData.dictId;
-          //地址
-          this.addr.address = addrData.address;
-        }
-      });
-    },
     createData() {
     createData() {
       //保存组织
       //保存组织
       this.$refs["dataForm"].validate(valid => {
       this.$refs["dataForm"].validate(valid => {
         if (valid) {
         if (valid) {
-          this.org.addr = this.addr;
-          createOrg(this.org).then(
-            () => {
+          this.btnloading = true;
+          createOrg(this.org)
+            .then(() => {
               this.$notify({
               this.$notify({
                 title: "成功",
                 title: "成功",
-                message: "建成功",
+                message: "新建成功",
                 type: "success",
                 type: "success",
                 duration: 3000
                 duration: 3000
               });
               });
               //重新加载 -- 调用父节点
               //重新加载 -- 调用父节点
               this.$emit("refreshTable");
               this.$emit("refreshTable");
-            },
-            error => {}
-          );
+            })
+            .finally(() => {
+              this.btnloading = false;
+            });
         }
         }
       });
       });
     },
     },
@@ -219,21 +142,40 @@ export default {
       this.$refs["dataForm"].validate(valid => {
       this.$refs["dataForm"].validate(valid => {
         if (valid) {
         if (valid) {
           this.org.addr = this.addr;
           this.org.addr = this.addr;
-          updateOrg(this.org).then(() => {
-            this.$notify({
-              title: "成功",
-              message: "更新成功",
-              type: "success",
-              duration: 3000
+          updateOrg(this.org)
+            .then(() => {
+              this.$notify({
+                title: "成功",
+                message: "编辑成功",
+                type: "success",
+                duration: 3000
+              });
+              //重新加载 -- 调用父节点
+              this.$emit("refreshTable");
+            })
+            .finally(() => {
+              this.btnloading = false;
             });
             });
-            //重新加载 -- 调用父节点
-            this.$emit("refreshTable");
-          });
         }
         }
       });
       });
+    },
+    handleClose() {
+      this.$refs["dataForm"].resetFields();
+      this.addOrEditData.visible = false;
+      this.org = {
+        parentId: null,
+        name: null,
+        category: null,
+        sortCode: null
+      };
     }
     }
   }
   }
 };
 };
 </script>
 </script>
 
 
-<style scoped></style>
+<style rel="stylesheet/scss" lang="scss" scoped>
+.el-cascader,
+.el-select {
+  width: 100%;
+}
+</style>

+ 85 - 165
src/views/auth/org/orgIndex.vue

@@ -1,55 +1,39 @@
 <template>
 <template>
   <div class="app-container">
   <div class="app-container">
     <div class="filter-container">
     <div class="filter-container">
-      <el-input
-        placeholder="角色组名称|标识"
-        class="filter-item"
-        style="width: 300px;"
-        v-model="listQuery.keywords"
-        v-has="'sysOrg:list'"
-        @keyup.enter.native="handleFilter"
-      />
-
-      <el-select
-        class="filter-item"
-        clearable
-        placeholder="请选择组织类型"
-        v-model="listQuery.orgGroupCode"
-      >
-        <el-option
-          v-for="item in options"
-          :key="item.orgGroupId"
-          :label="item.orgGroupName"
-          :value="item.orgGroupCode"
+      <div class="filter-container-lt">
+        <el-input
+          placeholder="组织名称"
+          class="filter-item"
+          style="width: 300px;"
+          clearable
+          v-model="listQuery.searchKey"
+          @keyup.enter.native="handleFilter"
+        />
+        <el-button
+          v-waves
+          type="primary"
+          class="filter-item"
+          icon="el-icon-search"
+          @click="handleFilter"
+          >搜索</el-button
         >
         >
-        </el-option>
-      </el-select>
-
-      <el-button
-        v-waves
-        type="primary"
-        class="filter-item"
-        icon="el-icon-search"
-        v-has="'sysOrg:list'"
-        @click="handleFilter"
-        >搜索</el-button
-      >
-
-      <el-button
-        v-waves
-        type="primary"
-        class="filter-item"
-        icon="el-icon-circle-plus-outline"
-        style="margin-left: 10px;"
-        v-has="'sysOrg:save'"
-        @click="handleCreate"
-        >新建</el-button
-      >
+      </div>
+      <div class="filter-container-rt">
+        <el-button
+          v-waves
+          type="primary"
+          class="filter-item"
+          icon="el-icon-circle-plus-outline"
+          style="margin-left: 10px;"
+          @click="handleCreate"
+          >新建</el-button
+        >
+      </div>
     </div>
     </div>
 
 
     <el-table
     <el-table
       v-loading="listLoading"
       v-loading="listLoading"
-      :key="tableKey"
       :data="list"
       :data="list"
       stripe
       stripe
       border
       border
@@ -57,73 +41,64 @@
       highlight-current-row
       highlight-current-row
       style="width: 100%;"
       style="width: 100%;"
     >
     >
-      <el-table-column label="id" align="center" width="65" prop="orgId">
-      </el-table-column>
+      <el-table-column type="index" label="序号" align="center" width="120" />
+      <el-table-column label="id" align="center" width="200" prop="id" />
 
 
       <el-table-column
       <el-table-column
-        label="名称"
-        min-width="100px"
+        label="组织名称"
+        min-width="100"
         align="center"
         align="center"
         prop="name"
         prop="name"
-      >
-      </el-table-column>
-
-      <el-table-column label="标识" prop="identify"> </el-table-column>
-
-      <el-table-column label="级别" align="center" width="60" prop="typesStr">
-      </el-table-column>
-
-      <el-table-column label="类型" width="120" prop="orgGroupName">
-      </el-table-column>
-
-      <el-table-column label="创建时间">
-        <template slot-scope="scope">
-          <span>{{
-            scope.row.createTime | parseTime("{y}-{m}-{d} {h}:{i}")
-          }}</span>
-        </template>
-      </el-table-column>
+      />
 
 
-      <el-table-column label="更新时间">
+      <el-table-column
+        label="组织分类"
+        align="center"
+        width="180"
+        prop="category"
+      >
         <template slot-scope="scope">
         <template slot-scope="scope">
-          <span>{{
-            scope.row.lastUpdate | parseTime("{y}-{m}-{d} {h}:{i}")
-          }}</span>
+          {{ getValueByKey(scope.row.category, orgCategory) }}
         </template>
         </template>
       </el-table-column>
       </el-table-column>
+      <el-table-column
+        label="排序"
+        align="center"
+        width="150"
+        prop="sortCode"
+      />
+      <el-table-column
+        label="创建时间"
+        align="center"
+        width="150"
+        prop="createTime"
+      />
+      <el-table-column
+        label="更新时间"
+        align="center"
+        width="150"
+        prop="updateTime"
+      />
 
 
-      <el-table-column label="操作" align="center" width="200">
+      <el-table-column fixed="right" label="操作" align="center" width="200">
         <template slot-scope="scope">
         <template slot-scope="scope">
           <el-button
           <el-button
             type="primary"
             type="primary"
             size="mini"
             size="mini"
             icon="el-icon-edit"
             icon="el-icon-edit"
-            v-has="'sysOrg:update'"
             circle
             circle
             title="编辑"
             title="编辑"
             @click="handleUpdate(scope.row)"
             @click="handleUpdate(scope.row)"
           />
           />
 
 
           <el-button
           <el-button
-            v-if="scope.row.orgId !== -1000"
             size="mini"
             size="mini"
             type="danger"
             type="danger"
-            icon="el-icon-switch-button"
-            v-has="'sysOrg:delete'"
+            icon="el-icon-delete"
             circle
             circle
-            title="关闭"
+            title="删除"
             @click="handleDelete(scope.row)"
             @click="handleDelete(scope.row)"
           />
           />
-
-          <el-button
-            type="primary"
-            size="mini"
-            circle
-            title="查看资源"
-            icon="el-icon-s-data"
-            @click="handleOrgRes(scope.row)"
-          >
-          </el-button>
         </template>
         </template>
       </el-table-column>
       </el-table-column>
     </el-table>
     </el-table>
@@ -143,120 +118,70 @@
       :addOrEditData="addOrEditData"
       :addOrEditData="addOrEditData"
       @refreshTable="refreshData"
       @refreshTable="refreshData"
     />
     />
-
-    <!-- 组织配置信息-->
-    <authOrgDialog
-      v-if="authData.visible"
-      :authData="authData"
-      @refreshTable="refreshData"
-    />
   </div>
   </div>
 </template>
 </template>
 
 
 <script>
 <script>
 import waves from "@/directive/waves"; // 水波纹指令
 import waves from "@/directive/waves"; // 水波纹指令
 import addOrEditOrgDialog from "./components/org/addOrEditOrgDialog";
 import addOrEditOrgDialog from "./components/org/addOrEditOrgDialog";
-import authOrgDialog from "./components/org/authOrgDialog";
+// import authOrgDialog from "./components/org/authOrgDialog";
 import swPage from "@/views/common/swPage";
 import swPage from "@/views/common/swPage";
+import { orgCategory } from "@/constants/index";
+import { getValueByKey } from "@/utils/index";
 
 
-import { fetchList, getParentTree, deleteOrg } from "@/api/auth/org";
-import { queryOrgGroupALL } from "@/api/auth/orgGroup";
-import { parseTime, randomString } from "@/utils";
-
-const typesOptions = [
-  { key: -1, display_name: "平台" },
-  { key: 0, display_name: "客户" }
-];
-
-const typesKeyValue = typesOptions.reduce((acc, cur) => {
-  acc[cur.key] = cur.display_name;
-  return acc;
-}, {});
+import { fetchList, deleteOrg } from "@/api/auth/org";
 
 
 export default {
 export default {
   name: "orgIndex",
   name: "orgIndex",
   components: {
   components: {
     addOrEditOrgDialog,
     addOrEditOrgDialog,
-    authOrgDialog,
     swPage
     swPage
   },
   },
   directives: {
   directives: {
     waves
     waves
   },
   },
-  filters: {
-    typeFilter(key) {
-      return typesKeyValue[key];
-    }
-  },
-  computed: {
-    hasOrgCombobox: function() {
-      return sessionStorage.getItem("userBtns").includes("sysOrg:combobox");
-    }
-  },
   data() {
   data() {
     return {
     return {
-      options: [], //组织组类型查询
-      tableKey: 0,
+      orgCategory,
       list: null,
       list: null,
-      buttonSelectedList: "",
       total: null,
       total: null,
       listLoading: true,
       listLoading: true,
       listQuery: {
       listQuery: {
-        orgGroupCode: null,
         page: 1,
         page: 1,
         limit: 20,
         limit: 20,
-        keywords: null
+        searchKey: null
       },
       },
-      typesOptions,
 
 
       addOrEditData: {
       addOrEditData: {
         //添加 或者 编辑 dialog 数据
         //添加 或者 编辑 dialog 数据
         status: "create", //[create ,update]
         status: "create", //[create ,update]
         visible: false,
         visible: false,
-        orgId: null //选中的组织
-      },
-      authData: {
-        //授权弹框数据
-        orgId: null, //授权 组织
-        orgName: null, //组织名称
-        visible: false //弹框 显示标识
-      },
-      downloadLoading: false,
-
-      resLabelTree: null, //资源tree
-      topCategoryList: [], //顶级目录
-      topCategoryIdsList: [], //顶级目录
-      checkedCategorys: [], //选中的目录
-      categoryCheckAll: false, //是否全选
-      isCategoryAll: false // ture 上面的是false 半选 ,两个都是false 不选, 上面是true,这边是false 全选
+        orgData: null //选中的组织
+      }
     };
     };
   },
   },
   created() {
   created() {
     this.getList();
     this.getList();
-    this.getOrgGroupList();
   },
   },
   methods: {
   methods: {
-    getOrgGroupList() {
-      queryOrgGroupALL().then(response => {
-        this.options = response.data;
-      });
-    },
+    getValueByKey,
     refreshData() {
     refreshData() {
       this.addOrEditData.status = "create";
       this.addOrEditData.status = "create";
       this.addOrEditData.visible = false;
       this.addOrEditData.visible = false;
-      this.addOrEditData.orgId = null; //选中的组织
+      this.addOrEditData.orgData = null; //选中的组织
       this.handleFilter();
       this.handleFilter();
     },
     },
     getList() {
     getList() {
       //查询
       //查询
       this.listLoading = true;
       this.listLoading = true;
-      fetchList(this.listQuery).then(response => {
-        this.list = response.data.list;
-        this.total = response.data.total;
-        setTimeout(() => {
+      fetchList(this.listQuery)
+        .then(response => {
+          this.list = response.data.rows;
+          this.total = response.data.total;
+        })
+        .finally(() => {
           this.listLoading = false;
           this.listLoading = false;
-        }, 0.5 * 1000);
-      });
+        });
     },
     },
     retPage() {
     retPage() {
       //分页
       //分页
@@ -272,23 +197,23 @@ export default {
       //查询组织 - 角色
       //查询组织 - 角色
       this.addOrEditData.status = "create";
       this.addOrEditData.status = "create";
       this.addOrEditData.visible = true;
       this.addOrEditData.visible = true;
-      this.addOrEditData.orgId = null;
+      this.addOrEditData.orgData = null;
     },
     },
     handleUpdate(row) {
     handleUpdate(row) {
       //触发更新Dialog和创建的dialog共用一个dialog
       //触发更新Dialog和创建的dialog共用一个dialog
       this.addOrEditData.status = "update";
       this.addOrEditData.status = "update";
       this.addOrEditData.visible = true;
       this.addOrEditData.visible = true;
-      this.addOrEditData.orgId = row.orgId;
+      this.addOrEditData.orgData = row;
     },
     },
 
 
     handleDelete(row) {
     handleDelete(row) {
       //删除
       //删除
-      this.$confirm("是否删除该记录?", "提示", {
+      this.$confirm("删除此组织与下级组织吗??", "提示", {
         confirmButtonText: "确定",
         confirmButtonText: "确定",
         cancelButtonText: "取消",
         cancelButtonText: "取消",
         type: "warning"
         type: "warning"
       }).then(() => {
       }).then(() => {
-        deleteOrg(row.orgId).then(() => {
+        deleteOrg([{ id: row.id }]).then(() => {
           this.$notify({
           this.$notify({
             title: "成功",
             title: "成功",
             message: "删除成功",
             message: "删除成功",
@@ -299,16 +224,11 @@ export default {
           this.list.splice(index, 1); //数值删除
           this.list.splice(index, 1); //数值删除
         });
         });
       });
       });
-    },
-
-    handleOrgRes(row) {
-      //触发授权dialog
-      this.authData.orgId = row.orgId;
-      this.authData.orgName = row.name;
-      this.authData.visible = true;
     }
     }
   }
   }
 };
 };
 </script>
 </script>
 
 
-<style scoped></style>
+<style rel="stylesheet/scss" lang="scss" scoped>
+@import "@/styles/layout.scss";
+</style>

+ 6 - 10
src/views/video/oral-video.vue

@@ -1,7 +1,7 @@
 <template>
 <template>
   <div class="app-container">
   <div class="app-container">
     <div class="filter-container">
     <div class="filter-container">
-      <div class="filter-container-lf">
+      <div class="filter-container-lt">
         <el-input
         <el-input
           placeholder="视频标题"
           placeholder="视频标题"
           style="width: 200px;"
           style="width: 200px;"
@@ -35,7 +35,7 @@
           >搜索</el-button
           >搜索</el-button
         >
         >
       </div>
       </div>
-      <div class="filter-container-rf">
+      <div class="filter-container-rt">
         <!-- <el-button class="filter-item" @click="exportExcel" type="primary"
         <!-- <el-button class="filter-item" @click="exportExcel" type="primary"
           >导出EXCEL</el-button
           >导出EXCEL</el-button
         >
         >
@@ -80,11 +80,11 @@
           label="视频封面"
           label="视频封面"
           min-width="110"
           min-width="110"
           align="center"
           align="center"
-          prop="videoImg"
+          prop="videoCoverImageUrl"
         >
         >
           <template slot-scope="scope">
           <template slot-scope="scope">
-            <div class="video" @click="handlePlay(scope.row)">
-              <img :src="scope.row.videoImg" class="video-img" />
+            <div v-if="scope.row.videoCoverImageUrl" class="video" @click="handlePlay(scope.row)">
+              <img :src="scope.row.videoCoverImageUrl" class="video-img" />
               <i class="el-icon-video-play" />
               <i class="el-icon-video-play" />
             </div>
             </div>
           </template>
           </template>
@@ -378,11 +378,7 @@ export default {
 </script>
 </script>
 
 
 <style rel="stylesheet/scss" lang="scss" scoped>
 <style rel="stylesheet/scss" lang="scss" scoped>
-.table-container {
-  width: 100%;
-  overflow-x: auto;
-}
-@import "../../styles/layout.scss";
+@import "@/styles/layout.scss";
 .button {
 .button {
   .el-button {
   .el-button {
     margin-bottom: 10px;
     margin-bottom: 10px;

+ 2 - 2
vue.config.js

@@ -52,8 +52,8 @@ module.exports = {
       //   }
       //   }
       // }
       // }
       "/": {
       "/": {
-        target: "http://10.41.3.106:9093",
-        // target: "https://portal.gloria.com.cn",
+        // target: "http://10.41.3.106:9093",
+        target: "https://portal.gloria.com.cn",
         changeOrigin: true
         changeOrigin: true
       },
       },
     }
     }