xhj 2 gadi atpakaļ
vecāks
revīzija
90901396b6
100 mainītis faili ar 6879 papildinājumiem un 1012 dzēšanām
  1. 3 3
      app.css
  2. 37 0
      card/addGroup/addGroup.css
  3. 96 0
      card/addGroup/addGroup.vue
  4. 263 0
      card/cardList/cardList.css
  5. 353 0
      card/cardList/cardList.vue
  6. 23 0
      card/create/create.css
  7. 295 0
      card/create/create.vue
  8. 7 0
      card/editDesc/editDesc.css
  9. 84 0
      card/editDesc/editDesc.vue
  10. 20 0
      card/groupManage/groupManage.css
  11. 221 0
      card/groupManage/groupManage.vue
  12. 577 0
      card/index/index.css
  13. 696 0
      card/index/index.vue
  14. 9 0
      card/industry/industry.css
  15. 74 0
      card/industry/industry.vue
  16. 311 0
      card/myNetWork/myNetWork.css
  17. 164 0
      card/myNetWork/myNetWork.vue
  18. 302 0
      card/network/network.css
  19. 310 0
      card/network/network.vue
  20. 8 0
      card/not/not.css
  21. 69 0
      card/not/not.vue
  22. 150 0
      card/poster/poster.css
  23. 358 0
      card/poster/poster.vue
  24. BIN
      card/static/images/add.png
  25. BIN
      card/static/images/addFile.png
  26. BIN
      card/static/images/add_ico1.png
  27. BIN
      card/static/images/bg.png
  28. BIN
      card/static/images/bj_ico.png
  29. BIN
      card/static/images/car_p_bg.png
  30. BIN
      card/static/images/card_ico1.png
  31. BIN
      card/static/images/card_ico2.png
  32. BIN
      card/static/images/card_ico3.png
  33. BIN
      card/static/images/card_ico4.png
  34. BIN
      card/static/images/card_logo_bg.png
  35. BIN
      card/static/images/change.png
  36. BIN
      card/static/images/code.png
  37. BIN
      card/static/images/down.png
  38. BIN
      card/static/images/dz.png
  39. BIN
      card/static/images/edit.png
  40. BIN
      card/static/images/edit1.png
  41. BIN
      card/static/images/empty.png
  42. BIN
      card/static/images/fx_ico.png
  43. BIN
      card/static/images/hb_ico1.png
  44. BIN
      card/static/images/hb_ico2.png
  45. BIN
      card/static/images/jj_ico.png
  46. BIN
      card/static/images/message.png
  47. BIN
      card/static/images/phone.png
  48. BIN
      card/static/images/remove.png
  49. BIN
      card/static/images/rm.png
  50. BIN
      card/static/images/rqico.png
  51. BIN
      card/static/images/sc_ico.png
  52. BIN
      card/static/images/share.png
  53. BIN
      card/static/images/sj_ico.png
  54. BIN
      card/static/images/sp_ico.png
  55. BIN
      card/static/images/tp_ico.png
  56. BIN
      card/static/images/wechat.png
  57. BIN
      card/static/images/wxth.png
  58. BIN
      card/static/images/yin_l.png
  59. BIN
      card/static/images/yin_r.png
  60. BIN
      card/static/images/zan_ico.png
  61. 7 0
      components/nav-bar/index.vue
  62. 140 0
      components/wangding-pickerAddress/wangding-pickerAddress.vue
  63. 178 0
      components/wangding-pickerAddress/wangding-pickerAddressSingle.vue
  64. 1 1
      manifest.json
  65. 63 7
      match/activityDetail/activityDetail.css
  66. 77 8
      match/activityDetail/activityDetail.vue
  67. BIN
      match/static/images/bmfy.png
  68. BIN
      match/static/images/bmsj.png
  69. BIN
      match/static/images/crico2.png
  70. BIN
      match/static/images/dzico1.png
  71. BIN
      match/static/images/hddz.png
  72. BIN
      match/static/images/hdqd.png
  73. 16 0
      office/addActivity/addActivity.css
  74. 128 0
      office/addActivity/addActivity.vue
  75. 53 4
      office/detail/detail.css
  76. 44 15
      office/detail/detail.vue
  77. 60 1
      office/news/news.css
  78. 65 26
      office/news/news.vue
  79. 100 13
      office/team/index.css
  80. 146 33
      office/team/index.vue
  81. 113 2
      pages.json
  82. 140 1
      pages/index/index.css
  83. 106 144
      pages/index/index.vue
  84. 64 10
      pages/interactive/index.css
  85. 168 43
      pages/interactive/index.vue
  86. 20 0
      pages/matchList/index.css
  87. 141 0
      pages/matchList/index.vue
  88. 129 8
      pages/user/user.css
  89. 490 693
      pages/user/user.vue
  90. BIN
      static/images/jia.png
  91. BIN
      static/images/link.png
  92. BIN
      static/images/topic.png
  93. BIN
      static/pages/images/activity.png
  94. BIN
      static/pages/images/activity_h.png
  95. BIN
      static/pages/images/back_black.png
  96. BIN
      static/pages/images/back_white.png
  97. BIN
      static/pages/images/back_white1.png
  98. BIN
      static/pages/images/cy.png
  99. BIN
      static/pages/images/cy_hui.png
  100. BIN
      static/pages/images/dh.png

+ 3 - 3
app.css

@@ -22,9 +22,9 @@
 @import "./static/stylesheet.css";
 
 page {
-  --mina: #cd0b01;
-  --main: #cd0b01;
-  --btn: #cd0b01;
+  --mina: #27D699;
+  --main: #27D699;
+  --btn: #27D699;
   --red: #FE0419;
   --black: #201d1d;
   --fff: #fff;

+ 37 - 0
card/addGroup/addGroup.css

@@ -0,0 +1,37 @@
+/* addLabel.css */
+page{background: #F9F9F9;padding-bottom: 170rpx;}
+.tits{background: #F9F9F9;height: 60rpx;background: #F9F9F9;padding: 0 34rpx;line-height: 60rpx;font-size: 28rpx;color: #999;}
+.ipt-box{padding: 0 30rpx;background: #fff;}
+.ipt{padding: 30rpx 0;font-size: 34rpx;color: #666;}
+.placeholder{color: #ccc;}
+.ui-list{background: #fff;margin-top: 60rpx;}
+.ui-list .li{padding-left: 33rpx;}
+.ui-list .li .dflex{border-bottom: 1rpx solid #f5f5f5;height: 111rpx;font-size: 28rpx;color: #333;padding-right: 30rpx;}
+.label-ico{width: 62rpx;height: 62rpx;}
+.rico{width: 13rpx;height: 21rpx;margin-left: 20rpx;}
+.switch{ zoom: .8;}
+.add{padding: 30rpx;font-size: 34rpx;color: #3387FF;background: #fff;}
+.add image{width: 30rpx;height: 30rpx;margin-right: 19rpx;}
+.tit{height: 50rpx;background: #F9F9F9;font-size: 20rpx;color: #999;padding: 0 50rpx;}
+.list{background: #fff;}
+.list .li{padding: 0 0 0 30rpx;/* height: 134rpx; */align-items: flex-start;}
+.userimg{width: 92rpx;height: 92rpx;border-radius: 8rpx;background: #E4E4E4;margin-right: 20rpx;}
+.list .li .item{border-bottom: 1rpx solid #ECECEC;/* height: 133rpx; */padding: 30rpx 30rpx 30rpx 0}
+.username{font-size: 32rpx;color: #222;}
+.username text{font-size: 26rpx;color: #F6904A;margin-left: 10rpx;}
+.action{font-size: 24rpx;color: #aaa;margin-top: 5rpx;}
+.del image{width: 38rpx;height: 38rpx;padding-left: 30rpx;margin-left: 30rpx;}
+.btns{position: fixed;left: 0;right: 0;bottom: 0;z-index: 50;padding: 0 30rpx 50rpx;justify-content: space-between;}
+.delete{width: 330rpx;height: 80rpx;background: #FF4211;font-size: 32rpx;color: #fff;text-align: center;line-height: 80rpx;margin-right: 30rpx;border-radius: 40rpx;}
+.btn{height: 80rpx;background: var(--main);border-radius: 40rpx;font-size: 32rpx;color: #fff;text-align: center;line-height: 80rpx;}
+.text{width: 92rpx;height: 92rpx;background: #CEAD71;border-radius: 50%;font-size: 30rpx;color: #fff;text-align: center;line-height: 92rpx;margin-right: 23rpx;margin-top: 30rpx;}
+.ren {margin-top: 15rpx;font-size: 26rpx;color: #6A7076;flex-wrap: wrap;}
+.ren image {width: 24rpx;height: 24rpx;margin-right: 6rpx;}
+.ren view {margin-right: 30rpx;margin-bottom: 10rpx;}
+.ceng{position: fixed;left: 0;right: 0;bottom: 0;top: 0;background: rgba(0,0,0,.5);z-index: 99;}
+.popup{position: fixed;left: 0;right: 0;bottom: -100%;border-radius: 32rpx 32rpx 0 0;background: #fff;z-index: 100;padding: 60rpx 50rpx 0;height: 590rpx;box-sizing: border-box;transition: all .3s ease-in;}
+.pop-tit{font-size: 32rpx;color: #263343;font-weight: bold;margin-bottom: 40rpx;}
+.pop-list{flex-wrap: wrap;}
+.pop-list .li{position: relative;width: 62rpx;height: 62rpx;margin: 0 55rpx 60rpx 0;}
+.pop-list .li:nth-child(6n){margin-right: 0;}
+.gou{width: 36rpx;height: 36rpx;background: #fff;border-radius: 50%;position: absolute;right: -16rpx;bottom: -12rpx;}

+ 96 - 0
card/addGroup/addGroup.vue

@@ -0,0 +1,96 @@
+<template>
+	<view>
+		<view class="tits">分组名称</view>
+		<view class="ipt-box"><input v-model="lableTitle" maxlength="20" placeholder="请输入分组名称" placeholder-class="placeholder" class="ipt" /></view>
+		
+		<view class="btns dflex">
+			<view class="delete" v-if="!isAdd" @click="deleteLabel()">删除分组</view>
+			<view class="btn flex" @click="submitLabel()">保存</view>
+		</view>
+		<view class="ceng" v-if="isLabel" @click="hideLabel()"></view>
+	</view>
+</template>
+
+<script>
+const app = getApp();
+const req = require('../../utils/request.js');
+const api = require('../../utils/api.js');
+export default {
+	data() {
+		return {
+			isShow: false,
+			lableTitle: '',
+			isAdd: false,
+			groupId: '',
+			title: '',
+		};
+	},
+
+	onLoad(opt) {
+		this.isAdd = opt.isAdd;
+		this.groupId = opt.groupId;
+		this.lableTitle = opt.title;
+		uni.setNavigationBarTitle({
+			title: this.groupId ? '编辑分组' : '新增分组'
+		});
+	},
+
+	methods: {
+		jumpUrl(url) {
+			uni.navigateTo({
+				url: url
+			});
+		},
+		deleteLabel() {
+			console.log('deleteLabel数据>>>>>>>>>');
+			this.$showModal({
+			    title: '提示',
+			    content: '确定要删除该分组吗'
+			})
+			.then(res => {
+			    this.deleteLabelRequest();
+			})
+			.catch(err => {
+			});
+		},
+
+		deleteLabelRequest() {
+			req.postRequest(
+				'/api/v3/visiting/card/group/delete',
+				{ id: this.groupId },
+				json => {
+					req.msg('删除成功');
+					setTimeout(() => {
+						uni.navigateBack();
+					}, 1500);
+				},
+				true
+			);
+		},
+
+		submitLabel() {
+			if (!this.lableTitle) {
+				return req.msg('请输入分组名称');
+			}
+			// if (this.customersCkeckList.length == 0) {
+			// 	return req.msg('请先添加客户');
+			// }
+			let dataP = { groupName: this.lableTitle };
+			if (this.groupId) {
+				dataP.id = this.groupId;
+			}
+			dataP.userId = req.getStorage('userInfo').id;
+			console.log('数据参数>>>>>>>>>>>', dataP);
+			req.postRequest('/api/v3/visiting/card/group/saveOrUpdate',dataP, json => {
+				req.msg('保存成功');
+				setTimeout(() => {
+					uni.navigateBack();
+				}, 1500);
+			});
+		}
+	}
+};
+</script>
+<style>
+@import './addGroup.css';
+</style>

+ 263 - 0
card/cardList/cardList.css

@@ -0,0 +1,263 @@
+page{
+	background-color: #f5f5f5;
+}
+.top-fixed{
+	position: fixed;
+	top: 0;
+	right: 0;
+	left: 0;
+	background-color: #fff;
+	z-index: 101;
+}
+.search-box{
+	padding: 30rpx;
+	background-color: #fff;
+}
+
+.search-text{
+	color: #999999;
+}
+
+
+.search-input{
+	height: 76rpx;
+	line-height: 76rpx;;
+	background: #F5F5F5;
+	border-radius: 10rpx 10rpx 10rpx 10rpx;
+	padding: 0 26rpx;
+	font-size: 24rpx;
+}
+.search-input input{
+	font-size: 24rpx;
+}
+.search-input image{
+	width: 34rpx;
+	height: 34rpx;
+	margin-right: 26rpx;
+}
+.search-all{
+	color: #2a82fd;
+	font-size: 30rpx;
+	margin-left: 46rpx;
+}
+
+.filter{
+	padding: 0 30rpx 20rpx;
+	text-align: center;
+	font-size: 28rpx;
+	color: #999999;
+	line-height: 41rpx;
+}
+.filter-item-icon{
+	margin-left: 15rpx;
+	width: 22rpx;
+	height: 13rpx;
+}
+.filter-item{
+	justify-content: center;
+}
+.f-active{
+	color: #009AFF;
+}
+
+/* 弹窗 */
+/* 核销弹窗 */
+.ceng{position: fixed;top: 0;left: 0;right: 0;bottom: 0;background-color: rgba(0,0,0,.5);z-index: 99;}
+.hx-pop{overflow: hidden;position: fixed;left: 0;right: 0;top: 0;background-color: #fff;border-radius: 0rpx 0rpx 0rpx 0rpx;z-index: 100;transition: all .3s ease;}
+.default{position: absolute;top: 55rpx;right: 60rpx;font-size: 28rpx;color: #999;}
+.default image{width: 36rpx;height: 36rpx;margin-right: 14rpx;}
+.pop-tit{font-size: 32rpx;color: #263343;font-weight: bold;margin-top: 60rpx;padding: 0 60rpx;}
+.pop-con{padding: 0 60rpx;}
+.pop-list{flex-wrap: wrap;}
+.pop-list .li{width: 189rpx;height: 70rpx;background: #F3F5F7;border-radius: 35rpx;font-size: 30rpx;color: #333;text-align: center;line-height: 70rpx;align-items: flex-start;margin: 30rpx 30rpx 0 0;}
+.pop-list .li:nth-child(3n){margin-right: 0;}
+.pop-list .li.active{background: var(--mina);color: #fff;}
+.pop-time{margin-top: 30rpx;font-size: 30rpx;color: #333;}
+.pop-time text{margin: 0 25rpx;}
+.date-ipt{width: 262rpx;height: 70rpx;background: #F3F5F7;border-radius: 35rpx;box-sizing: border-box;padding: 0 30rpx;font-size: 28rpx;color: #A5A5A5;line-height: 70rpx;}
+.pop-btn{margin-top: 80rpx;padding: 30rpx;}
+.pop-btn view{height: 90rpx;line-height: 90rpx;font-size: 32rpx;text-align: center;box-sizing: border-box;border-radius: 6rpx;}
+.pop-btn view:first-child{width: 250rpx; color: #fff;border-top: 1rpx solid #f5f5f5;line-height: 79rpx;background-color: #cccccc;margin-right: 30rpx;}
+.pop-btn view:last-child{color: #fff;background: var(--mina);}
+
+
+/* 列表*/
+/* 登记信息 */
+.register-box{
+	background: #FFFFFF;
+	border-radius:10rpx;
+	position: relative;
+	padding: 0 0rpx 30rpx;
+	margin: 30rpx;
+}
+.register-title{
+	font-size: 28rpx;
+	font-weight: bold;
+	color: #999999;
+	padding: 30rpx 30rpx;
+	padding-bottom: 21rpx;
+	flex-wrap: nowrap;
+}
+.card-name{
+	line-height: 50rpx;
+	font-size: 36rpx;
+	font-weight: bold;
+	color: #333333;
+}
+.card-tag{
+	padding: 0 10rpx;
+	line-height: 32rpx;
+	border-radius: 5rpx 5rpx 5rpx 5rpx;
+	opacity: 1;
+	border: 2rpx solid #FF5700;
+	font-size: 20rpx;
+	color: #FF5700;
+	text-align: center;
+	margin-right: 10rpx;
+}
+.card-area{
+	line-height: 46rpx;
+	background: #F8F8F8;
+	border-radius: 10rpx 10rpx 10rpx 10rpx;
+	padding:0 16rpx ;
+	font-size: 24rpx;
+	font-weight: 400;
+	color: #666666;
+	margin-top: 35rpx;
+}
+.card-area image{
+	width: 20rpx;
+	height: 24rpx;
+	margin-right: 10rpx;
+}
+.card-data{
+	font-size: 39rpx;
+	font-family: Arial-Regular, Arial;
+	font-weight: 400;
+	color: #333333;
+	line-height: 47rpx;
+	text-align: center;
+}
+.card-label{
+	line-height: 33rpx;
+	font-size: 24rpx;
+	font-family: PingFang SC-Medium, PingFang SC;
+	font-weight: 500;
+	color: #A1A1A1;
+	text-align: center;
+}
+.card-line{
+	width: 1rpx;
+	height: 66rpx;
+	background: #DEDEDE;
+}
+.register-state{
+	font-size: 24rpx;
+	font-weight: 500;
+	line-height: 36rpx;
+	color: #999999;
+}
+.register-title-icon{
+	width: 160rpx;
+	height: 160rpx;
+	opacity: 1;
+	margin-right: 20rpx;
+	border-radius: 10rpx;
+}
+.register-info-item{
+	margin-top: 30rpx;
+	align-items: flex-start;
+}
+.register-info-label{
+	line-height: 41rpx;
+	color: #999999;
+	font-size: 28rpx;
+	margin-right: 60rpx;
+}
+.register-info-data{
+	font-size: 28rpx;
+	color: #333333;
+	line-height: 41rpx;
+	text-align: right;
+}
+/* 开通项目 */
+.card-pic{
+	width: 172rpx;
+	height: 172rpx;
+	border-radius: 10rpx 10rpx 10rpx 10rpx;
+	opacity: 1;
+	margin-right: 15rpx;
+}
+.card-info{
+	
+}
+.card-title{
+	line-height: 54rpx;
+	font-size: 32rpx;
+	font-weight: bold;
+}
+.card-time{
+	line-height: 36rpx;
+	font-size: 24rpx;
+	color: #999999;
+}
+.card-price{
+	margin-top: 43rpx;
+	justify-content: space-between;
+}
+.card-price text:first-child{
+	font-size: 32rpx;
+	font-weight: 500;
+	color: #FF0000;
+}
+.card-price text:last-child{
+	font-size: 24rpx;
+	font-weight: 500;
+	color: #999999;
+}
+.register-option{
+	border-top: 1px solid #F5F5F5;
+	justify-content: space-between;
+	margin-top: 30rpx;
+	padding: 20rpx 30rpx 0;
+}
+.order-time{
+	font-size: 24rpx;
+	font-weight: 400;
+	color: #999999;
+}
+.option-btn{
+	padding: 0 40rpx;
+	line-height: 51rpx;
+	border-radius: 27rpx 27rpx 27rpx 27rpx;
+	opacity: 1;
+	border: 2rpx solid #CCCCCC;
+	font-size: 28rpx;
+}
+
+.bottom-btn{
+	background-color: #fff;
+	padding: 30rpx 0;
+	position: fixed;
+	bottom: 0;
+	left: 0;
+	right: 0;
+}
+.btn-icon{
+	width: 29rpx;
+	height: 32rpx;
+	margin-right: 18rpx;
+}
+.bottom-btn .btn{
+	width: 690rpx;
+	height: 96rpx;
+	line-height: 96rpx;
+	background: #2A82FD;
+	border-radius: 48rpx 48rpx 48rpx 48rpx;
+	opacity: 1;
+	text-align: center;
+	color: #FFFFFF;
+	margin: auto;
+	justify-content: center;
+	font-size: 32rpx;
+}

+ 353 - 0
card/cardList/cardList.vue

@@ -0,0 +1,353 @@
+<template>
+	<view>
+		<view class="top-fixed">
+			<!-- #ifdef H5 -->
+			<view :style="'height:'+statusBarHeight+'rpx'"></view>
+			<!-- #endif -->
+			<view class="search-box ddflex">
+				<view class="search-input ddflex fflex">
+					<image src="/static/images/ssico.png"></image>
+					<input @confirm="searchFn" confirm-type="search" @input="searchFn" v-model="searchVal" class="fflex"
+						placeholder="请输入代理人姓名" />
+				</view>
+			</view>
+			<view class="filter ddflex">
+				<view :class="'filter-item fflex ddflex '+(dateIndex!=-1?'f-active':'')" @click="changeFilterType(1)">
+					{{dateIndex!=-1?dateList[dateIndex].label:'智能筛选'}}
+					<image class="filter-item-icon" :style="filterType==1&&isShowPop?'transform: rotate(180deg);':''" src="../static/images/down.png"></image>
+				</view>
+				<view :class="'filter-item fflex ddflex '+(areaIndex!=-1?'f-active':'')" @click="changeFilterType(1)">
+					{{areaIndex!=-1?areaList[areaIndex].label:'全国'}}
+					<image class="filter-item-icon" :style="filterType==1&&isShowPop?'transform: rotate(180deg);':''" src="../static/images/down.png"></image>
+				</view>
+				<view :class="'filter-item fflex ddflex '+(stateIndex!=-1?'f-active':'')" @click="changeFilterType(2)">
+					{{stateIndex!=-1?stateList[stateIndex].label:'筛选'}}
+					<image class="filter-item-icon" :style="filterType==2&&isShowPop?'transform: rotate(180deg);':''" src="../static/images/down.png"></image>
+				</view>
+			</view>
+		</view>
+		
+		
+		<view class="ceng" v-if="isShowPop" @click="hidePop()"></view>
+		
+		<view class="hx-pop" :style="'top:calc(' +popBottom+' + '+(isShowPop?190:0)+'rpx' ">
+			<view class="pop-con" v-if="filterType==1">
+				<view class="pop-list ddflex">
+					<view :class="'li' + (dateIndex == index ? ' active' : '')" v-for="(item, index) in dateList" :key="index" @click="switchType(index)">{{ item.label }}</view>
+				</view>
+				<view class="pop-time ddflex">
+					<picker mode="date" class="date-ipt" @change="changeStartTime">
+						<view :class="startTime ? '' : 'placeholder'">{{ startTime ? startTime : '选择日期' }}</view>
+					</picker>
+					<text>至</text>
+					<picker mode="date" class="date-ipt" @change="changeEndTime">
+						<view :class="endTime ? '' : 'placeholder'">{{ endTime ? endTime : '选择日期' }}</view>
+					</picker>
+				</view>
+			</view>
+			<view class="pop-con" v-if="filterType==2">
+				<view class="pop-list ddflex">
+					<view :class="'li' + (stateIndex == index ? ' active' : '')" v-for="(item, index) in stateList" :key="index" @click="switchType(index)">{{ item.label }}</view>
+				</view>
+			</view>
+			<view class="pop-btn ddflex">
+				<view @click="reset">重置</view>
+				<view class="fflex" @click="confirm">确定</view>
+			</view>
+		</view>
+		
+		<view style="height: 190rpx;"></view>
+		<!-- 订单列表 -->
+		<view style="position: relative;overflow: hidden;" v-if="dataList.length>0">
+			<view class="register-box" v-for="item,index in dataList" :key="index" @click="jumpUrl('/merchant/cardRegisterDetail/index?id='+item.id)">
+				<view class="register-title ddflex fflex" @click.stop="jumpUrl('/member/detail/detail?id='+item.uid)">
+					<image class="register-title-icon" :src="item.avatar?item.avatar:'/static/images/userimg.png'"></image>
+					<view class="flex" style="min-width: 0;">
+						<view class="ddflex">
+							<view class="card-name fflex tover">{{item.nickName?item.nickName:'杜平'}}</view>
+							<image style="width: 64rpx;height: 64rpx;margin-left: 10rpx;" src="../static/images/wxth.png"></image>
+						</view>
+						<view class="ddflex" style="margin-top: 4rpx;">
+							<view class="card-tag">高级组经理</view>
+							<view class="card-tag">入司10年</view>
+						</view>
+						<view class="card-area ddflex">
+							<image src="/static/pages/images/dzico.png"></image>
+							<view class="flex tover">中电软件园中电软件园中电软件园中电软件园</view>
+							<view style="color: #A1A1A1;margin-left: 10rpx;">距离5.23km</view>
+						</view>
+					</view>
+				</view>
+				<view class="ddflex" style="margin-top: 41rpx;">
+					<view class="flex">
+						<view class="card-data">1678</view>
+						<view class="card-label">服务客户</view>
+					</view>
+					<view class="card-line"></view>
+					<view class="flex">
+						<view class="card-data">1678</view>
+						<view class="card-label">保单件数</view>
+					</view>
+					<view class="card-line"></view>
+					<view class="flex">
+						<view class="card-data">1678</view>
+						<view class="card-label">用户评价</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view v-else class="nodata">
+			<image src="../../card/static/images/empty.png" mode="widthFix"></image>
+			<view>暂无数据</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	const app = getApp();
+	const req = require("../../utils/request.js");
+
+	export default {
+		components: {},
+		props: {},
+		data() {
+			return {
+				statusBarHeight:0,
+				
+				filterType:null,
+				
+				popBottom: '-100%',
+				isShowPop: false,
+				
+				dateIndex: -1,
+				// 时间类型 1、今日 2、昨日 3、近7日 4、近30天 5、本月 6、本季度 7、本年度
+				dateList: [
+					{
+						label: '今日',
+						value: 1
+					},
+					{
+						label: '昨日',
+						value: 2
+					},
+					{
+						label: '近7日',
+						value: 3
+					},
+					{
+						label: '近30天',
+						value: 4
+					},
+					
+					{
+						label: '本月',
+						value: 5
+					},
+					{
+						label: '本季度',
+						value: 6
+					},
+					{
+						label: '本年度',
+						value: 7
+					}
+				],
+				startTime: '',
+				endTime: '',
+				
+				stateIndex: -1,
+				stateList:[{
+						label: '开通成功',
+						value: 7
+					},
+					{
+						label: '待支付',
+						value: 1
+					},
+					{
+						label: '取消支付',
+						value: 8
+					}],
+				page: 1,
+				limit: 10,
+				isLoad: true,
+				searchVal: '',
+				dataList: [],
+				isReference:false
+			}
+		},
+		onLoad(options) {
+			this.getDataList()
+		},
+		onShow() {
+			if(this.isReference){
+				this.isReference = false
+				this.page=1;
+				this.isLoad = true
+				this.getDataList();
+			}
+		},
+		onReachBottom() {
+			this.page++;
+			this.getDataList();
+		},
+		methods: {
+			jumpUrl(url) {
+				uni.navigateTo({
+					url: url
+				})
+			},
+			// 切换筛选类型
+			changeFilterType(type){
+				this.openPop()
+				if(this.filterType==type) return false
+				this.filterType = type
+			},
+			// 打开弹窗
+			openPop(){
+				this.isShowPop = true
+				this.popBottom = '0%'
+			},
+			// 关闭弹窗
+			hidePop() {
+				this.isShowPop = false;
+				this.popBottom = '-100%';
+			},
+			
+			// 筛选
+			switchType(index) {
+				if(this.filterType==1){
+					if (this.dateIndex == index) return false;
+					this.dateIndex = index;
+					this.startTime = '';
+					this.endTime = '';
+				}else{
+					if (this.stateIndex == index) return false;
+					this.stateIndex = index;
+				}
+			},
+			changeStartTime(e) {
+				const endTime = new Date(this.endTime);
+				const startTime = new Date(e.detail.value);
+				if (endTime.getTime() < startTime.getTime()) {
+					req.msg('开始时间不能小于结束时间');
+					return false;
+				}
+				this.startTime = e.detail.value;
+				this.dateIndex = -1;
+				if(!this.endTime){
+					this.endTime = this.startTime
+				}
+			},
+			changeEndTime(e) {
+				const endTime = new Date(e.detail.value);
+				const startTime = new Date(this.startTime);
+				if (endTime.getTime() < startTime.getTime()) {
+					req.msg('结束时间不能小于开始时间');
+					return false;
+				}
+				this.endTime = e.detail.value;
+				this.dateIndex = -1;
+				if(!this.startTime){
+					this.startTime = this.endTime
+				}
+			},
+			confirm() {
+				this.hidePop();
+				this.isLoad = true;
+				this.getDataList();
+			},
+			reset() {
+				this.dateIndex = -1;
+				this.stateIndex = -1;
+				this.startTime = '';
+				this.endTime = '';
+			},
+			// 分页查询
+			getDataList() {
+				if (!this.isLoad) return false;
+				this.isLoad = false;
+				let queryParams = {
+					page: this.page,
+					limit: this.limit,
+					orderType:96,
+					isAllUser:1,
+					isOffline:1
+				}
+				if (this.searchVal) {
+					queryParams.search = this.searchVal
+				}
+				// 时间筛选
+				if (this.dateIndex != -1) {
+					queryParams.dateType = this.dateList[this.dateIndex].value;
+				}else if (this.dateIndex == -1) {
+				} else {
+					queryParams.dateType = 8
+					queryParams.end = this.endTime?this.endTime:null;
+					queryParams.start = this.startTime?this.startTime:null;
+				}
+				
+				// 状态筛选
+				if (this.stateIndex != -1) {
+					queryParams.state = this.stateList[this.stateIndex].value;
+				}
+				req.getRequest('/api/order/vipList', queryParams, data => {
+					data = [1,2]
+					if (data != null && data.length == this.limit) {
+						this.isLoad = true;
+					}
+					if (this.page == 1) {
+						this.dataList = [];
+					}
+					if (this.page > 0) {
+						data = this.dataList.concat(data);
+					}
+					this.dataList = data;
+					console.log('列表数据>>>', this.dataList);
+				})
+			},
+			// 搜索
+			searchFn() {
+				this.page = 1;
+				this.isLoad = true;
+				this.getDataList();
+			},
+			formatTimeFn(data) {
+				if (data) {
+					return utils.formatTimeCommStr(data, 'Y-M-D')
+				} else {
+					return '';
+				}
+			
+			},
+			// 取消订单
+			quxiao(item){
+				this.$showModal({
+					title: '提示',
+					content: '确定取消订单?',
+					cancelText: '取消',
+					confirmText: '确认'
+				})
+				.then(res => {
+					req.postRequest('/api/order/cancel',{id:item.id},res=>{
+						req.msg('订单已取消')
+						item.state = 8
+					})
+				})
+				.catch(err => {
+					
+				});
+			}
+		},
+		mounted() {
+			const systemInfo = uni.getSystemInfoSync();
+			// px转换到rpx的比例
+			let pxToRpxScale = 750 / systemInfo.windowWidth;
+			this.statusBarHeight = uni.getSystemInfoSync().windowTop*pxToRpxScale
+		}
+	}
+</script>
+
+<style>
+	@import "./cardList.css";
+</style>

+ 23 - 0
card/create/create.css

@@ -0,0 +1,23 @@
+/* create.css */
+page{background: #f9f9f9;padding-bottom: 130rpx;}
+.form{background: #fff;padding: 0 35rpx 20rpx;margin-bottom: 20rpx;}
+.form .li{padding: 30rpx 0;position: relative;}
+.label{font-size: 30rpx;color: #999;width: 160rpx;}
+.photo{justify-content: space-between;}
+.userimg{width: 90rpx;height: 90rpx;border-radius: 50%;}
+.rico{width: 15rpx;height: 22rpx;}
+.ipt{font-size: 30rpx;color: #333;}
+.textarea{font-size: 30rpx;color: #333;height: 100rpx;}
+.tit{font-size: 30rpx;color: #333;font-weight: bold;padding: 35rpx 0;}
+.alstart{align-items: flex-start;}
+.num{position: absolute;right: 0;bottom: 0;}
+.tong{font-size: 26rpx;color: #DB2A2A;}
+.tong image{width: 32rpx;height: 32rpx;margin-right: 10rpx;}
+.add{font-size: 26rpx;color: #DB2A2A;font-weight: normal;}
+.add image{width: 33rpx;height: 33rpx;margin-right: 10rpx;}
+.picker{position: relative;}
+.picker view{width: 100%;font-size: 30rpx;}
+.picker .rico{position: absolute;right: 0;top: 50%;transform: translateY(-50%);}
+.placeholder{color: #ccc;}
+.bot{position: fixed;left: 0;right: 0;bottom: 0;background: #fff;padding: 25rpx 32rpx;z-index: 50;}
+.btn{height: 80rpx;background: #DB2A2A;border-radius: 40rpx;font-size: 30rpx;color: #fff;text-align: center;line-height: 80rpx;}

+ 295 - 0
card/create/create.vue

@@ -0,0 +1,295 @@
+<template>
+	<view>
+		<view class="form">
+			<view class="li ddflex">
+				<view class="label">头像</view>
+				<view class="photo ddflex flex" @tap="uploadImgs()">
+					<image :src="avatar ? avatar : '../../static/images/userimg.png'" mode="aspectFill" class="userimg"></image>
+					<image src="../../static/images/rico.png" class="rico"></image>
+				</view>
+			</view>
+			<view class="li ddflex">
+				<view class="label">姓名</view>
+				<input v-model="realName" placeholder="请填写你的真实姓名" placeholder-class="placeholder" class="ipt flex" />
+			</view>
+			
+			<view class="li ddflex">
+				<view class="label">个人简介</view>
+				<input v-if="!brief" @tap="jumpUrl('/card/editDesc/editDesc')" :disabled="true"  maxlength="11" type="number" placeholder="请作简单自我介绍" placeholder-class="placeholder" class="ipt flex" />
+				<view class="fflex" v-else style="color: #47C776;" @tap="jumpUrl('/card/editDesc/editDesc')">已完善</view>
+				<image src="../../static/images/rico.png" class="rico"></image>
+			</view>
+		</view>
+		
+		<view class="form">
+			<view class="tit ddflex"><view class="flex">联系信息</view></view>
+			<view class="li ddflex">
+				<view class="label">手机</view>
+				<input v-model="phone" maxlength="11" type="number" placeholder="请填写手机号" placeholder-class="placeholder" class="ipt flex" />
+				<view class="tong ddflex" @click="intWechatNumber"><image src="../static/images/wxth.png"></image>微信同号</view>
+			</view>
+			<view class="li ddflex">
+				<view class="label">邮箱</view>
+				<input v-model="email" placeholder="请填写邮箱地址" placeholder-class="placeholder" class="ipt flex" />
+			</view>
+			<view class="li ddflex">
+				<view class="label">微信号</view>
+				<input v-model="wechat" placeholder="请填写微信号" placeholder-class="placeholder" class="ipt flex" />
+			</view>
+		</view>
+
+		<view class="form">
+			<view class="tit ddflex"><view class="flex">公司信息</view></view>
+			<view class="li ddflex">
+				<view class="label">公司</view>
+				<input v-model="companyName" placeholder="请填写公司名称" placeholder-class="placeholder" class="ipt flex" />
+			</view>
+			<view class="li ddflex">
+				<view class="label">职位</view>
+				<input v-model="job" placeholder="请填写职位" placeholder-class="placeholder" class="ipt flex" />
+			</view>
+			<view class="li ddflex" @click="jumpUrl('/card/industry/industry?isPoistion=true')">
+				<view class="label">行业</view>
+				<!-- <input v-model="position" placeholder="请填写职位" placeholder-class="placeholder" class="ipt flex" /> -->
+				<view :class="'flex' + (industryName ? '' :' placeholder')">{{industryName ? industryName : '请填写行业'}}</view>
+				<image src="../../static/images/rico.png" class="rico"></image>
+			</view>
+			<view class="li ddflex">
+				<view class="label">所在地区</view>
+				<view :class="['item flex', city ? 'active' : '']">
+					<!-- #ifdef MP-WEIXIN -->
+					<picker class="picker flex" mode="region" :value="morCity" @change="bindCity">
+						<view :class="city?'':'placeholder'">{{ city ? city : '请选择地区' }}</view>
+					</picker>
+					<!-- #endif -->
+					<!-- #ifdef APP-PLUS -->
+					<pickerAddress class="picker flex" @change="bindAddressChange">
+						<view :class="city?'':'placeholder'">{{ city ? city : '请选择地区' }}</view>
+					</pickerAddress>
+					<!-- #endif -->
+				</view>
+				<image src="../../static/images/rico.png" class="rico"></image>
+				<!-- <picker class="picker flex">
+					<view class="placeholder">请选择省份城市</view>
+					<image src="../../static/images/rico.png" class="rico"></image>
+				</picker> -->
+			</view>
+			<view class="li ddflex">
+				<view class="label">地址</view>
+				<input v-model="address" placeholder="填写街道地址" placeholder-class="placeholder" class="ipt flex" />
+			</view>
+		</view>
+		<view class="bot">
+			<view class="btn" @click="submitCard()">{{ isEdit ? '保存' : '确认创建' }}</view>
+		</view>
+	</view>
+</template>
+
+<script>
+const req = require('../../utils/request.js');
+const api = require('../../utils/api.js');
+const util = require('../../utils/util.js');
+var app = getApp();
+import pickerAddress from '../../components/wangding-pickerAddress/wangding-pickerAddress.vue';
+export default {
+	components: { pickerAddress },
+	data() {
+		return {
+			avatar: '',
+			realName: '',
+			phone: '',
+			wechat: '',
+			email: '',
+			companyName: '',
+			job:'',//职业
+			industryName: '',//行业
+			tradeId: '',//行业id
+			message: '',
+			isEdit: false,
+			id: '' ,//名片id
+			nums: 0,
+			brief:'',//简介
+			address:'',//详细地址
+			
+			city: '',
+			areaCode: '',
+			morCity: [],
+			
+			userCard:null,//用户IP名片
+		};
+	},
+	onLoad(opt) {
+		this.isEdit = opt.isEdit;
+		this.id = opt.id;
+		console.log('getUserCard')
+		this.getUserCard()
+	},
+
+	methods: {
+		getUserInfo(){
+			return new Promise((resolve,reject)=>{
+				req.getRequest('/api/user/info',{},res=>{
+					this.avatar = res.avatar;
+					this.realName = res.realName ? res.realName : res.nickName;
+					this.phone = res.mobile;
+					resolve();
+				})
+			})
+		},
+		// 用户名片信息
+		getUserCard(){
+			req.getRequest('/api/v3/visiting/card/userInfo', {}, res => {
+				console.log('getUserCard',res)
+				this.userCard = res
+				if(!res){
+					this.getCompanyData()
+					this.getUserInfo()
+				}else{
+					this.id = res.id
+					this.avatar = res.avatar;
+					this.realName = res.realName;
+					this.brief = res.brief;
+					this.phone = res.phone;
+					this.wechat = res.wechat;
+					this.email = res.email;
+					this.companyName = res.companyName;
+					this.industryName = res.industryName;
+					this.tradeId = res.tradeId;
+					this.address = res.address;
+					this.job = res.job;
+					res.areaCode = JSON.parse(res.areaCode)
+					this.morCity = [res.areaCode.id.substring(0,2)+'0000',res.areaCode.id.substring(0,4)+'00',res.areaCode.id]
+					this.city = res.areaCode.name
+					this.areaCode = this.morCity[2];
+				}
+			});
+		},
+		getCompanyData(){
+			req.getRequest('/api/CKBCompany/info',{},res=>{
+				if(res){
+					this.companyName = res.title
+					this.industryName = res.trade
+					this.tradeId = res.industryId
+					this.address = res.address
+					this.morCity = JSON.parse(res.areaCode).map(item=>{return item.id})
+					this.areaCode = JSON.parse(res.areaCode).map(item=>{return item.id})[2]
+					this.city = JSON.parse(res.areaCode).map(item=>{return item.name}).join('')
+				}
+			})
+		},
+		jumpUrl(url) {
+			uni.navigateTo({
+				url: url
+			});
+		},
+		uploadImgs() {
+			let that = this;
+			uni.chooseImage({
+				count: 1,
+				sizeType: ['original', 'compressed'],
+				sourceType: ['album', 'camera'],
+				success: function({ tempFilePaths }) {
+					var promise = Promise.all(
+						tempFilePaths.map(tempFilePath => {
+							return new Promise(function(resolve, reject) {
+								req.uploadFile('/api/upload', tempFilePath, res => {
+									that.avatar = res.src;
+								});
+							});
+						})
+					);
+					promise
+						.then(function(results) {
+							console.log(results);
+						})
+						.catch(function(err) {
+							console.log(err);
+						});
+				}
+			});
+		},
+		intMessage(e){
+			this.nums = e.detail.value.length
+		},
+		intWechatNumber(){
+			this.wechat = this.phone
+		},
+		
+		bindCity: function(e) {
+			this.morCity = e.detail.code;
+			this.city = e.detail.value.join().replace(/[,]/g, '');
+			this.areaCode = e.detail.code[2];
+		},
+		
+		bindAddressChange(data) {
+			this.morCity = data.ids;
+			this.city = data.data[0] + data.data[1] + data.data[2];
+			this.areaCode = data.ids[2];
+		},
+
+		/**
+		 * 提交名片
+		 */
+		submitCard() {
+			let that = this;
+			if (!this.avatar) return req.msg('请上传头像');
+			if (!this.realName) return req.msg('请填写你的真实姓名');
+			if (!this.brief) return req.msg('请填写个人简介');
+			if (!this.phone) return req.msg('请填写手机号');
+			if (!this.wechat) return req.msg('请填写微信号');
+			if (!this.email) return req.msg('请填写邮箱地址');
+			if (!this.companyName) return req.msg('请填写公司名称');
+			if (!this.job) return req.msg('请填写职位')
+			if (!this.industryName) return req.msg('请填写行业');
+			if (!this.areaCode) return req.msg('请选择所在地区');
+			if (!this.address) return req.msg('请填写详细地址');
+			var dataP = {};
+			dataP.avatar = this.avatar;
+			dataP.realName = this.realName;
+			dataP.brief = this.brief;
+			dataP.phone = this.phone;
+			dataP.wechat = this.wechat;
+			dataP.email = this.email;
+			dataP.companyName = this.companyName;
+			dataP.job = this.job;
+			dataP.industryName = this.industryName;
+			dataP.tradeId = this.tradeId;
+			dataP.areaCode = {
+				id:this.areaCode,
+				name :this.city
+			};
+			dataP.areaCode = JSON.stringify(dataP.areaCode)
+			dataP.address = this.address;
+			var url = '';
+			if (this.id) {
+				dataP.id = this.id;
+			} 
+
+			req.postRequest(
+				'/api/v3/visiting/card/saveOrUpdate',
+				dataP,
+				json => {
+					if (that.id) {
+						req.msg('保存成功');
+						setTimeout(function() {
+							uni.navigateBack({
+								delta: 1
+							});
+						}, 1500);
+					} else {
+						req.msg('名片创建成功');
+						setTimeout(function() {
+							that.jumpUrl('/card/index/index');
+						}, 1500);
+					}
+				},
+				true
+			);
+		}
+	}
+};
+</script>
+
+<style>
+@import './create.css';
+</style>

+ 7 - 0
card/editDesc/editDesc.css

@@ -0,0 +1,7 @@
+/* follow.css */
+.content {padding: 0 56rpx 520rpx;border-top: 2rpx solid #fbfbfb;}
+.placeholder {color: #A2A6AF;}
+.textarea {height: 500rpx;padding: 30rpx 0;width: 100%;font-size: 32rpx;color: #666;}
+.brief {font-size: 28rpx;color: #999;margin: 25rpx 0 0;}
+.brief text {color: #FF4211;}
+.btn {width: 638rpx;height: 94rpx;background: #DB2A2A;border-radius: 47rpx;font-size: 36rpx;color: #fff;text-align: center;line-height: 94rpx;margin: 0 auto; margin-top: 30rpx; }

+ 84 - 0
card/editDesc/editDesc.vue

@@ -0,0 +1,84 @@
+<template>
+	<view class="content">
+		<editor
+			@ready="onEditorReady"
+			id="editor"
+			placeholder="输入个人简介内容"
+			placeholder-class="placeholder"
+			class="textarea"
+			@input="descInput"
+			:read-only="isReadOnly"
+		></editor>
+
+		<view class="btn" @click="save()">保存</view>
+	</view>
+</template>
+
+<script>
+const app = getApp();
+const req = require('../../utils/request.js');
+const api = require('../../utils/api.js');
+export default {
+	data() {
+		return {
+			id: '',
+			brief: '',
+			isReadOnly: true
+		};
+	},
+
+	onLoad(opt) {
+		this.id = opt.id;
+		let pages = getCurrentPages();
+		let prevPage = pages[pages.length - 2];
+		this.brief = prevPage.$vm.brief;
+	},
+
+	methods: {
+		descInput(event) {
+			this.brief = event.detail.html;
+			// if (this.brief) {
+			// 	this.descLength = event.detail.text.length - 1;
+			// } else {
+			// 	this.descLength = 0;
+			// }
+		},
+		onEditorReady() {
+			if (this.isEndit) {
+				return;
+			}
+			const that = this;
+			uni.createSelectorQuery()
+				.select('#editor')
+				.context(function(res) {
+					that.editorCtx = res.context;
+					that.editorCtx.setContents({
+						html: that.brief //这里就是设置默认值的地方(html 后面给什么就显示什么)
+					});
+					that.isReadOnly = false;
+				})
+				.exec();
+		},
+
+		save() {
+			let pages = getCurrentPages(); //获取所有页面栈实例列表
+			let prevPage = pages[pages.length - 2]; //上一页页面实例
+			prevPage.$vm.brief = this.brief;
+			uni.navigateBack({
+				//uni.navigateTo跳转的返回,默认1为返回上一级
+				delta: 1
+			});
+		}
+	}
+};
+</script>
+
+<style>
+@import './editDesc.css';
+.ql-editor.ql-blank:before {
+	/* 此处设置 placeholder 样式 */
+	color: rgba(204, 204, 204, 1);
+	font-style: normal;
+	min-height: 400px;
+}
+</style>

+ 20 - 0
card/groupManage/groupManage.css

@@ -0,0 +1,20 @@
+/* labels.css */
+.tits {background: #F1F1F1;font-size: 28rpx;color: #666;padding: 30rpx 34rpx 15rpx;}
+.tits view text{font-size: 22rpx;color: #999;margin-left: 10rpx;}
+.create {font-size: 28rpx;color: #3387FF;}
+.list .li {border-bottom: 1rpx solid #f5f5f5;padding: 0 28rpx 0 31rpx;height: 110rpx;font-size: 32rpx;color: #222222;position: relative;}
+.list .li.long {background: #e5e5e5;}
+.nums {display: block;font-size: 28rpx;color: #999;margin-left: 20rpx;}
+.rico {width: 13rpx;height: 21rpx;margin-left: 20rpx;}
+.h-hide {width: 170rpx;background: #FFFFFF;border: 1rpx solid #F2F2F2;box-shadow: 0 6rpx 20rpx rgba(168, 168, 168, 0.16);border-radius: 6rpx;position: absolute;bottom: 55rpx;right: 20%;z-index: 20;font-size: 26rpx;color: #222;text-align: center;}
+.h-hide .lis {padding: 20rpx 0;position: relative;}
+.h-hide .lis::after {content: '';display: block;height: 1rpx;background: #E8E8E8;position: absolute;left: 28rpx;right: 28rpx;bottom: 0;}
+.h-hide .lis:last-child::after {display: none;}
+.list .li .h-hide {bottom: auto;top: 55rpx;}
+.mask {position: fixed;top: 0;left: 0;right: 0;bottom: 0;background: rgba(0, 0, 0, 0);z-index: 19;}
+/* 遮罩 */
+.shade {position: fixed;z-index: 100;top: 0;right: 0;bottom: 0;left: 0;-webkit-touch-callout: none;}
+.pop {position: fixed;z-index: 101;width: 200upx;box-sizing: border-box;font-size: 28upx;text-align: left;color: #333;background-color: #fff;box-shadow: 0 0 5px rgba(0, 0, 0, 0.5);line-height: 80upx;transition: transform 0.15s ease-in-out 0s;user-select: none;-webkit-touch-callout: none;transform: scale(0, 0);}
+.pop.show {transform: scale(1, 1);}
+.pop>view {padding: 0 20upx;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;user-select: none;-webkit-touch-callout: none;}
+.pop:active {background-color: #f3f3f3;}

+ 221 - 0
card/groupManage/groupManage.vue

@@ -0,0 +1,221 @@
+<template>
+	<view>
+		<view class="tits ddflex">
+			<view class="flex">全部分组
+			<!-- <text>(长按支持编辑)</text> -->
+			</view>
+			<navigator url="/card/addGroup/addGroup?isAdd=true" hover-class="none" class="create">+ 新建分组</navigator>
+		</view>
+
+		<view class="list" v-if="manageLabelList&&manageLabelList.length>0">
+			<view
+				:class="'li ddflex' + (pickerUserIndex == index ? ' long' : '')"
+				@longpress="onLongPress"
+				class="li ddflex"
+				:data-index="index"
+				v-for="(item, index) in manageLabelList"
+				:key="index"
+				@tap="listTap(item)"
+			>
+				<view class="flex tover">{{ item.groupName }}</view>
+				<!-- <text class="nums">{{ item.person }}</text> -->
+				<image src="../../static/images/rico1.png" class="rico"></image>
+			</view>
+		</view>
+		<view class="nodata" v-else>
+			<!-- <image src="../../static/images/empty_dd.png"></image> -->
+			<view>暂无分组~</view>
+		</view>
+		<view class="shade" v-show="showShade" @tap="hidePop">
+			<view class="pop" :style="popStyle" :class="{ show: showPop }">
+				<view v-for="(item, index) in popButton" :key="index" @tap="pickerMenu" :data-index="index">{{ item }}</view>
+			</view>
+		</view>
+		<!-- <view class="mask" @click="closePop()" v-if="isShow"></view> -->
+	</view>
+</template>
+
+<script>
+const app = getApp();
+const req = require('../../utils/request.js');
+const api = require('../../utils/api.js');
+export default {
+	data() {
+		return {
+			/* 窗口尺寸 */
+			winSize: {},
+			/* 显示遮罩 */
+			showShade: false,
+			/* 显示操作弹窗 */
+			showPop: false,
+			/* 弹窗定位样式 */
+			popStyle: '',
+			/* 选择的用户下标 */
+			pickerUserIndex: -1,
+			/* 弹窗按钮列表 */
+			popButton: ['编辑分组', '删除分组'],
+			manageLabelList: '',
+			longItemId: '',
+			isFrist: true,
+			
+			cardId:null
+		};
+	},
+	onLoad(options) {
+		this.getWindowSize();
+
+		// #ifdef H5
+		document.onLong = function(e) {
+			var e = e || window.event;
+			e.preventDefault();
+		};
+		// #endif
+		
+		if(options.cardId){
+			this.cardId = options.cardId
+			uni.setNavigationBarTitle({
+				title:'选择名片夹'
+			})
+		}
+	},
+	onShow() {
+		this.getManageLabelList();
+	},
+	methods: {
+		jumpUrl(url) {
+			uni.navigateTo({
+				url: url
+			});
+		},
+
+		edit() {
+			this.jumpUrl('/customer/addGroup/addGroup?groupId=' + this.manageLabelList[this.longItemId].id + '&title=' + this.manageLabelList[this.longItemId].groupName);
+		},
+		del() {
+			this.deleteLabel();
+		},
+
+		deleteLabel() {
+			console.log('deleteLabel数据>>>>>>>>>');
+			req.msgConfirm('确定要删除该分组吗?', success => {
+				this.deleteLabelRequest();
+			});
+		},
+
+		deleteLabelRequest() {
+			req.postRequest(
+				'/api/v3/visiting/card/group/delete',
+				{ id: this.manageLabelList[this.longItemId].id },
+				json => {
+					this.getManageLabelList();
+				},
+				true
+			);
+		},
+
+		getManageLabelList() {
+			req.getRequest(
+				'/api/v3/visiting/card/group/list',
+				{},
+				json => {
+					this.manageLabelList = json;
+					this.isFrist = false;
+				},
+				this.isFrist
+			);
+		},
+
+		/* 获取窗口尺寸 */
+		getWindowSize() {
+			uni.getSystemInfo({
+				success: res => {
+					this.winSize = {
+						witdh: res.windowWidth,
+						height: res.windowHeight
+					};
+				}
+			});
+		},
+		/* 列表触摸事件 */
+		listTap(item) {
+			if(this.cardId){
+				this.$showModal({
+				    title: '提示',
+				    content: '确定要移动到该分组吗?'
+				})
+				.then(res => {
+				    let pages = getCurrentPages();
+				    var prevPage = pages[pages.length - 2];
+				    if (prevPage) {
+				    	prevPage.$vm.changeGroup(this.cardId,item.id);
+						uni.navigateBack()
+				    }
+				})
+				.catch(err => {
+				});
+			}else{
+				/* 因弹出遮罩问题,所以需要在遮罩弹出的情况下阻止列表事件的触发 */
+				if (this.showShade) {
+					return;
+				}
+				this.jumpUrl('/card/addGroup/addGroup?groupId=' + item.id + '&title=' + item.groupName);
+				
+				// this.jumpUrl('/customer/labelCustomer/labelCustomer?groupId=' + item.id + '&title=' + item.title);
+			}
+		},
+		/* 长按监听 */
+		onLongPress(e) {
+			// let [touches, style, index] = [e.touches[0], '', e.currentTarget.dataset.index];
+			// /* 因 非H5端不兼容 style 属性绑定 Object ,所以拼接字符 */
+			// if (touches.clientY > this.winSize.height / 2) {
+			// 	style = `bottom:${this.winSize.height - touches.clientY}px;`;
+			// } else {
+			// 	style = `top:${touches.clientY}px;`;
+			// }
+			// if (touches.clientX > this.winSize.witdh / 2) {
+			// 	style += `right:${this.winSize.witdh - touches.clientX}px`;
+			// } else {
+			// 	style += `left:${touches.clientX}px`;
+			// }
+
+			// this.popStyle = style;
+			// this.pickerUserIndex = Number(index);
+			// this.longItemId = Number(index);
+			// this.showShade = true;
+			// this.$nextTick(() => {
+			// 	setTimeout(() => {
+			// 		this.showPop = true;
+			// 	}, 10);
+			// });
+		},
+		/* 隐藏弹窗 */
+		hidePop() {
+			this.showPop = false;
+			this.pickerUserIndex = -1;
+			setTimeout(() => {
+				this.showShade = false;
+			}, 250);
+		},
+		/* 选择菜单 */
+		pickerMenu(e) {
+			let index = Number(e.currentTarget.dataset.index);
+			if (index == 0) {
+				//编辑
+				this.edit();
+			} else if (index == 1) {
+				//删除
+				this.del();
+			}
+			/*
+			 因为隐藏弹窗方法中会将当前选择的用户下标还原为-1,
+			 如果行的菜单方法存在异步情况,请在隐藏之前将该值保存,或通过参数传入异步函数中
+			 */
+			this.hidePop();
+		}
+	}
+};
+</script>
+
+<style>
+@import './groupManage.css';
+</style>

+ 577 - 0
card/index/index.css

@@ -0,0 +1,577 @@
+/* index.css */
+page {
+	background: #f2f2f2;
+}
+
+.top-fixed {
+	position: fixed;
+	left: 0;
+	top: 0;
+	right: 0;
+	z-index: 50;
+}
+
+.bgcolor {
+	background: var(--main);
+	position: absolute;
+	top: 0;
+	left: 0;
+	right: 0;
+	transition: .3s all ease;
+	opacity: 0;
+}
+
+.opacity {
+	opacity: 1;
+}
+
+.top-fixed-c {
+	position: relative;
+}
+
+.back {
+	position: absolute;
+	top: 50%;
+	transform: translateY(-50%);
+	left: 0;
+	padding-left: 30rpx;
+	padding-right: 30rpx;
+}
+
+.back image {
+	width: 17rpx;
+	height: 31rpx;
+}
+
+.top-title {
+	font-size: 34rpx;
+	color: #333;
+	font-weight: 500;
+	text-align: center;
+}
+
+.top-black {
+	color: #000;
+}
+
+.bg {
+	position: absolute;
+	top: 0;
+	left: 0;
+	right: 0;
+	height: 540rpx;
+	background: linear-gradient(180deg, var(--main) 0%, #fff 100%);
+}
+
+.bg image {
+	width: 100%;
+	height: 100%;
+}
+
+.photo {
+	width: 690rpx;
+	height: 500rpx;
+	position: relative;
+}
+
+.poster {
+	width: 100%;
+	height: 100%;
+	border-radius: 20rpx 20rpx 0 0;
+}
+
+.change {
+	position: absolute;
+	right: 30rpx;
+	bottom: -40rpx;
+	font-size: 24rpx;
+	color: #fff;
+	border-radius: 100%;
+	background-color: #4891EF;
+	width: 80rpx;
+	height: 80rpx;
+}
+
+.change image {
+	width: 32rpx;
+	height: 25rpx;
+	margin:auto;
+}
+
+.upload {
+	width: 100%;
+	height: 100%;
+	flex-direction: column;
+	justify-content: center;
+	font-size: 26rpx;
+	color: var(--main);
+}
+
+.upload image {
+	width: 27rpx;
+	height: 27rpx;
+	margin: 0 auto 20rpx;
+}
+
+.infos {
+	background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, #FFFFFF 43%, #FFFFFF 100%);
+	overflow: hidden;
+	margin-bottom: 30rpx;
+}
+
+.infos-border {
+	width: 683rpx;
+	box-shadow: 0rpx 4rpx 24rpx 1rpx rgba(0, 0, 0, 0.1);
+	border-radius: 20rpx 20rpx 20rpx 20rpx;
+	margin: 32rpx 32rpx 0;
+	overflow: hidden;
+	padding-bottom: 30rpx;
+}
+
+.info {
+	background: #fff;
+	padding: 40rpx;
+}
+
+.company {
+	font-size: 28rpx;
+	color: #666;
+	font-weight: 400;
+	line-height: 40rpx;
+	margin-top: 13rpx;
+}
+.company image{
+	width: 23rpx;
+	height: 28rpx;
+	margin-right:9rpx ;
+}
+.name {
+	font-size: 48rpx;
+	color: #333;
+	font-weight: bold;
+	margin-top: 30rpx;
+	line-height: 53rpx;
+}
+
+.job {
+	font-size: 20rpx;
+	color: #FFFFFF;
+	margin-left: 12rpx;
+	font-weight: 400;
+	padding: 4rpx 10rpx;
+	line-height: 32rpx;
+	background: linear-gradient(80deg, #7EBFF1 0%, #458EEE 100%);
+	border-radius: 5rpx 5rpx 5rpx 5rpx;
+	opacity: 1;
+}
+
+.industry {
+	display: inline-block;
+	margin-top: 6rpx;
+	font-size: 20rpx;
+	color: #4C8EF1;
+	padding: 0 12rpx;
+	height: 36rpx;
+	line-height: 36rpx;
+	border-radius: 5rpx 5rpx 5rpx 5rpx;
+	opacity: 1;
+	border: 1rpx solid #4C8EF1;
+}
+
+.guanzhu {
+	width: 125rpx;
+	height: 50rpx;
+	line-height: 50rpx;
+	border-radius: 50rpx 50rpx 50rpx 50rpx;
+	opacity: 1;
+	border: 2rpx solid #999999;
+	font-size: 22rpx;
+	font-weight: 400;
+	color: #333333;
+	text-align: center;
+	margin-top: 30rpx;
+}
+
+.logo {
+	width: 128rpx;
+	height: 128rpx;
+	border: 1rpx solid #D9D9D9;
+	border-radius: 50%;
+}
+
+.logo image {
+	width: 100%;
+	height: 100%;
+	border-radius: 50%;
+}
+
+.zhan {
+	justify-content: center;
+	font-size: 24rpx;
+	color: #999;
+	padding: 30rpx 0;
+}
+
+.bico {
+	width: 23rpx;
+	height: 14rpx;
+	margin-left: 15rpx;
+	transition: all .3s ease;
+}
+
+.zhan-romate .bico {
+	transform: rotate(180deg);
+}
+
+.share {
+	width: 541rpx;
+	height: 94rpx;
+	background: #DB2A2A;
+	border-radius: 47rpx;
+	font-size: 36rpx;
+	color: #fff;
+	text-align: center;
+	line-height: 94rpx;
+}
+
+.opt {
+	justify-content: space-around;
+}
+
+.opt .li {
+	font-size: 26rpx;
+	color: #333;
+}
+
+.opt .li image {
+	width: 43rpx;
+	height: 41rpx;
+	margin: 0 auto 10rpx;
+}
+
+.datas {
+	padding: 28rpx 32rpx;
+}
+
+.users {
+	padding-left: 10rpx;
+	font-size: 24rpx;
+	color: #999;
+}
+
+.users image {
+	width: 50rpx;
+	height: 50rpx;
+	border-radius: 50%;
+	margin-left: -10rpx;
+}
+
+.users view {
+	margin-left: 15rpx;
+}
+
+.zan,
+.renqi {
+	font-size: 22rpx;
+	color: #5F5F5F;
+}
+
+.renqi {
+	margin-left: 50rpx;
+}
+
+.zan image {
+	width: 30rpx;
+	height: 32rpx;
+	margin-right: 10rpx;
+}
+
+.renqi image {
+	width: 25rpx;
+	height: 33rpx;
+	margin-right: 10rpx;
+}
+
+.box {
+	background: #fff;
+	border-radius: 12rpx;
+	margin: 20rpx 32rpx;
+	padding: 0 30rpx;
+	overflow: hidden;
+}
+
+.brief {
+	padding-bottom: 45rpx;
+}
+
+.tit {
+	font-size: 30rpx;
+	color: #000;
+	font-weight: 600;
+	margin: 35rpx 0 0;
+}
+
+.tit image {
+	width: 42rpx;
+	height: 42rpx;
+	margin-right: 20rpx;
+}
+
+.tit text {
+	font-size: 24rpx;
+	color: #999;
+	margin-left: 15rpx;
+	font-weight: normal;
+}
+
+.bri {
+	font-size: 28rpx;
+	color: #333;
+	line-height: 38rpx;
+	margin-top: 25rpx;
+}
+
+.card-datas {
+	margin-top: 20rpx;
+}
+
+.card-datas .li {
+	font-size: 24rpx;
+	color: #999;
+	width: 33.33%;
+	text-align: center;
+	padding: 35rpx 0;
+}
+
+.card-datas .li text {
+	display: block;
+	font-size: 38rpx;
+	color: #333;
+	margin-bottom: 5rpx;
+}
+
+.tit image.edit {
+	width: 30rpx;
+	height: 32rpx;
+	margin-right: 0;
+}
+
+.videos {
+	padding-bottom: 40rpx;
+}
+
+.video {
+	margin-top: 30rpx;
+}
+
+.not {
+	font-size: 30rpx;
+	color: #999999;
+	text-align: center;
+	padding: 70rpx 0 30rpx;
+}
+
+.not image {
+	width: 53rpx;
+	height: 46rpx;
+	margin: 0 auto 20rpx;
+}
+
+.video-sp {
+	width: 100%;
+	height: 352rpx;
+	border-radius: 4rpx;
+}
+
+.pic {
+	padding-bottom: 40rpx;
+}
+
+.picture {
+	margin-top: 30rpx;
+}
+
+.pics image {
+	width: 100%;
+}
+
+.also {
+	font-size: 26rpx;
+	color: #DB2A2A;
+	text-align: center;
+	padding: 20rpx 0 40rpx;
+}
+
+.contacts {
+	height: 136rpx;
+	overflow: hidden;
+	margin: 0rpx 0 0;
+}
+
+.contact {
+	white-space: nowrap;
+	height: 136rpx;
+	padding-bottom: 20rpx;
+}
+
+.contact .li {
+	display: inline-block;
+	height: 136rpx;
+	background: #FFFFFF;
+	border: 1rpx solid #CFCFCF;
+	border-radius: 10rpx;
+	box-sizing: border-box;
+	padding: 25rpx 22rpx 0;
+	margin-right: 25rpx;
+	min-width: 270rpx;
+}
+
+.contact .li:first-child {
+	margin-left: 32rpx;
+}
+
+.contact .li:last-child {
+	margin-right: 32rpx;
+}
+
+.lit {
+	font-size: 26rpx;
+	color: #000;
+}
+
+.lit image {
+	width: 34rpx;
+	height: 34rpx;
+	margin-right: 10rpx;
+}
+
+.num {
+	font-size: 24rpx;
+	color: #666;
+	margin-top: 22rpx;
+}
+
+.btns {
+	justify-content: space-between;
+	margin: 45rpx 30rpx 30rpx;
+	overflow: hidden;
+}
+
+.share-ta {
+	height: 80rpx;
+	font-size: 26rpx;
+	font-weight: 500;
+	color: #FFFFFF;
+	text-align: center;
+	line-height: 80rpx;
+	border-radius: 47rpx;
+	margin-right: 15rpx;
+	justify-content: center;
+}
+.share-ta:last-child{
+	margin-right: 0;
+}
+.share-ta image{
+	width: 36rpx;
+	height: 36rpx;
+	margin-right: 10rpx;
+}
+.save {
+	width: 300rpx;
+	height: 94rpx;
+	background: #DB2A2A;
+	font-size: 36rpx;
+	color: #fff;
+	text-align: center;
+	line-height: 94rpx;
+	border-radius: 47rpx;
+}
+.save-text{
+	color: var(--main);
+	text-align: center;
+	margin-top: 43rpx;
+	justify-content: center;
+}
+.save-text image{
+	width: 28rpx;
+	height: 27rpx;
+	margin-right: 10rpx;
+}
+.q-hud {
+	height: 104rpx;
+	border-radius: 10rpx;
+	position: relative;
+	margin: 40rpx 30rpx 0;
+	justify-content: space-between;
+	border-top: 1px solid #E9E9E9;
+}
+
+.q-bg {
+	width: 100%;
+	height: 100%;
+	position: absolute;
+	top: 0;
+	left: 0;
+}
+
+.q-hud-c {
+	position: relative;
+	z-index: 2;
+	height: 100%;
+	font-size: 24rpx;
+	color: #999;
+	padding: 0 0rpx 0 0rpx;
+}
+
+.q-users {
+	margin-right: 20rpx;
+}
+
+.q-users image {
+	width: 50rpx;
+	height: 50rpx;
+	border: 2rpx solid #E5E5E5;
+	border-radius: 50%;
+	margin-left: -14rpx;
+	background: #D8D8D8;
+}
+
+.q-users image:first-child {
+	margin-left: 0;
+}
+
+.q-rico {
+	width: 15rpx;
+	height: 25rpx;
+}
+
+.q-hud-r {
+	font-size: 22rpx;
+	color: #5F5F5F;
+}
+
+.extend-info{
+	margin: 30rpx;
+	padding: 37rpx 47rpx;
+	background:#f8f8f8;
+	border-radius: 20rpx 20rpx 20rpx 20rpx;
+}
+.extend-info-data{
+	font-size: 39rpx;
+	font-weight: 400;
+	color: #333333;
+	text-align: center;
+}
+.extend-info-label{
+	font-size: 24rpx;
+	font-weight: 500;
+	color: #A1A1A1;
+	justify-content: center;
+	text-align: center;
+	margin-top: 10rpx;
+}
+.extend-info-label image{
+	width: 28rpx;
+	height: 28rpx;
+	margin-right: 10rpx;
+}

+ 696 - 0
card/index/index.vue

@@ -0,0 +1,696 @@
+<template>
+	<view style="padding-bottom: 30rpx;">
+		<view class="top-fixed" :style="'height: '+ systems.barHeight + 'rpx;'">
+			<view :class="'bgcolor' + (isTop == 1 ? ' opacity' : '')" :style="'height:' + systems.barHeight + 'rpx'">
+			</view>
+			<view class="top-fixed-c"
+				:style="'height: '+ systems.navigationHeight + 'rpx;margin-top:' + systems.ktxStatusHeight + 'rpx;'">
+				<navigator url="" hover-class="none" open-type="navigateBack" class="back ddflex"
+					:style="'height: '+ systems.navigationHeight + 'rpx;'">
+					<image src="/static/pages/images/back_black.png"></image>
+				</navigator>
+				<view :class="'top-title tover' + (isTop == 1 ? ' top-black':'')"
+					:style="'line-height: '+ systems.navigationHeight + 'rpx;'">名片</view>
+			</view>
+		</view>
+		<view :style="'height: '+ systems.barHeight + 'rpx;'"></view>
+		<view class="bg">
+			<image src="/static/pages/images/userBg.png"></image>
+		</view>
+		<view class="infos">
+			<view class="infos-border">
+				<view class="photo">
+					<block v-if="cardInfo.avatar">
+						<image :src="cardInfo.avatar" mode="aspectFill" class="poster"></image>
+						<view class="change ddflex" style="right: 140rpx;background-color:#27D699;"
+							@click="userBehavior(3)">
+							<image v-if="!cardInfo.isThumbs" style="width: 35rpx;height: 32rpx;"
+								src="/card/static/images/dz.png"></image>
+							<image v-else style="width: 35rpx;height:32rpx;" src="../../static/images/like_h.png">
+							</image>
+							<!-- 点赞 -->
+						</view>
+						<view class="change ddflex" @click="uploadImg()">
+							<image src="/card/static/images/change.png"></image>
+							<!-- 更换形象图 -->
+						</view>
+					</block>
+					<!-- @click="uploadImg()" -->
+					<view class="upload ddflex" v-else
+						@click="jumpUrl('/card/create/create?isEdit=true&id=' + cardInfo.id)">
+						<image src="../../static/images/jia.png"></image>
+						上传专属形象
+					</view>
+				</view>
+				<view class="info dflex">
+					<view class="flex">
+						<view class="name">
+							{{ cardInfo.realName }}
+							<text class="job" v-if="cardInfo.job">{{ cardInfo.job }}</text>
+							<text class="job">入司10年</text>
+						</view>
+						<view class="company ddflex" style="margin-top: 20rpx;">
+							<image src="/static/pages/images/dzico.png"></image>
+							{{ cardInfo.companyName }}
+						</view>
+						<view class="company ddflex">
+							<image src="/static/pages/images/dzico.png"></image>
+							服务区域 {{ cardInfo.industryName }}
+						</view>
+						<view class="company">
+							执业证书:02000043090080002013000260
+						</view>
+						<!-- <view class="industry">
+							{{ cardInfo.industryName }}
+						</view> -->
+					</view>
+					<!-- <view class="guanzhu" v-if="cardId" @click="userBehavior(1)">{{cardInfo.follow==1?'我已关注':'+关注'}}</view> -->
+					<!-- <view class="logo"><image :src="cardInfo.avatar" mode="aspectFit"></image></view> -->
+				</view>
+				<!-- <view class="contacts" v-if="cardId">
+					<scroll-view scroll-x="true" class="contact">
+						<view class="li" @click="goPhone()">
+							<view class="lit ddflex">
+								<image src="../static/images/phone.png"></image>
+								拨打电话
+							</view>
+							<view class="num">{{ cardInfo.phone }}</view>
+						</view>
+						<view class="li" @click="copy(cardInfo.wechat, 1)">
+							<view class="lit ddflex">
+								<image src="../static/images/wechat.png"></image>
+								复制微信
+							</view>
+							<view class="num">{{ cardInfo.wechat }}</view>
+						</view>
+						<view class="li" @click="copy(cardInfo.email, 2)">
+							<view class="lit ddflex">
+								<image src="../static/images/message.png"></image>
+								复制邮箱
+							</view>
+							<view class="num">{{ cardInfo.email }}</view>
+						</view>
+					</scroll-view>
+				</view> -->
+			</view>
+			<view class="btns ddflex" v-if="cardId">
+				<view class="share-ta ddflex fflex" style="background: linear-gradient(80deg, #7EBFF1 0%, #458EEE 100%);;"
+					@click="saveToPhone()">
+					<image src="../../static/pages/images/wx.png"></image>存入通讯录</view>
+				<view class="share-ta ddflex fflex" style="background: linear-gradient(84deg, #6FE5BC 0%, #27D699 100%);"
+					@click="saveToPhone()">
+					<image src="/static/pages/images/dh.png"></image>存入通讯录</view>
+				<view class="share-ta ddflex fflex" style="background: linear-gradient(80deg, #FF985A 0%, #FF5700 100%);"
+					@click="cardInfo.isSave?'':saveToFolder()">
+					<image src="/static/pages/images/share1.png"></image>{{cardInfo.isSave?'已存入名片夹':'存入名片夹'}}</view>
+			</view>
+			<view class="save-text ddflex">
+				<image src="../static/images/wxth.png"></image>保存到通讯录
+			</view>
+			<view class="btns ddflex" v-if="!cardId">
+				<view class="share" @click="jumpUrl('/card/poster/poster?id=' + cardInfo.id)">分享名片</view>
+				<view class="opt ddflex">
+					<view class="li" @click="jumpUrl('/card/create/create?isEdit=true&id=' + cardInfo.id)">
+						<image src="../static/images/edit.png"></image>
+						<view>编辑名片</view>
+					</view>
+				</view>
+			</view>
+			<view class="extend-info ddflex">
+				<view class="extend-info-item fflex">
+					<view class="extend-info-data">1678</view>
+					<view class="extend-info-label ddflex">
+						<image src="../../static/pages/images/fw_hui.png"></image>
+						<view>服务客户</view>
+					</view>
+				</view>
+				<view class="extend-info-item fflex">
+					<view class="extend-info-data">1678</view>
+					<view class="extend-info-label ddflex">
+						<image src="/static/pages/images/cy_hui.png"></image>
+						<view>保单件数</view>
+					</view>
+				</view>
+				<view class="extend-info-item fflex">
+					<view class="extend-info-data">1678</view>
+					<view class="extend-info-label ddflex">
+						<image src="/static/pages/images/dz_hui.png"></image>
+						<view>点赞量</view>
+					</view>
+				</view>
+			</view>
+			<view class="q-hud ddflex">
+				<view class="q-hud-c ddflex">
+					<view class="q-users ddflex">
+						<image :src="item.avatar" mode="aspectFill" v-for="(item, index) in cardInfo.pageUser.list"
+							v-if="index<3" :key="index"></image>
+					</view>
+					<view class="fflex">
+						{{cardInfo.pageUser.total}}人看过
+					</view>
+					<!-- <image src="../static/images/q_rico.png" class="q-rico"></image> -->
+				</view>
+				<view class="q-hud-r ddflex">
+					<view class="ddflex" @click="userBehavior(3)">
+						<image v-if="!cardInfo.isThumbs" style="width: 27rpx;height: 29rpx;margin-right: 10rpx;"
+							src="../static/images/dz.png"></image>
+						<image v-else style="width: 27rpx;height: 29rpx;margin-right: 10rpx;"
+							src="../../static/images/like_h.png"></image>
+						<text>{{cardInfo.thumbs}}</text>
+					</view>
+					<view class="ddflex" v-if="cardId" @click="jumpUrl('/card/poster/poster?id'+cardInfo.id)">
+						<image style="width: 29rpx;height: 29rpx;margin-left: 30rpx;margin-right: 10rpx;"
+							src="../static/images/share.png"></image>
+						<text>分享</text>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="box brief">
+			<view class="tit ddflex">
+				<view class="flex ddflex">
+					<image src="../static/images/jj_ico.png"></image>
+					<view>个人简介</view>
+				</view>
+				<!-- <image v-if="!cardId" src="../static/images/bj_ico.png" class="edit" @tap="jumpUrl('/card/editDesc/editDesc?id=' + cardInfo.id)"></image> -->
+			</view>
+			<view class="bri"><rich-text :nodes="cardInfo.brief ? cardInfo.brief : '一句话介绍自己'"></rich-text></view>
+		</view>
+		<view class="box" v-if="!cardId">
+			<view class="tit ddflex">
+				<image src="../static/images/sj_ico.png"></image>
+				<view>
+					我的名片数据
+				</view>
+			</view>
+			<view class="card-datas ddflex">
+				<view class="li">
+					<text>{{ cardInfo.pageUser.total }}</text>
+					访问量(次)
+				</view>
+				<view class="li">
+					<text>{{ cardInfo.todayBrowse }}</text>
+					今日访问量(次)
+				</view>
+				<view class="li">
+					<text>{{ cardInfo.share }}</text>
+					分享名片(次)
+				</view>
+			</view>
+		</view>
+		<view class="box videos">
+			<view class="tit ddflex">
+				<view class="flex ddflex">
+					<image src="../static/images/sp_ico.png"></image>
+					<view>我的视频</view>
+				</view>
+				<image v-if="cardInfo.videoId && !cardId" @click="uploadVodChangeHandle()"
+					src="../static/images/bj_ico.png" class="edit"></image>
+			</view>
+			<view class="video">
+				<video v-if="cardInfo.videoId" controls="true" class="video-sp" :src="videoInfo.playUrl"></video>
+				<view v-else class="not" @click="uploadVodChangeHandle()">
+					<image src="../static/images/add_ico1.png"></image>
+					<view>点击添加个人介绍视频</view>
+				</view>
+			</view>
+		</view>
+		<view class="also" v-if="cardId" @click="jumpUrl('/card/create/create')">我也要创建电子名片</view>
+	</view>
+</template>
+<script>
+	const app = getApp();
+	const req = require('../../utils/request.js');
+	const api = require('../../utils/api.js');
+	import VODUpload from '@/utils/aliyun-upload-sdk-1.0.1.min.js'
+	export default {
+		data() {
+			return {
+				systems: {},
+				isTop: 0,
+				options: {},
+				scene: null,
+				cardId: '',
+				cardInfo: '',
+				cardCount: '',
+				zhiPicUrls: [],
+
+				isFirst: true, //页面加载第一次调用
+
+				uploader: '',
+				isStart: false,
+				videoInfo: '',
+				fileName: '', //视频名称
+			};
+		},
+		onLoad(options) {
+			this.options = options
+			this.cardId = options.cardId;
+			if (options.scene)
+				this.scene = options.scene
+		},
+
+		async onShow() {
+			if (this.scene) {
+				await this.loadCodeParams();
+			}
+			console.log('req.isLogins(false)', req.isLogins(false))
+			await req.silenceLogin(this.options.userId ? this.options.userId : '', '')
+			this.getCardInfo();
+		},
+
+		onShareAppMessage() {},
+		onShareTimeline() {},
+
+		methods: {
+			loadCodeParams() {
+				let _ts = this;
+				return new Promise((resolve, reject) => {
+					if (!_ts.scene) {
+						resolve();
+						return false;
+					}
+					req.getRequest(
+						'/api/code/params', {
+							scene: _ts.scene
+						},
+						data => {
+							this.options.userId = data.userId
+							this.cardId = data.scene
+							resolve();
+						}
+					);
+				});
+			},
+			getImgList(url) {
+				var list = [];
+				if (url) {
+					list = url.split(',');
+				}
+				return list;
+			},
+
+			jumpUrl(url) {
+				uni.navigateTo({
+					url: url
+				});
+			},
+
+			getCardInfo() {
+				var url = '';
+				var dataP = {};
+				if (this.cardId) {
+					url = '/api/v3/visiting/card/info';
+					dataP.id = this.cardId;
+				} else {
+					url = '/api/v3/visiting/card/userInfo';
+					dataP = {};
+				}
+				req.getRequest(url, dataP, data => {
+					this.cardInfo = data;
+					if (this.cardInfo.videoId) {
+						this.getPlayInfo(this.cardInfo.videoId);
+					}
+					console.log('isFirst')
+					if (this.cardId && this.cardInfo.userId == req.getStorage('userInfo').id) {
+						// this.cardId = null
+						// this.getCardInfo()
+					} else {
+						if (this.cardInfo.userId == req.getStorage('userInfo').id) {
+
+						} else {
+							// 用户浏览
+							if (this.isFirst) {
+								this.userBehavior(4)
+							}
+						}
+						this.isFirst = false
+					}
+				});
+			},
+
+			// 用户行为
+			userBehavior(type) {
+				var dataP = {};
+				dataP.type =
+					23 //、产品 2、活动 3、未知 4、内容 5、课程 6、老师 7、素材 8、题目 9、资料领取 10、招聘职位 12、用户须知 13、素材 15、医院科室 16、海报 20、医生 21 新闻 23名片
+				dataP.behavior = type; //1、关注 2、收藏 3、点赞 4、浏览 5、确认 6、分享
+				dataP.bindId = this.cardInfo.id;
+				req.postRequestLoding('/api/v3/behavior/save', dataP, data => {
+					if (type == 3) {
+						this.cardInfo.isThumbs = !this.cardInfo.isThumbs
+					}
+					if (type == 1) {
+						this.cardInfo.follow = !this.cardInfo.follow
+					}
+				});
+			},
+
+			// 存入名片夹
+			saveToFolder() {
+				let form = {
+					visitingCardId: this.cardInfo.id,
+					userId: req.getStorage('userInfo').id
+				}
+				req.postRequest('/api/v3/visiting/card/folder/saveOrUpdate', form, res => {
+					req.msg('已存入名片夹')
+					this.cardInfo.isSave = true
+				})
+			},
+			// 存入通讯录
+			saveToPhone() {
+				uni.addPhoneContact({
+					nickName: this.cardInfo.realName,
+					firstName: this.cardInfo.realName,
+					mobilePhoneNumber: this.cardInfo.phone,
+					success: (res) => {
+						this.$showModal({
+								title: '提示',
+								content: '已存入通讯录,请前往手机通讯录查看',
+								showCancel: false,
+							})
+							.then(res => {
+
+							})
+							.catch(err => {});
+					},
+					fail: () => {
+						req.msg('存入失败')
+					}
+				})
+			},
+
+			goPhone() {
+				uni.makePhoneCall({
+					phoneNumber: this.cardInfo.phone
+				}); // 传参带入号码即可
+			},
+
+			copy(valueText, type) {
+				uni.setClipboardData({
+					data: valueText,
+					success: function(res) {
+						if (type == 1) {
+							req.msg('微信号复制成功');
+						} else if (type == 2) {
+							req.msg('邮箱复制成功');
+						}
+					}
+				});
+			},
+
+			getPlayInfo(videoId) {
+				req.getRequest('/api/v3/vod/playInfo', {
+					videoId: videoId
+				}, data => {
+					this.videoInfo = data
+				})
+			},
+			createUploader() {
+				let self = this;
+				return new VODUpload({
+					timeout: 60000,
+					partSize: 1048576,
+					parallel: 5,
+					retryCount: 3,
+					retryDuration: 2,
+					region: this.regionId,
+					userId: this.accountId,
+					// 开始上传
+					onUploadstarted: function(uploadInfo) {
+						uni.showLoading({
+							title: '视频上传中'
+						})
+						console.log('uploadInfo==', uploadInfo)
+						if (!uploadInfo.videoId) {
+							req.getRequest('/api/v3/vod/uploadAuth?fileName=' + self.fileName, {}, res => {
+								var data = res;
+								self.uploader.setUploadAuthAndAddress(uploadInfo, data.uploadAuth, data
+									.uploadAddress, data.videoId)
+							})
+							self.isStart = true;
+						} else {
+							req.getRequest('/api/v3/vod/refreshUploadAuth?videoId=' + uploadInfo.videoId, {},
+								res => {
+									var data = res;
+									self.uploader.setUploadAuthAndAddress(uploadInfo, data.uploadAuth, data
+										.uploadAddress, data.videoId)
+								})
+						}
+					},
+					// 文件上传成功
+					onUploadSucceed: function(uploadInfo) {
+						// req.msg("视频上传成功");
+						let dataP = {
+							id: self.cardInfo.id,
+							videoId: uploadInfo.videoId,
+							videoInfo: JSON.stringify(uploadInfo)
+						}
+						req.postRequest('/api/v3/visiting/card/saveOrUpdate', dataP, res => {
+							self.getPlayInfo(uploadInfo.videoId);
+							setTimeout(() => {
+								self.isStart = false;
+							}, 1000);
+							uni.hideLoading()
+						})
+					},
+					// 文件上传失败
+					onUploadFailed: function(uploadInfo, code, message) {
+						req.msg("文件上传失败");
+					},
+					// 取消文件上传
+					onUploadCanceled: function(uploadInfo, code, message) {
+						req.msg("文件已暂停上传");
+					},
+					// 文件上传进度,单位:字节, 可以在这个函数中拿到上传进度并显示在页面上
+					onUploadProgress: function(uploadInfo, totalSize, progress) {
+						var progressPercent = Math.ceil(progress * 100);
+						// self.$set(self.uploader, 'authProgress', progressPercent);
+					},
+					// 上传凭证超时
+					onUploadTokenExpired: function(uploadInfo) {
+						req.getRequest('/api/v3/vod/refreshUploadAuth?videoId=' + uploadInfo.videoId, {},
+							res => {
+								var data = res;
+								self.uploader.resumeUploadWithAuth(data.uploadAuth)
+							})
+					}
+				})
+			},
+			uploadVodChangeHandle: function(e) {
+				let self = this;
+				uni.chooseVideo({
+					count: 1, //上传视频的个数
+					mediaType: ['video'], //限制上传的类型为video
+					sourceType: ['album', 'camera'], //视频选择来源
+					maxDuration: 58, //拍摄限制时间
+					camera: 'back', //采用后置摄像头
+					success: function(res) {
+						//获取临时存放的视频资源
+						// let tempFilePath=res.tempFiles[0]
+						console.log('视频文件==', res)
+						var file = {
+							url: res.tempFilePath,
+							coverUrl: res.thumbTempFilePath
+						};
+						self.fileName = res.tempFilePath.substring(res.tempFilePath.lastIndexOf('/') + 1)
+						// if (self.uploader) {
+						// 	self.uploader.stopUpload();
+						// 	self.authProgress = 0;
+						// }
+						var userData = '{"Vod":{}}';
+						self.uploader = self.createUploader();
+						self.uploader.addFile(file, null, null, null, userData);
+						self.uploader.startUpload();
+					},
+				})
+			},
+			uploadImg() {
+				let that = this;
+				uni.chooseImage({
+					count: 1,
+					sizeType: ['original', 'compressed'],
+					sourceType: ['album', 'camera'],
+					success: function({
+						tempFilePaths
+					}) {
+						var promise = Promise.all(
+							tempFilePaths.map(tempFilePath => {
+								return new Promise(function(resolve, reject) {
+									req.uploadFile(api.upload, tempFilePath, res => {
+										that.imageMap = res.src;
+										//上传完成,则更新保存
+										that.updateCard(3, that.imageMap);
+									});
+								});
+							})
+						);
+						promise
+							.then(function(results) {
+								console.log(results);
+							})
+							.catch(function(err) {
+								console.log(err);
+							});
+					}
+				});
+			},
+
+			uploadImgs() {
+				let that = this;
+				uni.chooseImage({
+					count: 9,
+					sizeType: ['original', 'compressed'],
+					sourceType: ['album', 'camera'],
+					success: function({
+						tempFilePaths
+					}) {
+						var promise = Promise.all(
+							tempFilePaths.map(tempFilePath => {
+								return new Promise(function(resolve, reject) {
+									req.uploadFile(api.upload, tempFilePath, res => {
+										let picUrls = that.zhiPicUrls;
+										that.zhiPicUrls = picUrls.concat(res.src);
+										if (tempFilePaths.length == that.zhiPicUrls
+											.length) {
+											//上传完成,则更新保存
+											that.updateCard(1, that.zhiPicUrls.join(
+												','));
+										}
+									});
+								});
+							})
+						);
+						promise
+							.then(function(results) {
+								console.log(results);
+							})
+							.catch(function(err) {
+								console.log(err);
+							});
+					}
+				});
+			},
+
+			//预览图片
+			previewImg(picUrls, index) {
+				//预览合同图片
+				var src = picUrls[index];
+				let imgs = picUrls;
+				uni.previewImage({
+					current: src, // 当前显示图片的http链接
+					urls: imgs
+				});
+			},
+
+			cleanimages(index) {
+				// 删除图片
+				let arr = this.zhiPicUrls;
+				arr.splice(index, 1);
+				this.zhiPicUrls = arr;
+			},
+
+			/**
+			 * @param {Object} type 1图片 2、视频
+			 * @param {Object} url 资源地址
+			 */
+			updateCard(type, url) {
+				var dataP = {};
+				dataP.id = this.cardInfo.id;
+				if (type == 1) {
+					dataP.pictures = url;
+				} else if (type == 2) {
+					dataP.video = url;
+				} else if (type == 3) {
+					dataP.imageMap = url;
+				}
+				req.postRequest(api.api_addressList_update, dataP, json => {
+					if (type == 1) {
+						this.cardInfo.pictures = url;
+					} else if (type == 2) {
+						this.cardInfo.video = url;
+					} else if (type == 3) {
+						this.cardInfo.imageMap = url;
+					}
+				});
+			},
+
+			toWxShare() {
+				req.getWXOriginalId(data => {
+					if (data) {
+						this.wxShare(data);
+					} else {
+						this.$showModal({
+							title: '提示',
+							content: '未配置微信小程序',
+							cancelText: '取消',
+							confirmText: '设置开通'
+						}).then(res => {
+							// 点击确认的操作
+							// tha.copy(content);
+						});
+					}
+				});
+			},
+
+			wxShare(originalId) {
+				//分享H5
+				// uni.share({
+				// 	provider: 'weixin',
+				// 	scene: 'WXSceneSession',
+				// 	type: 0,
+				// 	href: req.env[req.env.NODE_ENV].h5BaseUrl + '/share/card/index?cardId=' + this.cardInfo.id,
+				// 	title: this.cardInfo.nickName + ' - 电子名片',
+				// 	summary: this.cardInfo.title + ' ' + this.cardInfo.position.name + ' ' + this.cardInfo.message,
+				// 	imageUrl: this.cardInfo.avatar,
+				// 	success: function(res) {
+				// 		console.log('success:' + JSON.stringify(res));
+				// 	},
+				// 	fail: function(err) {
+				// 		console.log('fail:' + JSON.stringify(err));
+				// 	}
+				// });
+
+				uni.share({
+					provider: 'weixin',
+					scene: 'WXSceneSession',
+					type: 5,
+					imageUrl: this.cardInfo.avatar + '?x-oss-process=style/w375',
+					title: this.cardInfo.nickName + ' - 电子名片',
+					summary: this.cardInfo.title + ' ' + this.cardInfo.position.name + ' ' + this.cardInfo.message,
+					miniProgram: {
+						id: originalId,
+						path: '/share/card/index?cardId=' + this.cardInfo.id,
+						type: req.env[req.env.NODE_ENV].typeMiniProgram,
+						webUrl: req.public.homeWebUrl
+					},
+					success: ret => {
+						console.log(JSON.stringify(ret));
+					}
+				});
+			}
+		},
+		mounted() {
+			const systemInfo = uni.getSystemInfoSync();
+			// px转换到rpx的比例
+			let pxToRpxScale = 750 / systemInfo.windowWidth;
+			let systems = {
+				ktxStatusHeight: systemInfo.statusBarHeight * pxToRpxScale, // 状态栏的高度
+				navigationHeight: 44 * pxToRpxScale // 导航栏的高度
+			};
+			systems.barHeight = systems.ktxStatusHeight + systems.navigationHeight;
+			this.systems = systems;
+		},
+		onPageScroll: function(e) {
+			if (e.scrollTop > this.systems.barHeight) {
+				this.isTop = 1;
+			} else {
+				this.isTop = 0;
+			}
+		}
+	};
+</script>
+
+<style>
+	@import './index.css';
+</style>

+ 9 - 0
card/industry/industry.css

@@ -0,0 +1,9 @@
+/* industry.css */
+.industry{}
+.left{position: absolute;top: 0;left: 0;bottom: 140rpx;background: #f5f5f5;width: 35%;overflow: hidden;overflow-y: scroll;-webkit-overflow-scrolling: touch;}
+.left .li{padding: 25rpx;font-size: 28rpx;color: #333;min-height: 80rpx;box-sizing: border-box;}
+.left .li.active{color: var(--main);}
+.right{position: absolute;top: 0;right: 0;bottom: 140rpx;background: #fff;width: 65%;overflow: hidden;overflow-y: scroll;-webkit-overflow-scrolling: touch;}
+.right .li{padding: 30rpx;font-size: 28rpx;color: #666;}
+.right .li.active{color: var(--main);}
+.btn{position: fixed;left: 40rpx;right: 40rpx;bottom: 30rpx;z-index: 10;height: 80rpx;background: var(--main);border-radius: 40rpx;font-size: 32rpx;color: #fff;text-align: center;line-height: 80rpx;}

+ 74 - 0
card/industry/industry.vue

@@ -0,0 +1,74 @@
+<template>
+	<view>
+		<view class="industry">
+			<view class="left">
+				<view :class="'li dflex' + (checkIndex == index ? ' active':'')" v-for="(item,index) in industryList" :key="index" @click="checkIndustry(index)">
+					{{item.name}}
+				</view>
+			</view>
+			<view class="right">
+				<view :class="'li' + (arrayIndex == index ? ' active':'')" v-for="(item,index) in rightArray" :key="index" @click="checkArray(index)">
+					{{item.name}}
+				</view>
+			</view>
+		</view>
+		<view class="btn" @click="save()">确定</view>
+	</view>
+</template>
+
+<script>
+const req = require('../../utils/request.js');
+const api = require('../../utils/api.js');
+const util = require('../../utils/util.js');
+var app = getApp();
+export default {
+	data() {
+		return {
+			industryList: [],
+			checkIndex: 0,
+			rightArray: [],
+			arrayIndex: -1,
+			industryName: '',
+			tradeId: ''
+		};
+	},
+	onLoad() {
+		this.getIndustry();
+	},
+	methods: {
+		getIndustry() {
+			req.getRequest(api.company_industry, {}, json => {
+				this.industryList = json;
+				this.rightArray = json[0].children;
+			});
+		},
+		checkIndustry(index){
+			if(this.checkIndex == index) return false;
+			this.checkIndex = index;
+			this.rightArray = this.industryList[this.checkIndex].children;
+			this.arrayIndex=-1;
+		},
+		checkArray(index){
+			if(this.arrayIndex == index) return false;
+			this.arrayIndex = index;
+			this.industryName = this.rightArray[this.arrayIndex].name;
+			this.tradeId = this.rightArray[this.arrayIndex].id;
+		},
+		save(){
+			if(this.arrayIndex < 0) return req.msg('请选择行业');
+			let pages = getCurrentPages();             //获取所有页面栈实例列表
+			let nowPage = pages[ pages.length - 1];    //当前页页面实例
+			let prevPage = pages[ pages.length - 2 ];  //上一页页面实例
+			prevPage.$vm.industryName = this.industryName;         //修改上一页面的 couponNumber 参数值为 value
+			prevPage.$vm.tradeId = this.tradeId;         //修改上一页面的 couponNumber 参数值为 value
+			uni.navigateBack({                         //uni.navigateTo跳转的返回,默认1为返回上一级
+				delta: 1
+			});
+		}
+	}
+};
+</script>
+
+<style>
+	@import "./industry.css";
+</style>

+ 311 - 0
card/myNetWork/myNetWork.css

@@ -0,0 +1,311 @@
+page {
+	background-color: #fff;
+}
+.top-bar{
+	position: fixed;
+	top: 0;
+	left: 0;
+	right: 0;
+	background-color: #fff;
+	z-index: 5;
+}
+.tab-nav {
+	height: 45rpx;
+	line-height: 45rpx;
+	font-size: 32rpx;
+	color: #666666;
+	padding: 30rpx 30rpx 20rpx;
+	border-bottom: 1px solid  #CACACA;
+}
+
+.tab-nav-item {
+	/* margin-right: 50rpx; */
+	width: 33%;
+	text-align: center;
+	font-size: 32rpx;
+	color: #666666;
+	height: 45rpx;
+	line-height: 45rpx;
+}
+
+.tab-nav-item-active {
+	font-size: 32rpx;
+	/* font-weight: bold; */
+	/* color: #DB2A2A; */
+	font-weight: 500;
+	position: relative;
+	color: #000000;
+}
+
+.tab-nav-item-active::after {
+	content: '';
+	position: absolute;
+	bottom: -20rpx;
+	left: 50%;
+	transform: translateX(-50%);
+	width: 58rpx;
+	height: 6rpx;
+	background-color: #DB2A2A;
+}
+
+/* 搜索 */
+.search {
+	background-color: #fff;
+	z-index: 3;
+	width: 100%;
+	height: 100rpx;
+	padding: 30rpx 30rpx 30rpx;
+	box-sizing: border-box;
+}
+
+.search-bar {
+	height: 60rpx;
+	background: #F7F7F7;
+	border-radius: 30rpx;
+	padding: 0 26rpx 0 32rpx;
+}
+
+.search-bar .ssico {
+	width: 31rpx;
+	height: 31rpx;
+	margin-right: 7rpx;
+}
+
+.search-bar.ipt {
+	font-size: 28rpx;
+	color: #32363F;
+}
+
+.search-bar .placeholder {
+	color: #999;
+}
+
+/* 分类 */
+.rec-association-2 {
+	padding: 0rpx 30rpx 0;
+	opacity: 1;
+	width: 100%;
+	box-sizing: border-box;
+	height: 80rpx;
+	z-index: 5;
+	background: #fff;
+}
+.rec-association-nav-2{
+	position: relative;
+}
+.rec-association-nav-m-2{
+	position: absolute;
+	right: 0;
+	top: 0;
+	bottom:0;
+	width: 55rpx;
+	background: linear-gradient(90deg, rgba(255,255,255,0) 0%, #FFFFFF 100%);
+	/* background: #000; */
+	opacity: 1;
+}
+.rec-association-scroll-2 {
+	white-space: nowrap;
+	overflow: hidden;
+	height: 80rpx;
+}
+
+.rec-association-scroll-2 ::-webkit-scrollbar {
+	width: 0;
+	height: 0;
+	color: transparent;
+	display: none;
+}
+.rec-association-scroll-item-2{
+	/* max-width: 128rpx; */
+	overflow: hidden;
+	font-size: 28rpx;
+	display: inline-block;
+	margin-right:20rpx;
+	color: #666;
+	padding: 8rpx 30rpx;
+	border-radius: 50rpx 50rpx 50rpx 50rpx;
+	height: 40rpx;
+	line-height:  40rpx;
+	border: 1rpx solid #E8E8E8;
+}
+.rec-association-scroll-item-2-active{
+	color: #333333;
+	position: relative;
+	background: #E8E8E8;
+	border: 1rpx solid #E8E8E8;
+}
+.rec-association-nav-icon-2{
+	width: 38rpx;
+	height: 32rpx;
+	margin-left: 40rpx;
+	margin-top: 4rpx;
+}
+.add{
+	height: 80rpx;
+	line-height: 60rpx;
+	font-size: 28rpx;
+	color: #333333;
+}
+
+/* 数据 */
+.card-item{
+	padding: 30rpx;
+}
+.header{
+	width: 120rpx;
+	height: 120rpx;
+	border-radius: 100%;
+	margin-right: 15rpx;
+}
+.name{
+	line-height: 47rpx;
+	font-size: 32rpx;
+	font-family: Source Han Sans CN-Bold, Source Han Sans CN;
+	font-weight: bold;
+	color: #333333;
+	margin-top: 6rpx;
+}
+.name text{
+	line-height: 29rpx;
+	font-size: 20rpx;
+	font-family: Source Han Sans CN-Regular, Source Han Sans CN;
+	font-weight: 400;
+	color: #999999;
+}
+.company{
+	line-height: 36rpx;
+	font-size: 24rpx;
+	font-family: Source Han Sans CN-Regular, Source Han Sans CN;
+	font-weight: 400;
+	color: #999999;
+}
+.label{
+	padding: 0 10rpx;
+	height: 36rpx;
+	border-radius: 5rpx 5rpx 5rpx 5rpx;
+	opacity: 1;
+	border: 2rpx solid #4C8EF1;
+	font-size: 20rpx;
+	font-family: Source Han Sans CN-Regular, Source Han Sans CN;
+	font-weight: 400;
+	color: #4C8EF1;
+	line-height: 36rpx;
+	text-align: center;
+	display: inline-block;
+	margin-top: 6rpx;
+}
+.card-btn{
+	width: 125rpx;
+	height: 50rpx;
+	border-radius: 50rpx 50rpx 50rpx 50rpx;
+	font-size: 22rpx;
+	font-family: Source Han Sans CN-Regular, Source Han Sans CN;
+	font-weight: 400;
+	line-height: 46rpx;
+	text-align: center;
+	margin-left: 10rpx;
+	box-sizing: border-box;
+}
+.btn1{
+	background: #FFDCDC;
+	color: #DB2A2A;
+}
+.btn2{
+	background: #F0F0F0;
+	color: #333333;
+}
+.btn3{
+	border: 2rpx solid #999999;
+	color: #333333;
+}
+
+/* 更多操作 */
+.more{
+	position: relative;
+	margin-left: 10rpx;
+	padding: 30rpx 0;
+}
+.dian view{
+	width: 8rpx;
+	height: 8rpx;
+	background: #333333;
+	opacity: 1;
+	border-radius: 100%;
+	margin-right: 8rpx;
+}
+.more-content-position{
+	position: absolute;
+	bottom: -190rpx;
+	right: -12rpx;
+	z-index: 110;
+}
+.more-content{
+	width: 230rpx;
+	background: #4C4C4C;
+	box-shadow: 0rpx 6rpx 20rpx 1rpx rgba(168,168,168,0.16);
+	border-radius: 6rpx 6rpx 6rpx 6rpx;
+	opacity: 1;
+	border: 1px solid #F2F2F2;
+	position: relative;
+	padding: 30rpx;
+	box-sizing: border-box;
+}
+.more-content::before{
+	position: absolute;
+	top: -42rpx;
+	right: 10rpx;
+	content: '';
+	width: 0px;
+	height: 0px;
+	border-left: 28rpx solid transparent;
+	border-right: 28rpx solid transparent;
+	border-top: 28rpx solid transparent;
+	border-bottom: 28rpx solid #4C4C4C;
+}
+.more-content-item{
+	height: 42rpx;
+	font-size: 30rpx;
+	font-family: PingFang SC-Regular, PingFang SC;
+	font-weight: 400;
+	color: #FFFFFF;
+	line-height: 42rpx;
+	border-bottom: 1px solid #676363;
+	padding-bottom: 20rpx;
+	margin-bottom: 20rpx;
+}
+.more-content-item:last-child{
+	border-bottom: none;
+	padding-bottom: 0rpx;
+	margin-bottom: 0rpx;
+}
+.ceng{
+	position: fixed;
+	z-index: 99;
+	top: 0;
+	left: 0;
+	right: 0;
+	bottom: 0;
+}
+
+/* 创建名片 */
+.option{
+	position: fixed;
+	bottom: 60rpx;
+	left: 0;
+	right: 0;
+}
+.option-btn{
+	width: 325rpx;
+	height: 80rpx;
+	line-height: 80rpx;
+	background: #DB2A2A;
+	border-radius: 50rpx 50rpx 50rpx 50rpx;
+	opacity: 1;
+	font-size: 28rpx;
+	color: #FFFFFF;
+	justify-content: center;
+	margin-right: 30rpx;
+}
+.option-btn:last-child{
+	margin-right: 0rpx;
+}

+ 164 - 0
card/myNetWork/myNetWork.vue

@@ -0,0 +1,164 @@
+<template>
+	<view>
+		<!-- 切换和搜索 -->
+		<view class="top-bar">
+			<view class="tab-nav ddflex">
+				<view :class="'tab-nav-item '+(tabIndex==1?'tab-nav-item-active':'')" @click="changTab(1)">好友</view>
+				<view :class="'tab-nav-item '+(tabIndex==2?'tab-nav-item-active':'')" @click="changTab(2)">关注</view>
+				<view :class="'tab-nav-item '+(tabIndex==3?'tab-nav-item-active':'')" @click="changTab(3)">粉丝</view>
+			</view>
+			<!-- 搜索 -->
+			<view class="search">
+				<view class="search-bar ddflex">
+					<image src="../../static/images/ssico.png" class="ssico"></image>
+					<input v-model="search" placeholder="搜索" confirm-type="search" @confirm="searchFn()" placeholder-class="placeholder" class="ipt fflex" />
+					<!-- <view class="clear">取消</view> -->
+				</view>
+			</view>
+		</view>
+		<!-- 隐藏 -->
+		<view class="top-bar" style="position: relative;visibility: hidden;">
+			<view class="tab-nav ddflex">
+				<view :class="'tab-nav-item '+(tabIndex==1?'tab-nav-item-active':'')" @click="changTab(1)">人脉圈</view>
+				<view :class="'tab-nav-item '+(tabIndex==2?'tab-nav-item-active':'')" @click="changTab(2)">名片夹</view>
+			</view>
+			<!-- 搜索 -->
+			<view class="search">
+				<view class="search-bar ddflex">
+					<image src="../../static/images/ssico.png" class="ssico"></image>
+					<input v-model="search" placeholder="搜索" confirm-type="search" @confirm="searchFn()" placeholder-class="placeholder" class="ipt fflex" />
+					<!-- <view class="clear">取消</view> -->
+				</view>
+			</view>
+		</view>
+		<!-- 数据 -->
+		<view v-if="pageList.length>0">
+			<view class="ddflex card-item" v-for="item,index in pageList" :key="index" @click="jumpUrl('/card/index/index?cardId='+item.id)">
+				<image class="header" :src="item.avatar"></image>
+				<view class="fflex">
+					<view class="name">{{item.realName}}<text style="margin-left: 15rpx;" v-if="item.job">/ {{item.job}}</text></view>
+					<view class="company tover">{{item.companyName}}</view>
+					<view class="label tover" v-if="item.industryName">{{item.industryName}}</view>
+				</view>
+				<view class="ddflex" v-if="userInfo.id!=item.userId">
+					<view v-if="item.beFollow>0&&item.follow<=0" class="card-btn btn1" @click.stop="userBehavior(item,index)">我的粉丝</view>
+					<view v-else-if="item.beFollow<=0&&item.follow>0" class="card-btn btn2" @click.stop="userBehavior(item,index)">我已关注</view>
+					<view v-else-if="item.beFollow>0&&item.follow>0" class="card-btn btn2" @click.stop="userBehavior(item,index)">互关</view>
+					<view v-else class="card-btn btn3" @click="userBehavior(item,index)">+关注</view>
+				</view>
+			</view>
+		</view>
+		<view class="nodata" v-else>
+			<image :src="picUrlss + 'empty_dd.png'"></image>
+			<text>暂无名片信息~</text>
+		</view>
+	</view>
+</template>
+
+<script>
+const app = getApp();
+const req = require('../../utils/request.js');
+const api = require('../../utils/api.js');
+export default {
+	data() {
+		return {
+			picUrlss: req.public.picUrls,
+			
+			isLoad: true,
+			ishow: false,
+			
+			tabIndex:1,//1好友 2关注 3粉丝
+			
+			
+			form: {
+				page: 1,
+				limit: 10
+			},
+			search: '',
+			pageList:[],
+			
+			userInfo:{}
+		};
+	},
+	onLoad(options) {
+		this.userInfo = req.getStorage('userInfo')
+		this.getPageList();
+	},
+	
+	onShow() {
+	},
+	onReachBottom() {
+		this.form.page++;
+		this.getPageList();
+	},
+	methods: {
+		jumpUrl(url){
+			uni.navigateTo({
+				url:url
+			})
+		},
+		changTab(type){
+			if(type==this.tabIndex) return false
+			this.tabIndex = type
+			this.form.page = 1;
+			this.isLoad = true;
+			this.getPageList()
+		},
+		
+		// 数据
+		getPageList() {
+			if (!this.isLoad) return false;
+			this.isLoad = false;
+			let form = this.form;
+			if(this.search){
+				form.search = this.search;
+			}else{ delete form.search}
+			// 人脉圈
+			if(this.tabIndex==1){
+				form.dataType = 3
+			}else if(this.tabIndex==2){
+				form.dataType = 4
+			}else if(this.tabIndex==3){
+				form.dataType = 5
+			}
+			req.getRequest('/api/v3/visiting/card/folder/list', form, res => {
+				res = res?res.list:null
+				if (res && res.length == 10) this.isLoad = true;
+				if (this.form.page > 1) res = this.pageList.concat(res);
+				if(res && res.length == 0 && this.form.page == 1) this.ishow = true;
+				this.pageList = res;
+			});
+		},
+		
+		searchFn(){
+			this.form.page = 1;
+			this.isLoad = true;
+			this.getPageList()
+		},
+		// 用户行为
+		userBehavior(item,index){
+			var dataP = {};
+			dataP.type = 23 //、产品 2、活动 3、未知 4、内容 5、课程 6、老师 7、素材 8、题目 9、资料领取 10、招聘职位 12、用户须知 13、素材 15、医院科室 16、海报 20、医生 21 新闻 23名片
+			dataP.behavior = 1; //1、关注 2、收藏 3、点赞 4、浏览 5、确认 6、分享
+			dataP.bindId = item.id;
+			req.postRequestLoding('/api/v3/behavior/save', dataP, data => {
+				console.log(this.pageList[index].follow)
+				if(this.pageList[index].follow>0){
+					this.pageList[index].follow = 0
+					req.msg('已取消关注')
+				}
+				else if(this.pageList[index].follow<=0){
+					this.pageList[index].follow = 1
+					req.msg('已关注')
+				}
+				console.log(this.pageList[index].follow)
+				this.pageList = JSON.parse(JSON.stringify(this.pageList))
+			});
+		},
+	}
+}
+</script>
+
+<style>
+	@import './myNetWork.css';
+</style>

+ 302 - 0
card/network/network.css

@@ -0,0 +1,302 @@
+page {
+	background-color: #fff;
+}
+.top-bar{
+	position: fixed;
+	top: 0;
+	left: 0;
+	right: 0;
+	background-color: #fff;
+	z-index: 5;
+}
+.tab-nav {
+	height: 45rpx;
+	line-height: 45rpx;
+	font-size: 32rpx;
+	color: #666666;
+	padding: 30rpx 30rpx 30rpx;
+}
+
+.tab-nav-item {
+	margin-right: 50rpx;
+}
+
+.tab-nav-item-active {
+	font-size: 32rpx;
+	font-weight: bold;
+	color: #DB2A2A;
+	position: relative;
+}
+
+.tab-nav-item-active::after {
+	content: '';
+	position: absolute;
+	bottom: -10rpx;
+	left: 50%;
+	transform: translateX(-50%);
+	width: 50%;
+	height: 6rpx;
+	background-color: #DB2A2A;
+}
+
+/* 搜索 */
+.search {
+	background-color: #fff;
+	z-index: 3;
+	width: 100%;
+	height: 100rpx;
+	padding: 10rpx 30rpx 30rpx;
+	box-sizing: border-box;
+}
+
+.search-bar {
+	height: 60rpx;
+	background: #F7F7F7;
+	border-radius: 30rpx;
+	padding: 0 26rpx 0 32rpx;
+}
+
+.search-bar .ssico {
+	width: 31rpx;
+	height: 31rpx;
+	margin-right: 7rpx;
+}
+
+.search-bar.ipt {
+	font-size: 28rpx;
+	color: #32363F;
+}
+
+.search-bar .placeholder {
+	color: #999;
+}
+
+/* 分类 */
+.rec-association-2 {
+	padding: 0rpx 30rpx 0;
+	opacity: 1;
+	width: 100%;
+	box-sizing: border-box;
+	height: 80rpx;
+	z-index: 5;
+	background: #fff;
+}
+.rec-association-nav-2{
+	position: relative;
+}
+.rec-association-nav-m-2{
+	position: absolute;
+	right: 0;
+	top: 0;
+	bottom:0;
+	width: 55rpx;
+	background: linear-gradient(90deg, rgba(255,255,255,0) 0%, #FFFFFF 100%);
+	/* background: #000; */
+	opacity: 1;
+}
+.rec-association-scroll-2 {
+	white-space: nowrap;
+	overflow: hidden;
+	height: 80rpx;
+}
+
+.rec-association-scroll-2 ::-webkit-scrollbar {
+	width: 0;
+	height: 0;
+	color: transparent;
+	display: none;
+}
+.rec-association-scroll-item-2{
+	/* max-width: 128rpx; */
+	overflow: hidden;
+	font-size: 28rpx;
+	display: inline-block;
+	margin-right:20rpx;
+	color: #666;
+	padding: 8rpx 30rpx;
+	border-radius: 50rpx 50rpx 50rpx 50rpx;
+	height: 40rpx;
+	line-height:  40rpx;
+	border: 1rpx solid #E8E8E8;
+}
+.rec-association-scroll-item-2-active{
+	color: #333333;
+	position: relative;
+	background: #E8E8E8;
+	border: 1rpx solid #E8E8E8;
+}
+.rec-association-nav-icon-2{
+	width: 38rpx;
+	height: 32rpx;
+	margin-left: 40rpx;
+	margin-top: 4rpx;
+}
+.add{
+	height: 80rpx;
+	line-height: 60rpx;
+	font-size: 28rpx;
+	color: #333333;
+}
+
+/* 数据 */
+.card-item{
+	padding: 30rpx;
+}
+.header{
+	width: 120rpx;
+	height: 120rpx;
+	border-radius: 100%;
+	margin-right: 15rpx;
+}
+.name{
+	line-height: 47rpx;
+	font-size: 32rpx;
+	font-family: Source Han Sans CN-Bold, Source Han Sans CN;
+	font-weight: bold;
+	color: #333333;
+	margin-top: 6rpx;
+}
+.name text{
+	line-height: 29rpx;
+	font-size: 20rpx;
+	font-family: Source Han Sans CN-Regular, Source Han Sans CN;
+	font-weight: 400;
+	color: #999999;
+}
+.company{
+	line-height: 36rpx;
+	font-size: 24rpx;
+	font-family: Source Han Sans CN-Regular, Source Han Sans CN;
+	font-weight: 400;
+	color: #999999;
+}
+.label{
+	padding: 0 10rpx;
+	height: 36rpx;
+	border-radius: 5rpx 5rpx 5rpx 5rpx;
+	opacity: 1;
+	border: 2rpx solid #4C8EF1;
+	font-size: 20rpx;
+	font-family: Source Han Sans CN-Regular, Source Han Sans CN;
+	font-weight: 400;
+	color: #4C8EF1;
+	line-height: 36rpx;
+	text-align: center;
+	display: inline-block;
+	margin-top: 6rpx;
+}
+.card-btn{
+	width: 125rpx;
+	height: 50rpx;
+	border-radius: 50rpx 50rpx 50rpx 50rpx;
+	font-size: 22rpx;
+	font-family: Source Han Sans CN-Regular, Source Han Sans CN;
+	font-weight: 400;
+	line-height: 46rpx;
+	text-align: center;
+	margin-left: 10rpx;
+	box-sizing: border-box;
+}
+.btn1{
+	background: #FFDCDC;
+	color: #DB2A2A;
+}
+.btn2{
+	background: #F0F0F0;
+	color: #333333;
+}
+.btn3{
+	border: 2rpx solid #999999;
+	color: #333333;
+}
+
+/* 更多操作 */
+.more{
+	position: relative;
+	margin-left: 10rpx;
+	padding: 30rpx 0;
+}
+.dian view{
+	width: 8rpx;
+	height: 8rpx;
+	background: #333333;
+	opacity: 1;
+	border-radius: 100%;
+	margin-right: 8rpx;
+}
+.more-content-position{
+	position: absolute;
+	bottom: -190rpx;
+	right: -12rpx;
+	z-index: 110;
+}
+.more-content{
+	width: 230rpx;
+	background: #4C4C4C;
+	box-shadow: 0rpx 6rpx 20rpx 1rpx rgba(168,168,168,0.16);
+	border-radius: 6rpx 6rpx 6rpx 6rpx;
+	opacity: 1;
+	border: 1px solid #F2F2F2;
+	position: relative;
+	padding: 30rpx;
+	box-sizing: border-box;
+}
+.more-content::before{
+	position: absolute;
+	top: -42rpx;
+	right: 10rpx;
+	content: '';
+	width: 0px;
+	height: 0px;
+	border-left: 28rpx solid transparent;
+	border-right: 28rpx solid transparent;
+	border-top: 28rpx solid transparent;
+	border-bottom: 28rpx solid #4C4C4C;
+}
+.more-content-item{
+	height: 42rpx;
+	font-size: 30rpx;
+	font-family: PingFang SC-Regular, PingFang SC;
+	font-weight: 400;
+	color: #FFFFFF;
+	line-height: 42rpx;
+	border-bottom: 1px solid #676363;
+	padding-bottom: 20rpx;
+	margin-bottom: 20rpx;
+}
+.more-content-item:last-child{
+	border-bottom: none;
+	padding-bottom: 0rpx;
+	margin-bottom: 0rpx;
+}
+.ceng{
+	position: fixed;
+	z-index: 99;
+	top: 0;
+	left: 0;
+	right: 0;
+	bottom: 0;
+}
+
+/* 创建名片 */
+.option{
+	position: fixed;
+	bottom: 60rpx;
+	left: 0;
+	right: 0;
+}
+.option-btn{
+	width: 325rpx;
+	height: 80rpx;
+	line-height: 80rpx;
+	background: #DB2A2A;
+	border-radius: 50rpx 50rpx 50rpx 50rpx;
+	opacity: 1;
+	font-size: 28rpx;
+	color: #FFFFFF;
+	justify-content: center;
+	margin-right: 30rpx;
+}
+.option-btn:last-child{
+	margin-right: 0rpx;
+}

+ 310 - 0
card/network/network.vue

@@ -0,0 +1,310 @@
+<template>
+	<view>
+		<!-- 切换和搜索 -->
+		<view class="top-bar">
+			<view class="tab-nav ddflex">
+				<view :class="'tab-nav-item '+(tabIndex==1?'tab-nav-item-active':'')" @click="changTab(1)">人脉圈</view>
+				<view :class="'tab-nav-item '+(tabIndex==2?'tab-nav-item-active':'')" @click="changTab(2)">名片夹</view>
+			</view>
+			<!-- 搜索 -->
+			<view class="search">
+				<view class="search-bar ddflex">
+					<image src="../../static/images/ssico.png" class="ssico"></image>
+					<input v-model="search" placeholder="搜索" confirm-type="search" @confirm="searchFn()" placeholder-class="placeholder" class="ipt fflex" />
+					<!-- <view class="clear">取消</view> -->
+				</view>
+			</view>
+			<!-- 分类 -->
+			<view class="rec-association-2 ddflex" v-if="tabIndex==2">
+				<view class="ddflex fflex">
+					<view class="rec-association-nav-2 fflex">
+						<scroll-view scroll-x="true" class="rec-association-scroll-2 ddflex">
+							<view :class="'rec-association-scroll-item-2 tover '+(groupId == null?'rec-association-scroll-item-2-active':'')" @click="getCon(null,-1)">全部</view>
+							<view :class="'rec-association-scroll-item-2 tover '+(groupId == item.id?'rec-association-scroll-item-2-active':'')" @click="getCon(item,index)" v-for="item,index in cardGroup" :key="index">{{item.groupName}}</view>
+						</scroll-view>
+						<view class="rec-association-nav-m-2"></view>
+					</view>
+				</view>
+				<view class="dflex add" @click="jumpUrl('/card/groupManage/groupManage')">
+					<image style="width: 32rpx;height: 32rpx;margin-right: 10rpx;margin-top: 16rpx;" src="../static/images/addFile.png"></image>
+					<text>管理</text>
+				</view>
+			</view>
+		</view>
+		<!-- 隐藏 -->
+		<view class="top-bar" style="position: relative;visibility: hidden;">
+			<view class="tab-nav ddflex">
+				<view :class="'tab-nav-item '+(tabIndex==1?'tab-nav-item-active':'')" @click="changTab(1)">人脉圈</view>
+				<view :class="'tab-nav-item '+(tabIndex==2?'tab-nav-item-active':'')" @click="changTab(2)">名片夹</view>
+			</view>
+			<!-- 搜索 -->
+			<view class="search">
+				<view class="search-bar ddflex">
+					<image src="../../static/images/ssico.png" class="ssico"></image>
+					<input v-model="search" placeholder="搜索" confirm-type="search" @confirm="searchFn()" placeholder-class="placeholder" class="ipt fflex" />
+					<!-- <view class="clear">取消</view> -->
+				</view>
+			</view>
+			<!-- 分类 -->
+			<view class="rec-association-2 ddflex" v-if="tabIndex==2">
+				<view class="ddflex fflex">
+					<view class="rec-association-nav-2 fflex">
+						<scroll-view scroll-x="true" class="rec-association-scroll-2 ddflex">
+							<view :class="'rec-association-scroll-item-2 tover '+(groupId == null?'rec-association-scroll-item-2-active':'')" @click="getCon(null,-1)">全部</view>
+							<view :class="'rec-association-scroll-item-2 tover '+(groupId == item.id?'rec-association-scroll-item-2-active':'')" @click="getCon(item,index)" v-for="item,index in cardGroup" :key="index">{{item.groupName}}</view>
+						</scroll-view>
+						<view class="rec-association-nav-m-2"></view>
+					</view>
+				</view>
+				<view class="dflex add" @click="jumpUrl('/card/groupManage/groupManage')">
+					<image style="width: 32rpx;height: 32rpx;margin-right: 10rpx;margin-top: 16rpx;" src="../static/images/addFile.png"></image>
+					<text>管理</text>
+				</view>
+			</view>
+		</view>
+		<!-- 数据 -->
+		<view v-if="pageList.length>0">
+			<view class="ddflex card-item" v-for="item,index in pageList" :key="index" @click="jumpUrl('/card/index/index?cardId='+item.id)">
+				<image class="header" :src="item.avatar"></image>
+				<view class="fflex">
+					<view class="name">{{item.realName}}<text style="margin-left: 15rpx;" v-if="item.job">/ {{item.job}}</text></view>
+					<view class="company tover">{{item.companyName}}</view>
+					<view class="label tover" v-if="item.industryName">{{item.industryName}}</view>
+				</view>
+				<view class="ddflex" v-if="userInfo.id!=item.userId">
+					<view v-if="item.beFollow>0&&item.follow<=0" class="card-btn btn1" @click.stop="userBehavior(item,index)">我的粉丝</view>
+					<view v-else-if="item.beFollow<=0&&item.follow>0" class="card-btn btn2" @click.stop="userBehavior(item,index)">我已关注</view>
+					<view v-else-if="item.beFollow>0&&item.follow>0" class="card-btn btn2" @click.stop="userBehavior(item,index)">互关</view>
+					<view v-else class="card-btn btn3" @click.stop="userBehavior(item,index)">+关注</view>
+					<view class="more" @click.stop="showOptionFn(index)" v-if="tabIndex==2">
+						<view class="ddflex dian">
+							<view v-for="it in 3"></view>
+						</view>
+						<view class="more-content-position" v-if="index==showOptionIndex">
+							<view class="more-content">
+								<view class="more-content-item ddflex" @click.stop="removeGroup(item)">
+									<image style="width: 38rpx;height: 38rpx;margin-right: 10rpx;" src="../static/images/remove.png"></image>
+									<text>移出名片</text>
+								</view>
+								<view class="more-content-item ddflex" @click.stop="jumpUrl('/card/groupManage/groupManage?cardId='+item.id)">
+									<image style="width: 38rpx;height: 38rpx;margin-right: 10rpx;" src="../static/images/change.png"></image>
+									<text>移动分组</text>
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="nodata" v-else>
+			<image :src="picUrlss + 'empty_dd.png'"></image>
+			<text>暂无名片信息~</text>
+		</view>
+		
+		<!-- 创建名片 -->
+		<view style="height: 150rpx;"></view>
+		<view class="ddflex option" style="justify-content: center;">
+			<block v-if="tabIndex==1">
+				<view class="option-btn ddflex" @click="jumpUrl(userCard?'/card/index/index':'/card/create/create')">
+					<image style="width: 38rpx;height: 36rpx;margin-right: 10rpx;" src="../static/images/edit1.png"></image>
+					<text>{{userCard?'我的名片':'创建名片'}}</text>
+				</view>
+				<view class="option-btn ddflex" @click="jumpUrl('/card/myNetWork/myNetWork')">
+					<image style="width: 44rpx;height: 36rpx;margin-right: 10rpx;" src="../static/images/rm.png"></image>
+					<text>我的人脉</text>
+				</view>
+			</block>
+			<block v-if="tabIndex==2">
+				<view class="option-btn ddflex" @click="jumpUrl(userCard?'/card/index/index':'/card/create/create')">
+					<text>{{userCard?'我的名片':'创建名片'}}</text>
+				</view>
+			</block>
+		</view>
+		
+		<view class="ceng" v-if="showOption" catchtouchmove="true" @click="hideOptionFn()"></view>
+	</view>
+</template>
+
+<script>
+const app = getApp();
+const req = require('../../utils/request.js');
+const api = require('../../utils/api.js');
+export default {
+	data() {
+		return {
+			picUrlss: req.public.picUrls,
+			
+			isLoad: true,
+			ishow: false,
+			
+			tabIndex:1,//1人脉 2名片夹
+			
+			showOption:false,//名片夹是否打开了操作
+			showOptionIndex:null,//打开操作的下标
+			
+			form: {
+				page: 1,
+				limit: 10
+			},
+			search: '',
+			pageList:[],
+			
+			cardGroup:[],//名片夹列表
+			groupId:null,//选中的分组id
+			
+			userCard:null,//用户名片信息
+			
+			userInfo:{}
+		};
+	},
+	onLoad(options) {
+		this.getPageList();
+		this.userInfo = req.getStorage('userInfo')
+	},
+	
+	onShow() {
+		this.getUserCard()
+		this.getCardGroup()
+	},
+	onReachBottom() {
+		this.form.page++;
+		this.getPageList();
+	},
+	methods: {
+		jumpUrl(url){
+			uni.navigateTo({
+				url:url
+			})
+		},
+		changTab(type){
+			if(type==this.tabIndex) return false
+			this.tabIndex = type
+			this.form.page = 1;
+			this.isLoad = true;
+			this.getPageList()
+		},
+		showOptionFn(index){
+			if(this.showOptionIndex == index) return false
+			this.showOptionIndex = index
+			this.showOption=true
+		},
+		hideOptionFn(){
+			this.showOptionIndex = null
+			this.showOption=false
+		},
+		// 数据
+		getPageList() {
+			if (!this.isLoad) return false;
+			this.isLoad = false;
+			let form = this.form;
+			if(this.search){
+				form.search = this.search;
+			}else{ delete form.search}
+			// 人脉圈
+			if(this.tabIndex==1){
+				delete form.dataType
+				delete form.visitingCardGroupId
+			}
+			// 名片夹
+			if(this.tabIndex==2){
+				form.dataType=1
+				if(this.groupId){
+					form.visitingCardGroupId=this.groupId
+				}else{
+					delete form.visitingCardGroupId
+				}
+			}
+			req.getRequest('/api/v3/visiting/card/folder/list', form, res => {
+				res = res?res.list:null
+				if (res && res.length == 10) this.isLoad = true;
+				if (this.form.page > 1) res = this.pageList.concat(res);
+				if(res && res.length == 0 && this.form.page == 1) this.ishow = true;
+				this.pageList = res;
+			});
+		},
+		// 用户名片信息
+		getUserCard(){
+			req.getRequest('/api/v3/visiting/card/userInfo', {}, res => {
+				this.userCard = res
+			});
+		},
+		// 名片夹列表
+		getCardGroup(){
+			req.getRequest('/api/v3/visiting/card/group/list', {}, res => {
+				this.cardGroup = res
+			});
+		},
+		// 查询切换分组
+		getCon(item,index){
+			let id = item?item.id:null
+			if(id==this.groupId) return false
+			this.groupId = id
+			this.form.page = 1;
+			this.isLoad = true;
+			this.getPageList()
+		},
+		// 移动分组
+		changeGroup(cardId,groupId){
+			let form = {
+				visitingCardGroupId:groupId,
+				visitingCardId:cardId,
+				userId:req.getStorage('userInfo').id
+			}
+			req.postRequest('/api/v3/visiting/card/folder/saveOrUpdate',form,res=>{
+				req.msg('已移动分组')
+			})
+			this.hideOptionFn()
+			this.form.page = 1;
+			this.isLoad = true;
+			this.getPageList()
+		},
+		// 移出名片夹
+		removeGroup(item){
+			this.$showModal({
+			    title: '提示',
+			    content: '确定要移出名片吗?'
+			})
+			.then(res => {
+			    req.postRequest('/api/v3/visiting/card/folder/delete',{id:item.id},res=>{
+			    	req.msg('移出成功')
+					this.hideOptionFn()
+					this.form.page = 1;
+					this.isLoad = true;
+					this.getPageList()
+			    })
+			})
+			.catch(err => {
+			});
+		},
+		searchFn(){
+			this.form.page = 1;
+			this.isLoad = true;
+			this.getPageList()
+		},
+		// 用户行为
+		userBehavior(item,index){
+			var dataP = {};
+			dataP.type = 23 //、产品 2、活动 3、未知 4、内容 5、课程 6、老师 7、素材 8、题目 9、资料领取 10、招聘职位 12、用户须知 13、素材 15、医院科室 16、海报 20、医生 21 新闻 23名片
+			dataP.behavior = 1; //1、关注 2、收藏 3、点赞 4、浏览 5、确认 6、分享
+			dataP.bindId = item.id;
+			req.postRequestLoding('/api/v3/behavior/save', dataP, data => {
+				console.log(this.pageList[index].follow)
+				if(this.pageList[index].follow>0){
+					this.pageList[index].follow = 0
+					req.msg('已取消关注')
+				}
+				else if(this.pageList[index].follow<=0){
+					this.pageList[index].follow = 1
+					req.msg('已关注')
+				}
+				console.log(this.pageList[index].follow)
+				this.pageList = JSON.parse(JSON.stringify(this.pageList))
+			});
+		},
+	}
+}
+</script>
+
+<style>
+	@import './network.css';
+</style>

+ 8 - 0
card/not/not.css

@@ -0,0 +1,8 @@
+/* not.css */
+.bg{width: 100%;position: absolute;top: 0;left: 0;z-index: 1;}
+.con{position: relative;z-index: 2;}
+.title{text-align: center;font-size: 70rpx;color: #108FFF;font-weight: bold;margin: 110rpx 0 0;}
+.list{margin: 125rpx 0 0 135rpx;}
+.list .li{font-size: 30rpx;color: #000;margin-bottom: 50rpx;}
+.list .li image{width: 66rpx;height: 66rpx;margin-right: 20rpx;}
+.btn{width: 560rpx;height: 94rpx;background: #108FFF;border-radius: 47rpx;font-size: 36rpx;color: #fff;text-align: center;line-height: 94rpx;margin: 220rpx auto 0;}

+ 69 - 0
card/not/not.vue

@@ -0,0 +1,69 @@
+<template>
+	<view>
+		<image src="../static/images/bg.png" mode="widthFix" class="bg"></image>
+		<view class="con">
+			<view class="title">AI智能名片</view>
+			<view class="list">
+				<view class="li dflex">
+					<image src="../static/images/card_ico1.png"></image>
+					低成本拓客,线索一键入库
+				</view>
+				<view class="li dflex">
+					<image src="../static/images/card_ico2.png"></image>
+					定制企业/个人专属名片
+				</view>
+				<view class="li dflex">
+					<image src="../static/images/card_ico3.png"></image>
+					无需加好友,随时随地畅聊
+				</view>
+				<view class="li dflex">
+					<image src="../static/images/card_ico4.png"></image>
+					客户轨迹追踪推送,快速成交
+				</view>
+			</view>
+			<view class="btn" @click="tocreate()">创建一张电子名片</view>
+		</view>
+	</view>
+</template>
+
+<script>
+const req = require('../../utils/request.js');
+const api = require('../../utils/api.js');
+const util = require('../../utils/util.js');
+var app = getApp();
+
+export default {
+	components: {},
+	data() {
+		return {
+			systems: {},
+			swiperCurrent: 0,
+			bannerList: ['../../static/images/n_ban.png', '../../static/images/n_ban.png'],
+			identy: 1,
+			isShowIdenty: false,
+			userInfo: {},
+			typeRole: '',
+			identityRole: 2 //默认销售
+		};
+	},
+
+	onLoad() {},
+	onShow() {},
+
+	methods: {
+		jumpUrl(url) {
+			uni.redirectTo({
+				url: url
+			});
+		},
+
+		tocreate() {
+			this.jumpUrl('/card/create/create');
+		}
+	}
+};
+</script>
+
+<style>
+@import './not.css';
+</style>

+ 150 - 0
card/poster/poster.css

@@ -0,0 +1,150 @@
+/* follow.css */
+page{
+	
+}
+.bg{
+	filter: blur(50rpx);
+	position: absolute;
+	top:0;
+	left:0;
+	right: 0;
+	bottom: 0;
+	height: 100%;
+	z-index: -1;
+	background: rgba(255,255,255,0.49);
+}
+.info {
+	width: 590rpx;
+	height: 736rpx;
+	background: #FFFFFF;
+	border-radius: 16rpx;
+	margin: 215rpx auto 0;
+	position: relative;
+	padding: 110rpx 0 0;
+	box-sizing: border-box;
+	overflow: hidden;
+}
+
+.logo {
+	width: 130rpx;
+	height: 130rpx;
+	border: 6rpx solid rgba(255, 255, 255, .8);
+	border-radius: 50%;
+	position: absolute;
+	left: 50%;
+	transform: translateX(-50%);
+	top: -70rpx;
+}
+
+.logo image {
+	width: 100%;
+	height: 100%;
+	border-radius: 50%;
+}
+
+.brief {
+	font-size: 38rpx;
+	color: #fff;
+	display: inline-block;
+	margin: 0 60rpx;
+	position: relative;
+	line-height: 60rpx;
+}
+
+.brief view {
+	display: inline-block;
+}
+
+.brief image {
+	width: 24rpx;
+	height: 21rpx;
+	display: inline-block;
+	position: relative;
+}
+
+.yin-l {
+	top: -20rpx;
+	margin-right: 25rpx;
+}
+
+.yin-r {
+	bottom: 20rpx;
+	margin-left: 25rpx;
+}
+
+.code {
+	width: 304rpx;
+	height: 304rpx;
+	border-radius: 16rpx;
+	background: #fff;
+	margin: 0rpx auto 0;
+}
+
+.code image {
+	width: 100%;
+	height: 100%;
+}
+
+.infos {
+	position: absolute;
+	bottom: 0;
+	left:0;
+	right:0;
+	width: 590rpx;
+	height: 250rpx;
+	background: linear-gradient(180deg, #A4C8FF 0%, #498FF8 100%);
+	padding: 60rpx;
+	box-sizing: border-box;
+}
+
+.name {
+	font-size: 38rpx;
+	font-weight: 600;
+	height: 53rpx;
+	line-height: 53rpx;
+	color: #fff;
+}
+
+.company {
+	font-size: 28rpx;
+	font-weight: 400;
+	height: 40rpx;
+	line-height: 40rpx;
+	color: #fff;
+	margin-top: 4rpx;
+}
+.industry{
+	height: 36rpx;
+	line-height: 36rpx;
+	border-radius: 5rpx 5rpx 5rpx 5rpx;
+	opacity: 1;
+	border: 1px solid #FFFFFF;
+	margin-top: 8rpx;
+	color: #fff;
+	font-size: 20rpx;
+	display: inline-block;
+	padding: 0 12rpx;
+}
+
+.opt {
+	justify-content: space-around;
+	width: 500rpx;
+	margin: 60rpx auto 0;
+}
+
+.opt .li {
+	font-size: 26rpx;
+	color: #333;
+	padding: 20rpx 0 !important;
+}
+
+.opt .li image {
+	width: 80rpx;
+	height: 80rpx;
+	margin: 0 auto 15rpx;
+}
+
+canvas {
+	position: fixed;
+	left: 9000px;
+}

+ 358 - 0
card/poster/poster.vue

@@ -0,0 +1,358 @@
+<template>
+	<view class="content">
+		<view class="bg" >
+			<image  :src="cardInfo.avatar" mode="aspectFit"></images>
+		</view>
+		<view>
+			<view class="info">
+				<!-- <view class="logo"><image :src="cardInfo.avatar ? cardInfo.avatar : '../../static/images/qy_logo.jpg'" mode="aspectFit"></image></view> -->
+				<!-- <view class="brief" v-if="cardInfo.message">
+					<image src="../static/images/yin_l.png" class="yin-l"></image>
+					{{ cardInfo.message }}
+					<image src="../static/images/yin_r.png" class="yin-r"></image>
+				</view> -->
+				<!-- codUrl -->
+				<view class="code"><image :src="codUrl"></image></view>
+				<view class="infos">
+					<view class="name">{{ cardInfo.realName }}</view>
+					<view class="company">{{ cardInfo.companyName }}</view>
+					<view class="industry">{{ cardInfo.industryName }}</view>
+				</view>
+			</view>
+			<view class="opt dflex">
+				<!-- @click="downloadImg(codUrl)" -->
+				<!-- #ifdef MP-WEIXIN -->
+				<button class="li" hover-class="none" open-type="share">
+					<image src="../static/images/hb_ico1.png"></image>
+					<view>分享到微信</view>
+				</button>
+				<!-- #endif -->
+				<!-- #ifdef APP-PLUS -->
+				<view class="li" @click="appToShare" >
+					<image src="../static/images/hb_ico1.png"></image>
+					<view>分享到微信</view>
+				</view>
+				<!-- #endif -->
+				
+				<view class="li" @click="generatePoster()">
+					<image src="../static/images/hb_ico2.png"></image>
+					<view>保存图片</view>
+				</view>
+			</view>
+			<canvas class="canvas" style="width:590px;height:736px;" canvas-id="share"></canvas>
+		</view>
+	</view>
+</template>
+
+<script>
+const app = getApp();
+const req = require('../../utils/request.js');
+const api = require('../../utils/api.js');
+const util = require('../../utils/util.js');
+export default {
+	data() {
+		return {
+			id: '',
+			cardInfo: '',
+			codUrl: 'https://img.zhiqiyun.com/zqy3t9kp2zc5i/2023/03/20/be0cfb643cd38b97d5a7b14eecaaa8a1.png',
+			isShowLoading: false
+		};
+	},
+
+	onLoad(opt) {
+		this.id = opt.id;
+		this.getCardInfo();
+	},
+	onShareAppMessage(res) {
+		if (res.from == 'button') {
+			let userInfo = req.getStorage('userInfo');
+			this.userBehavior(6)
+			return {
+				title: this.cardInfo.realName,
+				path: '/card/index/index?cardId=' + this.cardInfo.id + '&userId=' + userInfo.id,
+				imageUrl: this.cardInfo.avatar + '?x-oss-process=style/w375', // 分享图
+			};
+		}
+	},
+	methods: {
+		appToShare() {
+			let userInfo = req.getStorage('userInfo');
+			uni.share({
+				provider: 'weixin',
+				scene: 'WXSceneSession',
+				type: 5,
+				imageUrl: this.cardInfo.avatar + '?x-oss-process=style/w375',
+				title: this.cardInfo.realName,
+				summary: this.cardInfo.realName,
+				miniProgram: {
+					id: req.public.miniProgramGh_id,
+					path: '/card/index/index?cardId=' + this.cardInfo.id + '&userId=' + userInfo.id,
+					type: req.env[req.env.NODE_ENV].typeMiniProgram,
+					webUrl: req.public.homeWebUrl
+				},
+				success: ret => {
+					this.userBehavior(6)
+				}
+			});
+		},
+		getCardInfo() {
+			let dataP = {}
+			let url = ''
+			if (this.id) {
+				url = '/api/v3/visiting/card/info';
+				dataP.id = this.id;
+			} else {
+				url = '/api/v3/visiting/card/userInfo';
+				dataP = {};
+			}
+			req.getRequest(url, dataP, data => {
+				this.cardInfo = data;
+				this.getCodeUrl()
+			});
+		},
+		
+		// 用户行为
+		userBehavior(type){
+			var dataP = {};
+			dataP.type = 23 //、产品 2、活动 3、未知 4、内容 5、课程 6、老师 7、素材 8、题目 9、资料领取 10、招聘职位 12、用户须知 13、素材 15、医院科室 16、海报 20、医生 21 新闻 23名片
+			dataP.behavior = type; //1、关注 2、收藏 3、点赞 4、浏览 5、确认 6、分享
+			dataP.bindId = this.cardInfo.id;
+			req.postRequestLoding('/api/v3/behavior/save', dataP, data => {
+			});
+		},
+		
+		getCodeUrl() {
+				let that = this; //获取小程序码
+				const params = {
+					page: 'card/index/index',
+					scene: this.cardInfo.id
+				};
+				return new Promise((resolve, reject) => {
+					req.getRequest('/api/program/codev', params, url => {
+						// console.log(url);
+						this.code = url
+						resolve();
+					});
+				});
+			},
+
+		generatePoster() {
+			let that = this;
+			if (!that.isShowLoading) {
+				uni.showLoading({
+					title: '生成中',
+					mask: true
+				});
+				that.isShowLoading = true;
+			}
+			this.generate(imgUrl => {
+				console.log(imgUrl)
+				if (that.isShowLoading) {
+					uni.hideLoading();
+					that.isShowLoading = false;
+					that.saveImage(imgUrl);
+				}
+			});
+		},
+
+		generate(success) {
+			let that = this;
+			let logoPromise = this.getImageInfo(this.cardInfo.avatar);
+			let codePromise = this.getImageInfo(this.codUrl);
+			Promise.all([logoPromise, codePromise]).then(([logo, code]) => {
+				const ctx = uni.createCanvasContext('share', this); // 绘制背景,填充满整个canvas画布
+				let width = 590;
+				let height = 736;
+				ctx.setFillStyle('#FFF');
+				ctx.fillRect(0, 0, width, height);
+				this.roundRect(ctx,0,0,width, height,16)
+				
+				// 渐变色
+				var grd=ctx.createLinearGradient(0,height-250,0,736);
+				grd.addColorStop(0,'#A4C8FF');
+				grd.addColorStop(1,'#498FF8');
+				ctx.setFillStyle(grd)
+				ctx.fillRect(0,height-250,590,250);
+				ctx.save();
+
+				// 小程序码
+				ctx.drawImage(code.path, (width - 304) / 2, 110, 304, 304);
+				ctx.save();
+
+
+				// 姓名
+				ctx.fillStyle = '#fff';
+				ctx.font = '38px PingFang SC';
+				ctx.fillText(that.cardInfo.realName, 60 , height-250+100);
+				ctx.save();
+
+				ctx.fillStyle = '#fff';
+				ctx.font = '28px PingFang SC';
+				ctx.fillText(that.cardInfo.companyName, 60, height-250+100+50);
+				ctx.save();
+				
+				// 边框文本
+				ctx.setFontSize(20);
+				ctx.setFillStyle('#ffffff');
+				ctx.setTextAlign('left');
+				var discountText = that.cardInfo.industryName
+				var bdColor = '#fff';
+				var bdBackground = 'transparent';
+				var bdRadius = 5;
+				var textPadding = 12;
+				var boxHeight = 38;
+				var boxWidth = ctx.measureText(discountText).width + textPadding * 2;
+				ctx.fillText(discountText, 60+textPadding, height-250+90+80+25);
+				that.borderRect(ctx, 60, height-250+90+80, boxWidth, boxHeight, bdRadius, bdBackground, bdColor)
+
+				// 完成作画
+				ctx.draw(false, function() {
+					uni.canvasToTempFilePath(
+						{
+							canvasId: 'share',
+							success: function(res) {
+								success.call(this, res.tempFilePath);
+							},
+							fail: function(res) {}
+						},
+						that
+					);
+				});
+			});
+		},
+
+		getImageInfo(url) {
+			if (url) {
+				return new Promise((resolve, reject) => {
+					if (!url) {
+						resolve();
+						return '';
+					}
+					uni.getImageInfo({
+						src: url,
+						success: resolve,
+						fail: reject
+					});
+				});
+			} else {
+				return '';
+			}
+		},
+		/**
+		 *
+		 * @param {CanvasContext} ctx canvas上下文
+		 * @param {number} x 圆角矩形选区的左上角 x坐标
+		 * @param {number} y 圆角矩形选区的左上角 y坐标
+		 * @param {number} w 圆角矩形选区的宽度
+		 * @param {number} h 圆角矩形选区的高度
+		 * @param {number} r 圆角的半径
+		 */
+		roundRect: function(ctx, x, y, w, h, r) {
+			// 开始绘制
+			ctx.beginPath(); // 因为边缘描边存在锯齿,最好指定使用 transparent 填充
+			// 这里是使用 fill 还是 stroke都可以,二选一即可
+			ctx.setFillStyle('#fff'); // ctx.setStrokeStyle('transparent')
+			// 左上角
+			ctx.arc(x + r, y + r, r, Math.PI, Math.PI * 1.5); // border-top
+			ctx.moveTo(x + r, y);
+			ctx.lineTo(x + w - r, y);
+			ctx.lineTo(x + w, y + r); // 右上角
+			ctx.arc(x + w - r, y + r, r, Math.PI * 1.5, Math.PI * 2); // border-right
+			ctx.lineTo(x + w, y + h - r);
+			ctx.lineTo(x + w - r, y + h); // 右下角
+			ctx.arc(x + w - r, y + h - r, r, 0, Math.PI * 0.5); // border-bottom
+			ctx.lineTo(x + r, y + h);
+			ctx.lineTo(x, y + h - r); // 左下角
+			ctx.arc(x + r, y + h - r, r, Math.PI * 0.5, Math.PI); // border-left
+			ctx.lineTo(x, y + r);
+			ctx.lineTo(x + r, y); // 这里是使用 fill 还是 stroke都可以,二选一即可,但是需要与上面对应
+			ctx.fill(); // ctx.stroke()
+			ctx.closePath(); // 剪切
+			ctx.clip();
+		},
+		
+		borderRect(ctx, x, y, w, h, r, fillColor, strokeColor) {
+		    // 画圆角 ctx、x起点、y起点、w宽度、y高度、r圆角半径、fillColor填充颜色、strokeColor边框颜色
+		    // 开始绘制
+		    ctx.beginPath()
+		 
+		    // 绘制左上角圆弧 Math.PI = 180度
+		    // 圆心x起点、圆心y起点、半径、以3点钟方向顺时针旋转后确认的起始弧度、以3点钟方向顺时针旋转后确认的终止弧度
+		    ctx.arc(x + r, y + r, r, Math.PI, Math.PI * 1.5)
+		 
+		    // 绘制border-top
+		    // 移动起点位置 x终点、y终点
+		    ctx.moveTo(x + r, y)
+		    // 画一条线 x终点、y终点
+		    ctx.lineTo(x + w - r, y)
+		    // ctx.lineTo(x + w, y + r)
+		 
+		    // 绘制右上角圆弧
+		    ctx.arc(x + w - r, y + r, r, Math.PI * 1.5, Math.PI * 2)
+		 
+		    // 绘制border-right
+		    ctx.lineTo(x + w, y + h - r)
+		    // ctx.lineTo(x + w - r, y + h)
+		 
+		    // 绘制右下角圆弧
+		    ctx.arc(x + w - r, y + h - r, r, 0, Math.PI * 0.5)
+		 
+		    // 绘制border-bottom
+		    ctx.lineTo(x + r, y + h)
+		    // ctx.lineTo(x, y + h - r)
+		 
+		    // 绘制左下角圆弧
+		    ctx.arc(x + r, y + h - r, r, Math.PI * 0.5, Math.PI)
+		 
+		    // 绘制border-left
+		    ctx.lineTo(x, y + r)
+		    // ctx.lineTo(x + r, y)
+		 
+		    if (fillColor) {
+		      // 因为边缘描边存在锯齿,最好指定使用 transparent 填充
+		      ctx.setFillStyle(fillColor)
+		      // 对绘画区域填充
+		      ctx.fill()
+		    }
+		 
+		    if (strokeColor) {
+		      // 因为边缘描边存在锯齿,最好指定使用 transparent 填充
+		      ctx.setStrokeStyle(strokeColor)
+		      // 画出当前路径的边框
+		      ctx.stroke()
+		    }
+		    // 关闭一个路径
+		    // ctx.closePath()
+		 
+		    // 剪切,剪切之后的绘画绘制剪切区域内进行,需要save与restore
+		    ctx.clip()
+		  },
+
+		/**
+		 * 下载图片
+		 * @param {Object} url
+		 */
+		downloadImg(url) {
+			let that = this;
+			console.log('下载图片>>>>>>',url);
+			uni.downloadFile({
+				url: url, //仅为示例,并非真实的资源
+				success: res => {
+					that.saveImage(res.tempFilePath);
+				}
+			});
+		},
+		/**
+		 * 保存图片
+		 * @param {Object} tempFilePath
+		 */
+		saveImage(tempFilePath) {
+			util.saveImage(tempFilePath);
+		}
+	}
+};
+</script>
+
+<style>
+@import './poster.css';
+</style>

BIN
card/static/images/add.png


BIN
card/static/images/addFile.png


BIN
card/static/images/add_ico1.png


BIN
card/static/images/bg.png


BIN
card/static/images/bj_ico.png


BIN
card/static/images/car_p_bg.png


BIN
card/static/images/card_ico1.png


BIN
card/static/images/card_ico2.png


BIN
card/static/images/card_ico3.png


BIN
card/static/images/card_ico4.png


BIN
card/static/images/card_logo_bg.png


BIN
card/static/images/change.png


BIN
card/static/images/code.png


BIN
card/static/images/down.png


BIN
card/static/images/dz.png


BIN
card/static/images/edit.png


BIN
card/static/images/edit1.png


BIN
card/static/images/empty.png


BIN
card/static/images/fx_ico.png


BIN
card/static/images/hb_ico1.png


BIN
card/static/images/hb_ico2.png


BIN
card/static/images/jj_ico.png


BIN
card/static/images/message.png


BIN
card/static/images/phone.png


BIN
card/static/images/remove.png


BIN
card/static/images/rm.png


BIN
card/static/images/rqico.png


BIN
card/static/images/sc_ico.png


BIN
card/static/images/share.png


BIN
card/static/images/sj_ico.png


BIN
card/static/images/sp_ico.png


BIN
card/static/images/tp_ico.png


BIN
card/static/images/wechat.png


BIN
card/static/images/wxth.png


BIN
card/static/images/yin_l.png


BIN
card/static/images/yin_r.png


BIN
card/static/images/zan_ico.png


+ 7 - 0
components/nav-bar/index.vue

@@ -127,6 +127,9 @@
 				if (e == "goUser") {
 					this.goUser()
 				}
+				if (e == "goMatch") {
+					this.goMatch()
+				}
 			},
 			goHome: function() {
 				if (this.channel === "home") return;
@@ -155,6 +158,10 @@
 			goShop: function() {
 				if (this.channel === "shop") return;
 				app.globalData.switchTab('pages/timelyDelivery/index');
+			},
+			goMatch: function() {
+				if (this.channel === "match") return;
+				app.globalData.switchTab('pages/matchList/index');
 			}
 		}
 	};

+ 140 - 0
components/wangding-pickerAddress/wangding-pickerAddress.vue

@@ -0,0 +1,140 @@
+<template>
+	<view>
+		<picker @change="bindPickerChange" @columnchange="columnchange" :range="array" range-key="name" :value="value" mode="multiSelector"><slot></slot></picker>
+	</view>
+</template>
+
+<script>
+const req = require('../../utils/request.js');
+// import AllAddress from './data.js';
+let selectVal = ['', '', ''];
+
+export default {
+	data() {
+		return {
+			value: [0, 0, 0],
+			ids: [],
+			array: [],
+			index: 0,
+			allAddressData: []
+		};
+	},
+	created() {
+		this.getReqAreaList();
+	},
+	methods: {
+		getReqAreaList() {
+			let areaList = req.getStorage('areaList');
+			if (areaList && areaList.length > 0) {
+				this.allAddressData = areaList;
+				this.initSelect();
+			} else {
+				req.getRequest(
+					'/area/list',
+					{},
+					data => {
+						req.setStorage('areaList', data);
+						this.allAddressData = data;
+						this.initSelect();
+					},
+					true
+				);
+			}
+		},
+		// 初始化地址选项
+		initSelect() {
+			this.updateSourceDate() // 更新源数据
+				.updateAddressDate() // 更新结果数据
+				.updateIdsDate()
+				.$forceUpdate(); // 触发双向绑定
+		},
+		// 地址控件改变控件
+		columnchange(d) {
+			this.updateSelectIndex(d.detail.column, d.detail.value) // 更新选择索引
+				.updateSourceDate() // 更新源数据
+				.updateAddressDate()
+				.updateIdsDate() // 更新结果数据
+				.$forceUpdate(); // 触发双向绑定
+		},
+
+		/**
+		 * 更新源数据
+		 * */
+		updateSourceDate() {
+			this.array = [];
+			this.array[0] = this.allAddressData.map(obj => {
+				return {
+					name: obj.label,
+					id: obj.value
+				};
+			});
+			this.array[1] = this.allAddressData[this.value[0]].nodes.map(obj => {
+				return {
+					name: obj.label,
+					id: obj.value
+				};
+			});
+			this.array[2] = this.allAddressData[this.value[0]].nodes[this.value[1]].nodes.map(obj => {
+				return {
+					name: obj.label,
+					id: obj.value
+				};
+			});
+			return this;
+		},
+
+		/**
+		 * 更新索引
+		 * */
+		updateSelectIndex(column, value) {
+			let arr = JSON.parse(JSON.stringify(this.value));
+			arr[column] = value;
+			if (column === 0) {
+				arr[1] = 0;
+				arr[2] = 0;
+			}
+			if (column === 1) {
+				arr[2] = 0;
+			}
+			this.value = arr;
+			return this;
+		},
+
+		/**
+		 * 更新结果数据
+		 * */
+		updateAddressDate() {
+			selectVal = [];
+			selectVal[0] = this.array[0][this.value[0]].name + ' ';
+			selectVal[1] = this.array[1][this.value[1]].name + ' ';
+			if (this.array[2].length > 0) {
+				selectVal[2] = this.array[2][this.value[2]].name + ' ';
+			}
+			return this;
+		},
+		updateIdsDate() {
+			this.ids = [];
+			this.ids[0] = this.array[0][this.value[0]].id;
+			this.ids[1] = this.array[1][this.value[1]].id;
+			if (this.array[2].length > 0) {
+				this.ids[2] = this.array[2][this.value[2]].id;
+			}
+			return this;
+		},
+
+		/**
+		 * 点击确定
+		 * */
+		bindPickerChange(e) {
+			this.$emit('change', {
+				index: this.value,
+				data: selectVal,
+				ids: this.ids
+			});
+			return this;
+		}
+	}
+};
+</script>
+
+<style></style>

+ 178 - 0
components/wangding-pickerAddress/wangding-pickerAddressSingle.vue

@@ -0,0 +1,178 @@
+<template>
+	<view>
+		<picker @change="bindPickerChange" @columnchange="columnchange" :range="array" range-key="name" :value="value" mode="multiSelector"><slot></slot></picker>
+	</view>
+</template>
+
+<script>
+const req = require('../../utils/request.js');
+// import AllAddress from './data.js';
+let selectVal = ['', '', ''];
+
+export default {
+	data() {
+		return {
+			value: [0, 0, 0],
+			ids: [],
+			array: [],
+			index: 0,
+			allAddressData: []
+		};
+	},
+	created() {
+		this.getReqAreaList();
+	},
+	methods: {
+		getReqAreaList() {
+			let areaList = req.getStorage('areaList');
+			if (areaList && areaList.length > 0) {
+				this.allAddressData = areaList;
+				let obj = {
+					label: '请选择',
+					value: '0',
+					nodes: []
+				}
+				this.allAddressData.map(item=>{
+					item.nodes.unshift(obj);
+					if(item.nodes && item.nodes.length > 0){
+						item.nodes.map(it=>{
+							if(it.nodes && it.nodes.length > 0){
+								it.nodes.unshift(obj);
+							}
+						})
+					}
+					return item;
+				})
+				this.allAddressData.unshift(obj);
+				this.initSelect();
+			} else {
+				req.getRequest(
+					'/area/list',
+					{},
+					data => {
+						req.setStorage('areaList', data);
+						this.allAddressData = data;
+						let obj = {
+							label: '请选择',
+							value: '0',
+							nodes: []
+						}
+						this.allAddressData.map(item=>{
+							item.nodes.unshift(obj);
+							if(item.nodes && item.nodes.length > 0){
+								item.nodes.map(it=>{
+									if(it.nodes && it.nodes.length > 0){
+										it.nodes.unshift(obj);
+									}
+								})
+							}
+							return item;
+						})
+						this.allAddressData.unshift(obj);
+						this.initSelect();
+					},
+					true
+				);
+			}
+		},
+		// 初始化地址选项
+		initSelect() {
+			this.updateSourceDate() // 更新源数据
+				.updateAddressDate() // 更新结果数据
+				.updateIdsDate()
+				.$forceUpdate(); // 触发双向绑定
+		},
+		// 地址控件改变控件
+		columnchange(d) {
+			this.updateSelectIndex(d.detail.column, d.detail.value) // 更新选择索引
+				.updateSourceDate() // 更新源数据
+				.updateAddressDate()
+				.updateIdsDate() // 更新结果数据
+				.$forceUpdate(); // 触发双向绑定
+		},
+
+		/**
+		 * 更新源数据
+		 * */
+		updateSourceDate() {
+			this.array = [];
+			let obj = {
+				name: '请选择',
+				id: '0',
+			}
+			this.array[0] = this.allAddressData.map(obj => {
+				return {
+					name: obj.label,
+					id: obj.value
+				};
+			});
+			this.array[1] = this.allAddressData[this.value[0]].nodes.map(obj => {
+				return {
+					name: obj.label,
+					id: obj.value
+				};
+			});
+			this.array[2] = this.allAddressData[this.value[0]].nodes[this.value[1]].nodes.map(obj => {
+				return {
+					name: obj.label,
+					id: obj.value
+				};
+			});
+			return this;
+		},
+
+		/**
+		 * 更新索引
+		 * */
+		updateSelectIndex(column, value) {
+			let arr = JSON.parse(JSON.stringify(this.value));
+			arr[column] = value;
+			if (column === 0) {
+				arr[1] = 0;
+				arr[2] = 0;
+			}
+			if (column === 1) {
+				arr[2] = 0;
+			}
+			this.value = arr;
+			return this;
+		},
+
+		/**
+		 * 更新结果数据
+		 * */
+		updateAddressDate() {
+			selectVal = [];
+			selectVal[0] = this.array[0][this.value[0]].name;
+			selectVal[1] = this.array[1][this.value[1]].name;
+			if (this.array[2].length > 0) {
+				selectVal[2] = this.array[2][this.value[2]].name;
+			}
+			return this;
+		},
+		updateIdsDate() {
+			this.ids = [];
+			this.ids[0] = this.array[0][this.value[0]].id;
+			this.ids[1] = this.array[1][this.value[1]].id;
+			if (this.array[2].length > 0) {
+				this.ids[2] = this.array[2][this.value[2]].id;
+			}
+			return this;
+		},
+
+		/**
+		 * 点击确定
+		 * */
+		bindPickerChange(e) {
+			this.$emit('change', {
+				index: this.value,
+				data: selectVal,
+				ids: this.ids
+			});
+			return this;
+		}
+	}
+};
+</script>
+
+<style></style>

+ 1 - 1
manifest.json

@@ -112,7 +112,7 @@
     },
     "quickapp" : {},
     "mp-weixin" : {
-        "appid" : "wxe7bec198ecfe1162",
+        "appid" : "wx8dbaef6b14f8c582",
         "setting" : {
             "urlCheck" : false,
             "minified" : true,

+ 63 - 7
match/activityDetail/activityDetail.css

@@ -1,22 +1,78 @@
 /* activityDetail.css */
 page{background: #fff;}
-.top{padding: 60rpx 32rpx 20rpx;border-bottom: 15rpx solid #f6f6f6;}
-.act-img{width: 100%;height: 422rpx;border-radius: 15rpx;}
-.title{font-size: 40rpx;color: #000;line-height: 50rpx;margin: 45rpx 0 10rpx;}
-.datas{font-size: 24rpx;color: #999;}
-.money{font-size: 40rpx;color: #F38423;margin: 40rpx 0;}
+.top{padding: 0rpx 0rpx 40rpx;border-bottom: 15rpx solid #f6f6f6;}
+.act-img{width: 100%;height: 461rpx;}
+.title{font-size: 40rpx;color: #000;line-height: 50rpx;margin: 45rpx 32rpx 10rpx;font-weight: bold;}
+.datas{font-size: 24rpx;color: #999;margin: 0 32rpx;}
+.money-box{
+	margin: 40rpx 32rpx;
+	font-size: 32rpx;
+	font-weight: 500;
+	color: #666666;
+	justify-content: space-between;
+	background: linear-gradient(90deg, #fff 0%, #FFE7E7 100%);
+	padding: 0 30rpx 0 0;
+	border-radius: 10rpx;
+}
+.money-box image{
+	width: 40rpx;
+	height: 41rpx;
+	margin-right: 22rpx;
+}
+.money{font-size: 40rpx;color: #DB2A2A;margin: 30rpx 0;}
 .money text{font-size: 20rpx;}
+
+.baoming-box{
+	margin: 0 32rpx;
+	font-size: 24rpx;
+	font-weight: 500;
+	color: #999999;
+}
+.baoming-box image{
+	width: 40rpx;
+	height: 44rpx;
+	margin-right: 22rpx;
+}
+.baoming-time{
+	margin-left: 62rpx;
+	font-weight: 500;
+	color: #333333;
+}
+
+.hddz-box{
+	margin: 0 32rpx;
+	font-size: 26rpx;
+	font-weight: 500;
+	color: #999999;
+}
+.hddz-box image{
+	width: 40rpx;
+	height: 44rpx;
+	margin-right: 22rpx;
+}
+.hddz-area{
+	margin-left: 62rpx;
+	font-weight: 500;
+	color: #333;
+}
+.hddz-area .rico{
+	width: 13rpx;
+	height: 24rpx;
+	margin-left: 20rpx;
+	margin-right: 0;
+}
+
 .date{border-bottom: 15rpx solid #f6f6f6;}
 .datass{font-size: 26rpx;color: #666;border-bottom: 1rpx solid #E9E9E9;padding: 20rpx 32rpx;}
 .date .datass:last-child{border-bottom: none;}
 .date .datass .ddflex{margin-bottom: 10rpx;}
 .dimg{width: 29rpx;height: 35rpx;margin-right: 15rpx;}
 .rico{width: 14rpx;height: 23rpx;margin-left: 20rpx;}
-.tit{font-size: 30rpx;color: #333;font-weight: bold;padding: 30rpx;justify-content: space-between;border-bottom: 1rpx solid #DEDEDE;}
+.tit{font-size: 32rpx;color: #333;font-weight: bold;padding: 30rpx;justify-content: space-between;border-bottom: 1rpx solid #DEDEDE;}
 .content{font-size: 28rpx;color: #999;line-height: 44rpx;padding: 50rpx 0 120rpx;}
 
 .bot{align-items: center;padding: 10rpx 30rpx 10rpx 0;border-top: 1rpx solid #e5e5e5;justify-content: space-between;}
-.btnfot{flex: 0.35;display: flex;justify-content: space-around;}
+.btnfot{display: flex;justify-content: space-around;}
 .btns{flex: .65;justify-content: flex-end;}
 .botbtn{font-size: 22rpx;color: #6A6A6A;width: 95rpx !important;text-align: center;position: relative;margin: 0;background: none;border-radius: 0;padding: 0;line-height: initial;}
 .botbtn image{width: 40rpx;height: 34rpx;margin: 10rpx auto 5rpx;}

+ 77 - 8
match/activityDetail/activityDetail.vue

@@ -3,11 +3,65 @@
 		<view class="top">
 			<image :src="detail.pic" mode="aspectFill" class="act-img"></image>
 			<view class="title">{{detail.title}}</view>
-			<view class="datas">浏览 {{detail.browse}}  <!-- 收藏  69 --></view>
-			<view class="money free" v-if="userinfovip.levelGrade>0&& !userinfovip.end">¥{{detail.vipMoney}}</view>
-			<view class="money free" v-else>¥{{detail.money}}</view>
+			<!-- <view class="datas">浏览 {{detail.browse}}</view> -->
+			
+			<view class="money-box ddflex">
+				<!-- <view class="ddflex">
+					<image src="../static/images/bmfy.png"></image>
+					<text>报名费用</text>
+				</view> -->
+				<view>
+					<view class="money free" v-if="userinfovip.levelGrade>0&& !userinfovip.end">{{detail.vipMoney!=0?('¥'+detail.vipMoney):'免费'}}</view>
+					<view class="money free" v-else>{{detail.money!=0?('¥'+detail.money):'免费'}}</view>
+				</view>
+			</view>
+			
+			<view class="baoming-box">
+				<view class="ddflex">
+					<image src="../static/images/bmsj.png"></image>
+					<text>报名时间</text>
+				</view>
+				<view class="baoming-time">{{formData(detail.enlistStartTime)}} 至 {{formData(detail.enlistEndTime)}}</view>
+				<view class="ddflex" style="margin-top: 26rpx;">
+					<image src="../static/images/bmfy.png" style="visibility: hidden;"></image>
+					<text>活动时间</text>
+				</view>
+				<view class="baoming-time">
+					{{formData(detail.startTime)}} 至 {{formData(detail.endTime)}}
+				</view>
+			</view>
+			
+			<view class="hddz-box" style="margin-top: 26rpx;" v-if="detail.address">
+				<view class="ddflex">
+					<image src="../static/images/hddz.png"></image>
+					<text>活动地点</text>
+				</view>
+				<!-- v-if="detail.address" -->
+				<view class="ddflex hddz-area" @click="openMap()">
+					<view class="fflex tover">{{detail.address}}</view>
+					<image src="../static/images/crico2.png" class="rico"></image>
+				</view>
+			</view>
 		</view>
+		
+		<!-- <view class="date">
+			<view class="datass">
+				<view class="ddflex">
+					<image :src="detail.associationLogo" style="width:80rpx ;height: 80rpx;border-radius: 100%;" mode="aspectFill" class="dimg"></image>
+					<view style="font-size: 30rpx;">{{detail.associationTitle}}</view>
+				</view>
+			</view>
+		</view> -->
+		
 		<view class="date">
+			<view class="datass ddflex" style="justify-content: space-between;" v-if="detail.associationId" @click="jumpUrl('/businessAssociation/associationIndex/associationIndex?id='+detail.associationId)">
+				<view class="ddflex">
+					<image :src="detail.associationLogo" style="width:65rpx ;height: 65rpx;border-radius: 100%;" mode="aspectFill" class="dimg"></image>
+					<view style="font-size: 28rpx;">{{detail.associationTitle}}</view>
+				</view>
+				<image src="../static/images/crico2.png" class="rico"></image>
+			</view>
+			<!-- 
 			<view class="datass">
 				<view class="ddflex"><image src="../static/images/sjico.png" class="dimg"></image>报名时间:</view>
 				<view>{{detail.enlistStartTime}} - {{detail.enlistEndTime}}</view>
@@ -20,25 +74,25 @@
 				<image src="../static/images/dzico1.png" class="dimg"></image>
 				<view class="fflex">{{detail.address}}</view>
 				<image src="../../static/pages/images/crico1.png" class="rico"></image>
-			</view>
+			</view> -->
 		</view>
 		<view class="det">
-			<view class="tit ddflex">活动详情<!-- <image src="../../static/pages/images/crico1.png" class="rico"></image> --></view>
+			<view class="tit ddflex">活动介绍<!-- <image src="../../static/pages/images/crico1.png" class="rico"></image> --></view>
 			<view class="content">
 				<mp-html :content="detail.text" :lazy-load="true" @imgtap="choose"></mp-html>
 			</view>
 		</view>
 		<view class="savepadding"></view>
 		<view class="bot fixed bgfff">
-			<view class="savepadding ddflex">
+			<view class="savepadding ddflex" style="justify-content: space-between;">
 				<view class="btnfot ddflex">
 					<navigator class="botbtn" open-type="switchTab" url="/pages/index/index" hover-class="none">
 						<image src="/static/pages/images/sy.png"></image>主页
 					</navigator>
-					<!-- <view class="botbtn" @tap="clickCollect">
+					<view class="botbtn" @tap="clickCollect">
 						<image src="/static/pages/images/shoucang_h.png" v-if="detail.isCollect"></image>
 						<image src="/static/pages/images/shoucang.png" v-else></image>收藏
-					</view> -->
+					</view>
 					<view class="botbtn" @click="showShare"><image src="../static/images/fxico1_1.png"></image>分享</view>
 					<!-- <button open-type="share" class="botbtn">
 						<image src="../../static/pages/images/fxico1_1.png"></image>分享
@@ -238,6 +292,21 @@ export default {
 		formatTimeCommStr(dataStr) {
 			return util.formatTimeCommStr(dataStr, 'M/D 00:00');
 		},
+		formData(validDate){
+			let time = new Date(validDate.replace(/-/g, '/'));
+			return util.formatTime(time).t2
+		},
+		formDataObj(validDate){
+			let time = new Date(validDate.replace(/-/g, '/'));
+			return util.formatTime(time)
+		},
+		formDatahd(){
+			if(this.detail.startTime&&this.detail.endTime){}
+			else return false
+			return this.formDataObj(this.detail.startTime).t2==this.formDataObj(this.detail.endTime).t2?
+			(this.formDataObj(this.detail.startTime).t2+' '+this.formDataObj(this.detail.startTime).t6+' - '+this.formDataObj(this.detail.endTime).t6)
+			:(this.formDataObj(this.detail.startTime).t5+' - '+this.formDataObj(this.detail.endTime).t5)
+		},
 		getBrowse(){
 			let params={
 				bindId: this.options.id,

BIN
match/static/images/bmfy.png


BIN
match/static/images/bmsj.png


BIN
match/static/images/crico2.png


BIN
match/static/images/dzico1.png


BIN
match/static/images/hddz.png


BIN
match/static/images/hdqd.png


+ 16 - 0
office/addActivity/addActivity.css

@@ -0,0 +1,16 @@
+/* add.css */
+page{background: #fff;}
+.con{padding: 0 30rpx;}
+.search{height: 60rpx;background: #F7F7F7;border-radius: 30rpx;margin: 30rpx 0 25rpx;padding: 0 0 0 32rpx;}
+.ssico{width: 31rpx;height: 31rpx;margin-right: 7rpx;}
+.ipt{font-size: 28rpx;color: #32363F;}
+.placeholder{color: #B3B3B3;}
+.clear{width: 32rpx;height: 32rpx;padding: 10rpx 26rpx;}
+.list .li{border-bottom: 1rpx solid #e9e9e9;padding: 25rpx 0;}
+.list .li:last-child{border-bottom: none;}
+.pro{padding: 20rpx 0;align-items: flex-start;border-bottom: 1rpx solid #E9E9E9;}
+.pic{width: 136rpx;height: 136rpx;border-radius: 16rpx;margin-right: 18rpx;}
+.title{font-size: 26rpx;color: #1A1F30;line-height: 37rpx;height: 74rpx;}
+.money{font-size: 24rpx;color: var(--main);margin-top: 15rpx;}
+.btn{width: 95rpx;height: 50rpx;background: #F7F7F7;border-radius: 25rpx;font-size: 24rpx;color: #000;text-align: center;line-height: 50rpx;margin-left: 45rpx;}
+.complete{position: fixed;left: 0;right: 0;bottom: 0;height: 100rpx;background: #FFFFFF;font-size: 28rpx;color: var(--main);text-align: center;line-height: 100rpx;z-index: 50;box-shadow: 0 1rpx 10rpx rgba(0,0,0,.01);}

+ 128 - 0
office/addActivity/addActivity.vue

@@ -0,0 +1,128 @@
+<template>
+	<view class="con">
+		<view class="search ddflex">
+			<image src="../../static/images/ssico.png" class="ssico"></image>
+			<input @input="inputEvt" v-model="searchTitle" placeholder="搜索活动" placeholder-class="placeholder" class="ipt fflex" />
+			<image v-if="searchTitle" src="../static/images/clear.png" class="clear" @click="clearTitle()"></image>
+		</view>
+		<view class="list" v-if="pageList.length > 0">
+			<view class="li ddflex" v-for="(item, index) in pageList" :key="index" @click="addProduct(item,index)">
+				<image :src="item.pic" mode="aspectFill" class="pic"></image>
+				<view class="fflex">
+					<view class="title tovers">{{ item.title }}</view>
+					<view class="money">¥{{ item.enlistMoney }}</view>
+				</view>
+				<view class="btn" :style="item.isAdd?'background-color: var(--main);color: #fff;':''">{{item.isAdd?'已添加':'添加'}}</view>
+			</view>
+		</view>
+		<view class="nodata" v-if="ishow">
+			<image :src="picUrlss + 'empty_sp.png'"></image>
+			<text>暂无活动</text>
+		</view>
+		<!-- <view style="height: 100rpx;"></view>
+		<view class="complete" @click="completeProduct()">完成</view> -->
+	</view>
+</template>
+
+<script>
+const req = require('../../utils/request.js');
+export default {
+	data() {
+		return {
+			picUrlss: req.public.picUrls,
+			isLoad: true,
+			searchTitle: '',
+			form: {
+				page: 1,
+				limit: 10
+			},
+			pageList: [],
+			productList: []
+		};
+	},
+	onLoad() {
+		//默认选中上面的标签
+		let pages = getCurrentPages(); //获取所有页面栈实例列表
+		let prevPage = pages[pages.length - 2]; //上一页页面实例
+		this.productList = prevPage.$vm.productList;
+		console.log('this.productList=',this.productList)
+		this.getProductList();
+	},
+
+	onReachBottom() {
+		this.form.page++;
+		this.getProductList();
+	},
+	methods: {
+		inputEvt(e) {
+			this.form.page = 1;
+			this.isLoad = true;
+			this.getProductList();
+		},
+
+		clearTitle() {
+			this.searchTitle = '';
+			this.form.page = 1;
+			this.isLoad = true;
+			this.getProductList();
+		},
+
+		getProductList() {
+			var that = this;
+			if (!this.isLoad) return false;
+			this.isLoad = false;
+			if (this.searchTitle) {
+				this.form.searchTitle = this.searchTitle;
+			} else {
+				this.form.searchTitle = '';
+			}
+			req.getRequest('/api/match/xzb/list', this.form, data => {
+				data = data.map(it => {
+					it.isAdd = false;
+					this.productList.map(pit=>{
+						if(it.id == pit.id){
+							it.isAdd = true;
+						}
+					})
+					if (it.deliverWay && JSON.parse(it.deliverWay).indexOf(3) != -1) it.isJs = true;
+					return it;
+				});
+				if (data && data.length >= 10) {
+					that.isLoad = true;
+				}
+				if (that.form.page > 1) data = that.pageList.concat(data);
+				that.pageList = data;
+			});
+		},
+
+		addProduct(item,index) {
+			// if(item.isAdd) return false;
+			this.pageList.map((items,indexs)=>{
+				if(index!=indexs)
+					items.isAdd = false
+			})
+			this.pageList[index].isAdd = !this.pageList[index].isAdd;
+			this.completeProduct()
+		},
+		completeProduct(){
+			let list = this.pageList.filter(it=>{return it.isAdd});
+			if(list.length > 1) return req.msg('最多可添加1个活动');
+			let pages = getCurrentPages(); //获取所有页面栈实例列表
+			let prevPage = pages[pages.length - 2]; //上一页页面实例
+			prevPage.$vm.productList = list;
+			prevPage.$vm.newsType = 11;
+			if(list.length==0){
+				prevPage.$vm.newsType = 1;
+			}
+			// prevPage.$vm.productList.push(item); //修改上一页data里面的searchVal参数值为1211
+			uni.navigateBack({
+				//uni.navigateTo跳转的返回,默认1为返回上一级
+				delta: 1
+			});
+		},
+	}
+};
+</script>
+<style>
+@import './addActivity.css';
+</style>

+ 53 - 4
office/detail/detail.css

@@ -25,7 +25,7 @@ page{padding-bottom: 140rpx;background: #fff;}
 .ds{justify-content: space-between;font-size: 24rpx;color: #999;margin-top: 28rpx;padding: 0 30rpx;}
 .opt-share image{width: 33rpx;height: 33rpx;margin-right: 8rpx;}
 .opt-share{font-size: 24rpx;color: #999;margin-left: 50rpx !important;}
-.topic{max-width: 400rpx;height: 40rpx;background: #FDF1F1;border-radius: 20rpx;font-size: 20rpx;color: #F32224;padding: 0 20rpx 0 10rpx;margin: 18rpx 30rpx 0;}
+.topic{max-width: 400rpx;height: 40rpx;background: #E1FFF4;border-radius: 20rpx;font-size: 20rpx;color: var(--main);padding: 0 20rpx 0 10rpx;margin: 18rpx 30rpx 0;}
 .topic image{width: 28rpx;height: 28rpx;margin-right: 7rpx;}
 .loca{font-size: 20rpx;color: #666;}
 .loca image{width: 26rpx;height: 31rpx;margin-right: 8rpx;}
@@ -33,18 +33,67 @@ page{padding-bottom: 140rpx;background: #fff;}
 .vote-box{margin: 50rpx 30rpx 0;}
 .vote-box.ends{background: #f8f8f8;margin-top: 30rpx;padding: 20rpx;}
 .vote-tit{font-size: 28rpx;color: #000;}
-.vote-list .lis{height: 74rpx;background: #F9FAFC;border: 1rpx solid #EBEBEB;border-radius: 8rpx;font-size: 30rpx;color: #EB1C24;text-align: center;line-height: 74rpx;margin-top: 20rpx;padding: 0 28rpx;position: relative;overflow: hidden;}
+.vote-list .lis{height: 74rpx;background: #F9FAFC;border: 1rpx solid #EBEBEB;border-radius: 8rpx;font-size: 30rpx;color: var(--main);text-align: center;line-height: 74rpx;margin-top: 20rpx;padding: 0 28rpx;position: relative;overflow: hidden;}
 .end .lis{text-align: left;color: #9B9B9B;}
 .end .lis view{position: relative;z-index: 2;}
 .end .lis view.percent{position: absolute;top: 0;bottom: 0;left: 0;background: #F0F0F0;z-index: 0;}
-.end .lis.active{color: #EB1C24;}
-.end .lis.active view.percent{background: #FFEBEB;}
+.end .lis.active{color: var(--main);}
+.end .lis.active view.percent{background: #E1FFF4;}
 .vote-can{font-size: 22rpx;color: #999;margin-top: 15rpx;}
 .vote-can text{margin-right: 15rpx;}
 .shares{justify-content: space-between;padding: 40rpx 30rpx 0;}
 .share-btn{width: 330rpx !important;height: 80rpx !important;background: #F8F8F8;border-radius: 16rpx;font-size: 28rpx;color: #000;justify-content: center;}
 .share-btn image{width: 45rpx;height: 42rpx;margin-right: 12rpx;}
 .line{background: #f7f7f7;height: 20rpx;}
+.step-box{
+	background-color: #f7f8fa;
+	border-radius: 16rpx;
+	padding: 40rpx;
+	margin: 30rpx 30rpx 0;
+	color: var(--main);
+}
+.step-date{
+	font-size: 64rpx;
+	font-weight: 500;
+}
+.step-label{
+	font-size: 24rpx;
+	font-weight: 500;
+}
+.step-pic{
+	width: 150rpx;
+	height: 150rpx;
+	background: #E2E2E2;
+	border-radius: 16rpx 16rpx 16rpx 16rpx;
+	opacity: 1;
+	margin-right: 20rpx;
+}
+.step-title{
+	height: 74rpx;
+	line-height: 37rpx;
+	font-size: 26rpx;
+	font-family: PingFang SC-Regular, PingFang SC;
+	font-weight: 400;
+	color: #1A1F30;
+}
+.step-price{
+	line-height: 33rpx;
+	font-size: 24rpx;
+	font-family: PingFang SC-Medium, PingFang SC;
+	font-weight: 500;
+	color: #FF7000;
+}
+.step-btn{
+	width: 94rpx;
+	height: 46rpx;
+	line-height: 46rpx;
+	background: var(--main);
+	border-radius: 23rpx 23rpx 23rpx 23rpx;
+	opacity: 1;
+	text-align: center;
+	font-size: 28rpx;
+	color: #FFFFFF;
+}
 .product{height: 168rpx;margin-top: 30rpx;overflow: hidden;}
 .pro-view{height: 168rpx;padding-bottom: 20rpx;white-space: nowrap;}
 .pro-view .li{display: inline-block;width: 554rpx;height: 168rpx;background: #F7F8FA;border-radius: 16rpx;margin-right: 20rpx;padding: 16rpx;box-sizing: border-box;}

+ 44 - 15
office/detail/detail.vue

@@ -1,7 +1,7 @@
 <template>
 	<view v-if="isShowView">
 		<view class="user ddflex" @click="toUserHomePage(detail.userDTO)">
-			<image :src="detail.userDTO.avatar" mode="aspectFill" class="userimg"></image>
+			<image :src="detail.userDTO.avatar?detail.userDTO.avatar:'/static/images/def_head.png'" mode="aspectFill" class="userimg"></image>
 			<view class="fflex">
 				<view class="namea ddflex">
 					<view class="name fflex ddflex">
@@ -85,22 +85,51 @@
 					<!-- #endif -->
 				</view>
 			</view>
-			<view class="product" v-if="detail.products && detail.products.length > 0">
-				<scroll-view scroll-x="true" :class="'pro-view' + (detail.products.length == 1 ? ' pro-view1' : '')">
-					<view class="li" v-for="(item, index) in detail.products" :key="index" @click="toProductDetail(item)">
-						<view class="ddflex">
-							<image :src="item.pic + '?x-oss-process=style/w375'" mode="aspectFill" class="pic"></image>
-							<view class="fflex">
-								<view class="title tovers">{{ item.title }}</view>
-								<view class="opt ddflex">
-									<view class="money">¥{{ item.salePrice }}</view>
-									<view class="pro-btn">购买</view>
+			<block v-if="detail.type==10||detail.type==11">
+				<view v-if="detail.type==10" class="ddflex step-box" style="justify-content: space-between;" @click="jumpUrl('/exercise/record/record?userId=' + detail.userId)">
+					<view>
+						<view class="step-date">{{detail.wxRun.step}}</view>
+						<view class="step-label">步数</view>
+					</view>
+					<view>
+						<view class="step-date">{{detail.wxRun.index}}</view>
+						<view class="step-label" style="text-align: right;">名次</view>
+					</view>
+				</view>
+				<view v-if="detail.type==11" class="ddflex step-box" style="justify-content: space-between;" @click="jumpUrl('/match/activityDetail/activityDetail?id=' + detail.matchContent.id)">
+					<image class="step-pic" :src="detail.matchContent.pic" mode="aspectFill"></image>
+					<view class="fflex">
+						<view class="step-title tovers">{{detail.matchContent.title}}</view>
+						<view class="ddflex" style="justify-content: space-between;margin-top: 10rpx;">
+							<view class="step-price">¥{{detail.matchContent.defaultEnlistAmount}}</view>
+							<view  class="step-btn">查看</view>
+						</view>
+					</view>
+				</view>
+			</block>
+			<view v-if="detail.userGroupId" class="ddflex step-box" style="padding: 25rpx 21rpx;" @click="jumpUrl('/office/team/index?id=' + detail.userGroupId)">
+				<image style="width: 24rpx;height: 24rpx;margin-right: 13rpx;" src="../../static/images/link.png"></image>
+				<view style="font-weight: 500;color: #999999;">Team:</view>
+				<view>{{detail.userGroupTitle}}</view>
+			</view>
+			<block v-else>
+				<view class="product" v-if="detail.products && detail.products.length > 0">
+					<view scroll-x="true" :class="'pro-view' + (detail.products.length == 1 ? ' pro-view1' : '')">
+						<view class="li" v-for="(item, index) in detail.products" :key="index" @click="toProductDetail(item)">
+							<view class="ddflex">
+								<image :src="item.pic + '?x-oss-process=style/w375'" mode="aspectFill" class="pic"></image>
+								<view class="fflex">
+									<view class="title tovers">{{ item.title }}</view>
+									<view class="opt ddflex">
+										<view class="money">¥{{ item.salePrice }}</view>
+										<view class="pro-btn">购买</view>
+									</view>
 								</view>
 							</view>
 						</view>
 					</view>
-				</scroll-view>
-			</view>
+				</view>
+			</block>
 			<!-- <view class="shares ddflex">
 				<button open-type="share" class="share-btn ddflex">
 					<image src="../static/images/wechat.png"></image>
@@ -121,7 +150,7 @@
 			<view class="list" v-if="commentList && commentList.length > 0">
 				<view class="li ddflex" v-for="(item, index) in commentList" :key="index">
 					<image
-						:src="item.userDTO.avatar ? item.userDTO.avatar : '../../static/images/userImg.png'"
+						:src="item.userDTO.avatar ? item.userDTO.avatar : '/static/images/def_head.png'"
 						mode="scaleToFill"
 						class="userimg"
 						@click="toUserHomePage(item.userDTO)"
@@ -182,7 +211,7 @@
 				<view>收藏</view>
 			</view>
 			<view class="bot-btn" @click="submitFabulous(2)">
-				<image :src="'../static/images/' + (detail.isPraise == 1 ? 'like_h' : 'like') + '.png'"></image>
+				<image :src="'../../static/images/' + (detail.isPraise == 1 ? 'like_h' : 'like') + '.png'"></image>
 				<view>点赞</view>
 				<text class="num">{{ detail.count.fabulousCount < 99 ? detail.count.fabulousCount : '99+' }}</text>
 			</view>

+ 60 - 1
office/news/news.css

@@ -46,4 +46,63 @@ page{background: #fff;}
 .popup{position: fixed;left: 0;right: 0;bottom: 0;background: #fff;z-index: 100;text-align: center;border-radius: 15rpx 15rpx 0 0;transition: all .3s ease;}
 .pop-list .li{font-size: 32rpx;height: 90rpx;border-bottom: 1rpx solid #f1f1f1;line-height: 90rpx;}
 .pop-list .li:last-child{border-bottom: none;}
-.pop-cancel{font-size: 32rpx;height: 90rpx;border-top: 10rpx solid #f1f1f1;line-height: 90rpx;}
+.pop-cancel{font-size: 32rpx;height: 90rpx;border-top: 10rpx solid #f1f1f1;line-height: 90rpx;}
+
+.popup-center{
+	position: fixed;
+	top: 50%;
+	left: 50%;
+	transform: translate(-50%,calc(-50% - 70rpx));
+	width: 630rpx;
+	height: 512rpx;
+	background: #FFFFFF;
+	border-radius: 10rpx 10rpx 10rpx 10rpx;
+	opacity: 1;
+	z-index: 100;
+	/* overflow: hidden; */
+}
+.popup-center-title{
+	line-height: 62rpx;
+	font-size: 42rpx;
+	font-family: Source Han Sans CN-Bold, Source Han Sans CN;
+	font-weight: bold;
+	color: #333333;
+	margin: 75rpx auto 25rpx;
+	text-align: center;
+}
+.popup-center-option{
+	width: 460rpx;
+	height: 90rpx;
+	line-height: 90rpx;
+	background: #FF7000;
+	border-radius: 0rpx 0rpx 0rpx 0rpx;
+	opacity: 1;
+	font-size: 32rpx;
+	font-family: SourceHanSansCN-Regular-, SourceHanSansCN-Regular;
+	font-weight: normal;
+	color: #FFFFFF;
+	text-align: center;
+	margin:43rpx auto 0;
+}
+.popup-center-close{
+	width: 82rpx;
+	height: 82rpx;
+	position: absolute;
+	z-index: 100;
+	bottom: 0;
+	left: 50%;
+	transform: translate(-50%,70rpx);
+	}
+	
+	.sel-ht-ac{
+		height: 62rpx;
+		line-height: 62rpx;
+		background: #FFF0E5;
+		border-radius: 31rpx 31rpx 31rpx 31rpx;
+		opacity: 1;
+		font-size: 24rpx;
+		font-family: PingFang SC-Regular, PingFang SC;
+		font-weight: 400;
+		color: #FF7000;
+		padding: 0 23rpx;
+		}

+ 65 - 26
office/news/news.vue

@@ -20,17 +20,23 @@
 			</view>
 		</view>
 		<view class="other">
-			<view class="li ddflex" @click="jumpUrl('/office/topic/topic')">
+			<view class="li ddflex" @click="isDaka?'':jumpUrl('/office/topic/topic')">
 				<image src="../static/images/tj_htico.png" class="o-ico"></image>
 				<view class="fflex">话题</view>
 				<view class="sel-ht" v-if="htObj"><text>#{{htObj.title}}</text><!-- <text>#张丹丹推荐绘本</text> --></view>
 				<image src="../../static/pages/images/more.png" class="rico"></image>
 			</view>
-			<view class="li ddflex" @click="jumpUrl(productList.length>0 ? '/office/product/product':'/office/add/add')">
+			<!-- <view class="li ddflex" @click="jumpUrl(productList.length>0 ? '/office/product/product':'/office/add/add')">
 				<image src="../static/images/tj_spico.png" class="o-ico"></image>
 				<view class="fflex">商品</view>
 				<view class="sel-ht" v-if="productList.length>0">{{productList.length}}件商品</view>
 				<image src="../../static/pages/images/more.png" class="rico"></image>
+			</view> -->
+			<view class="li ddflex" @click="jumpUrl('/office/addActivity/addActivity')">
+				<image src="../static/images/tj_spico.png" class="o-ico"></image>
+				<view class="fflex">链接</view>
+				<view class="sel-ht" v-if="productList.length>0&&newsType==11">{{productList.length}}个活动</view>
+				<image src="../../static/pages/images/more.png" class="rico"></image>
 			</view>
 			<view class="li ddflex" @click="jumpUrl('/office/vote/vote' + (pollObj ? '?pollId=' + pollObj.id : ''))">
 				<image src="../static/images/tj_tpico.png" class="o-ico"></image>
@@ -38,15 +44,21 @@
 				<view class="sel-ht" v-if="pollObj">发起投票</view>
 				<image src="../../static/pages/images/more.png" class="rico"></image>
 			</view>
-			<view class="li ddflex" @click="chooseLocation"><!-- @click="jumpUrl('/office/location/index')" -->
+			<view class="li ddflex" @click="chooseLocation" v-if="showArea"><!-- @click="jumpUrl('/office/location/index')" -->
 				<image src="../static/images/tj_wzico.png" class="o-ico"></image>
 				<view class="fflex">位置</view>
 				<view class="sel-ht" v-if="location">{{location.poiName}}</view>
 				<image src="../../static/pages/images/more.png" class="rico"></image>
 			</view>
+			<view class="li ddflex" v-else><!-- @click="jumpUrl('/office/location/index')" -->
+				<image src="../static/images/tj_wzico.png" class="o-ico"></image>
+				<view class="fflex">位置</view>
+				<switch style="scale: 0.7;transform-origin: right;" color="var(--main)" @click="openArea()"></switch>
+			</view>
 		</view>
-		<view class="loca">
+		<view class="loca" v-if="showArea">
 			<scroll-view scroll-x="true" class="locas">
+				<view class="lis" @click="closeArea()" >不开启定位</view>
 				<view :class="'lis'+(poiIndex == index ? ' active':'')" @click="checkLocation(item,index)" v-for="(item,index) in poiList" :key="index">{{item.title}}</view>
 			</scroll-view>
 		</view>
@@ -77,14 +89,6 @@
 				<view class="btn" @click="submit()">发表</view>
 			</view>
 		</view> -->
-		<view class="ceng" @click="hidePop" v-if="isShowPop"></view>
-		<view class="popup savepadding" :style="'bottom:'+popBottom">
-			<view class="pop-list">
-				<view class="li" @tap="uploadImgs">图片</view>
-				<view class="li" @tap="uploadVodChangeHandle">视频</view>
-			</view>
-			<view class="pop-cancel" @click="hidePop">取消</view>
-		</view>
 	</view>
 </template>
 
@@ -94,6 +98,7 @@ const req = require('../../utils/request.js');
 const QQMapWX = require("../../utils/qqmap.js");
 const requsetmessage = require('../../utils/requestmessage.js');
 import VODUpload from '@/utils/aliyun-upload-sdk-1.0.1.min.js'
+const api = require('../../utils/api.js');
 export default {
 	data() {
 		return {
@@ -122,6 +127,13 @@ export default {
 			poiIndex: -1,
 			poiList: [],
 			userGroupId: '',//团队id
+			
+			isShowPopCenter:false,
+			
+			isDaka:false,
+			isOpenWeRunData:false,
+			
+			showArea:true,//是否选择定位
 		};
 	},
 	onLoad(opt) {
@@ -134,6 +146,7 @@ export default {
 		uni.setNavigationBarTitle({
 			title: '编辑动态'
 		});
+		
 		this.placeholderText = '请输入内容';
 		if(this.config.open_community_video == 1){
 			this.getVodInfo()
@@ -145,15 +158,17 @@ export default {
 		}
 		QQMapWX.reverseGeocoder(location, data => {
 			this.poiList = data.pois;
+			this.checkLocation(this.poiList[0],0)
 		});
 	},
 	onShow() {
+		this.isOpenWeRunData = req.getStorage('isOpenWeRunData')
 		this.config = JSON.parse(req.getStorage('configRes'))
 	},
 	methods: {
 		descInput(event) {
 			this.desc = event.detail.html;
-			// console.log('desc数据>>>>>>', this.desc);
+			console.log('desc数据>>>>>>', this.desc);
 			if (this.desc) {
 				this.descLength = event.detail.text.length - 1;
 			} else {
@@ -245,7 +260,7 @@ export default {
 
 		async submit() {
 			var dataPream = {};
-			dataPream.type = 1;
+			dataPream.type = this.newsType;
 			if (!this.desc) {
 				return req.msg('请输入内容');
 			}
@@ -274,18 +289,18 @@ export default {
 			}
 			//产品
 			if (this.productList && this.productList.length > 0) {
-				// let idList = this.productList.map(it => {
-				// 	return it.id;
-				// });
-				// dataPream.productIds = idList.join(',');
-				let idList = [];
-				this.productList.map(it => {
-					let obj={
-						productId: it.id
-					}
-					idList.push(obj);
-				});
-				dataPream.productsList = idList;
+				if(this.newsType==10||this.newsType==11){
+					dataPream.productIds = this.productList[0].id
+				}else{
+					let idList = [];
+					this.productList.map(it => {
+						let obj={
+							productId: it.id
+						}
+						idList.push(obj);
+					});
+					dataPream.productsList = idList;
+				}
 			}
 			// 位置
 			if(this.location&&this.location.poiName){
@@ -321,6 +336,7 @@ export default {
 		},
 		hidePop(){
 			this.isShowPop = false
+			this.isShowPopCenter = false
 			this.popBottom = '-100%'
 		},
 		getVodInfo(){
@@ -430,9 +446,32 @@ export default {
 			videoContext.play()
 		},
 		jumpUrl(url){
+			this.isShowPopCenter = false
 			uni.navigateTo({
 				url: url
 			})
+		},
+		
+		onEditorReady(text) {
+		    var that = this;
+		    uni.createSelectorQuery().select('#editor').context((res) => {
+				let editorCtx = res.context;
+				editorCtx.setContents({//赋值
+					html:text
+		        });
+		    }).exec()
+		  },
+		  
+		// 发帖隐藏定位
+		closeArea(){
+			this.showArea = false
+			this.poiIndex = -1;
+			this.location = {}
+		},
+		// 开启发帖定位
+		openArea(){
+			this.showArea = true
+			this.checkLocation(this.poiList[0],0)
 		}
 	}
 };

+ 100 - 13
office/team/index.css

@@ -1,28 +1,30 @@
 /* index.css */
-
+page{
+	background-color: #f7f7f7;
+}
 .top-fixed{position: fixed;top: 0;left: 0;right: 0;z-index: 50;}
 .back{position: absolute;left: 30rpx;}
 .back image{width: 22rpx;height: 38rpx;}
-.top{background: linear-gradient(180deg, #FFEBEB 0%, #FFFFFF 100%);padding: 30rpx;}
+.top{background: linear-gradient(180deg, #e5f8ef 0%, #FFFFFF 100%);padding: 30rpx;}
 .info{padding: 40rpx 0 0;}
 .team-pic{width: 132rpx;height: 132rpx;border-radius: 15rpx;margin-right: 25rpx;}
 .title{font-size: 42rpx;color: #1A1F30;font-weight: bold;}
 .sta{font-size: 28rpx;color: #666;margin-top: 10rpx;}
 .sta text{color: #000;}
 .sta-line{font-size: 22rpx;color: #999;margin: 0 15rpx;font-family: '宋体';}
-.sta-datas{height: 39rpx;background: rgba(253, 139, 52, .2);border-radius: 20rpx;font-size: 22rpx;color: #E96621;padding: 0 20rpx;line-height: 39rpx;}
+.sta-datas{height: 39rpx;background: rgba(39, 214, 153, 0.2);border-radius: 20rpx;font-size: 22rpx;color: var(--main);padding: 0 20rpx;line-height: 39rpx;}
 .bri{font-size: 24rpx;color: #999;margin-top: 30rpx;align-items: flex-start;word-break: break-all;}
 .rico{width: 12rpx;height: 20rpx;margin-left: 20rpx;margin-top: 8rpx;}
 .leader{font-size: 28rpx;color: #999;margin-top: 20rpx;}
-.leader text{width: 65rpx;height: 32rpx;background: #FF9599;border-radius: 11rpx;font-size: 22rpx;color: #fff;text-align: center;line-height: 32rpx;margin-right: 10rpx;}
+.leader text{width: 65rpx;height: 32rpx;background: #FFA661;border-radius: 11rpx;font-size: 22rpx;color: #fff;text-align: center;line-height: 32rpx;margin-right: 10rpx;}
 .leader image{width: 32rpx;height: 32rpx;border-radius: 50%;margin-right: 10rpx;}
-.join{background: linear-gradient(134deg, rgba(255, 113, 59, .14) 0%, rgba(255, 213, 186, .14) 100%);border-radius: 5rpx;padding: 14rpx 25rpx;font-size: 24rpx;color: #000;margin-top: 30rpx;}
+.join{background: linear-gradient(134deg, rgba(39, 214, 153, .14) 0%, rgba(255, 213, 186, .14) 100%);border-radius: 5rpx;padding: 14rpx 25rpx;font-size: 24rpx;color: #000;margin-top: 30rpx;}
 .join text{display: block;font-size: 22rpx;color: #666;margin-top: 5rpx;}
-.join-btn{width: 133rpx;height: 60rpx;background: #EB1C24;border-radius: 37rpx;font-size: 28rpx;color: #fff;text-align: center;line-height: 60rpx;}
+.join-btn{width: 133rpx;height: 60rpx;background: var(--main);border-radius: 37rpx;font-size: 28rpx;color: #fff;text-align: center;line-height: 60rpx;}
 .cons-b{margin: 10rpx 30rpx 30rpx;background: #fff;border-radius: 20rpx;}
 .tab{padding: 26rpx 30rpx;}
 .tab .li{min-width: 88rpx;height: 48rpx;background: #fff;border-radius: 24rpx;font-size: 24rpx;color: #000;text-align: center;line-height: 48rpx;margin-right: 30rpx;box-sizing: border-box;padding: 0 20rpx;}
-.tab .li.active{background: #FFEBEB;color: #EB1C24;}
+.tab .li.active{background: #FFF0E5;color: #FF7000;}
 .list .li{padding: 40rpx 30rpx 45rpx;border-bottom: 1rpx solid rgba(174, 174, 174, 0.2);}
 .list .li:last-child{border-bottom: none;}
 .userimg{width: 66rpx;height: 66rpx;border-radius: 50%;margin-right: 12rpx;}
@@ -36,18 +38,67 @@
 .video-play{position: absolute;top: 0;left: 0;right: 0;bottom: 0;justify-content: center;background: rgba(0,0,0,.5);border-radius: 15rpx;}
 .video-play image{width: 82rpx;height: 82rpx;}
 .imgbox{flex-wrap: wrap;margin-top: 20rpx;}
-.imgbox image{width: 222rpx;height: 222rpx;border-radius: 16rpx;margin: 0 12rpx 12rpx 0;}
+.imgbox image{width: calc((100% - 24rpx)/3);height: 222rpx;border-radius: 16rpx;margin: 0 12rpx 12rpx 0;}
 .imgbox image:nth-child(3n){margin-right: 0;}
 .que{height: 78rpx;border-radius: 10rpx;background: linear-gradient(270deg, #FFFBEB 0%, #FFF3C9 100%);font-size: 28rpx;color: #FE7806;padding: 0 15rpx;margin-top: 20rpx;}
 .que .tovers{-webkit-line-clamp: 1;height: 78rpx;line-height: 78rpx;}
 .st-ico{width: 50rpx;height: 47rpx;margin-right: 15rpx;}
 .st-rico{width: 12rpx;height: 20rpx;margin-left: 35rpx;}
 .cates text{display: block;font-size: 20rpx;color: #999;background: #F7F7F7;height: 48rpx;border-radius: 24rpx;padding: 0 20rpx;margin: 30rpx 25rpx 0 0;line-height: 48rpx;}
-.topic{height: 40rpx;background: #FDF1F1;border-radius: 20rpx;font-size: 20rpx;color: #F32224;padding: 0 20rpx 0 10rpx;margin-top: 18rpx;}
+.topic{height: 40rpx;background: #E1FFF4;border-radius: 20rpx;font-size: 20rpx;color: var(--main);padding: 0 20rpx 0 10rpx;margin-top: 18rpx;}
 .topic image{width: 28rpx;height: 28rpx;margin-right: 7rpx;}
 .loca{margin-top: 20rpx;font-size: 20rpx;color: #666;}
 .loca image{width: 26rpx;height: 31rpx;margin-right: 8rpx;}
 .loca text{margin-right: 10rpx;}
+.step-box{
+	background-color: #f7f8fa;
+	border-radius: 16rpx;
+	padding: 40rpx;
+	margin-top: 30rpx;
+	color: var(--main);
+}
+.step-date{
+	font-size: 64rpx;
+	font-weight: 500;
+}
+.step-label{
+	font-size: 24rpx;
+	font-weight: 500;
+}
+.step-pic{
+	width: 150rpx;
+	height: 150rpx;
+	background: #E2E2E2;
+	border-radius: 16rpx 16rpx 16rpx 16rpx;
+	opacity: 1;
+	margin-right: 20rpx;
+}
+.step-title{
+	height: 74rpx;
+	line-height: 37rpx;
+	font-size: 26rpx;
+	font-family: PingFang SC-Regular, PingFang SC;
+	font-weight: 400;
+	color: #1A1F30;
+}
+.step-price{
+	line-height: 33rpx;
+	font-size: 24rpx;
+	font-family: PingFang SC-Medium, PingFang SC;
+	font-weight: 500;
+	color: #FF7000;
+}
+.step-btn{
+	width: 94rpx;
+	height: 46rpx;
+	line-height: 46rpx;
+	background: var(--main);
+	border-radius: 23rpx 23rpx 23rpx 23rpx;
+	opacity: 1;
+	text-align: center;
+	font-size: 28rpx;
+	color: #FFFFFF;
+}
 .product{height: 168rpx;margin-top: 30rpx;overflow: hidden;}
 .pro-view{height: 168rpx;padding-bottom: 20rpx;white-space: nowrap;}
 .pro-view .lis{display: inline-block;width: 554rpx;height: 168rpx;background: #F7F8FA;border-radius: 16rpx;margin-right: 20rpx;padding: 16rpx;box-sizing: border-box;}
@@ -67,12 +118,12 @@
 .vote-box{margin-top: 50rpx;}
 .vote-box.ends{background: #f8f8f8;margin-top: 30rpx;padding: 20rpx;}
 .vote-tit{font-size: 28rpx;color: #000;}
-.vote-list .lis{height: 74rpx;background: #F9FAFC;border: 1rpx solid #EBEBEB;border-radius: 8rpx;font-size: 30rpx;color: #4E6EAC;text-align: center;line-height: 74rpx;margin-top: 20rpx;padding: 0 28rpx;position: relative;overflow: hidden;}
+.vote-list .lis{height: 74rpx;background: #F9FAFC;border: 1rpx solid #EBEBEB;border-radius: 8rpx;font-size: 30rpx;color: var(--main);text-align: center;line-height: 74rpx;margin-top: 20rpx;padding: 0 28rpx;position: relative;overflow: hidden;}
 .end .lis{text-align: left;color: #9B9B9B;}
 .end .lis view{position: relative;z-index: 2;}
 .end .lis view.percent{position: absolute;top: 0;bottom: 0;left: 0;background: #F0F0F0;z-index: 0;}
-.end .lis.active{color: #4E6EAC;}
-.end .lis.active view.percent{background: #E4ECFF;}
+.end .lis.active{color: var(--main);}
+.end .lis.active view.percent{background: #E1FFF4;}
 .vote-can{font-size: 22rpx;color: #999;margin-top: 15rpx;}
 .vote-can text{margin-right: 15rpx;}
 .link{height: 150rpx;background: #F8F8F8;border-radius: 16rpx;padding: 24rpx;font-size: 28rpx;color: #333;box-sizing: border-box;margin-top: 30rpx;}
@@ -94,4 +145,40 @@
 .bang-wen image{width: 36rpx;height: 36rpx;margin-right: 15rpx;}
 .wen{display: inline-block;width: 60rpx;height: 34rpx;background: #3DB4FF;border-radius: 4rpx;font-size: 24rpx;color: #fff;text-align: center;line-height: 34rpx;margin-right: 15rpx;}
 .edit{position: fixed;right: 30rpx;bottom: 170rpx;width: 110rpx;height: 110rpx;background: var(--main);box-shadow: 0px 4px 24px rgba(255, 156, 159, 0.3);border-radius: 50%;text-align: center;z-index: 50;}
-.edit image{width: 100%;height: 100%;}
+.edit image{width: 100%;height: 100%;}
+
+.team-rank{
+	width: 689rpx;
+	height: 136rpx;
+	background: #FFFFFF;
+	border-radius: 15rpx 15rpx 15rpx 15rpx;
+	opacity: 1;
+	margin:26rpx auto 0;
+	padding: 0 30rpx;
+	box-sizing: border-box;
+}
+.team-logo{
+	width: 90rpx;
+	height: 90rpx;
+	background: #FFF0E5;
+	border-radius: 15rpx 15rpx 15rpx 15rpx;
+	margin-right: 32rpx;
+}
+.team-rank-text{
+	line-height: 41rpx;
+	font-size: 28rpx;
+	font-family: Source Han Sans CN-Regular, Source Han Sans CN;
+	font-weight: 400;
+}
+.team-rank-text text{
+	color: #FF7000;
+}
+.team-user-heads image{
+	width: 66rpx;
+	height: 66rpx;
+	border-radius: 100%;
+	margin-left: -14rpx;
+}
+.team-user-heads image:first-child{
+	margin-left: 0rpx;
+}

+ 146 - 33
office/team/index.vue

@@ -8,8 +8,14 @@
 		<view class="top" :style="'padding-top:' + systems.barHeight + 'rpx;'">
 			<view class="info ddflex">
 				<image :src="teamInfo.url?teamInfo.url:picUrlss+'office_images/team_default.png'" mode="aspectFill" class="team-pic"></image>
-				<view class="fflex">
-					<view class="title">{{teamInfo.title}}</view>
+				<view class="fflex" style="overflow: visible;">
+					<view class="ddflex">
+						<view class="title fflex">{{teamInfo.title}}</view>
+						<button v-if="userInfo&&teamInfo.isJoin == 1" open-type="share" class="ddflex" style="font-size: 24rpx;color: #999999;margin-top: -30rpx;">
+							<image style="width: 30rpx;height: 30rpx;margin-right: 8rpx;margin-left: 8rpx;" src="../static/images/fx.png"></image>
+							邀请
+						</button>
+					</view>
 					<view class="sta ddflex">
 						<view class="ddflex fflex">
 							<view><text>{{teamInfo.memberNum?teamInfo.memberNum:0}}</text>成员</view>
@@ -24,9 +30,15 @@
 				<view class="fflex tovers">{{teamInfo.description}}</view>
 				<image src="../../static/pages/images/more.png" class="rico"></image>
 			</view>
-			<view class="leader ddflex">
+			<view v-if="teamInfo.relationMatch" class="ddflex"
+				style="padding: 18rpx 0;margin-top: 20rpx;color: #999;font-size: 24rpx;"
+				@click="jumpUrl('/pages/main/show/show?id='+teamInfo.relationMatch.id)">
+				来自
+				<view class="fflex tover" style="color: var(--main);">{{teamInfo.relationMatch.title}}</view>
+			</view>
+			<view class="leader ddflex" v-if="teamInfo.teamUserDTO">
 				<text>队长</text>
-				<image :src="teamInfo.teamUserDTO.avatar?teamInfo.teamUserDTO.avatar:'../../static/images/userimg.png'" mode="aspectFill"></image>
+				<image :src="teamInfo.teamUserDTO.avatar?teamInfo.teamUserDTO.avatar:'/static/images/def_head.png'" mode="aspectFill"></image>
 				<view>{{teamInfo.teamUserDTO.realName?teamInfo.teamUserDTO.realName:teamInfo.teamUserDTO.nickName}}</view>
 			</view>
 			<view class="join ddflex" v-if="userInfo&&teamInfo.isJoin != 1">
@@ -36,7 +48,8 @@
 				</view>
 				<view class="join-btn" @click="joinTeam">加入</view>
 			</view>
-		</view>		
+		</view>
+			
 		<view class="tab ddflex">
 			<!-- <view :class="'li ' + (pType == 1 ? 'active' : '')" @click="swiPType(1)">综合</view> -->
 			<view :class="'li ' + (pType == 12 ? 'active' : '')" @click="swiPType(12)">最新</view>
@@ -49,7 +62,10 @@
 						<image :src="item.userDTO.avatar" mode="aspectFill" class="userimg"></image>
 						<view class="fflex">
 							<view class="namea ddflex">
-								<view class="name fflex ddflex">{{ item.userDTO.nickName }}<image src="../../static/images/vip_tag.png" class="vip-tag" v-if="item.userDTO.levelGrade > 0"></image></view>
+								<view class="name fflex ddflex">{{ item.userDTO.nickName }}
+									<!-- <image src="../../static/images/vip_tag.png" class="vip-tag" v-if="item.userDTO.levelGrade > 0"></image> -->
+									<image v-if="item.userDTO.isOpenWeRunData" style="width:15rpx;height:20rpx;margin-left: 10rpx;" src="../../static/images/yd.png"></image>
+								</view>
 								<view class="time">{{ item.time }}</view>
 							</view>
 							<view class="area" v-if="item.userDTO.cityName">{{ item.userDTO.provinceName }} {{ item.userDTO.cityName }}</view>
@@ -97,36 +113,65 @@
 						</block>
 						<view class="vote-can" v-if="item.qyPoll.isEnd"><text>{{item.qyPoll.voteCount}}人参与</text>投票已结束</view>
 					</view>
-					<view class="product" v-if="item.products && item.products.length > 0">
-						<view scroll-x="true" class="pro-view pro-view1" v-if="item.products.length == 1">
-							<view class="lis" v-for="(it, idx) in item.products" :key="idx" @click="toProductDetail(it)">
-								<view class="ddflex">
-									<image :src="it.pic + '?x-oss-process=style/w375'" mode="aspectFill" class="pic"></image>
-									<view class="fflex">
-										<view class="title tover">{{ it.title }}</view>
-										<view class="opts ddflex">
-											<view class="money"><text>¥</text>{{ it.salePrice }}</view>
-											<view class="pro-btn"><image src="../../static/pages/images/n_cart.png"></image></view>
-										</view>
-									</view>
+					<block v-if="item.type==10||item.type==11">
+						<view v-if="item.type==10" class="ddflex step-box" style="justify-content: space-between;" @click="jumpUrl('/exercise/record/record?userId=' + item.userId)">
+							<view>
+								<view class="step-date">{{item.wxRun.step}}</view>
+								<view class="step-label">步数</view>
+							</view>
+							<view>
+								<view class="step-date">{{item.wxRun.index}}</view>
+								<view class="step-label" style="text-align: right;">名次</view>
+							</view>
+						</view>
+						<view v-if="item.type==11" class="ddflex step-box" style="justify-content: space-between;" @click="jumpUrl('/pages/main/show/show?id=' + item.matchContent.id)">
+							<image class="step-pic" :src="item.matchContent.pic" mode="aspectFill"></image>
+							<view class="fflex">
+								<view class="step-title tovers">{{item.matchContent.title}}</view>
+								<view class="ddflex" style="justify-content: space-between;margin-top: 10rpx;">
+									<view class="step-price">¥{{item.matchContent.defaultEnlistAmount}}</view>
+									<view  class="step-btn">查看</view>
 								</view>
 							</view>
 						</view>
-						<scroll-view scroll-x="true" class="pro-view" v-else>
-							<view class="lis" v-for="(it, idx) in item.products" :key="idx" @click="toProductDetail(it)">
-								<view class="ddflex">
-									<image :src="it.pic + '?x-oss-process=style/w375'" mode="aspectFill" class="pic"></image>
-									<view class="fflex">
-										<view class="title tover">{{ it.title }}</view>
-										<view class="opts ddflex">
-											<view class="money"><text>¥</text>{{ it.salePrice }}</view>
-											<view class="pro-btn"><image src="../../static/pages/images/n_cart.png"></image></view>
+					</block>
+					<view v-if="item.userGroupId" class="ddflex step-box" style="padding: 25rpx 21rpx;" @click="jumpUrl('/office/team/index?id=' + item.userGroupId)">
+						<image style="width: 24rpx;height: 24rpx;margin-right: 13rpx;" src="../../static/images/link.png"></image>
+						<view style="font-weight: 500;color: #999999;">Team:</view>
+						<view>{{item.userGroupTitle}}</view>
+					</view>
+					<block v-else>
+						<view class="product" v-if="item.products && item.products.length > 0">
+							<view scroll-x="true" class="pro-view pro-view1" v-if="item.products.length == 1">
+								<view class="lis" v-for="(it, idx) in item.products" :key="idx" @click="toProductDetail(it)">
+									<view class="ddflex">
+										<image :src="it.pic + '?x-oss-process=style/w375'" mode="aspectFill" class="pic"></image>
+										<view class="fflex">
+											<view class="title tover">{{ it.title }}</view>
+											<view class="opts ddflex">
+												<view class="money"><text>¥</text>{{ it.salePrice }}</view>
+												<view class="pro-btn"><image src="../../static/pages/images/n_cart.png"></image></view>
+											</view>
 										</view>
 									</view>
 								</view>
 							</view>
-						</scroll-view>
-					</view>
+							<scroll-view scroll-x="true" class="pro-view" v-else>
+								<view class="lis" v-for="(it, idx) in item.products" :key="idx" @click="toProductDetail(it)">
+									<view class="ddflex">
+										<image :src="it.pic + '?x-oss-process=style/w375'" mode="aspectFill" class="pic"></image>
+										<view class="fflex">
+											<view class="title tover">{{ it.title }}</view>
+											<view class="opts ddflex">
+												<view class="money"><text>¥</text>{{ it.salePrice }}</view>
+												<view class="pro-btn"><image src="../../static/pages/images/n_cart.png"></image></view>
+											</view>
+										</view>
+									</view>
+								</view>
+							</scroll-view>
+						</view>
+					</block>
 					<view class="opt ddflex" v-if="!item.source">
 						<view class="fflex" @click="jumpUrlDetail(item)">{{fomatNumbers(item.count.browseCount)}}次浏览</view>
 						<view class="ddflex" @click="submitFabulous(2, item.id, index)">
@@ -149,7 +194,7 @@
 				<text>暂无动态</text>
 			</view>
 		</view>
-		<view class="create" @click="createJump('/office/news/news?newsType=1&userGroupId='+opt.id)" v-if="config.is_show_create_btn == 1&&userInfo&&teamInfo.isJoin == 1"><image src="../../static/images/create.png"></image>发布</view>
+		<view class="create" @click="createJump('/office/news/news?newsType=1&userGroupId='+opt.id)" v-if="config.is_show_create_btn == 1&&userInfo&&teamInfo.isJoin == 1"><image style="display: block;" src="../../static/images/create.png"></image>发布</view>
 	</view>
 </template>
 
@@ -182,13 +227,22 @@
 				teamInfo: {},
 				userInfo: {},
 				totalNum: 0,
-				currentPoi: {}
+				currentPoi: {},
+				teamRank:[],
+				myRank:{},
+				isOpenWeRunData:false
 			}
 		},
-		onLoad(options) {
+		async onLoad(options) {
 			this.opt = options;
+			await req.silenceLogin(options.tjuid?options.tjuid:'', '');
 			this.getTeamInfo();
+			this.getTeamRank()
+			this.getMyRank()
 			this.getOfficeList();
+			this.userInfo = req.getStorage('userInfo');
+			this.isOpenWeRunData = req.getStorage('isOpenWeRunData')
+			this.config =req.getStorage('configRes')? JSON.parse(req.getStorage('configRes')):''
 		},
 		onShow() {
 			if(this.isRefresh){
@@ -197,8 +251,9 @@
 				this.getOfficeList();
 				this.isRefresh = false;
 			}
-			this.config = JSON.parse(req.getStorage('configRes'))
 			this.userInfo = req.getStorage('userInfo');
+			this.isOpenWeRunData = req.getStorage('isOpenWeRunData')
+			this.config =req.getStorage('configRes')? JSON.parse(req.getStorage('configRes')):''
 		},
 		onHide() {
 			this.isShowbtn = false;
@@ -207,15 +262,73 @@
 			this.form.page++;
 			this.getOfficeList();
 		},
+		onShareAppMessage(){
+			let title = req.getStorage('userInfo').nickName+'邀请您加入'+this.teamInfo.title
+			return {
+				title: title,
+				imageUrl:this.teamInfo.url?this.teamInfo.url:this.picUrlss+'office_images/team_default.png',
+				path: '/office/team/index?tjuid=' +req.getStorage('userInfo').id+'&id='+this.opt.id
+			};
+		},
 		methods: {
+			getTeamRank(){
+				let queryParams = {
+					groupId:this.opt.id,
+					page:1,
+					limit:3,
+					searchType:2
+				}
+				const now = new Date();
+				const year = now.getFullYear();
+				const month = now.getMonth();
+				const date = now.getDate(); // 获取日期
+				const day = now.getDay(); // 获取周几,0-6,0表示周日
+				const _day = day==0?7:day;
+				// 获取周一日期
+				const snow = new Date(year,month,date - _day + 1).setHours(0, 0, 0,0);
+				// 获取周日日期
+				const enow = new Date(new Date(snow).getTime() + 6*24*3600*1000).setHours(23, 59, 59,0);
+				queryParams.startTime = snow/1000
+				queryParams.endTime = enow/1000
+				req.getRequest('/api/v3/wxRun/timeRangeRunRanking',queryParams,data=>{
+					this.teamRank = data.list?data.list:[];
+				})
+			},
+			getMyRank(){
+				let queryParams = {}
+				const now = new Date();
+				const year = now.getFullYear();
+				const month = now.getMonth();
+				const date = now.getDate(); // 获取日期
+				const day = now.getDay(); // 获取周几,0-6,0表示周日
+				const _day = day==0?7:day;
+				// 获取周一日期
+				const snow = new Date(year,month,date - _day + 1).setHours(0, 0, 0,0);
+				// 获取周日日期
+				const enow = new Date(new Date(snow).getTime() + 6*24*3600*1000).setHours(23, 59, 59,0);
+				queryParams.startTime = snow/1000
+				queryParams.endTime = enow/1000
+				queryParams.groupId = this.opt.id
+				queryParams.searchType = 2
+				req.getRequest('/api/v3/wxRun/timeRangeInfo',queryParams,res=>{
+					this.myRank = res
+				})
+			},
 			getTeamInfo(){
 				req.getRequest(api.user_team_info+this.opt.id,{},data=>{
 					this.teamInfo = data;
 				})
 			},
 			joinTeam(item,index){
+				if(this.teamInfo.relationMatch){
+					uni.navigateTo({
+						url: '/pages/main/show/show?id='+this.teamInfo.relationMatch.id
+					})
+					return false;
+				}
 				req.postRequest(api.user_team_follow,{userGroupId: this.teamInfo.id},data=>{
 					req.msg('加入团队成功');
+					this.teamInfo.isJoin=1
 				})
 			},
 			//聊一聊切换排序类型

+ 113 - 2
pages.json

@@ -14,12 +14,20 @@
 		// 	}
 		// },
 		{
+			"path": "pages/matchList/index",
+			"style": {
+				"navigationBarTitleText": "活动专区"
+			}
+		},
+		{
 			"path": "pages/timelyDelivery/index",
 			"style": {}
 		},
 		{
 			"path": "pages/user/user",
 			"style": {
+				"navigationStyle": "custom",
+				"navigationBarTextStyle": "black",
 				"navigationBarTitleText": "我的"
 			}
 		},
@@ -142,7 +150,7 @@
 		"custom": true,
 		"list": [{
 				"pagePath": "pages/index/index",
-				"text": "云药房"
+				"text": "首页"
 			},
 			// {
 			// 		"pagePath": "pages/main/main",
@@ -153,7 +161,7 @@
 			// 	"text": "首页"
 			// },
 			{
-				"pagePath": "pages/sort/sort",
+				"pagePath": "pages/matchList/index",
 				"text": "分类"
 			},
 			{
@@ -1021,6 +1029,12 @@
 					"style": {
 						"navigationBarTitleText": "我的关注"
 					}
+				},
+				{
+					"path": "addActivity/addActivity",
+					"style": {
+						"navigationBarTitleText": "关联活动"
+					}
 				}
 			]
 		},
@@ -1103,6 +1117,103 @@
 					}
 				}
 			]
+		},
+		{
+			"root": "card",
+			"pages": [{
+					"path": "not/not",
+					"style": {
+						"navigationBarTitleText": "我的名片",
+						"app-plus": {
+							"titleNView": {
+								"titleAlign": "left"
+							}
+		
+						}
+					}
+				},
+				{
+					"path": "index/index",
+					"style": {
+						"navigationBarTitleText": "我的名片",
+						"navigationStyle": "custom"
+					}
+				},
+				{
+					"path": "create/create",
+					"style": {
+						"navigationBarTitleText": "创建名片",
+						"app-plus": {
+							"titleNView": {
+								"titleAlign": "left"
+							}
+		
+						}
+					}
+				}, {
+					"path": "editDesc/editDesc",
+					"style": {
+						"navigationBarTitleText": "编辑个人简介",
+						"enablePullDownRefresh": false,
+						"app-plus": {
+							"titleNView": {
+								"titleAlign": "left"
+							}
+		
+						}
+					}
+		
+				}, {
+					"path": "poster/poster",
+					"style": {
+						"navigationBarTitleText": "名片码",
+						"enablePullDownRefresh": false,
+						"app-plus": {
+							"titleNView": {
+								"titleAlign": "left"
+							}
+		
+						}
+					}
+		
+				},
+				{
+					"path": "network/network",
+					"style": {
+						"navigationBarTitleText": "IP名片"
+					}
+				},
+				{
+					"path": "myNetWork/myNetWork",
+					"style": {
+						"navigationBarTitleText": "我的人脉"
+					}
+				},
+				{
+					"path": "industry/industry",
+					"style": {
+						"navigationBarTitleText": "行业"
+					}
+				},
+				{
+					"path": "groupManage/groupManage",
+					"style": {
+						"navigationBarTitleText": "分组管理"
+					}
+				},
+				{
+					"path": "addGroup/addGroup",
+					"style": {
+						"navigationBarTitleText": "新增分组"
+					}
+				},
+				{
+					"path": "cardList/cardList",
+					"style": {
+						"navigationBarTitleText": "顾问"
+					}
+				}
+			]
 		}
 	]
 }

+ 140 - 1
pages/index/index.css

@@ -11,6 +11,89 @@ page{background: #fff;}
 .topcon{padding: 40rpx 45rpx;position: relative;z-index: 1;}
 .logo{width: 100rpx;height: 100rpx;border: 2rpx solid #fff;background: #fff;border-radius: 50%;margin-right: 25rpx;}
 .areas{font-size: 34rpx;color: #fff;}
+
+/* 服务 */
+.bg{
+	position: absolute;
+	top: 0;
+	left: 0;
+	right: 0;
+	height: 540rpx;
+}
+.bg image{
+	width: 100%;
+	height: 100%;
+}
+.service-person{
+	position: absolute;
+	z-index: 2;
+	left: 0;
+	right: 0;
+}
+.service-person-header{
+	width: 70rpx;
+	height: 70rpx;
+	margin: 0 30rpx;
+}
+.service-person-name{
+	font-size: 32rpx;
+	font-weight: bold;
+	color: #FFFFFF;
+	line-height: 45rpx;
+}
+.rico{
+	width: 9rpx;
+	height: 19rpx;
+	margin-left: 10rpx;
+}
+.service-person-number{
+	font-size: 20rpx;
+	font-weight: 500;
+	color: #FFFFFF;
+	line-height: 28rpx;
+}
+.service-person-tag{
+	padding: 0 10rpx;
+	line-height: 29rpx;
+	background: linear-gradient(319deg, #E6BB82 0%, #FAE4CD 100%);
+	border-radius: 3rpx 3rpx 3rpx 3rpx;
+	opacity: 1;
+	font-size: 20rpx;
+	font-family: PingFang SC-Regular, PingFang SC;
+	font-weight: 400;
+	color: #84600A;
+	margin-right: 10rpx;
+}
+.service-person-options{
+	font-size: 20rpx;
+	font-family: PingFang SC-Regular, PingFang SC;
+	font-weight: 400;
+	color: #FFFFFF;
+	line-height: 28rpx;
+	margin-top: 18rpx;
+}
+.service-person-option{
+	margin-right: 17rpx;
+}
+.service-person-option image{
+	width: 28rpx;
+	height: 28rpx;
+	margin-right: 3rpx;
+}
+.service-person-phone{
+	line-height: 28rpx;
+	font-size: 20rpx;
+	font-family: PingFang SC-Regular, PingFang SC;
+	font-weight: 400;
+	color: #FFFFFF;
+	text-align: center;
+	margin-left: 26rpx;
+}
+.service-person-phone image{
+	width: 48rpx;
+	height: 48rpx;
+	
+}
 /* .areas image{width: 22rpx;height: 17rpx;margin-left: 10rpx;margin-top: 10rpx;} */
 .recent{align-items: center;font-size: 22rpx;color: #fff;margin-top: 10rpx;}
 .recent text{display: block;width: 100rpx;height: 32rpx;text-align: center;line-height: 32rpx;border-radius: 16rpx;margin-right: 9rpx;font-size: 22rpx;}
@@ -390,4 +473,60 @@ page{background: #fff;}
 			top: 215rpx;
 			opacity: 0;
 		}
-	}
+	}
+	
+	
+.index-box{
+	margin: 30rpx;
+}
+.index-box-title{
+	line-height: 45rpx;
+	font-size: 32rpx;
+	font-family: PingFang SC-Bold, PingFang SC;
+	font-weight: bold;
+	color: #302222;
+}
+.pic230{
+	width: 335rpx;
+	height: 230rpx;
+}
+.pic480{
+	width: 335rpx;
+	height: 480rpx;
+}
+
+/* 参与活动 */
+.map-ac{overflow: hidden;margin-top: 30rpx;}
+.map-acs{white-space: nowrap;height: 312rpx;}
+.map-acs .li{display: inline-block;background: #fff;width: 270rpx;height: 260rpx;border-radius: 15rpx;font-size: 32rpx;color: #333;box-sizing: border-box;margin-right: 20rpx;}
+.map-acs .li:last-child{margin-right: 30rpx;}
+.map-acs .li image{width: 270rpx;height: 174rpx;border-radius: 15rpx;}
+.ac-title{
+	line-height: 37rpx;
+	font-size: 24rpx;
+	font-family: PingFang SC-Regular, PingFang SC;
+	font-weight: 400;
+	color: #000;
+	margin-top: 10rpx;
+	white-space: pre-wrap;
+}
+.ac-date{
+	line-height: 25rpx;
+	font-size: 18rpx;
+	font-family: PingFang SC-Regular, PingFang SC;
+	font-weight: 400;
+	color: #999999;
+}
+.ac-type{
+	position: absolute;
+	top: 0;
+	left: 0;
+	height: 41rpx;
+	background: linear-gradient(350deg, #FF7000 0%, #FF9C4E 100%);
+	border-radius: 0rpx 0rpx 20rpx 0rpx;
+	opacity: 1;
+	font-size: 20rpx;
+	color: #FFFFFF;
+	line-height: 41rpx;
+	padding: 0 10rpx;
+}

+ 106 - 144
pages/index/index.vue

@@ -1,6 +1,6 @@
 <template>
 	<view>
-		<view :class="'top-fixed' + (skinNotColor ? ' not-color' : '')" :style="'height: '+ systems.barHeight + 'rpx;'">
+		<!-- <view :class="'top-fixed' + (skinNotColor ? ' not-color' : '')" :style="'height: '+ systems.barHeight + 'rpx;'">
 			<block v-if="about.CONFIG_PROJECT_TITLE_BG || about.CONFIG_PROJECT_TITLE_PIC">
 			<image :src="about.CONFIG_PROJECT_TITLE_BG" class="topbg" v-if="about.CONFIG_PROJECT_TITLE_BG"></image>
 			<view class="top-title" :style="'height: '+ systems.navigationHeight + 'rpx;top:' + systems.ktxStatusHeight + 'rpx;'" v-if="about.CONFIG_PROJECT_TITLE_PIC">
@@ -11,146 +11,93 @@
 				{{about.CONFIG_PROJECT_TITLE?about.CONFIG_PROJECT_TITLE:''}}
 			</view>
 		</view>
-		<view :style="'height: '+ systems.barHeight + 'rpx;'"></view>
+		<view :style="'height: '+ systems.barHeight + 'rpx;'"></view> -->
 		<!-- <view @click="saoma()" style="z-index: 999;position: relative;">扫码</view> -->
+		<view class="bg">
+			<image :src="about.INDEX_PIC"></image>
+		</view>
+		<view class="service-person" :style="'top:' + systems.ktxStatusHeight + 'rpx;'">
+			<view class="ddflex" @click="jumpUrl('/card/index/index')">
+				<image class="service-person-header" src="../../static/pages/images/userimg.png"></image>
+				<view>
+					<view class="service-person-name ddflex">
+						<view>杜平的微页</view>
+						<image src="/static/images/rico2.png" class="rico"></image>
+					</view>
+					<view class="service-person-number">(工号:106547) 欢迎您来到我的微页</view>
+				</view>
+			</view>
+			<view style="margin: 20rpx 30rpx 0;justify-content: space-between;" class="ddflex">
+				<view>
+					<view class="ddflex">
+						<view class="service-person-tag">中国人寿湖南</view>
+						<view class="service-person-tag">高级组经理</view>
+						<view class="service-person-tag">入司10年</view>
+					</view>
+					<view class="service-person-options ddflex">
+						<view class="service-person-option ddflex">
+							<image src="/static/pages/images/dz.png"></image>
+							<view>96%</view>
+						</view>
+						<view class="service-person-option ddflex">
+							<image src="/static/pages/images/cy.png"></image>
+							<view>从业21.6年</view>
+						</view>
+						<view class="service-person-option ddflex">
+							<image src="/static/pages/images/fw.png"></image>
+							<view>为1678人服务</view>
+						</view>
+					</view>
+				</view>
+				<view class="ddflex">
+					<view class="service-person-phone">
+						<image src="../../static/pages/images/dh.png"></image>
+						<view>电话</view>
+					</view>
+					<view class="service-person-phone">
+						<image src="../../static/pages/images/wx.png"></image>
+						<view>微信</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view style="height: 610rpx;"></view>
 		<view v-for="(item, index) in contact" :key="index">
-			<storeOptions
-				v-if="item == 'store_options' || (item == 'sou' && top) || (item == 'type_district' && top_type)"
-				:storeTemplate="storeTemplate"
-				:merchant="merchant"
-				:about="about"
-				:guarantee="guarantee"
-				:sousuoTemplate="sousuoTemplate"
-				:typeDistrictTemplate="typeDistrictTemplate"
-				:url="site"
-				:web="url"
-				:cloud="header.appId == 'ZQ1VK5oc17I387E' ? 'default' : ''"
-			></storeOptions>
-			<!-- 多门店选择模板和搜索模板 -->
-			<popAd
-				v-if="item == 'home_pop_up_ads'"
-				:first="first"
-				:popAdTemplate="popAdTemplate"
-				:isLayerAd="isLayerAd"
-				:popAdList="popAdList"
-				:iscouponAd="iscouponAd"
-				:storeShow="storeShow"
-			></popAd>
 			<!-- 弹窗广告 -->
-			<banner v-if="item == 'ad' && bannerShow" :bannerList="bannerList" :url="site" :web="url" :config="about" :couponList="couponList" :officeList="officeList" :districtTemplate="districtTemplate"></banner>
-			<!-- 走马灯 -->
-			<bargain v-if="item == 'bargain' && bargainShow" :bargainList="bargainList" :url="site" :web="url" :bargainTemplate="bargainTemplate"></bargain>
-			<!-- 砍价 -->
-			<customers v-if="item == 'New_customers' && customersShow" :customersList="customersList" :url="site" :web="url" :customersTemplate="customersTemplate"></customers>
-			<!-- 新客 -->
-			<homecolumn v-if="item == 'homecolumn'" :homecolumnimg="homecolumnimg"></homecolumn>
-			<!-- 首页专区 -->
-			<joingroup v-if="item == 'joingroup' && joingroupShow" :joingroupList="joingroupList" :url="site" :web="url" :joingroupTemplate="joingroupTemplate"></joingroup>
-			<!-- 拼团 -->
-			<group
-				v-if="item == 'group' && activityGroupShow"
-				:activityGroup="activityGroup"
-				:url="site"
-				:web="url"
-				:groupTemplate="groupTemplate"
-				:merchant="merchant"
-				:freshen="freshen"
-			></group>
-			<!-- 社区团购 -->
-			<!-- <pCategoryList
-				v-if="item == 'p_list'"
-				:homeTemplate="homeTemplate"
-				:url="site"
-				:web="url"
-				:about="about"
-				:templateType="templateType"
-				:merchant="merchant"
-				:freshen="freshen"
-				:pCategoryList="pCategoryList"
-				:pCategorShow="pCategorShow"
-			></pCategoryList> -->
-			<block v-if="item == 'p_list'">
-			<block v-for="(categoryItem, idx) in pCategoryList" :key="idx">
-				<pCategoryList 
-					:homeTemplate="homeTemplate"
-					:url="site"
-					:web="url"
-					:about="about"
-					:templateType="templateType"
-					:merchant="merchant"
-					:freshen="freshen"
-					:pCategorShow="categoryItem.pCategorShow"
-					:categoryItem="categoryItem"
-				></pCategoryList>
-			</block>
-			</block>
-			<!-- 分类 -->
-			<recommend
-				v-if="item == 'recommend' && recommendShow"
-				:pageList="pageList"
-				:recommendTemplate="recommendTemplate"
-				:url="site"
-				:web="url"
-				:about="about"
-				:categoryList="categoryList"
-			></recommend>
-			<!-- 推荐 -->
-			<seckill v-if="item == 'seckill' && seckillShow" :seckillList="seckillList" :url="site" :web="url" :seckillTemplate="seckillTemplate"></seckill>
-			<!-- 秒杀 -->
-			<selected v-if="item == 'chosen' && boutiqueShow" :boutiqueList="boutiqueList" :chosenTemplate="chosenTemplate" :url="site" :web="url" :about="about"></selected>
-			<!-- 精选 -->
-			<arrivals
-				v-if="item == 'new_arrivals' && arrivalsShow"
-				:arrivalsList="arrivalsList"
-				:arrivalsTemplate="arrivalsTemplate"
-				:url="site"
-				:web="url"
-				:about="about"
-			></arrivals>
-			<!-- 新品上架 -->
-			<hot v-if="item == 'hot_money' && hotShow" :hotList="hotList" :hotTemplate="hotTemplate" :url="site" :web="url" :about="about"></hot>
-			<!-- 热门爆款 -->
-			<specialTopic v-if="item == 'special'" :specialList="specialList"></specialTopic>
-			<!-- 专题 -->
-			<redEnvelopes
-				v-if="item == 'red_envelopes'"
-				:storeShow="storeShow"
-				:iscouponAd="iscouponAd"
-				:first="first"
-				:couponAd="couponAd"
-				@iscouponAd="hidecouponAd"
-			></redEnvelopes>
-			<!-- 红包 -->
-			<supplier
-				v-if="item == 'supplier_premium' && supplierShow"
-				:supplierTemplate="supplierTemplate"
-				:web="merchant.type == 5 ? web : url"
-				:supplierList="supplierList"
-				:about="about"
-			></supplier>
-			<!-- 供应商优品 -->
+			<view style="position: absolute;top:290rpx;left: 0;right: 0;">
+				<banner v-if="item == 'ad' && bannerShow" :bannerList="bannerList" :url="site" :web="url" :config="about" :couponList="couponList" :officeList="officeList" :districtTemplate="districtTemplate"></banner>
+			</view>
 			<district v-if="item == 'king_kong_district' && districtShow" :url="site" :web="url" :districtTemplate="districtTemplate"></district>
-			<!-- 九宫格 金刚区 -->
-			<suppliers
-				v-if="item == 'sup_recommend' && supRecommendShow"
-				:supRecommendList="supRecommendList"
-				:url="site"
-				:web="url"
-				:supRecommendTemplate="supRecommendTemplate"
-			></suppliers>
-			<!-- 供应商推荐 -->
-			<single
-				v-if="item == 'single_product' && singleShow"
-				:pageList="singleList"
-				:singleTemplate="singleTemplate"
-				:merchant="merchant"
-				:url="site"
-				:web="url"
-				:about="about"
-				:categoryList="categoryList"
-			></single>
-			<!-- 单产品推荐 -->
+			
+		</view>
+		
+		<view class="index-box" style="margin-top: 10rpx;" v-if="hotActivityList.length>0">
+			<view class="index-box-title">热门活动</view>
+			<view class="ddflex" style="margin-top: 20rpx;">
+				<view style="margin-right: 20rpx;">
+					<image class="pic230" :src="hotActivityList[0].pic"></image>
+					<image class="pic230" style="margin-top: 20rpx;" :src="hotActivityList[1].pic"></image>
+				</view>
+				<image class="pic480" :src="hotActivityList[2].pic"></image>
+			</view>
 		</view>
+		
+		<!-- 参与活动 -->
+		<view class="index-box" style="margin-top: 50rpx;" v-if="matchList.length>0">
+			<view class="index-box-title">参与活动</view>
+			<view class="map-ac">
+				<scroll-view scroll-x="true" class="map-acs" >
+					<view class="li" v-for="(item,index) in matchList" :key="index" @click="jumpUrl('/match/activityDetail/activityDetail?id='+item.id)">
+						<view style="position: relative;border-radius: 20rpx;overflow: hidden;">
+							<image :src="item.pic ? item.pic : '/static/images/def_zw1.png'" mode="aspectFill"></image>
+							<view class="ac-type" v-if="item.categoryName">{{ item.categoryName }}</view>
+						</view>
+						<view class="ac-title tovers">{{ item.title }}</view>
+					</view>
+				</scroll-view>
+			</view> 
+		</view>
+		
 		<switchStore v-if="switchStoreShow && contact.length > 0 && merchant.id" :first="first" :merchant="merchant" :storeShow="storeShow" @onFather="click"></switchStore>
 		<!-- <component v-for="(item,index) in contact" ></component> -->
 		<!-- <ad></ad> -->
@@ -178,11 +125,6 @@
 			<view class="lond">加载中···</view>
 		</block>
 		<footer-copyright v-if="logo"></footer-copyright>
-		<!-- 订单购买轮播 -->
-		<view :class="(marqueeOrderItem ? 'roll-notice ' : '') + 'dflex'" v-if="marqueeOrderItem">
-			<image :src="marqueeOrderItem.avatar"></image>
-			<view class="flex">{{ marqueeOrderItem.time }} 购买了{{ marqueeOrderItem.productName }}</view>
-		</view>
 		<contact-button img-url="/static/pages/images/kfico1_1.png" class-name="contact_index" button-text="客服"></contact-button>
 		<view class="guide" @tap="hideGuide" v-if="first"><image src="/static/pages/images/guide.png" mode="widthFix"></image></view>
 		<!-- <view class="placeholder-view" :style="'height:' + (bottomBlankHeight + 115) + 'rpx'"></view> -->
@@ -429,6 +371,8 @@ export default {
 			marqueeOrderItem: '',
 			// isShowTime: false
 			officeList: [],//互动
+			hotActivityList:[],//热门活动
+			matchList:[],//活动列表
 		};
 	},
 
@@ -506,6 +450,8 @@ export default {
 			// console.log("debug1", res);
 			_ts.getMerchant();
 		});
+		this.getHotActivity()
+		this.getMatchList()
 		await this.getHomeTemplateConfig();
 		await this.getCoupon();
 		// await this.getOfficeList();
@@ -601,6 +547,23 @@ export default {
 	onReachBottom() {},
 
 	methods: {
+		jumpUrl(url){
+			if(req.isLogins(false)){
+				uni.navigateTo({
+					url:url
+				})
+			}
+		},
+		getHotActivity(){
+			req.getRequest('/api/banner',{code:'index_hot_activity'},res=>{
+				this.hotActivityList = res
+			})
+		},
+		getMatchList(){
+			req.getRequest('/api/match/list',{},res=>{
+				this.matchList = res
+			})
+		},
 		hidecouponAd(iscouponAd) {
 			this.iscouponAd = false;
 			app.globalData.isredenvelopes = false;
@@ -815,7 +778,6 @@ export default {
 			}
 			//顶部banner
 			let ad = that.homeTemplate.filter(it => it.module == that.templateType.module_ad);
-
 			if (ad && ad.length > 0 && ad[0].state == 0) {
 				if (that.freshen) {
 					await that.getBannerList(ad[0].module, ad[0].contentId);
@@ -1846,10 +1808,10 @@ export default {
 						pid: 0
 					},
 					res => {
-						res = res.map((it, index) => {
+						res =res?res.map((it, index) => {
 							it.index = index;
 							return it;
-						});
+						}):[];
 						let newList = this.group(res, 8);
 						let data = newList; // .filter(it => it.length >= 8)
 

+ 64 - 10
pages/interactive/index.css

@@ -8,7 +8,7 @@ page{background: #fff;}
 .search image{width: 30rpx;height: 30rpx;margin-right: 7rpx;}
 .t-con{padding: 20rpx 0 0 30rpx;overflow: hidden;background: #fff;}
 .item{vertical-align: top;background: #FFFFFF;box-shadow: 0 4rpx 24rpx 1rpx rgba(96,96,96,0.06);border-radius: 20rpx;box-sizing: border-box;position: relative;padding: 30rpx;margin-right: 30rpx;min-height: 300rpx;}
-.item::before{content: '';display: block;height: 137rpx;background: linear-gradient(180deg, #FFD6D8 0%, #FFFFFF 100%);position: absolute;top: 0;left: 0;right: 0;border-radius: 20rpx 20rpx 0 0;z-index: 1;}
+.item::before{content: '';display: block;height: 137rpx;background: linear-gradient(180deg, #DCFFF2 0%, #FFFFFF 100%);position: absolute;top: 0;left: 0;right: 0;border-radius: 20rpx 20rpx 0 0;z-index: 1;}
 .t-con .item:nth-child(2)::before{background: linear-gradient(180deg, #FFE9DC 0%, #FFFFFF 100%);}
 .tits{justify-content: space-between;position: relative;z-index: 2;}
 .hot{width: 199rpx;height: 45rpx;}
@@ -23,7 +23,7 @@ page{background: #fff;}
 .item-list .li:nth-child(3) text.num{color: #11C8B1;}
 .tab{padding: 45rpx 30rpx 20rpx;background: #fff;}
 .tab .li{min-width: 88rpx;height: 48rpx;background:#F7F7F7;border-radius: 24rpx;font-size: 24rpx;color: #000;text-align: center;line-height: 48rpx;margin-right: 30rpx;box-sizing: border-box;padding: 0 20rpx;}
-.tab .li.active{background: #FFEBEB;color: #EB1C24;}
+.tab .li.active{background: #E1FFF4;color: #009B62;}
 .loc-wz{margin: 0 30rpx;}
 .loc-wzs{height: 48rpx;border-radius: 24rpx;border: 1rpx solid #EBEBEB;font-size: 24rpx;color: #666;padding: 0 25rpx;position: relative;}
 .loc-wzs:before,.loc-wzs::after{content: '';display: block;width: 0;height: 0;border: 12rpx solid transparent;border-top: none;position: absolute;left: 35rpx;}
@@ -53,11 +53,60 @@ page{background: #fff;}
 .st-ico{width: 50rpx;height: 47rpx;margin-right: 15rpx;}
 .st-rico{width: 12rpx;height: 20rpx;margin-left: 35rpx;}
 .cates text{display: block;font-size: 20rpx;color: #999;background: #F7F7F7;height: 48rpx;border-radius: 24rpx;padding: 0 20rpx;margin: 30rpx 25rpx 0 0;line-height: 48rpx;}
-.topic{height: 40rpx;background: #FDF1F1;border-radius: 20rpx;font-size: 20rpx;color: #F32224;padding: 0 20rpx 0 10rpx;margin-top: 18rpx;margin-right: 10rpx;}
+.topic{height: 40rpx;background: #E1FFF4;border-radius: 20rpx;font-size: 20rpx;color: #009B62;padding: 0 20rpx 0 10rpx;margin-top: 18rpx;margin-right: 10rpx;}
 .topic image{width: 28rpx;height: 28rpx;margin-right: 7rpx;}
 .loca{margin-top: 20rpx;font-size: 20rpx;color: #666;}
 .loca image{width: 26rpx;height: 31rpx;margin-right: 8rpx;}
 .loca text{margin-right: 10rpx;}
+.step-box{
+	background-color: #f7f8fa;
+	border-radius: 16rpx;
+	padding: 40rpx;
+	margin-top: 30rpx;
+	color: var(--main);
+}
+.step-date{
+	font-size: 64rpx;
+	font-weight: 500;
+}
+.step-label{
+	font-size: 24rpx;
+	font-weight: 500;
+}
+.step-pic{
+	width: 150rpx;
+	height: 150rpx;
+	background: #E2E2E2;
+	border-radius: 16rpx 16rpx 16rpx 16rpx;
+	opacity: 1;
+	margin-right: 20rpx;
+}
+.step-title{
+	height: 74rpx;
+	line-height: 37rpx;
+	font-size: 26rpx;
+	font-family: PingFang SC-Regular, PingFang SC;
+	font-weight: 400;
+	color: #1A1F30;
+}
+.step-price{
+	line-height: 33rpx;
+	font-size: 24rpx;
+	font-family: PingFang SC-Medium, PingFang SC;
+	font-weight: 500;
+	color: #FF7000;
+}
+.step-btn{
+	width: 94rpx;
+	height: 46rpx;
+	line-height: 46rpx;
+	background: var(--main);
+	border-radius: 23rpx 23rpx 23rpx 23rpx;
+	opacity: 1;
+	text-align: center;
+	font-size: 28rpx;
+	color: #FFFFFF;
+}
 .product{height: 168rpx;margin-top: 30rpx;overflow: hidden;}
 .pro-view{height: 168rpx;padding-bottom: 20rpx;white-space: nowrap;}
 .pro-view .lis{display: inline-block;width: 554rpx;height: 168rpx;background: #F7F8FA;border-radius: 16rpx;margin-right: 20rpx;padding: 16rpx;box-sizing: border-box;}
@@ -77,12 +126,12 @@ page{background: #fff;}
 .vote-box{margin-top: 50rpx;}
 .vote-box.ends{background: #f8f8f8;margin-top: 30rpx;padding: 20rpx;}
 .vote-tit{font-size: 28rpx;color: #000;}
-.vote-list .lis{height: 74rpx;background: #F9FAFC;border: 1rpx solid #EBEBEB;border-radius: 8rpx;font-size: 30rpx;color: #EB1C24;text-align: center;line-height: 74rpx;margin-top: 20rpx;padding: 0 28rpx;position: relative;overflow: hidden;}
+.vote-list .lis{height: 74rpx;background: #F9FAFC;border: 1rpx solid #EBEBEB;border-radius: 8rpx;font-size: 30rpx;color: var(--main);text-align: center;line-height: 74rpx;margin-top: 20rpx;padding: 0 28rpx;position: relative;overflow: hidden;}
 .end .lis{text-align: left;color: #9B9B9B;}
 .end .lis view{position: relative;z-index: 2;}
 .end .lis view.percent{position: absolute;top: 0;bottom: 0;left: 0;background: #F0F0F0;z-index: 0;}
-.end .lis.active{color: #EB1C24;}
-.end .lis.active view.percent{background: #FFEBEB;}
+.end .lis.active{color: var(--main);}
+.end .lis.active view.percent{background: #E1FFF4;}
 .vote-can{font-size: 22rpx;color: #999;margin-top: 15rpx;}
 .vote-can text{margin-right: 15rpx;}
 .link{height: 150rpx;background: #F8F8F8;border-radius: 16rpx;padding: 24rpx;font-size: 28rpx;color: #333;box-sizing: border-box;margin-top: 30rpx;}
@@ -107,8 +156,8 @@ page{background: #fff;}
 .edit image{width: 100%;height: 100%;}
 
 /* 团队 */
-.m-team{background: #FFF6F6;margin: 20rpx 30rpx 0;border-radius: 20rpx;padding-bottom: 30rpx;}
-.m-tits{font-size: 28rpx;color: #EB1C24;font-weight: bold;padding: 25rpx 30rpx;}
+.m-team{background: #F8F8F8;margin: 20rpx 30rpx 0;border-radius: 20rpx;padding-bottom: 30rpx;}
+.m-tits{font-size: 28rpx;color: var(--main);font-weight: bold;padding: 25rpx 30rpx;}
 .m-nums{font-size: 24rpx;color: #999;font-weight: normal;}
 .m-nums image{width: 16rpx;height: 27rpx;margin-left: 15rpx;}
 .map-team{height: 122rpx;overflow: hidden;}
@@ -119,7 +168,7 @@ page{background: #fff;}
 .map-teams .li .ddflex{height: 100%;}
 .map-teams .li image{width: 76rpx;height: 76rpx;border-radius: 15rpx;margin-right: 20rpx;}
 .map-teams .li text{display: block;font-size: 24rpx;color: #999;margin-top: 5rpx;}
-.li-btn{width: 107rpx;height: 45rpx;border-radius: 37rpx;border: 2rpx solid rgba(235, 28, 36, .5);font-size: 24rpx;color: #EB1C24;text-align: center;line-height: 45rpx;margin-left: 10rpx;}
+.li-btn{width: 107rpx;height: 45rpx;border-radius: 37rpx;border: 2rpx solid var(--main);font-size: 24rpx;color: var(--main);text-align: center;line-height: 45rpx;margin-left: 10rpx;}
 .sta{font-size: 24rpx;color: #e6a23c;}
 .fail{color: #f56c6c;}
 .team-list{padding: 0 30rpx 50rpx;}
@@ -128,4 +177,9 @@ page{background: #fff;}
 .team-tit{font-size: 32rpx;color: #333;}
 .team-sta{margin-top: 8rpx;font-size: 24rpx;color: #999;}
 .team-sta text{margin-right: 20rpx;}
-.join-btn{width: 133rpx;height: 60rpx;border-radius: 37rpx;border: 2rpx solid rgba(235, 28, 36, .5);font-size: 28rpx;color: #EB1C24;text-align: center;line-height: 60rpx;margin-left: 20rpx;}
+.join-btn{width: 133rpx;height: 60rpx;border-radius: 37rpx;border: 2rpx solid rgba(235, 28, 36, .5);font-size: 28rpx;color: var(--main);text-align: center;line-height: 60rpx;margin-left: 20rpx;}
+
+
+.guanfang{
+	width: 65rpx;border-radius: 15rpx;border: 2rpx solid #E2E2E2;line-height: 29rpx;font-size: 20rpx;color: #999999;text-align: center;margin-left: 10rpx;font-weight: 400;;
+}

+ 168 - 43
pages/interactive/index.vue

@@ -4,7 +4,7 @@
 			<view class="top-tab ddflex fflex">
 				<view :class="'li ' + (currentTab == 1 ? 'active' : '')" @click="swiTab(1)">话题</view>
 				<view :class="'li ' + (currentTab == 2 ? 'active' : '')" @click="swiTab(2)">投票</view>
-				<view :class="'li ' + (currentTab == 3 ? 'active' : '')" @click="swiTab(3)">小区</view>
+				<view :class="'li ' + (currentTab == 3 ? 'active' : '')" @click="swiTab(3)">团队</view>
 			</view>
 			<view class="search ddflex" @click="jumpUrl('/office/search/index?currentTab='+currentTab)">
 				<image src="../../static/images/ssico.png"></image>
@@ -29,7 +29,47 @@
 				</view>
 			</view>
 		</view>
-		<view class="tab ddflex">
+		
+		<view v-if="cmsList.length>0">
+			<view class="ddflex" style="padding:0rpx 30rpx;font-size: 32rpx;color: #1A1F30;font-weight: bold;justify-content: space-between;"
+				@click="jumpUrl('/topic/contentList/contentList?title=官方动态')">
+				<view>官方动态</view>
+				<image style="width: 14rpx;height: 24rpx;" src="../../static/images/n_rico.png"></image>
+			</view>
+			<view class="list">
+				<view class="li" v-for="(item, index) in cmsList" :key="index" @click="jumpUrl('/topic/content/content?id=' + item.id+'&title=官方动态')">
+					<view class="user ddflex">
+						<image :src="config.CONFIG_PROJECT_LOGO" style="border:1px solid #eeeeee;padding: 5rpx;" mode="aspectFill" class="userimg"></image>
+						<view class="fflex">
+							<view class="namea ddflex">
+								<view class="name fflex ddflex">
+									<!-- {{ config.CONFIG_NAME }} -->
+									社区管理员
+									<view class="guanfang">官方</view>
+								</view>
+								<view class="time">{{ getDateTimeStamp(item.createDate) }}</view>
+							</view>
+							<view class="area">湖南·长沙</view>
+						</view>
+					</view>
+					<view class="ddflex step-box" style="justify-content: space-between;">
+						<image class="step-pic" style="width: 199rpx;height: 150rpx;" :src="item.pic" mode="aspectFill"></image>
+						<view class="fflex">
+							<view class="step-title tovers" style="font-size: 30rpx;line-height: 40rpx;">{{item.title}}</view>
+							<view class="opt ddflex" style="justify-content: space-between;">
+								<view class="fflex">{{fomatNumbers(item.browse)}}次浏览</view>
+								<view class="ddflex" @click.stop="addThumbs(item,index)">
+									<image :src="'../../static/images/' + (item.isThumbs? 'like_h' : 'like') + '.png'"></image>
+									{{fomatNumbers(item.thumbsNumber)}}
+								</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		
+		<view class="tab ddflex" style="border-top: 20rpx solid #f7f7f7;">
 			<view :class="'li ' + (pType == 11 ? 'active' : '')" @click="swiPType(11)">附近</view>
 			<!-- <view :class="'li ' + (pType == 1 ? 'active' : '')" @click="swiPType(1)">综合</view> -->
 			<!-- <view :class="'li ' + (cateIndex == index ? 'active' : '')" @click="swiTree(item,index)" v-for="(item,index) in category" :key="index">{{item.name}}</view> -->
@@ -49,7 +89,10 @@
 						<image :src="item.userDTO.avatar" mode="aspectFill" class="userimg"></image>
 						<view class="fflex">
 							<view class="namea ddflex">
-								<view class="name fflex ddflex">{{ item.userDTO.nickName }}<image src="../../static/images/vip_tag.png" class="vip-tag" v-if="item.userDTO.levelGrade > 0"></image></view>
+								<view class="name fflex ddflex">{{ item.userDTO.nickName }}
+									<!-- <image src="../../static/images/vip_tag.png" class="vip-tag" v-if="item.userDTO.levelGrade > 0"></image> -->
+									<image v-if="item.userDTO.isOpenWeRunData" style="width:15rpx;height:20rpx;margin-left: 10rpx;" src="../../static/images/yd.png"></image>
+								</view>
 								<view class="time">{{ item.time }}</view>
 							</view>
 							<view class="area" v-if="item.userDTO.cityName">{{ item.userDTO.provinceName }} {{ item.userDTO.cityName }}</view>
@@ -101,36 +144,65 @@
 						</block>
 						<view class="vote-can" v-if="item.qyPoll.isEnd"><text>{{item.qyPoll.voteCount}}人参与</text>投票已结束</view>
 					</view>
-					<view class="product" v-if="item.products && item.products.length > 0">
-						<view scroll-x="true" class="pro-view pro-view1" v-if="item.products.length == 1">
-							<view class="lis" v-for="(it, idx) in item.products" :key="idx" @click="toProductDetail(it)">
-								<view class="ddflex">
-									<image :src="it.pic + '?x-oss-process=style/w375'" mode="aspectFill" class="pic"></image>
-									<view class="fflex">
-										<view class="title tover">{{ it.title }}</view>
-										<view class="opts ddflex">
-											<view class="money"><text>¥</text>{{ it.salePrice }}</view>
-											<view class="pro-btn"><image src="../../static/pages/images/n_cart.png"></image></view>
-										</view>
-									</view>
+					<block v-if="item.type==10||item.type==11">
+						<view v-if="item.type==10" class="ddflex step-box" style="justify-content: space-between;" @click="jumpUrl('/exercise/record/record?userId=' + item.userId)">
+							<view>
+								<view class="step-date">{{item.wxRun.step}}</view>
+								<view class="step-label">步数</view>
+							</view>
+							<view>
+								<view class="step-date">{{item.wxRun.index}}</view>
+								<view class="step-label" style="text-align: right;">名次</view>
+							</view>
+						</view>
+						<view v-if="item.type==11" class="ddflex step-box" style="justify-content: space-between;" @click="jumpUrl('/match/activityDetail/activityDetail?id=' + item.matchContent.id)">
+							<image class="step-pic" :src="item.matchContent.pic" mode="aspectFill"></image>
+							<view class="fflex">
+								<view class="step-title tovers">{{item.matchContent.title}}</view>
+								<view class="ddflex" style="justify-content: space-between;margin-top: 10rpx;">
+									<view class="step-price">¥{{item.matchContent.defaultEnlistAmount}}</view>
+									<view  class="step-btn">查看</view>
 								</view>
 							</view>
 						</view>
-						<scroll-view scroll-x="true" class="pro-view" v-else>
-							<view class="lis" v-for="(it, idx) in item.products" :key="idx" @click="toProductDetail(it)">
-								<view class="ddflex">
-									<image :src="it.pic + '?x-oss-process=style/w375'" mode="aspectFill" class="pic"></image>
-									<view class="fflex">
-										<view class="title tover">{{ it.title }}</view>
-										<view class="opts ddflex">
-											<view class="money"><text>¥</text>{{ it.salePrice }}</view>
-											<view class="pro-btn"><image src="../../static/pages/images/n_cart.png"></image></view>
+					</block>
+					<view v-if="item.userGroupId" class="ddflex step-box" style="padding: 25rpx 21rpx;" @click="jumpUrl('/office/team/index?id=' + item.userGroupId)">
+						<image style="width: 24rpx;height: 24rpx;margin-right: 13rpx;" src="../../static/images/link.png"></image>
+						<view style="font-weight: 500;color: #999999;">Team:</view>
+						<view>{{item.userGroupTitle}}</view>
+					</view>
+					<block v-else>
+						<view class="product" v-if="item.products && item.products.length > 0">
+							<view scroll-x="true" class="pro-view pro-view1" v-if="item.products.length == 1">
+								<view class="lis" v-for="(it, idx) in item.products" :key="idx" @click="toProductDetail(it)">
+									<view class="ddflex">
+										<image :src="it.pic + '?x-oss-process=style/w375'" mode="aspectFill" class="pic"></image>
+										<view class="fflex">
+											<view class="title tover">{{ it.title }}</view>
+											<view class="opts ddflex">
+												<view class="money"><text>¥</text>{{ it.salePrice }}</view>
+												<view class="pro-btn"><image src="../../static/pages/images/n_cart.png"></image></view>
+											</view>
 										</view>
 									</view>
 								</view>
 							</view>
-						</scroll-view>
-					</view>
+							<scroll-view scroll-x="true" class="pro-view" v-else>
+								<view class="lis" v-for="(it, idx) in item.products" :key="idx" @click="toProductDetail(it)">
+									<view class="ddflex">
+										<image :src="it.pic + '?x-oss-process=style/w375'" mode="aspectFill" class="pic"></image>
+										<view class="fflex">
+											<view class="title tover">{{ it.title }}</view>
+											<view class="opts ddflex">
+												<view class="money"><text>¥</text>{{ it.salePrice }}</view>
+												<view class="pro-btn"><image src="../../static/pages/images/n_cart.png"></image></view>
+											</view>
+										</view>
+									</view>
+								</view>
+							</scroll-view>
+						</view>
+					</block>
 					<view class="opt ddflex" v-if="!item.source">
 						<view class="fflex" @click="jumpUrlDetail(item)">{{fomatNumbers(item.count.browseCount)}}次浏览</view>
 						<view class="ddflex" @click="submitFabulous(2, item.id, index)">
@@ -157,8 +229,8 @@
 		<block v-if="currentTab == 3">
 		<view class="m-team" v-if="userTeamList.length>0">
 			<view class="m-tits ddflex" @click="jumpUrl('/office/myTeam/index')">
-				<view class="fflex">我的小区</view>
-				<view class="m-nums ddflex">{{userTeamTotal}}个小区<image src="../../static/pages/images/more.png"></image></view>
+				<view class="fflex">我的团队</view>
+				<view class="m-nums ddflex">{{userTeamTotal}}个团队<image src="../../static/pages/images/more.png"></image></view>
 			</view>
 			<view class="map-team">
 				<scroll-view scroll-x="true" class="map-teams">
@@ -177,16 +249,28 @@
 			</view>
 		</view>
 		<view class="team-list" v-if="teamList.length>0">
-			<view class="li ddflex" v-for="(item,index) in teamList" :key="index" @click="jumpUrl('/office/team/index?id='+item.id)">
-				<image :src="item.url?item.url:picUrlss+'office_images/team_default.png'" mode="aspectFill" class="team-img"></image>
-				<view class="fflex">
-					<view class="team-tit tover">{{item.title}}</view>
-					<view class="team-sta">
-						<text>{{item.memberNum}}成员</text>
-						<text>{{item.momentsNum}}帖子</text>
+			<view v-for="(item,index) in teamList" :key="index">
+				<view class="li ddflex" @click="jumpUrl('/office/team/index?id='+item.id)">
+					<image :src="item.url?item.url:picUrlss+'office_images/team_default.png'" mode="aspectFill" class="team-img"></image>
+					<view class="fflex">
+						<view class="ddflex">
+							<view class="team-tit tover" style="max-width: calc(100% - 80rpx);">{{item.title}}</view>
+							<view v-if="item.relationMatch" style="margin-left: 10rpx; width: 60rpx;line-height: 29rpx;font-size: 20rpx;color: #FFFFFF;background: linear-gradient(56deg, #FF7000 0%, #FF9100 100%);border-radius: 5rpx;text-align: center;">赛事</view>
+							<view v-else style="margin-left: 10rpx;width: 60rpx;line-height: 29rpx;font-size: 20rpx;color: #FFFFFF;background: linear-gradient(48deg, #5190FF 0%, #78A9FF 100%);border-radius: 5rpx;text-align: center;">社区</view>
+						</view>
+						<view class="team-sta">
+							<text>{{item.memberNum}}成员</text>
+							<text>{{item.momentsNum}}帖子</text>
+						</view>
 					</view>
+					<view class="join-btn" @click.stop="joinTeam(item,index)">加入</view>
+				</view>
+				<view v-if="item.relationMatch" class="ddflex"
+					style="background: #F7F8FC;border-radius: 10rpx;padding: 18rpx 20rpx;margin-top: 20rpx;margin-left: 96rpx;color: #999;font-size: 24rpx;"
+					@click="jumpUrl('/match/activityDetail/activityDetail?id='+item.relationMatch.id)">
+					来自
+					<view class="fflex tover" style="color: var(--main);">{{item.relationMatch.title}}</view>
 				</view>
-				<view class="join-btn" @click.stop="joinTeam(item,index)">加入</view>
 			</view>
 		</view>
 		<view class="nodata" v-else>
@@ -194,15 +278,15 @@
 			<text>暂无团队</text>
 		</view>
 		</block>
-		<view class="create" @click="showBtn" v-if="config.is_show_create_btn == 1"><image src="../../static/images/create.png"></image>发布</view>
+		<view class="create" @click="showBtn" v-if="config.is_show_create_btn == 1"><image style="display: block;" src="/static/images/create.png"></image>发布</view>
 		<view class="ceng" v-if="isShowbtn" @click="hideBtn"></view><!-- @click="createJump('/office/news/news?newsType=1')" -->
 		<view class="side ddflex" v-if="isShowbtn">
 			<view class="li" @click="createJump('/office/createTeam/index')">
-				<image src="../../static/images/ll_dt.png"></image>
+				<image src="/static/images/ll_dt.png"></image>
 				<view>创建团队</view>
 			</view>
 			<view class="li" @click="createJump('/office/news/news?newsType=1')">
-				<image src="../../static/images/ll_cz.png"></image>
+				<image src="/static/images/ll_cz.png"></image>
 				<view>发帖</view>
 			</view>
 		</view>
@@ -260,11 +344,11 @@
 				userTeamList: [],
 				userTeamTotal: 0,
 				isFirst: true,
-				isRefresh: false
+				isRefresh: false,
+				cmsList:[],//官方动态
 			}
 		},
 		onLoad(options) {
-			uni.hideTabBar();
 			if(req.getStorage('officeList')){
 				this.officeList = JSON.parse(req.getStorage('officeList'));
 				this.isShowPage = true;
@@ -300,13 +384,14 @@
 					});
 				});
 			}
-			req.silenceLogin(options.userId, '');
+			// req.silenceLogin(options.userId, '');
 			// this.getHotPoll()
 		},
 		onShow() {
 			// this.getCategory();
 			this.getConfig();
 			this.getHotTopic();
+			this.getCmsList();
 			if(this.currentTab > 2){
 				if(this.isRefresh){
 					this.teamForm.page = 1;
@@ -410,6 +495,7 @@
 				})
 			},
 			jumpUrlTeam(item,url){
+				console.log('url',url)
 				if(item.auditStatus == 1) {
 					this.jumpUrl(url)
 				}else{
@@ -605,6 +691,19 @@
 					}
 				});
 			},
+			//文章点赞
+			addThumbs(item,index) {
+			    req.saveBehavior(
+			        {
+						behavior:3,
+			            bindId: item.id,
+			            type: 4
+			        },
+			        (res)=> {
+			            this.getCmsList()
+			        }
+			    );
+			},
 	
 			//提交投票
 			submitPoll(item, pIndex, pollIndex) {
@@ -675,12 +774,38 @@
 					})
 					return false;
 				}
+				if(item.relationMatch){
+					uni.navigateTo({
+						url: '/match/activityDetail/activityDetail?id='+item.relationMatch.id
+					})
+					return false;
+				}
 				req.postRequest(api.user_team_follow,{userGroupId: item.id},data=>{
 					req.msg('加入团队成功');
 					this.teamList.splice(index,1)
 					this.getUserTeam();
 				})
-			}
+			},
+			// 获取官方动态
+			getCmsList() {
+			    var _this = this;
+			    req.getRequest(
+			        '/api/content/list',
+			        {
+			            page: 1,
+			            limit: 1,
+						code:'gfdt'
+			        },
+			        function (res) {
+			            _this.setData({
+			                cmsList: res
+			            });
+			        }
+			    );
+			},
+			getDateTimeStamp(dateStr){
+			 return util.getDateDiff(Date.parse(dateStr.replace(/-/gi,"/")));
+			},
 		},
 		created() {
 			const systemInfo = uni.getSystemInfoSync();

+ 20 - 0
pages/matchList/index.css

@@ -0,0 +1,20 @@
+/* activity.css */
+page{background: #fff;}
+.act-list{padding: 0 30rpx;}
+.act-list .li{margin-bottom: 10rpx;padding: 35rpx 0;border-bottom: 1rpx solid #E5E5E5;}
+.act-list .li:last-child{border-bottom: none;}
+.imgbox{width: 100%;height: 316rpx;border-radius: 16rpx;overflow: hidden;position: relative;margin-right: 25rpx;}
+.imgbox image{width: 100%;height: 100%;border-radius: 16rpx;}
+.infos{padding: 20rpx 22rpx 0;}
+.tag{display: block;height: 30rpx;border-radius: 6rpx 15rpx 15rpx 0;font-size: 20rpx;color: #fff;padding: 0 15rpx;position: absolute;top: 0;left: 0;background: #31a8fa;line-height: 30rpx;}
+.stas{align-items: flex-end;}
+.tag-box{font-size: 24rpx;color: #717580;line-height: 33rpx;}
+.tag-box text{margin-right: 15rpx;}
+.act-tit{font-size: 30rpx;color: #1A1F30;line-height: 42rpx;margin-bottom: 15rpx;font-weight: bold;}
+.area{font-size: 24rpx;color: #999;margin-top: 20rpx;}
+.area text{margin-right: 10rpx;}
+.money{font-size: 30rpx;color: var(--main);}
+.money text{font-size: 18rpx;}
+.act-btn{width: 172rpx;height: 64rpx;background: #27D699;border-radius: 32rpx;font-size: 28rpx;color: #fff;text-align: center;line-height: 64rpx;margin-bottom: 15rpx;margin-left: 30rpx;}
+.act-btn.end{background: #e3e3e3;color: #999;}
+.mede{position: fixed;left: 50%;transform: translateX(-50%);bottom: 30rpx;width: 328rpx;height: 80rpx;background: var(--btn);border-radius: 40rpx;font-size: 30rpx;color: #fff;text-align: center;line-height: 80rpx;}

+ 141 - 0
pages/matchList/index.vue

@@ -0,0 +1,141 @@
+<template>
+	<view v-if="isShow">
+		<view class="act-list" v-if="pageList && pageList.length > 0">
+			<view class="li" v-for="(item, index) in pageList" :key="index" @click="toActivity(item)">
+				<view class="imgbox"><image :src="item.pic" mode="aspectFill"></image></view>
+				<view class="infos fflex">
+					<view class="act-tit tovers">{{ item.title }}</view>
+					<view class="stas ddflex">
+						<view class="fflex">
+							<view class="tag-box tovers">{{ item.brief }}</view>
+							<view class="area">
+								<block v-if="item.state < 4">报名截止时间:{{ item.enlistEndTime }}</block>
+								<block v-else>活动结束时间:{{ item.endTime }}</block>
+							</view>
+							<!-- <view class="money" v-if="userinfovip.levelGrade>0&& !userinfovip.end"><text>¥</text>{{item.vipMoney}}</view>
+							<view class="money" v-else><text>¥</text>{{item.money}}</view> -->
+						</view>
+						<view class="act-btn" @click.stop="jumpUrl('/match/activity/activity')" v-if="item.isEnlist">我已报名</view>
+						<block v-else>
+							<view class="act-btn" @click.stop="toActivity(item)" v-if="item.state == 2">立即报名</view>
+							<view class="act-btn" @click.stop="toActivity(item)" v-if="item.state == 3">报名结束</view>
+							<view class="act-btn" @click.stop="toActivity(item)" v-if="item.state == 4">活动中</view>
+							<view class="act-btn end" @click.stop="toActivity(item)" v-if="item.state == 5">活动结束</view>
+						</block>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="nodata" v-else>
+			<image :src="picUrlss + 'empty_dd.png'"></image>
+			<text>暂无记录~</text>
+		</view>
+		
+		<foot channel="match" :isUpdate="isUpdate"></foot>
+	</view>
+</template>
+
+<script>
+const req = require('../../utils/request.js');
+const api = require('../../utils/api.js');
+const util = require('../../utils/util.js');
+const app = getApp();
+import foot from '../../components/nav-bar/index';
+export default {
+	components: { foot },
+	data() {
+		return {
+			picUrlss: req.public.picUrls,
+			isShow: false,
+			pageList: [],
+			isLoad: true,
+			form: {
+				page: 1,
+				limit: 10
+			},
+			isLogin: false,
+			userinfovip: {}
+		};
+	},
+	onLoad() {},
+	onShow() {
+		this.isLogin = req.isAuth();
+		this.getPageList(true);
+		if (this.isLogin) {
+			this.getuserVip();
+		}
+	},
+	onReachBottom: function() {
+		this.form.page++;
+		this.getPageList(false);
+	},
+	onShareAppMessage() {
+		
+	},
+	onShareTimeline() {
+		
+	},
+
+	methods: {
+		jumpUrl(url) {
+			if (!req.isLogins(true)) {
+				return;
+			}
+			uni.navigateTo({
+				url: url
+			});
+		},
+
+		getPageList(isShow) {
+			if (!this.isLoad) return false;
+			this.isLoad = false;
+			let form = this.form;
+			uni.showLoading();
+			req.getRequest(
+				'/api/match/list',
+				form,
+				res => {
+					this.isShow = true;
+					if (res && res.length == 10) {
+						this.isLoad = true;
+					}
+					if (this.form.page > 1) {
+						res = this.pageList.concat(res);
+					}
+					this.pageList = res;
+					uni.hideLoading();
+				},
+				isShow
+			);
+		},
+		getuserVip() {
+			req.getRequest('/api/user/levelDetails', {}, data => {
+				let expireTime = Array;
+				if (data.expireTime) {
+					expireTime = data.expireTime.split(' ');
+					data.expireTime = data.expireTime.replace(/-/g, '/');
+				} // 解决苹果不兼容---日期
+				let nowTime = new Date().getTime();
+				let endTime = new Date(data.expireTime).getTime();
+				let times = parseInt((endTime - nowTime) / 1000); // var expireTime= new Date(data.expireTime)
+				// console.log(times, nowTime, endTime, data.expireTime);
+				this.userinfovip = data;
+				if (times <= 0) {
+					this.userinfovip.end = true;
+				} else {
+					this.userinfovip.end = false;
+				}
+			});
+		},
+		toActivity(item) {
+			uni.navigateTo({
+				url: '/match/activityDetail/activityDetail?id=' + item.id
+			});
+		}
+	}
+};
+</script>
+
+<style>
+@import './index.css';
+</style>

+ 129 - 8
pages/user/user.css

@@ -1,9 +1,11 @@
 /* pages/user/user.wxss */
 page {background: #F0F0F0;}
-.mine {/* height: 388rpx; */position: relative;background: var(--mina) !important;}
+.mine {/* height: 388rpx; */position: relative;background: linear-gradient(180deg, #64C991 0%, #63C477 100%);}
 .wdbg {display: block;width: 100%;height: 100%;position: absolute;top: 0;left: 0;z-index: 1;}
 .minec {position: relative;z-index: 2;display: flex;display: -webkit-flex;align-items: center;padding: 20rpx 0 0 30rpx;}
+.minec-img{position: relative;width: 130rpx;margin-right: 25rpx;}
 .user {display: block;width: 120rpx;height: 120rpx;border: 4rpx solid #fff;border-radius: 50%;margin-right: 30rpx;background: #fff;}
+.rz-sta{width: 82rpx;height: 35rpx;background: linear-gradient(270deg, #FF7F34 0%, #FF5126 100%);border-radius: 12rpx 0 12rpx 0;font-size: 20rpx;color: #fff;text-align: center;line-height: 32rpx;position: absolute;right: -20rpx;top: -5rpx;}
 .mines {flex: 1;-webkit-flex: 1;margin-right: 20rpx;}
 .mines view {font-size: 36rpx;color: #fff;}
 .common-vip{width: 142rpx;height: 38rpx;margin-left: 15rpx;}
@@ -13,17 +15,44 @@ page {background: #F0F0F0;}
 .datas {margin: 0 30rpx;position: relative;z-index: 3;}
 .datas .li {text-align: center;font-size: 26rpx;color: #fff;width: 33.33%;position: relative;padding: 30rpx 0;}
 .datas .li text {display: block;font-size: 36rpx;font-weight: bold;margin-bottom: 10rpx;}
+.auth-img{
+	width: 36rpx;height: 36rpx;margin-left: 10rpx;
+}
 .order {margin: 20rpx 30rpx 20rpx;border-radius: 20rpx;background: #fff;position: relative;z-index: 3;}
-.tits {font-size: 24rpx;color: #999;align-items: center;height: 80rpx;line-height: 80rpx;position: relative;z-index: 2;padding: 0 30rpx;}
-.tits view {font-size: 28rpx;color: #333;font-weight: bold;}
+.order-item{
+	line-height: 40rpx;
+	font-size: 28rpx;
+	font-family: PingFang SC-Medium, PingFang SC;
+	font-weight: 500;
+	color: #333333;
+}
+.order-item image{
+	width: 64rpx;
+	height: 64rpx;
+	background: linear-gradient(360deg, #FF985A 0%, #FF5700 100%);
+	opacity: 1;
+	border-radius: 100%;
+	margin-right: 20rpx;
+}
+.order-line{
+	width: 1rpx;
+	height: 30rpx;
+	opacity: 1;
+	background-color: #DEDEDE;
+}
+.tits {font-size: 24rpx;color: #999;align-items: center;height: 47rpx;line-height: 47rpx;position: relative;z-index: 2;padding: 0 30rpx;padding-top: 20rpx;}
+.tits view {font-size: 32rpx;color: #333;font-weight: bold;}
+.role{font-size: 24rpx;color: #333;align-items: center;height: 47rpx;line-height: 47rpx;position: relative;z-index: 2;padding: 10rpx 0rpx;justify-content: space-between;border-bottom: 1px solid #E9E9E9;}
+.role:last-child{border: none;}
+.role_icon{width: 44rpx;height: 44rpx;margin-right: 20rpx;}
 .rico {display: block;width: 14rpx;height: 21rpx;margin-left: 16rpx;}
 .list1 {display: flex;display: -webkit-flex;}
 .list1 .li {width: 20%;text-align: center;font-size: 26rpx;color: #333;padding: 32rpx 0;position: relative;box-sizing: border-box;}
 .list1 .li image {display: block;width: 62rpx;height: 54rpx;margin: 0 auto 20rpx;}
 .new {display: block;width: 28rpx;height: 28rpx;background: #ED462F;border-radius: 50%;font-size: 20rpx;color: #fff;text-align: center;line-height: 28rpx;position: absolute;top: 29rpx;right: 30%;}
 .list2 {flex-wrap: wrap;padding-bottom: 25rpx;}
-.list2 .li {width: 25% !important;text-align: center;font-size: 26rpx !important;color: #666;padding: 30rpx 0 !important;position: relative;}
-.list2 .li image {width: 74rpx;height: 74rpx;margin: 0 auto 8rpx;}
+.list2 .li {width: 25% !important;text-align: center;font-size: 26rpx !important;color: #666;padding: 30rpx 0 !important;}
+.list2 .li image {width: 40rpx;height: 40rpx;margin: 0 auto 8rpx;}
 .list2 .li button{font-size: 26rpx;color: #666;}
 .tuig {padding-bottom: 25rpx;}
 .fenxiao {width: 630rpx;height: 107rpx;margin: 0 auto;}
@@ -86,6 +115,98 @@ page {background: #F0F0F0;}
 .upgrade .li:last-child .vip-info::before{right: 45rpx;left: auto;transform: inherit;}
 
 
-.news{position: relative;}
-.news image{width: 40rpx;height: 40rpx;}
-.list2 .li .new{top: 26rpx;right: 20%;border: 1rpx solid #fff;}
+.box {background: #fff;border-radius: 24rpx;padding: 0 30rpx;margin: 0 30rpx;}
+.mlist {margin-top: 30rpx;}
+.mlist .li {font-size: 30rpx;color: #000;border-bottom: 1rpx solid #E9E9E9;padding: 25rpx 0 !important;text-align: left;}
+.mlist .li:last-child {border-bottom: none;}
+.mlist .li text{display: block;font-size: 24rpx;color: var(--main);margin-right: 10rpx;}
+.mlist .li button{font-size: 30rpx;color: #000;}
+.mlist .li button image{width: 49rpx;height: 49rpx;margin-right: 25rpx;}
+.mlistBtn{font-size: 30rpx;text-align: left !important;}
+.mico {width: 49rpx;height: 49rpx;margin-right: 25rpx;}
+
+
+.service-person{
+	padding: 43rpx 0 0rpx;
+}
+.service-person-header{
+	width: 116rpx;
+	height: 116rpx;
+	margin: 0 30rpx;
+}
+.service-person-name{
+	font-size: 32rpx;
+	font-weight: bold;
+	color: #333333;
+	line-height: 45rpx;
+}
+.service-person-number{
+	font-size: 20rpx;
+	font-weight: 500;
+	color: #333333;
+	line-height: 28rpx;
+}
+.service-person-options{
+	font-size: 20rpx;
+	font-family: PingFang SC-Regular, PingFang SC;
+	font-weight: 400;
+	color: #333333;
+	line-height: 28rpx;
+	margin-top: 14rpx;
+}
+.service-person-option{
+	margin-right: 17rpx;
+}
+.service-person-option image{
+	width: 28rpx;
+	height: 28rpx;
+	margin-right: 3rpx;
+}
+.service-person-phone{
+	margin: 37rpx 30rpx 0;
+	border-top: 2rpx solid #F1F1F1;
+	padding: 38rpx 0;
+	font-size: 24rpx;
+}
+.service-person-phone image{
+	width: 28rpx;
+	height: 28rpx;
+	margin-right: 10rpx;
+}
+
+
+
+.lt{
+	width: 92rpx;
+	height: 92rpx;
+	line-height: 92rpx;
+	background: #FFFFFF;
+	box-shadow: 0rpx 5rpx 15rpx 1rpx rgba(0,0,0,0.15);
+	opacity: 1;
+	position: fixed;
+	bottom:200rpx;
+	right: 30rpx;
+	border-radius: 100%;
+	z-index: 5;
+}
+.lt image{
+	width: 48rpx;
+	height: 48rpx;
+	margin: auto;
+}
+.lt-num{
+	width: 38rpx;
+	height: 38rpx;
+	background: #FF5700;
+	opacity: 1;
+	border: 2rpx solid #FFFFFF;
+	position: absolute;
+	top: -8rpx;
+	right: -8rpx;
+	border-radius: 100%;
+	text-align: center;
+	line-height: 38rpx;
+	font-size: 20rpx;
+	font-weight: 500;
+	color: #FFFFFF;
+}

+ 490 - 693
pages/user/user.vue

@@ -1,786 +1,583 @@
 <template>
 	<view>
 		<view :class="'mine' + (skinNotColor ? ' not-color' : '')">
-			<image :src="'/static/pages/images/' + iconSrc + (skinNotColor ? 'wdbg1.png' : 'wdbg.png')" class="wdbg"
-				@click="jumpUrl('mine/userinfo/userinfo')"></image>
+			<view :style="'height:' + systems.barHeight + 'rpx;'"></view>
+			<view :style="'top:' + systems.ktxStatusHeight + 'rpx;z-index:3;position: absolute;'+'line-height: '+ systems.navigationHeight+'rpx;text-align: center;left: 0;font-size: 34rpx;right: 0;color: #FFFFFF;'">
+				我的
+			</view>
+			<image src="../../static/pages/images/userBg.png" class="wdbg" @click="jumpUrl('mine/userinfo/userinfo')"></image>
 			<view class="minec">
-				<image :src="userInfos.avatar ? userInfos.avatar : '/static/pages/images/userimg.png'" mode="aspectFit"
-					class="user" @click="jumpUrl('mine/userinfo/userinfo')"></image>
-				<view class="mines" @click="jumpUrl('mine/userinfo/userinfo')" v-if="isLogin">
-					<view class="ddflex">{{userInfos.nickName}}
-						<image :src="config.ordinary_member_icon" class="common-vip"
-							v-if="config.ordinary_member_icon&&!userinfovip.levelGrade"></image>
-					</view>
-					<text class="edu" v-if="userInfos.mobile">{{userInfos.mobile}}</text>
+				<view class="minec-img" @click="jumpUrl('mine/set/index')">
+					<image :src="userInfos.avatar ? userInfos.avatar : '/static/pages/images/userimg.png'" mode="aspectFit" class="user"></image>
 				</view>
-				<view class="flex" v-else>
-					<text class="login-btn" @click="jumpUrl('')">点击登录</text>
+				<view class="mines" @click="jumpUrl('mine/set/index')" v-if="isLogin">
+					<view class="ddflex">
+						{{ userInfos.nickName }}
+						<image src="../../static/pages/images/rz_qy_h.png" class="auth-img" v-if="userInfos.authStatus == 2"></image>
+						<image src="../../static/pages/images/rz_qy.png" class="auth-img" v-else></image>
+						<image src="../../static/pages/images/rz_gr_h.png" class="auth-img" v-if="userInfos.companyStatus == 2"></image>
+						<image src="../../static/pages/images/rz_gr.png" class="auth-img" v-else></image>
+					</view>
+					<text class="edu" v-if="userInfos.mobile">{{ styleHintPhoneText(userInfos.mobile) }}</text>
 				</view>
-				<!-- <navigator url="/mine/userinfo/userinfo" hover-class="none" class="set"> -->
-				<!-- <view class="set">
-					<image src="/static/pages/images/set.png" @click="signFun"></image>
-				</view> -->
-				<view class="rule dflex" @click="jumpInt('integralshop/task/index')" v-if="isShowSign"><!-- isSign==0||sign==1?jumpUrl(''):signFun() -->
+				<view class="flex" v-else><text class="login-btn" @click="jumpUrl('')">点击登录</text></view>
+				<view class="rule dflex" @click="isSign == 0 || sign == 1 ? jumpUrl('') : signFun()" v-if="isShowSign">
 					<image src="/static/pages/images/qdico.png"></image>
-					{{!isLogin ? '签到' : isSign==0||sign==1?'已签到':'签到'}}
+					{{ !isLogin ? '签到' : isSign == 0 || sign == 1 ? '已签到' : '签到' }}
 				</view>
 				<!-- </navigator> -->
 			</view>
 			<view class="datas dflex">
-				<navigator url="" hover-class="none" class="li" v-if="is_open_wallet.isOpenWallet==1"
-					@click="jumpUrl('wallet/index/index')"><text>{{userMoney?userMoney:'0.00'}}</text>钱包
+				<navigator url="" hover-class="none" class="li" v-if="is_open_wallet.isOpenWallet == 1" @click="jumpUrl('wallet/index/index')">
+					<text>{{ userMoney ? userMoney : '0.00' }}</text>
+					钱包
 				</navigator>
-				<navigator url="" hover-class="none" class="li"
-					:style="is_open_wallet.isOpenWallet!=1&&Open_Points_Mall!=1?'width:50%':''"
-					@click="jumpUrl('mine/coupons/coupons')">
-					<text>{{userInfos.coupon?userInfos.coupon:'0'}}</text>优惠券
+				<navigator
+					url=""
+					hover-class="none"
+					class="li"
+					:style="is_open_wallet.isOpenWallet != 1 && Open_Points_Mall != 1 ? 'width:50%' : ''"
+					@click="jumpUrl('mine/coupons/coupons')"
+				>
+					<text>{{ userInfos.coupon ? userInfos.coupon : '0' }}</text>
+					优惠券
 				</navigator>
-				<navigator url="" hover-class="none" class="li" @click="jumpUrl('integralshop/index/index')"><!-- @click="jumpUrl('integralshop/index/index')" -->
-					<text>{{userInfos.integral?userInfos.integral:'0'}}</text>积分
+				<navigator url="" hover-class="none" class="li" @click="jumpUrl('integralshop/index/index')">
+					<text>{{ userInfos.integral ? userInfos.integral : '0' }}</text>
+					积分
 				</navigator>
-				<navigator url="" hover-class="none" class="li"
-					:style="is_open_wallet.isOpenWallet!=1&&Open_Points_Mall!=1?'width:50%':''"
-					@click="jumpUrl('mine/collect/collect')">
-					<text>{{userInfos.collect?userInfos.collect:'0'}}</text>收藏
+				<navigator
+					url=""
+					hover-class="none"
+					class="li"
+					:style="is_open_wallet.isOpenWallet != 1 && Open_Points_Mall != 1 ? 'width:50%' : ''"
+					@click="jumpUrl('mine/collect/collect')"
+				>
+					<text>{{ userInfos.collect ? userInfos.collect : '0' }}</text>
+					收藏
 				</navigator>
 				<!-- <navigator url="/mine/footprint/footprint" hover-class="none" class="li"><text>{{footprint?footprint:'0'}}</text>足迹</navigator> -->
 			</view>
-			<block v-if="isLogin">
-				<view class="upgrade ddflex" v-if="config.is_show_member_upgrade == 1 && userinfovip.levelGrade < vipList.length"><!-- config.ordinary_member_icon -->
-					<view :class="'li' + (!userinfovip.levelGrade ? ' active':'')">
-						<view>普通会员</view>
-					</view>
-					<view class="li" :class="{active:userinfovip.level == item.id,cur:item.isShowInfo}" v-for="(item,index) in vipList" :key="index"
-						@click="showInfo(index)">
-						<view class="vip-info" v-if="item.isShowInfo&&item.upgradeTerm.terms.length>0">
-							<text
-								v-if="item.upgradeTerm.terms[0].bind == 'order_money'">累计消费金额达到{{item.upgradeTerm.terms[0].value}}元即可升级</text>
-							<text
-								v-if="item.upgradeTerm.terms[0].bind == 'order_num'">累计购买订单达到{{item.upgradeTerm.terms[0].value}}笔即可升级</text>
-							<text
-								v-if="item.upgradeTerm.terms[0].bind == 'share_new'">分享拉新人数累计达到{{item.upgradeTerm.terms[0].value}}人即可升级</text>
-						</view>
-						<view class="vip-tit">{{item.title}}</view>
-					</view>
-				</view>
-				<view class="vip" v-if="vipList&&vipList.length>=1&&rongkang!='ZQ1VK5oc17I387E'"
-					@click="jumpUrl('mine/vip/vip')">
-					<image :src="picUrlss+'vip_bg.png'" class="vipbg"></image>
-					<view class="vipc dflex">
-						<view class="dflex flex" v-if="userinfovip.levelGrade>0&& !userinfovip.end">
-							<!-- <image :src="userinfovip.icon"></image> -->
-							<image src="/static/pages/images/hg_ico1.png" class="vipimg"></image>
-							<view class="huiyuan">{{userinfovip.levelName}}</view>
-							<!-- <text class="level" >{{userinfovip.levelGrade}}</text> -->
-						</view>
-						<view class="dflex flex" v-else>
-							<image src="/static/pages/images/hg_ico1.png" class="vipimg"></image>
-							<text class="huiyuan">会员立享专属权益</text>
-						</view>
-						<view class="cheng" v-if="userinfovip.levelGrade>0&& !userinfovip.end">
-							{{userinfovip.expireTime}} 到期
-						</view>
-						<view class="ling" v-else>立即开通</view>
-					</view>
-				</view>
-			</block>
-			<view class="vip" v-else @click="jumpUrl('mine/vip/vip')">
-				<image :src="picUrlss+'vip_bg.png'" class="vipbg"></image>
-				<view class="vipc dflex">
-					<view class="dflex flex">
-						<image src="/static/pages/images/hg_ico1.png" class="vipimg"></image>
-						<text class="huiyuan">会员立享专属权益</text>
-					</view>
-					<view class="ling">立即开通</view>
-				</view>
-			</view>
+			<view style="height: 80rpx;"></view>
 		</view>
 
-		<view class="con">
+		<view class="con" style="margin-top: -80rpx;">
 			<view class="order">
 				<navigator url="" hover-class="none" class="tits dflex" @click="jumpUrl('mine/order/order')">
-					<view class="flex">我的订单</view>查看全部<image src="/static/pages/images/rico.png" class="rico"></image>
+					<view class="flex">我的活动</view>
+					全部活动
+					<image src="../../static/pages/images/more.png" class="rico"></image>
 				</navigator>
-				<view class="list1">
-					<navigator url="" hover-class="none" class="li" @click="jumpUrl('mine/order/order')">
-						<image :src="picUrlss+'ddico0.png'"></image>
-						<view>全部订单</view>
-					</navigator>
-					<navigator url="" hover-class="none" class="li" @click="jumpUrl('mine/order/order?state=1')">
-						<image :src="picUrlss+'ddico1.png'"></image>
-						<text class="new" v-if="userInfos.dfk > 0">{{userInfos.dfk}}</text>
-						<view>待付款</view>
-					</navigator>
-					<navigator url="" hover-class="none" class="li" @click="jumpUrl('mine/order/order?state=3')">
-						<image :src="picUrlss+'ddico2.png'"></image>
-						<text class="new" v-if="userInfos.yqr > 0">{{userInfos.yqr}}</text>
-						<view>待发货</view>
-					</navigator>
-					<navigator url="" hover-class="none" class="li" @click="jumpUrl('mine/order/order?state=5')">
-						<image :src="picUrlss+'ddico3.png'"></image>
-						<text class="new" v-if="userInfos.yfh > 0">{{userInfos.yfh}}</text>
-						<view>待收货</view>
-					</navigator>
-					<navigator url="" hover-class="none" class="li" @click="jumpUrl('mine/order/order?state=7')">
-						<image :src="picUrlss+'ddico4.png'"></image>
-						<text class="new" v-if="userInfos.ywc > 0">{{userInfos.ywc}}</text>
+				<view class="ddflex" style="justify-content: space-between;padding: 40rpx 80rpx;">
+					<view class="order-item ddflex">
+						<image src="../../static/images/sd_tw.png"></image>
+						<view>待参与</view>
+					</view>
+					<vieW class="order-line"></vieW>
+					<view class="order-item ddflex">
+						<image src="../../static/images/sd_tw.png"></image>
 						<view>已完成</view>
-					</navigator>
-					<!-- <navigator url="/mine/order/order?state=21" hover-class="none" class="li">
-				<image src="/pages/images/ddico0_1.png"></image>
-				<text class="new" wx:if="{{ywc > 0}}">{{ywc}}</text>
-				<view>退款售后</view>
-			</navigator> -->
-				</view>
-			</view>
-		</view>
-		<!-- 店铺 -->
-		<view class="order shopname"
-			v-if="(userInfos.listMerchant&&userInfos.listMerchant!=null&&userInfos.listMerchant.length>0)||(is_open_shop == 1&&userInfos.listShopBase&&userInfos.listShopBase!=null&&userInfos.listShopBase.length>0)||userInfos.merchantId!=null">
-
-			<image src="/static/pages/images/md_ic_bg.png" class="md_ic_bg"></image>
-			<navigator url="" hover-class="none" class="tits dflex" @click="jumpMerchantManage()">
-				<view class="dflex flex">
-					<image src="/static/pages/images/position_b_icon.png" class="bico"></image>
-					<block v-if="!userInfos.listShopBase||!userInfos.listMerchant">
-						门店管理
-					</block>
-					<block v-else>
-						<block v-if="userInfos.listMerchant.length>0&&userInfos.listShopBase.length<1">
-							{{userInfos.listMerchant[0].title?userInfos.listMerchant[0].title:'门店管理'}}</block>
-						<block v-else-if="userInfos.listShopBase.length>0">
-							{{userInfos.listShopBase[0].title?userInfos.listShopBase[0].title:'门店管理'}}</block>
-						<!-- {{!listShopBase?listMerchant[0].title:listShopBase.length==0?listMerchant[0].title:listShopBase[0].title}} -->
-					</block>
-
+					</view>
 				</view>
-				查看更多<image src="/static/pages/images/rico.png" class="rico"></image>
-			</navigator>
-			<view class="datasw dflex">
-				<navigator url="" hover-class="none" class="li" @click="jumpMerchantManage()">
-					全部订单<text>{{statistics.total}}</text>
-				</navigator>
-				<navigator url="" hover-class="none" class="li" @click="jumpMerchantManage()">
-					待发货<text>{{statistics.t3}}</text>
-				</navigator>
-				<navigator url="" hover-class="none" class="li" @click="jumpMerchantManage()">
-					待提货<text>{{statistics.t4}}</text>
-				</navigator>
 			</view>
 		</view>
-		<view class="order" v-if="distr.distributionIsOpen==1&&userInfos.isDistriUser == 2">
-			<navigator url hover-class="none" class="tits dflex">
-				<view class="flex">全民推广</view>
-				<!-- 查看更多<image src="/pages/images/rico.png" class="rico"></image> -->
-			</navigator>
-			<view class="list3 dflex">
-				<navigator url="" hover-class="none" class="li" @click="jumpUrl('promote/team/team')">
-					<image :src="picUrlss+'fxico1.png'"></image>
-					<view>推广中心</view>
-				</navigator>
-				<navigator url="" hover-class="none" class="li"
-					@click="jumpUrl('promote/teamList/teamList?IS_secondary_members=' + IS_secondary_members)">
-					<image :src="picUrlss+'fxico2.png'"></image>
-					<view>我的客户</view>
-				</navigator>
-				<navigator url="" hover-class="none" class="li" @click="jumpUrl('promote/sales/sales')">
-					<image :src="picUrlss+'fxico3.png'"></image>
-					<view>业绩订单</view>
-				</navigator>
-				<navigator url="" hover-class="none" class="li" @click="jumpUrl('promote/invite/invite')">
-					<image :src="picUrlss+'fxico4.png'"></image>
-					<view>我要推广</view>
+		
+		<view class="con">
+			<view class="order">
+				<navigator url="" hover-class="none" class="tits dflex" @click="jumpUrl('mine/order/order')">
+					<view class="flex">我的顾问</view>
 				</navigator>
-			</view>
-		</view>
-		<block v-if="isLogin">
-			<block v-if="distr.distributionIsOpen==1&&config.is_hide_distribution_entry != 1">
-				<navigator url="" hover-class="none" class="order tuig" v-if="userInfos.isDistriUser==1"
-					@click="jumpUrl('promote/status/status')">
-					<view class="tits dflex">
-						<view class="flex">全民推广</view>
+				<view class="service-person">
+					<view class="ddflex" @click="jumpUrl('/card/index/index')">
+						<image class="service-person-header" src="../../static/pages/images/userimg.png"></image>
+						<view>
+							<view class="service-person-name ddflex">
+								<view>Hi~我是杜平</view>
+								<image src="/static/images/rico2.png" class="rico"></image>
+							</view>
+							<view class="service-person-number">(工号:106547) 欢迎您来到我的微页</view>
+							<view class="service-person-options ddflex">
+								<view class="service-person-option ddflex">
+									<image src="/static/pages/images/dz_hui.png"></image>
+									<view>96%</view>
+								</view>
+								<view class="service-person-option ddflex">
+									<image src="/static/pages/images/cy_hui.png"></image>
+									<view>从业21.6年</view>
+								</view>
+								<view class="service-person-option ddflex">
+									<image src="/static/pages/images/fw_hui.png"></image>
+									<view>为1678人服务</view>
+								</view>
+							</view>
+						</view>
 					</view>
-					<image :src="picUrlss+'fenxiao.png'" class="fenxiao"></image>
-				</navigator>
-				<navigator url="" hover-class="none" class="order tuig"
-					v-if="userInfos.isDistriUser!=2 && userInfos.isDistriUser!=1" @click="jumpUrl('promote/info/info')">
-					<view class="tits dflex">
-						<view class="flex">全民推广</view>
+					<view class="service-person-phone ddflex">
+						<view class="ddflex flex" style="justify-content: center;">
+							<image src="/static/pages/images/phone1.png"></image>
+							<view>联系电话</view>
+						</view>
+						<view class="order-line"></view>
+						<view class="ddflex flex" style="justify-content: center;">
+							<image style="width: 35rpx;height: 28rpx;" src="/static/pages/images/qw.png"></image>
+							<view>加企微信</view>
+						</view>
 					</view>
-					<image :src="picUrlss+'fenxiao.png'" class="fenxiao"></image>
-				</navigator>
-			</block>
-		</block>
-		<navigator url="" hover-class="none" class="order tuig" @click="jumpUrl('promote/apply/apply')"
-			v-if="!isLogin&&config.is_hide_distribution_entry != 1">
-			<view class="tits dflex">
-				<view class="flex">全民推广</view>
-			</view>
-			<image :src="picUrlss+'fenxiao.png'" class="fenxiao"></image>
-		</navigator>
-		<view class="order">
-			<view class="tits dflex">
-				<view class="flex">我的服务</view>
-			</view>
-			<view class="list2 dflex">
-				<!-- <navigator url="/mine/order/order?orderType=5" hover-class="none" class="li">
-      <image src="/pages/images/ddico5_1.png"></image>
-      <text>及时达订单</text>
-    </navigator> -->
-				<!-- <navigator url="/pages/supplier/supplier" hover-class="none" class="li">
-					<image :src="picUrlss+'supplier.png'"></image>
-					<text>我是供应商</text>
-				</navigator> -->
-				<!-- <navigator url="" hover-class="none" class="li" @click="jumpUrl('mine/order/order?orderType=2')">
-					<image :src="picUrlss+'ddico5_2.png'"></image>
-					<text>社区团购</text>
-				</navigator> -->
-				<navigator url="" hover-class="none" class="li" @click="jumpUrl('mine/order/order?orderType=4')">
-					<image :src="picUrlss+'ddico4_1.png'"></image>
-					<text>拼团订单</text>
-				</navigator>
-				<navigator url="" hover-class="none" class="li" @click="jumpUrl('mine/order/order?orderType=7')">
-					<image :src="picUrlss+'ddico7_1.png'"></image>
-					<text>砍价订单</text>
-				</navigator>
-				<navigator url="" hover-class="none" class="li" v-if="Open_Points_Mall==1"
-					@click="jumpUrl('integralshop/index/index')">
-					<image :src="picUrlss+'ddico8_1.png'"></image>
-					<text>积分商城</text>
-				</navigator>
-				<!-- <navigator url="" hover-class="none" class="li" @click="jumpUrl('mine/remind/remind')">
-					<image :src="picUrlss+'ddico7.png'"></image>
-					<text>开团提醒</text>
-				</navigator> -->
-				<navigator url="" hover-class="none" class="li" @click="jumpUrl('product/coupon/coupon')">
-					<image :src="picUrlss+'ddico5_3.png'"></image>
-					<text>领券中心</text>
-				</navigator>
-				<navigator url="" hover-class="none" class="li" @click="jumpUrl('topics/release/release')">
-					<image :src="picUrlss+'ddico7.png'"></image>
-					<text>我的发布</text>
-				</navigator>
-				<navigator url="" hover-class="none" class="li" @click="jumpUrl('office/follow/index')">
-					<image :src="picUrlss+'ddico5_2.png'"></image>
-					<text>我的关注</text>
-				</navigator>
-				<navigator url="" hover-class="none" class="li" @click="jumpUrl('mine/news/news')">
-					<image :src="picUrlss+'ddico5_1.png'"></image>
-					<text>我的消息</text>
-					<view class="new" v-if="newsCount > 0">{{newsCount}}</view>
-				</navigator>
-				<!-- <navigator url="/pages/nearby/nearby" hover-class="none" class="li">
-      <image src="/pages/images/ddico5.png"></image>
-      <text>附近门店</text>
-    </navigator> -->
-				<navigator url="" hover-class="none" class="li" @click="jumpUrl('mine/address/address')">
-					<image :src="picUrlss+'ddico6.png'"></image>
-					<text>收货地址</text>
-				</navigator>
-				<navigator url="" hover-class="none" class="li" @click="jumpUrl('mine/invoice/invoice')"
-					v-if="config.is_open_invoice == 1">
-					<image :src="picUrlss+'ddico11_4.png'"></image>
-					<text>我的发票</text>
-				</navigator>
-				<view class="li" v-if="!isLogin" @click="jumpUrl('')">
-					<image :src="picUrlss+'ddico11_1.png'"></image>
-					<text>绑定手机号</text>
-				</view>
-				<button class="li" v-if="!userInfos.mobile && isLogin" open-type="getPhoneNumber"
-					@getphonenumber="getphonenumber" hover-class="none">
-					<image :src="picUrlss+'ddico11_1.png'"></image>
-					<text>绑定手机号</text>
-				</button>
-				<view class="li">
-					<contact-button :img-url="picUrlss+'ddico9.png'" img-style='width: 74rpx;height: 74rpx;margin: 0 auto 12rpx;' button-text="联系客服" styles="line-height:initial;"></contact-button>
 				</view>
-				<!-- <button open-type="contact" class="li" hover-class="none">
-					<image :src="picUrlss+'ddico9.png'"></image>
-					<text>联系客服</text>
-				</button> -->
-				<view class="li" @tap="callPhone" v-if="phone">
-					<image :src="picUrlss+'ddico11_2.png'"></image>
-					<text>服务热线</text>
-				</view>
-				<navigator url="/mine/help/help" hover-class="none" class="li">
-					<image :src="picUrlss+'ddico8.png'"></image>
-					<text>帮助中心</text>
-				</navigator>
-				<navigator url="/pages/about/about" hover-class="none" class="li">
-					<image :src="picUrlss+'ddico11_3.png'"></image>
-					<text>关于我们</text>
-				</navigator>
-
-				<navigator url="/mine/feedback/feedback" hover-class="none" class="li">
-					<image :src="picUrlss+'ddico10.png'"></image>
-					<text>建议反馈</text>
-				</navigator>
-				<!-- <navigator url="/pages/web/web" hover-class="none" class="li" wx:if="{{merchantId}}">
-			<image src="/pages/images/ddico11.png"></image>
-			<text>门店管理</text>
-		</navigator> -->
-
 			</view>
 		</view>
-		<!-- 注册成为会员 -->
-		<view class="mask" :hidden="isHide" @tap="hideRegister"></view>
-		<view class="regi" :hidden="isHide">
-			<view class="regi-tit">注册会员<image src="/static/pages/images/close1.png" class="regi-close"
-					@tap="hideRegister"></image>
-			</view>
-			<view class="phone dflex">
-				<input placeholder="手机号" placeholder-class="placeholder" class="flex"></input>
-				<button open-type="getPhoneNumber" @getphonenumber="getphonenumber" class="getphone dflex">
-					<image src="/static/pages/images/wxico.png"></image>一键获取
-				</button>
+		
+		<view class="box mlist">
+			<navigator class="li ddflex" url="/promote/invite/invite" hover-class="none">
+				<image :src="picUrlss + 'scrm/mico_fx.png'" class="mico"></image>
+				<view class="fflex">推荐好友</view>
+				<image src="../../static/pages/images/more.png" class="rico"></image>
+			</navigator>
+		</view>
+		
+		<view class="box mlist">
+			<view class="li ddflex">
+				<view class="fflex">
+					<contact-button class-name="ddflex" :img-url="picUrlss+'scrm/mico_kf.png'" img-style='width: 49rpx;height: 49rpx;margin: 0 25rpx 0 0;' button-text="联系客服" styles="line-height:initial;"></contact-button>
+				</view>
+				<image src="../../static/pages/images/more.png" class="rico"></image>
 			</view>
-			<view class="regi-btn">立即注册</view>
+			<navigator  class="li ddflex" url="/mine/help/help" hover-class="none">
+				<image :src="picUrlss+'ruiteng/my_service5.png'" class="mico" mode="aspectFit"></image>
+				<view class="fflex">帮助中心</view>
+				<image src="../../static/pages/images/more.png" class="rico"></image>
+			</navigator>
+			<navigator class="li ddflex" url="/mine/feedback/feedback" hover-class="none">
+				<image :src="picUrlss + 'scrm/mico_fk.png'" class="mico"></image>
+				<view class="fflex">建议与反馈</view>
+				<image src="../../static/pages/images/more.png" class="rico"></image>
+			</navigator>
+			<navigator class="li ddflex" url="/pages/about/about" hover-class="none">
+				<image :src="picUrlss + 'scrm/mico_about.png'" class="mico"></image>
+				<view class="fflex">关于中国人寿</view>
+				<image src="../../static/pages/images/more.png" class="rico"></image>
+			</navigator>
 		</view>
 		<footer-copyright></footer-copyright>
 		<!-- <view class="placeholder-view" :style="'height:' + (bottomBlankHeignt + 115) + 'rpx'"></view> -->
-		<foot channel="user" :isUpdate="isUpdate"></foot>
-		<update-userinfo :update-info="isUpdateInfo" :update-mobile="isUpdateMobile" v-if="isShowUpdate" @closeUpdate="closeUpdate" @updateInfo="updateInfo" @updateMobile="updateMobile"></update-userinfo>
-		<!-- <web-view src="https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx86937a61b8d50977&redirect_uri=https%3a%2f%2fwebtest.tongyu99.com&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect"></web-view> -->
+		<foot channel="user"></foot>
+		<update-userinfo
+			:update-info="isUpdateInfo"
+			:update-mobile="isUpdateMobile"
+			v-if="isShowUpdate"
+			@closeUpdate="closeUpdate"
+			@updateInfo="updateInfo"
+			@updateMobile="updateMobile"
+		></update-userinfo>
+		
+		<view class="lt ddflex">
+			<view class="ddflex" style="position: relative;width: 100%;height: 100%;">
+				<image src="../../static/pages/images/lt.png"></image>
+				<view class="lt-num">1</view>
+			</view>
+		</view>
 	</view>
 </template>
 
 <script>
-	// pages/user/user.js
-	const app = getApp();
-	const req = require("../../utils/request.js");
-	const route = require("../../utils/route");
-	const requsetmessage = require('../../utils/requestmessage.js');
-	import foot from "../../components/nav-bar/index";
-	import footerCopyright from "../../components/footer-copyright/footer-copyright";
-
-	export default {
-		data() {
-			return {
-				skinNotColor: req.public.skinNotColor,
-				picUrlss: req.public.picUrls,
-				bottomBlankHeignt: app.globalData.isIPhoneX ? 68 : 0,
-				// merchantId: '',
-				iconSrc: req.public.iconSrc,
-				//头部页面背景链接
-				isUpdate: false,
-				// 是否更新消息
-				isHideVip: true,
-				//隐藏会员
-				isVip: true,
-				//是否是会员
-				isHide: true,
-				//是否隐藏注册会员弹窗
-				IS_secondary_members: 0,
-				distr: "",
-				userinfovip: "",
-				userMoney: "",
-				istetphone: "",
-				logo: "",
-				name: "",
-				is_open_wallet: "",
-				Open_Points_Mall: "",
-				statistics: "",
-				vipList: "",
-				rongkang: req.header.appId,
-				isSign: '',
-				sign: 0,
-				isLogin: false,
-				noLogin: false,
-				is_open_shop: '',
-				isShowSign: false, //是否显示签到按钮
-				config: {},
-				userInfos: {},
-				newsCount: 0,
-				isShowUpdate: false,//是否显示更新信息弹窗
-				isUpdateInfo: false,//更新用户信息
-				isUpdateMobile: false,//绑定手机号
-			};
+// pages/user/user.js
+const app = getApp();
+const req = require('../../utils/request.js');
+const util = require('../../utils/util.js');
+const route = require('../../utils/route');
+import foot from '../../components/nav-bar/index';
+import footerCopyright from '../../components/footer-copyright/footer-copyright';
+
+export default {
+	data() {
+		return {
+			systems: {},
+			skinNotColor: req.public.skinNotColor,
+			picUrlss: req.public.picUrls,
+			bottomBlankHeignt: app.globalData.isIPhoneX ? 68 : 0,
+			// merchantId: '',
+			iconSrc: req.public.iconSrc,
+			//头部页面背景链接
+			isHideVip: true,
+			//隐藏会员
+			isVip: true,
+			//是否是会员
+			IS_secondary_members: 0,
+			distr: '',
+			userinfovip: '',
+			userMoney: '',
+			istetphone: '',
+			logo: '',
+			name: '',
+			is_open_wallet: '',
+			Open_Points_Mall: '',
+			statistics: '',
+			vipList: '',
+			rongkang: req.header.appId,
+			isSign: '',
+			sign: 0,
+			isLogin: false,
+			noLogin: false,
+			is_open_shop: '',
+			isShowSign: false, //是否显示签到按钮
+			config: {},
+			userInfo:{},
+			userInfos: {},
+			isShowUpdate: false, //是否显示更新信息弹窗
+			isUpdateInfo: false, //更新用户信息
+			isUpdateMobile: false, //绑定手机号
+		};
+	},
+
+	components: {
+		foot,
+		footerCopyright
+	},
+	props: {},
+
+	onLoad(options) {
+		uni.hideTabBar();
+
+		uni.setNavigationBarColor({
+			frontColor: this.skinNotColor ? '#000' : '#ffffff',
+			backgroundColor: this.skinNotColor ? '#fff' : req.public.titleTopBgColor
+		});
+
+		if (JSON.parse(req.getStorage('configRes')).IS_secondary_members) {
+			let IS_secondary_members = JSON.parse(req.getStorage('configRes')).IS_secondary_members;
+			console.log(IS_secondary_members);
+			this.setData({
+				IS_secondary_members: IS_secondary_members
+			});
+		}
+		this.userInfo = req.getStorage('userInfo');
+		// #ifdef MP-WEIXIN
+		let userInfo = req.getStorage('userInfo');
+		if (req.isAuth()) {
+			setTimeout(res => {
+				if (!userInfo.avatar || userInfo.nickName == '微信用户' || this.userInfos.nickName == '微信用户') {
+					this.isShowUpdate = true;
+					this.isUpdateInfo = true;
+				}
+				if (userInfo.avatar && !userInfo.mobile && (this.userInfos && !this.userInfos.mobile)) {
+					this.isShowUpdate = true;
+					this.isUpdateMobile = true;
+				}
+			}, 2000);
+		}
+		// #endif
+	},
+
+	onShow: function() {
+		let userInfo = req.getStorage('userInfo');
+		this.isLogin = req.isLogins(false);
+		if (this.isLogin) {
+			this.getMy();
+			this.getAbout();
+			this.getRule();
+			this.noLogin = true;
+		} else {
+			this.noLogin = false;
+		}
+	},
+	methods: {
+		styleHintPhoneText(phone) {
+			var phones=util.styleHintPhoneText(phone);
+			return phones;
 		},
 
-		components: {
-			foot,
-			footerCopyright
+		jumpUrl(url) {
+			if (req.isLogins(true)) {
+				app.globalData.navigateTo(url);
+			}
 		},
-		props: {},
 
-		onLoad(options) {
-			app.globalData.getCheckSessoin(json => {
-				this.sessionKey = json.session_key;
-			});
-			uni.setNavigationBarColor({
-				frontColor: this.skinNotColor ? '#000' : '#ffffff',
-				backgroundColor: this.skinNotColor ? '#fff' : req.public.titleTopBgColor
-			});
-
-			if (JSON.parse(req.getStorage('configRes')).IS_secondary_members) {
-				let IS_secondary_members = JSON.parse(req.getStorage('configRes')).IS_secondary_members;
-				console.log(IS_secondary_members)
+		jumpMerchantManage() {
+			let token = req.getStorage('AUTH_TOKEN');
+			this.jumpUrl('merchant/index?appId=' + req.header.appId + '&token=' + token);
+		},
+		// 是否签到{}
+		isSignFun() {
+			req.getRequest('/api/integral/isSign', {}, res => {
 				this.setData({
-					IS_secondary_members: IS_secondary_members
+					isSign: res
 				});
-			}
-			let userInfo = req.getStorage('userInfo');
-			if(req.isAuth()){
-				setTimeout(res=>{
-					if(!userInfo.avatar || userInfo.nickName == '微信用户' || this.userInfos.nickName == '微信用户'){
-						this.isShowUpdate = true
-						this.isUpdateInfo = true
-					}
-					if(userInfo.avatar&&!userInfo.mobile&&(this.userInfos&&!this.userInfos.mobile)){
-						this.isShowUpdate = true
-						this.isUpdateMobile = true
-					}
-				},2000)
-			}
+			});
 		},
 
-		onShow: function() {
-			this.setData({
-				isUpdate: !this.isUpdate
-			}); // let merchantId = req.getStorage('userInfo').merchantId
-			// this.setData({
-			//   merchantId: merchantId,
-			// })
-
-			// console.log(this.merchantId);
-			// this.getMy();
-			// this.getAbout();
-			// console.log(this.noLogin, 111111111111)
-			let userInfo = req.getStorage('userInfo');
-			// if (userInfo) this.isLogin = true;
-			this.isLogin = req.isAuth();
-			if (this.isLogin) {
-				this.getMy();
-				this.getNewsCount();
-				this.getAbout();
-				this.getRule();
-				this.noLogin = true;
-			} else {
-				this.noLogin = false;
-			}
+		gouserInfo() {
+			app.globalData.navigateTo('mine/userinfo/userinfo');
 		},
-		methods: {
-			async jumpInt(url){
-				if (!req.isLogin()) return false;
-				await requsetmessage.remindIntegral().then(res => {});
-				app.globalData.navigateTo(url);
-			},
-			jumpUrl(url) {
-				if (!req.isLogin()) return false;
-				app.globalData.navigateTo(url);
-			},
-
-			jumpMerchantManage() {
-				// jumpUrl('pages/web/web')
-				let token = req.getStorage('AUTH_TOKEN');
-				this.jumpUrl('merchant/index?appId=' + req.header.appId + '&token=' + token);
-			},
-			// 是否签到{}
-			isSignFun() {
-				req.getRequest('/api/integral/isSign', {}, res => {
+		getDistributionConfig() {
+			req.postRequest('/api/distribution/config', {}, res => {
+				this.setData({
+					distr: res
+				});
+			});
+		},
+		// 签到
+		signFun() {
+			req.postRequest('/api/integral/sign', {}, data => {
+				if (data) {
+					req.msg('连续签到' + data.continuityDay + '天' + ',获得' + data.IntegralChange + '积分');
 					this.setData({
-						isSign: res
+						sign: 1
 					});
+					this.getOpenPonints();
+				}
+			});
+		},
+		getuserVip() {
+			req.getRequest('/api/user/levelDetails', {}, data => {
+				let expireTime = Array;
+
+				if (data.expireTime) {
+					expireTime = data.expireTime.split(' ');
+					data.expireTime = data.expireTime.replace(/-/g, '/');
+				} // 解决苹果不兼容---日期
+				// data.expireTime=data.expireTime.replace(/-/g, '/')
+
+				let nowTime = new Date().getTime();
+				let endTime = new Date(data.expireTime).getTime();
+				let times = parseInt((endTime - nowTime) / 1000); // var expireTime= new Date(data.expireTime)
+				// var time1=expireTime.getTime();
+
+				// console.log(times, nowTime, endTime, data.expireTime);
+				this.setData({
+					userinfovip: data,
+					['userinfovip.expireTime']: expireTime[0]
 				});
-			},
 
-			gouserInfo() {
-				app.globalData.navigateTo('mine/userinfo/userinfo')
-			},
-			getDistributionConfig() {
-				req.postRequest('/api/distribution/config', {}, res => {
+				if (times <= 0) {
 					this.setData({
-						distr: res
+						['userinfovip.end']: true
 					});
-				});
-			},
-			// 签到
-			signFun() {
-				req.postRequest('/api/integral/sign', {}, data => {
-					if (data) {
-						req.msg('连续签到' + data.continuityDay + '天' + ',获得' + data.IntegralChange + '积分');
-						this.setData({
-							sign: 1
-						});
-						this.getOpenPonints();
-					}
-				});
-			},
-			getuserVip() {
-				req.getRequest('/api/user/levelDetails', {}, data => {
-					let expireTime = Array;
-
-					if (data.expireTime) {
-						expireTime = data.expireTime.split(" ");
-						data.expireTime = data.expireTime.replace(/-/g, '/');
-					} // 解决苹果不兼容---日期
-					// data.expireTime=data.expireTime.replace(/-/g, '/')
-
-
-					let nowTime = new Date().getTime();
-					let endTime = new Date(data.expireTime).getTime();
-					let times = parseInt((endTime - nowTime) / 1000); // var expireTime= new Date(data.expireTime)
-					// var time1=expireTime.getTime();
-
-					// console.log(times, nowTime, endTime, data.expireTime);
+				} else {
 					this.setData({
-						userinfovip: data,
-						['userinfovip.expireTime']: expireTime[0]
+						['userinfovip.end']: false
 					});
+				}
 
-					if (times <= 0) {
-						this.setData({
-							['userinfovip.end']: true
-						});
-					} else {
-						this.setData({
-							['userinfovip.end']: false
-						});
-					}
-
-					// console.log(data);
-				});
-			},
-			getOpenPonints() {
-				req.getRequest('/api/integral/returnIntegral', {}, res => {
-					this.setData({
-						integral: res
-					})
-				})
-			},
-			async getMy() {
-				let that = this;
-				req.getRequest('/api/user/my', {}, data => {
-					// data.merchantId = req.getStorage('userInfo').merchantId
-					data.nickName = req.excludeSpecial(data.nickName);
-					this.userInfos = data;
-					let userInfo = req.getStorage('userInfo');
-					userInfo.isDistriUser = data.isDistriUser;
-					req.setStorage('userInfo', userInfo);
-					// that.setData(data); // this.isbindmobile();
-					console.log('userinfo==' + JSON.stringify(data))
-					this.isSignFun();
-					this.getstatistics(data);
-					this.getDistributionConfig();
-					this.getuserVip();
-					this.getuserMoney();
-					this.getVip();
-					this.getOpenPonints();
-					// console.log(this);
+				// console.log(data);
+			});
+		},
+		getOpenPonints() {
+			req.getRequest('/api/integral/returnIntegral', {}, res => {
+				this.setData({
+					integral: res
 				});
-			},
+			});
+		},
+		getMy() {
+			let that = this;
+			req.getRequest('/api/user/my', {}, data => {
+				// data.merchantId = req.getStorage('userInfo').merchantId
+				data.nickName = req.excludeSpecial(data.nickName);
+				this.userInfos = data;
+				// that.setData(data); // this.isbindmobile();
+				console.log('userinfo==' + JSON.stringify(data));
+				this.isSignFun();
+				this.getstatistics(data);
+				this.getDistributionConfig();
+				this.getuserVip();
+				this.getuserMoney();
+				this.getVip();
+				this.getOpenPonints();
+				// console.log(this);
+			});
+		},
 
-			getuserMoney() {
-				let is_open_wallet = JSON.parse(req.getStorage('configRes')).is_open_wallet;
+		getuserMoney() {
+			let is_open_wallet = JSON.parse(req.getStorage('configRes')).is_open_wallet;
 
-				if (is_open_wallet) {
-					if (JSON.parse(is_open_wallet).isOpenWallet == 1) {
-						route.extendNew({}, res => {
-							// console.log(parseFloat(res.all).toFixed(2));
-							if (res) this.setData({
+			if (is_open_wallet) {
+				if (JSON.parse(is_open_wallet).isOpenWallet == 1) {
+					route.extendNew({}, res => {
+						// console.log(parseFloat(res.all).toFixed(2));
+						if (res)
+							this.setData({
 								userMoney: parseFloat(res.all).toFixed(2)
 							});
-						});
-					}
+					});
 				}
-			},
-			getNewsCount(){
-				req.getRequest('/api/v3/fabulous/countComment',{},res=>{
-					this.newsCount = res;
-				})
-			},
+			}
+		},
+
+		getAbout() {
+			var _this = this;
 
-			getAbout() {
-				var _this = this;
+			req.getRequest('/api/config', {}, function(res) {
+				_this.phone = res.CONFIG_SERVICE_HOT_MOBILE;
+				_this.config = res;
+				_this.setData({
+					istetphone: res.user_bind_mobile,
+					logo: res.CONFIG_PROJECT_LOGO,
+					name: res.CONFIG_PROJECT_TITLE
+				});
 
-				req.getRequest('/api/config', {}, function(res) {
-					_this.phone = res.CONFIG_SERVICE_HOT_MOBILE;
-					_this.config = res;
+				// console.log(res);
+				if (res && res.is_open_wallet) {
 					_this.setData({
-						istetphone: res.user_bind_mobile,
-						logo: res.CONFIG_PROJECT_LOGO,
-						name: res.CONFIG_PROJECT_TITLE
+						is_open_wallet: JSON.parse(res.is_open_wallet)
 					});
+				}
 
-					// console.log(res);
-					if (res && res.is_open_wallet) {
-						_this.setData({
-							is_open_wallet: JSON.parse(res.is_open_wallet)
-						});
-					}
-
-					if (res.is_open_shop) {
-						_this.is_open_shop = res.is_open_shop;
-					}
+				if (res.is_open_shop) {
+					_this.is_open_shop = res.is_open_shop;
+				}
 
-					// if (res.user_bind_mobile == '1') {
-					// 	let userInfo = req.getStorage('userInfo');
+				// if (res.user_bind_mobile == '1') {
+				// 	let userInfo = req.getStorage('userInfo');
 
-					// 	if (userInfo && (userInfo.mobile == null || userInfo.mobile == '')) {
-					// 		app.globalData.openPage('pages/authorize/authorize?bindmobile=1');
-					// 	}
-					// }
-				});
-				// 是否开启积分商城
-				req.getRequest('/api/params/value', {
+				// 	if (userInfo && (userInfo.mobile == null || userInfo.mobile == '')) {
+				// 		app.globalData.openPage('pages/authorize/authorize?bindmobile=1');
+				// 	}
+				// }
+			});
+			// 是否开启积分商城
+			req.getRequest(
+				'/api/params/value',
+				{
 					type: 'Open_Points_Mall'
-				}, res => {
+				},
+				res => {
 					this.setData({
 						Open_Points_Mall: res
 					});
-				});
-			},
-
-			getphonenumber(event) {
-				const detail = event.detail;
-
-				const _ts = this;
-
-				if (!detail || !detail.encryptedData || !detail.iv) return false;
-				req.postRequest('/api/weixin/mobile', {
-					encryptedData: detail.encryptedData,
-					iv: detail.iv,
-					sessionKey: this.sessionKey
-				}, res => {
-					_ts.getMy();
-				});
-			},
+				}
+			);
+		},
 
-			callPhone() {
-				if (!req.isLogin()) return false;
+		callPhone() {
+			if (req.isLogins(true)) {
 				uni.makePhoneCall({
 					phoneNumber: this.phone
 				});
-			},
-
-			showRegister() {
-				//显示注册会员弹窗
-				this.setData({
-					isHide: false
-				});
-			},
-
-			hideRegister() {
-				//隐藏注册会员弹窗
-				this.setData({
-					isHide: true
-				});
-			},
+			}
+		},
 
-			goUrl() {
-				app.globalData.openPage('mine/vip/vip');
-			},
+		goUrl() {
+			app.globalData.openPage('mine/vip/vip');
+		},
 
-			// 门店统计
-			getstatistics(data) {
-				let from = {};
+		// 门店统计
+		getstatistics(data) {
+			let from = {};
 
-				if (data.listShopBase && data.listShopBase != null && data.listShopBase.length > 0) {
-					from.shopId = data.listShopBase[0].id;
-				}
+			if (data.listShopBase && data.listShopBase != null && data.listShopBase.length > 0) {
+				from.shopId = data.listShopBase[0].id;
+			}
 
-				if (data.listMerchant && data.listMerchant != null && data.listMerchant.length > 0 && data.listShopBase
-					.length < 1) {
-					from.merchantId = data.listMerchant[0].id;
-				}
+			if (data.listMerchant && data.listMerchant != null && data.listMerchant.length > 0 && data.listShopBase.length < 1) {
+				from.merchantId = data.listMerchant[0].id;
+			}
 
-				req.getRequest('/api/order/statistics', from, data => {
-					this.setData({
-						statistics: data
-					});
-					console.log(data);
+			req.getRequest('/api/order/statistics', from, data => {
+				this.setData({
+					statistics: data
 				});
-			},
-			getRule() {
-				let that = this;
-				req.getRequest('/api/integral/config', {}, res => {
-					if (res && res.length > 0) {
-						res.map(it => {
-							if (it.illustrate && it.illustrate.indexOf('签到') > -1) {
-								if (it.state == 2) {
-									that.isShowSign = true;
-								}
+				console.log(data);
+			});
+		},
+		getRule() {
+			let that = this;
+			req.getRequest('/api/integral/config', {}, res => {
+				if (res && res.length > 0) {
+					res.map(it => {
+						if (it.illustrate && it.illustrate.indexOf('签到') > -1) {
+							if (it.state == 2) {
+								that.isShowSign = true;
 							}
-						})
-					}
-				})
-			},
-			getVipListOrg() {
-				if (this.vipList && this.userinfovip) {
-					if(!this.userinfovip.levelGrade){
-						this.vipList.map((it,index)=>{
-							this.vipList[0].isShowInfo = true;
-						})
-					}else{
-						this.vipList.map((it,index)=>{
-							if(this.userinfovip.level == it.id){
-								if(index < this.vipList.length-1){
-									this.vipList[index+1].isShowInfo = true;
-								}
+						}
+					});
+				}
+			});
+		},
+		getVipListOrg() {
+			if (this.vipList && this.userinfovip) {
+				if (!this.userinfovip.levelGrade) {
+					this.vipList.map((it, index) => {
+						this.vipList[0].isShowInfo = true;
+					});
+				} else {
+					this.vipList.map((it, index) => {
+						if (this.userinfovip.level == it.id) {
+							if (index < this.vipList.length - 1) {
+								this.vipList[index + 1].isShowInfo = true;
 							}
-						})
-					}
+						}
+					});
 				}
-			},
-			getVip() {
-				req.getRequest('/api/levelStrategy/userLevelList', {}, data => {
-					if (data && data.length > 0) {
-						data.map((it,index) => {
-							it.upgradeTerm = JSON.parse(it.upgradeTerm)
-							it.isShowInfo = false
-							// if(index == 0) it.isShowInfo = true;
-							return it;
-						})
-						this.vipList = data
-						this.getVipListOrg();
-					}
-				});
-			},
-			showInfo(index) {
-				if(!this.vipList[index].isShowInfo){
-					this.vipList.map(it=>{
+			}
+		},
+		getVip() {
+			req.getRequest('/api/levelStrategy/userLevelList', {}, data => {
+				if (data && data.length > 0) {
+					data.map((it, index) => {
+						it.upgradeTerm = JSON.parse(it.upgradeTerm);
 						it.isShowInfo = false;
-						return it
-					})
+						// if(index == 0) it.isShowInfo = true;
+						return it;
+					});
+					this.vipList = data;
+					this.getVipListOrg();
 				}
-				this.vipList[index].isShowInfo = !this.vipList[index].isShowInfo
-			},
-			closeUpdate(){
-				this.isShowUpdate = false
-			},
-			updateInfo(e){
-				this.isUpdateInfo = e
-				this.getMy()
-			},
-			updateMobile(e){
-				this.isUpdateMobile = e
-				this.getMy()
-			},
-			// 判断强制绑定手机号
-			// isbindmobile() {
-			//   if (req.getStorage('configRes')) {
-			//     let configRes = JSON.parse(req.getStorage('configRes'))
-			//     this.setData({ istetphone: configRes.user_bind_mobile, logo: configRes.CONFIG_PROJECT_LOGO, name: configRes.CONFIG_PROJECT_TITLE })
-			//   } else {
-			//     req.g('/api/config', (res) => {
-			//       req.setStorage('configRes', JSON.stringify(res))
-			//       this.setData({ istetphone: res.user_bind_mobile, logo: res.CONFIG_PROJECT_LOGO, name: res.CONFIG_PROJECT_TITLE })
-			//     })
-			//   }
-			//   if(this.data.istetphone=='1'){
-			//       // 获取用户手机号
-			//     let userInfo= req.getStorage('userInfo')
-			//     if(userInfo.mobile==null||userInfo.mobile==''){
-			//       console.log("获取用户手机号===============================")
-			//       app.openPage('pages/authorize/authorize?bindmobile=1')
-			//     }
-			//   }
-			// },
-
-
-		}
-	};
+			});
+		},
+		showInfo(index) {
+			if (!this.vipList[index].isShowInfo) {
+				this.vipList.map(it => {
+					it.isShowInfo = false;
+					return it;
+				});
+			}
+			this.vipList[index].isShowInfo = !this.vipList[index].isShowInfo;
+		},
+		closeUpdate() {
+			this.isShowUpdate = false;
+		},
+		updateInfo(e) {
+			this.isUpdateInfo = e;
+			this.getMy();
+		},
+		updateMobile(e) {
+			this.isUpdateMobile = e;
+			this.getMy();
+		},
+		// 判断强制绑定手机号
+		// isbindmobile() {
+		//   if (req.getStorage('configRes')) {
+		//     let configRes = JSON.parse(req.getStorage('configRes'))
+		//     this.setData({ istetphone: configRes.user_bind_mobile, logo: configRes.CONFIG_PROJECT_LOGO, name: configRes.CONFIG_PROJECT_TITLE })
+		//   } else {
+		//     req.g('/api/config', (res) => {
+		//       req.setStorage('configRes', JSON.stringify(res))
+		//       this.setData({ istetphone: res.user_bind_mobile, logo: res.CONFIG_PROJECT_LOGO, name: res.CONFIG_PROJECT_TITLE })
+		//     })
+		//   }
+		//   if(this.data.istetphone=='1'){
+		//       // 获取用户手机号
+		//     let userInfo= req.getStorage('userInfo')
+		//     if(userInfo.mobile==null||userInfo.mobile==''){
+		//       console.log("获取用户手机号===============================")
+		//       app.openPage('pages/authorize/authorize?bindmobile=1')
+		//     }
+		//   }
+		// },
+	},
+	created() {
+		const systemInfo = uni.getSystemInfoSync();
+		// px转换到rpx的比例
+		let pxToRpxScale = 750 / systemInfo.windowWidth;
+		let systems = {
+			ktxStatusHeight: systemInfo.statusBarHeight * pxToRpxScale, // 状态栏的高度
+			navigationHeight: 44 * pxToRpxScale // 导航栏的高度
+		};
+		systems.barHeight = systems.ktxStatusHeight + systems.navigationHeight;
+		this.systems = systems;
+	}
+};
 </script>
 <style>
-	@import "./user.css";
+@import './user.css';
 </style>

BIN
static/images/jia.png


BIN
static/images/link.png


BIN
static/images/topic.png


BIN
static/pages/images/activity.png


BIN
static/pages/images/activity_h.png


BIN
static/pages/images/back_black.png


BIN
static/pages/images/back_white.png


BIN
static/pages/images/back_white1.png


BIN
static/pages/images/cy.png


BIN
static/pages/images/cy_hui.png


BIN
static/pages/images/dh.png


Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels