feat: 完成Statistics Paramer History中所有功能及交互,和AutomaticAnalysisLog弹窗

This commit is contained in:
Xu Zhimeng 2023-07-31 19:23:25 +08:00
parent 63ede005d2
commit 124b9ea0ac
10 changed files with 640 additions and 61 deletions

View File

@ -13,6 +13,10 @@ export default {
type: Object, type: Object,
default: () => ({}) default: () => ({})
}, },
notMerge: {
type: Boolean,
default: false
},
height: { height: {
type: Number, type: Number,
default: 0 default: 0
@ -59,7 +63,9 @@ export default {
option: { option: {
handler() { handler() {
if (this._chart) { if (this._chart) {
this._chart.setOption(this.option) this._chart.setOption(this.option, {
notMerge: this.notMerge
})
} }
}, },
deep: true deep: true

View File

@ -24,11 +24,11 @@ export function getXAxisAndYAxisByPosition(chart, offsetX, offsetY, seriesIndex
* @param {import("echarts").ECharts} chartInstance * @param {import("echarts").ECharts} chartInstance
* @param {'png' | 'jpeg' | 'svg'} type * @param {'png' | 'jpeg' | 'svg'} type
*/ */
export function exportEchartImg(chartInstance, type = 'png') { export function exportEchartImg(chartInstance, type = 'png', backgroundColor = '#022024') {
const dataURL = chartInstance.getDataURL({ const dataURL = chartInstance.getDataURL({
type, type,
pixelRatio: 2, pixelRatio: 2,
backgroundColor: '#022024' backgroundColor
}); });
const link = document.createElement('a') const link = document.createElement('a')

View File

@ -9,7 +9,7 @@
</pop-over-with-icon> </pop-over-with-icon>
<pop-over-with-icon placement="bottomLeft"> <pop-over-with-icon placement="bottomLeft">
QC Flags QC Flags
<beta-gamma-qc-flags slot="content" :data="qcFlags" /> <beta-gamma-qc-flags slot="content" :data="qcFlags" @click="handleQcFlagClick" />
</pop-over-with-icon> </pop-over-with-icon>
<pop-over-with-icon placement="bottomLeft" style="width: 159px" v-model="spectraVisible"> <pop-over-with-icon placement="bottomLeft" style="width: 159px" v-model="spectraVisible">
Spectra Spectra
@ -131,6 +131,8 @@
</div> </div>
<!-- 主体部分结束 --> <!-- 主体部分结束 -->
</a-spin> </a-spin>
<statistics-paramer-history-modal-for-qc-flags v-model="statisticModalVisible" :sampleId="sample.sampleId" :statisticsType="statisticsType" />
</div> </div>
</template> </template>
@ -138,6 +140,7 @@
import { getAction } from '../../api/manage' import { getAction } from '../../api/manage'
import BetaGammaChartContainer from './components/BetaGammaChartContainer.vue' import BetaGammaChartContainer from './components/BetaGammaChartContainer.vue'
import BetaGammaSpectrumChart from './components/BetaGammaSpectrumChart.vue' import BetaGammaSpectrumChart from './components/BetaGammaSpectrumChart.vue'
import StatisticsParamerHistoryModalForQcFlags from './components/Modals/BetaGammaModals/StatisticsParamerHistoryModalForQCFlags.vue'
import ComparisonModal from './components/Modals/ComparisonModal.vue' import ComparisonModal from './components/Modals/ComparisonModal.vue'
import ResultDisplay from './components/ResultDisplay.vue' import ResultDisplay from './components/ResultDisplay.vue'
import SpectrumLineChart from './components/SpectrumLineChart.vue' import SpectrumLineChart from './components/SpectrumLineChart.vue'
@ -146,6 +149,13 @@ import BetaGammaQcFlags from './components/SubOperators/BetaGammaQcFlags.vue'
import PopOverWithIcon from './components/SubOperators/PopOverWithIcon.vue' import PopOverWithIcon from './components/SubOperators/PopOverWithIcon.vue'
import Spectra from './components/SubOperators/Spectra.vue' import Spectra from './components/SubOperators/Spectra.vue'
const StatisticsType = {
'Collection Time': 'Colloc_Time',
'Acq Time': 'Acq_Time',
'Xe Volume': 'Xe_volumn',
'Air Volume': 'Sample_Volumn'
}
export default { export default {
components: { components: {
BetaGammaChartContainer, BetaGammaChartContainer,
@ -157,7 +167,8 @@ export default {
PopOverWithIcon, PopOverWithIcon,
Spectra, Spectra,
BetaGammaQcFlags, BetaGammaQcFlags,
BetaGammaDetailedInfomation BetaGammaDetailedInfomation,
StatisticsParamerHistoryModalForQcFlags
}, },
props: { props: {
sample: { sample: {
@ -190,7 +201,10 @@ export default {
gammaEnergyData: [], gammaEnergyData: [],
betaEnergyData: [], betaEnergyData: [],
comparisonModalVisible: false comparisonModalVisible: false,
statisticModalVisible: false, // Qc Flags
statisticsType: StatisticsType['Collection Time']
} }
}, },
methods: { methods: {
@ -312,6 +326,15 @@ export default {
} }
this.$refs.betaGammaChartRef.setRange(x1, x2, type) this.$refs.betaGammaChartRef.setRange(x1, x2, type)
},
// QC Flags GasBg DetBg
handleQcFlagClick(item) {
const statisticsType = StatisticsType[item]
if (statisticsType) {
this.statisticsType = statisticsType
this.statisticModalVisible = true
}
} }
}, },
watch: { watch: {

View File

@ -448,7 +448,6 @@ export default {
// //
emitRangeChange(range) { emitRangeChange(range) {
console.log('%c [ range ]-452', 'font-size:13px; background:pink; color:#bf2c9f;', range)
this.$emit('rangeChange', range) this.$emit('rangeChange', range)
}, },

View File

@ -0,0 +1,20 @@
<template>
<custom-modal v-model="visible" :width="800" title="Auto Process Log Viewer" :okHandler="handleOk">
<a-textarea :rows="18"></a-textarea>
</custom-modal>
</template>
<script>
import ModalMixin from '@/mixins/ModalMixin'
export default {
mixins: [ModalMixin],
methods: {
handleOk() {
console.log('%c [ ]-15', 'font-size:13px; background:pink; color:#bf2c9f;')
}
}
}
</script>
<style></style>

View File

@ -1,5 +1,5 @@
<template> <template>
<custom-modal v-model="visible" title="Statistics Paramer History" :width="1480" :footer="null"> <custom-modal v-model="visible" title="Statistics Paramer History" :width="1480" destroy-on-close :footer="null">
<div class="statistics-paramer-history"> <div class="statistics-paramer-history">
<!-- 左侧配置 --> <!-- 左侧配置 -->
<title-over-border title="Query Infomation Settings" class="settings"> <title-over-border title="Query Infomation Settings" class="settings">
@ -11,57 +11,62 @@
> >
<a-form-model-item label="Station"> <a-form-model-item label="Station">
<a-space :size="10" class="station"> <a-space :size="10" class="station">
<a-input size="small"></a-input> <a-input size="small" v-model="queryParams.stationName"></a-input>
<a-button type="primary" size="small">Query Detector</a-button> <a-button type="primary" size="small" @click="handleQueryDetector">Query Detector</a-button>
<a-button type="primary" size="small">&lt;&lt;</a-button> <a-button type="primary" size="small" @click="handleReset">&lt;&lt;</a-button>
</a-space> </a-space>
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="Detector"> <a-form-model-item label="Detector">
<custom-select :options="[{ label: 'test', value: 1 }]" size="small"></custom-select> <custom-select :options="detectorList" v-model="queryParams.detectorName" size="small"></custom-select>
</a-form-model-item> </a-form-model-item>
</a-form-model> </a-form-model>
</title-over-border> </title-over-border>
<!-- Nuclide --> <!-- Nuclide -->
<title-over-border title="Nuclide" class="nuclide"> <title-over-border title="Nuclide" class="nuclide">
<a-checkbox-group> <a-checkbox-group v-model="queryParams.nuclidesList">
<a-checkbox>Xe131m</a-checkbox> <a-checkbox value="Xe131m">Xe131m</a-checkbox>
<a-checkbox>Xe133m</a-checkbox> <a-checkbox value="Xe133m">Xe133m</a-checkbox>
<a-checkbox>Xe133</a-checkbox> <a-checkbox value="Xe133">Xe133</a-checkbox>
<a-checkbox>Xe135</a-checkbox> <a-checkbox value="Xe135">Xe135</a-checkbox>
</a-checkbox-group> </a-checkbox-group>
</title-over-border> </title-over-border>
<a-checkbox-group class="other-checkbox"> <div class="other-checkbox">
<a-checkbox>MDC</a-checkbox> <a-checkbox v-model="queryParams.mdc">MDC</a-checkbox>
<a-checkbox>Activity Concentration</a-checkbox> <a-checkbox v-model="queryParams.activity">Activity Concentration</a-checkbox>
</a-checkbox-group> </div>
<a-divider></a-divider> <a-divider></a-divider>
<a-form-model class="time-setting"> <a-form-model class="time-setting">
<a-form-model-item label="Start Time"> <a-form-model-item label="Start Time">
<custom-date-picker></custom-date-picker> <custom-date-picker v-model="queryParams.startTime" valueFormat="YYYY-MM-DD"></custom-date-picker>
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="Stop Time"> <a-form-model-item label="Stop Time">
<custom-date-picker></custom-date-picker> <custom-date-picker v-model="queryParams.endTime" valueFormat="YYYY-MM-DD"></custom-date-picker>
</a-form-model-item> </a-form-model-item>
</a-form-model> </a-form-model>
<a-radio-group class="rn-setting"> <a-radio-group class="rn-setting" v-model="queryParams.dbName">
<a-radio>RNAUTO</a-radio> <a-radio value="RNAUTO">RNAUTO</a-radio>
<a-radio>RNMAN</a-radio> <a-radio value="RNMAN">RNMAN</a-radio>
</a-radio-group> </a-radio-group>
<a-divider></a-divider> <a-divider></a-divider>
<!-- 左侧中间俩按钮 -->
<div class="center-btns"> <div class="center-btns">
<a-button type="primary">Statistics Query & Plot</a-button> <a-button type="primary" @click="handleStatisticsQuery">Statistics Query & Plot</a-button>
<a-button type="primary">Snapshot</a-button> <a-button type="primary" @click="handleSnapshot($refs.chartRef)">Snapshot</a-button>
</div> </div>
<!-- 左侧中间俩按钮结束 -->
<a-divider></a-divider> <a-divider></a-divider>
<!-- Filter --> <!-- Filter -->
<title-over-border title="Filter"> <title-over-border>
<template slot="title">
<a-checkbox v-model="queryParams.filterGrpbox">Filter</a-checkbox>
</template>
<a-checkbox>Xe Result Flag</a-checkbox> <a-checkbox>Xe Result Flag</a-checkbox>
<!-- 配置详情 --> <!-- 配置详情 -->
<div class="filter-options"> <div class="filter-options">
<div class="filter-option"> <div class="filter-option">
<div class="input"> <div class="input">
<a-input></a-input> <a-input v-model="queryParams.minCollectTimeLine" :disabled="filterDisabled"></a-input>
</div> </div>
<div class="text"> <div class="text">
<span>&lt;</span> <span>&lt;</span>
@ -69,12 +74,12 @@
<span>&lt;</span> <span>&lt;</span>
</div> </div>
<div class="input"> <div class="input">
<a-input></a-input> <a-input v-model="queryParams.maxCollectTimeLine" :disabled="filterDisabled"></a-input>
</div> </div>
</div> </div>
<div class="filter-option"> <div class="filter-option">
<div class="input"> <div class="input">
<a-input></a-input> <a-input v-model="queryParams.minAcqLiveLine" :disabled="filterDisabled"></a-input>
</div> </div>
<div class="text"> <div class="text">
<span>&lt;</span> <span>&lt;</span>
@ -82,7 +87,7 @@
<span>&lt;</span> <span>&lt;</span>
</div> </div>
<div class="input"> <div class="input">
<a-input></a-input> <a-input v-model="queryParams.maxAcqLiveLine" :disabled="filterDisabled"></a-input>
</div> </div>
</div> </div>
<div class="filter-option"> <div class="filter-option">
@ -92,7 +97,7 @@
<span>&lt;</span> <span>&lt;</span>
</div> </div>
<div class="input"> <div class="input">
<a-input></a-input> <a-input v-model="queryParams.quantityLine" :disabled="filterDisabled"></a-input>
</div> </div>
</div> </div>
<div class="filter-option"> <div class="filter-option">
@ -102,7 +107,7 @@
<span>&lt;</span> <span>&lt;</span>
</div> </div>
<div class="input"> <div class="input">
<a-input></a-input> <a-input v-model="queryParams.xeVolumeLine" :disabled="filterDisabled"></a-input>
</div> </div>
</div> </div>
<div class="filter-option"> <div class="filter-option">
@ -112,7 +117,7 @@
<span>&lt;</span> <span>&lt;</span>
</div> </div>
<div class="input"> <div class="input">
<a-input></a-input> <a-input v-model="queryParams.mdcLine" :disabled="filterDisabled"></a-input>
</div> </div>
</div> </div>
<div class="filter-option"> <div class="filter-option">
@ -122,7 +127,7 @@
<span>&lt;</span> <span>&lt;</span>
</div> </div>
<div class="input"> <div class="input">
<a-input></a-input> <a-input v-model="queryParams.concLine" :disabled="filterDisabled"></a-input>
</div> </div>
</div> </div>
</div> </div>
@ -130,7 +135,7 @@
</title-over-border> </title-over-border>
<!-- 右侧图表 --> <!-- 右侧图表 -->
<div class="statistics-paramer-history-chart"> <div class="statistics-paramer-history-chart">
<custom-chart :option="option"></custom-chart> <custom-chart ref="chartRef" :option="option" :notMerge="true"></custom-chart>
</div> </div>
</div> </div>
</custom-modal> </custom-modal>
@ -140,7 +145,12 @@
import ModalMixin from '@/mixins/ModalMixin' import ModalMixin from '@/mixins/ModalMixin'
import TitleOverBorder from '../../TitleOverBorder.vue' import TitleOverBorder from '../../TitleOverBorder.vue'
import CustomChart from '@/components/CustomChart/index.vue' import CustomChart from '@/components/CustomChart/index.vue'
import { getAction, postAction } from '@/api/manage'
import moment from 'moment'
import { exportEchartImg } from '@/utils/chartHelper'
import { cloneDeep } from 'lodash'
//
const initialOption = { const initialOption = {
grid: { grid: {
right: 10, right: 10,
@ -148,10 +158,25 @@ const initialOption = {
top: 20, top: 20,
bottom: 60 bottom: 60
}, },
legend: {
show: false,
orient: 'vertical',
top: 30,
right: 20,
z: 999,
textStyle: {
color: '#fff'
},
backgroundColor: '#022024',
borderColor: '#0b8c82',
borderWidth: 1,
itemWidth: 50
},
tooltip: { tooltip: {
trigger: 'axis' trigger: 'axis'
}, },
xAxis: { xAxis: {
type: 'category',
axisLine: { axisLine: {
lineStyle: { lineStyle: {
color: 'rgba(119, 181, 213, .3)' color: 'rgba(119, 181, 213, .3)'
@ -161,7 +186,10 @@ const initialOption = {
color: '#ade6ee', color: '#ade6ee',
fontSize: 12, fontSize: 12,
rotate: 45, rotate: 45,
margin: 10 margin: 10,
formatter: value => {
return moment(value).format('YYYY/MM/DD')
}
}, },
splitLine: { splitLine: {
show: true, show: true,
@ -172,7 +200,7 @@ const initialOption = {
axisTick: { axisTick: {
show: false show: false
}, },
data: ['2023/07/09', '2023/07/09', '2023/07/09', '2023/07/09', '2023/07/10'] data: []
}, },
yAxis: { yAxis: {
axisLine: { axisLine: {
@ -194,17 +222,165 @@ const initialOption = {
show: false show: false
} }
}, },
series: { series: []
type: 'line', }
data: [15, 16, 18, 20, 22]
} //
const initialFilterOption = {
dbName: 'RNAUTO',
detectorName: '',
stationId: '',
statisticsType: 'Nuclides',
mdc: false,
activity: false,
filterGrpbox: false,
startTime: null,
endTime: null,
minCollectTimeLine: 10.8,
maxCollectTimeLine: 13.2,
minAcqLiveLine: 10.8,
maxAcqLiveLine: 13.2,
quantityLine: 10,
xeVolumeLine: 0.87,
mdcLine: 0,
concLine: 0,
nuclidesList: []
} }
export default { export default {
components: { TitleOverBorder, CustomChart }, components: { TitleOverBorder, CustomChart },
mixins: [ModalMixin], mixins: [ModalMixin],
props: {
sampleId: {
type: Number
}
},
data() { data() {
return { return {
option: initialOption option: cloneDeep(initialOption),
initialMDC: {}, //
queryParams: {},
detectorList: [] //
}
},
methods: {
// StationDetector
async getMDCInitialInfo() {
try {
const { success, message, result } = await getAction('/spectrumAnalysis/viewMDC', {
sampleId: this.sampleId
})
if (success) {
this.setStationAndDetector(result)
this.initialMDC = result
} else {
this.$message.error(message)
}
} catch (error) {
console.error(error)
}
},
//
async handleQueryDetector() {
const stationName = this.queryParams.stationName
if (!stationName) {
return
}
try {
const { success, result } = await getAction('/spectrumAnalysis/changeDetector', { stationName })
if (success) {
this.setStationAndDetector(result)
} else {
this.detectorList = []
}
} catch (error) {
console.error(error)
}
},
//
setStationAndDetector({ detectorList, stationName, stationId }) {
this.queryParams.stationName = stationName
this.detectorList = detectorList.map(item => ({
label: item,
value: item
}))
this.queryParams.detectorName = detectorList[0]
this.queryParams.stationId = stationId
},
//
handleReset() {
this.queryParams.stationName = this.initialMDC.stationName
this.detectorList = this.initialMDC.detectorList.map(item => ({
label: item,
value: item
}))
},
//
async handleStatisticsQuery() {
const { nuclidesList, mdc, activity } = this.queryParams
if (!(nuclidesList.length && (mdc || activity))) {
return
}
try {
const { success, message, result } = await postAction('/spectrumAnalysis/statisticsQuery', this.queryParams)
if (success) {
if (result) {
this.option.xAxis.data = result[0].m_Keys
this.option.legend.show = true
this.option.series = result.map(item => {
return {
type: 'line',
name: item.m_strGraphName,
data: item.m_Values,
itemStyle: {
color: item.m_GraphPen
},
lineStyle: {
color: item.m_GraphPen
},
symbol: 'circle'
}
})
} else {
this.option.series = []
this.option.legend.show = false
}
} else {
this.$message.error(message)
}
} catch (error) {
console.error(error)
}
},
//
handleSnapshot(chartRef) {
exportEchartImg(chartRef.getChartInstance())
},
beforeModalOpen() {
this.getMDCInitialInfo()
this.queryParams = {
...initialFilterOption,
startTime: moment().format('YYYY-MM-DD'),
endTime: moment().format('YYYY-MM-DD')
}
this.option = cloneDeep(initialOption)
}
},
computed: {
filterDisabled() {
return !this.queryParams.filterGrpbox
} }
} }
} }
@ -230,7 +406,7 @@ export default {
margin-left: 14px; margin-left: 14px;
label:nth-child(2) { label:nth-child(2) {
margin-left: 28px; margin-left: 26px;
} }
} }

View File

@ -0,0 +1,326 @@
<template>
<custom-modal
v-model="visible"
title="Statistics Paramer History"
:width="1480"
destroy-on-close
:footer="null"
wrapClassName="statistics-paramer-history-modal"
>
<div class="statistics-paramer-history">
<!-- 左侧配置 -->
<title-over-border title="Query Infomation Settings" class="settings">
<!-- Station And Detector -->
<title-over-border title="Station And Detector">
<a-form-model
:labelCol="{ style: { width: '70px', textAlign: 'left', flexShrink: 0 } }"
:wrapperCol="{ flex: 1 }"
>
<a-form-model-item label="Station">
<a-space :size="10" class="station">
<a-input size="small" v-model="queryParams.stationName"></a-input>
<a-button type="primary" size="small" @click="handleQueryDetector">Query Detector</a-button>
<a-button type="primary" size="small" @click="handleReset">&lt;&lt;</a-button>
</a-space>
</a-form-model-item>
<a-form-model-item label="Detector">
<custom-select
:options="detectorList"
v-model="queryParams.detectorName"
size="small"
dropdownClassName="statistics-paramer-history-select"
></custom-select>
</a-form-model-item>
</a-form-model>
</title-over-border>
<a-form-model class="time-setting">
<a-form-model-item label="Start Time">
<custom-date-picker v-model="queryParams.startTime" valueFormat="YYYY-MM-DD"></custom-date-picker>
</a-form-model-item>
<a-form-model-item label="Stop Time">
<custom-date-picker v-model="queryParams.endTime" valueFormat="YYYY-MM-DD"></custom-date-picker>
</a-form-model-item>
</a-form-model>
<a-divider></a-divider>
<!-- 左侧中间俩按钮 -->
<div class="center-btns">
<a-button type="primary" @click="handleStatisticsQuery">Statistics Query & Plot</a-button>
<a-button type="primary" @click="handleSnapshot($refs.chartRef)">Snapshot</a-button>
</div>
<!-- 左侧中间俩按钮结束 -->
<a-divider></a-divider>
</title-over-border>
<!-- 右侧图表 -->
<div class="statistics-paramer-history-chart">
<custom-chart ref="chartRef" :option="option" :notMerge="true"></custom-chart>
</div>
</div>
</custom-modal>
</template>
<script>
import ModalMixin from '@/mixins/ModalMixin'
import TitleOverBorder from '../../TitleOverBorder.vue'
import CustomChart from '@/components/CustomChart/index.vue'
import { getAction } from '@/api/manage'
import moment from 'moment'
import { exportEchartImg } from '@/utils/chartHelper'
import { cloneDeep } from 'lodash'
//
const initialOption = {
grid: {
right: 10,
left: 40,
top: 20,
bottom: 60
},
tooltip: {
trigger: 'axis'
},
xAxis: {
type: 'category',
axisLine: {
lineStyle: {
color: 'rgba(119, 181, 213, .3)'
}
},
axisLabel: {
color: '#ade6ee',
fontSize: 12,
rotate: 45,
margin: 10,
formatter: value => {
return moment(value).format('YYYY/MM/DD')
}
},
splitLine: {
show: true,
lineStyle: {
color: 'rgba(119, 181, 213, .3)'
}
},
axisTick: {
show: false
},
data: []
},
yAxis: {
axisLine: {
lineStyle: {
color: 'rgba(119, 181, 213, .3)'
}
},
axisLabel: {
color: '#ade6ee',
fontSize: 12
},
splitLine: {
show: true,
lineStyle: {
color: 'rgba(119, 181, 213, .3)'
}
},
axisTick: {
show: false
},
min: 0,
max: 0
},
series: []
}
//
const initialFilterOption = {
detectorName: '',
stationId: '',
statisticsType: '',
startTime: null,
endTime: null
}
export default {
components: { TitleOverBorder, CustomChart },
mixins: [ModalMixin],
props: {
sampleId: {
type: Number
},
statisticsType: {
type: String
}
},
data() {
return {
option: cloneDeep(initialOption),
initialMDC: {}, //
queryParams: {},
detectorList: [] //
}
},
methods: {
// StationDetector
async getMDCInitialInfo() {
try {
const { success, message, result } = await getAction('/spectrumAnalysis/viewMDC', {
sampleId: this.sampleId
})
if (success) {
this.setStationAndDetector(result)
this.initialMDC = result
} else {
this.$message.error(message)
}
} catch (error) {
console.error(error)
}
},
//
async handleQueryDetector() {
const stationName = this.queryParams.stationName
if (!stationName) {
return
}
try {
const { success, result } = await getAction('/spectrumAnalysis/changeDetector', { stationName })
if (success) {
this.setStationAndDetector(result)
} else {
this.detectorList = []
}
} catch (error) {
console.error(error)
}
},
//
setStationAndDetector({ detectorList, stationName, stationId }) {
this.queryParams.stationName = stationName
this.detectorList = detectorList.map(item => ({
label: item,
value: item
}))
this.queryParams.detectorName = detectorList[0]
this.queryParams.stationId = stationId
},
//
handleReset() {
this.queryParams.stationName = this.initialMDC.stationName
this.detectorList = this.initialMDC.detectorList.map(item => ({
label: item,
value: item
}))
},
//
async handleStatisticsQuery() {
try {
const { success, message, result } = await getAction('/spectrumAnalysis/statisticsQueryBtn', this.queryParams)
if (success) {
if (result) {
const data = result.m_Values
this.option.xAxis.data = result.m_Keys
this.option.yAxis.max = (Math.max(...data) * 1.1).toFixed(2)
this.option.yAxis.min = (Math.min(...data) / 1.1).toFixed(2)
this.option.series = {
type: 'line',
data,
itemStyle: {
color: result.m_GraphPen
},
lineStyle: {
color: result.m_GraphPen
},
symbol: 'circle'
}
} else {
this.option.series = []
}
} else {
this.$message.error(message)
}
} catch (error) {
console.error(error)
}
},
//
handleSnapshot(chartRef) {
exportEchartImg(chartRef.getChartInstance())
},
beforeModalOpen() {
this.getMDCInitialInfo()
this.queryParams = {
...initialFilterOption,
statisticsType: this.statisticsType,
startTime: moment().format('YYYY-MM-DD'),
endTime: moment().format('YYYY-MM-DD')
}
this.option = cloneDeep(initialOption)
}
}
}
</script>
<style lang="less" scoped>
.statistics-paramer-history {
display: flex;
.settings {
width: 405px;
.station {
display: flex;
}
.time-setting {
padding-left: 40px;
}
.center-btns {
> button {
display: block;
width: 100%;
&:nth-child(2) {
margin-top: 10px;
}
}
}
}
&-chart {
flex: 1;
margin-left: 15px;
height: 600px;
}
}
.ant-divider {
margin: 15px 0;
}
.ant-form-item {
margin-bottom: 0;
}
::v-deep .title-over-border-content {
padding: 15px;
}
</style>
<style lang="less">
.statistics-paramer-history {
&-modal,
&-select {
z-index: 1040;
}
}
</style>

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="qc-flags"> <div class="qc-flags">
<div class="qc-flags-item" v-for="conf in config" :key="conf.label"> <div class="qc-flags-item" v-for="conf in config" :key="conf.label" @click="handleClick(conf)">
<span :class="data[conf.name]"></span> <span :class="data[conf.name]"></span>
{{ conf.label }} {{ conf.label }}
</div> </div>
@ -31,7 +31,7 @@ const config = [
name: 'DetBgBtn' name: 'DetBgBtn'
}, },
{ {
label: 'Sample Volume', label: 'Air Volume',
name: 'SampleVolumeBtn' name: 'SampleVolumeBtn'
} }
] ]
@ -45,6 +45,11 @@ export default {
}, },
created() { created() {
this.config = config this.config = config
},
methods: {
handleClick(conf) {
this.$emit('click', conf.label)
}
} }
} }
</script> </script>
@ -58,6 +63,7 @@ export default {
align-items: center; align-items: center;
width: 150px; width: 150px;
height: 30px; height: 30px;
cursor: default;
&:not(:last-child) { &:not(:last-child) {
margin-right: 2px; margin-right: 2px;

View File

@ -1,6 +1,10 @@
<template> <template>
<div class="title-over-border"> <div class="title-over-border">
<div class="title-over-border-title">{{ title }}</div> <div class="title-over-border-title">
<slot name="title">
{{ title }}
</slot>
</div>
<div class="title-over-border-content"> <div class="title-over-border-content">
<slot /> <slot />
</div> </div>
@ -9,11 +13,11 @@
<script> <script>
export default { export default {
props: { props: {
title: { title: {
type: String type: String
}
} }
}
} }
</script> </script>

View File

@ -138,6 +138,8 @@
<rlr-modal v-model="rlrModalVisible" /> <rlr-modal v-model="rlrModalVisible" />
<!-- RLR 弹窗结束 --> <!-- RLR 弹窗结束 -->
<automatic-analysis-log-modal v-model="autoAnalysisMogModalVisible" />
<!-- Beta-Gamma 的Comments 弹窗 --> <!-- Beta-Gamma 的Comments 弹窗 -->
<beta-gamma-comments-modal <beta-gamma-comments-modal
v-model="betaGammaCommentsModalVisible" v-model="betaGammaCommentsModalVisible"
@ -173,7 +175,10 @@
<!-- Beta-Gamma RLR 弹窗 结束 --> <!-- Beta-Gamma RLR 弹窗 结束 -->
<!-- Beta-Gamma Statistics Paramer History 弹窗 --> <!-- Beta-Gamma Statistics Paramer History 弹窗 -->
<statistics-paramer-history-modal v-model="statisticsParamerHistoryModalVisible" /> <statistics-paramer-history-modal
v-model="statisticsParamerHistoryModalVisible"
:sampleId="this.sampleData.sampleId"
/>
<!-- Beta-Gamma Statistics Paramer History 弹窗 结束 --> <!-- Beta-Gamma Statistics Paramer History 弹窗 结束 -->
</div> </div>
</template> </template>
@ -214,6 +219,7 @@ import StatisticsParamerHistoryModal from './components/Modals/BetaGammaModals/S
import FtransltModal from './components/Modals/FtransltModal/index.vue' import FtransltModal from './components/Modals/FtransltModal/index.vue'
import BetaGammaEnergyCalibrationModal from './components/Modals/BetaGammaModals/BetaGammaEnergyCalibrationModal/index.vue' import BetaGammaEnergyCalibrationModal from './components/Modals/BetaGammaModals/BetaGammaEnergyCalibrationModal/index.vue'
import StripModal from './components/Modals/StripModal.vue' import StripModal from './components/Modals/StripModal.vue'
import AutomaticAnalysisLogModal from './components/Modals/BetaGammaModals/AutomaticAnalysisLogModal.vue'
// //
const ANALYZE_TYPE = { const ANALYZE_TYPE = {
@ -257,7 +263,8 @@ export default {
StatisticsParamerHistoryModal, StatisticsParamerHistoryModal,
FtransltModal, FtransltModal,
BetaGammaEnergyCalibrationModal, BetaGammaEnergyCalibrationModal,
StripModal StripModal,
AutomaticAnalysisLogModal
}, },
data() { data() {
this.ANALYZE_TYPE = ANALYZE_TYPE this.ANALYZE_TYPE = ANALYZE_TYPE
@ -305,6 +312,8 @@ export default {
qcResultsModalVisible: false, // Reports -> Qc Results qcResultsModalVisible: false, // Reports -> Qc Results
rlrModalVisible: false, // Reports -> RLR rlrModalVisible: false, // Reports -> RLR
autoAnalysisMogModalVisible: false, // Log -> Automatic Analysis Log
/** /**
* 以下是beta-gamma跟前面不同的弹窗 * 以下是beta-gamma跟前面不同的弹窗
**/ **/
@ -320,6 +329,13 @@ export default {
statisticsParamerHistoryModalVisible: false // beta-gamma Statistics Paramer History statisticsParamerHistoryModalVisible: false // beta-gamma Statistics Paramer History
} }
}, },
created() {
this.loadSelectedSample({
sampleId: 426120,
dbName: 'auto',
sampleType: 'B'
})
},
methods: { methods: {
/** /**
* 从数据库加载-选择完成 * 从数据库加载-选择完成
@ -403,11 +419,6 @@ export default {
} }
}, },
//
handleAutoAnalysisLog() {
console.log('%c [ handleAutoAnalysisLog ]-211', 'font-size:13px; background:pink; color:#bf2c9f;')
},
// //
handleHelp() { handleHelp() {
console.log('%c [ handleHelp ]-221', 'font-size:13px; background:pink; color:#bf2c9f;') console.log('%c [ handleHelp ]-221', 'font-size:13px; background:pink; color:#bf2c9f;')
@ -807,11 +818,19 @@ export default {
{ {
type: 'a-menu-item', type: 'a-menu-item',
title: 'Automatic Analysis Log', title: 'Automatic Analysis Log',
handler: this.handleAutoAnalysisLog show: this.isBetaGamma,
handler: () => (this.autoAnalysisMogModalVisible = true)
},
{
type: 'a-menu-item',
title: 'BG log viewer',
show: this.isBetaGamma,
handler: () => {}
}, },
{ {
type: 'a-menu-item', type: 'a-menu-item',
title: 'GammaViewer Log', title: 'GammaViewer Log',
show: this.isGamma,
handler: () => (this.dataProcessingLogModalVisible = true) handler: () => (this.dataProcessingLogModalVisible = true)
} }
] ]