Commit 65879644 by laoyingpeng

第一次提交

parents
# https://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 4
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
insert_final_newline = false
trim_trailing_whitespace = false
.DS_Store
node_modules
/dist
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
# build stage
FROM node:16.12.0 as build-stage
ARG ENV_TYPE
RUN npm install -g http-server
WORKDIR /app
COPY package.json ./
RUN npm install
COPY . .
RUN npm run build
# nginx stage
FROM nginx:1.15-alpine
COPY --from=build-stage /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 8080
CMD ["nginx", "-g", "daemon off;"]
# invisible-matrix
## Project setup
```
npm install
```
### Compiles and hot-reloads for development
```
npm run serve
```
### Compiles and minifies for production
```
npm run build
```
### Lints and fixes files
```
npm run lint
```
### Customize configuration
See [Configuration Reference](https://cli.vuejs.org/config/).
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset'
]
}
{
"compilerOptions": {
"target": "es5",
"module": "esnext",
"baseUrl": "./",
"moduleResolution": "node",
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost"
]
}
}
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
upstream gateway_api{
server blt-gateway-prod.base-prod:30000;
}
#gzip on;
server {
listen 8080;
server_name localhost;
charset utf-8;
location / { # /表示根目录,该配置表示Nginx默认打开/www下的index.html
root /usr/share/nginx/html;
try_files $uri $uri/ @router;
index index.html index.htm;
}
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"name": "bailun-ana-bigdata",
"version": "0.0.1",
"private": true,
"scripts": {
"dev": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {
"core-js": "^3.8.3",
"element-plus": "^2.2.4",
"vue": "^3.2.13",
"vue-router": "^4.0.15"
},
"devDependencies": {
"@babel/core": "^7.12.16",
"@babel/eslint-parser": "^7.12.16",
"@vue/cli-plugin-babel": "~5.0.0",
"@vue/cli-plugin-eslint": "~5.0.0",
"@vue/cli-service": "~5.0.0",
"eslint": "^7.32.0",
"eslint-plugin-vue": "^8.0.3",
"node-sass": "^7.0.1",
"sass-loader": "^13.0.0"
},
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"extends": [
"plugin:vue/vue3-essential",
"eslint:recommended"
],
"parserOptions": {
"parser": "@babel/eslint-parser"
},
"rules": {}
},
"browserslist": [
"> 1%",
"last 2 versions",
"not dead",
"not ie 11"
]
}
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title>百伦ANA大数据平台</title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled.
Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
<template>
<router-view/>
</template>
<script>
export default {
name: 'App'
}
</script>
@import '~@/styles/var.scss';
html, body {
font-size: 14px;
letter-spacing: 2px;
color: $--color-text-primary;
}
ul {
list-style: none;
}
html, body, p, ul, li, ol, h1, h2, h3, h4, h5, h6 {
margin: 0;
padding: 0;
}
.block-margin:before {
content: "";
display: table;
}
.page-width {
max-width: 1180px;
margin: auto;
padding: 0 50px;
}
<template>
<div class="app-wrapper">
<div class="main-container">
<main-header />
<section class="app-main">
<transition name="fade-transform" mode="out-in">
<keep-alive>
<router-view :key="key" />
</keep-alive>
</transition>
</section>
<main-footer />
</div>
</div>
</template>
<script>
import mainHeader from './main-header.vue'
import mainFooter from './main-footer.vue'
export default {
name: 'index',
components: {
mainHeader,
mainFooter
},
computed: {
key() {
return this.$route.path
}
}
}
</script>
<style scoped lang="scss">
.app-wrapper {
.app-main {
overflow: hidden;
}
}
</style>
<template>
<div class="main-footer">
<div style="text-align: center; margin-bottom: 20px;">
网站备案号
<a href="https://beian.miit.gov.cn/" target="_blank" style="color: #4957F2; text-decoration: none;">粤ICP备16072482号-6</a>
</div>
</div>
</template>
<script>
export default {
name: 'main-footer',
}
</script>
<style scoped lang="scss">
@import '~@/styles/var.scss';
.main-footer {
overflow: hidden;
.footer-menu {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
padding: 100px 0 40px;
border-bottom: 1px solid #DCDFE6;
.txt1 {
color: $--color-primary;
font-size: 18px;
font-weight: bold;
}
.txt2 {
margin-top: 27px;
}
.txt3 {
font-size: 16px;
}
.txt5 {
margin-top: 18px;
}
.block1 {
width: 260px;
}
.block2 {
display: flex;
align-items: center;
}
.block3 {
width: 100px;
.items {
margin-top: 27px;
li {
margin-bottom: 13px;
}
}
}
.block4 {
width: 260px;
}
.img1 {
width: 28px;
height: 29px;
margin-right: 8px;
img {
width: 100%;
height: 100%;
}
}
}
.footer-copyright {
padding: 20px 0;
.block1 {
text-align: center;
}
.txt1 {
}
.txt2 {
color: $--color-primary;
}
}
}
@media screen and (max-width: 768px) {
.main-footer {
.footer-menu {
.block1,.block3,.block4 {
width: 100%;
margin-bottom: 30px;
text-align: center;
}
.block2 {
justify-content: center;
}
}
}
}
</style>
<template>
<div class="main-header">
<div class="page-width">
<div class="logo">
</div>
<nav>
<ul class="menu-list">
<li
v-for="(item, index) in list"
:key="item.id"
:class="{ 'is-active': item.is_active }"
class="menu-list__item"
@click="jump(item)">
<el-link :underline="false" :href="item.href">{{ item.text }}</el-link>
</li>
</ul>
</nav>
</div>
</div>
</template>
<script>
export default {
name: 'main-header',
data() {
return {
list: []
}
},
methods: {
jump(item) {
this.list.forEach((item) => {
item.is_active = false;
});
item.is_active = true;
}
},
async created() {
await this.$nextTick();
const { fullPath, hash } = this.$route;
const target = this.list.find(item => item.href === fullPath);
if(target) target.is_active = true;
setTimeout(() => {
if (hash) document.querySelector(hash).scrollIntoView();
}, 100);
}
}
</script>
<style scoped lang="scss">
@import '~@/styles/var.scss';
.main-header {
overflow: hidden;
position: absolute;
top: 0;
z-index: 100;
width: 100%;
background-color: transparent;
.page-width {
display: flex;
align-items: center;
}
.logo {
display: flex;
align-items: center;
margin-right: 413px;
white-space: nowrap;
.txt1 {
color: $--color-primary;
font-size: 18px;
font-weight: bold;
}
.txt2 {
margin: 0 8px 0 14px;
color: $--color-text-lightest;
font-size: 12px;
}
.txt3 {
color: $--color-text-lightest;
font-size: 12px;
}
img {
width: 186px;
}
}
.menu-list {
display: flex;
align-items: center;
.menu-list__item {
position: relative;
height: 80px;
line-height: 80px;
margin-right: 30px;
::v-deep .el-link {
white-space: nowrap;
color: $--color-white;
.el-link__inner {
font-size: 24px;
}
}
&.is-active {
.el-link {
color: $--color-white;
}
&:after {
content: '';
display: block;
position: absolute;
width: 100%;
bottom: 0;
height: 2px;
background-color: transparent;
}
}
}
}
.contact-us {
margin-right: 0;
margin-left: auto;
white-space: nowrap;
}
}
</style>
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import ElementPlus from 'element-plus'
import 'element-plus/theme-chalk/index.css'
import './assets/scss/common.scss'
createApp(App)
.use(router)
.use(ElementPlus)
.mount('#app');
import { createRouter, createWebHistory } from 'vue-router'
import Layout from '@/layout'
export const constantRoutes = [
{
path: '/',
component: Layout,
redirect: '/home',
children: [
{
path: '/home',
component: () => import('@/views/home'),
hidden: true
},
{
path: '/about-us',
component: () => import('@/views/about-us'),
hidden: true
},
{
path: '/introduce',
component: () => import('@/views/introduce'),
hidden: true
},
{
path: '/service',
component: () => import('@/views/service'),
hidden: true
},
{
path: '/technology',
component: () => import('@/views/technology'),
hidden: true
},
{
path: '/channel',
component: () => import('@/views/channel'),
hidden: true
},
{
path: '/contact-us',
component: () => import('@/views/contact-us'),
hidden: true
},
{
path: '/404',
component: () => import('@/views/error-page/404'),
hidden: true
}
]
}
];
const router = createRouter({
history: createWebHistory(),
routes: constantRoutes
});
export default router
module.exports = {
title: 'title',
};
$--color-white: #FFFFFF !default;
$--color-black: #000000 !default;
$--color-primary: #63ACE6 !default;
$--color-success: #45BD50 !default;
$--color-warning: #FFBA00 !default;
$--color-danger: #F42828 !default;
$--color-primary-1: #008EFF !default;
$--color-primary-2: #2584D1 !default;
$--color-success-1: #2FD85C !default;
$--color-text-primary: #333333 !default;
$--color-text-regular: #333333 !default;
$--color-text-secondary: #666666 !default;
$--color-text-normally: #999999 !default;
$--color-text-lightest: #CCCCCC !default;
$--color-text-placeholder: #CCCCCC !default;
$--border-color-base: #DFE3EB !default;
$--background-color-base: #FFFFFF !default;
$--table-header-background-color: #F9F9F9 !default;
$--pagination-background-color: transparent !default;
$--color-info-lighter: transparent !default;
$--color-tips-icon: #DCDFE6;
$--main-container-background-color: #F9F9F9;
.el-link {
--el-link-hover-text-color: #63ACE6;
}
<template>
<div class="about-us">
<div id="home" class="home-top-banner">
<img class="home-top-banner-image" :src="require('@/assets/images/关于我们banner图.png')" alt="">
<div class="page-width block-margin">
<div class="txt1">
用科技推动跨境<br>电商行业不断创新和发展
</div>
</div>
</div>
<div class="section-2">
<div class="page-width">
<div class="bar">
<div class="block1">
<div class="txt1">广州隐矩科技有限公司</div>
<div class="txt2">广州隐矩科技有限公司致力于研发智能模式,减少人工的成本的跨境电商模式。精研跨境电商ERP、海外仓WMS管理系统。</div>
<div class="txt3">
Guangzhou Hidden Moment Technology<br>
Co., Ltd. is committed to the research<br>
and development of intelligent mode,<br>
reduce the cost of labor cross-border<br>
e-commerce mode. Elaborating cross-<br>
border e-commerce ERP and overseas<br>
warehouse WMS management system.
</div>
</div>
<div class="block2">
<img class="img1" :src="require('@/assets/images/关于我们插画.png')" alt="">
</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
name: "about-us"
}
</script>
<style scoped lang="scss">
@import '~@/styles/var.scss';
.about-us {
overflow: hidden;
img {
width: 100%;
height: 100%;
object-fit: cover;
}
.home-top-banner {
position: relative;
height: 720px;
.page-width {
position: relative;
}
.home-top-banner-image {
position: absolute;
top: 0;
left: 0;
z-index: -1;
}
.txt1 {
margin-top: 188px;
padding-left: 50px;
font-size: 48px;
font-weight: bold;
color: $--color-primary-2;
}
}
.section-2 {
padding: 30px 0 70px;
.bar {
display: flex;
flex-wrap: wrap;
}
.block1 {
width: 420px;
margin-right: 90px;
}
.block2 {
width: 540px;
}
.txt1 {
font-size: 34px;
margin-top: 60px;
}
.txt2 {
font-size: 18px;
margin-top: 16px;
}
.txt3 {
font-size: 18px;
margin-top: 42px;
}
.img1 {
width: unset;
}
}
}
@media screen and (max-width: 768px){
.section-2 {
.bar {
flex-direction: column-reverse;
align-items: center;
justify-content: center;
.block1 {
margin-right: 0;
margin-bottom: 30px;
}
}
}
}
</style>
<template>
<div class="channel">
<img class="home-top-banner-image" :src="require('@/assets/images/渠道.png')" alt="">
</div>
</template>
<script>
export default {
name: "channel"
}
</script>
<style scoped lang="scss">
</style>
<template>
<div class="contact-us">
<img :src="require('@/assets/images/联系我们.png')" alt="">
</div>
</template>
<script>
export default {
name: "contact-us"
}
</script>
<style scoped lang="scss">
</style>
<template>
<div class="app-container http404-container">
<div class="http404">
<img src="@/assets/images/404.png" alt="404" class="pic-404">
<div class="bullshit">
<el-link type="primary" class="bullshit__oops" :underline="false">OOPS!</el-link>
<div class="bullshit__headline">{{ message }}</div>
<div class="bullshit__info">请检查您输入的URL是否正确,或单击按钮返回首页。</div>
<el-button type="primary" size="large" @click="$router.push('/home')">返回首页</el-button>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'Page404',
computed: {
message() {
return '抱歉,你访问的页面不存在或无权访问!'
}
}
}
</script>
<style lang="scss" scoped>
.http404-container {
display: flex;
justify-content: center;
align-items: center;
}
.http404 {
.pic-404 {
position: relative;
float: left;
width: 500px;
overflow: hidden;
margin-right: 100px;
}
.bullshit {
position: relative;
float: left;
width: 350px;
padding: 90px 0;
overflow: hidden;
&__oops {
font-size: 32px;
font-weight: bold;
line-height: 40px;
opacity: 0;
margin-bottom: 20px;
animation-name: slideUp;
animation-duration: 0.5s;
animation-fill-mode: forwards;
}
&__headline {
font-size: 20px;
line-height: 24px;
color: #222;
font-weight: bold;
opacity: 0;
margin-bottom: 10px;
animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.1s;
animation-fill-mode: forwards;
}
&__info {
font-size: 13px;
line-height: 21px;
color: grey;
opacity: 0;
margin-bottom: 40px;
animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.2s;
animation-fill-mode: forwards;
}
&__return-home {
float: left;
animation-name: slideUp;
animation-duration: 0.5s;
animation-delay: 0.3s;
animation-fill-mode: forwards;
}
@keyframes slideUp {
0% {
transform: translateY(60px);
opacity: 0;
}
100% {
transform: translateY(0);
opacity: 1;
}
}
}
}
</style>
<template>
<div class="introduce">
<img :src="require('@/assets/images/介绍.png')" alt="">
</div>
</template>
<script>
export default {
name: "introduce"
}
</script>
<style scoped lang="scss">
</style>
<template>
<div class="service">
<img :src="require('@/assets/images/服务.png')" alt="">
</div>
</template>
<script>
export default {
name: "service"
}
</script>
<style scoped lang="scss">
</style>
<template>
<div class="technology">
<img class="home-top-banner-image" :src="require('@/assets/images/技术1.png')" alt="">
</div>
</template>
<script>
export default {
name: "technology"
}
</script>
<style scoped lang="scss">
</style>
const {defineConfig} = require('@vue/cli-service');
const defaultSettings = require('./src/settings.js');
const path = require('path');
const name = defaultSettings.title || 'BLT'; // page title
function resolve(dir) {
return path.join(__dirname, dir)
}
module.exports = defineConfig({
transpileDependencies: true,
lintOnSave: false,
configureWebpack: {
name: name,
resolve: {
alias: {
'@': resolve('src'),
'static': resolve('static') // 增加这一行代码
}
},
}
});
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment