喻文俊 3 rokov pred
rodič
commit
0607daa278

+ 31 - 42
src/main/resources/static/css/user-center/member/member-page.css

@@ -52,36 +52,26 @@
 .goods-list{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}
 .goods-list .goods a:hover{color:unset}
 .goods-list .goods{width:173px}
-.goods-list .goods .page_main_price{width:100%;height:54px;float:left;box-sizing:border-box;padding:0 8px}
-.goods-list .goods .page_main_price .main_price_text{width:100%;height:54px;float:left;box-sizing:border-box}
-.goods-list .goods .page_main_price .main_price_unde{width:100%;height:31px;line-height:31px;font-size:14px;color:#4a4f58;text-align:left;float:left}
-.goods-list .goods .page_main_price .main_price_show{width:100%;height:30px;line-height:30px;font-size:14px;color:#f94b4b;text-align:left;float:left}
-.goods-list .goods .page_main_price .main_price_show.none{color:#999999;text-decoration:line-through}
-.goods-list .goods .page_main_price .section_page .page_main_price .main_price_show.none{display:none}
-.goods-list .goods .page_main_price .price_text_tag{width:100%;height:22px;box-sizing:border-box;float:left;margin-top:0px}
-.goods-list .goods .page_main_price .price_text_tag .couponTag{float:left;margin-right: 4px;}
-.goods-list .goods .page_main_price .price_text_tag .listTag{margin:0;float:left}
-.goods-list .goods .page_main_price .main_price_none{width:100%;height:24px;box-sizing:border-box;float:left;margin-top:2px}
-.goods-list .goods .page_main_price .main_price_none.sec{margin-top:25px}
-.goods-list .goods .page_main_price .main_price_none .listTag{margin:0}
-.goods-list .goods .page_main_price .price_grade,.section_page .page_main_price .price_grade_shop,.section_page .page_main_price .price_grade_club{float:left;margin:0;height:22px;line-height:22px;color:#4A4F58;font-style:normal;font-size:14px}
-.goods-list .goods .page_main_price .price_grade span,.section_page .page_main_price .price_grade_shop span,.section_page .page_main_price .price_grade_club span{display:inline-block;float:left}
-.goods-list .goods .page_main_price .icon:before{width:67px;height:22px}
-.goods-list .goods .page_main_price .price_grade_1:before{background-position:0 -714px}
-.goods-list .goods .page_main_price .price_grade_2:before{background-position:0 -744px}
-.goods-list .goods .page_main_price .price_grade_3:before{background-position:0 -774px}
-.goods-list .goods .page_main_price .price_grade_4:before{background-position:0 -804px}
-.goods-list .goods .page_main_price .price_grade_5:before{background-position:0 -834px}
-.goods-list .goods img{display:block;width:173px;height:173px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px dashed #E2E7EF}
-.goods-list .goods .goods-title{width:169px;height:41px;margin-top:12px;font-size:14px;font-weight:400;line-height:22px;color:#4A4F58}
-.goods-list .goods .goods-tag{height:20px;padding:8px 0}
+
+.goods-list .goods img{display:block;width:184px;height:184px;-webkit-box-sizing:border-box;box-sizing:border-box}
+.goods-list .goods .goods-price,
+.goods-list .goods .goods-title,
+.goods-list .goods .goods-tag{padding: 0 8px;}
+
+.goods-list .goods .goods-title{height:41px;margin-top:12px;font-size:14px;font-weight:400;line-height:22px;color:#4A4F58;text-align:justify-all;word-break:break-all}
+.goods-list .goods .goods-tag{height:22px;padding:8px 8px}
 .goods-list .goods .goods-tag .tag{line-height:20px;font-size:12px;padding:0 2px}
 .goods-list .goods .goods-tag .tag.styl1{color:#F94B4B;background:#FFF1EB;border:1px solid #F94B4B}
 .goods-list .goods .goods-tag .tag.styl2{color:#E15616;background:#FFF1EB;border:1px solid #F94B4B}
-.goods-list .goods .svip-price{position:relative;height:20px;-webkit-box-sizing:border-box;box-sizing:border-box}
-.goods-list .goods .svip-price>span{display:block}
-.goods-list .goods .svip-price .amount{display:inline-block;font-size:14px;font-weight:400;line-height:20px;color:#333333;background:#F0CB72;padding-left:40px;padding-right:6px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:2px}
-.goods-list .goods .svip-price .svip-icon{position:absolute;left:0;top:0;width:36px;height:20px;background:#333333;font-size:12px;line-height:20px;color:#F0CB72;border-radius:2px;text-align:center}
+
+.goods-list .goods .svip-tag{height:18px;letter-spacing:0;display: inline-block;}
+.goods-list .goods .svip-tag .svip-icon{position:relative;z-index:9;display:inline-block;width:30px;height:18px;text-align:center;line-height:18px;font-size:12px;font-weight:400;color:#F0CB72;opacity:1;background:#333333}
+.goods-list .goods .svip-tag .svip-icon.btr{border-radius:2px 8px 0px 2px}
+.goods-list .goods .svip-tag .svip-price{z-index:1;position:relative;display:inline-block;padding-left:22px;padding-right:4px;margin-left:-24px;line-height:18px;background:#F0CB72;opacity:1;border-radius:2px;font-size:12px}
+.goods-list .goods .svip-tag .svip-price span{color: #333}
+
+.goods-list .good .goods-price del{color: #B8BFCA}
+
 /*底部支付按钮*/
 .pay-amount-bottom a:hover{color:unset}
 .pay-amount-bottom{position:absolute;bottom:-104px;width:100%;background:#fff}
@@ -158,26 +148,25 @@
 /*商品列表*/
 .goods-list{width:100vw;overflow-x:scroll;white-space:nowrap;padding-bottom:4.8vw}
 .goods-list .goods a:hover{color:unset}
-.goods-list .goods{display:inline-block;width:26.9vw;margin-right:2.4vw}
+.goods-list .goods{display:inline-block;width:34.9vw;margin-right:2.4vw}
 .goods-list .goods:first-child{margin-left:3.3vw}
-.goods-list .goods .page_main_price{width:100%;box-sizing:border-box;padding:0 3.2vw}
-.goods-list .goods .page_main_price .price_text_tag{width:100%;box-sizing:border-box;float:left}
-.goods-list .goods .page_main_price .main_price_show{color:#f94b4b}
-.goods-list .goods .page_main_price .section_page .page_main_price .main_price_show.none{display:none}
-.goods-list .goods .page_main_price .main_price_unde{width:100%;height:6.5vw;line-height:6.5vw;font-size:3.4vw;color:#4a4f58;text-align:left;float:left}
-.goods-list .goods .page_main_price .price_text_tag .couponTag{padding:0 2vw;border:.27vw solid #f94b4b;background:#fff1eb;font-size:2.8vw;float:left;height:4.2vw;line-height:4.2vw;color: #f94b4b;border-radius: 0.2vw;margin-right: 1vw;}
-.goods-list .goods .page_main_price .price_text_tag .listTag{padding:0 2vw;border:.27vw solid #ffe6dc;background:none;font-size:2.8vw;float:left;height:4.2vw;line-height:4.2vw;border-radius: 0.2vw;}
-.goods-list .goods img{display:block;width:26.9vw;height:26.9vw;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px dashed #E2E7EF}
-.goods-list .goods .goods-title{white-space:pre-wrap;height:9.2vw;font-size:3.4vw;font-weight:400;line-height:4.7vw;color:#627386}
+
+.goods-list .goods img{border: 1px dashed #d4d4d4; box-sizing: border-box;}
+
+.goods-list .goods .goods-title{white-space:pre-wrap;height:9.2vw;margin-top:0.8vw;font-size:3.4vw;font-weight:400;line-height:4.7vw;color:#627386}
 .goods-list .goods .goods-tag{margin:1.6vw 0}
 .goods-list .goods .goods-tag .tag{line-height:4.2vw;font-size:2.8vw;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 0.5vw}
 .goods-list .goods .goods-tag .tag.styl1{color:#F94B4B;background:#FFF1EB;border:1px solid #F94B4B}
 .goods-list .goods .goods-tag .tag.styl2{color:#E15616;background:#FFF1EB;border:1px solid #F94B4B}
-.goods-list .goods .svip-price{position:relative;height:4.8vw;-webkit-box-sizing:border-box;box-sizing:border-box}
-.goods-list .goods .svip-price>span{display:block}
-.goods-list .goods .svip-price .amount{display:inline-block;font-size:3.4vw;font-weight:400;line-height:4.8vw;color:#333333;background:#F0CB72;padding-left:8vw;padding-right:0.8vw;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:2px}
-.goods-list .goods .svip-price .svip-icon{position:absolute;left:0;top:0;width:8vw;height:4.8vw;background:#333333;font-size:3vw;line-height:4.8vw;color:#F0CB72;border-radius:2px;text-align:center}
-/*底部按钮隐藏*/
+/*会员标签*/
+.svip-tag{height:4.2vw;letter-spacing:0;overflow: hidden;display: inline-block;vertical-align: middle;}
+.svip-tag .svip-icon{position:relative;z-index:9;float: left; width:7.8vw;height:4.2vw;text-align:center;line-height:4.2vw;font-size:2.8vw;font-weight:400;color:#F0CB72;opacity:1;background:#333333}
+.svip-tag .svip-icon.btr{border-radius:2px 8px 0px 2px}
+.svip-tag .svip-price{z-index:1;position:relative;float: left;padding-left:6.4vw;padding-right:0.6vw;margin-left:-6vw;line-height:4.2vw;height: 4.2vw; background:#F0CB72;opacity:1;border-radius:2px;font-size:2.8vw}
+.svip-tag .svip-price span{color: #333}
+.svip-tag .svip-price span:nth-child(2){margin-left: -0.4vw}
+.goods-list .good .goods-price del{color: #B8BFCA}
+
 .pay-amount-bottom{display: none; opacity: 0}
 /*续费弹窗*/
 .renew-popup{position:fixed;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:74.6vw;height:72.8vw;background:#fff;-webkit-box-shadow:0px 10px 20px rgba(0,0,0,0.16);box-shadow:0px 10px 20px rgba(0,0,0,0.16);opacity:1;border-radius:1.2vw;z-index:9999}

+ 3 - 4
src/main/resources/static/css/user-center/member/member-product.css

@@ -37,7 +37,6 @@
 
 .goods-list .good .goods-price del{color: #B8BFCA}
 
-
 .goods-list .goods:hover{-webkit-transform:translateY(-6px);-ms-transform:translateY(-6px);transform:translateY(-6px);-webkit-box-shadow:0 0 16px rgba(0,0,0,.2);box-shadow:0 0 16px rgba(0,0,0,.2)}
 .goods-list .goods:hover .goods-title{color:#E15616}
 }/*h5端*/
@@ -69,10 +68,10 @@
 .goods-list .goods .goods-tag .tag.styl1{color:#F94B4B;background:#FFF1EB;border:1px solid #F94B4B}
 .goods-list .goods .goods-tag .tag.styl2{color:#E15616;background:#FFF1EB;border:1px solid #F94B4B}
 /*会员标签*/
-.svip-tag{height:4.74vw;letter-spacing:0;overflow: hidden;display: inline-block;vertical-align: middle;}
-.svip-tag .svip-icon{position:relative;z-index:9;float: left; width:9.8vw;height:4.74vw;text-align:center;line-height:4.74vw;font-size:2.8vw;font-weight:400;color:#F0CB72;opacity:1;background:#333333}
+.svip-tag{height:4.2vw;letter-spacing:0;overflow: hidden;display: inline-block;vertical-align: middle;border-radius: 2px;}
+.svip-tag .svip-icon{position:relative;z-index:9;float: left; width:7.8vw;height:4.2vw;text-align:center;line-height:4.2vw;font-size:2.8vw;font-weight:400;color:#F0CB72;opacity:1;background:#333333}
 .svip-tag .svip-icon.btr{border-radius:2px 8px 0px 2px}
-.svip-tag .svip-price{z-index:1;position:relative;float: left;padding-left:5.4vw;padding-right:0.6vw;margin-left:-6vw;line-height:4.74vw;height: 4.74vw; background:#F0CB72;opacity:1;border-radius:2px;font-size:2.8vw}
+.svip-tag .svip-price{z-index:1;position:relative;float: left;padding-left:6.4vw;padding-right:0.6vw;margin-left:-6vw;line-height:4.2vw;height: 4.2vw; background:#F0CB72;opacity:1;border-radius:2px;font-size:2.8vw}
 .svip-tag .svip-price span{color: #333}
 .svip-tag .svip-price span:nth-child(2){margin-left: -0.4vw}
 .goods-list .good .goods-price del{color: #B8BFCA}

+ 1 - 0
src/main/resources/static/js/account/register-club.js

@@ -47,6 +47,7 @@ var registerPage = new Vue({
             {value:1,name:'整形'},
             {value:2,name:'轻医美'},
             {value:3,name:'皮肤科'},
+            {value:4,name:'产后修复'},
         ],
         medicaCampNullList: [
             {name:'美容'},

+ 22 - 0
src/main/resources/static/js/common/serviceapi/user.service.js

@@ -318,4 +318,26 @@ var UserApi = {
                 callback(res);
             });
         },
+        RegisterSuperByBeans: function (params, callback) {//会员中心采美豆抵扣开通svip会员
+            Http.AjaxService({
+                url: '/user/register/super/beans',
+                type:'get',
+                data:params,
+                json:false,
+                isHost:true
+            }).then(function (res) {
+                callback(res);
+            });
+        },
+        SuperHistory: function (params, callback) {//会员开通记录
+            Http.AjaxService({
+                url: '/user/super/history',
+                type:'get',
+                data:params,
+                json:false,
+                isHost:true
+            }).then(function (res) {
+                callback(res);
+            });
+        },
 };

+ 35 - 16
src/main/resources/static/js/pay/caimei-paycash.js

@@ -50,7 +50,8 @@ var payContainer = new Vue({
         onlinePayFlag:'',
         payStatusText:'使用微信和企业网银支付全部金额后,供应商会在24小时后发货(周末、节假日顺延)。若着急发货,可以选择使用线下转账进行付款。',
         productID:'',//发布商品的ID
-        is_Wechat_bowcr:false
+        is_Wechat_bowcr:false,
+        comboInfo: null, //选中的svip套餐信息
     },
     filters: {
         NumFormat:function(value) {
@@ -72,6 +73,21 @@ var payContainer = new Vue({
         }
     },
     methods: {
+        // 会员支付信息初始化
+        initVipPayAction: function(){
+            console.log('会员支付拦截器');
+            var isVipPay = getUrlParam('payname') === 'svip';
+            if (!isVipPay) return false; // 如果不是支付会员的话,直接返回false
+            console.log('当前支付行为:购买svip');
+            // 从本地获取选中的svip套餐信息后删除本地信息
+            const comboInfo = window.localStorage.getItem('comboInfo');
+            this.comboInfo = JSON.parse(comboInfo);
+            // window.localStorage.removeItem('comboInfo');
+            // 设置支付金额
+            this.payAmount = this.comboInfo.price.toFixed(2);
+            this.pageType = '2';
+            return true // 如果是支付会员的话,租后返回true
+        },
         infoPayOrderCheckoutCounter:function(){//初始化订单数据
             var _self = this;
             PayApi.PayOrderCheckoutCounter({orderId:_self.payInfo.payOrderId},function(response){
@@ -511,23 +527,26 @@ var payContainer = new Vue({
     },
     mounted: function () {
         var _self = this;
-        _self.pageType = CAIMEI.getUrlParam('pageType');
-        if( _self.pageType === '1'){//二手
-            _self.productID = CAIMEI.getUrlParam('productID');
-            _self.payAmount = _self.toFixedFn(100);
-            _self.isRequest = true;
-            _self.payStatusText = '';
-        }else{
-             var HrefType = CAIMEI.getUrlParam('type');
-            if(HrefType == 'payfirm'){
-                _self.payInfo.payOrderId =  CAIMEI.getUrlParam('orderId');
-                _self.orderIdentificationId = '#'+_self.payInfo.payOrderId+'#';
+        // 判断当前支付是订单支付
+        if(!this.initVipPayAction()){
+            _self.pageType = CAIMEI.getUrlParam('pageType');
+            if( _self.pageType === '1'){//二手
+                _self.productID = CAIMEI.getUrlParam('productID');
+                _self.payAmount = _self.toFixedFn(100);
+                _self.isRequest = true;
+                _self.payStatusText = '';
             }else{
-                var data =JSON.parse(localStorage.getItem("confirmOrderInfo"));
-                _self.payInfo.payOrderId = data.data.orderId;
-                _self.orderIdentificationId = '#'+_self.payInfo.payOrderId+'#';
+                var HrefType = CAIMEI.getUrlParam('type');
+                if(HrefType == 'payfirm'){
+                    _self.payInfo.payOrderId =  CAIMEI.getUrlParam('orderId');
+                    _self.orderIdentificationId = '#'+_self.payInfo.payOrderId+'#';
+                }else{
+                    var data =JSON.parse(localStorage.getItem("confirmOrderInfo"));
+                    _self.payInfo.payOrderId = data.data.orderId;
+                    _self.orderIdentificationId = '#'+_self.payInfo.payOrderId+'#';
+                }
+                _self.infoPayOrderCheckoutCounter();//正常订单初始化
             }
-            _self.infoPayOrderCheckoutCounter();//正常订单初始化
         }
         var viewer = window.navigator.userAgent.toLowerCase();
         if(viewer.match(/MicroMessenger/i) == 'micromessenger'){

+ 115 - 6
src/main/resources/static/js/user-center/member/memberPage.js

@@ -92,8 +92,15 @@ var memberPage = new Vue({
             }
         ],
         comboCurrent: 0,  // 当前选择的套餐
-        vipInfo: [], // 用户svip信息
-        currentIndex: 1
+        vipInfo: {}, // 用户svip信息
+        currentIndex: 1,
+        productList: [],
+        listQuery: {
+            userId: GLOBAL_USER_ID,
+            source: 1,
+            pageNum: 1,
+            pageSize: 6
+        },
     },
     computed: {
         svipTips: function () {
@@ -109,7 +116,8 @@ var memberPage = new Vue({
         },
     },
     mounted: function () {
-        this.initCenter()
+        this.initCenter();
+        this.getSvipProductList();
     },
     methods: {
         // 初始化会员中心
@@ -118,6 +126,7 @@ var memberPage = new Vue({
             UserApi.GetSuperCenterInfo({userId: GLOBAL_USER_ID, source: 1}, function (res) {
                 if (res.code === 0) {
                     _self.vipInfo = res.data.vip;
+                    window.localStorage.setItem('vipInfo', JSON.stringify(_self.vipInfo));
                 } else {
                     CAIMEI.Alert(response.msg, '确定', false);
                     _self.isRequset = false;
@@ -146,12 +155,112 @@ var memberPage = new Vue({
         payByRMB: function (packageId) {
             console.log('RMB支付');
             //本地保存一下选中的会员套餐信息
-            window.localStorage.setItem('comboInfo', comboInfo[this.currentIndex]);
+            window.localStorage.setItem('comboInfo', JSON.stringify(comboInfo[this.currentIndex]));
             window.open('/pay/caimei-paycash.html?payname=svip')
         },
         // 采美豆支付
         payByBeans: function (packageId) {
-            console.log('采美豆支付');
-        }
+            var _self = this;
+            var currentPackage = comboInfo[this.currentIndex];
+            var popupParams = {
+                content:'确认使用' + (currentPackage.price * 100) + '采美豆开通' + (currentPackage.durationTime) + '个月会员?' ,
+                confitmBtnText: '确认开通',
+                cancelBtnText: '取消',
+            };
+            CAIMEI.Popup(popupParams, function(){
+                console.log('采美豆支付');
+                var params = {
+                    userId: GLOBAL_USER_ID,
+                    packageId: currentPackage.id
+                };
+                UserApi.RegisterSuperByBeans(params, function (res) {
+                    if (res.code) {
+                        CAIMEI.dialog(res.msg, false)
+                    } else {
+                        CAIMEI.dialog('开通会员成功', true, function () {
+                            var userInfo = JSON.parse(localStorage.getItem('userInfo'));
+                            userInfo.vipFlag = 1;
+                            window.localStorage.setItem('userInfo', JSON.stringify(userInfo));
+                            window.location.reload();
+                        })
+                    }
+                    _self.handleCloseRenewPopup()
+                })
+            });
+        },
+        // 续费弹窗
+        handleShowRenewPopup: function(){
+            this.currentIndex = 1;
+            this.showMask = true;
+            this.showRenewPopup = true;
+        },
+        // 关闭续费弹窗
+        handleCloseRenewPopup: function(){
+            this.showMask = false;
+            this.showRenewPopup = false;
+        },
+        // 获取页面优惠商品
+        getSvipProductList: function() {
+            var _self = this;
+            ProductApi.GetSvipProductList(this.listQuery, function (res) {
+                if (res.code) return;
+                var resultData = res.data;
+                if (isPC){
+                    _self.productList = resultData.svipProductPage.results.splice(0,5);
+                }else {
+                    _self.productList = resultData.svipProductPage.results.splice(0,6);
+                }
+                setTimeout(function () {
+                    $("img[data-original]").lazyload();
+                });
+            })
+        },
+        makePrice: function(product) {
+            if (!product) return;
+            // 普通商品
+            var priceFlag = parseInt(product.priceFlag);  //商品可见度 0公开价格 1不公开价格 2仅对会员机构公开
+            var userIdentity = parseInt(product.userIdentity);  //用户身份 0、个人  1、协销 2、资质机构 3、供应商 4,个人机构
+            var shopID = parseInt(product.shopID); // 所属供应商id
+            var originalPrice = parseInt(product.originalPrice).toFixed(2);  //商品原价
+            var price = parseInt(product.price).toFixed(2); // 商品价格
+            var priceGrade = parseInt(product.priceGrade); // 价格等级
+
+            // 二手商品价格标识 2 :价格详聊
+            var detailTalkFlag = parseInt(detailTalkFlag);
+
+            // 标签
+            var promotions = product.promotions; // 促销标签内容
+            var svipProductFlag = product.svipProductFlag; // SVIP标识 1 是 2 不是
+            var isSvip = true;
+
+            console.log(svipProductFlag);
+
+            if (product.productCategory === '1') {
+                // 登录后查看
+                if (!GLOBAL_USER_ID) {
+                    return '¥登录后查看'
+                }
+                if (priceFlag === 1) {
+                    return '¥价格未公开'
+                }
+                if (priceFlag === 2 && GLOBAL_USER_IDENTITY !== 2) {
+                    return '¥会员可见'
+                }
+                // 价格可见
+                if ((priceFlag === 0 && userIdentity !== 3) || (GLOBAL_USER_IDENTITY === 2) || (userIdentity === 3 && GLOBAL_SHOP_ID === shopID)) {
+                    if (promotions || (svipProductFlag === 1 && GLOBAL_VIP_FLAG === 1)) {
+                        return '<del>¥' + originalPrice + '</del>'
+                    }
+                    return '¥' + price;
+                }
+                return '<span>¥</span><span class=\"p-icon i' + priceGrade + '\"></span>'
+            } else {
+                // 二手商品
+                if (detailTalkFlag === 2) {
+                    return '¥价格详聊'
+                }
+                return '¥' + price;
+            }
+        },
     }
 });

+ 11 - 10
src/main/resources/static/js/user-center/member/memberProduct.js

@@ -33,6 +33,7 @@ var memberProduct = new Vue({
         }
     },
     mounted: function () {
+        this.productList = [];
         this.getSvipProductList();
         this.$nextTick(function () {
             setTimeout(function () {
@@ -46,16 +47,16 @@ var memberProduct = new Vue({
             var _self = this;
             ProductApi.GetSvipProductList(this.listQuery, function (res) {
                 if (res.code) return;
-                var resutlData = res.data;
-                _self.listQuery.pageNum = resutlData.svipProductPage.pageNum;
-                _self.listQuery.pageSize = resutlData.svipProductPage.pageSize;
-                _self.totalPage = resutlData.svipProductPage.totalPage;
-                _self.hasNextPage = resutlData.svipProductPage.hasNextPage;
-                _self.bannerImage = resutlData.adsImage;
+                var resultData = res.data;
+                _self.listQuery.pageNum = resultData.svipProductPage.pageNum;
+                _self.listQuery.pageSize = resultData.svipProductPage.pageSize;
+                _self.totalPage = resultData.svipProductPage.totalPage;
+                _self.hasNextPage = resultData.svipProductPage.hasNextPage;
+                _self.bannerImage = resultData.adsImage;
                 if (isPC){
-                    _self.productList = resutlData.svipProductPage.results;
+                    _self.productList = resultData.svipProductPage.results;
                 }else {
-                    _self.productList = _self.productList.concat(resutlData.svipProductPage.results);
+                    _self.productList = _self.productList.concat(resultData.svipProductPage.results);
                 }
             })
         },
@@ -77,7 +78,7 @@ var memberProduct = new Vue({
             var svipProductFlag = product.svipProductFlag; // SVIP标识 1 是 2 不是
             var isSvip = true;
 
-            if (product.productCategory == 1) {
+            if (product.productCategory === '1') {
                 // 登录后查看
                 if (!GLOBAL_USER_ID) {
                     return '¥登录后查看'
@@ -114,7 +115,7 @@ var memberProduct = new Vue({
         },
         //h5查看更多
         showMore() {
-
+            this.getSvipProductList()
         }
     }
 });

+ 74 - 8
src/main/resources/static/js/user-center/member/memberRecord.js

@@ -1,16 +1,37 @@
+// 会员套餐
+var comboInfo = [
+    {
+        id: 1,
+        durationTime: 12,
+        price: 4800,
+        recommend: false,
+    }, {
+        id: 2,
+        durationTime: 3,
+        price: 1500,
+        recommend: true,
+    }, {
+        id: 3,
+        durationTime: 1,
+        price: 600,
+        recommend: false,
+    }
+];
+
 var memberRecord = new Vue({
     el: '#memberRecord',
     data: {
         listQuery: {
-            keyword: '', //查询关键词
-            productType: 0, //商品类型 0 全部 1 仪器 2 产品
+            userId: GLOBAL_USER_ID,
             pageNum: 1,
             pageSize: 10
         },
-        hasMore: true,
-        totalPage: 10,
+        vipInfo:{},
+        hasMore: false,
+        totalPage: 0,
         jumpPageSize: 1,
-        total: 10,
+        total: 0,
+        recordList: []
     },
     computed: {
         pagination: function () {
@@ -28,7 +49,22 @@ var memberRecord = new Vue({
                 return [1, 0, this.totalPage - 4, this.totalPage - 3, this.totalPage - 2, this.totalPage - 1, this.totalPage];
             }
             return [1, 0, index - 2, index - 1, index, index + 1, index + 2, 0, this.totalPage];
-        }
+        },
+        svipTips: function () {
+            var vipFlag = this.vipInfo.vipFlag;
+            var endTime = moment(this.vipInfo.endTime).format('yyyy.MM.DD');
+            if (vipFlag === 1) {
+                return '<span>已开通采美超级会员</span><span class="time">有效期至' + endTime + '</span>'
+            } else if (vipFlag === -1) {
+                return '<span class="error">采美·超级会员已过期</span><span class="time">有效期至' + endTime + '</span>';
+            } else {
+                return '<span>采美·超级会员</span><span>享专属特权</span>'
+            }
+        },
+    },
+    mounted: function(){
+        this.vipInfo = JSON.parse(window.localStorage.getItem('vipInfo'));
+        this.getHistoryList();
     },
     methods: {
         //页码跳转
@@ -37,10 +73,40 @@ var memberRecord = new Vue({
                 return this.jumpPageSize = '';
             }
             this.listQuery.pageNum = parseInt(pageNum);
-            // this.getList(); //获取列表
+            this.getHistoryList(); //获取列表
+        },
+        // 获取会员开通记录
+        getHistoryList: function(){
+            var _self = this;
+            UserApi.SuperHistory(this.listQuery, function(res){
+                if(res.code === 0){
+                    _self.totalPage = res.data.pages;
+                    _self.total = res.data.total;
+                    _self.hasMore = res.data.hasNextPage;
+                    _self.listQuery.pageNum = res.data.pageNum;
+                    if(isPC){
+                        _self.recordList = res.data.list;
+                    }else{
+                        _self.recordList = _self.recordList.concat(res.data.list);
+                    }
+                }
+            })
+        },
+        durationTime: function(id){
+            var durationTime = 0;
+            comboInfo.forEach(function(item){
+                if(id === item.id){
+                    return durationTime = item.durationTime;
+                }
+            });
+            return durationTime;
         },
         //h5查看更多
-        showMore() {
+        showMore: function() {
+            if (this.total > this.recordList.length) {
+                this.listQuery.pageNum++;
+                this.getHistoryList()
+            }
         }
     }
 });

+ 3 - 1
src/main/resources/static/js/user-center/setting/information.js

@@ -52,7 +52,7 @@ var informationPage = new Vue({
             {value:'1',name:'整形'},
             {value:'2',name:'轻医美'},
             {value:'3',name:'皮肤科'},
-            {value:'3',name:'产后修复'},
+            {value:'4',name:'产后修复'},
         ],
         medicaCampNullList: [
             {name:'美容'},
@@ -279,12 +279,14 @@ var informationPage = new Vue({
                             CAIMEI.dialog('主营内容已存在!',false);
                         }else {
                             _self.mentuzCampNullList.push(obj);
+                            _self.mainProEdit = '';
                         }
                     }else{
                         if(_self.checkedArray(_self.mainProEdit,_self.medicaCampNullList)){
                             CAIMEI.dialog('主营内容已存在!',false);
                         }else {
                             _self.medicaCampNullList.push(obj);
+                            _self.mainProEdit = '';
                         }
                     }
                 }

+ 1 - 1
src/main/resources/templates/components/header.html

@@ -34,7 +34,7 @@
                         </div>
                     </div>
                 </li>
-                <li><a href="/user/member.html">超级会员</a></li>
+                <li><a :href="GLOBAL_USER_ID === 0 ? '/login.html' : '/user/member.html'">超级会员</a></li>
                 <li v-if="loginStatus" id="mGlobalMenu" @click="hideGlobalMenu()">
                     <a class="cTab" href="javascript:void(0);" v-if="userIdentity == 3" v-text="userData.name"></a>
                     <a class="cTab" href="javascript:void(0);" v-else v-text="userData.name"></a>

+ 2 - 2
src/main/resources/templates/pay/caimei-paycash.html

@@ -38,9 +38,9 @@
                     <div class="content">
                         <div class="pay-svip-detail">
                             <div class="tit">支付金额</div>
-                            <div class="pay-amount"><span>¥</span>6000.00</div>
+                            <div class="pay-amount"><span>¥</span>{{ comboInfo.price | NumFormat }}</div>
                         </div>
-                        <div class="svip-indent">套餐12个月</div>
+                        <div class="svip-indent">套餐{{ comboInfo.durationTime }}个月</div>
                     </div>
                 </div>
             </template>

+ 2 - 4
src/main/resources/templates/user-center/member/member-product.html

@@ -63,9 +63,7 @@
 <template th:replace="components/footer"></template>
 <template th:replace="components/foot-link"></template>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/center.js(v=${version})}"></script>
-<script charset="utf-8" type="text/javascript"
-        th:src="@{/js/common/serviceapi/product.service.js(v=${version})}"></script>
-<script charset="utf-8" type="text/javascript"
-        th:src="@{/js/user-center/member/memberProduct.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/product.service.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/user-center/member/memberProduct.js(v=${version})}"></script>
 </body>
 </html>

+ 13 - 38
src/main/resources/templates/user-center/member/member-record.html

@@ -24,52 +24,27 @@
             <!--左侧导航-->
             <template th:replace="user-center/components/tableft"></template>
             <div class="right">
+                <!--会员信息-->
                 <!--会员信息-->
                 <div class="vip-bar">
-                    <div class="left-box row2">
-                        <!--未开通-->
-                        <template v-if="true">
-                            <span>采美·超级会员</span>
-                            <span>享专属特权</span>
-                        </template>
-                        <!-- 已开通 未过期 -->
-                        <template v-if="false">
-                            <span>采美·超级会员</span>
-                            <span>有效期:2021-10-01</span>
-                        </template>
-                        <!-- 已过期 -->
-                        <template v-if="false">
-                            <span class="error">采美·超级会员已过期</span>
-                            <span>有效期:2021-10-01</span>
-                        </template>
-                    </div>
+                    <div class="left-box" :class="isPC ? 'row1' : 'row2'" v-html="svipTips"></div>
                     <div class="right-box">
-                        <template v-if="false">
-                            <a href="" class="link">购买记录</a>
-                            <a href="" class="btn">续费</a>
-                        </template>
+<!--                        <template v-if="vipInfo.vipFlag !== 0">-->
+<!--                            <a href="/user/member-record.html" class="link">购买记录</a>-->
+<!--                            <a href="javascript:void(0)" @click="handleShowRenewPopup" class="btn">续费</a>-->
+<!--                        </template>-->
                     </div>
                 </div>
                 <!--记录列表-->
                 <div class="record-list">
-                    <div class="record">
-                        <div class="desc">
-                            <span>超级会员-1个月</span>
-                            <span>2021-09-12 11:53:26</span>
-                        </div>
-                        <div class="amount">
-                            <span v-if="true">60000采美豆</span>
-                            <span v-else>¥1200</span>
-                        </div>
-                    </div>
-                    <div class="record">
+                    <div class="record" v-for="(item, index) in recordList" :key="index">
                         <div class="desc">
-                            <span>超级会员-3个月</span>
-                            <span>2021-09-12 11:53:26</span>
+                            <span>超级会员-{{ durationTime(item.packageId) }}个月</span>
+                            <span>{{ moment(item.payTime).format('yyyy-MM-DD hh:mm:ss') }}</span>
                         </div>
                         <div class="amount">
-                            <span v-if="false">60000采美豆</span>
-                            <span v-else>¥1200</span>
+                            <span v-if="item.price">¥{{ item.price.toFixed(2) }}</span>
+                            <span v-else>{{ item.userBeans }}采美豆</span>
                         </div>
                     </div>
                 </div>
@@ -130,9 +105,9 @@
 <!-- 引入底部 -->
 <template th:replace="components/footer"></template>
 <template th:replace="components/foot-link"></template>
+<script charset="utf-8" type="text/javascript" src="/lib/datapicker/moment-2.29.min.js"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/center.js(v=${version})}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/user.service.js(v=${version})}"></script>
-<script charset="utf-8" type="text/javascript"
-        th:src="@{/js/user-center/member/memberRecord.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/user-center/member/memberRecord.js(v=${version})}"></script>
 </body>
 </html>

+ 25 - 85
src/main/resources/templates/user-center/member/member.html

@@ -29,8 +29,8 @@
                     <div class="left-box" :class="isPC ? 'row1' : 'row2'" v-html="svipTips"></div>
                     <div class="right-box">
                         <template v-if="vipInfo.vipFlag !== 0">
-                            <a href="" class="link">购买记录</a>
-                            <a href="" class="btn">续费</a>
+                            <a href="/user/member-record.html" class="link">购买记录</a>
+                            <a href="javascript:void(0)" @click="handleShowRenewPopup" class="btn">续费</a>
                         </template>
                     </div>
                 </div>
@@ -96,82 +96,23 @@
                 <div class="section">
                     <div class="section-title clear">优惠商品<a href="/user/member-product.html">查看更多&gt;</a></div>
                     <div class="content goods-list">
-                        <div class="goods" v-for="i in 5">
-                            <a href="">
-                                <img src="/img/base/placeholder.png"/>
-                                <div class="goods-title cm-text-ellipsis-2">华熙生物润百颜液体华熙生物润百颜</div>
+                        <div class="goods" v-for="(product, index) in productList" :key="index">
+                            <a :href="'/product-' + product.productId + '.html'">
+                                <img src="/img/base/placeholder.png" :data-original="product.image"/>
+                                <div class="goods-title cm-text-ellipsis-2" v-html="product.name"></div>
                                 <div class="goods-tag">
-                                    <span class="tag styl1">优惠券</span>
-                                    <span class="tag styl2">单品满赠</span>
-                                </div>
-                                <!-- v-if="pros.listType == 1" -->
-                                <div class="page_main_price" v-if="false">
-                                    <!-- 商品价格 -->
-                                    <div class="main_price_text">
-                                        <!-- 正常商品 -->
-                                        <template v-if="pros.product.productCategory == 1">
-                                            <div class="price_text_tag">
-                                                <!-- <p class="couponTag" v-if="pros.product.couponsLogo">优惠券</p>-->
-                                                <p class="listTag"
-                                                   v-if="pros.product.actStatus ==1 && pros.product.promotions">
-                                                    <span v-text="pros.product.promotions.name"></span>
-                                                    <template v-if="PromotionsFormat(pros.product.promotions)">
-                                                        <!--单品优惠:优惠价-->
-                                                        <span class="price_unit">:¥</span><span class="price_num">{{ pros.product.price | NumFormat }}</span>
-                                                    </template>
-                                                </p>
-                                            </div>
-                                            <div class="main_price_login">
-                                                <!--0公开价格 1不公开价格 2仅对会员机构公开-->
-                                                <template v-if="pros.product.priceFlag == 1">
-                                                    <em class="price_grade"><span>¥</span>价格未公开</em>
-                                                </template>
-                                                <template v-else>
-                                                    <template v-if="PromotionsFormat(pros.product.promotions)">
-                                                        <!--单品优惠时的划线价-->
-                                                        <div class="main_price_show none">
-                                                            ¥<span class="price_o_num">{{ pros.product.originalPrice | NumFormat }}</span>
-                                                        </div>
-                                                    </template>
-                                                    <template
-                                                            v-else-if="(pros.product.priceFlag==0 && pros.product.userIdentity!=3) || pros.product.userIdentity==2 || (pros.product.userIdentity==3 && pros.product.shopID==GLOBAL_SHOP_ID)">
-                                                        <!--机构价-->
-                                                        <div class="main_price_show">¥<span class="price_num">{{ pros.product.price | NumFormat }}</span>
-                                                        </div>
-                                                    </template>
-                                                    <template
-                                                            v-else-if="pros.product.priceFlag==2 && pros.product.userIdentity==4">
-                                                        <em class="price_grade_club">
-                                                            <span>¥</span>会员可见
-                                                        </em>
-                                                    </template>
-                                                    <template v-else>
-                                                        <!--供应商除自己的商品外,也显示价格等级-->
-                                                        <em class="price_grade_shop">
-                                                            <span class="bold">¥</span><i
-                                                                :class="'icon mIcon price_grade_'+pros.product.priceGrade"></i>
-                                                        </em>
-                                                    </template>
-                                                </template>
-                                            </div>
-                                        </template>
-                                        <!-- 二手商品 -->
-                                        <template v-else>
-                                            <div class="main_price_login">
-                                                <div class="price_text_tag"></div>
-                                                <div v-if="pros.product.detailTalkFlag==2" class="main_price_show">¥价格祥聊
-                                                </div>
-                                                <div v-else class="main_price_show">
-                                                    ¥<span class="price_num">{{ pros.product.price | NumFormat }}</span>
-                                                </div>
+                                    <span class="tag styl1" v-if="true">优惠券</span>
+                                    <div class="svip-tag">
+                                        <div class="svip-icon " :class="{ btr: product.priceFlag != 1 && product.userIdentity === 2 }">SVIP</div>
+                                        <!-- 公开价格 && (个人机构 || 资质机构) && 开通SVIP 可查看价格-->
+                                        <template v-if="product.priceFlag != 1 && (product.userIdentity === 4 && GLOBAL_VIP_FLAG === 1) || product.userIdentity === 2">
+                                            <div class="svip-price">
+                                                <span v-html="product.svipPriceTag"></span>
                                             </div>
                                         </template>
                                     </div>
                                 </div>
-                                <div class="svip-price">
-                                    <span class="svip-icon">SVIP</span>
-                                    <span class="amount">¥99999</span>
-                                </div>
+                                <div class="goods-price" v-html="makePrice(product)"></div>
                             </a>
                         </div>
                     </div>
@@ -180,7 +121,7 @@
         </div>
     </div>
     <!--底部支付按钮 仅未开通和到期显示-->
-    <div class="pay-amount-bottom">
+    <div class="pay-amount-bottom" v-if="GLOBAL_VIP_FLAG === 0">
         <div>
             <div class="pay-btn plain">
                 <a href="javascript:void(0);" @click="payAction(1)">
@@ -198,19 +139,17 @@
     <div class="mask" v-if="showMask"></div>
     <!--续费弹窗-->
     <div class="renew-popup" v-if="showRenewPopup">
-        <div class="popup-title">超级会员套餐<span class="close">&times;</span></div>
+        <div class="popup-title">超级会员套餐<span class="close" @click="handleCloseRenewPopup">&times;</span></div>
         <div class="content combo-list">
             <div>
-                <div>
-                    <template v-for="(item, index) in comboInfo">
-                        <div class="combo" :class="{active: index === currentIndex,recommend: item.recommend}"
-                             :key="index" @click="chooseCombo(index)">
-                            <div class="how-mounts">{{ item.durationTime }}个月</div>
-                            <div class="price"><i>¥</i>{{ item.price }}</div>
-                            <div class="average">{{ item.price / item.durationTime }}元/月</div>
-                        </div>
-                    </template>
-                </div>
+                <template v-for="(item, index) in comboInfo">
+                    <div class="combo" :class="{active: index === currentIndex,recommend: item.recommend}"
+                         :key="index" @click="chooseCombo(index)">
+                        <div class="how-mounts">{{ item.durationTime }}个月</div>
+                        <div class="price"><i>¥</i>{{ item.price }}</div>
+                        <div class="average">{{ item.price / item.durationTime }}元/月</div>
+                    </div>
+                </template>
             </div>
             <div>
                 <div class="pay-btn">
@@ -240,6 +179,7 @@
 <script charset="utf-8" type="text/javascript" src="/lib/datapicker/moment-2.29.min.js"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/center.js(v=${version})}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/user.service.js(v=${version})}"></script>
+<script charset="utf-8" type="text/javascript" th:src="@{/js/common/serviceapi/product.service.js(v=${version})}"></script>
 <script charset="utf-8" type="text/javascript" th:src="@{/js/user-center/member/memberPage.js(v=${version})}"></script>
 </body>
 </html>

+ 4 - 4
src/main/resources/templates/user-center/order/detail.html

@@ -110,14 +110,14 @@
                                                     <p class="col" v-if="pros.productCategory != 2">规格:<span class="none">{{pros.productUnit ? pros.productUnit : ''}}</span> </p>
                                                     <p class="col">数量:<span class="none">{{pros.num}}</span> </p>
                                                     <div class="col">
-                                                        <template v-if="pros.svipProductFlag === 1">
+                                                        <template v-if="pros.svipPriceFlag === 1">
                                                             <span>单价: </span>
                                                             <span class="none"><del>¥{{pros.price | NumFormat}}</del></span>
                                                             <!--超级会员价格标签-->
                                                             <div class="svip-tag" >
-                                                                <div class="svip-icon" :class="{ btr: pros.priceFlag != 1 && pros.userIdentity === 2 }">SVIP</div>
-                                                                <div class="svip-price" v-if="pros.priceFlag != 1 && ((pros.userIdentity === 4 && GLOBAL_VIP_FLAG === 1) || pros.userIdentity === 2)">
-                                                                    <span>¥</span><span v-html="pros.price"></span>
+                                                                <div class="svip-icon btr">SVIP</div>
+                                                                <div class="svip-price" v-if="pros.svipPriceType === 2">
+                                                                    <span v-html="pros.svipPriceTag"></span>
                                                                 </div>
                                                             </div>
                                                         </template>