线条颜色随机方式更改

This commit is contained in:
2024-09-13 13:59:25 +08:00
parent 9f54205cde
commit d89ef19138
18 changed files with 229 additions and 87 deletions

View File

@ -294,3 +294,13 @@ export function voyageRegPeopleUpload(data) {
data
})
}
// 批量导入航次数据
export function voyageRegImport(data) {
return request({
url: '/voyage/reg/upload.htm',
method: 'post',
type: 'multipart/form-data',
data
})
}

View File

@ -86,3 +86,13 @@ export function getParamsList(query) {
params: query
})
}
// 首页统计数据
export function statisticsNums(data) {
return request({
url: '/report/main.htm',
method: 'post',
type: 'application/x-www-form-urlencoded',
data
})
}

View File

@ -1,6 +1,6 @@
<template>
<div>
<Header v-if="name!='biologyIndex' && name!='genovariation' && name!='physicalIndex' && name!='physicalDataSearchCTD' && name!='physicalDataDelivery' && name!='phoneVideoIndex'" />
<Header v-if="name!='biologyIndex' && name!='genovariation' && name!='physicalIndex' && name!='physicalDataSearchCTD' && name!='physicalDataDelivery' && name!='phoneVideoIndex' && name!='dataSearch'" />
<div class="container container_a">
<router-view />
</div>

View File

@ -9,10 +9,10 @@
<ul>
<li><router-link to="/">首页</router-link></li>
<li><router-link to="/">样品发现</router-link></li>
<!-- <li><router-link to="/">样品发现</router-link></li>-->
<li><router-link to="/">数据资源</router-link></li>
<li><router-link to="/">在线服务</router-link></li>
<li><router-link to="/container/news">新闻动态</router-link></li>
<!-- <li><router-link to="/container/news">新闻动态</router-link></li>-->
<li><router-link to="/">通知公告</router-link></li>
<li><router-link to="/">联系我们</router-link></li>
</ul>

View File

@ -261,6 +261,14 @@ export default {
Cookies.set('JSESSIONID', res.map.FrameSessionId);
this.isLogin = res.login
localStorage.setItem('isLogin', res.login)
const dicts = res.map.FrameDictArray
let treatmentStateDict = []
dicts.forEach(item => {
if (item.dict_name === 'SampleStatus') {
treatmentStateDict.push(item)
}
})
localStorage.setItem('treatmentStateDict', JSON.stringify(treatmentStateDict))
if (this.isLogin) {
this.menuList = this.adminMenu
} else {

View File

@ -162,6 +162,8 @@ color:#0ba1e4;
overflow: hidden;
margin-bottom: 20px;
margin-top: 10px;
display: flex;
justify-content: space-between;
.filter-item {
display: inline-block;
vertical-align: middle;

View File

@ -134,7 +134,8 @@
<img src="../../static/images/arrow_nav1.png" alt="">
</div>
<div class="right">
<div id="cesiumContainerData" style="height: calc(100vh - 90px);width:100%;" />
<div id="cesiumContainerData" style="height: 100vh;width:100%;" />
<el-image class="logo" src="../../static/images/logo_map.png" @click="goHome" />
</div>
</div>
<!-- 航次名称弹窗-->
@ -790,6 +791,9 @@ export default {
this.chooseLine.polyline.width = 5
this.chooseLine.polyline.material = this.chooseLine.oldMaterial
}
},
goHome() {
this.$router.push({name: 'home'})
}
}
}
@ -801,14 +805,14 @@ export default {
height: 100%;
.shuju_con {
width: 100%;
height: calc(100vh - 90px);
height: 100%;
display: flex;
align-items: center;
justify-content: center;
.left {
position: relative;
width: 570px;
height: 100%;
height: 100vh;
background: #fff;
box-sizing: border-box;
padding: 50px 30px;
@ -966,6 +970,16 @@ export default {
.right {
width: 100%;
height: 100%;
position: relative;
.logo {
width: 60px;
height: 60px;
cursor: pointer;
position: absolute;
bottom: 20px;
right: 20px;
}
}
}
}
@ -990,4 +1004,5 @@ export default {
color: #fff;
background: none !important;
}
</style>

View File

@ -9,6 +9,9 @@
</el-breadcrumb>
</div>
<div class="filter-container">
<div class="search">
</div>
<div class="checkBtn flex">
<el-button
v-for="item in btnList"

View File

@ -130,7 +130,7 @@
<el-col :span="8">
<el-form-item label="处理状态" prop="sample_status">
<el-select v-model="form.sample_status" filterable placeholder="" style="width: 100%;">
<el-option v-for="item in sampleStatusDicts" :key="item" :label="item" :value="item"/>
<el-option v-for="item in sampleStatusDicts" :key="item.dict_text" :label="item.dict_text" :value="item.dict_value"/>
</el-select>
</el-form-item>
</el-col>
@ -311,7 +311,7 @@ export default {
//
publishRuleDicts: ['公开获取', '延期公开(6个月)', '延期公开(12个月)', '延期公开(24个月)', '不公开'],
//
sampleStatusDicts: ['原始数据', '预处理数据', '后处理数据'],
sampleStatusDicts: [],
//
tagTypes: ['应急搜捞', '全球深渊深潜计划', '崖州湾共享航次', '基金委共享航次'],
inputVisible: false,
@ -329,6 +329,8 @@ export default {
},
created() {
this.getData()
const treatmentStateDict = localStorage.getItem('treatmentStateDict')
this.sampleStatusDicts = JSON.parse(treatmentStateDict)
},
methods: {
//

View File

@ -9,16 +9,40 @@
</el-breadcrumb>
</div>
<div class="filter-container">
<div class="checkBtn">
<el-button type="primary" size="medium" @click="handleAdd">航次数据录入</el-button>
<div class="search">
<el-input placeholder="模糊查询" v-model="params.query" style="width: 300px;">
<el-button slot="append" icon="el-icon-search" @click="getData"></el-button>
</el-input>
</div>
<div class="checkBtn" style="display: flex">
<el-button type="primary" size="medium" @click="handleAdd" style="margin-right: 10px;">航次数据录入</el-button>
<el-upload
class="upload-btn"
ref="upload"
action="action"
:multiple="false"
:show-file-list="false"
:http-request="uploadReg"
:before-upload="beforeUploadReg"
>
<el-button :loading="loadingRegBtn">{{ textReg }}</el-button>
</el-upload>
</div>
</div>
<el-table ref="tableData" v-loading="loading" stripe border :data="tableData" :header-cell-style="{ background: '#dddfe6',color: '#555960',textAlign: 'center' }" :cell-style="{ textAlign: 'center' }">
<el-table-column type="index" label="#" width="50"/>
<el-table-column prop="voyage_name" label="航次名称" />
<el-table-column prop="ship_name" label="科考船舶" />
<el-table-column prop="voyage_start_date" label="离港日期" />
<el-table-column prop="voyage_end_date" label="返港日期" />
<el-table-column prop="voyage_start_date" label="离港日期">
<template slot-scope="scope">
<span>{{ scope.row.voyage_start_date ? scope.row.voyage_start_date.slice(0,10) : '' }}</span>
</template>
</el-table-column>
<el-table-column prop="voyage_end_date" label="返港日期">
<template slot-scope="scope">
<span>{{ scope.row.voyage_end_date ? scope.row.voyage_end_date.slice(0,10) : '' }}</span>
</template>
</el-table-column>
<el-table-column prop="voyage_officer" label="首席" />
<el-table-column prop="member_total" label="参航人数" />
<el-table-column prop="funding_org" label="资助机构" />
@ -347,7 +371,7 @@ import {
voyageRegNav,
uploadNavigation,
voyageRegPeople,
voyageRegPeopleDelete, voyageRegPeopleEdit, voyageRegPeopleUpload
voyageRegPeopleDelete, voyageRegPeopleEdit, voyageRegPeopleUpload, voyageRegImport
} from '@/api/dataTransfer'
import { time } from '@/utils/validate'
@ -360,7 +384,8 @@ export default {
params: {
start: 0,
limit: 10,
group: 10
group: 10,
query: ''
},
pageNum: 1,
//
@ -448,7 +473,10 @@ export default {
rulesPeople: {},
sexOptions: ['男', '女', '保密'],
textPeople: '上传参航人员',
loadingPeopleBtn: false
loadingPeopleBtn: false,
//
loadingRegBtn: false,
textReg: '航次数据批量导入'
}
},
created() {
@ -766,6 +794,31 @@ export default {
this.textPeople = '上传参航人员'
})
},
//
beforeUploadReg(file) { //
const type = file.name.split('.')[1]
if (type !== 'xlsx') {
this.$message({ type: 'error', message: '只支持xlsx文件格式' })
return false
}
},
uploadReg(param) {
this.loadingRegBtn = true
this.textReg = '数据处理中'
const formData = new FormData()
formData.append('file', param.file)
voyageRegImport(formData).then(res => {
if (res.errorCode === 0) {
this.loadingRegBtn = false
this.textReg = '航次数据批量导入'
this.$message.success('导入成功!')
this.getData()
}
}).cache(() => {
this.loadingRegBtn = false
this.textReg = '航次数据批量导入'
})
},
},
watch: {
dynamicTags2(arr) {

View File

@ -9,6 +9,11 @@
</el-breadcrumb>
</div>
<div class="filter-container">
<div class="search">
<el-input placeholder="模糊查询" v-model="params.query" style="width: 300px;">
<el-button slot="append" icon="el-icon-search" @click="getData"></el-button>
</el-input>
</div>
<div class="checkBtn">
<el-button type="primary" size="medium" @click="handleAdd">数据样品类型录入</el-button>
</div>
@ -85,7 +90,8 @@ export default {
params: {
start: 0,
limit: 10,
group: 10
group: 10,
query: ''
},
pageNum: 1,
//

View File

@ -9,6 +9,11 @@
</el-breadcrumb>
</div>
<div class="filter-container">
<div class="search">
<el-input placeholder="模糊查询" v-model="params.query" style="width: 300px;">
<el-button slot="append" icon="el-icon-search" @click="getData"></el-button>
</el-input>
</div>
<div class="checkBtn">
<el-button type="primary" size="medium" @click="handleAdd">设备类型录入</el-button>
</div>
@ -85,7 +90,8 @@ export default {
params: {
start: 0,
limit: 10,
group: 10
group: 10,
query: ''
},
pageNum: 1,
//

View File

@ -9,6 +9,11 @@
</el-breadcrumb>
</div>
<div class="filter-container">
<div class="search">
<el-input placeholder="模糊查询" v-model="params.query" style="width: 300px;">
<el-button slot="append" icon="el-icon-search" @click="getData"></el-button>
</el-input>
</div>
<div class="checkBtn">
<el-button type="primary" size="medium" @click="handleAdd">平台类型录入</el-button>
</div>
@ -85,7 +90,8 @@ export default {
params: {
start: 0,
limit: 10,
group: 10
group: 10,
query: ''
},
pageNum: 1,
//

View File

@ -9,6 +9,11 @@
</el-breadcrumb>
</div>
<div class="filter-container">
<div class="search">
<el-input placeholder="模糊查询" v-model="params.query" style="width: 300px;">
<el-button slot="append" icon="el-icon-search" @click="getData"></el-button>
</el-input>
</div>
<div class="checkBtn">
<el-button type="primary" size="medium" @click="handleAdd">共享单位录入</el-button>
</div>
@ -101,7 +106,8 @@ export default {
params: {
start: 0,
limit: 10,
group: 10
group: 10,
query: ''
},
pageNum: 1,
//

View File

@ -9,6 +9,11 @@
</el-breadcrumb>
</div>
<div class="filter-container">
<div class="search">
<el-input placeholder="模糊查询" v-model="params.query" style="width: 300px;">
<el-button slot="append" icon="el-icon-search" @click="getData"></el-button>
</el-input>
</div>
<div class="checkBtn">
<el-button type="primary" size="medium" @click="handleAdd">新增参航单位</el-button>
</div>
@ -79,7 +84,8 @@ export default {
params: {
start: 0,
limit: 10,
group: 10
group: 10,
query: ''
},
pageNum: 1,
//

View File

@ -18,11 +18,11 @@
</div>
<div class="left2">
<div class="left2_1">
<p>56,204</p>
<p>{{ statistics.DataTotal }}</p>
<span>数据样品数</span>
</div>
<div class="left2_1">
<p>260</p>
<p>{{ statistics.DatasetTotal }}</p>
<span>数据集个数</span>
</div>
</div>
@ -33,23 +33,23 @@
</div>
<div class="right2">
<div class="right2_1">
<p>204</p>
<p>{{ statistics.VoyageTotal }}</p>
<span>航次个数</span>
</div>
<div class="right2_1">
<p>360</p>
<p>{{ statistics.DayTotal }}</p>
<span>航次天数</span>
</div>
<div class="right2_1">
<p>204</p>
<p>{{ statistics.ShenHaiTotal }}</p>
<span>深海勇士号潜次数</span>
</div>
<div class="right2_1">
<p>204</p>
<p>{{ statistics.FenDouTotal }}</p>
<span>奋斗者号潜次数</span>
</div>
<div class="right2_1">
<p>5,623</p>
<p>{{ statistics.MileageTotal }}</p>
<span>航行里程</span>
</div>
</div>
@ -155,6 +155,7 @@
</div>
</div>
</div>
<div class="dongtai">
<el-row>
@ -171,19 +172,32 @@
</el-row>
<div class="dongtai_bot">
<ul>
<li v-for="(item, index) in newsList" :key="index" @click="turnPage('news')">
<li v-for="(item, index) in dataUpdateList" :key="index" @click="turnDetailPage(item)">
<div class="date">
<p>{{ item.day }}</p>
<span>{{ item.date }}</span>
<p>{{ item.voyage_end_date.slice(8,10) }}</p>
<span>{{ item.voyage_end_date.slice(0,7) }}</span>
</div>
<div class="des">
<p>{{ item.title }}</p>
<span>{{ item.des }}</span>
<p>{{ item.voyage_name }}</p>
<span>{{ item.voyage_remark }}</span>
</div>
</li>
</ul>
<ul>
<li v-for="(item, index) in sampleDataUpdateList" :key="index">
<div class="date">
<p>{{ item.create_time.slice(8,10) }}</p>
<span>{{ item.create_time.slice(0,7) }}</span>
</div>
<div class="des">
<p>{{ item.dataset_name }}</p>
<span>{{ item.job_type }}</span>
</div>
</li>
</ul>
</div>
</div>
<div class="gongju">
<div class="gongju_top">
<img src="../../static/images/shuju5.png" alt="">
@ -216,9 +230,10 @@
<script>
import Footer from '../components/public/Footer'
import { getVoyage, getVoyageLine, getParamsList } from '../api/home'
import { getVoyage, getVoyageLine, getParamsList, statisticsNums } from '../api/home'
import { swiper, swiperSlide } from 'vue-awesome-swiper'
import 'swiper/swiper-bundle.css'
import { sampleDatasetList, voyageRegList } from '@/api/dataTransfer'
const Cesium = window.Cesium
export default {
@ -230,6 +245,7 @@ export default {
},
data() {
return {
statistics: {},
movementTimer: null,
iconImgW: require('../../static/images/14-w.png'),
map: null,
@ -267,50 +283,8 @@ export default {
},
chooseIndex: -1,
voyageList: [],
newsList: [
{
title:
'深海工程菌SS-DY31-Ⅱ-W1306-BC-1 样品数据发布包含4个目、7个科、15个属的共1232个样品数据。',
des: '海底热液循环可以改变海水和洋壳的化学组成,也会影响洋壳的增生和冷却过程,对于理解...',
day: '25',
date: '2023-03'
},
{
title:
'深海工程菌SS-DY31-Ⅱ-W1306-BC-1 样品数据发布包含4个目、7个科、15个属的共1232个样品数据。',
des: '海底热液循环可以改变海水和洋壳的化学组成,也会影响洋壳的增生和冷却过程,对于理解...',
day: '25',
date: '2023-03'
},
{
title:
'深海工程菌SS-DY31-Ⅱ-W1306-BC-1 样品数据发布包含4个目、7个科、15个属的共1232个样品数据。',
des: '海底热液循环可以改变海水和洋壳的化学组成,也会影响洋壳的增生和冷却过程,对于理解...',
day: '25',
date: '2023-03'
},
{
title:
'深海工程菌SS-DY31-Ⅱ-W1306-BC-1 样品数据发布包含4个目、7个科、15个属的共1232个样品数据。',
des: '海底热液循环可以改变海水和洋壳的化学组成,也会影响洋壳的增生和冷却过程,对于理解...',
day: '25',
date: '2023-03'
},
{
title:
'深海工程菌SS-DY31-Ⅱ-W1306-BC-1 样品数据发布包含4个目、7个科、15个属的共1232个样品数据。',
des: '海底热液循环可以改变海水和洋壳的化学组成,也会影响洋壳的增生和冷却过程,对于理解...',
day: '25',
date: '2023-03'
},
{
title:
'深海工程菌SS-DY31-Ⅱ-W1306-BC-1 样品数据发布包含4个目、7个科、15个属的共1232个样品数据。',
des: '海底热液循环可以改变海水和洋壳的化学组成,也会影响洋壳的增生和冷却过程,对于理解...',
day: '25',
date: '2023-03'
}
],
dataUpdateList: [],
sampleDataUpdateList: [],
viewer: null,
color: [Cesium.Color.RED, Cesium.Color.GREEN, Cesium.Color.BLUE, Cesium.Color.CHARTREUSE, Cesium.Color.DARKBLUE],
//
@ -326,6 +300,9 @@ export default {
created() {
this.getVoyageList()
this.getParams()
this.getStatisticsNums()
this.dataUpdate()
this.sampleDataUpdate()
},
mounted() {
// this.initCesium()
@ -496,14 +473,44 @@ export default {
this.chooseIndex = i
this.drawLine(i, item.tsy_id, item.points)
},
//
turnPage(val, a) {
if (!a) {
this.$router.push({ name: val })
} else {
window.open(val, '_blank')
}
//
getStatisticsNums() {
statisticsNums().then(res => {
this.statistics = res.map
})
},
//
dataUpdate() {
voyageRegList({
start: 0,
limit: 3,
group: 10,
order: 'voyage_end_date',
type: 'DESC'
}).then(res => {
this.dataUpdateList = res.page.records
})
},
//
turnDetailPage(item) {
this.$router.push({
name: 'dataDetail',
query: {
voyage_name: item.voyage_name
}
})
},
//
sampleDataUpdate() {
sampleDatasetList({
start: 0,
limit: 3,
group: 10,
}).then(res => {
console.log(res)
this.sampleDataUpdateList = res.page.records
})
}
}
}
</script>
@ -1073,9 +1080,11 @@ export default {
.dongtai_bot {
width: 85%;
height: auto;
display: flex;
justify-content: space-between;
ul {
width: 100%;
width: 45%;
height: auto;
display: flex;
flex-wrap: wrap;
@ -1083,7 +1092,7 @@ export default {
li {
margin-bottom: 35px;
width: 48%;
width: 100%;
height: 170px;
background: #fff;
border-radius: 10px;

View File

@ -76,7 +76,7 @@ export default {
initInfo().then(res => {
Cookies.set('JSESSIONID', res.map.FrameSessionId);
this.isLogin = res.login
location.href = '/'
location.href = './'
})
} else {
this.$message.error(res.errorMsg)

BIN
static/images/logo_map.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB