暂降治理评估微调

This commit is contained in:
2024-04-19 14:56:50 +08:00
parent 444d06ee1a
commit b87a1d3973
3 changed files with 95 additions and 76 deletions

View File

@@ -169,8 +169,8 @@ const tableStore = new TableStore({
delete tableStore.table.params[key]
}
}
sags3DRef.value?.search(userId, tableStore.table.params.searchBeginTime, tableStore.table.params.searchEndTime)
toleranceCurveRef.value?.search(userId, tableStore.table.params.searchBeginTime, tableStore.table.params.searchEndTime)
sags3DRef.value?.search(userId.value, tableStore.table.params.searchBeginTime, tableStore.table.params.searchEndTime)
toleranceCurveRef.value?.search(userId.value, tableStore.table.params.searchBeginTime, tableStore.table.params.searchEndTime)
}
})
// 注入到子组件
@@ -185,10 +185,10 @@ const initData = async () => {
Object.assign(userListData, res.data)
})
userId.value = query.id
tableStore.table.params.userId = userId
tableStore.table.params.userId = userId.value
tableStore.index()
sags3DRef.value?.search(userId, tableStore.table.params.searchBeginTime, tableStore.table.params.searchEndTime)
toleranceCurveRef.value?.search(userId, tableStore.table.params.searchBeginTime, tableStore.table.params.searchEndTime)
sags3DRef.value?.search(userId.value, tableStore.table.params.searchBeginTime, tableStore.table.params.searchEndTime)
toleranceCurveRef.value?.search(userId.value, tableStore.table.params.searchBeginTime, tableStore.table.params.searchEndTime)
}
initData()

View File

@@ -58,11 +58,13 @@
<el-form-item label='上限曲线膝点'>
<div>
<div>
<el-input-number v-model='unit.vtcAmpUpper' controls-position='right' />
<el-input-number v-model='unit.vtcAmpUpper' controls-position='right'
@change='reDrawPic' />
<span class='ml10' style='color: #333'>p.u.</span>
</div>
<div class='mt10'>
<el-input-number v-model='unit.vtcTimeUpper' controls-position='right' />
<el-input-number v-model='unit.vtcTimeUpper' controls-position='right'
@change='reDrawPic' />
<span class='ml10' style='color: #333'>ms</span>
</div>
</div>
@@ -70,11 +72,13 @@
<el-form-item label='下限曲线膝点'>
<div>
<div>
<el-input-number v-model='unit.vtcAmpLower' controls-position='right' />
<el-input-number v-model='unit.vtcAmpLower' controls-position='right'
@change='reDrawPic' />
<span class='ml10' style='color: #333'>p.u.</span>
</div>
<div class='mt10'>
<el-input-number v-model='unit.vtcTimeLower' controls-position='right' />
<el-input-number v-model='unit.vtcTimeLower' controls-position='right'
@change='reDrawPic' />
<span class='ml10' style='color: #333'>ms</span>
</div>
</div>
@@ -124,6 +128,7 @@ const unKnownEvent = ref([])
const overEventColor = ref('#A52a2a')
const unOverEventColor = ref('#61a0a8')
const unKnownEventColor = ref('#d48265')
const eventData = ref()
const search = async (id: string, beginTime: string, endTime: string) => {
// 从父组件tableStore获取参数
searchBeginTime.value = beginTime
@@ -159,13 +164,111 @@ const search = async (id: string, beginTime: string, endTime: string) => {
}
await getEventDataByProductLineId(data).then((res: any) => {
eventData.value = res.data
reDrawPic()
})
}
const options = ref()
const initOptions = () => {
options.value = {
legend: {
data: ['越限事件', '未越限事件', '不确定事件'],
left: '10px'
},
tooltip: {
formatter: function(a: any) {
if (a[0].value[3] == undefined) {
return
}
let relVal = ''
relVal += '<font style=\'color:' + '\'>进线:' + '&nbsp' + '&nbsp' + a[0].value[3] + '</font><br/>'
relVal += '<font style=\'color:' + '\'>发生时刻:' + '&nbsp' + '&nbsp' + a[0].value[2] + '</font><br/>'
relVal += '<font style=\'color:' + '\'>持续时间:' + '&nbsp' + '&nbsp' + a[0].value[0].toFixed(2) + 's</font><br/>'
relVal += '<font style=\'color:' + '\'>特征幅值:' + '&nbsp' + '&nbsp' + a[0].value[1] + 'p.u.</font>'
return relVal
}
},
xAxis: {
name: '持续时间/s',
type: 'log',
min: '0.001',
max: '1000',
splitLine: { show: false }
},
yAxis: {
name: '幅值/p.u.',
max: 1,
min: 0,
splitLine: { show: false }
},
grid: {
right: '78px',
},
series: [
{
type: 'line',
color:'#ff0000',
data: [
[unit.value.vtcTimeUpper / 1000, 0],
[unit.value.vtcTimeUpper / 1000, unit.value.vtcAmpUpper],
[1000, unit.value.vtcAmpUpper]
],
showSymbol: false,
tooltips: {
show: false
}
},
{
type: 'line',
color:'#ff0000',
data: [
[unit.value.vtcTimeLower / 1000, 0],
[unit.value.vtcTimeLower / 1000, unit.value.vtcAmpLower],
[1000, unit.value.vtcAmpLower]
],
showSymbol: false,
tooltips: {
show: false
}
},
{
name: '越限事件',
type: 'scatter',
symbol: 'circle',
data: overEvent.value
},
{
name: '未越限事件',
type: 'scatter',
symbol: 'circle',
data: unOverEvent.value
},
{
name: '不确定事件',
type: 'scatter',
symbol: 'circle',
data: unKnownEvent.value
}
],
options: {
dataZoom: null
}
}
}
const reDrawPic = () => {
//清洗要显示的数据
if (res.data.length > 0) {
for (let event of res.data) {
if (eventData.value.length > 0) {
unOverEvent.value=[]
overEvent.value=[]
unKnownEvent.value=[]
for (let event of eventData.value) {
//判断落在哪个区域内
let eventTime = Number(event.duration) / 1000
let eventAmplitude = Number(event.featureAmplitude)
if (eventTime < Number(unit.value.vtcTimeUpper/1000) || eventAmplitude > Number(unit.value.vtcAmpUpper)) {
if (eventTime < Number(unit.value.vtcTimeUpper / 1000) || eventAmplitude > Number(unit.value.vtcAmpUpper)) {
//未越限
const dataTemp = {
value: [
@@ -181,7 +284,7 @@ const search = async (id: string, beginTime: string, endTime: string) => {
}
}
unOverEvent.value.push(dataTemp)
} else if (eventTime > Number(unit.value.vtcTimeLower/1000) && eventAmplitude < Number(unit.value.vtcAmpLower)) {
} else if (eventTime > Number(unit.value.vtcTimeLower / 1000) && eventAmplitude < Number(unit.value.vtcAmpLower)) {
//故障阶段
const dataTemp = {
value: [
@@ -218,98 +321,10 @@ const search = async (id: string, beginTime: string, endTime: string) => {
}
}
})
//初始化图表
initOptions()
}
const options = ref()
const initOptions = () => {
options.value = {
legend: {
data: ['越限事件', '未越限事件', '不确定事件'],
left: '10px'
},
tooltip: {
formatter: function(a: any) {
if (a[0].value[3] == undefined) {
return
}
let relVal = ''
relVal += '<font style=\'color:' + '\'>进线:' + '&nbsp' + '&nbsp' + a[0].value[3] + '</font><br/>'
relVal += '<font style=\'color:' + '\'>发生时刻:' + '&nbsp' + '&nbsp' + a[0].value[2] + '</font><br/>'
relVal += '<font style=\'color:' + '\'>持续时间:' + '&nbsp' + '&nbsp' + a[0].value[0].toFixed(2) + 's</font><br/>'
relVal += '<font style=\'color:' + '\'>特征幅值:' + '&nbsp' + '&nbsp' + a[0].value[1] + 'p.u.</font>'
return relVal
}
},
xAxis: {
name: '持续时间/s',
type: 'log',
min: '0.001',
max: '1000',
splitLine: { show: false }
},
yAxis: {
name: '幅值/p.u.',
max: 1,
min: 0
},
grid: {
right: '70px'
},
color: ['#ff0000', '#ff0000', '#A52a2a', '#61a0a8', '#d48265'],
series: [
{
type: 'line',
data: [
[unit.value.vtcTimeUpper / 1000, 0],
[unit.value.vtcTimeUpper / 1000, unit.value.vtcAmpUpper],
[1000, unit.value.vtcAmpUpper]
],
showSymbol: false,
tooltips: {
show: false
}
},
{
type: 'line',
data: [
[unit.value.vtcTimeLower / 1000, 0],
[unit.value.vtcTimeLower / 1000, unit.value.vtcAmpLower],
[1000, unit.value.vtcAmpLower]
],
showSymbol: false,
tooltips: {
show: false
}
},
{
name: '越限事件',
type: 'scatter',
symbol: 'circle',
data: overEvent.value
},
{
name: '未越限事件',
type: 'scatter',
symbol: 'circle',
data: unOverEvent.value
},
{
name: '不确定事件',
type: 'scatter',
symbol: 'circle',
data: unKnownEvent.value
}
],
options: {
dataZoom: null
}
}
}
defineExpose({ search })
</script>

View File

@@ -78,8 +78,12 @@ const tableStore = new TableStore({
icon: 'el-icon-EditPen',
render: 'basicButton',
click: row => {
if (Number(row.productCount) < 1) {
ElMessage.error('请创建该用户的生产线')
} else {
push(`/admin/businessUserRouter/eventView?id=${row.id}`)
}
}
},
{