From 5fdd6dd675d506328255f4c710f6576b7cfb1609 Mon Sep 17 00:00:00 2001 From: hayu <1604366271@qq.com> Date: Mon, 10 Nov 2025 22:50:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=8A=E4=BC=A0=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/back/backNum.vue | 241 ++++++++++++++++++++++++------------- 1 file changed, 160 insertions(+), 81 deletions(-) diff --git a/src/pages/back/backNum.vue b/src/pages/back/backNum.vue index 3fb1d79..6bba2fb 100644 --- a/src/pages/back/backNum.vue +++ b/src/pages/back/backNum.vue @@ -176,6 +176,7 @@ import { onLoad } from '@dcloudio/uni-app' import { getUseType,insertApp } from '../../services/back.js'; import eselect from '@/components/tree-select/eselect.vue' import PopupConfirm from '@/components/PopupConfirm' +import {decryptWithSM4} from "../../utils/sm"; const taskInfo = ref({}) const maTypeSelectList = ref([]) @@ -322,75 +323,108 @@ const submitNum = async () => { }) } //上传 -// 上传图片 - 使用方法二的方式 const uploadImg = (item) => { - // 检查是否在 Cordova 环境中 - if (window.cordova) { - // Cordova 环境 - 使用方法二的方式 - navigator.camera.getPicture( - (file) => { - onCameraSuccess(file, item) - }, - (message) => { - console.log('选择图片失败', message) - uni.showToast({ title: '选择图片失败', icon: 'none' }) - }, - { - quality: 50, - destinationType: window.Camera.DestinationType.DATA_URL, - sourceType: window.Camera.PictureSourceType.SAVEDPHOTOALBUM, - } - ) - } else { - // 非 Cordova 环境 - 保持原来的 uni.chooseImage 方式作为降级方案 - uni.chooseImage({ - count: 1, - sizeType: ['original', 'compressed'], - sourceType: ['album', 'camera'], - success: res => { - let imgFiles = res.tempFilePaths - // 这里可以保持原来的 uni.uploadFile 方式,或者也改为 base64 方式 - uploadFileTraditional(imgFiles[0], item) + + uni.showActionSheet({ + itemList: ['拍照', '从相册选择'], + success: (res) => { + if (res.tapIndex === 0) { + getCameraFj(item) + } else if (res.tapIndex === 1) { + // 从相册选择 + getPhotoFj(item) } - }) - } + }, + fail: (err) => { + console.error('操作菜单选择失败:', err) + }, + }) +} +const getCameraFj = (item) => { + navigator.camera.getPicture((file) => onCameraSuccessFj(file, item), onCameraErrorFj, { + quality: 50, + destinationType: window.Camera.DestinationType.DATA_URL, + sourceType: window.Camera.PictureSourceType.CAMERA, + }) +} +// 附件从相册选择 +const getPhotoFj = (item) => { + navigator.camera.getPicture((file) => onCameraSuccessFj(file, item), onCameraErrorFj, { + quality: 50, + destinationType: window.Camera.DestinationType.DATA_URL, + sourceType: window.Camera.PictureSourceType.SAVEDPHOTOALBUM, + }) } -// 相机成功回调 -const onCameraSuccess = (file, item) => { - uploadSignUrl(file, item) +const onCameraErrorFj = (message) => { + console.log(message) } +const onCameraSuccessFj = (file, item) => { + uploadSignUrlFj(file, item) +} +// // 上传图片 - 使用方法二的方式 +// const uploadImg = (item) => { +// // 检查是否在 Cordova 环境中 +// if (window.cordova) { +// // Cordova 环境 - 使用方法二的方式 +// navigator.camera.getPicture( +// (file) => { +// onCameraSuccess(file, item) +// }, +// (message) => { +// console.log('选择图片失败', message) +// uni.showToast({ title: '选择图片失败', icon: 'none' }) +// }, +// { +// quality: 50, +// destinationType: window.Camera.DestinationType.DATA_URL, +// sourceType: window.Camera.PictureSourceType.SAVEDPHOTOALBUM, +// } +// ) +// } else { +// // 非 Cordova 环境 - 保持原来的 uni.chooseImage 方式作为降级方案 +// uni.chooseImage({ +// count: 1, +// sizeType: ['original', 'compressed'], +// sourceType: ['album', 'camera'], +// success: res => { +// let imgFiles = res.tempFilePaths +// // 这里可以保持原来的 uni.uploadFile 方式,或者也改为 base64 方式 +// uploadFileTraditional(imgFiles[0], item) +// } +// }) +// } +// } + +// // 相机成功回调 +// const onCameraSuccess = (file, item) => { +// uploadSignUrl(file, item) +// } + // 使用 base64 方式上传 -const uploadSignUrl = (base64Data, item) => { - // 生成随机文件名 - const fileName = `${generateRandomString(10)}_${Date.now()}.png` - +const uploadSignUrlFj = (file, item) => { + const base64Data = file uni.request({ - // url: baseURL + "/file/uploadBase64", // app - url: "/file/uploadBase64", // h5 + url: '/file/uploadBase64', method: 'POST', data: { - base64File: base64Data, - fileName: fileName, + base64File:base64Data, + fileName: `${generateRandomString(10)}_${Date.now()}.png`, fileType: 'image/png' }, success: (uploadRes) => { - // 处理响应数据 - let responseData = uploadRes.data - if (typeof responseData === 'string') { - responseData = JSON.parse(responseData) + console.log("xxxxxxxxxx",uploadRes) + if(!uploadRes.data.code){ + uploadRes = JSON.parse(decryptWithSM4(uploadRes.data)) + }else{ + uploadRes =JSON.parse(uploadRes.data) } - - console.log('上传成功', responseData.code) - console.log('上传成功', responseData.data) - - if (responseData.code && responseData.code == 200) { + if (uploadRes.code && uploadRes.code == 200) { let obj = { - name: responseData.data.name, - url: responseData.data.url + name: uploadRes.data.name, + url: uploadRes.data.url, } - if (!item.bmFileInfos) item.bmFileInfos = [] item.bmFileInfos.push(obj) uni.showToast({ title: '上传成功', icon: 'none' }) @@ -405,34 +439,79 @@ const uploadSignUrl = (base64Data, item) => { }) } -// 传统的文件上传方式(作为降级方案) -const uploadFileTraditional = (filePath, item) => { - uni.uploadFile({ - // url: baseURL+"/file/upload", // app - url: "/file/upload", // h5 - filePath: filePath, - name: 'file', - success: (res) => { - res = JSON.parse(res.data) - console.log('上传成功', res.code) - console.log('上传成功', res.data) - if(res.code && res.code == 200){ - let obj = { - name: res.data.name, - url: res.data.url - } - if (!item.bmFileInfos) item.bmFileInfos = [] - item.bmFileInfos.push(obj) - uni.showToast({ title: '上传成功', icon: 'none' }) - } else { - uni.showToast({ title: '上传失败', icon: 'none' }) - } - }, - fail: (err) => { - console.error('上传失败', err) - } - }) -} + + + +// // 生成随机文件名 +// const fileName = `${generateRandomString(10)}_${Date.now()}.png` +// +// uni.request({ +// // url: baseURL + "/file/uploadBase64", // app +// url: "/file/uploadBase64", // h5 +// method: 'POST', +// data: { +// base64File: base64Data, +// fileName: fileName, +// fileType: 'image/png' +// }, +// success: (uploadRes) => { +// // 处理响应数据 +// let responseData = uploadRes.data +// if (typeof responseData === 'string') { +// responseData = JSON.parse(responseData) +// } +// +// console.log('上传成功', responseData.code) +// console.log('上传成功', responseData.data) +// +// if (responseData.code && responseData.code == 200) { +// let obj = { +// name: responseData.data.name, +// url: responseData.data.url +// } +// +// if (!item.bmFileInfos) item.bmFileInfos = [] +// item.bmFileInfos.push(obj) +// uni.showToast({ title: '上传成功', icon: 'none' }) +// } else { +// uni.showToast({ title: '上传失败', icon: 'none' }) +// } +// }, +// fail: (err) => { +// console.error('上传失败', err) +// uni.showToast({ title: '上传失败', icon: 'none' }) +// } +// }) +// } + +// // 传统的文件上传方式(作为降级方案) +// const uploadFileTraditional = (filePath, item) => { +// uni.uploadFile({ +// // url: baseURL+"/file/upload", // app +// url: "/file/upload", // h5 +// filePath: filePath, +// name: 'file', +// success: (res) => { +// res = JSON.parse(res.data) +// console.log('上传成功', res.code) +// console.log('上传成功', res.data) +// if(res.code && res.code == 200){ +// let obj = { +// name: res.data.name, +// url: res.data.url +// } +// if (!item.bmFileInfos) item.bmFileInfos = [] +// item.bmFileInfos.push(obj) +// uni.showToast({ title: '上传成功', icon: 'none' }) +// } else { +// uni.showToast({ title: '上传失败', icon: 'none' }) +// } +// }, +// fail: (err) => { +// console.error('上传失败', err) +// } +// }) +// } const generateRandomString = (length) => { let result = '';