255 lines
6.2 KiB
JavaScript
255 lines
6.2 KiB
JavaScript
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.tempFilePath.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.tempFilePath,
|
|
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.chooseMedia({
|
|
count: 1, // 选择一个文件
|
|
mediaType: ['image'],
|
|
sourceType: ['album', 'camera'],
|
|
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() {
|
|
|
|
}
|
|
}) |