<template>
  <view :style="{ height: height }" class="flex flex-col overflow-hidden">
    <Title />
    <view class="container flex flex-col flex-1 overflow-hidden bg-gray-100">
      <Roles />
      <Globals />
      <TimeLine class="flex-1 overflow-hidden" />
    </view>
  </view>
</template>

<script>
import { mapState, mapMutations, mapActions } from 'vuex';
export default {
  data() {
    return { title: 'Hello', height: '', scrollHeight: null };
  },

  computed: {
    ...mapState('user', ['user', 'token']),
    ...mapState('home', ['visibleRoles', 'roleId', 'timeNode', 'timeUnit']),
  },

  async onLoad(options) {
    console.log('options: ', options);
    // this.openPage();
    let TOKEN = uni.getStorageSync('anyringToken');
    if (!TOKEN) {
      await this.getUserId('1217651354919636992');
    }
    const params = { projectId: '1235555' };
    // 根据项目id获取项目信息
    await this.getProjectById(params);
    // 根据项目id获取角色列表
    await this.getRoles(params);
    console.log('this.visibleRoles: ', this.visibleRoles);
    this.setInitialRoleId(this.visibleRoles);
    // 根据时间基准点和角色查找定期任务
    await this.getTasks();
  },

  mounted() {
    this.height = window.screen.height + 'px';
  },

  methods: {
    ...mapMutations('user', ['setToken', 'setUser']),
    ...mapMutations('home', ['setProject', 'setInvisibleRoles', 'setVisibleRoles', 'setRoleId']),
    ...mapActions('user', ['getUserId']),
    ...mapActions('home', ['getProjectById', 'getRoles', 'handleRegularTask']),

    openPage() {
      console.log('open');
      this.$u.route('/pages/pinch/pinch');
    },

    // 设置 初始显示角色信息
    setInitialRoleId(visibleList) {
      const index = visibleList.findIndex(item => item.mine);
      const currentRole = index > 0 ? visibleList[index] : visibleList[0];
      const currentRoleId = currentRole ? currentRole.id : '';
      this.setRoleId(currentRoleId);
    },

    /**
     * 根据时间基准点和角色查找定期任务
     * @param {string} roleId 角色id
     * @param {string} timeNode 时间基准点 默认当前
     * @param {string} timeUnit 时间颗粒度 默认天
     */
    async getTasks() {
      try {
        const { roleId, timeNode, timeUnit } = this;
        const params = {
          roleId,
          timeNode,
          timeUnit,
        };
        await this.handleRegularTask(params);
      } catch (error) {
        console.log('error: ', error);
      }
    },
  },
};
</script>
