|
|
@ -9,9 +9,9 @@ |
|
|
|
</li> |
|
|
|
</li> |
|
|
|
</ul> |
|
|
|
</ul> |
|
|
|
<div> |
|
|
|
<div> |
|
|
|
<el-button type="text" @click="add">复制专家登录链接</el-button> |
|
|
|
<el-button type="text" @click="copy">复制专家登录链接</el-button> |
|
|
|
<el-button type="primary" @click="add" v-auth="'/system:后台账号:新增员工'">新增专家</el-button> |
|
|
|
<el-button type="primary" @click="add">新增专家</el-button> |
|
|
|
<el-button type="primary" @click="batchDel" v-auth="'/system:后台账号:批量导入'">批量删除</el-button> |
|
|
|
<el-button type="primary" @click="batchDel">批量删除</el-button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
@ -21,18 +21,18 @@ |
|
|
|
<el-table-column type="index" width="60" label="序号" align="center"></el-table-column> |
|
|
|
<el-table-column type="index" width="60" label="序号" align="center"></el-table-column> |
|
|
|
<el-table-column prop="userName" label="姓名" align="center" min-width="100"></el-table-column> |
|
|
|
<el-table-column prop="userName" label="姓名" align="center" min-width="100"></el-table-column> |
|
|
|
<el-table-column prop="phone" label="手机号" align="center" width="120"></el-table-column> |
|
|
|
<el-table-column prop="phone" label="手机号" align="center" width="120"></el-table-column> |
|
|
|
<el-table-column prop="staffArchitectureName" label="现所在单位" align="center" min-width="200"></el-table-column> |
|
|
|
<el-table-column prop="currentUnit" label="现所在单位" align="center" min-width="200"></el-table-column> |
|
|
|
<el-table-column prop="roleName" label="职务" align="center" min-width="200"></el-table-column> |
|
|
|
<el-table-column prop="post" label="职务" align="center" min-width="200"></el-table-column> |
|
|
|
<el-table-column prop="lastLoginTime" label="登录次数" align="center" width="130"></el-table-column> |
|
|
|
<el-table-column prop="logInNumber" label="登录次数" align="center" width="130"></el-table-column> |
|
|
|
<el-table-column prop="lastLoginTime" label="上次登录时间" align="center" width="130"></el-table-column> |
|
|
|
<el-table-column prop="lastLoginTime" label="上次登录时间" align="center" width="170"></el-table-column> |
|
|
|
<el-table-column label="操作" align="center" width="300"> |
|
|
|
<el-table-column label="操作" align="center" width="300"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<el-button type="text" v-auth="'/system:后台账号:查看'" @click="queryStaff(scope.row, true)">查看</el-button> |
|
|
|
<el-button type="text" @click="queryExpert(scope.row, true)">查看</el-button> |
|
|
|
<el-button type="text" v-auth="'/system:后台账号:编辑'" @click="queryStaff(scope.row, false)">编辑</el-button> |
|
|
|
<el-button type="text" @click="queryExpert(scope.row, false)">编辑</el-button> |
|
|
|
<el-button type="text" v-auth="'/system:后台账号:重置密码'" @click="resetPassword(scope.row)">重置密码</el-button> |
|
|
|
<el-button type="text" @click="resetPassword(scope.row)">重置密码</el-button> |
|
|
|
<el-button type="text" v-auth="'/system:后台账号:删除'" @click="delStaff(scope.row)">删除</el-button> |
|
|
|
<el-button type="text" @click="del(scope.row)">删除</el-button> |
|
|
|
<el-switch v-auth="'/match:启用'" v-model="scope.row.ztOpen" :active-value="0" :inactive-value="1" |
|
|
|
<el-switch v-model="scope.row.isEnable" :active-value="1" :inactive-value="0" style="margin: 0 10px 0 5px" |
|
|
|
style="margin: 0 10px 0 5px" :active-text="scope.row.ztOpen ? '关' : '开'" |
|
|
|
:active-text="scope.row.isEnable ? '开' : '关'" |
|
|
|
@change="switchOff($event, scope.row, scope.$index)"></el-switch> |
|
|
|
@change="switchOff($event, scope.row, scope.$index)"></el-switch> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table-column> |
|
|
@ -43,7 +43,7 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<el-drawer :title="isDetail ? '查看' : (form.accountId ? '编辑' : '新增') + '专家'" :visible.sync="expertVisible" |
|
|
|
<el-drawer :title="isDetail ? '查看' : (form.accountId ? '编辑' : '新增') + '专家'" :visible.sync="expertVisible" |
|
|
|
size="580px" class="dialog" :close-on-click-modal="false" custom-class="expert-dia" @close="closeStaff"> |
|
|
|
size="580px" class="dialog" :wrapperClosable="false" custom-class="expert-dia" @close="closeExpert"> |
|
|
|
<el-form class="overflow" ref="form" :model="form" :rules="rules" label-width="120px" :disabled="isDetail"> |
|
|
|
<el-form class="overflow" ref="form" :model="form" :rules="rules" label-width="120px" :disabled="isDetail"> |
|
|
|
<el-form-item prop="userName" label="姓名"> |
|
|
|
<el-form-item prop="userName" label="姓名"> |
|
|
|
<el-input v-model.trim="form.userName" placeholder="请输入姓名"></el-input> |
|
|
|
<el-input v-model.trim="form.userName" placeholder="请输入姓名"></el-input> |
|
|
@ -51,43 +51,43 @@ |
|
|
|
<el-form-item prop="phone" label="手机号"> |
|
|
|
<el-form-item prop="phone" label="手机号"> |
|
|
|
<el-input v-model.trim="form.phone" placeholder="请输入手机号" maxlength="11"></el-input> |
|
|
|
<el-input v-model.trim="form.phone" placeholder="请输入手机号" maxlength="11"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="userName" label="登录密码"> |
|
|
|
<el-form-item prop="password" label="登录密码"> |
|
|
|
<el-input type="password" v-model.trim="form.userName" placeholder="请输入密码" show-password></el-input> |
|
|
|
<el-input type="password" v-model.trim="form.password" placeholder="为空则默认密码:手机号码后六位" show-password></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="email" label="电子邮箱"> |
|
|
|
<el-form-item prop="email" label="电子邮箱"> |
|
|
|
<el-input v-model.trim="form.email" placeholder="请输入电子邮箱"></el-input> |
|
|
|
<el-input v-model.trim="form.email" placeholder="请输入电子邮箱"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="email" label="性别"> |
|
|
|
<el-form-item prop="sex" label="性别"> |
|
|
|
<el-radio v-model="form.radio" label="1">男</el-radio> |
|
|
|
<el-radio v-model="form.sex" :label="1">男</el-radio> |
|
|
|
<el-radio v-model="form.radio" label="2">女</el-radio> |
|
|
|
<el-radio v-model="form.sex" :label="2">女</el-radio> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="email" label="学历"> |
|
|
|
<el-form-item prop="education" label="学历"> |
|
|
|
<el-select v-model="form.status" clearable placeholder="请选择学历"> |
|
|
|
<el-select v-model="form.education" clearable placeholder="请选择学历"> |
|
|
|
<el-option v-for="(item, i) in edus" :key="i" :label="item.name" :value="item.id"></el-option> |
|
|
|
<el-option v-for="(item, i) in educations" :key="i" :value="item.name"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="email" label="学位"> |
|
|
|
<el-form-item prop="academicDegree" label="学位"> |
|
|
|
<el-input v-model.trim="form.email" placeholder="请输入学位"></el-input> |
|
|
|
<el-input v-model.trim="form.academicDegree" placeholder="请输入学位"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="email" label="职称"> |
|
|
|
<el-form-item prop="title" label="职称"> |
|
|
|
<el-input v-model.trim="form.email" placeholder="请输入职称"></el-input> |
|
|
|
<el-input v-model.trim="form.title" placeholder="请输入职称"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="email" label="职务"> |
|
|
|
<el-form-item prop="post" label="职务"> |
|
|
|
<el-input v-model.trim="form.email" placeholder="请输入职务"></el-input> |
|
|
|
<el-input v-model.trim="form.post" placeholder="请输入职务"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="email" label="毕业院校"> |
|
|
|
<el-form-item prop="universityFrom" label="毕业院校"> |
|
|
|
<el-input v-model.trim="form.email" placeholder="请输入毕业院校"></el-input> |
|
|
|
<el-input v-model.trim="form.universityFrom" placeholder="请输入毕业院校"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="email" label="学术专长"> |
|
|
|
<el-form-item prop="academicSpecialties" label="学术专长"> |
|
|
|
<el-input v-model.trim="form.email" placeholder="请输入学术专长"></el-input> |
|
|
|
<el-input v-model.trim="form.academicSpecialties" placeholder="请输入学术专长"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item prop="email" label="现所在单位"> |
|
|
|
<el-form-item prop="currentUnit" label="现所在单位"> |
|
|
|
<el-input v-model.trim="form.email" placeholder="请输入现所在单位"></el-input> |
|
|
|
<el-input v-model.trim="form.currentUnit" placeholder="请输入现所在单位"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
</el-form> |
|
|
|
<div class="btns"> |
|
|
|
<div class="btns"> |
|
|
|
<el-button @click="expertVisible = false">取消</el-button> |
|
|
|
<el-button @click="expertVisible = false">取消</el-button> |
|
|
|
<el-button v-if="!isDetail" type="primary" @click="submitStaff">保存</el-button> |
|
|
|
<el-button v-if="!isDetail" type="primary" @click="submitExpert">保存</el-button> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</el-drawer> |
|
|
|
</el-drawer> |
|
|
|
|
|
|
|
|
|
|
@ -97,6 +97,7 @@ |
|
|
|
<script> |
|
|
|
<script> |
|
|
|
import Util from '@/libs/util' |
|
|
|
import Util from '@/libs/util' |
|
|
|
import Setting from '@/setting' |
|
|
|
import Setting from '@/setting' |
|
|
|
|
|
|
|
// import clipboard from '@/libs/clipboard' |
|
|
|
export default { |
|
|
|
export default { |
|
|
|
data () { |
|
|
|
data () { |
|
|
|
const phonePass = (rule, value, callback) => { |
|
|
|
const phonePass = (rule, value, callback) => { |
|
|
@ -109,7 +110,7 @@ export default { |
|
|
|
callback(new Error('请输入正确手机号格式')) |
|
|
|
callback(new Error('请输入正确手机号格式')) |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
callback() |
|
|
|
callback(new Error('请输入手机号')) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
const emailPass = (rule, value, callback) => { |
|
|
|
const emailPass = (rule, value, callback) => { |
|
|
@ -128,19 +129,26 @@ export default { |
|
|
|
return { |
|
|
|
return { |
|
|
|
isDetail: false, |
|
|
|
isDetail: false, |
|
|
|
keyWord: '', |
|
|
|
keyWord: '', |
|
|
|
edus: [], |
|
|
|
|
|
|
|
form: { |
|
|
|
form: { |
|
|
|
accountId: '', |
|
|
|
accountId: '', |
|
|
|
userName: '', |
|
|
|
userName: '', |
|
|
|
phone: '', |
|
|
|
phone: '', |
|
|
|
roleList: [], |
|
|
|
|
|
|
|
uniqueIdentification: '', |
|
|
|
uniqueIdentification: '', |
|
|
|
workNumber: '', |
|
|
|
academicDegree: '', |
|
|
|
email: '', |
|
|
|
email: '', |
|
|
|
account: '', |
|
|
|
academicSpecialties: '', |
|
|
|
staffArchitectureId: [] |
|
|
|
currentUnit: '', |
|
|
|
|
|
|
|
education: '', |
|
|
|
|
|
|
|
nickname: '', |
|
|
|
|
|
|
|
title: '', |
|
|
|
|
|
|
|
post: '', |
|
|
|
|
|
|
|
universityFrom: '', |
|
|
|
|
|
|
|
sex: 1, |
|
|
|
}, |
|
|
|
}, |
|
|
|
rules: { |
|
|
|
rules: { |
|
|
|
|
|
|
|
userName: [ |
|
|
|
|
|
|
|
{ required: true, message: '请输入姓名', trigger: "blur" } |
|
|
|
|
|
|
|
], |
|
|
|
phone: [ |
|
|
|
phone: [ |
|
|
|
{ required: true, validator: phonePass, trigger: 'blur' } |
|
|
|
{ required: true, validator: phonePass, trigger: 'blur' } |
|
|
|
], |
|
|
|
], |
|
|
@ -148,6 +156,36 @@ export default { |
|
|
|
{ validator: emailPass, trigger: 'blur' } |
|
|
|
{ validator: emailPass, trigger: 'blur' } |
|
|
|
] |
|
|
|
] |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
educations: [ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
id: 1, |
|
|
|
|
|
|
|
name: '初中及以下' |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
id: 2, |
|
|
|
|
|
|
|
name: '高中' |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
id: 3, |
|
|
|
|
|
|
|
name: '中专/中技' |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
id: 4, |
|
|
|
|
|
|
|
name: '大专' |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
id: 5, |
|
|
|
|
|
|
|
name: '本科' |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
id: 6, |
|
|
|
|
|
|
|
name: '硕士' |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
id: 7, |
|
|
|
|
|
|
|
name: '博士' |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
], |
|
|
|
list: [], |
|
|
|
list: [], |
|
|
|
page: 1, |
|
|
|
page: 1, |
|
|
|
pageSize: 10, |
|
|
|
pageSize: 10, |
|
|
@ -157,7 +195,7 @@ export default { |
|
|
|
expertVisible: false, |
|
|
|
expertVisible: false, |
|
|
|
phoneRepeat: false, |
|
|
|
phoneRepeat: false, |
|
|
|
emailRepeat: false, |
|
|
|
emailRepeat: false, |
|
|
|
submiting: false // 新增编辑防抖标识 |
|
|
|
submiting: false, |
|
|
|
}; |
|
|
|
}; |
|
|
|
}, |
|
|
|
}, |
|
|
|
watch: { |
|
|
|
watch: { |
|
|
@ -167,19 +205,22 @@ export default { |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
mounted () { |
|
|
|
mounted () { |
|
|
|
// this.getRole() |
|
|
|
this.getList() |
|
|
|
}, |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
methods: { |
|
|
|
getList () { |
|
|
|
getList () { |
|
|
|
this.$post(this.api.staffList, { |
|
|
|
this.$post(this.api.expertList, { |
|
|
|
type: this.studentType || 1, |
|
|
|
type: 1, |
|
|
|
staffArchitectureId: this.$refs.orgTree.getCurrentKey() || '', |
|
|
|
|
|
|
|
keyWord: this.keyWord, |
|
|
|
keyWord: this.keyWord, |
|
|
|
pageNum: this.page, |
|
|
|
pageNum: this.page, |
|
|
|
pageSize: this.pageSize |
|
|
|
pageSize: this.pageSize |
|
|
|
}).then(res => { |
|
|
|
}).then(({ page }) => { |
|
|
|
this.list = res.page.records |
|
|
|
const list = page.records |
|
|
|
this.total = res.page.total |
|
|
|
// list.map(e => { |
|
|
|
|
|
|
|
// e.cryptoPhone = |
|
|
|
|
|
|
|
// }) |
|
|
|
|
|
|
|
this.list = list |
|
|
|
|
|
|
|
this.total = page.total |
|
|
|
}).catch(err => { }) |
|
|
|
}).catch(err => { }) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 切换页码 |
|
|
|
// 切换页码 |
|
|
@ -196,7 +237,7 @@ export default { |
|
|
|
this.getList() |
|
|
|
this.getList() |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 删除 |
|
|
|
// 删除 |
|
|
|
delStaff (row) { |
|
|
|
del (row) { |
|
|
|
this.$confirm("确定要删除吗?", "提示", { |
|
|
|
this.$confirm("确定要删除吗?", "提示", { |
|
|
|
type: "warning" |
|
|
|
type: "warning" |
|
|
|
}).then(() => { |
|
|
|
}).then(() => { |
|
|
@ -208,21 +249,18 @@ export default { |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 重置密码 |
|
|
|
// 重置密码 |
|
|
|
async resetPassword (row) { |
|
|
|
async resetPassword (row) { |
|
|
|
const newPwd = Setting.initialPassword |
|
|
|
|
|
|
|
await this.$confirm(`重置后的密码为:手机号码后六位,确定要重置吗?`, "提示", { type: "warning" }) |
|
|
|
await this.$confirm(`重置后的密码为:手机号码后六位,确定要重置吗?`, "提示", { type: "warning" }) |
|
|
|
await this.$get(`${this.api.resetPwd}?userId=${row.userId}&newPwd=${newPwd}`) |
|
|
|
await this.$get(this.api.expertResetPassword, { |
|
|
|
|
|
|
|
accountId: row.accountId |
|
|
|
|
|
|
|
}) |
|
|
|
Util.successMsg('重置成功') |
|
|
|
Util.successMsg('重置成功') |
|
|
|
}, |
|
|
|
}, |
|
|
|
async switchOff (val, row) { |
|
|
|
async switchOff (val, row) { |
|
|
|
this.$post(this.api.disabledEventsCompetition, { |
|
|
|
await this.$get(this.api.updateAccountEnable, { |
|
|
|
competitionId: row.id, |
|
|
|
id: row.accountId, |
|
|
|
isOpen: val, |
|
|
|
isEnable: val, |
|
|
|
type: 0 // 禁用平台来源(0中台,1职站) |
|
|
|
}) |
|
|
|
}).then(res => { |
|
|
|
Util.successMsg(val ? '启用成功' : '禁用成功') |
|
|
|
util.successMsg(val == 1 ? '禁用成功' : '启用成功') |
|
|
|
|
|
|
|
}).catch(err => { }) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await this.$post(`${this.api.refreshPageNotification}?content=1`) |
|
|
|
|
|
|
|
}, |
|
|
|
}, |
|
|
|
// 添加员工 |
|
|
|
// 添加员工 |
|
|
|
add () { |
|
|
|
add () { |
|
|
@ -242,10 +280,11 @@ export default { |
|
|
|
type: 'warning', |
|
|
|
type: 'warning', |
|
|
|
closeOnClickModal: false, |
|
|
|
closeOnClickModal: false, |
|
|
|
}) |
|
|
|
}) |
|
|
|
await this.$post(this.api.paperDel, { |
|
|
|
const param = [] |
|
|
|
delete: false, |
|
|
|
list.forEach(e => { |
|
|
|
ids: list.map(e => e.paperId) |
|
|
|
param.push(`accountIds=${e.accountId}`) |
|
|
|
}) |
|
|
|
}) |
|
|
|
|
|
|
|
await this.$post(`${this.api.delStaff}?${param.join('&')}`) |
|
|
|
Util.successMsg('删除成功') |
|
|
|
Util.successMsg('删除成功') |
|
|
|
this.multipleSelection = [] |
|
|
|
this.multipleSelection = [] |
|
|
|
this.$refs.table.clearSelection() |
|
|
|
this.$refs.table.clearSelection() |
|
|
@ -255,94 +294,26 @@ export default { |
|
|
|
Util.warningMsg('请选择数据') |
|
|
|
Util.warningMsg('请选择数据') |
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
// 复制链接 |
|
|
|
|
|
|
|
copy (e) { |
|
|
|
|
|
|
|
// clipboard(this.link, e, '链接已复制!') |
|
|
|
|
|
|
|
}, |
|
|
|
// 编辑/查看 |
|
|
|
// 编辑/查看 |
|
|
|
queryStaff (row, isDetail) { |
|
|
|
async queryExpert (row, isDetail) { |
|
|
|
const archId = [] |
|
|
|
|
|
|
|
// 处理部门id |
|
|
|
|
|
|
|
const handleArchId = (list, ids, parentId = []) => { |
|
|
|
|
|
|
|
list.map(e => { |
|
|
|
|
|
|
|
// 把部门id分割成二维数组,[[1, 2], [3, 4]],每个层级的id都要放进去,后端返回的是最后一级的id,无法回显 |
|
|
|
|
|
|
|
if (ids.includes(e.id)) { |
|
|
|
|
|
|
|
archId.push([...parentId, e.id]) |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
e.children && handleArchId(e.children, ids, [...parentId, e.id]) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
this.isDetail = isDetail |
|
|
|
this.isDetail = isDetail |
|
|
|
this.expertVisible = true |
|
|
|
this.expertVisible = true |
|
|
|
this.$get(`${this.api.staffDetail}?accountId=${row.accountId}`).then(res => { |
|
|
|
const { data } = await this.$get(`${this.api.expertDetail}?accountId=${row.accountId}`) |
|
|
|
const { data } = res |
|
|
|
|
|
|
|
const { staffArchitectureId, roleId } = data |
|
|
|
|
|
|
|
if (roleId) { |
|
|
|
|
|
|
|
const roleList = roleId.split(',').map(e => Number(e)) |
|
|
|
|
|
|
|
const list = this.roleList |
|
|
|
|
|
|
|
if (roleList.length) { |
|
|
|
|
|
|
|
let has = false // 是否在角色列表里有已选择的角色,全部都被删除了,则提示 |
|
|
|
|
|
|
|
for (const i in roleList) { |
|
|
|
|
|
|
|
if (list.find(n => n.id === roleList[i])) { |
|
|
|
|
|
|
|
has = true |
|
|
|
|
|
|
|
break |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (!has) { |
|
|
|
|
|
|
|
Util.warningMsg('角色被删请重新选择') |
|
|
|
|
|
|
|
data.roleList = [] |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
data.roleList = roleList |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (staffArchitectureId) { |
|
|
|
|
|
|
|
handleArchId(this.orgList, staffArchitectureId.split(',').map(e => Number(e))) |
|
|
|
|
|
|
|
data.staffArchitectureId = archId |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
this.form = data |
|
|
|
this.form = data |
|
|
|
this.originAccount = data.account |
|
|
|
|
|
|
|
this.originWorkNumber = data.workNumber |
|
|
|
|
|
|
|
}).catch(res => { }) |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
// 手机号判重 |
|
|
|
|
|
|
|
phoneChange () { |
|
|
|
|
|
|
|
const form = this.form |
|
|
|
|
|
|
|
const { phone } = form |
|
|
|
|
|
|
|
if (phone) { |
|
|
|
|
|
|
|
const { accountId } = form |
|
|
|
|
|
|
|
this.$post(`${this.api.checkEmailOrPhone}?phone=${phone}${accountId ? `&accountId=${accountId}` : ''}`).then(res => { |
|
|
|
|
|
|
|
this.phoneRepeat = false |
|
|
|
|
|
|
|
}).catch(err => { |
|
|
|
|
|
|
|
this.phoneRepeat = true |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
// 邮箱判重 |
|
|
|
|
|
|
|
emailChange () { |
|
|
|
|
|
|
|
const form = this.form |
|
|
|
|
|
|
|
const { email } = form |
|
|
|
|
|
|
|
if (email) { |
|
|
|
|
|
|
|
const { accountId } = form |
|
|
|
|
|
|
|
this.$post(`${this.api.checkEmailOrPhone}?email=${email}${accountId ? `&accountId=${accountId}` : ''}`).then(res => { |
|
|
|
|
|
|
|
this.emailRepeat = false |
|
|
|
|
|
|
|
}).catch(err => { |
|
|
|
|
|
|
|
this.emailRepeat = true |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
}, |
|
|
|
// 提交新增/编辑员工 |
|
|
|
// 提交 |
|
|
|
submitStaff () { |
|
|
|
submitExpert () { |
|
|
|
this.$refs.form.validate((valid) => { |
|
|
|
this.$refs.form.validate((valid) => { |
|
|
|
if (valid) { |
|
|
|
if (valid) { |
|
|
|
if (this.submiting) return false |
|
|
|
if (this.submiting) return false |
|
|
|
if (this.accountReapeat) return Util.warningMsg("该账号已存在") |
|
|
|
|
|
|
|
if (this.workNumberReapeat) return Util.warningMsg("该工号已存在") |
|
|
|
|
|
|
|
if (this.phoneRepeat) return Util.warningMsg("该手机号已存在") |
|
|
|
|
|
|
|
if (this.emailRepeat) return Util.warningMsg("该邮箱已存在") |
|
|
|
|
|
|
|
this.submiting = true |
|
|
|
this.submiting = true |
|
|
|
const form = JSON.parse(JSON.stringify(this.form)) |
|
|
|
const form = JSON.parse(JSON.stringify(this.form)) |
|
|
|
const ids = form.staffArchitectureId |
|
|
|
|
|
|
|
if (ids) form.staffArchitectureId = ids.map(e => e[e.length - 1]) |
|
|
|
|
|
|
|
if (form.accountId) { |
|
|
|
if (form.accountId) { |
|
|
|
this.$post(this.api.modifyStaff, form).then(res => { |
|
|
|
this.$post(this.api.modifyExpert, form).then(res => { |
|
|
|
Util.successMsg("编辑成功!") |
|
|
|
Util.successMsg("编辑成功!") |
|
|
|
this.expertVisible = false |
|
|
|
this.expertVisible = false |
|
|
|
setTimeout(() => { |
|
|
|
setTimeout(() => { |
|
|
@ -355,7 +326,7 @@ export default { |
|
|
|
}) |
|
|
|
}) |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
form.uniqueIdentification = new Date().getTime() |
|
|
|
form.uniqueIdentification = new Date().getTime() |
|
|
|
this.$post(this.api.saveStaff, form).then(res => { |
|
|
|
this.$post(this.api.addNewExperts, form).then(res => { |
|
|
|
Util.successMsg("新增成功!") |
|
|
|
Util.successMsg("新增成功!") |
|
|
|
this.expertVisible = false |
|
|
|
this.expertVisible = false |
|
|
|
setTimeout(() => { |
|
|
|
setTimeout(() => { |
|
|
@ -370,18 +341,23 @@ export default { |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
}) |
|
|
|
}, |
|
|
|
}, |
|
|
|
// 关闭新增员工对话框 |
|
|
|
// 关闭弹框 |
|
|
|
closeStaff () { |
|
|
|
closeExpert () { |
|
|
|
this.form = { |
|
|
|
this.form = { |
|
|
|
accountId: '', |
|
|
|
accountId: '', |
|
|
|
userName: '', |
|
|
|
userName: '', |
|
|
|
account: '', |
|
|
|
|
|
|
|
phone: '', |
|
|
|
phone: '', |
|
|
|
uniqueIdentification: '', |
|
|
|
uniqueIdentification: '', |
|
|
|
workNumber: '', |
|
|
|
academicDegree: '', |
|
|
|
email: '', |
|
|
|
email: '', |
|
|
|
staffArchitectureId: [], |
|
|
|
academicSpecialties: '', |
|
|
|
roleList: [] |
|
|
|
currentUnit: '', |
|
|
|
|
|
|
|
education: '', |
|
|
|
|
|
|
|
nickname: '', |
|
|
|
|
|
|
|
title: '', |
|
|
|
|
|
|
|
post: '', |
|
|
|
|
|
|
|
universityFrom: '', |
|
|
|
|
|
|
|
sex: 1, |
|
|
|
} |
|
|
|
} |
|
|
|
this.isDetail = false |
|
|
|
this.isDetail = false |
|
|
|
this.getList() |
|
|
|
this.getList() |
|
|
@ -393,7 +369,7 @@ export default { |
|
|
|
<style lang="scss" scoped> |
|
|
|
<style lang="scss" scoped> |
|
|
|
/deep/.expert-dia { |
|
|
|
/deep/.expert-dia { |
|
|
|
.overflow { |
|
|
|
.overflow { |
|
|
|
max-height: calc(100vh - 100px); |
|
|
|
max-height: calc(100vh - 137px); |
|
|
|
padding-right: 40px; |
|
|
|
padding-right: 40px; |
|
|
|
overflow: auto; |
|
|
|
overflow: auto; |
|
|
|
} |
|
|
|
} |
|
|
|