提交
							
								
								
									
										24
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,24 @@ | ||||
| # project | ||||
| 
 | ||||
| ## Project setup | ||||
| ``` | ||||
| npm install | ||||
| ``` | ||||
| 
 | ||||
| ### Compiles and hot-reloads for development | ||||
| ``` | ||||
| npm run serve | ||||
| ``` | ||||
| 
 | ||||
| ### Compiles and minifies for production | ||||
| ``` | ||||
| npm run build | ||||
| ``` | ||||
| 
 | ||||
| ### Lints and fixes files | ||||
| ``` | ||||
| npm run lint | ||||
| ``` | ||||
| 
 | ||||
| ### Customize configuration | ||||
| See [Configuration Reference](https://cli.vuejs.org/config/). | ||||
							
								
								
									
										28201
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										68
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,68 @@ | ||||
| { | ||||
|   "name": "Survey", | ||||
|   "version": "2.0.0", | ||||
|   "private": true, | ||||
|   "scripts": { | ||||
|     "serve": "vue-cli-service serve", | ||||
|     "build": "vue-cli-service build", | ||||
|     "build:prod": "vue-cli-service build --mode production", | ||||
|     "lint": "vue-cli-service lint", | ||||
|     "postinstall": "patch-package" | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "@vue-office/docx": "^1.3.0", | ||||
|     "@vue-office/pdf": "^1.5.4", | ||||
|     "axios": "^1.6.0", | ||||
|     "bootstrap": "^5.3.2", | ||||
|     "bootstrap-icons": "^1.10.5", | ||||
|     "core-js": "^3.8.3", | ||||
|     "docx-preview": "^0.1.20", | ||||
|     "easyscroller": "^1.0.1", | ||||
|     "element-ui": "^2.15.14", | ||||
|     "jquery": "^3.7.1", | ||||
|     "pdfh5": "^1.4.7", | ||||
|     "pdfjs": "^2.5.3", | ||||
|     "pdfjs-dist": "^2.16.105", | ||||
|     "popper.js": "^1.16.1", | ||||
|     "sass-loader": "^13.3.2", | ||||
|     "vue": "^2.6.14", | ||||
|     "vue-demi": "^0.13.11", | ||||
|     "vue-doc-preview": "^0.3.2", | ||||
|     "vue-pdf": "^4.3.0", | ||||
|     "vue-router": "^3.5.1", | ||||
|     "vueshowpdf": "^1.1.2", | ||||
|     "vuex": "^3.6.2" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@babel/core": "^7.12.16", | ||||
|     "@babel/eslint-parser": "^7.12.16", | ||||
|     "@vue/cli-plugin-babel": "~5.0.0", | ||||
|     "@vue/cli-plugin-eslint": "~5.0.0", | ||||
|     "@vue/cli-plugin-router": "~5.0.0", | ||||
|     "@vue/cli-plugin-vuex": "~5.0.0", | ||||
|     "@vue/cli-service": "~5.0.0", | ||||
|     "eslint": "^7.32.0", | ||||
|     "eslint-plugin-vue": "^8.0.3", | ||||
|     "patch-package": "^8.0.0", | ||||
|     "vue-template-compiler": "^2.6.14" | ||||
|   }, | ||||
|   "eslintConfig": { | ||||
|     "root": true, | ||||
|     "env": { | ||||
|       "node": true | ||||
|     }, | ||||
|     "extends": [ | ||||
|       "plugin:vue/essential", | ||||
|       "eslint:recommended" | ||||
|     ], | ||||
|     "parserOptions": { | ||||
|       "parser": "@babel/eslint-parser" | ||||
|     }, | ||||
|     "rules": {} | ||||
|   }, | ||||
|   "browserslist": [ | ||||
|     "> 1%", | ||||
|     "last 2 versions", | ||||
|     "not dead" | ||||
|   ] | ||||
| } | ||||
							
								
								
									
										
											BIN
										
									
								
								public/favicon.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 4.2 KiB | 
							
								
								
									
										28
									
								
								public/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,28 @@ | ||||
| <!DOCTYPE html> | ||||
| <html lang=""> | ||||
| 
 | ||||
| <head> | ||||
|   <meta charset="utf-8"> | ||||
|   <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||||
|   <!-- <meta name="viewport" content="width=device-width,initial-scale=1.0"> --> | ||||
|   <meta name="viewport" | ||||
|     content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no, target-densitydpi=device-dpi, orientation=landscape"> | ||||
| 
 | ||||
|   <link rel="icon" href="<%= BASE_URL %>favicon.ico"> | ||||
| 
 | ||||
|   <!-- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css"> --> | ||||
|   <title> | ||||
|     <!-- <%= htmlWebpackPlugin.options.title %> --> | ||||
|   </title> | ||||
| </head> | ||||
| 
 | ||||
| <body> | ||||
|   <noscript> | ||||
|     <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. | ||||
|         Please enable it to continue.</strong> | ||||
|   </noscript> | ||||
|   <div id="app"></div> | ||||
|   <!-- built files will be auto injected --> | ||||
| </body> | ||||
| 
 | ||||
| </html> | ||||
							
								
								
									
										
											BIN
										
									
								
								public/small-logo.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 6.1 KiB | 
							
								
								
									
										13
									
								
								src/App.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,13 @@ | ||||
| <template> | ||||
|   <div id="app"> | ||||
|     <router-view /> | ||||
|   </div> | ||||
| </template> | ||||
| <script> | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| </script> | ||||
| <style> | ||||
| 
 | ||||
| </style> | ||||
							
								
								
									
										19
									
								
								src/api/login.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,19 @@ | ||||
| import request from "./requset"; | ||||
| 
 | ||||
| //获取题目
 | ||||
| export function huoquUrl(id) { | ||||
|   // console.log();
 | ||||
|   return request({ | ||||
|     url: `system/questionnaire/getDetail?questionnaireId=${id}`, | ||||
|     method: 'get' | ||||
|   }) | ||||
| } | ||||
| //提交题目
 | ||||
| export function postUrl(data) { | ||||
|   return request({ | ||||
|     url: `system/questionRes`, | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
							
								
								
									
										19
									
								
								src/api/meet.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,19 @@ | ||||
| import request from "./requset"; | ||||
| 
 | ||||
| //获取题目1
 | ||||
| export function huoquUrl1(id) { | ||||
|   return request({ | ||||
|     url: `/system/quality/getDetail?qualityId=${id}`, | ||||
|     method: 'get', | ||||
|   }) | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| //提交题目1
 | ||||
| export function postUrl1(data) { | ||||
|   return request({ | ||||
|     url: `/system/qualityEvaluationRes`, | ||||
|     method: 'post', | ||||
|     data | ||||
|   }) | ||||
| } | ||||
							
								
								
									
										38
									
								
								src/api/requset.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,38 @@ | ||||
| import axios from 'axios' | ||||
| 
 | ||||
| // create an axios instance
 | ||||
| const service = axios.create({ | ||||
| 
 | ||||
|   // baseURL: 'https://hr.fygroup.com:5210', // url = base url + request url
 | ||||
|   // baseURL: 'http://192.168.3.228:8080', // url = base url + request url、
 | ||||
|   // baseURL: 'http://192.168.3.13:8080', // url = base url + request urlz
 | ||||
|   // baseURL: `http://58.223.177.154:8080`,//线上
 | ||||
|   baseURL: `http://192.168.3.114:8080`, | ||||
|   withCredentials: true, // send cookies when cross-domain requests
 | ||||
|   timeout: 5000 // request timeout
 | ||||
| }) | ||||
| 
 | ||||
| // request interceptor
 | ||||
| service.interceptors.request.use( | ||||
|   config => config | ||||
| ) | ||||
| 
 | ||||
| // response interceptor
 | ||||
| service.interceptors.response.use( | ||||
|   /** | ||||
|    * If you want to get http information such as headers or status | ||||
|    * Please return  response => response | ||||
|   */ | ||||
| 
 | ||||
|   /** | ||||
|    * Determine the request status by custom code | ||||
|    * Here is just an example | ||||
|    * You can also judge the status by HTTP Status Code | ||||
|    */ | ||||
|   response => { | ||||
|     return response.data; | ||||
|   } | ||||
| ) | ||||
| 
 | ||||
| export default service | ||||
| 
 | ||||
							
								
								
									
										
											BIN
										
									
								
								src/assets/002.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 158 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/01.mp3
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								src/assets/02.mp3
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								src/assets/03.mp3
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								src/assets/d3f792d7344fb0285e810db753ce1fa.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 62 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/assets/logo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 6.7 KiB | 
							
								
								
									
										200
									
								
								src/components/Footer.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,200 @@ | ||||
| <template> | ||||
|   <!-- 底部 --> | ||||
|   <footer> | ||||
|     <div class="bottom-imgs"> | ||||
|       <img class="footer-logo" :src="require('@/imgs/logo 拷贝 2.png')" @click="toHome" /> | ||||
|     </div> | ||||
|     <a href="https://beian.miit.gov.cn "><img class="sheld" :src="require('@/imgs/图层 105.png')" alt="" /></a> | ||||
|     <div class="middle-msgs"> | ||||
|       <img :src="require(`@/imgs/${footImg}.png`)" alt=""> | ||||
|       <div class="connect"> | ||||
|         <a href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=32070602010094"></a> | ||||
|       </div> | ||||
|       <div class="aboutUs"> | ||||
|         <a href="http://www.jsxinyuansu.com/"></a> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div class="wxgzh-all"> | ||||
|       <div class="wxgzh" v-for="(s, f) in 3" :key="f"> | ||||
|         <img :src="require('@/imgs/wxewm.png')" alt="" /> | ||||
|         <p>微信公众号</p> | ||||
|       </div> | ||||
|     </div> | ||||
|   </footer> | ||||
|   <!-- <div class="modelBtm"> | ||||
|     <span class="msg"> | ||||
|       <p>版权所有:连云港市革命纪念馆</p> | ||||
|       <p>苏ICP备2023013855号</p> | ||||
|     </span> | ||||
|   </div> --> | ||||
| </template> | ||||
| <script> | ||||
| export default { | ||||
|   name: "FootPart", | ||||
|   props: { | ||||
|     msg: String, | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       footImg: '', | ||||
|       lang:'' | ||||
|     } | ||||
|   }, | ||||
|   beforeMount() { | ||||
|     this.lang = localStorage.getItem('langtype') | ||||
|     this.footImg = this.lang + 'Footer' | ||||
|     console.log(this.footImg); | ||||
|   }, | ||||
|   methods:{ | ||||
|     toHome(){ | ||||
|       if(this.lang == 'cn'){ | ||||
|         this.$router.push('/') | ||||
|       }else{ | ||||
|         this.$router.push('/foreignlang') | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| }; | ||||
| </script> | ||||
| <style scoped> | ||||
| /* 底部信息 */ | ||||
| footer { | ||||
|   height: 200px; | ||||
|   padding: 5% 0; | ||||
|   box-sizing: border-box; | ||||
|   background-image: url("@/imgs/图层 49.png"); | ||||
|   background-size: cover; | ||||
|   background-repeat: no-repeat; | ||||
|   display: flex; | ||||
|   position: relative; | ||||
| } | ||||
| 
 | ||||
| .footer-logo { | ||||
|   width: 25%; | ||||
|   height: 35%; | ||||
|   position: absolute; | ||||
|   left: 4%; | ||||
|   top: 30%; | ||||
| } | ||||
| 
 | ||||
| .sheld { | ||||
|   width: 50px; | ||||
|   height: 60px; | ||||
|   position: absolute; | ||||
|   top: 32%; | ||||
|   left: 27%; | ||||
| } | ||||
| 
 | ||||
| .middle-msgs { | ||||
|   width: 35%; | ||||
|   /* height: 100px; */ | ||||
|   margin-left: 10px; | ||||
|   overflow: hidden; | ||||
|   /* background-image: url('../imgs/cnFooter.png'); */ | ||||
|   background-size: contain; | ||||
|   background-repeat: no-repeat; | ||||
|   position: absolute; | ||||
|   top: 30%; | ||||
|   left: 32%; | ||||
| } | ||||
| 
 | ||||
| .connect { | ||||
|   width: 320px; | ||||
|   height: 25px; | ||||
|   position: absolute; | ||||
|   top: 0; | ||||
|   left: 45%; | ||||
|   z-index: 999; | ||||
|   /* background-color: #fff; */ | ||||
| } | ||||
| 
 | ||||
| .connect a { | ||||
|   width: 100%; | ||||
|   height: 100%; | ||||
|   display: block; | ||||
| } | ||||
| 
 | ||||
| .aboutUs { | ||||
|   width: 300px; | ||||
|   height: 25px; | ||||
|   position: absolute; | ||||
|   bottom: 0; | ||||
|   left: 0; | ||||
|   z-index: 999; | ||||
| } | ||||
| .aboutUs a { | ||||
|   width: 100%; | ||||
|   height: 100%; | ||||
|   display: block; | ||||
| } | ||||
| 
 | ||||
| .wxgzh-all { | ||||
|   position: absolute; | ||||
|   top: 25%; | ||||
|   left: 67%; | ||||
|   display: flex; | ||||
| } | ||||
| 
 | ||||
| .wxgzh { | ||||
|   margin: 0 5px; | ||||
| } | ||||
| 
 | ||||
| .wxgzh img { | ||||
|   width: 80%; | ||||
|   height: 75%; | ||||
|   display: block; | ||||
|   margin: 0 auto; | ||||
| } | ||||
| 
 | ||||
| .wxgzh p { | ||||
|   width: 100%; | ||||
|   height: 15px; | ||||
|   font-size: 14px; | ||||
|   font-family: Microsoft YaHei; | ||||
|   font-weight: 400; | ||||
|   color: #f7f5f5; | ||||
|   line-height: 18px; | ||||
|   text-align: center; | ||||
| } | ||||
| 
 | ||||
| .modelBtm { | ||||
|   width: 100%; | ||||
|   height: 289px; | ||||
|   position: static; | ||||
|   bottom: 0; | ||||
|   display: none; | ||||
|   background-image: url('../imgs/底部背景.png'); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| .msg { | ||||
|   width: 100%; | ||||
|   display: flex; | ||||
|   flex-wrap: wrap; | ||||
|   padding-top: 200px; | ||||
|   box-sizing: border-box; | ||||
| } | ||||
| 
 | ||||
| .msg p { | ||||
|   width: 100%; | ||||
|   display: block; | ||||
|   text-align: center; | ||||
|   margin: 5px 0; | ||||
|   font-size: 18px; | ||||
|   font-family: Microsoft YaHei; | ||||
|   font-weight: 400; | ||||
|   color: #F7F5F5; | ||||
|   line-height: 18px; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| @media screen and (min-width:0px) and (max-width: 992px) { | ||||
|   footer { | ||||
|     display: none; | ||||
|   } | ||||
| 
 | ||||
|   .modelBtm { | ||||
|     display: block; | ||||
|   } | ||||
| }</style> | ||||
							
								
								
									
										150
									
								
								src/components/Mobilehis.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,150 @@ | ||||
| <template> | ||||
|   <div class="his-box"> | ||||
|     <div class="box-title"> | ||||
|       <h2>文物</h2> | ||||
|       <p @click="getMore">更多...</p> | ||||
|     </div> | ||||
|     <div class="img-box"> | ||||
|       <div v-for="(item, index) in relicsList" :key="index" @click="tosingle(item)"> | ||||
|         <img :src="item.coverImage" alt="" /> | ||||
|         <span>{{ item.title }}</span> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
| </template> | ||||
| <script> | ||||
| import axios from "axios"; | ||||
| export default { | ||||
|   name: "hisView", | ||||
|   components: {}, | ||||
|   mixins: [], | ||||
|   props: {}, | ||||
|   data() { | ||||
|     return { | ||||
|       arr: [], | ||||
|       relicsList: [], | ||||
|     }; | ||||
|   }, | ||||
|   computed: {}, | ||||
|   watch: {}, | ||||
|   beforeMount() { | ||||
|     this.arr = localStorage.getItem('atcList') == null ? this.getData() : JSON.parse(localStorage.getItem('atcList')); | ||||
|     this.relicsList = localStorage.getItem('mobileHis') == null ? this.getList() : JSON.parse(localStorage.getItem('mobileHis')); | ||||
|   }, | ||||
|   methods: { | ||||
|     getData() { | ||||
|       axios.post("api/door/ArticleList").then((res) => { | ||||
|         this.arr = res.data.rows; | ||||
|         localStorage.setItem("atcList", JSON.stringify(this.arr)); | ||||
| 
 | ||||
|         this.getList(); | ||||
|       }); | ||||
|     }, | ||||
|     tosingle(item) { | ||||
|       localStorage.setItem("indexList", "文物"); | ||||
|       this.$router.push(`/essay/${item.id}`).then(() => { | ||||
|         location.reload(); | ||||
|       }); | ||||
|     }, | ||||
|     getMore() { | ||||
|       this.$router.push(`/essaylist/文物`).then(() => { | ||||
|         location.reload(); | ||||
|       }); | ||||
|     }, | ||||
|     getList() { | ||||
|       let testarr = []; | ||||
|       this.arr.forEach((element) => { | ||||
|         if (element.tags == "50") { | ||||
|           if ( | ||||
|             element.category.categoryName == "文物" && | ||||
|             element.coverImage != "" | ||||
|           ) { | ||||
|             element.createTime = element.createTime.split(" ")[0]; | ||||
|             element.coverImage = "http://192.168.3.155" + element.coverImage; | ||||
|             testarr.push(element); | ||||
|           } | ||||
|         } | ||||
|       }); | ||||
|       this.relicsList = testarr.splice(0, 4); | ||||
|       localStorage.setItem("mobileHis", JSON.stringify(this.relicsList)); | ||||
|     }, | ||||
|   }, | ||||
| }; | ||||
| </script> | ||||
| <style scoped> | ||||
| .his-box { | ||||
|   width: 100%; | ||||
|   display: none; | ||||
|   margin: 50px 0; | ||||
| } | ||||
| 
 | ||||
| .img-box { | ||||
|   display: flex; | ||||
|   flex-wrap: wrap; | ||||
|   justify-content: space-around; | ||||
| } | ||||
| 
 | ||||
| .box-title { | ||||
|   width: 100%; | ||||
|   padding: 0 20px; | ||||
|   box-sizing: border-box; | ||||
|   justify-content: space-between; | ||||
|   display: flex; | ||||
|   margin-bottom: 20px; | ||||
| } | ||||
| 
 | ||||
| .box-title h2 { | ||||
|   width: 100px; | ||||
|   height: 50px; | ||||
|   text-align: center; | ||||
|   font-size: 34px; | ||||
|   font-family: Microsoft YaHei; | ||||
|   font-weight: 400; | ||||
|   color: #2a2a2a; | ||||
|   border-bottom: 5px solid #9c1306; | ||||
| } | ||||
| 
 | ||||
| .box-title p { | ||||
|   width: 80px; | ||||
|   height: 40px; | ||||
|   font-size: 22px; | ||||
|   font-family: Microsoft YaHei; | ||||
|   font-weight: 400; | ||||
|   color: #bbb7b7; | ||||
|   line-height: 40px; | ||||
| } | ||||
| 
 | ||||
| .img-box div { | ||||
|   width: 45%; | ||||
|   height: 380px; | ||||
|   margin: 0 5px 20px; | ||||
|   box-shadow: 5px 5px 5px #929292; | ||||
| } | ||||
| 
 | ||||
| .img-box img { | ||||
|   width: 100%; | ||||
|   height: 266px; | ||||
|   display: flex; | ||||
| } | ||||
| 
 | ||||
| .img-box span { | ||||
|   width: 100%; | ||||
|   height: 105px; | ||||
|   display: block; | ||||
|   background-color: #fff; | ||||
|   font-size: 26px; | ||||
|   font-family: Microsoft YaHei; | ||||
|   font-weight: 400; | ||||
|   color: #2c2b2b; | ||||
|   line-height: 38px; | ||||
|   text-align: center; | ||||
|   overflow: hidden; | ||||
|   text-overflow: ellipsis; | ||||
|   white-space: nowrap; | ||||
| } | ||||
| 
 | ||||
| @media screen and (min-width: 0px) and (max-width: 992px) { | ||||
|   .his-box { | ||||
|     display: block; | ||||
|   } | ||||
| }</style> | ||||
							
								
								
									
										148
									
								
								src/components/Mobiletime.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,148 @@ | ||||
| <template> | ||||
|   <div class="all"> | ||||
|     <div class="travell"> | ||||
|       <div class="left"> | ||||
|         <span> | ||||
|           <img :src="require('@/imgs/时钟.png')" alt="" /> | ||||
|           开馆时间:9:00—17:00</span> | ||||
|         <span>(周一闭馆)</span> | ||||
|       </div> | ||||
|       <div class="right"> | ||||
|         <span><img :src="require('@/imgs/旅客.png')" alt="" /> 当前在馆人数: | ||||
|           <p>{{ inHall }}人</p> | ||||
|         </span> | ||||
|         <span>当前游览舒适度:{{ comfort }}</span> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div class="serve"> | ||||
|       <div> | ||||
|         <router-link to="http://www.backlightvr.com/tour/0738e24d171e6b6a"> | ||||
|           <img :src="require('@/imgs/数字纪念馆.png')" alt="" /> | ||||
|           <p>数字纪念馆</p> | ||||
|         </router-link> | ||||
|       </div> | ||||
|       <div> | ||||
|         <a href="http://wjyl.lygjng.com/lygjng"> | ||||
|           <img :src="require('@/imgs/清明祭英烈.png')" alt="" @click="toworship" /> | ||||
|           <p>网祭英烈</p> | ||||
|         </a> | ||||
|       </div> | ||||
|       <div> | ||||
|         <a href="jqyy.lygjng.com/index/index/yy_wxjng"> | ||||
|           <img :src="require('@/imgs/预约服务.png')" alt="" /> | ||||
|           <p>预约服务</p> | ||||
|         </a> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
| </template> | ||||
| <script> | ||||
| import axios from "axios"; | ||||
| export default { | ||||
|   name: "travell", | ||||
|   components: {}, | ||||
|   mixins: [], | ||||
|   props: {}, | ||||
|   data() { | ||||
|     return { | ||||
|       comfort: "舒服", | ||||
|       inHall: 0, | ||||
|     }; | ||||
|   }, | ||||
|   computed: {}, | ||||
|   watch: {}, | ||||
|   mounted() { | ||||
|     axios.get("/getp/total").then((res) => { | ||||
|       this.inHall = res.data.split(":")[1].split("}")[0] * 1; | ||||
|       if (this.inHall < 500) { | ||||
|         this.comfort = "舒服"; | ||||
|       } else { | ||||
|         this.comfort = "正常"; | ||||
|       } | ||||
|     }); | ||||
|   }, | ||||
|   methods: {}, | ||||
| }; | ||||
| </script> | ||||
| <style scoped> | ||||
| * { | ||||
|   margin: 0; | ||||
|   padding: 0; | ||||
| } | ||||
| 
 | ||||
| .all { | ||||
|   display: none; | ||||
| } | ||||
| 
 | ||||
| .travell { | ||||
|   width: 100%; | ||||
|   height: 110px; | ||||
|   display: flex; | ||||
|   border-bottom: 1px solid #fff; | ||||
| } | ||||
| 
 | ||||
| .travell img { | ||||
|   width: 25px; | ||||
|   height: 25px; | ||||
| } | ||||
| 
 | ||||
| .travell div { | ||||
|   width: 50%; | ||||
|   height: 100%; | ||||
|   font-size: 1.2em; | ||||
|   font-weight: 400; | ||||
|   padding-top: 20px; | ||||
|   box-sizing: border-box; | ||||
|   border-bottom: 1px solid rgb(148, 148, 148); | ||||
| } | ||||
| 
 | ||||
| .travell div span { | ||||
|   width: 100%; | ||||
|   display: block; | ||||
|   text-align: center; | ||||
|   color: #b93c48; | ||||
| } | ||||
| 
 | ||||
| .travell div span p { | ||||
|   display: inline-block; | ||||
|   color: #daaa67; | ||||
| } | ||||
| 
 | ||||
| .travell div span:nth-child(2) { | ||||
|   color: #daaa67; | ||||
| } | ||||
| 
 | ||||
| .serve { | ||||
|   width: 100%; | ||||
|   height: 300px; | ||||
|   padding-top: 50px; | ||||
|   box-sizing: border-box; | ||||
|   display: flex; | ||||
|   justify-content: space-around; | ||||
| } | ||||
| 
 | ||||
| .serve img { | ||||
|   width: 60%; | ||||
|   height: 40%; | ||||
|   border-radius: 50%; | ||||
| } | ||||
| 
 | ||||
| .serve div { | ||||
|   text-align: center; | ||||
| } | ||||
| 
 | ||||
| .serve p { | ||||
|   width: 150px; | ||||
|   height: 30px; | ||||
|   text-align: center; | ||||
|   font-size: 20px; | ||||
|   font-weight: 400; | ||||
|   color: #9c1306; | ||||
| } | ||||
| 
 | ||||
| @media screen and (min-width: 0px) and (max-width: 992px) { | ||||
|   .all { | ||||
|     display: block; | ||||
|   } | ||||
| } | ||||
| </style> | ||||
							
								
								
									
										571
									
								
								src/components/Nav.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,571 @@ | ||||
| <template> | ||||
|   <div class="topbox"> | ||||
|     <!-- logo和搜索框 --> | ||||
|     <div class="topbox-left"> | ||||
|       <div class="logo" @click="toHome"></div> | ||||
|       <!-- <a href="/"> | ||||
|       </a> --> | ||||
|       <span class="showMenu" @click="showMenu()">|||</span> | ||||
|       <!-- 切换翻译 --> | ||||
|       <div class="functional"> | ||||
|         <div class="translate_btns"> | ||||
|           <div class="langBtn" v-for="(item, i) in langList" :key="i"> | ||||
|             <span @click="changeLang(item)">{{ item.name }}</span> | ||||
|             <span class="line"></span> | ||||
|           </div> | ||||
|         </div> | ||||
|         <!-- 搜索框 --> | ||||
|         <div class="search"> | ||||
|           <span class="search_icon" @click="search"></span> | ||||
|           <input class="search_input" type="text" laceholder="输入要搜索的内容" @keyup.enter="search" ref="searchMsg" /> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|     <div class="topbox-right" v-show="boxShow"> | ||||
|       <div class="max-load"> | ||||
|         <span>日最大承载量:5000人</span> | ||||
|         <span>日瞬时最大承载量:1000人</span> | ||||
|       </div> | ||||
|       <div class="now-load"> | ||||
|         <span>当前在馆人数:{{ inHall }} 人</span> | ||||
|         <span>当前游览舒适度:{{ comfort }}</span> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
|   <div class="middle-line"></div> | ||||
|   <!-- 导航栏 --> | ||||
|   <div class="navigation" ref="navBox"> | ||||
|     <span v-for="(item, index) in first" :key="index" @click="toOther(item, index)" @mouseenter="showBox(index)"> | ||||
|       <p>{{ item.categoryName }}</p> | ||||
|       <div class="active"> | ||||
|         <span :class="actNum == index ? 'star' : 'star choose'"></span> | ||||
|       </div> | ||||
|     </span> | ||||
|     <div class="message-box" v-show="seshow"> | ||||
|       <span class="items" v-for="(item, index) in second" :key="index"> | ||||
|         <span @click="toSingle(item, index)">{{ item.categoryName }}</span> | ||||
|         <span class="second-line"></span> | ||||
|       </span> | ||||
|     </div> | ||||
|   </div> | ||||
|   <div class="second-menu" v-show="seshow"></div> | ||||
| </template> | ||||
| <script> | ||||
| import axios from "axios"; | ||||
| export default { | ||||
|   name: "NavPart", | ||||
|   props: { | ||||
|     msg: String, | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       seshow: false, | ||||
|       langList: [ | ||||
|         { name: "中文", langType: "cn" }, | ||||
|         { name: "English", langType: "en" }, | ||||
|         { name: "한국어", langType: "kr" }, | ||||
|         { name: "日本語", langType: "jp" }, | ||||
|       ], | ||||
|       langType: "cn", | ||||
|       actNum: 0, | ||||
|       show: false, | ||||
|       first: [], | ||||
|       second: [], | ||||
|       comfort: "舒服", | ||||
|       inHall: 0, | ||||
|       mobileMenu: 0, | ||||
|       boxShow: true, | ||||
|       navBox: true | ||||
|     }; | ||||
|   }, | ||||
|   mounted() { | ||||
|     this.langType = localStorage.getItem("langtype") == null ? "cn" : localStorage.getItem("langtype"); | ||||
|     localStorage.setItem("langtype", this.langType); | ||||
|     if (this.langType != 'cn') { | ||||
|       this.boxShow = false | ||||
|     } | ||||
|     this.first = localStorage.getItem(`${this.langType}` + `List`) == null ? this.getList() : JSON.parse(localStorage.getItem(`${this.langType}` + `List`)); | ||||
|     axios.get("/getp/total").then((res) => { | ||||
|       this.inHall = res.data.split(":")[1].split("}")[0] * 1; | ||||
|       if (this.inHall < 500) { | ||||
|         this.comfort = "舒服"; | ||||
|       } else { | ||||
|         this.comfort = "正常"; | ||||
|       } | ||||
|     }); | ||||
|     this.getList(); | ||||
|   }, | ||||
| 
 | ||||
|   methods: { | ||||
|     toSingle(item, index) { | ||||
|       this.first.forEach((element) => { | ||||
|         if ( | ||||
|           element.ancestors + "," + element.categoryId == item.ancestors && | ||||
|           item.ancestors != "0,1" | ||||
|         ) { | ||||
|           element.testindex = index | ||||
|           sessionStorage.setItem('listData', JSON.stringify(element)) | ||||
|           this.$router.push(`/essaylist`).then(() => { | ||||
|             location.reload(); | ||||
|           }); | ||||
|         } else if ( | ||||
|           element.ancestors + "," + element.categoryId == item.ancestors && | ||||
|           item.ancestors == "0,1" | ||||
|         ) { | ||||
|           element.testindex = index | ||||
|           sessionStorage.setItem('singleData', JSON.stringify(element)) | ||||
|           this.$router.push(`/single`).then(() => { | ||||
|             location.reload(); | ||||
|           }); | ||||
|         } | ||||
|       }); | ||||
|     }, | ||||
|     // 获取一级菜单 | ||||
|     getList() { | ||||
|       axios.get("/api/door/tree").then((res) => { | ||||
|         let data = res.data; | ||||
|         let arr = []; | ||||
|         localStorage.setItem('tree', JSON.stringify(data)) | ||||
|         for (let i = 0; i < data.length; i++) { | ||||
|           if (data[i].categoryName == this.langType) { | ||||
|             arr = data[i].category; | ||||
|           } else if (this.langType == "cn") { | ||||
|             arr = data.slice(1, 7); | ||||
|             arr.unshift({ categoryName: "首页", category: null }); | ||||
|           } | ||||
|           localStorage.setItem( | ||||
|             `${this.langType}` + `List`, | ||||
|             JSON.stringify(arr) | ||||
|           ); | ||||
|         } | ||||
|       }); | ||||
|     }, | ||||
|     // 跳转逻辑 | ||||
|     toOther(item, index) { | ||||
|       if (index == 0 && this.langType == "cn") { | ||||
|         this.$router.push("/") | ||||
|       } else if (index == 0 && this.langType != "cn") { | ||||
|         this.$router.push("/foreignlang").then(() => { | ||||
|           location.reload() | ||||
|         }); | ||||
|       } | ||||
|       else if (item.categoryName == "数字纪念馆" || item.categoryName == "Digital Hall" || item.categoryName == "デジタル記念館" || item.categoryName == "디지털 기념관") { | ||||
|         window.location.href = | ||||
|           "http://www.backlightvr.com/tour/0738e24d171e6b6a"; | ||||
|       } | ||||
|       else if (item.categoryName == "纪念馆概况" || item.categoryName == "参观指南" || item.categoryName == "Hall Profile" || item.categoryName == "Welfare Fund" || item.categoryName == "Contact Us" || item.categoryName == "공익기금" || item.categoryName == "기념관 개황" || item.categoryName == "연락처" || item.categoryName == "記念館概要" || item.categoryName == "お問い合わせ" || item.categoryName == "公益基金") { | ||||
|         localStorage.setItem("indexList", item.categoryName); | ||||
|         sessionStorage.setItem('singleData', JSON.stringify(item)) | ||||
|         this.$router.push(`/single`).then(() => { | ||||
|           location.reload(); | ||||
|         }); | ||||
|         // /${JSON.stringify(item)} | ||||
|       } else { | ||||
|         localStorage.setItem("indexList", item.categoryName); | ||||
|         sessionStorage.setItem('listData', JSON.stringify(item)) | ||||
|         this.$router.push(`/essaylist`).then(() => { | ||||
|           location.reload(); | ||||
|         }); | ||||
|       } | ||||
|     }, | ||||
|     // 切换语言按钮 | ||||
|     changeLang(item) { | ||||
|       localStorage.setItem("langtype", item.langType); | ||||
|       if (item.langType != "cn") { | ||||
|         this.$router.push("/foreignlang").then(() => { | ||||
|           location.reload() | ||||
|         }) | ||||
|         // location.reload(); | ||||
|       } else if (item.langType == "cn") { | ||||
|         this.$router.push("/").then(() => { | ||||
|           setTimeout(() => { | ||||
|             location.reload() | ||||
|           }, 2000); | ||||
|         }); | ||||
|         // location.reload() | ||||
|       } | ||||
|     }, | ||||
|     // 搜索功能 | ||||
|     search() { | ||||
|       let searchWord = this.$refs.searchMsg.value; | ||||
|       localStorage.setItem('indexList', '搜索结果') | ||||
|       this.$router.push(`/search/${searchWord}`).then((res) => { | ||||
|         location.reload() | ||||
|       }) | ||||
|     }, | ||||
|     showBox(index) { | ||||
|       this.actNum = index; | ||||
|       let secondList = this.first[index].category; | ||||
|       if (secondList != null) { | ||||
|         this.seshow = true; | ||||
|         this.second = secondList; | ||||
|       } else { | ||||
|         this.seshow = false; | ||||
|       } | ||||
|     }, | ||||
|     showMenu() { | ||||
|       console.log('click', this.mobileMenu, this.navBox); | ||||
|       if (this.mobileMenu == 1) { | ||||
|         this.$refs.navBox.style.display = 'block'; | ||||
|         this.mobileMenu = 0; | ||||
|       } else if (this.mobileMenu == 0) { | ||||
|         this.$refs.navBox.style.display = 'none'; | ||||
|         this.mobileMenu = 1; | ||||
|       } | ||||
|     }, | ||||
|     toHome() { | ||||
|       if (this.langType == 'cn') { | ||||
|         this.$router.push('/') | ||||
|       } else { | ||||
|         this.$router.push('/foreignlang') | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
| }; | ||||
| </script> | ||||
| <style scoped> | ||||
| .topbox { | ||||
|   width: 100%; | ||||
|   height: 184px; | ||||
|   background-color: #961824; | ||||
|   position: relative; | ||||
|   display: flex; | ||||
|   justify-content: space-between; | ||||
| } | ||||
| 
 | ||||
| .logo { | ||||
|   width: 35%; | ||||
|   height: 76px; | ||||
|   background-image: url("../imgs/logo 拷贝.png"); | ||||
|   position: absolute; | ||||
|   top: 28px; | ||||
|   left: 4%; | ||||
|   background-size: contain; | ||||
|   background-repeat: no-repeat; | ||||
| } | ||||
| 
 | ||||
| /* 切换翻译以及按钮部分样式 */ | ||||
| .functional { | ||||
|   width: 30%; | ||||
|   position: absolute; | ||||
|   top: 28px; | ||||
|   left: 40%; | ||||
|   cursor: pointer | ||||
| } | ||||
| 
 | ||||
| /* 按钮样式 */ | ||||
| .translate_btns { | ||||
|   display: flex; | ||||
| } | ||||
| 
 | ||||
| .langBtn { | ||||
|   /* width: 10%; */ | ||||
|   display: flex; | ||||
|   justify-content: space-between; | ||||
|   height: 19px; | ||||
|   font-size: 14px; | ||||
|   font-family: MicrosoftYaHei; | ||||
|   font-weight: 400; | ||||
|   color: #d0b689; | ||||
|   margin: 0 0 1% 2%; | ||||
| } | ||||
| 
 | ||||
| .langBtn:last-child .line { | ||||
|   display: none; | ||||
| } | ||||
| 
 | ||||
| .line { | ||||
|   display: block; | ||||
|   width: 0px; | ||||
|   height: 12px; | ||||
|   margin-top: 3px; | ||||
|   margin-left: 20px; | ||||
|   border: 1px solid #d0b689; | ||||
| } | ||||
| 
 | ||||
| .search { | ||||
|   width: 70%; | ||||
|   height: 37px; | ||||
|   background-color: #fff; | ||||
|   border-radius: 18.5px; | ||||
|   display: flex; | ||||
|   position: relative; | ||||
|   overflow: hidden; | ||||
| } | ||||
| 
 | ||||
| .search_icon { | ||||
|   width: 50%; | ||||
|   height: 50%; | ||||
|   display: block; | ||||
|   background-image: url("../imgs/图层 19@2x.png"); | ||||
|   background-size: contain; | ||||
|   background-repeat: no-repeat; | ||||
|   position: absolute; | ||||
|   top: 8px; | ||||
|   left: 12px; | ||||
| } | ||||
| 
 | ||||
| .search_input { | ||||
|   width: 100%; | ||||
|   height: 20px; | ||||
|   font-size: 18px; | ||||
|   position: absolute; | ||||
|   top: 8px; | ||||
|   left: 40px; | ||||
|   border: none; | ||||
|   outline: none; | ||||
| } | ||||
| 
 | ||||
| .search_input::-webkit-input-placeholder { | ||||
|   color: #bfbebe; | ||||
|   font-size: inherit; | ||||
| } | ||||
| 
 | ||||
| /* 游览状况样式 */ | ||||
| .topbox-right { | ||||
|   width: 20%; | ||||
|   position: absolute; | ||||
|   top: 46px; | ||||
|   left: 62%; | ||||
|   color: #d0b689; | ||||
|   display: flex; | ||||
|   /* margin-left: 1%; */ | ||||
| } | ||||
| 
 | ||||
| .max-load { | ||||
|   margin-right: 3%; | ||||
| } | ||||
| 
 | ||||
| .topbox-right span { | ||||
|   width: 100%; | ||||
|   font-size: 16px; | ||||
|   display: block; | ||||
|   text-align: right; | ||||
|   white-space: nowrap; | ||||
| } | ||||
| 
 | ||||
| /* 分割线 */ | ||||
| .middle-line { | ||||
|   width: 100%; | ||||
|   height: 1px; | ||||
|   background-color: #bd3844; | ||||
|   position: absolute; | ||||
|   top: 116px; | ||||
| } | ||||
| 
 | ||||
| /* 导航栏样式 */ | ||||
| .navigation { | ||||
|   width: 100%; | ||||
|   box-sizing: border-box; | ||||
|   /* overflow: hidden; */ | ||||
|   position: absolute; | ||||
|   top: 130px; | ||||
|   padding: 0 10%; | ||||
|   font-size: 22px; | ||||
|   color: #fff; | ||||
|   display: flex; | ||||
|   justify-content: space-between; | ||||
| } | ||||
| 
 | ||||
| .navigation span { | ||||
|   text-align: center; | ||||
|   display: block; | ||||
|   font-size: 22px; | ||||
|   font-family: Microsoft YaHei; | ||||
|   font-weight: 400; | ||||
|   color: #f5f4f3; | ||||
|   cursor:pointer | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| .navigation span p { | ||||
|   margin-bottom: 0; | ||||
| } | ||||
| 
 | ||||
| /* 二级菜单样式 */ | ||||
| .second-menu { | ||||
|   width: 100%; | ||||
|   height: 61px; | ||||
|   position: absolute; | ||||
|   color: #fff; | ||||
|   background-color: #000; | ||||
|   opacity: 0.8; | ||||
|   z-index: 999; | ||||
| } | ||||
| 
 | ||||
| .second-line { | ||||
|   width: 1px; | ||||
|   height: 15px; | ||||
|   margin: 0 20px; | ||||
|   display: inline-block; | ||||
|   position: relative; | ||||
|   top: 25px; | ||||
|   background-image: url("../imgs/图层 34.png"); | ||||
| } | ||||
| 
 | ||||
| .second-line:last-child { | ||||
|   width: 1px; | ||||
|   height: 15px; | ||||
|   margin: 0 20px; | ||||
|   display: inline-block; | ||||
|   position: relative; | ||||
|   top: 25px; | ||||
|   background-image: url("../imgs/图层 34.png"); | ||||
| } | ||||
| 
 | ||||
| .message-box { | ||||
|   width: 80%; | ||||
|   height: 55px; | ||||
|   display: flex; | ||||
|   line-height: 61px; | ||||
|   position: absolute; | ||||
|   left: 110px; | ||||
|   top: 55px; | ||||
|   z-index: 9999; | ||||
| } | ||||
| 
 | ||||
| .message-box span { | ||||
|   text-align: center; | ||||
|   display: flex; | ||||
|   font-size: 22px; | ||||
|   font-family: Microsoft YaHei; | ||||
|   font-weight: 400; | ||||
| } | ||||
| 
 | ||||
| .message-box span a { | ||||
|   color: #f5f4f3; | ||||
| } | ||||
| 
 | ||||
| .message-box span:last-child>span:nth-child(2) { | ||||
|   display: none; | ||||
| } | ||||
| 
 | ||||
| /* 底部选中样式 */ | ||||
| .choose { | ||||
|   opacity: 0; | ||||
| } | ||||
| 
 | ||||
| .active { | ||||
|   width: 100%; | ||||
|   position: relative; | ||||
|   bottom: -5px; | ||||
| } | ||||
| 
 | ||||
| .star { | ||||
|   width: 120px; | ||||
|   height: 22px; | ||||
|   text-align: center; | ||||
|   display: block; | ||||
|   position: relative; | ||||
|   top: -2px; | ||||
|   background-image: url("../imgs/图层 50.png"); | ||||
|   background-repeat: no-repeat; | ||||
|   background-size: cover; | ||||
| } | ||||
| 
 | ||||
| .showMenu { | ||||
|   font-size: 30px; | ||||
|   text-align: center; | ||||
|   align-items: center; | ||||
|   transform: rotateZ(90deg); | ||||
|   position: absolute; | ||||
|   right: 30px; | ||||
|   top: 30px; | ||||
|   color: #d0b689; | ||||
|   display: none; | ||||
| } | ||||
| 
 | ||||
| @media screen and (min-width: 0px) and (max-width: 992px) { | ||||
|   * { | ||||
|     margin: 0; | ||||
|     padding: 0; | ||||
|     overflow: hidden; | ||||
|   } | ||||
| 
 | ||||
|   .topbox { | ||||
|     width: 100%; | ||||
|     height: 110px; | ||||
|     position: fixed; | ||||
|     z-index: 9999; | ||||
|     top: 0; | ||||
|   } | ||||
| 
 | ||||
|   .logo { | ||||
|     width: 70%; | ||||
|     height: 76px; | ||||
|     background-image: url("../imgs/logo 拷贝.png"); | ||||
|     position: absolute; | ||||
|     left: 30px; | ||||
|     top: 25px; | ||||
|   } | ||||
| 
 | ||||
|   .functional { | ||||
|     display: none; | ||||
|   } | ||||
| 
 | ||||
|   .showMenu { | ||||
|     display: block; | ||||
|   } | ||||
| 
 | ||||
|   .topbox-right { | ||||
|     display: none; | ||||
|   } | ||||
| 
 | ||||
|   .middle-line { | ||||
|     display: none; | ||||
|   } | ||||
| 
 | ||||
|   .navigation { | ||||
|     width: 100%; | ||||
|     height: 100%; | ||||
|     overflow: hidden; | ||||
|     padding: 0; | ||||
|     background-color: rgba(0, 0, 0, 0.436); | ||||
|     z-index: 9999; | ||||
|     position: fixed; | ||||
|     box-sizing: border-box; | ||||
|     top: 110px; | ||||
|     display: none; | ||||
|     overflow: scroll; | ||||
|   } | ||||
| 
 | ||||
|   .navigation span { | ||||
|     width: 40%; | ||||
|     height: 5%; | ||||
|     text-align: left; | ||||
|     display: block; | ||||
|     position: relative; | ||||
|     padding: 50px 20px; | ||||
|     background-color: rgb(96, 96, 96); | ||||
|   } | ||||
| 
 | ||||
|   .navigation span p { | ||||
|     width: 100%; | ||||
|     padding: 20px 0; | ||||
|     display: block; | ||||
|     font-size: 1em; | ||||
|     border-bottom: 1px solid #fff; | ||||
|   } | ||||
| 
 | ||||
|   .navigation span p::after { | ||||
|     content: " >"; | ||||
|     position: absolute; | ||||
|     right: 10%; | ||||
|   } | ||||
| 
 | ||||
|   .active { | ||||
|     display: none; | ||||
|   } | ||||
| 
 | ||||
|   .message-box { | ||||
|     width: 50%; | ||||
|     height: 55px; | ||||
|     display: flex; | ||||
|     line-height: 61px; | ||||
|     position: absolute; | ||||
|     top: 0; | ||||
|     left: 0; | ||||
|     z-index: 9999; | ||||
|   } | ||||
| } | ||||
| </style> | ||||
							
								
								
									
										101
									
								
								src/components/PicPage.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,101 @@ | ||||
| <template> | ||||
|   <div class="page-details"> | ||||
|     <div class="page-msgs"> | ||||
|       <div class="show-box"> | ||||
|         <span class="img-box" v-for="(item, n) in dataList" :key="n"> | ||||
|           <img class="show-img" :src="item.coverImage" alt="" /> | ||||
|           <p>{{ item.title }}</p> | ||||
|         </span> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
| </template> | ||||
| <script> | ||||
| import axios from "axios"; | ||||
| export default { | ||||
|   name: "PicPart", | ||||
|   props: { | ||||
|     msg: String, | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       dataList: [], | ||||
|       testMsg: this.msg, | ||||
|     }; | ||||
|   }, | ||||
|   beforeMount() { | ||||
|      | ||||
|     this.dataList = JSON.parse(localStorage.getItem('picList'))== undefined? this.getData():JSON.parse(localStorage.getItem('picList')) | ||||
|   }, | ||||
|   methods: { | ||||
|     getData(){ | ||||
|       axios.post(`api/door/ArticleList`).then((res) => { | ||||
|       let atcList = res.data.rows; | ||||
|       let lists = []; | ||||
|       atcList.forEach((element) => { | ||||
|         if (element.category.categoryName == this.msg) { | ||||
|           element.coverImage = "http://192.168.3.155" + element.coverImage; | ||||
|           lists.push(element); | ||||
|         } | ||||
|       }); | ||||
|       this.dataList = lists; | ||||
|       localStorage.setItem('picList',JSON.stringify(this.dataList)) | ||||
|     }); | ||||
|     } | ||||
|   }, | ||||
| }; | ||||
| </script> | ||||
| <style scoped> | ||||
| .page-details { | ||||
|   width: 100%; | ||||
|   background-color: rgb(234, 234, 234); | ||||
|   padding: 66px 160px; | ||||
|   box-sizing: border-box; | ||||
| } | ||||
| .page-img { | ||||
|   display: block; | ||||
|   width: 100%; | ||||
|   height: 624px; | ||||
| } | ||||
| .page-msgs { | ||||
|   width: 1600px; | ||||
|   background-color: #fff; | ||||
|   box-sizing: border-box; | ||||
|   padding-bottom: 90px; | ||||
|   box-sizing: border-box; | ||||
| } | ||||
| .show-box { | ||||
|   text-align: center; | ||||
|   align-items: center; | ||||
|   display: flex; | ||||
|   flex-wrap: wrap; | ||||
|   padding: 73px 86px; | ||||
|   box-sizing: border-box; | ||||
|   justify-content: space-between; | ||||
| } | ||||
| .img-box { | ||||
|   display: block; | ||||
|   width: 420px; | ||||
|   height: 340px; | ||||
|   overflow: hidden; | ||||
|   margin-bottom: 60px; | ||||
| } | ||||
| .show-box img { | ||||
|   width: 100%; | ||||
|   height: 260px; | ||||
|   display: block; | ||||
| } | ||||
| .show-box p { | ||||
|   display: block; | ||||
|   background-color: #f1f1f1; | ||||
|   width: 100%; | ||||
|   height: 77px; | ||||
|   font-size: 24px; | ||||
|   font-family: Microsoft YaHei; | ||||
|   font-weight: 400; | ||||
|   color: #444343; | ||||
|   line-height: 18px; | ||||
|   padding: 23px 40px; | ||||
|   box-sizing: border-box; | ||||
| } | ||||
| </style> | ||||
							
								
								
									
										37
									
								
								src/components/attendanceListDialog.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,37 @@ | ||||
| <template> | ||||
|   <div> | ||||
|     <el-dialog title="会议签到情况"> | ||||
|       <el-table :data="tableData"> | ||||
|         <el-table-column label="序号" type="index"></el-table-column> | ||||
|         <el-table-column label="签到人" prop="name"></el-table-column> | ||||
|         <el-table-column label="签到时间" prop="attendanceTime"></el-table-column> | ||||
|       </el-table> | ||||
|     </el-dialog> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import { getAttend } from '@/api/meet'; | ||||
| export default { | ||||
|   name: "attendanceListDialog", | ||||
|   data() { | ||||
|     return { | ||||
|       tableData: [], | ||||
|       id: '', | ||||
|       token:'' | ||||
|     } | ||||
|   }, | ||||
| 
 | ||||
|   created() { | ||||
|     this.token = localStorage.getItem('token') | ||||
|   }, | ||||
|   methods: { | ||||
|     showDialog() { | ||||
|       let data = {'id':123} | ||||
|       getAttend(this.token,data) | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| 
 | ||||
| <style scoped></style> | ||||
							
								
								
									
										135
									
								
								src/components/footer(en).vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,135 @@ | ||||
| <template> | ||||
|     <footer> | ||||
|         <div class="bottom-imgs"> | ||||
|             <img class="footer-logo" :src="require('@/imgs/logo 拷贝 2.png')" alt="" /> | ||||
|             <a href="https://beian.miit.gov.cn "><img class="sheld" :src="require('@/imgs/图层 105.png')" alt="" /></a> | ||||
|         </div> | ||||
| 
 | ||||
|         <div class="middle-msgs"> | ||||
|             <!-- 填充内容 --> | ||||
|             <div class="connect"> | ||||
|                 <a href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=32070602010094"></a> | ||||
|             </div> | ||||
|             <div class="aboutUs"> | ||||
|                 <a href="http://www.jsxinyuansu.com/"></a> | ||||
|             </div> | ||||
|             <img :src="require(`@/imgs/${imgName + '.png'}`)" alt="" /> | ||||
|         </div> | ||||
|         <div class="wxgzh"> | ||||
|             <img :src="require('@/imgs/wxewm.png')" alt="" /> | ||||
|             <p>微信公众号</p> | ||||
|         </div> | ||||
|     </footer> | ||||
| </template> | ||||
| <script> | ||||
| export default { | ||||
|     name: "Enfoot", | ||||
|     props: { | ||||
|         msg: String, | ||||
|     }, | ||||
|     data() { | ||||
|         return { | ||||
|             imgName: "", | ||||
|             langType: '', | ||||
|         } | ||||
|     }, | ||||
|     beforeMount() { | ||||
|         let lang = localStorage.getItem("langtype"); | ||||
|         this.langType = lang | ||||
|         this.imgName = lang + "Footer"; | ||||
|     }, | ||||
| } | ||||
| </script> | ||||
| <style scoped> | ||||
| /* 底部信息 */ | ||||
| footer { | ||||
|     height: 250px; | ||||
|     padding: 60px 355px 40px 120px; | ||||
|     box-sizing: border-box; | ||||
|     background-image: url("@/imgs/图层 49.png"); | ||||
|     background-size: cover; | ||||
|     background-repeat: no-repeat; | ||||
|     display: flex; | ||||
|     position: relative; | ||||
| } | ||||
| 
 | ||||
| .footer-logo { | ||||
|     width: 25%; | ||||
|     height: 30%; | ||||
|     position: absolute; | ||||
|     left: 4%; | ||||
|     top: 30%; | ||||
| } | ||||
| 
 | ||||
| .sheld { | ||||
|     width: 50px; | ||||
|     height: 60px; | ||||
|     position: absolute; | ||||
|     top: 32%; | ||||
|     left: 27%; | ||||
| } | ||||
| 
 | ||||
| .middle-msgs { | ||||
|     width: 40%; | ||||
|     font-size: 18px; | ||||
|     font-family: Microsoft YaHei; | ||||
|     font-weight: 400; | ||||
|     color: #f7f5f5; | ||||
|     line-height: 18px; | ||||
|     position: absolute; | ||||
|     top: 30%; | ||||
|     left: 32%; | ||||
| } | ||||
| 
 | ||||
| .middle-msgs>span { | ||||
|     display: block; | ||||
|     margin: 10px 0; | ||||
| } | ||||
| 
 | ||||
| .wxgzh { | ||||
|     position: absolute; | ||||
|     left: 85%; | ||||
| } | ||||
| 
 | ||||
| .wxgzh p { | ||||
|     width: 100%; | ||||
|     height: 15px; | ||||
|     font-size: 16px; | ||||
|     font-family: Microsoft YaHei; | ||||
|     font-weight: 400; | ||||
|     color: #f7f5f5; | ||||
|     line-height: 18px; | ||||
|     text-align: center; | ||||
| } | ||||
| 
 | ||||
| .connect { | ||||
|     width: 75px; | ||||
|     height: 25px; | ||||
|     position: absolute; | ||||
|     bottom: 0; | ||||
|     left: 25%; | ||||
|     z-index: 999; | ||||
|     /* background-color: #fff; */ | ||||
| } | ||||
| 
 | ||||
| .connect a { | ||||
|     width: 100%; | ||||
|     height: 100%; | ||||
|     display: block; | ||||
| } | ||||
| 
 | ||||
| .aboutUs { | ||||
|     width: 520px; | ||||
|     height: 25px; | ||||
|     position: absolute; | ||||
|     bottom: 30%; | ||||
|     left: 30%; | ||||
|     z-index: 999; | ||||
| } | ||||
| 
 | ||||
| .aboutUs a { | ||||
|     width: 100%; | ||||
|     height: 100%; | ||||
|     display: block; | ||||
| } | ||||
| </style> | ||||
							
								
								
									
										
											BIN
										
									
								
								src/font/SanJiLuoLiHei-2.ttf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								src/font/nzgrRuYinZouZhangKai.ttf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								src/img/CH.webp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 21 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/img/CS.webp
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 23 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/img/addbtn.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.5 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/img/addlike.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.1 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/img/arr.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 210 B | 
							
								
								
									
										
											BIN
										
									
								
								src/img/close.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 410 B | 
							
								
								
									
										
											BIN
										
									
								
								src/img/file.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 397 B | 
							
								
								
									
										
											BIN
										
									
								
								src/img/formBack.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 121 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/img/loading.gif
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 5.2 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/img/logOut.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 2.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/img/logo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 36 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/img/open.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 858 B | 
							
								
								
									
										
											BIN
										
									
								
								src/img/pageBack.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 99 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/img/pasLogo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 947 B | 
							
								
								
									
										
											BIN
										
									
								
								src/img/pdfImg.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 601 B | 
							
								
								
									
										
											BIN
										
									
								
								src/img/sideBack.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 96 KiB | 
							
								
								
									
										
											BIN
										
									
								
								src/img/userLogo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 982 B | 
							
								
								
									
										
											BIN
										
									
								
								src/img/windoOpen.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 413 B | 
							
								
								
									
										
											BIN
										
									
								
								src/img/windowClose.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 415 B | 
							
								
								
									
										
											BIN
										
									
								
								src/img/wordImg.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 637 B | 
							
								
								
									
										
											BIN
										
									
								
								src/img/yhlogo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 8.6 KiB | 
							
								
								
									
										22
									
								
								src/main.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,22 @@ | ||||
| import Vue from 'vue' | ||||
| import App from './App.vue' | ||||
| import 'bootstrap/dist/css/bootstrap.css' | ||||
| import 'bootstrap/dist/js/bootstrap.js' | ||||
| import ElementUI from 'element-ui'; | ||||
| import 'element-ui/lib/theme-chalk/index.css'; | ||||
| import router from './router' | ||||
| import store from './store' | ||||
| // import { pdf } from 'vue-pdf';
 | ||||
| // import pdfjsWorker from 'pdfjs-dist/build/pdf.worker.entry.js';
 | ||||
| 
 | ||||
| // Vue.config.productionTip = false
 | ||||
| // pdfjsWorker();
 | ||||
| // Vue.use(pdf);
 | ||||
| 
 | ||||
| Vue.use(ElementUI); | ||||
| 
 | ||||
| new Vue({ | ||||
|   router, | ||||
|   store, | ||||
|   render: h => h(App) | ||||
| }).$mount('#app') | ||||
							
								
								
									
										29
									
								
								src/router/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,29 @@ | ||||
| import Vue from 'vue' | ||||
| import VueRouter from 'vue-router' | ||||
| 
 | ||||
| Vue.use(VueRouter) | ||||
| 
 | ||||
| const routes = [ | ||||
|   { | ||||
|     path: '/narrate', | ||||
|     name: 'narrate', | ||||
|     component: () => import( '../views/narrate.vue') | ||||
|   }, | ||||
|   { | ||||
|     path: '/', | ||||
|     name: 'login', | ||||
|     component: () => import( '../views/login.vue') | ||||
|   }, | ||||
|   { | ||||
|     path: '/meeting', | ||||
|     name: 'meeting', | ||||
|     component: () => import( '../views/meetingManagement.vue') | ||||
|   }, | ||||
| 
 | ||||
| ] | ||||
| 
 | ||||
| const router = new VueRouter({ | ||||
|   routes | ||||
| }) | ||||
| 
 | ||||
| export default router | ||||
							
								
								
									
										22
									
								
								src/store/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,22 @@ | ||||
| import Vue from 'vue' | ||||
| import Vuex from 'vuex' | ||||
| 
 | ||||
| Vue.use(Vuex) | ||||
| 
 | ||||
| export default new Vuex.Store({ | ||||
|   state: { | ||||
|     testName: '测试名字', | ||||
|     currDbSource: {}, | ||||
|     currJobData: {}, | ||||
|     DbSource: [] | ||||
| 
 | ||||
|   }, | ||||
|   getters: { | ||||
|   }, | ||||
|   mutations: { | ||||
|   }, | ||||
|   actions: { | ||||
|   }, | ||||
|   modules: { | ||||
|   } | ||||
| }) | ||||
							
								
								
									
										89
									
								
								src/views/acc.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,89 @@ | ||||
| <!DOCTYPE html> | ||||
| <html lang="en"> | ||||
| 
 | ||||
| <head> | ||||
|     <meta charset="UTF-8"> | ||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||||
|     <title>Document</title> | ||||
|     <style type="text/css"> | ||||
|         body{ | ||||
|             margin: 0; | ||||
|             padding: 0; | ||||
|         } | ||||
|         .father { | ||||
|             width: 98vw; | ||||
|             padding: 5px; | ||||
|         } | ||||
| 
 | ||||
|         .imgbox { | ||||
|             width: 98vw; | ||||
|             height: 250px; | ||||
|             background-image: url('../assets/d3f792d7344fb0285e810db753ce1fa.jpg'); | ||||
|             background-size: cover; | ||||
|         } | ||||
| 
 | ||||
|         .title { | ||||
|             width: 380px; | ||||
|             height: 70px; | ||||
|             display: flex; | ||||
|             justify-content: center; | ||||
|             align-items: center; | ||||
|         } | ||||
| 
 | ||||
|         .aud { | ||||
|             width: 98vw; | ||||
|         } | ||||
| 
 | ||||
|         p { | ||||
|             width: 98vw; | ||||
|             text-indent: 2rem; | ||||
|             color: #c1c2c3; | ||||
|             font-size: 17px; | ||||
|         } | ||||
| 
 | ||||
|         .bottom { | ||||
|             width: 98vw; | ||||
|             height: 150px; | ||||
|             background-image: url('../assets/002.jpg'); | ||||
|             background-size: cover; | ||||
|         } | ||||
|     </style> | ||||
| </head> | ||||
| 
 | ||||
| <body> | ||||
|     <div class="father"> | ||||
|         <div class="imgbox"></div> | ||||
|         <!-- 标题 --> | ||||
|         <div class="title"> | ||||
|             <h2 style="">将军崖岩画</h2> | ||||
|         </div> | ||||
|         <div> | ||||
|             <audio controls class="aud"> | ||||
|                 <source src="../assets/01.mp3" /> | ||||
|             </audio> | ||||
|         </div> | ||||
|         <p style="margin-top: 20px;"> | ||||
|             再往上走就到了东方天书将军崖岩画,将军崖岩画位于万丈崖山头的南面,当地人称它为后小山。于1979年文物普查时被发现,于1988年1月被国务院确定为国家级文物保护单位。岩画上刻有人面,兽面,子午线,太阳图案,鱼形图案,农作物图案以及各种神秘的符号,在当时根据岩画刻画的风格,周围出土的石器以及碳十四的测量充分的可以断定这是新石器中晚期的产物至今约有10000多年的历史,它是我们祖先刻在石头上的原始档案,也是我国唯一一部反映原始社农业部落社会生活的石刻画面。 | ||||
|         </p> | ||||
|         <p style="margin-top: 20px;"> | ||||
|             那么将军崖岩画为什么会叫做将军崖呢?早年,在这座山的山头有一个天然的石棚,上面曾刻有汉代造像将军策马出行图,所以叫做将军崖。只不过这座石棚被人为的开山采石给破坏掉了,当地的老百姓便把这座小山体称之为将军崖。</p> | ||||
|         <p style="margin-top: 20px;"> | ||||
|             岩画刻于海拔20米处的山坡上,山坡呈西北向,很像一个巨大的扇面,也像是天盖。岩画共分为三组,主要内容有人面、农作物、鸟兽、星云等图案以及各种神秘的符号。我们来看第一组岩画:以人面和农作物图案为主。这第一个为人面画像,形体比较大,图像也比较清晰,而且保护完好,在整个岩画当中具有代表性。这第二个人面,与第一幅人面又有差别,刻有网纹头饰,用同心圆表示眼睛。眼角的阴刻鱼尾皱纹,额部和两腮往下各刻一条线与下面的禾苗相接。我们依次看一下这几个人面像,发现有几个共同点:第一额头的纹饰以复线三角纹、弦纹和网纹为主体,这些头饰的不同也代表了人地位的不同,因为装饰是地位的象征。以此我们也可以看出,当时的社会还处在人类社会的早期阶段也就是母系社会,人们对母亲、对女子的崇拜意识在这组岩画中得以体现。在当时女性的地位是最高的。第二这组岩画中人面刻像的共同点是都以阴线刻成,都具备额、眼、鼻、等五官特征,多以弧线作为眉毛,以同心圆表示眼睛,带有写实的风格,这表明东方民族的先民已经比较熟练的掌控了以线条造型的艺术手段。这种刻画手法与中国画以线造型的传统一脉相承的,只不过带有初始风格,显得更加古朴稚拙。第三这组人面像根本没有对四肢的描绘,多有一条线向下延伸到类似禾苗、谷穗等农作物上。这些农作物图案比较多,有呈三角形的,有呈放射型的,中间还夹有若干圆点,似乎表示果实。这些充分反映了我国古代东夷民族对土地、农作物的崇拜和依赖。禾苗的生长、庄稼的收获是一个原始农业部落最主要的生命线。这也应验了农业是生命之本的根本道理。 | ||||
|         </p> | ||||
|         <p style="margin-top: 20px;"> | ||||
|             下面这两幅是鸟头图案,比较清晰。为什么会有鸟兽的图案呢?这是因为东夷的先民将鸟作为自己的图腾崇拜,鸟头图案就是这种崇拜的产物。鸟能腾空飞翔,具有一种神奇的魔力,是人所不能具有的超人力量,因此原始人对它产生一种崇拜的心理而予以神话。由于当时古人还没有文字传承下来,所以让现代人破解天书带来了很大的难度,政府曾悬赏百万请各界的专家学者来破译这部“东方天书”。 | ||||
|         </p> | ||||
|         <p style="margin-top: 20px;"> | ||||
|             下面我们来看第二组岩画,这组岩画是以星象图案为主。首先映入眼帘的是一条长达6米多的带状星云图,很像天上的银河。在带状星云图中杂有不少单圈以及双圈圆点,这似乎表示星辰。其中以三条短线将它分为四个部分,是记录天空星云变化的观天记录。据推断,岩画上刻画的这条星云图与我们仰望天空星体的位置基本上是一致的。那么在当时古人是用什么观测到星体位置的,至今还是一个谜。在带状星云图的右侧,有三个呈三角形排列的太阳最引人注目。四周还有表示光芒的放射线,是根据光芒的多少来表示早、中、晚的太阳。三个太阳之所以这样排列,是记录一天的运转轨迹,与我们所说的黄道早、中、晚的三个位置选一个点。根据立竿见影的长度来划分早、中、晚的时间和节气。在三个太阳的东侧有一条四米多长的,呈南北向的人工刻痕线,经国家地质矿产部测得的结果。它与我们现在所说的子午线方位角只相差了3度15秒88分,这个无疑是世界古天文学的杰出成就。那么在当时古人是怎么观测到这个点,这也是一个谜。所以说将军崖也是先民对天体星象进行观测的古观象台 | ||||
|         </p> | ||||
|         <p style="margin-top: 20px;"> | ||||
|             我们再来看第三组岩画,这组岩画是比较与众不同的,它是我国上古时代先民们专用的祭坛。也是我国最早的祭祀遗址。我们来看这几块大石头,其中最大的一块为古代的“社神’.对面的三块小石头为社足。“三国志”中曾记载社身大石长丈许后有三小石为足,正好构成了上古时代的祭坛。这和文献中我国东方民族祭坛以石为“社”,大石为社主,三小石为社足的记载相吻合,每年的春耕秋收先民们都会在社神石下举行大型的祭祀活动。祭天风调雨顺,祭地五谷丰登以此获得更多的生活来源。我们看其中一块岩石上有大小不等的21个圆窝图案,圆窝直径在3-7厘米之间这些园窝是干什么用的呢?原始祭祀都是血祭。以活人祭祀或是宰杀牛羊而这些圆涡就是存放鲜血用的,将军崖岩画被国内考古专家们称之为“东方天书”。现在它的拓片作为史前时期的祭祀遗址,陈列在位于北京市地铁建国门站旁边的北京古观象台内。它的图像摹绘也挂在了北京地铁建国门车站候车大厅的“中国天文史壁画”中。将军崖岩画的星象图模型,曾远赴比利时、韩国等国家展出,代表了古代中国在天文观测方面的卓越成就。 | ||||
|         </p> | ||||
|         <div class="bottom"></div> | ||||
|     </div> | ||||
| </body> | ||||
| 
 | ||||
| </html> | ||||
| <script> | ||||
| 
 | ||||
| </script> | ||||
							
								
								
									
										155
									
								
								src/views/login.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,155 @@ | ||||
| <!-- 会议管理 --> | ||||
| <template> | ||||
|   <div class="BEIJING"> | ||||
|     <el-form ref="questionForm" :model="questionForm"> | ||||
|       <el-form-item  v-for="(question, index) in numList" :key="index" :label="`${index + 1}.`"> | ||||
|         <div style="color: black;">{{ question.topicName }} <span v-if="question.topicType=='2'">(可多选)</span> </div> | ||||
|         <el-radio-group v-if="question.topicType == 1" v-model="question.selectedOption" @change="change(index)"> | ||||
|           <div class="acd"> | ||||
|             <el-radio :label="option.id" :key="option.id" v-for="option in question.optionsList" style="color: black;margin-top: 15px;"  >{{ option.optionsContent}} | ||||
|           </el-radio> | ||||
|           </div> | ||||
|         </el-radio-group> | ||||
| 
 | ||||
|         <el-checkbox-group v-else v-model="question.selectedOption" @change="change(index)"> | ||||
|           <div class="acc" > | ||||
|             <el-checkbox :label="option.id" :key="option.id" v-for="option in question.optionsList"  style="color:black;"><span class="radio-label">{{ option.optionsContent | ||||
|           }}</span></el-checkbox> | ||||
|           </div> | ||||
|          | ||||
|         </el-checkbox-group> | ||||
|       </el-form-item> | ||||
|     </el-form> | ||||
|     <div class="arr"> | ||||
|       <el-button type="primary" @click="submitForm" :disabled="isshow" >提交</el-button> | ||||
|     </div> | ||||
|   </div> | ||||
| </template> | ||||
| <script> | ||||
| 
 | ||||
| import { huoquUrl, postUrl } from '../api/login' | ||||
| export default { | ||||
|   name: 'ContractApproval', | ||||
| 
 | ||||
|   components: { | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       urlid: '', | ||||
|       numList: [], | ||||
|       isshow:false, | ||||
|       radio: '3', | ||||
|        | ||||
|       questionForm: { | ||||
| 
 | ||||
|         questions: [] | ||||
|       }, | ||||
|       formData: [], | ||||
| 
 | ||||
|     } | ||||
|   }, | ||||
| 
 | ||||
|   mounted() { | ||||
|   }, | ||||
|   created() { | ||||
|     this.TimuUrl() | ||||
|     this.geturl() | ||||
|   }, | ||||
|   methods: { | ||||
|     TimuUrl() { | ||||
|       var url = window.location.href; | ||||
|       console.log(url,'dadad'); | ||||
|       var urlnew = new URL(url) | ||||
|       this.urlid = urlnew.searchParams.get('id') | ||||
|       this.urldeptid=urlnew.searchParams.get('deptId') | ||||
|       this.urldeptname=urlnew.searchParams.get('deptName') | ||||
|       console.log(this.urlid, 'yyuu'); | ||||
|       console.log(this.urldeptid, 'adaa'); | ||||
|     }, | ||||
|     async geturl() { | ||||
|       const res = await huoquUrl(this.urlid) | ||||
|       console.log(res, 'hhuu'); | ||||
|       this.numList = res.data.topicList | ||||
|       console.log(this.numList,'yuyu'); | ||||
|       for (let i = 0; i < this.numList.length; i++) { | ||||
|         let data = { | ||||
|           questionId: res.data.id, | ||||
|           questionTopicId: this.numList[i].id, | ||||
|         } | ||||
|         if (this.numList[i].topicType == 1) { | ||||
|           this.$set(this.numList[i], 'selectedOption', '') | ||||
|           data.questionOptionsId = '' | ||||
|         } else { | ||||
|           this.$set(this.numList[i], 'selectedOption', []) | ||||
|           data.questionOptionsId = [] | ||||
|         } | ||||
|         this.formData.push(data) | ||||
|       } | ||||
|        | ||||
|     }, | ||||
|     change(index) { | ||||
|       console.log(); | ||||
|       console.log(index, 'hhu'); | ||||
|       console.log(this.formData[index],'ki') | ||||
|       this.formData[index].questionOptionsId = this.numList[index].selectedOption | ||||
|       this.formData[index].deptId = this.urldeptid | ||||
|       this.formData[index].deptName = this.urldeptname | ||||
|     }, | ||||
|     submitForm() { | ||||
|   // 检查是否有题目未填写 | ||||
|   const isAnyQuestionEmpty = this.formData.some(item => { | ||||
|     return !item.questionOptionsId; | ||||
|   }); | ||||
| 
 | ||||
|   if (isAnyQuestionEmpty) { | ||||
|     this.$message.error('请填写所有题目后再提交'); | ||||
|     return; | ||||
|   } | ||||
| 
 | ||||
|   // 在这里执行提交逻辑,可以将问卷数据发送到后端处理 | ||||
|   var newData = this.formData.map(item => ({ | ||||
|     ...item, | ||||
|     questionOptionsId: Array.isArray(item.questionOptionsId) ? item.questionOptionsId.join(',') : item.questionOptionsId.toString(), | ||||
|   })); | ||||
| 
 | ||||
|   postUrl(newData); | ||||
|   this.$message.success('提交成功') | ||||
|   this.isshow=true | ||||
| } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| 
 | ||||
|    | ||||
|   | ||||
| <style  > | ||||
| .BEIJING{ | ||||
|   position: relative; | ||||
| } | ||||
| 
 | ||||
| .acc{ | ||||
|   display: flex; | ||||
|   flex-wrap: wrap; | ||||
|   width: 100%; | ||||
|   flex-direction: column; | ||||
|   align-items: flex-start; | ||||
|   margin-left: 15px; | ||||
| 
 | ||||
| } | ||||
| .acd{ | ||||
|   display: flex; | ||||
|   flex-direction: column; | ||||
|   align-items: flex-start; | ||||
|   margin-left: 15px; | ||||
| } | ||||
| .arr{ | ||||
|   width: 100%; | ||||
|   height: 20px; | ||||
| text-align: center; | ||||
| 
 | ||||
| } | ||||
| .el-form-item__label{ | ||||
|   margin-left: 5px; | ||||
| } | ||||
| 
 | ||||
| </style> | ||||
							
								
								
									
										126
									
								
								src/views/meetingManagement.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,126 @@ | ||||
| <!-- 会议管理 --> | ||||
| <template> | ||||
|   <div class="BEIJING"> | ||||
|     <el-form ref="questionForm" :model="questionForm"> | ||||
|       <el-form-item v-for="(question, index) in numList" :key="index" :label="`${index + 1}.`"> | ||||
|         <div>{{ question.proName }} </div> | ||||
|         <div class="acd" v-for="(quesItem, indexQ) in question.contentVoList" :key="indexQ">{{ | ||||
|       quesItem.evaluationContent | ||||
|     }} | ||||
|           <el-radio-group v-model="submitData[quesItem.index].qualityOptionsId"> | ||||
|             <div class="acd"> | ||||
|               <el-radio :key="optionIndex" v-for="(option, optionIndex) in quesItem.optionsList" :label="option.id">{{ | ||||
|       option.contentOptions }}</el-radio> | ||||
|             </div> | ||||
|           </el-radio-group> | ||||
|         </div> | ||||
|       </el-form-item> | ||||
|     </el-form> | ||||
|     <div class="arr"> | ||||
|       <el-button type="primary" @click="submitForm" :disabled="isshow">提交</el-button> | ||||
|     </div> | ||||
|   </div> | ||||
| </template> | ||||
| <script> | ||||
| 
 | ||||
| import { postUrl1, huoquUrl1 } from '../api/meet' | ||||
| export default { | ||||
|   name: 'ContractApproval', | ||||
|   components: { | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       urlid: '', | ||||
|       numList: [], | ||||
|       isshow: false, | ||||
|       radio: '3', | ||||
|       questionForm: {}, | ||||
|       formData: [], | ||||
|       submitData: [], | ||||
|     } | ||||
|   }, | ||||
|   created() { | ||||
|     this.TimuUrl() | ||||
|     this.geturl() | ||||
|   }, | ||||
|   methods: { | ||||
|     //获取网址的参数 | ||||
|     TimuUrl() { | ||||
|       var url = window.location.href; | ||||
|       console.log(url, 'w22222222222222'); | ||||
|       var urlnew = new URL(url) | ||||
|       this.urlid = urlnew.searchParams.get('qualityId') | ||||
|     }, | ||||
|     async geturl() { | ||||
|       const res = await huoquUrl1(this.urlid) | ||||
|       console.log(res, 'hhuu'); | ||||
|       this.numList = res.data.evaluationVoList | ||||
|       let index = 0; | ||||
|       this.numList.forEach(num => { | ||||
|         num.contentVoList.forEach(vo => { | ||||
|           vo.index = index | ||||
|           this.submitData.push({ | ||||
|             qualityId: this.urlid, | ||||
|             qualityProId: num.id, | ||||
|             qualityTopicId: vo.id, | ||||
|             qualityOptionsId: '' | ||||
|           }); | ||||
|           index++; | ||||
|         }) | ||||
|       }) | ||||
|       console.log(this.numList, 'yuyu'); | ||||
|       let data = { qualityId: res.data.id } | ||||
|       this.formData.push(data) | ||||
|     }, | ||||
|     submitForm() { | ||||
|       let isMissing = false; | ||||
|       this.submitData.forEach(item => { | ||||
|         console.log(item, 'oooo'); | ||||
|         if (item.qualityOptionsId == "") { | ||||
|           isMissing = true; | ||||
|         } | ||||
|       }); | ||||
|       if (isMissing) { | ||||
|         this.$message.error('请填写所有评价内容'); | ||||
|       } else { | ||||
|         postUrl1(this.submitData).then(res => { | ||||
|           if (res.code == 200) { | ||||
|             this.$message.success('提交成功') | ||||
|             this.isshow = true | ||||
|           } else { | ||||
|             this.$message.error(res.msg) | ||||
|           } | ||||
|         }); | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| <style> | ||||
| .BEIJING { | ||||
|   position: relative; | ||||
| } | ||||
| .acc { | ||||
|   display: flex; | ||||
|   flex-wrap: wrap; | ||||
|   width: 100%; | ||||
|   flex-direction: column; | ||||
|   align-items: flex-start; | ||||
|   margin-left: 15px; | ||||
|   background-color: pink; | ||||
| } | ||||
| .acd { | ||||
|   display: flex; | ||||
|   flex-direction: column; | ||||
|   align-items: flex-start; | ||||
|   margin-left: 15px; | ||||
| } | ||||
| .arr { | ||||
|   width: 100%; | ||||
|   height: 20px; | ||||
|   text-align: center; | ||||
| } | ||||
| .el-form-item__label { | ||||
|   margin-left: 5px; | ||||
| } | ||||
| </style> | ||||
							
								
								
									
										88
									
								
								src/views/narrate.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,88 @@ | ||||
| <template> | ||||
|     <div class="father"> | ||||
|         <div class="imgbox"></div> | ||||
| 
 | ||||
|         <!-- 标题 --> | ||||
|         <div class="title"> | ||||
|             <h2 style="">将军崖岩画</h2> | ||||
| 
 | ||||
|         </div> | ||||
|         <div> | ||||
|             <audio controls class="aud"> | ||||
|                 <source src="../assets/01.mp3" /> | ||||
|             </audio> | ||||
|         </div> | ||||
| 
 | ||||
|         <p style="margin-top: 20px;"> | ||||
|             再往上走就到了东方天书将军崖岩画,将军崖岩画位于万丈崖山头的南面,当地人称它为后小山。于1979年文物普查时被发现,于1988年1月被国务院确定为国家级文物保护单位。岩画上刻有人面,兽面,子午线,太阳图案,鱼形图案,农作物图案以及各种神秘的符号,在当时根据岩画刻画的风格,周围出土的石器以及碳十四的测量充分的可以断定这是新石器中晚期的产物至今约有10000多年的历史,它是我们祖先刻在石头上的原始档案,也是我国唯一一部反映原始社农业部落社会生活的石刻画面。 | ||||
|         </p> | ||||
|         <p style="margin-top: 20px;"> | ||||
|             那么将军崖岩画为什么会叫做将军崖呢?早年,在这座山的山头有一个天然的石棚,上面曾刻有汉代造像将军策马出行图,所以叫做将军崖。只不过这座石棚被人为的开山采石给破坏掉了,当地的老百姓便把这座小山体称之为将军崖。</p> | ||||
|         <p style="margin-top: 20px;"> | ||||
|             岩画刻于海拔20米处的山坡上,山坡呈西北向,很像一个巨大的扇面,也像是天盖。岩画共分为三组,主要内容有人面、农作物、鸟兽、星云等图案以及各种神秘的符号。我们来看第一组岩画:以人面和农作物图案为主。这第一个为人面画像,形体比较大,图像也比较清晰,而且保护完好,在整个岩画当中具有代表性。这第二个人面,与第一幅人面又有差别,刻有网纹头饰,用同心圆表示眼睛。眼角的阴刻鱼尾皱纹,额部和两腮往下各刻一条线与下面的禾苗相接。我们依次看一下这几个人面像,发现有几个共同点:第一额头的纹饰以复线三角纹、弦纹和网纹为主体,这些头饰的不同也代表了人地位的不同,因为装饰是地位的象征。以此我们也可以看出,当时的社会还处在人类社会的早期阶段也就是母系社会,人们对母亲、对女子的崇拜意识在这组岩画中得以体现。在当时女性的地位是最高的。第二这组岩画中人面刻像的共同点是都以阴线刻成,都具备额、眼、鼻、等五官特征,多以弧线作为眉毛,以同心圆表示眼睛,带有写实的风格,这表明东方民族的先民已经比较熟练的掌控了以线条造型的艺术手段。这种刻画手法与中国画以线造型的传统一脉相承的,只不过带有初始风格,显得更加古朴稚拙。第三这组人面像根本没有对四肢的描绘,多有一条线向下延伸到类似禾苗、谷穗等农作物上。这些农作物图案比较多,有呈三角形的,有呈放射型的,中间还夹有若干圆点,似乎表示果实。这些充分反映了我国古代东夷民族对土地、农作物的崇拜和依赖。禾苗的生长、庄稼的收获是一个原始农业部落最主要的生命线。这也应验了农业是生命之本的根本道理。 | ||||
|         </p> | ||||
|         <p style="margin-top: 20px;"> | ||||
|             下面这两幅是鸟头图案,比较清晰。为什么会有鸟兽的图案呢?这是因为东夷的先民将鸟作为自己的图腾崇拜,鸟头图案就是这种崇拜的产物。鸟能腾空飞翔,具有一种神奇的魔力,是人所不能具有的超人力量,因此原始人对它产生一种崇拜的心理而予以神话。由于当时古人还没有文字传承下来,所以让现代人破解天书带来了很大的难度,政府曾悬赏百万请各界的专家学者来破译这部“东方天书”。 | ||||
|         </p> | ||||
|         <p style="margin-top: 20px;"> | ||||
|             下面我们来看第二组岩画,这组岩画是以星象图案为主。首先映入眼帘的是一条长达6米多的带状星云图,很像天上的银河。在带状星云图中杂有不少单圈以及双圈圆点,这似乎表示星辰。其中以三条短线将它分为四个部分,是记录天空星云变化的观天记录。据推断,岩画上刻画的这条星云图与我们仰望天空星体的位置基本上是一致的。那么在当时古人是用什么观测到星体位置的,至今还是一个谜。在带状星云图的右侧,有三个呈三角形排列的太阳最引人注目。四周还有表示光芒的放射线,是根据光芒的多少来表示早、中、晚的太阳。三个太阳之所以这样排列,是记录一天的运转轨迹,与我们所说的黄道早、中、晚的三个位置选一个点。根据立竿见影的长度来划分早、中、晚的时间和节气。在三个太阳的东侧有一条四米多长的,呈南北向的人工刻痕线,经国家地质矿产部测得的结果。它与我们现在所说的子午线方位角只相差了3度15秒88分,这个无疑是世界古天文学的杰出成就。那么在当时古人是怎么观测到这个点,这也是一个谜。所以说将军崖也是先民对天体星象进行观测的古观象台 | ||||
|         </p> | ||||
|         <p style="margin-top: 20px;"> | ||||
|             我们再来看第三组岩画,这组岩画是比较与众不同的,它是我国上古时代先民们专用的祭坛。也是我国最早的祭祀遗址。我们来看这几块大石头,其中最大的一块为古代的“社神’.对面的三块小石头为社足。“三国志”中曾记载社身大石长丈许后有三小石为足,正好构成了上古时代的祭坛。这和文献中我国东方民族祭坛以石为“社”,大石为社主,三小石为社足的记载相吻合,每年的春耕秋收先民们都会在社神石下举行大型的祭祀活动。祭天风调雨顺,祭地五谷丰登以此获得更多的生活来源。我们看其中一块岩石上有大小不等的21个圆窝图案,圆窝直径在3-7厘米之间这些园窝是干什么用的呢?原始祭祀都是血祭。以活人祭祀或是宰杀牛羊而这些圆涡就是存放鲜血用的,将军崖岩画被国内考古专家们称之为“东方天书”。现在它的拓片作为史前时期的祭祀遗址,陈列在位于北京市地铁建国门站旁边的北京古观象台内。它的图像摹绘也挂在了北京地铁建国门车站候车大厅的“中国天文史壁画”中。将军崖岩画的星象图模型,曾远赴比利时、韩国等国家展出,代表了古代中国在天文观测方面的卓越成就。 | ||||
|         </p> | ||||
|         <div class="bottom"></div> | ||||
|     </div> | ||||
| 
 | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| 
 | ||||
| export default { | ||||
| 
 | ||||
|     data() { | ||||
|         return { | ||||
| 
 | ||||
|         } | ||||
|     }, | ||||
|     methods: { | ||||
| 
 | ||||
|     } | ||||
| } | ||||
| </script> | ||||
| 
 | ||||
| <style scoped> | ||||
| .father { | ||||
|     padding: 5px; | ||||
| } | ||||
| 
 | ||||
| .imgbox { | ||||
|     width: 420px; | ||||
|     height: 250px; | ||||
|     background-image: url('../assets/d3f792d7344fb0285e810db753ce1fa.jpg'); | ||||
|     background-size: cover; | ||||
| } | ||||
| 
 | ||||
| .title { | ||||
|     width: 420px; | ||||
|     height: 70px; | ||||
|     display: flex; | ||||
|     justify-content: center; | ||||
|     align-items: center; | ||||
| } | ||||
| 
 | ||||
| .aud { | ||||
|     width: 420px; | ||||
| } | ||||
| 
 | ||||
| p { | ||||
|     text-indent: 2rem; | ||||
|     color: #c1c2c3; | ||||
|     font-size: 17px; | ||||
| } | ||||
| .bottom{ | ||||
|     width: 440px; | ||||
|     height: 150px; | ||||
|     background-image: url('../assets/002.jpg'); | ||||
|     background-size: cover; | ||||
| } | ||||
| </style> | ||||
							
								
								
									
										29
									
								
								vue.config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @ -0,0 +1,29 @@ | ||||
| const { defineConfig } = require('@vue/cli-service') | ||||
| // const webpack = require("webpack")
 | ||||
| 
 | ||||
| module.exports = defineConfig({ | ||||
|   publicPath: "./", | ||||
|   // assetsDir: 'static',
 | ||||
|   transpileDependencies: true, | ||||
|   lintOnSave:false, | ||||
| 
 | ||||
|   // 配置插件参数
 | ||||
|   // configureWebpack: {
 | ||||
|   //   mode: 'production',
 | ||||
|   // },
 | ||||
|    | ||||
|   devServer: { | ||||
|     client: { | ||||
|       overlay: false, | ||||
|     }, | ||||
|   }, | ||||
|   configureWebpack: { | ||||
|     optimization: { | ||||
|       splitChunks: { | ||||
|         chunks: 'async', | ||||
|         minSize: 20000, | ||||
|         maxSize: 200000, | ||||
|       }, | ||||
|     }, | ||||
|   }, | ||||
| }) | ||||