From a9ccdd2b950d1d612fdc3369e99b34e06bbd301d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=94=B0=E5=B2=A9?= Date: Fri, 27 Jun 2025 17:08:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=91=E7=9A=84=E9=A1=B5=E5=92=8C=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E9=A1=B5=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 8 +- src/api/login.js | 82 +- src/api/request.js | 9 +- src/api/user.js | 27 +- .../avatar-cropper/avatar-cropper.vue | 1300 +++++++++++++++++ src/components/avatar-cropper/rotate.svg | 15 + .../image-preview/image-preview.vue | 20 +- .../picture-upload/picture-upload.vue | 14 +- src/enum.js | 23 +- src/pages/courseDetail/components/comment.vue | 2 +- src/pages/courseDetail/index.vue | 34 + src/pages/courseDetail/submit.vue | 5 +- src/pages/index/index.vue | 11 +- src/pages/me/index.vue | 12 +- src/pages/setting/index.vue | 263 +++- src/uni_modules/t-cropper/changelog.md | 18 + .../components/t-cropper/t-cropper.scss | 202 +++ .../components/t-cropper/t-cropper.vue | 1098 ++++++++++++++ src/uni_modules/t-cropper/package.json | 85 ++ src/uni_modules/t-cropper/readme.md | 186 +++ .../t-cropper/static/svg/rotate.svg | 15 + .../components/uv-textarea/props.js | 2 +- 22 files changed, 3298 insertions(+), 133 deletions(-) create mode 100644 src/components/avatar-cropper/avatar-cropper.vue create mode 100644 src/components/avatar-cropper/rotate.svg create mode 100644 src/uni_modules/t-cropper/changelog.md create mode 100644 src/uni_modules/t-cropper/components/t-cropper/t-cropper.scss create mode 100644 src/uni_modules/t-cropper/components/t-cropper/t-cropper.vue create mode 100644 src/uni_modules/t-cropper/package.json create mode 100644 src/uni_modules/t-cropper/readme.md create mode 100644 src/uni_modules/t-cropper/static/svg/rotate.svg diff --git a/.env.development b/.env.development index 4b7a4662..9db6bab1 100644 --- a/.env.development +++ b/.env.development @@ -9,14 +9,12 @@ ENV = 'development' # VITE_APP_BASE_API_Url = 'http://25.64.16.133:9786' -# VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7001' +VITE_APP_BASE_API_Url = 'https://aitstest.jlbank.com.cn:7001' app入口 -<<<<<<< HEAD - VITE_APP_BASE_API_Url = 'http://25.18.122.65:7001' -======= + # VITE_APP_BASE_API_Url = 'http://25.18.122.65:7001' # VITE_APP_BASE_API_Url = 'http://25.16.122.65:7001' # VITE_APP_BASE_API_Url = 'http://25.18.122.66:9786' ->>>>>>> f9ef91e5fe7dbec56a29867b9d2d9f7e3792f0f4 + diff --git a/src/api/login.js b/src/api/login.js index 43953fab..648f0013 100644 --- a/src/api/login.js +++ b/src/api/login.js @@ -2,9 +2,12 @@ import request from '@/api/request' import common from "@/common/common"; import { setToken, - setUserInfo + setUserInfo, + getUserInfo } from "@/common/common"; - +import { + get_base_url +} from '@/api/request.js' // 账号登录接口 export const useAccountLoginApp = (data) => request({ @@ -17,17 +20,10 @@ export const useAccountLoginApp = (data) => request({ }) => { if (rtnCode === '0000') { setToken(body) - // deptId: "" - // deptName: null - // loginName: "ADMIN" // todo id - // orgId: "00E200" - // orgName: "金融科技部" - // userId: "USER001" - // userName: "ADMIN" / todo name - // userStatus: "01" + const user_data = await queryCurrentUser() - setUserInfo(user_data.body) - return user_data.body + return user_data + } return Promise.reject({ rtnCode, @@ -49,14 +45,14 @@ export const useAccountLoginApp = (data) => request({ rtnCode: "9999" rtnTime: "2025-06-24 08:54:52" */ - + return Promise.reject(res) }) /** * 获取个人信息 * 入参 - gender F是女 M男 + gender f是女 m男 imageAddr: 图片 loginName ID userName 姓名 @@ -65,6 +61,64 @@ export const queryCurrentUser = (data) => request({ url: '/traapp/access/queryCurrentUser', method: 'post', data +}).then(res => { + // deptId: "" + // deptName: null + // loginName: "ADMIN" // todo id + // orgId: "00E200" + // orgName: "金融科技部" + // userId: "USER001" + // userName: "ADMIN" / todo name + // userStatus: "01" + setUserInfo(res.body) + console.log('预加载头像'); + const base_url = get_base_url() + // 预加载头像 + // #ifdef APP-PLUS + const updateUserAvatar = (imagePath) => { + const userInfo = getUserInfo() + setUserInfo({ + ...userInfo, + 'imagePath': imagePath + }) + } + + try { + const pathName = res.body.imageAddr + const url = base_url + pathName + // 生成唯一文件名,避免冲突 + const filename = pathName.split('/').pop() + const localFilePath = '_downloads/' + filename + + // 先检查是否存在 + uni.getFileInfo({ + filePath: localFilePath, + success: () => { + console.log('头像已存在,无需下载'); + updateUserAvatar(localFilePath) + }, + fail: () => { + console.log('开始下载头像:', url); + const dtask = plus.downloader.createDownload( + url, { + method: 'GET', + filename: '_downloads/' + filename + }, + (download, status) => { + if (status === 200) { + console.log('头像下载成功:', download.filename); + updateUserAvatar(download.filename) + } + } + ) + dtask.start(); + } + }) + } catch (error) { + console.error('头像预加载过程发生错误:', error); + } + // #endif + return res.body }) //获取隐私协议 diff --git a/src/api/request.js b/src/api/request.js index 7b232585..4b061c66 100644 --- a/src/api/request.js +++ b/src/api/request.js @@ -50,7 +50,8 @@ export default function request({ meta, isStream, suppressErrors, - header = {} + header = {}, + timeout = 6000 }) { const base_url = get_base_url(url); @@ -70,6 +71,7 @@ export default function request({ data: data, method: method, header: headers_base, + timeout:timeout, success: (response) => { if (isStream) { // 流式传输,直接返回 return resolve(response); @@ -92,11 +94,14 @@ export default function request({ if (REQUES_ERROR_CODES['NO_LOGIN'].includes(res.rtnCode)) { goto_login_fun() } - + if (res?.rtnCode === '9999') { + common.msg("系统异常.") + } return reject(res) }, fail(res) { console.log('请求错误', res, url, base_url); + return reject(res) } }); }) diff --git a/src/api/user.js b/src/api/user.js index 61674f89..87aa7224 100644 --- a/src/api/user.js +++ b/src/api/user.js @@ -12,7 +12,28 @@ export const queryTraStdyStatisticsSelf = (data) => { return request({ url: '/traapp/traStdyInfo/queryTraStdyStatisticsSelf', method: 'post', - data, - suppressErrors: true + data }); -}; \ No newline at end of file +}; + +// 更新性别 +export const updateDfSysUserExtandInfoGender = (data) => { + /** + + **/ + return request({ + url: '/traapp/dfSysUserInfo/updateDfSysUserExtandInfoGender ', + method: 'post', + data + }); +}; + + // 更新照片 + export const updateDfSysUserExtandInfoImageAddr = (data) => { + return request({ + url: '/traapp/dfSysUserInfo/updateDfSysUserExtandInfoImageAddr', + method: 'post', + data + }); + }; + \ No newline at end of file diff --git a/src/components/avatar-cropper/avatar-cropper.vue b/src/components/avatar-cropper/avatar-cropper.vue new file mode 100644 index 00000000..c66776b9 --- /dev/null +++ b/src/components/avatar-cropper/avatar-cropper.vue @@ -0,0 +1,1300 @@ + + + + + + diff --git a/src/components/avatar-cropper/rotate.svg b/src/components/avatar-cropper/rotate.svg new file mode 100644 index 00000000..0143706c --- /dev/null +++ b/src/components/avatar-cropper/rotate.svg @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/src/components/image-preview/image-preview.vue b/src/components/image-preview/image-preview.vue index 8a87ce8b..a90318a2 100644 --- a/src/components/image-preview/image-preview.vue +++ b/src/components/image-preview/image-preview.vue @@ -4,6 +4,7 @@ diff --git a/src/components/picture-upload/picture-upload.vue b/src/components/picture-upload/picture-upload.vue index ee23a749..058b5973 100644 --- a/src/components/picture-upload/picture-upload.vue +++ b/src/components/picture-upload/picture-upload.vue @@ -109,25 +109,15 @@ const data = { bizScen: 'S3005' } + console.log(tempFilePaths[0]); const upload_map = tempFilePaths.map((file) => uploadFile(file, data)) Promise.all(upload_map).then(res => { fileList.push(...res) emits('update:modelValue', fileList.map(res => res.fileId)) - console.log('res, res', res); + }).catch(() => { }) - - // for (file of tempFilePaths) { - // try { - // const res = await uploadFile(file, data) - // console.log('res', res); - // fileList.push(res) - // } catch (error) { - // console.error('文件上传失败', error) - // } - // } - // emits('upload_success', fileList.value) } }) } diff --git a/src/enum.js b/src/enum.js index 5739aa2d..33eb71b4 100644 --- a/src/enum.js +++ b/src/enum.js @@ -1,7 +1,16 @@ - -MaxUploadPictureSize = 2048 // 最大图片上传限制 -MaxUploadDocumentMaxSize = 102400 // 最大文档上传限制 - - -500 - +export const MAX_UPLOAD_PICTURE_SIZE = 2048 // 最大图片上传限制 +export const Max_Upload_Document_Size = 102400 // 最大文档上传限制 +export const TextareaInputLimitCharacter = 160 // 全局多行文本输入框限制字数 +export const GENDER = [{ + value: "m", + label: "男性", + }, + { + value: "f", + label: "女性", + }, + { + value: "o", + label: "其他", + } +] // 性别 \ No newline at end of file diff --git a/src/pages/courseDetail/components/comment.vue b/src/pages/courseDetail/components/comment.vue index ff16c150..802319e5 100644 --- a/src/pages/courseDetail/components/comment.vue +++ b/src/pages/courseDetail/components/comment.vue @@ -15,7 +15,7 @@ {{item.bbsContent}} - azf + diff --git a/src/pages/courseDetail/index.vue b/src/pages/courseDetail/index.vue index 914a9633..50018643 100644 --- a/src/pages/courseDetail/index.vue +++ b/src/pages/courseDetail/index.vue @@ -1,6 +1,9 @@