Repository: Neveryu/official-website
Branch: master
Commit: 4307b62f0401
Files: 28
Total size: 58.6 KB
Directory structure:
gitextract_t8uq2tzh/
├── .editorconfig
├── .github/
│ └── workflows/
│ └── deploy.yml
├── .gitignore
├── .prettierrc
├── .vscode/
│ └── extensions.json
├── README.md
├── index.html
├── package.json
├── src/
│ ├── App.vue
│ ├── common/
│ │ └── load-bmap.js
│ ├── components/
│ │ ├── Footer.vue
│ │ ├── GoTop.vue
│ │ └── Header.vue
│ ├── main.js
│ ├── router/
│ │ └── index.js
│ ├── style.css
│ └── view/
│ ├── CompanyIntroduction.vue
│ ├── ContactUs.vue
│ ├── HomePage.vue
│ ├── JobChance.vue
│ ├── NewsInformation.vue
│ ├── PageView.vue
│ ├── Service.vue
│ ├── ServiceDetail.vue
│ ├── Software.vue
│ ├── Software_bigData.vue
│ └── Software_smartTown.vue
└── vite.config.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
# https://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
quote_type = single
[*.md]
insert_final_newline = false
trim_trailing_whitespace = false
================================================
FILE: .github/workflows/deploy.yml
================================================
# This is a basic workflow to help you get started with Actions
name: deploy
# Controls when the workflow will run
on:
# Triggers the workflow on push events but only for the master branch
push:
branches: [ master ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Checkout master
uses: actions/checkout@v3 # If you're using actions/checkout@v2 you must set persist-credentials to false in most cases for the deployment to work correctly.
with:
ref: master
persist-credentials: false
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: '16.x'
- name: Install and Build
run: yarn && yarn build
- name: Deploy
uses: JamesIves/github-pages-deploy-action@4.1.7
with:
token: ${{ secrets.ACCESS_TOKEN }}
single-commit: true
branch: gh-pages
clean: true
folder: dist
================================================
FILE: .gitignore
================================================
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
package-lock.json
================================================
FILE: .prettierrc
================================================
{
"semi": false,
"singleQuote": true,
"trailingComma": "none",
"printWidth": 80,
"endOfLine": "crlf",
"overrides": [
{
"files": ".prettierrc",
"options": {
"parser": "json"
}
}
]
}
================================================
FILE: .vscode/extensions.json
================================================
{
"recommendations": ["Vue.volar"]
}
================================================
FILE: README.md
================================================
# Official-website
> 响应式的企业官方网站模板,使用 [Vite](https://cn.vitejs.dev/) 脚手架搭建,使用 [Vue3](https://cn.vuejs.org/) 开发。
## 运行/启动
```bash
npm i
npm run dev
```
## 构建&预览
```bash
# 构建生产环境
npm run build
# 预览构建的产品
npm run preview
```
## Vue 3 + Vite
This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.
## Recommended IDE Setup
- [VS Code](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar)
## 技术要点
```bash
# bootstarp——整体框架,主要用到了栅格系统和一些组件
# swiper——轮播插件
# wow.js+animate.css——网站的整体动画插件
# axios——ajax请求
# vue-router——路由
# vuex——状态管理(项目没有用到)
# session storage——本地存储
# 对可复用的组件进行了封装,对api接口进行了封装
```
## About
- [我的个人博客](https://blog.csdn.net/csdn_yudong)
- [我的推荐阅读文章](https://neveryu.blog.csdn.net/article/details/124124137)
## 内容




================================================
FILE: index.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title><%= VITE_APP_TITLE %></title>
<script
type="text/javascript"
src="https://api.map.baidu.com/api?v=3.0&ak=jcI3Q88g6V99OPBjLryoOqPTtsRdedHA"
></script>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>
================================================
FILE: package.json
================================================
{
"name": "official-website",
"private": true,
"version": "1.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"dependencies": {
"animate.css": "^4.1.1",
"jquery": "^3.6.1",
"swiper": "^8.4.5",
"vue": "^3.2.41",
"vue-router": "^4.1.6",
"wow.js": "^1.2.2"
},
"devDependencies": {
"@rollup/plugin-inject": "^5.0.2",
"@vitejs/plugin-vue": "^3.2.0",
"vite": "^3.2.3",
"vite-plugin-html": "^3.2.0"
}
}
================================================
FILE: src/App.vue
================================================
<script setup>
import Header from '@/components/Header.vue'
import Footer from '@/components/Footer.vue'
import GoTop from '@/components/GoTop.vue'
</script>
<template>
<Header></Header>
<!-- 路由出口 -->
<!-- 路由匹配到的组件将渲染在这里 -->
<router-view></router-view>
<Footer></Footer>
<GoTop></GoTop>
</template>
<style scoped></style>
================================================
FILE: src/common/load-bmap.js
================================================
export function Bmap() {
return new Promise(function (resolve, reject) {
window.initBMapGL = function () {
console.log('initBMapGL')
resolve()
}
let script = document.createElement('script')
script.type = 'text/javascript'
script.src = `//api.map.baidu.com/api?v=3.0&ak=jcI3Q88g6V99OPBjLryoOqPTtsRdedHA&callback=initBMapGL`
script.onerror = reject
document.head.appendChild(script)
})
}
================================================
FILE: src/components/Footer.vue
================================================
<template>
<div id="footer" class="container-fluid">
<div class="logo">
<img src="@/assets/img/logo_white.png" alt="logo图" />
</div>
<p class="title">公司企业网站模板</p>
<p class="address_tel_fax">
<p>地址:{{ address }}</p>
<p>QQ群:<a style="color:#fff" target="_blank" href="//shang.qq.com/wpa/qunwpa?idkey=ce9f5f0d1d7553fb5634521f79a89668ad0d798eb35047f93300df63ebae4c05">{{ qqgroup }}</a></p>
</p>
<p class="email_wx">
<p>博客:<a :href='blog + "neveryu/"' style="color:#fff">{{ blog }}</a></p>
<p>邮箱:{{ email }}</p>
<p>公司QQ号:{{ qq }}</p>
</p>
<p class="copy">Copyright © 2018 - Now {{ company }}</p>
</div>
</template>
<script setup name="Footer">
const address = import.meta.env.VITE_APP_ADDRESS
const phone = import.meta.env.VITE_APP_PHONE
const email = import.meta.env.VITE_APP_EMAIL
const qq = import.meta.env.VITE_APP_QQ
const company = import.meta.env.VITE_APP_COMPANYNAME
const blog = import.meta.env.VITE_APP_BLOG
const qqgroup = import.meta.env.VITE_APP_QQGROUP
</script>
<style scoped>
#footer {
width: 100%;
height: 100%;
color: #fff;
background: #474747;
overflow: hidden;
text-align: center;
}
.logo {
width: 95px;
height: 45px;
margin: 50px auto 20px;
}
.title {
font-size: 25px;
margin-bottom: 20px;
}
.address_tel_fax {
color: #d3d3d3;
font-size: 14px;
margin: 10px 0;
}
.email_wx {
color: #d3d3d3;
font-size: 14px;
}
.copy {
color: #d3d3d3;
font-size: 14px;
margin: 50px 0 10px;
}
@media screen and (max-width: 997px) {
.title {
font-size: 20px;
}
.address_tel_fax {
font-size: 12px;
}
.email_wx {
font-size: 12px;
}
.copy {
font-size: 12px;
margin: 30px 0 10px;
}
}
</style>
================================================
FILE: src/components/GoTop.vue
================================================
<template>
<div id="GoTop" @click="GoTop()">
<span class="glyphicon glyphicon-chevron-up"></span>
</div>
</template>
<script setup name="GoTop">
import { ref } from 'vue'
const flag = ref(false)
function GoTop() {
;(function smoothscroll() {
var currentScroll =
document.documentElement.scrollTop || document.body.scrollTop
if (currentScroll > 0) {
window.requestAnimationFrame(smoothscroll)
window.scrollTo(0, currentScroll - currentScroll / 10)
}
})()
}
</script>
<style scoped>
#GoTop {
width: 50px;
height: 50px;
position: fixed;
right: 20px;
bottom: 20px;
z-index: 99999999;
cursor: pointer;
}
#GoTop > span {
display: block;
width: 100%;
height: 100%;
color: rgb(8, 162, 233);
font-size: 30px;
}
</style>
================================================
FILE: src/components/Header.vue
================================================
<template>
<!-- 头部整体盒子 -->
<div id="header" class="container-fuild">
<!-- 头部顶部 -->
<div class="header-top container-fuild hidden-xs">
<div class="container">
<div class="server pull-left">
<span class="glyphicon glyphicon-earphone"></span>{{ phone }}
<span class="glyphicon glyphicon-envelope"></span>{{ email }}
<span class="glyphicon glyphicon-time"></span>7x24小时为您服务
</div>
<div class="shejiao pull-right">
<span class="glyphicon glyphicon-hand-right"></span>赶快联系我们吧!
<span class="glyphicon glyphicon-hand-left"></span>
<a
href="https://github.com/neveryu"
target="_blank"
style="color: #fc5531; font-size: 18px; cursor: pointer"
>Github</a
>
</div>
</div>
</div>
<!-- 电脑导航 -->
<div class="header-nav container hidden-xs">
<!-- 导航logo -->
<div class="header-nav-logo">
<img src="@/assets/img/logo_black.png" />
</div>
<!-- 导航内容 -->
<ul class="header-nav-wrapper">
<li
v-for="(item, index) in navList"
:key="index"
:class="index == navIndex ? 'active' : ''"
@click="navClick(index, item.name)"
>
<router-link :to="item.path">
{{ item.name }}
<span
v-if="item.children.length > 0"
class="glyphicon glyphicon-menu-down"
></span>
<i class="underline"></i>
</router-link>
<dl v-if="item.children.length > 0">
<dt v-for="(i, n) in item.children" :key="n">
<router-link :to="i.path">{{ i.name }}</router-link>
</dt>
</dl>
</li>
</ul>
</div>
<!-- 手机导航 -->
<div class="header-nav-m container-fuild visible-xs">
<div class="header-nav-m-logo">
<img
class="center-block"
src="@/assets/img/logo_black.png"
alt="logo"
/>
</div>
<!-- 导航栏 -->
<div class="header-nav-m-menu text-center">
{{ menuName }}
<div
class="header-nav-m-menu-wrapper"
data-toggle="collapse"
data-target="#menu"
@click="menuClick"
>
<span :class="menuClass"></span>
</div>
<!-- 导航内容 -->
<ul id="menu" class="header-nav-m-wrapper collapse">
<li
v-for="(item, index) in navList"
:key="index"
:class="index == navIndex ? 'active' : ''"
@click="navClick(index, item.name)"
data-toggle="collapse"
data-target="#menu"
>
<router-link :to="item.path">
{{ item.name }}
<i class="underline"></i>
</router-link>
</li>
</ul>
</div>
</div>
</div>
</template>
<script setup>
import { ref, reactive } from 'vue'
const phone = import.meta.env.VITE_APP_PHONE
const email = import.meta.env.VITE_APP_EMAIL
const navIndex = ref('')
navIndex.value = sessionStorage.getItem('navIndex')
? sessionStorage.getItem('navIndex')
: 0
const menuName = ref('首页')
const menuClass = ref('glyphicon glyphicon-menu-down')
const navList = [
{
name: '首页',
path: '/',
children: []
},
{
name: '软件产品',
path: '/software',
children: [
{
name: '智能小镇管理系统',
path: '/software/smartTown'
},
{
name: '大数据管理系统',
path: '/software/bigData'
}
]
},
{
name: '相关服务',
path: '/service',
children: []
},
{
name: '新闻动态',
path: '/newsinformation',
children: []
},
{
name: '公司介绍',
path: '/companyintroduction',
children: []
},
{
name: '工作机会',
path: '/jobchance',
children: []
},
{
name: '联系我们',
path: '/contactus',
children: []
}
]
function navClick(index, name) {
navIndex.value = index
sessionStorage.setItem('navIndex', index)
menuName.value = name
}
function menuClick() {
if (menuClass.value == 'glyphicon glyphicon-menu-down') {
menuClass.value = 'glyphicon glyphicon-menu-up'
} else {
menuClass.value = 'glyphicon glyphicon-menu-down'
}
}
</script>
<style scoped>
/* 顶部 */
#header {
background: #f4f4f4;
transition: all ease 0.6s;
}
#header .header-top {
height: 50px;
color: #fff;
font-size: 12px;
line-height: 50px;
background: #474747;
}
/* 顶部的图标 */
#header .header-top span {
margin: 0 8px;
}
/* 导航栏 */
#header .header-nav {
height: 110px;
}
/* 导航栏logo */
#header .header-nav .header-nav-logo {
width: 100px;
height: 100%;
float: left;
position: relative;
}
/* 导航栏logo图片 */
#header .header-nav .header-nav-logo img {
width: 95px;
height: 45px;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
}
/* 导航栏 导航容器 */
#header .header-nav-fixed .header-nav-wrapper {
line-height: 50px;
}
#header .header-nav .header-nav-wrapper {
line-height: 110px;
float: right;
margin: 0;
max-width: 800px;
}
/* 导航栏 每个导航 */
#header .header-nav .header-nav-wrapper > li {
float: left;
margin: 0 15px;
position: relative;
}
/* 导航栏 每个导航下面的 a 链接 */
#header .header-nav .header-nav-wrapper > li > a {
color: #000;
font-size: 15px;
font-weight: bold;
padding: 15px 0;
position: relative;
}
/* 导航栏 每个导航下面的 a 链接的下划线 */
#header .header-nav .header-nav-wrapper > li > a > i {
display: block;
position: absolute;
bottom: -2px;
left: 50%;
width: 0;
height: 2px;
opacity: 0;
transition: all 0.6s ease;
background-color: #1e73be;
}
/* 导航栏 每个导航下面的 a 链接的右侧小三角 */
#header .header-nav .header-nav-wrapper > li > a > span {
font-size: 12px;
transition: transform ease 0.5s;
}
/* 导航栏 每个导航下面的 a 链接 鼠标滑上去的样式 */
#header .header-nav .header-nav-wrapper > li > a:hover {
color: #1e73be;
text-decoration: none;
}
/* 导航栏 每个导航下面的 a 链接 鼠标滑上去下划线的样式 */
#header .header-nav .header-nav-wrapper > li > a:hover .underline {
opacity: 1;
width: 100%;
left: 0;
}
/* 导航栏 每个导航下面的 a 链接 鼠标滑上去三角标的样式 */
#header .header-nav .header-nav-wrapper > li > a:hover span {
transform: rotate(180deg);
}
/* 导航栏 每个导航下面的 a 链接 鼠标点击后的样式 */
#header .header-nav .header-nav-wrapper > li.active > a {
color: #1e73be;
text-decoration: none;
border-bottom: 2px solid #1e73be;
}
/* 导航栏 每个导航下面的二级导航容器 */
#header .header-nav .header-nav-wrapper > li > dl {
display: none;
position: absolute;
width: 168px;
top: 80%;
left: 0;
z-index: 999999;
box-shadow: 0 0 3px 1px #ccc;
background: #fff;
}
/* 导航栏 每个导航下面的二级导航容器的每个导航 */
#header .header-nav .header-nav-wrapper > li > dl > dt {
width: 100%;
padding: 10px;
border-bottom: 1px solid #ccc;
}
/* 导航栏 每个导航下面的二级导航容器的每个导航 当鼠标滑上时的样式*/
#header .header-nav .header-nav-wrapper > li > dl > dt > a:hover {
text-decoration: none;
}
/* 导航栏 滑上一级导航显示二级导航 */
#header .header-nav .header-nav-wrapper > li:hover dl {
display: block;
}
#header .header-nav .header-nav-wrapper > li > dl > dt:hover {
cursor: pointer;
background: #ccc;
}
@media screen and (max-width: 997px) {
#header .header-nav-m {
position: relative;
}
/* 导航栏logo容器 */
#header .header-nav-m .header-nav-m-logo {
height: 80px;
position: relative;
}
/* 导航栏logo图片 */
#header .header-nav-m .header-nav-m-logo img {
width: 95px;
height: 45px;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
}
/* 导航栏 菜单容器 */
#header .header-nav-m .header-nav-m-menu {
color: #fff;
height: 50px;
font-size: 20px;
line-height: 50px;
background: #474747;
position: relative;
}
/* 导航栏 菜单图标 */
#header .header-nav-m .header-nav-m-menu-wrapper {
position: absolute;
top: 50%;
right: 20px;
margin-top: -20px;
width: 50px;
height: 40px;
color: #fff;
z-index: 999999;
font-size: 12px;
}
/* 导航栏 */
#header .header-nav-m .header-nav-m-wrapper {
position: absolute;
top: 50px;
left: 0;
width: 100%;
background: #474747;
z-index: 9999999;
}
/* 导航栏 每个导航 */
#header .header-nav-m .header-nav-m-wrapper > li {
height: 40px;
line-height: 40px;
border-bottom: 1px solid #ccc;
}
/* 导航栏 每个导航下面的 a 链接 */
#header .header-nav-m .header-nav-m-wrapper > li > a {
color: #fff;
font-size: 15px;
font-weight: bold;
padding: 15px 0;
position: relative;
}
/* 导航栏 每个导航下面的 a 链接的右侧小三角 */
#header .header-nav .header-nav-wrapper > li > a > span {
font-size: 10px;
}
}
</style>
================================================
FILE: src/main.js
================================================
import { createApp } from 'vue'
import { createRouter } from '@/router'
/* swiper */
// import 'swiper/swiper.min.css'
/* 重置样式 */
import './assets/css/reset.min.css'
// import 'jquery'
import './assets/css/bootstrap.min.css'
import './assets/js/bootstrap.min.js'
/* animate.css */
import 'wow.js/css/libs/animate.css'
import App from './App.vue'
const router = createRouter()
const app = createApp(App)
app.use(router).mount('#app')
================================================
FILE: src/router/index.js
================================================
import { createRouter as _createRouter, createWebHashHistory } from 'vue-router'
// const pages = import.meta.glob('../src/pages/**/*.vue')
// const routes = Object.keys(pages).map((path)=>{
// let name = path.match(/\/pages(.*)\.vue$/)[1].toLowerCase();
// if(name.substring(name.length - 5) == 'index'){
// name = name.slice(0, -5);//去掉最后的index
// }
// return {
// path: name === '/home' ? '/': name,
// component: pages[path]
// }
// })
const routes = [
{
path: '/',
name: 'PageView',
redirect: '/home',
component: () => import('@/view/PageView.vue'),
children: [
{
path: '/home',
name: 'Home',
component: () => import('@/view/HomePage.vue'),
meta: {
title: '首页'
}
},
{
path: '/software',
name: 'software',
component: () => import('@/view/Software.vue'),
redirect: '/software/smartTown',
meta: {
title: '软件产品'
},
children: [
{
path: '/software/smartTown',
name: 'smartTown',
component: () => import('@/view/Software_smartTown.vue'),
meta: {
title: '软件产品丨智能小镇管理系统'
}
},
{
path: '/software/bigData',
name: 'bigData',
component: () => import('@/view/Software_bigData.vue'),
meta: {
title: '软件产品丨大数据管理系统'
}
}
]
},
{
path: '/service',
name: 'service',
component: () => import('@/view/Service.vue'),
props: true,
meta: {
title: '相关服务'
}
},
{
path: '/servicedetail',
name: 'serviceDetail',
component: () => import('@/view/ServiceDetail.vue'),
props: true,
meta: {
title: '相关服务-详情'
}
},
{
path: '/newsinformation',
name: 'newsInformation',
component: () => import('@/view/NewsInformation.vue'),
meta: {
title: '新闻动态'
}
},
{
path: '/companyintroduction',
name: 'companyIntroduction',
component: () => import('@/view/CompanyIntroduction.vue'),
meta: {
title: '公司介绍'
}
},
{
path: '/jobchance',
name: 'jobChance',
component: () => import('@/view/JobChance.vue'),
meta: {
title: '工作机会'
}
},
{
path: '/contactus',
name: 'contactUs',
component: () => import('@/view/ContactUs.vue'),
meta: {
title: '联系我们'
}
}
]
}
]
export function createRouter() {
return _createRouter({
history: createWebHashHistory(),
routes
})
}
================================================
FILE: src/style.css
================================================
:root {
font-family: Inter, Avenir, Helvetica, Arial, sans-serif;
font-size: 16px;
line-height: 24px;
font-weight: 400;
color-scheme: light dark;
color: rgba(255, 255, 255, 0.87);
background-color: #242424;
font-synthesis: none;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-text-size-adjust: 100%;
}
a {
font-weight: 500;
color: #646cff;
text-decoration: inherit;
}
a:hover {
color: #535bf2;
}
a {
font-weight: 500;
color: #646cff;
text-decoration: inherit;
}
a:hover {
color: #535bf2;
}
body {
margin: 0;
display: flex;
place-items: center;
min-width: 320px;
min-height: 100vh;
}
h1 {
font-size: 3.2em;
line-height: 1.1;
}
button {
border-radius: 8px;
border: 1px solid transparent;
padding: 0.6em 1.2em;
font-size: 1em;
font-weight: 500;
font-family: inherit;
background-color: #1a1a1a;
cursor: pointer;
transition: border-color 0.25s;
}
button:hover {
border-color: #646cff;
}
button:focus,
button:focus-visible {
outline: 4px auto -webkit-focus-ring-color;
}
.card {
padding: 2em;
}
#app {
max-width: 1280px;
margin: 0 auto;
padding: 2rem;
text-align: center;
}
@media (prefers-color-scheme: light) {
:root {
color: #213547;
background-color: #ffffff;
}
a:hover {
color: #747bff;
}
button {
background-color: #f9f9f9;
}
}
================================================
FILE: src/view/CompanyIntroduction.vue
================================================
<template>
<div id="CompanyIntroduction">
<div class="banner container-fuild text-center">关于我们</div>
<div class="container">
<div class="row CompanyIntroduction-container">
<div class="col-xs-12 col-sm-12 col-md-6 wow zoomIn">
<img
class="img-responsive center-block"
src="@/assets/img/about_img.png"
/>
</div>
<div class="col-xs-12 col-sm-12 col-md-6">
<h3>网站建设文化传播有限公司</h3>
<p class=".text-justify">
有家软件公司, 是一家以高科技创意为核心的技术服务公司,
聚集了众多对软件开发和界面设计有独特创意的高端人才,
致力于为企业提供软件开发, 网站建设, 网页设计, IT外包, 手机应用开发,
互联网营销, 微信平台开发等解决方案。
</p>
<p class=".text-justify">
我们的客户包括集团上市公司, 酒店, IT科技, 教育, 服装, 贸易, 外贸,
时尚, 生物, 工业, 制造等众多行业, 并树立了良好的口碑,
积累了丰富的经验和成功案例. 我们提供权威专业的互联网品牌策划,
并实施高标准的设计方案, 创造真正意义上的品牌网站,
为互联网品牌在互动行销领域创造最大价值而不懈努力!
</p>
</div>
</div>
</div>
</div>
</template>
<script setup name="CompanyIntroduction">
import WOW from 'wow.js'
import { onMounted } from 'vue'
onMounted(() => {
var wow = new WOW()
wow.init()
})
</script>
<style scoped>
.banner {
color: #fff;
font-size: 30px;
height: 150px;
line-height: 150px;
background-image: url('../assets/img/banner1.png');
background-repeat: no-repeat;
background-size: cover;
background-attachment: scroll;
background-position: center center;
}
.row {
margin-right: 0;
margin-left: 0;
}
.CompanyIntroduction-container {
padding: 100px 0;
color: #808080;
transition: all ease 0.5s;
}
.CompanyIntroduction-container > div > p {
font-size: 14px;
line-height: 2.5rem;
}
@media screen and (max-width: 997px) {
.CompanyIntroduction-container {
padding: 10px 0;
color: #808080;
}
}
</style>
================================================
FILE: src/view/ContactUs.vue
================================================
<template>
<div id="ContactUs">
<div class="banner container-fuild text-center">联系我们</div>
<div class="container">
<div class="container-fuild ContactUs-container">
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-6">
<form class="form-horizontal" role="form">
<div class="form-group">
<label for="name" class="col-sm-2 control-label">姓名</label>
<div class="col-sm-10 col-xs-12">
<input
type="text"
class="form-control"
id="name"
placeholder="请输入名字"
/>
</div>
</div>
<div class="form-group">
<label for="email" class="col-sm-2 control-label">邮箱</label>
<div class="col-sm-10">
<input
type="text"
class="form-control"
id="email"
placeholder="请输入邮箱"
/>
</div>
</div>
<div class="form-group">
<label for="tel" class="col-sm-2 control-label">电话</label>
<div class="col-sm-10">
<input
type="text"
class="form-control"
id="tel"
placeholder="请输入电话"
/>
</div>
</div>
<div class="form-group">
<label for="content" class="col-sm-2 control-label">内容</label>
<div class="col-sm-10">
<textarea
class="form-control"
id="content"
rows="8"
placeholder="请输入内容"
></textarea>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button
class="btn btn-default btn-block"
@click.stop="submitForm"
>
提交
</button>
</div>
</div>
</form>
</div>
<div class="col-xs-12 col-sm-12 col-md-6">
<div id="map" class="wow zoomIn"></div>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup name="ContactUs">
import WOW from 'wow.js'
import { onMounted } from 'vue'
// 百度地图BMap构造函数
let BMap = null
onMounted(() => {
BMap = window.BMap
var map = new BMap.Map('map') // 创建地图实例
var point = new BMap.Point(114.54591657517, 30.496032878104) // 创建点坐标
map.centerAndZoom(point, 18) // 初始化地图,设置中心点坐标和地图级别
map.enableScrollWheelZoom(true) //开启鼠标滚轮缩放
var marker = new BMap.Marker(point) // 创建标注
map.addOverlay(marker) // 将标注添加到地图中
var opts = {
width: 50, // 信息窗口宽度
height: 10, // 信息窗口高度
title: '武汉XXX公司' // 信息窗口标题
}
var infoWindow = new BMap.InfoWindow(
`<span>地址:武汉市东湖高新技术开发区,马蹄莲<span>
<br>
<span>联系方式:423</span>`,
opts
) // 创建信息窗口对象
map.openInfoWindow(infoWindow, map.getCenter()) // 打开信息窗口
var wow = new WOW()
wow.init()
})
function submitForm() {
window.open(
'https://neveryu.github.io/web-bookmarks/interview/',
'web-bookmarks'
)
}
</script>
<style scoped>
.banner {
color: #fff;
font-size: 30px;
height: 150px;
line-height: 150px;
background-image: url('../assets/img/banner_1.jpg');
background-repeat: no-repeat;
background-size: cover;
background-attachment: scroll;
background-position: center center;
}
.ContactUs-container {
padding: 80px 0;
transition: all ease 0.5s;
box-sizing: border-box;
}
#map {
width: 100%;
height: 365px;
}
.row {
margin-right: 0;
margin-left: 0;
}
@media screen and (max-width: 997px) {
.ContactUs-container {
padding: 20px 0;
}
}
</style>
================================================
FILE: src/view/HomePage.vue
================================================
<template>
<div id="HomePage">
<!-- 轮播图 -->
<swiper
id="swiper"
:modules="modules"
:slides-per-view="1"
:space-between="0"
navigation
lazy
loop
autoplay
:pagination="{
clickable: true
}"
>
<swiper-slide
class="banner-swiper"
v-for="(item, index) in swiperList"
:key="index"
>
<img class="swiper-lazy" :data-src="item.img" alt="轮播图" />
<div class="swiper-lazy-preloader"></div>
<div class="swiper-slide-title">
<h1>{{ item.title }}</h1>
<p>{{ item.content }}</p>
</div>
</swiper-slide>
</swiper>
<!-- 大数据管理系统 -->
<div id="bigData" class="container-fuild">
<div class="row bigData-container">
<div class="col-xs-12 col-sm-12 col-md-6 wow zoomIn">
<img
class="img-responsive"
src="@/assets/img/img1.png"
alt="大数据管理系统"
/>
</div>
<div class="col-xs-12 col-sm-12 col-md-6">
<h2 class="bigData-title">
大数据管理系统
<small>/ Big Data Management System</small>
</h2>
<p>
当今最领先的响应式自助建站平台。无论您是普通互联网用户,还是专业网站制作人员,都能使用起飞页设计出最具专业水准的网站。想创建一个简单的单页式站点,还是一个专业的公司网站,亦或是一个别具一格的博客?起飞页可以满足您的所有需求。
</p>
<p>
我们的流线式网页布局设计方案和可视化图文内容编辑模式让网站制作和维护成为一件轻松惬意的事。无论您是普通互联网用户,还是专业网站制作人员。
</p>
<h2 class="bigData-device">PC/PAD/Phone 全设备支持</h2>
<a href="javascript:;" class="btn btn-lg btn-block btn-info"
>联系我们</a
>
</div>
</div>
</div>
<!-- 您身边的IT专家 -->
<div id="contactUs" class="container-fuild text-center">
<div class="container contactUs-container wow slideInUp">
<h1>您身边的IT专家</h1>
<h3>7x24小时提供出色的IT服务</h3>
<button
class="btn btn-default btn-sm"
onmouseleave="this.style.borderColor='#ffffff'; this.style.backgroundColor='#ffffff'; this.style.color='#3f3f3f';"
onmouseenter="this.style.backgroundColor='transparent'; this.style.borderColor='#ffffff'; this.style.color='#ffffff';"
>
联系我们
</button>
<div class="contactUs-contactWay">
<span></span>
<span></span>
<span></span>
</div>
</div>
</div>
<!-- 客户评价 -->
<div id="customer" class="container-fuild">
<div class="container customer-container">
<p class="customer-title text-center">客户评价</p>
<swiper
class="swiper-container customer-swiper hidden-xs"
:modules="modules"
:slides-per-view="1"
:space-between="0"
navigation
loop
autoplay
:pagination="{
clickable: true
}"
>
<swiper-slide
class="swiper-slide customer-block"
v-for="(item, index) in customerList"
:key="index"
>
<div class="customer-logo">
<img class="center-block" :src="item.logo" alt="logo" />
</div>
<div class="customer-yh">
<img src="@/assets/img/yinhao.png" alt="引号" />
</div>
<div class="customer-content1">
<small>{{ item.content }}</small>
</div>
<div class="customer-content2">{{ item.title }}</div>
</swiper-slide>
</swiper>
<div class="row visible-xs customer-block">
<div
class="col-xs-12"
v-for="(item, index) in customerList"
:key="index"
>
<div class="customer-logo">
<img class="center-block" :src="item.logo" alt="logo" />
</div>
<div class="customer-yh">
<img src="@/assets/img/yinhao.png" alt="引号" />
</div>
<div class="customer-content1">
<small>{{ item.content }}</small>
</div>
<div class="customer-content2">
<small>{{ item.title }}</small>
</div>
</div>
</div>
</div>
</div>
<!-- 为什么选择我们 -->
<div id="whyChooseUs" class="conatiner-fuild">
<div class="container">
<div class="whyChooseUs-title text-center">
<p>为什么选择我们的服务</p>
<p>THE REASON TO CHOOSING US</p>
</div>
<div class="row">
<div
class="col-xs-12 col-sm-6 col-md-3 server-wrapper"
v-for="(item, index) in serverList"
:key="index"
>
<div
class="server-block wow slideInUp"
onmouseenter="this.style.color='#28f';this.style.borderColor='#28f'"
onmouseleave="this.style.color='#666';this.style.borderColor='#ccc'"
>
<img class="center-block" :src="item.logo" alt="logo" />
<p class="text-center">{{ item.title }}</p>
<div
class="text-center"
v-html="item.content"
onmouseenter="this.style.color='#28f'"
onmouseleave="this.style.color='#ccc'"
></div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup name="HomePage">
import WOW from 'wow.js'
import { getCurrentInstance, onMounted } from 'vue'
// import Swiper from 'swiper'
import { Navigation, Pagination, Scrollbar, A11y, Lazy, Autoplay } from 'swiper'
import { Swiper, SwiperSlide } from 'swiper/vue'
import 'swiper/css'
import 'swiper/css/navigation'
import 'swiper/css/pagination'
import 'swiper/css/scrollbar'
import 'swiper/css/lazy'
import 'swiper/css/autoplay'
import banner1 from '@/assets/img/banner1.png'
import banner2 from '@/assets/img/banner2.jpg'
import logo_hp from '@/assets/img/logo_hp.png'
import logo_kk from '@/assets/img/logo_kk.png'
import logo_toyota from '@/assets/img/logo_toyota.png'
import img_tel from '@/assets/img/tel.png'
import img_computer from '@/assets/img/computer.png'
import img_qq from '@/assets/img/qq.png'
import img_skill from '@/assets/img/skill.png'
const swiperList = [
{
img: banner1,
title: '您身边的IT专家1',
content: '宣传简介您身边的IT专家1宣传简介您身边的IT专家1'
},
{
img: banner2,
title: '您身边的IT专家2',
content: '宣传简介您身边的IT专家2宣传简介您身边的IT专家2'
},
{
img: banner1,
title: '您身边的IT专家3',
content: '宣传简介您身边的IT专家3宣传简介您身边的IT专家3'
},
{
img: banner2,
title: '您身边的IT专家4',
content: '宣传简介您身边的IT专家4宣传简介您身边的IT专家4'
}
]
const modules = [Navigation, Pagination, Scrollbar, A11y, Lazy, Autoplay]
const customerList = [
{
logo: logo_hp,
title:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。',
content:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。'
},
{
logo: logo_kk,
title:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。',
content:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。'
},
{
logo: logo_toyota,
title:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。',
content:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。'
},
{
logo: logo_kk,
title:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。',
content:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。'
},
{
logo: logo_hp,
title:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。',
content:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。'
},
{
logo: logo_toyota,
title:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。',
content:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。'
},
{
logo: logo_kk,
title:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。',
content:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。'
},
{
logo: logo_hp,
title:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。',
content:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。'
},
{
logo: logo_toyota,
title:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。',
content:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。'
},
{
logo: logo_hp,
title:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。',
content:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。'
},
{
logo: logo_kk,
title:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。',
content:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。'
},
{
logo: logo_hp,
title:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。',
content:
'您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。您可以双击这里或者点击编辑按钮来修改内容。您还可以添加图标,按钮,图片等常用元素。'
}
]
const serverList = [
{
logo: img_tel,
title: '核心优势1',
content: '<p>由专业客服提供人工服务</p>负责疑难问题和故障受理'
},
{
logo: img_computer,
title: '核心优势2',
content: '<p>利用远程视频工具,提供协助</p>帮助客户进行调试、解决故障'
},
{
logo: img_qq,
title: '核心优势3',
content: '<p>利用企业QQ提供在线解答</p>帮助企业快速准确解决问题和故障'
},
{
logo: img_skill,
title: '核心优势4',
content: '<p>由技术支持工程师,负责问题解答</p>需求受理及故障受理'
}
]
// const { proxy } = getCurrentInstance() //获取上下文实例,ctx=vue2的this
onMounted(() => {
// console.log('mounted', proxy)
// console.log(proxy.$wow, '------')
/* wowjs动画 */
new WOW({
boxClass: 'wow',
animateClass: 'animated',
offset: 0,
mobile: true,
live: true
}).init()
})
</script>
<style scoped>
/* 整体盒子 */
#HomePage {
width: 100%;
}
/* 顶部轮播图 */
#swiper {
width: 100%;
height: 600px;
}
#swiper .banner-swiper {
width: 100%;
height: 100%;
position: relative;
}
#swiper .banner-swiper img {
width: 100%;
height: 100%;
}
#swiper .banner-swiper .swiper-slide-title {
position: absolute;
top: 0;
left: 0;
z-index: 999999999;
width: 100%;
height: 100%;
color: #fff;
background: rgba(51, 51, 51, 0.534);
text-align: center;
line-height: 80px;
}
#swiper .banner-swiper .swiper-slide-title > h1 {
font-size: 50px;
margin-top: 12%;
}
#swiper .banner-swiper .swiper-slide-title > p {
font-size: 20px;
margin-top: 1%;
font-weight: 700;
}
/* 大数据管理系统 */
#bigData {
padding: 100px;
transition: all ease 0.6s;
box-sizing: border-box;
}
#bigData .bigData-title {
padding-bottom: 10px;
border-bottom: 1px solid #ccc;
}
#bigData p {
font-size: 14px;
color: #333;
line-height: 2rem;
}
#bigData .bigData-device {
margin: 50px 0 20px;
}
/* 您身边的IT专家 */
#contactUs {
color: #fff;
height: 400px;
background: url('../assets/img/contact_us_bg.jpg') 0 0 no-repeat;
background-size: 100% 100%;
transition: all ease 0.6s;
}
#contactUs .contactUs-container {
padding-top: 50px;
}
#contactUs .contactUs-container button {
width: 300px;
height: 50px;
margin-top: 40px;
}
#contactUs .contactUs-container .contactUs-contactWay span {
display: inline-block;
width: 48px;
height: 48px;
margin: 30px;
}
#contactUs .contactUs-container .contactUs-contactWay span:nth-of-type(1) {
background: url('../assets/img/weixin.png') 0 0 no-repeat;
background-size: 100% 100%;
}
#contactUs .contactUs-container .contactUs-contactWay span:nth-of-type(2) {
background: url('../assets/img/weibo.png') 0 0 no-repeat;
background-size: 100% 100%;
}
#contactUs .contactUs-container .contactUs-contactWay span:nth-of-type(3) {
background: url('../assets/img/twitter.png') 0 0 no-repeat;
background-size: 100% 100%;
}
/* 客户评价 */
#customer {
padding: 50px 0;
box-sizing: border-box;
background: #efefef;
transition: all ease 0.6s;
}
#customer .customer-title {
font-size: 30px;
color: rgb(102, 102, 102);
margin: 0 0 30px;
}
#customer .customer-block {
background: #fff;
padding: 30px 80px;
}
#customer .customer-logo img {
width: 94px;
height: 94px;
border: 1px solid #ccc;
}
#customer .customer-yh img {
width: 34px;
height: 34px;
}
#customer .customer-content1 {
padding-bottom: 20px;
border-bottom: 1px solid #0ce9f1;
}
#customer .customer-content2 {
padding-top: 20px;
}
/* 为什么选择我们 */
#whyChooseUs {
padding: 100px;
}
#whyChooseUs .whyChooseUs-title {
margin-bottom: 50px;
}
#whyChooseUs .whyChooseUs-title p:nth-of-type(1) {
font-size: 25px;
font-weight: 500;
}
#whyChooseUs .whyChooseUs-title p:nth-of-type(2) {
font-size: 14px;
}
#whyChooseUs .server-block {
padding: 50px 20px;
border: 1px solid #ccc;
border-bottom: 5px solid #ccc;
}
#whyChooseUs .server-block img {
width: 48px;
height: 48px;
}
#whyChooseUs .server-block > p {
font-size: 20px;
margin: 30px 0;
}
#whyChooseUs .server-block > div {
color: #ccc;
}
/* 媒体查询(手机) */
@media screen and (max-width: 768px) {
#swiper {
height: 200px;
}
#bigData {
padding: 30px;
}
#bigData .bigData-title {
font-size: 20px;
}
#bigData .bigData-device {
font-size: 20px;
margin: 10px 0 10px;
}
#contactUs {
height: 200px;
transition: all ease 0.6s;
}
#contactUs .contactUs-container {
padding-top: 0;
}
#contactUs .contactUs-container h1 {
font-size: 25px;
}
#contactUs .contactUs-container h3 {
font-size: 18px;
}
#contactUs .contactUs-container button {
width: 200px;
height: 30px;
margin-top: 20px;
}
#contactUs .contactUs-container .contactUs-contactWay span {
display: inline-block;
width: 28px;
height: 28px;
margin: 10px;
}
#customer {
padding: 30px 0;
box-sizing: border-box;
background: #fff;
}
#customer .customer-title {
font-size: 16px;
font-weight: bold;
}
#customer .customer-logo img {
width: 48px;
height: 48px;
}
#customer .customer-block {
padding: 30px;
}
#customer .customer-block > div {
padding: 30px 0;
}
#whyChooseUs {
padding: 20px 0;
transition: all ease 0.6s;
}
#whyChooseUs .whyChooseUs-title p:nth-of-type(1) {
font-size: 20px;
font-weight: 700;
}
#whyChooseUs .whyChooseUs-title p:nth-of-type(2) {
font-size: 12px;
}
#whyChooseUs .server-block {
padding: 50px 0;
border: 1px solid #ccc;
border-bottom: 5px solid #ccc;
}
#whyChooseUs .server-block img {
width: 48px;
height: 48px;
}
#whyChooseUs .server-block > p {
font-size: 20px;
margin: 30px 0;
}
#whyChooseUs .server-block > div {
color: #ccc;
}
}
/* 媒体查询(平板) */
@media screen and (min-width: 768px) and (max-width: 996px) {
#swiper {
height: 400px;
}
#bigData {
padding: 60px;
}
#bigData .bigData-title {
font-size: 30px;
}
#bigData .bigData-device {
font-size: 30px;
margin: 30px 0 15px;
}
#contactUs {
height: 300px;
}
#contactUs .contactUs-container {
padding-top: 50px;
}
#contactUs .contactUs-container h1 {
font-size: 30px;
}
#contactUs .contactUs-container h3 {
font-size: 20px;
}
#contactUs .contactUs-container button {
width: 300px;
height: 50px;
margin-top: 30px;
}
#contactUs .contactUs-container .contactUs-contactWay span {
display: inline-block;
width: 32px;
height: 32px;
margin: 15px;
}
#customer .customer-title {
font-size: 24px;
}
#whyChooseUs {
padding: 20px 0;
}
}
</style>
================================================
FILE: src/view/JobChance.vue
================================================
<template>
<div id="JobChance">
<div class="banner container-fuild text-center">工作机会</div>
<div class="container">
<div class="JobChance-container wow pulse">
<h2>软件工程师</h2>
<p>岗位职责</p>
<ol>
<li>负责公司产品及项目系统的功能开发、代码优化;</li>
<li>负责项目组人员任务的分配与监督,及时解决项目技术问题;</li>
<li>
参与系统需求分析与设计,并负责完成PHP核心代码,接口规范制定,架构设计。
</li>
</ol>
<p>任职要求</p>
<ol>
<li>
精通PHP+MySql+Apache开发,精通使用JavaScript、AJAX、JQuery等技术;3年以上WEB应用程序开发经验,
有大型网站或电子商务网站工作经验者优先;
</li>
<li>熟悉jQuery,具有AJAX、HTML、CSS、JAVASCRIPT等方面的开发经验;</li>
<li>
熟悉PHP模板技术、框架技术及设计模式,有php框架系统进行开发经验者优先,如:phpcms,dedecms等;
</li>
<li>
精通数据库原理,精通MYSQL、了解Mongo等并有相关关系数据库设计开发经验,
了解Mysql的数据库配置管理、性能优化;
</li>
<li>
熟悉常见的数据结构和算法,具备良好的编程习惯及较强的文档编写能力;
</li>
<li>熟悉各种WEB缓存技术,熟悉大型网站构架和性能优化;</li>
<li>
对网站系统架构的部署、搭建、优化、排错等方面有丰富经验,对高负载、大访问量情况下的系统架构有经验者优先。
</li>
</ol>
<button
class="center-block btn btn-warning btn-lg"
@click.stop="submitForm"
>
投递简历
</button>
</div>
</div>
</div>
</template>
<script setup name="JobChance">
import WOW from 'wow.js'
import { onMounted } from 'vue'
onMounted(() => {
let wow = new WOW()
wow.init()
})
function submitForm() {
window.open('https://neveryu.github.io/neveryu/', 'NeverYu')
}
</script>
<style scoped>
.banner {
color: #fff;
font-size: 30px;
height: 150px;
line-height: 150px;
background-image: url('../assets/img/banner_2.jpg');
background-repeat: no-repeat;
background-size: cover;
background-attachment: scroll;
background-position: center center;
}
.JobChance-container {
margin: 100px;
padding: 30px;
transition: all ease 0.5s;
border: 1px dashed salmon;
}
.JobChance-container h2 {
color: rgb(255, 102, 19);
font-weight: bolder;
text-align: center;
}
.JobChance-container p {
font-size: 20px;
color: rgb(255, 102, 19);
font-weight: 700;
}
.JobChance-container ol {
list-style-type: decimal;
padding-left: 30px;
}
.JobChance-container ol > li {
font-size: 14px;
line-height: 2.7rem;
}
@media screen and (max-width: 997px) {
.JobChance-container {
margin: 20px 0;
padding: 20px;
border: 1px dashed salmon;
}
}
</style>
================================================
FILE: src/view/NewsInformation.vue
================================================
<template>
<div id="NewsInformation">
<div class="container">
<div class="container text-center">
<h3>新闻动态</h3>
<p style="color: #b2b2b2">Company News</p>
</div>
<div class="nav container text-center">
<a href="javascript:;" class="active">公司新闻</a>
<a href="javascript:;">行业动态</a>
</div>
<ul class="news-container container-fuild">
<li v-for="(item, index) in newsList" :key="index" class="wow fadeIn">
<div class="content">
<p>{{ item.title }}</p>
<p>{{ item.introduce }}</p>
</div>
<div class="time">
<p>{{ item.date }}</p>
<span>{{ item.year }}</span>
</div>
<div class="circle">
<img src="@/assets/img/circle.png" />
<i class="line center-block"></i>
</div>
</li>
</ul>
<div class="contaianer-fuild text-center more">
<i class="glyphicon glyphicon-th"></i>
</div>
</div>
</div>
</template>
<script setup name="NewsInformation">
import WOW from 'wow.js'
import { onMounted } from 'vue'
const newsList = [
{
id: '001',
title: '世界上第一个程序员',
introduce:
'为计算程序拟定“算法”,写作的第四份“程序设计流程图”,被珍视为“第一位给计算机',
date: '05-24',
year: '2019'
},
{
id: '002',
title: '世界上第二个程序员',
introduce:
'为计算程序拟定“算法”,写作的第四份“程序设计流程图”,被珍视为“第一位给计算机',
date: '05-24',
year: '2019'
},
{
id: '003',
title: '世界上第三个程序员',
introduce:
'为计算程序拟定“算法”,写作的第四份“程序设计流程图”,被珍视为“第一位给计算机',
date: '05-24',
year: '2019'
},
{
id: '004',
title: '世界上第四个程序员',
introduce:
'为计算程序拟定“算法”,写作的第四份“程序设计流程图”,被珍视为“第一位给计算机',
date: '05-24',
year: '2019'
},
{
id: '005',
title: '世界上第五个程序员',
introduce:
'为计算程序拟定“算法”,写作的第五份“程序设计流程图”,被珍视为“第一位给计算机',
date: '05-24',
year: '2019'
},
{
id: '006',
title: '世界上第六个程序员',
introduce:
'为计算程序拟定“算法”,写作的第五份“程序设计流程图”,被珍视为“第一位给计算机',
date: '05-24',
year: '2019'
}
]
onMounted(() => {
var wow = new WOW()
wow.init()
})
</script>
<style scoped>
.nav {
margin: 20px 0;
}
.nav > a {
display: inline-block;
text-decoration: none;
width: 120px;
height: 45px;
line-height: 45px;
color: #333;
border: 1px solid #333;
}
.nav > a.active {
color: #1e73be;
border-color: #1e73be;
}
.nav > a:hover {
color: #1e73be;
border-color: #1e73be;
}
.news-container {
overflow: hidden;
margin-bottom: 0;
}
.news-container > li {
width: 55.6%;
height: 120px;
float: left;
color: #333;
text-align: right;
border-left: 1px solid transparent;
border-right: 1px solid transparent;
}
.news-container > li:hover {
color: #1e73be;
border: 1px solid #1e73be;
cursor: pointer;
}
.news-container > li:nth-of-type(2n) {
float: right;
text-align: left;
}
.news-container > li > .content {
width: 60%;
float: left;
padding: 20px 0;
}
.news-container > li > .time {
width: 20%;
float: left;
padding: 10px 0;
}
.news-container > li > .time > p {
font-size: 30px;
margin: 5px 0;
}
.news-container > li > .circle {
width: 20%;
height: 100%;
float: left;
position: relative;
}
.news-container > li > .circle > img {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
width: 20px;
height: 20px;
}
.news-container > li > .circle > i {
display: block;
width: 1px;
height: 100%;
background: #707070;
}
.news-container > li:nth-of-type(2n) > .content {
float: right;
}
.news-container > li:nth-of-type(2n) > .time {
float: right;
}
.news-container > li:nth-of-type(2n) > .circle {
float: right;
}
.news-container > li:nth-of-type(1) > .circle > i {
height: 50%;
position: absolute;
top: 50%;
left: 50%;
}
.more {
font-size: 25px;
color: #707070;
}
.more > i {
cursor: pointer;
}
@media screen and (max-width: 767px) {
.news-container > li {
width: 100%;
}
.news-container > li > .content {
width: 70%;
text-align: left;
float: right;
}
.news-container > li > .time {
width: 30%;
text-align: left;
float: right;
}
.news-container > li > .circle {
display: none;
}
}
</style>
================================================
FILE: src/view/PageView.vue
================================================
<template>
<div id="container">
<router-view />
</div>
</template>
<script setup name="PageView"></script>
<style scoped></style>
================================================
FILE: src/view/Service.vue
================================================
<template>
<div id="Service">
<div class="container text-center">
<h3>我们的服务</h3>
<p style="color: #b2b2b2">The Best Service You Never See</p>
</div>
<div class="container">
<div class="Service-container row">
<div
class="Service-item col-xs-12 col-sm-6 col-md-3 wow slideInUp"
v-for="(item, index) in serviceList"
:key="index"
@click="ServiceClick(item.id)"
>
<div class="Service-item-wrapper">
<div class="Service-item-top">
<h4>{{ item.title }}</h4>
<i></i>
<p>{{ item.eng_title }}</p>
</div>
<div class="Service-item-img">
<img :src="item.img" alt="服务" />
</div>
<div class="Service-item-border"></div>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup name="Service">
import { useRouter } from 'vue-router'
import { onMounted } from 'vue'
import WOW from 'wow.js'
import service1 from '@/assets/img/service1.jpg'
import service2 from '@/assets/img/service2.jpg'
import service3 from '@/assets/img/service3.jpg'
import service4 from '@/assets/img/service4.jpg'
const serviceList = [
{
id: 'section-1',
title: '软件定制开发',
eng_title: 'Customize App',
img: service1
},
{
id: 'section-2',
title: 'IT外包服务',
eng_title: 'Outsourcing',
img: service2
},
{
id: 'section-3',
title: '网上商城建设',
eng_title: 'eCommerce Site',
img: service3
},
{
id: 'section-4',
title: 'iOS应用定制开发',
eng_title: 'iOS App Dev',
img: service4
}
]
const router = useRouter()
function ServiceClick(id) {
router.push({
name: 'serviceDetail',
state: {
id
}
})
}
onMounted(() => {
var wow = new WOW()
wow.init()
})
</script>
<style scoped>
.Service-container {
padding: 30px 50px;
}
.Service-item {
margin-bottom: 50px;
}
.Service-item-wrapper {
cursor: pointer;
background: rgba(244, 244, 244, 1);
overflow: hidden;
position: relative;
}
.Service-item-top {
width: 100%;
height: 120px;
padding: 30px;
text-align: center;
}
.Service-item-top > i {
display: inline-block;
width: 25px;
height: 2px;
background: #28f;
}
.Service-item-top > p {
color: #b2b2b2;
opacity: 0;
transform: translateY(10px);
transition: all 0.5s ease;
}
.Service-item-img {
width: 100%;
overflow: hidden;
}
.Service-item-img img {
width: 100%;
transition: all 0.5s ease;
}
.Service-item-border {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
z-index: 9999999;
width: 100%;
height: 100%;
transition: all 0.5s ease;
border: 1px solid #000;
opacity: 0;
}
.Service-item-wrapper:hover .Service-item-top > i {
opacity: 0;
}
.Service-item-wrapper:hover .Service-item-top > p {
opacity: 1;
transform: translateY(-10px);
}
.Service-item-wrapper:hover .Service-item-img > img {
transform: scale(1.1, 1.1);
}
.Service-item-wrapper:hover > .Service-item-border {
opacity: 1;
width: 90%;
height: 90%;
}
</style>
================================================
FILE: src/view/ServiceDetail.vue
================================================
<template>
<div id="ServiceDetail">
<div class="banner container-fuild text-center">相关服务</div>
<div class="container">
<div class="row">
<div class="col-xs-12 col-sm-12 col-md-3" id="myScrollspy">
<ul class="nav nav-tabs nav-stacked center-block" id="myNav">
<p>特色服务</p>
<li
:class="item.id == id ? 'active' : ''"
v-for="(item, index) in serviceNavList"
:key="index"
>
<a href="javascript:;" @click.stop="toSection(item.id)">{{
item.title
}}</a>
</li>
</ul>
</div>
<div class="col-xs-12 col-sm-12 col-md-9 content wow zoomIn">
<div
class="content-block"
v-for="(item, index) in serviceContentList"
:key="index"
>
<h2 :id="item.id">
{{ item.title }}
<small>/ {{ item.eng_title }}</small>
</h2>
<div v-html="item.content"></div>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup name="serviceDetail">
import { ref, onMounted } from 'vue'
import { useRoute } from 'vue-router'
import WOW from 'wow.js'
const id = ref('section-1')
const serviceNavList = [
{
id: 'section-1',
title: '软件定制开发'
},
{
id: 'section-2',
title: 'IT外包服务'
},
{
id: 'section-3',
title: '网上商城建设'
},
{
id: 'section-4',
title: 'iOS应用定制开发'
}
]
const serviceContentList = [
{
id: 'section-1',
title: '软件定制开发',
eng_title: 'Customize App',
content:
'<h3>这是标题1</h3><p>这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。</p><h3>这是标题2</h3><p>这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。</p>'
},
{
id: 'section-2',
title: 'IT外包服务',
eng_title: 'Outsourcing',
content:
'<h3>这是标题1</h3><p>这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。</p><h3>这是标题2</h3><p>这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。</p>'
},
{
id: 'section-3',
title: '网上商城建设',
eng_title: 'eCommerce Site',
content:
'<h3>这是标题1</h3><p>这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。</p><h3>这是标题2</h3><p>这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。</p>'
},
{
id: 'section-4',
title: 'iOS应用定制开发',
eng_title: 'iOS App Dev',
content:
'<h3>这是标题1</h3><p>这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。</p><h3>这是标题2</h3><p>这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。这里是内容,请根据实际需要修改。</p>'
}
]
function toSection(_id) {
id.value = _id
let top = document.getElementById(id.value).offsetTop
$(window).scrollTop(top + 300)
$('#myNav').affix({
offset: {
top: 300
}
})
}
const route = useRoute()
const props = defineProps({
id: {
type: String,
required: true
// default: 'section-1222'
}
})
onMounted(() => {
console.log('route:', route, route.params, route.query)
console.log('history.state:', history.state)
id.value = history.state.id
console.log(id.value, 'pp')
let top = document.getElementById(id.value).offsetTop
$(window).scrollTop(top + 300)
$('#myNav').affix({
offset: {
top: 300
}
})
var wow = new WOW()
wow.init()
})
</script>
<style scoped>
.banner {
color: #fff;
font-size: 30px;
height: 150px;
line-height: 150px;
background-image: url('../assets/img/banner_2.jpg');
background-repeat: no-repeat;
background-size: cover;
background-attachment: scroll;
background-position: center center;
}
ul.nav-tabs {
width: 200px;
margin-top: 40px;
border-radius: 4px;
background: #fff;
z-index: 99999;
border: 1px solid #474747;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.067);
}
ul.nav-tabs li {
text-align: center;
margin: 0;
border-top: 1px solid #474747;
}
ul.nav-tabs p {
color: #fff;
font-size: 18px;
font-weight: bold;
text-align: center;
background: #474747;
margin: 0;
padding: 10px 0;
}
ul.nav-tabs li:first-child {
border-top: none;
}
ul.nav-tabs li a {
margin: 0;
padding: 8px 16px;
border-radius: 0;
}
ul.nav-tabs li.active a,
ul.nav-tabs li.active a:hover {
color: #fff;
background: #474747;
border: 1px solid #474747;
}
ul.nav-tabs li:first-child a {
border-radius: 4px 4px 0 0;
}
ul.nav-tabs li:last-child a {
border-radius: 0 0 4px 4px;
}
ul.nav-tabs.affix {
top: 30px;
}
.content-block {
margin: 50px 0;
}
.content-block > h2 {
padding: 20px 0;
border-bottom: 1px solid #ccc;
}
</style>
================================================
FILE: src/view/Software.vue
================================================
<template>
<div id="Software" class="container">
<div class="row">
<div id="left" class="col-md-4 col-xs-12">
<ul class="left-container wow bounceInLeft">
<p>软件产品</p>
<li v-for="(item, index) in softwareList" :key="index">
<router-link :to="item.path">{{ item.name }}</router-link>
</li>
</ul>
</div>
<div id="right" class="col-md-8 col-xs-12 wow bounceInRight">
<router-view></router-view>
</div>
</div>
</div>
</template>
<script setup name="Software">
import WOW from 'wow.js'
import { onMounted } from 'vue'
const softwareList = [
{
path: '/software/smartTown',
name: '智能小镇管理系统'
},
{
path: '/software/bigData',
name: '大数据管理系统'
}
]
onMounted(() => {
// var wow = new WOW()
// wow.init()
})
</script>
<style scoped>
#left {
margin: 50px 0;
}
.left-container {
width: 60%;
margin: 0 auto;
border: 1px solid #474747;
border-radius: 5px;
}
.left-container > p {
text-align: center;
line-height: 45px;
padding: 0;
margin: 0;
background: #474747;
color: #fff;
font-size: 18px;
font-weight: bold;
}
.left-container > li {
text-align: center;
height: 38px;
line-height: 38px;
margin: 0;
border-top: 1px solid #474747;
}
.left-container > li > a {
text-decoration: none;
}
.left-container > li:hover {
background: #928989;
}
#right {
padding: 50px 0;
}
@media screen and (max-width: 768px) {
#right {
padding: 15px;
}
}
</style>
================================================
FILE: src/view/Software_bigData.vue
================================================
<template>
<div id="Software">大数据管理系统</div>
</template>
<script setup name="bigData"></script>
================================================
FILE: src/view/Software_smartTown.vue
================================================
<template>
<div id="smartTown">智能小镇管理系统</div>
</template>
<script setup name="smartTown"></script>
================================================
FILE: vite.config.js
================================================
import { resolve } from 'path'
import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import inject from '@rollup/plugin-inject'
import { createHtmlPlugin } from 'vite-plugin-html'
// https://vitejs.dev/config/
export default defineConfig({
base: '/official-website/',
plugins: [
vue(),
inject({
$: 'jquery', // 这里会自动载入 node_modules 中的 jquery
jQuery: 'jquery',
'windows.jQuery': 'jquery',
BMap: 'BMap'
}),
createHtmlPlugin({
/**
* 需要注入 index.html ejs 模版的数据
* https://blog.csdn.net/SilenceJude/article/details/128297371
*/
inject: {
data: {
VITE_APP_VERSION: new Date().toLocaleString()
}
}
})
],
resolve: {
alias: {
'@': resolve(__dirname, './src')
}
}
})
gitextract_t8uq2tzh/ ├── .editorconfig ├── .github/ │ └── workflows/ │ └── deploy.yml ├── .gitignore ├── .prettierrc ├── .vscode/ │ └── extensions.json ├── README.md ├── index.html ├── package.json ├── src/ │ ├── App.vue │ ├── common/ │ │ └── load-bmap.js │ ├── components/ │ │ ├── Footer.vue │ │ ├── GoTop.vue │ │ └── Header.vue │ ├── main.js │ ├── router/ │ │ └── index.js │ ├── style.css │ └── view/ │ ├── CompanyIntroduction.vue │ ├── ContactUs.vue │ ├── HomePage.vue │ ├── JobChance.vue │ ├── NewsInformation.vue │ ├── PageView.vue │ ├── Service.vue │ ├── ServiceDetail.vue │ ├── Software.vue │ ├── Software_bigData.vue │ └── Software_smartTown.vue └── vite.config.js
SYMBOL INDEX (2 symbols across 2 files)
FILE: src/common/load-bmap.js
function Bmap (line 1) | function Bmap() {
FILE: src/router/index.js
function createRouter (line 111) | function createRouter() {
Condensed preview — 28 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (75K chars).
[
{
"path": ".editorconfig",
"chars": 264,
"preview": "# https://editorconfig.org\nroot = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = 2\nend_of_line = lf\ninsert"
},
{
"path": ".github/workflows/deploy.yml",
"chars": 1413,
"preview": "# This is a basic workflow to help you get started with Actions\n\nname: deploy\n\n# Controls when the workflow will run\non:"
},
{
"path": ".gitignore",
"chars": 272,
"preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndis"
},
{
"path": ".prettierrc",
"chars": 229,
"preview": "{\n \"semi\": false,\n \"singleQuote\": true,\n \"trailingComma\": \"none\",\n \"printWidth\": 80,\n \"endOfLine\": \"crlf\",\n \"overr"
},
{
"path": ".vscode/extensions.json",
"chars": 39,
"preview": "{\n \"recommendations\": [\"Vue.volar\"]\n}\n"
},
{
"path": "README.md",
"chars": 1115,
"preview": "# Official-website\n\n> 响应式的企业官方网站模板,使用 [Vite](https://cn.vitejs.dev/) 脚手架搭建,使用 [Vue3](https://cn.vuejs.org/) 开发。\n\n## 运行/启"
},
{
"path": "index.html",
"chars": 508,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <link rel=\"icon\" type=\"image/svg+xml\" href=\"/"
},
{
"path": "package.json",
"chars": 523,
"preview": "{\n \"name\": \"official-website\",\n \"private\": true,\n \"version\": \"1.0.0\",\n \"type\": \"module\",\n \"scripts\": {\n \"dev\": \""
},
{
"path": "src/App.vue",
"chars": 337,
"preview": "<script setup>\nimport Header from '@/components/Header.vue'\nimport Footer from '@/components/Footer.vue'\nimport GoTop fr"
},
{
"path": "src/common/load-bmap.js",
"chars": 434,
"preview": "export function Bmap() {\n return new Promise(function (resolve, reject) {\n window.initBMapGL = function () {\n c"
},
{
"path": "src/components/Footer.vue",
"chars": 1747,
"preview": "<template>\n <div id=\"footer\" class=\"container-fluid\">\n <div class=\"logo\">\n <img src=\"@/assets/img/logo_white.pn"
},
{
"path": "src/components/GoTop.vue",
"chars": 780,
"preview": "<template>\n <div id=\"GoTop\" @click=\"GoTop()\">\n <span class=\"glyphicon glyphicon-chevron-up\"></span>\n </div>\n</templ"
},
{
"path": "src/components/Header.vue",
"chars": 8575,
"preview": "<template>\n <!-- 头部整体盒子 -->\n <div id=\"header\" class=\"container-fuild\">\n <!-- 头部顶部 -->\n <div class=\"header-top co"
},
{
"path": "src/main.js",
"chars": 442,
"preview": "import { createApp } from 'vue'\nimport { createRouter } from '@/router'\n\n/* swiper */\n// import 'swiper/swiper.min.css'\n"
},
{
"path": "src/router/index.js",
"chars": 2794,
"preview": "import { createRouter as _createRouter, createWebHashHistory } from 'vue-router'\n\n// const pages = import.meta.glob('../"
},
{
"path": "src/style.css",
"chars": 1422,
"preview": ":root {\n font-family: Inter, Avenir, Helvetica, Arial, sans-serif;\n font-size: 16px;\n line-height: 24px;\n font-weigh"
},
{
"path": "src/view/CompanyIntroduction.vue",
"chars": 1831,
"preview": "<template>\n <div id=\"CompanyIntroduction\">\n <div class=\"banner container-fuild text-center\">关于我们</div>\n <div clas"
},
{
"path": "src/view/ContactUs.vue",
"chars": 3948,
"preview": "<template>\n <div id=\"ContactUs\">\n <div class=\"banner container-fuild text-center\">联系我们</div>\n <div class=\"contain"
},
{
"path": "src/view/HomePage.vue",
"chars": 15503,
"preview": "<template>\n <div id=\"HomePage\">\n <!-- 轮播图 -->\n <swiper\n id=\"swiper\"\n :modules=\"modules\"\n :slides-p"
},
{
"path": "src/view/JobChance.vue",
"chars": 2445,
"preview": "<template>\n <div id=\"JobChance\">\n <div class=\"banner container-fuild text-center\">工作机会</div>\n <div class=\"contain"
},
{
"path": "src/view/NewsInformation.vue",
"chars": 4209,
"preview": "<template>\n <div id=\"NewsInformation\">\n <div class=\"container\">\n <div class=\"container text-center\">\n <h"
},
{
"path": "src/view/PageView.vue",
"chars": 140,
"preview": "<template>\n <div id=\"container\">\n <router-view />\n </div>\n</template>\n\n<script setup name=\"PageView\"></script>\n\n<st"
},
{
"path": "src/view/Service.vue",
"chars": 3103,
"preview": "<template>\n <div id=\"Service\">\n <div class=\"container text-center\">\n <h3>我们的服务</h3>\n <p style=\"color: #b2b"
},
{
"path": "src/view/ServiceDetail.vue",
"chars": 5367,
"preview": "<template>\n <div id=\"ServiceDetail\">\n <div class=\"banner container-fuild text-center\">相关服务</div>\n <div class=\"con"
},
{
"path": "src/view/Software.vue",
"chars": 1507,
"preview": "<template>\n <div id=\"Software\" class=\"container\">\n <div class=\"row\">\n <div id=\"left\" class=\"col-md-4 col-xs-12\""
},
{
"path": "src/view/Software_bigData.vue",
"chars": 98,
"preview": "<template>\n <div id=\"Software\">大数据管理系统</div>\n</template>\n<script setup name=\"bigData\"></script>\n\n"
},
{
"path": "src/view/Software_smartTown.vue",
"chars": 103,
"preview": "<template>\n <div id=\"smartTown\">智能小镇管理系统</div>\n</template>\n\n<script setup name=\"smartTown\"></script>\n\n"
},
{
"path": "vite.config.js",
"chars": 818,
"preview": "import { resolve } from 'path'\nimport { defineConfig, loadEnv } from 'vite'\nimport vue from '@vitejs/plugin-vue'\nimport "
}
]
About this extraction
This page contains the full source code of the Neveryu/official-website GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 28 files (58.6 KB), approximately 20.1k tokens, and a symbol index with 2 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.