diff --git a/build/webpack.base.conf.js b/build/webpack.base.conf.js index 96ba3ac..a738996 100644 --- a/build/webpack.base.conf.js +++ b/build/webpack.base.conf.js @@ -9,7 +9,7 @@ var vueLoaderConfig = require('./vue-loader.conf') var webpack = require("webpack") -function resolve (dir) { +function resolve(dir) { return path.join(__dirname, '..', dir) } @@ -17,12 +17,16 @@ let webpackConfig = { entry: { app: ["babel-polyfill", "./src/main.js"] }, + //添加 + externals: { + "BMap": "BMap" + }, output: { path: config.build.assetsRoot, filename: '[name].js', - publicPath: process.env.NODE_ENV === 'production' - ? config.build.assetsPublicPath - : config.dev.assetsPublicPath + publicPath: process.env.NODE_ENV === 'production' ? + config.build.assetsPublicPath : + config.dev.assetsPublicPath }, resolve: { extensions: ['.js', '.vue', '.json'], @@ -32,8 +36,7 @@ let webpackConfig = { } }, module: { - rules: [ - { + rules: [{ test: /\.vue$/, loader: 'vue-loader', options: vueLoaderConfig @@ -62,16 +65,16 @@ let webpackConfig = { ] }, plugins: [ - new webpack.optimize.CommonsChunkPlugin('common.js'), - new webpack.ProvidePlugin({ - jQuery: "jquery", - $: "jquery" - }) - ] + new webpack.optimize.CommonsChunkPlugin('common.js'), + new webpack.ProvidePlugin({ + jQuery: "jquery", + $: "jquery" + }) + ] } module.exports = vuxLoader.merge(webpackConfig, { plugins: ['vux-ui', 'progress-bar', 'duplicate-style'] -}) +}) \ No newline at end of file diff --git a/config/index.js b/config/index.js index e99f7c1..6513868 100644 --- a/config/index.js +++ b/config/index.js @@ -7,8 +7,8 @@ module.exports = { index: path.resolve(__dirname, '../dist/index.html'), assetsRoot: path.resolve(__dirname, '../dist'), assetsSubDirectory: 'static', - assetsPublicPath: '/', - productionSourceMap: true, + assetsPublicPath: '/v2/', + productionSourceMap: false, // Gzip off by default as many popular static hosts such as // Surge or Netlify already gzip all static assets for you. // Before setting to `true`, make sure to: @@ -23,7 +23,8 @@ module.exports = { }, dev: { env: require('./dev.env'), - port: 8080, + host: '192.168.31.52', + port: 8081, autoOpenBrowser: true, assetsSubDirectory: 'static', assetsPublicPath: '/', diff --git a/index.html b/index.html index 7ce690d..33c1905 100644 --- a/index.html +++ b/index.html @@ -4,6 +4,7 @@ + 一号家政 diff --git a/package.json b/package.json index 5f2c6c3..38cc52a 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "lodash": "^4.17.4", "vue": "^2.5.9", "vue-awesome-swiper": "^3.1.3", + "vue-baidu-map": "^0.21.22", "vue-cookies": "^1.5.13", "vue-router": "^2.8.1", "vue-template-compiler": "^2.5.9", @@ -59,6 +60,7 @@ "style-loader": "^0.16.1", "url-loader": "^0.5.9", "vue-awesome-swiper": "^3.1.3", + "vue-infinite-scroll": "^2.0.2", "vue-loader": "^11.1.4", "vue-style-loader": "^2.0.0", "webpack": "^2.7.0", diff --git a/src/api/chooseCommunity.js b/src/api/chooseCommunity.js new file mode 100644 index 0000000..99c9626 --- /dev/null +++ b/src/api/chooseCommunity.js @@ -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', + }, +} \ No newline at end of file diff --git a/src/api/home.js b/src/api/home.js index 3eb1b9b..fba5297 100644 --- a/src/api/home.js +++ b/src/api/home.js @@ -15,16 +15,16 @@ export default { method: 'GET', url: '/mall/web/defaultDistrict' }, - getLocation:{ - method:"get", - url:"/mall/web/addressInfo" - }, countExtend:{ method:"POST", url:"/mall/web/center/insert/data" }, + countPartner:{ + method:"POST", + url:"/mall/web/center/insert/housing/data" + }, updateUniqueId:{ method:"get", url:"/mall/web/center/update/uniqueId" - } + }, } \ No newline at end of file diff --git a/src/api/wxShare.js b/src/api/wxShare.js index 546378a..b5b5f50 100644 --- a/src/api/wxShare.js +++ b/src/api/wxShare.js @@ -1,5 +1,10 @@ -export default { +export default { + // -- 获取分享信息 -- + getWXCheck: { + method: 'GET', + url: '/mall/web/wx/api/check', + } , // -- 获取分享信息 -- getShare: { method: 'GET', diff --git a/src/assets/styles/common/border.scss b/src/assets/styles/common/border.scss new file mode 100644 index 0000000..4a21378 --- /dev/null +++ b/src/assets/styles/common/border.scss @@ -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; +} diff --git a/src/assets/styles/common/common.scss b/src/assets/styles/common/common.scss new file mode 100644 index 0000000..603c975 --- /dev/null +++ b/src/assets/styles/common/common.scss @@ -0,0 +1,1093 @@ +.container { + width: 100%; + min-height: 100%; + position: relative; +} + +.f-fl { + float: left; +} + +.f-fr { + float: right; +} + +.f-relative { + position: relative; +} + +.f-absolute { + position: absolute; +} + +.f-fixed { + position: fixed; +} + +.f-no-margin { + margin: 0 !important; +} + +.f-mrl10 { + margin: 0 10px !important; +} + +.f-no-mr { + margin-right: 0 !important; +} + +.f-no-mb { + margin-bottom: 0 !important; +} + +.f-no-padding { + padding: 0 !important; +} + +.f-no-pr { + padding: 0 !important; +} + +.f-halfwidth { + width: 50% !important; +} + +.f-fullwidth { + width: 100% !important; +} + +.f-fullheight { + height: 100% !important; +} + +.f-text-left { + text-align: left; +} + +.f-text-center { + text-align: center; +} + +.f-text-right { + text-align: right; +} + +.f-show { + display: block !important; +} + +.f-hide { + display: none; +} + +.f-inblock { + display: inline-block; +} + +.f-table { + display: table; +} + +.f-table-cell { + display: table-cell; + vertical-align: middle; +} + +.f-vt { + vertical-align: top; +} + +.f-vm { + vertical-align: middle; +} + +.l-height-1 { + line-height: 1; +} + +.l-height-15 { + line-height: 15px; +} + +.l-height-18 { + line-height: 18px; +} + +.f-flex { + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + -ms-flex-align: center; + align-items: center; +} + +.f-flex-1 { + -webkit-box-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; +} + +.f-flex-center { + -webkit-box-pack: center; + -webkit-justify-content: center; + -ms-flex-pack: center; + justify-content: center; +} + +.f-flex-justify { + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + -ms-flex-pack: justify; + justify-content: space-between; +} + +.f-flex-column { + -webkit-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; +} + +.f-mb2 { + margin-bottom: 2px; +} + +.f-mb3 { + margin-bottom: 3px; +} + +.f-mb4 { + margin-bottom: 4px; +} + +.f-mb5 { + margin-bottom: 5px; +} + +.f-mb7 { + margin-bottom: 7px; +} + +.f-mb8 { + margin-bottom: 8px; +} + +.f-mb10 { + margin-bottom: 10px; +} + +.f-mb12 { + margin-bottom: 12px; +} + +.f-mb15 { + margin-bottom: 15px; +} + +.f-mb20 { + margin-bottom: 20px; +} + +.f-mb25 { + margin-bottom: 25px; +} + +.f-mb30 { + margin-bottom: 30px; +} + +.f-mb35 { + margin-bottom: 35px; +} + +.f-mb40 { + margin-bottom: 40px; +} + +.f-mb18 { + margin-bottom: 18px; +} + +.f-mb60 { + margin-bottom: 60px; +} + +.f-mb90 { + margin-bottom: 90px; +} + +.f-mt-1 { + margin-top: -1px; +} + +.f-mt-2 { + margin-top: -2px; +} + +.f-mt-3 { + margin-top: -3px; +} + +.f-mt-10 { + margin-top: -10px; +} + +.f-mt3 { + margin-top: 3px; +} + +.f-mt5 { + margin-top: 5px; +} + +.f-mt10 { + margin-top: 10px !important; +} + +.f-mt15 { + margin-top: 15px; +} + +.f-mt20 { + margin-top: 20px; +} + +.f-mt25 { + margin-top: 25px; +} + +.f-mt30 { + margin-top: 30px; +} + +.f-mt40 { + margin-top: 40px; +} + +.f-mt50 { + margin-top: 50px; +} + +.f-mt116 { + margin-top: 116px; +} + +.f-mr3 { + margin-right: 3px; +} + +.f-mr5 { + margin-right: 5px; +} + +.f-mr6 { + margin-right: 6px; +} + +.f-mr7 { + margin-right: 7px; +} + +.f-mr10 { + margin-right: 10px; +} + +.f-mr13 { + margin-right: 13px; +} + +.f-mr15 { + margin-right: 15px; +} + +.f-mr16 { + margin-right: 16px; +} + +.f-mr20 { + margin-right: 20px; +} + +.f-mr25 { + margin-right: 25px; +} + +.f-mr28 { + margin-right: 28px; +} + +.f-mr30 { + margin-right: 30px; +} + +.f-mr35 { + margin-right: 35px; +} + +.f-mr40 { + margin-right: 40px; +} + +.f-ml-5 { + margin-left: -5px; +} + +.f-ml3 { + margin-left: 3px; +} + +.f-ml5 { + margin-left: 5px; +} + +.f-ml6 { + margin-left: 6px; +} + +.f-ml7 { + margin-left: 7px; +} + +.f-ml8 { + margin-left: 8px; +} + +.f-ml10 { + margin-left: 10px; +} + +.f-ml12 { + margin-left: 12px; +} + +.f-ml13 { + margin-left: 13px; +} + +.f-ml15 { + margin-left: 15px; +} + +.f-ml16 { + margin-left: 16px; +} + +.f-ml20 { + margin-left: 20px; +} + +.f-ml25 { + margin-left: 25px; +} + +.f-ml30 { + margin-left: 30px; +} + +.f-ml50 { + margin-left: 50px; +} + +.f-p-15 { + padding: 15px; +} + +.f-pt0 { + padding-top: 0px; +} + +.f-pt2 { + padding-top: 2px; +} + +.f-pt5 { + padding-top: 5px; +} + +.f-pt10 { + padding-top: 10px !important; +} + +.f-pt12 { + padding-top: 12px; +} + +.f-pt15 { + padding-top: 15px !important; +} + +.f-pt20 { + padding-top: 20px !important; +} + +.f-pt25 { + padding-top: 25px; +} + +.f-pt30 { + padding-top: 30px; +} + +.f-pt35 { + padding-top: 35px; +} + +.f-pt40 { + padding-top: 40px; +} + +.f-pt50 { + padding-top: 50px; +} + +.f-pt70 { + padding-top: 70px; +} + +.f-pt110 { + padding-top: 110px; +} + +.f-pt120 { + padding-top: 120px; +} + +.f-pt180 { + padding-top: 180px; +} + +.f-pb0 { + padding-bottom: 0px !important; +} + +.f-pb5 { + padding-bottom: 5px !important; +} + +.f-pb7 { + padding-bottom: 7px !important; +} + +.f-pb10 { + padding-bottom: 10px !important; +} + +.f-pb12 { + padding-bottom: 12px; +} + +.f-pb13 { + padding-bottom: 13px; +} + +.f-pb15 { + padding-bottom: 15px !important; +} + +.f-pb20 { + padding-bottom: 20px; +} + +.f-pb25 { + padding-bottom: 25px; +} + +.f-pb30 { + padding-bottom: 30px; +} + +.f-pb40 { + padding-bottom: 40px; +} + +.f-pb50 { + padding-bottom: 50px; +} + +.f-pb60 { + padding-bottom: 60px; +} + +.f-pb70 { + padding-bottom: 70px; +} + +.f-pb90 { + padding-bottom: 90px; +} + +.f-pb95 { + padding-bottom: 95px; +} + +.f-pl5 { + padding-left: 5px; +} + +.f-pl10 { + padding-left: 10px; +} + +.f-pl15 { + padding-left: 15px; +} + +.f-pl25 { + padding-left: 25px; +} + +.f-pl20 { + padding-left: 20px !important; +} + +.f-pl29 { + padding-left: 29px; +} + +.f-pl30 { + padding-left: 30px; +} + +.f-pl35 { + padding-left: 35px; +} + +.f-pl40 { + padding-left: 40px; +} + +.f-pl50 { + padding-left: 50px; +} + +.f-pr5 { + padding-right: 5px; +} + +.f-pr10 { + padding-right: 10px; +} + +.f-pr13 { + padding-right: 13px; +} + +.f-pr15 { + padding-right: 15px; +} + +.f-pr16 { + padding-right: 16px; +} + +.f-pr20 { + padding-right: 20px !important; +} + +.f-pr25 { + padding-right: 25px; +} + +.f-pr30 { + padding-right: 30px; +} + +.f-pr35 { + padding-right: 35px; +} + +.f-pr40 { + padding-right: 40px; +} + +.f-bold { + font-weight: bold; +} + +.f-bg-white { + background-color: #fff; +} + +.f-bg-blue { + background-color: #4BBCEF; +} + +.f-h10{ + height: 10px; +} + +.f-h15{ + height: 15px; +} + +.f-h20{ + height: 20px; +} + +.f-h23{ + height: 23px; +} + +.f-h30{ + height: 30px; +} + +.f-h36{ + height: 36px; +} + +.f-h38{ + height: 38px; +} + +.f-h40{ + height: 40px; +} + +.f-h45{ + height: 45px; +} + +.f-h48{ + height: 48px; +} + +.f-h50{ + height: 50px; +} + +.f-h55{ + height: 55px; +} + +.f-h60{ + height: 60px; +} + +.f-h65{ + height: 65px; +} + +.f-h67{ + height: 67px; +} + +.f-h70{ + height: 70px; +} + +.f-h80{ + height: 80px; +} + +.f-h90{ + height: 90px; +} + +.f-h100{ + height: 100px; +} + +.f-h105{ + height: 105px; +} + +.f-w15{ + width: 15px; +} + +.f-w18{ + width: 18px; +} + +.f-w36{ + width: 36px; +} + +.f-w60{ + width: 60px; +} + +.f-w67{ + width: 67px; +} + +.f-w70{ + width: 70px; +} + +.f-w100{ + width: 100px; +} + +.f-flex-a-start{ + align-items: flex-start; +} + +.f-flex-a-end{ + align-items: flex-end; +} + +.f-flex-j-start{ + justify-content: flex-start; +} + +.f-flex-j-end{ + justify-content: flex-end; +} + +.f-text-1F { + color: #1F1F1F; +} + +.f-text-333 { + color: #333333; +} + +.f-text-666 { + color: #999999; +} + +.f-text-999 { + color: #999999; +} + +.f-text-blue{ + color: #009EE0; +} + +.s-black { + color: #323232; +} + +.s-white { + color: #fff; +} + +.s-deep-grey { + color: #aaa; +} + +.s-light-grey { + color: #a0a0a0; +} + +.s-grey { + color: #a3c5e1; +} + +.s-red { + color: #ff534a; +} + +.s-blue { + color: #00a0e8; +} + +.s-orange { + color: #FFA75C; +} + +.s-light-blue { + color: #99c9f0; +} + +.s-yellow { + color: #eea22a; +} + +.s-green { + color: #22c518; +} + +.f-font-10 { + font-size: 10px !important; +} + +.f-font-11 { + font-size: 11px; +} + +.f-font-12 { + font-size: 12px !important; +} + +.f-font-13 { + font-size: 13px; +} + +.f-font-14 { + font-size: 14px; +} + +.f-font-15 { + font-size: 15px; +} + +.f-font-16 { + font-size: 16px !important; +} + +.f-font-17 { + font-size: 17px; +} + +.f-font-18 { + font-size: 18px; +} + +.f-font-20 { + font-size: 20px; +} + +.f-font-22 { + font-size: 22px; +} + +.f-font-25 { + font-size: 25px; +} + +.f-font-30 { + font-size: 30px; +} + +.f-ellipsis-1 { + display: block; + word-break: keep-all; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.f-ellipsis-2 { + display: -webkit-box; + -webkit-line-clamp: 2; + overflow: hidden; + -webkit-box-orient: vertical; +} + +.f-ellipsis-3 { + display: -webkit-box; + -webkit-line-clamp: 3; + overflow: hidden; + -webkit-box-orient: vertical; +} + +.f-md-2{ + width: 50%; +} + +.f-md-3{ + width: 33.33%; +} + +.f-md-4{ + width: 25%; +} + +.overflow-x { + overflow-y: hidden; + overflow-x: scroll; + white-space: nowrap; +} + +.overflow-y { + overflow-y: auto; + overflow-x: hidden; + white-space: nowrap; +} + +.object-cover { + object-fit: cover; +} + +// min +.m-w-60 { + min-width: 60px; +} + +// button +.m-footer-btn { + position: fixed; + left: 0; + bottom: 0; + height: 50px; + width: 100%; + background-color: #fff; + z-index: 9; + .left { + position: relative; + &::after { + height: 1px; + content: ''; + width: 100%; + border-top: 1px solid #e2e2e2; + position: absolute; + top: -0.5px; + right: 0; + transform: scaleY(0.5); + -webkit-transform: scaleY(0.5); + } + } + div.button { + width: 50%; + height: 50px; + float: left; + } +} +.m-order-btn { + position: fixed; + left: 0; + bottom: 0; + height: 55px; + width: 100%; + background-color: #fff; + font-size: 14px; + z-index: 9; + button { + height: 25px; + } +} + +// nav +.m-nav { + padding: 0 10px; + background-color: #008de0; + ul { + width: 100%; + height: 50px; + li { + font-size: 15px; + color: #a3cbf0; + text-align: center; + flex: 1; + height: 50px; + line-height: 50px; + position: relative; + } + } + &__on { + font-size: 18px !important; + font-weight: bold; + color: #fff !important; + &::after { + content: ''; + position: absolute; + left: 50%; + bottom: 0; + display: inline-block; + width: 32px; + height: 4px; + background-color: #fff; + margin-left: -16px; + } + } +} + +// loadmore +.load-more-tips { + padding-bottom: 15px; + text-align: center; + color: #999; +} + +.load-more-normal { + height: 1px; + line-height: 1px; +} + +.load-more-hide { + height: 0; +} + +// placeholder-color +input { + &::-webkit-input-placeholder { + color: #cecece; + } + &:-moz-placeholder { + color: #cecece; + } + &:-ms-input-placeholder { + color: #cecece; + } + &::placeholder { + color: #cecece; + } +} + +textarea { + &::-webkit-input-placeholder { + color: #cecece; + } + &:-moz-placeholder { + color: #cecece; + } + &:-ms-input-placeholder { + color: #cecece; + } + &::placeholder { + color: #cecece; + } +} + +.triangle_border_down{ //倒三角(没选) + width:0; + height:0; + border-width:3.5px 3.5px 0; + border-style:solid; + border-color:#666666 transparent transparent;/*灰 透明 透明 */ + position:relative; +} + +.triangle_border_top{ //正三角(选中) + width:0; + height:0; + border-width:0 3.5px 3.5px; + border-style:solid; + border-color:transparent transparent rgba(0, 186, 134, 1);/*灰 透明 透明 */ + position:relative; +} + +.f-ws-nowrap{ + white-space: nowrap; +} + +.f-ws-wrap{ + white-space: wrap; +} + +.f-transform-180 { + transform: rotate(180deg); + -webkit-transform: rotate(180deg); + transition: transform .5s; +} + +.slide { + overflow: hidden; + max-height: 0; + transition: max-height 0.5s cubic-bezier(0, 1, 0, 1) -0.1s; +} +.animate { + max-height: 9999px; + transition-timing-function: cubic-bezier(0.5, 0, 1, 0); + transition-delay: 0s; +} + +.weui-dialog__btn_primary { + color: rgba(0, 186, 134, 1)!important; +} + +.vux-popup-header-right { + padding-right: 15px; + color: rgba(0, 186, 134, 1)!important; +} + +.dp-header .dp-item.dp-right { + color: rgba(0, 186, 134, 1)!important; +} diff --git a/src/assets/styles/common/icon.scss b/src/assets/styles/common/icon.scss new file mode 100644 index 0000000..b1f8f68 --- /dev/null +++ b/src/assets/styles/common/icon.scss @@ -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; + } +} diff --git a/src/assets/styles/common/mixin.scss b/src/assets/styles/common/mixin.scss new file mode 100644 index 0000000..bdff636 --- /dev/null +++ b/src/assets/styles/common/mixin.scss @@ -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); +} diff --git a/src/assets/styles/common/transition.scss b/src/assets/styles/common/transition.scss new file mode 100644 index 0000000..8dd9b04 --- /dev/null +++ b/src/assets/styles/common/transition.scss @@ -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; +} diff --git a/src/assets/styles/common/variables.scss b/src/assets/styles/common/variables.scss new file mode 100644 index 0000000..34e74b1 --- /dev/null +++ b/src/assets/styles/common/variables.scss @@ -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; diff --git a/src/assets/styles/index.scss b/src/assets/styles/index.scss new file mode 100644 index 0000000..7b1a9c7 --- /dev/null +++ b/src/assets/styles/index.scss @@ -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; +} diff --git a/src/common/util.js b/src/common/util.js index 47b904a..666753d 100644 --- a/src/common/util.js +++ b/src/common/util.js @@ -1,63 +1,131 @@ /** * Created by jerry on 2017/4/14. */ +import homeApi from "../models/home-model.js"; var SIGN_REGEXP = /([yMdhsm])(\1*)/g 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 { - 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; +} diff --git a/src/main.js b/src/main.js index a727bfb..5566b17 100644 --- a/src/main.js +++ b/src/main.js @@ -2,6 +2,7 @@ // (runtime-only or standalone) has been set in webpack.base.conf with an alias. import Vue from "vue"; +// import BMap from 'vue-baidu-map'; import { WechatPlugin, LoadingPlugin, @@ -14,6 +15,7 @@ import router from "./router"; import "@/assets/iconfont.css"; import "@/assets/styles/main.scss"; import "@/assets/styles/style.css"; +import '@/assets/styles/index.scss' // global css import "@/common/rem.js"; import ElementUI from "element-ui"; import "element-ui/lib/theme-chalk/index.css"; @@ -23,7 +25,9 @@ import "@/assets/styles/swiper.css"; //import wx from 'weixin-js-sdk' //import axios from 'axios' import "@/models/wxShare.js"; +import "@/models/wxLocation.js"; import VueCookies from 'vue-cookies' +import infiniteScroll from 'vue-infinite-scroll' Vue.config.productionTip = false; Vue.use(WechatPlugin); @@ -32,7 +36,12 @@ Vue.use(LoadingPlugin); Vue.use(ToastPlugin); Vue.use(AlertPlugin); Vue.use(VueCookies) - +Vue.use(ElementUI) +Vue.use(infiniteScroll) +// Vue.use(BMap, { +// // ak 是在百度地图开发者平台申请的密钥 详见 http://lbsyun.baidu.com/apiconsole/key */ +// ak: 'm8sGHZTpKuDeDAU5qs4YUWWDP1v6XZsq' +// }) Vue.use(VueAwesomeSwiper); Vue.mixin({ data() { diff --git a/src/models/choose-community.js b/src/models/choose-community.js new file mode 100644 index 0000000..f1b3bae --- /dev/null +++ b/src/models/choose-community.js @@ -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, + }) +} \ No newline at end of file diff --git a/src/models/home-model.js b/src/models/home-model.js index 178af7c..e08c53d 100644 --- a/src/models/home-model.js +++ b/src/models/home-model.js @@ -18,19 +18,27 @@ export default { version: "2.5.0" } }), - getLocation: params => - utilsModel.config(homeApi.getLocation).request({ - params: params, - // headers: { - // "x-forwarded-for": "113.65.207.218" - // } - }), + // getLocation: params => + // utilsModel.config(homeApi.getLocation).request({ + // params: params, + // // headers: { + // // "x-forwarded-for": "113.65.207.218" + // // } + // }), countExtend: params => utilsModel.config(homeApi.countExtend).request({ params: params }), + countPartner: params => + utilsModel.config(homeApi.countPartner).request({ + params: params + }), updateUniqueId: params => utilsModel.config(homeApi.updateUniqueId).request({ params: params - }) + }), + // getEstateInfo: params => + // utilsModel.config(homeApi.getEstateInfo).request({ + // params: params + // }), }; diff --git a/src/models/utils-model.js b/src/models/utils-model.js index 8ff992c..ed4db32 100644 --- a/src/models/utils-model.js +++ b/src/models/utils-model.js @@ -102,7 +102,7 @@ const config = function(config, params) { // console.log(newConfig) // newConfig.headers.Authorization=params.token //执行http接口请求 - return instance(newConfig).then(successCallback, errorCallback); + return instance(newConfig).then(successCallback).catch(errorCallback); } }; }; diff --git a/src/models/wxLocation.js b/src/models/wxLocation.js new file mode 100644 index 0000000..c7a0dd9 --- /dev/null +++ b/src/models/wxLocation.js @@ -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("定位失败") + }); + }); + }); + }) + +} + diff --git a/src/models/wxShare-model.js b/src/models/wxShare-model.js index 10ea5c6..d8db097 100644 --- a/src/models/wxShare-model.js +++ b/src/models/wxShare-model.js @@ -9,4 +9,10 @@ export default { .request({ params : params, }), + getWXCheck : () => + utilsModel + .config(wxShareApi.getWXCheck) + .request({ + + }), } \ No newline at end of file diff --git a/src/models/wxShare.js b/src/models/wxShare.js index ac448de..a912bf4 100644 --- a/src/models/wxShare.js +++ b/src/models/wxShare.js @@ -5,43 +5,58 @@ import wxShareModel from "../models/wxShare-model.js"; import homeApi from "../models/home-model.js"; //微信分享功能 -Vue.prototype.wxShare = function(params) { - var params = params || {}; - +Vue.prototype.wxShare = function (params) { +var params = params || {}; +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: [ + "onMenuShareAppMessage", + "onMenuShareTimeline", + "onMenuShareQQ", + "onMenuShareWeibo", + "onMenuShareQZone" + ] + }); wxShareModel.getShare(params).then(response => { if (response.code != 0) { return; } - - var jsApiSignConfig = response.response.jsApiSignConfig; var shareConfig = response.response.shareConfig; var couponNo = response.response.couponNo - wx.config({ - debug: false, // 开启调试模式,开发时可以开启 - appId: jsApiSignConfig.appId, // 必填,公众号的唯一标识 由接口返回 - timestamp: jsApiSignConfig.timestamp, // 必填,生成签名的时间戳 由接口返回 - nonceStr: jsApiSignConfig.nonceStr, // 必填,生成签名的随机串 由接口返回 - signature: jsApiSignConfig.signature, // 必填,签名 由接口返回 - jsApiList: [ - "onMenuShareAppMessage", - "onMenuShareTimeline", - "onMenuShareQQ", - "onMenuShareWeibo", - "onMenuShareQZone" - ] - }); + var urlParams = ''; let uuniqueId = this.$cookies.get('1hjz_mall_unique_id') - if(couponNo !== undefined && couponNo !== null && couponNo !== ""){ - urlParams = '?batchNo='+ couponNo + if (couponNo !== undefined && couponNo !== null && couponNo !== "") { + urlParams = '?batchNo=' + couponNo + } + if (uuniqueId !== undefined && uuniqueId !== null && uuniqueId !== "") { + if (urlParams.length > 0) { + urlParams += '&uniqueId=' + uuniqueId + } else { + urlParams = '?uniqueId=' + uuniqueId + } } - if(uuniqueId !== undefined && uuniqueId !== null && uuniqueId !== ""){ - if(urlParams.length > 0){ - urlParams+='&uniqueId='+ uuniqueId - } else{ - urlParams = '?uniqueId='+ uuniqueId + let estateStr = localStorage.getItem("estate") || ""; + if(estateStr && estateStr.length > 0){ + let estateArr = estateStr.split("&"); + let estateId = estateArr[0]; + if (estateId !== undefined && estateId !== null && estateId !== "") { + if (urlParams.length > 0) { + urlParams += '&estateId=' + estateId + } else { + urlParams = '?estateId=' + estateId + } } - } wx.ready(() => { //获取“分享给朋友”按钮点击状态及自定义分享内容接口 @@ -49,123 +64,67 @@ Vue.prototype.wxShare = function(params) { // 分享给朋友 title: shareConfig.title, // 分享标题 desc: shareConfig.desc, // 分享描述 - link: shareConfig.url+urlParams, // 分享链接 默认以当前链接 + link: shareConfig.url + urlParams, // 分享链接 默认以当前链接 imgUrl: shareConfig.img, // 分享图标 - success: function(res) { - } + success: function (res) {} }); //转发到朋友圈 wx.onMenuShareTimeline({ title: shareConfig.title, // 分享标题 desc: shareConfig.desc, // 分享描述 - link: shareConfig.url+urlParams, // 分享链接 默认以当前链接 + link: shareConfig.url + urlParams, // 分享链接 默认以当前链接 imgUrl: shareConfig.img, // 分享图标 - success: function(res) {} + success: function (res) {} }); //微信分享qq wx.onMenuShareQQ({ title: shareConfig.title, // 分享标题 desc: shareConfig.desc, // 分享描述 - link: shareConfig.url+urlParams, // 分享链接 默认以当前链接 + link: shareConfig.url + urlParams, // 分享链接 默认以当前链接 imgUrl: shareConfig.img, // 分享图标 - success: function(res) {} + success: function (res) {} }); - + //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: shareConfig.title, // 分享标题 desc: shareConfig.desc, // 分享描述 - link: shareConfig.url+urlParams, // 分享链接 默认以当前链接 + link: shareConfig.url + urlParams, // 分享链接 默认以当前链接 imgUrl: shareConfig.img, // 分享图标 - success: function(res) {} + success: function (res) {} }); - + //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口(即将废弃) wx.onMenuShareQZone({ title: shareConfig.title, // 分享标题 desc: shareConfig.desc, // 分享描述 - link: shareConfig.url+urlParams, // 分享链接 默认以当前链接 + link: shareConfig.url + urlParams, // 分享链接 默认以当前链接 imgUrl: shareConfig.img, // 分享图标 - success: function(res) {} + success: function (res) {} + }); + // 首次进入页面进会弹窗确认地理位置 + if (localStorage.getItem("latitude") == null) { + + wx.getLocation({ + type: "gcj02", // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02' + success: function (res) { + localStorage.setItem("latitude", res.latitude); + localStorage.setItem("longitude", res.longitude); + }, + cancel: function () { + alert("拒绝定位"); + } + }); + } else { + + } + // alert("lat:" + localStorage.getItem("latitude") + ";lng:" + localStorage.getItem("longitude")); + wx.error(function (res) { + console.log("--------wx") + // alert("wx-js初始化: " + res); }); }); }); -}; +}); -//Vue.prototype.wxShares = function(params) { -// var wxconfigApi = 'http://1hjz.3ncto.com.cn/mall/web/share/config'; -// axios.get(wxconfigApi,{params:params}).then(function(response) { -// -// var response = response -// console.log('1111',response) -// var jsApiSignConfig = response.data.data.jsApiSignConfig -// var shareConfig = response.data.data.shareConfig -// -// wx.config({ -// debug: false, // 开启调试模式,开发时可以开启 -// appId: jsApiSignConfig.appId, // 必填,公众号的唯一标识 由接口返回 -// timestamp: jsApiSignConfig.timestamp, // 必填,生成签名的时间戳 由接口返回 -// nonceStr: jsApiSignConfig.nonceStr, // 必填,生成签名的随机串 由接口返回 -// signature: jsApiSignConfig.signature, // 必填,签名 由接口返回 -// jsApiList: ['onMenuShareAppMessage','onMenuShareTimeline','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] -// }) -// -// wx.ready(() => { -// //获取“分享给朋友”按钮点击状态及自定义分享内容接口 -// wx.onMenuShareAppMessage({ // 分享给朋友 -// title: shareConfig.title, // 分享标题 -// desc: shareConfig.desc, // 分享描述 -// link: shareConfig.url, // 分享链接 默认以当前链接 -// imgUrl: shareConfig.img, // 分享图标 -// success: function(res){ -// } -// }) -// //转发到朋友圈 -// wx.onMenuShareTimeline({ -// title: shareConfig.title, // 分享标题 -// desc: shareConfig.desc, // 分享描述 -// link: shareConfig.url, // 分享链接 默认以当前链接 -// imgUrl: shareConfig.img, // 分享图标 -// success: function(res){ -// } -// }); -// //微信分享qq -// wx.onMenuShareQQ({ -// title: shareConfig.title, // 分享标题 -// desc: shareConfig.desc, // 分享描述 -// link: shareConfig.url, // 分享链接 默认以当前链接 -// imgUrl: shareConfig.img, // 分享图标 -// success: function(res){ -// } -// }); -// -// //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 -// wx.onMenuShareWeibo({ -// title: shareConfig.title, // 分享标题 -// desc: shareConfig.desc, // 分享描述 -// link: shareConfig.url, // 分享链接 默认以当前链接 -// imgUrl: shareConfig.img, // 分享图标 -// success: function(res){ -// } -// }); -// -// //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口(即将废弃) -// wx.onMenuShareQZone({ -// title: shareConfig.title, // 分享标题 -// desc: shareConfig.desc, // 分享描述 -// link: shareConfig.url, // 分享链接 默认以当前链接 -// imgUrl: shareConfig.img, // 分享图标 -// success: function(res){ -// } -// }); -// }) -// -// -// -// -// }) -// .catch(function(error) { -// console.log(error); -// }); -// -//} +} diff --git a/src/router/index.js b/src/router/index.js index 4a0875b..0e7ec97 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -11,6 +11,7 @@ const putMoneySuccess = resolve => const serviceEvaluationStatus = resolve => require(["@/view/service-evaluation-status"], resolve); const home = resolve => require(["@/view/home"], resolve); +const chooseCommnity = resolve => require(["@/view/choose-community"], resolve); const poster = resolve => require(["@/view/poster"], resolve); const demo = resolve => require(["@/view/demo"], resolve); const goodsClassify = resolve => require(["@/view/goods-classify"], resolve); @@ -56,6 +57,11 @@ let router = new Router({ name: "首页", component: home }, + { + path: "/choose-community", + name: "选择小区", + component: chooseCommnity + }, { path: "/poster", name: "分销海报", @@ -94,6 +100,7 @@ let router = new Router({ path: "/demo", component: resolve => require(["@/view/demo.vue"], resolve) } + ] }); diff --git a/src/utils/scroll.js b/src/utils/scroll.js new file mode 100644 index 0000000..bba9a57 --- /dev/null +++ b/src/utils/scroll.js @@ -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 diff --git a/src/view/choose-community.vue b/src/view/choose-community.vue new file mode 100644 index 0000000..3bcb0a3 --- /dev/null +++ b/src/view/choose-community.vue @@ -0,0 +1,485 @@ + + + \ No newline at end of file diff --git a/src/view/goods-classify.vue b/src/view/goods-classify.vue index 56e17cf..f06393e 100644 --- a/src/view/goods-classify.vue +++ b/src/view/goods-classify.vue @@ -17,7 +17,7 @@
-
+

{{item.combinationName}}

diff --git a/src/view/home.vue b/src/view/home.vue index a12cdae..f9e0ec4 100644 --- a/src/view/home.vue +++ b/src/view/home.vue @@ -1,782 +1,1148 @@ diff --git a/src/view/month-card.vue b/src/view/month-card.vue index dac6f7d..59670cc 100644 --- a/src/view/month-card.vue +++ b/src/view/month-card.vue @@ -1,82 +1,84 @@ diff --git a/src/view/order-check.vue b/src/view/order-check.vue index f16d29c..961f5eb 100644 --- a/src/view/order-check.vue +++ b/src/view/order-check.vue @@ -1,699 +1,697 @@ diff --git a/src/view/order-list.vue b/src/view/order-list.vue index ce98878..0d6d37b 100644 --- a/src/view/order-list.vue +++ b/src/view/order-list.vue @@ -10,7 +10,7 @@
退款中
已退款
- +