瀏覽代碼

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

高敬炎 2 年之前
父節點
當前提交
df42a66154
共有 38 個文件被更改,包括 1426 次插入505 次删除
  1. 1 1
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/card/ICardHolderInfoService.java
  2. 63 0
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/card/ICardNewsInfoService.java
  3. 0 29
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/card/impl/CardExchangeInfoServiceImpl.java
  4. 4 40
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/card/impl/CardHolderInfoServiceImpl.java
  5. 136 0
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/card/impl/CardNewsInfoServiceImpl.java
  6. 1 1
      unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/dict/DictDataService.java
  7. 38 0
      unimall-data/src/main/java/com/iotechn/unimall/data/domain/CardHolderInfo.java
  8. 88 0
      unimall-data/src/main/java/com/iotechn/unimall/data/domain/CardNewsInfo.java
  9. 6 0
      unimall-data/src/main/java/com/iotechn/unimall/data/mapper/CardHolderInfoMapper.java
  10. 14 0
      unimall-data/src/main/java/com/iotechn/unimall/data/mapper/CardNewsInfoMapper.java
  11. 62 1
      unimall-data/src/main/resources/com/iotechn/unimall/data/mapper/CardHolderInfoMapper.xml
  12. 9 0
      unimall-data/src/main/resources/com/iotechn/unimall/data/mapper/CardNewsInfoMapper.xml
  13. 0 18
      xiaochengxu/App.vue
  14. 1 1
      xiaochengxu/pages/circle/circle.vue
  15. 51 23
      xiaochengxu/pages/circle/createCirclce.vue
  16. 217 83
      xiaochengxu/pages/circle/detail.vue
  17. 161 164
      xiaochengxu/pages/mySet/cardType.vue
  18. 174 42
      xiaochengxu/pages/mySet/myCard.vue
  19. 103 54
      xiaochengxu/pages/mySet/myHome.vue
  20. 297 48
      xiaochengxu/pages/mySet/newCard.vue
  21. 二進制
      xiaochengxu/static/1.jpg
  22. 二進制
      xiaochengxu/static/2.jpg
  23. 二進制
      xiaochengxu/static/3.jpg
  24. 二進制
      xiaochengxu/static/4.jpg
  25. 二進制
      xiaochengxu/static/5.jpg
  26. 二進制
      xiaochengxu/static/imgs/card/dh.png
  27. 二進制
      xiaochengxu/static/imgs/card/yjt.png
  28. 二進制
      xiaochengxu/static/imgs/cirlce/account.png
  29. 二進制
      xiaochengxu/static/imgs/cirlce/change.png
  30. 二進制
      xiaochengxu/static/imgs/cirlce/home.png
  31. 二進制
      xiaochengxu/static/imgs/cirlce/line.png
  32. 二進制
      xiaochengxu/static/imgs/mySet/add.png
  33. 二進制
      xiaochengxu/static/imgs/mySet/add1.png
  34. 二進制
      xiaochengxu/static/imgs/mySet/del.png
  35. 二進制
      xiaochengxu/static/imgs/mySet/del1.png
  36. 二進制
      xiaochengxu/static/imgs/mySet/share1.png
  37. 二進制
      xiaochengxu/static/imgs/mySet/shibie.png
  38. 二進制
      xiaochengxu/static/imgs/mySet/zd.png

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

@@ -25,7 +25,7 @@ public interface ICardHolderInfoService{
 	@HttpMethod(description = "列表",  permissionName = "名片夹管理")
 	@HttpMethod(description = "列表",  permissionName = "名片夹管理")
 	public Page<CardHolderInfo> list(
 	public Page<CardHolderInfo> list(
 								@HttpParam(name = "commonId", type = HttpParamType.COMMON, description = "个人id") Long commonId,
 								@HttpParam(name = "commonId", type = HttpParamType.COMMON, description = "个人id") Long commonId,
-							@HttpParam(name = "cardId", type = HttpParamType.COMMON, description = "名片id") String cardId,
+							@HttpParam(name = "searchContent", type = HttpParamType.COMMON, description = "搜索内容") String searchContent,
 										@HttpParam(name = "classify", type = HttpParamType.COMMON, description = "客户分类") String classify,
 										@HttpParam(name = "classify", type = HttpParamType.COMMON, description = "客户分类") String classify,
 							@HttpParam(name = "gmtCreate", type = HttpParamType.COMMON, description = "") Date gmtCreate,
 							@HttpParam(name = "gmtCreate", type = HttpParamType.COMMON, description = "") Date gmtCreate,
 							@HttpParam(name = "gmtUpdate", type = HttpParamType.COMMON, description = "") Date gmtUpdate,
 							@HttpParam(name = "gmtUpdate", type = HttpParamType.COMMON, description = "") Date gmtUpdate,

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

@@ -0,0 +1,63 @@
+package com.iotechn.unimall.admin.api.card;
+
+
+import com.iotechn.unimall.data.domain.CardNewsInfo;
+import com.iotechn.unimall.core.annotation.HttpMethod;
+import com.iotechn.unimall.core.annotation.HttpOpenApi;
+import com.iotechn.unimall.core.annotation.HttpParam;
+import com.iotechn.unimall.core.annotation.HttpParamType;
+import com.iotechn.unimall.core.annotation.param.NotNull;
+import com.iotechn.unimall.core.exception.ServiceException;
+import com.iotechn.unimall.data.model.Page;
+import java.util.Date;
+
+/**
+ * 记录消息信息Service接口
+ * 
+ * @author jlb
+ * @date 2023-04-20
+ */
+@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;
+
+	@HttpMethod(description = "列表", permissionName = "记录消息信息管理")
+	public Page<CardNewsInfo> list(
+								@HttpParam(name = "sendId", type = HttpParamType.COMMON, description = "发送消息用户id") Long sendId,
+							@HttpParam(name = "receiveId", type = HttpParamType.COMMON, description = "接收消息用户id") Long receiveId,
+							@HttpParam(name = "newsTitle", type = HttpParamType.COMMON, description = "消息标题") String newsTitle,
+							@HttpParam(name = "newsContent", type = HttpParamType.COMMON, description = "消息内容") String newsContent,
+							@HttpParam(name = "newsType", type = HttpParamType.COMMON, description = "消息类型") String newsType,
+							@HttpParam(name = "newsFlag", type = HttpParamType.COMMON, description = "已读标识(1已读)") String newsFlag,
+							@HttpParam(name = "gmtCreate", type = HttpParamType.COMMON, description = "") Date gmtCreate,
+							@HttpParam(name = "gmtUpdate", type = HttpParamType.COMMON, description = "") Date gmtUpdate,
+							@HttpParam(name = "deleteFlag", type = HttpParamType.COMMON, description = "删除标识") Long deleteFlag,
+					@HttpParam(name = "page", type = HttpParamType.COMMON, description = "页码", valueDef = "1") Integer page,
+		@HttpParam(name = "limit", type = HttpParamType.COMMON, description = "页码长度", valueDef = "20") Integer limit)
+		throws ServiceException;
+
+	@HttpMethod(description = "删除",permissionName = "记录消息信息管理")
+	public Boolean delete(@NotNull @HttpParam(name = "id", type = HttpParamType.COMMON, description = "")String id)throws ServiceException;
+
+	@HttpMethod(description = "修改", permissionName = "记录消息信息管理")
+	public Boolean update(@NotNull @HttpParam(name = "cardNewsInfo", type = HttpParamType.COMMON, description = "记录消息信息") CardNewsInfo cardNewsInfo)throws ServiceException;
+
+	@HttpMethod(description = "查询",  permissionName = "记录消息信息管理")
+	public CardNewsInfo get(@NotNull @HttpParam(name = "id", type = HttpParamType.COMMON, description = "")Long id)throws ServiceException;
+	
+	@HttpMethod(description = "导出excl表",permissionName = "记录消息信息管理")
+	public String export(
+								@HttpParam(name = "sendId", type = HttpParamType.COMMON, description = "发送消息用户id") Long sendId,
+							@HttpParam(name = "receiveId", type = HttpParamType.COMMON, description = "接收消息用户id") Long receiveId,
+							@HttpParam(name = "newsTitle", type = HttpParamType.COMMON, description = "消息标题") String newsTitle,
+							@HttpParam(name = "newsContent", type = HttpParamType.COMMON, description = "消息内容") String newsContent,
+							@HttpParam(name = "newsType", type = HttpParamType.COMMON, description = "消息类型") String newsType,
+							@HttpParam(name = "newsFlag", type = HttpParamType.COMMON, description = "已读标识(1已读)") String newsFlag,
+							@HttpParam(name = "gmtCreate", type = HttpParamType.COMMON, description = "") Date gmtCreate,
+							@HttpParam(name = "gmtUpdate", type = HttpParamType.COMMON, description = "") Date gmtUpdate,
+							@HttpParam(name = "deleteFlag", type = HttpParamType.COMMON, description = "删除标识") Long deleteFlag,
+				@HttpParam(name = "page", type = HttpParamType.COMMON, description = "页码", valueDef = "1") Integer page,
+	@HttpParam(name = "limit", type = HttpParamType.COMMON, description = "页码长度", valueDef = "20") Integer limit)throws ServiceException;
+	
+}

+ 0 - 29
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/card/impl/CardExchangeInfoServiceImpl.java

@@ -54,35 +54,6 @@ public class CardExchangeInfoServiceImpl implements ICardExchangeInfoService {
 
 
     @Override
     @Override
     public Page<CardExchangeInfo> list(Long sendId, Long receiveId, Long sendCardId, Long receiveCardId, String circleName, String status, Date gmtCreate, Date gmtUpdate, Long deleteFlag, Integer page, Integer limit) throws ServiceException {
     public Page<CardExchangeInfo> list(Long sendId, Long receiveId, Long sendCardId, Long receiveCardId, String circleName, String status, Date gmtCreate, Date gmtUpdate, Long deleteFlag, Integer page, Integer limit) throws ServiceException {
-        Wrapper<CardExchangeInfo> wrapper = new EntityWrapper<CardExchangeInfo>();
-        if (!StringUtils.isEmpty(sendId)) {
-            wrapper.eq("send_id", sendId);
-        }
-        if (!StringUtils.isEmpty(receiveId)) {
-            wrapper.eq("receive_id", receiveId);
-        }
-        if (!StringUtils.isEmpty(sendCardId)) {
-            wrapper.eq("send_card_id", sendCardId);
-        }
-        if (!StringUtils.isEmpty(receiveCardId)) {
-            wrapper.eq("receive_card_id", receiveCardId);
-        }
-        if (!StringUtils.isEmpty(circleName)) {
-            wrapper.eq("circle_name", circleName);
-        }
-        if (!StringUtils.isEmpty(status)) {
-            wrapper.eq("status", status);
-        }
-        if (!StringUtils.isEmpty(gmtCreate)) {
-            wrapper.eq("gmt_create", gmtCreate);
-        }
-        if (!StringUtils.isEmpty(gmtUpdate)) {
-            wrapper.eq("gmt_update", gmtUpdate);
-        }
-        if (!StringUtils.isEmpty(deleteFlag)) {
-            wrapper.eq("delete_flag", deleteFlag);
-        }
-        wrapper.eq("delete_flag", 0);
         Integer count = cardExchangeInfoMapper.getCardExchangeCount(status,(page - 1) * limit, limit, receiveId);
         Integer count = cardExchangeInfoMapper.getCardExchangeCount(status,(page - 1) * limit, limit, receiveId);
         List<CardExchangeInfo> list = cardExchangeInfoMapper.getCardExchangeInfoPage(status,(page - 1) * limit, limit, receiveId);
         List<CardExchangeInfo> list = cardExchangeInfoMapper.getCardExchangeInfoPage(status,(page - 1) * limit, limit, receiveId);
         if (!CollectionUtils.isEmpty(list)){
         if (!CollectionUtils.isEmpty(list)){

+ 4 - 40
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/card/impl/CardHolderInfoServiceImpl.java

@@ -2,9 +2,7 @@ package com.iotechn.unimall.admin.api.card.impl;
 
 
 import java.util.List;
 import java.util.List;
 
 
-import com.iotechn.unimall.data.domain.CardManagementInfo;
-import com.iotechn.unimall.data.domain.CommonUserInfo;
-import com.iotechn.unimall.data.domain.PersonalHomepageInfo;
+import com.iotechn.unimall.data.domain.*;
 import com.iotechn.unimall.data.mapper.CardManagementInfoMapper;
 import com.iotechn.unimall.data.mapper.CardManagementInfoMapper;
 import com.iotechn.unimall.data.mapper.CommonUserInfoMapper;
 import com.iotechn.unimall.data.mapper.CommonUserInfoMapper;
 import org.apache.ibatis.session.RowBounds;
 import org.apache.ibatis.session.RowBounds;
@@ -18,7 +16,6 @@ import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.iotechn.unimall.core.exception.ServiceException;
 import com.iotechn.unimall.core.exception.ServiceException;
 import com.iotechn.unimall.data.util.ExcelUtil;
 import com.iotechn.unimall.data.util.ExcelUtil;
 import com.iotechn.unimall.data.mapper.CardHolderInfoMapper;
 import com.iotechn.unimall.data.mapper.CardHolderInfoMapper;
-import com.iotechn.unimall.data.domain.CardHolderInfo;
 import com.iotechn.unimall.admin.api.card.ICardHolderInfoService;
 import com.iotechn.unimall.admin.api.card.ICardHolderInfoService;
 import com.iotechn.unimall.data.model.Page;
 import com.iotechn.unimall.data.model.Page;
 
 
@@ -59,42 +56,9 @@ public class CardHolderInfoServiceImpl implements ICardHolderInfoService {
     }
     }
 
 
     @Override
     @Override
-    public Page<CardHolderInfo> list(Long commonId, String cardId, String classify, Date gmtCreate, Date gmtUpdate, Long deleteFlag, Integer page, Integer limit) throws ServiceException {
-        Wrapper<CardHolderInfo> wrapper = new EntityWrapper<CardHolderInfo>();
-        if (!StringUtils.isEmpty(commonId)) {
-            wrapper.eq("common_id", commonId);
-        }
-        if (!StringUtils.isEmpty(cardId)) {
-            wrapper.eq("card_id", cardId);
-        }
-        if (!StringUtils.isEmpty(classify)) {
-            wrapper.eq("classify", classify);
-        }
-        if (!StringUtils.isEmpty(gmtCreate)) {
-            wrapper.eq("gmt_create", gmtCreate);
-        }
-        if (!StringUtils.isEmpty(gmtUpdate)) {
-            wrapper.eq("gmt_update", gmtUpdate);
-        }
-        if (!StringUtils.isEmpty(deleteFlag)) {
-            wrapper.eq("delete_flag", deleteFlag);
-        }
-        wrapper.eq("delete_flag", 0);
-        List<CardHolderInfo> list = cardHolderInfoMapper.selectPage(new RowBounds((page - 1) * limit, limit), wrapper);
-        if (!CollectionUtils.isEmpty(list)) {
-            for (CardHolderInfo cardHolderInfo : list) {
-                CardManagementInfo cardManagementInfo = cardManagementInfoMapper.selectById(cardHolderInfo.getCardId());
-                if (cardManagementInfo != null) {
-                    cardHolderInfo.setCardManagementInfo(cardManagementInfo);
-                    //查看是否允许分享
-                    CommonUserInfo commonUserInfo = commonUserInfoMapper.selectById(cardManagementInfo.getCommonId());
-                    if (commonUserInfo != null) {
-                        cardHolderInfo.setShareCard(commonUserInfo.getShareCard());
-                    }
-                }
-            }
-        }
-        Integer count = cardHolderInfoMapper.selectCount(wrapper);
+    public Page<CardHolderInfo> list(Long commonId, String searchContent, String classify, Date gmtCreate, Date gmtUpdate, Long deleteFlag, Integer page, Integer limit) throws ServiceException {
+        List<CardHolderInfo> list = cardHolderInfoMapper.getCardHolderInfoPage(searchContent,classify,(page - 1) * limit, limit, commonId);
+        Integer count = cardHolderInfoMapper.getCardHolderCount(searchContent,classify,(page - 1) * limit, limit, commonId);
         return new Page<CardHolderInfo>(list, page, limit, count);
         return new Page<CardHolderInfo>(list, page, limit, count);
     }
     }
 
 

+ 136 - 0
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/card/impl/CardNewsInfoServiceImpl.java

@@ -0,0 +1,136 @@
+package com.iotechn.unimall.admin.api.card.impl;
+
+import java.util.List;
+
+import com.iotechn.unimall.admin.api.card.ICardNewsInfoService;
+import com.iotechn.unimall.data.domain.CardNewsInfo;
+import com.iotechn.unimall.data.mapper.CardNewsInfoMapper;
+import org.apache.ibatis.session.RowBounds;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.iotechn.unimall.core.exception.ServiceException;
+import com.iotechn.unimall.data.util.ExcelUtil;
+import com.iotechn.unimall.data.model.Page;
+import java.util.Date;
+import org.springframework.transaction.annotation.Transactional;
+
+/**
+ * 记录消息信息Service业务层处理
+ * 
+ * @author jlb
+ * @date 2023-04-20
+ */
+@Service
+public class CardNewsInfoServiceImpl implements ICardNewsInfoService {
+	@Autowired
+	private CardNewsInfoMapper cardNewsInfoMapper;
+	
+	@Override
+	public Boolean add(CardNewsInfo cardNewsInfo) throws ServiceException {
+		Date now = new Date();
+		cardNewsInfo.setGmtCreate(now);
+		cardNewsInfo.setGmtUpdate(now);
+		return cardNewsInfoMapper.insert(cardNewsInfo)>0;
+	}
+
+	@Override
+	public Page<CardNewsInfo> list(Long sendId,Long receiveId,String newsTitle,String newsContent,String newsType,String newsFlag,Date gmtCreate,Date gmtUpdate,Long deleteFlag, Integer page, Integer limit)throws ServiceException {
+		Wrapper<CardNewsInfo> wrapper = new EntityWrapper<CardNewsInfo>();
+														if (!StringUtils.isEmpty(sendId)) {
+					wrapper.eq("send_id", sendId);
+				}
+												if (!StringUtils.isEmpty(receiveId)) {
+					wrapper.eq("receive_id", receiveId);
+				}
+												if (!StringUtils.isEmpty(newsTitle)) {
+					wrapper.eq("news_title", newsTitle);
+				}
+												if (!StringUtils.isEmpty(newsContent)) {
+					wrapper.eq("news_content", newsContent);
+				}
+												if (!StringUtils.isEmpty(newsType)) {
+					wrapper.eq("news_type", newsType);
+				}
+												if (!StringUtils.isEmpty(newsFlag)) {
+					wrapper.eq("news_flag", newsFlag);
+				}
+												if (!StringUtils.isEmpty(gmtCreate)) {
+					wrapper.eq("gmt_create", gmtCreate);
+				}
+												if (!StringUtils.isEmpty(gmtUpdate)) {
+					wrapper.eq("gmt_update", gmtUpdate);
+				}
+												if (!StringUtils.isEmpty(deleteFlag)) {
+					wrapper.eq("delete_flag", deleteFlag);
+				}
+							wrapper.eq("delete_flag", 0);
+		List<CardNewsInfo> list = cardNewsInfoMapper.selectPage(new RowBounds((page - 1) * limit, limit), wrapper);
+		Integer count = cardNewsInfoMapper.selectCount(wrapper);
+		return new Page<CardNewsInfo>(list, page, limit, count);
+	}
+
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public Boolean delete(String id) {
+		String[] ids = String.valueOf(id).split(",");
+		for (String tt:ids) {
+			CardNewsInfo tmp =  cardNewsInfoMapper.selectById(Long.parseLong(tt));
+			if(tmp != null){
+				tmp.setDeleteFlag(1l);
+				cardNewsInfoMapper.updateById(tmp);
+			}
+		}
+		return true;
+	}
+
+	@Override
+	public Boolean update(CardNewsInfo cardNewsInfo) throws ServiceException {
+		Date now = new Date();
+		cardNewsInfo.setGmtUpdate(now);
+		return cardNewsInfoMapper.updateById(cardNewsInfo)>0;
+	}
+
+	@Override
+	public CardNewsInfo get(Long id) throws ServiceException {
+		return cardNewsInfoMapper.selectById(id);
+	}
+	
+	@Override
+	public String export(Long sendId,Long receiveId,String newsTitle,String newsContent,String newsType,String newsFlag,Date gmtCreate,Date gmtUpdate,Long deleteFlag, Integer page, Integer limit)throws ServiceException {
+		Wrapper<CardNewsInfo> wrapper = new EntityWrapper<CardNewsInfo>();
+														if (!StringUtils.isEmpty(sendId)) {
+					wrapper.eq("send_id", sendId);
+				}
+												if (!StringUtils.isEmpty(receiveId)) {
+					wrapper.eq("receive_id", receiveId);
+				}
+												if (!StringUtils.isEmpty(newsTitle)) {
+					wrapper.eq("news_title", newsTitle);
+				}
+												if (!StringUtils.isEmpty(newsContent)) {
+					wrapper.eq("news_content", newsContent);
+				}
+												if (!StringUtils.isEmpty(newsType)) {
+					wrapper.eq("news_type", newsType);
+				}
+												if (!StringUtils.isEmpty(newsFlag)) {
+					wrapper.eq("news_flag", newsFlag);
+				}
+												if (!StringUtils.isEmpty(gmtCreate)) {
+					wrapper.eq("gmt_create", gmtCreate);
+				}
+												if (!StringUtils.isEmpty(gmtUpdate)) {
+					wrapper.eq("gmt_update", gmtUpdate);
+				}
+												if (!StringUtils.isEmpty(deleteFlag)) {
+					wrapper.eq("delete_flag", deleteFlag);
+				}
+							List<CardNewsInfo> list = cardNewsInfoMapper.selectList(wrapper);
+		ExcelUtil<CardNewsInfo> util = new ExcelUtil<CardNewsInfo>(CardNewsInfo.class);
+		return util.exportExcel(list, "操作日志");
+	}
+}

+ 1 - 1
unimall-admin-api/src/main/java/com/iotechn/unimall/admin/api/dict/DictDataService.java

@@ -18,7 +18,7 @@ public interface DictDataService {
 			@NotNull @HttpParam(name = "dictData", type = HttpParamType.COMMON, description = "字典信息") SysDictData dictData)
 			@NotNull @HttpParam(name = "dictData", type = HttpParamType.COMMON, description = "字典信息") SysDictData dictData)
 			throws ServiceException;
 			throws ServiceException;
 
 
-	@HttpMethod(description = "列表", permission = "admin:dictData:list", permissionParentName = "系统管理", permissionName = "字典管理")
+	@HttpMethod(description = "列表",  permissionName = "字典管理")
 	public Page<SysDictData> list(
 	public Page<SysDictData> list(
 			@HttpParam(name = "dictType", type = HttpParamType.COMMON, description = "字典类型") String dictType,
 			@HttpParam(name = "dictType", type = HttpParamType.COMMON, description = "字典类型") String dictType,
 			@HttpParam(name = "dictLabel", type = HttpParamType.COMMON, description = "字典标签") String dictLabel,
 			@HttpParam(name = "dictLabel", type = HttpParamType.COMMON, description = "字典标签") String dictLabel,

+ 38 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/domain/CardHolderInfo.java

@@ -73,6 +73,44 @@ public class CardHolderInfo extends SuperDO {
     /** 我的名片id */
     /** 我的名片id */
     @TableField(exist = false)
     @TableField(exist = false)
     private String myCardId;
     private String myCardId;
+    /** 搜索内容 */
+    @TableField(exist = false)
+    private String searchContent;
+
+    /** 他人分享二维码 */
+    @TableField(exist = false)
+    private String qrCode;
+    /** 姓名 */
+    @TableField(exist = false)
+    private String name;
+    /** 职务 */
+    @TableField(exist = false)
+    private String post;
+    /** 公司名 */
+    @TableField(exist = false)
+    private String companyName;
+    /** 定位 */
+    @TableField(exist = false)
+    private String location;
+    /** 省 */
+    @TableField(exist = false)
+    private String province;
+    /** 市 */
+    @TableField(exist = false)
+    private String city;
+    /** 区 */
+    @TableField(exist = false)
+    private String area;
+    /** 详细地址 */
+    @TableField(exist = false)
+    private String detailedAddress;
+    /** 联系电话 */
+    @TableField(exist = false)
+    private String phone;
+    /** 主页id */
+    @TableField(exist = false)
+    private Long personalHomeId;
+
     @Override
     @Override
     public String toString() {
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

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

@@ -0,0 +1,88 @@
+package com.iotechn.unimall.data.domain;
+
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.iotechn.unimall.core.framework.aspectj.lang.annotaion.Excel;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+import com.baomidou.mybatisplus.annotations.TableField;
+import java.util.Date;
+
+/**
+ * 记录消息信息对象 card_news_info
+ * 
+ * @author jlb
+ * @date 2023-04-20
+ */
+@Data
+@TableName("card_news_info")
+public class CardNewsInfo extends SuperDO {
+    private static final long serialVersionUID = 1L;
+
+    /**  */
+    @TableId("id")
+    private Long id;
+
+    /** 发送消息用户id */
+    @Excel(name = "发送消息用户id")
+    @TableField("send_id")
+    private Long sendId;
+
+    /** 接收消息用户id */
+    @Excel(name = "接收消息用户id")
+    @TableField("receive_id")
+    private Long receiveId;
+
+    /** 消息标题 */
+    @Excel(name = "消息标题")
+    @TableField("news_title")
+    private String newsTitle;
+
+    /** 消息内容 */
+    @Excel(name = "消息内容")
+    @TableField("news_content")
+    private String newsContent;
+
+    /** 消息类型 */
+    @Excel(name = "消息类型")
+    @TableField("news_type")
+    private String newsType;
+
+    /** 已读标识(1已读) */
+    @Excel(name = "已读标识", readConverterExp = "1=已读")
+    @TableField("news_flag")
+    private String newsFlag;
+
+    /**  */
+    @Excel(name = "", width = 30, dateFormat = "yyyy-MM-dd")
+    @TableField("gmt_create")
+    private Date gmtCreate;
+
+    /**  */
+    @Excel(name = "", width = 30, dateFormat = "yyyy-MM-dd")
+    @TableField("gmt_update")
+    private Date gmtUpdate;
+
+    /** 删除标识 */
+    @Excel(name = "删除标识")
+    @TableField("delete_flag")
+    private Long deleteFlag;
+
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("sendId", getSendId())
+            .append("receiveId", getReceiveId())
+            .append("newsTitle", getNewsTitle())
+            .append("newsContent", getNewsContent())
+            .append("newsType", getNewsType())
+            .append("newsFlag", getNewsFlag())
+            .append("gmtCreate", getGmtCreate())
+            .append("gmtUpdate", getGmtUpdate())
+            .append("deleteFlag", getDeleteFlag())
+            .toString();
+    }
+}

+ 6 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/mapper/CardHolderInfoMapper.java

@@ -2,6 +2,9 @@ package com.iotechn.unimall.data.mapper;
 
 
 import com.iotechn.unimall.data.domain.CardHolderInfo;
 import com.iotechn.unimall.data.domain.CardHolderInfo;
 import com.baomidou.mybatisplus.mapper.BaseMapper;
 import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+import java.util.List;
+
 /**
 /**
  * 名片夹Mapper接口
  * 名片夹Mapper接口
  * 
  * 
@@ -10,4 +13,7 @@ import com.baomidou.mybatisplus.mapper.BaseMapper;
  */
  */
 public interface CardHolderInfoMapper extends BaseMapper<CardHolderInfo>{
 public interface CardHolderInfoMapper extends BaseMapper<CardHolderInfo>{
 
 
+    List<CardHolderInfo> getCardHolderInfoPage(String searchContent,String classify, int i, Integer limit, Long commonId);
+
+    Integer getCardHolderCount(String searchContent, String classify, int i, Integer limit, Long commonId);
 }
 }

+ 14 - 0
unimall-data/src/main/java/com/iotechn/unimall/data/mapper/CardNewsInfoMapper.java

@@ -0,0 +1,14 @@
+package com.iotechn.unimall.data.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.iotechn.unimall.data.domain.CardNewsInfo;
+
+/**
+ * 记录消息信息Mapper接口
+ * 
+ * @author jlb
+ * @date 2023-04-20
+ */
+public interface CardNewsInfoMapper extends BaseMapper<CardNewsInfo> {
+
+}

+ 62 - 1
unimall-data/src/main/resources/com/iotechn/unimall/data/mapper/CardHolderInfoMapper.xml

@@ -3,7 +3,68 @@
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.iotechn.unimall.data.mapper.CardHolderInfoMapper">
 <mapper namespace="com.iotechn.unimall.data.mapper.CardHolderInfoMapper">
-    
 
 
 
 
+    <select id="getCardHolderInfoPage" resultType="com.iotechn.unimall.data.domain.CardHolderInfo">
+        SELECT
+        chi.id,
+        chi.common_id AS commonId,
+        chi.remark,
+        chi.classify,
+        cmi.common_id as cardCommonId,
+        cmi.name AS name,
+        cmi.post AS post,
+        cmi.company_name as companyName,
+        cmi.location AS location,
+        cmi.province AS province,
+        cmi.city AS city,
+        cmi.area AS area,
+        cmi.detailed_address AS detailedAddress,
+        cmi.phone AS phone,
+        cmi.qr_code as qrCode,
+        phi.id as personalHomeId,
+        cui.share_card as shareCard,
+        chi.gmt_update AS gmtUpdate,
+        chi.gmt_create AS gmtCreate
+        FROM
+        card_holder_info chi
+        LEFT JOIN card_management_info cmi on cmi.id=chi.card_id and cmi.delete_flag=0
+        LEFT JOIN common_user_info cui on cui.id=cmi.common_id
+        LEFT JOIN personal_homepage_info phi on phi.common_id=cmi.common_id
+        WHERE
+        chi.common_id = #{commonId}
+        and chi.delete_flag=0
+        <if test="searchContent != null">
+            AND (lower(cmi.name) like lower(CONCAT('%',#{searchContent},'%'))
+            OR lower( cmi.company_name) like lower(CONCAT('%',#{searchContent},'%'))
+            OR lower( chi.remark) like lower(CONCAT('%',#{searchContent},'%')))
+        </if>
+        <if test="classify != null">
+            chi.classify= #{classify}
+        </if>
+        GROUP BY chi.id
+        ORDER BY  chi.gmt_update DESC
+    </select>
+    <select id="getCardHolderCount" resultType="java.lang.Integer">
+        select
+        count(1)
+        from( SELECT
+        count(1)
+        FROM
+        card_holder_info chi
+        LEFT JOIN card_management_info cmi on cmi.id=chi.card_id and cmi.delete_flag=0
+        LEFT JOIN common_user_info cui on cui.id=cmi.common_id
+        WHERE
+        chi.common_id = #{commonId}
+        and chi.delete_flag=0
+        <if test="searchContent != null">
+            AND (lower(cmi.name) like lower(CONCAT('%',#{searchContent},'%'))
+            OR lower( cmi.company_name) like lower(CONCAT('%',#{searchContent},'%'))
+            OR lower( chi.remark) like lower(CONCAT('%',#{searchContent},'%')))
+        </if>
+        <if test="classify != null">
+            chi.classify= #{classify}
+        </if>
+        GROUP BY chi.id) tt
+    </select>
 </mapper>
 </mapper>

+ 9 - 0
unimall-data/src/main/resources/com/iotechn/unimall/data/mapper/CardNewsInfoMapper.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.iotechn.unimall.data.mapper.CardNewsInfoMapper">
+    
+
+
+</mapper>

+ 0 - 18
xiaochengxu/App.vue

@@ -19,27 +19,9 @@
 	/*每个页面公共css */
 	/*每个页面公共css */
 	@import "@/uni_modules/uview-ui/index.scss";
 	@import "@/uni_modules/uview-ui/index.scss";
 	@import '@/uni_modules/uni-scss/index.scss';
 	@import '@/uni_modules/uni-scss/index.scss';
-	// @import '/static/icons/iconfont.css';
 	@import '@/static/styles/index.scss';
 	@import '@/static/styles/index.scss';
-	/* #ifndef APP-NVUE */
-	@import '@/static/customicons.css';
 	// 设置整个项目的背景色
 	// 设置整个项目的背景色
 	page {
 	page {
 		background-color: #f5f5f5;
 		background-color: #f5f5f5;
 	}
 	}
-
-	/* #endif */
-	.example-info {
-		font-size: 14px;
-		color: #333;
-		padding: 10px;
-	}
-	.footer{
-		display:fixed;
-		bottom:40px;
-		text-align:center;
-	}
-	.flex{
-		display:flex;
-	}
 </style>
 </style>

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

@@ -37,7 +37,7 @@
 				</view>
 				</view>
 				<view class="row-tiem flex" v-if="!item.name" @click="toDetail(item.id)">
 				<view class="row-tiem flex" v-if="!item.name" @click="toDetail(item.id)">
 					<view class="left">
 					<view class="left">
-						<image src="../../static/imgs/scirlce.png" mode="widthFix" class="img"></image>
+						<image src="../../static/imgs/mySet/ewm.png" mode="widthFix" class="img"></image>
 					</view>
 					</view>
 					<view class="right">
 					<view class="right">
 						<view class="top">{{item.circleName}}({{item.cardNum}})</view>
 						<view class="top">{{item.circleName}}({{item.cardNum}})</view>

+ 51 - 23
xiaochengxu/pages/circle/createCirclce.vue

@@ -1,31 +1,34 @@
 <template>
 <template>
 	<view class="content">
 	<view class="content">
-
-		<uni-forms :modelValue="formData">
-			<view class="content1">
-				<uni-forms-item label="圈子名称" name="name">
-					<uni-easyinput type="text" v-model="formData.circleName" placeholder="输入圈子名称" />
-				</uni-forms-item>
+		<view class="row1">
+			<view class="title">
+				圈子名称
 			</view>
 			</view>
-			<view class="content2">
-				<view class="title">
-					圈子标签
-				</view>
-				<view class="">
-					<uni-forms-item :label="'标签'+(index+1)" name="labelName" v-for="(item,index) in labelList"
-						:key="index">
-						<view class="flex">
-							<uni-easyinput type="text" v-model="item.labelName" placeholder="输入圈子标签,2-4个字" />
-							<uni-icons type="plus-filled" @click="add(item)" size="40"></uni-icons>
-							<uni-icons type="minus-filled" @click="subtract(index)" size="40"></uni-icons>
-						</view>
-					</uni-forms-item>
+			<u--input placeholder="请输入圈子名称" border="none" v-model="formData.circleName" @change="change"
+				:customStyle="custom"></u--input>
+		</view>
+		<view class="row1">
+			
+			<view class="flex flex-between" style="margin-top: 20rpx;">
+				<view class="title">圈子标签</view>
+				<uni-icons type="plus-filled" @click="add(item)" size="40" color="#112253"></uni-icons>
+			</view>
+			<view class="">
+				<view v-for="(item,index) in labelList":key="index">
+					<view class="flex">
+						<u-input placeholder="请输入圈子标签,2-4个字" border="none" v-model="item.labelName" @change="change"
+							:customStyle="custom">
+							<template slot="suffix">
+								<image src="../../static/imgs/mySet/del.png" mode="widthFix" style="width: 40rpx;" @click="subtract(index)"></image>
+							</template>
+							</u-input>
+						<!-- <uni-icons type="minus-filled" @click="subtract(index)" size="40"></uni-icons> -->
+					</view>
 				</view>
 				</view>
 			</view>
 			</view>
-		</uni-forms>
-
+		</view>
 		<view class="">
 		<view class="">
-			<button type="primary" @click="submit">提交</button>
+			<button type="default" @click="submit" class="submit">提交</button>
 		</view>
 		</view>
 		<u-toast ref="uToast"></u-toast>
 		<u-toast ref="uToast"></u-toast>
 	</view>
 	</view>
@@ -36,6 +39,13 @@
 	export default {
 	export default {
 		data() {
 		data() {
 			return {
 			return {
+				custom: {
+					"margin-top":"20rpx",
+					"background": "#fff",
+					"border-radius": "20rpx",
+					"padding":"20rpx"
+				},
+				value: '',
 				labelList: [{
 				labelList: [{
 						labelName: ''
 						labelName: ''
 					},
 					},
@@ -57,6 +67,9 @@
 			this.formData.commonId = this.userInfo.id
 			this.formData.commonId = this.userInfo.id
 		},
 		},
 		methods: {
 		methods: {
+			change(e) {
+				console.log('change', e);
+			},
 			submit() {
 			submit() {
 				this.formData.circleLabel = []
 				this.formData.circleLabel = []
 				if (!this.formData.circleName) {
 				if (!this.formData.circleName) {
@@ -129,6 +142,21 @@
 	}
 	}
 </script>
 </script>
 
 
-<style lang="scss">
+<style lang="scss" scoped>
+	.content {
+		padding: 20rpx;
 
 
+		.title {
+			font-size: 32rpx;
+			font-weight: bold;
+			color: #1A1A1A;
+		}
+	}
+	.submit{
+		position: fixed;
+		bottom: 100rpx;
+		background-color:#112253 ;
+		color: #fff;
+		width: calc(100% - 40rpx);
+	}
 </style>
 </style>

+ 217 - 83
xiaochengxu/pages/circle/detail.vue

@@ -1,65 +1,77 @@
 <template>
 <template>
 	<view class="content">
 	<view class="content">
-		<view class="content1">
-			<view class="left">
-				<image src="../../static/logo.png" mode="widthFix" class="img"></image>
-			</view>
-			<view class="right">
-				<view class="top">
-					<span class="">
-						{{dataObj.circleName}}({{dataObj.cardNum}})
-					</span>
-					<span class="" @click="addCircle" v-if="!dataObj.circleCardInfo">
-						加入
-					</span>
-					<span class="" @click="exitCircle" v-else>
-						退出
-					</span>
+		<view class="bgc">
+			<view class="content1">
+				<view class="left">
+					<image src="../../static/imgs/mySet/ewm.png" mode="widthFix" class="img"></image>
 				</view>
 				</view>
-				<view class="bottom">
-					<span v-for="item in dataObj.circleLabel">
-						{{item}}
-					</span>
+				<view class="right">
+					<view class="top flex flex-between">
+						<span class="text">
+							{{dataObj.circleName}}({{dataObj.cardNum}})
+						</span>
+						<span class="join" @click="addCircle" v-if="!dataObj.circleCardInfo">
+							<uni-icons type="plusempty" size="12" color="#fff"
+								style="margin:0 10rpx;font-weight: bold;"></uni-icons>加入
+						</span>
+						<span class="join" @click="exitCircle" v-else>
+							退出
+						</span>
+					</view>
+					<view class="bottom flex">
+						<view v-for="item in dataObj.circleLabel" class="text">
+							{{item}}
+						</view>
+					</view>
 				</view>
 				</view>
 			</view>
 			</view>
-		</view>
-		<view class="content2">
-			<view class="top flex-between">
-				<view class="span">
-					<span>全部</span>
-					<span @click="changeCardStatus(1)">已交换</span>
-					<span @click="changeCardStatus(1)">未交换</span>
-				</view>
-				<view class="right" v-if="dataObj.circleCardInfo" @click="myCardClick">
-					我的名片
+			<view class="content2">
+				<view class="top flex-between">
+					<view class="span">
+						<span :class="selectIndex==0?'active':'text'" @click="changeCardStatus(0)">全部</span>
+						<span @click="changeCardStatus(1)" :class="selectIndex==1?'active':'text'">已交换</span>
+						<span @click="changeCardStatus(2)" :class="selectIndex==2?'active':'text'">未交换</span>
+					</view>
+					<view class="right flex" v-if="dataObj.circleCardInfo" @click="myCardClick">
+						<image src="../../static/imgs/cirlce/account.png" mode="widthFix"
+							style="width: 36rpx;margin-right: 15rpx;"></image>我的名片
+					</view>
 				</view>
 				</view>
 			</view>
 			</view>
 		</view>
 		</view>
-		<mescroll-body ref="mescrollRef" @init="mescrollInit" @up="upCallback" @down="downCallback">
-			<view class="content3 flex" v-for="(item,index) in changeCardList" :key="index">
-				<view class="left">
-					<view class="top flex-row-center">
-						<image src="../../static/uni.png" mode="widthFix" class="img"></image>
-					</view>
-					<view class="bottom flex flex-evenly">
-						<uni-icons type="home" size="20" v-if="item.lookPage==1"></uni-icons>
-						<uni-icons type="redo" size="20" @click="changeCard(item)"
-							v-if="item.notDisplay!=1"></uni-icons>
+
+		<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="flex item">
+					<view class="top flex">
+						<view class="left">
+							<u--image src="https://cdn.uviewui.com/uview/album/1.jpg" shape="circle" width="66px"
+								height="66px"></u--image>
+						</view>
+						<view class="right">
+							<view class="row1">
+								<text class="name">{{item.name}}</text>
+								<text class="post">{{item.post}}</text>
+							</view>
+							<view class="row2">
+								{{item.companyName}}
+							</view>
+						</view>
 					</view>
 					</view>
 				</view>
 				</view>
-				<view class="right">
-					<view class="row1 flex">
-						<text>{{item.name}}</text>
-						<text class="line"></text>
-						<text>{{item.post}}</text>
-					</view>
-					<view class="row2">
-						{{item.companyName}}
-					</view>
-					<view class="row3">
-						<uni-icons type="redo" size="20"></uni-icons>
-						<text>{{item.scopeOfBusiness}}</text>
-					</view>
+
+				<view class="line">
+					<image src="../../static/imgs/cirlce/line.png" mode="widthFix" style="width: 100%;"></image>
+				</view>
+				<view class="bottom">
+					{{item.scopeOfBusiness}}
+				</view>
+				<view class="flex btn" v-if="item.lookPage==1||item.notDisplay!=1">
+					<image src="../../static/imgs/cirlce/home.png" mode="widthFix" style="width: 32rpx;"
+						v-if="item.lookPage==1"></image>
+					<image src="../../static/imgs/cirlce/change.png" mode="widthFix" style="width: 32rpx;"
+						@click="changeCard(item)" v-if="item.notDisplay!=1"></image>
 				</view>
 				</view>
 			</view>
 			</view>
 		</mescroll-body>
 		</mescroll-body>
@@ -79,6 +91,7 @@
 		mixins: [MescrollMixin], // 使用mixin
 		mixins: [MescrollMixin], // 使用mixin
 		data() {
 		data() {
 			return {
 			return {
+				selectIndex: 0,
 				isShowChangeCard: false,
 				isShowChangeCard: false,
 				dataObj: {
 				dataObj: {
 					circleName: '',
 					circleName: '',
@@ -102,11 +115,11 @@
 			};
 			};
 		},
 		},
 		onShow() {
 		onShow() {
-			// this.$nextTick(function() {
-			// 	this.canReset && this.mescroll.resetUpScroll() // 重置列表数据为第一页  
-			// 	this.canReset && this.mescroll.scrollTo(0, 0) // 重置列表数据为第一页时,建议把滚动条也重置到顶部,避免无法再次翻页的问题  
-			// 	this.canReset = true // 过滤第一次的onShow事件,避免初始化界面时重复触发upCallback, 无需配置auto:false
-			// });
+			this.$nextTick(function() {
+				this.canReset && this.mescroll.resetUpScroll() // 重置列表数据为第一页  
+				this.canReset && this.mescroll.scrollTo(0, 0) // 重置列表数据为第一页时,建议把滚动条也重置到顶部,避免无法再次翻页的问题  
+				this.canReset = true // 过滤第一次的onShow事件,避免初始化界面时重复触发upCallback, 无需配置auto:false
+			});
 		},
 		},
 		onLoad(options) {
 		onLoad(options) {
 			console.log(options)
 			console.log(options)
@@ -136,10 +149,9 @@
 						type: 'success',
 						type: 'success',
 						message: "操作成功!"
 						message: "操作成功!"
 					})
 					})
-					setTimeout(()=>{
+					setTimeout(() => {
 						this.mescroll.resetUpScroll()
 						this.mescroll.resetUpScroll()
-					},500)
-					this.mescroll.resetUpScroll()
+					}, 500)
 
 
 				})
 				})
 			},
 			},
@@ -171,8 +183,12 @@
 				this.isMyCard = true
 				this.isMyCard = true
 			},
 			},
 			changeCardStatus(val) {
 			changeCardStatus(val) {
+				this.selectIndex = val
 				this.cardStatus = val
 				this.cardStatus = val
-				this.getCardList()
+				this.getCardList({
+					num: 1,
+					size: 10
+				})
 			},
 			},
 			exitCircle() {
 			exitCircle() {
 				this.$request.baseRequest('admin.unimall.circleCardInfo', 'delete', {
 				this.$request.baseRequest('admin.unimall.circleCardInfo', 'delete', {
@@ -190,6 +206,7 @@
 						type: 'success',
 						type: 'success',
 						message: "退出成功!",
 						message: "退出成功!",
 					})
 					})
+					this.mescroll.resetUpScroll()
 
 
 				})
 				})
 			},
 			},
@@ -228,13 +245,14 @@
 						type: 'success',
 						type: 'success',
 						message: "加入成功!",
 						message: "加入成功!",
 					})
 					})
-					
+					this.mescroll.resetUpScroll()
+
 				})
 				})
 			},
 			},
 			addCircle() {
 			addCircle() {
 				if (this.cardList[0].length == 1) {
 				if (this.cardList[0].length == 1) {
 					// console.log(this.cardList[0])
 					// console.log(this.cardList[0])
-					this.cardId=this.cardList[0][0].id
+					this.cardId = this.cardList[0][0].id
 					this.show = true
 					this.show = true
 				} else if (this.cardList[0].length > 1) {
 				} else if (this.cardList[0].length > 1) {
 					this.isShowCard = true
 					this.isShowCard = true
@@ -303,6 +321,7 @@
 				}).then(res => {
 				}).then(res => {
 					console.log(res.data)
 					console.log(res.data)
 					this.dataObj = res.data
 					this.dataObj = res.data
+					this.dataObj.circleLabel = res.data.circleLabel.split(",")
 
 
 				})
 				})
 				this.getCardList(page)
 				this.getCardList(page)
@@ -318,44 +337,159 @@
 </script>
 </script>
 
 
 <style lang="scss">
 <style lang="scss">
+	.bgc {
+		background-color: #112253;
+		padding-bottom: 100rpx;
+	}
+
 	.content1 {
 	.content1 {
 		display: flex;
 		display: flex;
+		padding: 40rpx;
+		box-sizing: border-box;
+
+		.right {
+			width: 100%;
+			display: flex;
+			flex-direction: column;
+			justify-content: space-evenly;
+
+			.top {
+				width: 100%;
+
+				.text {
+					color: #fff;
+					font-weight: bold;
+				}
+
+				.join {
+					background: #42568C;
+					color: #fff;
+					position: absolute;
+					right: 0rpx;
+					padding: 15rpx 20rpx;
+					font-size: 26rpx;
+					border-radius: 50rpx 0rpx 0rpx 50rpx;
+				}
+			}
+
+			.bottom {
+				.text {
+					color: #ffffff90;
+					background: #f1f5ff20;
+					padding: 8rpx 20rpx;
+					margin-right: 10rpx;
+					border-radius: 20rpx;
+					font-size: 26rpx;
+
+				}
+			}
+		}
 	}
 	}
 
 
 	.img {
 	.img {
-		width: 100rpx;
+		width: 122rpx;
+		margin-right: 30rpx;
+	}
+
+	.content2 {
+		padding: 0 40rpx 40rpx 40rpx;
+		box-sizing: border-box;
+
+		.text {
+			font-size: 26rpx;
+			font-weight: 500;
+			color: #FFFFFF;
+			opacity: 0.5;
+			margin-right: 56rpx;
+		}
+
+		.active {
+			font-size: 32rpx;
+			font-weight: bold;
+			color: #FFFFFF;
+			position: relative;
+			margin-right: 56rpx;
+		}
+
+		.active:after {
+			position: absolute;
+			bottom: -20rpx;
+			content: '';
+			width: 50%;
+			height: 6rpx;
+			border-radius: 40rpx;
+			background: #FFFFFF;
+			right: 0;
+			left: 0;
+			margin: auto;
+		}
+
+		.right {
+			color: #D7C08B;
+			font-size: 26rpx;
+
+		}
 	}
 	}
 
 
 	.content3 {
 	.content3 {
-		border: 1px solid #ccc;
+		position: relative;
 		border-radius: 30rpx;
 		border-radius: 30rpx;
-		padding: 40rpx;
+		background: red;
 		box-sizing: border-box;
 		box-sizing: border-box;
+		margin: 0 20rpx 20rpx 20rpx;
 
 
-		.left {
-			width: 30%;
-
-			.top {
+		.item {
+			align-items: flex-start;
+			padding: 34rpx 40rpx 0 40rpx;
+		}
 
 
-				margin-bottom: 20rpx;
+		.top {
+			.left {
+				margin-right: 36rpx;
 			}
 			}
 
 
-			.img {
-				width: 80%;
-			}
+			.right {
+				.row1 {
+					margin-bottom: 10rpx;
 
 
-			.bottom {}
-		}
+					.name {
+						font-size: 38rpx;
+						font-weight: bold;
+						color: #000000;
+						margin-right: 26rpx;
+					}
 
 
-		.right {
-			.row1 {
-				.line {
-					width: 1px;
-					height: 20px;
-					margin: 0 20rpx;
-					background: black;
+					.post {
+						font-size: 26rpx;
+						font-weight: 500;
+						color: #666666;
+					}
+				}
+
+				.row2 {
+					font-size: 26rpx;
+					font-weight: bold;
+					color: #333333;
 				}
 				}
 			}
 			}
 		}
 		}
+
+		.bottom {
+			padding: 20rpx 40rpx 40rpx 40rpx;
+		}
+
+		.btn {
+			background: #11225350;
+			width: 145rpx;
+			display: flex;
+			justify-content: space-evenly;
+			padding: 15rpx 0;
+			border-radius: 32rpx;
+			position: absolute;
+			top: 35rpx;
+			right: 23rpx;
+
+
+		}
 	}
 	}
 </style>
 </style>

+ 161 - 164
xiaochengxu/pages/mySet/cardType.vue

@@ -1,86 +1,63 @@
 <template>
 <template>
-	<view>
-		<mescroll-body  ref="mescrollRef" @init="mescrollInit" @up="upCallback" @down="downCallback">
-			<u-list @scrolltolower="scrolltolower">
-				<u-list-item  v-for='item in cardTypeList'>
-					<view class='flex'>
-						{{item.name}}
-					{{item.circleName}}
-						<u-icon v-if='item.circleName!="默认分类"' @click="del(item)" name="trash-fill" color="#2979ff" size="28"></u-icon>
-						<u-icon @click="stick(item)" name="pushpin" color="#2979ff" size="28"></u-icon>
+	<view class="content">
+		<view class="content1">
+			<view v-for='item in cardTypeList'>
+				<view class='flex row flex-between'>
+					<view class="left flex">
+						<view class="f-text flex flex-all-center">{{item.circleName[0]}}</view>
+						<view class="text">{{item.circleName}}</view>
 					</view>
 					</view>
-				</u-list-item>
-			</u-list>
-		</mescroll-body>
-		<u-modal showCancelButton='true'
-				@confirm='$u.debounce(confirm, 500)'
-				@cancel='show=false' :show="show" title="新增分类" >
+					<view class="right">
+						<image src="../../static/imgs/mySet/del.png" class="img" mode="widthFix"
+							v-if='item.circleName!="默认分类"' @click="del(item)"></image>
+						<image src="../../static/imgs/mySet/zd.png" class="img" mode="widthFix" @click="stick(item)">
+						</image>
+					</view>
+				</view>
+			</view>
+		</view>
+		<u-modal showCancelButton='true' @confirm='$u.debounce(confirm, 500)' @cancel='show=false' :show="show"
+			title="新增分类" confirmColor="#112253">
 			<view class="slot-content">
 			<view class="slot-content">
-				<u--input
-				v-model="cardTypeData.circleName"
-				placeholder="输入分类名称,2-8个字符"
-				border="none"
-				
-				></u--input>
+				<u--input v-model="cardTypeData.circleName" placeholder="输入分类名称,2-8个字符" border="none"></u--input>
 			</view>
 			</view>
 		</u-modal>
 		</u-modal>
 
 
-		<view class="footer">
-			<view @click='add' class='button'>新增</view>
-		</view>
+		<view @click='add' class='button'>新增</view>
+		<u-toast ref="uToast"></u-toast>
 	</view>
 	</view>
 </template>
 </template>
 
 
 <script>
 <script>
+	var that;
 	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
 	import MescrollMixin from "@/uni_modules/mescroll-uni/components/mescroll-uni/mescroll-mixins.js";
 	export default {
 	export default {
 		mixins: [MescrollMixin],
 		mixins: [MescrollMixin],
 		data() {
 		data() {
 			return {
 			return {
-				show:false,
-				page:1,
-				limit:20,
-				cardTypeList:[],
-				cardTypeData:{},
-				userInfo:{},
-				canReset:false,
-				
+				show: false,
+				cardTypeList: [],
+				cardTypeData: {},
+				userInfo: {},
+				canReset: false,
+
 			};
 			};
 		},
 		},
 		onLoad() {
 		onLoad() {
-			
-				// this.getList()
+			that = this
 		},
 		},
 		onShow() {
 		onShow() {
 			this.userInfo = uni.getStorageSync("userInfo")
 			this.userInfo = uni.getStorageSync("userInfo")
-			this.cardTypeData.commonId=uni.getStorageSync("userInfo").id
-			this.$nextTick(function() {
-				this.canReset && this.mescroll.resetUpScroll() // 重置列表数据为第一页  
-				this.canReset && this.mescroll.scrollTo(0, 0) // 重置列表数据为第一页时,建议把滚动条也重置到顶部,避免无法再次翻页的问题  
-				this.canReset = true // 过滤第一次的onShow事件,避免初始化界面时重复触发upCallback, 无需配置auto:false
-			});
+			this.cardTypeData.commonId = uni.getStorageSync("userInfo").id
+			this.getList()
 		},
 		},
 		methods: {
 		methods: {
-			mescrollInit(){
-				
-			},
-			downCallback(){
-				var that = this
-				this.$nextTick(() => {
-				// mescroll.endSuccess(data.result);
-				that.mescroll.resetUpScroll()
-				});
-				
-			},
-			upCallback(page){
-				var that = this
+			getList() {
 				uni.showLoading({
 				uni.showLoading({
-						title: '数据加载中'
-					})
-				this.$request.baseRequest('admin.unimall.cardClassifyInfo', 'list',{
-					page:page.num,
-					limit:page.size,
-					commonId:uni.getStorageSync("userInfo").id
+					title: '数据加载中'
+				})
+				this.$request.baseRequest('admin.unimall.cardClassifyInfo', 'list', {
+					commonId: uni.getStorageSync("userInfo").id
 				}, failres => {
 				}, failres => {
 					console.log('res+++++', failres.errmsg)
 					console.log('res+++++', failres.errmsg)
 					this.$refs.uToast.show({
 					this.$refs.uToast.show({
@@ -89,162 +66,182 @@
 					})
 					})
 					uni.hideLoading()
 					uni.hideLoading()
 				}).then(res => {
 				}).then(res => {
-					console.log(res)
-					if(page.num == 1) this.cardTypeList = [];
-					let curPageLen = res.data.items.length;
-					let totalPage = res.data.total;
-					if(res.data.items.length>0){
-						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})
-						// console.log(itemIndex)
-						if(itemIndex!=-1){
-							var data=res.data.items.splice(itemIndex,1)
-							if(page.num==1){
-								data.push({circleName:'默认分类',name:'默'})	
-							}
-							// console.log(data.concat(res.data.items))
-							res.data.items=data.concat(res.data.items)
-						}else{
-							if(page.num==1){
-								res.data.items=[{circleName:'默认分类',name:'默'}].concat(res.data.items)	
+					this.cardTypeList = res.data.items
+					uni.hideLoading()
+					for (let i = 0; i < this.cardTypeList.length; i++) {
+						if (this.cardTypeList[i].topMarking == 0) {
+							if (i == 0) {
+								this.cardTypeList.unshift({
+									circleName: '默认分类',
+									name: '默'
+								});
+							} else {
+								this.cardTypeList.splice(i, 0, {
+									circleName: '默认分类',
+									name: '默'
+								})
 							}
 							}
+							return
 						}
 						}
-						this.cardTypeList=this.cardTypeList.concat(res.data.items)
-					}else{
-						if(page.num==1){
-							this.cardTypeList=[{circleName:'默认分类',name:'默'}]
-						 }
 					}
 					}
-					
-					
-					this.$nextTick(() => {
-						console.log(that)
-					// mescroll.endSuccess(data.result);
-					that.mescroll.endBySize(curPageLen, totalPage)
-					});
-					
-					// if (res.errno == 200) {
-					uni.hideLoading()
-					
-					// }
 				})
 				})
 			},
 			},
-			del(item){
+			del(item) {
 				uni.showLoading({
 				uni.showLoading({
 					title: '加载中',
 					title: '加载中',
-					mask:true
+					mask: true
 				})
 				})
-				this.$request.baseRequest('admin.unimall.cardClassifyInfo', 'delete',{
-					commonId:uni.getStorageSync("userInfo").id,
-					id:item.id
+				this.$request.baseRequest('admin.unimall.cardClassifyInfo', 'delete', {
+					commonId: uni.getStorageSync("userInfo").id,
+					id: item.id
 				}, failres => {
 				}, failres => {
 					console.log('res+++++', failres.errmsg)
 					console.log('res+++++', failres.errmsg)
 					uni.showToast({
 					uni.showToast({
-					    title: failres.errmsg,
-					    icon: 'none',
-					    duration: 2000
+						title: failres.errmsg,
+						icon: 'none',
+						duration: 2000
 					})
 					})
 					uni.hideLoading()
 					uni.hideLoading()
 				}).then(res => {
 				}).then(res => {
-					uni.showToast({
-					    title: '删除成功',
-					    icon: 'none',
-					    duration: 2000
-					})
 					uni.hideLoading()
 					uni.hideLoading()
-					this.mescroll.resetUpScroll( )
+					this.$refs.uToast.show({
+						type: 'success',
+						message: '删除成功!',
+						complete() {
+							that.getList()
+						}
+					})
 				})
 				})
 			},
 			},
-			stick(item){
+			stick(item) {
 				uni.showLoading({
 				uni.showLoading({
 					title: '加载中',
 					title: '加载中',
-					mask:true
+					mask: true
 				})
 				})
-				var type='',type1='',data={}
-				if(item.id){
-					type='admin.unimall.cardClassifyInfo'
-					type1='top'
-					data={
-						cardClassifyInfo:JSON.stringify({id:item.id})
+				var type = '',
+					type1 = '',
+					data = {}
+				if (item.id) {
+					type = 'admin.unimall.cardClassifyInfo'
+					type1 = 'top'
+					data = {
+						cardClassifyInfo: JSON.stringify({
+							id: item.id
+						})
 					}
 					}
-				}else{
-					type='admin.unimall.cardClassifyInfo'
-					type1='topDefault'
-					data={
-						cardClassifyInfo:JSON.stringify({commonId:this.cardTypeData.commonId})
+				} else {
+					type = 'admin.unimall.cardClassifyInfo'
+					type1 = 'topDefault'
+					data = {
+						cardClassifyInfo: JSON.stringify({
+							commonId: this.cardTypeData.commonId
+						})
 					}
 					}
 				}
 				}
-				this.$request.baseRequest(type, type1,data, failres => {
+				this.$request.baseRequest(type, type1, data, failres => {
 					console.log('res+++++', failres.errmsg)
 					console.log('res+++++', failres.errmsg)
 					uni.showToast({
 					uni.showToast({
-					    title: failres.errmsg,
-					    icon: 'none',
-					    duration: 2000
+						title: failres.errmsg,
+						icon: 'none',
+						duration: 2000
 					})
 					})
 					uni.hideLoading()
 					uni.hideLoading()
 				}).then(res => {
 				}).then(res => {
-					uni.showToast({
-					    title: '置顶成功',
-					    icon: 'none',
-					    duration: 2000
-					})
 					uni.hideLoading()
 					uni.hideLoading()
-					this.mescroll.resetUpScroll( )
+					this.$refs.uToast.show({
+						type: 'success',
+						message: '置顶成功!',
+						complete() {
+							that.getList()
+						}
+					})
 				})
 				})
 			},
 			},
-			
-			add(){
-				// if(){
-					
-				// }
-				this.show=true
+
+			add() {
+				this.show = true
 			},
 			},
-			confirm(){
-				if(!this.cardTypeData.circleName){
+			confirm() {
+				if (!this.cardTypeData.circleName) {
 					uni.showToast({
 					uni.showToast({
-					    title: '分类名称不能为空!',
-					    icon: 'none',
-					    duration: 2000
+						title: '分类名称不能为空!',
+						icon: 'none',
+						duration: 2000
 					})
 					})
 					return
 					return
 				}
 				}
-				if(this.cardTypeData.circleName<2||this.cardTypeData.circleName>8){
+				if (this.cardTypeData.circleName < 2 || this.cardTypeData.circleName > 8) {
 					uni.showToast({
 					uni.showToast({
-					    title: '类别名称2-8个字!',
-					    icon: 'none',
-					    duration: 2000
+						title: '类别名称2-8个字!',
+						icon: 'none',
+						duration: 2000
 					})
 					})
 					return
 					return
 				}
 				}
-				this.$request.baseRequest('admin.unimall.cardClassifyInfo', 'add',{
-						cardClassifyInfo:JSON.stringify(this.cardTypeData)
-					}, failres => {
+				this.$request.baseRequest('admin.unimall.cardClassifyInfo', 'add', {
+					cardClassifyInfo: JSON.stringify(this.cardTypeData)
+				}, failres => {
 					console.log('res+++++', failres.errmsg)
 					console.log('res+++++', failres.errmsg)
-					uni.showToast({
-					    title: failres.errmsg,
-					    icon: 'none',
-					    duration: 2000
+					this.$refs.uToast.show({
+						type: 'error',
+						message: failres.errmsg,
 					})
 					})
 					uni.hideLoading()
 					uni.hideLoading()
 				}).then(res => {
 				}).then(res => {
-					console.log(res)
-					// if (res.errno == 200) {
 					uni.hideLoading()
 					uni.hideLoading()
-					this.show=false
-					this.cardTypeData={
-						commonId:uni.getStorageSync("userInfo").id,
+					this.show = false
+					this.cardTypeData = {
+						commonId: uni.getStorageSync("userInfo").id,
 					}
 					}
-					this.mescroll.resetUpScroll( )
-					// }
+					this.$refs.uToast.show({
+						type: 'success',
+						message: '操作成功',
+						complete() {
+							that.getList()
+						}
+
+					})
 				})
 				})
-				
+
 			}
 			}
 		}
 		}
 	}
 	}
 </script>
 </script>
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>
+	.content1 {
+		.row {
+			margin: 20rpx 20rpx 0 20rpx;
+			background-color: #fff;
+			padding: 20rpx;
+			border-radius: 20rpx;
+
+			.f-text {
+				width: 58rpx;
+				height: 58rpx;
+				background-color: #112253;
+				border-radius: 50%;
+				color: #fff;
+				margin-right: 20rpx;
+				font-size: 32rpx;
+			}
 
 
-</style>
+			.img {
+				width: 48rpx;
+				margin-left: 20rpx;
+			}
+		}
+	}
+
+	.button {
+		position: fixed;
+		bottom: 108rpx;
+		width: calc(100% - 40rpx);
+		padding: 24rpx 0;
+		color: #fff;
+		background-color: #112253;
+		text-align: center;
+		margin: 0 20rpx;
+		border-radius: 20rpx;
+	}
+</style>

+ 174 - 42
xiaochengxu/pages/mySet/myCard.vue

@@ -1,23 +1,46 @@
 <template>
 <template>
 	<view>
 	<view>
-		<view>
-			<u-navbar placeholder title="我的证件" @leftClick="leftClick">
-			</u-navbar>
-			<view class="flex">
-				<!-- <view :style="{'margin-top':navHeight  +'px'}" class="flex"> -->
-				<view @click='addclick' class="button">新增</view>
-				<view @click='share' class="button">分享</view>
-				<!-- <button ref='share' open-type="share" class="button">分享</button> -->
-				<view @click='imageOCR' class="button">识别号码</view>
+		<view class="flex content1 flex-between">
+			<view @click='addclick' class="button">
+				<image src="../../static/imgs/mySet/add.png" mode="widthFix" class="btn-img"></image>
+				新增
 			</view>
 			</view>
-
-
-			<mescroll-body v-if='!addstatus&&cardList.length==0||cardList.length>0' ref="mescrollRef"
-				@init="mescrollInit" @up="upCallback" @down="downCallback">
-				<view v-if='cardList.length>0' class="">
-					<view v-for='(item,index) in cardList' class="">
-						<view v-if='!item.editstatus'>
-							{{item.certificateName}}
+			<view @click='share' class="button">
+				<image src="../../static/imgs/mySet/share1.png" mode="widthFix" class="btn-img"></image>
+				分享
+			</view>
+			<view @click='imageOCR' class="button">
+				<image src="../../static/imgs/mySet/shibie.png" mode="widthFix" class="btn-img"></image>
+				识别号码
+			</view>
+		</view>
+		<view v-if='addstatus' class="content2" style="background-color: #fff;">
+			<view class="flex flex-between">
+				<u--input v-model="cardData.certificateName" placeholder="输入证件名称"></u--input>
+				<view @click='add' class="submit">提交</view>
+			</view>
+			<view>
+				<u-upload @afterRead="afterRead" :fileList="fileList1" @delete="deletePic" name="1" multiple
+					:maxCount="1">
+					<view class="bgc">
+						<view class="circle">
+							<view class="add">
+								+
+							</view>
+						</view>
+					</view>
+					</u-upload>
+			</view>
+		</view>
+		<view class="content3" style="background-color: #F7F7F7;">
+			<mescroll-body v-if='!addstatus&&cardList.length==0||cardList.length>0' ref="mescrollRef" @init="mescrollInit"
+				@up="upCallback" @down="downCallback">
+				<view v-for='(item,index) in cardList' class="">
+					<view class="flex flex-between row">
+						<view v-if='!item.editstatus' class="left">
+							<view class="name-text">
+								{{item.certificateName}}
+							</view>
 							<text v-if='item.personNo'>({{item.personNo1}})</text>
 							<text v-if='item.personNo'>({{item.personNo1}})</text>
 							<u-icon v-if='item.personNo' @click='clip(0,item)' name="file-text-fill" color="#2979ff"
 							<u-icon v-if='item.personNo' @click='clip(0,item)' name="file-text-fill" color="#2979ff"
 								size="28"></u-icon>
 								size="28"></u-icon>
@@ -25,34 +48,36 @@
 							<u-icon v-if='item.bankNo' @click='clip(1,item)' name="file-text-fill" color="#2979ff"
 							<u-icon v-if='item.bankNo' @click='clip(1,item)' name="file-text-fill" color="#2979ff"
 								size="28"></u-icon>
 								size="28"></u-icon>
 						</view>
 						</view>
-						<u--input v-else v-model="item.certificateName" placeholder="输入证件名称" border="none"></u--input>
-						<view @click='edit(item)'>{{!item.editstatus?'编辑':'完成'}}</view>
-						<u-checkbox-group v-model="item.checked" placement="column"
-							@change="checkboxChange($event,index,item)">
-							<u-checkbox :name='index+1' :customStyle="{marginBottom: '8px'}">
-							</u-checkbox>
-						</u-checkbox-group>
-
-						<image v-if='!item.editstatus' :src="item.certificateImage" mode=""></image>
-						<u-upload v-else @afterRead="afterRead" :fileList="fileList2" @delete="deletePic" name="2"
-							multiple :maxCount="1"></u-upload>
-						<u-icon @click="del(item)" name="trash-fill" color="#2979ff" size="28"></u-icon>
+						<u--input v-else v-model="item.certificateName" placeholder="输入证件名称"></u--input>
+						<view class="flex" v-if="item.editstatus">
+							<view @click='qxEdit(item)' :class="!item.editstatus?'edit':'finished'" style="margin:0 20rpx;">取消</view>
+							<view @click='edit(item)' :class="!item.editstatus?'edit':'finished'">完成</view>
+						</view>
+						<view @click='edit(item)' :class="!item.editstatus?'edit':'finished'" v-else>编辑</view>
+					</view>
+					<view class="row2" v-if='!item.editstatus'>
+						<image  :src="item.certificateImage" mode="aspectFill" class="img"></image>
+						<view class="right">
+							<u-checkbox-group v-model="item.checked" placement="column" @change="checkboxChange($event,index,item)">
+								<u-checkbox :name='index+1' :customStyle="{marginBottom: '8px'}">
+								</u-checkbox>
+							</u-checkbox-group>
+							<!-- <image src="../../static/imgs/mySet/del1.png" mode="widthFix" @click="del(item)" style="width: 28rpx;"></image> -->
+							<u-icon @click="del(item)" name="trash-fill" color="#fff" size="24"></u-icon>
+						</view>
 					</view>
 					</view>
-					<view></view>
+					<u-upload v-else @afterRead="afterRead" :fileList="fileList2" @delete="deletePic" name="2" multiple
+						:maxCount="1">
+						<view class="">
+							123
+						</view>
+						<!-- <image src="https://cdn.uviewui.com/uview/demo/upload/positive.png" 
+							mode="widthFix" style="width: 250px;height: 150px;"></image> -->
+						</u-upload>
 				</view>
 				</view>
 			</mescroll-body>
 			</mescroll-body>
-			<view v-if='addstatus' class="">
-				<view class="">
-					<u--input v-model="cardData.certificateName" placeholder="输入证件名称" border="none"></u--input>
-				</view>
-				<view @click='add'>提交</view>
-				<view>
-					<u-upload @afterRead="afterRead" :fileList="fileList1" @delete="deletePic" name="1" multiple
-						:maxCount="1"></u-upload>
-				</view>
-			</view>
 		</view>
 		</view>
-
+	
 		<u-picker @cancel='show=false' @confirm='pickerConfirm' title='识别类型' :show="show" :columns="columns"></u-picker>
 		<u-picker @cancel='show=false' @confirm='pickerConfirm' title='识别类型' :show="show" :columns="columns"></u-picker>
 		<u-popup :show="popupshow" mode="bottom">
 		<u-popup :show="popupshow" mode="bottom">
 			<view>
 			<view>
@@ -143,6 +168,9 @@
 			});
 			});
 		},
 		},
 		methods: {
 		methods: {
+			qxEdit(){
+				this.mescroll.resetUpScroll()
+			},
 			clip(status, item) {
 			clip(status, item) {
 				uni.setClipboardData({
 				uni.setClipboardData({
 					data: status == 1 ? item.bankNo : item.personNo, // e是你要保存的内容
 					data: status == 1 ? item.bankNo : item.personNo, // e是你要保存的内容
@@ -495,7 +523,7 @@
 	}
 	}
 </script>
 </script>
 
 
-<style lang="scss" scoped>
+<style lang="scss" scoped> 
 	button::after {
 	button::after {
 		border: initial;
 		border: initial;
 	}
 	}
@@ -604,4 +632,108 @@
 			border-top: 1rpx solid #E4E7ED;
 			border-top: 1rpx solid #E4E7ED;
 		}
 		}
 	}
 	}
+
+	.content1 {
+		
+		background-color: #112253;
+		padding: 20rpx;
+		box-sizing: border-box;
+		border-radius: 0px 0px 20rpx 20rpx;
+
+		.button {
+			display: flex;
+			align-items: center;
+			justify-content: center;
+			background: #fff;
+			color: #333333;
+			border-radius: 20rpx;
+			padding: 24rpx;
+			width: calc(33% - 60rpx);
+		}
+
+		.btn-img {
+			width: 28rpx;
+			margin-right: 18rpx;
+		}
+	}
+	.content2{
+		padding:20rpx ;
+		.bgc{
+			background: #fff;
+			width: calc(100vw - 40rpx);
+			height: 190rpx;
+			.circle{
+				width: 74px;
+				height: 74px;
+				border-radius: 50%;
+				background-color: #F7F7F7;
+				
+			}
+		}
+		.submit{
+			padding: 10rpx 14rpx;
+			text-align: center;
+			background: #112253;
+			border-radius: 10rpx;
+			font-size: 28rpx;
+			font-weight: bold;
+			color: #FFFFFF;
+			margin-left: 20rpx;
+		}
+	}
+	.content3{
+		.row{
+			padding: 20rpx;
+			box-sizing: border-box;
+			.name-text{
+				font-size: 32rpx;
+				font-weight: bold;
+				color: #1A1A1A;
+			}
+		}
+		.edit{
+			padding: 10rpx 14rpx;
+			text-align: center;
+			background: #112253;
+			border-radius: 10rpx;
+			font-size: 28rpx;
+			font-weight: bold;
+			color: #FFFFFF;
+		}
+		.finished{
+			padding: 10rpx 14rpx;
+			text-align: center;
+			background: #112253;
+			border-radius: 10rpx;
+			font-size: 28rpx;
+			font-weight: bold;
+			color: #FFFFFF;
+		}
+		.row2{
+			display: flex;
+			    justify-content: center;
+			    position: relative;
+				.img{
+					    border-radius: 20rpx;
+						height: 380rpx;
+				}
+				.right{
+					    position: absolute;
+					    right: 0;
+					    height: 100%;
+					    right: 10px;
+					    background: #11225359;
+					    border-radius: 10px;
+					    display: flex;
+					    flex-direction: column;
+					    justify-content: space-between;
+					    align-items: center;
+					    padding: 10px 5px;
+					    box-sizing: border-box;
+				}
+				/deep/.u-checkbox__icon-wrap{
+					margin-right: 0!important;
+				}
+		}
+	}
 </style>
 </style>

+ 103 - 54
xiaochengxu/pages/mySet/myHome.vue

@@ -1,5 +1,5 @@
 <template>
 <template>
-	<view>
+	<view class="content">
 		<view v-if='!editstatus&&fileList.length>0' class="swiper-wrap">
 		<view v-if='!editstatus&&fileList.length>0' class="swiper-wrap">
 			<u-swiper :list="fileList" indicator indicatorMode="dot"
 			<u-swiper :list="fileList" indicator indicatorMode="dot"
 			autoplay
 			autoplay
@@ -13,59 +13,63 @@
 			    title
 			    title
 				loading
 				loading
 		></u-skeleton> -->
 		></u-skeleton> -->
-		<view class="company-title">
-			<view v-if='editstatus'>公司/机构名称</view>
-		 	<u--input v-if='editstatus' v-model="companyData.companyName"  placeholder="请输入公司名称" border="none" ></u--input>
-			<view v-else>{{companyData.companyName}}</view>
-		</view>
-		<view class="intro">
-			<view v-if='editstatus'>公司/机构简介</view>
-			<u--input type='textarea' v-if='editstatus' v-model="companyData.companyIntroduction" placeholder="请输入公司简介" border="none" ></u--input>
-			<view v-else>{{companyData.companyIntroduction}}</view>
-		</view>
-		<view class="scope">
-			<view>业务范围</view>
-			<u--input type='textarea' v-if='editstatus' v-model="companyData.scopeOfBusiness" placeholder="输入业务范围,不超过500个字" border="none" ></u--input>
-			<view v-else>{{companyData.scopeOfBusiness}}</view>
-		</view>
-		<u-list>
-			<u-list-item>
-				<view v-if='editstatus'>公司地址</view>
-				<u--input v-if='editstatus' v-model="companyData.companyAddress" placeholder="输入地址" border="none" ></u--input>
-				<view v-else>{{companyData.companyAddress}}</view>
-			</u-list-item>
-			<u-list-item>
-				<view v-if='editstatus'>联系电话</view>
-				<u--input v-if='editstatus' v-model="companyData.phone" placeholder="输入联系电话" border="none" ></u--input>
-				<view v-else>{{companyData.phone}}</view>
-			</u-list-item>
-			<u-list-item>
-				<view v-if='editstatus'>传真</view>
-				<u--input v-if='editstatus' v-model="companyData.portraiture" placeholder="输入传真号" border="none" ></u--input>
-				<view v-else>{{companyData.portraiture}}</view>
-			</u-list-item>
-			<u-list-item>
-				<view v-if='editstatus'>邮箱</view>
-				<u--input v-if='editstatus' v-model="companyData.postbox" placeholder="输入邮箱" border="none" ></u--input>
-				<view v-else>{{companyData.postbox}}</view>
-			</u-list-item>
-		</u-list>
-		<view v-if='editstatus'>
-			<view>企业风采</view>
-			<!-- <image v-for='item in fileList' :src="item.url" mode=""></image> -->
-			<u-upload
-					@afterRead="afterRead"
-					:fileList="fileList1"
-					@delete="deletePic"
-					name="1"
-					multiple
-					:maxCount="10"
-				></u-upload>
+		<view class="top" v-else>
+			
 		</view>
 		</view>
-		<view class="footer">
-			<view v-if='!editstatus' @click='edit' class='button'>编辑</view>
-			<view v-else @click='$u.debounce(buttonsubmit, 500)' class='button'>提交</view>
+		<view class="content1" :class="editstatus?'content1-edit':''">
+			<view class="company-title row flex flex-between line" >
+				<view v-if='editstatus'>公司/机构名称</view>
+			 	<u--input v-if='editstatus' v-model="companyData.companyName"  placeholder="请输入公司名称" border="none" inputAlign='right'></u--input>
+				<view v-else>{{companyData.companyName}}</view>
+			</view>
+			<view class="intro top-m">
+				<view v-if='editstatus'class="row">公司/机构简介</view>
+				<u--textarea v-if='editstatus' v-model="companyData.companyIntroduction" count placeholder="请输入公司/机构简介,不超过1000个字"></u--textarea>
+				<view v-else>{{companyData.companyIntroduction}}</view>
+			</view>
+			<view class="scope top-m">
+				<view class="row">业务范围</view>
+				<u--textarea v-if='editstatus' v-model="companyData.scopeOfBusiness" count placeholder="输入业务范围,不超过500个字"></u--textarea>
+				<view v-else>{{companyData.scopeOfBusiness}}</view>
+			</view>
+				<view class="row flex flex-between line top-m">
+					<view v-if='editstatus'>公司地址</view>
+					<u--input v-if='editstatus' v-model="companyData.companyAddress" placeholder="输入地址" border="none" inputAlign='right'></u--input>
+					<view v-else>{{companyData.companyAddress}}</view>
+				</view>
+				<view class="row flex flex-between line top-m">
+					<view v-if='editstatus'>联系电话</view>
+					<u--input v-if='editstatus' v-model="companyData.phone" placeholder="输入联系电话" border="none" inputAlign='right'></u--input>
+					<view v-else>{{companyData.phone}}</view>
+				</view>
+				<view class="row flex flex-between line top-m">
+					<view v-if='editstatus'>传真</view>
+					<u--input v-if='editstatus' v-model="companyData.portraiture" placeholder="输入传真号" border="none" inputAlign='right'></u--input>
+					<view v-else>{{companyData.portraiture}}</view>
+				</view>
+				<view class="row flex flex-between line top-m">
+					<view v-if='editstatus'>邮箱</view>
+					<u--input v-if='editstatus' v-model="companyData.postbox" placeholder="输入邮箱" border="none" inputAlign='right'></u--input>
+					<view v-else>{{companyData.postbox}}</view>
+				</view>
+			<view v-if='editstatus'>
+				<view class="qyfc">企业风采</view>
+				<!-- <image v-for='item in fileList' :src="item.url" mode=""></image> -->
+				<u-upload
+						@afterRead="afterRead"
+						:fileList="fileList1"
+						@delete="deletePic"
+						name="1"
+						multiple
+						:maxCount="10"
+					></u-upload>
+			</view>
 		</view>
 		</view>
+	<view class="footer">
+		<button v-if='!editstatus' @click='edit' class='button' >编辑</button>
+		<button v-else @click='$u.debounce(buttonsubmit, 500)' class='button' type="default">提交</button>
+	</view>
+		
 		<u-toast ref="uToast"></u-toast>
 		<u-toast ref="uToast"></u-toast>
 	</view>
 	</view>
 </template>
 </template>
@@ -277,6 +281,51 @@
 	}
 	}
 </script>
 </script>
 
 
-<style>
-
+<style scoped lang="scss">
+	/deep/.u-border {
+		border-color: #E6E6E6!important;
+	}
+	.content{
+		
+	}
+	.top{
+		width: 100vw;
+		height: 135rpx;
+		background: #112253;
+		border-radius: 0px 0px 20rpx 20rpx;
+	}
+	.content1{
+		margin: 20rpx 0 120rpx 0;
+		background-color: #fff;
+		border-radius: 20rpx;
+		padding: 20rpx;
+		box-sizing: border-box;
+		.row{
+			padding-bottom: 24rpx;
+		}
+		.line{
+			border-bottom: 1px solid #E6E6E6;
+		}
+		.top-m{
+			margin-top: 24rpx;
+		}
+		.qyfc{
+			margin: 24rpx 0;
+		}
+	}
+	.content1-edit{
+		position: relative;
+		top: -135rpx;
+	}
+	.footer{
+		position: fixed;
+		bottom: 80rpx;
+		width: calc(100% - 40rpx);
+		padding: 0 20rpx;
+	}
+	.button{
+		color: #fff;
+		background-color: #112253;
+		border-radius: 20rpx;
+	}
 </style>
 </style>

+ 297 - 48
xiaochengxu/pages/mySet/newCard.vue

@@ -1,8 +1,8 @@
 <template>
 <template>
 	<view class="content">
 	<view class="content">
-		<view class="content1">
+		<view class="content1 bgc0" v-show="selectIndex==0">
 			<view class="left">
 			<view class="left">
-				<image src="../../static/c3.png" mode="widthFix" class="img"></image>
+				<image src="../../static/2.jpg" mode="widthFix" class="img"></image>
 			</view>
 			</view>
 			<view class="right">
 			<view class="right">
 				<view class="row1">
 				<view class="row1">
@@ -22,53 +22,175 @@
 				</view>
 				</view>
 			</view>
 			</view>
 		</view>
 		</view>
-		<view class="change-template">
-			切换模板
+		<view class="content1 bgc1" v-show="selectIndex==1">
+			<view class="left">
+				<image src="../../static/2.jpg" mode="widthFix" class="img"></image>
+			</view>
+			<view class="right">
+				<view class="row1">
+					{{cardInfo.name}}|{{cardInfo.post}}
+				</view>
+				<view class="">
+					{{cardInfo.companyName}}
+				</view>
+				<view class="">
+					地址
+				</view>
+				<view class="">
+					联系电话
+				</view>
+				<view class="">
+					备注
+				</view>
+			</view>
 		</view>
 		</view>
-		<view class="content2">
-			<view class="">
-				名片信息
-			</view>
-			<u--form labelPosition="left" :model="cardInfo" ref="uForm">
-				<u-form-item label="名片标识" prop="cardInfo.cardBusiness" borderBottom>
-					<u--input v-model="cardInfo.cardBusiness" border="none" placeholder="输入名片标识"></u--input>
-				</u-form-item>
-				<u-form-item label="姓名" prop="cardInfo.name" borderBottom>
-					<u--input v-model="cardInfo.name" border="none" placeholder="输入姓名"></u--input>
-				</u-form-item>
-				<u-form-item label="职务" prop="cardInfo.post" borderBottom>
-					<u--input v-model="cardInfo.post" border="none" placeholder="输入职务,不超过8个字符"></u--input>
-				</u-form-item>
-				<u-form-item label="公司/机构名称" prop="cardInfo.companyName" borderBottom>
-					<u--input v-model="cardInfo.companyName" border="none" placholder="输入公司/机构名称"></u--input>
-				</u-form-item>
-				</u-form-item>
-				<!-- 		<u-form-item label="地址" prop="userInfo.name" borderBottom>
-					<view @click="showPicker">选择地址</view>
-					<view>{{ province }}{{ city }}{{ area }}</view>
-				</u-form-item> -->
-				<u-form-item label="定位" prop="cardInfo.name" borderBottom @click="placeSelect();hideKeyboard()">
-					<text>选择地址> </text>
-				</u-form-item>
-				<u-form-item label="详细地址" prop="cardInfo.name" borderBottom>
-					<u--input v-model="cardInfo.detailedAddress" border="none" placeholder="输入地址,不超过15个字"></u--input>
-				</u-form-item>
-				<u-form-item label="联系电话" prop="cardInfo.name" borderBottom>
-					<u--input v-model="cardInfo.phone" border="none" placeholder="输入联系电话"></u--input>
-				</u-form-item>
-			</u--form>
+		<view class="content1 bgc2" v-show="selectIndex==2">
+			<view class="left">
+				<image src="../../static/2.jpg" mode="widthFix" class="img"></image>
+			</view>
+			<view class="right">
+				<view class="row1">
+					{{cardInfo.name}}|{{cardInfo.post}}
+				</view>
+				<view class="">
+					{{cardInfo.companyName}}
+				</view>
+				<view class="">
+					地址
+				</view>
+				<view class="">
+					联系电话
+				</view>
+				<view class="">
+					备注
+				</view>
+			</view>
+		</view>
+		<view class="content1 bgc3" v-show="selectIndex==3">
+			<view class="left">
+				<image src="../../static/2.jpg" mode="widthFix" class="img"></image>
+			</view>
+			<view class="right">
+				<view class="row1">
+					{{cardInfo.name}}|{{cardInfo.post}}
+				</view>
+				<view class="">
+					{{cardInfo.companyName}}
+				</view>
+				<view class="">
+					地址
+				</view>
+				<view class="">
+					联系电话
+				</view>
+				<view class="">
+					备注
+				</view>
+			</view>
 		</view>
 		</view>
-		<view class="content3">
+		<view class="content1 bgc4" v-show="selectIndex==4">
 			<view class="left">
 			<view class="left">
-				上传企业logo或个人头像
+				<image src="../../static/2.jpg" mode="widthFix" class="img"></image>
 			</view>
 			</view>
 			<view class="right">
 			<view class="right">
-				<u-upload :fileList="fileList1" @afterRead="afterRead" @delete="deletePic" name="1" multiple
-					:maxCount="1"></u-upload>
+				<view class="row1">
+					{{cardInfo.name}}|{{cardInfo.post}}
+				</view>
+				<view class="">
+					{{cardInfo.companyName}}
+				</view>
+				<view class="">
+					地址
+				</view>
+				<view class="">
+					联系电话
+				</view>
+				<view class="">
+					备注
+				</view>
 			</view>
 			</view>
+		</view>
+		<view class="change-template">
+			切换模板
+		</view>
+		<view class="img-list">
+			<view class="img-item" v-for="(item,index) in imgList" @click="changeTemplate(index)">
+				<image :src="item.dictValue" class="img-item" :key="index"></image>
+				<image src="../../static/imgs/card/dh.png" class="dh" v-if="selectIndex==index"></image>
+			</view>
+		</view>
+		<view class="change-template">
+			名片信息
+		</view>
+
+		<view class="content2">
+			<view class="flex flex-between row">
+				<view class="left">
+					名片标识
+				</view>
+				<u--input v-model="cardInfo.cardBusiness" border="none" placeholder="输入名片标识" inputAlign='right'></u--input>
+			</view>
+			<view class="flex flex-between row">
+				<view class="left">
+					姓名
+				</view>
+				<u--input v-model="cardInfo.name" border="none" placeholder="输入姓名" inputAlign='right'></u--input>
+			</view>
+			<view class="flex flex-between row">
+				<view class="left">
+					职务
+				</view>
+				<u--input v-model="cardInfo.post" border="none" placeholder="输入职务,不超过8个字符" inputAlign='right'></u--input>
+			</view>
+			<view class="flex flex-between row">
+				<view class="left">
+					公司/机构名称
+				</view>
+				<u--input v-model="cardInfo.companyName" border="none" placeholder="输入公司/机构名称" inputAlign='right'></u--input>
+			</view>
+			<view class="flex flex-between row" @click="placeSelect();hideKeyboard()">
+				<view class="left">
+					地址
+				</view>
+				<view v-if="cardInfo.province">{{ cardInfo.province }}{{ cardInfo.city }}{{ cardInfo.area }}</view>
+				<view class="" v-else>
+					<text>选择地址 </text>
+					<image src="../../static/imgs/card/yjt.png" mode="" style="margin-left:10rpx;width:12rpx;height: 21rpx;"></image>
+				</view>
+				
+			</view>
+			<view class="flex flex-between row">
+				<view class="left">
+					详细地址
+				</view>
+				<u--input v-model="cardInfo.detailedAddress" border="none" placeholder="输入详细地址,不超过15个字" inputAlign='right'></u--input>
+			</view>
+			<view class="flex flex-between row">
+				<view class="left">
+					联系电话
+				</view>
+				<u--input v-model="cardInfo.phone" border="none" placeholder="输入联系电话" inputAlign='right'></u--input>
+			</view>
+			<!-- 		<u-form-item label="地址" prop="userInfo.name" borderBottom>
+						<view @click="showPicker">选择地址</view>
+						<view>{{ province }}{{ city }}{{ area }}</view>
+					</u-form-item> -->
+			<view class="flex flex-between row">
+				<view class="left">
+					上传企业logo或个人头像
+				</view>
+				<view class="right">
+					<u-upload :fileList="fileList1" @afterRead="afterRead" @delete="deletePic" name="1" multiple
+						:maxCount="1"></u-upload>
+				</view>
+			</view>
+
+
+
+
 		</view>
 		</view>
 		<view class="bottom">
 		<view class="bottom">
-			<button @click="submit">提交</button>
+			<button @click='$u.debounce(submit, 500)' class='button' type="default">提交</button>
 		</view>
 		</view>
 		<city-picker ref="picker" mode="multiSelector" :list="areaData" :level="3" @confirm="finishSelectAddress">
 		<city-picker ref="picker" mode="multiSelector" :list="areaData" :level="3" @confirm="finishSelectAddress">
 		</city-picker>
 		</city-picker>
@@ -86,9 +208,35 @@
 			that = this
 			that = this
 			this.userInfo = uni.getStorageSync("userInfo")
 			this.userInfo = uni.getStorageSync("userInfo")
 			this.cardInfo.commonId = this.userInfo.id
 			this.cardInfo.commonId = this.userInfo.id
+			// this.getList()
 		},
 		},
 		data() {
 		data() {
 			return {
 			return {
+				selectIndex: 0,
+				imgList: [{
+						dictLabel: '/./../static/1.jpg',
+						dictValue: '/./../static/1.jpg'
+
+					},
+					{
+						dictLabel: '/./../static/2.jpg',
+						dictValue: '/./../static/2.jpg'
+
+					},
+					{
+						dictLabel: '/./../static/3.jpg',
+						dictValue: '/./../static/3.jpg'
+
+					}, {
+						dictLabel: '/./../static/4.jpg',
+						dictValue: '/./../static/4.jpg'
+
+					}, {
+						dictLabel: '/./../static/5.jpg',
+						dictValue: '/./../static/5.jpg'
+
+					}
+				],
 				isSubmit: false,
 				isSubmit: false,
 				content: '确定提交名片信息?',
 				content: '确定提交名片信息?',
 				userInfo: {},
 				userInfo: {},
@@ -107,6 +255,24 @@
 			};
 			};
 		},
 		},
 		methods: {
 		methods: {
+			changeTemplate(index) {
+				this.selectIndex = index
+			},
+			getList() {
+				this.$request.baseRequest('admin.dictData', 'list', {
+					dictType: "card_template"
+				}, failres => {
+					console.log('res+++++', failres.errmsg)
+					this.$refs.uToast.show({
+						type: 'error',
+						message: failres.errmsg,
+					})
+					uni.hideLoading()
+				}).then(res => {
+					console.log("img", res)
+					this.imgList = res.data.items
+				})
+			},
 			placeSelect() {
 			placeSelect() {
 				uni.chooseLocation({
 				uni.chooseLocation({
 					success: function(res) {
 					success: function(res) {
@@ -175,10 +341,10 @@
 						type: 'success',
 						type: 'success',
 						message: '提交成功!',
 						message: '提交成功!',
 					})
 					})
-					this.$request.baseRequest('admin.unimall.personalHomepageInfo', 'list',{
-						page:1,
-						limit:10,
-						commonId:uni.getStorageSync("userInfo").id
+					this.$request.baseRequest('admin.unimall.personalHomepageInfo', 'list', {
+						page: 1,
+						limit: 10,
+						commonId: uni.getStorageSync("userInfo").id
 					}, failres => {
 					}, failres => {
 						console.log('res+++++', failres.errmsg)
 						console.log('res+++++', failres.errmsg)
 						this.$refs.uToast.show({
 						this.$refs.uToast.show({
@@ -187,15 +353,15 @@
 						})
 						})
 						uni.hideLoading()
 						uni.hideLoading()
 					}).then(res => {
 					}).then(res => {
-						if(res.data.items.length>0){
+						if (res.data.items.length > 0) {
 							uni.navigateBack()
 							uni.navigateBack()
-						}else{
+						} else {
 							uni.navigateTo({
 							uni.navigateTo({
 								url: '/pages/mySet/myHome'
 								url: '/pages/mySet/myHome'
 							})
 							})
 						}
 						}
 					})
 					})
-					
+
 				})
 				})
 			},
 			},
 			submit() {
 			submit() {
@@ -207,7 +373,90 @@
 </script>
 </script>
 
 
 <style lang="scss" scoped>
 <style lang="scss" scoped>
+	.content {
+		padding: 20rpx;
+	}
+
+	.bgc0 {
+		background: url('../../static/1.jpg') no-repeat center;
+		height: 380rpx;
+		border-radius: 20rpx;
+	}
+
+	.bgc1 {
+		background: url('../../static/2.jpg') no-repeat center;
+		height: 380rpx;
+		border-radius: 20rpx;
+	}
+
+	.bgc2 {
+		background: url('../../static/3.jpg') no-repeat center;
+		height: 380rpx;
+		border-radius: 20rpx;
+	}
+
+	.bgc3 {
+		background: url('../../static/4.jpg') no-repeat center;
+		height: 380rpx;
+		border-radius: 20rpx;
+	}
+
+	.bgc4 {
+		background: url('../../static/5.jpg') no-repeat center;
+		height: 380rpx;
+		border-radius: 20rpx;
+	}
+
 	.img {
 	.img {
 		width: 100rpx;
 		width: 100rpx;
 	}
 	}
+
+	.change-template {
+		margin: 46rpx 0 30rpx 0;
+		font-size: 32rpx;
+		font-weight: bold;
+		color: #19191A;
+	}
+
+	.img-list {
+		display: block;
+		white-space: nowrap;
+		overflow-x: auto;
+
+		.dh {
+			width: 32rpx;
+			height: 32rpx;
+			position: absolute;
+			right: 8rpx;
+			bottom: 8rpx;
+		}
+
+		.img-item {
+
+			position: relative;
+			width: 186rpx;
+			height: 120rpx;
+			display: inline-block;
+			margin-right: 2 0rpx;
+			border-radius: 20rpx;
+			margin-right: 20rpx;
+		}
+
+	}
+
+	.content2 {
+		background-color: #fff;
+		border-radius: 20rpx;
+		padding:0 20rpx 0 20rpx;
+		.row{
+			padding: 20rpx;
+			border-bottom: 1px solid #E6E5E5;
+		}
+	}
+	.button{
+		color: #fff;
+		background-color: #112253;
+		border-radius: 20rpx;
+		margin: 40rpx 0;
+	}
 </style>
 </style>

二進制
xiaochengxu/static/1.jpg


二進制
xiaochengxu/static/2.jpg


二進制
xiaochengxu/static/3.jpg


二進制
xiaochengxu/static/4.jpg


二進制
xiaochengxu/static/5.jpg


二進制
xiaochengxu/static/imgs/card/dh.png


二進制
xiaochengxu/static/imgs/card/yjt.png


二進制
xiaochengxu/static/imgs/cirlce/account.png


二進制
xiaochengxu/static/imgs/cirlce/change.png


二進制
xiaochengxu/static/imgs/cirlce/home.png


二進制
xiaochengxu/static/imgs/cirlce/line.png


二進制
xiaochengxu/static/imgs/mySet/add.png


二進制
xiaochengxu/static/imgs/mySet/add1.png


二進制
xiaochengxu/static/imgs/mySet/del.png


二進制
xiaochengxu/static/imgs/mySet/del1.png


二進制
xiaochengxu/static/imgs/mySet/share1.png


二進制
xiaochengxu/static/imgs/mySet/shibie.png


二進制
xiaochengxu/static/imgs/mySet/zd.png