小程序首页

This commit is contained in:
mactj 2021-01-15 12:00:20 +08:00
parent a722c67a96
commit 71dc3e55d9
29 changed files with 742 additions and 158 deletions

3
mini-app/.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,3 @@
{
"git.ignoreLimitWarning": true
}

View File

@ -3,7 +3,7 @@
"setting": {
"urlCheck": false,
"es6": false,
"enhance": true,
"enhance": false,
"postcss": false,
"preloadBackgroundData": false,
"minified": false,

View File

@ -6,9 +6,8 @@
align-items: center;
justify-content: space-between;
box-sizing: border-box;
}
.buttonColor {
background: #AC1630;
color: #fff;
@ -38,6 +37,10 @@
height: 15px;
}
.fxc{
display: flex;
flex-direction: column;
}
</style>
@ -108,6 +111,7 @@ navigationBarBackgroundColor: '#fff',
navigationBarTitleText: 'WeChat',
navigationBarTextStyle: 'white',
navigationStyle: 'custom',
backgroundColor: '#222222'
},
usingComponents: {
'nav-bar': './components/nav-bar',

View File

@ -1,7 +1,7 @@
import store from '@/store'
class Xiao4rBase {
class AppManager {
saveOpenid(openid) {
wx.setStorageSync('openid', openid)
store.dispatch('setOpenidAction', openid)
@ -22,4 +22,4 @@ class Xiao4rBase {
}
}
export default new Xiao4rBase()
export default new AppManager()

View File

@ -1,49 +0,0 @@
<style lang="less">
.header {
width: 100%;
height: 536rpx;
z-index: -10;
}
</style>
<template>
<div>
home
</div>
</template>
<script>
import wepy from '@wepy/core'
import store from '@/store'
import { mapActions } from '@wepy/x'
wepy.component({
store,
hooks: {
},
data: {
},
computed: {
},
methods: {
},
ready() {
}
})
</script>
<config>
{
navigationBarTitleText: ''
}
</config>

View File

@ -5,25 +5,23 @@
height: 536rpx;
z-index: -10;
}
</style>
<template>
<view style="padding: 10px;">
<div>
<van-panel v-for="(item,index) in list" :key="index" :title="item.user" desc="三星客户" status=" " use-footer-slot>
<van-row>
<van-col span="8">
<van-image src="" />
<van-image src="https://img.yzcdn.cn/vant/cat.jpeg" />
</van-col>
<van-col span="8">span: 8</van-col>
</van-row>
<van-panel v-for="(item,index) in list" :key="index" :title="item.user" desc="三星客户" status=" " use-footer-slot>
<view style="display: flex;font-size: 14px;">{{item.context}}</view>
<van-grid column-num="3" border="{{ false }}">
<van-grid-item use-slot wx:for="{{ 3 }}" wx:for-item="index">
<van-grid-item use-slot v-for=" 3 " wx:for-item="index">
<image
style="width: 100%; height: 90px;"
src="https://img.yzcdn.cn/vant/apple-{{ index + 1 }}.jpg"
@ -58,7 +56,7 @@
<image src="https://img.yzcdn.cn/1.jpg" />
</van-dialog>
</view>
</div>
</template>
<script>

View File

@ -0,0 +1,174 @@
<style lang="less">
.header-image {
width: 100%;
height: 200px;
z-index: -1;
position: absolute;
top: 0;
}
.user-banner {
margin-top: 180px;
border-top: 1px solid #F2F3F5;
border-top-right-radius: 20px;
border-top-left-radius: 20px;
text-align: left;
background-color: #eeeeee;
height: 20px;
width: 100%;
z-index: 1;
}
.menu-desc {
border: #cccccc 1px solid;
border-radius: 20px;
width: 250rpx;
height: 60px;
box-shadow: 4px 4px 10px #cccccc;
background-image: url("https://img.yzcdn.cn/vant/cat.jpeg");
padding: 15px;
display: flex;
flex-direction: column;
font-weight: bold;
}
.menu-desc-text {
margin-top: 5px;
font-size: 14px;
color: coral;
}
.grid-item {
background-color: #eeeeee;
}
.column-record-item {
border: transparent 1px solid;
border-radius: 20px;
box-shadow: 4px 4px 10px #cccccc;
display: flex;
flex-direction: column;
font-weight: bold;
}
.column-record-item-text {
font-size: 20px;
margin: 10px;
display: flex;
flex-direction: column;
}
</style>
<template>
<div>
<image class="header-image" :src="imageDefine.HOME_TITLE_IMAGE" />
<div class="user-banner" />
<view style="margin: 10px;display: flex;flex-direction: column;">
<van-row>
<van-col offset="1" span="4">
<van-image round width="80rpx" height="80rpx" :src="user.userInfo.avatar" />
</van-col>
<van-col offset="1" span="10">
<div class="fxc" style="display: flex;flex-direction: column;">
<span>{{user.userInfo.nickName}}</span>
<span>{{user.company}}</span>
</div>
</van-col>
<van-col offset="1" span="6">
<van-button round type="info">查看会籍</van-button>
</van-col>
</van-row>
<van-row style="margin-top: 20px;">
<van-col offset="1" span="11">
<div class="menu-desc fxc">
<span>润德庄园</span>
<span class="menu-desc-text">万亩有机生态园</span>
</div>
</van-col>
<van-col offset="1" span="11">
<div class="menu-desc fxc">
<span>了解产品</span>
<span class="menu-desc-text">新年有机新品</span>
</div>
</van-col>
</van-row>
<van-grid column-num="4" border="{{ false }}" style="margin-top: 15px;">
<van-grid-item use-slot v-for=" (item, index) in navDefine.HOME_MENU_LIST">
<van-image round width="120rpx" height="120rpx" :src="item.icon" />
<span>{{item.name}} </span>
</van-grid-item>
</van-grid>
<div>
<van-image width="100%" height="60px" :src="navDefine.HOME_BANNER.image" style="margin-top: 15px;" />
</div>
<span v-if="columnRecord.length > 0" style="margin:15px 0;font-weight: bold;">热门专题</span>
<div class="column-record-item" v-for="(item, index) in columnRecord">
<van-image width="100%" height="60px" :src="item.image" />
<div class="column-record-item-text">
<span>{{item.title}} </span>
<span style="font-size: 12px;font-weight: normal;">{{item.createTime}} </span>
</div>
</div>
</view>
</div>
</template>
<script>
import wepy from '@wepy/core'
import store from '@/store'
import { mapActions, mapState } from '@wepy/x'
wepy.component({
store,
hooks: {},
data: {
columnRecord: [
{
title: '标题标题标题标题标题',
createTime: '2000-11-11',
image: 'https://www.xiao4r.com/xiao4rstatic/img/doctor.png'
}
]
},
computed: {
...mapState({
'imageDefine': state => state.imageDefine,
'user': state => state.user,
'navDefine': state => state.navDefine
})
},
methods: {},
ready() {
}
})
</script>
<config>
{
navigationBarTitleText: ''
}
</config>

View File

@ -24,7 +24,7 @@
import wepy from '@wepy/core'
import store from '@/store'
import { mapActions } from '@wepy/x'
import xiao4rBase from '../../xiao4rBase'
import appManager from '../../../appManager'
wepy.component({
store,
@ -41,7 +41,7 @@ wepy.component({
onItem(item) {
console.log(item)
xiao4rBase.navigateTo(`goods-detail?id=${item}`)
appManager.navigateTo(`goods-detail?id=${item}`)
}
},

View File

@ -75,7 +75,7 @@ import wepy from '@wepy/core'
import store from '@/store'
import { mapActions, mapState } from '@wepy/x'
import eventHub from '../../common/eventHub'
import xiao4rBase from '../../xiao4rBase'
import appManager from '../../appManager'
import userApis from '../../apis/userApis'
wepy.component({
@ -109,29 +109,29 @@ wepy.component({
if (!this.isChecked) {
xiao4rBase.showToast('请确认xxxx协议.')
appManager.showToast('请确认xxxx协议.')
return false
}
if (!this.user.mobile) {
xiao4rBase.showToast('请授权获取手机号码.')
appManager.showToast('请授权获取手机号码.')
return false
}
if (!this.user.userInfo) {
xiao4rBase.showToast('请授权获取用户昵称.')
appManager.showToast('请授权获取用户昵称.')
return false
}
let self = this
userApis.registrationByMini(this.user).then(r => {
if (r.code === 200) {
xiao4rBase.showToast('注册成功!')
appManager.showToast('注册成功!')
self.isShow = false
self.setTokenAction(r.token)
} else {
xiao4rBase.showToast(r.msg)
appManager.showToast(r.msg)
}
}).catch(e => {
xiao4rBase.showToast('注册失败!')
appManager.showToast('注册失败!')
})
},
async onGetMobile(e) {
@ -139,7 +139,7 @@ wepy.component({
wx.showLoading({ title: '获取中...', mask: true })
try {
let rsp = await userApis.sendMobile({
openid: xiao4rBase.getOpenid(),
openid: appManager.getOpenid(),
detail: e.$wx.detail
})
@ -147,10 +147,10 @@ wepy.component({
if (rsp.code === 200) {
this.setMobileAction(rsp.data.mobile)
} else {
xiao4rBase.showToast('服务器连接异常.')
appManager.showToast('服务器连接异常.')
}
} catch (e) {
xiao4rBase.showToast('服务器连接异常.')
appManager.showToast('服务器连接异常.')
} finally {
wx.hideLoading()
}

View File

@ -3,3 +3,6 @@
*/
export const MINI_DEPTID = 100

View File

@ -1,4 +1,4 @@
import xiao4rBase from '../xiao4rBase'
import appManager from '../appManager'
import { uuid } from './utils/uuid'
import store from '@/store'
@ -33,7 +33,7 @@ class Xiao4rRequest {
data: req.data,
success: rsp => resolve(rsp.data),
fail: error => {
xiao4rBase.showToast('网络连接异常.')
appManager.showToast('网络连接异常.')
reject(error)
},
complete: () => {

View File

@ -0,0 +1,27 @@
import appManager from '../appManager'
export default {
data: {
},
methods: {
navNext (url) {
appManager.navigateTo(url)
},
navBack() {
wx.navigateBack()
}
},
created () {
console.log('created page')
let pages = getCurrentPages()
console.log(pages)
let currPage = null
if (pages.length) {
currPage = pages[pages.length - 1]
}
console.log(currPage)
}
}

View File

@ -161,7 +161,7 @@ import wepy from '@wepy/core'
import eventHub from '../common/eventHub'
import store from '../store'
import { mapState, mapActions } from '@wepy/x'
import xiao4rBase from '../xiao4rBase'
import appManager from '../appManager'
import userApis from '../apis/userApis'
wepy.page({
@ -202,16 +202,16 @@ wepy.page({
wx.showLoading({ title: '获取中...', mask: true })
try {
let rsp = await userApis.sendMobile({
openid: xiao4rBase.getOpenid(),
openid: appManager.getOpenid(),
detail: e.$wx.detail
})
if (rsp.code === 200) {
this.wineryForm.mobile = rsp.data.mobile
}
xiao4rBase.showToast(rsp.msg)
appManager.showToast(rsp.msg)
} catch (e) {
xiao4rBase.showToast('服务器连接异常,请联系管理员.')
appManager.showToast('服务器连接异常,请联系管理员.')
} finally {
wx.hideLoading()
}
@ -221,37 +221,37 @@ wepy.page({
console.log(this.form)
if (!this.wineryForm.mobile) {
xiao4rBase.showToast('请授权获取您的手机号')
appManager.showToast('请授权获取您的手机号')
return
}
if (!this.wineryForm.wineryName) {
xiao4rBase.showToast('请输入您的酒庄名称')
appManager.showToast('请输入您的酒庄名称')
return
}
if (!this.wineryForm.buildTime) {
xiao4rBase.showToast('请输入您的酒庄成立时间')
appManager.showToast('请输入您的酒庄成立时间')
return
}
if (!this.wineryForm.address) {
xiao4rBase.showToast('请输入您的酒庄地址')
appManager.showToast('请输入您的酒庄地址')
return
}
if (!this.wineryForm.wineryArea) {
xiao4rBase.showToast('请输入您的酒庄总面积')
appManager.showToast('请输入您的酒庄总面积')
return
}
if (!this.wineryForm.buildArea) {
xiao4rBase.showToast('请输入您的建筑总面积')
appManager.showToast('请输入您的建筑总面积')
return
}
// this.setFormAction(this.form)
xiao4rBase.navigateTo('form2')
appManager.navigateTo('form2')
}
},

View File

@ -100,7 +100,7 @@ import wepy from '@wepy/core'
import eventHub from '../common/eventHub'
import store from '../store'
import { mapState } from '@wepy/x'
import xiao4rBase from '../xiao4rBase'
import appManager from '../appManager'
wepy.page({
store,
@ -124,7 +124,7 @@ wepy.page({
methods: {
onNext() {
xiao4rBase.navigateTo('form3')
appManager.navigateTo('form3')
}
},

View File

@ -191,7 +191,7 @@ import wepy from '@wepy/core'
import eventHub from '../common/eventHub'
import store from '../store'
import { mapActions,mapState } from '@wepy/x'
import xiao4rBase from '../xiao4rBase'
import appManager from '../appManager'
import xiao4rApis from '../apis/xiao4rApis'
wepy.page({
store,
@ -302,29 +302,29 @@ wepy.page({
},
onNext() {
if (!this.wineryForm.plantArea) {
xiao4rBase.showToast('请输入种植面积!')
appManager.showToast('请输入种植面积!')
return
}
if (!this.wineryForm.plantWeight) {
xiao4rBase.showToast('请输入产量!')
appManager.showToast('请输入产量!')
return
}
let error = this.checkVariety(this.wineryForm.redVariety)
if (error) {
xiao4rBase.showToast('请检查红葡萄信息:' + error)
appManager.showToast('请检查红葡萄信息:' + error)
return
}
error = this.checkVariety(this.wineryForm.whiteVariety)
if (error) {
xiao4rBase.showToast('请检查白葡萄信息:' + error)
appManager.showToast('请检查白葡萄信息:' + error)
return
}
// this.setFormAction(this.form)
xiao4rBase.navigateTo('form4')
appManager.navigateTo('form4')
},
onBack() {
// this.setFormAction(this.form)

View File

@ -79,7 +79,7 @@ import wepy from '@wepy/core'
import eventHub from '../common/eventHub'
import store from '../store'
import { mapActions,mapState } from '@wepy/x'
import xiao4rBase from '../xiao4rBase'
import appManager from '../appManager'
import xiao4rApis from '../apis/xiao4rApis'
wepy.page({
@ -123,20 +123,20 @@ wepy.page({
onNext() {
if (this.wineryForm.fermentationProcess.length < 1) {
xiao4rBase.showToast('请选择酒精发酵工艺!')
appManager.showToast('请选择酒精发酵工艺!')
return
}
if (this.wineryForm.container.length < 1) {
xiao4rBase.showToast('请选择热化容器!')
appManager.showToast('请选择热化容器!')
return
}
if (this.wineryForm.clarificationMethod.length < 1) {
xiao4rBase.showToast('请选择澄清方式!')
appManager.showToast('请选择澄清方式!')
return
}
xiao4rBase.navigateTo('form5')
appManager.navigateTo('form5')
},
onBack() {

View File

@ -137,7 +137,7 @@ import wepy from '@wepy/core'
import eventHub from '../common/eventHub'
import store from '../store'
import { mapState } from '@wepy/x'
import xiao4rBase from '../xiao4rBase'
import appManager from '../appManager'
import xiao4rApis from '../apis/xiao4rApis'
import validateUtils from '../js/utils/validateUtils'
@ -198,31 +198,31 @@ wepy.page({
onNext() {
if (!validateUtils.isIntOrDecimal(this.wineryForm.annualOutput)) {
xiao4rBase.showToast('请输入正确的年产量!')
appManager.showToast('请输入正确的年产量!')
return
}
if (!validateUtils.isIntOrDecimal(this.wineryForm.stock)) {
xiao4rBase.showToast('请输入正确的当前库存!')
appManager.showToast('请输入正确的当前库存!')
return
}
if (!this.wineryForm.bucketCount) {
xiao4rBase.showToast('请输入橡木桶数量!')
appManager.showToast('请输入橡木桶数量!')
return
}
if (this.wineryForm.mainPrice.length < 1) {
xiao4rBase.showToast('请选择主要产品定价!')
appManager.showToast('请选择主要产品定价!')
return
}
if (this.wineryForm.salesMode.length < 1) {
xiao4rBase.showToast('请选择销售方式!')
appManager.showToast('请选择销售方式!')
return
}
xiao4rBase.navigateTo('form6')
appManager.navigateTo('form6')
},
onBack() {
wx.navigateBack()

View File

@ -117,7 +117,7 @@ import wepy from '@wepy/core'
import eventHub from '../common/eventHub'
import store from '../store'
import { mapState } from '@wepy/x'
import xiao4rBase from '../xiao4rBase'
import appManager from '../appManager'
import xiao4rApis from '../apis/xiao4rApis'
import validateUtils from '../js/utils/validateUtils'
@ -154,12 +154,12 @@ wepy.page({
async onNext() {
if (!this.wineryForm.personName) {
xiao4rBase.showToast('请输入您的姓名!')
appManager.showToast('请输入您的姓名!')
return
}
if (!validateUtils.isEmail(this.wineryForm.email)) {
xiao4rBase.showToast('请正确输入您的邮箱!')
appManager.showToast('请正确输入您的邮箱!')
return
}
@ -167,20 +167,20 @@ wepy.page({
if (this.wineryForm.slogan === '其他') {
form.slogan = this.slogan
}
form.openid = xiao4rBase.getOpenid()
form.openid = appManager.getOpenid()
wx.showLoading({ title: '正在提交...', mask: true })
try {
let rsp = await xiao4rApis.postForm(form)
if (rsp.code === 200) {
xiao4rBase.showToast('提交成功!')
appManager.showToast('提交成功!')
wx.reLaunch({ url: 'index' })
} else {
xiao4rBase.showToast('提交失败.' + rsp.msg)
appManager.showToast('提交失败.' + rsp.msg)
}
} catch (e) {
xiao4rBase.showToast('提交失败.', e)
appManager.showToast('提交失败.', e)
} finally {
wx.hideLoading()

View File

@ -43,7 +43,7 @@ import wepy from '@wepy/core'
import eventHub from '../common/eventHub'
import store from '../store'
import { mapActions } from '@wepy/x'
import xiao4rBase from '../xiao4rBase'
import appManager from '../appManager'
import xiao4rApis from '../apis/xiao4rApis'
import userApis from '../apis/userApis'
import request from '../js/request'
@ -90,7 +90,7 @@ wepy.page({
eventHub.$emit('app-launch', { a: 1 }, { b: 2 })
},
onNext() {
xiao4rBase.navigateTo('form1')
appManager.navigateTo('form1')
// xiao4rApis.getAuthTest({ openid: store.state.user.openid }).then(r => {
// wx.navigateToMiniProgram({
@ -112,7 +112,7 @@ wepy.page({
if (rsp.data.openid) {
self.init(rsp.data.openid)
} else {
xiao4rBase.showToast('登录失败!' + res.errMsg)
appManager.showToast('登录失败!' + res.errMsg)
wx.hideLoading()
}
})
@ -120,7 +120,7 @@ wepy.page({
// console.log('中断请求,req:', req.taskId)
},
fail(res) {
xiao4rBase.showToast('登录失败,正在重试.')
appManager.showToast('登录失败,正在重试.')
wx.hideLoading()
self.login()
}
@ -130,12 +130,12 @@ wepy.page({
async init(openid) {
let self = this
xiao4rBase.saveOpenid(openid)
appManager.saveOpenid(openid)
wx.getUserInfo({
success(res) {
self.setUserAction({
openid: xiao4rBase.getOpenid(),
openid: appManager.getOpenid(),
userInfo: res.userInfo
})
}
@ -147,7 +147,7 @@ wepy.page({
async getForm() {
try {
let rsp = await xiao4rApis.getForm({ openid: xiao4rBase.getOpenid() })
let rsp = await xiao4rApis.getForm({ openid: appManager.getOpenid() })
if (rsp.code === 200) {
let temp = rsp.data
temp.region = temp.region.split(',')
@ -163,7 +163,7 @@ wepy.page({
this.setWineryFormAction(temp)
}
} catch (e) {
xiao4rBase.showToast('获取用户信息失败.' + e)
appManager.showToast('获取用户信息失败.' + e)
}
}
},

View File

@ -5,7 +5,6 @@
height: 536rpx;
z-index: -10;
}
</style>
@ -23,7 +22,6 @@ module.exports.getTime = getTime;
<template>
<nav-bar title="商品详情" />
<swiper indicator-dots="true" autoplay="true" interval="3000">
<block v-for="(item,index) in goodsImages" wx:key="index">
<swiper-item>

View File

@ -4,8 +4,14 @@
width: 100%;
height: 536rpx;
z-index: -10;
}
.tab-bar-icon {
width: 30px;
height: 20px;
}
page {
background-color: #eeeeee;
}
</style>
@ -21,18 +27,72 @@ return `${hour}:${mins}:${sec}.${milli}`;
module.exports.getTime = getTime;
</wxs>
<template>
<van-tabbar active="{{ pageIndex }}" bind:change="onChange">
<van-tabbar-item icon="home-o">热点</van-tabbar-item>
<van-tabbar-item icon="shopping-cart-o">购物</van-tabbar-item>
<van-tabbar-item icon="comment-o">交流</van-tabbar-item>
<van-tabbar-item icon="shopping-cart-o">购物车</van-tabbar-item>
<van-tabbar-item icon="user-o">我的</van-tabbar-item>
<van-tabbar active="{{ pageIndex }}" bind:change="onChange" fixed>
<van-tabbar-item info="3">
<image
slot="icon"
:src="imageDefine.TAP_BAR_ICON1_OFF"
mode="aspectFit"
class="tab-bar-icon"
/>
<image
slot="icon-active"
:src="imageDefine.TAP_BAR_ICON1_ON"
mode="aspectFit"
class="tab-bar-icon"
/>
自定义
</van-tabbar-item>
<van-tabbar-item info="3">
<image
slot="icon"
:src="imageDefine.TAP_BAR_ICON2_OFF"
mode="aspectFit"
class="tab-bar-icon"
/>
<image
slot="icon-active"
:src="imageDefine.TAP_BAR_ICON2_ON"
mode="aspectFit"
class="tab-bar-icon"
/>
自定义
</van-tabbar-item>
<van-tabbar-item info="3">
<image
slot="icon"
:src="imageDefine.TAP_BAR_ICON3_OFF"
mode="aspectFit"
class="tab-bar-icon"
/>
<image
slot="icon-active"
:src="imageDefine.TAP_BAR_ICON3_ON"
mode="aspectFit"
class="tab-bar-icon"
/>
自定义
</van-tabbar-item>
<van-tabbar-item info="3">
<image
slot="icon"
:src="imageDefine.TAP_BAR_ICON4_OFF"
mode="aspectFit"
class="tab-bar-icon"
/>
<image
slot="icon-active"
:src="imageDefine.TAP_BAR_ICON4_ON"
mode="aspectFit"
class="tab-bar-icon"
/>
自定义
</van-tabbar-item>
</van-tabbar>
<mall-home v-if="pageIndex === 0" />
<mall-shopping v-else-if="pageIndex === 1" />
<mall-bbs v-else-if="pageIndex === 2" />
<mall-car v-else-if="pageIndex === 3" />
<mall-my v-else-if="pageIndex === 4" />
<mall-my v-else-if="pageIndex === 3" />
<dialog-registration />
<van-button @tap="onTest">测试</van-button>
@ -42,28 +102,33 @@ module.exports.getTime = getTime;
<script>
import wepy from '@wepy/core'
import store from '@/store'
import { mapActions } from '@wepy/x'
import { mapState, mapActions } from '@wepy/x'
import userApis from '../../apis/userApis'
import xiao4rBase from '../../xiao4rBase'
import appManager from '../../appManager'
import eventHub from '../../common/eventHub'
import defaultMix from '../../mixins/defaultMix'
wepy.page({
store,
hooks: {
},
hooks: {},
mixins: [ defaultMix ],
data: {
pageIndex: 0
},
computed: {
...mapState({
'imageDefine': state => state.imageDefine,
'userInfo': state => state.user.userInfo
})
},
methods: {
...mapActions([
'setUserAction',
'setTokenAction',
'setOpenidAction',
'setOpenidAction'
]),
onTest() {
eventHub.$emit('onShowDialogUserInfo')
@ -90,24 +155,24 @@ wepy.page({
if (rsp.data.openid) {
self.init(rsp.data.openid)
} else {
xiao4rBase.showToast('登录失败!' + res.errMsg)
appManager.showToast('登录失败!' + res.errMsg)
wx.hideLoading()
}
}).catch(e => {
xiao4rBase.showToast('登录失败!' + res.errMsg)
appManager.showToast('登录失败!' + res.errMsg)
})
// request.requestTaskMap.get(req.taskId).abort()
// console.log('中断请求,req:', req.taskId)
},
fail(res) {
xiao4rBase.showToast('登录失败,正在重试.')
appManager.showToast('登录失败,正在重试.')
wx.hideLoading()
self.login()
}
})
},
async init(openid) {
xiao4rBase.saveOpenid(openid)
appManager.saveOpenid(openid)
let rsp = await userApis.loginByMini({ openid: openid })
if (rsp.token) {
@ -128,11 +193,10 @@ wepy.page({
{
navigationBarTitleText: '',
usingComponents: {
'mall-home': '../../components/mall/mall-home',
'mall-shopping': '../../components/mall/mall-shopping',
'mall-bbs': '../../components/mall/mall-bbs',
'mall-car': '../../components/mall/mall-car',
'mall-my': '../../components/mall/mall-my',
'mall-home': '../../components/mall/tab/mall-home',
'mall-shopping': '../../components/mall/tab/mall-shopping',
'mall-bbs': '../../components/mall/tab/mall-bbs',
'mall-my': '../../components/mall/tab/mall-my',
'dialog-registration': '../../components/user/dialog-registration'
}
}

View File

@ -0,0 +1,16 @@
export const imgbaseUrl = 'https://www.xiao4r.com/xiao4rstatic/img/'
export const imageDefine = {
TAP_BAR_ICON1_ON: imgbaseUrl + 'doctor.png',
TAP_BAR_ICON2_ON: imgbaseUrl + 'doctor.png',
TAP_BAR_ICON3_ON: imgbaseUrl + 'doctor.png',
TAP_BAR_ICON4_ON: imgbaseUrl + 'doctor.png',
TAP_BAR_ICON1_OFF: imgbaseUrl + 'doctor.png',
TAP_BAR_ICON2_OFF: imgbaseUrl + 'doctor.png',
TAP_BAR_ICON3_OFF: imgbaseUrl + 'doctor.png',
TAP_BAR_ICON4_OFF: imgbaseUrl + 'doctor.png',
HOME_TITLE_IMAGE: imgbaseUrl + 'doctor.png',
}

View File

@ -0,0 +1,26 @@
import { imgbaseUrl } from '../imageDefine'
export const homeMenuList = [
{
name: '新品速递',
icon: imgbaseUrl + 'doctor.png',
path: ''
}, {
name: '产品追溯',
icon: imgbaseUrl + 'doctor.png',
path: ''
}, {
name: '视频直播',
icon: imgbaseUrl + 'doctor.png',
path: ''
}, {
name: '润德杞友',
icon: imgbaseUrl + 'doctor.png',
path: ''
}
]
export const homeBanner = {
image: imgbaseUrl + 'doctor.png',
path: ''
}

View File

@ -0,0 +1,8 @@
import { homeBanner, homeMenuList } from './nav/home'
export const navDefine = {
HOME_MENU_LIST: homeMenuList,
HOME_BANNER: homeBanner
}

View File

@ -1,15 +1,23 @@
import Vuex from '@wepy/x'
import { wineryForm } from './wineryForm'
import { imageDefine } from './constant/imageDefine'
import { navDefine } from './constant/navDefine'
export default new Vuex.Store({
state: {
user: {
openid: '',
mobile: '',
userInfo: {},
token: ''
userInfo: {
nickName: '未注册用户',
avatar: 'https://img.yzcdn.cn/vant/cat.jpeg'
},
wineryForm
token: '',
company: '企业名称',
},
wineryForm,
imageDefine,
navDefine
},
mutations: {

View File

@ -1 +1,219 @@
@import '../common/index.wxss';.van-button{position:relative;display:-webkit-inline-flex;display:inline-flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;padding:0;text-align:center;vertical-align:middle;-webkit-appearance:none;-webkit-text-size-adjust:100%;height:44px;height:var(--button-default-height,44px);line-height:20px;line-height:var(--button-line-height,20px);font-size:16px;font-size:var(--button-default-font-size,16px);transition:opacity .2s;transition:opacity var(--animation-duration-fast,.2s);border-radius:2px;border-radius:var(--button-border-radius,2px)}.van-button:before{position:absolute;top:50%;left:50%;width:100%;height:100%;border:inherit;border-radius:inherit;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);opacity:0;content:" ";background-color:#000;background-color:var(--black,#000);border-color:#000;border-color:var(--black,#000)}.van-button:after{border-width:0}.van-button--active:before{opacity:.15}.van-button--unclickable:after{display:none}.van-button--default{color:#323233;color:var(--button-default-color,#323233);background:#fff;background:var(--button-default-background-color,#fff);border:1px solid #ebedf0;border:var(--button-border-width,1px) solid var(--button-default-border-color,#ebedf0)}.van-button--primary{color:#fff;color:var(--button-primary-color,#fff);background:#07c160;background:var(--button-primary-background-color,#07c160);border:1px solid #07c160;border:var(--button-border-width,1px) solid var(--button-primary-border-color,#07c160)}.van-button--info{color:#fff;color:var(--button-info-color,#fff);background:#1989fa;background:var(--button-info-background-color,#1989fa);border:1px solid #1989fa;border:var(--button-border-width,1px) solid var(--button-info-border-color,#1989fa)}.van-button--danger{color:#fff;color:var(--button-danger-color,#fff);background:#ee0a24;background:var(--button-danger-background-color,#ee0a24);border:1px solid #ee0a24;border:var(--button-border-width,1px) solid var(--button-danger-border-color,#ee0a24)}.van-button--warning{color:#fff;color:var(--button-warning-color,#fff);background:#ff976a;background:var(--button-warning-background-color,#ff976a);border:1px solid #ff976a;border:var(--button-border-width,1px) solid var(--button-warning-border-color,#ff976a)}.van-button--plain{background:#fff;background:var(--button-plain-background-color,#fff)}.van-button--plain.van-button--primary{color:#07c160;color:var(--button-primary-background-color,#07c160)}.van-button--plain.van-button--info{color:#1989fa;color:var(--button-info-background-color,#1989fa)}.van-button--plain.van-button--danger{color:#ee0a24;color:var(--button-danger-background-color,#ee0a24)}.van-button--plain.van-button--warning{color:#ff976a;color:var(--button-warning-background-color,#ff976a)}.van-button--large{width:100%;height:50px;height:var(--button-large-height,50px)}.van-button--normal{padding:0 15px;font-size:14px;font-size:var(--button-normal-font-size,14px)}.van-button--small{min-width:60px;min-width:var(--button-small-min-width,60px);height:30px;height:var(--button-small-height,30px);padding:0 8px;padding:0 var(--padding-xs,8px);font-size:12px;font-size:var(--button-small-font-size,12px)}.van-button--mini{display:inline-block;min-width:50px;min-width:var(--button-mini-min-width,50px);height:22px;height:var(--button-mini-height,22px);font-size:10px;font-size:var(--button-mini-font-size,10px)}.van-button--mini+.van-button--mini{margin-left:5px}.van-button--block{display:-webkit-flex;display:flex;width:100%}.van-button--round{border-radius:999px;border-radius:var(--button-round-border-radius,999px)}.van-button--square{border-radius:0}.van-button--disabled{opacity:.5;opacity:var(--button-disabled-opacity,.5)}.van-button__text{display:inline}.van-button__icon+.van-button__text:not(:empty),.van-button__loading-text{margin-left:4px}.van-button__icon{min-width:1em;line-height:inherit!important;vertical-align:top}.van-button--hairline{padding-top:1px;border-width:0}.van-button--hairline:after{border-color:inherit;border-width:1px;border-radius:4px;border-radius:calc(var(--button-border-radius, 2px)*2)}.van-button--hairline.van-button--round:after{border-radius:999px;border-radius:var(--button-round-border-radius,999px)}.van-button--hairline.van-button--square:after{border-radius:0}
@import '../common/index.wxss';
.van-button {
position: relative;
display: -webkit-inline-flex;
display: inline-flex;
-webkit-align-items: center;
align-items: center;
-webkit-justify-content: center;
justify-content: center;
box-sizing: border-box;
padding: 0;
text-align: center;
vertical-align: middle;
-webkit-appearance: none;
-webkit-text-size-adjust: 100%;
height: 44px;
height: var(--button-default-height, 44px);
line-height: 20px;
line-height: var(--button-line-height, 20px);
font-size: 16px;
font-size: var(--button-default-font-size, 16px);
transition: opacity .2s;
transition: opacity var(--animation-duration-fast, .2s);
border-radius: 2px;
border-radius: var(--button-border-radius, 2px)
}
.van-button:before {
position: absolute;
top: 50%;
left: 50%;
width: 100%;
height: 100%;
border: inherit;
border-radius: inherit;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
opacity: 0;
content: " ";
background-color: #000;
background-color: var(--black, #000);
border-color: #000;
border-color: var(--black, #000)
}
.van-button:after {
border-width: 0
}
.van-button--active:before {
opacity: .15
}
.van-button--unclickable:after {
display: none
}
.van-button--default {
color: #323233;
color: var(--button-default-color, #323233);
background: #fff;
background: var(--button-default-background-color, #fff);
border: 1px solid #ebedf0;
border: var(--button-border-width, 1px) solid var(--button-default-border-color, #ebedf0)
}
.van-button--primary {
color: #fff;
color: var(--button-primary-color, #fff);
background: #07c160;
background: var(--button-primary-background-color, #07c160);
border: 1px solid #07c160;
border: var(--button-border-width, 1px) solid var(--button-primary-border-color, #07c160)
}
.van-button--info {
color: #fff;
color: var(--button-info-color, #fff);
background: yellow;
background: var(--button-info-background-color, yellow);
border: 1px solid yellow;
border: var(--button-border-width, 1px) solid var(--button-info-border-color, yellow)
}
.van-button--danger {
color: #fff;
color: var(--button-danger-color, #fff);
background: #ee0a24;
background: var(--button-danger-background-color, #ee0a24);
border: 1px solid #ee0a24;
border: var(--button-border-width, 1px) solid var(--button-danger-border-color, #ee0a24)
}
.van-button--warning {
color: #fff;
color: var(--button-warning-color, #fff);
background: #ff976a;
background: var(--button-warning-background-color, #ff976a);
border: 1px solid #ff976a;
border: var(--button-border-width, 1px) solid var(--button-warning-border-color, #ff976a)
}
.van-button--plain {
background: #fff;
background: var(--button-plain-background-color, #fff)
}
.van-button--plain.van-button--primary {
color: #07c160;
color: var(--button-primary-background-color, #07c160)
}
.van-button--plain.van-button--info {
color: #1989fa;
color: var(--button-info-background-color, #1989fa)
}
.van-button--plain.van-button--danger {
color: #ee0a24;
color: var(--button-danger-background-color, #ee0a24)
}
.van-button--plain.van-button--warning {
color: #ff976a;
color: var(--button-warning-background-color, #ff976a)
}
.van-button--large {
width: 100%;
height: 50px;
height: var(--button-large-height, 50px)
}
.van-button--normal {
padding: 0 15px;
font-size: 14px;
font-size: var(--button-normal-font-size, 14px)
}
.van-button--small {
min-width: 60px;
min-width: var(--button-small-min-width, 60px);
height: 30px;
height: var(--button-small-height, 30px);
padding: 0 8px;
padding: 0 var(--padding-xs, 8px);
font-size: 12px;
font-size: var(--button-small-font-size, 12px)
}
.van-button--mini {
display: inline-block;
min-width: 50px;
min-width: var(--button-mini-min-width, 50px);
height: 22px;
height: var(--button-mini-height, 22px);
font-size: 10px;
font-size: var(--button-mini-font-size, 10px)
}
.van-button--mini + .van-button--mini {
margin-left: 5px
}
.van-button--block {
display: -webkit-flex;
display: flex;
width: 100%
}
.van-button--round {
border-radius: 999px;
border-radius: var(--button-round-border-radius, 999px)
}
.van-button--square {
border-radius: 0
}
.van-button--disabled {
opacity: .5;
opacity: var(--button-disabled-opacity, .5)
}
.van-button__text {
display: inline
}
.van-button__icon + .van-button__text:not(:empty), .van-button__loading-text {
margin-left: 4px
}
.van-button__icon {
min-width: 1em;
line-height: inherit !important;
vertical-align: top
}
.van-button--hairline {
padding-top: 1px;
border-width: 0
}
.van-button--hairline:after {
border-color: inherit;
border-width: 1px;
border-radius: 4px;
border-radius: calc(var(--button-border-radius, 2px) * 2)
}
.van-button--hairline.van-button--round:after {
border-radius: 999px;
border-radius: var(--button-round-border-radius, 999px)
}
.van-button--hairline.van-button--square:after {
border-radius: 0
}

View File

@ -1 +1,87 @@
@import '../common/index.wxss';.van-grid-item{position:relative;float:left;box-sizing:border-box}.van-grid-item--square{height:0}.van-grid-item__content{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;box-sizing:border-box;height:100%;padding:16px 8px;padding:var(--grid-item-content-padding,16px 8px);background-color:#fff;background-color:var(--grid-item-content-background-color,#fff)}.van-grid-item__content:after{z-index:1;border-width:0 1px 1px 0;border-bottom-width:var(--border-width-base,1px);border-right-width:var(--border-width-base,1px);border-top-width:0}.van-grid-item__content--surround:after{border-width:1px;border-width:var(--border-width-base,1px)}.van-grid-item__content--center{-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center}.van-grid-item__content--square{position:absolute;top:0;right:0;left:0}.van-grid-item__content--horizontal{-webkit-flex-direction:row;flex-direction:row}.van-grid-item__content--horizontal .van-grid-item__icon+.van-grid-item__text{margin-top:0;margin-left:8px}.van-grid-item__content--clickable:active{background-color:#f2f3f5;background-color:var(--grid-item-content-active-color,#f2f3f5)}.van-grid-item__icon{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;font-size:26px;font-size:var(--grid-item-icon-size,26px);height:26px;height:var(--grid-item-icon-size,26px)}.van-grid-item__text{word-wrap:break-word;color:#646566;color:var(--grid-item-text-color,#646566);font-size:12px;font-size:var(--grid-item-text-font-size,12px)}.van-grid-item__icon+.van-grid-item__text{margin-top:8px}
@import '../common/index.wxss';
.van-grid-item {
position: relative;
float: left;
box-sizing: border-box
}
.van-grid-item--square {
height: 0
}
.van-grid-item__content {
display: -webkit-flex;
display: flex;
-webkit-flex-direction: column;
flex-direction: column;
box-sizing: border-box;
height: 100%;
padding: 16px 8px;
padding: var(--grid-item-content-padding, 16px 8px);
}
.van-grid-item__content:after {
z-index: 1;
border-width: 0 1px 1px 0;
border-bottom-width: var(--border-width-base, 1px);
border-right-width: var(--border-width-base, 1px);
border-top-width: 0
}
.van-grid-item__content--surround:after {
border-width: 1px;
border-width: var(--border-width-base, 1px)
}
.van-grid-item__content--center {
-webkit-align-items: center;
align-items: center;
-webkit-justify-content: center;
justify-content: center
}
.van-grid-item__content--square {
position: absolute;
top: 0;
right: 0;
left: 0
}
.van-grid-item__content--horizontal {
-webkit-flex-direction: row;
flex-direction: row
}
.van-grid-item__content--horizontal .van-grid-item__icon + .van-grid-item__text {
margin-top: 0;
margin-left: 8px
}
.van-grid-item__content--clickable:active {
background-color: #f2f3f5;
background-color: var(--grid-item-content-active-color, #f2f3f5)
}
.van-grid-item__icon {
display: -webkit-flex;
display: flex;
-webkit-align-items: center;
align-items: center;
font-size: 26px;
font-size: var(--grid-item-icon-size, 26px);
height: 26px;
height: var(--grid-item-icon-size, 26px)
}
.van-grid-item__text {
word-wrap: break-word;
color: #646566;
color: var(--grid-item-text-color, #646566);
font-size: 12px;
font-size: var(--grid-item-text-font-size, 12px)
}
.van-grid-item__icon + .van-grid-item__text {
margin-top: 8px
}