Browse Source

弹框第二弹

master
453530270@qq.com 2 years ago
parent
commit
c496387322
  1. 24
      components/popup/popup.vue
  2. 194
      components/popup/privacy.json
  3. 380
      pages/reg/components/WhPopup.vue
  4. 10
      pages/reg/reg.vue

24
components/popup/popup.vue

@ -5,8 +5,9 @@
<view class="layer attr-content">
<view class="specification-wrapper">
<scroll-view class="specification-wrapper-content" scroll-y="true">
<view>{{popurl}}隆福大厦哦哦浪费到到啦f佛发大水了佛</view>
<router-view></router-view>
<view>{{popurl}}</view>
<view class="nr">{{xynote}}</view>
</scroll-view>
<!-- 关闭按钮 -->
<view class="close" @click="close('close')" v-if="showClose != false">
@ -21,13 +22,16 @@
</template>
<script>
//import prijson from './privacy.json'
export default {
name:"popup",
// data(){
// return{
// popurl:''
// }
// },
data(){
return{
//
xynote:''
}
},
emits: ["input", "open", "close"],
props:{
// true false
@ -67,20 +71,24 @@
created() {
let that = this;
if (that.getValue()) {
console.log('fdsf')
that.open();
}
},
watch:{
popurl(){
console.log("watch popurl start")
let that = this
return that.popurl
// that.$nextTick(that.$router.push({path:that.popurl}))
//that.$router.push(that.popurl)
}
},
mounted() {},
methods: {
open(e) {
//
return this.$router.replace({path: that.popurl})
},
//
stop() {},

194
components/popup/privacy.json

@ -0,0 +1,194 @@
{
"title":"隐私政策",
"content":' <p class="trade_p">
</p>
<p class="trade_p">
<span class="weight_bold decora_line"></span> 使<span
class="weight_bold decora_line"></span><span
class="weight_bold"></span><span
class="weight_bold decora_line"></span><span
class="weight_bold"></span><span
class="weight_bold decora_line"></span><span
class="weight_bold">线</span><span class="weight_bold decora_line"></span><span
class="weight_bold decora_line"></span>使<span
class="weight_bold decora_line"></span>
</p>
<p class="trade_p">API访使</p>
<p class="trade_p_nobold"></p>
<p class="trade_p_nobold">1</p>
<p class="trade_p_nobold">2使</p>
<p class="trade_p_nobold">3</p>
<p class="trade_p_nobold">4使Cookie</p>
<p class="trade_p_nobold">5</p>
<p class="trade_p_nobold">6</p>
<p class="trade_p_nobold">7</p>
<p class="trade_p_nobold">8</p>
<p class="trade_p_nobold">9</p>
<p class="trade_bold">1</p>
<p class="trade_p">使</p>
<p class="trade_p">
使使使
</p>
<p class="trade_p">
</p>
<p class="trade_p">
使使
</p>
<p class="trade_p_nobold">1.1</p>
<p class="trade_p_nobold">
1.1.1
</p>
<p class="trade_p">
</p>
<p class="trade_p_nobold">1.1.2</p>
<p class="trade_p">退</p>
<p class="trade_bold decora_line">
1.1.3
</p>
<p class="trade_p weight_bold decora_line">
使使使DeviceIDIMEIMACIPMEIDUDID
</p>
<p class="trade_bold">
1.2<span
class="decora_line">/
</span>
</p>
<p class="trade_bold">2使</p>
<p class="trade_p">使</p>
<p class="trade_bold decora_line">
2.1.
</p>
<p class="trade_bold decora_line">
2.2使
</p>
<p class="trade_bold decora_line">
2.3
</p>
<p class="trade_p_nobold">2.4</p>
<p class="trade_p"></p>
<p class="trade_p_nobold">2.4.1</p>
<p class="trade_p_nobold">2.4.2</p>
<p class="trade_p_nobold">2.4.3</p>
<p class="trade_p_nobold">2.4.4</p>
<p class="trade_p_nobold">2.4.5</p>
<p class="trade_p_nobold">2.4.6</p>
<p class="trade_p_nobold">2.4.7</p>
<p class="trade_p_nobold">2.4.8</p>
<p class="trade_p_nobold">2.4.9</p>
<p class="trade_p_nobold">2.4.10</p>
<p class="trade_p_nobold">2.4.11</p>
<p class="trade_bold">3</p>
<p class="trade_p_nobold">3.1</p>
<p class="trade_p">
</p>
<p class="trade_p_nobold">3.2</p>
<p class="trade_p">
</p>
<p class="trade_p">
</p>
<p class="trade_bold">4使Cookie</p>
<p class="trade_p_nobold">4.1Cookie</p>
<p class="trade_p weight_bold decora_line">
访CookieCookie访广CookieCookieCookie访使
</p>
<p class="trade_p_nobold">4.2</p>
<p class="trade_p weight_bold decora_line">
Cookie使访Cookie
</p>
<p class="trade_bold">5</p>
<p class="trade_p_nobold">5.1</p>
<p class="trade_bold decora_line">5.1.1使</p>
<p class="trade_bold decora_line">
5.1.2便
</p>
<p class="trade_bold decora_line"></p>
<p class="trade_bold decora_line">
5.1.3使SDKAPISDKAPI
</p>
<p class="trade_bold decora_line"></p>
<p class="trade_bold decora_line"></p>
<p class="trade_bold decora_line"></p>
<p class="trade_bold decora_line"></p>
<p class="trade_bold decora_line"></p>
<p class="trade_bold decora_line">线</p>
<p class="trade_bold decora_line"></p>
<p class="trade_bold decora_line"></p>
<p class="trade_p_nobold">5.2</p>
<p class="trade_p">
使
</p>
<p class="trade_p_nobold">
5.2.1
</p>
<p class="trade_p_nobold">
5.2.2,
</p>
<p class="trade_p_nobold">5.3</p>
<p class="trade_p">
</p>
<p class="trade_p_nobold">5.3.1</p>
<p class="trade_p_nobold">
5.3.2
</p>
<p class="trade_p_nobold">
5.4
</p>
<p class="trade_p_nobold">
:
</p>
<p class="trade_p_nobold">5.4.1</p>
<p class="trade_p_nobold">5.4.2</p>
<p class="trade_p_nobold">5.4.3</p>
<p class="trade_p_nobold">5.4.4</p>
<p class="trade_p_nobold">5.4.5</p>
<p class="trade_p_nobold">5.4.6</p>
<p class="trade_p_nobold">5.4.7</p>
<p class="trade_bold">6</p>
<p class="trade_p_nobold">6.1访使</p>
<p class="trade_p_nobold">6.2访</p>
<p class="trade_p_nobold">
6.3使便
</p>
<p class="trade_p_nobold">6.4</p>
<p class="trade_p_nobold">
6.5
</p>
<p class="trade_bold">7</p>
<p class="trade_p_nobold">7.1</p>
<p class="trade_p_nobold"><span class="decora_line"></span></p>
<p class="trade_p_nobold">7.2</p>
<p class="trade_p_nobold"></p>
<p class="trade_p_nobold">7.2.1</p>
<p class="trade_p_nobold">7.2.2使</p>
<p class="trade_p_nobold">7.2.3</p>
<p class="trade_p_nobold">
</p>
<p class="trade_p_nobold">7.3</p>
<p class="trade_p">
使
</p>
<p class="trade_p_bold">8</p>
<p class="trade_p_nobold">8.1</p>
<p class="trade_p weight_bold">
</p>
<p class="trade_p_nobold">8.2</p>
<p class="trade_p weight_bold">
使
</p>
<p class="trade_bold">9</p>
<p class="trade_p"></p>
<p class="trade_p_nobold"></p>
<p class="trade_p_nobold">0755-88266839 </p>
<p class="trade_p_nobold">szwenjiaosuo@126.com</p>
<p class="trade_p_nobold">5008</p>'
}

380
pages/reg/components/WhPopup.vue

@ -1,174 +1,266 @@
<template>
<wh-popup :value="value" @input="onChangeValue" border-radius="20" :localdata="goodsInfo" :mode="skuMode"
:maskCloseAble="true" @open="openSkuPopup" @close="closeSkuPopup" @add-cart="addCart" @buy-now="buyNow"
buyNowText="立即购买" />
<!-- <popup :popurl="popurl"></popup> -->
<view class="whpopup"catchtouchmove="true" :class="getValue()? 'show' : 'none'"
@click.stop="stop" @touchmove.stop.prevent="moveHandle">
<view class="mask"></view>
<view class="layer">
<view class="specification-wrapper">
<scroll-view class="specification-wrapper-content" scroll-y="true">
<!-- 隐私政策 -->
<privacy></privacy>
</scroll-view>
<!-- 关闭按钮 -->
<view class="close" @click="close('close')" v-if="showClose != false">
<image class="close-item" :src="closeImage"></image>
</view>
</view>
</view>
</view>
</template>
<script>
import { setCartTotalNum } from '@/core/app'
import * as CartApi from '@/api/cart'
// import GoodsSkuPopup from '@/components/goods-sku-popup'
import WhPopup from '@/components/wh-popup'
import Popup from '@/components/popup/popup'
import privacy from '@/pages/help/private'
export default {
components: {
WhPopup
},
model: {
prop: 'value',
event: 'input'
"popup":Popup,
privacy
},
props: {
// true false
value: {
Type: Boolean,
default: false
},
// 1: 2: 3:
skuMode: {
type: Number,
default: 1
},
//
goods: {
type: Object,
default: {}
}
popurl:{
Type:String,
default:""
},
//
showClose: {
Type: Boolean,
default: true
},
// x
closeImage: {
Type: String,
default: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAEyUlEQVR42sSZeWwNURTGp4OqtBo7sSXELragdkpQsRRJ1Zr4hyJiJ9YgxNIg1qANiT+E1i5IY0kVVWtQEbuEKLFGUSH27/ANN5PXmTvzupzkl/tm8t6b7517lnvvC0lKSjJ8WmnQAUSDFqABqALKgl8gD7wE90E2SAeXwFf1SxISErQeVtKHwCgwFsSDSIf3hYFKoCkYDBaDdyAViHdueHmoF6FtwDLQ23b/E7gM7oIcejIERIDaoBFoC8qA8mA8SQNz6W1XC9GY+nCQCCYAk/c+gF0gBZwH312+IxR0BCPBUIaH2A+wHsxHCHxx+gLT5QGN6a2JfG8uvVCDws9oiDQYlxkMGfHyQvARlADTwcXk5OT6foV2kS8ATXidymlcyen1a/Jjl9IJh3hPkjELYqO8Cu0KjjNZvtETw5jFBWXPmGSTGQKSeOn5iQ0kVLL0CINfPNcPbDMKyRCbGzEMBJ+ZD8cChYFdqGTqfsWT8otPGoVsEHsMwxDFs3shNsxJ6BrQ0Po8OGUUkVHsNCVml+cntB1jUWwn2GEUsTEMrASbDK+2CCQ0kYX6nfLLisMmKqUr0S60M+jG10vAm+JSCa8+x7CKlzHwaktV6DiObzUzPJIxFO1BQ12wGtTReO9GetVgY/kjNJzZbcWmTjHfxw51AsRqvL8eOAtmsJuFu3g1l+1ZLB5eDTVZ3K0P7tL0TkWOpSg61kVkBtuuNRthGs+wtJST5aQI7cEbkkRXNYVKgX6kIdYuUhYzMQwxN8tiExCLFqHNeSF9/aem0BzGp5PYQCJ7c/Gsk1RfuSD6U1dNpcDf9ZigTmKbMRZ9iVTsHscGJluW2FMf1SSQWGnBmaB6kCJVTVVNJZE++Cx9drEllS1KMCINpURFmEbBWA63Fz9s95cGIdJgp/zXmT4pZcOvSUzuZttTbblmnc3PIjjmidDXvKgdhMh0JdbzuCjWrbNOVovjS5P7bkPJ/mBESkz2BO0166ybNeJ431S2q+01NntuIq3E0amzjiZtk9tssWyTDzO4525bACK9NAUn68TtkNhpEXpOSagRml+S6iLSSeweHv242Qhl13rRyvoDvDlKyTQny/ZQJ+1iH7vVbEx7OR5UiKVIO7VicgvHCtwrudloMIV7/0uadVYW57O4Wvvi8v4pymlKkrpwvsDeLLZAY2pkwbAB3PSQfC+4cH7l4k1ZH8zkZRq8ecO+Z5rN40JJqnXFuGfaxPCTLjcn0OZOpnArXw8HY4paIbw5CcMgXq6HN2/mt6+XGLrN15tBryIUGavMpCTrfKcDCKkAceA9S8nhAOehhSUyhXpkBxxnP4YM1InugP7cBkjBPcqVUWFYCEROxXiQz5JlXV+IfKh7mpfJac+lZ6V87QXVClBkTc7YWsWTPSDyitfzUTlJlj8TbvE6jluDOdwZ+jX57GLO3ADeuyZrDYi86vV81FD2UVGsmT+5Zl0BnkhoseOEaogL46pqO4v/IqUEyalIR4h85BgjHv6+aUWRMbb7EstX6O0cpT1Gco0ry8fWygLDMjmDnQeBt3Qe7uVfkeugDwVLcsVzGsuwLXbV+I63XNAkG5r/hvgRqgqWs6pJPKrsbvz/Q6yyun0w/h6lP+BnzrCpfPMT2L8FGAA7k1GZ/vnaqAAAAABJRU5ErkJggg=="
},
// true false true
maskCloseAble: {
Type: Boolean,
default: true
},
},
data() {
return {
goodsInfo: {}
// goodsInfo: {}
}
},
created() {
const app = this
const { goods } = app
app.goodsInfo = {
_id: goods.goods_id,
name: goods.goods_name,
goods_thumb: goods.goods_image,
sku_list: app.getSkuList(),
spec_list: app.getSpecList()
}
},
methods: {
//
onChangeValue(val) {
this.$emit('input', val)
},
// SKU
getSkuList() {
const app = this
const { goods: { goods_name, goods_image, skuList } } = app
const skuData = []
skuList.forEach(item => {
skuData.push({
_id: item.id,
goods_sku_id: item.goods_sku_id,
goods_id: item.goods_id,
goods_name: goods_name,
image: item.image_url ? item.image_url : goods_image,
price: item.goods_price * 100,
stock: item.stock_num,
spec_value_ids: item.spec_value_ids,
sku_name_arr: app.getSkuNameArr(item.spec_value_ids)
})
})
return skuData
},
// sku
getSkuNameArr(specValueIds) {
const app = this
const defaultData = ['默认']
const skuNameArr = []
if (specValueIds) {
specValueIds.forEach((valueId, groupIndex) => {
const specValueName = app.getSpecValueName(valueId, groupIndex)
skuNameArr.push(specValueName)
})
}
return skuNameArr.length ? skuNameArr : defaultData
},
//
getSpecValueName(valueId, groupIndex) {
const app = this
const { goods: { specList } } = app
const res = specList[groupIndex].valueList.find(specValue => {
return specValue.spec_value_id == valueId
})
return res.spec_value
},
//
getSpecList() {
const { goods: { specList } } = this
const defaultData = [{ name: '默认', list: [{ name: '默认' }] }]
const specData = []
specList.forEach(group => {
const children = []
group.valueList.forEach(specValue => {
children.push({ name: specValue.spec_value })
})
specData.push({
name: group.spec_name,
list: children
})
})
return specData.length ? specData : defaultData
},
// sku -----------------------------------------------------------
openSkuPopup() {
// console.log(" - sku")
},
closeSkuPopup() {
// console.log(" - sku")
},
//
addCart(selectShop) {
const app = this
const { goods_id, goods_sku_id, buy_num } = selectShop
CartApi.add(goods_id, goods_sku_id, buy_num)
.then(result => {
//
app.$toast(result.message)
//
app.onChangeValue(false)
//
const cartTotal = result.data.cartTotal
//
setCartTotalNum(cartTotal)
//
app.$emit('addCart', cartTotal)
})
},
//
buyNow(selectShop) {
//
this.$navTo('pages/checkout/index', {
mode: 'buyNow',
goodsId: selectShop.goods_id,
goodsSkuId: selectShop.goods_sku_id,
goodsNum: selectShop.buy_num
})
//
this.onChangeValue(false)
}
//
stop() {},
moveHandle() {
//
},
getValue() {
// #ifndef VUE3
return this.value;
// #endif
// #ifdef VUE3
return this.modelValue;
// #endif
},
// -
close(s) {
let that = this;
if (new Date().getTime() - that.openTime < 400) {
return false;
}
if (s == "mask") {
if (that.maskCloseAble !== false) {
that.$emit("input", false);
that.$emit("close", "mask");
that.$emit("update:modelValue", false);
}
} else {
that.$emit("input", false);
that.$emit("close", "close");
that.$emit("update:modelValue", false);
}
},
}
}
</script>
<style lang="scss" scoped>
/* 弹出层 */
.whpopup {
position: fixed;
left: var(--window-left);
right: var(--window-right);
bottom: var(--window-bottom);
top: 0;
// height: 60%;
z-index: 21;
overflow: hidden;
&.show {
display: block;
.mask {
animation: showPopup 0.2s linear both;
}
.layer {
animation: showLayer 0.2s linear both;
// bottom: var(--window-bottom);
}
}
&.hide {
.mask {
animation: hidePopup 0.2s linear both;
}
.layer {
animation: hideLayer 0.2s linear both;
}
}
&.none {
display: none;
}
.mask {
position: fixed;
left: var(--window-left);
right: var(--window-right);
top: 0;
height: 100%;
z-index: 1;
background-color: rgba(0, 0, 0, 0.65);
}
.layer {
display: flex;
flex-direction: column;
position: absolute;
left: 5%;
right: 5%;
bottom: 20%;
z-index: 99;
border-radius: 10rpx 10rpx 0 0;
background-color: #fff;
// ios线
padding-bottom: constant(safe-area-inset-bottom);
padding-bottom: env(safe-area-inset-bottom);
.specification-wrapper {
width: 100%;
padding: 30rpx 25rpx;
box-sizing: border-box;
.specification-wrapper-content
{
width: 100%;
max-height: 900rpx;
min-height: 400rpx;
&::-webkit-scrollbar {
/*隐藏滚轮*/
display: none;
}
.specification-header {
width: 100%;
display: flex;
flex-direction: row;
position: relative;
margin-bottom: 40rpx;
}
.specification-content {
font-weight: 500;
.specification-item {
margin-bottom: 40rpx;
&:last-child {
margin-bottom: 0;
}
}
}
}
.close {
position: absolute;
top: -30rpx;
right: 25rpx;
width: 60rpx;
height: 60rpx;
text-align: center;
line-height: 60rpx;
background-color: #fff;
border-radius: 50%;
.close-item {
margin: 10rpx;
width: 40rpx;
height: 40rpx;
}
}
}
}
@keyframes showPopup {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes hidePopup {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}
@keyframes showLayer {
0% {
transform: translateY(120%);
}
100% {
transform: translateY(0%);
}
}
@keyframes hideLayer {
0% {
transform: translateY(0);
}
100% {
transform: translateY(120%);
}
}
}
</style>

10
pages/reg/reg.vue

@ -50,9 +50,9 @@
</view>
<!-- 弹框 -->
<popup v-model="showPopup" :maskCloseAble="true" :popurl="murl"></popup>
<!-- <popup v-model="showPopup" :maskCloseAble="true" :popurl="murl"></popup> -->
<!-- <whpop></whpop> -->
<whpop v-model="showPopup" :maskCloseAble="true" :popurl="murl"></whpop>
</view>
</template>
@ -61,13 +61,12 @@
import store from '@/store'
import * as LoginApi from '@/api/login'
import * as Verify from '@/utils/verify'
import Popup from '@/components/popup/popup'
import whpop from './components/WhPopup'
export default {
components: {
// nothing
"popup":Popup,
// "popup":Popup,
whpop
},
@ -225,9 +224,12 @@
},
//
viewdoc(e){
const query = this.$route
console.log(query)
//
let xurl="pages/help/"+e
this.murl= xurl;
// this.$toast(e)
this.showPopup = ! this.showPopup
},

Loading…
Cancel
Save