shuishen
2024-04-18 4522ab3fe8bd45ee753ef187448c1e884bbc601f
src/views/article/components/deitDiscussion.vue
@@ -93,7 +93,7 @@
        ontitle: '编辑议题',
        editFlag: false,
        disCussFromListClone: {},
        disCussFrom: {
          discussContent: '',
          optionRange: 0,
@@ -107,17 +107,7 @@
          articleId: '',
          parentId: '',
          level: '',
          children: [{
            optionContent: '',
            optionDetail: '',
            number: '',
            createTime: '',
            updateTime: '',
            deleteFlag: '',
            articleId: '',
            parentId: '',
            level: '',
          }]
          children: []
        },
        optionDiscuss: {
          emptyText: '取消',
@@ -133,6 +123,26 @@
              }],
            },
            {
              label: '议题必填',
              prop: 'mandatoryFlag',
              type: 'radio',
              value: 1,
              button: true,
              row: true,
              dicData: [{
                label: '否',
                value: 1
              }, {
                label: '是',
                value: 2
              }],
              rules: [{
                required: true,
                message: '请选择是否必填',
                trigger: 'blur'
              }],
            },
            {
              label: '选项范围',
              prop: 'optionRange',
              type: 'radio',
@@ -140,11 +150,11 @@
              button: true,
              row: true,
              dicData: [{
                label: '多选',
                value: 1
              }, {
                label: '单选',
                value: 0
              }, {
                label: '多选',
                value: 1
              }],
              rules: [{
                required: true,
@@ -153,11 +163,73 @@
              }],
            },
            {
              label: '最少选',
              prop: 'optionNumberMin',
              display: false,
              row: true,
              min: 1,
              max: 10,
              type: 'number',
              step: 1,
              value: 1,
              rules: [{
                required: true,
                message: '请输入最少可选择数量',
                trigger: 'blur'
              }],
              span: 3,
            },
            {
              label: '最多选',
              prop: 'optionNumber',
              display: false,
              min: 1,
              row: true,
              max: 10,
              type: 'number',
              step: 1,
              value: 1,
              rules: [{
                required: true,
                message: '请输入最多可选择数量',
                trigger: 'blur'
              }],
              span: 3,
            },
            {
              width: 110,
              labelWidth: 100,
              label: "附件",
              prop: "attachment",
              type: "upload",
              listType: "text",
              action: "/api/blade-resource/oss/endpoint/put-pdfFile",
              accept: "application/pdf",
              propsHttp: {
                res: "data",
                name: 'name',
                url: "link",
              },
              span: 24,
            },
            {
              label: '选项内容',
              prop: 'children',
              type: 'dynamic',
              span: 24,
              children: {
                rowAdd: (done) => {
                  // this.$message.success('新增回调' + this.disCussFrom.children.length);
                  this.addC(this.disCussFrom.children.length)
                  done({
                    input: '默认值'
                  });
                },
                rowDel: (row, done) => {
                  // this.$message.success('删除回调' + this.disCussFrom.children.length);
                  this.reduceC(this.disCussFrom.children.length)
                  done();
                },
                column: [{
                  label: '选项标题',
                  prop: 'optionContent',
@@ -178,7 +250,9 @@
        },
        // 表单数据
        form: {},
        form: {
          optionRange: 0,
        },
        data: [],
        optionList: {
          headerAlign: 'center',
@@ -210,7 +284,7 @@
          searchShow: true,
          searchMenuSpan: 3,
          // menuWidth: 500,
          menu: true,
          menu: false,
          height: "auto",
          calcHeight: 54,
          dialogWidth: 950,
@@ -276,9 +350,60 @@
      }
    },
    watch: {},
    watch: {
      'disCussFrom.optionRange': {
        handler(newData) {
          // console.log('** ** ** ** ** ** **', newData)
          const column = this.findObject(this.optionDiscuss.column, "optionNumber")
          const columnMin = this.findObject(this.optionDiscuss.column, "optionNumberMin")
          if (newData == 1) {
            column.display = true
            columnMin.display = true
          } else {
            column.display = false
            columnMin.display = false
          }
        },
      },
    },
    methods: {
      addC(number) {
        console.log("******************", number)
        const column = this.findObject(this.optionDiscuss.column, "optionNumber")
        const columnMin = this.findObject(this.optionDiscuss.column, "optionNumberMin")
        column.max = number + 1
        columnMin.max = number + 1
        if (this.disCussFrom.optionNumber > number + 1) {
          this.disCussFrom.optionNumber = number + 1
        }
        if (this.disCussFrom.optionNumberMin > number + 1) {
          this.disCussFrom.optionNumberMin = number + 1
        }
      },
      editC(number) {
        console.log("******************", number)
        const column = this.findObject(this.optionDiscuss.column, "optionNumber")
        const columnMin = this.findObject(this.optionDiscuss.column, "optionNumberMin")
        column.max = number
        columnMin.max = number
      },
      reduceC(number) {
        const column = this.findObject(this.optionDiscuss.column, "optionNumber")
        const columnMin = this.findObject(this.optionDiscuss.column, "optionNumberMin")
        columnMin.max = number - 1
        column.max = number - 1
        if (this.disCussFrom.optionNumber > number - 1) {
          this.disCussFrom.optionNumber = number - 1
        }
        if (this.disCussFrom.optionNumberMin > number - 1) {
          this.disCussFrom.optionNumberMin = number - 1
        }
      },
      handleExport() {
        this.$confirm("是否导出投票人员数据?", "提示", {
@@ -299,11 +424,13 @@
          }
          data = Qs.stringify(data)
          exportBlob(
            `/api/blade-userTopics/userTopics/exportUser?${this.website.tokenHeader}=${getToken()}&` + data).then(
            res => {
              downloadXls(res.data, `投票人员${dateNow()}.xlsx`)
              NProgress.done()
            })
              `/api/blade-userTopics/userTopics/exportUser?${this.website.tokenHeader}=${getToken()}&` + data)
            .then(
              res => {
                downloadXls(res.data, `投票人员${dateNow()}.xlsx`)
                NProgress.done()
              })
        })
      },
@@ -336,7 +463,7 @@
        done()
      },
      openUser(row, type = 0) {
      openUser(row, type) {
        this.type = type
        this.popupTableUserShow = true
        this.query = {}
@@ -361,6 +488,7 @@
      },
      initData(newData) {
        console.log("======>", newData);
        this.editFlag = false
        this.popupTableShow = true
        this.articleId = newData.id
@@ -379,7 +507,44 @@
      handleSubmit(form, done) {
        done()
        form.articleId = this.articleId
        console.log("form===>", form);
        if (this.editFlag && Array.isArray(form.attachment)) {
          if (form.attachment.length > 0) {
            var urls = []
            // var split = form.attachment.split(",")
            form.attachment.forEach(url => {
              var names = url.split("jczz/")
              urls.push(names[1])
            })
            form.attachment = urls.join(",")
          } else {
            form.attachment = "";
          }
        } else {
          if (form.attachment) {
            var urls = [];
            var splits = form.attachment.split(",");
            splits.forEach(url => {
              var names = url.split("jczz/")
              urls.push(names[1])
            })
            form.attachment = urls.join(",")
          }
        }
        if (this.disCussFromListClone.length > 0) {
          this.disCussFromListClone.forEach(item => {
            if (form.children.length > 0) {
              let same = form.children.find(array => array.id === item.id)
              if (!same) {
                item.deleteFlag = 1
                form.children.push(item)
              }
            }
          })
        }
        add(form).then(
          () => {
            this.$message({
@@ -410,6 +575,17 @@
      // 提交修改
      rowUpdate(row, index, done, loading) {
        done()
        if (row.attachment.length > 0) {
          var urls = []
          var split = row.attachment.split(",")
          split.forEach(url => {
            var names = url.split("jczz/")
            urls.push(names[1])
          })
          row.attachment = urls.join(",")
        }
        if (!row.id) {
          addPd(row).then(() => {
            this.onLoad()
@@ -451,31 +627,32 @@
      },
      add() {
        this.disCussFrom = {}
        this.editFlag = true
      },
      edit(row) {
        this.disCussFrom = row
        this.disCussFromListClone = [].concat(row.children)
        this.editFlag = true
        this.editC(this.disCussFrom.children.length)
      },
      deletes(row) {
        this.$confirm("确定将选择数据删除?", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning"
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        }).then(() => {
          return remove(row.id)
        }).then(() => {
          let param = {}
          this.onLoad(this.userPage, param)
          this.$message({
            type: "success",
            message: "操作成功!"
          })
          .then(() => {
            return remove(row.id)
          })
          .then(() => {
            this.onLoad()
            this.$message({
              type: "success",
              message: "操作成功!"
            })
          })
        })
      },
@@ -486,7 +663,7 @@
          this.userPage.total = data.total
          this.userData = data.records
          this.userData.forEach(item => {
            if (item.avatar.length > 0) {
            if (item.avatar) {
              item.avatar = website.minioUrl + item.avatar
            }
            if (item.signaturePath && item.signaturePath.length > 0) {
@@ -509,4 +686,4 @@
  }
</script>
<style lang="scss" scoped></style>
<style lang="scss" scoped></style>