老产品前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

248 lines
6.4 KiB

4 years ago
<template>
4 years ago
<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></span>
</div>
<div class="item" v-if="index == 0">
<span class="item-field">所属楼宇</span>
<span></span>
</div>
<div class="item" v-if="index == 0">
<span class="item-field">所属家庭</span>
<span></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'"
>{{
info[field.columnName] == null
? "--"
: getOptionLabel(field.options, info[field.columnName])
}}</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="groupIndex -= 1">
<img src="@/assets/img/shuju/people/arrow-double-left.png" />
</div>
<div
class="tab"
:class="groupIndex % groupList.length == index ? 'z-on' : ''"
:key="'tab' + index"
@click="groupIndex = groupList.length * 100 + index"
v-for="(item, index) in groupList"
>
{{ item.label }}
</div>
<div class="tab-btn" @click="groupIndex += 1">
<img src="@/assets/img/shuju/people/arrow-double-right.png" />
</div>
</div>
<div
class="list"
:key="'group' + index"
v-show="groupIndex % groupList.length == index"
v-for="(group, index) in groupList"
>
<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'"
>{{
info[field.columnName] == null
? "--"
: getOptionLabel(field.options, info[field.columnName])
}}</span
>
<span v-else>{{
info[field.columnName] == null ? "--" : info[field.columnName]
}}</span>
</div>
</div>
</cpt-card>
</div>
4 years ago
</div>
</template>
<script>
4 years ago
import cptCard from "@/views/modules/visual/cpts/card";
import { requestPost } from "@/js/dai/request";
4 years ago
export default {
4 years ago
name: "peopleMore",
4 years ago
props: {
4 years ago
userId: {
4 years ago
type: String,
4 years ago
default: "",
4 years ago
},
4 years ago
gridName: {
4 years ago
type: String,
4 years ago
default: "",
4 years ago
}
},
4 years ago
components: {
cptCard,
4 years ago
},
4 years ago
data() {
return {
fieldList: [],
groupList: [],
groupIndex: 0,
info: {},
};
4 years ago
},
4 years ago
4 years ago
watch: {
4 years ago
userId() {
this.getInfo();
},
4 years ago
},
4 years ago
mounted() {
this.getApiData();
4 years ago
},
4 years ago
4 years ago
methods: {
4 years ago
handleClose() {
this.$emit("close");
4 years ago
},
4 years ago
getApiData() {
this.getField();
this.getInfo();
4 years ago
},
4 years ago
getOptionLabel(options, value) {
if (Array.isArray(options)) {
let item = options.find((item) => item.value == value);
if (item && item.label) {
return item.label;
4 years ago
}
}
4 years ago
return "--";
4 years ago
},
4 years ago
//加载组织数据
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);
4 years ago
}
}
4 years ago
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
);
}
});
});
this.groupList.forEach((subList, index) => {
subList.itemList.forEach(async (item, subIndex) => {
if (item.optionSourceType == "remote" && item.optionSourceValue) {
this.groupList[index].itemList.options = await this.getOptions(
item.optionSourceValue
);
}
});
});
this.groupIndex = this.groupList.length * 100;
} else {
this.$message.error(msg);
}
4 years ago
},
4 years ago
//加载组织数据
async getInfo() {
const url = "/epmetuser/icresiuser/detail";
4 years ago
4 years ago
const { data, code, msg } = await requestPost(url, {
icResiUserId: this.userId,
formCode: "resi_base_info",
});
4 years ago
4 years ago
if (code === 0) {
this.info = data.ic_resi_user[0];
} else {
this.$message.error(msg);
}
},
4 years ago
4 years ago
//加载组织数据
async getOptions(url) {
if (!url) return [];
4 years ago
4 years ago
const { data, code, msg } = await requestPost(url, {});
4 years ago
4 years ago
if (code === 0) {
return data;
} else {
return [];
}
},
},
};
</script>
<style lang="scss" src="@/assets/scss/people.scss" scoped></style>