diff --git a/04.系统编码/Frontend/src/components/MicrowaveRadiation.vue b/04.系统编码/Frontend/src/components/MicrowaveRadiation.vue index 65b7d5f..eae3c72 100644 --- a/04.系统编码/Frontend/src/components/MicrowaveRadiation.vue +++ b/04.系统编码/Frontend/src/components/MicrowaveRadiation.vue @@ -32,9 +32,9 @@ <div class="menu-item" > <h2 class="tip">分辨率选择</h2> <el-row :gutter="12"> - <el-col :span="8" ><span @click="onElementClick('six-minute')" :class="{'active': currentElement === 'six-minute'}">6分钟</span></el-col> - <el-col :span="8" ><span @click="onElementClick('half-hour')" :class="{'active': currentElement === 'half-hour'}">30分钟</span></el-col> - <el-col :span="8" ><span @click="onElementClick('one-hour')" :class="{'active': currentElement === 'one-hour'}">1小时</span></el-col> + <el-col :span="8" ><span @click="onElementClick('six-minute', -2, 6)" :class="{'active': currentElement === 'six-minute'}">6分钟</span></el-col> + <el-col :span="8" ><span @click="onElementClick('half-hour', -12, 30)" :class="{'active': currentElement === 'half-hour'}">30分钟</span></el-col> + <el-col :span="8" ><span @click="onElementClick('one-hour', -24, 60)" :class="{'active': currentElement === 'one-hour'}">1小时</span></el-col> <!-- <el-col :span="8" ><span @click="onElementClick('CAPE')" :class="{'active': currentElement === 'CAPE'}">CAPE</span></el-col>--> <!-- <el-col :span="8" ><span @click="onElementClick('CIN')" :class="{'active': currentElement === 'CIN'}">CIN</span></el-col>--> @@ -75,7 +75,7 @@ <span @click="onPrevDayClick"><img src="/images/prev.png" /></span> <span @click="onNextDayClick"><img src="/images/next.png" /></span> </div> - <el-select v-model="currentHour" placeholder="" @change="onChange" v-show="currentTab !== 'MWR'"> + <el-select v-model="currentHour" placeholder="" @change="onChange"> <el-option v-for="item in hours" :key="item.value" @@ -84,11 +84,11 @@ > </el-option> </el-select> - <p class="unit" v-if="currentTab !== 'MWR'">时</p> + <p class="unit" >时</p> <div class="refresh-btn" @click="onRefreshClick"> <img src="/images/refresh.png" /> </div> - <div class="btns-group"> + <div class="btns-group" v-if="currentTab==='kuoxian' || currentTab==='T-logP'"> <span @click="onPlayClick">{{isPlay ? '暂停动画' : '播放动画'}}</span> <a @click="onDownloadClick">下载动画</a> <a id="weboDownload" download :href="downloadSrc" class="hide">下载隐藏层</a> @@ -104,7 +104,7 @@ </div> <div class="picture-container contrast-picture-container" v-if="currentTab === 'MWR'"> <div class="picture"> - <h2 class="title">原始数据</h2> + <h2 class="title">{{ titleStartTime }}~{{ titleEndTime }}温度原始数据</h2> <el-image :src="contrast.noQCImgUrl" :preview-src-list="contrast.noQCImgPreview" @@ -124,7 +124,7 @@ </el-image> </div> <div class="picture"> - <h2 class="title">异常值标记</h2> + <h2 class="title">{{ titleStartTime }}~{{ titleEndTime }}温度异常值标记</h2> <el-image :src="contrast.checkImgUrl" :preview-src-list="contrast.checkImgPreview" @@ -144,7 +144,7 @@ </el-image> </div> <div class="picture"> - <h2 class="title">野点插补结果</h2> + <h2 class="title">{{ titleStartTime }}~{{ titleEndTime }}温度野点插补结果</h2> <el-image :src="contrast.fillingImgUrl" :preview-src-list="contrast.fillingImgPreview" @@ -164,6 +164,7 @@ </el-image> </div> </div> + <div class="picture-container" v-if="currentTab !== 'MWR'"> <!-- <h2 class="title">{{title}}</h2> --> <div class="picture"> @@ -195,7 +196,8 @@ import { onMounted, reactive, toRefs } from 'vue'; import moment from "moment"; import { MicrowaveRadiationConfig } from '../uilts/Config'; - import { post } from '../uilts/axios'; + import { post, get } from '../uilts/axios'; + import {BoxDrawer} from "../uilts/box-drawer"; export default { name: 'MicrowaveRadiation', @@ -210,7 +212,7 @@ currentElement: 'six-minute', currentCategory: 'CAPE', date: moment('2021-11-10').format('YYYY-MM-DD'), - currentHour: '23', + currentHour: '24', hours: [], times: [], days: [], @@ -230,8 +232,11 @@ fillingImgUrl: '/images/picture.png', fillingImgPreview: ['/images/picture.png'] }, - urls: [] - + urls: [], + titleStartTime: null, + titleEndTime: null, + apiTimeLength: -2, + apiTimeInterval: 6 }) onMounted(() => { @@ -254,61 +259,65 @@ const onTabClick = (name) => { options.currentTab = name; options.currentElement = 'six-minute' - if (options.currentTab === 'MWR') { - options.date = moment('2021-11-10').format('YYYY-MM-DD'); + // initTimeLine() + // if ( options.currentTab === 'MWR' ) { + // options.date = moment('2021-11-10').format('YYYY-MM-DD'); // options.currentElement = 'TEMP'; - options.index = options.days.length - 1; + // options.index = options.days.length - 1; // initDays(); - setTimeout(() => activeContrastImage(), 50) - } else { - if (options.currentTab === 'kuoxian' || options.currentTab === 'shixu_BPFY') { - // options.currentElement = 'TEMP'; - setTimeout(()=>changeColor(),100) ; - } - else if (options.currentTab === 'shixu') { - options.date = moment('2021-12-04').format('YYYY-MM-DD'); - // options.currentElement = 'CAPE'; - } - options.date = moment('2021-12-05').format('YYYY-MM-DD'); - options.index = options.times.length - 1; - - if (options.currentTab === 'kuoxian' || options.currentTab === 'shixu_BPFY') { - options.date = moment('2021-12-04').format('YYYY-MM-DD'); - // options.currentElement = 'TEMP'; - options.currentHour = '23'; - } else if (options.currentTab === 'shixu') { - options.date = moment('2021-12-04').format('YYYY-MM-DD'); - // options.currentElement = 'CAPE'; - options.currentHour = '23'; - } else if (options.currentTab === 'T-logP') { - options.date = moment('2021-12-05').format('YYYY-MM-DD'); - // options.currentElement = 'TEMP'; - options.currentHour = '16'; - } - initTimeLine(); - setTimeout(() => activeImage(moment(options.times[options.times.length - 1].date).hour(), moment(options.times[options.times.length - 1].date).minute()), 50) - } - cancelActive(); + // setTimeout(() => activeContrastImage(), 50) + // } else { + // + // if (options.currentTab === 'kuoxian' || options.currentTab === 'shixu_BPFY') { + // // options.currentElement = 'TEMP'; + // setTimeout(()=>changeColor(),100) ; + // } + // else if (options.currentTab === 'shixu') { + // options.date = moment('2021-12-04').format('YYYY-MM-DD'); + // // options.currentElement = 'CAPE'; + // } + // + // options.date = moment('2021-12-05').format('YYYY-MM-DD'); + // options.index = options.times.length - 1; + // + // if (options.currentTab === 'kuoxian' || options.currentTab === 'shixu_BPFY') { + // options.date = moment('2021-12-04').format('YYYY-MM-DD'); + // // options.currentElement = 'TEMP'; + // options.currentHour = '23'; + // } else if (options.currentTab === 'shixu') { + // options.date = moment('2021-12-04').format('YYYY-MM-DD'); + // // options.currentElement = 'CAPE'; + // options.currentHour = '23'; + // } else if (options.currentTab === 'T-logP') { + // options.date = moment('2021-12-05').format('YYYY-MM-DD'); + // // options.currentElement = 'TEMP'; + // options.currentHour = '16'; + // } + // initTimeLine(); + // // setTimeout(() => activeImage(moment(options.times[options.times.length - 1].date).hour(), moment(options.times[options.times.length - 1].date).minute()), 50) + // } + // cancelActive(); } const onRegionClick = (region) => { options.currentRegion = region; - cancelActive(); - if (options.currentTab === 'MWR') - activeContrastImage(); - else - activeImage(moment(options.times[options.index].date).hour(), moment(options.times[options.index].date).minute()); + // cancelActive(); + // if (options.currentTab === 'MWR') + // activeContrastImage(); + // else + // activeImage(moment(options.times[options.index].date).hour(), moment(options.times[options.index].date).minute()); } - const onElementClick = (element) => { + const onElementClick = (element, apiTimeLength, apiTimeInterval) => { + options.apiTimeInterval = apiTimeInterval; + options.apiTimeLength = apiTimeLength; options.currentElement = element; initTimeLine() - cancelActive(); - if (options.currentTab === 'MWR') - activeContrastImage(); - else - activeImage(moment(options.times[options.index].date).hour(), moment(options.times[options.index].date).minute()); + // if (options.currentTab === 'MWR') + // activeContrastImage(); + // else + // activeImage(moment(options.times[options.index].date).hour(), moment(options.times[options.index].date).minute()); if (element === 'six-minute') { setTimeout(() => { changeColor() @@ -316,21 +325,23 @@ } } - const activeContrastImage = () => { - options.contrast.noQCImgUrl = MicrowaveRadiationConfig.getUrl(options.currentRegion, options.currentTab + '_noQC', moment(options.currentTime, 'YYYY-MM-DD')); - options.contrast.noQCImgPreview = [options.contrast.noQCImgUrl]; - options.contrast.checkImgUrl = MicrowaveRadiationConfig.getUrl(options.currentRegion, options.currentTab + '_check', moment(options.currentTime, 'YYYY-MM-DD')); - options.contrast.checkImgPreview = [options.contrast.checkImgUrl]; - options.contrast.fillingImgUrl = MicrowaveRadiationConfig.getUrl(options.currentRegion, options.currentTab + '_filling', moment(options.currentTime, 'YYYY-MM-DD')); - options.contrast.fillingImgPreview = [options.contrast.fillingImgUrl]; - } + //质控对比图片 + // const activeContrastImage = () => { + // options.contrast.noQCImgUrl = MicrowaveRadiationConfig.getUrl(options.currentRegion, options.currentTab + '_noQC', moment(options.currentTime, 'YYYY-MM-DD')); + // options.contrast.noQCImgPreview = [options.contrast.noQCImgUrl]; + // options.contrast.checkImgUrl = MicrowaveRadiationConfig.getUrl(options.currentRegion, options.currentTab + '_check', moment(options.currentTime, 'YYYY-MM-DD')); + // options.contrast.checkImgPreview = [options.contrast.checkImgUrl]; + // options.contrast.fillingImgUrl = MicrowaveRadiationConfig.getUrl(options.currentRegion, options.currentTab + '_filling', moment(options.currentTime, 'YYYY-MM-DD')); + // options.contrast.fillingImgPreview = [options.contrast.fillingImgUrl]; + // } - const activeImage = (hour, minute) => { - let time = moment(options.date).hour(hour).minute(minute); - let type = options.currentTab === 'T-logP' ? options.currentTab : (options.currentTab + '_' + options.currentElement); - options.imgUrl = MicrowaveRadiationConfig.getUrl(options.currentRegion, type, time); - options.srcList = [options.imgUrl]; - } + // const activeImage = (hour, minute) => { + // let time = moment(options.date).hour(hour).minute(minute); + // let type = options.currentTab === 'T-logP' ? options.currentTab : (options.currentTab + '_' + options.currentElement); + // options.imgUrl = MicrowaveRadiationConfig.getUrl(options.currentRegion, type, time); + // console.log(options.imgUrl) + // options.srcList = [options.imgUrl]; + // } const onImageLoad = (event) => { if (event.currentTarget.getAttribute('src') !== '/images/default-picture.png') @@ -344,13 +355,13 @@ if (response.error != 0){ return; } - fetch(response.data).then(res => { + fetch(response.data).then(res => { return res.blob(); }).then(blob => { - let reader = new FileReader(); + let reader = new FileReader(); reader.onloadend = function(){ options.downloadSrc = reader.result; - + setTimeout(() => { document.getElementById("weboDownload").click(); options.downloadSrc = null; @@ -361,6 +372,7 @@ }) } + //请求参数 const prepareParams = () => { let time = options.currentTab === 'MWR' ? moment(options.days[0].date).format("YYYYMMDDHHmmss") + '-' + moment(options.days[options.days.length - 1].date).format("YYYYMMDDHHmmss") : moment(options.times[0].date).format("YYYYMMDDHHmmss") + '-' + moment(options.times[options.times.length - 1].date).format("YYYYMMDDHHmmss"); return { @@ -414,32 +426,39 @@ }; } + //初始化时间轴 const initTimeLine = () => { options.times = []; - options.currentTime = moment(options.date).hour(parseInt(options.currentHour)).minute(options.currentElement === 'one-hour' ? 0 : 30).format('YYYY-MM-DD HH:mm'); - let now = moment(options.date).hour(parseInt(options.currentHour) - 2).minute(36); - let minute = now.minute(); - + let changeSelectionTime = null; if (options. currentElement === 'six-minute') { options.selectionTime = 6 - } - else if (options. currentElement === 'half-hour') + changeSelectionTime = 2 + } else if (options. currentElement === 'half-hour') { options.selectionTime = 30 - else + changeSelectionTime = 10 + } else { options.selectionTime = 60 + changeSelectionTime = 20 + } + options.currentTime = moment(options.date).hour(parseInt(options.currentHour)).minute(options.currentElement === 'six-minute' ? 30 : 0).format('YYYY-MM-DD HH:mm:ss'); + options.titleEndTime = options.currentTime + let now = moment(options.date).hour(parseInt(options.currentHour) - changeSelectionTime).minute(options.currentElement === 'six-minute' ? 36 : 30); + let minute = now.minute(); const remainder = minute % options.selectionTime; if (remainder > 0){ now.minute(minute + ( options.selectionTime - remainder)); } now.minute(now.minute() - options.selectionTime); - for (let i = 0; i < 22 ; i++) { + for (let i = 0; i < 20 ; i++) { options.times.push({ - hour: now.add( options.selectionTime, 'minute').format('HH时'), + hour: now.add(options.selectionTime, 'minute').format('HH时'), minute: now.format('mm'), - date: now.format('YYYY-MM-DD HH:mm') + date: now.format('YYYY-MM-DD HH:mm:00') }); } options.index = options.times.length - 1; + options.titleStartTime = options.times[0].date + } // const initDays = () => { @@ -469,10 +488,51 @@ } const onTimeClick = (time, index) => { - options.currentTime = time.date; - options.index = index; - cancelActive(); - activeImage(moment(time.date).hour(), moment(time.date).minute()); + options.currentTime = time.date; + reloadQualityComparison(); + // let changeTimeLineHour = null + // let changeTimeLineMinute = null + // if ( options.currentElement === 'six-minute') { + // changeTimeLineHour = -2 + // changeTimeLineMinute = 6 + // } + // else if ( options.currentElement === 'half-hour') { + // changeTimeLineHour = -12 + // changeTimeLineMinute = 30 + // } + // else { + // changeTimeLineHour = -24 + // changeTimeLineMinute = 60 + // } + // options.currentTime = time.date; + // options.titleStartTime = moment(time.date).add(changeTimeLineHour, 'h').add(changeTimeLineMinute, 'm').format('YYYY-MM-DD HH:mm:ss') + // options.titleEndTime = time.date + // options.index = index; + // test() + // cancelActive(); + // activeImage(moment(time.date).hour(), moment(time.date).minute()); + } + + // 重新加载质控对比数据 + const reloadQualityComparison = () => { + const startTime = moment(options.currentTime).add(options.apiTimeLength, 'h').add(options.apiTimeInterval, 'm'); + const params = prepareApiParams(401, startTime, moment(options.currentTime)); + get('/njplatform/radardata/getOriginRangeData',params,'http://rdp.nagr.com.cn:18080').then((response: any)=> { + if (response.code != 200){ + // 弹出提示框 + return; + } + + let boxDrawer = new BoxDrawer(1000, 1000); + }) + } + + const prepareApiParams = (radarDataCode, startTime, endTime) => { + return { + radar_data_code: radarDataCode, + data_time_start: startTime.format('YYYY-MM-DD HH:mm:ss'), + data_time_end: endTime.format('YYYY-MM-DD HH:mm:ss') + } } // const onDayClick = (time, index) => { @@ -482,17 +542,20 @@ // activeContrastImage(); // } - const cancelActive = () => { - clearTimer(); - options.isPlay = false; - } + // const cancelActive = () => { + // clearTimer(); + // options.isPlay = false; + // } const onPrevDayClick = () => { options.date = moment(options.date).add(-1, 'day').format('YYYY-MM-DD'); + options.titleStartTime = moment(options.date).hour(parseInt(options.currentHour)).minute(options.currentElement === 'six-minute' ? 30 : 0).format('YYYY-MM-DD HH:mm:ss'); } const onNextDayClick = () => { options.date = moment(options.date).add(1, 'day').format('YYYY-MM-DD'); + options.titleStartTime = moment(options.date).hour(parseInt(options.currentHour)).format('YYYY-MM-DD HH:mm') + } const onPrevImgClick = () => { @@ -515,33 +578,32 @@ const nextElement = () => { let element = getCurrentElement(); - options.index++; if (options.index > element.childElementCount - 1) options.index = 0; setCurrentPlayElement(element); } - + //重置时间 const onRefreshClick = () => { - cancelActive(); + // cancelActive(); let element = getCurrentElement(); - if (options.currentTab === 'MWR') { - options.date = moment('2021-11-10').format('YYYY-MM-DD'); - options.currentTime = options.date; - element.children[options.days.length - 1].classList.add('active'); - activeContrastImage(); - } else { - options.currentHour = '23'; + // if (options.currentTab === 'MWR') { + // options.date = moment('2021-11-10').format('YYYY-MM-DD'); + // options.currentTime = options.date; + // element.children[options.days.length - 1].classList.add('active'); + // activeContrastImage(); + // } else { + options.currentHour = '24'; options.date = moment('2021-12-05').format('YYYY-MM-DD'); options.currentTime = moment(options.date).hour(parseInt(options.currentHour)).format('YYYY-MM-DD HH:mm'); element.children[options.times.length - 1].classList.add('active'); - - activeImage(moment(options.currentTime).hour(), moment(options.currentTime).minute(options.currentTab === 'T-logP' ? 0 : 30)); - } + // activeImage(moment(options.currentTime).hour(), moment(options.currentTime).minute(options.currentTab === 'T-logP' ? 0 : 30)); + // } } + //播放动画 const onPlayClick = () => { options.isPlay = !options.isPlay; if (options.isPlay) { @@ -579,24 +641,22 @@ element.children[i].classList.remove('active'); element.children[options.index].classList.add('active'); - if(options.currentTab === 'MWR') { options.currentTime = options.days[options.index].date; - activeContrastImage(); + // activeContrastImage(); } else { options.currentTime = options.times[options.index].date; - activeImage(moment(options.times[options.index].date).hour(), moment(options.times[options.index].date).minute()); + // activeImage(moment(options.times[options.index].date).hour(), moment(options.times[options.index].date).minute()); } } const onChange = () => { + initTimeLine(); if(options.currentTab === 'MWR') { - // initDays(); - activeContrastImage(); + // activeContrastImage(); } else { - initTimeLine(); - activeImage(moment(options.times[options.index].date).hour(), moment(options.times[options.index].date).minute()); + // activeImage(moment(options.times[options.index].date).hour(), moment(options.times[options.index].date).minute()); } } @@ -628,17 +688,15 @@ } } - const changeColor = () => { - let timeLine = document.querySelectorAll('.time-item') - timeLine.forEach((item :any, index) => { - if( index >= 5 && index <= 14) { - const spanTimeColor = item.querySelector('.time') - spanTimeColor.style.backgroundColor = '#CDDAF6' - } - }) - } - - + const changeColor = () => { + let timeLine = document.querySelectorAll('.time-item') + timeLine.forEach((item :any, index) => { + if( index >= 4 && index <= 13) { + const spanTimeColor = item.querySelector('.time') + spanTimeColor.style.backgroundColor = '#CDDAF6' + } + }) + } return { ...toRefs(options), diff --git a/04.系统编码/Frontend/src/index.less b/04.系统编码/Frontend/src/index.less index 83503ce..01d61e9 100644 --- a/04.系统编码/Frontend/src/index.less +++ b/04.系统编码/Frontend/src/index.less @@ -270,10 +270,16 @@ img { } } .oneHour { + :nth-child(2n) { + span.time { + background-color: #CDDAF6; + } + } .hour { font-size: 0.12rem !important; - color: #2c70fa; + color: #2c70fa!important; font-weight: 700; + } } diff --git a/04.系统编码/Frontend/src/uilts/axios.ts b/04.系统编码/Frontend/src/uilts/axios.ts index 7e7e95b..6c8f403 100644 --- a/04.系统编码/Frontend/src/uilts/axios.ts +++ b/04.系统编码/Frontend/src/uilts/axios.ts @@ -6,7 +6,7 @@ import { ElLoading } from 'element-plus' let loading = null; const service = axios.create({ // baseURL:"http://112.124.40.88:8002", - + // baseURL:'http://rdp.nagr.com.cn:18080', baseURL:"http://localhost:8002", // baseURL: 'http://localhost:8002', diff --git a/04.系统编码/Frontend/src/uilts/box-drawer.ts b/04.系统编码/Frontend/src/uilts/box-drawer.ts new file mode 100644 index 0000000..156f1fb --- /dev/null +++ b/04.系统编码/Frontend/src/uilts/box-drawer.ts @@ -0,0 +1,47 @@ +export class BoxDrawer{ + + private canvas: any = null; + private canvasContext: any = null; + + private readonly weight: number = null; + private readonly height: number = null; + private readonly paddingLeft: number = 10; + private readonly paddingRight: number = 10; + private readonly paddingTop: number = 5; + private readonly paddingBottom: number = 5; + private readonly scaleLine: number = 4; + + constructor(weight: number, height: number) { + this.weight = weight; + this.height = height; + + this.init(); + // this.drawCoordinate(); + console.log(this.canvas.toDataURL()); + } + + private init(): void{ + // 创建画布 + this.canvas = document.createElement('canvas'); + this.canvas.weight = this.weight; + this.canvas.height = this.height; + + this.canvasContext = this.canvas.getContext('2d'); + } + + private drawCoordinate(): void{ + this.drawBorder(); + } + + private drawBorder(): void{ + const x = this.scaleLine + this.paddingLeft; + const y = this.scaleLine + this.paddingTop; + const _x = this.weight - this.scaleLine - this.paddingRight; + const _y = this.height - this.scaleLine - this.paddingBottom; + this.canvasContext.beginPath(); + this.canvasContext.lineWidth="6"; + this.canvasContext.strokeStyle="red"; + this.canvasContext.rect(x, y, _x - x, _y - y); + this.canvasContext.stroke(); + } +} \ No newline at end of file