natasha пре 1 месец
родитељ
комит
1bc5fa2211

+ 7 - 0
src/api/list.js

@@ -19,3 +19,10 @@ export function PageQueryMyProjectList_Producer(data) {
     baseURL: process.env.VUE_APP_EEP,
   });
 }
+
+// 分页查询内置管理员机构列表
+export function queryOrgList(data) {
+  return http.post(`${process.env.VUE_APP_EepServer}?MethodName=page_query-PageQueryOrgList`, data, {
+    baseURL: process.env.VUE_APP_EEP,
+  });
+}

+ 9 - 0
src/api/org.js

@@ -0,0 +1,9 @@
+import { http } from '@/utils/http';
+
+
+// 新增机构
+export function createOrg(data) {
+  return http.post(`${process.env.VUE_APP_EepServer}?MethodName=org_manager-CreateOrg`, data, {
+    baseURL: process.env.VUE_APP_EEP,
+  });
+}

+ 16 - 0
src/layouts/default/header/index.vue

@@ -73,6 +73,22 @@ export default {
       this.$router.push({ path: `/${key}` });
     },
   },
+  created() {
+    const userType = this.token?.user_type ?? '';
+    if (userType === 'ORG_MANAGER') {
+      this.projectList = [
+        { key: 'project_manage', name: '项目管理' },
+        { key: 'user_project', name: '用户管理' },
+        { key: 'personal_center', name: '个人中心' },
+      ];
+    } else if (userType === 'ADMIN') {
+      this.projectList = [
+        { key: 'org_manage', name: '机构管理' },
+        { key: 'user_project', name: '用户管理' },
+        { key: 'personal_center', name: '系统配置' },
+      ];
+    }
+  },
 };
 </script>
 

+ 18 - 0
src/router/modules/basic.js

@@ -40,3 +40,21 @@ export const RegisterPage = {
   name: 'Register',
   component: () => import('@/views/register'),
 }
+
+// 内置管理员机构管理
+export const OrgManagePage = {
+  path: '/org_manage',
+  component: DEFAULT,
+  redirect: '/org_manage',
+  meta: {
+    title: '机构管理',
+    icon: 'practice',
+  },
+  children: [
+    {
+      path: '/org_manage',
+      name: 'OrgManage',
+      component: () => import('@/views/org_manage'),
+    },
+  ],
+}

+ 2 - 1
src/router/modules/index.js

@@ -1,4 +1,4 @@
-import { homePage, loginPage, NotFoundPage, ImageChangePage, RegisterPage } from './basic';
+import { homePage, loginPage, NotFoundPage, ImageChangePage, RegisterPage, OrgManagePage } from './basic';
 import ProjectRouters from './project';
 import { createBookRouters } from './book';
 import CoursewareRouters from './courseware';
@@ -12,4 +12,5 @@ export const routes = [
   ImageChangePage,
   NotFoundPage,
   RegisterPage,
+  OrgManagePage,
 ];

+ 181 - 0
src/views/org_manage/index.vue

@@ -0,0 +1,181 @@
+<template>
+  <div class="project">
+    <div class="project-list">
+      <el-button class="add-btn" type="primary" size="small" icon="el-icon-plus" @click="updateOrg('')"
+        >创建机构</el-button
+      >
+      <el-table :data="list">
+        <el-table-column
+          type="index"
+          label="序号"
+          width="60"
+          align="center"
+          :index="(cur_page - 1) * page_capacity + 1"
+        />
+        <el-table-column prop="name" label="名称" align="center" />
+        <el-table-column prop="user_count" label="注册用户数" align="center" />
+        <el-table-column prop="user_count_audited" label="已审核用户数" align="center" />
+        <el-table-column prop="member_name_desc" label="机构管理员" align="center" />
+        <el-table-column prop="create_time" label="创建时间" align="center" />
+
+        <el-table-column prop="operation" label="操作" fixed="right" width="200" align="center">
+          <template slot-scope="{ row }">
+            <span class="link" @click="updateOrg(row)">修改</span>
+            <span class="link" @click="setOrgManager(row.id)">设置机构管理员</span>
+            <span class="link danger" @click="deleteOrg(row.id)">删除</span>
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <PaginationPage ref="pagination" :total="total" @getList="queryOrgList" />
+    </div>
+    <el-dialog
+      :visible.sync="orgAddFlag"
+      width="300px"
+      append-to-body
+      :show-close="true"
+      :title="org_Info.name ? '编辑机构' : '创建机构'"
+    >
+      <el-form ref="formDialog" :model="org_Info" :rules="rules" inline>
+        <el-form-item class="label-input" label="名称" prop="name">
+          <el-input
+            v-model="org_Info.name"
+            autocomplete="off"
+            name="name"
+            @blur="org_Info.name = org_Info.name.trim()"
+          />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="orgAddFlag = false">取 消</el-button>
+        <el-button :loading="loading" type="primary" @click="submitOrg">确 定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import PaginationPage from '@/components/PaginationPage.vue';
+
+import { queryOrgList } from '@/api/list.js';
+import { createOrg } from '@/api/org.js';
+
+export default {
+  name: 'ProjectPage',
+  components: {
+    PaginationPage,
+  },
+  data() {
+    return {
+      list: [],
+      total: 0,
+      page_capacity: 10,
+      cur_page: 1,
+      org_Info: {
+        name: '',
+      },
+      orgAddFlag: false,
+      rules: {
+        name: [{ required: true, trigger: 'blur', message: '请输入名称' }],
+      },
+      loading: false,
+    };
+  },
+  methods: {
+    queryOrgList(data) {
+      queryOrgList(data).then(({ total_count, org_list }) => {
+        this.total = total_count;
+        this.list = org_list;
+        this.page_capacity = data.page_capacity;
+        this.cur_page = data.cur_page;
+      });
+    },
+    /**
+     * 修改机构
+     * @param {string} id - 项目ID
+     */
+    updateOrg(row) {
+      if (row) {
+        this.org_Info = {
+          name: row.name,
+        };
+      } else {
+        this.org_Info = {
+          name: '',
+        };
+      }
+      this.orgAddFlag = true;
+    },
+    // 设置机构管理员
+    setOrgManager(id) {},
+    // 删除机构
+    deleteOrg(id) {
+      let _this = this;
+      _this
+        .$confirm('确定要删除此机构吗?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning',
+        })
+        .then(function () {
+          // transferFilesDelete({ id: id }).then((res) => {
+          //   if (res.status === 1) {
+          _this.queryOrgList({ cur_page: _this.cur_page, page_capacity: _this.page_capacity });
+          _this.$message({
+            type: 'success',
+            message: '删除成功!',
+          });
+          // }
+          // });
+        })
+        .catch(() => {});
+    },
+    // 新增、编辑机构
+    submitOrg() {
+      const _this = this;
+      _this.$refs.formDialog.validate((valid) => {
+        if (valid) {
+          this.loading = true;
+          createOrg(_this.org_Info)
+            .then((res) => {
+              if (res.status === 1) {
+                this.loading = false;
+                _this.queryOrgList({ cur_page: _this.cur_page, page_capacity: _this.page_capacity });
+                _this.$message({
+                  type: 'success',
+                  message: '创建成功!',
+                });
+              }
+            })
+            .catch(() => {
+              this.loading = false;
+            });
+        }
+      });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+@use '@/styles/mixin.scss' as *;
+
+.project {
+  @include page-base;
+
+  .add-btn {
+    width: 120px;
+    margin-bottom: 20px;
+  }
+
+  &-list {
+    display: flex;
+    flex: 1;
+    flex-direction: column;
+
+    .el-table {
+      flex: 1;
+    }
+  }
+}
+</style>

+ 8 - 8
src/views/register/index.vue

@@ -123,7 +123,7 @@ export default {
     return {
       form: {
         user_name: '',
-        real_name: '',
+        real_name: '', // 文档里真实姓名不必填
         org_id: '',
         image_id: '',
         password: '',
@@ -140,13 +140,13 @@ export default {
             trigger: 'blur',
           },
         ],
-        real_name: [
-          {
-            required: true,
-            message: '请输入真实姓名',
-            trigger: 'blur',
-          },
-        ],
+        // real_name: [
+        //   {
+        //     required: true,
+        //     message: '请输入真实姓名',
+        //     trigger: 'blur',
+        //   },
+        // ],
         org_id: [
           {
             required: true,