30 changed files with 4536 additions and 1710 deletions
Unified View
Diff Options
-
29build/webpack.base.conf.js
-
7config/index.js
-
1index.html
-
2package.json
-
19src/api/chooseCommunity.js
-
10src/api/home.js
-
7src/api/wxShare.js
-
115src/assets/styles/common/border.scss
-
1093src/assets/styles/common/common.scss
-
165src/assets/styles/common/icon.scss
-
86src/assets/styles/common/mixin.scss
-
46src/assets/styles/common/transition.scss
-
19src/assets/styles/common/variables.scss
-
200src/assets/styles/index.scss
-
164src/common/util.js
-
11src/main.js
-
30src/models/choose-community.js
-
24src/models/home-model.js
-
2src/models/utils-model.js
-
74src/models/wxLocation.js
-
6src/models/wxShare-model.js
-
195src/models/wxShare.js
-
7src/router/index.js
-
20src/utils/scroll.js
-
485src/view/choose-community.vue
-
2src/view/goods-classify.vue
-
1692src/view/home.vue
-
475src/view/month-card.vue
-
1258src/view/order-check.vue
-
2src/view/order-list.vue
@ -0,0 +1,19 @@ |
|||||
|
export default { |
||||
|
getAddressInfo:{ |
||||
|
method:"get", |
||||
|
url:"/mall/web/estate/addressInfo" |
||||
|
}, |
||||
|
// -- 查询单个小区信息 --
|
||||
|
getEstateInfo: { |
||||
|
method: 'GET', |
||||
|
url: '/mall/web/estate/query/estateInfo', |
||||
|
}, |
||||
|
getEstateList: { |
||||
|
method: 'GET', |
||||
|
url: '/mall/web/estate/query/estateList', |
||||
|
}, |
||||
|
getGoodsTemlate: { |
||||
|
method: 'GET', |
||||
|
url: '/mall/web/goods/template', |
||||
|
}, |
||||
|
} |
||||
@ -0,0 +1,115 @@ |
|||||
|
.border-1px { |
||||
|
position: relative; |
||||
|
&::before { |
||||
|
@include border-1px(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.border-1px-t { |
||||
|
position: relative; |
||||
|
&::before { |
||||
|
@include border-1px-top(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.border-1px-l { |
||||
|
position: relative; |
||||
|
&::before { |
||||
|
@include border-1px-left(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.border-1px-r { |
||||
|
position: relative; |
||||
|
&::after { |
||||
|
@include border-1px-right(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.border-1px-b { |
||||
|
position: relative; |
||||
|
&::after { |
||||
|
@include border-1px-bottom(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@media (-webkit-min-device-pixel-ratio: 2) { |
||||
|
.f-bb-gray { |
||||
|
position: relative; |
||||
|
&::after { |
||||
|
@include border-1px-bottom(#E8E8E8); |
||||
|
} |
||||
|
} |
||||
|
.f-bt-gray { |
||||
|
position: relative; |
||||
|
&::before { |
||||
|
@include border-1px-top(#E8E8E8); |
||||
|
} |
||||
|
} |
||||
|
.f-br-gray { |
||||
|
&::after { |
||||
|
@include border-1px-right(#E8E8E8); |
||||
|
} |
||||
|
} |
||||
|
.f-bl-gray { |
||||
|
&::before { |
||||
|
@include border-1px-left(#E8E8E8); |
||||
|
} |
||||
|
} |
||||
|
.f-bb-gray-dashed { |
||||
|
position: relative; |
||||
|
&:after { |
||||
|
height: 1px; |
||||
|
content: ''; |
||||
|
width: 100%; |
||||
|
border-bottom: 1px dashed #dcdcdc; |
||||
|
position: absolute; |
||||
|
bottom: -1px; |
||||
|
right: 0; |
||||
|
transform: scaleY(0.5); |
||||
|
-webkit-transform: scaleY(0.5); |
||||
|
} |
||||
|
} |
||||
|
.f-bb-blue { |
||||
|
position: relative; |
||||
|
&:after { |
||||
|
@include border-1px-bottom(#33a7e6); |
||||
|
} |
||||
|
} |
||||
|
.f-bt-1px { |
||||
|
position: relative; |
||||
|
&:after { |
||||
|
@include border-1px-bottom(#D6D6D6); |
||||
|
} |
||||
|
} |
||||
|
.f-border-grey { |
||||
|
/* content: ''; |
||||
|
position: absolute; |
||||
|
top: 0; |
||||
|
left: 0; |
||||
|
border: 1px solid #e8e8e8; |
||||
|
-webkit-box-sizing: border-box; |
||||
|
box-sizing: border-box; |
||||
|
width: 200%; |
||||
|
height: 200%; |
||||
|
-webkit-transform: scale(0.5); |
||||
|
transform: scale(0.5); |
||||
|
-webkit-transform-origin: left top; |
||||
|
transform-origin: left top; |
||||
|
z-index: 0; |
||||
|
border-radius: 3px; */ |
||||
|
|
||||
|
position: relative; |
||||
|
&::before { |
||||
|
@include border-1px(#e8e8e8, 3px); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.f-border-r4{ |
||||
|
border-radius: 4px; |
||||
|
} |
||||
|
|
||||
|
.f-border-b-E5{ |
||||
|
border-bottom: 1px solid #f3f3f3; |
||||
|
} |
||||
1093
src/assets/styles/common/common.scss
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,165 @@ |
|||||
|
.icon { |
||||
|
width: 24px; |
||||
|
height: 24px; |
||||
|
display: inline-block; |
||||
|
font-size: inherit; |
||||
|
text-rendering: auto; |
||||
|
-webkit-font-smoothing: antialiased; |
||||
|
-moz-osx-font-smoothing: grayscale; |
||||
|
} |
||||
|
|
||||
|
.icon-11 { |
||||
|
width: 11px; |
||||
|
height: 11px; |
||||
|
} |
||||
|
|
||||
|
.icon-13 { |
||||
|
width: 13px; |
||||
|
height: 13px; |
||||
|
} |
||||
|
|
||||
|
.icon-14 { |
||||
|
width: 14px; |
||||
|
height: 14px; |
||||
|
} |
||||
|
|
||||
|
.icon-15 { |
||||
|
width: 15px; |
||||
|
height: 15px; |
||||
|
} |
||||
|
|
||||
|
.icon-16 { |
||||
|
width: 16px; |
||||
|
height: 16px; |
||||
|
} |
||||
|
|
||||
|
.icon-17 { |
||||
|
width: 17px; |
||||
|
height: 17px; |
||||
|
} |
||||
|
|
||||
|
.icon-18 { |
||||
|
width: 18px; |
||||
|
height: 18px; |
||||
|
} |
||||
|
|
||||
|
.icon-20 { |
||||
|
width: 20px; |
||||
|
height: 20px; |
||||
|
} |
||||
|
|
||||
|
.icon-22 { |
||||
|
width: 22px; |
||||
|
height: 22px; |
||||
|
} |
||||
|
|
||||
|
.icon-25 { |
||||
|
width: 25px; |
||||
|
height: 25px; |
||||
|
} |
||||
|
|
||||
|
.icon-28 { |
||||
|
width: 26px; |
||||
|
height: 26px; |
||||
|
} |
||||
|
|
||||
|
.icon-30 { |
||||
|
width: 30px; |
||||
|
height: 30px; |
||||
|
} |
||||
|
|
||||
|
.icon-33 { |
||||
|
width: 33px; |
||||
|
height: 33px; |
||||
|
} |
||||
|
|
||||
|
.icon-35 { |
||||
|
width: 35px; |
||||
|
height: 35px; |
||||
|
} |
||||
|
|
||||
|
.icon-44 { |
||||
|
width: 44px; |
||||
|
height: 44px; |
||||
|
} |
||||
|
|
||||
|
.icon-65 { |
||||
|
width: 65px; |
||||
|
height: 65px; |
||||
|
} |
||||
|
|
||||
|
.icon-arrow { |
||||
|
width: 6px; |
||||
|
height: 11px; |
||||
|
} |
||||
|
|
||||
|
.icon-width-3 { |
||||
|
width: 3px; |
||||
|
} |
||||
|
|
||||
|
.icon-width-14 { |
||||
|
width: 14px; |
||||
|
} |
||||
|
|
||||
|
.icon-width-6 { |
||||
|
width: 6px; |
||||
|
} |
||||
|
|
||||
|
.icon-width-10 { |
||||
|
width: 10px; |
||||
|
} |
||||
|
|
||||
|
.icon-width-19 { |
||||
|
width: 19px; |
||||
|
} |
||||
|
|
||||
|
.arrow-back { |
||||
|
width: 10px; |
||||
|
height: 18px; |
||||
|
margin-top: -4px; |
||||
|
} |
||||
|
|
||||
|
// .icon-close { |
||||
|
// background: url(../assets/images/delete.png) no-repeat; |
||||
|
// background-size: contain; |
||||
|
// } |
||||
|
|
||||
|
.arrow-left { |
||||
|
position: relative; |
||||
|
|
||||
|
&:before { |
||||
|
content: ' '; |
||||
|
display: inline-block; |
||||
|
height: 10px; |
||||
|
width: 10px; |
||||
|
border-width: 2px 2px 0 0; |
||||
|
border-color: #000; |
||||
|
border-style: solid; |
||||
|
-webkit-transform: matrix(-0.71, 0.71, 0.71, 0.71, 0, 0); |
||||
|
transform: matrix(-0.71, 0.71, 0.71, 0.71, 0, 0); |
||||
|
position: absolute; |
||||
|
top: 50%; |
||||
|
left: 0; |
||||
|
margin-top: -5px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.arrow-right { |
||||
|
position: relative; |
||||
|
|
||||
|
&:after { |
||||
|
content: ' '; |
||||
|
display: inline-block; |
||||
|
height: 10px; |
||||
|
width: 10px; |
||||
|
border-width: 2px 2px 0 0; |
||||
|
border-color: #c8c8cd; |
||||
|
border-style: solid; |
||||
|
-webkit-transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0); |
||||
|
transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0); |
||||
|
position: absolute; |
||||
|
top: 50%; |
||||
|
right: 0px; |
||||
|
margin-top: -6px; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,86 @@ |
|||||
|
@mixin clearfix { |
||||
|
&:after { |
||||
|
content: ''; |
||||
|
display: table; |
||||
|
clear: both; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@mixin scrollBar { |
||||
|
&::-webkit-scrollbar-track-piece { |
||||
|
background: #d3dce6; |
||||
|
} |
||||
|
&::-webkit-scrollbar { |
||||
|
width: 6px; |
||||
|
} |
||||
|
&::-webkit-scrollbar-thumb { |
||||
|
background: #99a9bf; |
||||
|
border-radius: 20px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@mixin border-1px($color: #464353, $radius: 0px) { |
||||
|
content: ' '; |
||||
|
position: absolute; |
||||
|
left: 0; |
||||
|
top: 0; |
||||
|
width: 200%; |
||||
|
height: 200%; |
||||
|
border: 1px solid $color; |
||||
|
color: $color; |
||||
|
border-radius: $radius; |
||||
|
transform-origin: left top; |
||||
|
transform: scale(0.5); |
||||
|
} |
||||
|
|
||||
|
@mixin border-1px-top($color: #464353) { |
||||
|
content: ' '; |
||||
|
position: absolute; |
||||
|
left: 0; |
||||
|
top: 0; |
||||
|
right: 0; |
||||
|
height: 1px; |
||||
|
border-top: 1px solid $color; |
||||
|
color: $color; |
||||
|
transform-origin: 0 0; |
||||
|
transform: scaleY(0.5); |
||||
|
} |
||||
|
|
||||
|
@mixin border-1px-bottom($color: #464353) { |
||||
|
content: ' '; |
||||
|
position: absolute; |
||||
|
left: 0; |
||||
|
bottom: 0; |
||||
|
right: 0; |
||||
|
height: 1px; |
||||
|
border-bottom: 1px solid $color; |
||||
|
color: $color; |
||||
|
transform-origin: 0 100%; |
||||
|
transform: scaleY(0.5); |
||||
|
} |
||||
|
|
||||
|
@mixin border-1px-left($color: #464353) { |
||||
|
content: ' '; |
||||
|
position: absolute; |
||||
|
left: 0; |
||||
|
top: 0; |
||||
|
width: 1px; |
||||
|
bottom: 0; |
||||
|
border-left: 1px solid $color; |
||||
|
color: $color; |
||||
|
transform-origin: 0 0; |
||||
|
transform: scaleX(0.5); |
||||
|
} |
||||
|
|
||||
|
@mixin border-1px-right($color: #464353) { |
||||
|
content: ' '; |
||||
|
position: absolute; |
||||
|
right: 0; |
||||
|
top: 0; |
||||
|
width: 1px; |
||||
|
bottom: 0; |
||||
|
border-right: 1px solid $color; |
||||
|
color: $color; |
||||
|
transform-origin: 100% 0; |
||||
|
transform: scaleX(0.5); |
||||
|
} |
||||
@ -0,0 +1,46 @@ |
|||||
|
//globl transition css |
||||
|
|
||||
|
/*fade*/ |
||||
|
.fade-enter-active, |
||||
|
.fade-leave-active { |
||||
|
transition: opacity 0.28s; |
||||
|
} |
||||
|
|
||||
|
.fade-enter, |
||||
|
.fade-leave-active { |
||||
|
opacity: 0; |
||||
|
} |
||||
|
|
||||
|
/*fade-transform*/ |
||||
|
.fade-transform-leave-active, |
||||
|
.fade-transform-enter-active { |
||||
|
transition: all .5s; |
||||
|
} |
||||
|
.fade-transform-enter { |
||||
|
opacity: 0; |
||||
|
transform: translateX(-30px); |
||||
|
} |
||||
|
.fade-transform-leave-to { |
||||
|
opacity: 0; |
||||
|
transform: translateX(30px); |
||||
|
} |
||||
|
|
||||
|
/*fade*/ |
||||
|
.breadcrumb-enter-active, |
||||
|
.breadcrumb-leave-active { |
||||
|
transition: all .5s; |
||||
|
} |
||||
|
|
||||
|
.breadcrumb-enter, |
||||
|
.breadcrumb-leave-active { |
||||
|
opacity: 0; |
||||
|
transform: translateX(20px); |
||||
|
} |
||||
|
|
||||
|
.breadcrumb-move { |
||||
|
transition: all .5s; |
||||
|
} |
||||
|
|
||||
|
.breadcrumb-leave-active { |
||||
|
position: absolute; |
||||
|
} |
||||
@ -0,0 +1,19 @@ |
|||||
|
//sidebar |
||||
|
$menuBg: #304156; |
||||
|
$subMenuBg: #1f2d3d; |
||||
|
$menuHover: #001528; |
||||
|
|
||||
|
// public |
||||
|
$appWidth: 750px; |
||||
|
$appBg: #ededed; |
||||
|
|
||||
|
$colorWhite: #fff; |
||||
|
$errorColor: #f45438; |
||||
|
|
||||
|
// login |
||||
|
$versionColor: #aaa; |
||||
|
$borderBottomColor: #ccc; |
||||
|
$inputColor: #323232; |
||||
|
$placeholderColor: #c2c2c2; |
||||
|
$vertifyColor: #009ee0; |
||||
|
$loginButtonColor: #0099e0; |
||||
@ -0,0 +1,200 @@ |
|||||
|
@import './common/icon.scss'; |
||||
|
@import './common/mixin.scss'; |
||||
|
// @import './common/transition.scss'; |
||||
|
@import './common/variables.scss'; |
||||
|
@import './common/border.scss'; |
||||
|
@import './common/common.scss'; |
||||
|
|
||||
|
* { |
||||
|
margin: 0; |
||||
|
padding: 0; |
||||
|
} |
||||
|
|
||||
|
img { |
||||
|
max-width: 100%; |
||||
|
vertical-align: middle; |
||||
|
} |
||||
|
|
||||
|
html, |
||||
|
body { |
||||
|
width: 100%; |
||||
|
height: 100%; |
||||
|
} |
||||
|
|
||||
|
@media screen and (min-width: 640px) { |
||||
|
body body, |
||||
|
body html, |
||||
|
html body, |
||||
|
html html { |
||||
|
width: 50%; |
||||
|
margin: 0 auto; |
||||
|
left: 25%; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
body { |
||||
|
min-height: 100%; |
||||
|
line-height: 1.6; |
||||
|
background-color: #ededed; |
||||
|
font-family: PingFang-SC-Regular, Arial, sans-serif; |
||||
|
font-size: 14px; |
||||
|
color: #323232; |
||||
|
} |
||||
|
|
||||
|
button { |
||||
|
border: none; |
||||
|
outline: none; |
||||
|
background: none; |
||||
|
} |
||||
|
|
||||
|
*, |
||||
|
*:before, |
||||
|
*:after { |
||||
|
box-sizing: border-box; |
||||
|
} |
||||
|
|
||||
|
a, |
||||
|
a:focus, |
||||
|
a:hover { |
||||
|
cursor: pointer; |
||||
|
outline: none; |
||||
|
text-decoration: none; |
||||
|
} |
||||
|
|
||||
|
div:focus { |
||||
|
outline: none; |
||||
|
} |
||||
|
|
||||
|
input::-webkit-input-placeholder, |
||||
|
textarea::-webkit-input-placeholder { |
||||
|
color: #cecece; |
||||
|
} |
||||
|
|
||||
|
.clearfix { |
||||
|
&:after { |
||||
|
visibility: hidden; |
||||
|
display: block; |
||||
|
font-size: 0; |
||||
|
content: ' '; |
||||
|
clear: both; |
||||
|
height: 0; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.vertical-middle:after { |
||||
|
content: ''; |
||||
|
width: 0; |
||||
|
height: 100%; |
||||
|
display: inline-block; |
||||
|
vertical-align: middle; |
||||
|
} |
||||
|
|
||||
|
#app { |
||||
|
width: 100%; |
||||
|
max-width: 750px; |
||||
|
height: 100%; |
||||
|
margin: 0 auto; |
||||
|
} |
||||
|
|
||||
|
@media screen and (min-width: 640px) { |
||||
|
.footer-toolbar { |
||||
|
width: 50% !important; |
||||
|
margin: 0 auto; |
||||
|
left: 25% !important; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
select, |
||||
|
textarea, |
||||
|
input { |
||||
|
vertical-align: middle; |
||||
|
border: 0; |
||||
|
background: none; |
||||
|
-webkit-border-radius: 0; |
||||
|
border-radius: 0; |
||||
|
outline: none; |
||||
|
-webkit-appearance: none; |
||||
|
-webkit-tap-highlight-color: transparent; |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
|
||||
|
ul, |
||||
|
ul li { |
||||
|
list-style: none; |
||||
|
} |
||||
|
|
||||
|
p { |
||||
|
word-break: break-word; |
||||
|
} |
||||
|
.el-input--suffix .el-input__inner { |
||||
|
height: 28px; |
||||
|
line-height: 28px; |
||||
|
background: #EDEDED; |
||||
|
border: none; |
||||
|
border-radius: 16px; |
||||
|
} |
||||
|
.el-input__icon { |
||||
|
line-height: 28px!important; |
||||
|
} |
||||
|
.el-dropdown-menu { |
||||
|
padding: 5px 0!important; |
||||
|
} |
||||
|
.el-dropdown-menu__item { |
||||
|
border-bottom: 1px solid #E3E3E3; |
||||
|
text-align: center; |
||||
|
font-size: 14px!important; |
||||
|
color: #333333!important; |
||||
|
margin: 0 10px!important; |
||||
|
padding: 0 10px!important; |
||||
|
} |
||||
|
.el-dropdown-menu__item:nth-last-child(2) { |
||||
|
border-bottom: none; |
||||
|
} |
||||
|
|
||||
|
.md-example-child-steps-5 { |
||||
|
height: 40px!important; |
||||
|
} |
||||
|
.md-steps.md-steps-horizontal { |
||||
|
padding: 5px 16px 0px!important; |
||||
|
} |
||||
|
.md-steps.md-steps-horizontal .bar.horizontal-bar .bar-inner { |
||||
|
width: 100%; |
||||
|
height: 1px; |
||||
|
background-color: #00A0E8; |
||||
|
} |
||||
|
.md-steps .step-wrapper .text-wrapper { |
||||
|
padding-top: 0px!important; |
||||
|
|
||||
|
.name { |
||||
|
line-height: 15px!important; |
||||
|
font-size: 11px!important; |
||||
|
color: #C4C4C4!important; |
||||
|
} |
||||
|
} |
||||
|
.md-steps.md-steps-horizontal .step-wrapper.reached .text-wrapper .name { |
||||
|
color: #333333!important; |
||||
|
} |
||||
|
.md-steps.md-steps-horizontal .step-wrapper.current .text-wrapper .name { |
||||
|
color: #00A0E8!important; |
||||
|
} |
||||
|
.md-steps .icon-wrapper .step-node-default-icon { |
||||
|
width: 10px!important; |
||||
|
height: 10px!important; |
||||
|
} |
||||
|
.md-steps .step-wrapper.reached .icon-wrapper .step-node-default-icon { |
||||
|
background: #00A0E8!important; |
||||
|
width: 12px!important; |
||||
|
height: 12px!important; |
||||
|
} |
||||
|
.md-steps .step-wrapper.current .icon-wrapper .step-node-default-icon { |
||||
|
background: #00A0E8!important; |
||||
|
width: 12px!important; |
||||
|
height: 12px!important; |
||||
|
} |
||||
|
.md-steps .step-wrapper, .md-steps .step-wrapper .icon-wrapper { |
||||
|
min-width: 16px!important; |
||||
|
min-height: 16px!important; |
||||
|
} |
||||
|
.md-steps.md-steps-horizontal .step-wrapper { |
||||
|
margin: 0 5px!important; |
||||
|
} |
||||
@ -1,63 +1,131 @@ |
|||||
/** |
/** |
||||
* Created by jerry on 2017/4/14. |
* Created by jerry on 2017/4/14. |
||||
*/ |
*/ |
||||
|
import homeApi from "../models/home-model.js"; |
||||
var SIGN_REGEXP = /([yMdhsm])(\1*)/g |
var SIGN_REGEXP = /([yMdhsm])(\1*)/g |
||||
var DEFAULT_PATTERN = 'yyyy-MM-dd' |
var DEFAULT_PATTERN = 'yyyy-MM-dd' |
||||
function padding (s, len) { |
|
||||
let l = len - (s + '').length |
|
||||
for (var i = 0; i < l; i++) { s = '0' + s } |
|
||||
return s |
|
||||
|
function padding(s, len) { |
||||
|
let l = len - (s + '').length |
||||
|
for (var i = 0; i < l; i++) { s = '0' + s } |
||||
|
return s |
||||
}; |
}; |
||||
|
|
||||
export default { |
export default { |
||||
getQueryStringByName: function (name) { |
|
||||
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i') |
|
||||
var r = window.location.search.substr(1).match(reg) |
|
||||
var context = '' |
|
||||
if (r != null) { context = r[2] } |
|
||||
reg = null |
|
||||
r = null |
|
||||
return context === null || context === '' || context === 'undefined' ? '' : context |
|
||||
}, |
|
||||
formatDate: { |
|
||||
|
|
||||
format: function (date, pattern) { |
|
||||
pattern = pattern || DEFAULT_PATTERN |
|
||||
return pattern.replace(SIGN_REGEXP, function ($0) { |
|
||||
switch ($0.charAt(0)) { |
|
||||
case 'y': return padding(date.getFullYear(), $0.length) |
|
||||
case 'M': return padding(date.getMonth() + 1, $0.length) |
|
||||
case 'd': return padding(date.getDate(), $0.length) |
|
||||
case 'w': return date.getDay() + 1 |
|
||||
case 'h': return padding(date.getHours(), $0.length) |
|
||||
case 'm': return padding(date.getMinutes(), $0.length) |
|
||||
case 's': return padding(date.getSeconds(), $0.length) |
|
||||
} |
|
||||
}) |
|
||||
|
getQueryStringByName: function (name) { |
||||
|
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i') |
||||
|
var r = window.location.search.substr(1).match(reg) |
||||
|
var context = '' |
||||
|
if (r != null) { context = r[2] } |
||||
|
reg = null |
||||
|
r = null |
||||
|
return context === null || context === '' || context === 'undefined' ? '' : context |
||||
}, |
}, |
||||
parse: function (dateString, pattern) { |
|
||||
var matchs1 = pattern.match(SIGN_REGEXP) |
|
||||
var matchs2 = dateString.match(/(\d)+/g) |
|
||||
if (matchs1.length === matchs2.length) { |
|
||||
var _date = new Date(1970, 0, 1) |
|
||||
for (var i = 0; i < matchs1.length; i++) { |
|
||||
var _int = parseInt(matchs2[i]) |
|
||||
var sign = matchs1[i] |
|
||||
switch (sign.charAt(0)) { |
|
||||
case 'y': _date.setFullYear(_int); break |
|
||||
case 'M': _date.setMonth(_int - 1); break |
|
||||
case 'd': _date.setDate(_int); break |
|
||||
case 'h': _date.setHours(_int); break |
|
||||
case 'm': _date.setMinutes(_int); break |
|
||||
case 's': _date.setSeconds(_int); break |
|
||||
} |
|
||||
|
formatDate: { |
||||
|
|
||||
|
format: function (date, pattern) { |
||||
|
pattern = pattern || DEFAULT_PATTERN |
||||
|
return pattern.replace(SIGN_REGEXP, function ($0) { |
||||
|
switch ($0.charAt(0)) { |
||||
|
case 'y': return padding(date.getFullYear(), $0.length) |
||||
|
case 'M': return padding(date.getMonth() + 1, $0.length) |
||||
|
case 'd': return padding(date.getDate(), $0.length) |
||||
|
case 'w': return date.getDay() + 1 |
||||
|
case 'h': return padding(date.getHours(), $0.length) |
||||
|
case 'm': return padding(date.getMinutes(), $0.length) |
||||
|
case 's': return padding(date.getSeconds(), $0.length) |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
parse: function (dateString, pattern) { |
||||
|
var matchs1 = pattern.match(SIGN_REGEXP) |
||||
|
var matchs2 = dateString.match(/(\d)+/g) |
||||
|
if (matchs1.length === matchs2.length) { |
||||
|
var _date = new Date(1970, 0, 1) |
||||
|
for (var i = 0; i < matchs1.length; i++) { |
||||
|
var _int = parseInt(matchs2[i]) |
||||
|
var sign = matchs1[i] |
||||
|
switch (sign.charAt(0)) { |
||||
|
case 'y': _date.setFullYear(_int); break |
||||
|
case 'M': _date.setMonth(_int - 1); break |
||||
|
case 'd': _date.setDate(_int); break |
||||
|
case 'h': _date.setHours(_int); break |
||||
|
case 'm': _date.setMinutes(_int); break |
||||
|
case 's': _date.setSeconds(_int); break |
||||
|
} |
||||
|
} |
||||
|
return _date |
||||
|
} |
||||
|
return null |
||||
} |
} |
||||
return _date |
|
||||
} |
|
||||
return null |
|
||||
|
|
||||
|
}, |
||||
|
}; |
||||
|
|
||||
|
export function isEmpty(val) { |
||||
|
return ( |
||||
|
val === undefined || |
||||
|
val === null || |
||||
|
val === "undefined" || |
||||
|
val === "") |
||||
|
} |
||||
|
|
||||
|
export function countPartner() { |
||||
|
|
||||
|
var estateId = ""; |
||||
|
let estateStr = localStorage.getItem("estate") || ""; |
||||
|
if (!estateStr) { |
||||
|
} else { |
||||
|
let estateArr = estateStr.split("&"); |
||||
|
estateId = estateArr[0]; |
||||
} |
} |
||||
|
|
||||
|
if(estateId !== ""){ |
||||
|
let keyStr = "1hjz_open_housing_log_" + estateId |
||||
|
let open_housing = localStorage.getItem(keyStr) || ""; |
||||
|
|
||||
} |
|
||||
|
if (!open_housing) { |
||||
|
return new Promise((resolve, reject) => { |
||||
|
var params = { |
||||
|
buryingPointType: 0, |
||||
|
housingEstateId: estateId, |
||||
|
timeStr: getTime(Date.now()) |
||||
|
}; |
||||
|
homeApi.countPartner(params).then(res => { |
||||
|
localStorage.setItem(keyStr, getTime(Date.now())) |
||||
|
resolve(); |
||||
|
}); |
||||
|
}); |
||||
|
}else{ |
||||
|
if(open_housing !== getTime(Date.now())){ |
||||
|
return new Promise((resolve, reject) => { |
||||
|
var params = { |
||||
|
buryingPointType: 0, |
||||
|
housingEstateId: estateId, |
||||
|
timeStr: getTime(Date.now()) |
||||
|
}; |
||||
|
homeApi.countPartner(params).then(res => { |
||||
|
localStorage.setItem(keyStr, getTime(Date.now())) |
||||
|
resolve(); |
||||
|
}); |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
} |
} |
||||
|
|
||||
|
export function getTime(time) { |
||||
|
let date = new Date(time); |
||||
|
let year = date.getFullYear(); |
||||
|
let month = checkTime(date.getMonth() + 1); |
||||
|
let day = checkTime(date.getDate()); |
||||
|
let str = year + "-" + month + "-" + day; |
||||
|
return str; |
||||
|
} |
||||
|
export function checkTime(i) { |
||||
|
if (i < 10) { |
||||
|
i = "0" + i; |
||||
|
} |
||||
|
return i; |
||||
|
} |
||||
@ -0,0 +1,30 @@ |
|||||
|
import utilsModel from "./utils-model"; |
||||
|
import chooseCommunity from "../api/chooseCommunity"; |
||||
|
|
||||
|
export default { |
||||
|
getAddressInfo : (params) => |
||||
|
utilsModel |
||||
|
.config(chooseCommunity.getAddressInfo) |
||||
|
.request({ |
||||
|
params : params, |
||||
|
}), |
||||
|
getEstateInfo : (params) => |
||||
|
utilsModel |
||||
|
.config(chooseCommunity.getEstateInfo) |
||||
|
.request({ |
||||
|
params : params, |
||||
|
}), |
||||
|
|
||||
|
getEstateList : (params) => |
||||
|
utilsModel |
||||
|
.config(chooseCommunity.getEstateList) |
||||
|
.request({ |
||||
|
params : params, |
||||
|
}), |
||||
|
getGoodsTemlate : (params) => |
||||
|
utilsModel |
||||
|
.config(chooseCommunity.getGoodsTemlate) |
||||
|
.request({ |
||||
|
params : params, |
||||
|
}) |
||||
|
} |
||||
@ -0,0 +1,74 @@ |
|||||
|
import Vue from "vue"; |
||||
|
import wx from "weixin-js-sdk"; |
||||
|
import axios from "axios"; |
||||
|
import wxShareModel from "../models/wxShare-model.js"; |
||||
|
let instance = axios.create(); |
||||
|
//引入BMap
|
||||
|
import BMap from "BMap"; |
||||
|
Vue.prototype.wxLocation = function () { |
||||
|
return new Promise((resolve, reject) => { |
||||
|
wxShareModel.getWXCheck().then(response => { |
||||
|
if (response.code != 0) { |
||||
|
return; |
||||
|
} |
||||
|
var jsApiSignConfig = response.response.jsApiSignConfig; |
||||
|
wx.config({ |
||||
|
debug: false, // 开启调试模式,开发时可以开启
|
||||
|
appId: jsApiSignConfig.appId, // 必填,公众号的唯一标识 由接口返回
|
||||
|
timestamp: jsApiSignConfig.timestamp, // 必填,生成签名的时间戳 由接口返回
|
||||
|
nonceStr: jsApiSignConfig.nonceStr, // 必填,生成签名的随机串 由接口返回
|
||||
|
signature: jsApiSignConfig.signature, // 必填,签名 由接口返回
|
||||
|
jsApiList: [ |
||||
|
'checkJsApi', 'openLocation', 'getLocation' |
||||
|
], |
||||
|
}); |
||||
|
wx.checkJsApi({ |
||||
|
jsApiList: ['getLocation'], |
||||
|
success: function (res) { |
||||
|
if (res.checkResult.getLocation == false) { |
||||
|
alert('你的微信版本太低,不支持微信JS接口,请升级到最新的微信版本!'); |
||||
|
return ""; |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
wx.ready(() => { |
||||
|
// 首次进入页面进会弹窗确认地理位置
|
||||
|
if (localStorage.getItem("latitude") == null) { |
||||
|
wx.getLocation({ |
||||
|
type: "gcj02", // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
|
||||
|
success: function (res) { |
||||
|
console.log('res:' + res); |
||||
|
// alert('res.latitude:' + res.latitude + '------res.longitude:' + res.longitude);
|
||||
|
// localStorage.setItem("latitude", res.latitude);
|
||||
|
// localStorage.setItem("longitude", res.longitude);
|
||||
|
$.ajax({ |
||||
|
url: 'http://api.map.baidu.com/geocoder/v2/?ak=a79bFu054xIbE23jlynkSXX20F9yGD4G&callback=renderReverse&location=' + res.latitude + ',' + res.longitude + '&output=json&pois=1', |
||||
|
type: "get", |
||||
|
dataType: "jsonp", |
||||
|
jsonp: "callback", |
||||
|
success: function (data) { |
||||
|
// alert('data.result.location.lng:' + data.result.location.lng + '-----data.result.location.lat:' + data.result.location.lat);
|
||||
|
localStorage.setItem("latitude", data.result.location.lat); |
||||
|
localStorage.setItem("longitude", data.result.location.lng); |
||||
|
resolve("定位成功") |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
cancel: function () { |
||||
|
alert("拒绝定位"); |
||||
|
resolve("定位失败") |
||||
|
} |
||||
|
}); |
||||
|
} else { |
||||
|
resolve("已经有定位") |
||||
|
} |
||||
|
// alert("lat:" + localStorage.getItem("latitude") + ";lng:" + localStorage.getItem("longitude"));
|
||||
|
wx.error(function (res) { |
||||
|
resolve("定位失败") |
||||
|
}); |
||||
|
}); |
||||
|
}); |
||||
|
}) |
||||
|
|
||||
|
} |
||||
|
|
||||
@ -0,0 +1,20 @@ |
|||||
|
/** |
||||
|
* 本文件用于 keep-alive的页面返回离开前的位置使用 |
||||
|
* 未知 Vue-Router scrollBehavior 记录有误,所以使用手动记录位置。 |
||||
|
*/ |
||||
|
var myScroll = { |
||||
|
activated() { |
||||
|
console.log("pageNum---pages:"+this.pageNum,this.pages) |
||||
|
if (this.pageNum < this.pages) this.busy = false |
||||
|
|
||||
|
this.$nextTick(function() { |
||||
|
const position = this.$route.meta.savedPosition // 返回页面取出来
|
||||
|
window.scroll(0, position) |
||||
|
}) |
||||
|
}, |
||||
|
deactivated() { |
||||
|
this.busy = true |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
export default myScroll |
||||
@ -0,0 +1,485 @@ |
|||||
|
<template> |
||||
|
<form action="javascript:return true"> |
||||
|
<div class="container" style="background:#fff"> |
||||
|
<div class="top f-bb-gray"> |
||||
|
<img src="../assets/images/icon/arrow-left.png" v-on:click="goBack" />选择小区 |
||||
|
</div> |
||||
|
<!--搜索和筛选--> |
||||
|
<div class="f-flex f-flex-justify f-mr16 f-ml15 " style="background: #EDEDED;margin-top:5px;height: 35px;"> |
||||
|
<div class="f-flex f-mr16 f-ml15 f-ws-nowrap" @click="show = true"> |
||||
|
<div :class="show?'f-font-13 text-blue f-mr3':'f-font-13 f-text-666 f-mr3'"> |
||||
|
{{defaultCity}} |
||||
|
</div> |
||||
|
<div :class="show?'triangle_border_top':'triangle_border_down'"> |
||||
|
</div> |
||||
|
</div> |
||||
|
<el-input type="search" style="border-left: 1px solid #c1c1c1;" placeholder="请输入小区名称" v-model="communityName" @keyup.enter.native="searchByName" @clear="clear" clearable> |
||||
|
<i slot="prefix" class="el-input__icon el-icon-search"></i> |
||||
|
</el-input> |
||||
|
</div> |
||||
|
<div class="content" style="margin-bottom: 50px;"> |
||||
|
<div v-if="nowEstate.length > 0" style="border-bottom: 10px solid #f3f3f3;"> |
||||
|
<div class="title"> |
||||
|
<span class="f-ml15 f-font-14 f-text-666">当前小区</span> |
||||
|
</div> |
||||
|
<div class="f-flex f-flex-justify f-h60 f-ml15 f-mr15" style="border-bottom: 1px solid #f3f3f3;"> |
||||
|
<div> |
||||
|
<div class="f-text-333 f-font-16">{{nowEstate}}</div> |
||||
|
<div class="f-text-666 f-font-12">{{nowAddress}}</div> |
||||
|
</div> |
||||
|
<div class="f-text-666 f-font-12 "></div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div> |
||||
|
<div class="title"> |
||||
|
<span class="f-ml15 f-font-14 f-text-666">附近小区</span> |
||||
|
</div> |
||||
|
<div v-for="item in communityList" :key="item.housingEstateId" v-if="item.housingEstateId !== estateId" class="f-flex f-flex-justify f-h60 f-ml15 f-mr15" style="border-bottom: 1px solid #f3f3f3;" @click="chooseCommunity(item)"> |
||||
|
<div> |
||||
|
<div class="f-text-333 f-font-16">{{item.housingEstateName}}</div> |
||||
|
<div class="f-text-666 f-font-12">{{item.prefixAddress}}</div> |
||||
|
</div> |
||||
|
<div class="f-text-666 f-font-12 ">距离{{item.distance}}m</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- 无限加载 --> |
||||
|
<div :class="loadMoreHide ? 'load-more-hide' : 'load-more-normal'" v-infinite-scroll="fetchCommunityList" infinite-scroll-disabled="busy" infinite-scroll-distance="10"> |
||||
|
<span class="load-more-tips f-flex f-flex-center" v-show="!noRecords && loadMoreTips" style="padding-top:4px">没有更多了</span> |
||||
|
</div> |
||||
|
</div> |
||||
|
<popup-picker :show="show" @cancel="cancel" @confirm="confirm" :data-list="addressData" :value="addressValue"></popup-picker> |
||||
|
<!-- Loading --> |
||||
|
<loading :show="showLoading" text="loading"></loading> |
||||
|
</div> |
||||
|
</form> |
||||
|
</template> |
||||
|
<script> |
||||
|
import myScroll from "@/utils/scroll"; |
||||
|
import chooseCommunityApi from "../models/choose-community"; |
||||
|
import homeApi from "../models/home-model.js"; |
||||
|
import { Alert, Toast, Loading } from "vux"; |
||||
|
import popupPicker from "../components/popup-picker.vue"; |
||||
|
import chooseCommunity from "../api/chooseCommunity"; |
||||
|
import { countPartner } from "@/common/util"; |
||||
|
import { isEmpty } from "@/common/util"; |
||||
|
export default { |
||||
|
components: { |
||||
|
Toast, |
||||
|
Loading, |
||||
|
Alert, |
||||
|
"popup-picker": popupPicker |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
show: false, |
||||
|
templateNo: this.$route.query.templateNo || "", |
||||
|
defaultCity: "天河区", |
||||
|
districtId: "440106000", //区id 默认值 不需要去掉 |
||||
|
provinceId: "", |
||||
|
cityId: "", |
||||
|
estateId: "", |
||||
|
nowEstate: "", |
||||
|
nowAddress: "", |
||||
|
lat: -1, |
||||
|
lng: -1, |
||||
|
addressData: [], |
||||
|
addressValue: [ |
||||
|
"440000000&广东省", |
||||
|
"440100000&广州市", |
||||
|
"440106000&天河区&2" |
||||
|
], |
||||
|
communityName: "", |
||||
|
communityList: [], |
||||
|
pageSize: 10, |
||||
|
pageNum: 0, |
||||
|
isRequesting: false, |
||||
|
loadMoreHide: false, |
||||
|
loadMoreTips: false, |
||||
|
loadingShow: false, // 加载显示标识 |
||||
|
busy: false, // 判断是否还继续滚动加载 |
||||
|
noRecords: false, // 是否还有列表记录 |
||||
|
noRecordsText: "没有当前城市的小区数据", |
||||
|
showLoading: false |
||||
|
}; |
||||
|
}, |
||||
|
beforeRouteLeave(to, from, next) { |
||||
|
from.meta.keepAlive = false; |
||||
|
next(); |
||||
|
}, |
||||
|
mixins: [myScroll], |
||||
|
methods: { |
||||
|
getCity() { |
||||
|
let _this = this; |
||||
|
var geolocation = new BMap.Geolocation(); |
||||
|
|
||||
|
geolocation.getCurrentPosition(function(r) { |
||||
|
if (this.getStatus() == BMAP_STATUS_SUCCESS) { |
||||
|
// if(r.accuracy==null){ |
||||
|
// alert('您已拒绝地理位置授权'); |
||||
|
// //用户决绝地理位置授权 |
||||
|
// return; |
||||
|
// }else{ |
||||
|
const myGeo = new BMap.Geocoder(); |
||||
|
myGeo.getLocation(new BMap.Point(r.point.lng, r.point.lat), data => { |
||||
|
if (data.addressComponents) { |
||||
|
const result = data.addressComponents; |
||||
|
const location = { |
||||
|
creditLongitude: r.point.lng, // 经度 |
||||
|
creditLatitude: r.point.lat, // 纬度 |
||||
|
creditProvince: result.province || "", // 省 |
||||
|
creditCity: result.city || "", // 市 |
||||
|
creditArea: result.district || "", // 区 |
||||
|
creditStreet: |
||||
|
(result.street || "") + (result.streetNumber || "") // 街道 |
||||
|
}; |
||||
|
_this.location = location; |
||||
|
localStorage.setItem("latitude", location.creditLatitude); |
||||
|
localStorage.setItem("longitude", location.creditLongitude); |
||||
|
// alert( |
||||
|
// "省-" + |
||||
|
// location.creditProvince + |
||||
|
// ";市-" + |
||||
|
// location.creditCity + |
||||
|
// ";区-" + |
||||
|
// location.creditArea + |
||||
|
// ";街道-" + |
||||
|
// location.creditStreet + |
||||
|
// ";lat-" + |
||||
|
// location.creditLatitude + |
||||
|
// ";lng-" + |
||||
|
// location.creditLongitude |
||||
|
// ); |
||||
|
} |
||||
|
}); |
||||
|
// } |
||||
|
} |
||||
|
}); |
||||
|
}, |
||||
|
//返回上一页 |
||||
|
goBack() { |
||||
|
// history.go(-1) |
||||
|
let estateStr = localStorage.getItem("estate") || ""; |
||||
|
if (!estateStr || estateStr.length == 0) { |
||||
|
this.$vux.toast.text("请选择一个小区", "middle"); |
||||
|
return; |
||||
|
} |
||||
|
if (isEmpty(this.templateNo)) { |
||||
|
this.$router.push({ |
||||
|
name: "首页" |
||||
|
}); |
||||
|
} else { |
||||
|
history.go(-1); |
||||
|
} |
||||
|
}, |
||||
|
//确定时保存记录 |
||||
|
confirm(list) { |
||||
|
console.log("list:" + list); |
||||
|
// let addressArr = list.split(","); |
||||
|
let arr = list[2].split("&") || ""; |
||||
|
this.districtId = arr[0]; |
||||
|
this.defaultCity = arr[1]; |
||||
|
this.addressValue = list.slice(); |
||||
|
console.log("arr:" + this.defaultCity); |
||||
|
// localStorage.setItem("cityName", list); |
||||
|
this.show = false; |
||||
|
this.pageNum = 0; |
||||
|
this.busy = false; |
||||
|
this.loadMoreHide = false; |
||||
|
this.loadMoreTips = false; |
||||
|
this.communityList = []; |
||||
|
this.fetchCommunityList(); |
||||
|
}, |
||||
|
cancel() { |
||||
|
this.show = false; |
||||
|
}, |
||||
|
clear() { |
||||
|
console.log("communityName11:" + this.communityName); |
||||
|
// 清除搜索条件 |
||||
|
this.showFlag = false; |
||||
|
this.communityName = ""; |
||||
|
this.busy = false; |
||||
|
this.pageNum = 0; |
||||
|
this.loadMoreHide = false; |
||||
|
this.loadMoreTips = false; |
||||
|
this.communityList = []; |
||||
|
|
||||
|
this.fetchCommunityList(); |
||||
|
}, |
||||
|
searchByName(event) { |
||||
|
this.showFlag = false; |
||||
|
if (event.keyCode === 13) { |
||||
|
event.preventDefault(); // 禁止键盘默认事件 |
||||
|
this.pageNum = 0; |
||||
|
this.busy = false; |
||||
|
this.loadMoreHide = false; |
||||
|
this.loadMoreTips = false; |
||||
|
this.communityList = []; |
||||
|
this.fetchCommunityList(); |
||||
|
} |
||||
|
}, |
||||
|
fetchCommunityList() { |
||||
|
if (this.isRequesting || this.loadMoreHide) { |
||||
|
return; |
||||
|
} |
||||
|
this.isRequesting = true; |
||||
|
//this.busy = true; |
||||
|
var _this = this; |
||||
|
console.log("communityName:" + this.defaultCity); |
||||
|
return new Promise((resolve, reject) => { |
||||
|
var params = { |
||||
|
pageNo: this.pageNum, |
||||
|
pageSize: this.pageSize, |
||||
|
districtId: this.districtId, |
||||
|
estateName: this.communityName, |
||||
|
draw: 0, |
||||
|
lat: this.lat, |
||||
|
lng: this.lng |
||||
|
}; |
||||
|
chooseCommunityApi.getEstateList(params).then(res => { |
||||
|
_this.showLoading = false; |
||||
|
_this.isRequesting = false; |
||||
|
if (res.code == 0) { |
||||
|
_this.communityList = _this.communityList.concat(res.dataList); |
||||
|
if (!_this.communityList.length) _this.noRecords = true; |
||||
|
|
||||
|
if (_this.pageSize > res.dataList.length) { |
||||
|
_this.busy = true; // 已经是最后一页了,不需要再触发滚动加载了 |
||||
|
_this.loadMoreHide = true; |
||||
|
_this.loadMoreTips = true; |
||||
|
} else { |
||||
|
_this.busy = false; |
||||
|
_this.pageNum++; |
||||
|
_this.loadMoreHide = false; |
||||
|
_this.loadMoreTips = false; |
||||
|
} |
||||
|
// this.communityList = res.dataList; |
||||
|
} else { |
||||
|
this.$vux.toast.text(res.msg, "middle"); |
||||
|
} |
||||
|
resolve(); |
||||
|
}); |
||||
|
}); |
||||
|
}, |
||||
|
chooseCommunity(item) { |
||||
|
this.addressValue = [ |
||||
|
item.provinceId + "&" + item.provinceName, |
||||
|
item.cityId + "&" + item.cityName, |
||||
|
item.districtId + "&" + item.districtName + "&" + item.merchantNo |
||||
|
]; |
||||
|
|
||||
|
this.$vux.confirm.show({ |
||||
|
title: "确定选择", |
||||
|
content: item.cityName+item.districtName +"【" + item.housingEstateName + "】", |
||||
|
confirmText: "确定", |
||||
|
cancelText: "取消", |
||||
|
onCancel: () => {}, |
||||
|
onConfirm: () => { |
||||
|
this.estateId = item.housingEstateId; |
||||
|
if (isEmpty(this.templateNo)) { |
||||
|
localStorage.setItem("cityName", this.addressValue.slice()); |
||||
|
localStorage.setItem( |
||||
|
"estate", |
||||
|
item.housingEstateId + "&" + item.housingEstateName |
||||
|
); |
||||
|
this.estateId = item.housingEstateId; |
||||
|
countPartner(); |
||||
|
this.$router.push({ |
||||
|
name: "首页" |
||||
|
}); |
||||
|
} else { |
||||
|
chooseCommunityApi |
||||
|
.getGoodsTemlate({ |
||||
|
templateNo: this.templateNo, |
||||
|
housingEstateId: this.estateId ? this.estateId : "" |
||||
|
}) |
||||
|
.then(res => { |
||||
|
this.showLoading = false; |
||||
|
if (res.code === 0) { |
||||
|
localStorage.setItem("cityName", this.addressValue.slice()); |
||||
|
localStorage.setItem( |
||||
|
"estate", |
||||
|
item.housingEstateId + "&" + item.housingEstateName |
||||
|
); |
||||
|
countPartner(); |
||||
|
//存在商品 |
||||
|
window.location.href = |
||||
|
"/mall/web/vgoods/detail/" + res.response.goodsNo; |
||||
|
} else { |
||||
|
this.$vux.confirm.show({ |
||||
|
title: "无服务", |
||||
|
content: item.housingEstateName + "暂无提供此商品服务", |
||||
|
confirmText: "确定", |
||||
|
onConfirm: () => { |
||||
|
localStorage.setItem( |
||||
|
"cityName", |
||||
|
this.addressValue.slice() |
||||
|
); |
||||
|
localStorage.setItem( |
||||
|
"estate", |
||||
|
item.housingEstateId + "&" + item.housingEstateName |
||||
|
); |
||||
|
this.$router.push({ |
||||
|
name: "首页" |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
}) |
||||
|
.catch(error => { |
||||
|
this.showLoading = false; |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
// this.$router.push({ |
||||
|
// name: "首页" |
||||
|
// }); |
||||
|
}, |
||||
|
ShareWenXin() { |
||||
|
var merchantNo = this.merchantNo; |
||||
|
this.wxShare({ |
||||
|
merchantNo: merchantNo, |
||||
|
source: 0, |
||||
|
url: encodeURIComponent(location.href), |
||||
|
shareUrl: encodeURIComponent("http://" + location.host + "/v2/home") |
||||
|
}); |
||||
|
}, |
||||
|
countExtend() { |
||||
|
return new Promise((resolve, reject) => { |
||||
|
var params = { |
||||
|
buryingPointType: 0, |
||||
|
salesmanUniqueIdentity: this.uniqueId, |
||||
|
timeStr: this.getTime(Date.now()) |
||||
|
}; |
||||
|
homeApi.countExtend(params).then(res => { |
||||
|
resolve(); |
||||
|
}); |
||||
|
}); |
||||
|
}, |
||||
|
|
||||
|
getTime(time) { |
||||
|
let date = new Date(time); |
||||
|
let year = date.getFullYear(); |
||||
|
let month = this.checkTime(date.getMonth() + 1); |
||||
|
let day = this.checkTime(date.getDate()); |
||||
|
let str = year + "-" + month + "-" + day; |
||||
|
return str; |
||||
|
}, |
||||
|
checkTime(i) { |
||||
|
if (i < 10) { |
||||
|
i = "0" + i; |
||||
|
} |
||||
|
return i; |
||||
|
}, |
||||
|
getAddressInfo() { |
||||
|
this.getId(); |
||||
|
this.showLoading = true; |
||||
|
return new Promise((resolve, reject) => { |
||||
|
chooseCommunityApi |
||||
|
.getAddressInfo({ |
||||
|
cityId: this.cityId ? this.cityId : "", |
||||
|
estateId: this.estateId ? this.estateId : "", |
||||
|
lat: this.lat, |
||||
|
lng: this.lng |
||||
|
}) |
||||
|
.then(res => { |
||||
|
if (res.response.allAddress && res.response.userAddress) { |
||||
|
this.addressData = res.response.allAddress; |
||||
|
this.flag = true; |
||||
|
this.fetchCommunityList(); |
||||
|
resolve(); |
||||
|
} |
||||
|
this.showLoading = false; |
||||
|
}) |
||||
|
.catch(error => { |
||||
|
this.showLoading = false; |
||||
|
}); |
||||
|
}); |
||||
|
}, |
||||
|
getId() { |
||||
|
let str = localStorage.getItem("cityName") || ""; |
||||
|
let estateStr = localStorage.getItem("estate") || ""; |
||||
|
this.lat = localStorage.getItem("latitude") || -1; |
||||
|
this.lng = localStorage.getItem("longitude") || -1; |
||||
|
// this.lng = 23.127191 |
||||
|
// this.lat = 113.355747 |
||||
|
if (!str) { |
||||
|
} else { |
||||
|
let arr = str.split(","); |
||||
|
this.addressValue = arr; |
||||
|
this.provinceId = arr[0].split("&")[0]; |
||||
|
this.cityId = arr[1].split("&")[0]; |
||||
|
let cityNameArr = arr[2].split("&"); |
||||
|
this.districtId = cityNameArr[0]; |
||||
|
this.defaultCity = cityNameArr[1]; |
||||
|
this.merchantNo = cityNameArr[2]; |
||||
|
this.nowAddress = |
||||
|
arr[0].split("&")[1] + arr[1].split("&")[1] + cityNameArr[1]; |
||||
|
} |
||||
|
if (!estateStr) { |
||||
|
} else { |
||||
|
let estateArr = estateStr.split("&"); |
||||
|
this.estateId = estateArr[0]; |
||||
|
this.nowEstate = estateArr[1]; |
||||
|
} |
||||
|
let eId = this.$route.query.estateId; |
||||
|
if (eId !== undefined && eId !== null && eId !== "") { |
||||
|
this.estateId = eId; |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
//判断是否在微信环境下操作 |
||||
|
var ua = window.navigator.userAgent.toLowerCase(); |
||||
|
//通过正则表达式匹配ua中是否含有MicroMessenger字符串 |
||||
|
let _this = this; |
||||
|
if (ua.match(/MicroMessenger/i) == "micromessenger") { |
||||
|
//微信环境 |
||||
|
this.wxLocation({}); |
||||
|
} else { |
||||
|
// TODO 非微信环境用百度api |
||||
|
this.getCity(); |
||||
|
} |
||||
|
this.getAddressInfo(); |
||||
|
} |
||||
|
}; |
||||
|
</script> |
||||
|
<style lang="scss" scoped> |
||||
|
|
||||
|
.container { |
||||
|
background-color: #fff; |
||||
|
-webkit-search-cancel-button{ |
||||
|
-webkit-appearance: none!important;//此处只是去掉默认的小× |
||||
|
}; |
||||
|
.top { |
||||
|
position: relative; |
||||
|
width: 100%; |
||||
|
height: 0.9rem; |
||||
|
line-height: 0.9rem; |
||||
|
text-align: center; |
||||
|
font-size: 0.36rem; |
||||
|
color: #249e6c; |
||||
|
img { |
||||
|
position: absolute; |
||||
|
width: 0.2rem; |
||||
|
height: 0.35rem; |
||||
|
top: 50%; |
||||
|
left: 0.4rem; |
||||
|
margin-top: -0.17rem; |
||||
|
} |
||||
|
} |
||||
|
.content { |
||||
|
width: 100%; |
||||
|
background: #fff; |
||||
|
-webkit-overflow-scrolling: touch; |
||||
|
.title { |
||||
|
margin-top: 10px; |
||||
|
line-height: 35px; |
||||
|
height: 35px; |
||||
|
width: 100%; |
||||
|
border-bottom: 1px solid #f3f3f3; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
1692
src/view/home.vue
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
1258
src/view/order-check.vue
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
Write
Preview
Loading…
Cancel
Save