|
@@ -1,5 +1,5 @@
|
|
|
<template>
|
|
|
- <div class="message-bg" v-if="list.length">
|
|
|
+ <div v-if="list.length" class="message-bg">
|
|
|
<div class="message-main clickable">
|
|
|
<!-- <div class="card-title">
|
|
|
<span>最新消息</span>
|
|
@@ -10,27 +10,27 @@
|
|
|
<AppIcon name="youbian" size="14" color="#c0c4cc" />
|
|
|
</div>
|
|
|
</div> -->
|
|
|
- <div class="message-card" ref="msgCard">
|
|
|
+ <div ref="msgCard" class="message-card">
|
|
|
<div
|
|
|
class="message-group"
|
|
|
:style="{
|
|
|
transform: `translateY(-${offsetHeight}px)`,
|
|
|
- height: groupHeight + 'px'
|
|
|
+ height: `${groupHeight}px`,
|
|
|
}"
|
|
|
>
|
|
|
<div
|
|
|
- class="message-item"
|
|
|
v-for="(item, index) in list"
|
|
|
:key="index"
|
|
|
- :class="{ visited: item.visited }"
|
|
|
ref="listItem"
|
|
|
- @click="goMessage(item)"
|
|
|
v-bound-phone="bindPhoneGoMessage(item)"
|
|
|
+ class="message-item"
|
|
|
+ :class="{ visited: item.visited }"
|
|
|
+ @click="goMessage(item)"
|
|
|
>
|
|
|
<!-- <span class="dot"></span> -->
|
|
|
<van-cell class="message-item-cell" is-link>
|
|
|
<template #title>
|
|
|
- <span class="icon iconfont icon-nav_un_message"></span>
|
|
|
+ <span class="icon iconfont icon-nav_un_message" />
|
|
|
<span class="type">{{ item.type }}</span>
|
|
|
<span class="flex-1 title van-ellipsis">{{ item.title }}</span>
|
|
|
</template>
|
|
@@ -48,23 +48,22 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import { Cell } from 'vant'
|
|
|
+import { mapGetters } from 'vuex'
|
|
|
import {
|
|
|
- ajaxMessageList,
|
|
|
ajaxMarkRead,
|
|
|
+ ajaxMessageList,
|
|
|
ajaxMessageOpenLog
|
|
|
} from '@/api/modules/message'
|
|
|
import { AppIcon } from '@/ui'
|
|
|
-import { Cell } from 'vant'
|
|
|
import { dateMatter } from '@/utils/date'
|
|
|
import { appCallReloadTab } from '@/utils/callFn/appFn'
|
|
|
-import { callChangeTab, openLinkOfOther } from '@/utils'
|
|
|
-import { mapGetters } from 'vuex'
|
|
|
-import { vw2px, px2viewport } from '@/utils'
|
|
|
+import { callChangeTab, openLinkOfOther, px2viewport, vw2px } from '@/utils'
|
|
|
|
|
|
// const MSG_TYPE = ['活动通知', '服务通知', '订阅消息', '项目动态', '企业动态', '分析报告', '系统通知', '剑鱼学堂', '商机情报']
|
|
|
|
|
|
export default {
|
|
|
- name: 'message-card',
|
|
|
+ name: 'MessageCard',
|
|
|
components: {
|
|
|
[AppIcon.name]: AppIcon,
|
|
|
[Cell.name]: Cell
|
|
@@ -97,7 +96,8 @@ export default {
|
|
|
const height = !this.msgData.unread
|
|
|
if (height) {
|
|
|
return 70 / 3.75
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
return 76 / 3.75
|
|
|
}
|
|
|
}
|
|
@@ -120,7 +120,7 @@ export default {
|
|
|
methods: {
|
|
|
decimalValue(numberValue) {
|
|
|
// 将数值转换为字符串并截取前两位小数
|
|
|
- const decimalValue = numberValue.toString().match(/^\d+(?:\.\d{0,1})?/)
|
|
|
+ const decimalValue = numberValue.toString().match(/^\d+(?:\.\d?)?/)
|
|
|
// 返回处理后的数值字符串
|
|
|
return decimalValue ? decimalValue[0] : ''
|
|
|
},
|
|
@@ -131,7 +131,8 @@ export default {
|
|
|
let listItem
|
|
|
if (this.$refs.listItem) {
|
|
|
listItem = this.$refs.listItem[1] // 列表项高度
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
listItem = {
|
|
|
offsetHeight: offsetYPx
|
|
|
}
|
|
@@ -163,7 +164,7 @@ export default {
|
|
|
}
|
|
|
this.list = [].concat(
|
|
|
data.map((v) => {
|
|
|
- const MSG_TYPE = column.filter((m) => m.msg_type === v.msg_type)
|
|
|
+ const MSG_TYPE = column.filter(m => m.msg_type === v.msg_type)
|
|
|
return {
|
|
|
title: v.title,
|
|
|
visited: v.isRead === 1,
|
|
@@ -176,13 +177,24 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
goVisited(item) {
|
|
|
- this.$router.push({
|
|
|
- path: '/message/msgDetail',
|
|
|
- query: {
|
|
|
- id: Number(item.data.id),
|
|
|
- msgLogId: Number(item.data.msgLogId)
|
|
|
- }
|
|
|
- })
|
|
|
+ if (item.realType === 14) {
|
|
|
+ this.$router.push({
|
|
|
+ path: '/message/materialDetail',
|
|
|
+ query: {
|
|
|
+ id: Number(item.data.id),
|
|
|
+ msgLogId: Number(item.data.msgLogId)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ this.$router.push({
|
|
|
+ path: '/message/msgDetail',
|
|
|
+ query: {
|
|
|
+ id: Number(item.data.id),
|
|
|
+ msgLogId: Number(item.data.msgLogId)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
},
|
|
|
goMore() {
|
|
|
callChangeTab('message', this.$router)
|
|
@@ -201,7 +213,8 @@ export default {
|
|
|
this.onClickMsg(item.data.msgLogId)
|
|
|
if (item.visited) {
|
|
|
return this.goVisited(item)
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
this.changeMessageStatus(item)
|
|
|
}
|
|
|
},
|
|
@@ -222,18 +235,21 @@ export default {
|
|
|
if (inWX) {
|
|
|
if (url.weChatUrl) {
|
|
|
this.wxLocationTo(url.weChatUrl)
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
this.goVisited(item)
|
|
|
}
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
let toLink = inIOS ? url.iosUrl : url.androidUrl
|
|
|
if (toLink) {
|
|
|
const hasHttp = /^http(s)?:\/\//.test(toLink)
|
|
|
if (!hasHttp && toLink[0] !== '/') {
|
|
|
- toLink = '/' + toLink
|
|
|
+ toLink = `/${toLink}`
|
|
|
}
|
|
|
openLinkOfOther(toLink)
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
this.goVisited(item)
|
|
|
}
|
|
|
}
|
|
@@ -243,7 +259,8 @@ export default {
|
|
|
// 链接中如果是www.jianyu360.cn域名,微信中会唤起app,该用window.open
|
|
|
// window.open(url)
|
|
|
// window.open在安卓正常,但是ios无法跳转。改为location.href跳转
|
|
|
- if (!url) return
|
|
|
+ if (!url)
|
|
|
+ return
|
|
|
location.href = url
|
|
|
},
|
|
|
bindPhoneGoMessage(item) {
|