<template>
  <view class="page flex-col">
    <view class="group_1 flex-row">


    </view>
    <view class="group_2 flex-row">
      <image
          class="label_1"
          referrerpolicy="no-referrer"
          src="/static/lanhu_kaoshijieguo/FigmaDDSSlicePNGacf527a62cbe7351c6472edd8f5b2814.png"
          @click="handleBack()"
      />
      <text class="text_1">考试结果</text>

    </view>
    <view class="group_4 flex-col">
      <view class="block_1 flex-row justify-between" @click="show = true">
        <text class="text_19">是否通过</text>
        <view class="image-text_1 flex-row justify-between">

          <view>
            <u-picker v-model="process.examStatus" :show="show" :columns="ifPassColumns" title="是否通过"
                      @confirm="ifPassOnConfirm" @cancel="show = false">
            </u-picker>
            <text class="text-group_2">{{ selectedValue || '请选择' }}</text>
          </view>

        </view>
      </view>
      <view class="text-wrapper_7 flex-row justify-between">
        <text class="text_4">分数</text>
        <view class="text_5_1 ">
          <u--input
              placeholder="请输入分数"
              border="none"
              v-model="process.examScore"
              maxlength="3"
              inputAlign="right"
          >分
          </u--input>
        </view>
      </view>
      <view class="text-wrapper_8 flex-row justify-between">
        <text class="text_20">时间</text>
        <view>
          <u-datetime-picker
              :show="showTimePicker"
              v-model="process.examTime"
              mode="datetime"
              @confirm="onConfirmExamTime"
              @cancel="showTimePicker = false"
          ></u-datetime-picker>
          <text class="text_3" @click="showTimePicker = true">
            {{ process.examTime ? formatDate(process.examTime) : '选择时间' }}
          </text>
        </view>
      </view>
      <!-- <view class="text-wrapper_9 flex-row justify-between">
        <text class="text_6">姓名</text>
        <view class="text_5_1 ">
        <u--input
            placeholder="请输入姓名"
            border="none"
            v-model="process.userName"
        	maxlength="3"
        	inputAlign="right"
          ></u--input>
        </view>
      </view> -->
      <view class="text-wrapper_10 flex-row justify-between">
        <text class="text_8">考试类型</text>
        <text class="text_9" v-if="process.subject != 2 && process.subject != 3">{{ courseType }}</text>
        <text class="text_9" v-else>{{ opCourseType }}</text>
      </view>
      <view class="text-wrapper_11 flex-row justify-between" @click="subjectShow = true"
            v-if="process.subject != 2 && process.subject != 3">
        <text class="text_10">考试科目</text>
        <view>
          <u-picker v-model="process.subject" :show="subjectShow" :columns="subjectColumns" title="科目"
                    @confirm="subjectOnConfirm" @cancel="subjectShow = false">
          </u-picker>
          <text class="text-group_2">{{ subjectValue || '请选择科目' }}</text>
        </view>
      </view>
    </view>
    <view class="group_5 flex-col">
      <text class="text_16">备注</text>
      <u--textarea class="text_17" v-model="process.remark" placeholder="请输入内容" count></u--textarea>
      <text class="text_18">图片</text>
      <view class="image-wrapper_4 flex-row justify-between">
        <u-upload

            :fileList="displayFileList"
            @afterRead="afterRead"
            @delete="deletePic"
            multiple
            :maxCount="2"
        ></u-upload>
      </view>
    </view>
    <view class="block_8 flex-col">
      <view class="text-wrapper_8 flex-col" @click="saveData()">
        <text class="text_19">确定</text>
      </view>
    </view>
  </view>
</template>
<script>
import upload from '@/utils/upload.js'
import request from '@/utils/request.js'
import {getLocalUserInfo} from '../../utils/auth';

export default {
  data() {
    return {
      show: false,
      showTimePicker: false,
      subjectShow: false,
      ifPassColumns: [['已通过', '未通过']],
      subjectColumns: [['科目一']],
      selectedValue: '',
      subjectValue: '',
      fileList: [],
      imageUrl: this.$imagesUrl,
      userInfo: [],
      courseType: null,
      courseCompleteStatusList: {},
      opTenantId: null,
      opCourseType: null,
      examId: null,
      batchId: null,
      batchItemId: null,
      process: {
        id: null,
        userName: null,
        userId: null,
        subject: null,
        fraction: null,
        examNum: null,
        examStatus: null,
        examScore: null,
        remark: '',
        examTime: null,
        images: null,
        tenantId: null,
        courseId: null,
        ifPass: null,
        batchId: null,
        coachId: null,
      },
      constants: {}
    };
  },
  onLoad(options) {
    this.userInfo = getLocalUserInfo()
    console.log('userInfo', this.userInfo)
    this.getUserOrderDetails()
    this.process.subject = options.subject
    this.opTenantId = options.tenantId
    this.opCourseType = options.courseType
    this.process.subject = options.subject
    this.process.courseId = options.courseId
    this.process.batchId = options.batchId
    this.examId = options.id
    this.batchId = options.batchId
    this.batchItemId = options.id
    this.process.id = options.id
    this.process.coachId = options.coachId
    this.process.userId = this.userInfo.id
    console.log('options', options)
    console.log('batchItemId', this.batchItemId)
  },
  computed: {
    displayFileList() {
      return this.fileList.map(item => {
        if (item.url.startsWith('http')) {
          return item;
        }

        const prefix = this.$imagesUrl.endsWith('/') ? this.$imagesUrl : `${this.$imagesUrl}/`;
        const fullUrl = item.url.startsWith('/')
            ? `${prefix}${item.url.slice(1)}`
            : `${prefix}${item.url}`;

        return {
          ...item,
          url: fullUrl,
        };
      });
    },
  },
  methods: {
    handleBack() {
      uni.navigateBack({
        delta: 1
      });
    },
    ifPassOnConfirm(value) {
      console.log('选中的值:', value);

      const statusMap = {
        '已通过': 1,
        '未通过': 0
      };

      // 更新数据
      this.process.examStatus = statusMap[value.value[0]];
      console.log('value[0]', value.value[0])
      this.selectedValue = value.value[0];
      this.show = false;

      console.log('examStatus:', this.process.examStatus);
      console.log('process', this.process)
    },

    subjectOnConfirm(value) {
      console.log('选中的值:', value);

      const statusMap = {
        '科目一': 1,
        '科目四': 4
      };

      // 更新数据
      this.process.subject = statusMap[value.value[0]];
      console.log('value[0]', value.value[0])
      this.subjectValue = value.value[0];
      this.subjectShow = false;

      console.log('subject:', this.process.subject);
      console.log('process', this.process)
    },

    onConfirmExamTime(value) {
      console.log("选中的时间:", value);
      this.process.examTime = value;
      this.showTimePicker = false;
    },
    // 格式化时间戳的方法
    formatDate(timestamp) {
      const date = new Date(timestamp);
      const year = date.getFullYear();
      const month = String(date.getMonth() + 1).padStart(2, '0');
      const day = String(date.getDate()).padStart(2, '0');
      const hours = String(date.getHours()).padStart(2, '0');
      const minutes = String(date.getMinutes()).padStart(2, '0');
      return `${year}-${month}-${day} ${hours}:${minutes}`;
    },


    deletePic(event) {
      this.fileList.splice(event.index, 1);
    },
    // 新增图片
    async afterRead(event) {
      let lists = [].concat(event.file);
      let fileListLen = this.fileList.length;

      for (let i = 0; i < lists.length; i++) {
        try {
          const resultUrl = await this.uploadFilePromise(lists[i].url);
          let item = {
            status: 'success',
            url: resultUrl,
          };
          this.fileList.splice(fileListLen, 0, item);
          fileListLen++;
        } catch (error) {
          console.error('图片上传失败', error);
        }
      }
    },
    uploadFilePromise(filePath) {
      console.log('图片地址', filePath)
      return new Promise((resolve, reject) => {
        upload({
          url: '/app-api/small-upload/common/upload',
          filePath: filePath,
        }).then((res) => {
          if (res.data && res.data.url) {
            resolve(res.data.url);
            console.log('返回', res)
            console.log('返回url', res.data.url)
          } else {
            reject(new Error('上传失败'));
          }
        }).catch(err => reject(err));
      });
    },

    getUserOrderDetails() {
      request({
        url: '/app-api/small/drive/school-course-order/page',
        method: 'GET',
        params: {
          userId: this.userInfo.id,
          paymentStatus: '2',
          ifEnd: 0,
        },
        tenantIdFlag: false
      }).then(res => {
        this.orderList = res.data.records;
        console.log('订单信息', res.data)
        if (res.data.records.length > 0) {
          const tempData = res.data.records[0]
          if (this.process.subject != 2 && this.process.subject != 3) {
            this.process.courseId = tempData.courseId
          }

          if (this.process.subject != 2 && this.process.subject != 3) {
            this.courseType = tempData.courseType
          }

          this.process.tenantId = tempData.tenantId
          this.getCourseCompleteStatus()
        }
      });
    },

    getCourseCompleteStatus() {
      console.log('userId', this.userId)
      console.log('courseId', this.process.courseId)
      request({
        url: '/app-api/process/page',
        method: 'GET',
        params: {
          userId: this.userInfo.id,
          courseId: this.process.courseId,
        }
      }).then(res => {
        this.courseCompleteStatusList = res.data.records
        console.log('res.data', res.data)
        if (this.courseCompleteStatusList.length > 0) {
          console.log('courseCompleteStatusList', this.courseCompleteStatusList)
          const subject2 = this.courseCompleteStatusList.find(item => item.subject === 2)
          const subject3 = this.courseCompleteStatusList.find(item => item.subject === 3)
          console.log('subject2', subject2)
          console.log('subject3', subject3)
          console.log(subject2?.status === '2' && subject3?.status === '2')

          if (subject2?.status === '2' && subject3?.status === '2') {
            console.log(subject2?.status === 2 && subject3?.status === 2)
            this.subjectColumns = [['科目一', '科目四']]
          }
        }
      })
    },

    saveData() {
      if (this.process.subject == 1 || this.process.subject == 4) {
        this.saveDataOne()
      }
      if (this.process.subject == 2 || this.process.subject == 3) {
        this.saveDataTwo()
      }
    },
    saveDataOne() {
      if (this.process.subject === 1 && this.courseCompleteStatusList.length <= 0) {
        console.log('this.courseCompleteStatusList', this.courseCompleteStatusList)
        uni.showToast({title: '请联系驾校人员', icon: 'none'});
        return;

      }
      if (this.process.subject === 4 && this.courseCompleteStatusList.length <= 0) {

        uni.showToast({title: '请联系驾校人员', icon: 'none'});
        return;

      }
      console.log('courseCompleteStatusList', this.courseCompleteStatusList.length)
      this.process.images = this.fileList?.map(item => item.url).join(',') || '';
      console.log('process', this.process)

      if (!this.process.userId || !this.process.subject || !this.process.examScore || !this.process.examStatus || !this.process.examTime) {
        uni.showToast({title: '信息填写不完整', icon: 'none'});
        return;
      }
      request({
        url: '/app-api/process/updateProcess',
        method: 'PUT',
        data: this.process,
      }).then(res => {
        if (res.code === 0) {
          uni.showToast({
            title: '保存成功',
            icon: 'success',
            duration: 1000
          });
          setTimeout(() => {
            uni.navigateBack({
              delta: 1
            });
          }, 1500);
        } else {
          uni.showToast({title: res.data?.message || '保存失败', icon: 'none'});
        }
      })
    },
    saveDataTwo() {
      /* const postData = {
          ...this.process, // 先拷贝 process 原有数据
          tenantId: this.opTenantId,
          fraction: this.process.examScore,
          ifPass: this.process.examStatus,
          id: this.batchItemId,
        remark: this.process.remark
        images: this.fileList?.map(item => item.url).join(',') || '',
        } */

      // console.log('提交数据是：', postData)
      this.process.userId = this.userInfo.id
      this.process.tenantId = this.opTenantId
      this.process.fraction = this.process.examScore
      this.process.ifPass = this.process.examStatus
      this.process.images = this.fileList?.map(item => item.url).join(',') || '';
      if (!this.process.userId || !this.process.subject || !this.process.examScore || !this.process.examStatus || !this.process.examTime) {
        uni.showToast({title: '信息填写不完整', icon: 'none'});
        return;
      }
      request({
        url: '/app-api/examBatch/update',
        method: 'PUT',
        // data: postData,
        data: this.process,
      }).then(res => {
        if (res.code === 0) {
          uni.showToast({
            title: '保存成功',
            icon: 'success',
            duration: 1000
          });
          setTimeout(() => {
            uni.navigateBack({
              delta: 1
            });
          }, 1500);
        } else {
          uni.showToast({title: res.data?.message || '保存失败', icon: 'none'});
        }
      })
    }

  }
};
</script>
<style lang='scss'>
@import '../common/common.scss';
@import './assets/style/index.rpx.scss';

</style>
