Merge branch 'feature-analysis-RLR-renpy' of http://git.hivekion.com:3000/xiaoguangbin/AnalysisSystemForRadionuclide_vue into master-dev
This commit is contained in:
commit
486b9f5d9f
|
@ -57,6 +57,7 @@
|
||||||
"vxe-table": "2.9.13",
|
"vxe-table": "2.9.13",
|
||||||
"vxe-table-plugin-antd": "1.8.10",
|
"vxe-table-plugin-antd": "1.8.10",
|
||||||
"xe-utils": "2.4.8",
|
"xe-utils": "2.4.8",
|
||||||
|
"xlsx": "^0.18.5",
|
||||||
"xss": "^1.0.13"
|
"xss": "^1.0.13"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|
|
@ -6,6 +6,7 @@ import user from './modules/user'
|
||||||
import permission from './modules/permission'
|
import permission from './modules/permission'
|
||||||
import enhance from './modules/enhance'
|
import enhance from './modules/enhance'
|
||||||
import online from './modules/online'
|
import online from './modules/online'
|
||||||
|
import sample from './modules/sample'
|
||||||
import getters from './getters'
|
import getters from './getters'
|
||||||
|
|
||||||
Vue.use(Vuex)
|
Vue.use(Vuex)
|
||||||
|
@ -17,6 +18,7 @@ export default new Vuex.Store({
|
||||||
permission,
|
permission,
|
||||||
enhance,
|
enhance,
|
||||||
online,
|
online,
|
||||||
|
sample
|
||||||
},
|
},
|
||||||
state: {
|
state: {
|
||||||
|
|
||||||
|
|
30
src/store/modules/sample.js
Normal file
30
src/store/modules/sample.js
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
const sample = {
|
||||||
|
state: {
|
||||||
|
sampleList: []
|
||||||
|
},
|
||||||
|
mutations: {
|
||||||
|
SET_SAMPLE_LIST: (state, sampleList) => {
|
||||||
|
state.sampleList = sampleList
|
||||||
|
},
|
||||||
|
|
||||||
|
ADD_SAMPLE_DATA: (state, sampleData) => {
|
||||||
|
state.sampleList.push(sampleData)
|
||||||
|
},
|
||||||
|
|
||||||
|
GET_SAMPLE_DATA: (state, inputFileName) => {
|
||||||
|
const find = state.sampleList.find(item => item.inputFileName == inputFileName)
|
||||||
|
return find
|
||||||
|
},
|
||||||
|
|
||||||
|
REMOVE_SAMPLE_DATA: (state, inputFileName) => {
|
||||||
|
const findIndex = state.sampleList.findIndex(item => item.inputFileName == inputFileName)
|
||||||
|
state.sampleList.splice(findIndex, 1)
|
||||||
|
},
|
||||||
|
|
||||||
|
CLEAR_SAMPLE_DATA: () => {
|
||||||
|
state.sampleList = []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default sample
|
|
@ -114,5 +114,5 @@ export function rangeNumber(min, max) {
|
||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
export function getAxisMax(chartInstance, axis) {
|
export function getAxisMax(chartInstance, axis) {
|
||||||
return chartInstance.getModel().getComponent(axis).axis.scale._extent[1]
|
return chartInstance.getModel().getComponent(axis).axis.scale.rawExtentInfo._dataMax
|
||||||
}
|
}
|
|
@ -104,21 +104,28 @@ export function getFileNameByHeaderContentDisposition(contentDisposition) {
|
||||||
return fileName
|
return fileName
|
||||||
}
|
}
|
||||||
|
|
||||||
export const fetchAndDownload = async (url, data) => {
|
export const fetchAndDownload = async (url, data, method='post') => {
|
||||||
const apiBaseUrl = window._CONFIG['domianURL'] || '/jeecg-boot'
|
const apiBaseUrl = window._CONFIG['domianURL'] || '/jeecg-boot'
|
||||||
const sign = signMd5Utils.getSign(url, data)
|
const sign = signMd5Utils.getSign(url, data)
|
||||||
const response = await Axios({
|
|
||||||
|
const config = {
|
||||||
baseURL: apiBaseUrl,
|
baseURL: apiBaseUrl,
|
||||||
method: 'post',
|
method,
|
||||||
url,
|
url,
|
||||||
data: data,
|
data,
|
||||||
|
|
||||||
headers: {
|
headers: {
|
||||||
'X-Sign': sign,
|
'X-Sign': sign,
|
||||||
'X-TIMESTAMP': signMd5Utils.getTimestamp(),
|
'X-TIMESTAMP': signMd5Utils.getTimestamp(),
|
||||||
'X-Access-Token': Vue.ls.get(ACCESS_TOKEN),
|
'X-Access-Token': Vue.ls.get(ACCESS_TOKEN),
|
||||||
'tenant-id': Vue.ls.get(TENANT_ID)
|
'tenant-id': Vue.ls.get(TENANT_ID)
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
|
if(method == 'get') {
|
||||||
|
config.params = data
|
||||||
|
}
|
||||||
|
|
||||||
|
const response = await Axios(config)
|
||||||
const { status, headers, data: responseData } = response
|
const { status, headers, data: responseData } = response
|
||||||
if (status == 200) {
|
if (status == 200) {
|
||||||
if (typeof responseData == 'object') {
|
if (typeof responseData == 'object') {
|
||||||
|
|
|
@ -51,7 +51,7 @@
|
||||||
class="custom-tool-tip"
|
class="custom-tool-tip"
|
||||||
:style="{
|
:style="{
|
||||||
top: customToolTip.top + 'px',
|
top: customToolTip.top + 'px',
|
||||||
left: customToolTip.left + 'px'
|
left: customToolTip.left + 'px',
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<div class="channel">Channel: {{ customToolTip.channel }}</div>
|
<div class="channel">Channel: {{ customToolTip.channel }}</div>
|
||||||
|
@ -62,7 +62,7 @@
|
||||||
class="custom-tool-tip"
|
class="custom-tool-tip"
|
||||||
:style="{
|
:style="{
|
||||||
top: customToolTip2.top + 'px',
|
top: customToolTip2.top + 'px',
|
||||||
left: customToolTip2.left + 'px'
|
left: customToolTip2.left + 'px',
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<div class="channel">Channel: {{ customToolTip2.channel }}</div>
|
<div class="channel">Channel: {{ customToolTip2.channel }}</div>
|
||||||
|
@ -89,10 +89,18 @@
|
||||||
<div class="title">Gamma Window Setting</div>
|
<div class="title">Gamma Window Setting</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="label">Gamma Window Begin:</div>
|
<div class="label">Gamma Window Begin:</div>
|
||||||
<a-input-number size="small" v-model="model.windowBegin" @change="calculateTotalCount"></a-input-number>
|
<a-input-number
|
||||||
|
size="small"
|
||||||
|
v-model="model.windowBegin"
|
||||||
|
@change="handleGammaWindowSettingChange"
|
||||||
|
></a-input-number>
|
||||||
Channel
|
Channel
|
||||||
<div class="label">Gamma Window End:</div>
|
<div class="label">Gamma Window End:</div>
|
||||||
<a-input-number size="small" v-model="model.windowEnd" @change="calculateTotalCount"></a-input-number>
|
<a-input-number
|
||||||
|
size="small"
|
||||||
|
v-model="model.windowEnd"
|
||||||
|
@change="handleGammaWindowSettingChange"
|
||||||
|
></a-input-number>
|
||||||
Channel
|
Channel
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -100,9 +108,19 @@
|
||||||
<div class="title">Parameter Setting</div>
|
<div class="title">Parameter Setting</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="label">Min of Energy:</div>
|
<div class="label">Min of Energy:</div>
|
||||||
<a-input-number size="small" v-model="model.minEnergy"></a-input-number> keV
|
<a-input-number
|
||||||
|
size="small"
|
||||||
|
v-model="model.minEnergy"
|
||||||
|
@change="handleParameterSettingChange"
|
||||||
|
></a-input-number>
|
||||||
|
keV
|
||||||
<div class="label">Half Life:</div>
|
<div class="label">Half Life:</div>
|
||||||
<a-input-number size="small" v-model="model.halfLife"></a-input-number> Day
|
<a-input-number
|
||||||
|
size="small"
|
||||||
|
v-model="model.halfLife"
|
||||||
|
@change="handleParameterSettingChange"
|
||||||
|
></a-input-number>
|
||||||
|
Day
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="setting-item">
|
<div class="setting-item">
|
||||||
|
@ -137,7 +155,7 @@
|
||||||
>
|
>
|
||||||
<template slot="delete" slot-scope="text, record, index">
|
<template slot="delete" slot-scope="text, record, index">
|
||||||
<a-button type="link" size="small" @click="handleDel(index)">
|
<a-button type="link" size="small" @click="handleDel(index)">
|
||||||
<a-icon type="delete" style="color: red;"></a-icon>
|
<a-icon type="delete" style="color: red"></a-icon>
|
||||||
</a-button>
|
</a-button>
|
||||||
</template>
|
</template>
|
||||||
</a-table>
|
</a-table>
|
||||||
|
@ -196,7 +214,7 @@ import { getAction, postAction } from '@/api/manage'
|
||||||
import { useBaseChartSetting } from '../../../useChart'
|
import { useBaseChartSetting } from '../../../useChart'
|
||||||
import TitleOverBorder from '../../TitleOverBorder.vue'
|
import TitleOverBorder from '../../TitleOverBorder.vue'
|
||||||
import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
|
import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
|
||||||
import { isNullOrUndefined } from '@/utils/util'
|
import { isNumber } from 'xe-utils/methods'
|
||||||
|
|
||||||
const initialGammaChartOption = {
|
const initialGammaChartOption = {
|
||||||
grid: {
|
grid: {
|
||||||
|
@ -204,7 +222,7 @@ const initialGammaChartOption = {
|
||||||
right: 15,
|
right: 15,
|
||||||
bottom: 10,
|
bottom: 10,
|
||||||
left: 10,
|
left: 10,
|
||||||
containLabel: true
|
containLabel: true,
|
||||||
},
|
},
|
||||||
xAxis: {
|
xAxis: {
|
||||||
min: 0,
|
min: 0,
|
||||||
|
@ -212,21 +230,21 @@ const initialGammaChartOption = {
|
||||||
interval: 64,
|
interval: 64,
|
||||||
axisLine: {
|
axisLine: {
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
color: 'rgb(119, 181, 213, 0.5)'
|
color: 'rgb(119, 181, 213, 0.5)',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
splitLine: {
|
splitLine: {
|
||||||
show: true,
|
show: true,
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
color: 'rgba(119, 181, 213, .2)'
|
color: 'rgba(119, 181, 213, .2)',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
axisTick: {
|
axisTick: {
|
||||||
show: false
|
show: false,
|
||||||
},
|
},
|
||||||
axisLabel: {
|
axisLabel: {
|
||||||
color: '#ade6ee'
|
color: '#ade6ee',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
yAxis: {
|
yAxis: {
|
||||||
min: 0,
|
min: 0,
|
||||||
|
@ -235,57 +253,57 @@ const initialGammaChartOption = {
|
||||||
axisLine: {
|
axisLine: {
|
||||||
show: true,
|
show: true,
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
color: 'rgb(119, 181, 213, 0.5)'
|
color: 'rgb(119, 181, 213, 0.5)',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
splitLine: {
|
splitLine: {
|
||||||
show: true,
|
show: true,
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
color: 'rgba(119, 181, 213, .2)'
|
color: 'rgba(119, 181, 213, .2)',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
axisTick: {
|
axisTick: {
|
||||||
show: false
|
show: false,
|
||||||
},
|
},
|
||||||
axisLabel: {
|
axisLabel: {
|
||||||
color: '#ade6ee'
|
color: '#ade6ee',
|
||||||
},
|
},
|
||||||
animation: false
|
animation: false,
|
||||||
},
|
},
|
||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
type: 'line',
|
type: 'line',
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
color: '#04ADD9'
|
color: '#04ADD9',
|
||||||
},
|
},
|
||||||
symbol: 'none',
|
symbol: 'none',
|
||||||
data: [],
|
data: [],
|
||||||
markLine: {
|
markLine: {
|
||||||
symbol: 'none',
|
symbol: 'none',
|
||||||
label: {
|
label: {
|
||||||
show: false
|
show: false,
|
||||||
},
|
},
|
||||||
animation: false,
|
animation: false,
|
||||||
emphasis: {
|
emphasis: {
|
||||||
disabled: true
|
disabled: true,
|
||||||
},
|
},
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
color: '#f00'
|
color: '#f00',
|
||||||
},
|
},
|
||||||
data: [{ xAxis: -1 }, { xAxis: -1 }]
|
data: [{ xAxis: -1 }, { xAxis: -1 }],
|
||||||
},
|
},
|
||||||
animation: false
|
animation: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'line',
|
type: 'line',
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
color: '#A8DA56'
|
color: '#A8DA56',
|
||||||
},
|
},
|
||||||
symbol: 'none',
|
symbol: 'none',
|
||||||
data: [],
|
data: [],
|
||||||
animation: false
|
animation: false,
|
||||||
}
|
},
|
||||||
]
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
const initialBetaChartOption = {
|
const initialBetaChartOption = {
|
||||||
|
@ -294,7 +312,7 @@ const initialBetaChartOption = {
|
||||||
right: 15,
|
right: 15,
|
||||||
bottom: 10,
|
bottom: 10,
|
||||||
left: 10,
|
left: 10,
|
||||||
containLabel: true
|
containLabel: true,
|
||||||
},
|
},
|
||||||
xAxis: {
|
xAxis: {
|
||||||
min: 0,
|
min: 0,
|
||||||
|
@ -302,21 +320,21 @@ const initialBetaChartOption = {
|
||||||
interval: 64,
|
interval: 64,
|
||||||
axisLine: {
|
axisLine: {
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
color: 'rgb(119, 181, 213, 0.5)'
|
color: 'rgb(119, 181, 213, 0.5)',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
splitLine: {
|
splitLine: {
|
||||||
show: true,
|
show: true,
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
color: 'rgba(119, 181, 213, .2)'
|
color: 'rgba(119, 181, 213, .2)',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
axisTick: {
|
axisTick: {
|
||||||
show: false
|
show: false,
|
||||||
},
|
},
|
||||||
axisLabel: {
|
axisLabel: {
|
||||||
color: '#ade6ee'
|
color: '#ade6ee',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
yAxis: {
|
yAxis: {
|
||||||
min: 0,
|
min: 0,
|
||||||
|
@ -325,57 +343,57 @@ const initialBetaChartOption = {
|
||||||
axisLine: {
|
axisLine: {
|
||||||
show: true,
|
show: true,
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
color: 'rgb(119, 181, 213, 0.5)'
|
color: 'rgb(119, 181, 213, 0.5)',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
splitLine: {
|
splitLine: {
|
||||||
show: true,
|
show: true,
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
color: 'rgba(119, 181, 213, .2)'
|
color: 'rgba(119, 181, 213, .2)',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
axisTick: {
|
axisTick: {
|
||||||
show: false
|
show: false,
|
||||||
},
|
},
|
||||||
axisLabel: {
|
axisLabel: {
|
||||||
color: '#ade6ee'
|
color: '#ade6ee',
|
||||||
},
|
},
|
||||||
animation: false
|
animation: false,
|
||||||
},
|
},
|
||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
type: 'line',
|
type: 'line',
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
color: '#04ADD9'
|
color: '#04ADD9',
|
||||||
},
|
},
|
||||||
symbol: 'none',
|
symbol: 'none',
|
||||||
data: [],
|
data: [],
|
||||||
markLine: {
|
markLine: {
|
||||||
symbol: 'none',
|
symbol: 'none',
|
||||||
label: {
|
label: {
|
||||||
show: false
|
show: false,
|
||||||
},
|
},
|
||||||
animation: false,
|
animation: false,
|
||||||
emphasis: {
|
emphasis: {
|
||||||
disabled: true
|
disabled: true,
|
||||||
},
|
},
|
||||||
lineStyle: {
|
lineStyle: {
|
||||||
color: '#f00'
|
color: '#f00',
|
||||||
},
|
},
|
||||||
data: []
|
data: [],
|
||||||
},
|
},
|
||||||
animation: false
|
animation: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'line',
|
type: 'line',
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
color: '#A8DA56'
|
color: '#A8DA56',
|
||||||
},
|
},
|
||||||
symbol: 'none',
|
symbol: 'none',
|
||||||
data: [],
|
data: [],
|
||||||
animation: false
|
animation: false,
|
||||||
}
|
},
|
||||||
]
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
const initialResultChartOption = {
|
const initialResultChartOption = {
|
||||||
|
@ -384,23 +402,23 @@ const initialResultChartOption = {
|
||||||
{
|
{
|
||||||
type: 'line',
|
type: 'line',
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
color: '#04ADD9'
|
color: '#04ADD9',
|
||||||
},
|
},
|
||||||
symbol: 'none',
|
symbol: 'none',
|
||||||
data: [],
|
data: [],
|
||||||
animation: false
|
animation: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'scatter',
|
type: 'scatter',
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
color: 'red'
|
color: 'red',
|
||||||
},
|
},
|
||||||
symbolSize: 6,
|
symbolSize: 6,
|
||||||
data: [],
|
data: [],
|
||||||
zlevel: 2,
|
zlevel: 2,
|
||||||
animation: false
|
animation: false,
|
||||||
}
|
},
|
||||||
]
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
initialResultChartOption.yAxis.boundaryGap = ['20%', '20%']
|
initialResultChartOption.yAxis.boundaryGap = ['20%', '20%']
|
||||||
|
@ -411,30 +429,30 @@ const columns = [
|
||||||
customRender: (_, __, index) => {
|
customRender: (_, __, index) => {
|
||||||
return index + 1
|
return index + 1
|
||||||
},
|
},
|
||||||
align: 'center'
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Eb',
|
title: 'Eb',
|
||||||
dataIndex: 'eb',
|
dataIndex: 'eb',
|
||||||
align: 'center'
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Nx',
|
title: 'Nx',
|
||||||
dataIndex: 'nx',
|
dataIndex: 'nx',
|
||||||
align: 'center'
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Ny',
|
title: 'Ny',
|
||||||
dataIndex: 'ny',
|
dataIndex: 'ny',
|
||||||
align: 'center'
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Delete',
|
title: 'Delete',
|
||||||
scopedSlots: {
|
scopedSlots: {
|
||||||
customRender: 'delete'
|
customRender: 'delete',
|
||||||
|
},
|
||||||
|
align: 'center',
|
||||||
},
|
},
|
||||||
align: 'center'
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
|
|
||||||
const initialModel = {
|
const initialModel = {
|
||||||
|
@ -442,20 +460,20 @@ const initialModel = {
|
||||||
windowEnd: undefined,
|
windowEnd: undefined,
|
||||||
minEnergy: 0.1,
|
minEnergy: 0.1,
|
||||||
halfLife: 5.243,
|
halfLife: 5.243,
|
||||||
fitType: 'liner'
|
fitType: 'liner',
|
||||||
}
|
}
|
||||||
|
|
||||||
// Function of Fitting
|
// Function of Fitting
|
||||||
const funcList = {
|
const funcList = {
|
||||||
liner: 'y = ax + b',
|
liner: 'y = ax + b',
|
||||||
poly2: 'y = axx + bx + c'
|
poly2: 'y = axx + bx + c',
|
||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
mixins: [ModalMixin, SampleDataMixin],
|
mixins: [ModalMixin, SampleDataMixin],
|
||||||
components: {
|
components: {
|
||||||
CustomChart,
|
CustomChart,
|
||||||
TitleOverBorder
|
TitleOverBorder,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
this.columns = columns
|
this.columns = columns
|
||||||
|
@ -469,14 +487,14 @@ export default {
|
||||||
left: 0,
|
left: 0,
|
||||||
visible: false,
|
visible: false,
|
||||||
channel: '',
|
channel: '',
|
||||||
energy: ''
|
energy: '',
|
||||||
},
|
},
|
||||||
customToolTip2: {
|
customToolTip2: {
|
||||||
top: 0,
|
top: 0,
|
||||||
left: 0,
|
left: 0,
|
||||||
visible: false,
|
visible: false,
|
||||||
channel: '',
|
channel: '',
|
||||||
energy: ''
|
energy: '',
|
||||||
},
|
},
|
||||||
|
|
||||||
totalCount: [0, 0],
|
totalCount: [0, 0],
|
||||||
|
@ -490,7 +508,7 @@ export default {
|
||||||
|
|
||||||
model: cloneDeep(initialModel),
|
model: cloneDeep(initialModel),
|
||||||
tableList: [],
|
tableList: [],
|
||||||
isAnalysing: false
|
isAnalysing: false,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
@ -502,7 +520,7 @@ export default {
|
||||||
this.resultChartOption = cloneDeep(initialResultChartOption)
|
this.resultChartOption = cloneDeep(initialResultChartOption)
|
||||||
|
|
||||||
this.model = cloneDeep(initialModel)
|
this.model = cloneDeep(initialModel)
|
||||||
this.currFunction = funcList[this.model.fitType]
|
this.handleFuncChange()
|
||||||
this.tableList = []
|
this.tableList = []
|
||||||
|
|
||||||
this.calculateTotalCount()
|
this.calculateTotalCount()
|
||||||
|
@ -516,7 +534,7 @@ export default {
|
||||||
const { sampleId, inputFileName: sampleFileName } = this.sampleData
|
const { sampleId, inputFileName: sampleFileName } = this.sampleData
|
||||||
const { success, result, message } = await getAction('/spectrumAnalysis/viewExtrapolation', {
|
const { success, result, message } = await getAction('/spectrumAnalysis/viewExtrapolation', {
|
||||||
sampleId,
|
sampleId,
|
||||||
sampleFileName
|
sampleFileName,
|
||||||
})
|
})
|
||||||
if (success) {
|
if (success) {
|
||||||
this.detail = result
|
this.detail = result
|
||||||
|
@ -526,7 +544,7 @@ export default {
|
||||||
betaProjectedSeriseData,
|
betaProjectedSeriseData,
|
||||||
gammaChannelEnergy,
|
gammaChannelEnergy,
|
||||||
gammaOriginSeriseData,
|
gammaOriginSeriseData,
|
||||||
gammaProjectedSeriseData
|
gammaProjectedSeriseData,
|
||||||
} = result
|
} = result
|
||||||
|
|
||||||
this.gammaChannelEnergy = gammaChannelEnergy
|
this.gammaChannelEnergy = gammaChannelEnergy
|
||||||
|
@ -579,8 +597,8 @@ export default {
|
||||||
// 如果是左键
|
// 如果是左键
|
||||||
if (isMouseLeft) {
|
if (isMouseLeft) {
|
||||||
// 如果有右值且左值大于等于右值,清空
|
// 如果有右值且左值大于等于右值,清空
|
||||||
if (!isNullOrUndefined(this.model.windowEnd) && xAxis >= this.model.windowEnd) {
|
if (!isNumber(this.model.windowEnd) && xAxis >= this.model.windowEnd) {
|
||||||
this.clearMarkLineAndToolTip()
|
this.reset()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -591,8 +609,8 @@ export default {
|
||||||
}
|
}
|
||||||
// 如果是右键
|
// 如果是右键
|
||||||
else {
|
else {
|
||||||
if (!isNullOrUndefined(this.model.windowBegin) && xAxis <= this.model.windowBegin) {
|
if (!isNumber(this.model.windowBegin) && xAxis <= this.model.windowBegin) {
|
||||||
this.clearMarkLineAndToolTip()
|
this.reset()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -612,10 +630,11 @@ export default {
|
||||||
currToolTip.energy = parseInt(energy) + 'keV'
|
currToolTip.energy = parseInt(energy) + 'keV'
|
||||||
|
|
||||||
this.calculateTotalCount()
|
this.calculateTotalCount()
|
||||||
|
this.getTableAndChartData()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
clearMarkLineAndToolTip() {
|
reset() {
|
||||||
const markLineData = this.gammaSpectrumChartOption.series[0].markLine.data
|
const markLineData = this.gammaSpectrumChartOption.series[0].markLine.data
|
||||||
markLineData[0].xAxis = -1
|
markLineData[0].xAxis = -1
|
||||||
markLineData[1].xAxis = -1
|
markLineData[1].xAxis = -1
|
||||||
|
@ -626,12 +645,18 @@ export default {
|
||||||
this.model.windowBegin = null
|
this.model.windowBegin = null
|
||||||
this.model.windowEnd = null
|
this.model.windowEnd = null
|
||||||
|
|
||||||
|
this.tableList = []
|
||||||
|
const [lineSeries, scatterSeries] = this.resultChartOption.series
|
||||||
|
lineSeries.data = []
|
||||||
|
scatterSeries.data = []
|
||||||
|
|
||||||
this.calculateTotalCount()
|
this.calculateTotalCount()
|
||||||
},
|
},
|
||||||
|
|
||||||
// 计算Total Count
|
// 计算Total Count
|
||||||
calculateTotalCount() {
|
calculateTotalCount() {
|
||||||
if (!this.model.windowBegin || !this.model.windowEnd || this.model.windowBegin >= this.model.windowEnd) {
|
const { windowBegin, windowEnd } = this.model
|
||||||
|
if (!isNumber(windowBegin) || !isNumber(windowEnd) || windowBegin >= windowEnd) {
|
||||||
this.totalCount = [0, 0]
|
this.totalCount = [0, 0]
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -658,56 +683,96 @@ export default {
|
||||||
exportEchartImg(this.$refs.chartRef.getChartInstance())
|
exportEchartImg(this.$refs.chartRef.getChartInstance())
|
||||||
},
|
},
|
||||||
|
|
||||||
// 分析
|
handleGammaWindowSettingChange() {
|
||||||
async handleAnalyse() {
|
this.calculateTotalCount()
|
||||||
|
this.getTableAndChartData()
|
||||||
|
},
|
||||||
|
|
||||||
|
handleParameterSettingChange() {
|
||||||
|
this.getTableAndChartData()
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取表格和图表数据
|
||||||
|
*/
|
||||||
|
async getTableAndChartData() {
|
||||||
const { windowBegin, windowEnd, minEnergy, halfLife, fitType } = this.model
|
const { windowBegin, windowEnd, minEnergy, halfLife, fitType } = this.model
|
||||||
if (
|
const [lineSeries, scatterSeries] = this.resultChartOption.series
|
||||||
isNullOrUndefined(windowBegin) ||
|
lineSeries.data = []
|
||||||
isNullOrUndefined(windowEnd) ||
|
|
||||||
isNullOrUndefined(minEnergy) ||
|
if (!this.validateSettingValue()) {
|
||||||
isNullOrUndefined(halfLife)
|
scatterSeries.data = []
|
||||||
) {
|
this.tableList = []
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
try {
|
|
||||||
const { sampleFileName, detFileName } = this.sampleData
|
|
||||||
|
|
||||||
|
const { sampleId, dbName, sampleFileName, detFileName } = this.sampleData
|
||||||
|
try {
|
||||||
const params = {
|
const params = {
|
||||||
sampleId: null,
|
sampleId,
|
||||||
dbName: '',
|
dbName,
|
||||||
sampleFileName,
|
sampleFileName,
|
||||||
detFileName,
|
detFileName,
|
||||||
gammaBegin: windowBegin,
|
gammaBegin: windowBegin,
|
||||||
gammaEnd: windowEnd,
|
gammaEnd: windowEnd,
|
||||||
minEnergy,
|
minEnergy,
|
||||||
halfLife,
|
halfLife,
|
||||||
fitType //选择Linear 传 liner 选择2-Polynomial 传 poly2
|
fitType, //选择Linear 传 liner 选择2-Polynomial 传 poly2
|
||||||
}
|
}
|
||||||
|
const { success, result, message } = await postAction('/spectrumAnalysis/changeDataExtrapolation', params)
|
||||||
|
if (success) {
|
||||||
|
const { resultViewScatterDataValue, tableData } = result
|
||||||
|
scatterSeries.data = resultViewScatterDataValue.map(({ x, y }) => [x, y])
|
||||||
|
this.resetResultChartPerform()
|
||||||
|
|
||||||
|
this.tableList = tableData
|
||||||
|
} else {
|
||||||
|
this.$message.error(message)
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// 分析
|
||||||
|
async handleAnalyse() {
|
||||||
|
const { minEnergy, halfLife, fitType } = this.model
|
||||||
|
if (!this.validateSettingValue()) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
const { acquisitionRealTime: acqRealTime, acquisitionStart: acqStartTime } = this.detail
|
||||||
|
|
||||||
|
const params = {
|
||||||
|
eb: this.tableList.map(({ eb }) => eb),
|
||||||
|
nx: this.tableList.map(({ nx }) => nx),
|
||||||
|
ny: this.tableList.map(({ ny }) => ny),
|
||||||
|
acqRealTime,
|
||||||
|
minEnergy,
|
||||||
|
halfLife,
|
||||||
|
acqStartTime,
|
||||||
|
fitType,
|
||||||
|
}
|
||||||
|
|
||||||
this.isAnalysing = true
|
this.isAnalysing = true
|
||||||
const { success, result, message } = await postAction('/spectrumAnalysis/analyseExtrapolation', params)
|
const { success, result, message } = await postAction('/spectrumAnalysis/analyseExtrapolation', params)
|
||||||
if (success) {
|
if (success) {
|
||||||
console.log('%c [ ]-679', 'font-size:13px; background:pink; color:#bf2c9f;', result)
|
|
||||||
const {
|
const {
|
||||||
functionFit, // Function of Fitting
|
functionFit, // Function of Fitting
|
||||||
resultViewLineDataValue, // 折线
|
resultViewLineDataValue, // 折线
|
||||||
resultViewScatterDataValue, // 原点
|
xeAct,
|
||||||
tableData, // 表格数据
|
|
||||||
xeAct
|
|
||||||
} = result
|
} = result
|
||||||
|
|
||||||
this.currFunction = functionFit
|
this.currFunction = functionFit
|
||||||
|
|
||||||
const [lineSeries, scatterSeries] = this.resultChartOption.series
|
const [lineSeries] = this.resultChartOption.series
|
||||||
lineSeries.data = resultViewLineDataValue.map(({ x, y }) => [x, y])
|
lineSeries.data = resultViewLineDataValue.map(({ x, y }) => [x, y])
|
||||||
scatterSeries.data = resultViewScatterDataValue.map(({ x, y }) => [x, y])
|
|
||||||
this.resetResultChartPerform()
|
this.resetResultChartPerform()
|
||||||
|
|
||||||
this.xeActivity = {
|
this.xeActivity = {
|
||||||
referenceTime: this.detail.acquisitionStart,
|
referenceTime: this.detail.acquisitionStart,
|
||||||
activity: Number.isNaN(xeAct)? xeAct: Number(xeAct).toPrecision(6)
|
activity: Number.isNaN(xeAct) ? xeAct : Number(xeAct).toPrecision(6),
|
||||||
}
|
}
|
||||||
|
|
||||||
this.tableList = tableData
|
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(message)
|
this.$message.error(message)
|
||||||
}
|
}
|
||||||
|
@ -718,6 +783,18 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
validateSettingValue() {
|
||||||
|
const { windowBegin, windowEnd, minEnergy, halfLife } = this.model
|
||||||
|
if (!isNumber(windowBegin) || !isNumber(windowEnd) || !isNumber(minEnergy) || !isNumber(halfLife)) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图表最大值、最小值等设为按实际情况取值
|
||||||
|
*/
|
||||||
resetResultChartPerform() {
|
resetResultChartPerform() {
|
||||||
this.resultChartOption.yAxis.min = undefined
|
this.resultChartOption.yAxis.min = undefined
|
||||||
this.resultChartOption.yAxis.max = undefined
|
this.resultChartOption.yAxis.max = undefined
|
||||||
|
@ -731,8 +808,8 @@ export default {
|
||||||
handleDel(index) {
|
handleDel(index) {
|
||||||
this.tableList.splice(index, 1)
|
this.tableList.splice(index, 1)
|
||||||
this.resultChartOption.series[1].data.splice(index, 1)
|
this.resultChartOption.series[1].data.splice(index, 1)
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
|
|
|
@ -80,7 +80,7 @@ export default {
|
||||||
|
|
||||||
const params = this.getQueryParams() //查询条件
|
const params = this.getQueryParams() //查询条件
|
||||||
const searchName = this.queryParam.searchName
|
const searchName = this.queryParam.searchName
|
||||||
params.name = `${searchName ? `${searchName},` : ''}_S_`
|
params.name = searchName
|
||||||
this.loading = true
|
this.loading = true
|
||||||
getAction('/spectrumFile/get', params)
|
getAction('/spectrumFile/get', params)
|
||||||
.then(res => {
|
.then(res => {
|
||||||
|
|
49
src/views/spectrumAnalysis/components/Modals/EditCell.vue
Normal file
49
src/views/spectrumAnalysis/components/Modals/EditCell.vue
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
<template>
|
||||||
|
<div class="editable-cell">
|
||||||
|
<div v-if="editable" class="editable-cell-input-wrapper">
|
||||||
|
<a-input ref="myInput" :value="value" @change="handleChange" @blur="handleBlur" />
|
||||||
|
</div>
|
||||||
|
<div v-else class="editable-cell-text-wrapper" @dblclick="handleCellClick">
|
||||||
|
{{ value || ' ' }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
text: Number,
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
value: this.text,
|
||||||
|
editable: false,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleCellClick() {
|
||||||
|
this.editable = true
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.$refs.myInput.focus()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
handleChange(e) {
|
||||||
|
this.value = e.target.value
|
||||||
|
},
|
||||||
|
handleBlur() {
|
||||||
|
this.editable = false
|
||||||
|
this.$emit('change', this.value)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
/deep/.ant-input {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
.editable-cell-text-wrapper {
|
||||||
|
min-height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -10,8 +10,8 @@
|
||||||
class="korsum-input-formula"
|
class="korsum-input-formula"
|
||||||
:labelCol="{
|
:labelCol="{
|
||||||
style: {
|
style: {
|
||||||
width: '110px'
|
width: '110px',
|
||||||
}
|
},
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<a-form-model-item label="Total Effi = exp(">
|
<a-form-model-item label="Total Effi = exp(">
|
||||||
|
@ -64,9 +64,7 @@
|
||||||
<!-- 公式结束 -->
|
<!-- 公式结束 -->
|
||||||
|
|
||||||
<!-- 标题 -->
|
<!-- 标题 -->
|
||||||
<a-button type="primary" class="korsum-input-title" @click="handleInput">
|
<a-button type="primary" class="korsum-input-title" @click="handleInput"> Input </a-button>
|
||||||
Input
|
|
||||||
</a-button>
|
|
||||||
<!-- 标题结束 -->
|
<!-- 标题结束 -->
|
||||||
|
|
||||||
<!-- 表格开始 -->
|
<!-- 表格开始 -->
|
||||||
|
@ -125,7 +123,15 @@
|
||||||
:class="outputTableList.length ? 'has-data' : ''"
|
:class="outputTableList.length ? 'has-data' : ''"
|
||||||
:scroll="{ y: 584 }"
|
:scroll="{ y: 584 }"
|
||||||
:pagination="false"
|
:pagination="false"
|
||||||
></a-table>
|
>
|
||||||
|
<template v-for="(col, i) in outputColumns" :slot="col.dataIndex" slot-scope="text, record, index">
|
||||||
|
<edit-cell
|
||||||
|
:text="parseFloat(Number(text).toPrecision(6))"
|
||||||
|
:key="i"
|
||||||
|
@change="onCellChange(index, col.dataIndex, $event)"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</a-table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="korsum-output-operation">
|
<div class="korsum-output-operation">
|
||||||
|
@ -148,58 +154,62 @@
|
||||||
import ModalMixin from '@/mixins/ModalMixin'
|
import ModalMixin from '@/mixins/ModalMixin'
|
||||||
import TitleOverBorder from '../TitleOverBorder.vue'
|
import TitleOverBorder from '../TitleOverBorder.vue'
|
||||||
import { getAction, postAction } from '@/api/manage'
|
import { getAction, postAction } from '@/api/manage'
|
||||||
import * as XLSX from 'xlsx';
|
import * as XLSX from 'xlsx'
|
||||||
|
import EditCell from './EditCell.vue'
|
||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
{
|
{
|
||||||
title: 'Energy',
|
title: 'Energy',
|
||||||
dataIndex: 'energy',
|
dataIndex: 'energy',
|
||||||
scopedSlots: {
|
scopedSlots: {
|
||||||
customRender: 'energy'
|
customRender: 'energy',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Total Efficiency',
|
title: 'Total Efficiency',
|
||||||
dataIndex: 'totalEffi',
|
dataIndex: 'totalEffi',
|
||||||
scopedSlots: {
|
scopedSlots: {
|
||||||
customRender: 'totalEffi'
|
customRender: 'totalEffi',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Peak Efficiency',
|
title: 'Peak Efficiency',
|
||||||
dataIndex: 'peakEffi',
|
dataIndex: 'peakEffi',
|
||||||
scopedSlots: {
|
scopedSlots: {
|
||||||
customRender: 'peakEffi'
|
customRender: 'peakEffi',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Uncertainty(%)',
|
title: 'Uncertainty(%)',
|
||||||
dataIndex: 'uncertain',
|
dataIndex: 'uncertain',
|
||||||
scopedSlots: {
|
scopedSlots: {
|
||||||
customRender: 'uncertain'
|
customRender: 'uncertain',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
const outputColumns = [
|
const outputColumns = [
|
||||||
{
|
{
|
||||||
title: 'Energy',
|
title: 'Energy',
|
||||||
dataIndex: 'energy',
|
dataIndex: 'energy',
|
||||||
customRender: (text) => parseFloat(Number(text).toPrecision(6))
|
scopedSlots: { customRender: 'energy' },
|
||||||
|
// customRender: (text) => parseFloat(Number(text).toPrecision(6))
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Correct Factor',
|
title: 'Correct Factor',
|
||||||
dataIndex: 'correctFactor',
|
dataIndex: 'correctFactor',
|
||||||
customRender: (text) => parseFloat(Number(text).toPrecision(6))
|
scopedSlots: { customRender: 'correctFactor' },
|
||||||
|
// customRender: (text) => parseFloat(Number(text).toPrecision(6)),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Uncertainty(%)',
|
title: 'Uncertainty(%)',
|
||||||
dataIndex: 'uncertainty',
|
dataIndex: 'uncertainty',
|
||||||
customRender: (text) => parseFloat(Number(text).toPrecision(6))
|
scopedSlots: { customRender: 'uncertainty' },
|
||||||
}
|
// customRender: (text) => parseFloat(Number(text).toPrecision(6)),
|
||||||
|
},
|
||||||
]
|
]
|
||||||
export default {
|
export default {
|
||||||
components: { TitleOverBorder },
|
components: { TitleOverBorder, EditCell },
|
||||||
mixins: [ModalMixin],
|
mixins: [ModalMixin],
|
||||||
data() {
|
data() {
|
||||||
this.columns = columns
|
this.columns = columns
|
||||||
|
@ -217,7 +227,7 @@ export default {
|
||||||
filterWord: '', // 筛选
|
filterWord: '', // 筛选
|
||||||
|
|
||||||
fileName: '', // save excel name
|
fileName: '', // save excel name
|
||||||
analyseData: {} // 分析结果
|
analyseData: {}, // 分析结果
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
@ -245,7 +255,7 @@ export default {
|
||||||
totalEf3: 0.111096,
|
totalEf3: 0.111096,
|
||||||
totalEf4: -0.003896,
|
totalEf4: -0.003896,
|
||||||
totalEf5: -0.000345,
|
totalEf5: -0.000345,
|
||||||
totalEf6: 0.000017
|
totalEf6: 0.000017,
|
||||||
}
|
}
|
||||||
|
|
||||||
this.efficiency = {
|
this.efficiency = {
|
||||||
|
@ -254,7 +264,7 @@ export default {
|
||||||
effciency3: 0.583265,
|
effciency3: 0.583265,
|
||||||
effciency4: -0.065884,
|
effciency4: -0.065884,
|
||||||
effciency5: 0.003255,
|
effciency5: 0.003255,
|
||||||
effciency6: -0.000059
|
effciency6: -0.000059,
|
||||||
}
|
}
|
||||||
|
|
||||||
this.getInfo()
|
this.getInfo()
|
||||||
|
@ -269,9 +279,9 @@ export default {
|
||||||
const { success, result, message } = await postAction('/gamma/KorSumInput', {
|
const { success, result, message } = await postAction('/gamma/KorSumInput', {
|
||||||
...this.totalEffi,
|
...this.totalEffi,
|
||||||
...this.efficiency,
|
...this.efficiency,
|
||||||
energys: this.list.map(item => item.energy)
|
energys: this.list.map((item) => item.energy),
|
||||||
})
|
})
|
||||||
console.log(success);
|
console.log(success)
|
||||||
if (success) {
|
if (success) {
|
||||||
this.list = result
|
this.list = result
|
||||||
} else {
|
} else {
|
||||||
|
@ -291,12 +301,12 @@ export default {
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
if (success) {
|
if (success) {
|
||||||
this.analyseData = result
|
this.analyseData = result
|
||||||
console.log(result);
|
console.log(result)
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(message)
|
this.$message.error(message)
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this.isLoading = false;
|
this.isLoading = false
|
||||||
console.error(error)
|
console.error(error)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -308,32 +318,43 @@ export default {
|
||||||
|
|
||||||
// output栏点击左侧列表
|
// output栏点击左侧列表
|
||||||
handleOutputItemClick(item) {
|
handleOutputItemClick(item) {
|
||||||
if(!this.analyseData) {
|
if (!this.analyseData) {
|
||||||
this.$message.error("Analyse Fail!")
|
this.$message.error('Analyse Fail!')
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
this.selectedItem = item
|
this.selectedItem = item
|
||||||
this.outputTableList = [];
|
this.outputTableList = []
|
||||||
|
|
||||||
// 根据核素名获取结果集
|
// 根据核素名获取结果集
|
||||||
let data = this.analyseData[this.selectedItem]
|
let data = this.analyseData[this.selectedItem]
|
||||||
if(!data || data.energy.length < 1) {
|
if (!data || data.energy.length < 1) {
|
||||||
this.$message.error("Analyse Fail!")
|
this.$message.error('Analyse Fail!')
|
||||||
return false;
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
let result = [];
|
let result = []
|
||||||
for(let i = 0; i < data.energy.length; i++ ) {
|
for (let i = 0; i < data.energy.length; i++) {
|
||||||
// 将数据进行填充并
|
// 将数据进行填充并
|
||||||
let obj = {
|
let obj = {
|
||||||
"energy": data.energy[i],
|
energy: data.energy[i],
|
||||||
"correctFactor" : data.factor[i],
|
correctFactor: data.factor[i],
|
||||||
"uncertainty" : (data.factor[i] - 1) / 10 * 100
|
uncertainty: ((data.factor[i] - 1) / 10) * 100,
|
||||||
}
|
}
|
||||||
result.push(obj);
|
result.push(obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
this.outputTableList = result;
|
this.outputTableList = result
|
||||||
|
},
|
||||||
|
onCellChange(idx, label, value) {
|
||||||
|
console.log(this.outputTableList)
|
||||||
|
console.log(value)
|
||||||
|
const dataSource = [...this.outputTableList]
|
||||||
|
const target = dataSource.find((item, index) => index == idx)
|
||||||
|
if (target) {
|
||||||
|
target[label] = value
|
||||||
|
this.outputTableList = dataSource
|
||||||
|
}
|
||||||
|
console.log(this.outputTableList)
|
||||||
},
|
},
|
||||||
|
|
||||||
// 导出到excel
|
// 导出到excel
|
||||||
|
@ -351,30 +372,30 @@ export default {
|
||||||
console.log('Cancel')
|
console.log('Cancel')
|
||||||
},
|
},
|
||||||
onCancel() {
|
onCancel() {
|
||||||
console.log(_this.fileName);
|
console.log(_this.fileName)
|
||||||
if (_this.fileName) {
|
if (_this.fileName) {
|
||||||
// saveAs(blob, `${_this.fileName}`)
|
// saveAs(blob, `${_this.fileName}`)
|
||||||
// 创建工作簿
|
// 创建工作簿
|
||||||
const workbook = XLSX.utils.book_new();
|
const workbook = XLSX.utils.book_new()
|
||||||
|
|
||||||
// 创建工作表
|
// 创建工作表
|
||||||
const worksheet = XLSX.utils.json_to_sheet(_this.outputTableList);
|
const worksheet = XLSX.utils.json_to_sheet(_this.outputTableList)
|
||||||
|
|
||||||
// 将工作表添加到工作簿
|
// 将工作表添加到工作簿
|
||||||
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
|
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1')
|
||||||
|
|
||||||
// 导出Excel文件
|
// 导出Excel文件
|
||||||
XLSX.writeFile(workbook, _this.fileName + ".xlsx");
|
XLSX.writeFile(workbook, _this.fileName + '.xlsx')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
outputList() {
|
outputList() {
|
||||||
return this.nuclideList.filter(item => item.toLowerCase().includes(this.filterWord.toLowerCase()))
|
return this.nuclideList.filter((item) => item.toLowerCase().includes(this.filterWord.toLowerCase()))
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -43,68 +43,68 @@ const columns = [
|
||||||
{
|
{
|
||||||
title: 'SampleID',
|
title: 'SampleID',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
dataIndex: 'sampleId'
|
dataIndex: 'sampleId',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Station',
|
title: 'Station',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
dataIndex: 'stationName'
|
dataIndex: 'stationName',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Detector',
|
title: 'Detector',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
dataIndex: 'detectorsName',
|
dataIndex: 'detectorsName',
|
||||||
width: 130
|
width: 130,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Sample',
|
title: 'Sample',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
dataIndex: 'sampleType'
|
dataIndex: 'sampleType',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'DataType',
|
title: 'DataType',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
dataIndex: 'dataType'
|
dataIndex: 'dataType',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Qualifier',
|
title: 'Qualifier',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
dataIndex: 'spectralQualifie'
|
dataIndex: 'spectralQualifie',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Col.Stop',
|
title: 'Col.Stop',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
dataIndex: 'collectStop',
|
dataIndex: 'collectStop',
|
||||||
width: 170
|
width: 170,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Acq.Start',
|
title: 'Acq.Start',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
dataIndex: 'acquisitionStart',
|
dataIndex: 'acquisitionStart',
|
||||||
width: 170
|
width: 170,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Acq.real',
|
title: 'Acq.real',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
dataIndex: 'acquisitionRealSec'
|
dataIndex: 'acquisitionRealSec',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Acq.live',
|
title: 'Acq.live',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
dataIndex: 'acquisitionLiveSec'
|
dataIndex: 'acquisitionLiveSec',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'Status',
|
title: 'Status',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
dataIndex: 'status'
|
dataIndex: 'status',
|
||||||
}
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
value: {
|
value: {
|
||||||
type: Boolean
|
type: Boolean,
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
mixins: [JeecgListMixin],
|
mixins: [JeecgListMixin],
|
||||||
data() {
|
data() {
|
||||||
|
@ -113,11 +113,10 @@ export default {
|
||||||
return {
|
return {
|
||||||
queryParam: {
|
queryParam: {
|
||||||
menuTypes: 'G,B',
|
menuTypes: 'G,B',
|
||||||
startDate: moment()
|
startDate: moment().add(-7, 'd').format('YYYY-MM-DD'),
|
||||||
.add(-7, 'd')
|
|
||||||
.format('YYYY-MM-DD'),
|
|
||||||
endDate: moment().format('YYYY-MM-DD'),
|
endDate: moment().format('YYYY-MM-DD'),
|
||||||
dbName: 'auto'
|
dbName: 'auto',
|
||||||
|
spectralQualifie: 'FULL',
|
||||||
},
|
},
|
||||||
selectedRowKeys: [],
|
selectedRowKeys: [],
|
||||||
selectionRows: [],
|
selectionRows: [],
|
||||||
|
@ -125,8 +124,22 @@ export default {
|
||||||
stationList: [],
|
stationList: [],
|
||||||
detectorList: [],
|
detectorList: [],
|
||||||
url: {
|
url: {
|
||||||
list: '/spectrumAnalysis/getDBSpectrumList'
|
list: '/spectrumAnalysis/getDBSpectrumList',
|
||||||
}
|
},
|
||||||
|
sampleTypeOption: [
|
||||||
|
{
|
||||||
|
label: 'P',
|
||||||
|
value: 'P',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'B',
|
||||||
|
value: 'B',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'G',
|
||||||
|
value: 'G',
|
||||||
|
},
|
||||||
|
],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
|
@ -165,12 +178,12 @@ export default {
|
||||||
|
|
||||||
this.loading = true
|
this.loading = true
|
||||||
getAction(this.url.list, params)
|
getAction(this.url.list, params)
|
||||||
.then(res => {
|
.then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
const result = res.result.records || res.result
|
const result = res.result.records || res.result
|
||||||
result.forEach(item => {
|
result.forEach((item) => {
|
||||||
const fileName = item.inputFileName
|
const fileName = item.inputFileName
|
||||||
if(fileName) {
|
if (fileName) {
|
||||||
const arr = fileName.split('/')
|
const arr = fileName.split('/')
|
||||||
item.inputFileName = arr[arr.length - 1]
|
item.inputFileName = arr[arr.length - 1]
|
||||||
}
|
}
|
||||||
|
@ -214,11 +227,11 @@ export default {
|
||||||
const { success, result, message } = await getAction('/spectrumAnalysis/getDBSearchList', {
|
const { success, result, message } = await getAction('/spectrumAnalysis/getDBSearchList', {
|
||||||
menuTypes: value,
|
menuTypes: value,
|
||||||
dbName: this.queryParam.dbName,
|
dbName: this.queryParam.dbName,
|
||||||
AllUsers: this.allUsersValue
|
AllUsers: this.allUsersValue,
|
||||||
})
|
})
|
||||||
if (success) {
|
if (success) {
|
||||||
this.stationList = result.stationCode.map(item => ({ label: item, value: item }))
|
this.stationList = result.stationCode.map((item) => ({ label: item, value: item }))
|
||||||
this.detectorList = result.detectorCode.map(item => ({ label: item, value: item }))
|
this.detectorList = result.detectorCode.map((item) => ({ label: item, value: item }))
|
||||||
} else {
|
} else {
|
||||||
this.$message.error(message)
|
this.$message.error(message)
|
||||||
}
|
}
|
||||||
|
@ -234,7 +247,7 @@ export default {
|
||||||
|
|
||||||
filterOption(input, option) {
|
filterOption(input, option) {
|
||||||
return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
visible: {
|
visible: {
|
||||||
|
@ -243,7 +256,7 @@ export default {
|
||||||
},
|
},
|
||||||
set(val) {
|
set(val) {
|
||||||
this.$emit('input', val)
|
this.$emit('input', val)
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
formItems() {
|
formItems() {
|
||||||
return [
|
return [
|
||||||
|
@ -255,32 +268,64 @@ export default {
|
||||||
options: [
|
options: [
|
||||||
{
|
{
|
||||||
label: 'All',
|
label: 'All',
|
||||||
value: 'G,B'
|
value: 'G,B',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Gamma',
|
label: 'Gamma',
|
||||||
value: 'G'
|
value: 'G',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Beta',
|
label: 'Beta',
|
||||||
value: 'B'
|
value: 'B',
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
allowClear: true
|
allowClear: true,
|
||||||
},
|
},
|
||||||
style: {
|
style: {
|
||||||
width: '18%'
|
width: '18%',
|
||||||
},
|
},
|
||||||
on: {
|
on: {
|
||||||
change: event => {
|
change: (event) => {
|
||||||
|
console.log('event', event)
|
||||||
if (!event) {
|
if (!event) {
|
||||||
this.stationList = []
|
this.stationList = []
|
||||||
this.detectorList = []
|
this.detectorList = []
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
let arr_B = [
|
||||||
|
{
|
||||||
|
label: 'B',
|
||||||
|
value: 'B',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
let arr_G = [
|
||||||
|
{
|
||||||
|
label: 'P',
|
||||||
|
value: 'P',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'G',
|
||||||
|
value: 'G',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
let arr_A = [
|
||||||
|
{
|
||||||
|
label: 'P',
|
||||||
|
value: 'P',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'B',
|
||||||
|
value: 'B',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'G',
|
||||||
|
value: 'G',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
this.sampleTypeOption = event == 'B' ? arr_B : event == 'G' ? arr_G : arr_A
|
||||||
this.getStationAndDetectorList(event)
|
this.getStationAndDetectorList(event)
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Station',
|
label: 'Station',
|
||||||
|
@ -290,11 +335,11 @@ export default {
|
||||||
options: this.stationList,
|
options: this.stationList,
|
||||||
showSearch: true,
|
showSearch: true,
|
||||||
filterOption: this.filterOption,
|
filterOption: this.filterOption,
|
||||||
allowClear: true
|
allowClear: true,
|
||||||
},
|
},
|
||||||
style: {
|
style: {
|
||||||
width: '19%'
|
width: '19%',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Detector',
|
label: 'Detector',
|
||||||
|
@ -304,36 +349,23 @@ export default {
|
||||||
options: this.detectorList,
|
options: this.detectorList,
|
||||||
showSearch: true,
|
showSearch: true,
|
||||||
filterOption: this.filterOption,
|
filterOption: this.filterOption,
|
||||||
allowClear: true
|
allowClear: true,
|
||||||
},
|
},
|
||||||
style: {
|
style: {
|
||||||
width: '19%'
|
width: '19%',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Sample',
|
label: 'Sample',
|
||||||
type: 'custom-select',
|
type: 'custom-select',
|
||||||
name: 'sampleType',
|
name: 'sampleType',
|
||||||
props: {
|
props: {
|
||||||
options: [
|
options: this.sampleTypeOption,
|
||||||
{
|
allowClear: true,
|
||||||
label: 'P',
|
|
||||||
value: 'P'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'B',
|
|
||||||
value: 'B'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: 'G',
|
|
||||||
value: 'G'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
allowClear: true
|
|
||||||
},
|
},
|
||||||
style: {
|
style: {
|
||||||
width: '14%'
|
width: '14%',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'DataType',
|
label: 'DataType',
|
||||||
|
@ -343,34 +375,34 @@ export default {
|
||||||
options: [
|
options: [
|
||||||
{
|
{
|
||||||
label: 'S',
|
label: 'S',
|
||||||
value: 'S'
|
value: 'S',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'G',
|
label: 'G',
|
||||||
value: 'G'
|
value: 'G',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'D',
|
label: 'D',
|
||||||
value: 'D'
|
value: 'D',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Q',
|
label: 'Q',
|
||||||
value: 'Q'
|
value: 'Q',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'B',
|
label: 'B',
|
||||||
value: 'B'
|
value: 'B',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'C',
|
label: 'C',
|
||||||
value: 'C'
|
value: 'C',
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
allowClear: true
|
allowClear: true,
|
||||||
},
|
},
|
||||||
style: {
|
style: {
|
||||||
width: '14%'
|
width: '14%',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Qualifier',
|
label: 'Qualifier',
|
||||||
|
@ -380,30 +412,30 @@ export default {
|
||||||
options: [
|
options: [
|
||||||
{
|
{
|
||||||
label: 'FULL',
|
label: 'FULL',
|
||||||
value: 'FULL'
|
value: 'FULL',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'PREL',
|
label: 'PREL',
|
||||||
value: 'PREL'
|
value: 'PREL',
|
||||||
}
|
},
|
||||||
],
|
],
|
||||||
allowClear: true
|
allowClear: true,
|
||||||
},
|
},
|
||||||
style: {
|
style: {
|
||||||
width: '16%',
|
width: '16%',
|
||||||
paddingRight: 0
|
paddingRight: 0,
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'SampleID',
|
label: 'SampleID',
|
||||||
type: 'a-input',
|
type: 'a-input',
|
||||||
name: 'sampleId',
|
name: 'sampleId',
|
||||||
props: {
|
props: {
|
||||||
allowClear: true
|
allowClear: true,
|
||||||
},
|
},
|
||||||
style: {
|
style: {
|
||||||
width: '264px'
|
width: '264px',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '',
|
label: '',
|
||||||
|
@ -413,13 +445,13 @@ export default {
|
||||||
options: [
|
options: [
|
||||||
{ label: 'All User', value: 'AllUsers' },
|
{ label: 'All User', value: 'AllUsers' },
|
||||||
{ label: 'Collect Stop', value: 'CollectStopB' },
|
{ label: 'Collect Stop', value: 'CollectStopB' },
|
||||||
{ label: 'Acq.Start', value: 'AcqStartB' }
|
{ label: 'Acq.Start', value: 'AcqStartB' },
|
||||||
]
|
],
|
||||||
},
|
},
|
||||||
style: {
|
style: {
|
||||||
width: '305px',
|
width: '305px',
|
||||||
paddingRight: 0
|
paddingRight: 0,
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'From',
|
label: 'From',
|
||||||
|
@ -429,12 +461,12 @@ export default {
|
||||||
format: 'YYYY-MM-DD',
|
format: 'YYYY-MM-DD',
|
||||||
valueFormat: 'YYYY-MM-DD',
|
valueFormat: 'YYYY-MM-DD',
|
||||||
style: {
|
style: {
|
||||||
minWidth: 'auto'
|
minWidth: 'auto',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
style: {
|
style: {
|
||||||
width: '19%'
|
width: '19%',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'To',
|
label: 'To',
|
||||||
|
@ -444,15 +476,15 @@ export default {
|
||||||
format: 'YYYY-MM-DD',
|
format: 'YYYY-MM-DD',
|
||||||
valueFormat: 'YYYY-MM-DD',
|
valueFormat: 'YYYY-MM-DD',
|
||||||
style: {
|
style: {
|
||||||
minWidth: 'auto'
|
minWidth: 'auto',
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
style: {
|
style: {
|
||||||
paddingRight: 0,
|
paddingRight: 0,
|
||||||
marginRight: '22px',
|
marginRight: '22px',
|
||||||
width: '19%'
|
width: '19%',
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -469,7 +501,7 @@ export default {
|
||||||
acqStartValue() {
|
acqStartValue() {
|
||||||
const checkboxGroup = this.queryParam.checkboxGroup
|
const checkboxGroup = this.queryParam.checkboxGroup
|
||||||
return !!(checkboxGroup && checkboxGroup.includes('AcqStartB'))
|
return !!(checkboxGroup && checkboxGroup.includes('AcqStartB'))
|
||||||
}
|
},
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
// All User 变化时重新获取station 和detector
|
// All User 变化时重新获取station 和detector
|
||||||
|
@ -479,8 +511,8 @@ export default {
|
||||||
this.detectorList = []
|
this.detectorList = []
|
||||||
this.getStationAndDetectorList(this.queryParam.menuTypes)
|
this.getStationAndDetectorList(this.queryParam.menuTypes)
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -4,14 +4,14 @@
|
||||||
<div class="graph-assistance-item" v-for="(item, index) in items" :key="index">
|
<div class="graph-assistance-item" v-for="(item, index) in items" :key="index">
|
||||||
<!-- 两个Label来回切换的 -->
|
<!-- 两个Label来回切换的 -->
|
||||||
<template v-if="item.label.length > 1">
|
<template v-if="item.label.length > 1">
|
||||||
<span>{{ item.activeLabel }}</span>
|
<span>{{ value[item.key] }}</span>
|
||||||
<a-switch class="no-change" v-model="item.checked" @change="handleChangeLabel(item)"></a-switch>
|
<two-label-switch :items="item.label" v-model="value[item.key]" @change="handleChange(item.key)" />
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<!-- 只有一个Label,点击改变状态的 -->
|
<!-- 只有一个Label,点击改变状态的 -->
|
||||||
<template v-else>
|
<template v-else>
|
||||||
<span>{{ item.label[0] }}</span>
|
<span>{{ item.label[0] }}</span>
|
||||||
<a-switch v-model="item.checked" @change="handleChange(item)"></a-switch>
|
<a-switch v-model="value[item.key]" @change="handleChange(item.key)"></a-switch>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -21,72 +21,60 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { cloneDeep } from 'lodash'
|
import { cloneDeep } from 'lodash'
|
||||||
|
import TwoLabelSwitch from './TwoLabelSwitch.vue'
|
||||||
|
|
||||||
const items = [
|
const items = [
|
||||||
{
|
{
|
||||||
label: ['Linear', 'Log10'],
|
label: ['Linear', 'Log10'],
|
||||||
checked: false,
|
key: 'chartYAxisType',
|
||||||
activeLabel: 'Linear'
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: ['Cursor'],
|
label: ['Cursor'],
|
||||||
checked: true
|
key: 'Cursor',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: ['Lc'],
|
label: ['Lc'],
|
||||||
checked: true
|
key: 'Lc',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: ['Baseline'],
|
label: ['Baseline'],
|
||||||
checked: true
|
key: 'Baseline',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: ['Channel', 'Energy'],
|
label: ['Channel', 'Energy'],
|
||||||
checked: false,
|
key: 'axisType',
|
||||||
activeLabel: 'Channel'
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: ['Lines', 'Scatter'],
|
label: ['Lines', 'Scatter'],
|
||||||
checked: false,
|
key: 'spectrumType',
|
||||||
activeLabel: 'Lines'
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: ['SCAC'],
|
label: ['SCAC'],
|
||||||
checked: true
|
key: 'SCAC',
|
||||||
}
|
},
|
||||||
]
|
]
|
||||||
export default {
|
export default {
|
||||||
|
components: { TwoLabelSwitch },
|
||||||
|
props: {
|
||||||
|
value: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({}),
|
||||||
|
},
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
items: cloneDeep(items)
|
items: cloneDeep(items),
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleChangeLabel(item) {
|
handleChange(key) {
|
||||||
if (item.activeLabel == item.label[0]) {
|
this.$emit('change', key)
|
||||||
item.activeLabel = item.label[1]
|
|
||||||
} else {
|
|
||||||
item.activeLabel = item.label[0]
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$emit('change', {
|
|
||||||
type: 'labelChange',
|
|
||||||
label: item.activeLabel
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
handleChange(item) {
|
|
||||||
this.$emit('change', {
|
|
||||||
type: 'valueChange',
|
|
||||||
label: item.label[0],
|
|
||||||
value: item.checked
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
|
|
||||||
handleReset() {
|
handleReset() {
|
||||||
this.$emit('reset')
|
this.$emit('reset')
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -122,10 +110,6 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.no-change {
|
|
||||||
background-color: @primary-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ant-switch {
|
.ant-switch {
|
||||||
&::after {
|
&::after {
|
||||||
background-color: #fff;
|
background-color: #fff;
|
|
@ -0,0 +1,54 @@
|
||||||
|
<template>
|
||||||
|
<div class="two-label-switch">
|
||||||
|
<a-switch class="no-change" v-model="checked" @change="handleChange"> </a-switch>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
value: {
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
|
items: {
|
||||||
|
type: Array,
|
||||||
|
default: () => [],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
if (this.items.length !== 2) {
|
||||||
|
throw new Error('此组件需要两个值')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
handleChange() {
|
||||||
|
this.$emit('change')
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
checked: {
|
||||||
|
set(val) {
|
||||||
|
this.$emit('input', val == true ? this.items[1] : this.items[0])
|
||||||
|
},
|
||||||
|
get() {
|
||||||
|
return this.value == this.items[1] ? true : false
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.two-label-switch {
|
||||||
|
display: inline-block;
|
||||||
|
.no-change {
|
||||||
|
background-color: @primary-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-switch {
|
||||||
|
&::after {
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -14,8 +14,8 @@
|
||||||
<pop-over-with-icon>
|
<pop-over-with-icon>
|
||||||
Graph Assistance
|
Graph Assistance
|
||||||
<graph-assistance
|
<graph-assistance
|
||||||
v-if="!isLoading"
|
|
||||||
slot="content"
|
slot="content"
|
||||||
|
v-model="graphAssistance"
|
||||||
@change="handleGraphAssistanceChange"
|
@change="handleGraphAssistanceChange"
|
||||||
@reset="handleResetChart"
|
@reset="handleResetChart"
|
||||||
/>
|
/>
|
||||||
|
@ -114,7 +114,7 @@ import CustomChart from '@/components/CustomChart/index.vue'
|
||||||
import PopOverWithIcon from './components/SubOperators/PopOverWithIcon.vue'
|
import PopOverWithIcon from './components/SubOperators/PopOverWithIcon.vue'
|
||||||
import DetailedInfomation from './components/SubOperators/DetailedInfomation.vue'
|
import DetailedInfomation from './components/SubOperators/DetailedInfomation.vue'
|
||||||
import QcFlags from './components/SubOperators/QcFlags.vue'
|
import QcFlags from './components/SubOperators/QcFlags.vue'
|
||||||
import GraphAssistance from './components/SubOperators/GraphAssistance.vue'
|
import GraphAssistance from './components/SubOperators/GraphAssistance/GraphAssistance.vue'
|
||||||
import NuclideLibrary from './components/SubOperators/NuclideLibrary.vue'
|
import NuclideLibrary from './components/SubOperators/NuclideLibrary.vue'
|
||||||
import ButtonWithSwitchIcon from './components/SubOperators/ButtonWithSwitchIcon.vue'
|
import ButtonWithSwitchIcon from './components/SubOperators/ButtonWithSwitchIcon.vue'
|
||||||
import { getAction, postAction } from '@/api/manage'
|
import { getAction, postAction } from '@/api/manage'
|
||||||
|
@ -138,6 +138,9 @@ import store from '@/store/'
|
||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import { ACCESS_TOKEN } from '@/store/mutation-types'
|
import { ACCESS_TOKEN } from '@/store/mutation-types'
|
||||||
import StripModal from './components/Modals/StripModal.vue'
|
import StripModal from './components/Modals/StripModal.vue'
|
||||||
|
import { FilePicker } from '@/utils/FilePicker'
|
||||||
|
import { zipFile } from '@/utils/file'
|
||||||
|
import { mapMutations } from 'vuex'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
|
@ -296,9 +299,6 @@ export default {
|
||||||
const { dbName, sampleId } = this.sample
|
const { dbName, sampleId } = this.sample
|
||||||
try {
|
try {
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
|
|
||||||
this.handleResetState()
|
|
||||||
|
|
||||||
// const { success, result, message } = Response
|
// const { success, result, message } = Response
|
||||||
this.cancelLastRequest()
|
this.cancelLastRequest()
|
||||||
const cancelToken = this.createCancelToken()
|
const cancelToken = this.createCancelToken()
|
||||||
|
@ -328,7 +328,6 @@ export default {
|
||||||
const { inputFileName: fileName } = this.sample
|
const { inputFileName: fileName } = this.sample
|
||||||
try {
|
try {
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
this.handleResetState()
|
|
||||||
// const { success, result, message } = Response
|
// const { success, result, message } = Response
|
||||||
|
|
||||||
this.cancelLastRequest()
|
this.cancelLastRequest()
|
||||||
|
@ -433,106 +432,47 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
this.resetThumbnailChartDataMax()
|
this.resetThumbnailChartDataMax()
|
||||||
const series = []
|
|
||||||
|
|
||||||
// 推入Spectrum Line
|
// 设置 Spectrum Line
|
||||||
series.push(
|
this.redrawLineBySeriesName('Spectrum', shadowEnergyChart, shadowChannelChart, true, shadowChannelChart.color)
|
||||||
buildLineSeries(
|
|
||||||
'Spectrum',
|
// 设置 BaseLine
|
||||||
this.transformPointListData(shadowChannelChart.pointlist),
|
this.setSeriesData(
|
||||||
shadowChannelChart.color,
|
this.option.series,
|
||||||
{
|
'BaseLine',
|
||||||
symbolSize: 2,
|
this.transformPointListData(channelBaseLine.pointlist),
|
||||||
markLine: {
|
channelBaseLine.color
|
||||||
silent: true,
|
|
||||||
symbol: 'none',
|
|
||||||
label: {
|
|
||||||
show: false,
|
|
||||||
},
|
|
||||||
lineStyle: {
|
|
||||||
color: 'red',
|
|
||||||
width: 1,
|
|
||||||
},
|
|
||||||
data: [{ xAxis: -1 }],
|
|
||||||
},
|
|
||||||
}
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// 右上角缩略图设置Spectrum Line 数据
|
// 设置 LcLine
|
||||||
|
this.setSeriesData(
|
||||||
|
this.option.series,
|
||||||
|
'LcLine',
|
||||||
|
this.transformPointListData(channelLcLine.pointlist),
|
||||||
|
channelLcLine.color
|
||||||
|
)
|
||||||
|
|
||||||
|
// 设置 ScacLine
|
||||||
|
this.setSeriesData(
|
||||||
|
this.option.series,
|
||||||
|
'ScacLine',
|
||||||
|
this.transformPointListData(channelScacLine.pointlist),
|
||||||
|
channelScacLine.color
|
||||||
|
)
|
||||||
|
|
||||||
|
// 设置 基线控制点
|
||||||
|
this.redrawCtrlPointBySeriesName()
|
||||||
|
|
||||||
|
// 设置 Peak Line
|
||||||
|
this.redrawPeakLine()
|
||||||
|
|
||||||
|
// 设置右上角缩略图 Spectrum Line 数据
|
||||||
this.setSeriesData(
|
this.setSeriesData(
|
||||||
this.thumbnailOption.series,
|
this.thumbnailOption.series,
|
||||||
'Spectrum',
|
'Spectrum',
|
||||||
this.transformPointListData(shadowChannelChart.pointlist),
|
this.transformPointListData(shadowChannelChart.pointlist),
|
||||||
shadowChannelChart.color
|
shadowChannelChart.color
|
||||||
)
|
)
|
||||||
|
|
||||||
// 推入BaseLine
|
|
||||||
series.push(
|
|
||||||
buildLineSeries('BaseLine', this.transformPointListData(channelBaseLine.pointlist), channelBaseLine.color, {
|
|
||||||
zlevel: 2,
|
|
||||||
})
|
|
||||||
)
|
|
||||||
|
|
||||||
// 推入LcLine线
|
|
||||||
series.push(
|
|
||||||
buildLineSeries('LcLine', this.transformPointListData(channelLcLine.pointlist), channelLcLine.color, {
|
|
||||||
zlevel: 3,
|
|
||||||
})
|
|
||||||
)
|
|
||||||
|
|
||||||
// 推入Scac线
|
|
||||||
series.push(
|
|
||||||
buildLineSeries('ScacLine', this.transformPointListData(channelScacLine.pointlist), channelScacLine.color, {
|
|
||||||
zlevel: 4,
|
|
||||||
})
|
|
||||||
)
|
|
||||||
|
|
||||||
// 推入基线控制点
|
|
||||||
series.push({
|
|
||||||
name: 'BaseLine_Ctrl_Point',
|
|
||||||
type: 'scatter',
|
|
||||||
data: shapeChannelData.map(({ size, color, point: { x, y } }) => {
|
|
||||||
return {
|
|
||||||
value: [x, y],
|
|
||||||
itemStyle: {
|
|
||||||
color: 'transparent',
|
|
||||||
borderColor: color,
|
|
||||||
borderWidth: size / 2,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
emphasis: {
|
|
||||||
disabled: true,
|
|
||||||
},
|
|
||||||
animation: false,
|
|
||||||
zlevel: 5,
|
|
||||||
})
|
|
||||||
|
|
||||||
// 推入Peak Line
|
|
||||||
const peakLines = []
|
|
||||||
channelPeakGroup.forEach((item, index) => {
|
|
||||||
peakLines.push(
|
|
||||||
buildLineSeries(`Peak_${index}`, this.transformPointListData(item.pointlist), item.color, {
|
|
||||||
zlevel: 6,
|
|
||||||
})
|
|
||||||
)
|
|
||||||
})
|
|
||||||
series.push(...peakLines)
|
|
||||||
|
|
||||||
// 推入Compare Line
|
|
||||||
series.push(
|
|
||||||
buildLineSeries('Compare', [], '#fff', {
|
|
||||||
symbolSize: 2,
|
|
||||||
})
|
|
||||||
)
|
|
||||||
|
|
||||||
this.opts.notMerge = true
|
|
||||||
this.option.series = series
|
|
||||||
|
|
||||||
this.$nextTick(() => {
|
|
||||||
this.resetChartOpts()
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// chart 的 tooltip
|
// chart 的 tooltip
|
||||||
|
@ -556,28 +496,56 @@ export default {
|
||||||
},
|
},
|
||||||
|
|
||||||
// Graph Assistance 操作
|
// Graph Assistance 操作
|
||||||
handleGraphAssistanceChange({ type, label, value }) {
|
handleGraphAssistanceChange(key) {
|
||||||
|
const value = this.graphAssistance[key]
|
||||||
const spectrumLineSeries = findSeriesByName(this.option.series, 'Spectrum')
|
const spectrumLineSeries = findSeriesByName(this.option.series, 'Spectrum')
|
||||||
const thumbnailSpectrumLineSeries = findSeriesByName(this.thumbnailOption.series, 'Spectrum')
|
const thumbnailSpectrumLineSeries = findSeriesByName(this.thumbnailOption.series, 'Spectrum')
|
||||||
const compareLineSeries = findSeriesByName(this.option.series, 'Compare')
|
const compareLineSeries = findSeriesByName(this.option.series, 'Compare')
|
||||||
|
|
||||||
// 类型变化
|
switch (key) {
|
||||||
if (type == 'labelChange') {
|
// 折线y轴类型变化
|
||||||
switch (label) {
|
case 'chartYAxisType':
|
||||||
case 'Linear':
|
if (value == 'Linear') {
|
||||||
this.option.yAxis.type = 'value'
|
this.option.yAxis.type = 'value'
|
||||||
this.thumbnailOption.yAxis.type = 'value'
|
this.thumbnailOption.yAxis.type = 'value'
|
||||||
this.handleResetChart()
|
} else {
|
||||||
break
|
|
||||||
case 'Log10':
|
|
||||||
this.option.yAxis.type = 'log'
|
this.option.yAxis.type = 'log'
|
||||||
this.thumbnailOption.yAxis.type = 'log'
|
this.thumbnailOption.yAxis.type = 'log'
|
||||||
|
}
|
||||||
this.handleResetChart()
|
this.handleResetChart()
|
||||||
break
|
break
|
||||||
case 'Channel':
|
|
||||||
case 'Energy':
|
// 红色竖线是否显示
|
||||||
this.graphAssistance.axisType = label
|
case 'Cursor':
|
||||||
this.option.xAxis.name = label
|
if (value) {
|
||||||
|
spectrumLineSeries.markLine.lineStyle.width = 2
|
||||||
|
} else {
|
||||||
|
spectrumLineSeries.markLine.lineStyle.width = 0
|
||||||
|
}
|
||||||
|
break
|
||||||
|
|
||||||
|
// 基线是否显示
|
||||||
|
case 'Baseline':
|
||||||
|
this.redrawLineBySeriesName('BaseLine', this.energyData.baseLine, this.channelData.baseLine, value)
|
||||||
|
break
|
||||||
|
|
||||||
|
// Lc 线是否显示
|
||||||
|
case 'Lc':
|
||||||
|
this.redrawLineBySeriesName('LcLine', this.energyData.lcLine, this.channelData.lcLine, value)
|
||||||
|
break
|
||||||
|
|
||||||
|
// Channel和Energy的切换
|
||||||
|
case 'axisType':
|
||||||
|
// 如果Energy没有值,则不进行切换
|
||||||
|
if (!this.energyData.all.pointlist) {
|
||||||
|
if (value == 'Energy') {
|
||||||
|
this.graphAssistance[key] = 'Channel'
|
||||||
|
}
|
||||||
|
this.$message.warn('Has No Energy Yet')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
this.option.xAxis.name = value
|
||||||
|
|
||||||
this.handleResetChart()
|
this.handleResetChart()
|
||||||
|
|
||||||
|
@ -609,10 +577,12 @@ export default {
|
||||||
if (this.channelCompareLine) {
|
if (this.channelCompareLine) {
|
||||||
this.redrawLineBySeriesName('Compare', this.energyCompareLine, this.channelCompareLine)
|
this.redrawLineBySeriesName('Compare', this.energyCompareLine, this.channelCompareLine)
|
||||||
}
|
}
|
||||||
break
|
|
||||||
case 'Lines':
|
|
||||||
this.graphAssistance.spectrumType = 'Lines'
|
|
||||||
|
|
||||||
|
break
|
||||||
|
|
||||||
|
// Lines 和 Scatter 的切换
|
||||||
|
case 'spectrumType':
|
||||||
|
if (value == 'Lines') {
|
||||||
spectrumLineSeries.type = 'line'
|
spectrumLineSeries.type = 'line'
|
||||||
spectrumLineSeries.symbol = 'none'
|
spectrumLineSeries.symbol = 'none'
|
||||||
|
|
||||||
|
@ -627,10 +597,7 @@ export default {
|
||||||
if (this.channelCompareLine) {
|
if (this.channelCompareLine) {
|
||||||
this.redrawLineBySeriesName('Compare', this.energyCompareLine, this.channelCompareLine)
|
this.redrawLineBySeriesName('Compare', this.energyCompareLine, this.channelCompareLine)
|
||||||
}
|
}
|
||||||
break
|
} else {
|
||||||
case 'Scatter':
|
|
||||||
this.graphAssistance.spectrumType = 'Scatter'
|
|
||||||
|
|
||||||
spectrumLineSeries.type = 'scatterGL'
|
spectrumLineSeries.type = 'scatterGL'
|
||||||
spectrumLineSeries.symbol = 'circle'
|
spectrumLineSeries.symbol = 'circle'
|
||||||
|
|
||||||
|
@ -643,35 +610,18 @@ export default {
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.rangeScatter()
|
this.rangeScatter()
|
||||||
})
|
})
|
||||||
|
}
|
||||||
break
|
break
|
||||||
}
|
|
||||||
}
|
|
||||||
// 值变化
|
|
||||||
else if (type == 'valueChange') {
|
|
||||||
this.graphAssistance[label] = value
|
|
||||||
|
|
||||||
switch (label) {
|
// SCAC 线是否显示
|
||||||
case 'Cursor':
|
|
||||||
// 显示红色竖线
|
|
||||||
if (value) {
|
|
||||||
spectrumLineSeries.markLine.lineStyle.width = 2
|
|
||||||
} else {
|
|
||||||
spectrumLineSeries.markLine.lineStyle.width = 0
|
|
||||||
}
|
|
||||||
break
|
|
||||||
case 'Baseline':
|
|
||||||
this.redrawLineBySeriesName('BaseLine', this.energyData.baseLine, this.channelData.baseLine, value)
|
|
||||||
break
|
|
||||||
case 'Lc':
|
|
||||||
this.redrawLineBySeriesName('LcLine', this.energyData.lcLine, this.channelData.lcLine, value)
|
|
||||||
break
|
|
||||||
case 'SCAC':
|
case 'SCAC':
|
||||||
this.redrawLineBySeriesName('ScacLine', this.energyData.scacLine, this.channelData.scacLine, value)
|
this.redrawLineBySeriesName('ScacLine', this.energyData.scacLine, this.channelData.scacLine, value)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
|
changeSeriesType() {},
|
||||||
|
|
||||||
handleChangeNuclideVisible() {
|
handleChangeNuclideVisible() {
|
||||||
this.nuclideLibraryVisible = !this.nuclideLibraryVisible
|
this.nuclideLibraryVisible = !this.nuclideLibraryVisible
|
||||||
},
|
},
|
||||||
|
@ -702,18 +652,24 @@ export default {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
clearPeakLine() {
|
||||||
|
this.opts.notMerge = true
|
||||||
|
this.option.series.splice(6)
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.resetChartOpts()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
// 重绘Peak Line
|
// 重绘Peak Line
|
||||||
redrawPeakLine() {
|
redrawPeakLine() {
|
||||||
this.option.series = this.option.series.filter((item) => {
|
this.clearPeakLine()
|
||||||
return !item.name.includes('Peak_')
|
|
||||||
})
|
|
||||||
|
|
||||||
const data = this.isEnergy() ? this.energyData.peakGroup : this.channelData.peakGroup
|
const data = this.isEnergy() ? this.energyData.peakGroup : this.channelData.peakGroup
|
||||||
const peakLines = []
|
const peakLines = []
|
||||||
data.forEach((item, index) => {
|
data.forEach((item, index) => {
|
||||||
peakLines.push(
|
peakLines.push(
|
||||||
buildLineSeries(`Peak_${index}`, this.transformPointListData(item.pointlist), item.color, {
|
buildLineSeries(`Peak_${index}`, this.transformPointListData(item.pointlist), item.color, {
|
||||||
zlevel: 6,
|
z: 6,
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
@ -1171,9 +1127,9 @@ export default {
|
||||||
|
|
||||||
// 从分析工具刷新部分数据
|
// 从分析工具刷新部分数据
|
||||||
handleRefresh(data) {
|
handleRefresh(data) {
|
||||||
this.handleResetState()
|
|
||||||
data.DetailedInformation = this.detailedInfomation
|
data.DetailedInformation = this.detailedInfomation
|
||||||
this.clearCompareLine()
|
this.clearCompareLine()
|
||||||
|
this.redrawPeakLine()
|
||||||
this.dataProcess(data)
|
this.dataProcess(data)
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -1219,15 +1175,42 @@ export default {
|
||||||
}
|
}
|
||||||
this.handleResetChart()
|
this.handleResetChart()
|
||||||
this.clearCompareLine()
|
this.clearCompareLine()
|
||||||
this.compareFileListModalVisible = true
|
|
||||||
|
|
||||||
this.isStrip = isStrip
|
this.isStrip = isStrip
|
||||||
|
if (FilePicker.canUse()) {
|
||||||
|
this.chooseFileFromFS()
|
||||||
|
} else {
|
||||||
|
this.compareFileListModalVisible = true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// 从文件系统中选择文件
|
||||||
|
async chooseFileFromFS() {
|
||||||
|
try {
|
||||||
|
const [fileHandle] = await FilePicker.chooseFile(false, [{ accept: { 'text/phd': ['.phd'] } }])
|
||||||
|
const file = await fileHandle.getFile()
|
||||||
|
const zipedFiles = await zipFile([file], 'test.zip')
|
||||||
|
try {
|
||||||
|
const formData = new FormData()
|
||||||
|
formData.append('file', zipedFiles)
|
||||||
|
const { success, message } = await postAction('/spectrumFile/upload', formData)
|
||||||
|
if (success) {
|
||||||
|
this.handleFileSelect(file.name)
|
||||||
|
} else {
|
||||||
|
this.$message.error(message)
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error)
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// 文件之间对比
|
// 文件之间对比
|
||||||
async handleFileSelect(selectedFileName) {
|
async handleFileSelect(selectedFileName) {
|
||||||
const { inputFileName: fileName } = this.sample
|
const { inputFileName: fileName } = this.sample
|
||||||
|
|
||||||
|
const hide = this.$message.loading(this.isStrip ? 'Stripping...' : 'Comparing...', 0)
|
||||||
try {
|
try {
|
||||||
let param = {
|
let param = {
|
||||||
fileName,
|
fileName,
|
||||||
|
@ -1246,7 +1229,6 @@ export default {
|
||||||
url = '/gamma/Strip'
|
url = '/gamma/Strip'
|
||||||
}
|
}
|
||||||
|
|
||||||
this.isLoading = true
|
|
||||||
const { success, result, message } = await getAction(url, param)
|
const { success, result, message } = await getAction(url, param)
|
||||||
if (success) {
|
if (success) {
|
||||||
const [channelData, energyData] = result
|
const [channelData, energyData] = result
|
||||||
|
@ -1254,10 +1236,6 @@ export default {
|
||||||
this.energyCompareLine = energyData
|
this.energyCompareLine = energyData
|
||||||
this.redrawLineBySeriesName('Compare', energyData, channelData, true, channelData.color)
|
this.redrawLineBySeriesName('Compare', energyData, channelData, true, channelData.color)
|
||||||
|
|
||||||
if (this.isScatter()) {
|
|
||||||
lineSeries.type = 'scatterGL'
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.thumbnailOption.yAxis.max = getAxisMax(this.getChart(), 'yAxis')
|
this.thumbnailOption.yAxis.max = getAxisMax(this.getChart(), 'yAxis')
|
||||||
})
|
})
|
||||||
|
@ -1267,7 +1245,7 @@ export default {
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error)
|
console.error(error)
|
||||||
} finally {
|
} finally {
|
||||||
this.isLoading = false
|
hide()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -1305,7 +1283,7 @@ export default {
|
||||||
this.dataProcess(result)
|
this.dataProcess(result)
|
||||||
} else {
|
} else {
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
if(showMessage) {
|
if (showMessage) {
|
||||||
const arr = message.split('\n')
|
const arr = message.split('\n')
|
||||||
this.$warning({
|
this.$warning({
|
||||||
title: 'Warning',
|
title: 'Warning',
|
||||||
|
@ -1386,23 +1364,10 @@ export default {
|
||||||
this.selectedChannel = -1
|
this.selectedChannel = -1
|
||||||
this.nuclideLibraryList = []
|
this.nuclideLibraryList = []
|
||||||
this.closePeakInfomationTooltip()
|
this.closePeakInfomationTooltip()
|
||||||
this.option.series = []
|
this.clearPeakLine()
|
||||||
this.option.xAxis.name = 'Channel'
|
this.option.xAxis.name = 'Channel'
|
||||||
this.option.yAxis.type = 'value'
|
this.option.yAxis.type = 'log'
|
||||||
this.thumbnailOption.yAxis.type = 'value'
|
this.thumbnailOption.yAxis.type = 'log'
|
||||||
|
|
||||||
if (this.option.series.length) {
|
|
||||||
const spectrumLineSeries = findSeriesByName(this.option.series, 'Spectrum')
|
|
||||||
spectrumLineSeries.type = 'line'
|
|
||||||
spectrumLineSeries.symbol = 'none'
|
|
||||||
spectrumLineSeries.markLine.lineStyle.width = 2
|
|
||||||
}
|
|
||||||
|
|
||||||
const thumbnailSpectrumLineSeries = findSeriesByName(this.thumbnailOption.series, 'Spectrum')
|
|
||||||
thumbnailSpectrumLineSeries.type = 'line'
|
|
||||||
thumbnailSpectrumLineSeries.symbol = 'none'
|
|
||||||
|
|
||||||
this.graphAssistance = cloneDeep(graphAssistance)
|
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1524,6 +1489,8 @@ export default {
|
||||||
const arrFunc = isList ? Array.prototype.filter : Array.prototype.find
|
const arrFunc = isList ? Array.prototype.filter : Array.prototype.find
|
||||||
return arrFunc.call(allData, (item) => item.name == name && item.group == group) || {}
|
return arrFunc.call(allData, (item) => item.name == name && item.group == group) || {}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
...mapMutations(['ADD_SAMPLE_DATA', 'GET_SAMPLE_DATA']),
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
currStep: {
|
currStep: {
|
||||||
|
@ -1538,11 +1505,18 @@ export default {
|
||||||
sample: {
|
sample: {
|
||||||
handler(newVal, oldVal) {
|
handler(newVal, oldVal) {
|
||||||
console.log('newValnewVal', newVal)
|
console.log('newValnewVal', newVal)
|
||||||
|
this.graphAssistance.axisType = 'Channel'
|
||||||
|
this.handleResetState()
|
||||||
|
const sampleData = this.GET_SAMPLE_DATA(newVal.inputFileName)
|
||||||
|
if (sampleData) {
|
||||||
|
console.log('%c [ ]-1521', 'font-size:13px; background:pink; color:#bf2c9f;', sampleData)
|
||||||
|
} else {
|
||||||
if (newVal.sampleId) {
|
if (newVal.sampleId) {
|
||||||
this.getSampleDetail()
|
this.getSampleDetail()
|
||||||
} else {
|
} else {
|
||||||
this.getSampleDetail_file()
|
this.getSampleDetail_file()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
immediate: true,
|
immediate: true,
|
||||||
},
|
},
|
||||||
|
|
|
@ -198,7 +198,7 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { downloadFile, postAction } from '@/api/manage'
|
import { postAction } from '@/api/manage'
|
||||||
import GammaAnalysis from './gamma-analysis.vue'
|
import GammaAnalysis from './gamma-analysis.vue'
|
||||||
import BetaGammaAnalysis from './beta-gamma-analysis.vue'
|
import BetaGammaAnalysis from './beta-gamma-analysis.vue'
|
||||||
import SpectraListInMenu from './components/SpectraListInMenu.vue'
|
import SpectraListInMenu from './components/SpectraListInMenu.vue'
|
||||||
|
@ -237,6 +237,7 @@ import AutomaticAnalysisLogModal from './components/Modals/BetaGammaModals/Autom
|
||||||
import BetaGammaExtrapolationModal from './components/Modals/BetaGammaModals/BetaGammaExtrapolationModal.vue'
|
import BetaGammaExtrapolationModal from './components/Modals/BetaGammaModals/BetaGammaExtrapolationModal.vue'
|
||||||
import { getAction } from '@/api/manage'
|
import { getAction } from '@/api/manage'
|
||||||
import { clearSampleCache } from './clearSampleCache'
|
import { clearSampleCache } from './clearSampleCache'
|
||||||
|
import { fetchAndDownload } from '@/utils/file'
|
||||||
|
|
||||||
// 分析类型
|
// 分析类型
|
||||||
const ANALYZE_TYPE = {
|
const ANALYZE_TYPE = {
|
||||||
|
@ -494,7 +495,7 @@ export default {
|
||||||
let params = {
|
let params = {
|
||||||
fileName: this.newSampleData.inputFileName,
|
fileName: this.newSampleData.inputFileName,
|
||||||
}
|
}
|
||||||
downloadFile(url, `result.${saveFormat}`, params, 'get')
|
fetchAndDownload(url, params, 'get')
|
||||||
}
|
}
|
||||||
if (this.isBetaGamma) {
|
if (this.isBetaGamma) {
|
||||||
const url =
|
const url =
|
||||||
|
@ -520,7 +521,7 @@ export default {
|
||||||
this.params_toDB.qcFileName = this.newSampleData.qcFileName
|
this.params_toDB.qcFileName = this.newSampleData.qcFileName
|
||||||
this.params_toDB.dbName = this.newSampleData.dbName
|
this.params_toDB.dbName = this.newSampleData.dbName
|
||||||
|
|
||||||
downloadFile(url, `result.${saveFormat}`, this.params_toDB, 'post')
|
fetchAndDownload(url, this.params_toDB)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -594,7 +595,7 @@ export default {
|
||||||
let params = {
|
let params = {
|
||||||
fileName: this.newSampleData.inputFileName,
|
fileName: this.newSampleData.inputFileName,
|
||||||
}
|
}
|
||||||
downloadFile(url, `result.PHD`, params, 'get')
|
fetchAndDownload(url, params, 'get')
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
46
src/views/spectrumAnalysis/seriesBuilder.js
Normal file
46
src/views/spectrumAnalysis/seriesBuilder.js
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
import { buildLineSeries } from '@/utils/chartHelper'
|
||||||
|
|
||||||
|
export const spectrumSeries = buildLineSeries('Spectrum', [], '#fff', {
|
||||||
|
symbolSize: 2,
|
||||||
|
markLine: {
|
||||||
|
silent: true,
|
||||||
|
symbol: 'none',
|
||||||
|
label: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
lineStyle: {
|
||||||
|
color: 'red',
|
||||||
|
width: 1
|
||||||
|
},
|
||||||
|
data: [{ xAxis: -1 }]
|
||||||
|
},
|
||||||
|
z: 1
|
||||||
|
})
|
||||||
|
|
||||||
|
export const baseLineSeries = buildLineSeries('BaseLine', [], '#fff', {
|
||||||
|
z: 2
|
||||||
|
})
|
||||||
|
|
||||||
|
export const lcLineSeries = buildLineSeries('LcLine', [], '#fff', {
|
||||||
|
z: 3
|
||||||
|
})
|
||||||
|
|
||||||
|
export const scacLineSeries = buildLineSeries('ScacLine', [], '#fff', {
|
||||||
|
z: 4
|
||||||
|
})
|
||||||
|
|
||||||
|
export const baseLineCtrlPoint = {
|
||||||
|
name: 'BaseLine_Ctrl_Point',
|
||||||
|
type: 'scatter',
|
||||||
|
data: [],
|
||||||
|
emphasis: {
|
||||||
|
disabled: true
|
||||||
|
},
|
||||||
|
animation: false,
|
||||||
|
z: 5
|
||||||
|
}
|
||||||
|
|
||||||
|
export const compareLineSeries = buildLineSeries('Compare', [], '#fff', {
|
||||||
|
symbolSize: 2,
|
||||||
|
z: 7
|
||||||
|
})
|
|
@ -1,4 +1,5 @@
|
||||||
import { buildLineSeries } from "@/utils/chartHelper"
|
import { buildLineSeries } from "@/utils/chartHelper"
|
||||||
|
import { baseLineCtrlPoint, baseLineSeries, compareLineSeries, lcLineSeries, scacLineSeries, spectrumSeries } from "./seriesBuilder"
|
||||||
|
|
||||||
export const GammaOptions = {
|
export const GammaOptions = {
|
||||||
option: {
|
option: {
|
||||||
|
@ -98,7 +99,7 @@ export const GammaOptions = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
series: [],
|
series: [spectrumSeries, baseLineSeries, lcLineSeries, scacLineSeries, baseLineCtrlPoint, compareLineSeries],
|
||||||
brush: {}
|
brush: {}
|
||||||
},
|
},
|
||||||
// 缩略图配置
|
// 缩略图配置
|
||||||
|
@ -158,10 +159,14 @@ export const GammaOptions = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log('%c [ ]-162', 'font-size:13px; background:pink; color:#bf2c9f;', GammaOptions.option)
|
||||||
|
|
||||||
export const graphAssistance = {
|
export const graphAssistance = {
|
||||||
|
chartYAxisType: 'Log10',
|
||||||
|
Cursor: true,
|
||||||
|
Baseline: true,
|
||||||
|
Lc: true,
|
||||||
axisType: 'Channel',
|
axisType: 'Channel',
|
||||||
spectrumType: 'Lines',
|
spectrumType: 'Lines',
|
||||||
Baseline: true,
|
|
||||||
SCAC: true,
|
SCAC: true,
|
||||||
Lc: true,
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user