PC投票加入互动

This commit is contained in:
A1300399510
2024-07-10 18:52:39 +08:00
parent f860b38ee9
commit b8d2b04a4e
5 changed files with 350 additions and 149 deletions

View File

@@ -58,12 +58,21 @@
</el-popover>
</ClientOnly>
</div>
<div class="floor-middle flexacenter comment-box">
<img class="avatar" :src="userInfoWin?.avatar" />
<!-- <input class="comment-input flex1" type="text" v-model="floorCommentInput" @keydown.enter="floorCommentBtn('input')" placeholder="说说你的想法或疑问…" /> -->
<el-input class="comment-input flex1" name="14752869" v-model="floorCommentInput" placeholder="说说你的想法或疑问…" @keydown.enter="floorCommentBtn('input')" maxlength="500" show-word-limit autocomplete="off"></el-input>
<div class="comment-btn flexcenter" @click="floorCommentBtn('input')">
<img class="comment-btn-icon" src="@/assets/img/arrow-white.svg" />
<div class="floor-middle" ref="floormiddle" @mouseover="closeMouseOver" @mouseout="openAutoCarousel" :class="{ 'floor-middle-respond': respondShowState }">
<div class="flexacenter respond">
<div class="respond-title">给个回应</div>
<div class="respond-box flex1">
<div class="respond-item" v-for="item in 8" :key="item">&#xc150;</div>
</div>
<RespondAdd type="bottom" :message="respondShowState" @update:message="respondShowState = $event"></RespondAdd>
</div>
<div v-if="!respondShowState" class="flexacenter comment-box">
<img class="avatar" :src="userInfoWin?.avatar" />
<el-input class="comment-input flex1" name="14752869" v-model="floorCommentInput" placeholder="说说你的想法或疑问…" @keydown.enter="floorCommentBtn('input')" maxlength="500" show-word-limit autocomplete="off" @focus="closeMouseOver()"></el-input>
<div class="comment-btn flexcenter" @click="floorCommentBtn('input')">
<img class="comment-btn-icon" src="@/assets/img/arrow-white.svg" />
</div>
</div>
</div>
</div>
@@ -73,6 +82,8 @@
<script setup>
import { ElMessage } from "element-plus"
const respondShowState = ref(false)
let isNeedLogin = inject("isNeedLogin")
const goLogin = inject("goLogin")
const userInfoWin = inject("userInfoWin")
@@ -85,6 +96,8 @@ let token = inject("token")
const topHeadRef = inject("topHeadRef")
const isLoaded = inject("isLoaded")
const floormiddle = ref(null)
// 获取完整 url
const getFullUrl = () => {
if (typeof window === "undefined") return
@@ -182,6 +195,39 @@ const emit = defineEmits(["closeDiscussInputFields"])
// // 点击底部调用关闭讨论输入框
const closeDiscussInputFields = () => emit("closeDiscussInputFields")
onMounted(() => {
})
watch(isLoaded, (newValue, oldValue) => {
if (newValue === true) {
openAutoCarousel()
}
});
let floormiddleIndex = 0 // 0起
let floormiddleTimer = null
// 开启自动轮播
const openAutoCarousel = () => {
floormiddleTimer = setInterval(() => {
floormiddleIndex = +!floormiddleIndex
floormiddle.value.scrollTo({
top: floormiddleIndex * 40,
behavior: "smooth",
})
}, 2000)
}
// 鼠标移入 关闭 自动滚动
const closeMouseOver = () => {
clearInterval(floormiddleTimer)
}
onBeforeUnmount(() => {
clearInterval(floormiddleTimer)
});
</script>
<style scoped lang="less">
@@ -262,7 +308,7 @@ const closeDiscussInputFields = () => emit("closeDiscussInputFields")
}
}
.floor-middle {
.comment-box {
width: 471px;
height: 40px;
border-radius: 152px;
@@ -299,6 +345,65 @@ const closeDiscussInputFields = () => emit("closeDiscussInputFields")
}
}
}
.respond {
padding-left: 18px;
width: 471px;
height: 40px;
background-color: rgba(255, 255, 255, 1);
border: 1px solid rgba(235, 235, 235, 1);
border-radius: 208px;
position: relative;
.respond-title {
font-family: "PingFangSC-Regular", "PingFang SC", sans-serif;
font-weight: 400;
font-size: 14px;
color: #555555;
line-height: 20px;
}
.respond-box {
display: flex;
justify-content: space-around;
.respond-item {
font-family: "emojifont";
font-size: 18px;
line-height: 40px;
cursor: pointer;
}
}
/deep/ .respond-add {
width: 40px;
height: 40px;
border-radius: 50%;
background-color: var(--main-color);
.respond-add-icon {
width: 16px;
height: 16px;
}
&.angle::after {
top: -17px;
bottom: auto;
transform: translateX(-50%) rotate(225deg);
}
}
}
.floor-middle {
display: flex;
flex-direction: column;
height: 40px;
overflow: hidden;
&.floor-middle-respond {
overflow: visible;
// overflow: hidden;
}
}
}
}