oa_app仓库初始化
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
<template>
|
||||
<view class="page">
|
||||
<fy-header title="查找聊天记录" back />
|
||||
<view class="search">
|
||||
<input v-model="q" placeholder="搜索文字 / 文件名" confirm-type="search" focus />
|
||||
</view>
|
||||
<view v-if="!q.trim()" class="empty">输入关键字查找本会话记录</view>
|
||||
<view v-else-if="!hits.length" class="empty">没有找到相关记录</view>
|
||||
<view v-for="m in hits" :key="m.id" class="item" @click="open(m)">
|
||||
<text class="who">{{ who(m) }} · {{ timeOf(m) }}</text>
|
||||
<text class="txt">{{ preview(m) }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import FyHeader from '../../components/fy-header.vue'
|
||||
import { store, previewOf } from '../../utils/store.js'
|
||||
import { fmtTime } from '../../utils/format.js'
|
||||
|
||||
export default {
|
||||
components: { FyHeader },
|
||||
data() {
|
||||
return { sid: '', q: '' }
|
||||
},
|
||||
computed: {
|
||||
hits() {
|
||||
const q = this.q.trim()
|
||||
const c = store.findConv(this.sid)
|
||||
if (!q || !c) return []
|
||||
return (c.messages || []).filter((m) => {
|
||||
if (m.recalled) return false
|
||||
return String(m.text || '') .indexOf(q) >= 0 || String(m.fileName || '').indexOf(q) >= 0
|
||||
}).slice(-80).reverse()
|
||||
}
|
||||
},
|
||||
onLoad(q) {
|
||||
this.sid = decodeURIComponent(q.sid || '')
|
||||
},
|
||||
methods: {
|
||||
preview(m) { return previewOf(m) },
|
||||
timeOf(m) { return fmtTime(m.time) },
|
||||
who(m) {
|
||||
if (m.mine) return (store.me && store.me.name) || '我'
|
||||
const p = store.person(m.fromId)
|
||||
const c = store.findConv(this.sid)
|
||||
return (p && p.name) || (c && c.name) || '同事'
|
||||
},
|
||||
open(m) {
|
||||
if (m.kind === 'image' && m.fileUrl) {
|
||||
uni.previewImage({ urls: [m.fileUrl], current: m.fileUrl })
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.search { padding: 16rpx 24rpx; }
|
||||
.search input { height: 72rpx; background: #ededed; border-radius: 8rpx; padding: 0 24rpx; }
|
||||
.empty { text-align: center; color: #888; padding: 80rpx 24rpx; font-size: 26rpx; }
|
||||
.item { margin: 0 24rpx; padding: 20rpx 0; border-bottom: 1rpx solid #f0f0f0; }
|
||||
.who { display: block; font-size: 22rpx; color: #888; }
|
||||
.txt { display: block; font-size: 28rpx; margin-top: 6rpx; }
|
||||
</style>
|
||||
Reference in New Issue
Block a user