clone 开源的 Shopping
|
@ -0,0 +1,21 @@
|
||||||
|
.DS_Store
|
||||||
|
node_modules
|
||||||
|
/dist
|
||||||
|
|
||||||
|
# local env files
|
||||||
|
.env.local
|
||||||
|
.env.*.local
|
||||||
|
|
||||||
|
# Log files
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
|
||||||
|
# Editor directories and files
|
||||||
|
.idea
|
||||||
|
.vscode
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
*.sw*
|
|
@ -0,0 +1,90 @@
|
||||||
|
## 基于Vue实现开箱即用移动端商城的单页应用
|
||||||
|
|
||||||
|
>这是开箱即用移动端商城的框架。只需要后端返回标准接口数据,前端配置接口地址等信息,标准商城的页面不需要做任何调整。
|
||||||
|
|
||||||
|
|
||||||
|
## 特性
|
||||||
|
- 开箱即用,集成后台接口格式,前端可做二次开发以实现自有业务
|
||||||
|
- 首页是由图片广告、图文导航、商品、公告、搜索、文本、标题、辅助空白、辅助线、方格等组件根据后端接口数据动态渲染,可根据后端返回的数据渲染出N种首页效果
|
||||||
|
- 定制主题
|
||||||
|
|
||||||
|
## 手机预览
|
||||||
|
|
||||||
|
可以手机扫码以下二维码访问手机端 demo:
|
||||||
|
|
||||||
|
![](./docs/static/qrcode.png)
|
||||||
|
|
||||||
|
![](./docs/static/show1.jpg)
|
||||||
|
|
||||||
|
![](./docs/static/show2.jpg)
|
||||||
|
|
||||||
|
![](./docs/static/show3.jpg)
|
||||||
|
|
||||||
|
|
||||||
|
## 技术栈
|
||||||
|
|
||||||
|
- vue
|
||||||
|
- [vue cli 3](https://cli.vuejs.org/zh/guide/installation.html)
|
||||||
|
- [vant](https://github.com/youzan/vant)
|
||||||
|
- less
|
||||||
|
- [vue-router](https://router.vuejs.org/zh/installation.html)
|
||||||
|
- [axios](https://github.com/axios/axios)
|
||||||
|
- [babel-plugin-import](https://github.com/ant-design/babel-plugin-import)
|
||||||
|
|
||||||
|
|
||||||
|
## 快速上手
|
||||||
|
|
||||||
|
```
|
||||||
|
# 安装 Vue Cli 3
|
||||||
|
npm install -g @vue/cli
|
||||||
|
|
||||||
|
npm install
|
||||||
|
|
||||||
|
npm run dev
|
||||||
|
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
调整src/config/env.js的配置信息
|
||||||
|
```
|
||||||
|
baseUrl: 域名地址
|
||||||
|
dataSources:数据源(local=本地)
|
||||||
|
```
|
||||||
|
## 进度
|
||||||
|
- [x] 界面样式
|
||||||
|
- [ ] 数据通过接口绑定
|
||||||
|
- [ ] 定制主题
|
||||||
|
- [ ] 代码重构优化
|
||||||
|
|
||||||
|
## 页面
|
||||||
|
```
|
||||||
|
- 首页
|
||||||
|
- 分类
|
||||||
|
- 商品
|
||||||
|
- 详情
|
||||||
|
- 列表
|
||||||
|
- 购物车
|
||||||
|
- 提交订单
|
||||||
|
- 会员
|
||||||
|
- 会员中心
|
||||||
|
- 账户管理
|
||||||
|
- 订单
|
||||||
|
- 列表
|
||||||
|
- 详情
|
||||||
|
- 追踪
|
||||||
|
- 售后
|
||||||
|
- 申请
|
||||||
|
- 列表
|
||||||
|
- 详情
|
||||||
|
- 进度详情
|
||||||
|
- 我的优惠券
|
||||||
|
- 我的收藏
|
||||||
|
- 收货地址
|
||||||
|
- 列表
|
||||||
|
- 编辑
|
||||||
|
- 手机登录
|
||||||
|
- 手机注册
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
module.exports = {
|
||||||
|
presets: ['@vue/app'],
|
||||||
|
plugins: [
|
||||||
|
[
|
||||||
|
'import',
|
||||||
|
{ libraryName: 'vant', libraryDirectory: 'es', style: true },
|
||||||
|
'vant'
|
||||||
|
]
|
||||||
|
]
|
||||||
|
};
|
After Width: | Height: | Size: 97 KiB |
After Width: | Height: | Size: 134 KiB |
After Width: | Height: | Size: 242 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 82 KiB |
After Width: | Height: | Size: 171 KiB |
After Width: | Height: | Size: 117 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 326 KiB |
After Width: | Height: | Size: 351 KiB |
After Width: | Height: | Size: 227 KiB |
After Width: | Height: | Size: 94 KiB |
|
@ -0,0 +1,49 @@
|
||||||
|
{
|
||||||
|
"name": "shop-vue",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"start": "vue-cli-service serve",
|
||||||
|
"build": "vue-cli-service build",
|
||||||
|
"lint": "vue-cli-service lint"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"axios": "^0.18.0",
|
||||||
|
"vant": "^1.3.1",
|
||||||
|
"vue": "^2.5.17",
|
||||||
|
"vue-router": "^3.0.1"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@vue/cli-plugin-babel": "^3.4.1",
|
||||||
|
"@vue/cli-plugin-eslint": "^3.4.1",
|
||||||
|
"@vue/cli-service": "^3.4.1",
|
||||||
|
"babel-plugin-import": "^1.8.0",
|
||||||
|
"less": "^3.8.1",
|
||||||
|
"less-loader": "^4.1.0",
|
||||||
|
"vue-lazyload": "^1.2.6",
|
||||||
|
"vue-template-compiler": "^2.5.17"
|
||||||
|
},
|
||||||
|
"eslintConfig": {
|
||||||
|
"root": true,
|
||||||
|
"env": {
|
||||||
|
"node": true
|
||||||
|
},
|
||||||
|
"extends": [
|
||||||
|
"plugin:vue/essential",
|
||||||
|
"eslint:recommended"
|
||||||
|
],
|
||||||
|
"rules": {},
|
||||||
|
"parserOptions": {
|
||||||
|
"parser": "babel-eslint"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"postcss": {
|
||||||
|
"plugins": {
|
||||||
|
"autoprefixer": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"browserslist": [
|
||||||
|
"Android >= 4.0",
|
||||||
|
"iOS >= 7"
|
||||||
|
]
|
||||||
|
}
|
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,14 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0, shrink-to-fit=no, viewport-fit=cover">
|
||||||
|
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="app"></div>
|
||||||
|
<!-- built files will be auto injected -->
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,15 @@
|
||||||
|
<template>
|
||||||
|
<div id="app">
|
||||||
|
<router-view/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import './assets/style/common.css';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'app'
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
import request from "../config/request";
|
||||||
|
|
||||||
|
|
||||||
|
export function GetPage() {
|
||||||
|
return request({
|
||||||
|
url: '/Page/GetPage',
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getProduct(id) {
|
||||||
|
return request({
|
||||||
|
url: '/Page/Product',
|
||||||
|
method: 'get',
|
||||||
|
params: { id }
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,75 @@
|
||||||
|
import request from "../config/request";
|
||||||
|
|
||||||
|
|
||||||
|
export function GetUserIndex() {
|
||||||
|
return request({
|
||||||
|
url: '/User/GetUserIndex',
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function GetFavorite(data){
|
||||||
|
return request({
|
||||||
|
url: '/User/GetFavorite',
|
||||||
|
method: 'post',
|
||||||
|
params: { data }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function DelFavorite(id){
|
||||||
|
return request({
|
||||||
|
url: '/User/DelFavorite',
|
||||||
|
method: 'get',
|
||||||
|
params: { id:id }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function GetAddressList(){
|
||||||
|
return request({
|
||||||
|
url: '/User/GetAddressList',
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function GetAddressById(id){
|
||||||
|
return request({
|
||||||
|
url: '/User/GetAddressById',
|
||||||
|
method: 'get',
|
||||||
|
params: { id }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function SaveAddress(data){
|
||||||
|
return request({
|
||||||
|
url: '/User/SaveAddress',
|
||||||
|
method: 'post',
|
||||||
|
params: { data }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
export function DelAddress(data){
|
||||||
|
return request({
|
||||||
|
url: '/User/DelAddress',
|
||||||
|
method: 'post',
|
||||||
|
params: { data }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function GetCoupon(data){
|
||||||
|
return request({
|
||||||
|
url: '/User/GetCoupon',
|
||||||
|
method: 'Post',
|
||||||
|
params: { data }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function ExchangeCoupon(code){
|
||||||
|
return request({
|
||||||
|
url: '/User/ExchangeCoupon',
|
||||||
|
method: 'Post',
|
||||||
|
params: { code:code }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 6.7 KiB |
|
@ -0,0 +1,7 @@
|
||||||
|
body {margin:0px; padding:0px; color:rgb(34, 34, 34); font-family:Helvetica,"Hiragino Sans GB","Microsoft YaHei",Simsun,"Droid Sans Fallback",sans-serif; text-decoration:none; background:#fff;-webkit-tap-highlight-color:rgba(0,0,0,0); }
|
||||||
|
body,div,dl,dt,dd,ol,ul,li,h1,h2,h3,h4,h5,h6,h7,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0px; padding:0px;}
|
||||||
|
ul{list-style:none;}
|
||||||
|
li{list-style:none;}
|
||||||
|
img {border:0px currentColor;vertical-align:top;}
|
||||||
|
ol {list-style:none; margin:0px; padding:0px;}
|
||||||
|
a{color:rgb(0, 0, 0); text-decoration:none;}
|
|
@ -0,0 +1,888 @@
|
||||||
|
|
||||||
|
|
||||||
|
.tt-header, #ttkey {max-width:640px;}
|
||||||
|
/*倒计时begin*/
|
||||||
|
.countdown {
|
||||||
|
text-align: center;
|
||||||
|
height: 42px;
|
||||||
|
line-height: 42px;
|
||||||
|
font-size: 12px;
|
||||||
|
background-size: cover;
|
||||||
|
background-position: 50%;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fontweight_300 {
|
||||||
|
font-weight: 300;
|
||||||
|
}
|
||||||
|
|
||||||
|
.countdown b {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
|
||||||
|
.countdown b {
|
||||||
|
margin: 5px;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 300
|
||||||
|
}
|
||||||
|
/*倒计时end*/
|
||||||
|
/*魔方begin*/
|
||||||
|
.cap-cube {
|
||||||
|
width: 100%;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-cube__item {
|
||||||
|
float: left;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: cover;
|
||||||
|
background-position: 50%;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-cube__table-image--invisible {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
/*魔方end*/
|
||||||
|
/*图片广告begin*/
|
||||||
|
.swiper-container {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.swiper-slide img {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.cap-image-ad__content {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-image-ad__content .image-wrapper {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-image-ad__image {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.swiper-slide {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 18px;
|
||||||
|
background: #fff;
|
||||||
|
/* Center slide text vertically */
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: -webkit-flex;
|
||||||
|
}
|
||||||
|
.cap-image-ad__slide {
|
||||||
|
width: 100%;
|
||||||
|
overflow-x: scroll;
|
||||||
|
overflow-y: hidden;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-image-ad__slide .image-wrapper {
|
||||||
|
display: inline-block;
|
||||||
|
height: 100%;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-image-ad__slide .cap-image-ad__image {
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
margin-right: 0;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
/*图片广告end*/
|
||||||
|
/*图文导航begin*/
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
font: inherit;
|
||||||
|
font-size: 100%;
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-image-ad__image-nav {
|
||||||
|
white-space: nowrap;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
background-color: #fff;
|
||||||
|
font-size: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-image-ad__image-nav .image-wrapper {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-image-ad__link--image-nav {
|
||||||
|
font-size: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-image-ad__link {
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-image-ad__image-nav .cap-image-ad__image {
|
||||||
|
background-size: cover;
|
||||||
|
background-position: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-image-ad__image-nav .cap-image-ad__nav-title {
|
||||||
|
padding-bottom: 9px;
|
||||||
|
height: 33px;
|
||||||
|
line-height: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-image-ad__nav-title {
|
||||||
|
font-size: 12px;
|
||||||
|
height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
width: 100%;
|
||||||
|
padding-left: 5px;
|
||||||
|
padding-right: 5px;
|
||||||
|
font-weight: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-image-ad__nav-title, .cap-image-ad__title {
|
||||||
|
text-align: center;
|
||||||
|
overflow: hidden;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-image-ad__text-nav .text-nav-wrapper {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 15px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-image-ad__text-nav .cap-image-ad__nav-title {
|
||||||
|
position: relative;
|
||||||
|
height: 12px;
|
||||||
|
line-height: 12px;
|
||||||
|
font-size: 12px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*图文导航end*/
|
||||||
|
/*商品begin*/
|
||||||
|
body, div, dl, dt, dd, ol, ul, li, h1, h2, h3, h4, h5, h6, h7, pre, code, form, fieldset, legend, input, textarea, p, blockquote, th, td {
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol, ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--big {
|
||||||
|
margin: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item {
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
|
min-height: 100px;
|
||||||
|
color: #333;
|
||||||
|
background-color: #fff;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item.simple {
|
||||||
|
background-color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__container--big .cap-goods-list__wrapper:first-child .cap-goods-list__item, .cap-goods-list__container--list .cap-goods-list__wrapper:first-child .cap-goods-list__item {
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--big.cap-goods-list__item--ratio-1-1 .cap-goods-list__photo, .cap-goods-list__item--big.cap-goods-list__item--ratio-3-2 .cap-goods-list__photo {
|
||||||
|
min-height: 0;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--big.cap-goods-list__item--ratio-3-2 .cap-goods-list__photo {
|
||||||
|
padding-top: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--big.cap-goods-list__item--ratio-1-1 .cap-goods-list__img, .cap-goods-list__item--big.cap-goods-list__item--ratio-3-2 .cap-goods-list__img {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__img, .cap-goods-list__photo--soldout:after {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
margin: auto;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__img {
|
||||||
|
vertical-align: bottom;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--big .cap-goods-list__img {
|
||||||
|
position: relative;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--padding .cap-goods-list__img {
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__photo {
|
||||||
|
text-align: center;
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
min-height: 100px;
|
||||||
|
max-height: 500px;
|
||||||
|
z-index: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__info {
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--big .cap-goods-list__info {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item.simple .cap-goods-list__info.has-price, .cap-goods-list__item.simple .cap-goods-list__info.has-title {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__info .title {
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 18px;
|
||||||
|
overflow: hidden;
|
||||||
|
word-break: break-all;
|
||||||
|
font-weight: initial;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--big .cap-goods-list__info .title {
|
||||||
|
width: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-line-clamp: 1;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item.simple .cap-goods-list__info .title {
|
||||||
|
height: 36px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-line-clamp: 2;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item.simple .cap-goods-list__info.has-title.has-price .title, .cap-goods-list__item.simple .cap-goods-list__info.has-title.has-subtitle .title {
|
||||||
|
margin-bottom: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__info .sale-info {
|
||||||
|
color: #e50f3d;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.has-title.has-price.has-btn .sale-info {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 10px;
|
||||||
|
left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__info.has-title.has-price.has-btn {
|
||||||
|
padding-bottom: 36px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.has-title.has-price.has-btn .title {
|
||||||
|
height: 36px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.card .cap-goods-list__buy-btn-wrapper {
|
||||||
|
right: 10px;
|
||||||
|
bottom: 10px;
|
||||||
|
}
|
||||||
|
.title {
|
||||||
|
color: #333;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
/*小图样式*/
|
||||||
|
.cap-goods-list__container--small {
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 0 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__container--small .cap-goods-list__wrapper {
|
||||||
|
float: left;
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item.simple {
|
||||||
|
background-color: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--small {
|
||||||
|
margin: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--small .cap-goods-list__photo {
|
||||||
|
min-height: 0;
|
||||||
|
padding-top: 100%;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--small .cap-goods-list__info.has-price .sale-info {
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*一大两小样式*/
|
||||||
|
.cap-goods-list__container--hybrid, .cap-goods-list__container--waterfall {
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 0 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__container--hybrid .cap-goods-list__wrapper--hybrid-big {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--hybrid-big {
|
||||||
|
margin: 5px 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__container--hybrid .cap-goods-list__wrapper--hybrid-small {
|
||||||
|
width: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__container--hybrid .cap-goods-list__wrapper {
|
||||||
|
float: left;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*详细列表样式*/
|
||||||
|
.cap-goods-list__container--list.cap-goods-list__container--simple {
|
||||||
|
padding-left: 15px;
|
||||||
|
background-color: #fff;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__container--list.cap-goods-list__container--simple .cap-goods-list__wrapper {
|
||||||
|
padding: 10px 15px 10px 0;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item.simple.cap-goods-list__item--list {
|
||||||
|
min-height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item.simple.cap-goods-list__item--list .cap-goods-list__photo {
|
||||||
|
margin-right: 15px;
|
||||||
|
width: 98px;
|
||||||
|
height: 98px;
|
||||||
|
min-height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--list .cap-goods-list__photo {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item.simple.cap-goods-list__item--list .cap-goods-list__info {
|
||||||
|
margin-left: 113px;
|
||||||
|
height: 98px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__info {
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item.simple.cap-goods-list__item--list .cap-goods-list__info .title {
|
||||||
|
height: auto;
|
||||||
|
max-height: 36px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-line-clamp: 2;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item.simple.cap-goods-list__item--list .cap-goods-list__info .sale-info {
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--list.cap-goods-list__item--btn1 .cap-goods-list__info .sale-info {
|
||||||
|
line-height: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--list .cap-goods-list__info .sale-info {
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item.simple.cap-goods-list__item--list .cap-goods-list__buy-btn-wrapper {
|
||||||
|
right: 5px;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__buy-btn-wrapper {
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__buy-btn-wrapper .cap-goods-list__buy-btn-4 {
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 24px;
|
||||||
|
height: 26px;
|
||||||
|
border-color: #f44;
|
||||||
|
color: #f44;
|
||||||
|
min-width: 48px;
|
||||||
|
cursor: pointer;
|
||||||
|
border-radius: 2px;
|
||||||
|
border: 1px solid;
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__container--list.cap-goods-list__container--simple .cap-goods-list__wrapper:after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 200%;
|
||||||
|
height: 200%;
|
||||||
|
-webkit-transform: scale(.5);
|
||||||
|
-moz-transform: scale(.5);
|
||||||
|
-ms-transform: scale(.5);
|
||||||
|
transform: scale(.5);
|
||||||
|
-webkit-transform-origin: 0 0;
|
||||||
|
-moz-transform-origin: 0 0;
|
||||||
|
-ms-transform-origin: 0 0;
|
||||||
|
transform-origin: 0 0;
|
||||||
|
pointer-events: none;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border: 0 solid #e5e5e5;
|
||||||
|
border-bottom-width: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--list.card2:after, .cap-goods-list__item--list.card:after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 200%;
|
||||||
|
height: 200%;
|
||||||
|
-webkit-transform: scale(.5);
|
||||||
|
-moz-transform: scale(.5);
|
||||||
|
-ms-transform: scale(.5);
|
||||||
|
transform: scale(.5);
|
||||||
|
-webkit-transform-origin: 0 0;
|
||||||
|
-moz-transform-origin: 0 0;
|
||||||
|
-ms-transform-origin: 0 0;
|
||||||
|
transform-origin: 0 0;
|
||||||
|
pointer-events: none;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border: 1px solid #e5e5e5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--list.card2 .cap-goods-list__photo, .cap-goods-list__item--list.card .cap-goods-list__photo {
|
||||||
|
margin-right: 10px;
|
||||||
|
width: 118px;
|
||||||
|
height: 118px;
|
||||||
|
min-height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--list.card, .cap-goods-list__item--list.card2 {
|
||||||
|
min-height: auto;
|
||||||
|
margin: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--list.card2 .cap-goods-list__info, .cap-goods-list__item--list.card .cap-goods-list__info {
|
||||||
|
margin-left: 128px;
|
||||||
|
height: 118px;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--list.card2 .cap-goods-list__info .title, .cap-goods-list__item--list.card .cap-goods-list__info .title {
|
||||||
|
padding-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--list .cap-goods-list__info .title {
|
||||||
|
padding-top: 2px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-line-clamp: 2;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--list.cap-goods-list__item--btn4 .cap-goods-list__info .sale-info {
|
||||||
|
line-height: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--list.card2 .cap-goods-list__buy-btn-wrapper, .cap-goods-list__item--list.card .cap-goods-list__buy-btn-wrapper {
|
||||||
|
right: 15px;
|
||||||
|
bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--list .cap-goods-list__info.has-title.has-price.has-btn {
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*一行三个样式*/
|
||||||
|
.cap-goods-list__container--three {
|
||||||
|
padding: 0 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--three {
|
||||||
|
margin: 5px 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__item--three .cap-goods-list__photo {
|
||||||
|
min-height: 0;
|
||||||
|
padding-top: 100%;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__container--three .cap-goods-list__wrapper {
|
||||||
|
float: left;
|
||||||
|
width: 33.33%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.simple.cap-goods-list__item--three .cap-goods-list__info .sale-info {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*横向滑动样式*/
|
||||||
|
.cap-goods-list__container--three.nowrap {
|
||||||
|
overflow-x: auto;
|
||||||
|
overflow-y: hidden;
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -webkit-flex;
|
||||||
|
display: -moz-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
-webkit-flex-wrap: nowrap;
|
||||||
|
-ms-flex-wrap: nowrap;
|
||||||
|
flex-wrap: nowrap;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
margin-bottom: -10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-goods-list__container--three.nowrap .cap-goods-list__wrapper {
|
||||||
|
-webkit-box-flex: 0;
|
||||||
|
-webkit-flex: 0 0 30%;
|
||||||
|
-moz-box-flex: 0;
|
||||||
|
-ms-flex: 0 0 30%;
|
||||||
|
flex: 0 0 30%;
|
||||||
|
width: 30%;
|
||||||
|
float: none;
|
||||||
|
}
|
||||||
|
/*商品end*/
|
||||||
|
/*标题begin*/
|
||||||
|
.cap-title {
|
||||||
|
padding: 10px;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
overflow: hidden;
|
||||||
|
word-break: break-all;
|
||||||
|
position: relative;
|
||||||
|
background: #F9F9F9;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-title__main {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cap-title__sub {
|
||||||
|
font-size: 11px;
|
||||||
|
color: #8c8c8c;
|
||||||
|
margin: 5px 0 0;
|
||||||
|
}
|
||||||
|
/*标题end*/
|
||||||
|
/*商品搜索begin*/
|
||||||
|
.search-box, .search-box__view {
|
||||||
|
width: 100%;
|
||||||
|
height: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-box__view {
|
||||||
|
padding: 0 15px;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -webkit-flex;
|
||||||
|
display: -moz-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
-webkit-box-align: center;
|
||||||
|
-webkit-align-items: center;
|
||||||
|
-moz-box-align: center;
|
||||||
|
-ms-flex-align: center;
|
||||||
|
align-items: center;
|
||||||
|
-webkit-transition: top .3s linear;
|
||||||
|
-moz-transition: top .3s linear;
|
||||||
|
transition: top .3s linear;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search {
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -webkit-flex;
|
||||||
|
display: -moz-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
-webkit-box-align: center;
|
||||||
|
-webkit-align-items: center;
|
||||||
|
-moz-box-align: center;
|
||||||
|
-ms-flex-align: center;
|
||||||
|
align-items: center;
|
||||||
|
-webkit-box-flex: 1;
|
||||||
|
-webkit-flex: 1;
|
||||||
|
-moz-box-flex: 1;
|
||||||
|
-ms-flex: 1;
|
||||||
|
flex: 1;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search .cell {
|
||||||
|
-webkit-box-flex: 1;
|
||||||
|
-webkit-flex: 1;
|
||||||
|
-moz-box-flex: 1;
|
||||||
|
-ms-flex: 1;
|
||||||
|
flex: 1;
|
||||||
|
padding: 0 10px;
|
||||||
|
height: 40px;
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cell {
|
||||||
|
width: 100%;
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -webkit-flex;
|
||||||
|
display: -moz-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
padding: 10px 15px;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
line-height: 24px;
|
||||||
|
position: relative;
|
||||||
|
background-color: #fff;
|
||||||
|
color: #333;
|
||||||
|
font-size: 14px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.field .cell__value {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cell__value--alone {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cell__value {
|
||||||
|
overflow: hidden;
|
||||||
|
text-align: right;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cell__title, .cell__value {
|
||||||
|
-webkit-box-flex: 1;
|
||||||
|
-webkit-flex: 1;
|
||||||
|
-moz-box-flex: 1;
|
||||||
|
-ms-flex: 1;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.field__body {
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -webkit-flex;
|
||||||
|
display: -moz-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
-webkit-box-align: center;
|
||||||
|
-webkit-align-items: center;
|
||||||
|
-moz-box-align: center;
|
||||||
|
-ms-flex-align: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.field__control {
|
||||||
|
border: 0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
width: 100%;
|
||||||
|
resize: none;
|
||||||
|
display: block;
|
||||||
|
line-height: normal;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
background-color: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search .icon-search {
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
font-size: inherit;
|
||||||
|
text-rendering: auto;
|
||||||
|
color: #666;
|
||||||
|
font-size: 16px;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search__filed {
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -webkit-flex;
|
||||||
|
display: -moz-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
-webkit-box-flex: 1;
|
||||||
|
-webkit-flex: 1;
|
||||||
|
-moz-box-flex: 1;
|
||||||
|
-ms-flex: 1;
|
||||||
|
flex: 1;
|
||||||
|
-webkit-box-align: center;
|
||||||
|
-webkit-align-items: center;
|
||||||
|
-moz-box-align: center;
|
||||||
|
-ms-flex-align: center;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search__filed--center {
|
||||||
|
-webkit-box-pack: center;
|
||||||
|
-webkit-justify-content: center;
|
||||||
|
-moz-box-pack: center;
|
||||||
|
-ms-flex-pack: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search__filed--center .cell {
|
||||||
|
-webkit-box-flex: 0;
|
||||||
|
-webkit-flex: none;
|
||||||
|
-moz-box-flex: 0;
|
||||||
|
-ms-flex: none;
|
||||||
|
flex: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search .cell__value .field__control {
|
||||||
|
background: transparent;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search .field__body {
|
||||||
|
-webkit-box-flex: 1;
|
||||||
|
-webkit-flex: 1;
|
||||||
|
-moz-box-flex: 1;
|
||||||
|
-ms-flex: 1;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search .cell__value {
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -webkit-flex;
|
||||||
|
display: -moz-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
-webkit-box-align: center;
|
||||||
|
-webkit-align-items: center;
|
||||||
|
-moz-box-align: center;
|
||||||
|
-ms-flex-align: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
.search__filed--circle {
|
||||||
|
border-radius: 20px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*商品搜索end*/
|
||||||
|
/*公告begin*/
|
||||||
|
.notice-bar__left-icon {
|
||||||
|
height: 18px;
|
||||||
|
min-width: 20px;
|
||||||
|
padding-top: 1px;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notice-bar__wrap {
|
||||||
|
-webkit-box-flex: 1;
|
||||||
|
-webkit-flex: 1;
|
||||||
|
-moz-box-flex: 1;
|
||||||
|
-ms-flex: 1;
|
||||||
|
flex: 1;
|
||||||
|
height: 18px;
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notice-bar__content {
|
||||||
|
position: absolute;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notice-bar {
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -webkit-flex;
|
||||||
|
display: -moz-box;
|
||||||
|
display: -ms-flexbox;
|
||||||
|
display: flex;
|
||||||
|
color: #f60;
|
||||||
|
padding: 9px 15px;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 1.5;
|
||||||
|
position: relative;
|
||||||
|
background-color: #fff7cc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.notice-bar__left-icon img {
|
||||||
|
width: 16px;
|
||||||
|
height: 16px;
|
||||||
|
vertical-align: baseline;
|
||||||
|
}
|
||||||
|
/*公告end*/
|
|
@ -0,0 +1,106 @@
|
||||||
|
<template>
|
||||||
|
<van-cell-group class="additional">
|
||||||
|
<van-card
|
||||||
|
:title="product.title"
|
||||||
|
:desc="product.desc"
|
||||||
|
:num="(iscard?null:product.quantity)"
|
||||||
|
style="background:#fff"
|
||||||
|
>
|
||||||
|
<template slot="thumb">
|
||||||
|
<img :src="product.imageURL" />
|
||||||
|
<p v-if="product.imageTag!=null&&product.imageTag!=''" class="image_tag">{{product.imageTag}}</p>
|
||||||
|
</template>
|
||||||
|
<template slot="tags">
|
||||||
|
<p class="price" v-if="product.price!=null&&product.price!=''" >
|
||||||
|
¥<span>{{product.price}}</span>
|
||||||
|
<van-tag v-if="product.tags!=null" v-for="tag in product.tags" :key="tag" plain type="danger">{{tag}}</van-tag>
|
||||||
|
</p>
|
||||||
|
<van-stepper v-if="iscard" v-model="product.quantity" :max="product.max" :min="product.min" />
|
||||||
|
</template>
|
||||||
|
</van-card>
|
||||||
|
<van-cell v-for="(gift,j) in product.gift" :key="j" :value="'x'+gift.quantity" >
|
||||||
|
<template slot="title">
|
||||||
|
<van-tag type="danger" v-if="j==0" >赠品</van-tag>
|
||||||
|
<span class="van-cell-text" :style="(j>0?'margin-left: 35px;':'')" >{{gift.title}}</span>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
<slot />
|
||||||
|
</van-cell-group>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name:'product-card',
|
||||||
|
props:{
|
||||||
|
product:Object,
|
||||||
|
iscard: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.additional {
|
||||||
|
.van-cell {
|
||||||
|
padding: 0 15px;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
.van-cell:not(:last-child)::after{
|
||||||
|
border:0;
|
||||||
|
}
|
||||||
|
.van-card__title{
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.van-cell__title {
|
||||||
|
flex: 10;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.van-tag {
|
||||||
|
line-height: 12px;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
.price {
|
||||||
|
color: #e93b3d;
|
||||||
|
font-size: 10px;
|
||||||
|
overflow: hidden;
|
||||||
|
height: 18px;
|
||||||
|
span {
|
||||||
|
font-size: 16px;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
.van-tag{
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.van-stepper{
|
||||||
|
position: absolute;
|
||||||
|
bottom: 5px;
|
||||||
|
right: 5px;
|
||||||
|
&__plus{
|
||||||
|
width: 30px;
|
||||||
|
}
|
||||||
|
&__minus{
|
||||||
|
width: 30px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.image_tag{
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
width: 90px;
|
||||||
|
height: 20px;
|
||||||
|
line-height: 20px;
|
||||||
|
font-size: 10px;
|
||||||
|
color: #fff;
|
||||||
|
text-align: center;
|
||||||
|
background-color: rgba(0,0,0,.7);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.additional::after{
|
||||||
|
border-color: #f7f7f7;
|
||||||
|
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,22 @@
|
||||||
|
<template>
|
||||||
|
<div style="height:50px;">
|
||||||
|
<van-tabbar >
|
||||||
|
<van-tabbar-item icon="wap-home" to="/home">首页</van-tabbar-item>
|
||||||
|
<van-tabbar-item icon="wap-nav" to="/category" >分类</van-tabbar-item>
|
||||||
|
<van-tabbar-item icon="cart" to="/cart" >购物车</van-tabbar-item>
|
||||||
|
<van-tabbar-item icon="contact" to="/user/index">我的</van-tabbar-item>
|
||||||
|
</van-tabbar>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { Tabbar, TabbarItem } from "vant";
|
||||||
|
export default {
|
||||||
|
name:'navigate',
|
||||||
|
components:{
|
||||||
|
[Tabbar.name]: Tabbar,
|
||||||
|
[TabbarItem.name]: TabbarItem,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
<template>
|
||||||
|
<van-nav-bar
|
||||||
|
:title="title"
|
||||||
|
left-text=""
|
||||||
|
left-arrow
|
||||||
|
@click-left="onBack"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { NavBar } from 'vant';
|
||||||
|
export default {
|
||||||
|
name:'headerNav',
|
||||||
|
components:{
|
||||||
|
[NavBar.name]: NavBar,
|
||||||
|
},
|
||||||
|
props:{
|
||||||
|
title:String,
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onBack() {
|
||||||
|
history.back();
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,183 @@
|
||||||
|
<template>
|
||||||
|
<div class="cap-cube" style="font-size:100%;width:100%;">
|
||||||
|
<div v-for="(item,index) in data.images" :key="index" class="cap-cube__item" :style="'width:'+item.imgwidth+'rem;'+item.style">
|
||||||
|
<a :href="item.link">
|
||||||
|
<img :src="item.src+'?w=375'" :style="'width:'+item.imgwidth+'rem;'" />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div style="clear:both;"></div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "cube",
|
||||||
|
props: {
|
||||||
|
data: Object
|
||||||
|
},
|
||||||
|
created: function() {
|
||||||
|
var gap = this.data.imagegap;
|
||||||
|
var margin = gap / 2;
|
||||||
|
var width = 375;
|
||||||
|
var max = 0;
|
||||||
|
switch (this.data.type) {
|
||||||
|
case "1":
|
||||||
|
max = 2;
|
||||||
|
width = (width - margin * 2) / 2;
|
||||||
|
break;
|
||||||
|
case "2":
|
||||||
|
max = 3;
|
||||||
|
width = (width - margin * 4) / 3;
|
||||||
|
break;
|
||||||
|
case "3":
|
||||||
|
max = 4;
|
||||||
|
width = (width - margin * 6) / 4;
|
||||||
|
break;
|
||||||
|
case "4":
|
||||||
|
max = 4;
|
||||||
|
width = (width - margin * 2) / 2;
|
||||||
|
break;
|
||||||
|
case "5":
|
||||||
|
max = 3;
|
||||||
|
width = (width - margin * 2) / 2;
|
||||||
|
break;
|
||||||
|
case "6":
|
||||||
|
max = 3;
|
||||||
|
width = (width - margin * 2) / 2;
|
||||||
|
break;
|
||||||
|
case "7":
|
||||||
|
max = 4;
|
||||||
|
width = (width - margin * 2) / 2;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
margin = margin / 50;
|
||||||
|
width = width / 50;
|
||||||
|
var imagelist = [];
|
||||||
|
|
||||||
|
for (var i = 0; i < max; i++) {
|
||||||
|
var imgwidth = width;
|
||||||
|
var item = this.data.imagelist[i];
|
||||||
|
var style = "";
|
||||||
|
switch (this.data.type) {
|
||||||
|
case "1":
|
||||||
|
{
|
||||||
|
if (i == 0) {
|
||||||
|
style = "margin-right:" + margin + "rem;";
|
||||||
|
} else {
|
||||||
|
style = "margin-left:" + margin + "rem;";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "2":
|
||||||
|
{
|
||||||
|
if (i == 0) {
|
||||||
|
style = "margin-right:" + margin + "rem;";
|
||||||
|
} else if (i == 1) {
|
||||||
|
style = "margin:0 " + margin + "rem;";
|
||||||
|
} else {
|
||||||
|
style = "margin-left:" + margin + "rem;";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "3":
|
||||||
|
{
|
||||||
|
if (i == 0) {
|
||||||
|
style = "margin-right:" + margin + "rem;";
|
||||||
|
} else if (i == 1 || i == 2) {
|
||||||
|
style = "margin:0 " + margin + "rem;";
|
||||||
|
} else {
|
||||||
|
style = "margin-left:" + margin + "rem;";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "4":
|
||||||
|
{
|
||||||
|
if (i == 0) {
|
||||||
|
style =
|
||||||
|
"margin-right:" +
|
||||||
|
margin +
|
||||||
|
"rem;margin-bottom:" +
|
||||||
|
margin +
|
||||||
|
"rem;";
|
||||||
|
} else if (i == 1) {
|
||||||
|
style =
|
||||||
|
"margin-left:" +
|
||||||
|
margin +
|
||||||
|
"rem;margin-bottom:" +
|
||||||
|
margin +
|
||||||
|
"rem;";
|
||||||
|
} else if (i == 2) {
|
||||||
|
style =
|
||||||
|
"margin-right:" + margin + "rem;margin-top:" + margin + "rem;";
|
||||||
|
} else {
|
||||||
|
style =
|
||||||
|
"margin-left:" + margin + "rem;margin-top:" + margin + "rem;";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "5":
|
||||||
|
{
|
||||||
|
if (i == 0) {
|
||||||
|
style = "margin-right:" + margin + "rem;";
|
||||||
|
} else if (i == 1) {
|
||||||
|
style =
|
||||||
|
"margin-left:" +
|
||||||
|
margin +
|
||||||
|
"rem;margin-bottom:" +
|
||||||
|
margin +
|
||||||
|
"rem;";
|
||||||
|
} else {
|
||||||
|
style =
|
||||||
|
"margin-left:" + margin + "rem;margin-top:" + margin + "rem;";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "6":
|
||||||
|
{
|
||||||
|
if (i == 0) {
|
||||||
|
imgwidth = width * 2;
|
||||||
|
style = "margin-bottom:" + margin + "rem;";
|
||||||
|
} else if (i == 1) {
|
||||||
|
style =
|
||||||
|
"margin-right:" + margin + "rem;margin-top:" + margin + "rem;";
|
||||||
|
} else {
|
||||||
|
style =
|
||||||
|
"margin-left:" + margin + "rem;margin-top:" + margin + "rem;";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "7":
|
||||||
|
{
|
||||||
|
if (i == 0) {
|
||||||
|
style = "margin-right:" + margin + "rem;";
|
||||||
|
} else if (i == 1) {
|
||||||
|
style =
|
||||||
|
"margin-right:" + margin + "rem;margin-top:" + margin + "rem;";
|
||||||
|
} else if (i == 2) {
|
||||||
|
imgwidth = width / 2 - margin;
|
||||||
|
style =
|
||||||
|
"margin-left:" +
|
||||||
|
margin +
|
||||||
|
"rem;margin-top:" +
|
||||||
|
margin +
|
||||||
|
"rem;margin-right:" +
|
||||||
|
margin +
|
||||||
|
"rem";
|
||||||
|
} else {
|
||||||
|
imgwidth = width / 2 - margin;
|
||||||
|
style =
|
||||||
|
"margin-left:" + margin + "rem;margin-top:" + margin + "rem;";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
item.style = style;
|
||||||
|
item.imgwidth = imgwidth;
|
||||||
|
imagelist.push(item);
|
||||||
|
}
|
||||||
|
this.data.images = imagelist;
|
||||||
|
},
|
||||||
|
computed: {}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<van-swipe :autoplay="3000" v-if="data.type=='1'" :style="'height:'+height+'px'" >
|
||||||
|
<van-swipe-item v-for="(image,index) in data.imagelist" :key="index" >
|
||||||
|
<a :href="image.url">
|
||||||
|
<img v-lazy="image.src+''" style="width: 100%;" />
|
||||||
|
</a>
|
||||||
|
</van-swipe-item>
|
||||||
|
</van-swipe>
|
||||||
|
<ul v-if="data.type=='2'">
|
||||||
|
<li v-for="(image,index) in data.imagelist" :key="index" class="cap-image-ad__content" :style="'margin:'+data.imagegap+'px 0px;'">
|
||||||
|
<div class="image-wrapper">
|
||||||
|
<a :href="image.url">
|
||||||
|
<img alt="" class="cap-image-ad__image" v-lazy="image.src+''" />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<div v-if="data.type=='3'||data.type=='4'||data.type=='5'" class='cap-image-ad__image-nav' style='overflow-x:scroll;' >
|
||||||
|
<div v-for="(item,index) in data.imagelist" :key="index" class="image-wrapper" :style="'width:'+(data.type=='3'?'80':(data.type=='4'?'40':'20'))+'%;margin-right:'+data.imagegap+'px;'">
|
||||||
|
<a :href="item.link" class="cap-image-ad__link cap-image-ad__link--image-nav" >
|
||||||
|
<div class="cap-image-ad__image">
|
||||||
|
<img :src="item.src+'?w=640'" style="width: 100%; " />
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name:'imageAd',
|
||||||
|
components:{
|
||||||
|
},
|
||||||
|
props:{
|
||||||
|
data:Object
|
||||||
|
},
|
||||||
|
data(){
|
||||||
|
return{
|
||||||
|
height:0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created(){
|
||||||
|
if(this.data.imagelist.length==0||this.data.type!='1'){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var that=this;
|
||||||
|
var image =this.data.imagelist[0];
|
||||||
|
let img = new Image()
|
||||||
|
img.src = image.src;
|
||||||
|
var width= window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
|
||||||
|
img.onload = function () {
|
||||||
|
that.height= Math.ceil(img.height/img.width * width);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,36 @@
|
||||||
|
<template>
|
||||||
|
<div :class='(data.type == "1" ? "cap-image-ad__image-nav" : "cap-image-ad__slide cap-image-ad__text-nav")' :style='"overflow-x:"+(data.showtype == "1" ? "hidden" : "scroll")+"; background-color:"+data.backgroundcolor' >
|
||||||
|
<div v-if="data.type == '1'" v-for="(item,index) in data.imagelist" :key="index" class="image-wrapper" :style="'width:'+ data.width+'%; margin-right: 0px;'">
|
||||||
|
<a :href="item.link" class="cap-image-ad__link cap-image-ad__link--image-nav" :style="'color:'+data.color">
|
||||||
|
<div class="cap-image-ad__image">
|
||||||
|
<img v-lazy="item.src+'?w=320'" style="width: 100%; " />
|
||||||
|
</div>
|
||||||
|
<h3 v-if="item.title!=''" class="cap-image-ad__nav-title">{{item.title}}</h3>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<a v-if="data.type=='2'" v-for="(item,index) in data.imagelist" :key="index" :href="item.link" class="text-nav-wrapper" :style="'width:'+data.width+'%; color: '+data.color+'; background-color: '+data.backgroundcolor"><h3 class="cap-image-ad__nav-title">{{item.title}}</h3></a>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name:'imageText',
|
||||||
|
props:{
|
||||||
|
data:Object
|
||||||
|
},
|
||||||
|
created:function(){
|
||||||
|
var width = 0;
|
||||||
|
if (this.data.showtype == "1") {
|
||||||
|
width = 100 / this.data.imagelist.length;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
width = (100 * 0.95) / (this.data.shownumber - 1);
|
||||||
|
}
|
||||||
|
this.data.width=width;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,30 @@
|
||||||
|
<template>
|
||||||
|
<div :style="divstyle" ><div :style="linestyle"></div></div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'page-line',
|
||||||
|
props: {
|
||||||
|
data: Object,
|
||||||
|
},
|
||||||
|
computed:{
|
||||||
|
divstyle(){
|
||||||
|
return{
|
||||||
|
height:"30px",
|
||||||
|
position:'relative',
|
||||||
|
margin:'0px '+this.data.margintype+'px'
|
||||||
|
};
|
||||||
|
},
|
||||||
|
linestyle(){
|
||||||
|
return{
|
||||||
|
position:'absolute',
|
||||||
|
top:'14px',
|
||||||
|
width:'100%',
|
||||||
|
borderTop:'1px '+(this.data.type==undefined?'solid':this.data.type)+" "+(this.data.color==undefined?'#000':this.data.color),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
<template>
|
||||||
|
<NoticeBar
|
||||||
|
:text="data.value"
|
||||||
|
:background="data.background"
|
||||||
|
:color="data.color"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { NoticeBar } from "vant";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name:'notice',
|
||||||
|
components:{
|
||||||
|
NoticeBar
|
||||||
|
},
|
||||||
|
props:{
|
||||||
|
data:Object
|
||||||
|
},
|
||||||
|
computed:{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
|
@ -0,0 +1,81 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<ul :class="'cap-goods-list__container cap-goods-list__container--'+data.classname+' cap-goods-list__container--'+data.ParameterDictionary.showtype+' '+(data.ParameterDictionary.type=='6'?'nowrap':'')" >
|
||||||
|
<li v-if="productlist.length==0" style="width:100%;height:150px;border:0px;">
|
||||||
|
<div style="width:100%;height:150px;"></div>
|
||||||
|
</li>
|
||||||
|
<li v-for="(item,index) in productlist" :key="index" :class="'cap-goods-list__wrapper '+(data.ParameterDictionary.type=='3'?(index%3==0?'cap-goods-list__wrapper--hybrid-big ':'cap-goods-list__wrapper--hybrid-small '):'')">
|
||||||
|
<router-link :class="'cap-goods-list__item cap-goods-list__item--'+data.classname+' '+data.ParameterDictionary.showtype+' '+data.aclass" :to="'/product/'+item.id">
|
||||||
|
<div class="cap-goods-list__photo">
|
||||||
|
<img class="cap-goods-list__img lazy lazyload" v-lazy="item.imageURL+'?w='+((data.ParameterDictionary.type=='1'||data.ParameterDictionary.type=='3')?'750':'375')" />
|
||||||
|
</div>
|
||||||
|
<div :class="'cap-goods-list__info has-title has-price '+(data.ParameterDictionary.showtype == 'card'?'has-btn':'')">
|
||||||
|
<h3 class="title">{{item.title}}</h3>
|
||||||
|
<p class="sale-info">
|
||||||
|
<span class="sale-price">¥ {{item.price}}</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div v-if="data.ParameterDictionary.showtype == 'card'" class="cap-goods-list__buy-btn-wrapper cap-goods-list__buy-btn-wrapper--4">
|
||||||
|
<button class="cap-goods-list__buy-btn-4 van-button van-button--default van-button--small">{{data.ParameterDictionary.buttonvalue}}</button>
|
||||||
|
</div>
|
||||||
|
</router-link>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<div style="clear:both;"></div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {getProduct} from "../../api/page.js";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name:'product',
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
productlist: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
props:{
|
||||||
|
data:Object
|
||||||
|
},
|
||||||
|
created:function(){
|
||||||
|
var id=this.data.PageSectionId;
|
||||||
|
var data=this.data;
|
||||||
|
var classname = "big";
|
||||||
|
var aclass = "";
|
||||||
|
switch (data.ParameterDictionary.type) {
|
||||||
|
case "1":
|
||||||
|
aclass = "cap-goods-list__item--btn1 cap-goods-list__item--ratio-3-2 cap-goods-list__item--whitespace";
|
||||||
|
break;
|
||||||
|
case "2":
|
||||||
|
classname = "small";
|
||||||
|
aclass = "cap-goods-list__item--btn1 cap-goods-list__item--padding";
|
||||||
|
break;
|
||||||
|
case "3":
|
||||||
|
classname = "hybrid";
|
||||||
|
aclass = "cap-goods-list__item--big cap-goods-list__item--hybrid-big cap-goods-list__item--btn1 cap-goods-list__item--padding";
|
||||||
|
break;
|
||||||
|
case "4":
|
||||||
|
classname = "list";
|
||||||
|
aclass = "cap-goods-list__item--btn4 cap-goods-list__item--padding";
|
||||||
|
break;
|
||||||
|
case "5":
|
||||||
|
classname = "three";
|
||||||
|
aclass = "cap-goods-list__item--btn4 cap-goods-list__item--padding";
|
||||||
|
break;
|
||||||
|
case "6":
|
||||||
|
classname = "three";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
data.classname=classname;
|
||||||
|
data.aclass=aclass;
|
||||||
|
getProduct(id).then(response => {
|
||||||
|
this.productlist=response;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,60 @@
|
||||||
|
<template>
|
||||||
|
<div class="search-box" :style="boxstyle" >
|
||||||
|
<div class="search-box__view" :style="boxviewstyle">
|
||||||
|
<div class="search">
|
||||||
|
<div :class="'search__filed search__filed--'+data.textalign+' search__filed--'+(data.boxtype=='2'?'circle':'rect')" :style="'background-color:'+(data.boxcolor==undefined?'#ffffff':data.boxcolor)+';'">
|
||||||
|
<van-icon name="search" class="icon-search" size="14px" :color="data.color" />
|
||||||
|
<div class="cell field" :style="data.textalign=='left'?'':'width: 80px;'">
|
||||||
|
<div class="cell__value cell__value--alone">
|
||||||
|
<div class="field__body">
|
||||||
|
<input type="search" :placeholder="data.keyword==''||data.keyword==undefined?'商品搜索':data.keyword" class="field__control" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name:'search',
|
||||||
|
components:{
|
||||||
|
},
|
||||||
|
props:{
|
||||||
|
data:Object
|
||||||
|
},
|
||||||
|
created:function(){
|
||||||
|
if(this.data.position=='fixed'){
|
||||||
|
this.$emit('settopheight', 50);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed:{
|
||||||
|
boxstyle(){
|
||||||
|
if(this.data.position=='fixed'){
|
||||||
|
return{
|
||||||
|
position:'fixed',
|
||||||
|
top: 0,
|
||||||
|
zIndex: 10,
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
return{}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
boxviewstyle(){
|
||||||
|
return{
|
||||||
|
background: (this.data.backgroundcolor==undefined?"#f9f9f9":this.data.backgroundcolor),
|
||||||
|
paddingRight: '15px',
|
||||||
|
top:'0px' ,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,25 @@
|
||||||
|
<template>
|
||||||
|
<div :style="style">{{data.value}}</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name:'page-text',
|
||||||
|
props:{
|
||||||
|
data:Object
|
||||||
|
},
|
||||||
|
computed:{
|
||||||
|
style(){
|
||||||
|
return{
|
||||||
|
position:'relative',
|
||||||
|
padding: '10px',
|
||||||
|
fontSize:(this.data.fontsize==undefined?'10':this.data.fontsize)+'px',
|
||||||
|
color:(this.data.color==undefined?'#000':this.data.color),
|
||||||
|
background:this.data.backgroundcolor,
|
||||||
|
textAlign:this.data.textalign,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
<template>
|
||||||
|
<a :href="data.link">
|
||||||
|
<div v-if="data.type == '1'" class="cap-title cap-title--normal" :style="'background-color:'+data.backgroundcolor+'; text-align:'+data.textalign+';color:'+data.color">
|
||||||
|
<h2 class="cap-title__main">{{data.title}}</h2>
|
||||||
|
<p v-if="data.subtitle!=undefined&&data.subtitle!=''" class="cap-title__sub"><span class="cap-title__sub-title">{{data.subtitle}}</span></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div v-if="data.type == '2'" class="title" :style="'background:'+data.backgroundcolor+';text-align:'+data.textalign">
|
||||||
|
<span :style="data.color==''?'':'border-bottom: 1px solid '+data.color+';color:'+data.color+';'">{{data.title}}</span>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name:'page-title',
|
||||||
|
props:{
|
||||||
|
data:Object
|
||||||
|
},
|
||||||
|
computed:{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,20 @@
|
||||||
|
<template>
|
||||||
|
<div :style="style"></div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'whitespace',
|
||||||
|
props: {
|
||||||
|
data: Object,
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
style() {
|
||||||
|
return {
|
||||||
|
height: (this.data.height==undefined?'30':this.data.height)+"px",
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<van-nav-bar left-arrow class="product-serach"
|
||||||
|
@click-left="onBack"
|
||||||
|
>
|
||||||
|
<van-search
|
||||||
|
v-model="value"
|
||||||
|
placeholder="请输入搜索关键词"
|
||||||
|
background="#fff"
|
||||||
|
show-action
|
||||||
|
@search="onSearch"
|
||||||
|
slot="title"
|
||||||
|
>
|
||||||
|
<div slot="action" @click="onSearch">搜索</div>
|
||||||
|
</van-search>
|
||||||
|
</van-nav-bar>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { Search } from "vant";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name:'searchtop',
|
||||||
|
components:{
|
||||||
|
[Search.name]:Search,
|
||||||
|
},
|
||||||
|
data(){
|
||||||
|
return{
|
||||||
|
value:'',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
onSearch() {
|
||||||
|
console.log(this.value);
|
||||||
|
},
|
||||||
|
onBack() {
|
||||||
|
history.back();
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.product-serach{
|
||||||
|
.van-search{
|
||||||
|
padding: 7px 0;
|
||||||
|
background: #fff;
|
||||||
|
.van-cell{
|
||||||
|
background: rgb(242, 242, 242);
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
.van-search__action{
|
||||||
|
background: #e93b3d;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.van-nav-bar__title{
|
||||||
|
margin: 0;
|
||||||
|
max-width: 100%;
|
||||||
|
padding-left: 40px;
|
||||||
|
padding-right: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,51 @@
|
||||||
|
|
||||||
|
import headerNav from '../components/header/nav';
|
||||||
|
|
||||||
|
import navigate from '../components/footer/navigate.vue'
|
||||||
|
import productcard from '../components/common/productcard.vue'
|
||||||
|
import {
|
||||||
|
Tag,
|
||||||
|
Col,
|
||||||
|
Icon,
|
||||||
|
Cell,
|
||||||
|
CellGroup,
|
||||||
|
Swipe,
|
||||||
|
Toast,
|
||||||
|
SwipeItem,
|
||||||
|
GoodsAction,
|
||||||
|
GoodsActionBigBtn,
|
||||||
|
GoodsActionMiniBtn,
|
||||||
|
Actionsheet,
|
||||||
|
Sku,
|
||||||
|
Card,Button,SwipeCell,Dialog,Tab, Tabs,Row,Checkbox, CheckboxGroup, SubmitBar,NavBar,Tabbar, TabbarItem,Panel,List,Step, Steps,Field ,
|
||||||
|
Badge, BadgeGroup,Popup,Stepper,RadioGroup, Radio,Picker,Uploader,Info
|
||||||
|
} from 'vant';
|
||||||
|
|
||||||
|
const components=[
|
||||||
|
Tag,
|
||||||
|
Col,
|
||||||
|
Icon,
|
||||||
|
Cell,
|
||||||
|
CellGroup,
|
||||||
|
Swipe,
|
||||||
|
SwipeItem,
|
||||||
|
GoodsAction,
|
||||||
|
GoodsActionBigBtn,
|
||||||
|
GoodsActionMiniBtn,
|
||||||
|
Actionsheet,
|
||||||
|
Sku,
|
||||||
|
Card,
|
||||||
|
Button,
|
||||||
|
SwipeCell ,
|
||||||
|
Dialog ,
|
||||||
|
headerNav,
|
||||||
|
Tab, Tabs,Toast,Row,Checkbox, CheckboxGroup, SubmitBar,NavBar ,Tabbar, TabbarItem,navigate,Panel,List ,Step, Steps,Field ,
|
||||||
|
Badge, BadgeGroup,Popup,productcard,Stepper,RadioGroup, Radio,Picker,Uploader,Info
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
export default (Vue)=>{
|
||||||
|
components.forEach(Component => {
|
||||||
|
Vue.component(Component.name, Component)
|
||||||
|
});
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/**
|
||||||
|
* 配置编译环境和线上环境之间的切换
|
||||||
|
*
|
||||||
|
* baseUrl: 域名地址
|
||||||
|
* routerMode: 路由模式
|
||||||
|
* dataSources:数据源
|
||||||
|
*/
|
||||||
|
|
||||||
|
let baseUrl = '';
|
||||||
|
let routerMode = 'hash';
|
||||||
|
let dataSources='local';//local=本地,其他值代表非本地
|
||||||
|
|
||||||
|
|
||||||
|
if (process.env.NODE_ENV == 'development') {
|
||||||
|
baseUrl='';
|
||||||
|
|
||||||
|
}else if(process.env.NODE_ENV == 'production'){
|
||||||
|
baseUrl = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
export {
|
||||||
|
baseUrl,
|
||||||
|
routerMode,
|
||||||
|
dataSources,
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
(function(d, w) {
|
||||||
|
const doc = d.documentElement;
|
||||||
|
function rem() {
|
||||||
|
const width = Math.min(doc.getBoundingClientRect().width, 768);
|
||||||
|
doc.style.fontSize = width / 7.5 + 'px';
|
||||||
|
}
|
||||||
|
rem();
|
||||||
|
w.addEventListener('resize', rem);
|
||||||
|
})(document, window);
|
||||||
|
|
|
@ -0,0 +1,94 @@
|
||||||
|
|
||||||
|
import axios from 'axios'
|
||||||
|
import {baseUrl,dataSources} from './env';
|
||||||
|
import datas from '../data/data';
|
||||||
|
|
||||||
|
|
||||||
|
const service =axios.create({
|
||||||
|
baseURL: baseUrl, // api 的 base_url
|
||||||
|
timeout: 5000, // request timeout
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
const servicef =function(parameter){
|
||||||
|
if(dataSources=='local'){
|
||||||
|
//定义回调函数和axios一致
|
||||||
|
const promist = new Promise(function(resolve,reject){
|
||||||
|
var data=datas[parameter.url];
|
||||||
|
if(typeof data=='string'){
|
||||||
|
data= JSON.parse(data);
|
||||||
|
}
|
||||||
|
resolve(data);
|
||||||
|
})
|
||||||
|
return promist;
|
||||||
|
}
|
||||||
|
return service(parameter);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
service.interceptors.request.use(
|
||||||
|
config => {
|
||||||
|
// Do something before request is sent
|
||||||
|
// if (store.getters.token) {
|
||||||
|
// // 让每个请求携带token-- ['X-Token']为自定义key 请根据实际情况自行修改
|
||||||
|
// config.headers['X-Token'] = getToken()
|
||||||
|
// }
|
||||||
|
|
||||||
|
return config
|
||||||
|
},
|
||||||
|
error => {
|
||||||
|
// Do something with request error
|
||||||
|
console.log(error) // for debug
|
||||||
|
Promise.reject(error)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
// response interceptor
|
||||||
|
service.interceptors.response.use(
|
||||||
|
//response => response,
|
||||||
|
/**
|
||||||
|
* 下面的注释为通过在response里,自定义code来标示请求状态
|
||||||
|
* 当code返回如下情况则说明权限有问题,登出并返回到登录页
|
||||||
|
* 如想通过 xmlhttprequest 来状态码标识 逻辑可写在下面error中
|
||||||
|
* 以下代码均为样例,请结合自生需求加以修改,若不需要,则可删除
|
||||||
|
*/
|
||||||
|
response => {
|
||||||
|
const res = response.data;
|
||||||
|
if (res.ResultCode !== 200) {
|
||||||
|
// Message({
|
||||||
|
// message: res.message,
|
||||||
|
// type: 'error',
|
||||||
|
// duration: 5 * 1000
|
||||||
|
// })
|
||||||
|
// // 50008:非法的token; 50012:其他客户端登录了; 50014:Token 过期了;
|
||||||
|
// if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
|
||||||
|
// // 请自行在引入 MessageBox
|
||||||
|
// // import { Message, MessageBox } from 'element-ui'
|
||||||
|
// MessageBox.confirm('你已被登出,可以取消继续留在该页面,或者重新登录', '确定登出', {
|
||||||
|
// confirmButtonText: '重新登录',
|
||||||
|
// cancelButtonText: '取消',
|
||||||
|
// type: 'warning'
|
||||||
|
// }).then(() => {
|
||||||
|
// store.dispatch('FedLogOut').then(() => {
|
||||||
|
// location.reload() // 为了重新实例化vue-router对象 避免bug
|
||||||
|
// })
|
||||||
|
// })
|
||||||
|
// }
|
||||||
|
console.log(1);
|
||||||
|
return Promise.reject('error')
|
||||||
|
} else {
|
||||||
|
if(typeof response.data.Tag=='string'){
|
||||||
|
return JSON.parse(response.data.Tag);
|
||||||
|
}else{
|
||||||
|
return response.data.Tag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error => {
|
||||||
|
|
||||||
|
return Promise.reject(error)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
export default servicef
|
|
@ -0,0 +1,200 @@
|
||||||
|
import Vue from 'vue';
|
||||||
|
import Router from 'vue-router';
|
||||||
|
|
||||||
|
Vue.use(Router);
|
||||||
|
|
||||||
|
const routes = [
|
||||||
|
{
|
||||||
|
path: '*',
|
||||||
|
redirect: '/home'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'home',
|
||||||
|
component: () => import('../page/index'),
|
||||||
|
meta: {
|
||||||
|
title: '首页'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/login',
|
||||||
|
component: () => import('../page/account/login'),
|
||||||
|
meta: {
|
||||||
|
title: '登录'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/login/password',
|
||||||
|
component: () => import('../page/account/password'),
|
||||||
|
meta: {
|
||||||
|
title: '登录'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/login/phone',
|
||||||
|
component: () => import('../page/account/phonelogin'),
|
||||||
|
meta: {
|
||||||
|
title: '手机号登录'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/login/register',
|
||||||
|
component: () => import('../page/account/register'),
|
||||||
|
meta: {
|
||||||
|
title: '注册'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/user/index',
|
||||||
|
component: () => import('../page/user/index'),
|
||||||
|
name: 'user',
|
||||||
|
meta: {
|
||||||
|
title: '会员中心'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/user/info',
|
||||||
|
component: () => import('../page/user/info/detail'),
|
||||||
|
name: 'user',
|
||||||
|
meta: {
|
||||||
|
title: '账号管理'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/user/address',
|
||||||
|
component: () => import('../page/user/address/list'),
|
||||||
|
meta: {
|
||||||
|
title: '我的地址'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/user/address/edit',
|
||||||
|
component: () => import('../page/user/address/edit'),
|
||||||
|
meta: {
|
||||||
|
title: '修改地址'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/user/favorite',
|
||||||
|
component: () => import('../page/user/favorite/list'),
|
||||||
|
meta: {
|
||||||
|
title: '我的收藏'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/user/coupon',
|
||||||
|
component: () => import('../page/user/coupon/list'),
|
||||||
|
meta: {
|
||||||
|
title: '我的优惠券'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/user/order',
|
||||||
|
component: () => import('../page/user/order/list'),
|
||||||
|
meta: {
|
||||||
|
title: '我的订单'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/user/order/:id',
|
||||||
|
component: () => import('../page/user/order/list'),
|
||||||
|
meta: {
|
||||||
|
title: '我的订单'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/user/order/info/:id',
|
||||||
|
component: () => import('../page/user/order/info'),
|
||||||
|
meta: {
|
||||||
|
title: '我的订单'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/user/order/logistics/:id',
|
||||||
|
component: () => import('../page/user/order/logistics'),
|
||||||
|
meta: {
|
||||||
|
title: '订单追踪'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/user/aftersale',
|
||||||
|
component: () => import('../page/user/aftersale/list'),
|
||||||
|
meta: {
|
||||||
|
title: '售后'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/user/aftersale/apply',
|
||||||
|
component: () => import('../page/user/aftersale/apply'),
|
||||||
|
meta: {
|
||||||
|
title: '申请售后'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/user/aftersale/detail',
|
||||||
|
component: () => import('../page/user/aftersale/detail'),
|
||||||
|
meta: {
|
||||||
|
title: '服务单详情'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/user/aftersale/track/:id',
|
||||||
|
component: () => import('../page/user/aftersale/track'),
|
||||||
|
meta: {
|
||||||
|
title: '进度详情'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/product/:id',
|
||||||
|
component: () => import('../page/product/detail'),
|
||||||
|
meta: {
|
||||||
|
title: '商品详情'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/search',
|
||||||
|
component: () => import('../page/product/list'),
|
||||||
|
meta: {
|
||||||
|
title: '商品列表'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'cart',
|
||||||
|
component: () => import('../page/cart/index'),
|
||||||
|
meta: {
|
||||||
|
title: '购物车'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/order',
|
||||||
|
component: () => import('../page/shipping/order'),
|
||||||
|
meta: {
|
||||||
|
title: '确认订单'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'category',
|
||||||
|
component: () => import('../page/category/index'),
|
||||||
|
meta: {
|
||||||
|
title: '分类'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
// add route path
|
||||||
|
routes.forEach(route => {
|
||||||
|
route.path = route.path || '/' + (route.name || '');
|
||||||
|
});
|
||||||
|
|
||||||
|
const router = new Router({ routes });
|
||||||
|
|
||||||
|
router.beforeEach((to, from, next) => {
|
||||||
|
const title = to.meta && to.meta.title;
|
||||||
|
if (title) {
|
||||||
|
document.title = title;
|
||||||
|
}
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
|
||||||
|
export {
|
||||||
|
router
|
||||||
|
};
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
|
||||||
|
import success from './common/success.json'
|
||||||
|
|
||||||
|
import GetPage from './page/GetPage.json'
|
||||||
|
import PageProduct from './page/Product.json'
|
||||||
|
|
||||||
|
import GetUserIndex from './user/GetUserIndex.json'
|
||||||
|
import GetFavorite from './user/GetFavorite.json'
|
||||||
|
|
||||||
|
import GetAddressList from './user/GetAddressList.json'
|
||||||
|
import GetAddressById from './user/GetAddressById.json'
|
||||||
|
|
||||||
|
import GetCoupon from './user/GetCoupon.json'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
'/Page/GetPage':GetPage,
|
||||||
|
|
||||||
|
'/Page/Product':PageProduct,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
'/User/GetUserIndex':GetUserIndex,
|
||||||
|
'/User/GetFavorite':GetFavorite,
|
||||||
|
'/User/DelFavorite':success,
|
||||||
|
|
||||||
|
'/User/GetAddressList':GetAddressList,
|
||||||
|
'/User/GetAddressById':GetAddressById,
|
||||||
|
|
||||||
|
'/User/SaveAddress':success,
|
||||||
|
'/User/DelAddress':success,
|
||||||
|
|
||||||
|
'/User/GetCoupon':GetCoupon,
|
||||||
|
'/User/ExchangeCoupon':success,
|
||||||
|
}
|
|
@ -0,0 +1,288 @@
|
||||||
|
{
|
||||||
|
"PageId": 11,
|
||||||
|
"Name": "仿考拉",
|
||||||
|
"BackgroundColor": "",
|
||||||
|
"Sections": [
|
||||||
|
{
|
||||||
|
"PageSectionId": 2511,
|
||||||
|
"Code": "Search",
|
||||||
|
"ParameterDictionary": {
|
||||||
|
"keyword": "搜索商品",
|
||||||
|
"position": "fixed",
|
||||||
|
"backgroundcolor": "#f9f9f9",
|
||||||
|
"color": "#999999",
|
||||||
|
"textalign": "center",
|
||||||
|
"boxcolor": "#ffffff",
|
||||||
|
"boxtype": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"PageSectionId": 2512,
|
||||||
|
"Code": "ImageAd",
|
||||||
|
"ParameterDictionary": {
|
||||||
|
"type": "1",
|
||||||
|
"imagegap": "0",
|
||||||
|
"shownumber": "4",
|
||||||
|
"imagelist": [
|
||||||
|
{
|
||||||
|
"link": "/#/search?categoryid=12",
|
||||||
|
"src": "https://haitao.nos.netease.com/6BXWTT4KF3v2CCD1KVT1809182052_960_480.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"link": "/#/product/4",
|
||||||
|
"src": "https://haitao.nosdn2.127.net/ThUbIr9WnE7TbTwTapp-kvAiT1809190053_960_480.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"link": "/#/product/4",
|
||||||
|
"src": "https://haitao.nos.netease.com/f3kJUUtkrDbsiU1LtopkHcBGgT1809182243_960_480.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"link": "/#/product/4",
|
||||||
|
"src": "https://haitao.nosdn2.127.net/EWQ1UI83HQ03U2TLaeShRtEhK19n7175ceTT1809191639_960_480.jpg"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"PageSectionId": 2513,
|
||||||
|
"Code": "ImageAd",
|
||||||
|
"ParameterDictionary": {
|
||||||
|
"type": "2",
|
||||||
|
"imagegap": "0",
|
||||||
|
"shownumber": "4",
|
||||||
|
"imagelist": [
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"linkname": "",
|
||||||
|
"src": "https://haitao.nos.netease.com/gr4TfN5hhFhFg1CaUgya1mdkPDLpE4WTT1806271501_1125_144.png",
|
||||||
|
"title": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"PageSectionId": 2514,
|
||||||
|
"Code": "ImageText",
|
||||||
|
"ParameterDictionary": {
|
||||||
|
"type": "1",
|
||||||
|
"showtype": "1",
|
||||||
|
"shownumber": "4",
|
||||||
|
"color": "",
|
||||||
|
"backgroundcolor": "",
|
||||||
|
"imagelist": [
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"src": "https://haitao.nos.netease.com/gefNTDIqyQsSAEtSpy222T1808221621_192_220.jpg",
|
||||||
|
"title": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"src": "https://haitao.nosdn2.127.net/NVSMWxQKvHyakuP6WruN3T1809031519_192_220.jpg",
|
||||||
|
"title": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"src": "https://haitao.nosdn1.127.net/2dWeQg9FCfC8whIZWhac4T1809031520_192_220.jpg",
|
||||||
|
"title": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"src": "https://haitao.nosdn1.127.net/kZZ6h45lVQhRZLOJPHJd1T1808171739_192_220.jpg",
|
||||||
|
"title": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"src": "https://haitao.nosdn1.127.net/VNeftDVe3h9rgEq7MtfDT1809061111_192_220.jpg",
|
||||||
|
"title": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"PageSectionId": 2515,
|
||||||
|
"Code": "ImageText",
|
||||||
|
"ParameterDictionary": {
|
||||||
|
"type": "1",
|
||||||
|
"showtype": "1",
|
||||||
|
"shownumber": "4",
|
||||||
|
"color": "",
|
||||||
|
"backgroundcolor": "",
|
||||||
|
"imagelist": [
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"src": "https://haitao.nosdn2.127.net/GvpaR0ThVvgBkgT7Vf0yxk2T1809181557_192_220.jpg",
|
||||||
|
"title": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"src": "https://haitao.nos.netease.com/EqTdbMtyfOtDzr0DtcTD90hr2T1809031521_192_220.jpg",
|
||||||
|
"title": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"src": "https://haitao.nosdn2.127.net/Bkbtx8pB7u6B5S9OCU4Eir2f1T1808171744_192_220.jpg",
|
||||||
|
"title": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"src": "https://haitao.nosdn2.127.net/PnANhp9RpFloeI9VhfPXg8T1808171745_192_220.png",
|
||||||
|
"title": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"src": "https://haitao.nos.netease.com/HT4D5CRc3ZZRsuRkeCnTT1808171746_192_220.jpg",
|
||||||
|
"title": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"PageSectionId": 2516,
|
||||||
|
"Code": "ImageAd",
|
||||||
|
"ParameterDictionary": {
|
||||||
|
"type": "2",
|
||||||
|
"imagegap": "0",
|
||||||
|
"shownumber": "4",
|
||||||
|
"imagelist": [
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"linkname": "",
|
||||||
|
"src": "https://haitao.nosdn1.127.net/rzvfEZzFfvTgcrpb08mQgM8w5BpTwC_02T1809190045_960_251.gif",
|
||||||
|
"title": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"PageSectionId": 2517,
|
||||||
|
"Code": "Cube",
|
||||||
|
"ParameterDictionary": {
|
||||||
|
"type": "5",
|
||||||
|
"imagegap": "0",
|
||||||
|
"imagelist": [
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"src": "https://haitao.nosdn2.127.net/UgGLMbgT8N2UfcbFeTw41p6TpSBEVC_03T1809190112_480_480.gif",
|
||||||
|
"title": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"src": "https://haitao.nos.netease.com/qOKOCqh4eAamM9PDxgl7tKEz8g-04-1T1809181138_480_240.jpg",
|
||||||
|
"title": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"src": "https://haitao.nos.netease.com/APF1FTPcSWKGBg42uc064xW5kR_05T1809182215_480_240.jpg",
|
||||||
|
"title": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"PageSectionId": 2519,
|
||||||
|
"Code": "Cube",
|
||||||
|
"ParameterDictionary": {
|
||||||
|
"type": "1",
|
||||||
|
"imagegap": "0",
|
||||||
|
"imagelist": [
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"src": "https://haitao.nos.netease.com/b65wuwPeNGKwoKeccKhkqD6R1m_01T1809182202_480_355.gif",
|
||||||
|
"title": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"src": "https://haitao.nos.netease.com/saDSBpfhpS27uHOrPOAHH7ErSv_02T1809182202_480_355.gif",
|
||||||
|
"title": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"PageSectionId": 2520,
|
||||||
|
"Code": "Cube",
|
||||||
|
"ParameterDictionary": {
|
||||||
|
"type": "4",
|
||||||
|
"imagegap": "0",
|
||||||
|
"imagelist": [
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"linkname": "",
|
||||||
|
"src": "https://haitao.nosdn1.127.net/QlMddWV2hDkmMUtU919dmtkwCvQKFWTT0qf-206BcFSZ7F_19T1809191525_480_228.jpg",
|
||||||
|
"title": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"linkname": "",
|
||||||
|
"src": "https://haitao.nos.netease.com/yUAxhIA12tWlsl5v919lN6CEX6A84TTy6No-20VLH2mLet_20T1809191525_480_228.jpg",
|
||||||
|
"title": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"src": "https://haitao.nos.netease.com/7Ukzzw7E0rcAv06O919w4K3DWhs0nGV5HsN-191LuUSSQQ_33T1809191353_480_305.jpg",
|
||||||
|
"title": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"linkname": "",
|
||||||
|
"src": "https://haitao.nosdn1.127.net/TcWBRJmHKdW7t7oy919fSHnqbHeHcB7U3EN-191akaZTSf_34T1809191354_480_305.jpg",
|
||||||
|
"title": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"PageSectionId": 2521,
|
||||||
|
"Code": "ImageAd",
|
||||||
|
"ParameterDictionary": {
|
||||||
|
"type": "2",
|
||||||
|
"imagegap": "0",
|
||||||
|
"shownumber": "4",
|
||||||
|
"imagelist": [
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"src": "https://haitao.nosdn2.127.net/8v8Qd4gikpeGTMgcjingxuan_huodong111T170101801048_960_190.png",
|
||||||
|
"title": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"src": "https://haitao.nosdn1.127.net/hx0gzgVHpyeT41gmk9kURttb-960-480-7ZhaNcOET1809182240_960_480.jpg",
|
||||||
|
"title": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"PageSectionId": 2521,
|
||||||
|
"Code": "ImageAd",
|
||||||
|
"ParameterDictionary": {
|
||||||
|
"type": "2",
|
||||||
|
"imagegap": "0",
|
||||||
|
"shownumber": "4",
|
||||||
|
"imagelist": [
|
||||||
|
{
|
||||||
|
"link": "",
|
||||||
|
"src": "https://haitao.nosdn1.127.net/61556274-32ef-44bf-84af-b3d4485ac157.png",
|
||||||
|
"title": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"PageSectionId": 2522,
|
||||||
|
"Code": "Product",
|
||||||
|
"ParameterDictionary": {
|
||||||
|
"type": "2",
|
||||||
|
"source": "1",
|
||||||
|
"showsort": "0",
|
||||||
|
"shownumber": "6",
|
||||||
|
"tag": "0",
|
||||||
|
"showtype": "simple",
|
||||||
|
"buttonvalue": "购买",
|
||||||
|
"productids": "4,1,3",
|
||||||
|
"productcategoryid": "",
|
||||||
|
"producttagid": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,62 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id": 4,
|
||||||
|
"title": "Naturie imju 薏仁美白保湿防晒化妆水 500毫升 我是大美人强推 ",
|
||||||
|
"price": "55.00",
|
||||||
|
"imageURL": "https://haitao.nos.netease.com/50c2fafd909f489e9ebd3418cd90a1711533208260850jkcgm1fq10072.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 1,
|
||||||
|
"title": "Ryo 吕 棕吕(原黄吕)防脱固发滋养 洗发水*2+护发素*1 500毫升/瓶",
|
||||||
|
"price": "105.00",
|
||||||
|
"imageURL": "https://haitao.nosdn2.127.net/bc977ba46ed74158b6b3386eaf27f7f81530241584513jizebvc810863.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 3,
|
||||||
|
"title": "【维持泌尿健康】Swisse 高浓度蔓越莓 30粒/瓶 2瓶",
|
||||||
|
"price": "158.00",
|
||||||
|
"imageURL": "https://haitao.nosdn1.127.net/onlineic1jqd6p10155.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 5,
|
||||||
|
"title": "【真正的有机糙米】EARTH'S BEST 有机纯米粉 227克",
|
||||||
|
"price": "35.00",
|
||||||
|
"imageURL": "https://haitao.nos.netease.com/31f78c55a2114eb5a287b38b6475e5fd1513067124727jb3d3lcr19243.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 6,
|
||||||
|
"title": "SK-II 嫩肤清莹露 160毫升",
|
||||||
|
"price": "358.00",
|
||||||
|
"imageURL": "https://haitao.nosdn2.127.net/insm5qxq58_800_800.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 7,
|
||||||
|
"title": "【领券立减100】SK-II小灯泡30ml套装 (小灯泡30ml+神仙水10ml+清莹露10ml+精华霜2.5g)",
|
||||||
|
"price": "1286.00",
|
||||||
|
"imageURL": "https://pop.nosdn.127.net/d336d1f7-670d-40b6-ab58-921012c6b176"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 8,
|
||||||
|
"title": "Apple 苹果 iPhone X 64GB 移动联通4G手机 港版",
|
||||||
|
"price": "6799.00",
|
||||||
|
"imageURL": "https://pop.nosdn.127.net/7936968b-3db1-441d-822b-e9616d01c0f6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 9,
|
||||||
|
"title": "【不伤宝宝初生牙龈】HAPPY BABY 禧贝婴幼儿温和有机磨牙饼干 香蕉甘薯 48克/盒",
|
||||||
|
"price": "56.00",
|
||||||
|
"imageURL": "https://haitao.nos.netease.com/485c149f5ceb4d6a837a67910236048715354385972231.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 10,
|
||||||
|
"title": "Dior 迪奥 粉漾魅惑变色润唇膏 04#橘色 3.5克",
|
||||||
|
"price": "179.00",
|
||||||
|
"imageURL": "https://haitao.nosdn2.127.net/ix7gkb6581_800_800.jpg"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": 10,
|
||||||
|
"title": "ÍpsΛ 茵芙莎 流金岁月美肤水 200毫升",
|
||||||
|
"price": "328.00",
|
||||||
|
"imageURL": "https://haitao.nosdn2.127.net/0938e26c883f451b9387b9daf6b5ed9d1537025125829jm3l2par10687.jpg"
|
||||||
|
}
|
||||||
|
]
|
|
@ -0,0 +1,142 @@
|
||||||
|
export default {
|
||||||
|
kdt_id: 55,
|
||||||
|
user_id: 4674509,
|
||||||
|
offline_id: 0,
|
||||||
|
activity_alias: '',
|
||||||
|
sku: {
|
||||||
|
tree: [
|
||||||
|
{
|
||||||
|
k: '颜色',
|
||||||
|
k_id: '1',
|
||||||
|
v: [
|
||||||
|
{
|
||||||
|
id: '30349',
|
||||||
|
name: '天蓝色',
|
||||||
|
imgUrl:
|
||||||
|
'https://img.yzcdn.cn/upload_files/2017/02/21/FjKTOxjVgnUuPmHJRdunvYky9OHP.jpg!100x100.jpg'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
k_s: 's1',
|
||||||
|
count: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
k: '尺寸',
|
||||||
|
k_id: '2',
|
||||||
|
v: [
|
||||||
|
{
|
||||||
|
id: '1193',
|
||||||
|
name: '1'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: '1194',
|
||||||
|
name: '2'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
k_s: 's2',
|
||||||
|
count: 2
|
||||||
|
}
|
||||||
|
],
|
||||||
|
list: [
|
||||||
|
{
|
||||||
|
id: 2259,
|
||||||
|
price: 100,
|
||||||
|
discount: 100,
|
||||||
|
code: '',
|
||||||
|
s1: '1215',
|
||||||
|
s2: '1193',
|
||||||
|
s3: '0',
|
||||||
|
s4: '0',
|
||||||
|
s5: '0',
|
||||||
|
extend: null,
|
||||||
|
kdt_id: 55,
|
||||||
|
discount_price: 0,
|
||||||
|
stock_num: 110,
|
||||||
|
stock_mode: 0,
|
||||||
|
is_sell: null,
|
||||||
|
combin_sku: false,
|
||||||
|
goods_id: 946755
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2260,
|
||||||
|
price: 100,
|
||||||
|
discount: 100,
|
||||||
|
code: '',
|
||||||
|
s1: '1215',
|
||||||
|
s2: '1194',
|
||||||
|
s3: '0',
|
||||||
|
s4: '0',
|
||||||
|
s5: '0',
|
||||||
|
extend: null,
|
||||||
|
kdt_id: 55,
|
||||||
|
discount_price: 0,
|
||||||
|
stock_num: 0,
|
||||||
|
stock_mode: 0,
|
||||||
|
is_sell: null,
|
||||||
|
combin_sku: false,
|
||||||
|
goods_id: 946755
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2257,
|
||||||
|
price: 100,
|
||||||
|
discount: 100,
|
||||||
|
code: '',
|
||||||
|
s1: '30349',
|
||||||
|
s2: '1193',
|
||||||
|
s3: '0',
|
||||||
|
s4: '0',
|
||||||
|
s5: '0',
|
||||||
|
extend: null,
|
||||||
|
kdt_id: 55,
|
||||||
|
discount_price: 0,
|
||||||
|
stock_num: 111,
|
||||||
|
stock_mode: 0,
|
||||||
|
is_sell: null,
|
||||||
|
combin_sku: false,
|
||||||
|
goods_id: 946755
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2258,
|
||||||
|
price: 100,
|
||||||
|
discount: 100,
|
||||||
|
code: '',
|
||||||
|
s1: '30349',
|
||||||
|
s2: '1194',
|
||||||
|
s3: '0',
|
||||||
|
s4: '0',
|
||||||
|
s5: '0',
|
||||||
|
extend: null,
|
||||||
|
kdt_id: 55,
|
||||||
|
discount_price: 0,
|
||||||
|
stock_num: 6,
|
||||||
|
stock_mode: 0,
|
||||||
|
is_sell: null,
|
||||||
|
combin_sku: false,
|
||||||
|
goods_id: 946755
|
||||||
|
}
|
||||||
|
],
|
||||||
|
price: '1.00',
|
||||||
|
market_price:'10.00',
|
||||||
|
stock_num: 227,
|
||||||
|
collection_id: 2261,
|
||||||
|
collection_price: 0,
|
||||||
|
none_sku: false,
|
||||||
|
sold_num: 0,
|
||||||
|
min_price: '1.00',
|
||||||
|
max_price: '1.00',
|
||||||
|
messages: [
|
||||||
|
],
|
||||||
|
hide_stock: false
|
||||||
|
},
|
||||||
|
goods_id: '946755',
|
||||||
|
alias: '2oml0r0n5vytj',
|
||||||
|
quota: 15,
|
||||||
|
is_virtual: '0',
|
||||||
|
quota_used: 0,
|
||||||
|
goods_info: {
|
||||||
|
title: '测试商品',
|
||||||
|
picture:
|
||||||
|
'https://img.yzcdn.cn/upload_files/2017/03/16/Fs_OMbSFPa183sBwvG_94llUYiLa.jpeg?imageView2/2/w/100/h/100/q/75/format/jpg',
|
||||||
|
price: 1,
|
||||||
|
origin: ''
|
||||||
|
}
|
||||||
|
};
|
|
@ -0,0 +1,9 @@
|
||||||
|
|
||||||
|
{
|
||||||
|
"id": "2",
|
||||||
|
"name": "李四",
|
||||||
|
"tel": "13108826530",
|
||||||
|
"areaCode": "712899",
|
||||||
|
"addressDetail": "浙江省杭州市拱墅区莫干山路 50 号",
|
||||||
|
"isDefault": false
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "1",
|
||||||
|
"name": "张三",
|
||||||
|
"tel": "13000000000",
|
||||||
|
"address": "浙江省杭州市西湖区文三路 138 号东方通信大厦 7 楼 501 室"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "2",
|
||||||
|
"name": "李四",
|
||||||
|
"tel": "1310000000",
|
||||||
|
"address": "浙江省杭州市拱墅区莫干山路 50 号"
|
||||||
|
}
|
||||||
|
]
|
|
@ -0,0 +1,38 @@
|
||||||
|
{
|
||||||
|
"TotalPage":5,
|
||||||
|
"List":[
|
||||||
|
{
|
||||||
|
"Id":12,
|
||||||
|
"Name":"仅可购买自营图书文娱商品",
|
||||||
|
"BeginDate":"2018.09.05",
|
||||||
|
"EndDate":"2018.09.28",
|
||||||
|
"Condition":"满199元可用",
|
||||||
|
"SignPosition":"right",
|
||||||
|
"Coupon":"75",
|
||||||
|
"Sign":"折",
|
||||||
|
"Info":"限品类:仅可购买自营图书文娱商品"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id":13,
|
||||||
|
"Name":"全品类(特例商品除外)",
|
||||||
|
"BeginDate":"2018.09.05",
|
||||||
|
"EndDate":"2018.09.28",
|
||||||
|
"Condition":"满200元可用",
|
||||||
|
"SignPosition":"left",
|
||||||
|
"Coupon":"10",
|
||||||
|
"Sign":"¥",
|
||||||
|
"Info":""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id":14,
|
||||||
|
"Name":"运费券:京东部分自营商品",
|
||||||
|
"BeginDate":"2018.09.05",
|
||||||
|
"EndDate":"2018.09.28",
|
||||||
|
"Condition":"部分特殊商品运费除外",
|
||||||
|
"SignPosition":"left",
|
||||||
|
"Coupon":"6",
|
||||||
|
"Sign":"¥",
|
||||||
|
"Info":"1、运费券仅可用于抵减京东自营商品订单运费,即用户下单结算时,可选择该优惠券按券面值抵减每笔结算订单中的运费;2、虚拟商品及部分特殊购物流程不可用,特殊流程如秒杀等;"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
{
|
||||||
|
"TotalPage":5,
|
||||||
|
"list":[
|
||||||
|
{
|
||||||
|
"id":12,
|
||||||
|
"imageURL":"https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712",
|
||||||
|
"title":"BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套",
|
||||||
|
"price":"499"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id":13,
|
||||||
|
"imageURL":"https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712",
|
||||||
|
"title":"BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套",
|
||||||
|
"price":"499"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id":14,
|
||||||
|
"imageURL":"https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712",
|
||||||
|
"title":"BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套",
|
||||||
|
"price":"499"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id":15,
|
||||||
|
"imageURL":"https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712",
|
||||||
|
"title":"BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套",
|
||||||
|
"price":"499"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id":16,
|
||||||
|
"imageURL":"https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712",
|
||||||
|
"title":"BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套",
|
||||||
|
"price":"499"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"UserName":"Yrin",
|
||||||
|
"Avatar":"http://haitao.nos.netease.com/ZnB0PM5xDzXZ2FeVlmT170102401021_150_150.png",
|
||||||
|
"UnPayTotal":1,
|
||||||
|
"UnRecieveTotal":2,
|
||||||
|
"AfterSaleTotal":3
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
|
||||||
|
import Vue from 'vue';
|
||||||
|
import { router } from './config/router';
|
||||||
|
import './config/rem';
|
||||||
|
import App from './App.vue';
|
||||||
|
import VueLazyload from 'vue-lazyload'
|
||||||
|
import components from './config/components.js';
|
||||||
|
Vue.use(components);
|
||||||
|
|
||||||
|
Vue.use(VueLazyload)
|
||||||
|
|
||||||
|
new Vue({
|
||||||
|
router,
|
||||||
|
el: '#app',
|
||||||
|
render: h => h(App)
|
||||||
|
});
|
|
@ -0,0 +1,67 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="m-logo" style="background:url(//haitao.nos.netease.com/f866dd18-12f0-4bb2-be6d-5cac85cf2627.png) center 73px no-repeat;background-size:161px; text-align: center;
|
||||||
|
padding: 130px 0 0;
|
||||||
|
margin: 15px 0;"></div>
|
||||||
|
<div style="margin:0 10px;font-size: 14px;">
|
||||||
|
<router-link to="/login/phone">
|
||||||
|
<van-button size="large" style="font-size: 14px;height: 42px;line-height: 42px;margin-bottom: 15px;">手机号登录</van-button>
|
||||||
|
</router-link>
|
||||||
|
<router-link to="/login/password">
|
||||||
|
<van-button size="large" style="font-size: 14px;height: 42px;line-height: 42px;margin-bottom: 15px;">密码登录</van-button>
|
||||||
|
</router-link>
|
||||||
|
<router-link to="/login/register">
|
||||||
|
<van-button size="large" type="primary" style="font-size: 14px;height: 42px;line-height: 42px;">手机号一键注册</van-button>
|
||||||
|
</router-link>
|
||||||
|
</div>
|
||||||
|
<div class="m-thirdpart">
|
||||||
|
<p class="tit"><span class="txt">或用以下方式登录</span></p>
|
||||||
|
<div class="lnk">
|
||||||
|
<van-icon name="wechat" color="#1AAD16" />
|
||||||
|
<van-icon name="alipay" color="#7dcbeb"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.m-thirdpart{
|
||||||
|
padding: 40px 20px 50px;
|
||||||
|
font-size: 12px;
|
||||||
|
.tit{
|
||||||
|
position: relative;
|
||||||
|
width: 215px;
|
||||||
|
margin: 0 auto;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
.txt{
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
top: -12px;
|
||||||
|
margin: 0 0 0 -57px;
|
||||||
|
width: 114px;
|
||||||
|
background: #fff;
|
||||||
|
text-align: center;
|
||||||
|
color: #999;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 26px;
|
||||||
|
}
|
||||||
|
.lnk{
|
||||||
|
position: relative;
|
||||||
|
padding: 27px 0 0;
|
||||||
|
width: 280px;
|
||||||
|
margin: 0 auto;
|
||||||
|
text-align: center;
|
||||||
|
.van-icon{
|
||||||
|
font-size: 31px;
|
||||||
|
margin: 0 29px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,31 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<headerNav title="登录"/>
|
||||||
|
<div style="background:url(https://haitao.nos.netease.com/f866dd18-12f0-4bb2-be6d-5cac85cf2627.png) center 18px no-repeat;background-size:161px;">
|
||||||
|
<div style="padding-top: 70px;">
|
||||||
|
<van-cell-group>
|
||||||
|
<van-field
|
||||||
|
placeholder="请输入手机号"
|
||||||
|
/>
|
||||||
|
<van-field
|
||||||
|
type="password"
|
||||||
|
placeholder="请输入密码"
|
||||||
|
/>
|
||||||
|
</van-cell-group>
|
||||||
|
<div style="margin: 10px;">
|
||||||
|
<van-button size="large" type="primary" style="height: 45px;line-height:45px;">登录</van-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,34 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<headerNav title="手机号登录"/>
|
||||||
|
<div style="background:url(https://haitao.nos.netease.com/f866dd18-12f0-4bb2-be6d-5cac85cf2627.png) center 18px no-repeat;background-size:161px;">
|
||||||
|
<div style="padding-top: 70px;">
|
||||||
|
<van-cell-group>
|
||||||
|
<van-field
|
||||||
|
placeholder="请输入手机号"
|
||||||
|
/>
|
||||||
|
<van-field
|
||||||
|
center
|
||||||
|
clearable
|
||||||
|
placeholder="请输入短信验证码"
|
||||||
|
>
|
||||||
|
<van-button slot="button" size="small" type="primary">发送验证码</van-button>
|
||||||
|
</van-field>
|
||||||
|
</van-cell-group>
|
||||||
|
<div style="margin: 10px;">
|
||||||
|
<van-button size="large" type="primary" style="height: 45px;line-height:45px;">登录</van-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,38 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<headerNav title="注册"/>
|
||||||
|
<div style="background:url(https://haitao.nos.netease.com/f866dd18-12f0-4bb2-be6d-5cac85cf2627.png) center 18px no-repeat;background-size:161px;">
|
||||||
|
<div style="padding-top: 70px;">
|
||||||
|
<van-cell-group>
|
||||||
|
<van-field
|
||||||
|
placeholder="请输入手机号"
|
||||||
|
/>
|
||||||
|
<van-field
|
||||||
|
center
|
||||||
|
clearable
|
||||||
|
placeholder="请输入短信验证码"
|
||||||
|
>
|
||||||
|
<van-button slot="button" size="small" type="primary">发送验证码</van-button>
|
||||||
|
</van-field>
|
||||||
|
<van-field
|
||||||
|
type="password"
|
||||||
|
placeholder="请输入密码"
|
||||||
|
/>
|
||||||
|
</van-cell-group>
|
||||||
|
<div style="margin: 10px;">
|
||||||
|
<van-button size="large" type="primary" style="height: 45px;line-height:45px;">注册</van-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,20 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<page/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import page from './page/page.vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components:{
|
||||||
|
page
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,205 @@
|
||||||
|
<template>
|
||||||
|
<div class="card">
|
||||||
|
<headerNav title="购物车"/>
|
||||||
|
<van-cell value="编辑商品" class="head">
|
||||||
|
<template slot="title">
|
||||||
|
<van-checkbox v-model="checkedAll" >全选</van-checkbox>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
|
||||||
|
<van-checkbox-group class="card-goods" v-model="checkedGoods">
|
||||||
|
|
||||||
|
<div class="promotion-group">
|
||||||
|
<div v-for="(item,index) in goods"
|
||||||
|
:key="index" class="card-goods__item">
|
||||||
|
<van-checkbox :name="item.id"></van-checkbox>
|
||||||
|
|
||||||
|
<product-card :product='item' :iscard='true' >
|
||||||
|
<template slot>
|
||||||
|
<van-cell value="修改" >
|
||||||
|
<template slot="title">
|
||||||
|
<van-tag type="danger">促销</van-tag>
|
||||||
|
<span class="van-cell-text" >满60元减5元</span>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
</template>
|
||||||
|
</product-card>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="promotion-group">
|
||||||
|
|
||||||
|
<van-cell is-link class="head">
|
||||||
|
<template slot="title">
|
||||||
|
<van-checkbox v-model="checkedAll" >京东自营</van-checkbox>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
|
||||||
|
|
||||||
|
<div v-for="(item,index) in goods"
|
||||||
|
:key="index+10" class="card-goods__item">
|
||||||
|
<van-checkbox :name="item.id"></van-checkbox>
|
||||||
|
|
||||||
|
<product-card :product='item' :iscard='true' >
|
||||||
|
<template slot>
|
||||||
|
<van-cell value="修改" >
|
||||||
|
<template slot="title">
|
||||||
|
<van-tag type="danger">促销</van-tag>
|
||||||
|
<span class="van-cell-text" >满60元减5元</span>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
</template>
|
||||||
|
</product-card>
|
||||||
|
</div>
|
||||||
|
<van-cell value="去凑单" is-link class="promotion">
|
||||||
|
<template slot="title">
|
||||||
|
<p><van-tag type="danger">满减</van-tag>购满60元,可减5元</p>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
<div v-for="(item,index) in goods"
|
||||||
|
:key="index+20" class="card-goods__item">
|
||||||
|
<van-checkbox :name="item.id"></van-checkbox>
|
||||||
|
|
||||||
|
<product-card :product='item' :iscard='true' >
|
||||||
|
<template slot>
|
||||||
|
<van-cell value="修改" >
|
||||||
|
<template slot="title">
|
||||||
|
<van-tag type="danger">促销</van-tag>
|
||||||
|
<span class="van-cell-text" >满60元减5元</span>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
</template>
|
||||||
|
</product-card>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</van-checkbox-group>
|
||||||
|
|
||||||
|
<div style="height:50px;"></div>
|
||||||
|
<van-submit-bar
|
||||||
|
:price="totalPrice"
|
||||||
|
:disabled="!checkedGoods.length"
|
||||||
|
:button-text="submitBarText"
|
||||||
|
@submit="onSubmit"
|
||||||
|
>
|
||||||
|
<template slot>
|
||||||
|
<van-checkbox v-model="checkedAll" >全选</van-checkbox>
|
||||||
|
</template>
|
||||||
|
</van-submit-bar>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
checkedAll:true,
|
||||||
|
checkedGoods: ['1', '2', '3'],
|
||||||
|
goods: [{
|
||||||
|
id: '1',
|
||||||
|
title: '星巴克(Starbucks)星冰乐 轻盈香草味 咖啡饮料 281ml*6瓶礼盒装低脂减糖',
|
||||||
|
desc: '3.18kg/件',
|
||||||
|
price: '200.00',
|
||||||
|
quantity: 1,
|
||||||
|
imageURL: 'https://img.yzcdn.cn/public_files/2017/10/24/2f9a36046449dafb8608e99990b3c205.jpeg',
|
||||||
|
imageTag:'比加入时降5元',
|
||||||
|
}, {
|
||||||
|
id: '2',
|
||||||
|
title: '陕西蜜梨',
|
||||||
|
desc: '约600g',
|
||||||
|
price: '690.00',
|
||||||
|
quantity: 1,
|
||||||
|
imageURL: 'https://img.yzcdn.cn/public_files/2017/10/24/f6aabd6ac5521195e01e8e89ee9fc63f.jpeg',
|
||||||
|
gift: [
|
||||||
|
{
|
||||||
|
title: "星巴克(Starbucks)星冰乐小熊吊饰星巴克(Starbucks)星冰乐小熊吊饰",
|
||||||
|
quantity: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "星巴克(Starbucks)星冰乐小熊吊饰星巴克(Starbucks)星冰乐小熊吊饰",
|
||||||
|
quantity: 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}, {
|
||||||
|
id: '3',
|
||||||
|
title: '美国伽力果',
|
||||||
|
desc: '约680g/3个',
|
||||||
|
price: '2680.00',
|
||||||
|
quantity: 1,
|
||||||
|
imageURL: 'https://img.yzcdn.cn/public_files/2017/10/24/320454216bbe9e25c7651e1fa51b31fd.jpeg'
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
submitBarText() {
|
||||||
|
const count = this.checkedGoods.length;
|
||||||
|
return '结算' + (count ? `(${count})` : '');
|
||||||
|
},
|
||||||
|
totalPrice() {
|
||||||
|
return this.goods.reduce((total, item) => total + (this.checkedGoods.indexOf(item.id) !== -1 ? parseFloat(item.price): 0), 0);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onSubmit() {
|
||||||
|
|
||||||
|
this.$router.push('/order')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.card-goods {
|
||||||
|
font-size: 12px;
|
||||||
|
&__item {
|
||||||
|
position: relative;
|
||||||
|
.van-checkbox{
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
top: 40px;
|
||||||
|
left: 5px;
|
||||||
|
z-index: 1;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
.additional{
|
||||||
|
width: 100%;
|
||||||
|
padding-left: 15px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.head{
|
||||||
|
padding-left: 5px;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
.card{
|
||||||
|
background: #f7f7f7;
|
||||||
|
.van-submit-bar__bar {
|
||||||
|
border-top: 1px solid #f7f7f7;
|
||||||
|
.van-checkbox{
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.promotion{
|
||||||
|
.van-tag {
|
||||||
|
line-height: 12px;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
.van-cell__title{
|
||||||
|
|
||||||
|
flex: 4;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.promotion-group{
|
||||||
|
margin-top: 10px;
|
||||||
|
box-shadow: 5px 5px 5px #e5e5e5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,180 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<van-search
|
||||||
|
v-model="value"
|
||||||
|
placeholder="请输入搜索关键词"
|
||||||
|
show-action
|
||||||
|
@search="onSearch"
|
||||||
|
>
|
||||||
|
<div slot="action" @click="onSearch">搜索</div>
|
||||||
|
</van-search>
|
||||||
|
<van-badge-group :active-key="activeKey" class="tab" :style="'height:'+fullHeight+'px'">
|
||||||
|
<van-badge title="热门推荐" @click="onClick" />
|
||||||
|
<van-badge title="手机数码" @click="onClick" />
|
||||||
|
<van-badge title="家用电器" @click="onClick" />
|
||||||
|
<van-badge title="电脑办公" @click="onClick" />
|
||||||
|
<van-badge title="美妆护肤" @click="onClick" />
|
||||||
|
<van-badge title="个护清洁" @click="onClick" />
|
||||||
|
<van-badge title="汽车用品" @click="onClick" />
|
||||||
|
<van-badge title="男装" @click="onClick" />
|
||||||
|
<van-badge title="男鞋" @click="onClick" />
|
||||||
|
<van-badge title="女装" @click="onClick" />
|
||||||
|
<van-badge title="女鞋" @click="onClick" />
|
||||||
|
<van-badge title="母婴童装" @click="onClick" />
|
||||||
|
<van-badge title="图书音像" @click="onClick" />
|
||||||
|
<van-badge title="运动户外" @click="onClick" />
|
||||||
|
<van-badge title="食品生鲜" @click="onClick" />
|
||||||
|
</van-badge-group>
|
||||||
|
<div class="content" :style="'width:'+fullWidth+'px;height:'+(fullHeight-7)+'px'" >
|
||||||
|
<img src="https://img11.360buyimg.com/mcoss/jfs/t1/1072/23/3672/95463/5b9a0813E175891fa/e38fc2f7c2ddfec2.jpg" />
|
||||||
|
<div class="category-div">
|
||||||
|
<h4>常用分类</h4>
|
||||||
|
<ul >
|
||||||
|
<li>
|
||||||
|
<router-link to="/search?keyword=xxxx">
|
||||||
|
<img src="//img12.360buyimg.com/focus/jfs/t11824/150/2263801190/3392/8e69e1b3/5a167b8cNdcf71ae5.jpg">
|
||||||
|
<span>蓝牙耳机</span>
|
||||||
|
</router-link>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a >
|
||||||
|
<img src="//img20.360buyimg.com/focus/jfs/t13759/194/897734755/2493/1305d4c4/5a1692ebN8ae73077.jpg">
|
||||||
|
<span>iPhone</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<div style="clear:both"></div>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="category-div">
|
||||||
|
<h4>热门分类</h4>
|
||||||
|
<ul>
|
||||||
|
<li><a ><img src="//img11.360buyimg.com/focus/s140x140_jfs/t21388/146/237407622/26923/221da1b3/5b054fedN2ba90518.jpg"><span>手机</span></a></li>
|
||||||
|
<li><a ><img src="//img20.360buyimg.com/focus/s140x140_jfs/t20128/208/216721929/9242/472993da/5b05522dNa2aae1bb.png"><span>耳机</span></a></li>
|
||||||
|
<li><a ><img src="//img30.360buyimg.com/focus/s140x140_jfs/t21655/83/2186874549/15932/c273d29b/5b48802aN13fe73de.png"><span>剃须刀</span></a></li>
|
||||||
|
<li><a ><img src="//img20.360buyimg.com/focus/s140x140_jfs/t21715/149/246679831/16257/ddbf2036/5b0565a7N8dbc0017.png"><span>路由器</span></a></li>
|
||||||
|
<li><a ><img src="//img14.360buyimg.com/focus/s140x140_jfs/t1/4478/16/633/36008/5b923503E39b9dfa9/13b099f187576d8c.png"><span>月饼</span></a></li>
|
||||||
|
<li><a ><img src="//img10.360buyimg.com/focus/s140x140_jfs/t1/1410/32/643/38009/5b9236b2Eb02fbf02/1e7de6987578dcdd.jpg" ><span>牛奶</span></a></li>
|
||||||
|
<li><a ><img src="//img20.360buyimg.com/focus/s140x140_jfs/t1/4674/14/665/25245/5b9236bbE088d5efb/6c7c2f9857736c65.jpg"><span>男士内裤</span></a></li>
|
||||||
|
<li><a ><img src="//img20.360buyimg.com/focus/s140x140_jfs/t1/1710/26/666/26147/5b9236c3E5fd1cd42/86c6bca8f4fe1efa.png"><span>小米8</span></a></li>
|
||||||
|
<li><a ><img src="//img11.360buyimg.com/focus/s140x140_jfs/t1/3653/6/655/42593/5b9236caEfef6235b/9e118f12705f52bb.png"><span>大闸蟹</span></a></li>
|
||||||
|
<li><a ><img src="//img20.360buyimg.com/focus/s140x140_jfs/t23881/349/2204372862/9923/4c62864a/5b7693eeNf6883734.png"><span>三只松鼠</span></a></li>
|
||||||
|
<li><a ><img src="//img20.360buyimg.com/focus/s140x140_jfs/t24253/294/2182777138/4059/429945c9/5b76990bNde226fbc.png"><span>充电宝</span></a></li>
|
||||||
|
<li><a ><img src="//img30.360buyimg.com/focus/s140x140_jfs/t22051/318/235303191/9297/c5ea2761/5b055000N410a7553.png"><span>空调</span></a></li>
|
||||||
|
<li><a ><img src="//img10.360buyimg.com/focus/s140x140_jfs/t19960/243/653029866/38879/91bb398b/5b055555N9245f8aa.jpg"><span>电饭煲</span></a></li>
|
||||||
|
<li><a ><img src="//img12.360buyimg.com/focus/s140x140_jfs/t1/345/33/944/5582/5b9236d2E62d8da2e/99f72d51b8f195ed.jpg"><span>电话手表</span></a></li>
|
||||||
|
<li><a ><img src="//img30.360buyimg.com/focus/s140x140_jfs/t1/1446/14/631/8500/5b9237e5E0d1f9e16/b1a627b92323b5ed.png"><span>华为</span></a></li>
|
||||||
|
<div style="clear:both">
|
||||||
|
</div>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<navigate />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { Search } from "vant";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "userindex",
|
||||||
|
components: {
|
||||||
|
[Search.name]: Search
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
value: "",
|
||||||
|
activeKey: 0,
|
||||||
|
fullHeight: document.documentElement.clientHeight - 93,
|
||||||
|
fullWidth: document.documentElement.clientWidth - 99
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onSearch() {
|
||||||
|
console.log(this.value);
|
||||||
|
},
|
||||||
|
onClick(key) {
|
||||||
|
this.activeKey = key;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.tab {
|
||||||
|
float: left;
|
||||||
|
overflow-y: scroll;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
min-height: 100%;
|
||||||
|
.van-badge {
|
||||||
|
padding: 15px 12px 15px 9px;
|
||||||
|
}
|
||||||
|
.van-badge:not(:last-child)::after {
|
||||||
|
height: 199%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.content {
|
||||||
|
float: left;
|
||||||
|
overflow-y: scroll;
|
||||||
|
-webkit-overflow-scrolling: touch;
|
||||||
|
min-height: 100%;
|
||||||
|
margin: 7px 7px 0;
|
||||||
|
font-size: 12px;
|
||||||
|
img {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.category-div {
|
||||||
|
margin: 19px 0px 0;
|
||||||
|
h4 {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
ul{
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
li {
|
||||||
|
width: 32.8%;
|
||||||
|
float: left;
|
||||||
|
text-align: center;
|
||||||
|
img {
|
||||||
|
width: 60px;
|
||||||
|
height: 60px;
|
||||||
|
}
|
||||||
|
span{
|
||||||
|
font-size: 12px;
|
||||||
|
height: 36px;
|
||||||
|
color: #686868;
|
||||||
|
width: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
display: box;
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -moz-box;
|
||||||
|
display: -ms-box;
|
||||||
|
display: -o-box;
|
||||||
|
line-clamp: 2;
|
||||||
|
-webkit-line-clamp: 2;
|
||||||
|
-moz-line-clamp: 2;
|
||||||
|
-ms-line-clamp: 2;
|
||||||
|
-o-line-clamp: 2;
|
||||||
|
box-orient: vertical;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
-ms-box-orient: vertical;
|
||||||
|
-o-box-orient: vertical;
|
||||||
|
word-break: break-all;
|
||||||
|
box-align: center;
|
||||||
|
-webkit-box-align: center;
|
||||||
|
-moz-box-align: center;
|
||||||
|
-ms-box-align: center;
|
||||||
|
-o-box-align: center;
|
||||||
|
box-pack: center;
|
||||||
|
-webkit-box-pack: center;
|
||||||
|
-moz-box-pack: center;
|
||||||
|
-ms-box-pack: center;
|
||||||
|
-o-box-pack: center;
|
||||||
|
z-index: 2;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,23 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<page/>
|
||||||
|
<navigate />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import navigate from '../components/footer/navigate.vue'
|
||||||
|
import page from './page/page.vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components:{
|
||||||
|
page,
|
||||||
|
navigate
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,73 @@
|
||||||
|
<template>
|
||||||
|
<div :style="'background-color:'+((page.BackgroundColor==undefined||page.BackgroundColor=='')?'#fff':page.BackgroundColor)">
|
||||||
|
<div :style="'height:'+topheight+'px'" ></div>
|
||||||
|
<div v-for="(item,index) in page.Sections" :key="index">
|
||||||
|
<imageAd v-if="item.Code=='ImageAd'" :data="item.ParameterDictionary"></imageAd>
|
||||||
|
|
||||||
|
<imageText v-if="item.Code=='ImageText'" :data="item.ParameterDictionary"></imageText>
|
||||||
|
|
||||||
|
<pageLine v-if="item.Code=='Line'" :data="item.ParameterDictionary" ></pageLine>
|
||||||
|
|
||||||
|
<whitespace v-if="item.Code=='Line'" :data="item.ParameterDictionary" />
|
||||||
|
|
||||||
|
<pageText v-if="item.Code=='Text'" :data="item.ParameterDictionary" ></pageText>
|
||||||
|
|
||||||
|
<notice v-if="item.Code=='Notice'" :data="item.ParameterDictionary" ></notice>
|
||||||
|
|
||||||
|
<search v-if="item.Code=='Search'" :data="item.ParameterDictionary" v-on:settopheight="settopheight($event)" ></search>
|
||||||
|
|
||||||
|
<pageTitle v-if="item.Code=='Title'" :data="item.ParameterDictionary" ></pageTitle>
|
||||||
|
|
||||||
|
<cube v-if="item.Code=='Cube'" :data="item.ParameterDictionary" ></cube>
|
||||||
|
|
||||||
|
<product v-if="item.Code=='Product'" :data="item" ></product>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import "../../assets/style/index.css";
|
||||||
|
import whitespace from "../../components/page/whitespace.vue";
|
||||||
|
import pageLine from "../../components/page/line.vue";
|
||||||
|
import pageText from "../../components/page/text.vue";
|
||||||
|
import notice from "../../components/page/notice.vue";
|
||||||
|
import search from "../../components/page/search.vue";
|
||||||
|
import pageTitle from "../../components/page/title.vue";
|
||||||
|
import cube from "../../components/page/cube.vue";
|
||||||
|
import imageAd from "../../components/page/imageAd.vue";
|
||||||
|
import imageText from "../../components/page/imageText.vue";
|
||||||
|
import product from "../../components/page/product.vue";
|
||||||
|
import { GetPage } from "../../api/page.js";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name:"page",
|
||||||
|
components:{
|
||||||
|
whitespace,
|
||||||
|
pageLine,
|
||||||
|
pageText,
|
||||||
|
notice,
|
||||||
|
search,
|
||||||
|
pageTitle,
|
||||||
|
cube,
|
||||||
|
[imageAd.name]:imageAd,
|
||||||
|
imageText,
|
||||||
|
product
|
||||||
|
},
|
||||||
|
data:function(){
|
||||||
|
return{
|
||||||
|
topheight:0,
|
||||||
|
page:{},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created:function(){
|
||||||
|
GetPage().then(response=>{
|
||||||
|
this.page=response;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
settopheight:function(value){
|
||||||
|
this.topheight=value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
|
@ -0,0 +1,326 @@
|
||||||
|
<template>
|
||||||
|
<div class="goods">
|
||||||
|
<headerNav title="商品详情"/>
|
||||||
|
<van-swipe class="goods-swipe" :autoplay="3000">
|
||||||
|
<van-swipe-item v-for="thumb in goods.thumb" :key="thumb">
|
||||||
|
<img :src="thumb" >
|
||||||
|
</van-swipe-item>
|
||||||
|
</van-swipe>
|
||||||
|
|
||||||
|
<van-cell-group>
|
||||||
|
<van-cell>
|
||||||
|
<span class="goods-price">{{ formatPrice(goods.price) }}</span>
|
||||||
|
<span class="goods-market-price">{{ formatPrice(goods.market_price) }}</span>
|
||||||
|
<div class="goods-title">{{ goods.title }}</div>
|
||||||
|
<div class="goods-subtit">{{goods.subtitle}}</div>
|
||||||
|
</van-cell>
|
||||||
|
|
||||||
|
<van-cell @click="onClickShowTag" class="goods-tag" >
|
||||||
|
<template slot="title" style="font-size:10px;">
|
||||||
|
<img src="https://haitao.nos.netease.com/ba8a4c2fdaa54f82a45261293c116af61419663676663i46n3jlh10028.png"/>
|
||||||
|
<span >挪威品牌</span>
|
||||||
|
<img src="https://haitao.nosdn2.127.net/13bd59e6e29a4f06b278c586629e690d.png" />
|
||||||
|
<span >跨境商品</span>
|
||||||
|
<van-icon name="passed" color="red" />
|
||||||
|
<span >次日达</span>
|
||||||
|
<van-icon name="passed" color="red" />
|
||||||
|
<span >自提</span>
|
||||||
|
<van-icon name="passed" color="red" />
|
||||||
|
<span >闪电退款</span>
|
||||||
|
<van-icon name="passed" color="red" />
|
||||||
|
<span >前海保税仓</span>
|
||||||
|
<van-icon name="passed" color="red" />
|
||||||
|
<span >七天无理由退货(拆封后不支持)</span>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
</van-cell-group>
|
||||||
|
|
||||||
|
<van-cell-group class="goods-cell-group">
|
||||||
|
<van-cell is-link @click="showPromotion" >
|
||||||
|
<template slot="title">
|
||||||
|
<span style="margin-right: 10px;">领券</span>
|
||||||
|
<van-tag type="danger" mark style="margin-right: 5px;">满180减30</van-tag>
|
||||||
|
<van-tag type="danger" mark style="margin-right: 5px;">满300减100</van-tag>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
|
||||||
|
<van-cell is-link @click="showPromotion" >
|
||||||
|
<template slot="title">
|
||||||
|
<span style="margin-right: 10px;">促销</span>
|
||||||
|
<van-tag type="danger" style="margin-right: 5px;">多买优惠</van-tag>
|
||||||
|
<van-tag type="danger" style="margin-right: 5px;">满减</van-tag>
|
||||||
|
<van-tag type="danger" style="margin-right: 5px;">限购</van-tag>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
</van-cell-group>
|
||||||
|
|
||||||
|
<van-cell-group class="goods-cell-group">
|
||||||
|
<van-cell is-link @click="showSku" >
|
||||||
|
<template slot="title">
|
||||||
|
<span style="margin-right: 10px;">已选</span>
|
||||||
|
<span >10件装</span>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
|
||||||
|
</van-cell-group>
|
||||||
|
|
||||||
|
<div class="goods-info">
|
||||||
|
<p class="goods-info-title" >图文详情</p>
|
||||||
|
<div v-html="goods.info"></div>
|
||||||
|
</div>
|
||||||
|
<van-goods-action>
|
||||||
|
|
||||||
|
<van-goods-action-mini-btn icon="like-o" @click="sorry">
|
||||||
|
收藏
|
||||||
|
</van-goods-action-mini-btn>
|
||||||
|
<van-goods-action-mini-btn icon="cart" @click="onClickCart">
|
||||||
|
购物车
|
||||||
|
</van-goods-action-mini-btn>
|
||||||
|
<van-goods-action-big-btn @click="showSku">
|
||||||
|
加入购物车
|
||||||
|
</van-goods-action-big-btn>
|
||||||
|
<van-goods-action-big-btn primary @click="showSku">
|
||||||
|
立即购买
|
||||||
|
</van-goods-action-big-btn>
|
||||||
|
</van-goods-action>
|
||||||
|
<van-actionsheet v-model="show" title="促销" style="font-size:14px;">
|
||||||
|
|
||||||
|
<van-cell is-link @click="sorry" >
|
||||||
|
<template slot="title">
|
||||||
|
<van-tag type="danger">多买优惠</van-tag>
|
||||||
|
<span> 满2件,总价打9折</span>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
<van-cell is-link @click="sorry" >
|
||||||
|
<template slot="title">
|
||||||
|
<van-tag type="danger">满减</van-tag>
|
||||||
|
<span> 满100元减50元</span>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
<van-cell is-link @click="sorry" >
|
||||||
|
<template slot="title">
|
||||||
|
<van-tag type="danger">限购</van-tag>
|
||||||
|
<span> 购买不超过5件时享受单件价¥8.00,超出数量以结算价为准</span>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
</van-actionsheet>
|
||||||
|
|
||||||
|
<van-actionsheet v-model="showTag" title="服务说明" style="font-size:14px;">
|
||||||
|
|
||||||
|
<van-cell>
|
||||||
|
<template slot="title">
|
||||||
|
<van-icon name="passed" color="red" style="margin-right: 10px;" />
|
||||||
|
<span >次日达</span>
|
||||||
|
<div style="margin-left: 24px;font-size:10px;color:#7d7d7d;">指定时间前下单,次日送达</div>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
<van-cell>
|
||||||
|
<template slot="title">
|
||||||
|
<van-icon name="passed" color="red" style="margin-right: 10px;" />
|
||||||
|
<span >自提</span>
|
||||||
|
<div style="margin-left: 24px;font-size:10px;color:#7d7d7d;">我们提供多种自提服务,包括自提点、自助提货柜、移动自提车等服务</div>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
<van-cell>
|
||||||
|
<template slot="title">
|
||||||
|
<van-icon name="passed" color="red" style="margin-right: 10px;" />
|
||||||
|
<span >闪电退款</span>
|
||||||
|
<div style="margin-left: 24px;font-size:10px;color:#7d7d7d;">签收7天内退货的,提供先退款后退货服务。</div>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
<van-cell>
|
||||||
|
<template slot="title">
|
||||||
|
<van-icon name="passed" color="red" style="margin-right: 10px;" />
|
||||||
|
<span >七天无理由退货(拆封后不支持)</span>
|
||||||
|
<div style="margin-left: 24px;font-size:10px;color:#7d7d7d;">七天无理由退货(拆封后不支持)</div>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
<van-cell>
|
||||||
|
<template slot="title">
|
||||||
|
<van-icon name="passed" color="red" style="margin-right: 10px;" />
|
||||||
|
<span >前海保税仓</span>
|
||||||
|
<div style="margin-left: 24px;font-size:10px;color:#7d7d7d;">本商品由前海保税仓发货</div>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
</van-actionsheet>
|
||||||
|
<van-sku
|
||||||
|
v-model="showBase"
|
||||||
|
:sku="skuData.sku"
|
||||||
|
:goods="skuData.goods_info"
|
||||||
|
:goods-id="skuData.goods_id"
|
||||||
|
:hide-stock="skuData.sku.hide_stock"
|
||||||
|
:quota="skuData.quota"
|
||||||
|
:quota-used="skuData.quota_used"
|
||||||
|
reset-stepper-on-hide
|
||||||
|
reset-selected-sku-on-hide
|
||||||
|
disable-stepper-input
|
||||||
|
:close-on-click-overlay="closeOnClickOverlay"
|
||||||
|
:message-config="messageConfig"
|
||||||
|
:custom-sku-validator="customSkuValidator"
|
||||||
|
@buy-clicked="onBuyClicked"
|
||||||
|
@add-cart="onAddCartClicked"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import skuData from '../../data/sku';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
this.skuData = skuData;
|
||||||
|
return {
|
||||||
|
show:false,
|
||||||
|
showTag:false,
|
||||||
|
goods: {
|
||||||
|
title: '【每日一粒益智又长高】 Lifeline Care 儿童果冻鱼油DHA维生素D3聪明长高 软糖 30粒 2件装',
|
||||||
|
subtitle:'【品牌直采】Q弹美味,无腥味果冻鱼油,每粒含足量鱼油DHA,帮助视网膜和大脑健康发育,让你的宝宝明眼又聪明,同时补充400国际单位维生素D3,强壮骨骼和牙齿。特含DPA,让宝宝免疫力更强,没病来扰。',
|
||||||
|
price: 2680,
|
||||||
|
market_price:9999,
|
||||||
|
express: '免运费',
|
||||||
|
remain: 19,
|
||||||
|
thumb: [
|
||||||
|
'https://img.yzcdn.cn/public_files/2017/10/24/e5a5a02309a41f9f5def56684808d9ae.jpeg',
|
||||||
|
'https://img.yzcdn.cn/public_files/2017/10/24/1791ba14088f9c2be8c610d0a6cc0f93.jpeg'
|
||||||
|
],
|
||||||
|
info:'<p style="text-align:center;"><img src="https://haitao.nosdn2.127.net/ac19460151ee4d95a6657202bcfc653c1531470912089jjjq8ml410763.jpg" ></p><p style="text-align:center;"><img src="https://haitao.nos.netease.com/2a91cfad22404e5498d347672b1440301531470912182jjjq8mnq10764.jpg" ></p><p style="text-align:center;"><img src="https://haitao.nos.netease.com/caddd5a213de4c1cb1347c267e8275731531470912412jjjq8mu410765.jpg" ></p>',
|
||||||
|
},
|
||||||
|
showBase: false,
|
||||||
|
showCustom: false,
|
||||||
|
showStepper: false,
|
||||||
|
closeOnClickOverlay: true,
|
||||||
|
initialSku: {
|
||||||
|
s1: '30349',
|
||||||
|
s2: '1193'
|
||||||
|
},
|
||||||
|
customSkuValidator: (component) => {
|
||||||
|
return '请选择xxx';
|
||||||
|
},
|
||||||
|
customStepperConfig: {
|
||||||
|
quotaText: '单次限购100件',
|
||||||
|
stockFormatter: (stock) => `剩余${stock}间`,
|
||||||
|
handleOverLimit: (data) => {
|
||||||
|
const { action, limitType, quota } = data;
|
||||||
|
if (action === 'minus') {
|
||||||
|
this.$toast('至少选择一件商品');
|
||||||
|
} else if (action === 'plus') {
|
||||||
|
if (limitType === LIMIT_TYPE.QUOTA_LIMIT) {
|
||||||
|
this.$toast(`限购${quota}件`);
|
||||||
|
} else {
|
||||||
|
this.$toast('库存不够了~~');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
messageConfig: {
|
||||||
|
uploadImg: (file, img) => {
|
||||||
|
return new Promise(resolve => {
|
||||||
|
setTimeout(() => resolve(img), 1000);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
uploadMaxSize: 3
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
formatPrice(data) {
|
||||||
|
return '¥' + (data / 100).toFixed(2);
|
||||||
|
},
|
||||||
|
onClickCart() {
|
||||||
|
this.$router.push('/cart');
|
||||||
|
},
|
||||||
|
sorry() {
|
||||||
|
Toast('暂无后续逻辑~');
|
||||||
|
},
|
||||||
|
showPromotion() {
|
||||||
|
this.show=true;
|
||||||
|
},
|
||||||
|
showSku(){
|
||||||
|
this.showBase=true;
|
||||||
|
},
|
||||||
|
onClickShowTag(){
|
||||||
|
this.showTag=true;
|
||||||
|
},
|
||||||
|
onBuyClicked(data) {
|
||||||
|
this.$toast(JSON.stringify(data));
|
||||||
|
},
|
||||||
|
onAddCartClicked(data) {
|
||||||
|
this.$toast(JSON.stringify(data));
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.goods {
|
||||||
|
padding-bottom: 50px;
|
||||||
|
&-swipe {
|
||||||
|
img {
|
||||||
|
width: 7.5rem;
|
||||||
|
height: 7.5rem;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&-tag{
|
||||||
|
font-size: 12px;
|
||||||
|
border-top: 1px solid #e5e5e5;
|
||||||
|
span{
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
i{
|
||||||
|
color: red;
|
||||||
|
margin-right: 3px;
|
||||||
|
}
|
||||||
|
img{
|
||||||
|
width: 12px;
|
||||||
|
margin-right: 3px;
|
||||||
|
margin-top: 6px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&-title {
|
||||||
|
line-height: 18px;
|
||||||
|
padding-top: 10px;
|
||||||
|
margin-bottom: 6px;
|
||||||
|
font-size: 14px;
|
||||||
|
color: #333;
|
||||||
|
font-weight: 700;
|
||||||
|
border-top: 1px solid #f0f0f0;
|
||||||
|
}
|
||||||
|
&-subtit{
|
||||||
|
font-size: 13px;
|
||||||
|
color: #333;
|
||||||
|
line-height: 21px;
|
||||||
|
}
|
||||||
|
&-price {
|
||||||
|
color: #f44;font-size: 20px;
|
||||||
|
}
|
||||||
|
&-market-price {
|
||||||
|
text-decoration: line-through;
|
||||||
|
margin-left: 8px;
|
||||||
|
font-size: 13px;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
&-cell-group {
|
||||||
|
margin: 15px 0;
|
||||||
|
.van-cell__value {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&-info-title{
|
||||||
|
height: 44px;line-height: 44px;text-align: center;font-size: 14px;font-weight: 700;margin: 10px;border-top: 1px solid #e5e5e5;
|
||||||
|
}
|
||||||
|
&-info p{
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
margin-block-end: 0;
|
||||||
|
margin-block-start: 0;
|
||||||
|
display: grid;
|
||||||
|
}
|
||||||
|
&-info img{
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,404 @@
|
||||||
|
<template>
|
||||||
|
<div class="product-list">
|
||||||
|
<searchtop/>
|
||||||
|
<div class="filterbar">
|
||||||
|
<ul :class="filtersort?'show':''">
|
||||||
|
<li :class="filterindex==0?'selected':''" v-on:click="onFilterBar(0)"><span>{{filterindex==11?'价格最低':(filterindex==12?'价格最高':'综合')}}</span><van-icon name="arrow" class="down" /></li>
|
||||||
|
<li :class="filterindex==1?'selected':''" v-on:click="onFilterBar(1)"><span>销量</span></li>
|
||||||
|
<li :class="filterindex==2?'selected':''" v-on:click="onFilterBar(2)"><span>上新</span></li>
|
||||||
|
<li :class="filterindex==3?'selected':''" v-on:click="onFilterBar(3)"><span>筛选</span></li>
|
||||||
|
</ul>
|
||||||
|
<div :class="'item_options '+(filtersort?'show':'')">
|
||||||
|
<ul>
|
||||||
|
<li :class="filterindex==10?'selected':''" v-on:click="onFilterBar(10)">综合</li>
|
||||||
|
<li :class="filterindex==11?'selected':''" v-on:click="onFilterBar(11)">价格最低</li>
|
||||||
|
<li :class="filterindex==12?'selected':''" v-on:click="onFilterBar(12)">价格最高</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<van-popup v-model="filtershow" position="right" class="filterlayer" >
|
||||||
|
<div class="filterInner" style="overflow-y: scroll;max-height: 100%;">
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<van-cell title="清洁类型" is-link arrow-direction="down" />
|
||||||
|
</li>
|
||||||
|
<div style="clear: both;"></div>
|
||||||
|
<div class="tags_selection">
|
||||||
|
<div class="option">
|
||||||
|
<a href="javascript:void 0;">牙龈护理111</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">抛光</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">清洁</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">正畸专用</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">敏感</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">亮白</a>
|
||||||
|
</div>
|
||||||
|
<div style="clear: both;"></div>
|
||||||
|
</div>
|
||||||
|
</ul>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<van-cell title="清洁类型" is-link arrow-direction="down" />
|
||||||
|
</li>
|
||||||
|
<div style="clear: both;"></div>
|
||||||
|
<div class="tags_selection">
|
||||||
|
<div class="option">
|
||||||
|
<a href="javascript:void 0;">牙龈护理111</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">抛光</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">清洁</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">正畸专用</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">敏感</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">亮白</a>
|
||||||
|
</div>
|
||||||
|
<div style="clear: both;"></div>
|
||||||
|
</div>
|
||||||
|
</ul>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<van-cell title="清洁类型" is-link arrow-direction="down" />
|
||||||
|
</li>
|
||||||
|
<div style="clear: both;"></div>
|
||||||
|
<div class="tags_selection">
|
||||||
|
<div class="option">
|
||||||
|
<a href="javascript:void 0;">牙龈护理111</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">抛光</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">清洁</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">正畸专用</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">敏感</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">亮白</a>
|
||||||
|
</div>
|
||||||
|
<div style="clear: both;"></div>
|
||||||
|
</div>
|
||||||
|
</ul>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<van-cell title="清洁类型" is-link arrow-direction="down" />
|
||||||
|
</li>
|
||||||
|
<div style="clear: both;"></div>
|
||||||
|
<div class="tags_selection">
|
||||||
|
<div class="option">
|
||||||
|
<a href="javascript:void 0;">牙龈护理111</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">抛光</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">清洁</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">正畸专用</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">敏感</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">亮白</a>
|
||||||
|
</div>
|
||||||
|
<div style="clear: both;"></div>
|
||||||
|
</div>
|
||||||
|
</ul>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
<van-cell title="清洁类型" is-link arrow-direction="down" />
|
||||||
|
</li>
|
||||||
|
<div style="clear: both;"></div>
|
||||||
|
<div class="tags_selection">
|
||||||
|
<div class="option">
|
||||||
|
<a href="javascript:void 0;">牙龈护理111</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">抛光</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">清洁</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">正畸专用</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">敏感</a>
|
||||||
|
</div>
|
||||||
|
<div class="option ">
|
||||||
|
<a href="javascript:void 0;">亮白</a>
|
||||||
|
</div>
|
||||||
|
<div style="clear: both;"></div>
|
||||||
|
</div>
|
||||||
|
</ul>
|
||||||
|
<div style="clear: both;"></div>
|
||||||
|
<van-button size="large" style="height: 40px;margin-bottom: 15px;line-height: 40px;">清楚选项</van-button>
|
||||||
|
<div style="height:50px;"></div>
|
||||||
|
</div>
|
||||||
|
<div class="filterlayer_bottom_buttons">
|
||||||
|
<span class="filterlayer_bottom_button cancel">取消</span>
|
||||||
|
<span class="filterlayer_bottom_button confirm">确认</span>
|
||||||
|
</div>
|
||||||
|
</van-popup>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div v-for="(product,i) in products" :key="i">
|
||||||
|
<product-card :product='product' @click="showProduct(product)" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import searchtop from "../../components/search/searchtop";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
searchtop
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
value: "",
|
||||||
|
filterindex: 0,
|
||||||
|
filtersort: false,
|
||||||
|
filtershow: false,
|
||||||
|
|
||||||
|
products:[
|
||||||
|
{
|
||||||
|
id:1,
|
||||||
|
imageURL:'https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712',
|
||||||
|
title:'BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套',
|
||||||
|
price:'13.00',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id:1,
|
||||||
|
imageURL:'https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712',
|
||||||
|
title:'BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套',
|
||||||
|
price:'499.00',
|
||||||
|
tags:['满199减100','2件起购'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id:1,
|
||||||
|
imageURL:'https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712',
|
||||||
|
title:'BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套',
|
||||||
|
price:'499.00',
|
||||||
|
tags:['新品'],
|
||||||
|
imageTag:'仅剩1件',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id:1,
|
||||||
|
imageURL:'https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712',
|
||||||
|
title:'BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套',
|
||||||
|
price:'499.00',
|
||||||
|
tags:['赠'],
|
||||||
|
imageTag:'预约',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id:1,
|
||||||
|
imageURL:'https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712',
|
||||||
|
title:'BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套',
|
||||||
|
price:'15.00',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id:1,
|
||||||
|
imageURL:'https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712',
|
||||||
|
title:'BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套',
|
||||||
|
price:'125.50',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onFilterBar(value) {
|
||||||
|
if (value == 0) {
|
||||||
|
this.filtersort = !this.filtersort;
|
||||||
|
} else if (value == 3) {
|
||||||
|
this.filtershow = !this.filtershow;
|
||||||
|
} else {
|
||||||
|
this.filtersort = false;
|
||||||
|
this.filterindex = value;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
showProduct(product){
|
||||||
|
this.$router.push('/product/'+product.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.product-list{
|
||||||
|
.additional .price{
|
||||||
|
position: absolute;
|
||||||
|
bottom: 6px;
|
||||||
|
height: 34px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.filterbar {
|
||||||
|
font-size: 14px;
|
||||||
|
position: relative;
|
||||||
|
ul {
|
||||||
|
width: 100%;
|
||||||
|
height: 40px;
|
||||||
|
}
|
||||||
|
li {
|
||||||
|
color: #999;
|
||||||
|
width: 25%;
|
||||||
|
float: left;
|
||||||
|
text-align: center;
|
||||||
|
height: 40px;
|
||||||
|
line-height: 40px;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
i {
|
||||||
|
font-size: 12px;
|
||||||
|
margin-left: 2px;
|
||||||
|
}
|
||||||
|
.down {
|
||||||
|
-webkit-transform: rotate(90deg);
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.selected {
|
||||||
|
color: #e93b3d;
|
||||||
|
}
|
||||||
|
.show {
|
||||||
|
.down {
|
||||||
|
-webkit-transform: rotate(-90deg);
|
||||||
|
transform: rotate(-90deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.item_options {
|
||||||
|
width: 100%;
|
||||||
|
position: absolute;
|
||||||
|
top: 41px;
|
||||||
|
background: #fff;
|
||||||
|
display: none;
|
||||||
|
z-index: 1;
|
||||||
|
li {
|
||||||
|
width: 100%;
|
||||||
|
text-align: left;
|
||||||
|
padding-left: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.item_options.show {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.filterlayer {
|
||||||
|
width: 85%;
|
||||||
|
height: 100%;
|
||||||
|
background-color: #f7f7f7;
|
||||||
|
&_bottom {
|
||||||
|
&_buttons {
|
||||||
|
display: -webkit-box;
|
||||||
|
display: -webkit-flex;
|
||||||
|
display: flex;
|
||||||
|
z-index: 10;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
|
||||||
|
.cancel {
|
||||||
|
color: #333;
|
||||||
|
background-color: #fff;
|
||||||
|
box-shadow: 0 -1px 2px 0 rgba(0, 0, 0, 0.07);
|
||||||
|
}
|
||||||
|
.confirm {
|
||||||
|
color: #fff;
|
||||||
|
background-color: #e93b3d;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&_button {
|
||||||
|
-webkit-box-flex: 1;
|
||||||
|
-webkit-flex: 1;
|
||||||
|
flex: 1;
|
||||||
|
font-size: 16px;
|
||||||
|
height: 49px;
|
||||||
|
line-height: 49px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ul {
|
||||||
|
height: auto;
|
||||||
|
background: #fff;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
li {
|
||||||
|
width: 100%;
|
||||||
|
text-align: left;
|
||||||
|
height: auto;
|
||||||
|
line-height: initial;
|
||||||
|
.van-cell{
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
.big {
|
||||||
|
height: 25px;
|
||||||
|
max-width: 250px;
|
||||||
|
overflow: hidden;
|
||||||
|
font-size: 16px;
|
||||||
|
color: #333;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.filterInner{
|
||||||
|
overflow-y: scroll;
|
||||||
|
max-height: 100%;
|
||||||
|
.van-button{
|
||||||
|
height: 40px;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
line-height: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.tags_selection {
|
||||||
|
font-size: 14px;
|
||||||
|
text-align: center;
|
||||||
|
background-color: #fff;
|
||||||
|
position: relative;
|
||||||
|
margin: 0;
|
||||||
|
padding: 10px 0 0 10px;
|
||||||
|
.option {
|
||||||
|
box-sizing: border-box;
|
||||||
|
float: left;
|
||||||
|
width: 33.33%;
|
||||||
|
padding-right: 10px;
|
||||||
|
height: 30px;
|
||||||
|
line-height: 30px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
a {
|
||||||
|
position: relative;
|
||||||
|
display: block;
|
||||||
|
padding: 0 5px;
|
||||||
|
color: #666;
|
||||||
|
background-color: #f7f7f7;
|
||||||
|
border-radius: 4px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
height: 30px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,184 @@
|
||||||
|
<template>
|
||||||
|
<div class="order">
|
||||||
|
<headerNav title="确认订单"/>
|
||||||
|
<van-cell
|
||||||
|
center
|
||||||
|
:border="false"
|
||||||
|
class="contact-card"
|
||||||
|
is-link
|
||||||
|
to="/user/address?id=2"
|
||||||
|
>
|
||||||
|
<template v-if="type === 'add'">
|
||||||
|
<strong>选择地址</strong>
|
||||||
|
</template>
|
||||||
|
<template v-else>
|
||||||
|
<strong>张三 138****6520</strong>
|
||||||
|
<div>广东省深圳市南山区科技园 </div>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
<div style="height:15px;"></div>
|
||||||
|
<div class="card" v-for="(product,i) in products" :key="i">
|
||||||
|
<product-card :product='product' />
|
||||||
|
</div>
|
||||||
|
<div style="height:15px;"></div>
|
||||||
|
<van-cell-group>
|
||||||
|
<van-field
|
||||||
|
label="留言"
|
||||||
|
type="textarea"
|
||||||
|
placeholder="请输入留言"
|
||||||
|
rows="1"
|
||||||
|
autosize
|
||||||
|
/>
|
||||||
|
</van-cell-group>
|
||||||
|
<div style="height:15px;"></div>
|
||||||
|
<van-cell-group class="total">
|
||||||
|
<van-cell title="优惠券" is-link value="抵扣¥5.00" />
|
||||||
|
</van-cell-group>
|
||||||
|
|
||||||
|
<div style="height:15px;"></div>
|
||||||
|
<van-cell-group class="total">
|
||||||
|
<van-cell title="商品总额" value="9.99" />
|
||||||
|
<van-cell title="运费" value="+ 0.00" />
|
||||||
|
<van-cell title="折扣" value="- 5.00" />
|
||||||
|
<van-cell title="实付金额" value="4.99" style="font-weight: 700;" />
|
||||||
|
</van-cell-group>
|
||||||
|
|
||||||
|
<div style="height:50px;"></div>
|
||||||
|
<van-submit-bar
|
||||||
|
:price="3050"
|
||||||
|
button-text="提交订单"
|
||||||
|
label='实付金额:'
|
||||||
|
@submit="onSubmit"
|
||||||
|
/>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
type: "add1",
|
||||||
|
products: [
|
||||||
|
{
|
||||||
|
imageURL:
|
||||||
|
"https://img10.360buyimg.com/mobilecms/s88x88_jfs/t17572/12/840082281/351445/e1828c58/5aab8dbbNedb77d88.jpg",
|
||||||
|
title: "良品铺子 肉肉聚汇猪肉脯 猪蹄卤 辣味小吃520g",
|
||||||
|
desc: "0.670kg/件,肉肉聚汇520g",
|
||||||
|
price: "59.80",
|
||||||
|
quantity: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
imageURL:
|
||||||
|
"https://img10.360buyimg.com/mobilecms/s88x88_jfs/t22720/128/1410375403/319576/8dbd859f/5b5e69b3Nf4f0e9e7.jpg",
|
||||||
|
title: "元朗 鸡蛋卷 饼干糕点 中秋礼盒 广东特产680g",
|
||||||
|
desc: "1.320kg/件",
|
||||||
|
price: "65.80",
|
||||||
|
quantity: 1,
|
||||||
|
gift: [
|
||||||
|
{
|
||||||
|
title: "星巴克(Starbucks)星冰乐小熊吊饰星巴克(Starbucks)星冰乐小熊吊饰",
|
||||||
|
quantity: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: "星巴克(Starbucks)星冰乐小熊吊饰星巴克(Starbucks)星冰乐小熊吊饰",
|
||||||
|
quantity: 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
imageURL:
|
||||||
|
"https://img10.360buyimg.com/mobilecms/s88x88_jfs/t17572/12/840082281/351445/e1828c58/5aab8dbbNedb77d88.jpg",
|
||||||
|
title: "良品铺子 肉肉聚汇猪肉脯 猪蹄卤 辣味小吃520g",
|
||||||
|
desc: "0.670kg/件,肉肉聚汇520g",
|
||||||
|
price: "59.80",
|
||||||
|
quantity: 2
|
||||||
|
},
|
||||||
|
]
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onSubmit() {
|
||||||
|
this.$toast("点击按钮");
|
||||||
|
},
|
||||||
|
},
|
||||||
|
activated(){
|
||||||
|
//根据key名获取传递回来的参数,data就是map
|
||||||
|
this.$on('selectAddress', function(data){
|
||||||
|
//赋值给首页的附近医院数据模型
|
||||||
|
console.log(1);
|
||||||
|
}.bind(this));
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.order {
|
||||||
|
font-size: 14px;
|
||||||
|
background: #f7f7f7;
|
||||||
|
.contact-card::before {
|
||||||
|
content: "";
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
height: 2px;
|
||||||
|
position: absolute;
|
||||||
|
background: -webkit-repeating-linear-gradient(
|
||||||
|
135deg,
|
||||||
|
#ff6c6c 0,
|
||||||
|
#ff6c6c 20%,
|
||||||
|
transparent 0,
|
||||||
|
transparent 25%,
|
||||||
|
#3283fa 0,
|
||||||
|
#3283fa 45%,
|
||||||
|
transparent 0,
|
||||||
|
transparent 50%
|
||||||
|
);
|
||||||
|
background: repeating-linear-gradient(
|
||||||
|
-45deg,
|
||||||
|
#ff6c6c 0,
|
||||||
|
#ff6c6c 20%,
|
||||||
|
transparent 0,
|
||||||
|
transparent 25%,
|
||||||
|
#3283fa 0,
|
||||||
|
#3283fa 45%,
|
||||||
|
transparent 0,
|
||||||
|
transparent 50%
|
||||||
|
);
|
||||||
|
background-size: 80px;
|
||||||
|
}
|
||||||
|
.total {
|
||||||
|
.van-cell__value {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.van-submit-bar__bar {
|
||||||
|
border-top: 1px solid #f7f7f7;
|
||||||
|
}
|
||||||
|
.additional {
|
||||||
|
.van-cell {
|
||||||
|
padding: 0 15px;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
.van-cell__title {
|
||||||
|
flex: 11;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.van-tag {
|
||||||
|
line-height: 12px;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.price {
|
||||||
|
color: #e93b3d;
|
||||||
|
font-size: 10px;
|
||||||
|
span {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,64 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<headerNav title="修改地址"/>
|
||||||
|
<van-address-edit
|
||||||
|
:area-list="areaList"
|
||||||
|
:showDelete="showDelete"
|
||||||
|
show-set-default
|
||||||
|
@save="onSave"
|
||||||
|
@delete="onDelete"
|
||||||
|
:addressInfo="info"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import areaList from '../../../data/area';
|
||||||
|
import { GetAddressById,SaveAddress,DelAddress } from "../../../api/user.js";
|
||||||
|
|
||||||
|
import { AddressEdit } from 'vant';
|
||||||
|
export default {
|
||||||
|
components:{
|
||||||
|
[AddressEdit.name]:AddressEdit,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
areaList,
|
||||||
|
showDelete:false,
|
||||||
|
info:{},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
onSave(data) {
|
||||||
|
SaveAddress(data).then(response=>{
|
||||||
|
this.$toast('保存成功');
|
||||||
|
this.$router.go(-1);
|
||||||
|
})
|
||||||
|
},
|
||||||
|
onDelete(data) {
|
||||||
|
DelAddress(data).then(response=>{
|
||||||
|
this.$toast('删除成功');
|
||||||
|
this.$router.go(-1);
|
||||||
|
})
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created:function(){
|
||||||
|
var id=this.$route.query.id;
|
||||||
|
if(id>0){
|
||||||
|
this.showDelete=true;
|
||||||
|
GetAddressById(id).then(response=>{
|
||||||
|
console.log(response);
|
||||||
|
this.info=response;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.van-picker__toolbar{
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,65 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
<headerNav title="我的地址"/>
|
||||||
|
<van-address-list
|
||||||
|
v-model="chosenAddressId"
|
||||||
|
:class="isSelect?'':'hideselect'"
|
||||||
|
:list="list"
|
||||||
|
@add="onAdd"
|
||||||
|
@edit="onEdit"
|
||||||
|
@select="onSelect"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
import { GetAddressList } from "../../../api/user.js";
|
||||||
|
import { AddressList } from 'vant';
|
||||||
|
export default {
|
||||||
|
components:{
|
||||||
|
[AddressList.name]:AddressList,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
chosenAddressId: '1',
|
||||||
|
isSelect:false,
|
||||||
|
list: [],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
onAdd() {
|
||||||
|
this.$router.push('/user/address/edit')
|
||||||
|
},
|
||||||
|
|
||||||
|
onEdit(item, index) {
|
||||||
|
this.$router.push('/user/address/edit?id='+item.id);
|
||||||
|
},
|
||||||
|
onSelect(item,index){
|
||||||
|
if(!this.isSelect){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.$emit('selectAddress',item);
|
||||||
|
this.$router.go(-1);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created:function(){
|
||||||
|
this.chosenAddressId=this.$route.query.id;
|
||||||
|
this.isSelect=this.$route.query.id>0;
|
||||||
|
GetAddressList().then(response=>{
|
||||||
|
this.list=response;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.hideselect{
|
||||||
|
.van-radio__input{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,143 @@
|
||||||
|
</<template>
|
||||||
|
<div style="font-size:12px;">
|
||||||
|
<headerNav title="申请售后"/>
|
||||||
|
<van-radio-group v-model="servicetype">
|
||||||
|
<van-cell-group>
|
||||||
|
<van-cell title="服务类型" />
|
||||||
|
<van-cell title="退款" clickable @click="servicetype = '1'">
|
||||||
|
<van-radio name="1" />
|
||||||
|
</van-cell>
|
||||||
|
<van-cell title="退货" clickable @click="servicetype = '2'">
|
||||||
|
<van-radio name="2" />
|
||||||
|
</van-cell>
|
||||||
|
</van-cell-group>
|
||||||
|
</van-radio-group>
|
||||||
|
<div style="margin-top: 10px;" >
|
||||||
|
<product-card v-for="(product,i) in products" :key="i" :product='product' iscard ></product-card>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<van-cell-group style="margin-top: 10px;">
|
||||||
|
<van-cell title="申请原因" :label="remark" is-link @click="onClickShowPicker" />
|
||||||
|
|
||||||
|
<van-field label="退款金额" placeholder="请输入金额" v-model="amount" :error-message="'可退金额:'+maxamount" type='number' />
|
||||||
|
|
||||||
|
<van-field
|
||||||
|
label="问题描述"
|
||||||
|
type="textarea"
|
||||||
|
placeholder="请您在此描述问题"
|
||||||
|
rows="3"
|
||||||
|
autosize
|
||||||
|
/>
|
||||||
|
<van-cell class="uploader" style="font-size: 16px;">
|
||||||
|
<van-uploader :after-read="onRead" accept="image/gif, image/jpeg" multiple>
|
||||||
|
<van-icon name="photograph" />
|
||||||
|
</van-uploader>
|
||||||
|
<div v-for="(image,i) in images" :key="image" class="uploader-image" >
|
||||||
|
<img :src="image" />
|
||||||
|
<van-icon name="close" @click="removeImage(i,image)" />
|
||||||
|
</div>
|
||||||
|
</van-cell>
|
||||||
|
|
||||||
|
</van-cell-group>
|
||||||
|
|
||||||
|
|
||||||
|
<van-cell-group style="margin-top: 10px;">
|
||||||
|
<van-field label="联系人" />
|
||||||
|
<van-field label="联系电话" />
|
||||||
|
</van-cell-group>
|
||||||
|
|
||||||
|
<van-button size="large" type="primary" style="margin-top: 10px;" >提交</van-button>
|
||||||
|
<van-actionsheet v-model="showPicker" >
|
||||||
|
<van-picker show-toolbar
|
||||||
|
title="申请原因" :columns="columns" @cancel="onCancel" @confirm="onConfirm" />
|
||||||
|
</van-actionsheet>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data(){
|
||||||
|
return{
|
||||||
|
servicetype:'1',
|
||||||
|
showPicker:false,
|
||||||
|
remark:'我不想要了',
|
||||||
|
amount:'50.50',
|
||||||
|
maxamount:'50.50',
|
||||||
|
images:[],
|
||||||
|
columns: ['我不想要了','退运费','少件/漏发','未按约定时间发货','发错货', '质量问题', '商品与页面描述不符', '商品损坏', '缺少件'],
|
||||||
|
products: [
|
||||||
|
{
|
||||||
|
id:1,
|
||||||
|
imageURL:
|
||||||
|
"https://img10.360buyimg.com/mobilecms/s88x88_jfs/t17572/12/840082281/351445/e1828c58/5aab8dbbNedb77d88.jpg",
|
||||||
|
title: "良品铺子 肉肉聚汇猪肉脯 猪蹄卤 辣味小吃520g",
|
||||||
|
desc: "0.670kg/件,肉肉聚汇520g",
|
||||||
|
quantity: 2,
|
||||||
|
price:'50.5',
|
||||||
|
max:2,
|
||||||
|
min:0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id:1,
|
||||||
|
imageURL:
|
||||||
|
"https://img10.360buyimg.com/mobilecms/s88x88_jfs/t22720/128/1410375403/319576/8dbd859f/5b5e69b3Nf4f0e9e7.jpg",
|
||||||
|
title: "元朗 鸡蛋卷 饼干糕点 中秋礼盒 广东特产680g",
|
||||||
|
desc: "1.320kg/件",
|
||||||
|
quantity: 1,
|
||||||
|
price:'225.5',
|
||||||
|
max:1,
|
||||||
|
min:0,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
onClickShowPicker(){
|
||||||
|
this.showPicker=true;
|
||||||
|
},
|
||||||
|
onCancel() {
|
||||||
|
this.showPicker=false;
|
||||||
|
},
|
||||||
|
onConfirm(value, index) {
|
||||||
|
this.remark=value;
|
||||||
|
this.showPicker=false;
|
||||||
|
},
|
||||||
|
onRead(file) {
|
||||||
|
console.log(file.length);
|
||||||
|
if(file.length==undefined){
|
||||||
|
this.images.push(file.content);
|
||||||
|
}else{
|
||||||
|
file.forEach(item => {
|
||||||
|
this.images.push(item.content);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
console.log(file)
|
||||||
|
},
|
||||||
|
removeImage(index,image){
|
||||||
|
this.images.splice(index,1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.uploader{
|
||||||
|
font-size: 16px;
|
||||||
|
.van-uploader{
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
&-image{
|
||||||
|
margin-left: 10px;position: relative;height: 50px;width: 50px;border: 1px solid #e5e7ea;float: left;margin-top: 5px;
|
||||||
|
img{
|
||||||
|
width: 50px;
|
||||||
|
}
|
||||||
|
i{
|
||||||
|
position: absolute;
|
||||||
|
top: -6px;
|
||||||
|
right: -6px;
|
||||||
|
font-size: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,60 @@
|
||||||
|
</<template>
|
||||||
|
<div>
|
||||||
|
<headerNav title="服务单详情"/>
|
||||||
|
<van-steps :active="active">
|
||||||
|
<van-step>提交申请</van-step>
|
||||||
|
<van-step>客服审核</van-step>
|
||||||
|
<van-step>客户确认</van-step>
|
||||||
|
<van-step>仓库收货</van-step>
|
||||||
|
<van-step>完成</van-step>
|
||||||
|
</van-steps>
|
||||||
|
|
||||||
|
<van-cell class="logistics" to="/user/aftersale/track/1" title="您的服务单435703816的商品已收到" label="2018-08-31 21:04:03" is-link />
|
||||||
|
|
||||||
|
<div style="height:15px;"></div>
|
||||||
|
<div v-for="(product,i) in products" :key="i">
|
||||||
|
<product-card :product='product' />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style="height:15px;"></div>
|
||||||
|
<van-cell-group>
|
||||||
|
<van-cell title="服务单号" value="18081609422771742" />
|
||||||
|
<van-cell title="申请时间" value="2018-08-16 09:42:27" />
|
||||||
|
<van-cell title="服务类型" value="退货" />
|
||||||
|
</van-cell-group>
|
||||||
|
<div style="height:15px;"></div>
|
||||||
|
<van-cell-group>
|
||||||
|
<van-cell title="联系人" value="张三" />
|
||||||
|
<van-cell title="联系电话" value="138****6514" />
|
||||||
|
</van-cell-group>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data(){
|
||||||
|
return {
|
||||||
|
active:0,
|
||||||
|
|
||||||
|
products:[
|
||||||
|
{
|
||||||
|
imageURL:'https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712',
|
||||||
|
title:'BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套',
|
||||||
|
price:'499',
|
||||||
|
quantity:2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
imageURL:'https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712',
|
||||||
|
title:'BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套',
|
||||||
|
price:'499',
|
||||||
|
quantity:2
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,99 @@
|
||||||
|
<template>
|
||||||
|
<div class="aftersale">
|
||||||
|
<headerNav title="售后"/>
|
||||||
|
<van-tabs >
|
||||||
|
<van-tab title="售后申请">
|
||||||
|
<van-panel v-for="(order,index) in orders" :key="index" :title="'订单号:'+order.ordercode" style="margin-top:10px;">
|
||||||
|
<div>
|
||||||
|
<product-card v-for="(product,i) in order.products" :key="i" :product='product' >
|
||||||
|
<div class="van-panel_product_footer">
|
||||||
|
<van-button size="small" type="danger" tag="a" :href="'#/user/aftersale/apply?id='+product.id" >申请售后</van-button>
|
||||||
|
</div>
|
||||||
|
</product-card>
|
||||||
|
</div>
|
||||||
|
</van-panel>
|
||||||
|
</van-tab>
|
||||||
|
<van-tab title="申请记录">
|
||||||
|
<van-panel v-for="(order,index) in orders" :key="index" :title="'服务单号:'+order.ordercode" style="margin-top:10px;">
|
||||||
|
<div>
|
||||||
|
<product-card v-for="(product,i) in order.products" :key="i" :product='product'/>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<van-cell title="已完成" :to="'/user/aftersale/detail?ordercode='+order.ordercode" is-link label="服务已完成,感谢您对京东的支持" style="background-color: #f8f8f8;" />
|
||||||
|
</div>
|
||||||
|
</van-panel>
|
||||||
|
|
||||||
|
</van-tab>
|
||||||
|
</van-tabs>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data(){
|
||||||
|
return{
|
||||||
|
orders:[
|
||||||
|
{
|
||||||
|
ordercode:'79340944225',
|
||||||
|
products: [
|
||||||
|
{
|
||||||
|
id:1,
|
||||||
|
imageURL:
|
||||||
|
"https://img10.360buyimg.com/N2/jfs/t21733/218/377678809/177209/1b98ae56/5b0b96e1Nc0e37080.jpg",
|
||||||
|
title: "子初婴儿手口柔湿巾90片*3包 新生儿纸巾 宝宝婴儿湿巾",
|
||||||
|
quantity: 2
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ordercode:'79341094465',
|
||||||
|
products: [
|
||||||
|
{
|
||||||
|
id:1,
|
||||||
|
imageURL:
|
||||||
|
"https://img10.360buyimg.com/mobilecms/s88x88_jfs/t22720/128/1410375403/319576/8dbd859f/5b5e69b3Nf4f0e9e7.jpg",
|
||||||
|
title: "元朗 鸡蛋卷 饼干糕点 中秋礼盒 广东特产680g",
|
||||||
|
desc: "1.320kg/件",
|
||||||
|
quantity: 1,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ordercode:'79341094462',
|
||||||
|
products: [
|
||||||
|
{
|
||||||
|
id:1,
|
||||||
|
imageURL:
|
||||||
|
"https://img10.360buyimg.com/mobilecms/s88x88_jfs/t17572/12/840082281/351445/e1828c58/5aab8dbbNedb77d88.jpg",
|
||||||
|
title: "良品铺子 肉肉聚汇猪肉脯 猪蹄卤 辣味小吃520g",
|
||||||
|
desc: "0.670kg/件,肉肉聚汇520g",
|
||||||
|
quantity: 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id:1,
|
||||||
|
imageURL:
|
||||||
|
"https://img10.360buyimg.com/mobilecms/s88x88_jfs/t22720/128/1410375403/319576/8dbd859f/5b5e69b3Nf4f0e9e7.jpg",
|
||||||
|
title: "元朗 鸡蛋卷 饼干糕点 中秋礼盒 广东特产680g",
|
||||||
|
desc: "1.320kg/件",
|
||||||
|
quantity: 1,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
],
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.aftersale{
|
||||||
|
font-size:12px;background: #f0f2f5;
|
||||||
|
.van-panel{
|
||||||
|
margin-top: 10px;
|
||||||
|
&_product_footer{
|
||||||
|
text-align: right;padding: 0 10px 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,34 @@
|
||||||
|
<template>
|
||||||
|
<div style="background: #f7f7f7;">
|
||||||
|
<headerNav title="进度详情"/>
|
||||||
|
|
||||||
|
<van-cell-group>
|
||||||
|
<van-cell title="服务单号" value="18081609422771742" />
|
||||||
|
</van-cell-group>
|
||||||
|
<van-steps direction="vertical" :active="0" active-color="#f60" style="margin-top: 15px;">
|
||||||
|
<van-step>
|
||||||
|
<h3>您的服务单435703816的商品已收到</h3>
|
||||||
|
<p>2016-07-12 12:40</p>
|
||||||
|
</van-step>
|
||||||
|
<van-step>
|
||||||
|
<h3>【城市】物流状态2</h3>
|
||||||
|
<p>2016-07-11 10:00</p>
|
||||||
|
</van-step>
|
||||||
|
<van-step>
|
||||||
|
<h3>快件已发货</h3>
|
||||||
|
<p>2016-07-10 09:30</p>
|
||||||
|
</van-step>
|
||||||
|
</van-steps>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,358 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<headerNav title="我的优惠券"/>
|
||||||
|
<van-cell-group>
|
||||||
|
<van-field
|
||||||
|
center
|
||||||
|
clearable
|
||||||
|
placeholder="请输入优惠码"
|
||||||
|
|
||||||
|
v-model="couponCode"
|
||||||
|
>
|
||||||
|
<van-button slot="button" size="small" type="primary" :loading="exchangeLoading" @click="onExchange">兑换</van-button>
|
||||||
|
</van-field>
|
||||||
|
</van-cell-group>
|
||||||
|
<van-tabs >
|
||||||
|
<van-tab title="未使用">
|
||||||
|
<ul>
|
||||||
|
<van-list
|
||||||
|
v-model="loading"
|
||||||
|
:finished="finished"
|
||||||
|
@load="onLoad"
|
||||||
|
>
|
||||||
|
<li v-for="(item,index) in list" :key="index" :class="'couponitem '+(item.show?'show':'') ">
|
||||||
|
<div class="couponTop">
|
||||||
|
<div class="cpnamount">
|
||||||
|
<div class="amountWrap">
|
||||||
|
<div class="amount">
|
||||||
|
<span class="amountSign" v-if="item.SignPosition=='left'" >{{item.Sign}}</span>
|
||||||
|
<span class="amountNum">{{item.Coupon}}</span>
|
||||||
|
<span class="amountSign" v-if="item.SignPosition=='right'" >{{item.Sign}}</span>
|
||||||
|
</div>
|
||||||
|
<div class="condition">
|
||||||
|
<span>{{item.Condition}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="couponInfoWrap">
|
||||||
|
<div class="cpninfo">
|
||||||
|
<div class="detail">
|
||||||
|
<span class="name">{{item.Name}}</span></div>
|
||||||
|
</div>
|
||||||
|
<div class="validity">
|
||||||
|
<span>{{item.BeginDate}}-{{item.EndDate}}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<van-button type="danger" size="mini">立即使用</van-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="couponMid " v-if="item.Info!=''">
|
||||||
|
<span>详细信息</span>
|
||||||
|
<van-icon name="arrow" class="down" @click="onShowInfo(item.Id,index)" />
|
||||||
|
</div>
|
||||||
|
<div class="info" v-if="item.Info!=''" >
|
||||||
|
<div class="text">
|
||||||
|
{{item.Info}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</van-list>
|
||||||
|
</ul>
|
||||||
|
</van-tab>
|
||||||
|
<van-tab title="使用记录">
|
||||||
|
<ul class="gray" >
|
||||||
|
<van-list
|
||||||
|
v-model="useLoading"
|
||||||
|
:finished="useFinished"
|
||||||
|
@load="onLoadUse"
|
||||||
|
>
|
||||||
|
<li v-for="(item,index) in useList" :key="index" class="couponitem">
|
||||||
|
<div class="couponTop">
|
||||||
|
<div class="cpnamount">
|
||||||
|
<div class="amountWrap">
|
||||||
|
<div class="amount">
|
||||||
|
<span class="amountSign" v-if="item.SignPosition=='left'" >{{item.Sign}}</span>
|
||||||
|
<span class="amountNum">{{item.Coupon}}</span>
|
||||||
|
<span class="amountSign" v-if="item.SignPosition=='right'" >{{item.Sign}}</span>
|
||||||
|
</div>
|
||||||
|
<div class="condition">
|
||||||
|
<span>{{item.Condition}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="couponInfoWrap">
|
||||||
|
<div class="cpninfo">
|
||||||
|
<div class="detail">
|
||||||
|
<span class="name">{{item.Name}}</span></div>
|
||||||
|
</div>
|
||||||
|
<div class="validity">
|
||||||
|
<span>{{item.BeginDate}}-{{item.EndDate}}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</van-list>
|
||||||
|
</ul>
|
||||||
|
</van-tab>
|
||||||
|
<van-tab title="已过期">
|
||||||
|
<ul class="gray" >
|
||||||
|
|
||||||
|
<van-list
|
||||||
|
v-model="endLoading"
|
||||||
|
:finished="endFinished"
|
||||||
|
@load="onLoadEnd"
|
||||||
|
>
|
||||||
|
<li v-for="(item,index) in endList" :key="index" class="couponitem">
|
||||||
|
<div class="couponTop">
|
||||||
|
<div class="cpnamount">
|
||||||
|
<div class="amountWrap">
|
||||||
|
<div class="amount">
|
||||||
|
<span class="amountSign" v-if="item.SignPosition=='left'" >{{item.Sign}}</span>
|
||||||
|
<span class="amountNum">{{item.Coupon}}</span>
|
||||||
|
<span class="amountSign" v-if="item.SignPosition=='right'" >{{item.Sign}}</span>
|
||||||
|
</div>
|
||||||
|
<div class="condition">
|
||||||
|
<span>{{item.Condition}}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="couponInfoWrap">
|
||||||
|
<div class="cpninfo">
|
||||||
|
<div class="detail">
|
||||||
|
<span class="name">{{item.Name}}</span></div>
|
||||||
|
</div>
|
||||||
|
<div class="validity">
|
||||||
|
<span>{{item.BeginDate}}-{{item.EndDate}}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</van-list>
|
||||||
|
</ul>
|
||||||
|
</van-tab>
|
||||||
|
</van-tabs>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { GetCoupon,ExchangeCoupon } from "../../../api/user.js";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
loading:false,
|
||||||
|
finished:false,
|
||||||
|
list:[],
|
||||||
|
page:0,
|
||||||
|
|
||||||
|
|
||||||
|
useLoading:false,
|
||||||
|
useFinished:false,
|
||||||
|
useList:[],
|
||||||
|
usePage:0,
|
||||||
|
|
||||||
|
|
||||||
|
endLoading:false,
|
||||||
|
endFinished:false,
|
||||||
|
endList:[],
|
||||||
|
endPage:0,
|
||||||
|
|
||||||
|
couponCode:'',
|
||||||
|
exchangeLoading:false,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onLoad() {
|
||||||
|
this.page++;
|
||||||
|
GetCoupon({page:this.page}).then(response=>{
|
||||||
|
response.List.forEach(item => {
|
||||||
|
item.show=false;
|
||||||
|
this.list.push(item);
|
||||||
|
});
|
||||||
|
this.loading = false;
|
||||||
|
if(response.TotalPage<=this.page){
|
||||||
|
this.finished = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
},
|
||||||
|
onShowInfo(id,index){
|
||||||
|
this.list.forEach((item,itemIndex) => {
|
||||||
|
if(index==itemIndex){
|
||||||
|
item.show=!item.show;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
onLoadUse() {
|
||||||
|
this.usePage++;
|
||||||
|
GetCoupon({page:this.usePage}).then(response=>{
|
||||||
|
response.List.forEach(item => {
|
||||||
|
this.useList.push(item);
|
||||||
|
});
|
||||||
|
this.useLoading = false;
|
||||||
|
if(response.TotalPage<=this.usePage){
|
||||||
|
this.useFinished = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
},
|
||||||
|
onLoadEnd() {
|
||||||
|
this.endPage++;
|
||||||
|
GetCoupon({page:this.endPage}).then(response=>{
|
||||||
|
response.List.forEach(item => {
|
||||||
|
this.endList.push(item);
|
||||||
|
});
|
||||||
|
this.endLoading = false;
|
||||||
|
if(response.TotalPage<=this.endPage){
|
||||||
|
this.endFinished = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
},
|
||||||
|
onExchange(){
|
||||||
|
if(this.exchangeLoading){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.exchangeLoading=true;
|
||||||
|
ExchangeCoupon(this.couponCode).then(response=>{
|
||||||
|
this.$toast('兑换成功');
|
||||||
|
this.exchangeLoading=false;
|
||||||
|
this.$router.go(0);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.couponitem {
|
||||||
|
padding: 0 10px;
|
||||||
|
margin-top: 10px;
|
||||||
|
position: relative;
|
||||||
|
font-size: 12px;
|
||||||
|
.couponTop {
|
||||||
|
background-color: #fcebeb;
|
||||||
|
border-left: 1px solid #f3d4d4;
|
||||||
|
border-right: 1px solid #f3d4d4;
|
||||||
|
border-bottom: 1px dashed #f3d4d4;
|
||||||
|
border-radius: 8px;
|
||||||
|
border-top-left-radius: 5px;
|
||||||
|
border-top-right-radius: 5px;
|
||||||
|
.cpnamount {
|
||||||
|
position: relative;
|
||||||
|
height: 90px;
|
||||||
|
width: 34.08%;
|
||||||
|
text-align: center;
|
||||||
|
float: left;
|
||||||
|
border-right: 1px dashed #f3d4d4;
|
||||||
|
}
|
||||||
|
.amountWrap {
|
||||||
|
width: 100%;
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
-webkit-transform: translate(0, -50%);
|
||||||
|
transform: translate(0, -50%);
|
||||||
|
.amount {
|
||||||
|
font-size: 15px;
|
||||||
|
.amountSign {
|
||||||
|
margin-right: 3px;
|
||||||
|
}
|
||||||
|
.amountNum {
|
||||||
|
font-size: 39px;
|
||||||
|
line-height: 1;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.couponInfoWrap {
|
||||||
|
position: relative;
|
||||||
|
margin-left: 37.465%;
|
||||||
|
height: 90px;
|
||||||
|
.cpninfo {
|
||||||
|
position: absolute;
|
||||||
|
top: 26px;
|
||||||
|
-webkit-transform: translate(0, -50%);
|
||||||
|
transform: translate(0, -50%);
|
||||||
|
width: 100%;
|
||||||
|
.detail {
|
||||||
|
padding-right: 15px;
|
||||||
|
word-break: break-all;
|
||||||
|
.name {
|
||||||
|
font-size: 13px;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.validity {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 16px;
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
button{
|
||||||
|
right: 16px;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.couponMid {
|
||||||
|
position: relative;
|
||||||
|
height: 31px;
|
||||||
|
line-height: 31px;
|
||||||
|
padding-left: 16px;
|
||||||
|
font-size: 12px;
|
||||||
|
|
||||||
|
background-color: #fcebeb;
|
||||||
|
border-left: 1px solid #f3d4d4;
|
||||||
|
border-right: 1px solid #f3d4d4;
|
||||||
|
border-bottom: 1px solid #f3d4d4;
|
||||||
|
border-radius: 8px;
|
||||||
|
border-bottom-left-radius: 5px;
|
||||||
|
border-bottom-right-radius: 5px;
|
||||||
|
i{
|
||||||
|
right: 16px;
|
||||||
|
position: absolute;
|
||||||
|
top: 8px;
|
||||||
|
-webkit-transform: rotate(90deg);
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.info{
|
||||||
|
display: none;
|
||||||
|
background-color: #fcebeb;
|
||||||
|
border-left: 1px solid #f3d4d4;
|
||||||
|
border-right: 1px solid #f3d4d4;
|
||||||
|
border-bottom: 1px solid #f3d4d4;
|
||||||
|
border-bottom-left-radius: 8px;
|
||||||
|
border-bottom-right-radius: 8px;
|
||||||
|
padding: 10px 25px 12px 15px;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.show{
|
||||||
|
|
||||||
|
.couponMid {
|
||||||
|
border-bottom: 1px dashed #f3d4d4;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
i{
|
||||||
|
-webkit-transform: rotate(-90deg);
|
||||||
|
transform: rotate(-90deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.info{
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.gray{
|
||||||
|
-webkit-filter: grayscale(100%);filter:progid:DXImageTransform.Microsoft.BasicImage(graysale=1);
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,87 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<headerNav title="我的收藏"/>
|
||||||
|
<van-list
|
||||||
|
v-model="loading"
|
||||||
|
:finished="finished"
|
||||||
|
@load="onLoad"
|
||||||
|
>
|
||||||
|
<div v-for="(item,index) in list" :key="index">
|
||||||
|
<van-swipe-cell :right-width="65" :on-close="onClose(item)">
|
||||||
|
<product-card :product='item' />
|
||||||
|
<span slot="right" >删除</span>
|
||||||
|
</van-swipe-cell>
|
||||||
|
</div>
|
||||||
|
</van-list>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { GetFavorite ,DelFavorite} from "../../../api/user.js";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data(){
|
||||||
|
return{
|
||||||
|
loading:false,
|
||||||
|
finished:false,
|
||||||
|
list:[],
|
||||||
|
page:0,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
onClose(item){
|
||||||
|
return function(clickPosition, instance) {
|
||||||
|
switch (clickPosition) {
|
||||||
|
case 'left':
|
||||||
|
case 'cell':
|
||||||
|
case 'outside':
|
||||||
|
instance.close();
|
||||||
|
break;
|
||||||
|
case 'right':
|
||||||
|
this.$dialog.confirm({
|
||||||
|
message: '确定删除吗?'
|
||||||
|
}).then(() => {
|
||||||
|
DelFavorite(item.id).then(response=>{
|
||||||
|
this.$toast('删除成功');
|
||||||
|
this.$router.go(0);
|
||||||
|
})
|
||||||
|
instance.close();
|
||||||
|
}).catch(() => {
|
||||||
|
// on cancel
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad() {
|
||||||
|
this.page++;
|
||||||
|
GetFavorite().then(response=>{
|
||||||
|
response.list.forEach(item => {
|
||||||
|
this.list.push(item);
|
||||||
|
});
|
||||||
|
this.loading = false;
|
||||||
|
if(response.TotalPage<=this.page){
|
||||||
|
this.finished = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.van-swipe-cell{
|
||||||
|
&__left,
|
||||||
|
&__right {
|
||||||
|
color: #FFFFFF;
|
||||||
|
font-size: 15px;
|
||||||
|
width: 65px;
|
||||||
|
height: 100px;
|
||||||
|
display: inline-block;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 100px;
|
||||||
|
background-color: #F44;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,152 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div class="user-profile">
|
||||||
|
<div class="user-profile-avatar">
|
||||||
|
<a href="/#/user/info">
|
||||||
|
<img :src="data.Avatar" alt="用户头像">
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div class="user-profile-username">
|
||||||
|
<a href="/#/user/info">
|
||||||
|
<span class="m-nick">{{data.UserName}}</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<van-cell-group class="user-group">
|
||||||
|
<van-cell title="我的订单" value="查看全部订单" is-link to="/user/order"/>
|
||||||
|
<van-row class="user-links">
|
||||||
|
<router-link to="/user/order/1">
|
||||||
|
<van-col span="6">
|
||||||
|
<van-icon name="pending-payment">
|
||||||
|
<van-info :info="data.UnPayTotal" />
|
||||||
|
</van-icon>
|
||||||
|
<div>待付款</div>
|
||||||
|
</van-col>
|
||||||
|
</router-link>
|
||||||
|
<router-link to="/user/order/2">
|
||||||
|
<van-col span="6">
|
||||||
|
<van-icon name="logistics">
|
||||||
|
<van-info :info="data.UnRecieveTotal" />
|
||||||
|
</van-icon>
|
||||||
|
<div>待发货</div>
|
||||||
|
</van-col>
|
||||||
|
</router-link>
|
||||||
|
<router-link to="/user/order/2">
|
||||||
|
<van-col span="6">
|
||||||
|
<van-icon name="point-gift">
|
||||||
|
</van-icon>
|
||||||
|
<div>已完成</div>
|
||||||
|
</van-col>
|
||||||
|
</router-link>
|
||||||
|
<router-link to="/user/aftersale">
|
||||||
|
<van-col span="6">
|
||||||
|
<van-icon name="after-sale" >
|
||||||
|
<van-info :info="data.AfterSaleTotal" />
|
||||||
|
</van-icon>
|
||||||
|
<div>售后</div>
|
||||||
|
</van-col>
|
||||||
|
</router-link>
|
||||||
|
</van-row>
|
||||||
|
</van-cell-group>
|
||||||
|
|
||||||
|
<van-cell-group class="user-group">
|
||||||
|
<van-cell title="我的服务" />
|
||||||
|
<van-row class="user-links">
|
||||||
|
<router-link to="/user/coupon">
|
||||||
|
<van-col span="6">
|
||||||
|
<van-icon name="coupon" />
|
||||||
|
<div>我的优惠券</div>
|
||||||
|
</van-col>
|
||||||
|
</router-link>
|
||||||
|
<router-link to="/user/favorite">
|
||||||
|
<van-col span="6">
|
||||||
|
<van-icon name="like-o" />
|
||||||
|
<div>我的收藏</div>
|
||||||
|
</van-col>
|
||||||
|
</router-link>
|
||||||
|
<router-link to="/user/address">
|
||||||
|
<van-col span="6" >
|
||||||
|
<van-icon name="location"/>
|
||||||
|
<div>收货地址</div>
|
||||||
|
</van-col>
|
||||||
|
</router-link>
|
||||||
|
</van-row>
|
||||||
|
</van-cell-group>
|
||||||
|
|
||||||
|
<van-cell-group>
|
||||||
|
<van-cell title="切换账号" is-link to="/login" />
|
||||||
|
</van-cell-group>
|
||||||
|
<navigate />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { GetUserIndex } from "../../api/user.js";
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data(){
|
||||||
|
return{
|
||||||
|
data:{}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
},
|
||||||
|
created:function(){
|
||||||
|
GetUserIndex().then(response=>{
|
||||||
|
this.data=response;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.user {
|
||||||
|
&-profile {
|
||||||
|
text-align: center;
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
height: 141px;
|
||||||
|
background-color: #f1f5fa;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
img{
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
&-avatar{
|
||||||
|
padding-top: 23px;
|
||||||
|
padding-bottom: 5px;
|
||||||
|
|
||||||
|
img{
|
||||||
|
|
||||||
|
width: 65px;
|
||||||
|
height: 65px;
|
||||||
|
border-radius: 50%;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&-username{
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&-group {
|
||||||
|
margin-bottom: .3rem;
|
||||||
|
|
||||||
|
.van-cell__value{
|
||||||
|
color: #999;
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&-links {
|
||||||
|
padding: 15px 0;
|
||||||
|
font-size: 12px;
|
||||||
|
text-align: center;
|
||||||
|
background-color: #fff;
|
||||||
|
.van-icon {
|
||||||
|
position: relative;
|
||||||
|
width: 24px;
|
||||||
|
font-size: 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,22 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<headerNav title="账号管理"/>
|
||||||
|
<van-cell-group>
|
||||||
|
<van-cell title="修改个人信息" is-link />
|
||||||
|
<van-cell title="修改登录密码" is-link />
|
||||||
|
<van-cell title="修改绑定手机" is-link />
|
||||||
|
<van-cell title="关联账号" is-link />
|
||||||
|
<van-cell title="切换账号" is-link to="/login" />
|
||||||
|
</van-cell-group>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
|
@ -0,0 +1,110 @@
|
||||||
|
<template>
|
||||||
|
<div style="background: #f7f7f7;">
|
||||||
|
<headerNav title="订单详情"/>
|
||||||
|
<van-steps :active="active">
|
||||||
|
<van-step>提交订单</van-step>
|
||||||
|
<van-step>配送中</van-step>
|
||||||
|
<van-step>交易完成</van-step>
|
||||||
|
</van-steps>
|
||||||
|
|
||||||
|
<van-cell class="logistics" to="/user/order/logistics/1" title="您的订单已由本人签收(已在配送员处采用无纸化方式签收本订单)。感谢您在京东购物,欢迎再次光临。参加评价还能赢取京豆哟。" label="2018-08-31 21:04:03" icon="logistics" is-link />
|
||||||
|
<div style="height:15px;"></div>
|
||||||
|
<van-cell-group>
|
||||||
|
<van-cell
|
||||||
|
center
|
||||||
|
:border="false"
|
||||||
|
>
|
||||||
|
<template>
|
||||||
|
<div>张三 138****6520</div>
|
||||||
|
<div>广东省深圳市南山区科技园 </div>
|
||||||
|
</template>
|
||||||
|
</van-cell>
|
||||||
|
</van-cell-group>
|
||||||
|
|
||||||
|
<div style="height:15px;"></div>
|
||||||
|
<div v-for="(product,i) in products" :key="i">
|
||||||
|
<product-card :product='product' />
|
||||||
|
</div>
|
||||||
|
<div style="height:15px;"></div>
|
||||||
|
<van-cell-group>
|
||||||
|
<van-cell title="订单编号" value="18081609422771742" />
|
||||||
|
<van-cell title="下单时间" value="2018-08-16 09:42:27" />
|
||||||
|
<van-cell title="订单状态" value="配送中" />
|
||||||
|
</van-cell-group>
|
||||||
|
<div style="height:15px;"></div>
|
||||||
|
<van-cell-group class="total">
|
||||||
|
<van-cell title="商品总额" value="9.99" />
|
||||||
|
<van-cell title="运费" value="+ 0.00" />
|
||||||
|
<van-cell title="实付金额" value="9.99" style="font-weight: 700;" />
|
||||||
|
</van-cell-group>
|
||||||
|
<div class="footer">
|
||||||
|
<div class="munu">
|
||||||
|
<van-button size="small">确认收货</van-button>
|
||||||
|
<van-button size="small" type="danger">支付</van-button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data(){
|
||||||
|
return{
|
||||||
|
active:1,
|
||||||
|
products:[
|
||||||
|
{
|
||||||
|
imageURL:'https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712',
|
||||||
|
title:'BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套',
|
||||||
|
price:'499',
|
||||||
|
quantity:2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
imageURL:'https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712',
|
||||||
|
title:'BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套',
|
||||||
|
price:'499',
|
||||||
|
quantity:2
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
.logistics{
|
||||||
|
margin-top: 15px;
|
||||||
|
i{
|
||||||
|
line-height: 60px; font-size: 20px;
|
||||||
|
}
|
||||||
|
.van-cell__title span{
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-line-clamp: 2;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
}
|
||||||
|
.van-cell__label{
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.total{
|
||||||
|
.van-cell__value{color: red;}
|
||||||
|
}
|
||||||
|
.footer{
|
||||||
|
height:50px;
|
||||||
|
.munu{
|
||||||
|
position: fixed;
|
||||||
|
height: 49px;
|
||||||
|
border-top: 1px solid #e5e5e5;
|
||||||
|
bottom: 0;
|
||||||
|
background: #fff;
|
||||||
|
width: 100%;
|
||||||
|
line-height: 24px;
|
||||||
|
text-align: right;
|
||||||
|
.van-button{
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,176 @@
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<headerNav title="我的订单"/>
|
||||||
|
<van-tabs v-model="active">
|
||||||
|
<van-tab title="全部">
|
||||||
|
|
||||||
|
<div v-for="(item,index) in list" :key="index">
|
||||||
|
<van-cell-group class="order-item" >
|
||||||
|
<van-panel :title="'订单:'+item.ordercode" :status="item.state" >
|
||||||
|
<div slot="header">
|
||||||
|
<van-cell class="title" :title="'订单:'+item.ordercode" :value="item.state" :to="'/user/order/info/'+item.orderid"/>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<router-link :to="'/user/order/info/'+item.orderid">
|
||||||
|
<div v-if="item.products.length==1" v-for="(product,i) in item.products" :key="i">
|
||||||
|
<product-card :product='product' />
|
||||||
|
</div>
|
||||||
|
<div v-if="item.products.length>1" class="more" >
|
||||||
|
<div class="item" v-for="(product,i) in item.products" :key="i">
|
||||||
|
<div >
|
||||||
|
<img :src="product.imageURL"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</router-link>
|
||||||
|
</div>
|
||||||
|
<div slot="footer">
|
||||||
|
<span class="total">总价:¥8154898.89</span>
|
||||||
|
<van-button size="small">确认收货</van-button>
|
||||||
|
<van-button size="small" type="danger">支付</van-button>
|
||||||
|
</div>
|
||||||
|
</van-panel>
|
||||||
|
</van-cell-group>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</van-tab>
|
||||||
|
<van-tab title="待付款">内容 2</van-tab>
|
||||||
|
<van-tab title="待收货">内容 3</van-tab>
|
||||||
|
<van-tab title="已完成">内容 4</van-tab>
|
||||||
|
<van-tab title="已取消">内容 5</van-tab>
|
||||||
|
</van-tabs>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
components:{
|
||||||
|
},
|
||||||
|
data(){
|
||||||
|
return{
|
||||||
|
active:0,
|
||||||
|
|
||||||
|
list:[
|
||||||
|
{
|
||||||
|
orderid:1,
|
||||||
|
ordercode:'4511248234235',
|
||||||
|
state:'待付款',
|
||||||
|
products:[
|
||||||
|
{
|
||||||
|
imageURL:'https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712',
|
||||||
|
title:'BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套',
|
||||||
|
price:'499',
|
||||||
|
quantity:2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
imageURL:'https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712',
|
||||||
|
title:'BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套',
|
||||||
|
price:'499',
|
||||||
|
quantity:1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
imageURL:'https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712',
|
||||||
|
title:'BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套',
|
||||||
|
price:'499',
|
||||||
|
quantity:2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
imageURL:'https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712',
|
||||||
|
title:'BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套',
|
||||||
|
price:'499',
|
||||||
|
quantity:2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
imageURL:'https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712',
|
||||||
|
title:'BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套',
|
||||||
|
price:'499',
|
||||||
|
quantity:2
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
orderid:2,
|
||||||
|
ordercode:'4511248234235',
|
||||||
|
state:'待收货',
|
||||||
|
products:[
|
||||||
|
{
|
||||||
|
imageURL:'https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712',
|
||||||
|
title:'BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套',
|
||||||
|
price:'499',
|
||||||
|
quantity:2
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
orderid:3,
|
||||||
|
ordercode:'4511248234235',
|
||||||
|
state:'已完成',
|
||||||
|
products:[
|
||||||
|
{
|
||||||
|
imageURL:'https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712',
|
||||||
|
title:'BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套',
|
||||||
|
price:'499',
|
||||||
|
quantity:2
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
orderid:4,
|
||||||
|
ordercode:'4511248234235',
|
||||||
|
state:'已取消',
|
||||||
|
products:[
|
||||||
|
{
|
||||||
|
imageURL:'https://pop.nosdn.127.net/19e33c9b-6c22-4a4b-96da-1cb7afb32712',
|
||||||
|
title:'BEYOND博洋家纺 床上套件 秋冬保暖纯棉床单被套 双人被罩 磨毛全棉印花床品四件套',
|
||||||
|
price:'499',
|
||||||
|
quantity:2
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less">
|
||||||
|
|
||||||
|
.order-item{
|
||||||
|
margin-bottom: 10px;
|
||||||
|
font-size: 12px;
|
||||||
|
.title{
|
||||||
|
border-bottom: 1px solid #e5e5e5;
|
||||||
|
|
||||||
|
.van-cell__title{
|
||||||
|
flex: 2;
|
||||||
|
}
|
||||||
|
.van-cell__value{
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.van-panel__footer {
|
||||||
|
text-align: right;
|
||||||
|
border-bottom: 1px solid #e5e5e5;
|
||||||
|
}
|
||||||
|
.van-button {
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
.total{
|
||||||
|
position: absolute;
|
||||||
|
top: 17px;
|
||||||
|
left: 15px;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
.more{
|
||||||
|
overflow-x: scroll;white-space: nowrap; -webkit-overflow-scrolling: touch; margin: 5px 0 5px 15px;
|
||||||
|
.item{
|
||||||
|
width: 90px; height:90px; margin-right: 10px;display: inline-block;
|
||||||
|
img{
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -0,0 +1,44 @@
|
||||||
|
<template>
|
||||||
|
<div style="background: #f7f7f7;">
|
||||||
|
<headerNav title="订单追踪"/>
|
||||||
|
|
||||||
|
<van-cell-group>
|
||||||
|
<van-cell title="订单编号" value="18081609422771742" />
|
||||||
|
</van-cell-group>
|
||||||
|
<van-tabs >
|
||||||
|
<van-tab title="包裹1">
|
||||||
|
|
||||||
|
<van-cell-group>
|
||||||
|
<van-cell title="快递方式" value="顺丰快递" />
|
||||||
|
<van-cell title="快递单号" value="51234548875645645" />
|
||||||
|
</van-cell-group>
|
||||||
|
<van-steps direction="vertical" :active="0" active-color="#f60" style="margin-top: 15px;">
|
||||||
|
<van-step>
|
||||||
|
<h3>【城市】物流状态1</h3>
|
||||||
|
<p>2016-07-12 12:40</p>
|
||||||
|
</van-step>
|
||||||
|
<van-step>
|
||||||
|
<h3>【城市】物流状态2</h3>
|
||||||
|
<p>2016-07-11 10:00</p>
|
||||||
|
</van-step>
|
||||||
|
<van-step>
|
||||||
|
<h3>快件已发货</h3>
|
||||||
|
<p>2016-07-10 09:30</p>
|
||||||
|
</van-step>
|
||||||
|
</van-steps>
|
||||||
|
</van-tab>
|
||||||
|
<van-tab title="包裹2">内容 3</van-tab>
|
||||||
|
</van-tabs>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|