proxy代理和request修改

master
lml 5 months ago
parent 13e0850229
commit c3f1d01ef0

@ -0,0 +1,7 @@
# .env 文件
VUE_APP_URL=http://192.168.10.54:9100/v1/v1
# title
VITE_GLOB_APP_TITLE = AAF 美通官网

Binary file not shown.

182
package-lock.json generated

@ -17,6 +17,7 @@
"echarts-gl": "^2.0.9",
"element-theme-chalk": "^2.15.14",
"element-ui": "^2.15.14",
"view-design": "^4.7.0",
"vue": "^2.6.11",
"vue-particles": "^1.0.9",
"vue-router": "^3.1.3",
@ -2619,6 +2620,11 @@
"integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
"dev": true
},
"node_modules/batch-processor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz",
"integrity": "sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA=="
},
"node_modules/bcrypt-pbkdf": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
@ -4873,12 +4879,12 @@
}
},
"node_modules/echarts": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/echarts/-/echarts-5.0.1.tgz",
"integrity": "sha512-JYn22Dolt2esY2jEzUsw1OxbobuW67oGjIoTjZO3rW89SWkfJ4kbrmC2OW9JjsBrD1rdkmaWBuZZ2HgmThyxJw==",
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/echarts/-/echarts-5.5.0.tgz",
"integrity": "sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw==",
"dependencies": {
"tslib": "2.0.3",
"zrender": "5.0.3"
"tslib": "2.3.0",
"zrender": "5.5.0"
}
},
"node_modules/echarts-gl": {
@ -4894,17 +4900,9 @@
}
},
"node_modules/echarts/node_modules/tslib": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz",
"integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ=="
},
"node_modules/echarts/node_modules/zrender": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/zrender/-/zrender-5.0.3.tgz",
"integrity": "sha512-TVcN2IMdo7je3GEq/E4CER4AGBe/n50/izILdupppyHf/hVHuiXCRliqdu8+32Z1OmGg6RfKt5qQlkX+bOtU0g==",
"dependencies": {
"tslib": "2.0.3"
}
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
},
"node_modules/ee-first": {
"version": "1.1.1",
@ -4927,6 +4925,14 @@
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.738.tgz",
"integrity": "sha512-lwKft2CLFztD+vEIpesrOtCrko/TFnEJlHFdRhazU7Y/jx5qc4cqsocfVrBg4So4gGe9lvxnbLIoev47WMpg+A=="
},
"node_modules/element-resize-detector": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.4.tgz",
"integrity": "sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==",
"dependencies": {
"batch-processor": "1.0.0"
}
},
"node_modules/element-theme-chalk": {
"version": "2.15.14",
"resolved": "https://registry.npmjs.org/element-theme-chalk/-/element-theme-chalk-2.15.14.tgz",
@ -7835,6 +7841,11 @@
"node": ">=8"
}
},
"node_modules/js-calendar": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/js-calendar/-/js-calendar-1.2.3.tgz",
"integrity": "sha512-dAA1/Zbp4+c5E+ARCVTIuKepXsNLzSYfzvOimiYD4S5eeP9QuplSHLcdhfqFSwyM1o1u6ku6RRRCyaZ0YAjiBw=="
},
"node_modules/js-message": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz",
@ -8111,6 +8122,11 @@
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
"integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4="
},
"node_modules/lodash.throttle": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
"integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ=="
},
"node_modules/lodash.transform": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz",
@ -11639,6 +11655,11 @@
"resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
"integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q="
},
"node_modules/tinycolor2": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz",
"integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="
},
"node_modules/tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
@ -12092,6 +12113,15 @@
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
"dev": true
},
"node_modules/v-click-outside-x": {
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/v-click-outside-x/-/v-click-outside-x-3.7.1.tgz",
"integrity": "sha512-WmUgmcIXr9clVpm1AYS/FgHtcDicfnfoxgQCNg4O6vfk9GVnxA0vSqO321ogUo0b7czYTidj7fQENvWFMWOkUg==",
"engines": {
"node": ">=8.11.4",
"npm": "6.4.1"
}
},
"node_modules/validate-npm-package-license": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
@ -12130,6 +12160,42 @@
"extsprintf": "^1.2.0"
}
},
"node_modules/view-design": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/view-design/-/view-design-4.7.0.tgz",
"integrity": "sha512-WRvVRfsZciN0aJYlz+6b1zxs5G8tLFb4OUKOu+PiN0QyIGmdgWVziEyEmioYtJahQpueWiQpRYGzyxrpz3UkWQ==",
"dependencies": {
"async-validator": "^3.3.0",
"deepmerge": "^2.2.1",
"element-resize-detector": "^1.2.0",
"js-calendar": "^1.2.3",
"lodash.throttle": "^4.1.1",
"popper.js": "^1.14.6",
"tinycolor2": "^1.4.1",
"v-click-outside-x": "^3.7.1"
},
"engines": {
"node": ">=8.9.1",
"npm": ">=5.5.1",
"yarn": ">=1.3.2"
},
"peerDependencies": {
"vue": "^2.6.10"
}
},
"node_modules/view-design/node_modules/async-validator": {
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/async-validator/-/async-validator-3.5.2.tgz",
"integrity": "sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ=="
},
"node_modules/view-design/node_modules/deepmerge": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz",
"integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/vm-browserify": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
@ -15835,6 +15901,11 @@
"integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
"dev": true
},
"batch-processor": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz",
"integrity": "sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA=="
},
"bcrypt-pbkdf": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
@ -17861,26 +17932,18 @@
}
},
"echarts": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/echarts/-/echarts-5.0.1.tgz",
"integrity": "sha512-JYn22Dolt2esY2jEzUsw1OxbobuW67oGjIoTjZO3rW89SWkfJ4kbrmC2OW9JjsBrD1rdkmaWBuZZ2HgmThyxJw==",
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/echarts/-/echarts-5.5.0.tgz",
"integrity": "sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw==",
"requires": {
"tslib": "2.0.3",
"zrender": "5.0.3"
"tslib": "2.3.0",
"zrender": "5.5.0"
},
"dependencies": {
"tslib": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz",
"integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ=="
},
"zrender": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/zrender/-/zrender-5.0.3.tgz",
"integrity": "sha512-TVcN2IMdo7je3GEq/E4CER4AGBe/n50/izILdupppyHf/hVHuiXCRliqdu8+32Z1OmGg6RfKt5qQlkX+bOtU0g==",
"requires": {
"tslib": "2.0.3"
}
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
}
}
},
@ -17910,6 +17973,14 @@
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.738.tgz",
"integrity": "sha512-lwKft2CLFztD+vEIpesrOtCrko/TFnEJlHFdRhazU7Y/jx5qc4cqsocfVrBg4So4gGe9lvxnbLIoev47WMpg+A=="
},
"element-resize-detector": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.4.tgz",
"integrity": "sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==",
"requires": {
"batch-processor": "1.0.0"
}
},
"element-theme-chalk": {
"version": "2.15.14",
"resolved": "https://registry.npmjs.org/element-theme-chalk/-/element-theme-chalk-2.15.14.tgz",
@ -20440,6 +20511,11 @@
}
}
},
"js-calendar": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/js-calendar/-/js-calendar-1.2.3.tgz",
"integrity": "sha512-dAA1/Zbp4+c5E+ARCVTIuKepXsNLzSYfzvOimiYD4S5eeP9QuplSHLcdhfqFSwyM1o1u6ku6RRRCyaZ0YAjiBw=="
},
"js-message": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz",
@ -20708,6 +20784,11 @@
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
"integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4="
},
"lodash.throttle": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
"integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ=="
},
"lodash.transform": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz",
@ -23987,6 +24068,11 @@
"resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
"integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q="
},
"tinycolor2": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz",
"integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="
},
"tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
@ -24408,6 +24494,11 @@
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
"dev": true
},
"v-click-outside-x": {
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/v-click-outside-x/-/v-click-outside-x-3.7.1.tgz",
"integrity": "sha512-WmUgmcIXr9clVpm1AYS/FgHtcDicfnfoxgQCNg4O6vfk9GVnxA0vSqO321ogUo0b7czYTidj7fQENvWFMWOkUg=="
},
"validate-npm-package-license": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
@ -24440,6 +24531,33 @@
"extsprintf": "^1.2.0"
}
},
"view-design": {
"version": "4.7.0",
"resolved": "https://registry.npmjs.org/view-design/-/view-design-4.7.0.tgz",
"integrity": "sha512-WRvVRfsZciN0aJYlz+6b1zxs5G8tLFb4OUKOu+PiN0QyIGmdgWVziEyEmioYtJahQpueWiQpRYGzyxrpz3UkWQ==",
"requires": {
"async-validator": "^3.3.0",
"deepmerge": "^2.2.1",
"element-resize-detector": "^1.2.0",
"js-calendar": "^1.2.3",
"lodash.throttle": "^4.1.1",
"popper.js": "^1.14.6",
"tinycolor2": "^1.4.1",
"v-click-outside-x": "^3.7.1"
},
"dependencies": {
"async-validator": {
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/async-validator/-/async-validator-3.5.2.tgz",
"integrity": "sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ=="
},
"deepmerge": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz",
"integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA=="
}
}
},
"vm-browserify": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",

@ -18,6 +18,7 @@
"echarts-gl": "^2.0.9",
"element-theme-chalk": "^2.15.14",
"element-ui": "^2.15.14",
"view-design": "^4.7.0",
"vue": "^2.6.11",
"vue-particles": "^1.0.9",
"vue-router": "^3.1.3",

@ -1,8 +1,16 @@
import { fetch,get } from '@/utils/request.js';
import request from '@/utils/request.js';
// 请求方法
// 'getlist': function (data) {
// return request.get('/api/getdata/getlist', data, {}, 'pro')
// },
// 'getDIST': function (options) {
// return request.post('/api/getdata/getDIST', {}, options, 'pro')
// },
/**
* @name 首页模块
*/
// 获取地址列表
export const ceshi =(params) => {
return fetch('/sys/baseDict/queryChannleDict',params);
return request.get('/sys/baseDict/queryChannleDict',params,{},'pro');
}

@ -28,7 +28,7 @@
<router-link class="nav-link" to="/globalNetwork">全球网络</router-link>
</li>
<li class="nav-item" >
<router-link class="nav-link" to="/news">平台专区</router-link>
<router-link class="nav-link" to="/platform">平台专区</router-link>
</li>
<li class="nav-item" >
<router-link class="nav-link" to="/two">关于我们</router-link>
@ -81,7 +81,7 @@
<router-link class="nav-link" to="/globalNetwork">全球网络</router-link>
</li>
<li class="nav-item" >
<router-link class="nav-link" to="/news">平台专区</router-link>
<router-link class="nav-link" to="/platform">平台专区</router-link>
</li>
<li class="nav-item" >
<router-link class="nav-link" to="/two">关于我们</router-link>

@ -6,13 +6,14 @@ import ElementUI from 'element-ui';
// import 'element-theme-chalk';
import App from "./App.vue";
import router from "./router";
import Scrollspy from 'vue2-scrollspy';
import BootstrapVue from 'bootstrap-vue'
import VueYoutube from 'vue-youtube'
import VueParticles from 'vue-particles'
import http from 'axios'
Vue.prototype.$http = http
import router from "./router";

@ -1,18 +1,26 @@
import Vue from "vue";
import VueRouter from "vue-router";
// 没啥子用
import Login from "./pages/login.vue";
import Signup from "./pages/signup.vue";
import Forgotpassword from './pages/password-forgot.vue';
// 首页
import home from "../view/home/index.vue";
import news from "../view/home/news/index.vue";
import newsDetail from "../view/home/news/detail.vue";
// 业务介绍
import business from "../view/business/index.vue";
import sea from "../view/business/tab/sea.vue"
import air from "../view/business/tab/air.vue"
import road from "../view/business/tab/road.vue"
import news from "../view/news/index.vue";
import newsDetail from "../view/news/detail.vue";
// 全球网络
import globalNetwork from "../view/globalNetwork/index.vue";
// 平台专区
import platform from "../view/platform/index.vue"
import warehouseMap from "../view/platform/tab/warehouseMap.vue"
import AMAZON from "../view/platform/tab/AMAZON.vue"
import Login from "./pages/login.vue";
import Signup from "./pages/signup.vue";
import Forgotpassword from './pages/password-forgot.vue';
Vue.use(VueRouter);
@ -20,8 +28,17 @@ const routes = [
{
path: "/home",
name: "home",
component: home,
// redirect: "/Index-1"
component: home
},
{
path: "/news",
name: "news",
component: news
},
{
path: "/newsDetail",
name: "newsDetail",
component: newsDetail
},
{
path: "/business",
@ -44,19 +61,24 @@ const routes = [
component: road,
},
{
path: "/news",
name: "news",
component: news
path: "/globalNetwork",
name: "globalNetwork",
component: globalNetwork
},
{
path: "/newsDetail",
name: "newsDetail",
component: newsDetail
path: "/platform",
name: "platform",
component: platform
},
{
path: "/globalNetwork",
name: "globalNetwork",
component: globalNetwork
path: "/warehouseMap",
name: "warehouseMap",
component: warehouseMap
},
{
path: "/AMAZON",
name: "AMAZON",
component: AMAZON
},
{
path: "/login",

@ -1,233 +0,0 @@
<script>
import Earth from "@/view/home/homeComponents/earth.vue";
import Amazon from "@/view/home/homeComponents/Amazon";
import beforeDelivery from "@/view/home/homeComponents/beforeDelivery";
import DulyReceived from "@/view/home/homeComponents/dulyReceived ";
import LocalAdded from "@/view/home/homeComponents/LocalAdded";
import ForeignTransport from "@/view/home/homeComponents/foreignTransport";
import DomesticCustomsDeclaration from "@/view/home/homeComponents/domesticCustomsDeclaration";
import TrunkTransport from "@/view/home/homeComponents/trunkTransport";
import Footer from "@/view/home/homeComponents/footer";
import Switcher from "@/view/home/homeComponents/switcher";
/**
* Index-1 component
*/
export default {
components: {
Earth,
Amazon,
beforeDelivery,
DulyReceived ,
LocalAdded,
ForeignTransport,
DomesticCustomsDeclaration,
TrunkTransport,
Footer,
Switcher
},
methods: {
/**
* Toggle menu
*/
toggleMenu() {
document.getElementById("navbarCollapse").classList.toggle("show");
}
}
};
</script>
<template>
<div>
<!-- STRAT NAVBAR -->
<nav
class="navbar navbar-expand-lg fixed-top navbar-white navbar-custom sticky sticky-dark"
id="navbar"
>
<div class="container">
<!-- LOGO -->
<a class="navbar-brand logo text-uppercase" href="/">
<i class="mdi mdi-alien"></i>Hiric
</a>
<button
class="navbar-toggler"
type="button"
data-toggle="collapse"
data-target="#navbarCollapse"
aria-controls="navbarCollapse"
aria-expanded="false"
aria-label="Toggle navigation"
@click="toggleMenu()"
>
<i class="mdi mdi-menu"></i>
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul
class="navbar-nav navbar-center"
id="mySidenav"
>
<li class="nav-item">
<a
v-scroll-to="{ el:'#home' }"
class="nav-link"
data-scroll-spy-id="home"
href="javascript: void(0);"
>Home</a>
</li>
<li class="nav-item">
<a
v-scroll-to="{ el:'#features', offset: -5 }"
class="nav-link"
data-scroll-spy-id="features"
href="javascript: void(0);"
>Features</a>
</li>
<li class="nav-item">
<a
v-scroll-to="{ el:'#services', offset: -5 }"
class="nav-link"
data-scroll-spy-id="services"
href="javascript: void(0);"
>Services</a>
</li>
<li class="nav-item">
<a
v-scroll-to="{ el:'#about', offset: -5 }"
class="nav-link"
data-scroll-spy-id="about"
href="javascript: void(0);"
>About</a>
</li>
<li class="nav-item">
<a
v-scroll-to="{ el:'#pricing', offset: -5 }"
class="nav-link"
data-scroll-spy-id="pricing"
href="javascript: void(0);"
>Pricing</a>
</li>
<li class="nav-item">
<a
v-scroll-to="{ el:'#blog'}"
class="nav-link"
data-scroll-spy-id="blog"
href="javascript: void(0);"
>Blog</a>
</li>
<li class="nav-item">
<a
v-scroll-to="{ el:'#contact' }"
class="nav-link"
data-scroll-spy-id="contact"
href="javascript: void(0);"
>Contact</a>
</li>
</ul>
<div class="nav-button ml-auto">
<ul class="nav navbar-nav navbar-right">
<li>
<button type="button" class="btn btn-custom navbar-btn btn-rounded">Try it Free</button>
</li>
</ul>
</div>
</div>
</div>
</nav>
<!-- END NAVBAR -->
<div v-scroll-spy>
<!--START HOME-->
<section
class="section bg-home home-half"
id="home"
style="background-size: cover;background-position: center;"
:style="{'background': 'url(' + require('@/assets/images/bg-home.jpg') + ')'}"
>
<!-- <div class="bg-overlay"></div> -->
<div class="container">
<div class="row">
<div class="col-lg-8 offset-lg-2 text-white text-center">
<h4 class="home-small-title">Awesome Design</h4>
<h1 class="home-title">We love make things amazing and simple</h1>
<p class="padding-t-15 home-desc mx-auto">
Maecenas class semper class semper sollicitudin lectus lorem
iaculis imperdiet aliquam vehicula tempor auctor curabitur pede
aenean ornare.
</p>
<p class="play-shadow margin-l-r-auto">
<a v-b-modal.modal class="play-btn video-play-icon">
<i class="mdi mdi-play text-center"></i>
</a>
<b-modal id="modal" hide-footer size="lg" centered header-close-variant="white">
<youtube video-id="lG0Ys-2d4MA" ref="youtube" width="900" height="500"></youtube>
</b-modal>
</p>
</div>
</div>
</div>
</section>
<!--END HOME-->
<section class="section-sm bg-light">
<div class="container">
<div class="row">
<div class="col-md-3">
<div class="client-images my-3 my-md-0">
<img
src="@/assets/images/clients/1.png"
alt="logo-img"
class="mx-auto img-fluid d-block"
/>
</div>
</div>
<div class="col-md-3">
<div class="client-images my-3 my-md-0">
<img
src="@/assets/images/clients/2.png"
alt="logo-img"
class="mx-auto img-fluid d-block"
/>
</div>
</div>
<div class="col-md-3">
<div class="client-images my-3 my-md-0">
<img
src="@/assets/images/clients/3.png"
alt="logo-img"
class="mx-auto img-fluid d-block"
/>
</div>
</div>
<div class="col-md-3">
<div class="client-images my-3 my-md-0">
<img
src="@/assets/images/clients/4.png"
alt="logo-img"
class="mx-auto img-fluid d-block"
/>
</div>
</div>
</div>
</div>
</section>
<Earth />
<Amazon />
<beforeDelivery />
<dulyReceived />
<LocalAdded />
<ForeignTransport />
<DomesticCustomsDeclaration />
<TrunkTransport />
<Footer />
<Switcher />
</div>
</div>
</template>
<style scoped>
</style>

@ -0,0 +1,3 @@
import vue from 'vue'
// 全局通知事件
export default new vue({});

@ -1,157 +1,157 @@
import axios from 'axios';
import axios from 'axios'
import Bus from './bus'
import util from './util.js';
axios.defaults.timeout = 5000;
axios.defaults.baseURL ='http://192.168.10.53:9100/v1/v1'; //填写域名
// axios.defaults.baseURL ='http://47.119.163.201:81/#/'; //填写域名
import ViewUI from 'view-design';
// http request 拦截器
axios.interceptors.request.use(
config => {
config.data = JSON.stringify(config.data);
config.headers = {
'Content-Type':'application/x-www-form-urlencoded'
}
return config;
axios.interceptors.response.use(
response => {
return response
},
//接口错误状态处理,也就是说无响应时的处理
error => {
return Promise.reject(error);
}
);
//响应拦截器即异常处理
axios.interceptors.response.use(response => {
return response
}, err => {
if (err && err.response) {
switch (err.response.status) {
case 400:
console.log('错误请求')
break;
case 401:
console.log('未授权,请重新登录')
break;
case 403:
console.log('拒绝访问')
break;
case 404:
console.log('请求错误,未找到该资源')
break;
case 405:
console.log('请求方法未允许')
break;
case 408:
console.log('请求超时')
break;
case 500:
console.log('服务器端出错')
break;
case 501:
console.log('网络未实现')
break;
case 502:
console.log('网络错误')
break;
case 503:
console.log('服务不可用')
break;
case 504:
console.log('网络超时')
break;
case 505:
console.log('http版本不支持该请求')
break;
default:
console.log(`连接错误${err.response.status}`)
}
if (error.response.status == 403) {
Bus.$emit('Illegalcalls');
} else if (error.response.status == 400) {
ViewUI.Notice.error({ title: 'Service Error 400', desc: '参数错误,请检查参数信息' });
} else if (error.response.status == 404) {
ViewUI.Notice.error({ title: 'Service Error 404', desc: '未找到接口,请检查链接地址' });
} else if (error.response.status == 500) {
ViewUI.Notice.error({ title: 'Service Error 500', desc: '服务器出现错误' });
} else if (error.response.status == 502) {
ViewUI.Notice.error({ title: 'Service Error 502', desc: '服务器响应出现错误' });
} else {
console.log('连接到服务器失败')
ViewUI.Notice.error({ title: 'Service Error' + error.response.status, desc: '链接异常,请检查错误信息' });
}
return Promise.resolve(err.response)
return Promise.reject(error) // 返回接口返回的错误信息
// return Promise.reject(error.response.status) // 返回接口返回的错误信息
})
let AxiosEventCatch = {};
/**
* 封装get方法
* @param url
* @param data
* @returns {Promise}
* 隐藏 loading 方法
*
* @param {*} id
* @memberof Request
*/
export function fetch(url,params={}){
return new Promise((resolve,reject) => {
axios.get(url,{
params:params
})
.then(response => {
resolve(response.data);
})
.catch(err => {
reject(err)
})
})
const hideLoading = function (id) {
delete AxiosEventCatch[id];
if (Object.keys(AxiosEventCatch).length == 0) {
Bus.$emit('loading-change', false)
}
}
/**
* 封装post请求
* @param url
* @param data
* @returns {Promise}
*/
export function post(url,data = {}){
return new Promise((resolve,reject) => {
axios.post(url,data)
.then(response => {
resolve(response.data);
},err => {
reject(err)
})
})
const Event = function (options) {
console.log(options)
var id = util.Guid();
if (options.loading !== false) {
AxiosEventCatch[id] = '';
Bus.$emit('loading-change', true)
}
var baseUrlPath = ''
// if (process.env.NODE_ENV == 'development') {
// try {
// baseUrlPath = window.WIN_COMFIG.service[options.reqType]
// } catch (error) {
// baseUrlPath = window.WIN_COMFIG.service.pro
// }
// } else {
// baseUrlPath = location.protocol
if(options.reqType == 'pro'){
console.log('baseUrlPath',process.env.VUE_APP_URL)
baseUrlPath = `${process.env.VUE_APP_URL}`
}else {
baseUrlPath = `${process.env.VUE_APP_URL}`
}
/**
* 封装patch请求
* @param url
* @param data
* @returns {Promise}
*/
// }
export function patch(url,data = {}){
return new Promise((resolve,reject) => {
axios.patch(url,data)
.then(response => {
resolve(response.data);
},err => {
reject(err)
})
})
var _url = baseUrlPath + options.url;
if(options.params) {
var _params = JSON.parse(JSON.stringify(options.params));
_url = _url.replace(/\{\w+\}/g, function (i) {
var _src = i.replace('{', '').replace('}', '');
if (_params.hasOwnProperty(_src)) {
var _value = _params[_src];
delete _params[_src];
return _value;
}
});
}else {
_params = {}
}
/**
* 封装put请求
* @param url
* @param data
* @returns {Promise}
*/
export function put(url,data = {}){
return new Promise((resolve,reject) => {
axios.put(url,data)
.then(response => {
resolve(response.data);
},err => {
reject(err)
})
})
return axios({
method: options.type,
url: _url,
params: _params,
data: options.data
}).then(function (res) {
if (options.loading !== false) {
hideLoading(id);
}
return res.data;
}).catch(function (err) {
if (options.loading !== false) {
hideLoading(id);
}
throw err.response
});
}
export default {
/**
* 下面是获取数据的接口
* apis 接口调用参数
*
* @param {String} url 链接地址
* @param {Object} params Url 传参对象
* @param {Object} data PostData 传参对象
* @param {String} reqType 开发模式下, 链接地址指向
* @param {Blob} loading 是否显示loading 开关
* @return {axios} 接口异步对象
*/
export const ceshi = {
exam: function(paramObj){
return fetch('/sys/baseDict/queryChannleDict',paramObj);
post(url, params, data, reqType, loading) {
var _data = {};
_data.type = 'post';
_data.data = data || {};
_data.reqType = reqType;
_data.params = params;
_data.url = url;
_data.loading = loading
return Event(_data)
},
get(url, params, data, reqType, loading) {
var _data = {};
_data.type = 'get';
_data.data = data || {};
_data.reqType = reqType;
_data.params = params;
_data.url = url;
_data.loading = loading
return Event(_data)
},
put(url, params, data, reqType, loading) {
var _data = {};
_data.type = 'put';
_data.data = data || {};
_data.reqType = reqType;
_data.params = params;
_data.url = url;
_data.loading = loading
return Event(_data)
},
delete(url, params, data, reqType, loading) {
var _data = {};
_data.type = 'delete';
_data.data = data || {};
_data.reqType = reqType;
_data.params = params;
_data.url = url;
_data.loading = loading
return Event(_data)
}
}

@ -0,0 +1,992 @@
// 整理基本库方法
/** @type {Object} 正则库 */
var regulars = {
year: {
regExp: /^(19|20)\d{2}$/,
message: "只能为年份(四位,1900-2099)"
},
number: {
regExp: /^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/,
message: "只能为数字"
},
bankNum: {
regExp: /^\d{16}|\d{19}$/,
message: "格式错误"
},
telephone: {
regExp: /^(0[0-9]{2,3}-)?([2-9][0-9]{6,7})+(-[0-9]{1,4})?$/,
message: "格式错误"
},
int: {
regExp: /^[0-9]*$/,
message: "只能为正整数"
},
phone: {
regExp: /^[1][0-9]{10}$/,
message: "格式错误"
},
allChinese: {
regExp: /^([\u4E00-\u9FA5]+?)+$/,
message: "只能为中文"
},
haveChinese: {
regExp: "[\\u4E00-\\u9FFF]+",
message: "中含有汉字"
},
idCard15: {
regExp: /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/,
message: "格式错误"
},
idCard18: {
regExp: /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$/,
message: "格式错误"
},
url: {
regExp: /^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+/,
message: "格式错误"
},
email: {
regExp: /^[-_A-Za-z0-9]+@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/,
message: "格式错误"
},
Special: {
regExp: ["~", "`", "!", "@", "#", "$", "%", "^", "&", "*", "{", "}", "[", "]", "(", ")", ":", ";", "'", "|", "\\", "<", ">", "?", "/", "<<", ">>", "||", "//", "administrators", "administrator", "管理员", "系统管理员", "admin", "select", "delete", "update", "insert", "create", "drop", "alter", "trancate"],
message: "不能包含特殊字符"
},
null: {
regExp: "^[ ]+$",
message: "不能为空"
},
};
/**
*
* 判断对象是否完全一致
* @param {*} a
* @param {*} b
* @return {*}
*/
const isEqual = function (a, b) {
if (a === b) {
return a !== 0 || 1 / a === 1 / b;
};
if (a == null || b == null) {
return a === b;
};
var A = Object.prototype.toString.call(a);
var B = Object.prototype.toString.call(b);
if (A !== B) {
return false;
};
switch (A) {
case '[object RegExp]':
case '[object String]':
return '' + a === '' + b;
case '[object Number]':
if (+a !== +a) {
return +b !== +b;
};
return +a === 0 ? 1 / +a === 1 / b : +a === +b;
case '[object Date]':
case '[object Boolean]':
return +a === +b;
};
if (A == '[object Object]') {
if (JSON.stringify(a) != JSON.stringify(b)) {
return false;
};
return true;
};
if (A == '[object Array]') {
if (a.toString() == b.toString()) {
return true;
}
return false;
};
};
/**
* 判断是否在数组中
*
* @param {*} str
* @param {*} _array
* @return {*}
*/
const inArray = function (str, _array) {
let isInArray = -1;
for (let i = 0; i < _array.length; i++) {
const element = _array[i];
if (isEqual(element, str)) {
isInArray = i;
break;
};
};
return isInArray;
};
//
/**
* 获取对象key值列表
*
* @param {*} obj
* @return {*}
*/
const getKeyArray = function (obj) {
var _array = [];
eachObject(obj, function (item, key) {
_array.push(key);
});
return _array;
};
//
/**
* 将数组以 key 对应属性 为键值 转换为对象key值默认为ID;
*
* @param {*} _array
* @param {*} key
* @return {*}
*/
const converArrayToObj = function (_array, key) {
var obj = {};
key = key || 'id';
var canConver = true;
for (let i = 0; i < _array.length; i++) {
const element = _array[i];
if (element.hasOwnProperty(key)) {
obj[element[key].toString()] = element;
} else {
canConver = false;
}
};
if (canConver) {
return obj;
} else {
console.error('对象转换错误 未找到对应Key值');
return obj;
};
};
//
/**
* 历遍对象并执行方法
*
* @param {*} obj
* @param {*} callback
*/
const eachObject = function (obj, callback) {
for (const key in obj) {
if (obj.hasOwnProperty(key)) {
const element = obj[key];
var value = callback(element, key);
if (value === false) {
break;
};
}
};
};
/**
* 验证方法
*
* @param {*} type
* @param {*} str
* @return {*}
*/
function test(type, str) {
var re = new RegExp(regulars[type].regExp);
return !re.test(str) ? true : false;
};
// 验证用方法集合
var verifyObj = {
year: {
event: value => { return test('year', value) },
message: regulars.year.message,
},
number: {
event: value => { return test('number', value) },
message: regulars.number.message
},
bankNum: {
event: value => { return test('bankNum', value) },
message: regulars.bankNum.message
},
telephone: {
event: value => { return test('telephone', value) },
message: regulars.telephone.message
},
int: {
event: value => { return test('int', value) },
message: regulars.int.message
},
phone: {
event: value => { return test('phone', value) },
message: regulars.phone.message
},
url: {
event: value => { return test('url', value) },
message: regulars.url.message
},
email: {
event: value => { return test('email', value) },
message: regulars.email.message
},
allChinese: {
event: value => { return test('allChinese', value) },
message: regulars.allChinese.message
},
haveChinese: {
event: function (str) {
var re = new RegExp(regulars.haveChinese.regExp);
return re.test(str) ? true : false;
},
message: regulars.haveChinese.message
},
notNull: {
event: function (str) {
if (str == "" || str == undefined || str == null || str == NaN) return !false;
var re = new RegExp(regulars.null.regExp);
return re.test(str);
},
message: regulars.null.message
},
isSpecial: {
event: function (str) {
str = str.toLowerCase();
for (var i = 0; i < regulars.Special.regExp.length; i++) {
if (str.indexOf(regulars.Special.regExp[i]) >= 0) {
return false;
}
}
return true;
},
message: regulars.Special.message
},
isIdCard: {
event: function (str) {
var re1 = new RegExp(regulars.idCard15.regExp);
var re2 = new RegExp(regulars.idCard18.regExp);
return !(re1.test(str) || re2.test(str) ? true : false);
},
message: regulars.idCard18.message
}
};
//
/**
* 判断变量是否为某一值
*
* @param {*} obj
* @param {*} type
* @return {*}
*/
const is = function (obj, type) {
if (type) {
var result = null;
var objectString = Object.prototype.toString.call(obj);
switch (type) {
case "string":
result = objectString == "[object String]";
break;
case "function":
result = objectString == "[object Function]";
break;
case "array":
result = objectString == "[object Array]";
break;
case "number":
result = objectString == "[object Number]" && obj === obj;
break;
case "date":
result = objectString == "[object Date]";
break;
case "object":
result = objectString == "[object Object]";
break;
case "bool":
result = objectString == "[object Boolean]";
break;
case "regExp":
result = objectString == "[object RegExp]";
break;
case "null":
result = objectString == "[object Null]";
break;
case "undefined":
result = objectString == "[object Undefined]";
break;
case "NaN":
result = (obj !== obj);
break;
};
return result;
} else {
var mold = null;
var objectString = Object.prototype.toString.call(obj);
switch (objectString) {
case "[object String]":
mold = "string";
break;
case "[object Function]":
mold = "function";
break;
case "[object Array]":
mold = "array";
break;
case "[object Number]":
if (obj !== obj) {
mold = "NaN";
} else {
mold = "number"
};
break;
case "[object Date]":
mold = "date";
break;
case "[object Object]":
mold = "object";
break;
case "[object Boolean]":
mold = "bool";
break;
case "[object RegExp]":
mold = "regExp";
break;
case "[object Null]":
mold = "null";
break;
case "[object Undefined]":
mold = "undefined";
break;
};
return mold;
};
};
/**
* 自定义判断位数区间
*
* @param {*} type
* @param {*} str
* @return {*}
*/
const customLength = function (type, str) {
var name = type.split('$');
var length = str.toString().length;
var nums = parseInt(name[1]);
if (name[0] == 'les') {
return !(length > nums) ? '不能小于' + nums + '位' : false;
} else if (name[0] == 'gre') {
var nums = parseInt(name[1]);
return !(length <= nums) ? '不能大于' + nums + '位' : false;
} else {
console.error('error => 未找到验证规则:' + type);
};
};
//
/**
* 正则验证方法
*
* @param {*} value
* @param {*} type
* @return {*}
*/
const jude = function (value, type) {
var keyArray = getKeyArray(verifyObj);
if (type.indexOf('$') != -1) {
return customLength(type, value);
} else if (inArray(type, keyArray) != -1) {
var answer = verifyObj[type].event(value);
return answer ? verifyObj[type].message : false;
} else {
console.error('error => 未找到验证规则:' + type);
};
};
/**
* 按照规则进行验证
*
* @param {*} singleRule
* @param {*} value
* @param {*} text
* @return {*}
*/
const verifyRule = function (singleRule, value, text) {
// 返回对象类型
var ruleType = is(singleRule);
if (ruleType == 'string') {
// 当为String类型时,去默认验证方法中寻找
var result = jude(value, singleRule);
if (result) {
return text + result;
} else {
return false;
};
} else if (ruleType == 'function') {
// 当为方法类型时,执行方法,并返回验证 (方法通过,返回false,否则返回错误语句);
var result = singleRule(value);
if (result) {
return result;
} else {
return false;
};
} else if (ruleType == 'object' && singleRule.regExp && is(singleRule.regExp, 'regExp')) {
// 当对象方法为正则表达式时,直接使用正则表达式进行判断
var errorText = singleRule.errorText;
var regular = singleRule.regExp;
var re = new RegExp(regular);
if (re.test(value)) {
return false;
} else {
return errorText;
};
} else {
// 其他类型直接跳过,控制台输出错误信息
console.error('rule模块 : 未识别的判断类型');
return false;
};
};
/**
* 规则验证
*
* @param {*} rulesObj
* @param {*} value
* @return {*}
*/
const rules = function (rulesObj, value) {
var text = rulesObj.text;
var rulesArray = rulesObj.rules;
if (!rulesArray) {
return false;
};
// 判断是否为数组
if (is(rulesArray, 'array')) {
// 跳过非空验证
// if ($.inArray("notNull", rulesArray) == -1 && (value == '' || value === null)) {
// return false;
// };
// 进行循环验证
var _text = false;
for (var i = 0; i < rulesArray.length; i++) {
var element = rulesArray[i];
var result = verifyRule(element, value, text);
if (result) {
_text = result;
break;
};
};
if (_text) {
return _text;
} else {
return false;
};
} else if (is(rulesArray, 'string')) {
// 进行单条验证
var result = verifyRule(rulesArray, value, text);
if (result) {
return result;
} else {
return false;
};
} else if (is(rulesArray, 'function')) {
// 进行单条验证
var result = verifyRule(rulesArray, value, text);
if (result) {
return result;
} else {
return false;
};
}
};
/**
* 深拷贝对象
*
* @param {*} obj
* @return {*}
*/
var clone = function (obj) {
if (obj === null) return null
if (typeof obj !== 'object') return obj;
if (obj.constructor === Date) return new Date(obj);
var newObj = new obj.constructor(); //保持继承链
for (var key in obj) {
if (obj.hasOwnProperty(key)) { //不遍历其原型链上的属性
var val = obj[key];
newObj[key] = typeof val === 'object' ? clone(val) : val;
}
}
return newObj;
}
//
/**
* 添加验证方法
*
* @param {*} obj
* @param {*} key
* @return {*}
*/
const setJudeRule = function (obj, key) {
if (verifyObj.hasOwnProperty(key)) {
console.error('key值重复不可添加');
return;
};
if (obj.hasOwnProperty('event') && obj.hasOwnProperty('message')) {
verifyObj[key] = obj;
} else {
console.error('添加的验证方法不符合规范');
return;
}
};
/**
* 获取嵌套层级
*
* @param {*} treeData
* @param {*} key
* @return {*}
*/
var getMaxFloor = function (treeData, key) {
let floor = 0
let v = this
let max = 0
function each(data, floor) {
data.forEach(e => {
e.floor = floor
if (floor > max) {
max = floor
}
if (e.hasOwnProperty(key)) {
const element = e[key];
if (element.length > 0) {
each(element, floor + 1)
}
};
})
}
each(treeData, 1)
return max
};
/**
* 生成GUID
*
* @return {*}
*/
var Guid = function () {
var guid = '';
for (var i = 1; i <= 32; i++) {
var n = Math.floor(Math.random() * 16.0).toString(16);
guid += n;
if ((i == 8) || (i == 12) || (i == 16) || (i == 20))
guid += '-';
}
return guid;
};
/**
* 生成UUID
*
* @return {*}
*/
var uuid = function () {
var uuid = '';
for (var i = 1; i <= 32; i++) {
var n = Math.floor(Math.random() * 16.0).toString(16);
uuid += n;
}
return uuid;
};
var fileType = {
'image': ['webp', 'baidubmp', 'pcx', 'tif', 'gif', 'jpeg', 'jpg', 'tga', 'exif', 'fpx', 'svg', 'pcd', 'dxf', 'ufo', 'png', 'hdri', 'wmf', 'flic', 'emf', 'ico'],
'psd': ['psd'],
'cad': ['cdr', 'ai', 'eps', 'raw'],
'text': ['txt'],
'html': ['htm', 'html'],
'mirror': ['iso', 'bin', 'img', 'tao', 'dao', 'cif', 'fcd'],
'video': ['avi', 'mpeg', 'mpg', 'flv', 'dat', 'ra', 'rm', 'rmvb', 'mov', 'qt', 'asf', 'wmv', 'mkv'],
'mp3': ['mp3', 'wma', 'mpg', 'wav', 'mv'],
'zip': ['rar', 'zip', '7z', 'tar', 'xz', 'gz'],
'xsl': ['xls', 'xlsx'],
'ppt': ['ppt', 'pptx'],
'doc': ['doc', 'docx'],
'pdf': ['pdf'],
'config': ['conf', 'config', 'ini'],
};
var fileTypeMapping = {};
for (const key in fileType) {
if (fileType.hasOwnProperty(key)) {
for (let i = 0; i < fileType[key].length; i++) {
const element = fileType[key][i];
fileTypeMapping[element] = key
};
}
}
/**
* 获取后缀名图标类别
*
* @param {*} url
* @return {*}
*/
var getSuffixType = function (url) {
var suffix = url.substring(url.lastIndexOf(".") + 1, url.length);
if (fileTypeMapping.hasOwnProperty(suffix.toLowerCase())) {
const element = fileTypeMapping[suffix.toLowerCase()];
return element;
} else {
return 'file'
}
};
/**
* 获取Url参数
*
* @param {*} variable
* @return {*}
*/
function getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == variable) { return pair[1]; }
}
return (false);
};
/**
* 获取浏览器信息
*
* @param {*} key
* @return {*}
*/
function device(key) {
var agent = navigator.userAgent.toLowerCase();
//获取版本号
var getVersion = function (label) {
var exp = new RegExp(label + '/([^\\s\\_\\-]+)');
label = (agent.match(exp) || [])[1];
return label || false;
};
//返回结果集
var result = {
os: function () { //底层操作系统
if (/windows/.test(agent)) {
return 'windows';
} else if (/linux/.test(agent)) {
return 'linux';
} else if (/iphone|ipod|ipad|ios/.test(agent)) {
return 'ios';
} else if (/mac/.test(agent)) {
return 'mac';
}
}(),
ie: function () { //ie版本
return (!!window.ActiveXObject || "ActiveXObject" in window) ? (
(agent.match(/msie\s(\d+)/) || [])[1] || '11' //由于ie11并没有msie的标识
) : false;
}(),
weixin: getVersion('micromessenger') //是否微信
};
//任意的key
if (key && !result[key]) {
result[key] = getVersion(key);
}
//移动设备
result.android = /android/.test(agent);
result.ios = result.os === 'ios';
result.mobile = (result.android || result.ios) ? true : false;
return result;
};
//拆分整数与小数
function splits(tranvalue) {
var value = new Array('', '');
var temp = tranvalue.split(".");
for (var i = 0; i < temp.length; i++) {
value[i] = temp[i];
}
return value;
}
/**
* 数字转汉字
*
* @param {*} tranvalue
* @return {*}
*/
function transformSmallNumber(tranvalue) {
try {
tranvalue = tranvalue.toString();
var i = 1;
var dw2 = new Array("", "万", "亿");//大单位
var dw1 = new Array("十", "百", "千");//小单位
var dw = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九");//整数部分用
//以下是小写转换成大写显示在合计大写的文本框中
//分离整数与小数
var source = splits(tranvalue);
var num = source[0];
var dig = source[1];
//转换整数部分
var k1 = 0;//计小单位
var k2 = 0;//计大单位
var sum = 0;
var str = "";
var len = source[0].length;//整数的长度
for (i = 1; i <= len; i++) {
var n = source[0].charAt(len - i);//取得某个位数上的数字
var bn = 0;
if (len - i - 1 >= 0) {
bn = source[0].charAt(len - i - 1);//取得某个位数前一位上的数字
}
sum = sum + Number(n);
if (sum != 0) {
str = dw[Number(n)].concat(str);//取得该数字对应的大写数字并插入到str字符串的前面
if (n == '0') sum = 0;
}
if (len - i - 1 >= 0) {//在数字范围内
if (k1 != 3) {//加小单位
if (bn != 0) {
str = dw1[k1].concat(str);
}
k1++;
} else {//不加小单位,加大单位
k1 = 0;
var temp = str.charAt(0);
if (temp == "万" || temp == "亿")//若大单位前没有数字则舍去大单位
str = str.substr(1, str.length - 1);
str = dw2[k2].concat(str);
sum = 0;
}
}
if (k1 == 3)//小单位到千则大单位进一
{ k2++; }
};
// //转换小数部分
var strdig = "";
if (dig != "") {
var n = dig.charAt(0);
if (n != 0) {
strdig += '点' + dw[Number(n)];//加数字
}
var n = dig.charAt(1);
if (n != 0) {
strdig += dw[Number(n)];//加数字
};
var n = dig.charAt(2);
if (n != 0) {
strdig += dw[Number(n)];//加数字
};
var n = dig.charAt(3);
if (n != 0) {
strdig += dw[Number(n)];//加数字
};
var n = dig.charAt(4);
if (n != 0) {
strdig += dw[Number(n)];//加数字
}
}
str += strdig;
str = str.replace(/^一十/, '十');
} catch (e) {
return "转换错误";
}
return str;
};
// 定义转换函数
/**
* 钱数转大写
*
* @param {*} tranvalue
* @return {*}
*/
function transformBigNumber(tranvalue) {
try {
tranvalue = tranvalue.toString();
var i = 1;
var dw2 = new Array("", "万", "亿");//大单位
var dw1 = new Array("拾", "佰", "仟");//小单位
var dw = new Array("零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖");//整数部分用
//以下是小写转换成大写显示在合计大写的文本框中
//分离整数与小数
var source = splits(tranvalue);
var num = source[0];
var dig = source[1];
//转换整数部分
var k1 = 0;//计小单位
var k2 = 0;//计大单位
var sum = 0;
var str = "";
var len = source[0].length;//整数的长度
for (i = 1; i <= len; i++) {
var n = source[0].charAt(len - i);//取得某个位数上的数字
var bn = 0;
if (len - i - 1 >= 0) {
bn = source[0].charAt(len - i - 1);//取得某个位数前一位上的数字
}
sum = sum + Number(n);
if (sum != 0) {
str = dw[Number(n)].concat(str);//取得该数字对应的大写数字并插入到str字符串的前面
if (n == '0') sum = 0;
}
if (len - i - 1 >= 0) {//在数字范围内
if (k1 != 3) {//加小单位
if (bn != 0) {
str = dw1[k1].concat(str);
}
k1++;
} else {//不加小单位,加大单位
k1 = 0;
var temp = str.charAt(0);
if (temp == "万" || temp == "亿")//若大单位前没有数字则舍去大单位
str = str.substr(1, str.length - 1);
str = dw2[k2].concat(str);
sum = 0;
}
}
if (k1 == 3)//小单位到千则大单位进一
{ k2++; }
}
//转换小数部分
var strdig = "";
if (dig != "") {
var n = dig.charAt(0);
if (n != 0) {
strdig += dw[Number(n)] + "角";//加数字
}
var n = dig.charAt(1);
if (n != 0) {
strdig += dw[Number(n)] + "分";//加数字
}
}
str += "元" + strdig;
} catch (e) {
return "0元";
}
return str;
}
/**
* 是否为链接地址 验证方法
*
* @param {string} path
* @returns {Boolean}
*/
function isExternal(path) {
return /^(https?:|mailto:|tel:)/.test(path)
}
/**
* 通过 URL 地址获取参数
*/
function getUrlParam() {
let href = window.location.href
if (href.indexOf('?') > -1) {
let paramStr = href.split('?')[1]
let paramArr = paramStr.split('&')
let returnObj = {}
for (let i = 0; i < paramArr.length; i++) {
let paramItem = paramArr[i].split('=')
returnObj[paramItem[0]] = paramItem[1]
}
return returnObj
} else {
return {}
}
}
/**
* 判断是否为数字
*
* @param {*} obj
* @return {*}
*/
function isNumber(obj) {
return obj == +obj
}
/**
* @param {Object} fmt YYYY-mm-dd HH:MM:SS表示2019-06-06 19:45:00
* @notice 苹果环境safari 浏览器建议日期格式使用 YYYY/mm/dd
*/
function format(date, fmt) {
let ret
const opt = {
"Y+": date.getFullYear().toString(), // 年
"m+": (date.getMonth() + 1).toString(), // 月
"d+": date.getDate().toString(), // 日
"H+": date.getHours().toString(), // 时
"M+": date.getMinutes().toString(), // 分
"S+": date.getSeconds().toString() // 秒
// 有其他格式化字符需求可以继续添加,必须转化成字符串
}
for (let k in opt) {
ret = new RegExp("(" + k + ")").exec(fmt)
if (ret) {
fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
}
}
return fmt
}
export default {
getUrlParam,
device,
rules,
uuid,
Guid,
inArray,
getKeyArray,
eachObject,
is,
jude,
isEqual,
setJudeRule,
converArrayToObj,
clone,
getMaxFloor,
getSuffixType,// 获取文件后缀名
getQueryVariable,
transformBigNumber,
transformSmallNumber,
isExternal,
isNumber,
format
}

@ -7,7 +7,7 @@
<script>
// import echarts from 'echarts';
import * as echarts from 'echarts/core';
// import { MapChart } from 'echarts/charts';
import { MapChart } from 'echarts/charts';
import 'echarts-gl';
import WorldJSON from '@/assets/json/world.json';
export default {

@ -154,7 +154,7 @@
v-for="(item, index) in news"
:key="index"
:class="['newsSmall', { 'new-active': newIndex === index }]"
@click="newIndex = index"
@click="setNewsActive(item,index)"
>
<div class="smallTitle show-ellipsis ">{{ item.title }}
<img src="@/assets/images/home/iconImages/right.png" alt="">
@ -171,7 +171,7 @@
<div style="position: relative;">
<div class="container">
<div class=" flx-center" style="margin-top: 69px;">
<div class="viewBox">View More</div>
<div class="viewBox" @click="$router.push({name:'news'})">View More</div>
</div>
<div class="NewsTrends flx-only-justify-between " style="margin-top: 80px;padding: 45px 165px 65px 107px;">
<div class="flx-column-justify-around ">
@ -276,10 +276,10 @@ export default {
},
created() {
this.toTotal();
// let paramObj = {
// uid: "123456",
// };
ceshi().then((data) => {
let paramObj = {
uid: "123456",
};
ceshi(paramObj).then((data) => {
console.log(data);
});
@ -320,14 +320,23 @@ export default {
],
newIndex:0,
news: [
{ title: '重磅美通正式成为亚马逊TSPN服务商',content:"美通正式上线亚马逊ShipTrack承运商"},
{ title: '新动向美通成为亚马逊ShipTrack...',content:"美通正式上线亚马逊ShipTrack承运商"},
{ title: '重磅美通正式成为亚马逊TSPN服务商',content:"美通正式上线亚马逊ShipTrack承运商"},
{ title: '重磅美通正式成为亚马逊TSPN服务商',content:"美通正式上线亚马逊ShipTrack承运商"},
{ id:'1', title: '重磅美通正式成为亚马逊TSPN服务商',content:"美通正式上线亚马逊ShipTrack承运商"},
{ id:'2',title: '新动向美通成为亚马逊ShipTrack...',content:"美通正式上线亚马逊ShipTrack承运商"},
{ id:'3',title: '重磅美通正式成为亚马逊TSPN服务商',content:"美通正式上线亚马逊ShipTrack承运商"},
{ id:'4',title: '重磅美通正式成为亚马逊TSPN服务商',content:"美通正式上线亚马逊ShipTrack承运商"},
],
};
},
methods: {
setNewsActive(item,index) {
this.newIndex = index;
this.$router.push({
name: 'newsDetail',
query:{
id:item.id
}
});
},
setActive(item,index) {
console.log(item.transportMode,index);

@ -0,0 +1,328 @@
.platformBackground {
position: relative;
width: 100%;
height: 1000px;
background: url('../../assets/images/home/background.png') no-repeat center/cover;
}
.platform .el-button:hover {
background-color: #fff;
}
.platform .el-button.active:hover {
background: #00AFAF;
}
.platform .el-button.active .btn-text {
color: #fff;
}
.platform .btn-text {
color: #24303E;
border-right: none;
}
.platform .button-group {
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
}
/* 按钮海运下单切换 */
.platform .button-group {
display: flex;
border-radius: 20px;
overflow: hidden;
z-index:999;
background-color: #FFE7CE;
margin-left: 25px;
/* width: 312px; */
}
.platform .el-button {
flex: 1;
padding: 26px 0;
margin-left: 0px !important;
background: #fff;
cursor: pointer;
border: none; /* 移除单独的按钮边框 */
border-radius: 0px;
transition: all 0.3s ease;
/* 为按钮添加右边框 */
}
.platform .btn-text {
/* border-right: 1px solid #FFE7CE; */
height: 71px;
width: 236px;
padding: 0px 82px;
line-height: 71px;
color: var(--Brand-main-blue-1, #1A1E31);
font-family: "DingTalk JinBuTi";
font-size: 24px;
font-style: normal;
font-weight: 400;
}
.platform .el-button:last-child div {
border-right: none !important; /* 最后一个按钮不需要右边框 */
}
.platform .el-button.active {
color: white;
/* background-color: #3498db; */
background: #00AFAF;
z-index: 1; /* 为了在激活状态下覆盖相邻按钮的边框 */
}
.platform .el-button:hover {
background-color: #fff;
}
/* what service do i provice */
.platform .service-text-bg {
background-color: #f8f8f8;
z-index:0;
}
.platform .service-text {
position: relative;
z-index:0;
color: #151E2C;
text-align: center;
font-family: Montserrat;
font-size: 40px;
font-style: normal;
font-weight: 700;
line-height: 86.142px; /* 215.355% */
}
.platform .service-text div{
display: inline-block;
z-index: 666;
}
.platform .service-text i::after {
content: "";
display: inline-block;
position: absolute; /* Positions the pseudo-element in relation to the .service-text */
bottom: 20px;
right: 43.5%;
width: 165px;
height: 15px;
z-index:-1;
background-color: #00AFAF; /* Color of the underline */
}
.platform .service .service-text .serviceNews::after {
content: "";
right: 43.5%;
}
.platform .service .service-content {
display: flex;
width: 709px;
height: 172px;
flex-direction: column;
justify-content: center;
flex-shrink: 0;
color: rgba(21, 30, 44, 0.50);
text-align: center;
font-family: Montserrat;
font-size: 18px;
font-style: normal;
font-weight: 500;
line-height: 32px; /* 177.778% */
}
/* 自营仓 */
.buttonPropsBox {
width: 305px;
height: 30px;
flex-shrink: 0;
border: 1px solid #E7E7E7;
border-radius: 10px;
margin-bottom: 37px ;
padding: 24px;
}
.proprietaryImg {
width: 404px;
height: 436px;
flex-shrink: 0;
border-radius: 16px;
margin-right: 57px;
background: linear-gradient(235deg, rgba(15, 22, 48, 0.00) 0%, rgba(10, 10, 41, 0.90) 95.54%);
}
.activeContrySpan {
color: #151E2C;
font-size: 20px;
font-style: normal;
font-weight: 600;
line-height: 24px; /* 120% */
}
.activeCapitalSpan {
color: #9D9D9D;
font-family: Montserrat;
font-size: 14px;
font-style: normal;
font-weight: 600;
line-height: 28px; /* 200% */
}
.proprietary-active {
border: 1px solid #fff;
flex-shrink: 0;
border-radius: 10px;
background: #FFF;
box-shadow: -25px 47px 66px 0px rgba(0, 0, 0, 0.08);
margin-left: 20px;
}
/* 服务功能 */
.serviceBoxTitle>span{
margin-right: 28px;
}
.serviceBoxTitle span {
color: #151E2C;
font-family: Montserrat;
font-size: 24px;
font-style: normal;
font-weight: 700;
line-height: 86.142px; /* 358.925% */
}
.serviceBoxContent {
display: flex;
width: 545px;
height: 46px;
flex-direction: column;
justify-content: center;
flex-shrink: 0;
color: #151E2C;
font-size: 14px;
font-style: normal;
font-weight: 500;
line-height: 28px; /* 200% */
}
.serviceBoxLine {
width: 100%;
height: 1px;
background-color: #8D8D8D;
opacity: 0.2;
margin-top: 58px;
}
.serviceBoxEnd {
width: 740px;
height: 70px;
flex-shrink: 0;
border-radius: 12px;
background: #00AFAF;
color: #FFF;
font-family: "PingFang SC";
font-size: 18px;
font-style: normal;
font-weight: 500;
line-height: 28px; /* 155.556% */
padding: 49px 200px 49px 100px;
}
.serviceBoxEnd i {
font-size: 30px;
font-weight: 600;
}
/* 运输流程 */
.transportationProcess {
width: 416px;
height: 96px;
padding: 40px 17px 0;
border-top: 1px solid #e1e3e6;
}
.transportationProcess img {
margin-right: 30px;
}
.transportationProTitle {
color: #898989;
font-family: Montserrat;
font-size: 24px;
font-style: normal;
font-weight: 700;
line-height: 24px; /* 100% */
opacity: 0.3;
margin-bottom: 13px;
}
.transportationProContent {
color: #151E2C;
font-size: 20px;
font-style: normal;
font-weight: 600;
line-height: 20px; /* 100% */
}
/* sea */
/* 参考 */
.reference {
border-top: 1px solid #e1e3e6;
padding: 50px 40px;
}
.referenceContry {
color: #151E2C;
font-size: 24px;
font-style: normal;
font-weight: 600;
line-height: 20px; /* 83.333% */
}
.referenceContent {
color: #4D5563;
text-align: center;
font-family: "PingFang SC";
font-size: 24px;
font-style: normal;
font-weight: 400;
line-height: 20px; /* 83.333% */
}
.ServiceLineBox {
width: 520px;
height: 227px;
flex-shrink: 0;
border-radius: 16px;
background: #FAFAFA;
padding: 32px 37px;
margin-bottom: 32px;
}
.ServiceLineBox .el-tabs__item {
width: 100px;
height: 35px;
border-radius: 4px;
text-align: center;
padding: 0 !important;
font-size: 16px;
font-style: normal;
font-weight: 600;
line-height: 35px; /* 150% */
}
.ServiceLineBox .ServiceLineTitle {
color: #151E2C;
font-size: 22px;
font-style: normal;
font-weight: 600;
line-height: 24px; /* 109.091% */
margin-bottom: 34px;
}
/* road */
.referenceRoad {
position: relative;
width: 584px;
height: 200px;
flex-shrink: 0;
border-radius: 16px;
background: linear-gradient(235deg, rgba(15, 22, 48, 0.00) 0%, rgba(10, 10, 41, 0.90) 95.54%);
}
.referenceRoadContry {
position: absolute;
bottom: 72px;
left: 34px;
color: #FFF;
font-family: Montserrat;
font-size: 20px;
font-style: normal;
font-weight: 600;
line-height: 28px; /* 140% */
}
.referenceRoadContent {
position: absolute;
bottom: 30px;
left: 34px;
color: #FFF;
font-family: Montserrat;
font-size: 36px;
font-style: normal;
font-weight: 600;
line-height: 28px; /* 77.778% */
}

@ -0,0 +1,74 @@
<template>
<div class="footerBottom">
<div class="platformBackground"></div>
<div class="platform">
<div class="container" >
<div >
<div class="button-group" style="position: absolute;top:1000px;">
<el-button
v-for="(item, index) in buttons"
:key="index"
:class="{ 'active': activeIndex === index }"
class="flx-center"
@click="setActive(item,index)"
>
<div class="btn-text" style="">
{{ item.label }}
</div>
</el-button>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
/**
* Index-1 component
*/
export default {
name:"platform",
components: {
},
data(){
return {
activeName: 'second',
activeIndex: 0, //
buttons: [
{ label: '亚马逊仓库地址',transportMode:'OCEAN' },
{ label: '仓库地址分布图',transportMode:'AIR' },
{ label: 'AMAZON注册',transportMode:'RAIL' }
]
}
},
methods: {
handleClick(tab, event) {
console.log(tab, event);
},
setActive(item,index) {
if(index === 0){
this.$router.push({
name:'platform'
})
}else if(index === 1){
this.$router.push({
name:'warehouseMap'
})
}else if(index === 2){
this.$router.push({
name:'AMAZON'
})
}
// this.activeIndex = index;
},
}
};
</script>
<style src="./index.css" scoped></style>

@ -0,0 +1,73 @@
<template>
<div class="footerBottom">
<div class="platformBackground"></div>
<div class="platform">
<!-- 美通海外仓 -->
<div class="container" >
<div class="button-group" style="position: absolute;top:1000px;">
<el-button
v-for="(item, index) in buttons"
:key="index"
:class="{ 'active': activeIndex === index }"
class="flx-center"
@click="setActive(item,index)"
>
<div class="btn-text" style="">
{{ item.label }}
</div>
</el-button>
</div>
</div>
</div>
</div>
</template>
<script>
/**
* Index-1 component
*/
export default {
name:"sea",
components: {
},
data(){
return {
activeName:'first',
activeIndex: 2, //
buttons: [
{ label: '亚马逊仓库地址',transportMode:'OCEAN' },
{ label: '仓库地址分布图',transportMode:'AIR' },
{ label: 'AMAZON注册',transportMode:'RAIL' }
]
}
},
methods: {
setActive(item,index) {
if(index === 0){
this.$router.push({
name:'platform'
})
}else if(index === 1){
this.$router.push({
name:'warehouseMap'
})
}else if(index === 2){
this.$router.push({
name:'AMAZON'
})
}
// this.activeIndex = index;
},
}
};
</script>
<style src="../index.css" scoped>
</style>

@ -0,0 +1,275 @@
<template>
<div class="footerBottom">
<div class="businessBackground"></div>
<div class="business">
<!-- 美通海外仓 -->
<div class="container" >
<div class="button-group" style="position: absolute;top:1000px;">
<el-button
v-for="(item, index) in buttons"
:key="index"
:class="{ 'active': activeIndex === index }"
class="flx-center"
@click="setActive(item,index)"
>
<div class="btn-text" style="">
{{ item.label }}
</div>
</el-button>
</div>
<div class="service">
<div class="service-text" style="padding-top: 70px;margin:130px 0 0 0px;">
<div >美通海运</div><i class="serviceNews"></i></div>
<div class="flx-center">
<div class="service-content">
美通海运渠道多样与全球各大船东建立战略合作自建海外仓与自有清关团队团队经验丰富专业能力强尾程派送方式多样且灵活时效稳定安全无忧
</div>
</div>
</div>
</div>
<!-- 参考时效 -->
<div class="service-text-bg" style="padding-bottom: 58px;">
<div class="container ">
<div class="service-text" style="padding-top: 70px;margin:130px 0 0 0px;">
<div >参考时效</div><i class="serviceNews"></i></div>
<div class="reference flx-align-start" style="margin-top:70px;">
<span class="referenceContry">美国</span>
<span class="referenceContent">美森特快极致时效12天普船美西20-356大热门仓20-30</span>
</div>
<div class="reference flx-align-start">
<span class="referenceContry">欧盟</span>
<span class="referenceContent">28-35</span>
</div>
<div class="reference flx-align-start">
<span class="referenceContry">英国</span>
<span class="referenceContent">28-35</span>
</div>
<div class="reference flx-align-start">
<span class="referenceContry">加拿大</span>
<span class="referenceContent">派普船45~55快船23~30</span>
</div>
<div class="reference flx-align-start">
<span class="referenceContry">墨西哥</span>
<span class="referenceContent">专线35~45快线21~25</span>
</div>
<div class="reference flx-align-start">
<span class="referenceContry">日本</span>
<span class="referenceContent">快船12-13海派15-18海卡23-25</span>
</div>
</div>
</div>
<!-- 服务线路 -->
<div class="container">
<div class="service " style="padding: 100px 0 0 0;">
<div class="service-text">
<div >服务线路</div><i class="serviceNews"></i></div>
<el-row style="margin-top: 70px;">
<el-col :span="12">
<div class="ServiceLineBox">
<div class="ServiceLineTitle">美国快线</div>
<el-tabs v-model="activeName" >
<el-tab-pane label="产品渠道" name="first">
<div style="width: 520px;height: 1px;background: #E3E3E3;margin:20px 0 32px 0;"></div>
<div class="scrollable-container">
用户管理background: #E3E3E3;background: #E3E3E3;background: #E3E3E3;background:background: #E3E3E3;background: #E3E3E3;background: #E3E3E3;background: #E3E3E3; #E3E3E3;background: #E3E3E3;background: #E3E3E3;background: #E3E3E3;background: #E3E3E3;
</div>
</el-tab-pane>
<el-tab-pane label="产品优势" name="second">
<div style="width: 520px;height: 1px;background: #E3E3E3;margin:20px 0 32px 0;"></div>
<div class="scrollable-container">
用户管理background: #E3E3E3;background: #E3E3E3;background: #E3E3E3;background:background: #E3E3E3;background: #E3E3E3;background: #E3E3E3;background: #E3E3E3; #E3E3E3;background: #E3E3E3;background: #E3E3E3;background: #E3E3E3;background: #E3E3E3;
</div>
</el-tab-pane>
<el-tab-pane label="产品服务" name="third">
<div style="width: 520px;height: 1px;background: #E3E3E3;margin:20px 0 32px 0;"></div>
<div class="scrollable-container">
用户管理background: #E3E3E3;background: #E3E3E3;background: #E3E3E3;background:background: #E3E3E3;background: #E3E3E3;background: #E3E3E3;background: #E3E3E3; #E3E3E3;background: #E3E3E3;background: #E3E3E3;background: #E3E3E3;background: #E3E3E3;
</div>
</el-tab-pane>
</el-tabs>
</div>
</el-col>
<el-col :span="12">
<div class="ServiceLineBox">
<div class="ServiceLineTitle">美国快线</div>
<el-tabs v-model="activeName" >
<el-tab-pane label="产品渠道" name="first">
<div style="width: 520px;height: 1px;background: #E3E3E3;margin:20px 0 32px 0;"></div>
<div class="scrollable-container">
用户管理background: #E3E3E3;background: #E3E3E3;background: #E3E3E3;background:background: #E3E3E3;background: #E3E3E3;background: #E3E3E3;background: #E3E3E3; #E3E3E3;background: #E3E3E3;background: #E3E3E3;background: #E3E3E3;background: #E3E3E3;
</div>
</el-tab-pane>
<el-tab-pane label="产品优势" name="second">配置管理</el-tab-pane>
<el-tab-pane label="产品服务" name="third">角色管理</el-tab-pane>
</el-tabs>
</div>
</el-col>
<el-col :span="12">
<div class="ServiceLineBox">
<div class="ServiceLineTitle">美国快线</div>
<el-tabs v-model="activeName" >
<el-tab-pane label="产品渠道" name="first">
<div style="width: 520px;height: 1px;background: #E3E3E3;margin:20px 0 32px 0;"></div>
<div class="scrollable-container">
用户管理background: #E3E3E3;background: #E3E3E3;background: #E3E3E3;background:background: #E3E3E3;background: #E3E3E3;background: #E3E3E3;background: #E3E3E3; #E3E3E3;background: #E3E3E3;background: #E3E3E3;background: #E3E3E3;background: #E3E3E3;
</div>
</el-tab-pane>
<el-tab-pane label="产品优势" name="second">配置管理</el-tab-pane>
<el-tab-pane label="产品服务" name="third">角色管理</el-tab-pane>
</el-tabs>
</div>
</el-col>
</el-row>
</div>
</div>
<!-- 运输流程 -->
<div class="service-text-bg" style="padding-bottom: 180px;">
<div class="container ">
<div class="service-text" style="padding-top: 100px;margin:130px 0 0 0px;">
<div >运输流程</div><i class="serviceNews"></i></div>
</div>
<div class="container " style="margin-top: 70px;position: relative;">
<el-row>
<el-col :span="24" class="flx-align-start">
<div class="transportationProcess flx-align-only-start ">
<img src="@/assets/images/business/overSea/transportation/transportation1.png" alt="">
<div class="">
<div class="transportationProTitle">01</div>
<div class="transportationProContent">客户系统下单</div>
</div>
</div>
<div class="transportationProcess flx-align-only-start ">
<img src="@/assets/images/business/overSea/transportation/transportation2.png" alt="">
<div class="">
<div class="transportationProTitle">05</div>
<div class="transportationProContent">到达监管仓</div>
</div>
</div>
</el-col>
<el-col :span="24" class="flx-align-start">
<div class="transportationProcess flx-align-only-start ">
<img src="@/assets/images/business/overSea/transportation/transportation3.png" alt="">
<div class="">
<div class="transportationProTitle">02</div>
<div class="transportationProContent">包裹装车发送至口岸</div>
</div>
</div>
<div class="transportationProcess flx-align-only-start ">
<img src="@/assets/images/business/overSea/transportation/transportation4.png" alt="">
<div class="">
<div class="transportationProTitle">06</div>
<div class="transportationProContent">监管仓清关</div>
</div>
</div>
</el-col>
<el-col :span="24" class="flx-align-start">
<div class="transportationProcess flx-align-only-start ">
<img src="@/assets/images/business/overSea/transportation/transportation5.png" alt="">
<div class="">
<div class="transportationProTitle">03</div>
<div class="transportationProContent">口岸换装报关</div>
</div>
</div>
<div class="transportationProcess flx-align-only-start ">
<img src="@/assets/images/business/overSea/transportation/transportation6.png" alt="">
<div class="">
<div class="transportationProTitle">07</div>
<div class="transportationProContent">尾程灵活派送</div>
</div>
</div>
</el-col>
<el-col :span="24" class="flx-align-start">
<div class="transportationProcess flx-align-only-start ">
<img src="@/assets/images/business/overSea/transportation/transportation7.png" alt="">
<div class="">
<div class="transportationProTitle">04</div>
<div class="transportationProContent">出境</div>
</div>
</div>
<div class="transportationProcess flx-align-only-start ">
<img src="@/assets/images/business/overSea/transportation/transportation8.png" alt="">
<div class="">
<div class="transportationProTitle">08</div>
<div class="transportationProContent">AMZ仓库第三方海外仓收货并上架</div>
</div>
</div>
</el-col>
</el-row>
</div>
</div>
</div>
</div>
</template>
<script>
/**
* Index-1 component
*/
export default {
name:"sea",
components: {
},
data(){
return {
activeName:'first',
activeIndex: 1, //
buttons: [
{ label: '海外仓',transportMode:'OCEAN' },
{ label: '头程海运',transportMode:'AIR' },
{ label: '头程卡航',transportMode:'RAIL' },
{ label: '头程空运',transportMode:'ROAD' }
],
activePropsIndex:0,
buttonProps: [
{ contry: '加拿大',capital:'温哥华/多伦多'},
{ contry: '美国',capital:'洛杉矶/芝加哥'},
{ contry: '墨西哥',capital:'墨西哥'},
{ contry: '英国',capital:'伦敦'},
{ contry: '比利时',capital:'烈日'},
{ contry: '德国',capital:'科隆'},
{ contry: '法国',capital:'巴黎'},
{ contry: '日本',capital:'大阪府'},
],
}
},
methods: {
setActive(item,index) {
if(index === 1){
this.$router.push({
name:'sea'
})
}else if(index === 2){
this.$router.push({
name:'road'
})
}else if(index === 3){
this.$router.push({
name:'air'
})
}else {
this.$router.push({
name:'business'
})
}
// this.activeIndex = index;
},
}
};
</script>
<style src="../index.css" scoped>
</style>

@ -0,0 +1,74 @@
<template>
<div class="footerBottom">
<div class="platformBackground"></div>
<div class="platform">
<!-- 美通海外仓 -->
<div class="container" >
<div class="button-group" style="position: absolute;top:1000px;">
<el-button
v-for="(item, index) in buttons"
:key="index"
:class="{ 'active': activeIndex === index }"
class="flx-center"
@click="setActive(item,index)"
>
<div class="btn-text" style="">
{{ item.label }}
</div>
</el-button>
</div>
</div>
</div>
</div>
</template>
<script>
/**
* Index-1 component
*/
export default {
name:"sea",
components: {
},
data(){
return {
activeName:'first',
activeIndex: 1, //
buttons: [
{ label: '亚马逊仓库地址',transportMode:'OCEAN' },
{ label: '仓库地址分布图',transportMode:'AIR' },
{ label: 'AMAZON注册',transportMode:'RAIL' }
]
}
},
methods: {
setActive(item,index) {
if(index === 0){
this.$router.push({
name:'platform'
})
}else if(index === 1){
this.$router.push({
name:'warehouseMap'
})
}else if(index === 2){
this.$router.push({
name:'AMAZON'
})
}
// this.activeIndex = index;
},
}
};
</script>
<style src="../index.css" scoped>
</style>

@ -1,11 +1,11 @@
const CssMinimizerPlugin = require('css-minimizer-webpack-plugin');
const path = require('path');
module.exports = {
devServer:{
proxy: {
'/api':{
target:'http://192.168.10.53:9100/v1/v1',
target:'http://192.168.10.54:9100/v1',
changOrigin:true,
pathRewrite:{
'^/api':''
@ -20,8 +20,4 @@ module.exports = {
],
}
}
}

@ -1731,6 +1731,11 @@
"resolved" "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz"
"version" "1.0.1"
"async-validator@^3.3.0":
"integrity" "sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ=="
"resolved" "https://registry.npmjs.org/async-validator/-/async-validator-3.5.2.tgz"
"version" "3.5.2"
"async-validator@~1.8.1":
"integrity" "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA=="
"resolved" "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz"
@ -1852,6 +1857,11 @@
"resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz"
"version" "1.5.1"
"batch-processor@1.0.0":
"integrity" "sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA=="
"resolved" "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz"
"version" "1.0.0"
"batch@0.6.1":
"integrity" "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw=="
"resolved" "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz"
@ -3080,6 +3090,11 @@
"resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz"
"version" "1.5.2"
"deepmerge@^2.2.1":
"integrity" "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA=="
"resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz"
"version" "2.2.1"
"default-gateway@^4.2.0":
"integrity" "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA=="
"resolved" "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz"
@ -3338,12 +3353,12 @@
"zrender" "^5.1.1"
"echarts@^5.0.1", "echarts@^5.1.2":
"integrity" "sha512-JYn22Dolt2esY2jEzUsw1OxbobuW67oGjIoTjZO3rW89SWkfJ4kbrmC2OW9JjsBrD1rdkmaWBuZZ2HgmThyxJw=="
"resolved" "https://registry.npmjs.org/echarts/-/echarts-5.0.1.tgz"
"version" "5.0.1"
"integrity" "sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw=="
"resolved" "https://registry.npmjs.org/echarts/-/echarts-5.5.0.tgz"
"version" "5.5.0"
dependencies:
"tslib" "2.0.3"
"zrender" "5.0.3"
"tslib" "2.3.0"
"zrender" "5.5.0"
"ee-first@1.1.1":
"integrity" "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
@ -3360,6 +3375,13 @@
"resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.738.tgz"
"version" "1.4.738"
"element-resize-detector@^1.2.0":
"integrity" "sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg=="
"resolved" "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.4.tgz"
"version" "1.2.4"
dependencies:
"batch-processor" "1.0.0"
"element-theme-chalk@^2.15.14":
"integrity" "sha512-jgMTD6Qg6UPRDjBzARl42xit7lfCg+gE8x+QaUmmrhWv2TsnFoerhOupn0smxKTfO0Oh9Kh53Q+thXeZO7/0rQ=="
"resolved" "https://registry.npmjs.org/element-theme-chalk/-/element-theme-chalk-2.15.14.tgz"
@ -5078,6 +5100,11 @@
"merge-stream" "^2.0.0"
"supports-color" "^7.0.0"
"js-calendar@^1.2.3":
"integrity" "sha512-dAA1/Zbp4+c5E+ARCVTIuKepXsNLzSYfzvOimiYD4S5eeP9QuplSHLcdhfqFSwyM1o1u6ku6RRRCyaZ0YAjiBw=="
"resolved" "https://registry.npmjs.org/js-calendar/-/js-calendar-1.2.3.tgz"
"version" "1.2.3"
"js-message@1.0.7":
"integrity" "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA=="
"resolved" "https://registry.npmjs.org/js-message/-/js-message-1.0.7.tgz"
@ -5334,6 +5361,11 @@
"resolved" "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz"
"version" "4.1.2"
"lodash.throttle@^4.1.1":
"integrity" "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ=="
"resolved" "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz"
"version" "4.1.1"
"lodash.transform@^4.6.0":
"integrity" "sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A="
"resolved" "https://registry.npmjs.org/lodash.transform/-/lodash.transform-4.6.0.tgz"
@ -6396,7 +6428,7 @@
dependencies:
"ts-pnp" "^1.1.6"
"popper.js@^1.16.1":
"popper.js@^1.14.6", "popper.js@^1.16.1":
"integrity" "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ=="
"resolved" "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz"
"version" "1.16.1"
@ -8165,6 +8197,11 @@
"resolved" "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz"
"version" "0.3.0"
"tinycolor2@^1.4.1":
"integrity" "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw=="
"resolved" "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz"
"version" "1.6.0"
"tmp@^0.0.33":
"integrity" "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw=="
"resolved" "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz"
@ -8247,11 +8284,6 @@
"resolved" "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz"
"version" "1.10.0"
"tslib@2.0.3":
"integrity" "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ=="
"resolved" "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz"
"version" "2.0.3"
"tslib@2.3.0":
"integrity" "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
"resolved" "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz"
@ -8504,6 +8536,11 @@
"resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz"
"version" "8.3.2"
"v-click-outside-x@^3.7.1":
"integrity" "sha512-WmUgmcIXr9clVpm1AYS/FgHtcDicfnfoxgQCNg4O6vfk9GVnxA0vSqO321ogUo0b7czYTidj7fQENvWFMWOkUg=="
"resolved" "https://registry.npmjs.org/v-click-outside-x/-/v-click-outside-x-3.7.1.tgz"
"version" "3.7.1"
"validate-npm-package-license@^3.0.1":
"integrity" "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew=="
"resolved" "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz"
@ -8531,6 +8568,20 @@
"core-util-is" "1.0.2"
"extsprintf" "^1.2.0"
"view-design@^4.7.0":
"integrity" "sha512-WRvVRfsZciN0aJYlz+6b1zxs5G8tLFb4OUKOu+PiN0QyIGmdgWVziEyEmioYtJahQpueWiQpRYGzyxrpz3UkWQ=="
"resolved" "https://registry.npmjs.org/view-design/-/view-design-4.7.0.tgz"
"version" "4.7.0"
dependencies:
"async-validator" "^3.3.0"
"deepmerge" "^2.2.1"
"element-resize-detector" "^1.2.0"
"js-calendar" "^1.2.3"
"lodash.throttle" "^4.1.1"
"popper.js" "^1.14.6"
"tinycolor2" "^1.4.1"
"v-click-outside-x" "^3.7.1"
"vm-browserify@^1.0.1":
"integrity" "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ=="
"resolved" "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz"
@ -8627,7 +8678,7 @@
"get-youtube-id" "^1.0.0"
"youtube-player" "^5.4.0"
"vue@^2.2.6", "vue@^2.5.17", "vue@^2.6.11":
"vue@^2.2.6", "vue@^2.5.17", "vue@^2.6.10", "vue@^2.6.11":
"integrity" "sha512-VfPwgcGABbGAue9+sfrD4PuwFar7gPb1yl1UK1MwXoQPAw0BKSqWfoYCT/ThFrdEVWoI51dBuyCoiNU9bZDZxQ=="
"resolved" "https://registry.npmjs.org/vue/-/vue-2.6.11.tgz"
"version" "2.6.11"
@ -8981,16 +9032,9 @@
"load-script" "^1.0.0"
"sister" "^3.0.0"
"zrender@^5.1.1":
"zrender@^5.1.1", "zrender@5.5.0":
"integrity" "sha512-O3MilSi/9mwoovx77m6ROZM7sXShR/O/JIanvzTwjN3FORfLSr81PsUGd7jlaYOeds9d8tw82oP44+3YucVo+w=="
"resolved" "https://registry.npmjs.org/zrender/-/zrender-5.5.0.tgz"
"version" "5.5.0"
dependencies:
"tslib" "2.3.0"
"zrender@5.0.3":
"integrity" "sha512-TVcN2IMdo7je3GEq/E4CER4AGBe/n50/izILdupppyHf/hVHuiXCRliqdu8+32Z1OmGg6RfKt5qQlkX+bOtU0g=="
"resolved" "https://registry.npmjs.org/zrender/-/zrender-5.0.3.tgz"
"version" "5.0.3"
dependencies:
"tslib" "2.0.3"

Loading…
Cancel
Save