17 changed files with 593 additions and 103 deletions
@ -0,0 +1,113 @@ |
|||
<template> |
|||
<div class="dialog-h-content scroll-h g-main"> |
|||
<div v-for="(item,index) in ruleList" |
|||
:key="index"> |
|||
<div class="div_name">{{'政策细则'+(index+1)}}:{{item.ruleName}}</div> |
|||
<person-list-item :ruleId="item.id"> </person-list-item> |
|||
</div> |
|||
|
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
|
|||
|
|||
|
|||
import { requestPost } from "@/js/dai/request"; |
|||
import { mapGetters } from 'vuex' |
|||
import { Loading } from 'element-ui' // 引入Loading服务 |
|||
import personListItem from './personListItem' |
|||
|
|||
let loading // 加载动画 |
|||
export default { |
|||
data () { |
|||
return { |
|||
loading: false, |
|||
total: 0, |
|||
pageSize: 20, |
|||
pageNo: 1, |
|||
tableLoading: false, |
|||
|
|||
agencyId: '', |
|||
initLoading: false, |
|||
|
|||
tableArray: [ |
|||
|
|||
], |
|||
|
|||
|
|||
|
|||
} |
|||
}, |
|||
components: { |
|||
personListItem |
|||
}, |
|||
async created () { |
|||
|
|||
}, |
|||
activated () { |
|||
// this.$refs['ref_table'].doLayout() |
|||
}, |
|||
async mounted () { |
|||
|
|||
|
|||
}, |
|||
|
|||
methods: { |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
// 开启加载动画 |
|||
startLoading () { |
|||
loading = Loading.service({ |
|||
lock: true, // 是否锁定 |
|||
text: '正在加载……', // 加载中需要显示的文字 |
|||
background: 'rgba(0,0,0,.7)' // 背景颜色 |
|||
}) |
|||
}, |
|||
// 结束加载动画 |
|||
endLoading () { |
|||
// clearTimeout(timer); |
|||
if (loading) { |
|||
loading.close() |
|||
} |
|||
} |
|||
}, |
|||
computed: { |
|||
|
|||
}, |
|||
watch: { |
|||
|
|||
}, |
|||
props: { |
|||
policyId: { |
|||
type: String, |
|||
required: '' |
|||
}, |
|||
ruleList: { |
|||
type: Array, |
|||
required: true, |
|||
default () { |
|||
return [] |
|||
} |
|||
}, |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped > |
|||
@import "@/assets/scss/modules/management/list-main.scss"; |
|||
|
|||
.div_name { |
|||
padding: 5px 20px; |
|||
font-size: 16px; |
|||
} |
|||
</style> |
|||
|
|||
|
|||
|
@ -1,113 +1,476 @@ |
|||
<template> |
|||
<div class="dialog-h-content scroll-h g-main"> |
|||
<div v-for="(item,index) in ruleList" |
|||
:key="index"> |
|||
<div class="div_name">{{'政策细则'+(index+1)}}:{{item.ruleName}}</div> |
|||
<person-list-item :ruleId="item.id"> </person-list-item> |
|||
<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 nextTick from 'dai-js/tools/nextTick' |
|||
|
|||
|
|||
import { requestPost } from "@/js/dai/request"; |
|||
import { mapGetters } from 'vuex' |
|||
import { Loading } from 'element-ui' // 引入Loading服务 |
|||
import personListItem from './personListItem' |
|||
|
|||
let loading // 加载动画 |
|||
export default { |
|||
mounted () { |
|||
this.initOrgTree() |
|||
this.handleSearch() |
|||
}, |
|||
data () { |
|||
return { |
|||
loading: false, |
|||
total: 0, |
|||
pageSize: 20, |
|||
pageNo: 1, |
|||
tableLoading: false, |
|||
|
|||
agencyId: '', |
|||
initLoading: false, |
|||
|
|||
tableArray: [ |
|||
|
|||
], |
|||
|
|||
// 搜索表单 |
|||
searchFormData: { |
|||
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: [], // 找到的人员名单 |
|||
} |
|||
}, |
|||
components: { |
|||
personListItem |
|||
}, |
|||
async created () { |
|||
methods: { |
|||
|
|||
}, |
|||
activated () { |
|||
// this.$refs['ref_table'].doLayout() |
|||
}, |
|||
async mounted () { |
|||
/** |
|||
* 行选中事件 |
|||
* @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/policyFindPersonList/list' |
|||
this.searchFormData.tagId = this.tagId |
|||
const { data, code, msg } = await requestPost(url, this.searchFormData) |
|||
if (code === 0) { |
|||
this.personList = data.list |
|||
this.total = data.total |
|||
} |
|||
}, |
|||
|
|||
}, |
|||
/** |
|||
* 标记享受服务人员 |
|||
* @returns {Promise<void>} |
|||
*/ |
|||
async handleIncrementServeTimes() { |
|||
let params = { |
|||
recIds: this.selectedPersonListIds |
|||
}; |
|||
|
|||
let url = "/actual/base/residentBaseInfo/policyFindPersonList/incrementServeTimes"; |
|||
|
|||
const { data, code, msg } = await requestPost(url, params); |
|||
|
|||
if (code === 0) { |
|||
this.$message.success('操作成功'); |
|||
} else { |
|||
this.$message.error('操作失败'); |
|||
} |
|||
|
|||
// 重新加载列表 |
|||
this.handleSearch(); |
|||
}, |
|||
|
|||
methods: { |
|||
/** |
|||
* 组织选择触发事件 |
|||
* @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 } |
|||
} |
|||
|
|||
// 开启加载动画 |
|||
startLoading () { |
|||
loading = Loading.service({ |
|||
lock: true, // 是否锁定 |
|||
text: '正在加载……', // 加载中需要显示的文字 |
|||
background: 'rgba(0,0,0,.7)' // 背景颜色 |
|||
}) |
|||
}, |
|||
// 结束加载动画 |
|||
endLoading () { |
|||
// clearTimeout(timer); |
|||
if (loading) { |
|||
loading.close() |
|||
if (org.subAgencyList && org.subAgencyList.length > 0) { |
|||
let selectedOrg = this.getSelectedOrgIdAndType(orgId, org.subAgencyList) |
|||
if (selectedOrg) { |
|||
return selectedOrg |
|||
} |
|||
} |
|||
} |
|||
} |
|||
}, |
|||
computed: { |
|||
}, |
|||
|
|||
}, |
|||
watch: { |
|||
// 条数改变 |
|||
handleSizeChange (newPageSize) { |
|||
this.searchFormData.pageSize = newPageSize |
|||
this.handleSearch() |
|||
}, |
|||
|
|||
// 翻页 |
|||
handleCurrentChange (pageNo) { |
|||
this.searchFormData.pageNo = pageNo |
|||
this.handleSearch() |
|||
} |
|||
}, |
|||
props: { |
|||
policyId: { |
|||
type: String, |
|||
required: '' |
|||
}, |
|||
ruleList: { |
|||
type: Array, |
|||
required: true, |
|||
default () { |
|||
return [] |
|||
} |
|||
}, |
|||
tagId: { |
|||
type: String, |
|||
required: true, |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped > |
|||
@import "@/assets/scss/modules/management/list-main.scss"; |
|||
|
|||
.div_name { |
|||
padding: 5px 20px; |
|||
font-size: 16px; |
|||
<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; |
|||
} |
|||
</style> |
|||
|
|||
.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