Bläddra i källkod

Merge branch 'deploy' of chelingzhu-web/qbyc-shop-mini into master

李文文 4 år sedan
förälder
incheckning
b18604ff99

+ 9 - 0
src/api/bundle.js

@@ -107,3 +107,12 @@ export const queryByOrderList = params => {
     data: params
   }).then(res => res.data);
 };
+
+// 套餐适用门店
+export const getUsedStore = params => {
+  return request({
+    url: `bundleStore/queryStoreByBundle`,
+    method: 'post',
+    data: params
+  }).then(res => res.data);
+};

+ 12 - 0
src/api/store.js

@@ -28,3 +28,15 @@ export const getCurrentArea = params => {
     data: params
   }).then(res => res.data);
 };
+
+// 获取套餐下的适用门店列表
+export const getBundleStore = params => {
+  let url = `/bundleStore/queryStoreByBundle/${params.pageNo}/${params.pageSize}`;
+  delete params.pageNo;
+  delete params.pageSize;
+  return request({
+    url: url,
+    method: 'post',
+    data: params
+  }).then(res => res.data);
+};

+ 2 - 1
src/app.json

@@ -42,7 +42,8 @@
     "pages/storeSearch/main",
     "pages/selectCity/main",
     "pages/myPackage/main",
-    "pages/packageDetail/main"
+    "pages/packageDetail/main",
+    "pages/allStore/main"
   ],
   "subpackages": [{
   	"root": "pages/pagesA/",

+ 1 - 1
src/components/OrderCard.vue

@@ -26,7 +26,7 @@
             <!-- <van-button class="btn" size="small" type="danger" :disabled="payLoading" :loading="payLoading" @click="toPay()">立即支付</van-button> -->
           </div>
           <div class="btn-control" v-else>
-            <van-button class="btn" size="small" @click="toDetail()">查看详情</van-button>
+            <van-button class="btn" size="small"  @click="toDetail()">查看详情</van-button>
           </div>
         </div>
       </div>

+ 144 - 0
src/components/uni-rate/uni-rate.vue

@@ -0,0 +1,144 @@
+<template>
+  <view class="uni-rate">
+    <view
+      v-for="(star, index) in stars"
+      :key="index"
+      :style="{ marginLeft: margin + 'px' }"
+      class="uni-rate-icon"
+      @click="_onClick(index)"
+    >
+      <uni-icons
+        :size="size"
+        :color="color"
+        :type="isFill ? 'star-filled' : 'star'"
+      />
+      <view
+        :style="{ width: star.activeWitch }"
+        class="uni-rate-icon-on">
+        <uni-icons
+          :size="size"
+          :color="activeColor"
+          type="star-filled"/>
+      </view>
+    </view>
+  </view>
+</template>
+
+<script>
+import uniIcons from '../uni-icons/uni-icons.vue'
+export default {
+  name: 'UniRate',
+  components: {
+    uniIcons
+  },
+  props: {
+    isFill: {
+      // 星星的类型,是否镂空
+      type: [Boolean, String],
+      default: true
+    },
+    color: {
+      // 星星的颜色
+      type: String,
+      default: '#ececec'
+    },
+    activeColor: {
+      // 星星选中状态颜色
+      type: String,
+      default: '#ffca3e'
+    },
+    size: {
+      // 星星的大小
+      type: [Number, String],
+      default: 24
+    },
+    value: {
+      // 当前评分
+      type: [Number, String],
+      default: 0
+    },
+    max: {
+      // 最大评分
+      type: [Number, String],
+      default: 5
+    },
+    margin: {
+      // 星星的间距
+      type: [Number, String],
+      default: 0
+    },
+    disabled: {
+      // 是否可点击
+      type: [Boolean, String],
+      default: false
+    }
+  },
+  data () {
+    return {
+      valueSync: ''
+    }
+  },
+  computed: {
+    stars () {
+      const value = Number(this.valueSync) ? Number(this.valueSync) : 0
+      const starList = []
+      const floorValue = Math.floor(value)
+      const ceilValue = Math.ceil(value)
+      for (let i = 0; i < this.max; i++) {
+        if (floorValue > i) {
+          starList.push({
+            activeWitch: '100%'
+          })
+        } else if (ceilValue - 1 === i) {
+          starList.push({
+            activeWitch: (value - floorValue) * 100 + '%'
+          })
+        } else {
+          starList.push({
+            activeWitch: '0'
+          })
+        }
+      }
+      return starList
+    }
+  },
+  created () {
+    this.valueSync = this.value
+  },
+  methods: {
+    _onClick (index) {
+      if (this.disabled) {
+        return
+      }
+      this.valueSync = index + 1
+      this.$emit('change', {
+        value: this.valueSync
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss">
+.uni-rate {
+	line-height: 0;
+	font-size: 0;
+	display: flex;
+	flex-direction: row;
+
+	&-icon {
+		position: relative;
+		line-height: 0;
+		font-size: 0;
+		display: inline-block;
+
+		&-on {
+			line-height: 1;
+			position: absolute;
+			top: 0;
+			left: 0;
+			overflow: hidden;
+		}
+	}
+}
+</style>

+ 317 - 0
src/pages/allStore/index.vue

@@ -0,0 +1,317 @@
+<template>
+  <div class="container" >
+    <div class="container-bundleName">{{bundleName?bundleName:''}}</div>
+    <scroll-view scroll-y class="store-content">
+      <v-card style="height:auto" :thumb="item.icon" v-for="(item, index) in storeList" :key="item.id">
+        <div class="store-info">
+          <div class="title txt-clip">{{item.name}}</div>
+          <div class="content">
+            <div class="left">
+              <div class="desc">
+                <van-rate :value="item.star" size="10" color="#ff8811" allow-half void-color="#eee" void-icon="star" />
+                <span class="rate-num">{{item.star}}</span>
+              </div>
+              <div class="phone">
+                <van-icon name="phone" class="phone-icon" />
+                <div @click="callPhone(item.managerMobile)"> {{item.managerMobile}} </div>
+              </div>
+            </div>
+            <div class="right" v-if="item.distance&&item.distance>=0" @click="openLocation(item)">
+              <div class="navigation">
+                <van-icon name="location" />
+                导航
+              </div>
+              <div>
+                距您{{item.distance}}KM
+              </div>
+            </div>
+          </div>
+          <div>
+            <div>
+              {{item.addrProvinceName + item.addrCityName + item.addrDistrictName + item.addrDetail}}
+            </div>
+            <div class="tags">
+              <div class="tag" v-for="(tag, index2) in item.storeBizList" :key="tag.id">{{tag.bizTypeName}}</div>
+            </div>
+          </div>
+        </div>
+      </v-card>
+      <no-data :options="storeList" name="暂无数据"/>
+    </scroll-view>
+  </div>
+</template>
+
+<script>
+// import { getLookUpData } from '@/api/api';
+import { getBundleStore } from '@/api/store.js'
+import NoData from '@/components/NoData';
+import storage from '@/utils/storage.js'
+// import { province, city, area } from '@/api/address.js'
+export default {
+  name: 'packageDetail',
+  components: { 'no-data': NoData },
+  data() {
+    return {
+      storeList: [],
+      pageNo: 1,
+      pageSize: 10,
+      isloaded: false, // 判断是否请求接口完成
+      usedBundleId:'',
+      bundleName:'' ,// 套餐名称
+      latitude:'', // 当前位置经度
+      longitude:'' // 当前位置维度
+    };
+  },
+  computed: {
+
+  },
+  methods: {
+    // 页面初始化
+    pageInit () {
+      this.pageNo = 1;
+      this.storeList = [];
+      this.isloaded=false
+    },
+
+    callPhone(phone) {
+      wx.makePhoneCall({
+        phoneNumber: phone
+      });
+    },
+    getStarNum(level) {
+      const star = (5 - 0.5 * (level - 1)).toString();
+      return star.indexOf('.') > -1 ? star : star + '.0';
+    },
+    openLocation(item) {
+      wx.openLocation({
+        latitude: item.lat - 0,
+        longitude: item.lng - 0,
+        name: item.name,
+        address: item.addrProvinceName + item.addrCityName + item.addrDistrictName + item.addrDetail
+      });
+    },
+    // 格式化数据
+    formatList(list) {
+      const _this = this;
+      if (list.length) {
+        list.forEach(item => {
+          item.distance = item.distance ? (item.distance/1000).toFixed(2) : '';
+          item.star = this.getStarNum(item.level);
+        });
+        return list;
+      } else if( _this.isloaded && !list.length){
+        return []
+      }
+      return [];
+    },
+    // 获取套餐下的适用门店
+    getBundleStoreList(){
+      const _this=this
+      const params={bundleId:this.usedBundleId,pageNo: this.pageNo,pageSize: this.pageSize}
+      if(this.latitude && this.longitude){
+        params.store={
+          lat:this.latitude,
+          lng:this.longitude
+        }
+      }
+      wx.showLoading({
+        mask: true,
+        title: '加载中'
+      });
+      getBundleStore(params).then(res=>{
+        setTimeout(function(){
+          wx.hideLoading();
+        },500)
+        if(res.status == "200"){
+          _this.isloaded = true
+          if ( _this.pageNo == 1) {
+            console.log(res,'----------liebiaoshuju')
+             // _this.storeList = res.data.list
+            _this.storeList = _this.formatList(res.data.list)
+            console.log( _this.storeList,' _this.storeList','套餐下的门店')
+          } else {
+            _this.storeList = _this.storeList.concat(_this.formatList(res.data.list))
+          }
+          let len = _this.storeList.length
+          if(len>=res.data.count){
+            if(_this.pageNo!=1){
+              wx.showToast({
+                title: '已经是最后一页'
+              })
+            }
+            _this.isLastPage = true
+          }
+        } else {
+          wx.showToast({
+            title: res.message,
+            icon: 'none',
+            duration: 2500
+          });
+        }
+      })
+    },
+  },
+  // 监听用户上拉触底事件
+  onReachBottom() {
+  	if(!this.isLastPage){
+  		this.pageNo = this.pageNo + 1
+  		this.getBundleStoreList()
+  	}
+  },
+  onShow() {
+    wx.showLoading({
+      mask: true,
+      title: '加载中'
+    });
+    this.pageInit()
+    setTimeout(()=>{
+      this.getBundleStoreList()
+    },500)
+  },
+  onLoad(options) {
+    console.log(options,"sotore index options",options.bundleName,'bundleName')
+    // 判断当前页面的上个页面是套餐详情页 筛选条件等不显示
+    if(options && options.bundleId && options.bundleName){
+      this.usedBundleId=options.bundleId
+      this.bundleName=options.bundleName
+    }
+    wx.getLocation({
+     type: 'wgs84',
+     success:(res=> {
+       if(res.latitude && res.longitude){
+         this.latitude = res.latitude
+         this.longitude = res.longitude
+       }
+       console.log(res,'位置信息',this.latitude,this.longitude)
+     })
+    })
+  }
+};
+</script>
+
+<style lang="stylus">
+._v-card .v-card{
+  border-bottom: 1px solid #eee;
+  height:auto;
+}
+.vcard .van-card__img{
+  border-radius:5px;
+}
+.container {
+  height: 100%;
+  overflow: hidden;
+  box-sizing: border-box;
+  .container-bundleName{
+    width: 100%;
+    padding :8px 12px
+    border-bottom :1px solid #eee
+  }
+}
+.store-content {
+  height: 100%;
+  box-sizing: border-box;
+}
+
+.icon {
+  position: relative;
+  top: 4rpx;
+}
+
+.store-info {
+  box-sizing: border-box;
+  font-size: 25rpx;
+  height: 100%;
+  flex: 1;
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+
+  .content {
+    display: flex;
+    flex: 1;
+
+    .left {
+      flex: 1;
+    }
+
+    .navigation {
+      font-size: 1em;
+      text-align: right;
+    }
+  }
+
+  .title {
+    font-size: 1em;
+    padding: 10rpx 0;
+    font-weight:bold;
+  }
+
+  .desc {
+    color: #80848f;
+    display: flex;
+  }
+
+  .rate-num {
+    padding: 0 15rpx;
+  }
+
+  .phone {
+    display: flex;
+    align-items: center;
+    padding: 12rpx 0;
+    color:#57a3f3;
+  }
+
+  .tags {
+    margin-top: 5rpx;
+    display: flex;
+    font-size: 0.8em;
+
+    .tag {
+      color: #808695;
+      border: 1rpx solid #ff5500;
+      padding: 5rpx 10rpx;
+    }
+
+    .tag + .tag {
+      margin-left: 10rpx;
+    }
+  }
+}
+.select-button {
+  border-radius :5px;
+  position: absolute;
+  right: 20px;
+  top: 10px;
+}
+.checkbox-group {
+  padding: 5px 20px 5px 40px;
+  display: flex;
+  flex-wrap: wrap;
+  justify-content: space-between;
+}
+.radio-group {
+  max-height: 280px;
+  overflow: auto;
+}
+.checkbox-item {
+  width: 40vw;
+  padding: 15rpx 0;
+}
+.radiobox-item {
+  width :100%;
+  padding :10px 0;
+  display : flex;
+  align-items : center;
+  border-bottom :1px solid #9999;
+  .van-radio__label{
+    flex-grow : 1;
+  }
+}
+.toolbar-detail-control {
+  display: flex;
+  .btn {
+    flex: 1;
+  }
+}
+</style>

+ 12 - 0
src/pages/allStore/main.js

@@ -0,0 +1,12 @@
+import Vue from 'vue';
+import App from './index';
+
+// add this to handle exception
+// Vue.config.errorHandler = function (err) {
+//   if (console && console.error) {
+//     console.error(err)
+//   }
+// }
+
+const app = new Vue(App);
+app.$mount();

+ 9 - 0
src/pages/allStore/main.json

@@ -0,0 +1,9 @@
+{
+  "navigationBarTitleText": "适用门店",
+  "usingComponents": {
+    "van-rate": "../../../static/vant/rate/index",
+    "van-icon": "../../../static/vant/icon/index",
+    "van-checkbox": "../../../static/vant/checkbox/index",
+    "van-checkbox-group": "../../../static/vant/checkbox-group/index"
+  }
+}

+ 120 - 6
src/pages/bundleDetail/index.vue

@@ -12,7 +12,7 @@
             </div>
           </div>
         </div>
-        <div class="bundle-detail-desc">
+        <div class="bundle-detail-desc" v-if="options.description">
           <div class="bundle-detail-title">
             <van-icon name="stop" class="detail-title-icon" /> 套餐描述:
           </div>
@@ -20,7 +20,27 @@
             {{options.description}}
           </div>
         </div>
-        <div class="bundle-detail-desc">
+		<div class="bundle-detail-desc" v-if="storeData && storeData.length!=0">
+		  <div class="bundle-detail-title allstore">
+		    <van-icon name="stop" class="detail-title-icon" /> 适用门店: <span class="detail-allstore" @click="gotoAllStore()">查看全部</span>
+		  </div>
+
+      <div class="detail-text storeData-detail">
+          <image :src="storeData[0].icon" style="width:50px;height: 50px;"/>
+          <div>
+            <div class="storeData-item name">
+              {{storeData[0].name}}
+            </div>
+            <div class="storeData-item phone">
+              <span style="color:blue" @click="callPhone(storeData[0].managerMobile)">{{storeData[0].managerMobile}}</span> <span style="color:#BBBEC4" v-if="storeData[0].distance"> &nbsp;&nbsp;距您{{distance ? distance:''}} </span> <span class="phoneBtn" v-if="storeData[0].distance">最近</span>
+            </div>
+            <div class="storeData-item" style="color:#BBBEC4">
+              {{storeData[0].addrDetail}}
+            </div>
+          </div>
+      </div>
+		</div>
+        <div class="bundle-detail-desc" v-if="imgList && imgList.length!=0">
           <div class="bundle-detail-title">
             <van-icon name="stop" class="detail-title-icon" /> 套餐详情:
           </div>
@@ -44,7 +64,7 @@
 </template>
 
 <script>
-import { bundleById } from '@/api/bundle';
+import { bundleById,getUsedStore } from '@/api/bundle';
 import BundleCard from '@/components/BundleCard';
 import { checkLogin } from '@/api/login';
 
@@ -58,7 +78,12 @@ export default {
       imgList: [],
       finished: false,
       timeout: null,
-      loading: false
+      loading: false,
+      bundleId:'', // 套餐id
+      storeData:[],
+      latitude:'', // 当前位置经度
+      longitude:'' ,// 当前位置维度
+      distance:'' // 距离
     };
   },
   methods: {
@@ -85,9 +110,46 @@ export default {
           });
         }
       });
-    }
+    },
+    // 查看套餐适用门店
+    getUsedStorelist(){
+      const params={bundleId:this.$mp.query.id}
+      if(this.latitude && this.longitude){
+        params.store={
+          lat:this.latitude,
+          lng:this.longitude
+        }
+      }
+      console.log(params,'this.latitude,this.latitude')
+      getUsedStore(params).then(res=>{
+        console.log(res,'---------res','适用门店')
+        if(res.status==200 && res.data!=[]){
+          this.storeData=res.data
+          if(this.storeData){
+            this.distance=(this.storeData[0].distance/1000).toFixed(2)/1+'KM'
+            console.log(a,'--------------距离')
+          }
+        }
+      })
+    },
+    // 查看所有适用门店
+    gotoAllStore(){
+      console.log('gotoAllStore----------跳转页面')
+      wx.navigateTo({
+        url: `/pages/allStore/main?bundleId=${this.options.id}&bundleName=${this.options.name}`
+      });
+    },
+    // 拨打电话
+    callPhone(phone) {
+      wx.makePhoneCall({
+        phoneNumber: phone
+      });
+    },
   },
   onShow() {
+    setTimeout(()=>{
+       this.getUsedStorelist()
+    },500)
     wx.showLoading({
       mask: true,
       title: '加载中'
@@ -95,9 +157,11 @@ export default {
     this.loading = false
     const { id } = this.$mp.query;
     const _this = this;
+    console.log(this.$mp.query,'this.$mp.query')
     bundleById({ id }).then(res => {
       if (res.status === '200') {
         _this.options = res.data;
+        console.log(_this.options,'---------_this.options')
         if (res.data.detail) {
           _this.imgList = res.data.detail.split(',');
         }
@@ -120,6 +184,19 @@ export default {
       console.error(err);
     });
   },
+  onLoad(options){
+    console.log(options.id,'options.id','jiecan')
+    wx.getLocation({
+     type: 'wgs84',
+     success:(res=> {
+       if(res.latitude && res.longitude){
+         this.latitude = res.latitude
+         this.longitude = res.longitude
+       }
+       console.log(res,'位置信息',this.latitude,this.longitude)
+     })
+    })
+  },
   onUnload() {
     wx.hideLoading();
     this.options = {};
@@ -183,8 +260,23 @@ export default {
       position: relative;
       top: 4rpx;
     }
+    .detail-allstore{
+      display: inline-block;
+      padding :2px 6px;
+      margin-left :5px;
+      align-items: center;
+      border-radius:8px;
+      // border :1px solid #BBBEC4;
+      background-color :#f81;
+      color :#fff;
+      font-size: 0.8em
+      text-align :center
+    }
+  }
+  .allstore{
+      display :flex;
+      align-items: center;
   }
-
   .detail-content-imgs {
     margin-top: 5px;
     .detail-img {
@@ -194,4 +286,26 @@ export default {
     }
   }
 }
+.storeData-detail{
+  display :flex;
+  align-items: center;
+  .storeData-item{
+    margin-left:8px
+    font-size :12px
+  }
+  .name{
+    font-weight :bold
+  }
+  .phone{
+    margin: 8px 0 8px 8px
+    .phoneBtn{
+      display :inline-block;
+      padding :0 3px;
+      border-radius 3px;
+      color :#fff;
+      background-color :#FFD100
+    }
+  }
+
+}
 </style>

+ 1 - 1
src/pages/index/index.vue

@@ -80,7 +80,7 @@ export default {
       });
     },
     toDetail(item) {
-      console.log(item)
+      console.log(item,'----------套餐详情')
       let url = item.redirectPath + '?title=' + item.name
       let type = item.redirectType
       if(!item.redirectPath){

+ 54 - 28
src/pages/orderDetail/index.vue

@@ -5,37 +5,43 @@
         <h3 class="title">{{getTitle}}</h3>
         <span class="desc" v-if="orderBundle.orderFlag == 'CAEL' || orderBundle.orderFlag == 'SYCA' ">取消原因: {{getPayStatusFun}}</span>
       </div>
-      <div class="content">
-        <div class="product-img" @click="toDetail">
+      <div class="content" @click="toDetail">
+        <div class="product-img" >
           <img v-if="bundle.icon2" class="img" :src="bundle.icon2" alt="">
           <div v-else class="center-con">
             <img class="img" src="/static/img/ic_shop_title_06.png" alt="">
           </div>
         </div>
         <div class="product-info">
-          <div @click="toDetail">
+          <div>
             <div class="title">{{detailData ? detailData.bundleName : ''}}</div>
             <div class="desc">{{bundle.tag ? bundle.tag : ''}}</div>
           </div>
-          <!-- <div>
-            <div class="price">
-              ¥{{bundle.price ? bundle.price : 0}}
-            </div>
-          </div> -->
         </div>
       </div>
       <div class="package-info" v-if="orderBundle.orderFlag === 'PAED'">
-        <van-cell-group>
+        <div v-for="item in customerBundleItemList" :key="item.id" :id='item.id' @click="subscribeMessage" class="info-item">
+          <div class="item-itemName">
+            <div>{{item.itemName}}</div>
+            <div class="package-qr">
+              <span style="color: #999;">剩余{{item.remainTimes}}次</span>
+              <van-icon class="icon-qr" size="1.5em" name="qr" color="#ff5500" />
+            </div>
+          </div>
+          <div style="color: #999;font-size: 12px;">{{(item.expiryDateStr ? item.expiryDateStr  :'') + ( item.expiryTimesStr ?  '('+item.expiryTimesStr+')' :'')}}</div>
+        </div>
+        <!-- <van-cell-group>
           <!-- <form @submit="formSubmit" class="formId"  report-submit="true">
             <button form-type="submit"></button>
           </form> -->
-          <van-cell :title="item.itemName" :label="item.expiryDateStr" v-for="item in customerBundleItemList" :key="item.id" :id='item.id' is-link @click="subscribeMessage">
+          <!--<van-cell :title="item.itemName" v-for="item in customerBundleItemList" :key="item.id" :id='item.id' is-link @click="subscribeMessage">
             <div class="package-qr">
               <span>剩余{{item.remainTimes}}次</span>
               <van-icon class="icon-qr" size="1.5em" name="qr" color="#ff5500" />
             </div>
+            <div class="package-expiryDate">{{(item.expiryDateStr ? item.expiryDateStr :'')+(item.expiryTimesStr? (item.expiryTimesStr):'')}}</div>
           </van-cell>
-        </van-cell-group>
+        </van-cell-group> -->
         <div class="package-info-desc">
           请将对应服务的二维码出示给门店进行消费
         </div>
@@ -112,7 +118,9 @@ export default {
       orderBundle: {},
       customerBundleItemList: [],
       formId:null,
-      detailData: null
+      detailData: null,
+      bundleType:'',  // 0: 套餐 1:非套餐
+	  itemBundleId:'' // 套餐id
     };
   },
   computed: {
@@ -139,11 +147,15 @@ export default {
     }
   },
   methods: {
-    // formSubmit (e){
-    //   console.log(e)
-    //   this.formId = e.target.formId
-    //   this.showQRcode(e.target.id)
-    // },
+    // 套餐查看详情
+    toDetail(){
+      console.log(this.itemBundleId,'this.itemBundleId','----------套餐id')
+      if(this.bundleType==0){
+        wx.navigateTo({
+          url: `/pages/bundleDetail/main?id=${this.itemBundleId}`
+        })
+      }
+    },
     // 核销订阅消息
     subscribeMessage(e){
       console.log(e)
@@ -209,11 +221,14 @@ export default {
           _this.bundle = res.data.bundle || {icon2: null, name: '', tag: null, price: 0};
           _this.coupon = res.data.coupon;
           _this.orderBundle = res.data.orderBundle;
+          _this.bundleType=res.data.freeChoiceFlag
+		  _this.itemBundleId=res.data.bundleId
           res.data.customerBundleItemList.map(item => {
             if((item.expiryDate && (item.expiryDate.substr(0,10) != '2099-01-01')) && item.cycleFlag== 0){
               item.expiryDateStr = '过期时间:' + item.expiryDate
-            }else{
-              item.expiryDateStr = '过期时间:' + '--'
+            }
+            if(item.expiryTimes && item.expiryTimes!=0){
+              item.expiryTimesStr='已过期'+item.expiryTimes+'次'
             }
             // if(item.expiryDate && (item.expiryDate.substr(0,10) != '2099-01-01') && item.cycleFlag== 0){
             //   item.expiryDateStr = '过期时间:' + item.expiryDate
@@ -420,24 +435,35 @@ export default {
   }
 
   .package-info {
-    .package-qr {
-      display: flex;
-      align-items: flex-start;
-      justify-content: flex-end;
+    .info-item{
+      padding :15rpx 0;
+      border-bottom :1px solid #eee
+      .item-itemName{
+        display :flex;
+        justify-content :space-between;
+        align-items :center
+        .package-qr {
+          display: flex;
+          align-items: flex-start;
+          justify-content: flex-end;
 
-      .icon-qr {
-        margin: 0 20rpx;
-        position: relative;
-        top: 1px;
+          .icon-qr {
+            margin: 0 20rpx;
+            position: relative;
+            top: 1px;
+          }
+        }
       }
     }
-
     .package-info-desc {
       font-size: 25rpx;
       background-color: #fff;
       text-align: center;
       padding: 25rpx 0;
     }
+    .package-expiryDate{
+      text-align :start
+    }
   }
 
   .order-infos {

+ 1 - 1
src/pages/store/index.vue

@@ -622,4 +622,4 @@ export default {
     flex: 1;
   }
 }
-</style>
+</style>