Browse Source

Merge branch 'dev'

master
jiangyy 3 years ago
parent
commit
ed3d2e9940
  1. 2
      epmet-oper-web/.vscode/settings.json
  2. 7
      epmet-oper-web/src/views/modules/workPc/menu-add-or-update.vue
  3. 378
      epmet-oper-web/src/views/modules/yantai/certify.vue
  4. 208
      epmet-oper-web/src/views/modules/yantai/detailForm.vue
  5. 460
      epmet-oper-web/src/views/modules/yantai/editForm.vue

2
epmet-oper-web/.vscode/settings.json

@ -1,6 +1,6 @@
{
"workbench.colorTheme": "One Monokai",
"window.zoomLevel": 2,
"window.zoomLevel": 1,
"terminal.integrated.fontWeightBold": "normal",
"workbench.iconTheme": "material-icon-theme",
// vscodetabsize

7
epmet-oper-web/src/views/modules/workPc/menu-add-or-update.vue

@ -27,9 +27,11 @@
class="menu-list">
<el-popover v-model="menuListVisible"
ref="menuListPopover"
class="div-popover"
placement="bottom-start"
trigger="click">
<el-tree :data="menuList"
class="div-popover"
:props="{ label: 'name', children: 'children' }"
node-key="id"
ref="menuListTree"
@ -340,4 +342,9 @@ export default {
}
}
}
.div-popover {
height: 400px;
overflow-y: auto;
}
</style>

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

@ -0,0 +1,378 @@
<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 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-card>
<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 editForm from './editForm'
import detailForm from './detailForm'
// 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,
showDetail: false,
editTitle: '新增'
}
},
components: {
editForm,
detailForm
},
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) {
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()
},
},
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>

208
epmet-oper-web/src/views/modules/yantai/detailForm.vue

@ -0,0 +1,208 @@
<template>
<div>
<el-form :model="peoForm"
label-width="120px"
ref="editPeoForm">
<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">
<span v-if="peoForm.workType==='fulltime'">{{'专职'}}</span>
<span v-if="peoForm.workType==='parttime'">{{'兼职'}}</span>
</el-form-item>
<el-form-item label="组织/部门:"
prop="orgName">
<span>{{peoForm.orgName||'--'}}</span>
</el-form-item>
<el-form-item label="激活时间:"
prop="activeTime">
<span>{{peoForm.activeTime||'未激活'}}</span>
</el-form-item>
<el-form-item label="是否禁用:"
prop="disableFlag">
<span>{{peoForm.disableFlag||'--'}}</span>
</el-form-item>
<el-form-item label="职责:"
prop="roles">
<span>{{peoForm.rolesShow}}</span>
</el-form-item>
<el-form-item label="角色:"
prop="newRoles">
<span>{{peoForm.szsqRolesShow}}</span>
</el-form-item>
</el-form>
<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 scoped>
.item-width-1 {
width: 200px;
}
.item-width-2 {
width: 400px;
}
.div-btn {
margin-top: 20px;
display: flex;
justify-content: center;
}
</style>

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

@ -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…
Cancel
Save