Browse Source

🎉 first commit

master
MelodyKnit 5 months ago
parent
commit
7e7999ada9
35 changed files with 1908 additions and 153 deletions
  1. +145
    -0
      App.vue
  2. +49
    -0
      components/home/greetComponents.vue
  3. +3
    -1
      package.json
  4. +128
    -12
      pages.json
  5. +60
    -0
      pages/index/appointment.vue
  6. +39
    -0
      pages/index/area.vue
  7. +36
    -0
      pages/index/back.vue
  8. +33
    -0
      pages/index/cancle.vue
  9. +89
    -0
      pages/index/checkAge.vue
  10. +32
    -0
      pages/index/comment.vue
  11. +91
    -0
      pages/index/fillIn.vue
  12. +40
    -0
      pages/index/greet.vue
  13. +38
    -0
      pages/index/greetP1.vue
  14. +36
    -0
      pages/index/greetP2.vue
  15. +35
    -0
      pages/index/greetP3.vue
  16. +36
    -0
      pages/index/greetP4.vue
  17. +37
    -0
      pages/index/greetP5.vue
  18. +66
    -0
      pages/index/home.vue
  19. +38
    -0
      pages/index/reschedule.vue
  20. +249
    -0
      pages/index/selectAppointment.vue
  21. +36
    -0
      pages/index/start.vue
  22. +37
    -0
      pages/index/viewDetail.vue
  23. +1
    -1
      pages_order/auth/loginAndRegisterAndForgetPassword.vue
  24. +172
    -0
      pages_order/auth/takePhoto.vue
  25. +204
    -101
      pages_order/auth/wxLogin.vue
  26. +138
    -37
      pages_order/auth/wxUserInfo.vue
  27. +1
    -0
      pages_order/static/auth/check.svg
  28. +1
    -0
      pages_order/static/auth/info.svg
  29. BIN
      pages_order/static/logo.png
  30. +30
    -0
      project.config.json
  31. +7
    -0
      project.private.config.json
  32. BIN
      static/image/home/btn.png
  33. BIN
      static/image/home/home-background.png
  34. +1
    -0
      uni.scss
  35. +0
    -1
      utils/index.js

+ 145
- 0
App.vue View File

@ -19,4 +19,149 @@
.page{
padding-top: var(--window-top);
}
/* 水平垂直居中 */
.flex-center{
display: flex;
align-items: center;
justify-content: center;
}
/* 水平居左,垂直居中 间距 20rpx */
.flex-start{
display: flex;
align-items: center;
justify-content: start;
gap: 20rpx;
}
/* 垂直居中 */
.flex-col{
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 20rpx;
}
/* 垂直居左 */
.flex-start-col{
display: flex;
flex-direction: column;
align-items: start;
justify-content: center;
gap: 40rpx;
}
/* 两段对齐 */
.flex-sb{
display: flex;
align-items: center;
width: 100%;
justify-content: space-between;
}
/* 两段对齐 */
.flex-sa{
display: flex;
align-items: center;
width: 100%;
justify-content: space-around;
}
/* 字体加粗 */
.font-bold{
font-weight: bold;
letter-spacing: 2rpx;
}
/* 上边距 */
.mt-60{
margin-top: 60rpx;
}
.mt-40{
margin-top: 40rpx;
}
.dline{
border: 1px solid #f1f1f1;
width: 100%;
}
.btn-def{
width: 30%;
border: none;
outline: none;
font-size: 28rpx;
}
.btn-suc{
width: 30%;
border: none;
outline: none;
font-size: 28rpx;
}
.mt-40{
margin-top: 40rpx;
}
.mb-60{
margin-bottom: 60rpx;
}
.home{
background-image: url('static/image/home/home-background.png');
background-size: cover;
background-repeat: no-repeat;
background-position: center;
width: 100%;
height: 100vh;
overflow: hidden;
}
.content{
display: flex;
flex-direction: column;
align-items: center;
padding-top: 31vh;
}
.mian-btn{
border: 4rpx solid #e6bf7f;
padding: 16rpx 66rpx;
border-radius: 66rpx;
margin-top: 30rpx;
color: #e6bf7f;
}
.active{
background-color: #e6bf7f;
color: white;
}
.second-color{
color: #d2d2d2;
margin-top: 20rpx;
font-size: 26rpx;
}
.btn2{
border: 4rpx solid #ecb864;
display: flex;
align-items: center;
justify-content: center;
padding: 16rpx 200rpx;
color: #ecb864;
border-radius: 10rpx;
}
.btn3{
border: 4rpx solid #ecb864;
display: flex;
align-items: center;
justify-content: center;
padding: 16rpx 100rpx;
color: #ecb864;
border-radius: 10rpx;
}
</style>

+ 49
- 0
components/home/greetComponents.vue View File

@ -0,0 +1,49 @@
<template>
<view class="home">
<view class="content" :class="btn[0]==='下一页'?'mt-25':'mt-30'">
<span v-show="btn[0]==='下一页'" style="margin-bottom: 10rpx; font-size: 28rpx;">作为一位</span>
<span style="color: #c7a87c;">{{title}}</span>
<span v-for="(item,index) in textList" :key="index" style="margin-top: 15rpx;">
{{item}}
</span>
<view class="flex-col query" style="gap: 0rpx;" v-show="btn.length>0">
<view class="btn2" @click="query">
{{btn[0]}}
</view>
<text class="second-color">欢快无限饮&nbsp;&nbsp;饮酒有限度</text>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
}
},
props:['title','textList','path','btn'],
methods: {
query(){
uni.navigateTo({
url:this.path
})
}
}
}
</script>
<style lang="scss" scoped>
.query{
position: absolute;
bottom: -25vh;
}
.mt-25{
padding-top: 25vh;
}
.mt-30{
padding-top: 30vh;
}
</style>

+ 3
- 1
package.json View File

@ -14,7 +14,9 @@
"author": "",
"license": "ISC",
"dependencies": {
"@dcloudio/uni-ui": "^1.5.6",
"ali-oss": "^6.21.0",
"dayjs": "^1.11.12"
"dayjs": "^1.11.12",
"sass": "^1.79.3"
}
}

+ 128
- 12
pages.json View File

@ -1,25 +1,134 @@
{
"pages": [{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": ""
"pages": [
{
"path" : "pages/index/home",
"style" :
{
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/index/area",
"style" :
{
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/index/checkAge",
"style" :
{
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/index/fillIn",
"style" :
{
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/index/greet",
"style" :
{
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/index/greetP1",
"style" :
{
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/index/greetP2",
"style" :
{
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/index/greetP3",
"style" :
{
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/index/greetP4",
"style" :
{
"navigationBarTitleText" : ""
}
},
{
"path": "pages/index/order",
"style": {
"navigationBarTitleText": ""
"path" : "pages/index/greetP5",
"style" :
{
"navigationBarTitleText" : ""
}
},
{
"path": "pages/index/center",
"style": {
"navigationBarTitleText": ""
"path" : "pages/index/appointment",
"style" :
{
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/index/back",
"style" :
{
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/index/viewDetail",
"style" :
{
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/index/reschedule",
"style" :
{
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/index/cancle",
"style" :
{
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/index/start",
"style" :
{
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/index/comment",
"style" :
{
"navigationBarTitleText" : ""
}
},
{
"path" : "pages/index/selectAppointment",
"style" :
{
"navigationBarTitleText" : ""
}
}
],
"preloadRule": {
"pages/index/index": {
"pages/index/home": {
"network": "all",
"packages": ["pages_order"]
}
@ -52,12 +161,19 @@
},
{
"path": "auth/loginAndRegisterAndForgetPassword"
},
{
"path" : "auth/takePhoto",
"style" :
{
"navigationBarTitleText" : ""
}
}
]
}],
"globalStyle": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "酒店桌布",
"navigationBarTitleText": "答题小程序",
"navigationBarBackgroundColor": "#F8F8F8",
"backgroundColor": "#F8F8F8",
"navigationStyle": "custom"


+ 60
- 0
pages/index/appointment.vue View File

@ -0,0 +1,60 @@
<template>
<view class="home">
<view class="content mt-30">
<span v-for="(item,index) in textList" :key="index" style="margin-top: 10rpx;">
{{item}}
</span>
<view class="flex-col query" style="gap: 0rpx;">
<view class="flex-sa">
<view class="btn3" @click="pre">
返回
</view>
<view class="btn3" @click="next">
点击预约
</view>
</view>
<text class="second-color">欢快无限饮&nbsp;&nbsp;饮酒有限度</text>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
textList: [
'您的品味值得专属礼遇!',
'在您生成了专属称号之后,',
'我们将为您提供一次奢华的',
'上门威士忌品鉴服务,',
'让您在舒适的环境中,',
'品味与您的称号完美契合的精致佳酿。'
]
}
},
methods: {
pre() {
uni.navigateTo({
url: '/pages/index/greetP5'
})
},
next() {
uni.navigateTo({
url: '/pages/index/viewDetail'
})
}
}
}
</script>
<style lang="scss" scoped>
.query {
position: absolute;
bottom: -25vh;
}
.mt-30 {
padding-top: 30vh;
}
</style>

+ 39
- 0
pages/index/area.vue View File

@ -0,0 +1,39 @@
<template>
<view class="home">
<view class="content">
<span class="font-bold mb-60">请选择您所在的区域</span>
<view class="flex-col query" style="gap: 0rpx;">
<view class="btn2" @click="next">
确定
</view>
<text class="second-color">欢快无限饮&nbsp;&nbsp;饮酒有限度</text>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
next(){
uni.navigateTo({
url:'/pages/index/checkAge'
})
}
}
}
</script>
<style lang="scss" scoped>
.query{
position: absolute;
bottom: -25vh;
}
</style>

+ 36
- 0
pages/index/back.vue View File

@ -0,0 +1,36 @@
<template>
<view>
<greetCmponents title="" :textList="textList" :path="back" :btn="btn"/>
</view>
</template>
<script>
import greetCmponents from "../../components/home/greetComponents.vue"
export default {
data() {
return {
textList:[
'很抱歉,您的所在区域暂时',
'无法提供上门威士忌品鉴服务。',
'但我们仍为您准备了其他专属体',
'验敬请期待。'
],
back:'/pages/index/appointment',
btn:[
'返回'
]
}
},
components:{
greetCmponents
},
methods: {
}
}
</script>
<style>
</style>

+ 33
- 0
pages/index/cancle.vue View File

@ -0,0 +1,33 @@
<template>
<view>
<greetCmponents :textList="textList" :btn="btn"/>
</view>
</template>
<script>
import greetCmponents from "../../components/home/greetComponents.vue"
export default {
data() {
return {
textList: [
'我们已收到您的取消请求,',
'非常遗憾无法为您提供此次上门威士忌品鉴服务。',
'如果您有其他需求或在未来希望重新预约,',
'随时与我们联系。',
'期待在合适的时间为您奉上难忘的品监体验!'
],
btn: []
}
},
components: {
greetCmponents
},
methods: {
}
}
</script>
<style>
</style>

+ 89
- 0
pages/index/checkAge.vue View File

@ -0,0 +1,89 @@
<template>
<view class="home">
<view class="content" style="padding-top: 25vh;">
<span class="font-bold">Genius Journey Club</span>
<text style="margin-top: 20rpx; font-size: 28rpx; color: #878787;">欢迎您的到来</text>
<text style="margin-top: 30rpx; font-size: 28rpx; color: #878787;">使用小程序请确认您已满18周岁</text>
<view class="mian-btn" :class="{active:isActive === 'yes'}" @click="setActive('yes')">未满18岁</view>
<view class="mian-btn" :class="{active:isActive === 'no'}" @click="setActive('no')">已满18岁</view>
<view class="flex-center mt-40">
<uv-checkbox-group>
<uv-checkbox size="15px" v-model="isCheck" iconSize="20rpx" activeColor="#e6bf7f" @change="change"></uv-checkbox>
</uv-checkbox-group>
<span style="font-size: 26rpx;">我已阅读政策隐私条</span>
</view>
<view class="" style="margin-top: 60rpx;" @click="start">
<view class="btn2">
立即开启
</view>
</view>
<view class="flex-col query" style="gap: 0rpx;">
<text class="second-color">欢快无限饮&nbsp;&nbsp;饮酒有限度</text>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
isActive: null,
isCheck: false
}
},
methods: {
setActive(val) {
this.isActive = val
},
change(e){
this.isCheck = e
},
start() {
if (this.isActive && this.isCheck) {
uni.navigateTo({
url:'/pages/index/fillIn'
})
} else {
uni.showToast({
title: '请选择并勾选后开启',
icon: 'none'
})
}
}
}
}
</script>
<style lang="scss" scoped>
.query {
position: relative;
bottom: -15vh;
}
.b-btn {
width: 86%;
display: flex;
justify-content: space-between;
padding-top: 20vh;
.pre-btn {
border: 4rpx solid #f1e0c6;
padding: 16rpx 90rpx;
border-radius: 66rpx;
color: #e6bf7f;
}
.next-btn {
background-image: url('../../static/image/home/btn.png');
background-size: contain;
background-repeat: no-repeat;
background-position: center;
width: 40vw;
display: flex;
align-items: center;
justify-content: center;
color: white;
}
}
</style>

+ 32
- 0
pages/index/comment.vue View File

@ -0,0 +1,32 @@
<template>
<view>
<greetCmponents :textList="textList" :btn="btn"/>
</view>
</template>
<script>
import greetCmponents from "../../components/home/greetComponents.vue"
export default {
data() {
return {
textList: [
'感谢您分享宝贵的评价!',
'您的反馈对我们非常重要。',
'祝愿您每一天都充满精彩与愉悦,生活美满,',
'尽享每一杯威士忌的独特魅力!'
],
btn: []
}
},
components: {
greetCmponents
},
methods: {
}
}
</script>
<style>
</style>

+ 91
- 0
pages/index/fillIn.vue View File

@ -0,0 +1,91 @@
<template>
<view class="home">
<view class="content" style="padding-top: 25vh;">
<span class="font-bold">为了给您提供更个性化的服务</span>
<span class="font-bold">请您填写以下基本信息</span>
<view class="flex-col mt-40">
<view class="flex-center">
<span style="margin-right: 30rpx;">您的姓名:</span>
<input class="inputStyle" v-model="username" type="text" />
</view>
<view class="flex-center">
<span style="margin-right: 30rpx;">手机号码:</span>
<input class="inputStyle" v-model="phone" type="number" />
</view>
</view>
<view style="margin-top: 15vh;" @click="query">
<view class="btn2">
确认
</view>
</view>
<view class="flex-col query" style="gap: 0rpx;">
<text class="second-color">欢快无限饮&nbsp;&nbsp;饮酒有限度</text>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
username:'',
phone:''
}
},
methods: {
query(){
if(!this.username && !this.phone){
uni.showToast({
title:'您的姓名和手机号都不能为空哦~',
icon: 'none'
})
}else{
uni.navigateTo({
url:'/pages/index/greet'
})
}
}
}
}
</script>
<style lang="scss" scoped>
.query {
position: relative;
bottom: -15vh;
}
.b-btn {
width: 86%;
display: flex;
justify-content: space-between;
padding-top: 20vh;
.pre-btn {
border: 4rpx solid #f1e0c6;
padding: 16rpx 90rpx;
border-radius: 66rpx;
color: #e6bf7f;
}
.next-btn {
background-image: url('../../static/image/home/btn.png');
background-size: contain;
background-repeat: no-repeat;
background-position: center;
width: 40vw;
display: flex;
align-items: center;
justify-content: center;
color: white;
}
}
.inputStyle{
border: 3rpx solid #e5bf7d;
border-radius: 40rpx;
color: #e5bf7d;
padding: 10rpx 10rpx;
}
</style>

+ 40
- 0
pages/index/greet.vue View File

@ -0,0 +1,40 @@
<template>
<view class="home">
<view class="content" style="padding-top: 35vh;">
<span>欢迎</span>
<span style="font-size: 80rpx; margin: 20rpx 0;">Christine</span>
<view class="flex-col" style="gap: 5rpx; margin-top: 40rpx;">
<span>来到百富门的世界</span>
<span>品味传承与创新交织的威士忌艺术</span>
<span>开启您的专属品鉴之旅</span>
</view>
<view style="margin-top: 6vh;" @click="query">
<view class="btn2">
点击进入
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
query(){
uni.navigateTo({
url:'/pages/index/greetP1'
})
}
}
}
</script>
<style lang="scss" scoped>
</style>

+ 38
- 0
pages/index/greetP1.vue View File

@ -0,0 +1,38 @@
<template>
<view>
<greetCmponents title="“威士忌鉴赏家”" :textList="textList" :path="greetP2" :btn="btn"/>
</view>
</template>
<script>
import greetCmponents from "../../components/home/greetComponents.vue"
export default {
data() {
return {
textList:[
'您的独到品味和对复杂风味的深刻理解展现了',
'您在威士忌世界中的非凡见解。',
'无论是高年份的经典之作,',
'还是精湛工艺的限量版,',
'每一杯威士忌在您手中都被赋予了更多的意义。',
'愿您在未来的品鉴之旅中继续探索更多顶级佳酿,',
'感受威士忌的独特魅力畅享每一滴带来的极致体验!'
],
greetP2:'/pages/index/greetP2',
btn:[
'下一页'
]
}
},
components:{
greetCmponents
},
methods: {
}
}
</script>
<style>
</style>

+ 36
- 0
pages/index/greetP2.vue View File

@ -0,0 +1,36 @@
<template>
<view>
<greetCmponents title="“威士忌探秘者”" :textList="textList" :path="greetP3" :btn="btn"/>
</view>
</template>
<script>
import greetCmponents from "../../components/home/greetComponents.vue"
export default {
data() {
return {
textList:[
'您的好奇心和冒险精神',
'让您不断探索新奇和冒险精神。',
'愿每一杯威士忌都能拿为您带来',
'新鲜的体验与惊喜,',
'在这段探秘旅程中发现无尽的可能性。'
],
greetP3:'/pages/index/greetP3',
btn:[
'下一页'
]
}
},
components:{
greetCmponents
},
methods: {
}
}
</script>
<style>
</style>

+ 35
- 0
pages/index/greetP3.vue View File

@ -0,0 +1,35 @@
<template>
<view>
<greetCmponents title="“威士忌品鉴大师”" :textList="textList" :path="greetP4" :btn="btn"/>
</view>
</template>
<script>
import greetCmponents from "../../components/home/greetComponents.vue"
export default {
data() {
return {
textList: [
'您的敏锐舌尖与挑剔眼光',
'让您在细微之处也能捕捉到每一滴威士忌的精髓。',
'愿您在今后的品鉴之路上,',
'继续发现与享受那些别具匠心的美妙时刻。'
],
greetP4: '/pages/index/greetP4',
btn:[
'下一页'
]
}
},
components: {
greetCmponents
},
methods: {
}
}
</script>
<style>
</style>

+ 36
- 0
pages/index/greetP4.vue View File

@ -0,0 +1,36 @@
<template>
<view>
<greetCmponents title="“威士忌藏家”" :textList="textList" :path="greetP5" :btn="btn"/>
</view>
</template>
<script>
import greetCmponents from "../../components/home/greetComponents.vue"
export default {
data() {
return {
textList:[
'您的眼光独到,能够识别并珍藏',
'那些真正值得铭记的佳酿。',
'愿您在未来的岁月中,',
'继续收集那些能够讲述故事、承载记忆的珍品,将',
'您的收藏变成一段永恒的艺术。'
],
greetP5:'/pages/index/greetP5',
btn:[
'下一页'
]
}
},
components:{
greetCmponents
},
methods: {
}
}
</script>
<style>
</style>

+ 37
- 0
pages/index/greetP5.vue View File

@ -0,0 +1,37 @@
<template>
<view>
<greetCmponents title="“威士忌玩家”" :textList="textList" :path="greetP5" :btn="btn"/>
</view>
</template>
<script>
import greetCmponents from "../../components/home/greetComponents.vue"
export default {
data() {
return {
textList:[
'您对威士忌的热爱不仅体现在酒杯中,',
'更体现在与朋友分享的每一个欢乐时刻。',
'愿您在每一次聚会中,',
'都能用您的创意和激情,',
'让威士忌成为欢聚的中心,',
'点燃无数难忘的瞬间。'
],
greetP5:'/pages/index/appointment',
btn:[
'下一页'
]
}
},
components:{
greetCmponents
},
methods: {
}
}
</script>
<style>
</style>

+ 66
- 0
pages/index/home.vue View File

@ -0,0 +1,66 @@
<template>
<view class="home">
<view class="content">
<span class="font-bold mb-60">您是否有品鉴威士忌的习惯?</span>
<view class="mian-btn" :class="{active:isActive === 'yes'}" @click="setActive('yes')"></view>
<view class="mian-btn" :class="{active:isActive === 'no'}" @click="setActive('no')"></view>
<view class="b-btn">
<view class="pre-btn">
上一题
</view>
<view class="next-btn" @click="next">
下一题
</view>
</view>
<text class="second-color">欢快无限饮&nbsp;&nbsp;饮酒有限度</text>
</view>
</view>
</template>
<script>
export default {
data() {
return {
isActive:null
}
},
methods: {
setActive(value){
this.isActive = value
},
next(){
uni.navigateTo({
url:'/pages/index/area'
})
}
}
}
</script>
<style lang="scss" scoped>
.b-btn{
width: 86%;
display: flex;
justify-content: space-between;
padding-top: 20vh;
.pre-btn{
border: 4rpx solid #f1e0c6;
padding: 16rpx 90rpx;
border-radius: 66rpx;
color: #e6bf7f;
}
.next-btn{
background-image: url('../../static/image/home/btn.png');
background-size: contain;
background-repeat: no-repeat;
background-position: center;
width: 40vw;
display: flex;
align-items: center;
justify-content: center;
color: white;
}
}
</style>

+ 38
- 0
pages/index/reschedule.vue View File

@ -0,0 +1,38 @@
<template>
<view>
<greetCmponents :textList="textList" :path="reschedule" :btn="btn" />
</view>
</template>
<script>
import greetCmponents from "../../components/home/greetComponents.vue"
export default {
data() {
return {
textList: [
'非常抱歉,由于特殊原因,',
'我们暂时无法在您最初选定的时间段',
'进行上门品鉴服务。',
'为了确保您享受到最完美的威士忌体验,',
'恳请您重新选择一个方便的时间,',
'我们将优先为您安排,',
'感谢您的理解与支持。'
],
reschedule: '/pages/index/appointment',
btn: [
'查看详情'
]
}
},
components: {
greetCmponents
},
methods: {
}
}
</script>
<style>
</style>

+ 249
- 0
pages/index/selectAppointment.vue View File

@ -0,0 +1,249 @@
<template>
<view class="home">
<view class="content" style="padding-top: 25vh;">
<span class="font-bold">预约日期和时间</span>
<view class="flex-center mt-60" style="gap: 50rpx;">
<view class="time-wrapper">
<span style="color: #dcb066;">2024</span>
</view>
<view class="time-wrapper">
9月20日
</view>
<view class="time-wrapper">
0800
</view>
</view>
<span class="font-bold mt-60">预约信息</span>
<view class="flex-center mt-40" style="gap: 30rpx;">
<view class="flex-center">
<input class="time-wrapper1" type="text" v-model="firstName" />
<span></span>
</view>
<view class="flex-center">
<input class="time-wrapper1" type="text" v-model="lastName" />
<span></span>
</view>
<view class="">
<uv-drop-down ref="dropDown" sign="dropDown_1" text-active-color="#3c9cff"
:extra-icon="{name:'arrow-down-fill',color:'#666',size:'26rpx'}"
:extra-active-icon="{name:'arrow-up-fill',color:'#3c9cff',size:'26rpx'}"
:defaultValue="defaultValue" :custom-style="{padding: '0 30rpx'}" @click="selectMenu">
<uv-drop-down-item name="order" type="2" :label="dropItem('order').label"
:value="dropItem('order').value">
</uv-drop-down-item>
<uv-drop-down-item name="type" type="2" :label="dropItem('type').label"
:value="dropItem('type').value">
</uv-drop-down-item>
<uv-drop-down-item name="vip_type" type="1" label='VIP文档' :value="dropItem('vip_type').value">
</uv-drop-down-item>
</uv-drop-down>
<uv-drop-down-popup sign="dropDown_1" :click-overlay-on-close="true"
:currentDropItem="currentDropItem" @clickItem="clickItem"
@popupChange="change"></uv-drop-down-popup>
</view>
</view>
<view class="flex-col query" style="gap: 0rpx;">
<view class="flex-sa">
<view class="btn3" @click="pre">
返回
</view>
<view class="btn3" @click="next">
取消预约
</view>
</view>
<text class="second-color">欢快无限饮&nbsp;&nbsp;饮酒有限度</text>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
firstName: '',
lastName: '',
// value
defaultValue: [0, 'all', '0'],
//
result: [{
name: 'order',
label: '最新发布',
value: 'new'
}],
// { name: 'order', label: '', value: 'new' }
activeName: 'order',
order: {
label: '综合排序',
value: 'all',
activeIndex: 0,
color: '#333',
activeColor: '#2878ff',
child: [{
label: '综合排序',
value: 'all'
}, {
label: '最新发布',
value: 'new'
}, {
label: '低价优先',
value: 'money'
}]
},
type: {
label: '文档格式',
value: 'all',
activeIndex: 0,
color: '#333',
activeColor: '#2878ff',
child: [{
label: '全部',
value: 'all'
}, {
label: 'PDF',
value: 'pdf'
}, {
label: 'WROD',
value: 'word'
}, {
label: 'PPT',
value: 'ppt'
}]
},
vip_type: {
label: 'VIP文档',
value: 0,
activeIndex: 0
}
}
},
onPageScroll() {
//
this.$refs.dropDown.init();
},
computed: {
dropItem(name) {
return (name) => {
const result = {};
const find = this.result.find(item => item.name === name);
if (find) {
result.label = find.label;
result.value = find.value;
} else {
result.label = this[name].label;
result.value = this[name].value;
}
return result;
}
},
//
currentDropItem() {
return this[this.activeName];
}
},
methods: {
pre() {
uni.navigateTo({
url: '/pages/index/greetP5'
})
},
next() {
uni.navigateTo({
url: '/pages/index/selectAppointment'
})
},
change(e) {
console.log('弹窗打开状态:', e);
},
/**
* 点击每个筛选项回调
* @param {Object} e { name, active, type } = e
*/
selectMenu(e) {
const {
name,
active,
type
} = e;
this.activeName = name;
// type 1 type1
if (type == 1) {
this.clickItem({
name: 'vip_type',
label: 'VIP文档',
value: e.active ? 1 : 0
});
} else {
const find = this.result.find(item => item.name == this.activeName);
if (find) {
const findIndex = this[this.activeName].child.findIndex(item => item.label == find.label && item
.value == find.value);
this[this.activeName].activeIndex = findIndex;
} else {
this[this.activeName].activeIndex = 0;
}
}
},
/**
* 点击菜单回调处理
* @param {Object} item 选中项 { label,value } = e
*/
clickItem(e) {
// let
let {
label,
value
} = e;
const findIndex = this.result.findIndex(item => item.name == this.activeName);
if (this.defaultValue.indexOf(value) > -1 && this[this.activeName].label) {
label = this[this.activeName].label;
}
//
if (findIndex > -1) {
this.$set(this.result, findIndex, {
name: this.activeName,
label,
value
})
} else {
this.result.push({
name: this.activeName,
label,
value
});
}
this.result = this.result.filter(item => this.defaultValue.indexOf(item.value) == -1);
uni.showModal({
content: `筛选的值:${JSON.stringify(this.result)}`
})
}
}
}
</script>
<style lang="scss" scoped>
.query {
position: relative;
bottom: -45vh;
}
.mt-30 {
padding-top: 30vh;
}
.time-wrapper {
border: 4rpx solid #dcb066;
padding: 16rpx 26rpx;
border-radius: 20rpx;
}
.time-wrapper1 {
border: 4rpx solid #dcb066;
margin-right: 20rpx;
padding: 14rpx 20rpx;
width: 80rpx;
border-radius: 15rpx;
text-align: center;
}
</style>

+ 36
- 0
pages/index/start.vue View File

@ -0,0 +1,36 @@
<template>
<view>
<greetCmponents :textList="textList" :path="greetP5" :btn="btn" />
</view>
</template>
<script>
import greetCmponents from "../../components/home/greetComponents.vue"
export default {
data() {
return {
textList: [
'感谢您参加我们的上门威士忌品鉴服务!',
'我们希望您享受了这次独特的体验。',
'为了帮助我们不断提升服务质量,',
'请您花几分钟时间分享您的评价和反馈。',
'您的意见对我们非常重要,感谢您的支持!',
],
greetP5: '/pages/index/appointment',
btn: [
'开始'
]
}
},
components: {
greetCmponents
},
methods: {
}
}
</script>
<style>
</style>

+ 37
- 0
pages/index/viewDetail.vue View File

@ -0,0 +1,37 @@
<template>
<view>
<greetCmponents :textList="textList" :path="greetP5" :btn="btn" />
</view>
</template>
<script>
import greetCmponents from "../../components/home/greetComponents.vue"
export default {
data() {
return {
textList: [
'感谢您的预约!',
'我们已成功安排了您的上门威士忌品鉴服务。',
'我们将为您提供一次奢华的',
'我们的专员将在您选择的时间到达,',
'为您带来精致的品鉴体验。',
'期待与您共享这段美妙的威士忌之旅!'
],
greetP5: '/pages/index/appointment',
btn: [
'查看详情'
]
}
},
components: {
greetCmponents
},
methods: {
}
}
</script>
<style>
</style>

+ 1
- 1
pages_order/auth/loginAndRegisterAndForgetPassword.vue View File

@ -198,7 +198,7 @@
// uni.$uv.toast('');
},
start() {
// uni.$uv.toast('');
// uni.`$uv.toast('');
}
}
}


+ 172
- 0
pages_order/auth/takePhoto.vue View File

@ -0,0 +1,172 @@
<template>
<view>
<block v-if="authCamera">
<camera :device-position="devPosition" @initdone="init" flash="off" style="width: 100%;" :style="{height:viewH-btmH+'px'}"></camera>
</block>
<block v-else>
<view class="defaultBgm" :style="{height:viewH-btmH+'px'}"></view>
</block>
<!-- 摄像头区域 -->
<!-- 底部区域 -->
<view class="view_cont_btm flex_row">
<view class="cont_box" @click="openAlbum">相册</view>
<view class="photobtn">
<button @click="takePhoto"></button>
</view>
<view class="cont_box" @click="switchPosition">切换</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
devPosition: 'back', //
viewH: 0, //
btmH: 0, //
authCamera: false, //camera
}
},
onLoad(option) {
},
onShow() {
var that = this;
//
uni.getSetting({
success(e) {
console.log(e)
if(!e.authSetting['scope.camera']){
uni.showModal({
title: '提示',
content: '需要您授权打开摄像头',
success(e) {
if (e.confirm) {
uni.openSetting({
success(res) {
console.log(res)
if(res.authSetting['scope.camera']){
that.authCamera = true
}else{
uni.showToast({
title: '未授权',
icon:'none'
})
}
}
})
}else{
uni.showToast({
title: '未授权',
icon:'none'
})
}
}
})
}else{
that.authCamera = true
}
}
})
},
created() {
var that = this;
var h = uni.getSystemInfoSync().windowHeight;
this.viewH = h;
let info = uni.createSelectorQuery().select(".view_cont_btm");
    info.boundingClientRect(function(data) { //data -
that.btmH = data.height
   }).exec()
},
methods: {
//
openAlbum() {
uni.chooseImage({
count: 1,
sourceType: ['album'],
success(res) {
console.log(JSON.stringify(res.tempFilePaths));
uni.previewImage({
urls: res.tempFilePaths,
})
}
})
},
//
switchPosition() {
if(this.devPosition == 'back'){
this.devPosition = 'front'
}else{
this.devPosition = 'back'
}
},
//
takePhoto() {
uni.showLoading({
title: '识别中..'
})
const ctx = uni.createCameraContext();
ctx.takePhoto({
quality: 'high',
success: (res) => {
var imgs = [res.tempImagePath];
uni.previewImage({
urls: imgs,
success() {
uni.hideLoading();
}
})
this.src = res.tempImagePath
}
});
},
//
init(e){
console.log('初始化')
}
}
}
</script>
<style>
.defaultBgm{
background: #4AA352;
}
.view_cont_btm{
padding: 120rpx 60rpx;
display: flex;
justify-content: space-around;
align-items: center;
}
.cont_box{
border: 1px solid #4AA352;
color: #4AA352;
padding: 20rpx;
font-size: 28rpx;
}
.photobtn{
width: 160rpx;
height: 160rpx;
border-radius: 50%;
border: 1px solid #4AA352;
padding: 10rpx;
box-sizing: border-box;
text-align: center;
}
.photobtn button{
width: 100%;
height: 100%;
margin: 0;
background: linear-gradient(to right, #5eab52, #9ac454);
border-radius: 50%;
}
</style>

+ 204
- 101
pages_order/auth/wxLogin.vue View File

@ -1,153 +1,256 @@
<template>
<view class="login">
<uv-navbar leftText="登录" height="100rpx" leftIconSize="28rpx" @leftClick="backUp"></uv-navbar>
<view class="logo">
<!-- <image src="/static/image/login/logo.png" mode=""></image> -->
</view>
<view class="title">
欢迎使用酒店桌布租赁平台
答题小程序
</view>
<view class="btn mt"
@click="wxLogin">
<view class="btn mt" @click="wxLogin">
<view class="icon">
<image src="../static/auth/wx.png" mode=""></image>
</view>
<view class="">
微信授权登录
<view class="login-name">
微信登录
</view>
</view>
<!-- <view class="btn b2">
使用短信验证登录
</view> -->
<view class="config">
<uv-checkbox-group
v-model="checkboxValue"
shape="circle">
<view class="content">
<view
style="display: flex;">
<uv-checkbox
size="40rpx"
icon-size="30rpx"
activeColor="#FD5100"
:name="1"
></uv-checkbox>
阅读并同意我们的<text @click="openConfigDetail('privacyAgreement')">服务协议与隐私条款</text>
</view>
<view class="">
以及<text @click="openConfigDetail('userAgreement')">个人信息保护指引</text>
<uv-checkbox-group v-model="checkboxValue" shape="circle">
<view class="contents">
<view style="display: flex;">
<uv-checkbox size="35rpx" icon-size="25rpx" activeColor="#09b963" :name="1"></uv-checkbox>
<span>已同意</span>
<text @click="openConfigDetail('privacyAgreement')">隐私政策</text>
<text @click="openConfigDetail('userAgreement')">服务条款</text>
<img class="info" src="../static/auth/info.svg" alt="info" />
</view>
</view>
</uv-checkbox-group>
</view>
<uv-popup mode="bottom" round="20" ref="popup" duration="500">
<view class="flex-start-col" style="padding: 80rpx 30rpx;">
<view class="flex-start">
<view class="flex-start">
<view class="circle-logo"></view>
<span class="font-bold">答题小程序</span>
</view>
<span style="margin-left: 60rpx; color: #7a7a7a;">申请</span>
</view>
<span class="font-bold">获取你的昵称头像地区及性别</span>
<view class="dline"></view>
<view class="flex-sb">
<view class="flex-start">
<view class="avatar">
<img style="width: 100%; height: 100%;" src="../static/logo.png" alt="" />
</view>
<view class="flex-start-col" style="margin-left: 20rpx; gap: 10rpx;">
<span class="font-bold">可可</span>
<span style="color: #d2d2d2; font-size: 28rpx;">微信个人信息</span>
</view>
</view>
<view class="">
<img src="../static/auth/check.svg" alt="" />
</view>
</view>
<view class="dline"></view>
<span style="color: #004a77; font-size: 26rpx;">使用其他头像和昵称</span>
<view class="flex-sa mt-20">
<uv-button class="btn-def" text="拒绝" :custom-style=customStyle></uv-button>
<uv-button class="btn-suc" type="error" text="允许" @click="allow"></uv-button>
</view>
</view>
</uv-popup>
<configPopup ref="popup"></configPopup>
<uv-popup mode="center" round="20" ref="service" duration="500">
<view class="flex-col" style="padding: 60rpx 30rpx; width: 88vw;">
<div class="icon-service"></div>
<h3>服务协议和隐私权政策</h3>
<span style="color: #7a7a7a; line-height: 55rpx;">
请您务必审慎阅读充分理解用户协议和隐私
政策各条款包括但不限于用户注意事项
户行为规范以及为了向你提供服务而收集使
存储你的个人信息的情况等你可阅读
<span style="color: black; font-weight: bold;">遗产里的景德镇平台用户服务协议</span>
<span style="color: black; font-weight: bold;">遗产里的景德镇平台隐私权政策</span>
了解详细信息如你同意请点击下方按钮开始接受我们的服务
</span>
<view class="flex-sa mt-40 mb-60">
<uv-button class="btn-def" text="不同意" :custom-style=customStyle @click="rejective"></uv-button>
<uv-button class="btn-suc" type="error" text="同意" @click="agree"></uv-button>
</view>
</view>
</uv-popup>
<!-- <configPopup ref="popup"></configPopup> -->
</view>
</template>
<script>
import configPopup from '@/components/config/configPopup.vue';
// import configPopup from '@/components/config/configPopup.vue';
export default {
name : 'Login',
name: 'Login',
data() {
return {
checkboxValue : []
checkboxValue: []
}
},
methods: {
wxLogin(){
if(!this.checkboxValue.length){
backUp() {
uni.navigateTo({
url: '/pages_order/auth/wxUserInfo'
});
},
wxLogin() {
if (!this.checkboxValue.length) {
return uni.showToast({
title: '请先同意隐私协议',
icon:'none'
icon: 'none'
})
}
this.$store.commit('login')
this.$refs.popup.open();
},
allow(){
this.$refs.popup.close();
this.$refs.service.open();
},
rejective(){
this.$refs.service.close();
},
agree(){
this.$refs.service.close();
uni.navigateTo({
url:'/pages/index/home'
})
},
//
openConfigDetail(key){
openConfigDetail(key) {
this.$refs.popup.open(key)
}
},
computed: {
customStyle() {
return {
background: '#f1f1f1',
color: '#00bf61'
}
}
}
}
</script>
<style scoped lang="scss">
.login{
display: flex;
justify-content: center;
align-items: center;
height: 80vh;
flex-direction: column;
position: relative;
.logo{
height: 140rpx;
width: 140rpx;
background-color: #ddd;
border-radius: 30rpx;
image{
width: 80rpx;
height: 80rpx;
}
margin-bottom: 20rpx;
}
.title{
position: relative;
font-weight: 900;
font-size: 45rpx;
&::after{
content: '';
position: absolute;
left: 0;
top: 100%;
display: block;
height: 8rpx;
width: 210rpx;
background: linear-gradient(to right,$uni-color, #fff);
}
}
.btn{
width: 80%;
height: 100rpx;
background-color: $uni-color;
color: #fff;
.login {
display: flex;
justify-content: center;
align-items: center;
margin: 20rpx 0;
border-radius: 20rpx;
.icon{
margin-right: 10rpx;
image{
width: 40rpx;
height: 35rpx;
height: 100vh;
flex-direction: column;
position: relative;
background-color: white;
.logo {
height: 160rpx;
width: 160rpx;
background-color: #e5c28b;
border-radius: 15rpx;
image {
width: 80rpx;
height: 80rpx;
}
margin-bottom: 20rpx;
}
}
.b2{
background-color: #3c69f122;
color: #3c69f1;
}
.mt{
margin-top: 200rpx;
}
.config{
position: absolute;
bottom: 0;
font-size: 22rpx;
text-align: center;
line-height: 40rpx;
text{
color: $uni-color;
.title {
position: relative;
font-weight: bold;
font-size: 35rpx;
}
.btn {
width: 80%;
padding: 20rpx 0;
background-color: $uni-color-login-btn;
color: #fff;
display: flex;
align-items: center;
justify-content: center;
margin: 20rpx 0;
border-radius: 100rpx;
.icon {
margin-right: 10rpx;
image {
width: 40rpx;
height: 35rpx;
}
}
.login-name {
position: relative;
bottom: 6rpx;
left: 10rpx;
}
}
.b2 {
background-color: #3c69f122;
color: #3c69f1;
}
.mt {
margin-top: 300rpx;
}
.config {
font-size: 26rpx;
margin-top: 20rpx;
.contents {
.info {
position: absolute;
right: 60rpx;
width: 35rpx;
height: 35rpx;
}
}
text {
color: #47b87e;
}
}
.circle-logo {
width: 50rpx;
height: 50rpx;
background-color: #e5c28b;
border-radius: 50%;
}
.avatar {
width: 90rpx;
height: 90rpx;
}
.icon-service{
width: 90rpx;
height: 90rpx;
background-color: #e4c28b;
border-radius: 50%;
}
}
}
</style>
</style>

+ 138
- 37
pages_order/auth/wxUserInfo.vue View File

@ -1,13 +1,17 @@
<template>
<view class="login">
<view class="title">
酒店桌布租赁平台
<view class="logo">
<!-- <image src="/static/image/login/logo.png" mode=""></image> -->
</view>
<view class="title">
答题小程序
</view>
<view class="contents">
申请获取你的头像昵称
</view>
<button class="chooseAvatar" open-type="chooseAvatar" @chooseavatar="onChooseAvatar">
<view class="chooseAvatar" @click="open" open-type="chooseAvatar" @chooseavatar="onChooseAvatar">
<view class="line">
<view class="">
头像
@ -15,23 +19,61 @@
<view class="">
<image :src="userInfo.headImage" v-if="userInfo.headImage" style="width: 60rpx;height: 60rpx;"
mode=""></image>
<image src="../static/auth/headImage.png" v-else style="width: 50rpx;height: 50rpx;" mode=""></image>
<image src="../static/auth/headImage.png" v-else style="width: 50rpx;height: 50rpx;" mode="">
</image>
</view>
</view>
</button>
<view class="line">
</view>
<view class="line line-2">
<view class="">
昵称
</view>
<view class="">
<input type="nickname" placeholder="请输入称" style="text-align: right;" id="nickName"
v-model="userInfo.nickName" />
<input type="nickname" placeholder="请输入称" style="text-align: right;" id="nickName"
v-model="userInfo.nickName" @input="changeName"/>
</view>
</view>
<view class="btn" @click="submit">
确认
</view>
<uv-popup mode="bottom" round="20" ref="popup" duration="500">
<view class="flex-start-col" style="padding: 30px;">
<view class="flex-start">
<view class="flex-start">
<view class="circle-logo"></view>
<span class="font-bold">答题小程序</span>
</view>
<span style="margin-left: 60rpx; color: #7a7a7a;">申请</span>
</view>
<span class="font-bold">获取你的昵称头像地区及性别</span>
<view class="dline"></view>
<view class="flex-sb" @click="queryInfo">
<view class="flex-start">
<view class="avatar">
<img style="width: 100%; height: 100%;" :src="userInfo.avatar" alt="" />
</view>
<view class="flex-start-col" style="margin-left: 20rpx; gap: 10rpx;">
<span class="font-bold">{{userInfo.userName}}</span>
<span style="color: #d2d2d2; font-size: 28rpx;">微信个人信息</span>
</view>
</view>
<view class="">
<img src="../static/auth/check.svg" alt="" />
</view>
</view>
<view class="dline"></view>
<view class="flex-col" style="gap: 35rpx;">
<span @click="chooseavatar">从相册选择</span>
<span @click="takePhoto">拍照</span>
<view style="width: 100%; border: 6rpx solid #f1f1f1;"></view>
<span @click="close">取消</span>
</view>
</view>
</uv-popup>
<video v-show="show" ref="showVideo" :controls="false" :enable-progress-gesture="false" object-fit="cover"
:show-center-play-btn="false" style="width: 100%; height:calc(100% - 216rpx) ; display: block;">
</video>
</view>
</template>
@ -39,15 +81,29 @@
export default {
data() {
return {
show:false,
userInfo: {
headImage: '',
nickName: '',
userName: '可可',
avatar: '../static/logo.png'
}
};
},
onShow() {},
computed: {},
methods: {
open() {
this.$refs.popup.open();
},
close() {
this.$refs.popup.close();
},
queryInfo() {
this.userInfo.nickName = this.userInfo.userName;
this.userInfo.headImage = this.userInfo.avatar;
this.close();
},
onChooseAvatar(res) {
let self = this
self.$Oss.ossUpload(res.target.avatarUrl)
@ -55,34 +111,38 @@
self.userInfo.headImage = url
})
},
submit() {
chooseavatar() {
let self = this
uni.createSelectorQuery().in(this)
.select("#nickName")
.fields({
properties: ["value"],
uni.chooseImage({
count: 1,
sourceType: ['album'],
success: function(res) {
self.userInfo.headImage = res.tempFiles[0].path;
self.userInfo.avatar = res.tempFiles[0].path;
self.close();
}
});
},
changeName(value){
this.userInfo.nickName = value.detail.value;
this.userInfo.userName = value.detail.value;
},
takePhoto() {
uni.navigateTo({
url:'/pages_order/auth/takePhoto'
})
},
submit() {
if (this.userInfo.nickName && this.userInfo.headImage) {
uni.navigateTo({
url: '/pages_order/auth/wxLogin'
})
.exec((res) => {
const nickName = res?.[0]?.value
self.userInfo.nickName = nickName
if (self.$utils.verificationAll(self.userInfo, {
headImage: '请选择头像',
nickName: '请填写昵称',
})) {
return
}
self.$api('infoUpdateInfo', self.userInfo, res => {
if (res.code == 200) {
uni.switchTab({
url:'/pages/index/index'
})
}
})
} else {
uni.showToast({
title: '您的头像和用户名不能为空',
icon: 'none'
})
}
},
}
}
@ -96,9 +156,21 @@
align-items: center;
height: 80vh;
.logo {
height: 160rpx;
width: 160rpx;
background-color: #e5c28b;
border-radius: 15rpx;
}
.title {
line-height: 45rpx;
font-weight: 900;
margin-top: 25rpx;
font-weight: bolder;
}
.contents {
margin-top: 35rpx;
font-size: 28rpx;
}
.line {
@ -106,17 +178,29 @@
justify-content: space-between;
align-items: center;
width: 80%;
border-top: 1px solid #00000023;
border-bottom: 1px solid #00000023;
padding: 30rpx 0;
margin: 0 auto;
}
.line-2 {
border-top: none;
padding: 45rpx 0;
}
.chooseAvatar {
width: 100%;
padding: 0;
margin: 0;
margin-top: 10vh;
border: none;
outline: none;
}
.chooseAvatar:after {
border: none;
outline: none;
}
.btn {
@ -126,8 +210,25 @@
width: 80%;
padding: 20rpx 0;
text-align: center;
border-radius: 15rpx;
border-radius: 100rpx;
margin-top: 10vh;
outline: none;
}
.btn:active {
background-color: #e5c28b;
}
.circle-logo {
width: 50rpx;
height: 50rpx;
background-color: #e5c28b;
border-radius: 50%;
}
.avatar {
width: 90rpx;
height: 90rpx;
}
}
</style>

+ 1
- 0
pages_order/static/auth/check.svg View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg width="26" height="26" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M43 11L16.875 37L5 25.1818" stroke="#00bf61" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/></svg>

+ 1
- 0
pages_order/static/auth/info.svg View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><svg width="20" height="20" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M24 44C29.5228 44 34.5228 41.7614 38.1421 38.1421C41.7614 34.5228 44 29.5228 44 24C44 18.4772 41.7614 13.4772 38.1421 9.85786C34.5228 6.23858 29.5228 4 24 4C18.4772 4 13.4772 6.23858 9.85786 9.85786C6.23858 13.4772 4 18.4772 4 24C4 29.5228 6.23858 34.5228 9.85786 38.1421C13.4772 41.7614 18.4772 44 24 44Z" fill="none" stroke="#89b79f" stroke-width="4" stroke-linejoin="round"/><path fill-rule="evenodd" clip-rule="evenodd" d="M24 11C25.3807 11 26.5 12.1193 26.5 13.5C26.5 14.8807 25.3807 16 24 16C22.6193 16 21.5 14.8807 21.5 13.5C21.5 12.1193 22.6193 11 24 11Z" fill="#89b79f"/><path d="M24.5 34V20H23.5H22.5" stroke="#89b79f" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/><path d="M21 34H28" stroke="#89b79f" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/></svg>

BIN
pages_order/static/logo.png View File

Before After
Width: 72  |  Height: 72  |  Size: 3.9 KiB

+ 30
- 0
project.config.json View File

@ -0,0 +1,30 @@
{
"appid": "wx75654b529ae6a8ea",
"compileType": "miniprogram",
"miniprogramRoot": "unpackage/dist/dev/mp-weixin/",
"libVersion": "3.5.8",
"packOptions": {
"ignore": [],
"include": []
},
"setting": {
"coverView": true,
"es6": true,
"postcss": true,
"minified": true,
"enhance": true,
"showShadowRootInWxmlPanel": true,
"packNpmRelationList": [],
"babelSetting": {
"ignore": [],
"disablePlugins": [],
"outputPath": ""
}
},
"condition": {},
"editorSetting": {
"tabIndent": "insertSpaces",
"tabSize": 2
},
"srcMiniprogramRoot": "unpackage/dist/dev/mp-weixin/"
}

+ 7
- 0
project.private.config.json View File

@ -0,0 +1,7 @@
{
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
"projectname": "drink-answer-wechat-uniapp-24-9-2",
"setting": {
"compileHotReLoad": true
}
}

BIN
static/image/home/btn.png View File

Before After
Width: 290  |  Height: 88  |  Size: 22 KiB

BIN
static/image/home/home-background.png View File

Before After
Width: 750  |  Height: 1624  |  Size: 258 KiB

+ 1
- 0
uni.scss View File

@ -19,6 +19,7 @@ $uni-color-primary: #007aff;
$uni-color-success: #4cd964;
$uni-color-warning: #f0ad4e;
$uni-color-error: #dd524d;
$uni-color-login-btn: #00bf61;
/* 文字基本颜色 */
$uni-text-color:#333;//基本色


+ 0
- 1
utils/index.js View File

@ -1,4 +1,3 @@
import Vue from 'vue'
import util from './utils.js'


Loading…
Cancel
Save