修改冀北现场问题
绘制 算法库 案例库页面 联调 辽宁 有功功率页面
This commit is contained in:
1
src/assets/icons/资料库.svg
Normal file
1
src/assets/icons/资料库.svg
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1725438023954" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4376" xmlns:xlink="http://www.w3.org/1999/xlink" width="48" height="48"><path d="M904 176v112H120V176h784m0-56H120c-30.9 0-56 25.1-56 56v112c0 30.9 25.1 56 56 56h784c30.9 0 56-25.1 56-56V176c0-30.9-25.1-56-56-56z" p-id="4377"></path><path d="M820 232m-28 0a28 28 0 1 0 56 0 28 28 0 1 0-56 0Z" p-id="4378"></path><path d="M708 232m-28 0a28 28 0 1 0 56 0 28 28 0 1 0-56 0Z" p-id="4379"></path><path d="M904 456v112H120V456h784m0-56H120c-30.9 0-56 25.1-56 56v112c0 30.9 25.1 56 56 56h784c30.9 0 56-25.1 56-56V456c0-30.9-25.1-56-56-56z" p-id="4380"></path><path d="M820 512m-28 0a28 28 0 1 0 56 0 28 28 0 1 0-56 0Z" p-id="4381"></path><path d="M596 232m-28 0a28 28 0 1 0 56 0 28 28 0 1 0-56 0Z" p-id="4382"></path><path d="M596 792m-28 0a28 28 0 1 0 56 0 28 28 0 1 0-56 0Z" p-id="4383"></path><path d="M708 512m-28 0a28 28 0 1 0 56 0 28 28 0 1 0-56 0Z" p-id="4384"></path><path d="M904 736v112H120V736h784m0-56H120c-30.9 0-56 25.1-56 56v112c0 30.9 25.1 56 56 56h784c30.9 0 56-25.1 56-56V736c0-30.9-25.1-56-56-56z" p-id="4385"></path><path d="M820 792m-28 0a28 28 0 1 0 56 0 28 28 0 1 0-56 0Z" p-id="4386"></path><path d="M708 792m-28 0a28 28 0 1 0 56 0 28 28 0 1 0-56 0Z" p-id="4387"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
7099
src/assets/map/冀北电力有限公司.json
Normal file
7099
src/assets/map/冀北电力有限公司.json
Normal file
File diff suppressed because it is too large
Load Diff
1
src/assets/map/国家电网公司.json
Normal file
1
src/assets/map/国家电网公司.json
Normal file
File diff suppressed because one or more lines are too long
@@ -5,7 +5,7 @@
|
||||
<div class="bx" id="rms"></div>
|
||||
</div>
|
||||
</div>
|
||||
<el-button
|
||||
<!-- <el-button
|
||||
style="position: absolute; right: 10px; top: 0px; z-index: 20000"
|
||||
type="primary"
|
||||
link
|
||||
@@ -14,7 +14,7 @@
|
||||
@click="download"
|
||||
>
|
||||
下载
|
||||
</el-button>
|
||||
</el-button> -->
|
||||
</div>
|
||||
</template>
|
||||
<script lang="js">
|
||||
@@ -916,7 +916,7 @@ export default {
|
||||
enabled: true,
|
||||
itemDistance: 5,
|
||||
textStyle: {
|
||||
fontSize: "0.6rem",
|
||||
fontSize: "0.7rem",
|
||||
color: _this.DColor ? "#fff" : echartsColor.WordColor,
|
||||
rich: {
|
||||
a: {
|
||||
@@ -1035,7 +1035,7 @@ export default {
|
||||
},
|
||||
grid: {
|
||||
left: "1%",
|
||||
right: "2.8%",
|
||||
right: "45px",
|
||||
bottom: "40px",
|
||||
top: "15%",
|
||||
containLabel: true,
|
||||
@@ -1331,7 +1331,7 @@ export default {
|
||||
enabled: true,
|
||||
itemDistance: 5,
|
||||
textStyle: {
|
||||
fontSize: "0.6rem",
|
||||
fontSize: "0.7rem",
|
||||
color: _this.DColor ? "#fff" : echartsColor.WordColor,
|
||||
rich: {
|
||||
a: {
|
||||
@@ -1453,7 +1453,7 @@ export default {
|
||||
},
|
||||
grid: {
|
||||
left: "1%",
|
||||
right: "2.8%",
|
||||
right: "45px",
|
||||
bottom: "40px",
|
||||
top: "15%",
|
||||
containLabel: true,
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
<el-select v-model="interval" style="min-width: 90px; width: 90px; margin-right: 10px" @change="timeChange">
|
||||
<el-option v-for="item in timeOptions" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
|
||||
<el-date-picker
|
||||
v-model="timeValue"
|
||||
type="daterange"
|
||||
@@ -306,6 +307,8 @@ const next = () => {
|
||||
}
|
||||
} else {
|
||||
month = month + 3
|
||||
console.log('🚀 ~ next ~ presentM:', presentM, month)
|
||||
|
||||
// 季度进位后,超过当前月份是不科学的
|
||||
if (year == presentY && !props.nextFlag) {
|
||||
if (month >= presentM) {
|
||||
@@ -319,6 +322,7 @@ const next = () => {
|
||||
endTime = year + '-0' + presentM + '-' + presentD
|
||||
}
|
||||
} else if (presentM > 3 && presentM < 7) {
|
||||
console.log(123123)
|
||||
// 第二季度
|
||||
startTime = year + '-04-01'
|
||||
if (presentD < 10) {
|
||||
@@ -354,7 +358,7 @@ const next = () => {
|
||||
endTime = NowgetEndTime()
|
||||
} else {
|
||||
var day = getDays(year, month)
|
||||
endTime = year + '-' + month + '-' + day
|
||||
endTime = year + '-0' + month + '-' + day
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -371,6 +375,7 @@ const next = () => {
|
||||
}
|
||||
}
|
||||
}
|
||||
console.log(startTime, endTime)
|
||||
} else if (interval.value == 5) {
|
||||
} else if (interval.value == 4) {
|
||||
//根据开始时间推
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
<!-- tag -->
|
||||
<div v-if="field.render == 'tag' && fieldValue !== ''">
|
||||
<el-tag :type="getTagType(fieldValue, field.custom) || 'primary'" size="small">
|
||||
<el-tag :type="getTagType(fieldValue, field.custom) || 'primary'" :effect="field.effect || ''" size="small">
|
||||
{{ field.replaceValue ? field.replaceValue[fieldValue] : fieldValue }}
|
||||
</el-tag>
|
||||
</div>
|
||||
|
||||
@@ -162,7 +162,7 @@ const setDatePicker = (list: any) => {
|
||||
}
|
||||
const onResetForm = () => {
|
||||
//时间重置成默认值
|
||||
datePickerRef.value?.timeChange(3)
|
||||
datePickerRef.value?.setInterval(3)
|
||||
tableStore.onTableAction('reset', {})
|
||||
}
|
||||
const setInterval = (val: any) => {
|
||||
|
||||
81
src/components/tree/pqs/algorithmTree.vue
Normal file
81
src/components/tree/pqs/algorithmTree.vue
Normal file
@@ -0,0 +1,81 @@
|
||||
<template>
|
||||
<div class="point-tree">
|
||||
<div style="flex: 1; overflow: hidden">
|
||||
<Tree ref="treeRef" :data="tree" style="width: 100%; height: 100%" :canExpand="false" v-bind="$attrs" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { nextTick, onMounted, ref, useAttrs } from 'vue'
|
||||
import Tree from '../index.vue'
|
||||
import { useAdminInfo } from '@/stores/adminInfo'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import { getTerminalTreeForFive } from '@/api/device-boot/terminalTree'
|
||||
import { useConfig } from '@/stores/config'
|
||||
|
||||
defineOptions({
|
||||
name: 'pms/pointTree'
|
||||
})
|
||||
const emit = defineEmits(['init'])
|
||||
const attrs = useAttrs()
|
||||
const adminInfo = useAdminInfo()
|
||||
const dictData = useDictData()
|
||||
const config = useConfig()
|
||||
const classificationData = dictData.getBasicData('Statistical_Type', ['Report_Type'])
|
||||
const tree = ref()
|
||||
const treeRef = ref()
|
||||
|
||||
const loadData = () => {
|
||||
let nodeKey = ''
|
||||
let res = {
|
||||
data: [
|
||||
{
|
||||
name: '运行管理',
|
||||
id: '1',
|
||||
children: [
|
||||
{
|
||||
name: '运行指标',
|
||||
id: '2'
|
||||
},
|
||||
{
|
||||
name: '数据质量核查',
|
||||
id: '3'
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
// getTerminalTreeForFive(form).then(res => {
|
||||
res.data.forEach((item: any) => {
|
||||
item.icon = 'el-icon-FolderOpened'
|
||||
item.color = config.getColorVal('elementUiPrimary')
|
||||
item.children.forEach((item2: any) => {
|
||||
item2.icon = 'el-icon-Document'
|
||||
item.color = config.getColorVal('elementUiPrimary')
|
||||
})
|
||||
})
|
||||
|
||||
nodeKey = res.data[0].children[0].id
|
||||
emit('init', res.data[0].children[0])
|
||||
|
||||
tree.value = res.data
|
||||
if (nodeKey) {
|
||||
setTimeout(() => {
|
||||
treeRef.value.treeRef.setCurrentKey(nodeKey)
|
||||
}, 10)
|
||||
}
|
||||
// })
|
||||
}
|
||||
loadData()
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.point-tree {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background: #fff;
|
||||
border: 1px solid var(--el-border-color);
|
||||
}
|
||||
</style>
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="default-main">
|
||||
<TableHeader datePicker area ref="header">
|
||||
<TableHeader datePicker theCurrentTime area ref="header">
|
||||
<!-- <template v-slot:select>
|
||||
|
||||
</template> -->
|
||||
@@ -49,15 +49,17 @@
|
||||
field="featureAmplitude"
|
||||
title="暂降(骤升)幅值(%)"
|
||||
sortable
|
||||
min-width="150px"
|
||||
></vxe-column>
|
||||
<vxe-column
|
||||
field="advanceReason"
|
||||
title="暂降原因"
|
||||
sortable
|
||||
:formatter="formFilter"
|
||||
min-width="100px"
|
||||
></vxe-column>
|
||||
<vxe-column field="severity" title="严重度" sortable></vxe-column>
|
||||
<vxe-column title="操作">
|
||||
<vxe-column field="severity" title="严重度" min-width="100px" sortable></vxe-column>
|
||||
<vxe-column title="操作" width="80px">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
@@ -81,6 +83,7 @@
|
||||
<div v-if="wp != null">
|
||||
<rmsboxi :value="1" :height="height" :boxoList="boxoList" :wp="wp" />
|
||||
</div>
|
||||
<el-empty v-else description="暂无数据" class="custom-empty" />
|
||||
</div>
|
||||
</el-card>
|
||||
</el-col>
|
||||
@@ -100,6 +103,7 @@ import { getMonitorEventAnalyseWave, getTransientDetailById } from '@/api/event-
|
||||
import rmsboxi from '@/components/echarts/rmsboxi.vue'
|
||||
import { ref, onMounted, provide } from 'vue'
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
import { FormItem } from 'vxe-table'
|
||||
defineOptions({
|
||||
name: 'newEnergy/highAndLowPressure'
|
||||
})
|
||||
@@ -181,15 +185,17 @@ const map = (res: any) => {
|
||||
},
|
||||
viewControl: {
|
||||
alpha: 60,
|
||||
distance: 120
|
||||
distance: 120,
|
||||
panMouseButton: 'right', //平移操作使用的鼠标按键
|
||||
rotateMouseButton: 'left' //旋转操作使用的鼠标按键
|
||||
},
|
||||
label: {
|
||||
show: true,
|
||||
color: '#000',
|
||||
fontSize: 14,
|
||||
distance: 0,
|
||||
textStyle: {
|
||||
color: '#000',
|
||||
|
||||
backgroundColor: '#000'
|
||||
}
|
||||
},
|
||||
@@ -210,7 +216,7 @@ const map = (res: any) => {
|
||||
show: true,
|
||||
position: 'top',
|
||||
formatter: params => {
|
||||
return params.value[2] || ''
|
||||
return params.value[2]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -231,8 +237,7 @@ const map = (res: any) => {
|
||||
},
|
||||
emphasis: {
|
||||
label: { show: true }
|
||||
},
|
||||
zlevel: 1
|
||||
}
|
||||
},
|
||||
{
|
||||
name: '高压',
|
||||
@@ -241,9 +246,9 @@ const map = (res: any) => {
|
||||
shading: 'lambert',
|
||||
label: {
|
||||
show: true,
|
||||
position: 'top',
|
||||
// position: 'top',
|
||||
formatter: params => {
|
||||
return params.value[2] || ''
|
||||
return params.value[2]
|
||||
}
|
||||
},
|
||||
|
||||
@@ -253,7 +258,7 @@ const map = (res: any) => {
|
||||
: res.map((item: any) => {
|
||||
return {
|
||||
...item,
|
||||
value: [item.lng - 0.07, item.lat, item.highPressure || 0]
|
||||
value: [item.lng - 0.1, item.lat, item.highPressure || 0]
|
||||
}
|
||||
}),
|
||||
// [
|
||||
@@ -296,6 +301,21 @@ const tabulation = (e: any) => {
|
||||
})
|
||||
.then(res => {
|
||||
distributionData.value = res.data
|
||||
|
||||
for (let i = 0; i < res.data.length; i++) {
|
||||
if (res.data[i].wavePath != null) {
|
||||
boxi(res.data[i])
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
// res.data.forEach((item: any) => {
|
||||
// if (item.wavePath != null) {
|
||||
// boxi(item)
|
||||
// return
|
||||
// }
|
||||
// })
|
||||
// 。wavePath
|
||||
loading.value = false
|
||||
})
|
||||
.catch(() => {
|
||||
@@ -369,4 +389,19 @@ const layout1 = mainHeight(93) as any
|
||||
:deep(.el-card__body) {
|
||||
padding: 10px;
|
||||
}
|
||||
/* 自定义 el-empty 的样式 */
|
||||
:deep(.custom-empty) {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
height: 100%; /* 调整高度 */
|
||||
padding: 20px; /* 调整内边距 */
|
||||
.el-empty__image {
|
||||
display: none; /* 隐藏默认图片 */
|
||||
}
|
||||
.el-empty__description {
|
||||
font-size: 14px; /* 调整字体大小 */
|
||||
color: var(--vxe-font-color);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
<TableHeader :showSearch="false">
|
||||
<template #select>
|
||||
<el-form-item label="">
|
||||
<span class="text-large font-600 mr-3">{{ props.timePopUpBox.num }}</span>
|
||||
<span class="text-large font-600 mr-3">{{ props.timePopUpBox.time }}</span>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-radio-group v-model="radio2" @change="tableStore.index()">
|
||||
<el-radio-button label="基础数据" value="1" />
|
||||
<el-radio-button label="谐波电压" value="2" />
|
||||
<el-radio-button label="谐波电流" value="3" />
|
||||
<el-radio-button label="间谐波电压含有率" value="4" />
|
||||
<el-radio-button label="间谐波电压" value="4" />
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</template>
|
||||
@@ -47,41 +47,54 @@ const tableStore = new TableStore({
|
||||
method: 'POST',
|
||||
showPage: false,
|
||||
column: [
|
||||
{ title: '指标', field: 'anotherName' },
|
||||
{
|
||||
title: '指标',
|
||||
field: 'anotherName',
|
||||
formatter: row => {
|
||||
row.column.title =
|
||||
radio2.value == '1' ? '指标' : (row.column.title = radio2.value == '4' ? '间谐波次数' : '谐波次数')
|
||||
return row.cellValue
|
||||
}
|
||||
},
|
||||
{ title: '单位', field: 'unit' },
|
||||
{
|
||||
title: '最小值',
|
||||
field: 'code',
|
||||
field: 'min',
|
||||
children: [
|
||||
{ title: 'A', field: 'num' },
|
||||
{ title: 'B', field: 'num' },
|
||||
{ title: 'C', field: 'num' }
|
||||
{
|
||||
title: 'A',
|
||||
field: 'minphaseA',
|
||||
formatter: row => formatter(row)
|
||||
},
|
||||
{ title: 'B', field: 'minphaseB', formatter: row => formatter(row) },
|
||||
{ title: 'C', field: 'minphaseC', formatter: row => formatter(row) }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: '最大值',
|
||||
field: 'sort',
|
||||
field: 'max',
|
||||
children: [
|
||||
{ title: 'A', field: 'num' },
|
||||
{ title: 'B', field: 'num' },
|
||||
{ title: 'C', field: 'num' }
|
||||
{ title: 'A', field: 'maxphaseA', formatter: row => formatter(row) },
|
||||
{ title: 'B', field: 'maxphaseB', formatter: row => formatter(row) },
|
||||
{ title: 'C', field: 'maxphaseC', formatter: row => formatter(row) }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: '平均值',
|
||||
field: 'value',
|
||||
field: 'avg',
|
||||
children: [
|
||||
{ title: 'A', field: 'num' },
|
||||
{ title: 'B', field: 'num' },
|
||||
{ title: 'C', field: 'num' }
|
||||
{ title: 'A', field: 'avgphaseA', formatter: row => formatter(row) },
|
||||
{ title: 'B', field: 'avgphaseB', formatter: row => formatter(row) },
|
||||
{ title: 'C', field: 'avgphaseC', formatter: row => formatter(row) }
|
||||
]
|
||||
},
|
||||
{
|
||||
title: 'cp95值',
|
||||
field: 'levelName',
|
||||
field: 'cp95',
|
||||
children: [
|
||||
{ title: 'A', field: 'num' },
|
||||
{ title: 'B', field: 'num' },
|
||||
{ title: 'C', field: 'num' }
|
||||
{ title: 'A', field: 'cp95PhaseA', formatter: row => formatter(row) },
|
||||
{ title: 'B', field: 'cp95PhaseB', formatter: row => formatter(row) },
|
||||
{ title: 'C', field: 'cp95PhaseC', formatter: row => formatter(row) }
|
||||
]
|
||||
}
|
||||
],
|
||||
@@ -96,7 +109,9 @@ const tableStore = new TableStore({
|
||||
})
|
||||
|
||||
provide('tableStore', tableStore)
|
||||
|
||||
const formatter = (row: any) => {
|
||||
return row.cellValue || '/'
|
||||
}
|
||||
onMounted(() => {
|
||||
tableStore.index()
|
||||
})
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
@click="analyseList(item.label, index + 5)"
|
||||
>
|
||||
<div style="font-size: 24px; font-weight: 700">
|
||||
<span :style="{ color: item.crossTheLine == '1' ? 'red' : 'green' }">
|
||||
<span :style="{ color: item.crossTheLine > 0 ? 'red' : 'green' }">
|
||||
{{ item.quantity }}
|
||||
</span>
|
||||
<span style="font-size: 14px; font-weight: 500">个</span>
|
||||
@@ -83,7 +83,7 @@
|
||||
:data="tableData"
|
||||
v-loading="loading"
|
||||
>
|
||||
<vxe-column field="num" title="时间" width="180px">
|
||||
<vxe-column field="time" title="时间" width="180px">
|
||||
<template #default="{ row }">
|
||||
<el-link
|
||||
type="primary"
|
||||
@@ -451,49 +451,39 @@ const tableStore = new TableStore({
|
||||
loadCallback: () => {
|
||||
let res = tableStore.table.data
|
||||
|
||||
let mun =
|
||||
res.minsNum1 +
|
||||
res.minsNum2 +
|
||||
res.minsNum3 +
|
||||
res.minsNum4 +
|
||||
res.minsNum5 +
|
||||
res.minsNum6 +
|
||||
res.minsNum7 +
|
||||
res.minsNum8 +
|
||||
res.minsNum9
|
||||
powerList1.value = [
|
||||
{
|
||||
label: '0%~10%',
|
||||
quantity: res.minsNum0,
|
||||
percentage: ((res.minsNum0 / mun || 0) * 100).toFixed(2) + '%',
|
||||
percentage: res.proportion0 + '%',
|
||||
crossTheLine: res.isOrNot0,
|
||||
value: '0%~10%'
|
||||
},
|
||||
{
|
||||
label: '10%~20%',
|
||||
quantity: res.minsNum1,
|
||||
percentage: ((res.minsNum1 / mun || 0) * 100).toFixed(2) + '%',
|
||||
percentage: res.proportion1 + '%',
|
||||
crossTheLine: res.isOrNot1,
|
||||
value: '10%~10%'
|
||||
},
|
||||
{
|
||||
label: '20%~30%',
|
||||
quantity: res.minsNum2,
|
||||
percentage: ((res.minsNum2 / mun || 0) * 100).toFixed(2) + '%',
|
||||
percentage: res.proportion2 + '%',
|
||||
crossTheLine: res.isOrNot2,
|
||||
value: '10%~30%'
|
||||
},
|
||||
{
|
||||
label: '30%~40%',
|
||||
quantity: res.minsNum3,
|
||||
percentage: ((res.minsNum3 / mun || 0) * 100).toFixed(2) + '%',
|
||||
percentage: res.proportion3 + '%',
|
||||
crossTheLine: res.isOrNot3,
|
||||
value: '30%~40%'
|
||||
},
|
||||
{
|
||||
label: '40%~50%',
|
||||
quantity: res.minsNum4,
|
||||
percentage: ((res.minsNum4 / mun || 0) * 100).toFixed(2) + '%',
|
||||
percentage: res.proportion4 + '%',
|
||||
crossTheLine: res.isOrNot4,
|
||||
value: '40%~50%'
|
||||
}
|
||||
@@ -502,35 +492,35 @@ const tableStore = new TableStore({
|
||||
{
|
||||
label: '50%~60%',
|
||||
quantity: res.minsNum5,
|
||||
percentage: ((res.minsNum5 / mun || 0) * 100).toFixed(2) + '%',
|
||||
percentage: res.proportion5 + '%',
|
||||
crossTheLine: res.isOrNot5,
|
||||
value: '50%~60%'
|
||||
},
|
||||
{
|
||||
label: '60%~70%',
|
||||
quantity: res.minsNum6,
|
||||
percentage: ((res.minsNum6 / mun || 0) * 100).toFixed(2) + '%',
|
||||
percentage: res.proportion6 + '%',
|
||||
crossTheLine: res.isOrNot6,
|
||||
value: '60%~70%'
|
||||
},
|
||||
{
|
||||
label: '70%~80%',
|
||||
quantity: res.minsNum7,
|
||||
percentage: ((res.minsNum7 / mun || 0) * 100).toFixed(2) + '%',
|
||||
percentage: res.proportion7 + '%',
|
||||
crossTheLine: res.isOrNot7,
|
||||
value: '70%~80%'
|
||||
},
|
||||
{
|
||||
label: '80%~90%',
|
||||
quantity: res.minsNum8,
|
||||
percentage: ((res.minsNum8 / mun || 0) * 100).toFixed(2) + '%',
|
||||
percentage: res.proportion8 + '%',
|
||||
crossTheLine: res.isOrNot8,
|
||||
value: '80%~90%'
|
||||
},
|
||||
{
|
||||
label: '90%~100%',
|
||||
quantity: res.minsNum9,
|
||||
percentage: ((res.minsNum9 / mun || 0) * 100).toFixed(2) + '%',
|
||||
percentage: res.proportion9 + '%',
|
||||
crossTheLine: res.isOrNot9,
|
||||
value: '90%~100%'
|
||||
}
|
||||
@@ -552,7 +542,7 @@ const tableStore = new TableStore({
|
||||
series: [
|
||||
{
|
||||
type: 'pie',
|
||||
center: ['50%', '60%'],
|
||||
center: ['50%', '55%'],
|
||||
selectedOffset: 30,
|
||||
label: {
|
||||
show: true,
|
||||
@@ -657,7 +647,7 @@ const exportData = () => {
|
||||
ElMessage('正在下载中,请稍等...')
|
||||
exportExcelRangTemplate({
|
||||
lineId: dotList.value.id,
|
||||
|
||||
searchValue: treeList.value?.name + ' 0%-100% 区间数据',
|
||||
searchBeginTime: tableStore.table.params.searchBeginTime,
|
||||
searchEndTime: tableStore.table.params.searchEndTime
|
||||
}).then((res: any) => {
|
||||
@@ -678,6 +668,7 @@ const exportData = () => {
|
||||
const generateReports = () => {
|
||||
let data: any = {
|
||||
lineId: dotList.value.id,
|
||||
searchValue: treeList.value?.name + ' 报告',
|
||||
searchBeginTime: tableStore.table.params.searchBeginTime,
|
||||
searchEndTime: tableStore.table.params.searchEndTime
|
||||
}
|
||||
@@ -693,7 +684,7 @@ const generateReports = () => {
|
||||
const url = window.URL.createObjectURL(blob)
|
||||
const link = document.createElement('a') // 创建a标签
|
||||
link.href = url
|
||||
link.download = treeList.value?.name +' 报告' // 设置下载的文件名
|
||||
link.download = treeList.value?.name + ' 报告' // 设置下载的文件名
|
||||
document.body.appendChild(link)
|
||||
link.click() //执行下载
|
||||
document.body.removeChild(link)
|
||||
@@ -726,7 +717,7 @@ const analyseList = (e: string, i: number) => {
|
||||
lineId: dotList.value.id,
|
||||
searchBeginTime: tableStore.table.params.searchBeginTime,
|
||||
searchEndTime: tableStore.table.params.searchEndTime,
|
||||
statisticalId: i
|
||||
field: i
|
||||
})
|
||||
.then(res => {
|
||||
loading.value = false
|
||||
@@ -750,6 +741,7 @@ const handleNodeClick = (data: any, node: any) => {
|
||||
console.log('🚀 ~ handleNodeClick ~ data:', data)
|
||||
if (data.level == 6) {
|
||||
dotList.value = data
|
||||
// dotList.value.id = '6469e77fda42db12c7ca6620a092f03c1'
|
||||
tableStore.index()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,11 +13,11 @@
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="电压等级:" prop="scale">
|
||||
<el-select v-model="addData.scale" clearable collapse-tags placeholder="请选择干扰源类型">
|
||||
<el-select v-model="addData.scale" clearable collapse-tags placeholder="请选择电压等级">
|
||||
<el-option v-for="item in scaleList" :key="item.id" :label="item.name" :value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="额定有功功率:" prop="ratedPower">
|
||||
<el-form-item label="额定有功功率(kV):" prop="ratedPower">
|
||||
<el-input-number v-model="addData.ratedPower" :min="0" style="width: 100%" />
|
||||
</el-form-item>
|
||||
<el-form-item label="经度:" prop="longitude">
|
||||
@@ -103,7 +103,7 @@ const config = () => {
|
||||
formRef.value.validate((valid: any) => {
|
||||
if (valid) {
|
||||
editNewStation(addData.value).then((res: any) => {
|
||||
ElMessage.success('新增成功!')
|
||||
ElMessage.success(title.value + '成功!')
|
||||
emit('onSubmit')
|
||||
cancel()
|
||||
})
|
||||
@@ -137,6 +137,9 @@ const open = (row: any) => {
|
||||
}
|
||||
}
|
||||
userAdd.value = true
|
||||
setTimeout(() => {
|
||||
formRef.value.clearValidate()
|
||||
}, 20)
|
||||
}
|
||||
|
||||
defineExpose({ open })
|
||||
|
||||
@@ -41,10 +41,9 @@ const tableStore = new TableStore({
|
||||
method: 'POST',
|
||||
column: [
|
||||
{
|
||||
field: 'index',
|
||||
title: '序号',
|
||||
type: 'seq',
|
||||
align: 'center',
|
||||
width: 60,
|
||||
width: '80',
|
||||
formatter: (row: any) => {
|
||||
return (tableStore.table.params.pageNum - 1) * tableStore.table.params.pageSize + row.rowIndex + 1
|
||||
}
|
||||
@@ -62,9 +61,9 @@ const tableStore = new TableStore({
|
||||
|
||||
formatter: (row: any) => scaleList.filter(item => item.id == row.cellValue)[0]?.name
|
||||
},
|
||||
{ field: 'ratedPower', title: '额定有功功率' },
|
||||
{ field: 'ratedPower', title: '额定有功功率(kV)' },
|
||||
{ field: 'longitude', title: '经度' },
|
||||
{ field: 'latitude', title: '维度' },
|
||||
{ field: 'latitude', title: '纬度' },
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
|
||||
84
src/views/pqs/database/algorithm/components/form.vue
Normal file
84
src/views/pqs/database/algorithm/components/form.vue
Normal file
@@ -0,0 +1,84 @@
|
||||
<template>
|
||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title" width="700px">
|
||||
<el-scrollbar>
|
||||
<el-form :inline="false" :model="form" label-width="auto" :rules="rules" ref="formRef">
|
||||
<el-form-item label="算法名称">
|
||||
<el-input v-model="form.name" placeholder="请输入算法名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="定义">
|
||||
<el-input v-model="form.code" placeholder="请输入定义" />
|
||||
</el-form-item>
|
||||
<el-form-item label="计算公式">
|
||||
<el-input v-model="form.remark" :rows="2" type="textarea" placeholder="请输入计算公式" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="计算周期">
|
||||
<el-input v-model="form.code" placeholder="请输入计算周期" />
|
||||
</el-form-item>
|
||||
<el-form-item label="数据来源">
|
||||
<el-input v-model="form.code" placeholder="请输入数据来源" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-scrollbar>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submit">确认</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { ref, inject } from 'vue'
|
||||
import { reactive } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import TableStore from '@/utils/tableStore' // 若不是列表页面弹框可删除
|
||||
|
||||
const dialogVisible = ref(false)
|
||||
const title = ref('')
|
||||
const tableStore = inject('tableStore') as TableStore
|
||||
const formRef = ref()
|
||||
// 注意不要和表单ref的命名冲突
|
||||
const form = reactive<anyObj>({
|
||||
code: '',
|
||||
name: '',
|
||||
remark: '',
|
||||
id: ''
|
||||
})
|
||||
const rules = {
|
||||
name: [{ required: true, message: '角色名称不能为空', trigger: 'blur' }],
|
||||
code: [{ required: true, message: '角色编码不能为空', trigger: 'blur' }]
|
||||
}
|
||||
|
||||
const open = (text: string, data?: anyObj) => {
|
||||
title.value = text
|
||||
dialogVisible.value = true
|
||||
if (data) {
|
||||
// 表单赋值
|
||||
for (let key in form) {
|
||||
form[key] = data[key]
|
||||
}
|
||||
} else {
|
||||
// 在此处恢复默认表单
|
||||
for (let key in form) {
|
||||
form[key] = ''
|
||||
}
|
||||
}
|
||||
}
|
||||
const submit = () => {
|
||||
formRef.value.validate(async (valid: boolean) => {
|
||||
if (valid) {
|
||||
if (form.id) {
|
||||
// await update(form)
|
||||
} else {
|
||||
// await create(form)
|
||||
}
|
||||
ElMessage.success('保存成功')
|
||||
tableStore.index()
|
||||
dialogVisible.value = false
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
defineExpose({ open })
|
||||
</script>
|
||||
188
src/views/pqs/database/algorithm/index.vue
Normal file
188
src/views/pqs/database/algorithm/index.vue
Normal file
@@ -0,0 +1,188 @@
|
||||
<template>
|
||||
<!-- 算法库 -->
|
||||
<div class="default-main" :style="height">
|
||||
<splitpanes style="height: 100%" class="default-theme" id="navigation-splitpanes">
|
||||
<pane :size="size">
|
||||
<algorithmTree
|
||||
:default-expand-all="false"
|
||||
:default-expanded-keys="monitoringPoint.state.lineId ? [monitoringPoint.state.lineId] : []"
|
||||
:current-node-key="monitoringPoint.state.lineId"
|
||||
@node-click="handleNodeClick"
|
||||
@init="handleNodeClick"
|
||||
></algorithmTree>
|
||||
</pane>
|
||||
<pane style="background: #fff" :style="height">
|
||||
<!-- <div :style="height"></div> -->
|
||||
<TableHeader ref="TableHeaderRef" :show-search="false">
|
||||
<template v-slot:select>
|
||||
<el-radio-group v-model="tableStore.table.params.radio2" @change="tableStore.index()">
|
||||
<el-radio-button label="监测覆盖率" value="1" />
|
||||
<el-radio-button label="装置在线率" value="2" />
|
||||
<el-radio-button label="数据完整性" value="3" />
|
||||
</el-radio-group>
|
||||
</template>
|
||||
<template #operation>
|
||||
<el-button icon="el-icon-Plus" type="primary" @click="addUser">新增</el-button>
|
||||
</template>
|
||||
</TableHeader>
|
||||
<Table ref="tableRef"></Table>
|
||||
</pane>
|
||||
</splitpanes>
|
||||
<!-- 弹框 -->
|
||||
<PopupEdit ref="popupEditRef" />
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { onMounted, ref, provide } from 'vue'
|
||||
import 'splitpanes/dist/splitpanes.css'
|
||||
import { Splitpanes, Pane } from 'splitpanes'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import algorithmTree from '@/components/tree/pqs/algorithmTree.vue'
|
||||
import TableHeader from '@/components/table/header/index.vue'
|
||||
import { mainHeight } from '@/utils/layout'
|
||||
import Table from '@/components/table/index.vue'
|
||||
import { getLineExport, getList, selectReleation } from '@/api/event-boot/report'
|
||||
import PopupEdit from './components/form.vue'
|
||||
import { useMonitoringPoint } from '@/stores/monitoringPoint'
|
||||
import { ElMessage } from 'element-plus'
|
||||
defineOptions({
|
||||
name: 'database/algorithm'
|
||||
})
|
||||
const monitoringPoint = useMonitoringPoint()
|
||||
const height = mainHeight(20)
|
||||
const size = ref(0)
|
||||
const popupEditRef = ref()
|
||||
|
||||
const TableHeaderRef = ref()
|
||||
const dotList: any = ref({
|
||||
name: monitoringPoint.state.lineName.split('>')[3],
|
||||
id: monitoringPoint.state.lineId,
|
||||
level: 6
|
||||
})
|
||||
|
||||
const templatePolicy: any = ref([])
|
||||
const tableStore = new TableStore({
|
||||
url: '/user-boot/dept/deptTree',
|
||||
method: 'POST',
|
||||
column: [
|
||||
{ title: '算法名称', field: 'name' },
|
||||
{
|
||||
title: '定义',
|
||||
field: 'name1'
|
||||
},
|
||||
{
|
||||
title: '计算公式',
|
||||
field: 'name2'
|
||||
},
|
||||
{
|
||||
title: '计算周期',
|
||||
field: 'name3'
|
||||
},
|
||||
{
|
||||
title: '数据来源',
|
||||
field: 'name4'
|
||||
},
|
||||
{
|
||||
title: '是否启用',
|
||||
field: 'name5',
|
||||
render: 'tag',
|
||||
effect: 'dark',
|
||||
custom: {
|
||||
0: 'info',
|
||||
1: 'success'
|
||||
},
|
||||
replaceValue: {
|
||||
0: '否',
|
||||
1: '是'
|
||||
}
|
||||
}
|
||||
|
||||
// {
|
||||
// title: '操作',
|
||||
// align: 'center',
|
||||
// width: '180',
|
||||
// render: 'buttons',
|
||||
// buttons: [
|
||||
// {
|
||||
// name: 'edit',
|
||||
// title: '编辑',
|
||||
// type: 'primary',
|
||||
// icon: 'el-icon-EditPen',
|
||||
// render: 'basicButton',
|
||||
// click: async row => {}
|
||||
// }
|
||||
// ]
|
||||
// }
|
||||
],
|
||||
loadCallback: () => {
|
||||
tableStore.table.data = [
|
||||
{
|
||||
name: '测试名称',
|
||||
name1: 'xxx',
|
||||
name2: 'XXX',
|
||||
name3: '1月',
|
||||
name4: '单体系统',
|
||||
name5: '1'
|
||||
},
|
||||
{
|
||||
name: '测试名称',
|
||||
name1: 'xxx',
|
||||
name2: 'XXX',
|
||||
name3: '1月',
|
||||
name4: '单体系统',
|
||||
name5: '0'
|
||||
}
|
||||
]
|
||||
}
|
||||
})
|
||||
tableStore.table.params.radio2 = '1'
|
||||
|
||||
// 弹框
|
||||
const addUser = () => {
|
||||
popupEditRef.value.open('新增算法')
|
||||
}
|
||||
|
||||
provide('tableStore', tableStore)
|
||||
onMounted(() => {
|
||||
const dom = document.getElementById('navigation-splitpanes')
|
||||
if (dom) {
|
||||
size.value = Math.round((180 / dom.offsetHeight) * 100)
|
||||
}
|
||||
tableStore.index()
|
||||
})
|
||||
|
||||
const handleNodeClick = (data: any, node: any) => {
|
||||
dotList.value = data
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.splitpanes.default-theme .splitpanes__pane {
|
||||
background: #eaeef1;
|
||||
}
|
||||
.grid-content {
|
||||
text-align: center;
|
||||
}
|
||||
.divBox {
|
||||
width: 250px;
|
||||
height: 31px;
|
||||
margin: auto;
|
||||
line-height: 32px;
|
||||
border: 1px solid #c9c9c9;
|
||||
&:hover {
|
||||
border: 1px solid #002255;
|
||||
}
|
||||
}
|
||||
.box {
|
||||
padding: 10px;
|
||||
// margin-top: 10px;
|
||||
overflow-y: auto;
|
||||
font-size: 15px;
|
||||
}
|
||||
.el-divider--horizontal {
|
||||
margin: 10px 0;
|
||||
}
|
||||
.mTop {
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
</style>
|
||||
84
src/views/pqs/database/case/components/form.vue
Normal file
84
src/views/pqs/database/case/components/form.vue
Normal file
@@ -0,0 +1,84 @@
|
||||
<template>
|
||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" :title="title" width="700px">
|
||||
<el-scrollbar>
|
||||
<el-form :inline="false" :model="form" label-width="auto" :rules="rules" ref="formRef">
|
||||
<el-form-item label="算法名称">
|
||||
<el-input v-model="form.name" placeholder="请输入算法名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="定义">
|
||||
<el-input v-model="form.code" placeholder="请输入定义" />
|
||||
</el-form-item>
|
||||
<el-form-item label="计算公式">
|
||||
<el-input v-model="form.remark" :rows="2" type="textarea" placeholder="请输入计算公式" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="计算周期">
|
||||
<el-input v-model="form.code" placeholder="请输入计算周期" />
|
||||
</el-form-item>
|
||||
<el-form-item label="数据来源">
|
||||
<el-input v-model="form.code" placeholder="请输入数据来源" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-scrollbar>
|
||||
<template #footer>
|
||||
<span class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" @click="submit">确认</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { ref, inject } from 'vue'
|
||||
import { reactive } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import TableStore from '@/utils/tableStore' // 若不是列表页面弹框可删除
|
||||
|
||||
const dialogVisible = ref(false)
|
||||
const title = ref('')
|
||||
const tableStore = inject('tableStore') as TableStore
|
||||
const formRef = ref()
|
||||
// 注意不要和表单ref的命名冲突
|
||||
const form = reactive<anyObj>({
|
||||
code: '',
|
||||
name: '',
|
||||
remark: '',
|
||||
id: ''
|
||||
})
|
||||
const rules = {
|
||||
name: [{ required: true, message: '角色名称不能为空', trigger: 'blur' }],
|
||||
code: [{ required: true, message: '角色编码不能为空', trigger: 'blur' }]
|
||||
}
|
||||
|
||||
const open = (text: string, data?: anyObj) => {
|
||||
title.value = text
|
||||
dialogVisible.value = true
|
||||
if (data) {
|
||||
// 表单赋值
|
||||
for (let key in form) {
|
||||
form[key] = data[key]
|
||||
}
|
||||
} else {
|
||||
// 在此处恢复默认表单
|
||||
for (let key in form) {
|
||||
form[key] = ''
|
||||
}
|
||||
}
|
||||
}
|
||||
const submit = () => {
|
||||
formRef.value.validate(async (valid: boolean) => {
|
||||
if (valid) {
|
||||
if (form.id) {
|
||||
// await update(form)
|
||||
} else {
|
||||
// await create(form)
|
||||
}
|
||||
ElMessage.success('保存成功')
|
||||
tableStore.index()
|
||||
dialogVisible.value = false
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
defineExpose({ open })
|
||||
</script>
|
||||
84
src/views/pqs/database/case/index.vue
Normal file
84
src/views/pqs/database/case/index.vue
Normal file
@@ -0,0 +1,84 @@
|
||||
<template>
|
||||
<!-- 案例库 -->
|
||||
<div class="default-main">
|
||||
<TableHeader ref="TableHeaderRef" datePicker>
|
||||
<template #operation>
|
||||
<el-button icon="el-icon-Plus" type="primary" @click="addUser">新增</el-button>
|
||||
</template>
|
||||
</TableHeader>
|
||||
<Table ref="tableRef"></Table>
|
||||
<!-- 弹框 -->
|
||||
<PopupEdit ref="popupEditRef" />
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { onMounted, ref, provide } from 'vue'
|
||||
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import TableHeader from '@/components/table/header/index.vue'
|
||||
|
||||
import Table from '@/components/table/index.vue'
|
||||
import PopupEdit from './components/form.vue'
|
||||
defineOptions({
|
||||
name: 'database/case'
|
||||
})
|
||||
|
||||
const popupEditRef = ref()
|
||||
|
||||
const TableHeaderRef = ref()
|
||||
|
||||
const tableStore = new TableStore({
|
||||
url: '/user-boot/dept/deptTree',
|
||||
method: 'POST',
|
||||
column: [
|
||||
{ title: '电能质量事件名称', field: 'name' },
|
||||
{
|
||||
title: '发生事件',
|
||||
field: 'name1'
|
||||
},
|
||||
{
|
||||
title: '发生地点',
|
||||
field: 'name2'
|
||||
},
|
||||
{
|
||||
title: '处理措施',
|
||||
field: 'name3'
|
||||
},
|
||||
{
|
||||
title: '治理效果',
|
||||
field: 'name4'
|
||||
}
|
||||
],
|
||||
loadCallback: () => {
|
||||
tableStore.table.data = [
|
||||
{
|
||||
name: '测试名称',
|
||||
name1: 'xxx',
|
||||
name2: 'XXX',
|
||||
name3: '1月',
|
||||
name4: '单体系统',
|
||||
name5: '1'
|
||||
},
|
||||
{
|
||||
name: '测试名称',
|
||||
name1: 'xxx',
|
||||
name2: 'XXX',
|
||||
name3: '1月',
|
||||
name4: '单体系统',
|
||||
name5: '0'
|
||||
}
|
||||
]
|
||||
}
|
||||
})
|
||||
|
||||
// 弹框
|
||||
const addUser = () => {
|
||||
popupEditRef.value.open('新增算法')
|
||||
}
|
||||
|
||||
provide('tableStore', tableStore)
|
||||
onMounted(() => {
|
||||
tableStore.index()
|
||||
})
|
||||
</script>
|
||||
<style lang="scss"></style>
|
||||
11
src/views/pqs/database/standard/index.vue
Normal file
11
src/views/pqs/database/standard/index.vue
Normal file
@@ -0,0 +1,11 @@
|
||||
<template>
|
||||
|
||||
<div> 标准</div>
|
||||
|
||||
</template>
|
||||
<script setup lang='ts'>
|
||||
import { ref, reactive } from 'vue'
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
|
||||
</style>
|
||||
11
src/views/pqs/database/stencil/index.vue
Normal file
11
src/views/pqs/database/stencil/index.vue
Normal file
@@ -0,0 +1,11 @@
|
||||
<template>
|
||||
|
||||
<div> 模版</div>
|
||||
|
||||
</template>
|
||||
<script setup lang='ts'>
|
||||
import { ref, reactive } from 'vue'
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
|
||||
</style>
|
||||
1
types/table.d.ts
vendored
1
types/table.d.ts
vendored
@@ -57,6 +57,7 @@ declare global {
|
||||
custom?: any
|
||||
// 值替换数据,如{open: '开'}
|
||||
replaceValue?: any
|
||||
effect?: any
|
||||
// 时间格式化
|
||||
timeFormat?: string
|
||||
// 开关控制
|
||||
|
||||
@@ -24,20 +24,22 @@ export default defineConfig({
|
||||
proxy: {
|
||||
'/api': {
|
||||
// target: 'http://10.95.53.49:10215', //海南服务器ip
|
||||
target: 'http://10.118.135.128:10215', ///hsw
|
||||
// target: 'http://10.118.135.128:10215', ///hsw
|
||||
target: 'http://192.168.1.122:10215', ///hsw
|
||||
// target: 'http://108c3dfb.r18.cpolar.top', ///hsw
|
||||
// target: 'http://10.119.65.152:10215', //数据中心
|
||||
changeOrigin: true,
|
||||
rewrite: path => path.replace(/^\/api/, '') //路径重写,把'/api'替换为''
|
||||
},
|
||||
'/api-docx': {
|
||||
// 文件服务器地址
|
||||
target: 'http://10.118.135.128:9009',
|
||||
target: 'http://192.168.1.22:9009',
|
||||
changeOrigin: true,
|
||||
rewrite: path => path.replace(/^\/api-docx/, '')
|
||||
},
|
||||
'/map': {
|
||||
// target: 'http://10.95.53.49:8088', //海南服务器ip
|
||||
target: 'http://192.168.1.125:8088', //hsw
|
||||
target: 'http://192.168.1.125:9009', //hsw
|
||||
// target: 'http://192.168.1.125:8088', //数据中心
|
||||
changeOrigin: true
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user