8 changed files with 5226 additions and 0 deletions
@ -0,0 +1,162 @@ |
|||
/** 固定值 */ |
|||
export const categoryAllList = [ |
|||
{ |
|||
label: "群众", |
|||
value: "partyFlag0", |
|||
}, |
|||
{ |
|||
label: "流动人员", |
|||
value: "FLOATING_FLAG", |
|||
}, |
|||
{ |
|||
label: "党员", |
|||
value: "partyFlag1", |
|||
}, |
|||
{ |
|||
label: "共青团员", |
|||
value: "partyFlag2", |
|||
}, |
|||
{ |
|||
label: "残疾人", |
|||
value: "DISABILITY_FLAG", |
|||
}, |
|||
{ |
|||
label: "大病", |
|||
value: "SERIOUS_ILLNESS_FLAG", |
|||
}, |
|||
{ |
|||
label: "慢病", |
|||
value: "CHRONIC_DISEASE_FLAG", |
|||
}, |
|||
{ |
|||
label: "老年人", |
|||
value: "OLD_PEOPLE_FLAG", |
|||
children: [ |
|||
{ |
|||
label: "失能老人", |
|||
value: "DISABLED_FLAG", |
|||
}, |
|||
{ |
|||
label: "空巢老人", |
|||
value: "EMPTY_NESTER_FLAG", |
|||
}, |
|||
{ |
|||
label: "失智老人", |
|||
value: "DEMENTED_FLAG", |
|||
}, |
|||
{ |
|||
label: "独居老人", |
|||
value: "LIVE_ALONE_FLAG", |
|||
}, |
|||
{ |
|||
label: "普通老年人", |
|||
value: "OLD_PEOPLE_FLAG", |
|||
}, |
|||
], |
|||
}, |
|||
{ |
|||
label: "低保人员", |
|||
value: "SUBSISTENCE_ALLOWANCE_FLAG", |
|||
}, |
|||
{ |
|||
label: "退役军人", |
|||
value: "VETERAN_FLAG", |
|||
}, |
|||
{ |
|||
label: "保障房人员", |
|||
value: "ENSURE_HOUSE_FLAG", |
|||
}, |
|||
{ |
|||
label: "育龄妇女", |
|||
value: "FERTILE_WOMAN_FLAG", |
|||
}, |
|||
{ |
|||
label: "特扶人员", |
|||
value: "SPECIAL_SUPPORT_FLAG", |
|||
children: [ |
|||
{ |
|||
label: "子女伤残", |
|||
value: "CHILDREN_DISABILITY_FLAG", |
|||
}, |
|||
{ |
|||
label: "子女死亡", |
|||
value: "CHILDREN_DEATH", |
|||
}, |
|||
], |
|||
}, |
|||
{ |
|||
label: "留守儿童", |
|||
value: "LBC_FLAG", |
|||
children: null, |
|||
}, |
|||
{ |
|||
label: "艾滋病人员", |
|||
value: "AIDS_FLAG", |
|||
children: null, |
|||
}, |
|||
{ |
|||
label: "失业人员", |
|||
value: "UNEMPLOYED_FLAG", |
|||
}, |
|||
{ |
|||
label: "新阶层人士", |
|||
value: "NEW_STRATUM_FLAG", |
|||
}, |
|||
{ |
|||
label: "新就业群体", |
|||
value: "NEG_FLAG", |
|||
children: null, |
|||
}, |
|||
{ |
|||
label: "安置帮教人员", |
|||
value: "anzhibangjiao", |
|||
}, |
|||
{ |
|||
label: "吸毒人员", |
|||
value: "xidurenyuan", |
|||
}, |
|||
{ |
|||
label: "社区矫正人员", |
|||
value: "shequjiaozheng", |
|||
}, |
|||
{ |
|||
label: "不良青少年", |
|||
value: "buliangqingshaonian", |
|||
}, |
|||
{ |
|||
label: "肇事肇祸精神障碍患者", |
|||
value: "zhaoshizhaohuojingshenbing", |
|||
}, |
|||
{ |
|||
label: "邪教人员", |
|||
value: "xiejiaorenyuan", |
|||
}, |
|||
{ |
|||
label: "信访人员", |
|||
value: "xinfang", |
|||
}, |
|||
{ |
|||
label: "统战人员", |
|||
value: "tongzhan", |
|||
}, |
|||
{ |
|||
label: "志愿者", |
|||
value: "VOLUNTEER_FLAG", |
|||
}, |
|||
{ |
|||
label: "网格员", |
|||
value: "GRID_MEMBER_FLAG", |
|||
}, |
|||
{ |
|||
label: "楼长", |
|||
value: "BUILDING_CHIEF_FLAG", |
|||
}, |
|||
{ |
|||
label: "单元长", |
|||
value: "UNIT_CHIEF_FLAG", |
|||
}, |
|||
{ |
|||
label: "公益岗", |
|||
value: "PUBLIC_WELFARE_FLAG", |
|||
}, |
|||
]; |
|||
@ -0,0 +1,471 @@ |
|||
<template> |
|||
<el-dialog :visible.sync="visible" :title="title" :close-on-click-modal="false" :close-on-press-escape="false" |
|||
width="950px" top="5vh" class="dialog-h" :before-close="handleCancel"> |
|||
<div class="dialog-h-content scroll-h"> |
|||
<el-form ref="ref_form" :inline="true" :model="formData" :disabled="title == '查看'" :rules="dataRule" class="form"> |
|||
<!-- <el-form-item label="居民分类" label-width="150px" prop="categoryList"> |
|||
<el-cascader ref="categoryAll" size="small" class="item_width_1 custom-cascader" |
|||
v-model.trim="formData.categoryList" :options="categoryAllList" |
|||
:props="{ multiple: true, checkStrictly: true, emitPath: false }" clearable></el-cascader> |
|||
</el-form-item> --> |
|||
|
|||
<el-form-item label="类别名称" prop="importantName" label-width="150px"> |
|||
<el-input v-model.trim="formData.importantName" size="small" clearable placeholder="请输入" |
|||
class="item_width_1"></el-input> |
|||
</el-form-item> |
|||
|
|||
<el-form-item class="full" label="居民分类" label-width="150px" prop="categoryList"> |
|||
<el-table border ref="tableBox" :data="tableData" :row-style="{ height: '50px' }" |
|||
:cell-style="{ padding: '0px' }" style="width: 100%"> |
|||
<el-table-column prop="province" label="标签" width="120" align="center"> |
|||
</el-table-column> |
|||
<el-table-column prop="city" label="内容" align="left" show-overflow-tooltip> |
|||
<template slot-scope="scope"> |
|||
<div v-if="scope.row.type == 'radio'" style="white-space: normal; word-break: break-all;"> |
|||
<el-radio-group v-model.trim="scope.row.value" v-for="(item, index) in scope.row.option" :key="index" |
|||
@change="handleClickRadio(index, scope.$index)"> |
|||
<el-radio :label="item.value" :disabled="item.disabled"><span |
|||
style="margin-right: 50px;" :value="item.value">{{ item.label |
|||
}}</span></el-radio> |
|||
</el-radio-group> |
|||
</div> |
|||
<div v-if="scope.row.type == 'checkbox'" :prop="'tableData.' + scope.$index + '.value'" |
|||
style="white-space: normal; word-break: break-all;"> |
|||
<el-checkbox-group v-model.trim="scope.row.value"> |
|||
<el-checkbox @change="(val) => handleClickCheckbox(val, item)" |
|||
:disabled="item.disabled" v-for="(item, index) in scope.row.option" |
|||
:key="index" :label="item.value">{{ item.label |
|||
}}</el-checkbox> |
|||
</el-checkbox-group> |
|||
</div> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
</el-form-item> |
|||
</el-form> |
|||
</div> |
|||
|
|||
<div class="div_btn"> |
|||
<el-button size="small" @click="handleCancel" :loading="btnDisable">取 消</el-button> |
|||
<el-button size="small" type="primary" :loading="btnDisable" @click="handleConfirm">确 定</el-button> |
|||
</div> |
|||
</el-dialog> |
|||
</template> |
|||
|
|||
<script> |
|||
import _ from 'lodash' |
|||
import { Loading } from 'element-ui' // 引入Loading服务 |
|||
import { requestPost } from '@/js/dai/request' |
|||
import { categoryAllList } from '@/utils/enum.js'; |
|||
import { requestGet } from "@/js/dai/request"; |
|||
|
|||
const defaultFormData = { |
|||
id: undefined, |
|||
importType: 'normal', |
|||
importantName: '', |
|||
categoryList: [] |
|||
} |
|||
|
|||
const defaultTableData = [ |
|||
{ |
|||
index: 0, |
|||
province: '政治面貌', |
|||
value: 0, |
|||
type: 'radio', |
|||
option: [ |
|||
{ label: '群众', value: 'partyFlag0' }, |
|||
{ label: '党员', value: 'partyFlag1' }, |
|||
{ label: '共青团员', value: 'partyFlag2' }, |
|||
] |
|||
}, |
|||
{ |
|||
index: 1, |
|||
province: '健康状态', |
|||
value: [], |
|||
type: 'checkbox', |
|||
option: [ |
|||
{ |
|||
label: '残疾', |
|||
value: 'DISABILITY_FLAG' |
|||
}, |
|||
{ |
|||
label: '大病', |
|||
value: 'SERIOUS_ILLNESS_FLAG' |
|||
}, |
|||
{ |
|||
label: '慢病', |
|||
value: 'CHRONIC_DISEASE_FLAG' |
|||
} |
|||
] |
|||
}, |
|||
{ |
|||
index: 2, |
|||
province: '关注人群', |
|||
value: [], |
|||
type: 'checkbox', |
|||
option: [ |
|||
{ |
|||
label: '老年人', |
|||
value: 'OLD_PEOPLE_FLAG', |
|||
}, |
|||
// { |
|||
// label: "失能老人", |
|||
// value: "DISABLED_FLAG", |
|||
// }, |
|||
// { |
|||
// label: "空巢老人", |
|||
// value: "EMPTY_NESTER_FLAG", |
|||
// }, |
|||
// { |
|||
// label: "失智老人", |
|||
// value: "DEMENTED_FLAG", |
|||
// }, |
|||
// { |
|||
// label: "独居老人", |
|||
// value: "LIVE_ALONE_FLAG", |
|||
// }, |
|||
// { |
|||
// label: "普通老年人", |
|||
// value: "OLD_PEOPLE_FLAG", |
|||
// }, |
|||
{ |
|||
label: '低保', |
|||
value: 'SUBSISTENCE_ALLOWANCE_FLAG' |
|||
}, |
|||
{ |
|||
label: '退役军人', |
|||
value: 'VETERAN_FLAG' |
|||
}, |
|||
{ |
|||
label: '保障房人员', |
|||
value: 'ENSURE_HOUSE_FLAG' |
|||
}, |
|||
{ |
|||
label: '育龄妇女', |
|||
value: 'FERTILE_WOMAN_FLAG' |
|||
}, |
|||
{ |
|||
label: '特扶人员', |
|||
value: 'SPECIAL_SUPPORT_FLAG' |
|||
}, { |
|||
label: '留守儿童', |
|||
value: 'LBC_FLAG' |
|||
}, { |
|||
label: '艾滋病人员', |
|||
value: 'AIDS_FLAG' |
|||
}, { |
|||
label: '流动人员', |
|||
value: 'FLOATING_FLAG' |
|||
}, { |
|||
label: '新阶层人士', |
|||
value: 'NEW_STRATUM_FLAG' |
|||
}, { |
|||
label: '新就业群体', |
|||
value: 'NEG_FLAG' |
|||
}, { |
|||
label: '失业人员', |
|||
value: 'UNEMPLOYED_FLAG' |
|||
} |
|||
] |
|||
}, |
|||
{ |
|||
index: 3, |
|||
province: '特殊人群', |
|||
value: [], |
|||
type: 'checkbox', |
|||
option: [] |
|||
}, |
|||
{ |
|||
index: 4, |
|||
province: '身份', |
|||
value: [], |
|||
type: 'checkbox', |
|||
option: [ |
|||
{ |
|||
label: '志愿者', |
|||
value: 'VOLUNTEER_FLAG' |
|||
}, |
|||
{ |
|||
label: '网格员', |
|||
value: 'GRID_MEMBER_FLAG' |
|||
}, |
|||
{ |
|||
label: '楼长', |
|||
value: 'BUILDING_CHIEF_FLAG' |
|||
}, |
|||
{ |
|||
label: '单元长', |
|||
value: 'UNIT_CHIEF_FLAG' |
|||
}, |
|||
{ |
|||
label: '公益岗', |
|||
value: 'PUBLIC_WELFARE_FLAG' |
|||
} |
|||
] |
|||
}, |
|||
]; |
|||
|
|||
let loading // 加载动画 |
|||
export default { |
|||
name: 'revitalizeDialog', |
|||
components: {}, |
|||
props: { |
|||
visible: { |
|||
type: Boolean, |
|||
default: false |
|||
}, |
|||
title: { |
|||
type: String, |
|||
default: '' |
|||
} |
|||
}, |
|||
data() { |
|||
return { |
|||
categoryAllList: _.cloneDeep(categoryAllList), |
|||
formData: _.cloneDeep(defaultFormData), |
|||
btnDisable: false, |
|||
tableData: _.cloneDeep(defaultTableData), |
|||
} |
|||
}, |
|||
|
|||
mounted() { |
|||
|
|||
}, |
|||
methods: { |
|||
async initForm(row) { |
|||
const { data } = await requestPost('/sys/dict/data/dictlist', { dictType: 'special_resident_category' }); |
|||
this.tableData[3].option = data; |
|||
if (row && row.id) { |
|||
this.startLoading() |
|||
let url = `/actual/base/residentCategoryImportant/detail/${row.id}` |
|||
const { data, code, msg } = await requestGet(url) |
|||
this.formData = data ? data : _.cloneDeep(defaultFormData) |
|||
// 根据categoryCodeList设置option.selected为true并赋值给radio/checkbox |
|||
if (data && data.categoryCodeList) { |
|||
this.tableData.forEach(row => { |
|||
// 处理单选框 |
|||
if (row.type === 'radio') { |
|||
const matchedItem = row.option.find(item => data.categoryCodeList.includes(item.value)); |
|||
if (matchedItem) { |
|||
row.value = matchedItem.value; |
|||
matchedItem.selected = true; |
|||
} |
|||
} |
|||
// 处理复选框 |
|||
else if (row.type === 'checkbox') { |
|||
row.value = row.option |
|||
.filter(item => data.categoryCodeList.includes(item.value)) |
|||
.map(item => item.value); |
|||
} |
|||
|
|||
// 设置selected状态 |
|||
row.option.forEach(item => { |
|||
item.selected = data.categoryCodeList.includes(item.value); |
|||
}); |
|||
}); |
|||
this.handleCategoryList(); |
|||
} |
|||
this.endLoading() |
|||
} |
|||
}, |
|||
|
|||
handleClickRadio(index, rowIndex) { |
|||
this.tableData[rowIndex].option.forEach((item, i) => { |
|||
if (i === index) item.selected = true |
|||
else item.selected = false |
|||
}) |
|||
this.handleCategoryList(); |
|||
}, |
|||
handleClickCheckbox(val, item) { |
|||
item.selected = val; |
|||
this.handleCategoryList(); |
|||
// item.index = index; |
|||
// if (event) { |
|||
// this.$emit('showDialog', item, event) |
|||
// } else { |
|||
// this.$confirm(`确认取消${item.label}标签`, '确认信息', { |
|||
// confirmButtonText: '确认取消', |
|||
// cancelButtonText: '暂不取消', |
|||
// type: 'warning' |
|||
// }).then(() => { |
|||
// this.$emit('showDialog', item, event) |
|||
// }).catch(() => { |
|||
// this.formData.tableData[index].value.push(item.value) |
|||
// }); |
|||
// } |
|||
}, |
|||
|
|||
// 添加类别 |
|||
handleCategoryList() { |
|||
this.formData.categoryList = this.tableData.flatMap(row => |
|||
row.option.filter(item => item.selected).map(item => item.value) |
|||
); |
|||
console.log('this.formData.categoryList===', this.formData.categoryList) |
|||
this.$refs.ref_form.validateField('categoryList') |
|||
}, |
|||
async handleConfirm() { |
|||
this.$refs['ref_form'].validate(async valid => { |
|||
if (valid) { |
|||
this.btnDisable = true |
|||
let url = this.formData.id ? '/actual/base/residentCategoryImportant/update' : '/actual/base/residentCategoryImportant/create' |
|||
const { data, code, internalMsg } = await requestPost(url, this.formData) |
|||
if (code === 0) { |
|||
this.$message.success(this.formData.id ? '更新成功' : '新增成功') |
|||
this.resetData() |
|||
this.$emit('update:visible', false) |
|||
this.$emit('success') |
|||
} else { |
|||
this.$message.error(internalMsg) |
|||
} |
|||
this.btnDisable = false |
|||
} |
|||
}) |
|||
}, |
|||
|
|||
// 取消 |
|||
handleCancel() { |
|||
this.resetData() |
|||
this.$emit('update:visible', false) |
|||
}, |
|||
|
|||
resetData() { |
|||
this.formData = _.cloneDeep(defaultFormData); |
|||
this.tableData = _.cloneDeep(defaultTableData); |
|||
this.$nextTick(() => { |
|||
this.$refs['ref_form'].resetFields(); |
|||
}) |
|||
}, |
|||
// 开启加载动画 |
|||
startLoading() { |
|||
loading = Loading.service({ |
|||
lock: true, // 是否锁定 |
|||
text: '正在加载……', // 加载中需要显示的文字 |
|||
background: 'rgba(0,0,0,.7)' // 背景颜色 |
|||
}) |
|||
}, |
|||
// 结束加载动画 |
|||
endLoading() { |
|||
// clearTimeout(timer); |
|||
if (loading) { |
|||
loading.close() |
|||
} |
|||
}, |
|||
// 更新分类标签 |
|||
updateCategoryTags() { |
|||
this.$nextTick(() => { |
|||
const cascaderEl = this.$refs.categoryAll.$el; |
|||
const tagsContainer = cascaderEl.querySelector('.el-cascader__tags'); |
|||
const tags = tagsContainer.querySelectorAll('.el-tag'); |
|||
|
|||
// 移除已存在的+n标签 |
|||
const moreTag = tagsContainer.querySelector('.el-tag-more'); |
|||
if (moreTag) { |
|||
moreTag.remove(); |
|||
} |
|||
|
|||
// 恢复所有标签显示 |
|||
tags.forEach(tag => { |
|||
tag.style.display = 'inline-block'; |
|||
}); |
|||
|
|||
// 计算可见标签数量 |
|||
let visibleCount = 0; |
|||
let containerWidth = tagsContainer.offsetWidth; |
|||
let totalWidth = 0; |
|||
const tagMargin = 7; |
|||
|
|||
for (let i = 0; i < tags.length; i++) { |
|||
const tag = tags[i]; |
|||
const tagWidth = tag.offsetWidth; |
|||
|
|||
// 第一个标签没有左边距 |
|||
const margin = i > 0 ? tagMargin : 0; |
|||
|
|||
if (totalWidth + tagWidth + margin > containerWidth && visibleCount > 0) { |
|||
break; |
|||
} |
|||
|
|||
totalWidth += tagWidth + margin; |
|||
visibleCount++; |
|||
} |
|||
|
|||
// 隐藏超出的标签并显示+n标签 |
|||
if (visibleCount < tags.length) { |
|||
const hiddenCount = tags.length - visibleCount; |
|||
|
|||
// 隐藏超出的标签(包括前面一个标签) |
|||
const startHideIndex = visibleCount > 0 ? visibleCount - 1 : 0; |
|||
for (let i = startHideIndex; i < tags.length; i++) { |
|||
tags[i].style.display = 'none'; |
|||
} |
|||
|
|||
// 创建+n标签 |
|||
const moreTag = document.createElement('span'); |
|||
moreTag.className = 'el-tag el-tag--info el-tag--mini el-tag--light el-tag-more'; |
|||
moreTag.textContent = `+${hiddenCount + (startHideIndex > 0 ? 1 : 0)}`; |
|||
moreTag.style.marginLeft = '8px'; |
|||
tagsContainer.appendChild(moreTag); |
|||
} |
|||
}); |
|||
} |
|||
}, |
|||
computed: { |
|||
dataRule() { |
|||
return { |
|||
categoryList: [ |
|||
{ required: true, message: '请选择分类', trigger: 'change' } |
|||
], |
|||
importantName: [ |
|||
{ required: true, message: '请输入类别名称', trigger: 'blur' } |
|||
], |
|||
} |
|||
}, |
|||
|
|||
}, |
|||
watch: { |
|||
// 'formData.categoryList': { |
|||
// handler(newVal) { |
|||
// this.$nextTick(() => { |
|||
// this.updateCategoryTags() |
|||
// }) |
|||
// }, |
|||
// deep: true |
|||
// } |
|||
} |
|||
|
|||
} |
|||
</script> |
|||
|
|||
|
|||
<style lang="scss" scoped> |
|||
.form { |
|||
margin-top: 16px; |
|||
} |
|||
|
|||
.item_width_1 { |
|||
width: 560px; |
|||
|
|||
} |
|||
|
|||
.custom-cascader { |
|||
::v-deep .el-cascader__tags { |
|||
flex-wrap: nowrap; |
|||
overflow: hidden; |
|||
} |
|||
} |
|||
|
|||
.full { |
|||
width: 100%; |
|||
display: flex; |
|||
|
|||
::v-deep .el-form-item__content { |
|||
flex: 1; |
|||
} |
|||
} |
|||
|
|||
.div_btn { |
|||
width: 100%; |
|||
text-align: right; |
|||
padding-right: 20px; |
|||
} |
|||
</style> |
|||
@ -0,0 +1,235 @@ |
|||
<template> |
|||
<div class="g-main"> |
|||
<!-- 重点类别 --> |
|||
<div class="m-search"> |
|||
<el-form :inline="true" :model="queryParams" ref="ref_searchform" :label-width="'100px'"> |
|||
<div> |
|||
<el-form-item label="类别名称" prop="title"> |
|||
<el-input v-model.trim="queryParams.title" size="small" class="item_width_1" clearable placeholder="请输入"> |
|||
</el-input> |
|||
</el-form-item> |
|||
</div> |
|||
<div> |
|||
<div style="display: flex; justify-content: flex-end;"> |
|||
<el-button style="margin-left:10px" class="diy-button--blue" size="small" |
|||
@click="handleSearch">查询</el-button> |
|||
<el-button style="margin-left:10px" class="diy-button--white" size="small" |
|||
@click="resetSearch">重置</el-button> |
|||
</div> |
|||
</div> |
|||
</el-form> |
|||
</div> |
|||
<div class="m-table"> |
|||
<div class="div_btn"> |
|||
<el-button style="" class="diy-button--add" size="small" @click="handleAdd">新增</el-button> |
|||
</div> |
|||
|
|||
<el-table class="table" :data="tableData" border :height="tableHeight" v-loading="tableLoading" |
|||
style="width: 100%;margin-top:16px"> |
|||
|
|||
<el-table-column label="序号" header-align="center" align="center" type="index" width="50" /> |
|||
<el-table-column prop="importantName" header-align="center" align="center" label="类型名称" /> |
|||
<el-table-column prop="categoryCodeList" header-align="center" align="center" label="居民分类" show-overflow-tooltip :formatter="formatterCategory" /> |
|||
<el-table-column label="操作" fixed="right" header-align="center" align="center" width="160" class="operate"> |
|||
<template slot-scope="scope"> |
|||
|
|||
<el-button type="text" style="color:#1C6AFD;" size="small" @click="handleDetail(scope.row)">查看</el-button> |
|||
|
|||
<el-button type="text" style="color:#1C6AFD;" size="small" |
|||
@click="handleEdit(scope.row)">编辑</el-button> |
|||
|
|||
<el-button type="text" style="color:#1C6AFD;" size="small" |
|||
@click="handleDelete(scope.row)">删除</el-button> |
|||
|
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<div> |
|||
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page.sync="pageNo" |
|||
:page-sizes="[10, 20, 50]" :page-size="pageSize" layout="sizes, prev, pager, next, total" :total="total"> |
|||
</el-pagination> |
|||
</div> |
|||
</div> |
|||
|
|||
<!-- 新增 || 修改 || 查看弹出框 --> |
|||
<key-category-dialog ref="keyCategoryDialog" :visible.sync="dialogVisible" :title="dialogTitle" |
|||
@success="getTableData"></key-category-dialog> |
|||
|
|||
|
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { mapGetters } from 'vuex'; |
|||
import { requestPost, requestGet } from "@/js/dai/request"; |
|||
import { categoryAllList } from '@/utils/enum.js'; |
|||
import keyCategoryDialog from './components/keyCategoryDialog.vue'; |
|||
|
|||
export default { |
|||
name: 'keyCategoryIndex', |
|||
components: { |
|||
keyCategoryDialog, |
|||
}, |
|||
data() { |
|||
return { |
|||
loading: false, |
|||
total: 0, |
|||
pageSize: 10, |
|||
pageNo: 1, |
|||
tableLoading: false, |
|||
agencyId: '', |
|||
typeList: [], |
|||
categoryAllList: _.cloneDeep(categoryAllList), |
|||
queryParams: { |
|||
// title: "", |
|||
}, |
|||
tableData: [], |
|||
dialogVisible: false, |
|||
dialogTitle: '', |
|||
} |
|||
}, |
|||
mounted() { |
|||
this.getTableData() |
|||
}, |
|||
|
|||
methods: { |
|||
|
|||
// 获取列表 |
|||
async getTableData() { |
|||
const url = "/actual/base/residentCategoryImportant/page"; |
|||
let params = { |
|||
pageSize: this.pageSize, |
|||
pageNo: this.pageNo, |
|||
...this.queryParams, |
|||
}; |
|||
let { data, code, msg } = await requestPost(url, params); |
|||
if (code === 0) { |
|||
console.log('data===', data) |
|||
this.total = data.total |
|||
this.tableData = data.list |
|||
} else { |
|||
this.$message.error(msg) |
|||
} |
|||
}, |
|||
|
|||
// 搜索 |
|||
handleSearch() { |
|||
this.pageNo = 1; |
|||
this.getTableData(); |
|||
}, |
|||
|
|||
// 重置 |
|||
resetSearch() { |
|||
this.queryParams = {}; |
|||
this.pageSize = 10; |
|||
this.pageNo = 1; |
|||
this.getTableData(); |
|||
}, |
|||
|
|||
handleSizeChange(val) { |
|||
this.pageSize = val; |
|||
this.pageNo = 1; |
|||
this.getTableData(); |
|||
}, |
|||
handleCurrentChange(val) { |
|||
this.pageNo = val; |
|||
this.getTableData(); |
|||
}, |
|||
|
|||
// 新增 |
|||
handleAdd() { |
|||
this.dialogVisible = true; |
|||
this.dialogTitle = '新增'; |
|||
this.$nextTick(() => { |
|||
this.$refs.keyCategoryDialog.initForm(); |
|||
}); |
|||
}, |
|||
// 编辑 |
|||
handleEdit(row) { |
|||
this.dialogVisible = true; |
|||
this.dialogTitle = '编辑'; |
|||
this.$nextTick(() => { |
|||
this.$refs.keyCategoryDialog.initForm(row); |
|||
}); |
|||
}, |
|||
// 查看 |
|||
handleDetail(row) { |
|||
this.dialogVisible = true; |
|||
this.dialogTitle = '查看'; |
|||
this.$nextTick(() => { |
|||
this.$refs.keyCategoryDialog.initForm(row); |
|||
}); |
|||
}, |
|||
// 删除 |
|||
async handleDelete(row) { |
|||
this.$confirm("确认删除?", "提示", { |
|||
confirmButtonText: "确定", |
|||
cancelButtonText: "取消", |
|||
type: "warning" |
|||
}) |
|||
.then(async () => { |
|||
const url = "/actual/base/residentCategoryImportant/delete" |
|||
let obj = { |
|||
id: row.id |
|||
} |
|||
const { data, code, internalMsg } = await requestGet(url, obj) |
|||
if (code === 0) { |
|||
this.$message({ |
|||
type: "success", |
|||
message: "删除成功" |
|||
}); |
|||
this.getTableData() |
|||
} else { |
|||
this.$message.error(internalMsg) |
|||
} |
|||
}) |
|||
.catch(err => { |
|||
|
|||
}); |
|||
}, |
|||
|
|||
// 格式化类别 |
|||
formatterCategory(row) { |
|||
if (row.categoryCodeList) { |
|||
const labels = row.categoryCodeList.map(item => { |
|||
const matchedItem = this.categoryAllList.find(cat => cat.value.toUpperCase() === item.toUpperCase()); |
|||
console.log('matchedItem--', matchedItem) |
|||
return matchedItem.label; |
|||
}).filter(label => label); |
|||
return labels.join(","); |
|||
} |
|||
} |
|||
}, |
|||
|
|||
computed: { |
|||
tableHeight() { |
|||
return this.$store.state.inIframe ? this.clientHeight - 430 + this.iframeHeight : this.clientHeight - 430 |
|||
}, |
|||
...mapGetters(['clientHeight', 'iframeHeight']) |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.g-main { |
|||
width: 100%; |
|||
} |
|||
|
|||
.m-search { |
|||
background: #ffffff; |
|||
border-radius: 4px; |
|||
padding: 24px 10px 10px; |
|||
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1); |
|||
margin: 20px 7px 7px; |
|||
} |
|||
|
|||
.m-table { |
|||
background: #ffffff; |
|||
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1); |
|||
border-radius: 4px; |
|||
margin-top: 15px; |
|||
padding: 24px 16px 10px; |
|||
margin: 16px 7px 7px; |
|||
|
|||
} |
|||
</style> |
|||
File diff suppressed because it is too large
@ -0,0 +1,66 @@ |
|||
<template> |
|||
<el-dialog :title="title" :visible.sync="visible" append-to-body :before-close="handleClose"> |
|||
<el-form :model="form" :rules="rules" ref="checkPasswordFrom" label-width="60px"> |
|||
<el-form-item label="密码" prop="password"> |
|||
<el-input v-model.trim="form.password" autocomplete="off" type="password" placeholder="请输入当前账号密码" |
|||
@keydown.native.enter="handelClickCheckPassword"></el-input> |
|||
</el-form-item> |
|||
</el-form> |
|||
<div slot="footer" class="dialog-footer"> |
|||
<el-button @click="handleClose">取 消</el-button> |
|||
<el-button type="primary" @click="handelClickCheckPassword">确 定</el-button> |
|||
</div> |
|||
</el-dialog> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
name: "keyPerCheckPassword", |
|||
props: { |
|||
title: { |
|||
type: String, |
|||
default: "密码验证" |
|||
}, |
|||
visible: { |
|||
type: Boolean, |
|||
default: false |
|||
} |
|||
}, |
|||
data() { |
|||
return { |
|||
form: { |
|||
password: '' |
|||
}, |
|||
rules: { |
|||
password: [ |
|||
{ required: true, message: "请输入密码", trigger: "blur" }, |
|||
{ |
|||
min: 6, |
|||
max: 18, |
|||
message: "长度在 6 到 18 个字符", |
|||
trigger: "blur", |
|||
}, |
|||
], |
|||
}, |
|||
} |
|||
}, |
|||
methods: { |
|||
handelClickCheckPassword() { |
|||
this.$refs.checkPasswordFrom.validate(valid => { |
|||
if (valid) { |
|||
this.$emit("success", this.form.password); |
|||
this.handleClose(); |
|||
} |
|||
}); |
|||
}, |
|||
handleClose() { |
|||
this.form.password = ""; |
|||
this.$emit("update:visible", false); |
|||
}, |
|||
} |
|||
|
|||
|
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped></style> |
|||
File diff suppressed because it is too large
@ -0,0 +1,605 @@ |
|||
<template> |
|||
<!-- 重点人员 --> |
|||
<div class="g-main"> |
|||
<section style="width: 100%"> |
|||
<div class="m-search"> |
|||
<el-form ref="queryForm" class="header_form_box" :model="queryParams" :label-width="'105px'"> |
|||
<!-- <el-form-item label="居民分类"> |
|||
<el-cascader ref="categoryAll" size="small" class="u-item-width-normal" v-model.trim="categoryAll" |
|||
:options="categoryAllList" :props="{ multiple: true, checkStrictly: true, emitPath: false }" collapse-tags |
|||
clearable></el-cascader> |
|||
</el-form-item> --> |
|||
<el-form-item label="所属组织" prop="agencyId"> |
|||
<el-cascader style="width: 100%;" size="small" v-model="cascaderAgencyId" :options="organizeOptions" |
|||
:props="{ checkStrictly: true, multiple: false, value: 'value', label: 'label', children: 'children' }" |
|||
:show-all-levels="false" @change="handleOrgChange" clearable></el-cascader> |
|||
</el-form-item> |
|||
<el-form-item label="重点人员类型" prop="keyCategory"> |
|||
<el-select v-model.trim="keyCategory" clearable size="small" style="width: 100%;" |
|||
@change="handleKeyCategory"> |
|||
<el-option v-for="item in categoryList" :key="item.id" :label="item.importantName" |
|||
:value="item.categoryCodeList"> |
|||
</el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="姓名" prop="name"> |
|||
<el-input v-model.trim="queryParams.name" placeholder="请输入" clearable size="small"> |
|||
</el-input> |
|||
</el-form-item> |
|||
<el-form-item label="手机号" prop="mobile"> |
|||
<el-input v-model.trim="queryParams.mobile" placeholder="请输入" clearable size="small"> |
|||
</el-input> |
|||
</el-form-item> |
|||
<!-- <el-form-item label="证件类型"> |
|||
<el-select v-model.trim="queryParams.idType" placeholder="请选择" size="small" class="list_item_width_1" |
|||
clearable> |
|||
<el-option v-for="(item, index) in idTypeList" :key="index" :label="item.label" :value="item.value" |
|||
@click.native="handelCLickIdType(item.value)"></el-option> |
|||
</el-select> |
|||
|
|||
<el-select v-model.trim="queryParams.careerStatus" class="u-item-width-normal" clearable size="small"> |
|||
<el-option v-for="item in careerStatusList" :label="item.label" :value="item.value" :key="item.value"> |
|||
</el-option> |
|||
</el-select> |
|||
</el-form-item> --> |
|||
<el-form-item label="证件号" prop="idNum"> |
|||
<el-input v-model.trim="queryParams.idNum" class="u-item-width-daterange" placeholder="请输入" clearable |
|||
size="small"> |
|||
</el-input> |
|||
</el-form-item> |
|||
</el-form> |
|||
|
|||
<div> |
|||
<div style="display: flex; justify-content: flex-end;"> |
|||
<el-button style="margin-left:10px" class="diy-button--blue" size="small" |
|||
@click="handleSearchFrom">查询</el-button> |
|||
<el-button style="margin-left:10px" class="diy-button--white" size="small" |
|||
@click="resetSearchForm">重置</el-button> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div class="m-table"> |
|||
<div class="div_btn"> |
|||
<el-button class="diy-button--add" v-if="btnAuths.ic_keyPersonnel_add" size="small" @click="handleAdd" |
|||
type="primary" icon="el-icon-plus"> |
|||
新增</el-button> |
|||
<!-- <el-button v-if="btnAuths.ic_resi_export" style="margin-left: 10px" size="small" class="diy-button--white" |
|||
@click="diyExport" :loading="exportLoading" plain>{{ exportBtnTitle }}</el-button> |
|||
<el-button style="margin-left: 10px" v-if="btnAuths.ic_resi_batch_del" size="small" class="diy-button--add" |
|||
type="primary" @click="deleteBatch">批量删除</el-button> --> |
|||
</div> |
|||
<el-table class="table" :data="tableData" border :height="tableHeight" v-loading="tableLoading" |
|||
style="width: 100%;margin-top:16px"> |
|||
<!-- <el-table-column type="selection" fixed="left" align="center" width="50" /> --> |
|||
<el-table-column label="序号" type="index" fixed="left" align="left" width="50"> |
|||
</el-table-column> |
|||
<el-table-column label="所属组织" prop="agencyName" align="center"> |
|||
</el-table-column> |
|||
<el-table-column label="重点人员类型" prop="gridName" align="center"> |
|||
</el-table-column> |
|||
<el-table-column label="姓名" prop="name" align="center"> |
|||
</el-table-column> |
|||
<el-table-column label="手机号" prop="mobile" align="center"> |
|||
</el-table-column> |
|||
<el-table-column label="证件类型" prop="idTypeName" align="center"> |
|||
</el-table-column> |
|||
<el-table-column label="证件号" prop="idNum" align="center"> |
|||
</el-table-column> |
|||
<el-table-column label="住址" prop="homeName" align="center" show-overflow-tooltip> |
|||
</el-table-column> |
|||
|
|||
<el-table-column fixed="right" label="操作" align="center" width="200"> |
|||
<template slot-scope="scope"> |
|||
<el-button v-if="btnAuths.ic_keyPersonnel_detail" type="text" size="small" |
|||
@click="handleLook(scope.row)">查看</el-button> |
|||
<el-button v-if="btnAuths.ic_keyPersonnel_edit" style="margin-right: 10px" |
|||
@click="handelCLickShowCheckPassword(scope.row)" size="small" type="text">编辑</el-button> |
|||
<el-popconfirm v-if="btnAuths.ic_keyPersonnel_delete" title="删除之后无法回复,确认删除?" |
|||
@onConfirm="handleDel(scope.row)"> |
|||
<el-button size="small" type="text" slot="reference">删除</el-button> |
|||
</el-popconfirm> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
<div class="div-flex"> |
|||
<div class="m-page"> |
|||
<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" |
|||
:current-page.sync="pageNo" :page-sizes="[20, 50, 100, 200]" :page-size="pageSize" |
|||
layout="sizes, prev, pager, next, total" :total="total"> |
|||
</el-pagination> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</section> |
|||
|
|||
<!-- 密码验证 --> |
|||
<check-password :visible.sync="showCheckPassword" ref="checkPassword" @success="saveCheckPassword"></check-password> |
|||
</div> |
|||
</template> |
|||
<script> |
|||
import _ from "lodash"; |
|||
import { mapGetters } from "vuex"; |
|||
import { requestPost, requestGet } from "@/js/dai/request"; |
|||
import checkPassword from "./components/checkPassword.vue"; |
|||
import { idTypeList } from "@/js/columns/constants"; |
|||
// import { Loading } from "element-ui"; // 引入Loading服务 |
|||
// import resideathAdd from "../plugins/change/resideathAdd.vue"; |
|||
// import diyInfo from "./diyInfo.vue"; |
|||
let loading; |
|||
export default { |
|||
name: "keyPersonnelIndex", |
|||
components: { |
|||
checkPassword, |
|||
}, |
|||
data() { |
|||
return { |
|||
queryParams: { |
|||
name: '', |
|||
mobile: '', |
|||
updateCategory: null, |
|||
satisfactionNum: null, |
|||
idNum: '', |
|||
birthdayStart: '', |
|||
birthdayEnd: '', |
|||
ageStart: '', |
|||
ageEnd: '', |
|||
integrityScoreFrom: null,//居民信息完整度 |
|||
integrityScoreTo: null,//居民信息完整度 |
|||
identity: null, |
|||
gender: '', |
|||
cultureLevel: '', |
|||
localResidenceFlag: '', |
|||
householdSituation: '', |
|||
nation: '', |
|||
agencyId: '', |
|||
buildId: '', |
|||
homeId: '', |
|||
unitId: '', |
|||
gridId: '', |
|||
villageId: '', |
|||
attentionCrowds: [], |
|||
healthStatus: [], |
|||
nationality: '', |
|||
resiHouseRel: '', |
|||
partyFlag: '', |
|||
updateTimeStart: '', |
|||
updateTimeEnd: '', |
|||
specialCategoryCodes: [], |
|||
remark: '', |
|||
level: '', |
|||
orgType: '', |
|||
idType: '' |
|||
}, |
|||
keyCategory: '', |
|||
tableData: [], |
|||
cascaderAgencyId: [], |
|||
idTypeList, |
|||
pageSize: 20, |
|||
pageNo: 1, |
|||
total: 0, |
|||
organizeOptions: [], |
|||
categoryAllList: [], |
|||
defaultCategoryAllList: [], |
|||
categoryList: [], |
|||
careerStatusList: [], |
|||
btnAuths: { |
|||
ic_keyPersonnel_add: true, |
|||
ic_keyPersonnel_edit: true, |
|||
ic_keyPersonnel_detail: true, |
|||
ic_keyPersonnel_delete: true |
|||
}, |
|||
showCheckPassword: false, |
|||
exportLoading: false, |
|||
exportBtn: false, |
|||
exportBtnTitle: "导出", |
|||
importBtnTitle: "导入", |
|||
importLoading: false, |
|||
tableLoading: false, |
|||
btnLoading: false, |
|||
disabled: false, |
|||
selAllFlag: false, |
|||
selAllFlagDisabled: false, |
|||
isIndeterminate: false, |
|||
dialogEditVisible: false, |
|||
|
|||
formType: "add", |
|||
// 显示人员详情 |
|||
lookResiId: "", |
|||
exportList: [], |
|||
diyDialog: false, |
|||
autoOpenArr: [], |
|||
filterText: "", |
|||
|
|||
defaultProps: { |
|||
children: "children", |
|||
label: "showName", |
|||
isLeaf: "isLeaf", |
|||
}, |
|||
selection: [], |
|||
editUserId: "", |
|||
}; |
|||
}, |
|||
props: {}, |
|||
computed: { |
|||
...mapGetters(["clientHeight"]), |
|||
tableHeight() { |
|||
return this.$store.state.inIframe |
|||
? this.clientHeight - 450 + this.iframeHeigh |
|||
: this.clientHeight - 450; |
|||
}, |
|||
}, |
|||
created() { |
|||
this.getKeyCategory(); |
|||
this.getOptions(); |
|||
}, |
|||
async mounted() { |
|||
}, |
|||
methods: { |
|||
// 获取所属组织 |
|||
async getOptions() { |
|||
const { data } = await requestPost("/gov/org/customeragency/orgtree", {}); |
|||
this.organizeOptions = data ? [this.computeOption(data)] : [] |
|||
}, |
|||
// 获取重点类型 |
|||
async getKeyCategory() { |
|||
const url = "/actual/base/residentCategoryImportant/page"; |
|||
let params = { |
|||
pageSize: 1000, |
|||
pageNo: 1, |
|||
}; |
|||
let { data, code, msg } = await requestPost(url, params); |
|||
if (code === 0) { |
|||
this.categoryList = data.list || []; |
|||
this.categoryAllList = [...new Set(data.list.flatMap(item => item.categoryCodeList))]; |
|||
this.defaultCategoryAllList = _.cloneDeep(this.categoryAllList); |
|||
} else { |
|||
this.$message.error(msg) |
|||
} |
|||
}, |
|||
// 格式化数据 |
|||
computeOption(opt) { |
|||
return { |
|||
label: opt.agencyName, |
|||
value: opt.agencyId, |
|||
type: "agency", |
|||
children: [ |
|||
...this.processDepartmentList(opt.departmentList), |
|||
...this.processGridList(opt.gridList), |
|||
...this.processSubAgencyList(opt.subAgencyList), |
|||
], |
|||
}; |
|||
}, |
|||
// 处理部门列表 |
|||
processDepartmentList(departmentList) { |
|||
return (departmentList || []).map((item) => ({ |
|||
label: item.deptName, |
|||
value: item.deptId, |
|||
type: "dept", |
|||
typeName: "部门", |
|||
})) |
|||
}, |
|||
// 处理网格列表 |
|||
processGridList(gridList) { |
|||
return (gridList || []).map((item) => ({ |
|||
label: item.gridName, |
|||
value: item.gridId, |
|||
type: "grid", |
|||
typeName: "网格", |
|||
})) |
|||
}, |
|||
// 处理子机构列表 |
|||
processSubAgencyList(subAgencyList) { |
|||
return (subAgencyList || []).map((item) => this.computeOption(item)) |
|||
}, |
|||
// 获取列表数据 |
|||
async getTableData() { |
|||
let params = { |
|||
pageNo: this.pageNo, |
|||
pageSize: this.pageSize, |
|||
...this.queryParams, |
|||
}; |
|||
this.tableLoading = true; |
|||
const { data, code, internalMsg } = await requestPost("/actual/base/residentBaseInfo/page", params); |
|||
this.tableLoading = false; |
|||
if (code === 0) { |
|||
this.total = data.total; |
|||
this.tableData = data.list; |
|||
} else { |
|||
this.$message.error(internalMsg); |
|||
} |
|||
}, |
|||
|
|||
// 修改组织级联选择器值 |
|||
handleOrgChange(val) { |
|||
this.queryParams.agencyId = val[val.length - 1]; |
|||
}, |
|||
|
|||
// 搜索 |
|||
handleSearchFrom() { |
|||
this.pageNo = 1; |
|||
this.getTableData(); |
|||
}, |
|||
resetSearchForm() { |
|||
this.keyCategory = []; |
|||
this.cascaderAgencyId = []; |
|||
this.categoryAllList = _.cloneDeep(this.defaultCategoryAllList); |
|||
this.$refs.queryForm.resetFields(); |
|||
}, |
|||
handleSizeChange(val) { |
|||
this.pageSize = val; |
|||
this.getTableData(); |
|||
}, |
|||
handleCurrentChange(val) { |
|||
console.log(val); |
|||
this.pageNo = val; |
|||
this.getTableData(); |
|||
}, |
|||
|
|||
// 修改类别 |
|||
handleKeyCategory(value) { |
|||
this.categoryAllList = value ? value : _.cloneDeep(this.defaultCategoryAllList); |
|||
}, |
|||
|
|||
handleCategoryChange(newVal, oldVal) { |
|||
let formCopy = JSON.parse(JSON.stringify(this.queryParams)); |
|||
|
|||
// 找出被取消选中的值 |
|||
if (oldVal && oldVal.length) { |
|||
let cancelledValues = oldVal.filter(val => !newVal.includes(val)); |
|||
// 处理取消选中的值 |
|||
cancelledValues.forEach(val => { |
|||
if (['partyFlag0', 'partyFlag1', 'partyFlag2'].includes(val)) { |
|||
formCopy.partyFlag = null; |
|||
} else if (['FLOATING_FLAG', 'OLD_PEOPLE_FLAG', 'OLD_PEOPLE_FLAG', 'LIVE_ALONE_FLAG', 'DEMENTED_FLAG', 'EMPTY_NESTER_FLAG', 'DISABLED_FLAG', 'SUBSISTENCE_ALLOWANCE_FLAG', 'ENSURE_HOUSE_FLAG', 'VETERAN_FLAG', 'FERTILE_WOMAN_FLAG', 'SPECIAL_SUPPORT_FLAG', 'NEW_STRATUM_FLAG', 'NEG_FLAG', 'LBC_FLAG', 'AIDS_FLAG'].includes(val)) { |
|||
formCopy.attentionCrowds = formCopy.attentionCrowds.filter(item => item !== val); |
|||
} else if (['DISABILITY_FLAG', 'SERIOUS_ILLNESS_FLAG', 'CHRONIC_DISEASE_FLAG'].includes(val)) { |
|||
formCopy.healthStatus = formCopy.healthStatus.filter(item => item !== val); |
|||
} else if (['anzhibangjiao', 'xidurenyuan', 'shequjiaozheng', 'buliangqingshaonian', 'zhaoshizhaohuojingshenbing', 'xiejiaorenyuan', 'tongzhanrenyuan', 'xinfangrenyaun'].includes(val)) { |
|||
formCopy.specialCategoryCodes = formCopy.specialCategoryCodes.filter(item => item !== val); |
|||
} else if (['VOLUNTEER_FLAG', 'BUILDING_CHIEF_FLAG', 'UNIT_CHIEF_FLAG', 'PUBLIC_WELFARE_FLAG', 'GRID_MEMBER_FLAG'].includes(val)) { |
|||
formCopy.identity = null; |
|||
} else if (val === 'UNEMPLOYED_FLAG') { |
|||
formCopy.careerStatus = null; |
|||
} |
|||
}); |
|||
} |
|||
// 处理新选中的值 |
|||
newVal.forEach(val => { |
|||
if (val === 'partyFlag0' || val === 'partyFlag1' || val === 'partyFlag2') { |
|||
formCopy.partyFlag = val === 'partyFlag0' ? 0 : val === 'partyFlag1' ? 1 : 2; |
|||
} else if (['FLOATING_FLAG', 'OLD_PEOPLE_FLAG', 'OLD_PEOPLE_FLAG', 'CHILDREN_DISABILITY_FLAG', 'CHILDREN_DEATH', 'LIVE_ALONE_FLAG', 'DEMENTED_FLAG', 'EMPTY_NESTER_FLAG', 'DISABLED_FLAG', 'SUBSISTENCE_ALLOWANCE_FLAG', 'ENSURE_HOUSE_FLAG', 'VETERAN_FLAG', 'FERTILE_WOMAN_FLAG', 'SPECIAL_SUPPORT_FLAG', 'NEW_STRATUM_FLAG', 'NEG_FLAG', 'LBC_FLAG', 'AIDS_FLAG'].includes(val)) { |
|||
if (!formCopy.attentionCrowds.includes(val)) { |
|||
formCopy.attentionCrowds.push(val); |
|||
} |
|||
} else if (['DISABILITY_FLAG', 'SERIOUS_ILLNESS_FLAG', 'CHRONIC_DISEASE_FLAG'].includes(val)) { |
|||
if (!formCopy.healthStatus.includes(val)) { |
|||
formCopy.healthStatus.push(val); |
|||
} |
|||
} else if (['anzhibangjiao', 'xidurenyuan', 'shequjiaozheng', 'buliangqingshaonian', 'zhaoshizhaohuojingshenbing', 'xiejiaorenyuan', 'tongzhanrenyuan', 'xinfangrenyaun'].includes(val)) { |
|||
if (!formCopy.specialCategoryCodes.includes(val)) { |
|||
formCopy.specialCategoryCodes.push(val); |
|||
} |
|||
} else if (['VOLUNTEER_FLAG', 'BUILDING_CHIEF_FLAG', 'UNIT_CHIEF_FLAG', 'PUBLIC_WELFARE_FLAG', 'GRID_MEMBER_FLAG'].includes(val)) { |
|||
formCopy.identity = val; |
|||
} else if (val === 'UNEMPLOYED_FLAG') { |
|||
formCopy.careerStatus = '0'; |
|||
} |
|||
}); |
|||
|
|||
// 更新表单数据 |
|||
this.queryParams = formCopy; |
|||
this.getTableData(); |
|||
}, |
|||
// 查看 |
|||
async handleLook(row) { |
|||
this.lookResiId = row.resiId; |
|||
let { |
|||
agencyId, |
|||
gridId, |
|||
gridName, |
|||
gender, |
|||
homeId, |
|||
homeName, |
|||
name, |
|||
resiId, |
|||
} = row; |
|||
this.$store.dispatch("saveData", { |
|||
agencyId, |
|||
gridId, |
|||
gridName, |
|||
gender, |
|||
homeId, |
|||
homeName, |
|||
name, |
|||
resiId, |
|||
}); |
|||
this.$router.push({ name: "jumin-huaxiang" }); |
|||
this.$store.state.contentTabs = this.$store.state.contentTabs.map( |
|||
(item) => { |
|||
if (item.name === "jumin-huaxiang") { |
|||
return { ...item, title: name }; |
|||
} |
|||
return item; |
|||
} |
|||
); |
|||
}, |
|||
async handelCLickShowCheckPassword(row) { |
|||
const url = `/actual/base/residentCategoryUpdateInfo/isUpdater/${row.resiId}`; |
|||
const { data, code, msg } = await requestPost(url); |
|||
console.log(data); |
|||
console.log(code); |
|||
if (code == 0) { |
|||
if (data == true) { |
|||
this.editUserId = row.resiId; |
|||
this.saveCheckPassword() |
|||
} |
|||
else { |
|||
this.editUserId = row.resiId; |
|||
this.showCheckPassword = true; |
|||
} |
|||
} |
|||
else { |
|||
this.$message.error(msg); |
|||
} |
|||
}, |
|||
async saveCheckPassword(password) { |
|||
const url = `/actual/base/residentBaseInfo/getResiUserInfo/${this.editUserId}`; |
|||
let parm = { |
|||
password, |
|||
}; |
|||
const { data, code, msg } = await requestPost(url, parm); |
|||
console.log(data, code, msg); |
|||
if (code === 0) { |
|||
this.showCheckPassword = false; |
|||
this.$router.push({ |
|||
name: "edit-key-personnel", |
|||
query: { id: this.editUserId }, |
|||
params: { idNum: data.idNum, mobile: data.mobile, name: data.name, nationality: data.nationality }, |
|||
}); |
|||
} else { |
|||
this.$message.error(msg); |
|||
} |
|||
}, |
|||
handleAdd() { |
|||
this.$router.push({ name: "add-key-personnel" }); |
|||
}, |
|||
handleDel(row) { |
|||
this.$http |
|||
.post("/actual/base/residentBaseInfo/batchdel", [row.resiId]) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg); |
|||
} else { |
|||
this.$message.success("删除成功"); |
|||
this.getTableData(); |
|||
} |
|||
}) |
|||
.catch((err) => { |
|||
return this.$message.error("网络错误"); |
|||
}); |
|||
}, |
|||
startLoading() { |
|||
loading = Loading.service({ |
|||
lock: true, // 是否锁定 |
|||
text: "正在加载……", // 加载中需要显示的文字 |
|||
background: "rgba(0,0,0,.7)", // 背景颜色 |
|||
}); |
|||
}, |
|||
endLoading() { |
|||
if (loading) { |
|||
loading.close(); |
|||
} |
|||
}, |
|||
}, |
|||
watch: { |
|||
categoryAllList: { |
|||
handler(newValue, oldValue) { |
|||
this.handleCategoryChange(newValue, oldValue) |
|||
}, |
|||
deep: true |
|||
}, |
|||
}, |
|||
}; |
|||
</script> |
|||
<style lang="scss" scoped> |
|||
// @import "@/assets/scss/modules/management/list-main.scss"; |
|||
|
|||
.header_form_box { |
|||
display: flex; |
|||
flex-wrap: wrap; |
|||
|
|||
.el-form-item { |
|||
width: 20%; |
|||
|
|||
.el-input { |
|||
width: 100%; |
|||
} |
|||
} |
|||
} |
|||
|
|||
.m-search { |
|||
background: #ffffff; |
|||
border-radius: 4px; |
|||
padding: 24px 10px 10px; |
|||
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1); |
|||
margin: 20px 7px 7px; |
|||
} |
|||
|
|||
.m-table { |
|||
background: #ffffff; |
|||
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1); |
|||
border-radius: 4px; |
|||
margin-top: 15px; |
|||
padding: 24px 16px 10px; |
|||
margin: 16px 7px 7px; |
|||
|
|||
} |
|||
|
|||
|
|||
::v-deep .el-button--primary.is-plain { |
|||
color: #0055d7; |
|||
background: #ffffff; |
|||
border-color: #0055d7; |
|||
} |
|||
|
|||
|
|||
|
|||
.resi-table { |
|||
::v-deep .el-button--text { |
|||
text-decoration: underline; |
|||
} |
|||
|
|||
::v-deep .btn-color-del { |
|||
margin-left: 10px; |
|||
color: rgba(213, 16, 16, 1); |
|||
} |
|||
|
|||
::v-deep .btn-color-edit { |
|||
color: rgba(0, 167, 169, 1); |
|||
} |
|||
} |
|||
|
|||
|
|||
.resi-down { |
|||
position: absolute; |
|||
left: 50%; |
|||
bottom: -10px; |
|||
display: flex; |
|||
justify-content: center; |
|||
align-items: center; |
|||
width: 46px; |
|||
height: 12px; |
|||
box-sizing: border-box; |
|||
margin-left: -23rpx; |
|||
cursor: pointer; |
|||
background: #ffffff; |
|||
border-radius: 0 0 10px 10px; |
|||
|
|||
img { |
|||
display: block; |
|||
} |
|||
} |
|||
|
|||
|
|||
.div-flex { |
|||
display: flex; |
|||
justify-content: space-between; |
|||
align-items: center; |
|||
width: 100%; |
|||
|
|||
.div_del { |
|||
margin-top: 15px; |
|||
} |
|||
|
|||
.m-page { |
|||
margin-left: auto; |
|||
} |
|||
} |
|||
|
|||
.resiCategoryInfoBox { |
|||
overflow: hidden; |
|||
white-space: nowrap; |
|||
text-overflow: ellipsis; |
|||
word-wrap: normal; |
|||
} |
|||
</style> |
|||
Loading…
Reference in new issue