import request from '~/api/request'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    form: {
      username:'',
      mmp_7: '',
      day: '',
      mobile: '',
      gallbladder_image: '',
      portal_vein_branch_image: '',
      portal_vein_cross_image: ''
    },
    isName: true,
    isMmp: true,
    isDay: true,
    isMobile: true,
    isGallbladder: true,
    isPortalVeinBranch: true,
    isPortalVeinCross: true,
    imageVisible: false,
    imageList: [],
    imageIndex: 1,
    visible: false,
    msg: ''
  },
  formKey: '',
  

 

//上传文件方法 
async uploadFileToOSS(file, callback) {
    

  const policyData = await request('admin/policy_token', 'post')
  const res = JSON.parse(policyData.token)
  const fileNameWithExt = file.path.split('/').pop(); // hello.png
  const fileName = fileNameWithExt.split('.').slice(0, -1).join('.'); // hello

  const formData = {
    key: 'upload_file/' + fileName,  //上传文件名称
    policy: res.policy,   //表单域
    'x-oss-signature-version': res.x_oss_signature_version,    //指定签名的版本和算法
    'x-oss-credential': res.x_oss_credential,   //指明派生密钥的参数集
    'x-oss-date': res.x_oss_date,   //请求的时间
    'x-oss-signature': res.signature,   //签名认证描述信息
    'x-oss-security-token': res.security_token,  //安全令牌
    success_action_status: "200"  //上传成功后响应状态码
  };
  // console.log(filePath)
  // return
  // 发送请求上传文件 
  wx.uploadFile({
    url: 'https://image-fudan.oss-cn-beijing.aliyuncs.com/', 
    method: 'put',
    filePath: file.path,
    name: 'file',   //固定值为file
    formData: formData,
    success(res) {
      console.log('上传响应:', res);
      if (res.statusCode === 200) {
        callback(null, 'https://image-fudan.oss-cn-beijing.aliyuncs.com/upload_file/'+ fileName); // 上传成功
      } else {
        console.error('上传失败，状态码:', res.statusCode);
        console.error('失败响应:', res);
        callback(res); // 上传失败，返回响应
      }
    },
    fail(err) {
      console.error('上传失败:', err); // 输出错误信息
      wx.showToast({ title: '上传失败，请重试!', icon: 'none' });
      callback(err); // 调用回调处理错误
    }
  });
  
},
handleUpload(e) {
  const { mode } = e.currentTarget.dataset;


  wx.chooseImage({
    count: 1, // 选择一个文件
    type: 'all', // 支持所有类型的文件
    success: (res) => {
      wx.showToast({ title: '文件上传中，请稍等!', icon: 'none' });
      if (res.tempFiles.length > 0) {
        const tempFilePath = res.tempFiles[0]; 
        this.uploadFileToOSS(tempFilePath, (error, data) => {
          if (error) {
            wx.showToast({ title: '上传失败!', icon: 'none' });
            console.error('上传失败:', error); // 输出具体的错误信息
          } else {
            wx.showToast({ title: '上传成功!', icon: 'success' });
           
            this.setData({
              [`form.${mode}`]: data
            }, () => {
              this.validateForm(mode);
            })

            console.log('上传成功:', data); // 输出上传成功后的数据
          }
        });
      } else {
        wx.showToast({ title: '未选择文件!', icon: 'none' });
      }
    },
    fail: (err) => {
      wx.showToast({ title: '选择文件失败!', icon: 'none' });
      console.error('选择文件失败:', err); // 输出选择文件的错误信息
    }
  });
},

handleDelete(e){
  const { mode } = e.currentTarget.dataset;
  this.setData({
    [`form.${mode}`]: ''
  })
},
handleImagePreview(e){
  const { mode } = e.currentTarget.dataset;
  this.setData({
    imageList: [this.data.form[mode]],
    imageIndex: 1,
    imageVisible: true
  })
},

onInput(e){
  const { mode } = e.currentTarget.dataset;
  this.setData({
    [`form.${mode}`]: e.detail.value
  }, () => {
    this.validateForm(mode);
  });
},

validateForm(mode) {
  let update = {};
  let form = this.data.form;
  if (!mode || mode === 'username') {
    update.isName = !!form.username.trim();
  }
  if (!mode || mode === 'mmp_7') {
    update.isMmp = !!form.mmp_7.trim();
  }
  if (!mode || mode === 'day') {
    update.isDay = !!form.day.trim();
  }
  if (!mode || mode === 'mobile') {
    update.isMobile = /^1[3-9]\d{9}$/.test(form.mobile.trim());
  }
  if (!mode || mode === 'gallbladder_image') {
    update.isGallbladder = !!form.gallbladder_image.trim();
  }
  if (!mode || mode === 'portal_vein_branch_image') {
    update.isPortalVeinBranch = !!form.portal_vein_branch_image.trim();
  }
  if (!mode || mode === 'portal_vein_cross_image') {
    update.isPortalVeinCross = !!form.portal_vein_cross_image.trim();
  }
  this.setData(update);
  // 全量校验时返回整体结果
  if (!mode) {
    return update.isName && update.isMmp && update.isDay && update.isMobile && update.isGallbladder && update.isPortalVeinBranch && update.isPortalVeinCross;
  }
},

async toQuestionnaire(){
  if (!this.validateForm()) {
    wx.showToast({ title: '请完善表单信息', icon: 'none' });
    return;
  }
  const body = {
    username: this.data.form.username,
    mmp_7: this.data.form.mmp_7,
    day: Number(this.data.form.day),
    mobile: this.data.form.mobile,
    gallbladder_image: this.data.form.gallbladder_image,
    portal_vein_branch_image: this.data.form.portal_vein_branch_image,
    portal_vein_cross_image: this.data.form.portal_vein_cross_image
  }
  const res = await request('patient/diagnostic', 'post', body)
  this.setData({
    msg: res.message,
    visible: true
  })
},
confirm(){
  this.setData({
    visible: false
  })
},
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})