Merge branch 'feature-analysis-RLR-renpy' into feature/spectrum-analysis
This commit is contained in:
commit
890bc9fa73
|
@ -1,5 +1,5 @@
|
|||
NODE_ENV=development
|
||||
VUE_APP_API_BASE_URL=http://182.92.183.230:9999
|
||||
VUE_APP_API_BASE_URL=http://bdyift.natappfree.cc
|
||||
VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas
|
||||
VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview
|
||||
|
||||
|
|
|
@ -26,7 +26,9 @@
|
|||
"echarts": "^5.4.2",
|
||||
"echarts-gl": "^2.0.9",
|
||||
"enquire.js": "^2.1.6",
|
||||
"file-saver": "^2.0.5",
|
||||
"js-cookie": "^2.2.0",
|
||||
"jszip": "^3.10.1",
|
||||
"lodash.get": "^4.4.2",
|
||||
"lodash.pick": "^4.4.0",
|
||||
"md5": "^2.2.1",
|
||||
|
@ -56,6 +58,7 @@
|
|||
"xss": "^1.0.13"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
|
||||
"@babel/polyfill": "^7.2.5",
|
||||
"@types/crypto-js": "^4.1.1",
|
||||
"@vue/cli-plugin-babel": "^3.3.0",
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import Vue from 'vue'
|
||||
import { axios } from '@/utils/request'
|
||||
import signMd5Utils from '@/utils/encryption/signMd5Utils'
|
||||
import qs from "qs";
|
||||
|
||||
const api = {
|
||||
user: '/mock/api/user',
|
||||
|
@ -69,6 +70,24 @@ export function getAction(url,parameter) {
|
|||
})
|
||||
}
|
||||
|
||||
export function getFileAction(url,parameter) {
|
||||
let sign = signMd5Utils.getSign(url, parameter);
|
||||
//将签名和时间戳,添加在请求接口 Header
|
||||
// update-begin--author:taoyan---date:20220421--for: VUEN-410【签名改造】 X-TIMESTAMP牵扯
|
||||
let signHeader = {"X-Sign": sign,"X-TIMESTAMP": signMd5Utils.getTimestamp()};
|
||||
// update-end--author:taoyan---date:20220421--for: VUEN-410【签名改造】 X-TIMESTAMP牵扯
|
||||
return axios({
|
||||
url: url,
|
||||
method: 'get',
|
||||
params: parameter,
|
||||
responseType:"blob",
|
||||
paramsSerializer: function (params) {
|
||||
return qs.stringify(params, { arrayFormat: "repeat" });
|
||||
},
|
||||
headers: signHeader
|
||||
})
|
||||
}
|
||||
|
||||
//deleteAction
|
||||
export function deleteAction(url,parameter) {
|
||||
return axios({
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<template>
|
||||
<a-modal :class="'custom-modal' + (innerFullscreen ? ' fullscreen' : '')" v-bind="_attrs" v-model="visible">
|
||||
<a-modal :class="'custom-modal' + (innerFullscreen ? ' fullscreen' : '')" v-bind="_attrs" v-model="visible" @cancel="handleCancel">
|
||||
<img slot="closeIcon" src="@/assets/images/global/close.png" />
|
||||
<div slot="title">
|
||||
<div class="custom-modal-title">
|
||||
|
@ -76,6 +76,9 @@ export default {
|
|||
},
|
||||
onCancel() {
|
||||
this.visible = false
|
||||
},
|
||||
handleCancel() {
|
||||
this.$emit("cancel")
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
</a-spin>
|
||||
<div slot="custom-footer" style="text-align: center;">
|
||||
<a-space :size="20">
|
||||
<a-button type="primary">Export</a-button>
|
||||
<a-button type="primary" @click="handleOk">Export</a-button>
|
||||
<a-button @click="visible = false">Cancel</a-button>
|
||||
</a-space>
|
||||
</div>
|
||||
|
@ -15,6 +15,7 @@
|
|||
<script>
|
||||
import ModalMixin from '@/mixins/ModalMixin'
|
||||
import { getAction } from '../../../../api/manage'
|
||||
import { saveAs } from 'file-saver';
|
||||
import SampleDataMixin from '../../SampleDataMixin'
|
||||
export default {
|
||||
mixins: [ModalMixin, SampleDataMixin],
|
||||
|
@ -30,7 +31,8 @@ export default {
|
|||
data() {
|
||||
return {
|
||||
content: '',
|
||||
isLoading: true
|
||||
isLoading: true,
|
||||
fileName: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
@ -62,7 +64,7 @@ export default {
|
|||
if (res.success) {
|
||||
this.content = res.result
|
||||
} else {
|
||||
this.content = res
|
||||
this.content = ""
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
|
@ -73,6 +75,37 @@ export default {
|
|||
|
||||
beforeModalOpen() {
|
||||
this.getContent()
|
||||
},
|
||||
handleOk() {
|
||||
this.fileName=""
|
||||
if (this.content) {
|
||||
let strData = new Blob([this.content], { type: 'text/plain;charset=utf-8' });
|
||||
// if (this.type == 1 || this.type == 3) {
|
||||
// saveAs(strData, `${this.type == 1 ?'Gamma-':'Beta-'} ARR.txt`)
|
||||
// } else {
|
||||
// saveAs(strData, `${this.type == 2 ?'Gamma-':'Beta-'} RRR.txt`)
|
||||
// }
|
||||
let _this = this
|
||||
this.$confirm({
|
||||
title: 'Please enter file name',
|
||||
content: h => <a-input v-model={_this.fileName} />,
|
||||
okText: 'Cancle',
|
||||
cancelText: 'Save',
|
||||
okButtonProps: {style: {backgroundColor: "#b98326", color: "#fff", borderColor: "transparent"}},
|
||||
cancelButtonProps: {style: {color: "#fff", backgroundColor: "#31aab0", borderColor: "transparent"}},
|
||||
onOk() {
|
||||
console.log('Cancel');
|
||||
},
|
||||
onCancel() {
|
||||
if (_this.fileName) {
|
||||
_this.visible = false
|
||||
saveAs(strData, `${_this.fileName}.txt`)
|
||||
}
|
||||
},
|
||||
});
|
||||
} else {
|
||||
this.$message.warning("No data can be saved!")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,16 @@
|
|||
<template>
|
||||
<custom-modal v-model="visible" :width="1000" title="Auto Process Log Viewer" :okHandler="handleOk">
|
||||
<custom-modal v-model="visible" :width="1000" title="Auto Process Log Viewer">
|
||||
<a-spin :spinning="isLoading">
|
||||
<pre>
|
||||
{{ content }}
|
||||
</pre>
|
||||
</a-spin>
|
||||
<div slot="custom-footer" style="text-align: center;">
|
||||
<a-space :size="20">
|
||||
<a-button type="primary" @click="handleOk">Save</a-button>
|
||||
<a-button @click="visible = false">Cancel</a-button>
|
||||
</a-space>
|
||||
</div>
|
||||
</custom-modal>
|
||||
</template>
|
||||
|
||||
|
@ -12,6 +18,7 @@
|
|||
import { getAction } from '@/api/manage'
|
||||
import ModalMixin from '@/mixins/ModalMixin'
|
||||
import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
|
||||
import { saveAs } from 'file-saver';
|
||||
|
||||
export default {
|
||||
mixins: [ModalMixin, SampleDataMixin],
|
||||
|
@ -22,7 +29,8 @@ export default {
|
|||
},
|
||||
data() {
|
||||
return {
|
||||
content: ''
|
||||
content: '',
|
||||
fileName: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
@ -30,10 +38,10 @@ export default {
|
|||
try {
|
||||
this.isLoading = true
|
||||
const { sampleId } = this.sampleData
|
||||
const res = await getAction(this.type == 1 ? '/gamma/viewAutomaticAnalysisLog' : '', {
|
||||
const res = await getAction(this.type == 1 ? '/gamma/viewAutomaticAnalysisLog' : '/gamma/viewAutomaticAnalysisLog', { // 自动分析日志接口暂用都是gammam,beta暂时没有
|
||||
sampleId
|
||||
})
|
||||
this.content = res
|
||||
this.content = ""
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
} finally {
|
||||
|
@ -46,7 +54,31 @@ export default {
|
|||
},
|
||||
|
||||
handleOk() {
|
||||
console.log('%c [ ]-15', 'font-size:13px; background:pink; color:#bf2c9f;')
|
||||
this.fileName=""
|
||||
if (this.content) {
|
||||
let _this = this
|
||||
let strData = new Blob([this.content], { type: 'text/plain;charset=utf-8' });
|
||||
// saveAs(strData, `${this.type == 1 ?'Gamma-':'Beta-'}Automatic Analysis Log.txt`)
|
||||
this.$confirm({
|
||||
title: 'Please enter file name',
|
||||
content: h => <a-input v-model={_this.fileName} />,
|
||||
okText: 'Cancle',
|
||||
cancelText: 'Save',
|
||||
okButtonProps: {style: {backgroundColor: "#b98326", color: "#fff", borderColor: "transparent"}},
|
||||
cancelButtonProps: {style: {color: "#fff", backgroundColor: "#31aab0", borderColor: "transparent"}},
|
||||
onOk() {
|
||||
console.log('Cancel');
|
||||
},
|
||||
onCancel() {
|
||||
if (_this.fileName) {
|
||||
_this.visible = false
|
||||
saveAs(strData, `${_this.fileName}.txt`)
|
||||
}
|
||||
},
|
||||
});
|
||||
} else {
|
||||
this.$message.warning("No data can be saved!")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,16 +2,18 @@
|
|||
<custom-modal v-model="visible" :width="750" title="QC Result">
|
||||
<a-table :loading="isLoading" :columns="columns" :dataSource="list" :pagination="false"> </a-table>
|
||||
<a-space slot="custom-footer" :size="20">
|
||||
<a-button type="primary">Save Text</a-button>
|
||||
<a-button type="primary">Save Excel</a-button>
|
||||
<a-button type="primary" @click="SaveText">Save Text</a-button>
|
||||
<a-button type="primary" @click="handleExportToExcel">Save Excel</a-button>
|
||||
<a-button type="primary" @click="visible = false">Cancel</a-button>
|
||||
</a-space>
|
||||
</custom-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction } from '@/api/manage'
|
||||
import { getAction, getFileAction } from '@/api/manage'
|
||||
import ModalMixin from '@/mixins/ModalMixin'
|
||||
import { saveAs } from 'file-saver';
|
||||
import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
|
||||
|
||||
const columns = [
|
||||
{
|
||||
|
@ -47,7 +49,7 @@ const columns = [
|
|||
]
|
||||
|
||||
export default {
|
||||
mixins: [ModalMixin],
|
||||
mixins: [ModalMixin, SampleDataMixin],
|
||||
props: {
|
||||
sampleId: {
|
||||
type: Number
|
||||
|
@ -57,7 +59,10 @@ export default {
|
|||
this.columns = columns
|
||||
return {
|
||||
list: [],
|
||||
isLoading: false
|
||||
isLoading: false,
|
||||
text: '',
|
||||
fileName: '',
|
||||
fileName_excel: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
@ -124,6 +129,74 @@ export default {
|
|||
beforeModalOpen() {
|
||||
this.list = []
|
||||
this.getData()
|
||||
},
|
||||
SaveText() {
|
||||
this.fileName=""
|
||||
this.text = `#QC RESULT\n${this.columns[0].title} ${this.columns[1].title} ${this.columns[2].title} ${this.columns[3].title}\n`
|
||||
this.list.forEach(item => {
|
||||
let str = ""
|
||||
str += `${item.qcFlags} `
|
||||
str += `${item.evaluationMetrics} `
|
||||
str += `${item.value} `
|
||||
str += `${item.status} \n`
|
||||
this.text+=str
|
||||
})
|
||||
let strData = new Blob([this.text], { type: 'text/plain;charset=utf-8' });
|
||||
let _this = this
|
||||
this.$confirm({
|
||||
title: 'Please enter file name',
|
||||
content: h => <a-input v-model={_this.fileName} />,
|
||||
okText: 'Cancle',
|
||||
cancelText: 'Save',
|
||||
okButtonProps: {style: {backgroundColor: "#b98326", color: "#fff", borderColor: "transparent"}},
|
||||
cancelButtonProps: {style: {color: "#fff", backgroundColor: "#31aab0", borderColor: "transparent"}},
|
||||
onOk() {
|
||||
console.log('Cancel');
|
||||
},
|
||||
onCancel() {
|
||||
if (_this.fileName) {
|
||||
_this.visible = false
|
||||
saveAs(strData, `${_this.fileName}.txt`)
|
||||
}
|
||||
},
|
||||
});
|
||||
},
|
||||
// 导出到Excel
|
||||
handleExportToExcel() {
|
||||
this.fileName_excel = ""
|
||||
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||
if (this.list.length>0) {
|
||||
let _this = this
|
||||
this.$confirm({
|
||||
title: 'Please enter file name',
|
||||
content: h => <a-input v-model={_this.fileName_excel} />,
|
||||
okText: 'Cancle',
|
||||
cancelText: 'Save',
|
||||
okButtonProps: {style: {backgroundColor: "#b98326", color: "#fff", borderColor: "transparent"}},
|
||||
cancelButtonProps: {style: {color: "#fff", backgroundColor: "#31aab0", borderColor: "transparent"}},
|
||||
onOk() {
|
||||
console.log('Cancel');
|
||||
},
|
||||
onCancel() {
|
||||
if (_this.fileName_excel) {
|
||||
let params = {
|
||||
sampleId: sampleId || "",
|
||||
fileName
|
||||
}
|
||||
getFileAction('/spectrumAnalysis/exportQCResult', params).then(res => {
|
||||
if (res.code && res.code == 500) {
|
||||
this.$message.warning("This operation fails. Contact your system administrator")
|
||||
} else {
|
||||
const blob = new Blob([res], { type: "application/vnd.ms-excel" })
|
||||
saveAs(blob, `${_this.fileName_excel}`)
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
});
|
||||
} else {
|
||||
this.$message.warning("No downloadable data")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
|
||||
<div slot="custom-footer">
|
||||
<a-space :size="20">
|
||||
<a-button type="primary">Save Text</a-button>
|
||||
<a-button type="primary">Save Excel</a-button>
|
||||
<a-button type="primary" @click="saveText">Save Text</a-button>
|
||||
<a-button type="primary" @click="handleExportToExcel">Save Excel</a-button>
|
||||
<a-button @click="visible = false">Cancel</a-button>
|
||||
</a-space>
|
||||
</div>
|
||||
|
@ -15,10 +15,12 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction } from '@/api/manage'
|
||||
import { getAction, getFileAction } from '@/api/manage'
|
||||
import ModalMixin from '@/mixins/ModalMixin'
|
||||
import { saveAs } from 'file-saver';
|
||||
import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
|
||||
export default {
|
||||
mixins: [ModalMixin],
|
||||
mixins: [ModalMixin, SampleDataMixin],
|
||||
props: {
|
||||
sampleId: {
|
||||
type: Number
|
||||
|
@ -27,7 +29,9 @@ export default {
|
|||
data() {
|
||||
return {
|
||||
content: '',
|
||||
isLoading: true
|
||||
isLoading: true,
|
||||
fileName: '',
|
||||
fileName_excel: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
@ -42,6 +46,7 @@ export default {
|
|||
this.content = res.result
|
||||
}
|
||||
else {
|
||||
this.content = ""
|
||||
this.$message.error(res.message)
|
||||
}
|
||||
} catch (error) {
|
||||
|
@ -55,6 +60,70 @@ export default {
|
|||
if (this.sampleId) {
|
||||
this.getContent()
|
||||
}
|
||||
},
|
||||
saveText() {
|
||||
this.fileName=""
|
||||
if (this.content) {
|
||||
let strData = new Blob([this.content], { type: 'text/plain;charset=utf-8' });
|
||||
// saveAs(strData, `Beta-View Sample Infomation.txt`)
|
||||
let _this = this
|
||||
this.$confirm({
|
||||
title: 'Please enter file name',
|
||||
content: h => <a-input v-model={_this.fileName} />,
|
||||
okText: 'Cancle',
|
||||
cancelText: 'Save',
|
||||
okButtonProps: {style: {backgroundColor: "#b98326", color: "#fff", borderColor: "transparent"}},
|
||||
cancelButtonProps: {style: {color: "#fff", backgroundColor: "#31aab0", borderColor: "transparent"}},
|
||||
onOk() {
|
||||
console.log('Cancel');
|
||||
},
|
||||
onCancel() {
|
||||
if (_this.fileName) {
|
||||
_this.visible = false
|
||||
saveAs(strData, `${_this.fileName}.txt`)
|
||||
}
|
||||
},
|
||||
});
|
||||
} else {
|
||||
this.$message.warning("No data can be saved!")
|
||||
}
|
||||
},
|
||||
// 导出到Excel
|
||||
handleExportToExcel() {
|
||||
this.fileName_excel = ""
|
||||
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||
if (this.content) {
|
||||
let _this = this
|
||||
this.$confirm({
|
||||
title: 'Please enter file name',
|
||||
content: h => <a-input v-model={_this.fileName_excel} />,
|
||||
okText: 'Cancle',
|
||||
cancelText: 'Save',
|
||||
okButtonProps: {style: {backgroundColor: "#b98326", color: "#fff", borderColor: "transparent"}},
|
||||
cancelButtonProps: {style: {color: "#fff", backgroundColor: "#31aab0", borderColor: "transparent"}},
|
||||
onOk() {
|
||||
console.log('Cancel');
|
||||
},
|
||||
onCancel() {
|
||||
if (_this.fileName_excel) {
|
||||
let params = {
|
||||
sampleId: sampleId || "",
|
||||
fileName
|
||||
}
|
||||
getFileAction('/spectrumAnalysis/exportSampleInformation', params).then(res => {
|
||||
if (res.code && res.code == 500) {
|
||||
this.$message.warning("This operation fails. Contact your system administrator")
|
||||
} else {
|
||||
const blob = new Blob([res], { type: "application/vnd.ms-excel" })
|
||||
saveAs(blob, `${_this.fileName_excel}`)
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
});
|
||||
} else {
|
||||
this.$message.warning("No downloadable data")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<custom-modal v-model="visible" :width="1000" title="View Spectrum" :footer="null" destroyOnClose>
|
||||
<custom-modal v-model="visible" :width="1000" title="View Spectrum" destroyOnClose>
|
||||
<a-spin :spinning="isLoading">
|
||||
<a-tabs :animated="false">
|
||||
<a-tabs :animated="false" @change="handleTabChange">
|
||||
<a-tab-pane tab="Sample Spectrum" :key="1">
|
||||
<pre>{{ content.sample.join('\n') }}</pre>
|
||||
</a-tab-pane>
|
||||
|
@ -16,6 +16,12 @@
|
|||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
</a-spin>
|
||||
<div slot="custom-footer">
|
||||
<a-space :size="20">
|
||||
<a-button type="primary" @click="handleOk">Save Text</a-button>
|
||||
<a-button @click="visible = false">Cancel</a-button>
|
||||
</a-space>
|
||||
</div>
|
||||
</custom-modal>
|
||||
</template>
|
||||
|
||||
|
@ -37,7 +43,9 @@ export default {
|
|||
qc: [],
|
||||
sample: []
|
||||
},
|
||||
isLoading: true
|
||||
isLoading: true,
|
||||
fileName: '',
|
||||
currTab: 1
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
@ -63,6 +71,46 @@ export default {
|
|||
if (this.sampleId) {
|
||||
this.getContent()
|
||||
}
|
||||
},
|
||||
handleTabChange(key) {
|
||||
this.currTab = key
|
||||
},
|
||||
handleOk() {
|
||||
this.fileName=""
|
||||
let text = ""
|
||||
if (this.currTab == 1) {
|
||||
text=this.content.sample.join('\n')
|
||||
} else if (this.currTab == 2) {
|
||||
text=this.content.gasBg.join('\n')
|
||||
}else if (this.currTab == 3) {
|
||||
text=this.content.detBg.join('\n')
|
||||
}else if (this.currTab == 4) {
|
||||
text=this.content.qc.join('\n')
|
||||
}
|
||||
if (text) {
|
||||
let strData = new Blob([text], { type: 'text/plain;charset=utf-8' });
|
||||
// saveAs(strData, `GammaViewer Log.txt`)
|
||||
let _this = this
|
||||
this.$confirm({
|
||||
title: 'Please enter file name',
|
||||
content: h => <a-input v-model={_this.fileName} />,
|
||||
okText: 'Cancle',
|
||||
cancelText: 'Save',
|
||||
okButtonProps: {style: {backgroundColor: "#b98326", color: "#fff", borderColor: "transparent"}},
|
||||
cancelButtonProps: {style: {color: "#fff", backgroundColor: "#31aab0", borderColor: "transparent"}},
|
||||
onOk() {
|
||||
console.log('Cancel');
|
||||
},
|
||||
onCancel() {
|
||||
if (_this.fileName) {
|
||||
_this.visible = false
|
||||
saveAs(strData, `${_this.fileName}.txt`)
|
||||
}
|
||||
},
|
||||
});
|
||||
} else {
|
||||
this.$message.warning("No data can be saved!")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,18 +3,19 @@
|
|||
<a-spin :spinning="isLoading">
|
||||
<pre class="data-processing-log">{{ text }}</pre>
|
||||
</a-spin>
|
||||
<div slot="custom-footer" style="text-align: center;">
|
||||
<a-space :size="20">
|
||||
<a-button type="primary">Export</a-button>
|
||||
<a-button @click="visible = false">Cancel</a-button>
|
||||
</a-space>
|
||||
</div>
|
||||
<div slot="custom-footer" style="text-align: center;">
|
||||
<a-space :size="20">
|
||||
<a-button type="primary" @click="handleOk">Export</a-button>
|
||||
<a-button @click="visible = false">Cancel</a-button>
|
||||
</a-space>
|
||||
</div>
|
||||
</custom-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ModalMixin from '@/mixins/ModalMixin'
|
||||
import { getAction } from '@/api/manage'
|
||||
import { saveAs } from 'file-saver';
|
||||
import SampleDataMixin from '../../SampleDataMixin'
|
||||
export default {
|
||||
mixins: [ModalMixin, SampleDataMixin],
|
||||
|
@ -22,6 +23,7 @@ export default {
|
|||
return {
|
||||
text: "",
|
||||
isLoading: false,
|
||||
fileName: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
@ -35,14 +37,42 @@ export default {
|
|||
sampleId,
|
||||
fileName
|
||||
}
|
||||
getAction("/gamma/viewGammaviewerLog", params).then(res => {
|
||||
getAction("/gamma/viewGammaViewerLog", params).then(res => {
|
||||
this.isLoading = false
|
||||
if (res.success) {
|
||||
this.text = res.result
|
||||
} else {
|
||||
this.text = ""
|
||||
this.$message.warning("This operation fails. Contact your system administrator")
|
||||
}
|
||||
})
|
||||
},
|
||||
handleOk() {
|
||||
this.fileName=""
|
||||
if (this.text) {
|
||||
let strData = new Blob([this.text], { type: 'text/plain;charset=utf-8' });
|
||||
// saveAs(strData, `GammaViewer Log.txt`)
|
||||
let _this = this
|
||||
this.$confirm({
|
||||
title: 'Please enter file name',
|
||||
content: h => <a-input v-model={_this.fileName} />,
|
||||
okText: 'Cancle',
|
||||
cancelText: 'Save',
|
||||
okButtonProps: {style: {backgroundColor: "#b98326", color: "#fff", borderColor: "transparent"}},
|
||||
cancelButtonProps: {style: {color: "#fff", backgroundColor: "#31aab0", borderColor: "transparent"}},
|
||||
onOk() {
|
||||
console.log('Cancel');
|
||||
},
|
||||
onCancel() {
|
||||
if (_this.fileName) {
|
||||
_this.visible = false
|
||||
saveAs(strData, `${_this.fileName}.txt`)
|
||||
}
|
||||
},
|
||||
});
|
||||
} else {
|
||||
this.$message.warning("No data can be saved!")
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
|
|
@ -1,49 +1,125 @@
|
|||
<template>
|
||||
<custom-modal v-model="visible" :width="1200" title="Load Data From File">
|
||||
<a-table :data-source="list" :columns="columns" :pagination="false" bordered>
|
||||
<template slot="sampleData" slot-scope="text, record">
|
||||
<phd-select type="file" @change="handleFileChange(record, 'sampleData', $event)" :title="text && text.name">
|
||||
{{ text && text.name }}
|
||||
</phd-select>
|
||||
<div>
|
||||
<custom-modal v-model="visible" :width="1200" title="Load Data From File">
|
||||
<a-table
|
||||
:data-source="list"
|
||||
:columns="columns"
|
||||
:loading="loading_list"
|
||||
:pagination="false"
|
||||
bordered
|
||||
>
|
||||
<template slot="sampleData" slot-scope="text, record">
|
||||
<div class="file-name file-ellipsis" :title="text" @dblclick="handleFileSelect('_S_',record)">
|
||||
{{ text }}
|
||||
</div>
|
||||
<!-- <phd-select type="file" @change="handleFileChange(record, 'sampleData', $event)" @select="handleFileSelect" :title="text && text.name">
|
||||
{{ text }}
|
||||
</phd-select> -->
|
||||
</template>
|
||||
<template slot="gasBkData" slot-scope="text, record">
|
||||
<div class="file-ellipsis" :title="text" @dblclick="handleFileSelect('_G_',record)">
|
||||
{{ text }}
|
||||
</div>
|
||||
</template>
|
||||
<template slot="detBkData" slot-scope="text, record">
|
||||
<div class="file-ellipsis" :title="text" @dblclick="handleFileSelect('_D_',record)">
|
||||
{{ text }}
|
||||
</div>
|
||||
</template>
|
||||
<template slot="qcData" slot-scope="text, record">
|
||||
<div class="file-ellipsis" :title="text" @dblclick="handleFileSelect('_Q_',record)">
|
||||
{{ text }}
|
||||
</div>
|
||||
</template>
|
||||
<template slot="status" slot-scope="text,record">
|
||||
<span :class="[record.detFileStatus&&record.gasFileStatus&&record.qcFileStatus?'status_true':'status_false','status']"></span>
|
||||
</template>
|
||||
</a-table>
|
||||
|
||||
<!-- 底部按钮 -->
|
||||
<template slot="custom-footer">
|
||||
<a-space>
|
||||
<a-upload accept=".PHD,.phd" :custom-request="handleUpload" :multiple="true" :show-upload-list="false" :before-upload="beforeUpload" >
|
||||
<a-button type="primary" :loading="uploading">
|
||||
Upload
|
||||
</a-button>
|
||||
</a-upload>
|
||||
<a-button type="primary" @click="handleReset">Reset</a-button>
|
||||
<a-button type="primary" @click="handleLoad">Load</a-button>
|
||||
<a-button type="primary" @click="handleCancel">Cancel</a-button>
|
||||
</a-space>
|
||||
</template>
|
||||
<template slot="gasBkData" slot-scope="text, record">
|
||||
<phd-select type="file" @change="handleFileChange(record, 'gasBkData', $event)" :title="text && text.name">
|
||||
{{ text && text.name }}
|
||||
</phd-select>
|
||||
<!-- 底部按钮结束 -->
|
||||
</custom-modal>
|
||||
<a-modal v-model="visible_file" :width="1200" title="File List" @cancel="cancelFileModale">
|
||||
<a-spin :spinning="loading_file">
|
||||
<div style="position: relative;padding-bottom: 40px;height: 460px;overflow: hidden;">
|
||||
<a-row type="flex" style="margin-bottom: 15px;">
|
||||
<a-col flex="400px">
|
||||
<a-input placeholder="search..." v-model="searchName" />
|
||||
</a-col>
|
||||
<a-col flex="108px">
|
||||
<a-button class="search-btn" type="primary" @click="onSearchFileName">
|
||||
<img src="@/assets/images/global/search.png" alt="" />
|
||||
Search
|
||||
</a-button>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-table
|
||||
v-if="tableType=='multiple'"
|
||||
:data-source="list_file"
|
||||
:columns="columns_file"
|
||||
:pagination="false"
|
||||
:customRow="customRow"
|
||||
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
|
||||
:scroll="{ y: 375 }"
|
||||
>
|
||||
</a-table>
|
||||
<custom-table
|
||||
v-if="tableType=='single'"
|
||||
rowKey="id"
|
||||
size="middle"
|
||||
:columns="columns_file"
|
||||
:list="list_file"
|
||||
:pagination="false"
|
||||
:selectedRowKeys.sync="selectedRowKeys_edit"
|
||||
:selectionRows.sync="selectionRows_edit"
|
||||
>
|
||||
</custom-table>
|
||||
<a-pagination
|
||||
size="small"
|
||||
v-model="ipagination.current"
|
||||
:pageSize="ipagination.pageSize"
|
||||
:page-size-options="ipagination.pageSizeOptions"
|
||||
show-size-changer
|
||||
show-quick-jumper
|
||||
:total="ipagination.total"
|
||||
:show-total="(total, range) => `Total ${total} items Page ${ipagination.current} / ${Math.ceil(total / ipagination.pageSize)}`"
|
||||
show-less-items
|
||||
@change="handlePageChange"
|
||||
@showSizeChange="handleSizeChange"
|
||||
/>
|
||||
</div>
|
||||
</a-spin>
|
||||
<template slot="footer">
|
||||
<a-space class="operators" :size="20">
|
||||
<a-button type="success" @click="saveFileName">Save</a-button>
|
||||
<a-button type="warn" @click="cancelFileModale">Cancel</a-button>
|
||||
</a-space>
|
||||
</template>
|
||||
<template slot="detBkData" slot-scope="text, record">
|
||||
<phd-select type="file" @change="handleFileChange(record, 'detBkData', $event)" :title="text && text.name">
|
||||
{{ text && text.name }}
|
||||
</phd-select>
|
||||
</template>
|
||||
<template slot="qcData" slot-scope="text, record">
|
||||
<phd-select type="file" @change="handleFileChange(record, 'qcData', $event)" :title="text && text.name">
|
||||
{{ text && text.name }}
|
||||
</phd-select>
|
||||
</template>
|
||||
<template slot="status" slot-scope="text">
|
||||
<span class="status"></span>
|
||||
</template>
|
||||
</a-table>
|
||||
|
||||
<!-- 底部按钮 -->
|
||||
<template slot="custom-footer">
|
||||
<a-space>
|
||||
<a-button type="primary" @click="handleReset">Reset</a-button>
|
||||
<a-button type="primary" @click="handleLoad">Load</a-button>
|
||||
<a-button type="primary" @click="handleCancel">Cancel</a-button>
|
||||
</a-space>
|
||||
</template>
|
||||
<!-- 底部按钮结束 -->
|
||||
</custom-modal>
|
||||
</a-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import JSZip from 'jszip'
|
||||
import FileSaver from 'file-saver'
|
||||
import PhdSelect from '../PHDSelect.vue'
|
||||
import { getAction,postAction } from '../../../../api/manage'
|
||||
const columns = [
|
||||
{
|
||||
title: 'SampleData',
|
||||
dataIndex: 'sampleData',
|
||||
dataIndex: 'sampleFileName',
|
||||
width: '23%',
|
||||
ellipsis: true,
|
||||
scopedSlots: {
|
||||
|
@ -52,7 +128,7 @@ const columns = [
|
|||
},
|
||||
{
|
||||
title: 'GasBkData',
|
||||
dataIndex: 'gasBkData',
|
||||
dataIndex: 'gasFileName',
|
||||
width: '23%',
|
||||
ellipsis: true,
|
||||
scopedSlots: {
|
||||
|
@ -61,7 +137,7 @@ const columns = [
|
|||
},
|
||||
{
|
||||
title: 'DetBkData',
|
||||
dataIndex: 'detBkData',
|
||||
dataIndex: 'detFileName',
|
||||
width: '23%',
|
||||
ellipsis: true,
|
||||
scopedSlots: {
|
||||
|
@ -70,7 +146,7 @@ const columns = [
|
|||
},
|
||||
{
|
||||
title: 'QCData',
|
||||
dataIndex: 'qcData',
|
||||
dataIndex: 'qcFileName',
|
||||
width: '23%',
|
||||
ellipsis: true,
|
||||
scopedSlots: {
|
||||
|
@ -85,7 +161,23 @@ const columns = [
|
|||
}
|
||||
}
|
||||
]
|
||||
|
||||
const columns_file = [
|
||||
{
|
||||
title: 'Name',
|
||||
dataIndex: 'name',
|
||||
width: '45%',
|
||||
align: 'left',
|
||||
ellipsis: true
|
||||
},{
|
||||
title: 'UpdateDate',
|
||||
dataIndex: 'updateDate',
|
||||
align: 'left',
|
||||
},{
|
||||
title: 'Size',
|
||||
dataIndex: 'size',
|
||||
align: 'left'
|
||||
},
|
||||
]
|
||||
export default {
|
||||
components: { PhdSelect },
|
||||
props: {
|
||||
|
@ -96,30 +188,200 @@ export default {
|
|||
data() {
|
||||
this.columns = columns
|
||||
return {
|
||||
list: this.getInitialList()
|
||||
visible_file: false,
|
||||
list_file: [],
|
||||
columns_file,
|
||||
loading_file: false,
|
||||
loading_list: false,
|
||||
list: this.getInitialList(),
|
||||
ipagination:{
|
||||
current: 1,
|
||||
pageSize: 10,
|
||||
pageSizeOptions: ['10', '20', '30'],
|
||||
showTotal: (total, range) => {
|
||||
const { current, pageSize } = this.ipagination
|
||||
return `Total ${total} items Page ${current} / ${Math.ceil(total / pageSize)}`
|
||||
},
|
||||
showQuickJumper: true,
|
||||
showSizeChanger: true,
|
||||
total: 0
|
||||
},
|
||||
selectedRowKeys: [],
|
||||
selectedFiles: [],
|
||||
fileList: [],
|
||||
fileNum: 0,
|
||||
uploading: false,
|
||||
currRowData: {},
|
||||
currFileType: "_S_",
|
||||
selectedRowKeys_edit: [],
|
||||
selectionRows_edit: [],
|
||||
tableType: "multiple",
|
||||
searchName: ""
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 初始化为10*4的表格
|
||||
getInitialList() {
|
||||
return new Array(10).fill(0).map(() => ({
|
||||
sampleData: undefined,
|
||||
gasBkData: undefined,
|
||||
detBkData: undefined,
|
||||
qcData: undefined
|
||||
sampleFileName: undefined,
|
||||
gasFileName: undefined,
|
||||
detFileName: undefined,
|
||||
qcFileName: undefined
|
||||
}))
|
||||
},
|
||||
customRow(record, index) {
|
||||
const that = this;
|
||||
return {
|
||||
// class: that.selectedRowKeys==record.id ? 'ant-table-row-selected' : '',
|
||||
on: {
|
||||
click: () => {
|
||||
console.log("选中行",record.id);
|
||||
that.selectedRowKeys.push( record.id)
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
handleFileChange(record, key, fileInfo) {
|
||||
record[key] = fileInfo
|
||||
},
|
||||
handleFileSelect(str, record) {
|
||||
this.currRowData = record
|
||||
this.currFileType = str
|
||||
this.selectedRowKeys = []
|
||||
this.selectedFiles = []
|
||||
this.visible_file = true
|
||||
this.tableType = str==="_S_"?"multiple":"single"
|
||||
this.getSpectrumFile({pageNo:1,pageSize:10})
|
||||
},
|
||||
onSearchFileName() {
|
||||
this.getSpectrumFile({pageNo:1,pageSize:10})
|
||||
},
|
||||
getSpectrumFile(params) {
|
||||
this.loading_file = true
|
||||
let params_arg = {...params,name:`${this.searchName?this.searchName+',':''}${this.currFileType}`}
|
||||
getAction("/spectrumFile/get", params_arg).then(res => {
|
||||
this.loading_file = false
|
||||
if (res.success) {
|
||||
res.result.records.forEach((item,index) => {
|
||||
item.id = index
|
||||
})
|
||||
this.ipagination.total = res.result.total
|
||||
this.ipagination.current = res.result.current
|
||||
this.ipagination.pageSize = res.result.size
|
||||
this.list_file = res.result.records
|
||||
} else {
|
||||
this.$message.warning("This operation fails. Contact your system administrator")
|
||||
}
|
||||
})
|
||||
},
|
||||
handlePageChange(page, pageSize) {
|
||||
this.ipagination.current = page
|
||||
this.ipagination.pageSize = pageSize
|
||||
this.getSpectrumFile({
|
||||
pageNo: page,
|
||||
pageSize: pageSize
|
||||
})
|
||||
},
|
||||
handleSizeChange(current, size) {
|
||||
this.ipagination.current = current
|
||||
this.ipagination.pageSize = size
|
||||
this.getSpectrumFile({
|
||||
pageNo: current,
|
||||
pageSize: size
|
||||
})
|
||||
},
|
||||
onSelectChange(selectedRowKeys, selectedRows) {
|
||||
this.selectedRowKeys = selectedRowKeys
|
||||
this.selectedFiles = selectedRows.map(item => {
|
||||
return item.name
|
||||
});
|
||||
},
|
||||
saveFileName() {
|
||||
this.visible_file = false
|
||||
if (this.tableType ==="multiple" ) {
|
||||
this.loading_list = true
|
||||
let params = {
|
||||
fileName: this.selectedFiles.join(",")
|
||||
}
|
||||
getAction("/spectrumAnalysis/getFilesBySampleFile", params).then(res => {
|
||||
this.loading_list = false
|
||||
if (res.success) {
|
||||
let idx = res.result.length
|
||||
this.list.splice(0,idx,...res.result)
|
||||
} else {
|
||||
this.$message.warning("This operation fails. Contact your system administrator")
|
||||
}
|
||||
})
|
||||
} else {
|
||||
let currFileName = this.selectionRows_edit[0].name
|
||||
if (currFileName.includes(this.currFileType)) {
|
||||
this.currRowData.gasFileName = currFileName
|
||||
}
|
||||
}
|
||||
},
|
||||
cancelFileModale() {
|
||||
this.visible_file = false
|
||||
this.list_file=[]
|
||||
},
|
||||
beforeUpload(file,fileList) {
|
||||
this.fileList = fileList
|
||||
},
|
||||
handleUpload({ file }) {
|
||||
this.uploading = true
|
||||
this.fileNum += 1
|
||||
if (this.fileNum == this.fileList.length) {
|
||||
this.zipFile(this.fileList)
|
||||
}
|
||||
},
|
||||
async zipFile(fileList, onProgress) {
|
||||
const zip = new JSZip()
|
||||
const promises=[]
|
||||
fileList.forEach(file => {
|
||||
promises.push(this.readAsArrayBuffer(file))
|
||||
})
|
||||
Promise.all(promises).then(result => {
|
||||
result.forEach(res => {
|
||||
zip.file(res.fileName, res.data)
|
||||
})
|
||||
zip.generateAsync({ type: 'blob' }).then(content => {
|
||||
let file = new File([content], 'test.zip', { type: content.type })
|
||||
const formData = new FormData()
|
||||
formData.append("file",file)
|
||||
postAction("/spectrumFile/upload", formData).then(res => {
|
||||
this.uploading = false
|
||||
this.fileNum = 0
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
async readAsArrayBuffer(file){
|
||||
return new Promise((resolve) => {
|
||||
let reader = new FileReader()
|
||||
reader.readAsArrayBuffer(file)
|
||||
reader.onload = (e) => {
|
||||
resolve({
|
||||
fileName: file.name,
|
||||
data: e.target.result
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
handleReset() {
|
||||
this.list = this.getInitialList()
|
||||
},
|
||||
|
||||
handleLoad() {
|
||||
console.log('%c [ handleLoad ]-123', 'font-size:13px; background:pink; color:#bf2c9f;', this.list)
|
||||
this.visible = false
|
||||
this.$emit('loadFormFile', this.list)
|
||||
// console.log('%c [ handleLoad ]-123', 'font-size:13px; background:pink; color:#bf2c9f;', this.list)
|
||||
},
|
||||
|
||||
handleCancel() {
|
||||
|
@ -149,6 +411,12 @@ export default {
|
|||
|
||||
background-color: #00e170;
|
||||
}
|
||||
.status_true{
|
||||
background-color: #00e170;
|
||||
}
|
||||
.status_false{
|
||||
background-color: red;
|
||||
}
|
||||
::v-deep {
|
||||
@tableBorderColor: #000;
|
||||
|
||||
|
@ -168,5 +436,55 @@ export default {
|
|||
padding-top: 0 !important;
|
||||
padding-bottom: 0 !important;
|
||||
}
|
||||
.ant-pagination{
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
.ant-select {
|
||||
.ant-select-arrow-icon {
|
||||
transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
|
||||
}
|
||||
&-open {
|
||||
.ant-select-arrow-icon {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
.ant-modal-title{
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
}
|
||||
.item-label{
|
||||
display: inline-block;
|
||||
font-size: 16px;
|
||||
font-family: ArialMT;
|
||||
color: #ade6ee;
|
||||
line-height: 32px;
|
||||
height: 32px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.operators {
|
||||
width: 100%;
|
||||
justify-content: center;
|
||||
.ant-btn {
|
||||
width: 92px;
|
||||
}
|
||||
}
|
||||
.file-name {
|
||||
height: 42px;
|
||||
line-height: 42px;
|
||||
}
|
||||
.file-ellipsis{
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
/deep/.ant-table-tbody .ant-table-row td{
|
||||
cursor: pointer;
|
||||
}
|
||||
.ant-input{
|
||||
width: 380px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -46,8 +46,9 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction } from '@/api/manage'
|
||||
import { getAction, getFileAction } from '@/api/manage'
|
||||
import ModalMixin from '@/mixins/ModalMixin'
|
||||
import { saveAs } from 'file-saver';
|
||||
import SampleDataMixin from '../../SampleDataMixin'
|
||||
|
||||
const columns = [
|
||||
|
@ -126,7 +127,8 @@ export default {
|
|||
isLoading: false,
|
||||
|
||||
list: [],
|
||||
compareList: []
|
||||
compareList: [],
|
||||
fileName: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
@ -164,7 +166,42 @@ export default {
|
|||
},
|
||||
|
||||
// 导出到Excel
|
||||
handleExportToExcel() {}
|
||||
handleExportToExcel() {
|
||||
this.fileName = ""
|
||||
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||
if (this.list.length > 0) {
|
||||
let _this = this
|
||||
this.$confirm({
|
||||
title: 'Please enter file name',
|
||||
content: h => <a-input v-model={_this.fileName} />,
|
||||
okText: 'Cancle',
|
||||
cancelText: 'Save',
|
||||
okButtonProps: {style: {backgroundColor: "#b98326", color: "#fff", borderColor: "transparent"}},
|
||||
cancelButtonProps: {style: {color: "#fff", backgroundColor: "#31aab0", borderColor: "transparent"}},
|
||||
onOk() {
|
||||
console.log('Cancel');
|
||||
},
|
||||
onCancel() {
|
||||
if (_this.fileName) {
|
||||
let params = {
|
||||
sampleId,
|
||||
fileName
|
||||
}
|
||||
getFileAction('/gamma/exportRadionuclideActivity', params).then(res => {
|
||||
if (res.code && res.code == 500) {
|
||||
this.$message.warning("This operation fails. Contact your system administrator")
|
||||
} else {
|
||||
const blob = new Blob([res], { type: "application/vnd.ms-excel" })
|
||||
saveAs(blob, `${_this.fileName}`)
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
});
|
||||
} else {
|
||||
this.$message.warning("No downloadable data")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -3,15 +3,15 @@
|
|||
<a-spin :spinning="isLoading">
|
||||
<a-table :columns="columns" :dataSource="list" :pagination="false" />
|
||||
</a-spin>
|
||||
<a-button slot="custom-footer" type="primary">Export to Excel</a-button>
|
||||
<a-button slot="custom-footer" type="primary" @click="handleExportToExcel">Export to Excel</a-button>
|
||||
</custom-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction } from '@/api/manage'
|
||||
import { getAction, getFileAction } from '@/api/manage'
|
||||
import ModalMixin from '@/mixins/ModalMixin'
|
||||
import { saveAs } from 'file-saver';
|
||||
import SampleDataMixin from '../../SampleDataMixin'
|
||||
|
||||
const columns = [
|
||||
{
|
||||
title: 'Name',
|
||||
|
@ -64,7 +64,8 @@ export default {
|
|||
this.columns = columns
|
||||
return {
|
||||
isLoading: false,
|
||||
list: []
|
||||
list: [],
|
||||
fileName: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
@ -90,6 +91,43 @@ export default {
|
|||
|
||||
beforeModalOpen() {
|
||||
this.getData()
|
||||
},
|
||||
// 导出到Excel
|
||||
handleExportToExcel() {
|
||||
this.fileName = ""
|
||||
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||
if (this.list.length > 0) {
|
||||
let _this = this
|
||||
this.$confirm({
|
||||
title: 'Please enter file name',
|
||||
content: h => <a-input v-model={_this.fileName} />,
|
||||
okText: 'Cancle',
|
||||
cancelText: 'Save',
|
||||
okButtonProps: {style: {backgroundColor: "#b98326", color: "#fff", borderColor: "transparent"}},
|
||||
cancelButtonProps: {style: {color: "#fff", backgroundColor: "#31aab0", borderColor: "transparent"}},
|
||||
onOk() {
|
||||
console.log('Cancel');
|
||||
},
|
||||
onCancel() {
|
||||
if (_this.fileName) {
|
||||
let params = {
|
||||
sampleId,
|
||||
fileName
|
||||
}
|
||||
getFileAction('/gamma/exportQCResult', params).then(res => {
|
||||
if (res.code && res.code == 500) {
|
||||
this.$message.warning("This operation fails. Contact your system administrator")
|
||||
} else {
|
||||
const blob = new Blob([res], { type: "application/vnd.ms-excel" })
|
||||
saveAs(blob, `${_this.fileName}`)
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
});
|
||||
} else {
|
||||
this.$message.warning("No downloadable data")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
<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" @click="handleCellClick">
|
||||
{{ value || ' ' }}
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
text: String,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
value: this.text,
|
||||
editable: false,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
handleCellClick() {
|
||||
console.log("点击单元格");
|
||||
this.editable = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.myInput.focus()
|
||||
this.$refs.myInput.select()
|
||||
})
|
||||
},
|
||||
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;
|
||||
}
|
||||
</style>
|
|
@ -6,52 +6,61 @@
|
|||
|
||||
<script>
|
||||
import TableWithOperators from './TableWithOperators.vue'
|
||||
import { cloneDeep } from 'lodash'
|
||||
const columns = [
|
||||
{
|
||||
title: 'Index',
|
||||
dataIndex: 'key',
|
||||
align: 'center',
|
||||
align: 'left',
|
||||
customRender: (text,record,index) => `${index+1}`,//此处为重点
|
||||
},
|
||||
{
|
||||
title: 'Energy(keV)',
|
||||
dataIndex: 'energy',
|
||||
align: 'center'
|
||||
align: 'left',
|
||||
scopedSlots: { customRender: 'energy' }
|
||||
},
|
||||
{
|
||||
title: 'Energy_err(%)',
|
||||
dataIndex: 'energyErr',
|
||||
align: 'center'
|
||||
align: 'left',
|
||||
scopedSlots: { customRender: 'energyErr' },
|
||||
},
|
||||
{
|
||||
title: 'Net Area',
|
||||
dataIndex: 'netArea',
|
||||
align: 'center'
|
||||
align: 'left',
|
||||
scopedSlots: { customRender: 'netArea' },
|
||||
},
|
||||
{
|
||||
title: 'Area_err(%)',
|
||||
dataIndex: 'areaErr',
|
||||
align: 'center'
|
||||
align: 'left',
|
||||
scopedSlots: { customRender: 'areaErr' },
|
||||
},
|
||||
{
|
||||
title: 'NetCountRate',
|
||||
dataIndex: 'netCountRate',
|
||||
align: 'center'
|
||||
align: 'left',
|
||||
scopedSlots: { customRender: 'netCountRate' },
|
||||
},
|
||||
{
|
||||
title: 'NCRate_err(%)',
|
||||
dataIndex: 'ncRateErr',
|
||||
align: 'center'
|
||||
align: 'left',
|
||||
scopedSlots: { customRender: 'ncRateErr' },
|
||||
},
|
||||
{
|
||||
title: 'LC',
|
||||
dataIndex: 'lc',
|
||||
align: 'center'
|
||||
align: 'left',
|
||||
scopedSlots: { customRender: 'lc' },
|
||||
},
|
||||
{
|
||||
title: 'Significance',
|
||||
dataIndex: 'significance',
|
||||
align: 'center'
|
||||
align: 'left',
|
||||
scopedSlots: { customRender: 'significance' },
|
||||
}
|
||||
]
|
||||
|
||||
|
@ -60,18 +69,22 @@ export default {
|
|||
TableWithOperators
|
||||
},
|
||||
props: {
|
||||
allData: {
|
||||
type: Object,
|
||||
default: ()=>{}
|
||||
tableData: {
|
||||
type: Array,
|
||||
default: ()=>[]
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
allData: {
|
||||
handler(val) {
|
||||
tableData: {
|
||||
handler(val, old) {
|
||||
console.log(val);
|
||||
this.list = cloneDeep(val)
|
||||
this.list.forEach((item, index) => {
|
||||
item.id = this.guid()
|
||||
})
|
||||
},
|
||||
deep: true,
|
||||
immediate:true
|
||||
immediate: true,
|
||||
deep:true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
|
@ -80,8 +93,14 @@ export default {
|
|||
list: []
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.list = this.allData.peakFit
|
||||
methods: {
|
||||
guid() {
|
||||
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
||||
var r = Math.random() * 16 | 0,
|
||||
v = c == 'x' ? r : (r & 0x3 | 0x8);
|
||||
return v.toString(16);
|
||||
});
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -1,57 +1,34 @@
|
|||
<template>
|
||||
<div>
|
||||
<div class="operators">
|
||||
<a-button type="primary">Insert Before</a-button>
|
||||
<a-button type="primary">Insert After</a-button>
|
||||
<a-button type="primary">Delete</a-button>
|
||||
<a-button type="primary" @click="insertBefore">Insert Before</a-button>
|
||||
<a-button type="primary" @click="insertAfter">Insert After</a-button>
|
||||
<a-button type="primary" @click="handleDelete">Delete</a-button>
|
||||
</div>
|
||||
<a-table
|
||||
size="small"
|
||||
:class="list.length ? 'has-data' : ''"
|
||||
:rowKey="(record, index) => { return record.id }"
|
||||
:class="dataSource.length ? 'has-data' : ''"
|
||||
:columns="columns"
|
||||
:dataSource="list"
|
||||
:dataSource="dataSource"
|
||||
:pagination="false"
|
||||
:scroll="{ y: 470 }"
|
||||
:customRow="customRow"
|
||||
>
|
||||
</a-table>
|
||||
<template v-for="col in columns" :slot="col.dataIndex" slot-scope="text, record">
|
||||
<editable-cell :text="text" :key="col.id" @change="onCellChange(record.id, col.dataIndex, $event)" />
|
||||
</template>
|
||||
</a-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
const columns = [
|
||||
{
|
||||
title: 'Nuclide1',
|
||||
dataIndex: 'nuclide1',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: 'Nuclide2',
|
||||
dataIndex: 'nuclide2',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: 'Ratio',
|
||||
dataIndex: 'ratio',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: 'Ratio_err(%)',
|
||||
dataIndex: 'ratioErr',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: 'Reference Time',
|
||||
dataIndex: 'referenceTime',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: 'Zero Time',
|
||||
dataIndex: 'zeroTime',
|
||||
align: 'center'
|
||||
}
|
||||
]
|
||||
import EditableCell from './EditableCell.vue';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
EditableCell,
|
||||
},
|
||||
props: {
|
||||
columns: {
|
||||
type: Array,
|
||||
|
@ -61,7 +38,141 @@ export default {
|
|||
type: Array,
|
||||
required: true
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
selectedKey: "",
|
||||
dataSource: this.list,
|
||||
isEmpty:false
|
||||
}
|
||||
},
|
||||
// mounted() {
|
||||
// this.dataSource.forEach((item, index) => {
|
||||
// item.id = this.guid()
|
||||
// })
|
||||
// },
|
||||
methods: {
|
||||
guid() {
|
||||
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
||||
var r = Math.random() * 16 | 0,
|
||||
v = c == 'x' ? r : (r & 0x3 | 0x8);
|
||||
return v.toString(16);
|
||||
});
|
||||
},
|
||||
// 实现单击选中/反选功能
|
||||
customRow(record, index) {
|
||||
const that = this;
|
||||
return {
|
||||
class: that.selectedKey==record.id ? 'ant-table-row-selected' : '',
|
||||
on: {
|
||||
click: () => {
|
||||
console.log("选中行",record.id);
|
||||
that.selectedKey = record.id
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
initList() {
|
||||
let arr = []
|
||||
let keys = 0
|
||||
this.dataSource.forEach((item,index) => {
|
||||
let num = 0
|
||||
keys=Object.keys(item).length
|
||||
Object.keys(item).forEach(key => {
|
||||
if (item[key]!=="") {
|
||||
num++
|
||||
}
|
||||
})
|
||||
arr[index] = num
|
||||
})
|
||||
let idx = arr.findIndex(cont => {
|
||||
return cont!==keys
|
||||
})
|
||||
if (idx>-1) {
|
||||
this.isEmpty = true
|
||||
} else {
|
||||
this.isEmpty = false
|
||||
}
|
||||
sessionStorage.setItem("isCellEmpty",this.isEmpty)
|
||||
},
|
||||
insertBefore() {
|
||||
this.initList()
|
||||
if (this.isEmpty) {
|
||||
this.$message.warning("Please finishi ti edit new inserted row first.")
|
||||
} else {
|
||||
let obj = {
|
||||
id: this.guid(),
|
||||
energy: "",
|
||||
energyErr: "",
|
||||
netArea: "",
|
||||
areaErr: "",
|
||||
netCountRate: "",
|
||||
ncRateErr: "",
|
||||
lc: "",
|
||||
significance: ""
|
||||
}
|
||||
if (this.selectedKey) {
|
||||
let idx = this.dataSource.findIndex(item => {
|
||||
return item.id === this.selectedKey
|
||||
})
|
||||
this.dataSource.splice(idx, 0, obj)
|
||||
} else {
|
||||
this.dataSource.unshift(obj)
|
||||
}
|
||||
sessionStorage.setItem("isCellEmpty",true)
|
||||
this.selectedKey = obj.id
|
||||
}
|
||||
},
|
||||
insertAfter() {
|
||||
if (this.isEmpty) {
|
||||
this.$message.warning("Please finishi ti edit new inserted row first.")
|
||||
} else {
|
||||
let obj = {
|
||||
id:this.guid(),
|
||||
energy: "",
|
||||
energyErr: "",
|
||||
netArea: "",
|
||||
areaErr: "",
|
||||
netCountRate: "",
|
||||
ncRateErr: "",
|
||||
lc: "",
|
||||
significance: ""
|
||||
}
|
||||
if (this.selectedKey) {
|
||||
let idx = this.dataSource.findIndex(item => {
|
||||
return item.id === this.selectedKey
|
||||
})
|
||||
this.dataSource.splice(idx+1, 0, obj)
|
||||
} else {
|
||||
this.dataSource.push(obj)
|
||||
}
|
||||
sessionStorage.setItem("isCellEmpty",true)
|
||||
this.selectedKey = obj.id
|
||||
}
|
||||
},
|
||||
handleDelete() {
|
||||
console.log("this.selectedKey", this.selectedKey);
|
||||
if (this.selectedKey) {
|
||||
let idx = this.dataSource.findIndex(item => {
|
||||
return item.id === this.selectedKey
|
||||
})
|
||||
this.dataSource.splice(idx, 1)
|
||||
this.initList()
|
||||
} else {
|
||||
this.$message.warning("Please select the data you want to delete.")
|
||||
}
|
||||
this.selectedKey = ""
|
||||
},
|
||||
onCellChange(id, dataIndex, value) {
|
||||
const dataSource = [...this.dataSource];
|
||||
const target = dataSource.find(item => item.id === id);
|
||||
if (target) {
|
||||
target[dataIndex] = value;
|
||||
this.dataSource = dataSource;
|
||||
}
|
||||
this.initList()
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<template>
|
||||
<custom-modal v-model="visible" :width="1280" title="Mini Radionuclide Laboratory Reports" :destroyOnClose="true">
|
||||
<custom-modal v-model="visible" :width="1280" title="Mini Radionuclide Laboratory Reports" :destroyOnClose="true" @cancel="handleCancel">
|
||||
<a-spin :spinning="isLoading">
|
||||
<div class="rlr">
|
||||
<div class="rlr-tabs">
|
||||
|
@ -8,7 +8,7 @@
|
|||
:class="activeKey == index ? 'active' : ''"
|
||||
v-for="(tab, index) in tabs"
|
||||
:key="index"
|
||||
@click="activeKey = index"
|
||||
@click="handleChangeView(index)"
|
||||
>
|
||||
{{ tab }}
|
||||
</div>
|
||||
|
@ -35,7 +35,7 @@
|
|||
<peaks-method :allData="allInfo" />
|
||||
</template>
|
||||
<template v-if="activeKey == 6">
|
||||
<peak-fit :allData="allInfo" />
|
||||
<peak-fit :tableData="allInfo.peakFit" />
|
||||
</template>
|
||||
<template v-if="activeKey == 7">
|
||||
<g-analysis-methods :allData="allInfo" />
|
||||
|
@ -68,6 +68,12 @@
|
|||
</div>
|
||||
</div>
|
||||
</a-spin>
|
||||
<div slot="custom-footer" style="text-align: center;">
|
||||
<a-space :size="20">
|
||||
<a-button type="primary" @click="handleSave">Save</a-button>
|
||||
<a-button @click="handleCancel">Cancel</a-button>
|
||||
</a-space>
|
||||
</div>
|
||||
</custom-modal>
|
||||
</template>
|
||||
|
||||
|
@ -90,6 +96,7 @@ import Mda from './components/MDA.vue'
|
|||
import Conclusions from './components/Conclusions.vue'
|
||||
import Comment from './components/Comment.vue'
|
||||
import { getAction } from '@/api/manage'
|
||||
import Custom from '@/views/account/settings/Custom.vue'
|
||||
import SampleDataMixin from '@/views/spectrumAnalysis/SampleDataMixin'
|
||||
|
||||
const tabs = [
|
||||
|
@ -129,7 +136,8 @@ export default {
|
|||
GCoincidenceCorrection,
|
||||
Mda,
|
||||
Conclusions,
|
||||
Comment
|
||||
Comment,
|
||||
Custom
|
||||
},
|
||||
data() {
|
||||
this.tabs = tabs
|
||||
|
@ -139,7 +147,30 @@ export default {
|
|||
allInfo: {}
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
sessionStorage.removeItem("isCellEmpty")
|
||||
},
|
||||
methods: {
|
||||
handleSave() {
|
||||
let val = sessionStorage.getItem("isCellEmpty")
|
||||
if (val=="false") {
|
||||
this.visible = false
|
||||
} else {
|
||||
this.$message.warning("Please finishi ti edit new inserted row first.")
|
||||
}
|
||||
},
|
||||
handleCancel() {
|
||||
this.visible = false
|
||||
sessionStorage.removeItem("isCellEmpty")
|
||||
},
|
||||
handleChangeView(index) {
|
||||
let val = sessionStorage.getItem("isCellEmpty")
|
||||
if (val=="false"||!val) {
|
||||
this.activeKey = index
|
||||
} else {
|
||||
this.$message.warning("Please finishi ti edit new inserted row first.")
|
||||
}
|
||||
},
|
||||
beforeModalOpen() {
|
||||
this.activeKey = 0
|
||||
this.getGammaViewRLR();
|
||||
|
@ -202,4 +233,7 @@ export default {
|
|||
}
|
||||
}
|
||||
}
|
||||
/deep/.ant-modal-title{
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
</a-spin>
|
||||
<div slot="custom-footer" style="text-align: center;">
|
||||
<a-space :size="20">
|
||||
<a-button type="primary">Export to Excel</a-button>
|
||||
<a-button type="primary" @click="handleExportToExcel">Export to Excel</a-button>
|
||||
<a-button @click="visible = false">Close</a-button>
|
||||
</a-space>
|
||||
</div>
|
||||
|
@ -23,8 +23,9 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction } from '@/api/manage'
|
||||
import { getAction, getFileAction } from '@/api/manage'
|
||||
import ModalMixin from '@/mixins/ModalMixin'
|
||||
import { saveAs } from 'file-saver';
|
||||
import SampleDataMixin from '../../SampleDataMixin'
|
||||
|
||||
const columns = [
|
||||
|
@ -92,7 +93,8 @@ export default {
|
|||
this.columns = columns
|
||||
return {
|
||||
isLoading: false,
|
||||
data: {}
|
||||
data: {},
|
||||
fileName: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
@ -120,6 +122,43 @@ export default {
|
|||
beforeModalOpen() {
|
||||
this.data = {}
|
||||
this.getInfo()
|
||||
},
|
||||
// 导出到Excel
|
||||
handleExportToExcel() {
|
||||
this.fileName = ""
|
||||
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||
if (Object.keys(this.data).length > 0) {
|
||||
let _this = this
|
||||
this.$confirm({
|
||||
title: 'Please enter file name',
|
||||
content: h => <a-input v-model={_this.fileName} />,
|
||||
okText: 'Cancle',
|
||||
cancelText: 'Save',
|
||||
okButtonProps: {style: {backgroundColor: "#b98326", color: "#fff", borderColor: "transparent"}},
|
||||
cancelButtonProps: {style: {color: "#fff", backgroundColor: "#31aab0", borderColor: "transparent"}},
|
||||
onOk() {
|
||||
console.log('Cancel');
|
||||
},
|
||||
onCancel() {
|
||||
if (_this.fileName) {
|
||||
let params = {
|
||||
sampleId,
|
||||
fileName
|
||||
}
|
||||
getFileAction('/gamma/exportSampleInformation', params).then(res => {
|
||||
if (res.code && res.code == 500) {
|
||||
this.$message.warning("This operation fails. Contact your system administrator")
|
||||
} else {
|
||||
const blob = new Blob([res], { type: "application/vnd.ms-excel" })
|
||||
saveAs(blob, `${_this.fileName}`)
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
});
|
||||
} else {
|
||||
this.$message.warning("No downloadable data")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
<template>
|
||||
<label class="file-select">
|
||||
<input type="file" @change="handleFileChange" accept=".phd, .PHD" />
|
||||
<!-- <input type="file" @change="handleFileChange" @click="handleFileSelect" accept=".phd, .PHD" /> -->
|
||||
<input @click="handleFileSelect" />
|
||||
<!-- <div @click="handleFileSelect"></div> -->
|
||||
<div class="file-name">
|
||||
<slot />
|
||||
</div>
|
||||
|
@ -16,6 +18,10 @@ export default {
|
|||
this.$emit('change', file)
|
||||
}
|
||||
e.target.value = ''
|
||||
},
|
||||
handleFileSelect() {
|
||||
console.log("dsfasdf");
|
||||
this.$emit("select")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,7 +31,8 @@
|
|||
|
||||
<script>
|
||||
import ModalMixin from '@/mixins/ModalMixin'
|
||||
import { getAction } from '@/api/manage'
|
||||
import { getAction, getFileAction } from '@/api/manage'
|
||||
import { saveAs } from 'file-saver';
|
||||
import SampleDataMixin from '../SampleDataMixin'
|
||||
|
||||
const columns = [
|
||||
|
@ -88,7 +89,8 @@ export default {
|
|||
list: [],
|
||||
compareList: [],
|
||||
compareVisible: false, // 是否显示比较
|
||||
isLoading: false
|
||||
isLoading: false,
|
||||
fileName: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
@ -123,7 +125,42 @@ export default {
|
|||
},
|
||||
|
||||
// 导出到Excel
|
||||
handleExportToExcel() {}
|
||||
handleExportToExcel() {
|
||||
this.fileName = ""
|
||||
const { sampleId, inputFileName: fileName } = this.sampleData
|
||||
if (this.list.length > 0) {
|
||||
let _this = this
|
||||
this.$confirm({
|
||||
title: 'Please enter file name',
|
||||
content: h => <a-input v-model={_this.fileName} />,
|
||||
okText: 'Cancle',
|
||||
cancelText: 'Save',
|
||||
okButtonProps: {style: {backgroundColor: "#b98326", color: "#fff", borderColor: "transparent"}},
|
||||
cancelButtonProps: {style: {color: "#fff", backgroundColor: "#31aab0", borderColor: "transparent"}},
|
||||
onOk() {
|
||||
console.log('Cancel');
|
||||
},
|
||||
onCancel() {
|
||||
if (_this.fileName) {
|
||||
let params = {
|
||||
sampleId,
|
||||
fileName
|
||||
}
|
||||
getFileAction('/gamma/exportPeakInformation', params).then(res => {
|
||||
if (res.code && res.code == 500) {
|
||||
this.$message.warning("This operation fails. Contact your system administrator")
|
||||
} else {
|
||||
const blob = new Blob([res], { type: "application/vnd.ms-excel" })
|
||||
saveAs(blob, `${_this.fileName}`)
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
});
|
||||
} else {
|
||||
this.$message.warning("No downloadable data")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
<!-- 从数据库加载结束 -->
|
||||
|
||||
<!-- 从文件加载开始 -->
|
||||
<load-from-file-modal v-model="loadFromFileModalVisible" />
|
||||
<load-from-file-modal v-model="loadFromFileModalVisible" @loadFormFile="handleLoadSampleFromFile" />
|
||||
<!-- 从文件加载结束 -->
|
||||
|
||||
<!-- Strip 弹窗开始 -->
|
||||
|
@ -383,6 +383,19 @@ export default {
|
|||
const willAddList = sampleList.filter(item => !ids.includes(item.sampleId))
|
||||
this.sampleList = this.sampleList.concat(willAddList)
|
||||
},
|
||||
handleLoadSampleFromFile(sampleList) {
|
||||
let arr = sampleList.filter(item => {
|
||||
return Object.keys(item).length>4
|
||||
})
|
||||
arr.forEach(item => {
|
||||
item.sampleId = ""
|
||||
item.inputFileName = item.sampleFileName
|
||||
item.sampleType = item.sampleSystemType
|
||||
})
|
||||
const names = this.sampleList.map(item => item.inputFileName) // 当前Sample列表中的所有id
|
||||
const willAddList = arr.filter(item => !names.includes(item.inputFileName))
|
||||
this.sampleList = this.sampleList.concat(willAddList)
|
||||
},
|
||||
|
||||
// 加载选中的样本
|
||||
async loadSelectedSample(sample) {
|
||||
|
@ -899,7 +912,7 @@ export default {
|
|||
type: 'a-menu-item',
|
||||
title: 'Automatic Analysis Log',
|
||||
handler: () => {
|
||||
this.autoAnalysisMogModalType = 1
|
||||
this.autoAnalysisMogModalType = this.isGamma?1:this.isBetaGamma?2:1
|
||||
this.autoAnalysisMogModalVisible = true
|
||||
}
|
||||
},
|
||||
|
|
|
@ -69,6 +69,19 @@ module.exports = {
|
|||
.use()
|
||||
.loader('babel-loader')
|
||||
.end()
|
||||
config.module
|
||||
.rule('ol')
|
||||
.test(/\.js$/)
|
||||
.include
|
||||
.add(resolve('node_modules/ol'))
|
||||
.end()
|
||||
.use()
|
||||
.loader('babel-loader')
|
||||
.options({
|
||||
presets: ['@babel/preset-env'],
|
||||
plugins: ['@babel/plugin-proposal-nullish-coalescing-operator']
|
||||
})
|
||||
.end()
|
||||
},
|
||||
|
||||
css: {
|
||||
|
|
356
yarn.lock
356
yarn.lock
|
@ -312,6 +312,11 @@
|
|||
resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375"
|
||||
integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==
|
||||
|
||||
"@babel/helper-plugin-utils@^7.18.6":
|
||||
version "7.22.5"
|
||||
resolved "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295"
|
||||
integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==
|
||||
|
||||
"@babel/helper-regex@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.4.tgz#59b373daaf3458e5747dece71bbaf45f9676af6d"
|
||||
|
@ -427,6 +432,14 @@
|
|||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
"@babel/plugin-syntax-json-strings" "^7.8.0"
|
||||
|
||||
"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6":
|
||||
version "7.18.6"
|
||||
resolved "https://registry.npmmirror.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1"
|
||||
integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.18.6"
|
||||
"@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
|
||||
|
||||
"@babel/plugin-proposal-object-rest-spread@^7.3.4":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.4.tgz#50129ac216b9a6a55b3853fdd923e74bf553a4c0"
|
||||
|
@ -487,6 +500,13 @@
|
|||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
|
||||
"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
|
||||
version "7.8.3"
|
||||
resolved "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9"
|
||||
integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.8.0"
|
||||
|
||||
"@babel/plugin-syntax-object-rest-spread@^7.2.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0":
|
||||
version "7.8.3"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871"
|
||||
|
@ -821,6 +841,13 @@
|
|||
dependencies:
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@babel/runtime@^7.13.10":
|
||||
version "7.22.11"
|
||||
resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.22.11.tgz#7a9ba3bbe406ad6f9e8dd4da2ece453eb23a77a4"
|
||||
integrity sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.14.0"
|
||||
|
||||
"@babel/template@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278"
|
||||
|
@ -895,10 +922,39 @@
|
|||
cssnano-preset-default "^4.0.0"
|
||||
postcss "^7.0.0"
|
||||
|
||||
"@jeecg/antd-online-mini@3.1.0-beta":
|
||||
version "3.1.0-beta"
|
||||
resolved "https://registry.npmmirror.com/@jeecg/antd-online-mini/-/antd-online-mini-3.1.0-beta.tgz#cf3e254259503405a5e83ffa6775ac9fa02fe74c"
|
||||
integrity sha512-pW0zWzExnxjlC3e7DzGYjQibLU22K/7N0kp1ddJrGgX33Ia/wq7ELOcwn6bLzITD89RcvX1JUW/om+IJ1PxOSw==
|
||||
"@jeecg/antd-online-mini@3.4.3-beta2":
|
||||
version "3.4.3-beta2"
|
||||
resolved "https://registry.npmmirror.com/@jeecg/antd-online-mini/-/antd-online-mini-3.4.3-beta2.tgz#5903547f48a7d51f2df9773b85d25d28807e57ae"
|
||||
integrity sha512-uZLjtQG/vAcBsCEysE1HceUyzwiHwU+JlNzvHxNnenNDHeaawZa9CfILUImNFJ5JQVqE5J11QpQNb6i5Boo3Gw==
|
||||
|
||||
"@mapbox/jsonlint-lines-primitives@~2.0.2":
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmmirror.com/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz#ce56e539f83552b58d10d672ea4d6fc9adc7b234"
|
||||
integrity sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==
|
||||
|
||||
"@mapbox/mapbox-gl-style-spec@^13.23.1":
|
||||
version "13.28.0"
|
||||
resolved "https://registry.npmmirror.com/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.28.0.tgz#2ec226320a0f77856046e000df9b419303a56458"
|
||||
integrity sha512-B8xM7Fp1nh5kejfIl4SWeY0gtIeewbuRencqO3cJDrCHZpaPg7uY+V8abuR+esMeuOjRl5cLhVTP40v+1ywxbg==
|
||||
dependencies:
|
||||
"@mapbox/jsonlint-lines-primitives" "~2.0.2"
|
||||
"@mapbox/point-geometry" "^0.1.0"
|
||||
"@mapbox/unitbezier" "^0.0.0"
|
||||
csscolorparser "~1.0.2"
|
||||
json-stringify-pretty-compact "^2.0.0"
|
||||
minimist "^1.2.6"
|
||||
rw "^1.3.3"
|
||||
sort-object "^0.3.2"
|
||||
|
||||
"@mapbox/point-geometry@^0.1.0":
|
||||
version "0.1.0"
|
||||
resolved "https://registry.npmmirror.com/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz#8a83f9335c7860effa2eeeca254332aa0aeed8f2"
|
||||
integrity sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==
|
||||
|
||||
"@mapbox/unitbezier@^0.0.0":
|
||||
version "0.0.0"
|
||||
resolved "https://registry.npmmirror.com/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz#15651bd553a67b8581fb398810c98ad86a34524e"
|
||||
integrity sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA==
|
||||
|
||||
"@mrmlnc/readdir-enhanced@^2.2.1":
|
||||
version "2.2.1"
|
||||
|
@ -913,6 +969,11 @@
|
|||
resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b"
|
||||
integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==
|
||||
|
||||
"@petamoriken/float16@^3.4.7":
|
||||
version "3.8.3"
|
||||
resolved "https://registry.npmmirror.com/@petamoriken/float16/-/float16-3.8.3.tgz#adf9dcb5d46b5976b347310f22ce247b8bb48ef9"
|
||||
integrity sha512-an2OZ7/6er9Jja8EDUvU/tmtGIutdlb6LwXOwgjzoCjDRAsUd8sRZMBjoPEy78Xa9iOp+Kglk2CHgVwZuZbWbw==
|
||||
|
||||
"@simonwep/pickr@~1.7.0":
|
||||
version "1.7.1"
|
||||
resolved "https://registry.npmjs.org/@simonwep/pickr/-/pickr-1.7.1.tgz#7bdcccca2041967434f9d7e18720e85598601008"
|
||||
|
@ -962,6 +1023,11 @@
|
|||
resolved "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
|
||||
integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==
|
||||
|
||||
"@types/crypto-js@^4.1.1":
|
||||
version "4.1.1"
|
||||
resolved "https://registry.npmmirror.com/@types/crypto-js/-/crypto-js-4.1.1.tgz#602859584cecc91894eb23a4892f38cfa927890d"
|
||||
integrity sha512-BG7fQKZ689HIoc5h+6D2Dgq1fABRa0RbBWKBd9SP/MVRVXROflpm5fhwyATX5duFmbStzyzyycPB8qUYKDH3NA==
|
||||
|
||||
"@types/d3-format@*":
|
||||
version "1.3.1"
|
||||
resolved "https://registry.npmjs.org/@types/d3-format/-/d3-format-1.3.1.tgz#35bf88264bd6bcda39251165bb827f67879c4384"
|
||||
|
@ -3160,6 +3226,11 @@ circular-json@^0.3.1:
|
|||
resolved "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66"
|
||||
integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==
|
||||
|
||||
clamp@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.npmmirror.com/clamp/-/clamp-1.0.1.tgz#66a0e64011816e37196828fdc8c8c147312c8634"
|
||||
integrity sha512-kgMuFyE78OC6Dyu3Dy7vcx4uy97EIbVxJB/B0eJ3bUNAkwdNcxYzgKltnyADiYwsR7SEqkkUPsEUT//OVS6XMA==
|
||||
|
||||
clap@^1.0.9:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz#4f36745b32008492557f46412d66d50cb99bce51"
|
||||
|
@ -3182,6 +3253,11 @@ classnames@^2.2.5:
|
|||
resolved "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce"
|
||||
integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==
|
||||
|
||||
claygl@^1.2.1:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.npmmirror.com/claygl/-/claygl-1.3.0.tgz#7a6e2903210519ac358848f5d78070ed211685f3"
|
||||
integrity sha512-+gGtJjT6SSHD2l2yC3MCubW/sCV40tZuSs5opdtn79vFSGUgp/lH139RNEQ6Jy078/L0aV8odCw8RSrUcMfLaQ==
|
||||
|
||||
clean-css@4.2.x, clean-css@^4.2.3:
|
||||
version "4.2.3"
|
||||
resolved "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78"
|
||||
|
@ -3741,6 +3817,11 @@ crypto-browserify@^3.11.0:
|
|||
randombytes "^2.0.0"
|
||||
randomfill "^1.0.3"
|
||||
|
||||
crypto-js@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf"
|
||||
integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==
|
||||
|
||||
css-color-names@0.0.4, css-color-names@^0.0.4:
|
||||
version "0.0.4"
|
||||
resolved "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
|
||||
|
@ -3862,6 +3943,11 @@ css@^2.0.0:
|
|||
source-map-resolve "^0.5.2"
|
||||
urix "^0.1.0"
|
||||
|
||||
csscolorparser@~1.0.2:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.npmmirror.com/csscolorparser/-/csscolorparser-1.0.3.tgz#b34f391eea4da8f3e98231e2ccd8df9c041f171b"
|
||||
integrity sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==
|
||||
|
||||
cssesc@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
|
||||
|
@ -4560,6 +4646,11 @@ duplexify@^3.4.2, duplexify@^3.6.0:
|
|||
readable-stream "^2.0.0"
|
||||
stream-shift "^1.0.0"
|
||||
|
||||
earcut@^2.2.3:
|
||||
version "2.2.4"
|
||||
resolved "https://registry.npmmirror.com/earcut/-/earcut-2.2.4.tgz#6d02fd4d68160c114825d06890a92ecaae60343a"
|
||||
integrity sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==
|
||||
|
||||
easy-stack@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/easy-stack/-/easy-stack-1.0.0.tgz#12c91b3085a37f0baa336e9486eac4bf94e3e788"
|
||||
|
@ -4573,6 +4664,22 @@ ecc-jsbn@~0.1.1:
|
|||
jsbn "~0.1.0"
|
||||
safer-buffer "^2.1.0"
|
||||
|
||||
echarts-gl@^2.0.9:
|
||||
version "2.0.9"
|
||||
resolved "https://registry.npmmirror.com/echarts-gl/-/echarts-gl-2.0.9.tgz#ee228a6c7520a6fb7bbb71ea94394f3637ade033"
|
||||
integrity sha512-oKeMdkkkpJGWOzjgZUsF41DOh6cMsyrGGXimbjK2l6Xeq/dBQu4ShG2w2Dzrs/1bD27b2pLTGSaUzouY191gzA==
|
||||
dependencies:
|
||||
claygl "^1.2.1"
|
||||
zrender "^5.1.1"
|
||||
|
||||
echarts@^5.4.2:
|
||||
version "5.4.3"
|
||||
resolved "https://registry.npmmirror.com/echarts/-/echarts-5.4.3.tgz#f5522ef24419164903eedcfd2b506c6fc91fb20c"
|
||||
integrity sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==
|
||||
dependencies:
|
||||
tslib "2.3.0"
|
||||
zrender "5.4.4"
|
||||
|
||||
ee-first@1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
|
||||
|
@ -5696,6 +5803,19 @@ gensync@^1.0.0-beta.1:
|
|||
resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269"
|
||||
integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==
|
||||
|
||||
geotiff@^2.0.7:
|
||||
version "2.0.7"
|
||||
resolved "https://registry.npmmirror.com/geotiff/-/geotiff-2.0.7.tgz#358e578233af70bfb0b4dee62d599ad78fc5cfca"
|
||||
integrity sha512-FKvFTNowMU5K6lHYY2f83d4lS2rsCNdpUC28AX61x9ZzzqPNaWFElWv93xj0eJFaNyOYA63ic5OzJ88dHpoA5Q==
|
||||
dependencies:
|
||||
"@petamoriken/float16" "^3.4.7"
|
||||
lerc "^3.0.0"
|
||||
pako "^2.0.4"
|
||||
parse-headers "^2.0.2"
|
||||
quick-lru "^6.1.1"
|
||||
web-worker "^1.2.0"
|
||||
xml-utils "^1.0.2"
|
||||
|
||||
get-caller-file@^1.0.1:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
|
||||
|
@ -6224,6 +6344,11 @@ icss-utils@^2.1.0:
|
|||
dependencies:
|
||||
postcss "^6.0.1"
|
||||
|
||||
ieee754@^1.1.12:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
|
||||
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
|
||||
|
||||
ieee754@^1.1.4:
|
||||
version "1.1.13"
|
||||
resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
|
||||
|
@ -6254,6 +6379,11 @@ image-size@~0.5.0:
|
|||
resolved "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
|
||||
integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=
|
||||
|
||||
immediate@~3.0.5:
|
||||
version "3.0.6"
|
||||
resolved "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
|
||||
integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==
|
||||
|
||||
import-cwd@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9"
|
||||
|
@ -6947,6 +7077,11 @@ json-stable-stringify-without-jsonify@^1.0.1:
|
|||
resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
|
||||
integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
|
||||
|
||||
json-stringify-pretty-compact@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmmirror.com/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz#e77c419f52ff00c45a31f07f4c820c2433143885"
|
||||
integrity sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ==
|
||||
|
||||
json-stringify-safe@~5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
|
||||
|
@ -7007,6 +7142,16 @@ jsprim@^1.2.2:
|
|||
json-schema "0.2.3"
|
||||
verror "1.10.0"
|
||||
|
||||
jszip@^3.10.1:
|
||||
version "3.10.1"
|
||||
resolved "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2"
|
||||
integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==
|
||||
dependencies:
|
||||
lie "~3.3.0"
|
||||
pako "~1.0.2"
|
||||
readable-stream "~2.3.6"
|
||||
setimmediate "^1.0.5"
|
||||
|
||||
killable@^1.0.0, killable@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
|
||||
|
@ -7063,6 +7208,11 @@ lcid@^1.0.0:
|
|||
dependencies:
|
||||
invert-kv "^1.0.0"
|
||||
|
||||
lerc@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.npmmirror.com/lerc/-/lerc-3.0.0.tgz#36f36fbd4ba46f0abf4833799fff2e7d6865f5cb"
|
||||
integrity sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww==
|
||||
|
||||
less-loader@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.npmjs.org/less-loader/-/less-loader-4.1.0.tgz#2c1352c5b09a4f84101490274fd51674de41363e"
|
||||
|
@ -7097,6 +7247,13 @@ levn@^0.3.0, levn@~0.3.0:
|
|||
prelude-ls "~1.1.2"
|
||||
type-check "~0.3.2"
|
||||
|
||||
lie@~3.3.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a"
|
||||
integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==
|
||||
dependencies:
|
||||
immediate "~3.0.5"
|
||||
|
||||
lines-and-columns@^1.1.6:
|
||||
version "1.1.6"
|
||||
resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
|
||||
|
@ -7306,6 +7463,11 @@ lodash.restparam@^3.0.0:
|
|||
resolved "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
|
||||
integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=
|
||||
|
||||
lodash.throttle@^4.0.0:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.npmmirror.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
|
||||
integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==
|
||||
|
||||
lodash.toarray@^4.4.0:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561"
|
||||
|
@ -7424,6 +7586,16 @@ map-visit@^1.0.0:
|
|||
dependencies:
|
||||
object-visit "^1.0.0"
|
||||
|
||||
mapbox-to-css-font@^2.4.1:
|
||||
version "2.4.2"
|
||||
resolved "https://registry.npmmirror.com/mapbox-to-css-font/-/mapbox-to-css-font-2.4.2.tgz#a9e31b363ad8ca881cd339ca99f2d2a6b02ea5dd"
|
||||
integrity sha512-f+NBjJJY4T3dHtlEz1wCG7YFlkODEjFIYlxDdLIDMNpkSksqTt+l/d4rjuwItxuzkuMFvPyrjzV2lxRM4ePcIA==
|
||||
|
||||
material-colors@^1.0.0:
|
||||
version "1.2.6"
|
||||
resolved "https://registry.npmmirror.com/material-colors/-/material-colors-1.2.6.tgz#6d1958871126992ceecc72f4bcc4d8f010865f46"
|
||||
integrity sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==
|
||||
|
||||
math-expression-evaluator@^1.2.14:
|
||||
version "1.2.22"
|
||||
resolved "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.22.tgz#c14dcb3d8b4d150e5dcea9c68c8dad80309b0d5e"
|
||||
|
@ -7619,6 +7791,11 @@ minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.5:
|
|||
resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602"
|
||||
integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
|
||||
|
||||
minimist@^1.2.6:
|
||||
version "1.2.8"
|
||||
resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
|
||||
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
|
||||
|
||||
minipass-collect@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617"
|
||||
|
@ -8074,6 +8251,26 @@ obuf@^1.0.0, obuf@^1.1.2:
|
|||
resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
|
||||
integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
|
||||
|
||||
ol-mapbox-style@^10.1.0:
|
||||
version "10.7.0"
|
||||
resolved "https://registry.npmmirror.com/ol-mapbox-style/-/ol-mapbox-style-10.7.0.tgz#8837912da2a16fbd22992d76cbc4f491c838b973"
|
||||
integrity sha512-S/UdYBuOjrotcR95Iq9AejGYbifKeZE85D9VtH11ryJLQPTZXZSW1J5bIXcr4AlAH6tyjPPHTK34AdkwB32Myw==
|
||||
dependencies:
|
||||
"@mapbox/mapbox-gl-style-spec" "^13.23.1"
|
||||
mapbox-to-css-font "^2.4.1"
|
||||
ol "^7.3.0"
|
||||
|
||||
ol@^7.3.0, ol@^7.4.0:
|
||||
version "7.5.1"
|
||||
resolved "https://registry.npmmirror.com/ol/-/ol-7.5.1.tgz#76e7a8b2cabf36124ce3123d22af08e7c4e86087"
|
||||
integrity sha512-CFXDhO8YdQt7I+zwrGYSONo/ZM2oLr7vUvxqpLEUyy+USaQjUeE8L6FBOWIPboopGVhnSVYd5hdEirn9ifKBZQ==
|
||||
dependencies:
|
||||
earcut "^2.2.3"
|
||||
geotiff "^2.0.7"
|
||||
ol-mapbox-style "^10.1.0"
|
||||
pbf "3.2.1"
|
||||
rbush "^3.0.1"
|
||||
|
||||
omit.js@^1.0.0:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.npmjs.org/omit.js/-/omit.js-1.0.2.tgz#91a14f0eba84066dfa015bf30e474c47f30bc858"
|
||||
|
@ -8274,7 +8471,12 @@ p-try@^2.0.0:
|
|||
resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
|
||||
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
|
||||
|
||||
pako@~1.0.5:
|
||||
pako@^2.0.4:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.npmmirror.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86"
|
||||
integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==
|
||||
|
||||
pako@~1.0.2, pako@~1.0.5:
|
||||
version "1.0.11"
|
||||
resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
|
||||
integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
|
||||
|
@ -8322,6 +8524,11 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5:
|
|||
pbkdf2 "^3.0.3"
|
||||
safe-buffer "^5.1.1"
|
||||
|
||||
parse-headers@^2.0.2:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.npmmirror.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9"
|
||||
integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==
|
||||
|
||||
parse-json@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
|
||||
|
@ -8462,6 +8669,14 @@ path-type@^3.0.0:
|
|||
dependencies:
|
||||
pify "^3.0.0"
|
||||
|
||||
pbf@3.2.1:
|
||||
version "3.2.1"
|
||||
resolved "https://registry.npmmirror.com/pbf/-/pbf-3.2.1.tgz#b4c1b9e72af966cd82c6531691115cc0409ffe2a"
|
||||
integrity sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==
|
||||
dependencies:
|
||||
ieee754 "^1.1.12"
|
||||
resolve-protobuf-schema "^2.1.0"
|
||||
|
||||
pbkdf2@^3.0.3:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94"
|
||||
|
@ -9242,6 +9457,11 @@ promise@^7.1.1:
|
|||
dependencies:
|
||||
asap "~2.0.3"
|
||||
|
||||
protocol-buffers-schema@^3.3.1:
|
||||
version "3.6.0"
|
||||
resolved "https://registry.npmmirror.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz#77bc75a48b2ff142c1ad5b5b90c94cd0fa2efd03"
|
||||
integrity sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==
|
||||
|
||||
proxy-addr@~2.0.5:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf"
|
||||
|
@ -9366,6 +9586,16 @@ querystringify@^2.1.1:
|
|||
resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e"
|
||||
integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==
|
||||
|
||||
quick-lru@^6.1.1:
|
||||
version "6.1.1"
|
||||
resolved "https://registry.npmmirror.com/quick-lru/-/quick-lru-6.1.1.tgz#f8e5bf9010376c126c80c1a62827a526c0e60adf"
|
||||
integrity sha512-S27GBT+F0NTRiehtbrgaSE1idUAJ5bX8dPAQTdylEyNlrdcH5X4Lz7Edz3DYzecbsCluD5zO8ZNEe04z3D3u6Q==
|
||||
|
||||
quickselect@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmmirror.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018"
|
||||
integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==
|
||||
|
||||
raf@^3.4.0:
|
||||
version "3.4.1"
|
||||
resolved "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39"
|
||||
|
@ -9403,6 +9633,13 @@ raw-body@2.4.0:
|
|||
iconv-lite "0.4.24"
|
||||
unpipe "1.0.0"
|
||||
|
||||
rbush@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.npmmirror.com/rbush/-/rbush-3.0.1.tgz#5fafa8a79b3b9afdfe5008403a720cc1de882ecf"
|
||||
integrity sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==
|
||||
dependencies:
|
||||
quickselect "^2.0.0"
|
||||
|
||||
read-pkg-up@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
|
||||
|
@ -9531,6 +9768,11 @@ regenerator-runtime@^0.13.4:
|
|||
resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697"
|
||||
integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==
|
||||
|
||||
regenerator-runtime@^0.14.0:
|
||||
version "0.14.0"
|
||||
resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45"
|
||||
integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==
|
||||
|
||||
regenerator-transform@^0.10.0:
|
||||
version "0.10.1"
|
||||
resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd"
|
||||
|
@ -9773,6 +10015,13 @@ resolve-from@^4.0.0:
|
|||
resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
|
||||
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
|
||||
|
||||
resolve-protobuf-schema@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.npmmirror.com/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz#9ca9a9e69cf192bbdaf1006ec1973948aa4a3758"
|
||||
integrity sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==
|
||||
dependencies:
|
||||
protocol-buffers-schema "^3.3.1"
|
||||
|
||||
resolve-url-loader@^2.1.1:
|
||||
version "2.3.2"
|
||||
resolved "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-2.3.2.tgz#83bb9ebc392b66c563795eef22f078970357a26e"
|
||||
|
@ -9898,7 +10147,7 @@ run-queue@^1.0.0, run-queue@^1.0.3:
|
|||
dependencies:
|
||||
aproba "^1.1.1"
|
||||
|
||||
rw@1, rw@^1.3.2:
|
||||
rw@1, rw@^1.3.2, rw@^1.3.3:
|
||||
version "1.3.3"
|
||||
resolved "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4"
|
||||
integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q=
|
||||
|
@ -9982,6 +10231,11 @@ schema-utils@^2.6.1, schema-utils@^2.6.5:
|
|||
ajv "^6.12.2"
|
||||
ajv-keywords "^3.4.1"
|
||||
|
||||
scrollparent@^2.0.1:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.npmmirror.com/scrollparent/-/scrollparent-2.1.0.tgz#6cae915c953835886a6ba0d77fdc2bb1ed09076d"
|
||||
integrity sha512-bnnvJL28/Rtz/kz2+4wpBjHzWoEzXhVg/TE8BeVGJHUqE8THNIRnDxDWMktwM+qahvlRdvlLdsQfYe+cuqfZeA==
|
||||
|
||||
select-hose@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
|
||||
|
@ -10083,7 +10337,7 @@ set-value@^2.0.0, set-value@^2.0.1:
|
|||
is-plain-object "^2.0.3"
|
||||
split-string "^3.0.1"
|
||||
|
||||
setimmediate@^1.0.4:
|
||||
setimmediate@^1.0.4, setimmediate@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
|
||||
integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
|
||||
|
@ -10264,6 +10518,16 @@ sockjs@0.3.20:
|
|||
uuid "^3.4.0"
|
||||
websocket-driver "0.6.5"
|
||||
|
||||
sort-asc@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.npmmirror.com/sort-asc/-/sort-asc-0.1.0.tgz#ab799df61fc73ea0956c79c4b531ed1e9e7727e9"
|
||||
integrity sha512-jBgdDd+rQ+HkZF2/OHCmace5dvpos/aWQpcxuyRs9QUbPRnkEJmYVo81PIGpjIdpOcsnJ4rGjStfDHsbn+UVyw==
|
||||
|
||||
sort-desc@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.npmmirror.com/sort-desc/-/sort-desc-0.1.1.tgz#198b8c0cdeb095c463341861e3925d4ee359a9ee"
|
||||
integrity sha512-jfZacW5SKOP97BF5rX5kQfJmRVZP5/adDUTY8fCSPvNcXDVpUEe2pr/iKGlcyZzchRJZrswnp68fgk3qBXgkJw==
|
||||
|
||||
sort-keys@^1.0.0:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
|
||||
|
@ -10271,6 +10535,14 @@ sort-keys@^1.0.0:
|
|||
dependencies:
|
||||
is-plain-obj "^1.0.0"
|
||||
|
||||
sort-object@^0.3.2:
|
||||
version "0.3.2"
|
||||
resolved "https://registry.npmmirror.com/sort-object/-/sort-object-0.3.2.tgz#98e0d199ede40e07c61a84403c61d6c3b290f9e2"
|
||||
integrity sha512-aAQiEdqFTTdsvUFxXm3umdo04J7MRljoVGbBlkH7BgNsMvVNAJyGj7C/wV1A8wHWAJj/YikeZbfuCKqhggNWGA==
|
||||
dependencies:
|
||||
sort-asc "^0.1.0"
|
||||
sort-desc "^0.1.1"
|
||||
|
||||
sortablejs@^1.10.1:
|
||||
version "1.10.2"
|
||||
resolved "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.2.tgz#6e40364d913f98b85a14f6678f92b5c1221f5290"
|
||||
|
@ -10905,6 +11177,11 @@ tiny-emitter@^2.0.0:
|
|||
resolved "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423"
|
||||
integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==
|
||||
|
||||
tinycolor2@^1.1.2:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.npmmirror.com/tinycolor2/-/tinycolor2-1.6.0.tgz#f98007460169b0263b97072c5ae92484ce02d09e"
|
||||
integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==
|
||||
|
||||
tinycolor2@^1.4.1:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8"
|
||||
|
@ -11019,6 +11296,11 @@ tsconfig-paths@^3.9.0:
|
|||
minimist "^1.2.0"
|
||||
strip-bom "^3.0.0"
|
||||
|
||||
tslib@2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e"
|
||||
integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
|
||||
|
||||
tslib@^1.10.0, tslib@^1.9.0:
|
||||
version "1.13.0"
|
||||
resolved "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043"
|
||||
|
@ -11363,6 +11645,16 @@ vue-area-linkage@^5.1.0:
|
|||
dependencies:
|
||||
lodash.find "^4.6.0"
|
||||
|
||||
vue-color@^2.8.1:
|
||||
version "2.8.1"
|
||||
resolved "https://registry.npmmirror.com/vue-color/-/vue-color-2.8.1.tgz#a090f3dcf8ed6f07afdb865cac84b19a73302e70"
|
||||
integrity sha512-BoLCEHisXi2QgwlhZBg9UepvzZZmi4176vbr+31Shen5WWZwSLVgdScEPcB+yrAtuHAz42309C0A4+WiL9lNBw==
|
||||
dependencies:
|
||||
clamp "^1.0.1"
|
||||
lodash.throttle "^4.0.0"
|
||||
material-colors "^1.0.0"
|
||||
tinycolor2 "^1.1.2"
|
||||
|
||||
vue-cropper@^0.5.4:
|
||||
version "0.5.4"
|
||||
resolved "https://registry.npmjs.org/vue-cropper/-/vue-cropper-0.5.4.tgz#0db3776894eea8673a3203a1513882a0eb4558ad"
|
||||
|
@ -11437,6 +11729,11 @@ vue-ls@^3.2.0:
|
|||
resolved "https://registry.npmjs.org/vue-ls/-/vue-ls-3.2.1.tgz#25d1c75b3a51c17018129de607b44bb120a3385a"
|
||||
integrity sha512-JoZDpSu0qV5AM50vspEzOut2lcm8R0tr5WG99jMHh14qFXkUes3ZdmDMG/p8iSQVQpg0pd/svGwM9Nd7OI2oaw==
|
||||
|
||||
vue-observe-visibility@^0.4.4:
|
||||
version "0.4.6"
|
||||
resolved "https://registry.npmmirror.com/vue-observe-visibility/-/vue-observe-visibility-0.4.6.tgz#878cb8ebcf3078e40807af29774e97105ebd519e"
|
||||
integrity sha512-xo0CEVdkjSjhJoDdLSvoZoQrw/H2BlzB5jrCBKGZNXN2zdZgMuZ9BKrxXDjNP2AxlcCoKc8OahI3F3r3JGLv2Q==
|
||||
|
||||
vue-photo-preview@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.npmjs.org/vue-photo-preview/-/vue-photo-preview-1.1.3.tgz#8ee62923e865d3cbaf010b07b0cc841892633028"
|
||||
|
@ -11459,11 +11756,30 @@ vue-photo-preview@^1.1.3:
|
|||
webpack "^3.6.0"
|
||||
webpack-dev-server "^2.9.1"
|
||||
|
||||
vue-print-nb-jeecg@^1.0.12:
|
||||
version "1.0.12"
|
||||
resolved "https://registry.npmmirror.com/vue-print-nb-jeecg/-/vue-print-nb-jeecg-1.0.12.tgz#975e1dac3da8c9736ac81b82a2b099cafe1bb3df"
|
||||
integrity sha512-jHyWm6/TxB1iU2nHL7upQdHVdxb1SJQ9n3XKeYTaruFdbSphLo1vDtTunS2qVCjupk8lui7FlF5rxxSNr0zjZg==
|
||||
dependencies:
|
||||
babel-plugin-transform-runtime "^6.23.0"
|
||||
|
||||
vue-ref@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmjs.org/vue-ref/-/vue-ref-2.0.0.tgz#483084d732abed11da796778a8266a3af0ea1a9c"
|
||||
integrity sha512-uKNKpFOVeWNqS2mrBZqnpLyXJo5Q+vnkex6JvpENvhXHFNBW/SJTP8vJywLuVT3DpxwXcF9N0dyIiZ4/NpTexQ==
|
||||
|
||||
vue-resize@^0.4.5:
|
||||
version "0.4.5"
|
||||
resolved "https://registry.npmmirror.com/vue-resize/-/vue-resize-0.4.5.tgz#4777a23042e3c05620d9cbda01c0b3cc5e32dcea"
|
||||
integrity sha512-bhP7MlgJQ8TIkZJXAfDf78uJO+mEI3CaLABLjv0WNzr4CcGRGPIAItyWYnP6LsPA4Oq0WE+suidNs6dgpO4RHg==
|
||||
|
||||
vue-resize@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.npmmirror.com/vue-resize/-/vue-resize-1.0.1.tgz#c120bed4e09938771d622614f57dbcf58a5147ee"
|
||||
integrity sha512-z5M7lJs0QluJnaoMFTIeGx6dIkYxOwHThlZDeQnWZBizKblb99GSejPnK37ZbNE/rVwDcYcHY+Io+AxdpY952w==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.13.10"
|
||||
|
||||
vue-router@^3.0.1:
|
||||
version "3.3.4"
|
||||
resolved "https://registry.npmjs.org/vue-router/-/vue-router-3.3.4.tgz#4e38abc34a11c41b6c3d8244449a2e363ba6250b"
|
||||
|
@ -11503,6 +11819,15 @@ vue-template-es2015-compiler@^1.6.0, vue-template-es2015-compiler@^1.9.0:
|
|||
resolved "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
|
||||
integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
|
||||
|
||||
vue-virtual-scroller@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.npmmirror.com/vue-virtual-scroller/-/vue-virtual-scroller-1.1.2.tgz#b8a6362f177abf3f2149ce1eac18013c71fe353b"
|
||||
integrity sha512-SkUyc7QHCJFB5h1Fya7LxVizlVzOZZuFVipBGHYoTK8dwLs08bIz/tclvRApYhksaJIm/nn51inzO2UjpGJPMQ==
|
||||
dependencies:
|
||||
scrollparent "^2.0.1"
|
||||
vue-observe-visibility "^0.4.4"
|
||||
vue-resize "^0.4.5"
|
||||
|
||||
vue@^2.4.4, vue@^2.5.17, vue@^2.5.3, vue@^2.6.10:
|
||||
version "2.6.11"
|
||||
resolved "https://registry.npmjs.org/vue/-/vue-2.6.11.tgz#76594d877d4b12234406e84e35275c6d514125c5"
|
||||
|
@ -11569,6 +11894,11 @@ wcwidth@^1.0.1:
|
|||
dependencies:
|
||||
defaults "^1.0.3"
|
||||
|
||||
web-worker@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.npmmirror.com/web-worker/-/web-worker-1.2.0.tgz#5d85a04a7fbc1e7db58f66595d7a3ac7c9c180da"
|
||||
integrity sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==
|
||||
|
||||
webpack-bundle-analyzer@^3.3.0:
|
||||
version "3.8.0"
|
||||
resolved "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.8.0.tgz#ce6b3f908daf069fd1f7266f692cbb3bded9ba16"
|
||||
|
@ -11909,6 +12239,11 @@ xe-utils@2.4.8:
|
|||
resolved "https://registry.yarnpkg.com/xe-utils/-/xe-utils-2.4.8.tgz#0efda3ca81f6b55f68a8a31e276fb17da59c98b3"
|
||||
integrity sha512-/95ZaQK9GJE/EYrpMv9lgKdkEMQwWv4a4TF4dddi4gSzZ33vp/rZvzJNNV9XknaOkMizK9IBSX8CB/nL+SAk0Q==
|
||||
|
||||
xml-utils@^1.0.2:
|
||||
version "1.7.0"
|
||||
resolved "https://registry.npmmirror.com/xml-utils/-/xml-utils-1.7.0.tgz#333ce391d8918f872aaf98d2cf90f9ef9b82bd0f"
|
||||
integrity sha512-bWB489+RQQclC7A9OW8e5BzbT8Tu//jtAOvkYwewFr+Q9T9KDGvfzC1lp0pYPEQPEoPQLDkmxkepSC/2gIAZGw==
|
||||
|
||||
xregexp@^4.2.4:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz#7e92e73d9174a99a59743f67a4ce879a04b5ae50"
|
||||
|
@ -12074,3 +12409,10 @@ yorkie@^2.0.0:
|
|||
is-ci "^1.0.10"
|
||||
normalize-path "^1.0.0"
|
||||
strip-indent "^2.0.0"
|
||||
|
||||
zrender@5.4.4, zrender@^5.1.1:
|
||||
version "5.4.4"
|
||||
resolved "https://registry.npmmirror.com/zrender/-/zrender-5.4.4.tgz#8854f1d95ecc82cf8912f5a11f86657cb8c9e261"
|
||||
integrity sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==
|
||||
dependencies:
|
||||
tslib "2.3.0"
|
||||
|
|
Loading…
Reference in New Issue
Block a user