From 8cd91d92cfc76a0ce4b18582e5adf6c56064706f Mon Sep 17 00:00:00 2001 From: "@zuopngfei" Date: Tue, 29 Jul 2025 13:30:42 +0800 Subject: [PATCH] sds --- api/upload.js | 105 +++++++++++ pages/AddTherapeuticRegimen/index.js | 111 ++--------- pages/followUp/index.js | 125 +++---------- pages/mmp-7/index.js | 268 +++++++++++---------------- 4 files changed, 251 insertions(+), 358 deletions(-) create mode 100644 api/upload.js diff --git a/api/upload.js b/api/upload.js new file mode 100644 index 0000000..fdca560 --- /dev/null +++ b/api/upload.js @@ -0,0 +1,105 @@ +import request from './request' + +const uploadFile = async (file, callback) => { + + + const policyData = await request('admin/policy_token', 'post') + const res = JSON.parse(policyData.token) + + const fileName = 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); // 调用回调处理错误 + } + }); + +} + + +const uploadFileToOSS = () => { + + return new Promise((resolve, reject) => { + + wx.chooseMedia({ + count: 1, // 选择一个文件 + mediaType: ['image'], + sourceType: ['album', 'camera'], + // type: 'all', // 支持所有类型的文件 + success: (res) => { + wx.showToast({ + title: '文件上传中,请稍等!', + icon: 'none' + }); + console.log('选择的文件:', res.tempFiles); // 输出选择的文件信息 + if (res.tempFiles.length > 0) { + const tempFilePath = res.tempFiles[0]; + console.log('选择的文件路径:', tempFilePath); // 输出文件路径 + uploadFile(tempFilePath, (error, data) => { + if (error) { + wx.showToast({ + title: '上传失败!', + icon: 'none' + }); + console.error('上传失败:', error); // 输出具体的错误信息 + reject(error) + } else { + resolve(data) + console.log('上传成功:', data); // 输出上传成功后的数据 + } + }); + } else { + wx.showToast({ + title: '未选择文件!', + icon: 'none' + }); + reject('未选择文件!') + } + }, + fail: (err) => { + wx.showToast({ + title: '选择文件失败!', + icon: 'none' + }); + console.error('选择文件失败:', err); // 输出选择文件的错误信息 + reject('选择文件失败!') + } + }); + }); +}; + +export default uploadFileToOSS; \ No newline at end of file diff --git a/pages/AddTherapeuticRegimen/index.js b/pages/AddTherapeuticRegimen/index.js index 36c0371..c67f9b9 100644 --- a/pages/AddTherapeuticRegimen/index.js +++ b/pages/AddTherapeuticRegimen/index.js @@ -1,4 +1,5 @@ import request from '~/api/request'; +import uploadFileToOSS from '~/api/upload'; import { getOcr } from '~/api/drugOcr'; @@ -319,105 +320,19 @@ Page({ reminder: JSON.parse(obj.reminder), }) }, - - //上传文件方法 - async uploadFileToOSS(file, callback) { - - - const policyData = await request('admin/policy_token', 'post') - const res = JSON.parse(policyData.token) - const fileName = 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) { - wx.chooseMedia({ - count: 1, // 选择一个文件 - mediaType: ['image'], - sourceType: ['album', 'camera'], - success: (res) => { - wx.showToast({ - title: '文件上传中,请稍等!', - icon: 'none' - }); - console.log('选择的文件:', res.tempFiles); // 输出选择的文件信息 - if (res.tempFiles.length > 0) { - const tempFilePath = res.tempFiles[0]; - console.log('选择的文件路径:', tempFilePath); // 输出文件路径 - this.uploadFileToOSS(tempFilePath, (error, data) => { - if (error) { - wx.showToast({ - title: '上传失败!', - icon: 'none' - }); - console.error('上传失败:', error); // 输出具体的错误信息 - } else { - wx.showToast({ title: '上传成功,正在识别内容!', icon: 'none' }); - - this.setData({ - imageFile: data - }) - getOcr(data).then(res => { - wx.showToast({ title: '识别完成!', icon: 'none' }) - this.ocrAdditem(res) - }) - console.log('上传成功:', data); // 输出上传成功后的数据 - } - }); - } else { - wx.showToast({ - title: '未选择文件!', - icon: 'none' - }); - } - }, - fail: (err) => { - wx.showToast({ - title: '选择文件失败!', - icon: 'none' - }); - console.error('选择文件失败:', err); // 输出选择文件的错误信息 - } - }); + uploadFileToOSS().then((imageUrls) => { + wx.showToast({ title: '上传成功,正在识别内容!', icon: 'none' }); + this.setData({ + imageFile: imageUrls + }) + getOcr(imageUrls).then(res => { + wx.showToast({ title: '识别完成!', icon: 'none' }) + this.ocrAdditem(res) + }) + }) + }, ocrAdditem(data) { diff --git a/pages/followUp/index.js b/pages/followUp/index.js index 032c0a6..74d03b3 100644 --- a/pages/followUp/index.js +++ b/pages/followUp/index.js @@ -1,4 +1,5 @@ import request from '~/api/request'; +import uploadFileToOSS from '~/api/upload'; import { getOcr } from '~/api/ocr'; import { getBOcr } from '~/api/BOcr'; @@ -247,111 +248,39 @@ Page({ [`form.${mode}`]: e.detail.value }) }, - //上传文件方法 - async uploadFileToOSS(file, callback) { - - - const policyData = await request('admin/policy_token', 'post') - const res = JSON.parse(policyData.token) - - const fileName = 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; if (this.data.form[mode].length >= 9) { wx.showToast({ title: '最多上传9张图片!', icon: 'none' }); return } - wx.chooseMedia({ - count: 1, // 选择一个文件 - mediaType: ['image'], - sourceType: ['album', 'camera'], - // type: 'all', // 支持所有类型的文件 - success: (res) => { - wx.showToast({ title: '文件上传中,请稍等!', icon: 'none' }); - console.log('选择的文件:', res.tempFiles); // 输出选择的文件信息 - if (res.tempFiles.length > 0) { - const tempFilePath = res.tempFiles[0]; - console.log('选择的文件路径:', tempFilePath); // 输出文件路径 - this.uploadFileToOSS(tempFilePath, (error, data) => { - if (error) { - wx.showToast({ title: '上传失败!', icon: 'none' }); - console.error('上传失败:', error); // 输出具体的错误信息 - } else { - const { mode } = e.currentTarget.dataset; - let arr = this.data.form[mode] - arr.unshift(data) - this.setData({ - [`form.${mode}`]: arr - }) - if(mode == 'mdt_image'){ - wx.showToast({ title: '上传成功!', icon: 'none' }); - } else if(mode == 'b_mode_image'){ - wx.showToast({ title: '上传成功,正在识别内容!', icon: 'none' }); - getBOcr(data).then(ocrRes => { - console.log(ocrRes) - wx.showToast({ title: '识别完成!', icon: 'none' }) - this.setFormData(ocrRes, mode) - }) - } else{ - wx.showToast({ title: '上传成功,正在识别内容!', icon: 'none' }); - getOcr(data).then(ocrRes => { - console.log(ocrRes) - wx.showToast({ title: '识别完成!', icon: 'none' }) - this.setFormData(ocrRes, mode) - }) - } - - console.log('上传成功:', data); // 输出上传成功后的数据 - } - }); - } else { - wx.showToast({ title: '未选择文件!', icon: 'none' }); - } - }, - fail: (err) => { - wx.showToast({ title: '选择文件失败!', icon: 'none' }); - console.error('选择文件失败:', err); // 输出选择文件的错误信息 + uploadFileToOSS().then((imageUrl) => { + const { mode } = e.currentTarget.dataset; + let arr = this.data.form[mode] + arr.unshift(imageUrl) + this.setData({ + [`form.${mode}`]: arr + }) + if(mode == 'mdt_image'){ + wx.showToast({ title: '上传成功!', icon: 'none' }); + } else if(mode == 'b_mode_image'){ + wx.showToast({ title: '上传成功,正在识别内容!', icon: 'none' }); + getBOcr(imageUrl).then(ocrRes => { + console.log(ocrRes) + wx.showToast({ title: '识别完成!', icon: 'none' }) + this.setFormData(ocrRes, mode) + }) + } else{ + wx.showToast({ title: '上传成功,正在识别内容!', icon: 'none' }); + getOcr(imageUrl).then(ocrRes => { + console.log(ocrRes) + wx.showToast({ title: '识别完成!', icon: 'none' }) + this.setFormData(ocrRes, mode) + }) } - }); + }) + }, imageKey: '', diff --git a/pages/mmp-7/index.js b/pages/mmp-7/index.js index bff1ad3..50e604a 100644 --- a/pages/mmp-7/index.js +++ b/pages/mmp-7/index.js @@ -1,4 +1,5 @@ import request from '~/api/request' +import uploadFileToOSS from '~/api/upload'; Page({ /** @@ -6,7 +7,7 @@ Page({ */ data: { form: { - username:'', + username: '', mmp_7: '', day: '', mobile: '', @@ -28,177 +29,120 @@ Page({ msg: '' }, formKey: '', - + getUserinfo(e) { console.log(e) }, -//上传文件方法 -async uploadFileToOSS(file, callback) { - + handleUpload(e) { + const { + mode + } = e.currentTarget.dataset; + uploadFileToOSS().then((imageUrl) => { + wx.showToast({ + title: '上传成功!', + icon: 'success' + }); + this.setData({ + [`form.${mode}`]: imageUrl + }, () => { + this.validateForm(mode); + }) + }) - const policyData = await request('admin/policy_token', 'post') - const res = JSON.parse(policyData.token) - const fileName = 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); // 调用回调处理错误 + }, + + 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(); } - }); - -}, -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); // 输出选择文件的错误信息 + 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; + } + }, -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 - }) -}, + 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 + }) + }, /** * 生命周期函数--监听页面加载 */