闫增涛
2024-03-11 f4425543db1c8db8c47a34c53ef477e72cfe318e
pages/bookServices/detail/components/note/note.js
@@ -1,23 +1,317 @@
// pages/bookServices/detail/components/note/note.js
const app = getApp()
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    bookInfo: {
      type: Object,
      value: {}
    }
  },
  /**
   * 组件的初始数据
   */
  data: {
    inputStyle: 'border: 2rpx solid rgba(220,220,220,1);border-radius: 12rpx; padding:16rpx',
    placeholderstyle: 'font-size:28rpx',
    flag: false, // 输入框是否显示
    submitType: "new", //  新建 or 编辑
    showNoteDialog: false,
    textvalue: '',
    noteId: '',
    showInput: false,
    submitTitle: "",
    pageCount: {
      page: 1,
      total: 0,
  },
    isMore: null,
    noteList: [],
    activeValues: 0,
    loading: false,
  },
  /**
   * 组件的方法列表
   */
  methods: {
    onReachBottom() {
      const flag = this.data.noteList.length < this.data.pageCount.total
      if (flag) {
        this.setData({
          isMore: true,
          "pageCount.page": this.data.pageCount.page + 1
        })
        this.getNoteList()
      } else {
        this.setData({
          isMore: true
        })
        setTimeout(() => {
          this.setData({
            isMore: false
          })
        }, 100)
      }
    },
    handleSubmitTitle() {
      this.setData({
        submitTitle: this.properties.bookInfo.name
      })
    },
    openDialog() {
      this.setData({
        submitTitle: this.properties.bookInfo.name,
        showNoteDialog: true
      })
    },
    closeDialog() {
      this.setData({
        flag: false,
        showNoteDialog: false,
        submitTitle: '',
        textvalue: "",
      })
    },
    textareaChange(e) {
      this.setData({
        textvalue: e.detail.value
      })
    },
    textareaBlur() {
      console.log('失去焦点');
    },
    // 标题输入框值
    inputChange(e) {
      this.setData({
        submitTitle: e.detail.value
      })
    },
    // 弹窗确定按钮
    confirmSuggest() {
      if (!this.data.submitTitle) {
        return wx.showToast({
          icon: 'error',
          title: '请填写笔记标题',
        })
      } else if (!this.data.textvalue) {
        return wx.showToast({
          icon: 'error',
          title: '请填写笔记内容',
        })
      }
      if (this.data.submitType == 'new') {
        this.makeNote()
      } else if (this.data.submitType == 'edit') {
        this.updateNote()
      }
      this.setData({
        showNoteDialog: false
      })
    },
    handleChange(e) {
      this.setData({
        activeValues: e.detail.value
      })
    },
    // 格式化笔记时间
    convertTimestamp(timestamp) {
      const isoDate = new Date(timestamp)
      const year = isoDate.getFullYear()
      const month = String(isoDate.getMonth() + 1).padStart(2, '0')
      const day = String(isoDate.getDate()).padStart(2, '0')
      const hours = String(isoDate.getHours()).padStart(2, '0')
      const minutes = String(isoDate.getMinutes()).padStart(2, '0')
      const seconds = String(isoDate.getSeconds()).padStart(2, '0')
      const formattedDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`
      return formattedDate
    },
    changeLoading() {
      this.setData({
        loading:true
      })
    },
    // 获取笔记列表
    async getNoteList() {
      // this.setData({
      //   loading: true
      // })
      let topicId
      await app.MG.ugc
        .getProductUserSubmitTopic({
          productId: this.properties.bookInfo.id,
          appRefCode: app.config.appRefCode
        })
        .then((res) => {
          if (res) {
            topicId = res.id
          } else {
            return wx.showToast({
              icon: "error",
              title: '查询失败',
            })
          }
        })
      // loadings.value.bookResource = true
      let query = {
        start: 0,
        size: this.data.pageCount.page * 5,
        messageType: 'note',
        sort: {
          type: 'Desc',
          field: 'CreateDate'
        },
        appRefCode: app.config.appRefCode,
        topicIdOrRefCode: topicId + ''
      }
      await app.MG.ugc.getTopicMessageList(query).then((res) => {
        // notePage.value.total = res.totalSize
        res.datas.forEach((item) => {
          item.compliceHover = false
          item.deleteHover = false
          item.createDate = this.convertTimestamp(item.createDate)
        })
        this.setData({
          "pageCount.total": res.totalSize,
          noteList: res.datas,
          loading: false
        })
        console.log('笔记列表', res.datas);
      })
    },
    // 新建笔记接口
    async makeNote() {
      const token = wx.getStorageSync('jsek-token')
      if (!token) {
        return wx.getUserProfile({
          desc: '用户登录',
          success: (res) => {
            console.log(res);
          }
        })
      }
      let topicId
      await app.MG.ugc
        .getProductUserSubmitTopic({
          productId: this.properties.bookInfo.id,
          appRefCode: app.config.appRefCode
        })
        .then((res) => {
          if (res) {
            topicId = res.id
          } else {
            return wx.showToast({
              icon: 'error',
              title: '新建失败',
            })
          }
        })
      let query = {
        topicIdOrRefCode: topicId + '',
        name: this.data.submitTitle,
        content: this.data.textvalue,
        type: 'note',
        cmsTypeRefCode: '',
        newDataListRequest: []
      }
      await app.MG.ugc.newTopicMessage(query).then((res) => {
        wx.showToast({
          title: '新建成功',
        })
        this.closeDialog()
        this.getNoteList()
      })
    },
    // 删除笔记
    deleteNote(e) {
      const id = e.currentTarget.dataset.id
      const messageIds = []
      messageIds.push(id)
      wx.showModal({
        title: '提示',
        content: '确认删除该笔记吗?',//editable如果为true,这就是输入框的内容
        editable: false,//是否显示输入框
        placeholderText: '请输入内容吧',//输入框的默认内容
        success: (res) => {
          if (res.confirm) {
            app.MG.ugc
              .delTopicMessage({ messageIds })
              .then((res) => {
                wx.showToast({
                  title: '删除成功',
                })
                // if ((notePage.value.total % 3) - 1 == 0) {
                //   notePage.value.page -= 1
                // }
                this.getNoteList()
              })
          } else if (res.cancel) {
            console.log('用户点击取消')
          }
        }
      })
    },
    // 标题改变
    changeTitle(e) {
      this.setData({
        flag: e.currentTarget.dataset.value
      })
    },
    // 编辑按钮
    editNote(e) {
      const note = e.currentTarget.dataset.note
      this.setData({
        submitType: "edit",
        textvalue: note.content,
        submitTitle: note.name,
        noteId: note.id
      })
      this.openDialog()
    },
    // 编辑笔记接口
    updateNote() {
      const token = wx.getStorageSync('jsek-token')
      if (!token) {
        return wx.getUserProfile({
          desc: '用户登录',
          success: (res) => {
            console.log(res);
          }
        })
      }
      if (!this.data.submitTitle) {
        return wx.showToast({
          icon: 'error',
          title: '请填写笔记标题',
        })
      } else if (!this.data.textvalue) {
        return wx.showToast({
          icon: 'error',
          title: '请填写笔记内容',
        })
      }
      let query = {
        id: this.data.noteId,
        name: this.data.submitTitle,
        description: 'string',
        icon: 'string',
        type: 'note',
        content: this.data.textvalue,
        newDataRequests: [],
        updateDataRequests: []
      }
      app.MG.ugc.updateTopicMessage(query).then((res) => {
        wx.showToast({
          title: '编辑成功',
        })
        this.closeDialog()
        this.getNoteList()
      })
      this.setData({
        submitType: "new"
      })
    }
  }
})