|
@@ -0,0 +1,123 @@
|
|
|
+<!-- 滚动展示 -->
|
|
|
+<template>
|
|
|
+ <div style="height: 100%; width: 100%;">
|
|
|
+ <div class="mb-3" style="font-size: 13px; color: #666;">最近30天已有<span class="red">68人</span>提现成功,累计提现<span class="red">¥9450</span></div>
|
|
|
+ <!-- 滚动 -->
|
|
|
+ <div
|
|
|
+ style="height: calc(100% - 42px); overflow: hidden; font-size: 13px;color: #333;"
|
|
|
+ >
|
|
|
+ <!-- 数据list -->
|
|
|
+ <div class="scrollBox" id="scrollBox">
|
|
|
+ <div
|
|
|
+ v-for="(item) in dataList"
|
|
|
+ :key="item[keyText] || item.name"
|
|
|
+ class="d-flex justify-space-between align-center"
|
|
|
+ style="height: 40px;"
|
|
|
+ >
|
|
|
+ <!-- 头像、用户名 -->
|
|
|
+ <div class="d-flex align-center">
|
|
|
+ <v-avatar size="30" :image="item.avatar || 'https://minio.citupro.com/dev/menduner/7.png'"></v-avatar>
|
|
|
+ <div class="ml-2">{{ formatName(item.name) }}</div>
|
|
|
+ <!-- <div class="ml-2">{{ item.name }}</div> -->
|
|
|
+ </div>
|
|
|
+ <div class="d-flex" style="width: calc(100% - 65px);">
|
|
|
+ <!-- 内容 -->
|
|
|
+ <div class="d-flex ellipsisText mx-4" style="flex: 1;">
|
|
|
+ <div>推荐到</div>
|
|
|
+ <div class="ellipsisText ml-1" style="max-width: 100px;">{{ item.company }}</div>
|
|
|
+ <div class="ellipsisText ml-1" style="max-width: 60px;">{{ item.job }}</div>
|
|
|
+ </div>
|
|
|
+ <!-- 赏金 -->
|
|
|
+ <div>提现¥<span class="red">{{ item.money }}</span></div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script setup>
|
|
|
+import { ref } from 'vue'
|
|
|
+
|
|
|
+defineOptions({name: 'publicRecruitment-bountyDisplay'})
|
|
|
+defineProps({
|
|
|
+ keyText: {
|
|
|
+ type: String,
|
|
|
+ default: 'id'
|
|
|
+ }
|
|
|
+})
|
|
|
+const avatarList = [
|
|
|
+ 'https://img0.baidu.com/it/u=230622178,1565949306&fm=253&fmt=auto&app=138&f=JPEG?w=449&h=300',
|
|
|
+ 'https://img0.baidu.com/it/u=1401084042,2724457850&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=726',
|
|
|
+ 'https://q7.itc.cn/q_70/images03/20240423/6d236fae5c8f44ed9b60d977f32debb7.jpeg',
|
|
|
+ 'https://q1.itc.cn/q_70/images03/20240609/1c1be14298be4dbe978e55bde6e958b0.jpeg',
|
|
|
+ 'https://q4.itc.cn/q_70/images03/20240528/298d4abda5e4469d98fa77e7cde46525.jpeg',
|
|
|
+ 'https://q5.itc.cn/q_70/images03/20240520/ceb0d77d1be24eea8cd3826994eac1c1.jpeg',
|
|
|
+ 'https://img1.baidu.com/it/u=3995643348,1848098846&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=800',
|
|
|
+]
|
|
|
+const realDataList = []
|
|
|
+for (let index = 0; index < 68; index++) {
|
|
|
+ const obj = {
|
|
|
+ id: 'id' + (index+1),
|
|
|
+ name: '用户' + (index+1),
|
|
|
+ avatar: avatarList[index % 7],
|
|
|
+ company: '某某公司' + (index+1),
|
|
|
+ job: '某某职位' + (index+1),
|
|
|
+ money: index*index*(100 - index) || 100,
|
|
|
+ }
|
|
|
+ realDataList.push(obj)
|
|
|
+}
|
|
|
+const setDataList = () => {
|
|
|
+ // 将数据的基数设置极大-> totalNum: 总数
|
|
|
+ const totalNum = 1000 // 设置长度
|
|
|
+ if (realDataList.length >= totalNum) {
|
|
|
+ return realDataList.slice(0, totalNum)
|
|
|
+ } else {
|
|
|
+ const multipleCount = Math.ceil(totalNum/realDataList.length)
|
|
|
+ // 创建一个长度为multipleCount的新数组,并用realDataList填充,取totalNum长度
|
|
|
+ const arr = realDataList.concat(...Array.from({ length: multipleCount }, () => [...realDataList]))
|
|
|
+ return arr.slice(0, totalNum)
|
|
|
+ }
|
|
|
+}
|
|
|
+let dataList = ref([]) // 渲染的数据
|
|
|
+if (realDataList?.length) dataList.value = setDataList()
|
|
|
+
|
|
|
+// 用户名加*号
|
|
|
+const formatName = (name) => {
|
|
|
+ if (name.length === 1) {
|
|
|
+ return name // 如果名字只有一个字,则直接返回该字
|
|
|
+ } else if (name.length === 2) {
|
|
|
+ return name.charAt(0) + '*' // 如果名字有两个字,则返回第一个字后跟一个星号
|
|
|
+ } else {
|
|
|
+ return name.charAt(0) + '**' // 如果名字有多于两个字,则返回第一个字后跟两个星号
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 滚动实现代码部分
|
|
|
+</script>
|
|
|
+<style lang="scss" scoped>
|
|
|
+.red {
|
|
|
+ color: red;
|
|
|
+}
|
|
|
+.ellipsisText {
|
|
|
+ // width: 120px;
|
|
|
+ white-space: nowrap;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ overflow: hidden;
|
|
|
+}
|
|
|
+.scrollBox {
|
|
|
+ position:relative;
|
|
|
+ animation: myMove 1500s linear infinite;
|
|
|
+}
|
|
|
+@keyframes myMove
|
|
|
+{
|
|
|
+ // from { bottom: 0%; }
|
|
|
+ // to { bottom: 100%; }
|
|
|
+ 0% {
|
|
|
+ transform: translateY(0%);
|
|
|
+ }
|
|
|
+ 100% {
|
|
|
+ transform: translateY(-100%);
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|