<!-- * @Description: * @Autor: renchao * @LastEditTime: 2023-09-20 16:55:00 --> <template> <div class="edit"> <el-tabs tab-position="left"> <el-tab-pane :label="item.jzwmc" v-for="item in zrzList" :key="item.bsm"> <el-tabs type="card" v-model="activeName"> <el-tab-pane label="楼盘页面" name="first"> <div class="tab-content" ref="tabContent" :style="{ height: lpbContentHight + 'px' }" v-show="bjztFlag" > <!-- 楼盘表主体 --> <div class="lp-overview" :style="{ width: lpbContentwidth + 'px', 'margin-right': formData.onlyShow ? '10px' : 0, }" > <lpbContent ref="lpbContent" :zrzbsm="item.bsm" :scyclx="formData.scyclx" :onlyShow="formData.onlyShow" :showSave="formData.showSave" :unitData="formData.unitData" :sqywInfo="formData" :key="item.bsm" ></lpbContent> </div> <!-- 右侧图例 --> <div class="lp-legend" v-if="formData.onlyShow"> <div class="handleCol"> <div class="btn" @click="legendToggle"> <i v-show="!legendToggleFlag" class="el-icon-d-arrow-left" ></i> <i v-show="legendToggleFlag" class="el-icon-d-arrow-right" ></i> </div> <div :class="selectedZt == 'dyzt' ? 'dyzt selectedZt' : 'dyzt'" @click="selectedZt = 'dyzt'" > <span>单元状态</span> </div> <div :class="selectedZt == 'fwxz' ? 'fwxz selectedZt' : 'fwxz'" @click="selectedZt = 'fwxz'" > <span>房屋性质</span> </div> <div :class="selectedZt == 'fwyt' ? 'fwyt selectedZt' : 'fwyt'" @click="selectedZt = 'fwyt'" > <span>房屋用途</span> </div> <div :class="selectedZt == 'qsx' ? 'qsx selectedZt' : 'qsx'" @click="selectedZt = 'qsx'" > <span>缺失项</span> </div> </div> <div class="legendTable-wrap" :style="{ width: legendToggleFlag ? '200px' : '0' }" > <table class="legendTable" v-show="selectedZt == 'dyzt'" cellspacing="1" cellpadding="1" border="1" > <tr> <th>状态</th> <th>套数</th> <th>面积</th> </tr> <tr v-for="(item, index) in dyztList" :key="index" class="cp" @click="handleChoosedH(item.bsms, item.color)" > <td> <i class="fa fa-circle" :style="{ backgroundColor: item.color }" ></i >{{ item.name }} </td> <td>{{ item.ts }}</td> <td>{{ item.mj }}</td> </tr> </table> <table class="legendTable" v-show="selectedZt == 'fwxz'" cellspacing="1" cellpadding="1" border="1" > <tr> <th>性质</th> <th>套数</th> <th>面积</th> </tr> <tr v-for="(item, index) in fwxzList" :key="index" class="cp" @click="handleChoosedH(item.bsms, item.color)" > <td> <i class="fa fa-circle" :style="{ backgroundColor: item.color }" ></i >{{ item.name }} </td> <td>{{ item.ts }}</td> <td>{{ item.mj }}</td> </tr> <tr v-show="fwxzList.length < 1"> <td colspan="3" class="tac">暂无数据</td> </tr> </table> <table class="legendTable" v-show="selectedZt == 'fwyt'" cellspacing="1" cellpadding="1" border="1" > <tr> <th>用途</th> <th>套数</th> <th>面积</th> </tr> <tr v-for="(item, index) in fwytList" :key="index" class="cp" @click="handleChoosedH(item.bsms, item.color)" > <td> <i class="fa fa-circle" :style="{ backgroundColor: item.color }" ></i >{{ item.name }} </td> <td>{{ item.ts }}</td> <td>{{ item.mj }}</td> </tr> <tr v-show="fwytList.length < 1"> <td colspan="3" class="tac">暂无数据</td> </tr> </table> <table class="legendTable" v-show="selectedZt == 'qsx'" cellspacing="1" cellpadding="1" border="1" > <tr> <th>数据缺失项</th> <th>套数</th> <th>面积</th> </tr> <tr v-for="(item, index) in qsxList" :key="index" class="cp" @click="handleChoosedH(item.bsms, item.color)" > <td> <i class="fa fa-circle" :style="{ backgroundColor: item.color }" ></i >{{ item.name }} </td> <td>{{ item.ts }}</td> <td>0</td> </tr> <tr v-show="qsxList.length < 1"> <td colspan="3" class="tac">暂无数据</td> </tr> </table> </div> </div> </div> </el-tab-pane> <el-tab-pane label="单元列表页面" name="second"> <!-- 单元列表页面--> <selectZrzH :sqywInfo="formData" :zrzbsm="item.bsm" /> </el-tab-pane> </el-tabs> </el-tab-pane> </el-tabs> </div> </template> <script> import lpbContent from "./lpbContent/index"; import selectZrzH from "../ywbl/ywsq/components/selectZrzH"; import { getLpbFwytAndQlxz, getLpbQsxtj, getLpbTj } from "@/api/lpcx.js"; import { getZrzListByBsmSlsq } from "@/api/workflow/zjgcdyFlow.js"; export default { name: "lpb", props: { formData: { type: Object, default: () => { return {}; }, }, }, components: { lpbContent, selectZrzH, }, data() { return { activeName: "first", bsms: [], dialogVisible: false, scyclx: "0", //1是实测 0是预测 menuType: "", selectedZt: "dyzt", //图例选中项,默认选中单元状态 dyztList: [ { name: "未确权", color: "#83AAFE", ts: "12", mj: "1633", }, { name: "已确权", color: "#6EDEE1", ts: "22", mj: "3109", }, { name: "已备案", color: "#8ADC88", ts: "3", mj: "409", }, { name: "预抵押", color: "#F2AD67", ts: "11", mj: "1466", }, { name: "在建抵押", color: "#F191C8", ts: "13", mj: "1792", }, { name: "抵押", color: "#FF8282", ts: "14", mj: "13", }, { name: "查封", color: "#D7CECF", ts: "9", mj: "1436", }, { name: "异议", color: "#D4A3EB", ts: "34", mj: "4342", }, { name: "限制", color: "#A5A3FB", ts: "2", mj: "285", }, ], fwxzList: [], fwytList: [], qsxList: [], legendToggleFlag: false, lpbContentHight: "", lpbContentwidth: "", time: "", dyztBsmList: {}, //单元状态bsmList bjztFlag: true, qsztList: [], zrzList: [], }; }, created() { window.addEventListener("resize", this.getHeight); this.getHeight(); let params = { bsmSlsq: this.formData.bsmSlsq, djlx: this.formData.djlx, }; window.djlx && getZrzListByBsmSlsq(params).then((res) => { if (res.code === 200) { this.zrzList = res.result; } }); }, mounted() { //获取各项单元状态的户bsm this.formData.onlyShow && this.getDyztBsmList(); //获取房屋用途统计数据 this.formData.onlyShow && this.getLpbFwytAndQlxz(); // 楼盘表绘制区域宽度计算:楼盘表区域宽度-图例宽度34-滚动条宽度6 setTimeout(() => { this.lpbContentwidth = (document.documentElement.clientWidth || document.body.clientWidth) - 340 - 34 - 6; }, 100); }, methods: { /* handleTabClick(event){ if(event.name=="first"){ this.$router.push({ path:"/lpb/index", }) }else if(event.name=="second"){ this.$router.push({ path:"/ywbl/ywsq/components/selectAllHInfo", }) } },*/ //获取高度计算lpb内容区高度 /** * @description: 获取高度计算lpb内容区高度 * @author: renchao */ getHeight() { this.lpbContentHight = window.innerHeight - 226; }, //图例的展开收起 /** * @description: 图例的展开收起 * @author: renchao */ legendToggle() { this.legendToggleFlag = !this.legendToggleFlag; }, //切换房屋状态 /** * @description: 切换房屋状态 * @param {*} bsms * @param {*} color * @author: renchao */ handleChoosedH(bsms, color) { this.$refs.lpbContent.changeChoosed(bsms, color); }, //获取各项单元状态统计数据 /** * @description: 获取各项单元状态统计数据 * @author: renchao */ getDyztBsmList() { getLpbTj(this.formData.bsm).then((res) => { if (res.code === 200) { this.dyztList = res.result; this.dyztList.splice(1, 0, this.dyztList[8]); this.dyztList.pop(); this.dyztList.forEach((item) => { item.ts = item.bsms.length; switch (item.name) { case "Qqzt": item.color = "#6EDEE1"; item.name = "已确权"; break; case "Wqqzt": item.color = "#83AAFE"; item.name = "未确权"; break; case "Bazt": item.color = "#8ADC88"; item.name = "已备案"; break; case "Ydyzt": item.color = "#F2AD67"; item.name = "预抵押"; break; case "Zjgcdyzt": item.color = "#F191C8"; item.name = "在建抵押"; break; case "Dyzt": item.color = "#FF8282"; item.name = "抵押"; break; case "Cfzt": item.color = "#D7CECF"; item.name = "查封"; break; case "Yyzt": item.color = "#D4A3EB"; item.name = "异议"; break; case "Xzzt": item.color = "#A5A3FB"; item.name = "限制"; break; default: break; } }); } }); }, // 获取房屋用途和房屋性质及缺失项统计数据 /** * @description: 获取房屋用途和房屋性质及缺失项统计数据 * @author: renchao */ getLpbFwytAndQlxz() { getLpbFwytAndQlxz(this.formData.bsm).then((res) => { if (res.code === 200) { // this.fwytList = res.result this.fwytList = res.result.fwyt; this.fwxzList = res.result.qlxz; if (this.fwytList.length > 0) { this.fwytList.forEach((item) => { item.color = "#2591FD"; item.ts = item.bsms.length; }); } if (this.fwxzList.length > 0) { this.fwxzList.forEach((item) => { item.color = "#2591FD"; item.ts = item.bsms.length; }); } } }); // getLpbQsxtj(this.formData.bsm).then((res) => { // if (res.code === 200) { // this.qsxList = [ // { // name: "坐落", // bsms: res.result.zl.bsms, // color: "#2591FD", // ts: res.result.zl.bsms.length, // }, // { // name: "分层分户图", // bsms: res.result.fcfht.bsms, // color: "#2591FD", // ts: res.result.fcfht.bsms.length, // }, // { // name: "室号", // bsms: res.result.shbw.bsms, // color: "#2591FD", // ts: res.result.shbw.bsms.length, // }, // ]; // } // }); }, }, computed: {}, destroyed() { window.removeEventListener("resize", this.getHeight); }, watch: { //树结构和图例伸缩时修改楼盘表主要内容区宽度 legendToggleFlag(n) { if (n) { this.lpbContentwidth -= 204; } else { this.lpbContentwidth += 204; } }, selectedZt(n) { this.legendToggleFlag = true; }, }, }; </script> <style scoped lang="scss"> table { border-width: 0; border-collapse: collapse; border-spacing: 0; } .edit { height: 100%; .tab-content { border: 1px solid #dedede; border-left: 0; background-color: #ffffff; display: flex; &::-webkit-scrollbar { width: 1px; } .lp-tree { height: 100%; overflow: hidden; transition: 0.5s; .treeData { margin-top: 20px; margin-left: 26px; float: left; } } .w0 { width: 0; } .w260 { width: 260px; } .lp-overview { transition: 0.5s; flex: 1; border: 1px solid rgb(236, 236, 236); border-top: 0; border-bottom: 0; box-sizing: border-box; } .lp-legend { transition: 0.5s; height: 100%; font-size: 14px; .handleCol { width: 34px; float: right; height: 100%; .btn { cursor: pointer; height: 40px; line-height: 40px; text-align: center; background-color: #5a78de; color: #fff; border-bottom: 1px solid #e6e6e6; } .dyzt, .fwxz, .fwyt, .qsx { height: 122px; } .dyzt, .fwxz, .fwyt, .qsx { cursor: pointer; border-bottom: 1px solid #e6e6e6; border-left: 1px solid #e6e6e6; span { text-align: center; height: 100%; -webkit-writing-mode: vertical-rl; writing-mode: vertical-rl; line-height: 34px; letter-spacing: 2px; } } .selectedZt { // background-color: #5A78DE; color: #3d59c4; } } .legendTable-wrap { transition: 0.5s; float: right; overflow: hidden; .legendTable { margin-top: -1px; .fa-circle { display: inline-block; width: 12px; height: 12px; border-radius: 50%; vertical-align: middle; margin-right: 4px; } tr { height: 40px; line-height: 40px; border-color: #d8e0ea !important; th:first-child { width: 80px; } th { width: 60px; height: 40px; white-space: nowrap; background-color: #eceef2; } td { height: 40px; text-align: center; white-space: nowrap; } td:first-child { text-align: left; text-indent: 2px; } } } } } } } </style>