3 changed files with 5 additions and 508 deletions
@ -1,503 +0,0 @@ |
|||||
<template> |
|
||||
<div class="m-pop"> |
|
||||
<div class="wrap"> |
|
||||
<cpt-card> |
|
||||
<div class="title"> |
|
||||
<img src="@/assets/img/shuju/title-tip.png" /> |
|
||||
<span>更多信息</span> |
|
||||
</div> |
|
||||
|
|
||||
<div class="btn-close" @click="handleClose"> |
|
||||
<img src="@/assets/img/shuju/people/close.png" /> |
|
||||
</div> |
|
||||
|
|
||||
<div |
|
||||
:key="'fieldSubList' + index" |
|
||||
v-for="(fieldSubList, index) in fieldList" |
|
||||
> |
|
||||
<div class="list"> |
|
||||
<div class="item" v-if="index == 0"> |
|
||||
<span class="item-field">所属网格:</span> |
|
||||
<span>{{ gridName }}</span> |
|
||||
</div> |
|
||||
<div class="item" v-if="index == 0"> |
|
||||
<span class="item-field">所属小区:</span> |
|
||||
<span>{{ xiaoquName }}</span> |
|
||||
</div> |
|
||||
<div class="item" v-if="index == 0"> |
|
||||
<span class="item-field">所属楼宇:</span> |
|
||||
<span>{{ louName }}-{{ danyuanName }}</span> |
|
||||
</div> |
|
||||
<div class="item" v-if="index == 0"> |
|
||||
<span class="item-field">所属家庭:</span> |
|
||||
<span>{{ homeName }}</span> |
|
||||
</div> |
|
||||
<div class="item" :key="field.itemId" v-for="field in fieldSubList"> |
|
||||
<span class="item-field">{{ field.label }}:</span> |
|
||||
|
|
||||
<span |
|
||||
v-if=" |
|
||||
field.itemType == 'select' || |
|
||||
field.itemType == 'radio' || |
|
||||
field.itemType == 'checkbox' || |
|
||||
field.itemType == 'cascader' |
|
||||
" |
|
||||
>{{ |
|
||||
info[field.columnName] == null |
|
||||
? "--" |
|
||||
: getOptionLabel( |
|
||||
field.options, |
|
||||
info[field.columnName], |
|
||||
field.itemType |
|
||||
) |
|
||||
}}</span |
|
||||
> |
|
||||
|
|
||||
<span v-else>{{ |
|
||||
info[field.columnName] == null ? "--" : info[field.columnName] |
|
||||
}}</span> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
<div class="line"></div> |
|
||||
</div> |
|
||||
|
|
||||
<div class="tabs"> |
|
||||
<div |
|
||||
class="tab-btn" |
|
||||
@click="subStartGroupIndex" |
|
||||
v-if="groupList.length > 9" |
|
||||
> |
|
||||
<img src="@/assets/img/shuju/people/arrow-double-left.png" /> |
|
||||
</div> |
|
||||
<div |
|
||||
v-show="index >= startGroupIndex && index < startGroupIndex + 9" |
|
||||
class="tab" |
|
||||
:class="groupIndex % groupList.length == index ? 'z-on' : ''" |
|
||||
:key="'tab' + index" |
|
||||
@click="groupIndex = index" |
|
||||
v-for="(item, index) in groupList" |
|
||||
> |
|
||||
{{ item.label }} |
|
||||
</div> |
|
||||
<div |
|
||||
class="tab-btn" |
|
||||
@click="addStartGroupIndex" |
|
||||
v-if="groupList.length > 9" |
|
||||
> |
|
||||
<img src="@/assets/img/shuju/people/arrow-double-right.png" /> |
|
||||
</div> |
|
||||
</div> |
|
||||
|
|
||||
<div |
|
||||
:key="'group' + index" |
|
||||
v-show="groupIndex % groupList.length == index" |
|
||||
v-for="(group, index) in groupList" |
|
||||
> |
|
||||
<div v-if="group.tableName == 'ic_resi_demand' && Array.isArray(allInfo.ic_resi_demand) && allInfo.ic_resi_demand.length>0"> |
|
||||
<div |
|
||||
class="list" |
|
||||
:key="'ic_resi_demand' + infoIndex" |
|
||||
v-for="(infoItem, infoIndex) in allInfo.ic_resi_demand" |
|
||||
> |
|
||||
<div |
|
||||
class="item" |
|
||||
:key="field.itemId" |
|
||||
v-for="field in group.itemList" |
|
||||
> |
|
||||
<span class="item-field">{{ field.label }}:</span> |
|
||||
<span |
|
||||
v-if=" |
|
||||
field.itemType == 'select' || |
|
||||
field.itemType == 'radio' || |
|
||||
field.itemType == 'checkbox' || |
|
||||
field.itemType == 'cascader' |
|
||||
" |
|
||||
>{{ |
|
||||
infoItem[field.columnName] == null |
|
||||
? "--" |
|
||||
: getOptionLabel( |
|
||||
field.options, |
|
||||
infoItem[field.columnName], |
|
||||
field.itemType |
|
||||
) |
|
||||
}}</span |
|
||||
> |
|
||||
|
|
||||
<span v-else>{{ |
|
||||
infoItem[field.columnName] == null |
|
||||
? "--" |
|
||||
: infoItem[field.columnName] |
|
||||
}}</span> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
<div class="list" v-else> |
|
||||
<div |
|
||||
class="item" |
|
||||
:key="field.itemId" |
|
||||
v-for="field in group.itemList" |
|
||||
> |
|
||||
<span class="item-field">{{ field.label }}:</span> |
|
||||
<span |
|
||||
v-if=" |
|
||||
field.itemType == 'select' || |
|
||||
field.itemType == 'radio' || |
|
||||
field.itemType == 'checkbox' || |
|
||||
field.itemType == 'cascader' |
|
||||
" |
|
||||
>{{ |
|
||||
!allInfo[group.tableName] || |
|
||||
allInfo[group.tableName][0][field.columnName] == null |
|
||||
? "--" |
|
||||
: getOptionLabel( |
|
||||
field.options, |
|
||||
allInfo[group.tableName][0][field.columnName], |
|
||||
field.itemType |
|
||||
) |
|
||||
}}</span |
|
||||
> |
|
||||
|
|
||||
<span v-else>{{ |
|
||||
!allInfo[group.tableName] || |
|
||||
allInfo[group.tableName][0][field.columnName] == null |
|
||||
? "--" |
|
||||
: allInfo[group.tableName][0][field.columnName] |
|
||||
}}</span> |
|
||||
</div> |
|
||||
</div> |
|
||||
</div> |
|
||||
</cpt-card> |
|
||||
</div> |
|
||||
</div> |
|
||||
</template> |
|
||||
|
|
||||
<script> |
|
||||
import cptCard from "@/views/modules/visual/cpts/card"; |
|
||||
import { requestPost } from "@/js/dai/request"; |
|
||||
|
|
||||
export default { |
|
||||
name: "demandInfo", |
|
||||
props: { |
|
||||
userId: { |
|
||||
type: String, |
|
||||
default: "", |
|
||||
}, |
|
||||
gridName: { |
|
||||
type: String, |
|
||||
default: "", |
|
||||
}, |
|
||||
}, |
|
||||
|
|
||||
components: { |
|
||||
cptCard, |
|
||||
}, |
|
||||
|
|
||||
data() { |
|
||||
return { |
|
||||
fieldList: [], |
|
||||
groupList: [], |
|
||||
groupIndex: 0, |
|
||||
startGroupIndex: 0, |
|
||||
info: {}, |
|
||||
allInfo: {}, |
|
||||
|
|
||||
xiaoquList: [], |
|
||||
louList: [], |
|
||||
danyuanList: [], |
|
||||
homeList: [], |
|
||||
}; |
|
||||
}, |
|
||||
|
|
||||
computed: { |
|
||||
xiaoquName() { |
|
||||
const { |
|
||||
xiaoquList, |
|
||||
info: { VILLAGE_ID }, |
|
||||
} = this; |
|
||||
if (Array.isArray(xiaoquList) && xiaoquList.length > 0 && VILLAGE_ID) { |
|
||||
let item = xiaoquList.find((item) => item.value == VILLAGE_ID); |
|
||||
if (item) { |
|
||||
return item.label; |
|
||||
} |
|
||||
} |
|
||||
return ""; |
|
||||
}, |
|
||||
louName() { |
|
||||
const { |
|
||||
louList, |
|
||||
info: { BUILD_ID }, |
|
||||
} = this; |
|
||||
if (Array.isArray(louList) && louList.length > 0 && BUILD_ID) { |
|
||||
let item = louList.find((item) => item.value == BUILD_ID); |
|
||||
if (item) { |
|
||||
return item.label; |
|
||||
} |
|
||||
} |
|
||||
return ""; |
|
||||
}, |
|
||||
danyuanName() { |
|
||||
const { |
|
||||
danyuanList, |
|
||||
info: { UNIT_ID }, |
|
||||
} = this; |
|
||||
if (Array.isArray(danyuanList) && danyuanList.length > 0 && UNIT_ID) { |
|
||||
let item = danyuanList.find((item) => item.value == UNIT_ID); |
|
||||
if (item) { |
|
||||
return item.label; |
|
||||
} |
|
||||
} |
|
||||
return ""; |
|
||||
}, |
|
||||
danyuanName() { |
|
||||
const { |
|
||||
danyuanList, |
|
||||
info: { UNIT_ID }, |
|
||||
} = this; |
|
||||
if (Array.isArray(danyuanList) && danyuanList.length > 0 && UNIT_ID) { |
|
||||
let item = danyuanList.find((item) => item.value == UNIT_ID); |
|
||||
if (item) { |
|
||||
return item.label; |
|
||||
} |
|
||||
} |
|
||||
return ""; |
|
||||
}, |
|
||||
homeName() { |
|
||||
const { |
|
||||
homeList, |
|
||||
info: { HOME_ID }, |
|
||||
} = this; |
|
||||
if (Array.isArray(homeList) && homeList.length > 0 && HOME_ID) { |
|
||||
let item = homeList.find((item) => item.value == HOME_ID); |
|
||||
if (item) { |
|
||||
return item.label; |
|
||||
} |
|
||||
} |
|
||||
return ""; |
|
||||
}, |
|
||||
}, |
|
||||
|
|
||||
watch: { |
|
||||
userId() { |
|
||||
this.getApiData(); |
|
||||
}, |
|
||||
}, |
|
||||
|
|
||||
mounted() { |
|
||||
this.getApiData(); |
|
||||
}, |
|
||||
|
|
||||
methods: { |
|
||||
addStartGroupIndex() { |
|
||||
const { startGroupIndex, groupList } = this; |
|
||||
if (startGroupIndex < groupList.length - 9) { |
|
||||
this.startGroupIndex = startGroupIndex + 1; |
|
||||
} else { |
|
||||
this.startGroupIndex = groupList.length - 9; |
|
||||
} |
|
||||
}, |
|
||||
subStartGroupIndex() { |
|
||||
const { startGroupIndex, groupList } = this; |
|
||||
if (startGroupIndex > 0) { |
|
||||
this.startGroupIndex = startGroupIndex - 1; |
|
||||
} else { |
|
||||
this.startGroupIndex = 0; |
|
||||
} |
|
||||
}, |
|
||||
handleClose() { |
|
||||
this.$emit("close"); |
|
||||
}, |
|
||||
|
|
||||
async getApiData() { |
|
||||
await this.getField(); |
|
||||
await this.getInfo(); |
|
||||
this.getXiaoquList(); |
|
||||
this.getLouList(); |
|
||||
this.getDanyuanList(); |
|
||||
this.getHomeList(); |
|
||||
}, |
|
||||
|
|
||||
getOptionLabel(options, value, type = "") { |
|
||||
if (Array.isArray(options)) { |
|
||||
let valueArr = value.split(","); |
|
||||
if (type == "cascader") { |
|
||||
if (valueArr.length > 0) { |
|
||||
let level1 = options.find((item) => item.value == valueArr[0]); |
|
||||
if (level1) { |
|
||||
if (valueArr.length > 1 && level1.children) { |
|
||||
let level2 = level1.children.find( |
|
||||
(item) => item.value == valueArr[1] |
|
||||
); |
|
||||
if (level2) { |
|
||||
return level1.label + "-" + level2.label; |
|
||||
} |
|
||||
} |
|
||||
return level1.label; |
|
||||
} |
|
||||
} |
|
||||
} else { |
|
||||
return valueArr |
|
||||
.map((val) => { |
|
||||
let item = options.find((item) => item.value == val); |
|
||||
if (item && item.label) { |
|
||||
return item.label; |
|
||||
} |
|
||||
return "--"; |
|
||||
}) |
|
||||
.join("、"); |
|
||||
} |
|
||||
} |
|
||||
return "--"; |
|
||||
}, |
|
||||
|
|
||||
//加载组织数据 |
|
||||
async getField() { |
|
||||
const url = "/oper/customize/icform/getcustomerform"; |
|
||||
|
|
||||
const { data, code, msg } = await requestPost(url, { |
|
||||
dynamic: true, |
|
||||
formCode: "resi_base_info", |
|
||||
}); |
|
||||
|
|
||||
if (code === 0) { |
|
||||
this.groupList = data.groupList; |
|
||||
this.fieldList = (function (arr) { |
|
||||
let col = []; |
|
||||
let ele = []; |
|
||||
for (let i = 0; i < arr.length; i++) { |
|
||||
let item = arr[i]; |
|
||||
if (item.itemType == "divider" || i == arr.length - 1) { |
|
||||
col.push([...ele]); |
|
||||
ele = []; |
|
||||
} else { |
|
||||
ele.push(item); |
|
||||
} |
|
||||
} |
|
||||
return col; |
|
||||
})(data.itemList); |
|
||||
|
|
||||
this.fieldList.forEach((subList, index) => { |
|
||||
subList.forEach(async (item, subIndex) => { |
|
||||
if (item.optionSourceType == "remote" && item.optionSourceValue) { |
|
||||
this.fieldList[index][subIndex].options = await this.getOptions( |
|
||||
item.optionSourceValue |
|
||||
); |
|
||||
} |
|
||||
}); |
|
||||
}); |
|
||||
} else { |
|
||||
this.$message.error(msg); |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
//加载组织数据 |
|
||||
async getInfo() { |
|
||||
const url = "/epmetuser/icresiuser/detail"; |
|
||||
|
|
||||
const { data, code, msg } = await requestPost(url, { |
|
||||
icResiUserId: this.userId, |
|
||||
formCode: "resi_base_info", |
|
||||
}); |
|
||||
|
|
||||
if (code === 0) { |
|
||||
this.info = data.ic_resi_user[0]; |
|
||||
this.allInfo = data; |
|
||||
|
|
||||
this.fieldList.forEach((subList, index) => { |
|
||||
subList.forEach((item, subIndex) => { |
|
||||
if ( |
|
||||
item.itemType == "radio" && |
|
||||
item.childGroup && |
|
||||
this.allInfo[item.tableName] && |
|
||||
this.allInfo[item.tableName][0][item.columnName] == "1" |
|
||||
) { |
|
||||
this.groupList = [...this.groupList, item.childGroup]; |
|
||||
} |
|
||||
}); |
|
||||
}); |
|
||||
console.log("1111111111111111111111111", this.groupList); |
|
||||
|
|
||||
this.groupList.forEach((subList, index) => { |
|
||||
subList.itemList.forEach(async (item, subIndex) => { |
|
||||
if (item.optionSourceType == "remote" && item.optionSourceValue) { |
|
||||
this.groupList[index].itemList[subIndex].options = |
|
||||
await this.getOptions(item.optionSourceValue); |
|
||||
} |
|
||||
}); |
|
||||
}); |
|
||||
} else { |
|
||||
this.$message.error(msg); |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
//加载组织数据 |
|
||||
async getOptions(url) { |
|
||||
if (!url) return []; |
|
||||
|
|
||||
const { data, code, msg } = await requestPost(url, {}); |
|
||||
|
|
||||
if (code === 0) { |
|
||||
return data; |
|
||||
} else { |
|
||||
return []; |
|
||||
} |
|
||||
}, |
|
||||
|
|
||||
async getXiaoquList() { |
|
||||
const url = "/gov/org/icneighborhood/neighborhoodoption"; |
|
||||
|
|
||||
const { data, code, msg } = await requestPost(url, { |
|
||||
agencyId: this.info.AGENCY_ID, |
|
||||
gridId: this.info.GRID_ID, |
|
||||
}); |
|
||||
|
|
||||
if (code === 0) { |
|
||||
this.xiaoquList = data; |
|
||||
} else { |
|
||||
this.$message.error(msg); |
|
||||
} |
|
||||
}, |
|
||||
async getLouList() { |
|
||||
const url = "/gov/org/icbuilding/buildingoption"; |
|
||||
|
|
||||
const { data, code, msg } = await requestPost(url, { |
|
||||
neighborHoodId: this.info.VILLAGE_ID, |
|
||||
}); |
|
||||
|
|
||||
if (code === 0) { |
|
||||
this.louList = data; |
|
||||
} else { |
|
||||
this.$message.error(msg); |
|
||||
} |
|
||||
}, |
|
||||
async getDanyuanList() { |
|
||||
const url = "/gov/org/icbuildingunit/unitoption"; |
|
||||
|
|
||||
const { data, code, msg } = await requestPost(url, { |
|
||||
buildingId: this.info.BUILD_ID, |
|
||||
}); |
|
||||
|
|
||||
if (code === 0) { |
|
||||
this.danyuanList = data; |
|
||||
} else { |
|
||||
this.$message.error(msg); |
|
||||
} |
|
||||
}, |
|
||||
async getHomeList() { |
|
||||
const url = "/gov/org/ichouse/houseoption"; |
|
||||
|
|
||||
const { data, code, msg } = await requestPost(url, { |
|
||||
unitId: this.info.UNIT_ID, |
|
||||
}); |
|
||||
|
|
||||
if (code === 0) { |
|
||||
this.homeList = data; |
|
||||
} else { |
|
||||
this.$message.error(msg); |
|
||||
} |
|
||||
}, |
|
||||
}, |
|
||||
}; |
|
||||
</script> |
|
||||
|
|
||||
<style lang="scss" src="@/assets/scss/modules/visual/people.scss" scoped></style> |
|
Loading…
Reference in new issue