jiangping
2024-07-12 5776f4f5be2d5aa37a1e928ba95567dfc2e97d5c
Merge remote-tracking branch 'origin/master'
已添加60个文件
已修改18个文件
4262 ■■■■■ 文件已修改
server/service/src/main/java/com/doumee/dao/business/model/Customer.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/model/CustomerLog.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/web/reqeust/FreeCustomizationDTO.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/web/reqeust/RenovationCalculatorDTO.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/web/reqeust/TestTrimStyleDTO.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/CustomerService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/service/business/impl/CustomerServiceImpl.java 202 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/java/com/doumee/api/web/CustomerApi.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/app.json 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/disCase/index.js 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/disCase/index.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/disCase/index.less 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/disCase/index.wxml 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/disCase/index.wxss 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/disProduct/index.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/disProduct/index.less 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/disProduct/index.wxml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/disProduct/index.wxss 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/disRealpic/index.js 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/disRealpic/index.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/disRealpic/index.less 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/disRealpic/index.wxml 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/components/disRealpic/index.wxss 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/consult/detail.less 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/consult/detail.wxml 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/consult/detail.wxss 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/case.js 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/case.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/case.less 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/case.wxml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/case.wxss 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/product.js 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/product.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/product.less 200 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/product.wxml 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/product.wxss 174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/realpic.js 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/realpic.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/realpic.less 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/realpic.wxml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/detailDis/realpic.wxss 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/discover/discover.json 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/discover/discover.wxml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/mine/mine.js 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/mine/mine.less 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/mine/mine.wxml 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/mine/mine.wxss 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/sets/index.js 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/sets/index.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/sets/index.less 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/sets/index.wxml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/sets/index.wxss 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/sets/protocol.js 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/sets/protocol.json 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/sets/protocol.wxml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/sets/protocol.wxss 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/collect.js 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/collect.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/collect.less 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/collect.wxml 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/collect.wxss 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/favorite.js 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/favorite.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/favorite.less 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/favorite.wxml 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/favorite.wxss 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/index.js 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/index.json 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/index.less 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/index.wxml 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/index.wxss 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/mysub.js 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/mysub.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/mysub.less 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/mysub.wxml 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/pages/userinfo/mysub.wxss 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/project.private.config.json 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
wechat_jiaxuan/static/icon/mine_ic_ar.png 补丁 | 查看 | 原始文档 | blame | 历史
server/service/src/main/java/com/doumee/dao/business/model/Customer.java
@@ -94,6 +94,9 @@
    @ExcelColumn(name="区域")
    private String areaName;
    @ApiModelProperty(value = "区域编码")
    @ExcelColumn(name="区域编码")
    private String areaCode;
    @ApiModelProperty(value = "系统版本")
    @ExcelColumn(name="系统版本")
    private String sysVersion;
@@ -118,8 +121,5 @@
    @ExcelColumn(name="省份编码")
    private String provinceCode;
    @ApiModelProperty(value = "区域编码")
    @ExcelColumn(name="区域编码")
    private String areaCode;
}
server/service/src/main/java/com/doumee/dao/business/model/CustomerLog.java
@@ -138,4 +138,16 @@
    @ExcelColumn(name="crm提交备注")
    private String crmInfo;
    @ApiModelProperty(value = "区域")
    @ExcelColumn(name="区域")
    private String areaName;
    @ApiModelProperty(value = "区域编码")
    @ExcelColumn(name="区域编码")
    private String areaCode;
    @ApiModelProperty(value = "姓名")
    @ExcelColumn(name="姓名")
    private String name;
}
server/service/src/main/java/com/doumee/dao/web/reqeust/FreeCustomizationDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
package com.doumee.dao.web.reqeust;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/7/11 17:19
 */
@Data
@ApiModel("0元定制报名请求类")
public class FreeCustomizationDTO {
    @ApiModelProperty(value = "用户主键", hidden = true)
    private long memberId;
    @ApiModelProperty(value = "用户姓名")
    private String name;
    @ApiModelProperty(value = "手机号")
    private String phone;
    @ApiModelProperty(value = "省份")
    private String provinceName;
    @ApiModelProperty(value = "城市")
    private String cityName;
    @ApiModelProperty(value = "区域")
    private String areaName;
    @ApiModelProperty(value = "城市编码")
    private String cityCode;
    @ApiModelProperty(value = "省份编码")
    private String provinceCode;
    @ApiModelProperty(value = "区域编码")
    private String areaCode;
}
server/service/src/main/java/com/doumee/dao/web/reqeust/RenovationCalculatorDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package com.doumee.dao.web.reqeust;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/7/11 17:19
 */
@Data
@ApiModel("装修计算请求类")
public class RenovationCalculatorDTO {
    @ApiModelProperty(value = "用户主键", hidden = true)
    private long memberId;
    @ApiModelProperty(value = "房屋类型:0精装 1毛坯")
    private String houseStatus;
    @ApiModelProperty(value = "户型信息:0一室一厅 1两室一厅 2两室两厅 3三室两厅 4四室两厅 5五室两厅及以上")
    private String houseType;
    @ApiModelProperty(value = "房屋面积")
    private String area;
    @ApiModelProperty(value = "装修预算(万元)")
    private BigDecimal budget;
}
server/service/src/main/java/com/doumee/dao/web/reqeust/TestTrimStyleDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
package com.doumee.dao.web.reqeust;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/7/11 17:19
 */
@Data
@ApiModel("测试装修风格请求类")
public class TestTrimStyleDTO {
    @ApiModelProperty(value = "用户主键", hidden = true)
    private long memberId;
    @ApiModelProperty(value = "房子户型:0一居 1两居 2三居 3四居及以上")
    private String houseType;
    @ApiModelProperty(value = "手机号")
    private String phone;
    @ApiModelProperty(value = "性别 0男 1女")
    private Integer sex;
    @ApiModelProperty(value = "年龄段 0-70后 1-80后 2-90后 3-00后")
    private String ageInfo;
    @ApiModelProperty(value = "风格(风格测试用) 0-5")
    private String styleInfo;
    @ApiModelProperty(value = "省份")
    private String provinceName;
    @ApiModelProperty(value = "城市")
    private String cityName;
    @ApiModelProperty(value = "城市编码")
    private String cityCode;
    @ApiModelProperty(value = "省份编码")
    private String provinceCode;
}
server/service/src/main/java/com/doumee/service/business/CustomerService.java
@@ -3,6 +3,10 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.Customer;
import com.doumee.dao.web.reqeust.FreeCustomizationDTO;
import com.doumee.dao.web.reqeust.RenovationCalculatorDTO;
import com.doumee.dao.web.reqeust.TestTrimStyleDTO;
import java.util.List;
/**
@@ -94,4 +98,22 @@
     * @return long
     */
    long count(Customer customer);
    /**
     * æˆ¿å±‹è£…修计算器信息存储
     * @param renovationCalculatorDTO
     */
    void saveRenovationCalculator(RenovationCalculatorDTO renovationCalculatorDTO);
    /**
     * 0元定制信息
     * @param freeCustomizationDTO
     */
    void saveFreeCustomizationApply(FreeCustomizationDTO freeCustomizationDTO);
    /**
     * æµ‹è¯•装修风格
     * @param testTrimStyleDTO
     */
    void saveTestTrimStyle(TestTrimStyleDTO testTrimStyleDTO);
}
server/service/src/main/java/com/doumee/service/business/impl/CustomerServiceImpl.java
@@ -1,20 +1,38 @@
package com.doumee.service.business.impl;
import com.alibaba.druid.sql.visitor.functions.Concat;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.CustomerLogMapper;
import com.doumee.dao.business.CustomerMapper;
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.model.Customer;
import com.doumee.dao.business.model.CustomerLog;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.web.reqeust.FreeCustomizationDTO;
import com.doumee.dao.web.reqeust.RenovationCalculatorDTO;
import com.doumee.dao.web.reqeust.TestTrimStyleDTO;
import com.doumee.service.business.CustomerLogService;
import com.doumee.service.business.CustomerService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.checkerframework.checker.units.qual.A;
import org.checkerframework.checker.units.qual.C;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * å®¢æˆ·ä¿¡æ¯è¡¨Service实现
@@ -26,6 +44,13 @@
    @Autowired
    private CustomerMapper customerMapper;
    @Autowired
    private CustomerLogMapper customerLogMapper;
    @Autowired
    private MemberMapper memberMapper;
    @Override
    public Long create(Customer customer) {
@@ -185,13 +210,186 @@
    public void saveRenovationCalculator(){
    @Override
    public void saveRenovationCalculator(RenovationCalculatorDTO renovationCalculatorDTO){
        if(Objects.isNull(renovationCalculatorDTO)
            || Objects.isNull(renovationCalculatorDTO.getMemberId())
            || Objects.isNull(renovationCalculatorDTO.getHouseStatus())
            || Objects.isNull(renovationCalculatorDTO.getHouseType())
            || Objects.isNull(renovationCalculatorDTO.getBudget())
            || StringUtils.isEmpty(renovationCalculatorDTO.getArea())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        Member member = memberMapper.selectById(renovationCalculatorDTO.getMemberId());
        if(Objects.isNull(member)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到用户信息");
        }
        if(StringUtils.isEmpty(member.getPhone())){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未授权手机号");
        }
        Customer customer = customerMapper.selectOne(new QueryWrapper<Customer>().lambda().eq(Customer::getPhone,member.getPhone()).eq(Customer::getIsdeleted, Constants.ZERO).last("limit 1"));
        if(Objects.isNull(customer)){
            customer = new Customer();
            customer.setIsdeleted(Constants.ZERO);
            customer.setPhone(member.getPhone());
            customer.setCreateDate(new Date());
        } else{
            customer.setEditDate(new Date());
        }
        customer.setOpenid(member.getOpenid());
        customer.setMemberId(member.getId());
        customerMapper.insertOrUpdate(customer);
        //存储 customerLog æ•°æ®
        CustomerLog customerLog = new CustomerLog();
        customerLog.setCreateDate(new Date());
        customerLog.setIsdeleted(Constants.ZERO);
        customerLog.setType(Constants.TWO);
        customerLog.setCrmStatus(Constants.ZERO);
        customerLog.setPhone(customer.getPhone());
        customerLog.setBudget(renovationCalculatorDTO.getBudget().multiply(new BigDecimal(10000)).toString());
        customerLog.setHouseStatus(renovationCalculatorDTO.getHouseStatus());
        customerLog.setArea(renovationCalculatorDTO.getArea());
        customerLog.setHouseType(renovationCalculatorDTO.getHouseType());
        customerLog.setCostomerId(customer.getId().toString());
        customerLogMapper.insert(customerLog);
    }
    @Override
    public void saveFreeCustomizationApply(FreeCustomizationDTO freeCustomizationDTO){
        if(Objects.isNull(freeCustomizationDTO)
                || Objects.isNull(freeCustomizationDTO.getMemberId())
                || StringUtils.isEmpty(freeCustomizationDTO.getName())
                || StringUtils.isEmpty(freeCustomizationDTO.getPhone())
                || StringUtils.isEmpty(freeCustomizationDTO.getCityCode())
                || StringUtils.isEmpty(freeCustomizationDTO.getCityName())
                || StringUtils.isEmpty(freeCustomizationDTO.getProvinceName())
                || StringUtils.isEmpty(freeCustomizationDTO.getProvinceCode())
                || StringUtils.isEmpty(freeCustomizationDTO.getAreaCode())
                || StringUtils.isEmpty(freeCustomizationDTO.getAreaName())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        Member member = memberMapper.selectById(freeCustomizationDTO.getMemberId());
        if(Objects.isNull(member)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到用户信息");
        }
        if(StringUtils.isEmpty(member.getPhone())){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未授权手机号");
        }
        Customer customer = customerMapper.selectOne(new QueryWrapper<Customer>().lambda()
                .eq(Customer::getPhone,freeCustomizationDTO.getPhone()).eq(Customer::getIsdeleted, Constants.ZERO).last("limit 1"));
        if(Objects.isNull(customer)){
            customer = new Customer();
            customer.setPhone(freeCustomizationDTO.getPhone());
            customer.setCreateDate(new Date());
            customer.setIsdeleted(Constants.ZERO);
        } else{
            customer.setEditDate(new Date());
        }
        customer.setOpenid(member.getOpenid());
        customer.setMemberId(member.getId());
        customer.setName(freeCustomizationDTO.getName());
        customer.setProName(freeCustomizationDTO.getProvinceName());
        customer.setCityName(freeCustomizationDTO.getCityName());
        customer.setAreaName(freeCustomizationDTO.getAreaName());
        customer.setProvinceCode(freeCustomizationDTO.getProvinceCode());
        customer.setCityCode(freeCustomizationDTO.getCityCode());
        customer.setAreaCode(freeCustomizationDTO.getAreaCode());
        customerMapper.insertOrUpdate(customer);
        //存储 customerLog æ•°æ®
        CustomerLog customerLog = new CustomerLog();
        customerLog.setCreateDate(new Date());
        customerLog.setIsdeleted(Constants.ZERO);
        customerLog.setType(Constants.ONE);
        customerLog.setCrmStatus(Constants.ZERO);
        customerLog.setPhone(customer.getPhone());
        customerLog.setCostomerId(customer.getId().toString());
        customerLog.setProvinceName(freeCustomizationDTO.getProvinceName());
        customerLog.setCityName(freeCustomizationDTO.getCityName());
        customerLog.setAreaCode(freeCustomizationDTO.getAreaName());
        customerLog.setProvicneCode(freeCustomizationDTO.getProvinceCode());
        customerLog.setCityCode(freeCustomizationDTO.getCityCode());
        customerLog.setAreaCode(freeCustomizationDTO.getAreaCode());
        customerLog.setName(freeCustomizationDTO.getName());
        customerLog.setPhone(freeCustomizationDTO.getPhone());
        customerLogMapper.insert(customerLog);
    }
    @Override
    public void saveTestTrimStyle(TestTrimStyleDTO testTrimStyleDTO){
        if(Objects.isNull(testTrimStyleDTO)
                || Objects.isNull(testTrimStyleDTO.getMemberId())
                || StringUtils.isEmpty(testTrimStyleDTO.getStyleInfo())
                || StringUtils.isEmpty(testTrimStyleDTO.getAgeInfo())
                || Objects.isNull(testTrimStyleDTO.getSex())
                || StringUtils.isEmpty(testTrimStyleDTO.getHouseType())
                || StringUtils.isEmpty(testTrimStyleDTO.getAgeInfo())
                || StringUtils.isEmpty(testTrimStyleDTO.getPhone())
                || StringUtils.isEmpty(testTrimStyleDTO.getCityCode())
                || StringUtils.isEmpty(testTrimStyleDTO.getCityName())
                || StringUtils.isEmpty(testTrimStyleDTO.getProvinceName())
                || StringUtils.isEmpty(testTrimStyleDTO.getProvinceCode())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        Member member = memberMapper.selectById(testTrimStyleDTO.getMemberId());
        if(Objects.isNull(member)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到用户信息");
        }
        if(StringUtils.isEmpty(member.getPhone())){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未授权手机号");
        }
        Customer customer = customerMapper.selectOne(new QueryWrapper<Customer>().lambda()
                .eq(Customer::getPhone,testTrimStyleDTO.getPhone()).eq(Customer::getIsdeleted, Constants.ZERO).last("limit 1"));
        if(Objects.isNull(customer)){
            customer = new Customer();
            customer.setPhone(testTrimStyleDTO.getPhone());
            customer.setCreateDate(new Date());
            customer.setIsdeleted(Constants.ZERO);
        } else{
            customer.setEditDate(new Date());
        }
        customer.setOpenid(member.getOpenid());
        customer.setMemberId(member.getId());
        customer.setProName(testTrimStyleDTO.getProvinceName());
        customer.setCityName(testTrimStyleDTO.getCityName());
        customer.setProvinceCode(testTrimStyleDTO.getProvinceCode());
        customer.setCityCode(testTrimStyleDTO.getCityCode());
        customerMapper.insertOrUpdate(customer);
        //存储 customerLog æ•°æ®
        CustomerLog customerLog = new CustomerLog();
        customerLog.setCreateDate(new Date());
        customerLog.setIsdeleted(Constants.ZERO);
        customerLog.setType(Constants.ZERO);
        customerLog.setCrmStatus(Constants.ZERO);
        customerLog.setPhone(customer.getPhone());
        customerLog.setCostomerId(customer.getId().toString());
        customerLog.setProvinceName(testTrimStyleDTO.getProvinceName());
        customerLog.setCityName(testTrimStyleDTO.getCityName());
        customerLog.setProvicneCode(testTrimStyleDTO.getProvinceCode());
        customerLog.setCityCode(testTrimStyleDTO.getCityCode());
        customerLog.setAgeInfo(testTrimStyleDTO.getAgeInfo());
        customerLog.setHouseType(testTrimStyleDTO.getHouseType());
        customerLog.setStyleInfo(testTrimStyleDTO.getStyleInfo());
        customerLog.setSex(testTrimStyleDTO.getSex());
        customerLog.setAgeInfo(testTrimStyleDTO.getAgeInfo());
        customerLog.setPhone(testTrimStyleDTO.getPhone());
        customerLogMapper.insert(customerLog);
    }
server/web/src/main/java/com/doumee/api/web/CustomerApi.java
@@ -4,8 +4,7 @@
import com.doumee.core.annotation.trace.Trace;
import com.doumee.core.model.ApiResponse;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.web.reqeust.EditMemberRequest;
import com.doumee.dao.web.reqeust.WxPhoneRequest;
import com.doumee.dao.web.reqeust.*;
import com.doumee.dao.web.response.AccountResponse;
import com.doumee.dao.web.response.BjParamConfigResponse;
import com.doumee.service.business.BjParamService;
@@ -94,8 +93,42 @@
    }
    @LoginRequired
    @ApiOperation(value = "装修计算器信息存储", notes = "客户端小程序")
    @PostMapping("/saveRenovationCalculator")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true)
    })
    public ApiResponse saveRenovationCalculator(@RequestBody RenovationCalculatorDTO renovationCalculatorDTO) {
        renovationCalculatorDTO.setMemberId(getMemberId());
        customerService.saveRenovationCalculator(renovationCalculatorDTO);
        return  ApiResponse.success("操作成功");
    }
    @LoginRequired
    @ApiOperation(value = "0元定制信息", notes = "客户端小程序")
    @PostMapping("/saveFreeCustomizationApply")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true)
    })
    public ApiResponse saveFreeCustomizationApply(@RequestBody FreeCustomizationDTO freeCustomizationDTO) {
        freeCustomizationDTO.setMemberId(getMemberId());
        customerService.saveFreeCustomizationApply(freeCustomizationDTO);
        return  ApiResponse.success("操作成功");
    }
    @LoginRequired
    @ApiOperation(value = "测试装修风格", notes = "客户端小程序")
    @PostMapping("/saveTestTrimStyle")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true)
    })
    public ApiResponse saveTestTrimStyle(@RequestBody TestTrimStyleDTO testTrimStyleDTO) {
        testTrimStyleDTO.setMemberId(getMemberId());
        customerService.saveTestTrimStyle(testTrimStyleDTO);
        return  ApiResponse.success("操作成功");
    }
}
wechat_jiaxuan/app.json
@@ -12,21 +12,22 @@
    "pages/store/staff",
    "pages/store/staffList",
    "pages/calculator/index",
    "pages/webView/index"
    "pages/webView/index",
    "pages/detailDis/product",
    "pages/detailDis/case",
    "pages/detailDis/realpic",
    "pages/userinfo/index",
    "pages/userinfo/mysub",
    "pages/userinfo/collect",
    "pages/userinfo/favorite",
    "pages/sets/index",
    "pages/sets/protocol"
  ],
  "window": {
    "navigationBarTitleText": "志邦家选",
    "navigationBarTextStyle": "black",
    "navigationBarBackgroundColor": "#fff"
  },
  "renderer": "skyline",
  "rendererOptions": {
    "skyline": {
      "defaultDisplayBlock": true,
      "disableABTest": true,
      "sdkVersionBegin": "3.0.0",
      "sdkVersionEnd": "15.255.255"
    }
    "navigationBarBackgroundColor": "#fff",
    "navigationStyle": "default"
  },
  "tabBar": {
    "color": "#999",
@@ -65,6 +66,10 @@
    "van-empty": "@vant/weapp/empty/index",
    "navBar": "./components/navBar/navBar"
  },
  "requiredPrivateInfos": [
    "getLocation",
    "chooseLocation"
  ],
  "permission": {
    "scope.userLocation": {
      "desc": "你的位置信息将用于小程序位置接口的效果展示"
wechat_jiaxuan/components/disCase/index.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
// components/disCase/index.js
Component({
  /**
   * ç»„件的属性列表
   */
  properties: {
  },
  data: {
    showParams: false,
    activeStatus: '0'
  },
  methods: {
    handleDetail(e) {
      wx.navigateTo({
        url: '/pages/detailDis/case',
      })
    },
    changeShowParams(){
      const showParams = !this.data.showParams
      this.setData({showParams})
      // this.setData({showTwo: false})
    },
    changeTwo(){
      const showTwo = !this.data.showTwo
      this.setData({showTwo})
      this.setData({showOne: false})
    },
    statusChange(e) {
      const activeStatus = e.currentTarget.dataset.status
      this.setData({activeStatus})
    }
  }
})
wechat_jiaxuan/components/disCase/index.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,4 @@
{
  "component": true,
  "usingComponents": {}
}
wechat_jiaxuan/components/disCase/index.less
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,163 @@
.search_wrap {
  width: 670rpx;
  height: 72rpx;
  margin: 24rpx auto;
  background: #F7F7F7;
  border-radius: 8rpx;
  padding: 0 40rpx;
  display: flex;
  align-items: center;
  background-color: #F7F7F7;
  image {
    width: 28rpx;
    margin-right: 16rpx;
  }
}
.app {
  height: 100%;
  width: 100%;
}
.main_content {
  height: calc(100% - 120rpx);
  .query_wrap {
    display: flex;
    padding: 0 16rpx;
    .item {
      height: 88rpx;
      display: flex;
      align-items: center;
      justify-content: center;
      color: #666666;
      flex: 1;
      .name {
        margin-right: 6rpx;
      }
    }
  }
  .query_param {
    position: absolute;
    z-index: 99;
    background-color: #fff;
    width: 100%;
    .list {
      width: 100%;
      display: flex;
      flex-wrap: wrap;
      padding: 30rpx 40rpx;
      .item {
        width: 202rpx;
        height: 72rpx;
        text-align: center;
        line-height: 70rpx;
        background: #F7F7F7;
        border-radius: 8rpx;
        font-size: 26rpx;
        color: #333333;
        white-space: nowrap;
        overflow: hidden; //文本超出隐藏
        text-overflow: ellipsis;
        margin-right: 24rpx;
        margin-bottom: 24rpx;
        &:nth-of-type(3n) {
          margin-right: 0;
        }
      }
      .active {
        color: var(--themeColor);
        background: rgba(176, 135, 113, 0.08);
      }
    }
    .btns {
      display: flex;
      .btn {
        flex: 1;
        height: 88rpx;
        background: #E5E5E5;
        color: #666666;
        display: flex;
        justify-content: center;
        align-items: center;
      }
      .sub {
        background: var(--themeColor);
        color: #fff;
      }
    }
  }
  .status {
    display: flex;
    padding: 0rpx 40rpx;
    margin: 20rpx 0;
    align-items: center;
    .active {
      color: var(--themeColor);
    }
    .separate {
      margin: 0 12rpx;
      width: 1rpx;
      height: 28rpx;
      background-color: #333333;
    }
  }
  .goods_list{
    padding: 12rpx 40rpx;
    .item{
      width: 100%;
      margin-bottom: 32rpx;
      .img_wrap{
        width: 100%;
        height: 376rpx;
        border-radius: 8rpx;
        overflow: hidden;
        position: relative;
        .img{
          width: 100%;
          height: 100%;
        }
        .new{
          width: 72rpx;
          position: absolute;
          left: 0;
          top: 0;
          z-index: 10;
        }
      }
      .content{
        display: flex;
        justify-content: space-between;
        padding: 0 10rpx;
      }
      .name{
        margin: 12rpx 0 8rpx;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        flex: 1;
      }
      .info{
        display: flex;
        align-items: center;
        color: #666666;
        margin-left: 12rpx;
        .icon{
          width: 28rpx;
          margin-right: 8rpx;
        }
        .num{
          margin-right: 28rpx;
        }
        .primary{
          color: var(--themeColor);
        }
      }
    }
  }
}
wechat_jiaxuan/components/disCase/index.wxml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,119 @@
<view class="app">
  <view class="search_wrap">
    <image src="../../static/icon/ic_search@2x.png" mode="widthFix"></image>
    <input type="text" placeholder="搜索产品名称" />
  </view>
  <!--  -->
  <view class="main_content">
    <view class="query_wrap">
      <view class="item" bindtap="changeShowParams">
        <view class="name">风格</view>
        <van-icon name="{{ showParams ? 'arrow-up' : 'arrow-down' }}" />
      </view>
      <view class="item" bindtap="changeShowParams">
        <view class="name">空间</view>
        <van-icon name="{{ showParams ? 'arrow-up' : 'arrow-down' }}" />
      </view>
      <view class="item" bindtap="changeShowParams">
        <view class="name">间名</view>
        <van-icon name="{{ showParams ? 'arrow-up' : 'arrow-down' }}" />
      </view>
      <view class="item" bindtap="changeShowParams">
        <view class="name">间称</view>
        <van-icon name="{{ showParams ? 'arrow-up' : 'arrow-down' }}" />
      </view>
      <view class="item" bindtap="changeShowParams">
        <view class="name">空称</view>
        <van-icon name="{{ showParams ? 'arrow-up' : 'arrow-down' }}" />
      </view>
    </view>
    <view wx:if="{{ showParams }}" class="query_param">
      <view class="list">
        <view class="item active">东芝电视</view>
        <view class="item">东芝啊的时撒的代电视</view>
        <view class="item">东芝电视</view>
        <view class="item">东芝电视</view>
        <view class="item">东芝电视</view>
      </view>
      <view class="btns">
        <view class="btn" bindtap="changeShowParams">取消</view>
        <view class="btn sub">确认</view>
      </view>
    </view>
    <view class="status">
      <view class="item {{ activeStatus == '0' ? 'active' : '' }}" data-status="0" bindtap="statusChange">默认</view>
      <view class="separate"></view>
      <view class="item {{ activeStatus == '1' ? 'active' : '' }}" data-status="1" bindtap="statusChange">最热</view>
      <view class="separate"></view>
      <view class="item {{ activeStatus == '2' ? 'active' : '' }}" data-status="2" bindtap="statusChange">最新</view>
    </view>
    <!-- goods_list -->
    <view class="goods_list">
      <view class="item" bindtap="handleDetail">
        <view class="img_wrap">
          <image src="../../static/icon/test.png" class="img"></image>
          <image wx:if="{{ false }}" class="new" src="../../static/icon/chanpin_ic_new@2x.png" mode="widthFix"></image>
        </view>
        <view class="content">
          <view class="name">钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲</view>
          <view class="info">
            <image wx:if="{{ false }}" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
            <image wx:else="" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
            <text class="num {{true ? 'primary' : ''}}">34</text>
            <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
            <text>1000</text>
          </view>
        </view>
      </view>
      <view class="item">
        <view class="img_wrap">
          <image src="../../static/icon/test.png" class="img"></image>
          <image wx:if="{{ false }}" class="new" src="../../static/icon/chanpin_ic_new@2x.png" mode="widthFix"></image>
        </view>
        <view class="content">
          <view class="name">钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲</view>
          <view class="info">
            <image wx:if="{{ false }}" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
            <image wx:else="" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
            <text class="num {{true ? 'primary' : ''}}">34</text>
            <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
            <text>1000</text>
          </view>
        </view>
      </view>
      <view class="item">
        <view class="img_wrap">
          <image src="../../static/icon/test.png" class="img"></image>
          <image wx:if="{{ false }}" class="new" src="../../static/icon/chanpin_ic_new@2x.png" mode="widthFix"></image>
        </view>
        <view class="content">
          <view class="name">钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲</view>
          <view class="info">
            <image wx:if="{{ false }}" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
            <image wx:else="" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
            <text class="num {{true ? 'primary' : ''}}">34</text>
            <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
            <text>1000</text>
          </view>
        </view>
      </view>
      <view class="item">
        <view class="img_wrap">
          <image src="../../static/icon/test.png" class="img"></image>
          <image wx:if="{{ false }}" class="new" src="../../static/icon/chanpin_ic_new@2x.png" mode="widthFix"></image>
        </view>
        <view class="content">
          <view class="name">钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲</view>
          <view class="info">
            <image wx:if="{{ false }}" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
            <image wx:else="" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
            <text class="num {{true ? 'primary' : ''}}">34</text>
            <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
            <text>1000</text>
          </view>
        </view>
      </view>
    </view>
  </view>
</view>
wechat_jiaxuan/components/disCase/index.wxss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,155 @@
.search_wrap {
  width: 670rpx;
  height: 72rpx;
  margin: 24rpx auto;
  background: #F7F7F7;
  border-radius: 8rpx;
  padding: 0 40rpx;
  display: flex;
  align-items: center;
  background-color: #F7F7F7;
}
.search_wrap image {
  width: 28rpx;
  margin-right: 16rpx;
}
.app {
  height: 100%;
  width: 100%;
}
.main_content {
  height: calc(100% - 120rpx);
}
.main_content .query_wrap {
  display: flex;
  padding: 0 16rpx;
}
.main_content .query_wrap .item {
  height: 88rpx;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #666666;
  flex: 1;
}
.main_content .query_wrap .item .name {
  margin-right: 6rpx;
}
.main_content .query_param {
  position: absolute;
  z-index: 99;
  background-color: #fff;
  width: 100%;
}
.main_content .query_param .list {
  width: 100%;
  display: flex;
  flex-wrap: wrap;
  padding: 30rpx 40rpx;
}
.main_content .query_param .list .item {
  width: 202rpx;
  height: 72rpx;
  text-align: center;
  line-height: 70rpx;
  background: #F7F7F7;
  border-radius: 8rpx;
  font-size: 26rpx;
  color: #333333;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-right: 24rpx;
  margin-bottom: 24rpx;
}
.main_content .query_param .list .item:nth-of-type(3n) {
  margin-right: 0;
}
.main_content .query_param .list .active {
  color: var(--themeColor);
  background: rgba(176, 135, 113, 0.08);
}
.main_content .query_param .btns {
  display: flex;
}
.main_content .query_param .btns .btn {
  flex: 1;
  height: 88rpx;
  background: #E5E5E5;
  color: #666666;
  display: flex;
  justify-content: center;
  align-items: center;
}
.main_content .query_param .btns .sub {
  background: var(--themeColor);
  color: #fff;
}
.main_content .status {
  display: flex;
  padding: 0rpx 40rpx;
  margin: 20rpx 0;
  align-items: center;
}
.main_content .status .active {
  color: var(--themeColor);
}
.main_content .status .separate {
  margin: 0 12rpx;
  width: 1rpx;
  height: 28rpx;
  background-color: #333333;
}
.main_content .goods_list {
  padding: 12rpx 40rpx;
}
.main_content .goods_list .item {
  width: 100%;
  margin-bottom: 32rpx;
}
.main_content .goods_list .item .img_wrap {
  width: 100%;
  height: 376rpx;
  border-radius: 8rpx;
  overflow: hidden;
  position: relative;
}
.main_content .goods_list .item .img_wrap .img {
  width: 100%;
  height: 100%;
}
.main_content .goods_list .item .img_wrap .new {
  width: 72rpx;
  position: absolute;
  left: 0;
  top: 0;
  z-index: 10;
}
.main_content .goods_list .item .content {
  display: flex;
  justify-content: space-between;
  padding: 0 10rpx;
}
.main_content .goods_list .item .name {
  margin: 12rpx 0 8rpx;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 1;
}
.main_content .goods_list .item .info {
  display: flex;
  align-items: center;
  color: #666666;
  margin-left: 12rpx;
}
.main_content .goods_list .item .info .icon {
  width: 28rpx;
  margin-right: 8rpx;
}
.main_content .goods_list .item .info .num {
  margin-right: 28rpx;
}
.main_content .goods_list .item .info .primary {
  color: var(--themeColor);
}
wechat_jiaxuan/components/disProduct/index.js
@@ -16,6 +16,11 @@
    activeStatus: '0'
  },
  methods: {
    handleDetail(e) {
      wx.navigateTo({
        url: '/pages/detailDis/product',
      })
    },
    changeOne(){
      const showOne = !this.data.showOne
      this.setData({showOne})
wechat_jiaxuan/components/disProduct/index.less
@@ -63,6 +63,7 @@
    }
    .query_form{
      position: absolute;
      z-index: 99;
      background-color: #fff;
      .list{
        width: 100%;
@@ -79,7 +80,7 @@
          font-size: 26rpx;
          color: #333333;
          white-space: nowrap;
          overflow: hidden;//文本超出隐藏
          overflow: hidden;
          text-overflow: ellipsis;
          margin-right: 24rpx;
          margin-bottom: 24rpx;
@@ -147,7 +148,7 @@
            position: absolute;
            left: 0;
            top: 0;
            z-index: 100;
            z-index: 10;
          }
        }
        .name{
wechat_jiaxuan/components/disProduct/index.wxml
@@ -66,7 +66,7 @@
        <view class="item {{ activeStatus == '2' ? 'active' : '' }}" data-status="2" bindtap="statusChange">最新</view>
      </view>
      <view class="goods_list">
        <view class="item">
        <view class="item" bindtap="handleDetail">
          <view class="img_wrap">
            <image src="../../static/icon/test.png" class="img"></image>
            <image wx:if="{{ true }}" class="new" src="../../static/icon/chanpin_ic_new@2x.png" mode="widthFix"></image>
wechat_jiaxuan/components/disProduct/index.wxss
@@ -64,6 +64,7 @@
}
.main_content .main_right .query_form {
  position: absolute;
  z-index: 99;
  background-color: #fff;
}
.main_content .main_right .query_form .list {
@@ -151,7 +152,7 @@
  position: absolute;
  left: 0;
  top: 0;
  z-index: 100;
  z-index: 10;
}
.main_content .main_right .goods_list .item .name {
  margin: 12rpx 0 8rpx;
wechat_jiaxuan/components/disRealpic/index.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
// components/disCase/index.js
Component({
  /**
   * ç»„件的属性列表
   */
  properties: {
  },
  data: {
    showParams: false,
    activeStatus: '0'
  },
  methods: {
    handleDetail(e) {
      wx.navigateTo({
        url: '/pages/detailDis/realpic',
      })
    },
    changeShowParams(){
      const showParams = !this.data.showParams
      this.setData({showParams})
      // this.setData({showTwo: false})
    },
    changeTwo(){
      const showTwo = !this.data.showTwo
      this.setData({showTwo})
      this.setData({showOne: false})
    },
    statusChange(e) {
      const activeStatus = e.currentTarget.dataset.status
      this.setData({activeStatus})
    }
  }
})
wechat_jiaxuan/components/disRealpic/index.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,4 @@
{
  "component": true,
  "usingComponents": {}
}
wechat_jiaxuan/components/disRealpic/index.less
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,168 @@
.search_wrap {
  width: 670rpx;
  height: 72rpx;
  margin: 24rpx auto;
  background: #F7F7F7;
  border-radius: 8rpx;
  padding: 0 40rpx;
  display: flex;
  align-items: center;
  background-color: #F7F7F7;
  image {
    width: 28rpx;
    margin-right: 16rpx;
  }
}
.app {
  height: 100%;
  width: 100%;
}
.main_content {
  height: calc(100% - 120rpx);
  .query_wrap {
    display: flex;
    padding: 0 16rpx;
    .item {
      height: 88rpx;
      display: flex;
      align-items: center;
      justify-content: center;
      color: #666666;
      flex: 1;
      .name {
        margin-right: 6rpx;
      }
    }
  }
  .query_param {
    position: absolute;
    z-index: 99;
    background-color: #fff;
    width: 100%;
    .list {
      width: 100%;
      display: flex;
      flex-wrap: wrap;
      padding: 30rpx 40rpx;
      .item {
        width: 202rpx;
        height: 72rpx;
        text-align: center;
        line-height: 70rpx;
        background: #F7F7F7;
        border-radius: 8rpx;
        font-size: 26rpx;
        color: #333333;
        white-space: nowrap;
        overflow: hidden; //文本超出隐藏
        text-overflow: ellipsis;
        margin-right: 24rpx;
        margin-bottom: 24rpx;
        &:nth-of-type(3n) {
          margin-right: 0;
        }
      }
      .active {
        color: var(--themeColor);
        background: rgba(176, 135, 113, 0.08);
      }
    }
    .btns {
      display: flex;
      .btn {
        flex: 1;
        height: 88rpx;
        background: #E5E5E5;
        color: #666666;
        display: flex;
        justify-content: center;
        align-items: center;
      }
      .sub {
        background: var(--themeColor);
        color: #fff;
      }
    }
  }
  .status {
    display: flex;
    padding: 0rpx 40rpx;
    margin: 20rpx 0;
    align-items: center;
    .active {
      color: var(--themeColor);
    }
    .separate {
      margin: 0 12rpx;
      width: 1rpx;
      height: 28rpx;
      background-color: #333333;
    }
  }
  .goods_list{
    padding: 12rpx 40rpx;
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    .item{
      width: 324rpx;
      margin-bottom: 60rpx;
      .img_wrap{
        width: 100%;
        height: 182rpx;
        border-radius: 8rpx;
        overflow: hidden;
        position: relative;
        .img{
          width: 100%;
          height: 100%;
        }
        .tag{
          padding: 0 10rpx;
          height: 46rpx;
          line-height: 46rpx;
          text-align: center;
          background: rgba(0,0,0,0.4);
          border-radius: 8rpx;
          position: absolute;
          left: 12rpx;
          top: 16rpx;
          color: #fff;
          font-size: 24rpx;
          z-index: 10;
        }
      }
      .name{
        margin: 12rpx 0 8rpx;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        flex: 1;
      }
      .info{
        display: flex;
        align-items: center;
        color: #666666;
        margin-left: 12rpx;
        .icon{
          width: 28rpx;
          margin-right: 8rpx;
        }
        .num{
          margin-right: 28rpx;
        }
        .primary{
          color: var(--themeColor);
        }
      }
    }
  }
}
wechat_jiaxuan/components/disRealpic/index.wxml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,119 @@
<view class="app">
  <view class="search_wrap">
    <image src="../../static/icon/ic_search@2x.png" mode="widthFix"></image>
    <input type="text" placeholder="搜索产品名称" />
  </view>
  <!--  -->
  <view class="main_content">
    <view class="query_wrap">
      <view class="item" bindtap="changeShowParams">
        <view class="name">风格</view>
        <van-icon name="{{ showParams ? 'arrow-up' : 'arrow-down' }}" />
      </view>
      <view class="item" bindtap="changeShowParams">
        <view class="name">空间</view>
        <van-icon name="{{ showParams ? 'arrow-up' : 'arrow-down' }}" />
      </view>
      <view class="item" bindtap="changeShowParams">
        <view class="name">间名</view>
        <van-icon name="{{ showParams ? 'arrow-up' : 'arrow-down' }}" />
      </view>
      <view class="item" bindtap="changeShowParams">
        <view class="name">间称</view>
        <van-icon name="{{ showParams ? 'arrow-up' : 'arrow-down' }}" />
      </view>
      <view class="item" bindtap="changeShowParams">
        <view class="name">空称</view>
        <van-icon name="{{ showParams ? 'arrow-up' : 'arrow-down' }}" />
      </view>
    </view>
    <view wx:if="{{ showParams }}" class="query_param">
      <view class="list">
        <view class="item active">东芝电视</view>
        <view class="item">东芝啊的时撒的代电视</view>
        <view class="item">东芝电视</view>
        <view class="item">东芝电视</view>
        <view class="item">东芝电视</view>
      </view>
      <view class="btns">
        <view class="btn" bindtap="changeShowParams">取消</view>
        <view class="btn sub">确认</view>
      </view>
    </view>
    <view class="status">
      <view class="item {{ activeStatus == '0' ? 'active' : '' }}" data-status="0" bindtap="statusChange">默认</view>
      <view class="separate"></view>
      <view class="item {{ activeStatus == '1' ? 'active' : '' }}" data-status="1" bindtap="statusChange">最热</view>
      <view class="separate"></view>
      <view class="item {{ activeStatus == '2' ? 'active' : '' }}" data-status="2" bindtap="statusChange">最新</view>
    </view>
    <!-- goods_list -->
    <view class="goods_list">
      <view class="item" bindtap="handleDetail">
        <view class="img_wrap">
          <image src="../../static/icon/test.png" class="img"></image>
          <view class="tag">实拍</view>
        </view>
        <view class="content">
          <view class="name">钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲</view>
          <view class="info">
            <image wx:if="{{ false }}" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
            <image wx:else="" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
            <text class="num {{true ? 'primary' : ''}}">34</text>
            <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
            <text>1000</text>
          </view>
        </view>
      </view>
      <view class="item">
        <view class="img_wrap">
          <image src="../../static/icon/test.png" class="img"></image>
          <image wx:if="{{ false }}" class="new" src="../../static/icon/chanpin_ic_new@2x.png" mode="widthFix"></image>
        </view>
        <view class="content">
          <view class="name">钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲</view>
          <view class="info">
            <image wx:if="{{ false }}" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
            <image wx:else="" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
            <text class="num {{true ? 'primary' : ''}}">34</text>
            <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
            <text>1000</text>
          </view>
        </view>
      </view>
      <view class="item">
        <view class="img_wrap">
          <image src="../../static/icon/test.png" class="img"></image>
          <image wx:if="{{ false }}" class="new" src="../../static/icon/chanpin_ic_new@2x.png" mode="widthFix"></image>
        </view>
        <view class="content">
          <view class="name">钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲</view>
          <view class="info">
            <image wx:if="{{ false }}" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
            <image wx:else="" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
            <text class="num {{true ? 'primary' : ''}}">34</text>
            <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
            <text>1000</text>
          </view>
        </view>
      </view>
      <view class="item">
        <view class="img_wrap">
          <image src="../../static/icon/test.png" class="img"></image>
          <image wx:if="{{ false }}" class="new" src="../../static/icon/chanpin_ic_new@2x.png" mode="widthFix"></image>
        </view>
        <view class="content">
          <view class="name">钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲钢琴曲</view>
          <view class="info">
            <image wx:if="{{ false }}" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
            <image wx:else="" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
            <text class="num {{true ? 'primary' : ''}}">34</text>
            <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
            <text>1000</text>
          </view>
        </view>
      </view>
    </view>
  </view>
</view>
wechat_jiaxuan/components/disRealpic/index.wxss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,160 @@
.search_wrap {
  width: 670rpx;
  height: 72rpx;
  margin: 24rpx auto;
  background: #F7F7F7;
  border-radius: 8rpx;
  padding: 0 40rpx;
  display: flex;
  align-items: center;
  background-color: #F7F7F7;
}
.search_wrap image {
  width: 28rpx;
  margin-right: 16rpx;
}
.app {
  height: 100%;
  width: 100%;
}
.main_content {
  height: calc(100% - 120rpx);
}
.main_content .query_wrap {
  display: flex;
  padding: 0 16rpx;
}
.main_content .query_wrap .item {
  height: 88rpx;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #666666;
  flex: 1;
}
.main_content .query_wrap .item .name {
  margin-right: 6rpx;
}
.main_content .query_param {
  position: absolute;
  z-index: 99;
  background-color: #fff;
  width: 100%;
}
.main_content .query_param .list {
  width: 100%;
  display: flex;
  flex-wrap: wrap;
  padding: 30rpx 40rpx;
}
.main_content .query_param .list .item {
  width: 202rpx;
  height: 72rpx;
  text-align: center;
  line-height: 70rpx;
  background: #F7F7F7;
  border-radius: 8rpx;
  font-size: 26rpx;
  color: #333333;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-right: 24rpx;
  margin-bottom: 24rpx;
}
.main_content .query_param .list .item:nth-of-type(3n) {
  margin-right: 0;
}
.main_content .query_param .list .active {
  color: var(--themeColor);
  background: rgba(176, 135, 113, 0.08);
}
.main_content .query_param .btns {
  display: flex;
}
.main_content .query_param .btns .btn {
  flex: 1;
  height: 88rpx;
  background: #E5E5E5;
  color: #666666;
  display: flex;
  justify-content: center;
  align-items: center;
}
.main_content .query_param .btns .sub {
  background: var(--themeColor);
  color: #fff;
}
.main_content .status {
  display: flex;
  padding: 0rpx 40rpx;
  margin: 20rpx 0;
  align-items: center;
}
.main_content .status .active {
  color: var(--themeColor);
}
.main_content .status .separate {
  margin: 0 12rpx;
  width: 1rpx;
  height: 28rpx;
  background-color: #333333;
}
.main_content .goods_list {
  padding: 12rpx 40rpx;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}
.main_content .goods_list .item {
  width: 324rpx;
  margin-bottom: 60rpx;
}
.main_content .goods_list .item .img_wrap {
  width: 100%;
  height: 182rpx;
  border-radius: 8rpx;
  overflow: hidden;
  position: relative;
}
.main_content .goods_list .item .img_wrap .img {
  width: 100%;
  height: 100%;
}
.main_content .goods_list .item .img_wrap .tag {
  padding: 0 10rpx;
  height: 46rpx;
  line-height: 46rpx;
  text-align: center;
  background: rgba(0, 0, 0, 0.4);
  border-radius: 8rpx;
  position: absolute;
  left: 12rpx;
  top: 16rpx;
  color: #fff;
  font-size: 24rpx;
  z-index: 10;
}
.main_content .goods_list .item .name {
  margin: 12rpx 0 8rpx;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 1;
}
.main_content .goods_list .item .info {
  display: flex;
  align-items: center;
  color: #666666;
  margin-left: 12rpx;
}
.main_content .goods_list .item .info .icon {
  width: 28rpx;
  margin-right: 8rpx;
}
.main_content .goods_list .item .info .num {
  margin-right: 28rpx;
}
.main_content .goods_list .item .info .primary {
  color: var(--themeColor);
}
wechat_jiaxuan/pages/consult/detail.less
@@ -1,5 +1,5 @@
.main_content {
  padding: 40rpx 40rpx 100rpx;
  padding: 40rpx 40rpx 160rpx;
  .main_title {
    font-weight: 500;
@@ -16,13 +16,18 @@
}
.footer {
  display: flex;
  align-items: center;
  height: 100rpx;
  position: fixed;
  bottom: 0;
  left: 40rpx;
  width: 670rpx;
  left: 0;
  width: 750rpx;
  background-color: #fff;
  box-shadow: 0rpx -1rpx 0rpx 0rpx #EEEEEE;
  .btns{
    display: flex;
    align-items: center;
    height: 100rpx;
    padding: 12rpx 40rpx;
  }
  .sub_btn {
    display: flex;
    justify-content: center;
wechat_jiaxuan/pages/consult/detail.wxml
@@ -9,18 +9,20 @@
    </view>
  </view>
  <!-- footer -->
  <view class="footer" style="bottom: {{bottomLift}}px;">
    <view class="item">
      <image class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
      <view class="name">收藏</view>
    </view>
    <view class="item">
      <image class="icon" src="../../static/icon/detail_nav_share.png" mode="widthFix"></image>
      <view class="name">分享</view>
    </view>
    <view class="sub_btn">
      <image class="sheji" src="../../static/icon/ic_sheji.png" mode="widthFix"></image>
      <view>免费预约专属设计</view>
  <view class="footer" style="padding-bottom: {{bottomLift}}px;">
    <view class="btns">
      <view class="item">
        <image class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
        <view class="name">收藏</view>
      </view>
      <view class="item">
        <image class="icon" src="../../static/icon/detail_nav_share.png" mode="widthFix"></image>
        <view class="name">分享</view>
      </view>
      <view class="sub_btn">
        <image class="sheji" src="../../static/icon/ic_sheji.png" mode="widthFix"></image>
        <view>免费预约专属设计</view>
      </view>
    </view>
  </view>
</view>
wechat_jiaxuan/pages/consult/detail.wxss
@@ -1,5 +1,5 @@
.main_content {
  padding: 40rpx 40rpx 100rpx;
  padding: 40rpx 40rpx 160rpx;
}
.main_content .main_title {
  font-weight: 500;
@@ -13,13 +13,18 @@
  color: #999999;
}
.footer {
  position: fixed;
  bottom: 0;
  left: 0;
  width: 750rpx;
  background-color: #fff;
  box-shadow: 0rpx -1rpx 0rpx 0rpx #EEEEEE;
}
.footer .btns {
  display: flex;
  align-items: center;
  height: 100rpx;
  position: fixed;
  bottom: 0;
  left: 40rpx;
  width: 670rpx;
  padding: 12rpx 40rpx;
}
.footer .sub_btn {
  display: flex;
wechat_jiaxuan/pages/detailDis/case.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
// pages/detailDis/case.js
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    bottomLift: 0
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面加载
   */
  onLoad(options) {
    var app = getApp().globalData
    this.setData({
      bottomLift: app.bottomLift
    })
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
  onReady() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面显示
   */
  onShow() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面隐藏
   */
  onHide() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面卸载
   */
  onUnload() {
  },
  /**
   * é¡µé¢ç›¸å…³äº‹ä»¶å¤„理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
  },
  /**
   * é¡µé¢ä¸Šæ‹‰è§¦åº•事件的处理函数
   */
  onReachBottom() {
  },
  /**
   * ç”¨æˆ·ç‚¹å‡»å³ä¸Šè§’分享
   */
  onShareAppMessage() {
  }
})
wechat_jiaxuan/pages/detailDis/case.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,4 @@
{
  "usingComponents": {},
  "navigationBarTitleText": "案例详情"
}
wechat_jiaxuan/pages/detailDis/case.less
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,103 @@
.container {
  padding: 0 40rpx 220rpx;
  .main_title {
    font-weight: 500;
    font-size: 44rpx;
    color: #222222;
    margin: 32rpx 0;
  }
  .time {
    font-size: 26rpx;
    color: #999999;
    margin-bottom: 48rpx;
  }
  .fullview_wrap {
    .banner {
      width: 100%;
      border-radius: 8rpx;
    }
  }
  .img {
    width: 100%;
    border-radius: 8rpx;
  }
  .h1 {
    margin: 80rpx 0 48rpx;
    font-weight: 600;
    font-size: 36rpx;
  }
  .analysis {
    background: #F7F7F7;
    border-radius: 10rpx;
    padding: 28rpx 30rpx;
    margin-top: 66rpx;
    .h2 {
      font-weight: 500;
      margin-bottom: 20rpx;
      .text{
        font-size: 26rpx;
        font-weight: 300;
        color: #333333;
      }
    }
  }
  .list{
    .item{
      .content{
        font-weight: 300;
        font-size: 28rpx;
        color: #333333;
      }
    }
  }
}
.footer {
  position: fixed;
  box-shadow: 0rpx -1rpx 0rpx 0rpx #EEEEEE;
  bottom: 0;
  left: 0;
  width: 750rpx;
  padding: 0rpx 40rpx;
  background-color: #fff;
  .btns{
    display: flex;
    align-items: center;
    height: 100rpx;
  }
  .sub_btn {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 72rpx;
    flex: 1;
    background-color: var(--themeColor);
    font-weight: 500;
    color: #FFFFFF;
    font-style: 28rpx;
    box-shadow: 0rpx 4rpx 16rpx 0rpx rgba(176,135,113,0.3), inset 0rpx 2rpx 2rpx 0rpx rgba(255,255,255,0.33);
    border-radius: 8rpx;
    .sheji{
      width: 28rpx;
      margin-right: 8rpx;
    }
  }
  .item {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    font-size: 20rpx;
    color: #666666;
    margin-right: 48rpx;
    .icon {
      width: 44rpx;
    }
  }
}
wechat_jiaxuan/pages/detailDis/case.wxml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
<view class="container">
  <view class="main_title">简欧风格70m²两居室</view>
  <view class="time">发布时间:2021-08-21 10:0</view>
  <view class="fullview_wrap">
    <image class="banner" src="../../static/icon/test.png" mode="widthFix"></image>
  </view>
  <view class="h1">布置图</view>
  <image class="img" src="../../static/icon/test.png"  mode="widthFix"></image>
  <view class="analysis">
    <view class="h2">案例解析</view>
    <view class="text">为保留入户的储纳空间,将卫生间的门移动一段距离,方便了入户贵的设置,储物间封闭做主卧衣帽间,增加空间使用率和房屋整体性。客厅的格局设计增加了空间的层次感。</view>
  </view>
  <view class="list">
    <view class="item">
      <view class="h1">01.客厅</view>
      <image src="" mode="widthFix" />
      <view class="content">看惯了整齐划一的玻璃吊柜,金色框型玻门吊柜又是不一样的审美,边框微斜切入,左右对称分布,灯光映衬下,美味绚丽多姿</view>
    </view>
    <view class="item">
      <view class="h1">01.客厅</view>
      <image src="" mode="widthFix" />
      <view class="content">看惯了整齐划一的玻璃吊柜,金色框型玻门吊柜又是不一样的审美,边框微斜切入,左右对称分布,灯光映衬下,美味绚丽多姿</view>
    </view>
    <view class="item">
      <view class="h1">01.客厅</view>
      <image src="" mode="widthFix" />
      <view class="content">看惯了整齐划一的玻璃吊柜,金色框型玻门吊柜又是不一样的审美,边框微斜切入,左右对称分布,灯光映衬下,美味绚丽多姿</view>
    </view>
  </view>
  <!-- footer -->
  <view class="footer" style="padding-bottom: {{bottomLift}}px;">
    <view class="btns">
      <view class="item">
        <image class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
        <view class="name">收藏</view>
      </view>
      <view class="item">
        <image class="icon" src="../../static/icon/detail_nav_share.png" mode="widthFix"></image>
        <view class="name">分享</view>
      </view>
      <view class="sub_btn">
        <image class="sheji" src="../../static/icon/ic_sheji.png" mode="widthFix"></image>
        <view>免费预约专属设计</view>
      </view>
    </view>
  </view>
</view>
wechat_jiaxuan/pages/detailDis/case.wxss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,90 @@
.container {
  padding: 0 40rpx 220rpx;
}
.container .main_title {
  font-weight: 500;
  font-size: 44rpx;
  color: #222222;
  margin: 32rpx 0;
}
.container .time {
  font-size: 26rpx;
  color: #999999;
  margin-bottom: 48rpx;
}
.container .fullview_wrap .banner {
  width: 100%;
  border-radius: 8rpx;
}
.container .img {
  width: 100%;
  border-radius: 8rpx;
}
.container .h1 {
  margin: 80rpx 0 48rpx;
  font-weight: 600;
  font-size: 36rpx;
}
.container .analysis {
  background: #F7F7F7;
  border-radius: 10rpx;
  padding: 28rpx 30rpx;
  margin-top: 66rpx;
}
.container .analysis .h2 {
  font-weight: 500;
  margin-bottom: 20rpx;
}
.container .analysis .h2 .text {
  font-size: 26rpx;
  font-weight: 300;
  color: #333333;
}
.container .list .item .content {
  font-weight: 300;
  font-size: 28rpx;
  color: #333333;
}
.footer {
  position: fixed;
  box-shadow: 0rpx -1rpx 0rpx 0rpx #EEEEEE;
  bottom: 0;
  left: 0;
  width: 750rpx;
  padding: 0rpx 40rpx;
  background-color: #fff;
}
.footer .btns {
  display: flex;
  align-items: center;
  height: 100rpx;
}
.footer .sub_btn {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 72rpx;
  flex: 1;
  background-color: var(--themeColor);
  font-weight: 500;
  color: #FFFFFF;
  font-style: 28rpx;
  box-shadow: 0rpx 4rpx 16rpx 0rpx rgba(176, 135, 113, 0.3), inset 0rpx 2rpx 2rpx 0rpx rgba(255, 255, 255, 0.33);
  border-radius: 8rpx;
}
.footer .sub_btn .sheji {
  width: 28rpx;
  margin-right: 8rpx;
}
.footer .item {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  font-size: 20rpx;
  color: #666666;
  margin-right: 48rpx;
}
.footer .item .icon {
  width: 44rpx;
}
wechat_jiaxuan/pages/detailDis/product.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
// pages/detailDis/product.js
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    bottomLift: 0
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面加载
   */
  onLoad(options) {
    var app = getApp().globalData
    this.setData({
      bottomLift: app.bottomLift
    })
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
  onReady() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面显示
   */
  onShow() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面隐藏
   */
  onHide() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面卸载
   */
  onUnload() {
  },
  /**
   * é¡µé¢ç›¸å…³äº‹ä»¶å¤„理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
  },
  /**
   * é¡µé¢ä¸Šæ‹‰è§¦åº•事件的处理函数
   */
  onReachBottom() {
  },
  /**
   * ç”¨æˆ·ç‚¹å‡»å³ä¸Šè§’分享
   */
  onShareAppMessage() {
  }
})
wechat_jiaxuan/pages/detailDis/product.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
{
  "usingComponents": {}
}
wechat_jiaxuan/pages/detailDis/product.less
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,200 @@
.user {
  width: 750rpx;
  padding: 0 40rpx;
  height: 148rpx;
  background: #FFFFFF;
  border-radius: 8rpx;
  padding: 0 30rpx;
  display: flex;
  align-items: center;
  .content {
    flex: 1;
    .name {
      font-size: 30rpx;
      margin-bottom: 12rpx;
    }
    .desc {
      font-size: 24rpx;
      color: #999999;
    }
  }
  .avatar {
    width: 80rpx;
    border-radius: 50%;
    margin-right: 24rpx;
  }
  .btn {
    width: 118rpx;
    height: 56rpx;
    line-height: 52rpx;
    text-align: center;
    background: var(--themeColor);
    border-radius: 8rpx;
    font-weight: 500;
    font-size: 26rpx;
    color: #fff;
  }
}
page {
  background-color: #f7f7f7;
}
.main_content {
  padding: 52rpx 40rpx 40rpx;
  border-radius: 16rpx 16rpx 0rpx 0rpx;
  background-color: #fff;
  margin-bottom: 20rpx;
  .title {
    font-weight: 500;
    font-size: 36rpx;
  }
  .desc {
    font-size: 26rpx;
    color: #555555;
    margin: 16rpx 0 26rpx;
  }
  .text {
    font-size: 26rpx;
    color: #555555;
    margin-bottom: 40rpx;
  }
}
.counselor {
  width: 670rpx;
  padding: 0 0 0 30rpx;
  box-shadow: 0rpx 4rpx 16rpx 0rpx rgba(176, 135, 113, 0.2);
  .content {
    .name {
      margin-bottom: 0;
    }
    .desc {
      margin: 0;
    }
  }
  .avatar_wrap {
    width: 80rpx;
    height: 80rpx;
    background: rgba(176, 135, 113, 0.14);
    border-radius: 50%;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-right: 24rpx;
    .avatar {
      width: 52rpx;
      margin: 0;
    }
  }
  .btn {
    width: 68rpx;
    height: 100%;
    font-size: 26rpx;
    color: #FFFFFF;
    font-weight: 400;
    padding: 20rpx;
    line-height: 34rpx;
    border-radius: 0rpx 8rpx 8rpx 0rpx;
  }
}
.video {
  padding: 52rpx 40rpx 40rpx;
  background-color: #fff;
  .title {
    font-weight: 600;
    font-size: 36rpx;
    margin-bottom: 32rpx;
  }
  video {
    width: 100%;
    border: 1px solid;
    border-radius: 8rpx;
  }
}
.detail {
  padding: 52rpx 40rpx 40rpx;
  background-color: #fff;
  .title {
    font-weight: 600;
    font-size: 36rpx;
    margin-bottom: 32rpx;
  }
  .line {
    display: flex;
    height: 62rpx;
    margin-bottom: 24rpx;
    .label {
      font-size: 24rpx;
      color: #666666;
    }
    .val {
      font-size: 24rpx;
      color: #333333;
    }
  }
}
.footer {
  position: fixed;
  box-shadow: 0rpx -1rpx 0rpx 0rpx #EEEEEE;
  bottom: 0;
  left: 0;
  width: 750rpx;
  padding: 0rpx 40rpx;
  background-color: #fff;
  .btns{
    display: flex;
    align-items: center;
    height: 100rpx;
  }
  .sub_btn {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 72rpx;
    flex: 1;
    background-color: var(--themeColor);
    font-weight: 500;
    color: #FFFFFF;
    font-style: 28rpx;
    box-shadow: 0rpx 4rpx 16rpx 0rpx rgba(176,135,113,0.3), inset 0rpx 2rpx 2rpx 0rpx rgba(255,255,255,0.33);
    border-radius: 8rpx;
    .sheji{
      width: 28rpx;
      margin-right: 8rpx;
    }
  }
  .item {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    font-size: 20rpx;
    color: #666666;
    margin-right: 48rpx;
    .icon {
      width: 44rpx;
    }
  }
}
wechat_jiaxuan/pages/detailDis/product.wxml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
<view>
  <view class="user">
    <view class="avatar"></view>
    <view class="content">
      <view class="name">丁梓林</view>
      <view class="desc">导购|5年经验</view>
    </view>
    <view class="btn">联系TA</view>
  </view>
  <view class="main_content">
    <view class="title">莫西假日-餐厅</view>
    <view class="desc">简欧风格</view>
    <view class="text">家居风格不囿于固有形式,厨房功能不局限于一日三餐。
      å…ƒç´ ä¸Žæè´¨ç¢°æ’žå‡ºçš„不仅是设计感,更是一种鲜明的不拘
      ä¸€æ ¼çš„现代态度,融合当下流行美学,构设空间的无风格
      åŒ–。</view>
    <view class="user counselor">
      <view class="avatar_wrap">
        <image class="avatar" mode="widthFix" src="../../static/icon/home_ic_guwen@2x.png"></image>
      </view>
      <view class="content">
        <view class="name">您的专属家居顾问</view>
        <view class="desc">您身边的全屋设计专家</view>
      </view>
      <view class="btn">去看看</view>
    </view>
  </view>
  <!-- video -->
  <view class="video">
    <view class="title">产品视频</view>
    <video src=""></video>
  </view>
  <view class="detail">
    <view class="title">产品详情</view>
    <view class="line">
      <view class="label">品名:</view>
      <view class="val">莫西假日-餐厅</view>
    </view>
    <view class="line">
      <view class="label">工艺:</view>
      <view class="val">莫西假日-餐厅</view>
    </view>
  </view>
  <!-- footer -->
  <view class="footer" style="padding-bottom: {{bottomLift}}px;">
    <view class="btns">
      <view class="item">
        <image class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
        <view class="name">收藏</view>
      </view>
      <view class="item">
        <image class="icon" src="../../static/icon/detail_nav_share.png" mode="widthFix"></image>
        <view class="name">分享</view>
      </view>
      <view class="sub_btn">
        <image class="sheji" src="../../static/icon/ic_sheji.png" mode="widthFix"></image>
        <view>免费预约专属设计</view>
      </view>
    </view>
  </view>
</view>
wechat_jiaxuan/pages/detailDis/product.wxss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,174 @@
.user {
  width: 750rpx;
  padding: 0 40rpx;
  height: 148rpx;
  background: #FFFFFF;
  border-radius: 8rpx;
  padding: 0 30rpx;
  display: flex;
  align-items: center;
}
.user .content {
  flex: 1;
}
.user .content .name {
  font-size: 30rpx;
  margin-bottom: 12rpx;
}
.user .content .desc {
  font-size: 24rpx;
  color: #999999;
}
.user .avatar {
  width: 80rpx;
  border-radius: 50%;
  margin-right: 24rpx;
}
.user .btn {
  width: 118rpx;
  height: 56rpx;
  line-height: 52rpx;
  text-align: center;
  background: var(--themeColor);
  border-radius: 8rpx;
  font-weight: 500;
  font-size: 26rpx;
  color: #fff;
}
page {
  background-color: #f7f7f7;
}
.main_content {
  padding: 52rpx 40rpx 40rpx;
  border-radius: 16rpx 16rpx 0rpx 0rpx;
  background-color: #fff;
  margin-bottom: 20rpx;
}
.main_content .title {
  font-weight: 500;
  font-size: 36rpx;
}
.main_content .desc {
  font-size: 26rpx;
  color: #555555;
  margin: 16rpx 0 26rpx;
}
.main_content .text {
  font-size: 26rpx;
  color: #555555;
  margin-bottom: 40rpx;
}
.counselor {
  width: 670rpx;
  padding: 0 0 0 30rpx;
  box-shadow: 0rpx 4rpx 16rpx 0rpx rgba(176, 135, 113, 0.2);
}
.counselor .content .name {
  margin-bottom: 0;
}
.counselor .content .desc {
  margin: 0;
}
.counselor .avatar_wrap {
  width: 80rpx;
  height: 80rpx;
  background: rgba(176, 135, 113, 0.14);
  border-radius: 50%;
  display: flex;
  justify-content: center;
  align-items: center;
  margin-right: 24rpx;
}
.counselor .avatar_wrap .avatar {
  width: 52rpx;
  margin: 0;
}
.counselor .btn {
  width: 68rpx;
  height: 100%;
  font-size: 26rpx;
  color: #FFFFFF;
  font-weight: 400;
  padding: 20rpx;
  line-height: 34rpx;
  border-radius: 0rpx 8rpx 8rpx 0rpx;
}
.video {
  padding: 52rpx 40rpx 40rpx;
  background-color: #fff;
}
.video .title {
  font-weight: 600;
  font-size: 36rpx;
  margin-bottom: 32rpx;
}
.video video {
  width: 100%;
  border: 1px solid;
  border-radius: 8rpx;
}
.detail {
  padding: 52rpx 40rpx 40rpx;
  background-color: #fff;
}
.detail .title {
  font-weight: 600;
  font-size: 36rpx;
  margin-bottom: 32rpx;
}
.detail .line {
  display: flex;
  height: 62rpx;
  margin-bottom: 24rpx;
}
.detail .line .label {
  font-size: 24rpx;
  color: #666666;
}
.detail .line .val {
  font-size: 24rpx;
  color: #333333;
}
.footer {
  position: fixed;
  box-shadow: 0rpx -1rpx 0rpx 0rpx #EEEEEE;
  bottom: 0;
  left: 0;
  width: 750rpx;
  padding: 0rpx 40rpx;
  background-color: #fff;
}
.footer .btns {
  display: flex;
  align-items: center;
  height: 100rpx;
}
.footer .sub_btn {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 72rpx;
  flex: 1;
  background-color: var(--themeColor);
  font-weight: 500;
  color: #FFFFFF;
  font-style: 28rpx;
  box-shadow: 0rpx 4rpx 16rpx 0rpx rgba(176, 135, 113, 0.3), inset 0rpx 2rpx 2rpx 0rpx rgba(255, 255, 255, 0.33);
  border-radius: 8rpx;
}
.footer .sub_btn .sheji {
  width: 28rpx;
  margin-right: 8rpx;
}
.footer .item {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  font-size: 20rpx;
  color: #666666;
  margin-right: 48rpx;
}
.footer .item .icon {
  width: 44rpx;
}
wechat_jiaxuan/pages/detailDis/realpic.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
// pages/detailDis/realpic.js
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    bottomLift: 0
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面加载
   */
  onLoad(options) {
    var app = getApp().globalData
    this.setData({
      bottomLift: app.bottomLift
    })
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
  onReady() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面显示
   */
  onShow() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面隐藏
   */
  onHide() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面卸载
   */
  onUnload() {
  },
  /**
   * é¡µé¢ç›¸å…³äº‹ä»¶å¤„理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
  },
  /**
   * é¡µé¢ä¸Šæ‹‰è§¦åº•事件的处理函数
   */
  onReachBottom() {
  },
  /**
   * ç”¨æˆ·ç‚¹å‡»å³ä¸Šè§’分享
   */
  onShareAppMessage() {
  }
})
wechat_jiaxuan/pages/detailDis/realpic.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,4 @@
{
  "usingComponents": {},
  "navigationBarTitleText": "实景详情"
}
wechat_jiaxuan/pages/detailDis/realpic.less
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
.container {
  padding: 0 40rpx 220rpx;
  .main_title {
    font-weight: 500;
    font-size: 44rpx;
    color: #222222;
    margin: 32rpx 0;
  }
  .time {
    font-size: 26rpx;
    color: #999999;
    margin-bottom: 48rpx;
  }
  .img {
    width: 100%;
    border-radius: 8rpx;
  }
  .list{
    .item{
      .content{
        font-weight: 300;
        font-size: 28rpx;
        color: #333333;
      }
    }
  }
}
.footer {
  position: fixed;
  box-shadow: 0rpx -1rpx 0rpx 0rpx #EEEEEE;
  bottom: 0;
  left: 0;
  width: 750rpx;
  padding: 0rpx 40rpx;
  background-color: #fff;
  .btns{
    display: flex;
    align-items: center;
    height: 100rpx;
  }
  .sub_btn {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 72rpx;
    flex: 1;
    background-color: var(--themeColor);
    font-weight: 500;
    color: #FFFFFF;
    font-style: 28rpx;
    box-shadow: 0rpx 4rpx 16rpx 0rpx rgba(176,135,113,0.3), inset 0rpx 2rpx 2rpx 0rpx rgba(255,255,255,0.33);
    border-radius: 8rpx;
    .sheji{
      width: 28rpx;
      margin-right: 8rpx;
    }
  }
  .item {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    font-size: 20rpx;
    color: #666666;
    margin-right: 48rpx;
    .icon {
      width: 44rpx;
    }
  }
}
wechat_jiaxuan/pages/detailDis/realpic.wxml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
<view class="container">
  <view class="main_title">简欧风格70m²两居室</view>
  <view class="time">发布时间:2021-08-21 10:0</view>
  <view class="list">
    <view class="item">
      <image src="" mode="widthFix" />
      <view class="content">看惯了整齐划一的玻璃吊柜,金色框型玻门吊柜又是不一样的审美,边框微斜切入,左右对称分布,灯光映衬下,美味绚丽多姿</view>
    </view>
    <view class="item">
      <image src="" mode="widthFix" />
      <view class="content">看惯了整齐划一的玻璃吊柜,金色框型玻门吊柜又是不一样的审美,边框微斜切入,左右对称分布,灯光映衬下,美味绚丽多姿</view>
    </view>
    <view class="item">
      <image src="" mode="widthFix" />
      <view class="content">看惯了整齐划一的玻璃吊柜,金色框型玻门吊柜又是不一样的审美,边框微斜切入,左右对称分布,灯光映衬下,美味绚丽多姿</view>
    </view>
  </view>
  <!-- footer -->
  <view class="footer" style="padding-bottom: {{bottomLift}}px;">
    <view class="btns">
      <view class="item">
        <image class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
        <view class="name">收藏</view>
      </view>
      <view class="item">
        <image class="icon" src="../../static/icon/detail_nav_share.png" mode="widthFix"></image>
        <view class="name">分享</view>
      </view>
      <view class="sub_btn">
        <image class="sheji" src="../../static/icon/ic_sheji.png" mode="widthFix"></image>
        <view>免费预约专属设计</view>
      </view>
    </view>
  </view>
</view>
wechat_jiaxuan/pages/detailDis/realpic.wxss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
.container {
  padding: 0 40rpx 220rpx;
}
.container .main_title {
  font-weight: 500;
  font-size: 44rpx;
  color: #222222;
  margin: 32rpx 0;
}
.container .time {
  font-size: 26rpx;
  color: #999999;
  margin-bottom: 48rpx;
}
.container .img {
  width: 100%;
  border-radius: 8rpx;
}
.container .list .item .content {
  font-weight: 300;
  font-size: 28rpx;
  color: #333333;
}
.footer {
  position: fixed;
  box-shadow: 0rpx -1rpx 0rpx 0rpx #EEEEEE;
  bottom: 0;
  left: 0;
  width: 750rpx;
  padding: 0rpx 40rpx;
  background-color: #fff;
}
.footer .btns {
  display: flex;
  align-items: center;
  height: 100rpx;
}
.footer .sub_btn {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 72rpx;
  flex: 1;
  background-color: var(--themeColor);
  font-weight: 500;
  color: #FFFFFF;
  font-style: 28rpx;
  box-shadow: 0rpx 4rpx 16rpx 0rpx rgba(176, 135, 113, 0.3), inset 0rpx 2rpx 2rpx 0rpx rgba(255, 255, 255, 0.33);
  border-radius: 8rpx;
}
.footer .sub_btn .sheji {
  width: 28rpx;
  margin-right: 8rpx;
}
.footer .item {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  font-size: 20rpx;
  color: #666666;
  margin-right: 48rpx;
}
.footer .item .icon {
  width: 44rpx;
}
wechat_jiaxuan/pages/discover/discover.json
@@ -1,6 +1,8 @@
{
  "usingComponents": {
    "disProduct": "../../components/disProduct"
    "disProduct": "../../components/disProduct",
    "disCase": "../../components/disCase",
    "disRealpic": "../../components/disRealpic"
  },
  "navigationStyle": "custom",
  "navigationBarTextStyle": "white"
wechat_jiaxuan/pages/discover/discover.wxml
@@ -17,5 +17,7 @@
  <!--  -->
  <view class="main_content" style="height: calc( 100vh - {{menuButtonInfo.top}}px - 88rpx )">
    <disProduct wx:if="{{ activeTabs == '0' }}" />
    <disCase wx:if="{{ activeTabs == '1' }}" />
    <disRealpic wx:if="{{ activeTabs == '2' }}" />
  </view>
</view>
wechat_jiaxuan/pages/mine/mine.js
@@ -5,16 +5,26 @@
   * é¡µé¢çš„初始数据
   */
  data: {
    clientHeight: 0,
    clientTop: 0,
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面加载
   */
  onLoad(options) {
    const res = wx.getMenuButtonBoundingClientRect()
    this.setData({clientHeight: res.height})
    this.setData({clientTop: res.top})
  },
  changePath(e) {
    // é¡µé¢è·³è½¬
    let temp = ['mysub', 'collect', 'favorite', 'index']
    const index = e.currentTarget.dataset.index
    wx.navigateTo({
      url: `/pages/userinfo/${temp[index]}`,
    })
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
wechat_jiaxuan/pages/mine/mine.less
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
.container {
  background-color: #aca9a6;
  .navbar {
    padding-left: 30rpx;
    font-weight: 600;
    font-size: 38rpx;
    color: #FFFFFF;
  }
  .userinfo {
    display: flex;
    padding: 72rpx 40rpx 48rpx;
    color: #fff;
    font-size: 26rpx;
    .content {
      flex: 1;
      .header {
        display: flex;
        justify-content: space-between;
        align-items: center;
        .name {
          font-weight: 600;
          font-size: 36rpx;
        }
        .edit {
          width: 92rpx;
          height: 52rpx;
          line-height: 50rpx;
          text-align: center;
          border-radius: 32rpx;
          border: 1rpx solid rgba(255, 255, 255, 0.5);
        }
      }
      .addr {
        margin: 10rpx 0 12rpx;
      }
    }
    .avatar {
      width: 112rpx;
      height: 112rpx;
      background: #FFFFFF;
      box-shadow: 0rpx 2rpx 12rpx 0rpx rgba(0, 0, 0, 0.08);
      border-radius: 50%;
      border: 4rpx solid #FFFFFF;
      margin-right: 30rpx;
    }
  }
  .main_content{
    background-color: #fff;
    border-radius: 16rpx 16rpx 0rpx 0rpx;
    padding: 40rpx;
    .func_list{
      background: #F7F7F7;
      border-radius: 8rpx;
      margin-bottom: 40rpx;
      .line{
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 0 40rpx;
        height: 108rpx;
        .icon{
          width: 40rpx;
        }
      }
    }
  }
}
wechat_jiaxuan/pages/mine/mine.wxml
@@ -1,2 +1,40 @@
<!--pages/mine/mine.wxml-->
<text>pages/mine/mine.wxml</text>
<view class="container">
  <view class="navbar" style="padding-top: {{ clientTop }}px;height: {{clientHeight + clientTop}}px;">我的家</view>
  <view class="userinfo">
    <image class="avatar" src=""></image>
    <view class="content">
      <view class="header">
        <view class="name">苏灿</view>
        <view data-index="3" bindtap="changePath" class="edit">编辑</view>
      </view>
      <view class="addr">合肥莲花小区</view>
      <view class="detail">120m² ï½œ3室1厅1厨1卫</view>
    </view>
  </view>
  <view class="main_content">
    <view class="func_list">
      <view class="line" data-index="0" bindtap="changePath">
        <view class="name">我预约的</view>
        <image class="icon" src="../../static/icon/mine_ic_ar.png" mode="widthFix"></image>
      </view>
      <view class="line" data-index="1" bindtap="changePath">
        <view class="name">我收藏的</view>
        <image class="icon" src="../../static/icon/mine_ic_ar.png" mode="widthFix"></image>
      </view>
      <view class="line" data-index="2" bindtap="changePath">
        <view class="name">我喜欢的</view>
        <image class="icon" src="../../static/icon/mine_ic_ar.png" mode="widthFix"></image>
      </view>
    </view>
    <view class="func_list">
      <view class="line">
        <view class="name">员工绑定</view>
        <image class="icon" src="../../static/icon/mine_ic_ar.png" mode="widthFix"></image>
      </view>
      <view class="line">
        <view class="name">更多设置</view>
        <image class="icon" src="../../static/icon/mine_ic_ar.png" mode="widthFix"></image>
      </view>
    </view>
  </view>
</view>
wechat_jiaxuan/pages/mine/mine.wxss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
.container {
  background-color: #aca9a6;
}
.container .navbar {
  padding-left: 30rpx;
  font-weight: 600;
  font-size: 38rpx;
  color: #FFFFFF;
}
.container .userinfo {
  display: flex;
  padding: 72rpx 40rpx 48rpx;
  color: #fff;
  font-size: 26rpx;
}
.container .userinfo .content {
  flex: 1;
}
.container .userinfo .content .header {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.container .userinfo .content .header .name {
  font-weight: 600;
  font-size: 36rpx;
}
.container .userinfo .content .header .edit {
  width: 92rpx;
  height: 52rpx;
  line-height: 50rpx;
  text-align: center;
  border-radius: 32rpx;
  border: 1rpx solid rgba(255, 255, 255, 0.5);
}
.container .userinfo .content .addr {
  margin: 10rpx 0 12rpx;
}
.container .userinfo .avatar {
  width: 112rpx;
  height: 112rpx;
  background: #FFFFFF;
  box-shadow: 0rpx 2rpx 12rpx 0rpx rgba(0, 0, 0, 0.08);
  border-radius: 50%;
  border: 4rpx solid #FFFFFF;
  margin-right: 30rpx;
}
.container .main_content {
  background-color: #fff;
  border-radius: 16rpx 16rpx 0rpx 0rpx;
  padding: 40rpx;
}
.container .main_content .func_list {
  background: #F7F7F7;
  border-radius: 8rpx;
  margin-bottom: 40rpx;
}
.container .main_content .func_list .line {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 40rpx;
  height: 108rpx;
}
.container .main_content .func_list .line .icon {
  width: 40rpx;
}
wechat_jiaxuan/pages/sets/index.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
// pages/sets/index.js
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    show: false
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面加载
   */
  onLoad(options) {
  },
  showLogout() {
    this.setData({show: true})
  },
  onClose() {
    this.setData({show: false})
  },
  changeDeal(){
    wx.navigateTo({
      url: '/pages/sets/protocol',
    })
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
  onReady() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面显示
   */
  onShow() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面隐藏
   */
  onHide() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面卸载
   */
  onUnload() {
  },
  /**
   * é¡µé¢ç›¸å…³äº‹ä»¶å¤„理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
  },
  /**
   * é¡µé¢ä¸Šæ‹‰è§¦åº•事件的处理函数
   */
  onReachBottom() {
  },
  /**
   * ç”¨æˆ·ç‚¹å‡»å³ä¸Šè§’分享
   */
  onShareAppMessage() {
  }
})
wechat_jiaxuan/pages/sets/index.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
{
  "usingComponents": {
    "van-popup": "@vant/weapp/popup/index"
  },
  "navigationBarTitleText": "设置"
}
wechat_jiaxuan/pages/sets/index.less
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
.list{
  padding: 12rpx 32rpx;
  .line{
    display: flex;
    justify-content: space-between;
    align-items: center;
    height: 100rpx;
    border-bottom: 2rpx solid #E5E5E5;
    .name{
      font-size: 30rpx;
    }
    .icon{
      width: 40rpx;
    }
  }
}
.modal{
  width: 610rpx;
  height: 450rpx;
  background: #FFFFFF;
  border-radius: 8rpx;
  padding: 60rpx 40rpx 30rpx;
  .title{
    font-weight: 500;
    font-size: 36rpx;
    color: #222222;
    margin-bottom: 30rpx;
  }
  .text{
    color: #555555;
    margin-bottom: 30rpx;
    padding-bottom: 40rpx;
    border-bottom: 2rpx solid #E5E5E5;
  }
  .btns{
    display: flex;
    justify-content: space-between;
    .btn{
      width: 254rpx;
      height: 88rpx;
      display: flex;
      justify-content: center;
      align-items: center;
      background: #F7F7F7;
      border-radius: 8rpx;
      font-weight: 500;
      font-size: 30rpx;
      color: #555555;
    }
    .cancel{
      color: #fff;
      background-color: var(--themeColor);
    }
  }
}
wechat_jiaxuan/pages/sets/index.wxml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
<view class="container">
  <view class="list">
    <view class="line" bindtap="changeDeal">
      <view class="name">《ZBOM用户服务协议》</view>
      <image class="icon" src="../../static/icon/home_ar@2x.png" mode="widthFix"></image>
    </view>
    <view class="line" bindtap="changeDeal">
      <view class="name">《ZBOM用户隐私协议》</view>
      <image class="icon" src="../../static/icon/home_ar@2x.png" mode="widthFix"></image>
    </view>
    <view class="line" bindtap="showLogout">
      <view class="name">注销账号</view>
      <image class="icon" src="../../static/icon/home_ar@2x.png" mode="widthFix"></image>
    </view>
  </view>
  <!--  -->
  <van-popup show="{{ show }}" bind:close="onClose">
    <view class="modal">
        <view class="title">注销提醒</view>
        <view class="text">如您不再使用此账号,可以将其注销。账号成功注销后,其下所有数据将会被删除并将无法恢复,请谨慎操作</view>
        <view class="btns">
          <view class="btn">确认注销</view>
          <view class="btn cancel" bindtap="onClose">还是算了</view>
        </view>
    </view>
  </van-popup>
</view>
wechat_jiaxuan/pages/sets/index.wxss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
.list {
  padding: 12rpx 32rpx;
}
.list .line {
  display: flex;
  justify-content: space-between;
  align-items: center;
  height: 100rpx;
  border-bottom: 2rpx solid #E5E5E5;
}
.list .line .name {
  font-size: 30rpx;
}
.list .line .icon {
  width: 40rpx;
}
.modal {
  width: 610rpx;
  height: 450rpx;
  background: #FFFFFF;
  border-radius: 8rpx;
  padding: 60rpx 40rpx 30rpx;
}
.modal .title {
  font-weight: 500;
  font-size: 36rpx;
  color: #222222;
  margin-bottom: 30rpx;
}
.modal .text {
  color: #555555;
  margin-bottom: 30rpx;
  padding-bottom: 40rpx;
  border-bottom: 2rpx solid #E5E5E5;
}
.modal .btns {
  display: flex;
  justify-content: space-between;
}
.modal .btns .btn {
  width: 254rpx;
  height: 88rpx;
  display: flex;
  justify-content: center;
  align-items: center;
  background: #F7F7F7;
  border-radius: 8rpx;
  font-weight: 500;
  font-size: 30rpx;
  color: #555555;
}
.modal .btns .cancel {
  color: #fff;
  background-color: var(--themeColor);
}
wechat_jiaxuan/pages/sets/protocol.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
// pages/sets/protocol.js
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面加载
   */
  onLoad(options) {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
  onReady() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面显示
   */
  onShow() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面隐藏
   */
  onHide() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面卸载
   */
  onUnload() {
  },
  /**
   * é¡µé¢ç›¸å…³äº‹ä»¶å¤„理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
  },
  /**
   * é¡µé¢ä¸Šæ‹‰è§¦åº•事件的处理函数
   */
  onReachBottom() {
  },
  /**
   * ç”¨æˆ·ç‚¹å‡»å³ä¸Šè§’分享
   */
  onShareAppMessage() {
  }
})
wechat_jiaxuan/pages/sets/protocol.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,3 @@
{
  "usingComponents": {}
}
wechat_jiaxuan/pages/sets/protocol.wxml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,2 @@
<!--pages/sets/protocol.wxml-->
<text>pages/sets/protocol.wxml</text>
wechat_jiaxuan/pages/sets/protocol.wxss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1 @@
/* pages/sets/protocol.wxss */
wechat_jiaxuan/pages/userinfo/collect.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
// pages/userinfo/collect.js
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    activeTabs: '0'
  },
  tabsChange(e) {
    const activeTabs = e.currentTarget.dataset.val
    this.setData({ activeTabs })
  },
  handleDetail(e) {
    wx.navigateTo({
      url: '/pages/detailDis/product',
    })
  },
  onLoad(options) {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
  onReady() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面显示
   */
  onShow() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面隐藏
   */
  onHide() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面卸载
   */
  onUnload() {
  },
  /**
   * é¡µé¢ç›¸å…³äº‹ä»¶å¤„理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
  },
  /**
   * é¡µé¢ä¸Šæ‹‰è§¦åº•事件的处理函数
   */
  onReachBottom() {
  },
  /**
   * ç”¨æˆ·ç‚¹å‡»å³ä¸Šè§’分享
   */
  onShareAppMessage() {
  }
})
wechat_jiaxuan/pages/userinfo/collect.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,4 @@
{
  "usingComponents": {},
  "navigationBarTitleText": "我收藏的"
}
wechat_jiaxuan/pages/userinfo/collect.less
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,80 @@
.tabs{
  background-color: #fff;
  padding: 0 40rpx;
  height: 88rpx;
  display: flex;
  justify-content: space-around;
  align-items: center;
  .item{
    font-size: 30rpx;
    color: #666666;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    .border{
      width: 40rpx;
      height: 6rpx;
      background-color: #fff;
      margin-top: 16rpx;
      border-radius: 3rpx;
    }
  }
  .active{
    font-weight: 600;
    font-size: 34rpx;
    color: #222222;
    .border{
      background: #F4CA1C;
    }
  }
}
.list{
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  padding: 40rpx;
  width: 100%;
  .item{
    flex-shrink: 0;
    margin-bottom: 60rpx;
    width: 324rpx;
    .img_wrap{
      width: 324rpx;
      height: 182rpx;
      border-radius: 8rpx;
      overflow: hidden;
      position: relative;
      .img{
        width: 100%;
        height: 100%;
      }
      .new{
        width: 72rpx;
        position: absolute;
        left: 0;
        top: 0;
        z-index: 10;
      }
    }
    .name{
      margin: 26rpx 0 14rpx;
    }
    .info{
      display: flex;
      align-items: center;
      color: #666666;
      .icon{
        width: 28rpx;
        margin-right: 8rpx;
      }
      .num{
        margin-right: 16rpx;
      }
      .primary{
        color: var(--themeColor);
      }
    }
  }
}
wechat_jiaxuan/pages/userinfo/collect.wxml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
<view class="container">
  <view class="tabs">
    <view class="item {{ activeTabs == '0' ? 'active' : '' }}" data-val="0" bindtap="tabsChange">
      <view class="name">产品</view>
      <view class="border"></view>
    </view>
    <view class="item {{ activeTabs == '1' ? 'active' : '' }}" data-val="1" bindtap="tabsChange">
      <view class="name">案例</view>
      <view class="border"></view>
    </view>
    <view class="item {{ activeTabs == '2' ? 'active' : '' }}" data-val="2" bindtap="tabsChange">
      <view class="name">实景</view>
      <view class="border"></view>
    </view>
  </view>
  <view class="list">
    <view class="item" bindtap="handleDetail">
      <view class="img_wrap">
        <image src="../../static/icon/test.png" class="img"></image>
        <image wx:if="{{ true }}" class="new" src="../../static/icon/chanpin_ic_new@2x.png" mode="widthFix"></image>
      </view>
      <view class="name">钢琴曲</view>
      <view class="info">
        <image wx:if="{{ false }}" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
        <image wx:else="" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
        <text class="num {{true ? 'primary' : ''}}">34</text>
        <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
        <text>1000</text>
      </view>
    </view>
    <view class="item" bindtap="handleDetail">
      <view class="img_wrap">
        <image src="../../static/icon/test.png" class="img"></image>
        <image wx:if="{{ true }}" class="new" src="../../static/icon/chanpin_ic_new@2x.png" mode="widthFix"></image>
      </view>
      <view class="name">钢琴曲</view>
      <view class="info">
        <image wx:if="{{ false }}" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
        <image wx:else="" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
        <text class="num {{true ? 'primary' : ''}}">34</text>
        <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
        <text>1000</text>
      </view>
    </view>
    <view class="item" bindtap="handleDetail">
      <view class="img_wrap">
        <image src="../../static/icon/test.png" class="img"></image>
        <image wx:if="{{ true }}" class="new" src="../../static/icon/chanpin_ic_new@2x.png" mode="widthFix"></image>
      </view>
      <view class="name">钢琴曲</view>
      <view class="info">
        <image wx:if="{{ false }}" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
        <image wx:else="" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
        <text class="num {{true ? 'primary' : ''}}">34</text>
        <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
        <text>1000</text>
      </view>
    </view>
  </view>
</view>
wechat_jiaxuan/pages/userinfo/collect.wxss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
.tabs {
  background-color: #fff;
  padding: 0 40rpx;
  height: 88rpx;
  display: flex;
  justify-content: space-around;
  align-items: center;
}
.tabs .item {
  font-size: 30rpx;
  color: #666666;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}
.tabs .item .border {
  width: 40rpx;
  height: 6rpx;
  background-color: #fff;
  margin-top: 16rpx;
  border-radius: 3rpx;
}
.tabs .active {
  font-weight: 600;
  font-size: 34rpx;
  color: #222222;
}
.tabs .active .border {
  background: #F4CA1C;
}
.list {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  padding: 40rpx;
  width: 100%;
}
.list .item {
  flex-shrink: 0;
  margin-bottom: 60rpx;
  width: 324rpx;
}
.list .item .img_wrap {
  width: 324rpx;
  height: 182rpx;
  border-radius: 8rpx;
  overflow: hidden;
  position: relative;
}
.list .item .img_wrap .img {
  width: 100%;
  height: 100%;
}
.list .item .img_wrap .new {
  width: 72rpx;
  position: absolute;
  left: 0;
  top: 0;
  z-index: 10;
}
.list .item .name {
  margin: 26rpx 0 14rpx;
}
.list .item .info {
  display: flex;
  align-items: center;
  color: #666666;
}
.list .item .info .icon {
  width: 28rpx;
  margin-right: 8rpx;
}
.list .item .info .num {
  margin-right: 16rpx;
}
.list .item .info .primary {
  color: var(--themeColor);
}
wechat_jiaxuan/pages/userinfo/favorite.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
// pages/userinfo/collect.js
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    activeTabs: '0'
  },
  tabsChange(e) {
    const activeTabs = e.currentTarget.dataset.val
    this.setData({ activeTabs })
  },
  handleDetail(e) {
    wx.navigateTo({
      url: '/pages/detailDis/product',
    })
  },
  onLoad(options) {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
  onReady() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面显示
   */
  onShow() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面隐藏
   */
  onHide() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面卸载
   */
  onUnload() {
  },
  /**
   * é¡µé¢ç›¸å…³äº‹ä»¶å¤„理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
  },
  /**
   * é¡µé¢ä¸Šæ‹‰è§¦åº•事件的处理函数
   */
  onReachBottom() {
  },
  /**
   * ç”¨æˆ·ç‚¹å‡»å³ä¸Šè§’分享
   */
  onShareAppMessage() {
  }
})
wechat_jiaxuan/pages/userinfo/favorite.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,4 @@
{
  "usingComponents": {},
  "navigationBarTitleText": "我喜欢的"
}
wechat_jiaxuan/pages/userinfo/favorite.less
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,80 @@
/* pages/userinfo/favorite.wxss */
.tabs{
  background-color: #fff;
  padding: 0 40rpx;
  height: 88rpx;
  display: flex;
  justify-content: space-around;
  align-items: center;
  .item{
    font-size: 30rpx;
    color: #666666;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    .border{
      width: 40rpx;
      height: 6rpx;
      background-color: #fff;
      margin-top: 16rpx;
      border-radius: 3rpx;
    }
  }
  .active{
    font-weight: 600;
    font-size: 34rpx;
    color: #222222;
    .border{
      background: #F4CA1C;
    }
  }
}
.list{
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  padding: 40rpx;
  width: 100%;
  .item{
    flex-shrink: 0;
    margin-bottom: 60rpx;
    width: 324rpx;
    .img_wrap{
      width: 324rpx;
      height: 182rpx;
      border-radius: 8rpx;
      overflow: hidden;
      position: relative;
      .img{
        width: 100%;
        height: 100%;
      }
      .new{
        width: 72rpx;
        position: absolute;
        left: 0;
        top: 0;
        z-index: 10;
      }
    }
    .name{
      margin: 26rpx 0 14rpx;
    }
    .info{
      display: flex;
      align-items: center;
      color: #666666;
      .icon{
        width: 28rpx;
        margin-right: 8rpx;
      }
      .num{
        margin-right: 16rpx;
      }
      .primary{
        color: var(--themeColor);
      }
    }
  }
}
wechat_jiaxuan/pages/userinfo/favorite.wxml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
<view class="container">
  <view class="tabs">
    <view class="item {{ activeTabs == '0' ? 'active' : '' }}" data-val="0" bindtap="tabsChange">
      <view class="name">产品</view>
      <view class="border"></view>
    </view>
    <view class="item {{ activeTabs == '1' ? 'active' : '' }}" data-val="1" bindtap="tabsChange">
      <view class="name">案例</view>
      <view class="border"></view>
    </view>
    <view class="item {{ activeTabs == '2' ? 'active' : '' }}" data-val="2" bindtap="tabsChange">
      <view class="name">实景</view>
      <view class="border"></view>
    </view>
  </view>
  <view class="list">
    <view class="item" bindtap="handleDetail">
      <view class="img_wrap">
        <image src="../../static/icon/test.png" class="img"></image>
        <image wx:if="{{ true }}" class="new" src="../../static/icon/chanpin_ic_new@2x.png" mode="widthFix"></image>
      </view>
      <view class="name">钢琴曲</view>
      <view class="info">
        <image wx:if="{{ false }}" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
        <image wx:else="" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
        <text class="num {{true ? 'primary' : ''}}">34</text>
        <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
        <text>1000</text>
      </view>
    </view>
    <view class="item" bindtap="handleDetail">
      <view class="img_wrap">
        <image src="../../static/icon/test.png" class="img"></image>
        <image wx:if="{{ true }}" class="new" src="../../static/icon/chanpin_ic_new@2x.png" mode="widthFix"></image>
      </view>
      <view class="name">钢琴曲</view>
      <view class="info">
        <image wx:if="{{ false }}" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
        <image wx:else="" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
        <text class="num {{true ? 'primary' : ''}}">34</text>
        <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
        <text>1000</text>
      </view>
    </view>
    <view class="item" bindtap="handleDetail">
      <view class="img_wrap">
        <image src="../../static/icon/test.png" class="img"></image>
        <image wx:if="{{ true }}" class="new" src="../../static/icon/chanpin_ic_new@2x.png" mode="widthFix"></image>
      </view>
      <view class="name">钢琴曲</view>
      <view class="info">
        <image wx:if="{{ false }}" class="icon" src="../../static/icon/detail_nav_collect.png" mode="widthFix"></image>
        <image wx:else="" class="icon" src="../../static/icon/detail_nav_collected.png" mode="widthFix"></image>
        <text class="num {{true ? 'primary' : ''}}">34</text>
        <image class="icon" src="../../static/icon/zixun_ic_liulan.png" mode="widthFix"></image>
        <text>1000</text>
      </view>
    </view>
  </view>
</view>
wechat_jiaxuan/pages/userinfo/favorite.wxss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,80 @@
/* pages/userinfo/favorite.wxss */
.tabs {
  background-color: #fff;
  padding: 0 40rpx;
  height: 88rpx;
  display: flex;
  justify-content: space-around;
  align-items: center;
}
.tabs .item {
  font-size: 30rpx;
  color: #666666;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}
.tabs .item .border {
  width: 40rpx;
  height: 6rpx;
  background-color: #fff;
  margin-top: 16rpx;
  border-radius: 3rpx;
}
.tabs .active {
  font-weight: 600;
  font-size: 34rpx;
  color: #222222;
}
.tabs .active .border {
  background: #F4CA1C;
}
.list {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  padding: 40rpx;
  width: 100%;
}
.list .item {
  flex-shrink: 0;
  margin-bottom: 60rpx;
  width: 324rpx;
}
.list .item .img_wrap {
  width: 324rpx;
  height: 182rpx;
  border-radius: 8rpx;
  overflow: hidden;
  position: relative;
}
.list .item .img_wrap .img {
  width: 100%;
  height: 100%;
}
.list .item .img_wrap .new {
  width: 72rpx;
  position: absolute;
  left: 0;
  top: 0;
  z-index: 10;
}
.list .item .name {
  margin: 26rpx 0 14rpx;
}
.list .item .info {
  display: flex;
  align-items: center;
  color: #666666;
}
.list .item .info .icon {
  width: 28rpx;
  margin-right: 8rpx;
}
.list .item .info .num {
  margin-right: 16rpx;
}
.list .item .info .primary {
  color: var(--themeColor);
}
wechat_jiaxuan/pages/userinfo/index.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
// pages/userinfo/index.js
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    name: "",
    // åŸŽå¸‚。地址
    region: [],
    address: ''
  },
  onLoad(options) {
  },
  onSubmit() {
  },
  changeAddr() {
    console.log('点击了');
    wx.chooseLocation({
      type: 'wgs84',
      success: (res) => {
        console.log('res', res);
      }
    })
  },
  bindRegionChange(e) {
    console.log('picker发送选择改变,携带值为', e.detail.value)
    this.setData({
      region: e.detail.value
    })
  },
  selMedia() {
    console.log('dianjile');
    wx.chooseMedia({
      count: 1,
      mediaType: ['image'],
      sourceType: ['album', 'camera'],
      maxDuration: 16,
      camera: 'back',
      success(res) {
        console.log(res.tempFiles[0].tempFilePath)
        console.log(res.tempFiles[0].size)
      }
    })
  },
  onReady() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面显示
   */
  onShow() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面隐藏
   */
  onHide() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面卸载
   */
  onUnload() {
  },
  /**
   * é¡µé¢ç›¸å…³äº‹ä»¶å¤„理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
  },
  /**
   * é¡µé¢ä¸Šæ‹‰è§¦åº•事件的处理函数
   */
  onReachBottom() {
  },
  /**
   * ç”¨æˆ·ç‚¹å‡»å³ä¸Šè§’分享
   */
  onShareAppMessage() {
  }
})
wechat_jiaxuan/pages/userinfo/index.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
{
  "usingComponents": {
    "van-field": "@vant/weapp/field/index"
  },
  "navigationBarTitleText": "个人资料"
}
wechat_jiaxuan/pages/userinfo/index.less
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
.avatar{
  margin: 52rpx auto 40rpx;
  width: 160rpx;
  height: 160rpx;
  border-radius: 50%;
  box-shadow: 0rpx 2rpx 12rpx 0rpx rgba(0,0,0,0.08);
  border: 4rpx solid #FFFFFF;
  border: 1px solid;
}
.avatar_btn{
  width: 168rpx;
  height: 60rpx;
  margin: 0 auto 40rpx;
  line-height: 58rpx;
  text-align: center;
  border-radius: 30rpx;
  border: 1rpx solid #CDA38D;
  font-size: 26rpx;
  color: var(--themeColor);
}
.list{
  padding: 0 40rpx;
  .line{
    height: 78rpx;
    margin-bottom: 40rpx;
    display: flex;
    align-items: center;
    .label{
      width: 110rpx;
      font-size: 30rpx;
      color: #777777;
    }
    .input{
      flex: 1;
      color: #111111;
    }
    .icon{
      width: 40rpx;
    }
  }
  .val{
    flex: 1;
    height: 78rpx;
    padding-left: 32rpx;
    border-bottom: 1rpx solid #f7f7f7;
    display: flex;
    align-items: center;
    justify-content: space-between;
  }
  .save{
    color: #fff;
    display: flex;
    justify-content: center;
    align-items: center;
    width: 670rpx;
    height: 88rpx;
    background: var(--themeColor);
    border-radius: 8rpx;
    font-weight: 500;
    font-size: 32rpx;
  }
}
wechat_jiaxuan/pages/userinfo/index.wxml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
<view class="container">
  <image class="avatar" src="" mode="widthFix"></image>
  <view bindtap="selMedia" class="avatar_btn">更换头像</view>
  <view class="list">
    <view class="line">
      <view class="label">昵称</view>
      <van-field type="text" class="input" model:value="{{ name }}" maxlength="{{ 18 }}" clearable />
    </view>
    <view class="line">
      <view class="label">姓名</view>
      <van-field type="text" class="input" model:value="{{ name }}" maxlength="{{ 18 }}" clearable />
    </view>
    <view class="line">
      <view class="label">电话</view>
      <van-field type="number" class="input" model:value="{{ name }}" maxlength="{{ 11 }}" clearable />
    </view>
    <view class="line">
      <view class="label">城市</view>
      <view class="val">
        <view class="input">
          <picker mode="region" bindchange="bindRegionChange" value="{{region}}">
            <view class="picker {{ region.length > 0 ? '' : 'placeholder9' }}">
              {{ region.length == 0 ? '选择城市' : '' }}{{region[0]}}{{region[1]}}{{region[2]}}
            </view>
          </picker>
        </view>
        <image class="icon" src="../../static/icon/home_ar@2x.png" mode="widthFix"></image>
      </view>
    </view>
    <view class="line">
      <view class="label">地址</view>
      <view class="val" bindtap="changeAddr">
        <view class="input">{{ address }}</view>
        <image class="icon" src="../../static/icon/home_ar@2x.png" mode="widthFix"></image>
      </view>
    </view>
    <view class="line">
      <view class="label">小区</view>
      <van-field type="text" class="input" model:value="{{ name }}" maxlength="{{ 15 }}" clearable />
    </view>
    <view class="line">
      <view class="label">面积</view>
      <van-field type="text" class="input" model:value="{{ name }}" maxlength="{{ 15 }}" clearable />
    </view>
    <view class="line">
      <view class="label">户型</view>
      <van-field type="text" class="input" model:value="{{ name }}" maxlength="{{ 15 }}" clearable />
    </view>
    <view bindtap="onSubmit" class="save">保存</view>
  </view>
  <!--  -->
</view>
wechat_jiaxuan/pages/userinfo/index.wxss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,62 @@
.avatar {
  margin: 52rpx auto 40rpx;
  width: 160rpx;
  height: 160rpx;
  border-radius: 50%;
  box-shadow: 0rpx 2rpx 12rpx 0rpx rgba(0, 0, 0, 0.08);
  border: 4rpx solid #FFFFFF;
  border: 1px solid;
}
.avatar_btn {
  width: 168rpx;
  height: 60rpx;
  margin: 0 auto 40rpx;
  line-height: 58rpx;
  text-align: center;
  border-radius: 30rpx;
  border: 1rpx solid #CDA38D;
  font-size: 26rpx;
  color: var(--themeColor);
}
.list {
  padding: 0 40rpx;
}
.list .line {
  height: 78rpx;
  margin-bottom: 40rpx;
  display: flex;
  align-items: center;
}
.list .line .label {
  width: 110rpx;
  font-size: 30rpx;
  color: #777777;
}
.list .line .input {
  flex: 1;
  color: #111111;
}
.list .line .icon {
  width: 40rpx;
}
.list .val {
  flex: 1;
  height: 78rpx;
  padding-left: 32rpx;
  border-bottom: 1rpx solid #f7f7f7;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.list .save {
  color: #fff;
  display: flex;
  justify-content: center;
  align-items: center;
  width: 670rpx;
  height: 88rpx;
  background: var(--themeColor);
  border-radius: 8rpx;
  font-weight: 500;
  font-size: 32rpx;
}
wechat_jiaxuan/pages/userinfo/mysub.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
// pages/userinfo/mysub.js
Page({
  /**
   * é¡µé¢çš„初始数据
   */
  data: {
    activeTabs: '0'
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面加载
   */
  onLoad(options) {
  },
  tabsChange(e) {
    const activeTabs = e.currentTarget.dataset.val
    this.setData({ activeTabs })
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面初次渲染完成
   */
  onReady() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面显示
   */
  onShow() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面隐藏
   */
  onHide() {
  },
  /**
   * ç”Ÿå‘½å‘¨æœŸå‡½æ•°--监听页面卸载
   */
  onUnload() {
  },
  /**
   * é¡µé¢ç›¸å…³äº‹ä»¶å¤„理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
  },
  /**
   * é¡µé¢ä¸Šæ‹‰è§¦åº•事件的处理函数
   */
  onReachBottom() {
  },
  /**
   * ç”¨æˆ·ç‚¹å‡»å³ä¸Šè§’分享
   */
  onShareAppMessage() {
  }
})
wechat_jiaxuan/pages/userinfo/mysub.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,4 @@
{
  "usingComponents": {},
  "navigationBarTitleText": "我的预约"
}
wechat_jiaxuan/pages/userinfo/mysub.less
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
.container{
  background-color: #f7f7f7;
}
.tabs{
  background-color: #fff;
  padding: 0 40rpx;
  height: 88rpx;
  display: flex;
  justify-content: space-around;
  align-items: center;
  .item{
    font-size: 30rpx;
    color: #666666;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    .border{
      width: 40rpx;
      height: 6rpx;
      background-color: #fff;
      margin-top: 16rpx;
      border-radius: 3rpx;
    }
  }
  .active{
    font-weight: 600;
    font-size: 34rpx;
    color: #222222;
    .border{
      background: #F4CA1C;
    }
  }
}
.list{
  padding: 30rpx 40rpx;
  .item{
    width: 670rpx;
    background: linear-gradient( 180deg, #F2E7E1 0%, #FEFEFD 30%, #FFFFFF 100%);
    border-radius: 8rpx;
    padding: 30rpx;
    margin-bottom: 30rpx;
    .header{
      font-size: 26rpx;
      display: flex;
      align-items: center;
      margin-bottom: 30rpx;
      .name{
        font-weight: 500;
        font-size: 32rpx;
        margin-right: 18rpx;
      }
    }
    .line{
      display: flex;
      align-items: center;
      min-height: 40rpx;
      margin-bottom: 20rpx;
      .label{
        color: #666666;
        width: 140rpx;
        font-size: 28rpx;
      }
      .spe{
        letter-spacing: 56rpx;
      }
      .val{
        color: #333333;
      }
    }
    .time{
      display: flex;
      color: #999999;
      font-size: 24rpx;
      margin-top: 0rpx;
    }
  }
}
wechat_jiaxuan/pages/userinfo/mysub.wxml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,110 @@
<view class="container">
  <view class="tabs">
    <view class="item {{ activeTabs == '0' ? 'active' : '' }}" data-val="0" bindtap="tabsChange">
      <view class="name">需求</view>
      <view class="border"></view>
    </view>
    <view class="item {{ activeTabs == '1' ? 'active' : '' }}" data-val="1" bindtap="tabsChange">
      <view class="name">预约量尺</view>
      <view class="border"></view>
    </view>
    <view class="item {{ activeTabs == '2' ? 'active' : '' }}" data-val="2" bindtap="tabsChange">
      <view class="name">预算</view>
      <view class="border"></view>
    </view>
  </view>
  <view class="list">
    <view class="item">
      <view class="header">
        <view class="name">name</view>
        <view class="phone">198898</view>
      </view>
      <block wx:if="{{ false }}">
        <view class="line">
          <view class="label"><text class="spe">性</text>别</view>
          <view class="val">男</view>
        </view>
        <view class="line">
          <view class="label"><text class="spe">å¹´</text>龄</view>
          <view class="val">男</view>
        </view>
        <view class="line">
          <view class="label">所在城市</view>
          <view class="val">男</view>
        </view>
        <view class="line">
          <view class="label">户型信息</view>
          <view class="val">男</view>
        </view>
      </block>
      <!-- é¢„ç®— -->
      <block wx:if="{{ true }}">
        <view class="line">
          <view class="label">房屋类型</view>
          <view class="val">男</view>
        </view>
        <view class="line">
          <view class="label">户型信息</view>
          <view class="val">男</view>
        </view>
        <view class="line">
          <view class="label">房屋面积</view>
          <view class="val">男</view>
        </view>
        <view class="line">
          <view class="label">装修预算</view>
          <view class="val">男</view>
        </view>
      </block>
      <view class="time">
        <view>提交时间:123213</view>
      </view>
    </view>
    <view class="item">
      <view class="header">
        <view class="name">name</view>
        <view class="phone">198898</view>
      </view>
      <block wx:if="{{ false }}">
        <view class="line">
          <view class="label"><text class="spe">性</text>别</view>
          <view class="val">男</view>
        </view>
        <view class="line">
          <view class="label"><text class="spe">å¹´</text>龄</view>
          <view class="val">男</view>
        </view>
        <view class="line">
          <view class="label">所在城市</view>
          <view class="val">男</view>
        </view>
        <view class="line">
          <view class="label">户型信息</view>
          <view class="val">男</view>
        </view>
      </block>
      <!-- é¢„ç®— -->
      <block wx:if="{{ true }}">
        <view class="line">
          <view class="label">房屋类型</view>
          <view class="val">男</view>
        </view>
        <view class="line">
          <view class="label">户型信息</view>
          <view class="val">男</view>
        </view>
        <view class="line">
          <view class="label">房屋面积</view>
          <view class="val">男</view>
        </view>
        <view class="line">
          <view class="label">装修预算</view>
          <view class="val">男</view>
        </view>
      </block>
      <view class="time">
        <view>提交时间:123213</view>
      </view>
    </view>
  </view>
</view>
wechat_jiaxuan/pages/userinfo/mysub.wxss
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,78 @@
.container {
  background-color: #f7f7f7;
}
.tabs {
  background-color: #fff;
  padding: 0 40rpx;
  height: 88rpx;
  display: flex;
  justify-content: space-around;
  align-items: center;
}
.tabs .item {
  font-size: 30rpx;
  color: #666666;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}
.tabs .item .border {
  width: 40rpx;
  height: 6rpx;
  background-color: #fff;
  margin-top: 16rpx;
  border-radius: 3rpx;
}
.tabs .active {
  font-weight: 600;
  font-size: 34rpx;
  color: #222222;
}
.tabs .active .border {
  background: #F4CA1C;
}
.list {
  padding: 30rpx 40rpx;
}
.list .item {
  width: 670rpx;
  background: linear-gradient(180deg, #F2E7E1 0%, #FEFEFD 30%, #FFFFFF 100%);
  border-radius: 8rpx;
  padding: 30rpx;
  margin-bottom: 30rpx;
}
.list .item .header {
  font-size: 26rpx;
  display: flex;
  align-items: center;
  margin-bottom: 30rpx;
}
.list .item .header .name {
  font-weight: 500;
  font-size: 32rpx;
  margin-right: 18rpx;
}
.list .item .line {
  display: flex;
  align-items: center;
  min-height: 40rpx;
  margin-bottom: 20rpx;
}
.list .item .line .label {
  color: #666666;
  width: 140rpx;
  font-size: 28rpx;
}
.list .item .line .spe {
  letter-spacing: 56rpx;
}
.list .item .line .val {
  color: #333333;
}
.list .item .time {
  display: flex;
  color: #999999;
  font-size: 24rpx;
  margin-top: 0rpx;
}
wechat_jiaxuan/project.private.config.json
@@ -1,16 +1,17 @@
{
  "projectname": "wechat_jiaxuan",
  "setting": {
    "compileHotReLoad": true
    "compileHotReLoad": true,
    "urlCheck": false
  },
  "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json ä¸­çš„相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
  "libVersion": "3.4.9",
  "libVersion": "2.22.1",
  "condition": {
    "miniprogram": {
      "list": [
        {
          "name": "",
          "pathName": "pages/discover/discover",
          "pathName": "pages/index/index",
          "query": "",
          "launchMode": "default",
          "scene": null
@@ -31,21 +32,14 @@
        },
        {
          "name": "",
          "pathName": "pages/consult/detail",
          "pathName": "pages/mine/mine",
          "query": "",
          "launchMode": "default",
          "scene": null
        },
        {
          "name": "",
          "pathName": "pages/store/store",
          "query": "",
          "launchMode": "default",
          "scene": null
        },
        {
          "name": "",
          "pathName": "pages/store/info",
          "pathName": "pages/sets/index",
          "query": "",
          "launchMode": "default",
          "scene": null
wechat_jiaxuan/static/icon/mine_ic_ar.png