This commit is contained in:
花有清香月有阴
2022-01-07 17:06:23 +08:00
parent 9f2a655add
commit defba2d739

View File

@@ -36,9 +36,9 @@
<b v-text="op.createUserName" /> <b v-text="op.createUserName" />
<span class="tags">{{ data.createUserId === op.createUserId ? '话事人' : '居民' }}</span> <span class="tags">{{ data.createUserId === op.createUserId ? '话事人' : '居民' }}</span>
</div> </div>
<u-icon name="thumb-up" :label="op.suport" :color="op.isSuport ? 'red' : '#ccc'" @click="like(op.id)" /> <u-icon name="thumb-up" :label="op.suport" :color="op.isSuport ? 'red' : '#ccc'" @click="like(op.id)" />
</div> </div>
<div class="content" v-text="op.content" /> <div class="content" v-text="op.content" @click="dele" />
<div class="content color-999" v-text="op.createTime" /> <div class="content color-999" v-text="op.createTime" />
</div> </div>
<AiEmpty v-if="!data.messages.length"></AiEmpty> <AiEmpty v-if="!data.messages.length"></AiEmpty>
@@ -57,7 +57,7 @@
<div class="vote-item" v-for="(item, index) in data.voteList" :key="index"> <div class="vote-item" v-for="(item, index) in data.voteList" :key="index">
<span>{{ item.content }}</span> <span>{{ item.content }}</span>
<i>{{ item.count }}</i> <i>{{ item.count }}</i>
<em :style="{width: item.percentage}"></em> <em :style="{ width: item.percentage }"></em>
</div> </div>
</div> </div>
</div> </div>
@@ -98,7 +98,7 @@ export default {
content: '', content: '',
flag: false, flag: false,
pageShow: false, pageShow: false,
isAnnouncer: false isAnnouncer: false,
} }
}, },
computed: { computed: {
@@ -120,70 +120,79 @@ export default {
methods: { methods: {
getDetail() { getDetail() {
this.$loading() this.$loading()
this.$http.post(`/app/appvillagediscuss/queryDetailById?id=${this.id}`).then((res) => { this.$http
if (res?.data) { .post(`/app/appvillagediscuss/queryDetailById?id=${this.id}`)
this.data = { .then((res) => {
...res.data, if (res?.data) {
avatar: res.data.createUserName?.substr(0, 2) || '游客', this.data = {
messages: res.data.messages ? res.data.messages.map(v => { ...res.data,
return { avatar: res.data.createUserName?.substr(0, 2) || '游客',
...v, messages: res.data.messages
isSuport: v.suportUser ? v.suportUser.indexOf(this.user.id) > -1 : false ? res.data.messages.map((v) => {
} return {
}) : [] ...v,
} isSuport: v.suportUser ? v.suportUser.indexOf(this.user.id) > -1 : false,
this.data.images = JSON.parse(res.data.images) }
this.isAnnouncer = this.user.id === res.data.createUserId })
: [],
}
this.data.images = JSON.parse(res.data.images)
this.isAnnouncer = this.user.id === res.data.createUserId
var discussTime = (new Date(res.data.discussDeadline).getTime() * 1) / 1000 var discussTime = (new Date(res.data.discussDeadline).getTime() * 1) / 1000
var nowTime = (new Date().getTime() * 1) / 1000 var nowTime = (new Date().getTime() * 1) / 1000
if (discussTime >= nowTime) { if (discussTime >= nowTime) {
this.timestamp = discussTime - nowTime this.timestamp = discussTime - nowTime
} }
if (res.data.voteType === '1') { if (res.data.voteType === '1') {
const total = Object.values(res.data.statistic).reduce((x, y) => { const total = Object.values(res.data.statistic).reduce((x, y) => {
return x + y return x + y
}) })
this.data.voteList = res.data.voteItems.map(v => { this.data.voteList = res.data.voteItems.map((v) => {
return { return {
...v, ...v,
count: res.data.statistic[v.item], count: res.data.statistic[v.item],
percentage: (res.data.statistic[v.item] / total) * 100 + '%' percentage: (res.data.statistic[v.item] / total) * 100 + '%',
} }
}) })
} }
this.$hideLoading()
this.pageShow = true
} else {
this.$hideLoading()
}
})
.catch(() => {
this.$hideLoading() this.$hideLoading()
this.pageShow = true })
} else {
this.$hideLoading()
}
}).catch(() => {
this.$hideLoading()
})
}, },
like (id) { like(id) {
this.$loading() this.$loading()
this.$http.post(`/app/appvillagediscussmessage/suport?id=${id}&userId=${this.user.id}`).then(res => { this.$http
this.$hideLoading() .post(`/app/appvillagediscussmessage/suport?id=${id}&userId=${this.user.id}`)
if (res.code === 0) { .then((res) => {
this.$u.toast('点赞成功') this.$hideLoading()
if (res.code === 0) {
this.$u.toast('点赞成功')
this.$nextTick(() => { this.$nextTick(() => {
this.getDetail() this.getDetail()
}) })
} else { } else {
this.$u.toast(res.msg) this.$u.toast(res.msg)
} }
})
}).catch((e) => { .catch((e) => {
this.$hideLoading() this.$hideLoading()
this.$u.toast(e) this.$u.toast(e)
}) })
}, },
dele() {},
publish() { publish() {
if (this.flag) return if (this.flag) return
if (!this.content) { if (!this.content) {
@@ -251,15 +260,17 @@ export default {
handleComplete() { handleComplete() {
this.$confirm('是否要结束公示') this.$confirm('是否要结束公示')
.then(() => { .then(() => {
this.$http.post('/app/appvillagediscuss/finishPublic', { this.$http
status: '2', .post('/app/appvillagediscuss/finishPublic', {
id: this.id status: '2',
}).then((res) => { id: this.id,
if (res?.code == 0) { })
this.$u.toast('已结束公示!') .then((res) => {
this.getDetail() if (res?.code == 0) {
} this.$u.toast('已结束公示!')
}) this.getDetail()
}
})
}) })
.catch(() => 0) .catch(() => 0)
}, },
@@ -282,7 +293,7 @@ export default {
text-align: center; text-align: center;
color: #fff; color: #fff;
font-size: 32px; font-size: 32px;
background: #1365DD; background: #1365dd;
} }
&.detail-active { &.detail-active {
@@ -377,7 +388,7 @@ export default {
text-align: center; text-align: center;
color: #fff; color: #fff;
font-size: 24px; font-size: 24px;
background: #1AAAFF; background: #1aaaff;
border-radius: 8px; border-radius: 8px;
} }
@@ -399,10 +410,10 @@ export default {
line-height: 64px; line-height: 64px;
margin-bottom: 16px; margin-bottom: 16px;
padding: 0 32px; padding: 0 32px;
background: #FFFFFF; background: #ffffff;
border-radius: 8px; border-radius: 8px;
overflow: hidden; overflow: hidden;
border: 1px solid #95CBFF; border: 1px solid #95cbff;
em { em {
position: absolute; position: absolute;
@@ -410,13 +421,13 @@ export default {
top: 0; top: 0;
z-index: 0; z-index: 0;
height: 100%; height: 100%;
background: #DCE8F4; background: #dce8f4;
} }
span { span {
position: relative; position: relative;
z-index: 1; z-index: 1;
color: #5B84B3; color: #5b84b3;
font-size: 28px; font-size: 28px;
} }
@@ -424,7 +435,7 @@ export default {
position: relative; position: relative;
z-index: 1; z-index: 1;
font-style: normal; font-style: normal;
color: #5B84B3; color: #5b84b3;
font-size: 28px; font-size: 28px;
} }
} }
@@ -494,7 +505,7 @@ export default {
.u-input { .u-input {
background: #f7f7f7; background: #f7f7f7;
border-radius: 8px 8px 0 0; border-radius: 8px 8px 0 0;
padding: 10px!important; padding: 10px !important;
margin: 0 30px 0 30px; margin: 0 30px 0 30px;
.uni-textarea-placeholder { .uni-textarea-placeholder {
padding: 16px 0 0 16px; padding: 16px 0 0 16px;