Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
singleStore
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
CI / CD Analytics
Repository Analytics
Value Stream Analytics
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Max
singleStore
Commits
d1cd518f
Commit
d1cd518f
authored
Oct 09, 2021
by
DESKTOP-RL2O6OD\没有姓名的打工人
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:订单安全溯源;fixed:退出登录返回个人中心数字显示的问题;perf:部分优化
parent
cb7ab5f6
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
435 additions
and
47 deletions
+435
-47
apis/order.js
apis/order.js
+15
-0
pages.json
pages.json
+6
-0
pages/category/index.vue
pages/category/index.vue
+1
-0
pages/home/components/goods-module.vue
pages/home/components/goods-module.vue
+2
-0
pages/mine/images/bg.png
pages/mine/images/bg.png
+0
-0
pages/mine/index.vue
pages/mine/index.vue
+7
-0
pages/order/order-detail.vue
pages/order/order-detail.vue
+76
-44
pages/order/order-list.vue
pages/order/order-list.vue
+1
-1
pages/search/list.vue
pages/search/list.vue
+1
-0
styles/iconfont.css
styles/iconfont.css
+9
-1
subPages/originSafe/components/preview_zz.vue
subPages/originSafe/components/preview_zz.vue
+217
-0
subPages/originSafe/index.vue
subPages/originSafe/index.vue
+99
-0
utils/validate.js
utils/validate.js
+1
-1
No files found.
apis/order.js
View file @
d1cd518f
...
...
@@ -183,4 +183,19 @@ export function changeOrderAddr(params) {
data
:
params
,
needMask
:
true
})
}
/**
* @desc 订单商品溯源
* @param { Number | String } og_id 订单商品id
*/
export
function
safeOrigin
(
og_id
)
{
return
request
({
url
:
'
zsxcx/getWarehouseGoodsMsgZS.htm
'
,
method
:
'
post
'
,
data
:
{
og_id
},
needMask
:
true
})
}
\ No newline at end of file
pages.json
View file @
d1cd518f
...
...
@@ -180,6 +180,12 @@
"navigationBarTitleText"
:
"评论详情"
,
"enablePullDownRefresh"
:
true
}
},
{
"path"
:
"originSafe/index"
,
"style"
:
{
"navigationBarTitleText"
:
"商品安全溯源信息"
}
}
]
},
...
...
pages/category/index.vue
View file @
d1cd518f
...
...
@@ -90,6 +90,7 @@
class=
"cart-icon"
src=
"/static/images/common/icon-cart.png"
mode=
"aspectFit"
lazy-load
@
click.stop=
"handlePop(good)"
/>
</view>
...
...
pages/home/components/goods-module.vue
View file @
d1cd518f
...
...
@@ -11,6 +11,7 @@
>
<image
class=
"goods_cover w-100"
lazy-load
:src=
"baseUrl + '/' + item.goods_thumb"
mode=
"aspectFit"
/>
...
...
@@ -26,6 +27,7 @@
</view>
<image
class=
"cart-btn"
azy-load
@
click.stop=
"handlePop(item)"
src=
"/static/images/common/icon-cart.png"
mode=
"aspectFit"
...
...
pages/mine/images/bg.png
deleted
100644 → 0
View file @
cb7ab5f6
80.3 KB
pages/mine/index.vue
View file @
d1cd518f
...
...
@@ -164,6 +164,13 @@ export default {
this
.
setUserInfo
()
this
.
getOrderNum
()
this
.
getCommentNum
()
}
else
{
this
.
orderNum
=
{
wait_pay
:
0
,
wait_receive
:
0
,
wait_send
:
0
}
this
.
commentCounts
=
0
}
},
...
...
pages/order/order-detail.vue
View file @
d1cd518f
...
...
@@ -27,31 +27,33 @@
:src=
"baseUrl + '/' + item.goods_thumb"
mode=
"aspectFit"
/>
<view
class=
"title flex-1"
>
{{item.goods_name}}
</view>
</view>
<view
class=
"sku-item"
v-for=
"(s, sidx) in item.goods"
:key=
"sidx"
>
<view
class=
"mt-2"
>
{{s.goods_attr}}
</view>
<view
class=
"mt-2"
>
单价:¥{{s.goods_price + '/' + s.goods_unit}}
</view>
<view
class=
"mt-2 flex j-between a-center"
>
<text>
数量:{{s.cart_number}}
</text>
<text
class=
"primary"
>
小计:¥{{s.amount}}
</text>
<view
class=
"info flex j-between a-start flex-column flex-1"
>
<view
class=
"info-item"
>
<view
class=
"title overtext-1 font-bold"
>
{{item.goods_name}}
</view>
<view
class=
"flex-1 text-right"
>
¥{{item.goods_price}}
</view>
</view>
<view
class=
"info-item descColor"
>
<view
class=
"sku-name overtext-1"
>
{{item.goods_attr + '/' + item.goods_unit}}
</view>
<view
class=
"flex-1 text-right"
>
x{{item.cart_number}}
</view>
</view>
<view
class=
"info-item"
v-if=
"item.batch_id"
>
<view
class=
"origin-intro"
>
该商品已加入格利溯源计划
</view>
<navigator
class=
"origin-btn"
hover-class=
"none"
:url=
"'/subPages/originSafe/index?og_id=' + item.og_id"
>
查看溯源
</navigator>
</view>
</view>
</view>
</view>
</block>
</view>
<view
class=
"wrap
mt-2
flex j-end a-center"
>
<view
class=
"wrap flex j-end a-center"
>
共
<text
class=
"primary"
>
{{order_detail.totalCount || 0}}
</text><text
class=
"mr-2"
>
件
</text>
合计:
<text
class=
"primary"
>
¥{{order_detail.order.sum_amount || 0}}
</text>
</view>
<view
class=
"mt-2 box"
v-if=
"order_detail.order.shipping_type === '1'"
>
<view
class=
"mt-2"
>
配送方式: 商家配送
<text
class=
"primary ml-1"
@
click=
"makePhoneCall()"
>
联系商家
</text></view>
<view
class=
"item mt-2 w-100 flex j-start a-start"
>
<view
class=
"item font-32"
>
配送信息
</view>
<view
class=
"mt-3"
>
配送方式:商家配送
<text
class=
"primary ml-1"
@
click=
"makePhoneCall()"
>
联系商家
</text></view>
<view
class=
"item mt-3 w-100 flex j-start a-start"
>
<view
class=
"hd"
>
配送地址:
</view>
<view
class=
"flex-1 flex flex-column j-start a-start"
>
<view
class=
"w-100 flex j-between a-start"
>
...
...
@@ -67,22 +69,23 @@
</view>
<view
class=
"mt-2 box"
v-else
>
<view
class=
"item font-32"
>
配送信息
</view>
<view>
配送方式: 买家自提
<text
class=
"primary ml-1"
@
click=
"makePhoneCall()"
>
联系商家
</text></view>
<view
class=
"item mt-
2
w-100 flex j-start a-start"
>
<view
class=
"hd"
>
自提地址
:
</view>
<view
class=
"item mt-
e3
w-100 flex j-start a-start"
>
<view
class=
"hd"
>
自提地址
:
</view>
<view
class=
"flex-1"
>
<text
class=
"flex-1"
>
{{order_detail.order.pickup_address}}
</text>
</view>
</view>
<view
class=
"item mt-
2
w-100 flex j-start a-start"
>
<view
class=
"item mt-
3
w-100 flex j-start a-start"
>
<view
class=
"hd"
>
自提时间:
</view>
<view
class=
"flex-1"
>
<text
class=
"mr-2"
>
{{order_detail.order.pickup_start_day | parseWeek}}至{{order_detail.order.pickup_end_day | parseWeek}}
</text>
<text>
{{order_detail.order.pickup_hours}}
</text>
</view>
</view>
<view
class=
"item mt-
2
w-100 flex j-start a-start"
>
<view
class=
"item mt-
3
w-100 flex j-start a-start"
>
<view
class=
"hd"
>
联系电话:
</view>
<view
class=
"flex-1"
>
<text>
{{order_detail.order.shop_tel}}
</text>
...
...
@@ -91,47 +94,53 @@
</view>
<!-- <view class="wrap mt-2">发票: 发票信息参数(文字/图片等)</view> -->
<view
class=
"box mt-2"
>
<view
class=
"font-32 mb-3"
>
发票信息
</view>
<view>
发票:发票信息参数(文字/图片等)
</view>
</view>
<view
class=
"mt-2 box"
>
<view
class=
"item w-100 flex j-start a-center"
>
<view
class=
"item font-32"
>
订单信息
</view>
<view
class=
"item mt-3 w-100 flex j-start a-center"
>
<view
class=
"hd"
>
订单编号:
</view>
<view
class=
"flex-1 flex j-between a-center"
>
<text>
{{order_detail.order.order_sn}}
</text>
<text
class=
"primary"
@
click=
"copyOrderSn"
>
复制
</text>
</view>
</view>
<view
class=
"item mt-
2
w-100 flex j-start a-center"
>
<view
class=
"item mt-
3
w-100 flex j-start a-center"
>
<view
class=
"hd"
>
创建时间:
</view>
<view
class=
"flex-1"
>
<text>
{{order_detail.order.add_time | parseTime}}
</text>
</view>
</view>
<view
class=
"item mt-
2
w-100 flex j-start a-center"
>
<view
class=
"item mt-
3
w-100 flex j-start a-center"
>
<view
class=
"hd"
>
先货后款:
</view>
<view
class=
"flex-1"
>
<text>
{{order_detail.order.goods_before_pay === '0' ? '否' : '是'}}
</text>
</view>
</view>
<view
class=
"item mt-
2
w-100 flex j-start a-center"
>
<view
class=
"item mt-
3
w-100 flex j-start a-center"
>
<view
class=
"hd"
>
付款时间:
</view>
<view
class=
"flex-1"
>
<text>
{{order_detail.order.pay_time | parseTime}}
</text>
</view>
</view>
<view
class=
"item mt-
2
w-100 flex j-start a-center"
>
<view
class=
"item mt-
3
w-100 flex j-start a-center"
>
<view
class=
"hd"
>
发货时间:
</view>
<view
class=
"flex-1"
>
<text>
{{order_detail.order.shipping_time | parseTime}}
</text>
</view>
</view>
<view
class=
"item mt-
2
w-100 flex j-start a-center"
>
<view
class=
"item mt-
3
w-100 flex j-start a-center"
>
<view
class=
"hd"
>
支付方式:
</view>
<view
class=
"flex-1"
>
<text>
{{order_detail.order.pay_type | payType}}
</text>
</view>
</view>
<view
class=
"item mt-
2
w-100 flex j-start a-center"
>
<view
class=
"item mt-
3
w-100 flex j-start a-center"
>
<view
class=
"hd"
>
买家留言:
</view>
<view
class=
"flex-1"
>
<text>
{{order_detail.order.postscript || '——'}}
</text>
...
...
@@ -230,8 +239,11 @@ export default {
data
.
order
.
countdownT
=
0
// item.last_payTime = ''
}
data
.
goods
.
map
(
i
=>
{
console
.
log
(
typeof
i
.
batch_id
,
i
.
batch_id
,
~~
i
.
batch_id
,
!~~
i
.
batch_id
)
})
this
.
order_detail
=
{
goods
:
data
.
goods
2
||
[]
,
goods
:
data
.
goods
,
order
:
data
.
order
||
{},
totalCount
:
data
.
goods2
.
reduce
((
pre
,
cur
)
=>
{
return
pre
+
cur
.
goods
.
reduce
((
p
,
c
)
=>
{
...
...
@@ -241,6 +253,7 @@ export default {
}
}
}
catch
(
e
){
console
.
log
(
e
)
this
.
$toast
({
title
:
e
.
msg
||
'
程序错误,获取订单详情失败
'
})
//TODO handle the exception
}
...
...
@@ -283,28 +296,47 @@ export default {
}
.goods
{
@include
borderBox
(
40rpx
,
30rpx
);
background-color
:
#fff
;
.goods-item
{
@include
borderBox
(
20rpx
,
30rpx
);
border-bottom
:
1rpx
solid
$line
;
&
:first-child
{
margin-top
:
20rpx
;
}
margin-bottom
:
30rpx
;
&
:last-child
{
margin-bottom
:
0
;
border-bottom
:
none
;
}
.cover
{
flex
:
0
0
160rpx
;
width
:
160rpx
;
height
:
160rpx
;
flex
:
0
0
150rpx
;
width
:
150rpx
;
height
:
150rpx
;
border-radius
:
10rpx
;
background-color
:
$mainBg
;
margin-right
:
20rpx
;
}
.sku-item
{
padding-bottom
:
20rpx
;
border-bottom
:
1rpx
solid
$line
;
&
:last-child
{
padding-bottom
:
0
;
border-bottom
:
none
;
.info
{
height
:
150rpx
;
.info-item
{
width
:
100%
;
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
overflow
:
hidden
;
.title
{
width
:
380rpx
;
}
.sku-name
{
width
:
450rpx
;
}
.origin-intro
{
border
:
1rpx
solid
$primary
;
padding
:
4rpx
;
color
:
$primary
;
font-size
:
20rpx
;
border-radius
:
4rpx
;
}
.origin-btn
{
color
:
$primary
;
font-size
:
20rpx
;
}
}
}
}
...
...
@@ -315,12 +347,12 @@ export default {
}
.wrap
{
padding
:
24
rpx
30rpx
;
padding
:
0
30rpx
40
rpx
30rpx
;
background-color
:
#fff
;
}
.box
{
@include
borderBox
(
2
0rpx
,
30rpx
);
@include
borderBox
(
4
0rpx
,
30rpx
);
background-color
:
#fff
;
.item
{
.hd
{
...
...
pages/order/order-list.vue
View file @
d1cd518f
...
...
@@ -37,7 +37,7 @@
>
<view
class=
"w-100 item-inner"
>
<!--
<view>
orderStatus==
{{
item
.
order_status
}}
————orderStatusD==
{{
item
.
order_status_d
}}
</view>
-->
<
view>
{{
item
.
order_sn
}}
</view
>
<
!--
<view>
{{
item
.
order_sn
}}
</view>
--
>
<view
class=
"flex j-between a-center"
>
<text
class=
"order-item"
>
{{
item
.
add_time
|
parseTime
}}
</text>
<!--
<text
class=
"order-status"
>
{{
item
.
order_status
|
orderStatus
(
item
.
goods_before_pay
)
}}
</text>
-->
...
...
pages/search/list.vue
View file @
d1cd518f
...
...
@@ -93,6 +93,7 @@
>
<image
class=
"goods-cover mr-2"
lazy-load
:src=
"baseUrl + '/' + good.goods_thumb"
mode=
"aspectFit"
/>
...
...
styles/iconfont.css
View file @
d1cd518f
@font-face
{
font-family
:
"iconfont"
;
/* Project id 2744370 */
src
:
url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAA
O8AAsAAAAAB7gAAANwAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACCfgqDFIJ/ATYCJAMMCwgABCAFhGcHOhvXBlGU7Umb7GtMYYxdLdoStU4cQbgGIyIAroxg8Ha7fH08nAF/XLzvLAAAIojW0Nm7C7ND1IASVVR02MVSW1fVKlULpGrRkmVd/VM3fxkv3PZPUNumT6OItmdpQl1Lc5l/VjQglQlTkm8HhLdrrsBpOnA/7WbdBtbZOuQu10WiuVLtLk54q03p32lzaR/KYCIH0hZSAHIQfaPtLYLKFDjqQl316a/GuxX4gjwA77pvvuyD5Y03i9F9W9Yt3OQJesPYBS3xEoFGixy0s3t8DaMrJTlsIMzWIKmOqyhQMOQmpaE61Au1XVcW8VQN6XG6gCfB5+MfL4YkNZl51uHJjg9/Pzt/LuZ5NXecv/udrgaOTqhBxuzGLHHU7DrUiVKzsMYqV9coGlwEP7uqip+dnmjbf3gkQdQyK5vBJFSmKxI7okTdBSVXLH668bWoww3wTjJ3M3fIysDIMgPW16t36xq43W5tpnK32zHgzWZTUL5eRwFruaF8kzGAd6qhctuc52sABLvV3em2QnTYW5U7EG9ztMGbMs5qa4IX5mBTvoG2tHLr773Of99/i2jgrI3uzQXR0SbG7t7iVkfI5jDYLXe7DxvZBKPRL/Dyvm2+n1+vC/w87zfkQ37ctKLn2/9dTBfWasO62AHzsT6sTZMP0gzL/YQzaXc67TtOkHOH+GbHCTvFnrTDuZ0xZwKRoRdsbrBhX1q8d1uPaWfvhw0lYY44o9qXafXx56uH58ixXrv3YhLPA0c1W+jW/D+ik8ft7mzNNrwDVH2J/DDIrPl5ln/uNxqerXx9c+V/PbSAHxvfg9LuZeolmOg/daeg+kvwNLlo0JSuYdluqkBCo+WjQr5Oz/CaV5EJ9boSJHWGkNUbpgpvGjWaLKNWvVU0muHXN+lS6YjSgHEzQGi3IGn1Elm7lSq8GzV6vajV7kOjo2jZrcl46C0mJeTjxw9GusiNrZWA7SUFTaq4LH5LXEcwiq7l5LN7lBOPMaf+DDwRg4aLDHfpeZSmBZZcxKTFCkXKmW2bqqtYushgCyOKID4U+YFKWiFnPLJkv+8SCTRSCnekbh2sxkLEHgkU70DtqfJODTeyT+tTwNMRBsowyGRQ4A6SqqkCqqqHxYgmLMWARGmGWaSsq8paXpO93DZoZB6eI0WOou46VLkOm/5F8x3lAQ
A=')
format
(
'woff2'
)
url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAA
QoAAsAAAAACKwAAAPcAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACDKgqEOINzATYCJAMUCwwABCAFhGcHUhuXB8gekiRFgh44SEAVRFBA8fDfGr/7Zmb3uzVxiR9JJKJ48koUK4USSF2TR05nvvesWTN3Tntw+bWAg4Wy7SQp05dOFkwO6udZ+ATcAAFwoE/WVBfJ1dKVhRBApJEVkHtZV1uhmgrFtDlCPyGX+Qnl9wDPcGEC7yLQbFkq7/PcYgKEP2CQEwzgS+gN7Mp4YOEYEHh3KTGs0Git0+4s4gOoSC+9LwPe6z8ffxkKJKky4VZXb+WYwfFn0c87fOT/MvkzpbwmnJ1QIWO+ZZ64Fx+6wcdMzvPRHBb3tQ3w+EaJHzHPpecd//8TPlrTq0CjZjFEyf2Pl4iaYGpF3LGjGDO1rLLNMSgj81NyCDR3YErCPO2kGU34CPhHoI57vhCyMhDdP25IKOYX+EjBsHkL49m5u9cviYPm2Ys3eDBuHuaY6TUo5mrPBjnWDOfI67tuE7dnUnfvSmyFvneP7SHv3MmTidvWmUSwQyZdDg/9cShUfE7D7JnxFKFM3ahgNDVX2eSJI+lyiAT5TWO7QmeulzeEhL3epGxsXLjz6MXT50fzs2OJ2Qs2rMHoeZht0y5E0BxJp1NVm+5dufPDBsTDkoPNJW+bD2NPkscm6R4HHB79uJmIGg6WRcQ+aWp6Mhr1hzRDiqAwRoHNxxcUNI6sH35eknPurFkjG4fXn0c5yq2OISN3ve+1pfIpKXyq7Q/L2c6nOJH/PFdUbT6kPjRv/vx5m9SsehPJhYGHVG2qQ/OMtfMPqg+BnUXdCFUNUIXeaFO/llg+aNXp8tkJ8UfD+TGJ91M8FbfOXGqYxR+NGOEXadhRYTzatGwSpNjvE2FJbbbveL9s0A7g//+cRIXO+ZCu50hOX/HKL9Ln8j6fhCPhb3x/KS9vikj+GhhSwJepvzHUpldvSfVHtd2D1wsovVuJr4L6FshVApULR1hiC2s3dZZuT8ux9KQ22eyWHhuSBiOQNRpFFdwsVFqsQq3RATSbk7O/RQ8XH1GaMGkSQOi0AZJ2nyDrdA5VcPeg0u851Dr9hWbXIuy0FpOZskTIIGjGWzpwi0lwspIV6cNWQk6yM2JQjIKi24IRXK/ReTN50AnFIta4WzkDQizOioIDz73eDtrtAu4SBSs0IQ2PkCtRq2XDXkVjEhwgiwhiIJAZrkUHnIWJwIlVkZH791WCOBI7hpgSRQVEblbS8Dg9DV0KVJ7JmaptS8a7teIYIAjL81gigQMu9xuA7GJSgHOFT7OCTBANPkfcJZGWkNi0Jk39FscCVp9wHYUbVpEiR4kqak3PLYyT6xAkvSnaKQn6ADc/0cRL/lap3eLkAA
A=')
format
(
'woff2'
)
}
.iconfont
{
...
...
@@ -12,6 +12,14 @@
-moz-osx-font-smoothing
:
grayscale
;
}
.icon-xiangyou1
:before
{
content
:
"\e775"
;
}
.icon-xiangzuo1
:before
{
content
:
"\e779"
;
}
.icon-shanchu
:before
{
content
:
"\e613"
;
}
...
...
subPages/originSafe/components/preview_zz.vue
0 → 100644
View file @
d1cd518f
<
template
>
<view
class=
"box mb-2"
>
<view
class=
"h_title text-center"
>
供货商资质证书
</view>
<view
class=
"swiper-wrap"
>
<swiper
class=
"swiper-inner"
:current=
"img_current"
@
change=
"swiperChange"
@
click=
"handleSwiper"
>
<swiper-item
v-for=
"(arr, idx) in preUtil.dealArr(list, 2)"
:key=
"idx"
>
<image
class=
"swiper-item"
v-for=
"(item, index) in arr"
lazy-load
:key=
"index"
:src=
"baseUrl + '/' + item"
mode=
"aspectFit"
:data-imgurl=
"baseUrl + '/' + item"
/>
</swiper-item>
</swiper>
<template
v-if=
"list && list.length > 2"
>
<view
class=
"pre flex j-center a-center"
@
click=
"handlePre"
><text
class=
"iconfont icon-xiangzuo1"
:class=
"
{preCancle: img_current === 0}">
</text></view>
<view
class=
"next flex j-center a-center"
@
click=
"handleNext"
><text
class=
"iconfont icon-xiangyou1"
:class=
"
{preCancle: img_current === list_len}">
</text></view>
</
template
>
</view>
<view
class=
"w-100 flex j-between a-center mb-2"
v-if=
"originName"
>
<view
class=
"descColor"
>
供货商单位
</view>
<view>
{{originName}}
</view>
</view>
<view
class=
"w-100 flex j-between a-center"
v-if=
"originCode"
>
<view
class=
"descColor"
>
供货商统一社会信用代码
</view>
<view>
{{originCode}}
</view>
</view>
</view>
</template>
<
script
module=
"preUtil"
lang=
"wxs"
>
// 改变这个num的时候要注意下面pre方法的 2
function
dealArr
(
arr
,
num
)
{
console
.
log
(
arr
,
num
)
if
(
!
arr
||
arr
.
length
===
0
)
{
return
[]
}
else
{
var
len
=
arr
.
length
var
newArr
=
[]
// 数组的每维的数量
var
arrLen
=
Math
.
ceil
(
len
/
num
)
for
(
var
i
=
0
;
i
<
arrLen
;
i
++
)
{
newArr
.
push
(
arr
.
splice
(
0
,
num
))
}
return
newArr
}
}
module
.
exports
=
{
dealArr
:
dealArr
}
</
script
>
<
script
>
export
default
{
props
:
{
name
:
{
type
:
String
,
default
:
''
},
originName
:
{
type
:
String
,
default
:
''
},
originCode
:
{
type
:
String
,
default
:
''
},
list
:
{
type
:
Array
,
required
:
true
}
},
data
()
{
return
{
img_current
:
0
,
list_len
:
Math
.
floor
(
this
.
list
.
length
/
2
)
}
},
mounted
()
{
this
.
f_list
=
this
.
list
.
map
(
i
=>
i
=
this
.
baseUrl
+
'
/
'
+
i
)
},
methods
:
{
handleSwiper
(
e
)
{
const
{
imgurl
}
=
e
.
target
.
dataset
if
(
!
imgurl
)
return
wx
.
previewImage
({
urls
:
this
.
f_list
,
current
:
imgurl
})
},
swiperChange
(
e
)
{
const
{
current
}
=
e
.
detail
if
(
this
.
img_current
===
current
)
return
this
.
img_current
=
current
},
handlePre
()
{
if
(
this
.
img_current
===
0
)
return
this
.
img_current
--
},
handleNext
()
{
if
(
this
.
img_current
>=
this
.
list_len
)
return
this
.
img_current
++
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.box
{
@include
borderBox
(
40rpx
,
30rpx
);
background-color
:
#fff
;
.h_title
{
position
:
relative
;
width
:
256rpx
;
margin
:
0
auto
30rpx
;
font-size
:
28rpx
;
font-weight
:
bold
;
color
:
#FF661A
;
&
:
:
before
{
position
:
absolute
;
left
:
-95rpx
;
top
:
50%
;
transform
:
translateY
(
-50%
);
display
:
inline-block
;
content
:
''
;
width
:
100rpx
;
height
:
2rpx
;
background-color
:
#FF661A
;
}
&
:
:
after
{
position
:
absolute
;
right
:
-95rpx
;
top
:
50%
;
transform
:
translateY
(
-50%
);
display
:
inline-block
;
content
:
''
;
width
:
100rpx
;
height
:
2rpx
;
background-color
:
#FF661A
;
}
}
.swiper-wrap
{
position
:
relative
;
width
:
100%
;
height
:
232rpx
;
margin-bottom
:
20rpx
;
.swiper-inner
{
width
:
100%
;
height
:
232rpx
;
.swiper-item
{
width
:
336rpx
!
important
;
height
:
232rpx
;
margin-right
:
20rpx
;
&
:nth-child
(
2n
)
{
margin-right
:
0
;
}
}
}
.pre
{
position
:
absolute
;
left
:
0
;
top
:
50%
;
transform
:
translateY
(
-50%
);
width
:
64rpx
;
height
:
64rpx
;
border-radius
:
50%
;
z-index
:
10
;
color
:
#fff
;
background-color
:
rgba
(
0
,
0
,
0
,
.3
);
}
.next
{
position
:
absolute
;
right
:
0
;
top
:
50%
;
transform
:
translateY
(
-50%
);
width
:
64rpx
;
height
:
64rpx
;
border-radius
:
50%
;
z-index
:
10
;
color
:
#fff
;
background-color
:
rgba
(
0
,
0
,
0
,
.3
);
}
.preCancle
{
color
:
#cdcdcd
!
important
;
}
.nextCancle
{
color
:
#cdcdcd
!
important
;
}
}
}
</
style
>
subPages/originSafe/index.vue
0 → 100644
View file @
d1cd518f
<
template
>
<view
class=
"wraper"
>
<image
class=
"cover"
v-if=
"detail.base_data.goods_img"
:src=
"baseUrl + '/' + detail.base_data.goods_img"
mode=
"aspectFit"
></image>
<view
class=
"title"
>
{{
detail
.
base_data
.
goods_name
}}
</view>
<view
class=
"information font-28 mb-2"
>
<view
class=
"w-100 flex j-between a-center mb-3"
>
<view
class=
"descColor"
>
商品规格
</view>
<view>
{{
detail
.
base_data
.
goods_attr
}}
</view>
</view>
<view
class=
"w-100 flex j-between a-center mb-3"
>
<view
class=
"descColor"
>
产品产地
</view>
<view>
{{
detail
.
base_data
.
production_place
}}
</view>
</view>
<view
class=
"w-100 flex j-between a-center mb-3"
>
<view
class=
"descColor"
>
商品条码
</view>
<view>
{{
detail
.
base_data
.
bar_code
}}
</view>
</view>
<view
class=
"w-100 flex j-between a-center mb-3"
>
<view
class=
"descColor"
>
生产日期
</view>
<view>
{{
detail
.
base_data
.
production_data
}}
</view>
</view>
<view
class=
"w-100 flex j-between a-center"
>
<view
class=
"descColor"
>
保质期
</view>
<view>
{{
detail
.
base_data
.
shelf_life
}}
</view>
</view>
</view>
<preview-zz
v-if=
"detail.dynamic_data.sup_zhizhao && detail.dynamic_data.sup_zhizhao.length > 0"
name=
"供货商"
:originName=
"detail.dynamic_data.sup_name"
:originCode=
"detail.dynamic_data.sup_unit_credit_code"
:list=
"detail.dynamic_data.sup_zhizhao"
/>
<preview-zz
v-if=
"detail.dynamic_data.jxs_zhizhao && detail.dynamic_data.jxs_zhizhao.length > 0"
name=
"经销商"
:originName=
"detail.dynamic_data.jxs_name"
:originCode=
"detail.dynamic_data.sup_unit_credit_code"
:list=
"detail.dynamic_data.jxs_unit_credit_code"
/>
</view>
</
template
>
<
script
>
import
previewZz
from
'
./components/preview_zz.vue
'
import
{
safeOrigin
}
from
'
@/apis/order.js
'
export
default
{
data
()
{
return
{
detail
:
{}
}
},
components
:
{
previewZz
},
onLoad
(
ops
)
{
const
{
og_id
}
=
ops
this
.
og_id
=
og_id
this
.
getData
()
},
methods
:
{
getData
()
{
safeOrigin
(
this
.
og_id
)
.
then
(({
status
,
data
})
=>
{
if
(
status
)
{
this
.
detail
=
data
}
})
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.cover
{
width
:
750rpx
;
height
:
750rpx
;
background-color
:
#fff
;
margin-bottom
:
20rpx
;
}
.title
{
@include
borderBox
(
40rpx
,
30rpx
);
background-color
:
#fff
;
margin-bottom
:
20rpx
;
}
.information
{
width
:
100%
;
@include
borderBox
(
40rpx
,
30rpx
);
background-color
:
#fff
;
}
</
style
>
utils/validate.js
View file @
d1cd518f
...
...
@@ -6,7 +6,7 @@ const validate_strategies = {
if
(
value
.
length
<
len
)
return
errorMsg
;
},
isMobile
:
(
value
,
errorMsg
)
=>
{
if
(
!
(
/^1
[
3-9
]\d{9}
$/
.
test
(
value
)))
return
errorMsg
;
;
if
(
!
(
/^1
[
3-9
]\d{9}
$/
.
test
(
value
)))
return
errorMsg
;
},
isHttp
:
(
value
,
errorMsg
)
=>
{
if
(
!
value
.
startsWith
(
"
http
"
))
return
errorMsg
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment