Browse Source

统一认证

dev
jiangyy 3 years ago
parent
commit
155b31ab35
  1. 349
      epmet-oper-web/src/views/modules/yantai/certify.vue
  2. 414
      epmet-oper-web/src/views/modules/yantai/editForm.vue

349
epmet-oper-web/src/views/modules/yantai/certify.vue

@ -0,0 +1,349 @@
<template>
<div>
<el-card shadow="never"
class="aui-card--fill">
<div class="mod-/oper/customize__homecomponent}">
<el-form :inline="true">
<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>
<div>
<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-form-item>
<el-button type="primary"
style="margin-left:20px"
size="small"
@click="handleSearch()">查询</el-button>
<el-button style="margin-left:20px"
size="small"
@click="handleReset()">重置</el-button>
</el-form-item>
</div>
</el-form>
<el-table :data="tableData"
ref="ref_customertable"
border
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 type="text"
size="small"
@click="handleEdit(scope.row)">修改</el-button>
<el-button 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-card>
<el-dialog v-if="showEdit"
title="修改"
:visible.sync="showEdit"
width="850"
:before-close="dialogCancle">
<edit-form ref="ref_edit"
@dialogOk="dialogOk"
@dialogCancle="dialogCancle"></edit-form>
</el-dialog>
</div>
</template>
<script>
import editForm from './editForm'
// import FootbarList from '../../productConfig/footbar/FootbarList'
import { requestPost, requestGet } from "@/js/dai/request";
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: 10,
total: 0,
formData: {
name: '',
status: '',
mobile: '',
type: '0',
orgId: ''
},
showEdit: false,
}
},
components: {
editForm
},
activated () {
this.$nextTick(() => {
this.$refs['ref_customertable'].doLayout() //
})
},
async mounted () {
await this.loadTable()
},
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) {
console.log(value)
this.formData.orgId = value[0]
},
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) {
this.showEdit = true
this.$nextTick(() => {
let editType = row.status === '0' ? 'add' : 'edit'
this.$refs.ref_edit.initForm(editType, row.staffId, row.customerId);
});
},
dialogCancle () {
this.showEdit = false
},
dialogOk () {
this.showEdit = false
this.loadTable()
},
//
handleDetail (row) {
this.$refs['ref_config_item'].initData(editType, 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()
},
},
computed: {
rulesPeo () {
return {
name: [{ required: true, message: "姓名必填", trigger: "blur" }],
mobile: [{ required: true, message: "手机号必填", trigger: "blur" }],
gender: [{ required: true, message: "性别必填", trigger: "blur" }],
zuzhi: [{ required: true, message: "专兼职必填", trigger: "blur" }],
newRoles: [{ required: true, message: "角色必填", trigger: "blur" }],
}
},
},
}
</script>
<style scoped>
.item-width-1 {
width: 200px;
}
.item-width-2 {
width: 400px;
}
</style>

414
epmet-oper-web/src/views/modules/yantai/editForm.vue

@ -0,0 +1,414 @@
<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">{{'未知'}}</span>
<span v-if="peoForm.gender===1">{{''}}</span>
<span v-if="peoForm.gender===2">{{''}}</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="orgId">
<el-cascader v-if="formType==='add'"
ref="myCascader"
v-model="agencyIdArray"
class="item-width-2"
:key="iscascaderShow"
:options="casOptions"
:props="optionProps"
@change="handleChangeAgency"
clearable></el-cascader>
<span v-if="formType==='edit'">{{peoForm.orgName||'--'}}</span>
</el-form-item>
<el-form-item label="职责"
prop="roles">
<el-select v-model="peoForm.roles"
class="item-width-2"
multiple
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
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, staffId, customerId) {
this.startLoading()
this.formType = formType
this.staffId = staffId
this.customerId = customerId
this.getDutyList()
this.getRoleList()
if (formType === 'edit' || formType === 'add') {
await this.xiuGridPeo()
}
if (formType === 'add') {
await this.getAgencyList()
}
this.endLoading()
},
handleChangeAgency (value) {
let selAgency = this.$refs["myCascader"].getCheckedNodes()[0].data
this.peoForm.orgName = selAgency.agencyName
this.peoForm.orgType = selAgency.level
this.peoForm.orgId = selAgency.agencyId
},
handleConfirm () {
if (this.formType === 'add') {
this.submitPeoDo()
} else if (this.formType === 'edit') {
this.updatePeoDo()
}
},
//
async submitPeoDo () {
const url = "/gov/org/staff/addstaffv2";
console.log(this.peoForm)
return false
const { data, code, msg } = await requestPost(url, this.peoForm);
if (code === 0) {
this.$message.success("操作成功");
this.peoForm = [];
this.dialogOk()
} else {
this.$message.error(msg);
}
},
//
async updatePeoDo () {
const url = "/gov/org/staff/editstaff";
let params = {
staffId: this.staffId,
agencyId: this.agencyId,
customerId: this.customerId,
...this.peoForm
};
console.log(params)
return false
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.$message.success("修改成功");
} else {
this.$message.error(msg);
}
},
//
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.name = data.name;
this.peoForm.mobile =
data.mobile.substr(0, 3) + "****" + data.mobile.substr(7);
this.peoForm.activeTime = data.activeTime;
this.peoForm.roles = data.roles;
this.peoForm.orgName = data.orgName;
if (data.enableFlag === "enable") {
this.peoForm.disableFlag = "已启用";
} else {
this.peoForm.disableFlag = "已禁用";
}
}
this.details = true;
},
//
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…
Cancel
Save