Просмотр исходного кода

【程序目录】更新前端页面

吴昊天 3 лет назад
Родитель
Сommit
26b2d91d13
78 измененных файлов с 2232 добавлено и 669 удалено
  1. 1 0
      crmeb/public/admin/css/chunk-0d4a0390.332cfb47.css
  2. 0 1
      crmeb/public/admin/css/chunk-25b615e8.ce03d421.css
  3. 1 1
      crmeb/public/admin/index.html
  4. 1 1
      crmeb/public/admin/js/app.782ba755.js
  5. 1 0
      crmeb/public/admin/js/chunk-0d4a0390.f63c0e02.js
  6. 0 1
      crmeb/public/admin/js/chunk-25b615e8.5102492c.js
  7. 1 1
      crmeb/public/index.html
  8. 1 1
      crmeb/public/static/js/index.5c04d06a.js
  9. 1 0
      crmeb/public/static/js/pages-annex-offline_pay-index.02ce6a81.js
  10. 0 1
      crmeb/public/static/js/pages-annex-offline_pay-index.8fc3b89e.js
  11. 1 0
      crmeb/public/static/js/pages-annex-vip_paid-index.04b9185e.js
  12. 0 1
      crmeb/public/static/js/pages-annex-vip_paid-index.57de6797.js
  13. 1 0
      crmeb/public/static/js/pages-annex-vip_paid-index~pages-goods-order_confirm-index~pages-goods-order_details-index~pages-goo~a65ed4e2.13ba2d66.js
  14. 0 1
      crmeb/public/static/js/pages-annex-vip_paid-index~pages-goods-order_confirm-index~pages-goods-order_details-index~pages-goo~a65ed4e2.cf8b6ba6.js
  15. 1 0
      crmeb/public/static/js/pages-goods-order_confirm-index.490449da.js
  16. 0 1
      crmeb/public/static/js/pages-goods-order_confirm-index.c31adbb8.js
  17. 1 0
      crmeb/public/static/js/pages-index-index.0e54b669.js
  18. 0 1
      crmeb/public/static/js/pages-index-index.dda0a013.js
  19. 0 1
      crmeb/public/static/js/pages-users-message_center-index.5ff69b33.js
  20. 1 0
      crmeb/public/static/js/pages-users-message_center-index.8fa1d9c0.js
  21. 0 1
      crmeb/public/static/js/pages-users-user_address_list-index.6aa15368.js
  22. 1 0
      crmeb/public/static/js/pages-users-user_address_list-index.c2d9db00.js
  23. 1 0
      crmeb/public/static/js/pages-users-user_payment-index.4357e75e.js
  24. 0 1
      crmeb/public/static/js/pages-users-user_payment-index.4578f0ca.js
  25. 1 1
      crmeb/public/statics/mp_view/common/runtime.js
  26. 2 2
      crmeb/public/statics/mp_view/components/Authorize.json
  27. 2 2
      crmeb/public/statics/mp_view/components/goodList/index.json
  28. 1 1
      crmeb/public/statics/mp_view/components/payment/index.js
  29. 1 1
      crmeb/public/statics/mp_view/components/payment/index.wxml
  30. 1 1
      crmeb/public/statics/mp_view/components/payment/index.wxss
  31. 10 0
      crmeb/public/statics/mp_view/components/tuiDrawer/index.js
  32. 4 0
      crmeb/public/statics/mp_view/components/tuiDrawer/index.json
  33. 1 0
      crmeb/public/statics/mp_view/components/tuiDrawer/index.wxml
  34. 1 0
      crmeb/public/statics/mp_view/components/tuiDrawer/index.wxss
  35. 1 1
      crmeb/public/statics/mp_view/pages/annex/offline_pay/index.js
  36. 1 1
      crmeb/public/statics/mp_view/pages/annex/offline_pay/index.wxml
  37. 1 1
      crmeb/public/statics/mp_view/pages/annex/offline_pay/index.wxss
  38. 1 1
      crmeb/public/statics/mp_view/pages/annex/vip_paid/index.js
  39. 1 1
      crmeb/public/statics/mp_view/pages/annex/vip_paid/index.wxml
  40. 1 1
      crmeb/public/statics/mp_view/pages/annex/vip_paid/index.wxss
  41. 1 1
      crmeb/public/statics/mp_view/pages/goods/order_confirm/index.js
  42. 1 1
      crmeb/public/statics/mp_view/pages/goods/order_confirm/index.wxml
  43. 1 1
      crmeb/public/statics/mp_view/pages/goods/order_confirm/index.wxss
  44. 2 2
      crmeb/public/statics/mp_view/pages/index/diy/components/articleList.json
  45. 2 2
      crmeb/public/statics/mp_view/pages/index/diy/components/blankPage.json
  46. 2 2
      crmeb/public/statics/mp_view/pages/index/diy/components/combination.json
  47. 2 2
      crmeb/public/statics/mp_view/pages/index/diy/components/goodList.json
  48. 2 2
      crmeb/public/statics/mp_view/pages/index/diy/components/guide.json
  49. 2 2
      crmeb/public/statics/mp_view/pages/index/diy/components/headerSerch.json
  50. 2 2
      crmeb/public/statics/mp_view/pages/index/diy/components/liveBroadcast.json
  51. 2 2
      crmeb/public/statics/mp_view/pages/index/diy/components/menus.json
  52. 1 1
      crmeb/public/statics/mp_view/pages/index/diy/index.js
  53. 1 1
      crmeb/public/statics/mp_view/pages/index/visualization/components/swiperBg.js
  54. 2 2
      crmeb/public/statics/mp_view/pages/index/visualization/components/tabBar.json
  55. 1 1
      crmeb/public/statics/mp_view/pages/index/visualization/index.js
  56. 1 1
      crmeb/public/statics/mp_view/pages/index/visualization/index.wxml
  57. 3 3
      crmeb/public/statics/mp_view/pages/index/visualization/index.wxss
  58. 1 1
      crmeb/public/statics/mp_view/pages/users/message_center/index.js
  59. 2 1
      crmeb/public/statics/mp_view/pages/users/message_center/index.json
  60. 1 1
      crmeb/public/statics/mp_view/pages/users/message_center/index.wxml
  61. 1 1
      crmeb/public/statics/mp_view/pages/users/message_center/index.wxss
  62. 1 1
      crmeb/public/statics/mp_view/pages/users/promoter-list/index.js
  63. 1 1
      crmeb/public/statics/mp_view/pages/users/user_address_list/index.js
  64. 1 1
      crmeb/public/statics/mp_view/pages/users/user_payment/index.js
  65. 1269 147
      template/admin/package-lock.json
  66. 1 1
      template/admin/src/pages/setting/clerkList/index.vue
  67. 8 3
      template/uni-app/components/payment/index.vue
  68. 324 0
      template/uni-app/components/tuiDrawer/index.vue
  69. 7 1
      template/uni-app/pages/annex/offline_pay/index.vue
  70. 7 1
      template/uni-app/pages/annex/vip_paid/index.vue
  71. 11 3
      template/uni-app/pages/goods/order_confirm/index.vue
  72. 3 0
      template/uni-app/pages/goods/order_list/index.vue
  73. 1 1
      template/uni-app/pages/index/diy/index.vue
  74. 1 1
      template/uni-app/pages/index/visualization/index.vue
  75. 505 446
      template/uni-app/pages/users/message_center/index.vue
  76. 1 2
      template/uni-app/pages/users/user_address_list/index.vue
  77. 3 0
      template/uni-app/pages/users/user_cancellation/index.vue
  78. 11 0
      template/uni-app/pages/users/user_payment/index.vue

+ 1 - 0
crmeb/public/admin/css/chunk-0d4a0390.332cfb47.css

@@ -0,0 +1 @@
+.tabBox_img[data-v-613b939a]{width:36px;height:36px;border-radius:4px;cursor:pointer}.tabBox_img img[data-v-613b939a]{width:100%;height:100%}

+ 0 - 1
crmeb/public/admin/css/chunk-25b615e8.ce03d421.css

@@ -1 +0,0 @@
-.tabBox_img[data-v-bd6faaa2]{width:36px;height:36px;border-radius:4px;cursor:pointer}.tabBox_img img[data-v-bd6faaa2]{width:100%;height:100%}

Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/admin/index.html


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/admin/js/app.782ba755.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/admin/js/chunk-0d4a0390.f63c0e02.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
crmeb/public/admin/js/chunk-25b615e8.5102492c.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/index.html


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/static/js/index.5c04d06a.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/static/js/pages-annex-offline_pay-index.02ce6a81.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
crmeb/public/static/js/pages-annex-offline_pay-index.8fc3b89e.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/static/js/pages-annex-vip_paid-index.04b9185e.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
crmeb/public/static/js/pages-annex-vip_paid-index.57de6797.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/static/js/pages-annex-vip_paid-index~pages-goods-order_confirm-index~pages-goods-order_details-index~pages-goo~a65ed4e2.13ba2d66.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
crmeb/public/static/js/pages-annex-vip_paid-index~pages-goods-order_confirm-index~pages-goods-order_details-index~pages-goo~a65ed4e2.cf8b6ba6.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/static/js/pages-goods-order_confirm-index.490449da.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
crmeb/public/static/js/pages-goods-order_confirm-index.c31adbb8.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/static/js/pages-index-index.0e54b669.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
crmeb/public/static/js/pages-index-index.dda0a013.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
crmeb/public/static/js/pages-users-message_center-index.5ff69b33.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/static/js/pages-users-message_center-index.8fa1d9c0.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
crmeb/public/static/js/pages-users-user_address_list-index.6aa15368.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/static/js/pages-users-user_address_list-index.c2d9db00.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/static/js/pages-users-user_payment-index.4357e75e.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 1
crmeb/public/static/js/pages-users-user_payment-index.4578f0ca.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/common/runtime.js


+ 2 - 2
crmeb/public/statics/mp_view/components/Authorize.json

@@ -1,4 +1,4 @@
 {
-  "component": true,
-  "usingComponents": {}
+  "usingComponents": {},
+  "component": true
 }

+ 2 - 2
crmeb/public/statics/mp_view/components/goodList/index.json

@@ -1,4 +1,4 @@
 {
-  "component": true,
-  "usingComponents": {}
+  "usingComponents": {},
+  "component": true
 }

Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/components/payment/index.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/components/payment/index.wxml


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/components/payment/index.wxss


Разница между файлами не показана из-за своего большого размера
+ 10 - 0
crmeb/public/statics/mp_view/components/tuiDrawer/index.js


+ 4 - 0
crmeb/public/statics/mp_view/components/tuiDrawer/index.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/statics/mp_view/components/tuiDrawer/index.wxml


Разница между файлами не показана из-за своего большого размера
+ 1 - 0
crmeb/public/statics/mp_view/components/tuiDrawer/index.wxss


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/pages/annex/offline_pay/index.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/pages/annex/offline_pay/index.wxml


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/pages/annex/offline_pay/index.wxss


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/pages/annex/vip_paid/index.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/pages/annex/vip_paid/index.wxml


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/pages/annex/vip_paid/index.wxss


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/pages/goods/order_confirm/index.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/pages/goods/order_confirm/index.wxml


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/pages/goods/order_confirm/index.wxss


+ 2 - 2
crmeb/public/statics/mp_view/pages/index/diy/components/articleList.json

@@ -1,4 +1,4 @@
 {
-  "component": true,
-  "usingComponents": {}
+  "usingComponents": {},
+  "component": true
 }

+ 2 - 2
crmeb/public/statics/mp_view/pages/index/diy/components/blankPage.json

@@ -1,4 +1,4 @@
 {
-  "component": true,
-  "usingComponents": {}
+  "usingComponents": {},
+  "component": true
 }

+ 2 - 2
crmeb/public/statics/mp_view/pages/index/diy/components/combination.json

@@ -1,4 +1,4 @@
 {
-  "component": true,
-  "usingComponents": {}
+  "usingComponents": {},
+  "component": true
 }

+ 2 - 2
crmeb/public/statics/mp_view/pages/index/diy/components/goodList.json

@@ -1,4 +1,4 @@
 {
-  "usingComponents": {},
-  "component": true
+  "component": true,
+  "usingComponents": {}
 }

+ 2 - 2
crmeb/public/statics/mp_view/pages/index/diy/components/guide.json

@@ -1,4 +1,4 @@
 {
-  "usingComponents": {},
-  "component": true
+  "component": true,
+  "usingComponents": {}
 }

+ 2 - 2
crmeb/public/statics/mp_view/pages/index/diy/components/headerSerch.json

@@ -1,4 +1,4 @@
 {
-  "component": true,
-  "usingComponents": {}
+  "usingComponents": {},
+  "component": true
 }

+ 2 - 2
crmeb/public/statics/mp_view/pages/index/diy/components/liveBroadcast.json

@@ -1,4 +1,4 @@
 {
-  "usingComponents": {},
-  "component": true
+  "component": true,
+  "usingComponents": {}
 }

+ 2 - 2
crmeb/public/statics/mp_view/pages/index/diy/components/menus.json

@@ -1,4 +1,4 @@
 {
-  "usingComponents": {},
-  "component": true
+  "component": true,
+  "usingComponents": {}
 }

Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/pages/index/diy/index.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/pages/index/visualization/components/swiperBg.js


+ 2 - 2
crmeb/public/statics/mp_view/pages/index/visualization/components/tabBar.json

@@ -1,4 +1,4 @@
 {
-  "component": true,
-  "usingComponents": {}
+  "usingComponents": {},
+  "component": true
 }

Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/pages/index/visualization/index.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/pages/index/visualization/index.wxml


Разница между файлами не показана из-за своего большого размера
+ 3 - 3
crmeb/public/statics/mp_view/pages/index/visualization/index.wxss


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/pages/users/message_center/index.js


+ 2 - 1
crmeb/public/statics/mp_view/pages/users/message_center/index.json

@@ -2,6 +2,7 @@
   "navigationBarTitleText": "消息中心",
   "enablePullDownRefresh": true,
   "usingComponents": {
-    "home": "/components/home/index"
+    "home": "/components/home/index",
+    "tui-drawer": "/components/tuiDrawer/index"
   }
 }

Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/pages/users/message_center/index.wxml


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/pages/users/message_center/index.wxss


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/pages/users/promoter-list/index.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/pages/users/user_address_list/index.js


Разница между файлами не показана из-за своего большого размера
+ 1 - 1
crmeb/public/statics/mp_view/pages/users/user_payment/index.js


Разница между файлами не показана из-за своего большого размера
+ 1269 - 147
template/admin/package-lock.json


+ 1 - 1
template/admin/src/pages/setting/clerkList/index.vue

@@ -134,7 +134,7 @@ export default {
           minWidth: 100,
         },
         {
-          title: '客服名称',
+          title: '核销员名称',
           key: 'staff_name',
           minWidth: 100,
         },

+ 8 - 3
template/uni-app/components/payment/index.vue

@@ -154,8 +154,13 @@
 							});
 
 							// #ifdef MP
-
-							uni.requestPayment({
+							let mp_pay_name=''
+							if(uni.requestOrderPayment){
+								mp_pay_name='requestOrderPayment'
+							}else{
+								mp_pay_name='requestPayment'
+							}
+							uni[mp_pay_name]({
 								timeStamp: jsConfig.timestamp,
 								nonceStr: jsConfig.nonceStr,
 								package: jsConfig.package,
@@ -184,7 +189,7 @@
 								},
 								complete: function(e) {
 									uni.hideLoading();
-									if (e.errMsg == 'requestPayment:cancel') return that.$util
+									if (e.errMsg == 'requestPayment:cancel' || e.errMsg == 'requestOrderPayment:cancel') return that.$util
 										.Tips({
 											title: that.$t(`取消支付`)
 										}, () => {

+ 324 - 0
template/uni-app/components/tuiDrawer/index.vue

@@ -0,0 +1,324 @@
+<template>
+	<view class="tui-swipeout-wrap" :style="{ backgroundColor: backgroundColor }">
+		<view class="tui-swipeout-item" :class="[isShowBtn ? 'swipe-action-show' : '']"
+			:style="{ transform: 'translate(' + position.pageX + 'px,0)' }">
+			<view class="tui-swipeout-content" @touchstart="handlerTouchstart" @touchmove="handlerTouchmove"
+				@touchend="handlerTouchend" @mousedown="handlerTouchstart" @mousemove="handlerTouchmove"
+				@mouseup="handlerTouchend">
+				<slot name="content"></slot>
+			</view>
+			<view class="tui-swipeout-button-right-group" v-if="actions.length > 0" @touchend.stop="loop"
+				:style="colorStyle">
+				<view class="tui-swipeout-button-right-item" v-for="(item, index) in actions" :key="index"
+					:style="{ backgroundColor: index == 0 ? 'var(--view-theme)' : '#ccc', color: index == 1 ? '#f2f2f2' : '#f2f2f2', width: item.width + 'px' }"
+					:data-index="index" @tap="handlerButton">
+					<image :src="item.icon" v-if="item.icon"
+						:style="{ width: px(item.imgWidth), height: px(item.imgHeight) }"></image>
+					<text :style="{ fontSize: px(item.fontsize) }">{{ item.name }}</text>
+				</view>
+			</view>
+			<!--actions长度设置为0,可直接传按钮进来-->
+			<view class="tui-swipeout-button-right-group" @touchend.stop="loop" @tap="handlerParentButton"
+				v-if="actions.length === 0" :style="{ width: operateWidth + 'px', right: '-' + operateWidth + 'px' }">
+				<slot name="button"></slot>
+			</view>
+		</view>
+		<view v-if="isShowBtn && showMask" class="swipe-action_mask" @tap.stop="closeButtonGroup"
+			@touchstart.stop.prevent="closeButtonGroup" />
+	</view>
+</template>
+
+<script>
+	import colors from '@/mixins/color';
+	export default {
+		name: 'tuiSwipeAction',
+		emits: ['click'],
+		mixins: [colors],
+		props: {
+			// name: '删除',
+			// color: '#fff',
+			// fontsize: 32,//单位rpx
+			// width: 80, //单位px
+			// icon: 'like.png',//此处为图片地址
+			// background: '#ed3f14'
+			actions: {
+				type: Array,
+				default () {
+					return [];
+				}
+			},
+			//点击按钮时是否自动关闭
+			closable: {
+				type: Boolean,
+				default: true
+			},
+			//设为false,可以滑动多行不关闭菜单
+			showMask: {
+				type: Boolean,
+				default: true
+			},
+			operateWidth: {
+				type: Number,
+				default: 80
+			},
+			params: {
+				type: Object,
+				default () {
+					return {};
+				}
+			},
+			//禁止滑动
+			forbid: {
+				type: Boolean,
+				default: false
+			},
+			//手动开关
+			open: {
+				type: Boolean,
+				default: false
+			},
+			//背景色
+			backgroundColor: {
+				type: String,
+				default: '#fff'
+			}
+		},
+		watch: {
+			actions(newValue, oldValue) {
+				this.updateButtonSize();
+			},
+			open(newValue) {
+				this.manualSwitch(newValue);
+			}
+		},
+		data() {
+			return {
+				//start position
+				tStart: {
+					pageX: 0,
+					pageY: 0
+				},
+				//限制滑动距离
+				limitMove: 0,
+				//move position
+				position: {
+					pageX: 0,
+					pageY: 0
+				},
+				isShowBtn: false,
+				move: false
+			};
+		},
+		mounted() {
+			this.updateButtonSize();
+		},
+		methods: {
+			swipeDirection(x1, x2, y1, y2) {
+				return Math.abs(x1 - x2) >= Math.abs(y1 - y2) ? (x1 - x2 > 0 ? 'Left' : 'Right') : y1 - y2 > 0 ? 'Up' :
+					'Down';
+			},
+			//阻止事件冒泡
+			loop() {},
+			updateButtonSize() {
+				const actions = this.actions;
+				if (actions.length > 0) {
+					const query = uni.createSelectorQuery().in(this);
+					let limitMovePosition = 0;
+					actions.forEach(item => {
+						limitMovePosition += item.width || 0;
+					});
+					this.limitMove = limitMovePosition;
+				} else {
+					this.limitMove = this.operateWidth;
+				}
+			},
+			handlerTouchstart(event) {
+				if (this.forbid) return;
+				let touches = event.touches
+				if (touches && touches.length > 1) return;
+				this.move = true;
+				touches = touches ? event.touches[0] : {};
+				if (!touches || (touches.pageX === undefined && touches.pageY === undefined)) {
+					touches = {
+						pageX: event.pageX,
+						pageY: event.pageY
+					};
+				}
+				const tStart = this.tStart;
+				if (touches) {
+					for (let i in tStart) {
+						if (touches[i]) {
+							tStart[i] = touches[i];
+						}
+					}
+				}
+			},
+			swipper(touches) {
+				const start = this.tStart;
+				const spacing = {
+					pageX: touches.pageX - start.pageX,
+					pageY: touches.pageY - start.pageY
+				};
+				if (this.limitMove < Math.abs(spacing.pageX)) {
+					spacing.pageX = -this.limitMove;
+				}
+				this.position = spacing;
+			},
+			handlerTouchmove(event) {
+				if (this.forbid || !this.move) return;
+				const start = this.tStart;
+				let touches = event.touches ? event.touches[0] : {};
+				if (!touches || (touches.pageX === undefined && touches.pageY === undefined)) {
+					touches = {
+						pageX: event.pageX,
+						pageY: event.pageY
+					};
+				}
+				if (touches) {
+					const direction = this.swipeDirection(start.pageX, touches.pageX, start.pageY, touches.pageY);
+					if (direction === 'Left' && Math.abs(this.position.pageX) !== this.limitMove) {
+						this.swipper(touches);
+					}
+				}
+			},
+			handlerTouchend(event) {
+				if (this.forbid || !this.move) return;
+				this.move = false;
+				const start = this.tStart;
+				let touches = event.changedTouches ? event.changedTouches[0] : {};
+				if (!touches || (touches.pageX === undefined && touches.pageY === undefined)) {
+					touches = {
+						pageX: event.pageX,
+						pageY: event.pageY
+					};
+				}
+				if (touches) {
+					const direction = this.swipeDirection(start.pageX, touches.pageX, start.pageY, touches.pageY);
+					const spacing = {
+						pageX: touches.pageX - start.pageX,
+						pageY: touches.pageY - start.pageY
+					};
+					if (Math.abs(spacing.pageX) >= 40 && direction === 'Left') {
+						spacing.pageX = spacing.pageX < 0 ? -this.limitMove : this.limitMove;
+						this.isShowBtn = true;
+					} else {
+						spacing.pageX = 0;
+					}
+					if (spacing.pageX == 0) {
+						this.isShowBtn = false;
+					}
+					this.position = spacing;
+
+				}
+			},
+			handlerButton(event) {
+				if (this.closable) {
+					this.closeButtonGroup();
+				}
+				const dataset = event.currentTarget.dataset;
+				this.$emit('click', {
+					index: Number(dataset.index),
+					item: this.params
+				});
+			},
+			closeButtonGroup() {
+				this.position = {
+					pageX: 0,
+					pageY: 0
+				};
+				this.isShowBtn = false;
+			},
+			//控制自定义按钮菜单
+			handlerParentButton(event) {
+				if (this.closable) {
+					this.closeButtonGroup();
+				}
+			},
+			manualSwitch(isOpen) {
+				let x = 0;
+				if (isOpen) {
+					if (this.actions.length === 0) {
+						x = this.operateWidth;
+					} else {
+						let width = 0;
+						this.actions.forEach(item => {
+							width += item.width;
+						});
+						x = width;
+					}
+				}
+				this.position = {
+					pageX: -x,
+					pageY: 0
+				};
+			},
+			px(num) {
+				return uni.upx2px(num) + 'px';
+			}
+		}
+	};
+</script>
+
+<style scoped>
+	.tui-swipeout-wrap {
+		position: relative;
+		overflow: hidden;
+		/* margin-bottom: 24rpx; */
+
+	}
+
+
+	.swipe-action-show {
+		position: relative;
+		z-index: 998;
+	}
+
+	.tui-swipeout-item {
+		width: 100%;
+		/* padding: 15px 20px; */
+		box-sizing: border-box;
+		transition: transform 0.2s ease;
+		font-size: 14px;
+		/* cursor: pointer; */
+	}
+
+	/* .tui-swipeout-item :active {
+    background-color: #fff !important;
+  } */
+
+	.tui-swipeout-content {
+		white-space: nowrap;
+		overflow: hidden;
+	}
+
+	.tui-swipeout-button-right-group {
+		position: absolute;
+		right: -100%;
+		top: 0;
+		height: 100%;
+		z-index: 1;
+		width: 100%;
+	}
+
+	.tui-swipeout-button-right-item {
+		height: 100%;
+		float: left;
+		white-space: nowrap;
+		box-sizing: border-box;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		text-align: center;
+	}
+
+	.swipe-action_mask {
+		display: block;
+		opacity: 0;
+		position: fixed;
+		z-index: 997;
+		top: 0;
+		left: 0;
+		width: 100%;
+		height: 100%;
+	}
+</style>

+ 7 - 1
template/uni-app/pages/annex/offline_pay/index.vue

@@ -249,7 +249,13 @@
 					case 'WECHAT_PAY':
 						// #ifdef MP
 						let that = this;
-						uni.requestPayment({
+						let mp_pay_name=''
+						if(uni.requestOrderPayment){
+							mp_pay_name='requestOrderPayment'
+						}else{
+							mp_pay_name='requestPayment'
+						}
+						uni[mp_pay_name]({
 							timeStamp: jsConfig.timestamp,
 							nonceStr: jsConfig.nonceStr,
 							package: jsConfig.package,

+ 7 - 1
template/uni-app/pages/annex/vip_paid/index.vue

@@ -503,7 +503,13 @@
 						break;
 					case 'WECHAT_PAY':
 						// #ifdef MP
-						uni.requestPayment({
+						let mp_pay_name=''
+						if(uni.requestOrderPayment){
+							mp_pay_name='requestOrderPayment'
+						}else{
+							mp_pay_name='requestPayment'
+						}
+						uni[mp_pay_name]({
 							timeStamp: jsConfig.timestamp,
 							nonceStr: jsConfig.nonceStr,
 							package: jsConfig.package,

+ 11 - 3
template/uni-app/pages/goods/order_confirm/index.vue

@@ -427,7 +427,7 @@
 				url: 1
 			});
 			this.couponId = options.couponId || 0;
-			this.noCoupon = options.noCoupon || 0;
+			this.noCoupon = Number(options.noCoupon) || 0;
 			this.pinkId = options.pinkId ? parseInt(options.pinkId) : 0;
 			this.addressId = options.addressId || 0;
 			this.cartId = options.cartId;
@@ -497,6 +497,7 @@
 							that.is_shipping = false;
 							that.shippingType = 1;
 							this.getConfirm();
+							this.getList();
 						}
 					}
 				}).catch(err => {
@@ -672,6 +673,7 @@
 							success: (res) => {
 								uni.setStorageSync('user_latitude', res.latitude);
 								uni.setStorageSync('user_longitude', res.longitude);
+								this.getList()
 							},
 							complete: () => {
 								this.getList()
@@ -972,7 +974,13 @@
 							that.toPay = true;
 							// #ifdef MP
 							/* that.toPay = true; */
-							uni.requestPayment({
+							let mp_pay_name=''
+							if(uni.requestOrderPayment){
+								mp_pay_name='requestOrderPayment'
+							}else{
+								mp_pay_name='requestPayment'
+							}
+							uni[mp_pay_name]({
 								timeStamp: jsConfig.timestamp,
 								nonceStr: jsConfig.nonceStr,
 								package: jsConfig.package,
@@ -1009,7 +1017,7 @@
 								complete: function(e) {
 									uni.hideLoading();
 									//关闭当前页面跳转至订单状态
-									if (res.errMsg == 'requestPayment:cancel') return that.$util
+									if (res.errMsg == 'requestPayment:cancel' || e.errMsg == 'requestOrderPayment:cancel') return that.$util
 										.Tips({
 											title: that.$t(`取消支付`)
 										}, {

+ 3 - 0
template/uni-app/pages/goods/order_list/index.vue

@@ -54,6 +54,9 @@
 							<view v-else-if="item._status._type == 1 && item.shipping_type == 1" class="font-color">{{$t(`待发货`)}}
 								<text v-if="item.refund.length">,{{item.is_all_refund?$t(`退款中`):$t(`部分退款中`)}}</text>
 							</view>
+							<view v-else-if="item._status._type == 1 && item.shipping_type == 2" class="font-color">{{$t(`待核销`)}}
+								<text v-if="item.refund.length">,{{item.is_all_refund?$t(`退款中`):$t(`部分退款中`)}}</text>
+							</view>
 							<view v-else-if="item._status._type == 2" class="font-color">{{$t(`待收货`)}}
 								<text v-if="item.refund.length">,{{item.is_all_refund?$t(`退款中`):$t(`部分退款中`)}}</text>
 							</view>

+ 1 - 1
template/uni-app/pages/index/diy/index.vue

@@ -85,7 +85,7 @@
 					<view class="" v-if="goodList.length == 0 && loaded">
 						<view class="emptyBox">
 							<image :src="imgHost + '/statics/images/no-thing.png'"></image>
-							<view class="tips">{{$t(`no_product_see`)}}</view>
+							<view class="tips">{{$t(`暂无商品,去看点别的吧`)}}</view>
 						</view>
 						<recommend :hostProduct="hostProduct"></recommend>
 					</view>

+ 1 - 1
template/uni-app/pages/index/visualization/index.vue

@@ -83,7 +83,7 @@
         ">
 				<view class='emptyBox'>
 					<image :src="imgHost + '/statics/images/no-thing.png'"></image>
-					<view class="tips">{{$t(`no_product_see`)}}</view>
+					<view class="tips">{{$t(`暂无商品,去看点别的吧`)}}</view>
 				</view>
 			</view>
 		</view>

+ 505 - 446
template/uni-app/pages/users/message_center/index.vue

@@ -1,447 +1,506 @@
-<template>
-	<view class="main" @touchstart="start" @touchend="end">
-		<view class="top-tabs" :style="colorStyle">
-			<view class="tabs" :class="{btborder:type === index}" v-for="(item,index) in tabsList" :key="index"
-				@tap="changeTabs(index)">
-				{{$t(item.name)}}
-			</view>
-		</view>
-		<view v-if="list.length && type ===1" class="list">
-			<view v-for="(item, index) in list" :key="index" class="item" @click="goChat(item.to_uid)">
-				<view class="image-wrap">
-					<image class="image" :src="item.avatar"></image>
-				</view>
-				<view class="text-wrap">
-					<view class="name-wrap">
-						<view class="name">{{ $t(item.nickname) }}</view>
-						<view>{{ item._update_time }}</view>
-					</view>
-					<view class="info-wrap">
-						<view v-if="item.message_type === 1" class="info" v-html="item.message"></view>
-						<view v-if="item.message_type === 2" class="info" v-html="item.message"></view>
-						<view v-if="item.message_type === 3" class="info">{{$t(`[图片]`)}}</view>
-						<view v-if="item.message_type === 4" class="info">{{$t(`[语音]`)}}</view>
-						<view v-if="item.message_type === 5" class="info">{{$t(`[商品]`)}}</view>
-						<view v-if="item.message_type === 6" class="info">{{$t(`[订单]`)}}</view>
-						<view class="num" v-if="item.mssage_num">{{ item.mssage_num }}</view>
-					</view>
-				</view>
-			</view>
-		</view>
-		<view class="list" v-if="list.length && type === 0">
-			<view v-for="(item, index) in list" :key="index" class="item" @click="goDetail(item.id)">
-				<view class="image-wrap">
-					<image v-if="item.type === 1" class="image" src="../static/admin-msg.png"></image>
-					<image v-else class="image" src="../static/user-msg.png"></image>
-					<view class="no-look" v-if="!item.look"></view>
-				</view>
-				<view class="text-wrap">
-					<view class="name-wrap">
-						<view class="name">{{ $t(item.title) || '--' }}</view>
-						<view>{{ item.add_time }}</view>
-					</view>
-					<view class="info-wrap">
-						<view class="info" v-html="item.content"></view>
-					</view>
-				</view>
-			</view>
-		</view>
-		<view v-else-if="finished && !list.length" class="empty-wrap">
-			<view class="image-wrap">
-				<image class="image" :src="imgHost + '/statics/images/noMessage.png'"></image>
-			</view>
-			<view>{{$t(`亲、暂无消息记录哟!`)}}</view>
-		</view>
-		<!-- #ifndef MP -->
-		<home></home>
-		<!-- #endif -->
-	</view>
-</template>
-
-<script>
-	import {
-		serviceRecord,
-		messageSystem
-	} from '@/api/user.js';
-	import colors from '@/mixins/color.js';
-	import home from '@/components/home';
-	import {HTTP_REQUEST_URL} from '@/config/app';
-	export default {
-		mixins: [colors],
-		components: {
-			home
-		},
-		data() {
-			return {
-				imgHost:HTTP_REQUEST_URL,
-				list: [],
-				page: 1,
-				type: 0,
-				limit: 20,
-				loading: false,
-				finished: false,
-				tabsList: [{
-					key: 0,
-					name: '站内消息'
-				}, {
-					key: 1,
-					name: '客服消息'
-				}],
-				startData: {
-					clientX: 0,
-					clientY: 0
-				}
-			};
-		},
-		onShow() {
-			this.page = 1
-			this.list = []
-			console.log(this.type)
-			this.changeTabs(this.type)
-		},
-		onReachBottom() {
-			if (this.type === 1) {
-				this.getList()
-			} else {
-				this.messageSystem()
-			}
-		},
-		onPullDownRefresh() {
-			console.log('refresh');
-			this.page = 1
-			this.finished = false
-			this.list = []
-			if (this.type === 1) {
-				this.getList()
-			} else {
-				this.messageSystem()
-			}
-		},
-		methods: {
-			start(e) {
-				this.startData.clientX = e.changedTouches[0].clientX;
-				this.startData.clientY = e.changedTouches[0].clientY;
-			},
-			end(e) {
-				// console.log(e)
-				const subX = e.changedTouches[0].clientX - this.startData.clientX;
-				const subY = e.changedTouches[0].clientY - this.startData.clientY;
-				if (subY > 50 || subY < -50) {
-					console.log('上下滑')
-				} else {
-					if (subX > 50) {
-						console.log('右滑')
-						if (this.type == 1) {
-							this.type = 0
-							this.changeTabs(this.type)
-						}
-					} else if (subX < -50) {
-						if (this.type == 0) {
-							this.type = 1
-							this.changeTabs(this.type)
-						}
-						console.log('左滑')
-					} else {
-						console.log('无效')
-					}
-				}
-			},
-			changeTabs(index) {
-				this.type = index
-				this.page = 1
-				this.limit = 20
-				this.list = []
-				this.finished = false
-				if (index === 1) {
-					this.getList()
-				} else {
-					this.messageSystem()
-				}
-			},
-			// 站内信
-			messageSystem() {
-				if (this.loading || this.finished) {
-					return;
-				}
-				this.loading = true;
-				uni.showLoading({
-					title: this.$t(`加载中`)
-				});
-				messageSystem({
-						page: this.page,
-						limit: this.limit
-					})
-					.then(res => {
-						console.log(res)
-						let data = res.data;
-						uni.hideLoading();
-						this.loading = false;
-						this.list = this.list.concat(data.list);
-						this.finished = data.list.length < this.limit;
-						this.page += 1;
-						uni.stopPullDownRefresh();
-					})
-					.catch(err => {
-						console.log(err)
-						uni.showToast({
-							title: err.msg,
-							icon: 'none'
-						})
-					})
-			},
-			// 客服list
-			getList() {
-				if (this.loading || this.finished) {
-					return;
-				}
-				this.loading = true;
-				uni.showLoading({
-					title: '加载中'
-				});
-				serviceRecord({
-						page: this.page,
-						limit: this.limit
-					})
-					.then(res => {
-						uni.stopPullDownRefresh();
-						let data = res.data;
-						uni.hideLoading();
-						this.loading = false;
-						data.forEach(item => {
-							if (item.message_type === 1) {
-								item.message = this.replace_em(item.message);
-							}
-							if (item.message_type === 2) {
-								item.message = this.replace_em(item.message);
-							}
-						});
-						this.list = this.list.concat(data);
-						this.finished = data.length < this.limit;
-						this.page += 1;
-					})
-					.catch(err => {
-						uni.showToast({
-							title: err.msg,
-							icon: 'none'
-						})
-					})
-			},
-			replace_em(str) {
-				str = str.replace(/\[em-([a-z_]*)\]/g, "<span class='em em-$1'/></span>");
-				return str;
-			},
-			goChat(id) {
-				uni.navigateTo({
-					url: '/pages/extension/customer_list/chat?to_uid=' + id + '&type=1'
-				})
-			},
-			goDetail(id) {
-				uni.navigateTo({
-					url: '/pages/users/message_center/messageDetail?id=' + id,
-				})
-			},
-		},
-	}
-</script>
-
-<style lang="scss" scoped>
-	.list {
-		// background-color: #fff;
-		overflow: hidden;
-		padding-top: 100rpx;
-
-		.item {
-			background-color: #fff;
-			display: flex;
-			align-items: center;
-			// height: 130rpx;
-			padding: 30rpx 30rpx;
-			margin: 10rpx 20rpx;
-			border-radius: 12rpx;
-			box-shadow: 0px 0px 1px 0px rgba(235, 214, 214, 0.75);
-			-webkit-box-shadow: 0px 0px 1px 0px rgba(235, 214, 214, 0.75);
-			-moz-box-shadow: 0px 0px 1px 0px rgba(235, 214, 214, 0.75);
-
-			~.item {
-				border-top: 1rpx solid #f5f5f5;
-			}
-
-			.image {
-				border-radius: 50%;
-			}
-
-		}
-
-		.image-wrap {
-			width: 88rpx;
-			height: 88rpx;
-			border-radius: 50%;
-			position: relative;
-
-			.no-look {
-				position: absolute;
-				width: 18rpx;
-				height: 18rpx;
-				border-radius: 50%;
-				background-color: #1ABB1D;
-				top: 0rpx;
-				right: 0rpx;
-				z-index: 999;
-			}
-		}
-
-		.image {
-			display: block;
-			width: 100%;
-			height: 100%;
-		}
-
-		.text-wrap {
-			flex: 1;
-			min-width: 0;
-			margin-left: 20rpx;
-		}
-
-		.name-wrap {
-			display: flex;
-			align-items: center;
-			font-size: 20rpx;
-			color: #ccc;
-		}
-
-		.name {
-			flex: 1;
-			min-width: 0;
-			margin-right: 20rpx;
-			overflow: hidden;
-			white-space: nowrap;
-			text-overflow: ellipsis;
-			font-size: 28rpx;
-			color: #333;
-		}
-
-		.info-wrap {
-			display: flex;
-			align-items: center;
-			margin-top: 18rpx;
-		}
-
-		.info {
-			flex: 1;
-			min-width: 0;
-			overflow: hidden;
-			white-space: nowrap;
-			text-overflow: ellipsis;
-			font-size: 24rpx;
-			color: #999;
-		}
-
-		.num {
-			min-width: 32rpx;
-			height: 32rpx;
-			border-radius: 16rpx;
-			margin-left: 20rpx;
-			background-color: #e93323;
-			font-size: 20rpx;
-			line-height: 32rpx;
-			text-align: center;
-			color: #fff;
-		}
-	}
-
-	.empty-wrap {
-		font-size: 26rpx;
-		text-align: center;
-		color: #999;
-
-		.image-wrap {
-			width: 414rpx;
-			height: 436rpx;
-			padding-top: 100rpx;
-			margin: 0rpx auto 0;
-		}
-
-		.image {
-			display: block;
-			width: 100%;
-			height: 100%;
-		}
-	}
-
-	.main {
-		position: relative;
-		min-height: 100vh;
-	}
-
-	.top-tabs {
-		position: fixed;
-		width: 100%;
-		display: flex;
-		align-items: center;
-		background-color: #fff;
-		font-size: 28rpx;
-		border-radius: 8rpx;
-		padding: 20rpx 0;
-		margin-bottom: 10rpx;
-		z-index: 1000;
-		transition: all 0.3s;
-	}
-
-	.tabs {
-		display: flex;
-		align-items: center;
-		padding: 4rpx 15rpx;
-		margin: 0 20rpx;
-		animation: Gradient 0.3s;
-		border-radius: 30rpx;
-		transition: all 0.4s;
-	}
-
-	.btborder {
-		color: #fff;
-		background-color: var(--view-theme);
-		border-radius: 30rpx;
-	}
-
-	@-webkit-keyframes Gradient {
-		0% {
-			background-color: pink;
-		}
-
-		50% {
-			background-position: 100% 50%
-		}
-
-		100% {
-			background-position: 0% 50%
-		}
-	}
-
-	@-moz-keyframes Gradient {
-		0% {
-			background-position: 0% 50%
-		}
-
-		50% {
-			background-position: 100% 50%
-		}
-
-		100% {
-			background-position: 0% 50%
-		}
-	}
-
-	@keyframes Gradient {
-		0% {
-			background-position: 0% 50%
-		}
-
-		50% {
-			background-position: 100% 50%
-		}
-
-		100% {
-			background-position: 0% 50%
-		}
-	}
+<template>
+	<view class="main">
+		<view class="top-tabs" :style="colorStyle">
+			<view class="tabs">
+				<view class="item" :class="{btborder:type === index}" v-for="(item,index) in tabsList" :key="index"
+					@tap="changeTabs(index)">
+					{{$t(item.name)}}
+				</view>
+			</view>
+			<view class="read-all">
+				全部已读
+			</view>
+		</view>
+		<view v-if="list.length && type ===1" class="list">
+			<view v-for="(item, index) in list" :key="index" class="item" @click="goChat(item.to_uid)">
+				<view class="image-wrap">
+					<image class="image" :src="item.avatar"></image>
+				</view>
+				<view class="text-wrap">
+					<view class="name-wrap">
+						<view class="name">{{ $t(item.nickname) }}</view>
+						<view>{{ item._update_time }}</view>
+					</view>
+					<view class="info-wrap">
+						<view v-if="item.message_type === 1" class="info" v-html="item.message"></view>
+						<view v-if="item.message_type === 2" class="info" v-html="item.message"></view>
+						<view v-if="item.message_type === 3" class="info">{{$t(`[图片]`)}}</view>
+						<view v-if="item.message_type === 4" class="info">{{$t(`[语音]`)}}</view>
+						<view v-if="item.message_type === 5" class="info">{{$t(`[商品]`)}}</view>
+						<view v-if="item.message_type === 6" class="info">{{$t(`[订单]`)}}</view>
+						<view class="num" v-if="item.mssage_num">{{ item.mssage_num }}</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="list" v-if="list.length && type === 0">
+			<view v-for="(item, index) in list" :key="index">
+				<tuiDrawer @click="(e)=>bindClick(e,item)" :key="item.id" :actions="!item.look ? actions :actionsIsLook"
+					:params="{id:item.id}">
+					<template v-slot:content>
+						<view class="item" @click="goDetail(item.id)">
+							<view class="image-wrap">
+								<image v-if="item.type === 1" class="image" src="../static/admin-msg.png"></image>
+								<image v-else class="image" src="../static/user-msg.png"></image>
+								<view class="no-look" v-if="!item.look"></view>
+							</view>
+							<view class="text-wrap">
+								<view class="name-wrap">
+									<view class="name">{{ $t(item.title) || '--' }}</view>
+									<view>{{ item.add_time }}</view>
+								</view>
+								<view class="info-wrap">
+									<view class="info" v-html="item.content"></view>
+								</view>
+							</view>
+						</view>
+
+					</template>
+
+				</tuiDrawer>
+			</view>
+		</view>
+		<view v-else-if="finished && !list.length" class="empty-wrap">
+			<view class="image-wrap">
+				<image class="image" :src="imgHost + '/statics/images/noMessage.png'"></image>
+			</view>
+			<view>{{$t(`亲、暂无消息记录哟!`)}}</view>
+		</view>
+		<!-- #ifndef MP -->
+		<home></home>
+		<!-- #endif -->
+	</view>
+</template>
+
+<script>
+	import {
+		serviceRecord,
+		messageSystem
+	} from '@/api/user.js';
+	import colors from '@/mixins/color.js';
+	import home from '@/components/home';
+	import tuiDrawer from '@/components/tuiDrawer/index.vue'
+	import {
+		HTTP_REQUEST_URL
+	} from '@/config/app';
+	export default {
+		mixins: [colors],
+		components: {
+			home,
+			tuiDrawer
+		},
+		data() {
+			return {
+				imgHost: HTTP_REQUEST_URL,
+				list: [],
+				page: 1,
+				type: 0,
+				limit: 20,
+				loading: false,
+				finished: false,
+				tabsList: [{
+					key: 0,
+					name: '站内消息'
+				}, {
+					key: 1,
+					name: '客服消息'
+				}],
+				startData: {
+					clientX: 0,
+					clientY: 0
+				},
+				actions: [{
+						name: '删除',
+						color: '#fff',
+						fontsize: 28, //单位rpx
+						width: 70, //单位px
+						background: '#E6A23C'
+					},
+					{
+						name: '已读',
+						color: '#fff',
+						fontsize: 28, //单位rpx
+						width: 70, //单位px
+						background: '#409EFF'
+					},
+				],
+				actionsIsLook: [{
+					name: '删除',
+					color: '#fff',
+					fontsize: 28, //单位rpx
+					width: 70, //单位px
+					background: '#E6A23C'
+				}, ]
+			};
+		},
+		onShow() {
+			this.page = 1
+			this.list = []
+			console.log(this.type)
+			this.changeTabs(this.type)
+		},
+		onReachBottom() {
+			if (this.type === 1) {
+				this.getList()
+			} else {
+				this.messageSystem()
+			}
+		},
+		onPullDownRefresh() {
+			console.log('refresh');
+			this.page = 1
+			this.finished = false
+			this.list = []
+			if (this.type === 1) {
+				this.getList()
+			} else {
+				this.messageSystem()
+			}
+		},
+		methods: {
+			start(e) {
+				this.startData.clientX = e.changedTouches[0].clientX;
+				this.startData.clientY = e.changedTouches[0].clientY;
+			},
+			end(e) {
+				// console.log(e)
+				const subX = e.changedTouches[0].clientX - this.startData.clientX;
+				const subY = e.changedTouches[0].clientY - this.startData.clientY;
+				if (subY > 50 || subY < -50) {
+					console.log('上下滑')
+				} else {
+					if (subX > 50) {
+						console.log('右滑')
+						if (this.type == 1) {
+							this.type = 0
+							this.changeTabs(this.type)
+						}
+					} else if (subX < -50) {
+						if (this.type == 0) {
+							this.type = 1
+							this.changeTabs(this.type)
+						}
+						console.log('左滑')
+					} else {
+						console.log('无效')
+					}
+				}
+			},
+			// 滑动点击操作
+			bindClick(e, item) {
+				console.log(e, item)
+				if (e.index == 0) {
+					// 删除逻辑
+				} else {
+					// 已读
+				}
+			},
+			changeTabs(index) {
+				this.type = index
+				this.page = 1
+				this.limit = 20
+				this.list = []
+				this.finished = false
+				if (index === 1) {
+					this.getList()
+				} else {
+					this.messageSystem()
+				}
+			},
+			// 站内信
+			messageSystem() {
+				if (this.loading || this.finished) {
+					return;
+				}
+				this.loading = true;
+				uni.showLoading({
+					title: this.$t(`加载中`)
+				});
+				messageSystem({
+						page: this.page,
+						limit: this.limit
+					})
+					.then(res => {
+						console.log(res)
+						let data = res.data;
+						uni.hideLoading();
+						this.loading = false;
+						this.list = this.list.concat(data.list);
+						this.finished = data.list.length < this.limit;
+						this.page += 1;
+						uni.stopPullDownRefresh();
+					})
+					.catch(err => {
+						console.log(err)
+						uni.showToast({
+							title: err.msg,
+							icon: 'none'
+						})
+					})
+			},
+			// 客服list
+			getList() {
+				if (this.loading || this.finished) {
+					return;
+				}
+				this.loading = true;
+				uni.showLoading({
+					title: '加载中'
+				});
+				serviceRecord({
+						page: this.page,
+						limit: this.limit
+					})
+					.then(res => {
+						uni.stopPullDownRefresh();
+						let data = res.data;
+						uni.hideLoading();
+						this.loading = false;
+						data.forEach(item => {
+							if (item.message_type === 1) {
+								item.message = this.replace_em(item.message);
+							}
+							if (item.message_type === 2) {
+								item.message = this.replace_em(item.message);
+							}
+						});
+						this.list = this.list.concat(data);
+						this.finished = data.length < this.limit;
+						this.page += 1;
+					})
+					.catch(err => {
+						uni.showToast({
+							title: err.msg,
+							icon: 'none'
+						})
+					})
+			},
+			replace_em(str) {
+				str = str.replace(/\[em-([a-z_]*)\]/g, "<span class='em em-$1'/></span>");
+				return str;
+			},
+			goChat(id) {
+				uni.navigateTo({
+					url: '/pages/extension/customer_list/chat?to_uid=' + id + '&type=1'
+				})
+			},
+			goDetail(id) {
+				uni.navigateTo({
+					url: '/pages/users/message_center/messageDetail?id=' + id,
+				})
+			},
+		},
+	}
+</script>
+
+<style lang="scss" scoped>
+	.list {
+		// background-color: #fff;
+		overflow: hidden;
+		padding-top: 100rpx;
+
+		.item {
+			background-color: #fff;
+			display: flex;
+			align-items: center;
+			// height: 130rpx;
+			padding: 30rpx 30rpx;
+			margin: 10rpx 20rpx;
+			border-radius: 12rpx;
+			box-shadow: 0px 0px 1px 0px rgba(235, 214, 214, 0.75);
+			-webkit-box-shadow: 0px 0px 1px 0px rgba(235, 214, 214, 0.75);
+			-moz-box-shadow: 0px 0px 1px 0px rgba(235, 214, 214, 0.75);
+
+			~.item {
+				border-top: 1rpx solid #f5f5f5;
+			}
+
+			.image {
+				border-radius: 50%;
+			}
+
+		}
+
+		.image-wrap {
+			width: 88rpx;
+			height: 88rpx;
+			border-radius: 50%;
+			position: relative;
+
+			.no-look {
+				position: absolute;
+				width: 18rpx;
+				height: 18rpx;
+				border-radius: 50%;
+				background-color: #1ABB1D;
+				top: 0rpx;
+				right: 0rpx;
+				z-index: 999;
+			}
+		}
+
+		.image {
+			display: block;
+			width: 100%;
+			height: 100%;
+		}
+
+		.text-wrap {
+			flex: 1;
+			min-width: 0;
+			margin-left: 20rpx;
+		}
+
+		.name-wrap {
+			display: flex;
+			align-items: center;
+			font-size: 20rpx;
+			color: #ccc;
+		}
+
+		.name {
+			flex: 1;
+			min-width: 0;
+			margin-right: 20rpx;
+			overflow: hidden;
+			white-space: nowrap;
+			text-overflow: ellipsis;
+			font-size: 28rpx;
+			color: #333;
+		}
+
+		.info-wrap {
+			display: flex;
+			align-items: center;
+			margin-top: 18rpx;
+		}
+
+		.info {
+			flex: 1;
+			min-width: 0;
+			overflow: hidden;
+			white-space: nowrap;
+			text-overflow: ellipsis;
+			font-size: 24rpx;
+			color: #999;
+		}
+
+		.num {
+			min-width: 32rpx;
+			height: 32rpx;
+			border-radius: 16rpx;
+			margin-left: 20rpx;
+			background-color: #e93323;
+			font-size: 20rpx;
+			line-height: 32rpx;
+			text-align: center;
+			color: #fff;
+		}
+	}
+
+	.empty-wrap {
+		font-size: 26rpx;
+		text-align: center;
+		color: #999;
+
+		.image-wrap {
+			width: 414rpx;
+			height: 436rpx;
+			padding-top: 100rpx;
+			margin: 0rpx auto 0;
+		}
+
+		.image {
+			display: block;
+			width: 100%;
+			height: 100%;
+		}
+	}
+
+	.main {
+		position: relative;
+		min-height: 100vh;
+	}
+
+	.top-tabs {
+		position: fixed;
+		width: 100%;
+		display: flex;
+		align-items: center;
+		background-color: #fff;
+		font-size: 28rpx;
+		border-radius: 8rpx;
+		padding: 20rpx 0;
+		margin-bottom: 10rpx;
+		z-index: 1000;
+		transition: all 0.3s;
+		justify-content: space-between;
+
+		.read-all {
+			margin-right: 24rpx;
+			font-size: 24rpx;
+		}
+	}
+
+	.tabs {
+		display: flex;
+	}
+
+	.item {
+		display: flex;
+		align-items: center;
+		padding: 4rpx 15rpx;
+		margin: 0 20rpx;
+		animation: Gradient 0.3s;
+		border-radius: 30rpx;
+		transition: all 0.4s;
+	}
+
+	.btborder {
+		color: #fff;
+		background-color: var(--view-theme);
+		border-radius: 30rpx;
+	}
+
+	@-webkit-keyframes Gradient {
+		0% {
+			background-color: pink;
+		}
+
+		50% {
+			background-position: 100% 50%
+		}
+
+		100% {
+			background-position: 0% 50%
+		}
+	}
+
+	@-moz-keyframes Gradient {
+		0% {
+			background-position: 0% 50%
+		}
+
+		50% {
+			background-position: 100% 50%
+		}
+
+		100% {
+			background-position: 0% 50%
+		}
+	}
+
+	@keyframes Gradient {
+		0% {
+			background-position: 0% 50%
+		}
+
+		50% {
+			background-position: 100% 50%
+		}
+
+		100% {
+			background-position: 0% 50%
+		}
+	}
 </style>

+ 1 - 2
template/uni-app/pages/users/user_address_list/index.vue

@@ -361,11 +361,10 @@
 					this.cartId = '';
 					this.pinkId = '';
 					this.couponId = '';
-					let noCouponUrl = this.noCoupon == 1 ? '&noCoupon=' + this.noCoupon : '';
 					uni.redirectTo({
 						url: '/pages/goods/order_confirm/index?is_address=1&new=' + this.news + '&cartId=' +
 							cartId + '&addressId=' + id + '&pinkId=' +
-							pinkId + '&couponId=' + couponId + noCouponUrl
+							pinkId + '&couponId=' + couponId + '&noCoupon=' + this.noCoupon
 							
 					})
 				}

+ 3 - 0
template/uni-app/pages/users/user_cancellation/index.vue

@@ -39,6 +39,7 @@
 		getUserAgreement,
 		cancelUser
 	} from '@/api/user.js'
+	const app = getApp();
 	export default {
 		mixins: [colors],
 		data() {
@@ -58,6 +59,8 @@
 			},
 			cancelUser() {
 				cancelUser().then(res => {
+					app.globalData.spid = '';
+					app.globalData.pid = '';
 					this.$store.commit("LOGOUT");
 					uni.reLaunch({
 						url: '/pages/index/index'

+ 11 - 0
template/uni-app/pages/users/user_payment/index.vue

@@ -259,7 +259,18 @@
 					}).then(res => {
 						uni.hideLoading();
 						let jsConfig = res.data;
+						// #ifdef MP
+						let mp_pay_name=''
+						if(uni.requestOrderPayment){
+							mp_pay_name='requestOrderPayment'
+						}else{
+							mp_pay_name='requestPayment'
+						}
+						uni[mp_pay_name]({
+						// #endif
+						// #ifdef APP-PLUS
 						uni.requestPayment({
+						// #endif
 							// #ifdef MP
 							timeStamp: jsConfig.timestamp,
 							nonceStr: jsConfig.nonceStr,