This commit is contained in:
hezhengao 2024-05-23 15:58:30 +08:00
parent f0064bb3ca
commit 78e2df5522
55 changed files with 37285 additions and 0 deletions

24
README.md Normal file
View 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

File diff suppressed because it is too large Load Diff

68
package.json Normal file
View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

28
public/index.html Normal file
View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

13
src/App.vue Normal file
View File

@ -0,0 +1,13 @@
<template>
<div id="app">
<router-view />
</div>
</template>
<script>
</script>
<style>
</style>

19
src/api/login.js Normal file
View 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
View 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
View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

BIN
src/assets/01.mp3 Normal file

Binary file not shown.

BIN
src/assets/02.mp3 Normal file

Binary file not shown.

BIN
src/assets/03.mp3 Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
src/assets/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

200
src/components/Footer.vue Normal file
View 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>

View 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>

View File

@ -0,0 +1,148 @@
<template>
<div class="all">
<div class="travell">
<div class="left">
<span>
<img :src="require('@/imgs/时钟.png')" alt="" />
开馆时间9001700</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
View 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
View 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>

View 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>

View 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>

Binary file not shown.

Binary file not shown.

BIN
src/img/CH.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
src/img/CS.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
src/img/addbtn.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
src/img/addlike.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

BIN
src/img/arr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 B

BIN
src/img/close.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 410 B

BIN
src/img/file.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

BIN
src/img/formBack.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

BIN
src/img/loading.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

BIN
src/img/logOut.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
src/img/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
src/img/open.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 858 B

BIN
src/img/pageBack.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

BIN
src/img/pasLogo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 947 B

BIN
src/img/pdfImg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 601 B

BIN
src/img/sideBack.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

BIN
src/img/userLogo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 982 B

BIN
src/img/windoOpen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 413 B

BIN
src/img/windowClose.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 B

BIN
src/img/wordImg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

BIN
src/img/yhlogo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

22
src/main.js Normal file
View 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
View 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
View 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
View 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
View 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>

View 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
View 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
View 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,
},
},
},
})

6973
yarn.lock Normal file

File diff suppressed because it is too large Load Diff