Browse Source

上传

master
前端-胡立永 5 months ago
parent
commit
38478ac9a1
28 changed files with 1972 additions and 170 deletions
  1. +70
    -0
      api/api.js
  2. +4
    -2
      components/base/addressSpot.vue
  3. +7
    -0
      components/base/tabbar.vue
  4. +6
    -6
      components/list/dynamic/daynamicInfo.vue
  5. +59
    -17
      components/user/productList.vue
  6. +34
    -0
      pages.json
  7. +1
    -1
      pages/index/activity.vue
  8. +3
    -2
      pages/index/center.vue
  9. +32
    -1
      pages/index/index.vue
  10. +195
    -0
      pages/index/product.vue
  11. +1
    -2
      pages_order/components/address/addressList.vue
  12. +4
    -3
      pages_order/components/address/redactAddress.vue
  13. +3
    -1
      pages_order/components/list/renting/rentingItem.vue
  14. +43
    -66
      pages_order/components/list/workList/workItem.vue
  15. +35
    -16
      pages_order/components/product/submit.vue
  16. +56
    -24
      pages_order/components/product/submitUnitSelect.vue
  17. +1
    -1
      pages_order/components/screen/screenRen.vue
  18. +213
    -0
      pages_order/mine/address.vue
  19. +147
    -0
      pages_order/mine/setting.vue
  20. +223
    -0
      pages_order/order/order.vue
  21. +564
    -0
      pages_order/order/orderDetail.vue
  22. +240
    -0
      pages_order/product/productDetail.vue
  23. +4
    -0
      pages_order/renting/rentingList.vue
  24. +5
    -5
      pages_order/scenicSpot/scenicSpotList.vue
  25. +4
    -21
      pages_order/work/workList.vue
  26. +16
    -0
      store/store.js
  27. +1
    -1
      uni.scss
  28. +1
    -1
      utils/position.js

+ 70
- 0
api/api.js View File

@ -176,6 +176,16 @@ const config = {
url: '/city/getCatDetail',
method: 'GET',
},
//查询商城信息列表带分页
getShopPingPage : {
url: '/city/getShopPingPage',
method: 'GET',
},
//根据商品标识查询商品信息详情
getShopPingDetail : {
url: '/city/getShopPingDetail',
method: 'GET',
},
@ -263,6 +273,66 @@ const config = {
method: 'GET',
auth : true,
},
// 用户查询地址列表
getAddressList : {
url: '/token/getAddressList',
method: 'GET',
auth : true,
},
// 用户获取地址信息列表详情
getAddressDetail : {
url: '/token/getAddressDetail',
method: 'GET',
auth : true,
},
// 用户增加或者编辑地址信息
addOrEditAddress : {
url: '/token/addOrEditAddress',
method: 'POST',
auth : true,
showLoading : true,
limit : 1000,
},
// 删除地址
deleteAddress : {
url: '/token/deleteAddress',
method: 'POST',
auth : true,
showLoading : true,
},
// 商城-立即兑换商品
createPointsOrder : {
url: '/city/createPointsOrder',
method: 'POST',
auth : true,
showLoading : true,
limit : 1000,
},
// 商城-立即兑换商品,微信支付购买商品
createOrder : {
url: '/city/createOrder',
method: 'POST',
auth : true,
showLoading : true,
limit : 1000,
},
// 商城-订单列表
getOrderList : {
url: '/city/getOrderList',
method: 'POST',
auth : true,
},
// 商城-订单详情
getOrderDetail : {
url: '/city/getOrderDetail',
method: 'POST',
auth : true,
},
}


+ 4
- 2
components/base/addressSpot.vue View File

@ -2,7 +2,8 @@
<view class="address"
@click.stop="openLocation(latitude, longitude)"
v-if="address">
<uv-icon size="30rpx" name="map"></uv-icon>
<uv-icon size="30rpx" name="map"
color="#5baaff"></uv-icon>
<view class="text-ellipsis">
{{ address }}
</view>
@ -29,7 +30,8 @@
margin: 20rpx 0;
display: flex;
align-items: center;
background-color: #eee;
background-color: rgba($uni-color, 0.2);
color: $uni-color;
padding: 10rpx 20rpx;
width: fit-content;
border-radius: 40rpx;


+ 7
- 0
components/base/tabbar.vue View File

@ -43,6 +43,13 @@
"title": "首页",
icon : 'home',
},
{
"selectedIconPath": "/static/image/tabbar/order-a.png",
"iconPath": "/static/image/tabbar/order.png",
"pagePath": "/pages/index/product",
"title": "商城",
icon : 'integral',
},
{
"selectedIconPath": "/static/image/tabbar/order-a.png",
"iconPath": "/static/image/tabbar/order.png",


+ 6
- 6
components/list/dynamic/daynamicInfo.vue View File

@ -3,17 +3,17 @@
<view class="dynamics" v-html="$utils.stringFormatHtml(item.title)">
</view>
<addressSpot
:address="item.address"
:latitude="item.latitude"
:longitude="item.longitude"
/>
<view class="Artworkimages">
<view class="wrokimg" @click.stop="previewImage(images, i)" :key="i" v-for="(img, i) in images">
<image :src="img" mode="aspectFill"></image>
</view>
</view>
<addressSpot
:address="item.address"
:latitude="item.latitude"
:longitude="item.longitude"
/>
</view>
</template>


+ 59
- 17
components/user/productList.vue View File

@ -1,30 +1,58 @@
<template>
<view class="list">
<view class="item"
v-for="(item, index) in 10"
@click="$utils.navigateTo('/pages_order/product/productDetail?id=123')"
v-for="(item, index) in productList"
@click="$utils.navigateTo('/pages_order/product/productDetail?id=' + item.id)"
:key="index">
<image
class="image"
src="https://img95.699pic.com/photo/50058/1378.jpg_wh860.jpg" mode=""></image>
:src="item.image ? item.image.split(',')[0] : 'https://img95.699pic.com/photo/50058/1378.jpg_wh860.jpg'" mode="aspectFill"></image>
<view class="info">
<view class="title">
桌布租赁
<view class="title text-ellipsis">
{{ item.name }}
</view>
<view class="price">
<text>58</text>/
<!-- <view class="price">
<text>{{ item.originalPrice }}</text>/
</view>
<view class="favorable">
<view class="favorable" v-if="item.goodsSku">
<view class="t">
限时优惠
</view>
<view class="p">
48
{{ item.goodsSku.price }}
</view>
</view> -->
<view class="price">
现价<text>{{ item.price }}</text>
</view>
<view class="del">
原价{{ item.oldPrice }}
</view>
<!-- <view class="favorable" v-if="item.oldPrice">
<view class="t">
原价
</view>
<view class="p">
{{ item.oldPrice }}
</view>
</view> -->
<view class="favorable" v-if="item.points">
<view class="t">
积分兑换
</view>
<view class="p">
{{ item.points }}
</view>
</view>
<view class="num">
已售卖5000+
{{ item.shopId }}
</view>
<!-- <view class="num">
已售卖{{ item.soldNum || 0 }}+
</view> -->
</view>
<view class="btn">
<uv-icon name="shopping-cart"
@ -37,6 +65,7 @@
<script>
export default {
name:"productList",
props : ['productList'],
data() {
return {
@ -70,27 +99,40 @@
.info{
font-size: 26rpx;
.title{
font-size: 30rpx;
font-size: 28rpx;
}
.price{
color: #D03F25;
color: $uni-price-color;
margin-top: 6rpx;
text{
font-size: 34rpx;
font-size: 30rpx;
font-weight: 900;
}
}
.del{
font-size: 22rpx;
color: #888;
font-weight: 500;
text-decoration : line-through;
}
.favorable{
display: flex;
background-image: url(/static/image/product/favorable.png);
// background-image: url(/static/image/product/favorable.png);
background-size: 100% 100%;
width: fit-content;
padding: 5rpx 10rpx;
font-size: 18rpx;
font-size: 20rpx;
margin-top: 6rpx;
border-radius: 10rpx;
overflow: hidden;
background-color: #ff000011;
.t{
padding: 5rpx 10rpx;
}
.p{
padding: 5rpx 10rpx;
color: #fff;
margin-left: 10rpx;
background-color: #F03F25;
height: 100%;
}
}
.num{


+ 34
- 0
pages.json View File

@ -16,6 +16,13 @@
"style": {
"enablePullDownRefresh" : true
}
},
{
"path" : "pages/index/product",
"style" :
{
"enablePullDownRefresh" : true
}
}
],
"preloadRule": {
@ -33,6 +40,33 @@
{
"path": "auth/wxUserInfo"
},
{
"path": "product/productDetail",
"style": {
"enablePullDownRefresh" : true
}
},
{
"path": "mine/address",
"style": {
"enablePullDownRefresh" : true
}
},
{
"path": "mine/setting"
},
{
"path": "order/order",
"style": {
"enablePullDownRefresh" : true
}
},
{
"path": "order/orderDetail",
"style": {
"enablePullDownRefresh" : true
}
},
{
"path": "renting/rentingList",
"style": {


+ 1
- 1
pages/index/activity.vue View File

@ -13,7 +13,7 @@
/>
</view>
<tabber select="1" />
<tabber select="2" />
</view>
</template>


+ 3
- 2
pages/index/center.vue View File

@ -12,8 +12,9 @@
mode="aspectFill"></image>
</view>
<view class="setUp"
@click="$utils.navigateTo('/pages_order/auth/wxUserInfo?back=1')">
@click="$utils.navigateTo('/pages_order/mine/setting')">
设置
</view>
</view>
@ -119,7 +120,7 @@
暂未开放
</view>
<tabber select="2" />
<tabber select="3" />
</view>
</template>


+ 32
- 1
pages/index/index.vue View File

@ -30,7 +30,7 @@
{{ headinfo.name }}
</view>
<view class="dynamics">
<!-- <view class="dynamics">
{{headinfo.num}}动态
<text>|</text>
@ -54,6 +54,9 @@
<text>|</text>
{{headinfo.activityNum}}活动
</view> -->
<view class="dynamics">
江华便民生活好帮手
</view>
</view>
@ -124,6 +127,14 @@
:title="headinfo.details"
:image="headinfo.kefu"
ref="customerServicePopup"/>
<view class="customerService">
<button>
<uv-icon size="40rpx"
color="#fff"
name="server-man"></uv-icon>
</button>
</view>
<PrivacyAgreementPoup />
<tabber select="0" />
@ -385,4 +396,24 @@
}
.customerService{
position: fixed;
top: calc(70vh + 120rpx);
right: 50rpx;
width: 100rpx;
height: 100rpx;
background-color: $uni-color;
border-radius: 50rpx;
display: flex;
justify-content: center;
align-items: center;
box-shadow: 0 0 10rpx 10rpx rgba(#000, 0.1);
z-index: 999;
overflow: hidden;
button{
// background-color: ;
all : unset;
}
}
</style>

+ 195
- 0
pages/index/product.vue View File

@ -0,0 +1,195 @@
<template>
<view class="page">
<navbar title="商城"/>
<!-- <view>
<uv-swiper
:list="bannerList"
indicator
height="320rpx"
keyName="image"></uv-swiper>
</view> -->
<view class="swipe">
<uv-swiper
:list="bannerList"
indicator
height="320rpx"
keyName="image"></uv-swiper>
</view>
<view class="productList">
<productList :productList="list"/>
</view>
<!-- <view class="waterfall">
<uv-waterfall ref="waterfall" v-model="list"
:add-time="10"
:left-gap="leftGap"
:right-gap="rightGap"
:column-gap="columnGap"
@changeList="changeList">
<template v-slot:list1>
<view>
<view v-for="(item, index) in list1" :key="item.id" class="waterfall-item"
@click="$utils.navigateTo('/pages_order/product/productDetail?id=' + item.id)">
<view class="waterfall-item__image" :style="[imageStyle(item)]">
<image :src="item.image" mode="widthFix" :style="{width:item.width+'px'}"></image>
</view>
<view class="waterfall-item__ft">
<view class="waterfall-item__ft__title">
<text class="title">{{item.name}}</text>
</view>
<view class="waterfall-item__ft__desc uv-line-2">
<text class="price">现价{{item.price}}</text>
<text class="oldPrice">原价{{item.oldPrice}}</text>
</view>
</view>
</view>
</view>
</template>
<template v-slot:list2>
<view>
<view v-for="(item, index) in list2" :key="item.id" class="waterfall-item"
@click="$utils.navigateTo('/pages_order/product/productDetail?id=' + item.id)">
<view class="waterfall-item__image" :style="[imageStyle(item)]">
<image :src="item.image" mode="widthFix" :style="{width:item.width+'px'}"></image>
</view>
<view class="waterfall-item__ft">
<view class="waterfall-item__ft__title">
<text class="title">{{item.name}}</text>
</view>
<view class="waterfall-item__ft__desc uv-line-2">
<text class="price">现价{{item.price}}</text>
<text class="oldPrice">原价{{item.oldPrice}}</text>
</view>
</view>
</view>
</view>
</template>
</uv-waterfall>
</view> -->
<tabber select="1" />
</view>
</template>
<script>
import mixinsList from '@/mixins/list.js'
import tabber from '@/components/base/tabbar.vue'
import productList from '@/components/user/productList.vue'
export default {
mixins: [mixinsList],
components : {
tabber,
productList,
},
computed: {
// imageStyle(item) {
// return item => {
// const v = uni.upx2px(750) - this.leftGap - this.rightGap - this.columnGap;
// const w = v / 2;
// const rate = w / item.w;
// const h = rate * item.h;
// return {
// width: w + 'px',
// height: h + 'px'
// }
// }
// }
},
data() {
return {
mixinsListApi: 'getShopPingPage',
// list1: [], //
// list2: [], //
// leftGap: 10,
// rightGap: 10,
// columnGap: 10,
bannerList : [],
}
},
onShow() {
this.getBannerList()
},
methods: {
// e.namelist1list2
// changeList(e) {
// this[e.name].push(e.value);
// },
// banner
getBannerList(){
this.$api('getBannerList', res =>{
if(res.code == 200){
this.bannerList = res.result
}
})
},
}
}
</script>
<style scoped lang="scss">
.page{
.swipe{
overflow: hidden;
border-radius: 20rpx;
margin: 20rpx;
}
.productList{
padding: 0 20rpx;
}
}
// $show-lines: 1;
// @import '@/uni_modules/uv-ui-tools/libs/css/variable.scss';
// .waterfall-item {
// overflow: hidden;
// margin-top: 10px;
// border-radius: 6px;
// }
// .waterfall-item__ft {
// padding: 20rpx;
// background: #fff;
// &__title {
// margin-bottom: 10rpx;
// line-height: 48rpx;
// font-weight: 700;
// .value {
// font-size: 32rpx;
// color: #303133;
// }
// }
// &__desc .value {
// font-size: 28rpx;
// color: #606266;
// }
// &__btn {
// padding: 10px 0;
// }
// }
// .waterfall-item__ft__title{
// font-size: 28rpx;
// }
// .price{
// color: #f40;
// }
// .oldPrice{
// color: #777;
// font-size: 22rpx;
// text-decoration: underline;
// }
</style>

+ 1
- 2
pages_order/components/address/addressList.vue View File

@ -90,12 +90,11 @@
//
getAddressList() {
return new Promise((success, fail) => {
this.$api('addressPage', this.queryParams, res => {
this.$api('getAddressList', this.queryParams, res => {
if (res.code == 200) {
this.addressList = res.result.records || [];
this.total = res.result.total || 0;
res.result.records.forEach(n => { //
console.log(n);
if (n.defaultFlag == 1) {
this.selectAddress = n.id
}


+ 4
- 3
pages_order/components/address/redactAddress.vue View File

@ -14,11 +14,12 @@
</uv-input>
</uv-form-item>
<uv-form-item label="所在地区" prop="address">
<uv-form-item label="所在地区" prop="address"
@click.stop="selectAddr">
<uv-input v-model="addressDetail.address" placeholder="请选择所在地区" border="none">
</uv-input>
<template #right>
<view style="padding-right: 40rpx;color: #FBAB32;" @click.stop="selectAddr">
<view style="padding-right: 40rpx;color: #FBAB32;">
<image src="../../static/address/selectIcon.png" mode="aspectFit"></image>定位
</view>
</template>
@ -37,7 +38,7 @@
</template>
<script>
// import Position from '@/utils/position.js'
import Position from '@/utils/position.js'
export default {
data() {
return {


+ 3
- 1
pages_order/components/list/renting/rentingItem.vue View File

@ -57,7 +57,9 @@
display: flex;
padding: 20rpx;
font-size: 24rpx;
border-bottom: 1px solid #00000012;
border-radius: 20rpx;
box-shadow: 0 0 6rpx 6rpx #00000011;
margin: 24rpx;
image{
width: 180rpx;
height: 180rpx;


+ 43
- 66
pages_order/components/list/workList/workItem.vue View File

@ -6,46 +6,54 @@
<view class="Position">
{{ item.title }}
</view>
<view class="topo1">
</view>
<view class="topo2">
</view>
</view>
<view class="index">
<view class="Salary">
{{item.minPrice}}-{{item.maxPrice}}
</view>
<view class="gang">
<view class="gang"
v-if="item.school">
|
</view>
<view class="Cashregister"
v-if="item.school">
{{item.school}}
</view>
<view class="gang"
v-if="item.workYear">
|
</view>
<view class="Cashregister">
{{item.title}}
<view class="Cashregister"
v-if="item.workYear">
{{item.workYear}}
</view>
<view class="gang">
<view class="gang"
v-if="item.city">
|
</view>
<view class="ads">
湘潭市
<view class="Cashregister"
v-if="item.city">
{{ item.city }}
</view>
</view>
<view class="address">
<view class="shop">
{{ item.address }}
</view>
<view class="Famousenterprises">
名企
</view>
<view class="authentication">
已认证
<view class="authentication"
v-if="item.isCardOpen">
<!-- 已认证 -->
{{ item.isCardOpen }}
</view>
</view>
<view class="bottom">
<view class="festival">
节假日福利
<view class="festival"
v-if="item.iconTitle">
<!-- 节假日福利 -->
{{ item.iconTitle }}
</view>
<view class="Apply">
<view class="Apply"
@click.stop="callPhone">
应聘
</view>
</view>
@ -70,7 +78,7 @@
methods: {
callPhone() {
uni.makePhoneCall({
phoneNumber: this.item.phone,
phoneNumber: this.item.userPhone,
success() {
console.log('安卓拨打成功');
},
@ -88,32 +96,14 @@
background-color: #fff;
padding: 20rpx;
border-radius: 20rpx;
box-shadow: 0 0 6rpx 6rpx #00000011;
margin: 24rpx;
}
.hire {
display: flex;
align-items: center;
margin: 10rpx 0rpx;
.topo1 {
margin-left: 15rpx;
font-size: 23rpx;
background-color: rgb(139, 181, 240);
padding: 5rpx 15rpx;
color: white;
border-radius: 42%;
}
.topo2 {
margin-left: 15rpx;
font-size: 23rpx;
background-color: rgb(254, 196, 96);
padding: 5rpx 15rpx;
color: white;
border-radius: 42%;
}
}
.index {
@ -125,15 +115,11 @@
.gang {
margin: 0rpx 25rpx 0rpx 25rpx;
color: rgb(75, 198, 153);
color: $uni-color;
}
.Cashregister {
color: rgb(151, 151, 151);
}
.ads {
color: rgb(151, 151, 151);
color: #888;
}
}
@ -144,22 +130,16 @@
color: #fff;
.shop {
color: rgb(151, 151, 151);
}
.Famousenterprises {
background-color: rgb(207, 198, 165);
margin-left: 10rpx;
border-radius: 7rpx;
padding: 5rpx 10rpx;
font-size: 25rpx;
color: #888;
}
.authentication {
background-color: #75c4a9;
background-color: $uni-color;
margin-left: 10rpx;
padding: 5rpx 10rpx;
font-size: 25rpx;
flex-shrink: 0;
border-radius: 10rpx;
}
}
@ -174,8 +154,8 @@
justify-content: center;
align-items: center;
background-color: white;
color: rgb(75, 198, 153);
border: 2px solid rgb(209, 238, 228);
color: $uni-color;
border: 1px solid $uni-color;
padding: 5rpx 10rpx;
border-radius: 10rpx;
font-size: 23rpx;
@ -185,14 +165,11 @@
display: flex;
justify-content: center;
align-items: center;
// height: 30px;
// width: 130rpx;
padding: 15rpx 30rpx;
background-color: rgb(238, 244, 240);
color: rgb(75, 198, 153);
padding: 10rpx 30rpx;
background-color: $uni-color;
color: #fff;
border-radius: 10rpx;
margin-left: auto;
}
}
</style>

+ 35
- 16
pages_order/components/product/submit.vue View File

@ -2,22 +2,28 @@
<view class="submit">
<view class=""
@click="$emit('share')">
<uv-icon
size="40rpx"
name="share-square"></uv-icon>
<view class="">
分享
</view>
<button open-type="share"
class="share">
<uv-icon
size="40rpx"
name="share-square"></uv-icon>
<view class="">
分享
</view>
</button>
</view>
<view class=""
<!-- <view class=""
@click="$utils.navigateTo('/index/cart')">
<uv-icon
size="40rpx"
name="shopping-cart"></uv-icon>
<view class="">
购物车
</view>
</view>
<button
class="share">
<uv-icon
size="40rpx"
name="shopping-cart"></uv-icon>
<view class="">
购物车
</view>
</button>
</view> -->
<view class="btn"
@click="$emit('submit')">
{{ submiitTitle }}
@ -30,7 +36,7 @@
name:"submit",
props : {
submiitTitle : {
default : '立即租赁',
default : '立即兑换',
type : String,
}
},
@ -58,7 +64,7 @@
align-items: center;
font-size: 24rpx;
.btn{
background: $uni-color;
background: $uni-price-color;
width: 600rpx;
height: 80rpx;
color: #fff;
@ -73,5 +79,18 @@
align-items: center;
flex-direction: column;
}
.share{
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
font-size: 24rpx;
margin: 0;
padding: 0;
background-color: #fff;
&::after{
border: none;
}
}
}
</style>

+ 56
- 24
pages_order/components/product/submitUnitSelect.vue View File

@ -24,20 +24,28 @@
<!-- 商品信息和数量 -->
<view class="submit-info">
<view class="title">
桌布租赁
{{ detail.name }}
</view>
<view class="box">
<image
class="image"
:src="unit.pic"
:src="detail.image && detail.image.split(',')[0]"
mode=""></image>
<view class="info">
<view class="price">
<text>{{ unit.depositPrice }}</text>
价格<text>{{ detail.price }}</text>
</view>
<view class="unit">
<!-- <view class="unit">
请选择规格
</view> -->
<view class="favorable" v-if="detail.points">
<view class="t">
积分兑换
</view>
<view class="p">
{{ detail.points }}
</view>
</view>
<view class="">
<uv-number-box v-model="num"></uv-number-box>
@ -47,7 +55,7 @@
</view>
<!-- 规格 -->
<view class="submit-unit">
<!-- <view class="submit-unit">
<view class="title">
规格选择
</view>
@ -59,7 +67,7 @@
{{ item.title }}
</view>
</view>
</view>
</view> -->
@ -69,16 +77,16 @@
费用明细
</view>
<view class="detail">
押金{{ unit.depositPrice }}
积分{{ detail.points }}
</view>
</view>
<!-- 提交按钮 -->
<view class="submit-btn">
<view class="l"
<!-- <view class="l"
@click="addCart">
加入租赁车
</view>
</view> -->
<view class="r"
@click="orderPay">
{{ submiitTitle }}
@ -105,7 +113,7 @@
},
props : {
submiitTitle : {
default : '立即租赁',
default : '立即兑换',
type : String,
},
detail : {
@ -128,9 +136,9 @@
//
open(){
this.$refs.popup.open('bottom')
if(!this.unit.id){
this.selectUnit(this.detail.hotelGoodsSkuList[0], 0)
}
// if(!this.unit.id){
// this.selectUnit(this.detail.hotelGoodsSkuList[0], 0)
// }
//
this.$refs.addressList.getAddressList().then(res => {
@ -180,28 +188,30 @@
orderPay(){
let data = {
id : this.detail.id,//id
skuId : this.unit.id,//id
shopId : this.detail.id,//id
// skuId : this.unit.id,//id
addressId : this.address.id,//id
sku : this.unit.title,//
// sku : this.unit.title,//
num : this.num,
}
if(this.$utils.verificationAll(data, {
skuId : '请选择规格',
// skuId : '',
addressId : '请选择地址',
})){
return
}
this.$api('orderPay', data, res => {
this.$api('createPointsOrder', data, res => {
if(res.code == 200){
uni.redirectTo({
url: '/pages/index/order'
})
// uni.requestPayment({
// provider: 'wxpay', //
// timeStamp: res.result.timeStamp, //
@ -282,7 +292,7 @@
align-items: center;
}
.price{
color: $uni-color;
color: $uni-price-color;
font-size: 28rpx;
padding: 10rpx 20rpx;
text{
@ -290,6 +300,28 @@
font-weight: 900;
}
}
.favorable{
margin-left: 10rpx;
display: flex;
// background-image: url(/static/image/product/favorable.png);
background-size: 100% 100%;
width: fit-content;
font-size: 22rpx;
margin-top: 6rpx;
margin-bottom: 6rpx;
border-radius: 10rpx;
overflow: hidden;
background-color: #ff000011;
.t{
padding: 5rpx 10rpx;
}
.p{
padding: 5rpx 10rpx;
color: #fff;
background-color: #F03F25;
height: 100%;
}
}
}
}
}
@ -305,8 +337,8 @@
flex-wrap: wrap;
font-size: 22rpx;
.act{
color: $uni-color;
border: 1px solid $uni-color;
color: $uni-price-color;
border: 1px solid $uni-price-color;
background-color: #F9E7DE;
}
view{
@ -345,17 +377,17 @@
display: flex;
justify-content: center;
align-items: center;
border: 1rpx solid $uni-color;
border: 1rpx solid $uni-price-color;
overflow: hidden;
.l{
flex: 1;
display: flex;
justify-content: center;
align-items: center;
color: $uni-color;
color: $uni-price-color;
}
.r{
background: $uni-color;
background: $uni-price-color;
flex: 1;
height: 100%;
display: flex;


+ 1
- 1
pages_order/components/screen/screenRen.vue View File

@ -1,5 +1,5 @@
<template>
<view class="page">
<view>
<uv-drop-down ref="dropDown"
sign="dropDown_1"
text-active-color="#3796F8"


+ 213
- 0
pages_order/mine/address.vue View File

@ -0,0 +1,213 @@
<template>
<view class="address">
<navbar title="地址管理" leftClick @leftClick="leftClick" />
<view class="address-list">
<addressList
controls
ref="addressList"
@deleteAddress="deleteAddress"
@editAddress="editAddress"
@editDefault="editDefault"/>
</view>
<redactAddress
ref="addressPopup"
:addressDetail="addressDetail"
@saveOrUpdate="saveOrUpdate"
:title="title"></redactAddress>
<view class="add-btn">
<view @click="addBtn" class="btn">
新增地址
</view>
</view>
</view>
</template>
<script>
import redactAddress from '../components/address/redactAddress.vue'
import addressList from '../components/address/addressList.vue'
export default {
components: {
redactAddress,
addressList
},
data() {
return {
title: '新增地址',
type : '',
}
},
onLoad(args) {
this.type = args.type
if(this.type == 'back'){
this.addBtn()
}
},
onShow() {
this.getAddressList()
},
methods: {
//
getAddressList() {
this.$refs.addressList.getAddressList()
},
//
editAddress(address) {
this.$refs.addressPopup.open({...address})
},
//
leftClick() {
uni.navigateBack(-1)
},
//
saveOrUpdate(addressDetail) {
let data = {
name: addressDetail.name,
phone: addressDetail.phone,
address: addressDetail.address,
addressDetail: addressDetail.addressDetail,
defaultFlag: addressDetail.defaultFlag || '0',
latitude: addressDetail.latitude,
longitude: addressDetail.longitude
}
if (addressDetail.id) {
data.id = addressDetail.id
}
this.$api('addOrEditAddress', data, res => {
if (res.code == 200) {
this.$refs.addressPopup.close()
this.getAddressList()
if(this.type == 'back'){
uni.navigateBack(-1)
}
uni.showToast({
title: '操作成功',
icon: 'none'
})
}
})
},
//
editDefault(id) {
this.$api('addressDefault', {
id: id,
}, res => {
if (res.code == 200) {
this.$refs.addressPopup.close()
uni.showToast({
title: '操作成功',
icon: 'none'
})
this.getAddressList()
}
})
},
//
deleteAddress(addressId) {
let self = this
uni.showModal({
title: '删除地址',
content: '确认删除此地址?删除后数据不可恢复',
success(e) {
if(e.confirm){
self.$api('deleteAddress', {
addressId
}, res => {
if (res.code == 200) {
uni.showToast({
title: '删除成功',
icon: 'none'
})
self.getAddressList()
}
})
}
}
})
},
//
addBtn() {
this.title = '新增地址'
this.$refs.addressPopup.open({ //
name: '',
phone: '',
address: '',
addressDetail: '',
defaultFlag: '',
latitude: '',
longitude: ''
})
},
}
}
</script>
<style lang="scss" scoped>
.address {
width: 750rpx;
margin: 0rpx auto;
background: #F5F5F5;
box-sizing: border-box;
min-height: 100vh;
.address-list {
padding: 40rpx 20rpx 120rpx 20rpx;
}
.add-btn {
position: fixed;
display: flex;
justify-content: center;
align-items: center;
left: 0;
bottom: 0;
width: 750rpx;
height: 100rpx;
background: white;
.btn {
display: flex;
align-items: center;
justify-content: center;
width: 85%;
height: 80rpx;
border-radius: 40rpx;
color: white;
text-align: center;
font-size: 28rpx;
background: $uni-color;
}
}
}
@media all and (min-width: 961px) {
.add-btn {
left: 50% !important;
transform: translateX(-50%);
}
}
//
:deep(.uni-system-choose-location) {
z-index: 99999 !important;
}
</style>

+ 147
- 0
pages_order/mine/setting.vue View File

@ -0,0 +1,147 @@
<template>
<view class="page">
<navbar title="设置与管理" leftClick @leftClick="$utils.navigateBack" />
<view class="frame">
<view class="content">
<view class="title">账号管理</view>
<uv-cell
icon="coupon"
title="地址管理"
isLink
@click="$utils.navigateTo('/pages_order/mine/address')"
iconStyle="font-size: 34rpx;"
rightIconStyle="font-size: 34rpx;">
<template #icon>
<image src="../static/setting/1.png" mode=""
style="width: 30rpx;height: 30rpx;"></image>
</template>
</uv-cell>
<uv-cell
icon="coupon"
title="订单管理"
isLink
@click="$utils.navigateTo('/pages_order/order/order')"
iconStyle="font-size: 34rpx;"
rightIconStyle="font-size: 34rpx;">
<template #icon>
<image src="../static/setting/1.png" mode=""
style="width: 30rpx;height: 30rpx;"></image>
</template>
</uv-cell>
<uv-cell
icon="coupon"
title="修改个人信息"
isLink
@click="$utils.navigateTo('/pages_order/auth/wxUserInfo?back=1')"
iconStyle="font-size: 34rpx;"
rightIconStyle="font-size: 34rpx;">
<template #icon>
<image src="../static/setting/1.png" mode=""
style="width: 30rpx;height: 30rpx;"></image>
</template>
</uv-cell>
<uv-cell
icon="coupon"
title="退出登录"
isLink
@click="$store.commit('logout')"
iconStyle="font-size: 34rpx;"
rightIconStyle="font-size: 34rpx;">
<template #icon>
<image src="../static/setting/1.png" mode=""
style="width: 30rpx;height: 30rpx;"></image>
</template>
</uv-cell>
</view>
<view class="content">
<view class="title">系统设置</view>
<uv-cell
icon="coupon"
title="清理缓存"
isLink
@click="clearCache"
iconStyle="font-size: 34rpx;"
rightIconStyle="font-size: 34rpx;">
<template #icon>
<image src="../static/setting/1.png" mode=""
style="width: 30rpx;height: 30rpx;"></image>
</template>
</uv-cell>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
tapItem(item, index) {
if (item.text === this.$t('pageTitle.languageSwitch')) {
this.$refs.changeLanguage.open();
}
},
//
clearCache(){
uni.showModal({
title: '确认清理缓存吗?',
success(r) {
if(r.confirm){
uni.showLoading()
setTimeout(() => {
uni.hideLoading()
uni.showToast({
title: '缓存清理成功!',
icon: 'none'
})
}, 800)
}
}
})
},
},
}
</script>
<style scoped lang="scss">
.page {
background-color: #FFF;
height: 100vh;
.frame {
.content {
margin: 40rpx 0;
.title {
font-size: 30rpx;
color: #b0b0b0;
padding: 0 30rpx;
}
.uv-cell__body{
padding: 40rpx 20rpx;
margin-top: 10rpx;
}
}
}
}
</style>

+ 223
- 0
pages_order/order/order.vue View File

@ -0,0 +1,223 @@
<template>
<view class="page">
<navbar
title="订单中心"
leftClick @leftClick="$utils.navigateBack"
/>
<uv-tabs :list="tabs"
:activeStyle="{color : '#FD5100', fontWeight : 600}"
lineColor="#FD5100"
lineHeight="8rpx"
lineWidth="50rpx"
:scrollable="true"
@click="clickTabs"></uv-tabs>
<view class="list">
<view class="item"
v-for="(item, index) in list"
@click="toOrderDetail(item.id)"
:key="index">
<view class="top">
<view class="service">
<text>{{item.projectId_dictText}}</text>
<text>{{item.type_dictText}}</text>
</view>
<view class="status">
<text> {{item.state_dictText}}</text>
</view>
</view>
<view class="content">
<view class="left">
<image mode="aspectFill" :src="item.image"></image>
</view>
<view class="right">
<view class="text-hidden-1">
客户姓名{{item.name}}
</view>
<view class="text-hidden-1">
产品规格{{item.unit}}
</view>
<view class="text-hidden-1">
租赁地址{{item.address}}
</view>
<!-- <view class="text-hidden-1">
总计时间{{item.useTime}}分钟
</view> -->
</view>
</view>
<view class="bottom">
<view class="price">
总价格<text class="num">{{item.money}}</text>
</view>
<view class="b1">
查看物流
</view>
<!-- <view @click.stop="toPayOrder(item)" class="b2" v-if="item.state == 0">
立即付款
</view>
<view class="b1" @click.stop="moreOrder(item.projectId,toPlaceorder)" v-if="item.state == 3">
再来一单
</view>
<view class="b2" @click.stop="toEvaluate(item.id,item.projectId,item.technicianId)" v-if="item.state == 3">
立即评价
</view>
<view class="b2" @click.stop="moreOrder(item.projectId,toPlaceorder)" v-if="item.state == 4">
再来一单
</view> -->
</view>
</view>
</view>
</view>
</template>
<script>
import tabber from '@/components/base/tabbar.vue'
import mixinsList from '@/mixins/list.js'
export default {
mixins: [mixinsList],
components : {
tabber,
},
computed : {
},
data() {
return {
mixinsListApi: 'getOrderList',
tabs: [{
name: '全部'
},
{
name: '待支付'
},
{
name: '待发货'
},
{
name: '待收货'
},
{
name: '已完成'
}
],
state : -1,
}
},
methods: {
//tab
clickTabs(index) {
if (index == 0) {
this.state = -1;
} else {
this.state = index - 1;
}
this.queryParams.pageSize = 10
this.orderPage()
},
//
toOrderDetail(id) {
uni.navigateTo({
url: '/pages_order/order/orderDetail?id=' + id
})
},
getOrderList(){
},
}
}
</script>
<style scoped lang="scss">
.page{
}
.list {
.item {
width: calc(100% - 40rpx);
background-color: #fff;
margin: 20rpx;
box-sizing: border-box;
border-radius: 16rpx;
padding: 30rpx;
.top {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 30rpx;
.service {}
.status {
font-size: 26rpx;
font-weight: 600;
}
}
.content {
display: flex;
margin: 10rpx 0;
.left {
width: 150rpx;
height: 150rpx;
border-radius: 10rpx;
image {
width: 150rpx;
height: 150rpx;
border-radius: 10rpx;
}
}
.right {
width: calc(100% - 160rpx);
color: #777;
font-size: 24rpx;
padding-left: 20rpx;
line-height: 40rpx;
background-color: #F8F8F8;
}
}
.bottom {
display: flex;
justify-content: space-between;
font-size: 25rpx;
.price {
font-weight: 900;
text {
color: #ff780099;
font-size: 30rpx;
}
}
.b1 {
border: 1px solid #777;
color: #777;
box-sizing: border-box;
}
.b2 {
background: linear-gradient(178deg, #4FD3BC, #60C285);
color: #fff;
}
view {
margin: 12rpx;
border-radius: 28rpx;
padding: 8rpx 28rpx;
margin-bottom: 0;
}
}
}
}
</style>

+ 564
- 0
pages_order/order/orderDetail.vue View File

@ -0,0 +1,564 @@
<template>
<view>
<navbar
title="订单详情"
leftClick
@leftClick="$utils.navigateBack"
/>
<!-- 水洗店 -->
<view class="">
<view class="controls">
<view class="title">
<image src="../static/order/icon.png" mode=""></image>
服务完成
</view>
<view class="tips">
待送回
</view>
<view class="btns">
<view class="btn1">
快递寄回
</view>
<view class="btn2">
线下配送
</view>
</view>
</view>
<view class="steps">
<uv-steps
activeColor="#FD5100"
:current="stepsCurrent" dot>
<uv-steps-item :title="item"
:key="index"
v-for="(item, index) in steps"></uv-steps-item>
</uv-steps>
</view>
</view>
<!-- 酒店和水洗店 -->
<view class="info">
<view class="flex"
style="display: flex;">
<view style="width: 8rpx;height: 30rpx;
background: #FD5100;border-radius: 6rpx;" />
<view class="head-title">服务项目</view>
</view>
<view class="flex">
<view class="server-item">
<view class="img-box">
<image :src="msgShop.image" mode="aspectFill"></image>
</view>
<view class="server-info">
<view class="server-title">
{{msgOrder.projectName}}
<!-- <view class="coupon">领券立减</view> -->
</view>
<view class="current-price">
<text class="unit"></text>{{msgOrder.money}}
</view>
<view class="sales-volume" style="margin-top: 5px;">
<view class="desc">规格{{msgOrder.unit}}</view>
</view>
<view class="time-coupon">
<!-- <view class="flex">
<image src="@/static/home/time-icon.png"></image>
<view class="time">{{msgOrder.useTime}}分钟</view>
</view> -->
<!-- <view class="sales-volume">
<image src="@/static/icons/icon1.png"></image>
<view class="desc">已售出{{msgShop.payNum}}+</view>
</view> -->
</view>
</view>
</view>
</view>
<!-- <view class="line min_tips">
<view class="head-div flex">
<view style="width: 118rpx;height: 118rpx;border-radius: 50%;overflow: hidden;">
<image style="width: 118rpx;" :src="msgTechnician.image" mode="widthFix"></image>
</view>
<view style="padding: 10rpx 34rpx;display: flex;flex-direction: column;justify-content: space-around;">
<view class="nickname">
{{msgTechnician.title}}
<view v-if="msgTechnician.isVip" class="tag">
<image src="@/static/order/s.png" mode="aspectFit"></image>
<view class="auth">官方认证</view>
</view>
</view>
<view class="days">
<van-rate v-model="msgTechnician.score" :size="10" readonly color="#ffb54c" void-icon="star"
void-color="#eee" />
<view class="">
好评{{msgTechnician.pinNum}}
</view>
</view>
</view>
</view>
<view @click="gototechnicianDetail(msgTechnician)" class="btn-x">
服务技师
</view>
</view> -->
<view class="line address">
<view class="address-top">
<!-- <view class="">
服务地址
</view> -->
<view class="copy">
<image @click="copy(msgOrder.name + ' ' + msgOrder.phone + ' ' + msgOrder.address)" src="/static/order/copy.png"></image>
</view>
</view>
<view class="addressDetail">
<view class="">{{msgOrder.name}} {{msgOrder.phone}}</view>
<view class="">{{msgOrder.address}}</view>
</view>
</view>
<view class="line">
<view class="t min_tips">
<view class="">
实付款
</view>
<view class="current-price">
{{ msgOrder.money }}
</view>
</view>
<view class="min_tips">
<view class="">
租赁费用
</view>
<view class="">
{{ msgOrder.price }}
</view>
</view>
<view class="min_tips">
<view class="">
水洗费用
</view>
<view class="">
{{ msgOrder.price}}
</view>
</view>
<view class="min_tips">
<view class="">
押金
</view>
<view class="">
{{ msgOrder.price }}
</view>
</view>
</view>
<!-- 订单信息 -->
<view class="line">
<view class="t min_tips">
<view class="">
订单信息
</view>
</view>
<view class="min_tips">
<view class="">
订单编号
</view>
<view class="">
{{msgOrder.id}}
</view>
</view>
<view class="min_tips">
<view class="">
下单时间
</view>
<view class="">
{{msgOrder.createTime}}
</view>
</view>
</view>
<!-- 下单须知 -->
<view class="line">
<view class="t min_tips">
<view class="">
下单须知
</view>
</view>
<view class="min_tips" style="line-height: 40rpx;">
{{msgShop.projectExplain}}
</view>
<view class="btns">
<view @click="clickService" class="btn">
联系客服
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
computed : {
},
data() {
return {
stepsCurrent : 0,
steps : [
'接单',
'检查',
'开始清洗',
'服务完成',
],
msgShop : {
money : 99.99,
image : 'https://img95.699pic.com/photo/50058/1378.jpg_wh860.jpg',
projectExplain : '1.xxxxxxxxxx xxxxxxxxxx。2.xxxxxx xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxx xxxxxxxxxxxxxxxx。3.。',
},
msgOrder : {
money : 99.99,
address : '广东省广州市越秀区城南故事C3栋2802',
name : '李**',
phone : '150*****091',
unit : '120*40*75【桌子尺寸】',
state_dictText : '已完成',
price : 199.99,
id : '020644568964457',
createTime : '2024-01-18 15:39',
projectName : '桌布租赁'
},
}
},
methods: {
}
}
</script>
<style scoped lang="scss">
.order {
background: linear-gradient(#4899a6, #6fc6ad, #6fc6ad);
padding-bottom: 10px;
}
.controls{
margin: 20rpx;
background-color: #fff;
height: 400rpx;
display: flex;
flex-direction: column;
width: 710rpx;
border-radius: 20rpx;
justify-content: center;
align-items: center;
.title{
display: flex;
justify-content: center;
align-items: center;
font-size: 40rpx;
image{
width: 100rpx;
height: 100rpx;
margin-right: 20rpx;
}
}
.tips{
font-size: 26rpx;
color: #FD5100;
margin-top: 10rpx;
}
.btns{
margin-top: 50rpx;
display: flex;
view{
margin: 0 20rpx;
display: flex;
justify-content: center;
align-items: center;
color: #fff;
background-color: $uni-color;
padding: 15rpx 40rpx;
border-radius: 40rpx;
}
.btn2{
background-color: #FFFFFF;
border: 1px solid #A7A7A7;
color: #A7A7A7;
}
}
}
.steps{
margin: 20rpx;
background-color: #fff;
display: flex;
flex-direction: column;
width: 710rpx;
border-radius: 20rpx;
padding: 70rpx 0;
/deep/ .uv-text__value{
font-size: 22rpx !important;
}
}
.box {
padding: 20px;
.btns {
display: flex;
justify-content: center;
align-items: center;
margin-top: 10px;
.btn {
color: #fff;
padding: 10rpx 50rpx;
background-color: #ffb300;
border-radius: 30rpx;
font-size: 25rpx;
margin-right: 10rpx;
}
.btc{
background: #ccc;
}
}
}
.info {
margin: 10px;
padding: 20rpx;
background-color: #fff;
width: calc(100% - 40px);
border-radius: 10px;
.head-title {
font-family: PingFang SC, PingFang SC-Bold;
color: #2f2e2e;
line-height: 30rpx;
margin-left: 10rpx;
}
.server-item {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
background: white;
border-radius: 15rpx;
box-sizing: border-box;
margin: 20rpx 0rpx;
width: 100%;
.img-box {
width: 150rpx;
height: 150rpx;
border-radius: 10rpx;
overflow: hidden;
image {
width: 100%;
height: 100%;
}
}
.server-info {
display: flex;
flex-direction: column;
justify-content: space-around;
width: calc(100% - 180rpx);
box-sizing: border-box;
padding: 10rpx 15rpx;
.server-title {
display: flex;
margin-bottom: 10rpx;
}
.coupon {
display: flex;
justify-content: center;
align-items: center;
background: #F29E45;
color: white;
width: 120rpx;
height: 40rpx;
border-radius: 10rpx;
margin-left: 10rpx;
font-size: 22rpx;
}
.time-coupon,
.price {
display: flex;
flex-wrap: wrap;
align-items: center;
}
.time-coupon {
margin: 10rpx 0rpx;
font-size: 26rpx;
justify-content: space-between;
width: 100%;
.flex {
justify-content: center;
align-items: center;
}
image {
width: 25rpx;
height: 25rpx;
}
.time {
color: #B8B8B8;
margin-left: 6rpx;
}
}
.sales-volume {
display: flex;
align-items: center;
color: #B8B8B8;
font-size: 24rpx;
image {
width: 25rpx;
height: 25rpx;
}
}
}
}
.address {
.address-top{
display: flex;
justify-content: space-between;
align-items: center;
image{
width: 30rpx;
height: 30rpx;
}
}
.addressDetail {
color: #777;
font-size: 22rpx;
padding: 5px 0;
}
text {
background-color: #F29E45;
padding: 8rpx 10rpx;
color: #fff;
font-size: 20rpx;
margin-left: 10px;
border-radius: 5px;
}
}
.min_tips {
font-size: 22rpx;
color: #777;
display: flex;
justify-content: space-between;
padding: 5px 0;
align-items: center;
}
.current-price {
font-size: 30rpx;
color: #FD5100;
}
.line {
border-top: 2px dotted #00000011;
padding: 20rpx 0;
.t {
padding: 5px 0;
color: #000;
font-size: 26rpx;
}
}
.head-div {
.nickname {
font-size: 30rpx;
font-weight: 600;
text-align: left;
line-height: 42rpx;
display: flex;
align-items: center;
.tag {
position: relative;
display: flex;
align-items: center;
image {
height: 45rpx;
width: 90rpx;
vertical-align: middle;
}
.auth {
position: absolute;
white-space: nowrap;
color: #FF6200;
left: 23rpx;
font-size: 17rpx;
}
}
}
.days {
font-size: 20rpx;
font-weight: 400;
text-align: left;
line-height: 56rpx;
display: flex;
align-items: center;
view {
padding-left: 5px;
}
}
}
.btn-x {
color: #6fc6ad;
border: 1px solid #6fc6ad;
padding: 10rpx 20rpx;
border-radius: 30rpx;
}
.btns {
display: flex;
justify-content: center;
.btn {
color: #6fc6ad;
border: 1px solid #6fc6ad;
padding: 10rpx 20rpx;
border-radius: 30rpx;
}
}
}
</style>

+ 240
- 0
pages_order/product/productDetail.vue View File

@ -0,0 +1,240 @@
<template>
<view class="page">
<navbar title="商品详情" leftClick @leftClick="$utils.navigateBack" />
<view class="swipe">
<uv-swiper
:list="detail.image && detail.image.split(',')"
indicator
height="350rpx"></uv-swiper>
</view>
<view class="info">
<view class="title">
{{ detail.name }}
</view>
<view class="nameSub">
{{ detail.nameSub }}
</view>
<view class="info-line">
<view class="price">
现价<text>
{{
detail.price
}}
</text>
</view>
<!-- <view class="num">
已售{{ detail.soldNum || 0 }}+
<image src="../static/product/like.png" mode=""></image>
</view> -->
</view>
<view class="favorable" v-if="detail.points">
<view class="t">
积分兑换
</view>
<view class="p">
{{ detail.points }}
</view>
</view>
<view class="tips">
<view class="tip">
专业设备
</view>
<view class="tip">
科学流程
</view>
<view class="tip">
质量保证
</view>
</view>
</view>
<view class="info-unit">
<uv-cell>
<template #icon>
<text>上门取件·送货上门</text>
</template>
</uv-cell>
</view>
<view class="content">
<view class="title">
商品详情
</view>
<image
v-for="(item,index) in detail.imageDetails && detail.imageDetails.split(',')"
:src="item"
:key="index"
style="width: 100%;"
mode="widthFix"></image>
</view>
<!-- 分享和租赁按钮 -->
<submit
@submit="handleSubmit"
@share="share"/>
<!-- 选择规格 -->
<submitUnitSelect ref="submitUnitSelect"
v-if="detail.id"
:detail="detail"/>
</view>
</template>
<script>
import submit from '../components/product/submit.vue'
import submitUnitSelect from '../components/product/submitUnitSelect.vue'
export default {
components : {
submit,
submitUnitSelect,
},
data() {
return {
detail : {},
id : 0,
}
},
onLoad(args) {
this.id = args.id
this.getData()
},
//
onShareAppMessage(res) {
return {
title: this.detail.name,
path: '/pages_order/product/productDetail?id=' + this.id
}
},
onPullDownRefresh() {
this.getData()
},
methods: {
//
share(){
},
//
submit(){
},
handleSubmit(){
this.$refs.submitUnitSelect.open()
// uni.showModal({
// title: '',
// cancelText: '',
// confirmText: '',
// success(r) {
// if(r.confirm){
// }else{
// }
// }
// })
},
getData(){
this.$api('getShopPingDetail', {
id : this.id
}, res => {
uni.stopPullDownRefresh()
if(res.code == 200){
this.detail = res.result
}
})
},
}
}
</script>
<style scoped lang="scss">
.page{
padding-bottom: 100rpx;
.swipe{
}
.info{
padding: 30rpx;
background-color: #fff;
.title{
font-size: 34rpx;
font-weight: 900;
}
.nameSub{
font-size: 30rpx;
margin-top: 10rpx;
}
.info-line{
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 20rpx;
.price{
font-size: 28rpx;
color: $uni-price-color;
text{
font-size: 34rpx;
}
}
.num{
font-size: 24rpx;
image{
width: 24rpx;
height: 24rpx;
}
}
}
.favorable{
display: flex;
// background-image: url(/static/image/product/favorable.png);
background-size: 100% 100%;
width: fit-content;
font-size: 22rpx;
margin-top: 6rpx;
border-radius: 10rpx;
overflow: hidden;
background-color: #ff000011;
.t{
padding: 5rpx 10rpx;
}
.p{
padding: 5rpx 10rpx;
color: #fff;
background-color: #F03F25;
height: 100%;
}
}
.tips{
display: flex;
font-size: 20rpx;
margin-top: 30rpx;
.tip{
margin-right: 40rpx;
}
}
}
.info-unit{
margin-top: 20rpx;
padding: 30rpx;
background-color: #fff;
/deep/ text{
font-size: 26rpx;
}
/deep/ .text{
color: #7C7C7C;
margin-right: 20rpx;
font-size: 26rpx;
}
}
.content{
background-color: #fff;
margin-top: 20rpx;
.title{
padding: 30rpx;
}
}
}
</style>

+ 4
- 0
pages_order/renting/rentingList.vue View File

@ -73,5 +73,9 @@
.list{
padding: 10rpx;
}
/deep/ .uv-drop-down{
justify-content: space-around;
}
}
</style>

+ 5
- 5
pages_order/scenicSpot/scenicSpotList.vue View File

@ -132,8 +132,7 @@
<style scoped lang="scss">
.page {
background: #f1f1f1;
background-color: #fff;
.list {
padding: 0 20rpx;
}
@ -144,8 +143,9 @@
.waterfall-item {
overflow: hidden;
margin-top: 10px;
border-radius: 6px;
margin-top: 20rpx;
border-radius: 12rpx;
box-shadow: 0 0 6rpx 6rpx #00000009;
}
.waterfall-item__ft {
@ -169,7 +169,7 @@
}
&__btn {
padding: 10px 0;
padding: 20rpx 0;
}
}
</style>

+ 4
- 21
pages_order/work/workList.vue View File

@ -10,8 +10,7 @@
<view class="">
<screenRen @clickItem="clickItem" />
</view>
<uv-tabs :list="tabsList" @click="click"></uv-tabs>
<!-- <workList ref="workList"/> -->
<view class="list">
@ -35,25 +34,6 @@
data() {
return {
mixinsListApi: 'getJobPage',
tabsList: [{
name: '最新职位',
}, {
name: '零售店/个体户',
}, {
name: '美术/图形设计'
}, {
name: '跑腿'
}, {
name: '音乐'
}, {
name: '美食'
}, {
name: '文化'
}, {
name: '财经'
}, {
name: '手工'
}]
}
},
methods: {
@ -72,4 +52,7 @@
</script>
<style scoped lang="scss">
.page{
background-color: #fff;
}
</style>

+ 16
- 0
store/store.js View File

@ -110,6 +110,22 @@ const store = new Vuex.Store({
}
})
},
// 退出登录
logout(state){
uni.showModal({
title: '确认退出登录吗',
success(r) {
if(r.confirm){
state.userInfo = {}
state.role = false
uni.removeStorageSync('token')
uni.redirectTo({
url: '/pages/index/index'
})
}
}
})
},
},
actions: {},
})


+ 1
- 1
uni.scss View File

@ -13,7 +13,7 @@
*/
/* 颜色变量 */
$uni-color: #5baaff;
$uni-price-color: #D03F25;
/* 行为相关颜色 */
$uni-color-primary: #1671ff;


+ 1
- 1
utils/position.js View File

@ -148,7 +148,7 @@ function getUserAddressByIp(key) { //根据IP获取当前用户位置
}
//打开地图让用户选择位置
function selectAddress(successCallback) {
function selectAddress(longitude, latitude, successCallback) {
uni.chooseLocation({
// longitude, //经度
// latitude, //纬度


Loading…
Cancel
Save