yujialong 10 months ago
parent 57f0f4ce83
commit 8ee53be060
  1. 2
      public/index.html
  2. 2
      src/pages/achievement/info/course.vue
  3. 6
      src/pages/achievement/info/project.vue
  4. 5
      src/pages/achievement/list/course.vue
  5. 3
      src/pages/achievement/list/project.vue
  6. 2
      src/pages/activity/details/index.vue
  7. 1
      src/pages/assessment/list/index.vue
  8. 123
      src/pages/course/list/courseManagement/index.vue
  9. 2
      src/pages/match/add/step1.vue
  10. 11
      src/pages/match/add/step2.vue
  11. 1
      src/pages/match/manage/matchInfo.vue
  12. 1
      src/pages/product/show/index.vue
  13. 5
      src/pages/screen/index.vue
  14. 12
      src/pages/system/list/index.vue
  15. 198
      src/pages/system/list/staff.vue
  16. 79
      src/pages/system/list/staffSide.vue

@ -10,7 +10,7 @@
var _hmt = _hmt || []; var _hmt = _hmt || [];
(function() { (function() {
var hm = document.createElement('script'); var hm = document.createElement('script');
hm.src = 'https://hm.baidu.com/hm.js?72fbad6ebf1d6c705117fe8fe0686a0e'; hm.src = 'https://hm.baidu.com/hm.js?e4d7deeca2d6ea71d2bd5fa2365bc654';
var s = document.getElementsByTagName('script')[0]; var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(hm, s); s.parentNode.insertBefore(hm, s);
})(); })();

@ -3,7 +3,7 @@
<el-card shadow="hover" <el-card shadow="hover"
class="m-b-20 head-card"> class="m-b-20 head-card">
<div class="flex-between m-b-20"> <div class="flex-between m-b-20">
<el-page-header @back="$router.push('list?tab=tab1')" <el-page-header @back="$router.back()"
:content="goodsName"></el-page-header> :content="goodsName"></el-page-header>
</div> </div>
</el-card> </el-card>

@ -320,7 +320,8 @@ export default {
pageActivation: 1, pageActivation: 1,
pageSizeActivation: 10, pageSizeActivation: 10,
totalActivation: 0, totalActivation: 0,
loadIns: null loadIns: null,
scores: {}
}; };
}, },
components: { components: {
@ -378,6 +379,7 @@ export default {
this.errorAnalysis = res.errorAnalysis || {} this.errorAnalysis = res.errorAnalysis || {}
this.max = res.highestErrorRate || {} this.max = res.highestErrorRate || {}
this.min = res.minimumErrorRate || {} this.min = res.minimumErrorRate || {}
this.scores = res.getFractionalSegmentNum
this.getChart() this.getChart()
this.errorChart() this.errorChart()
} catch (e) { } catch (e) {
@ -531,7 +533,7 @@ export default {
getChart () { // 线 getChart () { // 线
const xData = Array.from({ length: 101 }, (v, k) => k) const xData = Array.from({ length: 101 }, (v, k) => k)
const yData = Array.from({ length: 101 }, (v, k) => 0) const yData = Array.from({ length: 101 }, (v, k) => 0)
const list = this.listDataAll const list = this.listData
list.map(n => { list.map(n => {
yData[n.score]++ yData[n.score]++
}) })

@ -166,7 +166,8 @@ export default {
path: 'list', path: 'list',
query: { query: {
...this.$route.query, ...this.$route.query,
keyword: val keyword: val,
page: 1
} }
}) })
this.initData(); this.initData();
@ -182,7 +183,7 @@ export default {
async getCourse () { async getCourse () {
const { data } = await this.$get(this.api.getSchoolEffectiveCourse) const { data } = await this.$get(this.api.getSchoolEffectiveCourse)
this.curs = data this.curs = data
this.initData(); this.getData();
}, },
// //
curChange (id) { curChange (id) {

@ -232,7 +232,8 @@ export default {
path: 'list', path: 'list',
query: { query: {
...this.$route.query, ...this.$route.query,
keyword: val keyword: val,
page: 1
} }
}) })
this.initData(); this.initData();

@ -447,7 +447,7 @@ export default {
.tool { .tool {
z-index: 100; z-index: 100;
position: sticky; position: sticky;
top: 64px; top: 0;
margin-bottom: 20px; margin-bottom: 20px;
background-color: #fff; background-color: #fff;
} }

@ -291,6 +291,7 @@ export default {
month: "", month: "",
}, },
mallId: '',
pageNum: +this.$route.query.page || 1, // pageNum: +this.$route.query.page || 1, //
pageSize: 10, // 10 pageSize: 10, // 10
total: 0, // total: 0, //

@ -2,74 +2,131 @@
<!-- 课程管理 --> <!-- 课程管理 -->
<div style="padding-top: 24px"> <div style="padding-top: 24px">
<div class="tool"> <div class="tool">
<ul class="filter" style="align-items: flex-start"> <ul class="filter"
style="align-items: flex-start">
<li> <li>
<label>课程分类</label> <label>课程分类</label>
<el-select v-model="categoryId" clearable placeholder="请选择课程分类" @change="initData"> <el-select v-model="categoryId"
<el-option label="不限" value=""></el-option> clearable
<el-option v-for="(item,index) in classificationList" :key="index" :label="item.classificationName" :value="item.id"></el-option> placeholder="请选择课程分类"
@change="initData">
<el-option label="不限"
value=""></el-option>
<el-option v-for="(item,index) in classificationList"
:key="index"
:label="item.classificationName"
:value="item.id"></el-option>
</el-select> </el-select>
</li> </li>
<li> <li>
<label>搜索</label> <label>搜索</label>
<el-input placeholder="请输入课程名称/创建人" suffix-icon="el-icon-search" v-model="keyword" clearable size="small"></el-input> <el-input placeholder="请输入课程名称/创建人"
suffix-icon="el-icon-search"
v-model="keyword"
clearable
size="small"></el-input>
</li> </li>
</ul> </ul>
<div> <div>
<el-button v-auth="'课程管理:新增'" type="info" round @click="addCourse">新增</el-button> <el-button v-auth="'课程管理:新增'"
<el-button v-auth="'课程管理:批量删除'" type="primary" round @click="delAllData">批量删除</el-button> type="info"
round
@click="addCourse">新增</el-button>
<el-button v-auth="'课程管理:批量删除'"
type="primary"
round
@click="delAllData">批量删除</el-button>
</div> </div>
</div> </div>
<el-table :data="list" class="table" ref="table" stripe header-align="center" @selection-change="handleSelectionChange" row-key="id"> <el-table :data="list"
<el-table-column type="selection" width="80" align="center" :reserve-selection="true"></el-table-column> class="table"
<el-table-column type="index" width="100" label="序号" align="center"> ref="table"
stripe
header-align="center"
@selection-change="handleSelectionChange"
row-key="id">
<el-table-column type="selection"
width="80"
align="center"
:reserve-selection="true"></el-table-column>
<el-table-column type="index"
width="100"
label="序号"
align="center">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.$index + (page - 1) * pageSize + 1 }} {{ scope.$index + (page - 1) * pageSize + 1 }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="courseName" label="课程名称" align="center"> <el-table-column prop="courseName"
label="课程名称"
align="center">
</el-table-column> </el-table-column>
<el-table-column prop="courseClassification" label="课程分类" align="center" show-overflow-tooltip> <el-table-column prop="courseClassification"
label="课程分类"
align="center"
show-overflow-tooltip>
</el-table-column> </el-table-column>
<el-table-column label="可见范围" align="center"> <el-table-column label="可见范围"
align="center">
<template slot-scope="scope"> <template slot-scope="scope">
{{ regionName[scope.row.visibleRange] }} {{ regionName[scope.row.visibleRange] }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="createTime" label="创建时间" align="center"> <el-table-column prop="createTime"
label="创建时间"
align="center">
</el-table-column> </el-table-column>
<el-table-column prop="founder" label="创建人" align="center"> <el-table-column prop="founder"
label="创建人"
align="center">
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" width="250"> <el-table-column label="操作"
align="center"
width="250">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button v-auth="'课程管理:编辑信息'" type="text" @click="editCourse(scope.row)">编辑信息</el-button> <el-button v-auth="'课程管理:编辑信息'"
<el-divider v-auth="'课程管理:编辑信息'" direction="vertical"></el-divider> type="text"
<el-button v-auth="'课程管理:内容设置'" type="text" @click="config(scope.row)">内容设置</el-button> @click="editCourse(scope.row)">编辑信息</el-button>
<el-divider v-auth="'课程管理:内容设置'" direction="vertical"></el-divider> <el-divider v-auth="'课程管理:编辑信息'"
<el-button v-auth="'课程管理:预览'" type="text" @click="preview(scope.row)">预览</el-button> direction="vertical"></el-divider>
<el-divider v-auth="'课程管理:预览'" direction="vertical"></el-divider> <el-button v-auth="'课程管理:内容设置'"
<el-button v-auth="'课程管理:删除'" type="text" @click="handleDelete(scope.row)">删除</el-button> type="text"
@click="config(scope.row)">内容设置</el-button>
<el-divider v-auth="'课程管理:内容设置'"
direction="vertical"></el-divider>
<el-button v-auth="'课程管理:预览'"
type="text"
@click="preview(scope.row)">预览</el-button>
<el-divider v-auth="'课程管理:预览'"
direction="vertical"></el-divider>
<el-button v-auth="'课程管理:删除'"
type="text"
@click="handleDelete(scope.row)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="可授权状态" align="center" width="120"> <el-table-column label="可授权状态"
align="center"
width="120">
<template slot-scope="scope"> <template slot-scope="scope">
<!-- 列表展示中台的禁启用依据zt_open展示职站的禁启用依据is_open展示 --> <!-- 列表展示中台的禁启用依据zt_open展示职站的禁启用依据is_open展示 -->
<!-- 中台禁用了这个学校发布的学校这边还能看到但是学校这边不能启用 --> <!-- 中台禁用了这个学校发布的学校这边还能看到但是学校这边不能启用 -->
<el-switch <el-switch v-auth="'课程管理:禁用'"
v-auth="'课程管理:禁用'"
v-model="scope.row.isOpen" v-model="scope.row.isOpen"
:active-value="0" :active-value="0"
:inactive-value="1" :inactive-value="1"
style="margin: 0 10px 0 5px" style="margin: 0 10px 0 5px"
:active-text="scope.row.isOpen ? '关' : '开'" :active-text="scope.row.isOpen ? '关' : '开'"
@change="switchOff($event,scope.row,scope.$index)" @change="switchOff($event,scope.row,scope.$index)"></el-switch>
></el-switch>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="pagination"> <div class="pagination">
<el-pagination background layout="total, prev, pager, next" :total="total" @current-change="handleCurrentChange" :current-page="page"> <el-pagination background
layout="total, prev, pager, next"
:total="total"
@current-change="handleCurrentChange"
:current-page="page">
</el-pagination> </el-pagination>
</div> </div>
</div> </div>
@ -143,10 +200,10 @@ export default {
}, },
getData () { getData () {
this.getList() this.getList()
if (!Setting.isDev) { // if (!Setting.isDev) {
clearInterval(this.timer) // clearInterval(this.timer)
this.timer = setInterval(this.getRedis, 1000) // this.timer = setInterval(this.getRedis, 1000)
} // }
}, },
initData () { initData () {
this.page = 1; this.page = 1;

@ -696,7 +696,7 @@ export default {
this.$parent.showLoad() this.$parent.showLoad()
delete form.publishStatus delete form.publishStatus
if (status === 1) form.publishStatus = 1 if (status === 1) form.publishStatus = 1
form.isOpen = status ? 0 : 1 // form.ztOpen = status ? 0 : 1 //
form.releaseType = releaseType form.releaseType = releaseType
form.id = this.$route.query.id form.id = this.$route.query.id

@ -80,8 +80,7 @@
<span class="req">*</span> <span class="req">*</span>
团队参赛人数限制 团队参赛人数限制
<el-radio v-model="item.teamNumLimitOpt" <el-radio v-model="item.teamNumLimitOpt"
:label="0" :label="0">不限制</el-radio>
@change="item.teamNumLimit = 0">不限制</el-radio>
<el-radio v-model="item.teamNumLimitOpt" <el-radio v-model="item.teamNumLimitOpt"
:label="1">自定义</el-radio> :label="1">自定义</el-radio>
<el-input v-model.number="item.teamNumLimit" <el-input v-model.number="item.teamNumLimit"
@ -449,7 +448,7 @@ export default {
} }
e.resultAnnouncementTime = +e.resultAnnouncementTime e.resultAnnouncementTime = +e.resultAnnouncementTime
} }
if (e.teamNumLimit) teamNumLimit += e.teamNumLimit // if (e.teamNumLimitOpt && e.teamNumLimit) teamNumLimit += e.teamNumLimit //
} }
if (invalid) return if (invalid) return
if (form.teamLimit && competitionType) { if (form.teamLimit && competitionType) {
@ -461,9 +460,9 @@ export default {
} else { // 稿 } else { // 稿
form.competitionStageList = form.competitionStageList.filter(e => e.stageName) form.competitionStageList = form.competitionStageList.filter(e => e.stageName)
} }
for (const e of form.competitionStageList) { // for (const e of form.competitionStageList) {
if (!e.teamNumLimitOpt) e.teamNumLimit = 0 // if (!e.teamNumLimitOpt) e.teamNumLimit = 0
} // }
this.$parent.showLoad() this.$parent.showLoad()
this.pass = 1 this.pass = 1
if (form.ruleId) { if (form.ruleId) {

@ -435,7 +435,6 @@ export default {
status = 5; status = 5;
} }
this.status = status this.status = status
console.log("🚀 ~ file: matchInfo.vue:350 ~ handleStatus ~ status", status)
}, },
// //
edit (showMsg) { edit (showMsg) {

@ -533,6 +533,7 @@ export default {
margin-bottom: 15px; margin-bottom: 15px;
color: #333; color: #333;
font-size: 14px; font-size: 14px;
font-weight: 600;
} }
.sectionName { .sectionName {
position: relative; position: relative;

@ -772,7 +772,7 @@ export default {
sort: 0, sort: 0,
isShelves: 0, isShelves: 0,
hotTag: 1, hotTag: 1,
purchaseStatus: 1 purchaseStatus: this.token ? 1 : ''
}) })
if (cousrseRes) { if (cousrseRes) {
const courseList = cousrseRes.page.records const courseList = cousrseRes.page.records
@ -1063,6 +1063,8 @@ export default {
}], }],
yAxis: [{ yAxis: [{
type: 'value', type: 'value',
minInterval: 1,
min: 0,
axisTick: { axisTick: {
show: false show: false
}, },
@ -1072,6 +1074,7 @@ export default {
} }
}, },
axisLabel: { axisLabel: {
// interval: 5,
margin: 10, margin: 10,
textStyle: { textStyle: {
fontSize: 12, fontSize: 12,

@ -1,7 +1,12 @@
<template> <template>
<div class="page" style="padding: 0"> <div class="page"
style="padding: 0">
<div class="tabs"> <div class="tabs">
<a class="item" v-for="(item,index) in tabs" :key="index" :class="{active: index == active}" @click="tabChange(index)">{{ item }}</a> <a class="item"
v-for="(item,index) in tabs"
:key="index"
:class="{active: index == active}"
@click="tabChange(index)">{{ item }}</a>
</div> </div>
<staff v-if="active == 'staff'"></staff> <staff v-if="active == 'staff'"></staff>
@ -21,7 +26,7 @@ export default {
return { return {
active: "staff", active: "staff",
tabs: { tabs: {
staff: "员工管理", staff: "教师管理",
role: "角色权限", role: "角色权限",
logo: "系统logo设置", logo: "系统logo设置",
} }
@ -58,5 +63,4 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
</style> </style>

@ -1,7 +1,9 @@
<template> <template>
<div class="wrap"> <div class="wrap">
<div class="side"> <div class="side">
<org ref="org" @getSingle="getSingle" @getCheck="getCheck"></org> <org ref="org"
@getSingle="getSingle"
@getCheck="getCheck"></org>
</div> </div>
<div class="right"> <div class="right">
@ -9,91 +11,171 @@
<div class="tool"> <div class="tool">
<ul class="filter"> <ul class="filter">
<li> <li>
<el-input placeholder="请输入员工姓名/工号" prefix-icon="el-icon-search" v-model.trim="keyword" clearable></el-input> <el-input placeholder="请输入教师姓名/工号"
prefix-icon="el-icon-search"
v-model.trim="keyword"
clearable></el-input>
</li> </li>
</ul> </ul>
<div> <div>
<el-button v-auth="'员工管理:新增员工'" type="info" round @click="addTeacher">新增员工</el-button> <el-button v-auth="'员工管理:新增员工'"
<el-button v-auth="'员工管理:批量导入'" type="primary" round @click="batchImport">批量导入</el-button> type="info"
<el-button v-auth="'员工管理:批量删除'" type="primary" round @click="delAllSelection">批量删除</el-button> round
@click="addTeacher">新增教师</el-button>
<el-button v-auth="'员工管理:批量导入'"
type="primary"
round
@click="batchImport">批量导入</el-button>
<el-button v-auth="'员工管理:批量删除'"
type="primary"
round
@click="delAllSelection">批量删除</el-button>
</div> </div>
</div> </div>
<el-table :data="listData" class="table" ref="table" stripe header-align="center" @selection-change="handleSelectionChange"> <el-table :data="listData"
<el-table-column type="selection" width="55" align="center"></el-table-column> class="table"
<el-table-column type="index" label="序号" width="55" align="center"></el-table-column> ref="table"
<el-table-column prop="userName" label="职工姓名" align="center"></el-table-column> stripe
<el-table-column prop="workNumber" label="职工工号" align="center"></el-table-column> header-align="center"
<el-table-column prop="dept" label="部门" align="center"></el-table-column> @selection-change="handleSelectionChange">
<el-table-column prop="roleName" label="账号角色" align="center"></el-table-column> <el-table-column type="selection"
<el-table-column prop="logInNumber" label="登录次数" align="center"></el-table-column> width="55"
<el-table-column prop="lastLoginTime" label="上次登录时间" align="center"></el-table-column> align="center"></el-table-column>
<el-table-column label="操作" width="200" align="center"> <el-table-column type="index"
label="序号"
width="55"
align="center"></el-table-column>
<el-table-column prop="userName"
label="教师姓名"
align="center"></el-table-column>
<el-table-column prop="workNumber"
label="教师工号"
align="center"></el-table-column>
<el-table-column prop="dept"
label="部门"
align="center"></el-table-column>
<el-table-column prop="roleName"
label="账号角色"
align="center"></el-table-column>
<el-table-column prop="logInNumber"
label="登录次数"
align="center"></el-table-column>
<el-table-column prop="lastLoginTime"
label="上次登录时间"
align="center"></el-table-column>
<el-table-column label="操作"
width="200"
align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button v-auth="'员工管理:员工查看'" type="text" @click="showTeacher(scope.row)">查看</el-button> <el-button v-auth="'员工管理:员工查看'"
<el-button v-auth="'员工管理:员工编辑'" type="text" @click="editTeacher(scope.row)">编辑</el-button> type="text"
<el-button v-auth="'员工管理:重置密码'" type="text" @click="resetPassword(scope.row)">重置密码</el-button> @click="showTeacher(scope.row)">查看</el-button>
<el-button v-auth="'员工管理:员工删除'" type="text" @click="delTeacher(scope.row)">删除</el-button> <el-button v-auth="'员工管理:员工编辑'"
type="text"
@click="editTeacher(scope.row)">编辑</el-button>
<el-button v-auth="'员工管理:重置密码'"
type="text"
@click="resetPassword(scope.row)">重置密码</el-button>
<el-button v-auth="'员工管理:员工删除'"
type="text"
@click="delTeacher(scope.row)">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="pagination"> <div class="pagination">
<el-pagination background layout="total, prev, pager, next" :current-page="page" @current-change="handleCurrentChange" :total="total"></el-pagination> <el-pagination background
layout="total, prev, pager, next"
:current-page="page"
@current-change="handleCurrentChange"
:total="total"></el-pagination>
</div> </div>
</div> </div>
<el-dialog :title="isDetail ? '查看员工' : (isAdd ? '新增员工' : '编辑员工')" :visible.sync="teacherVisible" <el-dialog :title="isDetail ? '查看教师' : (isAdd ? '新增教师' : '编辑教师')"
width="30%" @close="closeTeacher" class="dialog" :close-on-click-modal="false"> :visible.sync="teacherVisible"
<el-form ref="form" :model="form" :rules="rules" label-width="150px" :disabled="isDetail" style='margin-right: 80px;'> width="30%"
<el-form-item prop="workNumber" label="工号"> @close="closeTeacher"
<el-input v-model.trim="form.workNumber" placeholder="请输入职工工号" @blur="workNumberChange"></el-input> class="dialog"
:close-on-click-modal="false">
<el-form ref="form"
:model="form"
:rules="rules"
label-width="150px"
:disabled="isDetail"
style='margin-right: 80px;'>
<el-form-item prop="workNumber"
label="工号">
<el-input v-model.trim="form.workNumber"
placeholder="请输入教师工号"
@blur="workNumberChange"></el-input>
</el-form-item> </el-form-item>
<el-form-item prop="userName" label="用户姓名"> <el-form-item prop="userName"
<el-input v-model.trim="form.userName" placeholder="请输入员工姓名"></el-input> label="用户姓名">
<el-input v-model.trim="form.userName"
placeholder="请输入教师姓名"></el-input>
</el-form-item> </el-form-item>
<el-form-item prop="roleValue" label="账号角色"> <el-form-item prop="roleValue"
<el-select v-model="form.roleValue" @change="roleChange" @remove-tag="roleRemove" multiple style="width: 100%;height: 32px"> label="账号角色">
<el-option <el-select v-model="form.roleValue"
v-for="item in roleList" @change="roleChange"
@remove-tag="roleRemove"
multiple
style="width: 100%;height: 32px">
<el-option v-for="item in roleList"
:key="item.id" :key="item.id"
:label="item.roleName" :label="item.roleName"
:value="item.id"> :value="item.id">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item prop="uniqueIdentification" label="唯一标识"> <el-form-item prop="uniqueIdentification"
<el-input disabled v-model.trim="form.uniqueIdentification" placeholder="请输入职工工号获取唯一标识"></el-input> label="唯一标识">
<el-input disabled
v-model.trim="form.uniqueIdentification"
placeholder="请输入教师工号获取唯一标识"></el-input>
</el-form-item> </el-form-item>
<el-form-item v-for="item in form.roleAndDeptList" :label="`${item.roleName}所属部门`" :rules="{ <el-form-item v-for="item in form.roleAndDeptList"
:label="`${item.roleName}所属部门`"
:rules="{
required: true, message: '请选择', trigger: 'change' required: true, message: '请选择', trigger: 'change'
}"> }">
<el-cascader <el-cascader v-model="item.cascaderValue"
v-model="item.cascaderValue"
:options="orgList" :options="orgList"
:props="casProps" :props="casProps"
style="width: 100%" style="width: 100%"></el-cascader>
></el-cascader>
</el-form-item> </el-form-item>
<el-form-item prop="phone" label="手机号"> <el-form-item prop="phone"
<el-input v-model.trim="form.phone" placeholder="请输入手机号" maxlength="11"></el-input> label="手机号">
<el-input v-model.trim="form.phone"
placeholder="请输入手机号"
maxlength="11"></el-input>
</el-form-item> </el-form-item>
<el-form-item prop="email" label="邮箱"> <el-form-item prop="email"
<el-input v-model.trim="form.email" placeholder="请输入邮箱"></el-input> label="邮箱">
<el-input v-model.trim="form.email"
placeholder="请输入邮箱"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer" v-if="!isDetail"> <span slot="footer"
class="dialog-footer"
v-if="!isDetail">
<el-button @click="closeTeacher"> </el-button> <el-button @click="closeTeacher"> </el-button>
<el-button type="primary" @click="saveSure('form')"> </el-button> <el-button type="primary"
@click="saveSure('form')"> </el-button>
</span> </span>
</el-dialog> </el-dialog>
<el-dialog title="批量导入" :visible.sync="importVisible" width="24%" :close-on-click-modal="false"> <el-dialog title="批量导入"
:visible.sync="importVisible"
width="24%"
:close-on-click-modal="false">
<div style="text-align: center"> <div style="text-align: center">
<div style="margin-bottom: 10px;"> <div style="margin-bottom: 10px;">
<el-button type="primary" @click="downLoad">模板下载<i class="el-icon-download el-icon--right"></i></el-button> <el-button type="primary"
@click="downLoad">模板下载<i class="el-icon-download el-icon--right"></i></el-button>
</div> </div>
<el-upload <el-upload name="file"
name="file"
accept=".xls,.xlsx" accept=".xls,.xlsx"
:on-remove="handleRemove" :on-remove="handleRemove"
:on-error="uploadError" :on-error="uploadError"
@ -103,15 +185,19 @@
:on-exceed="handleExceed" :on-exceed="handleExceed"
:action="this.api.importStaff" :action="this.api.importStaff"
:file-list="uploadList" :file-list="uploadList"
:headers="headers" :headers="headers">
> <el-button type="primary"
<el-button type="primary" class="ml20">上传文件<i class="el-icon-upload2 el-icon--right"></i></el-button> class="ml20">上传文件<i class="el-icon-upload2 el-icon--right"></i></el-button>
</el-upload> </el-upload>
<el-link v-if="uploadFaild" type="primary" @click="showFaild">部分数据导入失败查看失败原因</el-link> <el-link v-if="uploadFaild"
type="primary"
@click="showFaild">部分数据导入失败查看失败原因</el-link>
</div> </div>
<span slot="footer" class="dialog-footer"> <span slot="footer"
class="dialog-footer">
<el-button @click="importVisible = false"> </el-button> <el-button @click="importVisible = false"> </el-button>
<el-button type="primary" @click="uploadSure"> </el-button> <el-button type="primary"
@click="uploadSure"> </el-button>
</span> </span>
</el-dialog> </el-dialog>
</div> </div>
@ -159,7 +245,7 @@ export default {
{ required: true, message: "请输入工号", trigger: 'blur' }, { required: true, message: "请输入工号", trigger: 'blur' },
{ {
pattern: /^[A-Za-z0-9]*$/, pattern: /^[A-Za-z0-9]*$/,
message: "职工工号必须为数字或英文", message: "教师工号必须为数字或英文",
trigger: "blur" trigger: "blur"
} }
], ],
@ -500,7 +586,7 @@ export default {
}).catch(() => { }).catch(() => {
}); });
} else { } else {
util.errorMsg("请先选择员工 !"); util.errorMsg("请先选择教师 !");
} }
}, },
batchImport () { batchImport () {

@ -2,11 +2,13 @@
<div> <div>
<div> <div>
<div class="flex-between m-b-20"> <div class="flex-between m-b-20">
<h6 class="p-title" style="margin-bottom: 0">员工组织架构</h6> <h6 class="p-title"
<el-button type="text" @click="addMajor" v-auth="'员工管理:新增专业'">添加</el-button> style="margin-bottom: 0">教师组织架构</h6>
<el-button type="text"
@click="addMajor"
v-auth="'员工管理:新增专业'">添加</el-button>
</div> </div>
<org-tree <org-tree :data="orgList"
:data="orgList"
show-checkbox show-checkbox
default-expand-all default-expand-all
ref="orgTree" ref="orgTree"
@ -15,26 +17,23 @@
:expand-on-click-node="false" :expand-on-click-node="false"
@node-click="getSingle" @node-click="getSingle"
@check="getCheck" @check="getCheck"
:props="{children: 'children', label: 'label', isLeaf: 'leaf'}" :props="{children: 'children', label: 'label', isLeaf: 'leaf'}">
> <span class="custom-tree-node"
<span class="custom-tree-node" slot-scope="{ node, data }"> slot-scope="{ node, data }">
<span style="display: inline-block; margin-right: 20px">{{ node.label }}</span> <span style="display: inline-block; margin-right: 20px">{{ node.label }}</span>
<span> <span>
<el-button <el-button v-auth="'员工管理:新增专业'"
v-auth="'员工管理:新增专业'"
type="text" type="text"
icon="el-icon-edit-outline" icon="el-icon-edit-outline"
@click="() => handleEdit(node, data)"> @click="() => handleEdit(node, data)">
</el-button> </el-button>
<el-button <el-button v-auth="'员工管理:编辑专业'"
v-auth="'员工管理:编辑专业'"
v-if="node.level === 1" v-if="node.level === 1"
type="text" type="text"
icon="el-icon-circle-plus-outline" icon="el-icon-circle-plus-outline"
@click="() => handleAdd(node, data)"> @click="() => handleAdd(node, data)">
</el-button> </el-button>
<el-button <el-button v-auth="'员工管理:删除专业'"
v-auth="'员工管理:删除专业'"
type="text" type="text"
icon="el-icon-delete" icon="el-icon-delete"
@click="() => handleDel(node, data)"> @click="() => handleDel(node, data)">
@ -44,27 +43,47 @@
</org-tree> </org-tree>
</div> </div>
<el-dialog :title="Form.staffArchitectureId ? '编辑部门' : '新增部门'" :visible.sync="majorVisible" width="24%" center @close="closeAdd" :close-on-click-modal="false"> <el-dialog :title="Form.staffArchitectureId ? '编辑部门' : '新增部门'"
<el-form ref="Form" :model="Form" :rules="rules"> :visible.sync="majorVisible"
width="24%"
center
@close="closeAdd"
:close-on-click-modal="false">
<el-form ref="Form"
:model="Form"
:rules="rules">
<el-form-item prop="staffArchitectureName"> <el-form-item prop="staffArchitectureName">
<el-input placeholder="请输入部门名称" v-model="Form.staffArchitectureName"></el-input> <el-input placeholder="请输入部门名称"
v-model="Form.staffArchitectureName"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer"
class="dialog-footer">
<el-button @click="majorVisible = false"> </el-button> <el-button @click="majorVisible = false"> </el-button>
<el-button type="primary" @click="sure('Form')"> </el-button> <el-button type="primary"
@click="sure('Form')"> </el-button>
</span> </span>
</el-dialog> </el-dialog>
<el-dialog :title="Form.gradeId ? '编辑部门' : '新增部门'" :visible.sync="depVisible" width="24%" center @close="closeAdd" :close-on-click-modal="false"> <el-dialog :title="Form.gradeId ? '编辑部门' : '新增部门'"
<el-form ref="Form1" :model="Form" :rules="rules"> :visible.sync="depVisible"
width="24%"
center
@close="closeAdd"
:close-on-click-modal="false">
<el-form ref="Form1"
:model="Form"
:rules="rules">
<el-form-item prop="gradeName"> <el-form-item prop="gradeName">
<el-input placeholder="请输入部门名称" v-model="Form.gradeName"></el-input> <el-input placeholder="请输入部门名称"
v-model="Form.gradeName"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer"
class="dialog-footer">
<el-button @click="depVisible = false"> </el-button> <el-button @click="depVisible = false"> </el-button>
<el-button type="primary" @click="sureDepartment('Form1')"> </el-button> <el-button type="primary"
@click="sureDepartment('Form1')"> </el-button>
</span> </span>
</el-dialog> </el-dialog>
</div> </div>
@ -302,7 +321,7 @@ export default {
.side_icon i { .side_icon i {
cursor: pointer; cursor: pointer;
font-size: 20px; font-size: 20px;
color: #9278FF; color: #9278ff;
} }
.side_tree { .side_tree {
@ -312,7 +331,7 @@ export default {
} }
.side_tree i { .side_tree i {
color: #9278FF; color: #9278ff;
margin-left: 10px; margin-left: 10px;
} }
@ -339,7 +358,7 @@ export default {
} }
.two_active { .two_active {
color: #9278FF; color: #9278ff;
} }
/* .two_active:hover{ /* .two_active:hover{
@ -348,7 +367,7 @@ export default {
} */ } */
.two_back:hover { .two_back:hover {
cursor: pointer; cursor: pointer;
color: #9278FF; color: #9278ff;
} }
.mar_top { .mar_top {
@ -382,11 +401,13 @@ export default {
transform: rotate(180deg); transform: rotate(180deg);
} }
.list-enter-active, .list-leave-active { .list-enter-active,
.list-leave-active {
transition: all 1s; transition: all 1s;
} }
.list-enter, .list-leave-to { .list-enter,
.list-leave-to {
opacity: 0; opacity: 0;
transform: translateY(-30px); transform: translateY(-30px);
} }

Loading…
Cancel
Save