From ad0a536bd7534a8eaf477d41294de21c7d7b25df Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Thu, 21 Dec 2023 11:50:54 +0800
Subject: [PATCH] 维修基金审核

---
 src/views/article/discussionManage.vue |  639 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 634 insertions(+), 5 deletions(-)

diff --git a/src/views/article/discussionManage.vue b/src/views/article/discussionManage.vue
index 22bd8c4..113ba42 100644
--- a/src/views/article/discussionManage.vue
+++ b/src/views/article/discussionManage.vue
@@ -1,11 +1,640 @@
 <template>
-  <div id="">
-    议事
-  </div>
+  <basicContainer>
+    <avue-crud :data="data" ref="crud" :table-loading="loading" @current-change="currentChange"
+      @search-change="searchChange" @search-reset="searchReset" @size-change="sizeChange" :option="option"
+      v-model="data" :page="page" @selection-change="selectionChange" @row-del="rowDel" @refresh-change="refreshChange"
+      @on-load="onLoad">
+      <template slot="menuLeft">
+        <el-button type="danger" size="small" plain icon="el-icon-delete" v-if="permission.user_delete"
+          @click="handleDelete">批量删除
+        </el-button>
+      </template>
+
+      <template slot-scope="scope" slot="menu">
+        <el-button type="text" icon="el-icon-edit" size="small" @click.stop="openEdit(scope.row,scope.index)">编辑
+        </el-button>
+        <el-button type="primary" icon="el-icon-edit" size="small" @click.stop="openDilog(scope.row,scope.index)">编辑议题
+        </el-button>
+        <el-button type="primary" icon="el-icon-edit" size="small" @click.stop="openUser(scope.row,0)">参与用户
+        </el-button>
+      </template>
+    </avue-crud>
+
+    <el-dialog title="" append-to-body :visible.sync="dialogVisibles" width="60%" :before-close="handleClose">
+      <span slot="title" class="dialog-footer">
+        {{ontitle}}
+      </span>
+
+      <div id="" v-if="editFlag">
+        <avue-form @submit="handleSubmit" :option="optionDiscuss" @reset-change="handleReset" v-model="disCussFrom">
+        </avue-form>
+      </div>
+
+      <div id="">
+        <avue-crud :option="optionList" :data="form" ref="crud" @row-save="rowSave" @row-update="rowUpdate"
+          @row-del="rowDel">
+          <template slot="menuLeft" v-if="!editFlag">
+            <el-button type="primary" size="small" plain icon="el-icon-circle-plus-outline" @click="add()">添加
+            </el-button>
+          </template>
+          <template #icon="scope">
+            <i :class="scope.row.icon" style="font-size:14px"></i>
+          </template>
+          <template #menu="{row,size}">
+            <el-button v-if="row.level === 1" :size="size" text type="primary" @click="edit(row)">编辑</el-button>
+            <el-button v-if="row.level === 1" :size="size" text type="danger" @click="deletes(row)">删除</el-button>
+            <el-button v-if="row.level === 2" :size="size" text type="primary" @click="openUser(row,1)">选择此项人数
+              :{{row.number}} 详情</el-button>
+          </template>
+        </avue-crud>
+      </div>
+    </el-dialog>
+
+    <el-dialog title="" append-to-body :visible.sync="dialogVisiblesEdit" width="50%" :before-close="editHandleClose">
+      <span slot="title" class="dialog-footer">
+        编辑议题
+      </span>
+      <div id="">
+        <avue-form @submit="handleSubmitEdit" :option="optionDiscussEdit" v-model="discussForm"></avue-form>
+      </div>
+    </el-dialog>
+
+    <el-dialog title="" append-to-body :visible.sync="dialogVisiblesUser" width="50%" :before-close="userHandleClose">
+      <!-- <span slot="title" class="dialog-footer">
+        {{discussForm.ontitle}}
+      </span> -->
+      <avue-crud :data="userData" :page="pageUser" :option="option1" @on-load="getUser"></avue-crud>
+    </el-dialog>
+
+  </basicContainer>
 </template>
 
 <script>
+  import {
+    getListPd,
+    getDetailPd,
+    addPd,
+    updatePd,
+    removePd
+  } from "@/api/discuss/publicDiscuss";
+
+  import {
+    getLists,
+    getList,
+    getDetail,
+    add,
+    update,
+    remove
+  } from "@/api/discuss/topics";
+
+  import {
+    getPage
+  } from "@/api/discuss/userTopics";
+
+  import option from "@/option/discuss/publicDiscuss";
+  import {
+    mapGetters
+  } from "vuex";
+  import {
+    getDictionary
+  } from '@/api/system/dict'
+
+  export default {
+    data() {
+      return {
+        option1: {
+          addBtn: false,
+          menu: false,
+          column: [{
+            label: '姓名',
+            prop: 'name'
+          }, {
+            label: '头像',
+            prop: 'avatar'
+          }, {
+            label: '手机',
+            prop: 'phone'
+          }, {
+            label: '小区',
+            prop: 'aoiName'
+          }, {
+            label: '地址',
+            prop: 'addressName'
+          }, {
+            label: '时间',
+            prop: 'createTime'
+          }]
+        },
+        userParams: {},
+        // 分页信息
+        pageUser: {
+          pageSize: 10,
+          pageSizes: [10, 20, 30, 50, 100],
+          currentPage: 1,
+          total: 0
+        },
+        discussForm: {
+          title: '',
+          openFlag: 0,
+          numberRestrictions: 0,
+          voteRestrictions: 0,
+          userRestrictions: 0,
+          endTime: '',
+          articleId: '',
+          createTime: '',
+          updateTime: '',
+          deleteFlag: '',
+          repeatVote: 0,
+          voteNumberPublic: 0,
+          appointUser: '',
+          userIds: '',
+          eventType: 1,
+        },
+        dialogVisiblesEdit: false,
+        dialogVisiblesUser: false,
+        editFlag: false,
+        optionList: {
+          headerAlign: 'center',
+          align: 'center',
+          border: true,
+          addBtn: false,
+          editBtn: false,
+          delBtn: false,
+          defaultExpandAll: true,
+          rowKey: 'id',
+          rowParentKey: 'parentId',
+          column: [{
+              label: '标题',
+              prop: 'discussContent',
+            },
+            {
+              label: '选项内容',
+              prop: 'optionContent',
+            }
+          ]
+        },
+        optionDiscuss: {
+          emptyText: '取消',
+          column: [{
+              label: '议题',
+              prop: 'discussContent',
+              type: 'input',
+              row: true,
+            }, {
+              label: '选项范围',
+              prop: 'optionRange',
+              type: 'radio',
+              button: true,
+              row: true,
+              dicData: [{
+                label: '多选',
+                value: 1
+              }, {
+                label: '单选',
+                value: 0
+              }]
+            }, {
+              label: '排序',
+              prop: 'sort',
+              controlsPosition: '',
+              type: 'number'
+            },
+            {
+              label: '选项内容',
+              prop: 'children',
+              type: 'dynamic',
+              span: 24,
+              children: {
+                column: [{
+                  label: '选项标题',
+                  prop: 'optionContent',
+                  type: 'input',
+                  rules: [{
+                    required: true,
+                    message: '请输入选项标题',
+                    trigger: 'blur'
+                  }]
+                }, {
+                  label: '选项说明',
+                  prop: 'optionDetail',
+                  type: 'input',
+                }]
+              }
+            },
+          ]
+        },
+        optionDiscussEdit: {
+          column: [{
+              label: "",
+              type: 'title',
+              prop: "title",
+              span: 24,
+              row: true,
+              offset: 2,
+              styles: {
+                fontSize: '24px'
+              }
+            }, {
+              labelWidth: 100,
+              label: '开启投票',
+              prop: 'openFlag',
+              type: 'radio',
+              button: true,
+              row: true,
+              offset: 6,
+              dicData: [{
+                label: '开启',
+                value: 0
+              }, {
+                label: '不开启',
+                value: 1
+              }]
+            }, {
+              labelWidth: 100,
+              label: '开启签名',
+              prop: 'signatureFlag',
+              type: 'radio',
+              button: true,
+              row: true,
+              offset: 6,
+              dicData: [{
+                label: '开启',
+                value: 0
+              }, {
+                label: '不开启',
+                value: 1
+              }]
+            },
+            {
+              label: "截止时间",
+              row: true,
+              offset: 6,
+              prop: "endTime",
+              type: "datetime",
+              format: "yyyy-MM-dd hh:mm:ss",
+              valueFormat: "timestamp",
+            },
+          ]
+        },
+        disCussFrom: {
+          discussContent: '',
+          optionRange: 0,
+          sort: 1,
+          optionContent: '',
+          optionDetail: '',
+          number: '',
+          createTime: '',
+          updateTime: '',
+          deleteFlag: '',
+          publicDiscussId: '',
+          parentId: '',
+          level: '',
+          children: [{
+            optionContent: '',
+            optionDetail: '',
+            number: '',
+            createTime: '',
+            updateTime: '',
+            deleteFlag: '',
+            publicDiscussId: '',
+            parentId: '',
+            level: '',
+          }]
+
+        },
+        ontitle: '编辑议题',
+        // 弹框标题
+        title: '',
+        // 是否展示弹框
+        box: false,
+        // 是否显示查询
+        search: true,
+        // 加载中
+        loading: true,
+        // 是否为查看模式
+        view: false,
+        // 查询信息
+        query: {},
+        // 分页信息
+        page: {
+          pageSize: 10,
+          pageSizes: [10, 20, 30, 50, 100],
+          currentPage: 1,
+          total: 0
+        },
+        // 表单数据
+        form: [],
+        // 选择行
+        selectionList: [],
+        // 表单配置
+        option: {
+          selection: true,
+          height: "auto",
+          calcHeight: 54,
+          align: 'center',
+          menuAlign: 'center',
+          addBtn: false,
+          editBtn: false,
+          searchMenuSpan: 3,
+          searchBtn: true,
+          menuWidth: 500,
+          column: [{
+              label: 'ID',
+              prop: 'id',
+              searchSpan: 4,
+              // search: true,
+            },
+            {
+              label: '标题',
+              prop: 'title',
+              searchSpan: 4,
+              search: true,
+            },
+            {
+              label: '参与人数',
+              prop: 'topsCount',
+              searchSpan: 4,
+              search: true,
+            },
+            {
+              label: '截止时间',
+              prop: 'endTime',
+              searchSpan: 4,
+              search: true,
+            }
+          ]
+        },
+        // 表单列表
+        data: [],
+        userData: [],
+        dataTop: [],
+        dialogVisibles: false,
+        publicDiscussId: '',
+      }
+    },
+    mounted() {
+      // this.init();
+      // this.onLoad(this.page);
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      ids() {
+        let ids = [];
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id);
+        });
+        return ids.join(",");
+      }
+    },
+    methods: {
+
+      openUser(row, type) {
+        console.table(row)
+        this.dialogVisiblesUser = true
+        if (type == 0) {
+          this.userParams = {
+            publicDiscussId: row.id
+          }
+        } else {
+          this.userParams = {
+            topicsId: row.id
+          }
+        }
+        this.getUserPage(this.pageUser, this.userParams)
+      },
+
+      getUserPage(page, params = {}) {
+        getPage(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+          const data = res.data.data;
+          this.pageUser.total = data.total;
+          this.userData = data.records;
+        });
+      },
+
+      openEdit(row) {
+        this.discussForm = row
+        let times = new Date(row.endTime).getTime();
+        this.discussForm.endTime = times
+        this.dialogVisiblesEdit = true
+      },
+      // 提交修改
+      handleSubmitEdit(form, done) {
+        done()
+        if (!this.discussForm.id) {
+          addPd(this.discussForm).then(() => {
+            this.dialogVisiblesEdit = false
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+        } else {
+          updatePd(this.discussForm).then(() => {
+            this.dialogVisiblesEdit = false
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          })
+        }
+      },
+
+      deletes(row) {
+        this.$confirm("确定将选择数据删除?", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          })
+          .then(() => {
+            return remove(row.id);
+          })
+          .then(() => {
+            // this.onLoad(this.page);
+            this.dialogVisibles = false
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+      },
+
+      handleClose() {
+        this.editFlag = false
+        this.dialogVisibles = false
+        this.disCussFrom = {}
+      },
+
+      edithandleClose() {
+        this.dialogVisiblesEdit = false
+      },
+
+      edit(row) {
+        this.disCussFrom = row
+        this.editFlag = true
+      },
+
+      add() {
+        this.editFlag = true
+      },
+
+      handleReset() {
+        this.editFlag = false
+      },
+
+      openDilog(row, type) {
+        this.dialogVisibles = true
+        this.loading = true;
+        this.publicDiscussId = row.id
+        let params = {
+          level: 1,
+          publicDiscussId: row.id
+        }
+        getLists(1, 100, Object.assign(params, this.query)).then(res => {
+          const data = res.data.data;
+          this.form = data;
+          this.loading = false;
+          this.selectionClear();
+        })
+      },
+
+      handleSubmit(form, done) {
+        done();
+        form.publicDiscussId = this.publicDiscussId
+        add(form).then(
+          () => {
+            this.$message({
+              type: "success",
+              message: "操作成功!",
+            });
+            this.editFlag = false
+            let params = {
+              level: 1,
+              publicDiscussId: this.publicDiscussId
+            }
+            getLists(1, 100, Object.assign(params, this.query)).then(res => {
+              const data = res.data.data;
+              this.form = data;
+            })
+          },
+          (error) => {
+            window.console.log(error);
+            // loading();
+          }
+        );
+      },
+
+      init() {},
+      searchHide() {
+        this.search = !this.search;
+      },
+      searchChange() {
+        this.onLoad(this.page);
+      },
+      searchReset() {
+        this.query = {};
+        this.page.currentPage = 1;
+        this.onLoad(this.page);
+      },
+
+      handleAdd() {
+        this.title = '新增'
+        this.form = {}
+        this.box = true
+      },
+      handleEdit(row) {
+        this.title = '编辑'
+        this.box = true
+        getDetailPd(row.id).then(res => {
+          this.form = res.data.data;
+        });
+      },
+      handleView(row) {
+        this.title = '查看'
+        this.view = true;
+        this.box = true;
+        getDetailPd(row.id).then(res => {
+          this.form = res.data.data;
+        });
+      },
+      handleDelete() {
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据");
+          return;
+        }
+        this.$confirm("确定将选择数据删除?", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          })
+          .then(() => {
+            return removePd(this.ids);
+          })
+          .then(() => {
+            this.selectionClear();
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+      },
+      rowDel(row) {
+        this.$confirm("确定将选择数据删除?", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          })
+          .then(() => {
+            return remove(row.id);
+          })
+          .then(() => {
+            this.onLoad(this.page);
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            });
+          });
+      },
+      beforeClose(done) {
+        done()
+        this.form = {};
+        this.view = false;
+      },
+      selectionChange(list) {
+        this.selectionList = list;
+      },
+      selectionClear() {
+        this.selectionList = [];
+        // this.$refs.table.clearSelection();
+      },
+      currentChange(currentPage) {
+        this.page.currentPage = currentPage;
+        this.onLoad(this.page);
+      },
+      sizeChange(pageSize) {
+        this.page.pageSize = pageSize;
+        this.onLoad(this.page);
+      },
+      onLoad(page, params = {
+        eventType: 1
+      }) {
+        this.loading = true;
+        getListPd(page.currentPage, page.pageSize, Object.assign(params, this.query)).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+          this.selectionClear();
+        });
+      }
+    }
+  };
 </script>
 
-<style>
-</style>
+<style lang="scss" scoped>
+  .el-pagination {
+    margin-top: 20px;
+  }
+</style>
\ No newline at end of file

--
Gitblit v1.9.3