Lou
2023-12-08 8c844ea235546f84035e4a99a9703d797cec80bc
数据驾驶舱完善,修复部分问题
13 files modified
5 files added
803 ■■■■ changed files
api/statistics/statistics.js 39 ●●●●● patch | view | raw | blame | history
common/setting.js 2 ●●● patch | view | raw | blame | history
mixin/uploadMixin.js 6 ●●●●● patch | view | raw | blame | history
pages.json 96 ●●●●● patch | view | raw | blame | history
pages/home/index.vue 12 ●●●● patch | view | raw | blame | history
subPackage/grid/comment.vue 59 ●●●●● patch | view | raw | blame | history
subPackage/grid/comprehensive.vue 141 ●●●●● patch | view | raw | blame | history
subPackage/grid/publicSecurity.vue 36 ●●●●● patch | view | raw | blame | history
subPackage/grid/tenement.vue 131 ●●●●● patch | view | raw | blame | history
subPackage/label/bail.vue 2 ●●● patch | view | raw | blame | history
subPackage/label/form.vue 6 ●●●● patch | view | raw | blame | history
subPackage/label/hotel.vue 10 ●●●● patch | view | raw | blame | history
subPackage/label/school.vue 14 ●●●● patch | view | raw | blame | history
subPackage/statistics/index.vue 153 ●●●●● patch | view | raw | blame | history
subPackage/workbench/views/bailReportDetail.vue 19 ●●●● patch | view | raw | blame | history
subPackage/workbench/views/hotelReportDetail.vue 27 ●●●● patch | view | raw | blame | history
subPackage/workbench/views/labelReportDetail.vue 25 ●●●● patch | view | raw | blame | history
subPackage/workbench/views/schoolReportDetail.vue 25 ●●●● patch | view | raw | blame | history
api/statistics/statistics.js
New file
@@ -0,0 +1,39 @@
import http from '@/http/api.js'
//报事报修数据统计  (数据驾驶舱)
export const getReportStatistics = (params) => {
    return http.request({
        url: 'blade-taskReportForRepairs/taskReportForRepairs/getReportForStatistics',
        method: 'GET',
        params: {
            ...params
        }
    })
}
//获取社区概况数据统计 (数据驾驶舱)
export const getHouseStatistics  =(param)=>{
    return http.request({
        url: 'blade-house/house/getHouseStatistics',
        method: 'GET',
        params: param
    })
}
// 获取住户数据统计 (数据驾驶舱)
export const getHouseholdStatistics = (params) => {
    return http.request({
        url: 'blade-household/household/getHouseHoldStatistics',
        method: 'GET',
        params: params
    })
}
// 获取网格物业人员数据统计 (数据驾驶舱)
export const getGridStatistics = (params) => {
    return http.request({
        url: 'blade-gridman/gridman/getGridStatistics',
        method: 'GET',
        params: params
    })
}
common/setting.js
@@ -14,7 +14,7 @@
    // devUrl:'http://192.168.1.50:9528',
    // devUrl: 'http://192.168.0.102:9528',
    // devUrl:'https://srgdjczzxtpt.com:2080/api',
    devUrl: 'http://192.168.0.100:9528',
    devUrl: 'http://192.168.0.102:9528',
    // devUrl: 'https://srgdjczzxtpt.com:2080/api',
    minioBaseUrl: "https://srgdjczzxtpt.com:2080/gminio/jczz/",
    // minioBaseUrl:"http://192.168.0.103:9528/",
mixin/uploadMixin.js
@@ -115,6 +115,12 @@
        deletePic(event,key="images") {
            this.form[key].splice(event.index, 1)
        },
        deletePics(event,key) {
            console.log(event,key);
            this[key].splice(event.index, 1)
        },
        showLoading() {
            uni.showLoading({
                mask: true,
pages.json
@@ -48,17 +48,15 @@
        //数据驾驶舱
        {
            "root": "subPackage/statistics",
            "pages": [
                {
                    "path": "index",
                    "style": {
                        "navigationBarTitleText": "数据驾驶舱",
                        "enablePullDownRefresh": false,
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black"
                    }
            "pages": [{
                "path": "index",
                "style": {
                    "navigationBarTitleText": "数据驾驶舱",
                    "enablePullDownRefresh": false,
                    "navigationBarBackgroundColor": "#fff",
                    "navigationBarTextStyle": "black"
                }
            ]
            }]
        },
        //我的
        {
@@ -120,23 +118,21 @@
                        "navigationBarTextStyle": "black"
                    }
                }
            ]
        },
        //圈子
        {
            "root": "subPackage/circle",
            "pages":[
                {
                    "path":"detail",
                    "style": {
                        "navigationBarTitleText": "详情",
                        "enablePullDownRefresh": false,
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black"
                    }
            "pages": [{
                "path": "detail",
                "style": {
                    "navigationBarTitleText": "详情",
                    "enablePullDownRefresh": false,
                    "navigationBarBackgroundColor": "#fff",
                    "navigationBarTextStyle": "black"
                }
            ]
            }]
        },
        //公告
@@ -198,8 +194,7 @@
        //标签
        {
            "root": "subPackage/label",
            "pages": [
                {
            "pages": [{
                    "path": "index",
                    "style": {
                        "navigationBarTitleText": "标签事件",
@@ -217,7 +212,7 @@
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black"
                    }
                },{
                }, {
                    "path": "bail",
                    "style": {
                        "navigationBarTitleText": "取保候审",
@@ -284,9 +279,8 @@
        },
        //我的任务
        {
           "root":"subPackage/task",
           "pages": [
                {
            "root": "subPackage/task",
            "pages": [{
                    "path": "index",
                    "style": {
                        "navigationBarTitleText": "我的任务",
@@ -294,7 +288,7 @@
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black"
                    }
                } ,
                },
                {
                    "path": "taskList",
                    "style": {
@@ -303,7 +297,7 @@
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black"
                    }
                } ,
                },
                {
                    "path": "workLogList",
                    "style": {
@@ -312,7 +306,7 @@
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black"
                    }
                }
                }
            ]
        },
        //工作台
@@ -628,6 +622,46 @@
                    }
                }
            ]
        },
        {
            "root": "subPackage/grid",
            "pages": [{
                    "path": "publicSecurity",
                    "style": {
                        "navigationBarTitleText": "公安网格",
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black",
                        "enablePullDownRefresh": false
                    }
                },
                {
                    "path": "comprehensive",
                    "style": {
                        "navigationBarTitleText": "综治网格",
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black",
                        "enablePullDownRefresh": false
                    }
                },
                {
                    "path": "tenement",
                    "style": {
                        "navigationBarTitleText": "物业",
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black",
                        "enablePullDownRefresh": false
                    }
                },
                {
                    "path": "comment",
                    "style": {
                        "navigationBarTitleText": "留言",
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black",
                        "enablePullDownRefresh": false
                    }
                }
            ]
        }
    ],
    "globalStyle": {
@@ -650,7 +684,7 @@
            },
            {
                "pagePath": "pages/circle/index",
                "iconPath": "static/img/tabbar-02.png",
                "iconPath": "static/img/tabbar-02.png",
                "selectedIconPath": "static/img/tabbar-02-selected.png",
                "text": "圈子"
            },
pages/home/index.vue
@@ -641,12 +641,12 @@
                            icon: "error"
                        })
                    } 
                    else if (path == "/subPackage/statistics/index") {
                        uni.showToast({
                            title: "功能开发中~",
                            icon: "none"
                        })
                    }
                    // else if (path == "/subPackage/statistics/index") {
                    //     uni.showToast({
                    //         title: "功能开发中~",
                    //         icon: "none"
                    //     })
                    // }
                    else {
                        this.$u.func.globalNavigator(`${path}?houseCode=${this.curHouseCode}`, "navTo")
                    }
subPackage/grid/comment.vue
New file
@@ -0,0 +1,59 @@
<template>
    <view class="container">
         <view class="content">
             <u-textarea v-model="content" placeholder="请输入内容" ></u-textarea>
         </view>
        <button class="submit-btn bgc-main c-ff f-30"  @click="submitInfo">提交</button>
    </view>
</template>
<script>
    import { addComment} from "@/api/article/article.js"
    export default{
        data(){
            return {
                content:"",
                articleId:""
            }
        },
        onLoad(option){
            this.articleId = option.id;
        },
        methods:{
            submitInfo(){
                if(!this.content)return
                addComment({
                    content:this.content,
                    articleId:this.articleId
                }).then(res=>{
                    if(res.code == 200){
                        uni.showToast({
                            title:"提交成功!"
                        })
                        uni.$emit("refreshComment")
                        setTimeout(()=>{
                            uni.navigateBack();
                        },1000)
                    }
                })
            }
        }
    }
</script>
<style>
    .container{
        padding:30rpx 30rpx 0;
    }
    .content{
        margin-bottom:50rpx;
    }
    .submit-btn{
        width:100%;
        height:80rpx;
        line-height:80rpx;
        border:none;
        border-radius: 40rpx;
    }
</style>
subPackage/grid/comprehensive.vue
New file
@@ -0,0 +1,141 @@
<template>
    <view class="">
        <view class="tab">
            <u-tabs :list="tabList" :current="tabIndex" @click="changeTab" :inactiveStyle="{color:'#999999'}"
                :activeStyle="{color:'#017BFC'}"></u-tabs>
        </view>
        <view class="grid flex flex-wrap">
            <view class="grid-item flex f-d-c a-i-c j-c-c">
                <text class="mb-20 f-28"></text>
                <u-image  width="150"  height="100"></u-image>
                <text class="mt-20"></text>
                <text class="c-99 f-26"></text>
            </view>
        </view>
        <view class="detail bgc-ff">
            <caption-row  text="网格基本情况" />
            <view class="detail-content">
            </view>
        </view>
        <view class="comment">
            <caption-row  text="留言" />
            <view class="comment-list ">
                <view class="comment-item flex " v-for="(item,index) in commentList" :key="index">
                    <u-avatar size="45" src="/static/icon/user-01.png"></u-avatar>
                    <view class="comment-item-content">
                        <view class="flex j-c-s-b a-i-c mb-20">
                            <text class="f-28 c-99">{{item.name}}</text>
                            <text class="c-99 f-24">{{item.createTime}}</text>
                        </view>
                        <view class="f-30">
                            {{item.content}}
                        </view>
                    </view>
                </view>
            </view>
        </view>
        <view class="footer">
            <u-search searchIcon='edit-pen' :animation="true" placeholder="写评论" disabled
                @click="navToComment"></u-search>
        </view>
    </view>
</template>
<script>
    import captionRow from "@/components/caption/caption.vue"
    export default {
        components:{
            captionRow
        },
        data(){
            return {
                commentList:[]
            }
        },
        methods:{
            navToComment() {
                uni.navigateTo({
                    url: `comment?id=${this.params.id}`
                })
            }
        }
    }
</script>
<style lang="scss">
    page {
        background-color: #F5F5F5;
    }
    .tab {
        width: 100%;
        height: 88rpx;
        position: fixed;
        /*#ifdef H5*/
        top: 88rpx;
        /*#endif*/
        /*#ifdef MP-WEIXIN*/
        top: 0;
        /*#endif*/
        left: 0;
        background-color: #fff;
        padding: 0 30rpx;
        box-sizing: border-box;
        z-index: 999;
    }
    .grid{
        width:100%;
        .grid-item{
            width:150rpx;
            padding:20rpx 0;
        }
    }
    .detail{
        padding: 0 30rpx;
        margin:20rpx 0;
        .detail-content{
            padding:20rpx 0;
        }
    }
    .comment {
        width: 100%;
        padding: 0 30rpx 160rpx;
        box-sizing: border-box;
    }
    .comment-list {
        width: 100%;
        padding-top: 20rpx;
        .comment-item {
            width: 100%;
            padding: 20rpx 0;
        }
        .comment-item-content {
            flex: 1;
            margin-left: 20rpx;
        }
    }
    .footer {
        width: 100%;
        padding: 20rpx 30rpx;
        box-sizing: border-box;
        background-color: #fff;
        position: fixed;
        bottom: 0;
        left: 0;
        z-index: 10;
        border-top: 1px solid #f5f5f5;
    }
</style>
subPackage/grid/publicSecurity.vue
New file
@@ -0,0 +1,36 @@
<template>
    <view class="bgc-ff">
        <view class="item-row flex j-c-s-b a-i-c">
            <text>公安局</text>
            <text></text>
        </view>
        <view class="item-row flex j-c-s-b a-i-c">
            <text>派出所</text>
            <text></text>
        </view>
        <view class="item-row flex j-c-s-b a-i-c">
            <text>社区民警</text>
            <text></text>
        </view>
        <view class="item-row flex j-c-s-b a-i-c">
            <text>联系方式</text>
            <text></text>
        </view>
    </view>
</template>
<script>
</script>
<style>
    page {
        background-color: #f5f5f5;
    }
    .item-row {
        width: 100%;
        padding: 30rpx;
        box-sizing: border-box;
        border-bottom: 1px solid #f5f5f5;
        font-size: 28rpx;
    }
</style>
subPackage/grid/tenement.vue
New file
@@ -0,0 +1,131 @@
<template>
    <view class="container">
        <view class="">
            <u-avatar size="78"></u-avatar>
            <view class="flex f-d-c">
                <text class="f-30 fw"></text>
                <view class="">
                    <text class="c-99 f-26"></text>
                    <view class="f-22">
                        拨打电话
                    </view>
                </view>
            </view>
        </view>
        <view class="mb-30">
            <caption-row text="物业简介" />
            <view class="intro bgc-ff">
                <u-read-more ref="uReadMore">
                    <rich-text :nodes="content"></rich-text>
                </u-read-more>
            </view>
        </view>
        <view class="mb-30">
            <caption-row text="人员信息" />
            <view class="person-list bgc-ff">
                <view class="person-list flex j-c-s-b a-i-c">
                    <view class="flex">
                        <u-avatar size="50"></u-avatar>
                        <text class="ml-10 mr-10"></text>
                        <text class="f-26 c-99"></text>
                    </view>
                    <view class="flex a-i-c">
                        <u-icon   name="phone-fill"></u-icon>
                        <text class="f-26 c-99"></text>
                    </view>
                </view>
            </view>
        </view>
        <view class="">
            <caption-row text="留言" />
            <view class="comment-list bgc-ff">
                <view class="comment-item flex " v-for="(item,index) in commentList" :key="index">
                    <u-avatar size="45" src="/static/icon/user-01.png"></u-avatar>
                    <view class="comment-item-content">
                        <view class="flex j-c-s-b a-i-c mb-20">
                            <text class="f-28 c-99">{{item.name}}</text>
                            <text class="c-99 f-24">{{item.createTime}}</text>
                        </view>
                        <view class="f-30">
                            {{item.content}}
                        </view>
                    </view>
                </view>
            </view>
        </view>
    </view>
</template>
<script>
    import captionRow from "@/components/caption/caption.vue"
    export default {
        components: {
            captionRow
        },
        data() {
            return {
                commentList:[]
            }
        },
        methods:{
            navToComment() {
                uni.navigateTo({
                    url: `comment?id=${this.params.id}`
                })
            }
        }
    }
</script>
<style lang="scss">
    page {
        background-color: #f5f5f5;
    }
    .container {
        padding: 0 30rpx;
    }
    .intro{
        border-radius: 10rpx;
        padding:10rpx;
    }
    .person-list{
        padding:0 10rpx;
        border-radius: 10rpx;
        .person-list-item{
            padding:20rpx 0;
            border-bottom:1px solid #f5f5f5;
        }
    }
    .comment-list {
        width: 100%;
        padding-top: 20rpx;
        .comment-item {
            width: 100%;
            padding: 20rpx 0;
        }
        .comment-item-content {
            flex: 1;
            margin-left: 20rpx;
        }
    }
    .footer {
        width: 100%;
        padding: 20rpx 30rpx;
        box-sizing: border-box;
        background-color: #fff;
        position: fixed;
        bottom: 0;
        left: 0;
        z-index: 10;
        border-top: 1px solid #f5f5f5;
    }
</style>
subPackage/label/bail.vue
@@ -171,7 +171,7 @@
            setImages(){
                let urls = [];
                for(let i of this.form.images){
                    urls.push(i.url);
                    urls.push(i.name);
                }
                return urls.join(",")
            },
subPackage/label/form.vue
@@ -43,7 +43,7 @@
                    <u-upload :fileList="imageUrls" :previewFullImage="uploadConfig.previewFullImage"
                        :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                        :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                        @afterRead="afterReadImgs($event,'imageUrls')" @delete="deletePic">
                        @afterRead="afterReadImgs($event,'imageUrls')" @delete="deletePics($event,'imageUrls')">
                        <view class="upload-item upload-icon flex_base">
                            <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
                        </view>
@@ -56,7 +56,7 @@
                    <u-upload :fileList="goodsImageUrls" :previewFullImage="uploadConfig.previewFullImage"
                        :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                        :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                        @afterRead="afterReadImgs($event,'goodsImageUrls')" @delete="deletePic">
                        @afterRead="afterReadImgs($event,'goodsImageUrls')" @delete="deletePics($event,'goodsImageUrls')">
                        <view class="upload-item upload-icon flex_base">
                            <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
                        </view>
@@ -207,7 +207,7 @@
            setImages(key) {
                let urls = [];
                for (let i of key) {
                    urls.push(i.url);
                    urls.push(i.name);
                }
                return urls.join(",")
            },
subPackage/label/hotel.vue
@@ -61,7 +61,7 @@
                    <u-upload :fileList="fireImageUrls" :previewFullImage="uploadConfig.previewFullImage"
                        :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                        :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                        @afterRead="afterReadImgs($event,'fireImageUrls')" @delete="deletePic">
                        @afterRead="afterReadImgs($event,'fireImageUrls')" @delete="deletePics($event,'fireImageUrls')">
                        <view class="upload-item upload-icon flex_base">
                            <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
                        </view>
@@ -91,7 +91,7 @@
                    <u-upload :fileList="scImageUrls" :previewFullImage="uploadConfig.previewFullImage"
                        :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                        :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                        @afterRead="afterReadImgs($event,'scImageUrls')" @delete="deletePic">
                        @afterRead="afterReadImgs($event,'scImageUrls')" @delete="deletePics($event,'scImageUrls')">
                        <view class="upload-item upload-icon flex_base">
                            <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
                        </view>
@@ -118,7 +118,7 @@
                    <u-upload :fileList="pfImageUrls" :previewFullImage="uploadConfig.previewFullImage"
                        :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                        :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                        @afterRead="afterReadImgs($event,'pfImageUrls')" @delete="deletePic">
                        @afterRead="afterReadImgs($event,'pfImageUrls')" @delete="deletePics($event,'pfImageUrls')">
                        <view class="upload-item upload-icon flex_base">
                            <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
                        </view>
@@ -145,7 +145,7 @@
                    <u-upload :fileList="uanImageUrls" :previewFullImage="uploadConfig.previewFullImage"
                        :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                        :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                        @afterRead="afterReadImgs($event,'uanImageUrls')" @delete="deletePic">
                        @afterRead="afterReadImgs($event,'uanImageUrls')" @delete="deletePics($event,'uanImageUrls')">
                        <view class="upload-item upload-icon flex_base">
                            <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
                        </view>
@@ -419,7 +419,7 @@
            setImages(key) {
                let urls = [];
                for (let i of key) {
                    urls.push(i.url);
                    urls.push(i.name);
                }
                return urls.join(",")
            },
subPackage/label/school.vue
@@ -59,7 +59,7 @@
                    <u-upload :fileList="foImageUrls" :previewFullImage="uploadConfig.previewFullImage"
                        :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                        :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                        @afterRead="afterReadImgs($event,'foImageUrls')" @delete="deletePic">
                        @afterRead="afterReadImgs($event,'foImageUrls')" @delete="deletePics($event,'foImageUrls')">
                        <view class="upload-item upload-icon flex_base">
                            <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
                        </view>
@@ -84,7 +84,7 @@
                    <u-upload :fileList="fireFacsImageUrls" :previewFullImage="uploadConfig.previewFullImage"
                        :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                        :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                        @afterRead="afterReadImgs($event,'fireFacsImageUrls')" @delete="deletePic">
                        @afterRead="afterReadImgs($event,'fireFacsImageUrls')" @delete="deletePics($event,'fireFacsImageUrls')">
                        <view class="upload-item upload-icon flex_base">
                            <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
                        </view>
@@ -107,7 +107,7 @@
                    <u-upload :fileList="scImageUrls" :previewFullImage="uploadConfig.previewFullImage"
                        :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                        :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                        @afterRead="afterReadImgs($event,'scImageUrls')" @delete="deletePic">
                        @afterRead="afterReadImgs($event,'scImageUrls')" @delete="deletePics($event,'scImageUrls')">
                        <view class="upload-item upload-icon flex_base">
                            <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
                        </view>
@@ -120,7 +120,7 @@
                    <u-upload :fileList="patrolImageUrls" :previewFullImage="uploadConfig.previewFullImage"
                        :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                        :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                        @afterRead="afterReadImgs($event,'patrolImageUrls')" @delete="deletePic">
                        @afterRead="afterReadImgs($event,'patrolImageUrls')" @delete="deletePics($event,'patrolImageUrls')">
                        <view class="upload-item upload-icon flex_base">
                            <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
                        </view>
@@ -144,7 +144,7 @@
                    <u-upload :fileList="antiCollisionImageUrls" :previewFullImage="uploadConfig.previewFullImage"
                        :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                        :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                        @afterRead="afterReadImgs($event,'antiCollisionImageUrls')" @delete="deletePic">
                        @afterRead="afterReadImgs($event,'antiCollisionImageUrls')" @delete="deletePics($event,'antiCollisionImageUrls')">
                        <view class="upload-item upload-icon flex_base">
                            <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
                        </view>
@@ -183,7 +183,7 @@
                    <u-upload :fileList="uanImageUrls" :previewFullImage="uploadConfig.previewFullImage"
                        :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                        :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                        @afterRead="afterReadImgs($event,'uanImageUrls')" @delete="deletePic">
                        @afterRead="afterReadImgs($event,'uanImageUrls')" @delete="deletePics($event,'uanImageUrls')">
                        <view class="upload-item upload-icon flex_base">
                            <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
                        </view>
@@ -459,7 +459,7 @@
            setImages(key) {
                let urls = [];
                for (let i of key) {
                    urls.push(i.url);
                    urls.push(i.name);
                }
                return urls.join(",")
            },
subPackage/statistics/index.vue
@@ -29,9 +29,29 @@
        <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" v-for="i in 6">
                    <text class="c-main f-32 fw mb-20">1</text>
                <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">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>
        </view>
@@ -41,10 +61,19 @@
            <view class="bar-charts bgc-ff">
                <qiun-data-charts type="bar" :opts="opts" :chartData="chartData" />
            </view>
            <view class="pie-charts bgc-ff">
                <qiun-data-charts type="pie" :opts="pieOpts" :chartData="sexChartData" />
            <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">
@@ -119,15 +148,7 @@
<script>
    import captionRow from "@/components/caption/caption.vue"
    import {
        getReportStatistics
    } from "@/api/task/taskReportForRepairs.js"
    import {
        getHouseStatistics
    } from "@/api/house/house.js"
    import {
        getHouseholdStatistics
    } from "@/api/house/household.js"
    import * as statisticsModal from "@/api/statistics/statistics.js"
    export default {
        components: {
            captionRow
@@ -137,8 +158,8 @@
                reportData: {},
                houseData: {},
                chartData: {},
                //您可以通过修改 config-ucharts.js 文件中下标为 ['bar'] 的节点来配置全局默认参数,如都是默认参数,此处可以不传 opts 。实际应用过程中 opts 只需传入与全局默认参数中不一致的【某一个属性】即可实现同类型的图表显示不同的样式,达到页面简洁的需求。
                opts: {
                    fontSize: 10,
                    color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4",
                        "#ea7ccc"
                    ],
@@ -146,17 +167,19 @@
                    enableScroll: false,
                    legend: {},
                    xAxis: {
                        boundaryGap: "justify",
                        // boundaryGap: "justify",
                        disableGrid: false,
                        min: 0,
                        axisLine: false,
                        max: 70
                        // max: 70,
                        fontSize: 10,
                    },
                    yAxis: {},
                    extra: {
                        bar: {
                            type: "stack",
                            width: 30,
                            width: 14,
                            meterBorde: 1,
                            meterFillColor: "#FFFFFF",
                            activeBgColor: "#000000",
@@ -165,7 +188,7 @@
                        }
                    }
                },
                sexChartData:{},
                sexChartData: {},
                pieOpts: {
                    color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4",
                        "#ea7ccc"
@@ -174,34 +197,38 @@
                    enableScroll: false,
                    extra: {
                        pie: {
                            customRadius: 60,
                            activeOpacity: 0.5,
                            activeRadius: 10,
                            offsetAngle: 0,
                            labelWidth: 15,
                            labelWidth: 6,
                            border: false,
                            borderWidth: 3,
                            borderColor: "#FFFFFF"
                        }
                    }
                }
                },
                gridData: {},
                sexData: []
            }
        },
        onLoad() {
            this.getHouseHoldData();
            // this.getServerData();
            this.getHouseData();
            this.getReportData();
            this.getGridData();
        },
        methods: {
            getHouseHoldData() {
                getHouseholdStatistics({
                statisticsModal.getHouseholdStatistics({
                    code: this.siteInfo.id,
                    roleType: uni.getStorageSync("activeRole").roleAlias == "wgy" ? 1 : 2
                }).then(res => {
                    // this.houseHoldData = res.data;
                    let data = res.data;
                    this.sexData = data.gender;
                    this.setPersonData(data.age)
                    this.setSexData(data.gender)
                })
@@ -222,45 +249,25 @@
                }
                this.chartData = JSON.parse(JSON.stringify(res));
            },
            setSexData(data){
            setSexData(data) {
                let res = {
                    series:[
                        {
                            data:[]
                        }
                    ]
                    series: [{
                        data: []
                    }]
                }
                for(let i of data){
                    res.series[0].data.push(
                       {
                           name:i.gender,
                           value:i.numbers
                       }
                    )
                for (let i of data) {
                    res.series[0].data.push({
                        name: i.gender,
                        value: i.numbers
                    })
                }
                 this.sexChartData = JSON.parse(JSON.stringify(res));
                this.sexChartData = JSON.parse(JSON.stringify(res));
            },
            getServerData() {
                //模拟从服务器获取数据时的延时
                setTimeout(() => {
                    //模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接
                    let res = {
                        categories: ["2018", "2019", "2020", "2021", "2022", "2023"],
                        series: [{
                            name: "目标值",
                            data: [35, 36, 31, 33, 13, 34]
                        }]
                    };
                    this.chartData = JSON.parse(JSON.stringify(res));
                }, 500);
            },
            //获取社区概况数据
            getHouseData() {
                getHouseStatistics({
                statisticsModal.getHouseStatistics({
                    code: this.siteInfo.id,
                    roleType: uni.getStorageSync("activeRole").roleAlias == "wgy" ? 1 : 2
                }).then(res => {
@@ -270,12 +277,23 @@
            //获取社区事件数据
            getReportData() {
                getReportStatistics({
                statisticsModal.getReportStatistics({
                    code: this.siteInfo.id,
                    roleType: uni.getStorageSync("activeRole").roleAlias == "wgy" ? 1 : 2
                }).then(res => {
                    console.log(res);
                    this.reportData = res.data;
                })
            },
            //获取网格物业人员
            getGridData() {
                statisticsModal.getGridStatistics({
                    code: this.siteInfo.id,
                    roleType: uni.getStorageSync("activeRole").roleAlias == "wgy" ? 1 : 2
                }).then(res => {
                    console.log(res);
                    this.gridData = res.data;
                })
            }
        }
@@ -385,12 +403,29 @@
        // background-color:#fff;
    }
    .bar-charts,.pie-charts {
    .bar-charts,
    .pie-charts {
        width: 100%;
        height: 300px;
        border-radius: 10rpx;
        padding: 0 20rpx;
        box-sizing: border-box;
    }
    .bar-charts{
        margin:20rpx 0;
    .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/workbench/views/bailReportDetail.vue
@@ -9,7 +9,7 @@
        <view class="licence" v-if="locationImageUrls.length">
            <box-title title="位置图片" class="box-title"></box-title>
            <view class="flex-wrap">
                <view v-for="(i,k) in locationImageUrls" :key="k" class="ml-20 mt-20">
                <view v-for="(i,k) in locationImageUrls" :key="k" class="ml-20 mt-20"  @click="previewImg(i,locationImageUrls)">
                    <u-image :src="i" width="80" height="80"></u-image>
                </view>
            </view>
@@ -343,18 +343,17 @@
                    this.basicData.forEach(item => {
                        item.value = data[item.name]
                    })
                    this.locationImageUrls = this.setImages(data.locationImageUrls);
                    this.locationImageUrls = this.$setImageUrl(data.locationImageUrls);
                })
            },
            setImages(str) {
                if (str) {
                    return str.split(",")
                } else {
                    return []
                }
            previewImg(current,urls){
                uni.previewImage({
                    current,urls
                })
            },
            handleConfirm(e) {
                this.confirmFlag = e.value[0].name;
                this.info.confirmFlag = e.value[0].status;
@@ -376,7 +375,7 @@
            setGoOutImages(key) {
                let urls = [];
                for (let i of key) {
                    urls.push(i.url);
                    urls.push(i.name);
                }
                return urls.join(",")
            },
subPackage/workbench/views/hotelReportDetail.vue
@@ -9,7 +9,7 @@
        <view class="licence" v-if="fireImages.length">
            <box-title title="灭火器图片" class="box-title"></box-title>
            <view class="flex-wrap">
                <view v-for="(i,k) in fireImages" :key="k" class="ml-20 mt-20">
                <view v-for="(i,k) in fireImages" :key="k" class="ml-20 mt-20"   @click="previewImg(i,fireImages)">
                    <u-image :src="i" width="80" height="80"></u-image>
                </view>
            </view>
@@ -17,7 +17,7 @@
        <view class="planegraph" v-if="scImageUrls.length">
            <box-title title="安全通道图片" class="box-title"></box-title>
            <view class="flex-wrap">
                <view v-for="(i,k) in scImageUrls" :key="k" class="ml-20 mt-20">
                <view v-for="(i,k) in scImageUrls" :key="k" class="ml-20 mt-20"  @click="previewImg(i,scImageUrls)">
                    <u-image :src="i" width="80" height="80"></u-image>
                </view>
            </view>
@@ -25,7 +25,7 @@
        <view class="planegraph" v-if="pfImageUrls.length">
            <box-title title="技防设施图片" class="box-title"></box-title>
            <view class="flex-wrap">
                <view v-for="(i,k) in pfImageUrls" :key="k" class="ml-20 mt-20">
                <view v-for="(i,k) in pfImageUrls" :key="k" class="ml-20 mt-20"  @click="previewImg(i,pfImageUrls)">
                    <u-image :src="i" width="80" height="80"></u-image>
                </view>
            </view>
@@ -33,7 +33,7 @@
        <view class="planegraph" v-if="uanImageUrls.length">
            <box-title title="未成年人入住及照片" class="box-title"></box-title>
            <view class="flex-wrap">
                <view v-for="(i,k) in uanImageUrls" :key="k" class="ml-20 mt-20">
                <view v-for="(i,k) in uanImageUrls" :key="k" class="ml-20 mt-20"  @click="previewImg(i,uanImageUrls)">
                    <u-image :src="i" width="80" height="80"></u-image>
                </view>
            </view>
@@ -209,19 +209,18 @@
                    this.basicData.forEach(item => {
                        item.value = data[item.name]
                    })
                    this.fireImages = this.setImages(data.fireImageUrls);
                    this.scImageUrls = this.setImages(data.scImageUrls);
                    this.pfImageUrls = this.setImages(data.pfImageUrls);
                    this.uanImageUrls = this.setImages(data.uanImageUrls);
                    this.fireImages = this.$setImageUrl(data.fireImageUrls);
                    this.scImageUrls = this.$setImageUrl(data.scImageUrls);
                    this.pfImageUrls = this.$setImageUrl(data.pfImageUrls);
                    this.uanImageUrls = this.$setImageUrl(data.uanImageUrls);
                })
            },
            setImages(str) {
                if (str) {
                    return str.split(",")
                } else {
                    return []
                }
            previewImg(current,urls){
                uni.previewImage({
                    current,urls
                })
            },
            handleConfirm(e) {
subPackage/workbench/views/labelReportDetail.vue
@@ -9,15 +9,15 @@
        <view class="licence" v-if="imageUrls.length">
            <box-title title="手持身份证" class="box-title"></box-title>
            <view class="flex-wrap">
                <view v-for="(i,k) in imageUrls" :key="k" class="ml-20 mt-20">
                    <u-image :src="i" width="80" height="80"></u-image>
                <view v-for="(i,k) in imageUrls" :key="k" class="ml-20 mt-20"  @click="previewImg(i,imageUrls)">
                    <u-image :src="i" width="80" height="80" ></u-image>
                </view>
            </view>
        </view>
        <view class="planegraph" v-if="goodsImageUrls.length">
            <box-title title="物品照片" class="box-title"></box-title>
            <view class="flex-wrap">
                <view v-for="(i,k) in goodsImageUrls" :key="k" class="ml-20 mt-20">
                <view v-for="(i,k) in goodsImageUrls" :key="k" class="ml-20 mt-20"   @click="previewImg(i,imageUrls)">
                    <u-image :src="i" width="80" height="80"></u-image>
                </view>
            </view>
@@ -135,17 +135,18 @@
                    this.basicData.forEach(item => {
                        item.value = data[item.name]
                    })
                    this.imageUrls = this.setImages(data.imageUrls);
                    this.goodsImageUrls = this.setImages(data.goodsImageUrls);
                    // this.imageUrls = this.setImages(data.imageUrls);
                    // this.goodsImageUrls = this.setImages(data.goodsImageUrls);
                    this.imageUrls = this.$setImageUrl(data.imageUrls);
                    this.goodsImageUrls = this.$setImageUrl(data.goodsImageUrls)
                })
            },
            setImages(str) {
                if (str) {
                    return str.split(",")
                } else {
                    return []
                }
            },
            previewImg(current,urls){
                uni.previewImage({
                    current,urls
                })
            },
 
            handleConfirm(e) {
                this.form.confirmFlag = e.value[0].name;
subPackage/workbench/views/schoolReportDetail.vue
@@ -9,7 +9,7 @@
        <view class="licence" v-if="imageUrls.length">
            <box-title title="手持身份证" class="box-title"></box-title>
            <view class="flex-wrap">
                <view v-for="(i,k) in imageUrls" :key="k" class="ml-20 mt-20">
                <view v-for="(i,k) in imageUrls" :key="k" class="ml-20 mt-20" @click="previewImg(i,imageUrls)">
                    <u-image :src="i" width="80" height="80"></u-image>
                </view>
            </view>
@@ -17,7 +17,7 @@
        <view class="planegraph" v-if="goodsImageUrls.length">
            <box-title title="物品照片" class="box-title"></box-title>
            <view class="flex-wrap">
                <view v-for="(i,k) in goodsImageUrls" :key="k" class="ml-20 mt-20">
                <view v-for="(i,k) in goodsImageUrls" :key="k" class="ml-20 mt-20"   @click="previewImg(i,goodsImageUrls)">
                    <u-image :src="i" width="80" height="80"></u-image>
                </view>
            </view>
@@ -183,19 +183,18 @@
                    this.basicData.forEach(item => {
                        item.value = data[item.name] || "未完善"
                    })
                    this.foImageUrls = this.setImages(data.foImageUrls);
                    this.fireFacsImageUrls = this.setImages(data.fireFacsImageUrls);
                    this.patrolImageUrls = this.setImages(data.patrolImageUrls);
                    this.antiCollisionImageUrls = this.setImages(data.antiCollisionImageUrls);
                    this.haImageUrls = this.setImages(data.haImageUrls);
                    this.foImageUrls = this.$setImageUrl(data.foImageUrls);
                    this.fireFacsImageUrls = this.$setImageUrl(data.fireFacsImageUrls);
                    this.patrolImageUrls = this.$setImageUrl(data.patrolImageUrls);
                    this.antiCollisionImageUrls = this.$setImageUrl(data.antiCollisionImageUrls);
                    this.haImageUrls = this.$setImageUrl(data.haImageUrls);
                })
            },
            setImages(str) {
                if (str) {
                    return str.split(",")
                } else {
                    return []
                }
            previewImg(current,urls){
                uni.previewImage({
                    current,urls
                })
            },
            handleConfirm(e) {