linwe
2023-12-21 ad0a536bd7534a8eaf477d41294de21c7d7b25df
src/views/article/discussionManage.vue
@@ -11,19 +11,61 @@
      </template>
      <template slot-scope="scope" slot="menu">
        <el-button type="text" icon="el-icon-circle-plus-outline" size="small"
          @click.stop="openDilog(scope.row,scope.index)">编辑议题
        <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="50%" :before-close="handleClose">
    <el-dialog title="" append-to-body :visible.sync="dialogVisibles" width="60%" :before-close="handleClose">
      <span slot="title" class="dialog-footer">
        {{ontitle}}
      </span>
      <avue-form @submit="handleSubmit" :option="optionDiscuss" v-model="disCussFrom">
      </avue-form>
      <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>
@@ -37,12 +79,17 @@
  } 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 {
@@ -55,7 +102,79 @@
  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',
@@ -63,16 +182,16 @@
              row: true,
            }, {
              label: '选项范围',
              prop: 'option',
              prop: 'optionRange',
              type: 'radio',
              button: true,
              row: true,
              dicData: [{
                label: '多选',
                value: 0
                value: 1
              }, {
                label: '单选',
                value: 1
                value: 0
              }]
            }, {
              label: '排序',
@@ -103,11 +222,63 @@
              }
            },
          ]
        },
        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: '',
          option: 0,
          optionRange: 0,
          sort: 1,
          optionContent: '',
          optionDetail: '',
@@ -152,15 +323,53 @@
          total: 0
        },
        // 表单数据
        form: {},
        form: [],
        // 选择行
        selectionList: [],
        // 表单配置
        option: option,
        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() {
@@ -179,13 +388,112 @@
    },
    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;
        let params = {}
        getList(1, 100, Object.assign(params, this.query)).then(res => {
        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.dataTop = data.records;
          this.form = data;
          this.loading = false;
          this.selectionClear();
        })
@@ -193,14 +501,22 @@
      handleSubmit(form, done) {
        done();
        form.publicDiscussId = this.publicDiscussId
        add(form).then(
          () => {
            this.$message({
              type: "success",
              message: "操作成功!",
            });
            this.dialogVisibles = false
            done();
            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);
@@ -321,4 +637,4 @@
  .el-pagination {
    margin-top: 20px;
  }
</style>
</style>