shuishen
2026-01-05 e9748ebb3b42cc09c28ce8d78d472f83f0878f17
用水数据、维修基金展示处理
6 files modified
2 files added
860 ■■■■ changed files
src/api/dept/index.js 42 ●●●● patch | view | raw | blame | history
src/api/dept/newIndex.js 48 ●●●●● patch | view | raw | blame | history
src/styles/base/index.scss 2 ●●● patch | view | raw | blame | history
src/styles/media/index.scss 2 ●●● patch | view | raw | blame | history
src/views/house/components/maintain.vue 280 ●●●●● patch | view | raw | blame | history
src/views/house/components/useWater.vue 280 ●●●●● patch | view | raw | blame | history
src/views/house/index.vue 186 ●●●●● patch | view | raw | blame | history
src/views/layout/index.vue 20 ●●●●● patch | view | raw | blame | history
src/api/dept/index.js
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-11-30 15:18:29
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-04-18 19:27:38
 * @LastEditTime: 2026-01-05 22:33:06
 * @FilePath: \srs-police-affairs\src\api\dept\index.js
 * @Description:
 *
@@ -45,11 +45,11 @@
 */
export const getResidentialQuartersInfo = (area_id, adcode) => {
    return request({
        url: '/sf3d/area/info',
        // url: '/data/getResidentialQuartersInfo.json',
        // url: '/sf3d/area/info',
        url: '/data/getResidentialQuartersInfo.json',
        method: 'get',
        authorization: false,
        requestBaseUrl: 'fengt',
        // requestBaseUrl: 'fengt',
        params: {
            area_id,
            adcode
@@ -66,11 +66,11 @@
export const getAoiByPt = (lng, lat, height, adcode, tolerance) => {
    return request({
        // url: '/sf3d/area/getAoiByPt',
        url: '/sf3d/area/stdgetAoiByPt',
        // url: '/data/getAoiByBgId.json',
        // url: '/sf3d/area/stdgetAoiByPt',
        url: '/data/getAoiByBgId.json',
        method: 'get',
        authorization: false,
        requestBaseUrl: 'fengt',
        // requestBaseUrl: 'fengt',
        params: {
            lng,
            lat,
@@ -106,11 +106,11 @@
export const getHouses = (build_id, adcode) => {
    return request({
        // url: '/sf3d/build/houses',
        url: '/sf3d/build/stdhouses',
        // url: '/data/huafu15d.json',
        // url: '/sf3d/build/stdhouses',
        url: '/data/huafu15d.json',
        method: 'get',
        authorization: false,
        requestBaseUrl: 'fengt',
        // requestBaseUrl: 'fengt',
        params: {
            build_id,
            adcode
@@ -126,8 +126,8 @@
 */
export const getSearchExtensively = (ak, region, query, ids) => {
    return request({
        url: '/zhs/bs/search',
        // url: '/data/jingzuo.json',
        // url: '/zhs/bs/search',
        url: '/data/jingzuo.json',
        method: 'get',
        requestBaseUrl: 'fengtDS',
        params: {
@@ -146,10 +146,10 @@
 */
export const getSearchExtensivelyPage = (ak, region, query,page_num,page_size) => {
    return request({
        url: '/zhs/bs/search',
        // url: '/data/jingzuo.json',
        // url: '/zhs/bs/search',
        url: '/data/jingzuo.json',
        method: 'get',
        requestBaseUrl: 'fengtDS',
        // requestBaseUrl: 'fengtDS',
        params: {
            ak,
            region,
@@ -167,15 +167,15 @@
 */
export const getSearchExtensivelyBgAoiDeepdata = (ak, region, ids, infos) => {
    return request({
        url: '/zhs/bs/search',
        // url: '/zhs/bs/search',
        // url: '/data/汇成观邸.json',
        // url: '/data/search.json',
        // url: '/data/阳光小区独栋.json',
        url: '/data/阳光小区独栋.json',
        // url: '/data/search汇杰小区.json',
        // url: '/data/汪家园林家小区id详情搜.json',
        // url: '/data/search三江星座.json',
        method: 'get',
        requestBaseUrl: 'fengtDS',
        // requestBaseUrl: 'fengtDS',
        params: {
            ak,
            region,
@@ -192,13 +192,13 @@
 */
export const getSearchExtensivelyHousesdata = (ak, region, ids, infos) => {
    return request({
        url: '/zhs/bs/search',
        // url: '/data/汇成观邸-户室.json',
        // url: '/zhs/bs/search',
        url: '/data/汇成观邸-户室.json',
        // url: '/data/阳光小区独栋.json',
        // url: '/data/search汇杰小区1栋.json',
        // url: '/data/汪家园林家小区2号id详情搜.json',
        method: 'get',
        requestBaseUrl: 'fengtDS',
        // requestBaseUrl: 'fengtDS',
        params: {
            ak,
            region,
src/api/dept/newIndex.js
@@ -339,4 +339,52 @@
      childType
    }
  })
}
/**
 * 自来水用户信息
 * @param {*} params
 * @returns
 */
export const getZlsYhxx = (type = 1, resBusId) => {
    let params = {
        resBusId
    }
    if (type != 1) {
        params = {
            buildId: resBusId
        }
    }
    return request({
        url: '/api/zlsYhxx/zlsYhxx/page',
        method: 'get',
        // params
    })
}
/**
 * 维修基金信息
 * @param {*} params
 * @returns
 */
export const getWxjj = (type = 1, resBusId) => {
    let params = {
        resBusId
    }
    if (type != 1) {
        params = {
            buildId: resBusId
        }
    }
    return request({
        url: '/api/wxjj/wxjj/page',
        method: 'get',
        // params
    })
}
src/styles/base/index.scss
@@ -156,7 +156,7 @@
    .el-dialog {
        display: flex;
        flex-direction: column;
        width: 920px;
        width: 1160px;
        .el-dialog__body {
            display: flex;
src/styles/media/index.scss
@@ -1968,7 +1968,7 @@
            }
            .el-dialog {
              width: countSizeVw(1080, 1920);
                            width: countSizeVw(1160, 1920);
            }
            .el-dialog__header span {
src/views/house/components/maintain.vue
New file
@@ -0,0 +1,280 @@
<!--  -->
<template>
    <div class="table-box-w">
        <div class="list-box">
            <el-table
                :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
                :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }" v-loading="residentLoading"
                element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading"
                element-loading-background="rgba(17, 38, 163, 1)" :empty-text="residentNoDataText"
                :data="dataList.records" style="width: 100%" @cell-click="cellClick">
                <!-- 包含了姓名、性别、民族、身份证号码、手机号、现居住地、岗位、从业人员照片等。 -->
                <el-table-column align="center" prop="name" label="姓名" width="100"> </el-table-column>
                <el-table-column align="center" prop="gender" label="性别" width="70">
                    <template slot-scope="scope">
                        {{ scope.row.gender == 1 ? '男' : '女' }}
                    </template>
                </el-table-column>
                <el-table-column align="center" prop="ethnicity" label="民族" width="70"> </el-table-column>
                <el-table-column align="center" prop="idCard" label="身份证号码"> </el-table-column>
                <el-table-column align="center" prop="telephone" label="手机号"> </el-table-column>
                <el-table-column align="center" prop="location" show-overflow-tooltip label="现居住地"> </el-table-column>
                <el-table-column align="center" prop="name" label="岗位" width="80px"> </el-table-column>
            </el-table>
        </div>
        <!-- 详情页面 -->
        <el-dialog class="resident-details-box-details" :modal="false" :close-on-click-modal="false"
            :append-to-body="true" :visible.sync="detailBox">
            <div class="detail-box">
                <!-- popelList[0]  详情页面 包含了姓名、性别、民族、身份证号码、手机号、现居住地、岗位、从业人员照片等-->
                <div class="detail-title-box">
                    <div class="detail-title">从业人员详情</div>
                    <div class="close" @click="detailBox = false" title="关闭"></div>
                </div>
                <div class="detail-content-box">
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">场所名称</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.placeName }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">场所负责人</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.principal }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">负责人电话</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.principalPhone }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">场所地址</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="">{{ row.location }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">姓名</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.name }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">性别</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.gender == 1 ? '男' : '女' }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">民族</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.ethnicity }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">身份证号码</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.idCard }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">手机号</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.telephone }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">现居住地</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.tempAddress }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">岗位</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.jobNature }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">入职时间</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.employmentTime }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">辞职时间</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.resignationTime }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">从业人员照片</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="mini-code">
                                <el-image fit="contain" style="height: 100px;width: 100px;" :src="row.employerImg"
                                    :preview-src-list="[row.employerImg]">
                                    <div slot="error" class="image-slot"></div>
                                </el-image>
                            </div>
                        </el-col>
                    </el-row>
                </div>
            </div>
        </el-dialog>
    </div>
</template>
<script>
import {
    getWxjj
} from "@/api/dept/newIndex.js"
export default {
    name: 'tableFromPop',
    props: {
        hushiPeoTy: {
            type: String,
            default: ''
        },
        residentIdSave: {
            type: String,
            default: ''
        },
        residentDetailsType: {
            type: Number,
            default: 1
        },
    },
    //import引入的组件需要注入到对象中才能使用
    components: {},
    data () {
        //这里存放数据
        return {
            row: {},
            detailBox: false,
            residentLoading: false,
            residentNoDataText: '暂无数据',
            dataList: {
                total: 1,
                records: []
            },
        }
    },
    //监听属性 类似于data概念
    computed: {
    },
    //监控data中的数据变化
    watch: {
        residentIdSave (newVal, oldVal) {
            console.log('residentIdSave', newVal, oldVal)
            if (newVal) {
                this.init()
            }
        }
    },
    //方法集合
    methods: {
        init () {
            this.residentLoading = true
            getWxjj(this.residentDetailsType, this.residentIdSave).then((res) => {
                this.dataList.total = res.data.data.total
                this.dataList.records = res.data.data.records
                this.residentLoading = false
            }).catch((err) => {
                this.residentLoading = false
            })
        },
        cellClick (row, column, cell, event) {
            row.employerImg = this.getImgUrls(row.employerImg)
            this.row = row
            this.detailBox = !this.detailBox
            console.log('cellClick', row, column, cell, event)
        },
        // // 图片转换
        getImgUrls (imageUrls) {
            if (imageUrls && imageUrls != '' && imageUrls.length > 0) {
                imageUrls = imageUrls.split(',').filter(ele => ele != '').map(ele => {
                    return 'http://10.141.11.11/jczzMedia/' + ele
                    // return 'https://srgdjczzxtpt.com:2080/gminio/jczz/' + ele
                })
            }
            return imageUrls || []
        },
    },
    //生命周期 - 创建完成(可以访问当前this实例)
    created () {
        console.log('tableFromPop created', this.residentIdSave)
    },
    //生命周期 - 挂载完成(可以访问DOM元素)
    mounted () {
        console.log('tableFromPop mounted', this.residentIdSave)
        this.init()
    },
    beforeCreate () { }, //生命周期 - 创建之前
    beforeMount () { }, //生命周期 - 挂载之前
    beforeUpdate () { }, //生命周期 - 更新之前
    updated () { }, //生命周期 - 更新之后
    beforeDestroy () { }, //生命周期 - 销毁之前
    destroyed () { }, //生命周期 - 销毁完成
    activated () { }, //如果页面有keep-alive缓存功能,这个函数会触发
}
</script>
<style scoped lang="scss">
.table-box-w {
    // position: relative;
    // background-color: rgba(228, 17, 17, 0.5);
}
</style>
src/views/house/components/useWater.vue
New file
@@ -0,0 +1,280 @@
<!--  -->
<template>
    <div class="table-box-w">
        <div class="list-box">
            <el-table
                :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
                :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }" v-loading="residentLoading"
                element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading"
                element-loading-background="rgba(17, 38, 163, 1)" :empty-text="residentNoDataText"
                :data="dataList.records" style="width: 100%" @cell-click="cellClick">
                <!-- 包含了姓名、性别、民族、身份证号码、手机号、现居住地、岗位、从业人员照片等。 -->
                <el-table-column align="center" prop="name" label="姓名" width="100"> </el-table-column>
                <el-table-column align="center" prop="gender" label="性别" width="70">
                    <template slot-scope="scope">
                        {{ scope.row.gender == 1 ? '男' : '女' }}
                    </template>
                </el-table-column>
                <el-table-column align="center" prop="ethnicity" label="民族" width="70"> </el-table-column>
                <el-table-column align="center" prop="idCard" label="身份证号码"> </el-table-column>
                <el-table-column align="center" prop="telephone" label="手机号"> </el-table-column>
                <el-table-column align="center" prop="location" show-overflow-tooltip label="现居住地"> </el-table-column>
                <el-table-column align="center" prop="name" label="岗位" width="80px"> </el-table-column>
            </el-table>
        </div>
        <!-- 详情页面 -->
        <el-dialog class="resident-details-box-details" :modal="false" :close-on-click-modal="false"
            :append-to-body="true" :visible.sync="detailBox">
            <div class="detail-box">
                <!-- popelList[0]  详情页面 包含了姓名、性别、民族、身份证号码、手机号、现居住地、岗位、从业人员照片等-->
                <div class="detail-title-box">
                    <div class="detail-title">从业人员详情</div>
                    <div class="close" @click="detailBox = false" title="关闭"></div>
                </div>
                <div class="detail-content-box">
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">场所名称</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.placeName }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">场所负责人</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.principal }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">负责人电话</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.principalPhone }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">场所地址</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="">{{ row.location }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">姓名</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.name }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">性别</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.gender == 1 ? '男' : '女' }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">民族</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.ethnicity }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">身份证号码</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.idCard }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">手机号</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.telephone }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">现居住地</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.tempAddress }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">岗位</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.jobNature }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">入职时间</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.employmentTime }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">辞职时间</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="detail-row">{{ row.resignationTime }}</div>
                        </el-col>
                    </el-row>
                    <el-row class="">
                        <el-col :span="6">
                            <div class="detail-row">从业人员照片</div>
                        </el-col>
                        <el-col :span="18">
                            <div class="mini-code">
                                <el-image fit="contain" style="height: 100px;width: 100px;" :src="row.employerImg"
                                    :preview-src-list="[row.employerImg]">
                                    <div slot="error" class="image-slot"></div>
                                </el-image>
                            </div>
                        </el-col>
                    </el-row>
                </div>
            </div>
        </el-dialog>
    </div>
</template>
<script>
import {
    getZlsYhxx
} from "@/api/dept/newIndex.js"
export default {
    name: 'tableFromPop',
    props: {
        hushiPeoTy: {
            type: String,
            default: ''
        },
        residentIdSave: {
            type: String,
            default: ''
        },
        residentDetailsType: {
            type: Number,
            default: 1
        },
    },
    //import引入的组件需要注入到对象中才能使用
    components: {},
    data () {
        //这里存放数据
        return {
            row: {},
            detailBox: false,
            residentLoading: false,
            residentNoDataText: '暂无数据',
            dataList: {
                total: 1,
                records: []
            },
        }
    },
    //监听属性 类似于data概念
    computed: {
    },
    //监控data中的数据变化
    watch: {
        residentIdSave (newVal, oldVal) {
            console.log('residentIdSave', newVal, oldVal)
            if (newVal) {
                this.init()
            }
        }
    },
    //方法集合
    methods: {
        init () {
            this.residentLoading = true
            getZlsYhxx(this.residentDetailsType, this.residentIdSave).then((res) => {
                this.dataList.total = res.data.data.total
                this.dataList.records = res.data.data.records
                this.residentLoading = false
            }).catch((err) => {
                this.residentLoading = false
            })
        },
        cellClick (row, column, cell, event) {
            row.employerImg = this.getImgUrls(row.employerImg)
            this.row = row
            this.detailBox = !this.detailBox
            console.log('cellClick', row, column, cell, event)
        },
        // // 图片转换
        getImgUrls (imageUrls) {
            if (imageUrls && imageUrls != '' && imageUrls.length > 0) {
                imageUrls = imageUrls.split(',').filter(ele => ele != '').map(ele => {
                    return 'http://10.141.11.11/jczzMedia/' + ele
                    // return 'https://srgdjczzxtpt.com:2080/gminio/jczz/' + ele
                })
            }
            return imageUrls || []
        },
    },
    //生命周期 - 创建完成(可以访问当前this实例)
    created () {
        console.log('tableFromPop created', this.residentIdSave)
    },
    //生命周期 - 挂载完成(可以访问DOM元素)
    mounted () {
        console.log('tableFromPop mounted', this.residentIdSave)
        this.init()
    },
    beforeCreate () { }, //生命周期 - 创建之前
    beforeMount () { }, //生命周期 - 挂载之前
    beforeUpdate () { }, //生命周期 - 更新之前
    updated () { }, //生命周期 - 更新之后
    beforeDestroy () { }, //生命周期 - 销毁之前
    destroyed () { }, //生命周期 - 销毁完成
    activated () { }, //如果页面有keep-alive缓存功能,这个函数会触发
}
</script>
<style scoped lang="scss">
.table-box-w {
    // position: relative;
    // background-color: rgba(228, 17, 17, 0.5);
}
</style>
src/views/house/index.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 16:18:17
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2025-01-16 12:02:41
 * @LastEditTime: 2026-01-05 22:29:06
 * @FilePath: \srs-police-affairs\src\views\house\index.vue
 * @Description: 小区-栋-层-房屋
 * 
@@ -15,30 +15,33 @@
      <div v-show="contentShow" class="search-box">
        <el-popover ref="popover" placement="bottom" trigger="manual" v-model="searchTreeShowFlag"
          popper-class="tree-search-popup" @mousedown.native="preventFocusLost">
          <el-tree v-show="searchLazyFlag == true" ref="popupTree" style="overflow: auto;" class="select-tree-box"
            :load="loadNode" :lazy="true" :props="props" @current-change="currentChangeHandle"
            @mousedown.native="preventFocusLost"></el-tree>
          <el-tree v-show="searchLazyFlag == false" :empty-text="treeEmptyText" ref="popupTree" style="overflow: auto;"
            class="select-tree-box" :data="searchTreeData" :props="defaultProps" :default-expand-all="true"
                    <el-tree v-show="searchLazyFlag == true" ref="popupTree" style="overflow: auto;"
                        class="select-tree-box" :load="loadNode" :lazy="true" :props="props"
            @current-change="currentChangeHandle" @mousedown.native="preventFocusLost"></el-tree>
                    <el-tree v-show="searchLazyFlag == false" :empty-text="treeEmptyText" ref="popupTree"
                        style="overflow: auto;" class="select-tree-box" :data="searchTreeData" :props="defaultProps"
                        :default-expand-all="true" @current-change="currentChangeHandle"
                        @mousedown.native="preventFocusLost"></el-tree>
        </el-popover>
        <el-input ref="searchTreeInput" v-model="searchTreeName" @input="searchInputTree"
          @focus="searchTreeShowFlag = true" @blur="searchTreeShowFlag = false" v-popover:popover placeholder="请输入搜索条件"
          style="cursor: pointer;"></el-input>
                    @focus="searchTreeShowFlag = true" @blur="searchTreeShowFlag = false" v-popover:popover
                    placeholder="请输入搜索条件" style="cursor: pointer;"></el-input>
      </div>
      <div v-show="contentShow" class="result-content" ref="resultContentBox">
        <el-main v-loading="villageInfoLoading" element-loading-background="rgba(0, 0, 0, 0.5)"
          element-loading-text="数据正在加载中" element-loading-spinner="el-icon-loading" style="overflow:hidden;padding:0px;">
                    element-loading-text="数据正在加载中" element-loading-spinner="el-icon-loading"
                    style="overflow:hidden;padding:0px;">
          <div class="housing-estate-info" ref="housingEstateInfoBox">
            <div class="housing-title">
              {{ villageInfo.name }}
              <div class="progress"></div>
            </div>
            <div class="housing-bg">
              <el-image fit="contain" :src="villageInfo.pic_url" :preview-src-list="villageInfo.pic_url_singleArr">
                            <el-image fit="contain" :src="villageInfo.pic_url"
                                :preview-src-list="villageInfo.pic_url_singleArr">
                <div slot="error" class="image-slot">暂无照片</div>
              </el-image>
              <el-empty :image-size="120" description="暂无照片"
@@ -51,7 +54,8 @@
              </div>
              <div>
                <div class="l">所属辖区:</div>
                <div class="r">{{ villageInfo.policeStationName ? villageInfo.policeStationName : '暂无数据' }}
                                <div class="r">{{ villageInfo.policeStationName ? villageInfo.policeStationName : '暂无数据'
                                }}
                </div>
              </div>
              <div>
@@ -125,18 +129,20 @@
                </div>
              </div>
              <div class="code">
                <el-image fit="contain" :src="villageInfo.codeUrl" :preview-src-list="[villageInfo.codeUrl]">
                                <el-image fit="contain" :src="villageInfo.codeUrl"
                                    :preview-src-list="[villageInfo.codeUrl]">
                  <div slot="error" class="image-slot"></div>
                </el-image>
              </div>
            </div>
            <!-- 点击展开 -->
            <div class="house-shrink-unfold-btn" @click="unfoldHouseBox('down')" v-show="!isShowHouseInfoBox"><i
                class="el-icon-arrow-down"></i>
                        <div class="house-shrink-unfold-btn" @click="unfoldHouseBox('down')"
                            v-show="!isShowHouseInfoBox"><i class="el-icon-arrow-down"></i>
            </div>
            <!-- 点击收缩 -->
            <div class="house-shrink-unfold-btn" @click="unfoldHouseBox('up')" v-show="isShowHouseInfoBox"><i
                class="el-icon-arrow-up"></i></div>
                        <div class="house-shrink-unfold-btn" @click="unfoldHouseBox('up')" v-show="isShowHouseInfoBox">
                            <i class="el-icon-arrow-up"></i>
                        </div>
          </div>
        </el-main>
@@ -156,22 +162,25 @@
          <div class="floor-content" v-show="subNavType == 1">
            <el-main v-loading="BuildListLoading" v-show="isShowBuildListBox"
              element-loading-background="rgba(0, 0, 0, 0.5)" element-loading-text="数据正在加载中"
              element-loading-spinner="el-icon-loading" style="overflow:hidden;padding:0px;" class="build-item">
                            element-loading-spinner="el-icon-loading" style="overflow:hidden;padding:0px;"
                            class="build-item">
              <div class="build-info" v-show="!BuildListLoading && buildingList.length">
                <div class="nextBtn" @click="lastBtn" v-show="lastBtnShow == true">
                  <i class="el-icon-caret-left"></i>
                </div>
                <div class="build-outBox" ref="BuildOutBox">
                  <div class="build-box" style="left: 0px;">
                    <div class="ridgepole-list" v-for="index of Math.ceil(buildingList.length / 10)" :key="index">
                      <div v-for="(item, index) in buildingList.slice((index - 1) * 10, index * 10)" :key="index"
                        @click="buildingClick(item)" :class="{ on: buildingChoosed.name == item.name }"
                        :title="item.name">
                                        <div class="ridgepole-list" v-for="index of Math.ceil(buildingList.length / 10)"
                                            :key="index">
                                            <div v-for="(item, index) in buildingList.slice((index - 1) * 10, index * 10)"
                                                :key="index" @click="buildingClick(item)"
                                                :class="{ on: buildingChoosed.name == item.name }" :title="item.name">
                        {{
                          item.name
                        }}
                        <div @click.stop title="显示/隐藏楼栋高亮">
                          <el-checkbox v-model="isBuildHighLightchecked" v-show="buildingChoosed.name == item.name"
                                                    <el-checkbox v-model="isBuildHighLightchecked"
                                                        v-show="buildingChoosed.name == item.name"
                            @change="changeBuildHighLightchecked"></el-checkbox>
                        </div>
                      </div>
@@ -262,8 +271,8 @@
                <div class="type">选择单元</div>
                <div class="type-select">
                  <el-select size="small" v-model="unitValue" placeholder="请选择" @change="chooseUnit">
                    <el-option v-for="item in unitOptions" :key="item.value" :label="item.label" :value="item.value"
                      class="unit-option"></el-option>
                                        <el-option v-for="item in unitOptions" :key="item.value" :label="item.label"
                                            :value="item.value" class="unit-option"></el-option>
                  </el-select>
                </div>
              </div>
@@ -288,7 +297,8 @@
                                </div>
                            </div> -->
              <el-main v-loading="pictLoading" element-loading-background="rgba(0, 0, 0, 0.5)"
                element-loading-text="数据正在加载中" element-loading-spinner="el-icon-loading" class="resident-box">
                                element-loading-text="数据正在加载中" element-loading-spinner="el-icon-loading"
                                class="resident-box">
                <div class="floor-outBox">
                  <div @click="lastFloorBtn" class="floorBtn" v-show="lastFloorShow">
                    <i class="el-icon-caret-left"></i>
@@ -315,11 +325,13 @@
                  </div>
                </div>
                <div class="floor-detail" v-show="!pictLoading && isHaveResidentData">
                  <div v-for="(item, index) in unitChoosedArr.slice((floorsType - 1) * 5, floorsType * 5)" :key="index">
                                    <div v-for="(item, index) in unitChoosedArr.slice((floorsType - 1) * 5, floorsType * 5)"
                                        :key="index">
                    <div class="title">{{ item.sname }}层:</div>
                    <div class="detail">
                      <div v-for="(value, index) in item.children_infos" :key="index"
                        @click="residentDetailsClick(value)" :class="{ on: floorChoosed == value.sname }">{{ value.sname
                                                @click="residentDetailsClick(value)"
                                                :class="{ on: floorChoosed == value.sname }">{{ value.sname
                        }}室
                        <div class="flow"
                          :class="[value.isBus == '1' ? 'red' : '', value.isBus == '2' ? 'grey' : '', value.isBus == '3' ? 'green' : '']">
@@ -338,24 +350,27 @@
            v-show="subNavType == 2">
            <el-table :data="comeOutData" style="width: 100%"
              :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
              :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }" :row-class-name="tableRowClassName"
              @row-click="deepDataRowClick($event, 'comeOut')" :empty-text="houseDeepNoDataText"
              v-loading="houseDeepLoading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading"
              element-loading-background="rgba(0, 0, 0, 0.5)">
              <el-table-column prop="name" label="名称" width="180" :show-overflow-tooltip="true"></el-table-column>
                            :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }"
                            :row-class-name="tableRowClassName" @row-click="deepDataRowClick($event, 'comeOut')"
                            :empty-text="houseDeepNoDataText" v-loading="houseDeepLoading" element-loading-text="拼命加载中"
                            element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.5)">
                            <el-table-column prop="name" label="名称" width="180"
                                :show-overflow-tooltip="true"></el-table-column>
              <el-table-column prop="x" label="经度" width="100"></el-table-column>
              <el-table-column prop="y" label="纬度" width="100"></el-table-column>
            </el-table>
          </div>
          <div class="park-content" :class="{ 'come-out-content-long': !isShowHouseInfoBox }" v-show="subNavType == 3">
                    <div class="park-content" :class="{ 'come-out-content-long': !isShowHouseInfoBox }"
                        v-show="subNavType == 3">
            <el-table :data="parkingLotData" style="width: 100%"
              :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
              :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }" :row-class-name="tableRowClassName"
              @row-click="deepDataRowClick($event, 'park')" :empty-text="houseDeepNoDataText"
              v-loading="houseDeepLoading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading"
              element-loading-background="rgba(0, 0, 0, 0.5)">
              <el-table-column prop="name" label="名称" width="180" :show-overflow-tooltip="true"></el-table-column>
                            :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }"
                            :row-class-name="tableRowClassName" @row-click="deepDataRowClick($event, 'park')"
                            :empty-text="houseDeepNoDataText" v-loading="houseDeepLoading" element-loading-text="拼命加载中"
                            element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.5)">
                            <el-table-column prop="name" label="名称" width="180"
                                :show-overflow-tooltip="true"></el-table-column>
              <el-table-column prop="x" label="经度" width="100"></el-table-column>
              <el-table-column prop="y" label="纬度" width="100"></el-table-column>
            </el-table>
@@ -365,12 +380,12 @@
            v-show="subNavType == 4">
            <el-table :data="businessData" style="width: 100%"
              :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
              :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }" :row-class-name="tableRowClassName"
              @row-click="deepDataRowClick($event, 'business')" @sort-change="sortDevName"
              :empty-text="houseDeepNoDataText" v-loading="houseDeepLoading" element-loading-text="拼命加载中"
              element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.5)"
              :show-overflow-tooltip="true" @cell-mouse-enter="businessMouseEnter"
              @cell-mouse-leave="businessMouseLeave">
                            :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }"
                            :row-class-name="tableRowClassName" @row-click="deepDataRowClick($event, 'business')"
                            @sort-change="sortDevName" :empty-text="houseDeepNoDataText" v-loading="houseDeepLoading"
                            element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading"
                            element-loading-background="rgba(0, 0, 0, 0.5)" :show-overflow-tooltip="true"
                            @cell-mouse-enter="businessMouseEnter" @cell-mouse-leave="businessMouseLeave">
              <el-table-column sortable="custom" prop="placeName" label="场所名称"
                :show-overflow-tooltip="true"></el-table-column>
              <el-table-column prop="labelName" label="场所类型"></el-table-column>
@@ -379,15 +394,16 @@
        </div>
        <div class="police-info" v-if="navType == 1" ref="policeTableBox">
          <el-main v-loading="policeInfoLoading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading"
            element-loading-background="rgba(0, 0, 0, 0.5)">
                    <el-main v-loading="policeInfoLoading" element-loading-text="拼命加载中"
                        element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.5)">
            <div class="select-type">
              <el-date-picker :clearable="false" v-model="eventTime" type="daterange" align="right" unlink-panels
                range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" @change="caseTimeChange"
                :picker-options="pickerOptions"></el-date-picker>
              <el-select v-model="typeValue" @change="changeJQType" placeholder="请选择" class="type-select-css">
                <el-option v-for="item in policeInforOptions" :key="item.value" :label="item.label" :value="item.value"
                  class="option-css"></el-option>
                            <el-date-picker :clearable="false" v-model="eventTime" type="daterange" align="right"
                                unlink-panels range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
                                @change="caseTimeChange" :picker-options="pickerOptions"></el-date-picker>
                            <el-select v-model="typeValue" @change="changeJQType" placeholder="请选择"
                                class="type-select-css">
                                <el-option v-for="item in policeInforOptions" :key="item.value" :label="item.label"
                                    :value="item.value" class="option-css"></el-option>
              </el-select>
            </div>
            <div class="jq-tab">
@@ -397,25 +413,29 @@
            <div v-show="jqType == 0">
              <el-table :data="callPoliceData" style="width: 100%" :height="currentTableHeight"
                :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
                :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }" :row-class-name="tableRowClassName"
                :empty-text="jqNoDataText" class="police-infor-table" @cell-click="housingPoliceSiteClick">
                                :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75' }"
                                :row-class-name="tableRowClassName" :empty-text="jqNoDataText"
                                class="police-infor-table" @cell-click="housingPoliceSiteClick">
                <el-table-column prop="JJDWMC" :show-overflow-tooltip="true" label="接警单位"
                  min-width="80%"></el-table-column>
                <el-table-column label="报警时间" prop="BJSJ" min-width="50%"></el-table-column>
                <el-table-column prop="jqlxName" :show-overflow-tooltip="true" label="报警类型"></el-table-column>
                                <el-table-column prop="jqlxName" :show-overflow-tooltip="true"
                                    label="报警类型"></el-table-column>
                <el-table-column label="操作" align="center" min-width="36%">
                  <template slot-scope="scope">
                    <el-button v-if="!whetherPosition(scope.row)" @click="clickData(scope.row)" type="text" size="small"
                      title="定位">
                      <i class="el-icon-location" :style="{ color: positionColor(scope.row) }"></i>
                                        <el-button v-if="!whetherPosition(scope.row)" @click="clickData(scope.row)"
                                            type="text" size="small" title="定位">
                                            <i class="el-icon-location"
                                                :style="{ color: positionColor(scope.row) }"></i>
                    </el-button>
                  </template>
                </el-table-column>
              </el-table>
              <div class="pages all-pagination-sty" ref="ElPagination">
                <el-pagination background layout="prev, pager, next" :page-size="callPolicePage.pageSize"
                  :page-count="callPolicePage.count" :current-page="callPolicePage.currentPage"
                                <el-pagination background layout="prev, pager, next"
                                    :page-size="callPolicePage.pageSize" :page-count="callPolicePage.count"
                                    :current-page="callPolicePage.currentPage"
                  @current-change="handleCurrentChange"></el-pagination>
              </div>
            </div>
@@ -460,7 +480,8 @@
    <map-search-box></map-search-box>
    <el-dialog title="报警信息" :visible.sync="policeSituationVisible" :modal-append-to-body="false" :modal="true"
      :close-on-click-modal="false" :before-close="policeSituationBeforeClose" class="policeSituation-details-box">
            :close-on-click-modal="false" :before-close="policeSituationBeforeClose"
            class="policeSituation-details-box">
      <div class="box">
        <div class="item">
          <div>接警单位编号:</div>
@@ -534,14 +555,16 @@
      <div class="table-box">
        <div class="type-tab-box">
          <div v-for="(item, index) in menuList" :key="index">
            <div v-if="item.isHover" class="tab-item" :class="{ 'tab-choose-item': hushiPeoTy == item.value }"
                        <div v-if="item.isHover" class="tab-item"
                            :class="{ 'tab-choose-item': hushiPeoTy == item.value }"
              @click="hushiPeoTyClick(item.value)">
              {{ item.label }}</div>
          </div>
        </div>
        <div v-if="hushiPeoTy == 5" class="pay-info-box">
          <employees :residentIdSave="residentIdSave" :residentDetailsType="residentDetailsType" ref="employees">
                    <employees :residentIdSave="residentIdSave" :residentDetailsType="residentDetailsType"
                        ref="employees">
          </employees>
        </div>
@@ -551,7 +574,8 @@
        </div>
        <div v-if="hushiPeoTy == 7" class="pay-info-box">
          <antiFraud :residentIdSave="residentIdSave" :residentDetailsType="residentDetailsType" ref="antiFraud">
                    <antiFraud :residentIdSave="residentIdSave" :residentDetailsType="residentDetailsType"
                        ref="antiFraud">
          </antiFraud>
        </div>
@@ -562,7 +586,8 @@
        </div>
        <div v-if="hushiPeoTy == 10" class="pay-info-box">
          <rentalHouse :residentIdSave="residentIdSave" :residentDetailsType="residentDetailsType" ref="rentalHouse">
                    <rentalHouse :residentIdSave="residentIdSave" :residentDetailsType="residentDetailsType"
                        ref="rentalHouse">
          </rentalHouse>
        </div>
@@ -574,6 +599,18 @@
        <div v-if="hushiPeoTy == 11" class="pay-info-box">
          <nineSmallPlaces :residentIdSave="residentIdSave" :residentDetailsType="residentDetailsType"
            ref="nineSmallPlaces"></nineSmallPlaces>
                </div>
                <div v-if="hushiPeoTy == 13" class="pay-info-box">
                    <maintain :residentIdSave="residentIdSave" :residentDetailsType="residentDetailsType"
                        ref="maintain">
                    </maintain>
                </div>
                <div v-if="hushiPeoTy == 14" class="pay-info-box">
                    <useWater :residentIdSave="residentIdSave" :residentDetailsType="residentDetailsType"
                        ref="useWater">
                    </useWater>
        </div>
        <el-table :data="houseDate"
@@ -859,6 +896,9 @@
import rentalHouse from "./components/rentalHouse"
import nineSmallPlaces from "./components/nineSmallPlaces"
import noFraudAuthentication from "./components/noFraudAuthentication"
import useWater from "./components/useWater"
import maintain from "./components/maintain"
let wallLayer = null
@@ -872,7 +912,9 @@
    scanCodeAlarm,
    rentalHouse,
    nineSmallPlaces,
    noFraudAuthentication
        noFraudAuthentication,
        useWater,
        maintain
  },
  data () {
@@ -1148,6 +1190,16 @@
          value: 12,
          isHover: true,
        },
                {
                    label: "维修基金",
                    value: 13,
                    isHover: true,
                },
                {
                    label: "用水数据",
                    value: 14,
                    isHover: true,
                },
        // {
        //     label: "校园安全",
        //     value: 13,
src/views/layout/index.vue
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2022-08-18 16:18:24
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2025-02-20 17:46:48
 * @LastEditTime: 2026-01-05 22:36:50
 * @FilePath: \srs-police-affairs\src\views\layout\index.vue
 * @Description: 
 * 
@@ -17,7 +17,8 @@
          <span :class="{ on: showChange(item) }">{{ item.menuName }}</span>
          <div class="sub-nav-list" v-show="item.children && item.childrenFlag">
            <div v-for="(subItem, subIndex) in item.children" :key="subIndex" @click.stop="goToPath(subItem)">
                        <div v-for="(subItem, subIndex) in item.children" :key="subIndex"
                            @click.stop="goToPath(subItem)">
              {{
                subItem.menuName
              }}
@@ -40,8 +41,9 @@
          </span>
          <div class="sub-nav-list" v-show="item.children && item.childrenFlag">
            <div :class="{ on: currentUrl.indexOf(subItem.path) != -1 }" v-for="(subItem, subIndex) in item.children"
              :key="subIndex" @click.stop="goToPath(subItem, 4)">
                        <div :class="{ on: currentUrl.indexOf(subItem.path) != -1 }"
                            v-for="(subItem, subIndex) in item.children" :key="subIndex"
                            @click.stop="goToPath(subItem, 4)">
              {{
                subItem.menuName
              }}
@@ -63,7 +65,8 @@
              <i class="el-icon-user-back"></i>
              运维管理
            </div>
            <div class="back-system" :style="{ color: currentUrl == '/layout/available' ? '#fcbd56' : '#fff' }"
                        <div class="back-system"
                            :style="{ color: currentUrl == '/layout/available' ? '#fcbd56' : '#fff' }"
              @click="goToPage('/layout/available')">
              <i class="el-icon-s-grid"></i>
              可用资源
@@ -124,8 +127,9 @@
          :icon="show ? 'el-icon-arrow-left' : 'el-icon-arrow-right'" id="FlexibleBtn" type="primary"
          @click="flexibelClick"></el-button>
        <div slot="resetPopup">
          <el-dialog title="修改密码" :visible.sync="resetPsdPopupShow" :modal="true" :before-close="resetBeforeClose"
            :modal-append-to-body="false" :close-on-click-modal="false" class="reset-popup-box">
                    <el-dialog title="修改密码" :visible.sync="resetPsdPopupShow" :modal="true"
                        :before-close="resetBeforeClose" :modal-append-to-body="false" :close-on-click-modal="false"
                        class="reset-popup-box">
            <div class="reset-popup-body">
              <el-form ref="form" :rules="rules" :model="form" label-width="80px">
                <el-form-item label="原密码" prop="oldPassword">
@@ -809,7 +813,7 @@
  top: 50%;
  left: 0px;
  // z-index: 11;
  z-index: 99;
    z-index: 89;
  width: 32px;
  height: 64px;
  color: #fff;