MrShi
12 小时以前 a690229b69cfa0aba5a0352772c2bdc1cf9fdab0
mini-program/pages/distributor/distributor.vue
@@ -13,7 +13,7 @@
         <view class="user">
            <view class="user-left">
               <view class="user-left-image">
                  <image :src="shop.imgurl||'/static/logo.png'" mode="widthFix"></image>
                  <image :src="shop.imgurl||'/static/icon/default3.png'" mode="widthFix"></image>
               </view>
               <view class="user-left-info">
                  <view class="user-left-info-title">{{shop.name||''}}</view>
@@ -23,11 +23,11 @@
                  </view>
               </view>
            </view>
            <view class="user-qrcode">
            <view class="user-qrcode" @click="openQrcode()">
               <image src="/static/icon/ic_QRcode@2x.png" mode="widthFix"></image>
            </view>
         </view>
         <view class="data" :style="{ backgroundImage: 'url(' + backgroundImage + ')' }">
         <view class="data" :style="{ 'background-image': 'url(' + backgroundImage + ')' }">
            <view class="data-a">
               <view class="data-a-left">
                  <view :class="'data-a-left-item '+(active ==0?'active':'')" @click="changeActive(0)">今日</view>
@@ -43,9 +43,11 @@
            <view class="data-c">
               <view class="data-c-item">
                  <view class="data-c-item-top">
                     <text>销售额(元)</text>
                     <image :src="showMoney?'/static/icon/ic_visible@2x.png':'/static/icon/ic_invisible@2x.png'" @click="showMoney=!showMoney" mode="widthFix"></image>
                  </view>
                     <text  style="margin-right: 10rpx; ">销售额(元)</text>
                     <u-icon v-if="showMoney" name="eye" color="#ffffff" size="18"  @click="showMoney = !showMoney"></u-icon>
                     <u-icon v-if="!showMoney" name="eye-off" color="#eeeeee" size="18"  @click="showMoney = !showMoney"></u-icon>
<!--                      <image :src="showMoney?'/static/icon/ic_visible@2x.png':'/static/icon/ic_invisible@2x.png'" @click="showMoney=!showMoney" mode="widthFix"></image>
 -->                  </view>
                  <view class="data-c-item-bottom">
                     <text v-if="showMoney">{{(countData.saleTotalNum||0).toFixed(0)}}</text>
                     <text  v-if="showMoney">{{countData.saleTotalFloat || '.00'}}</text>
@@ -74,44 +76,44 @@
            </view>
         </view>
         <view class="func">
            <view class="func-item" style="margin-bottom: 30rpx;">
            <view class="func-item" style="margin-bottom: 30rpx;" @click="jumpGoodsList">
               <image src="/static/icon/ic_shangpingl@2x.png" mode="widthFix"></image>
               <text>商品管理</text>
            </view>
            <view class="func-item" style="margin-bottom: 30rpx;">
            <view class="func-item" style="margin-bottom: 30rpx;" @click="jumpOrderList">
               <image src="/static/icon/ic_dingdanguanli@2x.png" mode="widthFix"></image>
               <text>订单管理</text>
            </view>
            <view class="func-item" style="margin-bottom: 30rpx;">
            <view class="func-item" style="margin-bottom: 30rpx;" @click="jumpAccount">
               <image src="/static/icon/ic_xunizhanghu@2x.png" mode="widthFix"></image>
               <text>虚拟账号</text>
            </view>
            <view class="func-item" style="margin-bottom: 30rpx;">
            <view class="func-item" style="margin-bottom: 30rpx;" @click="jumpWriteoff">
               <image src="/static/icon/ic_zitihexiao@2x.png" mode="widthFix"></image>
               <text>自提核销</text>
            </view>
            <view class="func-item">
            <view class="func-item" @click="jumpZizhi">
               <image src="/static/icon/ic_wodezizhi@2x.png" mode="widthFix"></image>
               <text>我的资质</text>
            </view>
            <view class="func-item">
            <view class="func-item" @click="jumpMemberList">
               <image src="/static/icon/ic_wodehuiyuan@2x.png" mode="widthFix"></image>
               <text>我的会员</text>
            </view>
            <view class="func-item">
            <view class="func-item" @click="openHaibao">
               <image src="/static/icon/ic_zhuanshuhaibao@2x.png" mode="widthFix"></image>
               <text>专属海报</text>
            </view>
            <view style="width: 25%; height: 0;"></view>
            <view style="width: 25%; height: 0;"></view>
         </view>
         <view class="title"  v-if="!show">待处理订单 ({{total}})</view>
         <view class="list"  v-if="!show">
         <view class="title"  v-if="!show&&!showQrcode &&!showHaibao">待处理订单 ({{total}})</view>
         <view class="list"  v-if="!show&&!showQrcode &&!showHaibao">
            <view class="list-item" v-for="(item, index) in dataList" :key="index">
               <view class="a">
               <view class="a"   @click="jumpOrderDetail(item.id)">
                  <view class="a-left">
                     <view class="a-left-tips">{{item.receiveType==1?'自提':'快递配送'}}</view>
                     <text>订单号:{{item.id}}</text>
                     <view :class="'a-left-tips '+(item.receiveType==1?'shop-top-tips-a':'shop-top-tips-b')">{{item.receiveType==1?'自提':'配送'}}</view>
                     <text>订单号:{{item.code}}</text>
                  </view>
                  <text v-if="item.status ==0" class="a-right">待支付</text>
                  <text  v-if="item.status ==1" class="a-right">{{item.receiveType==1?'待自提':'待发货'}}</text>
@@ -120,17 +122,7 @@
                  <text  v-if="item.status ==4"class="a-right">已取消</text>
                  <text  v-if="item.status ==6" class="a-right">已退款</text>
               </view>
               <view class="b">
                  <view class="b-item" v-for="(item1, index1) in (item.goodsorderDetailList||[])">
                     <view class="b-item-image">
                        <image :src="item1.imgurl||'/static/logo.png'" mode="widthFix"></image>
                     </view>
                     <view class="b-item-title">{{item1.name||''}}</view>
                     <view class="b-item-jia">
                        <text>¥{{(item1.price||0).toFixed(2)}}</text>
                        <text>x{{item1.goodsNum||0}}</text>
                     </view>
                  </view>
               <view class="b"   @click="jumpOrderDetail(item.id)">
                  <view class="b-item" v-for="(item1, index1) in (item.goodsorderDetailList||[])">
                     <view class="b-item-image">
                        <image :src="item1.imgurl||'/static/logo.png'" mode="widthFix"></image>
@@ -152,14 +144,14 @@
                  </view>
                  <view class="c-btns">
                     <view class="c-btns-item blue" @click="contactPhone(item)">联系客户</view>
                     <view class="c-btns-item bg">自提核销</view>
                     <view class="c-btns-item bg" v-if="item.status == 1 && item.receiveType ==1" @click="hexiaoOrder(item)">自提核销</view>
                  </view>
               </view>
               <view class="d" v-if="item.memberInfo">
               <view class="d" v-if="item.memberInfo"   @click="jumpOrderDetail(item.id)">
                  订单备注:{{item.memberInfo||''}}
               </view>
            </view>
            <view v-if="!hasNext" class="nomore">已加载全部</view>
            <view v-if="!hasNext" class="nomore">{{total>0?'已加载全部数据':'暂无待处理订单'}}</view>
         </view>
      </view>
      <!-- 确认退出登陆 -->
@@ -192,13 +184,41 @@
            </view> -->
             <view class="phone-item" >
                <view>
                  <image src="/static/icon/ic_call@2x.png" mode="widthFix" @click="contactPhoneDo()"></image>
                  <image src="/static/icon/ic_call@2x.png" mode="widthFix" @click="contactPhoneDo()" ></image>
                  <text>{{linkItem.linkname}} </text> 
                  <text style="margin-left: 10px;"> {{linkItem.linkphone}}</text> 
               </view> 
             </view>  
             <view style="width: 100%; height: 30rpx;"></view>
            <!-- <view class="phone-botton"  @click="contactPhone()" >关闭</view> -->
         </view>
      </u-popup>
      <u-popup :show="showQrcode" round="15" :safeAreaInsetBottom="false" mode="center" @close="openQrcode()" >
         <view class="qrcode" >
            <image :src="shop.programCode||''" mode="widthFix"></image>
         </view>
      </u-popup>
      <u-popup :show="showHaibao"border-radius="15" round="15" :safeAreaInsetBottom="false" mode="center" @close="openHaibao()" >
         <view class="haibao" >
            <view class="haibao-img" @click="openHaibao()" >
               <image :src="shop.posterImgCode||''" mode="widthFix"></image>
            </view>
            <view class="haibao-btn">
               <view class="haibao-btn-item" @click="shareDo(0) ">
                  <image  src="/static/icon/share_ic_wechat@2x.png" mode="widthFix"></image>
               <!--    <button open-type="share" plain="true" >小程序分享</button> -->
                  <text>小程序分享</text>
               </view>
               <view class="haibao-btn-item" style="color: red;" @click="shareDo(1) ">
                  <image  src="/static/icon/share_ic_friends@2x.png" mode="widthFix"></image>
                  <!-- <button open-type="share" plain="true" >分享到朋友圈</button> -->
                  <text>分享到朋友圈</text>
               </view>
               <view class="haibao-btn-item" style="color: red;" @click="shareDo(2)">
                  <image  src="/static/icon/share_ic_download@2x.png" mode="widthFix"></image>
                  <text>下载海报</text>
               </view>
            </view>
         </view>
      </u-popup>
   </view>
@@ -213,6 +233,8 @@
      data() {
         return { 
            show:false,
            showHaibao:false,
            showQrcode:false,
            active:0,
            loading:false,
            showMoney:false,
@@ -224,7 +246,7 @@
            shop:{}, 
            linkItem:{},
            countData:{},
            backgroundImage: require('@/static/images/bg_card@2x.png')
            backgroundImage:null
         };
      },
      onShow() {
@@ -232,14 +254,129 @@
          this.checkShopLogin()
          this.active=0
          this.shop = this.shopInfo || {}
          this.getCountData()
          this.getCountData(0)
          this.total=0
          this.hasNext=true
          this.currentPage = 0
          this.getOrderList()
          // this.getBase64Img('/static/images/bg_card@2x.png')
          console.log(require('@/static/images/bg_card@2x.png'))
      },
      onShareAppMessage() {
        return {
          title:'鼎元农机微商城',
          path: '/pages/index/index',
          imageUrl: this.shop.posterImgCode
        }
      },
      onShareTimeline() {
        return {
          title:'鼎元农机微商城',
          query: `ref=${Date.now()}`,
          imageUrl: this.shop.posterImgCode
        }
      },
      onReachBottom(){ 
         this.getOrderList( );
      },
      onLoad() {
          var that =this
          this.getBase64Img('/static/images/bg_card@2x.png')
         uni.$on('updateOrder',function(data){
            if(data.info!=null && data.info.orderId!=null && data.info.orderStatus ==3){
                if(data.info.orderStatus ==3){
                   that.getCountData()
                }
                that.total=0
                that.hasNext=true
                that.currentPage = 0
                that.getOrderList()
             }
          })
      },
      methods:{ 
         getBase64Img(path){
            var that =this
            uni.getFileSystemManager().readFile({
              filePath: path, // 替换为你的图片路径
              encoding: 'base64',
              success: (res) => {
                const base64Data = 'data:image/png;base64,' + res.data; // 拼接前缀,用于页面显示
                console.log('图片Base64编码:', base64Data);
                // 可以将 base64Data 绑定到 data 中,用于页面展示
                that.backgroundImage = base64Data;
              },
              fail: (err) => {
                console.error('读取图片失败:', err);
              }
            });
         },
         shareDo(flag){
            if(flag ==0){
               if(!this.shop.posterImgCode){
                  return
               }
               wx.downloadFile({
                 url: this.shop.posterImgCode,
                 success: (res) => {
                   wx.showShareImageMenu({
                     path: res.tempFilePath
                   })
                 }
               })
            }else if(flag ==1){
               if(!this.shop.posterImgCode){
                  return
               }
               wx.downloadFile({
                 url: this.shop.posterImgCode,
                 success: (res) => {
                   wx.showShareImageMenu({
                     path: res.tempFilePath
                   })
                 }
               })
            }else if(flag ==2){
               if(!this.shop.posterImgCode){
                  return
               }
               this.downloadAndSaveToAlbum(this.shop.posterImgCode)
            }
         },
         hexiaoOrder(item){
            uni.navigateTo({
               url:'/pagesA/pages/write-off-a/write-off-a?id='+item.id
            })
         },
         openQrcode(){
            if(this.shop.programCode){
               this.showQrcode = !this.showQrcode
            }
         },
         openHaibao(){
            if(!this.shop.posterImgCode){
               return
            }
            wx.downloadFile({
              url: this.shop.posterImgCode,
              success: (res) => {
                if (res.statusCode === 200) {
                  wx.showShareImageMenu({
                    path: res.tempFilePath,
                    needShowEntrance:false
                  })
                } else {
                  reject(new Error('海报下载失败'));
                }
              },
              fail: (err) => {
                reject(new Error('海报下载失败'));
              }
            })
            /* if(this.shop.programCode){
               this.showHaibao = !this.showHaibao
            } */
         },
         contactPhone(item){
             this.showPhone = !this.showPhone
             this.linkItem = item ||{}
@@ -328,16 +465,116 @@
               that.jumpShopLogin()
            } 
         },
         jumpOrderDetail(id){
            uni.navigateTo({
               url: '/pagesA/pages/order-details/order-details?userType=1&id='+id
            })
         },
         jumpShopLogin() {
            uni.navigateTo({
               url: '/pages/login/login'
            })
         },
         jumpZizhi() {
            uni.navigateTo({
               url: '/pagesA/pages/my-qualifications/my-qualifications'
            })
         },
         jumpGoodsList() {
            uni.navigateTo({
               url: '/pagesA/pages/product-management/product-management'
            })
         },
         jumpOrderList() {
            uni.navigateTo({
               url: '/pagesA/pages/order/order?userType=1'
            })
         },
         jumpAccount() {
            uni.navigateTo({
               url: '/pagesA/pages/virtual-account/virtual-account'
            })
         },
         jumpWriteoff() {
            uni.navigateTo({
               url: '/pagesA/pages/write-off/write-off'
            })
         },
         jumpMemberList() {
            uni.navigateTo({
               url: '/pagesA/pages/my-membership/my-membership'
            })
         },
         jumpShopIntegral() {
            uni.navigateTo({
               url: '/pagesA/pages/shop_points/shop_points'
            })
         }
         } ,
         async downloadAndSaveToAlbum(url) {
           try {
            // 1. 下载图片
            const { tempFilePath } = await new Promise((resolve, reject) => {
              uni.downloadFile({
               url: url,
               success: (res) => {
                 if (res.statusCode === 200) {
                  resolve(res);
                 } else {
                  reject(new Error('下载失败'));
                 }
               },
               fail: (err) => {
                 reject(err);
               }
              });
            });
            // 2. 获取相册权限
            await new Promise((resolve, reject) => {
              uni.getSetting({
               success: (res) => {
                 if (!res.authSetting['scope.writePhotosAlbum']) {
                  uni.authorize({
                    scope: 'scope.writePhotosAlbum',
                    success: resolve,
                    fail: () => {
                     uni.showToast({
                       title: '请开启相册权限',
                       icon: 'none'
                     });
                     reject(new Error('未授权写入相册'));
                    }
                  });
                 } else {
                  resolve();
                 }
               }
              });
            });
            // 3. 保存图片到相册
            await new Promise((resolve, reject) => {
              uni.saveImageToPhotosAlbum({
               filePath: tempFilePath,
               success: resolve,
               fail: (err) => {
                 reject(err);
               }
              });
            });
            uni.showToast({
              title: '保存成功'
            });
           } catch (err) {
            uni.showToast({
              title: '保存失败',
              icon: 'none'
            });
            console.error(err);
           }
         }
      }
   }
</script>
@@ -398,12 +635,6 @@
            width: 100%;
            margin-top: 30rpx;
            padding-bottom: 60rpx;
            .nomore{
               width: 100%;
               text-align: center;
               font-size: 24rpx;
               color: #666666;
            }
            .list-item {
               width: 100%;
               padding: 30rpx;
@@ -422,16 +653,24 @@
                  .a-left {
                     display: flex;
                     align-items: center;
                     justify-content: center;
                     .a-left-tips {
                        padding: 0 6rpx;
                        height: 40rpx;
                        line-height: 40rpx;
                        background: #00B775;
                        border-radius: 8rpx;
                        font-weight: 400;
                        font-size: 22rpx;
                        color: #FFFFFF;
                        margin-right: 16rpx;
                     }
                     .shop-top-tips-a {
                        background: #00B775;
                        border: 1rpx solid #00B775;
                     }
                     .shop-top-tips-b {
                        background: #004096;
                        border: 1rpx solid #004096;
                     }
                     text {
                        font-weight: 400;
@@ -706,6 +945,7 @@
                  .data-c-item-top {
                     display: flex;
                     align-items: center;
                     text {
                        font-weight: 400;
                        font-size: 24rpx;
@@ -768,68 +1008,68 @@
            }
         }
      }
      .phone {
   }
   .qrcode{
      text-align: center;
      width: calc(100vw - 148rpx);
      height: calc(100vw - 148rpx);
      padding: 20px;
      image{
         width: calc(100vw - 188rpx);
         height: calc(100vw - 188rpx);
      }
   }
   .haibao{
      border-radius: 24rpx;
      background-color: #f2f2f2;
      text-align: center;
      .haibao-img{
         padding: 54rpx 44rpx 44rpx 44rpx;
         text-align: center;
         width: calc(100vw - 148rpx);
         image{
            border-radius: 24rpx;
            width: calc(100vw - 188rpx);
         }
      }
      .haibao-btn{
         width: 100%;
         padding-top: 40rpx;
         box-sizing: border-box;
         .phone-botton {
            width: 100%;
            height: 88rpx;
            line-height: 88rpx;
            text-align: center;
            font-weight: 500;
            font-size: 32rpx;
            color: #FFFFFF;
            background: #00BC12;
            border-radius: 44rpx;
            margin-top: 60rpx;
         }
         .phone-head {
            width: 100%;
            text-align: center;
            justify-content: space-between;
            margin-bottom: 40rpx;
            text {
               font-weight: 800;
               font-size: 32rpx;
               color: #222222;
            }
         }
         .phone-item {
            width: 100%;
            text-align: center;
         height: 264rpx;
         background: #FFFFFF;
         border-radius: 24rpx;
         display: flex;
         align-items:center;
         justify-content: space-between;
         .haibao-btn-item{
            flex:1;
            display: flex;
            justify-content: center;
            flex-direction: column;
            // border-bottom: 1rpx solid #eeeeee;
            line-height: 78rpx;
            button{
               border: 1rpx white solid;
               display: inline;
               width: 300rpx;
               font-weight: 500;
               font-size: 32rpx;
               line-height: 32rpx;
               color: #222222;
            }
            align-items:center;
            justify-content: space-between;
            image{
               width: 28rpx;
               height: 28rpx;
               margin-right: 30rpx;
               width: 88rpx;
               height: 88rpx;
            }
            .line{
               width: 100%;
               height: 1rpx;
               background-color: #f2f2f2
            button{
               border:none;
               font-weight: 400;
               font-size: 26rpx;
               margin-top:12rpx;
               color: #333333;
               line-height: 36rpx;
               text-align: center;
               font-style: normal;
            }
            text {
               font-weight: 500;
               font-size: 28rpx;
               line-height: 28rpx;
               color: #222222;
            text{
               font-weight: 400;
               font-size: 26rpx;
               margin-top:12rpx;
               color: #333333;
               line-height: 36rpx;
               text-align: center;
               font-style: normal;
            }
         }
      }
   }
</style>
</style>