4f648b66 by simon

版本提交

1 parent d1f8bfaf
Showing 104 changed files with 790 additions and 41 deletions
......@@ -23,5 +23,20 @@ App({
userInfo: null,
wxcode: store.getItem("wxcode"),
tlMemberCode: ""
},
// 获取用户基本信息
queryIndex() {
return new Promise((resolve, reject) => {
this.post({
url: this.api.index,
data: {},
loading: true,
}).then((result) => {
this.globalData.indexInfo = result;
resolve(result)
}).catch((err) => {
reject();
});
});
}
})
......
{
"pages": [
"pages/index/index",
"pages/register/register",
"pages/authorize/authorize",
"pages/wish/wish",
"pages/create-wish/create-wish",
......
......@@ -95,7 +95,7 @@
}
// 居中按钮样式
@mixin btn-center($width, $height) {
@mixin btc($width, $height) {
width: $width;
height: $height;
line-height: $height;
......
......@@ -203,3 +203,38 @@
}
.bis {
background-repeat: no-repeat;
background-size: 100% 100%;
}
//flex 布局和 子元素 对其方式
.fl {
display: flex;
}
.fj {
display: flex;
justify-content: space-between;
}
//水平和垂直居中
.fcc {
display: flex;
justify-content: center;
align-items: center;
}
// 为元素设定的宽度和高度决定了元素的边框盒。
.bb {
box-sizing: border-box;
}
// 满屏
.fullp {
width: 100%;
height: 100%;
}
......
Component({
properties: {
// 这里定义了innerText属性,属性值可以在组件使用时指定
innerText: {
type: String,
value: 'default value',
}
},
data: {
// 这里是一些组件内部数据
someData: {}
},
methods: {
// 这里是一个自定义方法
customMethod() {
this.triggerEvent('evtcomp', {
name: "_evt_custom"
})
},
// 隐藏蒙层
hideMask() {
this.triggerEvent('evtcomp', {
name: "_evt_hide_mask"
});
}
}
})
@import '../../assets/scss/mixins';
@import '../../assets/scss/utils';
.comp-item {
position: relative;
width: 654px;
height: 588px;
// background-color: wheat;
.bg {
position: absolute;
width: 654px;
height: 588px;
}
.space1 {
height: 400px;
}
.btn {
position: relative;
margin: 0 auto;
@include cb(300px, 80px);
}
}
<view class="comp-item">
<image class="bg" src="../../image/oss/tips/tips-group-member.png" mode="widthFix" />
<view class="space1"></view>
<view bindtap="hideMask" class="btn">知道了</view>
</view>
let app = getApp();
Component({
properties: {
// 这里定义了innerText属性,属性值可以在组件使用时指定
innerText: {
type: String,
value: 'default value',
}
},
data: {
// 这里是一些组件内部数据
someData: {}
},
methods: {
// 这里是一个自定义方法
customMethod() {
this.triggerEvent('evtcomp', {
name: "_evt_custom"
})
},
// 隐藏蒙层
toQeustionHandler() {
app.router.push({
path:"question"
})
}
}
})
@import '../../assets/scss/mixins';
@import '../../assets/scss/utils';
.comp-item {
position: relative;
width: 654px;
height: 666px;
// background-color: wheat;
.bg {
position: absolute;
width: 654px;
height: 666px;
}
.space1 {
height: 420px;
}
.btn {
position: relative;
margin: 0 auto;
@include cb(300px, 80px);
}
}
<view class="comp-item">
<image class="bg" src="../../image/oss/tips/tips-register-ed.png" mode="widthFix" />
<view class="space1"></view>
<view bindtap="toQeustionHandler" class="btn">马上答题</view>
</view>
let app = getApp();
Component({
properties: {
// 这里定义了innerText属性,属性值可以在组件使用时指定
innerText: {
type: String,
value: 'default value',
}
},
data: {
// 这里是一些组件内部数据
someData: {}
},
methods: {
// 这里是一个自定义方法
customMethod() {
this.triggerEvent('evtcomp', {
name: "_evt_custom"
})
},
// 去注册页面
toRegister() {
app.router.push({
path: "register"
})
}
}
})
@import '../../assets/scss/mixins';
@import '../../assets/scss/utils';
.comp-item {
position: relative;
width: 654px;
height: 645px;
// background-color: wheat;
.bg {
position: absolute;
width: 654px;
height: 645px;
}
.space1 {
height: 472px;
}
.btn {
position: relative;
margin: 0 auto;
@include cb(300px, 80px);
}
}
<view class="comp-item">
<image class="bg" src="../../image/oss/tips/tips-login.png" mode="widthFix" />
<view class="space1"></view>
<view bindtap="toRegister" class="btn">马上登陆</view>
</view>
Component({
properties: {
// 这里定义了innerText属性,属性值可以在组件使用时指定
innerText: {
type: String,
value: 'default value',
}
},
data: {
// 这里是一些组件内部数据
someData: {}
},
methods: {
// 这里是一个自定义方法
customMethod() {
this.triggerEvent('evtcomp', {
name: "_evt_custom"
})
},
// 隐藏蒙层
hideMask() {
this.triggerEvent('evtcomp', {
name: "_evt_hide_mask"
});
}
}
})
@import '../../assets/scss/mixins';
@import '../../assets/scss/utils';
.comp-item {
position: relative;
width: 654px;
height: 578px;
// background-color: wheat;
.bg {
position: absolute;
width: 654px;
height: 578px;
}
.space1 {
height: 392px;
}
.btn {
position: relative;
margin: 0 auto;
@include cb(300px, 80px);
}
}
<view class="comp-item">
<image class="bg" src="../../image/oss/tips/tips-register-ed.png" mode="widthFix" />
<view class="space1"></view>
<view bindtap="hideMask" class="btn">我知道了</view>
</view>
Component({
properties: {
// 这里定义了innerText属性,属性值可以在组件使用时指定
innerText: {
type: String,
value: 'default value',
}
},
data: {
// 这里是一些组件内部数据
someData: {}
},
methods: {
// 这里是一个自定义方法
customMethod() {
this.triggerEvent('evtcomp', {
name: "_evt_custom"
})
},
// 隐藏蒙层
hideMask() {
this.triggerEvent('evtcomp', {
name: "_evt_hide_mask"
});
}
}
})
@import '../../assets/scss/mixins';
@import '../../assets/scss/utils';
.comp-item {
position: relative;
width: 654px;
height: 588px;
// background-color: wheat;
.bg {
position: absolute;
width: 654px;
height: 588px;
}
.space1 {
height: 400px;
}
.btn {
position: relative;
margin: 0 auto;
@include cb(300px, 80px);
}
}
<view class="comp-item">
<image class="bg" src="../../image/oss/tips/tips-shake.png" mode="widthFix" />
<!-- <view class="space1"></view>
<view bindtap="hideMask" class="btn">知道了</view> -->
</view>
......@@ -49,7 +49,7 @@ function checkSessionId() {
}
const fetch = function ({
loading = false,
loading = true,
toast = true,
sid = true,
auth = true,
......
......@@ -73,6 +73,7 @@ Page({
},
// 跳转到首页
toIndex() {
console.log("toIndex");
app.router.push({
path: "index",
openType: "redirect"
......
let app = getApp();
Page({
data: {
// ruleTipsVisible: true,
tipsRegisterVisible: false,
curStatus: 1, // 当前场景
},
onShareAppMessage() {},
onLoad(options) {},
onLoad(options) {
this.initData();
},
initData() {
app.queryIndex().then((result) => {});
},
/**
* 点击提交心愿单按钮
* 首先要根据自身状态判断
*/
onSubmitHandler() {
this.checkSubmit().then((result) => {
}).catch((err) => {
});;
},
/**
* 提交前判断状态
* 判断顺序
* 1.crm登陆
* 2.黑名单 (团购会员)
* 3.新会员
*
*/
checkSubmit() {
return new Promise((resolve, reject) => {
let indexInfo = app.globalData.indexInfo;
console.log("indexInfo:", indexInfo);
let {
isCrmLogin,
isNewMember,
isBlackList,
newMemberJudge,
oldMemberJudge,
wishBillCode
} = indexInfo;
// 未登陆 出注册弹窗提示
if (isCrmLogin == 0) {
// app.router.push({
// path: 'register'
// });
this.setData({
tipsRegisterVisible: true
})
reject();
return;
}
// 黑名单
if (isBlackList == 1) {
reject();
return;
}
// 新老会员
// isNewMember
// if(isNewMember == 1){
// }else{
// }
resolve();
});
},
// 换一批
onChangeStatusHandler() {
let curStatus = this.data.curStatus;
curStatus++;
if (curStatus > 3) {
curStatus = 1;
}
this.setData({
curStatus
})
},
// 子组件事件
evtcomp(evt) {
let {
......@@ -23,8 +96,4 @@ Page({
break;
}
},
// 提交心愿单
onWishHandler() {
}
})
......
{
"navigationBarTitleText": "丸美心愿单",
"usingComponents": {
"rule-tips-comp": "../../component/rule-tips-comp/rule-tips-comp",
"tips-register-comp": "../../component/tips-register-comp/tips-register-comp",
"van-popup": "../../ui/vant-weapp/popup/index"
}
}
......
......@@ -2,20 +2,130 @@
@import '../../assets/scss/utils';
.page {
.bgc {
background-color: wheat;
.bgc {}
// 场景1背景
.bgc1 {
background-color: #ffd5da;
}
.bg {}
.bg {
image {
position: absolute;
width: 750px;
height: 1303px;
}
}
.main {
.top-space {
height: 0px;
height: 610px;
}
.content {
position: relative;
// 换一批按钮
.change-btn {
margin-left: 48px;
box-shadow: 0px 6px 30px 0 rgba(126, 40, 40, 0.5);
background-color: #ffffff;
@include btc(160px, 54px);
border-radius: 27px;
font-size: 28px;
font-weight: 300;
color: #ba3039;
@extend .fcc;
.icon {
margin-right: 12px;
width: 29px;
height: 29px;
}
}
// 许愿单
.wish-container {
position: relative;
// 背景图
.ebg {
width: 746px;
height: 539px;
position: absolute;
left: 0;
right: 0;
top: 0;
margin: 0 auto;
}
// 心愿
.wish {
position: relative;
margin: 0 auto 0;
display: flex;
justify-content: space-between;
@extend .bb;
// padding-top: 116px;
padding: 116px 90px 0;
&-item {
position: relative;
text-align: center;
.display {
position: relative;
width: 140px;
height: 140px;
border-radius: 70px;
background-image: radial-gradient(circle at 0 0, #ffffff, #f2e6e6);
.prod {
max-width: 100px;
max-height: 120px;
}
.close {
width: 30px;
height: 30px;
position: absolute;
bottom: 0;
right: 0;
}
}
.name {
width: 160px;
margin: 8px auto 0;
color: #333333;
font-size: 20px;
// font-weight: 300;
}
.val {
@extend .fcc;
color: #b93138;
font-size: 20px;
.icon {
margin-left: 6px;
width: 11px;
height: 18px;
}
}
}
}
// 提交心愿按钮
.submit-btn {
margin: 48px auto 0;
width: 234px;
height: 64px;
line-height: 64px;
}
}
.btn {
@include cb;
}
......
<view class="page">
<view class="app__bgc bgc"></view>
<view class="app__bg bg"></view>
<view class="app__bgc bgc {{curStatus==1?'bgc1':''}}"></view>
<view class="app__bg bg">
<image src="{{'../../image/oss/create-wish/create-wish-'+curStatus+'.png'}}" mode="scaleToFill" />
</view>
<view class="app__content main">
<view class="top-space"></view>
<view class="content">
<view class="btn" bindtap="onWishHandler" >提交心愿单</view>
<!-- <view class="btn" bindtap="onWishHandler">提交心愿单</view> -->
<!-- 换一批按钮 -->
<view class="change-btn" bindtap="onChangeStatusHandler">
<image class="icon" src="../../image/oss/create-wish/cw-exchange-btn.png" mode="widthFix" />
换一批
</view>
<!-- 心愿单 -->
<view class="wish-container">
<image class="ebg" mode="widthFix" src="../../image/oss/create-wish/cw-border.png" />
<!-- 心愿容器 -->
<view class="wish">
<view class="wish-item">
<view class="display">
<image class="prod" mode="aspectFit" src="../../image/oss/prize/prize_3.png" />
<image class="close" mode="widthFix" src="../../image/oss/create-wish/cw-close-btn.png" />
</view>
<view class="name">丸美弹力蛋白凝时紧致乳</view>
<view class="val">
<image class="icon" mode="widthFix" src="../../image/oss/create-wish/cw-light.png" />
需要弹力值5403
</view>
</view>
<view class="wish-item">
<view class="display">
<image class="prod" mode="aspectFit" src="../../image/oss/prize/prize_3.png" />
<image class="close" mode="widthFix" src="../../image/oss/create-wish/cw-close-btn.png" />
</view>
<view class="name">丸美弹力蛋白凝时紧致乳</view>
<view class="val">
<image class="icon" mode="widthFix" src="../../image/oss/create-wish/cw-light.png" />
需要弹力值5403
</view>
</view>
<view class="wish-item">
<view class="display">
<image class="prod" mode="aspectFit" src="../../image/oss/prize/prize_3.png" />
<image class="close" mode="widthFix" src="../../image/oss/create-wish/cw-close-btn.png" />
</view>
<view class="name">丸美弹力蛋白凝时紧致乳</view>
<view class="val">
<image class="icon" mode="widthFix" src="../../image/oss/create-wish/cw-light.png" />
需要弹力值5403
</view>
</view>
</view>
<!-- 提交心愿单 -->
<view bindtap="onSubmitHandler" class="btn submit-btn">提交心愿单</view>
</view>
</view>
</view>
</view>
<van-popup show="{{ ruleTipsVisible }}">
<rule-tips-comp bind:evtcomp="evtcomp"></rule-tips-comp>
<van-popup show="{{ tipsRegisterVisible }}">
<tips-register-comp bind:evtcomp="evtcomp"></tips-register-comp>
</van-popup>
......
......@@ -3,10 +3,30 @@ Page({
data: {
authorized: true,
canIUse: wx.canIUse('button.open-type.getUserInfo'),
ruleTipsVisible: false,
tipsRuleVisible: false,
},
onShareAppMessage() {},
onLoad(options) {},
onLoad(options) {
this.initData();
},
initData() {
app.queryIndex().then((result) => {
console.log("result:", result);
})
},
// 开始互动游戏
onStartHandler() {
let path = "createWish";
app.router.push({
path: "createWish"
})
},
// 显示规则页面
onShowRuleHandler() {
this.setData({
tipsRuleVisible: true
})
},
// 子组件事件
evtcomp(evt) {
let {
......@@ -17,7 +37,7 @@ Page({
case "_evt_hide_rule_tips":
this.setData({
ruleTipsVisible: false
tipsRuleVisible: false
})
break;
......@@ -25,17 +45,4 @@ Page({
break;
}
},
// 开始互动游戏
onStartHandler() {
let path = "createWish";
app.router.push({
path: "createWish"
})
},
// 显示规则页面
onShowRuleHandler() {
this.setData({
ruleTipsVisible: true
})
}
})
......
......@@ -2,7 +2,7 @@
"navigationBarTitleText": "我的心愿单",
"usingComponents": {
"authorize-comp": "../../component/authorize-comp/authorize-comp",
"rule-tips-comp": "../../component/rule-tips-comp/rule-tips-comp",
"tips-rule-comp": "../../component/tips-rule-comp/tips-rule-comp",
"van-popup": "../../ui/vant-weapp/popup/index"
}
}
......
......@@ -56,7 +56,7 @@
top: 24px;
right: 0;
@include border-left-radius(30px);
@include btn-center(162px, 60px);
@include btc(162px, 60px);
font-size: 30px;
color: #bf0221;
// border-radius: 30px;
......
......@@ -25,6 +25,6 @@
<!-- <van-popup show="{{ authorizeVisible }}" >
<authorize-comp bind:evtcomp="evtcomp"></authorize-comp>
</van-popup> -->
<van-popup show="{{ ruleTipsVisible }}">
<rule-tips-comp bind:evtcomp="evtcomp"></rule-tips-comp>
<van-popup show="{{ tipsRuleVisible }}">
<tips-rule-comp bind:evtcomp="evtcomp"></tips-rule-comp>
</van-popup>
......
let Date = require('../../utils/date.js');
let Utils = require('../../utils/util.js');
let app = getApp();
Page({
data: {},
data: {
tipsRegisteredVisible: false,
// form start
name: "",
mobile: "",
verifyCode: "",
birthday: "",
password: "",
sex: 0,
isTerms: false,
// form end
auth_time: 0,
sendAuthCode: true,
/*布尔值,通过v-show控制显示‘获取按钮’还是‘倒计时’ */
},
onShareAppMessage() {},
onLoad(options) {},
onLoad(options) {
this.initData();
},
initData() {
},
showLog(msg) {
wx.showToast({
title: msg,
icon: "none"
})
},
doRegister() {
this.checkForm().then((result) => {
// 注册
let data = {
mobile: this.data.mobile,
name: this.data.name,
birthday: this.data.birthday,
verifyCode: this.data.verifyCode,
}
app.post({
url: app.api.register,
data: data
}).then((result) => {
wx.showModal({
title: "登陆成功",
content: "继续生成我的心愿单",
confirmText: "马上前往",
showCancel: false,
success(res) {
app.router.push({
openType: "reLaunch",
path: "createWish"
})
}
})
});
})
},
// 表单检查
checkForm() {
return new Promise((resolve, reject) => {
if (!this.data.name) {
this.showLog("请输入姓名");
reject();
} else if (!this.data.mobile) {
this.showLog("请输入手机号码");
reject();
} else if (!Utils.checkMobile(this.data.mobile)) {
this.showLog("请输正确手机号码");
reject();
} else if (!this.data.verifyCode) {
this.showLog("请输入验证码");
reject();
} else if (!this.data.isTerms) {
this.showLog("请同意服务条款");
reject();
} else {
resolve();
}
});
},
// 是否同意条款
onTermsHandler() {
console.log("onTermsHandler");
this.setData({
isTerms: !this.data.isTerms
})
},
// 跳转至会员条款
onPolicyHandler() {
},
// 获取验证码
reqGetSmsRequest() {
if (!this.data.sendAuthCode) return;
let mobile = this.data.mobile
if (!mobile || !Utils.checkMobile(mobile)) {
this.showLog("请输入正确的手机号码");
return
}
this.getAuthCode();
app.post({
url: app.api.mobileVerifyCode,
data: {
mobile: mobile,
forRegister: 1
}
}).then((result) => {
wx.showToast({
title: "短信发送成功",
icon: "none"
})
});
},
// 倒数
getAuthCode() {
let _this = this;
_this.setData({
sendAuthCode: false,
auth_time: 60
})
var auth_timetimer = setInterval(() => {
_this.setData({
auth_time: _this.data.auth_time - 1
})
if (_this.data.auth_time <= 0) {
_this.setData({
sendAuthCode: true
});
clearInterval(auth_timetimer)
}
}, 1000)
},
bindMobileInput(e) {
this.setData({
"mobile": e.detail.value
})
},
bindNameInput(e) {
this.setData({
"name": e.detail.value
})
},
bindBirthdayInput(e) {
this.setData({
"birthday": e.detail.value
})
},
bindVerifyCodeInput(e) {
this.setData({
"verifyCode": e.detail.value
})
},
bindBirthdayChange(e) {
this.setData({
birthday: e.detail.value
})
},
// 子组件事件
evtcomp(evt) {
let {
......@@ -11,7 +168,10 @@ Page({
} = evt.detail;
switch (name) {
case "_evt_hide":
case "_evt_hide_mask":
this.setData({
tipsRegisteredVisible: false
})
break;
default:
......