Browse Source

【社区服务】修复一堆bug

feature
wxz 2 years ago
parent
commit
b91d7e9a39
  1. 26
      src/js/result_data_resolve.js
  2. 20
      src/views/modules/communityService/fuwuzhaoren/detailForm.vue
  3. 36
      src/views/modules/communityService/fuwuzhaoren/index.vue
  4. 478
      src/views/modules/communityService/fuwuzhaoren/personList.vue

26
src/js/result_data_resolve.js

@ -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

20
src/views/modules/communityService/fuwuzhaoren/detailForm.vue

@ -176,7 +176,6 @@
},
components: { fileList },
async mounted() {
await this.getPolicyList();
// if (this.serviceRecordId) {//
await this.loadInfo();
this.initLoading = true;
@ -225,19 +224,6 @@
this.showPersonList = false;
},
async getPolicyList() {
const url = "/governance/policy/policyList";
let params = {};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
this.policyList = data;
} else {
this.$message.error(msg);
}
},
//
async loadInfo() {
const url = "/governance/icServiceRecordV2/detail";
@ -252,7 +238,6 @@
this.formData = { ...data };
this.formData.serviceRecordId = this.serviceRecordId;
this.feedbackFormData = { ...data.feedback };
this.formData.policyName = "";
this.formData.gridIdListName = "";
this.feedbackFormData.serviceStatusShow = "";
this.feedbackFormData.satisfactionShow = "";
@ -272,11 +257,6 @@
this.feedbackFormData.satisfactionShow = element.label;
}
});
this.policyList.forEach((element) => {
if (this.formData.policyId === element.policyId) {
this.formData.policyName = element.title;
}
});
this.fileList = [];
if (

36
src/views/modules/communityService/fuwuzhaoren/index.vue

@ -187,13 +187,13 @@
align="center"
width="50" />
<el-table-column prop="serviceName"
<el-table-column prop="serviceTypeName"
label="服务类型"
align="center"
:show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="serviceOrgName"
<el-table-column prop="serviceName"
align="center"
min-width="150"
label="服务事项"
@ -239,6 +239,11 @@
width="110"
label="服务人数"
:show-overflow-tooltip="true">
<template slot-scope="scope">
<el-button @click="handlePersonList(scope.row)" type="text" size="small">
{{ scope.row.servedPersonQty }}
</el-button>
</template>
</el-table-column>
<el-table-column fixed="right"
@ -363,12 +368,9 @@
top="5vh"
class="dialog-h"
@closed="showPersonList = false">
<person-list ref="ref_detail_form"
:policyId="policyId"
:ruleList="ruleList"
@handleOk="handleOk"
@handleClose="handleClose"
:formType="formType">
<person-list ref="ref_person_list"
:serviceId="commonServiceId"
:tagId="tagId">
</person-list>
</el-dialog>
@ -382,13 +384,14 @@ import { mapGetters } from "vuex";
// import eventInfo from "./cpts/event-info";
import axios from "axios";
import addForm from "./addForm";
import detailForm from "./detailForm";
import detailForm from "./detailForm.vue";
import editForm from "./editForm";
import feedBackForm from "./addForm";
// import personList from "../policy/oldPersonList.vue";
import personList from "./personList";
//
export default {
components: { addForm, detailForm, feedBackForm, editForm },
components: { addForm, detailForm, feedBackForm, editForm, personList },
data () {
let endDisabledDate = (time) => {//datareturn
@ -479,7 +482,8 @@ export default {
serviceOptions: [],
serviceOptiondList: [],
policyId: '',
commonServiceId: null,
tagId: null,
showPersonList: false,
ruleList: [],
@ -513,6 +517,7 @@ export default {
this.getTableData();
},
methods: {
//
handleChangeServiceTypeLevel1() {
this.formData.serviceTypeLevel2Id = ''
@ -599,12 +604,11 @@ export default {
return this.$message.error("网络错误");
});
},
//
//
async handlePersonList (row) {
this.commonServiceId = row.serviceRecordId;
this.tagId = row.resiSearchTagId;
this.policyId = row.policyId
await this.loadRuleList()
this.formType = 'personList'
this.showPersonList = true;
},

478
src/views/modules/communityService/fuwuzhaoren/personList.vue

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