Browse Source

导出设置

xiaowang-dev
是小王呀\24601 1 year ago
parent
commit
79cc1724a1
  1. 2
      src/assets/scss/modules/management/list-main.scss
  2. 4
      src/views/modules/base/smartExport/Records.vue
  3. 288
      src/views/modules/base/smartExport/exportSetting.vue
  4. 595
      src/views/modules/base/smartExport/exset.vue
  5. 604
      src/views/modules/base/smartExport/index.vue

2
src/assets/scss/modules/management/list-main.scss

@ -5,7 +5,7 @@
.m-search {
padding: 24px 10px 10px;
// box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1);
box-shadow: 0px 2px 12px 0px rgba(0, 0, 0, 0.1);
background: #FFFFFF;
box-shadow: 0px 6px 16px 0px rgba(0,0,0,0.08), 0px 3px 6px -4px rgba(0,0,0,0.12);
margin:20px 7px 7px;

4
src/views/modules/base/smartExport/Records.vue

@ -26,6 +26,10 @@
total: 0
}
},
created() {
console.log("Component created");
//
},
methods: {
open(row) {
this.showDialog = true

288
src/views/modules/base/smartExport/exportSetting.vue

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

595
src/views/modules/base/smartExport/exset.vue

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

604
src/views/modules/base/smartExport/index.vue

@ -79,246 +79,8 @@
</div>
</div>
</div>
<div v-show="pageType == 'set'">
<exportSetting />
<!-- <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> -->
<!-- <Records ref="RecordsForm" /> -->
<!-- <el-card class="resi-card"> -->
<!-- <el-card class="resi-card"> -->
<div v-if="pageType == 'set'">
<exset ref="exportSetting" :list="exportList" />
</div>
<el-dialog :destroy-on-close="true" :modal="true" :visible.sync="showDialog" width="60%" top="5vh"
@close="handleClose" title="导出记录">
@ -340,174 +102,178 @@
import { mapGetters } from "vuex";
import Records from "./Records.vue"
import axios from "axios";
import exportSetting from "./exportSetting.vue"
import exset from "./exset.vue"
// import smartImportInfo from "./cpts/smartImportInfo";
export default {
data() {
return {
exportList: [],
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: ''
},
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:[
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: ''
},
categoryAllList: [
{
label: "失能老人",
value: "DISABLED_FLAG",
label: '群众',
value: 'partyFlag0',
}, {
label: "空巢老人",
value: "EMPTY_NESTER_FLAG",
},
{
label: "失智老人",
value: "DEMENTED_FLAG",
},
{
label: "独居老人",
value: "LIVE_ALONE_FLAG",
},
{
label: "普通老年人",
value: "OLD_PEOPLE_FLAG",
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',
}, {
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: 'xinfangrenyaun',
}, {
label: '统战人员',
value: 'tongzhanrenyuan',
}, {
label: '志愿者',
value: 'VOLUNTEER_FLAG',
}, {
label: '网格员',
value: 'GRID_MEMBER_FLAG',
}, {
label: '楼长',
value: 'BUILDING_CHIEF_FLAG',
}, {
label: '单元长',
value: 'UNIT_CHIEF_FLAG',
}, {
label: '公益岗',
value: 'PUBLIC_WELFARE_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",
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:'xinfangrenyaun',
},{
label:'统战人员',
value:'tongzhanrenyuan',
},{
label:'志愿者',
value:'VOLUNTEER_FLAG',
},{
label:'网格员',
value:'GRID_MEMBER_FLAG',
},{
label:'楼长',
value:'BUILDING_CHIEF_FLAG',
},{
label:'单元长',
value:'UNIT_CHIEF_FLAG',
},{
label:'公益岗',
value:'PUBLIC_WELFARE_FLAG',
}
],
showDialog:false,
SearchData:[],
tableName:"",
createPre:"",
dateTime:"",
],
showDialog: false,
SearchData: {
tableName: "",
createPre: "",
dateTime: "",
},
tableLoading: false,
searchH: 170,
tableData: [],
@ -518,18 +284,18 @@
pageSize: window.localStorage.getItem("pageSize") || 20,
total: 1,
pageType: "list", // list add detail
dicts: {
import_status:[],
resident_category_import:[],
import_status: [],
resident_category_import: [],
}, //
fileCode:null,
taskId:null,
processStatus:null,
fileCode: null,
taskId: null,
processStatus: null,
};
},
components: {Records,exportSetting},
components: {exset,Records,},
computed: {
maxTableHeight() {
const h = this.clientHeight - this.searchH - 330 + this.iframeHeight;
@ -541,6 +307,7 @@
watch: {},
async created() {
await this.getDicts();
await this.getExportList()
},
mounted() {
this.getTableData();
@ -588,8 +355,8 @@
//
async handleAdd() {
this.pageType = "set";
this.fileCode = null;
this.pageType="set"
},
//
async handleDetail(row) {
@ -680,6 +447,27 @@
this.pageNo = 1;
this.getTableData();
},
//
async getExportList() {
const url = "/oper/customize/icformitemgroup/list";
let params = {
formCode: "resident_base_info,community_info",
display:1
};
const { data, code, msg } = await requestPost(url, params);
if (code === 0) {
data.forEach((item) => {
(async (id) => {
// item.queryItemList = await this.getExportChildList(id)
item.queryItemList = [];
})(item.id);
});
this.exportList = [...data];
console.log(this.exportList,"dflksh kjfn jks");
} else {
this.$message.error(msg);
}
},
},
props: {},

Loading…
Cancel
Save