This commit is contained in:
liuye
2024-03-11 12:03:12 +08:00
6 changed files with 1196 additions and 1263 deletions

View File

@@ -2,8 +2,9 @@
export default { export default {
onLaunch() { onLaunch() {
if (!wx.getUpdateManager) return if (uni.getUpdateManager) {
const updateManager = wx.getUpdateManager() const updateManager = uni.getUpdateManager()
if (updateManager) {
updateManager.onUpdateReady(() => { updateManager.onUpdateReady(() => {
this.$dialog.alert({ this.$dialog.alert({
title: '更新提示', title: '更新提示',
@@ -13,6 +14,8 @@ export default {
}).catch(() => { }).catch(() => {
}) })
}) })
}
}
}, },
} }
</script> </script>

View File

@@ -40,7 +40,10 @@ export const user = {
reject(res); reject(res);
} }
}, },
fail: () => resolve(dispatch("getCode", ++count)) fail: err => {
console.error(err)
resolve(dispatch("getCode", ++count))
}
}) })
}) })
}, },
@@ -97,23 +100,23 @@ export const user = {
uni.navigateTo({url: modulePath}); uni.navigateTo({url: modulePath});
} else if (checkType == 4) { } else if (checkType == 4) {
if (!token) { if (!token) {
return dispatch('autoLogin', { loginWay: 'qujing' }).then(() => dispatch('authCheck', { checkType, modulePath })); return dispatch('autoLogin', {loginWay: 'qujing'}).then(() => dispatch('authCheck', {checkType, modulePath}));
} }
if (!userInfo.areaId) { if (!userInfo.areaId) {
return uni.showModal({ return uni.showModal({
title: '温馨提示', title: '温馨提示',
content: '您只有完成信息认证后,才可进行相关操作。', content: '您只有完成信息认证后,才可进行相关操作。',
confirmText: '去认证', confirmText: '去认证',
success: (res)=> { success: (res) => {
if (res.confirm) { if (res.confirm) {
uni.reLaunch({ url: `/pages/AppMine/userInfo?isFromTabbar=1&path=/pages/AppHome/AppHome` }) uni.reLaunch({url: `/pages/AppMine/userInfo?isFromTabbar=1&path=/pages/AppHome/AppHome`})
} else if (res.cancel) { } else if (res.cancel) {
// 停留 // 停留
} }
} }
}) })
} }
uni.navigateTo({ url: modulePath }); uni.navigateTo({url: modulePath});
} }
} }
} }

View File

@@ -1,8 +1,8 @@
div<template> <template>
<div class="Detail" v-if="pageShow"> <div class="Detail" v-if="pageShow">
<div class="top"> <div class="top">
<div class="item-top"> <div class="item-top">
<image :src="info.createUserAvatar || 'https://cdn.cunwuyun.cn/wxmp/fengdu/avatar.png'" /> <image :src="info.createUserAvatar || 'https://cdn.cunwuyun.cn/wxmp/fengdu/avatar.png'"/>
<div class="right"> <div class="right">
<h3>{{ info.createUserName }}</h3> <h3>{{ info.createUserName }}</h3>
<span v-if="info.publishDepartName">{{ info.publishDepartName }}</span> <span v-if="info.publishDepartName">{{ info.publishDepartName }}</span>
@@ -24,7 +24,7 @@ div<template>
<div class="value">{{ info.integralTaskInfo.type == 1 ? '报名得积分' : '打卡得积分' }}</div> <div class="value">{{ info.integralTaskInfo.type == 1 ? '报名得积分' : '打卡得积分' }}</div>
</div> </div>
<div class="info-flex"> <div class="info-flex">
<div class="label"><img src="https://cdn.cunwuyun.cn/fengdu/time-icon.png" alt="">{{ info.integralTaskInfo.type == 1 ? '报名时间:' : '进场时间:'}}</div> <div class="label"><img src="https://cdn.cunwuyun.cn/fengdu/time-icon.png" alt="">{{ info.integralTaskInfo.type == 1 ? '报名时间:' : '进场时间:' }}</div>
<div class="value">{{ info.integralTaskInfo.intoBegintime }}{{ info.integralTaskInfo.intoEndtime }}</div> <div class="value">{{ info.integralTaskInfo.intoBegintime }}{{ info.integralTaskInfo.intoEndtime }}</div>
</div> </div>
<div class="info-flex" v-if="info.integralTaskInfo.type != 1"> <div class="info-flex" v-if="info.integralTaskInfo.type != 1">
@@ -34,12 +34,12 @@ div<template>
</div> </div>
<div class="item-imgs" v-if="info.files && info.files.length"> <div class="item-imgs" v-if="info.files && info.files.length">
<image mode="aspectFill" @click="previewImage(item.url, info.files)" v-for="(item, index) in info.files" :key="index" :src="item.url" /> <image mode="aspectFill" @click="previewImage(item.url, info.files)" v-for="(item, index) in info.files" :key="index" :src="item.url"/>
</div> </div>
<p>{{ info.createTime }}</p> <p>{{ info.createTime }}</p>
<div class="item-bottom"> <div class="item-bottom">
<button open-type="share"> <button open-type="share">
<image src="https://cdn.cunwuyun.cn/wxmp/fengdu/ic-zhuanfa.png" /> <image src="https://cdn.cunwuyun.cn/wxmp/fengdu/ic-zhuanfa.png"/>
<i>{{ info.sharedCount }}</i> <i>{{ info.sharedCount }}</i>
</button> </button>
<div> <div>
@@ -47,7 +47,7 @@ div<template>
<i>{{ info.appreciateCount }}</i> <i>{{ info.appreciateCount }}</i>
</div> </div>
<div> <div>
<image src="https://cdn.cunwuyun.cn/wxmp/fengdu/ic-pinglun.png" /> <image src="https://cdn.cunwuyun.cn/wxmp/fengdu/ic-pinglun.png"/>
<i>{{ info.commentCount }}</i> <i>{{ info.commentCount }}</i>
</div> </div>
</div> </div>
@@ -56,7 +56,7 @@ div<template>
<h2>评论</h2> <h2>评论</h2>
<div class="comment-wrapper"> <div class="comment-wrapper">
<div class="comment-item" v-for="(item, index) in list" :key="index"> <div class="comment-item" v-for="(item, index) in list" :key="index">
<image :src="item.createUserAvatar || 'https://cdn.cunwuyun.cn/wxmp/fengdu/avatar.png'" /> <image :src="item.createUserAvatar || 'https://cdn.cunwuyun.cn/wxmp/fengdu/avatar.png'"/>
<div class="right"> <div class="right">
<h3>{{ item.createUserName }}</h3> <h3>{{ item.createUserName }}</h3>
<p>{{ item.content }}</p> <p>{{ item.content }}</p>
@@ -66,7 +66,7 @@ div<template>
</div> </div>
<div class="replay-list" v-if="item.replyList.length"> <div class="replay-list" v-if="item.replyList.length">
<div class="replay-item" v-for="replay in item.replyList" :key="replay.id"> <div class="replay-item" v-for="replay in item.replyList" :key="replay.id">
<image :src="replay.createUserAvatar || 'https://cdn.cunwuyun.cn/wxmp/fengdu/avatar.png'" /> <image :src="replay.createUserAvatar || 'https://cdn.cunwuyun.cn/wxmp/fengdu/avatar.png'"/>
<div class="replay-item__right"> <div class="replay-item__right">
<div class="top"> <div class="top">
<div class="replay-left"> <div class="replay-left">
@@ -93,11 +93,11 @@ div<template>
<div class="popup"> <div class="popup">
<div class="popup-title"> <div class="popup-title">
<h2>请选择</h2> <h2>请选择</h2>
<image @click="isShow = false" src="https://cdn.cunwuyun.cn/wxmp/fengdu/ic-guanbi.png" /> <image @click="isShow = false" src="https://cdn.cunwuyun.cn/wxmp/fengdu/ic-guanbi.png"/>
</div> </div>
<div class="popup-list"> <div class="popup-list">
<button open-type="share"> <button open-type="share">
<image src="https://cdn.cunwuyun.cn/wxmp/fengdu/ic-wechat.png" /> <image src="https://cdn.cunwuyun.cn/wxmp/fengdu/ic-wechat.png"/>
<span>微信</span> <span>微信</span>
</button> </button>
<!-- <button open-type="share"> <!-- <button open-type="share">
@@ -115,7 +115,7 @@ div<template>
<div class="popup"> <div class="popup">
<div class="popup-title"> <div class="popup-title">
<h2>评论</h2> <h2>评论</h2>
<image @click="isShowComment = false, focus = false" src="https://cdn.cunwuyun.cn/wxmp/fengdu/ic-guanbi.png" /> <image @click="isShowComment = false,focus = false" src="https://cdn.cunwuyun.cn/wxmp/fengdu/ic-guanbi.png"/>
</div> </div>
<div class="form"> <div class="form">
<textarea :maxlength="100" :cursor-spacing="10" :placeholder="commentId ? '回复' + replyName : '请输入评论内容'" :focus="focus" v-model="content"></textarea> <textarea :maxlength="100" :cursor-spacing="10" :placeholder="commentId ? '回复' + replyName : '请输入评论内容'" :focus="focus" v-model="content"></textarea>
@@ -129,12 +129,12 @@ div<template>
</template> </template>
<script> <script>
import { mapActions, mapState } from 'vuex' import {mapActions, mapState} from 'vuex'
export default {
export default {
name: 'Detail', name: 'Detail',
appName: '详情', appName: '详情',
data() {
data () {
return { return {
id: '', id: '',
isShow: false, isShow: false,
@@ -153,32 +153,23 @@ div<template>
replyName: '' replyName: ''
} }
}, },
computed: { computed: {
...mapState(['user', 'token']) ...mapState(['user', 'token'])
}, },
onLoad(query) {
onLoad (query) {
this.isFrom = query.isFrom this.isFrom = query.isFrom
this.id = query.id this.id = query.id
this.themeId = query.themeId this.themeId = query.themeId
this.name = query.name || '' this.name = query.name || ''
this.$loading() this.$loading();
if (!this.token) { (this.token ? Promise.resolve() : this.autoLogin()).finally(() => Promise.all([
this.autoLogin().then(() => { this.getInfo(query.id),
this.getInfo(query.id)
this.getCommontList(query.id) this.getCommontList(query.id)
}) ])).finally(() => this.$hideLoading())
} else {
this.getInfo(query.id)
this.getCommontList(query.id)
}
}, },
methods: { methods: {
...mapActions(['autoLogin']), ...mapActions(['autoLogin']),
toTask() { toTask() {
if (!this.user.areaId) { if (!this.user.areaId) {
this.$dialog.confirm({ this.$dialog.confirm({
@@ -191,15 +182,13 @@ div<template>
} }
this.$linkTo(`/mods/AppNewFarmerBank/taskDetail?id=${this.info.integralTaskId}`) this.$linkTo(`/mods/AppNewFarmerBank/taskDetail?id=${this.info.integralTaskId}`)
}, },
previewImage(url, files) {
previewImage (url, files) {
uni.previewImage({ uni.previewImage({
current: url, current: url,
urls: files.map(v => v.url) urls: files.map(v => v.url)
}) })
}, },
showComment() {
showComment () {
if (!this.user.areaId) { if (!this.user.areaId) {
this.$dialog.confirm({ this.$dialog.confirm({
content: '您只有完成信息认证后,才可进行相关操作。', content: '您只有完成信息认证后,才可进行相关操作。',
@@ -222,8 +211,7 @@ div<template>
}, 500) }, 500)
}) })
}, },
replay(item) {
replay (item) {
if (!this.user.areaId) { if (!this.user.areaId) {
this.$dialog.confirm({ this.$dialog.confirm({
content: '您只有完成信息认证后,才可进行相关操作。', content: '您只有完成信息认证后,才可进行相关操作。',
@@ -247,21 +235,17 @@ div<template>
}, 500) }, 500)
}) })
}, },
getInfo(id) {
getInfo (id) { return this.$instance.post(`/app/appneighborhoodassistance/queryDetailById?id=${id}`, null, {
this.$instance.post(`/app/appneighborhoodassistance/queryDetailById?id=${id}`, null, { withoutToken: !this.token,
withoutToken: this.token ? false : true,
}).then(res => { }).then(res => {
if (res.code === 0) { if (res?.data) {
this.info = res.data this.info = res.data
this.pageShow = true return this.pageShow = true
} }
uni.hideLoading()
}) })
}, },
reciate() {
reciate () {
this.$loading() this.$loading()
this.$instance.post(`/app/appneighborhoodassistance/appreciate?id=${this.id}`).then(res => { this.$instance.post(`/app/appneighborhoodassistance/appreciate?id=${this.id}`).then(res => {
if (res.code === 0) { if (res.code === 0) {
@@ -272,12 +256,10 @@ div<template>
uni.hideLoading() uni.hideLoading()
}) })
}, },
send() {
send () {
if (!this.content) { if (!this.content) {
return this.$toast('内容不能为空') return this.$toast('内容不能为空')
} }
this.$loading() this.$loading()
this.$instance.post(!this.commentId ? `/app/appneighborhoodassistance/addComment` : `/app/appneighborhoodassistance/addReply`, { this.$instance.post(!this.commentId ? `/app/appneighborhoodassistance/addComment` : `/app/appneighborhoodassistance/addReply`, {
content: this.content, content: this.content,
@@ -285,7 +267,6 @@ div<template>
type: this.commentId ? 1 : 0, type: this.commentId ? 1 : 0,
commentId: this.commentId || '' commentId: this.commentId || ''
}).then(res => { }).then(res => {
uni.hideLoading()
if (res.code === 0) { if (res.code === 0) {
this.isShowComment = false this.isShowComment = false
this.$toast('提交成功') this.$toast('提交成功')
@@ -296,15 +277,13 @@ div<template>
this.isMore = false this.isMore = false
this.current = 1 this.current = 1
this.$nextTick(() => { this.$nextTick(() => {
this.getCommontList(this.id) this.getCommontList(this.id)
}) })
} }
}) })
}, },
toTopic(url) {
toTopic (url) {
if (this.isFrom === 'topic') { if (this.isFrom === 'topic') {
uni.navigateBack({ uni.navigateBack({
delta: 1 delta: 1
@@ -313,55 +292,45 @@ div<template>
this.$linkTo(url) this.$linkTo(url)
} }
}, },
getCommontList(id) {
getCommontList (id) {
if (this.isMore) return if (this.isMore) return
this.$loading() this.$loading()
this.$instance.post(`/app/appneighborhoodassistance/commontList`, null, { return this.$instance.post(`/app/appneighborhoodassistance/commontList`, null, {
withoutToken: this.token ? false : true, withoutToken: !this.token,
params: { params: {
id, id,
current: this.current, current: this.current,
size: 10 size: 10
} }
}).then(res => { }).then(res => {
if (res.code === 0) { if (res?.data) {
this.$hideLoading()
if (this.current > 1) { if (this.current > 1) {
this.list = [...this.list, ...res.data.records] this.list = [...this.list, ...res.data.records]
} else { } else {
this.list = res.data.records this.list = res.data.records
} }
if (res.data.records.length < 10) { if (res.data.records.length < 10) {
this.isMore = true this.isMore = true
return false return false
} }
this.current = this.current + 1 this.current = this.current + 1
} else { } else {
this.isMore = true this.isMore = true
} }
}).catch(() => { }).finally(() => this.$hideLoading())
this.$hideLoading()
})
} }
}, },
onReachBottom() {
onReachBottom () {
this.getCommontList() this.getCommontList()
}, },
onShareTimeline() {
onShareTimeline () {
return { return {
title: this.info.content, title: this.info.content,
path: `/pages/AppCircle/Detail?id=${this.id}&themeId=${this.themeId}&name=${this.name}` path: `/pages/AppCircle/Detail?id=${this.id}&themeId=${this.themeId}&name=${this.name}`
} }
}, },
onShareAppMessage() {
onShareAppMessage () {
this.$instance.post(`/app/appneighborhoodassistance/share?id=${this.id}`).then(res => { this.$instance.post(`/app/appneighborhoodassistance/share?id=${this.id}`).then(res => {
if (res.code === 0) { if (res.code === 0) {
uni.$emit('updateList') uni.$emit('updateList')
@@ -373,11 +342,11 @@ div<template>
path: `/pages/AppCircle/Detail?id=${this.id}&themeId=${this.themeId}&name=${this.name}` path: `/pages/AppCircle/Detail?id=${this.id}&themeId=${this.themeId}&name=${this.name}`
} }
}, },
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.Detail { .Detail {
padding-top: 24px; padding-top: 24px;
padding-bottom: 130px; padding-bottom: 130px;
@@ -463,7 +432,6 @@ div<template>
width: 100px; width: 100px;
height: 60px; height: 60px;
line-height: 60px; line-height: 60px;
text-align: right;
text-align: center; text-align: center;
font-size: 26px; font-size: 26px;
color: #fff; color: #fff;
@@ -472,6 +440,7 @@ div<template>
} }
} }
} }
.footer { .footer {
display: flex; display: flex;
align-items: center; align-items: center;
@@ -749,8 +718,10 @@ div<template>
font-family: "PingFang SC"; font-family: "PingFang SC";
line-height: 30px; line-height: 30px;
margin-bottom: 16px; margin-bottom: 16px;
.label { .label {
width: 160px; width: 160px;
img { img {
width: 30px; width: 30px;
height: 30px; height: 30px;
@@ -758,6 +729,7 @@ div<template>
vertical-align: bottom; vertical-align: bottom;
} }
} }
.value { .value {
width: calc(100% - 160px); width: calc(100% - 160px);
color: #333; color: #333;
@@ -780,5 +752,5 @@ div<template>
right: 32px; right: 32px;
} }
} }
} }
</style> </style>

View File

@@ -1,15 +1,12 @@
div<template> <template>
<div class="Detail" v-if="pageShow"> <div class="Detail" v-if="pageShow">
<div class="top"> <div class="top">
<div :class="name == '婚礼' ? 'top-pad marry-css' : 'top-pad'">
<div class="item-top"> <div class="item-top">
<image :src="info.createUserAvatar || 'https://cdn.cunwuyun.cn/fengdu/avatar.png'" /> <image :src="info.createUserAvatar || 'https://cdn.cunwuyun.cn/wxmp/fengdu/avatar.png'"/>
<div class="right"> <div class="right">
<h3>{{ info.createUserName }}</h3> <h3>{{ info.createUserName }}</h3>
<span v-if="info.publishDepartName">{{ info.publishDepartName }}</span> <span v-if="info.publishDepartName">{{ info.publishDepartName }}</span>
</div> </div>
<div class="top-btn" v-if="info.integralTaskId && info.integralTaskInfo.status != 2 && info.showSignBtn" @click="toTask">去参与</div>
</div>
<image src="https://cdn.cunwuyun.cn/fengdu/marry-top.png" class="marry-top" v-if="name == '婚礼'" /> <image src="https://cdn.cunwuyun.cn/fengdu/marry-top.png" class="marry-top" v-if="name == '婚礼'" />
<div class="item-content"> <div class="item-content">
<span v-if="name" @click="toTopic('./TopicDetail?themeId=' + themeId + '&name=' + name)">#{{ name }}</span> <span v-if="name" @click="toTopic('./TopicDetail?themeId=' + themeId + '&name=' + name)">#{{ name }}</span>
@@ -33,20 +30,26 @@ div<template>
<div class="label"><img src="https://cdn.cunwuyun.cn/fengdu/leave-icon.png" alt="">离场时间</div> <div class="label"><img src="https://cdn.cunwuyun.cn/fengdu/leave-icon.png" alt="">离场时间</div>
<div class="value">{{ info.integralTaskInfo.exitBegintime }}{{ info.integralTaskInfo.exitEndtime }}</div> <div class="value">{{ info.integralTaskInfo.exitBegintime }}{{ info.integralTaskInfo.exitEndtime }}</div>
</div> </div>
</div> </div>
<div class="item-imgs" v-if="info.files && info.files.length"> <!-- <div class="item-imgs" v-if="info.files && info.files.length">
<image mode="aspectFill" @click="previewImage(item.url, info.files)" v-for="(item, index) in info.files" :key="index" :src="item.url" /> <image mode="aspectFill" @click="previewImage(item.url, info.files)" v-for="(item, index) in info.files" :key="index" :src="item.url" />
</div> -->
<div class="info-flex">
<div class="label"><img src="https://cdn.cunwuyun.cn/fengdu/time-icon.png" alt="">{{ info.integralTaskInfo.type == 1 ? '报名时间:' : '进场时间:' }}</div>
<div class="value">{{ info.integralTaskInfo.intoBegintime }}{{ info.integralTaskInfo.intoEndtime }}</div>
</div> </div>
<div class="time-flex"> <div class="time-flex">
<p>{{ info.createTime }}</p> <p>{{ info.createTime }}</p>
<image src="https://cdn.cunwuyun.cn/fengdu/marry-bottom.png" class="marry-bottom" v-if="name == '婚礼'" /> <image src="https://cdn.cunwuyun.cn/fengdu/marry-bottom.png" class="marry-bottom" v-if="name == '婚礼'" />
</div> </div>
</div> </div>
<div class="item-imgs" v-if="info.files && info.files.length">
<image mode="aspectFill" @click="previewImage(item.url, info.files)" v-for="(item, index) in info.files" :key="index" :src="item.url"/>
</div>
<div class="item-bottom"> <div class="item-bottom">
<button open-type="share"> <button open-type="share">
<image src="https://cdn.cunwuyun.cn/wxmp/fengdu/ic-zhuanfa.png" /> <image src="https://cdn.cunwuyun.cn/wxmp/fengdu/ic-zhuanfa.png"/>
<i>{{ info.sharedCount }}</i> <i>{{ info.sharedCount }}</i>
</button> </button>
<div> <div>
@@ -54,7 +57,7 @@ div<template>
<i>{{ info.appreciateCount }}</i> <i>{{ info.appreciateCount }}</i>
</div> </div>
<div> <div>
<image src="https://cdn.cunwuyun.cn/wxmp/fengdu/ic-pinglun.png" /> <image src="https://cdn.cunwuyun.cn/wxmp/fengdu/ic-pinglun.png"/>
<i>{{ info.commentCount }}</i> <i>{{ info.commentCount }}</i>
</div> </div>
</div> </div>
@@ -63,7 +66,7 @@ div<template>
<h2>评论</h2> <h2>评论</h2>
<div class="comment-wrapper"> <div class="comment-wrapper">
<div class="comment-item" v-for="(item, index) in list" :key="index"> <div class="comment-item" v-for="(item, index) in list" :key="index">
<image :src="item.createUserAvatar || 'https://cdn.cunwuyun.cn/wxmp/fengdu/avatar.png'" /> <image :src="item.createUserAvatar || 'https://cdn.cunwuyun.cn/wxmp/fengdu/avatar.png'"/>
<div class="right"> <div class="right">
<h3>{{ item.createUserName }}</h3> <h3>{{ item.createUserName }}</h3>
<p>{{ item.content }}</p> <p>{{ item.content }}</p>
@@ -73,7 +76,7 @@ div<template>
</div> </div>
<div class="replay-list" v-if="item.replyList.length"> <div class="replay-list" v-if="item.replyList.length">
<div class="replay-item" v-for="replay in item.replyList" :key="replay.id"> <div class="replay-item" v-for="replay in item.replyList" :key="replay.id">
<image :src="replay.createUserAvatar || 'https://cdn.cunwuyun.cn/wxmp/fengdu/avatar.png'" /> <image :src="replay.createUserAvatar || 'https://cdn.cunwuyun.cn/wxmp/fengdu/avatar.png'"/>
<div class="replay-item__right"> <div class="replay-item__right">
<div class="top"> <div class="top">
<div class="replay-left"> <div class="replay-left">
@@ -100,11 +103,11 @@ div<template>
<div class="popup"> <div class="popup">
<div class="popup-title"> <div class="popup-title">
<h2>请选择</h2> <h2>请选择</h2>
<image @click="isShow = false" src="https://cdn.cunwuyun.cn/wxmp/fengdu/ic-guanbi.png" /> <image @click="isShow = false" src="https://cdn.cunwuyun.cn/wxmp/fengdu/ic-guanbi.png"/>
</div> </div>
<div class="popup-list"> <div class="popup-list">
<button open-type="share"> <button open-type="share">
<image src="https://cdn.cunwuyun.cn/wxmp/fengdu/ic-wechat.png" /> <image src="https://cdn.cunwuyun.cn/wxmp/fengdu/ic-wechat.png"/>
<span>微信</span> <span>微信</span>
</button> </button>
<!-- <button open-type="share"> <!-- <button open-type="share">
@@ -122,7 +125,7 @@ div<template>
<div class="popup"> <div class="popup">
<div class="popup-title"> <div class="popup-title">
<h2>评论</h2> <h2>评论</h2>
<image @click="isShowComment = false, focus = false" src="https://cdn.cunwuyun.cn/wxmp/fengdu/ic-guanbi.png" /> <image @click="isShowComment = false, focus = false" src="https://cdn.cunwuyun.cn/wxmp/fengdu/ic-guanbi.png"/>
</div> </div>
<div class="form"> <div class="form">
<textarea :maxlength="100" :cursor-spacing="10" :placeholder="commentId ? '回复' + replyName : '请输入评论内容'" :focus="focus" v-model="content"></textarea> <textarea :maxlength="100" :cursor-spacing="10" :placeholder="commentId ? '回复' + replyName : '请输入评论内容'" :focus="focus" v-model="content"></textarea>
@@ -136,12 +139,12 @@ div<template>
</template> </template>
<script> <script>
import { mapActions, mapState } from 'vuex' import {mapActions, mapState} from 'vuex'
export default {
export default {
name: 'Detail', name: 'Detail',
appName: '详情', appName: '详情',
data() {
data () {
return { return {
id: '', id: '',
isShow: false, isShow: false,
@@ -160,32 +163,23 @@ div<template>
replyName: '' replyName: ''
} }
}, },
computed: { computed: {
...mapState(['user', 'token']) ...mapState(['user', 'token'])
}, },
onLoad(query) {
onLoad (query) {
this.isFrom = query.isFrom this.isFrom = query.isFrom
this.id = query.id this.id = query.id
this.themeId = query.themeId this.themeId = query.themeId
this.name = query.name || '' this.name = query.name || ''
this.$loading() this.$loading();
if (!this.token) { (this.token ? Promise.resolve() : this.autoLogin()).finally(() => Promise.all([
this.autoLogin().then(() => { this.getInfo(query.id),
this.getInfo(query.id)
this.getCommontList(query.id) this.getCommontList(query.id)
}) ])).finally(() => this.$hideLoading())
} else {
this.getInfo(query.id)
this.getCommontList(query.id)
}
}, },
methods: { methods: {
...mapActions(['autoLogin']), ...mapActions(['autoLogin']),
toTask() { toTask() {
if (!this.user.areaId) { if (!this.user.areaId) {
this.$dialog.confirm({ this.$dialog.confirm({
@@ -198,15 +192,13 @@ div<template>
} }
this.$linkTo(`/mods/AppNewFarmerBank/taskDetail?id=${this.info.integralTaskId}`) this.$linkTo(`/mods/AppNewFarmerBank/taskDetail?id=${this.info.integralTaskId}`)
}, },
previewImage(url, files) {
previewImage (url, files) {
uni.previewImage({ uni.previewImage({
current: url, current: url,
urls: files.map(v => v.url) urls: files.map(v => v.url)
}) })
}, },
showComment() {
showComment () {
if (!this.user.areaId) { if (!this.user.areaId) {
this.$dialog.confirm({ this.$dialog.confirm({
content: '您只有完成信息认证后,才可进行相关操作。', content: '您只有完成信息认证后,才可进行相关操作。',
@@ -229,8 +221,7 @@ div<template>
}, 500) }, 500)
}) })
}, },
replay(item) {
replay (item) {
if (!this.user.areaId) { if (!this.user.areaId) {
this.$dialog.confirm({ this.$dialog.confirm({
content: '您只有完成信息认证后,才可进行相关操作。', content: '您只有完成信息认证后,才可进行相关操作。',
@@ -254,21 +245,17 @@ div<template>
}, 500) }, 500)
}) })
}, },
getInfo(id) {
getInfo (id) { return this.$instance.post(`/app/appneighborhoodassistance/queryDetailById?id=${id}`, null, {
this.$instance.post(`/app/appneighborhoodassistance/queryDetailById?id=${id}`, null, { withoutToken: !this.token,
withoutToken: this.token ? false : true,
}).then(res => { }).then(res => {
if (res.code === 0) { if (res?.data) {
this.info = res.data this.info = res.data
this.pageShow = true return this.pageShow = true
} }
uni.hideLoading()
}) })
}, },
reciate() {
reciate () {
this.$loading() this.$loading()
this.$instance.post(`/app/appneighborhoodassistance/appreciate?id=${this.id}`).then(res => { this.$instance.post(`/app/appneighborhoodassistance/appreciate?id=${this.id}`).then(res => {
if (res.code === 0) { if (res.code === 0) {
@@ -279,12 +266,10 @@ div<template>
uni.hideLoading() uni.hideLoading()
}) })
}, },
send() {
send () {
if (!this.content) { if (!this.content) {
return this.$toast('内容不能为空') return this.$toast('内容不能为空')
} }
this.$loading() this.$loading()
this.$instance.post(!this.commentId ? `/app/appneighborhoodassistance/addComment` : `/app/appneighborhoodassistance/addReply`, { this.$instance.post(!this.commentId ? `/app/appneighborhoodassistance/addComment` : `/app/appneighborhoodassistance/addReply`, {
content: this.content, content: this.content,
@@ -292,7 +277,6 @@ div<template>
type: this.commentId ? 1 : 0, type: this.commentId ? 1 : 0,
commentId: this.commentId || '' commentId: this.commentId || ''
}).then(res => { }).then(res => {
uni.hideLoading()
if (res.code === 0) { if (res.code === 0) {
this.isShowComment = false this.isShowComment = false
this.$toast('提交成功') this.$toast('提交成功')
@@ -303,15 +287,13 @@ div<template>
this.isMore = false this.isMore = false
this.current = 1 this.current = 1
this.$nextTick(() => { this.$nextTick(() => {
this.getCommontList(this.id) this.getCommontList(this.id)
}) })
} }
}) })
}, },
toTopic(url) {
toTopic (url) {
if (this.isFrom === 'topic') { if (this.isFrom === 'topic') {
uni.navigateBack({ uni.navigateBack({
delta: 1 delta: 1
@@ -320,21 +302,18 @@ div<template>
this.$linkTo(url) this.$linkTo(url)
} }
}, },
getCommontList(id) {
getCommontList (id) {
if (this.isMore) return if (this.isMore) return
this.$loading() this.$loading()
this.$instance.post(`/app/appneighborhoodassistance/commontList`, null, { return this.$instance.post(`/app/appneighborhoodassistance/commontList`, null, {
withoutToken: this.token ? false : true, withoutToken: !this.token,
params: { params: {
id, id,
current: this.current, current: this.current,
size: 10 size: 10
} }
}).then(res => { }).then(res => {
if (res.code === 0) { if (res?.data) {
this.$hideLoading()
if (this.current > 1) { if (this.current > 1) {
this.list = [...this.list, ...res.data.records] this.list = [...this.list, ...res.data.records]
} else { } else {
@@ -351,24 +330,19 @@ div<template>
} else { } else {
this.isMore = true this.isMore = true
} }
}).catch(() => { }).finally(() => this.$hideLoading())
this.$hideLoading()
})
} }
}, },
onReachBottom() {
onReachBottom () {
this.getCommontList() this.getCommontList()
}, },
onShareTimeline() {
onShareTimeline () {
return { return {
title: this.info.content, title: this.info.content,
path: `/pages/AppCircle/Detail?id=${this.id}&themeId=${this.themeId}&name=${this.name}` path: `/pages/AppCircle/Detail?id=${this.id}&themeId=${this.themeId}&name=${this.name}`
} }
}, },
onShareAppMessage() {
onShareAppMessage () {
this.$instance.post(`/app/appneighborhoodassistance/share?id=${this.id}`).then(res => { this.$instance.post(`/app/appneighborhoodassistance/share?id=${this.id}`).then(res => {
if (res.code === 0) { if (res.code === 0) {
uni.$emit('updateList') uni.$emit('updateList')
@@ -380,11 +354,11 @@ div<template>
path: `/pages/AppCircle/Detail?id=${this.id}&themeId=${this.themeId}&name=${this.name}` path: `/pages/AppCircle/Detail?id=${this.id}&themeId=${this.themeId}&name=${this.name}`
} }
}, },
} }
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.Detail { .Detail {
padding-top: 24px; padding-top: 24px;
padding-bottom: 130px; padding-bottom: 130px;
@@ -470,7 +444,6 @@ div<template>
width: 100px; width: 100px;
height: 60px; height: 60px;
line-height: 60px; line-height: 60px;
text-align: right;
text-align: center; text-align: center;
font-size: 26px; font-size: 26px;
color: #fff; color: #fff;
@@ -479,6 +452,7 @@ div<template>
} }
} }
} }
.footer { .footer {
display: flex; display: flex;
align-items: center; align-items: center;
@@ -644,13 +618,6 @@ div<template>
} }
} }
} }
& > h2 {
margin-bottom: 32px;
color: #3d3d3d;
font-size: 38px;
font-weight: 600;
}
} }
& > .top { & > .top {
@@ -756,8 +723,10 @@ div<template>
font-family: "PingFang SC"; font-family: "PingFang SC";
line-height: 30px; line-height: 30px;
margin-bottom: 16px; margin-bottom: 16px;
.label { .label {
width: 160px; width: 160px;
img { img {
width: 30px; width: 30px;
height: 30px; height: 30px;
@@ -765,6 +734,7 @@ div<template>
vertical-align: bottom; vertical-align: bottom;
} }
} }
.value { .value {
width: calc(100% - 160px); width: calc(100% - 160px);
color: #333; color: #333;
@@ -787,29 +757,5 @@ div<template>
right: 32px; right: 32px;
} }
} }
}
.top-pad {
padding: 32px;
}
.marry-css {
background-image: linear-gradient(191deg, #FFE0E4 0%, #FFFFFF 89%);
position: relative;
.marry-top {
width: 216px;
height: 100px;
position: absolute;
top: 18px;
right: 12px;
}
.time-flex {
display: flex;
justify-content: space-between;
.marry-bottom {
width: 300px;
height: 40px;
margin-top: -4px;
}
}
}
}
</style> </style>

View File

@@ -13,17 +13,17 @@
<div class="flex wrap"> <div class="flex wrap">
<image class="fill imageItem" v-for="(item, index) in info.files" @click="preview(item.url)" :key="index" :src="item.url"/> <image class="fill imageItem" v-for="(item, index) in info.files" @click="preview(item.url)" :key="index" :src="item.url"/>
</div> </div>
<span v-if="!info.files.length">暂无照片</span> <span v-if="!hasFiles(info.files)">暂无照片</span>
</AiItem> </AiItem>
</AiGroup> </AiGroup>
<u-gap height="24" v-if="result.doExplain" /> <u-gap height="24" v-if="result.doExplain"/>
<AiGroup title="处理详情" description noBorder labelColor="#999" v-if="result.doExplain"> <AiGroup title="处理详情" description noBorder labelColor="#999" v-if="result.doExplain">
<AiItem label="处理结果" top-label :value="result.doExplain"/> <AiItem label="处理结果" top-label :value="result.doExplain"/>
<AiItem label="照片" class="not-line"> <AiItem label="照片" class="not-line">
<div class="flex wrap"> <div class="flex wrap">
<image class="fill imageItem" v-for="(item, index) in result.files" @click="preview(item.url)" :key="index" :src="item.url"/> <image class="fill imageItem" v-for="(item, index) in result.files" @click="preview(item.url)" :key="index" :src="item.url"/>
</div> </div>
<span v-if="!result.files.length">暂无照片</span> <span v-if="!hasFiles(result.files)">暂无照片</span>
</AiItem> </AiItem>
</AiGroup> </AiGroup>
<!-- <u-gap height="24" v-if="info.judgeName"/> <!-- <u-gap height="24" v-if="info.judgeName"/>
@@ -50,9 +50,9 @@
<AiItem label="调处思路、措施及主要过程" :value="info.mediateInfo"/> <AiItem label="调处思路、措施及主要过程" :value="info.mediateInfo"/>
<AiItem label="调处结果" class="not-line" value="调解成功" /> <AiItem label="调处结果" class="not-line" value="调解成功" />
</AiGroup> --> </AiGroup> -->
<u-gap height="24" /> <u-gap height="24"/>
<u-tabs :list="evaluation && evaluation.id ? [{name:'办理进度'},{name:'我的评价'}] : [{name:'办理进度'}] " :current="currentTab" @change="v=>currentTab=v"/> <u-tabs :list="tabs" :current="currentTab" @change="v=>currentTab=v"/>
<u-gap height="24" bg-color="#fff" /> <u-gap height="24" bg-color="#fff"/>
<AiGroup noBorder v-if="currentTab=='0'"> <AiGroup noBorder v-if="currentTab=='0'">
<AiStep v-for="(item,i) in process" :key="item.id" :index="i"> <AiStep v-for="(item,i) in process" :key="item.id" :index="i">
<div class="flex start"> <div class="flex start">
@@ -98,8 +98,15 @@ export default {
systemExplain: `${createUserName}完成评价 (${score}星评价)` systemExplain: `${createUserName}完成评价 (${score}星评价)`
}) })
} }
return list return list;
},
tabs: v => {
const tabs = [{name: "办理进度"}];
if (!!v.evaluation?.id) {
tabs.push({name: "我的评价"});
} }
return tabs;
},
}, },
onShow() { onShow() {
this.getInfo() this.getInfo()
@@ -118,7 +125,7 @@ export default {
if (['3', '4'].includes(res.data.eventStatus) && res.data.groupName != '矛盾调解') { if (['3', '4'].includes(res.data.eventStatus) && res.data.groupName != '矛盾调解') {
this.result = res.data.processList[0] this.result = res.data.processList[0]
} }
if(this.info.judgeRisk) { if (this.info.judgeRisk) {
this.info.judgeRiskList = this.info.judgeRisk.split(',') this.info.judgeRiskList = this.info.judgeRisk.split(',')
} }
} }
@@ -134,11 +141,14 @@ export default {
preview(url) { preview(url) {
uni.previewImage({ uni.previewImage({
urls: this.info.files.map(v => v.url), urls: this.info.files.map(v => v.url),
current: url current: url,
}) });
} },
} hasFiles(files) {
} return files?.length > 0;
},
},
};
</script> </script>
<style lang="scss"> <style lang="scss">
@@ -196,7 +206,7 @@ export default {
background: #ff883c; background: #ff883c;
} }
&.status-1, &.status-2, &.status-evaluation{ &.status-1, &.status-2, &.status-evaluation {
background: #1aaaff; background: #1aaaff;
} }
@@ -220,28 +230,34 @@ export default {
margin-right: 0; margin-right: 0;
} }
} }
.not-line { .not-line {
.AiItem { .AiItem {
.normal { .normal {
border: none!important; border: none !important;
min-height: 112px!important; min-height: 112px !important;
} }
} }
} }
::v-deep .AiGroup { ::v-deep .AiGroup {
.groupHeader { .groupHeader {
padding-top: 16px!important; padding-top: 16px !important;
} }
} }
.level1 { .level1 {
color: #3D88F5; color: #3D88F5;
} }
.level2 { .level2 {
color: #52C75B; color: #52C75B;
} }
.level3 { .level3 {
color: #FF883C; color: #FF883C;
} }
.level4 { .level4 {
color: #FF3C3C; color: #FF3C3C;
} }

View File

@@ -179,13 +179,11 @@ export default {
this.id = query.id this.id = query.id
this.themeId = query.themeId this.themeId = query.themeId
this.name = query.name || '' this.name = query.name || ''
this.$loading() this.$loading();
Promise.resolve(this.token || this.autoLogin()).then(() => (this.token ? Promise.resolve() : this.autoLogin()).finally(() => Promise.all([
Promise.all([
this.getInfo(query.id), this.getInfo(query.id),
this.getCommontList(query.id) this.getCommontList(query.id)
]) ])).finally(() => this.$hideLoading())
).finally(() => this.$hideLoading())
}, },
methods: { methods: {
...mapActions(['autoLogin']), ...mapActions(['autoLogin']),
@@ -260,18 +258,15 @@ export default {
}, },
getInfo(id) { getInfo(id) {
this.$instance.post(`/app/appneighborhoodassistance/queryDetailById?id=${id}`, null, { return this.$instance.post(`/app/appneighborhoodassistance/queryDetailById?id=${id}`, null, {
withoutToken: !this.token, withoutToken: !this.token,
}).then(res => { }).then(res => {
if (res.code === 0) { if (res?.data) {
this.info = res.data this.info = res.data
this.pageShow = true return this.pageShow = true
} }
uni.hideLoading()
}) })
}, },
reciate() { reciate() {
this.$loading() this.$loading()
this.$instance.post(`/app/appneighborhoodassistance/appreciate?id=${this.id}`).then(res => { this.$instance.post(`/app/appneighborhoodassistance/appreciate?id=${this.id}`).then(res => {
@@ -329,7 +324,7 @@ export default {
if (this.isMore) return if (this.isMore) return
this.$loading() this.$loading()
this.$instance.post(`/app/appneighborhoodassistance/commontList`, null, { return this.$instance.post(`/app/appneighborhoodassistance/commontList`, null, {
withoutToken: !this.token, withoutToken: !this.token,
params: { params: {
id, id,
@@ -337,7 +332,7 @@ export default {
size: 10 size: 10
} }
}).then(res => { }).then(res => {
if (res.code === 0) { if (res?.data) {
this.$hideLoading() this.$hideLoading()
if (this.current > 1) { if (this.current > 1) {
this.list = [...this.list, ...res.data.records] this.list = [...this.list, ...res.data.records]
@@ -353,7 +348,7 @@ export default {
} else { } else {
this.isMore = true this.isMore = true
} }
}).catch(() => { }).finally(() => {
this.$hideLoading() this.$hideLoading()
}) })
} }
@@ -362,13 +357,12 @@ export default {
onReachBottom() { onReachBottom() {
this.getCommontList() this.getCommontList()
}, },
onShareTimeline() {
// onShareTimeline() { return {
// return { title: this.info.content,
// title: this.info.content, path: `/mods/AppCircle/Detail?id=${this.id}&themeId=${this.themeId}&name=${this.name}`
// // path: `/mods/AppCircle/Detail?id=${this.id}&themeId=${this.themeId}&name=${this.name}` }
// } },
// },
onShareAppMessage() { onShareAppMessage() {
this.$instance.post(`/app/appneighborhoodassistance/share?id=${this.id}`).then(res => { this.$instance.post(`/app/appneighborhoodassistance/share?id=${this.id}`).then(res => {
if (res.code === 0) { if (res.code === 0) {
@@ -472,7 +466,6 @@ export default {
width: 100px; width: 100px;
height: 60px; height: 60px;
line-height: 60px; line-height: 60px;
text-align: right;
text-align: center; text-align: center;
font-size: 26px; font-size: 26px;
color: #fff; color: #fff;