Lou
2024-01-28 d46a4b1d0f71b5e60a38da891bb7fe2064633cf7
更新
12 files modified
3 files added
1074 ■■■■ changed files
api/place/place.js 26 ●●●●● patch | view | raw | blame | history
api/reporting/reporting.js 9 ●●●●● patch | view | raw | blame | history
pages.json 27 ●●●●● patch | view | raw | blame | history
pages/home/index.vue 12 ●●●●● patch | view | raw | blame | history
subPackage/bs/views/danger.vue 281 ●●●●● patch | view | raw | blame | history
subPackage/house/houseNumber/index.vue 191 ●●●●● patch | view | raw | blame | history
subPackage/label/hotel.vue 104 ●●●●● patch | view | raw | blame | history
subPackage/label/hotelList.vue 3 ●●●● patch | view | raw | blame | history
subPackage/label/index.vue 32 ●●●● patch | view | raw | blame | history
subPackage/workbench/views/audit.vue 30 ●●●● patch | view | raw | blame | history
subPackage/workbench/views/auditList.vue 181 ●●●●● patch | view | raw | blame | history
subPackage/workbench/views/checkDetail.vue 102 ●●●●● patch | view | raw | blame | history
subPackage/workbench/views/cscj.vue 42 ●●●● patch | view | raw | blame | history
subPackage/workbench/views/hotelReportDetail.vue 2 ●●● patch | view | raw | blame | history
subPackage/workbench/views/selectHandle.vue 32 ●●●●● patch | view | raw | blame | history
api/place/place.js
@@ -22,4 +22,30 @@
        method: 'GET',
        params
    })
}
//场所检查列表
export const getPlaceCheckList = (params) => {
    return http.request({
        url: '/blade-placeCheck/placeCheck/page',
        method: 'GET',
        params
    })
}
//场所检查
export const addPlaceCheck = (data) => {
    return http.request({
        url: '/blade-placeCheck/placeCheck/save',
        method: 'POST',
        data: data
    })
}
export const getPlaceCheckDetail = (params) => {
    return http.request({
        url: '/blade-placeCheck/placeCheck/detail',
        method: 'GET',
        params
    })
}
api/reporting/reporting.js
@@ -178,4 +178,13 @@
        method: 'POST',
        data: data
    })
}
//添加隐患上报
export const saveDangerReporting = (data) => {
    return http.request({
        url: '/blade-hiddenDangerRecord/hiddenDangerRecord/add',
        method: 'POST',
        data: data
    })
}
pages.json
@@ -563,6 +563,24 @@
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black"
                    }
                },
                {
                    "path": "views/selectHandle",
                    "style": {
                        // "navigationBarTitleText": "网格员巡查",
                        "enablePullDownRefresh": false,
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black"
                    }
                },
                {
                    "path": "views/checkDetail",
                    "style": {
                        "navigationBarTitleText": "场所检查详情",
                        "enablePullDownRefresh": false,
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black"
                    }
                }
            ]
        },
@@ -648,6 +666,15 @@
                        "navigationBarTextStyle": "black",
                        "enablePullDownRefresh": false
                    }
                },
                {
                    "path": "views/danger",
                    "style": {
                        "navigationBarTitleText": "隐患上报",
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black",
                        "enablePullDownRefresh": false
                    }
                }
            ]
        },
pages/home/index.vue
@@ -636,6 +636,13 @@
                        let eventType = 0;
                        let obj = that.getUrlParams(res.result)
                        console.log(obj)
                        if (!that.isLogin) {
                            let data = res.data;
                            that.$u.func.globalNavigator(
                                `/subPackage/bs/views/danger?id=${obj.stdId}`, "navTo")
                            return
                        }
                        if (obj.stdId == "3C77B40EFC5F4C899AA74BEE747D9DF1") {
                            eventType = 1;
                            that.$u.func.globalNavigator(
@@ -680,7 +687,7 @@
                    roleName: uni.getStorageSync("activeRole").roleName,
                    addressCode: code,
                }).then(res => {
                    console.log(res)
                    let {
                        isJur,
                        doorplateType,
@@ -695,6 +702,9 @@
                        unitCode,
                        buildingCode
                    } = res.data;
                    if (isJur == 1) {
                        if (doorplateType == "户室牌") {
                            this.$u.func.globalNavigator(
subPackage/bs/views/danger.vue
New file
@@ -0,0 +1,281 @@
<template>
    <view class="">
        <!-- <view class="site-box bgc-ff flex">
                <view class="flex a-i-c">
                <u-icon name="map-fill" color="#AAAAAA"></u-icon>
                <text class="f-28 c-aa ml-20">当前小区:</text>
            </view>
            <text class="address f-28">{{ curSelectSite.name }}</text>
        </view> -->
        <view class="top  bgc-ff">
            <view class="top-btn bgc-main f-26 c-ff" @click="navToLogin()">
                场所负责人登录
            </view>
        </view>
        <view class="content bgc-ff">
            <u-form labelPosition="left" :model="info" :rules="rules" ref="form" labelWidth="90"
                :labelStyle="{fontSize:'28rpx'}">
                <u-form-item label="姓名" prop="name" borderBottom ref="name">
                    <u-input v-model="info.name" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
                        inputAlign="right"></u-input>
                </u-form-item>
                <u-form-item label="手机" prop="phone" borderBottom ref="phone">
                    <u-input v-model="info.phone" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
                        inputAlign="right"></u-input>
                </u-form-item>
                <!-- <u-form-item label="事发位置" prop="address" :borderBottom="false">
                    <view class="address-row flex">
                        <view class="address-content f-28" v-if="info.address">
                            {{info.address}}
                        </view>
                        <view class="address-content f-28 c-99" v-if="!info.address">
                            请选择地址
                        </view>
                        <view class="location-btn c-main f-24" @click="getLocation()">
                            获取地址
                        </view>
                    </view>
                </u-form-item> -->
            </u-form>
        </view>
        <view class="upload bgc-ff">
            <view class="f-28 mb-20">描述</view>
            <u-textarea v-model="info.remark" placeholder="请输入内容" border="none"
                placeholderClass="c-99 f-26"></u-textarea>
            <view class="mt-20">
                <u-upload :fileList="form.images" :previewFullImage="uploadConfig.previewFullImage"
                    :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple" :maxCount="uploadConfig.maxCount"
                    :capture="uploadConfig.capture" @afterRead="afterReadImg" @delete="deletePic">
                    <view class="upload-item upload-icon flex_base">
                        <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
                    </view>
                </u-upload>
            </view>
        </view>
        <!-- <button class="submit-btn" @click="sumitInfo">提交</button> -->
        <!-- <button class="list-btn" @click="navigatorPage">我上报的事件</button> -->
        <footer-btn @click="sumitInfo"></footer-btn>
    </view>
</template>
<script>
    import uploadMixin from "@/mixin/uploadMixin";
    import {
        save
    } from "@/api/task/taskReportForRepairs";
    import {
        saveDangerReporting
    } from "@/api/reporting/reporting.js"
    import {
        getQrCodeDetail
    } from "@/api/system/index"
    export default {
        mixins: [uploadMixin],
        data() {
            return {
                info: {
                    name: "",
                    phone: "",
                    remark: "",
                },
                rules: {
                    'name': {
                        type: 'string',
                        required: true,
                        message: '请输入姓名',
                        trigger: ['blur', 'change']
                    },
                    'phone': [{
                            type: 'string',
                            required: true,
                            message: '请输入手机号',
                            trigger: ['blur', 'change']
                        },
                        {
                            validator: (rule, value, callback) => {
                                return uni.$u.test.mobile(value);
                            },
                            message: '手机号码不正确',
                            trigger: ['change', 'blur']
                        }
                    ],
                    // 'address': {
                    //     type: 'string',
                    //     required: true,
                    //     message: '请选择地址',
                    //     trigger: ['blur', 'change']
                    // },
                },
                desc: "",
                title: "",
                curSelectSite: {}
            }
        },
        onLoad(option) {
            this.info.houseCode = option.id;
        },
        // onShow() {
        //     this.curSelectSite = uni.getStorageSync('siteInfo')
        //     this.info.addressCode = this.curSelectSite.houseCode
        //     console.log(this.curSelectSite);
        // },
        methods: {
            //获取二维码详情
            getDetail() {
                getQrCodeDetail({
                    addressCode: code
                }).then(res => {
                    console.log(res);
                })
            },
            getLocation() {
                uni.chooseLocation({
                    success: (res) => {
                        this.$set(this.info, "address", res.address);
                        this.$set(this.info, "lat", res.latitude);
                        this.$set(this.info, "lng", res.longitude)
                    }
                })
            },
            sumitInfo() {
                const that = this
                this.$refs.form.validate().then(valid => {
                    if (this.form.images.length > 0) {
                        let urls = []
                        this.form.images.forEach(e => {
                            urls.push(e.name)
                        })
                        this.info.imgUrl = urls.join(",")
                    }
                    saveDangerReporting(that.info).then(res => {
                        uni.showToast({
                            icon: 'success',
                            title: '提交成功',
                            success() {
                                setTimeout(() => {
                                    uni.navigateBack();
                                }, 1000)
                            }
                        })
                    })
                })
            },
            navigatorPage() {
                let url = "/subPackage/bs/views/repairList" + "?title=" + this.title + "&type=" + this.info.type
                this.$u.func.globalNavigator(url, "navTo")
            },
            navToLogin() {
                this.$u.func.globalNavigator("/pages/login/login", "navTo")
            }
        }
    }
</script>
<style lang="less">
    page {
        background-color: #F5F5F5;
    }
    .top {
        display: flex;
        justify-content: flex-end;
        padding: 20rpx;
    }
    .top-btn {
        padding: 16rpx 22rpx;
        border-radius: 6rpx;
        text-align: center;
    }
    .content {
        margin: 20rpx 30rpx;
        padding: 0 30rpx;
    }
    .site-box {
        padding: 30rpx;
        margin: 20rpx 30rpx;
        border-radius: 4rpx;
        .c-aa {
            color: #aaa;
        }
        .address {
            width: 60%;
            margin-left: 25rpx;
        }
    }
    .upload-item {
        width: 140rpx;
        height: 140rpx;
        border: 1px solid #EEEEEE;
    }
    .upload {
        margin: 0 30rpx;
        padding: 30rpx;
    }
    .submit-btn {
        width: 690rpx;
        height: 78rpx;
        line-height: 78rpx;
        background: linear-gradient(163deg, #01BDFC 0%, #017BFC 100%);
        border-radius: 8rpx 8rpx 8rpx 8rpx;
        font-size: 32rpx;
        color: #fff;
        margin-top: 50rpx;
    }
    .list-btn {
        width: 690rpx;
        height: 78rpx;
        line-height: 78rpx;
        background: linear-gradient(163deg, #c7d7dc 0%, #c3cdd8 100%);
        border-radius: 8rpx 8rpx 8rpx 8rpx;
        font-size: 32rpx;
        color: #fff;
        margin-top: 50rpx;
    }
    .address-row {
        flex: 1;
        justify-content: flex-end;
        align-items: center;
    }
    .address-content {
        width: calc(100% - 116rpx - 20rpx);
        margin-right: 20rpx;
        text-align: right;
    }
    .location-btn {
        width: 116rpx;
        height: 46rpx;
        line-height: 46rpx;
        border-radius: 4rpx;
        border: 1px solid currentColor;
        padding: 0;
        background-color: #fff;
        text-align: center;
    }
</style>
subPackage/house/houseNumber/index.vue
@@ -1,6 +1,6 @@
<template>
    <view class="container">
        <view class="info-box">
        <view class="info-box" :style="{paddingBottom:isPolice?'228rpx':'110rpx'}">
            <view class="item">
                <box-title title="门牌号信息"></box-title>
                <line-item :list="houseNumberData"></line-item>
@@ -67,7 +67,7 @@
            </view>
        </view>
        <u-toast ref="uToast"></u-toast>
        <view class="btn-box">
        <view class="btn-box" :style="{bottom:isPolice?'118rpx':'0'}">
            <view class="sl-box" @click="csjlClick">
                <u-icon name="/static/icon/menu-01.png" size="30"></u-icon>
                <text>场所记录</text>
@@ -77,6 +77,48 @@
                <text>场所采集</text>
            </view>
        </view>
        <footer-btn v-if="isPolice" text="场所检查" @click="showPopup = true"></footer-btn>
        <u-popup :show="showPopup" mode="bottom" round="10" :closeable="true" @close="showPopup=false">
            <view class="">
                <view class="popup-content">
                    <view class="mb-20">
                        <view class=" f-28 mb-20">整改内容</view>
                        <u--textarea v-model="checkInfo.remark" placeholder="请输入内容"></u--textarea>
                    </view>
                    <view class="mb-20">
                        <view class=" f-28 mb-20">图片</view>
                        <u-upload :fileList="form.images" :previewFullImage="uploadConfig.previewFullImage"
                            :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                            :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture" @afterRead="afterReadImg"
                            @delete="deletePic">
                            <view class="upload-item upload-icon flex_base">
                                <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
                            </view>
                        </u-upload>
                    </view>
                    <view class="flex j-c-s-b a-i-c mb-20" @click="showSignature = true">
                        <view class="f-28">签名</view>
                        <u-icon name="arrow-right"></u-icon>
                    </view>
                    <view class="" v-if="signatureUrl">
                        <u-image :src="signatureUrl" width="70" height="70"></u-image>
                    </view>
                </view>
                <view class="popup-bottom">
                    <button class="popup-btn" @click="submitCheck">保存</button>
                </view>
            </view>
        </u-popup>
        <u-popup mode="bottom" :show="showSignature" round="10" zIndex="20000" :closeable="true"
            @close="showSignature=false">
            <view class="signture-popup">
                <jushi-signature :settings="signatureSettings" @change="signatureChange"></jushi-signature>
            </view>
        </u-popup>
    </view>
</template>
<script>
@@ -89,9 +131,19 @@
    } from '@/api/place/place.js'
    import boxTitle from '../components/boxTitle/index2.vue'
    import {
        prodUrl,
        clientId,
        clientSecret,
        minioBaseUrl
    } from "../../../common/setting";
    import {
        addPlaceCheck
    } from "@/api/place/place.js"
    import uploadMixin from "@/mixin/uploadMixin";
    export default {
        mixins: [uploadMixin],
        components: {
            lineItem,
            boxTitle
@@ -232,12 +284,40 @@
                placeId: "",
                eventType: 0, //历史事件类型    1邻里纠纷    2噪音扰民 
                neiName: "", //社区名称
                placeName: "" //场所名称
                placeName: "", //场所名称
                isPolice: false, //当前角色是否为民警
                showPopup: false, //场所检查弹窗
                checkInfo: {
                    remark: "",
                    imageUrls: "",
                    signaturePath: ""
                },
                form: {
                    images: []
                },
                signatureSettings: { //签名设置
                    width: '700', //签名区域的宽
                    height: '800', //签名区域的高
                    lineWidth: 3, //签名时线宽
                    textColor: '#007AFF' //签名文字颜色
                },
                showSignature: false,
                header: {},
                uploadConfig: {
                    url: prodUrl + "/blade-resource/oss/endpoint/put-file",
                    header: {},
                },
                signatureUrl: ""
            }
        },
        onLoad(option) {
            console.log("oload=>", option)
            this.stdId = option.stdId
            if (uni.getStorageSync("activeRole").roleName == "民警") {
                this.isPolice = true;
            }
            if (option.addressType) {
                this.addressType = option.addressType
            }
@@ -295,14 +375,14 @@
                            item.value = data[item.name] || '未完善'
                        }
                        if (item.name == 'label' && data.label) {
                            let labelArr = []
                            placePoiLabelVOList.forEach(item => {
                                labelArr.push(item.labelName)
                            })
                            item.value = labelArr.join('、')
                        if (item.name == 'label' && data.placePoiLabelVOList.length) {
                            // let labelArr = []
                            // placePoiLabelVOList.forEach(item => {
                            //     labelArr.push(item.labelName)
                            // })
                            // item.value = labelArr.join('、')
                            item.value = data.placePoiLabelVOList[data.placePoiLabelVOList.length - 1]
                                .labelName;
                        }
                    })
@@ -378,6 +458,62 @@
                } else {
                    this.$u.func.globalNavigator(`/subPackage/workbench/views/auditList?code=${this.stdId}`)
                }
            },
            getUploadHeader() {
                let accessToken = uni.getStorageSync('accessToken');
                let myHeader = {}
                if (accessToken) {
                    myHeader['Blade-Auth'] = 'bearer ' + accessToken;
                }
                // 客户端认证参数
                myHeader['Authorization'] = 'Basic ' + Base64.encode(clientId + ':' + clientSecret);
                this.uploadConfig.header = myHeader
            },
            signatureChange(e) {
                // this.signatureUrl = e;
                this.uploadSignImg(e)
            },
            uploadSignImg(url) {
                uni.uploadFile({
                    url: this.uploadConfig.url,
                    filePath: url,
                    name: 'file',
                    header: this.uploadConfig.header,
                    success: (res) => {
                        console.log(res);
                        let data = JSON.parse(res.data);
                        if (res.statusCode == 200 && data.code == 200) {
                            // this.handleSubmit(data.data.name);
                            this.showSignature = false;
                            this.signatureUrl = data.data.link;
                            this.checkInfo.signaturePath = data.data.name;
                        }
                    }
                })
            },
            submitCheck() {
                if (this.form.images.length) {
                    let arr = [];
                    for (let i of this.form.images) {
                        arr.push(i.name)
                    }
                    this.checkInfo.imageUrls = arr.join(",")
                }
                if (!this.checkInfo.signaturePath) {
                    this.$showTips("请填写签名");
                    return;
                }
                this.checkInfo.houseCode = this.stdId;
                addPlaceCheck(this.checkInfo).then(res => {
                    if (res.code == 200) {
                        this.$showTips("操作成功", "success")
                        this.showPopup = false;
                    }
                })
            }
        },
    }
@@ -437,7 +573,6 @@
            box-shadow: 0 2rpx 12rpx 0 rgba(0, 0, 0, .1);
            position: fixed;
            left: 0;
            bottom: 0;
            .sl-box {
                flex: 1;
@@ -485,4 +620,36 @@
            text-align: right;
        }
    }
    .popup-content {
        padding: 40rpx 20rpx 20rpx;
    }
    .popup-bottom {
        padding: 20rpx;
        .popup-btn {
            width: 100%;
            height: 70rpx;
            border-radius: 8rpx;
            font-size: 28rpx;
            border: none;
            color: #fff;
            background: linear-gradient(163deg, #01BDFC 0%, #017BFC 100%);
        }
        .popup-btn::after {
            border: none;
        }
    }
    .upload-item {
        width: 140rpx;
        height: 140rpx;
        border: 1px solid #EEEEEE;
    }
    .signture-popup {
        padding-bottom: 20rpx;
    }
</style>
subPackage/label/hotel.vue
@@ -9,7 +9,7 @@
                        {{info.districtName}}
                    </view>
                </u-form-item> -->
                <u-form-item label="酒店名称" prop="hotelName" borderBottom required>
                <u-form-item label="场所名称" prop="hotelName" borderBottom required>
                    <u-input v-model="info.hotelName" border="none" placeholder="请输入" placeholderClass="f-28 c-99"
                        inputAlign="right"></u-input>
                </u-form-item>
@@ -123,43 +123,44 @@
                    </u-upload>
                </view>
            </view>
            <block v-if="isNineHotle">
                <view class="content">
                    <u-form-item label="接待未成年人需要做到的五个必须" prop="fiveMust" labelWidth="300" :borderBottom="false" required
                        labelPosition="top">
                        <view class="mt-30">
                            <u-radio-group v-model="info.fiveMust" placement="column">
                                <u-radio :customStyle="{marginBottom: '10px'}" v-for="(item, index) in mustList"
                                    :key="index" :label="item.name" :name="item.value" labelSize="14" iconSize="20">
                                </u-radio>
                            </u-radio-group>
                        </view>
                    </u-form-item>
                </view>
                <view class="upload bgc-ff">
                    <view class="f-28 mb-20">未成年人入住登记本照片上传</view>
                    <view class="mt-20">
                        <u-upload :fileList="uanImageUrls" :previewFullImage="uploadConfig.previewFullImage"
                            :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                            :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                            @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>
                        </u-upload>
                    </view>
                </view>
            <view class="content">
                <u-form-item label="接待未成年人需要做到的五个必须" prop="fiveMust" labelWidth="300" :borderBottom="false" required
                    labelPosition="top">
                    <view class="mt-30">
                        <u-radio-group v-model="info.fiveMust" placement="column">
                            <u-radio :customStyle="{marginBottom: '10px'}" v-for="(item, index) in mustList"
                                :key="index" :label="item.name" :name="item.value" labelSize="14" iconSize="20">
                <view class="content">
                    <u-form-item label="是否实名登记" prop="realName" borderBottom required>
                        <u-radio-group v-model="info.realName">
                            <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in statusList"
                                :key="index" :label="item" :name="item">
                            </u-radio>
                        </u-radio-group>
                    </view>
                </u-form-item>
            </view>
            <view class="upload bgc-ff">
                <view class="f-28 mb-20">未成年人入住登记本照片上传</view>
                <view class="mt-20">
                    <u-upload :fileList="uanImageUrls" :previewFullImage="uploadConfig.previewFullImage"
                        :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                        :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                        @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>
                    </u-upload>
                    </u-form-item>
                </view>
            </view>
            <view class="content">
                <u-form-item label="是否实名登记" prop="realName" borderBottom required>
                    <u-radio-group v-model="info.realName">
                        <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in statusList" :key="index"
                            :label="item" :name="item">
                        </u-radio>
                    </u-radio-group>
                </u-form-item>
            </view>
            </block>
        </u-form>
        <button class="submit-btn" @click="sumitInfo">{{isEdit?"保存":"提交"}}</button>
        <button class="list-btn" @click="navigatorPage">我上报的事件</button>
@@ -195,7 +196,7 @@
                    scStatus: "",
                    pfFlag: "",
                    pfName: "",
                    realName: "",
                    // realName: "",
                    houseCode: "",
                    checkUserId: "",
                    reportType: 2
@@ -281,12 +282,12 @@
                        message: '请输入技防设施名称',
                        trigger: ['blur', 'change']
                    },
                    'info.realName': {
                        type: 'string',
                        required: true,
                        message: '请选择是否完全实名制登记',
                        trigger: ['blur', 'change']
                    }
                    // 'info.realName': {
                    //     type: 'string',
                    //     required: true,
                    //     message: '请选择是否完全实名制登记',
                    //     trigger: ['blur', 'change']
                    // }
                },
                showSelectDate: false,
                fireImageUrls: [], //灭火器图片
@@ -332,10 +333,14 @@
                ],
                isEdit: false,
                id: "",
                status: ""
                status: "",
                isNine: 2,
                ids: ["120101,120102,120103,120104"],
                isNineHotle: false
            }
        },
        onLoad(option) {
            if (option.id) {
                this.isEdit = true;
                this.getDetail(option.id)
@@ -348,6 +353,20 @@
                this.$set(this.info, "checkTelephone", userInfo.phone);
                this.$set(this.info, "checkUserId", userInfo.user_id);
                this.$set(this.info, "hotelName", siteInfo.name);
                this.isNine = siteInfo.isNine ? siteInfo.isNine : 2;
                if (this.ids.indexOf(siteInfo.categoryList[0].categoryNo) != -1 && siteInfo.isNine != 1) {
                    this.isNineHotle = true;
                }
                if (this.ids.indexOf(siteInfo.categoryList[0].categoryNo) != -1 && siteInfo.isNine == 1) {
                    this.info.eventType = 0;
                }
                if (this.ids.indexOf(siteInfo.categoryList[0].categoryNo) == -1 && siteInfo.isNine == 1) {
                    this.info.eventType = 1;
                    uni.setNavigationBarTitle({
                        title: "消防检查"
                    })
                }
            }
        },
@@ -372,6 +391,7 @@
                        if (data.fireStatus) {
                            this.fireStatusIndex = [this.$getIndex(this.fireStatus[0], data.fireStatus)];
                        }
                        this.info.eventType = data.eventType;
                        this.fireImageUrls = this.$setImageUrl(data.fireImageUrls, 2);
                        this.scImageUrls = this.$setImageUrl(data.scImageUrls, 2);
subPackage/label/hotelList.vue
@@ -3,7 +3,8 @@
        <view class="list">
            <view class="list-item bgc-ff mb-20" v-for="(i,k) in list" :key="k" @click="navTo(i.taskId)">
                <view class="item-title flex a-i-c j-c-s-b mb-20">
                    <text class="f-32 fw">{{i.hotelName}}</text>
                    <text class="f-32 fw" v-if="i.type == 7">消防检查</text>
                    <text class="f-32 fw" v-else>{{i.hotelName}}</text>
                    <u-tag v-if="i.confirmFlag == 4" text="待接收" type="warning" plain plainFill></u-tag>
                    <u-tag v-if="i.confirmFlag == 1" text="待审批" type="warning" plain plainFill></u-tag>
                    <u-tag v-if="i.confirmFlag == 2" text="审核通过" type="success" plain plainFill></u-tag>
subPackage/label/index.vue
@@ -39,12 +39,22 @@
                <text class="address f-28">{{curSiteInfo.name}}</text>
            </view>
            <view class="nav flex flex-wrap j-c-s-b">
            <view class="nav flex flex-wrap j-c-s-b" v-if="isNine == 2">
                <view class="nav-item" v-for="(i,k) in labelList" :key="k" @click="navTo(i.path,k)">
                    <image class="nav-item-bg" :src="i.bgImg" mode="aspectFill"></image>
                    <view class="nav-item-inner flex f-d-c">
                        <text class="f-32 mb-30">{{i.title}}</text>
                        <button class="item-btn" :style="{backgroundColor:i.background}">立即上报</button>
                    </view>
                </view>
            </view>
            <view class="nav flex flex-wrap j-c-s-b" v-if="isNine == 1">
                <view class="nav-item" :key="k" @click="navTo('hotel')">
                    <image class="nav-item-bg" src="/static/icon/nav-bg-12.png" mode="aspectFill"></image>
                    <view class="nav-item-inner flex f-d-c">
                        <text class="f-32 mb-30">{{isNineHotel?"旅馆安全":"消防检查"}}</text>
                        <button class="item-btn" :style="{backgroundColor:'#EC7E51'}">立即上报</button>
                    </view>
                </view>
            </view>
@@ -106,14 +116,28 @@
                ],
                curSiteInfo: {},
                count: {},
                labelList: []
                labelList: [],
                isNine: 2,
                isNineHotel: false
            }
        },
        onLoad() {
            this.curSiteInfo = uni.getStorageSync("siteInfo");
            let siteInfo = uni.getStorageSync("siteInfo");
            this.curSiteInfo = siteInfo;
            this.isNine = siteInfo.isNine;
            if (siteInfo.isNine == 1) {
                for (let i of this.navList[1]) {
                    if (i.id.includes(siteInfo.categoryList[0].categoryNo)) {
                        this.isNineHotel = true;
                    }
                }
            } else {
                this.getMenu()
            }
            // this.navList = uni.getStorageSync("labelMenuList");
            this.getMenu()
        },
        onShow() {
subPackage/workbench/views/audit.vue
@@ -20,7 +20,7 @@
        <view class="list">
            <view class="list-item bgc-ff mb-20" v-for="(i,k) in list" :key="k"
                @click="navTo(i.id,i.reportType,i.status)">
                @click="navTo(i.id,i.reportType,i.status,i.type)">
                <view class="item-title flex a-i-c j-c-s-b mb-20">
                    <text class="f-32 fw">{{i.name}}</text>
                    <u-tag v-if="i.status == 4" text="待接收" type="warning" plain plainFill></u-tag>
@@ -186,38 +186,38 @@
                    this.loadingStatus = 'nomore'
                })
            },
            navTo(id, type, status) {
            navTo(id, reportType, status, type) {
                if (status == 4) {
                    if (uni.getStorageSync("activeRole").roleName == "民警") {
                        this.navToDetail(type, id)
                        this.navToDetail(reportType, id, type)
                    } else {
                        this.navToEdit(type, id);
                        this.navToEdit(reportType, id, type);
                    }
                } else {
                    this.navToDetail(type, id)
                    this.navToDetail(reportType, id, type)
                }
            },
            navToEdit(type, id) {
                if (type == 1) {
            navToEdit(reportType, id, type) {
                if (reportType == 1) {
                    this.$u.func.globalNavigator(`/subPackage/label/bail?id=${id}`)
                } else if (type == 2) {
                } else if (reportType == 2 || type == 7) {
                    this.$u.func.globalNavigator(`/subPackage/label/hotel?id=${id}`)
                } else if (type == 3 || type == 4 || type == 5) {
                } else if (reportType == 3 || reportType == 4 || reportType == 5) {
                    this.$u.func.globalNavigator(`/subPackage/label/form?id=${id}`)
                } else if (type == 6) {
                } else if (reportType == 6) {
                    this.$u.func.globalNavigator(`/subPackage/label/school?id=${id}`)
                }
            },
            navToDetail(type, id) {
                if (type == 1) {
            navToDetail(reportType, id, type) {
                if (reportType == 1) {
                    this.$u.func.globalNavigator(`bailReportDetail?id=${id}`)
                } else if (type == 2) {
                } else if (reportType == 2 || type == 7) {
                    this.$u.func.globalNavigator(`hotelReportDetail?id=${id}`)
                } else if (type == 3 || type == 4 || type == 5) {
                } else if (reportType == 3 || reportType == 4 || reportType == 5) {
                    this.$u.func.globalNavigator(`labelReportDetail?id=${id}`)
                } else if (type == 6) {
                } else if (reportType == 6) {
                    this.$u.func.globalNavigator(`schoolReportDetail?id=${id}`)
                }
            },
subPackage/workbench/views/auditList.vue
@@ -3,9 +3,9 @@
        <u-sticky>
            <view class="bgc-ff">
                <view class="tab">
                    <!-- <u-tabs :list="tabList" :current="tabIndex" @click="changeTab" :inactiveStyle="{color:'#999999'}"
                        :activeStyle="{color:'#017BFC'}">
                    </u-tabs> -->
                    <u-tabs :list="tabList" :current="tabIndex" @click="changeTab" :scrollable="false"
                        :inactiveStyle="{color:'#999999'}" :activeStyle="{color:'#017BFC'}">
                    </u-tabs>
                    <view class="search flex j-c-s-b a-i-c">
                        <view class="tab-filter flex j-c-c a-i-c" @click="showDateModal">
                            <text class="f-28">时间筛选</text>
@@ -20,9 +20,10 @@
        <view class="list">
            <view class="list-item bgc-ff mb-20" v-for="(i,k) in list" :key="k"
                @click="navTo(i.id,i.reportType,i.status)">
                <view class="item-title flex a-i-c j-c-s-b mb-20">
                    <text class="f-32 fw">{{i.name}}</text>
                @click="navTo(i.id,i.reportType,i.status,i.type)">
                <view class="item-title flex a-i-c j-c-s-b mb-20" v-if="tabIndex == 0">
                    <text class="f-32 fw" v-if="i.type == 7">消防检查</text>
                    <text class="f-32 fw" v-else>{{i.name}}</text>
                    <u-tag v-if="i.status == 4" text="待接收" type="warning" plain plainFill></u-tag>
                    <u-tag v-if="i.status == 1" text="待审批" type="warning" plain plainFill></u-tag>
                    <u-tag v-if="i.status == 2" text="审核通过" type="success" plain plainFill></u-tag>
@@ -32,9 +33,13 @@
                    <text class="f-28">时间</text>
                    <text class="f-28 c-66">{{i.createTime}}</text>
                </view>
                <view class="item-row flex a-i-c j-c-s-b">
                <view class="item-row flex a-i-c j-c-s-b" v-if="ftabIndex == 0">
                    <text class="f-28">地址</text>
                    <text class="address f-28 c-66">{{i.addressName || ""}}</text>
                </view>
                <view class="item-row flex a-i-c j-c-s-b" v-if="tabIndex == 1">
                    <text class="f-28">整改内容</text>
                    <text class="address f-28 c-66">{{i.remark}}</text>
                </view>
            </view>
        </view>
@@ -49,6 +54,11 @@
    import {
        getAuditReportingList
    } from "@/api/reporting/reporting"
    import {
        getPlaceCheckList
    } from "@/api/place/place.js"
    import dateRangeModal from '@/components/dateRangeModal/modal.vue';
    export default {
        components: {
@@ -56,28 +66,12 @@
        },
        data() {
            return {
                tabList: [
                    {
                        name: "全部",
                        status: "",
                tabList: [{
                        name: "标签报事"
                    },
                    {
                        name: "待接收",
                        status: 4,
                        name: "场所检查"
                    },
                    {
                        name: "待审核",
                        status: 1
                    },
                    {
                        name: "审核通过",
                        status: 2
                    },
                    {
                        name: "已拒绝",
                        status: 3
                    }
                ],
                tabIndex: 0,
                currentStatus: 2,
@@ -94,17 +88,20 @@
        onLoad(option) {
            console.log(option);
            if (option.reportType) {
                this.reportType = option.reportType;
                uni.setNavigationBarTitle({
                    title: "取保候审"
                })
            }
            if (option.from == "index") {
                uni.setNavigationBarTitle({
                    title: "场所任务"
                })
            }
            uni.setNavigationBarTitle({
                title: "历史事件"
            })
            // if (option.reportType) {
            //     this.reportType = option.reportType;
            //     uni.setNavigationBarTitle({
            //         title: "取保候审"
            //     })
            // }
            // if (option.from == "index") {
            //     uni.setNavigationBarTitle({
            //         title: "场所任务"
            //     })
            // }
            if (option.from == "task") {
                this.tabIndex = 1;
                this.currentStatus = 1;
@@ -116,12 +113,15 @@
        },
        onReachBottom() {
            this.currentPage++
            this.getList()
            if (this.tabIndex == 0) {
                this.getList()
            } else {
                this.getCheckList();
            }
        },
        methods: {
            searchConfirm() {
                this.resetParams()
                this.getList()
@@ -134,7 +134,11 @@
                this.tabIndex = e.index;
                this.currentStatus = e.status;
                this.resetParams();
                this.getList();
                if (e.index == 0) {
                    this.getList()
                } else {
                    this.getCheckList();
                }
            },
            resetParams() {
                this.list = [];
@@ -186,38 +190,85 @@
                    this.loadingStatus = 'nomore'
                })
            },
            navTo(id, type, status) {
                if (status == 4) {
                    if (uni.getStorageSync("activeRole").roleName == "民警") {
                        this.navToDetail(type, id)
            getCheckList() {
                this.$nextTick(() => {
                    this.loadingStatus = 'loadingmore'
                    this.$refs.uToast.show({
                        type: 'loading',
                        message: '正在加载',
                        duration: 9999999
                    })
                })
                let params = {
                    page: this.currentPage,
                    size: 20,
                }
                if (this.selectDate.length) {
                    params.startTime = this.selectDate[0]
                    params.endTime = this.selectDate[1]
                }
                if (this.houseCode) {
                    params.houseCode = this.houseCode;
                }
                if (this.keyword) {
                    params.name = this.keyword;
                }
                getPlaceCheckList(params).then(res => {
                    if (res.code != 200) {
                        uni.showToast({
                            title: '数据请求失败',
                            icon: 'error'
                        })
                        return
                    }
                    let records = res.data.records;
                    this.list = [...this.list, ...records]
                    this.$nextTick(() => {
                        this.$refs.uToast.isShow = false
                    })
                    this.loadingStatus = 'nomore'
                })
            },
            navTo(id, reportType, status, type) {
                if (this.tabIndex == 0) {
                    if (status == 4) {
                        if (uni.getStorageSync("activeRole").roleName == "民警") {
                            this.navToDetail(reportType, id, type)
                        } else {
                            this.navToEdit(reportType, id, type);
                        }
                    } else {
                        this.navToEdit(type, id);
                        this.navToDetail(reportType, id, type)
                    }
                } else {
                    this.navToDetail(type, id)
                    uni.navigateTo({
                        url: `checkDetail?id=${id}`
                    })
                }
            },
            navToEdit(type, id) {
                if (type == 1) {
            navToEdit(reportType, id, type) {
                if (reportType == 1) {
                    this.$u.func.globalNavigator(`/subPackage/label/bail?id=${id}`)
                } else if (type == 2) {
                } else if (reportType == 2 || type == 7) {
                    this.$u.func.globalNavigator(`/subPackage/label/hotel?id=${id}`)
                } else if (type == 3 || type == 4 || type == 5) {
                } else if (reportType == 3 || reportType == 4 || reportType == 5) {
                    this.$u.func.globalNavigator(`/subPackage/label/form?id=${id}`)
                } else if (type == 6) {
                } else if (reportType == 6) {
                    this.$u.func.globalNavigator(`/subPackage/label/school?id=${id}`)
                }
            },
            navToDetail(type, id) {
                if (type == 1) {
            navToDetail(reportType, id, type) {
                if (reportType == 1) {
                    this.$u.func.globalNavigator(`bailReportDetail?id=${id}`)
                } else if (type == 2) {
                } else if (reportType == 2 || type == 7) {
                    this.$u.func.globalNavigator(`hotelReportDetail?id=${id}`)
                } else if (type == 3 || type == 4 || type == 5) {
                } else if (reportType == 3 || reportType == 4 || reportType == 5) {
                    this.$u.func.globalNavigator(`labelReportDetail?id=${id}`)
                } else if (type == 6) {
                } else if (reportType == 6) {
                    this.$u.func.globalNavigator(`schoolReportDetail?id=${id}`)
                }
            },
@@ -229,14 +280,24 @@
            handleRestDate() {
                this.selectDate = [];
                this.resetParams();
                this.getList()
                if (this.tabIndex == 0) {
                    this.getList()
                } else {
                    this.getCheckList()
                }
            },
            handleComfirmDate(val) {
                this.selectDate = val;
                this.resetParams();
                this.getList()
                if (this.tabIndex == 0) {
                    this.getList()
                } else {
                    this.getCheckList()
                }
            }
        }
    }
</script>
subPackage/workbench/views/checkDetail.vue
New file
@@ -0,0 +1,102 @@
<template>
    <view class="">
        <view class="item-row flex j-c-s-b a-i-c">
            <text>整改内容</text>
            <text>{{info.remark}}</text>
        </view>
        <view class="item-row flex j-c-s-b a-i-c">
            <text>时间</text>
            <text>{{info.createTime}}</text>
        </view>
        <view class="image-wrap bgc-ff" v-if="images.length">
            <view class="mb-20">
                图片
            </view>
            <view class="image-item" v-for="(i,k) in images" @click="previewImage(images,i)">
                <u-image :src="i" width="100rpx" height="100rpx"></u-image>
            </view>
        </view>
        <view class="image-wrap bgc-ff" v-if="signatureUrl.length">
            <view class="mb-20">
                签名
            </view>
            <view class="image-item" v-for="(i,k) in signatureUrl" @click="previewImage(signatureUrl,i)">
                <u-image :src="i" width="100rpx" height="100rpx"></u-image>
            </view>
        </view>
    </view>
</template>
<script>
    import {
        getPlaceCheckDetail
    } from '@/api/place/place.js'
    export default {
        data() {
            return {
                info: {},
                images: [],
                signatureUrl: []
            }
        },
        onLoad(option) {
            this.getDetail(option.id);
        },
        methods: {
            getDetail(id) {
                getPlaceCheckDetail({
                    id
                }).then(res => {
                    this.info = res.data;
                    this.images = this.$setImageUrl(res.data.imageUrls);
                    this.signatureUrl = this.$setImageUrl(res.data.signaturePath);
                })
            },
            previewImage(urls, current) {
                uni.previewImage({
                    urls,
                    current
                })
            }
        }
    }
</script>
<style lang="scss">
    page {
        background-color: #f5f5f5;
    }
    .item-row {
        width: 100%;
        padding: 30rpx;
        box-sizing: border-box;
        border-bottom: 1px solid #f5f5f5;
        font-size: 28rpx;
        background-color: #fff;
        .item-content {
            width: 70%;
            text-align: right;
        }
    }
    .image-wrap {
        margin-top: 20rpx;
        padding: 20rpx;
        .image-item {
            margin-right: 20rpx;
        }
    }
</style>
subPackage/workbench/views/cscj.vue
@@ -12,6 +12,9 @@
                    <view class="box-title">
                        <box-title title="基础信息"></box-title>
                    </view>
                    <u-form-item class="form-item" labelWidth="100" label="场所名称:" :required="isRequiredPlace"
                        :disabled="isDisabled" prop="placeName">
                        <u--input v-if="!currentId" border="none" v-model="form.placeName" placeholder="请输入">
@@ -27,6 +30,16 @@
                            placeholder="请选择">
                        </u-input>
                        <u-icon slot="right" name="arrow-right"></u-icon>
                    </u-form-item>
                    <u-form-item label="九小场所" labelWidth="100" prop="isNine" :required="isRequired">
                        <u-radio-group v-model="form.isNine" 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.isNine == 1?"是":"否"}}
                        </view>
                    </u-form-item>
                    <!-- <view v-if="showLabelList.length" class="label" style="border-bottom:1px solid eff1f3;">
                        <view v-for="(item,index) in showLabelList" :key="index" class="activeLabel">
@@ -231,7 +244,8 @@
                    principalPhone: '',
                    lat: '',
                    lng: '',
                    location: ''
                    location: '',
                    isNine: ""
                },
                rules: {
                    // 'buildingCode': {
@@ -240,25 +254,31 @@
                    //     message: '请选择楼栋',
                    //     trigger: ['blur', 'change']
                    // },
                    'placeName': {
                    'form.isNine': {
                        type: 'string',
                        required: true,
                        message: '是否九小场所',
                        trigger: ['blur', 'change']
                    },
                    'form.placeName': {
                        type: 'string',
                        required: true,
                        message: '请输入场所名称',
                        trigger: ['blur', 'change']
                    },
                    'label': {
                    'form.label': {
                        type: 'string',
                        required: true,
                        message: '请选择标签',
                        trigger: ['blur', 'change'],
                    },
                    'username': {
                    'form.username': {
                        type: 'string',
                        required: true,
                        message: '请输入场所负责人',
                        trigger: ['blur', 'change'],
                    },
                    'principalPhone': [{
                    'form.principalPhone': [{
                            required: false,
                            message: '请输入手机号',
                            trigger: ['blur', 'change'],
@@ -271,7 +291,6 @@
                            trigger: ['change', 'blur']
                        }
                    ],
                },
@@ -400,7 +419,16 @@
                firstId: "",
                secondId: "",
                categoryValue: "",
                houseCode: ""
                houseCode: "",
                statusList: [{
                        name: "是",
                        id: 1
                    },
                    {
                        name: "否",
                        id: 2
                    }
                ],
            }
        },
        created() {
subPackage/workbench/views/hotelReportDetail.vue
@@ -98,7 +98,7 @@
                    //     value: '未完善'
                    // },
                    {
                        label: '酒店名称',
                        label: '场所名称',
                        name: 'hotelName',
                        value: '未完善'
                    },
subPackage/workbench/views/selectHandle.vue
New file
@@ -0,0 +1,32 @@
<template>
    <view class="wrap   flex j-c-s-b a-i-c">
        <view class="btn">
            场所采集
        </view>
        <view class="btn">
            场所检查
        </view>
    </view>
</template>
<script>
</script>
<style>
    .wrap {
        padding: 0 20rpx;
        margin-top: 30%;
    }
    .btn {
        width: 40%;
        height: 60rpx;
        background: linear-gradient(163deg, #01BDFC 0%, #017BFC 100%);
        font-size: 28rpx;
        color: #fff;
        text-align: center;
    }
</style>