no message

This commit is contained in:
A1300399510
2023-12-29 18:37:38 +08:00
parent c80cee6eb0
commit d7915dd321
15 changed files with 852 additions and 180 deletions

View File

@@ -6,7 +6,7 @@
<div class="tba-list flexcenter">
<div class="tab-item flexcenter" :class="{ pitch: MyPopupState == 'collect' }" @click="cutMy('collect')">
我的收藏
<div class="value">{{ count["collect"] }}</div>
<div class="value">{{ collectCount || count["collect"] }}</div>
</div>
<div class="tab-item flexcenter" :class="{ pitch: MyPopupState == 'mj' }" @click="cutMy('mj')">
@@ -18,35 +18,35 @@
<Empty></Empty>
</div>
<div class="content" v-else @scroll="handleListScroll">
<div class="item flexflex" v-for="(item, index) in showList" :key="index" @click="goDetails(item['uniqid'])">
<div class="item flexflex" v-for="(item, index) in showList" :key="index" @click="goDetails(item['uniqid'] || item?.data?.uniqid)">
<div class="left flexflex">
<div class="name">{{ item["school"] }}</div>
<div class="name">{{ item["school"] || item["data"]["school"] }}</div>
<div class="info-box flexflex">
<div class="info-item flexacenter" v-if="item['profession']">
<div class="info-item flexacenter" v-if="item['profession'] || item?.['data']?.['profession']">
<div class="info-item-name">专业</div>
<div class="info-item-value">{{ item["profession"] }}</div>
<div class="info-item-value">{{ item["profession"] || item["data"]["profession"] }}</div>
</div>
<div class="info-item flexacenter" v-if="item['project']">
<div class="info-item flexacenter" v-if="item['project'] || item?.data?.project">
<div class="info-item-name">项目</div>
<div class="info-item-value">{{ item["project"] }}</div>
<div class="info-item-value">{{ item["project"] || item?.data?.project }}</div>
</div>
</div>
<div class="text-box flexacenter">
<div class="text-time">1小时前发布</div>
<div class="text-message flex1 ellipsis">{{ item["message"] }}</div>
<div class="text-time" v-if="item?.releasetime">{{ handleDate(item?.releasetime) }}发布</div>
<div class="text-message flex1 ellipsis">{{ item["message"] || item["data"]["message"] }}</div>
</div>
</div>
<div class="operate-area flexacenter">
<img class="delete-icon" v-if="MyPopupState == 'collect'" src="@/assets/img/delete-icon.svg" />
<div class="anonymous-box flexacenter" v-else @click="openAnonymousState(index)">
<img class="delete-icon" v-if="MyPopupState == 'collect'" @click.stop="cancelCollection(item['token'], index)" src="@/assets/img/delete-icon.svg" />
<div class="anonymous-box flexacenter" v-else @click.stop="openAnonymousState(index)">
<div class="text">{{ item["anonymous"] == 1 ? "匿名" : "公开" }}</div>
<img class="arrow-icon" src="@/assets/img/arrow-gray.svg" />
<div class="state-popup flexflex" v-if="item['anonymousState']" @click.stop="">
<div class="state-popup-item flexacenter flex1" :class="{ 'pitch': item['anonymous'] == 0 }" @click="handleAnonymousState(item['token'], index)">
<div class="state-popup-item flexacenter flex1" :class="{ 'pitch': item['anonymous'] == 0 }" @click="handleAnonymousState(item['token'], index, 0)">
<div class>公开发表</div>
<img class="state-popup-icon" src="@/assets/img/tick-green.svg" />
</div>
<div class="state-popup-item flexacenter flex1" :class="{ 'pitch': item['anonymous'] == 1 }" @click="handleAnonymousState(item['token'], index)">
<div class="state-popup-item flexacenter flex1" :class="{ 'pitch': item['anonymous'] == 1 }" @click="handleAnonymousState(item['token'], index, 1)">
<div class>匿名发表</div>
<img class="state-popup-icon" src="@/assets/img/tick-green.svg" />
</div>
@@ -79,13 +79,26 @@ onMounted(() => {
let showList = ref([])
let collectList = []
let collectPage = 1
let collectLoading = false
let collectCount = ref(0)
const getCollect = () => {
MyUserCollectHttp({}).then(res => {
if (res.code != 200) return
let data = res.data
collectList = collectList.concat(data.data)
showList.value = collectList
})
if (collectPage == 0 || collectLoading) return
collectLoading = true
MyUserCollectHttp({ page: collectPage })
.then(res => {
if (res.code != 200) return
let data = res.data
collectList = collectList.concat(data.data)
showList.value = collectList
if (collectList.length < data["count"]) collectPage++
else collectPage = 0
collectCount.value = data["count"]
})
.finally(() => (collectLoading = false))
}
let publishList = []
@@ -130,9 +143,28 @@ const openAnonymousState = index => {
showList.value = [...publishList]
}
// 关闭全部匿名弹窗
const closeAllAnonymousState = () => {
publishList.forEach(element => {
element["anonymousState"] = false
})
showList.value = [...publishList]
}
// 修改匿名状态
const handleAnonymousState = (token, index) => {
const handleAnonymousState = (token, index, anonymous) => {
console.log("token", token, index)
changeAnonymousHttp({ token, anonymous }).then(res => {
console.log("res", res)
if (res.code != 200) return
publishList[index]["anonymous"] = anonymous
showList.value = [...publishList]
closeAllAnonymousState()
ElMessage({
message: res.message,
type: "success",
})
})
}
// 详情页滚动事件
@@ -155,6 +187,23 @@ defineExpose({
})
// const emit = defineEmits(["cutMy"]);
// 处理取消收藏
const cancelCollection = (token, index) => {
MyUserDeleteCollectHttp({ token }).then(res => {
console.log("res", res)
if (res.code != 200) {
ElMessage.error(res.message)
return
}
collectList.splice(index, 1)
collectCount.value--
console.log(collectList, "collectList")
showList.value = [...collectList]
})
}
</script>
<style lang="less" scoped>
.popup-mask {