Browse Source

地址编辑改回手动输入,不允许选择

蒋开心 2 tuần trước cách đây
mục cha
commit
f4ef88eb11

+ 26 - 2
components/feed-reel/vertical-reel.vue

@@ -189,13 +189,14 @@
 							v-if="isActiveSlide(index) && goodsListOf(clip).length > 0"
 							class="reel-goods"
 							@click.stop
-							@tap.stop
 						>
 							<scroll-view
 								class="reel-goods-scroll"
 								scroll-x="true"
+								:enable-flex="true"
 								:show-scrollbar="false"
 								:style="{ width: frameW + 'px' }"
+								@touchmove.stop
 							>
 								<view class="reel-goods-row">
 									<view
@@ -203,7 +204,9 @@
 										:key="goods.id || gIndex"
 										class="reel-goods-item"
 										:style="{ width: Math.round(frameW * 0.8) + 'px' }"
-										@tap.stop="onGoodsTap(goods)"
+										@touchstart="onGoodsTouchStart"
+										@touchmove="onGoodsTouchMove"
+										@tap="onGoodsItemTap(goods)"
 									>
 										<image
 											class="reel-goods-img"
@@ -1039,6 +1042,27 @@ export default {
 			const path = goods && (goods.image || goods.image_url || goods.cover)
 			return path ? buildOssUrl(path, 120, 120) : ''
 		},
+		/** 商品卡:区分横滑与点击,避免 @tap.stop 抢走 scroll-view 滑动 */
+		onGoodsTouchStart(e) {
+			const t = e && e.touches && e.touches[0]
+			this._goodsTouchX = t ? t.pageX : 0
+			this._goodsTouchY = t ? t.pageY : 0
+			this._goodsTouchMoved = false
+		},
+		onGoodsTouchMove(e) {
+			const t = e && e.touches && e.touches[0]
+			if (!t) return
+			if (
+				Math.abs(t.pageX - this._goodsTouchX) > 8 ||
+				Math.abs(t.pageY - this._goodsTouchY) > 8
+			) {
+				this._goodsTouchMoved = true
+			}
+		},
+		onGoodsItemTap(goods) {
+			if (this._goodsTouchMoved) return
+			this.onGoodsTap(goods)
+		},
 		onGoodsTap(goods) {
 			const id = goods && goods.id
 			if (id == null || id === '') return

+ 2 - 2
locale/en.json

@@ -1362,7 +1362,7 @@
   "addressManage.mobile": "Mobile Number",
   "addressManage.mobilePlaceholder": "Recipient Mobile Number",
   "addressManage.region": "Region",
-  "addressManage.regionPlaceholder": "Select Province/City/District",
+  "addressManage.regionPlaceholder": "Enter province / city / district",
   "addressManage.detailAddress": "Detail Address",
   "addressManage.detailAddressPlaceholder": "Street, building number, etc.",
   "addressManage.setDefault": "Set as Default",
@@ -1370,7 +1370,7 @@
   "addressManage.addTitle": "Add Address",
   "addressManage.nameRequired": "Please enter recipient name",
   "addressManage.mobileRequired": "Please enter mobile number",
-  "addressManage.regionRequired": "Please select region",
+  "addressManage.regionRequired": "Please enter region",
   "addressManage.addressRequired": "Please enter detail address",
   "addressManage.saveSuccess": "Address {0} successfully",
   "addressManage.operationFailed": "Operation failed",

+ 2 - 2
locale/zh-Hans.json

@@ -1335,7 +1335,7 @@
   "addressManage.mobile": "手机号码",
   "addressManage.mobilePlaceholder": "收货人手机号码",
   "addressManage.region": "所在地区",
-  "addressManage.regionPlaceholder": "请选择省/市/区",
+  "addressManage.regionPlaceholder": "请输入省/市/区",
   "addressManage.detailAddress": "详细地址",
   "addressManage.detailAddressPlaceholder": "街道、门牌号等详细地址",
   "addressManage.setDefault": "设为默认",
@@ -1343,7 +1343,7 @@
   "addressManage.addTitle": "新增地址",
   "addressManage.nameRequired": "请填写收货人姓名",
   "addressManage.mobileRequired": "请填写手机号码",
-  "addressManage.regionRequired": "请选择所在地区",
+  "addressManage.regionRequired": "请填写所在地区",
   "addressManage.addressRequired": "请填写详细地址",
   "addressManage.saveSuccess": "地址{0}成功",
   "addressManage.operationFailed": "操作失败",

+ 2 - 2
locale/zh-Hant.json

@@ -1388,7 +1388,7 @@
   "addressManage.mobile": "手機號碼",
   "addressManage.mobilePlaceholder": "收貨人手機號碼",
   "addressManage.region": "所在地區",
-  "addressManage.regionPlaceholder": "請選擇省/市/區",
+  "addressManage.regionPlaceholder": "請輸入省/市/區",
   "addressManage.detailAddress": "詳細地址",
   "addressManage.detailAddressPlaceholder": "街道、樓牌號等詳細地址",
   "addressManage.setDefault": "設為默認",
@@ -1396,7 +1396,7 @@
   "addressManage.addTitle": "新增地址",
   "addressManage.nameRequired": "請填寫收貨人姓名",
   "addressManage.mobileRequired": "請填寫手機號碼",
-  "addressManage.regionRequired": "請選擇所在地區",
+  "addressManage.regionRequired": "請填寫所在地區",
   "addressManage.addressRequired": "請填寫詳細地址",
   "addressManage.saveSuccess": "地址{0}成功",
   "addressManage.operationFailed": "操作失敗",

+ 8 - 61
pages/user/address/addressManage.vue

@@ -7,13 +7,11 @@
       </view>
       <view class="cu-form-group">
         <view class="title">{{ $t('addressManage.mobile') }}</view>
-        <input type="number" :placeholder="$t('addressManage.mobilePlaceholder')" v-model="addressData.mobile" maxlength="11" />
+        <input type="text" :placeholder="$t('addressManage.mobilePlaceholder')" v-model="addressData.mobile" />
       </view>
-      <view class="cu-form-group" @tap="openAddressPicker">
+      <view class="cu-form-group">
         <view class="title">{{ $t('addressManage.region') }}</view>
-        <view class="picker-text" :class="{ placeholder: !addressData.formatted_address }">
-          {{ addressData.formatted_address || $t('addressManage.regionPlaceholder') }}
-        </view>
+        <input type="text" v-model="addressData.formatted_address" :placeholder="$t('addressManage.regionPlaceholder')" />
       </view>
       <view class="cu-form-group align-start">
         <view class="title">{{ $t('addressManage.detailAddress') }}</view>
@@ -29,13 +27,11 @@
     <view class="padding-bj flex flex-direction margin-top">
       <button @tap="confirm" class="cu-btn wanl-bg-orange lg">{{ $t('orderConfirm.complete') }}</button>
     </view>
-    <address-picker ref="addressPicker" @selectAddress="successSelectAddress"></address-picker>
   </view>
 </template>
 
 <script>
 import { postAddressSave } from '@/features/mall/mall-gateway'
-import { buildRestPath } from '@/core/config/api-paths'
 export default {
   data() {
     return {
@@ -66,8 +62,8 @@ export default {
     }
     if (option.type === 'newadd') {
       this.addressData.default = 1
-      this.manageType = 'add'  
-    } else if (option.type === 'edit') {  
+      this.manageType = 'add'
+    } else if (option.type === 'edit') {
       this.manageType = 'edit'
       if (option.data) {
         this.addressData = JSON.parse(option.data)
@@ -78,20 +74,6 @@ export default {
     uni.setNavigationBarTitle({ title: this.manageType === 'edit' ? this.$t('addressManage.editTitle') : this.$t('addressManage.addTitle') })
   },
   methods: {
-    openAddressPicker() {
-      this.$refs.addressPicker.show()
-    },
-    successSelectAddress(address) {
-      this.addressData.city = address.city
-      this.addressData.country = address.country
-      this.addressData.province = address.province
-      this.addressData.citycode = address.citycode
-      this.addressData.district = address.district
-      this.addressData.formatted_address = address.formatted_address
-      this.addressData.address_name = address.formatted_address
-      this.addressData.location = address.location
-      this.addressData.adcode = address.adcode
-    },
     switchChange(e) {
       this.addressData.default = e.detail.value ? 1 : 0
     },
@@ -114,19 +96,15 @@ export default {
         return
       }
       try {
-        if (data.address) {
-          data.address_full = data.address_name + data.address
-        }
+        data.address_name = data.formatted_address
+        data.address_full = (data.formatted_address || '') + (data.address || '')
         const resData = await postAddressSave({ data, type: this.manageType })
         uni.showToast({
           title: this.$t('addressManage.saveSuccess', [this.manageType === 'edit' ? '更新' : '添加']),
           icon: 'none'
         })
         setTimeout(() => {
-          // 先跳轉回地址列表
           uni.navigateBack({ delta: 1 })
-
-          // 然後發射事件(地址列表頁面的 onShow 已經執行了)
           setTimeout(() => {
             let newAddressId = null
             if (resData && typeof resData === 'object') {
@@ -150,28 +128,6 @@ export default {
   background: #fff;
 }
 
-.cu-bar.fixed {
-  position: fixed;
-  top: 0;
-  left: 0;
-  right: 0;
-  z-index: 999;
-  display: flex;
-  align-items: center;
-  height: 44px;
-  padding: 0 20rpx;
-  background: #fff;
-}
-
-.cu-bar.fixed .action:first-child {
-  margin-left: 0;
-}
-
-.cu-bar .action text {
-  font-size: 40rpx;
-  color: #333;
-}
-
 .form-wrap {
   padding: 0 10rpx;
 }
@@ -196,15 +152,6 @@ export default {
   min-height: 160rpx;
 }
 
-.picker-text {
-  font-size: 28rpx;
-  color: #333;
-}
-
-.picker-text.placeholder {
-  color: #999;
-}
-
 .wanl-bg-orange {
   background: linear-gradient(135deg, #ff6b35, #ff3d2e) !important;
   color: #fff !important;
@@ -214,4 +161,4 @@ export default {
   font-size: 32rpx;
   height: 86rpx;
 }
-</style>
+</style>