<template>
  <view class="bg-white rounded-md">
    <view class="p-3 flex justify-between" @click="collapsed = !collapsed">
      <span class="relative p-1">
        <!-- <u-badge :is-dot="true" is-center></u-badge> -->
        {{ deliverData ? deliverData.deliverName : '' }}
      </span>
      <!-- 展开折叠按钮 -->
      <u-icon :name="collapsed ? 'arrow-up' : 'arrow-down'"></u-icon>
    </view>

    <view class="p-3 pt-0" v-show="collapsed">
      <!-- 提交人和时间信息 -->
      <view class="text-gray-400">
        <!-- <span class="mr-2" v-if="deliverData && deliverData.submitter">{{ deliverData.submitter }}</span> -->
        <span v-if="deliverData && deliverData.submitTime"> {{ dayjs(+deliverData.submitTime).format('MM-DD HH:mm') }}</span>
      </view>
      <!-- 提交的链接信息 -->
      <view class="w-64 break-all text-blue-400 py-2" v-if="deliverData && deliverData.details && deliverData.details[0]">
        {{ deliverData.details[0] }}
      </view>
      <!-- 审核人信息 -->
      <view class="text-gray-400 flex justify-between">
        <span>审核</span>
        <span class="text-blue-400" @click="moreRecords">更多记录</span>
      </view>
      <view class="px-2" v-if="deliverData && deliverData.checkerList">
        <!-- 遍历审核人信息 -->
        <view class="mt-3 text-sm flex justify-between" v-for="item in deliverData.checkerList">
          <view>
            <view>{{ item.checkerName }}</view>
            <view class="my-1">{{ item.remark }}</view>
            <view class="my-1" v-if="item.checkTime > 0">{{ dayjs(+item.checkTime).format('MM-DD HH:mm') }}</view>
          </view>

          <!-- 不是自己 -->
          <view v-show="item.isMine !== 1">{{ item.status === null ? '待审核' : item.status === 1 ? '已通过' : '已驳回' }}</view>

          <!-- 是当前审核人 且未审核状态 -->
          <view v-show="item.isMine === 1 && item.status === null">
            <u-button size="mini" shape="circle" class="mr-4 h-1-4 leading-1-4" type="primary" @click="approvedModal = true">通过</u-button>
            <u-button size="mini" shape="circle" class="h-1-4 leading-1-4" type="error" @click="rebutModal = true">驳回</u-button>
          </view>

          <!-- 自己是审核人 且审核过 当前审核人的审核状态并展示得分情况 -->
          <view v-show="item.isMine === 1 && item.status !== null" class="text-sm">
            <view>
              {{ item.status == '1' ? '已通过' : '已驳回' }}
            </view>
            <view v-if="item.score > 0">
              <u-circle-progress active-color="#FA8C16" :percent="item.score" width="90" border-width="7" class="mt-2">
                <view class="u-progress-content">
                  <view class="progress-dot text-white text-center">{{ item.score }}</view>
                </view>
              </u-circle-progress>
            </view>
          </view>
        </view>
      </view>
    </view>

    <!-- 审核通过的modal -->
    <u-mask :show="approvedModal" @click="approvedModal = false">
      <view class="modal-content-wrap" @click.stop>
        <!-- 通过modal的标题 -->
        <view class="modal-content-head"> 审核通过 </view>
        <view class="modal-content-body">
          <!-- 评分 -->
          <view class="flex justify-between mb-4">
            <u-number-box v-model="score" size="30" input-width="50" :max="100" :min="0" :step="1"></u-number-box>
            <view class="w-32 pt-4">
              <u-slider v-model="score" active-color="#34D399" :max="100" :min="0" :step="1"></u-slider>
            </view>
          </view>

          <textarea
            class="border-solid border border-gray-300 rounded-md"
            placeholder="请输入通过建议"
            maxlength="30"
            v-model="adviceRef"
          ></textarea>
          <view class="common-list">
            <view v-for="item in commonWords" class="leading-12" @click="adviceRef = item">
              {{ item }}
            </view>
          </view>
        </view>

        <view class="modal-content-foot">
          <view class="cancel" @click="approvedModal = false"> 取消 </view>
          <view class="confirm" @click="confirmAdvice"> 确定 </view>
        </view>
      </view>
    </u-mask>

    <!-- 审批驳回的modal -->
    <u-mask :show="rebutModal" @click="rebutModal = false">
      <view class="modal-content-wrap" @click.stop>
        <!-- 通过modal的标题 -->
        <view class="modal-content-head"> 审核驳回 </view>
        <view class="modal-content-body">
          <textarea
            class="border-solid border border-gray-300 rounded-md"
            placeholder="请输入通过建议"
            maxlength="30"
            v-model="rebutRef"
          ></textarea>
          <view class="common-list">
            <view v-for="item in rebutWords" class="leading-12" @click="rebutRef = item">
              {{ item }}
            </view>
          </view>
        </view>
        <view class="modal-content-foot">
          <view class="cancel" @click="rebutModal = false"> 取消 </view>
          <view class="confirm" @click="confirmReject"> 确定 </view>
        </view>
      </view>
    </u-mask>
  </view>
</template>

<script setup>
import { ref, computed } from 'vue';
import { useStore } from 'vuex';
import dayjs from 'dayjs';

const props = defineProps({ task: { type: Object, default: () => {} } });
const store = useStore();
const projectId = computed(() => store.getters['project/projectId']);
const collapsed = ref(false);
const deliverData = ref(null); // 获取到的审核信息
const approvedModal = ref(false); // 审核通过的modal
const rebutModal = ref(false); // 审核驳回的modal
const score = ref(100); // 分数
const adviceRef = ref(''); // 审核通过的审批语
const rebutRef = ref(''); // 审核驳回的审批语
const commonWords = ['加油，再接再厉！', '很棒！', '不错，很详细！', '加油，再接再厉']; // 审核通过常用的审批语
const rebutWords = ['不详细', '还有需要改进的地方', '驳回审批1', '驳回审批2']; // 审核驳回常用的审批语

// 获取当前审核信息
(async function getDeliverList() {
  try {
    const param = { taskId: props.task.id };
    deliverData.value = await uni.$u.api.getDeliverByTaskId(param);
  } catch (error) {
    console.error('getDeliverList error: ', error);
  }
})();

// 审核通过发送相关请求
function confirmAdvice() {
  // TODO:发送请求
  // console.log('确定')

  try {
    const deliverRecordId = deliverData.value.deliverRecordId;
    const param = {
      projectId: projectId.value,
      deliverRecordId,
      type: 1,
      remark: adviceRef.value,
      score: score.value,
    };
    console.log(param);
    uni.$u.api.checkDeliver(param);
  } catch (error) {
    console.log('error: ', error);
  }
  approvedModal.value = false;
}

// 审核驳回发送相关请求
function confirmReject() {
  // TODO:发送请求
  try {
    const { deliverRecordId } = store.state.deliver;
    const param = {
      projectId: projectId.value,
      deliverRecordId,
      type: 2,
      remark: rebutRef.value,
      score: '',
    };
    uni.$u.api.checkDeliver(param);
  } catch (error) {
    console.log('error: ', error);
  }
  rebutModal.value = false;
}

// 跳转到审核记录页面
function moreRecords() {
  const { deliverRecordId } = store.state.deliver;
  uni.navigateTo({ url: `/pages/checkerList/checkerList?deliverRecordId=${deliverRecordId}` });
}
</script>
<style scoped lang="scss"></style>
