Browse Source

Merge branch 'master' into dev

shish 1 year ago
parent
commit
4635832cda

+ 1 - 1
ghsApp/src/admin/home/login.vue

@@ -62,7 +62,7 @@ import { mapActions } from "vuex";
 import { getShopInfo} from "@/utils/auth";
 import {appLogin} from '@/api/common'
 import { getDictionaries,postWxCode } from '@/api/mini'
-import { replaceClientId } from '@/api/admin'
+//import { replaceClientId } from '@/api/admin'
 import { phoneLogin,wxMobileLogin } from "@/api/auth";
 export default {
 	name: "login",

+ 5 - 2
ghsApp/src/admin/home/me.vue

@@ -306,8 +306,6 @@ export default {
     // #ifdef MP-WEIXIN
     this.showDeadline = true
     // #endif
-    const token = uni.getStorageSync('token')
-    this.headers.token = token
   },
   methods: {
 		closeGzh(){
@@ -509,6 +507,11 @@ export default {
       this.$refs.avatarPopup.open('top')
     },
     triggerAvatarUpload() {
+      // 在触发上传前确保 headers 包含最新的 token
+      const token = uni.getStorageSync('token')
+      if (token) {
+        this.headers.token = token
+      }
       // 直接通过 ref 触发上传
       this.$refs.avatarUploader && this.$refs.avatarUploader.chooseFile()
     },

+ 2 - 2
ghsApp/src/admin/home/workbench.vue

@@ -220,11 +220,11 @@
 
 <script>
 import { mapGetters,mapActions } from "vuex";
-import { getShopInfo } from "@/utils/auth";
+//import { getShopInfo } from "@/utils/auth";
 import { consoleIndex } from "@/api/workbench";
 import { closeBook } from "@/api/book";
 import productMins from "@/mixins/product";
-import { allProduct } from '@/api/product'
+//import { allProduct } from '@/api/product'
 import {currentShop} from "@/api/shop";
 import { getStat,getStrokeCount,getYesterdayIncome } from '@/api/console'
 import autoUpdateMixins from "@/mixins/autoUpdate";

+ 1 - 1
ghsApp/src/api/common/index.js

@@ -47,7 +47,7 @@ export const initSocket = async clientId => {
 };
 
 //app登陆
-export const appLogin = data => https.get("/auth/app-login", data);
+export const appLogin = data => https.post("/auth/app-login", data);
 
 //app重新获取登陆信息
 export const hasTokenAutoLogin = data => https.get("/admin/has-token-auto-login", data);

+ 1 - 1
ghsApp/src/api/mini/index.js

@@ -10,7 +10,7 @@ export const postWxCode = data => {
 	* 点击授权获取字典
 	*/
 export const getDictionaries = data => {
-	return https.get('/console/init', data)
+	return https.post('/console/init', data)
 }
 /** *
  * 点击授权获取用户信息 mini

+ 1 - 1
ghsPad/src/api/mini/index.js

@@ -10,7 +10,7 @@ export const postWxCode = data => {
 	* 点击授权获取字典
 	*/
 export const getDictionaries = data => {
-	return https.get('/console/init', data)
+	return https.post('/console/init', data)
 }
 /** *
  * 点击授权获取用户信息 mini

+ 10 - 4
hdApp/src/admin/express/create.vue

@@ -123,6 +123,12 @@ export default {
       this.isNew = options.isNew
       //this.getOrderDetail()
     }
+
+    //返回上一页时刷新
+    let pages = getCurrentPages();
+    let prevPage = pages[ pages.length - 2 ];
+    prevPage.$vm.refreshPage = 1
+
   },
   onShow() {
     if(this.orderId){
@@ -181,7 +187,7 @@ export default {
     async queryDeliveryFee() {
       // 验证必填字段
       if (!this.expressForm.weight || Number(this.expressForm.weight) <= 0) {
-        this.$msg('请输入正确的重量')
+        this.$msg('请输入重量')
         return
       }
 
@@ -236,7 +242,7 @@ export default {
     async submitExpress() {
       // 验证必填字段
       if (!this.expressForm.weight || Number(this.expressForm.weight) <= 0) {
-        this.$msg('请输入正确的重量')
+        this.$msg('请输入重量')
         return
       }
 
@@ -260,7 +266,7 @@ export default {
         return
       }
 
-      this.$util.confirmModal({content: '确认提交配送订单?'}, async () => {
+      this.$util.confirmModal({content: '确认呼叫跑腿?'}, async () => {
         this.isSubmitting = true
         try {
           const data = {
@@ -279,7 +285,7 @@ export default {
 
           const res = await createExpressOrder(data)
           if (res.code === 1) {
-            this.$msg('配送订单创建成功')
+            this.$msg('提交成功')
             // 返回订单列表页面
             setTimeout(() => {
               uni.navigateBack()

+ 56 - 2
hdApp/src/admin/goods/list.vue

@@ -38,7 +38,15 @@
                       <view class="goods-name" style="font-size:29upx;font-weight:bold;	overflow: hidden;text-overflow: ellipsis;white-space: nowrap;width:350upx;">{{ goodsItem.name||'' }}</view>
                     </view>
                     <view class="operate-wrap" style="margin-bottom:15upx;">
-                      <view class="goods-price" style="font-size:26upx;" v-if="goodsItem.priceType == 1">¥{{ goodsItem.price?parseFloat(goodsItem.price):0 }}</view>
+                      <view v-if="goodsItem.priceType == 1">
+                        <!-- 当涨价开关开启时,显示涨价后价格和原价 -->
+                        <view v-if="riseSwitch" class="price-container">
+                          <text class="goods-price" style="font-size:26upx;">¥{{ risePrice(goodsItem).toFixed(2) }}</text>
+                          <text class="original-price" style="font-size:22upx;">¥{{ goodsItem.price?parseFloat(goodsItem.price).toFixed(2):0 }}</text>
+                        </view>
+                        <!-- 当涨价开关关闭时,显示原价 -->
+                        <view v-else class="goods-price" style="font-size:26upx;">¥{{ goodsItem.price?parseFloat(goodsItem.price):0 }}</view>
+                      </view>
                       <view class="goods-price" style="font-size:26upx;" v-else>---</view>
                     </view>
                     <view class="operate-wrap">
@@ -130,7 +138,7 @@
 <script>
 import AppSearchModule from "@/components/module/app-search"
 import AppWrapperEmpty from "@/components/app-wrapper-empty"
-import {categoryListInfo,getCategoryToGoods,print} from "@/api/goods"
+import {categoryListInfo,getCategoryToGoods,print,getRise} from "@/api/goods"
 import { list } from "@/mixins"
 export default {
   name: "list",
@@ -147,6 +155,8 @@ export default {
       catId: "",
       flowerNum:0,
       searchText:'',
+      riseSwitch: false, // 价格上涨开关
+      riseData: {}, // 价格上涨配置
       lookStock:0, // 1:有库存 2:无库存
       lookPrice:0, // 1:有价格 2:无价格
       // 新增筛选相关数据
@@ -196,6 +206,7 @@ export default {
   methods: {
     init(){
       this.getCategoryData()
+      this.getRiseData()
     },
     
     // 新的筛选相关方法
@@ -334,6 +345,35 @@ export default {
         this.resetList();
         this.getGoodsList();
       }
+    },
+    getRiseData() {
+      getRise().then(res => {
+        this.riseData = res.data;
+        //console.log('riseData: ' , this.riseData)
+        this.riseSwitch = this.riseData.riseSwitch == '1' ? true : false;
+      })
+    },
+    
+    // 计算涨价后的价格
+    risePrice(goodsItem) {
+      if (!goodsItem.price || !this.riseData.riseAmount) {
+        return parseFloat(goodsItem.price) || 0;
+      }
+      
+      const originalPrice = parseFloat(goodsItem.price);
+      let newPrice = 0;
+      
+      if (this.riseData.riseType == '0') {
+        // 按比率上涨
+        newPrice = originalPrice * (1 + this.riseData.riseAmount / 100);
+      } else if (this.riseData.riseType == '1') {
+        // 按金额数上涨
+        newPrice = originalPrice + parseFloat(this.riseData.riseAmount);
+      } else {
+        newPrice = originalPrice;
+      }
+      
+      return newPrice;
     }
   }
 };
@@ -464,6 +504,20 @@ page {
           color: #ff2842;
           font-weight: bold;
         }
+        
+        // 价格容器样式
+        .price-container {
+          display: flex;
+          align-items: center;
+          gap: 15upx;
+        }
+        
+        // 原价格划线样式
+        .original-price {
+          color: #999999;
+          text-decoration: line-through;
+          margin-left: 10upx;
+        }
       }
     }
   }

+ 1 - 1
hdApp/src/admin/home/login.vue

@@ -70,7 +70,7 @@ import { mapActions } from "vuex";
 import { getShopInfo} from "@/utils/auth";
 import {appLogin} from '@/api/common'
 import { getDictionaries,postWxCode } from '@/api/mini'
-import { replaceClientId } from '@/api/admin'
+//import { replaceClientId } from '@/api/admin'
 import { phoneLogin,wxMobileLogin } from "@/api/auth";
 import { ghsInfo } from "@/api/ghs/index";
 export default {

+ 4 - 4
hdApp/src/admin/home/member.vue

@@ -49,7 +49,7 @@
                         <text v-if="item.overTimeUnExpend && item.overTimeUnExpend == 365" style="margin-left:20upx;color:green;">超1年未下单</text>
                       </block>
                       <block v-else>
-                        <text style="font-size:25upx;margin-left:20upx;color:#3385FF;font-weight:bold;">待审核</text>
+                        <text style="font-size:26upx;margin-left:20upx;color:#3385FF;font-weight:bold;">待审核</text>
                       </block>
 
                     </view>
@@ -262,7 +262,7 @@ export default {
 
   .user-name {
     flex: 1;
-    font-size: 32upx;
+    font-size: 34upx;
     color: #333;
     overflow: hidden;
     text-overflow: ellipsis;
@@ -299,7 +299,7 @@ export default {
   .user-meta {
     display: flex;
     align-items: center;
-    font-size: 25upx;
+    font-size: 26upx;
     color: #9397a4;
     width:495upx;
     margin-top: 8upx;
@@ -309,7 +309,7 @@ export default {
     overflow: hidden;
     text-overflow: ellipsis;
     white-space: nowrap;
-    font-size:25upx;
+    font-size:26upx;
     width:495upx;
   }
 

+ 68 - 52
hdApp/src/admin/home/order.vue

@@ -1,31 +1,34 @@
 <template>
   <view class="app-main app-content">
     <view style="position:fixed;top:100upx;background-color:white;z-index:999999;height:auto;font-size:33upx;color:#333333;width:100%;">
-    <view style="width:80%;border:1upx solid #CCCCCC;margin:0 auto;padding:10upx 0 0 20upx;overflow: scroll;" v-if="showSearch">
-      <block v-if="!$util.isEmpty(searchList)">
-        <block v-for="(item, index) in searchList" :key="index">
-          <view style="margin-bottom:30upx;" @click="getCustom(item)">
-            <view style="font-size:37upx;margin-bottom:10upx;">{{item.name}}</view>
-            <view style="font-size:29upx;">
-              {{item.visitTime?item.visitTime.substr(5,11):''}}
-                <text v-if="item.overTimeUnExpend && item.overTimeUnExpend == 10000" style="margin-left:20upx;color:green;">没有下过单</text>
-                <text v-if="item.overTimeUnExpend && item.overTimeUnExpend == 7" style="margin-left:20upx;color:green;">超1周未下单</text>
-                <text v-if="item.overTimeUnExpend && item.overTimeUnExpend == 30" style="margin-left:20upx;color:green;">超1个月未下单</text>
-                <text v-if="item.overTimeUnExpend && item.overTimeUnExpend == 180" style="margin-left:20upx;color:green;">超半年未下单</text>
-                <text v-if="item.overTimeUnExpend && item.overTimeUnExpend == 365" style="margin-left:20upx;color:green;">超1年未下单</text>
+      <view style="width:80%;border:1upx solid #CCCCCC;margin:0 auto;padding:10upx 0 0 20upx;overflow: scroll;" v-if="showSearch">
+        <block v-if="!$util.isEmpty(searchList)">
+          <block v-for="(item, index) in searchList" :key="index">
+            <view style="margin-bottom:30upx;" @click="getCustom(item)">
+              <view style="font-size:37upx;margin-bottom:10upx;">{{item.name}}</view>
+              <view style="font-size:29upx;color:#999999;">
+                {{item.visitTime?item.visitTime.substr(5,11):''}}
+                  <text v-if="item.overTimeUnExpend && item.overTimeUnExpend == 10000" style="margin-left:20upx;color:green;">没有下过单</text>
+                  <text v-if="item.overTimeUnExpend && item.overTimeUnExpend == 7" style="margin-left:20upx;color:green;">超1周未下单</text>
+                  <text v-if="item.overTimeUnExpend && item.overTimeUnExpend == 30" style="margin-left:20upx;color:green;">超1个月未下单</text>
+                  <text v-if="item.overTimeUnExpend && item.overTimeUnExpend == 180" style="margin-left:20upx;color:green;">超半年未下单</text>
+                  <text v-if="item.overTimeUnExpend && item.overTimeUnExpend == 365" style="margin-left:20upx;color:green;">超1年未下单</text>
+              </view>
             </view>
-          </view>
+          </block>
         </block>
-      </block>
-    </view>
+      </view>
     </view>
     <view class="input-wrap_box">
       <view class="select-dn_bx">
         <DateSelect class="bar" top="0" @selectDateFn="selectDateFn" defaultShowName='时间' />
       </view>
-      <view> <AppSearchModule placeholder="搜索客户" @input="searchFn"/> </view>
-      <button class="admin-button-com middle" @click="getScanOrder()" style="margin-left:15upx;">扫码</button>
-      <button class="admin-button-com middle" @click="selectStaffFn()" style="margin-left:15upx;margin-right:15upx;">员工</button>
+      <button class="admin-button-com middle" @click="changeSearchStyle()">{{searchStyle==0?'客户':'编号'}}</button>
+      <view class="search-container">
+        <AppSearchModule placeholder="填写" v-model="searchText" @input="searchFn"/>
+      </view>
+      <button class="admin-button-com middle" @click="getScanOrder()">扫码</button>
+      <button class="admin-button-com middle" @click="selectStaffFn()">员工</button>
       <button class="admin-button-com middle" @click="cancelFn()">清空</button>
     </view>
     <app-tabs :tabs="tabs" class="app-tabs" :isFixed="false" :top="50" :currentTab="tabIndex" :height="100" @change="change" itemWidth="20%" />
@@ -72,9 +75,9 @@
               </block>
               <block v-else>
                 <view class="admin-button-com middle" v-if="item.sendStatus == '0' && item.payStatus == 1" @click.stop="openExpressPage(item.id, true)">呼叫跑腿</view>
-                <view class="admin-button-com default" v-if="item.sendStatus == '1' && item.payStatus == 1" @click.stop="cancelExpress(item.id)" style="background-color: #ff6b6b;">取消跑腿</view>
+                <view class="admin-button-com default" v-if="item.sendStatus == '1' && item.payStatus == 1">已发跑腿</view>
                 <view class="admin-button-com middle" v-if="item.sendStatus == '3' && item.payStatus == 1" @click.stop="openExpressPage(item.id, false)">重叫跑腿</view>
-                <view class="admin-button-com middle" v-if="item.sendStatus == '2' && item.payStatus == 1" @click.stop="selectExpress(item.id)">跑腿完成</view>
+                <view class="admin-button-com default" v-if="item.sendStatus == '2' && item.payStatus == 1">跑腿完成</view>
               </block>
 
             </view>
@@ -131,16 +134,16 @@ export default {
       tabs: [ { name: "全部", value: 0 }, { name: "待付款", value: 0 }, { name: "待发货", value: 0 }, { name: "配送中", value: 0 }, { name: "已完成", value: 0 } ],
       staffList:[],
       shopAdminId:0,
-      searchText:'',
       refreshPage:0,
       showSearch:false,
       searchList:[],
-      showSearch:false,
       customId:0,
       searchTime:'',
       startTime:'',
       endTime:'',
-      repeat:-1
+      repeat:-1,
+      searchStyle:0,//0客户 1编号
+      searchText:''
     };
   },
   onPullDownRefresh () {
@@ -158,7 +161,6 @@ export default {
       uni.stopPullDownRefresh()
     }
   },
-  
   onShow () {
     let tabIndex = uni.getStorageSync("switchTabQuery") || null;
     if (tabIndex) {
@@ -194,19 +196,24 @@ export default {
     },
     searchFn(e) {
       let that = this
-      if(that.$util.isEmpty(e)){
-        that.showSearch = false
-        that.searchList = []     
+      if(this.searchStyle == 0){
+        if(that.$util.isEmpty(e)){
+          that.showSearch = false
+          that.searchList = []     
+        }else{
+          getList({ page:1,name:e,type:0}).then((res) => {
+              if (!that.$util.isEmpty(res.data) && !that.$util.isEmpty(res.data.list)){
+                that.showSearch = true
+                that.searchList = res.data.list
+              }else{
+                that.showSearch = false
+                that.searchList = []
+              }
+          })
+        }
       }else{
-        getList({ page:1,name:e,type:0}).then((res) => {
-            if (!that.$util.isEmpty(res.data) && !that.$util.isEmpty(res.data.list)){
-              that.showSearch = true
-              that.searchList = res.data.list
-            }else{
-              that.showSearch = false
-              that.searchList = []
-            }
-        })
+        this.resetList()
+        this.getOrderList()
       }
     },
     reduceOrderStock(item){
@@ -224,6 +231,14 @@ export default {
         })          
       })
     },
+    changeSearchStyle(){
+      this.searchStyle = this.searchStyle ==0 ? 1 : 0
+      this.showSearch = false
+      this.customId = 0
+      this.searchText=''
+      this.resetList()
+      this.getOrderList()
+    },
     getScanOrder(){
       this.repeat = this.repeat == -1 ? 1 : -1
       this.resetList()
@@ -269,7 +284,8 @@ export default {
         searchText:this.searchText,
         page: this.list.page,
         customId:this.customId,
-        repeat:this.repeat
+        repeat:this.repeat,
+        searchStyle:this.searchStyle
       }).then(res => {
         this.completes(res);
         if (this.$util.isEmpty(res.data)){
@@ -306,31 +322,19 @@ export default {
      */
     async cancelExpress(orderId) {
       this.$util.confirmModal({content: '确认取消?(若配送员接单1分钟后取消,扣2元违约金)'}, async () => {
-        try {
           const res = await cancelExpressOrder({orderId: orderId})
           if (res.code === 1) {
-            this.$msg('配送订单已取消')
-            // 刷新订单列表
+            this.$msg('取消成功')
             this.resetList()
             this.getOrderList()
-          } else {
-            this.$msg(res.msg || '取消配送订单失败')
           }
-        } catch (error) {
-          this.$msg('取消配送订单失败,请重试')
-          console.error('取消配送订单错误:', error)
-        }
       })
     },
-    
     /**
      * 查看配送成功详情
      */
     selectExpress(orderId) {
-      this.$util.pageTo({ 
-        url: '/admin/express/success', 
-        query: { orderId: orderId }
-      })
+      this.$util.pageTo({ url: '/admin/express/success', query: { orderId: orderId } })
     }
   }
 };
@@ -363,8 +367,20 @@ export default {
     display: flex;
     align-items: center;
     padding: 0 20upx;
-    & > view:nth-child(2) {
+    gap: 10upx;
+    
+    .select-dn_bx {
+      flex-shrink: 0;
+    }
+    
+    .search-container {
       flex: 1;
+      min-width: 0;
+    }
+    
+    button {
+      flex-shrink: 0;
+      white-space: nowrap;
     }
   }
   .list-wrap {

+ 15 - 13
hdApp/src/admin/member/detail.vue

@@ -16,10 +16,6 @@
               <span class="user-id">ID {{ data.id }}</span>
             </div>
           </div>
-          <div class="member-level-badge">
-            <text class="member-name">{{ data.memberName }}</text>
-            <text v-if="Number(data.discount)>0 && Number(data.discount)<1" class="discount-tag">{{ data.discount*100 }}折</text>
-          </div>
         </div>
       </div>
       <div class="user-bottom">
@@ -985,6 +981,8 @@ export default {
   background-repeat: no-repeat;
   padding-top: 30upx;
   padding-bottom: 30upx;
+  
+
 }
 // 公共
 .module-com {
@@ -1019,7 +1017,7 @@ export default {
           margin-bottom: 12upx;
           
           .user-name {
-            font-size: 32upx;
+            font-size: 36upx;
             font-weight: 600;
             color: #333;
           }
@@ -1037,7 +1035,7 @@ export default {
           gap: 8upx;
           
           .user-real-name, .user-id {
-            font-size: 26upx;
+            font-size: 30upx;
             color: #666;
             line-height: 1.2;
           }
@@ -1079,7 +1077,7 @@ export default {
         margin-bottom: 8upx;
       }
       .app-color-3 {
-        font-size: 24upx;
+        font-size: 28upx;
       }
     }
   }
@@ -1094,7 +1092,7 @@ export default {
     border-bottom: 1upx solid #f0f0f0;
     
     .contact-title {
-      font-size: 28upx;
+      font-size: 32upx;
       font-weight: 600;
       color: #333;
     }
@@ -1145,7 +1143,7 @@ export default {
       
       .contact-label {
         width: 80upx;
-        font-size: 26upx;
+        font-size: 30upx;
         color: #666;
         flex-shrink: 0;
         margin-right: 20upx;
@@ -1154,7 +1152,7 @@ export default {
       
       .contact-value {
         flex: 1;
-        font-size: 28upx;
+        font-size: 32upx;
         color: #333;
         line-height: 1.4;
         word-break: break-all;
@@ -1164,7 +1162,7 @@ export default {
           
           .super-name {
             color: #666;
-            font-size: 24upx;
+            font-size: 28upx;
           }
         }
         
@@ -1182,7 +1180,7 @@ export default {
           
           .show-address {
             color: #999;
-            font-size: 24upx;
+            font-size: 28upx;
             margin-top: 4upx;
           }
         }
@@ -1216,6 +1214,7 @@ export default {
     }
     .tabs-name {
       color: $fontColor2;
+      font-size: 30upx;
     }
     &:nth-child(n + 5) {
       margin-bottom: 0;
@@ -1232,15 +1231,18 @@ export default {
       padding: 16upx 20upx;
       background-color: #f7f7f8;
       color: $fontColor2;
+      font-size: 32upx;
       border-radius: 4upx;
       .iconfont {
         color: $fontColor3;
       }
       .time {
         margin-right: 70upx;
+        font-size: 30upx;
       }
       .price {
         color: #333;
+        font-size: 32upx;
       }
     }
   }
@@ -1253,7 +1255,7 @@ export default {
     margin-right:10upx;
     margin-bottom:12upx;
     display:inline-block;
-    font-size:30upx;
+    font-size:34upx;
   }
 
   .flex-center {

+ 176 - 49
hdApp/src/admin/order/detail.vue

@@ -1,6 +1,7 @@
 <template>
   <view class="app-content">
     <view class="page-det">
+
       <!-- 售后付款单提示 -->
       <view class="after-sale-tip" v-if="orderInfo.forward == 1" @click="goPreOrder(orderInfo)">
         <view class="tip-content">
@@ -8,55 +9,58 @@
         </view>
       </view>
 
-      <!-- 配送进度模块 -->
-      <view class="module-com order-msg">
+      <view class="module-com order-msg" v-if="orderInfo.sendStatus == 3">
         <view class="module-tit">
           <text class="module-tit__text">配送进度</text>
         </view>
         <view class="module-det">
           <view class="order-msg-blo">
-            <!-- 付款类型 -->
-            <view class="msg-list">
-              <view class="label">配送平台:</view>
-              <view class="value">{{getExpressPlatformText(expressData.deliveryId)}}</view>
-            </view>
             <view class="msg-list express-progress-row">
               <view class="label">配送进度:</view>
-              <view class="value">{{getExpressStatusText(expressData.orderStatus)}}</view>
-              <view class="express-actions" v-if="orderInfo.payStatus == 1">
-                <button 
-                  class="admin-button-com mini-btn" 
-                  v-if="orderInfo.sendStatus == '0'" 
-                  @click.stop="openExpressPage(orderInfo.id, true)">
-                  呼叫跑腿
-                </button>
-                <button 
-                  class="admin-button-com mini-btn btn-danger" 
-                  v-if="orderInfo.sendStatus == '1'" 
-                  @click.stop="cancelExpress(orderInfo.id)">
-                  取消跑腿
-                </button>
+              <view class="value">已取消</view>
+              <view class="express-actions">
                 <button 
                   class="admin-button-com mini-btn" 
                   v-if="orderInfo.sendStatus == '3'" 
                   @click.stop="openExpressPage(orderInfo.id, false)">
                   重叫跑腿
                 </button>
-                <button 
-                  class="admin-button-com mini-btn" 
-                  v-if="orderInfo.sendStatus == '2'" 
-                  @click.stop="selectExpress(orderInfo.id)">
-                  跑腿完成
-                </button>
               </view>
             </view>
           </view>
         </view>
       </view>
-      
+      <block v-else>
+        <view class="module-com order-msg" v-if="!$util.isEmpty(expressData)">
+          <view class="module-tit">
+            <text class="module-tit__text">配送进度</text>
+          </view>
+          <view class="module-det">
+            <view class="order-msg-blo">
+              <view class="msg-list">
+                <view class="label">配送平台:</view>
+                <view class="value">{{getExpressPlatformText(expressData.deliveryId)}}</view>
+              </view>
+              <view class="msg-list express-progress-row">
+                <view class="label">配送进度:</view>
+                <view class="value">{{getExpressStatusText(expressData.orderStatus)}}</view>
+                <view class="express-actions" v-if="orderInfo.payStatus == 1">
+                  <button 
+                    class="admin-button-com mini-btn btn-danger" 
+                    v-if="orderInfo.sendStatus == '1'" 
+                    @click.stop="cancelMyExpress(orderInfo.id)">
+                    取消跑腿
+                  </button>
+                </view>
+              </view>
+            </view>
+          </view>
+        </view>
+      </block>
+
       <!-- 商品信息模块 -->
       <view class="module-com">
-        <view class="module-tit">商品信息</view>
+        <view class="module-tit">商品信息 <text style="font-weight:normal;" @click="showGoodsModal">编号 {{ orderInfo.sendNum }}</text></view>
         <view class="module-det">
           <block v-if="!$util.isEmpty(orderInfo.goodsInfoList)">
             <detailGoods 
@@ -348,7 +352,11 @@
               </view>
             </view>
 
-            <!-- 订单编号 -->
+            <view class="msg-list">
+              <view class="label">配送编号:</view>
+              <view class="value">{{ orderInfo.sendNum || '' }}</view>
+            </view>
+
             <view class="msg-list">
               <view class="label">订单编号:</view>
               <view class="value">{{ orderInfo.orderSn || '' }}</view>
@@ -387,9 +395,6 @@
           扫码收款
         </button>
         <button class="admin-button-com middle" v-if="orderInfo.sendStatus == '0' && orderInfo.payStatus == 1" @click.stop="openExpressPage(orderInfo.id, true)">呼叫跑腿</button>
-        <button class="admin-button-com default" v-if="orderInfo.sendStatus == '1' && orderInfo.payStatus == 1" @click.stop="cancelExpress(orderInfo.id)" style="background-color: #ff6b6b;">取消跑腿</button>
-        <button class="admin-button-com middle" v-if="orderInfo.sendStatus == '3' && orderInfo.payStatus == 1" @click.stop="openExpressPage(item.id, false)">重叫跑腿</button>
-        <button class="admin-button-com middle" v-if="orderInfo.sendStatus == '2' && orderInfo.payStatus == 1" @click.stop="selectExpress(item.id)">跑腿完成</button>
         <button 
           class="admin-button-com middle" 
           @click.stop="printOrder(orderInfo)" 
@@ -398,6 +403,23 @@
         </button>
       </view>
     </view>
+
+    <!-- 模拟接口使用 -->
+    <view class="goods-modal-mask" v-if="showModal" @click="hideGoodsModal">
+      <view class="goods-modal" @click.stop>
+        <view class="modal-header">
+          <text class="modal-title">输入数值</text>
+          <text class="modal-close" @click="hideGoodsModal">×</text>
+        </view>
+        <view class="modal-body">
+          <input class="modal-input" type="number" v-model="inputValue" @focus="inputValue=''" placeholder="请输入数值" />
+        </view>
+        <view class="modal-footer">
+          <button class="modal-btn cancel-btn" @click="hideGoodsModal">取消</button>
+          <button class="modal-btn confirm-btn" @click="confirmInput">确认</button>
+        </view>
+      </view>
+    </view>
   </view>
 </template>
 
@@ -414,7 +436,7 @@ const commonUtil = require("@/utils/common.js");
 import { confirmSettle } from "@/api/settle/index"
 import { refundAmount } from "@/api/refund";
 import { expressDetail } from "@/api/express";
-
+import { cancelExpressOrder,mockNotify } from '@/api/shop-express'
 export default {
   name: "detail",
   components: { 
@@ -431,7 +453,9 @@ export default {
       constant: this.$constant,
       orderInfo: {},
       refreshPage: 0,
-      expressData: {}
+      expressData: {},
+      showModal: false,
+      inputValue:0
     };
   },
   
@@ -465,7 +489,8 @@ export default {
      */
     getExpressStatusText(status) {
       const statusMap = {
-        1: '订单创建成功',
+        0: '已呼叫,待配送平台确认',
+        1: '等待小哥接单',
         2: '商家取消订单',
         3: '配送方取消订单',
         4: '配送员接单',
@@ -609,25 +634,15 @@ export default {
     /**
      * 取消配送订单
      */
-    async cancelExpress(orderId) {
+    async cancelMyExpress(orderId) {
       this.$util.confirmModal({content: '确认取消?(若配送员接单1分钟后取消,扣2元违约金)'}, async () => {
-        try {
           const res = await cancelExpressOrder({orderId: orderId})
           if (res.code === 1) {
-            this.$msg('配送订单已取消')
-            // 刷新订单列表
-            this.resetList()
-            this.getOrderList()
-          } else {
-            this.$msg(res.msg || '取消配送订单失败')
+            this.$msg('取消成功')
+            this.init()
           }
-        } catch (error) {
-          this.$msg('取消配送订单失败,请重试')
-          console.error('取消配送订单错误:', error)
-        }
       })
     },
-    
     /**
      * 查看配送成功详情
      */
@@ -644,6 +659,16 @@ export default {
       expressDetail({ orderId: this.option.id }).then(res => {
         this.expressData = res.data;
       })
+    },
+    showGoodsModal() {
+      this.showModal = true
+    },
+    hideGoodsModal() {
+      this.showModal = false
+    },
+    confirmInput() {
+      this.hideGoodsModal()
+      mockNotify({orderStatus:this.inputValue,wxOrderId:this.expressData.wxOrderId})
     }
   }
 };
@@ -832,4 +857,106 @@ export default {
     }
   }
 }
+
+/* 商品信息弹框样式 */
+.goods-modal-mask {
+  position: fixed;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  background-color: rgba(0, 0, 0, 0.5);
+  z-index: 9999;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.goods-modal {
+  width: 80%;
+  max-width: 600upx;
+  background-color: #fff;
+  border-radius: 12upx;
+  overflow: hidden;
+  box-shadow: 0 10upx 30upx rgba(0, 0, 0, 0.3);
+}
+
+.modal-header {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  padding: 30upx 40upx;
+  background-color: #f8f9fa;
+  border-bottom: 1px solid #e9ecef;
+}
+
+.modal-title {
+  font-size: 32upx;
+  font-weight: 600;
+  color: #333;
+}
+
+.modal-close {
+  font-size: 40upx;
+  color: #999;
+  cursor: pointer;
+  line-height: 1;
+  padding: 10upx;
+}
+
+.modal-body {
+  padding: 40upx;
+}
+
+.modal-input {
+  width: 100%;
+  height: 80upx;
+  border: 1px solid #ddd;
+  border-radius: 8upx;
+  padding: 0 20upx;
+  font-size: 28upx;
+  box-sizing: border-box;
+  
+  &:focus {
+    border-color: #3385ff;
+    outline: none;
+  }
+}
+
+.modal-footer {
+  display: flex;
+  align-items: center;
+  justify-content: flex-end;
+  gap: 20upx;
+  padding: 30upx 40upx;
+  background-color: #f8f9fa;
+  border-top: 1px solid #e9ecef;
+}
+
+.modal-btn {
+  padding: 20upx 40upx;
+  border-radius: 8upx;
+  font-size: 28upx;
+  border: none;
+  cursor: pointer;
+  min-width: 120upx;
+  
+  &.cancel-btn {
+    background-color: #f5f5f5;
+    color: #666;
+    
+    &:hover {
+      background-color: #e9ecef;
+    }
+  }
+  
+  &.confirm-btn {
+    background-color: #3385ff;
+    color: #fff;
+    
+    &:hover {
+      background-color: #2d74e7;
+    }
+  }
+}
 </style>

+ 1 - 1
hdApp/src/admin/settle/list.vue

@@ -1,6 +1,6 @@
 <template>
 	<view class="settle-page">
-		<view style="font-size:36upx;margin-top:20upx;">累计已结账:¥{{totalAmount}}</view>
+		<view style="font-size:36upx;margin-top:20upx;margin-left:20upx;">累计已结账:¥{{totalAmount}}</view>
 		<view scroll-y class="settle-list">
 			<block v-if="!$util.isEmpty(list.data)">
 				<SettleItem v-for="(item, index) in list.data" :key="index" :info="item" @click="gotoDetail(item)"></SettleItem>

+ 1 - 1
hdApp/src/api/common/index.js

@@ -48,7 +48,7 @@ export const initSocket = async clientId => {
 };
 
 //app登陆
-export const appLogin = data => https.get("/auth/app-login", data);
+export const appLogin = data => https.post("/auth/app-login", data);
 
 //app重新获取登陆信息
 export const hasTokenAutoLogin = data => https.get("/admin/has-token-auto-login", data);

+ 1 - 1
hdApp/src/api/mini/index.js

@@ -10,7 +10,7 @@ export const postWxCode = data => {
 	* 点击授权获取字典
 	*/
 export const getDictionaries = data => {
-	return https.get('/console/init', data)
+	return https.post('/console/init', data)
 }
 /** *
  * 点击授权获取用户信息 mini

+ 5 - 0
hdApp/src/api/shop-express/index.js

@@ -61,4 +61,9 @@ export const cancelExpressOrder = data => {
  */
 export const getExpressOrder = data => {
 	return https.post('/intra-city/get-order', data)
+}
+
+//模拟
+export const mockNotify = data => {
+	return https.post('/intra-city/mock-notify', data)
 }

+ 1 - 1
hdPad/src/api/mini/index.js

@@ -10,7 +10,7 @@ export const postWxCode = data => {
 	* 点击授权获取字典
 	*/
 export const getDictionaries = data => {
-	return https.get('/console/init', data)
+	return https.post('/console/init', data)
 }
 /** *
  * 点击授权获取用户信息 mini

+ 1 - 1
mallApp/src/api/mini/index.js

@@ -23,5 +23,5 @@ export const getWxPhone = data => {
 
 //点击授权获取字典
 export const getDictionaries = data => {
-	return https.get('/console/init', data)
+	return https.post('/console/init', data)
 }

+ 1 - 1
mallApp/src/api/user/index.js

@@ -17,7 +17,7 @@ export const create = data => {
 }
 
 export const accountLogin = data => {
-	return https.get('/user/account-login', data)
+	return https.post('/user/account-login', data)
 }
 
 export const clearLogin = data => {

+ 0 - 4
mallApp/src/pages/home/category.vue

@@ -402,10 +402,6 @@ page {
 	}
 }
 
-
-
-
-
 @keyframes fadeInFrames {
 	0% {
 		opacity: 0;

+ 4 - 1
mallApp/src/pages/item/item.vue

@@ -56,7 +56,10 @@
 								<view v-if="productItem.presell && productItem.presell == 1" style="position:absolute;top:150upx;font-size:26upx;color:#3385ff;white-space: nowrap;text-overflow: hidden;">
 									配送日期:
 									<block v-if="!$util.isEmpty(productItem.presellDateShow)">
-										<text v-for="(dateItem, dateIndex) in productItem.presellDateShow" :key="dateIndex" style="">{{dateItem}}<text v-if="dateIndex!=productItem.presellDateShow.length-1">,</text></text>
+										<text v-for="(dateItem, dateIndex) in productItem.presellDateShow" :key="dateIndex" style="">
+											{{dateItem}}
+											<text v-if="dateIndex!=productItem.presellDateShow.length-1">,</text>
+										</text>
 									</block>
 								</view>
 							</view>