@ -0,0 +1,3 @@ |
|||||
|
> 1% |
||||
|
last 2 versions |
||||
|
not dead |
@ -0,0 +1,219 @@ |
|||||
|
--- |
||||
|
kind: pipeline |
||||
|
type: docker |
||||
|
name: development |
||||
|
|
||||
|
# 常量值 |
||||
|
constants: |
||||
|
- &DEVELOPMENT_HOST test.tall.wiki |
||||
|
- &DEVELOPMENT_CMD |
||||
|
- npm config set registry http://registry.npm.taobao.org |
||||
|
- npm i |
||||
|
- npm run build:test |
||||
|
- &DEVELOPMENT_SCP_TARGET /home/greenvalley |
||||
|
- &DEVELOPMENT_URL http://www.sxgreenvalley.com/ |
||||
|
- &DEVELOPMENT_PORT 22 |
||||
|
- &DEVELOPMENT_NODE_VERSION node:16 |
||||
|
- &DEVELOPMENT_BRANCH develop |
||||
|
- &DEVELOPMENT_SCP_SOURCE dist/* |
||||
|
- &SCP_STRIP_DIR_LEVEL 1 |
||||
|
- &NOTIFY_WECHATROBOT_WEBHOOK https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=428e5c5d-f992-4349-939d-9c99556e50b8 |
||||
|
|
||||
|
|
||||
|
# 挂载的主机卷,可以映射到docker容器中 |
||||
|
volumes: |
||||
|
# maven构建缓存(宿主机目录) |
||||
|
- name: ssh_key |
||||
|
host: |
||||
|
path: /root/.ssh/ |
||||
|
- name: cache |
||||
|
host: |
||||
|
path: /var/lib/cache |
||||
|
- name: data |
||||
|
host: |
||||
|
path: /var/lib/data |
||||
|
|
||||
|
steps: |
||||
|
- name: restore-cache |
||||
|
image: drillster/drone-volume-cache |
||||
|
volumes: |
||||
|
- name: cache |
||||
|
path: /cache |
||||
|
settings: |
||||
|
restore: true |
||||
|
mount: |
||||
|
- ./node_modules |
||||
|
|
||||
|
- name: build |
||||
|
image: *DEVELOPMENT_NODE_VERSION |
||||
|
pull: if-not-exists # default always |
||||
|
# volumes: |
||||
|
# - name: cache |
||||
|
# path: /root/.m2 |
||||
|
commands: *DEVELOPMENT_CMD |
||||
|
|
||||
|
- name: rebuild-cache |
||||
|
image: drillster/drone-volume-cache |
||||
|
volumes: |
||||
|
- name: cache |
||||
|
path: /cache |
||||
|
settings: |
||||
|
rebuild: true |
||||
|
mount: |
||||
|
- ./node_modules |
||||
|
|
||||
|
- name: deploy-scp |
||||
|
image: appleboy/drone-scp |
||||
|
pull: if-not-exists |
||||
|
volumes: |
||||
|
- name: ssh_key |
||||
|
path: /root/.ssh/ |
||||
|
settings: |
||||
|
host: *DEVELOPMENT_HOST |
||||
|
port: *DEVELOPMENT_PORT |
||||
|
username: root |
||||
|
key_path: /root/.ssh/id_rsa |
||||
|
rm: true # true则会删除目标目录重建 |
||||
|
target: *DEVELOPMENT_SCP_TARGET |
||||
|
source: *DEVELOPMENT_SCP_SOURCE |
||||
|
strip_components: 1 # 去除的目录层数,如果没有该选项,则拷贝过去是 target/xxx.jar,1代表去除target |
||||
|
|
||||
|
- name: notify-wechatwork |
||||
|
image: fifsky/drone-wechat-work |
||||
|
pull: if-not-exists |
||||
|
settings: |
||||
|
url: *NOTIFY_WECHATROBOT_WEBHOOK |
||||
|
msgtype: markdown |
||||
|
content: | |
||||
|
{{if eq .Status "success" }} |
||||
|
#### 🎉 ${DRONE_REPO} 测试环境构建成功 |
||||
|
> Branch: ${DRONE_BRANCH} |
||||
|
> Commit: [${DRONE_COMMIT_MESSAGE} ](${DRONE_COMMIT_LINK}) |
||||
|
> Author: ${DRONE_COMMIT_AUTHOR} |
||||
|
> PATH: http://www.sxgreenvalley.com/ |
||||
|
> [点击查看](http://www.sxgreenvalley.com/) |
||||
|
{{else}} |
||||
|
#### ❌ ${DRONE_REPO} 测试环境构建失败 |
||||
|
> Branch: ${DRONE_BRANCH} |
||||
|
> Commit: [${DRONE_COMMIT_MESSAGE} ](${DRONE_COMMIT_LINK}) |
||||
|
> Author: ${DRONE_COMMIT_AUTHOR} |
||||
|
> 请立即修复!!! |
||||
|
> [点击查看](http://www.sxgreenvalley.com/) |
||||
|
{{end}} |
||||
|
when: |
||||
|
status: |
||||
|
- failure |
||||
|
- success |
||||
|
|
||||
|
trigger: |
||||
|
branch: |
||||
|
- *DEVELOPMENT_BRANCH |
||||
|
|
||||
|
--- |
||||
|
kind: pipeline |
||||
|
type: docker |
||||
|
name: production |
||||
|
|
||||
|
# 常量值 |
||||
|
constants: |
||||
|
- &PRODUCTION_HOST www.sxgreenvalley.com |
||||
|
- &PRODUCTION_CMD |
||||
|
- npm config set registry http://registry.npm.taobao.org |
||||
|
- npm i |
||||
|
- npm run build |
||||
|
- &PRODUCTION_SCP_TARGET /home/greenvalley |
||||
|
- &PRODUCTION_BRANCH master |
||||
|
- &PRODUCTION_PORT 22 |
||||
|
- &PRODUCTION_NODE_VERSION node:16 |
||||
|
- &PRODUCTION_SCP_SOURCE dist/* |
||||
|
- &SCP_STRIP_DIR_LEVEL 1 |
||||
|
- &NOTIFY_WECHATROBOT_WEBHOOK https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=428e5c5d-f992-4349-939d-9c99556e50b8 |
||||
|
|
||||
|
# 挂载的主机卷,可以映射到docker容器中 |
||||
|
volumes: |
||||
|
# maven构建缓存(宿主机目录) |
||||
|
- name: ssh_key |
||||
|
host: |
||||
|
path: /root/.ssh/ |
||||
|
- name: cache |
||||
|
host: |
||||
|
path: /var/lib/cache |
||||
|
- name: data |
||||
|
host: |
||||
|
path: /var/lib/data |
||||
|
|
||||
|
steps: |
||||
|
- name: restore-cache |
||||
|
image: drillster/drone-volume-cache |
||||
|
volumes: |
||||
|
- name: cache |
||||
|
path: /cache |
||||
|
settings: |
||||
|
restore: true |
||||
|
mount: |
||||
|
- ./node_modules |
||||
|
|
||||
|
- name: build |
||||
|
image: *PRODUCTION_NODE_VERSION |
||||
|
pull: if-not-exists # default always |
||||
|
# volumes: |
||||
|
# - name: cache |
||||
|
# path: /root/.m2 |
||||
|
commands: *PRODUCTION_CMD |
||||
|
|
||||
|
- name: rebuild-cache |
||||
|
image: drillster/drone-volume-cache |
||||
|
volumes: |
||||
|
- name: cache |
||||
|
path: /cache |
||||
|
settings: |
||||
|
rebuild: true |
||||
|
mount: |
||||
|
- ./node_modules |
||||
|
|
||||
|
- name: deploy-scp |
||||
|
image: appleboy/drone-scp |
||||
|
pull: if-not-exists |
||||
|
volumes: |
||||
|
- name: ssh_key |
||||
|
path: /root/.ssh/ |
||||
|
settings: |
||||
|
host: *PRODUCTION_HOST |
||||
|
port: *PRODUCTION_PORT |
||||
|
username: root |
||||
|
key_path: /root/.ssh/id_rsa |
||||
|
rm: true # true则会删除目标目录重建 |
||||
|
target: *PRODUCTION_SCP_TARGET |
||||
|
source: *PRODUCTION_SCP_SOURCE |
||||
|
strip_components: 1 # 去除的目录层数,如果没有该选项,则拷贝过去是 target/xxx.jar,1代表去除target |
||||
|
|
||||
|
- name: notify-wechatwork |
||||
|
image: fifsky/drone-wechat-work |
||||
|
pull: if-not-exists |
||||
|
settings: |
||||
|
url: *NOTIFY_WECHATROBOT_WEBHOOK |
||||
|
msgtype: markdown |
||||
|
content: | |
||||
|
{{if eq .Status "success" }} |
||||
|
#### 🎉 ${DRONE_REPO} 生产环境构建成功 |
||||
|
> Branch: ${DRONE_BRANCH} |
||||
|
> Commit: [${DRONE_COMMIT_MESSAGE}](${DRONE_COMMIT_LINK}) |
||||
|
> Author: ${DRONE_COMMIT_AUTHOR} |
||||
|
> PATH: http://www.sxgreenvalley.com/ |
||||
|
> [点击查看](http://www.sxgreenvalley.com/) |
||||
|
{{else}} |
||||
|
#### ❌ ${DRONE_REPO} 生产环境构建失败 |
||||
|
> Branch: ${DRONE_BRANCH} |
||||
|
> Commit: [${DRONE_COMMIT_MESSAGE}](${DRONE_COMMIT_LINK}) |
||||
|
> Author: ${DRONE_COMMIT_AUTHOR} |
||||
|
> 请立即修复!!! |
||||
|
> [点击查看](http://www.sxgreenvalley.com/) |
||||
|
{{end}} |
||||
|
when: |
||||
|
status: |
||||
|
- failure |
||||
|
- success |
||||
|
|
||||
|
trigger: |
||||
|
branch: |
||||
|
- *PRODUCTION_BRANCH |
@ -0,0 +1,8 @@ |
|||||
|
[*.{js,jsx,ts,tsx,vue}] |
||||
|
indent_style = space |
||||
|
indent_size = 2 |
||||
|
end_of_line = lf |
||||
|
trim_trailing_whitespace = true |
||||
|
insert_final_newline = true |
||||
|
max_line_length = 140 |
||||
|
root = true |
@ -0,0 +1,3 @@ |
|||||
|
VUE_APP_MODE=production |
||||
|
VUE_APP_PREVIEW=false |
||||
|
VUE_APP_URL=http://192.168.0.99:7270/ |
@ -0,0 +1,10 @@ |
|||||
|
VUE_APP_MODE=development |
||||
|
VUE_APP_NODE_ENV=development |
||||
|
VUE_APP_SCENE=/datang/ |
||||
|
VUE_APP_BASE_URL=http://test.tall.wiki/ |
||||
|
VUE_APP_API_URL=http://test.tall.wiki/datang/v1.0 |
||||
|
VUE_APP_PROXY_URL=/datang/v1.0 |
||||
|
VUE_APP_PUBLIC_PATH=/datang |
||||
|
VUE_APP_MSG_URL=wss://test.tall.wiki/websocket/message/v4.0/ws |
||||
|
VUE_APP_TITLE=大唐 |
||||
|
VUE_APP_DESCRIPTION=大唐 |
@ -0,0 +1,10 @@ |
|||||
|
VUE_APP_MODE=production |
||||
|
VUE_APP_NODE_ENV=production |
||||
|
VUE_APP_SCENE=/datang/ |
||||
|
VUE_APP_BASE_URL=http://test.tall.wiki/ |
||||
|
VUE_APP_API_URL=http://test.tall.wiki/datang/v1.0 |
||||
|
VUE_APP_PROXY_URL=/datang/v1.0 |
||||
|
VUE_APP_PUBLIC_PATH=/datang |
||||
|
VUE_APP_MSG_URL=wss://test.tall.wiki/websocket/message/v4.0/ws |
||||
|
VUE_APP_TITLE=大唐 |
||||
|
VUE_APP_DESCRIPTION=大唐 |
@ -0,0 +1,47 @@ |
|||||
|
/* |
||||
|
* Copyright (c) 2019. |
||||
|
* author: wally |
||||
|
* email: 18603454788@163.com |
||||
|
*/ |
||||
|
|
||||
|
module.exports = { |
||||
|
root: true, |
||||
|
env: { browser: true, node: true }, |
||||
|
extends: ['plugin:vue/recommended', 'plugin:vue/essential'], |
||||
|
|
||||
|
rules: { |
||||
|
'vue/html-self-closing': 'off', |
||||
|
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', |
||||
|
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', |
||||
|
'no-param-reassign': ['error', { props: true, ignorePropertyModificationsFor: ['state'] }], |
||||
|
'max-len': ['error', { code: 140, tabWidth: 2 }], |
||||
|
'object-curly-newline': ['error', { multiline: true }], |
||||
|
'arrow-parens': ['error', 'as-needed'], |
||||
|
'linebreak-style': 'off', |
||||
|
'vue/attributes-order': 'off', |
||||
|
'no-param-reassign': 'off', |
||||
|
'vue/singleline-html-element-content-newline': 'off', |
||||
|
'vue/max-attributes-per-line': 'off', |
||||
|
'vue/multiline-html-element-content-newline': 'off', |
||||
|
'vue/html-indent': 'off', |
||||
|
}, |
||||
|
|
||||
|
parserOptions: { parser: 'babel-eslint' }, |
||||
|
|
||||
|
overrides: [ |
||||
|
{ |
||||
|
files: ['**/__tests__/*.{j,t}s?(x)'], |
||||
|
env: { jest: true }, |
||||
|
}, |
||||
|
], |
||||
|
|
||||
|
globals: { |
||||
|
Vue: true, |
||||
|
VueRouter: true, |
||||
|
Vuex: true, |
||||
|
axios: true, |
||||
|
_: true, |
||||
|
Vuetify: true, |
||||
|
vuetify: true, |
||||
|
}, |
||||
|
}; |
@ -0,0 +1,23 @@ |
|||||
|
.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? |
@ -0,0 +1,13 @@ |
|||||
|
{ |
||||
|
"printWidth": 140, |
||||
|
"singleQuote": true, |
||||
|
"semi": true, |
||||
|
"trailingComma": "all", |
||||
|
"arrowParens": "avoid", |
||||
|
"tabWidth": 2, |
||||
|
"useTabs": false, |
||||
|
"bracketSpacing": true, |
||||
|
"jsxBracketSameLine": false, |
||||
|
"proseWrap": "always", |
||||
|
"endOfLine": "lf" |
||||
|
} |
@ -0,0 +1,24 @@ |
|||||
|
# green-valley |
||||
|
|
||||
|
## Project setup |
||||
|
``` |
||||
|
yarn install |
||||
|
``` |
||||
|
|
||||
|
### Compiles and hot-reloads for development |
||||
|
``` |
||||
|
yarn serve |
||||
|
``` |
||||
|
|
||||
|
### Compiles and minifies for production |
||||
|
``` |
||||
|
yarn build |
||||
|
``` |
||||
|
|
||||
|
### Lints and fixes files |
||||
|
``` |
||||
|
yarn lint |
||||
|
``` |
||||
|
|
||||
|
### Customize configuration |
||||
|
See [Configuration Reference](https://cli.vuejs.org/config/). |
@ -0,0 +1,13 @@ |
|||||
|
module.exports = { |
||||
|
presets: ["@vue/cli-plugin-babel/preset"], |
||||
|
plugins: [ |
||||
|
[ |
||||
|
"import", |
||||
|
{ |
||||
|
libraryName: "ant-design-vue", |
||||
|
libraryDirectory: "es", |
||||
|
style: true |
||||
|
} |
||||
|
] |
||||
|
] |
||||
|
}; |
@ -0,0 +1 @@ |
|||||
|
module.exports = {extends: ['./node_modules/vue-cli-plugin-commitlint/lib/lint']}; |
@ -0,0 +1,54 @@ |
|||||
|
{ |
||||
|
"name": "green-valley", |
||||
|
"version": "0.1.0", |
||||
|
"private": true, |
||||
|
"scripts": { |
||||
|
"serve": "vue-cli-service serve", |
||||
|
"build:test": "vue-cli-service build --mode development", |
||||
|
"build": "vue-cli-service build --mode production", |
||||
|
"lint": "vue-cli-service lint" |
||||
|
}, |
||||
|
"dependencies": { |
||||
|
"ant-design-vue": "^1.2.4", |
||||
|
"compression-webpack-plugin": "^6.1.1", |
||||
|
"core-js": "^3.6.5", |
||||
|
"echarts": "^4.9.0", |
||||
|
"moment": "^2.29.1", |
||||
|
"quill": "^1.3.7", |
||||
|
"register-service-worker": "^1.7.1", |
||||
|
"stylus": "^0.54.8", |
||||
|
"vue": "^2.6.11", |
||||
|
"vue-baidu-map": "^0.21.22", |
||||
|
"vue-dompurify-html": "^2.5.0", |
||||
|
"vue-quill-editor": "^3.0.6", |
||||
|
"vue-router": "^3.2.0", |
||||
|
"vuex": "^3.4.0" |
||||
|
}, |
||||
|
"devDependencies": { |
||||
|
"@vue/cli-plugin-babel": "~4.5.0", |
||||
|
"@vue/cli-plugin-eslint": "~4.5.0", |
||||
|
"@vue/cli-plugin-pwa": "~4.5.0", |
||||
|
"@vue/cli-plugin-router": "~4.5.0", |
||||
|
"@vue/cli-plugin-vuex": "~4.5.0", |
||||
|
"@vue/cli-service": "~4.5.0", |
||||
|
"@vue/eslint-config-prettier": "^6.0.0", |
||||
|
"axios": "^0.18.0", |
||||
|
"babel-eslint": "^10.1.0", |
||||
|
"babel-plugin-import": "^1.11.0", |
||||
|
"css-loader": "^5.0.1", |
||||
|
"eslint": "^6.7.2", |
||||
|
"eslint-plugin-prettier": "^3.1.3", |
||||
|
"eslint-plugin-vue": "^6.2.2", |
||||
|
"less": "^2.7.3", |
||||
|
"less-loader": "^4.1.0", |
||||
|
"prettier": "^1.19.1", |
||||
|
"sass": "^1.26.5", |
||||
|
"sass-loader": "^8.0.2", |
||||
|
"stylus": "^0.54.5", |
||||
|
"stylus-loader": "^3.0.2", |
||||
|
"svg-sprite-loader": "^5.0.0", |
||||
|
"vue-cli-plugin-ant-design": "^1.0.1", |
||||
|
"vue-cli-plugin-axios": "^0.0.4", |
||||
|
"vue-template-compiler": "^2.6.11" |
||||
|
} |
||||
|
} |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 9.2 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 215 B |
@ -0,0 +1,25 @@ |
|||||
|
<!-- |
||||
|
* @Author: wally |
||||
|
* @email: 18603454788@163.com |
||||
|
* @Date: 2021-01-13 17:21:29 |
||||
|
* @LastEditors: wally |
||||
|
* @LastEditTime: 2021-01-20 12:57:03 |
||||
|
--> |
||||
|
<!DOCTYPE html> |
||||
|
<html lang="en"> |
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge"> |
||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0"> |
||||
|
<link rel="icon" href="./favicon.png" type="image/x-icon" > |
||||
|
<title>大唐</title> |
||||
|
<script type="text/javascript" src="//api.map.baidu.com/api?v=2.0&ak=KPWvSuCuXmgphVhYM6tVHmlkav3TGpu5"></script> |
||||
|
</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> |
@ -0,0 +1,2 @@ |
|||||
|
User-agent: * |
||||
|
Disallow: |
@ -0,0 +1,15 @@ |
|||||
|
{ |
||||
|
"$shared": { |
||||
|
"version": "v1", |
||||
|
"identifier": "wally", |
||||
|
"credential": "111111" |
||||
|
}, |
||||
|
"dev": { |
||||
|
"name": "dev", |
||||
|
"url": "http://192.168.0.99/gateway" |
||||
|
}, |
||||
|
"local": { |
||||
|
"version": "v2", |
||||
|
"url": "http://192.168.0.99/gateway" |
||||
|
} |
||||
|
} |
@ -0,0 +1,54 @@ |
|||||
|
# @tall = {{url}}/tall/v1.0 |
||||
|
@tall = https://www.tall.wiki/gateway/tall/v1.0 |
||||
|
@greenvalley = http://www.sxwikionline.com/gateway/greenvalley |
||||
|
@type = content-type: application/json;charset=utf-8 |
||||
|
|
||||
|
### login |
||||
|
|
||||
|
# @name login |
||||
|
POST {{tall}}/users/signin |
||||
|
{{type}} |
||||
|
|
||||
|
{ |
||||
|
"client": 1, |
||||
|
"type": 3, |
||||
|
"data": { |
||||
|
"identifier": "whj", |
||||
|
"credential": "123456" |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
### send code |
||||
|
|
||||
|
GET {{tall}}/users/smscode?phone=16603418748 |
||||
|
|
||||
|
|
||||
|
### phone login |
||||
|
|
||||
|
# @name phonelogin |
||||
|
POST {{tall}}/users/signin |
||||
|
{{type}} |
||||
|
|
||||
|
{ |
||||
|
"client": 1, |
||||
|
"type": 1, |
||||
|
"data": { |
||||
|
"identifier": "16603418748", |
||||
|
"credential": "1111" |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
### 根据团队id查看研发团队相关信息 |
||||
|
|
||||
|
POST {{greenvalley}}/business/frontSearchCompany |
||||
|
{{type}} |
||||
|
Authorization: Bearer {{login.response.body.$.data.token}} |
||||
|
|
||||
|
{ |
||||
|
"param": { |
||||
|
"pageNum": 1, |
||||
|
"pageSize": 5, |
||||
|
"type": 2, |
||||
|
"typeOfPlatform": 2, |
||||
|
} |
||||
|
} |
@ -0,0 +1,49 @@ |
|||||
|
<template> |
||||
|
<a-config-provider :locale="zh_CN"> |
||||
|
<div id="app"> |
||||
|
<HeadNav /> |
||||
|
<Carousel /> |
||||
|
<router-view></router-view> |
||||
|
<Footer /> |
||||
|
</div> |
||||
|
</a-config-provider> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { mapState } from 'vuex'; |
||||
|
import zh_CN from 'ant-design-vue/lib/locale-provider/zh_CN'; |
||||
|
import HeadNav from '@/components/HeadNav/HeadNav.vue'; |
||||
|
import Footer from '@/components/Footer/Footer.vue'; |
||||
|
import Carousel from '@/components/Carousel/Carousel.vue'; |
||||
|
|
||||
|
export default { |
||||
|
name: 'App', |
||||
|
components: { HeadNav, Footer, Carousel }, |
||||
|
data() { |
||||
|
return { zh_CN }; |
||||
|
}, |
||||
|
|
||||
|
computed: mapState('user', ['anyringToken']), |
||||
|
updated() { |
||||
|
window.scroll(0, 0); |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style> |
||||
|
html, |
||||
|
body, |
||||
|
#app { |
||||
|
min-height: 100%; |
||||
|
} |
||||
|
|
||||
|
#app { |
||||
|
background: transparent; |
||||
|
} |
||||
|
body { |
||||
|
background: #f5f5f5 !important; |
||||
|
} |
||||
|
body::-webkit-scrollbar { |
||||
|
width: 0; |
||||
|
} |
||||
|
</style> |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 104 KiB |
After Width: | Height: | Size: 730 KiB |
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 62 KiB |
@ -0,0 +1,200 @@ |
|||||
|
.nav-box { |
||||
|
height: 50px; |
||||
|
background: #000000; |
||||
|
line-height: 50px; |
||||
|
padding: 0 9%; |
||||
|
color: #fff; |
||||
|
font-size: 16px; |
||||
|
div { |
||||
|
margin-right: 56px; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
} |
||||
|
.nav-box-active { |
||||
|
color: #13ACC4 !important; |
||||
|
} |
||||
|
|
||||
|
.top-box { |
||||
|
overflow: hidden; |
||||
|
background-image: linear-gradient(to right, #6C63FF , #13ACC4); |
||||
|
position: relative; |
||||
|
} |
||||
|
.top-title { |
||||
|
position: absolute; |
||||
|
top: 70px; |
||||
|
left: 4%; |
||||
|
padding: 0; |
||||
|
font-size: 50px; |
||||
|
color: #fff; |
||||
|
} |
||||
|
|
||||
|
@media only screen and (max-width: 1500px) { |
||||
|
.top-title { |
||||
|
font-size: 40px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.top-content { |
||||
|
float: right; |
||||
|
margin: 30px 0; |
||||
|
margin-right: 12%; |
||||
|
width: 62%; |
||||
|
padding: 0; |
||||
|
font-size: 16px; |
||||
|
color: #fff; |
||||
|
line-height: 36px; |
||||
|
} |
||||
|
|
||||
|
.circular { |
||||
|
height: 20px; |
||||
|
width: 20px; |
||||
|
background: #13ACC4; |
||||
|
border-radius: 50%; |
||||
|
top: 50%; |
||||
|
margin-top: -10px; |
||||
|
position: absolute; |
||||
|
} |
||||
|
|
||||
|
.center-box { |
||||
|
overflow: hidden; |
||||
|
background: #fff; |
||||
|
padding: 0 9%; |
||||
|
position: relative; |
||||
|
} |
||||
|
.center-title { |
||||
|
position: absolute; |
||||
|
top: 40%; |
||||
|
font-size: 30px; |
||||
|
color: #000; |
||||
|
} |
||||
|
.center-content { |
||||
|
float: right; |
||||
|
margin: 50px 0; |
||||
|
width: 79%; |
||||
|
line-height: 36px; |
||||
|
font-size: 16px; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
.bottom-box { |
||||
|
// height: 830px; |
||||
|
overflow: hidden; |
||||
|
position: relative; |
||||
|
padding: 0 9%; |
||||
|
} |
||||
|
.bottom-title { |
||||
|
position: absolute; |
||||
|
top: 20%; |
||||
|
font-size: 30px; |
||||
|
color: #000; |
||||
|
} |
||||
|
.bottom-content { |
||||
|
position: relative; |
||||
|
float: right; |
||||
|
margin: 40px 0; |
||||
|
width: 79%; |
||||
|
} |
||||
|
|
||||
|
.partner-box { |
||||
|
// height: 1060px; |
||||
|
overflow: hidden; |
||||
|
position: relative; |
||||
|
padding: 0 9%; |
||||
|
background: #fff; |
||||
|
} |
||||
|
.partner-title { |
||||
|
position: absolute; |
||||
|
top: 15%; |
||||
|
font-size: 30px; |
||||
|
color: #000; |
||||
|
} |
||||
|
.partner-content { |
||||
|
float: right; |
||||
|
margin: 100px 0; |
||||
|
width: 79%; |
||||
|
} |
||||
|
|
||||
|
.join-box { |
||||
|
// height: 300px; |
||||
|
overflow: hidden; |
||||
|
position: relative; |
||||
|
padding: 0 9%; |
||||
|
} |
||||
|
.join-title { |
||||
|
position: absolute; |
||||
|
top: 40%; |
||||
|
font-size: 30px; |
||||
|
color: #000; |
||||
|
} |
||||
|
.join-content { |
||||
|
float: right; |
||||
|
margin: 70px 0; |
||||
|
font-size: 16px; |
||||
|
width: 79%; |
||||
|
color: rgba(0,0,0,0.65); |
||||
|
line-height: 36px; |
||||
|
} |
||||
|
|
||||
|
.content-box { |
||||
|
position: relative; |
||||
|
padding: 0 9%; |
||||
|
} |
||||
|
|
||||
|
.space-box{ |
||||
|
height: 150px; |
||||
|
} |
||||
|
|
||||
|
// .space-box:hover{ |
||||
|
// box-shadow: 0 6px 6px rgba(0,0,0,0.16) |
||||
|
// } |
||||
|
|
||||
|
// .space-box:hover .introduce-title{ |
||||
|
// margin-top: 10px; |
||||
|
// } |
||||
|
|
||||
|
.introduce-box { |
||||
|
width: 60%; |
||||
|
overflow: hidden; |
||||
|
position: relative; |
||||
|
background: #fff; |
||||
|
cursor: pointer; |
||||
|
padding: 0 30px; |
||||
|
} |
||||
|
|
||||
|
.introduce-title { |
||||
|
margin: 10px 0; |
||||
|
font-size: 26px; |
||||
|
color: rgba(0,0,0,0.85); |
||||
|
} |
||||
|
.introduce-content { |
||||
|
font-size: 16px; |
||||
|
color: rgba(0,0,0,0.65); |
||||
|
margin-bottom: 0 |
||||
|
} |
||||
|
.flow-path { |
||||
|
background: -webkit-linear-gradient(left, #13ACC4 , #fff); |
||||
|
padding: 30px 9%; |
||||
|
position: relative; |
||||
|
} |
||||
|
.flow-title { |
||||
|
position: absolute; |
||||
|
top: 40%; |
||||
|
font-size: 30px; |
||||
|
color: #fff; |
||||
|
} |
||||
|
.flow-content { |
||||
|
margin-left: 20%; |
||||
|
width:80%; |
||||
|
font-size: 16px; |
||||
|
color: #fff; |
||||
|
} |
||||
|
.flow-content1 { |
||||
|
margin-left: 15%; |
||||
|
width:85%; |
||||
|
} |
||||
|
.login-color { |
||||
|
color: #096DD9; |
||||
|
cursor: pointer; |
||||
|
} |
@ -0,0 +1,565 @@ |
|||||
|
// padding |
||||
|
.pa-0 { |
||||
|
padding: 0px; |
||||
|
} |
||||
|
|
||||
|
.pa-1 { |
||||
|
padding: 4px; |
||||
|
} |
||||
|
|
||||
|
.pa-2 { |
||||
|
padding: 8px; |
||||
|
} |
||||
|
|
||||
|
.pa-3 { |
||||
|
padding: 12px; |
||||
|
} |
||||
|
|
||||
|
.pa-4 { |
||||
|
padding: 16px; |
||||
|
} |
||||
|
|
||||
|
.pa-5 { |
||||
|
padding: 20px; |
||||
|
} |
||||
|
|
||||
|
.pt-3 { |
||||
|
padding-top: 12px; |
||||
|
} |
||||
|
|
||||
|
.pt-5 { |
||||
|
padding-top: 20px; |
||||
|
} |
||||
|
|
||||
|
.pb-3 { |
||||
|
padding-bottom: 12px; |
||||
|
} |
||||
|
|
||||
|
.pb-4 { |
||||
|
padding-bottom: 16px; |
||||
|
} |
||||
|
|
||||
|
.pb-5 { |
||||
|
padding-bottom: 20px; |
||||
|
} |
||||
|
|
||||
|
.pb-10 { |
||||
|
padding-bottom: 40px; |
||||
|
} |
||||
|
|
||||
|
.px-1{ |
||||
|
padding-left: 4px; |
||||
|
padding-right: 4px; |
||||
|
} |
||||
|
|
||||
|
.px-2{ |
||||
|
padding-left: 8px; |
||||
|
padding-right: 8px; |
||||
|
} |
||||
|
|
||||
|
.px-3{ |
||||
|
padding-left: 12px; |
||||
|
padding-right: 12px; |
||||
|
} |
||||
|
|
||||
|
.px-4{ |
||||
|
padding-left: 16px; |
||||
|
padding-right: 16px; |
||||
|
} |
||||
|
|
||||
|
.px-5{ |
||||
|
padding-left: 20px; |
||||
|
padding-right: 20px; |
||||
|
} |
||||
|
|
||||
|
.px-6{ |
||||
|
padding-left: 24px; |
||||
|
padding-right: 24px; |
||||
|
} |
||||
|
|
||||
|
.px-10{ |
||||
|
padding-left: 40px; |
||||
|
padding-right: 40px; |
||||
|
} |
||||
|
|
||||
|
.py-1{ |
||||
|
padding-top: 4px; |
||||
|
padding-bottom: 4px; |
||||
|
} |
||||
|
|
||||
|
.py-2{ |
||||
|
padding-top: 8px; |
||||
|
padding-bottom: 8px; |
||||
|
} |
||||
|
|
||||
|
.py-3{ |
||||
|
padding-top: 12px; |
||||
|
padding-bottom: 12px; |
||||
|
} |
||||
|
|
||||
|
.py-4{ |
||||
|
padding-top: 16px; |
||||
|
padding-bottom: 16px; |
||||
|
} |
||||
|
|
||||
|
.py-5{ |
||||
|
padding-top: 20px; |
||||
|
padding-bottom: 20px; |
||||
|
} |
||||
|
|
||||
|
.py-10{ |
||||
|
padding-top: 40px; |
||||
|
padding-bottom: 40px; |
||||
|
} |
||||
|
|
||||
|
// margin |
||||
|
.ma-2 { |
||||
|
margin: 8px; |
||||
|
} |
||||
|
|
||||
|
.ma-3 { |
||||
|
margin: 12px; |
||||
|
} |
||||
|
|
||||
|
.mx-0{ |
||||
|
margin-left: 0!important; |
||||
|
margin-right: 0!important; |
||||
|
} |
||||
|
|
||||
|
.mx-1{ |
||||
|
margin-left: 4px; |
||||
|
margin-right: 4px; |
||||
|
} |
||||
|
|
||||
|
.mx-2{ |
||||
|
margin-left: 8px; |
||||
|
margin-right: 8px; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
.my-0{ |
||||
|
margin-top: 0!important; |
||||
|
margin-bottom: 0!important; |
||||
|
} |
||||
|
|
||||
|
.my-1{ |
||||
|
margin-top: 4px!important; |
||||
|
margin-bottom: 4px!important; |
||||
|
} |
||||
|
|
||||
|
.my-2{ |
||||
|
margin-top: 8px; |
||||
|
margin-bottom: 8px; |
||||
|
} |
||||
|
|
||||
|
.my-3{ |
||||
|
margin-top: 12px; |
||||
|
margin-bottom: 12px; |
||||
|
} |
||||
|
|
||||
|
.my-4{ |
||||
|
margin-top: 16px; |
||||
|
margin-bottom: 16px; |
||||
|
} |
||||
|
|
||||
|
.my-5{ |
||||
|
margin-top: 20px; |
||||
|
margin-bottom: 20px; |
||||
|
} |
||||
|
|
||||
|
.mt-1{ |
||||
|
margin-top: 4px; |
||||
|
} |
||||
|
|
||||
|
.mt-2{ |
||||
|
margin-top: 8px; |
||||
|
} |
||||
|
|
||||
|
.mt-3{ |
||||
|
margin-top: 12px; |
||||
|
} |
||||
|
|
||||
|
.mt-4{ |
||||
|
margin-top: 16px; |
||||
|
} |
||||
|
|
||||
|
.mt-5{ |
||||
|
margin-top: 20px; |
||||
|
} |
||||
|
|
||||
|
.mt-8{ |
||||
|
margin-top: 32px; |
||||
|
} |
||||
|
|
||||
|
.mb-1{ |
||||
|
margin-bottom: 4px; |
||||
|
} |
||||
|
|
||||
|
.mb-2{ |
||||
|
margin-bottom: 8px; |
||||
|
} |
||||
|
|
||||
|
.mb-3{ |
||||
|
margin-bottom: 12px; |
||||
|
} |
||||
|
|
||||
|
.mb-4{ |
||||
|
margin-bottom: 16px; |
||||
|
} |
||||
|
|
||||
|
.mb-5{ |
||||
|
margin-bottom: 20px; |
||||
|
} |
||||
|
|
||||
|
.mb-6{ |
||||
|
margin-bottom: 24px; |
||||
|
} |
||||
|
|
||||
|
.mb-7{ |
||||
|
margin-bottom: 28px; |
||||
|
} |
||||
|
|
||||
|
.mb-8{ |
||||
|
margin-bottom: 32px; |
||||
|
} |
||||
|
|
||||
|
.mb-9{ |
||||
|
margin-bottom: 36px; |
||||
|
} |
||||
|
|
||||
|
.mb-10{ |
||||
|
margin-bottom: 40px; |
||||
|
} |
||||
|
|
||||
|
.ml-2{ |
||||
|
margin-left: 8px; |
||||
|
} |
||||
|
|
||||
|
.ml-3{ |
||||
|
margin-left: 12px; |
||||
|
} |
||||
|
|
||||
|
.ml-4{ |
||||
|
margin-left: 16px; |
||||
|
} |
||||
|
|
||||
|
.ml-5{ |
||||
|
margin-left: 20px; |
||||
|
} |
||||
|
|
||||
|
.ml-6{ |
||||
|
margin-left: 24px; |
||||
|
} |
||||
|
|
||||
|
.ml-7{ |
||||
|
margin-left: 28px; |
||||
|
} |
||||
|
|
||||
|
.ml-8{ |
||||
|
margin-left: 32px; |
||||
|
} |
||||
|
|
||||
|
.mr-1{ |
||||
|
margin-right: 4px; |
||||
|
} |
||||
|
|
||||
|
.mr-2{ |
||||
|
margin-right: 8px; |
||||
|
} |
||||
|
|
||||
|
.mr-3{ |
||||
|
margin-right: 12px; |
||||
|
} |
||||
|
|
||||
|
.mr-4{ |
||||
|
margin-right: 16px; |
||||
|
} |
||||
|
|
||||
|
.mr-5{ |
||||
|
margin-right: 20px; |
||||
|
} |
||||
|
|
||||
|
.mr-6{ |
||||
|
margin-right: 24px; |
||||
|
} |
||||
|
|
||||
|
.mr-7{ |
||||
|
margin-right: 28px; |
||||
|
} |
||||
|
|
||||
|
.mr-8{ |
||||
|
margin-right: 32px; |
||||
|
} |
||||
|
|
||||
|
// background |
||||
|
.white { |
||||
|
background: white; |
||||
|
} |
||||
|
|
||||
|
// flex |
||||
|
.d-flex{ |
||||
|
display: flex; |
||||
|
} |
||||
|
|
||||
|
.flex-wrap{ |
||||
|
flex-wrap: wrap; |
||||
|
} |
||||
|
|
||||
|
.flex-nowrap{ |
||||
|
flex-wrap: nowrap; |
||||
|
} |
||||
|
|
||||
|
.flex-column{ |
||||
|
flex-direction: column; |
||||
|
} |
||||
|
|
||||
|
.flex-column-reverse{ |
||||
|
flex-direction: column-reverse; |
||||
|
} |
||||
|
|
||||
|
.flex-row{ |
||||
|
flex-direction: row; |
||||
|
} |
||||
|
|
||||
|
.flex-row-reverse{ |
||||
|
flex-direction: row-reverse; |
||||
|
} |
||||
|
|
||||
|
.justify-center{ |
||||
|
justify-content: center; |
||||
|
} |
||||
|
|
||||
|
.justify-space-between{ |
||||
|
justify-content: space-between; |
||||
|
} |
||||
|
|
||||
|
.align-center{ |
||||
|
align-items: center |
||||
|
} |
||||
|
|
||||
|
.align-start{ |
||||
|
align-items: flex-start |
||||
|
} |
||||
|
|
||||
|
.align-end{ |
||||
|
align-items: flex-end |
||||
|
} |
||||
|
|
||||
|
.flex-1{ |
||||
|
display: flex; |
||||
|
flex: 1; |
||||
|
} |
||||
|
|
||||
|
.flex-3{ |
||||
|
display: flex; |
||||
|
flex: 3; |
||||
|
} |
||||
|
|
||||
|
// other |
||||
|
.inner { |
||||
|
width: 82%; |
||||
|
margin: 0 auto; |
||||
|
} |
||||
|
|
||||
|
.pointer{ |
||||
|
cursor:pointer; |
||||
|
} |
||||
|
|
||||
|
.fill-height{ |
||||
|
height:100%; |
||||
|
} |
||||
|
|
||||
|
.fill-width{ |
||||
|
width:100%; |
||||
|
text-align: center; |
||||
|
|
||||
|
img{ |
||||
|
width: 85%; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
img{ |
||||
|
max-width: 100% |
||||
|
} |
||||
|
// font |
||||
|
.font-big{ |
||||
|
font-size: 60px; |
||||
|
} |
||||
|
|
||||
|
.font-small{ |
||||
|
font-size: 30px; |
||||
|
line-height: 40px; |
||||
|
} |
||||
|
|
||||
|
.font-bold{ |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
@media only screen and (max-width: 1400px) { |
||||
|
.font-big{ |
||||
|
font-size: 45px; |
||||
|
} |
||||
|
|
||||
|
.font-small{ |
||||
|
font-size: 26px; |
||||
|
line-height: 36px; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.font-bold-32{ |
||||
|
font-size: 32px; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
.font-32{ |
||||
|
font-size: 32px; |
||||
|
} |
||||
|
|
||||
|
.font-bold-24{ |
||||
|
font-size: 24px; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
.font-24{ |
||||
|
font-size: 24px; |
||||
|
} |
||||
|
|
||||
|
.font-20{ |
||||
|
font-size: 20px; |
||||
|
} |
||||
|
|
||||
|
.font-bold-20{ |
||||
|
font-size: 20px; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
.font-bold-16{ |
||||
|
font-size: 16px; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
.font-16{ |
||||
|
font-size: 16px; |
||||
|
} |
||||
|
|
||||
|
.font-bold-14{ |
||||
|
font-size: 14px; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
|
||||
|
.font-14{ |
||||
|
font-size: 14px; |
||||
|
} |
||||
|
|
||||
|
.font-12{ |
||||
|
font-size: 12px; |
||||
|
} |
||||
|
|
||||
|
.icon-size{ |
||||
|
font-size: 20px; |
||||
|
} |
||||
|
|
||||
|
h2{ |
||||
|
font-size: 24px; |
||||
|
font-weight: bold; |
||||
|
color: rgba(0,0,0,.85) |
||||
|
} |
||||
|
|
||||
|
.baseColor{ |
||||
|
color: #13ACC4 |
||||
|
} |
||||
|
|
||||
|
.bg{ |
||||
|
background: #F5F5F5 |
||||
|
} |
||||
|
|
||||
|
.ant-btn { |
||||
|
color: #13acc4 !important; |
||||
|
border-color: #13acc4 !important; |
||||
|
} |
||||
|
|
||||
|
.ant-btn-primary{ |
||||
|
background-color: #13ACC4 |
||||
|
border-color: #13ACC4; |
||||
|
color: #fff!important; |
||||
|
} |
||||
|
|
||||
|
.ant-btn-link:hover, .ant-btn-link:focus{ |
||||
|
color: #13ACC4; |
||||
|
} |
||||
|
|
||||
|
.ant-btn-link{ |
||||
|
border-color: transparent!important; |
||||
|
} |
||||
|
|
||||
|
.ant-btn-primary-disabled, .ant-btn-primary.disabled, .ant-btn-primary[disabled], .ant-btn-primary-disabled:hover, .ant-btn-primary.disabled:hover, .ant-btn-primary[disabled]:hover, .ant-btn-primary-disabled:focus, .ant-btn-primary.disabled:focus, .ant-btn-primary[disabled]:focus, .ant-btn-primary-disabled:active, .ant-btn-primary.disabled:active, .ant-btn-primary[disabled]:active, .ant-btn-primary-disabled.active, .ant-btn-primary.disabled.active, .ant-btn-primary[disabled].active{ |
||||
|
border-color: #d9d9d9!important; |
||||
|
color: rgba(0, 0, 0, 0.25)!important; |
||||
|
} |
||||
|
|
||||
|
.ant-btn-disabled, .ant-btn.disabled, .ant-btn[disabled], .ant-btn-disabled:hover, .ant-btn.disabled:hover, .ant-btn[disabled]:hover, .ant-btn-disabled:focus, .ant-btn.disabled:focus, .ant-btn[disabled]:focus, .ant-btn-disabled:active, .ant-btn.disabled:active, .ant-btn[disabled]:active, .ant-btn-disabled.active, .ant-btn.disabled.active, .ant-btn[disabled].active{ |
||||
|
color: rgba(0, 0, 0, 0.25)!important; |
||||
|
border-color: #d9d9d9!important; |
||||
|
} |
||||
|
|
||||
|
.ant-carousel .slick-list .slick-slide.slick-active div{ |
||||
|
display: block !important; |
||||
|
} |
||||
|
|
||||
|
.base-bg{ |
||||
|
background: #13ACC4 |
||||
|
} |
||||
|
|
||||
|
.second-base-bg{ |
||||
|
background: #AACD06 |
||||
|
} |
||||
|
|
||||
|
// 文字颜色 |
||||
|
.white--text{ |
||||
|
color: #fff |
||||
|
} |
||||
|
|
||||
|
.grey--text{ |
||||
|
color: #616161 |
||||
|
} |
||||
|
|
||||
|
.title-color{ |
||||
|
color: rgba(0,0,0,.85) |
||||
|
} |
||||
|
|
||||
|
.textColor{ |
||||
|
color: rgba(0,0,0,.65) |
||||
|
} |
||||
|
|
||||
|
.secondary{ |
||||
|
color: rgba(0,0,0,.45) |
||||
|
} |
||||
|
|
||||
|
// line-height |
||||
|
.line-height-30{ |
||||
|
line-height: 30px |
||||
|
} |
||||
|
|
||||
|
.line-height-36{ |
||||
|
line-height: 36px |
||||
|
} |
||||
|
|
||||
|
.content-1180 { |
||||
|
width: 1180px; |
||||
|
margin: 0 auto; |
||||
|
} |
||||
|
|
||||
|
.p-4 { |
||||
|
padding: 16px; |
||||
|
} |
||||
|
.pt-2 { |
||||
|
padding-top: 8px; |
||||
|
} |
||||
|
.pt-4 { |
||||
|
padding-top: 16px; |
||||
|
} |
||||
|
.one-text { |
||||
|
white-space:nowrap; |
||||
|
overflow:hidden; |
||||
|
text-overflow:ellipsis; |
||||
|
} |
@ -0,0 +1,79 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<div id="bay" @mouseout="mouseout" @mouseover="mouseover"> |
||||
|
飘窗 |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
export default { |
||||
|
data() { |
||||
|
return { |
||||
|
ggRoll: null, |
||||
|
interval: null, |
||||
|
}; |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.change(); |
||||
|
}, |
||||
|
methods: { |
||||
|
change() { |
||||
|
const ggRoll = { |
||||
|
//创建对象直接量 |
||||
|
roll: document.getElementById('bay'), //获取id属性为roll的对象 |
||||
|
speed: 20, //飘动速度,即为定时器函数多长时间执行一次 |
||||
|
statusX: 1, //规定每执行一次函数,left属性值变化的幅度 |
||||
|
statusY: 1, //规定每执行一次函数,top属性值变化的幅度 |
||||
|
x: 0, //规定初始状态下left属性的值 |
||||
|
y: 0, //规定初始状态下top属性的值 |
||||
|
//差值用来测算left属性值的极限 |
||||
|
winW: document.documentElement.clientWidth - document.getElementById('bay').offsetWidth, |
||||
|
//差值用来测算top属性值的极限 |
||||
|
winH: document.documentElement.clientHeight - document.getElementById('bay').offsetHeight, |
||||
|
//声明函数 |
||||
|
Go: function() { |
||||
|
//设置div的left属性值 |
||||
|
ggRoll.roll.style.left = ggRoll.x + 'px'; |
||||
|
//设置div的top属性值 |
||||
|
ggRoll.roll.style.top = ggRoll.y + 'px'; |
||||
|
//如果statusX=1则每次减少1px,否则减少1px |
||||
|
ggRoll.x = ggRoll.x + (ggRoll.statusX ? -1 : 1); |
||||
|
//如果left属性值小于0,也就是div要超出左边界了,就将statusX设置为0 |
||||
|
if (ggRoll.x < 0) { |
||||
|
ggRoll.statusX = 0; |
||||
|
} |
||||
|
//如果top属性值大于winW,也就是div要超出右边界了,就将statusX设置为1 |
||||
|
if (ggRoll.x > ggRoll.winW) { |
||||
|
ggRoll.statusX = 1; |
||||
|
} |
||||
|
|
||||
|
ggRoll.y = ggRoll.y + (ggRoll.statusY ? -1 : 1); |
||||
|
if (ggRoll.y < 0) { |
||||
|
ggRoll.statusY = 0; |
||||
|
} |
||||
|
if (ggRoll.y > ggRoll.winH) { |
||||
|
ggRoll.statusY = 1; |
||||
|
} |
||||
|
}, |
||||
|
}; |
||||
|
this.ggRoll = ggRoll; |
||||
|
this.interval = setInterval(this.ggRoll.Go, this.ggRoll.speed); |
||||
|
}, |
||||
|
mouseout() { |
||||
|
this.interval = setInterval(this.ggRoll.Go, this.ggRoll.speed); |
||||
|
}, |
||||
|
mouseover() { |
||||
|
clearInterval(this.interval); |
||||
|
this.interval = null; |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
#bay { |
||||
|
position: fixed; |
||||
|
height: 250px; |
||||
|
width: 250px; |
||||
|
background-color: red; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,76 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<a-carousel autoplay :dots="false"> |
||||
|
<div v-for="item in imgList" :key="item.id"> |
||||
|
<img style="height: 380px;cursor: pointer;" :src="item.url" @click="openImg(item.url)" /> |
||||
|
</div> |
||||
|
</a-carousel> |
||||
|
<div class="slogan"> |
||||
|
<div class="slogan-content content-1180 d-flex flex-column"> |
||||
|
<div style="text-align-last: justify"> |
||||
|
高举中国特色社会主义伟大旗帜,紧密团结在以习近平同志 |
||||
|
</div> |
||||
|
<div style="text-align-last: justify"> |
||||
|
为核心的党中央周围,努力把中国大唐打造成为世界一流能源供应商 |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import { carouselQuery } from 'config/api'; |
||||
|
|
||||
|
export default { |
||||
|
data() { |
||||
|
return { |
||||
|
imgList: [], |
||||
|
str: '', |
||||
|
}; |
||||
|
}, |
||||
|
created() { |
||||
|
this.getImg(); |
||||
|
}, |
||||
|
methods: { |
||||
|
async getImg() { |
||||
|
try { |
||||
|
const params = { param: { showPage: '0000' } }; |
||||
|
const res = await carouselQuery(params); |
||||
|
const { data, code, msg } = res.data; |
||||
|
this.imgList = [...data]; |
||||
|
} catch (error) {} |
||||
|
}, |
||||
|
openImg(url) { |
||||
|
window.open(url); |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style scoped> |
||||
|
.slogan-content { |
||||
|
height: 100%; |
||||
|
justify-content: space-evenly; |
||||
|
font-size: 30px; |
||||
|
font-weight: bold; |
||||
|
color: #fff; |
||||
|
} |
||||
|
|
||||
|
.ant-carousel >>> .slick-slide { |
||||
|
/* text-align: center; */ |
||||
|
height: 380px; |
||||
|
line-height: 380px; |
||||
|
/* background: #364d79; */ |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
|
||||
|
.ant-carousel >>> .slick-slide h3 { |
||||
|
color: #fff; |
||||
|
} |
||||
|
|
||||
|
.slogan { |
||||
|
height: 108px; |
||||
|
background: url('../../assets/biaoyu.png') no-repeat; |
||||
|
background-size: 100% 100%; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,86 @@ |
|||||
|
<template> |
||||
|
<div class="footer-box" style="margin-top:100px;position:relative"> |
||||
|
<div class="content-1180"> |
||||
|
<div class="d-flex" style="margin-top:20px"> |
||||
|
<div class="footer-title"> |
||||
|
<p style="font-size:24px;rgb(51,51,51);font-weight:bold;">网上展厅</p> |
||||
|
<p style="font-size:18px;rgb(102,102,102)">公示公告</p> |
||||
|
<p style="font-size:18px;rgb(102,102,102)">数字大唐</p> |
||||
|
</div> |
||||
|
<div class="footer-title"> |
||||
|
<p style="font-size:24px;rgb(51,51,51);font-weight:bold;">网上服务</p> |
||||
|
<p style="font-size:18px;rgb(102,102,102)">人才招购</p> |
||||
|
<p style="font-size:18px;rgb(102,102,102)">招标采购</p> |
||||
|
</div> |
||||
|
<div class="footer-title"> |
||||
|
<p style="font-size:24px;rgb(51,51,51);font-weight:bold;">资料下载</p> |
||||
|
<p style="font-size:18px;rgb(102,102,102)">责任报告</p> |
||||
|
<p style="font-size:18px;rgb(102,102,102)">企业VI</p> |
||||
|
</div> |
||||
|
<img src="./erweima.png" style="width:164px;height:94px" alt="" /> |
||||
|
</div> |
||||
|
<div style="position:absolute;bottom:30px;z-index: 10;width:640px;"> |
||||
|
<div class="d-flex"> |
||||
|
<div style="margin-right:22px"> |
||||
|
山西省朔州市朔城区神头镇 邮编:036002 |
||||
|
</div> |
||||
|
<div class="d-flex align-center justify-center" style="margin-bottom: 10px"> |
||||
|
<div>使用说明</div> |
||||
|
<div class="mx-2">|</div> |
||||
|
<div>法律声明</div> |
||||
|
<div class="mx-2">|</div> |
||||
|
<div>反馈留言</div> |
||||
|
</div> |
||||
|
<!-- <div style="margin-right:22px"> |
||||
|
京ICP备18049784号-3 |
||||
|
</div> |
||||
|
<div> |
||||
|
<img src="@/assets/baianicon.png" alt="" /> |
||||
|
京公网安备11040102700144号 |
||||
|
</div> --> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
|
||||
|
<img src="./yancong.png" style="width:909px;height:412px;position: absolute;right: 0;bottom: 0" alt="" /> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
export default { |
||||
|
data() { |
||||
|
return {}; |
||||
|
}, |
||||
|
methods: {}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
.footer-box { |
||||
|
background: #fff; |
||||
|
height: 320px; |
||||
|
padding: 30px 0; |
||||
|
} |
||||
|
.footer-link { |
||||
|
height: 52px; |
||||
|
background: #a90500; |
||||
|
} |
||||
|
.footer-title { |
||||
|
width: 188px; |
||||
|
} |
||||
|
/deep/.ant-select-dropdown { |
||||
|
width: auto !important; |
||||
|
} |
||||
|
.footer-contact { |
||||
|
height: 252px; |
||||
|
background: #fff; |
||||
|
} |
||||
|
.footer-footer { |
||||
|
background: #4c4c4c; |
||||
|
height: 78px; |
||||
|
color: #898989; |
||||
|
text-align: center; |
||||
|
} |
||||
|
.beian { |
||||
|
height: 100%; |
||||
|
justify-content: space-evenly; |
||||
|
} |
||||
|
</style> |
After Width: | Height: | Size: 62 KiB |
After Width: | Height: | Size: 562 KiB |
@ -0,0 +1,519 @@ |
|||||
|
<template> |
||||
|
<div class="head-box"> |
||||
|
<div class="content-1180 head-title d-flex align-center justify-space-between"> |
||||
|
<div> |
||||
|
<img src="@/assets/titleLogo.png" style="height: 48px;" alt="" /> |
||||
|
</div> |
||||
|
<div> |
||||
|
<a-input-search placeholder="输入关键字进行搜索..." style="width: 240px" @search="onSearch" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="head-tab"> |
||||
|
<div class="content-1180 head-tab-h d-flex"> |
||||
|
<div |
||||
|
v-for="(item, index) in tabList" |
||||
|
:key="index" |
||||
|
class="flex-1 align-center justify-center head-tab-title-box" |
||||
|
:class="index === showPage ? 'showPageColor' : ''" |
||||
|
style="position: relative;" |
||||
|
> |
||||
|
<div |
||||
|
@click="jumpPage(index, item.url, item.children)" |
||||
|
style=" height:100%;width: 100%;" |
||||
|
class="d-flex align-center justify-center head-tab-title" |
||||
|
> |
||||
|
<div class="head-tab-t-c">{{ item.title }}</div> |
||||
|
</div> |
||||
|
<div |
||||
|
class="head-tab-secondary" |
||||
|
:style="{ |
||||
|
width: item.children && item.children.length < 6 ? '100%' : '300%', |
||||
|
left: tabList.length - index >= 3 ? '0 !important' : 'auto', |
||||
|
right: |
||||
|
tabList.length - index < 3 && tabList.length - index > 2 ? '100% !important' : tabList.length - index < 2 ? '0' : 'auto', |
||||
|
}" |
||||
|
> |
||||
|
<template v-if="item.children && item.children.length < 6"> |
||||
|
<div |
||||
|
class="child one-text-2" |
||||
|
v-for="child in item.children" |
||||
|
:key="child.title" |
||||
|
@click="jumpDetail(index, item.url, child.code)" |
||||
|
> |
||||
|
{{ child.title }} |
||||
|
</div> |
||||
|
</template> |
||||
|
<template v-else> |
||||
|
<div class="d-flex flex-row flex-wrap"> |
||||
|
<div |
||||
|
class="child-3 one-text-2" |
||||
|
v-for="child in item.children" |
||||
|
:key="child.title" |
||||
|
@click="jumpDetail(index, item.url, child.code)" |
||||
|
> |
||||
|
{{ child.title }} |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
export default { |
||||
|
data() { |
||||
|
return { |
||||
|
tabList: [ |
||||
|
{ |
||||
|
title: '首页', |
||||
|
url: '/', |
||||
|
children: [], |
||||
|
}, |
||||
|
{ |
||||
|
title: '公司概况', |
||||
|
url: '/profile', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '公司简介', |
||||
|
code: '0101', |
||||
|
}, |
||||
|
{ |
||||
|
title: '公司领导', |
||||
|
code: '0102', |
||||
|
}, |
||||
|
{ |
||||
|
title: '组织架构', |
||||
|
code: '0103', |
||||
|
}, |
||||
|
{ |
||||
|
title: '企业VI', |
||||
|
code: '0104', |
||||
|
}, |
||||
|
{ |
||||
|
title: '联系方式', |
||||
|
code: '0105', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
title: '新闻中心', |
||||
|
url: '/news', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '集团新闻', |
||||
|
code: '0201', |
||||
|
}, |
||||
|
{ |
||||
|
title: '省公司新闻', |
||||
|
code: '0202', |
||||
|
}, |
||||
|
{ |
||||
|
title: '公司新闻', |
||||
|
code: '0203', |
||||
|
}, |
||||
|
{ |
||||
|
title: '图片新闻', |
||||
|
code: '0204', |
||||
|
}, |
||||
|
{ |
||||
|
title: '热点专题', |
||||
|
code: '0205', |
||||
|
}, |
||||
|
{ |
||||
|
title: '媒体关注', |
||||
|
code: '0206', |
||||
|
}, |
||||
|
{ |
||||
|
title: '视频新闻', |
||||
|
code: '0207', |
||||
|
}, |
||||
|
{ |
||||
|
title: '专题片', |
||||
|
code: '0208', |
||||
|
}, |
||||
|
{ |
||||
|
title: '企业画册', |
||||
|
code: '0209', |
||||
|
}, |
||||
|
{ |
||||
|
title: '现场风采', |
||||
|
code: '0210', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
title: '党的建设', |
||||
|
url: '/building', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '中心组学习', |
||||
|
code: '0301', |
||||
|
}, |
||||
|
{ |
||||
|
title: '示范党委', |
||||
|
code: '0302', |
||||
|
}, |
||||
|
{ |
||||
|
title: '党支部达标', |
||||
|
code: '0303', |
||||
|
}, |
||||
|
{ |
||||
|
title: '群团工作', |
||||
|
code: '0304', |
||||
|
}, |
||||
|
{ |
||||
|
title: '党建动态', |
||||
|
code: '0305', |
||||
|
}, |
||||
|
{ |
||||
|
title: '党风廉政', |
||||
|
code: '0306', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
title: '安全生产', |
||||
|
url: '/production', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '安全会议', |
||||
|
code: '0401', |
||||
|
}, |
||||
|
{ |
||||
|
title: '安全生产记录', |
||||
|
code: '0402', |
||||
|
}, |
||||
|
{ |
||||
|
title: '应急管理', |
||||
|
code: '0403', |
||||
|
}, |
||||
|
{ |
||||
|
title: '三讲一落实', |
||||
|
code: '0404', |
||||
|
}, |
||||
|
{ |
||||
|
title: '曝光台', |
||||
|
code: '0405', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
title: '通知公告', |
||||
|
url: '/notice', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '通知', |
||||
|
code: '0501', |
||||
|
}, |
||||
|
{ |
||||
|
title: '通报', |
||||
|
code: '0502', |
||||
|
}, |
||||
|
{ |
||||
|
title: '公告', |
||||
|
code: '0503', |
||||
|
}, |
||||
|
{ |
||||
|
title: '值班安排', |
||||
|
code: '0504', |
||||
|
}, |
||||
|
{ |
||||
|
title: '浮窗', |
||||
|
code: '0505', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
title: '信息公开', |
||||
|
url: '/information', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '基本信息', |
||||
|
code: '0601', |
||||
|
}, |
||||
|
{ |
||||
|
title: '经营管理', |
||||
|
code: '0602', |
||||
|
}, |
||||
|
{ |
||||
|
title: '公司公告', |
||||
|
code: '0603', |
||||
|
}, |
||||
|
{ |
||||
|
title: '社会责任', |
||||
|
code: '0604', |
||||
|
}, |
||||
|
{ |
||||
|
title: '关于信息公开', |
||||
|
code: '0605', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
title: '审批事项', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '公务用车', |
||||
|
code: '', |
||||
|
}, |
||||
|
{ |
||||
|
title: '领导干部外出报备', |
||||
|
code: '', |
||||
|
}, |
||||
|
{ |
||||
|
title: '疫情防控', |
||||
|
code: '', |
||||
|
}, |
||||
|
{ |
||||
|
title: '用印申请', |
||||
|
code: '', |
||||
|
}, |
||||
|
{ |
||||
|
title: '业务招待事项', |
||||
|
code: '', |
||||
|
}, |
||||
|
{ |
||||
|
title: '会议室使用', |
||||
|
code: '', |
||||
|
}, |
||||
|
{ |
||||
|
title: '办公用品领用', |
||||
|
code: '', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
title: '制度资料', |
||||
|
url: '/system', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '集团公司制度', |
||||
|
code: '0801', |
||||
|
}, |
||||
|
{ |
||||
|
title: '山西公司制度', |
||||
|
code: '0802', |
||||
|
}, |
||||
|
{ |
||||
|
title: '行业标准与制度', |
||||
|
code: '0803', |
||||
|
}, |
||||
|
{ |
||||
|
title: '公司制度', |
||||
|
code: '0804', |
||||
|
}, |
||||
|
{ |
||||
|
title: '地方规章', |
||||
|
code: '0805', |
||||
|
}, |
||||
|
{ |
||||
|
title: '培训课件', |
||||
|
code: '0806', |
||||
|
}, |
||||
|
{ |
||||
|
title: '培训影像', |
||||
|
code: '0807', |
||||
|
}, |
||||
|
{ |
||||
|
title: '科技创新', |
||||
|
code: '0808', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
title: '部门首页', |
||||
|
url: '/department', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '总经理工作部', |
||||
|
code: '0901', |
||||
|
}, |
||||
|
{ |
||||
|
title: '计划营销部', |
||||
|
code: '0902', |
||||
|
}, |
||||
|
{ |
||||
|
title: '财务管理部', |
||||
|
code: '0903', |
||||
|
}, |
||||
|
{ |
||||
|
title: '人力资源部', |
||||
|
code: '0904', |
||||
|
}, |
||||
|
{ |
||||
|
title: '党群工作部', |
||||
|
code: '0905', |
||||
|
}, |
||||
|
{ |
||||
|
title: '纪委办公室(审计部)', |
||||
|
code: '0906', |
||||
|
}, |
||||
|
{ |
||||
|
title: '燃料采购部', |
||||
|
code: '0907', |
||||
|
}, |
||||
|
{ |
||||
|
title: '物资管理部', |
||||
|
code: '0908', |
||||
|
}, |
||||
|
{ |
||||
|
title: '项目开发部', |
||||
|
code: '0909', |
||||
|
}, |
||||
|
{ |
||||
|
title: '燃料质量验收部', |
||||
|
code: '0910', |
||||
|
}, |
||||
|
{ |
||||
|
title: '安全监督部', |
||||
|
code: '0911', |
||||
|
}, |
||||
|
{ |
||||
|
title: '设备部', |
||||
|
code: '0912', |
||||
|
}, |
||||
|
{ |
||||
|
title: '发电部', |
||||
|
code: '0913', |
||||
|
}, |
||||
|
{ |
||||
|
title: '维护部', |
||||
|
code: '0914', |
||||
|
}, |
||||
|
{ |
||||
|
title: '热工专业', |
||||
|
code: '0915', |
||||
|
}, |
||||
|
{ |
||||
|
title: '电气专业', |
||||
|
code: '0916', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
], |
||||
|
showPage: 0, |
||||
|
}; |
||||
|
}, |
||||
|
created() { |
||||
|
setTimeout(() => { |
||||
|
for (let i = 0; i < this.tabList.length; i++) { |
||||
|
if (this.tabList[i].url && this.$route.path === this.tabList[i].url) { |
||||
|
this.showPage = i; |
||||
|
} |
||||
|
} |
||||
|
}, 100); |
||||
|
}, |
||||
|
methods: { |
||||
|
onSearch() { |
||||
|
console.log('点击了搜索按钮,但是没有搜索事件'); |
||||
|
}, |
||||
|
jumpPage(index, url, children) { |
||||
|
if (this.showPage === index) { |
||||
|
this.$message.warning('已在当前界面!'); |
||||
|
} else { |
||||
|
this.showPage = index; |
||||
|
if (url) { |
||||
|
if (children.length && children[0].code) { |
||||
|
this.$router.push({ |
||||
|
path: url, |
||||
|
query: { code: children[0].code }, |
||||
|
}); |
||||
|
} else { |
||||
|
this.$router.push(url); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
jumpDetail(index, url, code) { |
||||
|
const { query } = this.$route; |
||||
|
if (this.showPage === index && query.code === code) { |
||||
|
this.$message.warning('已在当前界面!'); |
||||
|
} else { |
||||
|
this.showPage = index; |
||||
|
if (url) { |
||||
|
this.$router.push({ |
||||
|
path: url, |
||||
|
query: { code }, |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
.one-text-2 { |
||||
|
text-align: center; |
||||
|
|
||||
|
cursor: pointer; |
||||
|
white-space: nowrap; |
||||
|
overflow: hidden; |
||||
|
text-overflow: ellipsis; |
||||
|
} |
||||
|
.one-text-2:hover { |
||||
|
background: #870400; |
||||
|
} |
||||
|
.child { |
||||
|
width: 100%; |
||||
|
height: 42px; |
||||
|
line-height: 42px; |
||||
|
} |
||||
|
.child-3 { |
||||
|
width: 33.33%; |
||||
|
height: 42px; |
||||
|
line-height: 42px; |
||||
|
} |
||||
|
.head-tab-secondary { |
||||
|
display: none; |
||||
|
position: absolute; |
||||
|
top: 56px; |
||||
|
background: #a90500; |
||||
|
font-size: 16px; |
||||
|
z-index: 10; |
||||
|
} |
||||
|
.head-tab-title-box:hover .head-tab-secondary { |
||||
|
display: inline-block; |
||||
|
} |
||||
|
.head-box { |
||||
|
background: #fff; |
||||
|
} |
||||
|
.head-title { |
||||
|
height: 84px; |
||||
|
} |
||||
|
.head-tab-h { |
||||
|
height: 56px; |
||||
|
font-size: 18px; |
||||
|
color: #fff; |
||||
|
} |
||||
|
.head-tab { |
||||
|
height: 56px; |
||||
|
background: #a90500; |
||||
|
} |
||||
|
.head-tab-title { |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
.head-tab-title:hover { |
||||
|
background: #870400; |
||||
|
} |
||||
|
.showPageColor { |
||||
|
background: #870400; |
||||
|
} |
||||
|
.head-tab-t-c { |
||||
|
transition: color 0.3s; |
||||
|
} |
||||
|
.head-tab-t-c:hover { |
||||
|
color: #cc2626; |
||||
|
} |
||||
|
/deep/.ant-input-affix-wrapper:hover .ant-input:not(.ant-input-disabled) { |
||||
|
border-color: #d9d9d9; |
||||
|
border-right-width: 1px !important; |
||||
|
} |
||||
|
/deep/.ant-input:focus { |
||||
|
border-color: #d9d9d9; |
||||
|
border-right-width: 1px !important; |
||||
|
outline: 0; |
||||
|
box-shadow: 0 0 0 2px rgb(217 217 217 /20%); |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,74 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<div class="left-title left-nav d-flex align-center justify-center"> |
||||
|
{{ list.title }} |
||||
|
</div> |
||||
|
<div |
||||
|
v-for="item in list.children" |
||||
|
:key="item.code" |
||||
|
class="left-nav left-child d-flex align-center justify-center" |
||||
|
:class="code === item.code ? 'active' : ''" |
||||
|
@click="changeQuery(item.code)" |
||||
|
> |
||||
|
{{ item.title }} |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
export default { |
||||
|
name: 'LeftNav', |
||||
|
props: { |
||||
|
list: { |
||||
|
default: () => {}, |
||||
|
type: Object, |
||||
|
}, |
||||
|
code: { |
||||
|
default: '', |
||||
|
type: String, |
||||
|
}, |
||||
|
}, |
||||
|
data() { |
||||
|
return {}; |
||||
|
}, |
||||
|
|
||||
|
methods: { |
||||
|
changeQuery(code) { |
||||
|
if (code !== this.code) { |
||||
|
this.$router.push({ |
||||
|
query: { code }, |
||||
|
}); |
||||
|
this.$emit('chanegCode', code); |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
.left-title { |
||||
|
background-color: rgb(174, 0, 2); |
||||
|
color: #fff; |
||||
|
font-size: 24px; |
||||
|
font-weight: bold; |
||||
|
} |
||||
|
.left-nav { |
||||
|
width: 240px; |
||||
|
height: 56px; |
||||
|
border-bottom: 1px solid rgba(112, 112, 112, 0.1); |
||||
|
} |
||||
|
.left-child { |
||||
|
background-color: #fff; |
||||
|
font-size: 20px; |
||||
|
cursor: pointer; |
||||
|
transition: all 0.2s; |
||||
|
} |
||||
|
.left-nav:hover { |
||||
|
background-color: rgba(174, 0, 2, 0.4); |
||||
|
border-left: 4px solid rgb(174, 0, 2); |
||||
|
color: #fff; |
||||
|
} |
||||
|
.active { |
||||
|
background-color: rgba(174, 0, 2, 0.4); |
||||
|
border-left: 4px solid rgb(174, 0, 2); |
||||
|
color: #fff; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,156 @@ |
|||||
|
<template> |
||||
|
<div style="position:relative;height: 100%;"> |
||||
|
<div class="year-box"> |
||||
|
<span :class="year - 0 === item.year - 0 ? 'active' : ''" v-for="item in yearList" :key="item.year" @click="changeYear(item.year)">{{ |
||||
|
item.year |
||||
|
}}</span> |
||||
|
</div> |
||||
|
<ul v-if="content.total - 0" style="max-width: 892px"> |
||||
|
<li v-for="item in content.list" :key="item.introId" class="mb-5" @click="openPage(item.introId)"> |
||||
|
<div class="d-flex justify-space-between align-center"> |
||||
|
<div style="max-width: 680px" class="one-text">{{ item.title }}{{ item.title }}</div> |
||||
|
<div style="width: 110px">[{{ $moment(item.publishTime).format('YYYY - HH - DD') }}]</div> |
||||
|
</div> |
||||
|
</li> |
||||
|
</ul> |
||||
|
<div v-else style="height: 100%" class="d-flex justify-center align-center"> |
||||
|
<a-empty /> |
||||
|
</div> |
||||
|
<div style="position:absolute;bottom:16px;width:100%" class="d-flex justify-center align-center"> |
||||
|
<a-pagination show-quick-jumper :default-current="1" :total="content.total - 0" @change="onChange" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
import { getCondition } from 'config/api'; |
||||
|
|
||||
|
export default { |
||||
|
props: { |
||||
|
content: { |
||||
|
default: () => {}, |
||||
|
type: Object, |
||||
|
}, |
||||
|
code: { |
||||
|
default: '0201', |
||||
|
type: String, |
||||
|
}, |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
yearList: [ |
||||
|
{ |
||||
|
year: 2020, |
||||
|
}, |
||||
|
{ |
||||
|
year: 2021, |
||||
|
}, |
||||
|
{ |
||||
|
year: 2022, |
||||
|
}, |
||||
|
], |
||||
|
year: '2020', |
||||
|
}; |
||||
|
}, |
||||
|
watch: { |
||||
|
code(val) { |
||||
|
this.getYear(); |
||||
|
}, |
||||
|
}, |
||||
|
methods: { |
||||
|
onChange(pageNumber) { |
||||
|
this.$emit('getData', pageNumber); |
||||
|
}, |
||||
|
openPage(id) { |
||||
|
window.open(`${window.location.href}&introId=${id}`); |
||||
|
}, |
||||
|
changeYear(year) { |
||||
|
this.year = year; |
||||
|
this.$emit('changeYear', year); |
||||
|
}, |
||||
|
async getYear() { |
||||
|
try { |
||||
|
const params = { showPage: this.code }; |
||||
|
const res = await getCondition(params); |
||||
|
console.log('res: ', res); |
||||
|
} catch (error) {} |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
.year-box { |
||||
|
height: 40px; |
||||
|
margin-left: 24px; |
||||
|
} |
||||
|
.year-box >>> span { |
||||
|
padding: 4px 8px; |
||||
|
border: 1px solid #ededed; |
||||
|
border-radius: 4px; |
||||
|
margin-right: 16px; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
.year-box >>> span:hover { |
||||
|
border: 1px solid #b61412; |
||||
|
color: #b61412; |
||||
|
} |
||||
|
.active { |
||||
|
border: 1px solid #b61412; |
||||
|
background: #b61412; |
||||
|
color: #fff !important; |
||||
|
} |
||||
|
/deep/.ant-pagination-item-active { |
||||
|
font-weight: 500; |
||||
|
background: #fff; |
||||
|
border-color: #b61412; |
||||
|
background: #b61412; |
||||
|
} |
||||
|
/deep/.ant-pagination-item:hover { |
||||
|
font-weight: 500; |
||||
|
background: #fff; |
||||
|
border-color: #b61412; |
||||
|
background: #b61412; |
||||
|
} |
||||
|
/deep/.ant-pagination-item:focus a, |
||||
|
/deep/.ant-pagination-item:hover a { |
||||
|
color: #fff; |
||||
|
} |
||||
|
/deep/.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon, |
||||
|
/deep/.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon { |
||||
|
color: #b61412; |
||||
|
} |
||||
|
|
||||
|
/deep/.ant-pagination-prev:focus .ant-pagination-item-link, |
||||
|
/deep/.ant-pagination-next:focus .ant-pagination-item-link, |
||||
|
/deep/.ant-pagination-prev:hover .ant-pagination-item-link, |
||||
|
/deep/.ant-pagination-next:hover .ant-pagination-item-link { |
||||
|
color: #b61412; |
||||
|
border-color: #b61412; |
||||
|
} |
||||
|
/deep/.ant-pagination-options-quick-jumper input:hover { |
||||
|
border-color: #b61412; |
||||
|
border-right-width: 1px !important; |
||||
|
} |
||||
|
/deep/.ant-pagination-options-quick-jumper input:focus { |
||||
|
border-color: #b61412; |
||||
|
border-right-width: 1px !important; |
||||
|
outline: 0; |
||||
|
box-shadow: 0 0 0 2px rgb(182 20 18 /20%); |
||||
|
} |
||||
|
/deep/.ant-pagination-item-active:focus a { |
||||
|
color: #fff; |
||||
|
} |
||||
|
/deep/.ant-pagination-item-active:hover a { |
||||
|
color: #fff; |
||||
|
} |
||||
|
/deep/.ant-pagination-item-active a { |
||||
|
color: #fff; |
||||
|
} |
||||
|
li { |
||||
|
list-style-type: disc !important; |
||||
|
font-size: 16px; |
||||
|
color: rgb(51, 51, 51); |
||||
|
} |
||||
|
li::marker { |
||||
|
color: #b61412; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,385 @@ |
|||||
|
<template> |
||||
|
<div class="content-nav"> |
||||
|
<img src="@/assets/location.png" alt="" /> |
||||
|
您当前位置: |
||||
|
<span> > {{ title }} </span> |
||||
|
<span> > {{ titleTwo }} </span> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
export default { |
||||
|
data() { |
||||
|
return { |
||||
|
str: '', |
||||
|
tabList: [ |
||||
|
{ |
||||
|
title: '首页', |
||||
|
url: '/', |
||||
|
children: [], |
||||
|
}, |
||||
|
{ |
||||
|
title: '公司概况', |
||||
|
url: '/profile', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '公司简介', |
||||
|
code: '0101', |
||||
|
}, |
||||
|
{ |
||||
|
title: '公司领导', |
||||
|
code: '0102', |
||||
|
}, |
||||
|
{ |
||||
|
title: '组织架构', |
||||
|
code: '0103', |
||||
|
}, |
||||
|
{ |
||||
|
title: '企业VI', |
||||
|
code: '0104', |
||||
|
}, |
||||
|
{ |
||||
|
title: '联系方式', |
||||
|
code: '0105', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
title: '新闻中心', |
||||
|
url: '/news', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '集团新闻', |
||||
|
code: '0201', |
||||
|
}, |
||||
|
{ |
||||
|
title: '省公司新闻', |
||||
|
code: '0202', |
||||
|
}, |
||||
|
{ |
||||
|
title: '公司新闻', |
||||
|
code: '0203', |
||||
|
}, |
||||
|
{ |
||||
|
title: '图片新闻', |
||||
|
code: '0204', |
||||
|
}, |
||||
|
{ |
||||
|
title: '热点专题', |
||||
|
code: '0205', |
||||
|
}, |
||||
|
{ |
||||
|
title: '媒体关注', |
||||
|
code: '0206', |
||||
|
}, |
||||
|
{ |
||||
|
title: '视频新闻', |
||||
|
code: '0207', |
||||
|
}, |
||||
|
{ |
||||
|
title: '专题片', |
||||
|
code: '0208', |
||||
|
}, |
||||
|
{ |
||||
|
title: '企业画册', |
||||
|
code: '0209', |
||||
|
}, |
||||
|
{ |
||||
|
title: '现场风采', |
||||
|
code: '0210', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
title: '党的建设', |
||||
|
url: '/building', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '中心组学习', |
||||
|
code: '0301', |
||||
|
}, |
||||
|
{ |
||||
|
title: '示范党委', |
||||
|
code: '0302', |
||||
|
}, |
||||
|
{ |
||||
|
title: '党支部达标', |
||||
|
code: '0303', |
||||
|
}, |
||||
|
{ |
||||
|
title: '群团工作', |
||||
|
code: '0304', |
||||
|
}, |
||||
|
{ |
||||
|
title: '党建动态', |
||||
|
code: '0305', |
||||
|
}, |
||||
|
{ |
||||
|
title: '党风廉政', |
||||
|
code: '0306', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
title: '安全生产', |
||||
|
url: '/production', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '安全会议', |
||||
|
code: '0401', |
||||
|
}, |
||||
|
{ |
||||
|
title: '安全生产记录', |
||||
|
code: '0402', |
||||
|
}, |
||||
|
{ |
||||
|
title: '应急管理', |
||||
|
code: '0403', |
||||
|
}, |
||||
|
{ |
||||
|
title: '三讲一落实', |
||||
|
code: '0404', |
||||
|
}, |
||||
|
{ |
||||
|
title: '曝光台', |
||||
|
code: '0405', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
title: '通知公告', |
||||
|
url: '/notice', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '通知', |
||||
|
code: '0501', |
||||
|
}, |
||||
|
{ |
||||
|
title: '通报', |
||||
|
code: '0502', |
||||
|
}, |
||||
|
{ |
||||
|
title: '公告', |
||||
|
code: '0503', |
||||
|
}, |
||||
|
{ |
||||
|
title: '值班安排', |
||||
|
code: '0504', |
||||
|
}, |
||||
|
{ |
||||
|
title: '浮窗', |
||||
|
code: '0505', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
title: '信息公开', |
||||
|
url: '/information', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '基本信息', |
||||
|
code: '0601', |
||||
|
}, |
||||
|
{ |
||||
|
title: '经营管理', |
||||
|
code: '0602', |
||||
|
}, |
||||
|
{ |
||||
|
title: '公司公告', |
||||
|
code: '0603', |
||||
|
}, |
||||
|
{ |
||||
|
title: '社会责任', |
||||
|
code: '0604', |
||||
|
}, |
||||
|
{ |
||||
|
title: '关于信息公开', |
||||
|
code: '0605', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
title: '审批事项', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '公务用车', |
||||
|
code: '', |
||||
|
}, |
||||
|
{ |
||||
|
title: '领导干部外出报备', |
||||
|
code: '', |
||||
|
}, |
||||
|
{ |
||||
|
title: '疫情防控', |
||||
|
code: '', |
||||
|
}, |
||||
|
{ |
||||
|
title: '用印申请', |
||||
|
code: '', |
||||
|
}, |
||||
|
{ |
||||
|
title: '业务招待事项', |
||||
|
code: '', |
||||
|
}, |
||||
|
{ |
||||
|
title: '会议室使用', |
||||
|
code: '', |
||||
|
}, |
||||
|
{ |
||||
|
title: '办公用品领用', |
||||
|
code: '', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
title: '制度资料', |
||||
|
url: '/system', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '集团公司制度', |
||||
|
code: '0801', |
||||
|
}, |
||||
|
{ |
||||
|
title: '山西公司制度', |
||||
|
code: '0802', |
||||
|
}, |
||||
|
{ |
||||
|
title: '行业标准与制度', |
||||
|
code: '0803', |
||||
|
}, |
||||
|
{ |
||||
|
title: '公司制度', |
||||
|
code: '0804', |
||||
|
}, |
||||
|
{ |
||||
|
title: '地方规章', |
||||
|
code: '0805', |
||||
|
}, |
||||
|
{ |
||||
|
title: '培训课件', |
||||
|
code: '0806', |
||||
|
}, |
||||
|
{ |
||||
|
title: '培训影像', |
||||
|
code: '0807', |
||||
|
}, |
||||
|
{ |
||||
|
title: '科技创新', |
||||
|
code: '0808', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
{ |
||||
|
title: '部门首页', |
||||
|
url: '/department', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '总经理工作部', |
||||
|
code: '0901', |
||||
|
}, |
||||
|
{ |
||||
|
title: '计划营销部', |
||||
|
code: '0902', |
||||
|
}, |
||||
|
{ |
||||
|
title: '财务管理部', |
||||
|
code: '0903', |
||||
|
}, |
||||
|
{ |
||||
|
title: '人力资源部', |
||||
|
code: '0904', |
||||
|
}, |
||||
|
{ |
||||
|
title: '党群工作部', |
||||
|
code: '0905', |
||||
|
}, |
||||
|
{ |
||||
|
title: '纪委办公室(审计部)', |
||||
|
code: '0906', |
||||
|
}, |
||||
|
{ |
||||
|
title: '燃料采购部', |
||||
|
code: '0907', |
||||
|
}, |
||||
|
{ |
||||
|
title: '物资管理部', |
||||
|
code: '0908', |
||||
|
}, |
||||
|
{ |
||||
|
title: '项目开发部', |
||||
|
code: '0909', |
||||
|
}, |
||||
|
{ |
||||
|
title: '燃料质量验收部', |
||||
|
code: '0910', |
||||
|
}, |
||||
|
{ |
||||
|
title: '安全监督部', |
||||
|
code: '0911', |
||||
|
}, |
||||
|
{ |
||||
|
title: '设备部', |
||||
|
code: '0912', |
||||
|
}, |
||||
|
{ |
||||
|
title: '发电部', |
||||
|
code: '0913', |
||||
|
}, |
||||
|
{ |
||||
|
title: '维护部', |
||||
|
code: '0914', |
||||
|
}, |
||||
|
{ |
||||
|
title: '热工专业', |
||||
|
code: '0915', |
||||
|
}, |
||||
|
{ |
||||
|
title: '电气专业', |
||||
|
code: '0916', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
], |
||||
|
title: '', |
||||
|
titleTwo: '', |
||||
|
}; |
||||
|
}, |
||||
|
watch: { |
||||
|
'$route.query.code'() { |
||||
|
this.getLocal(); |
||||
|
}, |
||||
|
}, |
||||
|
created() { |
||||
|
this.getLocal(); |
||||
|
}, |
||||
|
methods: { |
||||
|
getLocal() { |
||||
|
const path = this.$route.path; |
||||
|
const query = this.$route.query; |
||||
|
for (let i = 0; i < this.tabList.length; i++) { |
||||
|
const title = this.tabList[i]; |
||||
|
if (title.url === path) { |
||||
|
this.title = title.title; |
||||
|
for (let k = 0; k < title.children.length; k++) { |
||||
|
if (query.code && query.code === title.children[k].code) { |
||||
|
this.titleTwo = title.children[k].title; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
.content-nav { |
||||
|
height: 40px; |
||||
|
margin-bottom: 16px; |
||||
|
background: #fff; |
||||
|
font-size: 16px; |
||||
|
line-height: 40px; |
||||
|
padding: 0 16px; |
||||
|
} |
||||
|
img { |
||||
|
width: 28px; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,41 @@ |
|||||
|
<template> |
||||
|
<div> |
||||
|
<template v-if="richObj && richObj.title"> |
||||
|
<div class="title">{{ richObj.title }}</div> |
||||
|
<div class="source-time d-flex justify-center"> |
||||
|
<div class="mr-4">{{ richObj.source }}</div> |
||||
|
<div class="mr-4">{{ richObj.author }}</div> |
||||
|
<div>{{ $moment(richObj.publishTime).format('YYYY-MM-DD') }}</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<div class="mt-4" v-dompurify-html="richObj.content"></div> |
||||
|
<template v-if="richObj && richObj.title"> |
||||
|
<div class="mt-5" style="text-align: right">[责编: {{ richObj.editor }}]</div> |
||||
|
</template> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
export default { |
||||
|
props: { |
||||
|
richObj: { |
||||
|
default: () => {}, |
||||
|
type: Object, |
||||
|
}, |
||||
|
}, |
||||
|
data() { |
||||
|
return {}; |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
.title { |
||||
|
font-size: 22px; |
||||
|
font-weight: bold; |
||||
|
text-align: center; |
||||
|
} |
||||
|
.source-time { |
||||
|
font-size: 16px; |
||||
|
color: rgba(153, 153, 153, 0.6); |
||||
|
margin-top: 10px; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,27 @@ |
|||||
|
import axios from 'axios'; |
||||
|
let { proxyUrl, msgUrl } = require('@/config/setting'); |
||||
|
|
||||
|
const apiDocs = `${proxyUrl}`; |
||||
|
const carousel = `${apiDocs}/carousel`; // 轮播图
|
||||
|
const content = `${apiDocs}/content`; // 网站内容
|
||||
|
|
||||
|
// websocket基础地址
|
||||
|
export const WS_BASE_URL = msgUrl; |
||||
|
|
||||
|
// 轮播图查询
|
||||
|
export const carouselQuery = params => axios.post(`${carousel}/query`, params); |
||||
|
|
||||
|
// 官网首页列表查询
|
||||
|
export const getContent = params => |
||||
|
axios.get( |
||||
|
`${content}/list?showPage=${params.showPage}&
|
||||
|
year=${params.year}&showType=${params.showType}& |
||||
|
pageNum=${params.pageNum}&pageSize=${params.pageSize}`,
|
||||
|
); |
||||
|
|
||||
|
// 官网内容详情查询
|
||||
|
export const getDetail = params => axios.get(`${content}/detail?showPage=${params.showPage}&introId=${params.introId}`); |
||||
|
|
||||
|
// 查询当前code下的年份
|
||||
|
|
||||
|
export const getCondition = params => axios.get(`${content}/condition?showPage=${params.showPage}`); |
@ -0,0 +1,30 @@ |
|||||
|
const title = process.env.VUE_APP_TITLE; |
||||
|
const description = process.env.VUE_APP_DESCRIPTION; |
||||
|
const baseUrl = process.env.VUE_APP_BASE_URL; |
||||
|
const apiUrl = process.env.VUE_APP_API_URL; |
||||
|
const proxyUrl = process.env.VUE_APP_PROXY_URL; |
||||
|
const publicPath = process.env.VUE_APP_PUBLIC_PATH; |
||||
|
const msgUrl = process.env.VUE_APP_MSG_URL; |
||||
|
|
||||
|
module.exports = { |
||||
|
// 首页标题
|
||||
|
title, |
||||
|
|
||||
|
// 首页描述信息
|
||||
|
description, |
||||
|
|
||||
|
// 基础地址
|
||||
|
baseUrl, |
||||
|
|
||||
|
// api基础地址
|
||||
|
apiUrl, |
||||
|
|
||||
|
// 消息系统地址
|
||||
|
msgUrl, |
||||
|
|
||||
|
// api代理地址
|
||||
|
proxyUrl, |
||||
|
|
||||
|
// 生成文件目录 publicPath
|
||||
|
publicPath, |
||||
|
}; |
@ -0,0 +1,19 @@ |
|||||
|
/* |
||||
|
* Copyright (c) 2019. |
||||
|
* author: wally |
||||
|
* email: 18603454788@163.com |
||||
|
*/ |
||||
|
|
||||
|
// 用户登录client
|
||||
|
export const SIGN_IN_CLIENTS = { mp: 0, h5: 1, android: 2, ios: 3 }; |
||||
|
|
||||
|
// 用户登录类型
|
||||
|
export const SIGN_IN_TYPES = { |
||||
|
mp: 0, |
||||
|
phone: 1, |
||||
|
email: 2, |
||||
|
username: 3, |
||||
|
wx: 4, |
||||
|
wx_web: 5, |
||||
|
wb: 6, |
||||
|
}; |
@ -0,0 +1,23 @@ |
|||||
|
// @ts-ignore
|
||||
|
import Vue from 'vue'; |
||||
|
import './plugins/axios'; |
||||
|
import App from './App.vue'; |
||||
|
import './registerServiceWorker'; |
||||
|
import router from './router'; |
||||
|
import store from './store'; |
||||
|
import './plugins/ant-design-vue.js'; |
||||
|
import 'common/portrait.styl'; |
||||
|
import 'common/platform.styl'; |
||||
|
import moment from 'moment'; //导入文件
|
||||
|
import VueDOMPurifyHTML from 'vue-dompurify-html'; |
||||
|
Vue.use(VueDOMPurifyHTML); |
||||
|
|
||||
|
Vue.prototype.$moment = moment; //赋值使用
|
||||
|
|
||||
|
Vue.config.productionTip = false; |
||||
|
|
||||
|
window.vm = new Vue({ |
||||
|
router, |
||||
|
store, |
||||
|
render: h => h(App), |
||||
|
}).$mount('#app'); |
@ -0,0 +1,97 @@ |
|||||
|
/* |
||||
|
* @Author: wally |
||||
|
* @email: 18603454788@163.com |
||||
|
* @Date: 2021-01-13 17:21:29 |
||||
|
* @LastEditors: wally |
||||
|
* @LastEditTime: 2021-01-19 13:06:34 |
||||
|
*/ |
||||
|
import Vue from 'vue'; |
||||
|
import { |
||||
|
Pagination, |
||||
|
Button, |
||||
|
Input, |
||||
|
message, |
||||
|
notification, |
||||
|
Modal, |
||||
|
Tag, |
||||
|
Table, |
||||
|
Tabs, |
||||
|
Icon, |
||||
|
Empty, |
||||
|
Form, |
||||
|
Select, |
||||
|
Upload, |
||||
|
Badge, |
||||
|
Popconfirm, |
||||
|
DatePicker, |
||||
|
Switch, |
||||
|
Radio, |
||||
|
Dropdown, |
||||
|
Menu, |
||||
|
Row, |
||||
|
Col, |
||||
|
Timeline, |
||||
|
Checkbox, |
||||
|
BackTop, |
||||
|
Carousel, |
||||
|
Avatar, |
||||
|
Layout, |
||||
|
Breadcrumb, |
||||
|
Tooltip, |
||||
|
Steps, |
||||
|
Divider, |
||||
|
Card, |
||||
|
Skeleton, |
||||
|
AutoComplete, |
||||
|
InputNumber, |
||||
|
} from 'ant-design-vue'; |
||||
|
import { ConfigProvider } from 'ant-design-vue'; |
||||
|
Vue.component(ConfigProvider.name, ConfigProvider); |
||||
|
Vue.use(Pagination); |
||||
|
Vue.use(Button); |
||||
|
Vue.use(Input); |
||||
|
Vue.use(Modal); |
||||
|
Vue.use(Tag); |
||||
|
Vue.use(Table); |
||||
|
Vue.use(Tabs); |
||||
|
Vue.use(Icon); |
||||
|
Vue.use(Empty); |
||||
|
Vue.use(Form); |
||||
|
Vue.use(Select); |
||||
|
Vue.use(Upload); |
||||
|
Vue.use(Badge); |
||||
|
Vue.use(Popconfirm); |
||||
|
Vue.use(DatePicker); |
||||
|
Vue.use(Switch); |
||||
|
Vue.use(Radio); |
||||
|
Vue.use(Dropdown); |
||||
|
Vue.use(Menu); |
||||
|
Vue.use(Row); |
||||
|
Vue.use(Col); |
||||
|
Vue.use(Timeline); |
||||
|
Vue.use(Checkbox); |
||||
|
Vue.use(BackTop); |
||||
|
Vue.use(Carousel); |
||||
|
Vue.use(Avatar); |
||||
|
Vue.use(Layout); |
||||
|
Vue.use(Breadcrumb); |
||||
|
Vue.use(Tooltip); |
||||
|
Vue.use(Steps); |
||||
|
Vue.use(Divider); |
||||
|
Vue.use(Card); |
||||
|
Vue.use(Skeleton); |
||||
|
Vue.use(AutoComplete); |
||||
|
Vue.use(InputNumber); |
||||
|
|
||||
|
Vue.prototype.$message = message; |
||||
|
Vue.prototype.$notification = notification; |
||||
|
Vue.prototype.$info = Modal.info; |
||||
|
Vue.prototype.$success = Modal.success; |
||||
|
Vue.prototype.$error = Modal.error; |
||||
|
Vue.prototype.$warning = Modal.warning; |
||||
|
Vue.prototype.$confirm = Modal.confirm; |
||||
|
|
||||
|
message.config({ |
||||
|
duration: 3, |
||||
|
maxCount: 3, |
||||
|
}); |
@ -0,0 +1,77 @@ |
|||||
|
'use strict'; |
||||
|
|
||||
|
import Vue from 'vue'; |
||||
|
import axios from 'axios'; |
||||
|
import router from '../router/index'; |
||||
|
import store from '../store/index'; |
||||
|
|
||||
|
// Full config: https://github.com/axios/axios#request-config
|
||||
|
// axios.defaults.baseURL = process.env.baseURL || process.env.apiUrl || '';
|
||||
|
// axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
|
||||
|
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
|
||||
|
let config = { |
||||
|
// baseURL: process.env.baseURL || process.env.apiUrl || ""
|
||||
|
timeout: 60 * 1000, // Timeout
|
||||
|
// withCredentials: true, // Check cross-site Access-Control
|
||||
|
}; |
||||
|
|
||||
|
const _axios = axios.create(config); |
||||
|
axios.interceptors.request.use( |
||||
|
function(config) { |
||||
|
let token = store.state.anyringToken || sessionStorage.getItem('anyringToken'); |
||||
|
|
||||
|
if (token) { |
||||
|
config.headers.Authorization = `Bearer ${token}`; |
||||
|
} |
||||
|
return config; |
||||
|
}, |
||||
|
function(error) { |
||||
|
// Do something with request error
|
||||
|
return Promise.reject(error); |
||||
|
}, |
||||
|
); |
||||
|
|
||||
|
// Add a response interceptor
|
||||
|
axios.interceptors.response.use( |
||||
|
function(response) { |
||||
|
if (response.data && response.data.code >= 400 && response.data.code < 500) { |
||||
|
store.commit('user/sign', ''); |
||||
|
router.replace({ |
||||
|
path: '/user/login', |
||||
|
query: { redirect: router.currentRoute.fullPath }, |
||||
|
}); |
||||
|
} |
||||
|
// Do something with response data
|
||||
|
return response; |
||||
|
}, |
||||
|
function(error) { |
||||
|
// Do something with response error
|
||||
|
return Promise.reject(error); |
||||
|
}, |
||||
|
); |
||||
|
|
||||
|
Plugin.install = function(Vue) { |
||||
|
Vue.axios = _axios; |
||||
|
window.axios = _axios; |
||||
|
Object.defineProperties(Vue.prototype, { |
||||
|
axios: { |
||||
|
get() { |
||||
|
return _axios; |
||||
|
}, |
||||
|
}, |
||||
|
$axios: { |
||||
|
get() { |
||||
|
return _axios; |
||||
|
}, |
||||
|
}, |
||||
|
$http: { |
||||
|
get() { |
||||
|
return _axios; |
||||
|
}, |
||||
|
}, |
||||
|
}); |
||||
|
}; |
||||
|
|
||||
|
Vue.use(Plugin); |
||||
|
|
||||
|
export default Plugin; |
@ -0,0 +1,34 @@ |
|||||
|
/* eslint-disable no-console */ |
||||
|
|
||||
|
import { register } from "register-service-worker"; |
||||
|
|
||||
|
if (process.env.NODE_ENV === "production") { |
||||
|
register(`${process.env.BASE_URL}service-worker.js`, { |
||||
|
ready() { |
||||
|
console.log( |
||||
|
"App is being served from cache by a service worker.\n" + |
||||
|
"For more details, visit https://goo.gl/AFskqB" |
||||
|
); |
||||
|
}, |
||||
|
registered() { |
||||
|
console.log("Service worker has been registered."); |
||||
|
}, |
||||
|
cached() { |
||||
|
console.log("Content has been cached for offline use."); |
||||
|
}, |
||||
|
updatefound() { |
||||
|
console.log("New content is downloading."); |
||||
|
}, |
||||
|
updated() { |
||||
|
console.log("New content is available; please refresh."); |
||||
|
}, |
||||
|
offline() { |
||||
|
console.log( |
||||
|
"No internet connection found. App is running in offline mode." |
||||
|
); |
||||
|
}, |
||||
|
error(error) { |
||||
|
console.error("Error during service worker registration:", error); |
||||
|
} |
||||
|
}); |
||||
|
} |
@ -0,0 +1,84 @@ |
|||||
|
import Vue from 'vue'; |
||||
|
import VueRouter from 'vue-router'; |
||||
|
import Home from 'views/FirstPages/FirstPage.vue'; |
||||
|
// import Homes from 'views/FirstPages/FirstPages.vue';
|
||||
|
|
||||
|
Vue.use(VueRouter); |
||||
|
|
||||
|
const routes = [ |
||||
|
// 首页
|
||||
|
{ |
||||
|
path: '/', |
||||
|
name: 'Home', |
||||
|
component: Home, |
||||
|
}, |
||||
|
// 新闻中心
|
||||
|
{ |
||||
|
path: '/news', |
||||
|
name: 'news', |
||||
|
component: () => import('@/views/NewPages/NewPages.vue'), |
||||
|
}, |
||||
|
// 新闻中心
|
||||
|
{ |
||||
|
path: '/profile', |
||||
|
name: 'CompanyProfile', |
||||
|
component: () => import('@/views/CompanyProfile/CompanyProfile.vue'), |
||||
|
}, |
||||
|
// 党的建设
|
||||
|
{ |
||||
|
path: '/building', |
||||
|
name: 'PartyBuilding', |
||||
|
component: () => import('@/views/OtherPages/PartyBuilding.vue'), |
||||
|
}, |
||||
|
// 安全生产
|
||||
|
{ |
||||
|
path: '/production', |
||||
|
name: 'SafeProduction', |
||||
|
component: () => import('@/views/OtherPages/SafeProduction.vue'), |
||||
|
}, |
||||
|
// 通知公告
|
||||
|
{ |
||||
|
path: '/notice', |
||||
|
name: 'NoticeNotice', |
||||
|
component: () => import('@/views/OtherPages/NoticeNotice.vue'), |
||||
|
}, |
||||
|
// 信息公开
|
||||
|
{ |
||||
|
path: '/information', |
||||
|
name: 'Information', |
||||
|
component: () => import('@/views/OtherPages/Information.vue'), |
||||
|
}, |
||||
|
// 信息公开
|
||||
|
{ |
||||
|
path: '/system', |
||||
|
name: 'System', |
||||
|
component: () => import('@/views/OtherPages/System.vue'), |
||||
|
}, |
||||
|
// 部门首页
|
||||
|
{ |
||||
|
path: '/department', |
||||
|
name: 'Department', |
||||
|
component: () => import('@/views/OtherPages/Department.vue'), |
||||
|
}, |
||||
|
// // 关于我们界面
|
||||
|
// {
|
||||
|
// path: '/About/Introduce',
|
||||
|
// name: 'About',
|
||||
|
// component: () => import(/* webpackChunkName: "cooperative-enterprise" */ 'views/About/About.vue'),
|
||||
|
// children: [
|
||||
|
// {
|
||||
|
// path: '/About/Introduce',
|
||||
|
// name: 'Introduce',
|
||||
|
// component: () => import(/* webpackChunkName: "cooperative-enterprise" */ 'views/About/Children/Introduce.vue'),
|
||||
|
// }
|
||||
|
// ],
|
||||
|
// },
|
||||
|
]; |
||||
|
|
||||
|
const router = new VueRouter({ |
||||
|
mode: 'history', |
||||
|
base: process.env.BASE_URL, |
||||
|
routes, |
||||
|
}); |
||||
|
|
||||
|
export default router; |
@ -0,0 +1,7 @@ |
|||||
|
import Vue from 'vue'; |
||||
|
import Vuex from 'vuex'; |
||||
|
import home from './modules/home/index'; |
||||
|
import user from './modules/user/index'; |
||||
|
|
||||
|
Vue.use(Vuex); |
||||
|
export default new Vuex.Store({ modules: { home, user } }); |
@ -0,0 +1,46 @@ |
|||||
|
import axios from 'axios'; |
||||
|
import { message } from 'ant-design-vue'; |
||||
|
import { getContent, getDetail } from 'config/api'; |
||||
|
|
||||
|
const actions = { |
||||
|
/** |
||||
|
* 查询网站内容 |
||||
|
* @param {any} commit |
||||
|
* @param {object} param 提交的参数 |
||||
|
* 提交信息 |
||||
|
*/ |
||||
|
async getContent({ commit, rootState }, param) { |
||||
|
try { |
||||
|
const res = await getContent(param); |
||||
|
const { data, code, msg } = res.data; |
||||
|
if (code === 200) { |
||||
|
return data; |
||||
|
} else { |
||||
|
message.error(msg); |
||||
|
} |
||||
|
} catch (error) { |
||||
|
message.error('提交失败'); |
||||
|
} |
||||
|
}, |
||||
|
/** |
||||
|
* 官网内容详情查询 |
||||
|
* @param {any} commit |
||||
|
* @param {object} param 提交的参数 |
||||
|
* 提交信息 |
||||
|
*/ |
||||
|
async getDetail({ commit, rootState }, param) { |
||||
|
try { |
||||
|
const res = await getDetail(param); |
||||
|
const { data, code, msg } = res.data; |
||||
|
if (code === 200) { |
||||
|
return data; |
||||
|
} else { |
||||
|
message.error(msg); |
||||
|
} |
||||
|
} catch (error) { |
||||
|
message.error('提交失败'); |
||||
|
} |
||||
|
}, |
||||
|
}; |
||||
|
|
||||
|
export default actions; |
@ -0,0 +1,7 @@ |
|||||
|
const getters = {}; |
||||
|
// 域定制导航展示形式
|
||||
|
// 0 -> 无特殊导航文字
|
||||
|
// 1 -> 横向定制导航
|
||||
|
// 2 -> 纵向定制导航
|
||||
|
|
||||
|
export default getters; |
@ -0,0 +1,6 @@ |
|||||
|
import mutations from './mutations'; |
||||
|
import actions from './actions'; |
||||
|
import state from './state'; |
||||
|
import getters from './getters'; |
||||
|
|
||||
|
export default { namespaced: true, state, getters, mutations, actions }; |
@ -0,0 +1,13 @@ |
|||||
|
import { List } from 'ant-design-vue'; |
||||
|
const mutations = { |
||||
|
/** |
||||
|
* 设置登录人信息 |
||||
|
* @param {object} state |
||||
|
* @param {object} userSer |
||||
|
*/ |
||||
|
setUserSer(state, userSer) { |
||||
|
state.userSer = { ...userSer }; |
||||
|
}, |
||||
|
}; |
||||
|
|
||||
|
export default mutations; |
@ -0,0 +1,6 @@ |
|||||
|
const state = { |
||||
|
userSer: null, // 登录人信息
|
||||
|
str: '', |
||||
|
}; |
||||
|
|
||||
|
export default state; |
@ -0,0 +1,5 @@ |
|||||
|
// import axios from 'axios';
|
||||
|
|
||||
|
const actions = {}; |
||||
|
|
||||
|
export default actions; |
@ -0,0 +1,7 @@ |
|||||
|
const getters = {}; |
||||
|
// 域定制导航展示形式
|
||||
|
// 0 -> 无特殊导航文字
|
||||
|
// 1 -> 横向定制导航
|
||||
|
// 2 -> 纵向定制导航
|
||||
|
|
||||
|
export default getters; |
@ -0,0 +1,6 @@ |
|||||
|
import mutations from './mutations'; |
||||
|
import actions from './actions'; |
||||
|
import state from './state'; |
||||
|
import getters from './getters'; |
||||
|
|
||||
|
export default { namespaced: true, state, getters, mutations, actions }; |
@ -0,0 +1,33 @@ |
|||||
|
const mutations = { |
||||
|
/** |
||||
|
* 设置token |
||||
|
* @param { object } state |
||||
|
* @param { string } token |
||||
|
*/ |
||||
|
sign(state, token) { |
||||
|
state.anyringToken = token; |
||||
|
sessionStorage.setItem('anyringToken', token); |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 设置user用户信息 |
||||
|
* @param {object} state |
||||
|
* @param {object} user {id, account, phone} |
||||
|
*/ |
||||
|
setUser(state, user) { |
||||
|
if (!user) return; |
||||
|
state.user = { ...user }; |
||||
|
sessionStorage.setItem('user', JSON.stringify(user)); |
||||
|
}, |
||||
|
|
||||
|
/** |
||||
|
* 图片验证码 |
||||
|
* @param {object} state |
||||
|
* @param {object} picCode |
||||
|
*/ |
||||
|
setPicCode(state, picCode) { |
||||
|
state.picCode = { ...picCode }; |
||||
|
}, |
||||
|
}; |
||||
|
|
||||
|
export default mutations; |
@ -0,0 +1,7 @@ |
|||||
|
const state = { |
||||
|
anyringToken: '', |
||||
|
user: { id: '', phone: '', account: '' }, |
||||
|
picCode: null, |
||||
|
}; |
||||
|
|
||||
|
export default state; |
@ -0,0 +1,88 @@ |
|||||
|
<template> |
||||
|
<div class="content-1180"> |
||||
|
<div class="d-flex mt-4"> |
||||
|
<LeftNav :code="code" :list="list" class="mr-4" @chanegCode="chanegCode" /> |
||||
|
<div class="flex-1 flex-column"> |
||||
|
<Location /> |
||||
|
<div class="content-detail p-4" :style="{ 'min-height': list.children.length * 56 + 'px' }"> |
||||
|
<RichText :rich-obj="content" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
import { mapActions } from 'vuex'; |
||||
|
import LeftNav from '@/components/LeftNav/LeftNav.vue'; |
||||
|
import RichText from '@/components/RichText/RichText.vue'; |
||||
|
import Location from '@/components/Location/Location.vue'; |
||||
|
|
||||
|
export default { |
||||
|
components: { LeftNav, RichText, Location }, |
||||
|
data() { |
||||
|
return { |
||||
|
code: '0101', |
||||
|
list: { |
||||
|
title: '公司概况', |
||||
|
url: '/profile', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '公司简介', |
||||
|
code: '0101', |
||||
|
}, |
||||
|
{ |
||||
|
title: '公司领导', |
||||
|
code: '0102', |
||||
|
}, |
||||
|
{ |
||||
|
title: '组织架构', |
||||
|
code: '0103', |
||||
|
}, |
||||
|
{ |
||||
|
title: '企业VI', |
||||
|
code: '0104', |
||||
|
}, |
||||
|
{ |
||||
|
title: '联系方式', |
||||
|
code: '0105', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
content: {}, |
||||
|
}; |
||||
|
}, |
||||
|
watch: { |
||||
|
'$route.query.code'(val) { |
||||
|
if (this.$route.path === this.list.url) { |
||||
|
this.code = val; |
||||
|
this.getData(this.code); |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
created() { |
||||
|
this.code = this.$route.query.code; |
||||
|
this.getData(this.code); |
||||
|
}, |
||||
|
methods: { |
||||
|
...mapActions('home', ['getDetail']), |
||||
|
async getData(showPage) { |
||||
|
try { |
||||
|
const param = { |
||||
|
showPage, |
||||
|
introId: '', |
||||
|
}; |
||||
|
const data = await this.getDetail(param); |
||||
|
this.content = data; |
||||
|
} catch (error) {} |
||||
|
}, |
||||
|
chanegCode(code) { |
||||
|
this.code = code; |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
.content-detail { |
||||
|
background: #fff; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,353 @@ |
|||||
|
<template> |
||||
|
<div class="content-1180"> |
||||
|
<div class="news-box mt-4 d-flex justify-space-between"> |
||||
|
<!-- 集团新闻 --> |
||||
|
<div class="flex-1 mr-4 p-4 flex-column"> |
||||
|
<div class="new-box-title d-flex justify-space-between"> |
||||
|
<div class="d-flex align-start"> |
||||
|
<div class="icon-red mr-1" style="margin-top: 10px;"></div> |
||||
|
<div style="font-size:22px;color: #333;font-weight:600;margin-top:3px;">集团新闻</div> |
||||
|
</div> |
||||
|
<div class="d-flex align-center" style="height: 100%;cursor: pointer;" @click="openPage('news', '0201', '')">更多></div> |
||||
|
</div> |
||||
|
<div class="new-box-content d-flex flex-column justify-space-between pt-4"> |
||||
|
<div class="d-flex" v-for="newContent in groupNews" :key="newContent.introId"> |
||||
|
<div class="content-date"> |
||||
|
<div class="content-date-day">{{ $moment(+newContent.publishTime).format('DD') }}</div> |
||||
|
<div class="content-date-year">{{ $moment(+newContent.publishTime).format('YYYY-MM') }}</div> |
||||
|
</div> |
||||
|
<div class="flex-1 new-box-content-jj" @click="openPage('news', '0201', newContent.introId)">{{ newContent.title }}</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- 省公司新闻 --> |
||||
|
<div class="flex-1 mr-4 p-4 flex-column"> |
||||
|
<div class="new-box-title d-flex justify-space-between"> |
||||
|
<div class="d-flex align-start"> |
||||
|
<div class="icon-red mr-1" style="margin-top: 10px;"></div> |
||||
|
<div style="font-size:22px;color: #333;font-weight:600;margin-top:3px;">省公司新闻</div> |
||||
|
</div> |
||||
|
<div class="d-flex align-center" style="height: 100%;cursor: pointer;" @click="openPage('news', '0202', '')">更多></div> |
||||
|
</div> |
||||
|
<div class="new-box-content d-flex flex-column justify-space-between pt-4"> |
||||
|
<div class="d-flex" v-for="newContent in provincialNews" :key="newContent.introId"> |
||||
|
<div class="content-date"> |
||||
|
<div class="content-date-day">{{ $moment(+newContent.publishTime).format('DD') }}</div> |
||||
|
<div class="content-date-year">{{ $moment(+newContent.publishTime).format('YYYY-MM') }}</div> |
||||
|
</div> |
||||
|
<div class="flex-1 new-box-content-jj" @click="openPage('news', '0202', newContent.introId)">{{ newContent.title }}</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- 公司新闻 --> |
||||
|
<div class="flex-1 p-4 flex-column"> |
||||
|
<div class="new-box-title d-flex justify-space-between"> |
||||
|
<div class="d-flex align-start"> |
||||
|
<div class="icon-red mr-1" style="margin-top: 10px;"></div> |
||||
|
<div style="font-size:22px;color: #333;font-weight:600;margin-top:3px;">公司新闻</div> |
||||
|
</div> |
||||
|
<div class="d-flex align-center" style="height: 100%;cursor: pointer;" @click="openPage('news', '0203', '')">更多></div> |
||||
|
</div> |
||||
|
<div class="new-box-content d-flex flex-column justify-space-between pt-4"> |
||||
|
<div class="d-flex" v-for="newContent in companyNews" :key="newContent.introId"> |
||||
|
<div class="content-date"> |
||||
|
<div class="content-date-day">{{ $moment(+newContent.publishTime).format('DD') }}</div> |
||||
|
<div class="content-date-year">{{ $moment(+newContent.publishTime).format('YYYY-MM') }}</div> |
||||
|
</div> |
||||
|
<div class="flex-1 new-box-content-jj" @click="openPage('news', '0203', newContent.introId)">{{ newContent.title }}</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- 图片新闻 --> |
||||
|
<div class="news-img p-4 mt-4 d-flex flex-column"> |
||||
|
<div class="new-box-title d-flex justify-space-between"> |
||||
|
<div class="d-flex align-start"> |
||||
|
<div class="icon-red mr-1" style="margin-top: 10px;"></div> |
||||
|
<div style="font-size:22px;color: #333;font-weight:600;margin-top:3px;">图片新闻</div> |
||||
|
</div> |
||||
|
<div class="d-flex align-center" style="height: 100%;cursor: pointer;" @click="openPage('news', '0204', '')">更多></div> |
||||
|
</div> |
||||
|
<div class="flex-1 flex-column justify-space-between mt-4"> |
||||
|
<div class="flex-1"> |
||||
|
<div class="flex-1 mr-4"> |
||||
|
<a-carousel style="width: 650px" autoplay> |
||||
|
<div class="rotation-box" v-for="newContent in ImgNews1" :key="newContent.introId"> |
||||
|
<img :src="newContent.titleUrl" style="height: 369.5px;width: 100%" alt="" /> |
||||
|
<div class="rotation-div one-text"> |
||||
|
{{ newContent.title }} |
||||
|
</div> |
||||
|
</div> |
||||
|
</a-carousel> |
||||
|
</div> |
||||
|
<div class="news-img-content d-flex flex-column justify-space-between p-4"> |
||||
|
<div class="d-flex" v-for="newContent in ImgNews1" :key="newContent.introId"> |
||||
|
<div class="content-date"> |
||||
|
<div class="content-date-day">{{ $moment(+newContent.publishTime).format('DD') }}</div> |
||||
|
<div class="content-date-year">{{ $moment(+newContent.publishTime).format('YYYY-MM') }}</div> |
||||
|
</div> |
||||
|
<div class="flex-1 new-box-content-jj" @click="openPage('news', '0201', newContent.introId)">{{ newContent.title }}</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="flex-1 mt-4"> |
||||
|
<div class="news-img-content d-flex flex-column justify-space-between p-4"> |
||||
|
<div class="d-flex" v-for="newContent in ImgNews2" :key="newContent.introId"> |
||||
|
<div class="content-date"> |
||||
|
<div class="content-date-day">{{ $moment(+newContent.publishTime).format('DD') }}</div> |
||||
|
<div class="content-date-year">{{ $moment(+newContent.publishTime).format('YYYY-MM') }}</div> |
||||
|
</div> |
||||
|
<div class="flex-1 new-box-content-jj" @click="openPage('news', '0202', newContent.introId)">{{ newContent.title }}</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="flex-1"> |
||||
|
<a-carousel style="width: 650px" autoplay> |
||||
|
<div class="rotation-box" v-for="newContent in ImgNews2" :key="newContent.introId"> |
||||
|
<img :src="newContent.titleUrl" style="height: 369.5px;width: 100%" alt="" /> |
||||
|
<div class="rotation-div one-text"> |
||||
|
{{ newContent.title }} |
||||
|
</div> |
||||
|
</div> |
||||
|
</a-carousel> |
||||
|
</div> |
||||
|
</div> |
||||
|
<div class="flex-1 mt-4"> |
||||
|
<div class="flex-1 mr-4"> |
||||
|
<a-carousel style="width: 650px" autoplay> |
||||
|
<div class="rotation-box" v-for="newContent in ImgNews3" :key="newContent.introId"> |
||||
|
<img :src="newContent.titleUrl" style="height: 369.5px;width: 100%" alt="" /> |
||||
|
<div class="rotation-div one-text"> |
||||
|
{{ newContent.title }} |
||||
|
</div> |
||||
|
</div> |
||||
|
</a-carousel> |
||||
|
</div> |
||||
|
<div class="news-img-content d-flex flex-column justify-space-between p-4"> |
||||
|
<div class="d-flex" v-for="newContent in ImgNews3" :key="newContent.introId"> |
||||
|
<div class="content-date"> |
||||
|
<div class="content-date-day">{{ $moment(+newContent.publishTime).format('DD') }}</div> |
||||
|
<div class="content-date-year">{{ $moment(+newContent.publishTime).format('YYYY-MM') }}</div> |
||||
|
</div> |
||||
|
<div class="flex-1 new-box-content-jj" @click="openPage('news', '0203', newContent.introId)">{{ newContent.title }}</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<!-- 职工风采 --> |
||||
|
<div class="news-demeanor mt-4 p-4 d-flex flex-column"> |
||||
|
<div class="new-box-title d-flex justify-space-between"> |
||||
|
<div class="d-flex align-start"> |
||||
|
<div class="icon-red mr-1" style="margin-top: 10px;"></div> |
||||
|
<div style="font-size:22px;color: #333;font-weight:600;margin-top:3px;">职工风采</div> |
||||
|
</div> |
||||
|
<div class="d-flex align-center" style="height: 100%;cursor: pointer;" @click="openPage('news', '0210', '')">更多></div> |
||||
|
</div> |
||||
|
<div class="mt-4" style="overflow: hidden;"> |
||||
|
<div class="demeanor-content-box"> |
||||
|
<div class="demeanor-content mr-4" v-for="item in sceneStyle" :key="item.introId" @click="openPage('news', '0210', item.introId)"> |
||||
|
<img :src="item.titleUrl" style="height:260px;width:100%;cursor: pointer;" :title="item.title" /> |
||||
|
<div class="one-text-1"> |
||||
|
{{ item.title }} |
||||
|
</div> |
||||
|
</div> |
||||
|
<div |
||||
|
class="demeanor-content mr-4" |
||||
|
v-for="item in sceneStyle" |
||||
|
:key="item.introId + '1'" |
||||
|
@click="openPage('news', '0210', item.introId)" |
||||
|
> |
||||
|
<img :src="item.titleUrl" style="height:260px;width:100%;cursor: pointer;" :title="item.title" /> |
||||
|
<div class="one-text-1"> |
||||
|
{{ item.title }} |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
<BayWindow /> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
import { mapActions } from 'vuex'; |
||||
|
import BayWindow from '@/components/BayWindow/BayWindow.vue'; |
||||
|
|
||||
|
export default { |
||||
|
components: { BayWindow }, |
||||
|
data() { |
||||
|
return { |
||||
|
groupNews: [], |
||||
|
companyNews: [], |
||||
|
provincialNews: [], |
||||
|
ImgNews1: [], |
||||
|
ImgNews2: [], |
||||
|
ImgNews3: [], |
||||
|
sceneStyle: [], |
||||
|
}; |
||||
|
}, |
||||
|
created() { |
||||
|
this.getData('0201', 'groupNews', '0'); |
||||
|
this.getData('0202', 'provincialNews', '0'); |
||||
|
this.getData('0203', 'companyNews', '0'); |
||||
|
this.getData('0201', 'ImgNews1', '1'); |
||||
|
this.getData('0202', 'ImgNews2', '1'); |
||||
|
this.getData('0203', 'ImgNews3', '1'); |
||||
|
this.getData('0210', 'sceneStyle', '1'); |
||||
|
}, |
||||
|
methods: { |
||||
|
...mapActions('home', ['getContent']), |
||||
|
async getData(showPage, list, showType) { |
||||
|
try { |
||||
|
const param = { |
||||
|
showPage, |
||||
|
year: '', |
||||
|
showType, |
||||
|
pageNum: 1, |
||||
|
pageSize: 5, |
||||
|
}; |
||||
|
const res = await this.getContent(param); |
||||
|
this[list] = res.list; |
||||
|
} catch (error) { |
||||
|
console.log('error: ', error); |
||||
|
} |
||||
|
}, |
||||
|
// 打开文章详情 |
||||
|
openPage(path, code, id) { |
||||
|
window.open(`${window.location.href}${path}?code=${code}&introId=${id}`); |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
.demeanor-content-box { |
||||
|
white-space: nowrap; |
||||
|
overflow: hidden; |
||||
|
height: 308px; |
||||
|
animation: 20s move infinite linear; |
||||
|
} |
||||
|
.demeanor-content-box:hover { |
||||
|
animation-play-state: paused; /*动画暂停播放*/ |
||||
|
} |
||||
|
@-webkit-keyframes move { |
||||
|
0% { |
||||
|
margin-left: 0; |
||||
|
} |
||||
|
100% { |
||||
|
margin-left: -1940px; |
||||
|
} |
||||
|
} |
||||
|
@keyframes move { |
||||
|
0% { |
||||
|
margin-left: 0; |
||||
|
} |
||||
|
100% { |
||||
|
margin-left: -1940px; |
||||
|
} |
||||
|
} |
||||
|
.one-text-1 { |
||||
|
width: 100%; |
||||
|
height: 48px; |
||||
|
line-height: 48px; |
||||
|
font-size: 16px; |
||||
|
color: rgb(51, 51, 51); |
||||
|
white-space: nowrap; |
||||
|
overflow: hidden; |
||||
|
text-overflow: ellipsis; |
||||
|
cursor: pointer; |
||||
|
transition: all 0.5s; |
||||
|
} |
||||
|
.one-text-1:hover { |
||||
|
color: #b61412; |
||||
|
} |
||||
|
.rotation-box { |
||||
|
position: relative; |
||||
|
} |
||||
|
.rotation-div { |
||||
|
position: absolute; |
||||
|
bottom: 0; |
||||
|
width: 100%; |
||||
|
height: 42px; |
||||
|
line-height: 42px; |
||||
|
background-color: #b61412; |
||||
|
color: #fff; |
||||
|
font-size: 16px; |
||||
|
padding: 0 16px; |
||||
|
z-index: 10; |
||||
|
} |
||||
|
.demeanor-content { |
||||
|
display: inline-block; |
||||
|
width: 372px; |
||||
|
height: 100%; |
||||
|
} |
||||
|
.news-img-content { |
||||
|
width: 482px; |
||||
|
height: 100%; |
||||
|
background: rgb(245, 245, 245); |
||||
|
} |
||||
|
/deep/.ant-carousel .slick-dots li button { |
||||
|
height: 10px !important; |
||||
|
width: 10px !important; |
||||
|
border-radius: 50%; |
||||
|
} |
||||
|
.ant-carousel >>> .slick-slide { |
||||
|
text-align: center; |
||||
|
height: 369.5px; |
||||
|
/* line-height: 428px; */ |
||||
|
overflow: hidden; |
||||
|
} |
||||
|
.new-box-content-jj { |
||||
|
font-size: 14px; |
||||
|
margin-left: 16px; |
||||
|
cursor: pointer; |
||||
|
} |
||||
|
.content-date { |
||||
|
height: 56px; |
||||
|
width: 56px; |
||||
|
background-color: #b61412; |
||||
|
color: #fff; |
||||
|
border-radius: 4px; |
||||
|
padding: 4px; |
||||
|
} |
||||
|
.content-date-day { |
||||
|
height: 50%; |
||||
|
border-bottom: 1px solid #fff; |
||||
|
font-size: 16px; |
||||
|
font-weight: bold; |
||||
|
text-align: center; |
||||
|
} |
||||
|
.content-date-year { |
||||
|
height: 50%; |
||||
|
font-size: 12px; |
||||
|
line-height: 28px; |
||||
|
text-align: center; |
||||
|
color: rgba(232, 232, 232, 0.8); |
||||
|
} |
||||
|
.new-box-content { |
||||
|
height: 100%; |
||||
|
} |
||||
|
.icon-red { |
||||
|
width: 4px; |
||||
|
height: 22px; |
||||
|
background: #b61412; |
||||
|
} |
||||
|
|
||||
|
.new-box-title { |
||||
|
height: 46px; |
||||
|
width: 100%; |
||||
|
border-bottom: 1px solid #333; |
||||
|
} |
||||
|
.news-box { |
||||
|
height: 518px; |
||||
|
} |
||||
|
.news-box > div { |
||||
|
background-color: #fff; |
||||
|
} |
||||
|
.news-img { |
||||
|
height: 1240px; |
||||
|
background-color: #fff; |
||||
|
} |
||||
|
.news-demeanor { |
||||
|
height: 402px; |
||||
|
background-color: #fff; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,145 @@ |
|||||
|
<template> |
||||
|
<div class="content-1180"> |
||||
|
<div class="d-flex mt-4"> |
||||
|
<LeftNav :code="code" :list="list" class="mr-4" @chanegCode="chanegCode" /> |
||||
|
<div class="flex-1 flex-column"> |
||||
|
<Location /> |
||||
|
<div class="content-detail p-4" :style="{ 'min-height': list.children.length * 56 + 'px' }"> |
||||
|
<ListPage v-if="!introId" :code="code" @changeYear="changeYear" :content="content" @getData="getData" /> |
||||
|
<RichText v-else :rich-obj="introContent" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
import { mapActions } from 'vuex'; |
||||
|
import LeftNav from '@/components/LeftNav/LeftNav.vue'; |
||||
|
import ListPage from '@/components/ListPage/ListPage.vue'; |
||||
|
import RichText from '@/components/RichText/RichText.vue'; |
||||
|
import Location from '@/components/Location/Location.vue'; |
||||
|
|
||||
|
export default { |
||||
|
components: { LeftNav, ListPage, Location, RichText }, |
||||
|
data() { |
||||
|
return { |
||||
|
code: '0201', |
||||
|
list: { |
||||
|
title: '新闻中心', |
||||
|
url: '/news', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '集团新闻', |
||||
|
code: '0201', |
||||
|
}, |
||||
|
{ |
||||
|
title: '省公司新闻', |
||||
|
code: '0202', |
||||
|
}, |
||||
|
{ |
||||
|
title: '公司新闻', |
||||
|
code: '0203', |
||||
|
}, |
||||
|
{ |
||||
|
title: '图片新闻', |
||||
|
code: '0204', |
||||
|
}, |
||||
|
{ |
||||
|
title: '热点专题', |
||||
|
code: '0205', |
||||
|
}, |
||||
|
{ |
||||
|
title: '媒体关注', |
||||
|
code: '0206', |
||||
|
}, |
||||
|
{ |
||||
|
title: '视频新闻', |
||||
|
code: '0207', |
||||
|
}, |
||||
|
{ |
||||
|
title: '专题片', |
||||
|
code: '0208', |
||||
|
}, |
||||
|
{ |
||||
|
title: '企业画册', |
||||
|
code: '0209', |
||||
|
}, |
||||
|
{ |
||||
|
title: '现场风采', |
||||
|
code: '0210', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
year: '2020', |
||||
|
content: {}, |
||||
|
pageNum: 1, |
||||
|
introId: '', |
||||
|
introContent: {}, |
||||
|
}; |
||||
|
}, |
||||
|
watch: { |
||||
|
'$route.query.code'(val) { |
||||
|
if (this.$route.path === this.list.url) { |
||||
|
this.code = val; |
||||
|
this.getContentData(); |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
created() { |
||||
|
this.code = this.$route.query.code; |
||||
|
if (this.$route.query.introId) { |
||||
|
this.introId = this.$route.query.introId; |
||||
|
this.getIntroContent(); |
||||
|
} |
||||
|
this.getContentData(); |
||||
|
}, |
||||
|
methods: { |
||||
|
...mapActions('home', ['getContent', 'getDetail']), |
||||
|
async getContentData() { |
||||
|
try { |
||||
|
const param = { |
||||
|
showPage: this.code, |
||||
|
year: this.year, |
||||
|
showType: '1', |
||||
|
pageNum: this.pageNum, |
||||
|
pageSize: 10, |
||||
|
}; |
||||
|
const data = await this.getContent(param); |
||||
|
console.log('data: ', data); |
||||
|
this.content = data; |
||||
|
} catch (error) {} |
||||
|
}, |
||||
|
// 获取文章信息 |
||||
|
async getIntroContent() { |
||||
|
try { |
||||
|
const param = { |
||||
|
showPage: '', |
||||
|
introId: this.introId, |
||||
|
}; |
||||
|
const data = await this.getDetail(param); |
||||
|
this.introContent = data; |
||||
|
} catch (error) { |
||||
|
console.error('error: ', error); |
||||
|
} |
||||
|
}, |
||||
|
chanegCode(code) { |
||||
|
this.code = code; |
||||
|
this.introId = ''; |
||||
|
}, |
||||
|
changeYear(year) { |
||||
|
this.year = year; |
||||
|
this.getContentData(); |
||||
|
}, |
||||
|
getData(pageNum) { |
||||
|
console.log('pageNum: ', pageNum); |
||||
|
this.pageNum = pageNum; |
||||
|
this.getContentData(); |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
.content-detail { |
||||
|
background: #fff; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,132 @@ |
|||||
|
<template> |
||||
|
<div class="content-1180"> |
||||
|
<div class="d-flex mt-4"> |
||||
|
<LeftNav :code="code" :list="list" class="mr-4" @chanegCode="chanegCode" /> |
||||
|
<div class="flex-1 flex-column"> |
||||
|
<Location /> |
||||
|
<div class="content-detail p-4" :style="{ 'min-height': list.children.length * 56 + 'px' }"> |
||||
|
<RichText :rich-obj="content" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
import { mapActions } from 'vuex'; |
||||
|
import LeftNav from '@/components/LeftNav/LeftNav.vue'; |
||||
|
import RichText from '@/components/RichText/RichText.vue'; |
||||
|
import Location from '@/components/Location/Location.vue'; |
||||
|
|
||||
|
export default { |
||||
|
components: { LeftNav, RichText, Location }, |
||||
|
data() { |
||||
|
return { |
||||
|
code: '0901', |
||||
|
list: { |
||||
|
title: '部门首页', |
||||
|
url: '/department', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '总经理工作部', |
||||
|
code: '0901', |
||||
|
}, |
||||
|
{ |
||||
|
title: '计划营销部', |
||||
|
code: '0902', |
||||
|
}, |
||||
|
{ |
||||
|
title: '财务管理部', |
||||
|
code: '0903', |
||||
|
}, |
||||
|
{ |
||||
|
title: '人力资源部', |
||||
|
code: '0904', |
||||
|
}, |
||||
|
{ |
||||
|
title: '党群工作部', |
||||
|
code: '0905', |
||||
|
}, |
||||
|
{ |
||||
|
title: '纪委办公室(审计部)', |
||||
|
code: '0906', |
||||
|
}, |
||||
|
{ |
||||
|
title: '燃料采购部', |
||||
|
code: '0907', |
||||
|
}, |
||||
|
{ |
||||
|
title: '物资管理部', |
||||
|
code: '0908', |
||||
|
}, |
||||
|
{ |
||||
|
title: '项目开发部', |
||||
|
code: '0909', |
||||
|
}, |
||||
|
{ |
||||
|
title: '燃料质量验收部', |
||||
|
code: '0910', |
||||
|
}, |
||||
|
{ |
||||
|
title: '安全监督部', |
||||
|
code: '0911', |
||||
|
}, |
||||
|
{ |
||||
|
title: '设备部', |
||||
|
code: '0912', |
||||
|
}, |
||||
|
{ |
||||
|
title: '发电部', |
||||
|
code: '0913', |
||||
|
}, |
||||
|
{ |
||||
|
title: '维护部', |
||||
|
code: '0914', |
||||
|
}, |
||||
|
{ |
||||
|
title: '热工专业', |
||||
|
code: '0915', |
||||
|
}, |
||||
|
{ |
||||
|
title: '电气专业', |
||||
|
code: '0916', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
content: {}, |
||||
|
}; |
||||
|
}, |
||||
|
watch: { |
||||
|
'$route.query.code'(val) { |
||||
|
if (this.$route.path === this.list.url) { |
||||
|
this.code = val; |
||||
|
this.getData(this.code); |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
created() { |
||||
|
this.code = this.$route.query.code; |
||||
|
this.getData(this.code); |
||||
|
}, |
||||
|
methods: { |
||||
|
...mapActions('home', ['getDetail']), |
||||
|
async getData(showPage) { |
||||
|
try { |
||||
|
const param = { |
||||
|
showPage, |
||||
|
introId: '', |
||||
|
}; |
||||
|
const data = await this.getDetail(param); |
||||
|
this.content = data; |
||||
|
} catch (error) {} |
||||
|
}, |
||||
|
chanegCode(code) { |
||||
|
this.code = code; |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
.content-detail { |
||||
|
background: #fff; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,88 @@ |
|||||
|
<template> |
||||
|
<div class="content-1180"> |
||||
|
<div class="d-flex mt-4"> |
||||
|
<LeftNav :code="code" :list="list" class="mr-4" @chanegCode="chanegCode" /> |
||||
|
<div class="flex-1 flex-column"> |
||||
|
<Location /> |
||||
|
<div class="content-detail p-4" :style="{ 'min-height': list.children.length * 56 + 'px' }"> |
||||
|
<RichText :rich-obj="content" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
import { mapActions } from 'vuex'; |
||||
|
import LeftNav from '@/components/LeftNav/LeftNav.vue'; |
||||
|
import RichText from '@/components/RichText/RichText.vue'; |
||||
|
import Location from '@/components/Location/Location.vue'; |
||||
|
|
||||
|
export default { |
||||
|
components: { LeftNav, RichText, Location }, |
||||
|
data() { |
||||
|
return { |
||||
|
code: '0601', |
||||
|
list: { |
||||
|
title: '信息公开', |
||||
|
url: '/information', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '基本信息', |
||||
|
code: '0601', |
||||
|
}, |
||||
|
{ |
||||
|
title: '经营管理', |
||||
|
code: '0602', |
||||
|
}, |
||||
|
{ |
||||
|
title: '公司公告', |
||||
|
code: '0603', |
||||
|
}, |
||||
|
{ |
||||
|
title: '社会责任', |
||||
|
code: '0604', |
||||
|
}, |
||||
|
{ |
||||
|
title: '关于信息公开', |
||||
|
code: '0605', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
content: {}, |
||||
|
}; |
||||
|
}, |
||||
|
watch: { |
||||
|
'$route.query.code'(val) { |
||||
|
if (this.$route.path === this.list.url) { |
||||
|
this.code = val; |
||||
|
this.getData(this.code); |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
created() { |
||||
|
this.code = this.$route.query.code; |
||||
|
this.getData(this.code); |
||||
|
}, |
||||
|
methods: { |
||||
|
...mapActions('home', ['getDetail']), |
||||
|
async getData(showPage) { |
||||
|
try { |
||||
|
const param = { |
||||
|
showPage, |
||||
|
introId: '', |
||||
|
}; |
||||
|
const data = await this.getDetail(param); |
||||
|
this.content = data; |
||||
|
} catch (error) {} |
||||
|
}, |
||||
|
chanegCode(code) { |
||||
|
this.code = code; |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
.content-detail { |
||||
|
background: #fff; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,124 @@ |
|||||
|
<template> |
||||
|
<div class="content-1180"> |
||||
|
<div class="d-flex mt-4"> |
||||
|
<LeftNav :code="code" :list="list" class="mr-4" @chanegCode="chanegCode" /> |
||||
|
<div class="flex-1 flex-column"> |
||||
|
<Location /> |
||||
|
<div class="content-detail p-4" :style="{ 'min-height': list.children.length * 56 + 'px' }"> |
||||
|
<ListPage v-if="!introId" :code="code" @changeYear="changeYear" :content="content" @getData="getData" /> |
||||
|
<RichText v-else :rich-obj="introContent" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
import { mapActions } from 'vuex'; |
||||
|
import LeftNav from '@/components/LeftNav/LeftNav.vue'; |
||||
|
import ListPage from '@/components/ListPage/ListPage.vue'; |
||||
|
import RichText from '@/components/RichText/RichText.vue'; |
||||
|
import Location from '@/components/Location/Location.vue'; |
||||
|
|
||||
|
export default { |
||||
|
components: { LeftNav, ListPage, Location, RichText }, |
||||
|
data() { |
||||
|
return { |
||||
|
code: '0501', |
||||
|
list: { |
||||
|
title: '通知公告', |
||||
|
url: '/notice', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '通知', |
||||
|
code: '0501', |
||||
|
}, |
||||
|
{ |
||||
|
title: '通报', |
||||
|
code: '0502', |
||||
|
}, |
||||
|
{ |
||||
|
title: '公告', |
||||
|
code: '0503', |
||||
|
}, |
||||
|
{ |
||||
|
title: '值班安排', |
||||
|
code: '0504', |
||||
|
}, |
||||
|
{ |
||||
|
title: '浮窗', |
||||
|
code: '0505', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
year: '2020', |
||||
|
content: {}, |
||||
|
pageNum: 1, |
||||
|
introId: '', |
||||
|
introContent: {}, |
||||
|
}; |
||||
|
}, |
||||
|
watch: { |
||||
|
'$route.query.code'(val) { |
||||
|
if (this.$route.path === this.list.url) { |
||||
|
this.code = val; |
||||
|
this.getContentData(); |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
created() { |
||||
|
this.code = this.$route.query.code; |
||||
|
if (this.$route.query.introId) { |
||||
|
this.introId = this.$route.query.introId; |
||||
|
this.getIntroContent(); |
||||
|
} |
||||
|
this.getContentData(); |
||||
|
}, |
||||
|
methods: { |
||||
|
...mapActions('home', ['getContent', 'getDetail']), |
||||
|
async getContentData() { |
||||
|
try { |
||||
|
const param = { |
||||
|
showPage: this.code, |
||||
|
year: this.year, |
||||
|
showType: '1', |
||||
|
pageNum: this.pageNum, |
||||
|
pageSize: 10, |
||||
|
}; |
||||
|
const data = await this.getContent(param); |
||||
|
this.content = data; |
||||
|
} catch (error) {} |
||||
|
}, |
||||
|
// 获取文章信息 |
||||
|
async getIntroContent() { |
||||
|
try { |
||||
|
const param = { |
||||
|
showPage: '', |
||||
|
introId: this.introId, |
||||
|
}; |
||||
|
const data = await this.getDetail(param); |
||||
|
this.introContent = data; |
||||
|
} catch (error) { |
||||
|
console.error('error: ', error); |
||||
|
} |
||||
|
}, |
||||
|
chanegCode(code) { |
||||
|
this.code = code; |
||||
|
this.introId = ''; |
||||
|
}, |
||||
|
changeYear(year) { |
||||
|
this.year = year; |
||||
|
this.getContentData(); |
||||
|
}, |
||||
|
getData(pageNum) { |
||||
|
console.log('pageNum: ', pageNum); |
||||
|
this.pageNum = pageNum; |
||||
|
this.getContentData(); |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
.content-detail { |
||||
|
background: #fff; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,128 @@ |
|||||
|
<template> |
||||
|
<div class="content-1180"> |
||||
|
<div class="d-flex mt-4"> |
||||
|
<LeftNav :code="code" :list="list" class="mr-4" @chanegCode="chanegCode" /> |
||||
|
<div class="flex-1 flex-column"> |
||||
|
<Location /> |
||||
|
<div class="content-detail p-4" :style="{ 'min-height': list.children.length * 56 + 'px' }"> |
||||
|
<ListPage v-if="!introId" :code="code" @changeYear="changeYear" :content="content" @getData="getData" /> |
||||
|
<RichText v-else :rich-obj="introContent" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
import { mapActions } from 'vuex'; |
||||
|
import LeftNav from '@/components/LeftNav/LeftNav.vue'; |
||||
|
import ListPage from '@/components/ListPage/ListPage.vue'; |
||||
|
import RichText from '@/components/RichText/RichText.vue'; |
||||
|
import Location from '@/components/Location/Location.vue'; |
||||
|
|
||||
|
export default { |
||||
|
components: { LeftNav, ListPage, Location, RichText }, |
||||
|
data() { |
||||
|
return { |
||||
|
code: '0301', |
||||
|
list: { |
||||
|
title: '党的建设', |
||||
|
url: '/building', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '中心组学习', |
||||
|
code: '0301', |
||||
|
}, |
||||
|
{ |
||||
|
title: '示范党委', |
||||
|
code: '0302', |
||||
|
}, |
||||
|
{ |
||||
|
title: '党支部达标', |
||||
|
code: '0303', |
||||
|
}, |
||||
|
{ |
||||
|
title: '群团工作', |
||||
|
code: '0304', |
||||
|
}, |
||||
|
{ |
||||
|
title: '党建动态', |
||||
|
code: '0305', |
||||
|
}, |
||||
|
{ |
||||
|
title: '党风廉政', |
||||
|
code: '0306', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
year: '2020', |
||||
|
content: {}, |
||||
|
pageNum: 1, |
||||
|
introId: '', |
||||
|
introContent: {}, |
||||
|
}; |
||||
|
}, |
||||
|
watch: { |
||||
|
'$route.query.code'(val) { |
||||
|
if (this.$route.path === this.list.url) { |
||||
|
this.code = val; |
||||
|
this.getContentData(); |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
created() { |
||||
|
this.code = this.$route.query.code; |
||||
|
if (this.$route.query.introId) { |
||||
|
this.introId = this.$route.query.introId; |
||||
|
this.getIntroContent(); |
||||
|
} |
||||
|
this.getContentData(); |
||||
|
}, |
||||
|
methods: { |
||||
|
...mapActions('home', ['getContent', 'getDetail']), |
||||
|
async getContentData() { |
||||
|
try { |
||||
|
const param = { |
||||
|
showPage: this.code, |
||||
|
year: this.year, |
||||
|
showType: '1', |
||||
|
pageNum: this.pageNum, |
||||
|
pageSize: 10, |
||||
|
}; |
||||
|
const data = await this.getContent(param); |
||||
|
this.content = data; |
||||
|
} catch (error) {} |
||||
|
}, |
||||
|
// 获取文章信息 |
||||
|
async getIntroContent() { |
||||
|
try { |
||||
|
const param = { |
||||
|
showPage: '', |
||||
|
introId: this.introId, |
||||
|
}; |
||||
|
const data = await this.getDetail(param); |
||||
|
this.introContent = data; |
||||
|
} catch (error) { |
||||
|
console.error('error: ', error); |
||||
|
} |
||||
|
}, |
||||
|
chanegCode(code) { |
||||
|
this.code = code; |
||||
|
this.introId = ''; |
||||
|
}, |
||||
|
changeYear(year) { |
||||
|
this.year = year; |
||||
|
this.getContentData(); |
||||
|
}, |
||||
|
getData(pageNum) { |
||||
|
console.log('pageNum: ', pageNum); |
||||
|
this.pageNum = pageNum; |
||||
|
this.getContentData(); |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
.content-detail { |
||||
|
background: #fff; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,124 @@ |
|||||
|
<template> |
||||
|
<div class="content-1180"> |
||||
|
<div class="d-flex mt-4"> |
||||
|
<LeftNav :code="code" :list="list" class="mr-4" @chanegCode="chanegCode" /> |
||||
|
<div class="flex-1 flex-column"> |
||||
|
<Location /> |
||||
|
<div class="content-detail p-4" :style="{ 'min-height': list.children.length * 56 + 'px' }"> |
||||
|
<ListPage v-if="!introId" :code="code" @changeYear="changeYear" :content="content" @getData="getData" /> |
||||
|
<RichText v-else :rich-obj="introContent" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
import { mapActions } from 'vuex'; |
||||
|
import LeftNav from '@/components/LeftNav/LeftNav.vue'; |
||||
|
import ListPage from '@/components/ListPage/ListPage.vue'; |
||||
|
import RichText from '@/components/RichText/RichText.vue'; |
||||
|
import Location from '@/components/Location/Location.vue'; |
||||
|
|
||||
|
export default { |
||||
|
components: { LeftNav, ListPage, Location, RichText }, |
||||
|
data() { |
||||
|
return { |
||||
|
code: '0401', |
||||
|
list: { |
||||
|
title: '安全生产', |
||||
|
url: 'production', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '安全会议', |
||||
|
code: '0401', |
||||
|
}, |
||||
|
{ |
||||
|
title: '安全生产记录', |
||||
|
code: '0402', |
||||
|
}, |
||||
|
{ |
||||
|
title: '应急管理', |
||||
|
code: '0403', |
||||
|
}, |
||||
|
{ |
||||
|
title: '三讲一落实', |
||||
|
code: '0404', |
||||
|
}, |
||||
|
{ |
||||
|
title: '曝光台', |
||||
|
code: '0405', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
year: '2020', |
||||
|
content: {}, |
||||
|
pageNum: 1, |
||||
|
introId: '', |
||||
|
introContent: {}, |
||||
|
}; |
||||
|
}, |
||||
|
watch: { |
||||
|
'$route.query.code'(val) { |
||||
|
if (this.$route.path === this.list.url) { |
||||
|
this.code = val; |
||||
|
this.getContentData(); |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
created() { |
||||
|
this.code = this.$route.query.code; |
||||
|
if (this.$route.query.introId) { |
||||
|
this.introId = this.$route.query.introId; |
||||
|
this.getIntroContent(); |
||||
|
} |
||||
|
this.getContentData(); |
||||
|
}, |
||||
|
methods: { |
||||
|
...mapActions('home', ['getContent', 'getDetail']), |
||||
|
async getContentData() { |
||||
|
try { |
||||
|
const param = { |
||||
|
showPage: this.code, |
||||
|
year: this.year, |
||||
|
showType: '1', |
||||
|
pageNum: this.pageNum, |
||||
|
pageSize: 10, |
||||
|
}; |
||||
|
const data = await this.getContent(param); |
||||
|
this.content = data; |
||||
|
} catch (error) {} |
||||
|
}, |
||||
|
// 获取文章信息 |
||||
|
async getIntroContent() { |
||||
|
try { |
||||
|
const param = { |
||||
|
showPage: '', |
||||
|
introId: this.introId, |
||||
|
}; |
||||
|
const data = await this.getDetail(param); |
||||
|
this.introContent = data; |
||||
|
} catch (error) { |
||||
|
console.error('error: ', error); |
||||
|
} |
||||
|
}, |
||||
|
chanegCode(code) { |
||||
|
this.code = code; |
||||
|
this.introId = ''; |
||||
|
}, |
||||
|
changeYear(year) { |
||||
|
this.year = year; |
||||
|
this.getContentData(); |
||||
|
}, |
||||
|
getData(pageNum) { |
||||
|
console.log('pageNum: ', pageNum); |
||||
|
this.pageNum = pageNum; |
||||
|
this.getContentData(); |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
.content-detail { |
||||
|
background: #fff; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,100 @@ |
|||||
|
<template> |
||||
|
<div class="content-1180"> |
||||
|
<div class="d-flex mt-4"> |
||||
|
<LeftNav :code="code" :list="list" class="mr-4" @chanegCode="chanegCode" /> |
||||
|
<div class="flex-1 flex-column"> |
||||
|
<Location /> |
||||
|
<div class="content-detail p-4" :style="{ 'min-height': list.children.length * 56 + 'px' }"> |
||||
|
<RichText :rich-obj="content" /> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</div> |
||||
|
</template> |
||||
|
<script> |
||||
|
import { mapActions } from 'vuex'; |
||||
|
import LeftNav from '@/components/LeftNav/LeftNav.vue'; |
||||
|
import RichText from '@/components/RichText/RichText.vue'; |
||||
|
import Location from '@/components/Location/Location.vue'; |
||||
|
|
||||
|
export default { |
||||
|
components: { LeftNav, RichText, Location }, |
||||
|
data() { |
||||
|
return { |
||||
|
code: '0801', |
||||
|
list: { |
||||
|
title: '制度资料', |
||||
|
url: '/system', |
||||
|
children: [ |
||||
|
{ |
||||
|
title: '集团公司制度', |
||||
|
code: '0801', |
||||
|
}, |
||||
|
{ |
||||
|
title: '山西公司制度', |
||||
|
code: '0802', |
||||
|
}, |
||||
|
{ |
||||
|
title: '行业标准与制度', |
||||
|
code: '0803', |
||||
|
}, |
||||
|
{ |
||||
|
title: '公司制度', |
||||
|
code: '0804', |
||||
|
}, |
||||
|
{ |
||||
|
title: '地方规章', |
||||
|
code: '0805', |
||||
|
}, |
||||
|
{ |
||||
|
title: '培训课件', |
||||
|
code: '0806', |
||||
|
}, |
||||
|
{ |
||||
|
title: '培训影像', |
||||
|
code: '0807', |
||||
|
}, |
||||
|
{ |
||||
|
title: '科技创新', |
||||
|
code: '0808', |
||||
|
}, |
||||
|
], |
||||
|
}, |
||||
|
content: {}, |
||||
|
}; |
||||
|
}, |
||||
|
watch: { |
||||
|
'$route.query.code'(val) { |
||||
|
if (this.$route.path === this.list.url) { |
||||
|
this.code = val; |
||||
|
this.getData(this.code); |
||||
|
} |
||||
|
}, |
||||
|
}, |
||||
|
created() { |
||||
|
this.code = this.$route.query.code; |
||||
|
this.getData(this.code); |
||||
|
}, |
||||
|
methods: { |
||||
|
...mapActions('home', ['getDetail']), |
||||
|
async getData(showPage) { |
||||
|
try { |
||||
|
const param = { |
||||
|
showPage, |
||||
|
introId: '', |
||||
|
}; |
||||
|
const data = await this.getDetail(param); |
||||
|
this.content = data; |
||||
|
} catch (error) {} |
||||
|
}, |
||||
|
chanegCode(code) { |
||||
|
this.code = code; |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
||||
|
<style scoped> |
||||
|
.content-detail { |
||||
|
background: #fff; |
||||
|
} |
||||
|
</style> |
@ -0,0 +1,133 @@ |
|||||
|
const path = require('path'); |
||||
|
const productionGzipExtensions = /\.(js|css|json|txt|html|ico|svg|ttf|woff|woff2)(\?.*)?$/i; |
||||
|
const CompressionWebpackPlugin = require('compression-webpack-plugin'); |
||||
|
|
||||
|
const resolve = dir => path.join(__dirname, dir); |
||||
|
const isPro = process.env.VUE_APP_NODE_ENV === 'production'; |
||||
|
const publicPath = process.env.VUE_APP_PUBLIC_PATH; |
||||
|
const proxyUrl = process.env.VUE_APP_PROXY_URL; |
||||
|
const apiUrl = process.env.VUE_APP_API_URL; |
||||
|
const title = process.env.VUE_APP_TITLE; |
||||
|
// console.log('proxyUrl: ', proxyUrl);
|
||||
|
// console.log('apiUrl: ', apiUrl);
|
||||
|
|
||||
|
// 本地环境是否需要使用cdn
|
||||
|
const devNeedCdn = true; |
||||
|
|
||||
|
// cdn 链接及配置
|
||||
|
const cdn = { |
||||
|
css: [ |
||||
|
'https://cdn.jsdelivr.net/npm/@mdi/font@5.x/css/materialdesignicons.min.css', |
||||
|
'https://cdn.bootcdn.net/ajax/libs/ant-design-vue/1.6.5/antd.min.css', |
||||
|
], |
||||
|
js: [ |
||||
|
isPro ? 'https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.min.js' : 'https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.js', |
||||
|
'https://cdn.bootcdn.net/ajax/libs/vue-router/3.4.3/vue-router.min.js', |
||||
|
'https://cdn.bootcdn.net/ajax/libs/vuex/3.5.1/vuex.min.js', |
||||
|
'https://cdn.bootcdn.net/ajax/libs/moment.js/2.9.0/moment.min.js', |
||||
|
'https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.20/lodash.min.js', |
||||
|
'https://cdn.bootcdn.net/ajax/libs/axios/0.20.0/axios.min.js', |
||||
|
'https://cdn.bootcdn.net/ajax/libs/ant-design-vue/1.6.5/antd.min.js', |
||||
|
], |
||||
|
// externals: {
|
||||
|
// vue: 'Vue',
|
||||
|
// vuex: 'Vuex',
|
||||
|
// 'vue-router': 'VueRouter',
|
||||
|
// moment: 'moment',
|
||||
|
// axios: 'axios',
|
||||
|
// 'ant-design-vue': 'antd',
|
||||
|
// lodash: '_',
|
||||
|
// },
|
||||
|
}; |
||||
|
|
||||
|
module.exports = { |
||||
|
lintOnSave: true, |
||||
|
publicPath: isPro ? publicPath : '/', |
||||
|
devServer: { |
||||
|
open: true, |
||||
|
overlay: { |
||||
|
warnings: false, |
||||
|
errors: true, |
||||
|
}, |
||||
|
proxy: { |
||||
|
[proxyUrl]: { |
||||
|
target: apiUrl, // 代理接口
|
||||
|
changeOrigin: true, |
||||
|
pathRewrite: { [`^${proxyUrl}`]: '' }, |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
productionSourceMap: false, // 去掉生产环境的sourcemap 加快构建速度
|
||||
|
|
||||
|
configureWebpack: { |
||||
|
// provide the app's title in webpack's name field, so that
|
||||
|
// it can be accessed in index.html to inject the correct title.
|
||||
|
|
||||
|
name: title, |
||||
|
resolve: { |
||||
|
alias: { |
||||
|
'~': __dirname, |
||||
|
'@': resolve('src'), |
||||
|
assets: resolve('src/assets'), |
||||
|
views: resolve('src/views'), |
||||
|
components: resolve('src/components'), |
||||
|
common: resolve('src/common'), |
||||
|
config: resolve('src/config'), |
||||
|
router: resolve('src/router'), |
||||
|
store: resolve('src/store'), |
||||
|
util: resolve('src/util'), |
||||
|
request: resolve('src/request'), |
||||
|
}, |
||||
|
}, |
||||
|
plugins: isPro |
||||
|
? [ |
||||
|
new CompressionWebpackPlugin({ |
||||
|
test: productionGzipExtensions, |
||||
|
threshold: 10240, |
||||
|
deleteOriginalAssets: false, |
||||
|
}), |
||||
|
] |
||||
|
: [], |
||||
|
externals: isPro || devNeedCdn ? cdn.externals : {}, |
||||
|
}, |
||||
|
|
||||
|
chainWebpack(config) { |
||||
|
if (isPro) { |
||||
|
config.optimization |
||||
|
.runtimeChunk('single') |
||||
|
.minimize(true) |
||||
|
.splitChunks({ |
||||
|
chunks: 'all', |
||||
|
maxInitialRequests: Infinity, |
||||
|
minSize: 20000, // 依赖包超过20000bit将被单独打包
|
||||
|
cacheGroups: { |
||||
|
vendor: { |
||||
|
test: /[\\/]node_modules[\\/]/, |
||||
|
name(module) { |
||||
|
// get the name. E.g. node_modules/packageName/not/this/part.js
|
||||
|
// or node_modules/packageName
|
||||
|
const packageName = module.context.match(/[\\/]node_modules[\\/](.*?)([\\/]|$)/)[1]; |
||||
|
// npm package names are URL-safe, but some servers don't like @ symbols
|
||||
|
return `npm.${packageName.replace('@', '')}`; |
||||
|
}, |
||||
|
}, |
||||
|
}, |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
// set svg-sprite-loader
|
||||
|
// config.module
|
||||
|
// .rule('svg')
|
||||
|
// .exclude.add(resolve('src/icons'))
|
||||
|
// .end();
|
||||
|
// config.module
|
||||
|
// .rule('icons')
|
||||
|
// .test(/\.svg$/)
|
||||
|
// .include.add(resolve('src/icons'))
|
||||
|
// .end()
|
||||
|
// .use('svg-sprite-loader')
|
||||
|
// .loader('svg-sprite-loader')
|
||||
|
// .options({ symbolId: 'icon-[name]' })
|
||||
|
// .end();
|
||||
|
}, |
||||
|
}; |