jiangping
2024-07-30 c0cb31a27522f2b480d7f98784eef37c2fb75f2d
Merge remote-tracking branch 'origin/master'
已修改25个文件
271 ■■■■ 文件已修改
server/service/src/main/java/com/doumee/core/utils/Constants.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/model/Users.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/MemberService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/CustomerUserServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/NewsServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/UsersServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/java/com/doumee/api/web/CustomerApi.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/app.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/product.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/product.less 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/product.wxml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/product.wxss 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/store/info.less 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/store/info.wxml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/store/info.wxss 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/index.js 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/index.less 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/index.wxml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/index.wxss 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/project.private.config.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/detailDis/product.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/detailDis/product.less 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_staff/pages/detailDis/product.wxml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/core/utils/Constants.java
@@ -339,6 +339,7 @@
    public static final String SHARES_FILE = "SHARES_FILE";
    public static final String NEWS_FILE = "NEWS_FILE";
    public static final String USER_LABEL = "USER_LABEL";
    public static final String USERS_MANAGE_CODE = "USERS_MANAGE_CODE";
    //发送会议开始  定时提前多少分钟发送
    public static final String SYSTEM ="SYSTEM";
@@ -530,7 +531,10 @@
    }
    public static String desensitizationPhone(String phone)  {
        return phone.replaceAll("(d{3})d{4}(d{4})", "$1****$2");
        if (phone == null || phone.length() != 11) {
            return phone;
        }
        return phone.substring(0, 3) + "****" + phone.substring(7);
    }
server/service/src/main/java/com/doumee/dao/business/model/Users.java
@@ -203,6 +203,9 @@
    @ApiModelProperty(value = "门店城市")
    @TableField(exist = false)
    private String shopCity;
    @ApiModelProperty(value = "是否可管理门店")
    @TableField(exist = false)
    private Boolean manageShop;
    @ApiModelProperty(value = "C端用户手机号",notes = "用于查询用户绑定的导购",hidden = true)
    @TableField(exist = false)
server/service/src/main/java/com/doumee/service/business/MemberService.java
@@ -107,6 +107,8 @@
     */
    AccountResponse wxLogin(String code,String iamId);
    AccountResponse testLogin(String openid);
    /**
     * 获取手机号
     * @param wxPhoneRequest
server/service/src/main/java/com/doumee/service/business/impl/CustomerUserServiceImpl.java
@@ -260,6 +260,7 @@
            model.setZtStatus(Constants.ONE);
            model.setZtInfo("crm同步");
            model.setIamUserId(data.getUserId());
            model.setMemberId(member==null?null:member.getId());
            model.setUserId(user== null?null:user.getId());
            model.setCreationDate(data.getCreationDate());
            addList.add(model);
server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -277,8 +277,8 @@
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"获取openid失败!请联系管理员");
            }
//            String openId = code;
            Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("OPENID", openId).isNotNull("phone"));
            Users users = new Users();
            Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("OPENID", openId).last(" limit 1  "));
            Users users =  null;
            if(StringUtils.isNotBlank(userId)){
                users = usersMapper.selectById(userId);
            }
@@ -320,6 +320,41 @@
            e.printStackTrace();
        }
        throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"微信登录异常!请联系管理员");
    }
    @Override
    public AccountResponse testLogin(String openid){
            String openId = openid;
            Member member = memberMapper.selectOne(new QueryWrapper<Member>().eq("OPENID", openId).isNotNull("phone"));
            if (member == null) {
                member = new Member();
                member.setNickname("微信用户"+ CodeVerifyUtils.createVerificationCode(4));
                member.setCreateDate(new Date());
                member.setIsdeleted(Constants.ZERO);
                member.setOpenid(openId);
                member.setType(Constants.ZERO);
                //如果绑定了导购 则直接使用已绑定导购信息 跳过手机号绑定的状态
                    member.setAuthStatus(Constants.ZERO);
                ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(member);
                if(!Objects.isNull(ztUserGetTokenResponse)){
                    member.setToken(ztUserGetTokenResponse.getToken());
                }
                memberMapper.insert(member);
            }else{
                ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(member);
                if(!Objects.isNull(ztUserGetTokenResponse)){
                    member.setToken(ztUserGetTokenResponse.getToken());
                    memberMapper.updateById(member);
                }
                member = this.getMemberInfo(member.getId());
            }
            String token = JwtTokenUtil.generateTokenForZb(member.getId(),ZTConstants.CUSTOMER, JSONObject.toJSON(member).toString(),redisTemplate);
            AccountResponse accountResponse = new AccountResponse();
            accountResponse.setToken(token);
            accountResponse.setMember(member);
            return accountResponse;
    }
    public static void saveCustomerUser(ZbomZhongTaiService zbomZhongTaiService,CustomerUserMapper customerUserMapper,Users users,Long memberId,String openId){
@@ -383,12 +418,6 @@
        Member memberDto = new Member();
        BeanUtils.copyProperties(editMemberRequest,memberDto);
        memberDto.setOpenid(member.getOpenid());
//        ZTUserGetTokenResponse ztUserGetTokenResponse = this.syncZhongTaiUser(memberDto);
//        if(Objects.isNull(ztUserGetTokenResponse)){
//            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"中台服务调起失败!");
//        }else{
//            member.setToken(ztUserGetTokenResponse.getToken());
//        }
        memberMapper.updateById(memberDto);
        return this.getMemberInfo(member.getId());
    }
@@ -455,7 +484,8 @@
        String prefix = systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.RESOURCE_PATH).getCode() +
                systemDictDataBiz.queryByCode(Constants.OBJCET_STORAGE, Constants.MEMBER).getCode();
        member.setPrefix(prefix);
        if( customerUserMapper.selectCount(new QueryWrapper<CustomerUser>().lambda().eq(CustomerUser::getIsdeleted,Constants.ZERO).eq(CustomerUser::getMemberId,member.getId()))>0){
        if( customerUserMapper.selectCount(new QueryWrapper<CustomerUser>()
                .lambda().eq(CustomerUser::getIsdeleted,Constants.ZERO).eq(CustomerUser::getMemberId,member.getId()))>0){
            member.setAuthStatus(Constants.TWO);
        }else{
            if(StringUtils.isBlank(member.getPhone())){
server/service/src/main/java/com/doumee/service/business/impl/NewsServiceImpl.java
@@ -399,7 +399,7 @@
                .eq(News::getType,Constants.ZERO)
                .eq(News::getStatus,Constants.ZERO)
                .eq(News::getFileType,Constants.ZERO)
                .apply(" now() >= t.PUBLISH_DATE ")
                .apply(" now() >= PUBLISH_DATE ")
                .last( "limit 3"  )
                .orderByDesc(News::getCreateDate)
        );
server/service/src/main/java/com/doumee/service/business/impl/ShopServiceImpl.java
@@ -914,7 +914,7 @@
        }
        IPage<Shop> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<Shop> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.select("ID,NAME,ADDRESS,PROVINCE_NAME,CITY_NAME,AREA_NAME,TOWN,AREA_NAME,LEGAL_PHONE " +
        queryWrapper.select("ID,NAME,LINK_PHONE,ADDRESS,PROVINCE_NAME,CITY_NAME,AREA_NAME,TOWN,AREA_NAME,LEGAL_PHONE " +
                " ,  (6371 * ACOS(COS(RADIANS("+pageWrap.getModel().getLatitude()+")) * COS(RADIANS(latitude)) * COS(RADIANS(longitude) - RADIANS("+pageWrap.getModel().getLongitude()+")) + SIN(RADIANS("+pageWrap.getModel().getLatitude()+")) * SIN(RADIANS(latitude)) ) ) as distance  " )
                .eq("isdeleted",Constants.ZERO)
                .isNotNull("LATITUDE")
@@ -959,7 +959,7 @@
                if(distanceM.compareTo(new BigDecimal(100))<0){
                    shop.setDistanceStr("<100米");
                }else{
                    shop.setDistanceStr(distanceM.divide(BigDecimal.valueOf(1)).setScale(2,BigDecimal.ROUND_HALF_UP) + "m");
                    shop.setDistanceStr(distanceM.divide(BigDecimal.valueOf(1)).setScale(0,BigDecimal.ROUND_HALF_UP) + "m");
                }
            }else{
                shop.setDistanceStr(shop.getDistance().divide(BigDecimal.valueOf(1)).setScale(2,BigDecimal.ROUND_HALF_UP) + "km");
@@ -1042,11 +1042,16 @@
        if(Objects.isNull(userShop)){
            return new ArrayList<>();
        }
        Boolean manageShop = true;
        if(users.getRoleCodes().indexOf(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.ZBOM_CUSTOMIZED,Constants.USERS_MANAGE_CODE).getCode()))>=0){
            users.setManageShop(false);
        }
        List<Shop> shopList = shopMapper.selectList(new QueryWrapper<Shop>()
                .lambda()
                .eq(Shop::getScode,userShop.getScode())
                .eq(Shop::getType,Constants.TWO)
                .eq(Shop::getSecondType,Constants.THREE)
                .apply(manageShop,"1=2")
        );
        //查询经营范围信息
        List<CategorySeg> categorySegAllList = categorySegMapper.selectList(new QueryWrapper<CategorySeg>().lambda()
server/service/src/main/java/com/doumee/service/business/impl/UsersServiceImpl.java
@@ -839,6 +839,12 @@
        if(StringUtils.isBlank(users.getSlogans())){
            users.setSlogans(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.ZBOM_CUSTOMIZED,Constants.USER_LABEL).getCode()));
        }
        users.setManageShop(false);
        if(StringUtils.isNotBlank(users.getRoleCodes())){
            if(users.getRoleCodes().indexOf(StringUtils.trimToNull(systemDictDataBiz.queryByCode(Constants.ZBOM_CUSTOMIZED,Constants.USERS_MANAGE_CODE).getCode()))>=0){
                users.setManageShop(true);
            }
        }
        if(Objects.nonNull(users.getDepartmentId())){
            Shop shop = shopMapper.selectById(users.getDepartmentId());
            if(Objects.nonNull(shop)){
server/web/src/main/java/com/doumee/api/web/CustomerApi.java
@@ -94,6 +94,15 @@
        return  ApiResponse.success(memberService.wxLogin(code,iamId));
    }
    @ApiOperation(value = "test客户端小程序登陆", notes = "客户端小程序")
    @GetMapping("/testWxLoginCustomer")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "openid", value = "微信code", required = true),
    })
    public ApiResponse<AccountResponse> testWxLoginCustomer(@RequestParam String openid) {
        return  ApiResponse.success(memberService.testLogin(openid));
    }
    @LoginRequired
    @ApiOperation(value = "获取手机号", notes = "客户端小程序")
@@ -223,7 +232,16 @@
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
    })
    public ApiResponse<PageData<Shop>> shopPage (@RequestBody PageWrap<Shop> pageWrap) {
        return ApiResponse.success(shopService.queryShopByLL(pageWrap));
        PageData<Shop> pageData = shopService.queryShopByLL(pageWrap);
        if(Objects.nonNull(pageWrap.getModel().getLatitude())&&Objects.nonNull(pageWrap.getModel().getLongitude())){
            //更新人员经纬度信息
            EditMemberRequest editMemberRequest = new EditMemberRequest();
            editMemberRequest.setId(getMemberId());
            editMemberRequest.setLatitude(pageWrap.getModel().getLatitude());
            editMemberRequest.setLongitude(pageWrap.getModel().getLongitude());
            memberService.updMemberDetail(editMemberRequest);
        }
        return ApiResponse.success(pageData);
    }
wechat_jiaxuan/app.json
@@ -79,6 +79,9 @@
  "permission": {
    "scope.userLocation": {
      "desc": "你的位置信息将用于小程序位置接口的效果展示"
    },
    "scope.userInfo": {
      "desc": "你的微信呢称将用于小程序呢称的效果展示"
    }
  },
  "componentFramework": "glass-easel",
wechat_jiaxuan/pages/detailDis/product.js
@@ -11,10 +11,14 @@
    current: 0,
    id: '',
    origin: '',
    isFold: false,
    info: {},
    member: {},
    showShare: false
  },
  changeFold() {
    this.setData({ isFold: !this.data.isFold })
  },
  onLoadLogin(options) {
    this.getDetail(options.id, options.userId || '')
    actionDo({
wechat_jiaxuan/pages/detailDis/product.less
@@ -212,7 +212,16 @@
.detail {
  padding: 52rpx 40rpx 40rpx;
  background-color: #fff;
  .fold{
    display: flex;
    justify-content: center;
    align-items: center;
    height: 84rpx;
    margin-top: 20rpx;
    .icon{
      margin-left: 12rpx;
    }
  }
  .title {
    font-weight: 600;
    font-size: 36rpx;
@@ -221,7 +230,8 @@
  .line {
    display: flex;
    margin-bottom: 20rpx;
    padding: 24rpx 0 26rpx;
    border-bottom: 1rpx dashed #E5E5E5;
    .label {
      width: 120rpx;
      font-size: 24rpx;
wechat_jiaxuan/pages/detailDis/product.wxml
@@ -31,9 +31,15 @@
  </view>
  <view class="detail">
    <view class="title">产品详情</view>
    <view class="line" wx:for="{{ info.productParamList }}">
      <view class="label">{{ item.paramName }}:</view>
      <view class="val">{{ item.paramValue }}</view>
    <block wx:for="{{ info.productParamList }}">
      <view wx:if="{{ index < 5 || isFold }}" class="line" >
        <view class="label">{{ item.paramName }}:</view>
        <view class="val">{{ item.paramValue }}</view>
      </view>
    </block>
    <view wx:if="{{ info.productParamList.length > 5 }}" class="fold" bindtap="changeFold">
      <text>{{ isFold ? '收起' : '展开' }}</text>
      <van-icon class="icon" name="{{ isFold ? 'arrow-up' : 'arrow-down' }}" />
    </view>
  </view>
  <!-- 富文本 -->
wechat_jiaxuan/pages/detailDis/product.wxss
@@ -191,6 +191,16 @@
  padding: 52rpx 40rpx 40rpx;
  background-color: #fff;
}
.detail .fold {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 84rpx;
  margin-top: 20rpx;
}
.detail .fold .icon {
  margin-left: 12rpx;
}
.detail .title {
  font-weight: 600;
  font-size: 36rpx;
@@ -198,7 +208,8 @@
}
.detail .line {
  display: flex;
  margin-bottom: 20rpx;
  padding: 24rpx 0 26rpx;
  border-bottom: 1rpx dashed #E5E5E5;
}
.detail .line .label {
  width: 120rpx;
wechat_jiaxuan/pages/store/info.less
@@ -103,6 +103,9 @@
    }
  }
}
.empty_wrap{
  padding-top: 100rpx;
}
.container{
  overflow: hidden;
  height: 100%;
wechat_jiaxuan/pages/store/info.wxml
@@ -12,7 +12,7 @@
    </view>
    <view class="main_content">
      <view class="title">门店导购</view>
      <scroll-view    scroll-y class="list">
      <scroll-view scroll-y class="list">
        <view class="item" wx:for="{{ info.usersList }}">
          <image data-id="{{ item.iamId }}" bindtap="handleDetail" src="{{ item.imgurlFull ? item.imgurlFull : '../../static/images/default_avatar.png' }}" class="avatar"></image>
          <view data-id="{{ item.iamId }}" bindtap="handleDetail" class="content">
@@ -21,6 +21,9 @@
          </view>
          <view data-phone="{{ item.phone }}" bindtap="callPhone" class="btn">联系TA</view>
        </view>
        <view wx:if="{{ info.usersList.length == 0 }}" class="empty_wrap">
          <image class="default_empty" src="../../static/images/default_empty.png"></image>
        </view>
      </scroll-view>
    </view>
  </view>
wechat_jiaxuan/pages/store/info.wxss
@@ -95,6 +95,9 @@
  color: var(--themeColor);
  border: 1rpx solid var(--themeColor);
}
.empty_wrap {
  padding-top: 100rpx;
}
.container {
  overflow: hidden;
  height: 100%;
wechat_jiaxuan/pages/userinfo/index.js
@@ -2,7 +2,8 @@
  uploadUrl,
  editMember,
  getMemberInfo,
  getArea
  getArea,
  getWxMiniPhone
} from '../../api/index'
Page({
@@ -33,7 +34,19 @@
      val5: '',
    }
  },
  onShow() {
  onLoad() {
    wx.getUserInfo({
      success: function(res) {
        console.log('res', res);
        var userInfo = res.userInfo
        var nickName = userInfo.nickName
        var avatarUrl = userInfo.avatarUrl
        var gender = userInfo.gender //性别 0:未知、1:男、2:女
        var province = userInfo.province
        var city = userInfo.city
        var country = userInfo.country
      }
    })
    this.initData()
  },
  onSubmit() {
@@ -72,6 +85,9 @@
        title: '保存成功',
        icon: 'none'
      })
      setTimeout(() => {
        wx.navigateBack()
      }, 500)
    })
  },
  initData() {
@@ -154,6 +170,18 @@
      })
    }
  },
  getPhoneNumber (e) {
    const data = { ...e.detail }
    getWxMiniPhone({
      encryptedData: data.encryptedData,
      iv: data.iv,
      sessionKey: wx.getStorageSync('sessionKey') || data.iv,
    }).then(res => {
      this.setData({
        phone: res.data
      })
    })
  },
  getNickName(e) {
    this.setData({ nikname: e.detail.value })
  },
@@ -162,11 +190,13 @@
    wx.chooseLocation({
      type: 'wgs84',
      success: (res) => {
        console.log('res', res);
        this.setData({
          longitude: res.longitude,
          latitude: res.latitude,
          address: res.address,
        })
        console.log('address', this.data.address);
      }
    })
  },
wechat_jiaxuan/pages/userinfo/index.less
@@ -40,7 +40,20 @@
      font-size: 30rpx;
      color: #777777;
    }
    .wechat_phone{
      width: 100%;
      flex: 1;
      color: #111111;
      border-bottom: 1rpx solid #e5e5e5;
      display: flex;
      justify-content: space-between;
      .btn{
        font-size: 30rpx;
        color: #B08771;
      }
    }
    .input{
      width: 100%;
      flex: 1;
      color: #111111;
      border-bottom: 1rpx solid #e5e5e5;
wechat_jiaxuan/pages/userinfo/index.wxml
@@ -14,7 +14,10 @@
    </view>
    <view class="line">
      <view class="label">电话</view>
      <van-field type="number" border="{{ false }}" class="input" model:value="{{ phone }}" maxlength="{{ 11 }}" clearable />
      <view class="wechat_phone">
        <van-field type="number" border="{{ false }}" model:value="{{ phone }}" maxlength="{{ 11 }}" clearable />
        <button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber" class="btn">微信授权</button>
      </view>
    </view>
    <view class="line">
      <view class="label">城市</view>
@@ -45,7 +48,7 @@
    </view>
    <view class="line">
      <view class="label">面积</view>
      <van-field type="number" border="{{ false }}" class="input" model:value="{{ housearea }}" maxlength="{{ 30 }}" clearable />
      <van-field custom-style="width: 100%" type="digit" border="{{ false }}" class="input" model:value="{{ housearea }}" maxlength="{{ 30 }}" clearable />
      <text>m²</text>
    </view>
    <view class="line">
@@ -69,23 +72,23 @@
      <view class="label">房屋户型</view>
      <view class="val">
        <view class="item">
          <van-field data-str="val1" bind:blur="houseBlur" type="number" class="input" maxlength="{{ 3 }}" />
          <van-field value="{{ houseType.val1 }}" data-str="val1" bind:blur="houseBlur" type="number" class="input" maxlength="{{ 3 }}" />
          <view class="unit">室</view>
        </view>
        <view class="item">
          <van-field data-str="val2" bind:blur="houseBlur" type="number" class="input" maxlength="{{ 3 }}" />
          <van-field value="{{ houseType.val2 }}" data-str="val2" bind:blur="houseBlur" type="number" class="input" maxlength="{{ 3 }}" />
          <view class="unit">厅</view>
        </view>
        <view class="item">
          <van-field data-str="val3" bind:blur="houseBlur" type="number" class="input" maxlength="{{ 3 }}" />
          <van-field value="{{ houseType.val3 }}" data-str="val3" bind:blur="houseBlur" type="number" class="input" maxlength="{{ 3 }}" />
          <view class="unit">厨</view>
        </view>
        <view class="item">
          <van-field data-str="val4" bind:blur="houseBlur" type="number" class="input" maxlength="{{ 3 }}" />
          <van-field value="{{ houseType.val4 }}" data-str="val4" bind:blur="houseBlur" type="number" class="input" maxlength="{{ 3 }}" />
          <view class="unit">卫</view>
        </view>
        <view class="item">
          <van-field data-str="val5" bind:blur="houseBlur" type="number" class="input" maxlength="{{ 3 }}" />
          <van-field value="{{ houseType.val5 }}" data-str="val5" bind:blur="houseBlur" type="number" class="input" maxlength="{{ 3 }}" />
          <view class="unit">阳</view>
        </view>
      </view>
wechat_jiaxuan/pages/userinfo/index.wxss
@@ -42,7 +42,20 @@
  font-size: 30rpx;
  color: #777777;
}
.list .line .wechat_phone {
  width: 100%;
  flex: 1;
  color: #111111;
  border-bottom: 1rpx solid #e5e5e5;
  display: flex;
  justify-content: space-between;
}
.list .line .wechat_phone .btn {
  font-size: 30rpx;
  color: #B08771;
}
.list .line .input {
  width: 100%;
  flex: 1;
  color: #111111;
  border-bottom: 1rpx solid #e5e5e5;
wechat_jiaxuan/project.private.config.json
@@ -60,8 +60,8 @@
        },
        {
          "name": "",
          "pathName": "pages/consult/detail",
          "query": "id=1813577799402684418",
          "pathName": "pages/userinfo/index",
          "query": "",
          "launchMode": "default",
          "scene": null
        }
wechat_staff/pages/detailDis/product.js
@@ -16,6 +16,7 @@
    info: {},
    member: {},
    showShare: false,
    isFold: false,
    enjoyList: []
  },
  onShow(){
@@ -167,6 +168,9 @@
    //   this.setData({showShare: false})
    // })
  },
  changeFold() {
    this.setData({ isFold: !this.data.isFold })
  },
  // onShareAppMessage: function () {
  //   // let { productDetail, userInfo } = this.data
  //   return {
wechat_staff/pages/detailDis/product.less
@@ -194,7 +194,16 @@
.detail {
  padding: 52rpx 40rpx 40rpx;
  background-color: #fff;
  .fold{
    display: flex;
    justify-content: center;
    align-items: center;
    height: 84rpx;
    margin-top: 20rpx;
    .icon{
      margin-left: 12rpx;
    }
  }
  .title {
    font-weight: 600;
    font-size: 36rpx;
@@ -203,9 +212,10 @@
  .line {
    display: flex;
    margin-bottom: 20rpx;
    padding: 24rpx 0 26rpx;
    border-bottom: 1rpx dashed #E5E5E5;
    .label {
      width: auto;
      width: 120rpx;
      font-size: 24rpx;
      color: #666666;
      flex-shrink: 0;
wechat_staff/pages/detailDis/product.wxml
@@ -28,11 +28,17 @@
      </view>
    </view>
  </view>
  <view class="detail">
    <view class="title" bind:tap="goTestPage">产品详情</view>
    <view class="line" wx:for="{{ info.productParamList }}">
      <view class="label">{{ item.paramName }}:</view>
      <view class="val">{{ item.paramValue }}</view>
   <view class="detail">
    <view class="title">产品详情</view>
    <block wx:for="{{ info.productParamList }}">
      <view wx:if="{{ index < 5 || isFold }}" class="line" >
        <view class="label">{{ item.paramName }}:</view>
        <view class="val">{{ item.paramValue }}</view>
      </view>
    </block>
    <view wx:if="{{ info.productParamList.length > 5 }}" class="fold" bindtap="changeFold">
      <text>{{ isFold ? '收起' : '展开' }}</text>
      <van-icon class="icon" name="{{ isFold ? 'arrow-up' : 'arrow-down' }}" />
    </view>
  </view>
  <!-- 富文本 -->