<template> <div ref="pointStep" class="h100 saga-maintenance"> <!-- <bread class="bread-view"></bread> --> <div class="saga-btns-view"> <template v-for="(item,index) in jsonTitle"> <div :key="index" @click="changeStep(index)" class="saga-steps-btn pointer saga-size3" :class="{ 'active-steps': activeStep == index + 1 }" > <div class="border-view"> <div class="point-step">{{index + 1}}</div> <div class="jiao"></div> <div class="point-title">{{item}}</div> </div> </div> </template> </div> <div class="main-view"> <step1 ref="step" v-if="activeStep == 1"></step1> <step2 ref="step" v-if="activeStep == 2"></step2> <step3 ref="step" v-if="activeStep == 3"></step3> <step4 ref="step" v-if="activeStep == 4"></step4> </div> </div> </template> <script> // import bread from "components/common/bread_crumb" import step1 from "./step1" import step2 from "./step2" import step3 from "./step3" import step4 from "./step4" import { mapGetters, mapActions } from "vuex"; export default { data() { return { activeStep: 1, //活跃的step jsonTitle: [ "原始点位表收集", "原始点位描述关键内容识别", "原始点位描述标准化", "点位表处理结果检查" ], activeHeight: 0 } }, computed: { ...mapGetters("project", [ "dataName" ]), ...mapGetters("layout", [ "projectId" ]) }, created() { this.$store.dispatch('setBreadcrumb', [{ label: '系统集成', path: '/point/pointsetting' }, { label: '子系统点表整理工具', path: '/point/pointsetting' }, { label: `点位收集(${this.dataName})` }]) }, mounted() { // console.log(this.$refs.pointStep.parentElement.parentElement.offsetHeight,'pointStep') this.resize() // document.addEventListener("resize",this.resize) window.onresize = this.resize }, methods: { resize() { this.activeHeight = this.$refs.pointStep.parentElement.parentElement.parentElement.offsetHeight - 10 }, stepClick() { console.log("test") }, changeStep(index) { // console.log() let step = this.$refs.step let flag = step.hasOwnProperty('noSaveData') ? step.noSaveData() : false if (flag || this.activeStep == 4 || this.activeStep == 3) { this.activeStep = index + 1 } else { this.$confirm('存在数据未保存, 是否继续?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { this.activeStep = index + 1 }).catch(() => { return false }); } } }, components: { // bread, step1, step2, step3, step4 }, watch: { projectId(){ this.$router.push({ path: '/point/pointsetting' }) } }, //路由切换提示 beforeRouteLeave(to, from, next) { let step = this.$refs.step let flag = step.hasOwnProperty('noSaveData') ? step.noSaveData() : false if(flag || this.activeStep == 4 || this.activeStep == 3){ next() }else{ this.$confirm('存在数据未保存, 是否继续?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { next() }).catch(() => { next(false) }); } } } </script> <style lang="scss"> .h100 { background-color: #fff; // padding: 0 10px; box-sizing: border-box; display: flex; flex-flow: column; .bread-view { height: 45px; } .main-view { flex: 1; display: flex; flex-flow: column; } .saga-btns-view { background-color: #fff; // display: flex; // justify-content: space-around; padding: 20px 0; box-sizing: border-box; height: 80px; text-align: center; .saga-steps-btn { display: inline-block; width: 250px; margin-right: 20px; height: 40px; background: #EEFAFF; box-shadow: 0 0 2px 0 #DDD; border-radius: 6px; font-size: 14px; line-height: 40px; color: #666; box-sizing: border-box; .border-view { border: 1px solid #C2CEDB; border-radius: 6px; height: 34px; line-height: 34px; overflow: hidden; margin: 2px 5px; box-sizing: border-box; position: relative; flex: 1; .jiao { display: inline-block; border-top: 17px solid transparent; border-left: 17px solid #C2CEDB; border-bottom: 17px solid transparent; position: relative; float: left; &::after { content: ''; position: absolute; top: -17px; left: -18px; border-top: 17px solid transparent; border-left: 17px solid #EEFAFF; border-bottom: 17px solid transparent; } } .point-step { font-size: 24px; padding: 0 9px; float: left; } .point-title { float: left; // padding-left: 10px; // padding-right: 22px; width: 168px; } } // height: 80px; // text-align: center; // /*设置文本水平居中*/ // display: table-cell; // vertical-align: middle; // padding: 0 30px; } .active-steps { background-color: rgb(179, 216, 255); .border-view { border-color: #5BA7FF; .point-step { background-color: #5BA7FF; color: #fff; } .jiao { border-left-color: #5BA7FF; &::after { border-left-color: #5BA7FF; } } } } } } </style>