feat: 新增详情页和个人主页功能及组件优化

- 添加详情页(details.html)和个人主页(homepage-me.html)的完整功能实现
- 新增多个图片资源用于UI展示
- 优化item-head、item-bottom等组件的数据绑定和交互逻辑
- 添加公共工具函数(public.js)包括时间处理和网络请求
- 完善CSS样式文件,增加响应式布局和交互效果
- 实现用户信息展示、帖子详情、相关帖子推荐等功能模块
- 添加签到、投币等交互功能
- 优化组件模板结构和数据传递方式
This commit is contained in:
DESKTOP-RQ919RC\Pc
2025-10-28 19:10:26 +08:00
parent 89703bf025
commit 7d81e02d3d
48 changed files with 4809 additions and 689 deletions

View File

@@ -5,10 +5,6 @@ const { defineComponent, ref } = Vue;
export const itemBottom = defineComponent({
name: "item-bottom",
props: {
title: {
type: String,
default: "默认标题",
},
itemdata: {
type: Object,
default: () => {},
@@ -17,8 +13,11 @@ export const itemBottom = defineComponent({
setup(props) {
let item = ref({ ...props.itemdata });
const likeClick = (item) => {
console.log("item", item);
};
return { item };
},
template: `<div class="comment flexacenter" v-if="!Array.isArray(item?.commentreviews)"> <img class="icon" :src="item?.commentreviews?.avatar" /> <div class="text one-line-display">{{ item?.commentreviews?.content }}</div></div><div class="bottom flexacenter"> <div class="bottom-item like flexacenter"> <img class="icon" src="./img/like-icon.png" /> <div class="text">{{ item.likes || "赞" }}</div> </div> <div class="bottom-item like flexacenter"> <img class="icon" src="./img/collect-golden.svg" /> <div class="text">{{ item.collections || "收藏" }}</div> </div> <div class="bottom-item like flexacenter"> <img class="icon" src="./img/discuss-icon.png" /> <div class="text">{{ item.comments || "讨论" }}</div> </div> <div class="bottom-item like flexacenter"> <img class="icon" src="./img/bi-copper-icon.png" /> <div class="text">{{ item.coins || "投币" }}</div> </div> <div class="bottom-item like flexacenter"> <img class="icon" src="./img/share-gray.png" /> <div class="text">转发</div> </div></div>`,
template: `<div class="comment flexacenter" v-if="!Array.isArray(item?.commentreviews)"> <img class="icon" :src="item?.commentreviews?.avatar" /> <div class="text one-line-display">{{ item?.commentreviews?.content }}</div></div><div class="bottom flexacenter"> <div class="bottom-item like flexacenter" @click="likeClick(item)"> <image wx:if="{{ item.is_like }}" class="icon" mode="widthFix" src="https://app.gter.net/image/miniApp/offer/like-red.png"></image> <img v-if="item.is_like" class="icon" src="./img/like-red-icon.png" /> <img v-else class="icon" src="./img/like-icon.png" /> <div class="text">{{ item.likes || "赞" }}</div> </div> <div class="bottom-item like flexacenter"> <img class="icon" src="./img/collect-golden.svg" /> <div class="text">{{ item.collections || "收藏" }}</div> </div> <div class="bottom-item flexacenter"> <img class="icon" src="./img/discuss-icon.png" /> <div class="text">{{ item.comments || "讨论" }}</div> </div> <div class="bottom-item flexacenter"> <img class="icon" src="./img/bi-copper-icon.png" /> <div class="text">{{ item.coins || "投币" }}</div> </div> <div class="bottom-item flexacenter"> <img class="icon" src="./img/share-gray.png" /> <div class="text">转发</div> </div></div>`,
});

View File

@@ -3,25 +3,29 @@
<div class="text one-line-display">{{ item?.commentreviews?.content }}</div>
</div>
<div class="bottom flexacenter">
<div class="bottom-item like flexacenter">
<img class="icon" src="./img/like-icon.png" />
<div class="bottom-item like flexacenter" @click="likeClick(item)">
<image wx:if="{{ item.is_like }}" class="icon" mode="widthFix" src="https://app.gter.net/image/miniApp/offer/like-red.png"></image>
<img v-if="item.is_like" class="icon" src="./img/like-red-icon.png" />
<img v-else class="icon" src="./img/like-icon.png" />
<div class="text">{{ item.likes || "赞" }}</div>
</div>
<div class="bottom-item like flexacenter">
<img class="icon" src="./img/collect-golden.svg" />
<div class="text">{{ item.collections || "收藏" }}</div>
</div>
<div class="bottom-item like flexacenter">
<div class="bottom-item flexacenter">
<img class="icon" src="./img/discuss-icon.png" />
<div class="text">{{ item.comments || "讨论" }}</div>
</div>
<div class="bottom-item like flexacenter">
<div class="bottom-item flexacenter">
<img class="icon" src="./img/bi-copper-icon.png" />
<div class="text">{{ item.coins || "投币" }}</div>
</div>
<div class="bottom-item like flexacenter">
<div class="bottom-item flexacenter">
<img class="icon" src="./img/share-gray.png" />
<div class="text">转发</div>
</div>

View File

@@ -1,6 +1,6 @@
// my-component.js
// 引入全局 Vue 对象(因在 HTML 中通过 script 引入Vue 已挂载到 window
const { defineComponent } = Vue;
const { defineComponent, ref } = Vue;
import { itemBottom } from "../item-bottom/item-bottom.js";
import { itemHead } from "../item-head/item-head.js";
@@ -8,16 +8,20 @@ import { itemHead } from "../item-head/item-head.js";
export const itemForum = defineComponent({
name: "item-forum",
props: {
title: {
type: String,
default: "默认标题",
itemdata: {
type: Object,
default: () => {},
},
},
// 方法
methods: {
handleClick() {
alert("组件按钮被点击");
},
setup(props) {
let res = props.itemdata;
res.content = res?.content?.replace(/\[.*?\]/g, "");
res.content = res?.content?.replace(/\<.*?\>/g, "");
res.content = res?.content?.replace(/\[.*?\../g, "");
let item = ref({ ...res });
return { item };
},
components: {
@@ -25,5 +29,5 @@ export const itemForum = defineComponent({
itemHead,
},
template: `<div class="item-box item-forum"> <item-head></item-head> <div class="label flexflex"> <img class="item icon" src="./img/recommend-icon.png" /> <img class="item icon" src="./img/essence-icon.png" /> <div class="item blue">香港</div> <div class="item">香港</div> </div> <div class="title">【干货】香港留学费用准备</div> <div class="message">在即将赴港的时候很多同学好奇香港一年制硕士下来的整体费用大概是多少其实主要包括学费租房费和生活费三部分。学费的话根据不同香港来定大概在10-30万港币之间比较固定…</div> <item-bottom></item-bottom></div>`,
template: `<div class="item-box item-forum"> <item-head :itemdata="item"></item-head> <div v-if="item.title" class="title">{{ item.title }}</div> <div class="message two-line-display">{{ item.content }}</div> <item-bottom :itemdata="item"></item-bottom></div>`,
});

View File

@@ -1,15 +1,9 @@
<div class="item-box item-forum">
<item-head></item-head>
<div class="label flexflex">
<img class="item icon" src="./img/recommend-icon.png" />
<img class="item icon" src="./img/essence-icon.png" />
<div class="item blue">香港</div>
<div class="item">香港</div>
</div>
<item-head :itemdata="item"></item-head>
<div class="title">【干货】香港留学费用准备</div>
<div v-if="item.title" class="title">{{ item.title }}</div>
<div class="message">在即将赴港的时候很多同学好奇香港一年制硕士下来的整体费用大概是多少其实主要包括学费租房费和生活费三部分。学费的话根据不同香港来定大概在10-30万港币之间比较固定…</div>
<div class="message two-line-display">{{ item.content }}</div>
<item-bottom></item-bottom>
<item-bottom :itemdata="item"></item-bottom>
</div>

View File

@@ -1,22 +1,32 @@
// my-component.js
// 引入全局 Vue 对象(因在 HTML 中通过 script 引入Vue 已挂载到 window
const { defineComponent } = Vue;
const { defineComponent, ref } = Vue;
// 定义组件(直接使用模板)
export const itemHead = defineComponent({
name: "item-head",
props: {
title: {
type: String,
default: "默认标题",
},
},
// 方法
methods: {
handleClick() {
alert("组件按钮被点击");
itemdata: {
type: Object,
default: () => {},
},
},
template: `<div class="item-head flexacenter"> <img class="avatar" src="https://nas.gter.net:9008/avatar/97K4EWIMLrsbGTWXslC1UltTF6WOikN42jDKLNjtax7Hc44zLpaKSdU9oWFhY2E~/small" /> <div class="name">小P学姐</div> <img class="group" src="https://o.x-php.com/Zvt57TuJSUvkyhw-xG7Y2l-c_ZMtdXfqqsgFptxhcq_cQnrlcPJ0DVESBq_D-81qNDQyOQ~~" /> <div class="time">2025-8-11 01:30</div> <div class="flex1"></div> <div class="view flexacenter"> <img class="icon" src="https://app.gter.net/image/miniApp/offer/eye-icon.svg" /> <div class="text">3016</div> </div> <div class="btn flexcenter" @click="cutShow"> <img class="icon" src="https://app.gter.net/image/miniApp/offer/dot-dot-dot-gray.png" /> </div> <!-- <template v-if="show"> <div class="mask" catch:tap="cutShow" catch:touchmove="touchmove"></div> <div class="operate" catch:tap="true"> <div class="item" bind:tap="report">举报</div> <template v-if="ismanager"> <div class="item" bind:tap="hide">{{ item.hidden == 0 ? '隐藏' : '显示' }}</div> <div class="item" bind:tap="recommend">{{ item.recommend == 1 ? '取消' : '' }}推荐</div> <div class="item" bind:tap="essence">{{ item.best == 1 ? '取消' : '' }}精华</div> </template> </div> </template> --></div> `,
setup(props) {
let sectionn = ref([]);
let tags = ref([]);
let item = ref({ ...props.itemdata });
let timestamp = ref(strtimeago(item.value.release_at, 4));
if (item.value.type == "tenement") timestamp = timeago(item.value.updatetime, 2);
sectionn.value = item.value.sectionn || [];
const sectionSet = new Set(sectionn.value);
tags.value = item.value.tags.filter((tag) => !sectionSet.has(tag));
return { item, timestamp, sectionn, tags };
},
template: `<div class="item-head flexacenter"> <img class="avatar" :src="item.user.avatar || item.avatar" /> <div class="name">{{ item.user.nickname || item.nickname || '匿名用户' }}</div> <!-- <img class="group" src="https://o.x-php.com/Zvt57TuJSUvkyhw-xG7Y2l-c_ZMtdXfqqsgFptxhcq_cQnrlcPJ0DVESBq_D-81qNDQyOQ~~" /> --> <div class="time">{{ timestamp }}</div> <div class="flex1"></div> <div class="view flexacenter"> <img class="icon" src="https://app.gter.net/image/miniApp/offer/eye-icon.svg" /> <div class="text">{{ item.views }}</div> </div> <div class="btn flexcenter"> <img class="icon" src="https://app.gter.net/image/miniApp/offer/dot-dot-dot-gray.png" /> </div> <!-- <template v-if="show"> <div class="mask" catch:tap="cutShow" catch:touchmove="touchmove"></div> <div class="operate" catch:tap="true"> <div class="item" bind:tap="report">举报</div> <template v-if="ismanager"> <div class="item" bind:tap="hide">{{ item.hidden == 0 ? '隐藏' : '显示' }}</div> <div class="item" bind:tap="recommend">{{ item.recommend == 1 ? '取消' : '' }}推荐</div> <div class="item" bind:tap="essence">{{ item.best == 1 ? '取消' : '' }}精华</div> </template> </div> </template> --></div><div class="label flexflex" v-if="sectionn.length || tags.length"> <img class="item icon" src="./img/recommend-icon.png" /> <img class="item icon" src="./img/essence-icon.png" /> <div class="item blue" v-for="(item, index) in sectionn" :key="item">{{ item }}</div> <div class="item" v-for="(item, index) in tags" :key="item">{{ item }}</div></div>`,
});

View File

@@ -1,16 +1,16 @@
<div class="item-head flexacenter">
<img class="avatar" src="https://nas.gter.net:9008/avatar/97K4EWIMLrsbGTWXslC1UltTF6WOikN42jDKLNjtax7Hc44zLpaKSdU9oWFhY2E~/small" />
<div class="name">小P学姐</div>
<img class="group" src="https://o.x-php.com/Zvt57TuJSUvkyhw-xG7Y2l-c_ZMtdXfqqsgFptxhcq_cQnrlcPJ0DVESBq_D-81qNDQyOQ~~" />
<div class="time">2025-8-11 01:30</div>
<img class="avatar" :src="item.user.avatar || item.avatar" />
<div class="name">{{ item.user.nickname || item.nickname || '匿名用户' }}</div>
<!-- <img class="group" src="https://o.x-php.com/Zvt57TuJSUvkyhw-xG7Y2l-c_ZMtdXfqqsgFptxhcq_cQnrlcPJ0DVESBq_D-81qNDQyOQ~~" /> -->
<div class="time">{{ timestamp }}</div>
<div class="flex1"></div>
<div class="view flexacenter">
<img class="icon" src="https://app.gter.net/image/miniApp/offer/eye-icon.svg" />
<div class="text">3016</div>
<div class="text">{{ item.views }}</div>
</div>
<div class="btn flexcenter" @click="cutShow">
<div class="btn flexcenter">
<img class="icon" src="https://app.gter.net/image/miniApp/offer/dot-dot-dot-gray.png" />
</div>
@@ -25,4 +25,11 @@
</template>
</div>
</template> -->
</div>
</div>
<div class="label flexflex" v-if="sectionn.length || tags.length">
<img class="item icon" src="./img/recommend-icon.png" />
<img class="item icon" src="./img/essence-icon.png" />
<div class="item blue" v-for="(item, index) in sectionn" :key="item">{{ item }}</div>
<div class="item" v-for="(item, index) in tags" :key="item">{{ item }}</div>
</div>

View File

@@ -8,21 +8,11 @@ import { itemHead } from "../item-head/item-head.js";
export const itemOffer = defineComponent({
name: "item-offer",
props: {
title: {
type: String,
default: "默认标题",
},
item: {
type: Object,
default: () => {},
},
},
// 方法
methods: {
handleClick() {
alert("组件按钮被点击");
},
},
components: {
itemBottom,

View File

@@ -8,21 +8,11 @@ import { itemHead } from "../item-head/item-head.js";
export const itemSummary = defineComponent({
name: "item-summary",
props: {
title: {
type: String,
default: "默认标题",
},
item: {
type: Object,
default: () => {},
},
},
// 方法
methods: {
handleClick() {
alert("组件按钮被点击");
},
},
components: {
itemBottom,

View File

@@ -34,5 +34,5 @@ export const itemTenement = defineComponent({
itemHead,
},
template: `<div class="item-box item-vote"> <item-head :itemdata="item"></item-head> <div class="title">{{ item.title }}</div> <div class="message one-line-display" v-if="item.content">{{ item.content }}</div> <div class="info flexacenter"> <template v-if="item.time"> <div class="status">进行中</div> <div class="line"></div> <div class="num">{{ item?.time.num }}</div>{{ item.time.unit }}后结束 </template> <div v-else class="status end">已结束</div> <div class="line"></div> <div class="num">{{ item?.data?.votes }}</div>人参与 </div> <div class="list" :class="{ 'voted': !item.time || item.isvote }"> <div class="list-item flexcenter " v-for="(item, index) in item?.data?.option" :key="index"> <div class="list-top flexacenter"> <img v-if="item.selected" class="list-tick" src="/img/vote-tick.svg"> <div v-else class="list-serial flexcenter">{{ index + 1 }}</div> <div class="list-text one-line-display flex1">{{ item.value }}</div> </div> <div class="list-bottom flexacenter"> <div class="list-length" :style="{ width: item.percentage + '%' }"></div>{{ item.count }} </div> </div> </div> <item-bottom :itemdata="item"></item-bottom></div>`,
template: `<div class="item-box item-tenement"> <item-head :itemdata="item"></item-head> <div class="title">三房找一位室友合租,家具设备齐全</div> <div class="site-box flexacenter"> <template v-if="item.intermediary == 6"> <div class="site-item flexacenter" v-for="(item, index) in item.location" :key="index"> <img class="site-icon" src="https://app.gter.net/image/miniApp/offer/room.png"> {{ item }} </div> </template> <div v-else class="site-item flexacenter"> <img class="site-icon" src="https://app.gter.net/image/miniApp/offer/orientation.png"> {{ item.location || '九龙 > 尖沙咀/佐敦' }} </div> </div> <div class="price-section flexacenter"> <div class="unit">HK$</div> <div class="price">{{ item.rent }}</div> <span class="text">/月</span> <div class="rentalduration">[ 租期{{ item.rentalduration }} ]</div> </div> <div class="picture flexacenter"> <img class="picture-item" v-for="(item, index) in 15" :key="index" src="https://axure-file.lanhuapp.com/md5__34fc6e5f5fef1d31bbd4604d33be77cc.svg" alt=""> </div> <item-bottom :itemdata="item"></item-bottom></div>`,
});

View File

@@ -1,5 +1,30 @@
<div class="item-box item-tenement">
<item-head :itemdata="item"></item-head>
<!-- <div class="title">{{ item.title }}</div> -->
<div class="title">三房找一位室友合租,家具设备齐全</div>
<div class="site-box flexacenter">
<template v-if="item.intermediary == 6">
<div class="site-item flexacenter" v-for="(item, index) in item.location" :key="index">
<img class="site-icon" src="https://app.gter.net/image/miniApp/offer/room.png">
{{ item }}
</div>
</template>
<div v-else class="site-item flexacenter">
<img class="site-icon" src="https://app.gter.net/image/miniApp/offer/orientation.png">
{{ item.location || '九龙 > 尖沙咀/佐敦' }}
</div>
</div>
<div class="price-section flexacenter">
<div class="unit">HK$</div>
<div class="price">{{ item.rent }}</div>
<span class="text">/月</span>
<div class="rentalduration">[ 租期{{ item.rentalduration }} ]</div>
</div>
<div class="picture flexacenter">
<img class="picture-item" v-for="(item, index) in 15" :key="index" src="https://axure-file.lanhuapp.com/md5__34fc6e5f5fef1d31bbd4604d33be77cc.svg" alt="">
</div>
<item-bottom :itemdata="item"></item-bottom>
</div>

496
css/details.css Normal file
View File

@@ -0,0 +1,496 @@
#details {
width: 1200px;
margin: 0 auto;
}
#details .head-top {
margin-bottom: 30px;
}
#details .head-top .logo {
height: 52px;
}
#details .head-top .input-box {
width: 370px;
height: 40px;
background-color: #ebebeb;
border: 2px solid #d7d7d7;
border-radius: 11px;
padding: 0 15px;
justify-content: space-between;
margin-right: 20px;
}
#details .head-top .input-box .input {
border: none;
outline: none;
height: 100%;
background-color: transparent;
}
#details .head-top .input-box .icon {
width: 18px;
height: 18px;
margin-left: 15rpx;
cursor: pointer;
}
#details .head-top .post-list .post-item {
width: 84px;
height: 34px;
cursor: pointer;
}
#details .head-top .post-list .post-item:not(:last-child) {
margin-right: 10px;
}
#details .head-navigation {
margin-bottom: 20px;
}
#details .head-navigation .icon {
width: 16px;
height: 16px;
}
#details .head-navigation .arrows {
width: 7px;
height: 12px;
margin: 0 5px;
}
#details .head-navigation .text {
padding: 0 5px;
font-size: 14px;
color: #000000;
cursor: pointer;
}
#details .head-navigation .text:hover {
text-decoration: underline;
}
#details .matter {
align-items: flex-start;
margin-bottom: 50px;
}
#details .matter .matter-left {
width: 890px;
margin-right: 20px;
}
#details .matter .matter-left .block {
background-color: #ffffff;
border: 1px solid #e9eef2;
border-radius: 10px;
margin-bottom: 12px;
}
#details .matter .matter-left .matter-head {
height: 80px;
padding-left: 30px;
padding-right: 30px;
border-bottom: 1px solid #ebebeb;
}
#details .matter .matter-left .matter-head .avatar {
width: 40px;
height: 40px;
margin-right: 16px;
}
#details .matter .matter-left .matter-head .content {
flex-direction: column;
}
#details .matter .matter-left .matter-head .content .name {
font-size: 14px;
color: #333333;
margin-bottom: 2px;
}
#details .matter .matter-left .matter-head .content .name .icon {
height: 14px;
}
#details .matter .matter-left .matter-head .content .time {
font-size: 13px;
color: #aaaaaa;
}
#details .matter .matter-left .matter-head .operate .view {
font-size: 12px;
color: #aaaaaa;
margin-right: 15px;
}
#details .matter .matter-left .matter-head .operate .view .icon {
width: 13px;
height: 8px;
margin-right: 5px;
}
#details .matter .matter-left .matter-head .operate .btn {
width: 24px;
height: 16px;
background-color: #f2f2f2;
border-radius: 150px;
}
#details .matter .matter-left .matter-head .operate .btn .icon {
width: 18px;
height: 18px;
}
#details .matter .matter-left .label {
padding: 20px 30px 20px;
}
#details .matter .matter-left .label .item {
font-size: 14px;
color: #555555;
padding: 0 9px;
height: 24px;
line-height: 24px;
background-color: #f2f2f2;
border-radius: 6px;
margin-bottom: 10px;
}
#details .matter .matter-left .label .item.icon {
padding: 0;
}
#details .matter .matter-left .label .item:not(:last-child) {
margin-right: 10px;
}
#details .matter .matter-left .label .item.blue {
color: #ffffff;
background-color: #04b0d5;
}
#details .matter .matter-left .title {
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
font-weight: 650;
font-style: normal;
font-size: 24px;
color: #000000;
line-height: 36px;
padding: 0 30px;
margin-bottom: 30px;
}
#details .matter .matter-left .html {
padding: 0 30px;
font-family: "PingFangSC-Regular", "PingFang SC", sans-serif;
font-size: 15px;
color: #555555;
line-height: 24px;
margin-bottom: 66px;
}
#details .matter .matter-left .last-time {
color: #aaaaaa;
font-size: 13px;
padding: 0 30px 20px;
}
#details .matter .matter-left .bottom {
border-top: 1px solid #ebebeb;
height: 64px;
line-height: 64px;
justify-content: flex-end;
padding-right: 30px;
position: sticky;
bottom: 0;
background: #ffff;
border-radius: 0 0 10px 10px;
}
#details .matter .matter-left .bottom .bottom-item {
font-size: 14px;
color: #333333;
}
#details .matter .matter-left .bottom .bottom-item .icon {
width: 20px;
height: 20px;
margin-right: 6px;
}
#details .matter .matter-left .bottom .bottom-item:not(:last-child) {
margin-right: 60px;
}
#details .matter .matter-left .related .related-head {
padding-left: 30px;
padding-top: 20px;
padding-bottom: 12px;
border-bottom: 1px solid #ebebeb;
}
#details .matter .matter-left .related .related-head .text {
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
font-weight: 650;
font-style: normal;
font-size: 16px;
color: #000000;
margin-right: 14px;
}
#details .matter .matter-left .related .related-head .time {
font-family: "ArialMT", "Arial", sans-serif;
font-weight: 400;
font-style: normal;
font-size: 13px;
letter-spacing: normal;
color: #333333;
}
#details .matter .matter-left .related .list {
padding: 14px 30px;
flex-wrap: wrap;
}
#details .matter .matter-left .related .list .item {
width: 50%;
font-size: 14px;
color: #555555;
cursor: pointer;
}
#details .matter .matter-left .related .list .item:hover {
color: #000000;
}
#details .matter .matter-left .related .list .item .dot {
width: 6px;
height: 6px;
border-radius: 50%;
background-color: #f68251;
margin-right: 10px;
}
#details .matter .matter-left .related .list .item:not(:nth-last-child(-n + 2)) {
margin-bottom: 7px;
}
#details .matter .matter-left .related .list .item .text {
width: 352px;
}
#details .matter .sidebar-box .adv {
width: 291px;
height: 220px;
margin-bottom: 12px;
display: block;
cursor: pointer;
}
#details .matter .sidebar-box .adv .adv-img {
width: 291px;
height: 220px;
border-radius: 8px;
}
#details .matter .sidebar-box .sidebar-item {
width: 291px;
background-color: #ffffff;
border-radius: 8px;
margin-bottom: 12px;
}
#details .matter .sidebar-box .sidebar-item .sidebar-header {
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
font-weight: 650;
font-style: normal;
font-size: 15px;
color: #000000;
padding: 16px;
border-bottom: 1px solid #f2f2f2;
}
#details .matter .sidebar-box .sidebar-item .sidebar-content {
flex-direction: column;
padding: 20px 0;
}
#details .matter .sidebar-box .sidebar-item .sidebar-content .sidebar-QRCode {
width: 120px;
height: 120px;
margin-bottom: 18px;
}
#details .matter .sidebar-box .sidebar-item .sidebar-content .hint {
font-size: 14px;
color: #555555;
}
#details .matter .sidebar-box .sidebar-item .sidebar-content .hint .saoma-icon {
width: 14px;
height: 14px;
margin-right: 8px;
}
#details .matter .sidebar-box .sidebar-item .sidebar-content .author-box {
padding: 16px 5px 30px 16px;
width: 100%;
}
#details .matter .sidebar-box .sidebar-item .sidebar-content .author-box .avatar {
width: 50px;
height: 50px;
border-radius: 50%;
margin-right: 22px;
}
#details .matter .sidebar-box .sidebar-item .sidebar-content .author-box .author-content .author-name {
font-size: 14px;
color: #000000;
margin-bottom: 11px;
}
#details .matter .sidebar-box .sidebar-item .sidebar-content .author-box .author-content .author-info {
color: #7f7f7f;
font-size: 13px;
}
#details .matter .sidebar-box .sidebar-item .sidebar-content .author-box .author-content .author-info .amount {
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
font-weight: 650;
color: #000000;
margin: 0 5px;
}
#details .matter .sidebar-box .sidebar-item .sidebar-content .medal {
width: calc(100% - 16px);
padding-bottom: 22px;
margin-left: 16px;
border-bottom: 1px solid #f2f2f2;
}
#details .matter .sidebar-box .sidebar-item .sidebar-content .medal .medal-title {
font-size: 14px;
color: #7f7f7f;
margin-bottom: 14px;
}
#details .matter .sidebar-box .sidebar-item .sidebar-content .medal .medal-list {
flex-wrap: wrap;
}
#details .matter .sidebar-box .sidebar-item .sidebar-content .medal .medal-list .medal-item {
width: 32px;
height: 32px;
margin-right: 8px;
margin-bottom: 8px;
}
#details .matter .sidebar-box .sidebar-item .sidebar-content .recently {
width: 100%;
padding: 30px 16px 10px;
}
#details .matter .sidebar-box .sidebar-item .sidebar-content .recently .recently-title {
font-size: 14px;
color: #7f7f7f;
margin-bottom: 14px;
}
#details .matter .sidebar-box .sidebar-item .sidebar-content .recently .recently-list {
flex-direction: column;
}
#details .matter .sidebar-box .sidebar-item .sidebar-content .recently .recently-list .recently-item {
font-size: 14px;
color: #000000;
margin-bottom: 9px;
cursor: pointer;
}
#details .matter .sidebar-box .sidebar-item .sidebar-content .recently .recently-list .recently-item .dot {
width: 6px;
height: 6px;
margin-right: 8px;
border-radius: 50%;
background-color: #f68251;
margin-right: 10px;
}
#details .coins-area {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
}
#details .coins-area .coins-box {
width: 624px;
background-color: #ffffff;
border: 1px solid #e9eef2;
border-radius: 11px;
flex-direction: column;
padding: 40px 30px 35px;
position: relative;
}
#details .coins-area .coins-box .fork {
width: 12px;
height: 12px;
position: absolute;
top: 20px;
right: 20px;
cursor: pointer;
}
#details .coins-area .coins-box .coins-head {
margin-bottom: 32px;
}
#details .coins-area .coins-box .coins-head .icon {
width: 50px;
height: 60px;
margin-right: 16px;
}
#details .coins-area .coins-box .coins-head .text {
font-family: "PingFangSC-Regular", "PingFang SC", sans-serif;
font-weight: 400;
color: #7f7f7f;
font-size: 14px;
}
#details .coins-area .coins-box .coins-head .text .sum {
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
font-weight: 650;
font-size: 18px;
color: #000000;
margin: 0 5px;
}
#details .coins-area .coins-box .coins-input {
width: 333px;
height: 36px;
background-color: #ffffff;
border: 1px solid #d7d7d7;
border-radius: 8px;
overflow: hidden;
margin-bottom: 31px;
}
#details .coins-area .coins-box .coins-input .input {
height: 100%;
border: none;
outline: none;
font-size: 14px;
padding: 0 10px;
}
#details .coins-area .coins-box .coins-input .btn {
width: 84px;
height: 100%;
line-height: 36px;
text-align: center;
background-color: #50e3c2;
}
#details .coins-area .coins-box .coins-info {
color: #555555;
font-size: 14px;
margin-bottom: 43px;
}
#details .coins-area .coins-box .coins-info .icon {
width: 16px;
height: 16px;
margin-right: 6px;
}
#details .coins-area .coins-box .coins-info .sum {
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
font-weight: 650;
color: #000000;
margin: 0 5px;
}
#details .coins-area .coins-box .coins-info .strategy {
margin-left: 5px;
color: #026277;
cursor: pointer;
}
#details .coins-area .coins-box .coins-list-area {
max-height: 347px;
background-color: #fbfbfb;
border-radius: 16px;
width: 100%;
padding: 20px 20px 0;
flex-direction: column;
}
#details .coins-area .coins-box .coins-list-area .coins-total {
color: #7f7f7f;
font-size: 14px;
}
#details .coins-area .coins-box .coins-list-area .coins-total .sum {
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
font-weight: 650;
color: #000000;
margin: 0 5px;
}
#details .coins-area .coins-box .coins-list-area .list {
overflow: auto;
}
#details .coins-area .coins-box .coins-list-area .list .item {
height: 65px;
padding: 0 35px;
}
#details .coins-area .coins-box .coins-list-area .list .item:not(:last-child) {
border-bottom: 1px solid #f2f2f2;
}
#details .coins-area .coins-box .coins-list-area .list .item .serial {
font-family: "Arial-BoldMT", "Arial Bold", "Arial", sans-serif;
font-weight: 700;
font-style: normal;
color: #ffb600;
margin-right: 114px;
}
#details .coins-area .coins-box .coins-list-area .list .item .user {
color: #555555;
font-size: 13px;
}
#details .coins-area .coins-box .coins-list-area .list .item .user .avatar {
width: 32px;
height: 32px;
margin-right: 10px;
}
#details .coins-area .coins-box .coins-list-area .list .item .amount {
color: #000000;
font-size: 16px;
}
#details .coins-area .coins-box .coins-list-area .list .item .amount .text {
font-size: 13px;
margin-left: 2px;
}

585
css/details.less Normal file
View File

@@ -0,0 +1,585 @@
#details {
width: 1200px;
margin: 0 auto;
.head-top {
margin-bottom: 30px;
.logo {
height: 52px;
}
.input-box {
width: 370px;
height: 40px;
background-color: rgba(235, 235, 235, 1);
border: 2px solid rgba(215, 215, 215, 1);
border-radius: 11px;
padding: 0 15px;
justify-content: space-between;
margin-right: 20px;
.input {
border: none;
outline: none;
height: 100%;
background-color: transparent;
}
.icon {
width: 18px;
height: 18px;
margin-left: 15rpx;
cursor: pointer;
}
}
.post-list {
.post-item {
width: 84px;
height: 34px;
cursor: pointer;
&:not(:last-child) {
margin-right: 10px;
}
}
}
}
.head-navigation {
margin-bottom: 20px;
.icon {
width: 16px;
height: 16px;
}
.arrows {
width: 7px;
height: 12px;
margin: 0 5px;
}
.text {
padding: 0 5px;
font-size: 14px;
color: #000000;
cursor: pointer;
&:hover {
text-decoration: underline;
}
}
}
.matter {
align-items: flex-start;
margin-bottom: 50px;
.matter-left {
width: 890px;
margin-right: 20px;
.block {
background-color: rgba(255, 255, 255, 1);
border: 1px solid rgba(233, 238, 242, 1);
border-radius: 10px;
margin-bottom: 12px;
}
.matter-head {
height: 80px;
padding-left: 30px;
padding-right: 30px;
border-bottom: 1px solid #ebebeb;
.avatar {
width: 40px;
height: 40px;
margin-right: 16px;
}
.content {
flex-direction: column;
.name {
font-size: 14px;
color: #333333;
margin-bottom: 2px;
.icon {
height: 14px;
}
}
.time {
font-size: 13px;
color: #aaaaaa;
}
}
.operate {
.view {
.icon {
width: 13px;
height: 8px;
margin-right: 5px;
}
font-size: 12px;
color: #aaaaaa;
margin-right: 15px;
}
.btn {
width: 24px;
height: 16px;
background-color: rgba(242, 242, 242, 1);
border-radius: 150px;
.icon {
width: 18px;
height: 18px;
}
}
}
}
.label {
padding: 20px 30px 20px;
.item {
font-size: 14px;
color: #555555;
padding: 0 9px;
height: 24px;
line-height: 24px;
background-color: rgba(242, 242, 242, 1);
border-radius: 6px;
margin-bottom: 10px;
&.icon {
padding: 0;
}
&:not(:last-child) {
margin-right: 10px;
}
&.blue {
color: #ffffff;
background-color: #04b0d5;
}
}
}
.title {
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
font-weight: 650;
font-style: normal;
font-size: 24px;
color: #000000;
line-height: 36px;
padding: 0 30px;
margin-bottom: 30px;
}
.html {
padding: 0 30px;
font-family: "PingFangSC-Regular", "PingFang SC", sans-serif;
font-size: 15px;
color: #555555;
line-height: 24px;
margin-bottom: 66px;
}
.last-time {
color: #aaaaaa;
font-size: 13px;
padding: 0 30px 20px;
}
.bottom {
border-top: 1px solid #ebebeb;
height: 64px;
line-height: 64px;
justify-content: flex-end;
padding-right: 30px;
position: sticky;
bottom: 0;
background: #ffff;
border-radius: 0 0 10px 10px;
.bottom-item {
.icon {
width: 20px;
height: 20px;
margin-right: 6px;
}
font-size: 14px;
color: #333333;
&:not(:last-child) {
margin-right: 60px;
}
}
}
.related {
.related-head {
padding-left: 30px;
padding-top: 20px;
padding-bottom: 12px;
border-bottom: 1px solid #ebebeb;
.text {
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
font-weight: 650;
font-style: normal;
font-size: 16px;
color: #000000;
margin-right: 14px;
}
.time {
font-family: "ArialMT", "Arial", sans-serif;
font-weight: 400;
font-style: normal;
font-size: 13px;
letter-spacing: normal;
color: #333333;
}
}
.list {
padding: 14px 30px;
flex-wrap: wrap;
.item {
width: 50%;
font-size: 14px;
color: #555555;
cursor: pointer;
&:hover {
color: #000000;
}
.dot {
width: 6px;
height: 6px;
border-radius: 50%;
background-color: #f68251;
margin-right: 10px;
}
&:not(:nth-last-child(-n + 2)) {
margin-bottom: 7px;
}
.text {
width: 352px;
}
}
}
}
}
.sidebar-box {
.adv {
width: 291px;
height: 220px;
margin-bottom: 12px;
display: block;
cursor: pointer;
.adv-img {
width: 291px;
height: 220px;
border-radius: 8px;
}
}
.sidebar-item {
width: 291px;
background-color: rgba(255, 255, 255, 1);
border-radius: 8px;
margin-bottom: 12px;
.sidebar-header {
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
font-weight: 650;
font-style: normal;
font-size: 15px;
color: #000000;
padding: 16px;
border-bottom: 1px solid #f2f2f2;
}
.sidebar-content {
flex-direction: column;
padding: 20px 0;
.sidebar-QRCode {
width: 120px;
height: 120px;
margin-bottom: 18px;
}
.hint {
.saoma-icon {
width: 14px;
height: 14px;
margin-right: 8px;
}
font-size: 14px;
color: #555555;
}
.author-box {
padding: 16px 5px 30px 16px;
width: 100%;
.avatar {
width: 50px;
height: 50px;
border-radius: 50%;
margin-right: 22px;
}
.author-content {
.author-name {
font-size: 14px;
color: #000000;
margin-bottom: 11px;
}
.author-info {
color: #7f7f7f;
font-size: 13px;
.amount {
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
font-weight: 650;
color: #000000;
margin: 0 5px;
}
}
}
}
.medal {
width: calc(100% - 16px);
padding-bottom: 22px;
margin-left: 16px;
border-bottom: 1px solid #f2f2f2;
.medal-title {
font-size: 14px;
color: #7f7f7f;
margin-bottom: 14px;
}
.medal-list {
flex-wrap: wrap;
.medal-item {
width: 32px;
height: 32px;
margin-right: 8px;
margin-bottom: 8px;
}
}
}
.recently {
width: 100%;
padding: 30px 16px 10px;
.recently-title {
font-size: 14px;
color: #7f7f7f;
margin-bottom: 14px;
}
.recently-list {
flex-direction: column;
.recently-item {
font-size: 14px;
color: #000000;
margin-bottom: 9px;
cursor: pointer;
.dot {
width: 6px;
height: 6px;
margin-right: 8px;
border-radius: 50%;
background-color: #f68251;
margin-right: 10px;
}
}
}
}
}
}
}
}
.coins-area {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
.coins-box {
width: 624px;
background-color: rgba(255, 255, 255, 1);
border: 1px solid rgba(233, 238, 242, 1);
border-radius: 11px;
flex-direction: column;
padding: 40px 30px 35px;
position: relative;
.fork {
width: 12px;
height: 12px;
position: absolute;
top: 20px;
right: 20px;
cursor: pointer;
}
.coins-head {
margin-bottom: 32px;
.icon {
width: 50px;
height: 60px;
margin-right: 16px;
}
.text {
font-family: "PingFangSC-Regular", "PingFang SC", sans-serif;
font-weight: 400;
color: #7f7f7f;
font-size: 14px;
.sum {
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
font-weight: 650;
font-size: 18px;
color: #000000;
margin: 0 5px;
}
}
}
.coins-input {
width: 333px;
height: 36px;
background-color: rgba(255, 255, 255, 1);
border: 1px solid rgba(215, 215, 215, 1);
border-radius: 8px;
overflow: hidden;
margin-bottom: 31px;
.input {
height: 100%;
border: none;
outline: none;
font-size: 14px;
padding: 0 10px;
}
.btn {
width: 84px;
height: 100%;
line-height: 36px;
text-align: center;
background-color: rgba(80, 227, 194, 1);
}
}
.coins-info {
color: #555555;
font-size: 14px;
margin-bottom: 43px;
.icon {
width: 16px;
height: 16px;
margin-right: 6px;
}
.sum {
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
font-weight: 650;
color: #000000;
margin: 0 5px;
}
.strategy {
margin-left: 5px;
color: #026277;
cursor: pointer;
}
}
.coins-list-area {
max-height: 347px;
background-color: rgba(251, 251, 251, 1);
border-radius: 16px;
width: 100%;
padding: 20px 20px 0;
flex-direction: column;
.coins-total {
color: #7f7f7f;
font-size: 14px;
.sum {
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
font-weight: 650;
color: #000000;
margin: 0 5px;
}
}
.list {
overflow: auto;
.item {
height: 65px;
padding: 0 35px;
&:not(:last-child) {
border-bottom: 1px solid #f2f2f2;
}
.serial {
font-family: "Arial-BoldMT", "Arial Bold", "Arial", sans-serif;
font-weight: 700;
font-style: normal;
color: #ffb600;
margin-right: 114px;
}
.user {
color: #555555;
font-size: 13px;
.avatar {
width: 32px;
height: 32px;
margin-right: 10px;
}
}
.amount {
color: #000000;
font-size: 16px;
.text {
font-size: 13px;
margin-left: 2px;
}
}
}
}
}
}
}
}

464
css/homepage-me.css Normal file
View File

@@ -0,0 +1,464 @@
#homepage-me {
width: 1200px;
margin: 0 auto;
}
#homepage-me .head-top {
margin-bottom: 30px;
}
#homepage-me .head-top .logo {
height: 52px;
}
#homepage-me .head-top .input-box {
width: 370px;
height: 40px;
background-color: #ebebeb;
border: 2px solid #d7d7d7;
border-radius: 11px;
padding: 0 15px;
justify-content: space-between;
margin-right: 20px;
}
#homepage-me .head-top .input-box .input {
border: none;
outline: none;
height: 100%;
background-color: transparent;
}
#homepage-me .head-top .input-box .icon {
width: 18px;
height: 18px;
margin-left: 15rpx;
cursor: pointer;
}
#homepage-me .head-top .sign-in {
width: 192px;
height: 40px;
border-radius: 83px;
cursor: pointer;
}
#homepage-me .head-top .sign-in.sign-in-already {
background-color: #ffffff;
font-size: 14px;
color: #333;
}
#homepage-me .head-top .sign-in.sign-in-already .sign-icon {
width: 20px;
height: 20px;
margin-right: 10px;
}
#homepage-me .head-top .sign-in.sign-in-no {
position: relative;
z-index: 1;
padding-right: 8px;
}
#homepage-me .head-top .sign-in.sign-in-no .sign-in-bj {
position: absolute;
top: 0;
left: 0;
z-index: -1;
width: 190px;
height: 40px;
}
#homepage-me .head-top .sign-in.sign-in-no .coin-bj {
position: absolute;
width: 157px;
height: 33px;
top: 4px;
left: 29px;
}
#homepage-me .head-top .sign-in.sign-in-no .coin-icon {
width: 43px;
height: 51px;
align-self: flex-end;
z-index: 1;
margin-left: -2px;
}
#homepage-me .head-top .sign-in.sign-in-no .text {
text-align: center;
text-shadow: 1px 1px 2px #a63603;
-webkit-text-shadow: 1px 1px 2px #a63603;
-moz-text-shadow: 1px 1px 2px #a63603;
font-size: 15px;
color: #fff;
}
#homepage-me .head-top .sign-in.sign-in-no .sign-go {
width: 30px;
height: 30px;
font-family: "Arial-BoldMT", "Arial Bold", "Arial", sans-serif;
font-weight: 700;
font-size: 12px;
color: #710600;
position: relative;
}
#homepage-me .head-top .sign-in.sign-in-no .sign-go .sign-go-bj {
width: 100%;
height: 100%;
position: absolute;
z-index: -1;
}
#homepage-me .head-top .sign-in.sign-in-no .petal1,
#homepage-me .head-top .sign-in.sign-in-no .petal2,
#homepage-me .head-top .sign-in.sign-in-no .petal3 {
position: absolute;
}
#homepage-me .head-top .sign-in.sign-in-no .petal1 {
width: 24px;
height: 10px;
top: 3px;
left: 55px;
}
#homepage-me .head-top .sign-in.sign-in-no .petal2 {
width: 16px;
height: 14px;
top: 25px;
left: 92px;
}
#homepage-me .head-top .sign-in.sign-in-no .petal3 {
width: 17px;
height: 12px;
top: 25px;
left: 136px;
}
#homepage-me .head-navigation {
margin-bottom: 20px;
}
#homepage-me .head-navigation .icon {
width: 16px;
height: 16px;
}
#homepage-me .head-navigation .arrows {
width: 7px;
height: 12px;
margin: 0 5px;
}
#homepage-me .head-navigation .text {
padding: 0 5px;
font-size: 14px;
color: #000000;
cursor: pointer;
}
#homepage-me .head-navigation .text:hover {
text-decoration: underline;
}
#homepage-me .matter {
align-items: flex-start;
}
#homepage-me .matter .card-user {
width: 320px;
background: -webkit-linear-gradient(270.06444514deg, #ffffff 0%, #eef8f9 100%);
background: -moz-linear-gradient(179.93555486deg, #ffffff 0%, #eef8f9 100%);
background: linear-gradient(179.93555486deg, #ffffff 0%, #eef8f9 100%);
box-sizing: border-box;
border: 1px solid #e9eef2;
border-radius: 10px;
flex-direction: column;
padding-top: 39px;
padding-bottom: 38px;
margin-right: 20px;
}
#homepage-me .matter .card-user .avatar {
width: 120px;
height: 120px;
border-radius: 8px;
margin-bottom: 20px;
}
#homepage-me .matter .card-user .name-area {
margin-bottom: 40px;
}
#homepage-me .matter .card-user .name-area .username {
font-size: 15px;
color: #333;
margin-bottom: 12px;
}
#homepage-me .matter .card-user .name-area .uid {
color: #7f7f7f;
font-size: 13px;
}
#homepage-me .matter .card-user .name-area .uid .icon {
width: 14px;
height: 14px;
margin-left: 9px;
cursor: pointer;
}
#homepage-me .matter .card-user .bi-box {
position: relative;
width: 260px;
height: 65px;
background: linear-gradient(255.75deg, #ffbd15 0%, #fff5d1 99%);
border-radius: 12px;
z-index: 1;
justify-content: space-between;
padding-left: 10px;
padding-right: 10px;
margin-bottom: 40px;
}
#homepage-me .matter .card-user .bi-box .bi-masking {
position: absolute;
top: 0;
left: 0;
width: 260px;
height: 65px;
z-index: -1;
}
#homepage-me .matter .card-user .bi-box .bi-icon {
width: 50px;
height: 56px;
margin-right: 7px;
}
#homepage-me .matter .card-user .bi-box .bi-content {
flex-direction: column;
}
#homepage-me .matter .card-user .bi-box .bi-content .bi-sum {
font-family: Arial-Black, "Arial Black", sans-serif;
font-weight: 900;
font-style: normal;
font-size: 16px;
color: #000000;
}
#homepage-me .matter .card-user .bi-box .bi-content .bi-text {
font-size: 13px;
letter-spacing: normal;
color: #333333;
}
#homepage-me .matter .card-user .bi-box .bi-btn {
width: 98px;
height: 26px;
background-color: #fff6d8;
border-radius: 60px;
box-shadow: rgba(0, 0, 0, 0.145) 0px 0px 5px;
font-size: 15px;
line-height: 26px;
font-size: 13px;
color: #ab7713;
}
#homepage-me .matter .card-user .bi-box .bi-btn .bi-question {
width: 14px;
height: 14px;
margin-left: 5px;
}
#homepage-me .matter .card-user .medal-area {
margin: 0 30px;
align-self: self-start;
}
#homepage-me .matter .card-user .medal-area .title {
font-size: 14px;
color: #7f7f7f;
margin-bottom: 13px;
}
#homepage-me .matter .card-user .medal-area .list {
flex-direction: row;
flex-wrap: wrap;
}
#homepage-me .matter .card-user .medal-area .list .item {
height: 30px;
max-width: 30px;
margin-right: 8px;
margin-bottom: 8px;
}
#homepage-me .matter .matter-content .message-box {
background-color: #ffffff;
border: 1px solid #e9eef2;
border-radius: 10px;
padding-left: 95px;
padding-right: 40px;
padding-bottom: 31px;
margin-bottom: 20px;
}
#homepage-me .matter .matter-content .message-box .header {
border-bottom: 1px dotted #d7d7d7;
padding-top: 46px;
padding-bottom: 19px;
position: relative;
}
#homepage-me .matter .matter-content .message-box .header .avatar {
width: 40px;
height: 40px;
border-radius: 50%;
position: absolute;
top: 40px;
left: -55px;
}
#homepage-me .matter .matter-content .message-box .header .username {
font-size: 14px;
color: #333333;
}
#homepage-me .matter .matter-content .message-box .header .icon {
height: 40px;
}
#homepage-me .matter .matter-content .message-box .info-list {
flex-flow: wrap;
padding-top: 20px;
border-bottom: 1px dotted #d7d7d7;
}
#homepage-me .matter .matter-content .message-box .info-list .item {
width: 50%;
margin-bottom: 15px;
}
#homepage-me .matter .matter-content .message-box .info-list .item .label {
font-size: 14px;
color: #7f7f7f;
width: 87px;
}
#homepage-me .matter .matter-content .message-box .info-list .item .value {
font-size: 14px;
color: #000000;
}
#homepage-me .matter .matter-content .message-box .info-list .item .status {
color: #555555;
font-size: 13px;
padding: 0 6px;
height: 20px;
line-height: 20px;
background-color: #f0f1ec;
border-radius: 23px;
margin-left: 10px;
}
#homepage-me .matter .matter-content .message-box .info-list .item .status.blue {
color: #ffffff;
background-color: #04b0d5;
}
#homepage-me .matter .matter-content .message-box .stats {
padding-top: 20px;
padding-bottom: 21px;
font-size: 14px;
}
#homepage-me .matter .matter-content .message-box .stats .item .text {
color: #7f7f7f;
margin-right: 5px;
}
#homepage-me .matter .matter-content .message-box .stats .item .num {
font-family: "Arial-BoldMT", "Arial Bold", "Arial", sans-serif;
font-weight: 700;
color: #04b0d5;
}
#homepage-me .matter .matter-content .message-box .stats .line {
color: #d7d7d7;
margin: 0 14px;
}
#homepage-me .matter .matter-content .message-box .tags {
flex-wrap: wrap;
}
#homepage-me .matter .matter-content .message-box .tags .item {
padding: 0 10px;
font-size: 14px;
color: #333333;
height: 24px;
background-color: #f6f6f6;
border: 1px solid #f0f1ec;
border-radius: 5px;
margin-right: 20px;
margin-bottom: 10px;
}
#homepage-me .matter .matter-content .message-box .tags .item .icon {
height: 13px;
margin-right: 7px;
}
#homepage-me .matter .matter-content .list-area {
width: 860px;
background-color: #ffffff;
border: 1px solid #e9eef2;
border-radius: 10px;
}
#homepage-me .matter .matter-content .list-area .operation-box {
padding-top: 40px;
padding-left: 95px;
padding-right: 40px;
padding-bottom: 18px;
font-size: 18px;
color: #7f7f7f;
border-bottom: 1px dotted #d7d7d7;
}
#homepage-me .matter .matter-content .list-area .operation-box .operation-item {
position: relative;
cursor: pointer;
}
#homepage-me .matter .matter-content .list-area .operation-box .operation-item:not(:last-child) {
margin-right: 40px;
}
#homepage-me .matter .matter-content .list-area .operation-box .operation-item.pitch {
font-family: PingFangSC-Semibold, "PingFang SC Semibold", "PingFang SC", sans-serif;
font-weight: 650;
font-style: normal;
font-size: 18px;
color: #000000;
}
#homepage-me .matter .matter-content .list-area .operation-box .operation-item.pitch::after {
content: "";
width: 100%;
height: 6px;
background-color: #50e3c2;
border-radius: 26px;
position: absolute;
bottom: -21px;
display: block;
}
#homepage-me .matter .matter-content .list-area .classify {
padding-top: 37px;
padding-bottom: 23px;
padding-left: 95px;
padding-right: 40px;
}
#homepage-me .matter .matter-content .list-area .classify .item {
width: 50px;
height: 32px;
line-height: 32px;
text-align: center;
background-color: #ffffff;
border: 1px solid #f2f2f2;
border-radius: 12px;
color: #333333;
cursor: pointer;
font-size: 15px;
}
#homepage-me .matter .matter-content .list-area .classify .item.pitch {
background-color: #d35110;
color: #ffffff;
}
#homepage-me .matter .matter-content .list-area .classify .item:not(:last-child) {
margin-right: 10px;
}
#homepage-me .matter .matter-content .list-area .issue-data {
color: #7f7f7f;
font-size: 14px;
margin-bottom: 20px;
padding-left: 95px;
padding-right: 40px;
}
#homepage-me .matter .matter-content .list-area .issue-data .num {
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
font-weight: 650;
color: #000000;
margin: 0 5px;
}
#homepage-me .matter .matter-content .list-area .list-box {
padding-left: 95px;
padding-right: 40px;
}
#homepage-me .matter .matter-content .list-area .list-box .item-box {
margin-bottom: 20px;
}
#homepage-me .matter .matter-content .list-area .empty {
width: 725px;
height: 360px;
background-color: #ffffff;
border: 1px solid #e9eef2;
border-radius: 10px;
flex-direction: column;
margin-bottom: 20px;
margin-left: 95px;
margin-right: 40px;
}
#homepage-me .matter .matter-content .list-area .empty .empty-icon {
width: 80px;
height: 94px;
}
#homepage-me .matter .matter-content .list-area .empty .empty-text {
font-size: 14px;
color: #7f7f7f;
margin-top: 10px;
}
#homepage-me .matter .matter-content .list-area .load-more {
padding: 20px 0 40px;
color: #7f7f7f;
font-size: 14px;
}

535
css/homepage-me.less Normal file
View File

@@ -0,0 +1,535 @@
#homepage-me {
width: 1200px;
margin: 0 auto;
.head-top {
margin-bottom: 30px;
.logo {
height: 52px;
}
.input-box {
width: 370px;
height: 40px;
background-color: rgba(235, 235, 235, 1);
border: 2px solid rgba(215, 215, 215, 1);
border-radius: 11px;
padding: 0 15px;
justify-content: space-between;
margin-right: 20px;
.input {
border: none;
outline: none;
height: 100%;
background-color: transparent;
}
.icon {
width: 18px;
height: 18px;
margin-left: 15rpx;
cursor: pointer;
}
}
.sign-in {
width: 192px;
height: 40px;
border-radius: 83px;
cursor: pointer;
&.sign-in-already {
background-color: #ffffff;
font-size: 14px;
color: #333;
.sign-icon {
width: 20px;
height: 20px;
margin-right: 10px;
}
}
&.sign-in-no {
position: relative;
z-index: 1;
padding-right: 8px;
.sign-in-bj {
position: absolute;
top: 0;
left: 0;
z-index: -1;
width: 190px;
height: 40px;
}
.coin-bj {
position: absolute;
width: 157px;
height: 33px;
top: 4px;
left: 29px;
}
.coin-icon {
width: 43px;
height: 51px;
align-self: flex-end;
z-index: 1;
margin-left: -2px;
}
.text {
text-align: center;
text-shadow: 1px 1px 2px #a63603;
-webkit-text-shadow: 1px 1px 2px #a63603;
-moz-text-shadow: 1px 1px 2px #a63603;
font-size: 15px;
color: #fff;
}
.sign-go {
width: 30px;
height: 30px;
font-family: "Arial-BoldMT", "Arial Bold", "Arial", sans-serif;
font-weight: 700;
font-size: 12px;
color: #710600;
position: relative;
.sign-go-bj {
width: 100%;
height: 100%;
position: absolute;
z-index: -1;
}
}
.petal1,
.petal2,
.petal3 {
position: absolute;
}
.petal1 {
width: 24px;
height: 10px;
top: 3px;
left: 55px;
}
.petal2 {
width: 16px;
height: 14px;
top: 25px;
left: 92px;
}
.petal3 {
width: 17px;
height: 12px;
top: 25px;
left: 136px;
}
}
}
}
.head-navigation {
margin-bottom: 20px;
.icon {
width: 16px;
height: 16px;
}
.arrows {
width: 7px;
height: 12px;
margin: 0 5px;
}
.text {
padding: 0 5px;
font-size: 14px;
color: #000000;
cursor: pointer;
&:hover {
text-decoration: underline;
}
}
}
.matter {
align-items: flex-start;
.card-user {
width: 320px;
background: -webkit-linear-gradient(270.064445137829deg, rgba(255, 255, 255, 1) 0%, rgba(238, 248, 249, 1) 100%);
background: -moz-linear-gradient(179.935554862171deg, rgba(255, 255, 255, 1) 0%, rgba(238, 248, 249, 1) 100%);
background: linear-gradient(179.935554862171deg, rgba(255, 255, 255, 1) 0%, rgba(238, 248, 249, 1) 100%);
box-sizing: border-box;
border: 1px solid rgba(233, 238, 242, 1);
border-radius: 10px;
flex-direction: column;
padding-top: 39px;
padding-bottom: 38px;
margin-right: 20px;
.avatar {
width: 120px;
height: 120px;
border-radius: 8px;
margin-bottom: 20px;
}
.name-area {
margin-bottom: 40px;
.username {
font-size: 15px;
color: #333;
margin-bottom: 12px;
}
.uid {
color: #7f7f7f;
font-size: 13px;
.icon {
width: 14px;
height: 14px;
margin-left: 9px;
cursor: pointer;
}
}
}
.bi-box {
width: 260px;
height: 65px;
position: relative;
width: 260px;
height: 65px;
background: linear-gradient(255.75deg, rgb(255, 189, 21) 0%, rgb(255, 245, 209) 99%);
border-radius: 12px;
z-index: 1;
justify-content: space-between;
padding-left: 10px;
padding-right: 10px;
margin-bottom: 40px;
.bi-masking {
position: absolute;
top: 0;
left: 0;
width: 260px;
height: 65px;
z-index: -1;
}
.bi-icon {
width: 50px;
height: 56px;
margin-right: 7px;
}
.bi-content {
flex-direction: column;
.bi-sum {
font-family: Arial-Black, "Arial Black", sans-serif;
font-weight: 900;
font-style: normal;
font-size: 16px;
color: #000000;
}
.bi-text {
font-size: 13px;
letter-spacing: normal;
color: #333333;
}
}
.bi-btn {
width: 98px;
height: 26px;
background-color: rgb(255, 246, 216);
border-radius: 60px;
box-shadow: rgba(0, 0, 0, 0.145) 0px 0px 5px;
font-size: 15px;
color: rgb(171, 119, 19);
line-height: 26px;
font-size: 13px;
color: rgb(171, 119, 19);
.bi-question {
width: 14px;
height: 14px;
margin-left: 5px;
}
}
}
.medal-area {
margin: 0 30px;
align-self: self-start;
.title {
font-size: 14px;
color: #7f7f7f;
margin-bottom: 13px;
}
.list {
flex-direction: row;
flex-wrap: wrap;
.item {
height: 30px;
max-width: 30px;
margin-right: 8px;
margin-bottom: 8px;
}
}
}
}
.matter-content {
.message-box {
background-color: rgba(255, 255, 255, 1);
border: 1px solid rgba(233, 238, 242, 1);
border-radius: 10px;
padding-left: 95px;
padding-right: 40px;
padding-bottom: 31px;
margin-bottom: 20px;
.header {
border-bottom: 1px dotted #d7d7d7;
padding-top: 46px;
padding-bottom: 19px;
position: relative;
.avatar {
width: 40px;
height: 40px;
border-radius: 50%;
position: absolute;
top: 40px;
left: -55px;
}
.username {
font-size: 14px;
color: #333333;
}
.icon {
height: 40px;
}
}
.info-list {
flex-flow: wrap;
padding-top: 20px;
border-bottom: 1px dotted #d7d7d7;
.item {
width: 50%;
margin-bottom: 15px;
.label {
font-size: 14px;
color: #7f7f7f;
width: 87px;
}
.value {
font-size: 14px;
color: #000000;
}
.status {
color: #555555;
font-size: 13px;
padding: 0 6px;
height: 20px;
line-height: 20px;
background-color: rgba(240, 241, 236, 1);
border-radius: 23px;
margin-left: 10px;
&.blue {
color: #ffffff;
background-color: rgba(4, 176, 213, 1);
}
}
}
}
.stats {
padding-top: 20px;
padding-bottom: 21px;
font-size: 14px;
.item {
.text {
color: #7f7f7f;
margin-right: 5px;
}
.num {
font-family: "Arial-BoldMT", "Arial Bold", "Arial", sans-serif;
font-weight: 700;
color: #04b0d5;
}
}
.line {
color: #d7d7d7;
margin: 0 14px;
}
}
.tags {
flex-wrap: wrap;
.item {
padding: 0 10px;
font-size: 14px;
color: #333333;
height: 24px;
background-color: rgba(246, 246, 246, 1);
border: 1px solid rgba(240, 241, 236, 1);
border-radius: 5px;
margin-right: 20px;
margin-bottom: 10px;
.icon {
height: 13px;
margin-right: 7px;
}
}
}
}
.list-area {
width: 860px;
background-color: rgba(255, 255, 255, 1);
border: 1px solid rgba(233, 238, 242, 1);
border-radius: 10px;
.operation-box {
padding-top: 40px;
padding-left: 95px;
padding-right: 40px;
padding-bottom: 18px;
font-size: 18px;
color: rgb(127, 127, 127);
border-bottom: 1px dotted #d7d7d7;
.operation-item {
position: relative;
cursor: pointer;
&:not(:last-child) {
margin-right: 40px;
}
&.pitch {
font-family: PingFangSC-Semibold, "PingFang SC Semibold", "PingFang SC", sans-serif;
font-weight: 650;
font-style: normal;
font-size: 18px;
color: #000000;
&::after {
content: "";
width: 100%;
height: 6px;
background-color: rgb(80, 227, 194);
border-radius: 26px;
position: absolute;
bottom: -21px;
display: block;
}
}
}
}
.classify {
padding-top: 37px;
padding-bottom: 23px;
padding-left: 95px;
padding-right: 40px;
.item {
width: 50px;
height: 32px;
line-height: 32px;
text-align: center;
background-color: rgba(255, 255, 255, 1);
border: 1px solid rgba(242, 242, 242, 1);
border-radius: 12px;
color: #333333;
cursor: pointer;
font-size: 15px;
&.pitch {
background-color: rgba(211, 81, 16, 1);
color: #ffffff;
}
&:not(:last-child) {
margin-right: 10px;
}
}
}
.issue-data {
color: #7f7f7f;
font-size: 14px;
margin-bottom: 20px;
padding-left: 95px;
padding-right: 40px;
.num {
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
font-weight: 650;
color: #000000;
margin: 0 5px;
}
}
.list-box {
padding-left: 95px;
padding-right: 40px;
.item-box {
margin-bottom: 20px;
}
}
.empty {
width: 725px;
height: 360px;
background-color: rgba(255, 255, 255, 1);
border: 1px solid rgba(233, 238, 242, 1);
border-radius: 10px;
flex-direction: column;
margin-bottom: 20px;
margin-left: 95px;
margin-right: 40px;
.empty-icon {
width: 80px;
height: 94px;
}
.empty-text {
font-size: 14px;
color: #7f7f7f;
margin-top: 10px;
}
}
.load-more {
padding: 20px 0 40px;
color: #7f7f7f;
font-size: 14px;
}
}
}
}
}

View File

@@ -1,44 +1,3 @@
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: "PingFangSC-Regular", "PingFang SC", sans-serif;
font-weight: 400;
font-style: normal;
}
body {
background-color: #eef2f5;
}
/* 公共的 css 样式 */
.flexflex {
display: flex;
}
.flexcenter {
display: flex;
justify-content: center;
align-items: center;
}
.flexjcenter {
display: flex;
justify-content: center;
}
.flexacenter {
display: flex;
align-items: center;
}
.flex1 {
flex: 1;
}
.flexcolumn {
display: flex;
flex-direction: column;
}
.one-line-display {
word-break: keep-all;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
#homepage-other {
width: 1200px;
margin: 0 auto;
@@ -222,7 +181,7 @@ body {
cursor: pointer;
}
#homepage-other .matter .card-user .medal-area {
margin: 0 30px 44px;
margin: 0 30px 36px;
align-self: self-start;
}
#homepage-other .matter .card-user .medal-area .title {
@@ -237,6 +196,7 @@ body {
height: 30px;
max-width: 30px;
margin-right: 8px;
margin-bottom: 8px;
}
#homepage-other .matter .card-user .btn-area .item {
width: 200px;
@@ -398,3 +358,25 @@ body {
#homepage-other .matter .matter-content .list-area .list-box .item-box {
margin-bottom: 20px;
}
#homepage-other .matter .matter-content .list-area .empty {
width: 725px;
height: 360px;
background-color: #ffffff;
border: 1px solid #e9eef2;
border-radius: 10px;
flex-direction: column;
}
#homepage-other .matter .matter-content .list-area .empty .empty-icon {
width: 80px;
height: 94px;
}
#homepage-other .matter .matter-content .list-area .empty .empty-text {
font-size: 14px;
color: #7f7f7f;
margin-top: 10px;
}
#homepage-other .matter .matter-content .list-area .load-more {
padding: 20px 0 40px;
color: #7f7f7f;
font-size: 14px;
}

View File

@@ -1,53 +1,3 @@
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: "PingFangSC-Regular", "PingFang SC", sans-serif;
font-weight: 400;
font-style: normal;
}
body {
background-color: rgba(238, 242, 245, 1);
}
/* 公共的 css 样式 */
.flexflex {
display: flex;
}
.flexcenter {
display: flex;
justify-content: center;
align-items: center;
}
.flexjcenter {
display: flex;
justify-content: center;
}
.flexacenter {
display: flex;
align-items: center;
}
.flex1 {
flex: 1;
}
.flexcolumn {
display: flex;
flex-direction: column;
}
.one-line-display {
word-break: keep-all;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
#homepage-other {
width: 1200px;
margin: 0 auto;
@@ -251,7 +201,7 @@ body {
}
.medal-area {
margin: 0 30px 44px;
margin: 0 30px 36px;
align-self: self-start;
.title {
@@ -266,6 +216,7 @@ body {
height: 30px;
max-width: 30px;
margin-right: 8px;
margin-bottom: 8px;
}
}
}
@@ -461,6 +412,31 @@ body {
margin-bottom: 20px;
}
}
.empty {
width: 725px;
height: 360px;
background-color: rgba(255, 255, 255, 1);
border: 1px solid rgba(233, 238, 242, 1);
border-radius: 10px;
flex-direction: column;
.empty-icon {
width: 80px;
height: 94px;
}
.empty-text {
font-size: 14px;
color: #7f7f7f;
margin-top: 10px;
}
}
.load-more {
padding: 20px 0 40px;
color: #7f7f7f;
font-size: 14px;
}
}
}
}

View File

@@ -39,6 +39,13 @@ body {
overflow: hidden;
text-overflow: ellipsis;
}
.two-line-display {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
text-overflow: ellipsis;
}
.item-box {
max-width: 897px;
width: 100%;
@@ -91,7 +98,7 @@ body {
height: 18px;
}
.item-box .label {
margin-bottom: 10px;
flex-wrap: wrap;
}
.item-box .label .item {
font-size: 14px;
@@ -101,6 +108,7 @@ body {
line-height: 24px;
background-color: #f2f2f2;
border-radius: 6px;
margin-bottom: 10px;
}
.item-box .label .item.icon {
padding: 0;
@@ -395,6 +403,60 @@ body {
font-size: 14px;
color: #555555;
}
.item-box.item-tenement .title {
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
font-weight: 650;
font-style: normal;
font-size: 20px;
color: #000000;
line-height: 36px;
margin-bottom: 10px;
}
.item-box.item-tenement .site-box {
margin-bottom: 10px;
}
.item-box.item-tenement .site-box .site-item {
font-size: 15px;
color: #555555;
}
.item-box.item-tenement .site-box .site-item .site-icon {
width: 18px;
height: 18px;
margin-right: 4px;
}
.item-box.item-tenement .price-section {
font-size: 14px;
color: #7f7f7f;
margin-bottom: 21px;
}
.item-box.item-tenement .price-section .unit {
font-family: "Arial-Black", "Arial Black", sans-serif;
font-weight: 900;
color: #000000;
margin-right: 6px;
}
.item-box.item-tenement .price-section .price {
font-family: "Arial-Black", "Arial Black", sans-serif;
font-weight: 900;
font-size: 20px;
color: #f95d5d;
margin-right: 7px;
}
.item-box.item-tenement .price-section .text {
color: #555555;
margin-right: 21px;
}
.item-box.item-tenement .picture {
overflow: auto;
}
.item-box.item-tenement .picture .picture-item {
width: 120px;
height: 100px;
border-radius: 10px;
}
.item-box.item-tenement .picture .picture-item:not(:last-child) {
margin-right: 10px;
}
.item-box .comment {
height: 40px;
background-color: #f6f6f6;

View File

@@ -48,6 +48,14 @@ body {
text-overflow: ellipsis;
}
.two-line-display {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
text-overflow: ellipsis;
}
.item-box {
max-width: 897px;
width: 100%;
@@ -108,7 +116,7 @@ body {
}
.label {
margin-bottom: 10px;
flex-wrap: wrap;
.item {
font-size: 14px;
@@ -118,6 +126,7 @@ body {
line-height: 24px;
background-color: rgba(242, 242, 242, 1);
border-radius: 6px;
margin-bottom: 10px;
&.icon {
padding: 0;
@@ -476,6 +485,71 @@ body {
}
}
&.item-tenement {
.title {
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
font-weight: 650;
font-style: normal;
font-size: 20px;
color: #000000;
line-height: 36px;
margin-bottom: 10px;
}
.site-box {
margin-bottom: 10px;
.site-item {
.site-icon {
width: 18px;
height: 18px;
margin-right: 4px;
}
font-size: 15px;
color: #555555;
}
}
.price-section {
font-size: 14px;
color: #7f7f7f;
margin-bottom: 21px;
.unit {
font-family: "Arial-Black", "Arial Black", sans-serif;
font-weight: 900;
color: #000000;
margin-right: 6px;
}
.price {
font-family: "Arial-Black", "Arial Black", sans-serif;
font-weight: 900;
font-size: 20px;
color: #f95d5d;
margin-right: 7px;
}
.text {
color: #555555;
margin-right: 21px;
}
}
.picture {
overflow: auto;
.picture-item {
width: 120px;
height: 100px;
border-radius: 10px;
&:not(:last-child) {
margin-right: 10px;
}
}
}
}
.comment {
height: 40px;
background-color: rgba(246, 246, 246, 1);

View File

@@ -140,9 +140,11 @@
#sectionIndex .head-navigation .text:hover {
text-decoration: underline;
}
#sectionIndex .matter {
align-items: flex-start;
}
#sectionIndex .matter .sidebar {
width: 150px;
height: 1225px;
background-color: #08353e;
border: 1px solid #e9eef2;
border-radius: 10px;
@@ -166,14 +168,18 @@
margin-left: 20px;
margin-right: 20px;
}
#sectionIndex .matter .sidebar .list:not(:last-child) {
border-bottom: 1px solid rgba(255, 255, 255, 0.24705882);
#sectionIndex .matter .sidebar .list .line {
height: 1px;
background-color: rgba(255, 255, 255, 0.24705882);
margin-top: 10px;
margin-bottom: 10px;
}
#sectionIndex .matter .sidebar .list .item {
height: 50px;
font-size: 14px;
color: rgba(255, 255, 255, 0.8);
z-index: 1;
cursor: pointer;
}
#sectionIndex .matter .sidebar .list .item .text {
z-index: 1;
@@ -276,6 +282,7 @@
border-radius: 8px;
font-size: 14px;
color: #333;
cursor: pointer;
}
#sectionIndex .matter .matter-content .info .right .bottom .btn .icon {
width: 16px;
@@ -388,131 +395,8 @@
width: 732px;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box {
width: 100%;
background-color: #ffffff;
border: 1px solid #e9eef2;
border-radius: 10px;
padding: 18px 20px 0;
margin-bottom: 12px;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .item-head {
margin-bottom: 14px;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .item-head .avatar {
width: 28px;
height: 28px;
border-radius: 50%;
margin-right: 8px;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .item-head .name {
font-style: normal;
color: #555555;
font-size: 14px;
margin-right: 8px;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .item-head .group {
height: 15px;
margin-right: 8px;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .item-head .time {
font-size: 13px;
color: #aaaaaa;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .item-head .view {
font-size: 12px;
color: #aaaaaa;
margin-right: 15px;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .item-head .view .icon {
width: 13px;
height: 8px;
margin-right: 5px;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .item-head .btn {
width: 24px;
height: 16px;
background-color: #f2f2f2;
border-radius: 150px;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .item-head .btn .icon {
width: 18px;
height: 18px;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .label {
margin-bottom: 10px;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .label .item {
font-size: 14px;
color: #555555;
padding: 0 9px;
height: 24px;
line-height: 24px;
background-color: #f2f2f2;
border-radius: 6px;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .label .item.icon {
padding: 0;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .label .item:not(:last-child) {
margin-right: 10px;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .label .item.blue {
color: #ffffff;
background-color: #04b0d5;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .title {
font-weight: 650;
font-size: 20px;
color: #000000;
line-height: 36px;
margin-bottom: 7px;
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .message {
font-size: 14px;
color: #555555;
white-space: pre-wrap;
margin-bottom: 15px;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .comment {
height: 40px;
background-color: #f6f6f6;
border-radius: 10px;
padding: 0 10px;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .comment .icon {
width: 20px;
height: 20px;
border-radius: 50%;
margin-right: 10px;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .comment .text {
font-size: 14px;
color: #7f7f7f;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .bottom {
height: 55px;
justify-content: flex-end;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .bottom .bottom-item {
cursor: pointer;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .bottom .bottom-item:not(:last-child) {
margin-right: 60px;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .bottom .bottom-item .icon {
width: 20px;
height: 20px;
margin-right: 8px;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .bottom .bottom-item .text {
color: #aaaaaa;
font-size: 13px;
}
#sectionIndex .matter .matter-content .details-box .content-box .list-box .item-box .bottom .bottom-item.like .icon {
width: 18px;
height: 18px;
}
#sectionIndex .matter .matter-content .details-box .side-box {
width: 291px;
height: 300px;

View File

@@ -159,9 +159,9 @@
}
.matter {
align-items: flex-start;
.sidebar {
width: 150px;
height: 1225px;
background-color: rgba(8, 53, 62, 1);
border: 1px solid rgba(233, 238, 242, 1);
border-radius: 10px;
@@ -185,14 +185,19 @@
padding-bottom: 10px;
margin-left: 20px;
margin-right: 20px;
&:not(:last-child) {
border-bottom: 1px solid rgba(255, 255, 255, 0.24705882);
.line {
height: 1px;
background-color: rgba(255, 255, 255, 0.24705882);
margin-top: 10px;
margin-bottom: 10px;
}
.item {
height: 50px;
font-size: 14px;
color: rgba(255, 255, 255, 0.8);
z-index: 1;
cursor: pointer;
.text {
z-index: 1;
@@ -305,6 +310,7 @@
border-radius: 8px;
font-size: 14px;
color: #333;
cursor: pointer;
.icon {
width: 16px;
height: 16px;
@@ -433,155 +439,7 @@
width: 732px;
.item-box {
width: 100%;
background-color: rgba(255, 255, 255, 1);
border: 1px solid rgba(233, 238, 242, 1);
border-radius: 10px;
padding: 18px 20px 0;
margin-bottom: 12px;
.item-head {
margin-bottom: 14px;
.avatar {
width: 28px;
height: 28px;
border-radius: 50%;
margin-right: 8px;
}
.name {
font-style: normal;
color: #555555;
font-size: 14px;
margin-right: 8px;
}
.group {
height: 15px;
margin-right: 8px;
}
.time {
font-size: 13px;
color: #aaaaaa;
}
.view {
font-size: 12px;
color: #aaaaaa;
margin-right: 15px;
.icon {
width: 13px;
height: 8px;
margin-right: 5px;
}
}
.btn {
width: 24px;
height: 16px;
background-color: rgba(242, 242, 242, 1);
border-radius: 150px;
.icon {
width: 18px;
height: 18px;
}
}
}
.label {
margin-bottom: 10px;
.item {
font-size: 14px;
color: #555555;
padding: 0 9px;
height: 24px;
line-height: 24px;
background-color: rgba(242, 242, 242, 1);
border-radius: 6px;
&.icon {
padding: 0;
}
&:not(:last-child) {
margin-right: 10px;
}
&.blue {
color: #ffffff;
background-color: #04b0d5;
}
}
}
.title {
font-weight: 650;
font-size: 20px;
color: #000000;
line-height: 36px;
margin-bottom: 7px;
font-family: "PingFangSC-Semibold", "PingFang SC Semibold", "PingFang SC", sans-serif;
}
.message {
font-size: 14px;
color: #555555;
white-space: pre-wrap;
margin-bottom: 15px;
}
.comment {
height: 40px;
background-color: rgba(246, 246, 246, 1);
border-radius: 10px;
padding: 0 10px;
.icon {
width: 20px;
height: 20px;
border-radius: 50%;
margin-right: 10px;
}
.text {
font-size: 14px;
color: #7f7f7f;
}
}
.bottom {
height: 55px;
justify-content: flex-end;
.bottom-item {
cursor: pointer;
&:not(:last-child) {
margin-right: 60px;
}
.icon {
width: 20px;
height: 20px;
margin-right: 8px;
}
.text {
color: #aaaaaa;
font-size: 13px;
}
&.like {
.icon {
width: 18px;
height: 18px;
}
}
}
}
}
}
}

205
details.html Normal file
View File

@@ -0,0 +1,205 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>版块首页</title>
<link rel="stylesheet" href="./css/public.css" />
<link rel="stylesheet" href="./css/details.css" />
<script src="./js/vue.global.js"></script>
<style>
[v-cloak] {
display: none;
}
</style>
</head>
<body>
<div class="container" id="details" v-cloak>
<div class="head-top flexacenter">
<img class="logo" src="https://oss.gter.net/logo" alt="" />
<div class="flex1"></div>
<div class="input-box flexacenter">
<input class="input flex1" type="text" placeholder="大家都在搜:屯特" />
<img class="icon" />
</div>
<div class="post-list flexacenter">
<img class="post-item" src="./img/post-thread.png" />
<img class="post-item" src="./img/post-offer.png" />
<img class="post-item" src="./img/post-summary.png" />
<img class="post-item" src="./img/post-mj.png" />
<img class="post-item" src="./img/post-vote.png" />
</div>
</div>
<div class="head-navigation flexacenter">
<img class="icon" src="./img/index-icon.png" />
<div class="text">首页</div>
<img class="arrows" src="./img/arrows-gray.svg" />
<div class="text">GTSuperstar 的个人主页</div>
</div>
<div class="matter flexflex">
<div class="matter-left">
<div class="block">
<div class="matter-head flexacenter">
<img class="avatar" src="https://axure-file.lanhuapp.com/md5__663dd09989ed49b33933982521ac4655.svg" alt="" />
<div class="content flex1 flexflex">
<div class="name flexacenter" bind:tap="goPersonalHomepage">
<div>{{ authorInfo.nickname || '匿名用户' }}</div>
<img v-if="authorInfo?.group?.title" class="icon" :src="authorInfo.group.title" />
</div>
<div class="time">{{ timestamp }}</div>
</div>
<div class="operate flexacenter">
<div class="view flexacenter">
<img class="icon" src="./img/eye-icon.svg">
<div class="text">3016</div>
</div>
<div class="btn flexcenter" bind:tap="cutShow">
<img class="icon" src="./img/dot-dot-dot-gray.png">
</div>
</div>
</div>
<div class="label flexflex">
<img class="item icon" src="./img/recommend-icon.png" />
<img class="item icon" src="./img/essence-icon.png" />
<div class="item blue">香港</div>
<div class="item">香港</div>
</div>
<div class="title">[申请定位] 港理工各专业申请难度分析</div>
<div class="html" v-html="info.content"></div>
<div class="last-time">最后编辑:{{ updatedTime || timestamp }}</div>
<div class="bottom flexacenter">
<div class="bottom-item like flexacenter">
<img class="icon" src="./img/like-black-icon.png" />
<div class="text">{{ info.likes || "赞" }}</div>
</div>
<div class="bottom-item like flexacenter">
<img class="icon" src="./img/collect-black-icon.png" />
<div class="text">{{ info.collections || "收藏" }}</div>
</div>
<div class="bottom-item like flexacenter">
<img class="icon" src="./img/discuss-black-icon.png" />
<div class="text">{{ info.comments || "讨论" }}</div>
</div>
<div class="bottom-item like flexacenter">
<img class="icon" src="./img/bi-black-icon.png" />
<div class="text">{{ info.coins || "投币" }}</div>
</div>
<div class="bottom-item like flexacenter">
<img class="icon" src="./img/share-black-icon.png" />
<div class="text">转发</div>
</div>
</div>
</div>
<div class="block related">
<div class="related-head flexacenter">
<div class="text">相关帖子</div>
<div class="time">Updated by 2025.10.13</div>
</div>
<div class="list flexflex">
<div class="item flexacenter" v-for="item in 8">
<div class="dot"></div>
<div class="text one-line-display">2023年6月下签 SDS Timeline 15天收到梦橡塑OFFER2023年6月下签 SDS Timeline 15天收到梦橡塑OFFER2023年6月下签 SDS Timeline 15天收到梦橡塑OFFER2023年6月下签 SDS Timeline 15天收到梦橡塑OFFER</div>
</div>
</div>
</div>
</div>
<div class="sidebar-box">
<a class="adv">
<img class="adv-img" src="https://o.x-php.com/bbs/common/cf/1709075xdbbbvjd8cbxvdd.jpg">
</a>
<div class="sidebar-item">
<div class="sidebar-header">手机查看该帖子</div>
<div class="sidebar-content flexcenter">
<img src="https://o.x-php.com/qrcode/eunKLTiKLX4O" class="sidebar-QRCode">
<div class="hint flexacenter">
<img class="saoma-icon" src="//framework.x-php.com/gter/image/gter/offer/imgdetails/u161.png?v=5.2.91_282044242">
微信扫一扫
</div>
</div>
</div>
<div class="sidebar-item">
<div class="sidebar-header">关于作者</div>
<div class="sidebar-content flexcenter">
<div class="author-box flexacenter">
<img class="avatar" src="./img/avatar.png">
<div class="author-content">
<div class="author-name flexacenter">4564sd56f456</div>
<div class="author-info flexacenter"><div class="amount">57</div> 个创作,获得 <div class="amount">1093</div> 个赞</div>
</div>
</div>
<div class="medal">
<div class="medal-title">勋章 6</div>
<div class="medal-list flexflex">
<img class="medal-item" v-for="item in 6" :key="item" src="https://o.x-php.com/Zvt57TuJSUvkyhw-xG3WvCGHpt5oNTyM1Nwws484T7rGFDO1bKwnG2kLV_eSo5JUnMYHVj-SsGLytRp94iZe_tpbmD-4Ce4gYuGWnGU_hCATZ7u7I_X1F8YjCfX63o7x6CLR54iN90MUNDQyOQ~~">
</div>
</div>
<div class="recently">
<div class="recently-title">最近发布</div>
<div class="recently-list flexflex">
<div v-for="item in 8" :key="item" class="recently-item one-line-display flexacenter">
<div class="dot"></div>
<div class="text one-line-display flex1">GMAT这么有用吗跟大家讨论讨的跟大家讨论讨的跟大家讨论讨的</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="coins-area flexcenter" v-if="false">
<div class="coins-box flexcenter">
<img class="fork" src="./img/fork-icon.png">
<div class="coins-head flexacenter">
<img class="icon" src="./img/bi-icon.png">
<div class="text flexacenter">该帖子已获得 <div class="sum">23</div> 个寄托币</div>
</div>
<div class="coins-input flexacenter">
<input class="input flex1" type="number" placeholder="输入投币数">
<div class="btn">投币</div>
</div>
<div class="coins-info flexacenter">
<img class="icon" src="./img/bi-black-icon.png">
你当前共有 <div class="sum">934</div> 寄托币
<div class="strategy">[挣币攻略]</div>
</div>
<div class="coins-list-area flexflex">
<div class="coins-total flexacenter"><div class="sum">11</div> 人参与投币:</div>
<div class="list flex1">
<div class="item flexacenter" v-for="item in 1">
<div class="serial">1</div>
<div class="user flex1 flexacenter">
<img class="avatar" src="./img/avatar.png">
<div class="username one-line-display flex1">4564sd56f456</div>
</div>
<div class="amount flexacenter">100 <div class="text"></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="./js/axios.min.js"></script>
<script src="./js/public.js"></script>
<script type="module" src="./js/details.js"></script>
</body>
</html>

193
homepage-me.html Normal file
View File

@@ -0,0 +1,193 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<link rel="stylesheet" href="./css/public.css" />
<link rel="stylesheet" href="./css/homepage-me.css" />
<script src="./js/vue.global.js"></script>
</head>
<body>
<div class="container" id="homepage-me">
<div class="head-top flexacenter">
<img class="logo" src="https://oss.gter.net/logo" alt="" />
<div class="flex1"></div>
<div class="input-box flexacenter">
<input class="input flex1" type="text" placeholder="大家都在搜:屯特" />
<img class="icon" />
</div>
<div class="sign-in sign-in-already flexcenter" v-if="signInAlreadyState" v-cloak onclick="showWindow('dsu_paulsign', 'https://bbs.gter.net/plugin.php?id=dsu_paulsign:sign&show=sign')">
<img class="sign-icon" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/sign-icon.png" />
<span>已签到,明天再来</span>
</div>
<div class="sign-in sign-in-no flexacenter" v-else onclick="showWindow('dsu_paulsign', 'https://bbs.gter.net/plugin.php?id=dsu_paulsign:sign&show=sign')" v-cloak>
<img class="sign-in-bj" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/sign-in-bj.svg" />
<img class="coin-bj" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/coin-bj.svg" />
<img class="coin-icon" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/coin-icon.png" />
<span class="text flex1">签到领寄托币</span>
<div class="sign-go flexcenter">
<img class="sign-go-bj" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/sign-go.svg" />
GO
</div>
<img class="petal1" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/petal1.png" />
<img class="petal2" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/petal2.png" />
<img class="petal3" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/petal3.png" />
</div>
</div>
<div class="head-navigation flexacenter">
<img class="icon" src="./img/index-icon.png" />
<div class="text">首页</div>
<img class="arrows" src="./img/arrows-gray.svg" />
<div class="text">GTSuperstar 的个人主页</div>
</div>
<div class="matter flexflex">
<div class="card-user flexcenter">
<div class="name-area">
<img class="avatar" src="https://nas.gter.net:9008/avatar/97K4EWIMLrsbGTWXslC2WV5VHK6OikN42jDKLNjtax7HL4g2eMCJSdU9oWFhY2E~/middle" alt="用户头像" />
<h3 class="username flexcenter">GTSuperstar</h3>
<p class="uid flexcenter">
UID: 3276161
<img class="icon" src="./img/copy-icon.png" />
</p>
</div>
<div class="bi-box flexacenter">
<img class="bi-masking" src="./img/bi-masking.svg" alt="">
<img class="bi-icon" src="./img/bi-icon.svg" alt="">
<div class="bi-content flex1">
<div class="bi-sum">1906</div>
<div class="bi-text">寄托币</div>
</div>
<div class="bi-btn flexcenter">
关于寄托币
<img class="bi-question" src="./img/question-mark.svg" alt="">
</div>
</div>
<div class="medal-area">
<p class="title">勋章 6</p>
<div class="list flexflex">
<img v-for="item in 10" src="https://o.x-php.com/Zvt57TuJSUvkyhw-xG3WvCGHpt5oNTyM1Nwws484T7rGFDO1bKwnG2kLV_eSo5JUnMYHVj-SsGLytRp94iZe_tpcnj-4Ce4gYuGWnGU_hCATZ7u7I_X1F8YjCfX63o6lsSPQ7Y2N90MUNDQyOQ~~" alt="勋章1" class="item" />
</div>
</div>
</div>
<div class="matter-content flex1">
<div class="message-box" v-if="true">
<!-- 头部区域 -->
<div class="header">
<img src="https://nas.gter.net:9008/avatar/97K4EWIMLrsbGTWXslC2WV5VHK6OikN42jDKLNjtax7HL4g2eMCJSdU9oWFhY2E~/middle" alt="用户头像" class="avatar" />
<span class="username">GTSuperstar</span>
<!-- <img class="icon"> -->
</div>
<!-- 信息列表区域 -->
<div class="info-list flexflex">
<div class="item flexacenter">
<span class="label">注册时间</span>
<span class="value">2019-7-26 16:38</span>
</div>
<div class="item flexacenter">
<span class="label">最后登录</span>
<span class="value">2025-10-16 10:32</span>
</div>
<div class="item flexacenter">
<span class="label">在线时长</span>
<span class="value">1304 小时</span>
</div>
<div class="item flexacenter">
<span class="label">上次访问 IP</span>
<span class="value">116.237.182.149 -- 上海长宁区</span>
</div>
<div class="item flexacenter">
<span class="label">Email</span>
<span class="value">skysuper007@qq.com</span>
<span class="status flexacenter">未认证</span>
</div>
<div class="item flexacenter">
<span class="label">手机号</span>
<span class="value">15934271290</span>
<span class="status blue flexacenter">已认证</span>
</div>
<div class="item flexacenter">
<span class="label">累计签到</span>
<span class="value">1341 天</span>
</div>
<div class="item flexacenter">
<span class="label">本月签到</span>
<span class="value">6 天</span>
</div>
<div class="item flexacenter">
<span class="label">寄托币</span>
<span class="value">13813</span>
</div>
</div>
<!-- 统计标签区域 -->
<div class="stats flexacenter">
<template v-for="item in 5" :key="item">
<span class="item flexacenter">
<div class="text">Offer ×</div>
<div class="num">6</div>
</span>
<div class="line">|</div>
</template>
</div>
<!-- Offer标签区域 -->
<div class="tags flexflex">
<div class="item flexacenter" v-for="item in 15" :key="item">
<!-- <img class="icon" src="./img/mj-icon.png" mode="heightFix" /> -->
<img class="icon" src="./img/offer-icon.png" mode="heightFix" />
阿尔托大学
</div>
</div>
</div>
<div class="list-area">
<div class="operation-box flexacenter">
<div class="operation-item" :class="{'pitch': item === 1}" v-for="item in 5" :key="item">收藏</div>
</div>
<div class="classify flexacenter">
<div class="item " :class="{'pitch': item === 1}" v-for="item in 5" :key="item">全部</div>
</div>
<div class="issue-data flexacenter">
<div class="num">57</div> 个创作
</div>
<!-- 系统会为你保留最近7天的浏览记录 -->
<div class="list-box" v-if="false">
<template v-for="(item,index) in list" :key="index"> {{ item.type }}
<item-offer v-if=" item.type == 'offer'" :item="item"></item-offer>
<item-summary v-else-if="item.type == 'offer_summary'" :item="item"></item-summary>
<item-vote v-else-if="item.type == 'vote'" :itemdata="item"></item-vote>
<item-mj v-else-if="item.type == 'interviewexperience'" :itemdata="item"></item-mj>
<item-tenement v-else-if="item.type == 'tenement'" :itemdata="item"></item-tenement>
<item-forum v-else :item="item"></item-forum>
</template>
</div>
<div class="empty flexcenter">
<img class="empty-icon" src="./img/empty-icon.png" />
<div class="empty-text">- 暂无内容 -</div>
</div>
<div class="load-more flexcenter">加载更多…</div>
</div>
</div>
</div>
</div>
<script type="module" src="./js/homepage-me.js"></script>
</body>
</html>

View File

@@ -51,8 +51,8 @@
<div class="name-area">
<img class="avatar" src="https://nas.gter.net:9008/avatar/97K4EWIMLrsbGTWXslC2WV5VHK6OikN42jDKLNjtax7HL4g2eMCJSdU9oWFhY2E~/middle" alt="用户头像" />
<h3 class="username">GTSuperstar</h3>
<p class="uid flexacenter">
<h3 class="username flexcenter">GTSuperstar</h3>
<p class="uid flexcenter">
UID: 3276161
<img class="icon" src="./img/copy-icon.png" />
</p>
@@ -151,8 +151,8 @@
<div class="num">57</div> 个创作,获得 <div class="num">1093</div> 个赞
</div>
<div class="list-box">
<template v-for="(item,index) in list" :key="index"> {{ item.type }}
<div class="list-box" v-if="true">
<template v-for="(item,index) in list" :key="index">
<item-offer v-if=" item.type == 'offer'" :item="item"></item-offer>
<item-summary v-else-if="item.type == 'offer_summary'" :item="item"></item-summary>
<item-vote v-else-if="item.type == 'vote'" :itemdata="item"></item-vote>
@@ -161,6 +161,13 @@
<item-forum v-else :item="item"></item-forum>
</template>
</div>
<div class="empty flexcenter">
<img class="empty-icon" src="./img/empty-icon.png" />
<div class="empty-text">- 暂无内容 -</div>
</div>
<div class="load-more flexcenter">加载更多…</div>
</div>
</div>
</div>

BIN
img/bi-black-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
img/bi-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

18
img/bi-icon.svg Normal file

File diff suppressed because one or more lines are too long

11
img/bi-masking.svg Normal file

File diff suppressed because one or more lines are too long

BIN
img/collect-black-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
img/discuss-black-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
img/dot-dot-dot-gray.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 542 B

BIN
img/empty-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

6
img/eye-icon.svg Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="13px" height="8px" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(1 0 0 1 0 -5 )">
<path d="M 9.65206473214286 6.26736111111111 C 10.6217447916667 5.70486111111111 11.4281994047619 4.94907407407407 12.0714285714286 4 C 11.3363095238095 2.90740740740741 10.4149925595238 2.09027777777778 9.30747767857143 1.54861111111111 C 9.60249255952381 2.03009259259259 9.75 2.55092592592593 9.75 3.11111111111111 C 9.75 3.96759259259259 9.43201264880952 4.70023148148148 8.79603794642857 5.30902777777778 C 8.16006324404762 5.91782407407407 7.39471726190476 6.22222222222222 6.5 6.22222222222222 C 5.60528273809524 6.22222222222222 4.83993675595238 5.91782407407407 4.20396205357143 5.30902777777778 C 3.56798735119048 4.70023148148148 3.25 3.96759259259259 3.25 3.11111111111111 C 3.25 2.55092592592593 3.39750744047619 2.03009259259259 3.69252232142857 1.54861111111111 C 2.58500744047619 2.09027777777778 1.66369047619048 2.90740740740741 0.928571428571428 4 C 1.5718005952381 4.94907407407407 2.37825520833333 5.70486111111111 3.34793526785714 6.26736111111111 C 4.31761532738095 6.82986111111111 5.36830357142857 7.11111111111111 6.5 7.11111111111111 C 7.63169642857143 7.11111111111111 8.68238467261905 6.82986111111111 9.65206473214286 6.26736111111111 Z M 6.74665178571429 1.56944444444444 C 6.81436011904762 1.50462962962963 6.84821428571429 1.42592592592593 6.84821428571429 1.33333333333333 C 6.84821428571429 1.24074074074074 6.81436011904762 1.16203703703704 6.74665178571429 1.09722222222222 C 6.67894345238095 1.03240740740741 6.59672619047619 0.999999999999999 6.5 1 C 5.89546130952381 0.999999999999999 5.37676711309524 1.20717592592593 4.94391741071429 1.62152777777778 C 4.51106770833333 2.03587962962963 4.29464285714286 2.53240740740741 4.29464285714286 3.11111111111111 C 4.29464285714286 3.2037037037037 4.32849702380952 3.28240740740741 4.39620535714286 3.34722222222222 C 4.46391369047619 3.41203703703704 4.54613095238095 3.44444444444444 4.64285714285714 3.44444444444444 C 4.73958333333333 3.44444444444444 4.8218005952381 3.41203703703704 4.88950892857143 3.34722222222222 C 4.95721726190476 3.28240740740741 4.99107142857143 3.2037037037037 4.99107142857143 3.11111111111111 C 4.99107142857143 2.71296296296296 5.13857886904762 2.37268518518519 5.43359375 2.09027777777778 C 5.72860863095238 1.80787037037037 6.08407738095238 1.66666666666667 6.5 1.66666666666667 C 6.59672619047619 1.66666666666667 6.67894345238095 1.63425925925926 6.74665178571429 1.56944444444444 Z M 12.8549107142857 3.52083333333333 C 12.9516369047619 3.68287037037037 13 3.84259259259259 13 4 C 13 4.15740740740741 12.9516369047619 4.31712962962963 12.8549107142857 4.47916666666667 C 12.1778273809524 5.54398148148148 11.2673921130952 6.39699074074074 10.1236049107143 7.03819444444444 C 8.97981770833333 7.67939814814815 7.77194940476191 8 6.5 8 C 5.2280505952381 8 4.02018229166667 7.67824074074074 2.87639508928571 7.03472222222222 C 1.73260788690476 6.3912037037037 0.822172619047619 5.53935185185185 0.145089285714286 4.47916666666667 C 0.0483630952380952 4.31712962962963 0 4.15740740740741 0 4 C 0 3.84259259259259 0.0483630952380952 3.68287037037037 0.145089285714286 3.52083333333333 C 0.822172619047619 2.46064814814815 1.73260788690476 1.6087962962963 2.87639508928571 0.965277777777778 C 4.02018229166667 0.321759259259259 5.2280505952381 0 6.5 0 C 7.77194940476191 0 8.97981770833333 0.321759259259259 10.1236049107143 0.965277777777778 C 11.2673921130952 1.6087962962963 12.1778273809524 2.46064814814815 12.8549107142857 3.52083333333333 Z " fill-rule="nonzero" fill="#a4a3a3" stroke="none" transform="matrix(1 0 0 1 0 5 )" />
</g>
</svg>

BIN
img/fork-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 489 B

BIN
img/like-black-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
img/post-mj.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
img/post-offer.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
img/post-summary.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
img/post-thread.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
img/post-vote.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

6
img/question-mark.svg Normal file

File diff suppressed because one or more lines are too long

BIN
img/share-black-icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -1,105 +1,106 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<link rel="stylesheet" href="./css/public.css" />
<link rel="stylesheet" href="./css/index.css" />
<script src="./js/vue.global.js"></script>
</head>
<body>
<div class="container" id="appIndex">
<!-- 话题和精选 -->
<div v-if="true" class="topic-and-selectives flexflex">
<div class="topic-box">
<div class="head-top flexcenter">
<img class="icon" src="https://app.gter.net/image/miniApp/offer/well-white.svg" />
<div class="text">话题</div>
</div>
<div class="topic-head flexflex" bind:tap="goDetails" data-uniqid="{{ ongoingbj.uniqid }}">
<div class="title one-line-display">{{ ongoingbj.title }}</div>
<div class="hint one-line-display">{{ ongoingbj.description }}</div>
<div class="people flexacenter">
<div class="left flexacenter">
<div class="number">{{ ongoingbj.comments }}</div>
<div class="text">人正在讨论</div>
</div>
<div class="right flexacenter">
<div class="item flexcenter" v-for="(item, index) in ongoingbj.commentUser" :key="index" :style="{zIndex: 7 - index }">
<img class="img" :src="item.avatar" />
</div>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<link rel="stylesheet" href="./css/public.css" />
<link rel="stylesheet" href="./css/index.css" />
<script src="./js/vue.global.js"></script>
</head>
<body>
<div class="container" id="appIndex">
<!-- 话题和精选 -->
<div v-if="true" class="topic-and-selectives flexflex">
<div class="topic-box">
<div class="head-top flexcenter">
<img class="icon" src="https://app.gter.net/image/miniApp/offer/well-white.svg" />
<div class="text">话题</div>
</div>
<div class="topic-head flexflex" bind:tap="goDetails" data-uniqid="{{ ongoingbj.uniqid }}">
<div class="title one-line-display">{{ ongoingbj.title }}</div>
<div class="hint one-line-display">{{ ongoingbj.description }}</div>
<div class="people flexacenter">
<div class="left flexacenter">
<div class="number">{{ ongoingbj.comments }}</div>
<div class="text">人正在讨论</div>
</div>
<div class="right flexacenter">
<div class="item flexcenter" v-for="(item, index) in ongoingbj.commentUser" :key="index" :style="{zIndex: 7 - index }">
<img class="img" :src="item.avatar" />
</div>
</div>
</div>
<div class="topic-list">
<div class="item flexacenter" v-for="(item, index) in pastList" :key="index" bind:tap="goDetails" data-uniqid="{{ item.uniqid }}">
<img class="img" src="https://app.gter.net/image/miniApp/offer/well-yellow.svg" />
<div class="text one-line-display flex1">{{ item.title }}</div>
</div>
</div>
</div>
<div class="selectives-box">
<div class="head-top flexcenter">
<img class="icon" src="https://app.gter.net/image/miniApp/offer/handpick-icon.png" />
<div class="text">精选</div>
</div>
<div class="list flexflex">
<div class="item flexacenter" v-for="(item, index) in 16" :key="index">
<div class="dot"></div>
<div class="text one-line-display">美国各院校申请时间汇总(一)美国各院校申请时间汇总(一)美国各院校申请时间汇总(一)</div>
</div>
</div>
</div>
</div>
<!-- 论坛板块列表 -->
<div v-if="true" class="forum-sections-list">
<img class="img" src="./img/sections-left.svg" />
<div class="title">论坛版块</div>
<div class="list">
<div class="line flexacenter">
<div class="item flexacenter">香港</div>
<div class="item flexacenter">香港</div>
<div class="item flexacenter">香港</div>
</div>
<div class="line flexacenter">
<div class="item flexacenter">经济/商科</div>
<div class="item flexacenter">经济/商科</div>
<div class="item flexacenter">经济/商科</div>
</div>
<div class="line flexacenter">
<div class="item flexacenter">香港</div>
<div class="item flexacenter">香港</div>
<div class="item flexacenter">香港</div>
</div>
<div class="line flexacenter">
<div class="item flexacenter">香港</div>
<div class="item flexacenter">香港</div>
<div class="item flexacenter">香港</div>
<div class="topic-list">
<div class="item flexacenter" v-for="(item, index) in pastList" :key="index" bind:tap="goDetails" data-uniqid="{{ item.uniqid }}">
<img class="img" src="https://app.gter.net/image/miniApp/offer/well-yellow.svg" />
<div class="text one-line-display flex1">{{ item.title }}</div>
</div>
</div>
</div>
<div class="item-box item-forum">
<div class="item-head flexacenter">
<img class="avatar" src="https://nas.gter.net:9008/avatar/97K4EWIMLrsbGTWXslC1UltTF6WOikN42jDKLNjtax7Hc44zLpaKSdU9oWFhY2E~/small" />
<div class="name">小P学姐</div>
<img class="group" src="https://o.x-php.com/Zvt57TuJSUvkyhw-xG7Y2l-c_ZMtdXfqqsgFptxhcq_cQnrlcPJ0DVESBq_D-81qNDQyOQ~~" />
<div class="time">2025-8-11 01:30</div>
<div class="flex1"></div>
<div class="view flexacenter">
<img class="icon" src="https://app.gter.net/image/miniApp/offer/eye-icon.svg" />
<div class="text">3016</div>
<div class="selectives-box">
<div class="head-top flexcenter">
<img class="icon" src="https://app.gter.net/image/miniApp/offer/handpick-icon.png" />
<div class="text">精选</div>
</div>
<div class="list flexflex">
<div class="item flexacenter" v-for="(item, index) in 16" :key="index">
<div class="dot"></div>
<div class="text one-line-display">美国各院校申请时间汇总(一)美国各院校申请时间汇总(一)美国各院校申请时间汇总(一)</div>
</div>
</div>
</div>
</div>
<!-- 论坛板块列表 -->
<div v-if="true" class="forum-sections-list">
<img class="img" src="./img/sections-left.svg" />
<div class="title">论坛版块</div>
<div class="list">
<div class="line flexacenter">
<div class="item flexacenter">香港</div>
<div class="item flexacenter">香港</div>
<div class="item flexacenter">香港</div>
</div>
<div class="line flexacenter">
<div class="item flexacenter">经济/商科</div>
<div class="item flexacenter">经济/商科</div>
<div class="item flexacenter">经济/商科</div>
</div>
<div class="line flexacenter">
<div class="item flexacenter">香港</div>
<div class="item flexacenter">香港</div>
<div class="item flexacenter">香港</div>
</div>
<div class="line flexacenter">
<div class="item flexacenter">香港</div>
<div class="item flexacenter">香港</div>
<div class="item flexacenter">香港</div>
</div>
</div>
</div>
<div class="btn flexcenter" @click="cutShow">
<img class="icon" src="https://app.gter.net/image/miniApp/offer/dot-dot-dot-gray.png" />
</div>
<div class="item-box item-forum">
<div class="item-head flexacenter">
<img class="avatar" src="https://nas.gter.net:9008/avatar/97K4EWIMLrsbGTWXslC1UltTF6WOikN42jDKLNjtax7Hc44zLpaKSdU9oWFhY2E~/small" />
<div class="name">小P学姐</div>
<img class="group" src="https://o.x-php.com/Zvt57TuJSUvkyhw-xG7Y2l-c_ZMtdXfqqsgFptxhcq_cQnrlcPJ0DVESBq_D-81qNDQyOQ~~" />
<div class="time">2025-8-11 01:30</div>
<div class="flex1"></div>
<!-- <template v-if="show">
<div class="view flexacenter">
<img class="icon" src="https://app.gter.net/image/miniApp/offer/eye-icon.svg" />
<div class="text">3016</div>
</div>
<div class="btn flexcenter" @click="cutShow">
<img class="icon" src="https://app.gter.net/image/miniApp/offer/dot-dot-dot-gray.png" />
</div>
<!-- <template v-if="show">
<div class="mask" catch:tap="cutShow" catch:touchmove="touchmove"></div>
<div class="operate" catch:tap="true">
<div class="item" bind:tap="report">举报</div>
@@ -110,45 +111,46 @@
</template>
</div>
</template> -->
</div>
<div class="label flexflex">
<img class="item icon" src="./img/recommend-icon.png" />
<img class="item icon" src="./img/essence-icon.png" />
<div class="item blue">香港</div>
<div class="item">香港</div>
</div>
<div class="title">【干货】香港留学费用准备</div>
<div class="message">在即将赴港的时候很多同学好奇香港一年制硕士下来的整体费用大概是多少其实主要包括学费租房费和生活费三部分。学费的话根据不同香港来定大概在10-30万港币之间比较固定…</div>
<div class="comment flexacenter">
<img class="icon" src="https://nas.gter.net:9008/avatar/97K4EWIMLrsbGTWXslC1UltTF6WOikN42jDKLNjtax7Hc44zLpaKSdU9oWFhY2E~/small" />
<div class="text one-line-display">在即将赴港的时候很多同学好奇香港一年制硕士下来的整体费用大概是多少其实主要包括学费租房费和生活费三部分。学费的话根据不同香港来定大概在10-30万港币之间比较固定…</div>
</div>
<div class="bottom flexacenter">
<div class="bottom-item like flexacenter">
<img class="icon" src="./img/like-icon.png" />
<div class="text">3016</div>
</div>
<div class="label flexflex">
<img class="item icon" src="./img/recommend-icon.png" />
<img class="item icon" src="./img/essence-icon.png" />
<div class="item blue">香港</div>
<div class="item">香港</div>
<div class="bottom-item like flexacenter">
<img class="icon" src="./img/collect-golden.svg" />
<div class="text">3016</div>
</div>
<div class="title">【干货】香港留学费用准备</div>
<div class="message">在即将赴港的时候很多同学好奇香港一年制硕士下来的整体费用大概是多少其实主要包括学费租房费和生活费三部分。学费的话根据不同香港来定大概在10-30万港币之间比较固定…</div>
<div class="comment flexacenter">
<img class="icon" src="https://nas.gter.net:9008/avatar/97K4EWIMLrsbGTWXslC1UltTF6WOikN42jDKLNjtax7Hc44zLpaKSdU9oWFhY2E~/small" />
<div class="text one-line-display">在即将赴港的时候很多同学好奇香港一年制硕士下来的整体费用大概是多少其实主要包括学费租房费和生活费三部分。学费的话根据不同香港来定大概在10-30万港币之间比较固定…</div>
<div class="bottom-item like flexacenter">
<img class="icon" src="./img/discuss-icon.png" />
<div class="text">3016</div>
</div>
<div class="bottom flexacenter">
<div class="bottom-item like flexacenter">
<img class="icon" src="./img/like-icon.png" />
<div class="text">3016</div>
</div>
<div class="bottom-item like flexacenter">
<img class="icon" src="./img/collect-golden.svg" />
<div class="text">3016</div>
</div>
<div class="bottom-item like flexacenter">
<img class="icon" src="./img/discuss-icon.png" />
<div class="text">3016</div>
</div>
<div class="bottom-item like flexacenter">
<img class="icon" src="./img/share-gray.png" />
<div class="text">3016</div>
</div>
<div class="bottom-item like flexacenter">
<img class="icon" src="./img/share-gray.png" />
<div class="text">3016</div>
</div>
</div>
</div>
</div>
<script src="./js/index.js"></script>
</body>
</html>
<script src="./js/index.js"></script>
</body>
</html>

75
js/details.js Normal file
View File

@@ -0,0 +1,75 @@
const { createApp, ref, onMounted, nextTick, onUnmounted, computed, watch } = Vue;
import { itemForum } from "../component/item-forum/item-forum.js";
import { itemOffer } from "../component/item-offer/item-offer.js";
import { itemSummary } from "../component/item-summary/item-summary.js";
import { itemVote } from "../component/item-vote/item-vote.js";
import { itemMj } from "../component/item-mj/item-mj.js";
import { itemTenement } from "../component/item-tenement/item-tenement.js";
const appSectionIndex = createApp({
setup() {
let signInAlreadyState = ref(false);
let authorInfo = ref({});
let info = ref({});
let ismyself = ref(false);
let labelList = ref({
sectionn: "",
tags: [],
});
let timestamp = ref("");
let updatedTime = ref("");
let token = "";
onMounted(() => {
init();
});
const init = () => {
ajaxget(`https://api.gter.net/v2/api/forum/getTopicDetails?uniqid=${"9GPSfyaGDTz5"}`).then((res) => {
console.log("res", res);
const data = res.data;
console.log("data", data);
let targetInfo = data.info;
if (!targetInfo.hidden) targetInfo.hidden = 0;
// 替换换行
targetInfo.content = targetInfo.content?.replace(/\n/g, "<br>") || "";
if (!targetInfo.content) {
targetInfo.content = targetInfo.title;
targetInfo.title = "";
}
authorInfo.value = Array.isArray(data.authorInfo) ? null : data.authorInfo;
ismyself.value = data.ismyself || false;
labelList.value = {
sectionn: targetInfo.sectionn,
tags: targetInfo.tags,
};
timestamp.value = strtimeago(targetInfo.release_at, 4);
updatedTime.value = targetInfo.updated_at ? strtimeago(targetInfo.updated_at, 4) : null;
info.value = targetInfo;
token = data.token;
// if (this.islogin) this.getTopicOperation();
});
};
return { signInAlreadyState, authorInfo, info, timestamp, updatedTime, labelList };
},
});
appSectionIndex.component("itemForum", itemForum);
appSectionIndex.component("itemOffer", itemOffer);
appSectionIndex.component("itemSummary", itemSummary);
appSectionIndex.component("itemVote", itemVote);
appSectionIndex.component("itemMj", itemMj);
appSectionIndex.component("itemTenement", itemTenement);
appSectionIndex.mount("#details");

1483
js/homepage-me.js Normal file

File diff suppressed because it is too large Load Diff

150
js/public.js Normal file
View File

@@ -0,0 +1,150 @@
const forumBaseURL = "https://api.gter.net";
axios.defaults.withCredentials = true;
// 导出ajax函数
const ajax = (url) => {
var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
url = url.indexOf("https://") > -1 ? url : forumBaseURL + url;
return new Promise(function (resolve, reject) {
axios
.post(url, data, {
emulateJSON: true,
withCredentials: true,
})
.then(function (res) {
var data = typeof res.data == "string" ? JSON.parse(res.data) : res.data;
if (data.code == 401) {
// 需要登录
showWindow("login", "https://passport.gter.net/login/ajax", "get", -1, {
cover: true,
});
reject();
}
resolve(data);
})
.catch((err) => {
if (err.response.status == 401)
showWindow("login", "https://passport.gter.net/login/ajax", "get", -1, {
cover: true,
});
});
});
};
// 导出ajaxget函数
const ajaxget = (url) => {
url = url.indexOf("https://") > -1 ? url : forumBaseURL + url;
return new Promise(function (resolve, reject) {
axios
.get(
url,
{},
{
emulateJSON: true,
withCredentials: true,
}
)
.then(function (res) {
var data = typeof res.data == "string" ? JSON.parse(res.data) : res.data;
if (data.code == 401) {
// 需要登录
showWindow("login", "https://passport.gter.net/login/ajax", "get", -1, {
cover: true,
});
reject();
}
resolve(data);
})
.catch((error) => {
reject(error);
});
});
};
const strtimeago = (dateStr, type = 1) => {
dateStr = dateStr + ""; // 反之传入的不是字符串
dateStr = dateStr.replaceAll("-", "/"); // 修改格式
var minute = 1000 * 60; // 把分,时,天,周,半个月,一个月用毫秒表示
var hour = minute * 60;
var day = hour * 24;
var now = new Date().getTime(); // 获取当前时间毫秒
let objectTime = new Date(dateStr).getTime();
var diffValue = now - objectTime; // 时间差
if (diffValue < 0) return "刚刚";
var minC = diffValue / minute; // 计算时间差的分,时,天,周,月
var hourC = diffValue / hour;
var dayC = diffValue / day;
const diffInMilliseconds = now - objectTime;
const diffInYears = diffInMilliseconds / (1000 * 60 * 60 * 24 * 365);
const diffInMonths = diffInYears * 12;
let result = "";
if (dayC >= 7) {
var datetime = new Date(dateStr);
var Nyear = datetime.getFullYear();
var Nmonth = datetime.getMonth() + 1 < 10 ? "0" + (datetime.getMonth() + 1) : datetime.getMonth() + 1;
var Ndate = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate();
var Nhour = datetime.getHours() < 10 ? "0" + datetime.getHours() : datetime.getHours();
var Nmin = datetime.getMinutes() < 10 ? "0" + datetime.getMinutes() : datetime.getMinutes();
if (type == 4) {
if (new Date().getFullYear() !== Nyear) result = `${Nyear}${Nmonth}${Ndate}`;
else result = `${Nmonth}${Ndate}${Nhour}:${Nmin}`;
}
if (type == 1) result = Nyear + "-" + Nmonth + "-" + Ndate;
if (type == 2) {
result = `${Nmonth}${Ndate}${Nhour}:${Nmin}`;
if (new Date().getFullYear() !== Nyear) result = `${Nyear}${result}`;
}
if (type == 3) {
if (diffInYears >= 1) result = Math.floor(diffInYears) + "年前";
else if (diffInMonths >= 1) result = Math.floor(diffInMonths) + "个月前";
else result = parseInt(dayC) + "天前";
}
} else if (dayC >= 1) result = parseInt(dayC) + "天前";
else if (hourC >= 1 && hourC <= 24) result = parseInt(hourC) + "小时前";
else if (minC >= 1 && minC <= 60) result = parseInt(minC) + "分钟前";
else result = "刚刚";
return result;
};
const timeago = (dateTimeStamp, type = 1) => {
if (!dateTimeStamp) return "刚刚";
// 判断位数
if (dateTimeStamp.toString().length !== 13) dateTimeStamp = dateTimeStamp * 1000;
var minute = 1000 * 60; //把分,时,天,周,半个月,一个月用毫秒表示
var hour = minute * 60;
var day = hour * 24;
var now = new Date().getTime(); //获取当前时间毫秒
var diffValue = now - dateTimeStamp; //时间差
if (diffValue < 0) return "刚刚";
var minC = diffValue / minute; //计算时间差的分,时,天,周,月
var hourC = diffValue / hour;
var dayC = diffValue / day;
let result = "";
if (dayC >= 7) {
var datetime = new Date(dateTimeStamp);
var Nyear = datetime.getFullYear();
var Nmonth = datetime.getMonth() + 1 < 10 ? "0" + (datetime.getMonth() + 1) : datetime.getMonth() + 1;
var Ndate = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate();
var Nhour = datetime.getHours() < 10 ? "0" + datetime.getHours() : datetime.getHours();
var Nmin = datetime.getMinutes() < 10 ? "0" + datetime.getMinutes() : datetime.getMinutes();
if (type == 1) result = Nyear + "-" + Nmonth + "-" + Ndate;
if (type == 2) {
result = `${Nmonth}${Ndate}${Nhour}:${Nmin}`;
if (new Date().getFullYear() !== Nyear) result = `${Nyear}${result}`;
}
} else if (dayC >= 1) result = parseInt(dayC) + "天前";
else if (hourC >= 1 && hourC <= 24) result = parseInt(hourC) + "小时前";
else if (minC >= 1 && minC <= 60) result = parseInt(minC) + "分钟前";
else result = "刚刚";
return result;
};

119
js/section-index.js Normal file
View File

@@ -0,0 +1,119 @@
const { createApp, ref, onMounted, nextTick, onUnmounted, computed, watch } = Vue;
import { itemForum } from "../component/item-forum/item-forum.js";
const appSectionIndex = createApp({
setup() {
let signInAlreadyState = ref(false);
onMounted(() => {
getSectionList();
init();
handpick();
getTags();
getList();
});
let sectionList = ref([]);
let section = ref("Lz9aimSLXeim");
const getSectionList = () => {
ajaxget("/v2/api/forum/getSectionList").then((res) => {
if (res.code != 200) return;
const data = res.data || [];
let obj = {};
data.forEach((element) => (obj[element.cid] = element));
sectionList.value = insertLineBetweenCategories(data, "cid");
});
};
// 将版块按 cid 分格开
const insertLineBetweenCategories = (arr) => {
if (!arr.length) return [];
const sortedArr = [...arr].sort((a, b) => {
if (a["cid"] < b["cid"]) return -1;
if (a["cid"] > b["cid"]) return 1;
return 0;
});
const result = [sortedArr[0]];
let prevCategory = sortedArr[0]["cid"];
for (let i = 1; i < sortedArr.length; i++) {
const current = sortedArr[i];
const currentCategory = current["cid"];
if (currentCategory !== prevCategory) {
result.push({
key: "line",
});
prevCategory = currentCategory;
}
result.push(current);
}
return result;
};
let info = ref({});
const init = () => {
ajaxget(`/v2/api/forum/getSectionDetails?sectionid=${section.value}`).then((res) => {
if (res.code != 200) return;
const data = res.data || {};
info.value = data;
});
};
let handpickList = ref([]);
const handpick = () => {
ajaxget(`/v2/api/forum/topicHandpicked?sectionid=${section.value}`).then((res) => {
let data = res.data || [];
handpickList.value = data;
});
};
let tagsList = ref([]);
const getTags = () => {
ajaxget(`/v2/api/forum/sectionTags?sectionid=${section.value}`).then((res) => {
if (res.code != 200) return;
const data = res.data || {};
tagsList.value = data;
});
};
let loading = false;
let page = ref(1);
let count = ref(0);
let list = ref([]);
const getList = () => {
if (loading || page.value == 0) return;
loading = true;
ajaxget(`/v2/api/forum/topicLists?type=thread&page=${page.value || 1}&sectionid=${section.value}`)
.then((res) => {
if (res.code != 200) return;
let data = res.data;
list.value = list.value.concat(data.data);
page.value = data.count > data.limit * data.page ? page.value + 1 : 0;
count.value = data.count;
loading = false;
console.log(list.value[0]);
})
.catch((err) => {
console.log("err", err);
err = err.data;
if (err.code == 401) openLoginBtnState();
loading = false;
});
};
return { signInAlreadyState, sectionList, section, info, handpickList, tagsList, list };
},
});
appSectionIndex.component("item-forum", itemForum);
appSectionIndex.mount("#sectionIndex");

View File

@@ -1,12 +0,0 @@
const { createApp, ref, onMounted, nextTick, onUnmounted, computed, watch } = Vue;
import { itemForum } from "../component/item-forum/item-forum.js";
const appSectionIndex = createApp({
setup() {
let signInAlreadyState = ref(false);
return { signInAlreadyState };
},
});
appSectionIndex.component("item-forum", itemForum);
appSectionIndex.mount("#sectionIndex");

View File

@@ -4,14 +4,19 @@
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<title>版块首页</title>
<link rel="stylesheet" href="./css/public.css" />
<link rel="stylesheet" href="./css/sectionIndex.css" />
<link rel="stylesheet" href="./css/section-index.css" />
<script src="./js/vue.global.js"></script>
<style scoped>
[v-cloak] {
display: none;
}
</style>
</head>
<body>
<div class="container" id="sectionIndex">
<div class="container" id="sectionIndex" v-cloak>
<div class="head-top flexacenter">
<img class="logo" src="https://oss.gter.net/logo" alt="" />
<div class="flex1"></div>
@@ -20,21 +25,17 @@
<img class="icon" />
</div>
<div class="sign-in sign-in-already flexcenter" v-if="signInAlreadyState" v-cloak
onclick="showWindow('dsu_paulsign', 'https://bbs.gter.net/plugin.php?id=dsu_paulsign:sign&show=sign')">
<div class="sign-in sign-in-already flexcenter" v-if="signInAlreadyState" v-cloak onclick="showWindow('dsu_paulsign', 'https://bbs.gter.net/plugin.php?id=dsu_paulsign:sign&show=sign')">
<img class="sign-icon" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/sign-icon.png" />
<span>已签到,明天再来</span>
</div>
<div class="sign-in sign-in-no flexacenter" v-else
onclick="showWindow('dsu_paulsign', 'https://bbs.gter.net/plugin.php?id=dsu_paulsign:sign&show=sign')"
v-cloak>
<div class="sign-in sign-in-no flexacenter" v-else onclick="showWindow('dsu_paulsign', 'https://bbs.gter.net/plugin.php?id=dsu_paulsign:sign&show=sign')" v-cloak>
<img class="sign-in-bj" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/sign-in-bj.svg" />
<img class="coin-bj" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/coin-bj.svg" />
<img class="coin-icon" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/coin-icon.png" />
<span class="text flex1">签到领寄托币</span>
<div class="sign-go flexcenter">
<img class="sign-go-bj"
src="//framework.x-php.com/gter/image/gter/forum/assets/forum/sign-go.svg" />
<img class="sign-go-bj" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/sign-go.svg" />
GO
</div>
<img class="petal1" src="//framework.x-php.com/gter/image/gter/forum/assets/forum/petal1.png" />
@@ -54,32 +55,19 @@
<div class="sidebar">
<div class="title">论坛版块</div>
<div class="list">
<div v-for="item in 8" :key="item" class="item flexacenter" :class="{'pitch' : item == 1}">
<span class="text">香港</span>
</div>
</div>
<div class="list">
<div v-for="item in 5" :key="item" class="item flexacenter" :class="{'pitch' : item == 1}">
<span class="text">香港</span>
</div>
</div>
<div class="list">
<div v-for="item in 5" :key="item" class="item flexacenter" :class="{'pitch' : item == 1}">
<span class="text">香港</span>
</div>
</div>
<div class="list">
<div v-for="item in 3" :key="item" class="item flexacenter" :class="{'pitch' : item == 1}">
<span class="text">香港</span>
</div>
<template v-for="(item, index) in sectionList" :key="index">
<div v-if="item.key == 'line'" class="line"></div>
<div v-else class="item flexacenter" :class="{'pitch' : item.uniqid == section}">
<span class="text">{{ item.name }}</span>
</div>
</template>
</div>
</div>
<div class="matter-content flex1">
<div class="info flexflex">
<img class="img"
src="https://o.x-php.com/Zvt57TuJSUvkyhw-xG_Y2l-U_pood3-H1NFX9ddrB_WbUGy8P79gQxdBFebGtpgV7NkzNDQyOQ~~" />
<img v-if="info.icon" class="img" :src="info.icon" />
<div class="right flex1">
<div class="title">香港留学</div>
<div class="title">{{ info.name }}</div>
<div class="link flexacenter">
<div class="item flexacenter" v-for="item in 4" :key="item">
<div class="text">申港超强资料包</div>
@@ -107,9 +95,9 @@
<div class="text">精选</div>
</div>
<div class="list flexflex">
<div class="item flexacenter" v-for="(item, index) in 16" :key="index">
<div class="item flexacenter" v-for="(item, index) in handpickList" :key="index">
<div class="dot"></div>
<div class="text one-line-display">美国各院校申请时间汇总(一)美国各院校申请时间汇总(一)美国各院校申请时间汇总(一)</div>
<div class="text one-line-display">{{ item.title }}</div>
</div>
</div>
</div>
@@ -119,84 +107,12 @@
<img class="icon" src="./img/triangle-red.svg" />
</div>
<div class="list">
<div class="item flexacenter" v-for="(item, index) in 10" :key="index">热门标签</div>
<div class="item flexacenter" v-for="(item, index) in tagsList" :key="index">{{ item.tagname }}</div>
</div>
</div>
<div class="list-box">
<div class="item-box item-forum" v-for="(item, index) in 10" :key="index">
<div class="item-head flexacenter">
<img class="avatar"
src="https://nas.gter.net:9008/avatar/97K4EWIMLrsbGTWXslC1UltTF6WOikN42jDKLNjtax7Hc44zLpaKSdU9oWFhY2E~/small" />
<div class="name">小P学姐</div>
<img class="group"
src="https://o.x-php.com/Zvt57TuJSUvkyhw-xG7Y2l-c_ZMtdXfqqsgFptxhcq_cQnrlcPJ0DVESBq_D-81qNDQyOQ~~" />
<div class="time">2025-8-11 01:30</div>
<div class="flex1"></div>
<div class="view flexacenter">
<img class="icon" src="https://app.gter.net/image/miniApp/offer/eye-icon.svg" />
<div class="text">3016</div>
</div>
<div class="btn flexcenter" @click="cutShow">
<img class="icon"
src="https://app.gter.net/image/miniApp/offer/dot-dot-dot-gray.png" />
</div>
<!-- <template v-if="show">
<div class="mask" catch:tap="cutShow" catch:touchmove="touchmove"></div>
<div class="operate" catch:tap="true">
<div class="item" bind:tap="report">举报</div>
<template v-if="ismanager">
<div class="item" bind:tap="hide">{{ item.hidden == 0 ? '隐藏' : '显示' }}</div>
<div class="item" bind:tap="recommend">{{ item.recommend == 1 ? '取消' : '' }}推荐</div>
<div class="item" bind:tap="essence">{{ item.best == 1 ? '取消' : '' }}精华</div>
</template>
</div>
</template> -->
</div>
<div class="label flexflex">
<img class="item icon" src="./img/recommend-icon.png" />
<img class="item icon" src="./img/essence-icon.png" />
<div class="item blue">香港</div>
<div class="item">香港</div>
</div>
<div class="title">【干货】香港留学费用准备</div>
<div class="message">
在即将赴港的时候很多同学好奇香港一年制硕士下来的整体费用大概是多少其实主要包括学费租房费和生活费三部分。学费的话根据不同香港来定大概在10-30万港币之间比较固定…
</div>
<div class="comment flexacenter">
<img class="icon"
src="https://nas.gter.net:9008/avatar/97K4EWIMLrsbGTWXslC1UltTF6WOikN42jDKLNjtax7Hc44zLpaKSdU9oWFhY2E~/small" />
<div class="text one-line-display">
在即将赴港的时候很多同学好奇香港一年制硕士下来的整体费用大概是多少其实主要包括学费租房费和生活费三部分。学费的话根据不同香港来定大概在10-30万港币之间比较固定…
</div>
</div>
<div class="bottom flexacenter">
<div class="bottom-item like flexacenter">
<img class="icon" src="./img/like-icon.png" />
<div class="text">3016</div>
</div>
<div class="bottom-item like flexacenter">
<img class="icon" src="./img/collect-golden.svg" />
<div class="text">3016</div>
</div>
<div class="bottom-item like flexacenter">
<img class="icon" src="./img/discuss-icon.png" />
<div class="text">3016</div>
</div>
<div class="bottom-item like flexacenter">
<img class="icon" src="./img/share-gray.png" />
<div class="text">3016</div>
</div>
</div>
</div>
<item-forum v-for="(item, index) in list" :key="index" :itemdata="item"></item-forum>
</div>
</div>
@@ -205,7 +121,9 @@
</div>
</div>
</div>
<script type="module" src="./js/sectionIndex.js"></script>
<script src="./js/axios.min.js"></script>
<script src="./js/public.js"></script>
<script type="module" src="./js/section-index.js"></script>
</body>
</html>