2024-12-03 09:34:24 +08:00
|
|
|
|
<template>
|
|
|
|
|
<view class="mobile-home">
|
|
|
|
|
<!-- #ifdef APP -->
|
|
|
|
|
<view class="app-top" :style="{ height: CustomBar+2+'rpx',
|
|
|
|
|
background: topLevel===0? 'linear-gradient(180deg, #d8fa35 0%, #f0fdbf 100%)' : `rgba(255, 255, 255,${topLevel})` }"></view>
|
|
|
|
|
<view :style="{ height: CustomBar+'rpx',background: 'linear-gradient(180deg, #d8fa35 0%, #f0fdbf 100%)'}"></view>
|
|
|
|
|
<view class="mobile-logo" :style="{backgroundColor: `rgba(255, 255, 255,${topLevel})`,marginTop: CustomBar+2+'rpx'}">
|
|
|
|
|
<!-- #endif -->
|
|
|
|
|
<!-- #ifndef APP -->
|
|
|
|
|
<view class="mobile-logo" :style="{backgroundColor: `rgba(255, 255, 255,${topLevel})`}">
|
|
|
|
|
<!-- #endif -->
|
|
|
|
|
<image :src="fileUrl+logo"></image>
|
|
|
|
|
</view>
|
2024-12-29 16:09:08 +08:00
|
|
|
|
<u-swiper @click="linkTo" height="420" :list="swiperList" name="path" circular
|
|
|
|
|
bgColor="#e2fd7d"></u-swiper>
|
2024-12-03 09:34:24 +08:00
|
|
|
|
<view class="mobile-content">
|
|
|
|
|
<view class="content-inner">
|
|
|
|
|
<!-- 功能栏 -->
|
|
|
|
|
<view class="first-functions">
|
2024-12-18 14:45:53 +08:00
|
|
|
|
<!-- ai换衣 -->
|
2024-12-03 09:34:24 +08:00
|
|
|
|
<view class="ff-left">
|
2024-12-18 14:45:53 +08:00
|
|
|
|
<image :src="fileUrl+functionImg[0].picture" @click="toDeal(5)"></image>
|
|
|
|
|
<image :src="fileUrl+functionImg[1].picture" class="go" @click="toDeal(5)"></image>
|
2024-12-03 09:34:24 +08:00
|
|
|
|
</view>
|
2024-12-18 14:45:53 +08:00
|
|
|
|
<!-- 风格重绘 -->
|
2024-12-03 09:34:24 +08:00
|
|
|
|
<view class="ff-right">
|
2024-12-18 14:45:53 +08:00
|
|
|
|
<image @click="toDeal(6)" class="redraw" :src="fileUrl+functionImg[2].picture"></image>
|
2024-12-03 09:34:24 +08:00
|
|
|
|
<image class="tip" :src="fileUrl+functionImg[3].picture"></image>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<!-- 轮播功能栏 -->
|
|
|
|
|
<view class="second-functions">
|
2024-12-11 19:36:51 +08:00
|
|
|
|
<swiper class="swiper" :style="swiperFunctionList[currentPageindex-1]&&swiperFunctionList[currentPageindex-1].length>5?
|
|
|
|
|
{height:'270rpx'}:{height:'125rpx'}" duration="300" @change="categoryChange">
|
2024-12-06 23:58:58 +08:00
|
|
|
|
<swiper-item v-for="(item, index) in swiperFunctionList" :key="index">
|
2024-12-11 19:36:51 +08:00
|
|
|
|
<view class="category">
|
2024-12-03 09:34:24 +08:00
|
|
|
|
<template v-for="(category, itemIndex) in item">
|
2024-12-06 23:58:58 +08:00
|
|
|
|
<view class="category-item" @click="toDeal(category.id)">
|
2024-12-18 14:45:53 +08:00
|
|
|
|
<image :style="category.icon?{}:{width:'80rpx',height:'70rpx'}"
|
|
|
|
|
:src="encodeURI(staticIp+(category.icon||'static/pixel/home/default-work.png'))"></image>
|
2024-12-10 10:25:46 +08:00
|
|
|
|
<view>{{ category.name }}</view>
|
2024-12-03 09:34:24 +08:00
|
|
|
|
</view>
|
|
|
|
|
</template>
|
|
|
|
|
</view>
|
|
|
|
|
</swiper-item>
|
|
|
|
|
</swiper>
|
|
|
|
|
<view class="dots">
|
|
|
|
|
<view v-for="item in swiperFunctionList.length" :key="item"
|
|
|
|
|
:class="{ active: item === currentPageindex }"></view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<!-- 推荐作品 -->
|
|
|
|
|
<view class="third-functions">
|
|
|
|
|
<view class="tf-control">
|
|
|
|
|
<image :src="fileUrl+recommendImg"></image>
|
|
|
|
|
<view class="tfc-right">
|
|
|
|
|
筛选
|
|
|
|
|
<view class="tfcr-btn" @click="showSift = true">
|
2024-12-18 14:45:53 +08:00
|
|
|
|
<u-icon :label="siftLabel||'暂无'" :name="fileUrl+select" color="#d4ff00"
|
2024-12-03 09:34:24 +08:00
|
|
|
|
size="17" label-pos="left" label-color="#d4ff00"></u-icon>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="show-work">
|
|
|
|
|
<view @click="maskTouchend(item,index)" class="work-item" v-for="(item,index) in workList" :key="item.id">
|
|
|
|
|
<view :class="item.display?'ribbon-fadeOutUp':''" class="collect-ribbon" v-show="item.collect">收藏</view>
|
2024-12-29 16:09:08 +08:00
|
|
|
|
<u-lazy-load border-radius="30" class="work-picture"
|
|
|
|
|
:image="getWorkPath(item.path)"></u-lazy-load>
|
|
|
|
|
<!-- <image class="work-picture" :src="item.picture" mode="widthFix"></image> -->
|
|
|
|
|
<view class="sign-text">{{ siftList[item.serviceId] ? siftList[item.serviceId].name : '暂无' }}</view>
|
|
|
|
|
<image :lazy-load="true" class="sign" :src="fileUrl+sign"></image>
|
2024-12-30 19:01:03 +08:00
|
|
|
|
<view class="work-todo" @click.native.stop="toDeal(item.serviceId)">
|
|
|
|
|
<image :src="fileUrl+magicWand"></image>
|
|
|
|
|
<text>做同款</text>
|
|
|
|
|
</view>
|
2024-12-11 19:36:51 +08:00
|
|
|
|
<!-- <image class="compare-sign" mode="widthFix" :src="item.compare"></image> -->
|
2024-12-03 09:34:24 +08:00
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<!-- 下面这里等后端有了之后,用isFinish判断 -->
|
|
|
|
|
<view class="last-tip">
|
|
|
|
|
~~ 已加载全部 ~~
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
</view>
|
2024-12-06 23:58:58 +08:00
|
|
|
|
<u-toast ref="uToast"></u-toast>
|
2024-12-03 09:34:24 +08:00
|
|
|
|
<!-- 筛选项下拉栏 -->
|
2024-12-29 16:09:08 +08:00
|
|
|
|
<u-select v-model="showSift" :list="siftList" @confirm="selectSift" :defaultValue="[siftIndex]"
|
|
|
|
|
confirm-color="#94d500" labelName="name" valueName="id"></u-select>
|
2024-12-03 09:34:24 +08:00
|
|
|
|
</view>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
import configService from '@/common/config.service.js';
|
|
|
|
|
import { tools } from '@/utils/utils.js';
|
|
|
|
|
export default {
|
|
|
|
|
props: {
|
|
|
|
|
topLevel:{
|
|
|
|
|
type: Number,
|
|
|
|
|
default: 0
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
data(){
|
|
|
|
|
return{
|
2024-12-18 14:45:53 +08:00
|
|
|
|
staticIp: configService.ip,
|
2024-12-03 09:34:24 +08:00
|
|
|
|
fileUrl: configService.fileUrl + 'pixel/home/',
|
2024-12-29 16:09:08 +08:00
|
|
|
|
aliUrl: configService.aliUrl.split("://")[1],
|
2024-12-03 09:34:24 +08:00
|
|
|
|
// logo图标
|
|
|
|
|
logo: 'logo.png',
|
|
|
|
|
// 第一层功能图片
|
|
|
|
|
functionImg:[
|
|
|
|
|
{
|
|
|
|
|
// ai换装
|
|
|
|
|
picture: 'dressup.png'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
// ai换装-go
|
|
|
|
|
picture: 'dressupgo.png'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
// 涂抹重绘
|
|
|
|
|
picture: 'redraw.png'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
// 涂抹重绘提示词
|
|
|
|
|
picture: 'redrawtip.png'
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
// 横向工具栏
|
2024-12-11 19:36:51 +08:00
|
|
|
|
swiperFunctionList:[],
|
2024-12-03 09:34:24 +08:00
|
|
|
|
// 当前横向工具栏页码
|
|
|
|
|
currentPageindex: 1,
|
|
|
|
|
// 轮播图
|
2024-12-29 16:09:08 +08:00
|
|
|
|
swiperList:[],
|
2024-12-03 09:34:24 +08:00
|
|
|
|
// 推荐作品图标
|
|
|
|
|
recommendImg: 'recommend.png',
|
|
|
|
|
// 筛选下拉栏三角形
|
|
|
|
|
select: 'select.png',
|
|
|
|
|
// 展示筛选项
|
|
|
|
|
showSift: false,
|
2024-12-18 14:45:53 +08:00
|
|
|
|
// 筛选项
|
|
|
|
|
siftList: [],
|
|
|
|
|
// 筛选项label
|
|
|
|
|
siftLabel: '全部',
|
2024-12-29 16:09:08 +08:00
|
|
|
|
// 筛选项下标
|
|
|
|
|
siftIndex: 0,
|
2024-12-03 09:34:24 +08:00
|
|
|
|
// 推荐作品列表
|
2024-12-29 16:09:08 +08:00
|
|
|
|
workList:[],
|
2024-12-03 09:34:24 +08:00
|
|
|
|
// 标签图标
|
|
|
|
|
sign: 'typelam.png',
|
|
|
|
|
// 点击次数
|
|
|
|
|
touchNum : 0,
|
2024-12-11 19:36:51 +08:00
|
|
|
|
// 轮播功能列表单组功能数
|
|
|
|
|
group: 10,
|
2024-12-30 19:01:03 +08:00
|
|
|
|
// 魔术棒
|
|
|
|
|
magicWand: 'magic-wand.png'
|
2024-12-03 09:34:24 +08:00
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
methods:{
|
2024-12-06 23:58:58 +08:00
|
|
|
|
// 初始化
|
|
|
|
|
async init(){
|
2024-12-29 16:09:08 +08:00
|
|
|
|
this.getBanner();
|
|
|
|
|
this.getServices();
|
|
|
|
|
this.getWorkList();
|
|
|
|
|
},
|
|
|
|
|
// 获取轮播图
|
|
|
|
|
async getBanner(){
|
|
|
|
|
let res = await this.$api.allBanners();
|
|
|
|
|
if(res?.success){
|
|
|
|
|
this.swiperList = res.data.map(item=>{
|
|
|
|
|
return {...item,path: encodeURI(this.staticIp+item.path)}
|
|
|
|
|
});
|
|
|
|
|
}else{
|
|
|
|
|
this.$refs.uToast.show({type:'error',title: "轮播图获取失败!"});
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
getWorkPath(path){
|
|
|
|
|
return path.includes(this.aliUrl) ? path : encodeURI(this.staticIp+path);
|
|
|
|
|
},
|
|
|
|
|
// 获取应用服务列表
|
|
|
|
|
async getServices(){
|
2024-12-06 23:58:58 +08:00
|
|
|
|
let res = await this.$api.allServices();
|
|
|
|
|
if(res.success){
|
2024-12-11 19:36:51 +08:00
|
|
|
|
// 这里按一页10个分组
|
2024-12-06 23:58:58 +08:00
|
|
|
|
this.swiperFunctionList = [];
|
|
|
|
|
const arr = res.data;
|
2024-12-29 16:09:08 +08:00
|
|
|
|
this.siftList = [{id: -1,name:"全部"},...arr];
|
2024-12-11 19:36:51 +08:00
|
|
|
|
for (let i = 0; i < arr.length; i += this.group) {
|
|
|
|
|
this.swiperFunctionList.push(arr.slice(i, i + this.group));
|
2024-12-06 23:58:58 +08:00
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
this.$refs.uToast.show({type:'error',title: "应用列表获取失败!"});
|
|
|
|
|
}
|
|
|
|
|
},
|
2024-12-29 16:09:08 +08:00
|
|
|
|
// 获取推荐作品列表
|
|
|
|
|
async getWorkList(){
|
|
|
|
|
let res = await this.$api.getCpPhotoById({labelId: 4});
|
|
|
|
|
if(res?.success){
|
|
|
|
|
this.workList = res.data;
|
|
|
|
|
}else{
|
|
|
|
|
this.$refs.uToast.show({type:'error',title: "推荐作品获取失败!"});
|
|
|
|
|
}
|
|
|
|
|
},
|
2024-12-03 09:34:24 +08:00
|
|
|
|
// 横向功能列表切换页
|
|
|
|
|
categoryChange(event){
|
|
|
|
|
this.currentPageindex = event.detail.current+1;
|
|
|
|
|
},
|
|
|
|
|
// 推荐作品筛选
|
|
|
|
|
selectSift(e){
|
2024-12-29 16:09:08 +08:00
|
|
|
|
this.siftLabel = e[0].label;
|
|
|
|
|
this.siftIndex = this.siftList.findIndex(item=>item.id === e[0].value) || 0;
|
2024-12-03 09:34:24 +08:00
|
|
|
|
},
|
|
|
|
|
// 监听单双击,单击-预览图片、双击-收藏
|
|
|
|
|
maskTouchend(item,index){
|
|
|
|
|
this.touchNum ++;
|
|
|
|
|
setTimeout(()=>{
|
|
|
|
|
if(this.touchNum == 1){
|
2024-12-29 16:09:08 +08:00
|
|
|
|
const array = [item.path.includes(this.aliUrl) ? item.path : encodeURI(this.staticIp+item.path)];
|
2024-12-11 19:36:51 +08:00
|
|
|
|
if(item.compare) array.push(item.compare);
|
|
|
|
|
tools.methods.lookImage(0,array);
|
2024-12-03 09:34:24 +08:00
|
|
|
|
}
|
|
|
|
|
if(this.touchNum >= 2){
|
2024-12-29 16:09:08 +08:00
|
|
|
|
// 若collect为null,默认没收藏,那接下来就是收藏操作
|
|
|
|
|
const result = item.collect ? (item.collect+1)%2 : 1;
|
2024-12-03 09:34:24 +08:00
|
|
|
|
if(result === 0){
|
|
|
|
|
// 添加淡出的class样式
|
|
|
|
|
item.display = 1;
|
|
|
|
|
this.$forceUpdate();
|
|
|
|
|
// 下面的操作应该替换为请求后端数据后,再停止动画
|
|
|
|
|
// 模拟操作,这里用setTimeout模拟
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
// 移除淡出类
|
|
|
|
|
item.display = 0;
|
|
|
|
|
item.collect = result;
|
|
|
|
|
}, 1000); // 假设操作需要1秒
|
|
|
|
|
}else{
|
2024-12-29 16:09:08 +08:00
|
|
|
|
item.collect = result;
|
|
|
|
|
this.$forceUpdate();
|
2024-12-03 09:34:24 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
this.touchNum = 0;
|
|
|
|
|
},250)
|
|
|
|
|
},
|
|
|
|
|
// 前往工作室
|
2024-12-06 23:58:58 +08:00
|
|
|
|
toDeal(id = null){
|
2024-12-30 19:01:03 +08:00
|
|
|
|
if(id!==null&&id!=='')
|
2024-12-06 23:58:58 +08:00
|
|
|
|
uni.navigateTo({url: `/pages/mobile_web/workshops/index?id=${id}`});
|
|
|
|
|
else this.$refs.uToast.show({type:'error',title: "暂未开放对应功能!"});
|
2024-12-05 11:46:54 +08:00
|
|
|
|
},
|
|
|
|
|
// 轮播图跳转
|
|
|
|
|
linkTo(e){
|
2024-12-29 16:09:08 +08:00
|
|
|
|
if(this.swiperList[e].url){
|
2024-12-05 11:46:54 +08:00
|
|
|
|
uni.navigateTo({
|
2024-12-29 16:09:08 +08:00
|
|
|
|
url: `/pages/index/webview?src=${encodeURI(this.swiperList[e].url)}`
|
2024-12-05 11:46:54 +08:00
|
|
|
|
})
|
|
|
|
|
}
|
2024-12-03 09:34:24 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
|
|
.mobile-home{
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
min-height: 100vh;
|
|
|
|
|
// #ifdef APP
|
|
|
|
|
.app-top{
|
|
|
|
|
width: 100%;
|
|
|
|
|
position: fixed;
|
|
|
|
|
z-index: 81;
|
|
|
|
|
}
|
|
|
|
|
// #endif
|
|
|
|
|
.mobile-logo{
|
|
|
|
|
width: 100%;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
position: fixed;
|
|
|
|
|
z-index: 81;
|
|
|
|
|
padding: 15rpx 0;
|
|
|
|
|
image{
|
|
|
|
|
width: 200rpx;
|
|
|
|
|
height: 45rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.mobile-content{
|
|
|
|
|
box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 12px;
|
|
|
|
|
z-index: 80;
|
|
|
|
|
width: 100%;
|
|
|
|
|
flex: 1;
|
|
|
|
|
margin-top: -50rpx;
|
|
|
|
|
border-top-right-radius: 36rpx;
|
|
|
|
|
border-top-left-radius: 36rpx;
|
|
|
|
|
background-color: #1a1929;
|
|
|
|
|
.content-inner{
|
|
|
|
|
margin: 60rpx 45rpx 150rpx;
|
|
|
|
|
.first-functions{
|
|
|
|
|
display: flex;
|
|
|
|
|
height: 270rpx;
|
|
|
|
|
.ff-left{
|
|
|
|
|
width: 250rpx;
|
|
|
|
|
height: 100%;
|
|
|
|
|
margin-right: 20rpx;
|
|
|
|
|
position: relative;
|
|
|
|
|
image{
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 105%;
|
|
|
|
|
&:active{
|
|
|
|
|
filter: opacity(0.8);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.go{
|
|
|
|
|
width: 90rpx;
|
|
|
|
|
height: 80rpx;
|
|
|
|
|
position: absolute;
|
|
|
|
|
bottom: 24rpx;
|
|
|
|
|
right: 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.ff-right{
|
|
|
|
|
flex: 1;
|
|
|
|
|
height: 100%;
|
|
|
|
|
width: 250rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
image{
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 70%;
|
|
|
|
|
}
|
|
|
|
|
.redraw{
|
|
|
|
|
margin-top: -1%;
|
|
|
|
|
&:active{
|
|
|
|
|
filter: opacity(0.8);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.tip{
|
|
|
|
|
height: 24%;
|
|
|
|
|
margin-bottom: 1%;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.second-functions{
|
|
|
|
|
position: relative;
|
2024-12-11 19:36:51 +08:00
|
|
|
|
// height: 125rpx;
|
2024-12-03 09:34:24 +08:00
|
|
|
|
width: 100%;
|
|
|
|
|
margin-top: 50rpx;
|
|
|
|
|
.swiper{
|
|
|
|
|
width: 100%;
|
2024-12-11 19:36:51 +08:00
|
|
|
|
height: 125rpx;
|
2024-12-03 09:34:24 +08:00
|
|
|
|
.category{
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: auto;
|
2024-12-11 19:36:51 +08:00
|
|
|
|
display: grid;
|
|
|
|
|
row-gap: 20rpx;
|
|
|
|
|
grid-template-columns: repeat(5,20%);
|
2024-12-03 09:34:24 +08:00
|
|
|
|
.category-item{
|
|
|
|
|
display: flex;
|
|
|
|
|
flex-direction: column;
|
|
|
|
|
align-items: center;
|
2024-12-18 14:45:53 +08:00
|
|
|
|
justify-content: flex-end;
|
2024-12-03 09:34:24 +08:00
|
|
|
|
padding: 0 12rpx;
|
|
|
|
|
&:active{
|
|
|
|
|
filter: opacity(0.8);
|
|
|
|
|
}
|
2024-12-10 10:25:46 +08:00
|
|
|
|
view{
|
|
|
|
|
width: 100%;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
white-space: nowrap;
|
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
|
color: #fff;
|
2024-12-18 14:45:53 +08:00
|
|
|
|
text-align: center;
|
2024-12-10 10:25:46 +08:00
|
|
|
|
font-size: 25rpx;
|
|
|
|
|
}
|
2024-12-03 09:34:24 +08:00
|
|
|
|
image{
|
2024-12-18 14:45:53 +08:00
|
|
|
|
// width: 110rpx;
|
|
|
|
|
// height: 60rpx;
|
|
|
|
|
width: 60rpx;
|
|
|
|
|
height:60rpx;
|
2024-12-03 09:34:24 +08:00
|
|
|
|
margin-bottom: 14rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.dots{
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
height: 14rpx;
|
|
|
|
|
width: 100%;
|
|
|
|
|
view{
|
|
|
|
|
background-color: #818e4f;
|
|
|
|
|
width: 20rpx;
|
|
|
|
|
height: 10rpx;
|
|
|
|
|
margin: 0 6rpx;
|
|
|
|
|
border-radius: 20rpx;
|
|
|
|
|
transition: all 0.5s;
|
|
|
|
|
}
|
|
|
|
|
.active{
|
|
|
|
|
background-color: #d5ff00 !important;
|
|
|
|
|
width: 45rpx !important;
|
|
|
|
|
height: 10rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.third-functions{
|
|
|
|
|
width: 100%;
|
|
|
|
|
margin-top: 35rpx;
|
|
|
|
|
.tf-control{
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
height: 80rpx;
|
|
|
|
|
width: 100%;
|
|
|
|
|
image{
|
|
|
|
|
margin-left: 15rpx;
|
|
|
|
|
width: 160rpx;
|
|
|
|
|
height: 52rpx;
|
|
|
|
|
}
|
|
|
|
|
.tfc-right{
|
|
|
|
|
height: 70rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
margin-right: 5rpx;
|
|
|
|
|
color: #ffffff;
|
|
|
|
|
font-size: 30rpx;
|
|
|
|
|
.tfcr-btn{
|
|
|
|
|
margin-left: 25rpx;
|
|
|
|
|
border: 2rpx solid #d5ff00;
|
|
|
|
|
border-radius: 25rpx;
|
|
|
|
|
background-color: #1a1929;
|
|
|
|
|
.u-icon{
|
|
|
|
|
margin: 16rpx 15rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.show-work{
|
|
|
|
|
margin-top: 13rpx;
|
|
|
|
|
width: 100%;
|
|
|
|
|
column-count:2;
|
|
|
|
|
-moz-column-count:2; /* Firefox */
|
|
|
|
|
-webkit-column-count:2; /* Safari 和 Chrome */
|
|
|
|
|
column-gap: 1em;
|
|
|
|
|
-moz-column-gap: 1em;
|
|
|
|
|
-webkit-column-gap: 1em;
|
|
|
|
|
.work-item{
|
|
|
|
|
-webkit-column-break-inside: avoid;
|
|
|
|
|
break-inside: avoid; /*防止断点*/
|
|
|
|
|
margin-bottom: 1em;
|
|
|
|
|
position: relative;
|
|
|
|
|
padding-top: 13rpx;
|
|
|
|
|
.work-picture{
|
|
|
|
|
border: 0.1em solid #d5ff00;
|
|
|
|
|
border-radius: 30rpx;
|
2024-12-29 16:09:08 +08:00
|
|
|
|
// 骗系统开启硬件加速
|
|
|
|
|
transform: transition3d(0, 0, 0);
|
|
|
|
|
// 防止图片加载“闪一下”
|
|
|
|
|
will-change: transform;
|
2024-12-03 09:34:24 +08:00
|
|
|
|
}
|
|
|
|
|
.sign{
|
|
|
|
|
border: none;
|
|
|
|
|
border-radius: 0;
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 0.8em;
|
|
|
|
|
left: 0.6em;
|
2024-12-18 14:45:53 +08:00
|
|
|
|
width: 152rpx;
|
2024-12-03 09:34:24 +08:00
|
|
|
|
height: 47rpx;
|
|
|
|
|
}
|
|
|
|
|
.sign-text{
|
2024-12-18 14:45:53 +08:00
|
|
|
|
width: 132rpx;
|
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
white-space: nowrap;
|
2024-12-03 09:34:24 +08:00
|
|
|
|
color: #ffffff;
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 0.85em;
|
|
|
|
|
left: 0.9em;
|
|
|
|
|
z-index: 1;
|
|
|
|
|
}
|
2024-12-30 19:01:03 +08:00
|
|
|
|
.work-todo{
|
|
|
|
|
position: absolute;
|
|
|
|
|
bottom: 0.85em;
|
|
|
|
|
right: 0.7em;
|
|
|
|
|
z-index: 1;
|
|
|
|
|
border-radius: 12rpx;
|
|
|
|
|
padding: 14rpx 30rpx;
|
|
|
|
|
background-color: rgba(0, 0, 0, 0.3);
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
text{
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
background-image: linear-gradient(to right, #cdfbf2 0%, #a3d4ff 100%);
|
|
|
|
|
background-clip: text;
|
|
|
|
|
-webkit-background-clip: text;
|
|
|
|
|
-webkit-text-fill-color: transparent;
|
|
|
|
|
}
|
|
|
|
|
image{
|
|
|
|
|
margin-right: 10rpx;
|
|
|
|
|
width: 34rpx;
|
|
|
|
|
height: 34rpx;
|
|
|
|
|
}
|
|
|
|
|
&:active{
|
|
|
|
|
opacity: 0.8;
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-12-03 09:34:24 +08:00
|
|
|
|
.compare-sign{
|
|
|
|
|
position: absolute;
|
|
|
|
|
left: 0;
|
|
|
|
|
bottom: 0.2em;
|
|
|
|
|
width: 120rpx;
|
|
|
|
|
border: 0.1em solid #d5ff00;
|
|
|
|
|
border-radius: 20rpx;
|
|
|
|
|
box-shadow: rgba(213, 255, 0, 0.3) 0px 4px 12px;
|
|
|
|
|
}
|
|
|
|
|
.ribbon-fadeOutUp{
|
|
|
|
|
animation-name: fadeOutUp !important;
|
|
|
|
|
}
|
|
|
|
|
.collect-ribbon {
|
|
|
|
|
position: absolute;
|
|
|
|
|
z-index: 2;
|
|
|
|
|
margin-top: -13rpx;
|
|
|
|
|
right: 30rpx;
|
|
|
|
|
width: 62rpx;
|
|
|
|
|
padding: 20rpx 14rpx 0;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
text-align: center;
|
|
|
|
|
background: #ff9900;
|
|
|
|
|
font-size: 25rpx;
|
|
|
|
|
color: #fff;
|
|
|
|
|
animation-name: bounceInDown;
|
|
|
|
|
animation-duration: 0.5s;
|
|
|
|
|
animation-fill-mode: both;
|
|
|
|
|
|
|
|
|
|
&::before,
|
|
|
|
|
&::after {
|
|
|
|
|
content: '';
|
|
|
|
|
position: absolute;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&::before {
|
|
|
|
|
top: 0;
|
|
|
|
|
left: -10rpx;
|
|
|
|
|
height: 0;
|
|
|
|
|
width: 0;
|
|
|
|
|
border-bottom: 14rpx solid #ff9900;
|
|
|
|
|
border-left: 12rpx solid transparent;
|
|
|
|
|
opacity: .8;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
&::after {
|
|
|
|
|
height: 0;
|
|
|
|
|
width: 0;
|
|
|
|
|
left: 0;
|
|
|
|
|
bottom: -39rpx;
|
|
|
|
|
border-left: 31rpx solid #ff9900;
|
|
|
|
|
border-right: 32rpx solid #ff9900;
|
|
|
|
|
border-bottom: 43rpx solid transparent;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.last-tip{
|
|
|
|
|
color: #d5ff00;
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
text-align: center;
|
|
|
|
|
margin-top: 20rpx;
|
|
|
|
|
margin-bottom: 160rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
::v-deep .u-swiper-indicator {
|
|
|
|
|
margin-bottom: 50rpx;
|
|
|
|
|
.u-indicator-item-round-active{
|
|
|
|
|
background-color: #1d1d1d !important;
|
|
|
|
|
width: 45rpx !important;
|
|
|
|
|
height: 10rpx;
|
|
|
|
|
}
|
|
|
|
|
.u-indicator-item-round{
|
|
|
|
|
background-color: #818e4f;
|
|
|
|
|
width: 20rpx;
|
|
|
|
|
height: 10rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 淡入
|
|
|
|
|
@keyframes bounceInDown {
|
|
|
|
|
from {
|
|
|
|
|
opacity: 0;
|
|
|
|
|
transform: translate3d(0, -5%, 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
to {
|
|
|
|
|
opacity: 1;
|
|
|
|
|
transform: translate3d(0, 0, 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 淡出
|
|
|
|
|
@keyframes fadeOutUp {
|
|
|
|
|
from {
|
|
|
|
|
opacity: 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
to {
|
|
|
|
|
opacity: 0;
|
|
|
|
|
transform: translate3d(0, -5%, 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|