Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mayi-mp-shop
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
程默
mayi-mp-shop
Commits
a7afbd18
Commit
a7afbd18
authored
Mar 03, 2021
by
程默
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'nativehome_tst' of
http://code.mayi888.com/chengmo/mayi-mp-shop
into nativehome_tst
parents
e677db30
b04dfd16
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
808 additions
and
106 deletions
+808
-106
src/api/index.js
+4
-0
src/components/basicTool/transverse-label/index.vue
+0
-0
src/components/basicTool/transverse-label/main.json
+23
-0
src/pages/home/index.vue
+10
-16
src/pages/home/main.json
+4
-1
static/nativeComponents/GoodsList/index.js
+13
-8
static/nativeComponents/GoodsList/index.wxml
+2
-2
static/nativeComponents/SharePicture/index.js
+156
-0
static/nativeComponents/SharePicture/index.json
+5
-0
static/nativeComponents/SharePicture/index.wxml
+38
-0
static/nativeComponents/SharePicture/index.wxss
+89
-0
static/nativeComponents/TimeLimitedDiscount/index.js
+59
-20
static/nativeComponents/TimeLimitedDiscount/index.wxml
+14
-14
static/nativeComponents/TransverseLabel/ComponentsList/index.js
+59
-0
static/nativeComponents/TransverseLabel/ComponentsList/index.json
+21
-0
static/nativeComponents/TransverseLabel/ComponentsList/index.wxml
+66
-0
static/nativeComponents/TransverseLabel/ComponentsList/index.wxss
+2
-0
static/nativeComponents/TransverseLabel/index.js
+62
-0
static/nativeComponents/TransverseLabel/index.json
+8
-0
static/nativeComponents/TransverseLabel/index.wxml
+24
-0
static/nativeComponents/TransverseLabel/index.wxss
+56
-0
static/vant/tabs/index.js
+93
-45
No files found.
src/api/index.js
View file @
a7afbd18
...
@@ -24,6 +24,9 @@ console.log(process.env,'-----------------config------')
...
@@ -24,6 +24,9 @@ console.log(process.env,'-----------------config------')
},
},
getLiveCon
(
data
){
getLiveCon
(
data
){
return
requestPOST
(
`
${
process
.
env
.
OLSHOP_URL
}
/liveBroadcastInfo/getPageListByIds`
,
data
);
return
requestPOST
(
`
${
process
.
env
.
OLSHOP_URL
}
/liveBroadcastInfo/getPageListByIds`
,
data
);
},
queryBuyingShowList
(
data
){
return
requestPOST
(
`
${
process
.
env
.
OLSHOP_URL
}
/activityInfo/buyingShow/queryBuyingShowList`
,
data
);
}
}
}
}
\ No newline at end of file
src/components/basicTool/transverse-label/index.vue
0 → 100644
View file @
a7afbd18
This diff is collapsed.
Click to expand it.
src/components/basicTool/transverse-label/main.json
0 → 100644
View file @
a7afbd18
{
"usingComponents"
:
{
"van-tabs"
:
"/static/vant/tabs/index"
,
"van-tab"
:
"/static/vant/tab/index"
,
"banner"
:
"/static/nativeComponents/Banner/index"
,
"goods-list"
:
"/static/nativeComponents/GoodsList/index"
,
"time-limited-discount"
:
"/static/nativeComponents/TimeLimitedDiscount/index"
,
"waterfall-flow"
:
"/static/nativeComponents/module/WaterfallFlow/index"
,
"van-button"
:
"/static/vant/button/index"
,
"area-navigation"
:
"/static/nativeComponents/AreaNavigation/index"
,
"cube-nav"
:
"/static/nativeComponents/CubeNav/index"
,
"float-button"
:
"/static/nativeComponents/FloatButton/index"
,
"goods-search"
:
"/static/nativeComponents/GoodsSearch/index"
,
"notice"
:
"/static/nativeComponents/Notice/index"
,
"pop-up"
:
"/static/nativeComponents/PopUp/index"
,
"share-popup"
:
"/static/nativeComponents/SharePopup/index"
,
"speedy-nav"
:
"/static/nativeComponents/SpeedyNav/index"
,
"video-player"
:
"/static/nativeComponents/VideoPlayer/index"
},
"enablePullDownRefresh"
:
true
,
"styleIsolation"
:
"apply-shared"
}
\ No newline at end of file
src/pages/home/index.vue
View file @
a7afbd18
...
@@ -66,28 +66,20 @@
...
@@ -66,28 +66,20 @@
<div
v-if=
"item.componentCode == 'official-account' && item.componentInfo.visible == 1"
>
<div
v-if=
"item.componentCode == 'official-account' && item.componentInfo.visible == 1"
>
<official-account></official-account>
<official-account></official-account>
</div>
</div>
<div
v-if=
"item.componentCode == 'transverse-label' && item.componentInfo.visible == 1"
>
<transverse-label
:datas=
"item"
:componentIndex=
"index"
></transverse-label>
</div>
<div
v-if=
"item.componentCode == 'photo-gallery' && item.componentInfo.visible == 1"
>
<div
v-if=
"item.componentCode == 'photo-gallery' && item.componentInfo.visible == 1"
>
<photo-gallery
:datas=
"item"
></photo-gallery>
<photo-gallery
:datas=
"item"
></photo-gallery>
</div>
</div>
<div
v-if=
"item.componentCode == 'live-broadcast' && item.componentInfo.visible == 1"
>
<div
v-if=
"item.componentCode == 'live-broadcast' && item.componentInfo.visible == 1"
>
<live-broadcast
:datas=
"item"
></live-broadcast>
<live-broadcast
:datas=
"item"
></live-broadcast>
</div>
</div>
<div
v-if=
"item.componentCode == 'share-picture' && item.componentInfo.visible == 1"
>
<share-picture
:datas=
"item"
></share-picture>
</div>
</div>
</div>
<bottomCont></bottomCont>
<bottomCont></bottomCont>
<!--
</scroll-view>
-->
<!--
<image
src=
"http://cdn.mayi888.com/public/jpg/33ff0efc-96b5-4044-a65a-07799dfe98e1.jpg?x-oss-process=image/resize,limit_1,w_750"
></image>
<van-button
type=
"primary"
>
按钮
</van-button>
-->
<!-- ----瀑布流开始---- -->
<!--
<waterfall-flow
id=
"waterfallFlow"
></waterfall-flow>
-->
<!-- ----瀑布流结束---- -->
<!--
<banner
id=
"banner"
:datas=
"componentsList[0]"
></banner>
<div
class=
"domain"
>
abc
<van-button
type=
"primary"
>
按钮
</van-button>
-->
</div>
</div>
<share-popup></share-popup>
<share-popup></share-popup>
</div>
</div>
...
@@ -101,6 +93,7 @@ import links from '@/components/basicTool/link/index.vue'
...
@@ -101,6 +93,7 @@ import links from '@/components/basicTool/link/index.vue'
import
interval
from
'@/components/basicTool/interval/index.vue'
import
interval
from
'@/components/basicTool/interval/index.vue'
import
partition
from
'@/components/basicTool/partition/index.vue'
import
partition
from
'@/components/basicTool/partition/index.vue'
import
shopPopup
from
'@/components/basicTool/shop-popup/index.vue'
import
shopPopup
from
'@/components/basicTool/shop-popup/index.vue'
import
transverseLabel
from
'@/components/basicTool/transverse-label/index.vue'
import
text
from
'@/components/content/text'
import
text
from
'@/components/content/text'
import
imgText
from
'@/components/content/imgText'
import
imgText
from
'@/components/content/imgText'
import
coupon
from
'@/components/activity/coupon'
import
coupon
from
'@/components/activity/coupon'
...
@@ -131,7 +124,8 @@ export default {
...
@@ -131,7 +124,8 @@ export default {
'text-text'
:
text
,
'text-text'
:
text
,
'img-text'
:
imgText
,
'img-text'
:
imgText
,
coupon
,
coupon
,
integralTurntable
integralTurntable
,
transverseLabel
},
},
onShareAppMessage
(
res
)
{
onShareAppMessage
(
res
)
{
let
shareVal
=
{};
let
shareVal
=
{};
...
...
src/pages/home/main.json
View file @
a7afbd18
{
{
"usingComponents"
:
{
"usingComponents"
:
{
"van-tabs"
:
"/static/vant/tabs/index"
,
"van-tab"
:
"/static/vant/tab/index"
,
"banner"
:
"/static/nativeComponents/Banner/index"
,
"banner"
:
"/static/nativeComponents/Banner/index"
,
"goods-list"
:
"/static/nativeComponents/GoodsList/index"
,
"goods-list"
:
"/static/nativeComponents/GoodsList/index"
,
"time-limited-discount"
:
"/static/nativeComponents/TimeLimitedDiscount/index"
,
"time-limited-discount"
:
"/static/nativeComponents/TimeLimitedDiscount/index"
,
...
@@ -15,7 +17,8 @@
...
@@ -15,7 +17,8 @@
"speedy-nav"
:
"/static/nativeComponents/SpeedyNav/index"
,
"speedy-nav"
:
"/static/nativeComponents/SpeedyNav/index"
,
"video-player"
:
"/static/nativeComponents/VideoPlayer/index"
,
"video-player"
:
"/static/nativeComponents/VideoPlayer/index"
,
"photo-gallery"
:
"/static/nativeComponents/PhotoGallery/index"
,
"photo-gallery"
:
"/static/nativeComponents/PhotoGallery/index"
,
"live-broadcast"
:
"/static/nativeComponents/LiveBroadcast/index"
"live-broadcast"
:
"/static/nativeComponents/LiveBroadcast/index"
,
"share-picture"
:
"/static/nativeComponents/SharePicture/index"
},
},
"enablePullDownRefresh"
:
true
,
"enablePullDownRefresh"
:
true
,
"backgroundColor"
:
"#f5f5f5"
"backgroundColor"
:
"#f5f5f5"
...
...
static/nativeComponents/GoodsList/index.js
View file @
a7afbd18
...
@@ -19,7 +19,8 @@ const componentOptions = {
...
@@ -19,7 +19,8 @@ const componentOptions = {
classificationLoadNum
:
10
,
classificationLoadNum
:
10
,
queryProductInfoLoading
:
false
,
queryProductInfoLoading
:
false
,
loading
:
false
,
loading
:
false
,
finished
:
false
finished
:
false
,
goodsList
:[],
},
},
// 数据监听器
// 数据监听器
observers
:
{},
observers
:
{},
...
@@ -32,9 +33,7 @@ const componentOptions = {
...
@@ -32,9 +33,7 @@ const componentOptions = {
moved
()
{},
moved
()
{},
detached
()
{}
detached
()
{}
},
},
attached
()
{
attached
()
{},
},
definitionFilter
()
{},
definitionFilter
()
{},
// 页面生命周期
// 页面生命周期
pageLifetimes
:
{
pageLifetimes
:
{
...
@@ -226,7 +225,7 @@ const componentOptions = {
...
@@ -226,7 +225,7 @@ const componentOptions = {
item
.
productImgUrl
=
DFSImg
(
item
.
productImgUrl
,
400
,
400
,
1
);
item
.
productImgUrl
=
DFSImg
(
item
.
productImgUrl
,
400
,
400
,
1
);
item
.
minPrice
=
Number
(
item
.
minPrice
).
toFixed
(
2
);
item
.
minPrice
=
Number
(
item
.
minPrice
).
toFixed
(
2
);
item
.
qty
=
Number
(
item
.
qty
);
item
.
qty
=
Number
(
item
.
qty
);
item
.
saleQty
=
item
.
saleQty
?
Number
(
item
.
saleQty
):
1
;
item
.
saleQty
=
item
.
saleQty
?
Number
(
item
.
saleQty
)
:
1
;
item
.
totalCollectionCount
=
Number
(
item
.
totalCollectionCount
)
||
0
;
item
.
totalCollectionCount
=
Number
(
item
.
totalCollectionCount
)
||
0
;
item
.
minPriceAfterRecommendedCardPriceTable
=
item
.
minPriceAfterRecommendedCardPriceTable
item
.
minPriceAfterRecommendedCardPriceTable
=
item
.
minPriceAfterRecommendedCardPriceTable
?
Number
(
item
.
minPriceAfterRecommendedCardPriceTable
)
?
Number
(
item
.
minPriceAfterRecommendedCardPriceTable
)
...
@@ -245,7 +244,8 @@ const componentOptions = {
...
@@ -245,7 +244,8 @@ const componentOptions = {
}
}
});
});
this
.
setData
({
this
.
setData
({
"datas.componentData.goodsList"
:
goodsList
"datas.componentData.goodsList"
:
goodsList
,
goodsList
});
});
if
(
type
==
1
)
{
if
(
type
==
1
)
{
// 初始化
// 初始化
...
@@ -342,7 +342,12 @@ const componentOptions = {
...
@@ -342,7 +342,12 @@ const componentOptions = {
this
.
getProductList
(
1
,
2
);
this
.
getProductList
(
1
,
2
);
},
},
viewMore
()
{
viewMore
()
{
let
{
goodsType
,
style
,
categoryName
,
categoryId
}
=
this
.
data
.
datas
.
componentData
;
let
{
goodsType
,
style
,
categoryName
,
categoryId
}
=
this
.
data
.
datas
.
componentData
;
let
linkVal
=
""
;
let
linkVal
=
""
;
if
(
goodsType
!=
1
)
{
if
(
goodsType
!=
1
)
{
if
(
style
==
"list"
)
{
if
(
style
==
"list"
)
{
...
@@ -355,7 +360,7 @@ const componentOptions = {
...
@@ -355,7 +360,7 @@ const componentOptions = {
}
}
$themeToLink
({
$themeToLink
({
type
:
1
,
type
:
1
,
link
:
linkVal
,
link
:
linkVal
});
});
}
}
}
}
...
...
static/nativeComponents/GoodsList/index.wxml
View file @
a7afbd18
...
@@ -25,14 +25,14 @@
...
@@ -25,14 +25,14 @@
style="margin-left:{{-datas.componentData.proGap*2}}rpx;"
style="margin-left:{{-datas.componentData.proGap*2}}rpx;"
>
>
<view
<view
wx:for="{{
datas.componentData.
goodsList}}"
wx:for="{{goodsList}}"
wx:key="index"
wx:key="index"
class="goods-item"
class="goods-item"
style="width:{{100/datas.componentData.columnNum}}%;padding-left:{{datas.componentData.proGap*2}}rpx"
style="width:{{100/datas.componentData.columnNum}}%;padding-left:{{datas.componentData.proGap*2}}rpx"
>
>
<goods-item
<goods-item
datas="{{datas}}"
datas="{{datas}}"
items="{{
datas.componentData.
goodsList[index]}}"
items="{{goodsList[index]}}"
indexs="{{index}}"
indexs="{{index}}"
></goods-item>
></goods-item>
</view>
</view>
...
...
static/nativeComponents/SharePicture/index.js
0 → 100644
View file @
a7afbd18
// static/nativeComponents/SharePicture/index.js
const
app
=
getApp
()
const
{
indexApi
}
=
app
;
Component
({
/**
* 组件的属性列表
*/
properties
:
{
datas
:
{
type
:
Object
}
},
/**
* 组件的初始数据
*/
data
:
{
tabIndex
:
0
,
waterfallLeftList
:[],
waterfallRightList
:[],
loaded
:
true
,
pageNum
:
1
,
tabId
:
1
,
},
ready
(){
this
.
queryBuyingShowList
(
0
);
},
/**
* 组件的方法列表
*/
methods
:
{
tabHandle
(
e
){
let
index
=
e
.
currentTarget
.
dataset
.
index
let
item
=
e
.
currentTarget
.
dataset
.
item
console
.
log
(
index
,
item
,
this
.
data
.
tabIndex
)
if
(
this
.
data
.
tabIndex
!=
index
){
this
.
setData
({
tabIndex
:
index
,
tabId
:
item
.
id
})
this
.
queryBuyingShowList
(
0
)
}
},
queryBuyingShowList
(
type
){
if
(
this
.
data
.
datas
.
componentData
[
"activityFlag"
][
0
][
"id"
]
==
""
||
!
this
.
data
.
loaded
){
return
;
}
this
.
setData
({
loaded
:
false
})
if
(
type
==
0
){
this
.
setData
({
pageNum
:
1
})
}
else
{
this
.
setData
({
pageNum
:
this
.
data
.
pageNum
+
1
})
}
let
query
=
{
activityId
:
this
.
data
.
datas
.
componentData
.
activityFlag
[
0
].
id
||
4
,
sortType
:
this
.
data
.
tabId
,
pageNum
:
this
.
data
.
pageNum
,
startTime
:
Array
.
isArray
(
this
.
data
.
datas
.
componentData
.
publishTime
)
?
this
.
data
.
datas
.
componentData
.
publishTime
[
0
]
:
""
,
endTime
:
Array
.
isArray
(
this
.
data
.
datas
.
componentData
.
publishTime
)
?
this
.
data
.
datas
.
componentData
.
publishTime
[
1
]
:
""
,
pageSize
:
+
this
.
data
.
datas
.
componentData
[
"quantity"
]
}
indexApi
.
queryBuyingShowList
(
query
).
then
(
res
=>
{
this
.
setData
({
loaded
:
true
})
if
(
res
.
data
.
code
==
'200'
){
let
data
=
res
.
data
.
data
let
{
waterfallLeftList
,
waterfallRightList
}
=
this
.
data
if
(
type
==
0
){
data
.
forEach
((
item
,
index
)
=>
{
item
.
customerHandImage
=
app
.
DFSImg
(
item
.
customerHandImage
)
item
.
checkMP4Status
=
this
.
checkMP4
(
item
.
urls
)
if
(
this
.
getFileType
(
item
.
urls
[
0
])
==
'video'
){
item
.
coverImg
=
app
.
DFSImg
(
`
${
item
.
urls
[
0
]}
?x-oss-process=video/snapshot,t_1,m_fast`
)
}
else
{
item
.
coverImg
=
app
.
DFSImg
(
item
.
urls
[
0
],
400
,
null
,
1
)
}
if
(
index
%
2
==
0
){
waterfallLeftList
.
push
(
item
)
}
else
{
waterfallRightList
.
push
(
item
)
}
})
this
.
setData
({
waterfallLeftList
,
waterfallRightList
})
console
.
log
(
this
.
data
.
waterfallLeftList
,
this
.
data
.
waterfallRightList
,
' this.data.waterfallRightList'
)
}
else
{
}
}
})
.
catch
(
err
=>
{
this
.
setData
({
loaded
:
true
})
})
},
getFileType
(
name
)
{
if
(
!
name
)
return
false
;
var
imgType
=
[
"gif"
,
"jpeg"
,
"jpg"
,
"bmp"
,
"png"
];
var
videoType
=
[
"avi"
,
"wmv"
,
"mkv"
,
"mp4"
,
"mov"
,
"rm"
,
"3gp"
,
"flv"
,
"mpg"
,
"rmvb"
];
if
(
RegExp
(
".("
+
imgType
.
join
(
"|"
)
+
")$"
,
"i"
).
test
(
name
.
toLowerCase
())
)
{
return
"image"
;
}
else
if
(
RegExp
(
".("
+
videoType
.
join
(
"|"
)
+
")$"
,
"i"
).
test
(
name
.
toLowerCase
())
)
{
return
"video"
;
}
else
{
return
false
;
}
},
checkMP4
(
data
)
{
for
(
let
index
=
0
;
index
<
data
.
length
;
index
++
)
{
if
(
this
.
getFileType
(
data
[
index
])
==
"video"
)
{
return
true
;
}
else
{
return
false
;
}
}
},
}
})
static/nativeComponents/SharePicture/index.json
0 → 100644
View file @
a7afbd18
{
"component"
:
true
,
"usingComponents"
:
{}
}
\ No newline at end of file
static/nativeComponents/SharePicture/index.wxml
0 → 100644
View file @
a7afbd18
<!--static/nativeComponents/SharePicture/index.wxml-->
<view class="waterfall-content" style="background-color:{{datas.componentData['backgroundColor']}};padding-top:{{datas.componentData.paddingList[0]['value'] * 2}}rpx;padding-bottom:{{datas.componentData.paddingList[1]['value'] * 2}}rpx;padding-left:{{datas.componentData.paddingList[2]['value'] * 2}}rpx;padding-right:{{datas.componentData.paddingList[3]['value'] * 2}}rpx">
<view class="tab-wrap">
<view class="tab-item {{tabIndex == index && 'checked'}}" wx:for="{{datas.componentData['list']}}" :key="index" wx:if="{{item.show}}" bindtap="tabHandle" data-index="{{index}}" data-item="{{item}}" z>
<text>{{item.name}}</text>
</view>
</view>
<view class="waterfall-wrap">
<view class="waterfall-l" style="padding-right:{{datas.componentData.proGap}}rpx">
<view class="item" wx:for="{{waterfallLeftList}}" wx:key="index" style="border-width:{{datas.componentData['borderColorShow'] ? '1px' : ''}};border-style:{{datas.componentData['borderColorShow'] ? 'solid' : ''}};border-color:{{datas.componentData['borderColorShow'] ? datas.componentData['borderColor'] : ''}}">
<view class="img-wrap">
<image src="{{item.coverImg}}" mode="widthFix"></image>
<i class="iconfont-common common-iconbofang2 icon{{datas.componentData['playBtnPosition']}}" wx:if="{{item.checkMP4Status}}"></i>
</view>
<view class="content">
<view class="title" wx:if="{{datas.componentData['textContentShow']}}" style="color:{{datas.componentData['textContentColor']}};font-weight:{{datas.componentData['textContentFontWeight']}};font-size:{{datas.componentData['textContentFontSize'] * 20}}rpx">
{{item.commentContent}}
</view>
</view>
</view>
</view>
<view class="waterfall-r" style="padding-left:{{datas.componentData.proGap}}rpx">
<view class="item" wx:for="{{waterfallRightList}}" wx:key="index" style="border-width:{{datas.componentData['borderColorShow'] ? '1px' : ''}};border-style:{{datas.componentData['borderColorShow'] ? 'solid' : ''}};border-color:{{datas.componentData['borderColorShow'] ? datas.componentData['borderColor'] : ''}}">
<view class="img-wrap">
<image src="{{item.coverImg}}" mode="widthFix"></image>
<i class="iconfont-common common-iconbofang2 icon{{datas.componentData['playBtnPosition']}}" wx:if="{{item.checkMP4Status}}"></i>
</view>
<view class="content">
<view class="title" wx:if="{{datas.componentData['textContentShow']}}" style="color:{{datas.componentData['textContentColor']}};font-weight:{{datas.componentData['textContentFontWeight']}};font-size:{{datas.componentData['textContentFontSize'] * 20}}rpx">
{{item.commentContent}}
</view>
</view>
</view>
</view>
</view>
</view>
\ No newline at end of file
static/nativeComponents/SharePicture/index.wxss
0 → 100644
View file @
a7afbd18
/* static/nativeComponents/SharePicture/index.wxss */
@import "/static/font/common_icon.wxss";
.waterfall-content {
font-size: 20rpx;
width: 100%;
height: 100%;
position: relative;
box-sizing: border-box;
}
.waterfall-content .tab-wrap{
display: flex;
justify-content: space-around;
padding: 32rpx 0;
box-sizing: border-box
}
.waterfall-content .tab-wrap .tab-item{
transition: all 0.2s;
border-radius: 40rpx;
width: 96rpx;
height: 44rpx;
box-sizing: border-box;
display: flex;
justify-content: center;
align-items: center;
}
.waterfall-content .tab-wrap .tab-item text{
font-size: 26rpx;
}
.checked {
background-color: var(--main-color);
color: #ffffff;
}
.waterfall-wrap{
position: relative;
box-sizing: border-box;
overflow: hidden;
}
.waterfall-l,.waterfall-r{
width: 50%;
box-sizing: border-box;
float: left;
}
.waterfall-l .item, .waterfall-r .item{
border-radius: 12rpx;
margin-top: 20rpx;
overflow: hidden;
background-color: white;
}
.waterfall-l .item:first-child, .waterfall-r .item:first-child{
margin-top: 0
}
.waterfall-wrap .img-wrap{
position: relative;
}
.waterfall-wrap .img-wrap image{
display: block;
}
.waterfall-wrap .img-wrap .iconfont-common {
color: #fff;
position: absolute;
font-size: 60rpx;
}
.icon0 {
left: 4rpx;
bottom: 4rpx;
}
.icon1 {
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
.icon2 {
right: 4rpx;
top: 4rpx;
}
.content{
padding : 19rpx 17rpx 20rpx 17rpx;
}
.content .title{
text-overflow: ellipsis;
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
}
\ No newline at end of file
static/nativeComponents/TimeLimitedDiscount/index.js
View file @
a7afbd18
...
@@ -123,15 +123,22 @@ const componentOptions = {
...
@@ -123,15 +123,22 @@ const componentOptions = {
days
:
0
,
days
:
0
,
hours
:
0
,
hours
:
0
,
minute
:
0
,
minute
:
0
,
second
:
0
second
:
0
,
goodsList
:[],
},
},
// 数据监听器
// 数据监听器
observers
:
{},
observers
:
{},
// 组件方法
// 组件方法
methods
:
{
methods
:
{
init
()
{
init
()
{
let
{
goodsList
,
activityCode
,
selectActivityValue
,
dimension
}
=
this
.
data
.
datas
.
componentData
;
let
{
goodsList
,
activityCode
,
selectActivityValue
,
dimension
}
=
this
.
data
.
datas
.
componentData
;
let
{
deleteFlag
,
endTimeData
}
=
this
.
data
;
let
{
deleteFlag
,
endTimeData
}
=
this
.
data
;
let
_this
=
this
;
if
(
activityCode
==
""
)
{
if
(
activityCode
==
""
)
{
return
;
return
;
}
}
...
@@ -146,13 +153,14 @@ const componentOptions = {
...
@@ -146,13 +153,14 @@ const componentOptions = {
if
(
dimension
==
0
&&
copyData
.
goodsItems
.
length
==
0
)
{
if
(
dimension
==
0
&&
copyData
.
goodsItems
.
length
==
0
)
{
deleteFlag
=
true
;
deleteFlag
=
true
;
}
}
endTimeData
=
new
Date
(
copyData
.
endTime
.
replace
(
/-/g
,
"/"
)).
getTime
()
-
new
Date
().
getTime
();
endTimeData
=
new
Date
(
copyData
.
endTime
.
replace
(
/-/g
,
"/"
)).
getTime
()
-
new
Date
().
getTime
();
console
.
log
(
endTimeData
,
"----------------------150"
);
console
.
log
(
endTimeData
,
"----------------------150"
);
this
.
setData
({
endTime
:
endTimeData
});
this
.
setData
({
endTime
:
endTimeData
});
let
_this
=
this
;
this
.
setData
({
deleteFlag
});
this
.
setData
({
deleteFlag
});
console
.
log
(
"------------155"
)
console
.
log
(
"------------155"
)
;
// setTimeout(() => {
// setTimeout(() => {
// xcsoft.countdown(_this.data.datas.componentData.endTime, function (time) {
// xcsoft.countdown(_this.data.datas.componentData.endTime, function (time) {
// console.log("--------------157")
// console.log("--------------157")
...
@@ -171,10 +179,11 @@ const componentOptions = {
...
@@ -171,10 +179,11 @@ const componentOptions = {
// }, 100);
// }, 100);
copyData
.
goodsItems
.
forEach
((
item
,
index
)
=>
{
copyData
.
goodsItems
.
forEach
((
item
,
index
)
=>
{
item
.
productImgUrl
=
DFSImg
(
item
.
imgUrl
);
item
.
productImgUrl
=
DFSImg
(
item
.
imgUrl
);
item
.
productImgUrl1
=
DFSImg
(
item
.
imgUrl
);
item
.
minPrice
=
parseFloat
(
item
.
discountPrice
);
item
.
minPrice
=
parseFloat
(
item
.
discountPrice
);
item
.
maxPrice
=
parseFloat
(
item
.
salePrice
);
item
.
maxPrice
=
parseFloat
(
item
.
salePrice
);
});
});
this
.
setData
({
_
this
.
setData
({
goodsList
:
copyData
.
goodsItems
,
goodsList
:
copyData
.
goodsItems
,
selectActivityValue
:
copyData
.
singleItemActivityName
selectActivityValue
:
copyData
.
singleItemActivityName
});
});
...
@@ -191,30 +200,44 @@ const componentOptions = {
...
@@ -191,30 +200,44 @@ const componentOptions = {
});
});
}
}
if
(
ids
.
length
==
0
)
{
if
(
ids
.
length
==
0
)
{
this
.
setData
({
isLoading
:
false
});
this
.
setData
({
isLoading
:
false
});
return
;
return
;
}
}
promoteApi
.
query_single_item_activity_list_by_ids
(
ids
).
then
(
res
=>
{
promoteApi
.
query_single_item_activity_list_by_ids
(
ids
).
then
(
res
=>
{
if
(
res
.
data
.
code
==
200
)
{
if
(
res
.
data
.
code
==
200
)
{
let
list
=
res
.
data
.
data
||
[];
let
list
=
res
.
data
.
data
||
[];
if
(
list
.
length
>
0
)
{
if
(
list
.
length
>
0
)
{
let
hideNum
=
0
;
let
hideNum
=
0
;
list
.
forEach
((
item
,
index
)
=>
{
list
.
forEach
((
item
,
index
)
=>
{
if
(
new
Date
(
item
.
endTime
.
replace
(
/-/g
,
"/"
)).
getTime
()
-
new
Date
().
getTime
()
<=
0
)
{
if
(
new
Date
(
item
.
endTime
.
replace
(
/-/g
,
"/"
)).
getTime
()
-
new
Date
().
getTime
()
<=
0
)
{
item
.
isEnd
=
true
;
item
.
isEnd
=
true
;
hideNum
+=
1
;
hideNum
+=
1
;
}
else
{
}
else
{
item
.
isEnd
=
false
;
item
.
isEnd
=
false
;
}
}
item
.
startTimeTimeStamp
=
new
Date
(
item
.
startTime
.
replace
(
/-/g
,
"/"
)).
getTime
()
-
new
Date
().
getTime
();
item
.
startTimeTimeStamp
=
item
.
endTimeTimeStamp
=
new
Date
(
item
.
endTime
.
replace
(
/-/g
,
"/"
)).
getTime
()
-
new
Date
().
getTime
();
new
Date
(
item
.
startTime
.
replace
(
/-/g
,
"/"
)).
getTime
()
-
item
.
singleItemActivityCoverImage
=
DFSImg
(
item
.
singleItemActivityCoverImage
);
new
Date
().
getTime
();
item
.
isStart
=
new
Date
(
item
.
startTime
.
replace
(
/-/g
,
"/"
)).
getTime
()
>
new
Date
().
getTime
()
?
true
:
false
;
item
.
endTimeTimeStamp
=
console
.
log
(
item
.
isEnd
,
'-----------------------213'
);
new
Date
(
item
.
endTime
.
replace
(
/-/g
,
"/"
)).
getTime
()
-
})
new
Date
().
getTime
();
item
.
singleItemActivityCoverImage
=
DFSImg
(
item
.
singleItemActivityCoverImage
);
item
.
isStart
=
new
Date
(
item
.
startTime
.
replace
(
/-/g
,
"/"
)).
getTime
()
>
new
Date
().
getTime
()
?
true
:
false
;
console
.
log
(
item
.
isEnd
,
"-----------------------213"
);
});
this
.
setData
({
"datas.componentData.actList"
:
list
});
this
.
setData
({
"datas.componentData.actList"
:
list
});
if
(
hideNum
==
actList
.
length
)
{
if
(
hideNum
==
actList
.
length
)
{
this
.
setData
({
hideAll
:
true
});
this
.
setData
({
hideAll
:
true
});
}
}
}
}
}
}
...
@@ -224,12 +247,28 @@ const componentOptions = {
...
@@ -224,12 +247,28 @@ const componentOptions = {
this
.
setData
({
timeData
:
e
.
detail
});
this
.
setData
({
timeData
:
e
.
detail
});
},
},
onclickProduct
(
e
)
{
onclickProduct
(
e
)
{
console
.
log
(
e
.
currentTarget
.
dataset
.
items
,
'-------------------------226'
);
console
.
log
(
let
{
terminalProductId
,
terminalGoodsMixId
,
productId
}
=
e
.
currentTarget
.
dataset
.
items
;
e
.
currentTarget
.
dataset
.
items
,
$themeToLink
({
type
:
1
,
link
:
`/goods/
${
productId
}
?limitedLime=true&endTime=
${
this
.
data
.
datas
.
componentData
.
endTime
}
&terminalProductId="
${
terminalProductId
}
&terminalGoodsMixId=
${
terminalGoodsMixId
}
`
});
"-------------------------226"
);
let
{
terminalProductId
,
terminalGoodsMixId
,
productId
}
=
e
.
currentTarget
.
dataset
.
items
;
$themeToLink
({
type
:
1
,
link
:
`/goods/
${
productId
}
?limitedLime=true&endTime=
${
this
.
data
.
datas
.
componentData
.
endTime
}
&terminalProductId="
${
terminalProductId
}
&terminalGoodsMixId=
${
terminalGoodsMixId
}
`
});
},
},
onclickOrder
(
e
)
{
onclickOrder
(
e
)
{
let
{
terminalGoodsMixId
,
terminalGoodsId
,
goodsId
}
=
e
.
currentTarget
.
dataset
.
items
;
let
{
terminalGoodsMixId
,
terminalGoodsId
,
goodsId
}
=
e
.
currentTarget
.
dataset
.
items
;
$themeToLink
({
$themeToLink
({
type
:
1
,
type
:
1
,
link
:
`/order/orderConfirm?productGoodsMixId=
${
terminalGoodsMixId
}
&productGoodsId=
${
terminalGoodsId
}
&goodsId=
${
goodsId
}
&qty=1&goodsString=null`
link
:
`/order/orderConfirm?productGoodsMixId=
${
terminalGoodsMixId
}
&productGoodsId=
${
terminalGoodsId
}
&goodsId=
${
goodsId
}
&qty=1&goodsString=null`
...
...
static/nativeComponents/TimeLimitedDiscount/index.wxml
View file @
a7afbd18
...
@@ -44,11 +44,11 @@
...
@@ -44,11 +44,11 @@
<view
<view
class="goodsPicture"
class="goodsPicture"
bindtap="onclickProduct"
bindtap="onclickProduct"
data-items="{{
datas.componentData.
goodsList[index]}}"
data-items="{{goodsList[index]}}"
style="padding:{{datas.componentData.imgSize}}"
style="padding:{{datas.componentData.imgSize}}"
>
>
<image mode="widthFix" src="{{
datas.componentData.goodsList[index]['productImgUrl
']}}"></image>
<image mode="widthFix" src="{{
goodsList[index]['productImgUrl1
']}}"></image>
<view class="whiteBg" wx:if="{{
datas.componentData.
goodsList[index].oversoldFlag==0&&datas.componentData.goodsList[index].saleQty-0<=0}}">
<view class="whiteBg" wx:if="{{goodsList[index].oversoldFlag==0&&datas.componentData.goodsList[index].saleQty-0<=0}}">
<view class="cover">
<view class="cover">
<text>商品</text>
<text>商品</text>
<text>售罄</text>
<text>售罄</text>
...
@@ -58,20 +58,20 @@
...
@@ -58,20 +58,20 @@
</view>
</view>
<view class="info">
<view class="info">
<view class="name">
<view class="name">
{{
datas.componentData.goodsList[index]!=null?datas.componentData.
goodsList[index]['productName']:'名称'}}
{{
goodsList[index]!=null?
goodsList[index]['productName']:'名称'}}
</view>
</view>
<view class="allPrice">
<view class="allPrice">
<view>
<view>
<!-- <text class="price" wx:if="{{((hours-0)+(minute-0)+(second-0))!=0}}">¥{{datas.componentData.goodsList[index]!=null?datas.componentData.goodsList[index]['minPrice']:0}}</text>
<!-- <text class="price" wx:if="{{((hours-0)+(minute-0)+(second-0))!=0}}">¥{{datas.componentData.goodsList[index]!=null?datas.componentData.goodsList[index]['minPrice']:0}}</text>
<text class="price" wx:else>¥{{datas.componentData.goodsList[index]!=null?datas.componentData.goodsList[index]['minPrice']:0}}</text>
<text class="price" wx:else>¥{{datas.componentData.goodsList[index]!=null?datas.componentData.goodsList[index]['minPrice']:0}}</text>
<text class="delPrice" wx:if="{{((hours-0)+(minute-0)+(second-0))!=0}}">¥{{datas.componentData.goodsList[index]!=null?datas.componentData.goodsList[index]['maxPrice']:0}}</text> -->
<text class="delPrice" wx:if="{{((hours-0)+(minute-0)+(second-0))!=0}}">¥{{datas.componentData.goodsList[index]!=null?datas.componentData.goodsList[index]['maxPrice']:0}}</text> -->
<view class="price">¥{{
datas.componentData.goodsList[index]!=null?datas.componentData.
goodsList[index]['minPrice']:0}}</view>
<view class="price">¥{{
goodsList[index]!=null?
goodsList[index]['minPrice']:0}}</view>
<view class="delPrice">¥{{
datas.componentData.goodsList[index]!=null?datas.componentData.
goodsList[index]['maxPrice']:0}}</view>
<view class="delPrice">¥{{
goodsList[index]!=null?
goodsList[index]['maxPrice']:0}}</view>
</view>
</view>
<view
<view
class="btn"
class="btn"
style="background:#333;"
style="background:#333;"
data-items="{{
datas.componentData.
goodsList[index]}}"
data-items="{{goodsList[index]}}"
catchtap="onclickOrder"
catchtap="onclickOrder"
>
>
立即抢购
立即抢购
...
@@ -86,20 +86,20 @@
...
@@ -86,20 +86,20 @@
<view class="goods1" wx:elif="{{datas.componentData.style==='across'}}">
<view class="goods1" wx:elif="{{datas.componentData.style==='across'}}">
<view
<view
class="goods-item"
class="goods-item"
wx:for="{{
datas.componentData.
goodsList}}"
wx:for="{{goodsList}}"
wx:key="index"
wx:key="index"
>
>
<view class="items">
<view class="items">
<view class="imgBox slidebox2">
<view class="imgBox slidebox2">
<view
<view
class="goodsPicture"
class="goodsPicture"
wx:if="{{
datas.componentData.
goodsList[index]!=null}}"
wx:if="{{goodsList[index]!=null}}"
style="padding:{{datas.componentData.imgSize}}"
style="padding:{{datas.componentData.imgSize}}"
data-items="{{
datas.componentData.
goodsList[index]}}"
data-items="{{goodsList[index]}}"
bindtap="onclickProduct"
bindtap="onclickProduct"
>
>
<image mode="widthFix" src="{{
datas.componentData.
goodsList[index]['productImgUrl']}}"></image>
<image mode="widthFix" src="{{goodsList[index]['productImgUrl']}}"></image>
<view class="whiteBg" wx:if="{{
datas.componentData.goodsList[index].oversoldFlag==0&&datas.componentData.
goodsList[index].saleQty-0<=0}}">
<view class="whiteBg" wx:if="{{
goodsList[index].oversoldFlag==0&&
goodsList[index].saleQty-0<=0}}">
<view class="cover">
<view class="cover">
<text>商品</text>
<text>商品</text>
<text>售罄</text>
<text>售罄</text>
...
@@ -111,8 +111,8 @@
...
@@ -111,8 +111,8 @@
<!-- <text class="price" wx:if="{{((hours-0)+(minute-0)+(second-0))!=0}}">¥{{datas.componentData.goodsList[index]!=null?datas.componentData.goodsList[index]['minPrice']:0}}</text>
<!-- <text class="price" wx:if="{{((hours-0)+(minute-0)+(second-0))!=0}}">¥{{datas.componentData.goodsList[index]!=null?datas.componentData.goodsList[index]['minPrice']:0}}</text>
<text class="price" wx:else>¥{{datas.componentData.goodsList[index]!=null?datas.componentData.goodsList[index]['minPrice']:0}}</text>
<text class="price" wx:else>¥{{datas.componentData.goodsList[index]!=null?datas.componentData.goodsList[index]['minPrice']:0}}</text>
<text class="delPrice" wx:if="{{((hours-0)+(minute-0)+(second-0))!=0}}">¥{{datas.componentData.goodsList[index]!=null?datas.componentData.goodsList[index]['maxPrice']:0}}</text> -->
<text class="delPrice" wx:if="{{((hours-0)+(minute-0)+(second-0))!=0}}">¥{{datas.componentData.goodsList[index]!=null?datas.componentData.goodsList[index]['maxPrice']:0}}</text> -->
<view class="price">¥{{
datas.componentData.goodsList[index]!=null?datas.componentData.
goodsList[index]['minPrice']:0}}</view>
<view class="price">¥{{
goodsList[index]!=null?
goodsList[index]['minPrice']:0}}</view>
<view class="delPrice">¥{{
datas.componentData.goodsList[index]!=null?datas.componentData.
goodsList[index]['maxPrice']:0}}</view>
<view class="delPrice">¥{{
goodsList[index]!=null?
goodsList[index]['maxPrice']:0}}</view>
</view>
</view>
</view>
</view>
</view>
</view>
...
...
static/nativeComponents/TransverseLabel/ComponentsList/index.js
0 → 100644
View file @
a7afbd18
const
componentOptions
=
{
// 组件选项
options
:
{
multipleSlots
:
true
},
behaviors
:
[],
properties
:
{
datas
:
{
type
:
Object
}
},
// 组件数据
data
:
{
isPageHidden
:
false
// 页面是否处于隐藏状态
},
// 数据监听器
observers
:
{},
// 组件方法
methods
:
{
init
()
{}
},
// 组件生命周期
lifetimes
:
{
created
()
{},
attached
()
{
this
.
init
();
},
ready
()
{},
moved
()
{},
detached
()
{}
},
definitionFilter
()
{},
// 页面生命周期
pageLifetimes
:
{
// 页面被展示
show
()
{
const
{
isPageHidden
}
=
this
.
data
;
// show事件发生前,页面不是处于隐藏状态时
if
(
!
isPageHidden
)
{
return
;
}
// 重新执行定时器等操作
},
// 页面被隐藏
hide
()
{
this
.
setData
({
isPageHidden
:
true
});
// 清除定时器等操作
},
// 页面尺寸变化时
resize
()
{}
}
};
Component
(
componentOptions
)
static/nativeComponents/TransverseLabel/ComponentsList/index.json
0 → 100644
View file @
a7afbd18
{
"component"
:
true
,
"usingComponents"
:
{
"banner"
:
"/static/nativeComponents/Banner/index"
,
"goods-list"
:
"/static/nativeComponents/GoodsList/index"
,
"time-limited-discount"
:
"/static/nativeComponents/TimeLimitedDiscount/index"
,
"waterfall-flow"
:
"/static/nativeComponents/module/WaterfallFlow/index"
,
"van-button"
:
"/static/vant/button/index"
,
"area-navigation"
:
"/static/nativeComponents/AreaNavigation/index"
,
"cube-nav"
:
"/static/nativeComponents/CubeNav/index"
,
"float-button"
:
"/static/nativeComponents/FloatButton/index"
,
"goods-search"
:
"/static/nativeComponents/GoodsSearch/index"
,
"notice"
:
"/static/nativeComponents/Notice/index"
,
"pop-up"
:
"/static/nativeComponents/PopUp/index"
,
"share-popup"
:
"/static/nativeComponents/SharePopup/index"
,
"speedy-nav"
:
"/static/nativeComponents/SpeedyNav/index"
,
"video-player"
:
"/static/nativeComponents/VideoPlayer/index"
,
"transverse-label"
:
"/static/nativeComponents/TransverseLabel/index"
}
}
\ No newline at end of file
static/nativeComponents/TransverseLabel/ComponentsList/index.wxml
0 → 100644
View file @
a7afbd18
<!-- 组件集合 -->
<view class="ComponentsList">
<block wx:for="{{datas}}">
<block wx:if="{{item.componentCode=='banner' && item.componentInfo.visible == 1}}">
<banner datas="{{item}}"></banner>
</block>
<block wx:elif="{{item.componentCode=='goods-list' && item.componentInfo.visible == 1}}">
<goods-list class="goodsListItem" datas="{{item}}"></goods-list>
</block>
<block wx:elif="{{item.componentCode=='area-navigation' && item.componentInfo.visible == 1}}">
<area-navigation datas="{{item}}" :changeLocation="changeLocation"></area-navigation>
</block>
<block wx:elif="{{item.componentCode=='cube-nav' && item.componentInfo.visible == 1}}">
<cube-nav datas="{{item}}"></cube-nav>
</block>
<block wx:elif="{{item.componentCode=='time-limited-discount' && item.componentInfo.visible == 1}}">
<time-limited-discount datas="{{item}}"></time-limited-discount>
</block>
<block wx:elif="{{item.componentCode=='links' && item.componentInfo.visible == 1}}">
<links datas="{{item}}"></links>
</block>
<block wx:elif="{{item.componentCode=='interval' && item.componentInfo.visible == 1}}">
<interval datas="{{item}}"></interval>
</block>
<block wx:elif="{{item.componentCode=='partition' && item.componentInfo.visible == 1}}">
<partition datas="{{item}}"></partition>
</block>
<block wx:elif="{{item.componentCode=='shop-popup' && item.componentInfo.visible == 1}}">
<shop-popup datas="{{item}}"></shop-popup>
</block>
<block wx:elif="{{item.componentCode=='float-button' && item.componentInfo.visible == 1}}">
<float-button datas="{{item}}"></float-button>
</block>
<block wx:elif="{{item.componentCode=='text-text' && item.componentInfo.visible == 1}}">
<text-text datas="{{item}}"></text-text>
</block>
<block wx:elif="{{item.componentCode=='img-text' && item.componentInfo.visible == 1}}">
<img-text datas="{{item}}"></img-text>
</block>
<block wx:elif="{{item.componentCode=='goods-search' && item.componentInfo.visible == 1}}">
<goods-search datas="{{item}}"></goods-search>
</block>
<block wx:elif="{{item.componentCode=='notice' && item.componentInfo.visible == 1}}">
<notice datas="{{item}}"></notice>
</block>
<block wx:elif="{{item.componentCode=='pop-up' && item.componentInfo.visible == 1}}">
<pop-up datas="{{item}}"></pop-up>
</block>
<block wx:elif="{{item.componentCode=='coupon' && item.componentInfo.visible == 1}}">
<coupon datas="{{item}}"></coupon>
</block>
<block wx:elif="{{item.componentCode=='integral-turntable' && item.componentInfo.visible == 1}}">
<integralTurntable datas="{{item}}"></integralTurntable>
</block>
<block wx:elif="{{item.componentCode=='speedy-nav' && item.componentInfo.visible == 1}}">
<speedy-nav datas="{{item}}"></speedy-nav>
</block>
<block wx:elif="{{item.componentCode=='video-player' && item.componentInfo.visible == 1}}">
<video-player datas="{{item}}" :indexs="index"></video-player>
</block>
<block wx:elif="{{item.componentCode=='official-account' && item.componentInfo.visible == 1}}">
<official-account></official-account>
</block>
</block>
</view>
static/nativeComponents/TransverseLabel/ComponentsList/index.wxss
0 → 100644
View file @
a7afbd18
static/nativeComponents/TransverseLabel/index.js
0 → 100644
View file @
a7afbd18
const
componentOptions
=
{
// 组件选项
options
:
{
multipleSlots
:
true
,
styleIsolation
:
"shared"
},
behaviors
:
[],
properties
:
{
datas
:
{
type
:
Object
}
},
// 组件数据
data
:
{
isPageHidden
:
false
,
// 页面是否处于隐藏状态
active
:
0
},
// 数据监听器
observers
:
{},
// 组件方法
methods
:
{
init
()
{},
onChange
(
event
)
{}
},
// 组件生命周期
lifetimes
:
{
created
()
{},
attached
()
{
this
.
init
();
},
ready
()
{},
moved
()
{},
detached
()
{}
},
definitionFilter
()
{},
// 页面生命周期
pageLifetimes
:
{
// 页面被展示
show
()
{
const
{
isPageHidden
}
=
this
.
data
;
// show事件发生前,页面不是处于隐藏状态时
if
(
!
isPageHidden
)
{
return
;
}
// 重新执行定时器等操作
},
// 页面被隐藏
hide
()
{
this
.
setData
({
isPageHidden
:
true
});
// 清除定时器等操作
},
// 页面尺寸变化时
resize
()
{}
}
};
Component
(
componentOptions
)
static/nativeComponents/TransverseLabel/index.json
0 → 100644
View file @
a7afbd18
{
"component"
:
true
,
"usingComponents"
:
{
"van-tabs"
:
"/static/vant/tabs/index"
,
"van-tab"
:
"/static/vant/tab/index"
,
"components-list"
:
"./ComponentsList/index"
}
}
static/nativeComponents/TransverseLabel/index.wxml
0 → 100644
View file @
a7afbd18
<view class="TransverseLabel" style="--defaultTabTextColor:{{datas.componentData.defaultTabTextColor}};--defaultTabTextSize:{{datas.componentData.defaultTabTextSize*2}}rpx;--defaultTabBackgroundColor:{{datas.componentData.defaultTabBackgroundColor}};--defaultTabUnderlineColor:{{datas.componentData.defaultTabUnderlineColor}};--selectTabTextColor:{{datas.componentData.selectTabTextColor}};--selectTabTextSize:{{datas.componentData.selectTabTextSize*2}}rpx;--selectTabBackgroundColor:{{datas.componentData.selectTabBackgroundColor}};--selectTabUnderlineColor:{{datas.componentData.selectTabUnderlineColor}};--tabBackgroundColor:{{datas.componentData.tabBackgroundColor}};">
<van-tabs
custom-class="vanTabs {{datas.componentData.tabStyle==1?'tabStyle1':'tabStyle2'}}"
nav-class="tabNav tabLayout{{datas.componentData.tabLayout}}"
tab-class="vanTab"
tab-active-class="vanActiveTab"
active="{{ active }}"
animated="{{true}}"
sticky="{{datas.componentData.stickyTop}}"
swipeable="{{true}}"
bind:change="onChange"
line-width="{{50}}"
color="{{'#333'}}"
>
<van-tab
title="{{item.title}}"
wx:for="{{datas.componentData.tabList}}"
wx:if="{{item.visible==undefined||item.visible==1}}"
>
<components-list datas="{{item.contentList}}"></components-list>
</van-tab>
</van-tabs>
</view>
static/nativeComponents/TransverseLabel/index.wxss
0 → 100644
View file @
a7afbd18
.vanTabs{
position: relative;
}
.vanTab .van-ellipsis{
padding: 0 20rpx;
margin: 0 12rpx;
}
.van-tab {
position: relative;
z-index: 98;
}
/* 样式1 */
.tabStyle1 .van-tabs__line {
width: 100%;
height: 30px;
bottom: 7px;
border-radius: 38px;
}
.tabStyle1 .tabTitle {
color: var(--main-color);
}
.tabStyle1 .selectTitle {
color: #fff;
}
.tabStyle1 .defaultTabTextSize {
font-size: var(--defaultTabTextSize);
}
.tabStyle1 .defaultTabTextColor {
color: var(--defaultTabTextColor);
}
.tabStyle1 .selectTabTextSize {
font-size: var(--selectTabTextSize);
}
.tabStyle1 .selectTabTextColor {
color: var(--selectTabTextColor);
}
/* 样式2 */
.tabStyle2 .van-tabs__line{
}
/* 标签背景色 */
.tabNav {
background: var(--tabBackgroundColor);
}
/* 布局 */
.tabLayout1 .van-tab{
flex: none;
}
.tabLayout2{
justify-content: center;
}
.tabLayout2 .van-tab{
flex: none;
}
\ No newline at end of file
static/vant/tabs/index.js
View file @
a7afbd18
...
@@ -10,11 +10,11 @@ import {
...
@@ -10,11 +10,11 @@ import {
import
{
isDef
}
from
'../common/validator'
;
import
{
isDef
}
from
'../common/validator'
;
VantComponent
({
VantComponent
({
mixins
:
[
touch
],
mixins
:
[
touch
],
classes
:
[
'nav-class'
,
'tab-class'
,
'tab-active-class'
,
'line-class'
],
classes
:
[
"nav-class"
,
"tab-class"
,
"tab-active-class"
,
"line-class"
],
relation
:
{
relation
:
{
name
:
'tab'
,
name
:
"tab"
,
type
:
'descendant'
,
type
:
"descendant"
,
current
:
'tabs'
,
current
:
"tabs"
,
linked
(
target
)
{
linked
(
target
)
{
target
.
index
=
this
.
children
.
length
-
1
;
target
.
index
=
this
.
children
.
length
-
1
;
this
.
updateTabs
();
this
.
updateTabs
();
...
@@ -25,7 +25,7 @@ VantComponent({
...
@@ -25,7 +25,7 @@ VantComponent({
return
child
;
return
child
;
});
});
this
.
updateTabs
();
this
.
updateTabs
();
}
,
}
},
},
props
:
{
props
:
{
sticky
:
Boolean
,
sticky
:
Boolean
,
...
@@ -40,16 +40,24 @@ VantComponent({
...
@@ -40,16 +40,24 @@ VantComponent({
this
.
children
.
forEach
((
child
,
index
)
=>
this
.
children
.
forEach
((
child
,
index
)
=>
child
.
updateRender
(
index
===
this
.
data
.
currentIndex
,
this
)
child
.
updateRender
(
index
===
this
.
data
.
currentIndex
,
this
)
);
);
}
,
}
},
},
lineWidth
:
{
lineWidth
:
{
type
:
[
String
,
Number
],
type
:
[
String
,
Number
],
value
:
40
,
value
:
40
,
observer
:
'resize'
,
// observer: "resize"
},
lineLengthType
:
{
type
:
[
String
,
Number
],
value
:
1
// 1默认自适应 2短自适应 3 固定宽度取值lineWidth
},
linePosition
:
{
type
:
[
String
,
Number
],
value
:
1
// 1默认右对齐 2居中 3铺满
},
},
lineHeight
:
{
lineHeight
:
{
type
:
[
String
,
Number
],
type
:
[
String
,
Number
],
value
:
-
1
,
value
:
-
1
},
},
active
:
{
active
:
{
type
:
[
String
,
Number
],
type
:
[
String
,
Number
],
...
@@ -58,41 +66,41 @@ VantComponent({
...
@@ -58,41 +66,41 @@ VantComponent({
if
(
name
!==
this
.
getCurrentName
())
{
if
(
name
!==
this
.
getCurrentName
())
{
this
.
setCurrentIndexByName
(
name
);
this
.
setCurrentIndexByName
(
name
);
}
}
}
,
}
},
},
type
:
{
type
:
{
type
:
String
,
type
:
String
,
value
:
'line'
,
value
:
"line"
},
},
ellipsis
:
{
ellipsis
:
{
type
:
Boolean
,
type
:
Boolean
,
value
:
true
,
value
:
true
},
},
duration
:
{
duration
:
{
type
:
Number
,
type
:
Number
,
value
:
0.3
,
value
:
0.3
},
},
zIndex
:
{
zIndex
:
{
type
:
Number
,
type
:
Number
,
value
:
1
,
value
:
1
},
},
swipeThreshold
:
{
swipeThreshold
:
{
type
:
Number
,
type
:
Number
,
value
:
5
,
value
:
5
,
observer
(
value
)
{
observer
(
value
)
{
this
.
setData
({
this
.
setData
({
scrollable
:
this
.
children
.
length
>
value
||
!
this
.
data
.
ellipsis
,
scrollable
:
this
.
children
.
length
>
value
||
!
this
.
data
.
ellipsis
});
});
}
,
}
},
},
offsetTop
:
{
offsetTop
:
{
type
:
Number
,
type
:
Number
,
value
:
0
,
value
:
0
},
},
lazyRender
:
{
lazyRender
:
{
type
:
Boolean
,
type
:
Boolean
,
value
:
true
,
value
:
true
}
,
}
},
},
data
:
{
data
:
{
tabs
:
[],
tabs
:
[],
...
@@ -101,24 +109,35 @@ VantComponent({
...
@@ -101,24 +109,35 @@ VantComponent({
currentIndex
:
0
,
currentIndex
:
0
,
container
:
null
,
container
:
null
,
skipTransition
:
true
,
skipTransition
:
true
,
lineOffsetLeft
:
0
,
lineOffsetLeft
:
0
},
},
mounted
()
{
mounted
()
{
this
.
getElementInfo
();
requestAnimationFrame
(()
=>
{
requestAnimationFrame
(()
=>
{
this
.
setData
({
this
.
setData
({
container
:
()
=>
this
.
createSelectorQuery
().
select
(
'.van-tabs'
),
container
:
()
=>
this
.
createSelectorQuery
().
select
(
".van-tabs"
)
});
});
this
.
resize
(
true
);
this
.
resize
(
true
);
this
.
scrollIntoView
();
this
.
scrollIntoView
();
});
});
},
},
methods
:
{
methods
:
{
getElementInfo
()
{
let
that
=
this
;
wx
.
createSelectorQuery
()
.
in
(
this
)
.
selectAll
(
".van-tab"
)
.
boundingClientRect
()
.
exec
((
rect
=
[])
=>
that
.
triggerEvent
(
"getEleInfo"
,
{
rect
,
vanTabsThis
:
this
})
);
},
updateTabs
()
{
updateTabs
()
{
const
{
children
=
[],
data
}
=
this
;
const
{
children
=
[],
data
}
=
this
;
this
.
setData
({
this
.
setData
({
tabs
:
children
.
map
((
child
)
=>
child
.
data
),
tabs
:
children
.
map
(
child
=>
child
.
data
),
scrollable
:
scrollable
:
this
.
children
.
length
>
data
.
swipeThreshold
||
!
data
.
ellipsis
this
.
children
.
length
>
data
.
swipeThreshold
||
!
data
.
ellipsis
,
});
});
this
.
setCurrentIndexByName
(
data
.
active
||
this
.
getCurrentName
());
this
.
setCurrentIndexByName
(
data
.
active
||
this
.
getCurrentName
());
},
},
...
@@ -131,18 +150,18 @@ VantComponent({
...
@@ -131,18 +150,18 @@ VantComponent({
this
.
$emit
(
eventName
,
{
this
.
$emit
(
eventName
,
{
index
:
currentChild
.
index
,
index
:
currentChild
.
index
,
name
:
currentChild
.
getComputedName
(),
name
:
currentChild
.
getComputedName
(),
title
:
currentChild
.
data
.
title
,
title
:
currentChild
.
data
.
title
});
});
},
},
onTap
(
event
)
{
onTap
(
event
)
{
const
{
index
}
=
event
.
currentTarget
.
dataset
;
const
{
index
}
=
event
.
currentTarget
.
dataset
;
const
child
=
this
.
children
[
index
];
const
child
=
this
.
children
[
index
];
if
(
child
.
data
.
disabled
)
{
if
(
child
.
data
.
disabled
)
{
this
.
trigger
(
'disabled'
,
child
);
this
.
trigger
(
"disabled"
,
child
);
}
else
{
}
else
{
this
.
setCurrentIndex
(
index
);
this
.
setCurrentIndex
(
index
);
nextTick
(()
=>
{
nextTick
(()
=>
{
this
.
trigger
(
'click'
);
this
.
trigger
(
"click"
);
});
});
}
}
},
},
...
@@ -150,7 +169,7 @@ VantComponent({
...
@@ -150,7 +169,7 @@ VantComponent({
setCurrentIndexByName
(
name
)
{
setCurrentIndexByName
(
name
)
{
const
{
children
=
[]
}
=
this
;
const
{
children
=
[]
}
=
this
;
const
matched
=
children
.
filter
(
const
matched
=
children
.
filter
(
(
child
)
=>
child
.
getComputedName
()
===
name
child
=>
child
.
getComputedName
()
===
name
);
);
if
(
matched
.
length
)
{
if
(
matched
.
length
)
{
this
.
setCurrentIndex
(
matched
[
0
].
index
);
this
.
setCurrentIndex
(
matched
[
0
].
index
);
...
@@ -181,9 +200,9 @@ VantComponent({
...
@@ -181,9 +200,9 @@ VantComponent({
nextTick
(()
=>
{
nextTick
(()
=>
{
this
.
resize
();
this
.
resize
();
this
.
scrollIntoView
();
this
.
scrollIntoView
();
this
.
trigger
(
'input'
);
this
.
trigger
(
"input"
);
if
(
shouldEmitChange
)
{
if
(
shouldEmitChange
)
{
this
.
trigger
(
'change'
);
this
.
trigger
(
"change"
);
}
}
});
});
},
},
...
@@ -194,26 +213,55 @@ VantComponent({
...
@@ -194,26 +213,55 @@ VantComponent({
}
}
},
},
resize
(
skipTransition
=
false
)
{
resize
(
skipTransition
=
false
)
{
if
(
this
.
data
.
type
!==
'line'
)
{
console
.
log
(
"resize"
)
if
(
this
.
data
.
type
!==
"line"
)
{
return
;
return
;
}
}
const
{
currentIndex
,
ellipsis
}
=
this
.
data
;
const
{
currentIndex
,
ellipsis
}
=
this
.
data
;
Promise
.
all
([
Promise
.
all
([
getAllRect
(
this
,
'.van-tab'
),
getAllRect
(
this
,
".van-tab"
),
getRect
(
this
,
'.van-tabs__line'
),
getRect
(
this
,
".van-tabs__line"
)
]).
then
(([
rects
=
[],
lineRect
])
=>
{
]).
then
(([
rects
=
[],
lineRect
])
=>
{
const
rect
=
rects
[
currentIndex
];
const
rect
=
rects
[
currentIndex
];
if
(
rect
==
null
)
{
if
(
rect
==
null
)
{
return
;
return
;
}
}
let
lineOffsetLeft
=
rects
let
lineWidths
=
0
;
.
slice
(
0
,
currentIndex
)
let
lineOffsetLeft
=
0
;
.
reduce
((
prev
,
curr
)
=>
prev
+
curr
.
width
,
0
);
if
(
this
.
data
.
lineLengthType
==
1
)
{
lineOffsetLeft
+=
if
(
this
.
data
.
linePosition
==
2
)
{
(
rect
.
width
-
lineRect
.
width
)
/
2
+
(
ellipsis
?
0
:
8
);
lineOffsetLeft
=
rect
.
left
;
}
else
{
lineOffsetLeft
=
rects
.
slice
(
0
,
currentIndex
)
.
reduce
((
prev
,
curr
)
=>
prev
+
curr
.
width
,
0
);
lineOffsetLeft
+=
8
;
}
lineWidths
=
rect
.
width
;
}
else
if
(
this
.
data
.
lineLengthType
==
2
)
{
// 宽度*80%
if
(
this
.
data
.
linePosition
==
2
)
{
lineOffsetLeft
=
rect
.
left
+
rect
.
width
*
0.2
;
}
else
{
lineOffsetLeft
=
rects
.
slice
(
0
,
currentIndex
)
.
reduce
((
prev
,
curr
)
=>
prev
+
curr
.
width
,
0
);
lineOffsetLeft
+=
rect
.
width
*
0.2
;
lineOffsetLeft
+=
8
;
}
lineWidths
=
rect
.
width
*
0.6
;
}
else
{
// 有问题暂不支持固定宽度
// lineOffsetLeft = rects
// .slice(0, currentIndex)
// .reduce((prev, curr) => prev + curr.width, 0);
// lineOffsetLeft += this.data.lineWidth / 2;
// lineWidths = this.data.lineWidth;
}
this
.
setData
({
this
.
setData
({
lineWidth
:
lineWidths
,
lineOffsetLeft
,
lineOffsetLeft
,
skipTransition
,
skipTransition
});
});
});
});
},
},
...
@@ -224,20 +272,20 @@ VantComponent({
...
@@ -224,20 +272,20 @@ VantComponent({
return
;
return
;
}
}
Promise
.
all
([
Promise
.
all
([
getAllRect
(
this
,
'.van-tab'
),
getAllRect
(
this
,
".van-tab"
),
getRect
(
this
,
'.van-tabs__nav'
),
getRect
(
this
,
".van-tabs__nav"
)
]).
then
(([
tabRects
,
navRect
])
=>
{
]).
then
(([
tabRects
,
navRect
])
=>
{
const
tabRect
=
tabRects
[
currentIndex
];
const
tabRect
=
tabRects
[
currentIndex
];
const
offsetLeft
=
tabRects
const
offsetLeft
=
tabRects
.
slice
(
0
,
currentIndex
)
.
slice
(
0
,
currentIndex
)
.
reduce
((
prev
,
curr
)
=>
prev
+
curr
.
width
,
0
);
.
reduce
((
prev
,
curr
)
=>
prev
+
curr
.
width
,
0
);
this
.
setData
({
this
.
setData
({
scrollLeft
:
offsetLeft
-
(
navRect
.
width
-
tabRect
.
width
)
/
2
,
scrollLeft
:
offsetLeft
-
(
navRect
.
width
-
tabRect
.
width
)
/
2
});
});
});
});
},
},
onTouchScroll
(
event
)
{
onTouchScroll
(
event
)
{
this
.
$emit
(
'scroll'
,
event
.
detail
);
this
.
$emit
(
"scroll"
,
event
.
detail
);
},
},
onTouchStart
(
event
)
{
onTouchStart
(
event
)
{
if
(
!
this
.
data
.
swipeable
)
return
;
if
(
!
this
.
data
.
swipeable
)
return
;
...
@@ -252,7 +300,7 @@ VantComponent({
...
@@ -252,7 +300,7 @@ VantComponent({
if
(
!
this
.
data
.
swipeable
)
return
;
if
(
!
this
.
data
.
swipeable
)
return
;
const
{
direction
,
deltaX
,
offsetX
}
=
this
;
const
{
direction
,
deltaX
,
offsetX
}
=
this
;
const
minSwipeDistance
=
50
;
const
minSwipeDistance
=
50
;
if
(
direction
===
'horizontal'
&&
offsetX
>=
minSwipeDistance
)
{
if
(
direction
===
"horizontal"
&&
offsetX
>=
minSwipeDistance
)
{
const
index
=
this
.
getAvaiableTab
(
deltaX
);
const
index
=
this
.
getAvaiableTab
(
deltaX
);
if
(
index
!==
-
1
)
{
if
(
index
!==
-
1
)
{
this
.
setCurrentIndex
(
index
);
this
.
setCurrentIndex
(
index
);
...
@@ -278,6 +326,6 @@ VantComponent({
...
@@ -278,6 +326,6 @@ VantComponent({
}
}
}
}
return
-
1
;
return
-
1
;
}
,
}
}
,
}
});
});
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment