需新增:添加好友页面,优化各模块页面
This commit is contained in:
@@ -1,6 +1 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" fill="none">
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="16" height="16" viewBox="0 0 16 16"><defs><clipPath id="master_svg0_0_8265"><rect x="0" y="0" width="16" height="16" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_0_8265)"><path d="M1.6666666269302368,8.000000126930237C1.6666666269302368,4.502196626930237,4.502196626930237,1.6666666269302368,8.000000126930237,1.6666666269302368C11.497803326930237,1.6666666269302368,14.333333626930237,4.502196626930237,14.333333626930237,8.000000126930237C14.333333626930237,8.000000126930237,14.333333626930237,8.209877126930238,14.333333626930237,8.209877126930238C14.333333626930237,11.591768826930236,11.591768826930236,14.333333626930237,8.209877126930238,14.333333626930237C8.209877126930238,14.333333626930237,1.6666666269302368,14.333333626930237,1.6666666269302368,14.333333626930237C1.6666666269302368,14.333333626930237,1.6666666269302368,8.000000126930237,1.6666666269302368,8.000000126930237ZM8.000000126930237,3.0000000269302367C5.238576326930237,3.0000000269302367,3.0000000269302367,5.238576326930237,3.0000000269302367,8.000000126930237C3.0000000269302367,8.000000126930237,3.0000000269302367,13.000000626930238,3.0000000269302367,13.000000626930238C3.0000000269302367,13.000000626930238,8.209877126930238,13.000000626930238,8.209877126930238,13.000000626930238C10.855389226930237,13.000000626930238,13.000000626930238,10.855389226930237,13.000000626930238,8.209877126930238C13.000000626930238,8.209877126930238,13.000000626930238,8.000000126930237,13.000000626930238,8.000000126930237C13.000000626930238,5.238576326930237,10.761423726930238,3.0000000269302367,8.000000126930237,3.0000000269302367ZM11.000000626930238,6.000000126930237C11.000000626930238,6.000000126930237,11.000000626930238,7.333333626930237,11.000000626930238,7.333333626930237C11.000000626930238,7.333333626930237,5.000000126930237,7.333333626930237,5.000000126930237,7.333333626930237C5.000000126930237,7.333333626930237,5.000000126930237,6.000000126930237,5.000000126930237,6.000000126930237C5.000000126930237,6.000000126930237,11.000000626930238,6.000000126930237,11.000000626930238,6.000000126930237ZM8.000000126930237,10.333333626930237C8.000000126930237,10.333333626930237,5.000000126930237,10.333333626930237,5.000000126930237,10.333333626930237C5.000000126930237,10.333333626930237,5.000000126930237,9.000000126930237,5.000000126930237,9.000000126930237C5.000000126930237,9.000000126930237,8.000000126930237,9.000000126930237,8.000000126930237,9.000000126930237C8.000000126930237,9.000000126930237,8.000000126930237,10.333333626930237,8.000000126930237,10.333333626930237Z" fill-rule="evenodd" fill="#333333" fill-opacity="1"/></g></svg>
|
||||||
<circle r="2.61111" transform="matrix(1 0 0 -1 8.55545 3.88889)" stroke="#4C5059"></circle>
|
|
||||||
<circle r="2.61111" transform="matrix(1 0 0 -1 4.66678 3.88889)" fill="#F4F5F9" stroke="#4C5059"></circle>
|
|
||||||
<path d="M5.16675 11.7778C5.16675 9.84484 6.73375 8.27783 8.66675 8.27783H10.0001C11.9331 8.27783 13.5001 9.84484 13.5001 11.7778V12.7223H5.16675V11.7778Z" stroke="#4C5059"></path>
|
|
||||||
<path d="M0.5 11.7778C0.5 9.84484 2.067 8.27783 4 8.27783H5.33333C7.26633 8.27783 8.83333 9.84484 8.83333 11.7778V12.7223H0.5V11.7778Z" fill="#F4F5F9" stroke="#4C5059"></path>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 666 B After Width: | Height: | Size: 2.7 KiB |
1
TUIKit/assets/icon/user-add.svg
Normal file
1
TUIKit/assets/icon/user-add.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="16" height="16" viewBox="0 0 16 16"><defs><clipPath id="master_svg0_0_8244"><rect x="0" y="0" width="16" height="16" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_0_8244)"><path d="M8.333252080055237,3.0000000269302367C7.412777580055237,3.0000000269302367,6.666585580055237,3.7461921269302367,6.666585580055237,4.666666626930237C6.666585580055237,5.587141426930237,7.412777580055237,6.333333626930237,8.333252080055237,6.333333626930237C9.253726580055236,6.333333626930237,9.999918580055237,5.587141426930237,9.999918580055237,4.666666626930237C9.999918580055237,3.7461921269302367,9.253726580055236,3.0000000269302367,8.333252080055237,3.0000000269302367ZM5.333252080055237,4.666666626930237C5.333252080055237,3.0098122269302365,6.676397880055236,1.6666666269302368,8.333252080055237,1.6666666269302368C9.990106180055236,1.6666666269302368,11.333252580055238,3.0098122269302365,11.333252580055238,4.666666626930237C11.333252580055238,6.3235208269302365,9.990106180055236,7.666666626930237,8.333252080055237,7.666666626930237C6.676397880055236,7.666666626930237,5.333252080055237,6.3235208269302365,5.333252080055237,4.666666626930237ZM5.999918580055237,9.666666626930237C4.527159380055236,9.666666626930237,3.3332519800552367,10.860574326930237,3.3332519800552367,12.333333626930237C3.3332519800552367,12.333333626930237,3.3332519800552367,13.000000626930238,3.3332519800552367,13.000000626930238C3.3332519800552367,13.000000626930238,8.666585580055237,13.000000626930238,8.666585580055237,13.000000626930238C8.666585580055237,13.000000626930238,8.666585580055237,14.333333626930237,8.666585580055237,14.333333626930237C8.666585580055237,14.333333626930237,1.9999185800552368,14.333333626930237,1.9999185800552368,14.333333626930237C1.9999185800552368,14.333333626930237,1.9999185800552368,12.333333626930237,1.9999185800552368,12.333333626930237C1.9999185800552368,10.124194726930236,3.790779780055237,8.333333626930237,5.999918580055237,8.333333626930237C5.999918580055237,8.333333626930237,8.666585580055237,8.333333626930237,8.666585580055237,8.333333626930237C8.666585580055237,8.333333626930237,8.666585580055237,9.666666626930237,8.666585580055237,9.666666626930237C8.666585580055237,9.666666626930237,5.999918580055237,9.666666626930237,5.999918580055237,9.666666626930237ZM11.666585580055237,11.000000626930238C11.666585580055237,11.000000626930238,11.666585580055237,9.000000126930237,11.666585580055237,9.000000126930237C11.666585580055237,9.000000126930237,12.999918580055237,9.000000126930237,12.999918580055237,9.000000126930237C12.999918580055237,9.000000126930237,12.999918580055237,11.000000626930238,12.999918580055237,11.000000626930238C12.999918580055237,11.000000626930238,14.999918580055237,11.000000626930238,14.999918580055237,11.000000626930238C14.999918580055237,11.000000626930238,14.999918580055237,12.333333626930237,14.999918580055237,12.333333626930237C14.999918580055237,12.333333626930237,12.999918580055237,12.333333626930237,12.999918580055237,12.333333626930237C12.999918580055237,12.333333626930237,12.999918580055237,14.333333626930237,12.999918580055237,14.333333626930237C12.999918580055237,14.333333626930237,11.666585580055237,14.333333626930237,11.666585580055237,14.333333626930237C11.666585580055237,14.333333626930237,11.666585580055237,12.333333626930237,11.666585580055237,12.333333626930237C11.666585580055237,12.333333626930237,9.666585580055237,12.333333626930237,9.666585580055237,12.333333626930237C9.666585580055237,12.333333626930237,9.666585580055237,11.000000626930238,9.666585580055237,11.000000626930238C9.666585580055237,11.000000626930238,11.666585580055237,11.000000626930238,11.666585580055237,11.000000626930238Z" fill-rule="evenodd" fill="#333333" fill-opacity="1"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 3.8 KiB |
@@ -75,7 +75,10 @@
|
|||||||
|
|
||||||
/** 是否是红包 */
|
/** 是否是红包 */
|
||||||
const isRedEnvelope = computed(() => {
|
const isRedEnvelope = computed(() => {
|
||||||
if (quoteMessage.value?.payload?.data) {
|
if (
|
||||||
|
quoteMessage.value?.payload?.data &&
|
||||||
|
quoteMessage.value?.type === 'TIMCustomElem'
|
||||||
|
) {
|
||||||
const businessID = JSON?.parse(
|
const businessID = JSON?.parse(
|
||||||
quoteMessage.value?.payload?.data
|
quoteMessage.value?.payload?.data
|
||||||
)?.businessID
|
)?.businessID
|
||||||
|
|||||||
@@ -316,7 +316,10 @@
|
|||||||
|
|
||||||
/** 是否红包 */
|
/** 是否红包 */
|
||||||
const isRedEnvelope = (item: any) => {
|
const isRedEnvelope = (item: any) => {
|
||||||
if (item.messageBody[0]?.payload?.data) {
|
if (
|
||||||
|
item.messageBody[0]?.payload?.data &&
|
||||||
|
item.messageBody[0]?.type === 'TIMCustomElem'
|
||||||
|
) {
|
||||||
const businessID = JSON?.parse(
|
const businessID = JSON?.parse(
|
||||||
item.messageBody[0]?.payload?.data
|
item.messageBody[0]?.payload?.data
|
||||||
)?.businessID
|
)?.businessID
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div :ref="convHeaderRef" class="tui-conversation-header">
|
<div :ref="convHeaderRef" class="tui-conversation-header">
|
||||||
<Navigation title="消息">
|
<Navigation
|
||||||
|
:title="`消息${props.topCount ? `(${props.topCount})` : ''}`"
|
||||||
|
>
|
||||||
<template #right>
|
<template #right>
|
||||||
<div v-show="!isGlobalSearching" class="menu-container">
|
<div v-show="!isGlobalSearching" class="menu-container">
|
||||||
<ul v-if="menuList.length > 0" class="list">
|
<ul v-if="menuList.length > 0" class="list">
|
||||||
@@ -60,6 +62,16 @@
|
|||||||
import Server, { IMenuItem } from './server'
|
import Server, { IMenuItem } from './server'
|
||||||
import type { ISearchingStatus } from '../../TUISearch/type'
|
import type { ISearchingStatus } from '../../TUISearch/type'
|
||||||
import { navigateTo } from '../../../../utils/router'
|
import { navigateTo } from '../../../../utils/router'
|
||||||
|
import { useUI } from '../../../../utils/use-ui'
|
||||||
|
|
||||||
|
const { showDialog } = useUI()
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
topCount: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
const showChildren = ref<IMenuItem[]>([])
|
const showChildren = ref<IMenuItem[]>([])
|
||||||
const convHeaderRef = ref<HTMLElement | undefined>()
|
const convHeaderRef = ref<HTMLElement | undefined>()
|
||||||
@@ -96,7 +108,18 @@
|
|||||||
listener = { onClicked: () => {} }
|
listener = { onClicked: () => {} }
|
||||||
} = item
|
} = item
|
||||||
if (children) {
|
if (children) {
|
||||||
let listData = children
|
const addUserItem = {
|
||||||
|
data: { name: 'isAddUser' },
|
||||||
|
icon: '/TUIKit/assets/icon/user-add.svg',
|
||||||
|
text: '添加好友',
|
||||||
|
listener: {
|
||||||
|
onClicked: () => {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let listData = [
|
||||||
|
addUserItem,
|
||||||
|
...children.filter(c => c.data.name !== 'isC2C')
|
||||||
|
]
|
||||||
|
|
||||||
// #ifdef APP-PLUS
|
// #ifdef APP-PLUS
|
||||||
// 扫一扫
|
// 扫一扫
|
||||||
@@ -110,9 +133,11 @@
|
|||||||
}
|
}
|
||||||
listData = [scanItem, ...listData]
|
listData = [scanItem, ...listData]
|
||||||
// #endif
|
// #endif
|
||||||
|
|
||||||
showChildren.value = showChildren.value.length > 0 ? [] : listData
|
showChildren.value = showChildren.value.length > 0 ? [] : listData
|
||||||
} else {
|
} else {
|
||||||
if (item.data.name === 'isScan') {
|
if (item.data.name === 'isScan') {
|
||||||
|
// 扫一扫
|
||||||
uni.scanCode({
|
uni.scanCode({
|
||||||
onlyFromCamera: false,
|
onlyFromCamera: false,
|
||||||
scanType: ['qrCode'],
|
scanType: ['qrCode'],
|
||||||
@@ -120,6 +145,9 @@
|
|||||||
navigateTo(res.result)
|
navigateTo(res.result)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
} else if (item.data.name === 'isAddUser') {
|
||||||
|
console.log('添加好友')
|
||||||
|
showDialog('提示', '开发中...')
|
||||||
} else {
|
} else {
|
||||||
listener.onClicked(item)
|
listener.onClicked(item)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<template>
|
<template>
|
||||||
<div ref="conversationListInnerDomRef" class="tui-conversation-list">
|
<view ref="conversationListInnerDomRef" class="tui-conversation-list">
|
||||||
<ActionsMenu
|
<ActionsMenu
|
||||||
v-if="isShowOverlay"
|
v-if="isShowOverlay"
|
||||||
:selectedConversation="currentConversation"
|
:selectedConversation="currentConversation"
|
||||||
@@ -7,11 +7,35 @@
|
|||||||
:selectedConversationDomRect="currentConversationDomRect"
|
:selectedConversationDomRect="currentConversationDomRect"
|
||||||
@closeConversationActionMenu="closeConversationActionMenu"
|
@closeConversationActionMenu="closeConversationActionMenu"
|
||||||
/>
|
/>
|
||||||
<cb-empty
|
<!-- <cb-empty
|
||||||
v-if="conversationList.length === 0"
|
v-if="conversationList.length === 0"
|
||||||
name="您还没有好友"
|
name="您还没有好友"
|
||||||
></cb-empty>
|
></cb-empty> -->
|
||||||
<div
|
<view
|
||||||
|
class="tui-conversation-item"
|
||||||
|
@click="navigateTo('/pages/my-index/set-up/message/index')"
|
||||||
|
>
|
||||||
|
<aside class="left">
|
||||||
|
<Avatar url="/static/images/message.svg" size="40px" />
|
||||||
|
<!-- 通知数量 -->
|
||||||
|
<!-- <span class="num">2</span> -->
|
||||||
|
<!-- <span class="num-notify" /> -->
|
||||||
|
</aside>
|
||||||
|
<view class="content">
|
||||||
|
<view class="content-header">
|
||||||
|
<view class="content-header-label">
|
||||||
|
<text class="name">消息通知</text>
|
||||||
|
</view>
|
||||||
|
<view class="middle-box">
|
||||||
|
<div class="middle-box-content">[系统消息]</div>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- <view class="content-footer">
|
||||||
|
<span class="time">20秒前</span>
|
||||||
|
</view> -->
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view
|
||||||
v-for="(conversation, index) in conversationList"
|
v-for="(conversation, index) in conversationList"
|
||||||
:id="`convlistitem-${index}`"
|
:id="`convlistitem-${index}`"
|
||||||
:key="index"
|
:key="index"
|
||||||
@@ -73,17 +97,17 @@
|
|||||||
class="num-notify"
|
class="num-notify"
|
||||||
/>
|
/>
|
||||||
</aside>
|
</aside>
|
||||||
<div class="content">
|
<view class="content">
|
||||||
<div class="content-header">
|
<view class="content-header">
|
||||||
<label class="content-header-label">
|
<label class="content-header-label">
|
||||||
<p class="name">{{ conversation.getShowName() }}</p>
|
<p class="name">{{ conversation.getShowName() }}</p>
|
||||||
</label>
|
</label>
|
||||||
<div v-if="isRedEnvelope(conversation)" class="middle-box">
|
<view v-if="isRedEnvelope(conversation)" class="middle-box">
|
||||||
<div class="middle-box-content">
|
<div class="middle-box-content">
|
||||||
{{ redEnvelopeText(conversation) }}
|
{{ redEnvelopeText(conversation) }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</view>
|
||||||
<div v-else class="middle-box">
|
<view v-else class="middle-box">
|
||||||
<span
|
<span
|
||||||
v-if="
|
v-if="
|
||||||
conversation.draftText &&
|
conversation.draftText &&
|
||||||
@@ -103,12 +127,12 @@
|
|||||||
>
|
>
|
||||||
{{ conversation.getGroupAtInfo() }}
|
{{ conversation.getGroupAtInfo() }}
|
||||||
</span>
|
</span>
|
||||||
<div class="middle-box-content">
|
<view class="middle-box-content">
|
||||||
{{ conversation.getLastMessage('text') }}
|
{{ conversation.getLastMessage('text') }}
|
||||||
</div>
|
</view>
|
||||||
</div>
|
</view>
|
||||||
</div>
|
</view>
|
||||||
<div class="content-footer">
|
<view class="content-footer">
|
||||||
<span class="time">
|
<span class="time">
|
||||||
{{ conversation.getLastMessage('time') }}
|
{{ conversation.getLastMessage('time') }}
|
||||||
</span>
|
</span>
|
||||||
@@ -117,11 +141,11 @@
|
|||||||
:file="muteIcon"
|
:file="muteIcon"
|
||||||
size="16px"
|
size="16px"
|
||||||
/>
|
/>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</view>
|
||||||
</div>
|
</view>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
@@ -158,6 +182,7 @@
|
|||||||
isMobile
|
isMobile
|
||||||
} from '../../../utils/env'
|
} from '../../../utils/env'
|
||||||
import { CHAT_MSG_CUSTOM_TYPE } from '../../../constant'
|
import { CHAT_MSG_CUSTOM_TYPE } from '../../../constant'
|
||||||
|
import { navigateTo } from '../../../../utils/router'
|
||||||
|
|
||||||
const emits = defineEmits(['handleSwitchConversation', 'getPassingRef'])
|
const emits = defineEmits(['handleSwitchConversation', 'getPassingRef'])
|
||||||
const currentConversation = ref<IConversationModel>()
|
const currentConversation = ref<IConversationModel>()
|
||||||
@@ -326,7 +351,10 @@
|
|||||||
|
|
||||||
/** 是否红包 */
|
/** 是否红包 */
|
||||||
const isRedEnvelope = (item: IConversationModel) => {
|
const isRedEnvelope = (item: IConversationModel) => {
|
||||||
if (item?.lastMessage?.payload?.data) {
|
if (
|
||||||
|
item?.lastMessage?.payload?.data &&
|
||||||
|
item?.lastMessage?.type === 'TIMCustomElem'
|
||||||
|
) {
|
||||||
const businessID = JSON?.parse(
|
const businessID = JSON?.parse(
|
||||||
item?.lastMessage?.payload?.data
|
item?.lastMessage?.payload?.data
|
||||||
)?.businessID
|
)?.businessID
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
@touchstart="handleTouchStart"
|
@touchstart="handleTouchStart"
|
||||||
@touchend="handleTouchEnd"
|
@touchend="handleTouchEnd"
|
||||||
>
|
>
|
||||||
<ConversationHeader>
|
<ConversationHeader :topCount="totalUnreadCount">
|
||||||
<TUISearch searchType="global" />
|
<TUISearch searchType="global" />
|
||||||
</ConversationHeader>
|
</ConversationHeader>
|
||||||
<ConversationNetwork />
|
<ConversationNetwork />
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
import ConversationList from './conversation-list/index.vue'
|
import ConversationList from './conversation-list/index.vue'
|
||||||
import ConversationHeader from './conversation-header/index.vue'
|
import ConversationHeader from './conversation-header/index.vue'
|
||||||
import ConversationNetwork from './conversation-network/index.vue'
|
import ConversationNetwork from './conversation-network/index.vue'
|
||||||
import { onHide } from '@dcloudio/uni-app'
|
import { onHide, onShow } from '@dcloudio/uni-app'
|
||||||
// #ifdef MP-WEIXIN
|
// #ifdef MP-WEIXIN
|
||||||
// uniapp packaged mini-programs are integrated by default, and the default initialization entry file is imported here
|
// uniapp packaged mini-programs are integrated by default, and the default initialization entry file is imported here
|
||||||
// TUIChatKit init needs to be encapsulated because uni vue2 will report an error when compiling H5 directly through conditional compilation
|
// TUIChatKit init needs to be encapsulated because uni vue2 will report an error when compiling H5 directly through conditional compilation
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
const emits = defineEmits(['handleSwitchConversation'])
|
const emits = defineEmits(['handleSwitchConversation'])
|
||||||
|
|
||||||
const totalUnreadCount = ref(0)
|
const totalUnreadCount = ref('')
|
||||||
const headerRef = ref<typeof ConversationHeader>()
|
const headerRef = ref<typeof ConversationHeader>()
|
||||||
const conversationListDomRef = ref<typeof ConversationList>()
|
const conversationListDomRef = ref<typeof ConversationList>()
|
||||||
const touchX = ref<number>(0)
|
const touchX = ref<number>(0)
|
||||||
@@ -117,24 +117,24 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TUIStore.watch(StoreName.CONV, {
|
// TUIStore.watch(StoreName.CONV, {
|
||||||
totalUnreadCount: (count: number) => {
|
// totalUnreadCount: (count: number) => {
|
||||||
totalUnreadCount.value = count
|
// totalUnreadCount.value = count
|
||||||
const tabBarIndex = getTabBarIndex() ?? -1
|
// const tabBarIndex = getTabBarIndex() ?? -1
|
||||||
if (tabBarIndex >= 0) {
|
// if (tabBarIndex >= 0) {
|
||||||
if (count > 0) {
|
// if (count > 0) {
|
||||||
uni.setTabBarBadge({
|
// uni.setTabBarBadge({
|
||||||
index: tabBarIndex,
|
// index: tabBarIndex,
|
||||||
text: count > 99 ? '99+' : count.toString()
|
// text: count > 99 ? '99+' : count.toString()
|
||||||
})
|
// })
|
||||||
} else {
|
// } else {
|
||||||
uni.removeTabBarBadge({
|
// uni.removeTabBarBadge({
|
||||||
index: tabBarIndex
|
// index: tabBarIndex
|
||||||
})
|
// })
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
})
|
// })
|
||||||
|
|
||||||
TUIStore.watch(StoreName.CUSTOM, {
|
TUIStore.watch(StoreName.CUSTOM, {
|
||||||
isShowConversationHeader: (showStatus: boolean) => {
|
isShowConversationHeader: (showStatus: boolean) => {
|
||||||
@@ -198,6 +198,25 @@
|
|||||||
const getPassingRef = ref => {
|
const getPassingRef = ref => {
|
||||||
ref.value = conversationListDomRef.value
|
ref.value = conversationListDomRef.value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onShow(async () => {
|
||||||
|
TUIStore.watch(StoreName.CONV, {
|
||||||
|
totalUnreadCount: (count: number) => {
|
||||||
|
if (count > 0) {
|
||||||
|
totalUnreadCount.value = count > 99 ? '99+' : String(count)
|
||||||
|
uni.setTabBarBadge({
|
||||||
|
index: 0,
|
||||||
|
text: count > 99 ? '99+' : count.toString()
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
totalUnreadCount.value = ''
|
||||||
|
uni.removeTabBarBadge({
|
||||||
|
index: 0
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped src="./style/index.scss"></style>
|
<style lang="scss" scoped src="./style/index.scss"></style>
|
||||||
|
|||||||
@@ -23,7 +23,10 @@
|
|||||||
</header>
|
</header>
|
||||||
<main class="main">
|
<main class="main">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<header class="transfer-header">
|
<header
|
||||||
|
v-if="(isPC && isTransferSearch) || (!isPC && isTransferSearch)"
|
||||||
|
class="transfer-header"
|
||||||
|
>
|
||||||
<!-- PC triggers @keyup.enter -->
|
<!-- PC triggers @keyup.enter -->
|
||||||
<input
|
<input
|
||||||
v-if="isPC && isTransferSearch"
|
v-if="isPC && isTransferSearch"
|
||||||
@@ -91,7 +94,11 @@
|
|||||||
item.avatar ||
|
item.avatar ||
|
||||||
'https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png'
|
'https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png'
|
||||||
"
|
"
|
||||||
onerror="this.onerror=null;this.src='https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png'"
|
onerror="
|
||||||
|
this.onerror = null
|
||||||
|
this.src =
|
||||||
|
'https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png'
|
||||||
|
"
|
||||||
/>
|
/>
|
||||||
<span class="name">{{ item.nick || item.userID }}</span>
|
<span class="name">{{ item.nick || item.userID }}</span>
|
||||||
<span v-if="item.isDisabled">
|
<span v-if="item.isDisabled">
|
||||||
@@ -138,7 +145,11 @@
|
|||||||
item.avatar ||
|
item.avatar ||
|
||||||
'https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png'
|
'https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png'
|
||||||
"
|
"
|
||||||
onerror="this.onerror=null;this.src='https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png'"
|
onerror="
|
||||||
|
this.onerror = null
|
||||||
|
this.src =
|
||||||
|
'https://web.sdk.qcloud.com/component/TUIKit/assets/avatar_21.png'
|
||||||
|
"
|
||||||
/>
|
/>
|
||||||
<span v-if="isPC" class="name">
|
<span v-if="isPC" class="name">
|
||||||
{{ item.nick || item.userID }}
|
{{ item.nick || item.userID }}
|
||||||
@@ -342,7 +353,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
.btn-confirm {
|
.btn-confirm {
|
||||||
background: #00D993;
|
background: #00d993;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
"name" : "密谈IM",
|
"name" : "密谈IM",
|
||||||
"appid" : "__UNI__9EFDC69",
|
"appid" : "__UNI__9EFDC69",
|
||||||
"description" : "",
|
"description" : "",
|
||||||
"versionName" : "1.0.4",
|
"versionName" : "1.0.5",
|
||||||
"versionCode" : 103,
|
"versionCode" : 104,
|
||||||
"transformPx" : false,
|
"transformPx" : false,
|
||||||
/* 5+App特有相关 */
|
/* 5+App特有相关 */
|
||||||
"app-plus" : {
|
"app-plus" : {
|
||||||
@@ -65,9 +65,9 @@
|
|||||||
"splashscreen" : {
|
"splashscreen" : {
|
||||||
"androidStyle" : "default",
|
"androidStyle" : "default",
|
||||||
"android" : {
|
"android" : {
|
||||||
"hdpi" : "D:/下载/聊天界面(其他功能).png",
|
"hdpi" : "static/qidong.png",
|
||||||
"xhdpi" : "D:/下载/聊天界面(其他功能).png",
|
"xhdpi" : "static/qidong.png",
|
||||||
"xxhdpi" : "D:/下载/聊天界面(其他功能).png"
|
"xxhdpi" : "static/qidong.png"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"icons" : {
|
"icons" : {
|
||||||
|
|||||||
@@ -16,12 +16,12 @@
|
|||||||
const { showDialog, showToast } = useUI()
|
const { showDialog, showToast } = useUI()
|
||||||
|
|
||||||
const placeholderStyle = `font-family: PingFang SC, PingFang SC;
|
const placeholderStyle = `font-family: PingFang SC, PingFang SC;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
color: #999999;
|
color: #999999;
|
||||||
line-height: 40rpx;
|
line-height: 40rpx;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
text-transform: none;`
|
text-transform: none;`
|
||||||
const MAX_SCROLL = 446
|
const MAX_SCROLL = 446
|
||||||
|
|
||||||
const paging = ref(null)
|
const paging = ref(null)
|
||||||
@@ -39,6 +39,7 @@ text-transform: none;`
|
|||||||
})
|
})
|
||||||
const contentData = ref('')
|
const contentData = ref('')
|
||||||
const inputId = ref('')
|
const inputId = ref('')
|
||||||
|
const isType = ref('')
|
||||||
|
|
||||||
const onScroll = e => {
|
const onScroll = e => {
|
||||||
cbNavBar.value?.updateScroll(e.detail.scrollTop)
|
cbNavBar.value?.updateScroll(e.detail.scrollTop)
|
||||||
@@ -56,7 +57,7 @@ text-transform: none;`
|
|||||||
const res = await getUserMomentsList({
|
const res = await getUserMomentsList({
|
||||||
pageNum,
|
pageNum,
|
||||||
pageSize,
|
pageSize,
|
||||||
targetUserId: userInfo.value.userId
|
targetUserId: isType.value == 1 ? userInfo.value.userId : ''
|
||||||
})
|
})
|
||||||
const list = res.rows.map(item => {
|
const list = res.rows.map(item => {
|
||||||
return {
|
return {
|
||||||
@@ -120,7 +121,10 @@ text-transform: none;`
|
|||||||
onShow(() => {
|
onShow(() => {
|
||||||
getData(1, formData.pageSize)
|
getData(1, formData.pageSize)
|
||||||
})
|
})
|
||||||
onLoad(async () => {})
|
|
||||||
|
onLoad(async e => {
|
||||||
|
isType.value = e?.type || ''
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@@ -187,11 +191,18 @@ text-transform: none;`
|
|||||||
<view v-if="!listLoading" class="dynamic-list" @click="closeComment">
|
<view v-if="!listLoading" class="dynamic-list" @click="closeComment">
|
||||||
<view v-for="item in dataList" :key="item.id" class="list">
|
<view v-for="item in dataList" :key="item.id" class="list">
|
||||||
<image
|
<image
|
||||||
|
v-if="item.avatar"
|
||||||
:src="item.avatar"
|
:src="item.avatar"
|
||||||
lazy-load
|
lazy-load
|
||||||
mode="aspectFill"
|
mode="aspectFill"
|
||||||
class="avatar"
|
class="avatar"
|
||||||
></image>
|
></image>
|
||||||
|
<view v-else class="avatar">
|
||||||
|
<uni-icons
|
||||||
|
type="contact-filled"
|
||||||
|
class="avatar-icon"
|
||||||
|
></uni-icons>
|
||||||
|
</view>
|
||||||
<view class="content">
|
<view class="content">
|
||||||
<text class="name">{{ item.userName }}</text>
|
<text class="name">{{ item.userName }}</text>
|
||||||
<text class="text">{{ item.content }}</text>
|
<text class="text">{{ item.content }}</text>
|
||||||
@@ -235,8 +246,8 @@ text-transform: none;`
|
|||||||
color="#747474"
|
color="#747474"
|
||||||
@click.stop="inputId = item.id"
|
@click.stop="inputId = item.id"
|
||||||
></uni-icons>
|
></uni-icons>
|
||||||
|
|
||||||
<uni-icons
|
<uni-icons
|
||||||
|
v-if="item.userId === userInfo.userId"
|
||||||
type="trash"
|
type="trash"
|
||||||
size="20"
|
size="20"
|
||||||
color="#d95d5d"
|
color="#d95d5d"
|
||||||
|
|||||||
@@ -87,16 +87,28 @@
|
|||||||
mode="heightFix"
|
mode="heightFix"
|
||||||
class="grade"
|
class="grade"
|
||||||
></image>
|
></image>
|
||||||
<text v-else class="item-text">1</text>
|
<text v-else class="item-text">{{ index + 1 }}</text>
|
||||||
</view>
|
</view>
|
||||||
</uni-col>
|
</uni-col>
|
||||||
<uni-col :span="12">
|
<uni-col :span="12">
|
||||||
<view class="table-name">
|
<view class="table-name">
|
||||||
<image
|
<image
|
||||||
:src="item.avatar || '/static/images/public/random2.png'"
|
v-if="item.avatar"
|
||||||
|
:src="item.avatar"
|
||||||
mode="aspectFill"
|
mode="aspectFill"
|
||||||
class="left-icon"
|
class="left-icon"
|
||||||
></image>
|
></image>
|
||||||
|
<view
|
||||||
|
v-else
|
||||||
|
style="
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
"
|
||||||
|
class="left-icon"
|
||||||
|
>
|
||||||
|
<uni-icons type="contact-filled" size="90rpx"></uni-icons>
|
||||||
|
</view>
|
||||||
<view class="name">
|
<view class="name">
|
||||||
<text>{{ item.userName }}</text>
|
<text>{{ item.userName }}</text>
|
||||||
<text>{{ item.mobile }}</text>
|
<text>{{ item.mobile }}</text>
|
||||||
@@ -119,7 +131,9 @@
|
|||||||
@import './styles/index.scss';
|
@import './styles/index.scss';
|
||||||
|
|
||||||
.table-box {
|
.table-box {
|
||||||
font-family: PingFang SC, PingFang SC;
|
font-family:
|
||||||
|
PingFang SC,
|
||||||
|
PingFang SC;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
text-transform: none;
|
text-transform: none;
|
||||||
.grade-box {
|
.grade-box {
|
||||||
|
|||||||
@@ -15,7 +15,9 @@
|
|||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
.name {
|
.name {
|
||||||
margin-top: 30rpx;
|
margin-top: 30rpx;
|
||||||
font-family: PingFang SC, PingFang SC;
|
font-family:
|
||||||
|
PingFang SC,
|
||||||
|
PingFang SC;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
font-size: 32rpx;
|
font-size: 32rpx;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
@@ -44,10 +46,18 @@
|
|||||||
border-radius: 96rpx;
|
border-radius: 96rpx;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
margin-right: 32rpx;
|
margin-right: 32rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
.avatar-icon {
|
||||||
|
font-size: 130rpx !important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.content {
|
.content {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
font-family: PingFang SC, PingFang SC;
|
font-family:
|
||||||
|
PingFang SC,
|
||||||
|
PingFang SC;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
text-transform: none;
|
text-transform: none;
|
||||||
|
|||||||
@@ -94,7 +94,7 @@
|
|||||||
<text>{{ viewData.minPrice }}</text>
|
<text>{{ viewData.minPrice }}</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="name-box">
|
<view class="name-box">
|
||||||
<text>拼单数量:12505件</text>
|
<text>拼单数量:{{ viewData.salesCount }}件</text>
|
||||||
<text>好评率:99%</text>
|
<text>好评率:99%</text>
|
||||||
</view>
|
</view>
|
||||||
<!-- 拼单量 -->
|
<!-- 拼单量 -->
|
||||||
@@ -186,7 +186,9 @@
|
|||||||
}
|
}
|
||||||
.detail-box {
|
.detail-box {
|
||||||
padding: 0 58rpx 150rpx;
|
padding: 0 58rpx 150rpx;
|
||||||
font-family: PingFang SC, PingFang SC;
|
font-family:
|
||||||
|
PingFang SC,
|
||||||
|
PingFang SC;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
text-transform: none;
|
text-transform: none;
|
||||||
.title {
|
.title {
|
||||||
@@ -294,7 +296,9 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
font-family: PingFang SC, PingFang SC;
|
font-family:
|
||||||
|
PingFang SC,
|
||||||
|
PingFang SC;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
text-transform: none;
|
text-transform: none;
|
||||||
|
|||||||
@@ -19,11 +19,11 @@
|
|||||||
icon: 'meeting',
|
icon: 'meeting',
|
||||||
url: '/pages/my-index/meeting-record/index'
|
url: '/pages/my-index/meeting-record/index'
|
||||||
},
|
},
|
||||||
// {
|
{
|
||||||
// name: '我的朋友圈',
|
name: '我的朋友圈',
|
||||||
// icon: 'circle',
|
icon: 'circle',
|
||||||
// url: '/pages/discover/dynamic/dynamic'
|
url: '/pages/discover/dynamic/dynamic'
|
||||||
// },
|
},
|
||||||
// {
|
// {
|
||||||
// name: '我的收藏',
|
// name: '我的收藏',
|
||||||
// icon: 'collection',
|
// icon: 'collection',
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
navigateTo(item.url)
|
navigateTo(item.url, item.icon === 'circle' ? { type: 1 } : null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,7 +174,9 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
.name {
|
.name {
|
||||||
font-family: PingFang SC, PingFang SC;
|
font-family:
|
||||||
|
PingFang SC,
|
||||||
|
PingFang SC;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
font-size: 32rpx;
|
font-size: 32rpx;
|
||||||
color: #333333;
|
color: #333333;
|
||||||
@@ -222,7 +224,9 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
text {
|
text {
|
||||||
font-family: PingFang SC, PingFang SC;
|
font-family:
|
||||||
|
PingFang SC,
|
||||||
|
PingFang SC;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
@@ -243,7 +247,9 @@
|
|||||||
height: 64rpx;
|
height: 64rpx;
|
||||||
line-height: 64rpx;
|
line-height: 64rpx;
|
||||||
border-radius: 100rpx 100rpx 100rpx 100rpx;
|
border-radius: 100rpx 100rpx 100rpx 100rpx;
|
||||||
font-family: PingFang SC, PingFang SC;
|
font-family:
|
||||||
|
PingFang SC,
|
||||||
|
PingFang SC;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
@@ -278,7 +284,9 @@
|
|||||||
}
|
}
|
||||||
.text-box {
|
.text-box {
|
||||||
margin-left: 16rpx;
|
margin-left: 16rpx;
|
||||||
font-family: PingFang SC, PingFang SC;
|
font-family:
|
||||||
|
PingFang SC,
|
||||||
|
PingFang SC;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
font-size: 32rpx;
|
font-size: 32rpx;
|
||||||
color: #333333;
|
color: #333333;
|
||||||
|
|||||||
1
static/images/message.svg
Normal file
1
static/images/message.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="40" height="40" viewBox="0 0 40 40"><defs><clipPath id="master_svg0_0_8538"><rect x="0" y="0" width="40" height="40" rx="20"/></clipPath></defs><g clip-path="url(#master_svg0_0_8538)"><rect x="0" y="0" width="40" height="40" rx="20" fill="#24DB5A" fill-opacity="1"/><path d="M21.334798,30.40906C21.334798,32.987661,19.359054,31.656483,19.359054,31.656483C19.359054,31.656483,10.8031273,24.450842,10.8031273,24.450842C10.8031273,24.450842,9.4817533,24.450842,9.4817533,24.450842C8.66312957,24.450842,8,23.774912999999998,8,22.940820000000002C8,22.940820000000002,8,16.9016905,8,16.9016905C8,16.0675697,8.66315687,15.3918061,9.4817533,15.3918061C9.4817533,15.3918061,11.0623212,15.3918061,11.0623212,15.3918061C11.0623212,15.3918061,19.359054,8.34626773,19.359054,8.34626773C19.359054,8.34626773,21.334879,7.00421751,21.334879,9.6042912C21.334879,9.6042912,21.334879,30.40906,21.334879,30.40906C21.334879,30.40906,21.334798,30.40906,21.334798,30.40906ZM25.77951,23.947229C28.249271,21.934359,28.084391,18.117702,25.77951,16.398241C24.874434,15.853214699999999,24.298166,17.6565647,24.298166,17.6565647C24.298166,17.6565647,26.602774,20.550376999999997,24.298166,22.689205C23.845192,23.276436,24.709553,24.49272,25.77951,23.947229ZM27.014431,12.1207752C26.685268,11.8269005,25.080303,12.9175267,26.026751,13.8819485C30.92433,18.034112,31.00639,21.934386,26.026751,26.211988C25.285601,26.925041,26.273281,28.267365,27.014431,27.973352C33.804905000000005,24.827787,33.517247999999995,15.0563273,27.014431,12.1207752Z" fill="#FFFFFF" fill-opacity="1"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 1.6 KiB |
BIN
static/qidong.png
Normal file
BIN
static/qidong.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 507 KiB |
Reference in New Issue
Block a user