上传2.6小程序模板
118
view/crmebNewUI/app.js
Normal file
@ -0,0 +1,118 @@
|
||||
//app.js
|
||||
|
||||
//请配置请求url
|
||||
//请修改开发者工具中【详情】->【AppID】改为自己的Appid
|
||||
//请前往后台【小程序】->【小程序配置】填写自己的 appId and AppSecret
|
||||
//请不要修改globalData中的其他配置,如自行开发可不用理会这句话
|
||||
//配置完以上就可以访问小程序啦
|
||||
const URL ='http://datong.crmeb.net';
|
||||
|
||||
const util = require('utils/util.js');
|
||||
|
||||
App({
|
||||
onLaunch: function (option) {
|
||||
if (URL==''){
|
||||
console.error("请配置请求url\n请修改开发者工具中【详情】->【AppID】改为自己的Appid\n请前往后台【小程序】->【小程序配置】填写自己的 appId and AppSecret");
|
||||
return false;
|
||||
}
|
||||
if (option.query.hasOwnProperty('scene') && option.scene == 1047) this.globalData.code = option.query.scene;
|
||||
if (option.query.hasOwnProperty('scene') && option.scene == 1001) this.globalData.spid = option.query.scene;
|
||||
this.getMyMenus();
|
||||
// 展示本地存储能力
|
||||
var logs = wx.getStorageSync('logs') || [],that=this;
|
||||
logs.unshift(Date.now())
|
||||
wx.setStorageSync('logs', logs);
|
||||
// 获取导航高度;
|
||||
wx.getSystemInfo({
|
||||
success: res => {
|
||||
//导航高度
|
||||
this.globalData.navHeight = res.statusBarHeight * (750 / res.windowWidth) + 97;
|
||||
}, fail(err) {
|
||||
console.log(err);
|
||||
}
|
||||
})
|
||||
},
|
||||
globalData: {
|
||||
navHeight: 0,
|
||||
routineStyle: '#ffffff',
|
||||
openPages: '',
|
||||
spid: 0,
|
||||
code:0,
|
||||
urlImages: '',
|
||||
url: URL,
|
||||
token: '',
|
||||
isLog:false,
|
||||
MyMenus:[],
|
||||
header: {
|
||||
'content-type': 'application/json',
|
||||
'token': ''
|
||||
}
|
||||
},
|
||||
/**
|
||||
*
|
||||
* 获取个人中心图标
|
||||
*/
|
||||
getMyMenus: function () {
|
||||
var that = this;
|
||||
if (that.globalData.MyMenus.legnth) return;
|
||||
that.baseGet(that.U({ c: 'public_api', a: 'get_my_naviga'},that.globalData.url), function (res) {
|
||||
that.globalData.MyMenus = res.data.routine_my_menus;
|
||||
});
|
||||
},
|
||||
/*
|
||||
* POST 访问快捷方法
|
||||
* @param string | object url 访问地址
|
||||
* @param callable successCallback 成功执行函数
|
||||
* @param callable errorCallback 失败执行函数
|
||||
* @param object header 访问header头
|
||||
*/
|
||||
basePost: function (url, data, successCallback, errorCallback, header) {
|
||||
if (header == undefined) header = this.globalData.header;
|
||||
header['token'] = this.globalData.token;
|
||||
util.basePost(url, data, successCallback, errorCallback,header);
|
||||
},
|
||||
/*
|
||||
* GET 访问快捷方法
|
||||
* @param string | object url 访问地址
|
||||
* @param callable successCallback 成功执行函数
|
||||
* @param callable errorCallback 失败执行函数
|
||||
* @param isMsg 错误信息提醒 默认提醒
|
||||
* @param object header 访问header头
|
||||
*/
|
||||
baseGet: function (url, successCallback, errorCallback, isMsg, header) {
|
||||
if (header == undefined) header = this.globalData.header;
|
||||
header['token'] = this.globalData.token;
|
||||
util.baseGet(url, successCallback, errorCallback, isMsg,header);
|
||||
},
|
||||
/*
|
||||
* 信息提示 + 跳转
|
||||
* @param object opt {title:'提示语',icon:''} | url
|
||||
* @param object to_url 跳转url 有5种跳转方式 {tab:1-5,url:跳转地址}
|
||||
*/
|
||||
Tips: function (opt, to_url) {
|
||||
return util.Tips(opt, to_url);
|
||||
},
|
||||
/*
|
||||
* 访问Url拼接
|
||||
* @param object opt {c:'控制器',a:'方法',q:{get参数},p:{parma参数}}
|
||||
* @param url 接口访问地址
|
||||
* @return string
|
||||
*/
|
||||
U: function (opt,url){
|
||||
return util.U(opt,url);
|
||||
},
|
||||
/**
|
||||
* 快捷调取助手函数
|
||||
*/
|
||||
help:function()
|
||||
{
|
||||
return util.$h;
|
||||
},
|
||||
/*
|
||||
* 合并数组
|
||||
* @param array list 请求返回数据
|
||||
* @param array sp 原始数组
|
||||
* @return array
|
||||
*/
|
||||
SplitArray: function (list, sp) { return util.SplitArray(list, sp)},
|
||||
})
|
||||
111
view/crmebNewUI/app.json
Normal file
@ -0,0 +1,111 @@
|
||||
{
|
||||
"pages": [
|
||||
"pages/index/index",
|
||||
"pages/goods_cate/goods_cate",
|
||||
"pages/quality-recommend/index",
|
||||
"pages/order_details/index",
|
||||
"pages/user_sgin/index",
|
||||
"pages/user/user",
|
||||
"pages/user_get_coupon/index",
|
||||
"pages/order_confirm/index",
|
||||
"pages/goods_list/goods_list",
|
||||
"pages/user_coupon/index",
|
||||
"pages/goods_comment_list/index",
|
||||
"pages/user_goods_collection/index",
|
||||
"pages/user_address_list/index",
|
||||
"pages/news_list/index",
|
||||
"pages/goods_search/index",
|
||||
"pages/user_vip/index",
|
||||
"pages/user_spread_money/index",
|
||||
"pages/user_integral/index",
|
||||
"pages/user_bill/index",
|
||||
"pages/user_money/index",
|
||||
"pages/user_spread_user/index",
|
||||
"pages/user_sgin_list/index",
|
||||
"pages/order_list/index",
|
||||
"pages/goods_details/index",
|
||||
"pages/news_details/index",
|
||||
"pages/promoter-list/index",
|
||||
"pages/promoter-order/index",
|
||||
"pages/cash-audit/index",
|
||||
"pages/user_cash/index",
|
||||
"pages/user_return_list/index",
|
||||
"pages/user_goods_return/index",
|
||||
"pages/goods_return/index",
|
||||
"pages/goods_comment_con/index",
|
||||
"pages/promotional-items/index",
|
||||
"pages/first-new-product/index",
|
||||
"pages/user_spread_code/index",
|
||||
"pages/cut-poster/index",
|
||||
"pages/user_info/index",
|
||||
"pages/order_pay_status/index",
|
||||
"pages/goods_logistics/index",
|
||||
"pages/user_address/index",
|
||||
"pages/order_addcart/order_addcart",
|
||||
"pages/logs/logs",
|
||||
"pages/user_payment/index",
|
||||
"components/navbar/index",
|
||||
"components/recommend/index",
|
||||
"components/share-red-packets/index",
|
||||
"components/orderGoods/index",
|
||||
"components/swipers/index",
|
||||
"components/goodList/index",
|
||||
"components/promotionGood/index",
|
||||
"components/productConSwiper/index",
|
||||
"components/userEvaluation/index",
|
||||
"components/coupon-window/index",
|
||||
"components/product-window/index",
|
||||
"components/coupon-list-window/index",
|
||||
"components/address-window/index",
|
||||
"components/home/index"
|
||||
],
|
||||
"subPackages": [
|
||||
{
|
||||
"root": "pages/activity",
|
||||
"name": "activity",
|
||||
"pages": [
|
||||
"goods_seckill_details/index",
|
||||
"goods_seckill/index"
|
||||
]
|
||||
}
|
||||
],
|
||||
"window": {
|
||||
"backgroundTextStyle": "dark",
|
||||
"navigationBarBackgroundColor": "#fff",
|
||||
"navigationBarTitleText": "WeChat",
|
||||
"navigationBarTextStyle": "black",
|
||||
"navigationStyle": "custom"
|
||||
},
|
||||
"tabBar": {
|
||||
"backgroundColor": "#ffffff",
|
||||
"color": "#282828",
|
||||
"selectedColor": "#e93323",
|
||||
"list": [
|
||||
{
|
||||
"pagePath": "pages/index/index",
|
||||
"iconPath": "images/1-001.png",
|
||||
"selectedIconPath": "images/1-002.png",
|
||||
"text": "首页"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/goods_cate/goods_cate",
|
||||
"iconPath": "images/2-001.png",
|
||||
"selectedIconPath": "images/2-002.png",
|
||||
"text": "分类"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/order_addcart/order_addcart",
|
||||
"iconPath": "images/3-001.png",
|
||||
"selectedIconPath": "images/3-002.png",
|
||||
"text": "购物车"
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/user/user",
|
||||
"iconPath": "images/4-001.png",
|
||||
"selectedIconPath": "images/4-002.png",
|
||||
"text": "我的"
|
||||
}
|
||||
]
|
||||
},
|
||||
"sitemapLocation": "sitemap.json"
|
||||
}
|
||||
68
view/crmebNewUI/app.wxss
Normal file
@ -0,0 +1,68 @@
|
||||
/**app.wxss**/
|
||||
@import '/font/iconfont.wxss';
|
||||
@import '/css/style.wxss';
|
||||
@import '/css/animate.wxss';
|
||||
.start{width: 122rpx; height: 30rpx;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHoAAADMCAYAAAC8yreMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA4BpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ1IDc5LjE2MzQ5OSwgMjAxOC8wOC8xMy0xNjo0MDoyMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpDMDg0NEE2QTVFNUQxMUU4QUI3RkNGOTgwNDYyRUZDOCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozODU5QzVENDMwRjcxMUU5OTQ0QzlEOTQ5RkE1MTlBRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozODU5QzVEMzMwRjcxMUU5OTQ0QzlEOTQ5RkE1MTlBRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cykiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpkN2ZhZTM5NC0wNmE4LTkzNGYtODA0OS0zNjBjNTcxOTU2YjAiIHN0UmVmOmRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpmYWI1M2NhMC04MWE1LTE5NGItYmJlYi1jMzI2MjIwNmNhOTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4ctYL1AAAHsElEQVR42uycS4gcVRiFq5Mm4yuKihoVlKg7IVlkI4oGFV9R4wPSJChBMW5ECYooKuIbEReCBBGJEDS+BkVJYEIMJgvJIossFATxCW58boRJEDEZz83cDk3TXc/7T9Xt+g783O7p6tP/9Km6dbvp+jpzc3MJmnwt4i0gaETQiKBRM+UWY8OVpt9XXXySakcZ34Xwp/fR3mWO6LWqW/Wilxnte5b+re29TNB3+fEeozfL0r+1vXdGTRmdTmfc9HGGG1Rd1d+qZecc/PGfcVPI2Bc19Kf3uSBHdM+/mNNpqtsD77WW/q3uvTtmDzpPw9kDxm5XW6q6b2jTB7XtrEZXc35vc/rNV7LQ/vQ+2rs75v/Zproux45yhWrniL/vUq1JeZ6lP70XmLpvVr1SYoo5qnrBrQ4ztrP0p/eiizFND9dreHdgOknTr25lqEXCvrwLGgt/ei+xGNOTP9ewUrUn48XclLGi/2J5ZelP7wVX3TJxJ/f3Mjbbpu3+KrOctPSn9+Ifr9ZWfLxOf3rPE7TOF1Mabhg68e/yy/q+1mi7bpn/xNKf3osd0deqTva3f1ZdpenCLeFXq37wfz9ddWXJvdbSn94LBH2bH9/2J/79/hzypV8wvD60XVFZ+tN7xhcmgzrRnQv0AjtHLBgOa9is6eOzCm+WpT+9p32ORpMnfmFC0IigEUEjgkYEjQgaETQiaETQBI0IGhE0ImhE0IigEUGj8oIaEEfvTtPT0ytVF5bxh3gQl/9TqkcWauqGeFCDv47kM5P5y2PP1+0lpkH7K+9v9HfX6/4JIf8ZS/+Ye/dap/pI5U4Nt1gf0RAP6vO/WrVX9YnqjqJPhnjQoN5Tpu0LNPzS6/XcZTmHdH9WdZbu/1kp6ARqQC29Kzw39d+rOqL6V7XY33Y/5n9pYNOtqpdd4BqX+G3dNqck81dgzuQN2l15766gf7zgDHHUN/RcxnaW/jH3fkC1QbVbR+v7Y88Rvd5BDZsGdhA3qzykWqXaP+o5EA8a2LuCe0DDparHFOqhHKvxLaovtO3Wcf4QDxrYuwJ7Q8Nbqu0KckVKyO5Kyu2qF/shl151Qw2ox1/BfaXhbtVrKZs9r7pT234T6uMV1IB6/N3F8N+mPP6dX7BV/xwNNaA+f786n+kvuFT3qzYMPL5n4Euaykc01ID6/N3HuL0K91yNH/odaKnuu3P3Mt1264SbQgUNNaAGfwU55fNxX3e+qXrCLbhUbpH2tF9pO4Dcqdp2cYig+1feb1LNDi1GDqs26+Y1Fc5Dlv4x977azwSX+AXXTwMLNTd7rPOzhfti5vIsM4gHDdIgxllH6XJ3tPrVd9qRf5GGWW33R/9vI78bIeh2iJ8SETQiaETQiKARQSOCRgSNCBoRNEEjgkYEjQgaETQiaETQiKARQSMnYDXheneqApSx9AZWE16lgTKW3sBqAqoqUMbSG1hNWFUCylh6A6sJq0pAGUtvYDUBYDJ+aq0MlLH0BlZTsHdLoAywmmL+1r2bAWUSYDX5/ReqdwugjKl32gv6N8xdcP1OxnTopruNg6yOPG+Whf9C9u6+wNDwrOoZvclfjwnCXfr6pOrRQdZI1vse2htYTYXeQwNlLL2B1VTvPRhQxtIbWE01mEySBATKWHoDq6nWe5IEBMpYegOrqdB7aKCMpTewmmq9BwXKWHrDMCkoU6AMsBpUVfyUiKARQSOCRgSNCBoRNCJoRNCIoAkaETQiaETQiKARQSOCRgSNMtQmholTFQ4IDJOwsva3ZIxY+8MwySNLxoi1PwyTYrJkjFj7wzApIEvGiLU/DJOcU58ZY8TaH4bJ6DfFjANi7Q/DpJi/JWPE2h+GSVKQYWLBAbH2h2FSkmESmgNi7Q/DpKS/JWPE2h+GSXFZMkas/YN5Z7I7xnBAdvsvNvpzzTEOiI66/0p8SWLqnwxxQPwixl1P/IF/vM8B+bhkGJb+wbwnnWGSJLaMEWt/GCY5v2gwY4xY+8MwKSZLxoi1PwyT1H/IkANi7Q/DBFUWPyUiaETQiKARQSOCRgSNCBoRNCJogkYEjQgaETQiaETQiKARQaMMNY1h4tRUDggMk/BqJAck5t4bxzBpMgck5t4bxTDxaiwHJObem8YwcWosByTm3mthmKRMT43mgMTcey0Mk1g5IDH3XhfDJEoOSMy918owiY0DEnPvtTNMYuKAxNx77QyTmDggMffeFIZJFByQmHuvnWHSf34SAQck5t6bwDBJkkg4IDH3XjvDJCYOSMy9N4FhEg0HJObeR56jh5bnGxM/Z6TIfXbeVxKS8b2bDcaxOvR3Z7tFe+2M/6q1Kd5R9Q7DpCXip0QEjQgaETQiaETQiKARQSOCRgRN0IigEUEjgkYEjQgamQhqQDt6L3tEt5IaEHPvhYNuMzUg5t7LHNGtpQbE3HuZoFtLDYi590UFp4/jV977yzmPXXkfcHoy8297790xxlADWkI8gBowYb13oAZAPDj+IT2BGhB975mLMagBk9F73lU31IDIe+/mfEGoAZH3nveIhhoQee95FmNT/nPbDn/OeLh/UbYeW67hVdWnyTwXdL0eO1JwQRPUn95LLsYSqAET0XueczTUgAnoHeJBS8RPiQgaETQiaNRM/S/AAOykxVBJG5QXAAAAAElFTkSuQmCC');background-repeat: no-repeat; background-size: 122rpx auto;}
|
||||
.start.star5{background-position: 0 3rpx;}
|
||||
.start.star4{background-position: 0 -30rpx;}
|
||||
.start.star3{background-position: 0 -70rpx;}
|
||||
.start.star2{background-position: 0 -105rpx;}
|
||||
.start.star1{background-position: 0 -140rpx;}
|
||||
.start.star0{background-position: 0 -175rpx;}
|
||||
page{font-size:28rpx;background-color: #f5f5f5; color: #333;}
|
||||
view{box-sizing:border-box;}
|
||||
.acea-row{display:flex;flex-wrap:wrap;}
|
||||
.acea-row.row-top{align-items:flex-start;}
|
||||
.acea-row.row-middle{align-items:center;}
|
||||
.acea-row.row-bottom{align-items:flex-end;}
|
||||
.acea-row.row-left{justify-content:flex-start;}
|
||||
.acea-row.row-center{justify-content:center;}
|
||||
.acea-row.row-right{justify-content:flex-end;}
|
||||
.acea-row.row-between{justify-content:space-between;}
|
||||
.acea-row.row-around{justify-content:space-around;}
|
||||
.acea-row.row-column{flex-direction:column;}
|
||||
.acea-row.row-column-between{flex-direction:column;justify-content:space-between;}
|
||||
.acea-row.row-column-around{flex-direction:column;justify-content:space-around;}
|
||||
.acea-row.row-center-wrapper{align-items:center;justify-content:center;}
|
||||
.acea-row.row-between-wrapper{align-items:center;justify-content:space-between;}
|
||||
.font-color{color:#fc4141!important;}
|
||||
.bg-color{background-color:#e93323!important;}
|
||||
.icon-color{color:#ff3c2b;}
|
||||
.cart-color{color:#ff3700!important;border:1px solid #ff3700!important;}
|
||||
/* 单选 */
|
||||
radio .wx-radio-input{border-radius:50%;width:38rpx;height:38rpx;}
|
||||
radio .wx-radio-input.wx-radio-input-checked{border: 1px solid #e93323 !important;
|
||||
background-color: #e93323 !important;}
|
||||
/* 多选 */
|
||||
checkbox .wx-checkbox-input{border-radius:50%;width:38rpx;height:38rpx;}
|
||||
checkbox .wx-checkbox-input.wx-checkbox-input-checked{
|
||||
border: 1px solid #e93323 !important;background-color: #e93323 !important;color:#fff!important;}
|
||||
checkbox .wx-checkbox-input.wx-checkbox-input-checked::before {font-size:35rpx;}
|
||||
.line1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
|
||||
.line2{word-break:break-all;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
|
||||
.mask{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#000;opacity:0.5;z-index:5;}
|
||||
button{padding:0;margin:0;line-height:normal;background-color:#fff;}
|
||||
button::after{border:0;}
|
||||
@keyframes load
|
||||
{
|
||||
from {transform: rotate(0deg);}
|
||||
to {transform: rotate(360deg);}
|
||||
}
|
||||
.loadingpic {
|
||||
animation: load 3s linear 1s infinite;
|
||||
}
|
||||
.loading-list {
|
||||
animation: load linear 1s infinite;
|
||||
font-size:40rpx;margin-right:22rpx;
|
||||
}
|
||||
.loading{width:100%;height:100rpx;line-height:100rpx;align-items:center;justify-content:center;position: relative;text-align:center;}
|
||||
.loading .line{position: absolute;width: 450rpx;left: 150rpx;top: 50rpx;height: 1px;border-top:1px solid #eee ;}
|
||||
.loading .text{position: relative;display: inline-block;padding: 0 20rpx;background: #fff;z-index: 2;color: #777;}
|
||||
|
||||
.loadingicon .loading {animation: load linear 1s infinite;font-size:45rpx;color:#000;}
|
||||
.loadingicon{width:100%;height:80rpx;}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
55
view/crmebNewUI/components/address-window/index.js
Normal file
@ -0,0 +1,55 @@
|
||||
var app = getApp();
|
||||
Component({
|
||||
properties: {
|
||||
//跳转url链接
|
||||
pagesUrl:{
|
||||
type:String,
|
||||
value:'',
|
||||
},
|
||||
address:{
|
||||
type: Object,
|
||||
value:{
|
||||
address:true,
|
||||
addressId:0,
|
||||
}
|
||||
},
|
||||
isLog:{
|
||||
type:Boolean,
|
||||
value:false,
|
||||
},
|
||||
},
|
||||
data: {
|
||||
active: 0,
|
||||
//地址列表
|
||||
addressList:[],
|
||||
},
|
||||
attached: function () {
|
||||
|
||||
},
|
||||
methods: {
|
||||
tapAddress: function (e) {
|
||||
this.setData({ active: e.currentTarget.dataset.id });
|
||||
this.triggerEvent('OnChangeAddress', e.currentTarget.dataset.addressid);
|
||||
},
|
||||
close: function () {
|
||||
this.setData({ 'address.address': false });
|
||||
this.triggerEvent('changeTextareaStatus');
|
||||
},
|
||||
goAddressPages:function(){
|
||||
this.setData({ 'address.address': false });
|
||||
this.triggerEvent('changeTextareaStatus');
|
||||
wx.navigateTo({url: this.data.pagesUrl});
|
||||
},
|
||||
getAddressList:function(){
|
||||
var that=this;
|
||||
app.baseGet(app.U({ c: "user_api", a:'user_address_list'}),function(res){
|
||||
var addressList=res.data;
|
||||
//处理默认选中项
|
||||
for (var i = 0, leng = addressList.length; i < leng;i++){
|
||||
if (addressList[i].id == that.data.address.addressId) that.setData({ active:i});
|
||||
}
|
||||
that.setData({ addressList: addressList});
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
4
view/crmebNewUI/components/address-window/index.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"usingComponents": {},
|
||||
"component": true
|
||||
}
|
||||
17
view/crmebNewUI/components/address-window/index.wxml
Normal file
@ -0,0 +1,17 @@
|
||||
<view class="address-window {{address.address==true?'on':''}}">
|
||||
<view class='title'>选择地址<text class='iconfont icon-guanbi' bindtap='close'></text></view>
|
||||
<view class='list'>
|
||||
<view class='item acea-row row-between-wrapper {{active==index?"font-color":""}}' wx:for="{{addressList}}" data-id='{{index}}' bindtap='tapAddress' wx:key data-addressId="{{item.id}}">
|
||||
<text class='iconfont icon-ditu {{active==index?"font-color":""}}'></text>
|
||||
<view class='address'>
|
||||
<view class='name {{active==index?"font-color":""}}'>{{item.real_name}}<text class='phone'>{{item.phone}}</text></view>
|
||||
<view class='line1'>{{item.province}}{{item.city}}{{item.district}}{{item.detail}}</view>
|
||||
</view>
|
||||
<text class='iconfont icon-complete{{active==index?" font-color":""}}'></text>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 无地址 -->
|
||||
<!-- <view class='pictrue'><image src='/images/noCoupon.png'></image></view> -->
|
||||
<view class='addressBnt bg-color' bindtap='goAddressPages'>选择其他地址</view>
|
||||
</view>
|
||||
<view class='mask' catchtouchmove="true" hidden='{{address.address==false}}' bindtap='close'></view>
|
||||
15
view/crmebNewUI/components/address-window/index.wxss
Normal file
@ -0,0 +1,15 @@
|
||||
@import '/app.wxss';
|
||||
.address-window{background-color:#fff;position:fixed;bottom:0;left:0;width:100%;z-index:101;transform:translate3d(0,100%,0);transition:all .3s cubic-bezier(.25,.5,.5,.9);}
|
||||
.address-window.on{transform:translate3d(0,0,0);}
|
||||
.address-window .title{font-size:32rpx;font-weight:bold;text-align:center;height:123rpx;line-height:123rpx;position:relative;}
|
||||
.address-window .title .iconfont{position:absolute;right:30rpx;color:#8a8a8a;font-size:35rpx;}
|
||||
.address-window .list .item{margin-left:30rpx;padding-right:30rpx;border-bottom:1px solid #eee;height:129rpx;font-size:25rpx;color:#333;}
|
||||
.address-window .list .item .iconfont{font-size:37rpx;color:#2c2c2c;}
|
||||
.address-window .list .item .iconfont.icon-complete{font-size:30rpx;color:#fff;}
|
||||
.address-window .list .item .address{width:560rpx;}
|
||||
.address-window .list .item .address .name{font-size:28rpx;font-weight:bold;color:#282828;margin-bottom:4rpx;}
|
||||
.address-window .list .item .address .name .phone{margin-left:18rpx;}
|
||||
.address-window .addressBnt{font-size:30rpx;font-weight:bold;color:#fff;width:690rpx;height:86rpx;border-radius:43rpx;text-align:center;line-height:86rpx;margin:85rpx auto;}
|
||||
.address-window .pictrue{width:414rpx;height:336rpx;margin:0 auto;}
|
||||
.address-window .pictrue image{width:100%;height:100%;}
|
||||
|
||||
241
view/crmebNewUI/components/authorize/authorize.js
Normal file
@ -0,0 +1,241 @@
|
||||
var app = getApp();
|
||||
Component({
|
||||
properties: {
|
||||
iShidden: {
|
||||
type: Boolean,
|
||||
value: true,
|
||||
},
|
||||
//是否自动登录
|
||||
isAuto: {
|
||||
type: Boolean,
|
||||
value: true,
|
||||
},
|
||||
},
|
||||
data: {
|
||||
cloneIner: null,
|
||||
url: app.globalData.url,
|
||||
loading:false,
|
||||
},
|
||||
pageLifetimes: {
|
||||
hide: function () {
|
||||
//关闭页面时销毁定时器
|
||||
if (this.data.cloneIner) clearInterval(this.data.cloneIner);
|
||||
},
|
||||
show: function () {
|
||||
//打开页面销毁定时器
|
||||
if (this.data.cloneIner) clearInterval(this.data.cloneIner);
|
||||
},
|
||||
},
|
||||
detached() {
|
||||
if (this.data.cloneIner) clearInterval(this.data.cloneIner);
|
||||
},
|
||||
attached() {
|
||||
this.get_logo_url();
|
||||
this.setAuthStatus();
|
||||
},
|
||||
methods: {
|
||||
get_logo_url: function () {
|
||||
if (wx.getStorageSync('logo_url')) return this.setData({ logo_url: wx.getStorageSync('logo_url') });
|
||||
app.baseGet(app.U({ c: 'public_api', a: 'get_logo_url' }), function (res) {
|
||||
wx.setStorageSync('logo_url', res.data.logo_url);
|
||||
this.setData({ logo_url: res.data.logo_url });
|
||||
}.bind(this));
|
||||
},
|
||||
//监听登录状态
|
||||
WatchIsLogin: function () {
|
||||
this.data.cloneIner = setInterval(function () {
|
||||
//防止死循环,超过错误次数终止监听
|
||||
if (this.getErrorCount()) return clearInterval(this.data.cloneIner);
|
||||
if (app.globalData.token == '' && this.data.loading===false) this.setAuthStatus();
|
||||
}.bind(this),800);
|
||||
this.setData({ cloneIner: this.data.cloneIner });
|
||||
},
|
||||
//检测登录状态并执行自动登录
|
||||
setAuthStatus() {
|
||||
var that = this;
|
||||
that.setErrorCount();
|
||||
wx.getSetting({
|
||||
success(res) {
|
||||
if (!res.authSetting['scope.userInfo']) {
|
||||
//没有授权不会自动弹出登录框
|
||||
if (that.data.isAuto === false) return;
|
||||
//自动弹出授权
|
||||
that.setData({ iShidden: false });
|
||||
} else {
|
||||
//自动登录
|
||||
that.setData({ iShidden: true });
|
||||
if (app.globalData.token) {
|
||||
that.triggerEvent('onLoadFun', app.globalData.token);
|
||||
that.WatchIsLogin();
|
||||
} else {
|
||||
wx.showLoading({ title: '正在登录中' });
|
||||
that.getUserInfoBydecryptCode();
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
//访问服务器获得cache_key
|
||||
setCode(code, successFn, errotFn) {
|
||||
var that = this;
|
||||
that.setData({ loading: true });
|
||||
app.basePost(app.U({ c: 'Login', a: 'setCode' }), { code: code }, function (res) {
|
||||
that.setData({ loading: false });
|
||||
wx.setStorage({ key: 'cache_key', data: res.data.cache_key});
|
||||
successFn && successFn(res);
|
||||
}, function (res) {
|
||||
that.setData({ loading: false });
|
||||
if (errotFn) errotFn(res);
|
||||
else return app.Tips({ title: '获取cache_key失败' });
|
||||
});
|
||||
},
|
||||
//获取code
|
||||
getSessionKey(code, successFn, errotFn) {
|
||||
var that = this;
|
||||
wx.checkSession({
|
||||
success: function (res) {
|
||||
wx.getStorage({
|
||||
key:'cache_key',
|
||||
success:function(res){
|
||||
if (res.data){
|
||||
successFn && successFn();
|
||||
}else{
|
||||
that.setCode(code, successFn, errotFn);
|
||||
}
|
||||
},
|
||||
fail(res){
|
||||
that.setCode(code, successFn, errotFn);
|
||||
},
|
||||
});
|
||||
},
|
||||
fail: function () {
|
||||
that.setCode(code, successFn, errotFn);
|
||||
}
|
||||
});
|
||||
},
|
||||
login:function(){
|
||||
var that=this;
|
||||
wx.login({
|
||||
success: function (res) {
|
||||
if (!res.code) return app.Tips({ title: '登录失败!' + res.errMsg });
|
||||
//获取cache_key并缓存
|
||||
that.getSessionKey(res.code, function () {
|
||||
that.getUserInfoBydecryptCode();
|
||||
});
|
||||
},
|
||||
fail() {
|
||||
wx.hideLoading();
|
||||
}
|
||||
})
|
||||
},
|
||||
//授权
|
||||
setUserInfo(e) {
|
||||
wx.showLoading({ title: '正在登录中' });
|
||||
this.login();
|
||||
},
|
||||
close: function () {
|
||||
if (this.data.isAuto) return;
|
||||
this.setData({ iShidden: true });
|
||||
},
|
||||
//登录获取访问权限
|
||||
getUserInfoBydecryptCode: function () {
|
||||
var that = this;
|
||||
if (this.getErrorCount()){
|
||||
this.setData({ iShidden: false, ErrorCount: 0 });
|
||||
return app.Tips({ title: '获取code失败,请重新授权尝试获取!' });
|
||||
}
|
||||
wx.getStorage({
|
||||
key:'cache_key',
|
||||
success:function(res){
|
||||
if(res.data){
|
||||
var cache_key = res.data;
|
||||
wx.getUserInfo({
|
||||
lang: 'zh_CN',
|
||||
success: function (res) {
|
||||
var pdata = {};
|
||||
pdata.spid = app.globalData.spid;//获取推广人ID
|
||||
pdata.code = app.globalData.code;//获取推广人分享二维码ID
|
||||
if (res.iv) {
|
||||
pdata.iv = encodeURI(res.iv);
|
||||
pdata.encryptedData = res.encryptedData;
|
||||
pdata.cache_key = cache_key;
|
||||
//获取用户信息生成访问token
|
||||
that.setData({ loading: true });
|
||||
app.basePost(app.U({ c: 'login', a: 'index' }), pdata, function (res) {
|
||||
that.setData({ loading: false });
|
||||
if (res.data.status == 0) return app.Tips({ title: '抱歉,您已被禁止登录!' });
|
||||
else if (res.data.status == 410) {
|
||||
wx.clearStorage();
|
||||
wx.hideLoading();
|
||||
that.setErrorCount();
|
||||
that.login();
|
||||
return false;
|
||||
}
|
||||
//取消登录提示
|
||||
wx.hideLoading();
|
||||
//关闭登录弹出窗口
|
||||
that.setData({ iShidden: true, ErrorCount: 0 });
|
||||
//保存token和记录登录状态
|
||||
app.globalData.token = res.data.token;
|
||||
app.globalData.isLog = true;
|
||||
//执行登录完成回调
|
||||
that.triggerEvent('onLoadFun', app.globalData.uid);
|
||||
//清除定时器
|
||||
if (that.data.cloneIner) clearInterval(that.data.cloneIner);
|
||||
//监听登录状态
|
||||
that.WatchIsLogin();
|
||||
}, function (res) {
|
||||
that.setData({ loading: false });
|
||||
wx.hideLoading();
|
||||
that.setErrorCount();
|
||||
wx.clearStorage();
|
||||
return app.Tips({ title: res.msg });
|
||||
});
|
||||
} else {
|
||||
wx.hideLoading();
|
||||
wx.clearStorage();
|
||||
that.setErrorCount();
|
||||
return app.Tips({ title: '用户信息获取失败!' });
|
||||
}
|
||||
},
|
||||
fail: function () {
|
||||
wx.hideLoading();
|
||||
wx.clearStorage();
|
||||
that.setErrorCount();
|
||||
if (that.data.isAuto) that.login();
|
||||
},
|
||||
})
|
||||
}else{
|
||||
wx.hideLoading();
|
||||
wx.clearStorage();
|
||||
that.setErrorCount();
|
||||
if (that.data.isAuto) that.login();
|
||||
return false;
|
||||
}
|
||||
},
|
||||
fail:function(){
|
||||
wx.hideLoading();
|
||||
wx.clearStorage();
|
||||
that.setErrorCount();
|
||||
if (that.data.isAuto) that.login();
|
||||
}
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 处理错误次数,防止死循环
|
||||
*
|
||||
*/
|
||||
setErrorCount: function () {
|
||||
if (!this.data.ErrorCount) this.data.ErrorCount = 1;
|
||||
else this.data.ErrorCount++;
|
||||
this.setData({ ErrorCount: this.data.ErrorCount });
|
||||
},
|
||||
/**
|
||||
* 获取错误次数,是否终止监听
|
||||
*
|
||||
*/
|
||||
getErrorCount: function () {
|
||||
return this.data.ErrorCount >= 10 ? true : false;
|
||||
}
|
||||
},
|
||||
})
|
||||
3
view/crmebNewUI/components/authorize/authorize.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"component":true
|
||||
}
|
||||
10
view/crmebNewUI/components/authorize/authorize.wxml
Normal file
@ -0,0 +1,10 @@
|
||||
<!--pages/authorize/authorize.wxml-->
|
||||
<view class='Popup' hidden='{{iShidden}}'>
|
||||
<image src='{{url}}{{logo_url}}'></image>
|
||||
<view class='title'>授权提醒</view>
|
||||
<view class='tip'>请授权头像等信息,以便为您提供更好的服务</view>
|
||||
<view class='bottom flex'>
|
||||
<button class='item grant on' type="primary" open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="setUserInfo">去授权</button>
|
||||
</view>
|
||||
</view>
|
||||
<view class='mask' hidden='{{iShidden}}' catchtouchmove="true" bindtap='close'></view>
|
||||
11
view/crmebNewUI/components/authorize/authorize.wxss
Normal file
@ -0,0 +1,11 @@
|
||||
/* pages/authorize/authorize.wxss */
|
||||
@import "../../app.wxss";
|
||||
|
||||
.Popup{width:500rpx;background-color:#fff;position:fixed;top:50%;left:50%;margin-left:-250rpx;transform:translateY(-50%);z-index:320;}
|
||||
.Popup image{width:150rpx;height:150rpx;margin:-67rpx auto 0 auto;display:block;border: 8rpx solid #fff;border-radius: 50%}
|
||||
.Popup .title{font-size:28rpx;color:#000;text-align:center;margin-top: 30rpx}
|
||||
.Popup .tip{font-size:22rpx;color:#555;padding:0 24rpx;margin-top:25rpx;}
|
||||
.Popup .bottom .item{width:50%;height:80rpx;background-color:#eeeeee;text-align:center;line-height:80rpx;font-size:24rpx;color:#666;margin-top:54rpx;}
|
||||
.Popup .bottom .item.on{width: 100%}
|
||||
.Popup .bottom .item.grant{font-size:28rpx;color:#fff;font-weight:bold;background-color:#e93323;border-radius:0;padding:0;}
|
||||
.mask{position:fixed;top:0;right:0;left:0;bottom:0;background-color:rgba(0,0,0,0.65);z-index:310;}
|
||||
49
view/crmebNewUI/components/coupon-list-window/index.js
Normal file
@ -0,0 +1,49 @@
|
||||
var app = getApp();
|
||||
Component({
|
||||
properties: {
|
||||
coupon: {
|
||||
type: Object,
|
||||
value:{
|
||||
list:[],
|
||||
statusTile:''
|
||||
},
|
||||
},
|
||||
//打开状态 0=领取优惠券,1=使用优惠券
|
||||
openType:{
|
||||
type:Number,
|
||||
value:0,
|
||||
}
|
||||
},
|
||||
data: {
|
||||
},
|
||||
attached: function () {
|
||||
},
|
||||
methods: {
|
||||
close: function () {
|
||||
this.triggerEvent('ChangCouponsClone');
|
||||
},
|
||||
getCouponUser:function(e){
|
||||
var that = this;
|
||||
var id = e.currentTarget.dataset.id;
|
||||
var index = e.currentTarget.dataset.index;
|
||||
var list = that.data.coupon.list;
|
||||
if (list[index].is_use == true && this.data.openType==0) return true;
|
||||
switch (this.data.openType){
|
||||
case 0:
|
||||
//领取优惠券
|
||||
app.basePost(app.U({ c: 'coupons_api', a: 'user_get_coupon' }), { couponId:id},function(res){
|
||||
list[index].is_use=true;
|
||||
that.setData({
|
||||
['coupon.list']: list
|
||||
});
|
||||
app.Tips({ title: '领取成功' });
|
||||
that.triggerEvent('ChangCoupons',list[index]);
|
||||
});
|
||||
break;
|
||||
case 1:
|
||||
that.triggerEvent('ChangCoupons',index);
|
||||
break;
|
||||
}
|
||||
},
|
||||
}
|
||||
})
|
||||
4
view/crmebNewUI/components/coupon-list-window/index.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"usingComponents": {},
|
||||
"component": true
|
||||
}
|
||||
20
view/crmebNewUI/components/coupon-list-window/index.wxml
Normal file
@ -0,0 +1,20 @@
|
||||
<view class='coupon-list-window {{coupon.coupon==true?"on":""}}'>
|
||||
<view class='title'>优惠券<text class='iconfont icon-guanbi' bindtap='close'></text></view>
|
||||
<view class='coupon-list' wx:if="{{coupon.list.length}}">
|
||||
<view class='item acea-row row-center-wrapper' wx:for="{{coupon.list}}" bindtap='getCouponUser' data-index='{{index}}' data-id="{{item.id}}" wx:key>
|
||||
<view class='money'>¥<text class='num'>{{item.coupon_price}}</text></view>
|
||||
<view class='text'>
|
||||
<view class='condition line1'>购物满{{item.use_min_price}}元可用</view>
|
||||
<view class='data acea-row row-between-wrapper'>
|
||||
<view>{{item.add_time}}-{{item.end_time}}</view>
|
||||
<view class='bnt gray' wx:if="{{item.is_use}}">{{item.use_title || '已领取'}}</view>
|
||||
<view class='bnt bg-color' wx:else>{{coupon.statusTile || '立即领取'}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 无优惠券 -->
|
||||
<view class='pictrue' wx:else><image src='/images/noCoupon.png'></image></view>
|
||||
</view>
|
||||
<view class='mask' catchtouchmove="true" hidden='{{coupon.coupon==false}}' bindtap='close'></view>
|
||||
|
||||
8
view/crmebNewUI/components/coupon-list-window/index.wxss
Normal file
@ -0,0 +1,8 @@
|
||||
@import '/app.wxss';
|
||||
.coupon-list-window{position:fixed;bottom:0;left:0;width:100%;background-color:#f5f5f5;border-radius:16rpx 16rpx 0 0;z-index:111;transform:translate3d(0,100%,0);transition:all .3s cubic-bezier(.25,.5,.5,.9);z-index: 1000}
|
||||
.coupon-list-window.on{transform:translate3d(0,0,0);}
|
||||
.coupon-list-window .title{height:124rpx;width:100%;text-align:center;line-height:124rpx;font-size:32rpx;font-weight:bold;position:relative;}
|
||||
.coupon-list-window .title .iconfont{position:absolute;right:30rpx;top:50%;transform:translateY(-50%);font-size:35rpx;color:#8a8a8a;font-weight:normal;}
|
||||
.coupon-list-window .coupon-list{margin:0 0 50rpx 0;height:550rpx;overflow:auto;}
|
||||
.coupon-list-window .pictrue{width:414rpx;height:336rpx;margin:0 auto 50rpx auto;}
|
||||
.coupon-list-window .pictrue image{width:100%;height:100%;}
|
||||
24
view/crmebNewUI/components/coupon-window/index.js
Normal file
@ -0,0 +1,24 @@
|
||||
var app = getApp();
|
||||
Component({
|
||||
properties: {
|
||||
window:{
|
||||
type: Boolean,
|
||||
value: true,
|
||||
},
|
||||
couponList:{
|
||||
type:Array,
|
||||
value:[],
|
||||
}
|
||||
},
|
||||
data: {
|
||||
|
||||
},
|
||||
attached: function () {
|
||||
|
||||
},
|
||||
methods: {
|
||||
close:function(){
|
||||
this.triggerEvent('onColse');
|
||||
}
|
||||
}
|
||||
})
|
||||
3
view/crmebNewUI/components/coupon-window/index.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"usingComponents": {}
|
||||
}
|
||||
16
view/crmebNewUI/components/coupon-window/index.wxml
Normal file
@ -0,0 +1,16 @@
|
||||
<view class='coupon-window {{window==true?"on":""}}'>
|
||||
<view class='couponWinList'>
|
||||
<view class='item acea-row row-between-wrapper' wx:for="{{couponList}}" wx:key>
|
||||
<view class='money font-color'>¥<text class='num'>{{item.coupon_price}}</text></view>
|
||||
<view class='text'>
|
||||
<view class='name'>购物买{{item.use_min_price}}减{{item.coupon_price}}</view>
|
||||
<view>{{item.add_time}}-{{item.end_time}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class='lid'>
|
||||
<navigator hover-class='none' url='/pages/user_get_coupon/index' class='bnt font-color'>立即领取</navigator>
|
||||
<view class='iconfont icon-guanbi3' bindtap='close'></view>
|
||||
</view>
|
||||
</view>
|
||||
<view class='mask' catchtouchmove="true" hidden='{{window==false}}'></view>
|
||||
14
view/crmebNewUI/components/coupon-window/index.wxss
Normal file
16
view/crmebNewUI/components/goodList/index.js
Normal file
@ -0,0 +1,16 @@
|
||||
// components/goodList/index.js
|
||||
Component({
|
||||
properties: {
|
||||
status: {
|
||||
type: String,
|
||||
value: 0,
|
||||
},
|
||||
bastList: {
|
||||
type: Object,
|
||||
value: [],
|
||||
}
|
||||
},
|
||||
data: {
|
||||
|
||||
}
|
||||
})
|
||||
4
view/crmebNewUI/components/goodList/index.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"usingComponents": {},
|
||||
"component": true
|
||||
}
|
||||
21
view/crmebNewUI/components/goodList/index.wxml
Normal file
@ -0,0 +1,21 @@
|
||||
<view class='goodList'>
|
||||
<block wx:for="{{bastList}}" wx:key>
|
||||
<navigator url='/pages/goods_details/index?id={{item.id}}' class='item acea-row row-between-wrapper'>
|
||||
<view class='pictrue'>
|
||||
<image src='{{item.image}}'></image>
|
||||
<image wx:if="{{index == 0 && status == 1}}" src='/images/one.png' class='numPic'></image>
|
||||
<image wx:if="{{index == 1 && status == 1}}" src='/images/two.png' class='numPic'></image>
|
||||
<image wx:if="{{index == 2 && status == 1}}" src='/images/three.png' class='numPic'></image>
|
||||
</view>
|
||||
<view class='underline'>
|
||||
<view class='text'>
|
||||
<view class='line1'>{{item.store_name}}</view>
|
||||
<view class='money font-color'>¥<text class='num'>{{item.price}}</text></view>
|
||||
<view class='vip-money acea-row row-middle'>¥{{item.vip_price || 0}}<image wx:if='{{item.vip_price && item.vip_price > 0}}' src='/images/vip.png'></image><text class='num'>已售{{item.sales}}{{item.unit_name}}</text></view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
<view class='iconfont icon-gouwuche cart-color acea-row row-center-wrapper'></view>
|
||||
</navigator>
|
||||
</block>
|
||||
</view>
|
||||
14
view/crmebNewUI/components/goodList/index.wxss
Normal file
@ -0,0 +1,14 @@
|
||||
@import '/app.wxss';
|
||||
.goodList .item{position:relative;padding-left:30rpx;}
|
||||
.goodList .item .pictrue{width:180rpx;height:180rpx;position:relative;}
|
||||
.goodList .item .pictrue image{width:100%;height:100%;border-radius:6rpx;}
|
||||
.goodList .item .pictrue .numPic{position:absolute;left:7rpx;top:7rpx;width:50rpx;height:50rpx;border-radius:50%;}
|
||||
.goodList .item .underline{padding:30rpx 30rpx 30rpx 0;border-bottom:1px solid #f5f5f5;}
|
||||
.goodList .item:nth-last-child(1) .underline{border-bottom:0; }
|
||||
.goodList .item .text{font-size:30rpx;color:#222;width:489rpx;}
|
||||
.goodList .item .text .money{font-size:26rpx;font-weight:bold;margin-top:50rpx;}
|
||||
.goodList .item .text .money .num{font-size:34rpx;}
|
||||
.goodList .item .text .vip-money{font-size:24rpx;color:#282828;font-weight:bold;margin-top:15rpx;}
|
||||
.goodList .item .text .vip-money image{width:46rpx;height:21rpx;margin-left:5rpx;}
|
||||
.goodList .item .text .vip-money .num{font-size:22rpx;color:#aaa;font-weight:normal;margin:-2rpx 0 0 22rpx;}
|
||||
.goodList .item .iconfont{position:absolute;right:30rpx;width:50rpx;height:50rpx;border-radius:50%;font-size:30rpx;bottom:38rpx;}
|
||||
77
view/crmebNewUI/components/home/index.js
Normal file
@ -0,0 +1,77 @@
|
||||
// components/home/index.js
|
||||
Page({
|
||||
|
||||
/**
|
||||
* 页面的初始数据
|
||||
*/
|
||||
data: {
|
||||
homeActive:false
|
||||
},
|
||||
/**
|
||||
* 生命周期函数--监听页面加载
|
||||
*/
|
||||
onLoad: function (options) {
|
||||
|
||||
},
|
||||
setTouchMove: function (e) {
|
||||
var that = this;
|
||||
if (e.touches[0].clientY < 400 && e.touches[0].clientY > 66) {
|
||||
that.setData({
|
||||
top: e.touches[0].clientY
|
||||
})
|
||||
}
|
||||
},
|
||||
open:function(){
|
||||
this.setData({
|
||||
homeActive: !this.data.homeActive
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 生命周期函数--监听页面初次渲染完成
|
||||
*/
|
||||
onReady: function () {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面显示
|
||||
*/
|
||||
onShow: function () {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面隐藏
|
||||
*/
|
||||
onHide: function () {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 生命周期函数--监听页面卸载
|
||||
*/
|
||||
onUnload: function () {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面相关事件处理函数--监听用户下拉动作
|
||||
*/
|
||||
onPullDownRefresh: function () {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面上拉触底事件的处理函数
|
||||
*/
|
||||
onReachBottom: function () {
|
||||
|
||||
},
|
||||
|
||||
/**
|
||||
* 用户点击右上角分享
|
||||
*/
|
||||
onShareAppMessage: function () {
|
||||
|
||||
}
|
||||
})
|
||||
4
view/crmebNewUI/components/home/index.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"usingComponents": {},
|
||||
"component": true
|
||||
}
|
||||
9
view/crmebNewUI/components/home/index.wxml
Normal file
@ -0,0 +1,9 @@
|
||||
<view class='home' style=" top:{{top*2}}rpx;" catchtouchmove="setTouchMove">
|
||||
|
||||
<view class='homeCon bg-color acea-row row-column-between {{homeActive==true?"on":""}}'>
|
||||
<navigator hover-class='none' url='/pages/index/index' open-type='switchTab' class='iconfont icon-shouye-xianxing'></navigator>
|
||||
<navigator hover-class='none' url='/pages/order_addcart/order_addcart' open-type='switchTab' class='iconfont icon-caigou-xianxing'></navigator>
|
||||
<navigator hover-class='none' url='/pages/user/user' open-type='switchTab' class='iconfont icon-yonghu1'></navigator>
|
||||
</view>
|
||||
<view class='pictrue' bindtap='open'><image src='{{homeActive==false?"/images/close.gif":"/images/open.gif"}}'></image></view>
|
||||
</view>
|
||||
7
view/crmebNewUI/components/home/index.wxss
Normal file
@ -0,0 +1,7 @@
|
||||
@import '/app.wxss';
|
||||
.home{position: fixed ;top:780rpx;color: white;text-align: center;z-index:99;right:10rpx;}
|
||||
.home .homeCon{width:86rpx;border-radius:50rpx;padding:34rpx 0;box-sizing:border-box;transition:all 0.3s ease-in-out 0s;opacity:0;transform: scale(0);height:0rpx;color:#e93323;}
|
||||
.home .homeCon.on{opacity:1;transform: scale(1);height:300rpx;color:#fff;}
|
||||
.home .homeCon .iconfont{font-size:48rpx;}
|
||||
.home .pictrue{width:86rpx;height:86rpx;border-radius:50%;margin-top:20rpx;}
|
||||
.home .pictrue image{width:100%;height:100%;border-radius:50%;}
|
||||
57
view/crmebNewUI/components/navbar/index.js
Normal file
@ -0,0 +1,57 @@
|
||||
var app = getApp();
|
||||
Component({
|
||||
properties: {
|
||||
parameter:{
|
||||
type: Object,
|
||||
value:{
|
||||
class:'0'
|
||||
},
|
||||
},
|
||||
logoUrl:{
|
||||
type:String,
|
||||
value:'',
|
||||
}
|
||||
},
|
||||
data: {
|
||||
navH: ""
|
||||
},
|
||||
ready: function(){
|
||||
this.setClass();
|
||||
var pages = getCurrentPages();
|
||||
if (pages.length <= 1) this.setData({'parameter.return':0});
|
||||
},
|
||||
attached: function () {
|
||||
this.setData({
|
||||
navH: app.globalData.navHeight
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
return:function(){
|
||||
wx.navigateBack();
|
||||
},
|
||||
setGoodsSearch:function(){
|
||||
wx.navigateTo({
|
||||
url: '/pages/goods_search/index',
|
||||
})
|
||||
},
|
||||
setClass:function(){
|
||||
var color = '';
|
||||
switch (this.data.parameter.class) {
|
||||
case "0": case 'on':
|
||||
color = 'on'
|
||||
break;
|
||||
case '1': case 'black':
|
||||
color = 'black'
|
||||
break;
|
||||
case '2': case 'gray':
|
||||
color = 'gray'
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
this.setData({
|
||||
'parameter.class': color
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
4
view/crmebNewUI/components/navbar/index.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"usingComponents": {},
|
||||
"component": true
|
||||
}
|
||||
13
view/crmebNewUI/components/navbar/index.wxml
Normal file
@ -0,0 +1,13 @@
|
||||
<view class='navbar {{parameter.class}}' style='height:{{navH}}rpx'>
|
||||
<view class='navbarH' style='height:{{navH}}rpx;'>
|
||||
<view class='navbarCon acea-row row-center-wrapper' wx:if='{{parameter.navbar==0}}'>
|
||||
<view class='search acea-row row-middle' bindtap='setGoodsSearch'><text class='iconfont icon-xiazai5'></text>搜索商品</view>
|
||||
<view class='logo'><image src='{{logoUrl}}'></image></view>
|
||||
</view>
|
||||
<view class='navbarCon acea-row row-center-wrapper' wx:if='{{parameter.navbar==1}}'>
|
||||
<view class='name {{parameter.color==true?"on":""}} line1'>{{parameter.title}}</view>
|
||||
<view class='iconfont icon-xiangzuo {{parameter.color==true?"on":""}}' wx:if='{{parameter.return==1}}' bindtap='return'></view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view style='height:{{navH}}rpx'></view>
|
||||
15
view/crmebNewUI/components/navbar/index.wxss
Normal file
@ -0,0 +1,15 @@
|
||||
@import '/app.wxss';
|
||||
.navbar{position:fixed;background-color:#fff;top:0;left:0;z-index:999;width:100%;}
|
||||
.navbar.on{background-color:#e93323;}
|
||||
.navbar.black{background-color:#232323;}
|
||||
.navbar.gray{background-color:#666;}
|
||||
.navbar .navbarH{position:relative;}
|
||||
.navbar .navbarH .navbarCon{position:absolute;bottom:0;height:100rpx;width:100%;}
|
||||
.navbar .navbarH .navbarCon .name{color:#000;font-size:36rpx;font-weight:bold;width: 300rpx;text-align: center;}
|
||||
.navbar .navbarH .navbarCon .name.on{color:#fff;}
|
||||
.navbar .navbarH .navbarCon .icon-xiangzuo{color:#000;font-weight:bold;position:absolute;font-size:40rpx;left:16rpx;width:100rpx;height:56rpx;line-height:54rpx;top:50%;transform:translateY(-50%);}
|
||||
.navbar .navbarH .navbarCon .icon-xiangzuo.on{color:#fff;}
|
||||
.navbar .navbarH .navbarCon .logo{width:127rpx;height:45rpx;position:absolute;left:30rpx;top:50%;transform:translateY(-50%);}
|
||||
.navbar .navbarH .navbarCon .logo image{width:100%;height:100%;display:block;}
|
||||
.navbar .navbarH .navbarCon .search{width:360rpx;height:64rpx;background-color:#f7f7f7;border-radius:50rpx;padding:0 28rpx;box-sizing:border-box;font-size:28rpx;color:#bbb;margin-right:26rpx;}
|
||||
.navbar .navbarH .navbarCon .search .icon-xiazai5{font-size:34rpx;margin-right:16rpx;}
|
||||
21
view/crmebNewUI/components/orderGoods/index.js
Normal file
@ -0,0 +1,21 @@
|
||||
var app = getApp();
|
||||
Component({
|
||||
properties: {
|
||||
evaluate: {
|
||||
type: Number,
|
||||
value:0,
|
||||
},
|
||||
cartInfo:{
|
||||
type:Object,
|
||||
value:[],
|
||||
},
|
||||
orderId:{
|
||||
type:String,
|
||||
value:'',
|
||||
},
|
||||
},
|
||||
data: {
|
||||
},
|
||||
methods: {
|
||||
}
|
||||
})
|
||||
4
view/crmebNewUI/components/orderGoods/index.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"usingComponents": {},
|
||||
"component": true
|
||||
}
|
||||
22
view/crmebNewUI/components/orderGoods/index.wxml
Normal file
@ -0,0 +1,22 @@
|
||||
<view class="orderGoods">
|
||||
<view class='total'>共{{cartInfo.length}}件商品</view>
|
||||
<view class='goodWrapper'>
|
||||
<view class='item acea-row row-between-wrapper' wx:for="{{cartInfo}}" wx:key>
|
||||
<view class='pictrue'>
|
||||
<image src='{{item.productInfo.attrInfo.image}}' wx:if="{{item.productInfo.attrInfo}}"></image>
|
||||
<image src='{{item.productInfo.image}}' wx:else></image>
|
||||
</view>
|
||||
<view class='text'>
|
||||
<view class='acea-row row-between-wrapper'>
|
||||
<view class='name line1'>{{item.productInfo.store_name}}</view>
|
||||
<view class='num'>x {{item.cart_num}}</view>
|
||||
</view>
|
||||
<view class='attr line1' wx:if="{{item.productInfo.attrInfo}}">{{item.productInfo.attrInfo.suk}}</view>
|
||||
<view class='money font-color' wx:if="{{item.productInfo.attrInfo}}">¥{{item.productInfo.attrInfo.price}}</view>
|
||||
<view class='money font-color' wx:else>¥{{item.productInfo.price}}</view>
|
||||
<navigator class='evaluate' wx:if='{{item.is_reply==0 && evaluate==3}}' hover-class="none" url='/pages/goods_comment_con/index?unique={{item.unique}}&uni={{orderId}}'>评价</navigator>
|
||||
<view class='evaluate' wx:elif='{{item.is_reply==1 && evaluate==3}}'>已评价</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
6
view/crmebNewUI/components/orderGoods/index.wxss
Normal file
@ -0,0 +1,6 @@
|
||||
@import '/app.wxss';
|
||||
.orderGoods{background-color:#fff;margin-top:12rpx;}
|
||||
.orderGoods .total{width:100%;height:86rpx;padding:0 30rpx;border-bottom:2rpx solid #f0f0f0;font-size:30rpx;color:#282828;line-height:86rpx;}
|
||||
|
||||
|
||||
|
||||
68
view/crmebNewUI/components/product-window/index.js
Normal file
@ -0,0 +1,68 @@
|
||||
var app = getApp();
|
||||
Component({
|
||||
properties: {
|
||||
attribute: {
|
||||
type: Object,
|
||||
value:{}
|
||||
},
|
||||
attrList:{
|
||||
type: Object,
|
||||
value:[],
|
||||
},
|
||||
productAttr:{
|
||||
type: Object,
|
||||
value: [],
|
||||
},
|
||||
productSelect:{
|
||||
type: Object,
|
||||
value: {
|
||||
image: '',
|
||||
store_name: '',
|
||||
price: 0,
|
||||
unique: '',
|
||||
stock:0,
|
||||
}
|
||||
},
|
||||
},
|
||||
data: {
|
||||
attrValue:[],
|
||||
attrIndex:0,
|
||||
},
|
||||
attached: function () {
|
||||
},
|
||||
methods: {
|
||||
close: function () {
|
||||
this.triggerEvent('myevent', {'window': false});
|
||||
},
|
||||
CartNumDes:function(){
|
||||
this.triggerEvent('ChangeCartNum', false);
|
||||
},
|
||||
CartNumInt:function(){
|
||||
this.triggerEvent('ChangeCartNum', true);
|
||||
},
|
||||
tapAttr:function(e){
|
||||
//父级index
|
||||
var indexw = e.currentTarget.dataset.indexw;
|
||||
//子集index
|
||||
var indexn = e.currentTarget.dataset.indexn;
|
||||
//每次点击获得的属性
|
||||
var attr = this.data.productAttr[indexw].attr_value[indexn];
|
||||
//设置当前点击属性
|
||||
this.data.productAttr[indexw].checked = attr['attr'];
|
||||
this.setData({
|
||||
productAttr: this.data.productAttr,
|
||||
});
|
||||
var value = this.getCheckedValue().sort().join(',');
|
||||
this.triggerEvent('ChangeAttr',value);
|
||||
},
|
||||
getCheckedValue: function () {
|
||||
return this.data.productAttr.map(function (attr) {
|
||||
return attr.checked;
|
||||
});
|
||||
},
|
||||
ResetAttr:function(){
|
||||
for (var k in this.data.productAttr) this.data.productAttr[k].checked='';
|
||||
this.setData({ productAttr: this.data.productAttr});
|
||||
},
|
||||
}
|
||||
})
|
||||
4
view/crmebNewUI/components/product-window/index.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"usingComponents": {},
|
||||
"component": true
|
||||
}
|
||||
30
view/crmebNewUI/components/product-window/index.wxml
Normal file
@ -0,0 +1,30 @@
|
||||
<view class='product-window {{attribute.cartAttr==true?"on":""}}'>
|
||||
<view class='textpic acea-row row-between-wrapper'>
|
||||
<view class='pictrue'><image src='{{productSelect.image}}'></image></view>
|
||||
<view class='text'>
|
||||
<view class='line1'>{{productSelect.store_name}}</view>
|
||||
<view class='money font-color'>
|
||||
¥<text class='num'>{{productSelect.price}}</text>
|
||||
<text class='stock'>库存: {{productSelect.stock}}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class='iconfont icon-guanbi' bindtap='close'></view>
|
||||
</view>
|
||||
<view class='productWinList'>
|
||||
<view class='item' wx:for='{{productAttr}}' wx:key>
|
||||
<view class='title'>{{item.attr_name}}</view>
|
||||
<view class='listn acea-row row-middle'>
|
||||
<view class='itemn {{item.checked==itemn.attr ?"on":""}}' wx:for='{{item.attr_value}}' wx:for-item='itemn' wx:for-index='indexn' data-indexw='{{index}}' data-indexn='{{indexn}}' bindtap='tapAttr' wx:key>{{itemn.attr}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class='cart'>
|
||||
<view class='title'>数量</view>
|
||||
<view class='carnum acea-row row-left'>
|
||||
<view class='reduce {{productSelect.cart_num <= 1 ? "on":""}}' bindtap='CartNumDes'>-</view>
|
||||
<view class='num'>{{productSelect.cart_num}}</view>
|
||||
<view class='plus {{productSelect.cart_num >= productSelect.stock || productSelect.is_on ? "on":""}}' bindtap='CartNumInt'>+</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class='mask' catchtouchmove="true" hidden='{{attribute.cartAttr==false}}' bindtap='close'></view>
|
||||
28
view/crmebNewUI/components/product-window/index.wxss
Normal file
@ -0,0 +1,28 @@
|
||||
@import '/app.wxss';
|
||||
.product-window{position:fixed;bottom:0;width:100%;left:0;background-color:#fff;z-index:88;border-radius:16rpx 16rpx 0 0;padding-bottom:140rpx;transform:translate3d(0,100%,0);transition:all .3s cubic-bezier(.25,.5,.5,.9);}
|
||||
.product-window.on{transform:translate3d(0,0,0);}
|
||||
.product-window .textpic{padding:0 130rpx 0 30rpx;margin-top:29rpx;position:relative;}
|
||||
.product-window .textpic .pictrue{width:150rpx;height:150rpx;}
|
||||
.product-window .textpic .pictrue image{width:100%;height:100%;border-radius:10rpx;}
|
||||
.product-window .textpic .text{width:410rpx;font-size:32rpx;color:#202020;}
|
||||
.product-window .textpic .text .money{font-size:24rpx;margin-top:40rpx;}
|
||||
.product-window .textpic .text .money .num{font-size:36rpx;}
|
||||
.product-window .textpic .text .money .stock{color:#999;margin-left:18rpx;}
|
||||
.product-window .textpic .iconfont{position:absolute;right:30rpx;top:-5rpx;font-size:35rpx;color:#8a8a8a;}
|
||||
.product-window .productWinList{max-height:395rpx;overflow:auto;margin-top:36rpx;}
|
||||
.product-window .productWinList .item~.item{margin-top:36rpx;}
|
||||
.product-window .productWinList .item .title{font-size:30rpx;color:#999;padding:0 30rpx;}
|
||||
.product-window .productWinList .item .listn{padding:0 30rpx 0 16rpx;}
|
||||
.product-window .productWinList .item .listn .itemn{border:1px solid #bbb;font-size:26rpx;color:#282828;padding:7rpx 33rpx;border-radius:6rpx;margin:14rpx 0 0 14rpx;}
|
||||
.product-window .productWinList .item .listn .itemn.on{color:#fff;background-color:#ff3700;border-color:#ff3700;}
|
||||
.product-window .cart{margin-top:36rpx;padding:0 30rpx;}
|
||||
.product-window .cart .title{font-size:30rpx;color:#999;}
|
||||
.product-window .cart .carnum{height:54rpx;margin-top:24rpx;}
|
||||
.product-window .cart .carnum view{border:1px solid #a4a4a4;width:84rpx;text-align:center;height:100%;line-height:54rpx;color:#a4a4a4;font-size:45rpx;}
|
||||
.product-window .cart .carnum .reduce{border-right:0;border-radius:6rpx 0 0 6rpx;line-height:48rpx;}
|
||||
.product-window .cart .carnum .reduce.on{border-color:#e3e3e3;color:#dedede;}
|
||||
.product-window .cart .carnum .plus{border-left:0;border-radius:0 6rpx 6rpx 0;line-height:46rpx;}
|
||||
.product-window .cart .carnum .plus.on{border-color:#e3e3e3;color:#dedede;}
|
||||
.product-window .cart .carnum .num{color:#282828;font-size:28rpx;}
|
||||
|
||||
|
||||
26
view/crmebNewUI/components/productConSwiper/index.js
Normal file
@ -0,0 +1,26 @@
|
||||
var app = getApp();
|
||||
Component({
|
||||
properties: {
|
||||
imgUrls:{
|
||||
type:Object,
|
||||
value:[]
|
||||
}
|
||||
},
|
||||
data: {
|
||||
indicatorDots: false,
|
||||
circular: true,
|
||||
autoplay: false,
|
||||
interval: 3000,
|
||||
duration: 500,
|
||||
currents: "1"
|
||||
},
|
||||
attached:function(){
|
||||
},
|
||||
methods: {
|
||||
change: function (e) {
|
||||
this.setData({
|
||||
currents: e.detail.current + 1
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
4
view/crmebNewUI/components/productConSwiper/index.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"usingComponents": {},
|
||||
"component": true
|
||||
}
|
||||
11
view/crmebNewUI/components/productConSwiper/index.wxml
Normal file
@ -0,0 +1,11 @@
|
||||
<view class='product-bg'>
|
||||
<swiper indicator-dots="{{indicatorDots}}"
|
||||
autoplay="{{autoplay}}" circular="{{circular}}" interval="{{interval}}" duration="{{duration}}" bindchange="change">
|
||||
<block wx:for="{{imgUrls}}" wx:key>
|
||||
<swiper-item>
|
||||
<image src="{{item}}" class="slide-image"/>
|
||||
</swiper-item>
|
||||
</block>
|
||||
</swiper>
|
||||
<view class='pages'>{{currents}}/{{imgUrls.length || 1}}</view>
|
||||
</view>
|
||||
4
view/crmebNewUI/components/productConSwiper/index.wxss
Normal file
@ -0,0 +1,4 @@
|
||||
.product-bg{width:100%;height:750rpx;position:relative;}
|
||||
.product-bg swiper{width:100%;height:100%;position:relative;}
|
||||
.product-bg .slide-image{width:100%;height:100%;}
|
||||
.product-bg .pages{position:absolute;background-color:#fff;height:34rpx;padding:0 10rpx;border-radius:3rpx;right:30rpx;bottom:30rpx;line-height:34rpx;font-size:24rpx;color:#050505;}
|
||||
21
view/crmebNewUI/components/promotionGood/index.js
Normal file
@ -0,0 +1,21 @@
|
||||
var app = getApp();
|
||||
Component({
|
||||
properties: {
|
||||
benefit: {
|
||||
type: Object,
|
||||
value: [],
|
||||
}
|
||||
},
|
||||
data: {
|
||||
|
||||
},
|
||||
ready: function () {
|
||||
|
||||
},
|
||||
attached: function () {
|
||||
|
||||
},
|
||||
methods: {
|
||||
|
||||
}
|
||||
})
|
||||
4
view/crmebNewUI/components/promotionGood/index.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"usingComponents": {},
|
||||
"component": true
|
||||
}
|
||||
17
view/crmebNewUI/components/promotionGood/index.wxml
Normal file
@ -0,0 +1,17 @@
|
||||
<view class='promotionGood'>
|
||||
<block wx:for="{{benefit}}" wx:key>
|
||||
<navigator class='item acea-row row-between-wrapper' url='/pages/goods_details/index?id={{item.id}}'>
|
||||
<view class='pictrue'><image src='{{item.image}}'></image></view>
|
||||
<view class='text'>
|
||||
<view class='name line1'>{{item.store_name}}</view>
|
||||
<view class='sp-money acea-row'>
|
||||
<view class='moneyCon'>促销价: ¥<text class='num'>{{item.price}}</text></view>
|
||||
</view>
|
||||
<view class='acea-row row-between-wrapper'>
|
||||
<view class='money'>日常价:¥{{item.ot_price}}</view>
|
||||
<view>仅剩:{{item.stock}}{{item.unit_name}}</view>
|
||||
</view>
|
||||
</view>
|
||||
</navigator>
|
||||
</block>
|
||||
</view>
|
||||
11
view/crmebNewUI/components/promotionGood/index.wxss
Normal file
@ -0,0 +1,11 @@
|
||||
@import '/app.wxss';
|
||||
.promotionGood{padding:0 30rpx;}
|
||||
.promotionGood .item{border-bottom:1rpx solid #eee;height:250rpx;}
|
||||
.promotionGood .item .pictrue{width:188rpx;height:188rpx;}
|
||||
.promotionGood .item .pictrue image{width:100%;height:100%;border-radius:8rpx;}
|
||||
.promotionGood .item .text{font-size:24rpx;color:#999;width:472rpx;}
|
||||
.promotionGood .item .text .name{font-size:30rpx;color:#333;}
|
||||
.promotionGood .item .text .sp-money{margin:34rpx 0 20rpx 0;}
|
||||
.promotionGood .item .text .sp-money .moneyCon{padding:0 18rpx;background-color:red;height:46rpx;line-height:46rpx;background-image:linear-gradient(to right,#ff6248 0%,#ff3e1e 100%);font-size:20rpx;color:#fff;border-radius:24rpx 3rpx 24rpx 3rpx;}
|
||||
.promotionGood .item .text .sp-money .moneyCon .num{font-size:24rpx;}
|
||||
.promotionGood .item .text .money{text-decoration:line-through;}
|
||||
15
view/crmebNewUI/components/recommend/index.js
Normal file
@ -0,0 +1,15 @@
|
||||
var app = getApp();
|
||||
Component({
|
||||
properties: {
|
||||
host_product:{
|
||||
type: Object,
|
||||
value:[],
|
||||
}
|
||||
},
|
||||
data: {
|
||||
},
|
||||
attached: function () {
|
||||
},
|
||||
methods: {
|
||||
}
|
||||
})
|
||||
4
view/crmebNewUI/components/recommend/index.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"usingComponents": {},
|
||||
"component": true
|
||||
}
|
||||
14
view/crmebNewUI/components/recommend/index.wxml
Normal file
@ -0,0 +1,14 @@
|
||||
<view class='recommend'>
|
||||
<view class='title acea-row row-center-wrapper'>
|
||||
<text class='iconfont icon-zhuangshixian'></text>
|
||||
<text class='name'>为你推荐</text>
|
||||
<text class='iconfont icon-zhuangshixian lefticon'></text>
|
||||
</view>
|
||||
<view class='recommendList acea-row row-between-wrapper'>
|
||||
<navigator class='item' wx:for="{{host_product}}" wx:key url='/pages/goods_details/index?id={{item.id}}' hover-class='none'>
|
||||
<view class='pictrue'><image src='{{item.image}}'></image></view>
|
||||
<view class='name line1'>{{item.store_name}}</view>
|
||||
<view class='money font-color'>¥<text class='num'>{{item.price}}</text></view>
|
||||
</navigator>
|
||||
</view>
|
||||
</view>
|
||||
13
view/crmebNewUI/components/recommend/index.wxss
Normal file
@ -0,0 +1,13 @@
|
||||
@import '/app.wxss';
|
||||
.recommend{background-color:#fff;}
|
||||
.recommend .title{height:135rpx;font-size:28rpx;color:#282828;}
|
||||
.recommend .title .name{margin:0 28rpx;}
|
||||
.recommend .title .iconfont{font-size:170rpx;color:#454545;}
|
||||
.recommend .title .iconfont.lefticon{transform:rotate(180deg);}
|
||||
.recommend .recommendList{padding:0 30rpx;}
|
||||
.recommend .recommendList .item{width:335rpx;margin-bottom:30rpx;}
|
||||
.recommend .recommendList .item .pictrue{width:100%;height:335rpx;}
|
||||
.recommend .recommendList .item .pictrue image{width:100%;height:100%;border-radius:6rpx;}
|
||||
.recommend .recommendList .item .name{font-size:28rpx;color:#282828;margin-top:20rpx;}
|
||||
.recommend .recommendList .item .money{font-size:20rpx;margin-top:8rpx;}
|
||||
.recommend .recommendList .item .money .num{font-size:28rpx;}
|
||||
27
view/crmebNewUI/components/share-red-packets/index.js
Normal file
@ -0,0 +1,27 @@
|
||||
var app = getApp();
|
||||
Component({
|
||||
properties: {
|
||||
sharePacket:{
|
||||
type:Object,
|
||||
value:{
|
||||
isState: true,
|
||||
priceName:'',
|
||||
}
|
||||
}
|
||||
},
|
||||
data: {
|
||||
|
||||
},
|
||||
attached: function () {
|
||||
},
|
||||
methods: {
|
||||
closeShare:function(){
|
||||
this.setData({
|
||||
"sharePacket.isState": true
|
||||
})
|
||||
},
|
||||
goShare:function(){
|
||||
this.triggerEvent('listenerActionSheet');
|
||||
},
|
||||
}
|
||||
})
|
||||
4
view/crmebNewUI/components/share-red-packets/index.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"usingComponents": {},
|
||||
"component": true
|
||||
}
|
||||
13
view/crmebNewUI/components/share-red-packets/index.wxml
Normal file
@ -0,0 +1,13 @@
|
||||
<view class='sharing-packets {{sharePacket.isState==true?"on":""}}'>
|
||||
<view class='iconfont icon-guanbi' bindtap='closeShare'></view>
|
||||
<view class='line'></view>
|
||||
<view class='sharing-con' bindtap='goShare'>
|
||||
<image src='/images/red-packets.png'></image>
|
||||
<view class='text font-color'>
|
||||
<view>会员分享返</view>
|
||||
<view class='money'><text class='label'>¥</text>{{sharePacket.priceName}}</view>
|
||||
<view class='tip'>下单即返佣金</view>
|
||||
<view class='shareBut'>立即分享</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
12
view/crmebNewUI/components/share-red-packets/index.wxss
Normal file
@ -0,0 +1,12 @@
|
||||
@import '/app.wxss';
|
||||
.sharing-packets{position:fixed;right:30rpx;top:900rpx;z-index:5;transition:all 0.3s ease-in-out 0s;opacity:1;transform: scale(1);}
|
||||
.sharing-packets.on{transform: scale(0);opacity:0;}
|
||||
.sharing-packets .iconfont{width:44rpx;height:44rpx;border-radius:50%;text-align:center;line-height:44rpx;background-color:#999;font-size:20rpx;color:#fff;margin:0 auto;box-sizing:border-box;padding-left:1px;}
|
||||
.sharing-packets .line{width:2rpx;height:40rpx;background-color:#999;margin:0 auto;}
|
||||
.sharing-packets .sharing-con{width:187rpx;height:210rpx;position:relative;}
|
||||
.sharing-packets .sharing-con image{width:100%;height:100%;}
|
||||
.sharing-packets .sharing-con .text{position:absolute;top:30rpx;font-size:20rpx;width:100%;text-align:center;}
|
||||
.sharing-packets .sharing-con .text .money{font-size:32rpx;font-weight:bold;margin-top:5rpx;}
|
||||
.sharing-packets .sharing-con .text .money .label{font-size:20rpx;}
|
||||
.sharing-packets .sharing-con .text .tip{font-size:18rpx;color:#999;margin-top:5rpx;}
|
||||
.sharing-packets .sharing-con .text .shareBut{font-size:22rpx;color:#fff;margin-top:18rpx;height:50rpx;line-height:50rpx;}
|
||||
27
view/crmebNewUI/components/swipers/index.js
Normal file
@ -0,0 +1,27 @@
|
||||
// components/swiper/index.js
|
||||
var app = getApp();
|
||||
Component({
|
||||
properties: {
|
||||
imgUrls: {
|
||||
type: Object,
|
||||
value: []
|
||||
}
|
||||
},
|
||||
data: {
|
||||
circular: true,
|
||||
autoplay: true,
|
||||
interval: 3000,
|
||||
duration: 500,
|
||||
currentSwiper: 0
|
||||
},
|
||||
attached: function () {
|
||||
console.log(this.data.imgUrls);
|
||||
},
|
||||
methods: {
|
||||
swiperChange: function (e) {
|
||||
this.setData({
|
||||
currentSwiper: e.detail.current
|
||||
})
|
||||
},
|
||||
}
|
||||
})
|
||||
4
view/crmebNewUI/components/swipers/index.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"usingComponents": {},
|
||||
"component": true
|
||||
}
|
||||
12
view/crmebNewUI/components/swipers/index.wxml
Normal file
@ -0,0 +1,12 @@
|
||||
<view class='swiper'>
|
||||
<swiper autoplay="{{autoplay}}" circular="{{circular}}" interval="{{interval}}" duration="{{duration}}" bindchange="swiperChange">
|
||||
<block wx:for="{{imgUrls}}" wx:key>
|
||||
<swiper-item>
|
||||
<navigator url="{{item.link}}" style='width:100%;height:100%;' hover-class='none'><image src="{{item.img}}" class="slide-image"/></navigator>
|
||||
</swiper-item>
|
||||
</block>
|
||||
</swiper>
|
||||
<view class="dots acea-row">
|
||||
<view class="dot {{index == currentSwiper ? 'active' : ''}}" wx:for="{{imgUrls}}" wx:key></view>
|
||||
</view>
|
||||
</view>
|
||||
7
view/crmebNewUI/components/swipers/index.wxss
Normal file
@ -0,0 +1,7 @@
|
||||
@import '/app.wxss';
|
||||
.swiper{width:100%;height:282rpx;position:relative;}
|
||||
.swiper swiper{width:100%;height:100%;position:relative;}
|
||||
.swiper swiper .slide-image{width:100%;height:100%;}
|
||||
.swiper .dots{position:absolute;right:40rpx;bottom:20rpx;}
|
||||
.swiper .dots .dot{width:12rpx;height:12rpx;border:2rpx solid #fff;border-radius:50%;margin-right:15rpx;}
|
||||
.swiper .dots .dot.active{border-color:#e93323;background-color:#e93323;}
|
||||
24
view/crmebNewUI/components/userEvaluation/index.js
Normal file
@ -0,0 +1,24 @@
|
||||
var app = getApp();
|
||||
Component({
|
||||
properties: {
|
||||
reply:{
|
||||
type:Object,
|
||||
value:[],
|
||||
}
|
||||
},
|
||||
data: {
|
||||
|
||||
},
|
||||
attached: function () {
|
||||
|
||||
},
|
||||
methods: {
|
||||
getpreviewImage:function(e){
|
||||
var dataset=e.currentTarget.dataset;
|
||||
wx.previewImage({
|
||||
urls: this.data.reply[dataset.index].pics,
|
||||
current: this.data.reply[dataset.index].pics[dataset.pic_index],
|
||||
});
|
||||
},
|
||||
}
|
||||
})
|
||||
3
view/crmebNewUI/components/userEvaluation/index.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"component": true
|
||||
}
|
||||
24
view/crmebNewUI/components/userEvaluation/index.wxml
Normal file
@ -0,0 +1,24 @@
|
||||
<view class='evaluateWtapper'>
|
||||
<view class='evaluateItem' wx:for="{{reply}}" wx:key>
|
||||
<view class='pic-text acea-row row-middle'>
|
||||
<view class='pictrue'><image src='{{item.avatar}}'></image></view>
|
||||
<view class='acea-row row-middle'>
|
||||
<view class='name line1'>{{item.nickname}}</view>
|
||||
<view class='start star{{item.star}}'></view>
|
||||
</view>
|
||||
</view>
|
||||
<view class='time'>{{item.add_time}} {{item.suk}}</view>
|
||||
<view class='evaluate-infor'>{{item.comment}}</view>
|
||||
<view class='imgList acea-row'>
|
||||
<view class='pictrue' wx:for="{{item.pics}}" wx:for-item="items" wx:for-index='pic_index' wx:key>
|
||||
<image wx:if="{{items}}" src='{{items}}' data-index="{{index}}" data-pic_index='{{pic_index}}' bindtap='getpreviewImage'></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class='reply' wx:if='{{item.merchant_reply_content}}'><text class='font-color'>店小二</text>:{{item.merchant_reply_content}}</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
14
view/crmebNewUI/components/userEvaluation/index.wxss
Normal file
@ -0,0 +1,14 @@
|
||||
@import '/app.wxss';
|
||||
.evaluateWtapper .evaluateItem{background-color:#fff;padding-bottom:25rpx;}
|
||||
.evaluateWtapper .evaluateItem~.evaluateItem{border-top:1rpx solid #f5f5f5;}
|
||||
.evaluateWtapper .evaluateItem .pic-text{font-size:26rpx;color:#282828;height:95rpx;padding:0 30rpx;}
|
||||
.evaluateWtapper .evaluateItem .pic-text .pictrue{width:56rpx;height:56rpx;margin-right:20rpx;}
|
||||
.evaluateWtapper .evaluateItem .pic-text .pictrue image{width:100%;height:100%;border-radius:50%;}
|
||||
.evaluateWtapper .evaluateItem .pic-text .name{max-width:450rpx;margin-right:15rpx;}
|
||||
.evaluateWtapper .evaluateItem .time{font-size:24rpx;color:#82848f;padding:0 30rpx;}
|
||||
.evaluateWtapper .evaluateItem .evaluate-infor{font-size:28rpx;color:#282828;margin-top:19rpx;padding:0 30rpx;}
|
||||
.evaluateWtapper .evaluateItem .imgList{padding:0 30rpx 0 15rpx;margin-top:25rpx;}
|
||||
.evaluateWtapper .evaluateItem .imgList .pictrue{width:156rpx;height:156rpx;margin:0 0 15rpx 15rpx;}
|
||||
.evaluateWtapper .evaluateItem .imgList .pictrue image{width:100%;height:100%;}
|
||||
.evaluateWtapper .evaluateItem .reply{font-size:26rpx;color:#454545;background-color:#f7f7f7;border-radius:5rpx;margin:20rpx 30rpx 0 30rpx;padding:30rpx;position:relative;}
|
||||
.evaluateWtapper .evaluateItem .reply::before{content: "";width: 0;height: 0;border-left:0.3rem solid transparent;border-right:0.3rem solid transparent;border-bottom:0.4rem solid #f7f7f7;position:absolute;top:-0.4rem;left:2rem;}
|
||||
3494
view/crmebNewUI/css/animate.wxss
Normal file
16
view/crmebNewUI/css/guildford.wxss
Normal file
94
view/crmebNewUI/css/style.wxss
Normal file
463
view/crmebNewUI/font/iconfont.wxss
Normal file
BIN
view/crmebNewUI/images/1-001.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
view/crmebNewUI/images/1-002.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
view/crmebNewUI/images/2-001.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
view/crmebNewUI/images/2-002.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
view/crmebNewUI/images/3-001.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
view/crmebNewUI/images/3-002.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
view/crmebNewUI/images/4-001.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
view/crmebNewUI/images/4-002.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
view/crmebNewUI/images/accountBg.png
Normal file
|
After Width: | Height: | Size: 3.0 KiB |
BIN
view/crmebNewUI/images/address.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
view/crmebNewUI/images/angle.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
view/crmebNewUI/images/balance.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
view/crmebNewUI/images/bargain.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
view/crmebNewUI/images/bargainBg.jpg
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
view/crmebNewUI/images/close.gif
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
view/crmebNewUI/images/collection.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
view/crmebNewUI/images/coupon-window.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
view/crmebNewUI/images/coupon-window2.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
view/crmebNewUI/images/coupon.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
view/crmebNewUI/images/coupon2.png
Normal file
|
After Width: | Height: | Size: 6.4 KiB |
BIN
view/crmebNewUI/images/customer.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
view/crmebNewUI/images/dfh.png
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
view/crmebNewUI/images/dfk.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
view/crmebNewUI/images/down.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
view/crmebNewUI/images/dpj.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
view/crmebNewUI/images/dsh.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
view/crmebNewUI/images/examine.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
view/crmebNewUI/images/extension.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
view/crmebNewUI/images/gift.png
Normal file
|
After Width: | Height: | Size: 5.4 KiB |
BIN
view/crmebNewUI/images/horn.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
view/crmebNewUI/images/left.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
view/crmebNewUI/images/light.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
view/crmebNewUI/images/line.jpg
Normal file
|
After Width: | Height: | Size: 6.9 KiB |