lin
2024-03-01 cf59b5b39c0cd818484d6f686ddc293d98cfb4ee
议事管理优化
3 files modified
250 ■■■■■ changed files
src/views/article/components/deitDiscussion.vue 144 ●●●●● patch | view | raw | blame | history
src/views/article/components/discussionManageChild.vue 93 ●●●● patch | view | raw | blame | history
src/views/article/discussionManage.vue 13 ●●●●● patch | view | raw | blame | history
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">
@@ -41,8 +31,17 @@
    </el-dialog>
    <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>
          @search-reset="searchReset">
        </avue-crud>
      </basic-container>
    </el-dialog>
  </div>
</template>
@@ -59,7 +58,18 @@
  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'
@@ -141,12 +151,6 @@
                trigger: 'blur'
              }],
            },
            // {
            //   label: '排序',
            //   prop: 'sort',
            //   controlsPosition: '',
            //   type: 'number'
            // },
            {
              label: '选项内容',
              prop: 'children',
@@ -206,7 +210,6 @@
          searchMenuSpan: 3,
          // menuWidth: 500,
          menu: false,
          height: "auto",
          calcHeight: 54,
          dialogWidth: 950,
@@ -249,6 +252,9 @@
            listType: "picture-img",
            prop: 'signaturePath'
          }, {
            label: '投票项',
            prop: 'optionContent'
          }, {
            label: '时间',
            prop: 'createTime'
          }]
@@ -261,8 +267,10 @@
          total: 0
        },
        query: {},
        type: '',
        newData: {},
        articleRange: {},
        tops: {},
      }
    },
@@ -270,30 +278,87 @@
    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() {
        if (this.articleRange) {
          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) {
        if (this.articleRange) {
          this.query.districtId = this.newData.articleRange
        }
        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
@@ -304,13 +369,6 @@
        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
@@ -329,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
@@ -421,27 +477,7 @@
          })
      },
      openUser(row, type = 0) {
        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.userParams = {
            topicsId: row.id,
            districtId: districtId
          }
        }
        this.getUserPage(this.userPage, this.userParams)
      },
      getUserPage(page, params = {}) {
        getPage(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
src/views/article/components/discussionManageChild.vue
@@ -1,7 +1,8 @@
<template>
  <div>
    <el-dialog title="" append-to-body :visible.sync="dialogVisibles" width="50%" :before-close="handleClose">
      <avue-form ref="DisCussFrom" :option="option" v-model="disCussFrom" @submit="handleSubmit"></avue-form>
    <el-dialog title="" append-to-body :visible.sync="dialogVisibles" width="50%" :before-close="handleClose"
      @close="handleClose" @open="opens">
      <avue-form ref="DisCussFrom" :option="option" v-model="froms" @submit="handleSubmit"></avue-form>
    </el-dialog>
  </div>
</template>
@@ -18,10 +19,6 @@
    updatePd,
    removePd
  } from "@/api/discuss/publicDiscuss"
  import {
    getPage
  } from "@/api/discuss/userTopics"
  import option from "@/option/discuss/publicDiscuss"
  import {
@@ -40,23 +37,12 @@
    getUserlnfoByDistrictlds
  } from "@/api/system/user"
  let formData = {}
  export default {
    data() {
      return {
        dialogVisibles: false,
        userParams: {},
        // 分页信息
        pageUser: {
          pageSize: 10,
          pageSizes: [10, 20, 30, 50, 100],
          currentPage: 1,
          total: 0
        },
        discussForm: {},
        dialogVisiblesEdit: false,
        dialogVisiblesUser: false,
        editFlag: false,
        ontitle: '编辑议题',
        // 弹框标题
        title: '',
        // 是否展示弹框
@@ -69,13 +55,6 @@
        view: false,
        // 查询信息
        query: {},
        // 分页信息
        page: {
          pageSize: 10,
          pageSizes: [10, 20, 30, 50, 100],
          currentPage: 1,
          total: 0
        },
        // 选择行
        selectionList: [],
@@ -219,10 +198,11 @@
          ]
        },
        // 表单列表
        disCussFrom: {},
        froms: {},
        dialogVisibles: false,
        articleId: '',
        discussion: {},
        id: ""
      }
    },
    created() {
@@ -234,7 +214,7 @@
    },
    watch: {
      'disCussFrom.appointUser': {
      'froms.appointUser': {
        handler(newData) {
          const column = this.findObject(this.option.column, "userIds")
          if (newData == 1) {
@@ -268,21 +248,27 @@
        column.dicUrl = dicUrl
      },
      handleSubmit(row, done) {
        row.articleId = this.articleId
        row.eventType = 1
        row.userIds = JSON.stringify(row.userIds)
        if (row.appointUser == 0) {
          row.userIds = ''
      handleSubmit(form, done) {
        console.log("**********" + JSON.stringify(form))
        form.articleId = this.articleId
        form.eventType = 1
        form.userIds = JSON.stringify(form.userIds)
        if (form.appointUser == 0) {
          form.userIds = ''
        }
        addPd(row).then(
        console.log("===>", JSON.stringify(this.froms))
        form.id = this.id;
        console.log("formData====>", JSON.stringify(formData))
        addPd(form).then(
          () => {
            this.onLoad(this.discussion)
            // this.onLoad(this.discussion)
            this.$message({
              type: "success",
              message: "操作成功!",
            })
            done()
            this.$refs.DisCussFrom && this.$refs.DisCussFrom.resetForm()
            this.froms = {}
            this.dialogVisibles = false
          },
          (error) => {
@@ -291,20 +277,30 @@
        )
      },
      init(data) {
        console.log("====>", data);
        // console.log("====>", data);
        this.$refs.DisCussFrom && this.$refs.DisCussFrom.resetForm()
        this.dialogVisibles = true
        this.disCussFrom = {}
        // this.disCussFrom = data;
        this.froms = {}
        this.discussion = data
        this.articleId = data.id
        this.onLoad(data)
      },
      handleClose() {
        console.log("**********************************************************************************")
        this.dialogVisibles = false
        this.$refs.DisCussFrom && this.$refs.DisCussFrom.resetForm()
        this.froms = {};
        console.log("^^^^^", this.froms)
        console.log(this.$refs, 90999)
      },
      opens() {
        console.log("***************************************opens*******************************************")
        // this.dialogVisibles = false
        this.$refs.DisCussFrom && this.$refs.DisCussFrom.resetForm()
        this.froms = {};
        console.log("^^^^^", this.froms)
        console.log(this.$refs, 90999)
      },
@@ -315,14 +311,25 @@
        this.loading = true
        getListPd(1, 10, Object.assign(params, this.query)).then(res => {
          const data = res.data.data
          this.page.total = data.total
          this.disCussFrom = data.records[0]
          if (this.disCussFrom && this.disCussFrom.userIds) {
            this.disCussFrom.userIds = JSON.parse(this.disCussFrom.userIds)
          this.$refs.DisCussFrom && this.$refs.DisCussFrom.resetForm()
          if (data.records.length <= 0) {
            console.log("----------------------------------")
            this.froms = {}
          } else {
            console.log(">>>>>", data.records[0])
            this.froms = data.records[0]
            this.id = data.records[0].id;
            formData = data.records[0];
            if (this.froms && this.froms.userIds) {
              this.froms.userIds = JSON.parse(this.froms.userIds)
            }
          }
          this.getuserInfoByDistrictId()
        })
      }
      },
    }
  }
</script>
src/views/article/discussionManage.vue
@@ -1,10 +1,9 @@
<template>
    <basic-container>
        <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" ref="crud" @row-del="rowDel"
            v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave"
            :before-open="beforeOpen" @search-change="searchChange" @search-reset="searchReset"
            @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
            @refresh-change="refreshChange" @on-load="onLoad">
      v-model="form" :permission="permissionList" @row-update="rowUpdate" @row-save="rowSave" :before-open="beforeOpen"
      @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
      @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
            <template slot="menuLeft">
                <el-button size="small" icon="el-icon-delete" plain v-if="permission.article_delete" @click="handleDelete">删
                    除
@@ -24,13 +23,11 @@
                    参与用户
                </el-button>
                <el-button v-if="row.publish == '1'" icon="el-icon-close" :size="size" :type="type"
                    @click.stop="updateFb(row)">
        <el-button v-if="row.publish == '1'" icon="el-icon-close" :size="size" :type="type" @click.stop="updateFb(row)">
                    撤销
                </el-button>
                <el-button v-if="row.publish == '0'" icon="el-icon-check" :size="size" :type="type"
                    @click.stop="updateFb(row)">
        <el-button v-if="row.publish == '0'" icon="el-icon-check" :size="size" :type="type" @click.stop="updateFb(row)">
                    发布
                </el-button>
            </template>