4 changed files with 525 additions and 37 deletions
@ -0,0 +1,26 @@ |
|||||
|
/** |
||||
|
* 解析epmet后台返回结果,并且执行传入的逻辑 |
||||
|
* @param success_processor 正常返回执行的函数,代表要对data做何种操作 |
||||
|
* @param fail_processor 异常返回执行的函数,代表要对data做何种操作 |
||||
|
* @param result 后台返回的结果json对象 |
||||
|
*/ |
||||
|
const processResult = (success_processor, fail_processor, result) => { |
||||
|
const { data, code, msg } = result |
||||
|
if (code !== 0) { |
||||
|
// 表明后台返回错误
|
||||
|
if (code < 8000) { |
||||
|
this.$message.error('服务器开小差了...') |
||||
|
} else { |
||||
|
this.$message.error(msg) |
||||
|
} |
||||
|
fail_processor() |
||||
|
return |
||||
|
} |
||||
|
|
||||
|
if (success_processor) { |
||||
|
// 后台没有返回错误,正常执行
|
||||
|
success_processor(data) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
export const processEpmetResult = processResult |
@ -0,0 +1,478 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<div class="dialog-h-content scroll-h"> |
||||
|
<el-form |
||||
|
:inline="true" |
||||
|
:model="searchFormData" |
||||
|
ref="ref_searchform" |
||||
|
:label-width="'110px'"> |
||||
|
|
||||
|
<el-form-item label="所属组织" prop="orgId"> |
||||
|
<el-cascader |
||||
|
@change="handleOrgChange" |
||||
|
:options="orgTree" |
||||
|
:props="orgOptionProps" |
||||
|
clearable |
||||
|
placeholder="请选择组织"></el-cascader> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="人员姓名" prop="title"> |
||||
|
<el-input |
||||
|
v-model="searchFormData.name" |
||||
|
class="u-item-width-normal" |
||||
|
size="small" |
||||
|
clearable |
||||
|
placeholder="请输入"> |
||||
|
</el-input> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="手机号" prop="title"> |
||||
|
<el-input |
||||
|
v-model="searchFormData.mobile" |
||||
|
class="u-item-width-normal" |
||||
|
size="small" |
||||
|
clearable |
||||
|
placeholder="请输入"> |
||||
|
</el-input> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="身份证号" prop="title"> |
||||
|
<el-input |
||||
|
v-model="searchFormData.idCard" |
||||
|
class="u-item-width-normal" |
||||
|
size="small" |
||||
|
clearable |
||||
|
placeholder="请输入"> |
||||
|
</el-input> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="享受服务次数" prop="title"> |
||||
|
<el-input |
||||
|
v-model="searchFormData.serveTimes" |
||||
|
class="u-item-width-normal" |
||||
|
size="small" |
||||
|
clearable |
||||
|
placeholder="请输入"> |
||||
|
</el-input> |
||||
|
</el-form-item> |
||||
|
|
||||
|
<el-form-item label="家庭住址" prop="title"> |
||||
|
<el-select v-model="searchFormData.villageId" placeholder="请选择小区" |
||||
|
@change="handleQuarterSelectorsChange" clearable> |
||||
|
<el-option |
||||
|
v-for="item in quartersSelectItems" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.value"> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
<el-select v-model="searchFormData.buildId" placeholder="请选择楼栋" |
||||
|
@change="handleBuildSelectorsChange" clearable> |
||||
|
<el-option |
||||
|
v-for="item in buildingSelectItems" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.value"> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
<el-select v-model="searchFormData.unitId" placeholder="请选择单元" |
||||
|
@change="handleUnitSelectorsChange" clearable> |
||||
|
<el-option |
||||
|
v-for="item in unitSelectItems" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.value"> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
<el-select v-model="searchFormData.homeId" placeholder="请选择房屋" |
||||
|
@change="handleUnitSelectorsChange" clearable> |
||||
|
<el-option |
||||
|
v-for="item in homeSelectItems" |
||||
|
:key="item.value" |
||||
|
:label="item.label" |
||||
|
:value="item.value"> |
||||
|
</el-option> |
||||
|
</el-select> |
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
</div> |
||||
|
|
||||
|
<div class="div_btn"> |
||||
|
<el-button type="primary" size="small" class="diy-button--blue" @click="handleIncrementServeTimes">标记享受服务人员</el-button> |
||||
|
<el-button type="primary" size="small" class="diy-button--blue" @click="handleSearch">查询</el-button> |
||||
|
</div> |
||||
|
|
||||
|
<div class="m-table"> |
||||
|
<!--表格--> |
||||
|
<el-table |
||||
|
:data="personList" |
||||
|
height="250" |
||||
|
border |
||||
|
@select-all="handleSelectAll" |
||||
|
@selection-change="handleTableRowsSelected" |
||||
|
style="width: 100%"> |
||||
|
|
||||
|
<el-table-column |
||||
|
type="selection" |
||||
|
width="55"> |
||||
|
</el-table-column> |
||||
|
|
||||
|
<el-table-column |
||||
|
prop="agencyName" |
||||
|
label="所属组织" |
||||
|
width="180"> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
prop="gridName" |
||||
|
label="所属网格" |
||||
|
width="180"> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
prop="name" |
||||
|
label="姓名"> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
prop="genderDisplay" |
||||
|
label="性别"> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
prop="birthday" |
||||
|
width="170" |
||||
|
label="出生日期"> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
prop="age" |
||||
|
label="年龄"> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
prop="mobile" |
||||
|
width="120" |
||||
|
label="手机号"> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
prop="idCard" |
||||
|
width="180" |
||||
|
label="身份证号"> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
prop="address" |
||||
|
width="250" |
||||
|
label="家庭住址"> |
||||
|
</el-table-column> |
||||
|
<el-table-column |
||||
|
prop="serveTimes" |
||||
|
label="享受服务次数"> |
||||
|
</el-table-column> |
||||
|
</el-table> |
||||
|
</div> |
||||
|
|
||||
|
<!--分页条--> |
||||
|
<el-pagination |
||||
|
@size-change="handleSizeChange" |
||||
|
@current-change="handleCurrentChange" |
||||
|
:current-page.sync="searchFormData.pageNo" |
||||
|
:page-sizes="pageSizes" |
||||
|
:page-size="searchFormData.pageSize" |
||||
|
layout="sizes, prev, pager, next, total" |
||||
|
background |
||||
|
:total="total"> |
||||
|
</el-pagination> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
import { requestPost } from '@/js/dai/request' |
||||
|
import { requestGet } from '@/js/dai/request' |
||||
|
import { processEpmetResult } from '@/js/result_data_resolve' |
||||
|
import nextTick from 'dai-js/tools/nextTick' |
||||
|
|
||||
|
export default { |
||||
|
mounted () { |
||||
|
this.searchFormData.serviceId = this.serviceId; |
||||
|
this.initOrgTree(); |
||||
|
this.handleSearch(); |
||||
|
}, |
||||
|
data () { |
||||
|
return { |
||||
|
// 搜索表单 |
||||
|
searchFormData: { |
||||
|
serviceId: null, |
||||
|
orgId: null, |
||||
|
orgType: null, |
||||
|
tagId: null, |
||||
|
name: null, |
||||
|
mobile: null, |
||||
|
idCard: null, |
||||
|
serveTimes: null, |
||||
|
villageId: null, |
||||
|
buildId: null, |
||||
|
unitId: null, |
||||
|
homeId: null, |
||||
|
pageSize: 10, |
||||
|
pageNo: 1, |
||||
|
}, |
||||
|
|
||||
|
// 分页参数 |
||||
|
pageSizes: [10, 20, 50, 100, 200], |
||||
|
total: 0, // 总页数 |
||||
|
|
||||
|
// 小区下拉框选项 |
||||
|
quartersSelectItems: [], |
||||
|
buildingSelectItems: [], |
||||
|
unitSelectItems: [], |
||||
|
homeSelectItems: [], |
||||
|
orgTree: [], // 组织树 |
||||
|
// 组织树选项 |
||||
|
orgOptionProps: { |
||||
|
multiple: false, |
||||
|
value: 'agencyId', |
||||
|
label: 'agencyName', |
||||
|
children: 'subAgencyList', |
||||
|
checkStrictly: true |
||||
|
}, |
||||
|
|
||||
|
//表格数据 |
||||
|
selectedPersonListIds: [], // 选中的名单id列表 |
||||
|
personList: [], // 找到的人员名单 |
||||
|
} |
||||
|
}, |
||||
|
methods: { |
||||
|
|
||||
|
/** |
||||
|
* 行选中事件 |
||||
|
* @returns {Promise<void>} |
||||
|
*/ |
||||
|
async handleTableRowsSelected(selection) { |
||||
|
this.selectedPersonListIds = selection.map(e => e.id); |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 全选 |
||||
|
* @param selection |
||||
|
* @returns {Promise<void>} |
||||
|
*/ |
||||
|
async handleSelectAll(selection) { |
||||
|
this.selectedPersonListIds = selection.map(e => e.id); |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 搜索事件 |
||||
|
* @returns {Promise<void>} |
||||
|
*/ |
||||
|
async handleSearch () { |
||||
|
let url = '/actual/base/residentBaseInfo/commonServicePersonList/list' |
||||
|
this.searchFormData.tagId = this.tagId |
||||
|
let result = await requestPost(url, this.searchFormData) |
||||
|
|
||||
|
processEpmetResult((data)=> { |
||||
|
debugger |
||||
|
this.personList = data.list; |
||||
|
this.total = data.total; |
||||
|
}, null, result) |
||||
|
|
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 标记享受服务人员 |
||||
|
* @returns {Promise<void>} |
||||
|
*/ |
||||
|
async handleIncrementServeTimes() { |
||||
|
let params = { |
||||
|
recIds: this.selectedPersonListIds |
||||
|
}; |
||||
|
|
||||
|
let url = "/actual/base/residentBaseInfo/commonServicePersonList/incrementServeTimes"; |
||||
|
|
||||
|
const rst = await requestPost(url, params); |
||||
|
|
||||
|
processEpmetResult(null, null, rst); |
||||
|
|
||||
|
// 重新加载列表 |
||||
|
this.handleSearch(); |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 组织选择触发事件 |
||||
|
* @returns {Promise<void>} |
||||
|
*/ |
||||
|
async initOrgTree () { |
||||
|
let url = '/gov/org/customeragency/agencygridtree' |
||||
|
const { data, code, msg } = await requestPost(url, {}) |
||||
|
if (code === 0) { |
||||
|
debugger |
||||
|
this.orgTree.push(data) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 加载和填充小区下拉框 |
||||
|
* @returns {Promise<void>} |
||||
|
*/ |
||||
|
async handleOrgChange (selectedOrgNodes) { |
||||
|
let selectedLastNode = selectedOrgNodes[selectedOrgNodes.length - 1] |
||||
|
this.searchFormData.orgId = selectedLastNode |
||||
|
const { orgId, level } = this.getSelectedOrgIdAndType(selectedLastNode, this.orgTree) |
||||
|
let url = '/actual/base/communityQuarters/listQuartersOptions' |
||||
|
let params = {} |
||||
|
this.searchFormData.orgId = orgId |
||||
|
if (level === 'grid') { |
||||
|
params['gridId'] = orgId |
||||
|
this.searchFormData.orgType = 'grid' |
||||
|
} else { |
||||
|
params['agencyId'] = orgId |
||||
|
this.searchFormData.orgType = 'agency' |
||||
|
} |
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
if (code === 0) { |
||||
|
this.quartersSelectItems = data.map(e => { |
||||
|
return { |
||||
|
label: e.label, |
||||
|
value: e.value |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 小区选择器change,填充楼栋下拉框 |
||||
|
* @returns {Promise<void>} |
||||
|
*/ |
||||
|
async handleQuarterSelectorsChange (quartersId) { |
||||
|
let url = '/actual/base/communityBuilding/buildingoption' |
||||
|
let params = { |
||||
|
quartersId: quartersId, |
||||
|
} |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
if (code === 0) { |
||||
|
this.buildingSelectItems = data.map(e => { |
||||
|
return { |
||||
|
label: e.label, |
||||
|
value: e.value |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 楼栋选择器change,填充单元下拉框 |
||||
|
* @param selectedQuarter |
||||
|
* @returns {Promise<void>} |
||||
|
*/ |
||||
|
async handleBuildSelectorsChange (buildId) { |
||||
|
let url = '/actual/base/communityBuildingUnit/unitoption' |
||||
|
let params = { |
||||
|
buildingId: buildId, |
||||
|
} |
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
if (code === 0) { |
||||
|
this.unitSelectItems = data.map(e => { |
||||
|
return { |
||||
|
label: e.label, |
||||
|
value: e.value |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 单元下拉框选择器change,填充房屋 |
||||
|
* @param unitId |
||||
|
* @returns {Promise<void>} |
||||
|
*/ |
||||
|
async handleUnitSelectorsChange (unitId) { |
||||
|
let url = '/actual/base/communityHouse/houseoption' |
||||
|
let params = { |
||||
|
unitId: unitId, |
||||
|
} |
||||
|
|
||||
|
const { data, code, msg } = await requestPost(url, params) |
||||
|
if (code === 0) { |
||||
|
this.homeSelectItems = data.map(e => { |
||||
|
return { |
||||
|
label: e.label, |
||||
|
value: e.value, |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 递归搜索组织树,选出选中的节点 |
||||
|
* @param orgId |
||||
|
* @param orgList |
||||
|
* @returns {*} |
||||
|
*/ |
||||
|
getSelectedOrgIdAndType (orgId, orgList) { |
||||
|
for (let org of orgList) { |
||||
|
if (org.agencyId === orgId) { |
||||
|
return { orgId: org.agencyId, level: org.level } |
||||
|
} |
||||
|
|
||||
|
if (org.subAgencyList && org.subAgencyList.length > 0) { |
||||
|
let selectedOrg = this.getSelectedOrgIdAndType(orgId, org.subAgencyList) |
||||
|
if (selectedOrg) { |
||||
|
return selectedOrg |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
// 条数改变 |
||||
|
handleSizeChange (newPageSize) { |
||||
|
this.searchFormData.pageSize = newPageSize |
||||
|
this.handleSearch() |
||||
|
}, |
||||
|
|
||||
|
// 翻页 |
||||
|
handleCurrentChange (pageNo) { |
||||
|
this.searchFormData.pageNo = pageNo |
||||
|
this.handleSearch() |
||||
|
} |
||||
|
}, |
||||
|
props: { |
||||
|
serviceId: { |
||||
|
type: String, |
||||
|
required: true, |
||||
|
}, |
||||
|
tagId: { |
||||
|
type: String, |
||||
|
required: true, |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
@import "@/assets/scss/modules/management/form-main.scss"; |
||||
|
|
||||
|
.btn-add-rule { |
||||
|
margin-left: 150px; |
||||
|
display: flex; |
||||
|
justify-content: flex-start; |
||||
|
margin-bottom: 20px; |
||||
|
} |
||||
|
|
||||
|
.item_width_short { |
||||
|
width: 380px; |
||||
|
} |
||||
|
|
||||
|
.item_rule { |
||||
|
display: flex; |
||||
|
justify-content: flex-start; |
||||
|
} |
||||
|
|
||||
|
.item_label { |
||||
|
flex: 0 0 150px; |
||||
|
line-height: 30px; |
||||
|
text-align: right; |
||||
|
padding-right: 12px; |
||||
|
} |
||||
|
|
||||
|
.item_label:before { |
||||
|
content: "*"; |
||||
|
color: #f56c6c; |
||||
|
margin-right: 4px; |
||||
|
} |
||||
|
</style> |
Loading…
Reference in new issue