guanqb
2024-03-27 0ff200fdb7da392ebb1e8ffc49d49b63992c8203
反诈信息接口对接
3 files modified
1 files added
442 ■■■■■ changed files
src/api/antiFraudShow/index.js 22 ●●●● patch | view | raw | blame | history
src/views/antiFraudShow/components/detailDialog.vue 128 ●●●●● patch | view | raw | blame | history
src/views/antiFraudShow/index.vue 283 ●●●● patch | view | raw | blame | history
src/views/rentalInfo/index.vue 9 ●●●●● patch | view | raw | blame | history
src/api/antiFraudShow/index.js
@@ -1,13 +1,29 @@
import request from "@/router/axios.js"
/**
 * 获得反诈骗宣传列表
 * 获得反诈宣传列表
 * @param {*} params
 * @returns
 */
export const getTaskResidencePermitApplyList = (params) => {
export const getBackblastPubRecordList = (params) => {
    return request({
        url: "/api/blade-taskResidencePermitApply/taskResidencePermitApply/page",
        url: "/api/blade-backblastPubRecord/backblastPubRecord/page",
        method: "get",
        meta: {
            isToken: true,
        },
        params: params,
    })
}
/**
 * 获得反诈预警列表
 * @param {*} params
 * @returns
 */
export const getBackblastWarnHanRecList = (params) => {
    return request({
        url: "/api/blade-backblastWarnHanRec/backblastWarnHanRec/page",
        method: "get",
        meta: {
            isToken: true,
src/views/antiFraudShow/components/detailDialog.vue
New file
@@ -0,0 +1,128 @@
<template>
    <el-dialog class="syld-details-box prm-dialog-popup business-detail-box" :title="title" append-to-body
        :close-on-click-modal="false" :visible.sync="popupShow" center @close="popupClose">
        <div class="all-box">
            <div class="type-tab-box" v-if="tabList.length != 0">
                <div class="tab-item" :class="{ 'tab-choose-item': chooseTab == order }" @click="tabClick(order)"
                    v-for="(part, order) in tabList" :key="order">
                    {{ part }}</div>
            </div>
            <div class="content" v-show="chooseTab == 0">
                <div class="item-box" v-for="(item, index) in lableList" :key="index">
                    <div class="label">{{ item.label }}:</div>
                    <div class="value" v-if="item.isPic != true">{{ item.value }}</div>
                    <div class="value" v-if="item.isPic == true">
                        <el-image
                            :style="{ width: item.value != '' ? '100px' : '', height: item.value != '' ? '100px' : '' }"
                            :src="getImgUrls(item.value)" :preview-src-list="getImgUrls(item.value)">
                            <div slot="error" class="image-slot">
                                <i class="el-icon-picture-outline"></i> 暂无图片
                            </div>
                        </el-image>
                    </div>
                </div>
            </div>
            <div class="content" v-show="chooseTab == 1">
                <el-table :data="tableData" style="width: 100%"
                    :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
                    :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75', 'cursor': 'default' }"
                    :row-class-name="tableRowClassName" class="police-infor-table">
                    <el-table-column prop="name" :show-overflow-tooltip="true" label="名称"
                        :key="Math.random()"></el-table-column>
                    <el-table-column prop="idCard" :show-overflow-tooltip="true" label="身份证号"
                        :key="Math.random()"></el-table-column>
                    <el-table-column prop="phoneNumber" :show-overflow-tooltip="true" label="手机号"
                        :key="Math.random()"></el-table-column>
                    <el-table-column prop="employer" :show-overflow-tooltip="true" label="工作单位"
                        :key="Math.random()"></el-table-column>
                    <el-table-column prop="confirmFlag" :show-overflow-tooltip="true" label="审核状态" :key="Math.random()">
                        <template slot-scope="scope">
                            <div>{{ scope.row.confirmFlag == 1 ? '待确认' : '已确认' }}</div>
                        </template>
                    </el-table-column>
                </el-table>
            </div>
        </div>
    </el-dialog>
</template>
<script>
export default {
    name: 'detailDialog',
    data () {
        return {
            title: '',
            popupShow: false,
            lableList: [],
            chooseTab: 0,
            tabList: [],
            tableData: []
        }
    },
    methods: {
        // 打开弹窗初始化数据
        initOpen (row, title, tabList, tableData) {
            this.chooseTab = 0
            this.popupShow = true
            this.lableList = row
            this.title = title
            this.tabList = tabList
            this.tableData = tableData
        },
        // 关闭弹窗按钮
        popupClose () {
            this.popupShow = false
        },
        // 图片转换
        getImgUrls (imageUrls) {
            if (imageUrls && imageUrls != '' && imageUrls.length > 0) {
                imageUrls = imageUrls.split(',').filter(ele => ele != '').map(ele => {
                    return 'http://10.141.11.11/place/' + ele
                    // return 'https://srgdjczzxtpt.com:2080/gminio/jczz/' + ele
                })
            }
            return imageUrls || []
        },
        // tab切换
        tabClick (type) {
            this.chooseTab = type
        },
    },
}
</script>
<style lang="scss" scoped>
:deep(.el-image__error) {
    height: 120px;
}
.all-box {
    display: flex;
    flex-direction: column;
    .content {
        display: flex;
        flex-wrap: wrap;
        margin-top: 20px;
        .item-box {
            width: 50%;
            display: flex;
            margin-bottom: 20px;
            .label {
                min-width: 120px;
                text-align: right;
                padding-right: 10px;
            }
        }
    }
}
</style>
src/views/antiFraudShow/index.vue
@@ -9,9 +9,9 @@
            </div>
            <div class="time-select" ref="timeSelect">
                <div class="search-item-box">
                    <el-input size="small" placeholder="请输入(姓名、手机号、身份证号、住址)" v-model="searchKey" clearable></el-input>
                    <el-input size="small" placeholder="请输入(地址、内容)" v-model="searchKey" clearable></el-input>
                    <el-button @click="searchBtn" icon="el-icon-search" class="bjnr-btn">搜索</el-button>
                    <el-button @click="clearRow" icon="el-icon-delete" class="bjnr-btn">清除</el-button>
                    <el-button @click="resetBtn" icon="el-icon-delete" class="bjnr-btn">清除</el-button>
                </div>
            </div>
@@ -20,15 +20,20 @@
                    :header-cell-style="{ 'text-align': 'center', 'background-color': '#203c60', 'borderColor': '#324e75' }"
                    :cell-style="{ 'text-align': 'center', 'borderColor': '#324e75', 'cursor': 'default' }"
                    :row-class-name="tableRowClassName" class="police-infor-table">
                    <el-table-column prop="realName" :show-overflow-tooltip="true" label="姓名"></el-table-column>
                    <el-table-column prop="phone" :show-overflow-tooltip="true" label="手机号"></el-table-column>
                    <el-table-column prop="cardNo" :show-overflow-tooltip="true" label="身份证号"></el-table-column>
                    <el-table-column prop="address" :show-overflow-tooltip="true" label="宣传地址" v-if="chooseTab == 1"
                        :key="Math.random()"></el-table-column>
                    <el-table-column prop="pubContent" :show-overflow-tooltip="true" label="宣传内容" v-if="chooseTab == 1"
                        :key="Math.random()"></el-table-column>
                    <el-table-column prop="createTime" :show-overflow-tooltip="true" label="宣传时间" v-if="chooseTab == 1"
                        :key="Math.random()"></el-table-column>
                    <el-table-column prop="address" :show-overflow-tooltip="true" label="预警地址" v-if="chooseTab == 2"
                        :key="Math.random()"></el-table-column>
                    <el-table-column prop="recContent" :show-overflow-tooltip="true" label="预警核实内容"
                        v-if="chooseTab == 2" :key="Math.random()"></el-table-column>
                    <el-table-column prop="createTime" :show-overflow-tooltip="true" label="预警核实时间"
                        v-if="chooseTab == 2" :key="Math.random()"></el-table-column>
                    <el-table-column label="操作" align="center">
                        <template slot-scope="scope">
                            <el-button type="text" size="small" title="定位" :disabled="positionDisabled(scope.row)"
                                @click="rowClick(scope.row)">
                                <i class="el-icon-location" :style="{ color: positionColor(scope.row) }"></i>
                            </el-button>
                            <el-button type="text" size="small" title="详情" @click="goDetail(scope.row)">
                                <i class="el-icon-document"></i>
                            </el-button>
@@ -43,19 +48,23 @@
                </div>
            </div>
        </div>
        <detailDialog ref="detailDialog" />
    </div>
</template>
<script>
import { initMapPosition } from '@/utils/mapPositionInit'
import {
    getVillagePersonInfoBySearch,
} from "@/api/dept/index.js"
    getBackblastPubRecordList, getBackblastWarnHanRecList
} from "@/api/antiFraudShow/index.js"
import detailDialog from './components/detailDialog.vue'
let loading = null
export default {
    inject: ['userInfo'],
    components: { detailDialog },
    data () {
        return {
@@ -121,131 +130,89 @@
        // 切换tab
        tabClick (curTab) {
            this.chooseTab = curTab
        },
        // 获取选中数据--暂时为测试数据
        getRowData (row) {
            let data = [
                {
                    label: '与户主关系',
                    prop: 'relation',
                    value: row.relation,
                    type: 'popup'
                },
                {
                    label: '名字',
                    prop: 'realName',
                    value: row.realName,
                    type: 'popup'
                },
                {
                    label: '身份证号',
                    prop: 'cardNo',
                    value: row.cardNo,
                    type: 'popup'
                },
                {
                    label: '人口类型',
                    prop: 'personType',
                    value: row.personType == 1 ? '户籍人口' : '实有人口',
                    type: 'popup'
                },
                {
                    label: '地址',
                    prop: 'address',
                    value: row.address,
                    type: 'popup'
                },
                {
                    label: '新地址',
                    prop: 'reAddress',
                    value: row.reAddress.replace('江西省上饶市', ''),
                    type: 'detail'
                },
                {
                    label: '审查状态',
                    prop: 'status',
                    value: row.status,
                    type: 'detail'
                },
                {
                    label: '审查时间',
                    prop: 'sctime',
                    value: row.sctime,
                    type: 'detail'
                },
                {
                    label: '社区局村委会',
                    prop: 'neightborhoood',
                    value: row.neightborhoood,
                    type: 'detail'
                },
                {
                    label: '重点人员细类',
                    prop: 'zdryxl',
                    value: row.zdryxl,
                    type: 'detail'
                }
            ]
            return data
            this.getList()
        },
        // 点击详情
        goDetail (row) {
            let data = this.getRowData(row)
            this.$refs.detailsPopup.initOpen(data)
        },
        // 点击定位
        rowClick (row) {
            this.$EventBus.$emit('toPosition', {
                siteJd: row.x,
                siteWd: row.y,
                siteGd: 200
            })
            this.$EventBus.$emit('mapClearLayer', {
                layerName: 'searchAILayer',
                type: 'VectorLayer'
            })
            this.$EventBus.$emit('layerPointAdd', {
                layerName: 'searchAILayer',
                type: "billboard",
                params: {
                    ...row,
                    lng: row.x,
                    lat: row.y,
                    alt: 1,
                    url: `/img/icon/location.png`
                },
            })
            let data = this.getRowData(row)
            this.$store.commit('SET_DIALOGDETAILPOPUP', true)
            this.$store.commit('SET_DIALOGDETAILPOPUPDATA', data)
            // 商业模拟数据
            var dialogDetailPopup = new global.DC.DivForms(global.viewer, {
                domId: 'dialogDetailPopup',
                position: [
                    global.DC.Transform.transformWGS84ToCartesian(
                        new global.DC.Position(
                            Number(row.x),
                            Number(row.y),
                            0
                        )
                    )
            let detailList = []
            let title = ''
            if (this.chooseTab == 1) {
                title = '反诈宣传详情'
                detailList = [
                    {
                        label: '宣传地址',
                        value: row.address
                    },
                    {
                        label: '宣传内容',
                        value: row.pubContent
                    },
                    {
                        label: '宣传图片',
                        value: row.pubUrls,
                        isPic: true
                    },
                    {
                        label: '宣传时间',
                        value: row.createTime
                    },
                    {
                        label: '民警姓名',
                        value: row.policeman
                    },
                    {
                        label: '民警联系方式',
                        value: row.policemanPhone
                    },
                    {
                        label: '地区',
                        value: row.townName
                    },
                    {
                        label: '辖区派出所',
                        value: row.pcsName
                    }
                ]
            })
        },
        // 清空按钮-图标图层清除
        clearRow (row) {
            this.$EventBus.$emit('mapClearLayer', {
                layerName: 'searchAILayer',
                type: 'VectorLayer'
            })
            this.$store.commit('SET_DIALOGDETAILPOPUP', false)
            } else if (this.chooseTab == 2) {
                title = '反诈预警详情'
                detailList = [
                    {
                        label: '预警地址',
                        value: row.address
                    },
                    {
                        label: '预警核实内容',
                        value: row.recContent
                    },
                    {
                        label: '预警核实图片',
                        value: row.sceUrls,
                        isPic: true
                    },
                    {
                        label: '预警核实时间',
                        value: row.createTime
                    },
                    {
                        label: '民警姓名',
                        value: row.policeman
                    },
                    {
                        label: '民警联系方式',
                        value: row.policemanPhone
                    },
                    {
                        label: '地区',
                        value: row.townName
                    },
                    {
                        label: '辖区派出所',
                        value: row.pcsName
                    }
                ]
            }
            this.$refs.detailDialog.initOpen(detailList, title, [], [])
        },
        // 获取列表
@@ -254,21 +221,19 @@
            let params = {
                searchKey: this.searchKey,
                size: this.pages.pageSize,
                current: this.pages.currentPage,
                deptId: JSON.parse(sessionStorage.getItem("userInfo")).dept_id
                current: this.pages.currentPage
            }
            getVillagePersonInfoBySearch(params).then(res => {
                if (res.data.data.records.length > 0) {
                    res.data.data.records.forEach(item => {
                        if (item.status == 0) {
                            item.status = '未审查'
                        } else if (item.status == 1) {
                            item.status = '审查正常'
                        } else if (item.status == 2) {
                            item.status = '审查异常'
                        }
                    })
                }
            // 反诈宣传列表
            if (this.chooseTab == 1) {
                this.getBackblastPubRecordList(params)
            } else {// 反诈预警列表
                this.getBackblastWarnHanRecList(params)
            }
        },
        // 反诈宣传列表
        getBackblastPubRecordList (params) {
            getBackblastPubRecordList(params).then(res => {
                this.tableData = res.data.data.records
                this.pages.total = res.data.data.total
                setTimeout(() => {
@@ -281,7 +246,30 @@
            })
        },
        // 反诈预警列表
        getBackblastWarnHanRecList (params) {
            getBackblastWarnHanRecList(params).then(res => {
                this.tableData = res.data.data.records
                this.pages.total = res.data.data.total
                setTimeout(() => {
                    loading && loading.close()
                }, 300)
            }).catch(error => {
                setTimeout(() => {
                    loading && loading.close()
                }, 300)
            })
        },
        // 搜索按钮
        searchBtn () {
            this.pages.currentPage = 1
            this.getList()
        },
        // 清空按钮
        resetBtn () {
            this.searchKey = ''
            this.pages.currentPage = 1
            this.getList()
        },
@@ -292,7 +280,7 @@
            this.getList()
        },
        // 加载动画
        loading () {
            loading = this.$loading({
                lock: true,
@@ -302,6 +290,7 @@
            })
        },
        // 表格高度
        setTableHeight () {
            this.currentTableHeight = this.$refs.containerContent.offsetHeight - this.$refs.timeSelect.offsetHeight
        },
@@ -318,8 +307,6 @@
        window.removeEventListener('resize', this.setTableHeight)
        this.$parent.$parent.resize('0px')
        this.clearRow()
    }
}
</script>
src/views/rentalInfo/index.vue
@@ -73,8 +73,8 @@
                            v-if="chooseTab == '租客管理'" :key="Math.random()"></el-table-column>
                        <el-table-column width="80" label="操作" align="center">
                            <template slot-scope="scope">
                                <el-button type="text" size="small" title="定位" @click="rowClick(scope.row)">
                                    <i class="el-icon-location"></i>
                                <el-button type="text" size="small" title="详情" @click="goDetail(scope.row)">
                                    <i class="el-icon-document"></i>
                                </el-button>
                            </template>
                        </el-table-column>
@@ -225,9 +225,8 @@
            })
        },
        // 列表操作按钮
        async rowClick (row) {
            console.log('row', row)
        // 列表操作按钮-详情
        async goDetail (row) {
            let detailList = []
            let title = ''
            let tabList = []