Lou
2024-02-01 24a04767b281739056ed0658bb956fccbe84cb1d
更新
9 files modified
1 files added
1480 ■■■■■ changed files
api/place/place.js 10 ●●●●● patch | view | raw | blame | history
api/system/dict.js 7 ●●●●● patch | view | raw | blame | history
pages/user/test.vue 100 ●●●●● patch | view | raw | blame | history
subPackage/house/houseNumber/index.vue 12 ●●●● patch | view | raw | blame | history
subPackage/house/houseNumber/siteInspect.vue 186 ●●●●● patch | view | raw | blame | history
subPackage/house/roomDetails/detail.vue 12 ●●●●● patch | view | raw | blame | history
subPackage/workbench/views/audit.vue 2 ●●●●● patch | view | raw | blame | history
subPackage/workbench/views/checkReform.vue 585 ●●●●● patch | view | raw | blame | history
subPackage/workbench/views/checkReform3.vue 463 ●●●●● patch | view | raw | blame | history
subPackage/workbench/views/cscj.vue 103 ●●●● patch | view | raw | blame | history
api/place/place.js
@@ -59,10 +59,20 @@
    })
}
//获取消防检查项
export const getPlaceCheckItem = (params) => {
    return http.request({
        url: '/patrol/patrolGroup/getPatrolGroupTree',
        method: 'GET',
        params
    })
}
//获取场所整改详情
export const getPlaceCheckReformDetail = (params) => {
    return http.request({
        url: '/blade-taskPlaceRectification/taskPlaceRectification/detailByTaskId',
        method: 'GET',
        params
    })
}
api/system/dict.js
@@ -17,6 +17,13 @@
    })
}
export const bizDictionaryTree = (params) => {
    return http.request({
        url: '/blade-system/dict-biz/tree',
        method: 'GET',
        params
    })
}
export const parentList = (params) => {
    return http.request({
pages/user/test.vue
@@ -4,12 +4,11 @@
            <text class="f-28">选择标签</text>
            <u-icon name="arrow-right"></u-icon>
        </view>
        <view class="mt-20 p-20 bgc-ff" v-if="selectedItem.length">
        <view class="mt-20 p-20 bgc-ff" v-if="selectedCate">
            <view class="f-28">已选标签</view>
            <view class="p-20 flex flex-wrap">
                <view v-for="(item,index) in selectedItem" :key="index" class="mr-20">
                    <u-tag :closable="true"  size="mini" @close="delTag(index)"
                        :text="item.categoryName"></u-tag>
                <view class="mr-20">
                    <u-tag size="mini" :text="selectedCate"></u-tag>
                </view>
            </view>
        </view>
@@ -18,37 +17,42 @@
        <u-popup :show="isShow" @close="closePopup" :safeAreaInsetTop="true" mode="bottom" :closeable="true"
            round="12">
            <view class="popup-title fw f-30">标签选择</view>
        <u-popup :show="isShow" @close="closePopup" :safeAreaInsetTop="true" mode="bottom" :closeable="true" round="12">
            <view class="popup-title fw f-30">九小场所类型</view>
            <view class="popup-list flex a-i-c">
                <scroll-view scroll-y="true" class="scroll">
                    <view class="popup-box">
                        <view :class="['box-item','f-28',index == fIndex?'c-main fw':'']"
                        <view :class="['box-item','f-28',item.id == selectedFId?'c-main fw':'']"
                            v-for="(item,index)  in  categoryList" :key="index" @click="handleSelect(item,index)">
                            {{item.categoryName}}
                            {{item.title}}
                        </view>
                    </view>
                </scroll-view>
                <u-line direction="col" length="300rpx" v-if="childList.length"></u-line>
                <scroll-view scroll-y="true" class="scroll" v-if="childList.length">
                    <view class="popup-box">
                        <view :class="['box-item','f-28',item.isSelect?'c-main fw':'']"
                        <!-- <view :class="['box-item','f-28',item.isSelect?'c-main fw':'']"
                            v-for="(item,index)  in  childList" :key="index" @click="handleSelectChild(item,index)">
                            {{item.categoryName}}
                            {{item.title}}
                        </view> -->
                        <view :class="['box-item','f-28',item.id == selectedCId?'c-main fw':'']"
                            v-for="(item,index)  in  childList" :key="index" @click="handleSelectChild(item,index)">
                            {{item.title}}
                        </view>
                    </view>
                </scroll-view>
            </view>
        <!--     <view class="popup-footer flex j-c-s-b a-i-c">
                <view class="popup-btn c-main"   @click="closePopup">
            <view class="popup-footer flex j-c-s-b a-i-c">
                <view class="popup-btn c-main" @click="closePopup">
                    取消
                </view>
                <view class="popup-btn bgc-main c-ff">
                    确定
                </view>
            </view> -->
            </view>
        </u-popup>
    </view>
@@ -58,6 +62,10 @@
    import {
        getLabelCate
    } from "@/api/label/categoryLabel.js";
    import {
        bizDictionary,
        bizDictionaryTree
    } from '@/api/system/dict.js'
    export default {
        data() {
            return {
@@ -67,15 +75,31 @@
                fIndex: null,
                cId: null,
                showLabelList: [],
                selectedItem: []
                selectedItem: [],
                selectedCate: "",
                selectedFId: "",
                selectedCId: "",
                selectedId: ""
            }
        },
        onLoad() {
            this.getCategory(1);
            // this.getCategory(1);
            this.getNineTypeList()
        },
        methods: {
            getNineTypeList() {
                bizDictionaryTree({
                    code: "nineType"
                }).then(res => {
                    console.log(res.data);
                    this.categoryList = res.data;
                })
            },
            getCategory(level, id) {
                let params = {
                    level
@@ -101,13 +125,22 @@
            handleSelect(item, index) {
                if (index == this.fIndex) return;
                this.fIndex = index;
                this.selectedItem = [item];
                this.getCategory(2, item.categoryNo);
                console.table( "选择父级=>",this.selectedItem)
                this.selectedCate = item.title;
                this.selectedFId = item.id;
                if (item.hasChildren) {
                    this.childList = item.children;
                } else {
                    this.childList = [];
                }
                // this.getCategory(2, item.categoryNo);
                console.table("选择父级=>", this.selectedItem)
            },
            handleSelectChild(item, index) {
                this.childList[index].isSelect = !this.childList[index].isSelect;
                this.getSelected()
                // this.childList[index].isSelect = !this.childList[index].isSelect;
                this.selectedCate = item.title;
                this.selectedCId = item.id;
                // this.getSelected()
            },
@@ -119,7 +152,7 @@
                    }
                }
                this.selectedItem = arr;
                console.table("选择子级=>",this.selectedItem);
                console.table("选择子级=>", this.selectedItem);
            },
            showSelected() {
@@ -131,14 +164,14 @@
                    }
                }
            },
            closePopup(){
            closePopup() {
                this.isShow = false;
            },
            delTag(index){
                this.selectedItem.splice(index,1);
            delTag(index) {
                this.selectedItem.splice(index, 1);
            }
@@ -178,16 +211,17 @@
    // .scroll:last-child {
    //     flex:2;
    // }
    .p-20{
        padding:20rpx;
    .p-20 {
        padding: 20rpx;
    }
    .popup-list {
        width: 100%;
        height: 700rpx;
        padding:10rpx 0;
        padding: 10rpx 0;
        box-sizing: border-box;
        .bgc-f4 {
            background-color: #f4f4f4;
        }
@@ -222,6 +256,4 @@
            border: 1px solid currentColor;
        }
    }
</style>
subPackage/house/houseNumber/index.vue
@@ -179,7 +179,7 @@
                    },
                    {
                        title: '阵地',
                        name: 'isFrontType',
                        name: 'isFront',
                        value: '未完善'
                    },
                    {
@@ -196,6 +196,11 @@
                    {
                        title: '手机号',
                        name: 'phone',
                        value: '未完善'
                    },
                    {
                        title: '身份证号',
                        name: 'principalIdCard',
                        value: '未完善'
                    },
                    {
@@ -341,7 +346,8 @@
            console.log("oload=>", option)
            this.stdId = option.stdId
            if (uni.getStorageSync("activeRole").roleName == "民警") {
            if (uni.getStorageSync("activeRole").roleName == "民警" || uni.getStorageSync("activeRole").roleName ==
                "系统管理员") {
                this.isPolice = true;
            }
            if (option.addressType) {
@@ -577,7 +583,7 @@
            navToInspect() {
                uni.navigateTo({
                    url: `siteInspect?code=${this.stdId}`
                    url: `/subPackage/house/houseNumber/siteInspect?code=${this.stdId}`
                })
            }
subPackage/house/houseNumber/siteInspect.vue
@@ -1,46 +1,50 @@
<template>
    <view class="wrap">
        <u-collapse :value="itemIndex" ref="collapse">
            <u-collapse-item :title="item.title" :name="index" v-for="(item,index)  in questionList">
                <u-form :model="info" ref="form">
                    <block v-for="(i,k) in item.children">
                        <view class="f-30 c-33">
                            {{i.title}}
                        </view>
                        <u-form-item labelWidth="90" label="隐患" prop="gateStatus">
                            <view class="btn-group flex">
                                <view class="value-item" :class="i.state == 0?'active bgc-main c-ff':''"
                                    @click="changeStatus(0,i,index,k)">
                                    存在
                                </view>
                                <view class="value-item" :class="i.state == 1?'active bgc-main c-ff':''"
                                    @click="changeStatus(1,i,index,k)">
                                    不存在
                                </view>
        <view class="section mb-20">
            <u-collapse :value="itemIndex" ref="collapse">
                <u-collapse-item :title="item.title" :name="index" v-for="(item,index)  in questionList">
                    <u-form :model="info" ref="form">
                        <block v-for="(i,k) in item.children">
                            <view class="f-30 c-33">
                                {{i.title}}
                            </view>
                        </u-form-item>
                        <view class="" v-if="i.state == 0">
                            <u-form-item labelWidth="100" label="隐患照片" prop="gateStatus">
                                <u-upload :fileList="i.urls" :previewFullImage="uploadConfig.previewFullImage"
                                    :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                                    :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                                    @afterRead="afterReadImgs($event,i,index,k)" @delete="deleteImages($event,index,k)">
                                    <view class="upload-item upload-icon flex_base">
                                        <u-icon name="/static/icon/upload.png" width="60rpx" height="60rpx"></u-icon>
                            <u-form-item labelWidth="90" label="隐患" prop="gateStatus">
                                <view class="btn-group flex">
                                    <view class="value-item" :class="i.state == 0?'active bgc-main c-ff':''"
                                        @click="changeStatus(0,i,index,k)">
                                        存在
                                    </view>
                                </u-upload>
                                    <view class="value-item" :class="i.state == 1?'active bgc-main c-ff':''"
                                        @click="changeStatus(1,i,index,k)">
                                        不存在
                                    </view>
                                </view>
                            </u-form-item>
                            <u-form-item labelWidth="100" label="隐患描述" prop="gateStatus">
                                <u-textarea v-model="i.remark" placeholder="请输入隐患描述"
                                    placeholderClass="c-99 f-26"></u-textarea>
                            </u-form-item>
                        </view>
                    </block>
                </u-form>
            </u-collapse-item>
        </u-collapse>
                            <view class="" v-if="i.state == 0">
                                <u-form-item labelWidth="100" label="隐患照片" prop="gateStatus">
                                    <u-upload :fileList="i.urls" :previewFullImage="uploadConfig.previewFullImage"
                                        :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                                        :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                                        @afterRead="afterReadImgs($event,i,index,k)"
                                        @delete="deleteImages($event,index,k)">
                                        <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>
                                <u-form-item labelWidth="100" label="隐患描述" prop="gateStatus">
                                    <u-textarea v-model="i.remark" placeholder="请输入隐患描述"
                                        placeholderClass="c-99 f-26"></u-textarea>
                                </u-form-item>
                            </view>
                        </block>
                    </u-form>
                </u-collapse-item>
            </u-collapse>
        </view>
        <view class="content">
        <view class="content bgc-ff">
            <view class="upload ">
                <view class="f-28 mb-20">其它隐患问题</view>
                <u-textarea v-model="info.remark" placeholder="请输入内容" placeholderClass="c-99 f-26"></u-textarea>
@@ -63,31 +67,50 @@
            <view v-if="signatureUrl">
                <u-image :src="signatureUrl" width="70" height="70" @click="previewImg()"></u-image>
            </view>
            <!-- <view class="flex j-c-s-b a-i-c mt-20 mb-20">
                <view class="f-28">下发责令整改通知</view>
                <view class="flex j-c-f-e">
                    <u-radio-group>
                        <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>
            </view>
            <view class="flex j-c-s-b a-i-c ">
                <view class="f-28">处罚</view>
                <view class="flex j-c-f-e">
                    <u-radio-group 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>
            </view> -->
        </view>
        <view class="cell bgc-ff" v-if="dangerCount > 0">
            <view class="flex j-c-s-b a-i-c mt-20 mb-20">
                <view class="f-28">下发责令整改通知</view>
                <view class="flex j-c-f-e">
                    <u-radio-group v-model="info.rectificationNoticeFlag">
                        <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>
            </view>
            <view class="flex j-c-s-b a-i-c mb-20">
                <view class="f-28">处罚</view>
                <view class="flex j-c-f-e">
                    <u-radio-group v-model="info.punishFlag">
                        <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>
            </view>
            <view class="flex j-c-s-b a-i-c mb-20" v-if="info.punishFlag == 1">
                <view class="f-28" style="width:160rpx;">处罚说明</view>
                <u-textarea v-model="info.punishRemark" placeholder="请输入处罚说明内容"
                    placeholderClass="c-99 f-26"></u-textarea>
            </view>
            <view class="flex j-c-s-b a-i-c" @click="showSelectDate = true">
                <view class="f-28">整改截止时间</view>
                <view class="flex a-i-c">
                    <text class="mr-10">{{info.rectificationEndTime}}</text>
                    <u-icon name="arrow-right"></u-icon>
                </view>
            </view>
        </view>
        <footer-btn @click="sumitInfo"></footer-btn>
        <u-datetime-picker ref="datetimePicker" :show="showSelectDate" v-model="time" mode="datetime"
            :formatter="formatter" @confirm="confirmDate" @cancel="showSelectDate = false"></u-datetime-picker>
        <u-popup mode="bottom" :show="showSignature" round="10" :closeable="true" @close="showSignature=false">
            <view class="signture-popup">
@@ -95,6 +118,7 @@
            </view>
        </u-popup>
        <view class="blank"></view>
    </view>
</template>
@@ -115,6 +139,10 @@
                    remark: "",
                    imageUrls: "",
                    signaturePath: "",
                    rectificationNoticeFlag: "",
                    punishFlag: "",
                    rectificationEndTime: "",
                    punishRemark: ""
                },
                desc: "",
@@ -137,7 +165,6 @@
                        value: 1
                    },
                ],
                questionList: [],
                itemIndex: [],
                patrolRecordVOList: [],
@@ -151,6 +178,9 @@
                        id: 2
                    }
                ],
                time: Number(new Date()),
                showSelectDate: false,
                dangerCount: 0 //隐患项数量
            }
        },
@@ -201,7 +231,8 @@
            },
            getSelected() {
                let arr = []
                let arr = [];
                let count = 0;
                for (let i = 0, ii = this.questionList.length; i < ii; i++) {
                    for (let k = 0, kk = this.questionList[i].children.length; k < kk; k++) {
                        if (this.questionList[i].children[k].state != null) {
@@ -211,9 +242,13 @@
                                imageUrls: this.setImages(this.questionList[i].children[k].urls),
                                remark: this.questionList[i].children[k].remark || ""
                            })
                            if (this.questionList[i].children[k].state == 0) {
                                count += 1;
                            }
                        }
                    }
                }
                this.dangerCount = count;
                return arr;
            },
@@ -343,6 +378,11 @@
                    urls: [this.signatureUrl],
                    current: this.signatureUrl
                })
            },
            confirmDate(e) {
                this.showSelectDate = false;
                this.info.rectificationEndTime = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM:ss')
            }
        }
@@ -350,8 +390,16 @@
</script>
<style lang="less">
    page {
        background-color: #f5f5f5;
    }
    .wrap {
        padding: 20rpx;
        .section {
            padding: 0 20rpx;
            margin: 20rpx 20rpx 0;
            background-color: #fff;
        }
    }
    .top {
@@ -367,8 +415,13 @@
    }
    .content {
        margin: 20rpx 0;
        padding: 0 30rpx 150rpx;
        margin: 20rpx;
        padding: 20rpx 30rpx;
    }
    .cell {
        margin: 0 20rpx;
        padding: 20rpx 30rpx;
    }
    .site-box {
@@ -479,4 +532,9 @@
    /deep/ .u-form-item__body__left__content {
        font-size: 26rpx;
    }
    .blank {
        width: 100%;
        height: 140rpx;
    }
</style>
subPackage/house/roomDetails/detail.vue
@@ -6,7 +6,7 @@
        </view>
        <view class="container">
            <house-number ref="house" v-show="tabIndex == 0" />
            <room-detail  ref="room"  v-show="tabIndex == 1" />
            <room-detail ref="room" v-show="tabIndex == 1" />
        </view>
    </view>
</template>
@@ -36,8 +36,12 @@
        onLoad(option) {
            // this.tabIndex = option.type;
            uni.setNavigationBarTitle({
                title:"门牌信息"
                title: "门牌信息"
            })
            if (uni.getStorageSync("activeRole").roleName == "民警" || uni.getStorageSync("activeRole").roleName ==
                "系统管理员") {
                this.$refs.house.isPolice = true;
            }
            this.code = option.code;
            this.$refs.house.stdId = option.code;
            this.$refs.house.getBuildingDetail();
@@ -49,11 +53,11 @@
        methods: {
            changeTab(e) {
                if(e.index == this.tabIndex) return;
                if (e.index == this.tabIndex) return;
                this.tabIndex = e.index;
                if (e.index == 0) {
                    uni.setNavigationBarTitle({
                        title:"门牌信息"
                        title: "门牌信息"
                    })
                    this.$refs.house.stdId = this.code;
                    this.$refs.house.getBuildingDetail();
subPackage/workbench/views/audit.vue
@@ -219,6 +219,8 @@
                    this.$u.func.globalNavigator(`labelReportDetail?id=${id}`)
                } else if (reportType == 6) {
                    this.$u.func.globalNavigator(`schoolReportDetail?id=${id}`)
                } else {
                    this.$u.func.globalNavigator(`checkReform?id=${id}`)
                }
            },
subPackage/workbench/views/checkReform.vue
@@ -1,312 +1,185 @@
<template>
    <view class="wrap">
        <u-collapse :value="itemIndex" ref="collapse">
            <u-collapse-item :title="item.title" :name="index" v-for="(item,index)  in questionList">
                <u-form :model="info" ref="form">
                    <block v-for="(i,k) in item.children">
                        <view class="f-30 c-33">
                            {{i.title}}
                        </view>
                        <u-form-item labelWidth="90" label="隐患" prop="gateStatus">
                            <view class="btn-group flex">
                                <view class="value-item" :class="i.state == 0?'active bgc-main c-ff':''"
                                    @click="changeStatus(0,i,index,k)">
                                    存在
                                </view>
                                <view class="value-item" :class="i.state == 1?'active bgc-main c-ff':''"
                                    @click="changeStatus(1,i,index,k)">
                                    不存在
                                </view>
                            </view>
                        </u-form-item>
                        <view class="" v-if="i.state == 0">
                            <u-form-item labelWidth="100" label="隐患照片" prop="gateStatus">
                                <u-upload :fileList="i.urls" :previewFullImage="uploadConfig.previewFullImage"
                                    :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                                    :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                                    @afterRead="afterReadImgs($event,i,index,k)" @delete="deleteImages($event,index,k)">
                                    <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>
                            <u-form-item labelWidth="100" label="隐患描述" prop="gateStatus">
                                <u-textarea v-model="i.remark" placeholder="请输入隐患描述"
                                    placeholderClass="c-99 f-26"></u-textarea>
                            </u-form-item>
                        </view>
                    </block>
                </u-form>
            </u-collapse-item>
        </u-collapse>
        <view class="content">
            <view class="upload ">
                <view class="f-28 mb-20">其它隐患问题</view>
                <u-textarea v-model="info.remark" placeholder="请输入内容" placeholderClass="c-99 f-26"></u-textarea>
                <view class="mt-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>
    <view class="">
        <view class="item-row flex j-c-s-b a-i-c">
            <text>场所名称</text>
            <text class="item-content">{{info.placeName}}</text>
        </view>
        <view class="item-row flex j-c-s-b a-i-c">
            <text>标签</text>
            <text>{{label || "未完善"}}</text>
        </view>
        <view class="item-row flex j-c-s-b a-i-c">
            <text>场所负责人</text>
            <text>{{info.principal || "未完善"}}</text>
        </view>
        <view class="item-row flex j-c-s-b a-i-c">
            <text>场所负责人电话</text>
            <text>{{info.principalPhone || "未完善"}}</text>
        </view>
        <view class="item-row flex j-c-s-b a-i-c">
            <text>检查人</text>
            <text>{{info.name}}</text>
        </view>
        <view class="item-row flex j-c-s-b a-i-c">
            <text>检查时间</text>
            <text>{{info.createTime}}</text>
        </view>
        <view class="item-row flex j-c-s-b a-i-c">
            <text>地址</text>
            <text class="item-content">{{info.location}}</text>
        </view>
        <footer-btn @click="sumitInfo"></footer-btn>
        <view class="item-row flex j-c-s-b a-i-c" v-if="info.remark">
            <text>其它隐患问题</text>
            <text class="item-content">{{info.remark}}</text>
        </view>
        <view class="item-row flex j-c-s-b a-i-c" v-if="info.rectificationNoticeFlag == 1">
            <text>下发整改通知</text>
            <text class="item-content">是</text>
        </view>
        <view class="item-row flex j-c-s-b a-i-c" v-if="info.punishFlag == 1">
            <text>是否处罚</text>
            <text class="item-content">是</text>
        </view>
        <view class="item-row flex j-c-s-b a-i-c" v-if="info.punishRemark">
            <text>处罚说明</text>
            <text class="item-content">{{info.punishRemark}}</text>
        </view>
        <view class="item-row flex j-c-s-b a-i-c" v-if="info.rectificationEndTime">
            <text>整改截至时间</text>
            <text class="item-content">{{info.rectificationEndTime}}</text>
        </view>
        <view class="item-row flex j-c-s-b a-i-c" v-if="inof.remark">
            <text>其它隐患问题</text>
            <text class="item-content">{{info.remark}}</text>
        </view>
        <view class="image-wrap bgc-ff" v-if="images.length">
            <view class="mb-20">
                图片
            </view>
            <view class="flex flex-wrap">
                <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>
        <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 class="mt-20 bgc-ff">
            <block v-for="(item,index) in itemList">
                <block v-for="(i,k) in item.children">
                    <block v-for="(n,m) in info.patrolRecordVOList">
                        <view class="item-row flex j-c-s-b a-i-c" v-if="i.id == n.itemId && n.state == 1">
                            <text class="item-left">{{i.title}}</text>
                            <text>不存在</text>
                        </view>
                        <u-collapse ref="collapse" v-if="i.id == n.itemId && n.state == 0">
                            <u-collapse-item :name="index" :title="i.title" value="存在">
                                <view class="mb-20" v-if="n.remark">
                                    <view class="f-26 mb-10" style="color:#000">隐患描述</view>
                                    <view class="f-28" style="color:#000">
                                        {{n.remark}}
                                    </view>
                                </view>
                                <view class="mb-20" v-if="n.imageUrls">
                                    <view class="f-26 mb-10" style="color:#000">隐患照片</view>
                                    <view class="flex flex-wrap">
                                        <view class="mr-20" v-for="r in ($setImageUrl(n.imageUrls))">
                                            <u-image :src="r" width="100rpx" height="100rpx"
                                                @click="previewImage($setImageUrl(n.imageUrls),i)"></u-image>
                                        </view>
                                    </view>
                                </view>
                                <view class="">
                                    <view class="f-26 mb-10">整改后照片</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>
                            </u-collapse-item>
                        </u-collapse>
                    </block>
                </block>
            </block>
        </view>
        <footer-btn />
    </view>
</template>
<script>
    import uploadMixin from "@/mixin/uploadMixin";
    import {
        addPlaceCheckTwo,
        getPlaceCheckItem
    } from "@/api/place/place.js"
        getPlaceCheckItem,
        getPlaceCheckDetail,
        getPlaceCheckReformDetail
    } from '@/api/place/place.js'
    export default {
        mixins: [uploadMixin],
        data() {
            return {
                form: {
                    images: []
                },
                info: {
                    remark: "",
                    imageUrls: "",
                    signaturePath: "",
                },
                desc: "",
                title: "",
                curSelectSite: {},
                showSignature: false,
                signatureUrl: "",
                signatureSettings: { //签名设置
                    width: '700', //签名区域的宽
                    height: '800', //签名区域的高
                    lineWidth: 3, //签名时线宽
                    textColor: '#007AFF' //签名文字颜色
                },
                statusOption: [{
                        text: "存在",
                        value: 0
                    },
                    {
                        text: "不存在",
                        value: 1
                    },
                ],
                questionList: [],
                itemIndex: [],
                patrolRecordVOList: [],
                count: 0,
                statusList: [{
                        name: "是",
                        id: 1
                    },
                    {
                        name: "否",
                        id: 2
                    }
                ],
                info: {},
                images: [],
                signatureUrl: [],
                label: "",
                itemList: []
            }
        },
        onLoad(option) {
            this.info.houseCode = option.code;
            this.getItem();
        async onLoad(option) {
            await this.getItem();
            this.getDetail(option.id);
        },
        methods: {
            getDetail(id) {
                getPlaceCheckReformDetail({
                    taskId: id
                }).then(res => {
                    this.info = res.data;
                    this.images = this.$setImageUrl(res.data.imageUrls);
                    this.signatureUrl = this.$setImageUrl(res.data.signaturePath);
                    if (res.data.placePoiLabelVOList.length) {
                        this.label = res.data.placePoiLabelVOList[res.data.placePoiLabelVOList.length - 1]
                            .labelName;
                    }
                    // this.label = res.data.
                })
            },
            getItem() {
                getPlaceCheckItem().then(res => {
                    let data = res.data;
                    this.questionList = res.data;
                    let arr = []
                    let obj = {
                        itemId: "",
                        state: "",
                        imagesUrl: "",
                        remark: ""
                    }
                    let count = 0;
                    for (let i = 0, ii = data.length; i < ii; i++) {
                        arr.push(i);
                        for (let k = 0, kk = data[i].children.length; k < kk; k++) {
                            // this.info.patrolRecordVOList.push(obj);
                            count += 1;
                        }
                    }
                    this.count = count;
                    this.itemIndex = arr;
                })
            },
            changeStatus(value, item, fIndex, cIndex) {
                let children = this.questionList[fIndex];
                children.children[cIndex].state = value;
                this.$set(this.questionList, fIndex, children)
                if (value == 0 && !item.urls) {
                    children.children[cIndex].urls = [];
                    this.$set(this.questionList, fIndex, children)
                }
                this.$nextTick(() => {
                    this.$refs.collapse.init();
                })
                this.getSelected()
            },
            getSelected() {
                let arr = []
                for (let i = 0, ii = this.questionList.length; i < ii; i++) {
                    for (let k = 0, kk = this.questionList[i].children.length; k < kk; k++) {
                        if (this.questionList[i].children[k].state != null) {
                            arr.push({
                                itemId: this.questionList[i].children[k].id,
                                state: this.questionList[i].children[k].state,
                                imageUrls: this.setImages(this.questionList[i].children[k].urls),
                                remark: this.questionList[i].children[k].remark || ""
                            })
                        }
                    }
                }
                return arr;
            },
            setImages(key) {
                if (!key) {
                    return ""
                } else {
                    let urls = [];
                    for (let i of key) {
                        urls.push(i.name);
                    }
                    return urls.join(",")
                }
            },
            async afterReadImgs(event, item, fIndex, cIndex) {
                this.showLoading()
                let children = this.questionList[fIndex];
                let lists = [].concat(event.file)
                let fileListLen = item.urls.length;
                lists.map((item) => {
                    children.children[cIndex].urls.push({
                        ...item,
                        status: 'uploading',
                        message: '上传中'
                    })
                    this.$set(this.questionList, fIndex, children)
                })
                for (let i = 0; i < lists.length; i++) {
                    const result = await this.uploadFilePromise(lists[i].url)
                    children.children[cIndex].urls.splice(fileListLen, 1, Object.assign({}, {
                        url: result.data.link,
                        name: result.data.name
                    }))
                    this.$set(this.questionList, fIndex, children)
                    fileListLen++
                }
                this.loadingClose()
                this.getSelected()
            },
            deleteImages(event, fIndex, cIndex) {
                let children = this.questionList[fIndex];
                children.children[cIndex].urls.splice(event.index, 1);
                this.$set(this.questionList, fIndex, children);
                this.getSelected()
            },
            signatureChange(e) {
                // this.signatureUrl = e;
                this.uploadSignImg(e)
            },
            showSignPopup() {
                // if (this.getSelected().length < this.count) {
                //     this.$showTips("还有内容还未完善");
                //     return;
                // }
                let data = this.getSelected();
                for (let i of data) {
                    if (i.state == 1) {
                        if (i.imageUrls || i.remark) {
                            i.imageUrls = "";
                            i.remark = "";
                        }
                    } else {
                        if (!i.imageUrls && !i.remark) {
                            this.$showTips("请上传隐患照片或填写隐患描述");
                            return;
                        }
                    }
                }
                this.showSignature = true;
            },
            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.info.signaturePath = data.data.name;
                            // this.sumitInfo()
                        }
                    if (res.code == 200) {
                        this.itemList = res.data;
                    }
                })
            },
            sumitInfo() {
                uni.showLoading({
                    title: "加载中..."
                })
                if (this.form.images.length > 0) {
                    let urls = []
                    this.form.images.forEach(e => {
                        urls.push(e.name)
                    })
                    this.info.imageUrls = urls.join(",")
                }
                this.info.patrolRecordVOList = this.getSelected()
                addPlaceCheckTwo(this.info).then(res => {
                    uni.hideLoading();
                    uni.showToast({
                        icon: 'success',
                        title: '提交成功',
                        success() {
                            setTimeout(() => {
                                uni.navigateBack();
                            }, 1000)
                        }
                    })
                })
            setUrl(src) {
                return this.$setImageUrl(url)
            },
            previewImg() {
            previewImage(urls, current) {
                uni.previewImage({
                    urls: [this.signatureUrl],
                    current: this.signatureUrl
                    urls,
                    current
                })
            }
@@ -314,134 +187,56 @@
    }
</script>
<style lang="less">
    .wrap {
        padding: 20rpx;
<style lang="scss">
    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 0;
        padding: 0 30rpx 150rpx;
    }
    .site-box {
    .item-row {
        width: 100%;
        padding: 30rpx;
        margin: 20rpx 30rpx;
        border-radius: 4rpx;
        box-sizing: border-box;
        border-bottom: 1px solid #f5f5f5;
        font-size: 28rpx;
        background-color: #fff;
        .c-aa {
            color: #aaa;
        .item-content {
            width: 70%;
            text-align: right;
        }
        .address {
            width: 60%;
            margin-left: 25rpx;
        .item-left {
            width: 70%;
        }
    }
    .image-wrap {
        margin-top: 20rpx;
        padding: 20rpx;
        .image-item {
            margin-right: 20rpx;
        }
    }
    /deep/.u-cell__title-text {
        color: #000 !important;
        width: 70%;
        font-size: 28rpx !important;
    }
    /deep/ .u-cell__value {
        color: #000 !important;
        font-size: 28rpx !important;
    }
    .mr-20 {
        margin-right: 20rpx;
    }
    .upload-item {
        width: 140rpx;
        height: 140rpx;
        border: 1px solid #EEEEEE;
    }
    .upload {
        // margin: 0 30rpx;
        padding: 30rpx 0;
    }
    .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;
    }
    .signture-popup {
        padding-bottom: 20rpx;
    }
    .sign {
        padding: 30rpx;
        // margin: 0 30rpx;
    }
    .value-item {
        flex: 1;
        // background-color: #ffffff;
        // width: 120rpx;
        border: 2rpx solid #f5f5f5;
        height: 70rpx;
        line-height: 70rpx;
        box-sizing: border-box;
        text-align: center;
    }
    .active {
        border: 2rpx solid currentColor;
    }
    .btn-group {
        flex: 1;
    }
    /deep/ .u-cell__title-text {
        font-weight: bold;
        font-size: 30rpx;
    }
    /deep/ .u-form-item__body__left__content {
        font-size: 26rpx;
    }
</style>
subPackage/workbench/views/checkReform3.vue
New file
@@ -0,0 +1,463 @@
<template>
    <view class="wrap">
        <u-collapse :value="itemIndex" ref="collapse">
            <u-collapse-item :title="item.title" :name="index" v-for="(item,index)  in questionList">
                <u-form :model="info" ref="form">
                    <block v-for="(i,k) in item.children">
                        <view class="f-30 c-33">
                            {{i.title}}
                        </view>
                        <u-form-item labelWidth="90" label="隐患" prop="gateStatus">
                            <view class="btn-group flex">
                                <view class="value-item" :class="i.state == 0?'active bgc-main c-ff':''"
                                    @click="changeStatus(0,i,index,k)">
                                    存在
                                </view>
                                <view class="value-item" :class="i.state == 1?'active bgc-main c-ff':''"
                                    @click="changeStatus(1,i,index,k)">
                                    不存在
                                </view>
                            </view>
                        </u-form-item>
                        <view class="" v-if="i.state == 0">
                            <u-form-item labelWidth="100" label="隐患照片" prop="gateStatus">
                                <u-upload :fileList="i.urls" :previewFullImage="uploadConfig.previewFullImage"
                                    :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                                    :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                                    @afterRead="afterReadImgs($event,i,index,k)" @delete="deleteImages($event,index,k)">
                                    <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>
                            <u-form-item labelWidth="100" label="隐患描述" prop="gateStatus">
                                <u-textarea v-model="i.remark" placeholder="请输入隐患描述"
                                    placeholderClass="c-99 f-26"></u-textarea>
                            </u-form-item>
                        </view>
                    </block>
                </u-form>
            </u-collapse-item>
        </u-collapse>
        <view class="content">
            <view class="upload ">
                <view class="f-28 mb-20">其它隐患问题</view>
                <u-textarea v-model="info.remark" placeholder="请输入内容" placeholderClass="c-99 f-26"></u-textarea>
                <view class="mt-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>
        </view>
        <footer-btn @click="sumitInfo"></footer-btn>
    </view>
</template>
<script>
    import uploadMixin from "@/mixin/uploadMixin";
    import {
        addPlaceCheckTwo,
        getPlaceCheckItem,
        getPlaceCheckReformDetail
    } from "@/api/place/place.js"
    export default {
        mixins: [uploadMixin],
        data() {
            return {
                form: {
                    images: []
                },
                info: {
                    houseCode: "",
                    remark: "",
                    imageUrls: "",
                    signaturePath: "",
                },
                desc: "",
                title: "",
                curSelectSite: {},
                showSignature: false,
                signatureUrl: "",
                signatureSettings: { //签名设置
                    width: '700', //签名区域的宽
                    height: '800', //签名区域的高
                    lineWidth: 3, //签名时线宽
                    textColor: '#007AFF' //签名文字颜色
                },
                statusOption: [{
                        text: "存在",
                        value: 0
                    },
                    {
                        text: "不存在",
                        value: 1
                    },
                ],
                questionList: [],
                itemIndex: [],
                patrolRecordVOList: [],
                count: 0,
                statusList: [{
                        name: "是",
                        id: 1
                    },
                    {
                        name: "否",
                        id: 2
                    }
                ],
            }
        },
        async onLoad(option) {
            await this.getItem();
            this.getDetail(option.id);
        },
        methods: {
            getDetail(id) {
                getPlaceCheckReformDetail({
                    taskId: id
                }).then(res => {
                    if (res.code == 200) {
                        for (let i in this.info) {
                            this.info[i] = res.data[i];
                        }
                    }
                })
            },
            getItem() {
                getPlaceCheckItem().then(res => {
                    let data = res.data;
                    this.questionList = res.data;
                    let arr = []
                    let obj = {
                        itemId: "",
                        state: "",
                        imagesUrl: "",
                        remark: ""
                    }
                    let count = 0;
                    for (let i = 0, ii = data.length; i < ii; i++) {
                        arr.push(i);
                        for (let k = 0, kk = data[i].children.length; k < kk; k++) {
                            // this.info.patrolRecordVOList.push(obj);
                            count += 1;
                        }
                    }
                    this.count = count;
                    this.itemIndex = arr;
                })
            },
            changeStatus(value, item, fIndex, cIndex) {
                let children = this.questionList[fIndex];
                children.children[cIndex].state = value;
                this.$set(this.questionList, fIndex, children)
                if (value == 0 && !item.urls) {
                    children.children[cIndex].urls = [];
                    this.$set(this.questionList, fIndex, children)
                }
                this.$nextTick(() => {
                    this.$refs.collapse.init();
                })
                this.getSelected()
            },
            getSelected() {
                let arr = []
                for (let i = 0, ii = this.questionList.length; i < ii; i++) {
                    for (let k = 0, kk = this.questionList[i].children.length; k < kk; k++) {
                        if (this.questionList[i].children[k].state != null) {
                            arr.push({
                                itemId: this.questionList[i].children[k].id,
                                state: this.questionList[i].children[k].state,
                                imageUrls: this.setImages(this.questionList[i].children[k].urls),
                                remark: this.questionList[i].children[k].remark || ""
                            })
                        }
                    }
                }
                return arr;
            },
            setImages(key) {
                if (!key) {
                    return ""
                } else {
                    let urls = [];
                    for (let i of key) {
                        urls.push(i.name);
                    }
                    return urls.join(",")
                }
            },
            async afterReadImgs(event, item, fIndex, cIndex) {
                this.showLoading()
                let children = this.questionList[fIndex];
                let lists = [].concat(event.file)
                let fileListLen = item.urls.length;
                lists.map((item) => {
                    children.children[cIndex].urls.push({
                        ...item,
                        status: 'uploading',
                        message: '上传中'
                    })
                    this.$set(this.questionList, fIndex, children)
                })
                for (let i = 0; i < lists.length; i++) {
                    const result = await this.uploadFilePromise(lists[i].url)
                    children.children[cIndex].urls.splice(fileListLen, 1, Object.assign({}, {
                        url: result.data.link,
                        name: result.data.name
                    }))
                    this.$set(this.questionList, fIndex, children)
                    fileListLen++
                }
                this.loadingClose()
                this.getSelected()
            },
            deleteImages(event, fIndex, cIndex) {
                let children = this.questionList[fIndex];
                children.children[cIndex].urls.splice(event.index, 1);
                this.$set(this.questionList, fIndex, children);
                this.getSelected()
            },
            signatureChange(e) {
                // this.signatureUrl = e;
                this.uploadSignImg(e)
            },
            showSignPopup() {
                // if (this.getSelected().length < this.count) {
                //     this.$showTips("还有内容还未完善");
                //     return;
                // }
                let data = this.getSelected();
                for (let i of data) {
                    if (i.state == 1) {
                        if (i.imageUrls || i.remark) {
                            i.imageUrls = "";
                            i.remark = "";
                        }
                    } else {
                        if (!i.imageUrls && !i.remark) {
                            this.$showTips("请上传隐患照片或填写隐患描述");
                            return;
                        }
                    }
                }
                this.showSignature = true;
            },
            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.info.signaturePath = data.data.name;
                            // this.sumitInfo()
                        }
                    }
                })
            },
            sumitInfo() {
                uni.showLoading({
                    title: "加载中..."
                })
                if (this.form.images.length > 0) {
                    let urls = []
                    this.form.images.forEach(e => {
                        urls.push(e.name)
                    })
                    this.info.imageUrls = urls.join(",")
                }
                this.info.patrolRecordVOList = this.getSelected()
                addPlaceCheckTwo(this.info).then(res => {
                    uni.hideLoading();
                    uni.showToast({
                        icon: 'success',
                        title: '提交成功',
                        success() {
                            setTimeout(() => {
                                uni.navigateBack();
                            }, 1000)
                        }
                    })
                })
            },
            previewImg() {
                uni.previewImage({
                    urls: [this.signatureUrl],
                    current: this.signatureUrl
                })
            }
        }
    }
</script>
<style lang="less">
    .wrap {
        padding: 20rpx;
    }
    .top {
        display: flex;
        justify-content: flex-end;
        padding: 20rpx;
    }
    .top-btn {
        padding: 16rpx 22rpx;
        border-radius: 6rpx;
        text-align: center;
    }
    .content {
        margin: 20rpx 0;
        padding: 0 30rpx 150rpx;
    }
    .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 0;
    }
    .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;
    }
    .signture-popup {
        padding-bottom: 20rpx;
    }
    .sign {
        padding: 30rpx;
        // margin: 0 30rpx;
    }
    .value-item {
        flex: 1;
        // background-color: #ffffff;
        // width: 120rpx;
        border: 2rpx solid #f5f5f5;
        height: 70rpx;
        line-height: 70rpx;
        box-sizing: border-box;
        text-align: center;
    }
    .active {
        border: 2rpx solid currentColor;
    }
    .btn-group {
        flex: 1;
    }
    /deep/ .u-cell__title-text {
        font-weight: bold;
        font-size: 30rpx;
    }
    /deep/ .u-form-item__body__left__content {
        font-size: 26rpx;
    }
</style>
subPackage/workbench/views/cscj.vue
@@ -28,7 +28,7 @@
                        </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-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">
@@ -45,8 +45,7 @@
                        </u-input>
                        <u-icon slot="right" name="arrow-right"></u-icon>
                    </u-form-item>
                    <u-form-item v-if="form.isNine == 1" label="阵地" labelWidth="100" prop="isFront"
                        :required="isRequired">
                    <u-form-item label="阵地:" labelWidth="100" prop="isFront" :required="isRequired">
                        <u-radio-group v-model="form.isFront" v-if="!currentId">
                            <u-radio :customStyle="{marginBottom: '8px'}" v-for="(item, index) in statusList"
                                :key="index" :label="item.name" :name="item.id">
@@ -92,7 +91,8 @@
                            <view class="address-content f-28" v-if="!form.jwd" style="color: #c0c4cc;">
                                请选择地址
                            </view>
                            <view class="location-btn c-main f-24" @click="getLocation()" v-if="!currentId">
                            <view class="location-btn c-main f-24" @click="getLocation()"
                                v-if="(!currentId && !isView)   || (isView && !form.jwd)">
                                获取地址
                            </view>
                        </view>
@@ -118,6 +118,11 @@
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="手机号:" prop="principalPhone">
                        <u--input border="none" type="number" v-model="form.principalPhone" placeholder="请输入">
                        </u--input>
                    </u-form-item>
                    <u-form-item class="form-item" labelWidth="100" :required="isRequired" :disabled="isDisabled"
                        label="身份证号:" prop="principalIdCard">
                        <u--input border="none" type="idcard" v-model="form.principalIdCard" placeholder="请输入">
                        </u--input>
                    </u-form-item>
                </view>
@@ -242,7 +247,8 @@
        minioBaseUrl
    } from "../../../common/setting";
    import {
        bizDictionary
        bizDictionary,
        bizDictionaryTree
    } from '@/api/system/dict.js'
    export default {
        mixins: [uploadMixin],
@@ -271,6 +277,7 @@
                    placeName: "",
                    principal: '',
                    principalPhone: '',
                    principalIdCard: '',
                    lat: '',
                    lng: '',
                    location: '',
@@ -322,6 +329,22 @@
                            message: '手机号码不正确',
                            trigger: ['change', 'blur']
                        }
                    ],
                    'form.principalIdCard': [{
                            type: 'string',
                            required: false,
                            message: '请输入身份证号码',
                            trigger: ['change', 'blur']
                        },
                        {
                            validator: (rule, value, callback) => {
                                const idCardRegex =
                                    /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
                                return idCardRegex.test(value)
                            },
                            message: '身份证号码有误',
                            trigger: ['change', 'blur']
                        }
                    ],
                },
@@ -468,7 +491,8 @@
                showNineTypePicker: false,
                showFrontTypePicker: false,
                nineTypeValue: "",
                frontTypeValue: ""
                frontTypeValue: "",
                isView: false
            }
@@ -479,7 +503,10 @@
        options: {
            styleIsolation: 'shared', // 解除样式隔离
        },
        onLoad(option) {
        async onLoad(option) {
            await this.getCategory();
            await this.getAllBizDict();
            this.getNineTypeList();
            const {
                type
            } = option
@@ -494,6 +521,7 @@
                this.form.houseCode = option.houseCode
            }
            if (option.id || option.houseCode) {
                this.isView = true;
                this.getBuildingDetail()
            }
            if (!!type || type != void 0) {
@@ -501,8 +529,8 @@
                    title: '详情'
                })
            }
            this.getCategory();
            this.getAllBizDict();
        },
        watch: {
@@ -522,6 +550,14 @@
            //     },                
            //     immediate:true
            // }  
        },
        onReady() {
            this.$refs.form.setRules(this.rules)
        },
        onUnload() {
        },
@@ -593,6 +629,15 @@
                    })
                })
            },
            getNineTypeList() {
                bizDictionaryTree({
                    code: "nineType"
                }).then(res => {
                    console.log(res.data);
                })
            },
            navTo(type) {
                if (type == 1) {
@@ -668,6 +713,7 @@
            },
            getBuildingDetail(params = {}) {
                let idorCodeParams = {}
                if (this.houseCode) {
                    idorCodeParams = {
@@ -683,6 +729,9 @@
                        id: this.currentId
                    }
                }
                uni.showLoading({
                    title: "加载中..."
                })
                getPlaceDetail({
                    ...params,
                    ...idorCodeParams
@@ -690,6 +739,7 @@
                    code,
                    data
                }) => {
                    uni.hideLoading();
                    if (code !== 200) {
                        uni.showToast({
                            title: "数据加载失败",
@@ -739,7 +789,7 @@
                            this.nineTypeValue = name;
                        }
                        if (key == "isFrontType") {
                        if (key == "isFront") {
                            let {
                                index,
                                name
@@ -747,10 +797,8 @@
                            this.frontTypeIndex = index;
                            this.frontTypeValue = name;
                        }
                    })
                    this.form.jwd = `${Number(data.lng).toFixed(6)},${Number(data.lat).toFixed(6)}`
                    this.$set(this.form, "jwd", `${Number(data.lng).toFixed(6)},${Number(data.lat).toFixed(6)}`)
                    this.form.building = arr.join("")
                    let labelList = data.placePoiLabelVOList;
                    let tempLabelList = [];
@@ -762,13 +810,13 @@
                    this.firstId = tempLabelList[0].poiCode;
                    this.categoryValue = tempLabelList[1].labelName;
                    this.form.label = tempLabelList[1].poiCode
                    setTimeout(() => {
                        let firstIndex = this.categoryList[0].findIndex(i => i.categoryNo ==
                            tempLabelList[0].poiCode)
                        let childIndex = this.categoryList[1].findIndex(i => i.categoryNo ==
                            tempLabelList[1].poiCode)
                        this.categoryIndex = [firstIndex, childIndex]
                    }, 500)
                    // setTimeout(() => {
                    let firstIndex = this.categoryList[0].findIndex(i => i.categoryNo ==
                        tempLabelList[0].poiCode)
                    let childIndex = this.categoryList[1].findIndex(i => i.categoryNo ==
                        tempLabelList[1].poiCode)
                    this.categoryIndex = [firstIndex, childIndex]
                    // }, 500)
                    Object.keys(this.comprehensiveData).forEach(key => {
@@ -857,18 +905,19 @@
                this.$set(this.pickColumns, index, data)
            },
            getLocation() {
                const that = this
            //获取当前位置信息
            getCurrentLocation() {
                uni.getLocation({
                    type: 'wgs84', // 坐标系类型
                    success: function(res) {
                    type: 'gcj02', // 坐标系类型
                    success: (res) => {
                        var latitude = res.latitude; // 维度
                        var longitude = res.longitude; // 经度
                        that.form.lng = longitude
                        that.form.lat = latitude
                        this.form.lng = longitude
                        this.form.lat = latitude
                        this.form.jwd =
                            `${Number(res.longitude).toFixed(6)},${Number(res.latitude).toFixed(6)}`
                        that.form.jwd = longitude + "," + latitude
                    },
                    fail: function(res) {
                        console.log('获取定位失败:' + res.errMsg);