Bladeren bron

Merge branch 'master' of http://git.zthymaoyi.com/wangchao/businessCard

achao 2 jaren geleden
bovenliggende
commit
86a2b86a8d
26 gewijzigde bestanden met toevoegingen van 1583 en 403 verwijderingen
  1. 1 1
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/card/ICardNewsInfoService.java
  2. 49 4
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/card/impl/CardNewsInfoServiceImpl.java
  3. 10 8
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/card/impl/CircleManagementInfoServiceImpl.java
  4. 8 0
      unimall-data/src/main/java/com/iotechn/unimall/data/domain/CardNewsInfo.java
  5. 104 0
      xiaochengxu/components/point-share/index.vue
  6. 3 3
      xiaochengxu/js_sdk/share.js
  7. 194 123
      xiaochengxu/pages/cardHolder/cardHolder.vue
  8. 23 7
      xiaochengxu/pages/cardHolder/notice.vue
  9. 448 25
      xiaochengxu/pages/circle/changeCard.vue
  10. 28 22
      xiaochengxu/pages/circle/circle.vue
  11. 1 1
      xiaochengxu/pages/circle/createCirclce.vue
  12. 6 3
      xiaochengxu/pages/circle/detail.vue
  13. 11 29
      xiaochengxu/pages/mySet/cardType.vue
  14. 25 12
      xiaochengxu/pages/mySet/help.vue
  15. 600 131
      xiaochengxu/pages/mySet/myInfo.vue
  16. 69 31
      xiaochengxu/pages/mySet/mySet.vue
  17. 3 3
      xiaochengxu/pages/mySet/set.vue
  18. BIN
      xiaochengxu/static/imgs/card/bg5.png
  19. BIN
      xiaochengxu/static/imgs/card/news.png
  20. BIN
      xiaochengxu/static/imgs/card/right-bgc.png
  21. BIN
      xiaochengxu/static/imgs/card/searchdel.png
  22. BIN
      xiaochengxu/static/imgs/logo.png
  23. BIN
      xiaochengxu/static/imgs/mySet/point_bg.png
  24. BIN
      xiaochengxu/static/imgs/mySet/point_btn.png
  25. BIN
      xiaochengxu/static/imgs/mySet/question1.png
  26. BIN
      xiaochengxu/static/imgs/mySet/question2.png

+ 1 - 1
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/card/ICardNewsInfoService.java

@@ -20,7 +20,7 @@ import java.util.Date;
 @HttpOpenApi(group = "admin.unimall.cardNewsInfo", description = "记录消息信息")
 public interface ICardNewsInfoService{
 	@HttpMethod(description = "新增", permissionName = "记录消息信息管理")
-	public Boolean add(@NotNull @HttpParam(name = "cardNewsInfo", type = HttpParamType.COMMON, description = "记录消息信息") CardNewsInfo cardNewsInfo)throws ServiceException;
+	public String add(@NotNull @HttpParam(name = "cardNewsInfo", type = HttpParamType.COMMON, description = "记录消息信息") CardNewsInfo cardNewsInfo)throws ServiceException;
 
 	@HttpMethod(description = "列表", permissionName = "记录消息信息管理")
 	public Page<CardNewsInfo> list(

+ 49 - 4
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/card/impl/CardNewsInfoServiceImpl.java

@@ -4,7 +4,10 @@ import java.util.List;
 
 import com.iotechn.unimall.admin.api.card.ICardNewsInfoService;
 import com.iotechn.unimall.data.domain.CardNewsInfo;
+import com.iotechn.unimall.data.domain.CommonUserInfo;
 import com.iotechn.unimall.data.mapper.CardNewsInfoMapper;
+import com.iotechn.unimall.data.mapper.CommonUserInfoMapper;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.ibatis.session.RowBounds;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -28,13 +31,47 @@ import org.springframework.transaction.annotation.Transactional;
 public class CardNewsInfoServiceImpl implements ICardNewsInfoService {
 	@Autowired
 	private CardNewsInfoMapper cardNewsInfoMapper;
+	@Autowired
+	private CommonUserInfoMapper commonUserInfoMapper;
 	
 	@Override
-	public Boolean add(CardNewsInfo cardNewsInfo) throws ServiceException {
+	public String add(CardNewsInfo cardNewsInfo) throws ServiceException {
 		Date now = new Date();
-		cardNewsInfo.setGmtCreate(now);
-		cardNewsInfo.setGmtUpdate(now);
-		return cardNewsInfoMapper.insert(cardNewsInfo)>0;
+		//全部发送
+		if (cardNewsInfo.getAllFlag()!=null){
+			List<CommonUserInfo> commonUserInfoList=commonUserInfoMapper.selectList(new EntityWrapper<CommonUserInfo>()
+			.eq("delete_flag","0"));
+			if (CollectionUtils.isNotEmpty(commonUserInfoList)) {
+				for (CommonUserInfo commonUserInfo : commonUserInfoList) {
+					cardNewsInfo.setNewsTitle(cardNewsInfo.getNewsTitle());
+					cardNewsInfo.setNewsContent(cardNewsInfo.getNewsContent());
+					cardNewsInfo.setReceiveId(commonUserInfo.getId());
+					cardNewsInfo.setGmtCreate(now);
+					cardNewsInfo.setGmtUpdate(now);
+					cardNewsInfoMapper.insert(cardNewsInfo);
+//				//个推
+//				geTuiUtils.initGeTui(cardNewsInfo1.getReceiveId());
+//				geTuiUtils.pushByCid(cardNewsInfo1.getNewsTitle(),cardNewsInfo1.getNewsContent(),cardNewsInfo1.getReceiveId());
+				}
+			}
+		}
+		//选择发送
+		else {
+			List<CardNewsInfo> cardNewsInfoList = cardNewsInfo.getCardNewsInfoList();
+			if (CollectionUtils.isNotEmpty(cardNewsInfoList)) {
+				for (CardNewsInfo cardNewsInfo1 : cardNewsInfoList) {
+					cardNewsInfo1.setNewsTitle(cardNewsInfo.getNewsTitle());
+					cardNewsInfo1.setNewsContent(cardNewsInfo.getNewsContent());
+					cardNewsInfo1.setGmtCreate(now);
+					cardNewsInfo1.setGmtUpdate(now);
+					cardNewsInfoMapper.insert(cardNewsInfo1);
+//				//个推
+//				geTuiUtils.initGeTui(cardNewsInfo1.getReceiveId());
+//				geTuiUtils.pushByCid(cardNewsInfo1.getNewsTitle(),cardNewsInfo1.getNewsContent(),cardNewsInfo1.getReceiveId());
+				}
+			}
+		}
+		return "ok";
 	}
 
 	@Override
@@ -69,6 +106,14 @@ public class CardNewsInfoServiceImpl implements ICardNewsInfoService {
 				}
 							wrapper.eq("delete_flag", 0);
 		List<CardNewsInfo> list = cardNewsInfoMapper.selectPage(new RowBounds((page - 1) * limit, limit), wrapper);
+		if (CollectionUtils.isNotEmpty(list)){
+			for (CardNewsInfo cardNewsInfo:list){
+				CommonUserInfo commonUserInfo=commonUserInfoMapper.selectById(cardNewsInfo.getReceiveId());
+				if (commonUserInfo!=null){
+					cardNewsInfo.setReceiveName(commonUserInfo.getNickname());
+				}
+			}
+		}
 		Integer count = cardNewsInfoMapper.selectCount(wrapper);
 		return new Page<CardNewsInfo>(list, page, limit, count);
 	}

+ 10 - 8
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/card/impl/CircleManagementInfoServiceImpl.java

@@ -136,14 +136,16 @@ public class CircleManagementInfoServiceImpl implements ICircleManagementInfoSer
     @Override
     public CircleManagementInfo get(Long id, Long commonId) throws ServiceException {
         CircleManagementInfo circleManagementInfo = circleManagementInfoMapper.selectById(id);
-        CircleCardInfo circleCardInfo = new CircleCardInfo();
-        circleCardInfo.setCommonId(commonId);
-        circleCardInfo.setCircleId(circleManagementInfo.getId());
-        circleCardInfo.setDeleteFlag(0l);
-        CircleCardInfo circleCardInfo1 = circleCardInfoMapper.selectOne(circleCardInfo);
-        //我加入该圈子的名片
-        if (circleCardInfo1 != null) {
-            circleManagementInfo.setCircleCardInfo(circleCardInfo1);
+        if (commonId!=null) {
+            CircleCardInfo circleCardInfo = new CircleCardInfo();
+            circleCardInfo.setCommonId(commonId);
+            circleCardInfo.setCircleId(circleManagementInfo.getId());
+            circleCardInfo.setDeleteFlag(0l);
+            CircleCardInfo circleCardInfo1 = circleCardInfoMapper.selectOne(circleCardInfo);
+            //我加入该圈子的名片
+            if (circleCardInfo1 != null) {
+                circleManagementInfo.setCircleCardInfo(circleCardInfo1);
+            }
         }
         List<CircleCardInfo> circleCardInfoList = circleCardInfoMapper.selectList(new EntityWrapper<CircleCardInfo>()
                 .eq("circle_id", circleManagementInfo.getId())

+ 8 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/domain/CardNewsInfo.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.annotations.TableName;
 import lombok.Data;
 import com.baomidou.mybatisplus.annotations.TableField;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 记录消息信息对象 card_news_info
@@ -69,6 +70,13 @@ public class CardNewsInfo extends SuperDO {
     @TableField("delete_flag")
     private Long deleteFlag;
 
+    @TableField(exist = false)
+    private List<CardNewsInfo> cardNewsInfoList;
+    /** 全部发送标识 */
+    @TableField(exist = false)
+    private String allFlag;
+    @TableField(exist = false)
+    private String receiveName;
 
     @Override
     public String toString() {

+ 104 - 0
xiaochengxu/components/point-share/index.vue

@@ -0,0 +1,104 @@
+<template>
+	<view>
+        <!--<tui-bottom-popup :show="show" @close="close" :zIndex="99999">
+            <view class="tui-modal-box" >
+                <view :style="{width:width?width:'100%'}" style="position: absolute;top: 0;right: 0;">
+                    <view><image src="/static/images/share/point_bg.png" style="width: 100%;" mode="widthFix" /></view>
+                    <view><image src="/static/images/share/point_btn.png" style="width: 50%;" mode="widthFix" /></view>
+                </view>
+            </view>
+        </tui-bottom-popup>-->
+        <!--<view class="cu-modal" :class="{'show':show}" >
+            <view :style="{width:width?width:'100%'}" style="position: absolute;top: 0;right: 0;">
+                <view><image src="/static/images/share/point_bg.png" style="width: 100%;" mode="widthFix" /></view>
+                <view><image src="/static/images/share/point_btn.png" style="width: 50%;" mode="widthFix" /></view>
+            </view>
+        </view>-->
+
+        <view class="tui-alert-mask" :class="[show?'tui-alert-mask-show':'']"  >
+            <view :style="{width:width?width:'100%'}" style="position: absolute;top: 0;right: 0;">
+                <view>
+                    <image src="@/static/imgs/mySet/point_bg.png" style="width: 100%;" mode="widthFix" />
+                </view>
+                <view @click="close" style="text-align: center;">
+                    <image src="@/static/imgs/mySet/point_btn.png" style="width: 60%;" mode="widthFix" />
+                </view>
+            </view>
+        </view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: 'pointShare',
+		props: {
+			show: {
+				type: Boolean,
+				default: false
+			},
+			width: {
+				type: String,
+				default: '100%'
+			},
+		},
+		methods: {
+			close() {
+				this.$emit("close",{})
+			},
+			btnPay(){
+                this.$emit("payment",{type:this.payType})
+			},
+            payTypeChange(e){
+				this.payType = e.detail.value
+			}
+		}
+	}
+</script>
+
+<style scoped>
+    .tui-alert-mask1 {
+        position: fixed;
+        width: 100%;
+        height: 100%;
+        top: 0;
+        left: 0;
+        right: 0;
+        bottom: 0;
+        background-color: rgba(0, 0, 0, 0.8);
+        z-index: 99996;
+        transition: all 0.3s ease-in-out;
+        opacity: 0;
+        visibility: hidden;
+    }
+    .tui-alert-mask {
+        position: fixed;
+        top: 0;
+        right: 0;
+        bottom: 0;
+        left: 0;
+        z-index: 1110;
+        opacity: 0;
+        outline: 0;
+        text-align: center;
+        -ms-transform: scale(1.185);
+        transform: scale(1.185);
+        backface-visibility: hidden;
+        perspective: 2000upx;
+        background: rgba(0, 0, 0, 0.6);
+        transition: all 0.3s ease-in-out 0s;
+        pointer-events: none;
+    }
+    .tui-alert-mask-show {
+        opacity: 1;
+        transition-duration: 0.3s;
+        -ms-transform: scale(1);
+        transform: scale(1);
+        overflow-x: hidden;
+        overflow-y: auto;
+        pointer-events: auto;
+    }
+    .tui-alert-mask-show1 {
+        visibility: visible;
+        opacity: 1;
+    }
+</style>

+ 3 - 3
xiaochengxu/js_sdk/share.js

@@ -39,9 +39,9 @@ export default {
 	// 分享到朋友圈
 	onShareTimeline() {
 		return {
-			title: '商通线上商城',
-			path: '/pages/index/index',
-			imageUrl: 'https://cdn.uviewui.com/uview/swiper/1.jpg'
+			title: '名片box',
+			path: '/pages/cardHolder/cardHolder',
+			imageUrl: 'https://taohaoliang.oss-cn-beijing.aliyuncs.com/pcfiles/%E5%90%8D%E7%89%87box.png'
 		};
 	},
 	methods: {

+ 194 - 123
xiaochengxu/pages/cardHolder/cardHolder.vue

@@ -11,13 +11,13 @@
 				<view class="left flex">
 					<uni-icons type="search" size="24" color="#9199af"></uni-icons>
 					<text class="search-val"> {{searchVal?searchVal:'搜索名片'}}</text>
-					<uni-icons type="closeempty" size="24" @click.native.stop="delSearchVal"
-						v-if="searchVal"></uni-icons>
+					<uni-icons type="closeempty" size="24" @click.native.stop="delSearchVal" v-if="searchVal">
+					</uni-icons>
 				</view>
 
 				<view class="right">
-					<uni-icons type="closeempty" size="24" @click.native.stop="delVal" color="#9199af"
-						v-if="searchVal"></uni-icons>
+					<image style='width:32rpx;height:32rpx;' v-if="searchVal" @click.native.stop="delSearchVal"
+						src="../../static/imgs/card/searchdel.png" mode="widthFix"></image>
 					<uni-icons type="mic" size="24" @click.native.stop="micOpen" color="#9199af"></uni-icons>
 				</view>
 			</view>
@@ -38,10 +38,6 @@
 				@init="mescrollInit" @up="upCallback" @down="downCallback">
 				<view v-for='(item,index) in cardHolderList' @longpress="longpress" class="item flex">
 					<!-- <view class="card-list-item" style="background:red"> -->
-					<u-checkbox-group v-if='islongPress' placement="column" @change="checkboxChange($event,index)">
-						<u-checkbox :name='index+1' :checked='item.checked' :customStyle="{marginBottom: '8px'}">
-						</u-checkbox>
-					</u-checkbox-group>
 					<view class="card-list-item"
 						:style="'background:url('+item.currentBackground+');background-size:100% 100%'">
 						<view class="card-content style1" v-if="item.cuttentTemplate==1">
@@ -58,18 +54,27 @@
 									{{item.companyName}}
 								</view>
 								<view class="row3 flex" @click="">
-									<uni-icons type="map-filled" size="20" style="margin-right: 20rpx;"
-										color="#5e6d82"></uni-icons>{{ item.province }}{{ item.city }}{{ item.area }}
+									<u--image :showLoading="true" src="/static/imgs/card/address1.png" width="13px"
+										height="16px"></u--image>
+									<view class='icon-text'>{{ item.province }}{{ item.city }}{{ item.area }}</view>
 								</view>
 								<view class="row4 flex">
-									<uni-icons type="phone-filled" size="20" style="margin-right: 20rpx;"
-										color="#5e6d82"></uni-icons>{{ item.phone }}
+									<u--image :showLoading="true" src="/static/imgs/card/phone1.png" width="12px"
+										height="13px"></u--image>
+									<view class='icon-text'>{{ item.phone }}</view>
 								</view>
-								<view @click='remarkEdit(item)' class="row2" style="color: #808080">
-									<uni-icons type="redo" size="20" style="margin-right: 20rpx;"></uni-icons>
-									<text>{{item.remark?item.remark:'单击添加备注'}}</text>
+								<view @click='remarkEdit(item)' class="row2 flex" style="color: #808080">
+									<u--image :showLoading="true" src="/static/imgs/card/remark1.png" width="10px"
+										height="12px"></u--image>
+									<view class='icon-text'>{{item.remark?item.remark:'单击添加备注'}}</view>
 								</view>
 							</view>
+							<u-checkbox-group v-if='islongPress' placement="column"
+								@change="checkboxChange($event,index)">
+								<u-checkbox iconColor='#4977FC' activeColor="#fff" :name='index+1'
+									:checked='item.checked' :customStyle="{marginBottom: '8px'}">
+								</u-checkbox>
+							</u-checkbox-group>
 						</view>
 						<view class="card-content style1 flex-between" v-if="item.cuttentTemplate==2">
 							<view class="right">
@@ -81,16 +86,19 @@
 									{{item.companyName}}
 								</view>
 								<view class="row3 flex">
-									<uni-icons type="map-filled" size="20" style="margin-right: 20rpx;"
-										color="#5e6d82"></uni-icons>{{ item.province }}{{ item.city }}{{ item.area }}
+									<u--image :showLoading="true" src="/static/imgs/card/address3.png" width="13px"
+										height="16px"></u--image>
+									<view class='icon-text'>{{ item.province }}{{ item.city }}{{ item.area }}</view>
 								</view>
 								<view class="row4 flex">
-									<uni-icons type="phone-filled" size="20" style="margin-right: 20rpx;"
-										color="#5e6d82"></uni-icons>{{ item.phone }}
+									<u--image :showLoading="true" src="/static/imgs/card/phone3.png" width="12px"
+										height="13px"></u--image>
+									<view class='icon-text'>{{ item.phone }}</view>
 								</view>
-								<view @click='remarkEdit(item)' class="row2" style="color: #808080">
-									<uni-icons type="redo" size="20" style="margin-right: 20rpx;"></uni-icons>
-									<text>{{item.remark?item.remark:'单击添加备注'}}</text>
+								<view @click='remarkEdit(item)' class="row2 flex" style="color: #808080">
+									<u--image :showLoading="true" src="/static/imgs/card/remark3.png" width="10px"
+										height="12px"></u--image>
+									<view class='icon-text'>{{item.remark?item.remark:'单击添加备注'}}</view>
 								</view>
 							</view>
 							<view class="left">
@@ -99,6 +107,12 @@
 								<u--image :showLoading="true" src="/./../static/imgs/card/defaulthead.png" width="66px"
 									height="66px" shape="circle" v-else></u--image>
 							</view>
+							<u-checkbox-group v-if='islongPress' placement="column"
+								@change="checkboxChange($event,index)">
+								<u-checkbox iconColor='#4977FC' activeColor="#fff" :name='index+1'
+									:checked='item.checked' :customStyle="{marginBottom: '8px'}">
+								</u-checkbox>
+							</u-checkbox-group>
 						</view>
 						<view class="card-content style2" v-if="item.cuttentTemplate==3">
 							<view class="top">
@@ -119,19 +133,28 @@
 								</view>
 								<view class="right">
 									<view class="row1 flex">
-										<uni-icons type="map-filled" size="20" style="margin-right: 20rpx;"
-											color="#5e6d82"></uni-icons>{{ item.province }}{{ item.city }}{{ item.area }}
+										<u--image :showLoading="true" src="/static/imgs/card/address1.png" width="13px"
+											height="16px"></u--image>
+										<view class='icon-text'>{{ item.province }}{{ item.city }}{{ item.area }}</view>
 									</view>
 									<view class="row2 flex">
-										<uni-icons type="phone-filled" size="20" style="margin-right: 20rpx;"
-											color="#5e6d82"></uni-icons>{{ item.phone }}
+										<u--image :showLoading="true" src="/static/imgs/card/phone1.png" width="12px"
+											height="13px"></u--image>
+										<view class='icon-text'>{{ item.phone }}</view>
 									</view>
-									<view @click='remarkEdit(item)' class="row2" style="color: #808080">
-										<uni-icons type="redo" size="20" style="margin-right: 20rpx;"></uni-icons>
-										<text>{{item.remark?item.remark:'单击添加备注'}}</text>
+									<view @click='remarkEdit(item)' class="row2 flex" style="color: #808080">
+										<u--image :showLoading="true" src="/static/imgs/card/remark1.png" width="10px"
+											height="12px"></u--image>
+										<view class='icon-text'>{{item.remark?item.remark:'单击添加备注'}}</view>
 									</view>
 								</view>
 							</view>
+							<u-checkbox-group v-if='islongPress' placement="column"
+								@change="checkboxChange($event,index)">
+								<u-checkbox iconColor='#4977FC' activeColor="#fff" :name='index+1'
+									:checked='item.checked' :customStyle="{marginBottom: '8px'}">
+								</u-checkbox>
+							</u-checkbox-group>
 						</view>
 						<view class="card-content style2" v-if="item.cuttentTemplate==4">
 							<view class="top">
@@ -153,19 +176,30 @@
 								</view>
 								<view class="right">
 									<view class="row1 flex">
-										<uni-icons type="map-filled" size="20" style="margin-right: 20rpx;"
-											color="#5e6d82"></uni-icons>{{ item.province }}{{ item.city }}{{ item.area }}
+										<u--image :showLoading="true" src="/static/imgs/card/address2.png" width="13px"
+											height="16px"></u--image>
+										<view class='icon-text'>{{ item.province }}{{ item.city }}{{ item.area }}</view>
 									</view>
 									<view class="row2 flex">
-										<uni-icons type="phone-filled" size="20" style="margin-right: 20rpx;"
-											color="#5e6d82"></uni-icons>{{ item.phone }}
+										<u--image :showLoading="true" src="/static/imgs/card/phone2.png" width="12px"
+											height="13px"></u--image>
+										<view class='icon-text'>{{ item.phone }}</view>
 									</view>
-									<view @click='remarkEdit(item)' class="row2" style="color: #808080">
-										<uni-icons type="redo" size="20" style="margin-right: 20rpx;"></uni-icons>
-										<text>{{item.remark?item.remark:'单击添加备注'}}</text>
+									<view @click='remarkEdit(item)' class="row2 flex" style="color: #808080">
+										<u--image :showLoading="true" src="/static/imgs/card/remark2.png" width="10px"
+											height="12px"></u--image>
+										<view :style='item.remark?"color:#000;":"color:#808080;"' class='icon-text'>
+											{{item.remark?item.remark:'单击添加备注'}}
+										</view>
 									</view>
 								</view>
 							</view>
+							<u-checkbox-group v-if='islongPress' placement="column"
+								@change="checkboxChange($event,index)">
+								<u-checkbox iconColor='#4977FC' activeColor="#fff" :name='index+1'
+									:checked='item.checked' :customStyle="{marginBottom: '8px'}">
+								</u-checkbox>
+							</u-checkbox-group>
 						</view>
 						<view class="car-bottom flex">
 							<view class="left">
@@ -181,77 +215,39 @@
 							</view>
 						</view>
 					</view>
-					<!-- <view class="left">
-						<view class="top flex-row-center">
-							<image :src="item.headSculpture" mode="widthFix" class="img"></image>
-						</view>
-						<view class="bottom flex flex-evenly">
-							<uni-icons @click="toHome(item)" type="home" size="20"></uni-icons>
-							<text @click='switchType(item)'>{{item.classify?item.classifyName:'默'}}</text>
-							<uni-icons @click='share(item)' type="redo" size="20" color=''></uni-icons>
-						</view>
-					</view>
-					<view class="right">
-						<view class="row1 flex">
-							<text>{{item.name}}</text>
-							<text class="line"></text>
-							<text>{{item.post}}</text>
-							<u-checkbox-group v-if='islongPress' placement="column"
-								@change="checkboxChange($event,index)">
-								<u-checkbox :name='index+1' :checked='item.checked'
-									:customStyle="{marginBottom: '8px'}">
-								</u-checkbox>
-							</u-checkbox-group>
-						</view>
-						<view class="row2">
-							{{item.companyName}}
-						</view>
-						<view class="row3" @click="toMap(item)">
-							<uni-icons type="redo" size="20"></uni-icons>
-							<text>{{item.province}}{{item.city}}{{item.area}}{{item.detailedAddress}}</text>
-						</view>
-						<view class="row3">
-							<uni-icons type="redo" size="20"></uni-icons>
-							<text>{{item.phone}}</text>
-						</view>
-						<view @click='remarkEdit(item)' class="row3">
-							<uni-icons type="redo" size="20"></uni-icons>
-							<text>{{item.remark?item.remark:'单击添加备注'}}</text>
-						</view>
-					</view> -->
 				</view>
 			</mescroll-body>
 		</view>
 		<view class="del-style" v-if="islongPress">
 			<view class="left">
 				<text class="qx" @click="islongPress=false">取消</text>
-				<text class="del" @click="delShow=true">删除</text>
+				<text class="del" @click="del">删除</text>
 			</view>
-			<view class="right">
-				全选
+			<view style='width:128rpx;' class="right flex">
+				<view>全选</view>
+				<u-checkbox-group class='' placement="column" @change="checkboxChange($event,'')">
+					<u-checkbox iconColor='#4977FC' activeColor="#fff" name='全选' :checked='checked'
+						:customStyle="{marginBottom: '8px',position: 'relative',top: '-19px',right:'-8px'}">
+					</u-checkbox>
+				</u-checkbox-group>
 			</view>
 
 		</view>
-		<u-picker :show="isShowType" :columns="typeColumns" keyName="circleName" title="选择分类" @close="isShowType=false"
-			@cancel="isShowType=false" closeOnClickOverlay @confirm="typeConfirm"></u-picker>
+		<u-picker :show="isShowType" :columns="typeColumns" keyName="circleName" :title="type == 2?'修改分类':'选择分类'"
+			@close="isShowType=false" @cancel="isShowType=false" closeOnClickOverlay @confirm="typeConfirm"></u-picker>
 		<u-toast ref="uToast"></u-toast>
-		<u-modal :show="delShow" title="提示" showCancelButton='true' @cancel="delShow=false" @confirm="delConfirm"
-			:content='"已选中"+this.checkedList.length+"张名片,确定删除?"'></u-modal>
+		<u-modal :show="delShow" title="提示" confirmText='确定' showCancelButton='true' @cancel="delShow=false"
+			@confirm="delConfirm" :content='"已选中"+this.checkedList.length+"张名片,确定删除?"'></u-modal>
 		<u-modal :show="modalShow" @confirm='remarkConfirm' :confirmColor="remark?'#2979ff':'#ccc'"
 			showCancelButton='true' title="备注">
 			<view class="slot-content">
 				<u--textarea v-model="remark" placeholder="输入备注,不超过150个字"></u--textarea>
 			</view>
 		</u-modal>
-		<view v-if='qrcodeShow' class="shade">
-			<view class='qrCode'>
-				<view style='text-align:right;'>
-					<uni-icons @click='qrcodeShow=false' type="close" size="20"></uni-icons>
-				</view>
-				<image :src="currectData.qrCode" mode=""></image>
-			</view>
 
-		</view>
+		<u-popup :show="qrcodeShow" @close="qrcodeShow=false" mode="center" :round='10'>
+			<image style='margin:10px;' :src="currectData.qrCode" mode="widthFix"></image>
+		</u-popup>
 		<u-popup :show="popupshow" :closeOnClickOverlay='true' :overlayOpacity='0.4' @close='handleHiddenShare'
 			:round="10" mode="bottom">
 			<view>
@@ -306,7 +302,7 @@
 		},
 		data() {
 			return {
-				userInfo:{},
+				userInfo: {},
 				downOption: {
 					auto: false,
 				},
@@ -318,7 +314,7 @@
 					session_key: '',
 					iv: '',
 				},
-				key:'',
+				key: '',
 				isPhone: false,
 				canReset: false,
 				poster: '',
@@ -342,6 +338,7 @@
 				unread: 0,
 				clicknum: 0,
 				noticeList: [],
+				status:0,
 			};
 		},
 		onShow() {
@@ -355,21 +352,32 @@
 				});
 				this.searchVal = uni.getStorageSync("search_val") ? uni.getStorageSync("search_val") : ''
 			} else {
-				this.login()
+				if(uni.getLaunchOptionsSync().scene!=1154){
+					this.login()
+				}
 			}
 
 		},
 		mounted() {
 
 		},
-		onLoad: function() {
-			wx.showShareMenu({
-				withShareTicket: true,
-				menus: ["shareAppMessage", "shareTimeline"]
-			})
+		onLoad: function(options) {
+			this.status=uni.getLaunchOptionsSync().scene
+			if(uni.getLaunchOptionsSync().scene==1154){
+				uni.showToast({
+					title: '请前往小程序查看名片',
+					icon:'none',
+					duration:10000
+				});	
+			}else{
+				wx.showShareMenu({
+					withShareTicket: true,
+					menus: ["shareAppMessage", "shareTimeline"]
+				})
+			}
+			
 		},
 		onShareAppMessage(res) {
-
 			console.log(res, this.popupshow)
 			let that = this;
 			//生成名片图片
@@ -385,20 +393,12 @@
 			}
 			if (res.from === 'menu') {
 				return {
-					title: '商通线上商城',
+					title: '名片夹',
 					path: '/pages/tabBarPro/index/index',
 					imageUrl: this.popupshow ? imageUrl : ''
 				};
 			}
 		},
-		// 分享到朋友圈
-		onShareTimeline() {
-			return {
-				title: '商通线上商城',
-				path: '/pages/index/index',
-				imageUrl: 'https://cdn.uviewui.com/uview/swiper/1.jpg'
-			};
-		},
 		methods: {
 			getPhoneNumber(e) {
 				console.log(e)
@@ -685,6 +685,15 @@
 								data[i].use === 'remark-icon') {
 								data[i].x = 30
 							}
+							if (data[i].use === 'address-icon') {
+								data[i].path = '../../static/imgs/card/address3.png'
+							}
+							if (data[i].use === 'phone-icon') {
+								data[i].path = '../../static/imgs/card/phone3.png'
+							}
+							if (data[i].use === 'remark-icon') {
+								data[i].path = '../../static/imgs/card/remark3.png'
+							}
 							if (data[i].use === 'post') {
 								data[i].x = 100
 							}
@@ -755,6 +764,15 @@
 								data[i].x = 25
 								data[i].y = 120
 							}
+							if (data[i].use === 'address-icon') {
+								data[i].path = '../../static/imgs/card/address2.png'
+							}
+							if (data[i].use === 'phone-icon') {
+								data[i].path = '../../static/imgs/card/phone2.png'
+							}
+							if (data[i].use === 'remark-icon') {
+								data[i].path = '../../static/imgs/card/remark2.png'
+							}
 							if (data[i].use === 'address-icon' ||
 								data[i].use === 'phone-icon' ||
 								data[i].use === 'remark-icon') {
@@ -774,7 +792,8 @@
 				}
 				this.canvasData = {
 					clicknum: this.clicknum++,
-					list: data
+					list: data,
+					page:'cardHolder'
 				}
 
 			},
@@ -809,7 +828,15 @@
 				}
 			},
 			del() {
-				this.delShow = true
+
+				if (this.checkedList.length > 0) {
+					this.delShow = true
+				} else {
+					this.$refs.uToast.show({
+						type: 'error',
+						message: '请勾选后再进行删除!',
+					})
+				}
 			},
 
 			longpress() {
@@ -913,6 +940,13 @@
 				this.isShowType = false
 			},
 			async upCallback(page) {
+				if(uni.getLaunchOptionsSync().scene==1154){
+					uni.showToast({
+						title: '请前往小程序查看名片',
+						icon:'none',
+						duration:10000
+					});	
+				}else{
 				var that = this
 				uni.showLoading({
 					title: '数据加载中'
@@ -982,6 +1016,7 @@
 					}
 					console.log(this.unread)
 				})
+				}
 			},
 			login() {
 				let that = this
@@ -1171,7 +1206,6 @@
 				}
 
 				.row2 {
-					margin-top: 10rpx;
 					font-size: 24rpx;
 					font-weight: bold;
 					color: #323333;
@@ -1184,6 +1218,11 @@
 					color: #323333;
 
 				}
+
+				.row2,
+				.row4 {
+					margin-top: 10rpx;
+				}
 			}
 		}
 
@@ -1242,6 +1281,7 @@
 						font-weight: bold;
 						color: #323333;
 					}
+
 				}
 
 				.right {
@@ -1253,7 +1293,8 @@
 						color: #323333;
 					}
 
-					.row2 {
+					.row2,
+					.row4 {
 						margin-top: 10rpx;
 					}
 				}
@@ -1273,6 +1314,11 @@
 				position: absolute;
 				bottom: 63rpx;
 				left: 20rpx;
+				bottom: 24rpx;
+				width: 94.9%;
+				background: url("../../static/imgs/card/bg5.png") no-repeat center;
+				background-size: 100% 100%;
+				height: 80rpx;
 
 				// width: calc(100% - 40rpx);
 				.left {
@@ -1285,17 +1331,10 @@
 					display: flex;
 					align-items: center;
 					justify-content: space-evenly;
-					background: url("../../static/imgs/card/bgc1.png") no-repeat center;
-					background-size: 100% 100%;
-				}
+					left: 0px;
 
-				.right {
-					position: absolute;
-					left: 65vw;
-					height: 80rpx;
-					width: 30vw;
-					background: url("../../static/imgs/card/right-bgc.png") no-repeat center;
-					background-size: 100% 100%;
+					// background-size: 100% 100%;
+					overflow-y: hidden;
 				}
 			}
 
@@ -1351,6 +1390,7 @@
 	}
 
 	/deep/.u-checkbox-group {
+
 		position: absolute;
 		right: 20px;
 		z-index: 99;
@@ -1363,7 +1403,27 @@
 		width: calc(100vw - 40rpx);
 		position: fixed;
 		display: flex;
+		z-index: 100;
 		justify-content: space-between;
+		bottom: 0;
+		font-size: 28rpx;
+
+		.right {
+			color: #344577;
+		}
+	}
+
+	.del,
+	.qx {
+		padding: 10rpx;
+	}
+
+	.del {
+		color: #FF4040;
+	}
+
+	.qx {
+		color: #666;
 		bottom: 0
 	}
 
@@ -1384,7 +1444,7 @@
 	}
 
 	.sq-view {
-		padding: 60rpx 80rpx 0 80rpx;
+		padding: 60rpx 80rpx 80rpx 80rpx;
 
 		.text {
 			display: flex;
@@ -1404,4 +1464,15 @@
 			border-radius: 20rpx;
 		}
 	}
-</style>
+
+	.icon-text {
+		margin-left: 10px;
+		font-size: 24rpx;
+		font-weight: 500;
+		color: #323333;
+	}
+
+	/deep/.u-checkbox__icon-wrap.u-checkbox__icon-wrap--square {
+		border-color: #D7DEEB !important;
+	}
+</style>

+ 23 - 7
xiaochengxu/pages/cardHolder/notice.vue

@@ -2,12 +2,16 @@
 	<view>
 		<!-- <mescroll-body  :up="upOption" ref="mescrollRef" @init="mescrollInit" @up="upCallback" @down="downCallback"> -->
 			
-			<view v-for='item in noticeList'>
-				<view class="">
-					<view>{{item.newsTitle}}</view>
-					<view>{{parseTime(item.gmtCreate)}}</view>
+			<view class='notice-wrap' v-for='item in noticeList'>
+				<view class="flex justify-space-between">
+					<view style='width:100px;margin:10rpx 0;' class='flex justify-space-between'>
+						<u--image :showLoading="true" src="/static/imgs/card/news.png" width="52rpx" height="52rpx"></u--image>
+						<view>{{item.newsTitle}}</view>
+					</view>
+					
+					<view class='date'>{{parseTime(item.gmtCreate)}}</view>
 				</view>
-				<view>{{item.newsContent}}</view>
+				<view class='content'>{{item.newsContent}}</view>
 			</view>
 		<!-- </mescroll-body> -->
 		<u-toast ref="uToast"></u-toast>
@@ -76,6 +80,18 @@
 	}
 </script>
 
-<style lang="scss">
-
+<style lang="scss" scoped>
+.notice-wrap{
+	background:#fff;
+	padding:20rpx;
+	margin:10rpx;
+	border-radius:20rpx;
+}
+.date{
+	color:#CCCCCC;
+}
+.content{
+	font-size:26rpx;
+	color:#666;
+}
 </style>

+ 448 - 25
xiaochengxu/pages/circle/changeCard.vue

@@ -1,11 +1,184 @@
 <template>
 	<view class="content">
-		<view class="content1">
-			<span>邀请</span>
-			<span>黑名单</span>
+		<view class="content1 flex">
+			<span @click='switchStatus(1)' :class='status==1?"active":""' class='default'>邀请</span>
+			<span @click='switchStatus(2)' :class='status==2?"active":""' class='default'>黑名单</span>
 		</view>
 		<view class="content2 ">
-			<view class="row" v-for="(item,index) in cardList" :key="index">
+			<view v-for='(item,index) in cardList' class="item">
+				<!-- <view class="card-list-item" style="background:red"> -->
+				
+				<view class="card-list-item"
+					:style="item.cardManagementInfo.currentBackground?'background:url('+item.cardManagementInfo.currentBackground+');background-size:100% 100%':''">
+				<view class="card-content style1" v-if="item.cardManagementInfo.cuttentTemplate==1">
+							<view class="left">
+							<u--image :showLoading="true" :src="item.cardManagementInfo.headSculpture" width="66px" height="66px"
+								shape="circle"></u--image>
+						</view>
+						 <view class="right">
+							<view class="row1">
+								<text class="name">{{item.cardManagementInfo.name}}</text>
+								<text class="post">{{item.cardManagementInfo.post}}</text>
+							</view>
+							<view class="row2">
+								{{item.cardManagementInfo.companyName}}
+							</view>
+							<view class="row3 flex" @click="">
+								<u--image :showLoading="true" src="/static/imgs/card/address1.png"  width="13px" height="16px"
+									 ></u--image>
+									 <view class='icon-text'>{{ item.cardManagementInfo.province }}{{ item.cardManagementInfo.city }}{{ item.cardManagementInfo.area }}</view>
+							</view>
+							<view class="row4 flex">
+								<u--image :showLoading="true" src="/static/imgs/card/phone1.png" width="12px" height="13px"
+									></u--image><view class='icon-text'>{{ item.cardManagementInfo.phone }}</view>
+							</view>
+						</view>
+					</view> 
+					
+					<view class="card-content style1 flex-between" v-if="item.cardManagementInfo.cuttentTemplate==2">
+						<view class="right">
+							<view class="row1">
+								<text class="name">{{item.cardManagementInfo.name}}</text>
+								<text class="post">{{item.cardManagementInfo.post}}</text>
+							</view>
+							<view class="row2">
+								{{item.cardManagementInfo.companyName}}
+							</view>
+							<view class="row3 flex">
+								<u--image :showLoading="true" src="/static/imgs/card/address3.png"  width="13px" height="16px"
+									></u--image>
+									<view class='icon-text'>{{ item.cardManagementInfo.province }}{{ item.cardManagementInfo.city }}{{ item.cardManagementInfo.area }}</view>
+							</view>
+							<view class="row4 flex">
+								<u--image :showLoading="true" src="/static/imgs/card/phone3.png" width="12px" height="13px"
+								></u--image><view class='icon-text'>{{ item.cardManagementInfo.phone }}</view>
+							</view>
+						</view>
+						<view class="left">
+							<u--image :showLoading="true" :src="item.cardManagementInfo.headSculpture" width="66px" height="66px"
+								shape="circle" v-if="item.cardManagementInfo.headSculpture"></u--image>
+							<u--image :showLoading="true" src="/./../static/imgs/card/defaulthead.png" width="66px"
+								height="66px" shape="circle" v-else></u--image>
+						</view>
+
+					</view>
+					<view class="card-content style2" v-if="item.cardManagementInfo.cuttentTemplate==3">
+						<view class="top">
+							<u--image :showLoading="true" :src="item.cardManagementInfo.headSculpture" width="66px" height="66px"
+								shape="circle" v-if="item.cardManagementInfo.headSculpture"></u--image>
+							<u--image :showLoading="true" src="/./../static/imgs/card/defaulthead.png" width="66px"
+								height="66px" shape="circle" v-else></u--image>
+						</view>
+						<view class="bottom flex">
+							<view class="left">
+								<view class="row1">
+									<text class="name">{{item.cardManagementInfo.name}}</text>
+									<text class="post">{{item.cardManagementInfo.post}}</text>
+								</view>
+								<view class="row2">
+									{{item.cardManagementInfo.companyName}}
+								</view>
+							</view>
+							<view class="right">
+								<view class="row1 flex">
+									<u--image :showLoading="true" src="/static/imgs/card/address1.png"  width="13px" height="16px"
+									></u--image><view class='icon-text'>{{ item.cardManagementInfo.province }}{{ item.cardManagementInfo.city }}{{ item.cardManagementInfo.area }}</view>
+								</view>
+								<view class="row2 flex">
+									<u--image :showLoading="true" src="/static/imgs/card/phone1.png" width="12px" height="13px"
+										></u--image><view class='icon-text'>{{ item.cardManagementInfo.phone }}</view>
+								</view>
+							</view>
+						</view>
+					</view>
+					<view class="card-content style2" v-if="item.cardManagementInfo.cuttentTemplate==4">
+						<view class="top">
+							<view class="row1">
+								<text class="name">{{item.cardManagementInfo.name}}</text>
+								<text class="post">{{item.cardManagementInfo.post}}</text>
+							</view>
+							<view class="row2">
+								{{item.cardManagementInfo.companyName}}
+							</view>
+			
+						</view>
+						<view class="bottom flex">
+							<view class="left">
+								<u--image :showLoading="true" :src="item.cardManagementInfo.headSculpture" width="66px" height="66px"
+									shape="circle" v-if="item.cardManagementInfo.headSculpture"></u--image>
+								<u--image :showLoading="true" src="/./../static/imgs/card/defaulthead.png"
+									width="66px" height="66px" shape="circle" v-else></u--image>
+							</view>
+							<view class="right">
+								<view class="row1 flex">
+									<u--image :showLoading="true" src="/static/imgs/card/address2.png" width="13px" height="16px"
+										 ></u--image><view class='icon-text'>{{ item.cardManagementInfo.province }}{{ item.cardManagementInfo.city }}{{ item.cardManagementInfo.area }}</view>
+								</view>
+								<view class="row2 flex">
+									<u--image :showLoading="true" src="/static/imgs/card/phone2.png" width="12px" height="13px"
+										 ></u--image><view  class='icon-text'>{{ item.cardManagementInfo.phone }}</view>
+								</view>
+
+							</view>
+						</view>
+					</view>
+					<view class="status-btns" v-if="item.status==0">
+						<span class='status-btn' @click='cardExchangeInfoEdit(1,item)'> 拉黑</span>
+						<span class='status-btn error' @click='cardExchangeInfoEdit(2,item)'>拒绝</span>
+						<span class='status-btn success' @click='cardExchangeInfoEdit(3,item)'>接受</span>
+						<span class='status-btn' @click='cardExchangeInfoEdit(4,item)'>移除</span>
+					</view>
+					<view class="status-btns" v-else>
+						<span class='status' v-if="item.status==1">已接受</span>
+						<span class='status' v-if="item.status==3">已拒绝</span>
+						<span class='status' v-if="item.status==5">已过期</span>
+						<span class='status' v-if="item.status==7">已拉黑</span>
+					</view>
+				</view>
+				<view style='margin:0 20rpx;' class="flex flex-between">
+					<span>来至 {{item.circleName}}</span>
+					<span> {{parseTime(item.gmtCreate)}}</span>
+				</view>
+				<!-- <view class="left">
+					<view class="top flex-row-center">
+						<image :src="item.headSculpture" mode="widthFix" class="img"></image>
+					</view>
+					<view class="bottom flex flex-evenly">
+						<uni-icons @click="toHome(item)" type="home" size="20"></uni-icons>
+						<text @click='switchType(item)'>{{item.classify?item.classifyName:'默'}}</text>
+						<uni-icons @click='share(item)' type="redo" size="20" color=''></uni-icons>
+					</view>
+				</view>
+				<view class="right">
+					<view class="row1 flex">
+						<text>{{item.name}}</text>
+						<text class="line"></text>
+						<text>{{item.post}}</text>
+						<u-checkbox-group v-if='islongPress' placement="column"
+							@change="checkboxChange($event,index)">
+							<u-checkbox :name='index+1' :checked='item.checked'
+								:customStyle="{marginBottom: '8px'}">
+							</u-checkbox>
+						</u-checkbox-group>
+					</view>
+					<view class="row2">
+						{{item.companyName}}
+					</view>
+					<view class="row3" @click="toMap(item)">
+						<uni-icons type="redo" size="20"></uni-icons>
+						<text>{{item.province}}{{item.city}}{{item.area}}{{item.detailedAddress}}</text>
+					</view>
+					<view class="row3">
+						<uni-icons type="redo" size="20"></uni-icons>
+						<text>{{item.phone}}</text>
+					</view>
+					<view @click='remarkEdit(item)' class="row3">
+						<uni-icons type="redo" size="20"></uni-icons>
+						<text>{{item.remark?item.remark:'单击添加备注'}}</text>
+					</view>
+				</view> -->
+			</view>
+			<!--< view class="row" v-for="(item,index) in cardList" :key="index">
 				<view class="flex">
 					<view class="left">
 						<view class="top flex-row-center">
@@ -47,7 +220,7 @@
 					<span>来至 {{item.circleName}}</span>
 					<span> {{parseTime(item.gmtCreate)}}</span>
 				</view>
-			</view>
+			</view> -->
 		</view>
 		<u-toast ref="uToast"></u-toast>
 	</view>
@@ -59,7 +232,7 @@
 			return {
 				userInfo:{},
 				status:1,
-				cardList:[],
+				cardList:[{cardManagementInfo:{}}],
 			};
 		},
 		onLoad() {
@@ -67,6 +240,10 @@
 			this.getList()
 		},
 		methods:{
+			switchStatus(status){
+				this.status=status
+				this.getList()
+			},
 			getList(){
 				uni.showLoading({
 					title: '数据加载中'
@@ -113,36 +290,282 @@
 </script>
 
 <style lang="scss" scoped>
-	.content2 {
-		border: 1px solid #ccc;
-		border-radius: 30rpx;
-		padding: 40rpx;
+	.content1 {
+		background: #112253;
+		padding: 0rpx 20rpx 160rpx 20rpx;
 		box-sizing: border-box;
+		border-radius: 0px 0px 20rpx 20rpx;
+	}
+	// .content2 {
+	// 	margin-top:-112rpx;
+	// 	border: 1px solid #ccc;
+	// 	border-radius: 30rpx;
+	// 	padding: 40rpx;
+	// 	box-sizing: border-box;
 
-		.left {
-			width: 30%;
+	// 	.left {
+	// 		width: 30%;
 
-			.top {
+	// 		.top {
 				
-				margin-bottom: 20rpx;
+	// 			margin-bottom: 20rpx;
+	// 		}
+	// 		.img {
+	// 			width: 80%;
+	// 		}
+
+	// 		.bottom {
+	// 		}
+	// 	}
+
+	// 	.right {
+	// 		.row1 {
+	// 			.line {
+	// 				width: 1px;
+	// 				height: 20px;
+	// 				margin: 0 20rpx;
+	// 				background: black;
+	// 			}
+	// 		}
+	// 	}
+	// }
+	.default{
+		color:rgba(255, 255, 255, 0.5);
+		font-size:26rpx;
+		padding:20rpx;
+		position:relative;
+	}
+	.active{
+		color:#fff;
+		font-size:32rpx;
+	}
+	.active:after{
+		content:'';
+		display:block;
+		width:10px;
+		height:2px;
+		background:#fff;
+		position: absolute;
+		left: 50%;
+		transform: translateX(-50%);
+		bottom: 0;
+	}
+	.content2 {
+		// padding:0 20rpx;
+		position: relative;
+		top: -144rpx;
+	
+		.style1 {
+			display: flex;
+			padding: 20rpx 30rpx;
+			width: 85%;
+			margin-bottom: 90rpx;
+	
+			.left {
+				width: 132rpx;
+				height: 132rpx;
+				border-radius: 50%;
 			}
-			.img {
-				width: 80%;
+	
+			.right {
+				margin-left: 40rpx;
+	
+				.row1 {
+					.name {
+						font-size: 38rpx;
+						font-weight: bold;
+						color: #040000;
+						margin-right: 20rpx;
+					}
+	
+					.post {
+						font-size: 26rpx;
+						font-weight: 500;
+						color: #666666;
+					}
+				}
+	
+				.row2 {
+					font-size: 24rpx;
+					font-weight: bold;
+					color: #323333;
+				}
+	
+				.row3 {
+					margin-top: 30rpx;
+					font-size: 24rpx;
+					font-weight: 500;
+					color: #323333;
+	
+				}
+				.row2,.row4 {
+					margin-top: 10rpx;
+				}
 			}
-
+		}
+	
+		.style2 {
+			padding: 30rpx;
+			margin-bottom: 100rpx;
+	
+			.top {
+				.row1 {
+					.name {
+						font-size: 38rpx;
+						font-weight: bold;
+						color: #040000;
+						margin-right: 20rpx;
+					}
+	
+					.post {
+						font-size: 26rpx;
+						font-weight: 500;
+						color: #666666;
+					}
+				}
+	
+				.row2 {
+					margin-top: 10rpx;
+					font-size: 24rpx;
+					font-weight: bold;
+					color: #323333;
+				}
+			}
+	
 			.bottom {
+				margin-top: 48rpx;
+	
+				.left {
+					margin-right: 40rpx;
+	
+					.row1 {
+						.name {
+							font-size: 38rpx;
+							font-weight: bold;
+							color: #040000;
+							margin-right: 20rpx;
+						}
+	
+						.post {
+							font-size: 26rpx;
+							font-weight: 500;
+							color: #666666;
+						}
+					}
+	
+					.row2 {
+						margin-top: 10rpx;
+						font-size: 24rpx;
+						font-weight: bold;
+						color: #323333;
+					}
+					
+				}
+	
+				.right {
+	
+					.row1,
+					.row2 {
+						font-size: 24rpx;
+						font-weight: 500;
+						color: #323333;
+					}
+	
+					.row2,.row4 {
+						margin-top: 10rpx;
+					}
+				}
 			}
+	
 		}
-
-		.right {
-			.row1 {
-				.line {
-					width: 1px;
-					height: 20px;
-					margin: 0 20rpx;
-					background: black;
+	
+		.card-list-item {
+			width: calc(100%);
+			// left:-20rpx;
+			position: relative;
+			border-radius: 30rpx;
+			padding: 40rpx;
+			box-sizing: border-box;
+	
+			.car-bottom {
+				position: absolute;
+				bottom: 63rpx;
+				left: 20rpx;
+				bottom:24rpx;
+				width:94.9%;
+				background: url("../../static/imgs/card/bg5.png") no-repeat center;
+				background-size: 100% 100%;
+				height: 80rpx;
+				// width: calc(100% - 40rpx);
+				.left {
+					// top: -40rpx;
+					position: absolute;
+					padding: 20rpx 0;
+					width: 70vw;
+					height: 80rpx;
+					box-sizing: border-box;
+					display: flex;
+					align-items: center;
+					justify-content: space-evenly;
+					z-index:100;
+					left: 0px;
+					
+					// background-size: 100% 100%;
+					overflow-y: hidden;
+				}
+			}
+	
+			.left {
+				width: 30%;
+	
+				.top {
+	
+					margin-bottom: 20rpx;
+				}
+	
+				.img {
+					width: 80%;
+				}
+	
+				.bottom {}
+			}
+	
+			.right {
+				.row1 {
+					.line {
+						width: 1px;
+						height: 20px;
+						margin: 0 20rpx;
+						background: black;
+					}
 				}
 			}
 		}
+	
+	}
+	.icon-text{
+		margin-left: 10px;
+		font-size: 24rpx;
+		font-weight: 500;
+		color: #323333;
+	}
+	.status-btns{
+		margin:10rpx 0 25rpx;
+		text-align:right;
+	}
+	.status-btns span{
+		background:#fff;
+		border:1px solid rgba(0, 0, 0, 0.20);
+		padding:10rpx 30rpx;
+		font-size:26rpx;
+	}
+	.status{
+		color:#666;
+	}
+	.error{
+		color:#FF4E4E;
+	}
+	.success{
+		color:#279D2A;
 	}
 </style>

+ 28 - 22
xiaochengxu/pages/circle/circle.vue

@@ -5,17 +5,16 @@
 				<view class="left flex" @click="search">
 					<image src="../../static/imgs/cirlce/search.png" mode="widthFix" class="search-img"></image>
 					<text class="search-val"> {{searchVal?searchVal:'搜索圈子'}}</text>
-					<uni-icons type="closeempty" size="24" @click.native.stop="delSearchVal"
-						v-if="searchVal"></uni-icons>
+					<image style='width:32rpx;height:32rpx;' v-if="searchVal" @click.native.stop="delSearchVal" src="../../static/imgs/card/searchdel.png" mode="widthFix" ></image>
 				</view>
 			</view>
 			<view class="right relative">
 				<image src="../../static/imgs/cirlce/hy.png" mode="widthFix" class="hy-search-img"
 					@click="toChangeCard"></image>
-				<u-badge :isDot="true" type="error" class="point position"></u-badge>
+				<u-badge v-if='cardList.length>0' :isDot="true" type="error" class="point position"></u-badge>
 			</view>
 		</view>
-		<mescroll-body ref="mescrollRef" @init="mescrollInit" @up="upCallback" @down="downCallback" :up="upOption" :down="downOption">
+		<mescroll-body ref="mescrollRef" @init="mescrollInit" @up="upCallback" @down="downCallback">
 			<view class="content2 flex flex-between">
 
 				<view class="left flex title">
@@ -70,35 +69,42 @@
 			return {
 				searchVal: '',
 				circleList: [],
-				userInfo:{},
-				downOption: {
-					auto: false,
-				},
-				upOption: {
-					auto: false,
-				},
+				userInfo: {},
 				canReset: false,
+				cardList:[],
 			};
 		},
 		onLoad() {
 		},
 		onShow() {
-			if (uni.getStorageSync("userInfo").phone) {
-				this.userInfo = uni.getStorageSync("userInfo")
-				this.$nextTick(function() {
-					this.mescroll.resetUpScroll()
-				});
-				this.searchVal = uni.getStorageSync("cirlce_search_val") ? uni.getStorageSync("cirlce_search_val") : ''
-			} else {
-				uni.switchTab({
-					url:"/pages/cardHolder/cardHolder"
+			// this.searchVal = uni.getStorageSync("cirlce_search_val") ? uni.getStorageSync("cirlce_search_val") : ''
+			this.userInfo = uni.getStorageSync("userInfo")
+			this.$nextTick(function() {
+				this.canReset && this.mescroll.resetUpScroll() // 重置列表数据为第一页  
+				this.canReset && this.mescroll.scrollTo(0, 0) // 重置列表数据为第一页时,建议把滚动条也重置到顶部,避免无法再次翻页的问题  
+				this.canReset = true // 过滤第一次的onShow事件,避免初始化界面时重复触发upCallback, 无需配置auto:false
+			});
+			this.searchVal = uni.getStorageSync("cirlce_search_val") ? uni.getStorageSync("cirlce_search_val") : ''
+			this.$request.baseRequest('admin.unimall.cardExchangeInfo', 'list', {
+				receiveId:this.userInfo.id,
+				status:1
+			}, failres => {
+				console.log('res+++++', failres.errmsg)
+				this.$refs.uToast.show({
+					type: 'error',
+					message: failres.errmsg,
 				})
-			}
-			
+				uni.hideLoading()
+			}).then(res => {
+				uni.hideLoading()
+				this.cardList = res.data.items.filter((item)=>{return item.status==0})
+				console.log(this.cardList)
+			})
 		},
 		methods: {
 			delSearchVal() {
 				this.searchVal = ""
+				uni.removeStorageSync('cirlce_search_val')
 				this.mescroll.resetUpScroll()
 			},
 			toChangeCard() {

+ 1 - 1
xiaochengxu/pages/circle/createCirclce.vue

@@ -11,7 +11,7 @@
 			<view class="title">
 				选择名片
 			</view>
-			<view style="font-size:12px;" class='flex align-item-center' @click="cardShow">
+			<view style="font-size:12px;padding-right:20rpx;" class='flex align-item-center' @click="cardShow">
 			{{formData.cardBusiness?formData.cardBusiness:'无名片'}}
 			<u-icon v-if='!formData.cardBusiness' name="arrow-right" size="12"></u-icon>
 			</view>

+ 6 - 3
xiaochengxu/pages/circle/detail.vue

@@ -42,7 +42,7 @@
 
 		<mescroll-body ref="mescrollRef" @init="mescrollInit" @up="upCallback" @down="downCallback"
 			style="position: relative;top: -80rpx;">
-			<view class="content3" v-for="(item,index) in changeCardList" :key="index">
+			<view class="content3" v-for="(item,index) in changeCardList" :style="item.currentBackground?'background:url('+item.currentBackground+');background-size:100% 100%':''" :key="index">
 				<view class="flex item">
 					<view class="top flex">
 						<view class="left">
@@ -62,7 +62,7 @@
 				</view>
 
 				<view class="line">
-					<image src="../../static/imgs/cirlce/line.png" mode="widthFix" style="width: 100%;"></image>
+					<image src="../../static/imgs/cirlce/line.png" mode="widthFix" style="width: 95%;"></image>
 				</view>
 				<view class="bottom">
 					{{item.scopeOfBusiness}}
@@ -75,7 +75,7 @@
 				</view>
 			</view>
 		</mescroll-body>
-		<u-picker :show="isShowCard" :columns="cardList" keyName="cardBusiness" @confirm="cardConfirm"></u-picker>
+		<u-picker  @cancel="isShowCard=false" :show="isShowCard" :columns="cardList" keyName="cardBusiness" @confirm="cardConfirm"></u-picker>
 		<u-toast ref="uToast"></u-toast>
 		<u-modal :show="show" :content='content' @confirm="$u.debounce(joinCircle, 500)" showCancelButton
 			@cancel="show=false" @close="show=false" closeOnClickOverlay></u-modal>
@@ -493,4 +493,7 @@
 
 		}
 	}
+	.line{
+		text-align:center;
+	}
 </style>

+ 11 - 29
xiaochengxu/pages/mySet/cardType.vue

@@ -72,29 +72,19 @@
 						for (var i = 0; i < res.data.items.length; i++) {
 							res.data.items[i].name = res.data.items[i].circleName[0]
 						}
-						var itemIndex = res.data.items.findIndex((item) => {
-							return item.topMarking == 1
-						})
-						if (itemIndex != -1) {
-							var data = res.data.items.splice(itemIndex, 1)
-							res.data.items.unshift({
-								circleName: '默认分类',
-								name: '默'
-							})
-							res.data.items = data.concat(res.data.items)
+						// var itemIndex = res.data.items.findIndex((item) => {
+						// 	return item.topMarking == 1
+						// })
+						// if (itemIndex != -1) {
+						// 	var data = res.data.items.splice(itemIndex, 1)
+						// 	res.data.items = data.concat(res.data.items)
 							
-						} else {
-							res.data.items = [{
-								circleName: '默认分类',
-								name: '默'
-							}].concat(res.data.items)
-						}
+						// } else {
+						// 	res.data.items = [].concat(res.data.items)
+						// }
 						this.cardTypeList = res.data.items
 					} else {
-						this.cardTypeList = [{
-							circleName: '默认分类',
-							name: '默'
-						}]
+						this.cardTypeList = []
 					}
 				})
 			},
@@ -141,15 +131,7 @@
 							id: item.id
 						})
 					}
-				} else {
-					type = 'admin.unimall.cardClassifyInfo'
-					type1 = 'topDefault'
-					data = {
-						cardClassifyInfo: JSON.stringify({
-							commonId: this.cardTypeData.commonId
-						})
-					}
-				}
+				} 
 				this.$request.baseRequest(type, type1, data, failres => {
 					console.log('res+++++', failres.errmsg)
 					uni.showToast({

+ 25 - 12
xiaochengxu/pages/mySet/help.vue

@@ -1,15 +1,11 @@
 <template>
-	<view>
-		<view>
-		1.如何删除名片夹中的名片?	
-		</view>
-		<view>
-			回答:长安名片后右上方出现删除按钮,点击确认后即可删除。
-		</view>
-		<view>2.为什么别人无法分享我的名片?</view>
-		<view class="">
-			回答:其他用户分享您的名片之前需要得到您的授权,可在“我的-设置”中打开授权开关。
+	<view class='content'>
+		<view class="bg"></view>
+		<view class=' imgwrap'>
+			<image class='img'  src="../../static/imgs/mySet/question1.png" mode=""></image>
+			<image class='img'  src="../../static/imgs/mySet/question2.png" mode=""></image>
 		</view>
+		
 	</view>
 </template>
 
@@ -23,6 +19,23 @@
 	}
 </script>
 
-<style lang="scss">
-
+<style lang="scss" scoped>
+.bg{
+	height:162rpx;
+	background: linear-gradient(180deg, #112253 0%,  #FCFCFC 100%);
+	
+}
+// .content{
+// 	padding:20rpx;
+// }
+.imgwrap{
+	position:relative;
+	top:-132rpx;
+	text-align:center;
+}
+.img{
+	width:92vw;
+	height:276rpx;
+	margin:20rpx auto;
+}
 </style>

+ 600 - 131
xiaochengxu/pages/mySet/myInfo.vue

@@ -5,10 +5,12 @@
 				<view class="title-name">
 					{{item.cardBusiness}}
 				</view>
-				<view class="card-list-item" :style="item.currentBackground?'background:url('+item.currentBackground+');background-size:100% 100%':''">
-					<view class="card-content style1" v-if="item.cuttentTemplate==0">
+				<view class="card-list-item"
+					:style="item.currentBackground?'background:url('+item.currentBackground+');background-size:100% 100%':''">
+					<view class="card-content style1" v-if="item.cuttentTemplate==1">
 						<view class="left">
-							<u--image :showLoading="true" :src="item.headSculpture" width="66px" height="66px" shape="circle"></u--image>
+							<u--image :showLoading="true" :src="item.headSculpture" width="66px" height="66px"
+								shape="circle"></u--image>
 						</view>
 						<view class="right">
 							<view class="row1">
@@ -19,17 +21,23 @@
 								{{item.companyName}}
 							</view>
 							<view class="row3 flex">
-								<uni-icons type="map-filled" size="20" style="margin-right: 20rpx;" color="#5e6d82"></uni-icons>{{ item.province }}{{ item.city }}{{ item.area }}
+								<u--image :showLoading="true" src="/static/imgs/card/address1.png" width="13px"
+									height="16px"></u--image>{{ item.province }}{{ item.city }}{{ item.area }}
 							</view>
 							<view class="row4 flex">
-								<uni-icons type="phone-filled" size="20" style="margin-right: 20rpx;" color="#5e6d82"></uni-icons>{{ item.phone }}
+								<u--image :showLoading="true" src="/static/imgs/card/phone1.png" width="12px"
+									height="13px"></u--image>{{ item.phone }}
+							</view>
+							<view class="row4 flex">
+								<u--image :showLoading="true" src="/static/imgs/card/remark1.png" width="10px"
+									height="12px"></u--image>{{item.remark?item.remark:'单击添加备注'}}
 							</view>
 							<!-- <view class="">
 								备注
 							</view> -->
 						</view>
 					</view>
-					<view class="card-content style1 flex-between" v-if="item.cuttentTemplate==1">
+					<view class="card-content style1 flex-between" v-if="item.cuttentTemplate==2">
 						<view class="right">
 							<view class="row1">
 								<text class="name">{{item.name}}</text>
@@ -39,47 +47,37 @@
 								{{item.companyName}}
 							</view>
 							<view class="row3 flex">
-								<uni-icons type="map-filled" size="20" style="margin-right: 20rpx;" color="#5e6d82"></uni-icons>{{ item.province }}{{ item.city }}{{ item.area }}
+								<u--image :showLoading="true" src="/static/imgs/card/address3.png" width="13px"
+									height="16px"></u--image>{{ item.province }}{{ item.city }}{{ item.area }}
+							</view>
+							<view class="row4 flex">
+								<u--image :showLoading="true" src="/static/imgs/card/phone3.png" width="12px"
+									height="13px"></u--image>{{ item.phone }}
 							</view>
 							<view class="row4 flex">
-								<uni-icons type="phone-filled" size="20" style="margin-right: 20rpx;" color="#5e6d82"></uni-icons>{{ item.phone }}
+								<u--image :showLoading="true" src="/static/imgs/card/remark3.png" width="10px"
+									height="12px"></u--image>{{item.remark?item.remark:'单击添加备注'}}
 							</view>
 							<!-- <view class="">
 								备注
 							</view> -->
 						</view>
 						<view class="left">
-							<u--image :showLoading="true" :src="item.headSculpture" width="66px" height="66px" shape="circle" v-if="item.headSculpture"></u--image>
-							<u--image :showLoading="true" src="/./../static/imgs/card/defaulthead.png" width="66px" height="66px" shape="circle" v-else></u--image>
+							<u--image :showLoading="true" :src="item.headSculpture" width="66px" height="66px"
+								shape="circle" v-if="item.headSculpture"></u--image>
+							<u--image :showLoading="true" src="/./../static/imgs/card/defaulthead.png" width="66px"
+								height="66px" shape="circle" v-else></u--image>
 						</view>
 					</view>
-					<view class="card-content style2" v-if="item.cuttentTemplate==2">
-							<view class="top">
-								<u--image :showLoading="true" :src="item.headSculpture" width="66px" height="66px" shape="circle" v-if="item.headSculpture"></u--image>
-								<u--image :showLoading="true" src="/./../static/imgs/card/defaulthead.png" width="66px" height="66px" shape="circle" v-else></u--image>
-							</view>
-							<view class="bottom flex">
-								<view class="left">
-									<view class="row1">
-										<text class="name">{{item.name}}</text>
-										<text class="post">{{item.post}}</text>
-									</view>
-									<view class="row2">
-										{{item.companyName}}
-									</view>
-								</view>
-								<view class="right">
-									<view class="row1 flex">
-										<uni-icons type="map-filled" size="20" style="margin-right: 20rpx;" color="#5e6d82"></uni-icons>{{ item.province }}{{ item.city }}{{ item.area }}
-									</view>
-									<view class="row2 flex">
-										<uni-icons type="phone-filled" size="20" style="margin-right: 20rpx;" color="#5e6d82"></uni-icons>{{ item.phone }}
-									</view>
-								</view>
-							</view>
-					</view>
 					<view class="card-content style2" v-if="item.cuttentTemplate==3">
-							<view class="top">
+						<view class="top">
+							<u--image :showLoading="true" :src="item.headSculpture" width="66px" height="66px"
+								shape="circle" v-if="item.headSculpture"></u--image>
+							<u--image :showLoading="true" src="/./../static/imgs/card/defaulthead.png" width="66px"
+								height="66px" shape="circle" v-else></u--image>
+						</view>
+						<view class="bottom flex">
+							<view class="left">
 								<view class="row1">
 									<text class="name">{{item.name}}</text>
 									<text class="post">{{item.post}}</text>
@@ -87,28 +85,65 @@
 								<view class="row2">
 									{{item.companyName}}
 								</view>
-								
 							</view>
-							<view class="bottom flex">
-								<view class="left">
-								<u--image :showLoading="true" :src="item.headSculpture" width="66px" height="66px" shape="circle" v-if="item.headSculpture"></u--image>
-								<u--image :showLoading="true" src="/./../static/imgs/card/defaulthead.png" width="66px" height="66px" shape="circle" v-else></u--image>
+							<view class="right">
+								<view class="row3 flex">
+									<u--image :showLoading="true" src="/static/imgs/card/address1.png" width="13px"
+										height="16px"></u--image>{{ item.province }}{{ item.city }}{{ item.area }}
+								</view>
+								<view class="row4 flex">
+									<u--image :showLoading="true" src="/static/imgs/card/phone1.png" width="12px"
+										height="13px"></u--image>{{ item.phone }}
+								</view>
+								<view class="row4 flex">
+									<u--image :showLoading="true" src="/static/imgs/card/remark1.png" width="10px"
+										height="12px"></u--image>{{item.remark?item.remark:'单击添加备注'}}
+								</view>
+							</view>
+						</view>
+					</view>
+					<view class="card-content style2" v-if="item.cuttentTemplate==4">
+						<view class="top">
+							<view class="row1">
+								<text class="name">{{item.name}}</text>
+								<text class="post">{{item.post}}</text>
+							</view>
+							<view class="row2">
+								{{item.companyName}}
+							</view>
+
+						</view>
+						<view class="bottom flex">
+							<view class="left">
+								<u--image :showLoading="true" :src="item.headSculpture" width="66px" height="66px"
+									shape="circle" v-if="item.headSculpture"></u--image>
+								<u--image :showLoading="true" src="/./../static/imgs/card/defaulthead.png" width="66px"
+									height="66px" shape="circle" v-else></u--image>
+							</view>
+							<view class="right">
+								<view class="row3 flex">
+									<u--image :showLoading="true" src="/static/imgs/card/address2.png" width="13px"
+										height="16px"></u--image>{{ item.province }}{{ item.city }}{{ item.area }}
+								</view>
+								<view class="row4 flex">
+									<u--image :showLoading="true" src="/static/imgs/card/phone2.png" width="12px"
+										height="13px"></u--image>{{ item.phone }}
 								</view>
-								<view class="right">
-									<view class="row1 flex">
-										<uni-icons type="map-filled" size="20" style="margin-right: 20rpx;" color="#5e6d82"></uni-icons>{{ item.province }}{{ item.city }}{{ item.area }}
-									</view>
-									<view class="row2 flex">
-										<uni-icons type="phone-filled" size="20" style="margin-right: 20rpx;" color="#5e6d82"></uni-icons>{{ item.phone }}
-									</view>
+								<view class="row4 flex">
+									<u--image :showLoading="true" src="/static/imgs/card/remark2.png" width="10px"
+										height="12px"></u--image>{{item.remark?item.remark:'单击添加备注'}}
 								</view>
 							</view>
+						</view>
 					</view>
 					<view class="car-bottom flex">
 						<view class="left">
-							<image src="../../static/imgs/card/home.png" mode="widthFix" style="width: 32rpx;" @click="toHome(item)"></image>
-							<image src="../../static/imgs/card/share.png" mode="widthFix" style="width: 35rpx;" @click="share(item)"></image>
-							<image src="../../static/imgs/card/ewm.png" mode="widthFix" style="width: 32rpx;" @click="showCode(item)"></image>
+							<image src="../../static/imgs/card/home.png" mode="widthFix" style="width: 32rpx;"
+								@click="toHome(item)"></image>
+							<image src="../../static/imgs/card/share.png" mode="widthFix" style="width: 35rpx;"
+								@click="share(item)"></image>
+							<image src="../../static/imgs/card/ewm.png" mode="widthFix" style="width: 32rpx;"
+								@click="showCode(item)"></image>
 						</view>
 						<view class="right">
 							<text class="text" @click="topMarking(item)">置顶</text>
@@ -122,7 +157,7 @@
 						<!-- <button @click="toEditCard(item)">编辑</button> -->
 					</view>
 				</view>
-				
+
 			</view>
 		</view>
 		<view class="upload flex flex-all-center" @click="addCard">
@@ -151,19 +186,50 @@
 			</view>
 		</u-popup>
 		<u-popup :show="isShowCode" @close="isShowCode=false" mode="center" :round='10'>
-		                <image :src="selectCode" mode="widthFix"></image>
-				</u-popup>
+			<image style='margin:10px;' :src="selectCode" mode="widthFix"></image>
+		</u-popup>
+		<u-popup :show="popupshow" :closeOnClickOverlay='true' :overlayOpacity='0.4' @close='handleHiddenShare'
+			:round="10" mode="bottom">
+			<view>
+				<view class="share-content">
+					<view class="block" @click="toUrl()">
+						<button class="moment">
+							<view class="iconfont icon-pengyouquan"></view>
+							<view>分享朋友圈</view>
+						</button>
+					</view>
+					<view class="block">
+						<button class="shareBtn" type="default" data-name="shareBtn" open-type="share">
+							<view class="iconfont icon-weixin"></view>
+							<view>分享微信好友</view>
+						</button>
+					</view>
+				</view>
+			</view>
+		</u-popup>
+		<!-- 生成图片 -->
+		<poster :data="canvasData" background-color="#FFF" :width='750' :height='420' @on-success="posterSuccess"
+			ref="poster" @on-error="posterError"></poster>
+			<point-share @close='showShare=false' :show='showShare'></point-share>
 	</view>
 </template>
 
 <script>
+	import Poster from '../../components/zhangyuhao-poster/Poster.vue';
+	import PointShare from '../../components/point-share/index.vue';
 	var that;
 	export default {
+		components: {
+			Poster,
+			PointShare
+		},
 		data() {
 			return {
-				isShowCode:false,
-				selectCode:'',
+				isShowCode: false,
+				selectCode: '',
 				id: '',
+				showShare:false,
+				popupshow:false,
 				radiovalue: '仅从自己名片列表删除',
 				radiolist: [{
 						name: '仅从自己名片列表删除',
@@ -175,7 +241,10 @@
 					}
 				],
 				isShowDel: false,
-				cardList: []
+				cardList: [],
+				canvasData:{},
+				clicknum:0,
+				poster:''
 			};
 		},
 		onLoad() {
@@ -185,18 +254,367 @@
 		onShow() {
 			this.init()
 		},
+		onShareAppMessage(res) {
+		
+			console.log(res, this.popupshow)
+			let that = this;
+			//生成名片图片
+			let imageUrl = this.poster
+			console.log("imageUrl", imageUrl)
+			if (res.from === 'button') {
+				let path = `/pages/cardHolder/scanCodeAddCard?id=${that.currectData.id}`
+				return {
+					title: this.popupshow ? `${that.currectData.name}分享的名片~` : '电子名片',
+					path: path,
+					imageUrl: this.popupshow ? imageUrl : '',
+				};
+			}
+			if (res.from === 'menu') {
+				return {
+					title: '我的名片',
+					path: '/pages/tabBarPro/index/index',
+					imageUrl: this.popupshow ? imageUrl : ''
+				};
+			}
+		},
 		methods: {
-			
-			showCode(val){
+			toUrl(){
+				this.popupshow=false
+				this.showShare=true
+			},
+			handleHiddenShare() {
+				this.popupshow = false
+			},
+			posterError(err) {
+				console.log(err)
+				uni.hideLoading()
+			},
+			posterSuccess(url) {
+				console.log("hahahah", url)
+				// 生成成功,会把临时路径在这里返回
+				this.poster = url;
+				uni.hideLoading()
+				this.popupshow = true
+				console.log(url)
+				
+			},
+			showCode(val) {
 				this.selectCode = val.qrCodeMyself
 				this.isShowCode = true
 			},
-			share(){
-				
+			share(item) {
+				uni.showLoading({
+					title: '加载中',
+					mask: true
+				})
+				this.currectData = item
+				var data = [{
+						type: 'image',
+						path: this.currectData.currentBackground,
+						use: 'bg',
+						x: -10,
+						y: 0,
+						width: 530,
+						height: 325
+					},
+					{
+						type: 'image',
+						path: this.currectData.headSculpture,
+						shape: 'circle',
+						use: 'head',
+						x: 30,
+						y: 30,
+						width: 100,
+						height: 100
+					},
+					{
+						type: 'text',
+						text: this.currectData.name,
+						use: 'name',
+						x: 150,
+						y: 50,
+						size: 24,
+						color: '#000'
+
+					},
+					{
+						type: 'text',
+						text: this.currectData.post,
+						use: 'post',
+						x: 240,
+						y: 55,
+						size: 18,
+						color: '#666666'
+
+					},
+					{
+						type: 'text',
+						text: this.currectData.companyName,
+						use: 'companyName',
+						x: 150,
+						y: 95,
+						size: 18,
+						color: '#000'
+
+					},
+					{
+						type: 'image',
+						path: '../../static/imgs/card/address1.png',
+						use: 'address-icon',
+						x: 145,
+						y: 130,
+						width: 15,
+						height: 20
+					},
+					{
+						type: 'textarea',
+						text: this.currectData.province + this.currectData.city + this.currectData.area + this
+							.currectData.detailedAddress,
+						lineSpace: 1,
+						width: 320,
+						use: 'address',
+						x: 175,
+						y: 135,
+						size: 14,
+						color: '#000'
+					},
+					{
+						type: 'image',
+						path: '../../static/imgs/card/phone1.png',
+						use: 'phone-icon',
+						x: 145,
+						y: 163,
+						width: 16,
+						height: 16
+					},
+					{
+						type: 'text',
+						text: this.currectData.phone,
+						use: 'phone',
+						x: 175,
+						y: 167,
+						size: 14,
+						color: '#000'
+					},
+					{
+						type: 'image',
+						path: '../../static/imgs/card/remark1.png',
+						use: 'remark-icon',
+						x: 145,
+						y: 197,
+						width: 13,
+						height: 16
+					},
+					{
+						type: 'textarea',
+						text: this.currectData.remark ? this.currectData.remark : '单击添加备注',
+						use: 'remark',
+						lineSpace: 2,
+						width: 200,
+						x: 175,
+						y: 200,
+						size: 13,
+						color: '#000'
+					},
+					{
+						type: 'image',
+						path: '../../static/imgs/card/bgc1.png',
+						use: 'bg1',
+						x: 3,
+						y: 243,
+						width: 240,
+						height: 67
+					},
+					{
+						type: 'image',
+						path: '../../static/imgs/card/bgc2.png',
+						use: 'bg2',
+						x: 225,
+						y: 243,
+						width: 278,
+						height: 67
+					},
+					{
+						type: 'image',
+						path: '../../static/imgs/card/home.png',
+						use: 'home',
+						x: 30,
+						y: 260,
+						width: 33,
+						height: 33
+					},
+					{
+						type: 'image',
+						path: '../../static/imgs/card/share.png',
+						use: 'share',
+						x: 90,
+						y: 263,
+						width: 33,
+						height: 28
+					},
+					{
+						type: 'image',
+						path: '../../static/imgs/card/ewm.png',
+						use: 'code',
+						x: 150,
+						y: 263,
+						width: 32,
+						height: 32
+					},
+					{
+						type: 'text',
+						text: '置顶',
+						use: 'top',
+						x: 280,
+						y: 265,
+						size: 24,
+						color: '#fff'
+					},
+					{
+						type: 'text',
+						text: '删除',
+						use: 'del',
+						x: 350,
+						y: 265,
+						size: 24,
+						color: '#fff'
+					},
+					{
+						type: 'text',
+						text: '编辑',
+						use: 'edit',
+						x: 420,
+						y: 265,
+						size: 24,
+						color: '#fff'
+					},
+				]
+				console.log(this.currectData.cuttentTemplate, 111111)
+				for (var i = 0; i < data.length; i++) {
+					switch (this.currectData.cuttentTemplate) {
+						case '2':
+							if (data[i].use === 'name' ||
+								data[i].use === 'companyName' ||
+								data[i].use === 'address-icon' ||
+								data[i].use === 'phone-icon' ||
+								data[i].use === 'remark-icon') {
+								data[i].x = 30
+							}
+							if (data[i].use === 'address-icon') {
+								data[i].path = '../../static/imgs/card/address3.png'
+							}
+							if (data[i].use === 'phone-icon') {
+								data[i].path = '../../static/imgs/card/phone3.png'
+							}
+							if (data[i].use === 'remark-icon') {
+								data[i].path = '../../static/imgs/card/remark3.png'
+							}
+							if (data[i].use === 'post') {
+								data[i].x = 100
+							}
+							if (data[i].use === 'address' ||
+								data[i].use === 'phone' ||
+								data[i].use === 'remark') {
+								data[i].x = 60
+							}
+							if (data[i].use == 'head') {
+								data[i].x = 370
+							}
+							break;
+						case '3':
+							if (data[i].use === 'name') {
+								data[i].x = 30
+								data[i].y = 150
+							}
+							if (data[i].use === 'companyName') {
+								data[i].x = 30
+								data[i].y = 180
+							}
+							if (data[i].use === 'post') {
+								data[i].x = 100
+								data[i].y = 153
+							}
+							if (data[i].use === 'address-icon' ||
+								data[i].use === 'phone-icon' ||
+								data[i].use === 'remark-icon') {
+								data[i].x = 170
+							}
+							if (data[i].use === 'address-icon') {
+								data[i].y = 150
+							}
+							if (data[i].use === 'address') {
+								data[i].y = 155;
+								data[i].width = 300
+							}
+							if (data[i].use === 'phone-icon') {
+								data[i].y = 180
+							}
+							if (data[i].use === 'phone') {
+								data[i].y = 183
+							}
+							if (data[i].use === 'remark-icon') {
+								data[i].y = 210
+							}
+							if (data[i].use === 'remark') {
+								data[i].y = 212
+							}
+							if (data[i].use === 'address' ||
+								data[i].use === 'phone' ||
+								data[i].use === 'remark') {
+								data[i].x = 190
+							}
+							break;
+						case '4':
+							if (data[i].use === 'name' ||
+								data[i].use === 'companyName') {
+								data[i].x = 30
+							}
+							if (data[i].use === 'companyName') {
+								data[i].y = 90
+							}
+							if (data[i].use === 'post') {
+								data[i].x = 100
+							}
+							if (data[i].use == 'head') {
+								data[i].x = 25
+								data[i].y = 120
+							}
+							if (data[i].use === 'address-icon') {
+								data[i].path = '../../static/imgs/card/address2.png'
+							}
+							if (data[i].use === 'phone-icon') {
+								data[i].path = '../../static/imgs/card/phone2.png'
+							}
+							if (data[i].use === 'remark-icon') {
+								data[i].path = '../../static/imgs/card/remark2.png'
+							}
+							if (data[i].use === 'address-icon' ||
+								data[i].use === 'phone-icon' ||
+								data[i].use === 'remark-icon') {
+								data[i].x = 170
+							}
+							if (data[i].use === 'address') {
+								data[i].width = 300
+							}
+							if (data[i].use === 'address' ||
+								data[i].use === 'phone' ||
+								data[i].use === 'remark') {
+								data[i].x = 190
+							}
+							break;
+						default:
+					}
+				}
+				this.canvasData = {
+					clicknum: this.clicknum++,
+					list: data,
+					page:'myInfo'
+				}
+				console.log(1111111)
 			},
-			toHome(item){
+			toHome(item) {
 				uni.navigateTo({
-					url: "/pages/mySet/myHome?id="+item.personalHomeId
+					url: "/pages/mySet/myHome?id=" + item.personalHomeId
 				})
 			},
 			radioChange(n) {
@@ -217,7 +635,7 @@
 			},
 			toEditCard(val) {
 				uni.navigateTo({
-					url: "/pages/mySet/editCard?itemVal="+JSON.stringify(val)
+					url: "/pages/mySet/editCard?itemVal=" + JSON.stringify(val)
 				})
 			},
 			delCard() {
@@ -281,136 +699,162 @@
 </script>
 
 <style lang="scss" scoped>
-	.content{
+	.content {
 		padding-bottom: 40rpx;
 	}
-	.card-content{
+
+	.card-content {
 		width: 100%;
 	}
-	.content1{
-		.style1{
+
+	.content1 {
+		.style1 {
 			display: flex;
 			padding: 20rpx 30rpx;
 			width: 85%;
 			margin-bottom: 90rpx;
-			.left{
+
+			.left {
 				width: 132rpx;
 				height: 132rpx;
 				border-radius: 50%;
 			}
-			.right{
+
+			.right {
 				margin-left: 40rpx;
-				.row1{
-					.name{
+
+				.row1 {
+					.name {
 						font-size: 38rpx;
 						font-weight: bold;
 						color: #040000;
 						margin-right: 20rpx;
 					}
-					.post{
+
+					.post {
 						font-size: 26rpx;
 						font-weight: 500;
 						color: #666666;
 					}
 				}
-				.row2{
+
+				.row2 {
 					margin-top: 20rpx;
 					font-size: 24rpx;
 					font-weight: bold;
 					color: #323333;
 				}
-				.row3{
+
+				.row3 {
 					margin-top: 30rpx;
 					font-size: 24rpx;
 					font-weight: 500;
 					color: #323333;
-					
+
 				}
 			}
 		}
-		.style2{
-				padding:30rpx;
-				margin-bottom: 100rpx;
-				.top{
-					.row1{
-						.name{
+
+		.style2 {
+			padding: 30rpx;
+			margin-bottom: 100rpx;
+
+			.top {
+				.row1 {
+					.name {
+						font-size: 38rpx;
+						font-weight: bold;
+						color: #040000;
+						margin-right: 20rpx;
+					}
+
+					.post {
+						font-size: 26rpx;
+						font-weight: 500;
+						color: #666666;
+					}
+				}
+
+				.row2 {
+					margin-top: 20rpx;
+					font-size: 24rpx;
+					font-weight: bold;
+					color: #323333;
+				}
+			}
+
+			.bottom {
+				margin-top: 48rpx;
+
+				.left {
+					margin-right: 40rpx;
+
+					.row1 {
+						.name {
 							font-size: 38rpx;
 							font-weight: bold;
 							color: #040000;
 							margin-right: 20rpx;
 						}
-						.post{
+
+						.post {
 							font-size: 26rpx;
 							font-weight: 500;
 							color: #666666;
 						}
 					}
-					.row2{
+
+					.row2 {
 						margin-top: 20rpx;
 						font-size: 24rpx;
 						font-weight: bold;
 						color: #323333;
 					}
 				}
-				.bottom{
-					margin-top: 48rpx;
-					.left{
-						margin-right: 40rpx;
-						.row1{
-							.name{
-								font-size: 38rpx;
-								font-weight: bold;
-								color: #040000;
-								margin-right: 20rpx;
-							}
-							.post{
-								font-size: 26rpx;
-								font-weight: 500;
-								color: #666666;
-							}
-						}
-						.row2{
-							margin-top: 20rpx;
-							font-size: 24rpx;
-							font-weight: bold;
-							color: #323333;
-						}
+
+				.right {
+
+					.row1,
+					.row2 {
+						font-size: 24rpx;
+						font-weight: 500;
+						color: #323333;
 					}
-					.right{
-						.row1,.row2{
-							font-size: 24rpx;
-							font-weight: 500;
-							color: #323333;
-						}
-						.row2{
-							margin-top: 20rpx;
-						}
+
+					.row2 {
+						margin-top: 20rpx;
 					}
 				}
-				
+			}
+
 		}
 	}
-	.card-list{
-		padding:0 20rpx;
-		.title-name{
+
+	.card-list {
+		padding: 0 20rpx;
+
+		.title-name {
 			font-weight: bold;
 			color: #19191A;
 			margin: 20rpx 0;
 		}
 	}
+
 	.card-list-item {
 		width: calc(100% + 40rpx);
-		left:-20rpx;
+		left: -20rpx;
 		position: relative;
 		border-radius: 30rpx;
 		padding: 40rpx;
 		box-sizing: border-box;
-		.car-bottom{
+
+		.car-bottom {
 			position: absolute;
 			bottom: 20rpx;
-			left:20rpx;
+			left: 20rpx;
 			width: calc(100% - 40rpx);
-			.left{
+
+			.left {
 				position: absolute;
 				padding: 20rpx 0;
 				width: 310rpx;
@@ -420,7 +864,8 @@
 				background: url("../../static/imgs/card/bgc1.png") no-repeat center;
 				background-size: 100% 100%;
 			}
-			.right{
+
+			.right {
 				font-size: 26rpx;
 				padding: 20rpx 0;
 				position: relative;
@@ -431,11 +876,13 @@
 				justify-content: space-evenly;
 				background: url("../../static/imgs/card/bgc2.png") no-repeat center;
 				background-size: 100% 100%;
-				.text{
+
+				.text {
 					color: #fff;
 				}
 			}
 		}
+
 		.left {
 			width: 30%;
 
@@ -462,20 +909,42 @@
 			}
 		}
 	}
-	.upload{
+
+	.upload {
 		background-color: #fff;
 		margin: 20rpx;
 		border-radius: 20rpx;
 		padding: 76rpx;
-		.solids{
+
+		.solids {
 			flex-direction: column;
-			.text{
+
+			.text {
 				margin-top: 20rpx;
 				font-size: 26rpx;
 				font-weight: 500;
 				color: #666666;
 			}
 		}
-		
+
+	}
+	.share-content {
+		display: flex;
+		padding: 20rpx;
+		justify-content: center;
+		font-size: 24rpx;
+	
+		button {
+			background: transparent;
+			line-height: 1.5;
+		}
+	
+		button:after {
+			border: none;
+		}
+	}
+	.icon-pengyouquan,.icon-weixin{
+		font-size:50px;
+		color:#33CC00;
 	}
-</style>
+</style>

+ 69 - 31
xiaochengxu/pages/mySet/mySet.vue

@@ -30,7 +30,7 @@
 			</view>
 		</view>
 		<u-popup :show="isShowCode" @close="isShowCode=false" mode="center" :round='10'>
-			<image :src="selectCode" mode="widthFix"></image>
+			<image style='margin:10px;' :src="selectCode" mode="widthFix"></image>
 		</u-popup>
 		<u-picker keyName="cardBusiness" :confirmType='"share"' :confirmText='"分享"' title="选择名片" @cancel="show=false"
 			closeOnClickOverlay @change="cardChange" :show="show" :columns="cardList"></u-picker>
@@ -139,20 +139,12 @@
 			}
 			if (res.from === 'menu') {
 				return {
-					title: '商通线上商城',
+					title: '我的',
 					path: '/pages/tabBarPro/index/index',
 					imageUrl: this.popupshow ? imageUrl : ''
 				};
 			}
 		},
-		// 分享到朋友圈
-		onShareTimeline() {
-			return {
-				title: '商通线上商城',
-				path: '/pages/index/index',
-				imageUrl: 'https://cdn.uviewui.com/uview/swiper/1.jpg'
-			};
-		},
 		methods: {
 			handleHiddenShare() {
 				this.popupshow = false
@@ -204,7 +196,7 @@
 						y: 50,
 						size: 24,
 						color: '#000'
-
+				
 					},
 					{
 						type: 'text',
@@ -214,7 +206,7 @@
 						y: 55,
 						size: 18,
 						color: '#666666'
-
+				
 					},
 					{
 						type: 'text',
@@ -224,7 +216,7 @@
 						y: 95,
 						size: 18,
 						color: '#000'
-
+				
 					},
 					{
 						type: 'image',
@@ -287,49 +279,76 @@
 					},
 					{
 						type: 'image',
-						path: '../../static/imgs/card/bg3.png',
+						path: '../../static/imgs/card/bgc1.png',
 						use: 'bg1',
-						x: 0,
+						x: 3,
 						y: 243,
-						width: 370,
+						width: 240,
 						height: 67
 					},
 					{
 						type: 'image',
-						path: '../../static/imgs/card/bg4.png',
+						path: '../../static/imgs/card/bgc2.png',
 						use: 'bg2',
-						x: 355,
+						x: 225,
 						y: 243,
-						width: 150,
+						width: 278,
 						height: 67
 					},
 					{
 						type: 'image',
 						path: '../../static/imgs/card/home.png',
 						use: 'home',
-						x: 65,
+						x: 30,
 						y: 260,
 						width: 33,
 						height: 33
 					},
-					{
-						type: 'text',
-						text: this.currectData.classifyName ? this.currectData.classifyName : '默',
-						use: 'classify',
-						x: 145,
-						y: 263,
-						size: 34,
-						color: '#fff'
-					},
 					{
 						type: 'image',
 						path: '../../static/imgs/card/share.png',
 						use: 'share',
-						x: 235,
+						x: 90,
 						y: 263,
 						width: 33,
 						height: 28
 					},
+					{
+						type: 'image',
+						path: '../../static/imgs/card/ewm.png',
+						use: 'code',
+						x: 150,
+						y: 263,
+						width: 32,
+						height: 32
+					},
+					{
+						type: 'text',
+						text: '置顶',
+						use: 'top',
+						x: 280,
+						y: 265,
+						size: 24,
+						color: '#fff'
+					},
+					{
+						type: 'text',
+						text: '删除',
+						use: 'del',
+						x: 350,
+						y: 265,
+						size: 24,
+						color: '#fff'
+					},
+					{
+						type: 'text',
+						text: '编辑',
+						use: 'edit',
+						x: 420,
+						y: 265,
+						size: 24,
+						color: '#fff'
+					},
 				]
 				console.log(this.currectData.cuttentTemplate, 111111)
 				for (var i = 0; i < data.length; i++) {
@@ -342,6 +361,15 @@
 								data[i].use === 'remark-icon') {
 								data[i].x = 30
 							}
+							if (data[i].use === 'address-icon') {
+								data[i].path = '../../static/imgs/card/address3.png'
+							}
+							if (data[i].use === 'phone-icon') {
+								data[i].path = '../../static/imgs/card/phone3.png'
+							}
+							if (data[i].use === 'remark-icon') {
+								data[i].path = '../../static/imgs/card/remark3.png'
+							}
 							if (data[i].use === 'post') {
 								data[i].x = 100
 							}
@@ -412,6 +440,15 @@
 								data[i].x = 25
 								data[i].y = 120
 							}
+							if (data[i].use === 'address-icon') {
+								data[i].path = '../../static/imgs/card/address2.png'
+							}
+							if (data[i].use === 'phone-icon') {
+								data[i].path = '../../static/imgs/card/phone2.png'
+							}
+							if (data[i].use === 'remark-icon') {
+								data[i].path = '../../static/imgs/card/remark2.png'
+							}
 							if (data[i].use === 'address-icon' ||
 								data[i].use === 'phone-icon' ||
 								data[i].use === 'remark-icon') {
@@ -431,7 +468,8 @@
 				}
 				this.canvasData = {
 					clicknum: this.clicknum++,
-					list: data
+					list: data,
+					page:'myInfo'
 				}
 			},
 			posterError(err) {

+ 3 - 3
xiaochengxu/pages/mySet/set.vue

@@ -2,16 +2,16 @@
 	<view class="content">
 		<view class='flex bottom flex-between' style="padding: 20rpx;">
 			<text>允许他人分享我的名片</text>
-			<u-switch v-model="value1" :activeValue='true' :inactiveValue='false' @change="change($event,1)"
+			<u-switch v-model="value1" activeColor="#112253" :activeValue='true' :inactiveValue='false' @change="change($event,1)"
 				size="20"></u-switch>
 		</view>
 		<view class='flex bottom flex-between' style="padding: 20rpx;">
 			<text>允许圈子成员查看我的主页</text>
-			<u-switch v-model="value2" @change="change($event,2)" size="20"></u-switch>
+			<u-switch v-model="value2" activeColor="#112253" @change="change($event,2)" size="20"></u-switch>
 		</view>
 		<view class="flex flex-between" style="padding: 20rpx;">
 			<text>自动接受交换名片邀请</text>
-			<u-switch v-model="value3" @change="change($event,3)" size="20"></u-switch>
+			<u-switch v-model="value3" activeColor="#112253" @change="change($event,3)" size="20"></u-switch>
 		</view>
 		<u-toast ref="uToast"></u-toast>
 	</view>

BIN
xiaochengxu/static/imgs/card/bg5.png


BIN
xiaochengxu/static/imgs/card/news.png


BIN
xiaochengxu/static/imgs/card/right-bgc.png


BIN
xiaochengxu/static/imgs/card/searchdel.png


BIN
xiaochengxu/static/imgs/logo.png


BIN
xiaochengxu/static/imgs/mySet/point_bg.png


BIN
xiaochengxu/static/imgs/mySet/point_btn.png


BIN
xiaochengxu/static/imgs/mySet/question1.png


BIN
xiaochengxu/static/imgs/mySet/question2.png