dev_202412
yujialong 10 months ago
parent b97887506e
commit b61162f633
  1. 41
      src/components/breadcrumb/index.vue
  2. 4
      src/layouts/header/index.vue
  3. 305
      src/layouts/navbar/index.vue
  4. 20
      src/pages/match/details/index.vue
  5. 66
      src/pages/record/details/index.vue
  6. 452
      src/pages/record/show/index.vue
  7. 18
      src/router/modules/product.js
  8. 2
      src/setting.js

@ -3,12 +3,10 @@
<div class="breadcrumb">
<el-breadcrumb separator=">">
<template v-for="(item, i) in routes">
<el-breadcrumb-item v-if="i != routes.length - 1"
:key="i">
<el-breadcrumb-item v-if="i != routes.length - 1" :key="i">
<span @click="to(item)">{{ item.name }}</span>
</el-breadcrumb-item>
<el-breadcrumb-item v-else
:key="i">
<el-breadcrumb-item v-else :key="i">
{{ item.name }}
</el-breadcrumb-item>
</template>
@ -40,22 +38,25 @@ export default {
</script>
<style lang="scss" scoped>
.breadcrumb {
margin: 4px 0 16px;
/deep/.el-breadcrumb__item {
.el-breadcrumb__inner,
.el-breadcrumb__separator {
font-weight: 400;
color: $main-color;
}
.el-breadcrumb__inner {
cursor: pointer;
}
&:last-child {
.el-breadcrumb__inner {
color: #0b1d30;
cursor: default;
}
}
margin: 4px 0 16px;
/deep/.el-breadcrumb__item {
.el-breadcrumb__inner,
.el-breadcrumb__separator {
font-weight: 400;
color: $main-color;
}
.el-breadcrumb__inner {
cursor: pointer;
}
&:last-child {
.el-breadcrumb__inner {
color: #0b1d30;
cursor: default;
}
}
}
}
</style>

@ -10,7 +10,7 @@
<template v-else>
<img v-if="isZj" src="/images/4.png" alt="">
<img v-else-if="isSq" style="max-height: 100%" src="/images/1.png" alt="">
<img v-else :style="{ maxWidth: title ? '200px' : '300px' }" :src="logoUrl" height="50" />
<img v-else :src="logoUrl" />
<span class="title">{{ title }}</span>
</template>
</a>
@ -300,7 +300,7 @@ $height: 64px;
cursor: pointer;
img {
max-width: 300px;
max-height: 50px;
margin-right: 10px;
}
}

@ -1,33 +1,19 @@
<template>
<div>
<!-- pc端 -->
<ul v-if="!$store.state.layout.isMobile"
class="nav">
<li v-for="(item, i) in menus"
:key="i"
:class="{active: active == item.id}"
@click="jump(item)">
{{item.name}}
<ul :class="['children']"
v-if="item.id === '/preInfo/list' || item.id === '/info/list'">
<li v-for="(column, i) in columns"
:key="i"
:class="{active: columnActive === column.id}"
@click="toInfo($event, column)">{{ column.name }}</li>
<ul v-if="!$store.state.layout.isMobile" class="nav">
<li v-for="(item, i) in menus" :key="i" :class="{ active: active == item.id }" @click="jump(item)">
{{ item.name }}
<ul :class="['children']" v-if="item.id === '/preInfo/list' || item.id === '/info/list'">
<li v-for="(column, i) in columns" :key="i" :class="{ active: columnActive === column.id }"
@click="toInfo($event, column)">{{ column.name }}</li>
</ul>
</li>
</ul>
<!-- 移动端 -->
<el-menu v-else
ref="elMenu"
class="menu"
background-color="#fff"
text-color="#333"
active-text-color="#006eff"
@open="menuClick"
@select="menuClick"
:default-active="String(active)">
<el-menu v-else ref="elMenu" class="menu" background-color="#fff" text-color="#333" active-text-color="#006eff"
@open="menuClick" @select="menuClick" :default-active="String(active)">
<menuTree :menuList="menus" />
</el-menu>
</div>
@ -133,13 +119,13 @@ export default {
},
watch: {
"$route" (to, from) {
let actives = this.actives;
let actives = this.actives
for (let i in this.actives) {
if (actives[i].includes(this.$route.name)) this.active = `/${i}/list`;
if (actives[i].includes(this.$route.name)) this.active = `/${i}/list`
}
let arr = this.$route.path.split("/");
let arr = this.$route.path.split("/")
let name = `/${arr[1]}/list`
this.active = name;
this.active = name === '/index/list' && Setting.isZxy ? '/index/zxy' : name
}
},
mounted () {
@ -152,7 +138,7 @@ export default {
if (Setting.isZxy) {
menus[0].id = '/index/zxy'
menus.splice(1, 0, {
id: '/product',
id: '/product/list',
name: '产品服务'
})
}
@ -226,153 +212,182 @@ export default {
<style lang="scss" scoped>
.nav {
position: absolute;
top: 0;
left: 50%;
display: flex;
transform: translateX(-50%);
&>li {
position: relative;
padding: 0 15px;
margin: 0 20px;
font-size: 16px;
line-height: 60px;
color: #3f3f3f;
white-space: nowrap;
cursor: pointer;
border-bottom: 4px solid transparent;
&.active {
color: $main-color;
border-bottom-color: $main-color;
}
&:hover {
.children {
display: flex;
}
}
}
.children {
position: absolute;
top: 0;
top: 64px;
left: 50%;
display: flex;
display: none;
background-color: #fff;
border-bottom-left-radius: 6px;
border-bottom-right-radius: 6px;
box-shadow: 0px 2px 10px 0px rgba(0, 0, 0, 0.15);
transform: translateX(-50%);
& > li {
position: relative;
padding: 0 15px;
margin: 0 20px;
font-size: 16px;
line-height: 60px;
color: #3f3f3f;
white-space: nowrap;
cursor: pointer;
border-bottom: 4px solid transparent;
&.active {
color: $main-color;
border-bottom-color: $main-color;
}
&:hover {
.children {
display: flex;
}
}
&.show {
display: flex;
}
.children {
position: absolute;
top: 64px;
left: 50%;
display: none;
background-color: #fff;
border-bottom-left-radius: 6px;
border-bottom-right-radius: 6px;
box-shadow: 0px 2px 10px 0px rgba(0, 0, 0, 0.15);
transform: translateX(-50%);
&.show {
display: flex;
}
& > li {
padding: 0 20px;
margin: 0 20px;
color: #333;
line-height: 64px;
cursor: pointer;
&:before {
content: '';
display: inline-block;
width: 3px;
height: 3px;
margin-right: 10px;
vertical-align: middle;
background-color: #333;
}
&.active {
color: $main-color;
&:before {
background-color: $main-color;
}
}
&>li {
padding: 0 20px;
margin: 0 20px;
color: #333;
line-height: 64px;
cursor: pointer;
&:before {
content: '';
display: inline-block;
width: 3px;
height: 3px;
margin-right: 10px;
vertical-align: middle;
background-color: #333;
}
&.active {
color: $main-color;
&:before {
background-color: $main-color;
}
}
}
}
}
$height: 90px;
/deep/.menu.el-menu--horizontal {
display: flex;
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
border: 0;
outline: none;
.el-menu-item,
.el-submenu__title {
height: $height;
line-height: $height;
span {
font-size: 1rem;
font-weight: 600;
}
&:hover {
background-color: transparent !important;
span {
color: #1583ff;
}
}
}
.el-submenu__title {
display: inline-flex;
justify-content: center;
align-items: center;
}
.menu-child {
display: flex;
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
border: 0;
outline: none;
}
.el-submenu__icon-arrow {
position: static;
margin: 0 0 0 5px;
color: inherit;
}
.is-active {
color: #333 !important;
}
.active,
.active .el-submenu__title {
color: #1583ff !important;
}
&.home {
.el-menu-item,
.el-submenu__title {
height: $height;
line-height: $height;
&:hover {
background-color: transparent !important;
span {
font-size: 1rem;
font-weight: 600;
}
&:hover {
background-color: transparent !important;
span {
color: #1583ff;
}
color: #fff;
}
}
}
.el-submenu__title {
display: inline-flex;
justify-content: center;
align-items: center;
}
.menu-child {
display: flex;
}
.el-submenu__icon-arrow {
position: static;
margin: 0 0 0 5px;
color: inherit;
}
.is-active {
color: #333 !important;
color: #f9f9f9 !important;
}
.active,
.active .el-submenu__title {
color: #1583ff !important;
}
&.home {
.el-menu-item,
.el-submenu__title {
&:hover {
background-color: transparent !important;
span {
color: #fff;
}
}
}
.is-active {
color: #f9f9f9 !important;
}
.active,
.active .el-submenu__title {
color: #fff !important;
}
color: #fff !important;
}
}
}
@media (max-width: 1870px) {
.nav {
left: 55%;
& > li {
margin: 0 10px;
}
.nav {
left: 55%;
&>li {
margin: 0 10px;
}
}
}
@media (max-width: 1440px) {
.nav {
left: 53%;
& > li {
padding: 0 10px;
}
.nav {
left: 53%;
&>li {
padding: 0 10px;
}
}
}
@media (max-width: 1360px) {
.nav {
& > li {
padding: 0 4px;
}
.nav {
&>li {
padding: 0 4px;
}
}
}
</style>

@ -261,9 +261,7 @@
<td>
<div v-if="showButton" class="m-b-10 text-right">
<el-button type="primary" :disabled="status > 3" @click="automaticAllocationMember">{{
assignRecord.assignOrNot
? '取消' : ''
}}自动分配阶段成员</el-button>
assignRecord.assignOrNot && status < 3 ? '取消' : '' }}自动分配阶段成员</el-button>
</div>
<table class="table tc">
<tr>
@ -1348,28 +1346,28 @@ export default {
},
//
automaticAllocationMember () {
const whether = this.assignRecord.assignOrNot
this.$confirm(`确定${whether ? '取消' : '开启'}自动分配阶段成员`, '提示', {
const whether = this.assignRecord.assignOrNot && this.status < 3
this.$confirm(`确定${whether ? '取消' : ''}自动分配阶段成员`, '提示', {
cancelButtonText: '否',
confirmButtonText: '是',
type: 'success',
closeOnClickModal: false,
}).then(async () => {
// =true
if (this.assignRecord.assignOrNot) {
//
if (this.status < 3) {
await this.$post(this.api.competitionTeamAutomaticAllocationRecordSave, {
id: this.assignRecord.id,
assignOrNot: 0,
assignOrNot: whether ? 0 : 1,
competitionId: this.id,
teamId: this.info.teamId
})
} else {
await this.$post(`${this.api.assignedPlayer}?competitionId=${this.id}&teamId=${this.info.teamId}`)
await this.$post(`${this.api.assignedPlayer}?competitionId=${this.id}&teamId=${this.info.teamId} `)
}
this.getData()
this.getInfo()
Util.successMsg(`${whether ? '取消' : '开启'}自动分配成功!`)
Util.successMsg(`${whether ? '取消' : ''} 自动分配成功!`)
}).catch(() => { })
},
//
@ -1573,7 +1571,7 @@ export default {
type: 'success',
closeOnClickModal: false
}).then(() => {
this.$post(`${this.api.cancelRegistration}?competitionId=${this.id}`).then(res => {
this.$post(`${this.api.cancelRegistration}?competitionId = ${this.id} `).then(res => {
this.status = 2
this.$message.success('取消报名成功')
this.getData()

@ -5,69 +5,35 @@
<div class="page">
<div class="flex-between m-b-20">
<h6 class="l-title">
<img src="@/assets/img/record7.png"
alt="">
<img src="@/assets/img/record7.png" alt="">
实验报告列表
</h6>
<div>
<el-button type="primary"
@click="exportData">导出数据</el-button>
<el-button type="primary" @click="exportData">导出数据</el-button>
</div>
</div>
<el-table ref="table"
class="table"
stripe
header-align="center"
:data="listData"
@selection-change="handleSelectionChange"
row-key="reportId">
<el-table-column type="selection"
width="55"
align="center"
:reserve-selection="true"></el-table-column>
<el-table-column prop="id"
label="次序"
width="80"
align="center"
type="index"></el-table-column>
<el-table-column prop="projectName"
label="实验项目名称"
align="center"></el-table-column>
<el-table-column prop="score"
width="100"
label="得分"
align="center"></el-table-column>
<el-table-column prop="timeSum"
width="100"
label="耗时"
align="center">
<el-table ref="table" class="table" stripe header-align="center" :data="listData"
@selection-change="handleSelectionChange" row-key="reportId">
<el-table-column type="selection" width="55" align="center" :reserve-selection="true"></el-table-column>
<el-table-column prop="id" label="次序" width="80" align="center" type="index"></el-table-column>
<el-table-column prop="projectName" label="实验项目名称" align="center"></el-table-column>
<el-table-column prop="score" width="100" label="得分" align="center"></el-table-column>
<el-table-column prop="timeSum" width="100" label="耗时" align="center">
<template slot-scope="scope">
{{ scope.row.timeSum }}min
</template>
</el-table-column>
<el-table-column prop="startTime"
width="160"
label="起始时间"
align="center"></el-table-column>
<el-table-column prop="submitTime"
width="160"
label="结束时间"
align="center"></el-table-column>
<el-table-column width="100"
label="操作"
align="center">
<el-table-column prop="startTime" width="160" label="起始时间" align="center"></el-table-column>
<el-table-column prop="submitTime" width="160" label="结束时间" align="center"></el-table-column>
<el-table-column width="100" label="操作" align="center">
<template slot-scope="scope">
<el-button type="text"
@click="toReport(scope.row)">实验报告</el-button>
<el-button type="text" @click="toReport(scope.row)">实验报告</el-button>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination background
layout="total, prev, pager, next"
:total="total"
:current-page="page"
@current-change="handleCurrentChange"></el-pagination>
<el-pagination background layout="total, prev, pager, next" :total="total" :current-page="page"
@current-change="handleCurrentChange"></el-pagination>
</div>
</div>
</div>
@ -165,6 +131,6 @@ export default {
<style scoped>
.wrap {
padding: 12px 100px 20px;
padding: 12px 100px 20px;
}
</style>

@ -3,222 +3,141 @@
<div class="wrap">
<div class="top">
<breadcrumb :routes.sync="routes" />
<span v-if="fromPython"
class="back"
@click="back">返回实验</span>
<span v-if="fromPython" class="back" @click="back">返回实验</span>
</div>
<div class="content"
v-loading="loading"
id="pdfDom">
<div class="content" v-loading="loading" id="pdfDom">
<div class="text-right">
<el-button @click="editReport">
{{ editing ? "保存" : "编辑" }}
</el-button>
<el-button type="primary"
@click="exportPage">导出报告</el-button>
<el-button type="primary" @click="exportPage">导出报告</el-button>
</div>
<h6 class="r-title">标准实验报告</h6>
<div class="info">
<h6 class="l-title">
<img src="@/assets/img/report1.png"
alt="">
<img src="@/assets/img/report1.png" alt="">
基本信息
</h6>
<ul :class="['info-list', {edit: editing}]">
<ul :class="['info-list', { edit: editing }]">
<li>
<label>学生姓名</label>
<el-input v-if="editing"
v-model="infoData.userName"
disabled></el-input>
<el-input v-if="editing" v-model="infoData.userName" disabled></el-input>
<span v-else>{{ infoData.userName }}</span>
</li>
<li>
<label>学生学号</label>
<el-input v-if="editing"
v-model="infoData.workNumber"
disabled></el-input>
<el-input v-if="editing" v-model="infoData.workNumber" disabled></el-input>
<span v-else>{{ infoData.workNumber }}</span>
</li>
<li>
<label>实验时间</label>
<el-input v-if="editing"
v-model="infoData.submitTime"
disabled></el-input>
<el-input v-if="editing" v-model="infoData.submitTime" disabled></el-input>
<span v-else>{{ infoData.submitTime }}</span>
</li>
<li>
<label>实验成绩</label>
<el-input v-if="editing"
v-model="infoData.score"
disabled></el-input>
<div v-else
class="score-wrap">
<el-input v-if="editing" v-model="infoData.score" disabled></el-input>
<div v-else class="score-wrap">
<em>{{ infoData.score }}</em>
<img src="@/assets/img/point.png"
alt="">
<img src="@/assets/img/point.png" alt="">
</div>
</li>
<li>
<label>学生班级</label>
<el-input v-if="editing"
v-model="infoData.className"></el-input>
<el-input v-if="editing" v-model="infoData.className"></el-input>
<span v-else>{{ infoData.className }}</span>
</li>
<li>
<label>指导老师</label>
<el-input v-if="editing"
v-model="infoData.instructor"></el-input>
<el-input v-if="editing" v-model="infoData.instructor"></el-input>
<span v-else>{{ infoData.instructor }}</span>
</li>
<li>
<label>实验学时</label>
<el-input v-if="editing"
v-model="infoData.period"></el-input>
<el-input v-if="editing" v-model="infoData.period"></el-input>
<span v-else>{{ infoData.period }}</span>
</li>
</ul>
<div class="m-b-20">
<h6 class="l-title">
<img src="@/assets/img/report2.png"
alt="">
<img src="@/assets/img/report2.png" alt="">
实验项目名称
</h6>
<el-input v-if="editing"
v-model="infoData.projectName"
type="textarea"></el-input>
<div v-else
class="pre-wrap"
v-html="infoData.projectName"></div>
<el-input v-if="editing" v-model="infoData.projectName" type="textarea"></el-input>
<div v-else class="pre-wrap" v-html="infoData.projectName"></div>
</div>
<div class="m-b-20">
<h6 class="l-title">
<img src="@/assets/img/report3.png"
alt="">
<img src="@/assets/img/report3.png" alt="">
实验目的
</h6>
<quill v-if="editing"
:border="true"
v-model="infoData.purpose"
:height="150" />
<div v-else
:class="['pre-wrap', {edit: editing}]"
v-html="infoData.purpose"></div>
<quill v-if="editing" :border="true" v-model="infoData.purpose" :height="150" />
<div v-else :class="['pre-wrap', { edit: editing }]" v-html="infoData.purpose"></div>
</div>
<div class="m-b-20">
<h6 class="l-title">
<img src="@/assets/img/report4.png"
alt="">
<img src="@/assets/img/report4.png" alt="">
实验数据
</h6>
<el-table :data="expData"
class="table"
border
stripe
header-align="center">
<el-table-column type="index"
label="序号"
:key="1"
align="center"
width="60">
<el-table :data="expData" class="table" border stripe header-align="center">
<el-table-column type="index" label="序号" :key="1" align="center" width="60">
<template slot-scope="scope">
{{ scope.$index + 1 }}
</template>
</el-table-column>
<el-table-column prop="judgmentName"
label="判分点"
width="200"
align="center"></el-table-column>
<el-table-column v-if="project"
prop="judgmentName"
label="考核点"
align="center"
:key="2"
width="150">
<el-table-column prop="judgmentName" label="判分点" width="200" align="center"></el-table-column>
<el-table-column v-if="IsLc" prop="judgmentName" label="考核点" align="center" :key="2" width="150">
<template slot-scope="scope">
<div v-for="(item, index) in scope.row.lcRuleRecords"
:key="index">
<div v-for="(item, index) in scope.row.lcRuleRecords" :key="index">
<span>
<span>{{index+1}}. </span>{{item.name}}
<span>{{ index + 1 }}. </span>{{ item.name }}
</span>
</div>
</template>
</el-table-column>
<el-table-column prop="ruleAnswer"
label="参考答案"
:key="3"
style='word-wrap: break-word'>
<el-table-column prop="ruleAnswer" label="参考答案" :key="3" style='word-wrap: break-word'>
<template slot-scope="scope">
<div v-if='scope.row.lcRuleRecords'>
<div v-for="(item, index) in scope.row.lcRuleRecords"
:key="index">
<div v-if="scope.row.lcRuleRecords">
<div v-for="(item, index) in scope.row.lcRuleRecords" :key="index">
<span>
<span>{{index+1}}. </span>{{item.ruleAnswer}}
<span>{{ index + 1 }}. </span>{{ item.ruleAnswer }}
</span>
</div>
</div>
<div v-else
v-html="scope.row.referenceAnswer"></div>
<div v-else v-html="scope.row.referenceAnswer"></div>
</template>
</el-table-column>
<el-table-column prop="userAnswer"
:key="4"
label="学生答案">
<el-table-column prop="userAnswer" :key="4" label="学生答案">
<template slot-scope="scope">
<div v-if='scope.row.lcRuleRecords'>
<div v-for="(item, index) in scope.row.lcRuleRecords"
:key="index">
{{index+1}}. {{item.userAnswer || '未填写'}}
<div v-if="scope.row.lcRuleRecords">
<div v-for="(item, index) in scope.row.lcRuleRecords" :key="index">
{{ index + 1 }}. {{ item.userAnswer || '未填写' }}
</div>
</div>
<div v-else
v-html='scope.row.answer'
style='white-space: pre-wrap'></div>
<div v-else v-html="scope.row.answer" style="white-space: pre-wrap"></div>
</template>
</el-table-column>
<el-table-column v-if="!project"
prop="runResult"
label="学生运行结果"
:key="5"
align="center">
<el-table-column v-if="!IsLc" prop="runResult" label="学生运行结果" :key="5" align="center">
<template slot-scope="scope">
<div class="m-b-20"
v-html='scope.row.runResult'
style='white-space: pre-wrap'></div>
<div class="m-b-20" v-html="scope.row.runResult" style="white-space: pre-wrap"></div>
<template v-if="scope.row.runThePictureList">
<img v-for="(img, i) in scope.row.runThePictureList"
:key="i"
width="200"
class="result-pic"
:src="img"
alt="">
<img v-for="(img, i) in scope.row.runThePictureList" :key="i" width="200" class="result-pic"
:src="img" alt="">
</template>
</template>
</el-table-column>
<el-table-column prop="quesScore"
:key="6"
label="分值"
width="80"
align="center"></el-table-column>
<el-table-column prop="score"
label="得分"
:key="7"
width="80"
align="center"></el-table-column>
<el-table-column prop="quesScore" :key="6" label="分值" width="80" align="center"></el-table-column>
<el-table-column prop="score" label="得分" :key="7" width="80" align="center"></el-table-column>
</el-table>
</div>
<div class="m-b-20">
<h6 class="l-title">
<img src="@/assets/img/report5.png"
alt="">
<img src="@/assets/img/report5.png" alt="">
实验总结与体会
</h6>
<Editor v-if="editing"
api-key='rnk6zw9v267xqz7pf98twt1vmrvltmd436je7a642pckltda'
v-model="infoData.summarize"
:init="editorConfig" />
<div v-else
class="pre-wrap"
v-html="infoData.summarize"></div>
<Editor v-if="editing" api-key='rnk6zw9v267xqz7pf98twt1vmrvltmd436je7a642pckltda' v-model="infoData.summarize"
:init="editorConfig" />
<div v-else class="pre-wrap" v-html="infoData.summarize"></div>
</div>
</div>
</div>
@ -249,7 +168,7 @@ export default {
editing: false,
loadIns: null,
loading: false,
project: false,
IsLc: false,
userScores: [],
quills: [],
quillIndex1: 0,
@ -335,8 +254,8 @@ export default {
},
//
handleList (list) {
this.project = list.find(e => e.lcRuleRecords) // lcRuleRecords
if (this.project) {
this.IsLc = list.find(e => e.lcRuleRecords) // lcRuleRecords
if (this.IsLc) {
list.map(e => {
e.assessmentPoint = ''
e.referenceAnswer = ''
@ -379,7 +298,7 @@ export default {
// if (form[i] && typeof form[i] === 'string') form[i] = form[i].replace(/<[^>]+>/g, '')
// }
form.purpose = form.purpose.replace(/<[^>]+>/g, '')
this.$post(this.project ? this.api.exportBankExperimentReport : this.api.exportLabReport, {
this.$post(this.IsLc ? this.api.exportBankExperimentReport : this.api.exportLabReport, {
...form,
experimentalData: list
}).then(res => {
@ -446,150 +365,183 @@ export default {
<style lang="scss" scoped>
@import '/styles/css/editor.css';
.top {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
.back {
font-size: 14px;
color: #007eff;
cursor: pointer;
}
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
.back {
font-size: 14px;
color: #007eff;
cursor: pointer;
}
}
.breadcrumb {
/deep/.el-breadcrumb__item {
.is-link,
.el-breadcrumb__separator {
font-weight: 400;
color: $main-color;
}
&:last-child {
.is-link {
color: #0b1d30;
}
}
/deep/.el-breadcrumb__item {
.is-link,
.el-breadcrumb__separator {
font-weight: 400;
color: $main-color;
}
&:last-child {
.is-link {
color: #0b1d30;
}
}
}
}
.wrap {
padding: 12px 300px 20px;
padding: 12px 300px 20px;
}
code,
kbd,
samp {
font-family: 'PingFang SC', 'Helvetica Neue', Helvetica, 'microsoft yahei', arial, STHeiTi, sans-serif;
word-wrap: break-word;
white-space: pre-wrap;
font-family: 'PingFang SC', 'Helvetica Neue', Helvetica, 'microsoft yahei', arial, STHeiTi, sans-serif;
word-wrap: break-word;
white-space: pre-wrap;
}
/deep/ pre {
white-space: pre-wrap; /* css-3 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
white-space: pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
word-break: break-all;
overflow: hidden;
font-size: 12px;
font-weight: 400;
font-family: 'PingFang SC', 'Helvetica Neue', Helvetica, 'microsoft yahei', arial, STHeiTi, sans-serif;
white-space: pre-wrap;
/* css-3 */
white-space: -moz-pre-wrap;
/* Mozilla, since 1999 */
white-space: pre-wrap;
/* Opera 4-6 */
white-space: -o-pre-wrap;
/* Opera 7 */
word-wrap: break-word;
/* Internet Explorer 5.5+ */
word-break: break-all;
overflow: hidden;
font-size: 12px;
font-weight: 400;
font-family: 'PingFang SC', 'Helvetica Neue', Helvetica, 'microsoft yahei', arial, STHeiTi, sans-serif;
}
.content {
padding: 16px 40px;
background: #fff;
.r-title {
margin-bottom: 40px;
font-size: 24px;
text-align: center;
color: #333;
padding: 16px 40px;
background: #fff;
.r-title {
margin-bottom: 40px;
font-size: 24px;
text-align: center;
color: #333;
}
.info {
padding: 20px 16px;
border: 1px solid #e1e6f2;
}
.l-title {
padding: 5px 8px;
background-color: #f7f9fc;
}
.info-list {
display: flex;
flex-wrap: wrap;
padding: 10px 0 0 20px;
li {
display: inline-flex;
width: 25%;
padding: 0 10px;
margin-bottom: 34px;
}
.info {
padding: 20px 16px;
border: 1px solid #e1e6f2;
&.edit {
li {
align-items: center;
}
}
.l-title {
padding: 5px 8px;
background-color: #f7f9fc;
label {
font-size: 14px;
color: #333;
white-space: nowrap;
}
.info-list {
display: flex;
flex-wrap: wrap;
padding: 10px 0 0 20px;
li {
display: inline-flex;
width: 25%;
padding: 0 10px;
margin-bottom: 34px;
}
&.edit {
li {
align-items: center;
}
}
label {
font-size: 14px;
color: #333;
white-space: nowrap;
}
span {
min-width: 150px;
padding: 0 10px 3px;
border-bottom: 1px solid #e1e6f2;
}
/deep/.el-input {
width: 174px;
}
span {
min-width: 150px;
padding: 0 10px 3px;
border-bottom: 1px solid #e1e6f2;
}
.score-wrap {
position: relative;
min-width: 150px;
border-bottom: 1px solid #e1e6f2;
em {
position: absolute;
top: -12px;
left: 30px;
font-family: din;
font-size: 30px;
font-weight: 600;
color: #0b1d30;
}
img {
position: absolute;
bottom: -15px;
left: 0;
}
/deep/.el-input {
width: 174px;
}
/deep/.el-textarea .el-textarea__inner,
.pre-wrap {
min-height: 72px;
padding: 10px 16px;
font-size: 14px;
color: #333;
&.edit {
color: #abb3c6;
border: 1px solid #cacfdb;
border-radius: 4px;
background-color: #f6f7f9;
}
}
.score-wrap {
position: relative;
min-width: 150px;
border-bottom: 1px solid #e1e6f2;
em {
position: absolute;
top: -12px;
left: 30px;
font-family: din;
font-size: 30px;
font-weight: 600;
color: #0b1d30;
}
/deep/ .table th {
background-color: #e1eaff !important;
.cell {
line-height: 35px;
color: #555555;
}
img {
position: absolute;
bottom: -15px;
left: 0;
}
}
/deep/.el-textarea .el-textarea__inner,
.pre-wrap {
min-height: 72px;
padding: 10px 16px;
font-size: 14px;
color: #333;
&.edit {
color: #abb3c6;
border: 1px solid #cacfdb;
border-radius: 4px;
background-color: #f6f7f9;
}
}
/deep/ .table th {
background-color: #e1eaff !important;
.cell {
line-height: 35px;
color: #555555;
}
}
}
.result-pic {
margin: 10px 0;
margin: 10px 0;
}
@media (max-width: 1650px) {
.wrap {
padding: 12px 200px 20px;
}
.wrap {
padding: 12px 200px 20px;
}
}
@media (max-width: 1430px) {
.wrap {
padding: 12px 100px 20px;
}
.wrap {
padding: 12px 100px 20px;
}
}
</style>

@ -1,13 +1,13 @@
import BasicLayout from '@/layouts/home';
export default {
path: '/product',
component: BasicLayout,
children: [
{
path: `/product`,
component: () => import('@/pages/product/list'),
meta: { title: '产品服务' }
},
]
path: '/product/list',
component: BasicLayout,
children: [
{
path: `/product/list`,
component: () => import('@/pages/product/list'),
meta: { title: '产品服务' }
},
]
};

@ -68,7 +68,7 @@ const Setting = {
/**
* 路由白名单
* */
whiteList: ['/login', '/index/list', '/index/zxy', '/product', '/cityPartner/list', '/devPlatform/list', '/log/list', '/touristMatch/list', '/touristMatch/details', '/touristMatch/noticeDetail', '/preCourse/list', '/preCourse/details', '/preInfo/list', '/preInfo/details', '/screen', '/screenShow', '/screenShowPro', '/join', '/join/success'],
whiteList: ['/login', '/index/list', '/index/zxy', '/product/list', '/cityPartner/list', '/devPlatform/list', '/log/list', '/touristMatch/list', '/touristMatch/details', '/touristMatch/noticeDetail', '/preCourse/list', '/preCourse/details', '/preInfo/list', '/preInfo/details', '/screen', '/screenShow', '/screenShowPro', '/join', '/join/success'],
/**
* 平台列表
* */

Loading…
Cancel
Save