5 changed files with 796 additions and 697 deletions
@ -1,288 +0,0 @@ |
|||
<template> |
|||
<div> |
|||
<div class="m-search"> |
|||
<el-form :inline="true" class="header_form_box" :model="form" :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="政治面貌"> |
|||
<el-select v-model.trim="form.partyFlag" class="u-item-width-normal" clearable size="small"> |
|||
<template v-for="item in partyList"> |
|||
<el-option :label='item.label' :value='item.value'> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="健康状态"> |
|||
<el-select v-model.trim="form.healthStatus" collapse-tags multiple class="u-item-width-normal" clearable |
|||
size="small"> |
|||
<template v-for="item in healthStatusList"> |
|||
<el-option :label='item.label' :value='item.value'> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="关注人群"> |
|||
<el-cascader |
|||
size="small" |
|||
class="u-item-width-normal" |
|||
v-model.trim="form.attentionCrowds" |
|||
:options="resiClass" |
|||
:props="{ multiple: true,checkStrictly: true,emitPath:false}" |
|||
collapse-tags |
|||
clearable |
|||
></el-cascader> |
|||
</el-form-item> |
|||
<el-form-item label="特殊人群"> |
|||
<el-select v-model.trim="form.specialCategoryCodes" class="u-item-width-normal" clearable size="small" collapse-tags |
|||
multiple> |
|||
<template v-for="item in specialCategoryList"> |
|||
<el-option :label='item.label' :value='item.value'> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="就业状态"> |
|||
<el-select v-model.trim="form.careerStatus" class="u-item-width-normal" clearable size="small"> |
|||
<template v-for="item in careerStatusList"> |
|||
<el-option :label='item.label' :value='item.value'> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="身份"> |
|||
<el-select v-model.trim="form.identity" class="u-item-width-normal" clearable size="small" > |
|||
<template v-for="item in projectStaffList"> |
|||
<el-option :label='item.label' :value='item.value'> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="人户状况"> |
|||
<el-select v-model.trim="form.householdSituation" class="u-item-width-normal" clearable size="small"> |
|||
<template v-for="item in household"> |
|||
<el-option :label='item.label' :value='item.value'> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="人房关系"> |
|||
<el-select v-model.trim="form.resiHouseRel" class="u-item-width-normal" clearable size="small"> |
|||
<template v-for="item in resiHouseRelList"> |
|||
<el-option :label='item.label' :value='item.value'> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="名称模糊查询"> |
|||
<el-select v-model.trim="basicType" class="u-item-width-service" clearable size="small"> |
|||
<template > |
|||
<el-option @click.native="handelClickBasicType" :label='item.label' :value='item.value' v-for="(item, index) in basicInfoList" :key="index"> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item v-for="(item, index) in basicInfoList" :key="index" v-if="basicType == item.value"> |
|||
<el-input v-model.trim="form[item.value]" class="u-item-width-service" placeholder="请输入" clearable size="small"> |
|||
</el-input> |
|||
</el-form-item> |
|||
<el-form-item label="满意度次数"> |
|||
<el-select v-model.trim="form.satisfactionNum" class="u-item-width-normal" clearable size="small"> |
|||
<template v-for="(item,index) in 6"> |
|||
<el-option :label='`${index}次`' :value='index'> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="居民年龄"> |
|||
<el-input v-model.trim="form.ageStart" @change="handleAgeChange" class="u-item-width-daterange" placeholder="请输入" clearable size="small"> |
|||
</el-input> |
|||
<span class="u-data-tag">至</span> |
|||
<el-input v-model.trim="form.ageEnd" @change="handleAgeChange" class="u-item-width-daterange u-data-tag" |
|||
placeholder="请输入" clearable size="small"> |
|||
</el-input> |
|||
</el-form-item> |
|||
<el-form-item label="性别"> |
|||
<el-select v-model.trim="form.gender" class="u-item-width-normal" clearable size="small"> |
|||
<el-option label='男' value='1'> </el-option> |
|||
<el-option label='女' value='2'> </el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="文化程度"> |
|||
<el-select v-model.trim="form.cultureLevel" class="u-item-width-normal" clearable size="small"> |
|||
<template v-for="item in Education"> |
|||
<el-option :label='item.label' :value='item.value'> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="国籍"> |
|||
<el-select v-model.trim="form.nationality" class="u-item-width-normal" clearable size="small"> |
|||
<template v-for="item in nationalityList"> |
|||
<el-option :label='item.label' :value='item.value'> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="民族"> |
|||
<el-select v-model.trim="form.nation" class="u-item-width-normal" clearable size="small"> |
|||
<template v-for="item in nation"> |
|||
<el-option :label='item.label' :value='item.value'> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="完整度得分"> |
|||
<el-input v-model.trim="form.integrityScoreFrom" typ="number" @change="informationChange(form.integrityScoreFrom,'from')" class="u-item-width-daterange" placeholder="请输入" clearable size="small"> |
|||
</el-input> |
|||
<span class="u-data-tag">至</span> |
|||
<el-input v-model.trim="form.integrityScoreTo" @change="informationChange(form.integrityScoreTo,'to')" class="u-item-width-daterange u-data-tag" |
|||
placeholder="请输入" typ="number" clearable size="small"> |
|||
</el-input> |
|||
</el-form-item> |
|||
<el-form-item label="更新时间"> |
|||
<el-date-picker v-model.trim="form.updateTimeStart" type="datetime" size="small" class="u-item-width-daterange" |
|||
value-format="yyyy-MM-dd HH:mm:ss" placeholder="开始日期" :picker-options="pickerOptionsStart"> |
|||
</el-date-picker> |
|||
<span class="u-data-tag">至</span> |
|||
<el-date-picker v-model.trim="form.updateTimeEnd" type="datetime" size="small" value-format="yyyy-MM-dd HH:mm:ss" |
|||
class="u-item-width-daterange u-data-tag" placeholder="结束日期" :picker-options="pickerOptionsEnd"> |
|||
</el-date-picker> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<span style="width:100px;text-align: right;padding-right:14px;display: inline-block; ">所属组织:</span> |
|||
<el-cascader class="u-item-width-normal" |
|||
size="small" |
|||
ref="myCascader" |
|||
v-model="form.agencyId" |
|||
:options="orgOptions" |
|||
:props="orgOptionProps" |
|||
:show-all-levels="false" |
|||
@change="handleChangeAgency" |
|||
clearable></el-cascader> |
|||
</el-form-item> |
|||
<el-form-item prop="villageId"> |
|||
<div class="resi-cell"> |
|||
<div class="resi-cell-value"> |
|||
<span style="width:100px;text-align: right;padding-right:14px;display: inline-block; ">所属房屋:</span> |
|||
<el-select v-model.trim="form.villageId" |
|||
placeholder="请选择小区" |
|||
size="small" |
|||
filterable |
|||
clearable |
|||
class="u-item-width-communitycascader" |
|||
@clear="handleClearVillage" |
|||
@change="handleChangeV" |
|||
v-el-select-loadmore="loadmore" |
|||
> |
|||
<el-option v-for="item in optionsV" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value"> |
|||
</el-option> |
|||
</el-select> |
|||
<el-select v-model.trim="form.buildId" |
|||
placeholder="楼号" |
|||
size="small" |
|||
filterable |
|||
clearable |
|||
style="margin-left: 5px" |
|||
class="u-item-width-buildcascader" |
|||
:disabled="changeVDisabled" |
|||
@clear="handleClearBuild" |
|||
@change="handleChangeB"> |
|||
<el-option v-for="item in optionsB" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value"> |
|||
</el-option> |
|||
</el-select> |
|||
<el-select v-model.trim="form.unitId" |
|||
:disabled="changeBDisabled" |
|||
placeholder="单元" |
|||
size="small" |
|||
filterable |
|||
clearable |
|||
style="margin-left: 5px" |
|||
class="u-item-width-buildcascader" |
|||
@click="handleClearDan" |
|||
@change="handleChangeD"> |
|||
<el-option v-for="item in optionsD" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value"> |
|||
</el-option> |
|||
</el-select> |
|||
<el-select v-model.trim="form.homeId" |
|||
:disabled="changeDDisabled" |
|||
placeholder="房号" |
|||
size="small" |
|||
filterable |
|||
clearable |
|||
style="margin-left: 5px" |
|||
class="u-item-width-buildcascader"> |
|||
<el-option v-for="item in optionsH" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value"> |
|||
</el-option> |
|||
</el-select> |
|||
</div> |
|||
</div> |
|||
</el-form-item> |
|||
<el-form-item label="备注"> |
|||
<el-input v-model.trim="form.remark" placeholder="请输入" size="small" class="u-item-width-normal" |
|||
clearable></el-input> |
|||
</el-form-item> |
|||
</el-form> |
|||
|
|||
</div> |
|||
|
|||
|
|||
<butto @click="handleClose">确定</butto> |
|||
</div> |
|||
</template> |
|||
<script> |
|||
export default { |
|||
name: "Records", |
|||
data() { |
|||
return { |
|||
tableData: [], |
|||
showDialog: false, |
|||
pageSize: 20, |
|||
pageNo: 1, |
|||
total: 0 |
|||
} |
|||
}, |
|||
methods: { |
|||
handleClose(){ |
|||
|
|||
}, |
|||
open(row) { |
|||
this.showDialog = true |
|||
this.getList() |
|||
}, |
|||
handleClose() { |
|||
this.showDialog = false |
|||
}, |
|||
handleSizeChange(val) { |
|||
this.pageSize = val; |
|||
this.getList(); |
|||
}, |
|||
handleCurrentChange(val) { |
|||
this.pageNo = val; |
|||
this.getList(); |
|||
}, |
|||
getList() { |
|||
let params = { |
|||
icEventId: this.id, |
|||
pageSize: this.pageSize, |
|||
pageNo: this.pageNo |
|||
} |
|||
this.$http.get('/governance/icEventAwo/page?' + this.$paramsFormat(params)).then((res) => { |
|||
this.tableData = res.data.data.list |
|||
this.total = res.data.data.total |
|||
}) |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
<style scoped> |
|||
</style> |
@ -0,0 +1,595 @@ |
|||
<template> |
|||
<div class="div_form"> |
|||
<div class="form"> |
|||
<h2>智能导出/导出设置</h2> |
|||
<el-form ref="form" :model="form" label-width="80px"> |
|||
<el-form-item label="报表名称" autocomplete="off"> |
|||
<el-input v-model="form.name" size="mini" style="width: 40%; margin-left: 30px"></el-input> |
|||
</el-form-item> |
|||
<el-form-item label="筛选条件"> |
|||
<el-form :inline="true" class="header_form_box" :model="form" :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="政治面貌"> |
|||
<el-select v-model.trim="form.partyFlag" class="u-item-width-normal" clearable size="small"> |
|||
<template v-for="item in partyList"> |
|||
<el-option :label='item.label' :value='item.value'> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="健康状态"> |
|||
<el-select v-model.trim="form.healthStatus" collapse-tags multiple class="u-item-width-normal" clearable |
|||
size="small"> |
|||
<template v-for="item in healthStatusList"> |
|||
<el-option :label='item.label' :value='item.value'> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="关注人群"> |
|||
<el-cascader size="small" class="u-item-width-normal" v-model.trim="form.attentionCrowds" |
|||
:options="resiClass" :props="{ multiple: true, checkStrictly: true, emitPath: false }" collapse-tags |
|||
clearable></el-cascader> |
|||
</el-form-item> |
|||
<el-form-item label="特殊人群"> |
|||
<el-select v-model.trim="form.specialCategoryCodes" class="u-item-width-normal" clearable size="small" |
|||
collapse-tags multiple> |
|||
<template v-for="item in specialCategoryList"> |
|||
<el-option :label='item.label' :value='item.value'> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="就业状态"> |
|||
<el-select v-model.trim="form.careerStatus" class="u-item-width-normal" clearable size="small"> |
|||
<template v-for="item in careerStatusList"> |
|||
<el-option :label='item.label' :value='item.value'> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="身份"> |
|||
<el-select v-model.trim="form.identity" class="u-item-width-normal" clearable size="small"> |
|||
<template v-for="item in projectStaffList"> |
|||
<el-option :label='item.label' :value='item.value'> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="人户状况"> |
|||
<el-select v-model.trim="form.householdSituation" class="u-item-width-normal" clearable size="small"> |
|||
<template v-for="item in household"> |
|||
<el-option :label='item.label' :value='item.value'> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="人房关系"> |
|||
<el-select v-model.trim="form.resiHouseRel" class="u-item-width-normal" clearable size="small"> |
|||
<template v-for="item in resiHouseRelList"> |
|||
<el-option :label='item.label' :value='item.value'> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="名称模糊查询"> |
|||
<el-select v-model.trim="basicType" class="u-item-width-service" clearable size="small"> |
|||
<template> |
|||
<el-option @click.native="handelClickBasicType" :label='item.label' :value='item.value' |
|||
v-for="(item, index) in basicInfoList" :key="index"> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item v-for="(item, index) in basicInfoList" :key="index" v-if="basicType == item.value"> |
|||
<el-input v-model.trim="form[item.value]" class="u-item-width-service" placeholder="请输入" clearable |
|||
size="small"> |
|||
</el-input> |
|||
</el-form-item> |
|||
<el-form-item label="满意度次数"> |
|||
<el-select v-model.trim="form.satisfactionNum" class="u-item-width-normal" clearable size="small"> |
|||
<template v-for="(item, index) in 6"> |
|||
<el-option :label='`${index}次`' :value='index'> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="居民年龄"> |
|||
<el-input v-model.trim="form.ageStart" @change="handleAgeChange" class="u-item-width-daterange" placeholder="请输入" clearable size="small"> |
|||
</el-input> |
|||
<span class="u-data-tag">至</span> |
|||
<el-input v-model.trim="form.ageEnd" @change="handleAgeChange" class="u-item-width-daterange u-data-tag" |
|||
placeholder="请输入" clearable size="small"> |
|||
</el-input> |
|||
</el-form-item> |
|||
<el-form-item label="性别"> |
|||
<el-select v-model.trim="form.gender" class="u-item-width-normal" clearable size="small"> |
|||
<el-option label='男' value='1'> </el-option> |
|||
<el-option label='女' value='2'> </el-option> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="文化程度"> |
|||
<el-select v-model.trim="form.cultureLevel" class="u-item-width-normal" clearable size="small"> |
|||
<template v-for="item in Education"> |
|||
<el-option :label='item.label' :value='item.value'> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="国籍"> |
|||
<el-select v-model.trim="form.nationality" class="u-item-width-normal" clearable size="small"> |
|||
<template v-for="item in nationalityList"> |
|||
<el-option :label='item.label' :value='item.value'> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item label="民族"> |
|||
<el-select v-model.trim="form.nation" class="u-item-width-normal" clearable size="small"> |
|||
<template v-for="item in nation"> |
|||
<el-option :label='item.label' :value='item.value'> </el-option> |
|||
</template> |
|||
</el-select> |
|||
</el-form-item> |
|||
|
|||
|
|||
<el-form-item label="更新时间"> |
|||
<el-date-picker v-model.trim="form.updateTimeStart" type="datetime" size="small" |
|||
class="u-item-width-daterange" value-format="yyyy-MM-dd HH:mm:ss" placeholder="开始日期" |
|||
:picker-options="pickerOptionsStart"> |
|||
</el-date-picker> |
|||
<span class="u-data-tag">至</span> |
|||
<el-date-picker v-model.trim="form.updateTimeEnd" type="datetime" size="small" |
|||
value-format="yyyy-MM-dd HH:mm:ss" class="u-item-width-daterange u-data-tag" placeholder="结束日期" |
|||
:picker-options="pickerOptionsEnd"> |
|||
</el-date-picker> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<span style="width:100px;text-align: right;padding-right:14px;display: inline-block; ">所属组织:</span> |
|||
<el-cascader class="u-item-width-normal" size="small" ref="myCascader" v-model="form.agencyId" |
|||
:options="orgOptions" :props="orgOptionProps" :show-all-levels="false" @change="handleChangeAgency" |
|||
clearable></el-cascader> |
|||
</el-form-item> |
|||
<el-form-item prop="villageId"> |
|||
<div class="resi-cell"> |
|||
<div class="resi-cell-value"> |
|||
<span style="width:100px;text-align: right;padding-right:14px;display: inline-block; ">所属房屋:</span> |
|||
<el-select v-model.trim="form.villageId" placeholder="请选择小区" size="small" filterable clearable |
|||
class="u-item-width-communitycascader" @clear="handleClearVillage" @change="handleChangeV" |
|||
v-el-select-loadmore="loadmore"> |
|||
<el-option v-for="item in optionsV" :key="item.value" :label="item.label" :value="item.value"> |
|||
</el-option> |
|||
</el-select> |
|||
<el-select v-model.trim="form.buildId" placeholder="楼号" size="small" filterable clearable |
|||
style="margin-left: 5px" class="u-item-width-buildcascader" :disabled="changeVDisabled" |
|||
@clear="handleClearBuild" @change="handleChangeB"> |
|||
<el-option v-for="item in optionsB" :key="item.value" :label="item.label" :value="item.value"> |
|||
</el-option> |
|||
</el-select> |
|||
<el-select v-model.trim="form.unitId" :disabled="changeBDisabled" placeholder="单元" size="small" |
|||
filterable clearable style="margin-left: 5px" class="u-item-width-buildcascader" |
|||
@click="handleClearDan" @change="handleChangeD"> |
|||
<el-option v-for="item in optionsD" :key="item.value" :label="item.label" :value="item.value"> |
|||
</el-option> |
|||
</el-select> |
|||
<el-select v-model.trim="form.homeId" :disabled="changeDDisabled" placeholder="房号" size="small" |
|||
filterable clearable style="margin-left: 5px" class="u-item-width-buildcascader"> |
|||
<el-option v-for="item in optionsH" :key="item.value" :label="item.label" :value="item.value"> |
|||
</el-option> |
|||
</el-select> |
|||
</div> |
|||
</div> |
|||
</el-form-item> |
|||
<el-form-item label="备注"> |
|||
<el-input v-model.trim="form.remark" placeholder="请输入" size="small" class="u-item-width-normal" |
|||
clearable></el-input> |
|||
</el-form-item> |
|||
</el-form> |
|||
</el-form-item> |
|||
<el-form-item label="导出字段" autocomplete="off"> |
|||
<div>(请选择需要导出的字段)</div> |
|||
<div class="diy-wr"> |
|||
<div class="left"> |
|||
<el-tabs v-model.trim="leftActive" tab-position="left" class="left-h" @tab-click="handleTabsClick"> |
|||
<el-tab-pane v-for="item in leftList" :key="item.id" :label="item.label" :name="item.id"> |
|||
<div class="pd10 check-boxwr scroll-h"> |
|||
<checkBox v-if="item.queryItemList.length > 0" :ref="'checkbox' + item.id" |
|||
:list="item.queryItemList" @change="handleChangeBox" /> |
|||
</div> |
|||
</el-tab-pane> |
|||
</el-tabs> |
|||
</div> |
|||
<div class="right"> |
|||
<div class="right-header"> |
|||
<div class="title">导出信息</div> |
|||
<el-button plain @click="handlePreview('')">预览</el-button> |
|||
</div> |
|||
<div class="h80 scroll-h"> |
|||
<el-collapse v-model.trim="activeCollapse" id="collapsWr"> |
|||
<el-collapse-item v-for="item in rightList" :key="item.id" :title="item.label" :name="item.id" |
|||
class="col-h"> |
|||
<dragItem :ref="'drag' + item.id" :list="item.queryItemList" :id="item.id" @del="handleDelItem" |
|||
@drag="handleDrag($event, item)"></dragItem> |
|||
</el-collapse-item> |
|||
</el-collapse> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</el-form-item> |
|||
</el-form> |
|||
</div> |
|||
</div> |
|||
</template> |
|||
<script> |
|||
import checkBox from '../../../components/checkBox.vue' |
|||
import { requestPost } from "@/js/dai/request"; |
|||
export default { |
|||
|
|||
name: "set", |
|||
data() { |
|||
return { |
|||
rightList: [], |
|||
form: { |
|||
name: '', |
|||
mobile: '', |
|||
updateCategory:null, |
|||
satisfactionNum:null, |
|||
idNum: '', |
|||
birthdayStart: '', |
|||
birthdayEnd: '', |
|||
ageStart: '', |
|||
ageEnd: '', |
|||
integrityScoreFrom: null,//居民信息完整度はじめ |
|||
integrityScoreTo: null,//居民信息完整度end |
|||
identity:null, |
|||
gender: '', |
|||
cultureLevel: '', |
|||
localResidenceFlag: '', |
|||
householdSituation: '', |
|||
nation: '', |
|||
agencyId: '', |
|||
buildId: '', |
|||
homeId: '', |
|||
unitId: '', |
|||
gridId: '', |
|||
villageId: '', |
|||
attentionCrowds: [], |
|||
healthStatus: [], |
|||
nationality: '', |
|||
resiHouseRel: '', |
|||
partyFlag: '', |
|||
updateTimeStart: '', |
|||
updateTimeEnd: '', |
|||
specialCategoryCodes: [], |
|||
remark: '', |
|||
level: '', |
|||
orgType: '' |
|||
}, |
|||
leftActive: '', |
|||
leftList: [], |
|||
info: {}, |
|||
} |
|||
}, |
|||
created() { |
|||
console.log("Component created"); |
|||
// 其他逻辑 |
|||
}, |
|||
props: { |
|||
list: { |
|||
type: Array, |
|||
default: () => [] |
|||
} |
|||
}, |
|||
components:{ |
|||
checkBox |
|||
}, |
|||
mounted() { |
|||
console.log(this.list,"lk"); |
|||
this.list.forEach(item => { |
|||
this.$set(this.info, item.id, []) |
|||
}) |
|||
console.log(this.list,"t"); |
|||
this.leftActive = this.list[0].id |
|||
this.leftList = [...this.list] |
|||
this.leftList[0].queryItemList = this.getExportChildList(this.leftList[0].id) |
|||
console.log('infodiy----', this.leftList) |
|||
this.getTemplateList() |
|||
}, |
|||
methods: { |
|||
handleChangeBox({list, pid}) { |
|||
// if (list.length == 0) return |
|||
let obj = {} |
|||
this.leftList.forEach(item =>{ |
|||
if (item.id == pid) obj = { ...item, queryItemList: [...list] } |
|||
}) |
|||
const groups = this.rightList.map(item => item.id) |
|||
if (groups.includes(pid)) { |
|||
this.rightList.forEach((item, i) => { |
|||
if (item.id == pid ) { |
|||
item.queryItemList = [...list] |
|||
if (list.length == 0) this.rightList.splice(i, 1) |
|||
} |
|||
}) |
|||
} else { |
|||
this.rightList.push(obj) |
|||
this.$nextTick(() => { |
|||
console.log('itemttt------', this.$refs[`drag${pid}`]) |
|||
this.$refs[`drag${pid}`][0].dragSort() |
|||
}) |
|||
} |
|||
this.activeCollapse = [...this.activeCollapse, pid] |
|||
}, |
|||
handleTabsClick(val) { |
|||
console.log('tabs-----', val) |
|||
this.leftList.forEach(async item => { |
|||
if (item.id == val.name) { |
|||
if (item.queryItemList.length == 0) item.queryItemList = await this.getExportChildList(item.id) |
|||
} |
|||
}) |
|||
}, |
|||
handleDelItem(val) { |
|||
const { item, index } = val |
|||
console.log('item------', item, this.$refs[`checkbox${item.itemGroupId}`]) |
|||
let checkList = this.$refs[`checkbox${item.itemGroupId}`][0].checkedList |
|||
checkList.forEach((n, i) => { |
|||
if (n == item.itemId) { |
|||
checkList.splice(i, 1) |
|||
this.$refs[`checkbox${item.itemGroupId}`][0].handleChange(checkList) |
|||
} |
|||
}) |
|||
this.rightList.forEach((n, i) => { |
|||
if (n.id === item.itemGroupId) { |
|||
n.queryItemList.splice(index, 1) |
|||
if (n.queryItemList.length === 0) this.rightList.splice(i, 1) |
|||
} |
|||
}) |
|||
}, |
|||
dragSort() { |
|||
const el = document.getElementById('collapsWr') |
|||
this.sortTable = Sortable.create(el, { |
|||
group: 'el-collapse-item', |
|||
ghostClass: 'sortable-ghost', // Class name for the drop placeholder, |
|||
animation: 500, |
|||
delay: 0, |
|||
onEnd: evt => { |
|||
console.log('evt----', evt) |
|||
const targetRow = this.rightList.splice(evt.oldIndex, 1)[0] |
|||
this.rightList.splice(evt.newIndex, 0, targetRow) |
|||
} |
|||
}) |
|||
}, |
|||
handleDrag(val, item) { |
|||
console.log('drag-----', val) |
|||
console.log('drag-----', item) |
|||
this.rightList.forEach((n, i) => { |
|||
if (item.id == n.id) n.queryItemList = [...val] |
|||
}) |
|||
}, |
|||
handleClose() { |
|||
this.previewList = [] |
|||
this.diyDialog = false |
|||
}, |
|||
handleDeltemplate(id) { |
|||
this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', { |
|||
confirmButtonText: '确定', |
|||
cancelButtonText: '取消', |
|||
type: 'warning' |
|||
}).then(() => { |
|||
this.delTemplate(id) |
|||
}).catch(() => { |
|||
this.$message({ |
|||
type: 'info', |
|||
message: '已取消删除' |
|||
}); |
|||
}) |
|||
}, |
|||
handlePreview(id) { |
|||
if (id) this.getPreview(id) |
|||
else { |
|||
if (this.rightList.length == 0) return this.$message.error('请选择导出信息') |
|||
this.previewList = this.rightList.map(item => { |
|||
return { |
|||
label: item.label, |
|||
children: item.queryItemList |
|||
} |
|||
}) |
|||
} |
|||
this.diyDialog = true |
|||
}, |
|||
handleExport() { |
|||
if (this.rightList.length === 0) return this.$message.error('请选择导出信息') |
|||
if (this.form.isSaveTemp && !this.form.name) return this.$message.error('请输入模板名称') |
|||
this.exportLoading = true |
|||
this.exportTemplate() |
|||
this.$emit('close') |
|||
}, |
|||
handleExportTemplate(id) { |
|||
this.exportTemplate(id) |
|||
this.$emit('close') |
|||
}, |
|||
async exportTemplate(id) { |
|||
let url = "/actual/base/residentBaseInfo/exportExcelCustom" |
|||
let params = { |
|||
templateId: id || '', |
|||
searchForm: {...this.search}, |
|||
formCode: 'resident_base_info', |
|||
exportConfig: { |
|||
...this.form, |
|||
formCode: 'resident_base_info', |
|||
itemList: this.rightList.map(item => { |
|||
return { |
|||
itemId: item.id, |
|||
label: item.label, |
|||
tableName: item.queryItemList[0].tableName, |
|||
children: item.queryItemList, |
|||
supportAdd: item.supportAdd |
|||
} |
|||
}) |
|||
} |
|||
} |
|||
if(this.virtualResi){ |
|||
params.searchForm.gridType = 'virtual' |
|||
} |
|||
await this.$http({ |
|||
method: 'POST', |
|||
url, |
|||
responseType: 'blob', |
|||
data: params |
|||
}) |
|||
.then(res => { |
|||
// this.download(res.data, title + '.xls') |
|||
// this.getTemplateList() |
|||
this.exportLoading = false |
|||
// if (res.data.code && res.data.code == 9999) { |
|||
// return this.$message.error(res.data.msg) |
|||
// } |
|||
this.formatData(res) |
|||
}) |
|||
.catch(err => { |
|||
console.log('err', err) |
|||
this.exportLoading = false |
|||
return this.$message.error('网络错误') |
|||
}) |
|||
}, |
|||
async getTemplateList () { |
|||
let params = { |
|||
formCode: 'resident_base_info' |
|||
} |
|||
await this.$http |
|||
.post('/oper/customize/icExportTemplate/templateList', params) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} else { |
|||
this.tableData = res.data |
|||
} |
|||
}) |
|||
.catch(() => { |
|||
return this.$message.error('网络错误') |
|||
}) |
|||
}, |
|||
async getPreview (id) { |
|||
let params = { |
|||
id: id || '' |
|||
} |
|||
await this.$http |
|||
.post('/oper/customize/icExportTemplate/templateDetail', params) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} else { |
|||
this.previewList = res.data |
|||
} |
|||
}) |
|||
.catch(() => { |
|||
return this.$message.error('网络错误') |
|||
}) |
|||
}, |
|||
async delTemplate(id) { |
|||
let params = [id] |
|||
await this.$http |
|||
.post('/oper/customize/icExportTemplate/delete', params) |
|||
.then(({ data: res }) => { |
|||
if (res.code !== 0) { |
|||
return this.$message.error(res.msg) |
|||
} else { |
|||
this.$message({ |
|||
type: 'success', |
|||
message: '删除成功!' |
|||
}); |
|||
this.getTemplateList() |
|||
} |
|||
}) |
|||
.catch(() => { |
|||
return this.$message.error('网络错误') |
|||
}) |
|||
}, |
|||
async getExportChildList (groupId) { |
|||
const url = `/oper/customize/icformitem/getItemList/${groupId}` |
|||
let params = {} |
|||
const { data, code, msg } = await requestPost(url, params) |
|||
if (code === 0) { |
|||
return data |
|||
} else { |
|||
this.$message.error(msg) |
|||
} |
|||
}, |
|||
formatData(res) { |
|||
const fileReader = new FileReader() |
|||
fileReader.onloadend = () => { |
|||
try { |
|||
const jsonData = JSON.parse(fileReader.result) // 说明是普通对象数据,后台转换失败 |
|||
// 后台信息 |
|||
console.log('jsonData---1', jsonData) |
|||
return this.$message.error(jsonData.msg) |
|||
} catch (err) { // 解析成对象失败,说明是正常的文件流 |
|||
// 下载文件 |
|||
console.log('errr-----', err, this) |
|||
this.downloadFile(res) |
|||
} |
|||
} |
|||
fileReader.readAsText(res.data) |
|||
}, |
|||
downloadFile(res) { |
|||
if (res.headers["content-disposition"]) { |
|||
let fileName = window.decodeURI(res.headers["content-disposition"].split(";")[1].split("=")[1]) |
|||
console.log('filename', fileName) |
|||
let blob = new Blob([res.data], { type: 'application/vnd.ms-excel' }) |
|||
var url = window.URL.createObjectURL(blob) |
|||
var aLink = document.createElement('a') |
|||
aLink.style.display = 'none' |
|||
aLink.href = url |
|||
aLink.setAttribute('download', fileName) |
|||
document.body.appendChild(aLink) |
|||
aLink.click() |
|||
document.body.removeChild(aLink) //下载完成移除元素 |
|||
window.URL.revokeObjectURL(url) //释放掉blob对象 |
|||
this.$message.success('导出成功') |
|||
this.$emit('close') |
|||
} else this.$message.error('下载失败') |
|||
} |
|||
}, |
|||
watch: { |
|||
rightList: { |
|||
handler(val) { |
|||
if (val.length > 0) this.dragSort() |
|||
}, |
|||
deep: true |
|||
}, |
|||
// list: { |
|||
// handler(val) { |
|||
// if (val.length > 0) { |
|||
// this.leftList = [...val] |
|||
// this.leftList[0].queryItemList = this.getExportChildList(this.leftList[0].id) |
|||
// } |
|||
// }, |
|||
// deep: true, |
|||
// // immediate: true |
|||
// }, |
|||
}, |
|||
} |
|||
</script> |
|||
<style lang="scss" scoped> |
|||
@import "@/assets/scss/modules/management/form-main.scss"; |
|||
@import "@/assets/scss/pages/resiAdd.scss"; |
|||
.header_form_box { |
|||
display: flex; |
|||
flex-wrap: wrap; |
|||
} |
|||
.left-h { |
|||
height: 100%; |
|||
::v-deep .el-tabs__header.is-left, |
|||
::v-deep .el-tabs__nav-wrap.is-left::after { |
|||
height: calc(80vh - 120px); |
|||
} |
|||
} |
|||
.flex-div { |
|||
display: flex; |
|||
align-items: center; |
|||
} |
|||
.mb10 { |
|||
margin-bottom: 10px; |
|||
} |
|||
.pd10 { |
|||
padding: 10px; |
|||
} |
|||
.mr10 { |
|||
margin-right: 10px; |
|||
} |
|||
.wd200 { |
|||
width: 200px; |
|||
} |
|||
</style> |
Loading…
Reference in new issue