From f37ea219d986a7c785a4132cd281ebccb0ff2903 Mon Sep 17 00:00:00 2001
From: lin <sbla5888@163.com>
Date: Fri, 01 Mar 2024 11:51:36 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/views/article/components/deitDiscussion.vue |  220 +++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 172 insertions(+), 48 deletions(-)

diff --git a/src/views/article/components/deitDiscussion.vue b/src/views/article/components/deitDiscussion.vue
index 8d81e53..c7fec88 100644
--- a/src/views/article/components/deitDiscussion.vue
+++ b/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">
@@ -40,8 +30,18 @@
       </div>
     </el-dialog>
 
-    <el-dialog title="" append-to-body :visible.sync="popupTableUserShow" width="50%" :before-close="userHandleClose">
-      <avue-crud :data="userData" :page="userPage" :option="userOption"></avue-crud>
+    <el-dialog title="" append-to-body :visible.sync="popupTableUserShow" width="80%" :before-close="userHandleClose">
+      <basic-container>
+        <div>
+          <el-button type="warning" size="small" plain icon="el-icon-download" @click="handleExport">导出
+          </el-button>
+        </div>
+        <avue-crud :data="userData" :page="userPage" :option="userOption" @search-change="searchChange"
+          @search-reset="searchReset">
+
+
+        </avue-crud>
+      </basic-container>
     </el-dialog>
   </div>
 </template>
@@ -58,6 +58,19 @@
   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 website from '@/config/website'
 
 
   import {
@@ -112,11 +125,17 @@
               prop: 'discussContent',
               type: 'input',
               row: true,
+              rules: [{
+                required: true,
+                message: '请输入议题',
+                trigger: 'blur'
+              }],
             },
             {
               label: '选项范围',
               prop: 'optionRange',
               type: 'radio',
+              value: 0,
               button: true,
               row: true,
               dicData: [{
@@ -125,13 +144,12 @@
               }, {
                 label: '单选',
                 value: 0
-              }]
-            },
-            {
-              label: '排序',
-              prop: 'sort',
-              controlsPosition: '',
-              type: 'number'
+              }],
+              rules: [{
+                required: true,
+                message: '请选项范围',
+                trigger: 'blur'
+              }],
             },
             {
               label: '选项内容',
@@ -186,23 +204,56 @@
 
         userData: [],
         userOption: {
-          addBtn: false,
+          labelWidth: 96,
+          searchLabelWidth: 96,
+          searchShow: true,
+          searchMenuSpan: 3,
+          // menuWidth: 500,
           menu: false,
+          height: "auto",
+          calcHeight: 54,
+          dialogWidth: 950,
+          tip: false,
+          border: true,
+          //stripe:true,
+          index: true,
+          editBtn: false,
+          addBtn: false,
+          viewBtn: false,
+          selection: true,
+          delBtn: false,
+          excelBtn: true,
+          dialogClickModal: false,
+          header: false,
           column: [{
             label: '姓名',
-            prop: 'name'
+            prop: 'name',
+            searchSpan: 4,
+            search: true,
           }, {
             label: '头像',
+            type: 'upload',
+            listType: "picture-img",
             prop: 'avatar'
           }, {
             label: '手机',
-            prop: 'phone'
+            prop: 'phone',
+            searchSpan: 4,
+            search: true,
           }, {
             label: '小区',
             prop: 'aoiName'
           }, {
             label: '地址',
             prop: 'addressName'
+          }, {
+            label: '签名',
+            type: 'upload',
+            listType: "picture-img",
+            prop: 'signaturePath'
+          }, {
+            label: '投票项',
+            prop: 'optionContent'
           }, {
             label: '时间',
             prop: 'createTime'
@@ -215,18 +266,108 @@
           currentPage: 1,
           total: 0
         },
+        query: {},
+        type: '',
+        newData: {},
+        articleRange: {},
+        tops: {},
       }
     },
 
     watch: {},
 
     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.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, 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.onLoad()
+        this.query.level = 1
+        this.query.articleId = this.articleId
+        this.newData = newData
+        this.query.districtId = newData.articleRange
+        this.onLoad(this.userPage, this.query)
       },
 
       handleClose() {
@@ -246,12 +387,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
@@ -301,7 +440,7 @@
             return remove(row.id)
           })
           .then(() => {
-            this.onLoad()
+            this.getUserPage(this.userPage)
 
             this.$message({
               type: "success",
@@ -338,20 +477,7 @@
           })
       },
 
-      openUser(row, type = 0) {
-        this.popupTableUserShow = true
 
-        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 => {
@@ -362,19 +488,17 @@
             if (item.avatar.length > 0) {
               item.avatar = website.minioUrl + item.avatar
             }
+            if (item.signaturePath && item.signaturePath.length > 0) {
+              item.signaturePath = website.minioUrl + item.signaturePath
+              // console.log("=====>", item.signaturePath)
+            }
           })
         })
       },
 
-      onLoad() {
+      onLoad(page, params = {}) {
         this.loading = true
-
-        let params = {
-          level: 1,
-          articleId: this.articleId
-        }
-
-        getLists(1, 100, Object.assign(params, this.query)).then(res => {
+        getLists(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
           const data = res.data.data
           this.data = data
           this.loading = false

--
Gitblit v1.9.3