Lou
2024-03-16 0df15fb4eafccde45b09caa213dd12d449397298
更新
11 files modified
3 files added
1565 ■■■■ changed files
api/house/householdLabel.js 9 ●●●●● patch | view | raw | blame | history
components/index/header.vue 39 ●●●●● patch | view | raw | blame | history
pages.json 15 ●●●●● patch | view | raw | blame | history
pages/home/index.scss 212 ●●●●● patch | view | raw | blame | history
pages/home/index.vue 356 ●●●● patch | view | raw | blame | history
pages/statistics/index.vue 458 ●●●●● patch | view | raw | blame | history
subPackage/house/family/index.vue 51 ●●●● patch | view | raw | blame | history
subPackage/house/member/add.vue 120 ●●●●● patch | view | raw | blame | history
subPackage/house/roomControl/index.vue 101 ●●●● patch | view | raw | blame | history
subPackage/task/index.vue 32 ●●●● patch | view | raw | blame | history
subPackage/workbench/components/formItem.vue 37 ●●●● patch | view | raw | blame | history
subPackage/workbench/views/audit.vue 2 ●●● patch | view | raw | blame | history
subPackage/workbench/views/cscj.vue 121 ●●●●● patch | view | raw | blame | history
subPackage/workbench/views/editCscj.vue 12 ●●●●● patch | view | raw | blame | history
api/house/householdLabel.js
@@ -18,4 +18,13 @@
        method: 'POST',
        data
    })
}
//设置房屋标签
export const setHouseLabel = (data) => {
    return http.request({
        url: 'blade-householdLabel/householdLabel/saveOrUpdateHouseLabel',
        method: 'POST',
        data
    })
}
components/index/header.vue
New file
@@ -0,0 +1,39 @@
<template>
    <view class="">
        <u-navbar height="48" :autoBack="false" safeAreaInsetTop placeholder @leftClick="navToSelectSite()"
            bgColor="#017BFC">
            <view slot="left" class="top flex">
                <view class="top-text f-30 fw c-ff">{{curSelectSite.name?curSelectSite.name:'暂无绑定' +roleTypeName+'信息'}}
                </view>
                <u-icon name="arrow-right" color="#fff"></u-icon>
            </view>
        </u-navbar>
        <view class="swiper">
            <u-swiper :list="bannerList" height="320rpx" radius="10"></u-swiper>
        </view>
    </view>
</template>
<script>
    export default {
        name: "header",
        props: {
            banner: {
                type: Array,
                value: []
            },
        }
        data: {
            bgColor: {
            }
        },
    }
</script>
<style>
</style>
pages.json
@@ -12,6 +12,15 @@
                "navigationStyle": "custom"
            }
        },
        {
            "path": "pages/statistics/index",
            "style": {
                "navigationBarTitleText": "驾驶舱",
                "enablePullDownRefresh": false
            }
        },
        {
            "path": "pages/user/center",
            "style": {
@@ -940,6 +949,12 @@
            //     "text": "圈子"
            // },
            {
                "pagePath": "pages/statistics/index",
                "iconPath": "static/img/tabbar-02.png",
                "selectedIconPath": "static/img/tabbar-02-selected.png",
                "text": "驾驶舱"
            },
            {
                "pagePath": "pages/user/center",
                "iconPath": "static/img/tabbar-03.png",
                "selectedIconPath": "static/img/tabbar-03-selected.png",
pages/home/index.scss
New file
@@ -0,0 +1,212 @@
page {
        color: #333;
        width: 100%;
        height: 100%;
        background-color: #f5f5f5;
    }
    .layout {
        width: 100%;
        height: 100%;
    }
    .top {
        width: 530rpx;
        .top-text {
            max-width: 85%;
            margin-right: 20rpx;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
    }
    .swiper {
        width: 100%;
        height: 340rpx;
        background: linear-gradient(180deg, #017BFC 0%, rgba(1, 123, 252, 0) 100%);
        padding: 0 30rpx;
        box-sizing: border-box;
    }
    .content {
        padding: 0 30rpx;
    }
    // .grid {
    //     margin-top: 20rpx;
    //     margin-bottom: 10rpx;
    // }
    .nav {
        padding: 10rpx 0;
        margin-bottom: 20rpx;
        border-radius: 0 0 10rpx 10rpx;
        .nav-item {
            padding: 10rpx 0;
        }
        .nav-item-text {
            font-family: PingFang SC;
            font-weight: 500;
            color: #585b61;
        }
    }
    .section {
        .section-item {
            width: 216rpx;
            height: 120rpx;
            position: relative;
        }
        .section-item-bg {
            width: 216rpx;
            height: 120rpx;
        }
        .item-box {
            width: 216rpx;
            height: 120rpx;
            position: absolute;
            top: 0;
            left: 0;
            padding: 20rpx 20rpx 0;
            box-sizing: border-box;
        }
    }
    .block {
        .block-item {
            position: relative;
        }
        .block-item,
        .block-item-bg,
        .block-item-box {
            width: 220rpx;
            height: 150rpx;
            border-radius: 10rpx;
        }
        .block-item-box {
            padding: 0 12rpx;
            box-sizing: border-box;
            position: absolute;
            top: 0;
            left: 0;
        }
        .badge{
            position:absolute;
            top:10rpx;
            right:20rpx
        }
        .item-text {
            height: 65rpx;
            margin-left: 20rpx;
            color: #fff;
        }
        .opacity {
            opacity: .6;
        }
    }
    .cell {
        padding: 0 16rpx;
        height: 64rpx;
        border-radius: 8rpx;
        margin-right: 20rpx;
        margin-top: 30rpx;
        .cell-text {
            margin-left: 16rpx;
        }
    }
    .grid-item {
        width: 153rpx;
        height: 153rpx;
        border-radius: 16rpx 16rpx 16rpx 16rpx;
        justify-content: center;
    }
    .row {
        width: 100%;
        margin: 30rpx 0;
        .row-item {
            width: 330rpx;
            height: 134rpx;
            box-shadow: 0rpx 10rpx 10rpx 0rpx rgba(0, 0, 0, 0.02);
            border-radius: 16rpx 16rpx 16rpx 16rpx;
        }
    }
    .p-20 {
        padding:20rpx;
        border-radius: 10rpx;
    }
    .pb-20 {
        padding-bottom: 20rpx;
    }
    .tabs {
        border-radius: 10rpx 10rpx 0 0;
        // margin-bottom: 4rpx;
        background-color: rgb(236, 244, 255);
        .tabs-item {
            // padding: 12rpx 24rpx;
            flex: 1;
            text-align: center;
            padding: 20rpx 0;
        }
        .tabs-active {
            border-radius: 10rpx 10rpx 0 0;
            // background-color: rgb(236, 244, 255);
            // color: #017BFC;
            // color: rgb(236, 244, 255);
            // background-color: #017BFC;
            background-color: #fff;
            font-weight: bold;
        }
    }
    .menu-tabs {
        padding: 20rpx 0;
    }
    .menu {
        border-radius: 0 0 10rpx 10rpx;
    }
    /deep/.u-cell__title-text {
        font-size: 32rpx;
        font-weight: bold;
        color: #000;
        position: relative;
    }
    /deep/.u-cell__title-text::before{
        content: '';
        width: 6rpx;
        height: 28rpx;
        background-color: #017BFC;
        // margin-right: 14rpx;
        position:absolute;
        left:-20rpx;
        top:6rpx;
        display: inline-block;
    }
pages/home/index.vue
@@ -1,14 +1,5 @@
<template>
    <view class="layout">
        <!-- <u-navbar height="48" :autoBack="false" safeAreaInsetTop placeholder @leftClick="selectBoxShow = !selectBoxShow"
            bgColor="#017BFC">
            <view slot="left" class="top flex">
                <view class="top-text f-30 fw c-ff">{{curSelectSite.name?curSelectSite.name:'暂无绑定' +roleTypeName+'信息'}}
                </view>
                <u-icon name="arrow-down" color="#fff"></u-icon>
            </view>
        </u-navbar> -->
        <u-navbar height="48" :autoBack="false" safeAreaInsetTop placeholder @leftClick="navToSelectSite()"
            bgColor="#017BFC">
            <view slot="left" class="top flex">
@@ -17,7 +8,6 @@
                <u-icon name="arrow-right" color="#fff"></u-icon>
            </view>
        </u-navbar>
        <view class="swiper">
            <u-swiper :list="bannerList" height="320rpx" radius="10"></u-swiper>
        </view>
@@ -41,33 +31,49 @@
                    <view @click="scan" class="block-item">
                        <image class="block-item-bg" src="/static/icon/nav-bg-04.png" mode="aspectFill" />
                        <view class="block-item-box flex a-i-c ">
                            <u-icon name="/static/icon/nav-05.png" width="65rpx" height="65rpx"></u-icon>
                            <u-icon name="/static/icon/nav-05.png" width="68rpx" height="68rpx"></u-icon>
                            <view class="item-text flex f-d-c j-c-s-b">
                                <text class="f-24 fw">扫一扫</text>
                                <text class="f-22 opacity">场所采集</text>
                                <text class="f-26 fw">扫一扫</text>
                                <text class="f-24 opacity">场所采集</text>
                            </view>
                        </view>
                    </view>
                    <view class="block-item" @click="navigatorPage('/subPackage/user/clockIn/index')">
                        <image class="block-item-bg" src="/static/icon/nav-bg-05.png" mode="aspectFill" />
                        <view class="block-item-box flex a-i-c">
                            <u-icon name="/static/icon/nav-06.png" width="65rpx" height="65rpx"></u-icon>
                            <u-icon name="/static/icon/nav-06.png" width="68rpx" height="68rpx"></u-icon>
                            <view class="item-text flex f-d-c j-c-s-b">
                                <text class="f-24 fw">打卡登记</text>
                                <text class="f-22 opacity">在线打卡</text>
                                <text class="f-26 fw">打卡登记</text>
                                <text class="f-24 opacity">在线打卡</text>
                            </view>
                        </view>
                    </view>
                    <view class="block-item" @click="navigatorPage('/subPackage/statistics/index')">
                    <view class="block-item" @click="navigatorPage('/subPackage/statistics/index')"
                        v-if="roleType == 1">
                        <image class="block-item-bg" src="/static/icon/nav-bg-04.png" mode="aspectFill" />
                        <view class="block-item-box flex a-i-c">
                            <u-icon name="/static/icon/nav-12.png" width="65rpx" height="65rpx"></u-icon>
                            <u-icon name="/static/icon/nav-12.png" width="68rpx" height="68rpx"></u-icon>
                            <view class="item-text flex f-d-c j-c-s-b">
                                <text class="f-24 fw">驾驶舱</text>
                                <text class="f-22 opacity">数据统计</text>
                                <text class="f-26 fw">驾驶舱</text>
                                <text class="f-24 opacity">数据统计</text>
                            </view>
                        </view>
                    </view>
                    <view class="block-item" @click="navigatorPage('/subPackage/task/index')" v-if="roleType == 3">
                        <image class="block-item-bg" src="/static/icon/nav-bg-04.png" mode="aspectFill" />
                        <view class="block-item-box flex a-i-c">
                            <u-icon name="/static/icon/nav-12.png" width="68rpx" height="68rpx"></u-icon>
                            <view class="item-text flex f-d-c j-c-s-b">
                                <text class="f-26 fw">待办事项</text>
                                <text class="f-24 opacity">我的任务</text>
                            </view>
                            <view class="badge" v-if="taskCount > 0">
                                <u-badge type="error" max="99" :value="taskCount"></u-badge>
                            </view>
                        </view>
                    </view>
                </view>
                <!-- <view class="nav bgc-ff" v-if="liveList.length || roleType == 2">
@@ -92,29 +98,15 @@
                </view> -->
                <view class="" v-if="roleType == 2 &&  curSelectSite.addressType == 1">
                    <view class="tabs flex">
                        <!-- <u-tabs :list="tabs"  @click="changeTabs" :current="tabIndex" lineColor="#ecf4ff" :activeStyle="{
                                    color: '#017BFC',
                                    fontWeight: 'bold',
                                    backgroundColor:'#ecf4ff',
                                    borderRadius:'14rpx',
                                    padding:'14rpx 28rpx',
                                    transition:'background .2s'
                                }" :itemStyle="{fontSize:'28rpx'}"></u-tabs> -->
                        <view class="tabs-item" :class="k == tabIndex?'tabs-active':''" v-for="(i,k) in tabs"
                            @click="changeTabs(k)">
                            {{i.name}}
                        </view>
                    </view>
                    <view class="nav bgc-ff">
                        <u-grid :border="false" col="4">
                            <u-grid-item @click="navigatorPage(i.path)" v-for="(i,k) in tabs[tabIndex].list" :key="k">
                                <view class="nav-item flex f-d-c a-i-c">
@@ -126,16 +118,12 @@
                    </view>
                </view>
                <view v-if="roleType == 2 && curSelectSite.addressType == 2">
                    <view class="tabs flex">
                        <view class="tabs-item" :class="k == tabIndex?'tabs-active':''" v-for="(i,k) in tabs2"
                            @click="changeTabs(k)">
                            {{i.name}}
                        </view>
                    </view>
                    <view class="nav bgc-ff">
                        <u-grid :border="false" col="4">
@@ -145,7 +133,6 @@
                                    <text class="nav-item-text f-26  mt-10">{{i.text}}</text>
                                </view>
                            </u-grid-item>
                            <block v-if="tabIndex == 1">
                                <u-grid-item @click="navigatorPage('/subPackage/label/form')"
                                    v-if="curSelectSite.isFront == 1">
@@ -178,41 +165,27 @@
            </view>
            <view class="bgc-ff p-20 mb-20 pb-20" v-if="isShowHouse">
                <caption-row title="楼盘表" />
                <view class="flex flex-wrap">
                    <view class="cell bgc-main flex a-i-c" v-for="(item, index) in houseDataList.slice(0, 6)"
                        @click.native="pushPage(item)" :key="index">
                        <u-icon name="/static/icon/floor.png" width="32rpx" height="32rpx"></u-icon>
                        <text class="cell-text f-26 c-ff">{{item.title}}</text>
                    </view>
                </view>
            <view class="bgc-ff p-20 mb-20" v-if="isShowHouse">
                <u-collapse accordion :border="false">
                    <u-collapse-item name="1" title="楼盘表"></uni-title>
                        <view class="flex flex-wrap">
                            <view class="cell bgc-main flex a-i-c" v-for="(item, index) in houseDataList.slice(0, 6)"
                                @click.native="pushPage(item)" :key="index">
                                <u-icon name="/static/icon/floor.png" width="32rpx" height="32rpx"></u-icon>
                                <text class="cell-text f-26 c-ff">{{item.title}}</text>
                            </view>
                        </view>
                    </u-collapse-item>
                </u-collapse>
            </view>
            <view class=" mb-20 " v-if="sectionList.length">
                <!-- <view class="menu-tabs">
                    <u-tabs :list="sectionList" @click="changeMenuTabs" :current="menuTabIndex" lineColor="#ecf4ff"
                        :activeStyle="{
                                 color: '#017BFC',
                                 fontWeight: 'bold',
                                 backgroundColor:'#ecf4ff',
                                 borderRadius:'14rpx',
                                 padding:'14rpx 28rpx',
                                 transition:'background .2s'
                             }" :itemStyle="{fontSize:'28rpx'}" :scrollable="false"></u-tabs>
                </view> -->
                <view class="tabs flex">
                    <view class="tabs-item" :class="k == menuTabIndex?'tabs-active':''" v-for="(i,k) in sectionList"
                        @click="changeMenuTabs(k)">
                        {{i.name}}
                    </view>
                </view>
                <view class="menu bgc-ff p-20 pb-20">
                    <u-grid :border="false" col="4">
                        <u-grid-item @click="navigatorPage(item.path)"
@@ -225,11 +198,7 @@
                        </u-grid-item>
                    </u-grid>
                </view>
            </view>
            <!-- <view class="bgc-ff mb-20 p-20 pb-20" v-if="jobList.length">
@@ -302,7 +271,9 @@
    import {
        getPublicSecurityDetail
    } from "@/api/grid/grid.js"
    import {
        getCountTypeNumber
    } from "@/api/task/task.js"
    export default {
        components: {
            noticeList,
@@ -515,7 +486,8 @@
                tabIndex: 0,
                isBailer: false, //是否取保候审人员
                sectionList: [],
                menuTabIndex: 0
                menuTabIndex: 0,
                taskCount: 0
            }
        },
@@ -612,6 +584,23 @@
        methods: {
            //获取待办事项数量
            getTaskCount() {
                if (uni.getStorageSync('activeRole').roleAlias === 'wgy') {
                    roleType = 1
                }
                getCountTypeNumber({
                    neiCode: this.curSelectSite.id,
                    roleType: this.selectRole.roleName == "网格员" ? 1 : 0
                }).then(res => {
                    console.log(res);
                    let data = res.data;
                    let count = 0;
                    count += Number(data.bqsj) + Number(data.xfzc) + Number(data.xfyhzg) + Number(data.qbhs);
                    this.taskCount = count
                })
            },
            changeTabs(e) {
                // console.log(item);
@@ -632,6 +621,7 @@
                this.getBanner();
                this.getSiteList()
                this.getNoticeList()
                this.getTaskCount();
            },
            getBanner() {
@@ -728,7 +718,6 @@
            buildSiteColumn(dataList, index) {
                if (dataList.length > 0) {
                    this.siteColumns[index] = dataList
                    if (dataList[0].children && dataList[0].children.length > 0) {
                        this.curSelectSite = dataList[0].children[0];
@@ -741,7 +730,6 @@
                    uni.setStorageSync("curHouseCode", this.curSelectSite.id)
                }
            },
            // 获取楼盘
            async getHouseDataList(code) {
@@ -789,6 +777,7 @@
                this.curHouseCode = e.value[0].id
                console.log("curSite=>", this.curSelectSite);
            },
            getMenu(menuName) {
                let list = [];
                for (let i of this.menuList) {
@@ -808,6 +797,7 @@
                this.liveList = this.setLiveMenu(this.hasMenu('生活'));
                this.jobList = this.hasMenu('工作台')
                this.sectionList = this.hasMenu('首页菜单')
                let taskMenuList = this.hasMenu('待办事项菜单')
                if (this.menuList.length) {
                    this.getContactMenu();
                    this.getHouseMenu();
@@ -824,19 +814,35 @@
                    // } else {
                    //     uni.setStorageSync("taskMenu", []);
                    // }
                    if (this.sectionList.length) {
                        let list = this.sectionList.filter(item => item.name == "日常办公");
                        let taskList = list[0].children.filter(item => item.name == "待办事项");
                        console.log("taskList===>", taskList)
                        if (taskList.length) {
                            uni.setStorageSync("taskMenu", taskList[0].children);
                    if (this.roleType == 1) {
                        if (this.sectionList.length) {
                            let list = this.sectionList.filter(item => item.name == "日常办公");
                            let taskList = list[0].children.filter(item => item.name == "待办事项");
                            console.log("taskList===>", taskList)
                            if (taskList.length) {
                                uni.setStorageSync("taskMenu", taskList[0].children);
                            } else {
                                uni.setStorageSync("taskMenu", []);
                            }
                        } else {
                            uni.setStorageSync("taskMenu", []);
                        }
                    } else {
                        uni.setStorageSync("taskMenu", []);
                    }
                    if (this.roleType == 3) {
                        console.log("taskMenuList==>", taskMenuList);
                        if (taskMenuList.length) {
                            uni.setStorageSync("taskMenu", taskMenuList);
                        } else {
                            uni.setStorageSync("taskMenu", []);
                        }
                    }
                }, 200)
            },
            getContactMenu() {
@@ -1109,191 +1115,5 @@
</script>
<style lang="scss">
    page {
        color: #333;
        width: 100%;
        height: 100%;
        background-color: #f5f5f5;
    }
    .layout {
        width: 100%;
        height: 100%;
    }
    .top {
        width: 530rpx;
        .top-text {
            max-width: 85%;
            margin-right: 20rpx;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
    }
    .swiper {
        width: 100%;
        height: 340rpx;
        background: linear-gradient(180deg, #017BFC 0%, rgba(1, 123, 252, 0) 100%);
        padding: 0 30rpx;
        box-sizing: border-box;
    }
    .content {
        padding: 0 30rpx;
    }
    // .grid {
    //     margin-top: 20rpx;
    //     margin-bottom: 10rpx;
    // }
    .nav {
        padding: 10rpx 0;
        margin-bottom: 20rpx;
        border-radius: 0 0 10rpx 10rpx;
        .nav-item {
            padding: 10rpx 0;
        }
        .nav-item-text {
            font-family: PingFang SC;
            font-weight: 500;
            color: #585b61;
        }
    }
    .section {
        .section-item {
            width: 216rpx;
            height: 120rpx;
            position: relative;
        }
        .section-item-bg {
            width: 216rpx;
            height: 120rpx;
        }
        .item-box {
            width: 216rpx;
            height: 120rpx;
            position: absolute;
            top: 0;
            left: 0;
            padding: 20rpx 20rpx 0;
            box-sizing: border-box;
        }
    }
    .block {
        .block-item {
            position: relative;
        }
        .block-item,
        .block-item-bg,
        .block-item-box {
            width: 220rpx;
            height: 150rpx;
            border-radius: 10rpx;
        }
        .block-item-box {
            padding: 0 12rpx;
            box-sizing: border-box;
            position: absolute;
            top: 0;
            left: 0;
        }
        .item-text {
            height: 65rpx;
            margin-left: 20rpx;
            color: #fff;
        }
        .opacity {
            opacity: .4;
        }
    }
    .cell {
        padding: 0 16rpx;
        height: 64rpx;
        border-radius: 8rpx;
        margin-right: 20rpx;
        margin-top: 30rpx;
        .cell-text {
            margin-left: 16rpx;
        }
    }
    .grid-item {
        width: 153rpx;
        height: 153rpx;
        border-radius: 16rpx 16rpx 16rpx 16rpx;
        justify-content: center;
    }
    .row {
        width: 100%;
        margin: 30rpx 0;
        .row-item {
            width: 330rpx;
            height: 134rpx;
            box-shadow: 0rpx 10rpx 10rpx 0rpx rgba(0, 0, 0, 0.02);
            border-radius: 16rpx 16rpx 16rpx 16rpx;
        }
    }
    .p-20 {
        padding: 0 20rpx;
        border-radius: 10rpx;
    }
    .pb-20 {
        padding-bottom: 20rpx;
    }
    .tabs {
        border-radius: 10rpx 10rpx 0 0;
        // margin-bottom: 4rpx;
        background-color: rgb(236, 244, 255);
        .tabs-item {
            // padding: 12rpx 24rpx;
            flex: 1;
            text-align: center;
            padding: 20rpx 0;
        }
        .tabs-active {
            border-radius: 10rpx 10rpx 0 0;
            // background-color: rgb(236, 244, 255);
            // color: #017BFC;
            // color: rgb(236, 244, 255);
            // background-color: #017BFC;
            background-color: #fff;
            font-weight: bold;
        }
    }
    .menu-tabs {
        padding: 20rpx 0;
    }
    .menu {
        border-radius: 0 0 10rpx 10rpx;
    }
    @import "./index.scss";
</style>
pages/statistics/index.vue
New file
@@ -0,0 +1,458 @@
<template>
    <view class="container">
        <view class="section">
            <caption-row title="社区概况"></caption-row>
            <view class="cell flex j-c-s-b flex-wrap ">
                <view class="cell-item">
                    <text class="f-28 mb-20 c-99">楼栋数(幢)</text>
                    <text class="f-30 fw">{{houseData.result1}}</text>
                    <image class="cell-item-icon" src="/static/icon/statistics-nav-01.png" mode="aspectFill"></image>
                </view>
                <view class="cell-item">
                    <text class="f-28 mb-20 c-99">房屋数(套)</text>
                    <text class="f-30 fw">{{houseData.result2}}</text>
                    <image class="cell-item-icon" src="/static/icon/statistics-nav-02.png" mode="aspectFill"></image>
                </view>
                <view class="cell-item">
                    <text class="f-28 mb-20 c-99">住户数(人)</text>
                    <text class="f-30 fw">{{houseData.result3}}</text>
                    <image class="cell-item-icon" src="/static/icon/statistics-nav-03.png" mode="aspectFill"></image>
                </view>
                <view class="cell-item">
                    <text class="f-28 mb-20 c-99">单元数</text>
                    <text class="f-30 fw">{{houseData.result4}}</text>
                    <image class="cell-item-icon" src="/static/icon/statistics-nav-01.png" mode="aspectFill"></image>
                </view>
            </view>
        </view>
        <view class="">
            <caption-row title="共治力量"></caption-row>
            <view class="menu bgc-ff flex flex-wrap">
                <view class="menu-item flex f-d-c a-i-c">
                    <text class="c-main f-32 fw mb-20">0</text>
                    <text class="f-28">党员</text>
                </view>
                <view class="menu-item flex f-d-c a-i-c">
                    <text class="c-main f-32 fw mb-20">0</text>
                    <text class="f-28">党组织</text>
                </view>
                <view class="menu-item flex f-d-c a-i-c">
                    <text class="c-main f-32 fw mb-20">{{gridData.gridStatistics}}</text>
                    <text class="f-28">网格员</text>
                </view>
                <!--     <view class="menu-item flex f-d-c a-i-c">
                    <text class="c-main f-32 fw mb-20">0</text>
                    <text class="f-28">社工</text>
                </view> -->
                <view class="menu-item flex f-d-c a-i-c">
                    <text class="c-main f-32 fw mb-20">{{gridData.companyStatistics}}</text>
                    <text class="f-28">物业人员</text>
                </view>
                <view class="menu-item flex f-d-c a-i-c">
                    <text class="c-main f-32 fw mb-20">{{gridData.ownersStatistics}}</text>
                    <text class="f-28">业委会</text>
                </view>
                <!-- <view class="menu-item flex f-d-c a-i-c">
                    <text class="c-main f-32 fw mb-20">0</text>
                    <text class="f-28">群团组织</text>
                </view> -->
            </view>
        </view>
        <view class="">
            <caption-row title="人员画像"></caption-row>
            <view class="bar-charts bgc-ff">
                <qiun-data-charts type="bar" :opts="opts" :chartData="chartData" />
            </view>
            <view class="pie-charts flex bgc-ff">
                <view class="pie-charts-box flex j-c-c a-i-c">
                    <qiun-data-charts type="pie" :opts="pieOpts" :chartData="sexChartData" />
                </view>
                <view class="pie-charts-explain flex f-d-c j-c-c" v-if="sexData.length">
                    <view class="f-32 fw mb-20">性别</view>
                    <view class="flex a-i-c mb-20" v-for="i in sexData">
                        <text class="f-30 fw">{{i.gender}}</text>
                        <text class="f-26">({{i.numbers}})</text>
                    </view>
                </view>
            </view>
        </view>
        <view class="event">
            <caption-row title="社区事件"></caption-row>
            <view class="block bgc-ff mt-20 mb-20">
                <view class="block-caption f-28 fw">
                    总体统计
                </view>
                <view class="grid">
                    <u-grid :border="true">
                        <u-grid-item bgColor="#fff">
                            <view class="grid-item flex f-d-c a-i-c">
                                <text class="f-32 fw c-main mb-20">{{reportData.result}}</text>
                                <text class="f-28">事件总数</text>
                            </view>
                        </u-grid-item>
                        <u-grid-item bgColor="#fff">
                            <view class="grid-item flex f-d-c a-i-c">
                                <text class="f-32 fw c-main mb-20">{{reportData.result1}}</text>
                                <text class="f-28">办理数</text>
                            </view>
                        </u-grid-item>
                        <u-grid-item bgColor="#fff">
                            <view class="grid-item flex f-d-c a-i-c">
                                <text class="f-32 fw c-main mb-20">{{ setNumber(reportData.result2)}}%</text>
                                <text class="f-28">办结比例</text>
                            </view>
                        </u-grid-item>
                    </u-grid>
                </view>
            </view>
            <view class="block bgc-ff">
                <view class="block-caption f-28 fw">
                    事件分类
                </view>
                <view class="flex j-c-s-b a-i-c flex-wrap">
                    <view class="report-item">
                        <image class="report-item-bg" src="/static/icon/nav-bg-08.png" mode="aspectFill"></image>
                        <view class="report-item-inner  flex f-d-c j-c-c ">
                            <text class="f-30 mb-20">{{reportData.result5}}</text>
                            <text class="f-28 ">矛盾纠纷</text>
                        </view>
                    </view>
                    <view class="report-item">
                        <image class="report-item-bg" src="/static/icon/nav-bg-06.png" mode="aspectFill"></image>
                        <view class="report-item-inner  flex f-d-c j-c-c ">
                            <text class="f-30 mb-20">{{reportData.result3}}</text>
                            <text class="f-28 ">公共维护</text>
                        </view>
                    </view>
                    <view class="report-item">
                        <image class="report-item-bg" src="/static/icon/nav-bg-07.png" mode="aspectFill"></image>
                        <view class="report-item-inner  flex f-d-c j-c-c ">
                            <text class="f-30 mb-20">{{reportData.result4}}</text>
                            <text class="f-28 ">居家维修</text>
                        </view>
                    </view>
                    <view class="report-item">
                        <image class="report-item-bg" src="/static/icon/nav-bg-09.png" mode="aspectFill"></image>
                        <view class="report-item-inner  flex f-d-c j-c-c ">
                            <text class="f-30 mb-20">{{reportData.result6}}</text>
                            <text class="f-28 ">投诉举报</text>
                        </view>
                    </view>
                </view>
            </view>
        </view>
    </view>
</template>
<script>
    import captionRow from "@/components/caption/caption.vue"
    import * as statisticsModal from "@/api/statistics/statistics.js"
    export default {
        components: {
            captionRow
        },
        data() {
            return {
                reportData: {},
                houseData: {},
                chartData: {},
                opts: {
                    fontSize: 10,
                    color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4",
                        "#ea7ccc"
                    ],
                    padding: [15, 30, 0, 5],
                    enableScroll: false,
                    legend: {},
                    xAxis: {
                        // boundaryGap: "justify",
                        disableGrid: false,
                        min: 0,
                        axisLine: false,
                        // max: 70,
                        fontSize: 10,
                    },
                    yAxis: {},
                    extra: {
                        bar: {
                            type: "stack",
                            width: 14,
                            meterBorde: 1,
                            meterFillColor: "#FFFFFF",
                            activeBgColor: "#000000",
                            activeBgOpacity: 0.08,
                            categoryGap: 2
                        }
                    }
                },
                sexChartData: {},
                pieOpts: {
                    color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4",
                        "#ea7ccc"
                    ],
                    padding: [5, 5, 5, 5],
                    enableScroll: false,
                    extra: {
                        pie: {
                            customRadius: 60,
                            activeOpacity: 0.5,
                            activeRadius: 10,
                            offsetAngle: 0,
                            labelWidth: 6,
                            border: false,
                            borderWidth: 3,
                            borderColor: "#FFFFFF"
                        }
                    }
                },
                gridData: {},
                sexData: []
            }
        },
        onLoad() {
            this.getHouseHoldData();
            this.getHouseData();
            this.getReportData();
            this.getGridData();
        },
        methods: {
            getRoleType() {
                let roleName = uni.getStorageSync("activeRole").roleName;
                if (roleName == "网格员") {
                    return 1;
                } else if (roleName == "系统管理员") {
                    return 2
                } else if (roleName == "民警") {
                    return 3;
                }
            },
            setNumber(num) {
                if (num) {
                    let n = Number(this.reportData.result2) * 100
                    return n.toFixed(2)
                } else {
                    return num
                }
            },
            getHouseHoldData() {
                statisticsModal.getHouseholdStatistics({
                    code: this.siteInfo.id,
                    roleType: this.getRoleType()
                }).then(res => {
                    // this.houseHoldData = res.data;
                    let data = res.data;
                    this.sexData = data.gender;
                    this.setPersonData(data.age)
                    this.setSexData(data.gender)
                })
            },
            setPersonData(data) {
                let res = {
                    categories: [],
                    series: [{
                        name: "人数",
                        data: []
                    }]
                }
                for (let i of data) {
                    res.categories.push(i.age);
                    res.series[0].data.push(i.number)
                }
                this.chartData = JSON.parse(JSON.stringify(res));
            },
            setSexData(data) {
                let res = {
                    series: [{
                        data: []
                    }]
                }
                for (let i of data) {
                    res.series[0].data.push({
                        name: i.gender,
                        value: i.numbers
                    })
                }
                this.sexChartData = JSON.parse(JSON.stringify(res));
            },
            //获取社区概况数据
            getHouseData() {
                statisticsModal.getHouseStatistics({
                    code: this.siteInfo.id,
                    roleType: this.getRoleType()
                }).then(res => {
                    this.houseData = res.data;
                })
            },
            //获取社区事件数据
            getReportData() {
                statisticsModal.getReportStatistics({
                    code: this.siteInfo.id,
                    roleType: this.getRoleType()
                }).then(res => {
                    console.log(res);
                    this.reportData = res.data;
                })
            },
            //获取网格物业人员
            getGridData() {
                statisticsModal.getGridStatistics({
                    code: this.siteInfo.id,
                    roleType: this.getRoleType()
                }).then(res => {
                    console.log(res);
                    this.gridData = res.data;
                })
            }
        }
    }
</script>
<style lang="scss">
    page {
        background-color: #f5f5f5;
    }
    .container {
        padding: 0 20rpx;
    }
    // .section {
    //     padding: 0 20rpx;
    // }
    .cell {
        padding: 20rpx 0;
        .cell-item {
            // width: 220rpx;
            width: calc(50% - 20rpx);
            height: 190rpx;
            border-radius: 10rpx;
            margin-bottom: 20rpx;
            display: flex;
            flex-direction: column;
            justify-content: center;
            background-color: #fff;
            padding: 0 20rpx;
            box-sizing: border-box;
            position: relative;
            box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 0, 0, 0.1);
        }
        .cell-item-icon {
            width: 64rpx;
            height: 64rpx;
            position: absolute;
            right: 20rpx;
            top: 20rpx;
        }
    }
    .menu {
        // padding: 20rpx 0;
        margin-top: 20rpx;
        .menu-item {
            width: 33%;
            padding: 20rpx 0;
            border-right: 1px solid #dadbde;
        }
        .menu-item:nth-child(3n) {
            border-right: none;
        }
        .menu-item:nth-child(-n + 3) {
            border-bottom: 1px solid #dadbde;
        }
    }
    .event {
        padding: 0 0 20rpx;
    }
    .block {
        padding: 20rpx;
        border-radius: 10rpx;
        .block-caption {
            padding: 20rpx 0;
        }
        .grid {
            box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 0, 0, 0.1);
        }
        .grid-item {
            padding: 20px 0;
        }
    }
    .report-item {
        position: relative;
        margin-bottom: 10rpx;
    }
    .report-item,
    .report-item-bg,
    .report-item-inner {
        width: 330rpx;
        height: 167rpx;
        border-radius: 10rpx;
    }
    .report-item-inner {
        position: absolute;
        top: 0;
        left: 0;
        padding: 0 20rpx;
        box-sizing: border-box;
        // background-color:#fff;
    }
    .bar-charts,
    .pie-charts {
        width: 100%;
        height: 300px;
        border-radius: 10rpx;
        padding: 0 20rpx;
        box-sizing: border-box;
    }
    .bar-charts {
        margin: 20rpx 0;
    }
    // .pie-charts-box,.pie-charts-explain{
    //     width:50%;
    // }
    .pie-charts-box {
        width: 70%;
    }
    .pie-charts-explain {
        width: 30%;
        padding-left: 40rpx;
        box-sizing: border-box;
    }
</style>
subPackage/house/family/index.vue
@@ -93,9 +93,17 @@
                                            <text class="proprietor-box">
                                                {{scItem.realName || ""}}
                                            </text>
                                            <text class="r floor-box">
                                                {{scItem.houseNo}}
                                            </text>
                                            <view>
                                                <!-- <view class="label-tag mr-10"
                                                    :style="{backgroundColor:showHouseColor(scItem.houseColor,'showColor')}">
                                                    {{showHouseColor(scItem.houseColor,'name')}}
                                                </view> -->
                                                <text class="r floor-box"
                                                    :style="{color:showHouseColor(scItem.houseColor,'showColor')}">
                                                    {{scItem.houseNo}}
                                                </text>
                                            </view>
                                        </view>
                                        <!-- <view style="margin-top:10rpx;" v-if="scItem.householdLabelList.length">
                                            <block v-for="i in scItem.householdLabelList">
@@ -173,7 +181,26 @@
                unitName: "", //单元名称
                houseData: {},
                shopType: "", //商铺类型    1 自建房商铺   2 企业商铺
                startTime: ""
                startTime: "",
                labelItemList: [{
                        name: "闲置",
                        showColor: '#30D17C',
                        color: "green"
                    },
                    {
                        name: "出租",
                        showColor: '#FFCC00',
                        color: "yellow"
                    },
                    {
                        name: "自住",
                        showColor: '#0099FF',
                        color: "blue"
                    },
                ]
            }
        },
        onLoad(e) {
@@ -220,6 +247,17 @@
            this.getBuildingList()
        },
        methods: {
            showHouseColor(color, key) {
                for (let i of this.labelItemList) {
                    if (i.color == color) {
                        return i[key]
                    }
                }
            },
            async getBuildingList() {
                uni.showLoading({
                    title: "正在加载"
@@ -340,8 +378,9 @@
                    }
                    .floor-box {
                        color: #017BFC;
                        font-weight: 700;
                        // color: #017BFC;
                        color: #333;
                        // font-weight: 700;
                    }
                }
subPackage/house/member/add.vue
@@ -2,8 +2,16 @@
    <view class="container">
        <view class="main">
            <view class="content">
                <view class="top flex j-c-s-b a-i-c bgc-ff" @click="onScan()" v-if="!currentId">
                    <view class="flex a-i-c">
                        <u-icon name="/static/icon/nav-05.png" width="90rpx" height="90rpx"></u-icon>
                        <text class="f-28 ml-10">扫码获取信息</text>
                    </view>
                    <u-icon name="arrow-right" size="20"></u-icon>
                </view>
                <u-form labelWidth="70" :model="form" :rules="rules" ref="form">
                    <view class="event-info">
                        <view class="box-title">
                            <box-title title="基础信息"></box-title>
                        </view>
@@ -29,6 +37,13 @@
                            <u--input border="none" v-model="form.name" placeholder="请输入姓名">
                            </u--input>
                        </u-form-item>
                        <u-form-item @click="showSelectBus('性别','gender')" class="form-item" labelWidth="100" label="性别"
                            prop="gender">
                            <u--input border="none" v-model="selectDefaultName.gender" disabled disabledColor="#ffffff"
                                placeholder="请选择性别">
                            </u--input>
                            <u-icon slot="right" name="arrow-right"></u-icon>
                        </u-form-item>
                        <u-form-item @click="showSelectBus('证件类型','cardType')" class="form-item" labelWidth="100"
                            label="证件类型" prop="gender">
                            <u--input border="none" v-model="selectDefaultName.cardType" disabled
@@ -47,6 +62,49 @@
                            <u--input border="none" v-model="form.cardNo" placeholder="请输入证件号码">
                            </u--input>
                        </u-form-item>
                        <u-form-item class="form-item" labelWidth="100" label="手机号码" prop="phoneNumber" required>
                            <u--input border="none" type="number" v-model="form.phoneNumber" placeholder="请输入手机号码">
                            </u--input>
                        </u-form-item>
                        <u-form-item class="form-item" labelWidth="100" label="户籍地区" prop="residentAdcode">
                            <view class="region">
                                <picker mode="region" :value="residentadDefault" @change="changeHouseholdRegion">
                                    <view class="region-picker c-c0" v-if="!residentad">
                                        请选择户籍地区
                                    </view>
                                    <view class="region-picker c-30" v-if="residentad">
                                        {{residentad}}
                                    </view>
                                </picker>
                            </view>
                            <u-icon slot="right" name="arrow-right"></u-icon>
                        </u-form-item>
                        <u-form-item @click="showSelectBus('民族','ethnicity')" class="form-item" labelWidth="100"
                            label="民族" prop="ethnicity">
                            <u--input border="none" v-model="selectDefaultName.ethnicity" disabled
                                disabledColor="#ffffff" placeholder="请选择民族">
                            </u--input>
                            <u-icon slot="right" name="arrow-right"></u-icon>
                        </u-form-item>
                        <u-form-item @click="showSelectBus('是否党员','partyEmber')" class="form-item" labelWidth="100"
                            label="是否党员" prop="partyEmber">
                            <u--input border="none" v-model="selectDefaultName.partyEmber" disabled
                                disabledColor="#ffffff" placeholder="请选择是否党员">
                            </u--input>
                            <u-icon slot="right" name="arrow-right"></u-icon>
                        </u-form-item>
                        <u-form-item class="form-item" labelWidth="100" label="职业类别" prop="occupation ">
                            <u--input border="none" v-model="form.occupation " placeholder="请输入职业类别">
                            </u--input>
                        </u-form-item>
                        <u-form-item @click="showSelectBus('婚姻状态','maritalStatus')" class="form-item" labelWidth="100"
                            label="婚姻状态" prop="maritalStatus">
                            <u--input border="none" v-model="selectDefaultName.maritalStatus" disabled
                                disabledColor="#ffffff" placeholder="请选择婚姻状态">
                            </u--input>
                            <u-icon slot="right" name="arrow-right"></u-icon>
                        </u-form-item>
                        <u-form-item v-if="form.cardType && form.cardType != 111" class="form-item" labelWidth="100"
                            label="出生日期" prop="birthday" @click="showSelectBirthday = true">
@@ -55,18 +113,9 @@
                            </u--input>
                            <u-icon slot="right" name="arrow-right"></u-icon>
                        </u-form-item>
                        <u-form-item @click="showSelectBus('性别','gender')" class="form-item" labelWidth="100" label="性别"
                            prop="gender">
                            <u--input border="none" v-model="selectDefaultName.gender" disabled disabledColor="#ffffff"
                                placeholder="请选择性别">
                            </u--input>
                            <u-icon slot="right" name="arrow-right"></u-icon>
                        </u-form-item>
                        <u-form-item class="form-item" labelWidth="100" label="手机号码" prop="phoneNumber" required>
                            <u--input border="none" type="number" v-model="form.phoneNumber" placeholder="请输入手机号码">
                            </u--input>
                        </u-form-item>
                        <u-form-item class="form-item" labelWidth="100" label="其它联系方式" prop="otherContact">
                            <u--input border="none" v-model="form.otherContact" placeholder="请输入其它联系方式">
@@ -127,19 +176,6 @@
                        </u-form-item>
                        <u-form-item class="form-item" labelWidth="100" label="户籍地区" prop="residentAdcode">
                            <view class="region">
                                <picker mode="region" :value="residentadDefault" @change="changeHouseholdRegion">
                                    <view class="region-picker c-c0" v-if="!residentad">
                                        请选择户籍地区
                                    </view>
                                    <view class="region-picker c-30" v-if="residentad">
                                        {{residentad}}
                                    </view>
                                </picker>
                            </view>
                            <u-icon slot="right" name="arrow-right"></u-icon>
                        </u-form-item>
@@ -167,13 +203,7 @@
                        </u-form-item>
                        <u-form-item @click="showSelectBus('民族','ethnicity')" class="form-item" labelWidth="100"
                            label="民族" prop="ethnicity">
                            <u--input border="none" v-model="selectDefaultName.ethnicity" disabled
                                disabledColor="#ffffff" placeholder="请选择民族">
                            </u--input>
                            <u-icon slot="right" name="arrow-right"></u-icon>
                        </u-form-item>
                        <u-form-item @click="showSelectBus('学历','education')" class="form-item" labelWidth="100"
                            label="学历" prop="education">
@@ -183,17 +213,8 @@
                            <u-icon slot="right" name="arrow-right"></u-icon>
                        </u-form-item>
                        <u-form-item @click="showSelectBus('是否党员','partyEmber')" class="form-item" labelWidth="100"
                            label="是否党员" prop="partyEmber">
                            <u--input border="none" v-model="selectDefaultName.partyEmber" disabled
                                disabledColor="#ffffff" placeholder="请选择是否党员">
                            </u--input>
                            <u-icon slot="right" name="arrow-right"></u-icon>
                        </u-form-item>
                        <u-form-item class="form-item" labelWidth="100" label="职业类别" prop="occupation ">
                            <u--input border="none" v-model="form.occupation " placeholder="请输入职业类别">
                            </u--input>
                        </u-form-item>
                        <u-form-item class="form-item" labelWidth="100" label="工作单位" prop="employer">
                            <u--input border="none" v-model="form.employer" placeholder="请输入工作单位">
                            </u--input>
@@ -210,13 +231,7 @@
                            <u-icon slot="right" name="arrow-right"></u-icon>
                        </u-form-item>
                        <u-form-item @click="showSelectBus('婚姻状态','maritalStatus')" class="form-item" labelWidth="100"
                            label="婚姻状态" prop="maritalStatus">
                            <u--input border="none" v-model="selectDefaultName.maritalStatus" disabled
                                disabledColor="#ffffff" placeholder="请选择婚姻状态">
                            </u--input>
                            <u-icon slot="right" name="arrow-right"></u-icon>
                        </u-form-item>
                        <u-form-item class="form-item" labelWidth="100" label="宗教信仰" prop="religiousBelief ">
                            <u--input border="none" v-model="form.religiousBelief" placeholder="请输入宗教信仰">
                            </u--input>
@@ -1002,6 +1017,7 @@
                // height: 0;
                // flex: 1;
                // overflow-y: auto;
                padding: 20rpx 0 0;
                padding-bottom: 160rpx;
                // padding-bottom: 36rpx;
            }
@@ -1140,4 +1156,10 @@
            top: 20rpx;
        }
    }
    .top {
        padding: 20rpx;
        marign: 20rpx 30rpx;
        border-radius: 8rpx;
    }
</style>
subPackage/house/roomControl/index.vue
@@ -53,11 +53,16 @@
                    <view class=" flex label-btn-box b-c-w" v-if="roleType == 2">
                        <newBoxTitle title="房屋标签"></newBoxTitle>
                        <view class="list">
                            <view v-for="(item, index) in labelBtnList" :key="index">
                                <u-button size="mini" type="primary" :color="$setLabelColor(item.color)"
                            <block v-for="(item, index) in labelBtnList" :key="index">
                                <view @click="handleLabel(index,item)" class="label-item"
                                    :class="index == labelIndex?'c-ff':'c-66'"
                                    :style="{backgroundColor:(index == labelIndex?item.showColor:'#F5F5F5')}">
                                    {{item.name}}
                                    <!-- <u-button size="mini" type="primary" :color="$setLabelColor(item.color)"
                                    :style="{color: $setLabelColor(item.color) && '#fff'}" :text="item.name"
                                    @click="showLabelPopup(item)"></u-button>
                            </view>
                                    @click="showLabelPopup(item)"></u-button> -->
                                </view>
                            </block>
                        </view>
                    </view>
                </u-form>
@@ -108,7 +113,8 @@
    } from "@/api/label/label.js";
    import {
        saveOrUpdateHouseholdLabel,
        removeHouseholdLabel
        removeHouseholdLabel,
        setHouseLabel
    } from "@/api/house/householdLabel.js";
    import {
        getHouseDetail,
@@ -212,6 +218,26 @@
                roleType: 1,
                showSelectDate: false,
                serveTime: Number(new Date()),
                labelIndex: null,
                labelItemList: [{
                        name: "闲置",
                        showColor: '#30D17C',
                        color: "green"
                    },
                    {
                        name: "出租",
                        showColor: '#FFCC00',
                        color: "yellow"
                    },
                    {
                        name: "自住",
                        showColor: '#0099FF',
                        color: "blue"
                    },
                ]
            }
        },
        created() {
@@ -268,7 +294,16 @@
                    parentId: 1001
                }
                const resLabel = await getLabelListByParentId(paramLabel)
                this.labelBtnList = resLabel.data
                let labelItem = resLabel.data;
                for (let i = 0, ii = labelItem.length; i < ii; i++) {
                    for (let k = 0, kk = this.labelItemList.length; k < kk; k++) {
                        if (labelItem[i].name == this.labelItemList[k].name) {
                            labelItem[i].showColor = this.labelItemList[k].showColor;
                            labelItem[i].color = this.labelItemList[k].color;
                        }
                    }
                }
                this.labelBtnList = labelItem;
                if (null != res.data) {
                    const images = []
                    const {
@@ -295,16 +330,22 @@
                    if (userHouseLabelVOList.length > 0) {
                        that.labelBtnList.forEach(e => {
                            userHouseLabelVOList.forEach(f => {
                                if (Number(e.id) == f.labelId) {
                                    e['color'] = f.color
                                    e['remark'] = f.remark
                                }
                            })
                        })
                    // if (userHouseLabelVOList.length > 0) {
                    //     that.labelBtnList.forEach(e => {
                    //         userHouseLabelVOList.forEach(f => {
                    //             if (Number(e.id) == f.labelId) {
                    //                 e['color'] = f.color
                    //                 e['remark'] = f.remark
                    //             }
                    //         })
                    //     })
                    // }
                    if (userHouseLabelVOList.length) {
                        this.labelIndex = this.labelBtnList.findIndex(item => item.id == userHouseLabelVOList[0]
                            .labelId)
                    }
                    this.form = {
                        phone,
                        address,
@@ -445,6 +486,27 @@
                this.popupShow = false
            },
            //选择标签
            handleLabel(index, item) {
                this.labelIndex = index;
                let data = {
                    labelId: item.id,
                    color: item.color,
                    lableType: 2,
                    houseCode: this.houseCode
                }
                this.setLabelRequest(data)
            },
            setLabelRequest(data) {
                setHouseLabel(data).then(res => {
                    if (res.code == 200) {
                        this.$showTips("操作成功", "success")
                    }
                })
            }
        }
    }
</script>
@@ -555,4 +617,13 @@
            }
        }
    }
    .label-item {
        padding: 12rpx;
        border-radius: 8rpx;
        font-size: 26rpx;
        margin-right: 30rpx;
        text-align: center;
    }
</style>
subPackage/task/index.vue
@@ -129,12 +129,19 @@
            <view class="nav-item flex j-c-s-b a-i-c" @click="navTo(`${i.path}&from=task`)" v-for="i in securityList">
                <text class="f-28">{{i.name}}</text>
                <view class="flex">
                    <block v-if="i.count > 0">
                        <text class="f-28 c-99">待处理</text>
                        <view class="dot bgc-main">{{i.count}}</view>
                    </block>
                    <u-icon name="arrow-right" color="#999"></u-icon>
                </view>
                <!-- <view class="flex">
                    <block v-if="bailCount > 0">
                        <text class="f-28 c-99">待处理</text>
                        <view class="dot bgc-main">{{bailCount}}</view>
                    </block>
                    <u-icon name="arrow-right" color="#999"></u-icon>
                </view>
                </view> -->
            </view>
        </view>
    </view>
@@ -205,22 +212,29 @@
                                i.count = data.bsbx;
                            } else if (i.name.trim() == "住户审核") {
                                i.count = data.zhsh
                            } else if (i.name.trim() == "二手交易") {
                                i.count = data.bqsj
                            } else if (i.name.trim() == "租户确认") {
                                i.count = data.czsh
                            } else if (i.name.trim() == "走访任务") {
                                i.count = data.zfrw;
                            } else if (i.name.trim() == "走访任务") {
                                i.count = data.zfrw;
                            } else if (i.name.trim() == "消防自查") {
                                i.count = data.xfzc;
                            } else if (i.name.trim() == "消防隐患整改") {
                                i.count = data.xfyhzg;
                            }
                        }
                        this.bailCount = data.qbhs
                        // this.bailCount = data.qbhs
                        for (let i of this.securityList) {
                            if (i.name.trim() == "二手交易") {
                                i.count = data.bqsj
                            } else if (i.name.trim() == "消防自查") {
                                i.count = data.xfzc;
                            } else if (i.name.trim() == "消防隐患整改") {
                                i.count = data.xfyhzg;
                            } else {
                                i.count = data.qbhs;
                            }
                        }
                    }
                })
            },
subPackage/workbench/components/formItem.vue
@@ -4,19 +4,6 @@
            <u-form-item label="姓名" required prop="name" class="form-item">
                <u--input v-model="form.name" border="none" placeholder="请填写姓名"></u--input>
            </u-form-item>
            <u-form-item label="电话号码" class="form-item">
                <u--input v-model="form.telephone" border="none" placeholder="请填写电话号码"></u--input>
            </u-form-item>
            <u-form-item label="现居住地" class="form-item">
                <u--input v-model="form.tempAddress" border="none" placeholder="请填写现居住地"></u--input>
            </u-form-item>
            <u-form-item label="身份证号" class="form-item">
                <u--input v-model="form.idCard" type="idcard" border="none" placeholder="请填写身份证号"></u--input>
            </u-form-item>
            <u-form-item label="微信号" class="form-item">
                <u--input v-model="form.wxAccount" border="none" placeholder="请填写微信号"></u--input>
            </u-form-item>
            <u-form-item @click="showGenderPicker = true" class="form-item" label="性别" prop="legalGender">
                <u--input border="none" v-model="genderValue" disabled disabledColor="#ffffff" placeholder="请选择性别">
                </u--input>
@@ -27,12 +14,28 @@
                </u--input>
                <u-icon slot="right" name="arrow-right"></u-icon>
            </u-form-item>
            <u-form-item label="岗位性质" class="form-item">
                <u--input v-model="form.jobNature" border="none" placeholder="请填写岗位性质"></u--input>
            <u-form-item label="身份证号" class="form-item">
                <u--input v-model="form.idCard" type="idcard" border="none" placeholder="请填写身份证号"></u--input>
            </u-form-item>
            <u-form-item label="户籍地址" class="form-item">
            <u-form-item label="电话号码" class="form-item">
                <u--input v-model="form.telephone" border="none" placeholder="请填写电话号码"></u--input>
            </u-form-item>
            <u-form-item label="现居住地" class="form-item">
                <u--input v-model="form.tempAddress" border="none" placeholder="请填写现居住地"></u--input>
            </u-form-item>
            <!-- <u-form-item label="微信号" class="form-item">
                <u--input v-model="form.wxAccount" border="none" placeholder="请填写微信号"></u--input>
            </u-form-item> -->
            <u-form-item label="岗位" class="form-item">
                <u--input v-model="form.jobNature" border="none" placeholder="请填写岗位"></u--input>
            </u-form-item>
            <!-- <u-form-item label="户籍地址" class="form-item">
                <u--input v-model="form.registeredAddress" border="none" placeholder="请填写户籍地址"></u--input>
            </u-form-item>
            </u-form-item> -->
            <u-form-item label="从业人员照片" class="form-item" labelPosition="top" labelWidth="100">
                <view style="padding:20rpx 0 0;">
                    <u-upload :fileList="form.employerImg" :previewFullImage="uploadConfig.previewFullImage"
subPackage/workbench/views/audit.vue
@@ -104,7 +104,7 @@
                    uni.setNavigationBarTitle({
                        title: "取保候审"
                    })
                } else if (option.reportType == 2) {
                } else if (option.reportType == 7) {
                    uni.setNavigationBarTitle({
                        title: "消防自查"
                    })
subPackage/workbench/views/cscj.vue
@@ -90,6 +90,17 @@
                    </u-form-item>
                    <u-form-item label="三级消防单位" labelWidth="100" prop="threeFireProtection" :required="isRequired">
                        <u-radio-group v-model="form.threeFireProtection" v-if="!currentId">
                            <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in statusList"
                                :key="index" :label="item.name" :name="item.id">
                            </u-radio>
                        </u-radio-group>
                        <view class="f-30" v-if="currentId">
                            {{form.threeFireProtection == 1?"是":"否"}}
                        </view>
                    </u-form-item>
                    <u-form-item class="form-item" labelWidth="100" label="备注:" prop="remark">
                        <u--input v-if="!currentId" border="none" v-model="form.remark" placeholder="请输入">
                        </u--input>
@@ -120,9 +131,43 @@
                        </view>
                    </u-form-item>
                    <u-form-item v-if="!currentId" label="负责人信息和法人信息是否一致" labelWidth="100" :required="isRequired">
                        <u-radio-group v-model="isLegalSame">
                            <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in statusList"
                                :key="index" :label="item.name" :name="item.id">
                            </u-radio>
                        </u-radio-group>
                        <!-- <view class="f-30" v-if="currentId">
                            {{form.threeFireProtection == 1?"是":"否"}}
                        </view> -->
                    </u-form-item>
                </view>
                <view class="item">
                    <view class="box-title">
                        <box-title title="法人信息"></box-title>
                    </view>
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="姓名:" prop="legalPerson">
                        <u--input border="none" v-model="form.placeExtEntity.legalPerson" placeholder="请输入">
                        </u--input>
                    </u-form-item>
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="身份证号:" prop="legalIdCard">
                        <u--input border="none" type="idcard" v-model="form.placeExtEntity.legalIdCard"
                            placeholder="请输入">
                        </u--input>
                    </u-form-item>
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="手机号:" prop="legalTel">
                        <u--input border="none" type="number" v-model="form.placeExtEntity.legalTel" placeholder="请输入">
                        </u--input>
                    </u-form-item>
                </view>
                <view class="item" v-if="isLegalSame != 1 && !currentId">
                    <view class="box-title">
                        <box-title title="负责人信息"></box-title>
                    </view>
@@ -172,72 +217,7 @@
                    </u-form-item>
                </view>
                <view class="item">
                    <view class="box-title">
                        <box-title title="法人信息"></box-title>
                    </view>
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="姓名:" prop="legalPerson">
                        <u--input border="none" v-model="form.placeExtEntity.legalPerson" placeholder="请输入">
                        </u--input>
                    </u-form-item>
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="身份证号:" prop="legalIdCard">
                        <u--input border="none" type="idcard" v-model="form.placeExtEntity.legalIdCard"
                            placeholder="请输入">
                        </u--input>
                    </u-form-item>
                    <!-- <u-form-item @click="showGenderPicker = true" class="form-item" labelWidth="100" label="性别"
                        prop="legalGender">
                        <u--input border="none" v-model="genderValue" disabled disabledColor="#ffffff"
                            placeholder="请选择性别">
                        </u--input>
                        <u-icon slot="right" name="arrow-right"></u-icon>
                    </u-form-item>
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="年龄:" prop="legalAge">
                        <u--input border="none" type="number" v-model="form.legalAge" placeholder="请输入">
                        </u--input>
                    </u-form-item>
                    <u-form-item @click="showNationPicker = true" class="form-item" labelWidth="100" label="民族"
                        prop="ethnicity">
                        <u--input border="none" v-model="nationValue" disabled disabledColor="#ffffff"
                            placeholder="请选择民族">
                        </u--input>
                        <u-icon slot="right" name="arrow-right"></u-icon>
                    </u-form-item> -->
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="手机号:" prop="legalTel">
                        <u--input border="none" type="number" v-model="form.placeExtEntity.legalTel" placeholder="请输入">
                        </u--input>
                    </u-form-item>
                    <!--                     <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="微信号:" prop="legalWxAccount">
                        <u--input border="none" v-model="form.legalWxAccount" placeholder="请输入">
                        </u--input>
                    </u-form-item>
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="工作单位:" prop="employer">
                        <u--input border="none" v-model="form.employer" placeholder="请输入">
                        </u--input>
                    </u-form-item>
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="岗位性质:" prop="legalJobNature">
                        <u--input border="none" v-model="form.legalJobNature" placeholder="请输入">
                        </u--input>
                    </u-form-item>
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="户籍地址:" prop="legalRegisteredAddress">
                        <u--textarea border="none" v-model="form.legalRegisteredAddress" placeholder="请输入">
                        </u--textarea>
                    </u-form-item>
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="居住地址:" prop="legalTempAddress">
                        <u--textarea border="none" type="idcard" v-model="form.legalTempAddress" placeholder="请输入">
                        </u--textarea>
                    </u-form-item> -->
                </view>
                <view class="item pic" v-if="(currentId && form.images.length) || !currentId ">
@@ -668,7 +648,7 @@
                showNationPicker: false,
                showGenderPicker: false,
                personNum: 1,
                isLegalSame: "" //法人信息是否与负责人一致  1是  2否
            }
        },
@@ -1103,8 +1083,11 @@
                    this.form.placePractitioner = placePractitioner
                }
                if (this.isLegalSame == 1) {
                    this.form.placeExtEntity.legalPerson = this.form.principal;
                    this.form.placeExtEntity.legalTel = this.form.principalPhone;
                    this.form.placeExtEntity.legalIdCard = this.form.principalIdCard;
                }
                add(this.form).then(res => {
                    uni.showToast({
@@ -1271,7 +1254,7 @@
            addPerson() {
                this.personNum++
            },
            }
        }
    }
</script>
subPackage/workbench/views/editCscj.vue
@@ -71,11 +71,23 @@
                                @close="delTag()" :text="item.categoryName"></u-tag>
                        </view>
                    </view> -->
                    <u-form-item label="三级消防单位" labelWidth="100" prop="threeFireProtection" :required="isRequired">
                        <u-radio-group v-model="form.threeFireProtection" v-if="!currentId">
                            <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in statusList"
                                :key="index" :label="item.name" :name="item.id">
                            </u-radio>
                        </u-radio-group>
                        <view class="f-30" v-if="currentId">
                            {{form.threeFireProtection == 1?"是":"否"}}
                        </view>
                    </u-form-item>
                    <u-form-item class="form-item" labelWidth="100" label="备注:" prop="remark">
                        <u--input border="none" v-model="form.remark" placeholder="请输入">
                        </u--input>
                    </u-form-item>
                    <u-form-item label="经纬度:" prop="location" labelWidth="100">
                        <view class="address-row flex j-c-s-b a-i-c">
                            <view class="address-content f-28" v-if="form.jwd">