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 formData = { key: 'upload_file/' + file.name, //上传文件名称 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/'+ file.name); // 上传成功 } 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() { } })