shuishen
2024-03-16 e27410aca7eb65b11fec83adb39643399bf3a6b4
src/views/article/components/deitDiscussion.vue
@@ -1,13 +1,3 @@
<!--
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2024-01-04 15:18:13
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2024-01-04 17:13:22
 * @FilePath: \jczz_web\src\views\article\components\deitDiscussion.vue
 * @Description:
 *
 * Copyright (c) 2024 by shuishen, All Rights Reserved.
-->
<template>
    <div>
        <el-dialog title="" append-to-body :visible.sync="popupTableShow" width="80%" :before-close="handleClose">
@@ -42,8 +32,15 @@
        </el-dialog>
        <el-dialog title="" append-to-body :visible.sync="popupTableUserShow" width="80%" :before-close="userHandleClose">
            <avue-crud :data="userData" :page="userPage" :option="userOption" @search-change="searchChange"
                @search-reset="searchReset"></avue-crud>
            <basic-container>
                <avue-crud :data="userData" :page="userPage" :option="userOption" @search-change="searchChange"
                    @search-reset="searchReset">
                    <template slot-scope="{type,size,row }" slot="menuLeft">
                        <el-button type="warning" size="small" plain icon="el-icon-download" @click="handleExport">导出
                        </el-button>
                    </template>
                </avue-crud>
            </basic-container>
        </el-dialog>
    </div>
</template>
@@ -60,7 +57,21 @@
import {
    getPage
} from "@/api/discuss/userTopics"
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 website from '@/config/website'
@@ -83,7 +94,7 @@
            ontitle: '编辑议题',
            editFlag: false,
            disCussFromListClone: {},
            disCussFrom: {
                discussContent: '',
                optionRange: 0,
@@ -142,12 +153,6 @@
                        trigger: 'blur'
                    }],
                },
                // {
                //   label: '排序',
                //   prop: 'sort',
                //   controlsPosition: '',
                //   type: 'number'
                // },
                {
                    label: '选项内容',
                    prop: 'children',
@@ -207,7 +212,6 @@
                searchMenuSpan: 3,
                // menuWidth: 500,
                menu: false,
                height: "auto",
                calcHeight: 54,
                dialogWidth: 950,
@@ -222,11 +226,13 @@
                delBtn: false,
                excelBtn: true,
                dialogClickModal: false,
                header: true,
                column: [{
                    label: '姓名',
                    prop: 'name',
                    searchSpan: 4,
                    search: true,
                    searchLabelWidth: 46,
                }, {
                    label: '头像',
                    type: 'upload',
@@ -249,6 +255,9 @@
                    listType: "picture-img",
                    prop: 'signaturePath'
                }, {
                    label: '投票项',
                    prop: 'optionContent'
                }, {
                    label: '时间',
                    prop: 'createTime'
                }]
@@ -261,6 +270,10 @@
                total: 0
            },
            query: {},
            type: '',
            newData: {},
            articleRange: {},
            tops: {},
        }
    },
@@ -268,37 +281,96 @@
    methods: {
        handleExport () {
            this.$confirm("是否导出投票人员数据?", "提示", {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: "warning"
            }).then(() => {
                NProgress.start()
                this.query = {}
                this.query.districtId = this.newData.articleRange
                if (this.type == 0) {
                    this.query.articleId = this.articleId
                } else {
                    this.query.topicsId = this.tops.id
                }
                var data = {
                    ...this.query
                }
                data = Qs.stringify(data)
                exportBlob(
                    `/api/blade-userTopics/userTopics/exportUser?${this.website.tokenHeader}=${getToken()}&` + data).then(
                        res => {
                            downloadXls(res.data, `投票人员${dateNow()}.xlsx`)
                            NProgress.done()
                        })
            })
        },
        userHandleClose () {
            this.popupTableUserShow = false
        },
        searchReset () {
            this.query = {}
            this.getUserPage(this.userPage)
            this.query.districtId = this.newData.articleRange
            if (this.type == 0) {
                this.query.articleId = this.articleId
            } else {
                this.query.topicsId = this.tops.id
            }
            this.userPage.currentPage = 1
            this.getUserPage(this.userPage, this.query)
        },
        searchChange (params, done) {
            this.query = params
            this.query.districtId = this.newData.articleRange
            if (this.type == 0) {
                this.query.articleId = this.articleId
            } else {
                this.query.topicsId = this.tops.id
            }
            this.userPage.currentPage = 1
            this.getUserPage(this.userPage, params)
            this.getUserPage(this.userPage, this.query)
            done()
        },
        openUser (row, type = 0) {
            this.type = type
            this.popupTableUserShow = true
            this.query = {}
            this.articleId = row.id
            let districtId
            if (type == 0) {
                this.newData = row
                districtId = this.newData.articleRange
                this.userParams = {
                    articleId: row.id,
                    districtId: districtId
                }
            } else {
                districtId = this.newData.articleRange
                this.tops = row
                this.userParams = {
                    topicsId: row.id,
                    districtId: districtId
                }
            }
            this.getUserPage(this.userPage, this.userParams)
        },
        initData (newData) {
            this.editFlag = false
            this.popupTableShow = true
            this.articleId = newData.id
            this.query.level = 1
            this.query.articleId = this.articleId
            this.newData = newData
            this.query.districtId = newData.articleRange
            this.onLoad(this.userPage, this.query)
        },
        // initData(newData) {
        //   this.editFlag = false
        //   this.popupTableShow = true
        //   this.articleId = newData.id
        //   this.onLoad()
        // },
        handleClose () {
            this.popupTableShow = false
@@ -308,7 +380,17 @@
        handleSubmit (form, done) {
            done()
            form.articleId = this.articleId
            if (this.disCussFromListClone.length > 0) {
                this.disCussFromListClone.forEach(item => {
                    if (form.children.length > 0) {
                        let same = form.children.find(array => array.id === item.id)
                        if (!same) {
                            item.deleteFlag = 1
                            form.children.push(item)
                        }
                    }
                })
            }
            add(form).then(
                () => {
                    this.$message({
@@ -317,12 +399,10 @@
                    })
                    form = {}
                    this.editFlag = false
                    let params = {
                        level: 1,
                        articleId: this.articleId
                    }
                    getLists(1, 100, Object.assign(params, this.query)).then(res => {
                        const data = res.data.data
                        this.data = data
@@ -387,6 +467,7 @@
        edit (row) {
            this.disCussFrom = row
            this.disCussFromListClone = [].concat(row.children)
            this.editFlag = true
        },
@@ -409,20 +490,7 @@
                })
        },
        openUser (row, type = 0) {
            this.popupTableUserShow = true
            this.query = {}
            if (type == 0) {
                this.userParams = {
                    articleId: row.id
                }
            } else {
                this.userParams = {
                    topicsId: row.id
                }
            }
            this.getUserPage(this.userPage, this.userParams)
        },
        getUserPage (page, params = {}) {
            getPage(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {