From e7ec3877350002cb023f3e0f3d79bd0df014dff1 Mon Sep 17 00:00:00 2001 From: wangyifeng <812766448@qq.com> Date: Sun, 30 Mar 2025 16:22:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86=E6=96=87=E4=BB=B6=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E4=B8=AD=E5=8F=8B=E5=A5=BD=E6=8F=90=E7=A4=BA=EF=BC=9B?= =?UTF-8?q?=E5=A4=84=E7=90=86=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E5=9C=BA=E6=99=AF=E5=9B=BE=E6=A0=87=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=EF=BC=9B=E8=A7=A3=E5=86=B3=E5=9B=BE=E7=89=87=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?loading=E9=97=AE=E9=A2=98=EF=BC=9B=E6=9B=BF=E6=8D=A2=E6=89=80?= =?UTF-8?q?=E6=9C=89=E8=BF=9B=E5=BA=A6=E6=9D=A1=E9=A2=9C=E8=89=B2=E6=9B=B4?= =?UTF-8?q?=E9=86=92=E7=9B=AE=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components.d.ts | 2 + src/components/async-error/index.vue | 79 ++++++++ src/components/async-loading/index.vue | 78 ++++++++ src/components/talk/message/FileMessage.vue | 23 ++- src/components/talk/message/ImageMessage.vue | 61 +++++-- src/components/talk/message/VideoMessage.vue | 123 +++++++++---- src/main.js | 4 + src/pages/dialog/components/filePanel.vue | 179 ++++++++++++------- src/pages/dialog/index.vue | 28 ++- src/store/modules/uploads.ts | 41 ++++- 10 files changed, 493 insertions(+), 125 deletions(-) create mode 100644 src/components/async-error/index.vue create mode 100644 src/components/async-loading/index.vue diff --git a/components.d.ts b/components.d.ts index 2f10b66..c5aef78 100644 --- a/components.d.ts +++ b/components.d.ts @@ -8,6 +8,8 @@ export {} /* prettier-ignore */ declare module 'vue' { export interface GlobalComponents { + AsyncError: typeof import('./src/components/async-error/index.vue')['default'] + AsyncLoading: typeof import('./src/components/async-loading/index.vue')['default'] AudioMessage: typeof import('./src/components/talk/message/AudioMessage.vue')['default'] Avatar: typeof import('./src/components/base/Avatar.vue')['default'] AvatarCropper: typeof import('./src/components/base/AvatarCropper.vue')['default'] diff --git a/src/components/async-error/index.vue b/src/components/async-error/index.vue new file mode 100644 index 0000000..a23dd6d --- /dev/null +++ b/src/components/async-error/index.vue @@ -0,0 +1,79 @@ + + + + + + diff --git a/src/components/async-loading/index.vue b/src/components/async-loading/index.vue new file mode 100644 index 0000000..5bb623b --- /dev/null +++ b/src/components/async-loading/index.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/src/components/talk/message/FileMessage.vue b/src/components/talk/message/FileMessage.vue index 6735c14..0d121c3 100644 --- a/src/components/talk/message/FileMessage.vue +++ b/src/components/talk/message/FileMessage.vue @@ -55,7 +55,7 @@ const getFileTypeIMG = computed(() => { default: objT.finishedImg = filePaperOther objT.blankImg = filePaperOtherBlank - objT.progressColor = '#747474' + objT.progressColor = '#46299d' } return objT }) @@ -132,7 +132,7 @@ const downloadAndOpenFile = () => { :height="95" :src="getFileTypeIMG.blankImg" > - { :strokeWidth="3" :size="20" > +
+ +
@@ -288,4 +291,20 @@ const downloadAndOpenFile = () => { width: 40rpx !important; height: 40rpx !important; } + +.upload-failed { + position: absolute; + top: 120rpx; + right: 52rpx; + transform: translate(-50%, -50%); + z-index: 1; + width: 40rpx; + height: 40rpx; + display: flex; + align-items: center; + justify-content: center; + color: #ff4d4f; + background: #ff4d4f; + border-radius: 50%; +} diff --git a/src/components/talk/message/ImageMessage.vue b/src/components/talk/message/ImageMessage.vue index 8a84a27..9f6a226 100644 --- a/src/components/talk/message/ImageMessage.vue +++ b/src/components/talk/message/ImageMessage.vue @@ -12,40 +12,40 @@ const img = computed(() => { // console.log(props.extra); let info = { width: 0, - height: 0 + height: 0, } if (props.extra.url.includes('blob:http://')) { info = { width: props.extra.width, - height: props.extra.height + height: props.extra.height, } - }else { + } else { info = getImageInfo(props.extra.url) } if (info.width == 0 || info.height == 0) { return { width: 450, - height: 298 + height: 298, } } - if(info.width<300){ + if (info.width < 300) { return { width: 300, - height: info.height / (info.width / 300) + height: info.height / (info.width / 300), } } if (info.width < 350) { return { width: info.width, - height: info.height + height: info.height, } } return { width: 350, - height: info.height / (info.width / 350) + height: info.height / (info.width / 350), } }) @@ -54,13 +54,30 @@ const img = computed(() => { class="im-message-image" :class="{ left: data.float === 'left', - right: data.float === 'right' + right: data.float === 'right', }" > -
- - -
+
+
+ + +
+ +
+
+
diff --git a/src/components/talk/message/VideoMessage.vue b/src/components/talk/message/VideoMessage.vue index a4dc217..a11ffcf 100644 --- a/src/components/talk/message/VideoMessage.vue +++ b/src/components/talk/message/VideoMessage.vue @@ -1,8 +1,8 @@