Forráskód Böngészése

教学点修改

1
mo 3 éve
szülő
commit
55ed01a2ac

+ 3 - 1
src/router/index.js

@@ -510,7 +510,9 @@ export const asyncRoutes = {
   // 产品服务
   productService: () => import('@/views/productService'),
   // 声部分类列表
-  subjectCategroyList:() => import('@/views/categroyManager/subjectCategroyList')
+  subjectCategroyList:() => import('@/views/categroyManager/subjectCategroyList'),
+  // oa信息管理
+  OAMananger:() => import('@/views/OAMananger'),
 }
 
 export default router

+ 876 - 0
src/views/OAMananger/index.vue

@@ -0,0 +1,876 @@
+<template>
+  <div class="m-container">
+    <h2>
+      <div class="squrt"></div>
+      OA信息管理
+    </h2>
+    <div class="m-core">
+      <save-form
+        :inline="true"
+        class="searchForm"
+        ref="searchForm"
+        @submit="search"
+        @reset="reset"
+        :model="searchForm"
+      >
+        <el-form-item prop="search">
+          <el-input
+            type="text"
+            clearable
+            v-model.trim="searchForm.search"
+            @keyup.enter.native="search"
+            placeholder="姓名、编号、手机号"
+          ></el-input>
+        </el-form-item>
+        <el-form-item prop="jobNature">
+          <el-select
+            v-model.trim="searchForm.jobNature"
+            clearable
+            filterable
+            placeholder="请选择工作类型"
+          >
+            <el-option label="全职" value="FULL_TIME"></el-option>
+            <el-option label="兼职" value="PART_TIME"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="deptId">
+          <el-cascader
+            v-model="searchForm.deptId"
+            placeholder="请选择社保分部"
+            clearable
+            style="width: 100%"
+            :options="deptSmallList"
+            :show-all-levels="false"
+            :collapse-tags="true"
+            :props="{ checkStrictly: false }"
+          ></el-cascader>
+        </el-form-item>
+        <el-form-item prop="deptIds">
+          <el-cascader
+            v-model="searchForm.deptIds"
+            placeholder="请选择所属部门"
+            clearable
+            style="width: 100%"
+            :options="deptList"
+            :show-all-levels="false"
+            :collapse-tags="true"
+            @change="onDeptChange"
+            :props="{ multiple: true, checkStrictly: false }"
+          ></el-cascader>
+        </el-form-item>
+        <el-form-item>
+          <el-button native-type="submit" type="danger">搜索</el-button>
+          <el-button native-type="reset" type="primary">重置</el-button>
+        </el-form-item>
+      </save-form>
+      <!-- <el-button
+        type="primary"
+        style="margin-bottom: 20px"
+        @click="roleOperation('create')"
+        v-permission="'employee/add'"
+        >添加</el-button
+      > -->
+      <!-- 列表 -->
+      <div class="tableWrap">
+        <el-table
+          :data="tableList"
+          :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+        >
+          <el-table-column align="center" prop="id" label="员工编号">
+            <template slot-scope="scope">
+              <copy-text>{{ scope.row.id }}</copy-text>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="realName" label="姓名">
+            <template slot-scope="scope">
+              <copy-text>{{ scope.row.realName }}</copy-text>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="phone" label="手机号">
+            <template slot-scope="scope">
+              <copy-text>{{ scope.row.phone }}</copy-text>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="deptName" label="社保分部">
+          </el-table-column>
+          <el-table-column align="center" prop="deptsName" label="所属部门">
+          </el-table-column>
+          <!-- <el-table-column align="center" label="角色分类">
+            <template slot-scope="scope">
+              <tooltip
+                :content="scope.row.roleNames | joinArray(',')"
+              ></tooltip>
+            </template>
+          </el-table-column> -->
+          <!-- <el-table-column align="center" prop="jobNature" label="工作类型">
+            <template slot-scope="scope">
+              {{ scope.row.jobNature | jobNature }}
+            </template>
+          </el-table-column> -->
+          <!-- <el-table-column align="center" label="所属分部">
+            <template slot-scope="scope">
+              <tooltip
+                :content="scope.row.organNameList | joinArray(',')"
+              ></tooltip>
+            </template>
+          </el-table-column> -->
+          <!-- <el-table-column
+            align="center"
+            label="状态"
+            :formatter="formatLockFlag"
+          >
+          </el-table-column> -->
+          <!-- <el-table-column align="center" label="入职时间">
+            <template slot-scope="scope">
+              {{ scope.row.entryDate | formatTimer }}
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="离职时间">
+            <template slot-scope="scope">
+              {{ scope.row.demissionDate | formatTimer }}
+            </template>
+          </el-table-column> -->
+          <el-table-column
+            align="center"
+            width="250px"
+            fixed="right"
+            label="操作"
+          >
+            <template slot-scope="scope">
+              <el-button
+                @click="roleOperation('update', scope.row)"
+                v-if="permission('employee/update')"
+                type="text"
+                >修改</el-button
+              >
+            </template>
+          </el-table-column>
+        </el-table>
+        <pagination
+          sync
+          :total.sync="pageInfo.total"
+          :page.sync="pageInfo.page"
+          :limit.sync="pageInfo.limit"
+          :page-sizes="pageInfo.page_size"
+          @pagination="getList"
+        />
+      </div>
+    </div>
+
+    <el-dialog
+      :title="formTitle[formActionTitle]"
+      :visible.sync="roleStatus"
+      @close="onFormClose('ruleForm')"
+      width="650px"
+    >
+      <el-form :model="form" :rules="rules" ref="ruleForm">
+        <el-alert
+          style="margin: 10px 0"
+          title="OA信息"
+          :closable="false"
+          type="info"
+        >
+        </el-alert>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item
+              label="所属部门"
+              prop="deptIds"
+              :label-width="formLabelWidth"
+            >
+              <el-cascader
+                v-model="form.deptIds"
+                placeholder="请选择所属部门"
+                clearable
+                style="width: 100%"
+                :options="deptList"
+                :show-all-levels="false"
+                :collapse-tags="true"
+                @change="onDeptChange"
+                :props="{ multiple: true, checkStrictly: false }"
+              ></el-cascader>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item
+              label="社保分部"
+              prop="deptId"
+              :label-width="formLabelWidth"
+            >
+              <el-cascader
+                v-model="form.deptId"
+                placeholder="请选择社保分部"
+                clearable
+                style="width: 100%"
+                :options="deptSmallList"
+                :show-all-levels="false"
+                :collapse-tags="true"
+                :props="{ checkStrictly: false }"
+              ></el-cascader>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <div v-for="(postDeptIds, index) in form.postDeptIds" :key="index">
+          <el-form-item
+            :label="'岗位管理' + (index + 1)"
+            :label-width="formLabelWidth"
+            class="setWidth"
+            :prop="'postDeptIds.' + index + '.postId'"
+          >
+            <el-select
+              filterable
+              clearable
+              placeholder="所属岗位"
+              style="width: 180px !important"
+              v-model.trim="postDeptIds.postId"
+            >
+              <el-option
+                v-for="item in postList"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item
+            class="setWidth"
+            style="margin: 0 10px; width: 190px !important"
+            :prop="'postDeptIds.' + index + '.deptIds'"
+          >
+            <el-cascader
+              v-model="postDeptIds.deptIds"
+              placeholder="管理部门"
+              clearable
+              :options="deptList"
+              :show-all-levels="false"
+              :collapse-tags="true"
+              :props="{ multiple: true, checkStrictly: false }"
+            ></el-cascader>
+          </el-form-item>
+          <el-button
+            icon="el-icon-minus"
+            circle
+            v-if="form.postDeptIds.length > 1"
+            @click.prevent="removePostDept(postDeptIds)"
+          ></el-button>
+          <el-button
+            icon="el-icon-plus"
+            @click.prevent="addPostDept"
+            circle
+            style="margin-left: 5px"
+          ></el-button>
+        </div>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="roleStatus = false">取 消</el-button>
+        <el-button @click="onRoleSubmit('ruleForm')" type="primary"
+          >确 定</el-button
+        >
+      </span>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import pagination from "@/components/Pagination/index";
+import { permission } from "@/utils/directivePage";
+import {
+  queryEmployByOrganId,
+  employeeOperate,
+  getUserRole,
+  employeeAdd,
+  employeeUpdate,
+  hasCourseGroupRelation,
+  updateEducationTeacherId,
+  queryEmployeeOrganByUser,
+  getDepts,
+  getPosts,
+} from "@/api/systemManage";
+import { findEducationTeacher } from "@/api/specialSetting";
+import deepClone from "@/helpers/deep-clone";
+// import Treeselect from '@riophae/vue-treeselect'
+// import '@riophae/vue-treeselect/dist/vue-treeselect.css'
+import Tooltip from "@/components/Tooltip/index";
+import { isvalidPhone } from "@/utils/validate";
+let validPhone = (rule, value, callback) => {
+  if (!value) {
+    callback(new Error("请输入电话号码"));
+  } else if (!isvalidPhone(value)) {
+    callback(new Error("请输入正确的11位手机号码"));
+  } else {
+    callback();
+  }
+};
+export default {
+  name: "staffManager",
+  components: { pagination, Tooltip },
+  data() {
+    return {
+      roleResetList: [],
+      organList: [],
+      tableList: [],
+      educationList: [],
+      deptList: [],
+      deptSmallList: [],
+      postList: [],
+      educationForm: {
+        targetUserId: "",
+      },
+      educationViseble: false,
+      activeRow: null,
+      pageInfo: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50], // 选择限制显示条数
+      },
+      detail: null,
+      handoverVisible: false,
+      roleStatus: false,
+      formActionTitle: "create",
+      roleList: [], // 角色列表,
+      roleBaseList: [], // 登陆人角色
+
+      formTitle: {
+        create: "添加员工",
+        update: "修改员工",
+      },
+      formLabelWidth: "100px",
+      form: {
+        realName: null,
+        gender: null,
+        phone: null,
+        roleIds: [],
+        deptId: null, // 社保分部
+        organIdLists: [],
+        postDeptIds: [
+          {
+            postId: null,
+            deptIds: [],
+          },
+        ],
+        deptIds: [],
+        // postIds: [],
+        jobNature: null,
+        entryDate: null,
+        contactAddress: null,
+        postalCode: null,
+      },
+      rules: {
+        realName: [{ required: true, message: "请输入姓名", trigger: "blur" }],
+        gender: [{ required: true, message: "请选择性别", trigger: "change" }],
+        phone: [
+          {
+            type: "number",
+            required: true,
+            validator: validPhone,
+            trigger: "blur",
+          },
+          {
+            pattern: /^1[3456789]\d{9}$/,
+            message: "请输入正确的手机号",
+            trigger: "blur",
+          },
+        ],
+        roleIds: [
+          {
+            type: "array",
+            required: true,
+            message: "请选择分类",
+            trigger: "change",
+          },
+        ],
+        // deptId: [{ required: true, message: '请选择社保分部', trigger: 'change' }],
+        organIdLists: [
+          {
+            type: "array",
+            required: true,
+            message: "请选择所属分部",
+            trigger: "change",
+          },
+        ],
+        // deptIds: [{ type: 'array', required: true, message: '请选择所属部门', trigger: 'change' }],
+        // postIds: [{ type: 'array', required: true, message: '请选择所属岗位', trigger: 'change' }],
+        jobNature: [
+          { required: true, message: "请选择工作类型", trigger: "change" },
+        ],
+        entryDate: [
+          { required: true, message: "请选择入职时间", trigger: "blur" },
+        ],
+      },
+      searchForm: {
+        search: null,
+        jobNature: null,
+        organId: null,
+        roleId: null,
+        deptId: null,
+        deptIds:null,
+      },
+    };
+  },
+  mounted() {
+    this.getList();
+    this.getRoleList();
+  },
+  methods: {
+    permission,
+    handover(row) {
+      this.detail = row;
+      this.handoverVisible = true;
+    },
+    onBranchCheckAll() {
+      this.form.organIdLists = [];
+
+      this.organList.forEach((item) => {
+        this.form.organIdLists.push(item.id);
+      });
+    },
+    onRoleSubmit(formName) {
+      this.$refs[formName].validate((valid) => {
+        if (valid) {
+          const { organIdLists, postDeptIds, deptIds, deptId, ...res } =
+            this.form;
+          let tempPost = [];
+          postDeptIds.forEach((post) => {
+            let tempIds = [];
+            post.deptIds.forEach((item) => {
+              tempIds.push(item[item.length - 1]);
+            });
+            tempPost.push({
+              postId: post.postId,
+              deptIds: tempIds,
+            });
+          });
+          const tempDeptIds = [];
+          deptIds.forEach((ds) => {
+            tempDeptIds.push(ds[ds.length - 1]);
+          });
+
+          const tempDeptId = deptId ? deptId[deptId.length - 1] : "";
+
+          let tempForm = {
+            postDeptIds: JSON.stringify(tempPost),
+            organIdList: organIdLists.join(","),
+            deptIds: tempDeptIds,
+            deptId: tempDeptId,
+            ...res,
+          };
+          if (this.formActionTitle == "create") {
+            if (this.form.id) {
+              // 判断有没有Id,如果有则删除
+              delete this.form.id;
+            }
+            employeeAdd(tempForm).then((res) => {
+              this.messageTips("添加", res);
+            });
+          } else if (this.formActionTitle == "update") {
+            employeeUpdate(tempForm).then((res) => {
+              this.messageTips("修改", res);
+            });
+          }
+        } else {
+          return;
+        }
+      });
+    },
+    messageTips(title, res) {
+      if (res.code == 200) {
+        this.$message.success(title + "成功");
+        this.roleStatus = false;
+        this.getList();
+      } else {
+        this.$message.error(res.msg);
+      }
+    },
+    search() {
+      this.pageInfo.page = 1;
+      this.getList();
+    },
+    reset() {
+      this.$refs.searchForm.resetFields();
+      this.search();
+    },
+    getList() {
+      let searchForm = this.searchForm;
+      let params = {
+        search: searchForm.search ? searchForm.search : null,
+        jobNature: searchForm.jobNature ? searchForm.jobNature : null,
+        organId: searchForm.organId ? searchForm.organId : null,
+        roleId: searchForm.roleId ? searchForm.roleId : null,
+        rows: this.pageInfo.limit,
+        page: this.pageInfo.page,
+      };
+      queryEmployByOrganId(params).then((res) => {
+        if (res.code == 200 && res.data) {
+          this.tableList = res.data.rows;
+          this.pageInfo.total = res.data.total;
+        }
+      });
+    },
+    /** 转换菜单数据结构 */
+    normalizer(node) {
+      let temp = [];
+      if (node.children && node.children.length > 0) {
+        node.children.forEach((item) => {
+          let child = this.normalizer(item, status);
+          let obj = {
+            value: item.deptId,
+            label: item.deptName,
+          };
+          if (child && child.length > 0) {
+            obj.children = child;
+          }
+          temp.push(obj);
+        });
+      }
+      return temp;
+    },
+    async getRoleList() {
+      // 获取角色
+      getUserRole({ delFlag: 0, rows: 9999 }).then((res) => {
+        let result = res.data;
+        if (res.code == 200 && result && result.rows.length > 0) {
+          this.roleList = [];
+          result.rows.forEach((item) => {
+            this.roleList.push({
+              label: item.roleName,
+              value: item.id,
+              disabled: false,
+            });
+          });
+        }
+      });
+      // 获取可编辑角色
+      // try {
+      //   const res = await userRole();
+      //   this.roleResetList = [];
+      //   res.data.forEach((item) => {
+      //     this.roleResetList.push({
+      //       label: item.roleName,
+      //       value: item.id,
+      //       disabled: false,
+      //     });
+      //   });
+      // } catch (e) {
+      //   console.log(e);
+      // }
+
+      getDepts({ rows: 9999 }).then((res) => {
+        if (res.code == 200 && res.data && res.data.length > 0) {
+          const depts = res.data || [];
+          const formatArr = [];
+          depts.forEach((dep) => {
+            formatArr.push({
+              value: dep.deptId,
+              label: dep.deptName,
+              children: this.normalizer(dep),
+            });
+          });
+          this.deptList = formatArr;
+        }
+      });
+      // 岗位
+      getPosts({ rows: 9999 }).then((res) => {
+        if (res.code == 200 && res.data && res.data.length > 0) {
+          this.postList = [];
+          res.data.forEach((item) => {
+            this.postList.push({
+              label: item.postName,
+              value: item.postId,
+            });
+          });
+        }
+      });
+      this.$store.dispatch("setBranchs");
+    },
+    onDeptChange(value) {
+      this.form.deptId = null;
+      this.deptSmallList = [];
+      let selectList = value.flat(Infinity);
+      selectList = [...new Set(selectList)];
+      const depts = deepClone(this.deptList);
+      const formatArr = [];
+      depts.forEach((dep) => {
+        formatArr.push({
+          value: dep.value,
+          label: dep.label,
+          disabled: !selectList.includes(dep.value),
+          children: this.normalizer2(dep, selectList),
+        });
+      });
+      this.deptSmallList = formatArr;
+    },
+    /** 转换菜单数据结构 */
+    normalizer2(node, selectList) {
+      let temp = [];
+      if (node.children && node.children.length > 0) {
+        node.children.forEach((item) => {
+          let child = this.normalizer2(item, selectList);
+          let obj = {
+            value: item.value,
+            label: item.label,
+            disabled: !selectList.includes(item.value),
+          };
+          if (child && child.length > 0) {
+            obj.children = child;
+          }
+          temp.push(obj);
+        });
+      }
+      return temp;
+    },
+    async roleOperation(type, data) {
+      // 获取分部
+      await queryEmployeeOrganByUser().then((res) => {
+        if (res.code == 200) {
+          this.organList = res.data;
+        }
+      });
+      this.formActionTitle = type;
+      this.roleStatus = true;
+
+      //  格式化 可选角色
+
+      // 修改的时候
+      if (type == "update") {
+        let roleIdList = [...data.roleIds];
+        // this.roleBaseList.forEach((item) => {
+        //   if (roleIdList.indexOf(item.value) == -1) {
+        //     roleIdList.push(item.value);
+        //   }
+        // });
+        // this.roleResetList = [...this.roleList];
+        // this.roleList.forEach((role) => {
+        //   if (roleIdList.indexOf(role.value) != -1) {
+        //     this.roleResetList.push(role);
+        //   }
+        // });
+        // 初始化数据
+        let postDeptArr = [];
+        const postDept = data.postDeptIds ? JSON.parse(data.postDeptIds) : [];
+
+        if (postDept.length > 0) {
+          postDept.forEach((dept) => {
+            let deptIds = dept.deptIds || [];
+            let deptArr = [];
+            deptIds.forEach((ds) => {
+              deptArr.push(this.formatParentId(ds, this.deptList));
+            });
+            postDeptArr.push({
+              postId: dept.postId,
+              deptIds: deptArr,
+            });
+          });
+        } else {
+          postDeptArr = [
+            {
+              postId: null,
+              deptIds: [],
+            },
+          ];
+        }
+
+        const deptIds = data.deptIds ? eval(data.deptIds) : [];
+        const tempDeptIds = [];
+        if (deptIds.length > 0) {
+          deptIds.forEach((ds) => {
+            tempDeptIds.push(this.formatParentId(ds, this.deptList));
+          });
+        }
+        this.onDeptChange(tempDeptIds);
+        this.form = {
+          id: data.id,
+          realName: data.realName,
+          gender: data.gender,
+          phone: Number(data.phone),
+          roleIds: data.roleIds,
+          deptId: data.deptId
+            ? this.formatParentId(data.deptId, this.deptList)
+            : null,
+          organIdLists: data.organIdList ? data.organIdList : [],
+          jobNature: data.jobNature,
+          entryDate: data.entryDate,
+          contactAddress: data.contactAddress,
+          postalCode: data.postalCode,
+          postDeptIds: postDeptArr,
+          deptIds: tempDeptIds,
+        };
+      } else {
+        this.roleResetList = [...this.roleBaseList];
+      }
+    },
+    formatParentId(id, list, ids = []) {
+      for (const item of list) {
+        if (item.children) {
+          const cIds = this.formatParentId(id, item.children, [
+            ...ids,
+            item.value,
+          ]);
+          if (cIds.includes(id)) {
+            return cIds;
+          }
+        }
+        if (item.value === id) {
+          return [...ids, id];
+        }
+      }
+      return ids;
+    },
+    onFormClose(formName) {
+      // 关闭弹窗重置验证
+      this.form = {
+        realName: null,
+        gender: null,
+        phone: null,
+        roleName: null,
+        roleIds: [],
+        deptId: null,
+        organIdLists: [],
+        jobNature: null,
+        entryDate: null,
+        contactAddress: null,
+        postalCode: null,
+        deptIds: [],
+        postDeptIds: [
+          {
+            postId: null,
+            deptIds: [],
+          },
+        ],
+      };
+      this.$refs[formName].resetFields();
+    },
+    formatLockFlag(row) {
+      let reuslt = ["正常", "冻结"];
+      if (row.demissionDate) {
+        return "离职";
+      } else {
+        return reuslt[row.lockFlag];
+      }
+    },
+    async checkStatus(data) {
+      let status;
+      await hasCourseGroupRelation({ employeeId: data.id }).then(
+        async (res) => {
+          if (res.code === 200) {
+            if (res.data.hasCourseSchedule) {
+              this.$message.error("请先交接指导老师课程");
+              status = false;
+            } else {
+              if (res.data.hasCourseGroupRelation) {
+                let userId = data.id;
+                await findEducationTeacher({ userId }).then((res) => {
+                  if (res.code === 200) {
+                    this.educationList = res.data;
+                    this.educationViseble = true;
+                    status = false;
+                  }
+                });
+              } else {
+                // 1 要弹出
+                status = true;
+              }
+            }
+          }
+        }
+      );
+
+      return status;
+    },
+    onStaffOperation(type, data) {
+      const tempStatus = type == "RESET_PASSWORD" ? true : false;
+      this.$confirm(
+        `您确定${tempStatus ? "重置密码" : "修改员工状态"}?`,
+        "提示",
+        {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+        }
+      )
+        .then(async () => {
+          if (type === "DEMISSION" && !data.demissionDate) {
+            this.activeRow = data;
+            // 1.点击的是离职按钮
+            // 2.判断该考级是否存在乐团主管
+            const status = await this.checkStatus(data);
+            if (!status) {
+              return;
+            }
+          }
+          employeeOperate({
+            employeeId: data.id,
+            operate: type,
+          }).then((res) => {
+            if (res.code == 200) {
+              this.$message.success(tempStatus ? "重置密码成功" : "更改成功");
+              this.roleStatus = false;
+              this.getList();
+            } else {
+              this.$message.error(res.msg);
+            }
+          });
+        })
+        .catch((err) => {});
+    },
+    submitEducation() {
+      // 发请求 提交信息
+      updateEducationTeacherId({
+        currentUserId: this.activeRow.id,
+        targetUserId: this.educationForm.targetUserId,
+      }).then((res) => {
+        if (res.code === 200) {
+          const type = "DEMISSION";
+          const data = this.activeRow;
+          employeeOperate({
+            employeeId: data.id,
+            operate: type,
+          }).then((res) => {
+            if (res.code == 200) {
+              this.$message.success("更改成功");
+              this.roleStatus = false;
+              this.educationViseble = false;
+              this.getList();
+            } else {
+              this.$message.error(res.msg);
+            }
+          });
+        }
+      });
+    },
+    removePostDept(item) {
+      const index = this.form.postDeptIds.indexOf(item);
+      if (index !== -1) {
+        this.form.postDeptIds.splice(index, 1);
+      }
+    },
+    addPostDept() {
+      this.form.postDeptIds.push({
+        postId: null,
+        deptIds: [],
+      });
+    },
+  },
+  watch: {
+    educationViseble(val) {
+      if (!val) {
+        this.educationForm.targetUserId = "";
+        this.$refs["educationForm"].resetFields();
+      }
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+/deep/.el-dialog__body {
+  // padding: 0 20px;
+}
+/deep/.el-select,
+/deep/.el-date-editor.el-input {
+  width: 100% !important;
+}
+.setWidth {
+  display: inline-block;
+}
+</style>

+ 27 - 21
src/views/categroyManager/insideSetting/addressManager.vue

@@ -48,14 +48,14 @@
         </el-form-item>
         <el-form-item>
           <el-button native-type="submit" type="danger">搜索</el-button>
-           <el-button native-type="reset" type="primary">重置</el-button>
+          <el-button native-type="reset" type="primary">重置</el-button>
         </el-form-item>
       </save-form>
       <el-button
         @click="openTeaching('create')"
         v-permission="'school/add'"
         type="primary"
-        style="margin-bottom:20px"
+        style="margin-bottom: 20px"
       >
         新建
       </el-button>
@@ -390,7 +390,7 @@ export default {
       searchForm: {
         search: null,
         organId: null,
-        publicFlag:null,
+        publicFlag: null,
       },
       searchLsit: [],
       tableList: [],
@@ -564,10 +564,10 @@ export default {
       let lngSum = 0;
       if (pois.length > 0) {
         pois.forEach((poi) => {
-          let { lng, lat } = poi;
+          let { lng, lat } = poi.location;
           lngSum += lng;
           latSum += lat;
-          this.markers.push([poi.lng, poi.lat]);
+          this.markers.push([poi.location.lng, poi.location.lat]);
         });
         let center = {
           lng: lngSum / pois.length,
@@ -575,17 +575,15 @@ export default {
         };
         this.center = [center.lng, center.lat];
       }
-    },
-    getpoient(e) {
-      // let geocoder = new AMap.Geocoder()
+
       let geocoder = null;
       AMap.plugin(["AMap.Geocoder"], function () {
         geocoder = new AMap.Geocoder();
       });
-      let that = this;
-      geocoder.getAddress(e.lnglat, function (status, result) {
+           let that = this;
+      geocoder.getAddress(pois[0].location, function (status, result) {
         if (status === "complete" && result.regeocode) {
-          result.regeocode.lnglat = e.lnglat;
+          result.regeocode.lnglat = pois[0].location;
           let ct = result.regeocode.addressComponent;
           that.addressDetail = {
             address:
@@ -598,18 +596,26 @@ export default {
               ct.township +
               ct.street +
               ct.streetNumber,
-            poi: e.lnglat.lng + "," + e.lnglat.lat,
+            poi: pois[0].location.lng + "," + pois[0].location.lat,
           };
-          that.onSearchResult([{ lng: e.lnglat.lng, lat: e.lnglat.lat }]);
+
           // console.log(that.form.address,that.form.longitudeLatitude)
           // that.form.address = result.regeocode.formattedAddress;
           // that.mapStatus = false
           // that.addressMessage = false
         } else {
+          console.log(status,result)
           that.$message.error("请重新选择地址");
         }
       });
     },
+    getpoient(e) {
+      // let geocoder = new AMap.Geocoder()
+
+      console.log(e.lnglat,'getpoient')
+      this.onSearchResult([{ location:e.lnglat}]);
+
+    },
     markerEvents() {
       // marker 事件添加
       let that = this;
@@ -630,7 +636,7 @@ export default {
       let params = {
         search: searchForm.search ? searchForm.search : null,
         organId: searchForm.organId ? searchForm.organId : null,
-        publicFlag:searchForm.publicFlag ? searchForm.publicFlag : null,
+        publicFlag: searchForm.publicFlag ? searchForm.publicFlag : null,
         rows: this.pageInfo.limit,
         page: this.pageInfo.page,
       };
@@ -760,14 +766,14 @@ export default {
       this.pageInfo.page = 1;
       this.getList();
     },
-    onReset(){
+    onReset() {
       this.searchForm = {
         search: null,
         organId: null,
-        publicFlag:null,
-      }
-      this.search()
-    }
+        publicFlag: null,
+      };
+      this.search();
+    },
   },
 };
 </script>
@@ -791,13 +797,13 @@ export default {
 .el-input-group__append {
   background: #f5f7fa;
   border-color: #dcdfe6;
-  color: #909399;;
+  color: #909399;
   &:hover,
   &:active,
   &:focus {
     background: #f5f7fa;
     border-color: #dcdfe6;
-    color: #909399;;
+    color: #909399;
   }
 }
 .el-vue-search-box-container {

+ 40 - 84
src/views/categroyManager/insideSetting/staffManager.vue

@@ -12,11 +12,9 @@
         @submit="search"
         @reset="reset"
         :model="searchForm"
-
       >
         <el-form-item prop="search">
           <el-input
-
             type="text"
             clearable
             v-model.trim="searchForm.search"
@@ -26,7 +24,6 @@
         </el-form-item>
         <el-form-item prop="jobNature">
           <el-select
-
             v-model.trim="searchForm.jobNature"
             clearable
             filterable
@@ -40,7 +37,6 @@
         </el-form-item>
         <el-form-item prop="organId">
           <el-select
-
             v-model.trim="searchForm.organId"
             clearable
             filterable
@@ -57,7 +53,6 @@
         <el-form-item prop="roleId">
           <!--   multiple -->
           <el-select
-
             v-model.trim="searchForm.roleId"
             clearable
             filterable
@@ -73,26 +68,20 @@
           <!-- collapse-tags -->
         </el-form-item>
         <el-form-item>
-          <el-button native-type="submit" type="danger"
-            >搜索</el-button
-          >
-          <el-button native-type="reset" type="primary"
-            >重置</el-button
-          >
+          <el-button native-type="submit" type="danger">搜索</el-button>
+          <el-button native-type="reset" type="primary">重置</el-button>
         </el-form-item>
       </save-form>
       <el-button
         type="primary"
-        style="margin-bottom:20px"
+        style="margin-bottom: 20px"
         @click="roleOperation('create')"
         v-permission="'employee/add'"
-
         >添加</el-button
       >
       <!-- 列表 -->
       <div class="tableWrap">
         <el-table
-
           :data="tableList"
           :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
         >
@@ -216,7 +205,7 @@
       @close="onFormClose('ruleForm')"
       width="650px"
     >
-      <el-form :model="form" :rules="rules" ref="ruleForm" >
+      <el-form :model="form" :rules="rules" ref="ruleForm">
         <el-alert
           style="margin: 10px 0"
           title="基础信息"
@@ -232,7 +221,6 @@
               :label-width="formLabelWidth"
             >
               <el-input
-
                 v-model.trim="form.realName"
                 placeholder="请输入姓名"
                 autocomplete="off"
@@ -246,7 +234,6 @@
               :label-width="formLabelWidth"
             >
               <el-select
-
                 v-model.trim="form.gender"
                 placeholder="请选择性别"
                 clearable
@@ -266,7 +253,6 @@
               :label-width="formLabelWidth"
             >
               <el-input
-
                 v-model.trim.number="form.phone"
                 placeholder="请输入手机号"
                 autocomplete="off"
@@ -280,7 +266,6 @@
               :label-width="formLabelWidth"
             >
               <el-select
-
                 v-model.trim="form.jobNature"
                 clearable
                 placeholder="请选择工作类型"
@@ -302,7 +287,6 @@
               :label-width="formLabelWidth"
             >
               <el-date-picker
-
                 v-model.trim="form.entryDate"
                 type="date"
                 :picker-options="{
@@ -321,7 +305,6 @@
               :label-width="formLabelWidth"
             >
               <el-input
-
                 v-model.trim="form.postalCode"
                 placeholder="请输入邮政编码"
                 autocomplete="off"
@@ -336,7 +319,6 @@
             :label-width="formLabelWidth"
           >
             <el-input
-
               v-model.trim="form.contactAddress"
               placeholder="请输入通讯地址"
               autocomplete="off"
@@ -358,7 +340,6 @@
               :label-width="formLabelWidth"
             >
               <select-all
-
                 filterable
                 clearable
                 placeholder="请选择所属分部"
@@ -377,14 +358,13 @@
           </el-col>
         </el-row>
         <el-row>
-                <el-col :span="24">
+          <el-col :span="24">
             <el-form-item
               label="员工角色"
               prop="roleIds"
               :label-width="formLabelWidth"
             >
               <select-all
-
                 v-model.trim="form.roleIds"
                 placeholder="请选择员工角色"
                 clearable
@@ -402,14 +382,14 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-alert
+        <!-- <el-alert
           style="margin: 10px 0"
           title="OA信息"
           :closable="false"
           type="info"
         >
-        </el-alert>
-        <el-row>
+        </el-alert> -->
+        <!-- <el-row>
           <el-col :span="12">
             <el-form-item
               label="所属部门"
@@ -417,7 +397,6 @@
               :label-width="formLabelWidth"
             >
               <el-cascader
-
                 v-model="form.deptIds"
                 placeholder="请选择所属部门"
                 clearable
@@ -437,7 +416,6 @@
               :label-width="formLabelWidth"
             >
               <el-cascader
-
                 v-model="form.deptId"
                 placeholder="请选择社保分部"
                 clearable
@@ -447,31 +425,18 @@
                 :collapse-tags="true"
                 :props="{ checkStrictly: false }"
               ></el-cascader>
-              <!-- <el-select filterable
-                     clearable
-                     placeholder="请选择社保分部"
-                     collapse-tags
-                     v-model.trim="form.deptId">
-            <el-option v-for="item in organList"
-                       :key="item.id"
-                       :label="item.name"
-                       :value="item.id"></el-option>
-          </el-select> -->
             </el-form-item>
           </el-col>
-        </el-row>
+        </el-row> -->
 
-        <div v-for="(postDeptIds, index) in form.postDeptIds" :key="index">
+        <!-- <div v-for="(postDeptIds, index) in form.postDeptIds" :key="index">
           <el-form-item
             :label="'岗位管理' + (index + 1)"
             :label-width="formLabelWidth"
             class="setWidth"
             :prop="'postDeptIds.' + index + '.postId'"
           >
-            <!-- :rules="[{ required: true, message: '请选择所属岗位', trigger: 'change' }]"  衔接老师,不用设置 -->
-            <!-- 所属岗位(必填) -->
             <el-select
-
               filterable
               clearable
               placeholder="所属岗位"
@@ -491,9 +456,7 @@
             style="margin: 0 10px; width: 190px !important"
             :prop="'postDeptIds.' + index + '.deptIds'"
           >
-            <!-- 管理部门(非必填) -->
             <el-cascader
-
               v-model="postDeptIds.deptIds"
               placeholder="管理部门"
               clearable
@@ -504,24 +467,22 @@
             ></el-cascader>
           </el-form-item>
           <el-button
-
             icon="el-icon-minus"
             circle
             v-if="form.postDeptIds.length > 1"
             @click.prevent="removePostDept(postDeptIds)"
           ></el-button>
           <el-button
-
             icon="el-icon-plus"
             @click.prevent="addPostDept"
             circle
             style="margin-left: 5px"
           ></el-button>
-        </div>
+        </div> -->
       </el-form>
       <span slot="footer" class="dialog-footer">
-        <el-button  @click="roleStatus = false">取 消</el-button>
-        <el-button  @click="onRoleSubmit('ruleForm')" type="primary"
+        <el-button @click="roleStatus = false">取 消</el-button>
+        <el-button @click="onRoleSubmit('ruleForm')" type="primary"
           >确 定</el-button
         >
       </span>
@@ -553,7 +514,6 @@
           ]"
         >
           <el-select
-
             v-model.trim="educationForm.targetUserId"
             clearable
             filterable
@@ -568,12 +528,8 @@
         </el-form-item>
       </el-form>
       <span slot="footer" class="dialog-footer">
-        <el-button  @click="educationViseble = false"
-          >取 消</el-button
-        >
-        <el-button  @click="submitEducation" type="primary"
-          >确 定</el-button
-        >
+        <el-button @click="educationViseble = false">取 消</el-button>
+        <el-button @click="submitEducation" type="primary">确 定</el-button>
       </span>
     </el-dialog>
   </div>
@@ -864,32 +820,32 @@ export default {
       //   console.log(e);
       // }
 
-      getDepts({ rows: 9999 }).then((res) => {
-        if (res.code == 200 && res.data && res.data.length > 0) {
-          const depts = res.data || [];
-          const formatArr = [];
-          depts.forEach((dep) => {
-            formatArr.push({
-              value: dep.deptId,
-              label: dep.deptName,
-              children: this.normalizer(dep),
-            });
-          });
-          this.deptList = formatArr;
-        }
-      });
+      // getDepts({ rows: 9999 }).then((res) => {
+      //   if (res.code == 200 && res.data && res.data.length > 0) {
+      //     const depts = res.data || [];
+      //     const formatArr = [];
+      //     depts.forEach((dep) => {
+      //       formatArr.push({
+      //         value: dep.deptId,
+      //         label: dep.deptName,
+      //         children: this.normalizer(dep),
+      //       });
+      //     });
+      //     this.deptList = formatArr;
+      //   }
+      // });
       // 岗位
-      getPosts({ rows: 9999 }).then((res) => {
-        if (res.code == 200 && res.data && res.data.length > 0) {
-          this.postList = [];
-          res.data.forEach((item) => {
-            this.postList.push({
-              label: item.postName,
-              value: item.postId,
-            });
-          });
-        }
-      });
+      // getPosts({ rows: 9999 }).then((res) => {
+      //   if (res.code == 200 && res.data && res.data.length > 0) {
+      //     this.postList = [];
+      //     res.data.forEach((item) => {
+      //       this.postList.push({
+      //         label: item.postName,
+      //         value: item.postId,
+      //       });
+      //     });
+      //   }
+      // });
       this.$store.dispatch("setBranchs");
     },
     onDeptChange(value) {

+ 3 - 3
src/views/categroyManager/subjectCategroyList.vue

@@ -5,7 +5,7 @@
       <div class="squrt"></div>
       声部分类管理
     </h2>
-       <auth auths="subject/upset/insert">
+       <auth auths="subject/upset/insertCate">
     <el-button @click="addCategory" type="primary">添加</el-button>
        </auth>
     <div class="m-core">
@@ -55,12 +55,12 @@
             <template slot-scope="scope">
               <div>
                 <!-- v-permission="'subject/upset/del' -->
-                <auth auths="subject/upset/insert">
+                <auth auths="subject/upset/resetCate">
                 <el-button type="text" @click="resetSubjectCategory(scope.row)"
                   >修改</el-button
                 >
                 </auth>
-                   <auth auths="subject/upset/del">
+                   <auth auths="subject/upset/delCate">
                 <el-button type="text" @click="removeSubjectCategory(scope.row)"
                   >删除</el-button
                 >

+ 2 - 2
src/views/courseRulersManager/components/teamRules.vue

@@ -102,7 +102,7 @@
             提醒教务老师安排下学期课程。
           </el-form-item>
         </el-row>
-        <el-row>
+        <!-- <el-row>
           <el-form-item
             prop="99"
             :rules="[
@@ -119,7 +119,7 @@
             </el-input>
             自动创建续费。
           </el-form-item>
-        </el-row>
+        </el-row> -->
       </el-form>
 
       <el-button  type="primary" @click="save" class="saveBtn"

+ 254 - 233
src/views/setSilder/addSilder.vue

@@ -2,195 +2,211 @@
   <div class="m-container">
     <!-- <h2><div class="squrt"></div>侧边栏管理
     </h2> -->
+
     <div class="m-core slider-container">
-      <div style="position: fixed; z-index: 100; top: 155px;left: 245px;right: 30px">
-        <el-input placeholder="请输入关键词" v-model="keyword" clearable>
-          <el-button
-            v-permission="'menu/add'"
-            @click='onOperation("create")'
-            slot="append"
-          >添加按钮</el-button>
-        </el-input>
+
+      <div
+        style="
+          position: fixed;
+          z-index: 100;
+          top: 155px;
+          right: 75px;
+        "
+      >
+          <el-button v-permission="'menu/add'" @click="onOperation('create')"
+          >添加按钮</el-button
+        >
+        <!-- <el-input placeholder="请输入关键词" v-model="keyword" clearable>
+
+     </el-input> -->
       </div>
       <div class="tableWrap">
-        <el-table :data="tableList"
-              style="width: 100%;margin-bottom: 20px;margin-top: 40px;"
-              row-key="id"
-              border
-              :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
-          <el-table-column width="300px"
-                          prop="name"
-                          label="菜单名称">
+
+        <el-table
+          :data="tableList"
+          style="width: 100%; margin-bottom: 20px; margin-top: 40px"
+          row-key="id"
+          border
+          :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
+        >
+          <el-table-column width="300px" prop="name" label="菜单名称">
           </el-table-column>
-          <el-table-column prop="id"
-                          width="100px"
-                          label="元素ID">
+          <el-table-column prop="id" width="100px" label="元素ID">
           </el-table-column>
-          <el-table-column label="菜单类型"
-                          width="100px">
+          <el-table-column label="菜单类型" width="100px">
             <template slot-scope="scope">
-              {{ scope.row.type == 1 ? '按钮' : '菜单' }}
+              {{ scope.row.type == 1 ? "按钮" : "菜单" }}
             </template>
           </el-table-column>
-          <el-table-column prop="sort"
-                          width="100px"
-                          label="排序">
-          </el-table-column>
-          <el-table-column prop="path"
-                          label="文件路径">
+          <el-table-column prop="sort" width="100px" label="排序">
           </el-table-column>
-          <el-table-column prop="parentPermission"
-                          label="高亮路径">
+          <el-table-column prop="path" label="文件路径"> </el-table-column>
+          <el-table-column prop="parentPermission" label="高亮路径">
           </el-table-column>
-          <el-table-column prop="permission"
-                          label="接口权限">
+          <el-table-column prop="permission" label="接口权限">
           </el-table-column>
-          <el-table-column prop="memo"
-                          label="页面权限">
-          </el-table-column>
-          <el-table-column prop="hid"
-                          width="100px"
-                          label="是否隐藏">
+          <el-table-column prop="memo" label="页面权限"> </el-table-column>
+          <el-table-column prop="hid" width="100px" label="是否隐藏">
             <template slot-scope="scope">
-              {{ scope.row.hid == 1 ? '隐藏' : '不隐藏' }}
+              {{ scope.row.hid == 1 ? "隐藏" : "不隐藏" }}
             </template>
           </el-table-column>
-          <el-table-column width="100px"
-                          label="是否缓存">
+          <el-table-column width="100px" label="是否缓存">
             <template slot-scope="scope">
               <div>
-                {{ parseInt(scope.row.keepAlive)  == '0' ? '缓存' : '不缓存' }}
+                {{ parseInt(scope.row.keepAlive) == "0" ? "缓存" : "不缓存" }}
               </div>
             </template>
           </el-table-column>
           <el-table-column label="操作">
             <template slot-scope="scope">
-              <el-button @click="onOperation('update', scope.row)" v-permission="'menu/update'"
-                        type="text">修改</el-button>
-              <el-button @click="onDelete(scope.row)" v-permission="'menu/del'"
-                        type="text">删除</el-button>
+              <el-button
+                @click="onOperation('update', scope.row)"
+                v-permission="'menu/update'"
+                type="text"
+                >修改</el-button
+              >
+              <el-button
+                @click="onDelete(scope.row)"
+                v-permission="'menu/del'"
+                type="text"
+                >删除</el-button
+              >
             </template>
           </el-table-column>
         </el-table>
       </div>
-      <el-dialog title="侧边栏管理"
-               :close-on-click-modal="false"
-               :visible.sync="branchStatus"
-               default-expand-all
-               @close="onFormClose('ruleForm')"
-               width="500px">
-      <el-form :model="form"
-               :rules="rules"
-               ref="ruleForm">
-        <el-form-item label="菜单类型"
-                      :label-width="formLabelWidth">
-          <el-select v-model.trim.number="form.type" style="width: 100% !important;">
-            <el-option label="菜单"
-                       :value="0"></el-option>
-            <el-option label="按钮"
-                       :value="1"></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="菜单名"
-                      prop="name"
-                      :label-width="formLabelWidth">
-          <el-input v-model.trim="form.name"
-                    autocomplete="off"></el-input>
-        </el-form-item>
-        <el-form-item label="文件路径"
-                      prop="path"
-                      v-if="form.type == 0"
-                      :label-width="formLabelWidth">
-          <el-input v-model.trim="form.path"
-                    autocomplete="off"></el-input>
-        </el-form-item>
-        <el-form-item label="接口权限"
-                      prop="permission"
-                      :label-width="formLabelWidth">
-          <el-input v-model.trim="form.permission"
-                    autocomplete="off"></el-input>
-        </el-form-item>
-        <el-form-item label="页面权限"
-                      prop="memo"
-                      :label-width="formLabelWidth">
-          <el-input v-model.trim="form.memo"
-                    autocomplete="off"></el-input>
-        </el-form-item>
-        <el-form-item label="高亮路径"
-                      v-if="form.type == 0"
-                      :label-width="formLabelWidth">
-          <el-input v-model.trim="form.parentPermission"
-                    autocomplete="off"></el-input>
-        </el-form-item>
-        <el-form-item label="组件名"
-                      prop="component"
-                      v-if="form.type == 0"
-                      :label-width="formLabelWidth">
-          <el-input v-model.trim="form.component"
-                    autocomplete="off"></el-input>
-        </el-form-item>
-        <el-form-item label="父元素ID"
-                      prop="parentId"
-                      :label-width="formLabelWidth">
-          <el-cascader v-model="form.parentId"
-                       style="width:100%"
-                       :options="cascaderList"
-                       :props="optionProps"></el-cascader>
-        </el-form-item>
-        <el-form-item label="是否隐藏"
-                      :label-width="formLabelWidth">
-          <el-select v-model.trim="form.hid" style="width: 100% !important;">
-            <el-option label="否"
-                       :value="0"></el-option>
-            <el-option label="是"
-                       :value="1"></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="是否缓存"
-                      :label-width="formLabelWidth">
-          <el-select v-model.trim="form.keepAlive" style="width: 100% !important;">
-            <el-option label="是"
-                       :value="0"></el-option>
-            <el-option label="否"
-                      :value="1"></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="ICON名称"
-                      prop="icon"
-                      :label-width="formLabelWidth">
-          <el-input v-model.trim="form.icon"
-                    autocomplete="off"></el-input>
-        </el-form-item>
-        <el-form-item label="排序"
-                      :label-width="formLabelWidth">
-          <el-input v-model.trim="form.sort"
-                    autocomplete="off"></el-input>
-        </el-form-item>
-      </el-form>
-      <span slot="footer"
-            class="dialog-footer">
-        <el-button @click="branchStatus = false">取 消</el-button>
-        <el-button @click="onBranchSubmit"
-                   type="primary">确 定</el-button>
-      </span>
-    </el-dialog>
+      <el-dialog
+        title="侧边栏管理"
+        :close-on-click-modal="false"
+        :visible.sync="branchStatus"
+        default-expand-all
+        @close="onFormClose('ruleForm')"
+        width="500px"
+      >
+        <el-form :model="form" :rules="rules" ref="ruleForm">
+          <el-form-item label="菜单类型" :label-width="formLabelWidth">
+            <el-select
+              v-model.trim.number="form.type"
+              style="width: 100% !important"
+            >
+              <el-option label="菜单" :value="0"></el-option>
+              <el-option label="按钮" :value="1"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item
+            label="菜单名"
+            prop="name"
+            :label-width="formLabelWidth"
+          >
+            <el-input v-model.trim="form.name" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item
+            label="文件路径"
+            prop="path"
+            v-if="form.type == 0"
+            :label-width="formLabelWidth"
+          >
+            <el-input v-model.trim="form.path" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item
+            label="接口权限"
+            prop="permission"
+            :label-width="formLabelWidth"
+          >
+            <el-input
+              v-model.trim="form.permission"
+              autocomplete="off"
+            ></el-input>
+          </el-form-item>
+          <el-form-item
+            label="页面权限"
+            prop="memo"
+            :label-width="formLabelWidth"
+          >
+            <el-input v-model.trim="form.memo" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item
+            label="高亮路径"
+            v-if="form.type == 0"
+            :label-width="formLabelWidth"
+          >
+            <el-input
+              v-model.trim="form.parentPermission"
+              autocomplete="off"
+            ></el-input>
+          </el-form-item>
+          <el-form-item
+            label="组件名"
+            prop="component"
+            v-if="form.type == 0"
+            :label-width="formLabelWidth"
+          >
+            <el-input
+              v-model.trim="form.component"
+              autocomplete="off"
+            ></el-input>
+          </el-form-item>
+          <el-form-item
+            label="父元素ID"
+            prop="parentId"
+            :label-width="formLabelWidth"
+          >
+            <el-cascader
+              v-model="form.parentId"
+              style="width: 100%"
+              :options="cascaderList"
+              :props="optionProps"
+            ></el-cascader>
+          </el-form-item>
+          <el-form-item label="是否隐藏" :label-width="formLabelWidth">
+            <el-select v-model.trim="form.hid" style="width: 100% !important">
+              <el-option label="否" :value="0"></el-option>
+              <el-option label="是" :value="1"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="是否缓存" :label-width="formLabelWidth">
+            <el-select
+              v-model.trim="form.keepAlive"
+              style="width: 100% !important"
+            >
+              <el-option label="是" :value="0"></el-option>
+              <el-option label="否" :value="1"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item
+            label="ICON名称"
+            prop="icon"
+            :label-width="formLabelWidth"
+          >
+            <el-input v-model.trim="form.icon" autocomplete="off"></el-input>
+          </el-form-item>
+          <el-form-item label="排序" :label-width="formLabelWidth">
+            <el-input v-model.trim="form.sort" autocomplete="off"></el-input>
+          </el-form-item>
+        </el-form>
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="branchStatus = false">取 消</el-button>
+          <el-button @click="onBranchSubmit" type="primary">确 定</el-button>
+        </span>
+      </el-dialog>
     </div>
   </div>
 </template>
 <script>
-import { addSilder, getSilder, deleteSilder, resetSilder } from '@/api/silder'
-import { debounce } from 'lodash'
+import { addSilder, getSilder, deleteSilder, resetSilder } from "@/api/silder";
+import { debounce } from "lodash";
 export default {
-  name: 'addSilder',
-  data () {
+  name: "addSilder",
+  data() {
     return {
-      keyword: '',
+      keyword: "",
       tableListFilter: [],
       tableList: [], // 数据列表
       cascaderList: [], // 父级元素
-      formLabelWidth: '100px',
+      formLabelWidth: "100px",
       branchStatus: false,
-      operationType: 'create',
+      operationType: "create",
       form: {
         name: null,
         path: null,
@@ -202,26 +218,32 @@ export default {
         type: 0,
         icon: null, // 图标名称
         parentPermission: null,
-        keepAlive: 1
+        keepAlive: 1,
       },
       rules: {
         name: [{ required: true, message: "请输入菜单名", trigger: "blur" }],
         path: [{ required: true, message: "请输入文件路径", trigger: "blur" }],
-        component: [{ required: true, message: "请输入组件名", trigger: "blur" }],
-        permission: [{ required: true, message: "请输入接口权限", trigger: "blur" }],
+        component: [
+          { required: true, message: "请输入组件名", trigger: "blur" },
+        ],
+        permission: [
+          { required: true, message: "请输入接口权限", trigger: "blur" },
+        ],
         memo: [{ required: true, message: "请输入页面权限", trigger: "blur" }],
-        parentId: [{ required: true, message: "请输入父元素ID", trigger: "blur" }],
+        parentId: [
+          { required: true, message: "请输入父元素ID", trigger: "blur" },
+        ],
       },
       optionProps: {
-        value: 'id',
-        label: 'name',
-        children: 'children',
-        checkStrictly: true
-      }
-    }
+        value: "id",
+        label: "name",
+        children: "children",
+        checkStrictly: true,
+      },
+    };
   },
-  mounted () {
-    this.lookSilder() // 查询
+  mounted() {
+    this.lookSilder(); // 查询
   },
   methods: {
     /**
@@ -238,21 +260,20 @@ export default {
       }
      */
     filterList(list, key) {
-      return list.filter(item => {
-        const isVisible = (
-          (item.name || '').indexOf(key) > -1 ||
-          (item.memo || '').indexOf(key) > -1 ||
-          (item.memo || '').indexOf(key) > -1 ||
-          (item.permission || '').indexOf(key) > -1
-        )
-        const child = this.filterList(item.children || [], key)
-        return isVisible || child.length
-      })
+      return list.filter((item) => {
+        const isVisible =
+          (item.name || "").indexOf(key) > -1 ||
+          (item.memo || "").indexOf(key) > -1 ||
+          (item.memo || "").indexOf(key) > -1 ||
+          (item.permission || "").indexOf(key) > -1;
+        const child = this.filterList(item.children || [], key);
+        return isVisible || child.length;
+      });
     },
-    onOperation (type, row) {
-      this.branchStatus = true
-      this.operationType = type
-      if (type == 'update') {
+    onOperation(type, row) {
+      this.branchStatus = true;
+      this.operationType = type;
+      if (type == "update") {
         this.form = {
           name: row.name,
           path: row.path,
@@ -266,17 +287,17 @@ export default {
           type: Number(row.type),
           parentPermission: row.parentPermission,
           keepAlive: Number(row.keepAlive),
-          memo: row.memo
-        }
+          memo: row.memo,
+        };
       }
     },
-    onBranchSubmit (type) {
+    onBranchSubmit(type) {
       // ruleForm
-      this.$refs["ruleForm"].validate(valid => {
+      this.$refs["ruleForm"].validate((valid) => {
         if (valid) {
-          let form = this.form
+          let form = this.form;
 
-          if (this.operationType == 'create') {
+          if (this.operationType == "create") {
             addSilder({
               path: form.path,
               component: form.component,
@@ -289,49 +310,48 @@ export default {
               type: form.type,
               parentPermission: form.parentPermission,
               keepAlive: form.keepAlive,
-              memo: form.memo
-            }).then(res => {
+              memo: form.memo,
+            }).then((res) => {
               if (res.code == 200) {
-                this.$message.success('添加成功')
-                this.lookSilder()
-                this.branchStatus = false
+                this.$message.success("添加成功");
+                this.lookSilder();
+                this.branchStatus = false;
               }
-            })
-          } else if (this.operationType == 'update') {
-            if(typeof form.parentId === 'object') {
-              form.parentId = form.parentId.pop()
+            });
+          } else if (this.operationType == "update") {
+            if (typeof form.parentId === "object") {
+              form.parentId = form.parentId.pop();
             }
-            resetSilder(form).then(res => {
+            resetSilder(form).then((res) => {
               if (res.code == 200) {
-                this.$message.success('修改成功')
-                this.lookSilder()
-                this.branchStatus = false
+                this.$message.success("修改成功");
+                this.lookSilder();
+                this.branchStatus = false;
               }
-            })
+            });
           }
         } else {
           return false;
         }
       });
-
     },
 
-    lookSilder () {
-      getSilder().then(res => {
-        if (res.code != 200) return
-        this.tableList = this.setTableData(res.data)
-        this.cascaderList = this.setTableData(res.data)
+    lookSilder() {
+      getSilder().then((res) => {
+        if (res.code != 200) return;
+        this.tableList = this.setTableData(res.data);
+        this.cascaderList = this.setTableData(res.data);
         this.cascaderList.unshift({
           id: 0,
-          name: '根结点',
-          children: []
-        })
-      })
+          name: "根结点",
+          children: [],
+        });
+      });
     },
-    setTableData (result) {
-      let list = []
-      list = result.map(res => {
-        let tempList = {}
+    setTableData(result) {
+      let list = [];
+      list = result.map((res) => {
+        let tempList = {};
         tempList = {
           id: res.id,
           name: res.name,
@@ -347,25 +367,27 @@ export default {
           type: res.type,
           keepAlive: res.keepAlive,
           parentPermission: res.parentPermission,
-          memo: res.memo
-        }
+          memo: res.memo,
+        };
         if (res.sysMenus && res.sysMenus.length > 0) {
-          tempList.children = this.setTableData(res.sysMenus)
+          tempList.children = this.setTableData(res.sysMenus);
         }
-        return tempList
-      })
-      return list
+        return tempList;
+      });
+      return list;
     },
-    onDelete (row) { // 删除左则菜单
-      deleteSilder(row.id).then(res => {
+    onDelete(row) {
+      // 删除左则菜单
+      deleteSilder(row.id).then((res) => {
         if (res.code == 200) {
-          this.$message.success('删除成功')
-          this.lookSilder()
-          this.branchStatus = false
+          this.$message.success("删除成功");
+          this.lookSilder();
+          this.branchStatus = false;
         }
-      })
+      });
     },
-    onFormClose (formName) { // 关闭弹窗重置验证
+    onFormClose(formName) {
+      // 关闭弹窗重置验证
       this.form = {
         name: null,
         path: null,
@@ -377,13 +399,12 @@ export default {
         type: 0,
         icon: null,
         parentPermission: null,
-        keepAlive: 1
-      }
-      this.$refs[formName].resetFields()
-    }
-
+        keepAlive: 1,
+      };
+      this.$refs[formName].resetFields();
+    },
   },
-}
+};
 </script>
 <style lang="scss">
 .slider-container {