Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
center-shop-show-h5
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
center-shop-show-h5
Commits
513e09b2
提交
513e09b2
authored
6月 07, 2021
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: #2011, #2021
上级
db095aef
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
37 行增加
和
43 行删除
+37
-43
BuyPopup.vue
src/pages/buy/components/BuyPopup.vue
+14
-23
index.vue
src/pages/buy/index.vue
+23
-20
没有找到文件。
src/pages/buy/components/BuyPopup.vue
浏览文件 @
513e09b2
...
@@ -23,7 +23,7 @@
...
@@ -23,7 +23,7 @@
</div>
</div>
</
template
>
</
template
>
</van-field>
</van-field>
<van-field
v-for=
"item in fieldsMap"
v-model=
"form[item.key]"
:key=
"item.key"
:name=
"item.key"
:label=
"item.label"
:type=
"item.type"
:placeholder=
"item.placeholder"
:rules=
"[{ required: item.required, message:
'请输入留言'
}, { validator: item.validator, message: item.errorMsg || '输入格式有误' }]"
/>
<van-field
v-for=
"item in fieldsMap"
v-model=
"form[item.key]"
:key=
"item.key"
:name=
"item.key"
:label=
"item.label"
:type=
"item.type"
:placeholder=
"item.placeholder"
:rules=
"[{ required: item.required, message:
item.placeholder
}, { validator: item.validator, message: item.errorMsg || '输入格式有误' }]"
/>
<div
style=
"margin: 16px;"
>
<div
style=
"margin: 16px;"
>
<van-button
type=
"primary"
round
block
color=
"#C01540"
size=
"small"
>
下一步
</van-button>
<van-button
type=
"primary"
round
block
color=
"#C01540"
size=
"small"
>
下一步
</van-button>
</div>
</div>
...
@@ -165,6 +165,16 @@ export default {
...
@@ -165,6 +165,16 @@ export default {
this
.
$emit
(
'placeOrder'
,
params
)
this
.
$emit
(
'placeOrder'
,
params
)
},
},
assembleFields
(
list
)
{
assembleFields
(
list
)
{
const
map
=
{
text
:
{
type
:
'text'
,
placeholder
:
'请填写留言'
},
number
:
{
type
:
'number'
,
placeholder
:
'请填写数字'
},
email
:
{
type
:
'text'
,
placeholder
:
'请填写邮箱'
,
errorMsg
:
'邮箱格式有误'
},
date
:
{
type
:
'text'
,
placeholder
:
'请填写日期'
},
time
:
{
type
:
'text'
,
placeholder
:
'请填写时间'
},
id
:
{
type
:
'text'
,
placeholder
:
'请填写身份证号'
,
errorMsg
:
'身份证格式有误'
},
image
:
{
type
:
'text'
,
placeholder
:
'请上传图片'
},
phone
:
{
type
:
'tel'
,
placeholder
:
'请填写手机号'
,
errorMsg
:
'手机格式有误'
}
}
const
fieldsMap
=
{}
const
fieldsMap
=
{}
list
.
forEach
((
item
,
index
)
=>
{
list
.
forEach
((
item
,
index
)
=>
{
const
field
=
{
const
field
=
{
...
@@ -176,28 +186,10 @@ export default {
...
@@ -176,28 +186,10 @@ export default {
placeholder
:
'请填写留言'
placeholder
:
'请填写留言'
}
}
this
.
$set
(
this
.
form
,
field
.
key
,
''
)
this
.
$set
(
this
.
form
,
field
.
key
,
''
)
field
.
placeholder
=
'请填写留言'
if
(
this
.
validatorMap
[
item
.
type
])
{
if
(
item
.
type
===
'text'
&&
item
.
multiple
)
{
field
.
type
=
'textarea'
}
else
if
([
'email'
,
'phone'
,
'id'
].
includes
(
item
.
type
))
{
field
.
validator
=
this
.
validatorMap
[
item
.
type
]
field
.
validator
=
this
.
validatorMap
[
item
.
type
]
field
.
placeholder
=
'请填写邮箱'
let
errorMsg
=
'邮箱格式有误'
if
(
item
.
type
===
'phone'
)
{
field
.
type
=
'tel'
errorMsg
=
'手机格式有误'
field
.
placeholder
=
'请填写手机号'
}
else
if
(
item
.
type
===
'id'
)
{
field
.
type
=
'text'
errorMsg
=
'身份证格式有误'
field
.
placeholder
=
'请填写身份证号'
}
field
.
errorMsg
=
errorMsg
}
else
if
(
item
.
type
===
'number'
)
{
field
.
type
=
'number'
field
.
placeholder
=
'请填写身份证号'
}
}
fieldsMap
[
field
.
key
]
=
field
fieldsMap
[
field
.
key
]
=
Object
.
assign
({},
field
,
map
[
item
.
type
])
})
})
this
.
fieldsMap
=
fieldsMap
this
.
fieldsMap
=
fieldsMap
console
.
log
(
'field'
,
fieldsMap
)
console
.
log
(
'field'
,
fieldsMap
)
...
@@ -273,4 +265,4 @@ export default {
...
@@ -273,4 +265,4 @@ export default {
padding
:
0
.2rem
;
padding
:
0
.2rem
;
}
}
}
}
</
style
>
</
style
>
\ No newline at end of file
src/pages/buy/index.vue
浏览文件 @
513e09b2
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
<div
class=
"buy-container"
>
<div
class=
"buy-container"
>
<van-swipe
class=
"my-swipe"
indicator-color=
"white"
@
change=
"index => swipeAcitve = index"
>
<van-swipe
class=
"my-swipe"
indicator-color=
"white"
@
change=
"index => swipeAcitve = index"
>
<van-swipe-item
class=
"video"
v-if=
"details.main_chart_oss"
@
click=
"handleVideoClick"
>
<van-swipe-item
class=
"video"
v-if=
"details.main_chart_oss"
@
click=
"handleVideoClick"
>
<video
:src=
"details.main_chart_oss"
controls=
"controls"
ref=
"video"
></video>
<video
:src=
"details.main_chart_oss"
controls=
"controls"
playsinline
:poster=
"`$
{details.main_chart_oss}?x-oss-process=video/snapshot,t_10,f_jpg,w_0,h_0,m_fast`"
ref="video">
</video>
<van-icon
:name=
"videoPlay ? 'pause-circle-o':'play-circle-o'"
/>
<van-icon
:name=
"videoPlay ? 'pause-circle-o':'play-circle-o'"
/>
</van-swipe-item>
</van-swipe-item>
<van-swipe-item
v-for=
"(item, index) in imgList"
:key=
"item.url"
>
<van-swipe-item
v-for=
"(item, index) in imgList"
:key=
"item.url"
>
...
@@ -38,6 +38,9 @@
...
@@ -38,6 +38,9 @@
</
template
>
</
template
>
</van-cell>
</van-cell>
</div>
</div>
<div
class=
"item"
v-if=
"details.spu_context"
>
<div
v-html=
"details.spu_context"
></div>
</div>
<div
class=
"bottom-bar"
v-if=
"details.sales_type === '1'"
>
<div
class=
"bottom-bar"
v-if=
"details.sales_type === '1'"
>
<van-button
type=
"primary"
round
block
color=
"#C01540"
size=
"small"
@
click=
"handleBuy"
>
{{details.buy_button_text || '立即购买'}}
</van-button>
<van-button
type=
"primary"
round
block
color=
"#C01540"
size=
"small"
@
click=
"handleBuy"
>
{{details.buy_button_text || '立即购买'}}
</van-button>
</div>
</div>
...
@@ -48,7 +51,7 @@
...
@@ -48,7 +51,7 @@
<
script
>
<
script
>
import
BuyPopup
from
'./components/BuyPopup.vue'
import
BuyPopup
from
'./components/BuyPopup.vue'
import
PhoneCodeLoginPopup
from
'@/components/PhoneCodeLoginPopup.vue'
import
PhoneCodeLoginPopup
from
'@/components/PhoneCodeLoginPopup.vue'
import
{
getGoodsList
,
getShopList
,
createOrder
}
from
'@/api/common.js'
import
{
getGoodsList
,
getShopList
,
createOrder
,
checkPayStatus
}
from
'@/api/common.js'
import
{
getOpenId
}
from
'@/api/account.js'
import
{
getOpenId
}
from
'@/api/account.js'
import
store
from
'@/store'
import
store
from
'@/store'
import
{
mapGetters
}
from
'vuex'
import
{
mapGetters
}
from
'vuex'
...
@@ -68,12 +71,11 @@ export default {
...
@@ -68,12 +71,11 @@ export default {
payment_order_id
:
''
,
payment_order_id
:
''
,
payment_method
:
'12'
,
payment_method
:
'12'
,
order_params
:
''
,
order_params
:
''
,
order_details_url
:
window
.
location
.
origin
+
'/order-details'
,
order_details_url
:
window
.
location
.
origin
+
'/order-details'
openId
:
''
}
}
},
},
computed
:
{
computed
:
{
...
mapGetters
([
'user'
,
'is
Phone'
,
'is
WxBrowser'
]),
...
mapGetters
([
'user'
,
'isWxBrowser'
]),
query
()
{
query
()
{
return
this
.
$route
.
query
return
this
.
$route
.
query
},
},
...
@@ -82,15 +84,18 @@ export default {
...
@@ -82,15 +84,18 @@ export default {
},
},
shop_id
()
{
shop_id
()
{
return
this
.
query
.
shop_id
||
'6800681447305773056'
return
this
.
query
.
shop_id
||
'6800681447305773056'
},
isBackFormPay
()
{
return
window
.
sessionStorage
.
getItem
(
'isBackFormPay'
)
},
openId
()
{
return
window
.
localStorage
.
getItem
(
'openId'
)
// 'oF3a-t9pFpmL2gWuTmtWs5HlDGkU'
}
}
},
},
beforeMount
()
{
beforeMount
()
{
this
.
fetchGoodsDetails
()
this
.
fetchGoodsDetails
()
this
.
fetchShopDetails
()
this
.
fetchShopDetails
()
let
openId
=
window
.
localStorage
.
getItem
(
'openId'
)
if
(
this
.
isWxBrowser
&&
!
this
.
openId
)
{
if
(
openId
===
'undefined'
||
openId
===
'null'
)
openId
=
''
this
.
openId
=
openId
// 'oF3a-t9pFpmL2gWuTmtWs5HlDGkU'
if
(
this
.
isWxBrowser
&&
!
openId
)
{
const
{
code
}
=
this
.
$route
.
query
const
{
code
}
=
this
.
$route
.
query
if
(
code
)
this
.
fetchOpenId
(
code
)
if
(
code
)
this
.
fetchOpenId
(
code
)
else
this
.
getCode
()
else
this
.
getCode
()
...
@@ -110,10 +115,6 @@ export default {
...
@@ -110,10 +115,6 @@ export default {
this
.
$router
.
push
({
path
:
'/shop'
,
query
:
{
shop_id
:
id
}
})
this
.
$router
.
push
({
path
:
'/shop'
,
query
:
{
shop_id
:
id
}
})
},
},
async
handleBuy
()
{
async
handleBuy
()
{
// if (!this.isPhone) {
// Toast.fail('只支持在手机端购买')
// return
// }
const
isLogin
=
store
.
state
.
isLogin
||
(
await
store
.
dispatch
(
'checkLogin'
))
const
isLogin
=
store
.
state
.
isLogin
||
(
await
store
.
dispatch
(
'checkLogin'
))
if
(
isLogin
)
{
if
(
isLogin
)
{
// if (this.isWxBrowser) {
// if (this.isWxBrowser) {
...
@@ -145,10 +146,8 @@ export default {
...
@@ -145,10 +146,8 @@ export default {
fetchOpenId
(
code
)
{
fetchOpenId
(
code
)
{
getOpenId
({
code
,
identity
:
'ezijing'
}).
then
(
response
=>
{
getOpenId
({
code
,
identity
:
'ezijing'
}).
then
(
response
=>
{
if
(
response
.
code
===
0
)
{
if
(
response
.
code
===
0
)
{
if
(
response
.
openid
)
{
this
.
openId
=
response
.
openid
this
.
openId
=
response
.
openid
||
''
window
.
localStorage
.
setItem
(
'openId'
,
this
.
openId
)
window
.
localStorage
.
setItem
(
'openId'
,
response
.
openid
||
''
)
}
else
window
.
localStorage
.
removeItem
(
'openId'
)
}
else
{
}
else
{
this
.
getCode
()
this
.
getCode
()
}
}
...
@@ -167,6 +166,7 @@ export default {
...
@@ -167,6 +166,7 @@ export default {
if
(
typeof
imgsJson
===
'string'
&&
Array
.
isArray
(
JSON
.
parse
(
imgsJson
)))
{
if
(
typeof
imgsJson
===
'string'
&&
Array
.
isArray
(
JSON
.
parse
(
imgsJson
)))
{
this
.
imgList
=
JSON
.
parse
(
imgsJson
)
this
.
imgList
=
JSON
.
parse
(
imgsJson
)
}
}
this
.
swipeAcitve
=
first
.
main_chart_oss
?
0
:
1
this
.
popupOptions
=
{
this
.
popupOptions
=
{
specs
:
first
.
spec
,
specs
:
first
.
spec
,
fields
:
first
.
app_button_text
,
fields
:
first
.
app_button_text
,
...
@@ -195,6 +195,10 @@ export default {
...
@@ -195,6 +195,10 @@ export default {
}
}
})
})
},
},
fetchCheckPayStatus
()
{
const
id
=
window
.
sessionStorage
.
getItem
(
'payment_order_id'
)
||
''
checkPayStatus
({
payment_order_id
:
id
}).
then
(
res
=>
{})
},
placeOrderCallback
(
res
)
{
placeOrderCallback
(
res
)
{
const
payType
=
this
.
payment_method
const
payType
=
this
.
payment_method
if
(
payType
===
'3'
)
{
if
(
payType
===
'3'
)
{
...
@@ -214,7 +218,7 @@ export default {
...
@@ -214,7 +218,7 @@ export default {
// window.sessionStorage.setItem('isBackFormH5Pay', 1)
// window.sessionStorage.setItem('isBackFormH5Pay', 1)
window
.
localStorage
.
setItem
(
'payment_order_id'
,
res
.
payment_order_id
)
window
.
localStorage
.
setItem
(
'payment_order_id'
,
res
.
payment_order_id
)
window
.
localStorage
.
setItem
(
'order_detail_id'
,
res
.
order_detail_id
)
window
.
localStorage
.
setItem
(
'order_detail_id'
,
res
.
order_detail_id
)
window
.
location
.
href
=
res
.
payment_url
+
'&redirect_url='
+
encodeURIComponent
(
this
.
order_details_url
)
window
.
location
.
href
=
res
.
payment_url
+
'&redirect_url='
+
encodeURIComponent
(
window
.
location
.
href
)
}
else
if
(
payType
===
'12'
)
{
}
else
if
(
payType
===
'12'
)
{
// 支付宝网页支付
// 支付宝网页支付
// window.sessionStorage.setItem('isBackFormH5Pay', 1)
// window.sessionStorage.setItem('isBackFormH5Pay', 1)
...
@@ -333,4 +337,4 @@ export default {
...
@@ -333,4 +337,4 @@ export default {
font-size
:
0
.24rem
;
font-size
:
0
.24rem
;
}
}
}
}
</
style
>
</
style
>
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论