Lou
2024-04-10 3f14c8d4a6a8a8bdeced78998bd0cce1de6f06a6
无诈上报
13 files modified
9 files added
7 files deleted
4697 ■■■■■ changed files
api/counterfraud/counterfraud.js 29 ●●●●● patch | view | raw | blame | history
api/system/index.js 10 ●●●●● patch | view | raw | blame | history
changelog.md 10 ●●●●● patch | view | raw | blame | history
components/pages/index/index.vue 33 ●●●●● patch | view | raw | blame | history
components/zhangguangsen-search/zhangguangsen-search.vue 247 ●●●●● patch | view | raw | blame | history
pages.json 28 ●●●●● patch | view | raw | blame | history
pages/home/index.scss 44 ●●●●● patch | view | raw | blame | history
pages/home/index.vue 39 ●●●●● patch | view | raw | blame | history
pages/home/index2.vue 855 ●●●●● patch | view | raw | blame | history
pages/home/index3.vue 861 ●●●●● patch | view | raw | blame | history
pages/home/index4.vue 934 ●●●●● patch | view | raw | blame | history
pages/login/login-account.vue 4 ●●● patch | view | raw | blame | history
pages/user/center.vue.bak 111 ●●●●● patch | view | raw | blame | history
pages/user/center2.vue 129 ●●●●● patch | view | raw | blame | history
pages/user/center3.vue 200 ●●●●● patch | view | raw | blame | history
static/img/login-bg.png patch | view | raw | blame | history
static/zhangguangsen-search/zhangguangsen-search.ttf patch | view | raw | blame | history
static/zhangguangsen-search/zhangguangsen-search.woff patch | view | raw | blame | history
static/zhangguangsen-search/zhangguangsen-search.woff2 patch | view | raw | blame | history
subPackage/counterfraud/addReport.vue 576 ●●●●● patch | view | raw | blame | history
subPackage/counterfraud/reportRecord.vue 105 ●●●●● patch | view | raw | blame | history
subPackage/house/houseNumber/siteInspect.vue 5 ●●●● patch | view | raw | blame | history
subPackage/label/check.vue 5 ●●●● patch | view | raw | blame | history
subPackage/workbench/views/checkDetail.vue 5 ●●●● patch | view | raw | blame | history
subPackage/workbench/views/checkReform.vue 5 ●●●● patch | view | raw | blame | history
subPackage/workbench/views/checkReform3.vue 5 ●●●● patch | view | raw | blame | history
subPackage/workbench/views/counterfraudReportDetail.vue 401 ●●●●● patch | view | raw | blame | history
subPackage/workbench/views/cscj.vue 51 ●●●●● patch | view | raw | blame | history
subPackage/workbench/views/selfCheckDetail.vue 5 ●●●● patch | view | raw | blame | history
api/counterfraud/counterfraud.js
@@ -61,4 +61,33 @@
            ...params
        }
    })
}
//无诈上报
export const addCounterfraudReport = (params) => {
    return http.request({
        url: '/blade-taskNoFraudReporting/taskNoFraudReporting/saveTwo',
        method: 'POST',
        data: params
    })
}
//无诈上报列表
export const getCounterfraudReportList = (params) => {
    return http.request({
        url: '/blade-taskNoFraudReporting/taskNoFraudReporting/page',
        method: 'get',
        params: {
            ...params
        }
    })
}
//无诈上报详情
export const getCounterfraudReportDetail = (params) => {
    return http.request({
        url: '/blade-taskNoFraudReporting/taskNoFraudReporting/getInfo',
        method: 'get',
        params: {
            ...params
        }
    })
}
api/system/index.js
@@ -42,4 +42,14 @@
            ...params
        }
    })
}
export const searchContent = (params) => {
    return http.request({
        url: '/es/es/page',
        method: 'get',
        params: {
            ...params
        }
    })
}
changelog.md
New file
@@ -0,0 +1,10 @@
## 1.0.1(2023-04-21)
1. 功能自测
2. 优化组件逻辑,方便父子组件传值
3. 增加DEMO:/components/pages/index
4. 增加完整说明文档 +案例
## 1.0.0(2023-04-20)
1. 增加搜索页面
2. 输入关键词,下拉列表展示搜索结果
3. 类似百度搜索,搜索关键词变红
4. 引入阿里图标库,节省存储空间
components/pages/index/index.vue
New file
@@ -0,0 +1,33 @@
<template>
    <view>
        <zhangguangsen-search :hotList="hotList" :searchList="searchList" @onInput="onInput" @onSearchConfirm="onSearchConfirm"></zhangguangsen-search>
    </view>
</template>
<script>
    export default {
        data() {
            return {
                hotList:['aa','bb','cc','dd','测试一个超产的龙欧索','aa','bb','cc','dd','测试一个超产的龙欧索'],
                searchList:[]
            }
        },
        mounted(){
        },
        methods: {
            onInput(val){
                console.log('**input',val)
                //模拟后端返回数据,根据val调用接口
                setTimeout(()=>{
                     this.searchList = ['aabacd','bb','cc','dd','测试一个超产的龙欧索','aa',Math.random()]//这里模拟 axios 返回的数据
                },2000)
            },
            onSearchConfirm(searchVal){
                console.log('搜索词',searchVal)
            }
        }
    }
</script>
<style lang="scss">
</style>
components/zhangguangsen-search/zhangguangsen-search.vue
New file
@@ -0,0 +1,247 @@
<template>
    <view class="search">
        <view class="search-head">
            <view class="head-icon__search iconfont icon-sousuo1"></view>
            <view class="head-input__search">
                <input v-model="val" :focus="true" :adjustPosition="false" placeholder="请输入配件名称" placeholder-class="head-input__placeholder" confirmType="搜索" :confirmHold="false" @input="handleInput" @click="handleClick" @confirm="handleConfirm"/>
                <button @click="handleConfirm">搜索</button>
            </view>
        </view>
        <view class="hotSearch">
            <view class="hotSearch-head">
                <view class="hotSearch-icon__hot iconfont icon-remensousuo"></view>
                <text class="hotSearch-text__hot">
                     热门搜索
                </text>
            </view>
            <view class="hotSearch-list">
                <view class="hotSearch-li" v-for="(item,index) in hotList" :key="index" @click="handleConfirm(item)">
                    {{item}}
                </view>
            </view>
        </view>
        <view v-show="showPop">
            <view class="pop-search__list">
                <view class="pop-search__li" v-for="(item,index) in formatSearchList" :key="index" @click="handleConfirm(item)">
                    <text v-for="(titem,tindex) in item" :key="tindex" :class="titem.key ? 'active' : ''">{{titem.str}}</text>
                </view>
            </view>
            <view class="pop-search__mask" @click="showPop=false"></view>
        </view>
    </view>
</template>
<script>
    export default {
        props:{
            hotList:{
                type:Array
            },
            searchList:{
                type:Array
            }
        },
        watch:{
            searchList:{
                handler(searchList){
                    uni.hideLoading();
                    console.log('watch',searchList)
                    if(searchList.length>0 && this.val){
                        this.formatSearchList = searchList.map(item=>this.hilight_word(this.val, item))
                    }
                },
                deep:true
            }
        },
        data() {
            return {
                val:'',
                showPop:false,
                formatSearchList:[]
            }
        },
        mounted(){
        },
        methods: {
            handleConfirm(val){
                let searchVal = val
                if(Array.isArray((val))){
                    searchVal = val.map(({str})=>str).join('')
                }else if(val instanceof Object){
                    searchVal = this.val
                }
                this.$emit('onSearchConfirm',searchVal)
            },
            handleClick(){
                this.showPop = !!this.val
            },
            handleInput(e){
                this.showPop = !!this.val
                if(!this.val) {
                    return
                }
                uni.showLoading({
                    title: '加载中'
                });
                setTimeout(()=>uni.hideLoading(),3000)
                this.$emit('onInput',this.val)
            },
            // 根据搜索字分割字符
            hilight_word: function (key, word) {
                key=key.trim()
                word=''+word
                let idx = word.indexOf(key), t = [];
                if (idx > -1) {
                  if (idx == 0) {
                    t =this.hilight_word(key, word.substr(key.length));
                    t.unshift({ key: true, str: key });
                    return t;
                  }
                  if (idx > 0) {
                    t =this.hilight_word(key, word.substr(idx));
                    t.unshift({ key: false, str: word.substring(0, idx) });
                    return t;
                  }
                }
                return [{ key: false, str: word }];
            }
        }
    }
</script>
<style lang="scss">
@font-face {
  font-family: "iconfont"; /* Project id 3928599 */
  src: url('@/static/zhangguangsen-search/zhangguangsen-search.woff2?t=1681960188787') format('woff2'),
       url('@/static/zhangguangsen-search/zhangguangsen-search.woff?t=1681960188787') format('woff'),
       url('@/static/zhangguangsen-search/zhangguangsen-search.ttf?t=1681960188787') format('truetype');
}
.iconfont {
  font-family: "iconfont" !important;
  font-size: 16px;
  font-style: normal;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.icon-remensousuo:before {
  content: "\e73d";
}
.icon-sousuo1:before {
  content: "\e61c";
}
.search{
    background-color: #fff;
    overflow: hidden;
    &-head{
        display: flex;
        align-items: center;
        padding:0 10rpx 0 47rpx;
        margin:30rpx 30rpx 0;
        height: 70rpx;
        background: #F5F5F5;
        border-radius: 35rpx;
        .head-icon__search{
            font-size: 30rpx;
            color: #231815;
        }
        .head-input__search{
            display: flex;
            align-items: center;
            flex: 1;
            input{
                margin-left: 15rpx;
                border: none;
                height: 29rpx;
                font-size: 30rpx;
                font-weight: 400;
                color: #AAAAAA;
                line-height: 28rpx;
                flex:1;
            }
            button{
                width: 128rpx;
                height: 53rpx;
                background: linear-gradient(0deg, #0AA0F5, #00E3F2);
                border-radius: 30rpx;
                font-size: 28rpx;
                font-weight: 500;
                color: #FFFFFF;
                line-height: 42rpx;
            }
            .head-input__placeholder{
                color: #AAAAAA;
            }
        }
    }
    .hotSearch{
        margin-top: 30rpx;
        &-head{
            display: flex;
            align-items: center;
            padding:0 0 0 30rpx;
        }
        &-icon__hot{
            margin-left: 10rpx;
            font-size: 30rpx;
            color: rgb(255,43,57);
        }
        &-text__hot{
            margin-left: 10rpx;
            font-size: 30rpx;
            color: #999999;
        }
        &-list{
            padding: 20rpx 0 50rpx 30rpx;
            display: flex;
            flex-wrap: wrap;
        }
        &-li{
            margin: 10rpx 0 0 10rpx;
            padding: 0 20rpx;
            border-radius: 20rpx;
            background: #f2f2f2;
            line-height: 50rpx;
            &:first-child{
                margin-left: 0;
            }
        }
    }
}
.pop{
    &-search{
        &__mask{
            position: fixed;
            top: 100rpx;
            bottom: 0;
            left: 0;
            right: 0;
            background-color: rgba(0, 0,0,.3);
            z-index: 1;
        }
        &__list{
            padding:0 30rpx;
            position: fixed;
            top: 100rpx;
            left: 0;
            right: 0;
            background-color: #fff;
            z-index: 9;
        }
        &__li{
            font-size: 30rpx;
            color: #231815;
            line-height: 90rpx;
            border-bottom: solid 1px #F5F5F5;
            .active{
                color: red;
            }
        }
    }
}
</style>
pages.json
@@ -698,7 +698,17 @@
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black"
                    }
                },
                {
                    "path": "views/counterfraudReportDetail",
                    "style": {
                        "navigationBarTitleText": "无诈上报详情",
                        "enablePullDownRefresh": false,
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black"
                    }
                }
            ]
        },
        //报事
@@ -1113,6 +1123,24 @@
                        "navigationBarTextStyle": "black",
                        "enablePullDownRefresh": false
                    }
                },
                {
                    "path": "addReport",
                    "style": {
                        "navigationBarTitleText": "无诈上报",
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black",
                        "enablePullDownRefresh": false
                    }
                },
                {
                    "path": "reportRecord",
                    "style": {
                        "navigationBarTitleText": "无诈上报记录",
                        "navigationBarBackgroundColor": "#fff",
                        "navigationBarTextStyle": "black",
                        "enablePullDownRefresh": false
                    }
                }
            ]
        },
pages/home/index.scss
@@ -29,6 +29,50 @@
        padding: 0 30rpx;
        box-sizing: border-box;
    }
    .search-bar{
        padding:20rpx 30rpx;
        position: relative;
        width:100%;
        box-sizing: border-box;
    }
    .search-content{
        position: absolute;
        width: 100%;
        height:500rpx;
        border-radius:16rpx;
        top:88rpx;
        left:0;
        z-index: 15;
        box-shadow: 0rpx 10rpx 10rpx 0rpx rgba(0, 0, 0, 0.02);
        border-bottom:1px solid #f5f5f5;
        padding:0 30rpx;
        box-sizing: border-box;
    }
    .search-scroll{
        width:100%;
        height:100%;
    }
    .search-content-row{
        padding:20rpx 0;
        border-bottom: 1px solid #f5f5f5;
    }
    .search-tag{
        padding:2rpx 10rpx;
        border-radius: 8rpx;
        background-color: rgb(236,244,255);
        border:1px solid currentColor;
    }
    .mask{
        position: fixed;
        width:100%;
        height:100%;
        top:300rpx;
        left:0;
        z-index: 10;
        background-color:rgba(0, 0, 0, .5);
    }
    .content {
        padding: 20rpx 30rpx 0;
pages/home/index.vue
@@ -8,6 +8,21 @@
                <u-icon name="arrow-right" color="#fff"></u-icon>
            </view>
        </u-navbar>
        <!-- <view class="search-bar" :style="{background:background.top}">
            <u-search placeholder="请输入关键字" v-model="keyword" :showAction="true" actionText="搜索" :animation="true"
                :actionStyle="{color:'#fff'}" bgColor="#fff" @change="changeKeyword"></u-search>
            <view class="mask"></view>
            <view class="search-content bgc-ff">
                <scroll-view class="search-scroll" :scroll-y="true">
                    <view class="search-content-row flex j-c-s-b a-i-c" v-for="i in 5">
                        <text class="f-28">万达华府</text>
                        <view class="search-tag f-26 c-main">房屋</view>
                    </view>
                </scroll-view>
            </view>
        </view> -->
        <view class="swiper" :style="{background:background.banner}">
            <u-swiper :list="bannerList" height="320rpx" radius="10" @click="navToArticle"></u-swiper>
        </view>
@@ -189,6 +204,13 @@
                                        <text class="nav-item-text f-26  mt-10">消防自查</text>
                                    </view>
                                </u-grid-item>
                                <u-grid-item @click="navigatorPage('/subPackage/counterfraud/addReport')"
                                    v-if="curSelectSite.noExplosionCategory">
                                    <view class="nav-item flex f-d-c a-i-c">
                                        <u-icon name="/static/icon/nav-11.png" width="80rpx" height="80rpx"></u-icon>
                                        <text class="nav-item-text f-26  mt-10">无诈上报</text>
                                    </view>
                                </u-grid-item>
                            </block>
                            <block v-if="tabIndex == 2">
                                <u-grid-item @click="navToSiteList()">
@@ -316,7 +338,8 @@
    import {
        getBannerList,
        getContact,
        getQrCodeDetail
        getQrCodeDetail,
        searchContent
    } from "@/api/system/index"
    import {
        minioBaseUrl
@@ -647,8 +670,8 @@
                    top: "#017BFC",
                    banner: "linear-gradient(180deg, #017BFC 0%, rgba(1, 123, 252, 0) 100%)"
                },
                tabList: []
                tabList: [],
                keyword: ""
            }
        },
@@ -760,6 +783,16 @@
            //     });
            // },
            changeKeyword(val) {
                searchContent({
                    searchKey: val
                }).then(res => {
                    console.log(res)
                })
            },
            //获取待办事项数量
            getTaskCount() {
                if (uni.getStorageSync('activeRole').roleAlias === 'wgy') {
pages/home/index2.vue
File was deleted
pages/home/index3.vue
File was deleted
pages/home/index4.vue
File was deleted
pages/login/login-account.vue
@@ -7,7 +7,9 @@
        </view>-->
        <image class="bg" src="/static/img/login-bg.png" :style="{height:screenHeight}" mode="aspectFill"></image>
        <image class="bg"
            src="https://srgdjczzxtpt.com:2080/gminio/jczz/upload/20240410/61f0d307739505790a2a72eb36a9330e.png"
            :style="{height:screenHeight}" mode="aspectFill"></image>
        <view class="content" v-if="!loginType">
pages/user/center.vue.bak
File was deleted
pages/user/center2.vue
File was deleted
pages/user/center3.vue
File was deleted
static/img/login-bg.png
Binary files differ
static/zhangguangsen-search/zhangguangsen-search.ttf
Binary files differ
static/zhangguangsen-search/zhangguangsen-search.woff
Binary files differ
static/zhangguangsen-search/zhangguangsen-search.woff2
Binary files differ
subPackage/counterfraud/addReport.vue
New file
@@ -0,0 +1,576 @@
<template>
    <view class="wrap">
        <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 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="">
                                <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>
        <!-- <footer-btn @click="sumitInfo"></footer-btn> -->
        <button class="submit-btn" @click="sumitInfo">提交</button>
        <button class="list-btn mb-20" @click="navTo">我上报的事件</button>
        <view class="blank"></view>
    </view>
</template>
<script>
    import uploadMixin from "@/mixin/uploadMixinPlace";
    import {
        getPlaceCheckItem
    } from "@/api/place/place.js"
    import {
        savePlaceCheck,
        getPlaceCheckDetail,
        updatePlaceCheck,
        auditPlaceCheck
    } from "@/api/reporting/reporting.js"
    import {
        addCounterfraudReport
    } from "@/api/counterfraud/counterfraud.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: 2
                    },
                    {
                        name: "否",
                        id: 1
                    }
                ],
                time: Number(new Date()),
                showSelectDate: false,
                dangerCount: 0, //隐患项数量
                isEdit: false
            }
        },
        async onLoad(option) {
            await this.getItem();
            if (option.taskId) {
                this.isEdit = true;
                this.getDetail(option.taskId)
            } else {
                this.info.houseCode = uni.getStorageSync("siteInfo").houseCode;
                this.info.placeName = uni.getStorageSync("siteInfo").name;
            }
        },
        methods: {
            getDetail(id) {
                getPlaceCheckDetail({
                    taskId: id
                }).then(res => {
                    let data = res.data;
                    for (let i = 0, ii = this.questionList.length; i < ii; i++) {
                        for (let k = 0, kk = this.questionList[i].children.length; k < kk; k++) {
                            for (let j = 0, jj = data.taskPlaceRecordVOList.length; j < jj; j++) {
                                if (this.questionList[i].children[k].id == data.taskPlaceRecordVOList[j].itemId) {
                                    let children = this.questionList[i]
                                    children.children[k].state = data.taskPlaceRecordVOList[j].state;
                                    if (data.taskPlaceRecordVOList[j].imageUrls) {
                                        children.children[k].urls = this.$setImageUrl(data.taskPlaceRecordVOList[j]
                                            .imageUrls, 2);
                                    }
                                    children.children[k].remark = data.taskPlaceRecordVOList[j].remark || "";
                                    this.$set(this.questionList, i, children)
                                }
                            }
                        }
                    }
                    this.info.id = data.id;
                    this.info.taskId = data.taskId;
                    this.info.remark = data.remark;
                    if (data.signaturePath) {
                        this.signatureUrl = this.$setFullUrl(data.signaturePath);
                        this.info.signaturePath = data.signaturePath;
                    }
                    this.form.images = this.$setImageUrl(data.imageUrls, 2)
                })
            },
            getItem() {
                getPlaceCheckItem({
                    childType: uni.getStorageSync("siteInfo").noExplosionCategory,
                    type: 2
                }).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);
                            data[i].children[k].urls = [];
                            data[i].children[k].remark = "";
                            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 = [];
                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) {
                        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 || ""
                        })
                        // if (this.questionList[i].children[k].state == 0) {
                        //     count += 1;
                        // }
                        // }
                    }
                }
                this.dangerCount = count;
                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) {
                uni.showLoading({
                    title: "上传中..."
                })
                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.taskPlaceRecordVOList = this.getSelected()
                // this.info.status = 1;
                console.log("data===>", this.getSelected());
                if (this.isEdit) {
                    auditPlaceCheck(this.info).then(res => {
                        uni.hideLoading();
                        uni.showToast({
                            icon: 'success',
                            title: '提交成功',
                            success() {
                                setTimeout(() => {
                                    uni.navigateBack();
                                }, 300)
                            }
                        })
                    })
                } else {
                    addCounterfraudReport(this.info).then(res => {
                        uni.hideLoading();
                        uni.showToast({
                            icon: 'success',
                            title: '提交成功',
                            success() {
                                setTimeout(() => {
                                    uni.navigateBack();
                                }, 300)
                            }
                        })
                    })
                }
            },
            previewImg() {
                uni.previewImage({
                    urls: [this.signatureUrl],
                    current: this.signatureUrl
                })
            },
            navTo() {
                uni.navigateTo({
                    url: 'reportRecord'
                })
            },
        }
    }
</script>
<style lang="less">
    page {
        background-color: #f5f5f5;
    }
    .wrap {
        .section {
            padding: 0 20rpx;
            margin: 20rpx 20rpx 0;
            background-color: #fff;
        }
    }
    .top {
        display: flex;
        justify-content: flex-end;
        padding: 20rpx;
    }
    .top-btn {
        padding: 16rpx 22rpx;
        border-radius: 6rpx;
        text-align: center;
    }
    .content {
        margin: 20rpx;
        padding: 20rpx 30rpx;
    }
    .cell {
        margin: 0 20rpx;
        padding: 20rpx 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 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;
    }
    .blank {
        width: 100%;
        height: 140rpx;
    }
    .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;
    }
</style>
subPackage/counterfraud/reportRecord.vue
New file
@@ -0,0 +1,105 @@
<template>
    <view class="">
        <view class="list">
            <view class="list-item bgc-ff mb-20" v-for="(i,k) in list" :key="k" @click="navTo(i.id)">
                <view class="item-title flex a-i-c j-c-s-b mb-20">
                    <text class="f-32 fw">无诈上报</text>
                    <!--     <text class="f-32 fw" v-if="i.eventType == 3">二手车交易</text>id
                    <text class="f-32 fw" v-if="i.eventType == 2">二手手机维修</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>
                    <u-tag v-if="i.status == 3" text="审核拒绝" type="error" plain plainFill></u-tag>
                </view>
                <view class="item-row flex a-i-c j-c-s-b">
                    <text class="f-28">时间</text>
                    <text class="f-28 c-66">{{i.createTime}}</text>
                </view>
            </view>
        </view>
        <u-loadmore :status="loadingStatus" loadmoreText="开始加载" loadingText="数据加载中" nomoreText="没有更多了" line />
    </view>
</template>
<script>
    import {
        getPlaceCheckList
    } from "@/api/reporting/reporting.js"
    import {
        getCounterfraudReportList
    } from "@/api/counterfraud/counterfraud.js"
    export default {
        data() {
            return {
                list: [],
                currentPage: 1,
                loadingStatus: 'nomore',
            }
        },
        onLoad(option) {
            this.getList(option.type)
        },
        onReachBottom() {
            this.currentPage++
            this.getList()
        },
        methods: {
            getList() {
                getCounterfraudReportList({
                    userId: uni.getStorageSync("userInfo").user_id,
                    current: this.currentPage,
                    size: 10,
                    // reportType: 2
                    // eventType: type
                }).then(res => {
                    if (res.code != 200) {
                        uni.showToast({
                            title: '数据请求失败',
                            icon: 'error'
                        })
                        return
                    }
                    let records = res.data.records;
                    this.list = [...this.list, ...records]
                    this.loadingStatus = 'nomore'
                })
            },
            navTo(id) {
                uni.navigateTo({
                    url: `/subPackage/workbench/views/counterfraudReportDetail?id=${id}`
                })
            }
        }
    }
</script>
<style lang="scss">
    page {
        background-color: #F5F5F5;
    }
    .list {
        margin: 20rpx 30rpx 0;
    }
    .list-item {
        padding: 0 30rpx 20rpx;
        border-radius: 8rpx;
        .item-title {
            padding: 30rpx 0;
            border-bottom: 1px solid #F5F5F5;
        }
        .item-row {
            padding: 10rpx 0;
            .address {
                width: 65%;
            }
        }
    }
</style>
subPackage/house/houseNumber/siteInspect.vue
@@ -329,7 +329,10 @@
            getItem() {
                getPlaceCheckItem().then(res => {
                getPlaceCheckItem({
                    childType: 1,
                    type: 1
                }).then(res => {
                    let data = res.data;
                    this.questionList = res.data;
                    let arr = []
subPackage/label/check.vue
@@ -207,7 +207,10 @@
            getItem() {
                getPlaceCheckItem().then(res => {
                getPlaceCheckItem({
                    childType: 1,
                    type: 1
                }).then(res => {
                    let data = res.data;
                    this.questionList = res.data;
                    let arr = []
subPackage/workbench/views/checkDetail.vue
@@ -129,7 +129,10 @@
            getItem() {
                getPlaceCheckItem().then(res => {
                getPlaceCheckItem({
                    childType: 1,
                    type: 1
                }).then(res => {
                    if (res.code == 200) {
                        this.itemList = res.data;
                    }
subPackage/workbench/views/checkReform.vue
@@ -225,7 +225,10 @@
            },
            getItem() {
                getPlaceCheckItem().then(res => {
                getPlaceCheckItem({
                    childType: 1,
                    type: 1
                }).then(res => {
                    if (res.code == 200) {
                        this.itemList = res.data;
                    }
subPackage/workbench/views/checkReform3.vue
@@ -144,7 +144,10 @@
            getItem() {
                getPlaceCheckItem().then(res => {
                getPlaceCheckItem({
                    childType: 1,
                    type: 1
                }).then(res => {
                    let data = res.data;
                    this.questionList = res.data;
                    let arr = []
subPackage/workbench/views/counterfraudReportDetail.vue
New file
@@ -0,0 +1,401 @@
<template>
    <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> -->
        <view class="item-row flex j-c-s-b a-i-c">
            <text>状态</text>
            <text v-if="info.status == 1">待审核</text>
            <text v-if="info.status == 2">审核成功</text>
            <text v-if="info.status == 3">审核驳回</text>
            <text v-if="info.status == 4">待完成</text>
        </view>
        <view class="item-row flex j-c-s-b a-i-c" v-if="info.status == 3 && info.reasonFailure">
            <text>驳回原因</text>
            <text class="item-content">{{info.reasonFailure}}</text>
        </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.taskPlaceRecordVOList">
                        <!-- <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 :value="ids" v-if="i.id == n.itemId" ref="collapse">
                            <u-collapse-item :name="n.itemId" :title="i.title" :disabled="true" :clickable="false"
                                :isLink="false">
                                <view class="mb-20" v-if="n.imageUrls">
                                    <view class="f-26 mb-10 c-00">照片</view>
                                    <view class="flex flex-wrap">
                                        <view class="mr-20" v-for="r in ($setImageUrl(n.imageUrls))">
                                            <u-image :src="r" width="140rpx" height="140rpx"
                                                @click="previewImage($setImageUrl(n.imageUrls),i)"></u-image>
                                        </view>
                                    </view>
                                </view>
                                <view class="mb-20" v-if="n.remark">
                                    <view class="f-26 mb-10 c-00">描述</view>
                                    <view class="f-28 c-00">
                                        {{n.remark}}
                                    </view>
                                </view>
                                <!-- <view class="mb-20" v-if="roleType == 2 || (roleType == 1 && n.rectificationImageUrls)">
                                    <view class="f-26 mb-10 c-00">整改后照片</view>
                                    <u-upload v-if="roleType == 2 && (info.status == 4 || info.status == 3)"
                                        :fileList="n.urls" :previewFullImage="uploadConfig.previewFullImage"
                                        :accept="uploadConfig.acceptImg" :multiple="uploadConfig.multiple"
                                        :maxCount="uploadConfig.maxCount" :capture="uploadConfig.capture"
                                        @afterRead="afterReadImgs($event,n,m)" @delete="deleteImages($event,m)">
                                        <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 class="flex flex-wrap" v-if="info.status != 4 &&  n.rectificationImageUrls ">
                                        <view class="mr-20" v-for="r in ($setImageUrl(n.rectificationImageUrls))">
                                            <u-image :src="r" width="140rpx" height="140rpx"
                                                @click="previewImage($setImageUrl(n.rectificationImageUrls),i)"></u-image>
                                        </view>
                                    </view>
                                </view> -->
                                <!--     <view class="" v-if="roleType == 2 || (roleType == 1 && n.rectificationRemark)">
                                    <view class="f-26 mb-10 c-00">整改后描述</view>
                                    <u-textarea v-model="n.rectificationRemark" placeholder="请输入整改后描述"
                                        placeholderClass="c-99 f-26"
                                        :disabled="roleType == 2 && (info.status == 4 || info.status == 3)?false:true"></u-textarea>
                                </view> -->
                            </u-collapse-item>
                        </u-collapse>
                    </block>
                </block>
            </block>
        </view>
        <view class="blank"></view>
        <!-- <footer-btn @click="submitInfo" v-if="roleType == 2 && (info.status == 4 || info.status == 3)"     /> -->
        <audit-action v-if="roleType == 1 && info.status == 1" @handle="submitAudit" />
        <footer-btn v-if="roleType == 2 && info.status == 3" text="重新提交" @click="navTo" />
    </view>
</template>
<script>
    import uploadMixin from "@/mixin/uploadMixinPlace";
    import {
        getPlaceCheckItem,
        getPlaceCheckReformDetail,
        addPlaceCheckReform,
        auditPlaceCheckReform
    } from '@/api/place/place.js'
    import {
        getPlaceCheckDetail,
        auditPlaceCheck
    } from '@/api/reporting/reporting.js'
    import {
        getCounterfraudReportDetail
    } from "@/api/counterfraud/counterfraud.js"
    import auditAction from '../components/actionBtn.vue'
    export default {
        mixins: [uploadMixin],
        components: {
            auditAction
        },
        data() {
            return {
                info: {},
                images: [],
                signatureUrl: [],
                label: "",
                itemList: [],
                roleType: '', //1.民警/系统管理员   2.场所负责人
                ids: [],
                taskId: "",
                id: ""
            }
        },
        async onLoad(option) {
            let {
                roleName
            } = uni.getStorageSync("activeRole")
            if (roleName == "居民") {
                this.roleType = 2;
            }
            if (roleName == "民警" || roleName == "系统管理员") {
                this.roleType = 1;
            }
            await this.getItem();
            this.taskId = option.id;
            this.id = option.id;
        },
        onShow() {
            setTimeout(() => {
                this.getDetail();
            }, 100)
        },
        methods: {
            getDetail(id) {
                getCounterfraudReportDetail({
                    id: this.id
                }).then(res => {
                    let data = res.data;
                    // 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;
                    // }
                    let ids = [];
                    for (let i of data.taskPlaceRecordVOList) {
                        if ((data.status == 4 || data.status == 3) && this.roleType == 2) {
                            if (i.rectificationImageUrls) {
                                i.urls = this.$setImageUrl(i.rectificationImageUrls, 2);
                            } else {
                                i.urls = [];
                            }
                        }
                        if (i.state == 0) {
                            ids.push(i.itemId)
                        }
                    }
                    this.ids = ids;
                    this.info = data;
                })
            },
            getItem() {
                getPlaceCheckItem({
                    childType: uni.getStorageSync("siteInfo").noExplosionCategory,
                    type: 2
                }).then(res => {
                    if (res.code == 200) {
                        this.itemList = res.data;
                    }
                })
            },
            async afterReadImgs(event, item, fIndex) {
                uni.showLoading({
                    title: "上传中..."
                })
                let children = this.info.taskPlaceRecordVOList;
                let lists = [].concat(event.file)
                let fileListLen = item.urls.length;
                lists.map((item) => {
                    children[fIndex].urls.push({
                        ...item,
                        status: 'uploading',
                        message: '上传中'
                    })
                    this.$set(this.info, "taskPlaceRecordVOList", children)
                })
                for (let i = 0; i < lists.length; i++) {
                    const result = await this.uploadFilePromise(lists[i].url)
                    children[fIndex].urls.splice(fileListLen, 1, Object.assign({}, {
                        url: result.data.link,
                        name: result.data.name
                    }))
                    this.$set(this.info, "taskPlaceRecordVOList", children)
                    fileListLen++
                }
                this.loadingClose()
            },
            deleteImages(event, index) {
                let children = this.info.taskPlaceRecordVOList;
                children[index].urls.splice(event.index, 1);
                this.$set(this.info, "taskPlaceRecordVOList", children)
            },
            setImages(key) {
                if (!key) {
                    return ""
                } else {
                    let urls = [];
                    for (let i of key) {
                        urls.push(i.name);
                    }
                    return urls.join(",")
                }
            },
            previewImage(urls, current) {
                uni.previewImage({
                    urls,
                    current
                })
            },
            //整改提交
            submitInfo() {
                uni.showLoading({
                    title: "加载中..."
                })
                let data = this.info;
                for (let i of data.taskPlaceRecordVOList) {
                    if (i.urls) {
                        i.rectificationImageUrls = this.setImages(i.urls)
                    }
                    delete i.urls;
                }
                if (data.status == 3) {
                    data.status = 1;
                }
                if (data.status == 4) {
                    data.status = 1;
                }
                addPlaceCheckReform(data).then(res => {
                    uni.hideLoading()
                    if (res.code == 200) {
                        this.$showTips("操作成功", "success");
                        setTimeout(() => {
                            uni.navigateBack()
                        }, 300)
                    }
                })
            },
            //审核
            submitAudit(val) {
                uni.showLoading({
                    title: "加载中..."
                })
                auditPlaceCheck({
                    id: this.info.id,
                    taskId: this.info.taskId,
                    status: val.type,
                    rectificationFlag: val.type == 3 ? 1 : 2,
                    reasonFailure: val.remark
                }).then(res => {
                    uni.hideLoading()
                    if (res.code == 200) {
                        this.$showTips("操作成功", "success");
                        setTimeout(() => {
                            uni.navigateBack()
                        }, 300)
                    }
                })
            },
            navTo() {
                uni.navigateTo({
                    url: `/subPackage/label/check?taskId=${this.info.taskId}`
                })
            },
        }
    }
</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;
        }
        .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;
    }
    .blank {
        width: 100%;
        height: 140rpx;
    }
    .c-00 {
        color: #000;
    }
    /deep/ .u-collapse-item .u-collapse-item__content {
        height: auto !important;
    }
</style>
subPackage/workbench/views/cscj.vue
@@ -64,8 +64,8 @@
                        <view class="f-30" v-if="currentId">
                            {{nineTypeValue}}
                        </view>
                    </u-form-item>
                    <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"
@@ -98,6 +98,19 @@
                        </u-radio-group>
                        <view class="f-30" v-if="currentId">
                            {{form.threeFireProtection == 1?"否":"是"}}
                        </view>
                    </u-form-item>
                    <u-form-item class="form-item" labelWidth="100" label="无诈类别:" :required="isRequired"
                        :disabled="isDisabled" prop="noExplosionCategory">
                        <view class="flex j-c-s-b a-i-c" v-if="!currentId" @click="showNotSwindleTypePicker= true">
                            <u-input border="none" v-model="notSwindleValue" disabled disabledColor="#ffffff"
                                placeholder="请选择">
                            </u-input>
                            <u-icon slot="right" name="arrow-right"></u-icon>
                        </view>
                        <view class="f-30" v-if="currentId">
                            {{notSwindleValue}}
                        </view>
                    </u-form-item>
@@ -148,7 +161,7 @@
                        <view class="box-title" style="width:50%;">
                            <box-title title="负责人信息"></box-title>
                        </view>
                        <ocr-navigator v-if="!currentId" @onSuccess="recognizeSuccess($event,'legal')"
                        <ocr-navigator v-if="!currentId" @onSuccess="recognizeSuccess($event,'principal')"
                            certificateType="idCard" :opposite="false">
                            <view class="recognize-btn flex a-i-c">
                                <u-icon name="scan" color="#fff" size="24"></u-icon>
@@ -384,6 +397,12 @@
            @close="showGenderPicker = false" @cancel="showGenderPicker = false" keyName="name"
            @confirm="confirmGender"></u-picker>
        <u-picker :defaultIndex="notSwindleTypeIndex" :closeOnClickOverlay="true" :show="showNotSwindleTypePicker"
            :columns="[notSwindleTypeList]" @close="showNotSwindleTypePicker = false"
            @cancel="showNotSwindleTypePicker = false" keyName="name" @confirm="confirmNotSwindleType"></u-picker>
        <cate-selector ref="selector" @comfirm="comfirmNineType" />
    </view>
</template>
@@ -459,6 +478,7 @@
                    frontType: "",
                    nineType: "",
                    threeFireProtection: "",
                    noExplosionCategory: "",
                    placeExtEntity: {
                        landlordName: "",
                        landlordIdCard: "",
@@ -679,7 +699,6 @@
                frontTypeValue: "",
                isView: false,
                source: "",
                nationTypeList: [], //民族
                nationTypeIndex: [0],
                nationValue: "",
@@ -698,7 +717,11 @@
                showGenderPicker: false,
                personNum: 0,
                personNumArr: [],
                isLegalSame: 1 //法人信息是否与负责人一致  1是  2否
                isLegalSame: 1, //法人信息是否与负责人一致  1是  2否
                notSwindleTypeList: [],
                notSwindleIndex: [0],
                notSwindleValue: "",
                showNotSwindleTypePicker: false
            }
        },
@@ -763,6 +786,8 @@
                await this.getBizDict('frontType', this.frontTypeList)
                // 获取民族
                await this.getBizDict('nationType', this.nationTypeList);
                //反诈类别
                await this.getBizDict('noExplosionCategory', this.notSwindleTypeList);
            },
            // 获取业务字典
@@ -1005,7 +1030,15 @@
                            this.nationValue = name;
                        }
                        if (key == "noExplosionCategory" && data.noExplosionCategory) {
                            let {
                                index,
                                name
                            } = this.$getIndex(this.notSwindleTypeList, data.noExplosionCategory, "value",
                                "name")
                            this.notSwindleIndex = [index];
                            this.notSwindleValue = name;
                        }
                    })
                    this.$set(this.form, "jwd", `${Number(data.lng).toFixed(6)},${Number(data.lat).toFixed(6)}`)
                    this.form.building = arr.join("")
@@ -1261,6 +1294,14 @@
                this.showGenderPicker = false;
            },
            //选择无诈类别
            confirmNotSwindleType(e) {
                this.notSwindleIndex = e.indexs;
                this.notSwindleValue = e.value[0].name;
                this.form.noExplosionCategory = e.value[0].value;
                this.showNotSwindleTypePicker = false;
            },
            //弹出层打开
            popup() {
subPackage/workbench/views/selfCheckDetail.vue
@@ -242,7 +242,10 @@
            },
            getItem() {
                getPlaceCheckItem().then(res => {
                getPlaceCheckItem({
                    childType: 1,
                    type: 1
                }).then(res => {
                    if (res.code == 200) {
                        this.itemList = res.data;
                    }