This commit is contained in:
77 2024-09-30 19:00:13 +08:00
parent 613122558a
commit 3852d6a23a
24 changed files with 1314 additions and 913 deletions

View File

@ -20,6 +20,19 @@
"group": "商城" "group": "商城"
} }
}, },
{
"path": "pages/integration/index",
"style": {
"navigationBarTitleText": "积分商城",
"enablePullDownRefresh": true
},
"meta": {
"auth": false,
"sync": true,
"title": "积分商城",
"group": "商城"
}
},
{ {
"path": "pages/subscribe/subscribe", "path": "pages/subscribe/subscribe",
"style": { "style": {

View File

@ -203,9 +203,11 @@
} }
} }
.scroll-box { .scroll-box {
margin-top: 13px;
height: 900rpx; height: 900rpx;
.goods-box { .goods-box {
position: relative; position: relative;
padding: 0 10px;
.cart-btn { .cart-btn {
position: absolute; position: absolute;
bottom: 10rpx; bottom: 10rpx;

View File

@ -12,7 +12,7 @@
<view class="img-wrap"> <view class="img-wrap">
<image <image
class="notice-img" class="notice-img"
:src="sheep.$url.static('/static/img/shop/commission/forbidden.png')" src="https://zysc.fjptzykj.com:3000/shangcheng/a999baebceb39e97a8ff11c547b41bf1e78109d81532eafbd858544f86e5e159.png"
mode="aspectFill" mode="aspectFill"
/> />
</view> </view>

View File

@ -34,7 +34,7 @@
height: 192rpx; height: 192rpx;
margin: -88rpx 20rpx 0 20rpx; margin: -88rpx 20rpx 0 20rpx;
padding-top: 88rpx; padding-top: 88rpx;
background: v-bind(headerBg) no-repeat; background: url('https://zysc.fjptzykj.com:3000/shangcheng/10c7d7a9afb36266f658e5f398922b835530cb350ef98cf90d4ef6f60ccc1bc1.png') no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
.head-img-box { .head-img-box {

View File

@ -2,7 +2,7 @@
<template> <template>
<view class="distribution-log-wrap"> <view class="distribution-log-wrap">
<view class="header-box"> <view class="header-box">
<image class="header-bg" :src="sheep.$url.static('/static/img/shop/commission/title2.png')" /> <image class="header-bg" src="https://zysc.fjptzykj.com:3000/shangcheng/e5caf4c1869d7af8ea254a0e403848c453375bcb22f414db52a2c93a345e1e36.png" />
<view class="ss-flex header-title"> <view class="ss-flex header-title">
<view class="title">实时动态</view> <view class="title">实时动态</view>
<text class="cicon-forward" /> <text class="cicon-forward" />
@ -25,7 +25,7 @@
<view class="ss-flex ss-col-center"> <view class="ss-flex ss-col-center">
<image <image
class="log-img" class="log-img"
:src="sheep.$url.static('/static/img/shop/avatar/notice.png')" src="https://zysc.fjptzykj.com:3000/shangcheng/c4bf2f61c013c7413121274b3b75a068d992727459ba89623cc68d3521a199fe.png"
mode="aspectFill" mode="aspectFill"
/> />
</view> </view>

View File

@ -2,7 +2,7 @@
<template> <template>
<view class="menu-box ss-flex-col"> <view class="menu-box ss-flex-col">
<view class="header-box"> <view class="header-box">
<image class="header-bg" :src="sheep.$url.static('/static/img/shop/commission/title1.png')" /> <image class="header-bg" src="https://zysc.fjptzykj.com:3000/shangcheng/eb9244a1f0662a699869d47287a477bd16147030ff25c9573395036192b86d91.png" />
<view class="ss-flex header-title"> <view class="ss-flex header-title">
<view class="title">功能专区</view> <view class="title">功能专区</view>
<text class="cicon-forward"></text> <text class="cicon-forward"></text>
@ -33,45 +33,45 @@
const state = reactive({ const state = reactive({
menuList: [ menuList: [
{ {
img: '/static/img/shop/commission/commission_icon1.png', img: 'https://zysc.fjptzykj.com:3000/shangcheng/ec41e4f5b45c087232aab8d088019a1e9d781b9bde0f54ddbb18e90230b83255.png',
title: '我的团队', title: '我的团队',
path: '/pages/commission/team', path: '/pages/commission/team',
}, },
{ {
img: '/static/img/shop/commission/commission_icon2.png', img: 'https://zysc.fjptzykj.com:3000/shangcheng/ec41e4f5b45c087232aab8d088019a1e9d781b9bde0f54ddbb18e90230b83255.png',
title: '佣金明细', title: '佣金明细',
path: '/pages/commission/wallet', path: '/pages/commission/wallet',
}, },
{ {
img: '/static/img/shop/commission/commission_icon3.png', img: 'https://zysc.fjptzykj.com:3000/shangcheng/bb763f93be24f6d5c8c2948e512b95597d748f576277cc2d91f452fb3741e5a3.png',
title: '分销订单', title: '分销订单',
path: '/pages/commission/order', path: '/pages/commission/order',
}, },
{ {
img: '/static/img/shop/commission/commission_icon4.png', img: 'https://zysc.fjptzykj.com:3000/shangcheng/326f6fe148cd6c8328297731bd63674a3a86340f937dfd1a376e435e34b5073e.png',
title: '推广商品', title: '推广商品',
path: '/pages/commission/goods', path: '/pages/commission/goods',
}, },
// { // {
// img: '/static/img/shop/commission/commission_icon5.png', // img: 'https://zysc.fjptzykj.com:3000/shangcheng/fe729044c3c0874d93435151bb204dede3d1dfbc0e2d03d09e2f76534e7cb8ba.png',
// title: '', // title: '',
// path: '/pages/commission/apply', // path: '/pages/commission/apply',
// isAgentFrom: true, // isAgentFrom: true,
// }, // },
// todo @ // todo @
{ {
img: '/static/img/shop/commission/commission_icon7.png', img: 'https://zysc.fjptzykj.com:3000/shangcheng/f9f9914bb3c1695055771cada0022c12bcf08fe3975485fc05ddd345c6f6e2a4.png',
title: '邀请海报', title: '邀请海报',
path: 'action:showShareModal', path: 'action:showShareModal',
}, },
// TODO @ icon // TODO @ icon
{ {
// img: '/static/img/shop/commission/commission_icon7.png', img: 'https://zysc.fjptzykj.com:3000/shangcheng/f9f9914bb3c1695055771cada0022c12bcf08fe3975485fc05ddd345c6f6e2a4.png',
title: '推广排行', title: '推广排行',
path: '/pages/commission/promoter', path: '/pages/commission/promoter',
}, },
{ {
// img: '/static/img/shop/commission/commission_icon7.png', img: 'https://zysc.fjptzykj.com:3000/shangcheng/f9f9914bb3c1695055771cada0022c12bcf08fe3975485fc05ddd345c6f6e2a4.png',
title: '佣金排行', title: '佣金排行',
path: '/pages/commission/commission-ranking', path: '/pages/commission/commission-ranking',
}, },

View File

@ -351,7 +351,7 @@
width: 750rpx; width: 750rpx;
z-index: 3; z-index: 3;
position: relative; position: relative;
background: v-bind(headerBg) no-repeat, background: url('https://zysc.fjptzykj.com:3000/shangcheng/c9aeef7e970b76991668740263d518f25ce737b1552db9ee7b22d8572a4a5110.png') no-repeat,
linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient)); linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
background-size: 750rpx 100%; background-size: 750rpx 100%;

File diff suppressed because one or more lines are too long

View File

@ -1,295 +1,389 @@
<!-- 秒杀商品详情 -->
<template> <template>
<s-layout :onShareAppMessage="shareInfo" navbar="goods"> <s-layout navbar="normal" :leftWidth="0" :rightWidth="0" >
ssss <!-- 筛选 -->
</s-layout> <!-- <su-sticky bgColor="#fff">
<view class="ss-flex">
<view class="ss-flex-1">
<su-tabs :list="state.tabList" :scrollable="false" @change="onTabsChange"
:current="state.currentTab" />
</view>
<view class="list-icon" @tap="state.iconStatus = !state.iconStatus">
<text v-if="state.iconStatus" class="sicon-goods-list" />
<text v-else class="sicon-goods-card" />
</view>
</view>
</su-sticky> -->
<view class="title">
促销商品
</view>
<!-- 弹窗 -->
<su-popup :show="state.showFilter" type="top" round="10" :space="sys_navBar + 38" backgroundColor="#F6F6F6"
:zIndex="10" @close="state.showFilter = false">
<view class="filter-list-box">
<view class="filter-item" v-for="(item, index) in state.tabList[state.currentTab].list"
:key="item.value" :class="[{ 'filter-item-active': index === state.curFilter }]"
@tap="onFilterItem(index)">
{{ item.label }}
</view>
</view>
</su-popup>
<!-- 情况一单列布局 -->
<view class="goods-list ss-m-t-20">
<view class="ss-p-l-20 ss-p-r-20 ss-m-b-20" v-for="item in state.pagination.list" :key="item.id">
<s-goods-column class="" size="lg" :data="item" :topRadius="10" :bottomRadius="10"
@click="sheep.$router.go('/pages/goods/index', { id: item.id })" />
</view>
</view>
<!-- 情况二双列布局 -->
<!-- <view v-if="!state.iconStatus && state.pagination.total > 0"
class="ss-flex ss-flex-wrap ss-p-x-20 ss-m-t-20 ss-col-top">
<view class="goods-list-box">
<view class="left-list" v-for="item in state.leftGoodsList" :key="item.id">
<s-goods-column class="goods-md-box" size="md" :data="item" :topRadius="10" :bottomRadius="10"
@click="sheep.$router.go('/pages/goods/index', { id: item.id })"
@getHeight="mountMasonry($event, 'left')">
<template v-slot:cart>
<button class="ss-reset-button cart-btn" />
</template>
</s-goods-column>
</view>
</view>
<view class="goods-list-box">
<view class="right-list" v-for="item in state.rightGoodsList" :key="item.id">
<s-goods-column class="goods-md-box" size="md" :topRadius="10" :bottomRadius="10" :data="item"
@click="sheep.$router.go('/pages/goods/index', { id: item.id })"
@getHeight="mountMasonry($event, 'right')">
<template v-slot:cart>
<button class="ss-reset-button cart-btn" />
</template>
</s-goods-column>
</view>
</view>
</view> -->
<uni-load-more v-if="state.pagination.total > 0" :status="state.loadStatus" :content-text="{
contentdown: '上拉加载更多',
}" @tap="loadMore" />
<s-empty v-if="state.pagination.total === 0" icon="/static/soldout-empty.png" text="暂无商品" />
</s-layout>
</template> </template>
<script setup> <script setup>
import {
reactive
} from 'vue';
import {
onLoad,
onReachBottom
} from '@dcloudio/uni-app';
import sheep from '@/sheep';
import _ from 'lodash';
import {
resetPagination
} from '@/sheep/util';
import SpuApi from '@/sheep/api/product/spu';
import SpuApi from '@/sheep/api/product/spu'; const sys_navBar = sheep.$platform.navbar;
const emits = defineEmits(['close', 'change']);
const state = reactive({
pagination: {
list: [],
total: 0,
pageNo: 1,
pageSize: 6,
},
currentSort: undefined,
currentOrder: undefined,
currentTab: 0, // tab
curFilter: 0, // list
showFilter: false,
iconStatus: false, // true - false -
keyword: '',
categoryId: 0,
tabList: [{
name: '综合推荐',
list: [{
label: '综合推荐',
},
{
label: '价格升序',
sort: 'price',
order: true,
},
{
label: '价格降序',
sort: 'price',
order: false,
},
],
},
{
name: '销量',
sort: 'salesCount',
order: false,
},
{
name: '新品优先',
value: 'createTime',
order: false,
},
],
loadStatus: '',
leftGoodsList: [], // -
rightGoodsList: [], // -
});
const getSpu = async (id) => { //
const { data } = await SpuApi.getSpusales(id); let count = 0;
console.log(data,"我要留了") let leftHeight = 0;
}; let rightHeight = 0;
getSpu() // leftGoodsList + rightGoodsList
function mountMasonry(height = 0, where = 'left') {
if (!state.pagination.list[count]) {
return;
}
if (where === 'left') {
leftHeight += height;
} else {
rightHeight += height;
}
if (leftHeight <= rightHeight) {
state.leftGoodsList.push(state.pagination.list[count]);
} else {
state.rightGoodsList.push(state.pagination.list[count]);
}
count++;
}
//
function emptyList() {
resetPagination(state.pagination);
state.leftGoodsList = [];
state.rightGoodsList = [];
count = 0;
leftHeight = 0;
rightHeight = 0;
}
//
function onSearch(e) {
state.keyword = e;
emptyList();
getList(state.currentSort, state.currentOrder);
}
//
function onTabsChange(e) {
//
if (state.tabList[e.index].list) {
state.currentTab = e.index;
state.showFilter = !state.showFilter;
return;
}
state.showFilter = false;
// tab
if (e.index === state.currentTab) {
return;
}
state.currentTab = e.index;
state.currentSort = e.sort;
state.currentOrder = e.order;
emptyList();
getList(e.sort, e.order);
}
// tab list
const onFilterItem = (val) => {
//
// tabList[0] list
if (
state.currentSort === state.tabList[0].list[val].sort &&
state.currentOrder === state.tabList[0].list[val].order
) {
state.showFilter = false;
return;
}
state.showFilter = false;
//
state.curFilter = val;
state.tabList[0].name = state.tabList[0].list[val].label;
state.currentSort = state.tabList[0].list[val].sort;
state.currentOrder = state.tabList[0].list[val].order;
// +
emptyList();
getList();
};
async function getList() {
state.loadStatus = 'loading';
const {
code,
data
} = await SpuApi.getSpusales({
pageNo: state.pagination.pageNo,
pageSize: state.pagination.pageSize,
sortField: state.currentSort,
sortAsc: state.currentOrder,
categoryId: state.categoryId,
keyword: state.keyword,
recommendBenefit:1
});
if (code !== 0) {
return;
}
state.pagination.list = _.concat(state.pagination.list, data.list);
state.pagination.total = data.total;
state.loadStatus = state.pagination.list.length < state.pagination.total ? 'more' : 'noMore';
mountMasonry();
}
//
function loadMore() {
if (state.loadStatus === 'noMore') {
return;
}
state.pagination.pageNo++;
getList(state.currentSort, state.currentOrder);
}
//
const getSpu = async (id) => {
const data = await SpuApi.getSpusales({recommendBenefit:1});
console.log(data, "我要留了")
};
onLoad((options) => {
state.categoryId = options.categoryId;
state.keyword = options.keyword;
getList(state.currentSort, state.currentOrder);
});
//
onReachBottom(() => {
loadMore();
});
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.disabled-btn-box[disabled] { .title{
background-color: transparent; text-align: center;
} padding: 10px 0;
.detail-card { position: relative;
background-color: $white; &:after {
margin: 14rpx 20rpx; position: absolute;
border-radius: 10rpx; content:'';
overflow: hidden; top: 50%;
} left: 98px;
width: 100px;
height:2px;
background:#dadada;
transform: translateX(-50%);
}
&:before {
position: absolute;
content:'';
height:2px;
top: 50%;
right: 0;
width: 100px;
background:#dadada;
transform: translateX(-50%);
}
}
.goods-list-box {
width: 50%;
box-sizing: border-box;
// .left-list {
.title-card { margin-right: 10rpx;
width: 710rpx; margin-bottom: 20rpx;
box-sizing: border-box; }
// height: 320rpx;
background-size: 100% 100%;
border-radius: 10rpx;
background-image: url('@/static/images/seckill-header.png');
background-repeat: no-repeat;
.price-box { .right-list {
.price-text { margin-left: 10rpx;
font-size: 30rpx; margin-bottom: 20rpx;
font-weight: 500; }
color: #fff; }
line-height: normal;
font-family: OPPOSANS;
&::before { .goods-box {
content: '¥'; &:nth-last-of-type(1) {
font-size: 30rpx; margin-bottom: 0 !important;
} }
}
}
.origin-price { &:nth-child(2n) {
font-size: 24rpx; margin-right: 0;
font-weight: 400; }
color: #fff; }
opacity: 0.7;
.origin-price-text { .list-icon {
text-decoration: line-through; width: 80rpx;
font-family: OPPOSANS; .sicon-goods-card {
font-size: 40rpx;
}
&::before { .sicon-goods-list {
content: '¥'; font-size: 40rpx;
} }
} }
}
.tig { .goods-card {
border: 2rpx solid #ffffff; margin-left: 20rpx;
border-radius: 4rpx; }
width: 126rpx;
height: 38rpx;
.tig-icon { .list-filter-tabs {
width: 40rpx; background-color: #fff;
height: 40rpx; }
margin-left: -2rpx;
background: #ffffff;
border-radius: 4rpx 0 0 4rpx;
.cicon-alarm { .filter-list-box {
font-size: 32rpx; padding: 28rpx 52rpx;
color: #fc6e6f;
}
}
.tig-title { .filter-item {
width: 86rpx; font-size: 28rpx;
font-size: 24rpx; font-weight: 500;
font-weight: 500; color: #333333;
line-height: normal; line-height: normal;
color: #ffffff; margin-bottom: 24rpx;
display: flex;
justify-content: center;
align-items: center;
}
}
.countdown-title { &:nth-last-child(1) {
font-size: 26rpx; margin-bottom: 0;
font-weight: 500; }
color: #ffffff; }
}
.countdown-time { .filter-item-active {
font-size: 26rpx; color: var(--ui-BG-Main);
font-weight: 500; }
color: #ffffff; }
.countdown-h {
font-size: 24rpx;
font-family: OPPOSANS;
font-weight: 500;
color: #ffffff;
padding: 0 4rpx;
height: 40rpx;
background: rgba(#000000, 0.1);
border-radius: 6rpx;
}
.countdown-num {
font-size: 24rpx;
font-family: OPPOSANS;
font-weight: 500;
color: #ffffff;
width: 40rpx;
height: 40rpx;
background: rgba(#000000, 0.1);
border-radius: 6rpx;
}
}
.discounts-box { .tab-item {
.discounts-tag { height: 50px;
padding: 4rpx 10rpx; position: relative;
font-size: 24rpx; z-index: 11;
font-weight: 500;
border-radius: 4rpx;
color: var(--ui-BG-Main);
// background: rgba(#2aae67, 0.05);
background: var(--ui-BG-Main-tag);
}
.discounts-title { .tab-title {
font-size: 24rpx; font-size: 30rpx;
font-weight: 500; }
color: var(--ui-BG-Main);
line-height: normal;
}
.cicon-forward { .cur-tab-title {
color: var(--ui-BG-Main); font-weight: $font-weight-bold;
font-size: 24rpx; }
line-height: normal;
margin-top: 4rpx;
}
}
.title-text { .tab-line {
font-size: 30rpx; width: 60rpx;
font-weight: bold; height: 6rpx;
line-height: 42rpx; border-radius: 6rpx;
color: #fff; position: absolute;
} left: 50%;
transform: translateX(-50%);
.subtitle-text { bottom: 10rpx;
font-size: 26rpx; background-color: var(--ui-BG-Main);
font-weight: 400; z-index: 12;
color: #ffffff; }
line-height: 42rpx; }
opacity: 0.9;
}
}
//
.buy-box {
.check-btn-box {
width: 248rpx;
height: 80rpx;
font-size: 24rpx;
font-weight: 600;
margin-left: -36rpx;
background-image: url('@/static/images/groupon-btn.png');
background-repeat: no-repeat;
background-size: 100% 100%;
color: #ffffff;
line-height: normal;
border-radius: 0px 40rpx 40rpx 0px;
}
.disabled-btn-box {
width: 248rpx;
height: 80rpx;
font-size: 24rpx;
font-weight: 600;
margin-left: -36rpx;
background-image: url('@/static/images/activity-btn-disabled.png');
background-repeat: no-repeat;
background-size: 100% 100%;
color: #999999;
line-height: normal;
border-radius: 0px 40rpx 40rpx 0px;
}
.btn-price {
font-family: OPPOSANS;
&::before {
content: '¥';
}
}
.origin-price-btn {
width: 236rpx;
height: 80rpx;
background: rgba(#ff5651, 0.1);
color: #ff6000;
border-radius: 40rpx 0px 0px 40rpx;
line-height: normal;
font-size: 24rpx;
font-weight: 500;
.no-original {
font-size: 28rpx;
}
.btn-title {
font-size: 28rpx;
}
}
}
//
.seckill-box {
background: v-bind(seckillBg) no-repeat;
background-size: 100% 100%;
}
.groupon-box {
background: v-bind(grouponBg) no-repeat;
background-size: 100% 100%;
}
//
.activity-box {
width: 100%;
height: 80rpx;
box-sizing: border-box;
margin-bottom: 10rpx;
.activity-title {
font-size: 26rpx;
font-weight: 500;
color: #ffffff;
line-height: 42rpx;
.activity-icon {
width: 38rpx;
height: 38rpx;
}
}
.activity-go {
width: 70rpx;
height: 32rpx;
background: #ffffff;
border-radius: 16rpx;
font-weight: 500;
color: #ff6000;
font-size: 24rpx;
line-height: normal;
}
}
.model-box {
.title {
font-size: 36rpx;
font-weight: bold;
color: #333333;
}
.subtitle {
font-size: 26rpx;
font-weight: 500;
color: #333333;
}
}
image {
width: 100%;
height: 100%;
}
</style> </style>

File diff suppressed because one or more lines are too long

View File

@ -1,55 +1,65 @@
<!-- 个人中心支持装修 --> <!-- 个人中心支持装修 -->
<template> <template>
<s-layout <s-layout title="个人中心" tabbar="/pages/index/user" navbar="normal" :bgStyle="template.page"
title="个人中心" :navbarStyle="template.navigationBar" onShareAppMessage>
tabbar="/pages/index/user"
navbar="normal" <image class="seckill" src="@/static/images/seckilbg.png"></image>
:bgStyle="template.page" <s-block class="" v-for="(item, index) in template.components" :key="index" :styles="item.property.style">
:navbarStyle="template.navigationBar" <s-block-item :type="item.id" :data="item.property" :styles="item.property.style" />
onShareAppMessage </s-block>
> </s-layout>
<image class="seckill" src="@/static/images/seckilbg.png"></image>
<s-block
v-for="(item, index) in template.components"
:key="index"
:styles="item.property.style"
>
<s-block-item :type="item.id" :data="item.property" :styles="item.property.style" />
</s-block>
</s-layout>
</template> </template>
<script setup> <script setup>
import { computed } from 'vue'; import {
import { onShow, onPageScroll, onPullDownRefresh } from '@dcloudio/uni-app'; computed
import sheep from '@/sheep'; } from 'vue';
import {
onShow,
onPageScroll,
onPullDownRefresh
} from '@dcloudio/uni-app';
import sheep from '@/sheep';
// tabBar // tabBar
uni.hideTabBar(); uni.hideTabBar();
const template = computed(() => sheep.$store('app').template.user); const template = computed(() => sheep.$store('app').template.user);
const isLogin = computed(() => sheep.$store('user').isLogin); const isLogin = computed(() => sheep.$store('user').isLogin);
onShow(() => { onShow(() => {
sheep.$store('user').updateUserData(); sheep.$store('user').updateUserData();
}); });
onPullDownRefresh(() => { onPullDownRefresh(() => {
sheep.$store('user').updateUserData(); sheep.$store('user').updateUserData();
setTimeout(function () { setTimeout(function() {
uni.stopPullDownRefresh(); uni.stopPullDownRefresh();
}, 800); }, 800);
}); });
onPageScroll(() => {}); onPageScroll(() => {});
</script> </script>
<style> <style>
.seckill{ .new-main{
width:100%;
position:absolute;
} }
view{ .seckill1 {
position: absolute;
top: 117px;
z-index: 22;
left: 50%;
transform: translateX(-50%);
width: 94%;
}
.seckill {
width: 100%;
position: absolute;
}
view {
position: relative; position: relative;
} }
</style> </style>

View File

@ -294,7 +294,7 @@
technicianList() { technicianList() {
console.log("有没有进来technicianList"); console.log("有没有进来technicianList");
this.techid = null, this.techid = null,
this.serviceTime = [] this.serviceTime = []
this.hsstr = "" this.hsstr = ""
request({ request({
url: `${baseUrl}${apiPath}/h5/technician/list`, url: `${baseUrl}${apiPath}/h5/technician/list`,
@ -560,7 +560,7 @@
console.log(this.serviceTime[index].str) console.log(this.serviceTime[index].str)
console.log(this.serviceTime[index].ym) console.log(this.serviceTime[index].ym)
if (this.serviceTime[index].ym === "true") { if (this.serviceTime[index].ym === "true") {
this.hsstr = this.serviceTime[index].str
} else if (this.serviceTime[index].ym === "false") { } else if (this.serviceTime[index].ym === "false") {
this.hsstr = this.serviceTime[index].str this.hsstr = this.serviceTime[index].str
} }

View File

@ -214,12 +214,12 @@
} }
.store-cent-left { .store-cent-left {
//width: 45%; width: 177px;
flex: 2; // flex: 2;
} }
.store-img { .store-img {
flex: 1; // flex: 1;
width: 120rpx; width: 120rpx;
height: 120rpx; height: 120rpx;
border-radius: 6rpx; border-radius: 6rpx;

View File

@ -112,10 +112,9 @@
<view class="gainList"> <view class="gainList">
<view class="item acea-row row-between-wrapper"> <view class="item acea-row row-between-wrapper">
<view class="picTxt acea-row row-middle"> <view class="picTxt acea-row row-middle">
<view class="pictrue"><text class="ss iconfont icon-qiandao2"> <view class="pictrue">
<image <image class="image" src="https://zysc.fjptzykj.com:3000/shangcheng/8c41ddea7b60d110ca636da8292a08493f52cc1009f1e15d2aaaa0c8351fc31f.png" />
src="https://zysc.fjptzykj.com:3000/shangcheng/8c41ddea7b60d110ca636da8292a08493f52cc1009f1e15d2aaaa0c8351fc31f.png" /> </view>
</text></view>
<view class="text"> <view class="text">
<view class="name line1">签到</view> <view class="name line1">签到</view>
<view class="info line1">每日签到可获得经验值</view> <view class="info line1">每日签到可获得经验值</view>
@ -126,17 +125,15 @@
</view> </view>
<view class="item acea-row row-between-wrapper"> <view class="item acea-row row-between-wrapper">
<view class="picTxt acea-row row-middle"> <view class="picTxt acea-row row-middle">
<view class="pictrue on"><text class="ss iconfont icon-shangpin"> <view class="pictrue on">
<image <image class="image" src="https://zysc.fjptzykj.com:3000/shangcheng/d0ac57f04dcea0c24340899ec45772d1d323d161a2ff021bb1851416b69f0b52.png" />
src="https://zysc.fjptzykj.com:3000/shangcheng/d0ac57f04dcea0c24340899ec45772d1d323d161a2ff021bb1851416b69f0b52.png" /> </view>
</text></view>
<view class="text"> <view class="text">
<view class="name line1">购买商品</view> <view class="name line1">购买商品</view>
<view class="info line1">购买商品可获得对应是经验值</view> <view class="info line1">购买商品可获得对应是经验值</view>
</view> </view>
</view> </view>
<navigator url="/pages/index/category" class="button" hover-class="none" <navigator url="/pages/index/category" class="button" hover-class="none">去获取</navigator>
>去获取</navigator>
</view> </view>
</view> </view>
</view> </view>
@ -266,6 +263,12 @@
}); });
</script> </script>
<style lang="scss"> <style lang="scss">
.image {
width: 22px;
height: 22px;
margin-top: 7px;
}
.swiper { .swiper {
position: relative; position: relative;
top: -353px; top: -353px;
@ -278,13 +281,7 @@
} }
} }
.ss {
image {
width: 22px;
height: 22px;
margin-top: 7px;
}
}
.acea-row { .acea-row {
display: flex; display: flex;
@ -506,6 +503,9 @@
} }
.button { .button {
display: flex;
justify-content: center; /* 水平居中 */
align-items: center;
width: 140rpx; width: 140rpx;
height: 50rpx; height: 50rpx;
background: linear-gradient(-90deg, rgba(231, 182, 103, 1) 0%, rgba(255, 234, 181, 1) 100%); background: linear-gradient(-90deg, rgba(231, 182, 103, 1) 0%, rgba(255, 234, 181, 1) 100%);

View File

@ -2,15 +2,11 @@ import request from '@/sheep/request';
const SpuApi = { const SpuApi = {
// 获得商品促销列表 // 获得商品促销列表
getSpusales: (ids) => { getSpusales: (params) => {
return request({ return request({
url:'/product/spu/get-recommend-page', url:'/product/spu/get-recommend-page',
method: 'GET', method: 'GET',
params: { params,
pageNo:1,
pageSize:10,
recommendBenefit:1
},
custom: { custom: {
showLoading: false, showLoading: false,
showError: false, showError: false,
@ -60,7 +56,22 @@ const SpuApi = {
//获取拼团列表接口 //获取拼团列表接口
getSpulist: (id) => { getSpulist: (id) => {
return request({ return request({
url: '/promotion/combination-activity/list', url: '/promotion/combination-activity/spuList',
method: 'GET',
params: {
count:3
},
custom: {
showLoading: false,
showError: false,
},
});
},
//获取秒杀列表接口
getSpuSeckilllist: (id) => {
return request({
url: '/promotion/seckill-activity/spuList',
method: 'GET', method: 'GET',
params: { params: {
count:3 count:3

View File

@ -66,6 +66,16 @@
<!-- 用户组件用户卡片 --> <!-- 用户组件用户卡片 -->
<s-user-card v-if="type === 'UserCard'" /> <s-user-card v-if="type === 'UserCard'" />
<view v-if="type === 'UserOrder'" class="new-huiy"
@click="
sheep.$router.go('/pages/user/user_vip/index')
"
>
<view class="new-button">立即开通</view>
<img class="seckill1" mode="aspectFit"
src="https://zysc.fjptzykj.com:3000/shangcheng/64776e2edc3c2f15295e7c3976ba301e08f9170f99a2e845d8f33bd65179b177.png"
/>
</view>
<!-- 用户组件用户订单 --> <!-- 用户组件用户订单 -->
<s-order-card v-if="type === 'UserOrder'" :data="data" /> <s-order-card v-if="type === 'UserOrder'" :data="data" />
<!-- 用户组件用户资产 --> <!-- 用户组件用户资产 -->
@ -118,6 +128,35 @@
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
:deep(.uni-border-bottom){
height:0;
}
.new-huiy{
width:100%;
height:100px;
.new-button{
background:white;
padding:8px;
text-align:center;
position: absolute;
border-radius: 20px;
right: 29px;
top: 31px;
font-size:14px;
color: rgba(148, 109, 45, 1);
z-index: 33;
}
.seckill1{
position: absolute;
top: -71px;
z-index: 22;
/* left: 50%; */
/* transform: translateX(-50%); */
width: 94%;
}
}
.floxt { .floxt {
width: 100%; width: 100%;
.addClass { .addClass {

View File

@ -6,7 +6,7 @@
<view <view
class="coupon-item new-class" class="coupon-item new-class"
:style="[couponBg, { marginLeft: `${data.space}px` }]" :style="[couponBg, { marginLeft: `${data.space}px` }]"
v-for="(item, index) in 3" v-for="(item, index) in couponList"
:key="index" :key="index"
> >
<su-coupon <su-coupon
@ -117,10 +117,18 @@
} }
await getCouponTemplateList(); await getCouponTemplateList();
} }
//
// const getCouponTemplateList = async () => {
// const { data } = await CouponApi.getCouponTemplateListByIds(props.data.couponIds.join(','));
// couponList.value = data;
// };
//
const getCouponTemplateList = async () => { const getCouponTemplateList = async () => {
const { data } = await CouponApi.getCouponTemplateListByIds(props.data.couponIds.join(',')); const { data } = await CouponApi.getCouponTemplateList();
couponList.value = data; couponList.value = data;
}; };
onMounted(() => { onMounted(() => {
getCouponTemplateList(); getCouponTemplateList();
}); });

View File

@ -580,6 +580,8 @@
// width: 100%; // width: 100%;
background-color: $white; background-color: $white;
position: relative; position: relative;
padding: 0 10px;
padding-top: 10px;
.sm-img-box { .sm-img-box {
// width: 228rpx; // width: 228rpx;
@ -604,7 +606,8 @@
// md // md
.md-goods-card { .md-goods-card {
overflow: hidden; overflow: hidden;
width: 100%; width: auto;
padding: 10px 10px;
position: relative; position: relative;
z-index: 1; z-index: 1;
background-color: $white; background-color: $white;

View File

@ -1,6 +1,28 @@
<!-- 装修组件 - 拼团 --> <!-- 装修组件 - 拼团 -->
<template> <template>
<view> <view class="new-class">
<!-- 标题栏 -->
<view class="menu-list-wrap">
<uni-list :border="true">
<uni-list-item showArrow clickable
@tap="sheep.$router.go('/pages/activity/groupon/list')">
<template v-slot:header>
<view class="ss-flex ss-col-center">
<image class="list-icon" src="https://zysc.fjptzykj.com:3000/shangcheng/02d372da2be37f10ecb4b79509a68f4d1c3fe6429add76d4c80f3cb9ee401e33.png"
mode="aspectFit"></image>
<view style="color: rgb(187, 187, 187);font-size:15px;" class="title-text ss-flex ss-row-center ss-col-center ss-m-l-20">
92人拼团成功
</view>
</view>
</template>
<template v-slot:footer>
<view style="color: rgb(187, 187, 187);font-size:15px;" class="notice-text ss-flex ss-row-center ss-col-center">
查看更多
</view>
</template>
</uni-list-item>
</uni-list>
</view>
<!-- <view v-if="layoutType === 'threeCol'" class="goods-sm-box ss-flex ss-flex-wrap" <!-- <view v-if="layoutType === 'threeCol'" class="goods-sm-box ss-flex ss-flex-wrap"
:style="[{ margin: '-' + data.space + 'rpx' }]"> :style="[{ margin: '-' + data.space + 'rpx' }]">
<view v-for="product in productList" :key="product.id" class="goods-card-box" :style="[ <view v-for="product in productList" :key="product.id" class="goods-card-box" :style="[
@ -41,7 +63,7 @@
<view v-if="'threeCol' === 'threeCol'" class="goods-sm-box ss-flex ss-flex-wrap" <view v-if="'threeCol' === 'threeCol'" class="goods-sm-box ss-flex ss-flex-wrap"
:style="[{ margin: '-' + data.space + 'rpx' }]"> :style="[{ margin: '-' + data.space + 'rpx' }]">
<!-- productList --> <!-- productList -->
<view v-for="product in 3" :key="product.id" class="goods-card-box" :style="[ <view v-for="product in productList" :key="product.id" class="goods-card-box" :style="[
{ {
padding: data.space + 'rpx', padding: data.space + 'rpx',
}, },
@ -50,7 +72,7 @@
:data="product" :titleColor="data.fields.name?.color" :topRadius="data.borderRadiusTop" :data="product" :titleColor="data.fields.name?.color" :topRadius="data.borderRadiusTop"
:bottomRadius="data.borderRadiusBottom" @click=" :bottomRadius="data.borderRadiusBottom" @click="
sheep.$router.go('/pages/goods/groupon', { sheep.$router.go('/pages/goods/groupon', {
id: props.data.activityId, id: product.activityId,
}) })
"></s-goods-column> "></s-goods-column>
</view> </view>
@ -120,12 +142,46 @@
const { const {
data: activity data: activity
} = await CombinationApi.getCombinationActivity(props.data.activityId); } = await CombinationApi.getCombinationActivity(props.data.activityId);
const ss= await SpuApi.getSpulist(); const ss = await SpuApi.getSpulist();
console.log(ss,"getSpuListByIds") console.log(ss, "getSpuListByIds")
productList.value = spu; productList.value = ss.data;
}); });
</script> </script>
<style lang="scss">
:deep(.uni-list--border-bottom){
height:0 !important;
}
:deep(.container--right){
padding-left: 5px !important;
}
.ss-col-center{
.list-icon {
position: relative;
width: 93px;
height: 40px;
padding-right: 10px;
&::after{
position:absolute;
content:'';
top:50%;
right:0;
width:1px;
height:57%;
border-right:1px solid #ababab;
transform: translateY(-50%);
}
}
}
.notice-text {}
.menu-list-wrap {
::v-deep .uni-list {
background-color: transparent;
}
}
</style>
<style lang="scss" scoped> <style lang="scss" scoped>
.goods-list { .goods-list {
position: relative; position: relative;
@ -161,4 +217,13 @@
box-sizing: border-box; box-sizing: border-box;
} }
} }
.new-class {
background: white;
border-radius: 8px;
}
:deep(.sm-goods-card) {
background: transparent;
}
</style> </style>

View File

@ -36,37 +36,37 @@
const list = [ const list = [
{ {
url: '/pages/index/index', url: '/pages/index/index',
icon: '/static/img/shop/tools/home.png', icon: 'https://zysc.fjptzykj.com:3000/shangcheng/f4e03230b5cb9b2bf789b67df43125af1b3cef9c2abf4d8bca8f6fa5ded16a20.png',
title: '首页', title: '首页',
}, },
{ {
url: '/pages/index/search', url: '/pages/index/search',
icon: '/static/img/shop/tools/search.png', icon: 'https://zysc.fjptzykj.com:3000/shangcheng/96a288f2a0043c8defaa37e922828b3092ba785e1c191bf18f20dbd462261f7a.png',
title: '搜索', title: '搜索',
}, },
{ {
url: '/pages/index/user', url: '/pages/index/user',
icon: '/static/img/shop/tools/user.png', icon: 'https://zysc.fjptzykj.com:3000/shangcheng/227699332b8ae736e220852e60215072eb2805478dab4909e085f89aeb3604cf.png',
title: '个人中心', title: '个人中心',
}, },
{ {
url: '/pages/index/cart', url: '/pages/index/cart',
icon: '/static/img/shop/tools/cart.png', icon: 'https://zysc.fjptzykj.com:3000/shangcheng/a45981116198a65db5f28ffd070f0078cfa66ac932a0136bf45ba7e8f401a1d0.png',
title: '购物车', title: '购物车',
}, },
{ {
url: '/pages/user/goods-log', url: '/pages/user/goods-log',
icon: '/static/img/shop/tools/browse.png', icon: 'https://zysc.fjptzykj.com:3000/shangcheng/7e5ecfb841f2d89b778e1070ef867c17ccda48a5fea14a149f8eb1ce6aa26a87.png',
title: '浏览记录', title: '浏览记录',
}, },
{ {
url: '/pages/user/goods-collect', url: '/pages/user/goods-collect',
icon: '/static/img/shop/tools/collect.png', icon: 'https://zysc.fjptzykj.com:3000/shangcheng/9f83f4dc3cbf8b1e8e747f8dd79a260feaf65fa9ef3f2e2224015779f85119a1.png',
title: '我的收藏', title: '我的收藏',
}, },
{ {
url: '/pages/chat/index', url: '/pages/chat/index',
icon: '/static/img/shop/tools/service.png', icon: 'https://zysc.fjptzykj.com:3000/shangcheng/739f3165045b1552b71176297dab45eda2e192b976e25b1a458a8781a61b7557.png',
title: '客服', title: '客服',
}, },
]; ];

View File

@ -1,6 +1,6 @@
<!-- 装修用户组件用户订单 --> <!-- 装修用户组件用户订单 -->
<template> <template>
<view> <view style="background:white;">
<view class="title"> <view class="title">
<span>订单中心</span> <span>订单中心</span>
<view class="ff"> <view class="ff">
@ -56,7 +56,7 @@
icon: '/static/img/shop/order/no_take.png', icon: '/static/img/shop/order/no_take.png',
path: '/pages/order/list', path: '/pages/order/list',
type: 'take', type: 'take',
count: 'takeCount', count: 'undeliveredCount',
}, },
{ {
title: '待收货', title: '待收货',
@ -92,6 +92,8 @@
]; ];
const numData = computed(() => sheep.$store('user').numData); const numData = computed(() => sheep.$store('user').numData);
console.log(numData,'numData')
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -1,8 +1,30 @@
<!-- 装修组件 - 秒杀 --> <!-- 装修组件 - 秒杀 -->
<template> <template>
<view> <view class="new-class">
<!-- 标题栏 -->
<view class="menu-list-wrap">
<uni-list :border="true">
<uni-list-item showArrow clickable
@tap="sheep.$router.go('/pages/activity/seckill/list')">
<template v-slot:header>
<view class="ss-flex ss-col-center">
<image class="list-icon" src="https://zysc.fjptzykj.com:3000/shangcheng/1bd7faadbb3c319c6ad303edc23ecbf12162b8ac22e2c8058b3914397d9dd226.png"
mode="aspectFit"></image>
<view style="color: rgb(187, 187, 187); font-size:15px;" class="title-text ss-flex ss-row-center ss-col-center ss-m-l-20">
已有99人购买
</view>
</view>
</template>
<template v-slot:footer>
<view style="color: rgb(187, 187, 187);font-size:15px;" class="notice-text ss-flex ss-row-center ss-col-center">
查看更多
</view>
</template>
</uni-list-item>
</uni-list>
</view>
<!-- 样式一三列 - 上图下文 --> <!-- 样式一三列 - 上图下文 -->
<view <!-- <view
v-if="layoutType === 'threeCol'" v-if="layoutType === 'threeCol'"
class="goods-sm-box ss-flex ss-flex-wrap" class="goods-sm-box ss-flex ss-flex-wrap"
:style="[{ margin: '-' + data.space + 'rpx' }]" :style="[{ margin: '-' + data.space + 'rpx' }]"
@ -33,9 +55,9 @@
" "
></s-goods-column> ></s-goods-column>
</view> </view>
</view> </view> -->
<!-- 样式二一列 - 左图右文 --> <!-- 样式二一列 - 左图右文 -->
<view class="goods-box" v-if="layoutType === 'oneCol'"> <!-- <view class="goods-box" v-if="layoutType === 'oneCol'">
<view <view
class="goods-list" class="goods-list"
v-for="(product, index) in productList" v-for="(product, index) in productList"
@ -65,7 +87,40 @@
</template> </template>
</s-goods-column> </s-goods-column>
</view> </view>
</view> </view> -->
<view
v-if="'threeCol' === 'threeCol'"
class="goods-sm-box ss-flex ss-flex-wrap"
:style="[{ margin: '-' + data.space + 'rpx' }]"
>
<view
v-for="product in productList"
:key="product.id"
class="goods-card-box"
:style="[
{
padding: data.space + 'rpx',
},
]"
>
<s-goods-column
class="goods-card"
size="sm"
:goodsFields="data.fields"
:tagStyle="tagStyle"
:data="product"
:titleColor="data.fields.name?.color"
:topRadius="data.borderRadiusTop"
:bottomRadius="data.borderRadiusBottom"
@click="
sheep.$router.go('/pages/goods/seckill', {
id: product.activityId,
})
"
></s-goods-column>
</view>
</view>
</view> </view>
</template> </template>
@ -118,13 +173,18 @@
// //
onMounted(async () => { onMounted(async () => {
// todo@owen Yudao // todo@owen Yudao
const { data: activity } = await SeckillApi.getSeckillActivity(props.data.activityId); // const { data: activity } = await SeckillApi.getSeckillActivity(props.data.activityId);
const { data: spu } = await SpuApi.getSpuDetail(activity.spuId); // const { data: spu } = await SpuApi.getSpuDetail(activity.spuId);
productList.value = [spu]; const data = await SpuApi.getSpuSeckilllist();
productList.value = data.data;
}); });
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
:deep(.uni-border-bottom){
height:0;
}
.header-box { .header-box {
height: 100rpx; height: 100rpx;
} }
@ -158,3 +218,83 @@
} }
} }
</style> </style>
<style lang="scss">
:deep(.uni-list--border-bottom){
height:0 !important;
}
:deep(.container--right){
padding-left: 5px !important;
}
.ss-col-center{
.list-icon {
position: relative;
width: 93px;
height: 40px;
padding-right: 10px;
&::after{
position:absolute;
content:'';
top:50%;
right:0;
width:1px;
height:57%;
border-right:1px solid #ababab;
transform: translateY(-50%);
}
}
}
.notice-text {}
.menu-list-wrap {
::v-deep .uni-list {
background-color: transparent;
}
}
</style>
<style lang="scss" scoped>
.goods-list {
position: relative;
.cart-btn {
position: absolute;
bottom: 10rpx;
right: 20rpx;
z-index: 11;
height: 50rpx;
line-height: 50rpx;
padding: 0 20rpx;
border-radius: 25rpx;
font-size: 24rpx;
color: #fff;
}
}
.goods-list {
&:nth-last-of-type(1) {
margin-bottom: 0 !important;
}
}
.goods-sm-box {
margin: 0 auto;
box-sizing: border-box;
.goods-card-box {
flex-shrink: 0;
overflow: hidden;
width: 33.3%;
box-sizing: border-box;
}
}
.new-class {
background: white;
border-radius: 8px;
}
:deep(.sm-goods-card) {
background: transparent;
}
</style>

View File

@ -95,10 +95,10 @@
}) })
" "
> >
<view class="card-left ss-flex ss-flex-col ss-row-between ss-col-top ss-m-l-40"> <view style="margin: 0 auto;" class="card-left ss-flex ss-flex-col ss-row-between ss-col-top">
<view class="face-value-box ss-flex ss-col-bottom ss-m-t-28"> <view class="face-value-box ss-flex ss-col-bottom ss-m-t-28">
<view class="value-text ss-m-r-4">{{ type === 'reduce' ? value : Number(value) }}</view> <view class="value-text ss-m-r-4"><span style="font-size: 14px;">{{type === 'reduce' ?'¥':''}}</span><span style="font-size: 24px;">{{ type === 'reduce' ? Number(value) : Number(value/10) }}</span></view>
<view class="value-unit">{{ type === 'reduce' ? '' : '折' }}</view> <view class="value-unit">{{ type === 'reduce' ? ' ' : '折' }}</view>
</view> </view>
<view class="ss-m-b-28"> <view class="ss-m-b-28">
<view class="title-text ss-m-b-10">{{ props.title }}</view> <view class="title-text ss-m-b-10">{{ props.title }}</view>
@ -251,7 +251,7 @@
.md-coupon-card { .md-coupon-card {
width: 330rpx; width: 330rpx;
height: 168rpx; height: 74px;
border-radius: 10rpx; border-radius: 10rpx;
overflow: hidden; overflow: hidden;

View File

@ -86,7 +86,7 @@ $uni-border-color:#e5e5e5;
top: 0; top: 0;
right: 0; right: 0;
left: 0; left: 0;
height: 1px; // height: 1px;
-webkit-transform: scaleY(0.5); -webkit-transform: scaleY(0.5);
transform: scaleY(0.5); transform: scaleY(0.5);
background-color: $uni-border-color; background-color: $uni-border-color;
@ -98,7 +98,7 @@ $uni-border-color:#e5e5e5;
bottom: 0; bottom: 0;
right: 0; right: 0;
left: 0; left: 0;
height: 1px; // height: 1px;
-webkit-transform: scaleY(0.5); -webkit-transform: scaleY(0.5);
transform: scaleY(0.5); transform: scaleY(0.5);
background-color: $uni-border-color; background-color: $uni-border-color;