From cab9b6b4fd82c12257aa412d9a703e27d1ae0aa4 Mon Sep 17 00:00:00 2001 From: tangxinyue <524779910@qq.com> Date: Thu, 19 Mar 2026 14:56:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8F=8C=E5=87=BB=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E5=8F=91=E8=A8=80=E4=BA=BA=E5=8A=9F=E8=83=BD=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=8D=8E=E4=B8=BA=E9=80=9A=E7=9F=A5=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=EF=BC=8C=E8=B0=83=E6=95=B4vivo=E6=90=9C=E7=B4=A0=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/message/chat/chat-layout.vue | 41 ++++++- components/message/chat/chat-list.vue | 7 +- components/message/list/message-nav-bar.vue | 47 +++++--- main.js | 2 +- pages/message/chat-page/chat-page.vue | 31 +++++- pages/message/list-index.vue | 110 ++++++++++++++++++- static/image/phone-message/huawei/notice.png | Bin 0 -> 1510 bytes static/image/phone-message/huawei/right.png | Bin 0 -> 843 bytes 8 files changed, 210 insertions(+), 28 deletions(-) create mode 100644 static/image/phone-message/huawei/notice.png create mode 100644 static/image/phone-message/huawei/right.png diff --git a/components/message/chat/chat-layout.vue b/components/message/chat/chat-layout.vue index 3fa524d..eba287b 100644 --- a/components/message/chat/chat-layout.vue +++ b/components/message/chat/chat-layout.vue @@ -43,7 +43,7 @@ - + @@ -142,12 +142,13 @@ const data = reactive({ content: "", simIndex: 1, scrollTop: 0, - keyboardHeight: 0 + keyboardHeight: 0, + lastClickTime: 0 }) -let { isSend, content, simIndex, scrollTop } = toRefs(data) +let { isSend, content, simIndex, scrollTop, lastClickTime } = toRefs(data) -const emit = defineEmits(['send']) +const emit = defineEmits(['send', 'dblclick-left', 'dblclick-right']) onMounted(() => { // 延迟极小时间确保 DOM 已更新循环并将滚动条拉到极限底端 @@ -220,6 +221,38 @@ const sendMessage = () => { }, 100); } +/** + * 处理 center-box 点击事件,检测双击并区分左右 + */ +const handleBoxClick = (e) => { + const now = Date.now(); + const clickInterval = now - data.lastClickTime; + + // 如果两次点击间隔在 300ms 以内,视为双击 + if (clickInterval > 0 && clickInterval < 300) { + // 获取点击位置的 X 坐标 + const clientX = e.detail.x || (e.touches && e.touches[0] ? e.touches[0].clientX : 0); + + // 获取屏幕宽度来区分左右 + const systemInfo = uni.getSystemInfoSync(); + const halfWidth = systemInfo.screenWidth / 2; + + if (clientX < halfWidth) { + console.log('双击左侧'); + emit('dblclick-left'); + } else { + console.log('双击右侧'); + emit('dblclick-right'); + } + + // 成功触发双击后重置时间,防止连续三次点击触发两次双击 + data.lastClickTime = 0; + } else { + data.lastClickTime = now; + } +} + + // 展示文字信息 const showInfo = computed(() => { let placeholder diff --git a/components/message/chat/chat-list.vue b/components/message/chat/chat-list.vue index 44170a4..0030550 100644 --- a/components/message/chat/chat-list.vue +++ b/components/message/chat/chat-list.vue @@ -18,7 +18,8 @@ - + 信息 · 短信 短信/彩信 {{ formatHuaweiTopTime(message.time) }} @@ -345,8 +346,8 @@ const formatMessageContent = (content, isMe) => { * @param index * @param message */ -const onMessageLongPress = (index, message) => { - emit('onLongPress', index, message) +const onMessageLongPress = (index, message, type = 'message') => { + emit('onLongPress', index, message, type) } // ===================== 拖拽排序逻辑 ===================== diff --git a/components/message/list/message-nav-bar.vue b/components/message/list/message-nav-bar.vue index dd4042d..d3af3c8 100644 --- a/components/message/list/message-nav-bar.vue +++ b/components/message/list/message-nav-bar.vue @@ -111,19 +111,9 @@ import { util } from '@/utils/common.js'; -const emit = defineEmits(['add']) +const emit = defineEmits(['add', 'setSim', 'setNoticeCount']) + -const buttonGroup = [{ - name: "添加短信", - click: () => { - emit('add') - } -}, { - name: "设置卡1卡2运营商", - click: () => { - emit('setSim') - } -}] const props = defineProps({ // 手机品牌 @@ -138,6 +128,31 @@ const props = defineProps({ } }) +const buttonGroup = computed(() => { + const groups = [{ + name: "添加短信", + click: () => { + emit('add') + } + }, { + name: "设置卡1卡2运营商", + click: () => { + emit('setSim') + } + }] + + if (props.phone == 'huawei') { + groups.push({ + name: "设置通知信息未读数", + click: () => { + emit('setNoticeCount') + } + }) + } + + return groups +}) + const data = reactive({ navBar: { @@ -538,15 +553,17 @@ page { padding: 0 10rpx; .icon { - width: 32rpx; - height: 32rpx; + width: 40rpx; + height: 40rpx; + flex-shrink: 0; } .input { + flex: 1; margin: 0 20rpx; ::v-deep .input-placeholder { - color: #646464; + color: #9A9A9A; font-size: 32rpx; } } diff --git a/main.js b/main.js index b16d121..dfcfb55 100644 --- a/main.js +++ b/main.js @@ -27,7 +27,7 @@ export function createApp() { const systemInfo = uni.getStorageSync('systemInfo') || {} app.config.globalProperties.$system = systemInfo.platform == 'ios' ? 'iOS' : 'Android' app.config.globalProperties.$systemInfo = systemInfo - uni.setStorageSync('version', '1.0.3.sp4') + uni.setStorageSync('version', '1.0.3.sp5') app.config.globalProperties.$version = uni.getStorageSync('version') app.use(globalMethods); diff --git a/pages/message/chat-page/chat-page.vue b/pages/message/chat-page/chat-page.vue index b2a3518..89251f6 100644 --- a/pages/message/chat-page/chat-page.vue +++ b/pages/message/chat-page/chat-page.vue @@ -8,7 +8,7 @@ + :number="data.number" @dblclick-left="onDblclickLeft" @dblclick-right="onDblclickRight"> @@ -194,10 +194,13 @@ const onEditorReady = () => { }).exec() } +let longpressType = ref('message') // 长按弹出弹出层 -const onMessageLongPress = (index, message) => { +const onMessageLongPress = (index, message, type) => { selectedMessage.value = message; - uni.createSelectorQuery().select('#msg-' + index).boundingClientRect(rect => { + longpressType.value = type + const selector = type === 'time' ? '#time-' + index : '#msg-' + index; + uni.createSelectorQuery().select(selector).boundingClientRect(rect => { if (rect) { // 将弹窗定位在元素正下方 (bottom边界 + 一点点边距) popupTop.value = rect.bottom + 10; @@ -443,6 +446,28 @@ const handleSend = (params) => { messageList.value.push(params) saveChatList() } + +/** + * 双击左侧 + */ +const onDblclickLeft = () => { + isMe.value = false + uni.showToast({ + title: "现在是对方发言", + icon: "none" + }) +} + +/** + * 双击右侧 + */ +const onDblclickRight = () => { + isMe.value = true + uni.showToast({ + title: "现在是自己发言", + icon: "none" + }) +} diff --git a/static/image/phone-message/huawei/notice.png b/static/image/phone-message/huawei/notice.png new file mode 100644 index 0000000000000000000000000000000000000000..8dc7bd4fb5d5d0bb061310ce475153d73ca593ce GIT binary patch literal 1510 zcmZWpc{tR07#~emF>;@eBdMOIuuP0djG4(0%`&-fl0-=p)gZ~yVx2>YW)NDtM(!N7 z=s_Aewk7A7agJl;W*B3}{@U56KX%{e`M&Sxc;DxFzu!N;iMCjbxTvxy2m}(hvP9#6 zivM;Ffq~or4*LlN5`x*<*k1(b{{DV+baZKHDFC{=yJ<99UtizAz`*qM^w7}I$jAtw zFc^%%!9hR-a({pS=;$bbfuPgrfFkGtnt>3|;o)IG6ktFEC=kFDkO2x<0wAyi^grUa zfq&xrxPS`U{`LM>zPkVb)*c%h12!KYAD@_*n4FxPnwkPG#bh#PXJ;1{7FaCS;^N}c z($ezs^2*A}+S=Os`ufJk#^&bc*47rA&E{}8ySuwwE_ZKlkH_Qj`F!As6bmthz^h?G zao8&$p#xyBu!xkjw2Z8rf|8m#6ngrMHVkftu(0;O5g3Fg#Kt8iWj@U-ud1r4tE=yz zc6AR8)5a$zr>AFF%PSk3>>bV?-$}bZ0R%dzVud!h4`B4Xh&T`Pk?hD$zdBQP^A%B& zNW9z0k~-W8O=7R|T3Qz`pBg0->gW&09+`QxQ0OBgIT8LwsmO=1McDe=(CRmt($y{+ zZ))UR)*H!1;D;ora_&YPTv}<}I;TCHde+cSzv81@s(PNJ16ie`tz4}wgwBTUo0vi~KGuBf_r&&8CL}quwZ>@21Nqv6;nQzj`{!+Gk5N+nqGm5T zEfK4VxgHAoS)s2O{7T`;jg_gdxd>xoCEPj;6VW76d{y;9#9BMQ00Bv_98NoU@3M|e zY^}*iJTmnoHU*j2aZ>m3*(MC+3qxNK4IhH*+0%3qjGD*>@;UUp!Bo=P1>Xkt$y(n4 zn1zk)P24oW-P8a~cw4p`$^IeH%GJIT1+Vay$F0^$&_=+%xkvnI&94U&5?zC~b=)Mo z(V}9v0;Bcy92UI7VlE_cnJzkBk!8(RNzN2g*&p!_{5LTd{9a%NjIPIX73?_AoEzU6 zw+*5;UfV4q2JjsG*$Q**xvH@IBH>QWD7+^z>mKnEwX3WC%S?i3qix1hHt~$G`(?WO zN0Et*54nZqu2LT$`eDXa&rd;JrR}{s zvF2)wgtyWflMYbusq>jPQ#QOwwg4X#g5sI6 zG>`_|jsnMpNXmS_xUF%J{vii4_4MbX0k!7U*kZ^Vb5>8D5;eT0gwdCK$ER&Hg`0w% z(H?G~jLMueIW8W7q{r!*%I%m_p!coGtHF3hN@p`tt1tWIlS=Uyr1E$EPk&1ouhZyI z;q|#uTrA^lQte#c=Z6QHo7!oBvn=kThI-bHd-Y4YB?o7b$2$n&y?-4gsG@#(tK-#@ zP?4?Qu8tC$37C!LXc_(>V&9%$q_hbtjk;BlAJ|9hHyCi>8ASW)`Crwu@zaA{(^d4> zTO-^4$vPPh0jm6~Kq9B__gzn`BzqG{&C5t-*Hax8{pZUJ8p$m${%U5@mQ F`5Uf3Ieh>C literal 0 HcmV?d00001 diff --git a/static/image/phone-message/huawei/right.png b/static/image/phone-message/huawei/right.png new file mode 100644 index 0000000000000000000000000000000000000000..9ad2a7a3304a42317207e45a86122b826b80dbfb GIT binary patch literal 843 zcmeAS@N?(olHy`uVBq!ia0vp^S|H593?x6vT4pjZFa`wpgt!8^|NsAQXlMYEt5&Vr zzkmO>ZQFq4#fuk#ePh`7tWnKcl`MA zvuDqqKYt!53ls#BCr_RPGJpUm1yl(HKn15yp9YdZ^*{y?0A=ASfeau33PMN-1IPxd zfvAL&$ZCLWGyt*^Y%D|^$c8I`h{MeXiX*e(${>PhQV=fOGzbGt5N<;Ig)3yzG5Psz;9D=4n6 zZ|v^rpEzmS^f~hvEnc>K)ta>%Hf`RrZTsGRM~(r5^3>^b7cO79e)IO-`_Es#e*5nI z`wyQ!eg6La$FJYN|NQ+|+Zibfj8+Lg~G0 zCToVs*Qf3QHcsMyF*PNqQKQ~y0_lo1g+baTOwmAuVgnNXQJ6&kGWag^I<(skIX`^V% zvf97xDW<|LYGoeB-9%>HE4G>zwcw>*z>U*&8E2S|KKC&;c_!LwdXdA|zwwc2s)O+U z1sj6mG9HzSgk5S-EAsj{$7sPTt;ssQl?%I{oV>JwJ#WU%Ii2<2xo7LAsPs*=4Ai? literal 0 HcmV?d00001