Răsfoiți Sursa

报错 ReferenceError: Intl is not defined 来自 dayjs 的 timezone 插件在初始化时使用了 Intl.DateTimeFormat,而安卓 App 端内置的 WebView/JS 引擎没有实现 Intl,导致一进入页面(admin/delivery/allDelivery.vue 里 dayjs.tz 初始化)就抛异常。

移除 dayjs timezone,改用普通 dayjs,减少依赖。

dayjs() vs dayjs.tz():dayjs() 获取当前设备的本地时间。dayjs.tz() 需要 Intl.DateTimeFormat 来处理时区转换。对于中国境内的应用,设备本地时间就是东八区时间,无需时区转换
不再依赖 Intl:
普通的 dayjs 不需要 Intl 对象
避免了安卓 App 端 WebView 缺少 Intl 实现的问题
功能保持一致:
仍然使用 dayjs().format('YYYY-MM-DD HH:mm') 格式化时间
对于业务逻辑没有影响
shizhongqi 8 luni în urmă
părinte
comite
3a8a02d8f6

+ 1 - 89
ghsApp/src/admin/delivery/allDelivery.vue

@@ -1,15 +1,5 @@
 <template>
   <view class="delivery-container">
-    <!-- 页面头部 -->
-    <!-- <view class="delivery-header">
-      <view class="header-top">
-        <view class="order-sn">{{ orderSn }}</view>
-        <view class="predict-time">{{ predictTime }}</view>
-      </view>
-      <view class="header-bottom">
-        <view class="speed-tips">最快01-20 14:24送达</view>
-      </view>
-    </view> -->
 
     <!-- 地址选择区 -->
     <view class="address-section">
@@ -122,44 +112,6 @@
       </view>
       
       <!-- 跑腿列表 -->
-      
-      <!-- <view class="delivery-item" :class="{ active: selectedDelivery === 3 }" @click="selectDelivery(3)">
-        <view class="item-left">
-          <view class="delivery-name">
-            <text class="name">顺丰直营</text>
-          </view>
-          <view class="delivery-detail">团送>></view>
-        </view>
-        <view class="item-right">
-          <view class="price">预估 ¥{{ deliveryList[3].price }}</view>
-          <radio :checked="selectedDelivery === 3" color="#3385FF" style="transform: scale(0.7)"></radio>
-        </view>
-      </view>
-      <view class="delivery-item" :class="{ active: selectedDelivery === 4 }" @click="selectDelivery(4)">
-        <view class="item-left">
-          <view class="delivery-name">
-            <text class="name">UU跑腿</text>
-          </view>
-          <view class="delivery-detail">专人直送</view>
-        </view>
-        <view class="item-right">
-          <view class="price">预估 ¥{{ deliveryList[4].price }}</view>
-          <radio :checked="selectedDelivery === 4" color="#3385FF" style="transform: scale(0.7)"></radio>
-        </view>
-      </view>
-      <view class="delivery-item" :class="{ active: selectedDelivery === 5 }" @click="selectDelivery(5)">
-        <view class="item-left">
-          <view class="delivery-name">
-            <text class="name">蜂鸟</text>
-          </view>
-          <view class="delivery-detail">配送></view>
-        </view>
-        <view class="item-right">
-          <view class="price">预估 ¥{{ deliveryList[5].price }}</view>
-          <radio :checked="selectedDelivery === 5" color="#3385FF" style="transform: scale(0.7)"></radio>
-        </view>
-      </view> -->
-
       <!-- 遍历deliveryList -->
       <view class="delivery-item" v-for="(item, index) in deliveryList" :key="index" :class="{ active: selectedDelivery === item.name, disabled: !item.isAble }" @click="selectDelivery(item)">
         <view class="item-left">
@@ -197,12 +149,6 @@
 import { address, getDeliveryQuotes, createDeliveryOrder } from '@/api/express/delivery'
 import TimePicker from './components/TimePicker.vue';
 import dayjs from 'dayjs';
-import utc from 'dayjs/plugin/utc';
-import timezone from 'dayjs/plugin/timezone';
-
-dayjs.extend(utc);
-dayjs.extend(timezone);
-dayjs.tz.setDefault("Asia/Shanghai");
 
 export default {
   name: 'allDelivery',
@@ -226,14 +172,10 @@ export default {
         deliveryList: [],
         //     { name: '闪送', price: '19.00', type: '两轮' },
         //     { name: '达达秒送', price: '11.30', type: '团送' },
-        //     { name: '美团配送', price: '暂无报价', type: '暂无报价' },
-        //     { name: '顺丰同城', price: '11.30', type: '团送' },
-        //     { name: 'UU跑腿', price: '8.90', type: '专人直送' },
-        //     { name: '蜂鸟', price: '17.30', type: '配送' }
         // ],
         pickupTime: {
             label: '立即取件',
-            value: dayjs.tz().format('YYYY-MM-DD HH:mm'),
+            value: dayjs().format('YYYY-MM-DD HH:mm'),
         },
         remark: '',
     };
@@ -367,36 +309,6 @@ export default {
   padding-bottom: 150upx;
 }
 
-/* 头部 */
-/*.delivery-header {
-  background-color: #3385FF;
-  color: white;
-  padding: 30upx 20upx;
-  border-radius: 0 0 20upx 20upx;
-
-  .header-top {
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
-    margin-bottom: 15upx;
-
-    .order-sn {
-      font-size: 32upx;
-      font-weight: bold;
-    }
-
-    .predict-time {
-      font-size: 24upx;
-      opacity: 0.9;
-    }
-  }
-
-  .header-bottom {
-    font-size: 24upx;
-    opacity: 0.85;
-  }
-}*/
-
 /* 地址选择 */
 .address-section {
   background-color: white;

+ 6 - 12
ghsApp/src/admin/delivery/components/TimePicker.vue

@@ -29,12 +29,6 @@
 
 <script>
 import dayjs from 'dayjs';
-import utc from 'dayjs/plugin/utc';
-import timezone from 'dayjs/plugin/timezone';
-
-dayjs.extend(utc);
-dayjs.extend(timezone);
-dayjs.tz.setDefault("Asia/Shanghai");
 
 const minutes = [0, 10, 20, 30, 40, 50];
 
@@ -73,7 +67,7 @@ export default {
     },
 
     initTime() {
-      const now = dayjs.tz(); // Use current time in the default timezone (Asia/Shanghai)
+      const now = dayjs(); // Use current time
       this.days = this.generateDays();
 
       const isToday = true;
@@ -81,7 +75,7 @@ export default {
 
       // If no hours available today, switch to tomorrow
       if (availableHoursToday.length <= 1) { // Only "立即"
-        const tomorrow = dayjs.tz().add(1, 'day').startOf('day');
+        const tomorrow = dayjs().add(1, 'day').startOf('day');
         this.days = this.generateDays(); // Regenerate days if needed
         this.hours = this.generateHours(tomorrow, false);
         this.minutes = this.generateMinutes(tomorrow, false, this.hours[0].value);
@@ -102,8 +96,8 @@ export default {
 
     generateDays() {
       return [
-        { label: '今天', value: dayjs.tz().format('YYYY-MM-DD') },
-        { label: '明天', value: dayjs.tz().add(1, 'day').format('YYYY-MM-DD') },
+        { label: '今天', value: dayjs().format('YYYY-MM-DD') },
+        { label: '明天', value: dayjs().add(1, 'day').format('YYYY-MM-DD') },
       ];
     },
 
@@ -151,7 +145,7 @@ export default {
       const [dayIndex, hourIndex, minuteIndex] = e.detail.value;
       const oldPickerValue = this.pickerValue;
       
-      const now = dayjs.tz();
+      const now = dayjs();
       const isToday = dayIndex === 0;
 
       let newHours = this.hours;
@@ -192,7 +186,7 @@ export default {
       if (selectedHour && selectedHour.value === -1) {
         result = {
           label: '立即取件',
-          value: dayjs.tz().format('YYYY-MM-DD HH:mm'),
+          value: dayjs().format('YYYY-MM-DD HH:mm'),
         };
       } else {
         const date = selectedDay.value;

+ 3 - 3
ghsApp/src/api/express/delivery.js

@@ -11,14 +11,14 @@ export const address = data => {
  * 获取配送平台报价
  */
 export const getDeliveryQuotes = data => {
-	return https.post('/delivery/all-delivery-quotes?XDEBUG_SESSION_START=PHPSTORM', data) //?XDEBUG_SESSION_START=PHPSTORM
+	return https.post('/delivery/all-delivery-quotes', data) //?XDEBUG_SESSION_START=PHPSTORM
 }
 
 /**
  * 创建配送单
  */
 export const createDeliveryOrder = data => {
-	return https.post('/delivery/create-order?XDEBUG_SESSION_START=PHPSTORM', data)
+	return https.post('/delivery/create-order', data)
 }
 
 /**
@@ -60,5 +60,5 @@ export const cancelAuth = data => {
  * 添加小费
  */
 export const addTip = data => {
-	return https.post('/delivery/add-tip?XDEBUG_SESSION_START=PHPSTORM', data)
+	return https.post('/delivery/add-tip', data)
 }