From af37ee88ef6d9647fa2b368271dcf53f656ea4fa Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Mon, 18 Dec 2023 11:18:29 +0800
Subject: [PATCH] 按钮隐藏

---
 src/views/article/article.vue |  475 +++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 350 insertions(+), 125 deletions(-)

diff --git a/src/views/article/article.vue b/src/views/article/article.vue
index 679dade..abbdc13 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,94 @@
       </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 == 1">
+        <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>
+
+
+
+
   </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 website from '@/config/website';
+
+
+  import {
+    getDistrictTree
+  } from "@/api/district/index";
+
+  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 +134,7 @@
           tip: false,
           searchShow: true,
           searchMenuSpan: 3,
-          menuWidth: 350,
+          menuWidth: 450,
           border: false,
           //stripe:true,
           index: true,
@@ -111,21 +142,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 +176,25 @@
               search: true,
               searchSpan: 4,
               span: 24,
-              rules: [
-                {
-                  required: true,
-                  message: "请输入资讯类型",
-                  trigger: "blur",
-                },
-              ],
+              rules: [{
+                required: true,
+                message: "请输入资讯类型",
+                trigger: "blur",
+              }, ],
+            }, {
+              label: "资讯范围",
+              prop: "articleList",
+              span: 12,
+              minRows: 2,
+              type: "cascader",
+              multiple: true,
+              tags: true,
+              dicData: [],
+              props: {
+                label: "name",
+                value: 'id'
+              },
+              hide: true,
             },
             {
               label: "资讯类型",
@@ -171,13 +211,11 @@
               },
               search: true,
               type: "tree",
-              rules: [
-                {
-                  required: true,
-                  message: "请选择资讯类型",
-                  trigger: "blur",
-                },
-              ],
+              rules: [{
+                required: true,
+                message: "请选择资讯类型",
+                trigger: "blur",
+              }, ],
             },
             {
               label: "发布时间",
@@ -192,13 +230,11 @@
               editDisplay: false,
               viewDisplay: false,
               search: true,
-              rules: [
-                {
-                  required: true,
-                  message: "请选择发布时间",
-                  trigger: "blur",
-                },
-              ],
+              rules: [{
+                required: true,
+                message: "请选择发布时间",
+                trigger: "blur",
+              }, ],
             },
             {
               label: "发布时间",
@@ -216,15 +252,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 +273,7 @@
               width: 80,
               slot: true,
               type: "select",
-              dicData: [
-                {
+              dicData: [{
                   label: "关闭",
                   value: "0",
                 },
@@ -286,6 +318,99 @@
           ],
         },
         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
+              }]
+            },
+
+            {
+              label: "截止时间",
+              row: true,
+              offset: 6,
+              prop: "endTime",
+              type: "datetime",
+              format: "yyyy-MM-dd hh:mm:ss",
+              valueFormat: "timestamp",
+            },
+          ]
+        },
+        optionDiscuss: {
+          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",
+            },
+          ]
+        },
+        districtTree: [],
       };
     },
     watch: {
@@ -297,13 +422,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 +438,7 @@
       }
     },
     computed: {
-      ...mapGetters(["permission","userInfo"]),
+      ...mapGetters(["permission", "userInfo"]),
       permissionList() {
         return {
           addBtn: this.vaildData(this.permission.article_add, true),
@@ -333,11 +456,60 @@
       },
     },
     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;
+        row.articleRange = JSON.stringify(row.articleList)
+        if (row.url.length > 0) {
+          var urls = []
+          var split = row.url.split(",");
+          split.forEach(url => {
+            var names = url.split("jczz/");
+            urls.push(names[1])
+          })
+          row.url = urls.join(",")
+        }
         add(row).then(
           () => {
             this.onLoad(this.page);
@@ -354,6 +526,17 @@
         );
       },
       rowUpdate(row, index, done, loading) {
+        row.articleRange = JSON.stringify(row.articleList)
+        if (row.url.length > 0) {
+          var urls = []
+          var split = row.url.split(",");
+          split.forEach(url => {
+            var names = url.split("jczz/");
+            urls.push(names[1])
+          })
+          row.url = urls.join(",")
+        }
+
         update(row).then(
           () => {
             this.onLoad(this.page);
@@ -371,10 +554,10 @@
       },
       rowDel(row) {
         this.$confirm("确定将选择数据删除?", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning",
+          })
           .then(() => {
             return remove(row.id);
           })
@@ -409,10 +592,10 @@
           return;
         }
         this.$confirm("确定将选择数据删除?", {
-          confirmButtonText: "确定",
-          cancelButtonText: "取消",
-          type: "warning",
-        })
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning",
+          })
           .then(() => {
             return remove(this.ids);
           })
@@ -428,7 +611,18 @@
       beforeOpen(done, type) {
         if (["edit", "view"].includes(type)) {
           getNotice(this.form.id).then((res) => {
-            this.form = res.data.data;
+            let data = res.data.data
+            // data.forEach(item=>{
+            if (data.url.length > 0) {
+              var urls = []
+              var names = data.url.split(",");
+              names.forEach(name => {
+                urls.push(website.minioUrl + name)
+              })
+              data.url = urls.join(",")
+            }
+            // })
+            this.form = data;
           });
         }
         // con
@@ -444,7 +638,9 @@
         this.onLoad(this.page, this.query);
       },
       onLoad(page, params = {}) {
-        const {dateTime} = this.query;
+        const {
+          dateTime
+        } = this.query;
         let values = {
           ...params,
         };
@@ -457,13 +653,31 @@
           };
           values.dateTime = null;
         }
+        values.type = 0
         this.loading = true;
         getList(page.currentPage, page.pageSize, values).then((res) => {
           const data = res.data.data;
           this.page.total = data.total;
           this.data = data.records;
+          this.data.forEach(item => {
+            if (item.url.length > 0) {
+              var urls = []
+              var names = item.url.split(",");
+              names.forEach(name => {
+                urls.push(website.minioUrl + name)
+              })
+              item.url = urls.join(",")
+            }
+          })
           this.loading = false;
           this.selectionClear();
+        });
+        getDistrictTree(params = {}).then((res) => {
+          const data = res.data.data;
+          this.districtTree = data;
+          const column = this.findObject(this.option.column, "articleList");
+          column.dicData = res.data.data;
+          this.loading = false;
         });
       },
       updateFb(row) {
@@ -472,6 +686,17 @@
         } else {
           row.publish = "0";
         }
+
+        if (row.url.length > 0) {
+          var urls = []
+          var split = row.url.split(",");
+          split.forEach(url => {
+            var names = url.split("jczz/");
+            urls.push(names[1])
+          })
+          row.url = urls.join(",")
+        }
+
         update(row).then(
           () => {
             this.onLoad(this.page);
@@ -493,12 +718,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 +739,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({
@@ -537,4 +762,4 @@
   .avue-upload__icon {
     line-height: 6;
   }
-</style>
+</style>
\ No newline at end of file

--
Gitblit v1.9.3