浏览代码

基础管理调整

zhangjie 2 年之前
父节点
当前提交
c9afad999f

二进制
public/temps/orgTemplate.xlsx


二进制
public/temps/studentTemplate.xlsx


二进制
public/temps/userTemplate.xlsx


+ 109 - 0
src/constants/menus-data.js

@@ -3489,6 +3489,115 @@ export default [
       }
     ]
   },
+  {
+    id: "51125",
+    name: "学院管理",
+    url: "CollegeManage",
+    type: "MENU",
+    parentId: "356",
+    sequence: 4,
+    enable: true,
+    urls: [
+      {
+        id: "536",
+        name: "专业管理-查询",
+        url: "/api/admin/basic/major/query",
+        type: "URL",
+        parentId: "515",
+        sequence: 1,
+        enable: true
+      },
+      {
+        id: "537",
+        name: "专业管理-新增/编辑",
+        url: "/api/admin/basic/major/save",
+        type: "URL",
+        parentId: "515",
+        sequence: 2,
+        enable: true
+      },
+      {
+        id: "538",
+        name: "专业管理-删除)",
+        url: "/api/admin/basic/major/delete",
+        type: "URL",
+        parentId: "515",
+        sequence: 3,
+        enable: true
+      }
+    ],
+    buttons: [
+      {
+        id: "516",
+        name: "专业管理-新增专业",
+        url: "Add",
+        type: "BUTTON",
+        parentId: "515",
+        sequence: 1,
+        enable: true
+      },
+      {
+        id: "522",
+        name: "专业管理-查询",
+        url: "Select",
+        type: "BUTTON",
+        parentId: "515",
+        sequence: 1,
+        enable: true
+      },
+      {
+        id: "572",
+        name: "专业管理-批量删除",
+        url: "Delete",
+        type: "BUTTON",
+        parentId: "515",
+        sequence: 1,
+        enable: true
+      }
+    ],
+    links: [
+      {
+        id: "517",
+        name: "专业管理-编辑",
+        url: "Edit",
+        type: "LINK",
+        parentId: "515",
+        sequence: 1,
+        enable: true
+      },
+      {
+        id: "518",
+        name: "专业管理-删除",
+        url: "Delete",
+        type: "LINK",
+        parentId: "515",
+        sequence: 2,
+        enable: true
+      }
+    ],
+    lists: [
+      {
+        id: "519",
+        name: "专业管理-列表",
+        url: "List",
+        type: "LIST",
+        parentId: "515",
+        sequence: 1,
+        enable: true
+      }
+    ],
+    conditions: [
+      {
+        id: "520",
+        name: "专业管理-查询条件",
+        url: "Condition",
+        type: "CONDITION",
+        parentId: "515",
+        sequence: 1,
+        enable: true
+      }
+    ]
+  },
   {
     id: "651",
     name: "电子交卷",

+ 10 - 0
src/modules/base/api.js

@@ -328,6 +328,16 @@ export const deleteMajor = idList => {
 export const updateMajor = datas => {
   return $post("/api/admin/basic/major/save", datas);
 };
+// college-manage
+export const collegeListQuery = datas => {
+  return $postParam("/api/admin/basic/college/query", datas);
+};
+export const deleteCollege = idList => {
+  return $postParam("/api/admin/basic/college/delete", { idList });
+};
+export const updateCollege = datas => {
+  return $post("/api/admin/basic/college/save", datas);
+};
 
 // other --------------------------------->
 // print-plan-push-manage

+ 121 - 0
src/modules/base/components/ModifyCollege.vue

@@ -0,0 +1,121 @@
+<template>
+  <el-dialog
+    class="modify-college"
+    :visible.sync="modalIsShow"
+    :title="title"
+    top="10vh"
+    width="448px"
+    :close-on-click-modal="false"
+    :close-on-press-escape="false"
+    append-to-body
+    @open="visibleChange"
+  >
+    <el-form
+      ref="modalFormComp"
+      :model="modalForm"
+      :rules="rules"
+      :key="modalForm.id"
+      label-position="top"
+    >
+      <el-form-item prop="collegeName" label="学院名称:">
+        <el-input
+          v-model.trim="modalForm.collegeName"
+          placeholder="请输入学院名称"
+          clearable
+        ></el-input>
+      </el-form-item>
+    </el-form>
+    <div slot="footer">
+      <el-button type="primary" :disabled="isSubmit" @click="submit"
+        >确认</el-button
+      >
+      <el-button @click="cancel">取消</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+import { updateCollege } from "../api";
+
+const initModalForm = {
+  id: null,
+  collegeName: ""
+};
+
+export default {
+  name: "modify-college",
+  props: {
+    instance: {
+      type: Object,
+      default() {
+        return {};
+      }
+    }
+  },
+  computed: {
+    isEdit() {
+      return !!this.instance.id;
+    },
+    title() {
+      return (this.isEdit ? "编辑" : "新增") + "学院";
+    }
+  },
+  data() {
+    return {
+      modalIsShow: false,
+      isSubmit: false,
+      classList: [],
+      modalForm: { ...initModalForm },
+      rules: {
+        collegeName: [
+          {
+            required: true,
+            message: "请输入学院名称",
+            trigger: "change"
+          },
+          {
+            message: "学院名称不能超过50个字",
+            max: 50,
+            trigger: "change"
+          }
+        ]
+      }
+    };
+  },
+  methods: {
+    initData(val) {
+      if (val.id) {
+        this.modalForm = this.$objAssign(initModalForm, val);
+      } else {
+        this.modalForm = { ...initModalForm };
+      }
+    },
+    visibleChange() {
+      this.initData(this.instance);
+    },
+    cancel() {
+      this.modalIsShow = false;
+    },
+    open() {
+      this.modalIsShow = true;
+    },
+    async submit() {
+      const valid = await this.$refs.modalFormComp.validate().catch(() => {});
+      if (!valid) return;
+
+      if (this.isSubmit) return;
+      this.isSubmit = true;
+      const data = await updateCollege(this.modalForm).catch(() => {
+        this.isSubmit = false;
+      });
+
+      if (!data) return;
+
+      this.isSubmit = false;
+      this.$message.success(this.title + "成功!");
+      this.$emit("modified");
+      this.cancel();
+    }
+  }
+};
+</script>

+ 6 - 0
src/modules/base/router.js

@@ -18,6 +18,7 @@ import CourseManage from "./views/CourseManage.vue";
 import ClazzManage from "./views/ClazzManage.vue";
 import SemesterManage from "./views/SemesterManage.vue";
 import MajorManage from "./views/MajorManage.vue";
+import CollegeManage from "./views/CollegeManage.vue";
 import ExamManage from "./views/ExamManage.vue";
 import CourseSimpleManage from "./views/CourseSimpleManage.vue";
 import ClazzSimpleManage from "./views/ClazzSimpleManage.vue";
@@ -108,6 +109,11 @@ export default [
     name: "MajorManage",
     component: MajorManage
   },
+  {
+    path: "/base/college-manage",
+    name: "CollegeManage",
+    component: CollegeManage
+  },
   {
     path: "/base/sms-manage",
     name: "SmsManage",

+ 185 - 0
src/modules/base/views/CollegeManage.vue

@@ -0,0 +1,185 @@
+<template>
+  <div class="college-manage">
+    <div class="part-box part-box-filter part-box-flex">
+      <el-form ref="FilterForm" label-position="left" label-width="90px" inline>
+        <template v-if="checkPrivilege('condition', 'condition')">
+          <el-form-item label="学院名称:">
+            <el-input
+              v-model.trim="filter.collegeName"
+              placeholder="学院名称"
+              clearable
+            ></el-input>
+          </el-form-item>
+        </template>
+        <el-form-item>
+          <el-button
+            v-if="checkPrivilege('button', 'select')"
+            type="primary"
+            @click="toPage(1)"
+            >查询</el-button
+          >
+        </el-form-item>
+      </el-form>
+      <div class="part-box-action">
+        <el-button
+          v-if="checkPrivilege('button', 'delete')"
+          type="danger"
+          icon="el-icon-delete"
+          @click="toBatchDelete"
+          >批量删除</el-button
+        >
+        <el-button
+          v-if="checkPrivilege('button', 'add')"
+          type="primary"
+          icon="el-icon-circle-plus-outline"
+          @click="toAdd"
+          >新增学院</el-button
+        >
+      </div>
+    </div>
+    <div class="part-box part-box-pad">
+      <el-table
+        ref="TableList"
+        :data="dataList"
+        @selection-change="handleSelectionChange"
+      >
+        <el-table-column
+          type="selection"
+          width="55"
+          align="center"
+        ></el-table-column>
+        <el-table-column
+          type="index"
+          label="序号"
+          width="70"
+          :index="indexMethod"
+        ></el-table-column>
+        <el-table-column prop="collegeName" label="学院名称"></el-table-column>
+        <el-table-column prop="createTime" label="创建时间" width="170">
+          <span slot-scope="scope">{{
+            scope.row.createTime | timestampFilter
+          }}</span>
+        </el-table-column>
+        <el-table-column class-name="action-column" label="操作" width="120px">
+          <template slot-scope="scope">
+            <el-button
+              v-if="checkPrivilege('link', 'edit')"
+              class="btn-primary"
+              type="text"
+              @click="toEdit(scope.row)"
+              >编辑</el-button
+            >
+            <el-button
+              v-if="checkPrivilege('link', 'delete')"
+              class="btn-danger"
+              type="text"
+              @click="toDelete(scope.row)"
+              >删除</el-button
+            >
+          </template>
+        </el-table-column>
+      </el-table>
+      <div class="part-page">
+        <el-pagination
+          background
+          layout="total,prev, pager, next"
+          :current-page="current"
+          :total="total"
+          :page-size="size"
+          @current-change="toPage"
+        >
+        </el-pagination>
+      </div>
+    </div>
+
+    <modify-college
+      :instance="curRow"
+      @modified="getList"
+      ref="ModifyCollege"
+    ></modify-college>
+  </div>
+</template>
+
+<script>
+import { collegeListQuery, deleteCollege } from "../api";
+import ModifyCollege from "../components/ModifyCollege";
+
+export default {
+  name: "college-manage",
+  components: { ModifyCollege },
+  data() {
+    return {
+      filter: {
+        collegeName: ""
+      },
+      current: 1,
+      size: this.GLOBAL.pageSize,
+      total: 0,
+      dataList: [],
+      multipleSelection: [],
+      curRow: {}
+    };
+  },
+  mounted() {
+    this.getList();
+  },
+  methods: {
+    async getList() {
+      if (!this.checkPrivilege("list", "list")) return;
+
+      const datas = {
+        ...this.filter,
+        pageNumber: this.current,
+        pageSize: this.size
+      };
+      const data = await collegeListQuery(datas);
+      this.dataList = data.records;
+      this.total = data.total;
+    },
+    toPage(page) {
+      this.multipleSelection = [];
+      this.current = page;
+      this.getList();
+    },
+    toAdd() {
+      this.curRow = {};
+      this.$refs.ModifyCollege.open();
+    },
+    toEdit(row) {
+      this.curRow = row;
+      this.$refs.ModifyCollege.open();
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val.map(item => item.id);
+    },
+    toBatchDelete() {
+      if (!this.multipleSelection.length) {
+        this.$message.error("请选择要删除的数据");
+        return;
+      }
+
+      this.$confirm(`确定要删除选中的这些数据吗?`, "提示", {
+        type: "warning"
+      })
+        .then(async () => {
+          await deleteCollege(this.multipleSelection);
+          this.$message.success("删除成功!");
+          this.deletePageLastItem(this.multipleSelection.length);
+          this.multipleSelection = [];
+        })
+        .catch(() => {});
+    },
+    toDelete(row) {
+      this.$confirm(`确定要删除学院【${row.collegeName}】吗?`, "提示", {
+        type: "warning"
+      })
+        .then(async () => {
+          await deleteCollege([row.id]);
+          this.$message.success("删除成功!");
+          this.deletePageLastItem();
+        })
+        .catch(() => {});
+    }
+  }
+};
+</script>

+ 2 - 2
src/modules/base/views/OrganizationManage.vue

@@ -109,8 +109,8 @@ export default {
         label: "name"
       },
       // import
-      uploadUrl: "/api/admin/sys/user/import",
-      downloadUrl: "/temps/userTemplate.xlsx",
+      uploadUrl: "/api/admin/sys/org/import",
+      downloadUrl: "/temps/orgTemplate.xlsx",
       dfilename: "组织架构导入模板.xlsx"
     };
   },

+ 4 - 4
src/modules/base/views/UserManage.vue

@@ -7,7 +7,7 @@
           <el-form-item label="关键词:" label-width="75px">
             <el-input
               style="width: 142px;"
-              v-model.trim="filter.loginName"
+              v-model.trim="filter.userInfo"
               placeholder="用户名/姓名/手机号"
               clearable
             ></el-input>
@@ -117,7 +117,7 @@
             {{ scope.row.roles | rolesFilter }}
           </template>
         </el-table-column>
-        <el-table-column prop="enable" label="状态" width="100">
+        <el-table-column prop="enable" label="状态" width="80">
           <template slot-scope="scope">
             {{ scope.row.enable | enableFilter }}
           </template>
@@ -195,8 +195,8 @@ export default {
   data() {
     return {
       filter: {
-        loginName: "",
-        realName: "",
+        orgId: "",
+        userInfo: "",
         roleId: "",
         enable: ""
       },