createTask.js 6.18 KB
import create from 'dd-store';
import pageStore from '../meetingDetail/store';
import { debounce, getCreateShowTime } from '../../utils/utils';
import { checkFullScren } from "../../utils/checkFullScren";
import { updateMeetingTask } from '../../api/request';
import { fixSeperateIndex } from "../meetingDetail/meetingDetail"

create.Page({
  store: pageStore,
  data: {
    $data: null,
    currentTask: {},
    show: false,
    isIPX: false,
    limitClick: false,
    type: 'create'
  },
  onLoad(query) {
    if (query.type === 'edit') {
      dd.setNavigationBar({
        title: '编辑任务'
      });
    }
    this.setData({
      meetingId: query.meetingId,
      type: query.type,
      isIPX: checkFullScren()
    })
  },
  inputChange: debounce(function (e) {
    const value = e.detail.value;
    this.store.data.currentTask.title = value;
    this.update();
  }, 100),
  handleExcutorChange(e) {
    //执行人页面删除执行人
    if (e.target.dataset.excutorId) {
      dd.navigateTo({ url: `/pages/excutorList/excutorList` })
    }
    //参会人列表页面选择参会人
    else {
      dd.navigateTo({ url: `/pages/attendeeList/attendeeList` })
    }
  },
  handleOpenTime() {
    const _that = this
    dd.datePicker({
      format: 'yyyy-MM-dd HH:mm',
      currentDate: this.$store.data.startTime,
      success: (res) => {
        if (!res.date) {
          return
        }
        _that.store.data.currentTask.endTime = `${res.date}:00`
        _that.update()
      },
    });
    // this.setData({
    //   show: true
    // })
  },
  closePopup() {
    this.setData({
      show: false
    })
  },
  onComplete(event) {
    this.store.data.currentTask.startTime = `${event.startTime}:00`;
    this.store.data.currentTask.endTime = `${event.endTime}:00`;
    this.update();
    this.closePopup();
  },
  updateTasks(data, callBack) {
    updateMeetingTask(data).then(res => {
      if (res.data.code == 0) {
        callBack(res.data)
      }
      this.setData({ limitClick: false });
    })
  },
  addTask() {
    const task = this.store.data.currentTask;

    if (this.data.limitClick || !(task.title.trim())) {
      return
    }
    this.setData({ limitClick: true });

    const excutor = task.excutorId ? [task.excutor] : null;

    let taskCreateModel = {
      endTime: task.endTime ? task.endTime.replace(/\//g, '-') : '',
      title: task.title,
      innerTaskExecutorList: excutor
    }
    const data = {
      meetingId: this.data.meetingId,
      platform: 'dingTalk',
    }

    if (this.data.type === 'edit') {
      delete taskCreateModel.innerTaskExecutorList;
      taskCreateModel.taskId = task.taskId
      taskCreateModel.commentId = task.commentId
      if (excutor) {
        if (task.originExcutorId) {
          if (task.originExcutorId !== excutor[0].userId) {
            taskCreateModel.userList = excutor;
            taskCreateModel.removeUserList = [task.originExcutor]
          }
        } else {
          taskCreateModel.userList = excutor;
        }
      } else {
        if (task.originExcutorId) {
          taskCreateModel.removeUserList = [task.originExcutor]
        }
      }
      data.taskModifyModel = taskCreateModel;
      //是否发送通知
      dd.confirm({
        title: '通知',
        content: '是否更新动态列表通知其他成员?',
        confirmButtonText: '通知',
        cancelButtonText: '不通知',
        success: (ret) => {
          if (ret.confirm) {
            data.notice = true;
            this.updateTasks(data, (res) => {
              if (res.data) {
                const affairListIndex = this.store.data.affairList.findIndex(it => it.commentId === data.taskModifyModel.commentId)
                const tasksIndex = this.store.data.tasks.findIndex(it => it.commentId === data.taskModifyModel.commentId)
                const deleteData = this.store.data.affairList.splice(affairListIndex, 1);
                this.store.data.tasks.splice(tasksIndex, 1)

                const addData = res.data[0].commentListDataModelList[0];
                addData.replyCommentList = deleteData[0].replyCommentList;
                addData.updateTime = getCreateShowTime(addData.updateTime);
                this.store.data.affairList.unshift(addData);
                this.store.data.tasks.unshift(addData);
                this.store.data.isNeedReloadIndexList = true;

                if (affairListIndex > this.store.data.separateIndex && this.store.data.separateIndex !== -1) {
                  this.store.data.separateIndex += 1;
                  this.store.data.separateIndex = fixSeperateIndex(this.store.data.separateIndex, this.store.data.affairList)
                }

                //重置
                this.store.data.currentTask = {};
                this.update();

                dd.navigateBack();
              }
            })

          } else {
            data.notice = false;
            this.updateTasks(data, (res) => {
              const updateAffair = this.store.data.affairList.find(it => it.commentId === data.taskModifyModel.commentId);
              const updateTask = this.store.data.tasks.find(it => it.commentId === data.taskModifyModel.commentId);
              updateAffair.meetingTaskSimpleViewModel.title = updateTask.title = taskCreateModel.title;
              updateAffair.meetingTaskSimpleViewModel.endTime = updateTask.endTime = taskCreateModel.endTime;
              updateAffair.meetingTaskSimpleViewModel.executor = updateTask.excutor = excutor;

              this.update();
              dd.navigateBack();
            })


          }
        }
      })

    } else {
      data.taskCreateModel = taskCreateModel
      this.updateTasks(data, (res) => {
        // 修改动态列表
        if (res.data) {
          const addData = res.data[0].commentListDataModelList[0];
          addData.updateTime = getCreateShowTime(addData.updateTime);
          this.store.data.affairList.unshift(addData);
          this.store.data.tasks.unshift(addData);
          this.store.data.isNeedReloadIndexList = true;

          if (this.store.data.separateIndex !== -1) {
            this.store.data.separateIndex += 1;
          }
          this.store.data.currentTask = {};
          this.update();
          dd.navigateBack();

        }
      })
    }
  }
});