Merge branch 'sit-Carl' into sit-jiamin-v2

This commit is contained in:
952108534@qq.com 2022-01-17 20:46:45 +08:00
commit d6611ba681
61 changed files with 1827 additions and 30640 deletions

View File

@ -201,10 +201,13 @@ export const userque = (stype) => {
//标品全部信息 //标品全部信息
export const biaomessage = (stype,name) => { export const biaomessage = (stype,name,curPage,curRow) => {
console.log(stype); if(!curPage)
curPage=1;
if(!curRow)
curRow=10;
let queryTail='&page='+curPage+'&rows='+curRow;
if(stype.length>1){ if(stype.length>1){
console.log("========");
let list={}; let list={};
stype.map(item=>{ stype.map(item=>{
console.log(item); console.log(item);
@ -215,18 +218,10 @@ export const biaomessage = (stype,name) => {
str = str + key + "=" + list[key] + "&"; str = str + key + "=" + list[key] + "&";
} }
stype = str.substr(0,str.length-1); stype = str.substr(0,str.length-1);
var data = { return fetch('product/query'+stype+queryTail, '', 'POST' )
page:1,
row:10
}
return fetch('product/query'+stype, data, 'POST' )
}else{ }else{
console.log('-=='); return fetch('product/query?petType='+stype+queryTail, '', 'POST' )
return fetch('product/query?petType='+stype,data, 'POST' )
} }
} }
export const searchchanpin = (stype) => { export const searchchanpin = (stype) => {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

View File

@ -132,7 +132,7 @@ margin-top: 8px;
} }
.rc-footer { .rc-footer {
display: flex; display: flex;
align-items:flex-end align-items:flex-end;
span { span {
width: 72px; width: 72px;
height: 25px; height: 25px;

View File

@ -38,8 +38,7 @@ img, picture {
flex-wrap: wrap; flex-wrap: wrap;
justify-content: space-evenly; justify-content: space-evenly;
&:after{ &:after{
content:"";
width:154px;
} }
li{ li{
border: 1px solid #D7D7D7; border: 1px solid #D7D7D7;
@ -151,11 +150,9 @@ img, picture {
flex-wrap: nowrap; flex-wrap: nowrap;
text-align: center; text-align: center;
width: 86%; width: 86%;
&::-webkit-scrollbar{
display:none;
}
li{ li{
border-radius: 100px; border-radius: 100px;
flex-shrink:0;
} }
} }
.active{ .active{
@ -345,6 +342,9 @@ img, picture {
font-size:.75rem; font-size:.75rem;
line-height: 1.375rem; line-height: 1.375rem;
} }
&::-webkit-scrollbar{
display:none;
}
} }
} }
@ -369,17 +369,25 @@ img, picture {
display:block; display:block;
li{ li{
max-width:20rem; max-width:20rem;
margin-right:.9rem; //margin-right:.875rem;
margin-left:.9rem; margin-left:2.2vw;
.rc-column{ .rc-column{
span{ span{
font-size:1.875rem; font-size:1.875rem;
height: 5.2rem; height: 5.2rem;
} }
} }
&:nth-child(4n+1){
margin-left:0;
}
&:nth-child(4n){
//margin-right:0;
}
} }
img{ img{
width:20rem; width:21.7vw;
max-width:320px;
min-width:160px;
} }
} }
.ts-right-arr { .ts-right-arr {
@ -489,12 +497,30 @@ img, picture {
{ {
li li
{ {
margin-left: 40px; margin-left: 30px;
width: 8.125rem; width: 8.125rem;
height: 2.5rem; height: 2.5rem;
line-height: 40px; line-height: 40px;
font-size: .875rem; font-size: .875rem;
} }
/*
&::-webkit-scrollbar{
background:unset;
height:4px;
}
&::-webkit-scrollbar-thumb{
background-color:#d7d7d7;
height:2px;
}
&::-webkit-scrollbar-track{
background-color:ddd;
height:2px;
}
&::-webkit-scrollbar-button{
background:unset;
}
*/
} }
} }
@ -512,3 +538,14 @@ img, picture {
display: none!important; display: none!important;
} }
} }
@media screen and (min-width: 769px) and (max-width: 1370px)
{
.ts-product-list {
display:flex;
justify-content: space-between;
li{
margin-left:0;
margin-right:0;
}
}
}

View File

@ -5,6 +5,36 @@
/deep/.van-swipe__indicator--active{ /deep/.van-swipe__indicator--active{
background-color: #E1001A; background-color: #E1001A;
} }
.rc-ma{
.ul-zhuan{
li{
background: unset;;
img{
border-radius: 50%;
}
&.active {
img{
border: 3px solid #E2001A;
}
color: #E2001A;
}
&.unactive {
color: #444444;
img{
border: 3px solid #D7D7D7;
}
}
}
}
}
.uservideo{
overflow: hidden;
video{
height:100%;
width:auto;
}
}
@media screen and (max-width:768px){ @media screen and (max-width:768px){
.ul-dog{ .ul-dog{
display: none; display: none;
@ -24,16 +54,14 @@
display: block; display: block;
} }
img{ img{
width: 0.64rem; width: 4rem;
height: 0.64rem; height: 4rem;
display: block; display: block;
} }
li{ li{
display: inline-block; display: inline-block;
margin-left: 0.20rem; margin-left: 0.20rem;
width: 0.64rem;
text-align: center; text-align: center;
height: 0.64rem;
background: #F6F6F6; background: #F6F6F6;
border-radius: 50%; border-radius: 50%;
opacity: 1; opacity: 1;
@ -97,7 +125,6 @@
height: 26.31rem; height: 26.31rem;
width: 100%; width: 100%;
font-size: 0.20px; font-size: 0.20px;
line-height: 1.50rem;
text-align: center; text-align: center;
position: relative; position: relative;
} }
@ -260,12 +287,7 @@
li{ li{
display: inline-block; display: inline-block;
margin-left: 1.25rem; margin-left: 1.25rem;
width: 4rem;
text-align: center; text-align: center;
height: 4rem;
background: #F6F6F6;
border-radius: 50%;
opacity: 1;
} }
} }
@ -281,14 +303,15 @@
} }
.active { .active {
font-size: 0.14rem; font-size: 0.14rem;
border: 1px solid red; img{
color: red; border-width: 1px;
}
} }
.unactive { .unactive {
font-size: 0.14rem; font-size: 0.14rem;
color: #444444; img{
border: 1px solid #D7D7D7; border-width: 1px;
}
} }
// .usermain{ // .usermain{
// display: none; // display: none;
@ -314,7 +337,6 @@ object-fit: cover;
height: 100%; height: 100%;
width: 100%; width: 100%;
font-size: 1.25rem; font-size: 1.25rem;
line-height: 9.375rem;
text-align: center; text-align: center;
@ -415,8 +437,6 @@ object-fit: cover;
width: 35rem; width: 35rem;
height: 31.6rem; height: 31.6rem;
display: block; display: block;
border: 1px solid red;
} }
.userleft{ .userleft{
position: absolute; position: absolute;
@ -494,23 +514,18 @@ img{
flex-wrap: wrap; flex-wrap: wrap;
flex-direction: row; flex-direction: row;
span{ span{
margin-top: 2.5rem; margin-top: 1vw;
display: block; display: block;
} }
img{ img{
width: 9.5rem; width: 10vw;
height: 9.5rem; height: 10vw;
display: block; display: block;
} }
li{ li{
cursor: pointer; cursor: pointer;
font-size: 16px; font-size: 16px;
width: 9.875rem;
text-align: center; text-align: center;
height: 9.875rem;
background: #F6F6F6;
border-radius: 50%;
margin-left:1.25rem;
} }
} }
@ -525,8 +540,6 @@ img{
} }
.usermain{ .usermain{
margin-top: 2.5rem;
padding-bottom: 2.82rem;
.ul-dog{ .ul-dog{
width: 100%; width: 100%;
display: flex; display: flex;
@ -595,14 +608,15 @@ margin-left: 2.5rem;
} }
.active { .active {
font-size: 1rem; font-size: 1rem;
border: 3px solid red; img{
color: red; border-width: 3px;
}
} }
.unactive { .unactive {
font-size: 1rem; font-size: 1rem;
color: #444444; img{
border: 1px solid #D7D7D7; border-width: 1px;
}
} }
.rc-maa{ .rc-maa{
ul{ ul{
@ -637,13 +651,10 @@ border-radius: 50%;
.userselection { .userselection {
font-size: 0.16rem; font-size: 0.16rem;
color: #E2001A; color: #E2001A;
} }
.unselection { .unselection {
font-size: 0.16rem; font-size: 0.16rem;
} }
.rc-usermessage{ .rc-usermessage{
span{ span{
@ -653,3 +664,14 @@ color: #E2001A;
} }
} }
} }
@media screen and (min-width:600px) and (max-width:768px)
{
.ul-zhuan{
display: flex;
justify-content: space-evenly;
li{
margin-left:0;
}
}
}

View File

@ -140,6 +140,7 @@ ul li ol li em strong i {
} }
.rc-cordd{ .rc-cordd{
color:#666666; color:#666666;
position:relative;
span{ span{
display: inline-block; display: inline-block;
margin-top: 16px; margin-top: 16px;
@ -249,6 +250,13 @@ ul li ol li em strong i {
width: 440px; width: 440px;
height: 652px; height: 652px;
} }
.ts-mypersonal{
margin-left:0;
.rc-column{
padding-left:0;
padding-right:0;
}
}
.online{ .online{
margin:40px auto; margin:40px auto;
} }
@ -366,13 +374,25 @@ ul li ol li em strong i {
background: #D7D7D7; background: #D7D7D7;
margin-top: 16px; margin-top: 16px;
border-radius: 4px; border-radius: 4px;
position:relative;
margin-top:3.32rem;
.r-block{ .r-block{
width: 0%; width: 0%;
height: 100%; height: 100%;
background: #008900; background: #008900;
} }
.ts-point-tag{
background:url("../image/img-pointBg.png") no-repeat center top;
background-size:contain;
height:2.375rem;
width:3.625rem;
text-align:center;
position:absolute;
font-size:.875rem;
line-height:2rem;
left:0;
top:-2.6rem;
}
} }
.rc-value{ .rc-value{
display: flex; display: flex;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

View File

@ -379,21 +379,23 @@
</div> </div>
</template> </template>
<script> <script>
const isReload={
needload:false
};
export default { export default {
data() { data() {
return { return {
headerScroll:false, headerScroll:false,
loginornot:true,// loginornot:true,//
usermessage:null,// usermessage:null,//
}; };
}, },
created(){
},
mounted() { mounted() {
// //
let usernot=JSON.parse(localStorage.getItem("userInfo")); let usernot=JSON.parse(localStorage.getItem("userInfo"));
console.log(usernot); //console.log(usernot);
if(usernot==null ||usernot==undefined){ if(usernot==null ||usernot==undefined){
console.log(usernot); console.log(usernot);
this.loginornot=true this.loginornot=true
@ -401,21 +403,53 @@ export default {
this.loginornot=false this.loginornot=false
this.usermessage=usernot; this.usermessage=usernot;
} }
console.log(this.loginornot); //debugger;
if(isReload.needload)
location.reload();
if(isReload.needload==false)
isReload.needload=true;
//console.log(this.loginornot);
/*
if(RCDL && RCDL.utilities && RCDL.navigation && RCDL.navigation.rebuild)
{
if (["sm", "xs", "md-1"].includes(RCDL.utilities.breakpoints.values.width.current)) {
this.refreshMobileNav();
}
else
{
this.refreshDesktopNav();
}
}
*/
}, },
methods: { methods: {
refreshDesktopNav:function(){
RCDL.navigation.currentState=null;
RCDL.navigation.rebuild();
},
refreshMobileNav:function(){
let itemGroupList=document.querySelectorAll("nav[data-toggle-group=mobile] .rc-list--align[role=menu]");
itemGroupList.forEach(function(ele,i){
if(ele.className.indexOf("rc-expand--horizontal")<0 && ele.className.indexOf("rc-btn-offset--top")<0)
{
if(ele.id.indexOf("nav-list")>=0)
ele.classList.add("rc-expand--horizontal");
else if(ele.id.indexOf("nav-footer")>=0)
ele.classList.add("rc-expand--vertical");
}
})
},
bindTracking: function(){ bindTracking: function(){
console.log('bindTracking'); //console.log('bindTracking');
}, },
// //
// //
searchturn(){ searchturn(){
this.$router.push({ name: "usersearch-search", this.$router.push({ name: "usersearch-search",})
})
}, },
// //
turnlogin(){ turnlogin(){

View File

@ -1,288 +0,0 @@
<template>
<div class="magnify">
<div class="left_contaner">
<div class="middle_img" @mouseover="boxMouseOver" @mouseleave="boxMouseLeave">
<img :src="middleImg" alt="" style="width:100%">
<div class="shade" @mouseover="shadeMouseOver" @mousemove="shadeMouseMove" ref="shade" v-show="isShade"></div>
</div>
<div class="carousel">
<div class="left_arrow arrow" @click="leftArrowClick">
<img src="../assets/image/userleft.jpg" alt="">
</div>
<div class="show_box">
<ul class="picture_container" ref="middlePicture">
<li class="picture_item" @click="tabPicture(item,index)" v-for="(item, index) in pictureList" :key="index">
<img :src="item.attachmentPath" class="small_img" alt="">
</li>
</ul>
</div>
<div class="right_arrow arrow" @click="rightArrowClick">
<img src="../assets/image/userright.png" alt="">
</div>
</div>
</div>
<div class="right_contanier" v-show="isBig">
<img :src="middleImg" ref="bigImg" class="big_img" alt="">
</div>
</div>
</template>
<script>
import $ from 'jquery'
export default {
props:['parentmsg'],
props: {
tableLabelTest:Array,
imgList: Array, //
zoom: {
default: 2, // ,
type: Number
}
},
data() {
return {
middleImgWidth:350,
middleImgHeight:350,
thumbnailHeight:100,
tableLabelTest1:this.tableLabelTest,
pictureList: [
{url: require("../assets/four.png")},
{url: require("../assets/cat.png")},
{url: require("../assets/one.png")},
{url: require("../assets/six.png")},
{url: require("../assets/six.png")},
{url: require("../assets/six.png")},
{url: require("../assets/four.png")},
{url: require("../assets/cat.png")},
{url: require("../assets/one.png")},
{url: require("../assets/six.png")},
{url: require("../assets/six.png")},
{url: require("../assets/six.png")},
],
menu:[],
middleImg: '', //
bigImg: '', //
isShade: false, //
isBig: false, //
initX: 0, // clientX
initY: 0, // clientY
leftX: 0, // left
topY: 0, // top
middleLeft: 0, // left,
itemWidth: 80, //
}
},
watch:{
data:'ifadroind',// methods
inputName: function(newValue) {
this.pictureList=newValue;
this.menu=newValue;
console.log(this.newValue);
}
},
created() {
},
mounted() {
let user= JSON.parse(localStorage.getItem("message"));
console.log(user);
if(user!==null){
this.pictureList=user;
}
if (user && user.length) {
this.pictureList = user
}
this.middleImg = this.pictureList[0].attachmentPath;
console.log(this.middleImg);
// ,4,50
// this.itemWidth = (this.middleImgWidth-30) / 2
this.ifadroind();
this.$nextTick(() => {
console.log(this.menu);
//
const imgWidth = this.middleImgHeight + this.thumbnailHeight + 20
//
// $('.magnify').css({
// width: this.middleImgWidth,
// height: imgWidth
// })
//
$('.middle_img .shade').css({
width: this.middleImgWidth/this.zoom,
height: this.middleImgHeight/this.zoom
})
//
$('.carousel').css({
height: this.thumbnailHeight
})
//
// $('.picture_item').css({
// width: this.itemWidth
// })
// ,left
$('.right_contanier').css({
left: this.middleImgWidth,
width: imgWidth,
height: imgWidth
})
// ()
$('.right_contanier .big_img').css({
width: imgWidth * this.zoom,
height: imgWidth * this.zoom
})
})
},
methods: {
//
ifadroind(){
var sUserAgent = navigator.userAgent.toLowerCase();
var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
var bIsMidp = sUserAgent.match(/midp/i) == "midp";
var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";
var bIsAndroid = sUserAgent.match(/android/i) == "android";
var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";
var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";
if ((bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM)) {
//Mob Screen
}else{
//PC screen size
this.middleImgWidth=560;
this.middleImgHeight=560;
}
$('.middle_img').css({
width: this.middleImgWidth,
height: this.middleImgHeight
})
},
// ,,
boxMouseOver (e) {
e.preventDefault();
e.stopPropagation();
this.isShade = true
this.isBig = true
//
let x = e.offsetX - $('.shade').width()/2
let y = e.offsetY - $('.shade').height()/2
let maxLeft = $('.middle_img').width() - $('.shade').width()
let maxTop = $('.middle_img').height() - $('.shade').height()
x = x <= 0 ? 0 : x
x = x >= maxLeft ? maxLeft : x
y = y <= 0 ? 0 : y
y = y >= maxTop ? maxTop : y
$('.shade').css({
left: x,
top: y
})
},
//
shadeMouseMove (e) {
e.preventDefault();
e.stopPropagation();
//x - offsetLeft -
var x = this.getEventPage(e).pageX - $('.middle_img')[0].offsetParent.offsetLeft - $('.middle_img')[0].offsetParent.clientLeft;
//y - offsetTop -
var y = this.getEventPage(e).pageY - $('.middle_img')[0].offsetParent.offsetTop - $('.middle_img')[0].offsetParent.clientTop;
//
x -= $('.shade').width() / 2;
y -= $('.shade').height() / 2;
//
let maxLeft = $('.middle_img').width() - $('.shade').width()
let maxTop = $('.middle_img').height() - $('.shade').height()
x = x <= 0 ? 0 : x
x = x >= maxLeft ? maxLeft : x
y = y <= 0 ? 0 : y
y = y >= maxTop ? maxTop : y
//
$('.shade').css({
left: x,
top: y
})
// ,
// x:/ y: /,
const xRate = $('.big_img').width() / $('.middle_img').width()
const yRate = $('.big_img').height() / $('.middle_img').height()
$('.big_img').css({
left: -x*xRate,
top: -y*yRate
})
// console.log(e, x, y, xRate, yRate, 66677)
},
// ,
shadeMouseOver (e) {
e.preventDefault();
e.stopPropagation();
// console.log(88888, e)
},
//
boxMouseLeave () {
this.isShade = false
this.isBig = false
},
//
tabPicture (item,index) {
this.middleImg = item.attachmentPath
this.$emit('changeName',item)
console.log(item,index)
},
//
leftArrowClick () {
if (this.middleLeft < 0) {
//
this.middleLeft += this.itemWidth
$('.picture_container').animate({
left: this.middleLeft
}, 500)
}
},
//
rightArrowClick () {
// ,(-1)*
if (this.middleLeft > -this.itemWidth*(this.pictureList.length-1)) {
this.middleLeft -= this.itemWidth
$('.picture_container').animate({
left: this.middleLeft
}, 500)
}
},
/**
* 获取网页滚出去的距离包括上面滚出去的部分和左边滚出去的部分
* @returns {{scrollTop: (Number|number), scrollLeft: (Number|number)}}
*/
getPageScroll() {
return {
scrollTop: window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0,
scrollLeft: window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0
}
},
/**
* 获取事件对象点击的点相对于文档左上角的坐标
* @param e
* @returns {{pageX: *, pageY: *}}
*/
getEventPage(e) {
return {
pageX: e.clientX + this.getPageScroll().scrollLeft,
pageY: e.clientY + this.getPageScroll().scrollTop
}
}
}
}
</script>
<style lang="less" scoped>
@import url("../assets/css/magnifier.less");
</style>

View File

@ -50,7 +50,6 @@ export default {
plugins: [ plugins: [
'@/plugins/vant', '@/plugins/vant',
'@/plugins/ElementUI', '@/plugins/ElementUI',
{ src: "~/plugins/swiper.js", ssr: false },
{ src: '@/plugins/localStorage', ssr: false }, { src: '@/plugins/localStorage', ssr: false },

File diff suppressed because it is too large Load Diff

View File

@ -16,12 +16,10 @@
}, },
"dependencies": { "dependencies": {
"@nuxtjs/axios": "^5.13.6", "@nuxtjs/axios": "^5.13.6",
"@vant/touch-emulator": "^1.3.2",
"amfe-flexible": "^2.2.1", "amfe-flexible": "^2.2.1",
"core-js": "^3.15.1", "core-js": "^3.15.1",
"element-ui": "^2.15.6", "element-ui": "^2.15.6",
"ip": "^1.1.5", "ip": "^1.1.5",
"jquery": "^3.6.0",
"less": "^4.1.2", "less": "^4.1.2",
"less-loader": "^6.0.0", "less-loader": "^6.0.0",
"nuxt": "^2.15.7", "nuxt": "^2.15.7",
@ -29,7 +27,8 @@
"qrcodejs2": "^0.0.2", "qrcodejs2": "^0.0.2",
"vant": "^2.12.22", "vant": "^2.12.22",
"vue-awesome-swiper": "^4.1.1", "vue-awesome-swiper": "^4.1.1",
"vuex-persistedstate": "^4.1.0" "vuex-persistedstate": "^4.1.0",
"swiper":"^5.4.5"
}, },
"devDependencies": { "devDependencies": {
"@vant/area-data": "^1.1.5", "@vant/area-data": "^1.1.5",

View File

@ -3,30 +3,22 @@
<div> <div>
<Myheader></Myheader> <Myheader></Myheader>
<div class="rc-top"></div>
<unlogin></unlogin> <unlogin></unlogin>
<!-- Suppose in header end --> <!-- Suppose in header end -->
<van-swipe :autoplay="3000"> <van-swipe :autoplay="3000" class="rc-padding-bottom--md">
<van-swipe-item v-for="(banner, index) in banners" :key="index"> <van-swipe-item v-for="(banner, index) in showingBanners" :key="index">
<img :src="banner.src" class="useraimg"/> <img :src="banner.src" class="useraimg"/>
</van-swipe-item> </van-swipe-item>
</van-swipe> </van-swipe>
<div class="online bold rc-md-down" id="fixed-catbar-seperator"></div> <div class="online bold rc-md-down" id="fixed-catbar-seperator"></div>
<!-- <div v-swiper:mySwiper="swiperOption" class="swiperWrap">
<div class="swiper-wrapper">
<div class="swiper-slide" v-for="(banner,index ) in banners" :key="index">
<img :src="banner.src">
</div>
</div>
<div class="swiper-pagination swiper-pagination-bullets"></div>
</div> -->
<div class="rc-max-width--xl"> <div class="rc-max-width--xl">
<div class="usermain"> <div class="usermain">
<div :class="searchBar?'rc-ma':'rc-ma searchBara'"> <div :class="searchBar?'rc-ma':'rc-ma searchBara'">
<div v-if="!searchBar" class="online bold rc-md-down"></div> <div v-if="!searchBar" class="online bold rc-md-down"></div>
<ul class="ul-zhuan rc-margin-y--xl"> <ul class="ul-zhuan rc-margin-y--md">
<li <li
v-for="(item, index) in discountlist" v-for="(item, index) in discountlist"
:key="index" :key="index"
@ -50,11 +42,13 @@
<div class="swiper-container rc-full-width rc-padding-y--md" id="swiper1"> <div class="swiper-container rc-full-width rc-padding-y--md" id="swiper1">
<h2 class="rc-beta rc-text--center">{{usertitle}}</h2> <h2 class="rc-beta rc-text--center">{{usertitle}}</h2>
<!-- 轮播图 --> <!-- 轮播图 -->
<swiper :options="swiperOption"> <van-swipe class="rc-padding-bottom--md">
<swiper-slide class="swiper-slide" v-for="(item, key) in catlistvideo" :key="key" > <van-swipe-item v-for="(item, index) in catlistvideo" :key="index">
<div class="rc-video"> <div class="rc-video">
<div class="uservideo"> <div class="uservideo">
<video controls="" :poster=item.catimage>
<source :src=item.video type="video/mp4">
</video>
</div> </div>
<div class="rc-right"> <div class="rc-right">
@ -68,8 +62,8 @@
<div class="sw-center" > <div class="sw-center" >
<div class="rc-click" @click="selectproduce(item,index)"> <div class="rc-click" @click="selectproduce(item,index)">
<div class="uservideo"> <div class="uservideo">
<video width="300px" height="251" controls="controls"> <video controls="controls" :poster=item.catimage>
<source :src= item.video type="video/ogg" autoplay> <source :src= item.video type="video/ogg">
</video> </video>
</div> </div>
@ -82,9 +76,8 @@
<i @click="userbuy(item,index)" class="ts-standard-btn ts-standard-btn--two center">立即购买</i> <i @click="userbuy(item,index)" class="ts-standard-btn ts-standard-btn--two center">立即购买</i>
</div> </div>
</div> </div>
</van-swipe-item>
</swiper-slide> </van-swipe>
</swiper>
</div> </div>
@ -280,16 +273,18 @@
<div class="online bold" v-show="dogshow"></div> <div class="online bold" v-show="dogshow"></div>
<div class="pageFullScreen" id="xxxFullScreen" v-show="dogshow" ref="mingxing"> <div class="pageFullScreen" id="xxxFullScreen" v-show="dogshow" ref="mingxing">
<!-- 内容 --> <!-- 内容 -->
<div class="swiper-container rc-full-width rc-padding-y--md" id="swiper1"> <div class="swiper-container rc-full-width rc-padding-y--md" id="swiper2">
<div class="oc-top"> <div class="oc-top">
<h2 class="rc-beta rc-text--center">{{dogtitle}}</h2> <h2 class="rc-beta rc-text--center">{{dogtitle}}</h2>
</div> </div>
<!-- 轮播图 --> <!-- 轮播图 -->
<swiper :options="swiperOption"> <van-swipe class="rc-padding-bottom--md">
<swiper-slide class="swiper-slide" v-for="(item, key) in doglistvideo" :key="key" > <van-swipe-item v-for="(item, key) in doglistvideo" :key="key">
<div class="rc-video"> <div class="rc-video">
<div class="uservideo"> <div class="uservideo">
<video controls="" :poster=item.catimage>
<source :src=item.video type="video/mp4">
</video>
</div> </div>
<div class="rc-right"> <div class="rc-right">
@ -303,8 +298,8 @@
<div class="sw-center" > <div class="sw-center" >
<div class="rc-click" @click="selectproduce(item,index)"> <div class="rc-click" @click="selectproduce(item,index)">
<div class="uservideo"> <div class="uservideo">
<video width="300px" height="251" controls="controls"> <video controls="controls">
<source :src= item.video type="video/ogg" autoplay> <source :src= item.video type="video/ogg">
</video> </video>
</div> </div>
@ -318,15 +313,17 @@
</div> </div>
</div> </div>
</swiper-slide> </van-swipe-item>
</swiper> </van-swipe>
</div> </div>
</div> </div>
<div class="online bold" v-show="threemao"></div> <div class="online bold" v-show="threemao"></div>
<div class="selectionswitch rc-full-width rc-max-width--xl rc-padding-y--md" v-show="threemao" ref="doggshi"> <div class="selectionswitch rc-full-width rc-max-width--xl rc-padding-y--md" v-show="threemao" ref="doggshi">
<h2 class="rc-beta rc-text--center">全价犬湿粮</h2> <h2 class="rc-beta rc-text--center">全价犬湿粮</h2>
<van-tabs @change='userdog' class="van-tabs"> <van-tabs @change='userdog' class="van-tabs">
@ -707,11 +704,9 @@
</template> </template>
<script> <script>
let vm=null; let vm=null;
import $ from 'jquery'
import Myheader from "~/components/header.vue"; import Myheader from "~/components/header.vue";
import Myfooter from "~/components/rc-footer.vue"; import Myfooter from "~/components/rc-footer.vue";
import unlogin from "~/components/unlogin.vue"; import unlogin from "~/components/unlogin.vue";
import '@vant/touch-emulator';
import { userquery,postCourseId,biaomessage,userque,searchchanpin } from "../ajax/getData"; import { userquery,postCourseId,biaomessage,userque,searchchanpin } from "../ajax/getData";
const settings = require("@/config"); const settings = require("@/config");
export default { export default {
@ -773,7 +768,6 @@ activeInde3:0,
selection:[ selection:[
{ {
title: "幼猫", title: "幼猫",
}, },
{ {
title: "成猫", title: "成猫",
@ -783,21 +777,24 @@ activeInde3:0,
}, },
{ {
title: "品种猫", title: "品种猫",
}, },
{ {
title: "亚健康", title: "亚健康",
}, },
], ],
banners:{
banners:[ 'mobile':[
{src:require("../assets/image/one.jpg"),link:""}, {src:"/images/banner/one.jpg",link:""},
{src:require("../assets/image/two.jpg"),link:""}, {src:"/images/banner/two.jpg",link:""},
{src:require("../assets/image/three.jpg"),link:""}, {src:"/images/banner/three.jpg",link:""},
{src:require("../assets/image/four.jpg"),link:""}, {src:"/images/banner/four.jpg",link:""}
], ],
'pc':[
{src:"/images/banner/pc-banner1.png",link:""},
{src:"/images/banner/pc-banner2.png",link:""}
]
},
showingBanners:[],
userdoglist: [ userdoglist: [
{ {
title: "小型犬", title: "小型犬",
@ -916,29 +913,29 @@ activeInde3:0,
catlistvideo: [ catlistvideo: [
{ {
title: "明星猫粮", title: "明星猫粮",
video:require("../assets/cat/one.mp4"), video:"/images/cat/one.mp4",
catimage: require("../assets/cat/one.jpg"), catimage: "/images/cat/one.jpg",
detail:'为10月龄及以上英国短毛猫成猫量身打造的精准营养', detail:'为10月龄及以上英国短毛猫成猫量身打造的精准营养',
price:'¥123.45', price:'¥123.45',
}, },
{ {
title: "猫湿粮", title: "猫湿粮",
video:require("../assets/cat/two.mp4"), video:"/images/cat/two.mp4",
catimage: require("../assets/cat/two.jpg"), catimage: "/images/cat/two.jpg",
detail:'为10月龄及以上英国短毛猫成猫量身打造的精准营养', detail:'为10月龄及以上英国短毛猫成猫量身打造的精准营养',
price:'¥123.45', price:'¥123.45',
}, },
{ {
title: "猫干粮", title: "猫干粮",
video:require("../assets/cat/three.mp4"), video:"/images/cat/three.mp4",
catimage: require("../assets/cat/three.jpg"), catimage: "/images/cat/three.jpg",
detail:'为10月龄及以上英国短毛猫成猫量身打造的精准营养', detail:'为10月龄及以上英国短毛猫成猫量身打造的精准营养',
price:'¥123.45', price:'¥123.45',
}, },
{ {
title: "猫干粮", title: "猫干粮",
video:require("../assets/cat/four.mp4"), video:"/images/cat/four.mp4",
catimage: require("../assets/cat/four.jpg"), catimage: "/images/cat/four.jpg",
detail:'为10月龄及以上英国短毛猫成猫量身打造的精准营养', detail:'为10月龄及以上英国短毛猫成猫量身打造的精准营养',
price:'¥123.45', price:'¥123.45',
}, },
@ -948,29 +945,29 @@ activeInde3:0,
doglistvideo: [ doglistvideo: [
{ {
title: "明星狗粮", title: "明星狗粮",
video:require("../assets/dog/one.mp4"), video:"/images/dog/one.mp4",
catimage: require("../assets/dog/one.jpg"), catimage: "/images/dog/one.jpg",
detail:'为10月龄及以上成犬量身打造的精准营养', detail:'为10月龄及以上成犬量身打造的精准营养',
price:'¥123.45', price:'¥123.45',
}, },
{ {
title: "狗湿粮", title: "狗湿粮",
video:require("../assets/dog/two.mp4"), video:"/images/dog/two.mp4",
catimage: require("../assets/dog/two.jpg"), catimage: "/images/dog/two.jpg",
detail:'为10月龄及以上英国成犬量身打造的精准营养', detail:'为10月龄及以上英国成犬量身打造的精准营养',
price:'¥123.45', price:'¥123.45',
}, },
{ {
title: "狗干粮", title: "狗干粮",
video:require("../assets/dog/three.mp4"), video:"/images/dog/three.mp4",
catimage: require("../assets/dog/three.jpg"), catimage: "/images/dog/three.jpg",
detail:'为10月龄及以上英国犬成犬量身打造的精准营养', detail:'为10月龄及以上英国犬成犬量身打造的精准营养',
price:'¥123.45', price:'¥123.45',
}, },
{ {
title: "狗干粮", title: "狗干粮",
video:require("../assets/dog/four.mp4"), video:"/images/dog/four.mp4",
catimage: require("../assets/dog/four.jpg"), catimage: "/images/dog/four.jpg",
detail:'为10月龄及以上英国成犬量身打造的精准营养', detail:'为10月龄及以上英国成犬量身打造的精准营养',
price:'¥123.45', price:'¥123.45',
}, },
@ -999,7 +996,6 @@ activeInde3:0,
title: "皇家英国短毛猫全价湿粮", title: "皇家英国短毛猫全价湿粮",
price:'¥123.45', price:'¥123.45',
ordernum: 1, ordernum: 1,
catimage: require("../assets/image/rc-cat.png"), catimage: require("../assets/image/rc-cat.png"),
}, },
@ -1065,12 +1061,12 @@ activeInde3:0,
}, },
on: { on: {
slideChange(Swiper) { slideChange(Swiper) {
console.log('onSlideChangeEnd',this); //console.log('onSlideChangeEnd',this);
// vm.ifadroind('','',this.realIndex); // vm.ifadroind('','',this.realIndex);
vm.useraindex=this.realIndex; vm.useraindex=this.realIndex;
}, },
tap() { tap() {
console.log('onTap', this); //console.log('onTap', this);
} }
// slideChange() { // slideChange() {
// console.log('onSlideChangeEnd', this); // console.log('onSlideChangeEnd', this);
@ -1092,18 +1088,12 @@ activeInde3:0,
vm=this; vm=this;
}, },
watch:{ watch:{
}, },
mounted(){ mounted(){
const that = this const that = this
this.ifAdoid() this.ifAdoid();
// window.onresize = () => {
// setTimeout(() => {
// this.ifAdoid()
// }, 500);
// }
this.usermessage= JSON.parse(localStorage.getItem("userInfo")); this.usermessage= JSON.parse(localStorage.getItem("userInfo"));
if(this.usermessage==null ||this.usermessage==undefined){ if(this.usermessage==null ||this.usermessage==undefined){
this.userunlogin=true this.userunlogin=true
} }
@ -1111,19 +1101,13 @@ vm=this;
this.userchufang();// this.userchufang();//
this.catmessage();// this.catmessage();//
this.dogmessage();// this.dogmessage();//
// this.usershi();//
// this.userhot();
}, },
destroyed () { destroyed () {
window.removeEventListener('scroll', this.scrollToTop); window.removeEventListener('scroll', this.scrollToTop);
}, },
methods:{ methods:{
ifAdoid(item,index){ ifAdoid(item,index){
console.log(index); //console.log(index);
this.userindex=index; this.userindex=index;
var sUserAgent = navigator.userAgent.toLowerCase(); var sUserAgent = navigator.userAgent.toLowerCase();
var bIsIpad = sUserAgent.match(/ipad/i) == "ipad"; var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
@ -1134,15 +1118,11 @@ vm=this;
var bIsAndroid = sUserAgent.match(/android/i) == "android"; var bIsAndroid = sUserAgent.match(/android/i) == "android";
var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce"; var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";
var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile"; var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";
if (!(bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM)) { if (!(bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM)) {
console.log("当前是电脑打开") console.log("当前是电脑打开")
this.stypechange=false; this.stypechange=false;
console.log(this.usertitle) //console.log(this.usertitle)
// let catshiid=document.querySelectorAll('.selectionswitch');
// catshiid[this.userindex].style.display='none';
// catshiid[this.userindex].style.display='none';
this.catproduct=true; this.catproduct=true;
this.onemao=false; this.onemao=false;
this.twomao=false; this.twomao=false;
@ -1151,9 +1131,12 @@ vm=this;
this.fivemao=false; this.fivemao=false;
this.sixmao=false; this.sixmao=false;
this.dogshow=false this.dogshow=false
// console.log(catshiid); this.showingBanners=this.banners.pc;
}else{ }
else
{
console.log("当前是手机打开") console.log("当前是手机打开")
this.showingBanners=this.banners.mobile;
this.stypechange=true; this.stypechange=true;
this.onemao=true; this.onemao=true;
this.twomao=true; this.twomao=true;
@ -1168,7 +1151,7 @@ vm=this;
}, },
ifadroind(item,index,order){ ifadroind(item,index,order){
console.log(item,index,order); //console.log(item,index,order);
var sUserAgent = navigator.userAgent.toLowerCase(); var sUserAgent = navigator.userAgent.toLowerCase();
@ -1182,7 +1165,7 @@ vm=this;
var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile"; var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";
if (!(bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM)) { if (!(bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM)) {
console.log("当前是电脑打开啊啊啊") //console.log("")
if(item.title=='明星猫粮'){ if(item.title=='明星猫粮'){
this.catproduct=true; this.catproduct=true;
this.twomao=false; this.twomao=false;
@ -1191,12 +1174,14 @@ vm=this;
this.fivemao=false; this.fivemao=false;
this.dogshow=false; this.dogshow=false;
this.sixmao=false; this.sixmao=false;
this.onemao=false; this.onemao=false;
} }
if(item.title=='猫湿粮'){ if(item.title=='猫湿粮'){
this.onemao=true; this.onemao=true;
this.dogshow=false; this.dogshow=false;
console.log(this.onemao); //console.log(this.onemao);
this.twomao=false; this.twomao=false;
this.threemao=false; this.threemao=false;
this.fourmao=false; this.fourmao=false;
@ -1260,11 +1245,11 @@ vm=this;
this.catfood=true; this.catfood=true;
// this.catproduct=false; // this.catproduct=false;
let userindex=index let userindex=index
console.log(item,index); //console.log(item,index);
let mingxin=document.querySelector('.pageFullScreen'); let mingxin=document.querySelector('.pageFullScreen');
let dogtop=document.querySelector('.oc-top'); let dogtop=document.querySelector('.oc-top');
console.log(dogtop); //console.log(dogtop);
console.log(mingxin.offsetTop); //console.log(mingxin.offsetTop);
if(item.title=='犬湿粮'||item.title=='犬干粮'||item.title=='处方用粮'){ if(item.title=='犬湿粮'||item.title=='犬干粮'||item.title=='处方用粮'){
userindex=userindex-2 userindex=userindex-2
}else{ }else{
@ -1286,8 +1271,7 @@ dogtop.scrollIntoView(true);
// this.catfood=false; // this.catfood=false;
// } // }
console.log("当前是手机打开") //console.log("")
} }
}, },
userdog(item,index){ userdog(item,index){
@ -1330,11 +1314,12 @@ dogtop.scrollIntoView(true);
}, },
handleScroll(e) handleScroll(e)
{ {
let fixedCatbarSeperator = document.getElementById("fixed-catbar-seperator");
if(!fixedCatbarSeperator)
{
return;
}
let scrolltop = document.documentElement.scrollTop || document.body.scrollTop; let scrolltop = document.documentElement.scrollTop || document.body.scrollTop;
let fixedCatbarSeperator = document.querySelector("#fixed-catbar-seperator");
// console.log(fixedCatbarSeperator.offsetTop,scrolltop);
if(fixedCatbarSeperator!=='null' &&fixedCatbarSeperator!=='underfined'){
console.log('-====');
if((scrolltop-fixedCatbarSeperator.offsetTop)>0) if((scrolltop-fixedCatbarSeperator.offsetTop)>0)
{ {
this.gotop = true this.gotop = true
@ -1345,10 +1330,6 @@ dogtop.scrollIntoView(true);
this.gotop = false; this.gotop = false;
this.searchBar=true this.searchBar=true
} }
}
}, },
toTop() { toTop() {
let top = document.documentElement.scrollTop || document.body.scrollTop; let top = document.documentElement.scrollTop || document.body.scrollTop;
@ -1370,9 +1351,9 @@ dogtop.scrollIntoView(true);
async catmessage(stype) { async catmessage(stype) {
let data=[]; let data=[];
if(stype==undefined||stype==null){ if(stype==undefined||stype==null){
data = await biaomessage(0); data = await biaomessage(0,'',1,6);
}else{ }else{
data = await biaomessage(this.userserachlist); data = await biaomessage(this.userserachlist,'',1,6);
} }
if(data){ if(data){
this.catlist=data; this.catlist=data;
@ -1380,10 +1361,7 @@ dogtop.scrollIntoView(true);
userlist=data.slice(0,6); userlist=data.slice(0,6);
this.catshi=userlist; this.catshi=userlist;
this.catgan=userlist; this.catgan=userlist;
} }
}, },
// //

View File

@ -47,6 +47,7 @@
<div class="rc-cordd"> <div class="rc-cordd">
<span>距离升级还差:</span> <span class="lackOfPoint">{{ rcvalue }}</span> <span>距离升级还差:</span> <span class="lackOfPoint">{{ rcvalue }}</span>
<div class="block"> <div class="block">
<div class="ts-point-tag rc-md-up">0</div>
<div class="r-block" ref="userblock"></div> <div class="r-block" ref="userblock"></div>
<!-- <el-slider v-model="value" range show-stops :max="10"> </el-slider> --> <!-- <el-slider v-model="value" range show-stops :max="10"> </el-slider> -->
@ -129,7 +130,7 @@
<MyFooter></MyFooter>
</div> </div>
@ -138,6 +139,7 @@
<script> <script>
import Myheader from '~/components/header.vue' import Myheader from '~/components/header.vue'
import MyFooter from '~/components/rc-footer.vue'
import tabs from "@/components/tabs.vue"; import tabs from "@/components/tabs.vue";
export default { export default {
middleware: 'metaTitle', middleware: 'metaTitle',
@ -201,7 +203,8 @@ export default {
}, },
components: { components: {
Myheader, Myheader,
tabs, MyFooter,
tabs
}, },
watch:{ watch:{
@ -405,7 +408,15 @@ this.$router.push({
this.usrnewlist=this.goldmedal; this.usrnewlist=this.goldmedal;
userwidth=100 userwidth=100
} }
this.$refs.userblock.style.width=userwidth+'%' this.$refs.userblock.style.width=userwidth+'%';
let tagEle=document.querySelector('.ts-point-tag');
if(tagEle){
tagEle.innerText=this.userid.availiblePoint;
let tagEleLeft=userwidth-1;
if(tagEleLeft<=0)
tagEleLeft=0;
tagEle.style.left=tagEleLeft+"%";
}
} else{ } else{
console.log('---'); console.log('---');
this.userid=[]; this.userid=[];

View File

@ -7,9 +7,6 @@
<div class="online" id="fixed-catbar-seperator"></div> <div class="online" id="fixed-catbar-seperator"></div>
<div class="rc-top"></div> <div class="rc-top"></div>
<div class="rc-usermain ts-product-detail rc-max-width--xl rc-layout-container rc-two-column rc-border-bottom rc-border-colour--brand4"> <div class="rc-usermain ts-product-detail rc-max-width--xl rc-layout-container rc-two-column rc-border-bottom rc-border-colour--brand4">
<!--
<magnifier v-bind:parentmsg="msg" ></magnifier>
-->
<div class="rc-column"> <div class="rc-column">
<div data-js-carousel="" data-image-gallery="true"> <div data-js-carousel="" data-image-gallery="true">
<div class="rc-carousel rc-carousel__gallery-image" data-zoom-container="328b2e5f-6904-4cac-9709-51ed18d2500f" data-zoom-factor="2"> <div class="rc-carousel rc-carousel__gallery-image" data-zoom-container="328b2e5f-6904-4cac-9709-51ed18d2500f" data-zoom-factor="2">
@ -223,7 +220,6 @@
<script> <script>
import Myheader from "~/components/header.vue"; import Myheader from "~/components/header.vue";
import magnifier from "@/components/magnifier.vue";
import tabs from "@/components/tabs.vue"; import tabs from "@/components/tabs.vue";
import unlogin from "~/components/unlogin.vue"; import unlogin from "~/components/unlogin.vue";
import { mapMutations } from "vuex"; import { mapMutations } from "vuex";
@ -320,7 +316,6 @@ export default {
components: { components: {
Myheader, Myheader,
tabs, tabs,
magnifier,
unlogin, unlogin,
Myfooter Myfooter

View File

@ -1,8 +1,7 @@
// <!-- -->
<template> <template>
<div class="container rc-full-width"> <div class="container rc-full-width">
<Myheader></Myheader> <Myheader></Myheader>
<div class="rc-top"></div>
<div class="content ts-max-width--460"> <div class="content ts-max-width--460">
<h2 class="rc-beta rc-text--center">账号注册</h2> <h2 class="rc-beta rc-text--center">账号注册</h2>
@ -117,12 +116,12 @@ export default {
loading:false, loading:false,
usertitle:true, usertitle:true,
gender: '', gender: '',
inRank:false inRank:false,
ifpassword:false
}; };
}, },
components: { components: {
// Myheader, Myheader,
}, },
computed: { computed: {
usertel () { usertel () {
@ -143,19 +142,6 @@ export default {
return '' return ''
} }
}, },
// test () {
// if (this.sms === ""){
// return ''
// }else if(this.sms.length !== 5){
// return ''
// }else {
// return ''
// }
// }
},
components: {
}, },
mounted(){ mounted(){
}, },
@ -165,32 +151,26 @@ export default {
// //
async usermsg() { async usermsg() {
console.log("-----"); //console.log("-----");
let data = await sendMsg(this.tel); let data = await sendMsg(this.tel);
if(data){ if(data){
console.log(data); //console.log(data);
this.captchadata=data.msgNum; //this.captchadata=data.msgNum;
this.tamp=data.tamp; this.tamp=data.tamp;
this.hash=data.hash; this.hash=data.hash;
} }
}, },
//
async vadmsg() { async vadmsg() {
console.log("-----"); //console.log("-----");
let data = await vadatnmsg(this.captchadata,this.hash,this.tamp); let data = await vadatnmsg(this.sms,this.hash,this.tamp);
if(data){ if(data){
console.log(data); return data;
if(!data.code==1){
return false
} }
}
}, },
checkBox(){ checkBox(){
console.log(event.target.checked) //console.log(event.target.checked)
this.usercheckbox=event.target.checked this.usercheckbox=event.target.checked
}, },
@ -201,7 +181,7 @@ export default {
if(data){ if(data){
console.log(data); console.log(data);
} }
console.log(data); //console.log(data);
}, },
// //
sendCode () { sendCode () {
@ -242,13 +222,13 @@ export default {
return return
} }
if(this.sms!==this.captchadata){ // if(this.sms!==this.captchadata){
this.$message({ // this.$message({
type: 'warning', // type: 'warning',
message: '验证码输入有误请重新输入' // message: ''
}); // });
return // return
} // }
if(this.sms==''){ if(this.sms==''){
this.$message({ this.$message({
type: 'warning', type: 'warning',
@ -261,7 +241,7 @@ export default {
console.log('----'); console.log('----');
this.$message({ this.$message({
type: 'warning', type: 'warning',
message: '请先勾选' message: '请先同意隐私声明和账号使用协议'
}); });
if (!/^[1][3,4,5,7,8][0-9]{9}$/.test(this.tel) || this.tel === "") { if (!/^[1][3,4,5,7,8][0-9]{9}$/.test(this.tel) || this.tel === "") {
this.$message({ this.$message({
@ -273,30 +253,31 @@ export default {
} }
} }
else{ else{
//let user= JSON.parse(localStorage.getItem("userInfo"));
let data = await this.vadmsg();
let user= JSON.parse(localStorage.getItem("userInfo")); if(data.code=="1")
console.log(this.tel); {
let data=await useredit(this.tel); data=await useredit(this.tel);
this.vadmsg(); if(data.code=='1'){
let couponId='0000000123';
this.serdiscount(this.tel,couponId);
setTimeout(() => {
this.serdiscount(this.tel,"0000000140");
}, 100);
setTimeout(() => {
this.serdiscount(this.tel,"0000000122");
}, 500);
this.$router.push({
path: "/",
});
return;
}
}
this.$message({ this.$message({
type: 'warning', type: 'warning',
message: data.msg message: data.msg
}); });
if(data){
let couponId='0000000123';
this.serdiscount(user.data.mobile,couponId);
setTimeout(() => {
this.serdiscount(user.data.mobile,"0000000140");
}, 100);
setTimeout(() => {
this.serdiscount(user.data.mobile,"0000000122");
}, 500);
}
return return
} }

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="container rc-full-width"> <div class="container rc-full-width">
<Myheader></Myheader> <Myheader></Myheader>
<div class="rc-top"></div>
<div class="content ts-max-width--460"> <div class="content ts-max-width--460">
<h2 class="rc-beta rc-text--center">{{ usertitle ? "账号登录" : "" }}</h2> <h2 class="rc-beta rc-text--center">{{ usertitle ? "账号登录" : "" }}</h2>
<!-- Deprecated : No tab switching as no password <!-- Deprecated : No tab switching as no password
@ -15,7 +15,6 @@
> >
</div> </div>
--> -->
<div class="rc-layout-container rc-one-column"> <div class="rc-layout-container rc-one-column">
<div class="rc-column"> <div class="rc-column">
<input <input
@ -146,7 +145,7 @@ export default {
swiperData: [ swiperData: [
// { index: 1 ,title:''}, // { index: 1 ,title:''},
// { index: 2 ,title:''}, // { index: 2 ,title:''},
], ]
}; };
}, },
components: { components: {
@ -181,10 +180,8 @@ export default {
} }
}, },
}, },
components: {},
mounted() { mounted() {
console.log(this.$route.params); //console.log(this.$route.params);
}, },
// watch: function () { // watch: function () {
// console.log(this.inRank); // console.log(this.inRank);
@ -195,16 +192,15 @@ export default {
checkBox(){ checkBox(){
console.log(event.target.checked) console.log(event.target.checked)
this.usercheckbox=event.target.checked this.usercheckbox=event.target.checked
}, },
// //
async usermsg() { async usermsg() {
console.log("-----"); //console.log("-----");
let data = await sendMsg(this.tel); let data = await sendMsg(this.tel);
if(data){ if(data){
console.log(data); console.log(data);
this.captchadata=data.msgNum; //this.captchadata=data.msgNum;
this.tamp=data.tamp; this.tamp=data.tamp;
this.hash=data.hash; this.hash=data.hash;
} }
@ -213,16 +209,11 @@ export default {
// //
async vadmsg() { async vadmsg() {
console.log("-----"); //console.log("-----");
let data = await vadatnmsg(this.captchadata,this.hash,this.tamp); let data = await vadatnmsg(this.sms,this.hash,this.tamp);
if(data){ if(data){
console.log(data.code); return data;
if(!data.code==1){
return false
} }
}
}, },
onClickHander(e) { onClickHander(e) {
console.log(e); console.log(e);
@ -239,7 +230,7 @@ export default {
}, },
// //
useredd() { useredd() {
console.log("---注册账户"); //console.log("---");
this.usertitle = false; this.usertitle = false;
}, },
@ -287,15 +278,6 @@ export default {
message: '手机号码输入有误' message: '手机号码输入有误'
}); });
return return
}
if(this.sms!==this.captchadata){
this.$message({
type: 'warning',
message: '验证码输入有误请重新输入'
});
return
} }
if(this.sms==''){ if(this.sms==''){
this.$message({ this.$message({
@ -304,12 +286,11 @@ export default {
}); });
return return
} }
console.log(this.usercheckbox);
if(this.usercheckbox==false){ if(this.usercheckbox==false){
console.log('----'); //console.log('----');
this.$message({ this.$message({
type: 'warning', type: 'warning',
message: '请先勾选' message: '请先同意隐私声明和账号使用协议'
}); });
if (!/^[1][3,4,5,7,8][0-9]{9}$/.test(this.tel) || this.tel === "") { if (!/^[1][3,4,5,7,8][0-9]{9}$/.test(this.tel) || this.tel === "") {
this.$message({ this.$message({
@ -321,61 +302,33 @@ export default {
} }
} }
else{ else{
console.log(this.tel); let data=await this.vadmsg();
let data = await userLongin(this.tel); if(data.code=="1")
console.log(data); {
this.vadmsg(); data = await userLongin(this.tel);
if(data.msg=='SUCCESS'){
this.$message({ this.$message({
type: 'warning', type: 'warning',
message: '登录成功' message: '登录成功'
}); });
if(data.msg=='SUCCESS'){
this.$router.push({ this.$router.push({
path: "/", path: "/",
}); });
let token=JSON.stringify(data); let token=JSON.stringify(data);
this.changeClod({ cloud: token }); this.changeClod({ cloud: token });
}else{ return;
}
}
this.$message({ this.$message({
type: 'warning', type: 'warning',
message: data.msg message: data.msg
}); });
}
return return
}},
}
},
// reallR () {
// this.zhud=true
// this.loading=true
// axios.post('https://www.daxunxun.com/users/register', {
// username: this.tel,
// password: this.password
// }).then(res=>{
// this.zhud=false
// this.loading=false
// if (res.data === 2) {
// Toast('')
// } else if (res.data === 0) {
// Toast('')
// } else {
// Toast('')
// }
// })
// }
}, },
}; };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
@import url("../../assets/css/global.less");
@import url("../../assets/css/login.less"); @import url("../../assets/css/login.less");
</style> </style>

View File

@ -1,4 +0,0 @@
import Vue from 'vue'
import VueAwesomeSwiper from 'vue-awesome-swiper'
Vue.use(VueAwesomeSwiper)

View File

Before

Width:  |  Height:  |  Size: 85 KiB

After

Width:  |  Height:  |  Size: 85 KiB

View File

Before

Width:  |  Height:  |  Size: 170 KiB

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 1.0 MiB

View File

Before

Width:  |  Height:  |  Size: 286 KiB

After

Width:  |  Height:  |  Size: 286 KiB

View File

@ -29,6 +29,15 @@
</dependency> </dependency>
--> -->
<!--JWT-->
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.8.2</version>
</dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId> <artifactId>spring-boot-starter-aop</artifactId>

View File

@ -1,47 +1,25 @@
package net.lab1024.smartadmin.module.system.royalcanin; package net.lab1024.smartadmin.module.system.royalcanin;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import eu.bitwalker.useragentutils.UserAgent;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import net.lab1024.smartadmin.common.constant.JudgeEnum;
import net.lab1024.smartadmin.common.heartbeat.StringUtil; import net.lab1024.smartadmin.common.heartbeat.StringUtil;
import net.lab1024.smartadmin.module.business.log.LogService;
import net.lab1024.smartadmin.module.business.log.userloginlog.domain.UserLoginLogEntity;
import net.lab1024.smartadmin.module.system.royalcanin.member.*; import net.lab1024.smartadmin.module.system.royalcanin.member.*;
import net.lab1024.smartadmin.util.MapRemoveNullUtil; import net.lab1024.smartadmin.util.MapRemoveNullUtil;
import net.lab1024.smartadmin.util.SmartJWTUtil;
import net.lab1024.smartadmin.util.SmartHttpUtil; import net.lab1024.smartadmin.util.SmartHttpUtil;
import net.lab1024.smartadmin.util.SmartIPUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
import java.util.Map; import java.util.Map;
import java.util.UUID;
@Service @Service
public class MemberService { public class MemberService {
private String url = "http://miniapp-test.royalcanin.com.cn:7080/crm/member/"; private String url = "http://miniapp-test.royalcanin.com.cn:7080/crm/member/";
@Autowired
private LogService logService;
/**
* 过期时间一天
*/
private static final int EXPIRE_SECONDS = 1 * 24 * 3600;
/**
* jwt加密字段
*/
private static final String CLAIM_ID_KEY = "id";
@Value("${jwt.key}")
private String jwtKey;
public String memberGet(MemberGetEntity memberGetEntity, HttpServletRequest request)throws Exception { public String memberGet(MemberGetEntity memberGetEntity, HttpServletRequest request)throws Exception {
Map<String, String> paramMap = MapRemoveNullUtil.setConditionMap(memberGetEntity); Map<String, String> paramMap = MapRemoveNullUtil.setConditionMap(memberGetEntity);
@ -52,7 +30,7 @@ public class MemberService {
if(jsonObject.getString("code").equals("0")){ if(jsonObject.getString("code").equals("0")){
JSONObject json = JSONObject.parseObject(jsonObject.getString("data")); JSONObject json = JSONObject.parseObject(jsonObject.getString("data"));
String id = json.getString("id"); String id = json.getString("id");
jsonObject.put("xaccessToken",generateToken(id)); jsonObject.put("xaccessToken", SmartJWTUtil.generateToken(id));
return jsonObject.toJSONString(); return jsonObject.toJSONString();
}else { }else {
return sb; return sb;
@ -83,7 +61,7 @@ public class MemberService {
return SmartHttpUtil.httpPostRaw(url+"check",jsonObject.toString(),null,"utf-8"); return SmartHttpUtil.httpPostRaw(url+"check",jsonObject.toString(),null,"utf-8");
} }
public String memberUpdate(MemberUpdateEntity memberUpdateEntity)throws Exception{ public String memberUpdate(MemberUpdateEntity memberUpdateEntity){
Map<String, String> paramMap = MapRemoveNullUtil.setConditionMap(memberUpdateEntity); Map<String, String> paramMap = MapRemoveNullUtil.setConditionMap(memberUpdateEntity);
paramMap.put("id",StringUtil.toString(memberUpdateEntity.getId()).equals("0")?null:StringUtil.toString(memberUpdateEntity.getId())); paramMap.put("id",StringUtil.toString(memberUpdateEntity.getId()).equals("0")?null:StringUtil.toString(memberUpdateEntity.getId()));
paramMap.put("cityId",StringUtil.toString(memberUpdateEntity.getCityId()).equals("0")?null:StringUtil.toString(memberUpdateEntity.getCityId())); paramMap.put("cityId",StringUtil.toString(memberUpdateEntity.getCityId()).equals("0")?null:StringUtil.toString(memberUpdateEntity.getCityId()));
@ -94,25 +72,7 @@ public class MemberService {
} }
/**
* 功能描述: 生成JWT TOKEN
*
* @return
* @auther Carl
* @date 2021/12/8 0012
*/
public String generateToken(String UserId) {
Long id = Long.parseLong(UserId);
/**将token设置为jwt格式*/
String baseToken = UUID.randomUUID().toString();
LocalDateTime localDateTimeNow = LocalDateTime.now();
LocalDateTime localDateTimeExpire = localDateTimeNow.plusSeconds(EXPIRE_SECONDS);
Date from = Date.from(localDateTimeNow.atZone(ZoneId.systemDefault()).toInstant());
Date expire = Date.from(localDateTimeExpire.atZone(ZoneId.systemDefault()).toInstant());
Claims jwtClaims = Jwts.claims().setSubject(baseToken);
jwtClaims.put(CLAIM_ID_KEY, id);
String compactJws = Jwts.builder().setClaims(jwtClaims).setNotBefore(from).setExpiration(expire).signWith(SignatureAlgorithm.HS512, jwtKey).compact();
return compactJws;
}
} }

View File

@ -41,7 +41,7 @@ public class SMSController {
String hash = MD5Utils.getMD5Code(KEY + "@" + currentTime + "@" + randomNum);//生成MD5值 String hash = MD5Utils.getMD5Code(KEY + "@" + currentTime + "@" + randomNum);//生成MD5值
Map<String, Object> resultMap = new HashMap<>(); Map<String, Object> resultMap = new HashMap<>();
resultMap.put("hash", hash); resultMap.put("hash", hash);
resultMap.put("msgNum",randomNum); // resultMap.put("msgNum",randomNum);
resultMap.put("tamp", currentTime); resultMap.put("tamp", currentTime);
return resultMap; //将hash值和tamp时间返回给前端 return resultMap; //将hash值和tamp时间返回给前端
} }
@ -53,6 +53,9 @@ public class SMSController {
String tamp = requestMap.get("tamp").toString(); String tamp = requestMap.get("tamp").toString();
String msgNum = requestMap.get("msgNum").toString(); String msgNum = requestMap.get("msgNum").toString();
String hash = MD5Utils.getMD5Code(KEY + "@" + tamp + "@" + msgNum); String hash = MD5Utils.getMD5Code(KEY + "@" + tamp + "@" + msgNum);
if(tamp == "")
return ResponseDTO.wrap(OrderResponseCodeConst.SMS_FAIL);
if (tamp.compareTo(currentTime) > 0) { if (tamp.compareTo(currentTime) > 0) {
if (hash.equalsIgnoreCase(requestHash)){ if (hash.equalsIgnoreCase(requestHash)){
//校验成功 //校验成功

View File

@ -17,11 +17,13 @@ import net.lab1024.smartadmin.module.system.royalcanin.good.model.ProductMasterQ
import net.lab1024.smartadmin.module.system.royalcanin.good.model.ProductQueryEntity; import net.lab1024.smartadmin.module.system.royalcanin.good.model.ProductQueryEntity;
import net.lab1024.smartadmin.module.system.royalcanin.good.service.CartService; import net.lab1024.smartadmin.module.system.royalcanin.good.service.CartService;
import net.lab1024.smartadmin.module.system.royalcanin.good.service.GoodService; import net.lab1024.smartadmin.module.system.royalcanin.good.service.GoodService;
import net.lab1024.smartadmin.util.SmartJWTUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.List; import java.util.List;
@ -33,6 +35,8 @@ public class GoodController {
@Autowired @Autowired
private RoyalcaninOperateLogService royalcaninOperateLogService; private RoyalcaninOperateLogService royalcaninOperateLogService;
public static final String TOKEN_NAME = "x-access-token";
@Autowired @Autowired
private CartService cartService; private CartService cartService;
@ -119,18 +123,19 @@ public class GoodController {
@ApiOperation(value = "查询购物车信息", notes = "查询购物车信息") @ApiOperation(value = "查询购物车信息", notes = "查询购物车信息")
@PostMapping("royalcanin/getCartProductInfo") @PostMapping("royalcanin/getCartProductInfo")
public List<CartEntity> getCartProductInfo(String memberId){ public List<CartEntity> getCartProductInfo(HttpServletRequest request){
String memberId = SmartJWTUtil.decodeToken(request.getHeader(TOKEN_NAME));
return cartService.getAllProductbyMember(memberId); return cartService.getAllProductbyMember(memberId);
} }
@ApiOperation(value = "删除购物车信息", notes = "删除购物车信息") @ApiOperation(value = "删除购物车信息", notes = "删除购物车信息")
@PostMapping("royalcanin/cancelCartProductInfo") @PostMapping("royalcanin/cancelCartProductInfo")
public ResponseDTO<String> cancelCartProductInfo(String memberId,@RequestBody List<String> productCode){ public ResponseDTO<String> cancelCartProductInfo(HttpServletRequest request, @RequestBody List<String> productCode){
String memberId = SmartJWTUtil.decodeToken(request.getHeader(TOKEN_NAME));
for (int i = 0 ;i < productCode.size();i++) { for (int i = 0 ;i < productCode.size();i++) {
cartService.cancelProduct(memberId,productCode.get(i)); cartService.cancelProduct(memberId,productCode.get(i));
} }
return ResponseDTO.succ(); return ResponseDTO.succ();
} }
} }

View File

@ -216,14 +216,21 @@ public class OrderService {
royalcaninOperateLogEntity.setAcceptTime(dateformat.format(acceptTime)); royalcaninOperateLogEntity.setAcceptTime(dateformat.format(acceptTime));
royalcaninOperateLogService.add(royalcaninOperateLogEntity); royalcaninOperateLogService.add(royalcaninOperateLogEntity);
return ResponseDTO.succ(); return ResponseDTO.succ();
} }
public double couponTotal(String couponTypeId,double discount,double total,int buyCount){ public double couponTotal(String couponTypeId,double discount,double total,int buyCount){
double endTotal = 0; double endTotal = 0;
switch (couponTypeId) switch (couponTypeId)
{ {
case "5" : // case "5" :
endTotal = (total * (buyCount-1)) + (total * discount); // endTotal = (total * (buyCount-1)) + (total * discount);
// break;
case "2":
endTotal = total * buyCount - discount;
break;
case "3":
endTotal = (total * buyCount) * discount;
break; break;
case "1" : case "1" :
endTotal = total * buyCount - discount; endTotal = total * buyCount - discount;

View File

@ -14,7 +14,7 @@ public class MemberAddressAddEntity {
/** /**
* 会员ID * 会员ID
*/ */
private int memberId; private String memberId;
/** /**
* 省份ID * 省份ID
@ -24,12 +24,12 @@ public class MemberAddressAddEntity {
/** /**
* 城市ID * 城市ID
*/ */
private int cityId; private String cityId;
/** /**
* 区ID * 区ID
*/ */
private int districtId; private String districtId;
/** /**
* 地址 * 地址

View File

@ -16,7 +16,7 @@ public class MemberAddressDeleteEntity {
/** /**
* 会员ID * 会员ID
*/ */
private int memberId; private String memberId;
/** /**
* 宠物ID * 宠物ID

View File

@ -19,5 +19,5 @@ public class MemberAddressGetAllEntity {
/** /**
* 会员ID * 会员ID
*/ */
private int memberId; private String memberId;
} }

View File

@ -17,7 +17,7 @@ public class MemberAddressUpdateEntity {
/** /**
* 会员ID * 会员ID
*/ */
private int memberId; private String memberId;
/** /**
* 会员地址ID * 会员地址ID
@ -32,12 +32,12 @@ public class MemberAddressUpdateEntity {
/** /**
* 城市ID * 城市ID
*/ */
private int cityId; private String cityId;
/** /**
* 区ID * 区ID
*/ */
private int districtId; private String districtId;
/** /**
* 地址 * 地址

View File

@ -0,0 +1,85 @@
package net.lab1024.smartadmin.util;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTVerificationException;
import com.auth0.jwt.interfaces.DecodedJWT;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class SmartJWTUtil {
/**
* 过期时间一天
*/
private static final int EXPIRE_SECONDS = 1 * 24 * 3600;
/**
* jwt加密字段
*/
private static final String CLAIM_ID_KEY = "id";
//设置过期时间
private static final long EXPIRE_DATE = 30 * 60 * 100000;
//token秘钥
private static final String TOKEN_SECRET = "smart-admin-jwt-key";
public static String generateToken(String userId) {
String token;
try {
//过期时间
Date date = new Date(System.currentTimeMillis() + EXPIRE_DATE);
//秘钥及加密算法
Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);
//设置头部信息
Map<String, Object> header = new HashMap<>();
header.put("typ", "JWT");
header.put("alg", "HS256");
//携带UserId信息生成签名
token = JWT.create()
.withHeader(header)
.withClaim(CLAIM_ID_KEY, userId)
.withExpiresAt(date)
.sign(algorithm);
} catch (Exception e) {
e.printStackTrace();
return null;
}
return token;
}
/**
* JWT解密
*
* @Author: RZH
* @Date: 2020/4/6 9:30
*/
public static String decodeToken(final String token) {
String userId = null;
try {
JWTVerifier verifier = JWT.require(Algorithm.HMAC256(TOKEN_SECRET))
.build();
DecodedJWT jwt = verifier.verify(token);
if (jwt != null) {
userId = jwt.getClaim(CLAIM_ID_KEY).asString();
}
} catch (JWTVerificationException exception) {
exception.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
return userId;
}
public static void main(String[] args) {
String token = SmartJWTUtil.generateToken("844350");
System.out.println(SmartJWTUtil.decodeToken(token));
}
}