guanqb
2024-02-22 ab701df859cd79ae036f8cc86268137d2c8da8ee
src/views/publicSecurity/positionManage/TransactRegist.vue
@@ -7,21 +7,42 @@
            @refresh-change="refreshChange" @on-load="onLoad">
            <template slot-scope="{row, size}" slot="menu">
                <el-button type="text" :size="size" icon="el-icon-view" v-if="permission.place_view" plain
                <!-- <el-button type="text" :size="size" icon="el-icon-view" v-if="permission.place_view" plain
                    @click="lookDetail(row, 0)">查 看
                </el-button>
                </el-button> -->
                <el-button type="text" :size="size" icon="el-icon-delete" v-if="permission.place_del" plain
                    @click="rowDel(row)">删 除
                </el-button>
                <el-button type="text" :size="size" icon="el-icon-s-check" v-if="row.status == 1" plain
                    @click="goAudit(row)" :disabled="row.status != 1">审 核
                <el-button type="text" :size="size" icon="el-icon-s-check" plain @click="goAudit(row)"
                    v-if="row.confirmFlag == 1" :disabled="row.confirmFlag != 1">审 核
                </el-button>
            </template>
            <template slot="status" slot-scope="{row, size}">
                <el-tag :size="size" :type="showStatus(row.status).type">
                    {{ showStatus(row.status).text }}
            <template slot="confirmFlag" slot-scope="{row, size}">
                <el-tag :size="size" :type="showStatus(row.confirmFlag).type">
                    {{ showStatus(row.confirmFlag).text }}
                </el-tag>
            </template>
            <template slot="menuLeft">
                <el-button type="warning" size="small" plain icon="el-icon-download" @click="handleExport">导出
                </el-button>
            </template>
            <template slot-scope="{row, size}" slot="phoneNumber">
                <el-button :size="size" type="text" @click="showStringDispose(row, 'phoneNumberflag')"
                    v-text="textDispose(row, 'phoneNumberflag', 'phoneNumber')">
                </el-button>
            </template>
            <template slot-scope="{row, size}" slot="transactionObjectTel">
                <el-button :size="size" type="text" @click="showStringDispose(row, 'transactionObjectTelflag')"
                    v-text="textDispose(row, 'transactionObjectTelflag', 'transactionObjectTel')">
                </el-button>
            </template>
            <template slot-scope="{row, size}" slot="idCard">
                <el-button :size="size" type="text" @click="showStringDispose(row, 'idCardflag')"
                    v-text="textDispose(row, 'idCardflag', 'idCard')">
                </el-button>
            </template>
        </avue-crud>
@@ -34,21 +55,7 @@
        <el-dialog :visible.sync="visible" append-to-body destroy-on-close title="审核" width="30%"
            custom-class="flow-design-dialog" :before-close="handleClose">
            <el-form ref="auditForm" :model="auditForm" :rules="auditRules">
                <el-form-item label="审核结论:" prop="status">
                    <el-radio-group v-model="auditForm.status">
                        <el-radio :label="2">通过</el-radio>
                        <el-radio :label="3">不通过</el-radio>
                    </el-radio-group>
                </el-form-item>
                <el-form-item label="不通过原因:" prop="remark" v-if="auditForm.status == 3">
                    <el-input type="textarea" v-model="auditForm.remark"></el-input>
                </el-form-item>
            </el-form>
            <div style="display:flex;justify-content:center">
                <el-button @click="submitAudit" size="small" type="primary">保 存</el-button>
                <el-button @click="cancelAudit" size="small">取 消</el-button>
            </div>
            <audit-base @handleSubmit="submitAudit"></audit-base>
        </el-dialog>
    </basic-container>
</template>
@@ -56,11 +63,26 @@
<script>
import {
    getList,
    getDetail,
    removeTask,
    update,
    add,
} from "@/api/task/task"
} from "@/api/task/labelReporting"
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import Qs from "qs"
import {
    exportBlob
} from "@/api/common"
import {
    getToken
} from '@/util/auth'
import {
    downloadXls
} from "@/util/util"
import {
    dateNow
} from "@/util/date"
import {
    mapGetters
} from "vuex"
@@ -92,7 +114,6 @@
                status: [{ required: true, message: "必填" }],
                remark: [{ required: true, message: "必填" }],
            },
            auditForm: {},
            visible: false,
            taskType: 0,
            curRow: {},
@@ -123,137 +144,219 @@
                border: true,
                //stripe:true,
                index: true,
                // viewBtn: true,
                viewBtn: true,
                addBtn: false,
                editBtn: false,
                delBtn: false,
                refreshBtn: false,
                searchShowBtn: false,
                columnBtn: false,
                selection: true,
                header: false,
                dialogClickModal: false,
                column: [{
                    span: 12,
                    label: "社区",
                    prop: "communityName",
                    searchSpan: 4,
                    searchLabelWidth: 46,
                    search: true,
                    hide: true,
                    align: 'center'
                },
                {
                    width: 110,
                    span: 12,
                    label: "场所负责人",
                    prop: "realName",
                    searchSpan: 4,
                    searchLabelWidth: 100,
                    search: true,
                    align: 'center'
                }, {
                    width: 120,
                    span: 12,
                    label: "联系方式",
                    prop: "phone",
                    searchSpan: 4,
                    search: true,
                    rules: [{
                        validator: validatorPhone,
                        trigger: 'blur'
                    }],
                    align: 'center'
                }, {
                    overHidee: true,
                    span: 12,
                    label: "地址",
                    prop: "addressName",
                    searchSpan: 4,
                    // search: true,
                    rules: [{
                        required: true,
                        message: "请输入地址",
                        trigger: "blur",
                    },],
                    align: 'center'
                }, {
                    width: 110,
                    label: "所属街道",
                    // hide: true,
                    // search: true,
                    parent: false,
                    searchSpan: 4,
                    prop: "streetCode",
                    type: "tree",
                    dicUrl: "/api/blade-system/region/getTownTree",
                    props: {
                        label: "name",
                        value: "id"
                column: [
                    {
                        width: 110,
                        span: 12,
                        label: "场所名称",
                        prop: "districtName",
                        searchSpan: 4,
                        searchLabelWidth: 100,
                        search: true,
                        align: 'center',
                        labelWidth: 110,
                    },
                    rules: [{
                        required: true,
                        message: "请选择所属街道",
                        trigger: "blur",
                    },],
                    align: 'center'
                }, {
                    width: 156,
                    // hide: true,
                    parent: false,
                    searchSpan: 4,
                    label: "所属社区",
                    prop: "neiCode",
                    // search: false,
                    type: "tree",
                    dicUrl: "/api/blade-system/region/tree",
                    props: {
                        label: "name",
                        value: "id",
                    {
                        span: 12,
                        label: "场所地址",
                        prop: "localtion",
                        searchSpan: 4,
                        minWidth: 220,
                        overHidden: true,
                        // search: true,
                        rules: [{
                            required: true,
                            message: "请输入地址",
                            trigger: "blur",
                        },],
                        align: 'center',
                        labelWidth: 110,
                    },
                    rules: [{
                        required: true,
                        message: "请选择所属社区",
                        trigger: "blur",
                    },],
                    align: 'center'
                },
                {
                    label: "阵地类型",
                    prop: "frontType",
                    dicUrl: "/api/blade-system/dict-biz/tree?code=frontType",
                    props: {
                        label: "title",
                        value: "key",
                    {
                        label: "阵地类型",
                        prop: "frontType",
                        dicUrl: "/api/blade-system/dict-biz/tree?code=frontType",
                        props: {
                            label: "title",
                            value: "key",
                        },
                        type: 'select',
                        search: true,
                        searchSpan: 4,
                        align: 'center',
                        width: 120,
                        labelWidth: 110,
                    },
                    // type: 'select',
                    // search: true,
                    align: 'center',
                    width: 120,
                },
                {
                    width: 100,
                    addDisplay: false,
                    editDisplay: false,
                    viewDisplay: false,
                    label: '审核状态',
                    prop: 'status',
                    type: 'radio',
                    slot: true,
                    dicData: [{
                        label: '待审核',
                        value: 1
                    {
                        width: 110,
                        span: 12,
                        label: "场所负责人",
                        prop: "owner",
                        searchSpan: 4,
                        searchLabelWidth: 110,
                        search: true,
                        align: 'center',
                        labelWidth: 110,
                    }, {
                        label: '已审核',
                        value: 2
                        width: 120,
                        span: 12,
                        label: "联系方式",
                        prop: "phoneNumber",
                        searchSpan: 4,
                        search: true,
                        searchLabelWidth: 96,
                        rules: [{
                            validator: validatorPhone,
                            trigger: 'blur'
                        }],
                        align: 'center',
                        slot: true,
                        labelWidth: 110,
                    },
                    {
                        width: 110,
                        span: 12,
                        label: "交易对象",
                        prop: "transactionObject",
                        searchSpan: 4,
                        searchLabelWidth: 96,
                        search: true,
                        align: 'center',
                        labelWidth: 110,
                    },
                    {
                        width: 110,
                        span: 12,
                        label: "交易对象电话",
                        prop: "transactionObjectTel",
                        searchSpan: 4,
                        searchLabelWidth: 120,
                        searchPlaceholder: '请输入交易电话',
                        search: true,
                        align: 'center',
                        labelWidth: 110,
                        slot: true
                    },
                    {
                        width: 160,
                        span: 12,
                        label: "身份证号",
                        prop: "idCard",
                        searchSpan: 4,
                        searchLabelWidth: 100,
                        search: true,
                        align: 'center',
                        labelWidth: 110,
                    },
                    {
                        width: 110,
                        span: 12,
                        label: "交易数量",
                        prop: "goodsNums",
                        align: 'center',
                        labelWidth: 110,
                    },
                    {
                        width: 110,
                        span: 12,
                        label: "交易金额",
                        prop: "transactionMoney",
                        align: 'center',
                        labelWidth: 110,
                    },
                    {
                        width: 110,
                        span: 12,
                        label: "交易过程",
                        prop: "transactionProcess",
                        align: 'center',
                        labelWidth: 110,
                    },
                    {
                        width: 140,
                        span: 12,
                        label: "发生时间",
                        prop: "createTime",
                        align: 'center',
                        labelWidth: 110,
                    },
                    {
                        width: 110,
                        label: "所属街道",
                        // hide: true,
                        // search: true,
                        parent: false,
                        searchSpan: 4,
                        prop: "streetName",
                        align: 'center',
                        labelWidth: 110,
                    }, {
                        label: '未通过',
                        value: 3
                        width: 156,
                        parent: false,
                        searchSpan: 4,
                        label: "所属社区",
                        prop: "communityName",
                        align: 'center',
                        labelWidth: 110,
                    },
                    {
                        width: 100,
                        addDisplay: false,
                        editDisplay: false,
                        viewDisplay: false,
                        label: '审核状态',
                        prop: 'confirmFlag',
                        type: 'radio',
                        slot: true,
                        dicData: [{
                            label: '待审核',
                            value: 1
                        }, {
                            label: '已审核',
                            value: 2
                        }, {
                            label: '未通过',
                            value: 3
                        }, {
                            label: '待接收',
                            value: 4
                        }],
                        align: 'center',
                        labelWidth: 110,
                    }, {
                        label: '待接收',
                        value: 4
                    }],
                    align: 'center'
                }],
                        width: 110,
                        label: '物品图片',
                        prop: 'goodsImageUrls',
                        fileType: 'img',
                        type: "upload",
                        listType: "picture-card",
                        dataType: "string",
                        disabled: true,
                        span: 12,
                        labelWidth: 110,
                    }, {
                        width: 110,
                        label: '身份证照片',
                        prop: 'imageUrls',
                        fileType: 'img',
                        type: "upload",
                        listType: "picture-card",
                        dataType: "string",
                        disabled: true,
                        span: 12,
                        labelWidth: 110,
                    },],
            },
            data: [],
            auditBasePopup: false,
        }
    },
@@ -316,9 +419,48 @@
                return tags
            }
        },
        textDispose () {
            return (row, flag, type) => {
                if (row[flag] || row[type] == null) {
                    return row[type]
                } else {
                    if (type == 'idCardflag') {
                        return row[type].replace(/^(.{6})(?:\d+)(.{4})$/, "$1******$2")
                    } else {
                        return row[type].replace(/^(.{3})(?:\d+)(.{4})$/, "$1****$2")
                    }
                }
            }
        }
    },
    methods: {
        showStringDispose (row, type) {
            row[type] = !row[type]
        },
        handleExport () {
            this.$confirm("是否导出交易登记数据?", "提示", {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: "warning"
            }).then(() => {
                NProgress.start()
                var data = {
                    ...this.query
                }
                // data.isNine = 1
                data = Qs.stringify(data)
                exportBlob(
                    `/api/blade-taskLabelReportingEvent/taskLabelReportingEvent/export-taskLabelReportingEvent?${this.website.tokenHeader}=${getToken()}&` + data
                ).then(res => {
                    console.log('exportBlob', res)
                    downloadXls(res.data, `交易登记${dateNow()}.xlsx`)
                    NProgress.done()
                })
            })
        },
        // 弹窗关闭回调
        handleClose () {
            this.cancelAudit()
@@ -327,23 +469,21 @@
        // 取消审核
        cancelAudit () {
            this.visible = false
            this.auditForm = {}
            this.$refs.auditForm.resetFields()
        },
        // 确认提交审核
        submitAudit () {
            this.$refs.auditForm.validate((valid) => {
                if (valid) {
                    applyTaskExamine(Object.assign(this.auditParams, this.auditForm)).then(res => {
                        if (res.data.code == 200) {
                            this.$message.warning("审核成功")
                            this.onLoad(this.page)
                            this.cancelAudit()
                        }
                    })
                } else {
                    return false
        submitAudit (form) {
            let auditForm = {
                status: form.status == '1' ? '2' : '3',
                remark: form.confirmNotion,
                reportType: 5
            }
            applyTaskExamine(Object.assign(this.auditParams, auditForm)).then(res => {
                if (res.data.code == 200) {
                    this.$message.warning("审核成功")
                    this.onLoad(this.page)
                    this.cancelAudit()
                }
            })
        },
@@ -351,10 +491,9 @@
        // 审核按钮
        goAudit (row) {
            this.auditParams = {
                id: row.id,
                reportType: row.reportType
                id: row.taskId,
                reportType: 5
            }
            console.log('this.auditParams', this.auditParams)
            this.visible = true
        },
@@ -538,25 +677,11 @@
        },
        beforeOpen (done, type) {
            if (["edit", "view"].includes(type)) {
                // getPlace(this.form.id).then((res) => {
                //   this.form = res.data.data
                //   if (this.form.imageUrls.length) {
                //     this.form.imageUrls = this.form.imageUrls.split(",").filter(item => item != '').map(item => website
                //       .minioUrl + item).join(',')
                //   }
                //   if (this.form.placePoiLabelVOList.length) {
                //     let lebelTwo = this.form.placePoiLabelVOList.find(item => {
                //       return item.type == 2
                //     })
                //     if (lebelTwo) this.form.label = String(lebelTwo.poiCode)
                //     let lebelThree = this.form.placePoiLabelVOList.find(item => {
                //       return item.type == 3
                //     })
                //     if (lebelThree) this.form.smallLabel = String(lebelThree.poiCode)
                //   }
                //   done()
                // })
            if (["edit"].includes(type)) {
                getDetail(this.form.id).then((res) => {
                    this.form = res.data.data
                    done()
                })
            } else {
                done()
            }
@@ -597,6 +722,9 @@
                this.page.total = data.total
                this.data = data.records
                this.data.forEach(item => {
                    this.$set(item, 'phoneNumberflag', false)
                    this.$set(item, 'transactionObjectTelflag', false)
                    this.$set(item, 'idCardflag', false)
                    if (item.imageUrls && item.imageUrls != '' && item.imageUrls != null && item.imageUrls.length) {
                        var urls = []
                        var names = item.imageUrls.split(",").filter(item => item != '')
@@ -605,6 +733,14 @@
                        })
                        item.imageUrls = urls.join(",")
                    }
                    if (item.goodsImageUrls && item.goodsImageUrls != '' && item.goodsImageUrls != null && item.goodsImageUrls.length) {
                        var urls = []
                        var names = item.goodsImageUrls.split(",").filter(item => item != '')
                        names.forEach(name => {
                            urls.push(website.minioUrl + name)
                        })
                        item.goodsImageUrls = urls.join(",")
                    }
                })
                this.loading = false
                this.selectionClear()