ylong пре 9 месеци
родитељ
комит
4b065abd71

+ 2 - 2
App.vue

@@ -61,13 +61,13 @@
 			console.log('解析出的 scene 参数:', params);
 			console.log('解析出的 scene 参数:', params);
 			// 假设链接参数中有一个名为 inviteCode 的参数
 			// 假设链接参数中有一个名为 inviteCode 的参数
 			if (params.inviteCode) {
 			if (params.inviteCode) {
-				wx.setStorageSync('inviteCode', params.inviteCode)
+				uni.setStorageSync('inviteCode', params.inviteCode)
 				console.log('解析出的 inviteCode 参数:', params.inviteCode);
 				console.log('解析出的 inviteCode 参数:', params.inviteCode);
 				this.slientLogin(params.inviteCode);
 				this.slientLogin(params.inviteCode);
 			}
 			}
 			// 用于书籍加价的邀请码,关联订单 id 和 isbn
 			// 用于书籍加价的邀请码,关联订单 id 和 isbn
 			if(params.upsellCode){
 			if(params.upsellCode){
-				wx.setStorageSync('upsellCode', params.upsellCode)
+				uni.setStorageSync('upsellCode', params.upsellCode)
 				that.globalData.upsellCode = params.upsellCode
 				that.globalData.upsellCode = params.upsellCode
 				console.log('解析出的 upsellCode 参数:', params.upsellCode);
 				console.log('解析出的 upsellCode 参数:', params.upsellCode);
 				this.slientLogin();
 				this.slientLogin();

+ 5 - 1
components/floating-activity.vue

@@ -8,7 +8,7 @@
     @position-change="onPositionChange"
     @position-change="onPositionChange"
   >
   >
     <view class="floating-btn">
     <view class="floating-btn">
-      <image src="/static/img/activity.png" class="icon"></image>
+      <image :src="img" class="icon"></image>
     </view>
     </view>
   </floating-drag>
   </floating-drag>
 </template>
 </template>
@@ -22,6 +22,10 @@ export default {
     FloatingDrag,
     FloatingDrag,
   },
   },
   props: {
   props: {
+    img: {
+      type: String,
+      default: "",
+    },
     // 是否显示
     // 是否显示
     visible: {
     visible: {
       type: Boolean,
       type: Boolean,

+ 0 - 162
components/navbar/navbar-city-search.vue

@@ -1,162 +0,0 @@
-<template>
-	<view class="slot">
-		<view class="navbar" :style="[{ minHeight: navBarHeight + 'px' }]">
-			<view
-				class="inner"
-				:style="[
-					{ minHeight: menuHeight + 'px' },
-					{ lineHeight: menuHeight + 'px' },
-					{ paddingLeft: menuRight * 2 + 'px' },
-					{ paddingRight: menuRight * 2 + 'px' },
-					{ paddingTop: navBarHeight - menuHeight - menuTop + 'px' },
-					{ paddingBottom: '20rpx' }
-				]"
-			>
-				<view class="loaction-slot">
-					<view class="loaction-title" v-if="locationStatus == 1"><text>正在获取地理位置...</text></view>
-					<view class="loaction-title" v-if="locationStatus == 2" @click="goCitySelectPage">
-						<text>{{ cityListSelected ? cityListSelected : locationCity }}</text>
-						<u-icon style="margin-left: 8rpx;" :size="18" color="#171717" name="arrow-down-fill"></u-icon>
-					</view>
-					<view class="loaction-title" v-if="locationStatus == 3" @click="getLocation(true)"><text>地理位置获取失败,点击重试</text></view>
-				</view>
-				<view class="search-slot" :style="{ paddingTop: menuTop + 'px' }">
-					<u-search @click="goSearchPage" disabled :placeholder="placeholder" :showAction="false" shape="square" borderRadius="0rpx" bg-color="#F4F5F8"></u-search>
-				</view>
-			</view>
-		</view>
-		<view class="slot-height" :style="[{ height: navBarHeight + menuHeight + menuTop + 11 + 'px' }]"></view>
-	</view>
-</template>
-
-<script>
-import { getLocation, getLocationAgain } from '@/utils/location.js';
-const app = getApp();
-export default {
-	name: 'navbar-city-search',
-	props: {
-		// 标题
-		title: {
-			type: String,
-			default: '标题'
-		},
-		// 占位内容
-		placeholder: {
-			type: String,
-			default: '请输入'
-		},
-		// 已经选择的城市
-		cityListSelected: {
-			type: String,
-			default: ''
-		}
-	},
-	data() {
-		return {
-			// 导航栏高度
-			menuTop: app.globalData.menuTop,
-			navBarHeight: app.globalData.navBarHeight,
-			menuRight: app.globalData.menuRight,
-			menuBotton: app.globalData.menuBotton,
-			menuHeight: app.globalData.menuHeight,
-			statusBarHeight: app.globalData.statusBarHeight,
-			// 定位数据
-			locationData: {},
-			// 当前城市
-			locationCity: '',
-			// 获取地理位置状态,1正在获取,2获取成功,3失败
-			locationStatus: 1
-		};
-	},
-	mounted() {
-		if (this.cityListSelected) {
-			this.locationStatus = 2;
-		} else {
-			this.getLocation();
-		}
-	},
-	methods: {
-		// 跳转城市选择页面
-		goCitySelectPage() {
-			uni.navigateTo({
-				url: '/pages/home/city-list?nowCity=' + this.locationCity
-			});
-		},
-
-		// 去搜索页面
-		goSearchPage() {
-			uni.navigateTo({
-				url: '/pages/search'
-			});
-		},
-
-		// 获取地理位置
-		async getLocation(isAgain = false) {
-			this.locationStatus = 1;
-			if (!isAgain) {
-				getLocation(res => {
-					this.setLocationData(res);
-				});
-			} else {
-				getLocationAgain(res => {
-					this.setLocationData(res);
-				});
-			}
-		},
-
-		// 设置定位数据
-		setLocationData(res) {
-			if (res.status) {
-				this.locationStatus = 2;
-				this.locationData = res.data;
-				this.locationCity = res.data.ad_info.city;
-				this.$store.commit('user/COMMIT_LOACTION_INFO', res.data);
-			} else {
-				this.locationStatus = 3;
-				uni.showToast({
-					title: '获取地理位置失败',
-					duration: 3000,
-					icon: 'none'
-				});
-			}
-		}
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-.slot {
-	width: 100vw;
-}
-.navbar {
-	width: 100%;
-	position: fixed;
-	top: 0;
-	left: 0;
-	z-index: 899;
-	overflow: hidden;
-}
-
-.inner {
-	width: 100%;
-	height: 100%;
-	background-color: $app-theme-bg-color;
-}
-
-.loaction-slot {
-	display: flex;
-	align-items: center;
-	.loaction-title {
-		display: flex;
-		align-items: center;
-		text {
-			font-size: 32rpx;
-			font-family: PingFang SC;
-			font-weight: 400;
-			color: $app-theme-text-black-color;
-		}
-	}
-}
-.search-slot {
-}
-</style>

+ 24 - 3
pages-home/components/BookItem.vue

@@ -10,10 +10,15 @@
             <view class="book-detail">
             <view class="book-detail">
                 <view class="top-info">
                 <view class="top-info">
                     <view class="book-title">{{ book.bookName }}</view>
                     <view class="book-title">{{ book.bookName }}</view>
-                    <view class="book-tags">
-                        <text class="tzs tag-text" v-if="book.suit == 1">套装书</text>
-                        <text class="kmdb tag-text" v-if="book.maxNum > 1">可卖多本</text>
+
+                    <view class="upsell-info">
+                        <view class="book-tags">
+                            <text class="tzs tag-text" v-if="book.suit == 1">套装书</text>
+                            <text class="kmdb tag-text" v-if="book.maxNum > 1">可卖多本</text>
+                        </view>
+                        <text class="has-upsell" v-if="book.currUpsellMoney">已加价 {{ book.currUpsellMoney }} 元</text>
                     </view>
                     </view>
+                    
                 </view>
                 </view>
 
 
                 <view class="flex flex-j-b flex-a-c">
                 <view class="flex flex-j-b flex-a-c">
@@ -124,6 +129,22 @@ export default {
                 background: #f9f9f9 !important;
                 background: #f9f9f9 !important;
                 border-radius: 6rpx;
                 border-radius: 6rpx;
             }
             }
+            
+            .upsell-info{
+                display: flex;
+                align-items: center;
+                justify-content: space-between;
+            }
+            .has-upsell {
+                font-size: 22rpx;
+                padding: 2rpx 10rpx;
+                border-radius: 4rpx;
+                margin-right: 10rpx;
+                display: inline-flex;
+                align-items: center;
+                color: #276f1e;
+                background-color: #a8dda2;
+            }
 
 
             .book-title {
             .book-title {
                 max-width: 400rpx;
                 max-width: 400rpx;

+ 1 - 1
pages-home/pages/book-order.vue

@@ -148,7 +148,7 @@ export default {
             return this.books.reduce((sum, book) => sum + (book.num || 1), 0);
             return this.books.reduce((sum, book) => sum + (book.num || 1), 0);
         },
         },
         totalPrice() {
         totalPrice() {
-            return this.books.reduce((sum, book) => sum + book.recycleMoney, 0).toFixed(2);
+            return this.books.reduce((sum, book) => sum + book.recycleMoney + book.currUpsellMoney||0, 0).toFixed(2);
         },
         },
     },
     },
     methods: {
     methods: {

+ 15 - 0
pages-mine/components/detail-book-item.vue

@@ -12,6 +12,10 @@
 
 
                     <view class="flex flex-j-b flex-a-c mt-20" v-if="!isReturn">
                     <view class="flex flex-j-b flex-a-c mt-20" v-if="!isReturn">
                         <view class="book-price">预估价: ¥{{ book.expectMoney }}</view>
                         <view class="book-price">预估价: ¥{{ book.expectMoney }}</view>
+
+                        <view class="has-upsell" v-if="book.upsellExpectMoney">
+                            已加价 {{ book.upsellExpectMoney }} 元
+                        </view>
                     </view>
                     </view>
                 </view>
                 </view>
                 <view v-if="isReturn" class="book-price">退回信息</view>
                 <view v-if="isReturn" class="book-price">退回信息</view>
@@ -91,6 +95,17 @@ export default {
     margin-bottom: 30rpx;
     margin-bottom: 30rpx;
     border-radius: 10rpx;
     border-radius: 10rpx;
 
 
+    .has-upsell{
+        font-size: 22rpx;
+        padding: 2rpx 10rpx;
+        border-radius: 4rpx;
+        margin-right: 10rpx;
+        display: inline-flex;
+        align-items: center;
+        color: #276f1e;
+        background-color: #a8dda2;
+    }
+
     .tag-text {
     .tag-text {
         font-family: Source Han Sans CN;
         font-family: Source Han Sans CN;
         font-weight: 400;
         font-weight: 400;

+ 1 - 1
pages-mine/pages/partner/partner-home.vue

@@ -2,7 +2,7 @@
     <view class="partner-home">
     <view class="partner-home">
         <!-- 头部信息 -->
         <!-- 头部信息 -->
         <view class="header">
         <view class="header">
-            <image class="avatar" src="/static/img/logo.png" mode="aspectFit"></image>
+            <image class="avatar" src="https://shuhi.oss-cn-qingdao.aliyuncs.com/mini/logo.png" mode="aspectFit"></image>
             <view class="header-text">
             <view class="header-text">
                 <text class="title">您好,合伙人</text>
                 <text class="title">您好,合伙人</text>
                 <text class="subtitle">这里是合伙人数据中心</text>
                 <text class="subtitle">这里是合伙人数据中心</text>

+ 2 - 1
pages/home/components/upsell-book.vue

@@ -113,6 +113,7 @@ export default {
               });
               });
             }
             }
             this.inviteUsers = inviteUsers;
             this.inviteUsers = inviteUsers;
+            uni.setStorageSync("upsellCodeShare", res.data.upsellCode);
           }
           }
         });
         });
     },
     },
@@ -142,7 +143,7 @@ export default {
       this.showPopup = false;
       this.showPopup = false;
     },
     },
     shareAction() {
     shareAction() {
-      this.$emit("share");
+      this.$emit("share", this.bookInfo);
     },
     },
     scanAction() {
     scanAction() {
       this.showPopup = false;
       this.showPopup = false;

+ 19 - 10
pages/home/index.vue

@@ -205,6 +205,7 @@ export default {
       initialBottom: 0,
       initialBottom: 0,
       // 是否正在更新位置,用于防止频繁更新
       // 是否正在更新位置,用于防止频繁更新
       isUpdatingPosition: false,
       isUpdatingPosition: false,
+      shareData: {},
     };
     };
   },
   },
   computed: {
   computed: {
@@ -227,7 +228,7 @@ export default {
     },
     },
     totalPrice() {
     totalPrice() {
       return this.bookList
       return this.bookList
-        .reduce((sum, book) => sum + book.recyclePrice * (book.num || 1), 0)
+        .reduce((sum, book) => sum + book.recyclePrice * (book.num || 1) + book.currUpsellMoney||0, 0)
         .toFixed(2);
         .toFixed(2);
     },
     },
     isDisabled() {
     isDisabled() {
@@ -241,22 +242,21 @@ export default {
   },
   },
   // 分享配置
   // 分享配置
   onShareAppMessage() {
   onShareAppMessage() {
-    let userInfo = uni.getStorageSync("userInfo");
-    let userId = userInfo.userId;
+    let upsellCode = uni.getStorageSync("upsellCodeShare");
+    console.log(upsellCode, "分享");
     return {
     return {
       title: "书嗨",
       title: "书嗨",
-      path: "/pages/home/index?inviteUserId=" + userId,
+      path: "/pages/home/index?upsellCode=" + upsellCode,
       imageUrl: "https://shuhi.oss-cn-qingdao.aliyuncs.com/mini/share.jpg",
       imageUrl: "https://shuhi.oss-cn-qingdao.aliyuncs.com/mini/share.jpg",
     };
     };
   },
   },
 
 
   // 分享到朋友圈
   // 分享到朋友圈
   onShareTimeline() {
   onShareTimeline() {
-    let userInfo = uni.getStorageSync("userInfo");
-    let userId = userInfo.userId;
+    let upsellCode = uni.getStorageSync("upsellCodeShare");
     return {
     return {
       title: "书嗨",
       title: "书嗨",
-      path: "/pages/home/index?inviteUserId=" + userId,
+      path: "/pages/home/index?upsellCode=" + upsellCode,
       imageUrl: "https://shuhi.oss-cn-qingdao.aliyuncs.com/mini/share.jpg",
       imageUrl: "https://shuhi.oss-cn-qingdao.aliyuncs.com/mini/share.jpg",
     };
     };
   },
   },
@@ -268,11 +268,17 @@ export default {
         this.screenHeight = res.windowHeight;
         this.screenHeight = res.windowHeight;
       },
       },
     });
     });
-    console.log(app.globalData, "获取全局参数globalData");
     if (app.globalData.upsellCode) {
     if (app.globalData.upsellCode) {
       this.$refs.shareRef?.open(app.globalData.upsellCode);
       this.$refs.shareRef?.open(app.globalData.upsellCode);
     }
     }
   },
   },
+  onLoad(options) {
+    console.log(options, "获取参数");
+    if (options.upsellCode) {
+      this.$refs.shareRef?.open(options.upsellCode);
+    }
+  },
+
   methods: {
   methods: {
     //扫码助力
     //扫码助力
     handleScanCode(data = {}) {
     handleScanCode(data = {}) {
@@ -280,8 +286,8 @@ export default {
     },
     },
 
 
     slientLogin() {
     slientLogin() {
-      let inviteCode = wx.getStorageSync("inviteCode") || "";
-      let token = wx.getStorageSync("token");
+      let inviteCode = uni.getStorageSync("inviteCode") || "";
+      let token = uni.getStorageSync("token");
       if (token) return;
       if (token) return;
       uni.login({
       uni.login({
         success(res) {
         success(res) {
@@ -632,6 +638,9 @@ export default {
   color: #ff0000;
   color: #ff0000;
   margin: 0 10rpx;
   margin: 0 10rpx;
 }
 }
+.color-green {
+  color: #276f1e;
+}
 
 
 .bottom-fixed {
 .bottom-fixed {
   position: fixed;
   position: fixed;

+ 0 - 458
pages/login/index.vue

@@ -1,458 +0,0 @@
-<template>
-	<view class="page">
-		<!-- logo -->
-		<view class="logo-wrap" v-if="pageStatus == 'home' || pageStatus == 'getWxRole'">
-			<image mode="aspectFit" class="logo" src="https://shuhi.oss-cn-qingdao.aliyuncs.com/mini/logo.png"></image>
-			<!-- <u-image width="300" height="300" src="../../static/img/logo.png" mode="aspectFit"></u-image> -->
-			<!-- <view class="app-name">书嗨</view> -->
-		</view>
-		<!-- <view class="" v-for="(item,index) in loglist" :key="index">
-			{{item}}
-		</view> -->
-		<!-- 默认登录页面显示 -->
-		<view style="width: 100%;" v-if="pageStatus == 'home'">
-			<view class="text-area" @click="loginByWxFun">一键登录</view>
-		</view>
-
-		<!-- 微信授权登录,获取用户信息 -->
-		<view style="width: 100%;" v-if="pageStatus == 'getWxRole'">
-			<view class="info">为提供优质服务,需要获取你的以下信息 :</view>
-			<view class="public">
-				<view class="public-dot"></view>
-				<view class="public-text">你的公开信息(头像、昵称等)</view>
-			</view>
-			<view class="text-enter" @click="getWxLoginRole">授权进入</view>
-		</view>
-
-		<!-- 微信登录小程序,再授权获取用户信息之后 -->
-		<view class="loginWx" v-if="is_new_user">
-			<view class="title">欢迎使用书嗨</view>
-			<view class="desc">立即登录享受优质服务</view>
-			<view class="avatar"><image mode="aspectFill" :src="wxLoginUserInfo.userInfo.avatarUrl"></image></view>
-			<!--  v-if="is_new_user" -->
-			<u-button type="success" open-type="getPhoneNumber" @getphonenumber="decryptPhoneNumber">手机号快捷登录</u-button>
-			<!-- <u-button type="success" v-else @click.stop="handleLogin">一键登录</u-button> -->
-		</view>
-
-	
-
-		<!-- 协议勾选 -->
-		<view class="agree" v-if="pageStatus == 'home' || pageStatus == 'getWxRole'">
-			<view class="agree_img" @click="changeAgreeFlag" v-show="!agree_flag"><image src="../../static/icon/check.png"></image></view>
-			<view class="agree_img" @click="changeAgreeFlag" v-show="agree_flag"><image src="../../static/icon/checked.png"></image></view>
-			<view class="agree_text">
-				登录代表您已同意
-				<span @click="goArticleDetail('agreement','用户协议')">《用户服务协议》</span><span @click="goArticleDetail('privacy_policy','隐私政策')">《隐私权政策》</span>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-import FunUniappTheme from '@/theme.scss';
-var _self;
-export default {
-	data() {
-		return {
-			loglist:[],
-			// 页面状态,默认为 home
-			// getWxRole:获取微信权限页,loginByWx:微信授权登录页
-			pageStatus: 'home',
-			is_new_user:false,
-			// 协议是否勾选
-			agree_flag: false,
-			// 微信授权的用户信息
-			wxLoginUserInfo: {},
-			// openid
-			openId: '',
-			// jscode:换取openid需要用到的code
-			jscode:'',
-			// 系统内用户信息
-			userInfo: {},
-		};
-	},
-	onLoad() {
-		_self = this;
-	},
-
-	methods: {
-		subScribeMsg(callBack) {
-			uni.getSetting({
-				withSubscriptions: true,
-				success(res) {
-					console.log('1', res, '订阅信息', res.subscriptionsSetting);
-					if (!res.subscriptionsSetting.mainSwitch) {
-						uni.openSetting({ //打开设置页
-							success(res) {
-								console.log('打开设置页', res.authSetting);
-							}
-						})
-					} else {
-						uni.requestSubscribeMessage({
-							tmplIds: ['Sfa68XDGAUQveX50PcP_Ep6ngNz3luvXJNwzASjzzvQ',
-								'_VxaYVnVTj3aG_wengF8KNFDI3WRhOrFseBerx8xvXE',
-							],
-							success(res) {
-								console.log('requestSubscribeMessage 订阅信息', res);
-								if (res['Sfa68XDGAUQveX50PcP_Ep6ngNz3luvXJNwzASjzzvQ'] == "accept") { // 用户点击确定后
-									console.log('用户订阅点击确定按钮');
-									// _self.getSubMsg()
-								} else {
-									console.log('拒绝');
-								}
-							},
-							fail(errMessage) {
-								console.log("订阅消息 失败 ", errMessage);
-							},
-							// 不管成功或失败都要执行
-							complete() {
-								// if (_self.ordercode == null) return _self.getOrder();
-								// if (_self.ordercode != null) return _self.getPayOrder();
-								// uni.navigateTo({
-								// 	url: '/pages-mall/pages/order/detail?order_id='+_self.orderId
-								// });
-								callBack();
-							}
-						})
-					}
-				},
-			})
-		},
-			
-		// 勾选/取消用于协议
-		changeAgreeFlag() {
-			this.agree_flag = !this.agree_flag;
-		},
-
-		// 微信登录
-		loginByWxFun() {
-			if (!this.agree_flag) {
-				uni.showToast({
-					icon: 'none',
-					title: '请先阅读并勾选协议'
-				});
-				return;
-			}
-			this.pageStatus = 'getWxRole';
-		},
-
-		// 自定义navbar的返回方法
-		navbarBack() {
-			this.pageStatus = 'home';
-		},
-
-		// 基于uni的获取code方法
-		getWxCode(callBack) {
-			_self.loglist.push('uni.login');
-			uni.login({
-				provider: 'weixin',
-				onlyAuthorize: true,
-				success: loginRes => {
-					_self.loglist.push('116,loginRes::'+JSON.stringify(loginRes));
-					this.jscode = loginRes.code;
-					// return;
-					callBack(loginRes.code);
-				},
-				fail(e) {
-					_self.loglist.push('122::'+JSON.stringify(e));
-				}
-			});
-		},
-		// 微信授权 微信用户信息
-		getWxLoginRole() {
-			if (!this.agree_flag) {
-				uni.showToast({
-					icon: 'none',
-					title: '请先阅读并勾选协议'
-				});
-				return;
-			}
-			// _self.subScribeMsg(()=>{
-				
-			
-			// this.getUserInfoByWx(() => {
-				this.getWxCode(code => {
-					uni.showLoading({
-						title: '登录中'
-					});
-					_self.loglist.push('140::登录中');
-					this.$u.api.loginAjax({
-						js_code:code
-					}).then(res => {
-						_self.loglist.push('144登录>>>>>'+JSON.stringify(res));
-						uni.hideLoading();
-						if(res.code==1){
-							if(res.data.is_new_user==1){
-								// 新用户注册
-								_self.is_new_user = true;
-								_self.pageStatus = 'loginByWx';
-								return;
-							}
-							// 正常登录
-							uni.showToast({
-								icon: 'none',
-								title: '登录成功~'
-							});
-							
-							this.$store.commit("user/commitUserInfo",res.data);
-							this.$store.commit("user/commitToken",res.data.token);
-							uni.setStorage({
-								key: 'token',
-								data: res.data.token,
-								success() {
-									uni.$emit('getUserInfo');
-									uni.navigateBack();
-								},
-							})
-							
-						}
-						
-					}).catch((error)=>{
-						_self.loglist.push('164登录>>>>>'+JSON.stringify(error));
-					});
-					
-				});
-			// });
-			// })
-		},
-
-
-		// 获取个人信息
-		getUserInfoByWx(callBack) {
-			let _self = this;
-			console.log('>>>>>>:getUserInfoByWx');
-			_self.$u.toast('>>>>>>:getUserInfoByWx');
-			uni.getUserProfile({
-				desc: '获取你的昵称、头像',
-				success: function(data) {
-					console.log(data);
-					uni.setStorageSync({
-						key: 'APP_WX_USERINFO',
-						data: data
-					});
-					_self.wxLoginUserInfo = data;
-					_self.pageStatus = 'loginByWx';
-					callBack();
-				},
-				fail: function(error) {}
-			});
-		},
-
-		// 获取手机号回调
-		decryptPhoneNumber(e) {
-			_self.loglist.push('197::>>'+JSON.stringify(e.detail));
-			// 获取到code,调用接口去注册
-			this.getWxCode(code => {
-				_self.loglist.push('200::>>'+JSON.stringify({
-					js_code:code,
-					avatar:"",
-					nickname:"微信用户",//this.wxLoginUserInfo.userInfo.nickName
-					code:e.detail.code
-				}));
-				this.$u.api.loginAjax({
-					js_code:code,
-					avatar:"",
-					nickname:"微信用户",
-					code:e.detail.code
-				}).then(res => {
-					console.log(res);
-					_self.loglist.push('207:::'+JSON.stringify(res))
-					if(res.code==1){
-						this.$store.commit("user/commitUserInfo",res.data);
-						this.$store.commit("user/commitToken",res.data.token);
-						uni.$emit('getUserInfo');
-						uni.navigateBack();
-					}
-				}).catch((error)=>{
-					_self.loglist.push('215:::'+JSON.stringify(error))
-				});
-			});
-		},
-
-
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-.page {
-	padding: 0 40rpx;
-	background-color: $app-theme-bg-color;
-}
-
-.logo-wrap {
-	display: flex;
-	justify-content: center;
-	padding-top: 100rpx;
-	padding-bottom: 240rpx;
-	flex-wrap: wrap;
-	.logo {
-		width: 300rpx;
-		height: 300rpx;
-	}
-	.app-name {
-		width: 100%;
-		padding-top: 40rpx;
-		text-align: center;
-		font-size: 44rpx;
-		font-weight: 500;
-		color: $app-theme-text-black-color;
-	}
-}
-
-.text-area {
-	width: 100%;
-	height: 96rpx;
-	background: $app-theme-color;
-	font-weight: 400;
-	border-radius: 56rpx;
-	color: $app-theme-text-white-color;
-	line-height: 16px;
-	font-size: 32rpx;
-	text-align: center;
-	line-height: 96rpx;
-	/* background: url(../../static/img/logo_newhope.png); */
-}
-
-.info {
-	font-size: 28rpx;
-	font-weight: 400;
-	color: $app-theme-text-black-color;
-	line-height: 28rpx;
-	margin-top: 180rpx;
-}
-
-.public {
-	display: flex;
-	align-items: center;
-	margin-top: 30rpx;
-
-	.public-dot {
-		width: 6rpx;
-		height: 6rpx;
-		background: #999999;
-		margin-right: 10rpx;
-	}
-
-	.public-text {
-		font-size: 24rpx;
-		font-weight: 400;
-		color: #8f92a1;
-		line-height: 24rpx;
-	}
-}
-
-.text-enter {
-	width: 100%;
-	margin-top: 50rpx;
-	height: 96rpx;
-	background: $app-theme-color;
-	font-weight: 400;
-	border-radius: 56rpx;
-	color: #ffffff;
-	line-height: 16px;
-	font-size: 32rpx;
-	text-align: center;
-	line-height: 96rpx;
-}
-
-.head {
-	margin-top: 70rpx;
-	width: 100%;
-	display: flex;
-	justify-content: space-between;
-}
-
-.back {
-	width: 40rpx;
-	height: 40rpx;
-}
-
-.login {
-	text-align: center;
-	font-size: 32rpx;
-	font-weight: 400;
-	color: $app-theme-color;
-	line-height: 32rpx;
-	margin-top: 48rpx;
-}
-
-.agree {
-	position: fixed;
-	left: 50%;
-	transform: translate(-50%, 0);
-	bottom: 66rpx;
-	width: 100vw;
-	display: flex;
-	align-items: center;
-	justify-content: center;
-}
-
-.agree_img image {
-	width: 32rpx;
-	height: 32rpx;
-	display: flex;
-	align-items: center;
-}
-
-.agree_text {
-	margin-left: 8rpx;
-	font-size: 24rpx;
-	font-weight: 400;
-	color: #8f92a1;
-	line-height: 24rpx;
-	display: flex;
-	align-items: center;
-
-	span {
-		color: $app-theme-color;
-	}
-}
-
-.loginWx {
-	width: 100%;
-	padding-top: 64rpx;
-	.title {
-		text-align: left;
-		font-size: 22px;
-		font-family: PingFang-SC-Regular, PingFang-SC;
-		font-weight: 400;
-		color: #171717;
-		line-height: 30px;
-		margin-bottom: 12rpx;
-	}
-	.desc {
-		text-align: left;
-		font-size: 14px;
-		font-family: PingFang-SC-Regular, PingFang-SC;
-		font-weight: 400;
-		color: #8f92a1;
-		line-height: 14px;
-	}
-	.avatar {
-		width: 160rpx;
-		height: 160rpx;
-		overflow: hidden;
-		border-radius: 50%;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		margin: 128rpx auto 160rpx auto;
-		image {
-			width: 100%;
-			height: 100%;
-		}
-	}
-}
-
-.loginSmsCode {
-	width: 100%;
-}
-.smscode {
-	font-size: 28rpx;
-	font-family: PingFang-SC-Regular, PingFang-SC;
-	font-weight: 400;
-	color: $app-theme-color;
-	line-height: 28rpx;
-}
-</style>

+ 0 - 81
pages/mine/components/user-card-operate.vue

@@ -1,81 +0,0 @@
-<template>
-	<view class="slot" :class="{ border }">
-		<view class="left" @click="goUser">
-			<view class="avatar"><u-avatar size="88" :src="data.avatar"></u-avatar></view>
-			<view class="username">{{ data.username }}</view>
-			<view class="sex">
-				<u-image width="28rpx" height="28rpx" src="../../../static/user/sex-0.png" v-if="data.sex == '0'"></u-image>
-				<u-image width="28rpx" height="28rpx" src="../../../static/user/sex-1.png" v-if="data.sex == '1'"></u-image>
-			</view>
-		</view>
-		<view class="right">
-			<u-button size="mini" shape="circle" plain v-if="data.status == '0'" @click="follow">关注</u-button>
-			<u-button size="mini" shape="circle" plain v-if="data.status == '1'" @click="cancelFollow">已关注</u-button>
-			<u-button size="mini" shape="circle" plain v-if="data.status == '2'" @click="cancelFollow">互相关注</u-button>
-		</view>
-	</view>
-</template>
-
-<script>
-export default {
-	props: {
-		data: {
-			type: Object,
-			default: () => {
-				return {};
-			}
-		},
-		border: {
-			type: Boolean,
-			default: false
-		}
-	},
-	methods: {
-		// 关注
-		follow() {},
-
-		// 取消关注
-		cancelFollow() {},
-
-		// 去用户首页
-		goUser() {
-			uni.navigateTo({
-				url: '/pages-mine/pages/user'
-			});
-		}
-	}
-};
-</script>
-
-<style lang="scss" scoped>
-.slot {
-	display: flex;
-	align-items: center;
-	justify-content: space-between;
-	padding-top: 24rpx;
-	padding-bottom: 24rpx;
-	&.border {
-		border-bottom: 1px solid $app-theme-border-color;
-	}
-	.left {
-		display: flex;
-		align-items: center;
-		.avatar {
-			margin-right: 24rpx;
-		}
-		.username {
-			margin-right: 16rpx;
-			font-size: 30rpx;
-			font-family: PingFangSC-Regular, PingFang SC;
-			font-weight: 400;
-			color: $app-theme-text-black-color;
-		}
-		.sex {
-			display: flex;
-			align-items: center;
-		}
-	}
-	.right {
-	}
-}
-</style>

+ 1 - 0
pages/mine/index.vue

@@ -118,6 +118,7 @@
 
 
     <!-- 活动悬浮按钮 -->
     <!-- 活动悬浮按钮 -->
     <floating-activity
     <floating-activity
+      :img="activityInfo.img"
       :visible="activityInfo.frequency && activityInfo.frequency == 3"
       :visible="activityInfo.frequency && activityInfo.frequency == 3"
       :initialPosition="activityPosition"
       :initialPosition="activityPosition"
       @click="contactCustomerService"
       @click="contactCustomerService"

+ 0 - 8
static/css/common.scss

@@ -264,14 +264,6 @@ view {
     margin-left: 14px;
     margin-left: 14px;
 }
 }
 
 
-// 超出省略,最多5行
-@for $i from 12 through 30 {
-    .font-#{$i} {
-        // vue下,单行和多行显示省略号需要单独处理
-        font-size: #{$i}+'px' !important;
-    }
-}
-
 .common-title {
 .common-title {
     font-size: 15px;
     font-size: 15px;
     font-family: PingFang SC;
     font-family: PingFang SC;

BIN
static/icon/sex-0.png


BIN
static/icon/sex-1.png


BIN
static/img/activity.png


BIN
static/img/activity/up3.png


BIN
static/img/logo.png


+ 0 - 127
utils/location.js

@@ -1,127 +0,0 @@
-/** 
- * 获取地理位置工具函数
- * @LOCATION_API_KEY 坐标点转位置信息的key
- * @getLocationDetail 坐标点转位置信息接口,此api基于腾讯地图
- * @getLocation 获取位置权限以及调用 getLocationInfo()
- * @getLocationInfo 根据权限获取位置信息
- * @getLocationAgain 权限被拒绝之后调用
- * 
- * 使用方法:传入一个回调函数用以接收定位结果
- * getLocation((res)=>{})
- * 
- * 该方法需要在小程序开发者中配置服务器域名
- * 参考:https://developers.weixin.qq.com/miniprogram/dev/framework/ability/network.html
- */
-
-const LOCATION_API_KEY = '5T3BZ-TDDL3-Q3K3G-36KRY-RSYH3-Y6B6R'
-
-// 根据经纬度获取地址详情接口
-const getLocationDetail = (latitude, longitude) => uni.$u.get(
-	`https://apis.map.qq.com/ws/geocoder/v1/?location=${latitude.toString()},${longitude.toString()}&key=${LOCATION_API_KEY}`
-)
-
-
-// 获取地理位置
-export const getLocation = (callBack) => {
-	uni.getSetting({
-		success: async (res) => {
-			if (res.authSetting['scope.userLocation']) {
-				getLocationInfo(callBack)
-			} else {
-				uni.authorize({
-					scope: 'scope.userLocation',
-					success: () => {
-						getLocationInfo(callBack)
-					},
-					fail: () => {
-						uni.showToast({
-							title: '位置权限获取失败',
-							icon: 'none'
-						});
-						callBack({
-							status: false,
-							data: null
-						})
-					}
-				})
-			}
-		}
-	});
-}
-
-
-// 获取权限之后获取定位信息
-export const getLocationInfo = (callBack) => {
-	uni.getLocation({
-		type: ' wgs84',
-		success: async (res) => {
-			let e = await getLocationDetail(res.latitude, res
-				.longitude)
-			if (e.status == 0) {
-				uni.setStorage({
-					key: 'USER_LOCATION_INFO',
-					data: e.result
-				})
-				callBack({
-					status: true,
-					data: e.result
-				})
-			} else {
-				callBack({
-					status: false,
-					data: null
-				})
-			}
-		}
-	});
-}
-
-// 获取地理位置(被拒后再次)
-export const getLocationAgain = (callBack) => {
-	uni.openSetting({
-		success: (res) => {
-			if (res.authSetting['scope.userLocation']) {
-				// 授权成功
-				uni.getLocation({
-					type: 'wgs84',
-					success: async (res) => {
-						let e = await getLocationDetail(res.latitude,
-							res.longitude)
-						if (e.status == 0) {
-							uni.setStorage({
-								key: 'USER_LOCATION_INFO',
-								data: e.result
-							})
-							callBack({
-								status: true,
-								data: e.result
-							})
-						} else {
-							callBack({
-								status: false,
-								data: null
-							})
-						}
-					},
-					fail() {
-						callBack({
-							status: false,
-							data: null
-						})
-					}
-				});
-			} else {
-				callBack({
-					status: false,
-					data: null
-				})
-			}
-		},
-		fail() {
-			callBack({
-				status: false,
-				data: null
-			})
-		}
-	})
-}

+ 0 - 183
utils/sha1.js

@@ -1,183 +0,0 @@
-/*
- * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined
- * in FIPS PUB 180-1
- * Version 2.1-BETA Copyright Paul Johnston 2000 - 2002.
- * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
- * Distributed under the BSD License
- * See http://pajhome.org.uk/crypt/md5 for details.
- */
-/*
- * Configurable variables. You may need to tweak these to be compatible with
- * the server-side, but the defaults work in most cases.
- */
-var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase     */
-var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance  */
-var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode    */
-/*
- * These are the functions you'll usually want to call
- * They take string arguments and return either hex or base-64 encoded strings
- */
-function hex_sha1(s) {
-  return binb2hex(core_sha1(str2binb(s), s.length * chrsz));
-}
-
-function b64_sha1(s) {
-  return binb2b64(core_sha1(str2binb(s), s.length * chrsz));
-}
-
-function str_sha1(s) {
-  return binb2str(core_sha1(str2binb(s), s.length * chrsz));
-}
-
-function hex_hmac_sha1(key, data) {
-  return binb2hex(core_hmac_sha1(key, data));
-}
-
-function b64_hmac_sha1(key, data) {
-  return binb2b64(core_hmac_sha1(key, data));
-}
-
-function str_hmac_sha1(key, data) {
-  return binb2str(core_hmac_sha1(key, data));
-}
-/*
- * Perform a simple self-test to see if the VM is working
- */
-function sha1_vm_test() {
-  return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d";
-}
-/*
- * Calculate the SHA-1 of an array of big-endian words, and a bit length
- */
-function core_sha1(x, len) {
-  /* append padding */
-  x[len >> 5] |= 0x80 << (24 - len % 32);
-  x[((len + 64 >> 9) << 4) + 15] = len;
-  var w = Array(80);
-  var a = 1732584193;
-  var b = -271733879;
-  var c = -1732584194;
-  var d = 271733878;
-  var e = -1009589776;
-  for (var i = 0; i < x.length; i += 16) {
-    var olda = a;
-    var oldb = b;
-    var oldc = c;
-    var oldd = d;
-    var olde = e;
-    for (var j = 0; j < 80; j++) {
-      if (j < 16) w[j] = x[i + j];
-      else w[j] = rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1);
-      var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), safe_add(safe_add(e, w[j]), sha1_kt(j)));
-      e = d;
-      d = c;
-      c = rol(b, 30);
-      b = a;
-      a = t;
-    }
-    a = safe_add(a, olda);
-    b = safe_add(b, oldb);
-    c = safe_add(c, oldc);
-    d = safe_add(d, oldd);
-    e = safe_add(e, olde);
-  }
-  return Array(a, b, c, d, e);
-}
-/*
- * Perform the appropriate triplet combination function for the current
- * iteration
- */
-function sha1_ft(t, b, c, d) {
-  if (t < 20) return (b & c) | ((~b) & d);
-  if (t < 40) return b ^ c ^ d;
-  if (t < 60) return (b & c) | (b & d) | (c & d);
-  return b ^ c ^ d;
-}
-/*
- * Determine the appropriate additive constant for the current iteration
- */
-function sha1_kt(t) {
-  return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : (t < 60) ? -1894007588 : -899497514;
-}
-/*
- * Calculate the HMAC-SHA1 of a key and some data
- */
-function core_hmac_sha1(key, data) {
-  var bkey = str2binb(key);
-  if (bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz);
-  var ipad = Array(16),
-    opad = Array(16);
-  for (var i = 0; i < 16; i++) {
-    ipad[i] = bkey[i] ^ 0x36363636;
-    opad[i] = bkey[i] ^ 0x5C5C5C5C;
-  }
-  var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz);
-  return core_sha1(opad.concat(hash), 512 + 160);
-}
-/*
- * Add integers, wrapping at 2^32. This uses 16-bit operations internally
- * to work around bugs in some JS interpreters.
- */
-function safe_add(x, y) {
-  var lsw = (x & 0xFFFF) + (y & 0xFFFF);
-  var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
-  return (msw << 16) | (lsw & 0xFFFF);
-}
-/*
- * Bitwise rotate a 32-bit number to the left.
- */
-function rol(num, cnt) {
-  return (num << cnt) | (num >>> (32 - cnt));
-}
-/*
- * Convert an 8-bit or 16-bit string to an array of big-endian words
- * In 8-bit function, characters >255 have their hi-byte silently ignored.
- */
-function str2binb(str) {
-  var bin = Array();
-  var mask = (1 << chrsz) - 1;
-  for (var i = 0; i < str.length * chrsz; i += chrsz)
-    bin[i >> 5] |= (str.charCodeAt(i / chrsz) & mask) << (24 - i % 32);
-  return bin;
-}
-/*
- * Convert an array of big-endian words to a string
- */
-function binb2str(bin) {
-  var str = "";
-  var mask = (1 << chrsz) - 1;
-  for (var i = 0; i < bin.length * 32; i += chrsz)
-    str += String.fromCharCode((bin[i >> 5] >>> (24 - i % 32)) & mask);
-  return str;
-}
-/*
- * Convert an array of big-endian words to a hex string.
- */
-function binb2hex(binarray) {
-  var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
-  var str = "";
-  for (var i = 0; i < binarray.length * 4; i++) {
-    str += hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8 + 4)) & 0xF) + hex_tab.charAt((binarray[i >> 2] >> ((3 -
-      i % 4) * 8)) & 0xF);
-  }
-  return str;
-}
-/*
- * Convert an array of big-endian words to a base-64 string
- */
-function binb2b64(binarray) {
-  var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-  var str = "";
-  for (var i = 0; i < binarray.length * 4; i += 3) {
-    var triplet = (((binarray[i >> 2] >> 8 * (3 - i % 4)) & 0xFF) << 16) | (((binarray[i + 1 >> 2] >> 8 * (3 - (i + 1) %
-      4)) & 0xFF) << 8) | ((binarray[i + 2 >> 2] >> 8 * (3 - (i + 2) % 4)) & 0xFF);
-    for (var j = 0; j < 4; j++) {
-      if (i * 8 + j * 6 > binarray.length * 32) str += b64pad;
-      else str += tab.charAt((triplet >> 6 * (3 - j)) & 0x3F);
-    }
-  }
-  return str;
-}
-export {
-  hex_sha1
-}

+ 1 - 49
uview-ui/README.md

@@ -1,14 +1,3 @@
-<p align="center">
-    <img alt="logo" src="https://uviewui.com/common/logo.png" width="120" height="120" style="margin-bottom: 10px;">
-</p>
-<h3 align="center" style="margin: 30px 0 30px;font-weight: bold;font-size:40px;">uView</h3>
-<h3 align="center">多平台快速开发的UI框架</h3>
-
-
-## 说明
-
-uView UI,是[uni-app](https://uniapp.dcloud.io/)生态优秀的UI框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水
-
 ## 特性
 ## 特性
 
 
 - 兼容安卓,iOS,微信小程序,H5,QQ小程序,百度小程序,支付宝小程序,头条小程序
 - 兼容安卓,iOS,微信小程序,H5,QQ小程序,百度小程序,支付宝小程序,头条小程序
@@ -66,41 +55,4 @@ Vue.use(uView);
 		// ......
 		// ......
 	]
 	]
 }
 }
-```
-
-请通过[快速上手](https://uviewui.com/components/quickstart.html)了解更详细的内容 
-
-## 使用方法
-配置easycom规则后,自动按需引入,无需`import`组件,直接引用即可。
-
-```html
-<template>
-	<u-button>按钮</u-button>
-</template>
-```
-
-请通过[快速上手](https://uviewui.com/components/quickstart.html)了解更详细的内容 
-
-## 链接
-
-- [官方文档](https://uviewui.com/)
-- [更新日志](https://uviewui.com/components/changelog.html)
-- [升级指南](https://uviewui.com/components/changelog.html)
-- [关于我们](https://uviewui.com/cooperation/about.html)
-
-## 预览
-
-您可以通过**微信**扫码,查看最佳的演示效果。
-<br>
-<br>
-<img src="https://uviewui.com/common/weixin_mini_qrcode.png" width="220" height="220" >
-
-<!-- ## 捐赠uView的研发
-
-uView文档和源码全部开源免费,如果您认为uView帮到了您的开发工作,您可以捐赠uView的研发工作,捐赠无门槛,哪怕是一杯可乐也好(相信这比打赏主播更有意义)。
-
-<img src="https://uviewui.com/common/wechat.png" width="220" >
-<img style="margin-left: 100px;" src="https://uviewui.com/common/alipay.png" width="220" >
- -->
-## 版权信息
-uView遵循[MIT](https://en.wikipedia.org/wiki/MIT_License)开源协议,意味着您无需支付任何费用,也无需授权,即可将uView应用到您的产品中。
+```

+ 0 - 639
uview-ui/components/u-calendar/u-calendar.vue

@@ -1,639 +0,0 @@
-<template>
-	<u-popup closeable :maskCloseAble="maskCloseAble" mode="bottom" :popup="false" v-model="value" length="auto"
-	 :safeAreaInsetBottom="safeAreaInsetBottom" @close="close" :z-index="uZIndex" :border-radius="borderRadius" :closeable="closeable">
-		<view class="u-calendar">
-			<view class="u-calendar__header">
-				<view class="u-calendar__header__text" v-if="!$slots['tooltip']">
-					{{toolTip}}
-				</view>
-				<slot v-else name="tooltip" />
-			</view>
-			<view class="u-calendar__action u-flex u-row-center">
-				<view class="u-calendar__action__icon">
-					<u-icon v-if="changeYear" name="arrow-left-double" :color="yearArrowColor" @click="changeYearHandler(0)"></u-icon>
-				</view>
-				<view class="u-calendar__action__icon">
-					<u-icon v-if="changeMonth" name="arrow-left" :color="monthArrowColor" @click="changeMonthHandler(0)"></u-icon>
-				</view>
-				<view class="u-calendar__action__text">{{ showTitle }}</view>
-				<view class="u-calendar__action__icon">
-					<u-icon v-if="changeMonth" name="arrow-right" :color="monthArrowColor" @click="changeMonthHandler(1)"></u-icon>
-				</view>
-				<view class="u-calendar__action__icon">
-					<u-icon v-if="changeYear" name="arrow-right-double" :color="yearArrowColor" @click="changeYearHandler(1)"></u-icon>
-				</view>
-			</view>
-			<view class="u-calendar__week-day">
-				<view class="u-calendar__week-day__text" v-for="(item, index) in weekDayZh" :key="index">{{item}}</view>
-			</view>
-			<view class="u-calendar__content">
-				<!-- 前置空白部分 -->
-				<block v-for="(item, index) in weekdayArr" :key="index">
-					<view class="u-calendar__content__item"></view>
-				</block>
-				<view class="u-calendar__content__item" :class="{
-					'u-hover-class':openDisAbled(year,month,index+1),
-					'u-calendar__content--start-date': (mode == 'range' && startDate==`${year}-${month}-${index+1}`) || mode== 'date',
-					'u-calendar__content--end-date':(mode== 'range' && endDate==`${year}-${month}-${index+1}`) || mode == 'date'
-				}" :style="{backgroundColor: getColor(index,1)}" v-for="(item, index) in daysArr" :key="index"
-				 @tap="dateClick(index)">
-					<view class="u-calendar__content__item__inner" :style="{color: getColor(index,2)}">
-						<view>{{ index + 1 }}</view>
-					</view>
-					<view class="u-calendar__content__item__tips" :style="{color:activeColor}" v-if="mode== 'range' && startDate==`${year}-${month}-${index+1}` && startDate!=endDate">{{startText}}</view>
-					<view class="u-calendar__content__item__tips" :style="{color:activeColor}" v-if="mode== 'range' && endDate==`${year}-${month}-${index+1}`">{{endText}}</view>
-				</view>
-				<view class="u-calendar__content__bg-month">{{month}}</view>
-			</view>
-			<view class="u-calendar__bottom">
-				<view class="u-calendar__bottom__choose">
-					<text>{{mode == 'date' ? activeDate : startDate}}</text>
-					<text v-if="endDate">至{{endDate}}</text>
-				</view>
-				<view class="u-calendar__bottom__btn">
-					<u-button :type="btnType" shape="circle" size="default" @click="btnFix(false)">确定</u-button>
-				</view>
-			</view>
-		</view>
-	</u-popup>
-</template>
-<script>
-	/**
-	 * calendar 日历
-	 * @description 此组件用于单个选择日期,范围选择日期等,日历被包裹在底部弹起的容器中。
-	 * @tutorial http://uviewui.com/components/calendar.html
-	 * @property {String} mode 选择日期的模式,date-为单个日期,range-为选择日期范围
-	 * @property {Boolean} v-model 布尔值变量,用于控制日历的弹出与收起
-	 * @property {Boolean} safe-area-inset-bottom 是否开启底部安全区适配(默认false)
-	 * @property {Boolean} change-year 是否显示顶部的切换年份方向的按钮(默认true)
-	 * @property {Boolean} change-month 是否显示顶部的切换月份方向的按钮(默认true)
-	 * @property {String Number} max-year 可切换的最大年份(默认2050)
-	 * @property {String Number} min-year 可切换的最小年份(默认1950)
-	 * @property {String Number} min-date 最小可选日期(默认1950-01-01)
-	 * @property {String Number} max-date 最大可选日期(默认当前日期)
-	 * @property {String Number} 弹窗顶部左右两边的圆角值,单位rpx(默认20)
-	 * @property {Boolean} mask-close-able 是否允许通过点击遮罩关闭日历(默认true)
-	 * @property {String} month-arrow-color 月份切换按钮箭头颜色(默认#606266)
-	 * @property {String} year-arrow-color 年份切换按钮箭头颜色(默认#909399)
-	 * @property {String} color 日期字体的默认颜色(默认#303133)
-	 * @property {String} active-bg-color 起始/结束日期按钮的背景色(默认#2979ff)
-	 * @property {String Number} z-index 弹出时的z-index值(默认10075)
-	 * @property {String} active-color 起始/结束日期按钮的字体颜色(默认#ffffff)
-	 * @property {String} range-bg-color 起始/结束日期之间的区域的背景颜色(默认rgba(41,121,255,0.13))
-	 * @property {String} range-color 选择范围内字体颜色(默认#2979ff)
-	 * @property {String} start-text 起始日期底部的提示文字(默认 '开始')
-	 * @property {String} end-text 结束日期底部的提示文字(默认 '结束')
-	 * @property {String} btn-type 底部确定按钮的主题(默认 'primary')
-	 * @property {String} toolTip 顶部提示文字,如设置名为tooltip的slot,此参数将失效(默认 '选择日期')
-	 * @property {Boolean} closeable 是否显示右上角的关闭图标(默认true)
-	 * @example <u-calendar v-model="show" :mode="mode"></u-calendar>
-	 */
-	
-	export default {
-		name: 'u-calendar',
-		props: {
-			safeAreaInsetBottom: {
-				type: Boolean,
-				default: false
-			},
-			// 是否允许通过点击遮罩关闭Picker
-			maskCloseAble: {
-				type: Boolean,
-				default: true
-			},
-			// 通过双向绑定控制组件的弹出与收起
-			value: {
-				type: Boolean,
-				default: false
-			},
-			// 弹出的z-index值
-			zIndex: {
-				type: [String, Number],
-				default: 0
-			},
-			// 是否允许切换年份
-			changeYear: {
-				type: Boolean,
-				default: true
-			},
-			// 是否允许切换月份
-			changeMonth: {
-				type: Boolean,
-				default: true
-			},
-			// date-单个日期选择,range-开始日期+结束日期选择
-			mode: {
-				type: String,
-				default: 'date'
-			},
-			// 可切换的最大年份
-			maxYear: {
-				type: [Number, String],
-				default: 2050
-			},
-			// 可切换的最小年份
-			minYear: {
-				type: [Number, String],
-				default: 1950
-			},
-			// 最小可选日期(不在范围内日期禁用不可选)
-			minDate: {
-				type: [Number, String],
-				default: '1950-01-01'
-			},
-			/**
-			 * 最大可选日期
-			 * 默认最大值为今天,之后的日期不可选
-			 * 2030-12-31
-			 * */
-			maxDate: {
-				type: [Number, String],
-				default: ''
-			},
-			// 弹窗顶部左右两边的圆角值
-			borderRadius: {
-				type: [String, Number],
-				default: 20
-			},
-			// 月份切换按钮箭头颜色
-			monthArrowColor: {
-				type: String,
-				default: '#606266'
-			},
-			// 年份切换按钮箭头颜色
-			yearArrowColor: {
-				type: String,
-				default: '#909399'
-			},
-			// 默认日期字体颜色
-			color: {
-				type: String,
-				default: '#303133'
-			},
-			// 选中|起始结束日期背景色
-			activeBgColor: {
-				type: String,
-				default: '#2979ff'
-			},
-			// 选中|起始结束日期字体颜色
-			activeColor: {
-				type: String,
-				default: '#ffffff'
-			},
-			// 范围内日期背景色
-			rangeBgColor: {
-				type: String,
-				default: 'rgba(41,121,255,0.13)'
-			}, 
-			// 范围内日期字体颜色
-			rangeColor: {
-				type: String,
-				default: '#2979ff'
-			},
-			// mode=range时生效,起始日期自定义文案
-			startText: {
-				type: String,
-				default: '开始'
-			},
-			// mode=range时生效,结束日期自定义文案
-			endText: {
-				type: String,
-				default: '结束'
-			},
-			//按钮样式类型
-			btnType: {
-				type: String,
-				default: 'primary'
-			},
-			// 当前选中日期带选中效果
-			isActiveCurrent: {
-				type: Boolean,
-				default: true
-			},
-			// 切换年月是否触发事件 mode=date时生效
-			isChange: {
-				type: Boolean,
-				default: false
-			},
-			// 是否显示右上角的关闭图标
-			closeable: {
-				type: Boolean,
-				default: true
-			},
-			// 顶部的提示文字
-			toolTip: {
-				type: String,
-				default: '选择日期'
-			}
-		},
-		data() {
-			return {
-				// 星期几,值为1-7
-				weekday: 1, 
-				weekdayArr:[],
-				// 当前月有多少天
-				days: 0, 
-				daysArr:[],
-				showTitle: '',
-				year: 2020,
-				month: 0,
-				day: 0,
-				startYear: 0,
-				startMonth: 0,
-				startDay: 0,
-				endYear: 0,
-				endMonth: 0,
-				endDay: 0,
-				today: '',
-				activeDate: '',
-				startDate: '',
-				endDate: '',
-				isStart: true,
-				min: null,
-				max: null,
-				weekDayZh: ['日', '一', '二', '三', '四', '五', '六']
-			};
-		},
-		computed: {
-			dataChange() {
-				return `${this.mode}-${this.minDate}-${this.maxDate}`;
-			},
-			uZIndex() {
-				// 如果用户有传递z-index值,优先使用
-				return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
-			}
-		},
-		watch: {
-			dataChange(val) {
-				this.init()
-			}
-		},
-		created() {
-			this.init()
-		},
-		methods: {
-			getColor(index, type) {
-				let color = type == 1 ? '' : this.color;
-				let day = index + 1
-				let date = `${this.year}-${this.month}-${day}`
-				let timestamp = new Date(date.replace(/\-/g, '/')).getTime();
-				let start = this.startDate.replace(/\-/g, '/')
-				let end = this.endDate.replace(/\-/g, '/')
-				if ((this.isActiveCurrent && this.activeDate == date) || this.startDate == date || this.endDate == date) {
-					color = type == 1 ? this.activeBgColor : this.activeColor;
-				} else if (this.endDate && timestamp > new Date(start).getTime() && timestamp < new Date(end).getTime()) {
-					color = type == 1 ? this.rangeBgColor : this.rangeColor;
-				}
-				return color;
-			},
-			init() {
-				let now = new Date();
-				this.year = now.getFullYear();
-				this.month = now.getMonth() + 1;
-				this.day = now.getDate();
-				this.today = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()}`;
-				this.activeDate = this.today;
-				this.min = this.initDate(this.minDate);
-				this.max = this.initDate(this.maxDate || this.today);
-				this.startDate = "";
-				this.startYear = 0;
-				this.startMonth = 0;
-				this.startDay = 0;
-				this.endYear = 0;
-				this.endMonth = 0;
-				this.endDay = 0;
-				this.endDate = "";
-				this.isStart = true;
-				this.changeData();
-			},
-			//日期处理
-			initDate(date) {
-				let fdate = date.split('-');
-				return {
-					year: Number(fdate[0] || 1920),
-					month: Number(fdate[1] || 1),
-					day: Number(fdate[2] || 1)
-				}
-			},
-			openDisAbled: function(year, month, day) {
-				let bool = true;
-				let date = `${year}/${month}/${day}`;
-				// let today = this.today.replace(/\-/g, '/');
-				let min = `${this.min.year}/${this.min.month}/${this.min.day}`;
-				let max = `${this.max.year}/${this.max.month}/${this.max.day}`;
-				let timestamp = new Date(date).getTime();
-				if (timestamp >= new Date(min).getTime() && timestamp <= new Date(max).getTime()) {
-					bool = false;
-				}
-				return bool;
-			},
-			generateArray: function(start, end) {
-				return Array.from(new Array(end + 1).keys()).slice(start);
-			},
-			formatNum: function(num) {
-				return num < 10 ? '0' + num : num + '';
-			},
-			//一个月有多少天
-			getMonthDay(year, month) {
-				let days = new Date(year, month, 0).getDate();
-				return days;
-			},
-			getWeekday(year, month) {
-				let date = new Date(`${year}/${month}/01 00:00:00`);
-				return date.getDay();
-			},
-			checkRange(year) {
-				let overstep = false;
-				if (year < this.minYear || year > this.maxYear) {
-					uni.showToast({
-						title: "日期超出范围啦~",
-						icon: 'none'
-					})
-					overstep = true;
-				}
-				return overstep;
-			},
-			changeMonthHandler(isAdd) {
-				if (isAdd) {
-					let month = this.month + 1;
-					let year = month > 12 ? this.year + 1 : this.year;
-					if (!this.checkRange(year)) {
-						this.month = month > 12 ? 1 : month;
-						this.year = year;
-						this.changeData();
-					}
-
-				} else {
-					let month = this.month - 1;
-					let year = month < 1 ? this.year - 1 : this.year;
-					if (!this.checkRange(year)) {
-						this.month = month < 1 ? 12 : month;
-						this.year = year;
-						this.changeData();
-					}
-				}
-			},
-			changeYearHandler(isAdd) {
-				let year = isAdd ? this.year + 1 : this.year - 1;
-				if (!this.checkRange(year)) {
-					this.year = year;
-					this.changeData();
-				}
-			},
-			changeData() {
-				this.days = this.getMonthDay(this.year, this.month);
-				this.daysArr=this.generateArray(1,this.days)
-				this.weekday = this.getWeekday(this.year, this.month);
-				this.weekdayArr=this.generateArray(1,this.weekday)
-				this.showTitle = `${this.year}年${this.month}月`;
-				if (this.isChange && this.mode == 'date') {
-					this.btnFix(true);
-				}
-			},
-			dateClick: function(day) {
-				day += 1;
-				if (!this.openDisAbled(this.year, this.month, day)) {
-					this.day = day;
-					let date = `${this.year}-${this.month}-${day}`;
-					if (this.mode == 'date') {
-						this.activeDate = date;
-					} else {
-						let compare = new Date(date.replace(/\-/g, '/')).getTime() < new Date(this.startDate.replace(/\-/g, '/')).getTime()
-						if (this.isStart || compare) {
-							this.startDate = date;
-							this.startYear = this.year;
-							this.startMonth = this.month;
-							this.startDay = this.day;
-							this.endYear = 0;
-							this.endMonth = 0;
-							this.endDay = 0;
-							this.endDate = "";
-							this.activeDate = "";
-							this.isStart = false;
-						} else {
-							this.endDate = date;
-							this.endYear = this.year;
-							this.endMonth = this.month;
-							this.endDay = this.day;
-							this.isStart = true;
-						}
-					}
-				}
-			},
-			close() {
-				// 修改通过v-model绑定的父组件变量的值为false,从而隐藏日历弹窗
-				this.$emit('input', false);
-			},
-			getWeekText(date) {
-				date = new Date(`${date.replace(/\-/g, '/')} 00:00:00`);
-				let week = date.getDay();
-				return '星期' + ['日', '一', '二', '三', '四', '五', '六'][week];
-			},
-			btnFix(show) {
-				if (!show) {
-					this.close();
-				}
-				if (this.mode == 'date') {
-					let arr = this.activeDate.split('-')
-					let year = this.isChange ? this.year : Number(arr[0]);
-					let month = this.isChange ? this.month : Number(arr[1]);
-					let day = this.isChange ? this.day : Number(arr[2]);
-					//当前月有多少天
-					let days = this.getMonthDay(year, month);
-					let result = `${year}-${this.formatNum(month)}-${this.formatNum(day)}`;
-					let weekText = this.getWeekText(result);
-					let isToday = false;
-					if (`${year}-${month}-${day}` == this.today) {
-						//今天
-						isToday = true;
-					}
-					this.$emit('change', {
-						year: year,
-						month: month,
-						day: day,
-						days: days,
-						result: result,
-						week: weekText,
-						isToday: isToday,
-						// switch: show //是否是切换年月操作
-					});
-				} else {
-					if (!this.startDate || !this.endDate) return;
-					let startMonth = this.formatNum(this.startMonth);
-					let startDay = this.formatNum(this.startDay);
-					let startDate = `${this.startYear}-${startMonth}-${startDay}`;
-					let startWeek = this.getWeekText(startDate)
-
-					let endMonth = this.formatNum(this.endMonth);
-					let endDay = this.formatNum(this.endDay);
-					let endDate = `${this.endYear}-${endMonth}-${endDay}`;
-					let endWeek = this.getWeekText(endDate);
-					this.$emit('change', {
-						startYear: this.startYear,
-						startMonth: this.startMonth,
-						startDay: this.startDay,
-						startDate: startDate,
-						startWeek: startWeek,
-						endYear: this.endYear,
-						endMonth: this.endMonth,
-						endDay: this.endDay,
-						endDate: endDate,
-						endWeek: endWeek
-					});
-				}
-			}
-		}
-	};
-</script>
-
-<style scoped lang="scss">
-	@import "../../libs/css/style.components.scss";
-	
-	.u-calendar {
-		color: $u-content-color;
-		
-		&__header {
-			width: 100%;
-			box-sizing: border-box;
-			font-size: 30rpx;
-			background-color: #fff;
-			color: $u-main-color;
-			
-			&__text {
-				margin-top: 30rpx;
-				padding: 0 60rpx;
-				@include vue-flex;
-				justify-content: center;
-				align-items: center;
-			}
-		}
-		
-		&__action {
-			padding: 40rpx 0 40rpx 0;
-			
-			&__icon {
-				margin: 0 16rpx;
-			}
-			
-			&__text {
-				padding: 0 16rpx;
-				color: $u-main-color;
-				font-size: 32rpx;
-				line-height: 32rpx;
-				font-weight: bold;
-			}
-		}
-	
-		&__week-day {
-			@include vue-flex;
-			align-items: center;
-			justify-content: center;
-			padding: 6px 0;
-			overflow: hidden;
-			
-			&__text {
-				flex: 1;
-				text-align: center;
-			}
-		}
-	
-		&__content {
-			width: 100%;
-			@include vue-flex;
-			flex-wrap: wrap;
-			padding: 6px 0;
-			box-sizing: border-box;
-			background-color: #fff;
-			position: relative;
-			
-			&--end-date {
-				border-top-right-radius: 8rpx;
-				border-bottom-right-radius: 8rpx;
-			}
-			
-			&--start-date {
-				border-top-left-radius: 8rpx;
-				border-bottom-left-radius: 8rpx;
-			}
-			
-			&__item {
-				width: 14.2857%;
-				@include vue-flex;
-				align-items: center;
-				justify-content: center;
-				padding: 6px 0;
-				overflow: hidden;
-				position: relative;
-				z-index: 2;
-				
-				&__inner {
-					height: 84rpx;
-					@include vue-flex;
-					align-items: center;
-					justify-content: center;
-					flex-direction: column;
-					font-size: 32rpx;
-					position: relative;
-					border-radius: 50%;
-					
-					&__desc {
-						width: 100%;
-						font-size: 24rpx;
-						line-height: 24rpx;
-						transform: scale(0.75);
-						transform-origin: center center;
-						position: absolute;
-						left: 0;
-						text-align: center;
-						bottom: 2rpx;
-					}
-				}
-				
-				&__tips {
-					width: 100%;
-					font-size: 24rpx;
-					line-height: 24rpx;
-					position: absolute;
-					left: 0;
-					transform: scale(0.8);
-					transform-origin: center center;
-					text-align: center;
-					bottom: 8rpx;
-					z-index: 2;
-				}
-			}
-			
-			&__bg-month {
-				position: absolute;
-				font-size: 130px;
-				line-height: 130px;
-				left: 50%;
-				top: 50%;
-				transform: translate(-50%, -50%);
-				color: #e4e7ed;
-				z-index: 1;
-			}
-		}
-	
-		&__bottom {
-			width: 100%;
-			@include vue-flex;
-			align-items: center;
-			justify-content: center;
-			flex-direction: column;
-			background-color: #fff;
-			padding: 0 40rpx 30rpx;
-			box-sizing: border-box;
-			font-size: 24rpx;
-			color: $u-tips-color;
-			
-			&__choose {
-				height: 50rpx;
-			}
-			
-			&__btn {
-				width: 100%;
-			}
-		}
-	}
-</style>

+ 0 - 255
uview-ui/components/u-swipe-action/u-swipe-action.vue

@@ -1,255 +0,0 @@
-<template>
-	<view class="">
-		<movable-area class="u-swipe-action" :style="{ backgroundColor: bgColor }">
-			<movable-view
-				class="u-swipe-view"
-				@change="change"
-				@touchend="touchend"
-				@touchstart="touchstart"
-				direction="horizontal"
-				:disabled="disabled"
-				:x="moveX"
-				:style="{
-					width: movableViewWidth ? movableViewWidth : '100%'
-				}"
-			>
-				<view
-					class="u-swipe-content"
-					@tap.stop="contentClick"
-				>
-					<slot></slot>
-				</view>
-				<view class="u-swipe-del" v-if="showBtn" @tap.stop="btnClick(index)" :style="[btnStyle(item.style)]" v-for="(item, index) in options" :key="index">
-					<view class="u-btn-text">{{ item.text }}</view>
-				</view>
-			</movable-view>
-		</movable-area>
-	</view>
-</template>
-
-<script>
-/**
- * swipeAction 左滑单元格
- * @description 该组件一般用于左滑唤出操作菜单的场景,用的最多的是左滑删除操作。
- * @tutorial https://www.uviewui.com/components/swipeAction.html
- * @property {String} bg-color 整个组件背景颜色(默认#ffffff)
- * @property {Array} options 数组形式,可以配置背景颜色和文字
- * @property {String Number} index 标识符,点击时候用于区分点击了哪一个,用v-for循环时的index即可
- * @property {String Number} btn-width 按钮宽度,单位rpx(默认180)
- * @property {Boolean} disabled 是否禁止某个swipeAction滑动(默认false)
- * @property {Boolean} show 打开或者关闭某个组件(默认false)
- * @event {Function} click 点击组件时触发
- * @event {Function} close 组件触发关闭状态时
- * @event {Function} content-click 点击内容时触发
- * @event {Function} open 组件触发打开状态时
- * @example <u-swipe-action btn-text="收藏">...</u-swipe-action>
- */
-export default {
-	name: 'u-swipe-action',
-	props: {
-		// index值,用于得知点击删除的是哪个按钮
-		index: {
-			type: [Number, String],
-			default: ''
-		},
-		// 滑动按钮的宽度,单位为rpx
-		btnWidth: {
-			type: [String, Number],
-			default: 180
-		},
-		// 是否禁止某个action滑动
-		disabled: {
-			type: Boolean,
-			default: false
-		},
-		// 打开或者关闭组件
-		show: {
-			type: Boolean,
-			default: false
-		},
-		// 组件背景颜色
-		bgColor: {
-			type: String,
-			default: '#ffffff'
-		},
-		// 是否使手机发生短促震动,目前只在iOS的微信小程序有效(2020-05-06)
-		vibrateShort: {
-			type: Boolean,
-			default: false
-		},
-		// 按钮操作参数
-		options: {
-			type: Array,
-			default() {
-				return [];
-			}
-		}
-	},
-	watch: {
-		show: {
-			immediate: true,
-			handler(nVal, oVal) {
-				if (nVal) {
-					this.open();
-				} else {
-					this.close();
-				}
-			}
-		}
-	},
-	data() {
-		return {
-			moveX: 0, // movable-view元素在x轴上需要移动的目标移动距离,用于展开或收起滑动的按钮
-			scrollX: 0, // movable-view移动过程中产生的change事件中的x轴移动值
-			status: false, // 滑动的状态,表示当前是展开还是关闭按钮的状态
-			movableAreaWidth: 0, // 滑动区域
-			elId: this.$u.guid(), // id,用于通知另外组件关闭时的识别
-			showBtn: false, // 刚开始渲染视图时不显示右边的按钮,避免视图闪动
-		};
-	},
-	computed: {
-		movableViewWidth() {
-			return this.movableAreaWidth + this.allBtnWidth + 'px';
-		},
-		innerBtnWidth() {
-			return uni.upx2px(this.btnWidth);
-		},
-		allBtnWidth() {
-			return uni.upx2px(this.btnWidth) * this.options.length;
-		},
-		btnStyle() {
-			return style => {
-				let css = {};
-				style.width = this.btnWidth + 'rpx';
-				return style;
-			};
-		}
-	},
-	mounted() {
-		this.getActionRect();
-	},
-	methods: {
-		// 点击按钮
-		btnClick(index) {
-			this.status = false;
-			// this.index为点击的几个组件,index为点击某个组件的第几个按钮(options数组的索引)
-			this.$emit('click', this.index, index);
-		},
-		// movable-view元素移动事件
-		change(e) {
-			this.scrollX = e.detail.x;
-		},
-		// 关闭按钮状态
-		close() {
-			this.moveX = 0;
-			this.status = false;
-		},
-		// 打开按钮的状态
-		open() {
-			if (this.disabled) return;
-			this.moveX = -this.allBtnWidth;
-			this.status = true;
-		},
-		// 用户手指离开movable-view元素,停止触摸
-		touchend() {
-			this.moveX = this.scrollX;
-			// 停止触摸时候,判断当前是展开还是关闭状态
-			// 关闭状态
-			// 这一步很重要,需要先给this.moveX一个变化的随机值,否则因为前后设置的为同一个值
-			// props单向数据流的原因,导致movable-view元素不会发生变化,切记,详见文档:
-			// https://uniapp.dcloud.io/use?id=%e5%b8%b8%e8%a7%81%e9%97%ae%e9%a2%98
-			this.$nextTick(function() {
-				if (this.status == false) {
-					// 关闭状态左滑,产生的x轴位移为负值,也就是说滑动的距离大于按钮的四分之一宽度,自动展开按钮
-					if (this.scrollX <= -this.allBtnWidth / 4) {
-						this.moveX = -this.allBtnWidth; // 按钮宽度的负值,即为展开状态movable-view元素左滑的距离
-						this.status = true; // 标志当前为展开状态
-						this.emitOpenEvent();
-						// 产生震动效果
-						if (this.vibrateShort) uni.vibrateShort();
-					} else {
-						this.moveX = 0; // 如果距离没有按钮宽度的四分之一,自动收起
-						this.status = false;
-						this.emitCloseEvent();
-					}
-				} else {
-					// 如果在打开的状态下,右滑动的距离X轴偏移超过按钮的四分之一(负值反过来的四分之三),自动收起按钮
-					if (this.scrollX > (-this.allBtnWidth * 3) / 4) {
-						this.moveX = 0;
-						this.$nextTick(() => {
-							this.moveX = 101;
-						});
-						this.status = false;
-						this.emitCloseEvent();
-					} else {
-						this.moveX = -this.allBtnWidth;
-						this.status = true;
-						this.emitOpenEvent();
-					}
-				}
-			});
-		},
-		emitOpenEvent() {
-			this.$emit('open', this.index);
-		},
-		emitCloseEvent() {
-			this.$emit('close', this.index);
-		},
-		// 开始触摸
-		touchstart() {},
-		getActionRect() {
-			this.$uGetRect('.u-swipe-action').then(res => {
-				this.movableAreaWidth = res.width;
-				// 等视图更新完后,再显示右边的可滑动按钮,防止这些按钮会"闪一下"
-				this.$nextTick(() => {
-					this.showBtn = true;
-				})
-			});
-		},
-		// 点击内容触发事件
-		contentClick() {
-			// 点击内容时,如果当前为打开状态,收起组件
-			if (this.status == true) {
-				this.status = 'close';
-				this.moveX = 0;
-			}
-			this.$emit('content-click', this.index);
-		}
-	}
-};
-</script>
-
-<style scoped lang="scss">
-@import "../../libs/css/style.components.scss";
-	
-.u-swipe-action {
-	width: auto;
-	height: initial;
-	position: relative;
-	overflow: hidden;
-}
-
-.u-swipe-view {
-	@include vue-flex;
-	height: initial;
-	position: relative;
-	/* 这一句很关键,覆盖默认的绝对定位 */
-}
-
-.u-swipe-content {
-	flex: 1;
-}
-
-.u-swipe-del {
-	position: relative;
-	font-size: 30rpx;
-	color: #ffffff;
-}
-
-.u-btn-text {
-	position: absolute;
-	top: 50%;
-	left: 50%;
-	transform: translate(-50%, -50%);
-}
-</style>

+ 0 - 0
uview-ui/components/uview-v1/uview-v1.vue