11 changed files with 1498 additions and 329 deletions
@ -0,0 +1,472 @@ |
|||
<template> |
|||
<div class="div_main"> |
|||
<div ref="searchCard" |
|||
class="div_search"> |
|||
<el-form ref="searchForm" |
|||
:inline="true" |
|||
:model="formData" |
|||
size="small"> |
|||
|
|||
<el-form-item label="统计类型" |
|||
prop="name" |
|||
label-width="90px"> |
|||
<el-radio-group v-model="formData.type"> |
|||
<el-radio label="0">本级工作人员</el-radio> |
|||
<el-radio label="1">本级及下级工作人员</el-radio> |
|||
|
|||
</el-radio-group> |
|||
|
|||
</el-form-item> |
|||
|
|||
<el-form-item label="组织" |
|||
prop="name" |
|||
label-width="90px"> |
|||
<el-cascader ref="myCascader" |
|||
v-model="agencyIdArray" |
|||
style="width:540px" |
|||
:key="iscascaderShow" |
|||
:options="casOptions" |
|||
:props="optionProps" |
|||
@change="handleChange" |
|||
clearable></el-cascader> |
|||
|
|||
</el-form-item> |
|||
|
|||
<el-form-item label="姓名" |
|||
prop="name" |
|||
label-width="90px"> |
|||
<el-input v-model="formData.name" |
|||
style="width:290px" |
|||
placeholder="请输入姓名" |
|||
:clearable="true"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="手机号" |
|||
prop="mobile" |
|||
label-width="90px"> |
|||
<el-input v-model="formData.mobile" |
|||
style="width:290px" |
|||
placeholder="请输入手机号" |
|||
:clearable="true"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="状态" |
|||
prop="status" |
|||
label-width="90px"> |
|||
<el-select v-model="formData.status" |
|||
style="width:290px" |
|||
placeholder="选择状态" |
|||
clearable> |
|||
<el-option v-for="item in statusList" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value"> |
|||
</el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
|
|||
<el-button type="primary" |
|||
size="small" |
|||
class="diy-button--search" |
|||
@click="handleSearch">查询</el-button> |
|||
<el-button class="diy-button--reset" |
|||
size="small" |
|||
@click="handleReset">重置</el-button> |
|||
|
|||
</el-form> |
|||
</div> |
|||
|
|||
<div class="div_table"> |
|||
<el-table :data="tableData" |
|||
ref="ref_customertable" |
|||
border |
|||
:height="tableHeight" |
|||
:header-cell-style="{background:'#2195FE',color:'#FFFFFF'}" |
|||
style="width: 100%;"> |
|||
<el-table-column label="所属组织" |
|||
header-align="center" |
|||
align="center" |
|||
prop="orgName"></el-table-column> |
|||
<el-table-column label="姓名" |
|||
header-align="center" |
|||
align="center" |
|||
width="120" |
|||
prop="userName"></el-table-column> |
|||
<el-table-column label="手机号" |
|||
header-align="center" |
|||
align="center" |
|||
width="120" |
|||
prop="telephoneNumber"></el-table-column> |
|||
<el-table-column label="性别" |
|||
header-align="center" |
|||
align="center" |
|||
width="80" |
|||
prop="gender"> |
|||
<template slot-scope="scope"> |
|||
<span v-if="scope.row.gender==='0'">{{'未知'}}</span> |
|||
<span v-if="scope.row.gender==='1'">{{'男'}}</span> |
|||
<span v-if="scope.row.gender==='2'">{{'女'}}</span> |
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column label="状态" |
|||
header-align="center" |
|||
align="center" |
|||
width="80" |
|||
prop="status"> |
|||
<template slot-scope="scope"> |
|||
<span v-if="scope.row.status==='0'">{{'未创建'}}</span> |
|||
<span v-if="scope.row.status==='1'">{{'已创建'}}</span> |
|||
|
|||
</template> |
|||
</el-table-column> |
|||
<el-table-column label="备注" |
|||
header-align="center" |
|||
align="center" |
|||
prop="remark"></el-table-column> |
|||
|
|||
<el-table-column :label="$t('handle')" |
|||
fixed="right" |
|||
header-align="center" |
|||
align="center" |
|||
width="200"> |
|||
<template slot-scope="scope"> |
|||
<el-button v-if="scope.row.status === '0'" |
|||
type="text" |
|||
size="small" |
|||
@click="handleEdit(scope.row,'add')">新增</el-button> |
|||
<el-button v-if="scope.row.status === '1'" |
|||
type="text" |
|||
size="small" |
|||
@click="handleEdit(scope.row,'edit')">修改</el-button> |
|||
<el-button v-if="scope.row.status === '1'" |
|||
type="text" |
|||
size="small" |
|||
@click="handleDetail(scope.row)">查看</el-button> |
|||
|
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<el-pagination :current-page="pageNo" |
|||
:page-sizes="[10, 20, 50, 100]" |
|||
:page-size="pageSize" |
|||
layout="total, sizes, prev, pager, next, jumper" |
|||
:total="total" |
|||
@size-change="pageSizeChangeHandle" |
|||
@current-change="pageCurrentChangeHandle"></el-pagination> |
|||
</div> |
|||
|
|||
<el-dialog v-if="showEdit" |
|||
:title="editTitle" |
|||
:visible.sync="showEdit" |
|||
width="850" |
|||
:before-close="dialogCancle"> |
|||
<edit-form ref="ref_edit" |
|||
@dialogOk="dialogOk" |
|||
@dialogCancle="dialogCancle"></edit-form> |
|||
</el-dialog> |
|||
<el-dialog v-if="showDetail" |
|||
title="详情" |
|||
:visible.sync="showDetail" |
|||
width="850" |
|||
:before-close="dialogCancle"> |
|||
<detail-form ref="ref_detail" |
|||
@dialogCancle="dialogCancle"></detail-form> |
|||
</el-dialog> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { mapGetters } from "vuex"; |
|||
import { requestPost } from "@/js/dai/request"; |
|||
import editForm from './editForm' |
|||
import detailForm from './detailForm' |
|||
export default { |
|||
data () { |
|||
return { |
|||
tableData: [], |
|||
statusList: [ |
|||
{ |
|||
value: '0', |
|||
label: '未创建' |
|||
}, |
|||
{ |
|||
value: '1', |
|||
label: '已创建' |
|||
} |
|||
], |
|||
selOrgId: '', |
|||
casOptions: [], |
|||
agencyIdArray: [], |
|||
iscascaderShow: 0, |
|||
optionProps: { |
|||
multiple: false, |
|||
// value: 'orgId', |
|||
// label: 'orgName', |
|||
// children: 'subAgencyList', |
|||
checkStrictly: true, |
|||
|
|||
lazy: true, |
|||
lazyLoad: this.lzayLoadAgency |
|||
}, |
|||
|
|||
pageNo: 1, |
|||
pageSize: 20, |
|||
total: 0, |
|||
formData: { |
|||
name: '', |
|||
status: '', |
|||
mobile: '', |
|||
type: '0', |
|||
orgId: '' |
|||
}, |
|||
|
|||
showEdit: false, |
|||
showDetail: false, |
|||
editTitle: '新增' |
|||
|
|||
} |
|||
}, |
|||
components: { |
|||
editForm, detailForm |
|||
}, |
|||
async created () { |
|||
await this.loadTable() |
|||
}, |
|||
watch: { |
|||
|
|||
}, |
|||
computed: { |
|||
...mapGetters(["clientHeight", "iframeHeight"]), |
|||
tableHeight () { |
|||
const h = this.clientHeight - 360 + this.iframeHeigh; |
|||
const _h = this.clientHeight - 360; |
|||
return this.$store.state.inIframe ? h : _h; |
|||
}, |
|||
}, |
|||
methods: { |
|||
|
|||
lzayLoadAgency (node, resolve) { |
|||
this.getAgency(node, resolve) |
|||
// setTimeout(() => { |
|||
// this.getAgency(node, resolve) |
|||
// }, 200) |
|||
}, |
|||
async getAgency (node, resolve) { |
|||
|
|||
const url = '/third/dataSync/ytorglist' |
|||
// const url = 'http://yapi.elinkservice.cn/mock/102/third/dataSync/ytorglist' |
|||
|
|||
let params = { |
|||
orgId: node.data ? node.data.value : '0', |
|||
|
|||
} |
|||
|
|||
const { data, code, msg } = await requestPost(url, params) |
|||
|
|||
if (code === 0) { |
|||
const nodes = data.map(item => ({ |
|||
value: item.orgId, // |
|||
label: item.orgName, |
|||
// leaf: node.level >= 2 // 5层级 |
|||
leaf: !item.haveChild // 5层级 |
|||
})) |
|||
resolve(nodes) |
|||
|
|||
} else { |
|||
this.$message.error(msg) |
|||
} |
|||
|
|||
}, |
|||
|
|||
handleChange (value) { |
|||
|
|||
if (value && value.length > 0) { |
|||
let selAgency = this.$refs["myCascader"].getCheckedNodes()[0].data |
|||
console.log(selAgency) |
|||
this.formData.orgId = selAgency.value |
|||
} else { |
|||
this.formData.orgId = '' |
|||
} |
|||
}, |
|||
|
|||
async loadTable () { |
|||
|
|||
const url = "/third/dataSync/page-user" |
|||
// const url = "http://yapi.elinkservice.cn/mock/102/third/dataSync/page-user" |
|||
const params = { |
|||
|
|||
pageNo: this.pageNo, |
|||
pageSize: this.pageSize, |
|||
...this.formData |
|||
} |
|||
const { data, code, msg } = await requestPost(url, params) |
|||
if (code === 0) { |
|||
this.tableData = data.list |
|||
this.total = data.total |
|||
} else { |
|||
this.$message.error(msg) |
|||
} |
|||
|
|||
}, |
|||
handleSearch () { |
|||
this.loadTable() |
|||
}, |
|||
async handleEdit (row, editType) { |
|||
this.editTitle = editType === 'edit' ? '修改' : '新增' |
|||
this.showEdit = true |
|||
this.$nextTick(() => { |
|||
this.$refs.ref_edit.initForm(editType, row); |
|||
}); |
|||
}, |
|||
dialogCancle () { |
|||
this.showEdit = false |
|||
this.showDetail = false |
|||
}, |
|||
dialogOk () { |
|||
|
|||
this.showEdit = false |
|||
this.loadTable() |
|||
}, |
|||
|
|||
// 功能配置 |
|||
handleDetail (row) { |
|||
this.showDetail = true |
|||
this.$nextTick(() => { |
|||
|
|||
this.$refs.ref_detail.initForm(row.staffId, row.customerId); |
|||
}); |
|||
|
|||
}, |
|||
|
|||
handleReset () { |
|||
this.agencyIdArray = [] |
|||
this.formData = { |
|||
name: '', |
|||
status: '', |
|||
mobile: '', |
|||
type: '0', |
|||
orgId: '' |
|||
} |
|||
|
|||
}, |
|||
|
|||
pageCurrentChangeHandle (val) { |
|||
this.pageNo = val |
|||
this.loadTable() |
|||
}, |
|||
pageSizeChangeHandle (val) { |
|||
this.pageSize = val |
|||
this.loadTable() |
|||
}, |
|||
|
|||
}, |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped > |
|||
.div_main { |
|||
width: 100%; |
|||
} |
|||
|
|||
.div_search { |
|||
background: #ffffff; |
|||
border-radius: 4px; |
|||
padding: 30px 20px 5px; |
|||
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1); |
|||
} |
|||
|
|||
.div_table { |
|||
background: #ffffff; |
|||
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1); |
|||
border-radius: 4px; |
|||
margin-top: 15px; |
|||
padding: 23px 30px 10px; |
|||
|
|||
.table { |
|||
margin-top: 20px; |
|||
} |
|||
} |
|||
</style> |
|||
<style> |
|||
.block { |
|||
position: absolute; |
|||
left: 0px; |
|||
display: inline-block; |
|||
width: 35px; |
|||
height: 50px; |
|||
background: #fff; |
|||
} |
|||
.cascader-block .el-cascader-node > .el-radio { |
|||
display: none; |
|||
} |
|||
</style> |
|||
<style lang="scss" scoped> |
|||
.blacklist-reason { |
|||
width: 100%; |
|||
height: 80px; |
|||
border: 1px solid #e4e4e4; |
|||
border-radius: 4px; |
|||
resize: none; |
|||
padding: 8px; |
|||
box-sizing: border-box; |
|||
} |
|||
</style> |
|||
<style lang="scss" scoped> |
|||
@import "@/assets/scss/buttonstyle.scss"; |
|||
|
|||
.resi-container .resi-card-table { |
|||
::v-deep .el-table th { |
|||
color: #fff; |
|||
background-color: rgba(33, 149, 254, 1); |
|||
// border-right: 1px solid rgba(33, 149, 254, 1); |
|||
} |
|||
} |
|||
.resi-table { |
|||
::v-deep .el-button--text { |
|||
text-decoration: underline; |
|||
} |
|||
::v-deep .btn-color-del { |
|||
margin-left: 10px; |
|||
color: rgba(213, 16, 16, 1); |
|||
} |
|||
::v-deep .btn-color-edit { |
|||
color: rgba(0, 167, 169, 1); |
|||
} |
|||
} |
|||
.form-wr { |
|||
.input-width { |
|||
width: 260px; |
|||
} |
|||
.input-width-textarea { |
|||
width: 500px; |
|||
} |
|||
.imsg-list { |
|||
display: flex; |
|||
align-items: center; |
|||
.imgs-item { |
|||
position: relative; |
|||
margin-right: 10px; |
|||
.el-icon-delete { |
|||
position: absolute; |
|||
top: 0; |
|||
right: 0; |
|||
font-size: 18px; |
|||
color: red; |
|||
z-index: 3; |
|||
cursor: pointer; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
.div-content { |
|||
width: 100%; |
|||
overflow: hidden; |
|||
text-overflow: ellipsis; |
|||
white-space: nowrap; |
|||
} |
|||
.resi-row-btn { |
|||
margin-bottom: 13px; |
|||
.upload-btn { |
|||
display: inline-block; |
|||
margin: 0 10px; |
|||
} |
|||
} |
|||
</style> |
@ -0,0 +1,205 @@ |
|||
<template> |
|||
<div> |
|||
|
|||
<div class="dialog-h-content scroll-h"> |
|||
|
|||
<div class="m-row"> |
|||
<div class="m-info"> |
|||
<div class="info-prop"> |
|||
<span class="info-title-2">姓名:</span> |
|||
<span>{{ peoForm.name||'--' }}</span> |
|||
</div> |
|||
|
|||
<div class="info-prop"> |
|||
<span class="info-title-2">手机号:</span> |
|||
<span>{{ peoForm.mobile||'--' }}</span> |
|||
</div> |
|||
|
|||
<div class="info-prop"> |
|||
<span class="info-title-2">性别:</span> |
|||
<span v-if="peoForm.gender==='0'">{{'未知'}}</span> |
|||
<span v-if="peoForm.gender==='1'">{{'男'}}</span> |
|||
<span v-if="peoForm.gender==='2'">{{'女'}}</span> |
|||
</div> |
|||
|
|||
<div class="info-prop"> |
|||
<span class="info-title-2">专兼职:</span> |
|||
<span v-if="peoForm.workType==='fulltime'">{{'专职'}}</span> |
|||
<span v-if="peoForm.workType==='parttime'">{{'兼职'}}</span> |
|||
</div> |
|||
<div class="info-prop"> |
|||
<span class="info-title-2">组织/部门:</span> |
|||
<span>{{peoForm.orgName||'--'}}</span> |
|||
</div> |
|||
<div class="info-prop"> |
|||
<span class="info-title-2">激活时间:</span> |
|||
<span>{{peoForm.activeTime||'未激活'}}</span> |
|||
</div> |
|||
<div class="info-prop"> |
|||
<span class="info-title-2">是否禁用:</span> |
|||
<span>{{peoForm.disableFlag||'--'}}</span> |
|||
</div> |
|||
<div class="info-prop"> |
|||
<span class="info-title-2">职责:</span> |
|||
<span>{{peoForm.rolesShow||''}}</span> |
|||
</div> |
|||
<div class="info-prop"> |
|||
<span class="info-title-2">角色:</span> |
|||
<span>{{peoForm.szsqRolesShow||''}}</span> |
|||
</div> |
|||
|
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
|
|||
<div class="div-btn"> |
|||
<el-button size="small" |
|||
@click="handleClose">关 闭</el-button> |
|||
|
|||
</div> |
|||
|
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
// import ConfigItem from './ConfigItem' |
|||
// import FootbarList from '../../productConfig/footbar/FootbarList' |
|||
import { requestPost, requestGet } from "@/js/dai/request"; |
|||
import { Loading } from 'element-ui' // 引入Loading服务 |
|||
|
|||
let loading // 加载动画 |
|||
export default { |
|||
data () { |
|||
return { |
|||
|
|||
staffId: '', |
|||
customerId: '', |
|||
agencyId: '', |
|||
|
|||
|
|||
|
|||
peoForm: { |
|||
name: "", |
|||
mobile: "", |
|||
gender: "", |
|||
orgId: '', |
|||
orgType: "", |
|||
orgName: "", |
|||
activeTime: "", |
|||
workType: "", |
|||
roles: [], |
|||
newRoles: [], |
|||
}, |
|||
|
|||
} |
|||
}, |
|||
components: { |
|||
|
|||
}, |
|||
|
|||
async mounted () { |
|||
|
|||
|
|||
}, |
|||
methods: { |
|||
async initForm (staffId, customerId) { |
|||
this.startLoading() |
|||
|
|||
this.staffId = staffId |
|||
this.customerId = customerId |
|||
|
|||
await this.lookAngency() |
|||
|
|||
this.endLoading() |
|||
|
|||
}, |
|||
|
|||
|
|||
// 查看按钮 |
|||
async lookAngency () { |
|||
const url = "/data/aggregator/org/staffdetailv2"; |
|||
|
|||
let params = { |
|||
staffId: this.staffId, |
|||
}; |
|||
|
|||
const { data, code, msg } = await requestPost(url, params); |
|||
|
|||
if (code === 0) { |
|||
this.peoForm = data; |
|||
|
|||
if (data.enableFlag === "enable") { |
|||
this.peoForm.disableFlag = "已启用"; |
|||
} else { |
|||
this.peoForm.disableFlag = "已禁用"; |
|||
} |
|||
|
|||
if (this.peoForm.roles && this.peoForm.roles.length > 0) { |
|||
this.peoForm.rolesShow = this.peoForm.roles.join(',') |
|||
} else { |
|||
this.peoForm.rolesShow = '--' |
|||
} |
|||
if (this.peoForm.szsqRoles && this.peoForm.szsqRoles.length > 0) { |
|||
this.peoForm.szsqRolesShow = this.peoForm.szsqRoles.join(',') |
|||
} else { |
|||
this.peoForm.szsqRolesShow = '--' |
|||
} |
|||
} else { |
|||
this.$message.error(msg); |
|||
} |
|||
|
|||
}, |
|||
|
|||
|
|||
resetForm () { |
|||
this.peoForm = { |
|||
name: "", |
|||
mobile: "", |
|||
gender: "", |
|||
orgId: '', |
|||
orgType: "", |
|||
orgName: "", |
|||
workType: "", |
|||
roles: [], |
|||
newRoles: [], |
|||
} |
|||
}, |
|||
handleClose () { |
|||
this.resetForm() |
|||
this.$emit("dialogCancle") |
|||
}, |
|||
|
|||
|
|||
// 开启加载动画 |
|||
startLoading () { |
|||
loading = Loading.service({ |
|||
lock: true, // 是否锁定 |
|||
text: '正在加载……', // 加载中需要显示的文字 |
|||
background: 'rgba(0,0,0,.7)' // 背景颜色 |
|||
}) |
|||
}, |
|||
// 结束加载动画 |
|||
endLoading () { |
|||
// clearTimeout(timer); |
|||
if (loading) { |
|||
loading.close() |
|||
} |
|||
} |
|||
|
|||
}, |
|||
computed: { |
|||
|
|||
}, |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
@import "@/assets/scss/modules/management/detail-main.scss"; |
|||
|
|||
.div-btn { |
|||
margin-top: 20px; |
|||
display: flex; |
|||
justify-content: center; |
|||
} |
|||
</style> |
@ -0,0 +1,460 @@ |
|||
<template> |
|||
<div> |
|||
<el-form :model="peoForm" |
|||
label-width="120px" |
|||
ref="editPeoForm" |
|||
:rules="rulesPeo"> |
|||
<el-form-item label="姓名" |
|||
prop="name"> |
|||
<span>{{peoForm.name}}</span> |
|||
|
|||
</el-form-item> |
|||
<el-form-item label="手机号" |
|||
prop="mobile"> |
|||
<span>{{peoForm.mobile}}</span> |
|||
|
|||
</el-form-item> |
|||
<el-form-item label="性别" |
|||
prop="gender"> |
|||
|
|||
<span v-if="peoForm.gender===0||peoForm.gender==='0'">{{'未知'}}</span> |
|||
<span v-if="peoForm.gender===1||peoForm.gender==='1'">{{'男'}}</span> |
|||
<span v-if="peoForm.gender===2||peoForm.gender==='2'">{{'女'}}</span> |
|||
</el-form-item> |
|||
<el-form-item v-if="formType==='add'" |
|||
label="组织/部门" |
|||
prop="orgId"> |
|||
<el-cascader ref="myCascader" |
|||
v-model="agencyIdArray" |
|||
class="item-width-2" |
|||
:key="iscascaderShow" |
|||
:options="casOptions" |
|||
:props="optionProps" |
|||
@change="handleChangeAgency" |
|||
clearable></el-cascader> |
|||
|
|||
</el-form-item> |
|||
<el-form-item v-if="formType==='edit'" |
|||
label="组织/部门" |
|||
prop="agencyName"> |
|||
|
|||
<span>{{peoForm.agencyName||'--'}}</span> |
|||
</el-form-item> |
|||
<el-form-item label="专兼职" |
|||
prop="workType"> |
|||
<el-select v-model="peoForm.workType" |
|||
clearable |
|||
placeholder="专兼职"> |
|||
<el-option v-for="item in postList" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value"> |
|||
</el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
|
|||
<el-form-item label="职责" |
|||
prop="roles"> |
|||
<el-select v-model="peoForm.roles" |
|||
class="item-width-2" |
|||
multiple |
|||
@change="$forceUpdate()" |
|||
placeholder="请选择"> |
|||
<el-option v-for="item in dutyList" |
|||
:key="item.roleId" |
|||
:label="item.roleName" |
|||
:value="item.roleId" |
|||
:disabled="item.disabled"> |
|||
</el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="角色" |
|||
prop="newRoles"> |
|||
<el-select v-model="peoForm.newRoles" |
|||
class="item-width-2" |
|||
multiple |
|||
@change="$forceUpdate()" |
|||
placeholder="请选择"> |
|||
<el-option v-for="item in roleList" |
|||
:key="item.id" |
|||
:label="item.name" |
|||
:value="item.id"> |
|||
</el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
</el-form> |
|||
<div class="div-btn"> |
|||
<el-button size="small" |
|||
@click="handleClose">取 消</el-button> |
|||
<el-button size="small" |
|||
type="primary" |
|||
@click="handleConfirm">确 定</el-button> |
|||
</div> |
|||
|
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
// import ConfigItem from './ConfigItem' |
|||
// import FootbarList from '../../productConfig/footbar/FootbarList' |
|||
import { requestPost, requestGet } from "@/js/dai/request"; |
|||
import { Loading } from 'element-ui' // 引入Loading服务 |
|||
|
|||
let loading // 加载动画 |
|||
export default { |
|||
data () { |
|||
return { |
|||
formType: 'add', |
|||
staffId: '', |
|||
customerId: '', |
|||
agencyId: '', |
|||
|
|||
agencyIdArray: [], |
|||
casOptions: [], |
|||
iscascaderShow: 0, |
|||
|
|||
optionProps: { |
|||
multiple: false, |
|||
value: 'agencyId', |
|||
label: 'agencyName', |
|||
children: 'subAgencyList', |
|||
checkStrictly: true |
|||
}, |
|||
|
|||
peoForm: { |
|||
name: "", |
|||
mobile: "", |
|||
gender: "", |
|||
orgId: '', |
|||
orgType: "", |
|||
orgName: "", |
|||
workType: "", |
|||
roles: [], |
|||
newRoles: [], |
|||
}, |
|||
// 职责字典 |
|||
dutyList: [], |
|||
// 专兼职字典 |
|||
postList: [ |
|||
{ value: "fulltime", label: "专职" }, |
|||
{ value: "parttime", label: "兼职" }, |
|||
], |
|||
genderList: [ |
|||
{ value: 1, label: "男" }, |
|||
{ value: 2, label: "女" }, |
|||
{ value: 0, label: "未知" }, |
|||
], |
|||
editAgencyIdArray: [], |
|||
roleList: [], |
|||
} |
|||
}, |
|||
components: { |
|||
|
|||
}, |
|||
|
|||
async mounted () { |
|||
|
|||
|
|||
}, |
|||
methods: { |
|||
async initForm (formType, row) { |
|||
this.startLoading() |
|||
this.formType = formType |
|||
this.customerId = row.customerId |
|||
this.getDutyList() |
|||
this.getRoleList() |
|||
|
|||
if (formType === 'edit') { |
|||
this.staffId = row.staffId |
|||
await this.xiuGridPeo() |
|||
} |
|||
if (formType === 'add') { |
|||
this.peoForm.name = row.userName |
|||
this.peoForm.mobile = row.telephoneNumber |
|||
this.peoForm.gender = row.gender |
|||
} |
|||
|
|||
if (formType === 'add') { |
|||
await this.getAgencyList() |
|||
} |
|||
|
|||
this.endLoading() |
|||
|
|||
}, |
|||
|
|||
handleChangeAgency (value) { |
|||
|
|||
if (value && value.length > 0) { |
|||
let selAgency = this.$refs["myCascader"].getCheckedNodes()[0].data |
|||
this.peoForm.orgName = selAgency.agencyName |
|||
this.peoForm.orgType = selAgency.level === 'grid' || selAgency.level === 'dept' ? selAgency.level : 'agency' |
|||
this.peoForm.orgId = selAgency.agencyId |
|||
} else { |
|||
this.peoForm.orgName = '' |
|||
this.peoForm.orgType = '' |
|||
this.peoForm.orgId = '' |
|||
} |
|||
|
|||
}, |
|||
|
|||
handleConfirm () { |
|||
if (this.formType === 'add') { |
|||
this.submitPeoDo() |
|||
} else if (this.formType === 'edit') { |
|||
this.updatePeoDo() |
|||
} |
|||
}, |
|||
|
|||
// 添加人员 |
|||
async submitPeoDo () { |
|||
|
|||
this.$refs['editPeoForm'].validate((valid, messageObj) => { |
|||
|
|||
if (!valid) { |
|||
app.util.validateRule(messageObj) |
|||
} else { |
|||
|
|||
this.addPeo() |
|||
|
|||
|
|||
|
|||
} |
|||
}) |
|||
}, |
|||
|
|||
async addPeo () { |
|||
if (this.peoForm.roles.length === 0) { |
|||
this.$message.error("请选择职责"); |
|||
return false |
|||
} |
|||
if (this.peoForm.newRoles.length === 0) { |
|||
this.$message.error("请选择角色"); |
|||
return false |
|||
} |
|||
const url = "/gov/org/staff/addstaffv2"; |
|||
// console.log('this.peoForm', this.peoForm) |
|||
// return false |
|||
let params = { |
|||
customerId: this.customerId, |
|||
...this.peoForm |
|||
}; |
|||
|
|||
const { data, code, msg } = await requestPost(url, params); |
|||
|
|||
if (code === 0) { |
|||
this.$message.success("操作成功"); |
|||
|
|||
this.peoForm = []; |
|||
|
|||
this.dialogOk() |
|||
} else { |
|||
this.$message.error(msg); |
|||
} |
|||
}, |
|||
|
|||
// 人员修改 |
|||
async updatePeoDo () { |
|||
this.$refs['editPeoForm'].validate((valid, messageObj) => { |
|||
|
|||
if (!valid) { |
|||
app.util.validateRule(messageObj) |
|||
} else { |
|||
this.editPeo() |
|||
|
|||
} |
|||
}) |
|||
}, |
|||
|
|||
async editPeo () { |
|||
if (this.peoForm.roles.length === 0) { |
|||
this.$message.error("请选择职责"); |
|||
return false |
|||
} |
|||
if (this.peoForm.newRoles.length === 0) { |
|||
this.$message.error("请选择角色"); |
|||
return false |
|||
} |
|||
const url = "/gov/org/staff/editstaff"; |
|||
|
|||
let params = { |
|||
staffId: this.staffId, |
|||
agencyId: this.agencyId, |
|||
customerId: this.customerId, |
|||
...this.peoForm |
|||
}; |
|||
|
|||
// console.log('params', params) |
|||
// return false |
|||
|
|||
const { data, code, msg } = await requestPost(url, params); |
|||
|
|||
if (code === 0) { |
|||
this.$message.success("操作成功"); |
|||
|
|||
this.dialogOk() |
|||
|
|||
} else { |
|||
this.$message.error(msg); |
|||
} |
|||
}, |
|||
|
|||
|
|||
// 修改网格人员初始化 |
|||
async xiuGridPeo () { |
|||
|
|||
this.peoForm.orgType = "grid"; |
|||
|
|||
const url = "/gov/org/staff/editstaffinit"; |
|||
let params = { |
|||
staffId: this.staffId, |
|||
customerId: this.customerId, |
|||
}; |
|||
const { data, code, msg } = await requestPost(url, params); |
|||
if (code === 0) { |
|||
this.agencyId = data.agencyId |
|||
this.peoForm = { ...data }; |
|||
|
|||
// 已有的权限(职责) |
|||
let existedDutyArr = []; |
|||
data.roleList.forEach(function (sysDuty) { |
|||
if (sysDuty.selected === true) { |
|||
|
|||
existedDutyArr.push(sysDuty.roleId); |
|||
} |
|||
}); |
|||
this.peoForm.roles = existedDutyArr; |
|||
// 已有的权限(角色) |
|||
let existedRoleArr = []; |
|||
data.newRoleList.forEach(function (sysRole) { |
|||
if (sysRole.selected === true) { |
|||
existedRoleArr.push(sysRole.roleId); |
|||
} |
|||
}); |
|||
this.peoForm.newRoles = existedRoleArr; |
|||
} else { |
|||
this.$message.error(msg); |
|||
} |
|||
}, |
|||
|
|||
async getAgencyList () { |
|||
const url = '/gov/org/customeragency/agencylist' |
|||
// const url = 'http://yapi.elinkservice.cn/mock/102/gov/org/agency/agencylist' |
|||
|
|||
const params = { |
|||
customerId: this.customerId |
|||
} |
|||
const { data, code, msg } = await requestPost(url, params) |
|||
if (code === 0) { |
|||
++this.iscascaderShow |
|||
this.casOptions = [] |
|||
this.agencyIdArray.length = [] |
|||
|
|||
if (data) { |
|||
this.casOptions.push(data) |
|||
} |
|||
|
|||
} else { |
|||
this.$message.error(msg) |
|||
} |
|||
}, |
|||
/** 查询系统工作人员角色(职责) */ |
|||
async getDutyList () { |
|||
const url = "/gov/org/staff/rolelist"; |
|||
let params = { |
|||
customerId: this.customerId, |
|||
}; |
|||
const { data, code, msg } = await requestPost(url, params); |
|||
if (code === 0) { |
|||
this.dutyList = data; |
|||
} else { |
|||
this.$message.error(msg); |
|||
} |
|||
}, |
|||
|
|||
/** 查询系统工作人员角色(职责) */ |
|||
async getRoleList () { |
|||
this.tableLoading = true; |
|||
|
|||
const url = "/gov/access/govrole/list"; |
|||
|
|||
let params = {}; |
|||
|
|||
const { data, code, msg } = await requestGet(url, params); |
|||
|
|||
if (code === 0) { |
|||
this.roleList = data; |
|||
} else { |
|||
this.$message.error(msg); |
|||
} |
|||
this.tableLoading = false; |
|||
}, |
|||
|
|||
resetForm () { |
|||
this.peoForm = { |
|||
name: "", |
|||
mobile: "", |
|||
gender: "", |
|||
orgId: '', |
|||
orgType: "", |
|||
orgName: "", |
|||
workType: "", |
|||
roles: [], |
|||
newRoles: [], |
|||
} |
|||
}, |
|||
handleClose () { |
|||
this.resetForm() |
|||
this.$emit("dialogCancle") |
|||
}, |
|||
dialogOk () { |
|||
this.resetForm() |
|||
this.$emit("dialogOk") |
|||
}, |
|||
|
|||
// 开启加载动画 |
|||
startLoading () { |
|||
loading = Loading.service({ |
|||
lock: true, // 是否锁定 |
|||
text: '正在加载……', // 加载中需要显示的文字 |
|||
background: 'rgba(0,0,0,.7)' // 背景颜色 |
|||
}) |
|||
}, |
|||
// 结束加载动画 |
|||
endLoading () { |
|||
// clearTimeout(timer); |
|||
if (loading) { |
|||
loading.close() |
|||
} |
|||
} |
|||
|
|||
}, |
|||
computed: { |
|||
rulesPeo () { |
|||
return { |
|||
// name: [{ required: true, message: "姓名必填", trigger: "change" }], |
|||
// mobile: [{ required: true, message: "手机号必填", trigger: "change" }], |
|||
// gender: [{ required: true, message: "性别必填", trigger: "change" }], |
|||
// gender: [{ required: true, message: "性别必填", trigger: "change" }], |
|||
orgId: [{ required: true, message: "组织/部门必填", trigger: "change" }], |
|||
workType: [{ required: true, message: "专兼职必填", trigger: "change" }], |
|||
roles: [{ required: true, message: "职责必填", trigger: "change" }], |
|||
newRoles: [{ required: true, message: "角色必填", trigger: "change" }], |
|||
} |
|||
}, |
|||
}, |
|||
} |
|||
</script> |
|||
|
|||
<style scoped> |
|||
.item-width-1 { |
|||
width: 200px; |
|||
} |
|||
.item-width-2 { |
|||
width: 400px; |
|||
} |
|||
.div-btn { |
|||
margin-top: 20px; |
|||
display: flex; |
|||
justify-content: center; |
|||
} |
|||
</style> |
Loading…
Reference in new issue