Browse Source

个人信息页面接口对接

haveyou 1 năm trước cách đây
mục cha
commit
7f9400770e
100 tập tin đã thay đổi với 807 bổ sung1593 xóa
  1. 23 13
      pages-home/pages/book-order.vue
  2. 3 4
      pages-home/pages/order-success.vue
  3. 24 5
      pages-mine/components/address-card.vue
  4. 4 4
      pages-mine/pages/address/add-or-update.vue
  5. 11 21
      pages-mine/pages/address/list.vue
  6. 0 202
      pages-mine/pages/collection.vue
  7. 0 154
      pages-mine/pages/discounts.vue
  8. 0 190
      pages-mine/pages/history.vue
  9. 0 162
      pages-mine/pages/message1.vue
  10. 0 204
      pages-mine/pages/mine111.vue
  11. 322 219
      pages-mine/pages/setting.vue
  12. 0 30
      pages.json
  13. 1 2
      pages/home/components/BookItem.vue
  14. 20 13
      pages/home/components/ScanBookList.vue
  15. 365 363
      pages/home/index.vue
  16. 34 7
      pages/mine/index.vue
  17. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map
  18. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map
  19. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
  20. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/common-dialog.js.map
  21. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/img-swiper.js.map
  22. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/loadmore.js.map
  23. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/nav/dial-nav.js.map
  24. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/navbar/navbar-search.js.map
  25. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/navbar/navbar-top-search.js.map
  26. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/no-data.js.map
  27. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/pageScroll/index.js.map
  28. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/search/search.js.map
  29. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/select-reason.js.map
  30. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/tag.js.map
  31. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/title-operate.js.map
  32. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/components/BookItem.js.map
  33. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/components/BookListItem.js.map
  34. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/components/PickupTimePicker.js.map
  35. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/pages/book-order.js.map
  36. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/pages/order-success.js.map
  37. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/pages/scaned-book.js.map
  38. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/after-sales/apply-reason.js.map
  39. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/after-sales/back-goods.js.map
  40. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/after-sales/back-status.js.map
  41. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/after-sales/select-goods-pop.js.map
  42. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/after-sales/select-item.js.map
  43. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/express/list.js.map
  44. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/goods/goods-info.js.map
  45. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/goods/goods-select-sku.js.map
  46. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/goods/goods-select.js.map
  47. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/goods/submitBar.js.map
  48. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/line-info-operate.js.map
  49. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/navbar-tab-search.js.map
  50. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/express-goods-card.js.map
  51. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/order-card.js.map
  52. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/order-goods-card.js.map
  53. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/order-operate.js.map
  54. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/order-status.js.map
  55. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/orderdetail-goods-card.js.map
  56. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/sel-coupon-popup.js.map
  57. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/submit-discounts.js.map
  58. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/submit-goods-card.js.map
  59. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/submit-operate.js.map
  60. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/apply-status.js.map
  61. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/apply.js.map
  62. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/back.js.map
  63. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/components/setExpress.js.map
  64. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/list.js.map
  65. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/success.js.map
  66. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/goods/detail.js.map
  67. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/detail.js.map
  68. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/express.js.map
  69. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/list.js.map
  70. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/pay-result.js.map
  71. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/pay.js.map
  72. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/submit.js.map
  73. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/zone/zone.js.map
  74. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/address-card.js.map
  75. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/city-picker.js.map
  76. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/discounts-item.js.map
  77. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/order-item.js.map
  78. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/address/add-or-update.js.map
  79. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/address/list.js.map
  80. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/collection.js.map
  81. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/discounts.js.map
  82. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/feedback.js.map
  83. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/history.js.map
  84. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/order-page.js.map
  85. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/setting.js.map
  86. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages-pub/richTextPage.js.map
  87. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/home/components/BookItem.js.map
  88. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/home/components/InputIsbn.js.map
  89. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/home/components/ScanBookList.js.map
  90. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/home/components/notScanned.js.map
  91. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/home/index.js.map
  92. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/index.js.map
  93. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/mall/classify.js.map
  94. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/mall/components/card.js.map
  95. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/mall/components/cardGoodsModel.js.map
  96. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/mall/components/collection.js.map
  97. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/mall/components/goods.js.map
  98. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/mall/components/goodsModel.js.map
  99. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/mall/components/poster.js.map
  100. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/mall/index.js.map

+ 23 - 13
pages-home/pages/book-order.vue

@@ -6,10 +6,10 @@
 				<image src="../static/adderss.png" style="width:40rpx;height: 40rpx;"></image>
 				<view class="flex-d flex-1 ml-24" style="margin-right: 90rpx;">
 					<view class="flex-a flex-j-b  mb-10">
-						<view :style="titleStyle">发货人:{{defaultAddr.name}}</view>
-						<view :style="titleStyle">{{defaultAddr.mobile}}</view>
+						<view :style="titleStyle">发货人:{{ defaultAddr.name }}</view>
+						<view :style="titleStyle">{{ defaultAddr.mobile }}</view>
 					</view>
-					<view :style="titleStyle">地址:{{defaultAddr.detailAddress}}</view>
+					<view :style="titleStyle">地址:{{ defaultAddr.fullAddress }}</view>
 				</view>
 				<u-icon name="arrow-right" :size="28" color="#666" top="4"></u-icon>
 			</view>
@@ -39,8 +39,8 @@
 
 				<view class="flex-a">
 
-					<view v-if="selectedTime.day" :style="titleStyle" class="ml-10">{{selectedTime.day}}
-						{{selectedTime.time}}
+					<view v-if="selectedTime.day" :style="titleStyle" class="ml-10">{{ selectedTime.day }}
+						{{ selectedTime.time }}
 					</view>
 					<view v-else :style="titleStyle" class="ml-10">请选择快递上门取件时间</view>
 					<u-icon name="arrow-right" :size="28" color="#666" top="4"></u-icon>
@@ -113,11 +113,7 @@
 				books: [],
 
 				showPicker: false,
-				expressList: [{
-					name: '顺丰'
-				}, {
-					name: '京东'
-				}],
+				expressList: [],
 				showTimePicker: false,
 				selectedTime: {},
 				defaultAddr: {},
@@ -168,7 +164,7 @@
 			//添加或者选择地址
 			handleAddress() {
 				uni.navigateTo({
-					url: "/pages-mine/pages/address/list?id=" + this.defaultAddr.id
+					url: `/pages-mine/pages/address/list?id=${this.defaultAddr.id}&isSelect=1`
 				})
 			},
 
@@ -219,10 +215,24 @@
 					}
 				})
 			},
+			//获取预提交订单
+			getPreSubmitOrder() {
+				let orderId = uni.getStorageSync('orderId')
+				uni.$u.http.get('/token/order/preSubmit?orderId=' + orderId).then(res => {
+					this.submitData.orderId = orderId
+					this.defaultAddr = res.data.defaultAddress
+					this.submitData.addressId = this.defaultAddr.id
+
+					this.books = res.data.orderDetailList
+					this.expressList = res.data.expressTypes.map(v => ({
+						name: v
+					}))
+				})
+			},
+
 		},
 		mounted() {
-			this.getDefaultAddress()
-			this.getLastOrder()
+			this.getPreSubmitOrder()
 
 			uni.$on('selectAddr', (item) => {
 				if (item.id) {

+ 3 - 4
pages-home/pages/order-success.vue

@@ -4,9 +4,9 @@
 		<text class="success-title">订单提交成功</text>
 		<text class="success-message">您的订单已提交,书嗨稍后将安排快递上门取书!</text>
 		<view class="button-group">
-			<u-button class="notify-button" :custom-style="{borderColor: '#07c160',width:'45%',
+			<u-button class="notify-button" :custom-style="{borderColor: '#07c160',width:'235rpx',
             color: '#07c160'}" type="default" @click="notifyStatusChange">状态变更通知</u-button>
-			<u-button :custom-style="{background: '#07c160',width:'45%',
+			<u-button :custom-style="{background: '#07c160',width:'235rpx',
             color: '#ffffff'}" class="view-order-button" type="primary" @click="viewOrder">查看订单</u-button>
 		</view>
 	</view>
@@ -58,8 +58,7 @@
 
 		.button-group {
 			display: flex;
-			justify-content: space-between;
-			width: 80%;
+			justify-content: center;
 			gap: 70rpx;
 		}
 	}

+ 24 - 5
pages-mine/components/address-card.vue

@@ -1,12 +1,16 @@
 <template>
-	<view class="address-card" :class="{ 'address-card--selected': selected }" @tap="handleClick">
+	<view class="address-card" :class="{ 'address-card--selected': selected }">
 		<!-- 选中状态的勾 -->
-		<view class="selected-icon" v-if="selected">
+		<view class="selected-icon no-select-icon" v-if="isSelect==1" @tap="handleClick">
+			<u-icon name="checkmark" color="#FFFFFF" size="24"></u-icon>
+		</view>
+
+		<view class="selected-icon" v-if="selected" @tap="handleClick">
 			<u-icon name="checkmark" color="#FFFFFF" size="24"></u-icon>
 		</view>
 
 		<!-- 主要内容区 -->
-		<view class="content flex-a">
+		<view class="content flex-a" @click="updateAddress">
 			<image src="../static/adderss.png" style="width:40rpx;height: 40rpx;"></image>
 
 			<view class="flex-1 mr-40 ml-24 flex-d">
@@ -46,11 +50,15 @@
 			selected: {
 				type: Boolean,
 				default: false
-			}
+			},
+			isSelect: {
+				type: [Boolean, Number,String],
+				default: false
+			},
 		},
 		data() {
 			return {
-				isDefault: false
+				isDefault: false,
 			}
 		},
 		watch: {
@@ -67,6 +75,13 @@
 				this.$emit('tapItem', this.address)
 			},
 
+			//更新地址
+			updateAddress() {
+				uni.navigateTo({
+					url: '/pages-mine/pages/address/add-or-update?id=' + this.address.id
+				})
+			},
+
 			onDefaultChange(value) {
 				if (this.address.defaultFlag == 1) return this.isDefault = true
 
@@ -124,6 +139,10 @@
 			justify-content: center;
 			border-bottom-left-radius: 12rpx;
 			border-top-right-radius: 12rpx;
+
+			&.no-select-icon {
+				background-color: #d8d8d8;
+			}
 		}
 
 

+ 4 - 4
pages-mine/pages/address/add-or-update.vue

@@ -92,9 +92,10 @@ export default {
 
         // 提交表单
         submit() {
-            uni.$u.http.post('/token/user/address/add', this.form).then(res => {
+            let path = this.form.id ? '/token/user/address/update' : '/token/user/address/add'
+            uni.$u.http.post(path, this.form).then(res => {
                 if (res.code == 200) {
-                    uni.showToast('保存成功');
+                    uni.showToast('操作成功');
                     uni.navigateBack();
                 }
             })
@@ -102,10 +103,9 @@ export default {
         // 编辑
         getAddressDetail(id) {
             uni.showLoading();
-
             uni.$u.http.get(`/token/user/address/getDetail/${id}`).then((res) => {
                 if (res.code == 200) {
-                    this.form = res.data;
+                    this.form = res.data
                     this.selAddressCodes = [res.data.provinceId, res.data.cityId, res.data.districtId]
                 }
             }).finally(() => {

+ 11 - 21
pages-mine/pages/address/list.vue

@@ -3,7 +3,7 @@
 		<NoData v-if="!loading&&list.length<1"></NoData>
 		<view class="list" v-else>
 			<AddressCard v-for="item in list" :key="item.id" :address="item" :selected="item.id==selectId"
-				@delete="deletePopup" @success="getAddressList" @tapItem="handleSelectAddr">
+				@delete="deletePopup" @success="getAddressList" @tapItem="handleSelectAddr" :isSelect="isSelect">
 			</AddressCard>
 		</view>
 		<view class="bottom-fixed-con">
@@ -46,12 +46,14 @@
 							backgroundColor: '#dd524d'
 						}
 					}
-				]
+				],
+				isSelect: false, //是否是选择地址
 			};
 		},
 		onLoad(ops) {
 			if (ops.id) {
 				this.selectId = ops.id
+				this.isSelect = ops.isSelect
 			}
 		},
 		onShow(ops) {
@@ -60,9 +62,10 @@
 		methods: {
 			//选择地址
 			handleSelectAddr(item) {
-				console.log(item,'xxxx')
 				uni.$emit('selectAddr', item)
-				uni.navigateBack({delta:1})
+				uni.navigateBack({
+					delta: 1
+				})
 			},
 			//打开删除弹窗
 			deletePopup(id) {
@@ -71,15 +74,10 @@
 			},
 			// 删除
 			confirmDelete() {
-				this.$u.api.delAddressAjax(this.list[index].id).then(({
-					code,
-					data
-				}) => {
-					if (code == 1) {
-						this.list.splice(index, 1);
-						this.list[index].show = false;
-					} else {
-						this.$u.toast(`删除失败`);
+				uni.$u.http.post(`/token/user/address/remove/${this.deleteId}`).then((res) => {
+					if (res.code == 200) {
+						this.$u.toast(`删除成功`);
+						this.getAddressList()
 					}
 				})
 			},
@@ -99,14 +97,6 @@
 					}
 				})
 			},
-			open(index) {
-				// 先将正在被操作的swipeAction标记为打开状态,否则由于props的特性限制,
-				// 原本为'false',再次设置为'false'会无效
-				this.list[index].show = true;
-				this.list.map((val, idx) => {
-					if (index != idx) this.list[idx].show = false;
-				})
-			},
 			getAddressList() {
 				this.loading = true;
 				uni.$u.http.get('/token/user/address/list?content=' + '').then(res => {

+ 0 - 202
pages-mine/pages/collection.vue

@@ -1,202 +0,0 @@
-<template>
-	<view class="collection">
-		<view class="topEditOpar" v-if="list.length>0">
-			<view class="check" v-if="isEdit">
-				<u-checkbox shape="circle" active-color="#ed3f14" icon-size="16"  v-model="checkAllStauts" @change="checkAllGoods"></u-checkbox>
-				<text>全选</text>
-			</view>
-			<view class="text opartxt" v-if="isEdit" @click="delCollection">
-				移出收藏夹
-			</view>
-			<view class="text" v-else @click="isEdit = true">
-				管理
-			</view>
-		</view>
-		<view class="list">
-			<view class="list_item" v-for="(item, index) in list" :key="index">
-				<view class="selcheck" v-if="isEdit">
-					<u-checkbox shape="circle" active-color="#ed3f14" icon-size="16" :disabled="goods.status==2"
-						v-model="item.checked"></u-checkbox>
-				</view>
-				<view class="infobox">
-					<collection :data="item"></collection>
-				</view>
-				
-				
-			</view>
-			
-		</view>
-		<NoData v-if="finish&&list.length<1"></NoData>
-		<LoadMore v-else :loadtype="{page, loading, finish}"></LoadMore>
-	</view>
-</template>
-
-<script>
-	var _self;
-	import collection from '@/pages/mall/components/collection.vue';
-	export default {
-		components: {
-			collection
-		},
-		data() {
-			return {
-				isEdit:false,
-				checkAllStauts: false,
-				
-				page:1,
-				loading:false,
-				finish:false,
-				list: [],
-				pullDown:false,
-			};
-		},
-		computed: {
-			checkAll() {
-				if (this.list.length < 1) {
-					this.checkAllStauts = false;
-					return;
-				}
-				this.list.map(item => (item.checked ? (this.totalPrice += Number(item.amount) * item.nums) : 0));
-				if (this.list.filter(item => item.checked).length == this.list.length) {
-					this.checkAllStauts = true;
-				} else {
-					this.checkAllStauts = false;
-				}
-			},
-		},
-		onLoad(ops) {
-			// if (ops.isSelect) this.isSelect = ops.isSelect;
-			_self = this;
-			this.getCollectionList();
-		},
-		onReachBottom(){
-			this.getCollectionList();
-		},
-		onPullDownRefresh(){
-			this.pullDown = true;
-			this.reData();
-		},
-		methods: {
-			// 刷新数据
-			reData(){
-				this.page=1;
-				this.finish=false;
-				this.list=[];
-				this.getCollectionList();
-			},
-			getCollectionList(){
-				if(this.finish)return false;
-				if(this.loading)return false;
-				this.$u.api.collectionListAjax(this.page).then(({code,data})=>{
-					console.log(code,data)
-					if(this.pullDown){
-						uni.stopPullDownRefresh();
-						this.pullDown = false;
-					}
-					this.loading = false;
-					let returnData = data.data;
-					if(code==1){
-						if(data.last_page<=data.current_page){
-							this.finish = true;
-						}
-						returnData.forEach(e => {
-							e.checked = false;
-						})
-						if(data.current_page==1){
-							this.list = returnData;
-						}else{
-							this.list=this.list.concat(returnData);
-						}
-					}else{
-						this.finish = true;
-					}
-					this.page++;
-				}).catch(()=>{
-					this.loading = false;
-					this.finish = true;
-					if(this.pullDown){
-						uni.stopPullDownRefresh();
-						this.pullDown = false;
-					}
-				})
-			},
-			
-			checkAllGoods() {
-				if (this.checkAllStauts) {
-					this.list.forEach(item => (item.checked = false));
-				} else {
-					this.list.forEach(item => (item.checked = true));
-				}
-				// this.$forceUpdate();
-			},
-			
-			// 移出收藏夹
-			delCollection(){
-				let selItems = this.list.filter(item => item.checked);
-				if(selItems.length >0){
-					uni.showModal({
-						title: '提示',
-						content: '确认要移出收藏夹?',
-						success: function(res) {
-							if (res.confirm) {
-								_self.comfirmF(selItems)
-							}
-						}
-					});
-				}else{
-					this.isEdit = false;
-				}
-			},
-			comfirmF(selItems){			
-				let ids = selItems.map(e=>e.id);
-				console.log(ids);
-				this.$u.api.delCollectionAjax(ids.toString()).then(({code,msg})=>{
-					this.$u.toast(msg);
-					if(code==1){
-						this.reData();
-					}
-				})
-			},
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-.collection {
-	padding: 20rpx;
-	min-height: 100vh;
-	box-sizing: border-box;
-}
-.list {
-	background-color: #fff;
-	border-radius: 20rpx;
-}
-.list_item{
-	display: flex;
-	align-items: center;
-	.infobox{
-		flex: 1;
-	}
-}
-.selcheck{
-	width: 80rpx;
-	padding-left: 20rpx;
-}
-.topEditOpar{
-	display: flex;
-	padding: 10rpx 20rpx;
-	display: flex;
-	align-items: center;
-	justify-content: space-between;
-	text-align: center;
-	.text{
-		flex: 1;
-		text-align: right;
-		font-weight: bold;
-		font-size: 32rpx;
-	}
-	.opartxt{
-		color: $app-theme-deep-color;
-	}
-}
-</style>

+ 0 - 154
pages-mine/pages/discounts.vue

@@ -1,154 +0,0 @@
-<template>
-	<view class="pagecon">
-		<NoData v-if="finish&&discountsList.length<1"></NoData>
-		<view class="list">
-			<discountsItem :select="selectIndex == index" :data="item" v-for="(item, index) in discountsList" :key="index" @click="changeDiscount(item, index)"></discountsItem>
-			
-		</view>
-	</view>
-</template>
-
-<script>
-import { formatDate } from '@/utils/tools.js'
-import discountsItem from '../components/discounts-item.vue'
-const app = getApp();
-export default {
-	components: {
-		discountsItem
-	},
-	data() {
-		return {
-			topHeight:app.globalData.statusBarHeight + app.globalData.navBarHeight,
-			selectIndex: -1,
-			page:1,
-			loading:false,
-			finish:false,
-			discountsList: [
-				// {
-				// 	"id": 1,
-				// 	"user_id": 1,
-				// 	"title": "新用户注册",
-				// 	"amount": "5.00",
-				// 	"limit_day": 5,
-				// 	"limit_time": 1706600909,
-				// 	"status": "2",
-				// 	"createtime": 1706168909,
-				// 	"updatetime": 1706168909
-				// },
-			]
-		};
-	},
-	
-	onLoad() {
-		this.getUserCouponList();
-	},
-	onReachBottom(){
-		console.log('滚动到底部')
-		this.nextPage();
-	},
-	methods: {
-		formatDateF(v){
-			return formatDate(v);
-		},
-		changeDiscount(item, index) {
-			this.selectIndex = index;
-		},
-		getUserCouponList(){
-			if(this.loading)return false;
-			this.$u.api.getUserCouponListAjax(this.page).then(({code,data})=>{
-				console.log(code,data)
-				this.loading = false;
-				if(code==1){
-					if(data.last_page<=data.current_page){
-						this.finish = true;
-					}
-					if(data.current_page==1){
-						this.discountsList = data.data;
-					}else{
-						this.discountsList=this.discountsList.concat(data.data);
-					}
-				}else{
-					this.finish = true;
-				}
-			}).catch(()=>{
-				this.loading = false;
-				this.finish = true;
-			})
-		},
-		nextPage(e){
-			if(this.finish){
-				/* 已滚动到底部,不继续加载 */
-				return false;
-			}
-			console.log(e);
-			this.page++;
-			this.getUserCouponList();
-		},
-	},
-};
-</script>
-
-<style lang="scss" scoped>
-	.pagecon{
-		padding: 30rpx;
-		min-height: 100vh;
-		box-sizing: border-box;
-		background-color: $app-theme-bg-gray-color;
-	}
-.list {
-	// margin: 30rpx;
-	.item {
-		width: 100%;
-		height: 174rpx;
-		background-image: url('@/pages-mine/static/discounts-bg.png');
-		background-size: cover;
-		margin-bottom: 30rpx;
-		display: flex;
-		justify-content: flex-start;
-		align-items: flex-end;
-		padding-bottom: 34rpx;
-		position: relative;
-
-		.left {
-			margin-right: 60rpx;
-			margin-left: 50rpx;
-			.discount {
-				text:nth-child(1) {
-					font-size: 22rpx;
-					color: $app-theme-text-money-color;
-				}
-				text:nth-child(2) {
-					font-size: 64rpx;
-					color: $app-theme-text-money-color;
-				}
-			}
-			.standard {
-				font-size: 20rpx;
-				color: $app-theme-card-gray-color;
-			}
-		}
-		.right {
-			.title {
-				font-size: 32rpx;
-				color: $app-theme-text-black-color;
-				margin-bottom: 32rpx;
-			}
-			.date {
-				font-size: 20rpx;
-				color: $app-theme-card-gray-color;
-			}
-		}
-
-		.select {
-			height: 60rpx;
-			width: 60rpx;
-			background-image: url('@/pages-mine/static/discounts-select.png');
-			background-size: cover;
-			position: absolute;
-			top: 4rpx;
-			right: 4rpx;
-			z-index: $app-zIndex-absolute;
-		}
-	}
-}
-</style>

+ 0 - 190
pages-mine/pages/history.vue

@@ -1,190 +0,0 @@
-<template>
-	<view class="browseHistory">
-		<view class="topEditOpar" v-if="browseHistory.length>0">
-			<view class="text opartxt"  @click="delCollection">
-				清空足迹
-			</view>
-		</view>
-		<view class="list">
-			<view class="list_item" v-for="(item, index) in browseHistory" :key="index">
-				<view class="list_left">
-					<image :src="item.cover" mode="aspectFit" error-icon="../../static/img/quesheng.png"></image>
-				</view>
-				<view class="list_right">
-					<view class="goods_title shu-elip-2">{{ item.title }}</view>
-					<view class="goods_titlesm shu-elip-1" v-if="item.publish">{{item.publish}}</view>
-				</view>
-			</view>			
-		</view>
-	
-		
-		<NoData v-if="browseHistory.length<1"></NoData>
-	</view>
-</template>
-
-<script>
-	var _self;
-	export default {
-		data() {
-			return {
-				browseHistory:[],				
-			};
-		},
-		onLoad(ops) {
-			_self = this;
-			this.getBrowseHistory();
-		},
-		methods: {
-			getBrowseHistory(){
-				const hist = uni.getStorageSync('browseHistory');
-				console.log('browseHistory>>>',hist)
-				if(hist){
-					this.browseHistory = [].concat(hist);
-				}
-			},
-			delCollection(){
-				uni.showModal({
-					title: '提示',
-					content: '清空后不可找回回,确认清空吗?',
-					success: function(res) {
-						if (res.confirm) {
-							_self.browseHistory = [];
-							uni.removeStorageSync('browseHistory');
-						}
-					}
-				});
-			},
-		}
-	};
-</script>
-
-<style lang="scss" scoped>
-.browseHistory {
-	padding: 20rpx;
-	min-height: 100vh;
-	box-sizing: border-box;
-}
-.selcheck{
-	width: 80rpx;
-	padding-left: 20rpx;
-}
-.topEditOpar{
-	display: flex;
-	padding: 10rpx 20rpx;
-	display: flex;
-	align-items: center;
-	justify-content: space-between;
-	text-align: center;
-	.text{
-		flex: 1;
-		text-align: right;
-		font-weight: bold;
-		font-size: 32rpx;
-	}
-	.opartxt{
-		color: $app-theme-deep-color;
-	}
-}
-
-.list {
-	background-color: #fff;
-	border-radius: 20rpx;
-}
-.list_item{
-	display: flex;
-	align-items: center;
-	// padding: 24rpx 24rpx 24rpx 24rpx;
-		padding: 20rpx 10rpx;
-		border-bottom: 1rpx solid #efefef;
-		.list_left {
-			width: 170rpx;
-			height: 170rpx;
-			position: relative;
-			image {
-				width: 170rpx;
-				height: 170rpx;
-			}
-			.xiajia{
-				position: absolute;
-				width: 90rpx;
-				height: 90rpx;
-				border-radius: 50%;
-				color: #fff;
-				display: flex;
-				align-items: center;
-				justify-content: center;
-				background-color: rgba(0, 0, 0, .5);
-				top: 40rpx;
-				left: 40rpx;
-				transform: rotate(30deg);
-				font-size: 24rpx;
-			}
-		}
-	
-		.list_right {
-			margin-left: 24rpx;
-			width: 100%;
-			.goods_title {
-				font-size: 28rpx;
-				font-weight: 400;
-				color: #171717;
-				height: 80rpx;
-				margin-top: 6rpx;
-			}
-			.goods_titlesm{
-				font-size: 24rpx;
-				font-weight: 400;
-				color: #999;
-				
-			}
-			.right_bottom {
-				display: flex;
-				justify-content: space-between;
-				align-items: center;
-				margin-top: 10rpx;
-	
-				.bottom_left {
-					display: flex;
-					align-items: center;
-					image {
-						width: 32rpx;
-						height: 32rpx;
-						margin-right: 10rpx;
-					}
-	
-					span {
-						font-size: 24rpx;
-						font-weight: 400;
-						color: #696969;
-						line-height: 34rpx;
-					}
-	
-					.bottom_num {
-						font-size: 32rpx;
-						font-weight: 500;
-						color: #fd4558;
-						line-height: 44rpx;
-						margin-right: 8rpx;
-					}
-				}
-	
-				.bottom_right {
-					font-size: 40rpx;
-					font-weight: 400;
-					text-align: center;
-					color: $app-theme-color;
-					// line-height: 56rpx;
-					// width: 56rpx;
-					// height: 56rpx;
-					// background: rgba( $app-theme-color, .6);
-					// border-radius: 30rpx;
-				}
-			}
-		}
-	
-}
-.goodsItem {
-	display: flex;
-	flex: 1;
-}
-</style>

+ 0 - 162
pages-mine/pages/message1.vue

@@ -1,162 +0,0 @@
-<template>
-	<view class="page">
-		<!-- tab -->
-		<IconLabelNav :ops="tabOps" @change="changeTab"></IconLabelNav>
-		<!-- list -->
-		<view class="list">
-			<scroll-view scroll-y="true" style="height: calc(100vh - 350rpx);">
-				<view class="" v-for="(msgCommunity, i) in communityList" :key="i">
-					<view class="card " v-if="currentTab == 0">
-						<view class="date">{{ msgCommunity.time }}</view>
-						<view class="inner community">
-							<u-avatar size="100" src="../../../static/user/1.png"></u-avatar>
-							<view class="right">
-								<view class="info">
-									<view class="name">{{ msgCommunity.name }}</view>
-									<view class="time">刚刚</view>
-								</view>
-								<view class="content">{{ msgCommunity.content }}</view>
-							</view>
-						</view>
-					</view>
-				</view>
-				<view class="" v-for="(msgSystem, j) in systemList" :key="j">
-					<view class="card " v-if="currentTab == 1">
-						<view class="date">{{ msgSystem.time }}</view>
-						<view class="inner system">
-							<view class="title">系统消息</view>
-							<view class="content">
-								<text>盛夏来袭全民动起来系统消息系统消息盛夏来袭全民动起来系统消息系统消息盛夏来袭全民动起来系统消</text>
-								<text>点击查看>></text>
-							</view>
-						</view>
-					</view>
-				</view>
-			</scroll-view>
-		</view>
-	</view>
-</template>
-
-<script>
-import IconLabelNav from '@/components/nav/icon-label-nav.vue';
-export default {
-	components: {
-		IconLabelNav
-	},
-	data() {
-		return {
-			// tab 配置
-			currentTab: 0,
-			tabOps: [
-				{ label: '社区消息', icon: require('@/pages-mine/static/message-community.png'), iconActive: require('@/pages-mine/static/message-community-active.png') },
-				{ label: '系统消息', icon: require('@/pages-mine/static/message-system.png'), iconActive: require('@/pages-mine/static/message-system-active.png') }
-			],
-			// 假数据
-			communityList: [
-				{
-					time: '2021-07-21',
-					name: '演示用户2',
-					content: '点赞了你的帖子“吃好睡好身体的额好'
-				},
-				{
-					time: '2021-07-21',
-					name: '演示用户3',
-					content: '点赞了你的帖子“吃好睡好身体的额好'
-				},
-				{
-					time: '2021-07-21',
-					name: '演示用户4',
-					content: '点赞了你的帖子“吃好睡好身体的额好'
-				}
-			],
-			systemList: [
-				{
-					time: '2021-07-21'
-				},
-				{
-					time: '2021-07-21'
-				},
-				{
-					time: '2021-07-21'
-				}
-			]
-		};
-	},
-	methods: {
-		// 切换tab
-		changeTab(e) {
-			this.currentTab = e.index;
-		}
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-.list {
-	.card {
-		margin-top: 20rpx;
-		margin-bottom: 20rpx;
-		.date {
-			font-size: 14px;
-			font-family: PingFangSC-Regular, PingFang SC;
-			font-weight: 400;
-			color: $app-theme-shop-gray-color;
-			margin-bottom: 16rpx;
-			text-align: center;
-		}
-
-		.inner {
-			margin: 30rpx;
-			padding: 30rpx;
-			background-color: $app-theme-bg-color;
-			box-shadow: $app-theme-shadow;
-			border-radius: 16rpx;
-			.right {
-				width: 80%;
-				margin-left: 20rpx;
-			}
-			.info {
-				display: flex;
-				justify-content: space-between;
-				align-items: flex-end;
-				margin-bottom: 20rpx;
-				.name {
-					font-size: 28rpx;
-					color: $app-theme-text-black-color;
-				}
-				.time {
-					font-size: 24rpx;
-					color: $app-theme-shop-gray-color;
-				}
-			}
-			.content {
-				font-size: 24rpx;
-				color: $app-theme-shop-gray-color;
-			}
-		}
-		.inner.community {
-			display: flex;
-			align-items: center;
-			.content {
-				overflow: hidden;
-				white-space: nowrap;
-				text-overflow: ellipsis;
-			}
-		}
-		.inner.system {
-			.title {
-				font-size: 28rpx;
-				color: $app-theme-text-black-color;
-				margin-bottom: 20rpx;
-			}
-			.content {
-				text:nth-child(2) {
-					font-size: 24rpx;
-					color: $app-theme-color;
-					margin-left: 20rpx;
-				}
-			}
-		}
-	}
-}
-</style>

+ 0 - 204
pages-mine/pages/mine111.vue

@@ -1,204 +0,0 @@
-<!-- 设置 -->
-<template>
-	<view class="page">
-		<!-- 表单 -->
-		<view class="form">
-			<u-form label-position="left" :model="form" ref="form" label-width="180rpx">
-				<u-form-item label="头像">
-					<view class="value" @click="uploadAvatar">
-						<u-avatar style="height: 72rpx;" size="72" src="../../../static/user/1.png"></u-avatar>
-						<u-icon :color="arrowColor" style="margin-left: 20rpx;" size="28" name="arrow-right"></u-icon>
-					</view>
-				</u-form-item>
-				<u-form-item label="昵称">
-					<view class="value" @click="openUsernameModal">
-						<text>{{ username || '无' }}</text>
-						<u-icon :color="arrowColor" style="margin-left: 20rpx;" size="28" name="arrow-right"></u-icon>
-					</view>
-				</u-form-item>
-				<u-form-item label="性别">
-					<view class="value" @click="openSexPicker">
-						<text v-if="sex == '1'">男</text>
-						<text v-if="sex == '0'">女</text>
-						<text v-if="sex == ''">保密</text>
-						<u-icon :color="arrowColor" style="margin-left: 20rpx;" size="28" name="arrow-right"></u-icon>
-					</view>
-				</u-form-item>
-				<u-form-item label="个性签名">
-					<view class="value" @click="openSignatureModal">
-						<text>{{ signature || '无' }}</text>
-						<u-icon :color="arrowColor" style="margin-left: 20rpx;" size="28" name="arrow-right"></u-icon>
-					</view>
-				</u-form-item>
-				<u-form-item label="生日">
-					<view class="value" @click="openDatePicker">
-						<text>{{ date || '1990-01-02' }}</text>
-						<u-icon :color="arrowColor" style="margin-left: 20rpx;" size="28" name="arrow-right"></u-icon>
-					</view>
-				</u-form-item>
-				<u-form-item label="地区">
-					<view class="value" @click="openRegionPicker">
-						<text>{{ '请选择所在地区' }}</text>
-						<u-icon :color="arrowColor" style="margin-left: 20rpx;" size="28" name="arrow-right"></u-icon>
-					</view>
-				</u-form-item>
-				<u-form-item label="设置密码">
-					<view class="value" @click="openPasswordModal">
-						<text></text>
-						<u-icon :color="arrowColor" style="margin-left: 20rpx;" size="28" name="arrow-right"></u-icon>
-					</view>
-				</u-form-item>
-			</u-form>
-		</view>
-		<!-- 按钮 -->
-		<view class="btn">
-			<u-button type="primary" shape="circle" @click="logout"><text>退出登录</text></u-button>
-		</view>
-		<!-- picker -->
-		<u-picker mode="region" v-model="showRegion" :area-code="regionCode" :confirm-color="themeColor"></u-picker>
-		<u-picker mode="time" v-model="showDate" :default-time="date" :confirm-color="themeColor"></u-picker>
-		<u-picker mode="selector" v-model="showSex" :default-selector="sex" :confirm-color="themeColor" :range="range" range-key="label"></u-picker>
-		<!-- modal -->
-		<u-modal v-model="showUsername" title="修改昵称" show-cancel-button :confirm-color="themeColor">
-			<view class="slot-content">
-				<u-field label-width="60" focus placeholder="请输入昵称" clearable :border-bottom="false" v-model="username" label="昵称" required></u-field>
-			</view>
-		</u-modal>
-		<u-modal v-model="showSignature" title="修改个性签名" show-cancel-button :confirm-color="themeColor">
-			<view class="slot-content">
-				<u-field
-					label-width="120"
-					focus
-					placeholder="请输入个性签名"
-					clearable
-					:border-bottom="false"
-					v-model="signature"
-					label="个性签名"
-					required
-					auto-height
-					type="textarea"
-				></u-field>
-			</view>
-		</u-modal>
-		<u-modal v-model="showPassword" title="修改密码" show-cancel-button :confirm-color="themeColor">
-			<view class="slot-content">
-				<u-field label-width="120" focus placeholder="请输入密码" clearable v-model="password" label="密码" required auto-height></u-field>
-				<u-field label-width="120" placeholder="请再次输入密码" clearable :border-bottom="false" v-model="passwordAgain" label="确认密码" required auto-height></u-field>
-			</view>
-		</u-modal>
-	</view>
-</template>
-<script>
-export default {
-	data() {
-		return {
-			arrowColor: this.$appTheme.appThemeTextGrayColor,
-			themeColor: this.$appTheme.appThemeColor,
-			// picker
-			showRegion: false,
-			showDate: false,
-			showSex: false,
-			range: [{ label: '男', value: '1' }, { label: '女', value: '0' }, { label: '保密', value: '' }],
-			// modal
-			showUsername: false,
-			showSignature: false,
-			showPassword: false,
-			// 默认回显
-			regionCode: '',
-			date: '',
-			sex: '',
-			username: '',
-			signature: '',
-			// 表单
-			form: {},
-			// 上传地址
-			uploadUrl: ''
-		};
-	},
-	onLoad(options) {},
-	methods: {
-		// 上传头像
-		uploadAvatar() {
-			uni.chooseImage({
-				count: 1,
-				sizeType: ['original', 'compressed'],
-				sourceType: ['album', 'camera'],
-				success(res) {
-					console.log(JSON.stringify(res.tempFilePaths));
-				}
-			});
-		},
-
-		// 修改昵称
-		openUsernameModal() {
-			this.showUsername = true;
-		},
-
-		// 选择性别
-		openSexPicker() {
-			this.showSex = true;
-		},
-
-		// 修改个性签名
-		openSignatureModal() {
-			this.showSignature = true;
-		},
-
-		// 选择日期
-		openDatePicker() {
-			this.showDate = true;
-		},
-
-		// 选择地区
-		openRegionPicker() {
-			this.showRegion = true;
-		},
-
-		// 设置密码
-		openPasswordModal() {
-			this.showPassword = true;
-		},
-
-		// 退出登录
-		logout() {
-			uni.showModal({
-				title: '提示',
-				content: '是否退出当前账号?',
-				confirmColor: this.themeColor,
-				success(res) {
-					if (res.confirm) {
-						uni.removeStorageSync('IS_LOGIN');
-						uni.navigateBack({
-							delta: 1
-						});
-					}
-				}
-			});
-		}
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-.page {
-	padding: 24rpx 30rpx;
-	background-color: $app-theme-bg-color;
-	.form {
-		.value {
-			display: flex;
-			align-items: center;
-			justify-content: flex-end;
-			font-size: 28rpx;
-			font-family: PingFangSC-Regular, PingFang SC;
-			font-weight: 400;
-			color: $app-theme-card-gray-deep-color;
-		}
-	}
-}
-.btn {
-	padding: 60rpx 0rpx;
-}
-.slot-content {
-	padding: 30rpx;
-}
-</style>

+ 322 - 219
pages-mine/pages/setting.vue

@@ -1,229 +1,332 @@
 <template>
-	<view class="page">
-		<!-- 表单 -->
-		<view class="form">
-			<u-form label-position="left" :model="form" ref="form" label-width="180rpx">
-				<u-form-item label="头像">
-					<!--  @click="uploadAvatar" -->
-					<view class="value avatarbox">
-						<!-- <u-avatar style="height: 72rpx;" size="72" src="../../../static/user/1.png"></u-avatar> -->
-						<button open-type="chooseAvatar" class="avatarBtn" @chooseavatar="onChooseavatar" >
-							<u-avatar style="height: 72rpx;" size="72" :src="userInfo.avatar"></u-avatar>
-							<!-- <u-icon :color="arrowColor" style="margin-left: 20rpx;" size="28" name="arrow-right"></u-icon> -->
-						</button>
-					</view>
-				</u-form-item>
-				<u-form-item label="昵称">
-					<view class="value" @click="openUsernameModal">
-						<text>{{ userInfo.nickname || '无' }}</text>
-						<u-icon :color="arrowColor" style="margin-left: 20rpx;" size="28" name="arrow-right"></u-icon>
-					</view>
-				</u-form-item>
-				<u-form-item label="收货地址">
-					<view class="value" @click="$u.route({ url: '/pages-mine/pages/address/list' })">
-						<text>{{ '设置收货地址' }}</text>
-						<u-icon :color="arrowColor" style="margin-left: 20rpx;" size="28" name="arrow-right"></u-icon>
-					</view>
-				</u-form-item>
-			</u-form>
-		</view>
-		<!-- 按钮 -->
-		<view class="btn">
-			<u-button type="primary" shape="circle" @click="logout"><text>退出登录</text></u-button>
-		</view>
-		
-		<!-- modal -->
-		<u-modal ref="showUsernameRef" v-model="showUsername" title="昵称修改" show-cancel-button :confirm-color="themeColor"  :async-close="true" @confirm="changeNickname">
-			<view class="slot-content">
-				<u-field label-width="60" placeholder="请输入昵称" clearable :border-bottom="false" v-model="edit.nickname" label="昵称" required></u-field>
-			</view>
-		</u-modal>
-
-	</view>
+    <view class="page">
+        <!-- 表单 -->
+        <view class="form">
+            <u-form label-position="left" :model="form" ref="form" label-width="180rpx">
+                <!-- 用户ID -->
+                <u-form-item label="用户ID">
+                    <view class="value id-box">
+                        <text>{{ userInfo.userId }}</text>
+                        <u-button size="mini" type="success" plain class="copy-btn" @click="copyUserId">复制</u-button>
+                    </view>
+                </u-form-item>
+
+                <!-- 头像 -->
+                <u-form-item label="头像">
+                    <view class="value avatarbox">
+                        <button open-type="chooseAvatar" class="avatarBtn" @chooseavatar="onChooseavatar">
+                            <u-avatar style="height: 72rpx;" size="72" :src="userInfo.imgPath"></u-avatar>
+                        </button>
+                    </view>
+                </u-form-item>
+
+                <!-- 昵称 -->
+                <u-form-item label="昵称">
+                    <view class="value nickname-input">
+                        <input type="nickname" v-model="userInfo.nickName" placeholder="请输入昵称"
+                            placeholder-style="color: #696969" @input="onNicknameInput" />
+                    </view>
+                </u-form-item>
+
+                <!-- 手机号 -->
+                <u-form-item label="手机号">
+                    <view class="value">
+                        <!-- 未绑定手机号,显示获取手机号按钮 -->
+                        <button class="get-phone-btn" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">
+                            <text class="common-text-2" v-if="userInfo.mobile">{{ userInfo.mobile }}</text>
+                            <text class="common-text" v-else>未绑定</text>
+                            <u-icon :color="arrowColor" style="margin-left: 20rpx;" size="28"
+                                name="arrow-right"></u-icon>
+                        </button>
+                    </view>
+                </u-form-item>
+            </u-form>
+        </view>
+
+        <!-- 提交按钮 -->
+        <view class="btn">
+            <u-button type="primary" shape="circle" :loading="submitting" @click="submitChanges">提交</u-button>
+        </view>
+    </view>
 </template>
+
 <script>
-import { hex_sha1 } from '@/utils/sha1.js'
-import { objKeySort,naviBackEmit } from '@/utils/tools.js'
 export default {
-	data() {
-		return {
-			arrowColor: this.$appTheme.appThemeTextGrayColor,
-			themeColor: this.$appTheme.appThemeColor,
-			// 用户信息
-			userInfo:{
-				nickname: '',
-				avatar: ''
-			},
-			edit:{
-				nickname: '',
-				avatar: ''
-			},
-			updateData:true,
-			secret:'yrb1vdc2qc',
-			// modal
-			showUsername: false,
-			// 默认回显
-			
-			username: '',
-			signature: '',
-			// 表单
-			form: {},
-			// 上传地址
-			uploadUrl: ''
-		};
-	},
-	onLoad(options) {
-		this.getUserInfo();
-	},
-	methods: {
-		getUserInfo(){
-			this.$u.api.getUserBaseInfoAjax().then(({code,data}) => {
-				console.log(data);
-				if(code==1){
-					this.userInfo = data;
-					this.edit = {...data};
-				}
-			});
-		},
-		// 上传头像
-		uploadAvatar() {
-			uni.chooseImage({
-				count: 1,
-				sizeType: ['original', 'compressed'],
-				sourceType: ['album', 'camera'],
-				success(res) {
-					console.log(JSON.stringify(res.tempFilePaths));
-				}
-			});
-		},
-		
-		// 修改昵称
-		openUsernameModal() {
-			this.showUsername = true;
-		},
-		// 设置微信头像
-		onChooseavatar(e) {
-			console.log(e);
-			let that = this;
-			this.edit.avatar = e.detail.avatarUrl;
-			let formData = {
-				target: "oss",
-				type: 'image',
-			}
-			let sign = hex_sha1(that.secret + objKeySort(formData));
-			console.log(sign);
-			uni.showLoading({
-				title: '头像上传中'
-			})
-			uni.uploadFile({
-				url: this.$env.apiUrl + "/api/client/index/upload",
-				filePath: e.detail.avatarUrl,
-				name: 'file',
-				formData:{
-					...formData,
-					file:e.detail.avatarUrl,
-				},
-				header: {
-					'Content-Type': 'multipart/form-data',
-					sign,
-				},
-				success(res) {
-					let response = JSON.parse(res.data);
-					if (response.code == 1) {
-						that.edit.avatar = response.data.full_url;
-						// uni.$u.toast('上传成功!');
-						that.submit();
-					}else{
-						uni.$u.toast('上传失败,请稍后重试')
-					}
-				},
-				fail(error) {
-					uni.$u.toast('上传失败,请稍后重试')
-					console.log(' 上传文件失败', error)
-				},
-			})
-		},
-		// 退出登录
-		logout() {
-			uni.showModal({
-				title: '提示',
-				content: '是否退出当前账号?',
-				confirmColor: this.themeColor,
-				success(res) {
-					if (res.confirm) {
-						uni.removeStorageSync('token');
-						uni.navigateBack({
-							delta: 1
-						});
-					}
-				}
-			});
-		},
-		changeNickname(){
-			if (!this.edit.nickname) {
-				this.$refs.showUsernameRef.clearLoading();
-				uni.$u.toast('请输入昵称');
-				return false; 
-			}
-			this.submit();
-		},
-		submit() {
-			this.$nextTick(() => {
-				// if (!this.edit.avatar && !this.edit.nickname) {
-				// 	return uni.$u.toast('请设置头像和昵称')
-				// }
-				let param = {...this.edit}
-				this.$u.api.setUserBaseInfoAjax(param).then(({code,data}) => {
-					if (code == 1) {
-						uni.$u.toast('设置成功');
-						this.showUsername = false;
-						this.userInfo = {...param};
-						setTimeout(() => {
-							// naviBackEmit('getUserInfo')
-							uni.$emit("getUserInfo");
-						}, 1000)
-					}
-				})
-			})
-		},
-	}
-};
+    data() {
+        return {
+            arrowColor: this.$appTheme.appThemeTextGrayColor,
+            themeColor: this.$appTheme.appThemeColor,
+            userInfo: {
+                userId: '125885222658442698874444',
+                nickName: '',
+                imgPath: '',
+                mobile: ''
+            },
+            originalInfo: {}, // 保存原始信息,用于对比是否有修改
+            submitting: false, // 提交状态
+            uploading: false, // 添加上传状态
+        }
+    },
+    onLoad() {
+        this.getUserInfo()
+    },
+    methods: {
+        // 获取用户信息
+        getUserInfo() {
+            uni.$u.http.get('/token/user/detail').then(res => {
+                if (res.code == 200) {
+                    this.userInfo = res.data
+                }
+            })
+        },
+
+        // 复制用户ID
+        copyUserId() {
+            uni.setClipboardData({
+                data: this.userInfo.userId,
+                success: () => {
+                    uni.$u.toast('复制成功')
+                }
+            })
+        },
+
+        // 昵称输入
+        onNicknameInput(e) {
+            this.userInfo.nickName = e.detail.value
+            this.updateUserInfo()
+        },
+
+        // 选择并上传头像
+        async onChooseavatar(e) {
+            const tempFilePath = e.detail.avatarUrl
+            if (!tempFilePath) {
+                return uni.$u.toast('获取头像失败')
+            }
+
+            try {
+                this.uploading = true
+                uni.showLoading({
+                    title: '上传中...',
+                    mask: true
+                })
+
+                // 上传头像
+                const uploadRes = await this.uploadFile(tempFilePath)
+
+                if (uploadRes.code === 200) {
+                    this.userInfo.imgPath = uploadRes.data
+                    uni.$u.toast('头像上传成功')
+                } else {
+                    throw new Error(uploadRes.msg || '上传失败')
+                }
+            } catch (error) {
+                uni.$u.toast('头像上传失败,请重试')
+
+                // 还原头像
+                this.userInfo.imgPath = this.originalInfo.imgPath
+            } finally {
+                this.uploading = false
+                uni.hideLoading()
+            }
+        },
+
+        // 文件上传方法
+        uploadFile(filePath) {
+            return new Promise((resolve, reject) => {
+                uni.uploadFile({
+                    url: this.$u.http.config.baseUrl + '/token/user/avatarUpload',
+                    filePath: filePath,
+                    name: 'file',
+                    header: {
+                        'Authorization': 'Bearer ' + uni.getStorageSync('token')
+                    },
+                    success: (uploadFileRes) => {
+                        try {
+                            // 解析响应数据
+                            const res = JSON.parse(uploadFileRes.data)
+                            resolve(res)
+                        } catch (e) {
+                            reject(new Error('解析响应失败'))
+                        }
+                    },
+                    fail: (error) => {
+                        reject(error)
+                    }
+                })
+            })
+        },
+
+        // 跳转换绑手机号页面
+        goToChangeMobile() {
+            uni.navigateTo({
+                url: '/pages-mine/pages/change-mobile/index'
+            })
+        },
+
+        // 获取手机号
+        async getPhoneNumber(e) {
+            if (e.detail.errMsg !== 'getPhoneNumber:ok') {
+                return uni.$u.toast('获取手机号失败')
+            }
+
+            try {
+                uni.showLoading({
+                    title: '手机号获取中'
+                })
+
+                // 调用后端接口解密手机号
+                uni.$u.http.post('/token/user/wxMobileUpdate', { code: e.detail.code }).then(res => {
+                    if (res.code === 200) {
+                        // 更新本地用户信息
+                        this.userInfo.mobile = res.data.mobile
+
+                        uni.showToast({
+                            title: '绑定成功',
+                            icon: 'success'
+                        })
+                    } else {
+                        uni.$u.toast('手机号绑定失败')
+                    }
+                })
+            } catch (error) {
+                uni.$u.toast('手机号绑定失败')
+            } finally {
+                uni.hideLoading()
+            }
+        },
+
+        //更新用户信息
+        updateUserInfo() {
+            uni.$u.http.post('/token/user/wxBasicUpdate', {
+                nickName: this.userInfo.nickName,
+                imgPath: this.userInfo.imgPath
+            }).then(res => {
+                console.log(res)
+            })
+        },
+
+        // 提交修改
+        async submitChanges() {
+            if (this.uploading) {
+                return uni.$u.toast('头像上传中,请稍候...')
+            }
+
+            if (!this.hasChanges) return
+
+            if (!this.userInfo.nickName.trim()) {
+                return uni.$u.toast('请输入昵称')
+            }
+
+            this.submitting = true
+            try {
+                const { code, data } = await this.$u.api.setUserBaseInfoAjax({
+                    nickName: this.userInfo.nickName,
+                    imgPath: this.userInfo.imgPath
+                })
+
+                if (code === 1) {
+                    uni.$u.toast('保存成功')
+                    this.originalInfo = { ...this.userInfo }
+                    uni.$emit("getUserInfo")
+                    setTimeout(() => {
+                        uni.navigateBack()
+                    }, 1500)
+                }
+            } catch (error) {
+                uni.$u.toast('保存失败,请重试')
+            } finally {
+                this.submitting = false
+            }
+        },
+
+        // 更新计算属性中的判断逻辑
+        computed: {
+            hasChanges() {
+                return !this.uploading && (
+                    this.userInfo.nickName !== this.originalInfo.nickName ||
+                    this.userInfo.imgPath !== this.originalInfo.imgPath
+                )
+            }
+        }
+    }
+}
 </script>
 
 <style lang="scss" scoped>
 .page {
-	padding: 24rpx 30rpx;
-	background-color: $app-theme-bg-color;
-	.form {
-		.value {
-			display: flex;
-			align-items: center;
-			justify-content: flex-end;
-			font-size: 28rpx;
-			font-family: PingFangSC-Regular, PingFang SC;
-			font-weight: 400;
-			color: $app-theme-card-gray-deep-color;
-		}
-	}
-}
-.btn {
-	padding: 60rpx 0rpx;
-}
-.slot-content {
-	padding: 30rpx;
-}
-.avatarbox{
-	
-}
-.avatarBtn{
-	border:none;
-	background-color: transparent;
-	display: inline-flex;
-	align-items: center;
-	padding: 0;
-	margin: 0;
-	width:75rpx;
-	height:75rpx;
-	border-radius: 50%;
+    padding: 24rpx 30rpx;
+    background-color: $app-theme-bg-color;
+    min-height: 100vh;
+    display: flex;
+    flex-direction: column;
+
+    .form {
+        flex: 1;
+        background: #FFFFFF;
+        border-radius: 12rpx;
+        padding: 20rpx 0;
+
+        .value {
+            display: flex;
+            align-items: center;
+            justify-content: flex-end;
+            font-size: 28rpx;
+            color: $app-theme-card-gray-deep-color;
+
+            &.nickname-input {
+                input {
+                    text-align: right;
+                    width: 400rpx;
+                    font-size: 28rpx;
+                }
+
+                .wechat-tag {
+                    font-size: 24rpx;
+                    color: #999;
+                    margin-left: 12rpx;
+                }
+            }
+
+            &.id-box {
+                .copy-btn {
+                    margin-left: 20rpx;
+                    padding: 0 20rpx;
+                    height: 48rpx !important;
+                    line-height: 44rpx !important;
+                }
+            }
+
+            .phone-box {
+                display: flex;
+                align-items: center;
+            }
+
+            .get-phone-btn {
+                background: none;
+                border: none;
+                padding: 0;
+                margin: 0;
+                display: flex;
+                align-items: center;
+                font-size: 28rpx;
+
+                &::after {
+                    border: none;
+                }
+            }
+        }
+    }
+
+    .avatarBtn {
+        border: none;
+        background-color: transparent;
+        display: inline-flex;
+        align-items: center;
+        padding: 0;
+        margin: 0;
+        width: 75rpx;
+        height: 75rpx;
+        border-radius: 50%;
+    }
 }
 </style>

+ 0 - 30
pages.json

@@ -176,13 +176,6 @@
 		// 个人中心副包
 		"root": "pages-mine",
 		"pages": [
-			// 优惠券
-			{
-				"path": "pages/discounts",
-				"style": {
-					"navigationBarTitleText": "优惠券"
-				}
-			},
 			// 收获地址
 			{
 				"path": "pages/address/list",
@@ -197,29 +190,6 @@
 					"navigationBarTitleText": "地址更新"
 				}
 			},
-			// 我的收藏
-			{
-				"path": "pages/collection",
-				"style": {
-					"navigationBarTitleText": "收藏",
-					"enablePullDownRefresh": true // 开启下拉刷新
-				}
-			},
-			// 足迹(浏览记录)
-			{
-				"path": "pages/history",
-				"style": {
-					"navigationBarTitleText": "足迹"
-				}
-			},
-			// 我的消息
-			// {
-			// 	"path": "pages/message"
-			// },
-			// 个人主页
-			// {
-			// 	"path": "pages/mine"
-			// },
 			// 设置
 			{
 				"path": "pages/setting",

+ 1 - 2
pages/home/components/BookItem.vue

@@ -49,7 +49,7 @@
 				this.$refs.deleteDialog.openPopup()
 			},
 			confirmDelete() {
-				this.$emit('delete', this.book.isbn)
+				this.$emit('delete', this.book)
 			},
 			// /api/token/order/addReduceNum
 			addReduceNum(changeNum) {
@@ -64,7 +64,6 @@
 				})
 			},
 			onQuantityChange(data) {
-				console.log(this.book, 'xxxxx')
 				uni.$u.http.post('/token/order/changeNum', {
 					orderId: this.book.orderId,
 					isbn: this.book.isbn,

+ 20 - 13
pages/home/components/ScanBookList.vue

@@ -10,7 +10,7 @@
 			<BookItem v-for="(book,index) in bookList" :key="book.isbn" :book="book" @delete="handleDeleteBook"
 				@quantity-change="handleQuantityChange" />
 		</view>
-		
+
 		<view class="link-wrap flex-a">
 			<text class="link-btn flex-1" @click="goToScannedBooks">扫过的书 ></text>
 			<text class="link-btn flex-1" @click="goToRules">卖书规则 ></text>
@@ -42,13 +42,20 @@
 					this.books = newVal
 				},
 				deep: true,
-				immediate:true
+				immediate: true
 			}
 		},
 		methods: {
-			handleDeleteBook(bookId) {
-				this.books = this.books.filter(book => book.isbn !== bookId)
-				this.$emit('updateBooks', this.books)
+			handleDeleteBook(book) {
+				uni.$u.http.post('/token/order/removeBook', {
+					orderId: book.orderId,
+					isbn: book.isbn
+				}).then(res => {
+					if (res.code == 200) {
+						this.$u.toast('删除成功')
+						this.$emit('deleted', this.book)
+					}
+				})
 			},
 			handleQuantityChange(data) {
 				const book = this.books.find(book => book.isbn === data.isbn)
@@ -61,14 +68,14 @@
 				this.$emit('next')
 			},
 			goToScannedBooks() {
-			    uni.navigateTo({
-			        url: '/pages-home/pages/scaned-book'
-			    })
+				uni.navigateTo({
+					url: '/pages-home/pages/scaned-book'
+				})
 			},
 			goToRules() {
-			    uni.navigateTo({
-			        url: '/pages/rules/index'
-			    })
+				uni.navigateTo({
+					url: '/pages/rules/index'
+				})
 			},
 		}
 	}
@@ -85,12 +92,12 @@
 			color: #FF8A4B;
 			line-height: 36rpx;
 		}
-		
+
 		.link-wrap {
 			gap: 20rpx;
 			box-sizing: border-box;
 			margin-top: 20rpx;
-		
+
 			.link-btn {
 				height: 80rpx;
 				background: #ffffff;

+ 365 - 363
pages/home/index.vue

@@ -1,371 +1,373 @@
 <template>
-	<view class="container" :style="{ background: containerBg }" :class="bookList.length ? 'book-list' : 'no-list'">
-		<u-navbar :is-back="false" :border-bottom="false" :background="{ background: navbarBackground }">
-			<text class="nav-title">卖书给书嗨</text>
-		</u-navbar>
-
-		<not-scanned v-if="!bookList.length"></not-scanned>
-		<scan-book-list v-else @updateBooks="updateBooksList" :bookList="bookList"></scan-book-list>
-		<!-- 底部固定按钮 -->
-		<view class="bottom-fixed">
-			<view class="btn-wrap mb-20">
-				<button class="scan-btn flex-1" @click="handleScan">
-					<u-icon name="scan" color="#FFFFFF" size="40"></u-icon>
-					<text>扫码卖书</text>
-				</button>
-				<button class="isbn-btn flex-1" @click="goToInputISBN">
-					<u-icon name="edit-pen" color="#4CD964" size="40"></u-icon>
-					<text>输入ISBN</text>
-				</button>
-			</view>
-
-			<view class="flex-a flex-j-b pad-20" style="padding-top:0 ;" v-if="bookList.length">
-				<view class="left-info">
-					<view class="flex-a common-text">
-						共<text class="color-red">{{ totalBooks }}</text>件
-						预估回收价 <text class="color-red">¥{{ totalPrice || 0 }}</text>
-					</view>
-					<text class="common-text tip">*旧书预估价格满30元起收</text>
-				</view>
-
-				<button class="scan-btn next-btn" @click="onNext">下一步</button>
-			</view>
-
-			<view class="service-icons" v-if="bookList.length">
-				<view class="icon-item" v-for="(item, index) in serviceItems" :key="index" @tap="showServiceGuarantee">
-					<u-icon :name="item.icon" size="32" color="#FFF6ED"></u-icon>
-					<text style="margin-left: 6rpx;">{{ item.text }}</text>
-				</view>
-			</view>
-		</view>
-
-		<InputIsbn ref="isbnPopup" />
-		<!-- 套装书说明弹窗 -->
-		<CommonDialog ref="setBookDialog" title="套装书说明" :showCancel="false">
-			<text>套装书(ISBN码相同的系列书箱)只需扫描其中一册,扫码价即套装价。打包时请把所有单册统在一起或放在一个袋子里寄出。</text>
-		</CommonDialog>
-
-		<!-- 暂不回收弹窗 -->
-		<CommonDialog ref="notAcceptDialog" title="暂不回收" :showCancel="false">
-			<text>这本书暂时不回收,请您过段时间再来试试~</text>
-		</CommonDialog>
-
-		<!-- 暂无信息弹窗 -->
-		<CommonDialog ref="noInfoDialog" title="暂无信息" :showCancel="false">
-			<text>抱歉,没有该书的信息,书喵会定期补充图书信息,请您过段时间再来试试~</text>
-		</CommonDialog>
-
-		<!-- 扫累了弹窗 -->
-		<CommonDialog ref="tiredDialog" title="暂不回收" :showCancel="false">
-			<text>扫累了,休息休息吧~</text>
-		</CommonDialog>
-
-		<!-- 该书超出最大回收本数  maxAcceptDialog-->
-		<CommonDialog ref="maxAcceptDialog" title="提示" :showCancel="false">
-			<text>该书超出最大回收本数</text>
-		</CommonDialog>
-
-		<!-- 单个订单最多40本书  orderMaxNumDialog-->
-		<CommonDialog ref="orderMaxNumDialog" title="提示" :showCancel="false">
-			<text>单个订单最多40本书</text>
-		</CommonDialog>
-	</view>
+    <view class="container" :style="{ background: containerBg }" :class="bookList.length ? 'book-list' : 'no-list'">
+        <u-navbar :is-back="false" :border-bottom="false" :background="{ background: navbarBackground }">
+            <text class="nav-title">卖书给书嗨</text>
+        </u-navbar>
+
+        <not-scanned v-if="!bookList.length"></not-scanned>
+        <scan-book-list v-else @updateBooks="updateBooksList" @deleted="getLastOrder"
+            :bookList="bookList"></scan-book-list>
+        <!-- 底部固定按钮 -->
+        <view class="bottom-fixed">
+            <view class="btn-wrap mb-20">
+                <button class="scan-btn flex-1" @click="handleScan">
+                    <u-icon name="scan" color="#FFFFFF" size="40"></u-icon>
+                    <text>扫码卖书</text>
+                </button>
+                <button class="isbn-btn flex-1" @click="goToInputISBN">
+                    <u-icon name="edit-pen" color="#4CD964" size="40"></u-icon>
+                    <text>输入ISBN</text>
+                </button>
+            </view>
+
+            <view class="flex-a flex-j-b pad-20" style="padding-top:0 ;" v-if="bookList.length">
+                <view class="left-info">
+                    <view class="flex-a common-text">
+                        共<text class="color-red">{{ totalBooks }}</text>件
+                        预估回收价 <text class="color-red">¥{{ totalPrice || 0 }}</text>
+                    </view>
+                    <text class="common-text tip">*旧书预估价格满30元起收</text>
+                </view>
+
+                <button class="scan-btn next-btn" @click="onNext">下一步</button>
+            </view>
+
+            <view class="service-icons" v-if="bookList.length">
+                <view class="icon-item" v-for="(item, index) in serviceItems" :key="index" @tap="showServiceGuarantee">
+                    <u-icon :name="item.icon" size="32" color="#FFF6ED"></u-icon>
+                    <text style="margin-left: 6rpx;">{{ item.text }}</text>
+                </view>
+            </view>
+        </view>
+
+        <InputIsbn ref="isbnPopup" />
+        <!-- 套装书说明弹窗 -->
+        <CommonDialog ref="setBookDialog" title="套装书说明" :showCancel="false">
+            <text>套装书(ISBN码相同的系列书箱)只需扫描其中一册,扫码价即套装价。打包时请把所有单册统在一起或放在一个袋子里寄出。</text>
+        </CommonDialog>
+
+        <!-- 暂不回收弹窗 -->
+        <CommonDialog ref="notAcceptDialog" title="暂不回收" :showCancel="false">
+            <text>这本书暂时不回收,请您过段时间再来试试~</text>
+        </CommonDialog>
+
+        <!-- 暂无信息弹窗 -->
+        <CommonDialog ref="noInfoDialog" title="暂无信息" :showCancel="false">
+            <text>抱歉,没有该书的信息,书喵会定期补充图书信息,请您过段时间再来试试~</text>
+        </CommonDialog>
+
+        <!-- 扫累了弹窗 -->
+        <CommonDialog ref="tiredDialog" title="暂不回收" :showCancel="false">
+            <text>扫累了,休息休息吧~</text>
+        </CommonDialog>
+
+        <!-- 该书超出最大回收本数  maxAcceptDialog-->
+        <CommonDialog ref="maxAcceptDialog" title="提示" :showCancel="false">
+            <text>该书超出最大回收本数</text>
+        </CommonDialog>
+
+        <!-- 单个订单最多40本书  orderMaxNumDialog-->
+        <CommonDialog ref="orderMaxNumDialog" title="提示" :showCancel="false">
+            <text>单个订单最多40本书</text>
+        </CommonDialog>
+    </view>
 </template>
 
 <script>
-	import notScanned from './components/notScanned.vue'
-	import InputIsbn from './components/InputIsbn.vue';
-	import ScanBookList from './components/ScanBookList.vue';
-	import CommonDialog from '@/components/common-dialog.vue';
-	export default {
-		components: {
-			notScanned,
-			InputIsbn,
-			ScanBookList,
-			CommonDialog
-		},
-		data() {
-			return {
-				collapseState: {
-					step1: false,
-					step3: false
-				},
-				scrollTop: 0,
-				bookList: [],
-				serviceItems: [{
-						icon: 'gift',
-						text: '免费退回'
-					},
-					{
-						icon: 'clock',
-						text: '24小时验'
-					},
-					{
-						icon: 'rmb-circle',
-						text: '极速打款'
-					},
-					{
-						icon: 'shield',
-						text: '卖亏必赔'
-					}
-				]
-			}
-		},
-		computed: {
-			navbarBackground() {
-				if (this.scrollTop > 0) {
-					return 'linear-gradient(180deg, #4CD964 0%, #5ff178 100%)'
-				}
-				return 'transparent'
-			},
-			containerBg() {
-				return this.bookList.length > 0 ? 'linear-gradient(180deg, #4CD964 0%, #F8F8F8 25%)' :
-					'linear-gradient(180deg, #4CD964 0%, #ffffff 25%)'
-			},
-			containerPb() {
-				return this.bookList.length > 0 ? '300rpx' : '110rpx'
-			},
-			totalBooks() {
-				return this.bookList.reduce((sum, book) => sum + (book.num || 1), 0)
-			},
-			totalPrice() {
-				return this.bookList.reduce((sum, book) => sum + book.recycleMoney * (book.num || 1), 0).toFixed(2)
-			}
-		},
-		onPageScroll(e) {
-			this.$nextTick(() => {
-				this.scrollTop = e.scrollTop
-			})
-		},
-		methods: {
-			//提交
-			onNext() {
-				if (this.totalPrice < 30) {
-					uni.showToast({
-						title: '预估价格需满30元才能回收',
-						icon: 'none'
-					})
-					return
-				}
-
-				let orderId = this.bookList[0].orderId
-				//预提交
-				uni.$u.http.get('/token/order/preSubmit?orderId=' + orderId).then(res => {
-					if (res.code == 200) {
-						if (res.data.code == 1 || res.data.code == 2) {
-							uni.navigateTo({
-								url: "/pages-home/pages/book-order"
-							})
-						} else {
-							uni.showToast({
-								icon: 'none',
-								title: res.msg
-							})
-						}
-					}
-				})
-			},
-
-			updateBooksList(data) {
-				this.bookList = data
-			},
-
-			toggleCollapse(step) {
-				this.$set(this.collapseState, step, !this.collapseState[step])
-			},
-			handleScan() {
-				uni.scanCode({
-					scanType: ['barCode'],
-					success: (res) => {
-						this.checkBookISBN(res.result)
-					},
-					fail: () => {
-						uni.showToast({
-							title: '扫码失败',
-							icon: 'none'
-						})
-					}
-				})
-			},
-			checkBookISBN(isbn) {
-				uni.$u.http.get('/token/order/scanIsbn?isbn=' + isbn).then(res => {
-					if (res.code == 200) {
-						let code = res.data.code
-						if (code == 1) {
-							res.data.num = 1
-							this.bookList.push(res.data)
-						} else if (code == 2) {
-							let item = this.bookList.find(v => v.isbn === isbn)
-							item.num = item.num + 1
-						} else {
-							this.handleBookCode(res.data.code)
-						}
-					}
-				})
-			},
-			//处理扫码之后不同的状态 0-扫码频繁 1-成功 2-本单已有该书,数量+1  3-没有该书 4-本书暂不回收 5-超过每单最大可卖数量  6-单个订单最多40本书
-			handleBookCode(code) {
-				if (code == 1) {
-					this.bookList.push()
-				}
-				let tempKeys = ['tiredDialog', '', '', 'noInfoDialog', "notAcceptDialog", 'maxAcceptDialog',
-					'orderMaxNumDialog'
-				]
-				let key = tempKeys[code]
-				if (key) {
-					this.$refs[key].openPopup()
-				}
-			},
-			//获取当前用户未提交订单 /api/token/order/lastOrder
-			getLastOrder() {
-				uni.$u.http.get('/token/order/lastOrder').then(res => {
-					if (res.code == 200) {
-						this.bookList = res.data ? res.data.orderDetailList.map(v => {
-							v.orderId = res.data.orderId
-							return v
-						}) : []
-					}
-				})
-			},
-
-			goToScannedBooks() {
-				uni.navigateTo({
-					url: '/pages-home/pages/scaned-book'
-				})
-			},
-			goToRules() {
-				uni.navigateTo({
-					url: '/pages/rules/index'
-				})
-			},
-			showServiceGuarantee() {
-				this.$refs.serviceGuarantee.openPopup()
-			},
-			goToInputISBN() {
-				this.$refs.isbnPopup.openPopup()
-			}
-		},
-		mounted() {
-			setTimeout(() => {
-				this.getLastOrder()
-			}, 100)
-		}
-	}
+import notScanned from './components/notScanned.vue'
+import InputIsbn from './components/InputIsbn.vue';
+import ScanBookList from './components/ScanBookList.vue';
+import CommonDialog from '@/components/common-dialog.vue';
+export default {
+    components: {
+        notScanned,
+        InputIsbn,
+        ScanBookList,
+        CommonDialog
+    },
+    data() {
+        return {
+            collapseState: {
+                step1: false,
+                step3: false
+            },
+            scrollTop: 0,
+            bookList: [],
+            serviceItems: [{
+                icon: 'gift',
+                text: '免费退回'
+            },
+            {
+                icon: 'clock',
+                text: '24小时验'
+            },
+            {
+                icon: 'rmb-circle',
+                text: '极速打款'
+            },
+            {
+                icon: 'shield',
+                text: '卖亏必赔'
+            }
+            ]
+        }
+    },
+    computed: {
+        navbarBackground() {
+            if (this.scrollTop > 0) {
+                return 'linear-gradient(180deg, #4CD964 0%, #5ff178 100%)'
+            }
+            return 'transparent'
+        },
+        containerBg() {
+            return this.bookList.length > 0 ? 'linear-gradient(180deg, #4CD964 0%, #F8F8F8 25%)' :
+                'linear-gradient(180deg, #4CD964 0%, #ffffff 25%)'
+        },
+        containerPb() {
+            return this.bookList.length > 0 ? '300rpx' : '110rpx'
+        },
+        totalBooks() {
+            return this.bookList.reduce((sum, book) => sum + (book.num || 1), 0)
+        },
+        totalPrice() {
+            return this.bookList.reduce((sum, book) => sum + book.recycleMoney * (book.num || 1), 0).toFixed(2)
+        }
+    },
+    onPageScroll(e) {
+        this.$nextTick(() => {
+            this.scrollTop = e.scrollTop
+        })
+    },
+    methods: {
+        //提交
+        onNext() {
+            if (this.totalPrice < 30) {
+                uni.showToast({
+                    title: '预估价格需满30元才能回收',
+                    icon: 'none'
+                })
+                return
+            }
+
+            let orderId = this.bookList[0].orderId
+            //预提交
+            uni.$u.http.get('/token/order/preSubmit?orderId=' + orderId).then(res => {
+                if (res.code == 200) {
+                    if (res.data.code == 1 || res.data.code == 2) {
+                        uni.navigateTo({
+                            url: "/pages-home/pages/book-order"
+                        })
+                        uni.setStorageSync('orderId', orderId)
+                    } else {
+                        uni.showToast({
+                            icon: 'none',
+                            title: res.msg
+                        })
+                    }
+                }
+            })
+        },
+
+        updateBooksList(data) {
+            this.bookList = data
+        },
+
+        toggleCollapse(step) {
+            this.$set(this.collapseState, step, !this.collapseState[step])
+        },
+        handleScan() {
+            uni.scanCode({
+                scanType: ['barCode'],
+                success: (res) => {
+                    this.checkBookISBN(res.result)
+                },
+                fail: () => {
+                    uni.showToast({
+                        title: '扫码失败',
+                        icon: 'none'
+                    })
+                }
+            })
+        },
+        checkBookISBN(isbn) {
+            uni.$u.http.get('/token/order/scanIsbn?isbn=' + isbn).then(res => {
+                if (res.code == 200) {
+                    let code = res.data.code
+                    if (code == 1) {
+                        res.data.num = 1
+                        this.bookList.push(res.data)
+                    } else if (code == 2) {
+                        let item = this.bookList.find(v => v.isbn === isbn)
+                        item.num = item.num + 1
+                    } else {
+                        this.handleBookCode(res.data.code)
+                    }
+                }
+            })
+        },
+        //处理扫码之后不同的状态 0-扫码频繁 1-成功 2-本单已有该书,数量+1  3-没有该书 4-本书暂不回收 5-超过每单最大可卖数量  6-单个订单最多40本书
+        handleBookCode(code) {
+            if (code == 1) {
+                this.bookList.push()
+            }
+            let tempKeys = ['tiredDialog', '', '', 'noInfoDialog', "notAcceptDialog", 'maxAcceptDialog',
+                'orderMaxNumDialog'
+            ]
+            let key = tempKeys[code]
+            if (key) {
+                this.$refs[key].openPopup()
+            }
+        },
+        //获取当前用户未提交订单 /api/token/order/lastOrder
+        getLastOrder() {
+            uni.$u.http.get('/token/order/lastOrder').then(res => {
+                if (res.code == 200) {
+                    this.bookList = res.data ? res.data.orderDetailList.map(v => {
+                        v.orderId = res.data.orderId
+                        return v
+                    }) : []
+                }
+            })
+        },
+
+        goToScannedBooks() {
+            uni.navigateTo({
+                url: '/pages-home/pages/scaned-book'
+            })
+        },
+        goToRules() {
+            uni.navigateTo({
+                url: '/pages/rules/index'
+            })
+        },
+        showServiceGuarantee() {
+            this.$refs.serviceGuarantee.openPopup()
+        },
+        goToInputISBN() {
+            this.$refs.isbnPopup.openPopup()
+        }
+    },
+    mounted() {
+        setTimeout(() => {
+            this.getLastOrder()
+        }, 300)
+    }
+}
 </script>
 
 <style lang="scss" scoped>
-	.container {
-		height: 100%;
-		position: relative;
-		overflow: auto;
-		z-index: 1;
-		/* #ifdef MP-WEIXIN */
-		min-height: 100vh;
-		/* #endif */
-		/* #ifndef MP-WEIXIN */
-		min-height: calc(100vh - 120rpx);
-
-		/* #endif */
-		&.book-list {
-			padding-bottom: 300rpx;
-		}
-
-		padding-bottom: 130rpx;
-
-
-		.nav-title {
-			font-family: PingFang SC;
-			font-weight: bold;
-			font-size: 34rpx;
-			color: #FFFFFF;
-			padding-left: 40rpx;
-		}
-	}
-
-	.common-text {
-		font-family: PingFang SC;
-		font-weight: 500;
-		font-size: 28rpx;
-		color: #999999;
-
-		&.tip {
-			color: #FF8A4B;
-		}
-	}
-
-	.color-red {
-		color: #ff0000;
-		margin: 0 10rpx;
-	}
-
-	.bottom-fixed {
-		position: fixed;
-		left: 0;
-		right: 0;
-		bottom: 0;
-		z-index: 9;
-		background-color: #ffffff;
-		/* #ifdef H5 */
-		padding-bottom: 120rpx;
-		/* #endif */
-
-		.btn-wrap {
-			display: flex;
-			gap: 20rpx;
-			padding: 20rpx;
-			padding-bottom: 0;
-
-			button {
-				flex: 1;
-				height: 88rpx;
-				border-radius: 10rpx;
-				display: flex;
-				align-items: center;
-				justify-content: center;
-				gap: 10rpx;
-				border: none;
-
-				text {
-					font-size: 32rpx;
-				}
-
-				&::after {
-					border: none;
-				}
-			}
-
-			.isbn-btn {
-				background-color: #FFFFFF;
-				color: #4CD964;
-				border: 3rpx solid #4CD964;
-			}
-		}
-
-		.scan-btn {
-			background-color: #4CD964;
-			color: #FFFFFF;
-		}
-
-		.next-btn {
-			margin: 0;
-			width: 208rpx;
-		}
-	}
-
-	.service-icons {
-		display: flex;
-		justify-content: space-around;
-		padding: 14rpx;
-		background: #1F1303;
-		box-sizing: border-box;
-
-		.icon-item {
-			display: flex;
-			align-items: center;
-			font-family: Source Han Sans CN;
-			font-weight: 400;
-			font-size: 24rpx;
-			color: #FFF6ED;
-		}
-	}
+.container {
+    height: 100%;
+    position: relative;
+    overflow: auto;
+    z-index: 1;
+    /* #ifdef MP-WEIXIN */
+    min-height: 100vh;
+    /* #endif */
+    /* #ifndef MP-WEIXIN */
+    min-height: calc(100vh - 120rpx);
+
+    /* #endif */
+    &.book-list {
+        padding-bottom: 300rpx;
+    }
+
+    padding-bottom: 130rpx;
+
+
+    .nav-title {
+        font-family: PingFang SC;
+        font-weight: bold;
+        font-size: 34rpx;
+        color: #FFFFFF;
+        padding-left: 40rpx;
+    }
+}
+
+.common-text {
+    font-family: PingFang SC;
+    font-weight: 500;
+    font-size: 28rpx;
+    color: #999999;
+
+    &.tip {
+        color: #FF8A4B;
+    }
+}
+
+.color-red {
+    color: #ff0000;
+    margin: 0 10rpx;
+}
+
+.bottom-fixed {
+    position: fixed;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    z-index: 9;
+    background-color: #ffffff;
+    /* #ifdef H5 */
+    padding-bottom: 120rpx;
+    /* #endif */
+
+    .btn-wrap {
+        display: flex;
+        gap: 20rpx;
+        padding: 20rpx;
+        padding-bottom: 0;
+
+        button {
+            flex: 1;
+            height: 88rpx;
+            border-radius: 10rpx;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            gap: 10rpx;
+            border: none;
+
+            text {
+                font-size: 32rpx;
+            }
+
+            &::after {
+                border: none;
+            }
+        }
+
+        .isbn-btn {
+            background-color: #FFFFFF;
+            color: #4CD964;
+            border: 3rpx solid #4CD964;
+        }
+    }
+
+    .scan-btn {
+        background-color: #4CD964;
+        color: #FFFFFF;
+    }
+
+    .next-btn {
+        margin: 0;
+        width: 208rpx;
+    }
+}
+
+.service-icons {
+    display: flex;
+    justify-content: space-around;
+    padding: 14rpx;
+    background: #1F1303;
+    box-sizing: border-box;
+
+    .icon-item {
+        display: flex;
+        align-items: center;
+        font-family: Source Han Sans CN;
+        font-weight: 400;
+        font-size: 24rpx;
+        color: #FFF6ED;
+    }
+}
 </style>

+ 34 - 7
pages/mine/index.vue

@@ -2,29 +2,29 @@
     <view class="mine-page">
         <!-- 顶部用户信息 -->
         <view class="user-info">
-            <view class="user-header">
+            <view class="user-header" @tap="handleUpdateUserInfo">
                 <view class="user-avatar">
-                    <image class="avatar" :src="userInfo.avatar || '/static/img/logo3.png'" mode="aspectFill"></image>
+                    <image class="avatar" :src="userInfo.imgPath || '/static/img/logo3.png'" mode="aspectFill"></image>
                 </view>
                 <view class="user-detail">
-                    <view class="nickname">{{ userInfo.nickname }}</view>
-                    <view class="user-tag">{{ userInfo.tag }}</view>
+                    <view class="nickname">{{ userInfo.nickName }}</view>
+                    <view class="user-tag" v-if="userInfo.labels">{{ userInfo.labels }}</view>
                 </view>
             </view>
 
             <!-- 用户数据 -->
             <view class="user-data">
                 <view class="data-item">
-                    <view class="amount">{{ userInfo.balance }}</view>
+                    <view class="amount">{{ userInfo.restMoney || 0 }}</view>
                     <view class="label">我的钱包</view>
                 </view>
                 <view class="data-item">
-                    <view class="amount">{{ userInfo.couponCount }}</view>
+                    <view class="amount">{{ userInfo.couponCount || 0 }}</view>
                     <view class="label">优惠券</view>
                     <view class="badge" v-if="userInfo.availableCoupons">{{ userInfo.availableCoupons }}张可领</view>
                 </view>
                 <view class="data-item">
-                    <view class="amount">{{ userInfo.points }}</view>
+                    <view class="amount">{{ userInfo.points || 0 }}</view>
                     <view class="label">我的积分</view>
                 </view>
             </view>
@@ -100,20 +100,44 @@ export default {
         }
     },
     methods: {
+        //用户信息
+        handleUpdateUserInfo() {
+            uni.navigateTo({
+                url: '/pages-mine/pages/setting'
+            })
+        },
+        //查看全部订单
         viewAllOrders() {
             uni.navigateTo({
                 url: '/pages-mine/pages/order-page'
             })
         },
+        //跳转订单
         navigateToOrder(path) {
             uni.navigateTo({
                 url: path
             })
         },
+        //跳转工具
         navigateToTool(path) {
             uni.navigateTo({
                 url: path
             })
+        },
+        //获取用户信息
+        getUserInfo() {
+            uni.$u.http.get('/token/user/detail').then(res => {
+                console.log(res)
+                if (res.code == 200) {
+                    this.userInfo = res.data
+                }
+            })
+        }
+    },
+    onShow() {
+        let token = uni.getStorageSync('token')
+        if (token) {
+            this.getUserInfo()
         }
     }
 }
@@ -150,10 +174,13 @@ export default {
                 border-radius: 50%;
                 margin-right: 20rpx;
                 border: 4rpx solid #fff;
+                width: 128rpx;
+                height: 128rpx;
 
                 .avatar {
                     width: 120rpx;
                     height: 120rpx;
+                    border-radius: 50%;
                 }
             }
 

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/common-dialog.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/img-swiper.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/loadmore.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/nav/dial-nav.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/navbar/navbar-search.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/navbar/navbar-top-search.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/no-data.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/pageScroll/index.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/search/search.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/select-reason.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/tag.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/title-operate.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/components/BookItem.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/components/BookListItem.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/components/PickupTimePicker.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/pages/book-order.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/pages/order-success.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-home/pages/scaned-book.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/after-sales/apply-reason.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/after-sales/back-goods.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/after-sales/back-status.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/after-sales/select-goods-pop.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/after-sales/select-item.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/express/list.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/goods/goods-info.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/goods/goods-select-sku.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/goods/goods-select.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/goods/submitBar.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/line-info-operate.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/navbar-tab-search.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/express-goods-card.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/order-card.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/order-goods-card.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/order-operate.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/order-status.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/orderdetail-goods-card.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/sel-coupon-popup.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/submit-discounts.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/submit-goods-card.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/components/order/submit-operate.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/apply-status.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/apply.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/back.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/components/setExpress.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/list.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/after-sales/success.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/goods/detail.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/detail.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/express.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/list.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/pay-result.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/pay.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/order/submit.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mall/pages/zone/zone.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/address-card.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/city-picker.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/discounts-item.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/components/order-item.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/address/add-or-update.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/address/list.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/collection.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/discounts.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/feedback.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/history.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/order-page.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-mine/pages/setting.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages-pub/richTextPage.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/home/components/BookItem.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/home/components/InputIsbn.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/home/components/ScanBookList.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/home/components/notScanned.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/home/index.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/login/index.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/mall/classify.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/mall/components/card.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/mall/components/cardGoodsModel.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/mall/components/collection.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/mall/components/goods.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/mall/components/goodsModel.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/mall/components/poster.js.map


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/mall/index.js.map


Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác