first commit

This commit is contained in:
编码猿
2024-09-27 01:32:49 +08:00
commit 28ebe05a64
7399 changed files with 1174529 additions and 0 deletions

View File

@@ -0,0 +1 @@
5e536bad-8c8a-4015-951d-03f07ac1ef01

View File

@@ -0,0 +1 @@
dcb6de4c-4acf-44f4-a3df-b431363897a4

View File

@@ -0,0 +1,86 @@
// pages/activity/activity.js
const app = getApp();
const regeneratorRuntime = app.loadAsync()
const model = app.loadModel("index")
const http = app.loadHttp()
const util = app.loadUtils('util')
const { StorageSync } = app.loadModel("getSetting")
const storage = new StorageSync()
Page({
/**
* 页面的初始数据
*/
data: {
system: app.globalData.system, //设备相关信息
pageTitle: "伊莎洗衣", //头部标题
isBack: true,//显示返回
},
enterAppointment() {
wx.navigateTo({
url: '/user/appointment/appointment?from=2',
})
},
LifeNet() {
wx.navigateTo({
url: '/user/appointment/appointment?from=3',
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

View File

@@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@@ -0,0 +1,16 @@
<!-- 头部导航 -->
<nav-bar isBack="{{isBack}}" pageTitle="{{pageTitle}}" system="{{system}}"></nav-bar>
<view class="content">
<image class="header" src="/static/img/header_back.png" mode="widthFix"></image>
<view class="list">
<view class="list-item one">
<text class="texts">万家热线预约</text>
<view class="enter" bindtap="enterAppointment">点击进入</view>
</view>
<view class="list-item two">
<text class="texts">生活网预约入口</text>
<view class="enter" bindtap="LifeNet">点击进入</view>
</view>
</view>
</view>

View File

@@ -0,0 +1,52 @@
/* pages/activity/activity.wxss */
.header {
width: 100%;
height: 135rpx;
}
.list-item {
width: 670rpx;
height: 280rpx;
border-radius: 25rpx;
margin: 0 auto;
margin-top: 50rpx;
position: relative;
}
.one {
background-color: #e10606;
}
.two {
background-color: #3286e7;
}
.line {
position: absolute;
left: 40rpx;
top: 40rpx;
width: 38rpx;
height: 5rpx;
background-color: #ffffff;
}
.texts {
position: absolute;
font-family: SourceHanSansCN-Regular;
font-size: 46rpx;
font-weight: normal;
font-stretch: normal;
letter-spacing: 0rpx;
color: #ffffff;
left: 40rpx;
top: 64rpx;
}
.enter {
width: 160rpx;
height: 60rpx;
background-color: #ffffff;
border-radius: 30rpx;
font-family: SourceHanSansCN-Regular;
font-size: 28rpx;
text-align: center;
line-height: 60rpx;
color: #000000;
position: absolute;
right: 40rpx;
bottom: 40rpx
}

View File

@@ -0,0 +1 @@
645d1223-eea2-4666-a4f0-267e845122d4

View File

@@ -0,0 +1,293 @@
// pages/auth/auth.js
const app = getApp();
const util = app.loadUtils("util")
const regeneratorRuntime = app.loadAsync()
const model = app.loadModel("index")
const http = app.loadHttp()
const api = app.loadApi()
Page({
/**
* 页面的初始数据
*/
data: {
index: 1,//当前激活的下表
num: 0,//判断token在当前页面只生效一次
showSkeleton: true, //骨架屏显示隐藏
swiperList: [{
id: 0,
type: 'image',
url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big84000.jpg'
}, {
id: 1,
type: 'image',
url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big84001.jpg',
}, {
id: 2,
type: 'image',
url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big39000.jpg'
}, {
id: 3,
type: 'image',
url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big10001.jpg'
}, {
id: 4,
type: 'image',
url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big25011.jpg'
}, {
id: 5,
type: 'image',
url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big21016.jpg'
}, {
id: 6,
type: 'image',
url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big99008.jpg'
}],
kfRight: 20,
isCoupon: false,//优惠券
couponList: [],//优惠券列表
isKf: false,//客服
userInfo: {},//用户信息
couponTitle: '恭喜获得优惠券',//优惠券标题
},
// 获取用户个人信息
async userInfo() {
let token = await util.token()
if (!token) {
return
}
let user = await http.http.request2({ url: `${http.api.personalInfo}`, method: "POST" })
this.setData({
userInfo: user.data.data
})
app.globalData.userInfo = user.data.data
model.storage.setStorage("userInfo", user.data.data)
// 每次获取userInfo时执行
this.selectComponent("#home").getUserInfo();
},
async tabSwitch(e) {
let index = e.currentTarget.dataset.index
let nav = e.currentTarget.dataset.nav
let islog = e.currentTarget.dataset.islog
if (islog == 'ok') {
let isLogin = await util.isLoginJump()
if (isLogin == 1) return;
}
// 跳转到预约
if (nav) {
if (app.globalData.userInfo.group_type == 39) {
wx.navigateTo({
url: '/pages/auth/auth?index=6&group_type=' + app.globalData.userInfo.group_type
})
} else {
wx.navigateTo({
url: "/user/appointment/appointment"
})
}
return
}
// 调转到洗衣
if (index == 2) {
wx.navigateTo({
url: '/pages/nearbyStore/nearbyStore'
})
return;
if (!this.data.userInfo.cupboard_num) {
wx.showModal({
title: '您不是衣柜会员',
content: '衣柜会员才可打开',
confirmText: "成为会员",
cancelText: "取消",
success(res) {
if (res.confirm) {
wx.navigateTo({
url: '/pages/joinWardrobe/joinWardrobe'
})
}
}
})
return;
}
wx.navigateTo({
url: "/user/wardrobe/wardrobe"
})
return
}
// 调转到商城
if (index == 4) {
wx.navigateTo({
url: "/mall/auth/auth?index=1"
})
return
}
this.setData({
index: index
})
if (index == 1) {
this.getCoupon()
}
},
// 优惠券显示关闭
_coupon() {
this.setData({
isCoupon: !this.data.isCoupon
})
},
// 优惠券领取
async _receive() {
let isLogin = await util.isLoginJump()
if (isLogin == 1) return;
this._coupon()
},
// 客服的显示关闭
_service() {
this.setData({
isKf: !this.data.isKf
})
},
// 获取系统推送的优惠券
async getCoupon() {
let isTel = app.globalData.userInfo.telnum
if(isTel == "点击授权手机号" || isTel == '' || !isTel) return;
if(app.globalData.userInfo.group_type !== 0) return;
let token = await util.token();
let isCoupon = await model.storage.getSetting('isCoupon');
let res = { data: { data: [] } }, couponTitle;
if (!token && isCoupon !== 'ok') {
res = await http.http.request1({ url: `${http.api.newPersonCoupon}/0`, method: "POST" })
couponTitle = '登录后领取'
model.storage.setStorage("isCoupon", 'ok')
} else if (token) {
res = await http.http.request2({ url: `${http.api.newPersonCoupon}/0`, method: "POST" })
}
let coupon = res.data.data
if (coupon.length > 0) {
let all = "";//优惠劵id 如果有优惠券直接领取
coupon.map((v, i) => {
coupon[i].coupon_price = parseInt(coupon[i].coupon_price)
all += coupon[i].coupon_id + ","
coupon[i].start_time = util.formatTime(v.start_time, 'Y-M-D')
coupon[i].end_time = util.formatTime(v.end_time, 'Y-M-D')
})
this.setData({
couponList: coupon,
isCoupon: true,
couponTitle: couponTitle
})
if (!!token) {
http.http.request2({ url: `${http.api.getNewPersonCoupon}/0`, method: "POST", data: { coupon_id: all.substr(0, all.length - 1) } })
this.userInfo()
}
}
},
// 客服电话
openTel() {
wx.makePhoneCall({
phoneNumber: '4000551071'
})
},
goUrl() {
wx.navigateTo({
url: '/pages/laundry/laundry?id=1'
})
this._coupon();
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
// 需要跳转到首页tabbar时需要路径参数index否则不激活
this.setData({
index: options.index || 1
})
app.setWatching('showSkeleton', (v) => {
this.setData({
showSkeleton: v
});
});
app.setWatching('isToken', (v) => {
this.userInfo()
});
if (!!options.group_type) {
this.selectComponent("#choice").tuanPic(options.group_type);
}
app.setWatching('userInfo', (v) => {
if (app.globalData.userInfo.group_type !== ''
&& app.globalData.userInfo.group_type !== 0
&& app.globalData.userInfo.group_type !== void 0
) {
this.selectComponent("#index").storeMenu();
}
});
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: async function () {
model.getauth.getSetting()
.then(res => {
if (res.authSetting['scope.userLocation']) {
this.selectComponent("#index").add();
}
})
this.userInfo();
this.getCoupon()
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
clearInterval(this.time)
this.setData({
kfRight: 20
})
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
},
// 监听用户滑动页面
onPageScroll: function () {
this.setData({
kfRight: -70
})
clearInterval(this.time)
this.time = setTimeout(() => {
this.setData({
kfRight: 20
})
}, 1000)
}
})

View File

@@ -0,0 +1,8 @@
{
"navigationBarTextStyle": "black",
"usingComponents": {
"index":"../index/index",
"home":"../home/home",
"choice":"../choice/choice"
}
}

View File

@@ -0,0 +1,121 @@
<!-- 骨架屏 -->
<skeleton selector="skeleton" loading="spin" bgcolor="#FFF" wx:if="{{showSkeleton}}"></skeleton>
<!-- pages/auth/auth.wxml -->
<view class="skeleton content">
<view hidden="{{!(index == 1)}}">
<index id="index"></index>
</view>
<view hidden="{{!(index == 5)}}">
<home id="home"></home>
</view>
<view hidden="{{!(index == 6)}}">
<choice id="choice"></choice>
</view>
</view>
<!-- tabbar -->
<view class="TabBar">
<view class="cu-bar tabbar bg-white">
<view data-index="1" bind:tap="tabSwitch" class="action">
<view class="cuIcon-cu-image">
<image class="index-icon" src="{{ index == 1 ? '/static/img/icon/index-active-icon.png' : '/static/img/icon/index-icon.png' }}"></image>
</view>
<view class="{{ index == 1 ? 'text-green' : 'text-gray' }} mt10">首页</view>
</view>
<!-- <view data-index="2" data-islog="ok" bind:tap="tabSwitch" class="action {{index == 2?'text-green':'text-gray'}}">
<view class="cuIcon-cu-image">
<image class="index-icon" src="{{ index == 2 ? '/static/img/icon/wardrobe-active-icon.png' : '/static/img/icon/wardrobe-icon.png' }}"></image>
</view>
<view class="{{ index == 2 ? 'text-green' : 'text-gray' }} mt10">洗衣柜</view>
</view> -->
<view data-index="2" bind:tap="tabSwitch" class="action {{index == 2?'text-green':'text-gray'}}">
<view class="cuIcon-cu-image">
<image class="index-icon" src="{{ index == 2 ? '/static/img/icon/xy_md.png' : '/static/img/icon/xy_md.png' }}"></image>
</view>
<view class="{{ index == 2 ? 'text-green' : 'text-gray' }} mt10">门店</view>
</view>
<view data-index="{{index}}" data-islog='ok' data-nav="true" bind:tap="tabSwitch" class="action text-gray add-action">
<view class="my-icno">
<view class="icon_bac flex-con3">
<image src="/static/img/icon/asdferfhrthjtr.png" />
</view>
</view>
马上洗
</view>
<view data-index="4" bind:tap="tabSwitch" class="action {{index == 4?'text-green':'text-gray'}}">
<view class="cuIcon-cu-image">
<image class="index-icon" src="{{ index == 4 ? '/static/img/icon/shop-active-icon.png' : '/static/img/icon/shop-icon.png' }}"></image>
</view>
<view class="{{ index == 4 ? 'text-green' : 'text-gray' }} mt10">商城</view>
</view>
<view data-index="5" bind:tap="tabSwitch" class="action {{index == 5?'text-green':'text-gray'}}">
<view class="cuIcon-cu-image">
<image class="index-icon" src="{{ index == 5 ? '/static/img/icon/home-active-icon.png' : '/static/img/icon/home-icon.png' }}"></image>
</view>
<view class="{{ index == 5 ? 'text-green' : 'text-gray' }} mt10">我的</view>
</view>
</view>
</view>
<!-- 客服 -->
<button catchtap="_service" wx:if="{{ index == 1 }}" class="customer flex-con3" style="right:{{ kfRight }}rpx;">
<image src="/static/img/icon/kf.png" />
</button>
<!-- 客服弹出层 -->
<view wx:if="{{ isKf }}" class="coupon flex-con3">
<view class="video_cen">
<view class="coupon_list tips-bac">
<view class="coupon_list_tit coupon_list_tit-t1">请选择你要进行的操作</view>
<view class="mt30 dis-flex">
<view class="flex1">
<view class="tel-img flex-con3" catchtap="openTel">
<image src="/static/img/tel-icon-kf.png" />
</view>
<view class="tel-p">电话客服</view>
</view>
<view class="flex1">
<button open-type="contact" class="tel-img flex-con3">
<image src="/static/img/wx-icon-kf.png" />
</button>
<view class="tel-p">微信客服</view>
</view>
</view>
</view>
<image catchtap="_service" src="/static/img/icon/colse_tips.png" />
</view>
</view>
<!-- 优惠券 -->
<view wx:if="{{ isCoupon }}" catchtouchmove="{{ isCoupon }}" class="coupon flex-con3">
<view class="video_cen">
<view class="coupon_list">
<view class="coupon_list_tit">{{couponTitle}}</view>
<view wx:for="{{ couponList }}" wx:key class="coupon_list_row dis-flex mt20" catchtap="goUrl">
<view class="coupon_row_l ">
<image src="/static/img/xrj.png" />
<view class="row_l1 flex-con3">
<view>
<view class="row_l1_p1">
<span>{{item.coupon_price}}</span>
</view>
<view class="row_l1_p2">满{{item.use_min_price}}使用</view>
</view>
</view>
</view>
<view class="flex1 coupon_row_r">
<image src="/static/img/xrjr.png" />
<view class="row_l1 flex-con2 pl30">
<view>
<view class="row_r1_p1 text-left clamp1">{{item.coupon_title}}</view>
<view class="row_r1_p2 text-left clamp1">
{{item.start_time}}至{{item.end_time}}
</view>
</view>
</view>
</view>
</view>
<view bind:tap="_receive" class="receive mt40">立即领取</view>
</view>
<image catchtap="_coupon" src="/static/img/icon/colse_tips.png" />
</view>
</view>
<!-- toasta提示 -->
<i-toast id="toast" />

View File

@@ -0,0 +1,222 @@
/* pages/auth/auth.wxss */
page{
background-color: #ffffff;
}
.tabbar{
/* height: 120rpx !important; */
}
.tabbar .action{
/* font-size: 30rpx !important; */
}
.my-icno{
padding: 10rpx;
position: absolute;
width: 130rpx;
z-index: 2;
height: 130rpx;
border-radius: 50%;
font-size: 50rpx;
top: -90rpx;
left: 0;
right: 0;
margin: 0 auto;
background-color: #ffffff;
}
.icon_bac{
border-radius: 50%;
height: 100%;
width: 100%;
background-image: linear-gradient(-30deg,
rgba(51, 51, 51, 0.2) 0%,
rgba(255, 255, 255, 0.2) 100%),
linear-gradient(
#1fcc58,
#41d974);
}
.icon_bac image{
width: 47rpx;
height: 64rpx;
vertical-align: middle;
}
.content{
padding-bottom: 140rpx;
}
.customer{
padding: 0 !important;
position: fixed;
bottom: 190rpx;
width: 100rpx;
height: 100rpx;
overflow: hidden;
background-color: #ffffff;
border-radius: 50%;
box-shadow: 0px 0px 30px 0px rgba(14, 5, 9, 0.4);
-moz-transition: all .5s ease;
-webkit-transition: all .5s ease;
-ms-transition: all .5s ease;
-o-transition: all .5s ease;
transition: all .5s ease;
transition: all 0.5s;
}
.customer image{
height: 100%;
width: 100%;
}
.TabBar{
box-shadow: 0px -8px 20px 0px rgba(14, 5, 9, 0.06);
}
/* 底部导航 */
.index-icon{
width: 39rpx !important;
height: 39rpx !important;
}
/* 底部导航end */
/* 优惠券样式 */
.video_cen{
text-align: center;
}
.video_cen video{
width: 620rpx;
height: 400rpx;
display: block;
margin: 0 auto;
}
.video_cen image{
width: 69rpx;
height: 69rpx;
display: block;
margin: 55rpx auto 0;
}
.coupon{
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.75);
z-index: 99999;
}
.coupon_list{
width: 600rpx;
padding: 40rpx;
background-color: #f92929;
border-radius: 10px;
}
.coupon_list_tit{
font-weight: 500;
font-family: PingFang-SC-Bold;
font-size: 36rpx;
color: #ffffff;
text-align: center;
margin: 10rpx;
}
.coupon_list_row{
height: 150rpx;
}
.coupon_row_l,
.coupon_row_r{
position: relative;
}
.coupon_row_l{
height: 150rpx;
width: 148rpx;
}
.coupon_row_l image{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
height: 150rpx;
width: 148rpx;
vertical-align: middle;
margin: 0;
}
.coupon_row_r image{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
height: 100%;
width: 100%;
margin: 0;
}
.row_l1{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
height: 100%;
width: 100%;
}
.row_l1_p1{
font-family: PingFang-SC-Bold;
font-size: 25rpx;
color: #f92929;
}
.row_l1_p1 span{
font-size: 40rpx;
font-weight: 600;
}
.row_l1_p2{
font-family: PingFang-SC-Medium;
font-size: 18rpx;
color: #333333;
}
.row_r1_p1{
font-family: PingFang-SC-Medium;
font-size: 28rpx;
color: #333333;
}
.row_r1_p2{
font-family: PingFang-SC-Medium;
font-size: 22rpx;
color: #999999;
}
.receive{
padding: 22rpx 187rpx;
background-color: #f6b900;
border-radius: 45rpx;
font-family: PingFang-SC-Bold;
font-size: 32rpx;
color: #ffffff;
}
/* 客服弹出层 */
.tips-bac{
background-color: #ffffff;
}
.coupon_list_tit-t1{
color: #000000;
}
.tel-img{
margin: 0 auto;
width: 130rpx;
height: 130rpx;
background-color: #eaebed;
border-radius: 50%;
border: 0;
}
.tel-img::after{
width: 0;
height: 0;
}
.tel-img image{
width: 60rpx;
height: 60rpx;
margin: 0;
}
.tel-p{
margin-top: 15rpx;
font-family: PingFang-SC-Medium;
font-size: 28rpx;
font-weight: 400;
color: #666666;
}

View File

@@ -0,0 +1 @@
15ddbcec-96bd-4dfa-8856-4250a90405c3

View File

@@ -0,0 +1 @@
3eb5cd3b-3385-4e45-8960-f84679ba630d

View File

@@ -0,0 +1,82 @@
// pages/brandList/brandInfo/brandInfo.js
const app = getApp();
const regeneratorRuntime = app.loadAsync()
const model = app.loadModel("index")
const http = app.loadHttp()
Page({
/**
* 页面的初始数据
*/
data: {
system: app.globalData.system, //设备相关信息
pageTitle: "品牌合作", //头部标题
isBack: true,//显示返回
newsInfo:'',//新闻详情
},
// 获取详情
async newsDetails(id) {
let res = await http.http.request1({ url: `${http.api.newsDetails}/${id}`, method: "GET" })
res.data.data.content = res.data.data.content.replace(/\<img/gi, '<img class="rech_img" ')
this.setData({
newsInfo:res.data.data
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
if (!!options.id) {
this.newsDetails(options.id)
}
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

View File

@@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@@ -0,0 +1,15 @@
<!-- 头部导航 -->
<nav-bar isBack="{{isBack}}" pageTitle="{{pageTitle}}" system="{{system}}"></nav-bar>
<!-- pages/brandList/brandInfo/brandInfo.wxml -->
<view class="brandInfo pd30">
<view class="title">
<view class="title_time mt50">{{newsInfo.create_Time}}</view>
<view class="title_p mt10">{{newsInfo.title}}</view>
<!-- <view class="title_cooperator mt10">中国建设银行</view> -->
</view>
<view class="mb20 mt20 brandInfo-bac">
<rich-text nodes="{{newsInfo.content}}"></rich-text>
</view>
</view>
<!-- toasta提示 -->
<i-toast id="toast" />

View File

@@ -0,0 +1,43 @@
/* pages/brandList/brandInfo/brandInfo.wxss */
page{
height: 100%;
width: 100%;
background-color: #ffffff !important;
}
.brandInfo-bac{
max-width: 100%;
}
.brandInfo-bac rich-text{
max-width: 100%;
}
.brandInfo{
border-top: 2rpx solid #ebebeb;
}
.title_time{
font-family: PingFang-SC-Medium;
font-size: 22rpx;
font-weight: 400;
font-stretch: normal;
line-height: 36rpx;
color: #999999;
}
.title_p{
font-family: PingFang-SC-Medium;
font-size: 50rpx;
font-weight: 500;
font-stretch: normal;
color: #333333;
}
.title_cooperator{
font-family: PingFang-SC-Medium;
font-size: 26rpx;
font-weight: 400;
font-stretch: normal;
color: #999999;
}
.rech_img{
max-width: 100% !important;
display: block;
height: auto;
}

View File

@@ -0,0 +1,94 @@
// pages/brandList/brandList.js
const app = getApp();
const regeneratorRuntime = app.loadAsync()
const model = app.loadModel("index")
const http = app.loadHttp()
Page({
/**
* 页面的初始数据
*/
data: {
system: app.globalData.system, //设备相关信息
pageTitle: "品牌合作", //头部标题
isBack: true,//显示返回
newsData: [],//品牌合作列表数据
isPage: false,//如果没有数据变为true
},
// 获取品牌合作列表
async getNewsList() {
let data = {
type: 1,
page: this.data.page,
limit: 10
}
let res = await http.http.request1({ url: `${http.api.news}`, method: "GET", data: data })
let rel = res.data.data.list,
newsData = this.data.newsData;
if (rel.length < 10) {
this.setData({
isPage: true
})
}
this.setData({
newsData: [...newsData, ...rel]
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.getNewsList()
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
if(!this.data.isPage){
this.getNewsList()
}
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

View File

@@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@@ -0,0 +1,22 @@
<!-- 头部导航 -->
<nav-bar isBack="{{isBack}}" pageTitle="{{pageTitle}}" system="{{system}}"></nav-bar>
<!-- pages/brandList/brandList.wxml -->
<view class="brandList">
<view class="mt20">
<view class="head_con">
<navigator class="know pd30" wx:for="{{newsData}}" wx:key url="/pages/brandList/brandInfo/brandInfo?id={{item.id}}">
<view class="know_row dis-flex">
<view class="know_row_img">
<image src="{{item.images}}" />
</view>
<view class="flex1 dis-flex1 ml20">
<view class="flex1 know_row_text">{{item.title}}</view>
<view class="know_row_time">{{item.create_time}}</view>
</view>
</view>
</navigator>
</view>
</view>
</view>
<!-- toasta提示 -->
<i-toast id="toast" />

View File

@@ -0,0 +1,71 @@
/* pages/brandList/brandList.wxss */
/* 品牌合作start */
.head_con {
margin-top: 20rpx;
}
.know {
display: block;
background: #fff;
}
.know:nth-child(1) {
border-top-left-radius: 10rpx;
border-top-right-radius: 10rpx;
}
.know:last-child {
border-bottom-right-radius: 10rpx;
border-bottom-left-radius: 10rpx;
}
.know_row {
padding: 30rpx 0;
height: 140rpx;
border-bottom: solid 2rpx #ebebeb;
box-sizing: initial;
}
.know:last-child .know_row {
border-bottom: 0;
}
.know_row_img {
width: 255rpx;
height: 140rpx;
background-color: #f5f5f5;
border-radius: 15rpx;
display: inline-block;
}
.know_row_img image{
height: 100%;
width: 100%;
}
.know_row_text {
font-family: PingFang-SC-Medium;
font-size: 28rpx;
font-weight: 400;
font-stretch: normal;
line-height: 36rpx;
color: #333;
display: -webkit-box !important;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
overflow: hidden;
}
.know_row_time {
text-align: right;
font-family: PingFang-SC-Medium;
font-size: 28rpx;
font-weight: 400;
font-stretch: normal;
line-height: 36rpx;
color: #999;
}
/* 品牌合作end */

View File

@@ -0,0 +1 @@
85e434e9-5999-4193-a66f-8f0c9f07763e

View File

@@ -0,0 +1,72 @@
// pages/buyCabinets/buyCabinets.js
const app = getApp();
Page({
/**
* 页面的初始数据
*/
data: {
system: app.globalData.system, //设备相关信息
pageTitle: "加入衣柜洗", //头部标题
isBack: true,//显示返回
},
// 选择地址的方法
add() {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

View File

@@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@@ -0,0 +1,42 @@
<!-- 头部 -->
<nav-bar isBack="{{isBack}}" pageTitle="{{pageTitle}}" system="{{system}}"></nav-bar>
<!-- user/address/address.wxml -->
<view class="address">
<form bindsubmit="subAdd">
<view class="list_text pd30 mt20">
<view class="text_row">
<view class="text_row1 flex-con2">联系人</view>
<view class="text_row2 flex-con2">
<input placeholder-style="color:#cccccc;" name="name" type="text" value="" placeholder="请输入联系人" />
</view>
<view class="text_row3 flex-con3"></view>
</view>
<view class="text_row">
<view class="text_row1 flex-con2">电话</view>
<view class="text_row2 flex-con2">
<input placeholder-style="color:#cccccc;" name="tel" type="text" value="" placeholder="请输入手机号" />
</view>
<view class="text_row3 flex-con3"></view>
</view>
<view class="text_row">
<view class="text_row1 flex-con2">位置</view>
<view class="text_row2 flex-con2" bind:tap="add">
<span>请选择您的小区</span>
</view>
<view class="text_row3 flex-con3" bind:tap="add">
<image src="/static/img/icon/rthyrthertherth.png" />
</view>
</view>
<view class="text_row">
<view class="text_row1 flex-con2">详情地址</view>
<view class="text_row2 flex-con2">
<input placeholder-style="color:#cccccc;" name="detail" type="text" value="" placeholder="请填写你的门牌号" />
</view>
<view class="text_row3 flex-con3"></view>
</view>
</view>
<button class="sub" form-type="submit">立即支付999元</button>
</form>
</view>
<!-- toasta提示 -->
<i-toast id="toast" />

View File

@@ -0,0 +1,112 @@
/* pages/buyCabinets/buyCabinets.wxss *//* user/address/address.wxss */
.list_text {
background-color: #fff;
}
.text_row {
display: flex;
height: 100rpx;
width: 100%;
border-bottom: 2rpx solid #ebebeb;
}
.text_row1 {
flex: 2;
font-size: 32rpx;
font-weight: 700;
font-stretch: normal;
letter-spacing: 0px;
color: #333;
}
.text_row2 {
padding-left: 40rpx;
flex: 7;
font-size: 32rpx;
font-weight: normal;
font-stretch: normal;
letter-spacing: 0px;
color: #666;
}
.text_row2 span {
font-family: PingFang-SC-Medium;
font-size: 32rpx;
font-weight: normal;
font-stretch: normal;
letter-spacing: 0px;
color: #ccc;
display: -webkit-box !important;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
}
.text_row3 {
flex: 1;
}
.text_row3 image {
width: 15rpx;
height: 33rpx;
}
.text_row:last-child {
border: 0;
}
.label-1__text, .label-2__text {
display: inline-block;
vertical-align: middle;
height: 100%;
width: 50%;
}
.label-1__icon {
position: relative;
margin-right: 10px;
display: inline-block;
vertical-align: middle;
width: 18px;
height: 18px;
background: #fcfff4;
}
.label-1__icon-checked {
position: absolute;
top: 3px;
left: 3px;
width: 12px;
height: 12px;
background: #1aad19;
}
.label-2__icon {
position: relative;
display: inline-block;
vertical-align: middle;
margin-right: 10px;
width: 18px;
height: 18px;
border: #ebebeb solid 2rpx;
background: #fff;
border-radius: 50px;
}
.label-2__icon-checked {
position: absolute;
left: 50%;
top: 50%;
margin: -6px 0 0 -6px;
width: 12px;
height: 12px;
background: #1aad19;
border-radius: 50%;
}
.label-4_text {
text-align: center;
margin-top: 15px;
}

View File

@@ -0,0 +1 @@
0256aae0-171d-4435-b9d2-0cedd6e04daf

View File

@@ -0,0 +1,123 @@
// user/choice/choice.js
const app = getApp();
const regeneratorRuntime = app.loadAsync()
const model = app.loadModel("index")
const util = app.loadUtils("util")
const http = app.loadHttp()
const api = app.loadApi()
Component({
/**
* 组件的属性列表
*/
properties: {
},
/**
* 组件的初始数据
*/
data: {
system: app.globalData.system, //设备相关信息
pageTitle: "伊莎洗衣", //头部标题
isLocation: true, //是否显示定位
titleColor: { //头部背景和文字颜色
bColor: "#1dbf53",
tColor: "#ffffff"
},
cityInfo: {
city: "定位中",
location: ""
},//最新门店
imgObj: {},
isPopup: false, //弹出层显示
branchList: [],
branchIndex: -1,// 当前用户选择的支行下标
},
ready() {
this.add()
this.groupBranchList()
if(app.globalData.userInfo.group_branch == 0){
this.setData({
isPopup: true
})
}
},
/**
* 组件的方法列表
*/
methods: {
async tuanPic(group_type) {
let res = await http.http.request2({ url: http.api.tuanPic, method: 'POST', data: { group_type: group_type } })
this.setData({
imgObj: res.data.data
})
},
// 授权和获取用户当前经纬度,并展示最近门店
async add() {
// 判断本地是否有最近门店,只在第一次进小程序请求后端获取最近门店
let storageAdd = await model.storage.getSetting("nearestStore")
let cityInfo = {}
if (!!storageAdd) {
cityInfo = {
city: storageAdd.name.substring(0, 4),
location: "/pages/nearbyStore/nearbyStore"
}
this.setData({
cityInfo: cityInfo
})
return
}
let res = await model.getauth.userLocation()
cityInfo = {
city: res.name.substring(0, 4),
location: "/pages/nearbyStore/nearbyStore"
}
this.setData({
cityInfo: cityInfo
})
},
// 跳转
async goDiamondInfo(e) {
let url = e.currentTarget.dataset.url
let isLogin = await util.isLoginJump()
if (isLogin == 1) return;
// 洗衣价目表
wx.navigateTo({
url: url
})
},
// 获取支行列表
async groupBranchList() {
let res = await http.http.request2({ url: http.api.groupBranchList, method: 'POST' })
this.setData({
branchList: res.data.data
})
},
pickerChange(e) {
this.setData({
branchIndex: parseInt(e.detail.value)
})
},
async bindBranch() {
if(this.data.branchIndex == -1){
wx.showToast({
title: '请选择分行',
icon: 'none',
duration: 2000
})
return
}
let res = await http.http.request2({ url: http.api.bindBranch, method: 'POST', data:{branch_id:this.data.branchList[this.data.branchIndex].id} })
if(res.data.status == 1){
wx.showToast({
title: '绑定成功',
icon: 'none',
duration: 2000
})
this.setData({
isPopup: false
})
}
}
}
})

View File

@@ -0,0 +1,6 @@
{
"component": true,
"usingComponents": {
"wux-cell": "../../extend/wux/dist/cell/index"
}
}

View File

@@ -0,0 +1,70 @@
<!-- 头部导航 -->
<nav-bar
class="skeleton-rect"
isLocation="{{isLocation}}"
pageTitle="{{pageTitle}}"
system="{{system}}"
cityInfo="{{cityInfo}}"
titleColor="{{titleColor}}"
/>
<!--user/choice/choice.wxml-->
<view class="choice">
<view class="pd20">
<view class="row mt40">
<view bind:tap="goDiamondInfo" data-url="{{'/pages/serviceInfo/serviceInfo?group_type='+imgObj.id}}" class='flex-con3 service_c'>
<view class="dis-flex service_cen">
<view class='flex1'>
<view class='service_title'>服务说明</view>
<view class='flex-con2 service_text'>我们将尽心为您服务
<view class='service_see'>点击查看 ></view>
</view>
</view>
<view class='service_img'>
<image src="/static/img/love.png" />
</view>
</view>
</view>
</view>
<view class="row mt40">
<!-- <view class="title">工服清洗</view> -->
<view bind:tap="goDiamondInfo" data-url="{{'/pages/laundry/laundry?type=2&group_type='+imgObj.id}}" class="pos_cen">
<view class="cen_img">
<image src="{{imgObj.work_pic}}" />
</view>
<view class="cen_p flex-con2">
<view class="p_text">工装洗涤</view>
<image src="/static/img/icon/bac-right.png" />
</view>
</view>
</view>
<view class="row mt40">
<!-- <view class="title">家庭衣物洗涤</view> -->
<view bind:tap="goDiamondInfo" data-url="{{'/pages/laundry/laundry?type=1&group_type='+imgObj.id}}" class="pos_cen">
<view class="cen_img">
<image src="{{imgObj.ordinary_pic}}" />
</view>
<view class="cen_p flex-con2">
<view class="p_text">家庭衣物洗涤</view>
<image src="/static/img/icon/bac-right.png" />
</view>
</view>
</view>
</view>
<!-- 第一次广大用户进入此页面绑定支行 -->
<popup isPopup='{{isPopup}}'>
<view class='branch'>
<picker
value="{{index}}"
range="{{branchList}}"
range-key='unit_title'
bindchange='pickerChange'
>
<view class='bac_cell'>
<wux-cell right="text_right_cell2" title="{{ branchIndex == -1?'请选择您所在的分行':branchList[branchIndex].unit_title}}" rightUrl='/static/img/icon/asfa51f3a1f3a5f13a.png' />
</view>
</picker>
<view class='branch_sub' bind:tap='bindBranch'>确定</view>
</view>
</popup>
</view>

View File

@@ -0,0 +1,102 @@
/* user/choice/choice.wxss */
@import '../../css/_main.wxss';
.title{
font-size:36rpx;
font-weight:500;
color:#282A28;
}
.pos_cen{
position: relative;
height: 260rpx;
margin-top: 10rpx;
}
.cen_img{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 10;
}
.cen_img image{
height: 100%;
width: 100%;
}
.cen_p{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 12;
}
.cen_p .p_text{
font-size:50rpx;
font-weight:500;
color:#ffffff;
margin-left: 54rpx;
}
.cen_p image{
margin-left: 10rpx;
height: 50rpx;
width: 50rpx;
}
/* 热心服务 */
.service_c{
background-color: #ffffff;
height: 155rpx;
border-radius: 10rpx;
}
.service_cen{
width: 100%;
padding: 0 32rpx;
}
.service_title{
font-size:32rpx;
font-weight:500;
}
.service_see{
padding: 10rpx 20rpx;
background: linear-gradient(to right, #fe5928 , #fe0516);
border-radius: 100rpx;
font-size: 22rpx;
color: #ffffff;
margin-left: 10rpx;
}
.service_img{
height: 100rpx;
width: 100rpx;
}
.service_img image{
width: 100%;
height: 100%;
}
.service_text{
color: #999999;
font-size: 24rpx;
font-weight: 400;
}
/* 弹出层 */
.branch{
width: 80%;
background-color: #ffffff;
border-radius: 10rpx;
padding: 54rpx 50rpx;
}
.bac_cell{
background-color: rgba(245,245,245,1);
}
.wux-cell:after{
border-bottom: 0;
}
.branch_sub{
height: 80rpx;
line-height: 80rpx;
background:rgba(54,217,108,1);
border-radius: 40rpx;
text-align: center;
font-size: 32rpx;
color: #ffffff;
margin-top: 35rpx;
}

View File

@@ -0,0 +1 @@
e56aa015-9608-40ed-89cc-6e677c1ff54e

View File

@@ -0,0 +1,69 @@
// pages/contactUs/contactUs.js
const app = getApp();
Page({
/**
* 页面的初始数据
*/
data: {
system: app.globalData.system, //设备相关信息
pageTitle: "联系我们", //头部标题
isBack: true,//显示返回
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

View File

@@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@@ -0,0 +1,13 @@
<!-- 头部导航 -->
<nav-bar isBack="{{isBack}}" pageTitle="{{pageTitle}}" system="{{system}}"></nav-bar>
<!-- pages/contactUs/contactUs.wxml -->
<view class="contactUs">
<view class="qr_code">
<image src="http://cdn.yishaxiyi.com/4bebe9676b16f182d6e214d02d6406ce.png" />
</view>
<view class="qr_p">关注伊莎洗衣公众号</view>
<view class="us_text">
<view class="us-p">电话0551-65633808 65661245</view>
<view class="us-p mt10">地址合肥市蜀山区黄山路463号盛景大厦5F</view>
</view>
</view>

View File

@@ -0,0 +1,37 @@
/* pages/contactUs/contactUs.wxss */
.contactUs{
width: 646rpx;
height: 700rpx;
background-color: #ffffff;
box-shadow: -4rpx 3rpx 30rpx 0px rgba(0, 0, 0, 0.1);
border-radius: 20rpx;
margin: 45rpx auto 0;
padding-top: 95rpx;
}
.qr_code{
width: 304rpx;
height: 304rpx;
margin: 0 auto;
}
.qr_code image{
height: 100%;
width: 100%;
}
.qr_p{
font-family: PingFang-SC-Medium;
font-size: 32rpx;
font-weight: 400;
letter-spacing: 0px;
color: #999999;
text-align: center;
}
.us_text{
margin-top: 70rpx;
}
.us-p{
font-family: PingFang-SC-Medium;
font-size: 28rpx;
font-weight: 400;
color: #666666;
padding: 0 42rpx;
}

View File

@@ -0,0 +1 @@
f5c9f161-c78b-40e4-8986-3fd4f283478e

View File

@@ -0,0 +1,101 @@
// pages/home/home.js
const app = getApp();
const regeneratorRuntime = app.loadAsync()
const http = app.loadHttp()
const model = app.loadModel("index")
const util = app.loadUtils("util")
Component({
/**
* 组件的属性列表
*/
properties: {
},
/**
* 组件的初始数据
*/
data: {
system: app.globalData.system, //设备相关信息
pageTitle: "我的", //头部标题
titleColor: { //头部背景和文字颜色
bColor: "#1dbf53",
tColor: "#ffffff"
},
userInfo: {},//用户信息
},
created() {
this.getUserInfo()
app.setWatching('userInfo', (v) => {
this.setData({
userInfo: v
});
});
},
/**
* 组件的方法列表
*/
methods: {
// 获取个人信息
async getUserInfo() {
let rel = await model.storage.getSetting("userInfo")
this.setData({
userInfo: rel
})
},
// 列表跳转
async jump(e) {
let url = e.currentTarget.dataset.url
let isLog = e.currentTarget.dataset.islog //控制跳转到登陆为1时不让他跳转到登陆
let type = e.currentTarget.dataset.type
let userInfo = this.data.userInfo
let getSetting = await model.getauth.getSetting() //获取已经授权的信息
if (isLog == '3' && !getSetting.authSetting['scope.userLocation']) {
// 用户取消授权的处理
wx.showModal({
title: '你拒绝了地理位置授权',
content: '请点击确定,到权限表设置',
success(res) {
if (res.confirm) {
wx.openSetting()
}
}
})
return
}
if (!isLog) {
let isLogin = await util.isLoginJump()
if (isLogin == 1) return;
}
if ((userInfo['telnum'] == "未授权手机号" || userInfo['telnum'] == '') && type == 5) {
wx.navigateTo({
url: '/pages/login/login'
})
return
}
if (type == 1 && userInfo.isLogistics == 2) {
wx.navigateTo({
url: '/view/logistics/appLogistics/appLogistics'
})
return
} else if (type == 1 && userInfo.isLogistics == 3) {
wx.showToast({
title: '你已申请成为小马哥,请耐心等待后台人员确认!',
icon: 'none',
duration: 2000
})
return
}
wx.navigateTo({
url: url
})
},
goTelnum(e){
if (e.currentTarget.dataset.telnum == '点击授权手机号'){
wx.navigateTo({
url:'/pages/login/login'
})
}
}
}
})

View File

@@ -0,0 +1,5 @@
{
"navigationBarTextStyle":"white",
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1,183 @@
<!-- 头部导航 -->
<nav-bar pageTitle="{{pageTitle}}" system="{{system}}" titleColor="{{titleColor}}" />
<!-- pages/home/home.wxml -->
<view class="home">
<view class="userInfo" data-url="/user/setUp/setUp" catchtap="jump">
<view class="userImg">
<open-data type="userAvatarUrl" />
</view>
<view class="user-title">
<view>
<view class="name">
{{userInfo.nickname || '请登录'}}
<span wx:if="{{!!userInfo.nickname}}" data-url="/user/balance/balance" catchtap="jump">
会员卡
</span>
</view>
<view class="tel" data-telnum="{{userInfo.telnum}}" catchtap="goTelnum">{{ !!userInfo.nickname ? userInfo.telnum : '登录后享受完成功能'}}</view>
</view>
</view>
<view class="user-go">
<image src="/static/img/icon/DASD_03.png" />
</view>
</view>
<!-- 资产 -->
<view class="capital">
<view class="capital-row flex-con3 capital-row-c" data-url="/user/couponExchange/couponExchange" bind:tap="jump">
<view class="cap-cen">
<view class="cap-title verline">
{{userInfo.integral || 0}}
<span/>
</view>
<view class="cap-p">积分</view>
</view>
</view>
<view class="capital-row flex-con3 capital-row-c" data-url="/user/balance/balance" bind:tap="jump">
<view class="cap-cen">
<view class="cap-title verline">
{{userInfo.money || 0}}
<span wx:if="{{userInfo.money < 10000}}">元</span>
</view>
<view class="cap-p">余额</view>
</view>
</view>
<view class="capital-row flex-con3 capital-row-c" data-url="/user/balance/balance?index=2" bind:tap="jump">
<!-- <view > -->
<view class="cap-cen">
<view class="cap-title verline">
{{userInfo.group_money || 0}}
<span wx:if="{{userInfo.group_money < 10000}}">元</span>
</view>
<view class="cap-p">礼卡余额</view>
</view>
<!-- </view> -->
</view>
<view class="capital-row flex-con3 capital-row-c" data-url="/user/couponList/couponList" bind:tap="jump">
<!-- <view > -->
<view class="cap-cen">
<view class="cap-title verline">
{{userInfo.couponCount || 0}}
<span>张</span>
</view>
<view class="cap-p">优惠券</view>
</view>
<!-- </view> -->
</view>
</view>
<!-- 资产end -->
<!-- 订单 -->
<view class="order mt20">
<view class="tit">
<view class="titl">洗衣订单</view>
<view class="titr" />
</view>
<view class="capital">
<view class="capital-row flex-con3" data-url="/user/order/order?orderState=2" bind:tap="jump">
<view class="cap-cen">
<view class="cap-title">
<image src="/static/img/icon/order-1_03.png" />
</view>
<view class="cap-p">服务中</view>
</view>
</view>
<view class="capital-row flex-con3" data-url="/user/order/order?orderState=3" bind:tap="jump">
<view class="cap-cen">
<view class="cap-title">
<image src="/static/img/icon/order-2_03.png" />
</view>
<view class="cap-p">已完成</view>
</view>
</view>
<view class="capital-row flex-con3" data-url="/user/order/order?orderState=1" bind:tap="jump">
<view class="cap-cen">
<view class="cap-title">
<image src="/static/img/icon/order-3_03.png" />
</view>
<view class="cap-p">全部订单</view>
</view>
</view>
</view>
</view>
<!-- 订单end -->
<!-- 列表 -->
<view class="user-list mt20">
<view
class="tit"
data-type='5'
data-url="/user/recharge/recharge"
bind:tap="jump"
>
<view class="titl">充值</view>
<view class="titr">
<image src="/static/img/icon/right-r.png" />
</view>
</view>
<view class="tit" data-url="/mall/laundryList/laundryList" bind:tap="jump">
<view class="titl">商城订单</view>
<view class="titr">
<image src="/static/img/icon/right-r.png" />
</view>
</view>
<view class="tit" data-url="/user/sharingCourtesy/sharingCourtesy" bind:tap="jump">
<view class="titl">分享有礼</view>
<view class="titr">
<image src="/static/img/icon/right-r.png" />
</view>
</view>
<view class="tit" data-url="/user/parIncome/parIncome" bind:tap="jump">
<view class="titl">合伙人收益</view>
<view class="titr">
<image src="/static/img/icon/right-r.png" />
</view>
</view>
</view>
<view class="user-list mt20">
<view
class="tit"
data-type="1"
data-url="/view/logistics/logCentre/logCentre"
bind:tap="jump"
>
<view class="titl">小马哥</view>
<view class="titr">
<image src="/static/img/icon/right-r.png" />
</view>
</view>
<view
class="tit"
data-islog="1"
data-url="/pages/richText/richText?id=7&title=加盟我们"
bind:tap="jump"
>
<view class="titl">加盟我们</view>
<view class="titr">
<image src="/static/img/icon/right-r.png" />
</view>
</view>
<view
class="tit"
data-islog="1"
data-url="/pages/richText/richText?id=6&title=关于我们"
bind:tap="jump"
>
<view class="titl">关于我们</view>
<view class="titr">
<image src="/static/img/icon/right-r.png" />
</view>
</view>
<view
class="tit"
data-islog="3"
data-url="/pages/nearbyStore/nearbyStore"
bind:tap="jump"
>
<view class="titl">附近门店</view>
<view class="titr">
<image src="/static/img/icon/right-r.png" />
</view>
</view>
</view>
</view>
<!-- toasta提示 -->
<i-toast id="toast" />

View File

@@ -0,0 +1,180 @@
/* pages/home/home.wxss */
@import "../../css/_main.wxss";
.home {
padding-bottom: 20rpx;
}
.userInfo {
height: 180rpx;
width: 100%;
background: var(--greens);
padding: 0 38rpx;
}
.userImg {
height: 140rpx;
width: 140rpx;
border-radius: 50%;
overflow: hidden;
float: left;
}
.user-title {
margin-left: 35rpx;
height: 140rpx;
float: left;
font-family: PingFang-SC-Medium;
font-size: 32rpx;
font-weight: normal;
font-stretch: normal;
line-height: 29rpx;
letter-spacing: 0px;
color: #fff;
display: -webkit-flex;
display: flex;
-webkit-align-items: center;
align-items: center;
}
.name span {
padding: 3rpx 13rpx;
font-family: PingFang-SC-Regular;
font-size: 28rpx;
font-weight: 400;
color: #f4c8a7;
background-color: #151915;
border-radius: 30rpx;
}
.tel {
margin-top: 27rpx;
}
.user-go {
height: 140rpx;
line-height: 140rpx;
float: right;
}
.user-go image {
width: 15rpx;
height: 33rpx;
}
.capital {
width: 100%;
height: 150rpx;
background: #fff;
display: flex;
}
.capital-row {
flex: 3;
position: relative;
}
.capital-row-c::after {
position: absolute;
right: 0;
top: 49rpx;
content: "";
width: 2rpx;
height: 52rpx;
background-color: #eaeaea;
}
.capital-row-c:last-child::after {
width: 0;
}
.cap-cen {
text-align: center;
}
.cap-title {
font-family: PingFang-SC-Bold;
font-size: 32rpx;
font-weight: normal;
font-stretch: normal;
/* line-height: 29rpx; */
letter-spacing: 0px;
color: #333;
}
.cap-title span {
font-family: PingFang-SC-Medium;
font-size: 22rpx;
font-weight: normal;
font-stretch: normal;
line-height: 29rpx;
letter-spacing: 0px;
color: #999;
}
.cap-title image {
height: 41rpx;
width: 40rpx;
}
.cap-p {
margin-top: 10rpx;
font-family: PingFang-SC-Regular;
font-size: 28rpx;
font-weight: normal;
font-stretch: normal;
line-height: 29rpx;
letter-spacing: 0px;
color: #666;
}
/* */
.order {
padding: 0 38rpx;
background: #fff;
}
.tit {
height: 105rpx;
line-height: 105rpx;
border-bottom: 2rpx solid #ebebeb;
display: flex;
}
.tit:last-child {
border: 0;
}
.titl {
font-family: PingFang-SC-Regular;
font-size: 32rpx;
font-weight: normal;
font-stretch: normal;
letter-spacing: 0px;
color: #333;
flex: 2;
}
.titr {
flex: 2;
text-align: right;
display: -webkit-flex;
display: flex;
-webkit-flex-direction: row-reverse;
flex-direction: row-reverse;
-webkit-align-items: center;
align-items: center;
}
.titr image {
width: 15rpx;
height: 33rpx;
}
/* */
.user-list {
padding: 0 38rpx;
background: #fff;
}

View File

@@ -0,0 +1 @@
33329dff-62e3-464f-b36e-a773302fcd41

View File

@@ -0,0 +1,74 @@
// pages/housekeeping/housekeeping.js
const app = getApp();
Page({
/**
* 页面的初始数据
*/
data: {
system: app.globalData.system, //设备相关信息
pageTitle: "家政服务", //头部标题
isBack: true,//显示返回
},
// 电话
tel(){
wx.makePhoneCall({
phoneNumber: '4000551071'
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

View File

@@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@@ -0,0 +1,61 @@
<!-- 头部导航 -->
<nav-bar isBack="{{isBack}}" pageTitle="{{pageTitle}}" system="{{system}}"></nav-bar>
<!-- pages/housekeeping/housekeeping.wxml -->
<view class="housekeeping">
<view class="housekeeping-tit-img mt5">
<image mode="widthFix" src="http://cdn.yishaxiyi.com/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20190904134322.png" />
</view>
<view class="housekeeping-cen mt30">
<view class="housekeeping-tit flex-con3">
<view class="housekeeping-tit-p">家电家居清洗</view>
</view>
<view class="housekeeping-list">
<view class="housekeeping-list-l flex1">
<view class="tit-p">服务项目</view>
<view class="hou-list mt10">
<view class="hou-list-p mb20">挂式空调</view>
<view class="hou-list-p mb20">柜式空调</view>
<view class="hou-list-p mb20">滚筒/波轮洗衣机</view>
<view class="hou-list-p mb20">单/双门冰箱</view>
<view class="hou-list-p mb20">油烟机</view>
<view class="hou-list-p mb20">皮沙发护理</view>
</view>
</view>
<view class="housekeeping-list-r flex1">
<view class="tit-p">服务价格</view>
<view class="hou-list mt10">
<view class="hou-list-p mb20">145元/台</view>
<view class="hou-list-p mb20">170元/台</view>
<view class="hou-list-p mb20">160元/台</view>
<view class="hou-list-p mb20">140元/台</view>
<view class="hou-list-p mb20">180元/台</view>
<view class="hou-list-p mb20">115元/座(三座起)</view>
</view>
</view>
</view>
</view>
<!-- <view class="housekeeping-cen mt30">
<view class="housekeeping-tit flex-con3">
<view class="housekeeping-tit-p">保洁服务</view>
</view>
<view class="housekeeping-list">
<view class="housekeeping-list-l flex1">
<view class="tit-p">服务项目</view>
<view class="hou-list mt10">
<view class="hou-list-p mb20">日常保洁</view>
<view class="hou-list-p mb20">单独厨房</view>
<view class="hou-list-p mb20">三居室2卫</view>
</view>
</view>
<view class="housekeeping-list-r flex1">
<view class="tit-p">服务价格</view>
<view class="hou-list mt10">
<view class="hou-list-p mb20">35元/小时</view>
<view class="hou-list-p mb20">380元3-4小时</view>
<view class="hou-list-p mb20">1350元5-6小时</view>
</view>
</view>
</view>
</view> -->
<view class="btn" bind:tap="tel">电话预约</view>
</view>

View File

@@ -0,0 +1,68 @@
/* pages/housekeeping/housekeeping.wxss */
page{
background: url("http://cdn.yishaxiyi.com/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20190904110656.png");
}
.housekeeping{
height: 600rpx;
width: 100%;
}
.housekeeping-tit-img{
width: 100%;
display: flex;
}
.housekeeping-tit-img image{
flex: 1;
}
.housekeeping-tit{
width: 100%;
}
.housekeeping-tit-p{
margin: 0 auto;
padding: 9rpx 40rpx;
background-color: #ffffff;
font-family: PingFang-SC-Bold;
font-size: 30rpx;
font-weight: normal;
font-stretch: normal;
color: #3c72fa;
border-radius: 50rpx;
}
.housekeeping-list{
width: 567rpx;
margin: 0 auto;
display: flex;
}
.housekeeping-list-l,.housekeeping-list-r{
text-align: center;
}
.tit-p{
padding: 18rpx 0;
font-family: PingFang-SC-Bold;
font-size: 28rpx;
font-weight: normal;
font-stretch: normal;
color: #ffd502;
border-bottom: 2rpx solid #7396ed;
}
.hou-list-p{
font-family: PingFang-SC-Medium;
font-size: 26rpx;
font-weight: normal;
font-stretch: normal;
color: #ffffff;
}
.btn{
margin: 50rpx auto;
width: 685rpx;
height: 88rpx;
text-align: center;
line-height: 88rpx;
background-color: #ffd502;
border-radius: 10rpx;
font-family: PingFang-SC-Medium;
font-size: 36rpx;
font-weight: normal;
font-stretch: normal;
color: #000000;
}

View File

@@ -0,0 +1 @@
836fd049-8b4d-4fbe-910c-22c11cb43893

View File

@@ -0,0 +1,208 @@
// pages/index/index.js
const app = getApp();
const regeneratorRuntime = app.loadAsync()
const model = app.loadModel("index")
const util = app.loadUtils("util")
const http = app.loadHttp()
const api = app.loadApi()
Component({
/**
* 组件的属性列表
*/
properties: {
},
/**
* 组件的初始数据
*/
data: {
system: app.globalData.system, //设备相关信息
pageTitle: "伊莎洗衣", //头部标题
isLocation: true, //是否显示定位
titleColor: { //头部背景和文字颜色
bColor: "#1dbf53",
tColor: "#ffffff"
},
swiperList: [{
id: 0,
type: 'image',
url: 'https://ossweb-img.qq.com/images/lol/web201310/skin/big84001.jpg'
}],
brandImg: [{
imgUrl: "/static/img/icon/xy.png",
title: "洗衣"
}, {
imgUrl: "/static/img/icon/xx.png",
title: "洗鞋"
}, {
imgUrl: "/static/img/icon/xjf.png",
title: "洗家纺"
}, {
imgUrl: "/static/img/icon/xscp.png",
title: "奢侈品养护"
}, {
imgUrl: "/static/img/icon/xjz.png",
title: "家政服务"
}, {
imgUrl: "/static/img/icon/xrzq.png",
title: "新人专区"
}, {
imgUrl: "/static/img/icon/hyzx.png",
title: "会员专享"
}, {
imgUrl: "/static/img/icon/cz.png",
title: "在线充值"
}],
currentSwiper: 0,
cityInfo: {
city: "定位中",
location: ""
},//最新门店
isVideo: false,//弹出video
preferential: ['', ''],//每周特惠
newsData: ['', '', ''],//新闻列表
},
ready() {
// this.add()
model.storage.deleteStorage('nearestStore')
Promise.all([this.storeMenu(), this.benefitProduct(), this.getBanner(), this.getNews()])
.then(res => {
app.globalData.showSkeleton = false
})
},
/**
* 组件的方法列表
*/
methods: {
swiperChange: function (e) {
this.setData({
currentSwiper: e.detail.current
})
},
// 显示
// disVideo() {
// this.setData({
// isVideo: !this.data.isVideo
// })
// },
// 授权和获取用户当前经纬度,并展示最近门店
async add() {
// 判断本地是否有最近门店,只在第一次进小程序请求后端获取最近门店
let storageAdd = await model.storage.getSetting("nearestStore")
let cityInfo = {}
if (!!storageAdd) {
cityInfo = {
city: storageAdd.name.substring(0, 4),
location: "/pages/nearbyStore/nearbyStore"
}
this.setData({
cityInfo: cityInfo
})
return
}
let res = await model.getauth.userLocation()
cityInfo = {
city: res.name.substring(0, 4),
location: "/pages/nearbyStore/nearbyStore"
}
this.setData({
cityInfo: cityInfo
})
},
// 首页banner获取
async getBanner() {
let res = await http.http.request1({ url: `${http.api.banner}`, method: "GET" })
this.setData({
swiperList: res.data.data
})
},
// 获取金刚区icon和跳转url
async storeMenu() {
let data = {}
if (app.globalData.userInfo.group_type !== ''
&& app.globalData.userInfo.group_type == 39
&& app.globalData.userInfo.group_type !== void 0
) {
data.group_type = app.globalData.userInfo.group_type
}
let res = await http.http.request1({ url: `${http.api.storeMenu}`, method: "POST", data: data })
this.setData({
brandImg: res.data.data
})
},
// 金刚区跳转
async goDiamondInfo(e) {
let url = e.currentTarget.dataset.url
let name = e.currentTarget.dataset.name
if (!url) {
wx.showToast({
title: '敬请期待',
icon: 'none',
duration: 1200
})
return
}
if (name !== '家政' && name !== '会员专享') {
let isLogin = await util.isLoginJump()
if (isLogin == 1) return;
}
if ((name == '洗衣' || name == '洗鞋' || name == '洗家纺' || name == '奢侈品养护') && app.globalData.userInfo.group_type == 39) {
wx.navigateTo({
url: '/pages/auth/auth?index=6&group_type=' + app.globalData.userInfo.group_type
})
return
}
// 洗衣价目表
wx.navigateTo({
url: url
})
},
// 每周特惠
async benefitProduct() {
let res = await http.http.request1({ url: `${http.api.benefitProduct}`, method: "POST" })
this.setData({
preferential: res.data.data
})
},
// 每周特惠点击商品进入商品详情
goShopInfo(e) {
let id = e.currentTarget.dataset.id
wx.navigateTo({
url: "/mall/index/shopInfo/shopInfo?id=" + id
})
},
// 点击更多
shopMore(e) {
let url = e.currentTarget.dataset.url
wx.navigateTo({
url: url
})
},
// 获取新闻列表
async getNews() {
let data = {
type: 1,
page: 1,
limit: 3
}
let res = await http.http.request1({ url: `${http.api.news}`, method: "GET", data: data })
this.setData({
newsData: res.data.data.list
})
},
// 轮播图跳转
goUrl(e) {
let url = e.currentTarget.dataset.url
wx.navigateTo({
url: url
})
},
imgerr(e) {
console.log(e);
}
},
onPageScroll: function () {
console.log(1);
}
})

View File

@@ -0,0 +1,5 @@
{
"navigationBarTextStyle": "black",
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1,97 @@
<!-- 头部导航 -->
<nav-bar class="skeleton-rect" isLocation="{{isLocation}}" pageTitle="{{pageTitle}}" system="{{system}}" cityInfo="{{cityInfo}}" titleColor="{{titleColor}}"></nav-bar>
<!-- pages/index/index.wxml -->
<view class="index">
<view class="pd30 mt20">
<view class="swp skeleton-rect">
<swiper class="screen-swiper" circular="true" autoplay="true" interval="5000" duration="500" bindchange="swiperChange">
<swiper-item class="swiper-item-index" wx:for="{{swiperList}}" wx:key data-url="{{item.href}}" bind:tap="goUrl">
<image src="{{item.image}}" mode="aspectFill" class="swp-img" binderror="imgerr"></image>
<!-- <video src="{{item.url}}" autoplay loop muted show-play-btn="{{false}}" controls="{{false}}" objectFit="cover" wx:if="{{item.type=='video'}}"></video> -->
</swiper-item>
</swiper>
<!-- 重置小圆点的样式 -->
<view class="dots">
<block wx:for="{{swiperList}}" wx:key>
<view class="dot {{index == currentSwiper ? ' active' : ''}}"></view>
</block>
</view>
<view class="clear"></view>
</view>
</view>
<view class="classification pd30">
<view class="class_list">
<view class="class_row" wx:for="{{brandImg}}" wx:key="index" data-name="{{item.name}}" data-url="{{item.href}}" bind:tap="goDiamondInfo">
<view class="class_img">
<image class="skeleton-rect" src="{{item.logo}}" />
</view>
<view class="class_p">
<span class="skeleton-rect">{{item.name}}</span>
</view>
</view>
<view class="clear"></view>
</view>
</view>
<view class="head" wx:if="{{preferential.length > 0}}">
<view class="head_title">
<view class="head_l">
<view class="head_ll flex-con2 skeleton-rect">每周特惠</view>
<view class="head_lr flex-con2 skeleton-rect" data-url="/mall/auth/auth?index=1" bind:tap="shopMore">
<view class="flex1">更多</view>
<view class="head_rimg">
<image src="/static/img/icon/right-r.png" />
</view>
</view>
</view>
</view>
<view class="head_con">
<view class="shop_key">
<view class="shop_row skeleton-rect" wx:for="{{preferential}}" wx:key="index" data-id="{{item.id}}" bind:tap="goShopInfo">
<view class="shop_img">
<image src="{{item.image}}" />
</view>
<view class="shop_name">{{item.name}}</view>
<view class="shop_pri">{{item.price}}元</view>
</view>
</view>
</view>
</view>
<view class="my_video">
<video object-fit="cover" class="ys_video" src="http://static.geekhelp.cn/ysvideo.mp4" controls></video>
</view>
<view class="head">
<view class="head_title">
<view class="head_l">
<view class="head_ll flex-con2 skeleton-rect">品牌合作</view>
<view class="head_lr flex-con2 skeleton-rect" data-url="/pages/brandList/brandList" bind:tap="shopMore">
<view class="flex1">更多</view>
<view class="head_rimg">
<image src="/static/img/icon/right-r.png" />
</view>
</view>
</view>
</view>
<view class="head_con">
<navigator wx:for="{{newsData}}" class="know pd30" wx:key url="/pages/brandList/brandInfo/brandInfo?id={{item.id}}">
<view class="know_row dis-flex">
<view class="know_row_img">
<image class="skeleton-rect" src="{{item.images}}" />
</view>
<view class="flex1 dis-flex1 ml20 skeleton-rect">
<view class="flex1 know_row_text">{{item.title}}</view>
<view class="know_row_time">{{item.create_time}}</view>
</view>
</view>
</navigator>
</view>
</view>
</view>
<!-- 视频播放弹出层 -->
<view catchtouchmove='{{ isVideo }}' wx:if="{{ isVideo }}" class="tips_video flex-con3">
<view class="video_cen">
<video id="myVideo" autoplay src="https://www.yishaxiyi.com/assets/video/0300200100561DC1C1FB5B28D342A6E3821DFE-7BD7-264D-DABE-A4532876567C.mp4" enable-danmu danmu-btn controls></video>
<image bind:tap="disVideo" src="/static/img/icon/colse_tips.png" />
</view>
</view>
<!-- toasta提示 -->
<i-toast id="toast" />

View File

@@ -0,0 +1,317 @@
@import "../../css/_main.wxss";
/* pages/index/index.wxss */
page {
background: #f5f5f5 !important;
}
.swp {
height: 270rpx;
position: relative;
width: 100%;
}
.swp .screen-swiper {
border-radius: 10rpx;
overflow: hidden;
}
/*用来包裹所有的小圆点 */
.dots {
width: 100%;
height: 6rpx;
flex-direction: row;
position: absolute;
bottom: -20rpx;
display: -webkit-flex;
display: flex;
-webkit-align-items: center;
align-items: center;
-webkit-justify-content: center;
justify-content: center;
}
/*未选中时的小圆点样式 */
.dot {
margin: 0 5rpx;
width: 15rpx;
height: 6rpx;
background-color: #d9d9d9;
border-radius: 2rpx;
}
/*选中以后的小圆点样式 */
.active {
width: 31rpx;
height: 6rpx;
background-color: #6f6f6f;
border-radius: 2rpx;
}
swiper {
height: 270rpx !important;
}
.tower-swiper .tower-item {
transform: scale(calc(0.5 + var(--index) / 10));
margin-left: calc(var(--left) * 100rpx - 150rpx);
z-index: var(--index);
}
.swiper-item-index{
border-radius: 10rpx;
height: 100%;
width: 100%;
}
.swp-img {
height: 100%;
width: 100%;
/* border-radius: 10rpx; */
}
/* 分类 */
.classification {
width: 100%;
padding: 30rpx 0rpx;
margin-top: 20rpx;
}
.class_row {
width: 25%;
/* height: 100rpx; */
text-align: center;
float: left;
}
.class_row:nth-child(n+5) {
margin-top: 25rpx;
}
.class_img image {
height: 88rpx;
width: 88rpx;
border-radius: 50%;
}
.class_p {
font-family: 'PingFang-SC-Medium';
margin-top: 10rpx;
font-size: 26rpx;
color: #333;
font-weight: 400;
}
.clear {
clear: both;
}
.head {
width: 100%;
padding: 30rpx 30rpx;
/* background-color: #ffffff; */
}
.head_title {
width: 100%;
display: flex;
}
.head_l {
flex: 1;
display: flex;
}
.head_ll {
flex: 1;
font-size: 36rpx;
color: #333;
font-weight: 700;
}
.head_lr {
text-align: right;
font-size: 24rpx;
color: #999;
}
.head_rimg {
margin-left: 10rpx;
}
.head_rimg image {
width: 9rpx;
height: 18rpx;
}
/* 品牌合作start */
.head_con {
margin-top: 20rpx;
border-radius: 10rpx;
background-color: #ffffff;
}
.know {
display: block;
background: #fff;
}
.know:nth-child(1) {
border-top-left-radius: 10rpx;
border-top-right-radius: 10rpx;
}
.know:last-child {
border-bottom-right-radius: 10rpx;
border-bottom-left-radius: 10rpx;
}
.know_row {
padding: 30rpx 0;
height: 140rpx;
border-bottom: 2rpx solid #ebebeb;
box-sizing: initial;
}
.know:last-child .know_row {
border-bottom: 0;
}
.know_row_img {
width: 255rpx;
height: 140rpx;
border-radius: 15rpx;
display: inline-block;
}
.know_row_img image {
height: 100%;
width: 100%;
}
.know_row_text {
font-family: PingFang-SC-Medium;
font-size: 28rpx;
font-weight: 400;
font-stretch: normal;
line-height: 36rpx;
color: #333;
display: -webkit-box !important;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
overflow: hidden;
}
.know_row_time {
text-align: right;
font-family: PingFang-SC-Medium;
font-size: 28rpx;
font-weight: 400;
font-stretch: normal;
line-height: 36rpx;
color: #999;
}
/* 品牌合作end */
.shop_key {
background: #fff;
overflow-x: scroll;
-webkit-overflow-scrolling: touch;
padding: 34rpx 0 15rpx 0;
border-radius: 10rpx;
display: flex;
width: 100%;
}
.shop_row {
margin-left: 30rpx;
text-align: center;
width: 180rpx;
}
.shop_row:last-child {
margin-right: 30rpx;
}
.shop_img {
width: 180rpx;
height: 160rpx;
text-align: center;
}
.shop_img image {
width: 180rpx;
height: 160rpx;
}
.shop_name {
font-size: 24rpx;
color: #333;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
margin-top: 5rpx;
}
.shop_pri {
font-size: 26rpx;
color: #ff2b19;
}
.know image {
height: 140rpx;
background-color: #fff;
border-radius: 10rpx;
}
.my_video {
padding: 0 30rpx;
width: 100%;
}
.ys_video {
width: 100% !important;
height: 314rpx;
}
.my_video image {
height: 100%;
width: 100%;
border-radius: 10rpx;
}
.tips_video {
position: fixed;
top: 0;
z-index: 99999;
height: 100%;
width: 100%;
background-color: rgba(0, 0, 0, 0.75);
}
.video_cen {
text-align: center;
}
.video_cen video {
width: 620rpx;
height: 400rpx;
display: block;
margin: 0 auto;
}
.video_cen image {
width: 69rpx;
height: 69rpx;
display: block;
margin: 20rpx auto 0;
}

View File

@@ -0,0 +1 @@
cd801f52-25dd-41ef-a34f-90a8c2999418

View File

@@ -0,0 +1,81 @@
// pages/joinWardrobe/joinWardrobe.js
const app = getApp();
Page({
/**
* 页面的初始数据
*/
data: {
system: app.globalData.system, //设备相关信息
pageTitle: "申请加入衣柜洗", //头部标题
isBack: true,//显示返回
},
// 打开弹出框
onTap() {
wx.navigateTo({
url:'/pages/buyCabinets/buyCabinets'
})
},
// 拨打电话
makePhoneCall(e) {
let tel = e.currentTarget.dataset.telnum
wx.makePhoneCall({
phoneNumber: tel
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

View File

@@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@@ -0,0 +1,63 @@
<!-- 头部导航 -->
<nav-bar isBack="{{isBack}}" pageTitle="{{pageTitle}}" system="{{system}}"></nav-bar>
<!-- pages/joinWardrobe/joinWardrobe.wxml -->
<view class="joinWardrobe">
<view class="join_bc">
<view class="join_t">
<view class="join_tit">衣柜洗会员权益</view>
<view class="join_cen">
<view class="join_cen_r1">
<image src="http://cdn.yishaxiyi.com/080e62fef6a9330a9948d5cb2f032888.png" />
<view class="join_cen_text">办理即送</view>
<view class="join_cen_text">¥999洗衣卡</view>
</view>
<view class="join_cen_r1">
<image src="http://cdn.yishaxiyi.com/4e40dc8f86a60568d7bc3149352e952c.png" />
<view class="join_cen_text">价值¥1099</view>
<view class="join_cen_text">智能衣柜免费送</view>
</view>
<view class="join_cen_r1">
<image src="http://cdn.yishaxiyi.com/c24a2525e541efaaa9c72d4315b7b332.png" />
<view class="join_cen_text">不定期享受</view>
<view class="join_cen_text">大额优惠券</view>
</view>
<view class="join_cen_r1">
<image src="http://cdn.yishaxiyi.com/d8bd9f102c3e7faf94b8bb27408d9b15.png" />
<view class="join_cen_text">72h</view>
<view class="join_cen_text">极速洗送服务</view>
</view>
</view>
</view>
</view>
<view style="height: 620rpx;"></view>
<view class="text_row">
<view class="text_row_tit">Q1 什么是衣柜洗?</view>
<view class="text_row_t mt10">
衣柜洗是伊莎洗衣为了更好服务用户推出的会员专享服务。加入衣柜洗的用户,可将免费获得智能洗衣柜,可放置再您家门口。每次洗护仅需将衣物放入衣柜,会有物流人员送去工厂,洗护完成包装好送回衣柜。省时、省力、更省心!
</view>
</view>
<view class="text_row">
<view class="text_row_tit">Q2 衣柜洗怎么用,复杂吗?</view>
<view class="text_row_t mt10">加入衣柜洗会员后,您只需通过伊莎洗衣小程序打开智能洗衣柜,将衣物放入衣柜即可,操作非常简单。</view>
</view>
<view class="text_row">
<view class="text_row_tit">Q3 怎么知道衣物洗好了?</view>
<view class="text_row_t mt10">您通过伊莎洗衣小程序下单后,进入我的页面,可查看订单进度哦,衣物状态一目了然。</view>
</view>
<view class="text_row">
<view class="text_row_tit">Q4 对洗涤效果不满意怎么办?</view>
<view class="text_row_t mt10">您收到衣物后,可在订单详情页面点击相应衣物的反洗按钮,享受免费反洗。</view>
</view>
<view class="text_row">
<view class="text_row_tit">Q5 衣柜放在家门口安全吗?</view>
<view class="text_row_t mt10">智能洗衣柜采用先进的智能锁必须由绑定后的小程序用户在距离衣柜5米以内开锁是相对安全的哦</view>
</view>
<view class="text_row">
<view class="text_row_tit">Q6 下单后多久能送回?</view>
<view class="text_row_t mt10">我们是72小时洗净护理完成包装好送回的。</view>
</view>
</view>
<!-- 申请加入 -->
<button class="btn" bindtap="onTap">这么好,我要申请加入</button>
<!-- toasta提示 -->
<i-toast id="toast" />

View File

@@ -0,0 +1,75 @@
/* pages/joinWardrobe/joinWardrobe.wxss */
.joinWardrobe{
margin-bottom: 180rpx;
}
.join_bc{
height: 350rpx;
background: url("http://cdn.yishaxiyi.com/7e367aab86ef51ab4fa6e804b0060e2a.png") no-repeat center;
background-size: 100%;
position: relative;
}
.join_t{
position: absolute;
top: 255rpx;
left: 50%;
width: 646rpx;
height: 700rpx;
margin-left: -323rpx;
background-color: #ffffff;
box-shadow: -4rpx 3rpx 30rpx 0px rgba(0, 0, 0, 0.1);
border-radius: 20rpx;
}
.join_tit{
font-size: 36rpx;
color: #333333;
font-weight: 500;
margin-top: 72rpx;
text-align: center;
}
.join_cen{
margin-top: 25rpx;
}
.join_cen_r1{
margin-top: 45rpx;
width: 50%;
display: inline-block;
text-align: center;
}
.join_cen_r1 image{
width: 130rpx;
height: 130rpx;
}
.join_cen_text{
font-family: PingFang-SC-Medium;
font-size: 26rpx;
font-weight: 400;
color: #333333;
}
.text_row{
width: 646rpx;
margin: 30rpx auto 0;
}
.text_row_t{
font-family: PingFang-SC-Medium;
font-size: 26rpx;
color: #999999;
}
.btn{
position: fixed;
bottom: 40rpx;
left: 50%;
width: 690rpx;
height: 100rpx;
margin-left: -345rpx;
background-image: linear-gradient(
#1dbf53,
#1dbf53),
linear-gradient(
#2fd152,
#2fd152);
background-blend-mode: normal,
normal;
border-radius: 50rpx;
font-size: 38rpx;
color: #ffffff;
}

View File

@@ -0,0 +1 @@
6c03b6c4-280c-4ee9-a45b-b5e3a0df45e7

View File

@@ -0,0 +1,444 @@
// pages/laundry/laundry.js
const app = getApp();
const regeneratorRuntime = app.loadAsync()
const model = app.loadModel("index")
const util = app.loadUtils("util")
const http = app.loadHttp()
Page({
/**
* 页面的初始数据
*/
data: {
system: app.globalData.system, //设备相关信息
pageTitle: "洗衣", //头部标题
isAccount: false, // 公众号
isBack: true,//显示返回
visible: false,//购物弹窗
isTips: true,//顶部小提示
laundryBig: [
{
id: null,
name: ""
}
],//洗衣大分类
bigSelect: null,//大分类的选中
laundrySom: [],//洗衣小分类
cart: [],//购物车数据
allPrice: 0,//全部价格
page: 1,//分页
isPage: false,
group_type: 0,//团体id
type: 1,//如果是1则是普洗2是工服
},
// 获取大分类列表
async getLaundryBig() {
let data = {
group_type: this.data.group_type,
type: this.data.type
}
let res = await http.http.request2({ url: `${http.api.shopCategory}`, method: "GET", data: data })
this.setData({
laundryBig: res.data.data,
bigSelect: this.data.bigSelect != null ? this.data.bigSelect : res.data.data[0].id
})
this.getLaundrySom()
},
// 获取小分类列表
async getLaundrySom() {
if (this.data.isPage) {
wx.showToast({
title: '已经到底了哦!',
icon: 'none',
duration: 2000
})
return
}
wx.showLoading({
title: '加载中',
})
let res = await http.http.request1({ url: `${http.api.shopProduct}/${this.data.bigSelect}`, method: "GET", data: { page: this.data.page, limit: 10 } })
let som = res.data.data.list
let laundrySom = this.data.laundrySom
if (som.length <= 0) {
wx.hideLoading()
wx.showToast({
title: '暂无数据',
icon: 'none',
duration: 2000
})
return
}
if (som.length < 10) {
this.setData({
isPage: true
})
}
som.map((v, i) => {
som[i].num = 0
})
this.setData({
laundrySom: [...laundrySom, ...som],
})
this.getCart()
wx.hideLoading()
},
// scroll-view 触底
bindscrolltolower() {
this.setData({
page: ++this.data.page
})
this.getLaundrySom()
},
//弹出层开启关闭
onClose() {
this.setData({
visible: !this.data.visible
})
},
// 打开弹出层
onOpen() {
this.setData({
visible: true
})
},
// 大分类选中
bigType(e) {
this.setData({
bigSelect: e.currentTarget.dataset.id,
page: 1,
isPage: false,
laundrySom: []
})
this.getLaundrySom()
},
// 把最新的购物车数据set到本地缓存
async setCart() {
model.storage.setStorage("cart", this.data.cart)
},
// 获取缓存中的购物车数据
async getCart() {
let cartStorage = await model.storage.getSetting("cart") || []
let laundrySom = this.data.laundrySom
laundrySom.map((v, i) => {
let m = cartStorage.filter(n => {
return v.id == n.id
})
if (m.length > 0) {
laundrySom[i] = m[0]
}
})
this.setData({
laundrySom: laundrySom,
cart: cartStorage
})
this.calComPri()
},
// 加商品方法
plusShop(e) {
let item = e.currentTarget.dataset.item //当前要添加的商品
let cart = this.data.cart //购物车
let Som = this.data.laundrySom // 商品列表
let num = ++item.num
if (cart.length == 0) {
item.num = num
this.setData({
cart: [item]
})
} else {
// 如果cart循环完还没有重复项则把item push进去
for (let i = 0; i < cart.length; i++) {
// 点击的时候判断购物车是否有窗帘套餐
if (cart[i].id == 17018 || cart[i].id == 17019 || cart[i].id == 17020) {
if (item.id == 17018 || item.id == 17019 || item.id == 17020) {
console.log("允许继续添加跟多的窗帘商品")
} else {
model.msg.dataMsg({
content: "预售套餐不与其他衣物同时下单哦",
type: "warning"
});
Som.map((v, i) => {
Som[i].num = 0
})
this.setData({
cart: [],
laundrySom: Som
})
this.setCart()
this.calComPri()
return
}
// 如果购物车都是普通套餐
} else {
// 之后你在普通套餐的购物车中添加了窗帘淘宝
if (item.id == 17018 || item.id == 17019 || item.id == 17020) {
model.msg.dataMsg({
content: "预售套餐不与其他衣物同时下单哦",
type: "warning"
});
Som.map((v, i) => {
Som[i].num = 0
})
this.setData({
cart: [],
laundrySom: Som
})
this.setCart()
this.calComPri()
return
}
}
if (cart[i].id == item.id) {
cart[i].num = num
break;
}
if (cart.length - 1 == i) {
cart.push(item)
}
}
this.setData({
cart: cart
})
}
Som.map((v, i) => {
if (v.id == item.id) {
Som[i].num = num
}
})
this.setData({
laundrySom: Som
})
// 每当修改购物车时把最近数据放到本地缓存
this.setCart()
this.calComPri()
},
// 减商品的方法
reduceShop(e) {
let that = this
let item = e.currentTarget.dataset.item //当前要添加的商品
let cart = that.data.cart //购物车
let Som = that.data.laundrySom // 商品列表
let num = --item.num
cart.map((v, i) => {
if (v.id == item.id) {
cart[i].num = num
if (cart[i].num <= 0) {
cart.splice(i, 1)
}
}
})
Som.map((v, i) => {
if (v.id == item.id) {
Som[i].num = num
}
})
// 判断如果num减少到0时提示是否删除
if (num == 0) {
wx.showModal({
title: '删除商品',
content: '点击确定删除',
confirmText: "确认",
cancelText: "取消",
success(res) {
if (res.confirm) {
that.setData({
laundrySom: Som,
cart: cart
})
// 每当修改购物车时把最近数据放到本地缓存
that.setCart()
that.calComPri()
}
}
})
} else {
that.setData({
laundrySom: Som,
cart: cart
})
// 每当修改购物车时把最近数据放到本地缓存
that.setCart()
this.calComPri()
}
},
// 清空购物车
emptyCart() {
let laundrySom = this.data.laundrySom
let that = this
if (this.data.cart.length <= 0) {
model.msg.dataMsg({
content: "暂无商品",
type: "warning"
})
return
}
wx.showModal({
title: '清空购物车',
content: '点击确定清空',
confirmText: "确认",
cancelText: "取消",
success(res) {
if (res.confirm) {
laundrySom.map((v, i) => {
laundrySom[i].num = 0
})
that.setData({
cart: [],
laundrySom: laundrySom
})
that.setCart()
that.onClose()
that.calComPri()
// 删除成功提示用户
model.msg.dataMsg({
content: "删除成功",
type: "success"
})
}
}
})
},
// 点击确定
async _sure() {
let isCurtains = 0; // 0 没有窗帘, 1 有窗帘
let laundrySom = this.data.laundrySom
let userInfo = app.globalData.userInfo
let cart = this.data.cart
let that = this
if (cart.length > 0) {
// 只要购物车中第一条商品是窗帘其中一个
if(cart[0].id == 17018 || cart[0].id == 17019 || cart[0].id == 17020 ) {
isCurtains = 1
} else {
isCurtains = 0
}
let isLogin = await util.isLoginJump()
if (isLogin == 1) return;
} else if (cart.length <= 0) {
return
}
// if (userInfo.cupboard_num != -1) {
// wx.navigateTo({
// url: "/user/wardrobe/wardrobe"
// })
// } else {
wx.navigateTo({
url: "/user/appointment/appointment?shopCart=" + JSON.stringify(cart) + '&type=' + this.data.type + '&group_type=' + this.data.group_type + '&isCurtains=' + isCurtains
})
// }
// laundrySom.map((v, i) => {
// laundrySom[i].num = 0
// })
// that.setData({
// cart: [],
// laundrySom: laundrySom
// })
// that.setCart()
},
// 计算商品价格
calComPri() {
let cart = this.data.cart
let all = 0
cart.map((v, i) => {
all += v.num * v.price
})
this.setData({
allPrice: all.toFixed(2)
})
},
// 关闭顶部小提示
closeTips() {
this.setData({
isTips: false
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
if (options.id == "36") {
console.log("36")
// true 从公众号进入
this.setData({
isAccount: true
})
}
// 进入页面清除缓存中的购物车数据
model.storage.setStorage("cart", [])
// 如果有group_type说明是团体用户
if (!!options.group_type) {
this.setData({
group_type: options.group_type,
type: options.type
})
}
if (!!options.id) {
this.setData({
bigSelect: options.id
})
} else {
this.setData({
bigSelect: this.data.laundryBig[0].id
})
}
this.getLaundryBig()
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
this.calComPri()
// TODO 不需要重复请求
if (this.data.isAccount) {
this.getLaundryBig()
}
// this.getLaundryBig()
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
});

View File

@@ -0,0 +1,7 @@
{
"navigationBarTextStyle": "black",
"usingComponents": {
"wux-popup":"../../extend/wux/dist/popup/index"
},
"disableScroll": true
}

View File

@@ -0,0 +1,150 @@
<!-- 头部导航 -->
<nav-bar isBack="{{isBack}}" pageTitle="{{pageTitle}}" system="{{system}}" />
<!-- pages/laundry/laundry.wxml -->
<view class="laundry">
<view class="laundry" wx:if="{{type == 1}}">
<view class="laundry_l fl">
<view class="laundry_big">
<view
wx:for="{{ laundryBig }}"
wx:key="index"
data-id="{{item.id}}"
class="big_row {{bigSelect == item.id ? 'big_active' : ''}}"
bind:tap="bigType"
>
<span class="big_row_p">
{{item.name}}
<!-- <span class="corner">21</span> -->
</span>
</view>
</view>
</view>
<!-- 开始 -->
<view class="laundry_r fl dis-flex1">
<!-- <view class="laundry_title mt30" wx:if="{{isTips}}">
<view class="laundry_title_l flex-con3">
<image class="mr10" src="/static/img/icon/ts.png" />
衣物含可拆卸毛领的,毛领单独计费哦~
</view>
<view class="laundry_title_r" bind:tap="closeTips">
<image src="/static/img/icon/tsclose.png" />
</view>
</view> -->
<!-- 小分类的标题 -->
<!-- <view class="laundry_name mt35 ml10 mb20"></view> -->
<!-- <view class="flex1"> -->
<!-- <scroll-view scroll-y style="height: auto;"> -->
<view class="scroll_view_f">
<scroll-view bindscrolltolower="bindscrolltolower" scroll-y="{{true}}" class="laundry_shop flex1">
<view class="laundry_shop_row mb50" wx:for="{{ laundrySom }}" wx:key="index" data-item="{{item}}" bind:tap="plusShop">
<view class="laundry_shop_row_l">
<view class="laundry_shop_img fl">
<image src="{{item.image}}" lazy-load />
</view>
<view class="laundry_shop_info fl ml10">
<view class="laundry_shop_name">{{item.name}}</view>
<view class="laundry_shop_pri mt20">
<span>¥</span>
{{item.price}}
</view>
</view>
</view>
<view class="laundry_shop_num">
<view class="shop_num_cen flex-con5">
<!-- 这是加 -->
<view class="num_img">
<image src="/static/img/icon/j2.png" />
</view>
<!-- <view wx:if="{{ item.num > 0 }}" class="num_c">{{ item.num }}</view> -->
<!-- 这是减 -->
<!-- <view bind:tap="reduceShop" data-item="{{item}}" wx:if="{{ item.num > 0 }}" class="num_img">
<image src="/static/img/icon/j1.png" />
</view> -->
</view>
</view>
</view>
</scroll-view>
</view>
<view style="height:{{system.statusHeight+system.titleHeight+'px'}};" />
<view style="height:100rpx;" />
</view>
<!-- 结束 -->
</view>
<!-- 工服排版 -->
<view class='work dis-flex' wx:if="{{type == 2}}" style="padding-bottom:{{system.statusHeight+system.titleHeight+'px'}}">
<scroll-view scroll-y="{{true}}" class='work_list flex1'>
<view
class='work_list_li'
wx:for="{{laundrySom}}"
wx:key="index"
bind:tap="plusShop"
data-item="{{item}}"
>
<view class='work_list_li_row'>
<view class='work_img'>
<image src="{{item.image}}" lazy-load />
</view>
<view class='work_title mt10'>{{item.name}}</view>
<view class='dis-flex work_cen mt10'>
<view class='flex2 flex-con2'>¥{{item.price}}/件</view>
<view class='work_add flex1'>
<image src="/static/img/icon/xyl2.png" />
</view>
</view>
</view>
</view>
</scroll-view>
</view>
<view class="shopCart">
<view class="shopCart_cen">
<view class="shopCart_img">
<view class="shopCart_imgs" bind:tap="onClose">
<image src="{{cart <= 0 ? '/static/img/icon/xyl1.png': '/static/img/icon/xyl2.png'}}" />
<span>{{cart.length}}</span>
</view>
</view>
<span class="cartAllPrice" wx:if="{{ allPrice > 0 }}">¥{{allPrice}}</span>
<span wx:else>洗衣篮是空的哦</span>
</view>
<view class="shopCart_sub {{ cart.length >0 ?'shopCart_sub_active':'' }}" bind:tap="_sure">
确认下单
</view>
</view>
</view>
<!-- 购物车弹出 -->
<wux-popup position="bottom" visible="{{ visible }}" catchtap="onClose">
<view class="cart" catchtap="onOpen">
<view class="cart_title" bind:tap="emptyCart">
<view class="cart_title_l">已选商品</view>
<view class="cart_title_r flex-con5">
清空
<image class="mr10" src="/static/img/icon/sc.png" />
</view>
</view>
<view class="cart_cen">
<view class="cart_shop_row" wx:for="{{ cart }}" wx:key="index">
<view class="cart_shop_info">
<view class="cart_shop_info_l">{{item.name}}</view>
<view class="cart_shop_info_r">
<span>¥</span>
{{item.price}}
</view>
</view>
<view class="cart_shop_num">
<view class="cart_shop_num1 flex-con5">
<view data-item="{{item}}" bind:tap="plusShop" class="cart_shop_img">
<image src="/static/img/icon/j2.png" />
</view>
<view class="cart_shop_c">{{ item.num }}</view>
<view data-item="{{item}}" bind:tap="reduceShop" class="cart_shop_img">
<image src="/static/img/icon/j1.png" />
</view>
</view>
</view>
</view>
</view>
</view>
</wux-popup>
<!-- toasta提示 -->
<i-toast id="toast" />

View File

@@ -0,0 +1,420 @@
/* pages/laundry/laundry.wxss */
page {
height: 100%;
}
.laundry {
height: 100%;
width: 100%;
border-top: 2rpx solid #ebebeb;
}
.laundry_l {
height: 100%;
width: 25%;
}
.laundry_r {
padding: 0 29rpx 0 11rpx;
height: 100%;
width: 75%;
background-color: #fff;
}
.scroll_view_f{
flex: 1;
position: relative;
margin-top: 10rpx;
}
.big_row {
width: 100%;
height: 135rpx;
text-align: center;
line-height: 135rpx;
position: relative;
font-size: 28rpx;
color: #333;
}
.big_active {
background-color: #fff;
font-size: 32rpx;
font-weight: 600;
color: #000;
}
.big_active::after {
content: "";
position: absolute;
left: 0;
top: 50%;
margin-top: -18rpx;
width: 8rpx;
height: 36rpx;
background-image: linear-gradient(#1dbf53, #1dbf53), linear-gradient(#13bf3e, #13bf3e);
background-blend-mode: normal, normal;
border-radius: 2rpx;
}
.big_row_p {
position: relative;
}
.corner {
position: absolute;
right: -9rpx;
top: -13rpx;
width: 30rpx;
height: 30rpx;
background-color: #ff4838;
font-size: 20rpx;
color: #fff;
border-radius: 50%;
overflow: hidden;
text-align: center;
line-height: 30rpx;
}
.laundry_title {
padding: 20rpx 21rpx 20rpx 29rpx;
display: flex;
background-color: #f5f5f5;
border-radius: 10rpx;
}
.laundry_title view {
display: block;
}
.laundry_title_l {
flex: 1;
font-size: 20rpx;
color: #999;
}
.laundry_title_l image {
width: 22rpx;
height: 23rpx;
vertical-align: middle;
}
.laundry_title_r image {
width: 18rpx;
height: 18rpx;
}
.laundry_name {
font-size: 22rpx;
color: #666;
}
.laundry_shop {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
overflow-y: scroll;
-webkit-overflow-scrolling: touch;
}
.laundry_shop_row {
height: 140rpx;
display: flex;
padding-left: 17rpx;
padding-right: 8rpx;
}
.laundry_shop_row_l {
flex: 1;
display: flex;
}
.laundry_shop_img image {
height: 140rpx;
width: 140rpx;
}
.laundry_shop_info {
flex: 1;
}
.laundry_shop_name {
font-size: 28rpx;
color: #333;
}
.laundry_shop_pri span {
font-size: 20rpx;
color: #ff4838;
}
.laundry_shop_pri {
font-size: 28rpx;
color: #ff4838;
}
.laundry_shop_num {
width: 60rpx;
height: 100%;
display: inline-block;
position: relative;
}
.shop_num_cen {
position: absolute;
bottom: 0;
left: 0;
right: 0;
display: flex;
}
.num_c {
text-align: center;
flex: 1;
height: 45rpx;
line-height: 45rpx;
font-weight: 500;
font-size: 28rpx;
color: #333;
}
.num_img {
display: inline-block;
width: 45rpx;
height: 45rpx;
border-radius: 50%;
}
.num_img image {
height: 100%;
width: 100%;
}
.bot {
height: 100rpx;
width: 100%;
}
.shopCart {
width: 100%;
background-color: #fff;
box-shadow: 0px -8rpx 20rpx 0rpx rgba(14, 5, 9, 0.06);
position: fixed;
bottom: 0;
left: 0;
display: flex;
z-index: 99999;
padding-bottom: calc(env(safe-area-inset-bottom) / 2);
height: calc(100rpx + env(safe-area-inset-bottom) / 2);
}
.shopCart_cen {
flex: 1;
padding-left: 150rpx;
position: relative;
line-height: 100rpx;
}
.shopCart_cen span {
font-size: 28rpx;
color: #999;
}
.shopCart_sub {
display: inline-block;
width: 220rpx;
height: 100rpx;
background-color: #ccc;
text-align: center;
line-height: 100rpx;
font-size: 32rpx;
color: #fff;
}
.shopCart_cen .shopCart_img {
position: absolute;
left: 30rpx;
bottom: 20rpx;
width: 100rpx;
height: 100rpx;
display: flex;
border-radius: 50%;
/* overflow: hidden; */
}
.shopCart_imgs {
flex: 1;
position: relative;
}
.shopCart_imgs image {
height: 100%;
width: 100%;
}
.shopCart_imgs span {
position: absolute;
right: -2rpx;
top: -2rpx;
width: 30rpx;
height: 30rpx;
font-size: 20rpx;
color: #fff;
text-align: center;
line-height: 30rpx;
background-color: #ff4838;
border-radius: 50%;
}
.cart {
height: 370rpx;
width: 100%;
margin-bottom: 100rpx;
}
.cart_cen {
height: 290rpx;
width: 100%;
overflow-y: scroll;
}
.cart_title {
height: 80rpx;
line-height: 80rpx;
background-color: #f5f5f4;
display: flex;
padding: 0 30rpx;
}
.cart_title_l {
flex: 5;
font-size: 32rpx;
color: #999;
text-align: left;
}
.cart_title_r {
flex: 1;
text-align: right;
font-size: 26rpx;
color: #999;
}
.cart_title_r image {
width: 28rpx;
height: 28rpx;
/* vertical-align: middle; */
}
.cart_shop_row {
height: 45rpx;
display: flex;
line-height: 45rpx;
padding: 0 30rpx;
margin-top: 25rpx;
}
.cart_shop_info {
flex: 1;
display: flex;
}
.cart_shop_info_l {
flex: 3;
text-align: left;
font-weight: 500;
font-size: 32rpx;
color: #333;
}
.cart_shop_info_r {
flex: 2;
text-align: right;
padding-right: 20rpx;
font-size: 32rpx;
color: #ff4838;
}
.cart_shop_info_r span {
font-size: 22rpx;
color: #ff4838;
}
.cart_shop_num {
display: inline-block;
width: 160rpx;
}
.cart_shop_num1 {
display: flex;
}
.cart_shop_c {
flex: 1;
text-align: center;
}
.cart_shop_img {
display: inline-block;
}
.cart_shop_img image {
height: 45rpx;
width: 45rpx;
}
.cartAllPrice {
font-family: PingFang-SC-Bold;
font-size: 36rpx !important;
color: #ff4838 !important;
font-weight: 600;
}
.shopCart_sub_active {
background: #1dbf53;
color: #fff;
}
/* 工服列表样式 */
.work{
margin-top: 10rpx;
padding: 0 10rpx;
height: 100%;
}
.work_list{
padding-bottom: 100rpx;
}
.work_list_li{
width: 33.33%;
padding: 10rpx;
display: inline-block;
}
.work_list_li_row{
background-color: #ffffff;
}
.work_title{
text-align: center;
font-size:24rpx;
font-weight:400;
color:rgba(52,52,52,1);
}
.work_img image{
width: 100%;
height: 230rpx;
}
.work_cen{
padding: 0 10rpx;
}
.work_cen view{
font-size: 26rpx;
font-weight: 500;
color: rgba(255,51,51,1);
}
.work_add{
text-align: right;
}
.work_add image{
height: 50rpx;
width: 50rpx;
}

View File

@@ -0,0 +1 @@
1cdb65d7-3754-4f3a-b5e2-de446e023d16

View File

@@ -0,0 +1,187 @@
// pages/login.js
const app = getApp();
const config = app.loadConfig()
const regeneratorRuntime = app.loadAsync()
const model = app.loadModel("index")
const http = app.loadHttp()
const { StorageSync } = app.loadModel("getSetting")
const storage = new StorageSync()
Page({
/**
* 页面的初始数据
*/
data: {
system: app.globalData.system, //设备相关信息
pageTitle: "登录", //头部标题
isBack: true,//显示返回
canIUse: wx.canIUse('button.open-type.getUserInfo'),
isLogin: false,
closbtn: '取消登陆'
},
onAuth() {
return new Promise(async (resolve,reject) => {
wx.showLoading({
title: '登录中',
})
let that = this
let inviteId = await storage.getSetting('inviteId')
// 一键预约页面保存的from在登陆时使用
let from = await storage.getSetting('from')
wx.login({
success(rel) {
if (rel.code) {
wx.getSetting({
success: (res) => {
if (res.authSetting['scope.userInfo']) {
wx.getUserInfo({
success: async (res) => {
let userInfo = {
nickname: res.userInfo.nickName,
avatar: res.userInfo.avatarUrl,
encryptedData: res.encryptedData,
iv: res.iv
}
if (!!inviteId) {
userInfo.scene = inviteId
}
if (!!from) {
userInfo.from = from
}
wx.request({
url: `${config.baseUrl}/login`, method: "POST", data: { code: rel.code, ...userInfo },
success(rel) {
storage.setStorage("token", rel.data.data.token)
that.setData({
isLogin: true,
closbtn: '返 回'
})
wx.hideLoading()
resolve()
}
})
}
})
} else {
wx.hideLoading()
wx.showToast({
title: '取消授权',
icon: 'none',
duration: 2000
})
}
}, fail() {
wx.hideLoading()
}
})
} else {
wx.hideLoading()
console.log('登录失败!' + res.errMsg)
}
}
})
})
},
// 手机回调
// 如果已经授权个人信息未授权手机号,那么办卡时将跳到登陆,授权手机号
async telNum(e) {
if (!!e.detail.iv) {
let res = await http.http.request2({ url: `${http.api.getTel}`, method: "POST", data: { encryptedData: e.detail.encryptedData, iv: e.detail.iv } })
if (res.data.status == 1) {
if (res.data.data == 1) {
await this.onAuth()
await this.personalInfo()
} else {
this.personalInfo()
}
}
}
},
onTap() {
wx.navigateBack({
delta: 1
})
},
// 获取个人信息
async personalInfo() {
let user = await http.http.request2({ url: `${http.api.personalInfo}`, method: "POST" })
app.globalData.userInfo = user.data.data
setTimeout(() => {
wx.navigateBack({
delta: 1
})
}, 1000)
},
// 判断本地是否有token 如果没有token显示授权登陆
async isLogin() {
let that = this
let token = await storage.getSetting('token')
if (!!token) {
wx.getSetting({
success(res) {
if (res.authSetting['scope.userInfo']) {
that.setData({
isLogin: true,
closbtn: '返 回'
})
}
}
})
}
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.isLogin()
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

View File

@@ -0,0 +1,4 @@
{
"navigationBarTextStyle": "black",
"usingComponents": {}
}

View File

@@ -0,0 +1,22 @@
<!-- 头部导航 -->
<nav-bar isBack="{{isBack}}" pageTitle="{{pageTitle}}" system="{{system}}"></nav-bar>
<!-- pages/login.wxml -->
<view class="auth">
<view class="userImg">
<open-data type="userAvatarUrl"></open-data>
</view>
<view class="title">微信授权页面</view>
<view class="describe">此页面是微信授权页面,点击下方按钮弹出授权或跳转页面</view>
<button class="btn closbtn" bindtap="onTap">{{closbtn}}</button>
<button hidden="{{isLogin}}" class="btn" open-type='getUserInfo' bindgetuserinfo='onAuth'>
授权登陆
</button>
<button hidden="{{!isLogin}}" class="btn" open-type='getPhoneNumber' bindgetphonenumber='telNum'>
授权手机
</button>
<navigator wx:if="{{!canIUse}}" class="btn" url="/pages/auth/auth" open-type="reLaunch" hover-class="other-navigator-hover">
已经授权点击调转
</navigator>
</view>
<!-- toasta提示 -->
<i-toast id="toast" />

View File

@@ -0,0 +1,73 @@
/* pages/login.wxss */
page {
height: 100%;
display: table;
}
.auth {
margin-top: 0;
text-align: center;
display: table-cell;
flex-direction: column;
flex-wrap: wrap;
justify-content: center;
align-items: flex-start;
padding: 100rpx;
vertical-align: middle;
}
.userImg {
border-radius: 50%;
border: 1px solid #fff;
background-color: #fff;
margin: 0 0 60rpx;
display: inline-block;
width: 200rpx;
height: 200rpx;
line-height: 0;
}
.title {
display: inline-block;
width: 100%;
margin: 0 0 60rpx;
}
.describe {
color: #a7aaa9;
font-size: 26rpx;
margin: 0 0 60rpx;
border-radius: 50%;
text-align: center;
display: inline-block;
width: 100%;
}
.btn {
padding: 0 60rpx;
background-color: #19be6b;
margin: 20rpx 20rpx 200rpx;
text-align: center;
vertical-align: middle;
touch-action: manipulation;
cursor: pointer;
background-image: none;
white-space: nowrap;
user-select: none;
font-size: 14px;
border: 0 !important;
position: relative;
text-decoration: none;
height: 44px;
line-height: 44px;
background: #19be6b !important;
color: #fff !important;
display: inline-block;
border-radius: 10rpx;
border-radius: 666rpx;
}
.closbtn{
background-color: rgb(136,136,141) !important;
border-color: rgb(136,136,141) !important;
color: #fff !important;
}

View File

@@ -0,0 +1 @@
61520864-e1b4-4160-93fd-d7fa5c7cfced

View File

@@ -0,0 +1,78 @@
// pages/membershipExclusive/membershipExclusive.js
const app = getApp();
const regeneratorRuntime = app.loadAsync()
const util = app.loadUtils("util")
Page({
/**
* 页面的初始数据
*/
data: {
system: app.globalData.system, //设备相关信息
pageTitle: "会员专享", //头部标题
isBack: true,//显示返回
},
async goUrl(e) {
let url = e.currentTarget.dataset.url
let isLogin = await util.isLoginJump()
if (isLogin == 1) return;
wx.navigateTo({
url: url
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

View File

@@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@@ -0,0 +1,51 @@
<!-- 头部导航 -->
<nav-bar isBack="{{isBack}}" pageTitle="{{pageTitle}}" system="{{system}}"></nav-bar>
<!-- pages/membershipExclusive/membershipExclusive.wxml -->
<view class="membershipExclusive">
<view class="memExc-bac">
<image src="http://cdn.yishaxiyi.com/d2a8df1540448231b69ff2afa49b6917.png" />
</view>
<view class="exclusive">
<view class="exclusive-tit">会员权益</view>
<view class="exclusive-cen">
<view class="exclusive-cen-vip">
<view class="flex1">
<view class="exclusive-img">
<image class="discount" src="/static/img/icon/discount-icon.png" />
</view>
<view class="exclusive-p">折扣洗护</view>
</view>
<view class="flex1">
<view class="exclusive-img">
<image class="welfare" src="/static/img/icon/welfare-icon.png" />
</view>
<view class="exclusive-p">专属福利</view>
</view>
<view class="flex1">
<view class="exclusive-img">
<image class="activity" src="/static/img/icon/activity-icon.png" />
</view>
<view class="exclusive-p">专享活动</view>
</view>
<view class="flex1">
<view class="exclusive-img">
<image class="service" src="/static/img/icon/service-icon.png" />
</view>
<view class="exclusive-p">专属客服</view>
</view>
</view>
</view>
</view>
<view class="exclusive mt40">
<view class="exclusive-tit">办卡说明</view>
<view class="exclusive-cen">
<view class="apply">
<view class="apply-p">1.多种会员优惠卡供您选择,伊莎洗衣所有门店适用且长期有效;</view>
<view class="apply-p">2.卡内余额不足可自行充值,仍享受原优惠折扣,也可办理惊喜升级跳;</view>
</view>
</view>
</view>
<view class="sub mb50" data-url="/user/balance/balance" bind:tap="goUrl">立即办理</view>
</view>
<!-- toasta提示 -->
<i-toast id="toast" />

View File

@@ -0,0 +1,97 @@
/* pages/membershipExclusive/membershipExclusive.wxss */
.memExc-bac {
width: 100%;
height: 245rpx;
display: flex;
}
.memExc-bac image {
height: 245rpx;
flex: 1;
}
.exclusive {
padding: 50rpx 0;
margin: 40rpx 30rpx 0;
background-color: #fff;
border-radius: 10rpx;
}
.exclusive-tit {
position: relative;
text-align: center;
font-family: PingFang-SC-Bold;
font-size: 36rpx;
font-weight: 400;
color: #333;
}
.exclusive-tit::before {
content: "";
position: absolute;
bottom: -15rpx;
left: 50%;
height: 5rpx;
width: 80rpx;
margin-left: -40rpx;
background-color: #28cf60;
}
.exclusive-cen {
margin-top: 68rpx;
}
.exclusive-cen-vip {
display: flex;
height: 100rpx;
}
.exclusive-img {
text-align: center;
}
.exclusive-p {
margin-top: 15rpx;
text-align: center;
font-family: PingFang-SC-Medium;
font-size: 22rpx;
font-weight: 400;
color: #333;
}
.apply {
padding: 0 30rpx;
}
.apply-p {
font-family: PingFang-SC-Medium;
font-size: 28rpx;
color: #666;
}
.sub {
margin-top: 40rpx;
}
/* */
.discount {
width: 56rpx;
height: 51rpx;
}
.welfare {
width: 50rpx;
height: 50rpx;
}
.activity {
width: 43rpx;
height: 49rpx;
}
.service {
width: 58rpx;
height: 47rpx;
}

View File

@@ -0,0 +1 @@
8cb93d44-5edc-4b32-a8a7-1fabdd0af787

View File

@@ -0,0 +1,144 @@
// pages/nearbyStore/nearbyStore.js
const app = getApp();
const regeneratorRuntime = app.loadAsync()
const model = app.loadModel("index")
const http = app.loadHttp()
const util = app.loadUtils('util')
const { StorageSync } = app.loadModel("getSetting")
const storage = new StorageSync()
Page({
/**
* 页面的初始数据
*/
data: {
system: app.globalData.system, //设备相关信息
pageTitle: "伊莎洗衣", //头部标题
isBack: true,//显示返回
markers: [{
id: 1,
latitude: 23.099994,
longitude: 113.324520
}],
longitude: "",
latitude: "",
addList: [],// 全部门店列表
reallyList: [],// 渲染列表
isAdd: 3,// 控制渲染数量
},
/**
* 传入经纬度和目的地名称简介打开地图
* @param {Object} data latitude精度 longitude纬度 name目的地名称 address目的地介绍
*/
intoMap: function (data) {
let item = data.currentTarget.dataset.item
wx.openLocation({
latitude: item.latitude,
longitude: item.longitude,
name: item.name,
address: item.address,
scale: 28,//缩放比例
})
},
/**
* 获取当前用户经纬度
*/
async getAdd() {
let data = await model.storage.getSetting("position")
this.setData({
longitude: data.longitude,
latitude: data.latitude
})
},
/**
* 获取全部门店列表
*/
async getStoreList() {
let data = await model.storage.getSetting("position")
let res = await http.http.request1({
url: `${http.api.shoplist}`, method: "POST", data: {
lat: data.latitude,
lng: data.longitude
}
})
let rel = res.data.data;
this.setData({
addList: [...rel],
reallyList: [...rel.slice(0, 5)]
})
},
// 拨打电话
makePhoneCall(e) {
let tel = e.currentTarget.dataset.item.telnum
wx.makePhoneCall({
phoneNumber: tel
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: async function (options) {
await model.getauth.userLocation()
this.getAdd()
this.getStoreList()
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
onPageScroll: function (e) {
if (this.data.addList.length > this.data.isAdd) {
let isAdd = this.data.isAdd
this.setData({
isAdd: isAdd + 2,
reallyList: [...this.data.reallyList, ...this.data.addList.slice(isAdd, isAdd + 2)]
})
}
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

View File

@@ -0,0 +1,4 @@
{
"navigationBarTextStyle": "black",
"usingComponents": {}
}

View File

@@ -0,0 +1,38 @@
<!-- 头部导航 -->
<nav-bar isBack="{{isBack}}" pageTitle="{{pageTitle}}" system="{{system}}"></nav-bar>
<!-- pages/nearbyStore/nearbyStore.wxml -->
<view class="nearbyStore">
<view class="map" style="top:{{system.statusHeight+system.titleHeight+'px'}}">
<map id="map" longitude="{{ longitude }}" latitude="{{ latitude }}" scale="14" markers="{{markers}}" show-compass show-location style="width: 100%; height: 490rpx;"></map>
</view>
<view class="nav_title">合肥伊莎洗衣洗衣<span>{{addList.length}}</span>家门店导航</view>
<view class="shopList pd30">
<view class="shop_row pd30 mb20" wx:for="{{reallyList}}" wx:key="index">
<view class="title">
<view class="title1 fl">
<image src="/static/img/icon/dasd1a65d1as1da6_03.png" />
</view>
<view class="title2 fl">{{item.name}}</view>
<view class="title3 fr c_red">{{item.distance}}</view>
</view>
<view class="shop_info">
<view class="shop_infol">
<view class="shop_p">电话 {{item.telnum}}</view>
<view class="shop_p">地址 {{item.address}}</view>
</view>
<view class="shop_infor">
<view class="shop_img">
<view class="shimg flex-con3" data-item="{{item}}" bind:tap="makePhoneCall">
<image src="/static/img/icon/greger6541g61gw.png" />
</view>
<view class="shimg flex-con3" data-item="{{item}}" bind:tap="intoMap">
<image src="/static/img/icon/asfasf0230.png" />
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<!-- toasta提示 -->
<i-toast id="toast" />

View File

@@ -0,0 +1,104 @@
/* pages/nearbyStore/nearbyStore.wxss */
.map {
z-index: 9999;
position: fixed;
left: 0;
width: 100%;
height: 490rpx;
}
.nearbyStore {
padding-top: 490rpx;
}
.nav_title {
margin: 39rpx 0;
width: 100%;
text-align: center;
font-size: 30rpx;
letter-spacing: 0px;
color: #333;
}
.nav_title span {
margin: 0 10rpx;
font-size: 30rpx;
letter-spacing: 0px;
color: #1bb348;
}
.shop_row {
padding-top: 49rpx;
padding-bottom: 20rpx;
width: 100%;
/* height: 228rpx; */
background-color: #fff;
box-shadow: 0px 0px 15rpx 0px rgba(172, 172, 172, 0.07);
border-radius: 15rpx;
}
.title {
height: 40rpx;
line-height: 40rpx;
width: 100%;
}
.title1 image {
width: 21rpx;
height: 26rpx;
}
.title2 {
margin-left: 15rpx;
}
.shop_info {
margin-top: 32rpx;
display: flex;
width: 100%;
}
.shop_infol {
flex: 6;
}
.shop_infol .shop_p {
font-size: 26rpx;
line-height: 40rpx;
letter-spacing: 0px;
color: #666;
}
.shop_infor {
flex: 2;
}
.shop_img {
display: flex;
height: 100%;
width: 100%;
position: relative;
}
.shop_img::after {
content: "";
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
width: 2rpx;
height: 25rpx;
background-color: #ccc;
}
.shimg {
flex: 2;
}
.shimg image {
width: 36rpx;
height: 36rpx;
}

View File

@@ -0,0 +1 @@
da05706a-06d4-45a0-bbe2-e761b046d807

View File

@@ -0,0 +1,90 @@
// pages/newPeople/newPeople.js
const app = getApp();
const regeneratorRuntime = app.loadAsync()
const model = app.loadModel("index")
const util = app.loadUtils("util")
const http = app.loadHttp()
Page({
/**
* 页面的初始数据
*/
data: {
system: app.globalData.system, //设备相关信息
pageTitle: "新人专享", //头部标题
isBack: true,//显示返回
personData: [],//优惠券列表
},
async newPersonOwn() {
let res = await http.http.request2({ url: `${http.api.newPersonOwn}`, method: 'POST' })
let rel = res.data.data
rel.map((v,i)=>{
rel[i].start_time = util.formatTime(v.start_time, 'Y-M-D')
rel[i].end_time = util.formatTime(v.end_time, 'Y-M-D')
})
this.setData({
personData: res.data.data
})
},
async goUrl(e){
let url = e.currentTarget.dataset.url
wx.navigateTo({
url: url
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.newPersonOwn()
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

View File

@@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@@ -0,0 +1,54 @@
<!-- 头部导航 -->
<nav-bar isBack="{{isBack}}" pageTitle="{{pageTitle}}" system="{{system}}"></nav-bar>
<!-- pages/newPeople/newPeople.wxml -->
<view class="newPeople">
<view class="newPeo-img">
<image mode="widthFix" src="http://cdn.yishaxiyi.com/b3ef1bd9e60071960ef8f712a69caeec.png" />
</view>
<view class="newPeo">
<view class="newPeo-cen">
<view wx:for="{{personData}}" wx:key class="coupon_list_row dis-flex mt20">
<view class="coupon_row_l ">
<image src="/static/img/xrj.png" />
<view class="row_l1 flex-con3">
<view>
<view class="row_l1_p1">
<span>{{item.coupon_price}}</span>
</view>
<view class="row_l1_p2">满{{item.use_min_price}}元使用</view>
</view>
</view>
</view>
<view class="flex1 coupon_row_r">
<image src="/static/img/xrjr.png" />
<view class="row_l1 dis-flex pl30">
<view class="flex-con2 flex1">
<view>
<view class="row_r1_p1 text-left clamp1">
{{item.coupon_title}}
</view>
<view class="row_r1_p2 text-left clamp1">
{{item.start_time}}至{{item.end_time}}
</view>
</view>
</view>
<view class="flex-con2 mr30">
<button wx:if="{{item.status==1}}" type="default" class="use-coupon" data-url="/pages/laundry/laundry" bind:tap="goUrl">
去使用
</button>
<button wx:if="{{item.status==2}}" type="default" class="use-coupon">
已使用
</button>
<button wx:if="{{item.status==3}}" type="default" class="use-coupon">
已过期
</button>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
<!-- toasta提示 -->
<i-toast id="toast" />

View File

@@ -0,0 +1,118 @@
/* pages/newPeople/newPeople.wxss */
page{
height: 100%;
background-color: #d23728 !important;
}
.newPeo-img{
width: 100%;
display: flex;
}
.newPeo-img image{
flex: 1;
}
.newPeo{
padding:0 38rpx;
margin-bottom: 50rpx;
}
.newPeo-cen{
background-color: #ce0f17;
padding: 20rpx 26rpx 40rpx;
border-radius: 48rpx;
}
/* 优惠券样式 */
.coupon_list_row{
height: 150rpx;
}
.coupon_row_l,
.coupon_row_r{
position: relative;
}
.coupon_row_l{
height: 150rpx;
width: 148rpx;
}
.coupon_row_l image{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
height: 150rpx;
width: 148rpx;
vertical-align: middle;
margin: 0;
}
.coupon_row_r image{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
height: 100%;
width: 100%;
margin: 0;
}
.row_l1{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
height: 100%;
width: 100%;
}
.row_l1_p1{
font-family: PingFang-SC-Bold;
font-size: 25rpx;
color: #f92929;
}
.row_l1_p1 span{
font-size: 40rpx;
font-weight: 600;
}
.row_l1_p2{
font-family: PingFang-SC-Medium;
font-size: 18rpx;
color: #333333;
}
.row_r1_p1{
font-family: PingFang-SC-Medium;
font-size: 28rpx;
color: #333333;
}
.row_r1_p2{
font-family: PingFang-SC-Medium;
font-size: 22rpx;
color: #999999;
}
.receive{
padding: 22rpx 187rpx;
background-color: #f6b900;
border-radius: 45rpx;
font-family: PingFang-SC-Bold;
font-size: 32rpx;
color: #ffffff;
}
.use-coupon{
width: 110rpx;
height: 51rpx;
line-height: 51rpx;
text-align: center;
background-color: #fdc43b !important;
border-radius: 51rpx;
font-family: PingFang-SC-Bold;
font-size: 24rpx;
font-weight: 400;
color: #fefefe !important;
border: 0;
padding: 0;
}
.use-coupon::after{
width: 0;
height: 0;
border: 0;
display: none;
}

View File

@@ -0,0 +1 @@
68945591-cfd9-4645-a893-5bd699929850

View File

@@ -0,0 +1,86 @@
// pages/richText/richText.js
const app = getApp();
const regeneratorRuntime = app.loadAsync()
const model = app.loadModel("index")
const util = app.loadUtils("util")
const http = app.loadHttp()
Page({
/**
* 页面的初始数据
*/
data: {
system: app.globalData.system, //设备相关信息
pageTitle: "关于我们", //头部标题
isBack: true,//显示返回
rich: {},//传入的id和头部名称
nodes: "",//富文本
},
// 获取富文本
async newsDetails() {
let res = await http.http.request1({ url: `${http.api.newsDetails}/${this.data.rich.id}`, method: "GET" })
this.setData({
nodes: res.data.data.content
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.setData({
'rich.id': options.id,
'rich.title': options.title,
pageTitle: options.title,
})
this.newsDetails()
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

View File

@@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@@ -0,0 +1,8 @@
<!-- 头部导航 -->
<nav-bar isBack="{{isBack}}" pageTitle="{{pageTitle}}" system="{{system}}"></nav-bar>
<!--pages/richText/richText.wxml-->
<view class="richText pd30">
<rich-text nodes="{{nodes}}"></rich-text>
</view>
<!-- toasta提示 -->
<i-toast id="toast" />

View File

@@ -0,0 +1,8 @@
/* pages/richText/richText.wxss */
page{
background-color: #ffffff !important;
}
.richText{
border-top: 2rpx solid #ebebeb;
padding-top: 30rpx;
}

View File

@@ -0,0 +1 @@
afa0fd18-6efe-4e14-bf8b-a95363579b1b

View File

@@ -0,0 +1,81 @@
// pages/serviceInfo/serviceInfo.js
const app = getApp();
const regeneratorRuntime = app.loadAsync()
const model = app.loadModel("index")
const util = app.loadUtils("util")
const http = app.loadHttp()
Page({
/**
* 页面的初始数据
*/
data: {
system: app.globalData.system, //设备相关信息
pageTitle: "服务说明", //头部标题
isBack: true,//显示返回
},
// 获取富文本
async newsDetails(id) {
let res = await http.http.request1({ url: `${http.api.getWashWarn}`, method: "POST", data:{id: id} })
this.setData({
nodes: res.data.data.description
})
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
if(options.group_type !== void 0){
this.newsDetails(options.group_type)
}
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

View File

@@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@@ -0,0 +1,9 @@
<!-- 头部导航 -->
<nav-bar isBack="{{isBack}}" pageTitle="{{pageTitle}}" system="{{system}}" />
<!--pages/richText/richText.wxml-->
<view class="richText pd30">
<rich-text nodes="{{nodes}}" />
</view>
<!-- toasta提示 -->
<i-toast id="toast" />

View File

@@ -0,0 +1,9 @@
/* pages/serviceInfo/serviceInfo.wxss */
page{
background-color: #ffffff !important;
}
.richText{
border-top: 2rpx solid #ebebeb;
padding-top: 30rpx;
word-wrap: break-word;
}

View File

@@ -0,0 +1 @@
3d6d8680-f850-40cf-b210-31ea5da9e7cf

View File

@@ -0,0 +1,26 @@
//index.js
//获取应用实例
const app = getApp();
const util = app.loadUtils("util")
const { Getauth } = app.loadModel("user")
const getauth = new Getauth()
const { StorageSync } = app.loadModel("getSetting")
const storage = new StorageSync()
Page({
data: {
motto: 'Hello World',
userInfo: {},
hasUserInfo: false,
canIUse: wx.canIUse('button.open-type.getUserInfo')
},
onLoad: function (options) {
// if (!!options.inviteId) {
// storage.setStorage("inviteId", options.inviteId)
// }
getauth.userInfo()
// storage.deleteStorage('nearestStore')
},
onPullDownRefresh() {
util.heavyLoad()
}
})

View File

@@ -0,0 +1,4 @@
{
"usingComponents": {},
"enablePullDownRefresh": true
}

View File

@@ -0,0 +1,6 @@
<view class="start"></view>
<!--index.wxml-->
<view class="container flex-con3">
<view class="usermotto">
</view>
</view>

View File

@@ -0,0 +1,20 @@
/**index.wxss**/
page{
background: #fff !important;
}
.container {
height: 100%;
width: 100%;
background: #fff;
}
.start{
width: 100rpx;
height: 100rpx;
border-radius: 100rpx;
position: fixed;
left: 50%;
top: 50%;
margin: -50rpx 0 0 -50rpx;
background: #ff4838;
-webkit-animation: loading 0.5s linear infinite;
}

View File

@@ -0,0 +1 @@
39fe32a2-9ecd-408a-84ed-1f5a71144f47

View File

@@ -0,0 +1,81 @@
// pages/userProtocol/userProtocol.js
const app = getApp();
const regeneratorRuntime = app.loadAsync()
const model = app.loadModel("index")
const util = app.loadUtils("util")
const http = app.loadHttp()
Page({
/**
* 页面的初始数据
*/
data: {
system: app.globalData.system, //设备相关信息
pageTitle: "用户协议", //头部标题
isBack: true,//显示返回
nodes: null,//富文本用户协议
},
async userProtocol() {
let res = await http.http.request1({ url: `${http.api.userProtocol}`, method: "POST" })
if (res.data.status == 1) {
this.setData({
nodes:res.data.data.value
})
}
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
this.userProtocol()
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {
},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {
}
})

View File

@@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@@ -0,0 +1,8 @@
<!-- 头部导航 -->
<nav-bar isBack="{{isBack}}" pageTitle="{{pageTitle}}" system="{{system}}"></nav-bar>
<!--pages/userProtocol/userProtocol.wxml-->
<view class="pd30 userProtocol">
<rich-text nodes="{{nodes}}"></rich-text>
</view>
<!-- toasta提示 -->
<i-toast id="toast" />

Some files were not shown because too many files have changed in this diff Show More