From 16567c73dda0cefb9b1176bf29dff2f23871413e Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Thu, 23 Nov 2023 17:54:35 +0800
Subject: [PATCH] 议题议事+公益报名

---
 src/views/article/article.vue |  527 ++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 404 insertions(+), 123 deletions(-)

diff --git a/src/views/article/article.vue b/src/views/article/article.vue
index 679dade..247ac47 100644
--- a/src/views/article/article.vue
+++ b/src/views/article/article.vue
@@ -1,56 +1,25 @@
 <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"
-    >
+    <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">
       <template slot="menuLeft">
-        <el-button
-
-          size="small"
-          icon="el-icon-delete"
-          plain
-          v-if="permission.article_delete"
-          @click="handleDelete"
-        >删 除
+        <el-button size="small" icon="el-icon-delete" plain v-if="permission.article_delete" @click="handleDelete">删 除
         </el-button>
-        <el-button
-
-          size="small"
-          icon="el-icon-s-order"
-          plain
-          @click="kqcomment"
-        >开启评论
+        <el-button size="small" icon="el-icon-s-order" plain @click="kqcomment">开启评论
         </el-button>
-        <el-button
-
-          size="small"
-          icon="el-icon-s-release"
-          plain
-          @click="gbcomment"
-        >关闭评论
+        <el-button size="small" icon="el-icon-s-release" plain @click="gbcomment">关闭评论
         </el-button>
-
-
       </template>
 
       <template slot-scope="{type,size,row }" slot="menu">
+        <el-button icon="el-icon-circle-plus-outline" :size="size" :type="type" @click.stop="openDilog(row,0)">
+          公益报名
+        </el-button>
+        <el-button icon="el-icon-circle-plus-outline" :size="size" :type="type" @click.stop="openDilog(row,1)">
+          创建议题
+        </el-button>
         <el-button v-if="row.publish == '1'" icon="el-icon-close" :size="size" :type="type" @click.stop="updateFb(row)">
           撤销
         </el-button>
@@ -60,32 +29,96 @@
       </template>
 
       <template slot-scope="{ row }" slot="publish">
-        <el-tag
-        >{{
+        <el-tag>{{
           row.publish == "1" ? "已发布" : row.publish == "0" ? "未发布" : "未发布"
           }}
         </el-tag>
       </template>
 
       <template slot-scope="{ row }" slot="iscomment">
-        <el-tag
-        >{{
+        <el-tag>{{
           row.iscomment == "1" ? "开启" : row.iscomment == "0" ? "关闭" : "关闭"
           }}
         </el-tag>
       </template>
-
     </avue-crud>
+
+
+
+    <el-dialog title="" append-to-body :visible.sync="dialogVisibles" width="50%" :before-close="handleClose">
+      <span slot="title" class="dialog-footer">
+        {{discussForm.ontitle}}
+      </span>
+      <div id="" v-if="discussForm.eventType == 2">
+        <avue-form @submit="handleSubmit" :option="optionDiscuss" v-model="discussForm"></avue-form>
+      </div>
+
+      <div id="" v-else>
+        <avue-form @submit="handleSubmit" :option="optionEnroll" v-model="discussForm">
+        </avue-form>
+      </div>
+
+    </el-dialog>
+
+    <!-- <el-dialog title="用户数据导入" append-to-body :visible.sync="dialogVisibles" width="555px">
+      <avue-form :option="excelOption" v-model="excelForm" :upload-after="uploadAfter">
+        <template slot="excelTemplate">
+          <el-button type="primary" @click="handleTemplate">
+            点击下载<i class="el-icon-download el-icon--right"></i>
+          </el-button>
+        </template>
+      </avue-form>
+    </el-dialog> -->
+
+
+
   </basic-container>
 </template>
 
 <script>
-  import {getList, remove, update, add, getNotice, upcomment} from "@/api/article/article";
-  import {mapGetters} from "vuex";
+  import {
+    getList,
+    remove,
+    update,
+    add,
+    getNotice,
+    upcomment
+  } from "@/api/article/article";
+
+  import {
+    getListPd,
+    removePd,
+    updatePd,
+    addPd,
+    getNoticePd,
+    upcommentPd
+  } from "@/api/discuss/publicDiscuss";
+  import {
+    mapGetters
+  } from "vuex";
 
   export default {
     data() {
       return {
+        discussForm: {
+          ontitle: '',
+          title: '',
+          openFlag: 0,
+          numberRestrictions: 0,
+          voteRestrictions: 0,
+          userRestrictions: 0,
+          endTime: '',
+          articleId: '',
+          createTime: '',
+          updateTime: '',
+          deleteFlag: '',
+          repeatVote: 0,
+          voteNumberPublic: 0,
+          appointUser: '',
+          userIds: '',
+          eventType: 1,
+        },
+        dialogVisibles: false,
         form: {},
         query: {},
         loading: true,
@@ -103,7 +136,7 @@
           tip: false,
           searchShow: true,
           searchMenuSpan: 3,
-          menuWidth: 350,
+          menuWidth: 450,
           border: false,
           //stripe:true,
           index: true,
@@ -111,21 +144,18 @@
           selection: true,
           excelBtn: true,
           dialogClickModal: false,
-          column: [
-            {
+          column: [{
               label: "资讯标题",
               prop: "title",
               span: 24,
               row: true,
               searchSpan: 4,
               search: true,
-              rules: [
-                {
-                  required: true,
-                  message: "请输入资讯标题",
-                  trigger: "blur",
-                },
-              ],
+              rules: [{
+                required: true,
+                message: "请输入资讯标题",
+                trigger: "blur",
+              }, ],
             },
             {
               label: "资讯封面",
@@ -148,13 +178,11 @@
               search: true,
               searchSpan: 4,
               span: 24,
-              rules: [
-                {
-                  required: true,
-                  message: "请输入资讯类型",
-                  trigger: "blur",
-                },
-              ],
+              rules: [{
+                required: true,
+                message: "请输入资讯类型",
+                trigger: "blur",
+              }, ],
             },
             {
               label: "资讯类型",
@@ -171,13 +199,11 @@
               },
               search: true,
               type: "tree",
-              rules: [
-                {
-                  required: true,
-                  message: "请选择资讯类型",
-                  trigger: "blur",
-                },
-              ],
+              rules: [{
+                required: true,
+                message: "请选择资讯类型",
+                trigger: "blur",
+              }, ],
             },
             {
               label: "发布时间",
@@ -192,13 +218,11 @@
               editDisplay: false,
               viewDisplay: false,
               search: true,
-              rules: [
-                {
-                  required: true,
-                  message: "请选择发布时间",
-                  trigger: "blur",
-                },
-              ],
+              rules: [{
+                required: true,
+                message: "请选择发布时间",
+                trigger: "blur",
+              }, ],
             },
             {
               label: "发布时间",
@@ -216,15 +240,12 @@
               slot: true,
               search: true,
               type: "select",
-              rules: [
-                {
-                  required: true,
-                  message: "请选择发布状态",
-                  trigger: "blur",
-                },
-              ],
-              dicData: [
-                {
+              rules: [{
+                required: true,
+                message: "请选择发布状态",
+                trigger: "blur",
+              }, ],
+              dicData: [{
                   label: "未发布",
                   value: "0",
                 },
@@ -240,8 +261,7 @@
               width: 80,
               slot: true,
               type: "select",
-              dicData: [
-                {
+              dicData: [{
                   label: "关闭",
                   value: "0",
                 },
@@ -286,6 +306,228 @@
           ],
         },
         data: [],
+        optionEnroll: {
+          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: 'numberRestrictions',
+              type: 'number',
+              button: true,
+              row: true,
+              min: 0,
+              max: 99999999,
+              controlsPosition: '',
+              step: 10,
+              offset: 6,
+            }, {
+              labelWidth: 100,
+              label: '投票限制',
+              prop: 'voteRestrictions',
+              type: 'radio',
+              button: true,
+              row: true,
+              offset: 6,
+              dicData: [{
+                label: '一人一票',
+                value: 0
+              }, {
+                label: '一户一票',
+                value: 1
+              }]
+            }, {
+              labelWidth: 100,
+              label: '用户限制',
+              prop: 'userRestrictions',
+              type: 'radio',
+              button: true,
+              row: true,
+              offset: 6,
+              dicData: [{
+                label: '不限制',
+                value: 0
+              }, {
+                label: '必须绑定手机',
+                value: 1
+              }, {
+                label: '必须绑定房屋',
+                value: 2
+              }]
+            },
+            {
+              label: "截止时间",
+              row: true,
+              offset: 6,
+              prop: "endTime",
+              type: "datetime",
+              format: "yyyy-MM-dd hh:mm:ss",
+              valueFormat: "timestamp",
+            },
+          ]
+        },
+        optionDiscuss: {
+          column: [{
+              label: "",
+              // labelWidth: 20,
+              type: 'title',
+              prop: "title",
+              span: 24,
+              row: true,
+              offset: 2,
+              styles: {
+                // color: 'red',
+                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: 'repeatVote',
+              type: 'radio',
+              button: true,
+              row: true,
+              offset: 6,
+              dicData: [{
+                label: '不可以',
+                value: 0
+              }, {
+                label: '可以',
+                value: 1
+              }]
+            }, {
+              labelWidth: 100,
+              label: '投票限制',
+              prop: 'voteRestrictions',
+              type: 'radio',
+              button: true,
+              row: true,
+              offset: 6,
+              dicData: [{
+                label: '一人一票',
+                value: 0
+              }, {
+                label: '一户一票',
+                value: 1
+              }]
+            }, {
+              labelWidth: 100,
+              label: '用户限制',
+              prop: 'userRestrictions',
+              type: 'radio',
+              button: true,
+              row: true,
+              offset: 6,
+              dicData: [{
+                label: '不限制',
+                value: 0
+              }, {
+                label: '必须绑定手机',
+                value: 1
+              }, {
+                label: '必须绑定房屋',
+                value: 2
+              }]
+            }, {
+              labelWidth: 100,
+              label: '票数公开',
+              prop: 'voteNumberPublic',
+              type: 'radio',
+              button: true,
+              row: true,
+              offset: 6,
+              dicData: [{
+                label: '全程公开',
+                value: 0
+              }, {
+                label: '投票后公开',
+                value: 1
+              }, {
+                label: '投票结束后公开',
+                value: 2
+              }, {
+                label: '不公开',
+                value: 3
+              }]
+            },
+            {
+              label: "截止时间",
+              row: true,
+              offset: 6,
+              prop: "endTime",
+              type: "datetime",
+              format: "yyyy-MM-dd hh:mm:ss",
+              valueFormat: "timestamp",
+            },
+            // {
+            //   labelWidth: 100,
+            //   label: '人数限制',
+            //   prop: 'numberRestrictions',
+            //   type: 'number',
+            //   button: true,
+            //   row: true,
+            //   min: 0,
+            //   max: 99999999,
+            //   controlsPosition: '',
+            //   step: 10,
+            //   offset: 6,
+            // },
+            // {
+            //   labelWidth: 100,
+            //   label: '指定用户',
+            //   prop: 'appointUser',
+            //   type: 'radio',
+            //   button: true,
+            //   row: true,
+            //   offset: 6,
+            //   dicData: [{
+            //     label: '不限制',
+            //     value: 0
+            //   }, {
+            //     label: '指定用户可见',
+            //     value: 1
+            //   }]
+            // },
+          ]
+        },
       };
     },
     watch: {
@@ -297,13 +539,11 @@
             if (val.indexOf('ksp') != -1) {
               videoUrl.display = true;
               content.display = false;
-              videoUrl.rules = [
-                {
-                  required: false,
-                  message: "请选择视频",
-                  trigger: "blur",
-                },
-              ];
+              videoUrl.rules = [{
+                required: false,
+                message: "请选择视频",
+                trigger: "blur",
+              }, ];
             } else {
               videoUrl.display = false;
               content.display = true;
@@ -315,7 +555,7 @@
       }
     },
     computed: {
-      ...mapGetters(["permission","userInfo"]),
+      ...mapGetters(["permission", "userInfo"]),
       permissionList() {
         return {
           addBtn: this.vaildData(this.permission.article_add, true),
@@ -333,11 +573,50 @@
       },
     },
     methods: {
+
+      openDilog(row, type) {
+        this.dialogVisibles = true
+        this.discussForm.eventType = type
+        this.discussForm.articleId = row.id
+        this.discussForm.title = row.title
+        if (type == 0) {
+          this.discussForm.ontitle = '公益报名'
+        } else {
+          this.discussForm.ontitle = '创建议题'
+        }
+      },
+
+      handleSubmit(form, done) {
+        done();
+        addPd(form).then(
+          () => {
+            this.$message({
+              type: "success",
+              message: "操作成功!",
+            });
+            this.dialogVisibles = false
+            done();
+          },
+          (error) => {
+            window.console.log(error);
+            // loading();
+          }
+        );
+      },
+
+      handleClose(done) {
+        done();
+        // this.$confirm('确认关闭?')
+        //   .then(_ => {
+        //     done();
+        //   })
+        //   .catch(_ => {});
+      },
       rowSave(row, done, loading) {
         if (row.videoUrl.length == 0) {
           row.videoUrl = "";
         }
-        row.userid=this.userInfo.user_id;
+        row.userid = this.userInfo.user_id;
         add(row).then(
           () => {
             this.onLoad(this.page);
@@ -371,10 +650,10 @@
       },
       rowDel(row) {
         this.$confirm("确定将选择数据删除?", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning",
+          })
           .then(() => {
             return remove(row.id);
           })
@@ -409,10 +688,10 @@
           return;
         }
         this.$confirm("确定将选择数据删除?", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning",
+          })
           .then(() => {
             return remove(this.ids);
           })
@@ -444,7 +723,9 @@
         this.onLoad(this.page, this.query);
       },
       onLoad(page, params = {}) {
-        const {dateTime} = this.query;
+        const {
+          dateTime
+        } = this.query;
         let values = {
           ...params,
         };
@@ -493,12 +774,12 @@
           return;
         }
         this.$confirm("确定将选择数据开启评论?", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        }).then(() => {
-          return upcomment(this.ids, "1");
-        })
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning",
+          }).then(() => {
+            return upcomment(this.ids, "1");
+          })
           .then(() => {
             this.onLoad(this.page);
             this.$message({
@@ -514,12 +795,12 @@
           return;
         }
         this.$confirm("确定将选择数据开启评论?", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        }).then(() => {
-          return upcomment(this.ids, "0");
-        })
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning",
+          }).then(() => {
+            return upcomment(this.ids, "0");
+          })
           .then(() => {
             this.onLoad(this.page);
             this.$message({

--
Gitblit v1.9.3