Merge branch 'feature/mall_product' of http://117.33.142.185:3000/zenghuapei/cyywl_server into feature/mall_product
|
@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.security.PermitAll;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -28,11 +29,12 @@ public class AliPayNotifyController {
|
||||||
@Autowired
|
@Autowired
|
||||||
private StoreOrderService storeOrderService;
|
private StoreOrderService storeOrderService;
|
||||||
|
|
||||||
|
@PermitAll
|
||||||
@PostMapping("pay_notify")
|
@PostMapping("pay_notify")
|
||||||
public Object payNotify(HttpServletRequest request, @RequestBody Map<String, String> params) {
|
public Object payNotify(HttpServletRequest request, Map<String, String> params) {
|
||||||
return storeOrderService.aliNotify(request, params);
|
return storeOrderService.aliNotify(request, params);
|
||||||
}
|
}
|
||||||
|
@PermitAll
|
||||||
@PostMapping("refund_notify")
|
@PostMapping("refund_notify")
|
||||||
public Object refundNotify(HttpServletRequest request, @RequestBody Map<String, String> params) {
|
public Object refundNotify(HttpServletRequest request, @RequestBody Map<String, String> params) {
|
||||||
return storeOrderService.refundNotify(request, params);
|
return storeOrderService.refundNotify(request, params);
|
||||||
|
|
|
@ -89,8 +89,8 @@ public class RechargeOrderController {
|
||||||
@Operation(summary = "获得订单分页")
|
@Operation(summary = "获得订单分页")
|
||||||
@PreAuthorize("@ss.hasPermission('shop:recharge-order:query')")
|
@PreAuthorize("@ss.hasPermission('shop:recharge-order:query')")
|
||||||
public CommonResult<PageResult<RechargeOrderRespVO>> getRechargeOrderPage(@Valid RechargeOrderPageReqVO pageVO) {
|
public CommonResult<PageResult<RechargeOrderRespVO>> getRechargeOrderPage(@Valid RechargeOrderPageReqVO pageVO) {
|
||||||
PageResult<RechargeOrderDO> pageResult = rechargeOrderService.getRechargeOrderPage(pageVO);
|
PageResult<RechargeOrderRespVO> pageResult = rechargeOrderService.getRechargeOrderPage(pageVO);
|
||||||
return success(RechargeOrderConvert.INSTANCE.convertPage(pageResult));
|
return success(pageResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,10 @@ public class RechargeOrderPageReqVO extends PageParam {
|
||||||
@Schema(description = "用户姓名", example = "张三")
|
@Schema(description = "用户姓名", example = "张三")
|
||||||
private String realName;
|
private String realName;
|
||||||
|
|
||||||
|
|
||||||
|
@Schema(description = "推广员名称", example = "张三")
|
||||||
|
private String nickname;
|
||||||
|
|
||||||
@Schema(description = "用户电话")
|
@Schema(description = "用户电话")
|
||||||
private String userPhone;
|
private String userPhone;
|
||||||
|
|
||||||
|
@ -120,4 +124,5 @@ public class RechargeOrderPageReqVO extends PageParam {
|
||||||
@Schema(description = "第三方支付流水号")
|
@Schema(description = "第三方支付流水号")
|
||||||
private String paySerialNumber;
|
private String paySerialNumber;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,5 +15,9 @@ public class RechargeOrderRespVO extends RechargeOrderBaseVO {
|
||||||
|
|
||||||
@Schema(description = "创建时间")
|
@Schema(description = "创建时间")
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
@Schema(description = "组织名称")
|
||||||
|
private String parentOrganizationName;
|
||||||
|
@Schema(description = "推广员名称")
|
||||||
|
private String nickname;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,8 +6,10 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
import cn.iocoder.yudao.module.shop.dal.dataobject.recharge.RechargeOrderDO;
|
import cn.iocoder.yudao.module.shop.dal.dataobject.recharge.RechargeOrderDO;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import cn.iocoder.yudao.module.shop.controller.admin.recharge.vo.*;
|
import cn.iocoder.yudao.module.shop.controller.admin.recharge.vo.*;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单 Mapper
|
* 订单 Mapper
|
||||||
|
@ -54,7 +56,7 @@ public interface RechargeOrderMapper extends BaseMapperX<RechargeOrderDO> {
|
||||||
.eqIfPresent(RechargeOrderDO::getPaySerialNumber, reqVO.getPaySerialNumber())
|
.eqIfPresent(RechargeOrderDO::getPaySerialNumber, reqVO.getPaySerialNumber())
|
||||||
.orderByDesc(RechargeOrderDO::getId));
|
.orderByDesc(RechargeOrderDO::getId));
|
||||||
}
|
}
|
||||||
|
IPage<RechargeOrderRespVO> findListPage(IPage<RechargeOrderRespVO> page, @Param("data") RechargeOrderPageReqVO data);
|
||||||
default List<RechargeOrderDO> selectList(RechargeOrderExportReqVO reqVO) {
|
default List<RechargeOrderDO> selectList(RechargeOrderExportReqVO reqVO) {
|
||||||
return selectList(new LambdaQueryWrapperX<RechargeOrderDO>()
|
return selectList(new LambdaQueryWrapperX<RechargeOrderDO>()
|
||||||
.eqIfPresent(RechargeOrderDO::getOrderId, reqVO.getOrderId())
|
.eqIfPresent(RechargeOrderDO::getOrderId, reqVO.getOrderId())
|
||||||
|
|
|
@ -1166,6 +1166,7 @@ public class StoreOrderServiceImpl extends ServiceImpl<StoreOrderMapper, StoreOr
|
||||||
public Object aliNotify(HttpServletRequest request, Map<String, String> params) {
|
public Object aliNotify(HttpServletRequest request, Map<String, String> params) {
|
||||||
boolean verifyResult = false;
|
boolean verifyResult = false;
|
||||||
try {
|
try {
|
||||||
|
Map<String, String[]> map = request.getParameterMap();
|
||||||
verifyResult = AlipaySignature.rsaCheckV1(params, aliPayProperties.getAlipayPublicKey(), "UTF-8", "RSA2");
|
verifyResult = AlipaySignature.rsaCheckV1(params, aliPayProperties.getAlipayPublicKey(), "UTF-8", "RSA2");
|
||||||
log.debug("支付宝验证签名结果:{}", verifyResult);
|
log.debug("支付宝验证签名结果:{}", verifyResult);
|
||||||
} catch (AlipayApiException e) {
|
} catch (AlipayApiException e) {
|
||||||
|
|
|
@ -58,7 +58,7 @@ public interface RechargeOrderService {
|
||||||
* @param pageReqVO 分页查询
|
* @param pageReqVO 分页查询
|
||||||
* @return 订单分页
|
* @return 订单分页
|
||||||
*/
|
*/
|
||||||
PageResult<RechargeOrderDO> getRechargeOrderPage(RechargeOrderPageReqVO pageReqVO);
|
PageResult<RechargeOrderRespVO> getRechargeOrderPage(RechargeOrderPageReqVO pageReqVO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得订单列表, 用于 Excel 导出
|
* 获得订单列表, 用于 Excel 导出
|
||||||
|
|
|
@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.security.core.LoginUser;
|
||||||
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
||||||
import cn.iocoder.yudao.module.shop.response.member.MemberHeadResponse;
|
import cn.iocoder.yudao.module.shop.response.member.MemberHeadResponse;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
@ -80,8 +81,10 @@ public class RechargeOrderServiceImpl implements RechargeOrderService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResult<RechargeOrderDO> getRechargeOrderPage(RechargeOrderPageReqVO pageReqVO) {
|
public PageResult<RechargeOrderRespVO> getRechargeOrderPage(RechargeOrderPageReqVO pageReqVO) {
|
||||||
return rechargeOrderMapper.selectPage(pageReqVO);
|
Page<RechargeOrderRespVO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
|
||||||
|
rechargeOrderMapper.findListPage(page,pageReqVO);
|
||||||
|
return new PageResult<>(page.getRecords(), page.getTotal());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -56,7 +56,7 @@ public class AliPayStrategy implements IPayStrategy {
|
||||||
request.setBizContent(bizContent.toString());
|
request.setBizContent(bizContent.toString());
|
||||||
AlipayTradeWapPayResponse response = null;
|
AlipayTradeWapPayResponse response = null;
|
||||||
try {
|
try {
|
||||||
response = alipayClient.pageExecute(request,"get");
|
response = alipayClient.pageExecute(request);
|
||||||
orderResponse.setBody(response.getBody());
|
orderResponse.setBody(response.getBody());
|
||||||
} catch (AlipayApiException e) {
|
} catch (AlipayApiException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
|
|
@ -9,4 +9,48 @@
|
||||||
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
|
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
<select id="findListPage" resultType="cn.iocoder.yudao.module.shop.controller.admin.recharge.vo.RechargeOrderRespVO">
|
||||||
|
select
|
||||||
|
a.order_id,
|
||||||
|
a.pay_serial_number,
|
||||||
|
a.out_trade_no,
|
||||||
|
a.pay_time,
|
||||||
|
b.nickname,
|
||||||
|
a.real_name,
|
||||||
|
a.uid,
|
||||||
|
a.user_phone,
|
||||||
|
a.confirm_phone,
|
||||||
|
a.pay_type,
|
||||||
|
a.paid,
|
||||||
|
d.parent_organization_name
|
||||||
|
from cy_recharge_order a
|
||||||
|
left join member_user b on a.promoter_id = b.id
|
||||||
|
left join member_promoter c on a.promoter_id=c.user_id
|
||||||
|
left join system_dept d on d.id = c.dept_id
|
||||||
|
<where>
|
||||||
|
and a.paid=1
|
||||||
|
<if test="data.orderId !=null and data.orderId!=''">
|
||||||
|
and a.order_id like CONCAT('%',#{data.orderId},'%')
|
||||||
|
</if>
|
||||||
|
<if test="data.payserialNumber !=null and data.payserialNumber!=''">
|
||||||
|
and a.pay_serial_number like CONCAT('%',#{data.payserialNumber},'%')
|
||||||
|
</if>
|
||||||
|
<if test="data.nickname !=null and data.nickname!=''">
|
||||||
|
and a.nickname like CONCAT('%',#{data.nickname},'%')
|
||||||
|
</if>
|
||||||
|
<if test="data.realName !=null and data.realName!=''">
|
||||||
|
and a.real_name like CONCAT('%',#{data.realName},'%')
|
||||||
|
</if>
|
||||||
|
<if test="data.userPhone !=null and data.userPhone!=''">
|
||||||
|
and a.user_phone like CONCAT('%',#{data.userPhone},'%')
|
||||||
|
</if>
|
||||||
|
<if test="data.payTime !=null ">
|
||||||
|
and a.pay_time >=#{data.payTime[0]}
|
||||||
|
</if>
|
||||||
|
<if test="data.payTime !=null ">
|
||||||
|
and a.pay_time <=#{data.payTime[1]}
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
@ -209,7 +209,7 @@ ali:
|
||||||
merchantPrivateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCAhydIKD244uxHaCAE8N4KA0kfK2UkhXayUwarvc09s/JHC7WkrtwgmeHx+JyFA/QQA1WHQREJ8jyS9HrgasmmA+BaE0vGwbu/c0R4Cde5dLeITZb4w4X1RlH+xjtF34pKLH3oVi29q9jUTRii41eCBeztL/XcbJDsxAnCNnuxcak0gk4cl8j9aoMBP/opIc5sTDSqYFSSTDSMPGh90M6KowFtCHyVZxEszcIRX9cRIuf9KtfGvBzljJMjNGshIMuaHVCFpy72E0s50HmMxC4Kodhp6HEdLV1GUBZy87PYiKTqp9WVn0CndzcfmmdUUXVUvqWPKzRN3YSxExJ0Z5KFAgMBAAECggEABovbulciXaphMnnhN581D/l+3fGN40BQ/WAxNMokDAKAUpIMHGkzmQ19bp+lCTlcUvx4fL0ZqxIFd86v+4I05xnHcY8OCv+PGn86e4q0zCNfvbeF+wGqbwW342whVLvABWsitpS9G64HCzkqChHeQScgHCyXLzTwZL7PaG7x+eWnQ3WyA5KlCpUQWOz6OBPD7flkaflVRbDDZqmhcpEwwSXC9vSQb5+E0BZ118+5nJA65Wi/EPtqCzWX4k6ioiQcN5OeJrScZ4fnQm4h4j+TRLeKqkAKCZFpAZcB7RERxA/4Mzz9mEzHOBzSbrUU+miJ3oSkd4S4ldrOZU4EVkI1AQKBgQDe5t+Qij0hOPQaMpiM2hiQnMAI3TzHRbrYf6JUlMqdzad9oasY2ap+iit60TD9OLwjRGzjy7S9WL2bUgmmU4/sOjR0NMl8z3iUTYun6EubNoMUiu9UhQXBThxBCZv/H2agJ4Uswq2lBjUuGyp383lj9qSkScngGknYgrUd/pUa5QKBgQCTnNzCsIU/1N3fhzpvh1RmUwz8JalcmPNxQqrxE53Je+hVQ4BoeVMCov8U62TjBrxmHFEDVwXqAlRUUOWsWu4ac7V/VvFlwQoqPjkjNteOW6aO+BMDAlb2FVg5GzFy/MvLw4EUtU/Sx8EmWZpyaIzjRV4IUHx4WzJoORKEUIH/IQKBgQCh+9F37p3h6Murxh0KLuwvG1qKlow2nDveXVKQeNiNuQgAyl3WX0gBUVOrmx4oxvQiBPXEzSJ5f2W62/FbR9qNZvb7g+jwpK0RyRC2Yp+fGgxD/3tRRqIaCjOKJ/uPeThRJqcnEgqypEI9UUyZgvwyYuje4yirjS8hAkuwknO06QKBgHH4tnbX5jovuBPDjHnaSm8rBqaUyZxGOAimCehTVgvgULWshbOkoVQy17KmQWIMrGBG0sI6acWRgN0NDRgzqQ3hcyxby8zd7GRLYMBwsqQm3YYbwkobf1tHhbOp7Fc1GoE8dSixCW3cb6SVoGtfkBBWWdEfm8st1tCj6EkjBAwhAoGAShd1PY/QOEJ6Cj9IDXvD25DAh0dKs54PRxENetbIxPgYpH7db6n/smmbwM69U4TXZyFfqme1Bc0JwM2J7D6gs4OV88AhXJvfj091eJQhYC5e80Eo8dySserwLp8/ka6FV/EFUplg/DD4JR/jbVzO2fbOPCLm6I+sZqG3K7mg6IM=
|
merchantPrivateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCAhydIKD244uxHaCAE8N4KA0kfK2UkhXayUwarvc09s/JHC7WkrtwgmeHx+JyFA/QQA1WHQREJ8jyS9HrgasmmA+BaE0vGwbu/c0R4Cde5dLeITZb4w4X1RlH+xjtF34pKLH3oVi29q9jUTRii41eCBeztL/XcbJDsxAnCNnuxcak0gk4cl8j9aoMBP/opIc5sTDSqYFSSTDSMPGh90M6KowFtCHyVZxEszcIRX9cRIuf9KtfGvBzljJMjNGshIMuaHVCFpy72E0s50HmMxC4Kodhp6HEdLV1GUBZy87PYiKTqp9WVn0CndzcfmmdUUXVUvqWPKzRN3YSxExJ0Z5KFAgMBAAECggEABovbulciXaphMnnhN581D/l+3fGN40BQ/WAxNMokDAKAUpIMHGkzmQ19bp+lCTlcUvx4fL0ZqxIFd86v+4I05xnHcY8OCv+PGn86e4q0zCNfvbeF+wGqbwW342whVLvABWsitpS9G64HCzkqChHeQScgHCyXLzTwZL7PaG7x+eWnQ3WyA5KlCpUQWOz6OBPD7flkaflVRbDDZqmhcpEwwSXC9vSQb5+E0BZ118+5nJA65Wi/EPtqCzWX4k6ioiQcN5OeJrScZ4fnQm4h4j+TRLeKqkAKCZFpAZcB7RERxA/4Mzz9mEzHOBzSbrUU+miJ3oSkd4S4ldrOZU4EVkI1AQKBgQDe5t+Qij0hOPQaMpiM2hiQnMAI3TzHRbrYf6JUlMqdzad9oasY2ap+iit60TD9OLwjRGzjy7S9WL2bUgmmU4/sOjR0NMl8z3iUTYun6EubNoMUiu9UhQXBThxBCZv/H2agJ4Uswq2lBjUuGyp383lj9qSkScngGknYgrUd/pUa5QKBgQCTnNzCsIU/1N3fhzpvh1RmUwz8JalcmPNxQqrxE53Je+hVQ4BoeVMCov8U62TjBrxmHFEDVwXqAlRUUOWsWu4ac7V/VvFlwQoqPjkjNteOW6aO+BMDAlb2FVg5GzFy/MvLw4EUtU/Sx8EmWZpyaIzjRV4IUHx4WzJoORKEUIH/IQKBgQCh+9F37p3h6Murxh0KLuwvG1qKlow2nDveXVKQeNiNuQgAyl3WX0gBUVOrmx4oxvQiBPXEzSJ5f2W62/FbR9qNZvb7g+jwpK0RyRC2Yp+fGgxD/3tRRqIaCjOKJ/uPeThRJqcnEgqypEI9UUyZgvwyYuje4yirjS8hAkuwknO06QKBgHH4tnbX5jovuBPDjHnaSm8rBqaUyZxGOAimCehTVgvgULWshbOkoVQy17KmQWIMrGBG0sI6acWRgN0NDRgzqQ3hcyxby8zd7GRLYMBwsqQm3YYbwkobf1tHhbOp7Fc1GoE8dSixCW3cb6SVoGtfkBBWWdEfm8st1tCj6EkjBAwhAoGAShd1PY/QOEJ6Cj9IDXvD25DAh0dKs54PRxENetbIxPgYpH7db6n/smmbwM69U4TXZyFfqme1Bc0JwM2J7D6gs4OV88AhXJvfj091eJQhYC5e80Eo8dySserwLp8/ka6FV/EFUplg/DD4JR/jbVzO2fbOPCLm6I+sZqG3K7mg6IM=
|
||||||
alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgIcnSCg9uOLsR2ggBPDeCgNJHytlJIV2slMGq73NPbPyRwu1pK7cIJnh8fichQP0EANVh0ERCfI8kvR64GrJpgPgWhNLxsG7v3NEeAnXuXS3iE2W+MOF9UZR/sY7Rd+KSix96FYtvavY1E0YouNXggXs7S/13GyQ7MQJwjZ7sXGpNIJOHJfI/WqDAT/6KSHObEw0qmBUkkw0jDxofdDOiqMBbQh8lWcRLM3CEV/XESLn/SrXxrwc5YyTIzRrISDLmh1Qhacu9hNLOdB5jMQuCqHYaehxHS1dRlAWcvOz2Iik6qfVlZ9Ap3c3H5pnVFF1VL6ljys0Td2EsRMSdGeShQIDAQAB
|
alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAgIcnSCg9uOLsR2ggBPDeCgNJHytlJIV2slMGq73NPbPyRwu1pK7cIJnh8fichQP0EANVh0ERCfI8kvR64GrJpgPgWhNLxsG7v3NEeAnXuXS3iE2W+MOF9UZR/sY7Rd+KSix96FYtvavY1E0YouNXggXs7S/13GyQ7MQJwjZ7sXGpNIJOHJfI/WqDAT/6KSHObEw0qmBUkkw0jDxofdDOiqMBbQh8lWcRLM3CEV/XESLn/SrXxrwc5YyTIzRrISDLmh1Qhacu9hNLOdB5jMQuCqHYaehxHS1dRlAWcvOz2Iik6qfVlZ9Ap3c3H5pnVFF1VL6ljys0Td2EsRMSdGeShQIDAQAB
|
||||||
gatewayUrl: https://openapi.alipay.com/gateway.do
|
gatewayUrl: https://openapi.alipay.com/gateway.do
|
||||||
notify-url: http://yuxy.perrymake.com/app-api/pay/ali/pay_notify
|
notify-url: http://yuxy.perrymake.com/admin-api/notify/ali/pay_notify
|
||||||
# 芋道配置项,设置当前项目所有自定义的配置
|
# 芋道配置项,设置当前项目所有自定义的配置
|
||||||
yudao:
|
yudao:
|
||||||
captcha:
|
captcha:
|
||||||
|
|
|
@ -146,7 +146,8 @@ yudao:
|
||||||
- /admin-api/pay/notify/callback/* # 支付回调通知,不携带租户编号
|
- /admin-api/pay/notify/callback/* # 支付回调通知,不携带租户编号
|
||||||
- /jmreport/* # 积木报表,无法携带租户编号
|
- /jmreport/* # 积木报表,无法携带租户编号
|
||||||
- /admin-api/mp/open/** # 微信公众号开放平台,微信回调接口,无法携带租户编号
|
- /admin-api/mp/open/** # 微信公众号开放平台,微信回调接口,无法携带租户编号
|
||||||
- /admin-api/notify/wxpay/**
|
- /admin-api/notify/wxpay/** # 微信公众号开放平台,微信支付回调接口,无法携带租户编号
|
||||||
|
- /admin-api/notify/ali/pay_notify #支付宝回调
|
||||||
ignore-tables:
|
ignore-tables:
|
||||||
- system_tenant
|
- system_tenant
|
||||||
- system_tenant_package
|
- system_tenant_package
|
||||||
|
|
|
@ -84,6 +84,9 @@ export const DICT_TYPE = {
|
||||||
PROMOTION_COUPON_TAKE_TYPE: 'promotion_coupon_take_type', // 优惠劵的领取方式
|
PROMOTION_COUPON_TAKE_TYPE: 'promotion_coupon_take_type', // 优惠劵的领取方式
|
||||||
PROMOTION_ACTIVITY_STATUS: 'promotion_activity_status', // 优惠活动的状态
|
PROMOTION_ACTIVITY_STATUS: 'promotion_activity_status', // 优惠活动的状态
|
||||||
PROMOTION_CONDITION_TYPE: 'promotion_condition_type', // 营销的条件类型枚举
|
PROMOTION_CONDITION_TYPE: 'promotion_condition_type', // 营销的条件类型枚举
|
||||||
|
|
||||||
|
|
||||||
|
PAY_TYPE:'pay_type'
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -3,15 +3,24 @@
|
||||||
|
|
||||||
<!-- 搜索工作栏 -->
|
<!-- 搜索工作栏 -->
|
||||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
|
||||||
<el-form-item label="订单号" prop="orderId">
|
<el-form-item label="订单编号" prop="orderId">
|
||||||
<el-input v-model="queryParams.orderId" placeholder="请输入订单号" clearable @keyup.enter.native="handleQuery"/>
|
<el-input v-model="queryParams.orderId" placeholder="请输入订单号" clearable @keyup.enter.native="handleQuery"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="交易流水号" prop="paySerialNumber">
|
||||||
<el-form-item label="用户姓名" prop="realName">
|
<el-input v-model="queryParams.paySerialNumber" placeholder="请输入交易流水号" clearable @keyup.enter.native="handleQuery"/>
|
||||||
<el-input v-model="queryParams.realName" placeholder="请输入用户姓名" clearable @keyup.enter.native="handleQuery"/>
|
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="用户电话" prop="userPhone">
|
<el-form-item label="下单时间" prop="payTime">
|
||||||
<el-input v-model="queryParams.userPhone" placeholder="请输入用户电话" clearable @keyup.enter.native="handleQuery"/>
|
<el-date-picker v-model="queryParams.payTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" type="daterange"
|
||||||
|
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:59:59']" clearable @keyup.enter.native="handleQuery"/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="推广员" prop="nickname">
|
||||||
|
<el-input v-model="queryParams.nickname" placeholder="请输入推广员" clearable @keyup.enter.native="handleQuery"/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="会员名称" prop="realName">
|
||||||
|
<el-input v-model="queryParams.realName" placeholder="请输入会员名称" clearable @keyup.enter.native="handleQuery"/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="充值号码" prop="userPhone">
|
||||||
|
<el-input v-model="queryParams.userPhone" placeholder="请输入充值号码" clearable @keyup.enter.native="handleQuery"/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
|
||||||
|
@ -21,10 +30,10 @@
|
||||||
|
|
||||||
<!-- 操作工具栏 -->
|
<!-- 操作工具栏 -->
|
||||||
<el-row :gutter="10" class="mb8">
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-col :span="1.5">
|
<!-- <el-col :span="1.5">-->
|
||||||
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
|
<!-- <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"-->
|
||||||
v-hasPermi="['shop:recharge-order:create']">新增</el-button>
|
<!-- v-hasPermi="['shop:recharge-order:create']">新增</el-button>-->
|
||||||
</el-col>
|
<!-- </el-col>-->
|
||||||
<el-col :span="1.5">
|
<el-col :span="1.5">
|
||||||
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
|
<el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" :loading="exportLoading"
|
||||||
v-hasPermi="['shop:recharge-order:export']">导出</el-button>
|
v-hasPermi="['shop:recharge-order:export']">导出</el-button>
|
||||||
|
@ -34,62 +43,32 @@
|
||||||
|
|
||||||
<!-- 列表 -->
|
<!-- 列表 -->
|
||||||
<el-table v-loading="loading" :data="list">
|
<el-table v-loading="loading" :data="list">
|
||||||
<el-table-column label="订单ID" align="center" prop="id" />
|
<el-table-column label="订单编号" align="center" prop="orderId" />
|
||||||
<el-table-column label="订单号" align="center" prop="orderId" />
|
<el-table-column label="交易流水号" align="center" prop="paySerialNumber" />
|
||||||
<el-table-column label="用户id" align="center" prop="uid" />
|
<el-table-column label="订单支付时间" align="center" prop="payTime" width="180"/>
|
||||||
<el-table-column label="用户姓名" align="center" prop="realName" />
|
<el-table-column label="推广员" align="center" prop="parentOrganizationName" >
|
||||||
<el-table-column label="用户电话" align="center" prop="userPhone" />
|
<template v-slot="scope">
|
||||||
<el-table-column label="确认手机号" align="center" prop="confirmPhone" />
|
<span>{{ scope.row.parentOrganizationName }}-{{ scope.row.nickname }}</span>
|
||||||
<el-table-column label="订单商品总数" align="center" prop="totalNum" />
|
</template>
|
||||||
<el-table-column label="订单总价" align="center" prop="totalPrice" />
|
</el-table-column>
|
||||||
<el-table-column label="实际支付金额" align="center" prop="payPrice" />
|
<el-table-column label="会员名称" align="center" prop="realName" />
|
||||||
|
<el-table-column label="会员账号" align="center" prop="uid" />
|
||||||
|
<el-table-column label="充值号码" align="center" prop="userPhone" />
|
||||||
|
<el-table-column label="确认号码" align="center" prop="confirmPhone" />
|
||||||
|
<el-table-column label="订单总价(元)" align="center" prop="totalPrice" />
|
||||||
|
<el-table-column label="实际金额(元)" align="center" prop="payPrice" />
|
||||||
|
<el-table-column label="支付方式" align="center" prop="payType" >
|
||||||
|
<template v-slot="scope">
|
||||||
|
<dict-tag :type="DICT_TYPE.PAY_TYPE" :value="scope.row.payType"/>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="支付状态" align="center" prop="paid" />
|
<el-table-column label="支付状态" align="center" prop="paid" />
|
||||||
<el-table-column label="支付截止时间" align="center" prop="payTime" width="180">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<span>{{ parseTime(scope.row.payTime) }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="支付截止时间" align="center" prop="payEndTime" width="180">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<span>{{ parseTime(scope.row.payEndTime) }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="支付方式" align="center" prop="payType" />
|
|
||||||
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<span>{{ parseTime(scope.row.createTime) }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="订单状态(0:待发货;1:待收货;2:已收货,待评价;3:已完成;)" align="center" prop="status" />
|
|
||||||
<el-table-column label="0 未退款 1 申请中 2 已退款 3 退款中" align="center" prop="refundStatus" />
|
|
||||||
<el-table-column label="退款图片" align="center" prop="refundReasonWapImg" />
|
|
||||||
<el-table-column label="退款用户说明" align="center" prop="refundReasonWapExplain" />
|
|
||||||
<el-table-column label="前台退款原因" align="center" prop="refundReasonWap" />
|
|
||||||
<el-table-column label="不退款的理由" align="center" prop="refundReason" />
|
|
||||||
<el-table-column label="退款时间" align="center" prop="refundReasonTime" width="180">
|
|
||||||
<template v-slot="scope">
|
|
||||||
<span>{{ parseTime(scope.row.refundReasonTime) }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="退款金额" align="center" prop="refundPrice" />
|
|
||||||
<el-table-column label="备注" align="center" prop="mark" />
|
|
||||||
<el-table-column label="管理员备注" align="center" prop="remark" />
|
|
||||||
<el-table-column label="成本价" align="center" prop="cost" />
|
|
||||||
<el-table-column label="支付渠道(0微信公众号1微信小程序2余额)" align="center" prop="isChannel" />
|
|
||||||
<el-table-column label="消息提醒" align="center" prop="isRemind" />
|
|
||||||
<el-table-column label="后台是否删除" align="center" prop="isSystemDel" />
|
|
||||||
<el-table-column label="订单类型:0-普通订单,1-视频号订单" align="center" prop="type" />
|
|
||||||
<el-table-column label="商品总价" align="center" prop="proTotalPrice" />
|
|
||||||
<el-table-column label="改价前支付金额" align="center" prop="beforePayPrice" />
|
|
||||||
<el-table-column label="是否改价,0-否,1-是" align="center" prop="isAlterPrice" />
|
|
||||||
<el-table-column label="商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号" align="center" prop="outTradeNo" />
|
|
||||||
<el-table-column label="第三方支付流水号" align="center" prop="paySerialNumber" />
|
|
||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||||
<template v-slot="scope">
|
<template v-slot="scope">
|
||||||
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
|
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
|
||||||
v-hasPermi="['shop:recharge-order:update']">修改</el-button>
|
v-hasPermi="['shop:recharge-order:update']">发起退款</el-button>
|
||||||
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
|
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
|
||||||
v-hasPermi="['shop:recharge-order:delete']">删除</el-button>
|
v-hasPermi="['shop:recharge-order:delete']">同意退款</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
@ -97,131 +76,21 @@
|
||||||
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
|
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
|
||||||
@pagination="getList"/>
|
@pagination="getList"/>
|
||||||
|
|
||||||
<!-- 对话框(添加 / 修改) -->
|
|
||||||
<el-dialog :title="title" :visible.sync="open" width="500px" v-dialogDrag append-to-body>
|
|
||||||
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
|
||||||
<el-form-item label="订单号" prop="orderId">
|
|
||||||
<el-input v-model="form.orderId" placeholder="请输入订单号" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="用户id" prop="uid">
|
|
||||||
<el-input v-model="form.uid" placeholder="请输入用户id" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="用户姓名" prop="realName">
|
|
||||||
<el-input v-model="form.realName" placeholder="请输入用户姓名" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="用户电话" prop="userPhone">
|
|
||||||
<el-input v-model="form.userPhone" placeholder="请输入用户电话" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="确认手机号" prop="confirmPhone">
|
|
||||||
<el-input v-model="form.confirmPhone" placeholder="请输入确认手机号" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="订单商品总数" prop="totalNum">
|
|
||||||
<el-input v-model="form.totalNum" placeholder="请输入订单商品总数" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="订单总价" prop="totalPrice">
|
|
||||||
<el-input v-model="form.totalPrice" placeholder="请输入订单总价" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="实际支付金额" prop="payPrice">
|
|
||||||
<el-input v-model="form.payPrice" placeholder="请输入实际支付金额" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="支付状态" prop="paid">
|
|
||||||
<el-input v-model="form.paid" placeholder="请输入支付状态" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="支付截止时间" prop="payTime">
|
|
||||||
<el-date-picker clearable v-model="form.payTime" type="date" value-format="timestamp" placeholder="选择支付截止时间" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="支付截止时间" prop="payEndTime">
|
|
||||||
<el-date-picker clearable v-model="form.payEndTime" type="date" value-format="timestamp" placeholder="选择支付截止时间" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="支付方式" prop="payType">
|
|
||||||
<el-select v-model="form.payType" placeholder="请选择支付方式">
|
|
||||||
<el-option label="请选择字典生成" value="" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="订单状态(0:待发货;1:待收货;2:已收货,待评价;3:已完成;)" prop="status">
|
|
||||||
<el-radio-group v-model="form.status">
|
|
||||||
<el-radio label="1">请选择字典生成</el-radio>
|
|
||||||
</el-radio-group>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="0 未退款 1 申请中 2 已退款 3 退款中" prop="refundStatus">
|
|
||||||
<el-radio-group v-model="form.refundStatus">
|
|
||||||
<el-radio label="1">请选择字典生成</el-radio>
|
|
||||||
</el-radio-group>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="退款图片" prop="refundReasonWapImg">
|
|
||||||
<el-input v-model="form.refundReasonWapImg" placeholder="请输入退款图片" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="退款用户说明" prop="refundReasonWapExplain">
|
|
||||||
<el-input v-model="form.refundReasonWapExplain" placeholder="请输入退款用户说明" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="前台退款原因" prop="refundReasonWap">
|
|
||||||
<el-input v-model="form.refundReasonWap" placeholder="请输入前台退款原因" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="不退款的理由" prop="refundReason">
|
|
||||||
<el-input v-model="form.refundReason" placeholder="请输入不退款的理由" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="退款时间" prop="refundReasonTime">
|
|
||||||
<el-date-picker clearable v-model="form.refundReasonTime" type="date" value-format="timestamp" placeholder="选择退款时间" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="退款金额" prop="refundPrice">
|
|
||||||
<el-input v-model="form.refundPrice" placeholder="请输入退款金额" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="备注" prop="mark">
|
|
||||||
<el-input v-model="form.mark" placeholder="请输入备注" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="管理员备注" prop="remark">
|
|
||||||
<el-input v-model="form.remark" placeholder="请输入管理员备注" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="成本价" prop="cost">
|
|
||||||
<el-input v-model="form.cost" placeholder="请输入成本价" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="支付渠道(0微信公众号1微信小程序2余额)" prop="isChannel">
|
|
||||||
<el-input v-model="form.isChannel" placeholder="请输入支付渠道(0微信公众号1微信小程序2余额)" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="消息提醒" prop="isRemind">
|
|
||||||
<el-input v-model="form.isRemind" placeholder="请输入消息提醒" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="后台是否删除" prop="isSystemDel">
|
|
||||||
<el-radio-group v-model="form.isSystemDel">
|
|
||||||
<el-radio label="1">请选择字典生成</el-radio>
|
|
||||||
</el-radio-group>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="订单类型:0-普通订单,1-视频号订单" prop="type">
|
|
||||||
<el-select v-model="form.type" placeholder="请选择订单类型:0-普通订单,1-视频号订单">
|
|
||||||
<el-option label="请选择字典生成" value="" />
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="商品总价" prop="proTotalPrice">
|
|
||||||
<el-input v-model="form.proTotalPrice" placeholder="请输入商品总价" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="改价前支付金额" prop="beforePayPrice">
|
|
||||||
<el-input v-model="form.beforePayPrice" placeholder="请输入改价前支付金额" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="是否改价,0-否,1-是" prop="isAlterPrice">
|
|
||||||
<el-radio-group v-model="form.isAlterPrice">
|
|
||||||
<el-radio label="1">请选择字典生成</el-radio>
|
|
||||||
</el-radio-group>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号" prop="outTradeNo">
|
|
||||||
<el-input v-model="form.outTradeNo" placeholder="请输入商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号" />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="第三方支付流水号" prop="paySerialNumber">
|
|
||||||
<el-input v-model="form.paySerialNumber" placeholder="请输入第三方支付流水号" />
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
|
||||||
<div slot="footer" class="dialog-footer">
|
|
||||||
<el-button type="primary" @click="submitForm">确 定</el-button>
|
|
||||||
<el-button @click="cancel">取 消</el-button>
|
|
||||||
</div>
|
|
||||||
</el-dialog>
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { createRechargeOrder, updateRechargeOrder, deleteRechargeOrder, getRechargeOrder, getRechargeOrderPage, exportRechargeOrderExcel } from "@/api/shop/rechargeOrder";
|
import { createRechargeOrder, updateRechargeOrder, deleteRechargeOrder, getRechargeOrder, getRechargeOrderPage, exportRechargeOrderExcel } from "@/api/shop/rechargeOrder";
|
||||||
|
import {DICT_TYPE} from "@/utils/dict";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "RechargeOrder",
|
name: "RechargeOrder",
|
||||||
|
computed: {
|
||||||
|
DICT_TYPE() {
|
||||||
|
return DICT_TYPE
|
||||||
|
}
|
||||||
|
},
|
||||||
components: {
|
components: {
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
@ -246,6 +115,7 @@ export default {
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
orderId: null,
|
orderId: null,
|
||||||
uid: null,
|
uid: null,
|
||||||
|
nickname:null,
|
||||||
realName: null,
|
realName: null,
|
||||||
userPhone: null,
|
userPhone: null,
|
||||||
confirmPhone: null,
|
confirmPhone: null,
|
||||||
|
|
|
@ -17,7 +17,9 @@
|
||||||
mapActions,
|
mapActions,
|
||||||
mapGetters
|
mapGetters
|
||||||
} from 'vuex'
|
} from 'vuex'
|
||||||
|
import {
|
||||||
|
memberGradeInfo
|
||||||
|
} from '@/api/member.js';
|
||||||
export default {
|
export default {
|
||||||
globalData: {
|
globalData: {
|
||||||
spid: 0,
|
spid: 0,
|
||||||
|
@ -29,6 +31,16 @@
|
||||||
id: 0
|
id: 0
|
||||||
},
|
},
|
||||||
onLaunch: function(option) {
|
onLaunch: function(option) {
|
||||||
|
const res = memberGradeInfo().then((res) =>{
|
||||||
|
if(res.data.some((item) => !!!parseInt(item.isExist))){
|
||||||
|
uni.setTabBarItem({
|
||||||
|
index: 2,
|
||||||
|
text: 'text',
|
||||||
|
pagePath: '/pages/member_equity/index'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
let that = this;
|
let that = this;
|
||||||
// #ifdef H5
|
// #ifdef H5
|
||||||
uni.getSystemInfo({
|
uni.getSystemInfo({
|
||||||
|
|
|
@ -1,7 +1,14 @@
|
||||||
<template>
|
<template>
|
||||||
<view class="box">
|
<view class="box">
|
||||||
|
<image class="phone-money" src='../../static/images/phoneMoney.png'></image>
|
||||||
<view class="box-member">
|
<view class="box-member">
|
||||||
<view :class="[activeIndex.includes(index) && 'member-active',!!parseInt(item.isExist) && 'member-disbled', 'member-item']" v-for="(item,index) in memberData" :key="index" @click="handleMember(item,index)">
|
<view class="box-title">
|
||||||
|
<image src='../../static/images/memberTitle.png'></image>
|
||||||
|
</view>
|
||||||
|
<view class="member-list">
|
||||||
|
<view
|
||||||
|
:class="[activeIndex.includes(index) && 'member-active',!!parseInt(item.isExist) && 'member-disbled', 'member-item']"
|
||||||
|
v-for="(item,index) in memberData" :key="index" @click="handleMember(item,index)">
|
||||||
<view class="member-image">
|
<view class="member-image">
|
||||||
<image src='../../static/images/f.png'></image>
|
<image src='../../static/images/f.png'></image>
|
||||||
</view>
|
</view>
|
||||||
|
@ -14,15 +21,22 @@
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
</view>
|
||||||
<view class="box-privilege">
|
<view class="box-privilege">
|
||||||
|
<view class="box-title">
|
||||||
|
<image src='../../static/images/memberTitle.png'></image>
|
||||||
|
</view>
|
||||||
|
<view class="privilege-list">
|
||||||
<view class="privilege-item" v-for="(item,index) in 4" :key="index">
|
<view class="privilege-item" v-for="(item,index) in 4" :key="index">
|
||||||
<image src='../../static/images/f.png'></image>
|
<image src='../../static/images/vip1.png'></image>
|
||||||
<text class="privilege-text">
|
<text class="privilege-text">
|
||||||
开通立享大额话费返送。
|
开通立享大额话费返送。
|
||||||
</text>
|
</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<paymentMember :payMode='payMode' :pay_close="pay_close" @onChangeFun='onChangeFun' :payInfo="payInfo"></paymentMember>
|
</view>
|
||||||
|
<paymentMember :payMode='payMode' :pay_close="pay_close" @onChangeFun='onChangeFun' :payInfo="payInfo">
|
||||||
|
</paymentMember>
|
||||||
<button class="box-submit" @click="goPay">立即充值</button>
|
<button class="box-submit" @click="goPay">立即充值</button>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
@ -32,7 +46,7 @@
|
||||||
memberGradeInfo
|
memberGradeInfo
|
||||||
} from '@/api/member.js';
|
} from '@/api/member.js';
|
||||||
import paymentMember from '@/components/paymentMember';
|
import paymentMember from '@/components/paymentMember';
|
||||||
import store from '@/store/index';
|
import store from '@/store/index';
|
||||||
export default {
|
export default {
|
||||||
name: "member_application",
|
name: "member_application",
|
||||||
components: {
|
components: {
|
||||||
|
@ -40,8 +54,8 @@ import store from '@/store/index';
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
memberData:[],
|
memberData: [],
|
||||||
payInfo:{
|
payInfo: {
|
||||||
userPhone: '',
|
userPhone: '',
|
||||||
confirmPhone: '',
|
confirmPhone: '',
|
||||||
orderInfos: []
|
orderInfos: []
|
||||||
|
@ -60,23 +74,31 @@ import store from '@/store/index';
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
pay_close: false,
|
pay_close: false,
|
||||||
activeIndex:[],
|
activeIndex: [],
|
||||||
form: {
|
form: {
|
||||||
phone:''
|
phone: ''
|
||||||
},
|
},
|
||||||
|
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
async onLoad() {
|
async onLoad() {
|
||||||
|
// uni.setTabBarItem({
|
||||||
|
// index: 2,
|
||||||
|
// text: 'text',
|
||||||
|
// pagePath: '/pages/member_equity/index'
|
||||||
|
// })
|
||||||
|
// uni.switchTab({
|
||||||
|
// url:'/pages/member_equity/index'
|
||||||
|
// })
|
||||||
const res = await memberGradeInfo()
|
const res = await memberGradeInfo()
|
||||||
this.memberData = res.data
|
this.memberData = res.data
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleMember(value,index){
|
handleMember(value, index) {
|
||||||
if(!!parseInt(value.isExist)) return
|
if (!!parseInt(value.isExist)) return
|
||||||
if(this.activeIndex.includes(index)){
|
if (this.activeIndex.includes(index)) {
|
||||||
this.activeIndex = this.activeIndex.filter(item => item !== index)
|
this.activeIndex = this.activeIndex.filter(item => item !== index)
|
||||||
}else{
|
} else {
|
||||||
this.activeIndex.push(index)
|
this.activeIndex.push(index)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -85,12 +107,12 @@ import store from '@/store/index';
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
goPay() {
|
goPay() {
|
||||||
if(this.activeIndex.length){
|
if (this.activeIndex.length) {
|
||||||
this.$set(this, 'pay_close', true);
|
this.$set(this, 'pay_close', true);
|
||||||
const orderInfos = this.activeIndex.map((item) => {
|
const orderInfos = this.activeIndex.map((item) => {
|
||||||
return {
|
return {
|
||||||
...this.memberData[item],
|
...this.memberData[item],
|
||||||
gearId:this.memberData[item].id
|
gearId: this.memberData[item].id
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
this.payInfo = {
|
this.payInfo = {
|
||||||
|
@ -146,28 +168,79 @@ import store from '@/store/index';
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.box {
|
.box {
|
||||||
padding: 0 40rpx;
|
position: relative;
|
||||||
|
padding: 207rpx 40rpx 0 40rpx;
|
||||||
|
height: 100vh;
|
||||||
|
background: url(../../static/images/bg.png);
|
||||||
|
background-size: cover;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-attachment: fixed;
|
||||||
|
|
||||||
|
.phone-money {
|
||||||
|
width: 604rpx;
|
||||||
|
height: 140rpx;
|
||||||
|
position: absolute;
|
||||||
|
top: 2%;
|
||||||
|
left: 15%;
|
||||||
|
}
|
||||||
|
|
||||||
.box-member {
|
.box-member {
|
||||||
border-radius: 20rpx;
|
box-shadow: 0px 0px 15px -5px #000;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin-top: 207rpx;
|
border-radius: 20px;
|
||||||
padding: 83rpx 30rpx 30rpx 30rpx;
|
box-sizing: border-box;
|
||||||
background: linear-gradient(#FFD55D,#FD752F);
|
border: 1px solid transparent;
|
||||||
|
background-image: linear-gradient(#FFD55D, #FD752F),
|
||||||
|
linear-gradient(to bottom, #FFD55D, #FDCB3B);
|
||||||
|
background-origin: border-box;
|
||||||
|
background-clip: content-box, border-box;
|
||||||
|
border-radius: 20px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.box-title {
|
||||||
|
position: absolute;
|
||||||
|
top: -5.5%;
|
||||||
|
left: -203rpx;
|
||||||
|
margin-left: 50%;
|
||||||
|
|
||||||
|
image {
|
||||||
|
width: 406rpx;
|
||||||
|
height: 87rpx;
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '会员详情介绍';
|
||||||
|
position: absolute;
|
||||||
|
font-size: 34rpx;
|
||||||
|
font-family: Adobe Heiti Std;
|
||||||
|
font-weight: normal;
|
||||||
|
color: #FF4B47;
|
||||||
|
text-shadow: 1px 5px 5px rgba(255, 195, 30, 0.78);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.member-list {
|
||||||
|
margin: 83rpx 30rpx 30rpx 30rpx;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
.member-item {
|
.member-item {
|
||||||
|
padding: 30rpx 20rpx 27rpx 20rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
margin-bottom: 20rpx;
|
margin-bottom: 20rpx;
|
||||||
padding: 30rpx 20rpx 27rpx 20rpx;
|
|
||||||
border-radius: 20rpx;
|
border-radius: 20rpx;
|
||||||
|
|
||||||
.member-image {
|
.member-image {
|
||||||
width: 104rpx;
|
width: 104rpx;
|
||||||
height: 104rpx;
|
height: 104rpx;
|
||||||
border-radius: 35rpx;
|
border-radius: 35rpx;
|
||||||
background: linear-gradient(#FFEBB2,#FDCB3B);
|
background: linear-gradient(#FFEBB2, #FDCB3B);
|
||||||
padding: 20rpx;
|
padding: 20rpx;
|
||||||
|
|
||||||
image {
|
image {
|
||||||
|
@ -189,12 +262,14 @@ import store from '@/store/index';
|
||||||
transform: skew(-6deg, 0);
|
transform: skew(-6deg, 0);
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
text{
|
|
||||||
text{
|
text {
|
||||||
|
text {
|
||||||
color: #C80D00;
|
color: #C80D00;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
view{
|
|
||||||
|
view {
|
||||||
width: 18rpx;
|
width: 18rpx;
|
||||||
height: 6rpx;
|
height: 6rpx;
|
||||||
background: #FEAC49;
|
background: #FEAC49;
|
||||||
|
@ -208,67 +283,115 @@ import store from '@/store/index';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.member-active{
|
|
||||||
|
.member-active {
|
||||||
transition: .3s;
|
transition: .3s;
|
||||||
background: linear-gradient(#FF995F,#DA0E00);
|
background: linear-gradient(#FF995F, #DA0E00);
|
||||||
|
|
||||||
.member-image {
|
.member-image {
|
||||||
background: linear-gradient(#FF995F,#DA0E00);
|
background: linear-gradient(#FF995F, #FDCB3B);
|
||||||
}
|
}
|
||||||
|
|
||||||
.member-text {
|
.member-text {
|
||||||
.text-title {
|
.text-title {
|
||||||
text{
|
text {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
text{
|
|
||||||
color: rgb(223,208,42);
|
text {
|
||||||
|
color: rgb(223, 208, 42);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
view{
|
|
||||||
|
view {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.text-content {
|
.text-content {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.member-disbled{
|
.member-disbled {
|
||||||
transition: .3s;
|
transition: .3s;
|
||||||
background: linear-gradient(#EFEFEF,#BCBCBC);
|
background: linear-gradient(#EFEFEF, #BCBCBC);
|
||||||
|
|
||||||
.member-image {
|
.member-image {
|
||||||
background: linear-gradient(#AAAAAA,#989898);
|
background: linear-gradient(#AAAAAA, #989898);
|
||||||
}
|
}
|
||||||
|
|
||||||
.member-text {
|
.member-text {
|
||||||
.text-title {
|
.text-title {
|
||||||
text{
|
text {
|
||||||
color: #868585;
|
color: #868585;
|
||||||
text{
|
|
||||||
|
text {
|
||||||
color: #868585;
|
color: #868585;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
view{
|
|
||||||
|
view {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.text-content {
|
.text-content {
|
||||||
color: #5C5C5C;
|
color: #5C5C5C;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.box-privilege {
|
.box-privilege {
|
||||||
|
box-shadow: 0px 0px 15px -5px #000;
|
||||||
border-radius: 36rpx;
|
border-radius: 36rpx;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin-top: 44rpx;
|
margin-top: 12%;
|
||||||
padding: 84rpx 10rpx 40rpx 10rpx;
|
border-radius: 20px;
|
||||||
background: linear-gradient(#FFD55D,#FD7630);
|
box-sizing: border-box;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
background-image: linear-gradient(#FFD55D, #FD752F),
|
||||||
|
linear-gradient(to bottom, #FFEBB2, #FDCB3B);
|
||||||
|
background-origin: border-box;
|
||||||
|
background-clip: content-box, border-box;
|
||||||
|
border-radius: 20px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.box-title {
|
||||||
|
position: absolute;
|
||||||
|
top: -9%;
|
||||||
|
left: -203rpx;
|
||||||
|
margin-left: 50%;
|
||||||
|
|
||||||
|
image {
|
||||||
|
width: 406rpx;
|
||||||
|
height: 87rpx;
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '特权详情';
|
||||||
|
position: absolute;
|
||||||
|
font-size: 34rpx;
|
||||||
|
font-family: Adobe Heiti Std;
|
||||||
|
font-weight: normal;
|
||||||
|
color: #FF4B47;
|
||||||
|
text-shadow: 1px 5px 5px rgba(255, 195, 30, 0.78);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.privilege-list {
|
||||||
|
margin: 84rpx 10rpx 40rpx 10rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
.privilege-item {
|
.privilege-item {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -281,8 +404,8 @@ import store from '@/store/index';
|
||||||
margin: 0 10rpx;
|
margin: 0 10rpx;
|
||||||
|
|
||||||
image {
|
image {
|
||||||
width: 87rpx;
|
width: 96rpx;
|
||||||
height: 87rpx;
|
height: 96rpx;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
margin-bottom: 15rpx;
|
margin-bottom: 15rpx;
|
||||||
}
|
}
|
||||||
|
@ -294,10 +417,12 @@ import store from '@/store/index';
|
||||||
font-size: 26rpx;
|
font-size: 26rpx;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.box-submit {
|
.box-submit {
|
||||||
background: linear-gradient(#FFC82B,#FD7A32);
|
background: linear-gradient(#FFC82B, #FD7A32);
|
||||||
margin-top: 127rpx;
|
margin-top: 127rpx;
|
||||||
margin-bottom: 75rpx;
|
margin-bottom: 75rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
|
@ -10,15 +10,13 @@
|
||||||
<text>再升1级即可获得【XX】等6项权益</text>
|
<text>再升1级即可获得【XX】等6项权益</text>
|
||||||
</view>
|
</view>
|
||||||
<view class="member-right">
|
<view class="member-right">
|
||||||
<image src='../../static/images/f.png'></image>
|
<image src='../../static/images/vipStar.png'></image>
|
||||||
<text >会员等级3级</text>
|
<text >会员等级3级</text>
|
||||||
<button>立即续费</button>
|
<button>立即续费</button>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="box-equity">
|
<view class="box-equity">
|
||||||
<view class="equity-text">
|
<view class="equity-text">
|
||||||
<view class="equity-title">
|
|
||||||
</view>
|
|
||||||
<text class="equity-member">我的会员权益</text>
|
<text class="equity-member">我的会员权益</text>
|
||||||
<text class="equity-look">查看权益></text>
|
<text class="equity-look">查看权益></text>
|
||||||
</view>
|
</view>
|
||||||
|
@ -101,10 +99,14 @@
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.box {
|
.box {
|
||||||
padding: 36rpx 40rpx;
|
|
||||||
background: #fff;
|
background: #fff;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
|
background: url(../../static/images/memberBg.png);
|
||||||
|
background-size: cover;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-attachment: fixed;
|
||||||
.box-member {
|
.box-member {
|
||||||
|
padding: 36rpx 40rpx;
|
||||||
border-radius: 20rpx;
|
border-radius: 20rpx;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
// padding: 20rpx 20rpx 30rpx 20rpx;
|
// padding: 20rpx 20rpx 30rpx 20rpx;
|
||||||
|
@ -162,34 +164,34 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.box-equity {
|
.box-equity {
|
||||||
border-radius: 20rpx;
|
// border-radius: 20rpx;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin-top: 10%;
|
padding: 0 40rpx;
|
||||||
padding: 40rpx 10rpx 40rpx 10rpx;
|
background: url(../../static/images/memberEquity.png);
|
||||||
// background: #fff;
|
background-size: 100%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
.equity-text{
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
position: relative;
|
position: relative;
|
||||||
.equity-title{
|
|
||||||
|
.equity-text{
|
||||||
|
margin:5% 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
align-items: center;
|
||||||
width: 200rpx;
|
height: 10%;
|
||||||
height: 90rpx;
|
|
||||||
background: #fff;
|
|
||||||
border-radius: 8px;/* 设置圆角 */
|
|
||||||
transform: perspective(8px)scale(1.1, 1.3) rotateX(5deg);
|
|
||||||
/* 镜头距离元素表面的位置为8px,x轴为1.1倍y轴为1.3倍,绕x轴旋转5度 */
|
|
||||||
transform-origin: bottom left;
|
|
||||||
margin-right: 20rpx;
|
|
||||||
}
|
|
||||||
.equity-member{
|
.equity-member{
|
||||||
position: absolute;
|
margin: 0 10%;
|
||||||
|
font-size: 30rpx;
|
||||||
|
font-family: PingFang SC;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #FFFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
.equity-look{
|
.equity-look{
|
||||||
|
font-size: 28rpx;
|
||||||
|
font-family: PingFang SC;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #FF4922;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.equity-item {
|
.equity-item {
|
||||||
|
@ -198,10 +200,9 @@
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
border-radius: 20rpx;
|
border-radius: 20rpx;
|
||||||
margin: 15rpx;
|
margin: 0 20rpx 20rpx 20rpx;
|
||||||
padding: 30rpx 24rpx;
|
// padding: 30rpx 24rpx;
|
||||||
.equity-grade{
|
.equity-grade{
|
||||||
background: greenyellow;
|
|
||||||
border-radius: 10rpx 10rpx;
|
border-radius: 10rpx 10rpx;
|
||||||
padding: 20rpx;
|
padding: 20rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -209,9 +210,10 @@
|
||||||
}
|
}
|
||||||
.equity-money {
|
.equity-money {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-around;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
.money-box{
|
.money-box{
|
||||||
|
width: 46%;
|
||||||
padding: 24rpx 25rpx;
|
padding: 24rpx 25rpx;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
|
@ -11,7 +11,13 @@
|
||||||
</u--form>
|
</u--form>
|
||||||
</view>
|
</view>
|
||||||
<view class="box-member">
|
<view class="box-member">
|
||||||
<view :class="[activeIndex.includes(index) && 'member-active',!!parseInt(item.isExist) && 'member-disbled', 'member-item']" v-for="(item,index) in memberData" :key="index" @click="handleMember(item,index)">
|
<view class="box-title">
|
||||||
|
<image src='../../static/images/memberTitle.png'></image>
|
||||||
|
</view>
|
||||||
|
<view class="member-list">
|
||||||
|
<view
|
||||||
|
:class="[activeIndex.includes(index) && 'member-active',!!parseInt(item.isExist) && 'member-disbled', 'member-item']"
|
||||||
|
v-for="(item,index) in memberData" :key="index" @click="handleMember(item,index)">
|
||||||
<view class="member-image">
|
<view class="member-image">
|
||||||
<image src='../../static/images/f.png'></image>
|
<image src='../../static/images/f.png'></image>
|
||||||
</view>
|
</view>
|
||||||
|
@ -27,7 +33,9 @@
|
||||||
* 办理三个项目即可升级会员2,会员2享XX权益。
|
* 办理三个项目即可升级会员2,会员2享XX权益。
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<paymentMember :payMode='payMode' :pay_close="pay_close" @onChangeFun='onChangeFun' :payInfo="payInfo"></paymentMember>
|
</view>
|
||||||
|
<paymentMember :payMode='payMode' :pay_close="pay_close" @onChangeFun='onChangeFun' :payInfo="payInfo">
|
||||||
|
</paymentMember>
|
||||||
<button class="box-submit" @click="goPay">立即充值</button>
|
<button class="box-submit" @click="goPay">立即充值</button>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
@ -37,7 +45,7 @@
|
||||||
memberGradeInfo
|
memberGradeInfo
|
||||||
} from '@/api/member.js';
|
} from '@/api/member.js';
|
||||||
import paymentMember from '@/components/paymentMember';
|
import paymentMember from '@/components/paymentMember';
|
||||||
import store from '@/store/index';
|
import store from '@/store/index';
|
||||||
export default {
|
export default {
|
||||||
name: "member_application",
|
name: "member_application",
|
||||||
components: {
|
components: {
|
||||||
|
@ -45,8 +53,8 @@ import store from '@/store/index';
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
memberData:[],
|
memberData: [],
|
||||||
payInfo:{
|
payInfo: {
|
||||||
userPhone: '',
|
userPhone: '',
|
||||||
confirmPhone: '',
|
confirmPhone: '',
|
||||||
orderInfos: []
|
orderInfos: []
|
||||||
|
@ -65,14 +73,13 @@ import store from '@/store/index';
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
pay_close: false,
|
pay_close: false,
|
||||||
activeIndex:[],
|
activeIndex: [],
|
||||||
form: {
|
form: {
|
||||||
userPhone:'',
|
userPhone: '',
|
||||||
confirmPhone:''
|
confirmPhone: ''
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
userPhone: [
|
userPhone: [{
|
||||||
{
|
|
||||||
required: true,
|
required: true,
|
||||||
message: '手机号不能为空',
|
message: '手机号不能为空',
|
||||||
// 触发器可以同时用blur和change
|
// 触发器可以同时用blur和change
|
||||||
|
@ -88,8 +95,7 @@ import store from '@/store/index';
|
||||||
trigger: ['change', 'blur']
|
trigger: ['change', 'blur']
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
confirmPhone:[
|
confirmPhone: [{
|
||||||
{
|
|
||||||
required: true,
|
required: true,
|
||||||
message: '手机号确认不能为空',
|
message: '手机号确认不能为空',
|
||||||
// 触发器可以同时用blur和change
|
// 触发器可以同时用blur和change
|
||||||
|
@ -100,7 +106,7 @@ import store from '@/store/index';
|
||||||
return this.form.userPhone == this.form.confirmPhone
|
return this.form.userPhone == this.form.confirmPhone
|
||||||
},
|
},
|
||||||
message: '手机号不一致',
|
message: '手机号不一致',
|
||||||
trigger: ['change','blur'],
|
trigger: ['change', 'blur'],
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -111,11 +117,11 @@ import store from '@/store/index';
|
||||||
this.memberData = res.data
|
this.memberData = res.data
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleMember(value,index){
|
handleMember(value, index) {
|
||||||
if(!!parseInt(value.isExist)) return
|
if (!!parseInt(value.isExist)) return
|
||||||
if(this.activeIndex.includes(index)){
|
if (this.activeIndex.includes(index)) {
|
||||||
this.activeIndex = this.activeIndex.filter(item => item !== index)
|
this.activeIndex = this.activeIndex.filter(item => item !== index)
|
||||||
}else{
|
} else {
|
||||||
this.activeIndex.push(index)
|
this.activeIndex.push(index)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -125,12 +131,12 @@ import store from '@/store/index';
|
||||||
*/
|
*/
|
||||||
goPay() {
|
goPay() {
|
||||||
this.$refs.uForm.validate().then(res => {
|
this.$refs.uForm.validate().then(res => {
|
||||||
if(this.activeIndex.length){
|
if (this.activeIndex.length) {
|
||||||
this.$set(this, 'pay_close', true);
|
this.$set(this, 'pay_close', true);
|
||||||
const orderInfos = this.activeIndex.map((item) => {
|
const orderInfos = this.activeIndex.map((item) => {
|
||||||
return {
|
return {
|
||||||
...this.memberData[item],
|
...this.memberData[item],
|
||||||
gearId:this.memberData[item].id
|
gearId: this.memberData[item].id
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
this.payInfo = {
|
this.payInfo = {
|
||||||
|
@ -190,11 +196,19 @@ import store from '@/store/index';
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.box {
|
.box {
|
||||||
padding: 63rpx 40rpx;
|
position: relative;
|
||||||
|
padding: 8% 40rpx 0 40rpx;
|
||||||
|
height: 100vh;
|
||||||
|
background: url(../../static/images/bg.png);
|
||||||
|
background-size: cover;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-attachment: fixed;
|
||||||
|
|
||||||
.box-phone {
|
.box-phone {
|
||||||
.u-form-item{
|
.u-form-item {
|
||||||
margin-bottom: 32rpx;
|
margin-bottom: 32rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
::v-deep .u-form-item__body {
|
::v-deep .u-form-item__body {
|
||||||
height: 100rpx;
|
height: 100rpx;
|
||||||
border-radius: 20rpx;
|
border-radius: 20rpx;
|
||||||
|
@ -202,26 +216,73 @@ import store from '@/store/index';
|
||||||
background: #fff;
|
background: #fff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.phone-money {
|
||||||
|
width: 604rpx;
|
||||||
|
height: 140rpx;
|
||||||
|
position: absolute;
|
||||||
|
top: 2%;
|
||||||
|
left: 15%;
|
||||||
|
}
|
||||||
|
|
||||||
.box-member {
|
.box-member {
|
||||||
border-radius: 20rpx;
|
margin-top: 10%;
|
||||||
|
box-shadow: 0px 0px 15px -5px #000;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin-top: 60rpx;
|
border-radius: 20px;
|
||||||
padding: 83rpx 30rpx 30rpx 30rpx;
|
box-sizing: border-box;
|
||||||
background: linear-gradient(#FFD55D,#FD752F);
|
border: 1px solid transparent;
|
||||||
|
background-image: linear-gradient(#FFD55D, #FD752F),
|
||||||
|
linear-gradient(to bottom, #FFD55D, #FDCB3B);
|
||||||
|
background-origin: border-box;
|
||||||
|
background-clip: content-box, border-box;
|
||||||
|
border-radius: 20px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.box-title {
|
||||||
|
position: absolute;
|
||||||
|
top: -5.5%;
|
||||||
|
left: -203rpx;
|
||||||
|
margin-left: 50%;
|
||||||
|
|
||||||
|
image {
|
||||||
|
width: 406rpx;
|
||||||
|
height: 87rpx;
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '会员详情介绍';
|
||||||
|
position: absolute;
|
||||||
|
font-size: 34rpx;
|
||||||
|
font-family: Adobe Heiti Std;
|
||||||
|
font-weight: normal;
|
||||||
|
color: #FF4B47;
|
||||||
|
text-shadow: 1px 5px 5px rgba(255, 195, 30, 0.78);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.member-list {
|
||||||
|
margin: 83rpx 30rpx 30rpx 30rpx;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
.member-item {
|
.member-item {
|
||||||
|
padding: 30rpx 20rpx 27rpx 20rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
margin-bottom: 20rpx;
|
margin-bottom: 20rpx;
|
||||||
padding: 30rpx 20rpx 27rpx 20rpx;
|
|
||||||
border-radius: 20rpx;
|
border-radius: 20rpx;
|
||||||
|
|
||||||
.member-image {
|
.member-image {
|
||||||
width: 104rpx;
|
width: 104rpx;
|
||||||
height: 104rpx;
|
height: 104rpx;
|
||||||
border-radius: 35rpx;
|
border-radius: 35rpx;
|
||||||
background: linear-gradient(#FFEBB2,#FDCB3B);
|
background: linear-gradient(#FFEBB2, #FDCB3B);
|
||||||
padding: 20rpx;
|
padding: 20rpx;
|
||||||
|
|
||||||
image {
|
image {
|
||||||
|
@ -243,12 +304,14 @@ import store from '@/store/index';
|
||||||
transform: skew(-6deg, 0);
|
transform: skew(-6deg, 0);
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
text{
|
|
||||||
text{
|
text {
|
||||||
|
text {
|
||||||
color: #C80D00;
|
color: #C80D00;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
view{
|
|
||||||
|
view {
|
||||||
width: 18rpx;
|
width: 18rpx;
|
||||||
height: 6rpx;
|
height: 6rpx;
|
||||||
background: #FEAC49;
|
background: #FEAC49;
|
||||||
|
@ -262,67 +325,153 @@ import store from '@/store/index';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.member-active{
|
|
||||||
|
.member-active {
|
||||||
transition: .3s;
|
transition: .3s;
|
||||||
background: linear-gradient(#FF995F,#DA0E00);
|
background: linear-gradient(#FF995F, #DA0E00);
|
||||||
|
|
||||||
.member-image {
|
.member-image {
|
||||||
background: linear-gradient(#FF995F,#DA0E00);
|
background: linear-gradient(#FF995F, #FDCB3B);
|
||||||
}
|
}
|
||||||
|
|
||||||
.member-text {
|
.member-text {
|
||||||
.text-title {
|
.text-title {
|
||||||
text{
|
text {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
text{
|
|
||||||
color: rgb(223,208,42);
|
text {
|
||||||
|
color: rgb(223, 208, 42);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
view{
|
|
||||||
|
view {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.text-content {
|
.text-content {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.member-disbled{
|
.member-disbled {
|
||||||
transition: .3s;
|
transition: .3s;
|
||||||
background: linear-gradient(#EFEFEF,#BCBCBC);
|
background: linear-gradient(#EFEFEF, #BCBCBC);
|
||||||
|
|
||||||
.member-image {
|
.member-image {
|
||||||
background: linear-gradient(#AAAAAA,#989898);
|
background: linear-gradient(#AAAAAA, #989898);
|
||||||
}
|
}
|
||||||
|
|
||||||
.member-text {
|
.member-text {
|
||||||
.text-title {
|
.text-title {
|
||||||
text{
|
text {
|
||||||
color: #868585;
|
color: #868585;
|
||||||
text{
|
|
||||||
|
text {
|
||||||
color: #868585;
|
color: #868585;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
view{
|
|
||||||
|
view {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.text-content {
|
.text-content {
|
||||||
color: #5C5C5C;
|
color: #5C5C5C;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.member-prompt{
|
|
||||||
|
.member-prompt {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-privilege {
|
||||||
|
box-shadow: 0px 0px 15px -5px #000;
|
||||||
|
border-radius: 36rpx;
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 12%;
|
||||||
|
border-radius: 20px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
background-image: linear-gradient(#FFD55D, #FD752F),
|
||||||
|
linear-gradient(to bottom, #FFEBB2, #FDCB3B);
|
||||||
|
background-origin: border-box;
|
||||||
|
background-clip: content-box, border-box;
|
||||||
|
border-radius: 20px;
|
||||||
|
display: flex;
|
||||||
|
flex: 1;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.box-title {
|
||||||
|
position: absolute;
|
||||||
|
top: -9%;
|
||||||
|
left: -203rpx;
|
||||||
|
margin-left: 50%;
|
||||||
|
|
||||||
|
image {
|
||||||
|
width: 406rpx;
|
||||||
|
height: 87rpx;
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '特权详情';
|
||||||
|
position: absolute;
|
||||||
|
font-size: 34rpx;
|
||||||
|
font-family: Adobe Heiti Std;
|
||||||
|
font-weight: normal;
|
||||||
|
color: #FF4B47;
|
||||||
|
text-shadow: 1px 5px 5px rgba(255, 195, 30, 0.78);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.privilege-list {
|
||||||
|
margin: 84rpx 10rpx 40rpx 10rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.privilege-item {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
background: #fff;
|
||||||
|
padding: 16rpx 16rpx;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
margin: 0 10rpx;
|
||||||
|
|
||||||
|
image {
|
||||||
|
width: 96rpx;
|
||||||
|
height: 96rpx;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin-bottom: 15rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.privilege-text {
|
||||||
|
color: #000000;
|
||||||
|
line-height: 36rpx;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 26rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.box-submit {
|
.box-submit {
|
||||||
background: linear-gradient(#FFC82B,#FD7A32);
|
background: linear-gradient(#FFC82B, #FD7A32);
|
||||||
margin-top: 127rpx;
|
margin-top: 127rpx;
|
||||||
margin-bottom: 75rpx;
|
margin-bottom: 75rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
</view>
|
</view>
|
||||||
<view class="item-text">
|
<view class="item-text">
|
||||||
<text>充值档次:{{item.grade}}</text>
|
<text>充值档次:{{item.grade}}</text>
|
||||||
<text>日期:{{item.createTime}}</text>
|
<text>日期:{{item.stringCreateTime}}</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
@ -36,17 +36,17 @@
|
||||||
this.memberData.sort((a,b) =>{
|
this.memberData.sort((a,b) =>{
|
||||||
let aIndex = this.keyword.indexOf(a.userPhone)
|
let aIndex = this.keyword.indexOf(a.userPhone)
|
||||||
let bIndex = this.keyword.indexOf(b.userPhone)
|
let bIndex = this.keyword.indexOf(b.userPhone)
|
||||||
|
console.log(aIndex,bIndex)
|
||||||
if(aIndex > bIndex) return -1
|
if(aIndex > bIndex) return -1
|
||||||
if(aIndex < bIndex) return 1
|
if(aIndex < bIndex) return 1
|
||||||
if(a.userPhone == b.userPhone){
|
if(a.userPhone == b.userPhone){
|
||||||
return a.createTime - b.createTime
|
return a.stringCreateTime - b.stringCreateTime
|
||||||
}else{
|
}else{
|
||||||
if(a.createTime<b.createTime) return -1
|
if(a.stringCreateTime<b.stringCreateTime) return -1
|
||||||
if(a.createTime>b.createTime) return 1
|
if(a.stringCreateTime>b.stringCreateTime) return 1
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
console.log(this.memberData)
|
|
||||||
},1000)
|
},1000)
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
|
@ -8,7 +8,13 @@
|
||||||
</u--form>
|
</u--form>
|
||||||
</view>
|
</view>
|
||||||
<view class="box-member">
|
<view class="box-member">
|
||||||
<view :class="[activeIndex.includes(index) && 'member-active',!!parseInt(item.isExist) && 'member-disbled', 'member-item']" v-for="(item,index) in memberData" :key="index" @click="handleMember(item,index)">
|
<view class="box-title">
|
||||||
|
<image src='../../static/images/memberTitle.png'></image>
|
||||||
|
</view>
|
||||||
|
<view class="member-list">
|
||||||
|
<view
|
||||||
|
:class="[activeIndex.includes(index) && 'member-active',!!parseInt(item.isExist) && 'member-disbled', 'member-item']"
|
||||||
|
v-for="(item,index) in memberData" :key="index" @click="handleMember(item,index)">
|
||||||
<view class="member-image">
|
<view class="member-image">
|
||||||
<image src='../../static/images/f.png'></image>
|
<image src='../../static/images/f.png'></image>
|
||||||
</view>
|
</view>
|
||||||
|
@ -24,6 +30,7 @@
|
||||||
* 办理三个项目即可升级会员2,会员2享XX权益。
|
* 办理三个项目即可升级会员2,会员2享XX权益。
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
</view>
|
||||||
<paymentMember :payMode='payMode' :pay_close="pay_close" @onChangeFun='onChangeFun' :payInfo="payInfo"></paymentMember>
|
<paymentMember :payMode='payMode' :pay_close="pay_close" @onChangeFun='onChangeFun' :payInfo="payInfo"></paymentMember>
|
||||||
<button class="box-submit" @click="goPay">立即充值</button>
|
<button class="box-submit" @click="goPay">立即充值</button>
|
||||||
</view>
|
</view>
|
||||||
|
@ -167,41 +174,93 @@ import store from '@/store/index';
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.box {
|
.box {
|
||||||
padding: 63rpx 40rpx;
|
position: relative;
|
||||||
.u-input{
|
padding: 8% 40rpx 0 40rpx;
|
||||||
background: #fff !important;
|
height: 100vh;
|
||||||
}
|
background: url(../../static/images/bg.png);
|
||||||
|
background-size: cover;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-attachment: fixed;
|
||||||
|
|
||||||
.box-phone {
|
.box-phone {
|
||||||
.u-form-item{
|
.u-form-item {
|
||||||
margin-bottom: 32rpx;
|
margin-bottom: 32rpx;
|
||||||
}
|
}
|
||||||
::v-deep .u-form-item__body {
|
|
||||||
|
::v-deep .u-form-item__body,.u-input {
|
||||||
height: 100rpx;
|
height: 100rpx;
|
||||||
border-radius: 20rpx;
|
border-radius: 20rpx;
|
||||||
padding: 0 30rpx;
|
padding: 0 30rpx;
|
||||||
background: #fff;
|
background: #fff !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.phone-money {
|
||||||
|
width: 604rpx;
|
||||||
|
height: 140rpx;
|
||||||
|
position: absolute;
|
||||||
|
top: 2%;
|
||||||
|
left: 15%;
|
||||||
|
}
|
||||||
|
|
||||||
.box-member {
|
.box-member {
|
||||||
border-radius: 20rpx;
|
margin-top: 10%;
|
||||||
|
box-shadow: 0px 0px 15px -5px #000;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin-top: 60rpx;
|
border-radius: 20px;
|
||||||
padding: 83rpx 30rpx 30rpx 30rpx;
|
box-sizing: border-box;
|
||||||
background: linear-gradient(#FFD55D,#FD752F);
|
border: 1px solid transparent;
|
||||||
|
background-image: linear-gradient(#FFD55D, #FD752F),
|
||||||
|
linear-gradient(to bottom, #FFD55D, #FDCB3B);
|
||||||
|
background-origin: border-box;
|
||||||
|
background-clip: content-box, border-box;
|
||||||
|
border-radius: 20px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.box-title {
|
||||||
|
position: absolute;
|
||||||
|
top: -5.5%;
|
||||||
|
left: -203rpx;
|
||||||
|
margin-left: 50%;
|
||||||
|
|
||||||
|
image {
|
||||||
|
width: 406rpx;
|
||||||
|
height: 87rpx;
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '会员详情介绍';
|
||||||
|
position: absolute;
|
||||||
|
font-size: 34rpx;
|
||||||
|
font-family: Adobe Heiti Std;
|
||||||
|
font-weight: normal;
|
||||||
|
color: #FF4B47;
|
||||||
|
text-shadow: 1px 5px 5px rgba(255, 195, 30, 0.78);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.member-list {
|
||||||
|
margin: 83rpx 30rpx 30rpx 30rpx;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
.member-item {
|
.member-item {
|
||||||
|
padding: 30rpx 20rpx 27rpx 20rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
margin-bottom: 20rpx;
|
margin-bottom: 20rpx;
|
||||||
padding: 30rpx 20rpx 27rpx 20rpx;
|
|
||||||
border-radius: 20rpx;
|
border-radius: 20rpx;
|
||||||
|
|
||||||
.member-image {
|
.member-image {
|
||||||
width: 104rpx;
|
width: 104rpx;
|
||||||
height: 104rpx;
|
height: 104rpx;
|
||||||
border-radius: 35rpx;
|
border-radius: 35rpx;
|
||||||
background: linear-gradient(#FFEBB2,#FDCB3B);
|
background: linear-gradient(#FFEBB2, #FDCB3B);
|
||||||
padding: 20rpx;
|
padding: 20rpx;
|
||||||
|
|
||||||
image {
|
image {
|
||||||
|
@ -223,12 +282,14 @@ import store from '@/store/index';
|
||||||
transform: skew(-6deg, 0);
|
transform: skew(-6deg, 0);
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
text{
|
|
||||||
text{
|
text {
|
||||||
|
text {
|
||||||
color: #C80D00;
|
color: #C80D00;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
view{
|
|
||||||
|
view {
|
||||||
width: 18rpx;
|
width: 18rpx;
|
||||||
height: 6rpx;
|
height: 6rpx;
|
||||||
background: #FEAC49;
|
background: #FEAC49;
|
||||||
|
@ -242,68 +303,153 @@ import store from '@/store/index';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.member-active{
|
|
||||||
|
.member-active {
|
||||||
transition: .3s;
|
transition: .3s;
|
||||||
background: linear-gradient(#FF995F,#DA0E00);
|
background: linear-gradient(#FF995F, #DA0E00);
|
||||||
|
|
||||||
.member-image {
|
.member-image {
|
||||||
background: linear-gradient(#FF995F,#DA0E00);
|
background: linear-gradient(#FF995F, #FDCB3B);
|
||||||
}
|
}
|
||||||
|
|
||||||
.member-text {
|
.member-text {
|
||||||
.text-title {
|
.text-title {
|
||||||
text{
|
text {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
text{
|
|
||||||
color: rgb(223,208,42);
|
text {
|
||||||
|
color: rgb(223, 208, 42);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
view{
|
|
||||||
|
view {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.text-content {
|
.text-content {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.member-disbled{
|
.member-disbled {
|
||||||
transition: .3s;
|
transition: .3s;
|
||||||
background: linear-gradient(#EFEFEF,#BCBCBC);
|
background: linear-gradient(#EFEFEF, #BCBCBC);
|
||||||
|
|
||||||
.member-image {
|
.member-image {
|
||||||
background: linear-gradient(#AAAAAA,#989898);
|
background: linear-gradient(#AAAAAA, #989898);
|
||||||
}
|
}
|
||||||
|
|
||||||
.member-text {
|
.member-text {
|
||||||
.text-title {
|
.text-title {
|
||||||
text{
|
text {
|
||||||
color: #868585;
|
color: #868585;
|
||||||
text{
|
|
||||||
|
text {
|
||||||
color: #868585;
|
color: #868585;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
view{
|
|
||||||
|
view {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.text-content {
|
.text-content {
|
||||||
color: #5C5C5C;
|
color: #5C5C5C;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.member-prompt{
|
|
||||||
|
.member-prompt {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-privilege {
|
||||||
|
box-shadow: 0px 0px 15px -5px #000;
|
||||||
|
border-radius: 36rpx;
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 12%;
|
||||||
|
border-radius: 20px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
background-image: linear-gradient(#FFD55D, #FD752F),
|
||||||
|
linear-gradient(to bottom, #FFEBB2, #FDCB3B);
|
||||||
|
background-origin: border-box;
|
||||||
|
background-clip: content-box, border-box;
|
||||||
|
border-radius: 20px;
|
||||||
|
display: flex;
|
||||||
|
flex: 1;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.box-title {
|
||||||
|
position: absolute;
|
||||||
|
top: -9%;
|
||||||
|
left: -203rpx;
|
||||||
|
margin-left: 50%;
|
||||||
|
|
||||||
|
image {
|
||||||
|
width: 406rpx;
|
||||||
|
height: 87rpx;
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '特权详情';
|
||||||
|
position: absolute;
|
||||||
|
font-size: 34rpx;
|
||||||
|
font-family: Adobe Heiti Std;
|
||||||
|
font-weight: normal;
|
||||||
|
color: #FF4B47;
|
||||||
|
text-shadow: 1px 5px 5px rgba(255, 195, 30, 0.78);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.privilege-list {
|
||||||
|
margin: 84rpx 10rpx 40rpx 10rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.privilege-item {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
background: #fff;
|
||||||
|
padding: 16rpx 16rpx;
|
||||||
|
border-radius: 20rpx;
|
||||||
|
margin: 0 10rpx;
|
||||||
|
|
||||||
|
image {
|
||||||
|
width: 96rpx;
|
||||||
|
height: 96rpx;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin-bottom: 15rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.privilege-text {
|
||||||
|
color: #000000;
|
||||||
|
line-height: 36rpx;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 26rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.box-submit {
|
.box-submit {
|
||||||
background: linear-gradient(#FFC82B,#FD7A32);
|
background: linear-gradient(#FFC82B, #FD7A32);
|
||||||
margin-top: 127rpx;
|
margin-top: 127rpx;
|
||||||
margin-bottom: 75rpx;
|
margin-bottom: 75rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
After Width: | Height: | Size: 1.7 MiB |
After Width: | Height: | Size: 168 KiB |
After Width: | Height: | Size: 1.2 MiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 253 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 42 KiB |