系统管理开发,bug修复

dev_2022-05-11
yujialong 3 years ago
parent 188891de52
commit abd8350b60
  1. 31
      src/api/index.js
  2. 34
      src/layouts/header/index.vue
  3. 1
      src/main.js
  4. 5
      src/pages/course/add/index.vue
  5. 2
      src/pages/course/contentSettings/index.vue
  6. 2
      src/pages/course/preview/index.vue
  7. 3
      src/pages/evaluation/list/index.vue
  8. 3
      src/pages/match/manage/matchProgress.vue
  9. 667
      src/pages/setting/list/index.vue
  10. 44
      src/pages/student/list/index.vue
  11. 26
      src/pages/system/list/index.vue
  12. 174
      src/pages/system/list/role.vue
  13. 804
      src/pages/system/list/staff.vue
  14. 276
      src/pages/system/list/staffSide.vue
  15. 3
      src/pages/system/list/stafftree.vue
  16. 4
      src/router/index.js
  17. 27
      src/router/permission.js
  18. 9
      src/router/routes.js
  19. 4
      src/setting.js

@ -173,7 +173,38 @@ export default {
sendPhoneOrEmailCode: `${host}/users/users/userAccount/sendPhoneOrEmailCode`,// 更换手机号或邮箱--发送手机验证码
// 系统设置
// 员工组织架构
professionalList: `${host}occupationlab/staff/professionalList`, //查询专业列表
staffGradeList: `${host}occupationlab/staff/staffGradeList`, //根据专业id查询年级
saveProfessional: `${host}occupationlab/staff/saveProfessional`, //新增专业
updateProfessional: `${host}occupationlab/staff/updateProfessional`, //编辑专业
deleteProfessional: `${host}occupationlab/staff/deleteProfessional`, //删除专业
saveGrade: `${host}occupationlab/staff/saveGrade`, //新增年级
updateGrade: `${host}occupationlab/staff/updateGrade`, //编辑年级
deleteGrade: `${host}occupationlab/staff/deleteGrade`, //删除年级
// 员工管理
saveStaff: `${host}occupationlab/staff/saveStaff`, //新增员工
staffDetail: `${host}occupationlab/staff/staffDetail`, //员工详情
modifyStaff: `${host}occupationlab/staff/modifyStaff`, //编辑员工
delStaff: `${host}occupationlab/staff/delStaff`, //删除员工
staffList: `${host}occupationlab/staff/staffList`, //员工列表
staffTemplate: `http://39.108.250.202/template/职站员工用户导入模板.xlsx`, //职站员工用户导入模板
exportFailureStaff: `${host}occupationlab/staff/exportFailure`, //批量导入员工失败数据导出
importStaff: `${host}occupationlab/staff/importStaff`, //批量导入员工
// 角色管理
batchRemove: `${host}users/role/batchRemove`, //批量删除角色
checkRoleIsExist: `${host}users/role/checkRoleIsExist`, //判断该角色是否存在
delRoleByAccountId: `${host}users/role/delRoleByAccountId`, //删除某用户下的某个角色
roleList: `${host}users/role/list`, //角色分页列表查询
obtainDetails: `${host}users/role/obtainDetails`, //获取角色详情
saveOrUpdate: `${host}users/role/saveOrUpdate`, //新增或更新角色
queryAllMenus: `${host}users/users/permission/queryAllMenus`, //查询所有菜单
// 系统logo设置
logoDetail: `${host}occupationlab/sys/logo/detail`, //查看系统设置信息
logoSave: `${host}occupationlab/sys/logo/save`, //新增系统设置信息
logoUpdate: `${host}occupationlab/sys/logo/update`, //编辑系统设置信息

@ -1,7 +1,9 @@
<template>
<div class="header">
<img class="logo hh" v-if="isHh" src="@/assets/img/logo-hh.png" />
<img class="logo" v-else src="@/assets/img/logo.png" />
<div>
<img class="logo" :src="logoUrl" />
<span class="title">{{title}}</span>
</div>
<div class="action">
<div class="user" @click="toPersonal">
<el-avatar :size="40" :src="avatar"></el-avatar>
@ -15,12 +17,12 @@
<script>
import { mapState, mapActions } from "vuex";
import util from "@/libs/util";
import Setting from "@/setting";
export default {
data() {
return {
isHh: Setting.isHh
title: "",
logoUrl: ""
};
},
computed: {
@ -32,7 +34,7 @@ export default {
])
},
mounted() {
this.getSystemDetail();
},
methods: {
...mapActions("user", [
@ -40,7 +42,17 @@ export default {
]),
toPersonal() {
this.$router.push("/setting/person");
}
},
getSystemDetail () {
this.$get(this.api.logoDetail).then(res => {
if (res.status === 200 && res.data) {
this.title = res.data.title;
this.logoUrl = res.data.logoUrl;
} else {
util.errorMsg(res.message);
}
}).catch(res => {});
},
}
};
</script>
@ -57,11 +69,11 @@ export default {
.logo {
height: 50px;
margin-left: 20px;
&.hh {
width: 220px;
}
margin: 0 20px;
}
.title {
font-size: 18px;
font-weight: bold;
}
.action {

@ -12,7 +12,6 @@ import { post, get, del, put } from "@/plugins/requests/index.js";
import api from "@/api";
import store from "@/store";
import Setting from "@/setting";
import permission from "@/router/permission";
// 插件
import plugins from "@/plugins";

@ -164,8 +164,7 @@ export default {
});
},
//
handleExceed(files, fileList) {
handleExceed(files, fileList) { //
util.warningMsg("当前限制选择 1 个文件,如需更换,请删除上一个文件再重新选择!");
},
uploadSuccess(res, file, fileList) {
@ -189,7 +188,7 @@ export default {
}).catch(res => {
});
},
goback() {
goback() { //
if (this.isDetail) {
this.$router.back();
} else {

@ -462,7 +462,7 @@ export default {
// console.log(JSON.stringify(row));
if (this.transferType(row.fileType) == "视频") {
this.$get(`${this.api.getPlayAuth}/${row.fileId}`).then(res => {
this.playAuth = res.playAuth;
this.playAuth = res.data.playAuth;
if (this.player) {
this.player.replayByVidAndPlayAuth(row.fileId, this.playAuth);
} else {

@ -155,7 +155,7 @@ export default {
this.iframeSrc = "";
if (this.transferType(row.fileType) == "视频") {
this.$get(`${this.api.getPlayAuth}/${row.fileId}`).then(res => {
this.playAuth = res.playAuth;
this.playAuth = res.data.playAuth;
this.$nextTick(() => {
if (this.player) {
this.player.replayByVidAndPlayAuth(row.fileId, this.playAuth);

@ -15,8 +15,7 @@
</el-radio-group>
</li>
<li>
<el-input placeholder="请输入题干" prefix-icon="el-icon-search" v-model="keyword"
clearable></el-input>
<el-input placeholder="请输入题干" prefix-icon="el-icon-search" v-model="keyword" clearable></el-input>
</li>
</ul>
<div>

@ -96,9 +96,6 @@ export default {
util.warningMsg("请填写标题");
}
},
entry() {
this.$router.push("/permission");
},
handleSelectionChange(val) {
this.multipleSelection = val;
},

@ -1,77 +1,45 @@
<template>
<div class="wrap">
<!-- 头像部分 -->
<div class="header">
<el-avatar :size="80" :src="this.avatar" class="Headtop"></el-avatar>
<div style="color:#9278FF;font-size:14px;font-family:MicrosoftYaHei;margin-top:5px;">
<el-upload
class="upload-demo"
:headers="{token}"
:action="this.api.updateUserAvatars"
name="file"
:limit="1"
:on-success="getRes"
>
<div>点击更改头像</div>
</el-upload>
<div class="wrap">
<div class="topBack">
<div class="back" @click="goBack"><i class="el-icon-arrow-left"></i>返回</div>
</div>
</div>
<!-- 用户信息 -->
<div class="card" style="margin-top: -65px">
<p class="block-title" style="display: flex;justify-content: space-between;align-items: center;">
<span><img src="@/assets/img/person/user.png" alt=""> 用户信息</span>
<el-button type="primary" @click="save">更新资料</el-button>
</p>
<p class="meta-title">
<span>个人信息</span>
</p>
<div class="information">
<div class="line">
<div class="item">
<span>姓名</span>
<input id="username" class="username" placeholder="请输入姓名" type="text" v-model="personalInformation.userName" />
<!-- <label for="username">
<i class="el-icon-edit"></i>
</label> -->
</div>
<div class="item">
<span>所在国家</span>
<el-select
v-model="personalInformation.countries"
placeholder
>
<el-option
v-for="item in countryList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<!-- 头像部分 -->
<div class="header">
<el-avatar :size="80" :src="this.avatar" class="Headtop"></el-avatar>
<div style="color:#9278FF;font-size:14px;font-family:MicrosoftYaHei;margin-top:5px;">
<el-upload
class="upload-demo"
:headers="{token}"
:action="this.api.uploadUserAvatars"
name="file"
:limit="1"
:on-success="getRes"
>
<div>点击更改头像</div>
</el-upload>
</div>
<div class="line">
<div class="item">
<span>性别</span>
<div class="sexRadio">
<el-radio v-model="personalInformation.sex" :label="1"></el-radio>
<el-radio v-model="personalInformation.sex" :label="2"></el-radio>
</div>
<!-- 用户信息 -->
<div class="card" style="margin-top: -65px">
<p class="block-title" style="display: flex;justify-content: space-between;align-items: center;">
<span><img src="@/assets/img/person/user.png" alt=""> 用户信息</span>
<el-button type="primary" @click="save">更新资料</el-button>
</p>
<p class="meta-title">
<span>个人信息</span>
</p>
<div class="information">
<div class="line">
<div class="item">
<span>姓名</span>
<input id="username" class="username" placeholder="请输入姓名" type="text" v-model="personalInformation.userName" />
<!-- <label for="username">
<i class="el-icon-edit"></i>
</label> -->
</div>
<!-- <el-select
v-model="personalInformation.sex"
placeholder
>
<el-option
v-for="item in sexList"
:key="item.value"
:label="item.name"
:value="item.value"
></el-option>
</el-select> -->
</div>
<div class="item">
<span>所在地</span>
<div class="selects">
<div class="item">
<span>所在国家</span>
<el-select
v-model="personalInformation.countries"
placeholder
@ -83,306 +51,342 @@
:value="item.value"
></el-option>
</el-select>
<el-select
v-model="personalInformation.provinceId"
placeholder
@change="id => getCity(id,1)"
>
<el-option
v-for="item in provinceList"
:key="item.provinceId"
:label="item.provinceName"
:value="item.provinceId"
></el-option>
</el-select>
<el-select
v-model="personalInformation.cityId"
placeholder
:disabled="personalInformation.provinceId ? false : true"
>
<el-option
v-for="item in cityList"
:key="item.cityId"
:label="item.cityName"
:value="item.cityId"
></el-option>
</el-select>
</div>
</div>
</div>
<div class="line">
<div class="item">
<span>出生年月日</span>
<el-date-picker
v-model="personalInformation.dateBirth"
:clearable="false"
class="block-right"
type="date">
</el-date-picker>
</div>
<div class="item">
<span>证件</span>
<input onkeyup="value=value.replace(/[^\w\.\/]/ig,'')" id="idnumber" class="idnumber" placeholder="请输入证件" type="text" v-model="personalInformation.idNumber" />
</div>
</div>
<div class="line">
<div class="item">
<span>教育程度</span>
<el-select
v-model="personalInformation.educationDegree"
placeholder="请选择教育程度"
>
<el-option
v-for="(item,index) in educationDegreeList"
:key="index"
:label="item.name"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="item">
<span>当前所在学校</span>
<input id="schoolName" class="school" disabled placeholder="所在学校" type="text" v-model="personalInformation.schoolName" />
</div>
</div>
<!-- 个人档案 -->
<p class="meta-title plus">
<span>个人档案</span>
<el-button type="text" icon="el-icon-plus" @click="addArch">新增</el-button>
</p>
</div>
<div class="information" style="margin-top: 20px;">
<div class="archives" v-for="(archive,index) in archivesList" :key="index" v-show="index == 0 || showArch">
<div class="line">
<div class="item">
<span>职业</span>
<el-select
v-model="archive.personalCareerId"
placeholder="选择职业"
<span>性别</span>
<div class="sexRadio">
<el-radio v-model="personalInformation.sex" :label="1"></el-radio>
<el-radio v-model="personalInformation.sex" :label="2"></el-radio>
</div>
<!-- <el-select
v-model="personalInformation.sex"
placeholder
>
<el-option
v-for="item in occupationList"
v-for="item in sexList"
:key="item.value"
:label="item.label"
:label="item.name"
:value="item.value"
></el-option>
</el-select>
</el-select> -->
</div>
<div class="item">
<span>国家</span>
<el-select
v-model="personalInformation.countries"
placeholder
>
<el-option
v-for="item in countryList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<span>所在地</span>
<div class="selects">
<el-select
v-model="personalInformation.countries"
placeholder
>
<el-option
v-for="item in countryList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<el-select
v-model="personalInformation.provinceId"
placeholder
@change="id => getCity(id,1)"
>
<el-option
v-for="item in provinceList"
:key="item.provinceId"
:label="item.provinceName"
:value="item.provinceId"
></el-option>
</el-select>
<el-select
v-model="personalInformation.cityId"
placeholder
:disabled="personalInformation.provinceId ? false : true"
>
<el-option
v-for="item in cityList"
:key="item.cityId"
:label="item.cityName"
:value="item.cityId"
></el-option>
</el-select>
</div>
</div>
</div>
<div class="line">
<div class="item">
<span>学校名称</span>
<el-select
v-model="archive.schoolId"
filterable
placeholder="选择学校"
@change="id => getSchoolName(id,index)"
>
<el-option
v-for="item in schoolList"
:key="item.value"
:label="item.schoolName"
:value="item.schoolId"
></el-option>
</el-select>
<span>出生年月日</span>
<el-date-picker
v-model="personalInformation.dateBirth"
:clearable="false"
class="block-right"
type="date">
</el-date-picker>
</div>
<div class="item">
<span>专业学科</span>
<el-select
v-model="archive.disciplineId"
placeholder="选择专业学科"
@change="id => getItemProfessionalClass(id,index)"
@clear="() => clearItemClass(index)"
>
<el-option
v-for="item in subjectList"
:key="item.value"
:label="item.disciplineName"
:value="item.disciplineId"
></el-option>
</el-select>
<span>证件</span>
<input onkeyup="value=value.replace(/[^\w\.\/]/ig,'')" id="idnumber" class="idnumber" placeholder="请输入证件" type="text" v-model="personalInformation.idNumber" />
</div>
</div>
<div class="line">
<div class="item">
<span>专业类</span>
<span>教育程度</span>
<el-select
v-model="archive.professionalClassId"
placeholder="选择专业类"
:disabled="archive.disciplineId ? false : true"
@change="id => getItemProfessional(id,index)"
@clear="() => clearItemProfess(index)"
v-model="personalInformation.educationDegree"
placeholder="请选择教育程度"
>
<el-option
v-for="item in archive.ProfessionalClassList"
:key="item.professionalClassId"
:label="item.professionalClassName"
:value="item.professionalClassId"
v-for="(item,index) in educationDegreeList"
:key="index"
:label="item.name"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="item">
<span>专业</span>
<el-select
v-model="archive.professionalId"
placeholder="选择专业"
:disabled="archive.professionalClassId ? false : true"
@change="getItemStuGrade"
>
<el-option
v-for="item in archive.ProfessionalList"
:key="item.professionalId"
:label="item.professionalName"
:value="item.professionalId"
></el-option>
</el-select>
<span>当前所在学校</span>
<input id="schoolName" class="school" disabled placeholder="所在学校" type="text" v-model="personalInformation.schoolName" />
</div>
</div>
</div>
</div>
<div class="fold" v-if="archivesList.length > 1">
<img :class="{ 'arrowTransform': showArch, 'arrowTransformReturn': !showArch}" style="width: 21px;height: 17px;" src="@/assets/img/open.png" alt="" @click="foldArch">
</div>
</div>
<!-- 个人档案 -->
<p class="meta-title plus">
<span>个人档案</span>
<el-button type="text" icon="el-icon-plus" @click="addArch">新增</el-button>
</p>
</div>
<div class="card mgb20">
<p class="block-title" style="margin-bottom: 15px">
<span><img src="@/assets/img/person/manag.png" alt=""> 账号信息</span>
</p>
<div class="information">
<div class="line">
<div class="item">
<span>用户账号</span>
<input
id="account"
type="text"
class="username" placeholder="请输入用户账号"
v-model="personalInformation.account"
/>
</div>
<div class="item">
<span>手机号</span>
<div class="btns flex-between">
<span>{{ personalInformation.phone }}</span>
<el-button v-if="personalInformation.phone" type="primary" @click="bindPhone">更换</el-button>
<el-button v-else type="primary" @click="bindPhone">绑定</el-button>
<div class="information" style="margin-top: 20px;">
<div class="archives" v-for="(archive,index) in archivesList" :key="index" v-show="index == 0 || showArch">
<div class="line">
<div class="item">
<span>职业</span>
<el-select
v-model="archive.personalCareerId"
placeholder="选择职业"
>
<el-option
v-for="item in occupationList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
<div class="item">
<span>国家</span>
<el-select
v-model="personalInformation.countries"
placeholder
>
<el-option
v-for="item in countryList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</div>
<div class="line">
<div class="item">
<span>学校名称</span>
<el-select
v-model="archive.schoolId"
filterable
placeholder="选择学校"
@change="id => getSchoolName(id,index)"
>
<el-option
v-for="item in schoolList"
:key="item.value"
:label="item.schoolName"
:value="item.schoolId"
></el-option>
</el-select>
</div>
<div class="item">
<span>专业学科</span>
<el-select
v-model="archive.disciplineId"
placeholder="选择专业学科"
@change="id => getItemProfessionalClass(id,index)"
@clear="() => clearItemClass(index)"
>
<el-option
v-for="item in subjectList"
:key="item.value"
:label="item.disciplineName"
:value="item.disciplineId"
></el-option>
</el-select>
</div>
</div>
<div class="line">
<div class="item">
<span>专业类</span>
<el-select
v-model="archive.professionalClassId"
placeholder="选择专业类"
:disabled="archive.disciplineId ? false : true"
@change="id => getItemProfessional(id,index)"
@clear="() => clearItemProfess(index)"
>
<el-option
v-for="item in archive.ProfessionalClassList"
:key="item.professionalClassId"
:label="item.professionalClassName"
:value="item.professionalClassId"
></el-option>
</el-select>
</div>
<div class="item">
<span>专业</span>
<el-select
v-model="archive.professionalId"
placeholder="选择专业"
:disabled="archive.professionalClassId ? false : true"
@change="getItemStuGrade"
>
<el-option
v-for="item in archive.ProfessionalList"
:key="item.professionalId"
:label="item.professionalName"
:value="item.professionalId"
></el-option>
</el-select>
</div>
</div>
</div>
</div>
<div class="line">
<div class="item">
<span>邮箱</span>
<div class="btns flex-between">
<span>{{ personalInformation.email }}</span>
<el-button v-if="personalInformation.email" type="primary" @click="bindEmail">更换</el-button>
<el-button v-else type="primary" @click="bindEmail">绑定</el-button>
<div class="fold" v-if="archivesList.length > 1">
<img :class="{ 'arrowTransform': showArch, 'arrowTransformReturn': !showArch}" style="width: 21px;height: 17px;" src="@/assets/img/open.png" alt="" @click="foldArch">
</div>
</div>
<div class="card mgb20">
<p class="block-title" style="margin-bottom: 15px">
<span><img src="@/assets/img/person/manag.png" alt=""> 账号信息</span>
</p>
<div class="information">
<div class="line">
<div class="item">
<span>用户账号</span>
<input
id="account"
type="text"
class="username" placeholder="请输入用户账号"
v-model="personalInformation.account"
/>
</div>
<div class="item">
<span>手机号</span>
<div class="btns flex-between">
<span>{{ personalInformation.phone }}</span>
<el-button v-if="personalInformation.phone" type="primary" @click="bindPhone">更换</el-button>
<el-button v-else type="primary" @click="bindPhone">绑定</el-button>
</div>
</div>
</div>
<!-- <div class="item">
<span>微信</span>
<input id="weChat" class="weChat" disabled placeholder="微信" type="text" v-model="personalInformation.weChatID"/>
</div> -->
<div class="item">
<span>密码</span>
<div class="btns flex-between">
<p>******</p>
<el-button type="primary" @click="bindPassword">更换</el-button>
<div class="line">
<div class="item">
<span>邮箱</span>
<div class="btns flex-between">
<span>{{ personalInformation.email }}</span>
<el-button v-if="personalInformation.email" type="primary" @click="bindEmail">更换</el-button>
<el-button v-else type="primary" @click="bindEmail">绑定</el-button>
</div>
</div>
<!-- <div class="item">
<span>微信</span>
<input id="weChat" class="weChat" disabled placeholder="微信" type="text" v-model="personalInformation.weChatID"/>
</div> -->
<div class="item">
<span>密码</span>
<div class="btns flex-between">
<p>******</p>
<el-button type="primary" @click="bindPassword">更换</el-button>
</div>
</div>
<!-- <div class="item"></div> -->
</div>
<!-- <div class="item"></div> -->
</div>
</div>
</div>
<el-dialog
:title="personalInformation.email ? '更换邮箱' : '绑定邮箱'"
:visible.sync="emailVisible"
:close-on-click-modal="false"
@close="closeEmail"
width="30%">
<el-form ref="form" :model="form" label-width="60px">
<el-form-item label="邮箱">
<el-input placeholder="请输入邮箱" v-model="email"></el-input>
</el-form-item>
<el-form-item label="验证码">
<div class="flex-between">
<el-input v-model="emailCode" placeholder="请输入验证码" maxlength="6"></el-input>
<el-button style="margin-left: 10px" type="text" @click="sendEmailCode" :disabled="emailDisabled">{{ emailBtnText }}</el-button>
</div>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-dialog
:title="personalInformation.email ? '更换邮箱' : '绑定邮箱'"
:visible.sync="emailVisible"
:close-on-click-modal="false"
@close="closeEmail"
width="30%">
<el-form ref="form" :model="form" label-width="60px">
<el-form-item label="邮箱">
<el-input placeholder="请输入邮箱" v-model="email"></el-input>
</el-form-item>
<el-form-item label="验证码">
<div class="flex-between">
<el-input v-model="emailCode" placeholder="请输入验证码" maxlength="6"></el-input>
<el-button style="margin-left: 10px" type="text" @click="sendEmailCode" :disabled="emailDisabled">{{ emailBtnText }}</el-button>
</div>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="emailVisible = false"> </el-button>
<el-button type="primary" @click="emailSubmit"> </el-button>
</span>
</el-dialog>
<el-dialog
:title="personalInformation.phone ? '更换手机号' : '绑定手机号'"
:visible.sync="phoneVisible"
:close-on-click-modal="false"
@close="closePhone"
width="30%">
<el-form ref="form" :model="form" label-width="60px">
<el-form-item label="手机号">
<el-input placeholder="请输入手机号" v-model="phone" maxlength="11"></el-input>
</el-form-item>
<el-form-item label="验证码">
<div class="flex-between">
<el-input v-model="phoneCode" placeholder="请输入验证码" maxlength="6"></el-input>
<el-button style="margin-left: 10px" type="text" @click="sendPhoneCode" :disabled="phoneDisabled">{{ phoneBtnText }}</el-button>
</div>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
</el-dialog>
<el-dialog
:title="personalInformation.phone ? '更换手机号' : '绑定手机号'"
:visible.sync="phoneVisible"
:close-on-click-modal="false"
@close="closePhone"
width="30%">
<el-form ref="form" :model="form" label-width="60px">
<el-form-item label="手机号">
<el-input placeholder="请输入手机号" v-model="phone" maxlength="11"></el-input>
</el-form-item>
<el-form-item label="验证码">
<div class="flex-between">
<el-input v-model="phoneCode" placeholder="请输入验证码" maxlength="6"></el-input>
<el-button style="margin-left: 10px" type="text" @click="sendPhoneCode" :disabled="phoneDisabled">{{ phoneBtnText }}</el-button>
</div>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="phoneVisible = false"> </el-button>
<el-button type="primary" @click="phoneSubmit"> </el-button>
</span>
</el-dialog>
<el-dialog
title="更换密码"
:visible.sync="passwordVisible"
:close-on-click-modal="false"
@close="closePassword"
width="30%">
<el-form ref="passwordForm" :model="form" label-width="60px">
<el-form-item label="原密码">
<el-input type="password" v-model="passwordForm.password" placeholder="请输入原密码"></el-input>
</el-form-item>
<el-form-item label="新密码">
<el-input type="password" v-model="passwordForm.newPassword" placeholder="请输入新密码" @keyup.enter.native="editPassword"></el-input>
</el-form-item>
<el-form-item label="新密码">
<el-input type="password" v-model="passwordForm.reNewPassword" placeholder="请确认新密码" @keyup.enter.native="editPassword"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
</el-dialog>
<el-dialog
title="更换密码"
:visible.sync="passwordVisible"
:close-on-click-modal="false"
@close="closePassword"
width="30%">
<el-form ref="passwordForm" :model="form" label-width="60px">
<el-form-item label="原密码">
<el-input type="password" v-model="passwordForm.password" placeholder="请输入原密码"></el-input>
</el-form-item>
<el-form-item label="新密码">
<el-input type="password" v-model="passwordForm.newPassword" placeholder="请输入新密码" @keyup.enter.native="editPassword"></el-input>
</el-form-item>
<el-form-item label="新密码">
<el-input type="password" v-model="passwordForm.reNewPassword" placeholder="请确认新密码" @keyup.enter.native="editPassword"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="passwordVisible = false"> </el-button>
<el-button type="primary" @click="editPassword"> </el-button>
</span>
</el-dialog>
</div>
</el-dialog>
</div>
</template>
<script>
import Setting from "@/setting";
import util from "@/libs/util";
import { mapState, mapActions } from "vuex";
@ -1045,12 +1049,42 @@ export default {
}
}).catch(res => {
});
},
goBack() {
this.$router.go(-1);
}
}
};
</script>
<style lang="scss" scoped>
.topBack {
position: absolute;
top: 0;
left: 0;
right: 0;
background-color: #ffffff;
display: flex;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
width: 100%;
height: 60px;
font-size: 16px;
color: #333;
.back {
cursor: pointer;
line-height: 60px;
height: 60px;
font-size: 16px;
font-weight: bold;
margin-left: 20px;
i {
color: #9278ff;
font-size: 20px;
}
}
}
.arrowTransform {
transition: 0.5s;
transform-origin: center;
@ -1066,6 +1100,7 @@ export default {
.wrap {
margin: -24px -24px 20px;
padding-top: 170px;
padding-bottom: 40px;
display: flex;
align-items: center;
flex-direction: column;

@ -155,7 +155,7 @@
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop="account" label="学生账号">
<el-input v-model="form.account" placeholder="请输入学生账号" @change="accountChange"></el-input>
<el-input v-model="form.account" placeholder="请输入学生账号" @blur="accountChange"></el-input>
</el-form-item>
<el-form-item prop="userName" label="学生姓名">
<el-input v-model="form.userName" placeholder="请输入学生姓名"></el-input>
@ -164,13 +164,13 @@
学生
</el-form-item>
<el-form-item prop="workNumber" label="学生学号">
<el-input v-model="form.workNumber" placeholder="" @change="worknumberChange"></el-input>
<el-input v-model="form.workNumber" placeholder="" @blur="worknumberChange"></el-input>
</el-form-item>
<el-form-item prop="phone" label="手机号">
<el-input v-model="form.phone" placeholder="可用于登录平台,以及找回密码" maxlength="11" @change="phoneChange"></el-input>
<el-input v-model="form.phone" placeholder="可用于登录平台,以及找回密码" maxlength="11" @blur="phoneChange"></el-input>
</el-form-item>
<el-form-item prop="email" label="邮箱">
<el-input v-model="form.email" placeholder="可用于登录平台,以及找回密码" @change="emailChange"></el-input>
<el-input v-model="form.email" placeholder="可用于登录平台,以及找回密码" @blur="emailChange"></el-input>
</el-form-item>
<el-form-item prop="uniqueIdentification" label="唯一标识">
<el-input disabled v-model="form.uniqueIdentification"></el-input>
@ -211,6 +211,7 @@
<el-button type="primary" @click="downLoad">模板下载<i class="el-icon-download el-icon--right"></i></el-button>
</div>
<el-upload
name="file"
accept=".xls,.xlsx"
:on-remove="handleRemove"
:on-error="uploadError"
@ -219,9 +220,8 @@
:limit="1"
:on-exceed="handleExceed"
:action="this.api.importStudent"
:headers="headers"
:file-list="uploadList"
name="file"
:headers="headers"
>
<el-button type="primary" class="ml20">上传文件<i class="el-icon-upload2 el-icon--right"></i></el-button>
</el-upload>
@ -664,21 +664,25 @@ export default {
});
},
async accountChange() {
let res = await this.$post(`${this.api.checkWorkNumOrAccount}?account=${this.form.account}&workNumber=`);
if (res.status === 200) {
this.accountReapeat = false;
} else {
util.warningMsg("该账号已存在");
this.accountReapeat = true;
if (this.form.account) {
let res = await this.$post(`${this.api.checkWorkNumOrAccount}?account=${this.form.account}&workNumber=`);
if (res.status === 200) {
this.accountReapeat = false;
} else {
util.warningMsg("该账号已存在");
this.accountReapeat = true;
}
}
},
async worknumberChange() {
let res = await this.$post(`${this.api.checkWorkNumOrAccount}?workNumber=${this.form.workNumber}&account=`);
if (res.status === 200) {
this.workNumberReapeat = false;
} else {
util.warningMsg("该学生学号已存在");
this.workNumberReapeat = true;
if (this.form.workNumber) {
let res = await this.$post(`${this.api.checkWorkNumOrAccount}?workNumber=${this.form.workNumber}&account=`);
if (res.status === 200) {
this.workNumberReapeat = false;
} else {
util.warningMsg("该学生学号已存在");
this.workNumberReapeat = true;
}
}
},
async phoneChange() {
@ -698,10 +702,10 @@ export default {
if (regex.test(this.form.email)) {
let res = await this.$post(`${this.api.checkEmailOrPhone}?email=${this.form.email}&phone=`);
if (res.status === 200) {
this.accountReapeat = false;
this.emailRepeat = false;
} else {
util.warningMsg("该邮箱已存在");
this.accountReapeat = true;
this.emailRepeat = true;
}
}
},

@ -5,37 +5,36 @@
</div>
<staff v-if="active == 'staff'"></staff>
<role v-else></role>
<role v-if="active == 'role'"></role>
<logo v-if="active == 'logo'"></logo>
</div>
</template>
<script>
import Setting from "@/setting";
import { mapState } from "vuex";
import staff from "./staff";
import role from "./role";
import logo from "./logo";
export default {
data() {
return {
active: "staff",
tabs: {
staff: "员工管理",
role: "角色权限"
role: "角色权限",
logo: "系统logo设置",
}
};
},
computed: {
...mapState("auth", [
"routes"
])
},
components: {
staff,
role
role,
logo
},
created() {
console.log("routes===", this.routes);
Setting.dynamicRoute && this.initTabs();
},
methods: {
@ -43,9 +42,9 @@ export default {
this.active = index;
},
initTabs() {
let btnPermissions = this.routes;
let tab1 = btnPermissions.includes("系统设置:员工管理");
let tab2 = btnPermissions.includes("系统设置:角色权限");
let tab1 = this.auth("员工管理");
let tab2 = this.auth("角色权限");
let tab3 = this.auth("系统logo设置");
if (!tab1) {
delete this.tabs.staff;
@ -53,6 +52,9 @@ export default {
if (!tab2) {
delete this.tabs.role;
}
if (!tab3) {
// delete this.tabs.logo;
}
}
}
};

@ -1,33 +1,32 @@
<template>
<div class="page">
<h6 class="p-title">筛选</h6>
<div class="tool">
<ul class="filter">
<li>
<el-input placeholder="请输入角色名称" prefix-icon="el-icon-search" v-model="keyword" clearable></el-input>
<el-input placeholder="请输入角色名称" prefix-icon="el-icon-search" v-model.trim="keyword" clearable></el-input>
</li>
</ul>
<div>
<!-- <el-button type="primary" round @click="addRole">新增角色</el-button>
<el-button type="primary" round @click="delAllSelection">批量删除</el-button> -->
<el-button type="primary" round @click="addRole">新增角色</el-button>
<el-button type="primary" round @click="delAllSelection">批量删除</el-button>
</div>
</div>
<el-table :data="listData" class="table" ref="table" stripe header-align="center" @selection-change="handleSelectionChange" :row-key="getRowKeys">
<el-table-column type="selection" width="55" align="center" :reserve-selection="true"></el-table-column>
<el-table-column type="index" width="100" label="序号" align="center">
</el-table-column>
<el-table-column prop="name" label="角色名称" align="center" width="100">
</el-table-column>
<el-table-column type="index" width="100" label="序号" align="center"></el-table-column>
<el-table-column prop="roleName" label="角色名称" align="center" width="100"></el-table-column>
<el-table-column label="角色描述" align="center">
<template slot-scope="scope">
<el-input placeholder="该角色用于管理全部功能权限" v-model="scope.row.description" disabled></el-input>
<el-input placeholder="该角色用于管理全部功能权限" v-model="scope.row.remark" disabled></el-input>
</template>
</el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button type="text" @click="showRole(scope.row)">查看</el-button>
<el-button type="text" @click="editRole(scope.row)">编辑</el-button>
<!-- <el-button type="text" @click="handleDelete(scope.row)">删除</el-button> -->
<el-button type="text" @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
@ -36,19 +35,20 @@
</div>
<el-dialog :title="isDetail ? '查看角色' : (isAdd ? '新增角色' : '编辑角色')" :visible.sync="roleVisible" width="30%" @close="closeRole" class="dialog" :close-on-click-modal="false">
<el-form ref="form" label-width="100px" :disabled="isDetail">
<el-form ref="form" label-width="80px" :disabled="isDetail">
<el-form-item label="角色名称">
<el-input v-model="form.name " ref="account" placeholder="请输入角色名称"></el-input>
<el-input v-model="form.roleName" placeholder="请输入角色名称"></el-input>
</el-form-item>
<el-form-item label="角色描述">
<el-input v-model="form.description " placeholder="请输入角色描述" type="textarea" rows="5"></el-input>
<el-input v-model="form.remark" placeholder="请输入角色描述" type="textarea" rows="5"></el-input>
</el-form-item>
<el-form-item prop="role" label="角色权限">
<div class="per-wrap">
<div style="max-height: 300px; overflow: auto">
<el-tree
ref="per"
:data="permissions"
show-checkbox
default-expand-all
node-key="id"
:default-expanded-keys="checkedIds"
:default-checked-keys="checkedIds"
@ -66,9 +66,7 @@
</template>
<script>
import Setting from "@/setting";
import util from "@/libs/util";
import { mapState, mapActions } from "vuex";
export default {
data() {
@ -77,9 +75,9 @@ export default {
searchTimer: null,
isDetail: false,
form: {
roleId: "",
name: "",
description: ""
id: "",
roleName: "",
remark: ""
},
listData: [],
defaultProps: {
@ -93,7 +91,8 @@ export default {
isAdd: true,
roleVisible: false,
permissions: [],
checkedIds: []
checkedIds: [],
roleNameReapeat: false //
};
},
watch: {
@ -109,16 +108,10 @@ export default {
},
methods: {
getData() {
let data = {
name: util.encodeStr(this.keyword),
page: this.page,
size: this.pageSize
};
this.$get(this.api.rolePermissionList, data).then(res => {
this.listData = res.data.list;
this.total = res.data.totalCount;
}).catch(res => {
});
this.$get(`${this.api.roleList}?page=${this.page}&size=${this.pageSize}&name=${util.encodeStr(this.keyword)}`).then(res => {
this.listData = res.rolePage.records;
this.total = res.rolePage.total;
}).catch(res => {});
},
currentChange(val) {
this.page = val;
@ -127,49 +120,33 @@ export default {
handleDelete(row) {
this.$confirm("确定要删除吗?", "提示", {
type: "warning"
})
.then(() => {
let data = {
roleIds: [row.roleId]
};
this.$post(`${this.api.delRolePermission}`, data).then(res => {
util.successMsg("删除成功");
this.getData();
}).catch(res => {
});
})
.catch(() => {
});
}).then(() => {
this.$post(`${this.api.batchRemove}?roleIds=${row.id}`).then(res => {
util.successMsg("删除成功");
this.getData();
}).catch(res => {});
}).catch(() => {});
},
getRowKeys(row) {
return row.roleId;
return row.id;
},
handleSelectionChange(val) {
this.multipleSelection = val;
},
delAllSelection() {
if (this.multipleSelection.length) {
let newArr = this.multipleSelection;
let delList = newArr.map(item => {
return item.roleId;
});
this.$confirm("确定要删除吗?", "提示", {
type: "warning"
})
.then(() => {
let data = {
roleIds: delList
};
this.$post(`${this.api.delRolePermission}`, data).then(res => {
this.$refs.table.clearSelection();
util.successMsg("删除成功");
this.getData();
}).catch(res => {
});
})
.catch(() => {
}).then(() => {
let ids = this.multipleSelection.map(item => {
return item.id;
});
this.$post(`${this.api.batchRemove}?roleIds=${ids.toString()}`).then(res => {
this.$refs.table.clearSelection();
util.successMsg("删除成功");
this.getData();
}).catch(res => {});
}).catch(() => {});
} else {
util.errorMsg("请先选择数据!");
}
@ -177,9 +154,9 @@ export default {
closeRole() {
this.isDetail = false;
this.form = {
roleId: "",
name: "",
description: ""
id: "",
roleName: "",
remark: ""
};
this.checkedIds = [];
this.permissions = [];
@ -187,8 +164,8 @@ export default {
//
getPer(row) {
if (!this.permissions.length) {
this.$get(this.api.roleTree).then(res => {
let data = res.data;
this.$get(this.api.queryAllMenus).then(res => {
let data = res.children;
//
let yw = data.findIndex(n => n.name == "业务后台");
yw != -1 && data.splice(yw, 1);
@ -231,12 +208,12 @@ export default {
}
return result;
},
async getDetail(row) {
let res = await this.$get(`${this.api.queryPermissionArrById}?roleId=${row.roleId}`);
if (res.success) {
this.form = res.data;
this.form.roleId = row.roleId;
this.checkedIds = this.handleRolePer(res.data.permissionIds, this.permissions);
async getDetail(row) { //
let res = await this.$get(`${this.api.obtainDetails}?id=${row.id}`);
if (res.status === 200) {
this.form = res.role;
this.form.id = row.id;
this.checkedIds = this.handleRolePer(res.permissionList, this.permissions);
this.$refs.per.setCheckedNodes(this.checkedIds);
}
},
@ -251,32 +228,45 @@ export default {
this.getPer(row);
this.roleVisible = true;
},
async roleNameChange() {
let res = await this.$post(`${this.api.checkRoleIsExist}?roleName=${this.form.roleName}`);
if (res.status === 200) {
this.roleNameReapeat = false;
} else {
util.warningMsg("该角色已存在");
this.roleNameReapeat = true;
}
},
async saveData() {
if (!this.form.name) return util.warningMsg("请填写角色名称");
if (!this.form.description) return util.warningMsg("请填写角色描述");
if (!this.form.roleName) return util.warningMsg("请填写角色名称");
if (!this.form.remark) return util.warningMsg("请填写角色描述");
if (!this.$refs.per.getCheckedKeys().length) return util.warningMsg("请选择角色权限");
// ,(),
let permissionIds = [...this.$refs.per.getHalfCheckedKeys(), ...this.$refs.per.getCheckedKeys()];
let permissionId = [...this.$refs.per.getHalfCheckedKeys(), ...this.$refs.per.getCheckedKeys()];
let data = {
roleId: this.form.roleId,
name: this.form.name,
description: this.form.description,
permissionIds
...this.form,
permissionId
};
if (this.form.roleId) {
this.$post(this.api.updateRolePermission, data).then(res => {
util.successMsg("修改成功");
this.getData();
this.roleVisible = false;
}).catch(res => {
});
if (this.form.id) {
this.$post(this.api.saveOrUpdate, data).then(res => {
if (res.status === 200) {
util.successMsg("修改成功");
this.getData();
this.roleVisible = false;
} else {
util.errorMsg(res.message);
}
}).catch(res => {});
} else {
this.$post(this.api.saveRolePermission, data).then(res => {
util.successMsg("新增成功");
this.getData();
this.roleVisible = false;
}).catch(res => {
});
this.$post(this.api.saveOrUpdate, data).then(res => {
if (res.status === 200) {
util.successMsg("新增成功");
this.getData();
this.roleVisible = false;
} else {
util.errorMsg(res.message);
}
}).catch(res => {});
}
}
}

File diff suppressed because it is too large Load Diff

@ -8,10 +8,10 @@
></lctree>
</div>
<el-dialog :title="Form.MajorId ? '编辑专业' : '新增专业'" :visible.sync="isaddMajor" width="24%" center @close="closeAdd" :close-on-click-modal="false">
<el-dialog :title="Form.staffArchitectureId ? '编辑专业' : '新增专业'" :visible.sync="isaddMajor" width="24%" center @close="closeAdd" :close-on-click-modal="false">
<el-form ref="Form" :model="Form" :rules="rules">
<el-form-item prop="majorName">
<el-input placeholder="请输入专业名称" v-model="Form.majorName" @change="majorChange"></el-input>
<el-form-item prop="staffArchitectureName">
<el-input placeholder="请输入专业名称" v-model="Form.staffArchitectureName" @change="majorChange"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
@ -20,10 +20,10 @@
</span>
</el-dialog>
<el-dialog :title="Form.departmentId ? '编辑部门' : '新增部门'" :visible.sync="isAddDepartment" width="24%" center @close="closeAdd" :close-on-click-modal="false">
<el-dialog :title="Form.gradeId ? '编辑部门' : '新增部门'" :visible.sync="isAddDepartment" width="24%" center @close="closeAdd" :close-on-click-modal="false">
<el-form ref="Form" :model="Form" :rules="rules">
<el-form-item prop="departmentName">
<el-input placeholder="请输入部门名称" v-model="Form.departmentName"></el-input>
<el-form-item prop="gradeName">
<el-input placeholder="请输入部门名称" v-model="Form.gradeName"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
@ -36,7 +36,6 @@
<script>
import Setting from "@/setting";
import util from "@/libs/util";
import { mapState, mapActions } from "vuex";
import lctree from "./stafftree";
export default {
@ -50,16 +49,16 @@ export default {
isAddDepartment: false,
schoolId: Setting.schoolId,
Form: {
MajorId: "",
majorName: "",
departmentId: "",
departmentName: ""
staffArchitectureId: "", // ID
staffArchitectureName: "", // //
gradeId: "",
gradeName: ""
},
rules: {
majorName: [
staffArchitectureName: [
{ required: true, message: "请输入专业名称", trigger: "blur" }
],
departmentName: [
gradeName: [
{ required: true, message: "请输入部门名称", trigger: "blur" }
]
},
@ -76,27 +75,24 @@ export default {
},
methods: {
getStaff() {
let data = {
schoolId: this.schoolId
};
this.$get(this.api.queryStaffPro, data).then(res => {
if (res.message) {
res.message.map(e => {
(e.ifVisible = false), (e.ischeck = false), (e.label = e.staffProfessionalArchitectureName);
this.$get(this.api.professionalList).then(res => {
if (res.data && res.data.length) {
res.data.map(e => {
(e.ifVisible = false), (e.ischeck = false), (e.label = e.staffArchitectureName), (e.value = e.staffArchitectureId);
let data = {
staffProfessionalArchitectureId: e.staffProfessionalArchitectureId
staffArchitectureId: e.staffArchitectureId
};
this.$get(this.api.queryStaffGrade, data).then(res => {
res.message.map(e => {
(e.ischeck = false), (e.label = e.staffGradeName);
this.$get(this.api.staffGradeList, data).then(res => {
res.data.map(e => {
(e.ischeck = false), (e.label = e.gradeName), (e.value = e.gradeId);
});
e.children = res.message;
e.children = res.data;
}).catch(res => {
});
});
}
setTimeout(() => {
this.majorList = res.message;
this.majorList = res.data;
}, 500);
}).catch(res => {
});
@ -114,17 +110,17 @@ export default {
},
//
addMajor() {
this.Form.MajorId = "";
this.Form.majorName = "";
this.Form.staffArchitectureId = "";
this.Form.staffArchitectureName = "";
this.isaddMajor = true;
},
editMajor(item) {
this.Form.MajorId = item.staffProfessionalArchitectureId,
this.Form.majorName = item.staffProfessionalArchitectureName;
this.Form.staffArchitectureId = item.staffArchitectureId;
this.Form.staffArchitectureName = item.staffArchitectureName;
this.isaddMajor = true;
},
async majorChange() {
let res = await this.$get(this.api.queryStaffPAN, { name: this.Form.majorName, schoolId: this.schoolId });
let res = await this.$get(this.api.queryStaffPAN, { name: this.Form.staffArchitectureName, schoolId: this.schoolId });
if (res.message.length != 0) {
util.warningMsg("该一级部门已存在");
this.majorNoAdd = false;
@ -132,41 +128,50 @@ export default {
this.majorNoAdd = true;
}
},
sure(Form) {
sure(Form) { // /
this.$refs[Form].validate((valid) => {
if (valid) {
if (!this.majorNoAdd) return util.warningMsg("该一级部门已存在");
let data = {
staffProfessionalArchitectureName: this.Form.majorName,
staffProfessionalArchitectureId: this.Form.MajorId,
schoolId: this.schoolId
staffArchitectureName: this.Form.staffArchitectureName,
staffArchitectureId: this.Form.staffArchitectureId,
isDel: 0 // (0 1)
};
if (this.Form.MajorId) {
this.$post(this.api.updateStaffPro, data).then(res => {
util.successMsg("编辑成功");
this.isaddMajor = false;
this.majorList.map(e => {
if (e.staffProfessionalArchitectureId == this.Form.MajorId) {
e.staffProfessionalArchitectureName = this.Form.majorName;
e.label = this.Form.majorName;
}
});
this.$emit("getData");
if (this.Form.staffArchitectureId) {
this.$post(this.api.updateProfessional, data).then(res => {
if (res.status === 200) {
util.successMsg("编辑成功");
this.isaddMajor = false;
this.majorList.map(e => {
if (e.staffArchitectureId == this.Form.staffArchitectureId) {
e.staffArchitectureName = this.Form.staffArchitectureName;
e.label = this.Form.staffArchitectureName;
}
});
this.$emit("getData");
} else {
util.errorMsg(res.message);
}
}).catch(res => {
});
} else {
this.$post(this.api.addStaffPro, data).then(res => {
util.successMsg("添加成功");
this.isaddMajor = false;
let newData = {
staffProfessionalArchitectureId: res.message,
staffProfessionalArchitectureName: this.Form.majorName,
label: this.Form.majorName,
ifVisible: false,
ischeck: false,
children: []
};
this.majorList.push(newData);
this.$post(this.api.saveProfessional, data).then(res => {
if (res.status === 200) {
util.successMsg("添加成功");
this.isaddMajor = false;
let newData = {
staffArchitectureId: res.staffArchitectureId,
staffArchitectureName: this.Form.staffArchitectureName,
label: this.Form.staffArchitectureName,
value: res.staffArchitectureId,
ifVisible: false,
ischeck: false,
children: []
};
this.majorList.push(newData);
} else {
util.errorMsg(res.message);
}
}).catch(res => {
});
}
@ -177,62 +182,71 @@ export default {
},
//
addDepartment(item) {
this.Form.departmentId = "";
this.Form.departmentName = "";
this.Form.gradeId = "";
this.Form.gradeName = "";
this.isAddDepartment = true;
this.Form.MajorId = item.staffProfessionalArchitectureId;
this.Form.staffArchitectureId = item.staffArchitectureId;
},
editDepartment(item) {
this.Form.departmentId = item.staffGradeId,
this.Form.departmentName = item.staffGradeName;
this.Form.gradeId = item.gradeId;
this.Form.gradeName = item.gradeName;
this.isAddDepartment = true;
for (let j = 0; j < this.majorList.length; j++) {
for (let k = 0; k < this.majorList[j].children.length; k++) {
if (this.majorList[j].children[k].staffGradeName == item.staffGradeName) {
this.Form.MajorId = this.majorList[j].staffProfessionalArchitectureId;
if (this.majorList[j].children[k].gradeName == item.gradeName) {
this.Form.staffArchitectureId = this.majorList[j].staffArchitectureId;
}
}
}
},
sureDepartment(Form) {
sureDepartment(Form) { //
this.$refs[Form].validate((valid) => {
if (valid) {
let data = {
staffGradeName: this.Form.departmentName,
staffProfessionalArchitectureId: this.Form.MajorId,
staffGradeId: this.Form.departmentId
gradeId: this.Form.gradeId,
gradeName: this.Form.gradeName,
staffArchitectureId: this.Form.staffArchitectureId
};
if (this.Form.departmentId) {
this.$post(this.api.updateStaffGrade, data).then(res => {
util.successMsg("编辑成功");
this.isAddDepartment = false;
this.majorList.map(e => {
e.children.map(r => {
if (r.staffGradeId == this.Form.departmentId) {
r.staffGradeName = this.Form.departmentName;
r.label = this.Form.departmentName;
}
if (this.Form.gradeId) {
this.$post(this.api.updateGrade, data).then(res => {
if (res.status === 200) {
util.successMsg("编辑成功");
this.isAddDepartment = false;
this.majorList.map(e => {
e.children.map(r => {
if (r.gradeId == this.Form.gradeId) {
r.gradeName = this.Form.gradeName;
r.label = this.Form.gradeName;
}
});
});
});
} else {
util.errorMsg(res.message);
}
}).catch(res => {
});
} else {
this.$post(this.api.addStaffGrade, data).then(res => {
util.successMsg("添加成功");
this.isAddDepartment = false;
let newData = {
staffGradeId: res.message,
staffGradeName: this.Form.departmentName,
label: this.Form.departmentName,
ifVisible: false,
ischeck: false
};
this.majorList.map(e => {
if (e.staffProfessionalArchitectureId == this.Form.MajorId) {
e.ifVisible = true;
e.children.push(newData);
}
});
this.$post(this.api.saveGrade, data).then(res => {
if (res.status === 200) {
util.successMsg("添加成功");
this.isAddDepartment = false;
let newData = {
gradeId: res.gradeId,
gradeName: this.Form.gradeName,
label: this.Form.gradeName,
value: res.gradeId,
ifVisible: false,
ischeck: false
};
this.majorList.map(e => {
if (e.staffArchitectureId == this.Form.staffArchitectureId) {
e.ifVisible = true;
e.children.push(newData);
}
});
} else {
util.errorMsg(res.message);
}
}).catch(res => {
});
}
@ -244,54 +258,42 @@ export default {
delMajor(item, index) {
this.$confirm("确定要删除该专业吗?该操作将会删除该组织下的用户账号。", "提示", {
type: "warning"
})
.then(() => {
let data = {
staffProfessionalArchitectureId: item.staffProfessionalArchitectureId
};
this.$post(this.api.deleteStaffPro, data).then(res => {
util.successMsg("删除成功");
this.majorList.splice(index, 1);
this.$emit("getData");
this.$get(`${this.api.dalStaffByProfessionalId}?staffProfessionalArchitectureId=${item.staffProfessionalArchitectureId}`).then(res => {
}).catch(res => {
});
}).catch(res => {
});
})
.catch(() => {
});
}).then(() => {
this.$post(`${this.api.deleteProfessional}?staffArchitectureId=${item.staffArchitectureId}`).then(res => {
util.successMsg("删除成功");
this.majorList.splice(index, 1);
this.$emit("getData");
// this.$get(`${this.api.dalStaffByProfessionalId}?staffArchitectureId=${item.staffArchitectureId}`).then(res => {
// }).catch(res => {
// });
}).catch(res => {});
}).catch(() => {});
},
delDepartment(item, indx) {
delDepartment(item, index) {
console.log(item);
this.$confirm("确定要删除该部门吗?该操作将会删除该组织下的用户账号。", "提示", {
type: "warning"
})
.then(() => {
let data = {
staffGradeId: item.staffGradeId
};
this.$post(this.api.deleteStaffGrade, data).then(res => {
util.successMsg("删除成功");
this.majorList.map(e => {
e.children.map(r => {
if (r.staffGradeId == item.staffGradeId) {
e.children.splice(indx, 1);
if (e.children.length == 0) {
e.ifVisible = false;
}
}).then(() => {
this.$post(`${this.api.deleteGrade}?gradeId=${item.gradeId}`).then(res => {
util.successMsg("删除成功");
this.majorList.map(e => {
e.children.map(r => {
if (r.gradeId == item.gradeId) {
e.children.splice(index, 1);
if (e.children.length == 0) {
e.ifVisible = false;
}
});
});
this.$emit("delDep", item, this.majorList);
this.$emit("getData");
this.$get(`${this.api.dalStaffByStaffGradeId}?staffGradeId=${item.staffGradeId}`).then(res => {
}).catch(res => {
}
});
}).catch(res => {
});
})
.catch(() => {
this.$emit("delDep", item, this.majorList);
this.$emit("getData");
// this.$get(`${this.api.dalStaffByStaffGradeId}?gradeId=${item.gradeId}`).then(res => {
// }).catch(res => {
// });
}).catch(res => {
});
}).catch(() => {});
}
}
};

@ -113,9 +113,6 @@ export default {
addClass(item) {
this.$emit("addClass", item);
},
editDepartment(item) {
this.$emit("editDepartment", item);
},
delDepartment(item, index) {
this.$emit("delDepartment", item, index);
},

@ -5,7 +5,6 @@ import Setting from "@/setting";
import { get } from "@/plugins/requests/index.js";
import api from "@/api";
import util from "@/libs/util";
import { permission } from "@/router/permission";
import BasicLayout from "@/layouts/home";
Vue.use(Router);
@ -63,7 +62,6 @@ function getPermission() {
let data = res.permissionMenu[0].children;
if (data.length > 0) {
data.forEach(e => {
// 第一级路由,需要根据匹配到的path,塞进对应的路由children里
let str = e.path.split("/")[1];
@ -113,6 +111,7 @@ function getPermission() {
}
}
// permissionRouters.push(obj) // path是页面,要塞入上一级同级里,需要单独push进去生成路由
meta.push(i.name);
} else {
meta.push(i.name);
}
@ -151,6 +150,7 @@ function getPermission() {
}
}
// permissionRouters.push(obj) // path是页面,要塞入上一级同级里,需要单独push进去生成路由
meta.push(i.name+"-"+j.name);
} else {
meta.push(i.name+"-"+j.name);
}

@ -1,27 +0,0 @@
import router from "./index";
import Setting from "@/setting";
import util from "@/libs/util";
// router.beforeEach((to, from, next) => {
// document.title = Setting.titleSuffix;
// const role = util.local.get(Setting.tokenKey);
// if (!role && to.path !== "/login") {
// next("/login");
// } else if (role && to.path == "/login") {
// next("/index");
// } else {
// let mg = from.query.mg;
// if (mg) {
// if (!to.query.mg) {
// next({
// path: to.path,
// query: { mg }
// });
// } else {
// next();
// }
// } else {
// next();
// }
// }
// });

@ -17,6 +17,7 @@ const frameIn = [
meta: { title: "首页" },
children: []
},
];
/**
@ -32,6 +33,14 @@ const frameOut = [
title: "登录"
},
component: () => import("@/pages/account/login")
},
{
path: "/setting/person",
name: "person",
meta: {
title: "个人中心"
},
component: () => import("@/pages/setting/list")
}
];

@ -42,8 +42,8 @@ if (isHh) {
schoolId = 2105;
} else if (isDev) {
jumpPath = "http://192.168.31.154:8087/";
host = "http://39.108.250.202:9000/"; // 中台测试服
// host = "http://192.168.31.151:9000/"; // 榕
// host = "http://39.108.250.202:9000/"; // 中台测试服
host = "http://192.168.31.151:9000/"; // 榕
// host = "http://192.168.31.125:9000/"; // 坤
// host = 'http://192.168.31.137:9000/'; // 赓
title = "职站服务端管理系统";

Loading…
Cancel
Save