修改测试bug
This commit is contained in:
@@ -16,6 +16,14 @@ export function getMonitorSelect(params: any) {
|
|||||||
params
|
params
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
//获取谐波源特性字典列表
|
||||||
|
export function characteristicList(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/advance-boot/assessDicHarmonicCharacter/list',
|
||||||
|
method: 'Post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
//新增谐波源特性字典
|
//新增谐波源特性字典
|
||||||
export function characteristicAdd(data: any) {
|
export function characteristicAdd(data: any) {
|
||||||
return createAxios({
|
return createAxios({
|
||||||
@@ -250,4 +258,69 @@ export function windPowerDdit(data: any) {
|
|||||||
data
|
data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
//获取评估用户负荷参数列表
|
||||||
|
export function loadParamList(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/advance-boot/assessLoadParam/list',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//新增评估用户负荷参数
|
||||||
|
export function loadParamAdd(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/advance-boot/assessLoadParam/add',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//删除评估用户负荷参数
|
||||||
|
export function loadParamDelete(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/advance-boot/assessLoadParam/delete',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//修改评估用户负荷参数
|
||||||
|
export function loadParamEdit(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/advance-boot/assessLoadParam/edit',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取评估用户冲击负荷参数列表
|
||||||
|
export function shockList(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/advance-boot/assessShockLoadParam/list',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//新增评估用户冲击负荷参数
|
||||||
|
export function shockAdd(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/advance-boot/assessShockLoadParam/add',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//修改评估用户冲击负荷参数
|
||||||
|
export function shockEdit(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/advance-boot/assessShockLoadParam/edit',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//删除评估用户冲击负荷参数
|
||||||
|
export function shockDelete(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/advance-boot/assessShockLoadParam/delete',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
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
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
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
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
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
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
1
src/assets/map/新余.josn
Normal file
1
src/assets/map/新余.josn
Normal file
File diff suppressed because one or more lines are too long
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
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
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
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
@@ -48,13 +48,13 @@ const initChart = () => {
|
|||||||
},
|
},
|
||||||
tooltip: {
|
tooltip: {
|
||||||
trigger: 'axis',
|
trigger: 'axis',
|
||||||
axisPointer: {
|
// axisPointer: {
|
||||||
type: 'shadow',
|
// type: 'shadow',
|
||||||
label: {
|
// label: {
|
||||||
color: '#fff',
|
// color: '#fff',
|
||||||
fontSize: 16
|
// fontSize: 16
|
||||||
}
|
// }
|
||||||
},
|
// },
|
||||||
textStyle: {
|
textStyle: {
|
||||||
color: '#fff',
|
color: '#fff',
|
||||||
fontStyle: 'normal',
|
fontStyle: 'normal',
|
||||||
@@ -67,7 +67,10 @@ const initChart = () => {
|
|||||||
formatter: function (params: any) {
|
formatter: function (params: any) {
|
||||||
let tips = `<strong>${params[0]?.name}</strong></br>` // 标题加粗
|
let tips = `<strong>${params[0]?.name}</strong></br>` // 标题加粗
|
||||||
params?.forEach((item: any) => {
|
params?.forEach((item: any) => {
|
||||||
const value = item.value === 3.14159 ? '暂无数据' : Math.round(item.value * 100) / 100 // 处理特殊值
|
const value =
|
||||||
|
item.value === 3.14159 || item.value === 0.14159
|
||||||
|
? '暂无数据'
|
||||||
|
: Math.round(item.value * 100) / 100 // 处理特殊值
|
||||||
tips += `<div style=" display: flex;justify-content: space-between;">
|
tips += `<div style=" display: flex;justify-content: space-between;">
|
||||||
<span>${item.marker}
|
<span>${item.marker}
|
||||||
${item.seriesName}:
|
${item.seriesName}:
|
||||||
@@ -164,7 +167,7 @@ const handlerBar = (options: any) => {
|
|||||||
item.itemStyle = Object.assign(
|
item.itemStyle = Object.assign(
|
||||||
{
|
{
|
||||||
color: (params: any) => {
|
color: (params: any) => {
|
||||||
if (params.value == 0 || params.value == 3.14159) {
|
if (params.value == 0 || params.value == 3.14159 || params.value == 0.14159) {
|
||||||
return '#ccc'
|
return '#ccc'
|
||||||
} else {
|
} else {
|
||||||
return props.options?.color
|
return props.options?.color
|
||||||
|
|||||||
@@ -87,8 +87,8 @@ const GetEchar = async (name: string) => {
|
|||||||
|
|
||||||
geo: {
|
geo: {
|
||||||
map: name,
|
map: name,
|
||||||
zoom: 1.2,
|
zoom: 1.1,
|
||||||
// top: 0,
|
// top: 10,
|
||||||
// bottom: 0,
|
// bottom: 0,
|
||||||
roam: true,
|
roam: true,
|
||||||
label: {
|
label: {
|
||||||
@@ -187,6 +187,12 @@ const GetEchar = async (name: string) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
myCharts.value.on('datarangeselected', function (params: any) {
|
||||||
|
// 手动调用restore方法恢复地图的默认颜色映射
|
||||||
|
myCharts.value.dispatchAction({
|
||||||
|
type: 'restore'
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const MapReturn = (name: string) => {
|
const MapReturn = (name: string) => {
|
||||||
|
|||||||
@@ -4,9 +4,20 @@
|
|||||||
<el-option v-for="item in timeOptions" :key="item.value" :label="item.label" :value="item.value" />
|
<el-option v-for="item in timeOptions" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
|
|
||||||
<el-date-picker v-model="timeValue" type="daterange" :disabled="disabledPicker" :disabled-date="isFutureDate"
|
<el-date-picker
|
||||||
style="width: 220px; margin-right: 10px" unlink-panels :clearable="false" range-separator="至"
|
v-model="timeValue"
|
||||||
start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYY-MM-DD" :shortcuts="shortcuts" />
|
type="daterange"
|
||||||
|
:disabled="disabledPicker"
|
||||||
|
:disabled-date="isFutureDate"
|
||||||
|
style="width: 220px; margin-right: 10px"
|
||||||
|
unlink-panels
|
||||||
|
:clearable="false"
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
|
:shortcuts="shortcuts"
|
||||||
|
/>
|
||||||
<el-button :disabled="backDisabled" type="primary" :icon="DArrowLeft" @click="preClick"></el-button>
|
<el-button :disabled="backDisabled" type="primary" :icon="DArrowLeft" @click="preClick"></el-button>
|
||||||
<el-button type="primary" :icon="VideoPause" @click="nowTime">当前</el-button>
|
<el-button type="primary" :icon="VideoPause" @click="nowTime">当前</el-button>
|
||||||
<el-button :disabled="preDisabled" type="primary" :icon="DArrowRight" @click="next"></el-button>
|
<el-button :disabled="preDisabled" type="primary" :icon="DArrowRight" @click="next"></el-button>
|
||||||
@@ -70,9 +81,9 @@ const shortcuts = [
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
const isFutureDate = (time) => {
|
const isFutureDate = time => {
|
||||||
return time && time > Date.now();
|
return time && time > Date.now()
|
||||||
};
|
}
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
timeChange(3)
|
timeChange(3)
|
||||||
})
|
})
|
||||||
@@ -385,7 +396,6 @@ const next = () => {
|
|||||||
if (year >= presentY && !props.nextFlag) {
|
if (year >= presentY && !props.nextFlag) {
|
||||||
startTime = presentY + '-01-01'
|
startTime = presentY + '-01-01'
|
||||||
if (presentM < 10) {
|
if (presentM < 10) {
|
||||||
|
|
||||||
if (presentD < 10) {
|
if (presentD < 10) {
|
||||||
endTime = presentY + '-0' + presentM + '-0' + presentD
|
endTime = presentY + '-0' + presentM + '-0' + presentD
|
||||||
} else {
|
} else {
|
||||||
@@ -402,15 +412,16 @@ const next = () => {
|
|||||||
startTime = year + '-01-01'
|
startTime = year + '-01-01'
|
||||||
endTime = year + '-12-31'
|
endTime = year + '-12-31'
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if (!props.nextFlag) {
|
if (!props.nextFlag) {
|
||||||
if (new Date(endTime + ' 00:00:00').getTime() >= new Date(window.XEUtils.toDateString(new Date(), 'yyyy-MM-dd ') + ' 00:00:00').getTime()) {
|
if (
|
||||||
|
new Date(endTime + ' 00:00:00').getTime() >=
|
||||||
|
new Date(window.XEUtils.toDateString(new Date(), 'yyyy-MM-dd ') + ' 00:00:00').getTime()
|
||||||
|
) {
|
||||||
preDisabled.value = props.nextFlag ? false : true
|
preDisabled.value = props.nextFlag ? false : true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
timeValue.value = [startTime, endTime]
|
timeValue.value = [startTime, endTime]
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -419,7 +430,7 @@ const setTime = (flag = 0, e = 0) => {
|
|||||||
|
|
||||||
let data = ''
|
let data = ''
|
||||||
|
|
||||||
if ((dd < 4 || dd == 0) && interval.value != 4 && !props.theCurrentTime) {
|
if ((dd < 2 || dd == 0) && interval.value != 4 && !props.theCurrentTime) {
|
||||||
data = window.XEUtils.toDateString(new Date().getTime() - (e + dd) * 3600 * 1000 * 24, 'yyyy-MM-dd')
|
data = window.XEUtils.toDateString(new Date().getTime() - (e + dd) * 3600 * 1000 * 24, 'yyyy-MM-dd')
|
||||||
} else {
|
} else {
|
||||||
data = window.XEUtils.toDateString(new Date().getTime() - e * 3600 * 1000 * 24, 'yyyy-MM-dd')
|
data = window.XEUtils.toDateString(new Date().getTime() - e * 3600 * 1000 * 24, 'yyyy-MM-dd')
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<div ref="tableHeader" class="cn-table-header">
|
<div ref="tableHeader" class="cn-table-header">
|
||||||
<div class="table-header ba-scroll-style">
|
<div class="table-header ba-scroll-style">
|
||||||
<el-form
|
<el-form
|
||||||
style="flex: 1; height: 28px; display: flex; flex-wrap: wrap"
|
style="flex: 1; height: 32px; display: flex; flex-wrap: wrap"
|
||||||
ref="headerForm"
|
ref="headerForm"
|
||||||
@submit.prevent=""
|
@submit.prevent=""
|
||||||
@keyup.enter="onComSearch"
|
@keyup.enter="onComSearch"
|
||||||
@@ -155,6 +155,7 @@ onMounted(() => {
|
|||||||
tableStore.table.params.startTime = datePickerRef.value.timeValue[0]
|
tableStore.table.params.startTime = datePickerRef.value.timeValue[0]
|
||||||
tableStore.table.params.endTime = datePickerRef.value.timeValue[1]
|
tableStore.table.params.endTime = datePickerRef.value.timeValue[1]
|
||||||
tableStore.table.params.timeFlag = datePickerRef.value.timeFlag
|
tableStore.table.params.timeFlag = datePickerRef.value.timeFlag
|
||||||
|
tableStore.table.params.interval = datePickerRef.value.interval
|
||||||
}
|
}
|
||||||
if (props.area) {
|
if (props.area) {
|
||||||
tableStore.table.params.deptIndex = dictData.state.area[0].id
|
tableStore.table.params.deptIndex = dictData.state.area[0].id
|
||||||
@@ -215,6 +216,7 @@ const onComSearch = async () => {
|
|||||||
tableStore.table.params.startTime = datePickerRef.value.timeValue[0]
|
tableStore.table.params.startTime = datePickerRef.value.timeValue[0]
|
||||||
tableStore.table.params.endTime = datePickerRef.value.timeValue[1]
|
tableStore.table.params.endTime = datePickerRef.value.timeValue[1]
|
||||||
tableStore.table.params.timeFlag = datePickerRef.value.timeFlag
|
tableStore.table.params.timeFlag = datePickerRef.value.timeFlag
|
||||||
|
tableStore.table.params.interval = datePickerRef.value.interval
|
||||||
}
|
}
|
||||||
|
|
||||||
await tableStore.onTableAction('search', {})
|
await tableStore.onTableAction('search', {})
|
||||||
@@ -242,6 +244,7 @@ defineExpose({
|
|||||||
setTheDate,
|
setTheDate,
|
||||||
datePickerRef,
|
datePickerRef,
|
||||||
showSelectChange,
|
showSelectChange,
|
||||||
|
showSelect,
|
||||||
computedSearchRow,
|
computedSearchRow,
|
||||||
onExport
|
onExport
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ const loadData = () => {
|
|||||||
item.color = config.getColorVal('elementUiPrimary')
|
item.color = config.getColorVal('elementUiPrimary')
|
||||||
item.children.forEach((item2: any) => {
|
item.children.forEach((item2: any) => {
|
||||||
item2.icon = 'el-icon-CollectionTag'
|
item2.icon = 'el-icon-CollectionTag'
|
||||||
item.color = config.getColorVal('elementUiPrimary')
|
item2.color = config.getColorVal('elementUiPrimary')
|
||||||
item2.children.forEach((item3: any) => {
|
item2.children.forEach((item3: any) => {
|
||||||
item3.icon = 'el-icon-Flag'
|
item3.icon = 'el-icon-Flag'
|
||||||
item3.color = config.getColorVal('elementUiPrimary')
|
item3.color = config.getColorVal('elementUiPrimary')
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ const loadData = () => {
|
|||||||
item.color = config.getColorVal('elementUiPrimary')
|
item.color = config.getColorVal('elementUiPrimary')
|
||||||
item.children.forEach((item2: any) => {
|
item.children.forEach((item2: any) => {
|
||||||
item2.icon = 'el-icon-CollectionTag'
|
item2.icon = 'el-icon-CollectionTag'
|
||||||
item.color = config.getColorVal('elementUiPrimary')
|
item2.color = config.getColorVal('elementUiPrimary')
|
||||||
item2.children.forEach((item3: any) => {
|
item2.children.forEach((item3: any) => {
|
||||||
item3.icon = 'el-icon-Flag'
|
item3.icon = 'el-icon-Flag'
|
||||||
item3.color = config.getColorVal('elementUiPrimary')
|
item3.color = config.getColorVal('elementUiPrimary')
|
||||||
|
|||||||
30
src/main.ts
30
src/main.ts
@@ -35,21 +35,21 @@ const setupAll = async () => {
|
|||||||
const app = createApp(App)
|
const app = createApp(App)
|
||||||
|
|
||||||
//开启离线地图
|
//开启离线地图
|
||||||
app.use(BaiduMapOffline, {
|
// app.use(BaiduMapOffline, {
|
||||||
offline: true,
|
// offline: true,
|
||||||
offlineConfig: {
|
// offlineConfig: {
|
||||||
imgext: '.png',
|
// imgext: '.png',
|
||||||
customstyle: '',
|
// customstyle: '',
|
||||||
tiles_dir: '',
|
// tiles_dir: '',
|
||||||
tiles_hybrid: '',
|
// tiles_hybrid: '',
|
||||||
tiles_self: '',
|
// tiles_self: '',
|
||||||
tiles_v_dir: '',
|
// tiles_v_dir: '',
|
||||||
tiles_satellite_dir: '',
|
// tiles_satellite_dir: '',
|
||||||
tiles_road_dir: '',
|
// tiles_road_dir: '',
|
||||||
tiles_v_road_dir: '',
|
// tiles_v_road_dir: '',
|
||||||
home: './plugin/offline/'
|
// home: './plugin/offline/'
|
||||||
}
|
// }
|
||||||
})
|
// })
|
||||||
app.use(BaiduMap, {
|
app.use(BaiduMap, {
|
||||||
// ak: 'Yp57V71dkOPiXjiN8VdcFRsVELzlVNKK',
|
// ak: 'Yp57V71dkOPiXjiN8VdcFRsVELzlVNKK',
|
||||||
ak: 'RpQi6WNFZ9tseKzhdwOQsXwFsoVntnsN',
|
ak: 'RpQi6WNFZ9tseKzhdwOQsXwFsoVntnsN',
|
||||||
|
|||||||
373
src/styles/app.css
Normal file
373
src/styles/app.css
Normal file
@@ -0,0 +1,373 @@
|
|||||||
|
@charset "UTF-8";
|
||||||
|
/* 基本样式 */
|
||||||
|
* {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
outline: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
html,
|
||||||
|
body,
|
||||||
|
#app {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, SimSun, sans-serif;
|
||||||
|
font-weight: 400;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-webkit-tap-highlight-color: transparent;
|
||||||
|
background-color: var(--ba-bg-color);
|
||||||
|
font-size: 14px;
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 修改纵向滚动条轨道 */
|
||||||
|
::-webkit-scrollbar {
|
||||||
|
width: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 修改纵向滚动条拇指(thumb) */
|
||||||
|
::-webkit-scrollbar-thumb {
|
||||||
|
background-color: var(--el-color-primary);
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 修改横向滚动条轨道 */
|
||||||
|
::-webkit-scrollbar:horizontal {
|
||||||
|
height: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 修改横向滚动条拇指(thumb) */
|
||||||
|
::-webkit-scrollbar-thumb:horizontal {
|
||||||
|
background-color: var(--el-color-primary);
|
||||||
|
border-radius: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.iconfont-icon {
|
||||||
|
width: 1em;
|
||||||
|
height: 1em;
|
||||||
|
vertical-align: -0.15em;
|
||||||
|
fill: currentColor;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.w100 {
|
||||||
|
width: 100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.h100 {
|
||||||
|
height: 100% !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ba-center {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.default-main {
|
||||||
|
position: relative;
|
||||||
|
background: #fff;
|
||||||
|
margin: var(--ba-main-space) var(--ba-main-space) 0px var(--ba-main-space);
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-one {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-one .el-form-item {
|
||||||
|
display: flex;
|
||||||
|
width: 98%;
|
||||||
|
margin-bottom: 15px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-one .el-form-item .el-form-item__content {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-one .el-form-item .el-form-item__content .el-select,
|
||||||
|
.form-one .el-form-item .el-form-item__content .el-cascader,
|
||||||
|
.form-one .el-form-item .el-form-item__content .el-input__inner,
|
||||||
|
.form-one .el-form-item .el-form-item__content .el-date-editor {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-two {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-two .el-form-item {
|
||||||
|
display: flex;
|
||||||
|
width: 48%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-two .el-form-item .el-form-item__content {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-two .el-form-item .el-form-item__content .el-select,
|
||||||
|
.form-two .el-form-item .el-form-item__content .el-cascader,
|
||||||
|
.form-two .el-form-item .el-form-item__content .el-input__inner,
|
||||||
|
.form-two .el-form-item .el-form-item__content .el-date-editor {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uploadFile .el-form-item__content {
|
||||||
|
line-height: 20px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uploadFile .el-form-item__content div {
|
||||||
|
display: flex !important;
|
||||||
|
align-items: center !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uploadFile .el-form-item__content .el-upload-list__item-name {
|
||||||
|
width: 150px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.uploadFile .el-form-item__content .el-upload-list--text {
|
||||||
|
margin: 0px 20px 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.zoom-handle {
|
||||||
|
position: absolute;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
bottom: -10px;
|
||||||
|
right: -10px;
|
||||||
|
cursor: se-resize;
|
||||||
|
}
|
||||||
|
|
||||||
|
.block-help {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
color: #909399;
|
||||||
|
font-size: 13px;
|
||||||
|
line-height: 16px;
|
||||||
|
padding-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 表格顶部菜单-s */
|
||||||
|
.table-header .table-header-operate .icon {
|
||||||
|
font-size: 14px !important;
|
||||||
|
color: var(--el-color-white) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-header .el-button.is-disabled .icon {
|
||||||
|
color: var(--el-button-disabled-text-color) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 表格顶部菜单-e */
|
||||||
|
/* 鼠标置入浮动效果-s */
|
||||||
|
.suspension {
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.suspension:hover {
|
||||||
|
-webkit-transform: translateY(-4px) scale(1.02);
|
||||||
|
-moz-transform: translateY(-4px) scale(1.02);
|
||||||
|
-ms-transform: translateY(-4px) scale(1.02);
|
||||||
|
-o-transform: translateY(-4px) scale(1.02);
|
||||||
|
transform: translateY(-4px) scale(1.02);
|
||||||
|
-webkit-box-shadow: 0 14px 24px rgba(0, 0, 0, 0.2);
|
||||||
|
box-shadow: 0 14px 24px rgba(0, 0, 0, 0.2);
|
||||||
|
z-index: 999;
|
||||||
|
border-radius: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 鼠标置入浮动效果-e */
|
||||||
|
/* 表格-s */
|
||||||
|
.ba-table-box {
|
||||||
|
border-radius: var(--el-border-radius-round);
|
||||||
|
}
|
||||||
|
|
||||||
|
.ba-table-alert {
|
||||||
|
background-color: var(--el-fill-color-darker) !important;
|
||||||
|
border: 1px solid var(--ba-boder-color);
|
||||||
|
border-bottom: 0;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fx-jcsb {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 表格-e */
|
||||||
|
/* 表格顶部菜单-s */
|
||||||
|
.ba-table-menu {
|
||||||
|
background-color: var(--el-fill-color-darker) !important;
|
||||||
|
border: 1px solid var(--ba-boder-color);
|
||||||
|
border-bottom: 0;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 表格-e */
|
||||||
|
.ba-operate-form {
|
||||||
|
padding-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 新增/编辑表单-e */
|
||||||
|
/* 全局遮罩-s */
|
||||||
|
.ba-layout-shade {
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
height: 100vh;
|
||||||
|
width: 100vw;
|
||||||
|
background-color: rgba(0, 0, 0, 0.5);
|
||||||
|
z-index: 9999990;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 全局遮罩-e */
|
||||||
|
/* 图片上传预览-s */
|
||||||
|
.img-preview-dialog .el-dialog__body {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.img-preview-dialog .el-dialog__body img {
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 图片上传预览-e */
|
||||||
|
/* 页面切换动画-s */
|
||||||
|
.slide-right-enter-active,
|
||||||
|
.slide-right-leave-active,
|
||||||
|
.slide-left-enter-active,
|
||||||
|
.slide-left-leave-active {
|
||||||
|
will-change: transform;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slide-right-enter-from, .slide-left-leave-to {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateX(-20px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.slide-right-leave-to, .slide-left-enter-from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateX(20px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 页面切换动画-e */
|
||||||
|
/* 布局相关-s */
|
||||||
|
.frontend-footer-brother {
|
||||||
|
min-height: calc(100vh - 120px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-views {
|
||||||
|
padding-left: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.user-views .user-views-card {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ba-aside-drawer .el-drawer__body {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 布局相关-e */
|
||||||
|
/* 暗黑模式公共样式-s */
|
||||||
|
.ba-icon-dark {
|
||||||
|
color: var(--el-text-color-primary) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 暗黑模式公共样式-e */
|
||||||
|
/* NProgress-s */
|
||||||
|
#nprogress .bar,
|
||||||
|
#nprogress .spinner {
|
||||||
|
z-index: 999999;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* NProgress-e */
|
||||||
|
/* 自适应-s */
|
||||||
|
@media screen and (max-width: 768px) {
|
||||||
|
.xs-hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 1024px) {
|
||||||
|
.cn-operate-dialog {
|
||||||
|
width: 96%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 991px) {
|
||||||
|
.user-views {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 自适应-e */
|
||||||
|
.custom-table-header {
|
||||||
|
box-sizing: border-box;
|
||||||
|
display: flex;
|
||||||
|
padding: 13px 15px;
|
||||||
|
align-items: center;
|
||||||
|
border: 1px solid var(--el-border-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-table-header .title {
|
||||||
|
flex: 1;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-table-header .el-form-item {
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.child-router {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
background: #fff;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bjs-powered-by {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-select__wrapper {
|
||||||
|
height: 32px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'AlimamaFangYuanTiVF';
|
||||||
|
src: url("../assets/font/ali/AlimamaFangYuanTiVF-Thin.woff") format("woff"), url("../assets/font/ali/AlimamaFangYuanTiVF-Thin.woff2") format("woff2");
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'nablaRegular';
|
||||||
|
src: url("../assets/font/ali/Nabla_Regular.woff") format("woff"), url("../assets/font/ali/Nabla_Regular.woff2") format("woff2");
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'AlimamaDongFangDaKai';
|
||||||
|
src: url("../assets/font/ali/AlimamaDongFangDaKai-Regular.woff") format("woff"), url("../assets/font/ali/AlimamaDongFangDaKai-Regular.woff2") format("woff2");
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.w-e-scroll {
|
||||||
|
min-height: 200px !important;
|
||||||
|
}
|
||||||
1
src/styles/app.min.css
vendored
Normal file
1
src/styles/app.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -186,7 +186,20 @@ body,
|
|||||||
border-bottom-left-radius: 0;
|
border-bottom-left-radius: 0;
|
||||||
border-bottom-right-radius: 0;
|
border-bottom-right-radius: 0;
|
||||||
}
|
}
|
||||||
|
.fx-jcsb {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
/* 表格-e */
|
||||||
|
|
||||||
|
/* 表格顶部菜单-s */
|
||||||
|
.ba-table-menu {
|
||||||
|
background-color: var(--el-fill-color-darker) !important;
|
||||||
|
border: 1px solid var(--ba-boder-color);
|
||||||
|
border-bottom: 0;
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
}
|
||||||
/* 表格-e */
|
/* 表格-e */
|
||||||
|
|
||||||
// /* 新增/编辑表单-s */
|
// /* 新增/编辑表单-s */
|
||||||
|
|||||||
246
src/styles/element.css
Normal file
246
src/styles/element.css
Normal file
@@ -0,0 +1,246 @@
|
|||||||
|
@charset "UTF-8";
|
||||||
|
/* 修复 Chrome 浏览器输入框内选中字符行高异常的bug-s */
|
||||||
|
.el-input .el-input__inner {
|
||||||
|
height: 30px;
|
||||||
|
line-height: calc(var(--el-input-height, 40px) - 4px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 修复 Chrome 浏览器输入框内选中字符行高异常的bug-e */
|
||||||
|
.datetime-picker {
|
||||||
|
height: 32px;
|
||||||
|
padding-top: 0;
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-divider__text.is-center {
|
||||||
|
transform: translateX(-50%) translateY(-62%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-menu {
|
||||||
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-menu .el-menu-item:hover,
|
||||||
|
.el-menu .el-sub-menu__title:hover {
|
||||||
|
background-color: var(--el-menu-hover-color) !important;
|
||||||
|
color: var(--el-menu-active-color) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-menu .el-menu-item:hover .icon,
|
||||||
|
.el-menu .el-sub-menu__title:hover .icon {
|
||||||
|
color: var(--el-menu-active-color) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.atooltip {
|
||||||
|
margin-top: 0px !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-dialog {
|
||||||
|
padding: 0px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-dialog .el-dialog__footer {
|
||||||
|
padding: 15px;
|
||||||
|
box-shadow: var(--el-box-shadow);
|
||||||
|
width: 100%;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-dialog__body {
|
||||||
|
max-height: 60vh;
|
||||||
|
overflow-y: auto;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-dialog__header {
|
||||||
|
background: var(--el-color-primary);
|
||||||
|
padding: 15px;
|
||||||
|
margin-right: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-dialog__header .el-dialog__headerbtn {
|
||||||
|
top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-dialog__header .el-dialog__headerbtn .el-icon {
|
||||||
|
color: var(--el-color-white);
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-dialog__header .el-dialog__headerbtn:hover .el-icon {
|
||||||
|
color: #409eff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-dialog__header .el-dialog__title {
|
||||||
|
color: var(--el-color-white);
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-table {
|
||||||
|
--el-table-border-color: var(--ba-border-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-card {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-card__header {
|
||||||
|
border-bottom: 1px solid var(--el-border-color-extra-light);
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-textarea__inner {
|
||||||
|
padding: 5px 11px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* dialog滚动条-s */
|
||||||
|
.el-overlay-dialog,
|
||||||
|
.el-tabs__content,
|
||||||
|
.ba-scroll-style {
|
||||||
|
scrollbar-width: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-overlay-dialog::-webkit-scrollbar,
|
||||||
|
.el-tabs__content::-webkit-scrollbar,
|
||||||
|
.ba-scroll-style::-webkit-scrollbar {
|
||||||
|
width: 5px;
|
||||||
|
height: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-overlay-dialog::-webkit-scrollbar-thumb,
|
||||||
|
.el-tabs__content::-webkit-scrollbar-thumb,
|
||||||
|
.ba-scroll-style::-webkit-scrollbar-thumb {
|
||||||
|
background: #eaeaea;
|
||||||
|
border-radius: var(--el-border-radius-base);
|
||||||
|
box-shadow: none;
|
||||||
|
-webkit-box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-overlay-dialog:hover::-webkit-scrollbar-thumb:hover,
|
||||||
|
.el-tabs__content:hover::-webkit-scrollbar-thumb:hover,
|
||||||
|
.ba-scroll-style:hover::-webkit-scrollbar-thumb:hover {
|
||||||
|
background: #c8c9cc;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* dialog滚动条-e */
|
||||||
|
/* 小屏终端 el-radio-group 样式优化-s */
|
||||||
|
.ba-input-item-radio {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ba-input-item-radio .el-radio-group .el-radio {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 小屏终端 el-radio-group 样式调整-e */
|
||||||
|
.el-tabs--card > .el-tabs__header .el-tabs__item.is-active {
|
||||||
|
background: var(--el-color-primary);
|
||||||
|
color: var(--el-color-white);
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-tabs__header {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-form--inline .el-form-item {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-tabs--border-card > .el-tabs__content {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-page-header__header {
|
||||||
|
line-height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-page-header__header .el-page-header__content {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-select {
|
||||||
|
min-width: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-tabs__content {
|
||||||
|
height: calc(100% - 40px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-tabs__content .el-tab-pane {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-button--primary:focus {
|
||||||
|
color: var(--el-color-white);
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-button--primary:hover {
|
||||||
|
color: var(--el-color-white);
|
||||||
|
border-color: var(--el-color-primary-light-3);
|
||||||
|
background-color: var(--el-color-primary-light-3);
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-button.is-plain:focus {
|
||||||
|
color: var(--el-button-text-color);
|
||||||
|
border-color: var(--el-button-border-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-button.is-plain:hover {
|
||||||
|
color: var(--el-color-primary);
|
||||||
|
border-color: var(--el-color-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-button.is-link:focus {
|
||||||
|
color: var(--el-button-text-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-button.is-link:hover {
|
||||||
|
color: var(--el-button-hover-link-text-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-button--primary.is-link:hover,
|
||||||
|
.el-button--primary.is-plain:hover,
|
||||||
|
.el-button--primary.is-text:hover {
|
||||||
|
color: var(--el-color-primary-light-5);
|
||||||
|
background-color: var(--el-color-primary-light-9) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-divider--horizontal {
|
||||||
|
margin: 15px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-step__title {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner,
|
||||||
|
.el-radio__input.is-disabled.is-checked .el-radio__inner {
|
||||||
|
background-color: var(--el-color-primary);
|
||||||
|
opacity: 0.6;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sgmap-ctrl-bottom-left {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-drawer__header {
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-pagination__sizes .el-select {
|
||||||
|
min-width: 128px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-card__header {
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-card__header span {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-select__input-wrapper {
|
||||||
|
width: 11px;
|
||||||
|
}
|
||||||
1
src/styles/element.min.css
vendored
Normal file
1
src/styles/element.min.css
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
.el-input .el-input__inner{height:30px;line-height:calc(var(--el-input-height, 40px) - 4px)}.datetime-picker{height:32px;padding-top:0;padding-bottom:0}.el-divider__text.is-center{transform:translateX(-50%) translateY(-62%)}.el-menu{user-select:none}.el-menu .el-menu-item:hover,.el-menu .el-sub-menu__title:hover{background-color:var(--el-menu-hover-color) !important;color:var(--el-menu-active-color) !important}.el-menu .el-menu-item:hover .icon,.el-menu .el-sub-menu__title:hover .icon{color:var(--el-menu-active-color) !important}.atooltip{margin-top:0px !important;padding:0 !important}.el-dialog{padding:0px !important}.el-dialog .el-dialog__footer{padding:15px;box-shadow:var(--el-box-shadow);width:100%;bottom:0}.el-dialog__body{max-height:60vh;overflow-y:auto;padding:10px}.el-dialog__header{background:var(--el-color-primary);padding:15px;margin-right:0px}.el-dialog__header .el-dialog__headerbtn{top:5px}.el-dialog__header .el-dialog__headerbtn .el-icon{color:var(--el-color-white)}.el-dialog__header .el-dialog__headerbtn:hover .el-icon{color:#409eff}.el-dialog__header .el-dialog__title{color:var(--el-color-white)}.el-table{--el-table-border-color:var(--ba-border-color)}.el-card{border:none}.el-card__header{border-bottom:1px solid var(--el-border-color-extra-light)}.el-textarea__inner{padding:5px 11px}.el-overlay-dialog,.el-tabs__content,.ba-scroll-style{scrollbar-width:none}.el-overlay-dialog::-webkit-scrollbar,.el-tabs__content::-webkit-scrollbar,.ba-scroll-style::-webkit-scrollbar{width:5px;height:5px}.el-overlay-dialog::-webkit-scrollbar-thumb,.el-tabs__content::-webkit-scrollbar-thumb,.ba-scroll-style::-webkit-scrollbar-thumb{background:#eaeaea;border-radius:var(--el-border-radius-base);box-shadow:none;-webkit-box-shadow:none}.el-overlay-dialog:hover::-webkit-scrollbar-thumb:hover,.el-tabs__content:hover::-webkit-scrollbar-thumb:hover,.ba-scroll-style:hover::-webkit-scrollbar-thumb:hover{background:#c8c9cc}.ba-input-item-radio{margin-bottom:10px}.ba-input-item-radio .el-radio-group .el-radio{margin-bottom:8px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{background:var(--el-color-primary);color:var(--el-color-white)}.el-tabs__header{margin-bottom:0}.el-form--inline .el-form-item{margin-bottom:10px}.el-tabs--border-card>.el-tabs__content{padding:10px}.el-page-header__header{line-height:32px}.el-page-header__header .el-page-header__content{font-size:14px;font-weight:700}.el-select{min-width:200px}.el-tabs__content{height:calc(100% - 40px)}.el-tabs__content .el-tab-pane{height:100%}.el-button--primary:focus{color:var(--el-color-white);outline:0}.el-button--primary:hover{color:var(--el-color-white);border-color:var(--el-color-primary-light-3);background-color:var(--el-color-primary-light-3);outline:0}.el-button.is-plain:focus{color:var(--el-button-text-color);border-color:var(--el-button-border-color)}.el-button.is-plain:hover{color:var(--el-color-primary);border-color:var(--el-color-primary)}.el-button.is-link:focus{color:var(--el-button-text-color)}.el-button.is-link:hover{color:var(--el-button-hover-link-text-color)}.el-button--primary.is-link:hover,.el-button--primary.is-plain:hover,.el-button--primary.is-text:hover{color:var(--el-color-primary-light-5);background-color:var(--el-color-primary-light-9) !important}.el-divider--horizontal{margin:15px 0}.el-step__title{cursor:pointer}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-color-primary);opacity:0.6}.sgmap-ctrl-bottom-left{display:none !important}.el-drawer__header{margin-bottom:0 !important}.el-pagination__sizes .el-select{min-width:128px}.el-card__header{padding:10px}.el-card__header span{font-size:16px;font-weight:600}.el-select__input-wrapper{width:11px}
|
||||||
@@ -33,7 +33,6 @@
|
|||||||
.atooltip {
|
.atooltip {
|
||||||
margin-top: 0px !important;
|
margin-top: 0px !important;
|
||||||
padding: 0 !important;
|
padding: 0 !important;
|
||||||
|
|
||||||
}
|
}
|
||||||
.el-dialog {
|
.el-dialog {
|
||||||
padding: 0px !important;
|
padding: 0px !important;
|
||||||
@@ -229,4 +228,8 @@
|
|||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.el-select__input-wrapper {
|
||||||
|
width: 11px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ export default class SocketService {
|
|||||||
const mqttUrl = response.headers.get('X-Mqtt-Url')
|
const mqttUrl = response.headers.get('X-Mqtt-Url')
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
// ws://192.168.1.69:10407/mgtt/api/pushMessage/
|
// ws://192.168.1.69:10407/mgtt/api/pushMessage/
|
||||||
const url = (mqttUrl || 'ws://192.168.1.31:10407/api/pushMessage/') + id
|
const url = (mqttUrl || 'ws://192.168.1.68:10407/api/pushMessage/') + id
|
||||||
this.ws = new WebSocket(url)
|
this.ws = new WebSocket(url)
|
||||||
|
|
||||||
this.ws.onopen = () => this.handleOpen()
|
this.ws.onopen = () => this.handleOpen()
|
||||||
|
|||||||
@@ -3001,10 +3001,10 @@ const area = () => {
|
|||||||
month = '0' + (month + 1)
|
month = '0' + (month + 1)
|
||||||
}
|
}
|
||||||
let day: any = data.getDate()
|
let day: any = data.getDate()
|
||||||
if (day + 1 >= 10) {
|
if (day >= 10) {
|
||||||
day = day + 1
|
day = day
|
||||||
} else {
|
} else {
|
||||||
day = '0' + (day + 1)
|
day = '0' + (day )
|
||||||
}
|
}
|
||||||
deviceBODetail.value.thisTimeCheck = year + '-' + month + '-' + day
|
deviceBODetail.value.thisTimeCheck = year + '-' + month + '-' + day
|
||||||
deviceBODetail.value.loginTime = year + '-' + month + '-' + day
|
deviceBODetail.value.loginTime = year + '-' + month + '-' + day
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ import MyEchart from '@/components/echarts/MyEchart.vue'
|
|||||||
import TableHeader from '@/components/table/header/index.vue'
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
import { useDictData } from '@/stores/dictData'
|
import { useDictData } from '@/stores/dictData'
|
||||||
import * as echarts from 'echarts/core'
|
import * as echarts from 'echarts/core'
|
||||||
|
import { Top } from '@element-plus/icons-vue/dist/types'
|
||||||
const dictData = useDictData()
|
const dictData = useDictData()
|
||||||
const options = ref({})
|
const options = ref({})
|
||||||
|
|
||||||
@@ -112,19 +113,10 @@ const tableStore = new TableStore({
|
|||||||
itemHeight: 15,
|
itemHeight: 15,
|
||||||
itemGap: 25
|
itemGap: 25
|
||||||
},
|
},
|
||||||
toolbox: {
|
toolbox: {
|
||||||
show: true,
|
top: 0,
|
||||||
feature: {
|
right: 10,
|
||||||
saveAsImage: {
|
},
|
||||||
// bottom: '10px',
|
|
||||||
show: true,
|
|
||||||
title: '保存'
|
|
||||||
// yAxisIndex: 'none'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
right: 0,
|
|
||||||
top: 0
|
|
||||||
},
|
|
||||||
// tooltip: {
|
// tooltip: {
|
||||||
// backgroundColor: '#fff',
|
// backgroundColor: '#fff',
|
||||||
// textStyle: {
|
// textStyle: {
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="default-main online">
|
<div class="default-main online">
|
||||||
<div class="online_header">
|
<div class="online_header">
|
||||||
<TableHeader date-picker ref="tableHeaderRef">
|
<TableHeader date-picker area ref="tableHeaderRef">
|
||||||
<template #select>
|
<template #select>
|
||||||
<el-form-item label="统计类型:">
|
<el-form-item label="统计类型:">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="formData.statisticalType"
|
v-model="tableStore.table.params.statisticalType"
|
||||||
placeholder="请选择统计类型"
|
placeholder="请选择统计类型"
|
||||||
value-key="id"
|
value-key="id"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
@@ -18,58 +18,10 @@
|
|||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="区域选择:">
|
|
||||||
<!-- <el-select ref="select1" v-model="deptName" placeholder="请选择所属部门区域" style="width: 100%">
|
|
||||||
<el-option :value="formData.deptIndex" style="height: auto"> -->
|
|
||||||
<!-- {{ formData.deptIndex }} -->
|
|
||||||
<el-cascader
|
|
||||||
v-model="formData.deptIndex"
|
|
||||||
:props="defaultProps"
|
|
||||||
:options="treeData"
|
|
||||||
clearable
|
|
||||||
filterable
|
|
||||||
collapse-tags
|
|
||||||
placeholder="请选择区域"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<!-- <el-tree
|
|
||||||
ref="tree"
|
|
||||||
v-model="formData.deptName"
|
|
||||||
:data="treeData"
|
|
||||||
node-key="id"
|
|
||||||
accordion
|
|
||||||
:default-expanded-keys="idArr"
|
|
||||||
:props="defaultProps"
|
|
||||||
@node-click="handleNodeClick"
|
|
||||||
>
|
|
||||||
<template #default="{ node, data }">
|
|
||||||
<span :title="data.name">{{ data?.name }}</span>
|
|
||||||
</template>
|
|
||||||
</el-tree> -->
|
|
||||||
<!-- </el-option>
|
|
||||||
</el-select> -->
|
|
||||||
</el-form-item>
|
|
||||||
<!-- <el-form-item label="电压等级:">
|
|
||||||
<el-select
|
|
||||||
v-model="formData.scale"
|
|
||||||
multiple
|
|
||||||
collapse-tags
|
|
||||||
clearable
|
|
||||||
placeholder="请选择电压等级"
|
|
||||||
style="width: 100%"
|
|
||||||
value-key="id"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item in voltageleveloption"
|
|
||||||
:key="item.id"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item"
|
|
||||||
></el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item> -->
|
|
||||||
<el-form-item label="终端厂家:">
|
<el-form-item label="终端厂家:">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="formData.manufacturer"
|
v-model="tableStore.table.params.manufacturer"
|
||||||
multiple
|
multiple
|
||||||
collapse-tags
|
collapse-tags
|
||||||
clearable
|
clearable
|
||||||
@@ -85,24 +37,6 @@
|
|||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item label="干扰源类型:">
|
|
||||||
<el-select
|
|
||||||
v-model="formData.loadType"
|
|
||||||
multiple
|
|
||||||
collapse-tags
|
|
||||||
clearable
|
|
||||||
placeholder="请选择干扰源类型"
|
|
||||||
style="width: 100%"
|
|
||||||
value-key="id"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="(item, index) in interfereoption"
|
|
||||||
:key="index"
|
|
||||||
:label="item.name"
|
|
||||||
:value="item"
|
|
||||||
></el-option>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item> -->
|
|
||||||
</template>
|
</template>
|
||||||
</TableHeader>
|
</TableHeader>
|
||||||
</div>
|
</div>
|
||||||
@@ -151,7 +85,7 @@
|
|||||||
></path>
|
></path>
|
||||||
</svg>
|
</svg>
|
||||||
</p>
|
</p>
|
||||||
<span style="color: #ffcc33">热备用状态</span>
|
<span style="color: #ffcc33">检修状态</span>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<p style="background: #cc0000">
|
<p style="background: #cc0000">
|
||||||
@@ -178,7 +112,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<Table
|
<Table
|
||||||
ref="tableRef"
|
ref="tableRef"
|
||||||
:tree-config="{ transform: true,parentField: 'uPid', rowField: 'uId' }"
|
:tree-config="{ transform: true, parentField: 'uPid', rowField: 'uId' }"
|
||||||
:scroll-y="{ enabled: true }"
|
:scroll-y="{ enabled: true }"
|
||||||
v-if="activeName == 0"
|
v-if="activeName == 0"
|
||||||
/>
|
/>
|
||||||
@@ -291,7 +225,7 @@ const tableStore = new TableStore({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '热备用(台)',
|
title: '检修(台)',
|
||||||
field: 'reaFlag',
|
field: 'reaFlag',
|
||||||
type: 'html',
|
type: 'html',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
@@ -329,40 +263,39 @@ const tableStore = new TableStore({
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
beforeSearchFun: () => {
|
// beforeSearchFun: () => {
|
||||||
tableStore.table.params.deptIndex = formData.value.deptIndex
|
// tableStore.table.params.deptIndex = formData.value.deptIndex
|
||||||
tableStore.table.params.statisticalType = formData.value.statisticalType
|
// tableStore.table.params.statisticalType = formData.value.statisticalType
|
||||||
tableStore.table.params.scale = formData.value.scale
|
// tableStore.table.params.scale = formData.value.scale
|
||||||
tableStore.table.params.manufacturer = formData.value.manufacturer
|
// tableStore.table.params.manufacturer = formData.value.manufacturer
|
||||||
tableStore.table.params.loadType = formData.value.loadType
|
// tableStore.table.params.loadType = formData.value.loadType
|
||||||
tableStore.table.params.serverName = 'harmonicBoot'
|
// tableStore.table.params.serverName = 'harmonicBoot'
|
||||||
delete tableStore.table.params.timeFlag
|
// // delete tableStore.table.params.timeFlag
|
||||||
delete tableStore.table.params.startTime
|
// // delete tableStore.table.params.startTime
|
||||||
delete tableStore.table.params.endTime
|
// // delete tableStore.table.params.endTime
|
||||||
delete tableStore.table.params.pageNum
|
// // delete tableStore.table.params.pageNum
|
||||||
delete tableStore.table.params.pageSize
|
// // delete tableStore.table.params.pageSize
|
||||||
// tableStore.table.params.searchBeginTime = tableHeaderRef.value.datePickerRef.timeValue[0]
|
// // tableStore.table.params.searchBeginTime = tableHeaderRef.value.datePickerRef.timeValue[0]
|
||||||
// tableStore.table.params.searchEndTime = tableHeaderRef.value.datePickerRef.timeValue[1]
|
// // tableStore.table.params.searchEndTime = tableHeaderRef.value.datePickerRef.timeValue[1]
|
||||||
},
|
// },
|
||||||
loadCallback: () => {
|
loadCallback: () => {
|
||||||
tableStore.table.data = tree2List(tableStore.table.data, Math.random() * 1000)
|
tableStore.table.data = tree2List(tableStore.table.data, Math.random() * 1000)
|
||||||
tableStore.table.column[0].title = formData.value.statisticalType.name
|
tableStore.table.column[0].title = formData.value.statisticalType.name
|
||||||
|
|
||||||
chartsRef.value&&chartsRef.value.getTableStoreParams(tableStore.table.params)
|
chartsRef.value && chartsRef.value.getTableStoreParams(tableStore.table.params)
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
activeName.value == 0 && tableRef.value && tableRef.value.getRef().setAllTreeExpand(true)
|
activeName.value == 0 && tableRef.value && tableRef.value.getRef().setAllTreeExpand(true)
|
||||||
}, 0)
|
}, 0)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
const handleSearch = () => {
|
tableStore.table.params.deptIndex = treeData.value[0]?.id
|
||||||
formData.value.searchBeginTime = datePickerRef.value.timeValue[0]
|
tableStore.table.params.statisticalType = classificationData[0]
|
||||||
formData.value.searchEndTime = datePickerRef.value.timeValue[1]
|
tableStore.table.params.scale = voltageleveloption
|
||||||
}
|
tableStore.table.params.manufacturer = terminaloption
|
||||||
tableStore.table.params.deptIndex = ''
|
tableStore.table.params.loadType = interfereoption
|
||||||
tableStore.table.params.statisticalType = []
|
tableStore.table.params.serverName = 'harmonicBoot'
|
||||||
tableStore.table.params.scale = []
|
|
||||||
tableStore.table.params.manufacturer = []
|
|
||||||
tableStore.table.params.loadType = []
|
|
||||||
provide('tableStore', tableStore)
|
provide('tableStore', tableStore)
|
||||||
const tree2List = (list: any, id?: string) => {
|
const tree2List = (list: any, id?: string) => {
|
||||||
//存储结果的数组
|
//存储结果的数组
|
||||||
@@ -403,7 +336,6 @@ watch(
|
|||||||
)
|
)
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|
||||||
.table_legend {
|
.table_legend {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
|
|||||||
@@ -1,103 +1,114 @@
|
|||||||
<template>
|
<template>
|
||||||
|
|
||||||
<el-dialog draggable v-model="dialogVisible" :title="title" width="70%">
|
<el-dialog draggable v-model="dialogVisible" :title="title" width="70%">
|
||||||
<div style="height: 55vh">
|
<div style="height: 55vh">
|
||||||
<vxe-table height="auto" auto-resize :data="tableData" v-loading="loading" v-bind="defaultAttribute"
|
<vxe-table
|
||||||
:key="key">
|
height="auto"
|
||||||
|
auto-resize
|
||||||
|
:data="tableData"
|
||||||
|
v-loading="loading"
|
||||||
|
v-bind="defaultAttribute"
|
||||||
|
:key="key"
|
||||||
|
>
|
||||||
|
<vxe-column field="name" title="名称"></vxe-column>
|
||||||
|
<vxe-column field="powerCompany" title="供电公司" v-if="voltageLevelFlag"></vxe-column>
|
||||||
|
<vxe-column field="substation" title="变电站" v-if="voltageLevelFlag"></vxe-column>
|
||||||
|
<vxe-column field="busBar" title="母线" v-if="voltageLevelFlag"></vxe-column>
|
||||||
|
|
||||||
<vxe-column field="name" title="名称"></vxe-column>
|
<vxe-column
|
||||||
<vxe-column field="powerCompany" title="供电公司" v-if="voltageLevelFlag"></vxe-column>
|
field="voltageLevel"
|
||||||
<vxe-column field="substation" title="变电站" v-if="voltageLevelFlag"></vxe-column>
|
title="电压等级"
|
||||||
<vxe-column field="busBar" title="母线" v-if="voltageLevelFlag"></vxe-column>
|
v-if="statisticalName == '谐波电压' && !voltageLevelFlag"
|
||||||
|
>
|
||||||
<vxe-column field="voltageLevel" title="电压等级"
|
<template #default="scope">
|
||||||
v-if="statisticalName == '谐波电压' && !voltageLevelFlag"></vxe-column>
|
{{ scaleList.filter(item => item.id == scope.row.voltageLevel)[0].name }}
|
||||||
<vxe-column field="data" :title="statisticalName">
|
</template>
|
||||||
<template #default="scope">
|
</vxe-column>
|
||||||
<span v-if="scope.row.data == 3.14159" type="primary" size="small">暂无数据</span>
|
<vxe-column field="data" :title="statisticalName">
|
||||||
<span v-else type="primary" size="small">
|
<template #default="scope">
|
||||||
{{ parseFloat(scope.row.data.toFixed(2)) }}
|
<span v-if="scope.row.data == 3.14159" type="primary" size="small">暂无数据</span>
|
||||||
</span>
|
<span v-else type="primary" size="small">
|
||||||
</template>
|
{{ parseFloat(scope.row.data.toFixed(2)) }}
|
||||||
</vxe-column>
|
</span>
|
||||||
<vxe-column field="zd" title="评估">
|
</template>
|
||||||
<template #default="scope">
|
</vxe-column>
|
||||||
<span v-if="
|
<vxe-column field="zd" title="评估">
|
||||||
0 <= scope.row.data &&
|
<template #default="scope">
|
||||||
scope.row.data < 1 &&
|
<span
|
||||||
scope.row.data !== 3.14159
|
v-if="0 <= scope.row.data && scope.row.data < 1 && scope.row.data !== 3.14159"
|
||||||
" style=" font-weight: bold;color: #339966;">
|
style="font-weight: bold; color: #339966"
|
||||||
无污染
|
>
|
||||||
</span>
|
无污染
|
||||||
<span v-if="
|
</span>
|
||||||
1 <= scope.row.data &&
|
<span
|
||||||
scope.row.data < 1.2 &&
|
v-if="1 <= scope.row.data && scope.row.data < 1.2 && scope.row.data !== 3.14159"
|
||||||
scope.row.data !== 3.14159
|
style="font-weight: bold; color: #3399ff"
|
||||||
" style=" font-weight: bold;color: #3399ff;">
|
>
|
||||||
轻微污染
|
轻微污染
|
||||||
</span>
|
</span>
|
||||||
<span v-if="
|
<span
|
||||||
1.2 <= scope.row.data &&
|
v-if="1.2 <= scope.row.data && scope.row.data < 1.6 && scope.row.data !== 3.14159"
|
||||||
scope.row.data < 1.6 &&
|
style="font-weight: bold; color: #ffcc33"
|
||||||
scope.row.data !== 3.14159
|
>
|
||||||
" style=" font-weight: bold;color: #ffcc33;">
|
轻度污染
|
||||||
轻度污染
|
</span>
|
||||||
</span>
|
<span
|
||||||
<span v-if="
|
v-if="1.6 <= scope.row.data && scope.row.data < 2 && scope.row.data !== 3.14159"
|
||||||
1.6 <= scope.row.data &&
|
style="font-weight: bold; color: #ff9900"
|
||||||
scope.row.data < 2 &&
|
>
|
||||||
scope.row.data !== 3.14159
|
中度污染
|
||||||
" style=" font-weight: bold;color: #ff9900;">
|
</span>
|
||||||
中度污染
|
<span
|
||||||
</span>
|
v-if="2 <= scope.row.data && scope.row.data && scope.row.data !== 3.14159"
|
||||||
<span v-if="
|
style="font-weight: bold; color: #cc0000"
|
||||||
2 <= scope.row.data && scope.row.data && scope.row.data !== 3.14159
|
>
|
||||||
" style=" font-weight: bold;color: #cc0000;">
|
重度污染
|
||||||
重度污染
|
</span>
|
||||||
</span>
|
<span v-if="scope.row.data == 3.14159" style="color: #000">暂无评估</span>
|
||||||
<span v-if="scope.row.data == 3.14159" style="color: #000;">
|
</template>
|
||||||
暂无评估
|
</vxe-column>
|
||||||
</span>
|
</vxe-table>
|
||||||
</template>
|
</div>
|
||||||
</vxe-column>
|
|
||||||
</vxe-table>
|
|
||||||
</div>
|
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
<script setup lang='ts'>
|
<script setup lang="ts">
|
||||||
import { ref, reactive } from 'vue'
|
import { ref, reactive } from 'vue'
|
||||||
|
import { useDictData } from '@/stores/dictData'
|
||||||
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||||
import { getSubstationInfoById, getLineInfoById } from '@/api/harmonic-boot/area'
|
import { getSubstationInfoById, getLineInfoById } from '@/api/harmonic-boot/area'
|
||||||
const dialogVisible = ref(false)
|
const dialogVisible = ref(false)
|
||||||
|
const dictData = useDictData()
|
||||||
const loading = ref(false)
|
const loading = ref(false)
|
||||||
const voltageLevelFlag = ref(false)
|
const voltageLevelFlag = ref(false)
|
||||||
const tableData = ref([])
|
const tableData = ref([])
|
||||||
|
const scaleList = dictData.getBasicData('Dev_Voltage_Stand')
|
||||||
const title = ref('')
|
const title = ref('')
|
||||||
const key = ref(0)
|
const key = ref(0)
|
||||||
const statisticalName = ref('')
|
const statisticalName = ref('')
|
||||||
const open = (row: any, flag: boolean, params: any) => {
|
const open = (row: any, flag: boolean, params: any) => {
|
||||||
console.log("🚀 ~ open ~ row:", row)
|
console.log('🚀 ~ open ~ row:', row)
|
||||||
voltageLevelFlag.value = flag
|
voltageLevelFlag.value = flag
|
||||||
loading.value = true
|
loading.value = true
|
||||||
title.value = row.name + '详情'
|
title.value = row.name + '详情'
|
||||||
statisticalName.value = params.statisticalType.name
|
statisticalName.value = params.statisticalType.name
|
||||||
tableData.value = []
|
tableData.value = []
|
||||||
if (flag) {
|
if (flag) {
|
||||||
getLineInfoById({ ...params, deptIndex: row.pid, id: row.id ,powerFlag: row.powerFlag }).then((res: any) => {
|
getLineInfoById({ ...params, deptIndex: row.pid, id: row.id, powerFlag: row.powerFlag })
|
||||||
tableData.value = res.data
|
.then((res: any) => {
|
||||||
loading.value = false
|
tableData.value = res.data
|
||||||
}).catch(() => {
|
loading.value = false
|
||||||
loading.value = false
|
})
|
||||||
})
|
.catch(() => {
|
||||||
|
loading.value = false
|
||||||
|
})
|
||||||
} else {
|
} else {
|
||||||
getSubstationInfoById({ ...params, deptIndex: row.id }).then((res: any) => {
|
getSubstationInfoById({ ...params, deptIndex: row.id })
|
||||||
tableData.value = res.data
|
.then((res: any) => {
|
||||||
loading.value = false
|
tableData.value = res.data
|
||||||
}).catch(() => {
|
loading.value = false
|
||||||
loading.value = false
|
})
|
||||||
})
|
.catch(() => {
|
||||||
|
loading.value = false
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
key.value += 1
|
key.value += 1
|
||||||
|
|||||||
@@ -98,7 +98,7 @@
|
|||||||
@click="queryline(item1, true)"
|
@click="queryline(item1, true)"
|
||||||
>
|
>
|
||||||
<el-tag
|
<el-tag
|
||||||
v-if="item1.data == 3.14159 "
|
v-if="item1.data == 3.14159"
|
||||||
style="background: #ccc; color: #fff"
|
style="background: #ccc; color: #fff"
|
||||||
size="small"
|
size="small"
|
||||||
>
|
>
|
||||||
@@ -271,6 +271,9 @@ const tableStore = new TableStore({
|
|||||||
url: '/harmonic-boot/PollutionSubstation/deptSubstationRelations',
|
url: '/harmonic-boot/PollutionSubstation/deptSubstationRelations',
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
column: [],
|
column: [],
|
||||||
|
beforeSearchFun: () => {
|
||||||
|
tableStore.table.params.reportFlag = tableStore.table.params.interval
|
||||||
|
},
|
||||||
loadCallback: () => {
|
loadCallback: () => {
|
||||||
histogram(tableStore.table.data)
|
histogram(tableStore.table.data)
|
||||||
}
|
}
|
||||||
@@ -281,7 +284,7 @@ tableStore.table.params.deptIndex = dictData.state.area[0].id
|
|||||||
tableStore.table.params.statisticalType = options[0]
|
tableStore.table.params.statisticalType = options[0]
|
||||||
tableStore.table.params.monitorFlag = 2
|
tableStore.table.params.monitorFlag = 2
|
||||||
tableStore.table.params.powerFlag = sign[0]?.algoDescribe || 0
|
tableStore.table.params.powerFlag = sign[0]?.algoDescribe || 0
|
||||||
tableStore.table.params.reportFlag = 3
|
|
||||||
tableStore.table.params.serverName = 'event-boot'
|
tableStore.table.params.serverName = 'event-boot'
|
||||||
const handleTabChange = (val: any) => {
|
const handleTabChange = (val: any) => {
|
||||||
if (val == 0) return
|
if (val == 0) return
|
||||||
@@ -318,7 +321,7 @@ const histogram = (res: any) => {
|
|||||||
' ' +
|
' ' +
|
||||||
' ' +
|
' ' +
|
||||||
(params[i].value == 0.14159
|
(params[i].value == 0.14159
|
||||||
? '无污染'
|
? '暂无数据'
|
||||||
: params[i].value < 1
|
: params[i].value < 1
|
||||||
? '无污染'
|
? '无污染'
|
||||||
: params[i].value < 1.2
|
: params[i].value < 1.2
|
||||||
@@ -385,8 +388,7 @@ const histogram = (res: any) => {
|
|||||||
|
|
||||||
// 定制显示(按顺序)
|
// 定制显示(按顺序)
|
||||||
color: function (params) {
|
color: function (params) {
|
||||||
if (params.value == 0.14159) {
|
if (params.value == 0) {
|
||||||
} else if (params.value == 0) {
|
|
||||||
return '#339966'
|
return '#339966'
|
||||||
} else if (params.value > 2) {
|
} else if (params.value > 2) {
|
||||||
return new echarts.graphic.LinearGradient(
|
return new echarts.graphic.LinearGradient(
|
||||||
@@ -448,7 +450,7 @@ const histogram = (res: any) => {
|
|||||||
0 < params.value &&
|
0 < params.value &&
|
||||||
params.value <= 1 &&
|
params.value <= 1 &&
|
||||||
params.value >= 0 &&
|
params.value >= 0 &&
|
||||||
params.value !== 0.05
|
params.value !== 0.14159
|
||||||
) {
|
) {
|
||||||
return new echarts.graphic.LinearGradient(
|
return new echarts.graphic.LinearGradient(
|
||||||
0,
|
0,
|
||||||
@@ -463,7 +465,7 @@ const histogram = (res: any) => {
|
|||||||
],
|
],
|
||||||
false
|
false
|
||||||
)
|
)
|
||||||
} else if (params.value == 0.05) {
|
} else if (params.value == 0.14159) {
|
||||||
return new echarts.graphic.LinearGradient(
|
return new echarts.graphic.LinearGradient(
|
||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
@@ -594,7 +596,7 @@ const map = (res: any) => {
|
|||||||
let d = element.name.split('\n')
|
let d = element.name.split('\n')
|
||||||
let p1 = {
|
let p1 = {
|
||||||
name: d[0],
|
name: d[0],
|
||||||
value: element.data
|
value: element.data == 3.14159 ? -1 : element.data
|
||||||
}
|
}
|
||||||
|
|
||||||
arr1.push(p1)
|
arr1.push(p1)
|
||||||
@@ -673,7 +675,7 @@ const map = (res: any) => {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
gte: -1,
|
gte: -1,
|
||||||
lte: 0.05,
|
lte: 0.14159,
|
||||||
label: '无数据',
|
label: '无数据',
|
||||||
color: '#ccc'
|
color: '#ccc'
|
||||||
}
|
}
|
||||||
@@ -786,7 +788,7 @@ const layout1 = mainHeight(93) as any
|
|||||||
.legend {
|
.legend {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
right: 15px;
|
right: 15px;
|
||||||
top: 17px;
|
top: 20px;
|
||||||
z-index: 99;
|
z-index: 99;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -22,8 +22,8 @@
|
|||||||
<vxe-column field="name" title="名称"></vxe-column>
|
<vxe-column field="name" title="名称"></vxe-column>
|
||||||
<vxe-column field="data" :title="changeName">
|
<vxe-column field="data" :title="changeName">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span v-if="scope.row.data == -1" type="primary" size="small">暂无数据</span>
|
<span v-if="scope.row.data == 3.14159" type="primary" size="small">暂无数据</span>
|
||||||
<span v-if="scope.row.data !== -1 && scope.row.data !== 0.1" type="primary"
|
<span v-if="scope.row.data !== 3.14159 && scope.row.data !== 0.1" type="primary"
|
||||||
size="small">
|
size="small">
|
||||||
{{ scope.row.data }}
|
{{ scope.row.data }}
|
||||||
</span>
|
</span>
|
||||||
@@ -155,7 +155,7 @@ const map = (res: any) => {
|
|||||||
let d = element.name.split('\n')
|
let d = element.name.split('\n')
|
||||||
let p1 = {
|
let p1 = {
|
||||||
name: d[0],
|
name: d[0],
|
||||||
value: element.data
|
value: element.data == 3.14159 ? -1 : element.data
|
||||||
}
|
}
|
||||||
|
|
||||||
arr1.push(p1)
|
arr1.push(p1)
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="display: flex; flex-direction: column; height: 100%; position: relative" >
|
<div style="display: flex; flex-direction: column; height: 100%; position: relative">
|
||||||
<el-form :inline="true">
|
<el-form :inline="true">
|
||||||
<el-form-item label="多监测点">
|
<el-form-item label="多监测点">
|
||||||
<el-checkbox v-model="checked" @change="checkChange" />
|
<el-checkbox v-model="checked" @change="checkChange" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="日期">
|
<el-form-item label="日期">
|
||||||
<DatePicker ref="datePickerRef"></DatePicker>
|
<DatePicker ref="datePickerRef" ></DatePicker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="指标类型:">
|
<el-form-item label="指标类型:">
|
||||||
<el-select
|
<el-select
|
||||||
@@ -116,7 +116,7 @@
|
|||||||
<SecondSheet v-if="options" style="background: #fff; z-index: 10">
|
<SecondSheet v-if="options" style="background: #fff; z-index: 10">
|
||||||
<el-button
|
<el-button
|
||||||
style="position: absolute; right: 0; top: 0; cursor: pointer; z-index: 3"
|
style="position: absolute; right: 0; top: 0; cursor: pointer; z-index: 3"
|
||||||
icon="el-icon-Back"
|
icon="el-icon-Back"
|
||||||
size="small"
|
size="small"
|
||||||
@click="close"
|
@click="close"
|
||||||
>
|
>
|
||||||
@@ -259,7 +259,7 @@ const conditionChange = () => {
|
|||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
formData.condition.includes('46') ||
|
formData.condition.includes('46') ||
|
||||||
// formData.condition.includes('47') ||
|
// formData.condition.includes('47') ||
|
||||||
// formData.condition.includes('48') ||
|
// formData.condition.includes('48') ||
|
||||||
formData.condition.includes('49')
|
formData.condition.includes('49')
|
||||||
) {
|
) {
|
||||||
@@ -275,7 +275,7 @@ const conditionChange = () => {
|
|||||||
formData.condition.includes('43') ||
|
formData.condition.includes('43') ||
|
||||||
formData.condition.includes('44') ||
|
formData.condition.includes('44') ||
|
||||||
(formData.condition.includes('45') && formData.condition.includes('46')) ||
|
(formData.condition.includes('45') && formData.condition.includes('46')) ||
|
||||||
// formData.condition.includes('47') ||
|
// formData.condition.includes('47') ||
|
||||||
// formData.condition.includes('48') ||
|
// formData.condition.includes('48') ||
|
||||||
formData.condition.includes('49')
|
formData.condition.includes('49')
|
||||||
) {
|
) {
|
||||||
@@ -294,7 +294,7 @@ const conditionChange = () => {
|
|||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
formData.condition.includes('46') ||
|
formData.condition.includes('46') ||
|
||||||
// formData.condition.includes('47') ||
|
// formData.condition.includes('47') ||
|
||||||
// formData.condition.includes('48') ||
|
// formData.condition.includes('48') ||
|
||||||
formData.condition.includes('49')
|
formData.condition.includes('49')
|
||||||
) {
|
) {
|
||||||
@@ -311,7 +311,7 @@ const conditionChange = () => {
|
|||||||
formData.condition.includes('44') ||
|
formData.condition.includes('44') ||
|
||||||
formData.condition.includes('45')) &&
|
formData.condition.includes('45')) &&
|
||||||
(formData.condition.includes('46') ||
|
(formData.condition.includes('46') ||
|
||||||
// formData.condition.includes('47') ||
|
// formData.condition.includes('47') ||
|
||||||
// formData.condition.includes('48') ||
|
// formData.condition.includes('48') ||
|
||||||
formData.condition.includes('49'))
|
formData.condition.includes('49'))
|
||||||
) {
|
) {
|
||||||
@@ -323,7 +323,7 @@ const conditionChange = () => {
|
|||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
formData.condition.includes('46') ||
|
formData.condition.includes('46') ||
|
||||||
// formData.condition.includes('47') ||
|
// formData.condition.includes('47') ||
|
||||||
// formData.condition.includes('48') ||
|
// formData.condition.includes('48') ||
|
||||||
formData.condition.includes('49')
|
formData.condition.includes('49')
|
||||||
) {
|
) {
|
||||||
@@ -350,7 +350,7 @@ const conditionChange = () => {
|
|||||||
formData.condition.includes('44') ||
|
formData.condition.includes('44') ||
|
||||||
formData.condition.includes('45')) &&
|
formData.condition.includes('45')) &&
|
||||||
(formData.condition.includes('46') ||
|
(formData.condition.includes('46') ||
|
||||||
// formData.condition.includes('47') ||
|
// formData.condition.includes('47') ||
|
||||||
// formData.condition.includes('48') ||
|
// formData.condition.includes('48') ||
|
||||||
formData.condition.includes('49'))
|
formData.condition.includes('49'))
|
||||||
) {
|
) {
|
||||||
@@ -362,7 +362,7 @@ const conditionChange = () => {
|
|||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
formData.condition.includes('46') ||
|
formData.condition.includes('46') ||
|
||||||
// formData.condition.includes('47') ||
|
// formData.condition.includes('47') ||
|
||||||
// formData.condition.includes('48') ||
|
// formData.condition.includes('48') ||
|
||||||
formData.condition.includes('49')
|
formData.condition.includes('49')
|
||||||
) {
|
) {
|
||||||
@@ -389,7 +389,7 @@ const conditionChange = () => {
|
|||||||
formData.condition.includes('44') ||
|
formData.condition.includes('44') ||
|
||||||
formData.condition.includes('45')) &&
|
formData.condition.includes('45')) &&
|
||||||
(formData.condition.includes('46') ||
|
(formData.condition.includes('46') ||
|
||||||
// formData.condition.includes('47') ||
|
// formData.condition.includes('47') ||
|
||||||
// formData.condition.includes('48') ||
|
// formData.condition.includes('48') ||
|
||||||
formData.condition.includes('49'))
|
formData.condition.includes('49'))
|
||||||
) {
|
) {
|
||||||
@@ -401,7 +401,7 @@ const conditionChange = () => {
|
|||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
formData.condition.includes('46') ||
|
formData.condition.includes('46') ||
|
||||||
// formData.condition.includes('47') ||
|
// formData.condition.includes('47') ||
|
||||||
// formData.condition.includes('48') ||
|
// formData.condition.includes('48') ||
|
||||||
formData.condition.includes('49')
|
formData.condition.includes('49')
|
||||||
) {
|
) {
|
||||||
|
|||||||
@@ -132,7 +132,7 @@ const init = (row: any) => {
|
|||||||
) / 100
|
) / 100
|
||||||
|
|
||||||
SvData[`h${i - 0.5}`] =
|
SvData[`h${i - 0.5}`] =
|
||||||
Math.floor(Math.max(...[row.V.A[`SV_` + i], row.V.B[`SV_` + i], row.V.C[`SV_` + i]].map(Number)) * 100) /
|
Math.floor(Math.max(...[row.V.A[`SV_` + (i-1)], row.V.B[`SV_` + (i-1)], row.V.C[`SV_` + (i-1)]].map(Number)) * 100) /
|
||||||
100
|
100
|
||||||
iData[`h${i + 1}`] =
|
iData[`h${i + 1}`] =
|
||||||
Math.floor(
|
Math.floor(
|
||||||
@@ -140,7 +140,7 @@ const init = (row: any) => {
|
|||||||
) / 100
|
) / 100
|
||||||
}
|
}
|
||||||
SvData[`h49.5`] =
|
SvData[`h49.5`] =
|
||||||
Math.floor(Math.max(...[row.V.A[`SV_50`], row.V.B[`SV_50`], row.V.C[`SV_50`]].map(Number)) * 100) / 100
|
Math.floor(Math.max(...[row.V.A[`SV_49`], row.V.B[`SV_49`], row.V.C[`SV_49`]].map(Number)) * 100) / 100
|
||||||
|
|
||||||
tabsList.value[0].data = vData
|
tabsList.value[0].data = vData
|
||||||
tabsList.value[1].data = SvData
|
tabsList.value[1].data = SvData
|
||||||
|
|||||||
@@ -341,7 +341,27 @@ const setEcharts = () => {
|
|||||||
fontSize: 14
|
fontSize: 14
|
||||||
},
|
},
|
||||||
backgroundColor: 'rgba(0,0,0,0.55)',
|
backgroundColor: 'rgba(0,0,0,0.55)',
|
||||||
borderWidth: 0
|
borderWidth: 0,
|
||||||
|
formatter(params: any) {
|
||||||
|
|
||||||
|
const xname = params[0].value[0]
|
||||||
|
let str = `${xname}<br>`
|
||||||
|
params.forEach((el: any, index: any) => {
|
||||||
|
let marker = ''
|
||||||
|
|
||||||
|
// if (el.value[3] == 'dashed') {
|
||||||
|
// for (let i = 0; i < 3; i++) {
|
||||||
|
// marker += `<span style="display:inline-block;border: 2px ${el.color} solid;margin-right:5px;width:10px;height:0px;background-color:#ffffff00;"></span>`
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// marker = `<span style="display:inline-block;border: 2px ${el.color} ${el.value[3]};margin-right:5px;width:40px;height:0px;background-color:#ffffff00;"></span>`
|
||||||
|
// }
|
||||||
|
str += `${el.marker} ${el.seriesName.split('(')[0]}:${
|
||||||
|
el.value[1] ? el.value[1] + ' ' + (el.value[2] || '') : '-'
|
||||||
|
}<br>`
|
||||||
|
})
|
||||||
|
return str
|
||||||
|
}
|
||||||
},
|
},
|
||||||
series: []
|
series: []
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<el-checkbox v-model="checked" @change="checkChange" />
|
<el-checkbox v-model="checked" @change="checkChange" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="日期">
|
<el-form-item label="日期">
|
||||||
<DatePicker ref="datePickerRef"></DatePicker>
|
<DatePicker ref="datePickerRef" :theCurrentTime="true"></DatePicker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="指标类型:">
|
<el-form-item label="指标类型:">
|
||||||
<el-select
|
<el-select
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
<!-- <el-form :inline="true">
|
<!-- <el-form :inline="true">
|
||||||
|
|
||||||
</el-form> -->
|
</el-form> -->
|
||||||
<div id="canvas" class="mt10" :style="height1" v-loading="loading">
|
<div id="canvas" class="mt10" :style="height1" style="overflow-y: auto" v-loading="loading">
|
||||||
<my-echart :options="item.option" v-for="item in list" :style="height" @triggerPoint="triggerPoint" />
|
<my-echart :options="item.option" v-for="item in list" :style="height" @triggerPoint="triggerPoint" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -90,6 +90,7 @@ import { queryEventDetailByEventId } from '@/api/event-boot/highAndLowPressure'
|
|||||||
import TableStore from '@/utils/tableStore'
|
import TableStore from '@/utils/tableStore'
|
||||||
import waveForm from '@/components/echarts/waveForm.vue'
|
import waveForm from '@/components/echarts/waveForm.vue'
|
||||||
import html2canvas from 'html2canvas'
|
import html2canvas from 'html2canvas'
|
||||||
|
import { ElMessage } from 'element-plus'
|
||||||
import * as echarts from 'echarts' // 全引入
|
import * as echarts from 'echarts' // 全引入
|
||||||
const datePickerRef = ref()
|
const datePickerRef = ref()
|
||||||
const monitoringPoint = useMonitoringPoint()
|
const monitoringPoint = useMonitoringPoint()
|
||||||
@@ -139,7 +140,7 @@ onMounted(() => {
|
|||||||
init()
|
init()
|
||||||
})
|
})
|
||||||
const height: any = ref(mainHeight(200, 1))
|
const height: any = ref(mainHeight(200, 1))
|
||||||
const height1: any = ref(mainHeight(200))
|
const height1: any = ref(mainHeight(160))
|
||||||
const checkChange = () => {
|
const checkChange = () => {
|
||||||
if (checked.value) {
|
if (checked.value) {
|
||||||
monitoringPoint.setShowCheckBox(true)
|
monitoringPoint.setShowCheckBox(true)
|
||||||
@@ -149,6 +150,9 @@ const checkChange = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
const init = () => {
|
const init = () => {
|
||||||
|
if (formData.condition.length == 0) {
|
||||||
|
return ElMessage.warning('请选择指标类型')
|
||||||
|
}
|
||||||
loading.value = true
|
loading.value = true
|
||||||
formData.lineId = checked.value ? monitoringPoint.state.lineIds : [monitoringPoint.state.lineId]
|
formData.lineId = checked.value ? monitoringPoint.state.lineIds : [monitoringPoint.state.lineId]
|
||||||
formData.searchBeginTime = datePickerRef.value.timeValue[0]
|
formData.searchBeginTime = datePickerRef.value.timeValue[0]
|
||||||
@@ -162,13 +166,14 @@ const init = () => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
getHistoryResult(formData)
|
getHistoryResult(formData)
|
||||||
.then((res: any) => {
|
.then(async (res: any) => {
|
||||||
if (directionValue >= 0) {
|
if (directionValue >= 0) {
|
||||||
res.data[directionValue].targetName = '谐波电流方向'
|
res.data[directionValue].targetName = '谐波电流方向'
|
||||||
traceability.value = [(res.data as [])[directionValue]]
|
traceability.value = [(res.data as [])[directionValue]]
|
||||||
}
|
}
|
||||||
list.value = []
|
list.value = []
|
||||||
shujuchuli(res)
|
await shujuchuli(res)
|
||||||
|
await selectChange(tableHeaderRef.value.showSelect)
|
||||||
loading.value = false
|
loading.value = false
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
@@ -1146,7 +1151,7 @@ const shujuchuli = (res: any) => {
|
|||||||
rendering()
|
rendering()
|
||||||
}
|
}
|
||||||
const rendering = () => {
|
const rendering = () => {
|
||||||
height.value = mainHeight(160, list.value.length)
|
height.value = mainHeight(160, list.value.length > 3 ? 3 : list.value.length)
|
||||||
|
|
||||||
list.value.forEach((item: any) => {
|
list.value.forEach((item: any) => {
|
||||||
if (item.targetName == '电压不平衡') {
|
if (item.targetName == '电压不平衡') {
|
||||||
@@ -1406,22 +1411,22 @@ const getEcharts = () => {
|
|||||||
? 'A相谐波电流方向:无<br/>'
|
? 'A相谐波电流方向:无<br/>'
|
||||||
: 'A相谐波电流方向:流出<br/>'
|
: 'A相谐波电流方向:流出<br/>'
|
||||||
} else if (params[i].seriesName == 'B相谐波电流方向') {
|
} else if (params[i].seriesName == 'B相谐波电流方向') {
|
||||||
tips += params[i].marker +
|
tips +=
|
||||||
params[i].value[1] > 0
|
params[i].marker + params[i].value[1] > 0
|
||||||
? 'B相谐波电流方向:流入<br/>'
|
? 'B相谐波电流方向:流入<br/>'
|
||||||
: params[i].value[1] == 0
|
: params[i].value[1] == 0
|
||||||
? 'B相谐波电流方向:无<br/>'
|
? 'B相谐波电流方向:无<br/>'
|
||||||
: 'B相谐波电流方向:流出<br/>'
|
: 'B相谐波电流方向:流出<br/>'
|
||||||
} else if (params[i].seriesName == 'C相谐波电流方向') {
|
} else if (params[i].seriesName == 'C相谐波电流方向') {
|
||||||
tips += params[i].marker +
|
tips +=
|
||||||
params[i].value[1] > 0
|
params[i].marker + params[i].value[1] > 0
|
||||||
? 'C相谐波电流方向:流入<br/>'
|
? 'C相谐波电流方向:流入<br/>'
|
||||||
: params[i].value[1] == 0
|
: params[i].value[1] == 0
|
||||||
? 'C相谐波电流方向:无<br/>'
|
? 'C相谐波电流方向:无<br/>'
|
||||||
: 'C相谐波电流方向:流出<br/>'
|
: 'C相谐波电流方向:流出<br/>'
|
||||||
} else if (params[i].seriesName == '总谐波电流方向') {
|
} else if (params[i].seriesName == '总谐波电流方向') {
|
||||||
tips += params[i].marker +
|
tips +=
|
||||||
params[i].value[1] > 0
|
params[i].marker + params[i].value[1] > 0
|
||||||
? '总谐波电流方向:流入<br/>'
|
? '总谐波电流方向:流入<br/>'
|
||||||
: params[i].value[1] == 0
|
: params[i].value[1] == 0
|
||||||
? '总谐波电流方向:无<br/>'
|
? '总谐波电流方向:无<br/>'
|
||||||
@@ -1430,22 +1435,22 @@ const getEcharts = () => {
|
|||||||
let str = (params[i].value[1] * 1).toString()
|
let str = (params[i].value[1] * 1).toString()
|
||||||
let reg = str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g
|
let reg = str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g
|
||||||
let str1 = str.replace(reg, '$1,')
|
let str1 = str.replace(reg, '$1,')
|
||||||
tips += params[i].marker + params[i].seriesName.replace('(kV)', '') + ':' + str1 + 'kV<br/>'
|
tips += params[i].marker + params[i].seriesName.replace('(kV)', '') + ':' + str1 + 'kV<br/>'
|
||||||
} else if (params[i].seriesName == '零序电压(V)' || params[i].seriesName == '负序电压(V)') {
|
} else if (params[i].seriesName == '零序电压(V)' || params[i].seriesName == '负序电压(V)') {
|
||||||
let str = (params[i].value[1] * 1).toString()
|
let str = (params[i].value[1] * 1).toString()
|
||||||
let reg = str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g
|
let reg = str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g
|
||||||
let str1 = str.replace(reg, '$1,')
|
let str1 = str.replace(reg, '$1,')
|
||||||
tips += params[i].marker + params[i].seriesName.replace('(V)', '') + ':' + str1 + 'V<br/>'
|
tips += params[i].marker + params[i].seriesName.replace('(V)', '') + ':' + str1 + 'V<br/>'
|
||||||
} else if (params[i].seriesName !== '正序电压(kV)') {
|
} else if (params[i].seriesName !== '正序电压(kV)') {
|
||||||
let str = (params[i].value[1] * 1).toString()
|
let str = (params[i].value[1] * 1).toString()
|
||||||
let reg = str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g
|
let reg = str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g
|
||||||
let str1 = str.replace(reg, '$1,')
|
let str1 = str.replace(reg, '$1,')
|
||||||
tips += params[i].marker + params[i].seriesName + ':' + str1 + '<br/>'
|
tips += params[i].marker + params[i].seriesName + ':' + str1 + '<br/>'
|
||||||
} else {
|
} else {
|
||||||
let str = (params[i].value[2] * 1).toString()
|
let str = (params[i].value[2] * 1).toString()
|
||||||
let reg = str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g
|
let reg = str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g
|
||||||
let str1 = str.replace(reg, '$1,')
|
let str1 = str.replace(reg, '$1,')
|
||||||
tips += params[i].marker + params[i].seriesName + ':' + str1 + '<br/>'
|
tips += params[i].marker + params[i].seriesName + ':' + str1 + '<br/>'
|
||||||
|
|
||||||
let str2 = (params[i].value[3] * 1).toString()
|
let str2 = (params[i].value[3] * 1).toString()
|
||||||
let reg2 = str2.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g
|
let reg2 = str2.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g
|
||||||
@@ -1453,7 +1458,7 @@ const getEcharts = () => {
|
|||||||
// if(params[i].seriesName){
|
// if(params[i].seriesName){
|
||||||
|
|
||||||
// }
|
// }
|
||||||
tips += params[i].marker + params[i].seriesName + ':' + str12 + '<br/>'
|
tips += params[i].marker + params[i].seriesName + ':' + str12 + '<br/>'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1806,7 +1811,7 @@ const conditionChange = () => {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
console.log('🚀 ~ setTimeout ~ tableHeaderRef.value:', tableHeaderRef.value)
|
// console.log('🚀 ~ setTimeout ~ tableHeaderRef.value:', tableHeaderRef.value)
|
||||||
|
|
||||||
tableHeaderRef.value && tableHeaderRef.value?.computedSearchRow()
|
tableHeaderRef.value && tableHeaderRef.value?.computedSearchRow()
|
||||||
}, 100)
|
}, 100)
|
||||||
@@ -1830,7 +1835,7 @@ const triggerPoint = (data: any) => {
|
|||||||
}
|
}
|
||||||
// 计算高度
|
// 计算高度
|
||||||
const selectChange = (flag: boolean) => {
|
const selectChange = (flag: boolean) => {
|
||||||
height.value = mainHeight(flag ? 220 : 160, list.value.length)
|
height.value = mainHeight(flag ? 220 : 160, list.value.length > 3 ? 3 : list.value.length)
|
||||||
}
|
}
|
||||||
const backbxlb = () => {
|
const backbxlb = () => {
|
||||||
view.value = true
|
view.value = true
|
||||||
|
|||||||
@@ -98,15 +98,16 @@ const init = () => {
|
|||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
for (let i = 0; i < steadyInfoData.length; i++) {
|
for (let i = 0; i < steadyInfoData.length; i++) {
|
||||||
if (steadyInfoData[i] == 3.1415) {
|
yData2.push(steadyInfoData[i])
|
||||||
steadyInfoData[i] = 1
|
// if (steadyInfoData[i] == 3.14159) {
|
||||||
yData2.push(steadyInfoData[i])
|
// steadyInfoData[i] = 0
|
||||||
} else if (steadyInfoData[i] == 3.14159) {
|
// yData2.push(steadyInfoData[i])
|
||||||
steadyInfoData[i] = 1
|
// } else if (steadyInfoData[i] == 3.14159) {
|
||||||
yData2.push(steadyInfoData[i])
|
// steadyInfoData[i] = 0
|
||||||
} else if (steadyInfoData[i] !== 3.14159) {
|
// yData2.push(steadyInfoData[i])
|
||||||
yData2.push(steadyInfoData[i])
|
// } else if (steadyInfoData[i] !== 3.14159) {
|
||||||
}
|
// yData2.push(steadyInfoData[i])
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
let series: any[] = [
|
let series: any[] = [
|
||||||
{
|
{
|
||||||
@@ -183,13 +184,13 @@ const init = () => {
|
|||||||
name: formData.periodBeginTime + '至' + formData.periodEndTime,
|
name: formData.periodBeginTime + '至' + formData.periodEndTime,
|
||||||
type: 'bar',
|
type: 'bar',
|
||||||
barMaxWidth: 30,
|
barMaxWidth: 30,
|
||||||
label: {
|
// label: {
|
||||||
show: true,
|
// show: true,
|
||||||
position: 'top',
|
// position: 'top',
|
||||||
distance: 2,
|
// distance: 2,
|
||||||
color: '#fff',
|
// color: '#fff',
|
||||||
fontWeight: 'bolder'
|
// fontWeight: 'bolder'
|
||||||
},
|
// },
|
||||||
data: yData2,
|
data: yData2,
|
||||||
itemStyle: {
|
itemStyle: {
|
||||||
color: (params: any) => {
|
color: (params: any) => {
|
||||||
@@ -197,6 +198,8 @@ const init = () => {
|
|||||||
return gradeColor3[0]
|
return gradeColor3[0]
|
||||||
} else if (params.value > 60) {
|
} else if (params.value > 60) {
|
||||||
return gradeColor3[1]
|
return gradeColor3[1]
|
||||||
|
} else if (params.value == 3.14159) {
|
||||||
|
return '#ccc'
|
||||||
} else {
|
} else {
|
||||||
return gradeColor3[2]
|
return gradeColor3[2]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +1,22 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="display: flex; flex-direction: column; height: 100%">
|
<div style="display: flex; flex-direction: column; height: 100%">
|
||||||
<TableHeader ref="TableHeaderRef" :showSearch="false" >
|
<TableHeader ref="TableHeaderRef" :showSearch="false">
|
||||||
<template v-slot:select>
|
<template v-slot:select>
|
||||||
<el-form-item label="日期">
|
<el-form-item label="日期">
|
||||||
<DatePicker ref="datePickerRef"></DatePicker>
|
<DatePicker ref="datePickerRef"></DatePicker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="指标">
|
<el-form-item label="指标">
|
||||||
<el-radio-group v-model="formData.harmState">
|
<el-radio-group v-model="formData.harmState">
|
||||||
<el-radio-button :label="0">谐波电压含有率</el-radio-button>
|
<el-radio-button :label="0">谐波电压含有率</el-radio-button>
|
||||||
<el-radio-button :label="1">谐波电流幅值</el-radio-button>
|
<el-radio-button :label="1">谐波电流幅值</el-radio-button>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:operation>
|
<template v-slot:operation>
|
||||||
<el-button type="primary" @click="init" icon="el-icon-Search">查询</el-button>
|
<el-button type="primary" @click="init" icon="el-icon-Search">查询</el-button>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
</TableHeader>
|
</TableHeader>
|
||||||
|
|
||||||
<vxe-table :data="analysisData" v-bind="defaultAttribute">
|
<vxe-table :data="analysisData" v-bind="defaultAttribute">
|
||||||
<vxe-column field="name" title="指标" width="140px"></vxe-column>
|
<vxe-column field="name" title="指标" width="140px"></vxe-column>
|
||||||
<vxe-column
|
<vxe-column
|
||||||
@@ -27,7 +26,7 @@
|
|||||||
width="80px"
|
width="80px"
|
||||||
></vxe-column>
|
></vxe-column>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
<div style="flex: 1" class="mt10" v-loading="loading">
|
<div style="flex: 1" class="mt10" v-loading="loading">
|
||||||
<my-echart :options="options" />
|
<my-echart :options="options" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -69,8 +68,12 @@ const init = () => {
|
|||||||
analysisData.value.push(
|
analysisData.value.push(
|
||||||
{
|
{
|
||||||
name: '谐波电流幅值(A)',
|
name: '谐波电流幅值(A)',
|
||||||
originData: res.data.harmInHarmValue.map((item: number) => item.toFixed(3)),
|
originData: res.data.harmInHarmValue.map((item: number) =>
|
||||||
...res.data.harmInHarmValue.map((item: number) => item.toFixed(3))
|
item == null || item == 3.14159 ? 0.14159 : Math.floor(item * 1000) / 1000
|
||||||
|
),
|
||||||
|
...res.data.harmInHarmValue.map((item: number) =>
|
||||||
|
item == null || item == 3.14159 ? '/' : Math.floor(item * 1000) / 1000
|
||||||
|
)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: '国标限值(A)',
|
name: '国标限值(A)',
|
||||||
@@ -82,8 +85,12 @@ const init = () => {
|
|||||||
analysisData.value.push(
|
analysisData.value.push(
|
||||||
{
|
{
|
||||||
name: '谐波电压含有率(%)',
|
name: '谐波电压含有率(%)',
|
||||||
originData: res.data.harmInHarmValue.map((item: number) => item.toFixed(3)),
|
originData: res.data.harmInHarmValue.map((item: number) =>
|
||||||
...res.data.harmInHarmValue.map((item: number) => item.toFixed(3))
|
item == null || item == 3.14159 ? 0.14159 : Math.floor(item * 1000) / 1000
|
||||||
|
),
|
||||||
|
...res.data.harmInHarmValue.map((item: number) =>
|
||||||
|
item == null || item == 3.14159 ? '/' : Math.floor(item * 1000) / 1000
|
||||||
|
)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: '国标限值(%)',
|
name: '国标限值(%)',
|
||||||
|
|||||||
@@ -1,26 +1,26 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style="display: flex; flex-direction: column; height: 100%">
|
<div style="display: flex; flex-direction: column; height: 100%">
|
||||||
<TableHeader ref="TableHeaderRef" :showSearch="false" >
|
<TableHeader ref="TableHeaderRef" :showSearch="false">
|
||||||
<template v-slot:select>
|
<template v-slot:select>
|
||||||
<el-form-item label="日期">
|
<el-form-item label="日期">
|
||||||
<DatePicker ref="datePickerRef"></DatePicker>
|
<DatePicker ref="datePickerRef"></DatePicker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="对比">
|
<el-form-item label="对比">
|
||||||
<el-select v-model="searchType" clearable placeholder="可选择同比、环比">
|
<el-select v-model="searchType" clearable placeholder="可选择同比、环比">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in searchTypeOptions"
|
v-for="item in searchTypeOptions"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
:label="item.label"
|
:label="item.label"
|
||||||
:value="item.value"
|
:value="item.value"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot:operation>
|
<template v-slot:operation>
|
||||||
<el-button type="primary" @click="init" icon="el-icon-Search">查询</el-button>
|
<el-button type="primary" @click="init" icon="el-icon-Search">查询</el-button>
|
||||||
</template>
|
</template>
|
||||||
</TableHeader>
|
</TableHeader>
|
||||||
|
|
||||||
<div style="flex: 1; display: flex; overflow: hidden" class="mt10" v-loading="loading">
|
<div style="flex: 1; display: flex; overflow: hidden" class="mt10" v-loading="loading">
|
||||||
<div style="flex: 1">
|
<div style="flex: 1">
|
||||||
<my-echart :options="options1" />
|
<my-echart :options="options1" />
|
||||||
@@ -90,11 +90,15 @@ const init = () => {
|
|||||||
formData.periodBeginTime = ''
|
formData.periodBeginTime = ''
|
||||||
formData.periodEndTime = ''
|
formData.periodEndTime = ''
|
||||||
}
|
}
|
||||||
Promise.all([getComFlagInfoData(formData), getRunInfoData(formData)]).then((res: any) => {
|
Promise.all([getComFlagInfoData(formData), getRunInfoData(formData)])
|
||||||
handlerOptions1(res[0].data)
|
.then((res: any) => {
|
||||||
handlerOptions2(res[1].data)
|
handlerOptions1(res[0].data)
|
||||||
loading.value = false
|
handlerOptions2(res[1].data)
|
||||||
}).catch(() => { loading.value = false })
|
loading.value = false
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
loading.value = false
|
||||||
|
})
|
||||||
}
|
}
|
||||||
const handlerOptions1 = (data: any) => {
|
const handlerOptions1 = (data: any) => {
|
||||||
options1.value = {
|
options1.value = {
|
||||||
@@ -106,13 +110,13 @@ const handlerOptions1 = (data: any) => {
|
|||||||
},
|
},
|
||||||
tooltip: {
|
tooltip: {
|
||||||
formatter: function (params: any) {
|
formatter: function (params: any) {
|
||||||
var res = params[0].name + '<br/>终端运行状态为:'
|
var res = params[0].data[0] + '<br/>终端运行状态为:'
|
||||||
var texts = ''
|
var texts = ''
|
||||||
if (params[0].value === 2 || params[0].value === '2') {
|
if (params[0].data[1] === 2 || params[0].data[1] === '2') {
|
||||||
texts = '退出'
|
texts = '退出'
|
||||||
} else if (params[0].value === 0 || params[0].value === '0') {
|
} else if (params[0].data[1] === 0 || params[0].data[1] === '0') {
|
||||||
texts = '中断'
|
texts = '中断'
|
||||||
} else if (params[0].value === 1 || params[0].value === '1') {
|
} else if (params[0].data[1] === 1 || params[0].data[1] === '1') {
|
||||||
texts = '正常'
|
texts = '正常'
|
||||||
}
|
}
|
||||||
res = res + texts
|
res = res + texts
|
||||||
@@ -120,11 +124,21 @@ const handlerOptions1 = (data: any) => {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
xAxis: {
|
xAxis: {
|
||||||
type: 'category',
|
// type: 'category',
|
||||||
data: data.updateTime
|
// data: data.updateTime
|
||||||
|
type: 'time',
|
||||||
|
name: '时间',
|
||||||
|
//
|
||||||
|
axisLabel: {
|
||||||
|
formatter: {
|
||||||
|
day: '{MM}-{dd}',
|
||||||
|
month: '{MM}',
|
||||||
|
year: '{yyyy}'
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
yAxis: {
|
yAxis: {
|
||||||
name:'状态',
|
name: '状态',
|
||||||
type: 'value',
|
type: 'value',
|
||||||
axisLabel: {
|
axisLabel: {
|
||||||
// 这里重新定义就可以
|
// 这里重新定义就可以
|
||||||
@@ -144,8 +158,9 @@ const handlerOptions1 = (data: any) => {
|
|||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
name: '中断运行状态',
|
name: '中断运行状态',
|
||||||
data: data.type,
|
data: data.type.map((item: any, index: number) => [data.updateTime[index], item]),
|
||||||
type: 'line'
|
type: 'line',
|
||||||
|
step: 'end'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -165,7 +180,7 @@ const handlerOptions2 = (data: any) => {
|
|||||||
: [`${formData.searchBeginTime} 至 ${formData.searchEndTime}`]
|
: [`${formData.searchBeginTime} 至 ${formData.searchEndTime}`]
|
||||||
},
|
},
|
||||||
yAxis: {
|
yAxis: {
|
||||||
name:'%',
|
name: '%',
|
||||||
type: 'value'
|
type: 'value'
|
||||||
},
|
},
|
||||||
series: [
|
series: [
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog draggable width="1300px" class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
<el-dialog draggable width="135 0px" class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||||
<div style="display: flex">
|
<div style="display: flex">
|
||||||
<div :style="height1" class="mr10 box" style="width: 450px">
|
<div :style="height1" class="mr10 box" style="width: 500px">
|
||||||
<vxe-table
|
<vxe-table
|
||||||
height="auto"
|
height="auto"
|
||||||
:data="TableData"
|
:data="TableData"
|
||||||
@@ -12,6 +12,7 @@
|
|||||||
>
|
>
|
||||||
<vxe-column type="seq" title="序号" width="60px"></vxe-column>
|
<vxe-column type="seq" title="序号" width="60px"></vxe-column>
|
||||||
<vxe-column field="date" title="日期"></vxe-column>
|
<vxe-column field="date" title="日期"></vxe-column>
|
||||||
|
<vxe-column field="bdName" title="所属电站(场站)" width="120px"></vxe-column>
|
||||||
<vxe-column field="monitorName" title="监测点名称" width="120px"></vxe-column>
|
<vxe-column field="monitorName" title="监测点名称" width="120px"></vxe-column>
|
||||||
<vxe-column field="timeSum" title="告警时间(分钟)" width="80px"></vxe-column>
|
<vxe-column field="timeSum" title="告警时间(分钟)" width="80px"></vxe-column>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
|
|||||||
@@ -18,25 +18,50 @@
|
|||||||
:value="item.transtypeId"
|
:value="item.transtypeId"
|
||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
|
<el-select
|
||||||
|
v-if="item.field == 'harmId'"
|
||||||
|
v-model="form[item.field]"
|
||||||
|
filterable
|
||||||
|
clearable
|
||||||
|
placeholder="请选择谐波源"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in characteristic"
|
||||||
|
:key="item.harmId"
|
||||||
|
:label="item.harmName"
|
||||||
|
:value="item.harmId"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-else-if="
|
v-else-if="
|
||||||
item.field == 'transNum' ||
|
item.field == 'transNum' ||
|
||||||
item.field == 'capacitorNum' ||
|
item.field == 'capacitorNum' ||
|
||||||
item.field == 'capacitorCapacity' ||
|
item.field == 'capacitorCapacity' ||
|
||||||
item.field == 'capacitorReactance'
|
item.field == 'capacitorReactance' ||
|
||||||
|
item.field == 'flickerCoeff' ||
|
||||||
|
item.field == 's'||
|
||||||
|
item.field == 'transhighCapacity'||
|
||||||
|
item.field == 'transImpedance'||
|
||||||
|
item.field == 'nonlinearloadPower'||
|
||||||
|
item.field == 'powerFactor'
|
||||||
"
|
"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
v-model="form[item.field]"
|
v-model="form[item.field]"
|
||||||
show-word-limit
|
show-word-limit
|
||||||
|
:min="0"
|
||||||
placeholder="请输入值"
|
placeholder="请输入值"
|
||||||
></el-input-number>
|
></el-input-number>
|
||||||
|
|
||||||
<el-select
|
<el-select
|
||||||
v-else-if="item.field == 'capacitorScale'"
|
v-else-if="
|
||||||
|
item.field == 'capacitorScale' ||
|
||||||
|
item.field == 'linevoltageScale' ||
|
||||||
|
item.field == 'translowScale'
|
||||||
|
"
|
||||||
v-model="form[item.field]"
|
v-model="form[item.field]"
|
||||||
filterable
|
filterable
|
||||||
placeholder="请选择接入变电站"
|
placeholder="请选择电压等级"
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in voltageleveloption"
|
v-for="item in voltageleveloption"
|
||||||
@@ -64,15 +89,23 @@ import { reactive } from 'vue'
|
|||||||
import { useDictData } from '@/stores/dictData'
|
import { useDictData } from '@/stores/dictData'
|
||||||
import {
|
import {
|
||||||
transformerList,
|
transformerList,
|
||||||
|
characteristicList,
|
||||||
assessTransformerParamAdd,
|
assessTransformerParamAdd,
|
||||||
assessTransformerParamEdit,
|
assessTransformerParamEdit,
|
||||||
capacitorAdd,
|
capacitorAdd,
|
||||||
capacitorEdit
|
capacitorEdit,
|
||||||
|
windPowerAdd,
|
||||||
|
windPowerDdit,
|
||||||
|
loadParamAdd,
|
||||||
|
loadParamEdit,
|
||||||
|
shockAdd,
|
||||||
|
shockEdit
|
||||||
} from '@/api/advance-boot/assess'
|
} from '@/api/advance-boot/assess'
|
||||||
import { ElMessage, ElMessageBox, ElDatePicker } from 'element-plus'
|
import { ElMessage, ElMessageBox, ElDatePicker } from 'element-plus'
|
||||||
const emits = defineEmits(['init'])
|
const emits = defineEmits(['init'])
|
||||||
const child: any = ref([])
|
const child: any = ref([])
|
||||||
const transformer: any = ref([])
|
const transformer: any = ref([])
|
||||||
|
const characteristic: any = ref([])
|
||||||
const form: any = ref({})
|
const form: any = ref({})
|
||||||
const dictData = useDictData()
|
const dictData = useDictData()
|
||||||
//字典获取电压等级
|
//字典获取电压等级
|
||||||
@@ -86,6 +119,17 @@ const rules = {
|
|||||||
capacitorCapacity: [{ required: true, message: '请输入单组容量', trigger: 'blur' }],
|
capacitorCapacity: [{ required: true, message: '请输入单组容量', trigger: 'blur' }],
|
||||||
capacitorReactance: [{ required: true, message: '请输入电抗率', trigger: 'blur' }],
|
capacitorReactance: [{ required: true, message: '请输入电抗率', trigger: 'blur' }],
|
||||||
capacitorScale: [{ required: true, message: '请选择电压等级', trigger: 'change' }],
|
capacitorScale: [{ required: true, message: '请选择电压等级', trigger: 'change' }],
|
||||||
|
windgeneratorName: [{ required: true, message: '请输入风机名称', trigger: 'blur' }],
|
||||||
|
flickerCoeff: [{ required: true, message: '请输入风机闪变系数', trigger: 'blur' }],
|
||||||
|
s: [{ required: true, message: '请输入风机额定视在功率', trigger: 'blur' }],
|
||||||
|
loadName: [{ required: true, message: '请输入负荷名称', trigger: 'blur' }],
|
||||||
|
transhighCapacity: [{ required: true, message: '请输入配变容量', trigger: 'blur' }],
|
||||||
|
transImpedance: [{ required: true, message: '请输入配电变压器阻抗', trigger: 'blur' }],
|
||||||
|
nonlinearloadPower: [{ required: true, message: '请输入非线性负荷功率', trigger: 'blur' }],
|
||||||
|
powerFactor: [{ required: true, message: '请输入功率因数', trigger: 'blur' }],
|
||||||
|
linevoltageScale: [{ required: true, message: '请选择进线电压', trigger: 'change' }],
|
||||||
|
harmId: [{ required: true, message: '请选择谐波源特性', trigger: 'change' }],
|
||||||
|
translowScale: [{ required: true, message: '请选择配变低压侧电压', trigger: 'change' }],
|
||||||
}
|
}
|
||||||
const formRef = ref()
|
const formRef = ref()
|
||||||
const dialogVisible = ref(false)
|
const dialogVisible = ref(false)
|
||||||
@@ -114,35 +158,66 @@ const info = async () => {
|
|||||||
transformerList({}).then((res: any) => {
|
transformerList({}).then((res: any) => {
|
||||||
transformer.value = res.data
|
transformer.value = res.data
|
||||||
})
|
})
|
||||||
|
// 谐波源特特性
|
||||||
|
characteristicList({}).then((res: any) => {
|
||||||
|
characteristic.value = res.data
|
||||||
|
})
|
||||||
}
|
}
|
||||||
const submit = async () => {
|
const submit = async () => {
|
||||||
formRef.value.validate((valid: any) => {
|
formRef.value.validate(async (valid: any) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
if (title.value == '新增_变压器参数维护') {
|
if (title.value == '新增_变压器参数维护') {
|
||||||
assessTransformerParamAdd(form.value).then((res: any) => {
|
await assessTransformerParamAdd(form.value).then((res: any) => {
|
||||||
ElMessage.success('新增成功')
|
ElMessage.success('新增成功')
|
||||||
emits('init', 0)
|
emits('init', 0)
|
||||||
dialogVisible.value = false
|
|
||||||
})
|
})
|
||||||
} else if (title.value == '编辑_变压器参数维护') {
|
} else if (title.value == '编辑_变压器参数维护') {
|
||||||
assessTransformerParamEdit(form.value).then((res: any) => {
|
await assessTransformerParamEdit(form.value).then((res: any) => {
|
||||||
ElMessage.success('修改成功')
|
ElMessage.success('修改成功')
|
||||||
emits('init', 0)
|
emits('init', 0)
|
||||||
dialogVisible.value = false
|
|
||||||
})
|
})
|
||||||
} else if (title.value == '新增_电容器组参数维护') {
|
} else if (title.value == '新增_电容器组参数维护') {
|
||||||
capacitorAdd(form.value).then((res: any) => {
|
await capacitorAdd(form.value).then((res: any) => {
|
||||||
ElMessage.success('新增成功')
|
ElMessage.success('新增成功')
|
||||||
emits('init', 1)
|
emits('init', 1)
|
||||||
dialogVisible.value = false
|
|
||||||
})
|
})
|
||||||
} else if (title.value == '编辑_电容器组参数维护') {
|
} else if (title.value == '编辑_电容器组参数维护') {
|
||||||
capacitorEdit(form.value).then((res: any) => {
|
await capacitorEdit(form.value).then((res: any) => {
|
||||||
ElMessage.success('修改成功')
|
ElMessage.success('修改成功')
|
||||||
emits('init', 1)
|
emits('init', 1)
|
||||||
dialogVisible.value = false
|
})
|
||||||
|
} else if (title.value == '新增_风电参数') {
|
||||||
|
await windPowerAdd(form.value).then((res: any) => {
|
||||||
|
ElMessage.success('新增成功')
|
||||||
|
emits('init', 2)
|
||||||
|
})
|
||||||
|
} else if (title.value == '编辑_风电参数') {
|
||||||
|
await windPowerDdit(form.value).then((res: any) => {
|
||||||
|
ElMessage.success('修改成功')
|
||||||
|
emits('init', 2)
|
||||||
|
})
|
||||||
|
} else if (title.value == '新增_用户负荷') {
|
||||||
|
await loadParamAdd(form.value).then((res: any) => {
|
||||||
|
ElMessage.success('新增成功')
|
||||||
|
emits('init', 3)
|
||||||
|
})
|
||||||
|
} else if (title.value == '编辑_用户负荷') {
|
||||||
|
await loadParamEdit(form.value).then((res: any) => {
|
||||||
|
ElMessage.success('修改成功')
|
||||||
|
emits('init', 3)
|
||||||
|
})
|
||||||
|
}else if (title.value == '新增_冲击负荷') {
|
||||||
|
await loadParamAdd(form.value).then((res: any) => {
|
||||||
|
ElMessage.success('新增成功')
|
||||||
|
emits('init', 4)
|
||||||
|
})
|
||||||
|
} else if (title.value == '编辑_冲击负荷') {
|
||||||
|
await loadParamEdit(form.value).then((res: any) => {
|
||||||
|
ElMessage.success('修改成功')
|
||||||
|
emits('init', 4)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
dialogVisible.value = false
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,11 +43,16 @@ import { useDictData } from '@/stores/dictData'
|
|||||||
import {
|
import {
|
||||||
assessTransformerParamList,
|
assessTransformerParamList,
|
||||||
transformerList,
|
transformerList,
|
||||||
|
characteristicList,
|
||||||
assessTransformerParamDelete,
|
assessTransformerParamDelete,
|
||||||
capacitorList,
|
capacitorList,
|
||||||
capacitorDelete,
|
capacitorDelete,
|
||||||
windPowerList,
|
windPowerList,
|
||||||
windPowerDelete
|
windPowerDelete,
|
||||||
|
loadParamList,
|
||||||
|
loadParamDelete,
|
||||||
|
shockList,
|
||||||
|
shockDelete
|
||||||
} from '@/api/advance-boot/assess'
|
} from '@/api/advance-boot/assess'
|
||||||
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||||
import { ElMessage, ElMessageBox, ElDatePicker } from 'element-plus'
|
import { ElMessage, ElMessageBox, ElDatePicker } from 'element-plus'
|
||||||
@@ -58,6 +63,7 @@ const dictData = useDictData()
|
|||||||
//字典获取电压等级
|
//字典获取电压等级
|
||||||
const voltageleveloption = dictData.getBasicData('Dev_Voltage_Stand')
|
const voltageleveloption = dictData.getBasicData('Dev_Voltage_Stand')
|
||||||
const transformer: any = ref([])
|
const transformer: any = ref([])
|
||||||
|
const characteristic: any = ref([])
|
||||||
const addformRef = ref()
|
const addformRef = ref()
|
||||||
const xTableRef = ref()
|
const xTableRef = ref()
|
||||||
|
|
||||||
@@ -118,15 +124,15 @@ const column: any = ref([
|
|||||||
child: [
|
child: [
|
||||||
{
|
{
|
||||||
title: '风机名称',
|
title: '风机名称',
|
||||||
field: 'name'
|
field: 'windgeneratorName'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '风机闪变系数',
|
title: '闪变系数',
|
||||||
field: 'name1'
|
field: 'flickerCoeff'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '风机额定视在功率',
|
title: '额定视在功率(kVA)',
|
||||||
field: 'name2'
|
field: 's'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -137,88 +143,82 @@ const column: any = ref([
|
|||||||
key: 'loadList',
|
key: 'loadList',
|
||||||
child: [
|
child: [
|
||||||
{
|
{
|
||||||
title: '配电窒名称',
|
title: '负荷名称',
|
||||||
field: 'name'
|
field: 'loadName'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '进线电压',
|
title: '进线电压',
|
||||||
field: 'name1'
|
field: 'linevoltageScale'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '配变容量(kVA)',
|
title: '配变容量(kVA)',
|
||||||
field: 'name2'
|
field: 'transhighCapacity'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '配电变压器阻抗(%)',
|
title: '配电变压器阻抗(%)',
|
||||||
field: 'name3'
|
field: 'transImpedance'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '谐波源特性',
|
title: '谐波源特性',
|
||||||
field: 'name4'
|
field: 'harmId'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '配变低压侧电压',
|
title: '配变低压侧电压',
|
||||||
field: 'name5'
|
field: 'translowScale'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '非线性负荷功率(kW)',
|
title: '非线性负荷功率(kW)',
|
||||||
field: 'name6'
|
field: 'nonlinearloadPower'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '功率因素',
|
title: '功率因数',
|
||||||
field: 'name7'
|
field: 'powerFactor'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
loading: false,
|
loading: false,
|
||||||
name: '冲击性负荷',
|
name: '冲击负荷',
|
||||||
|
|
||||||
key: 'impactList',
|
key: 'impactList',
|
||||||
child: [
|
child: [
|
||||||
{
|
{
|
||||||
title: '冲击负荷类型',
|
title: '冲击负荷类型',
|
||||||
field: 'name'
|
field: 'inpactloadtypeId'
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '冲击负荷功率(MVA)',
|
|
||||||
field: 'name1'
|
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title: '数量',
|
title: '数量',
|
||||||
field: 'name2'
|
field: 'inpactloadNum'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '启动方式',
|
title: '容量',
|
||||||
field: 'name3'
|
field: 'inpactloadPower'
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title: '启动容量倍数',
|
title: '是否隔离变',
|
||||||
field: 'name4'
|
field: 'isIsolationtrans'
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '冲击负荷高压侧电压',
|
|
||||||
field: 'name5'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: '有无隔离变',
|
|
||||||
field: 'name6'
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '隔离变阻抗(%)',
|
title: '隔离变阻抗(%)',
|
||||||
field: 'name7'
|
field: 'isolationtransImpedance'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '高压侧电压',
|
||||||
|
field: 'inpactloadhighScale'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '低压侧电压',
|
title: '低压侧电压',
|
||||||
field: 'name8'
|
field: 'inpactloadlowScale'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '负荷频度选择',
|
title: '负荷频度',
|
||||||
field: 'name9'
|
field: 'inpactloadFreq'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '闪变叠加系数',
|
title: '闪变叠加系数',
|
||||||
field: 'name10'
|
field: 'flickerCoeff'
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -250,34 +250,48 @@ const deleteFform = (item: any, i: any) => {
|
|||||||
confirmButtonText: '确定',
|
confirmButtonText: '确定',
|
||||||
cancelButtonText: '取消',
|
cancelButtonText: '取消',
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
}).then(() => {
|
}).then(async () => {
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
assessTransformerParamDelete(xTableRef.value[i].getCheckboxRecords().map(item => item.transId)).then(
|
await assessTransformerParamDelete(xTableRef.value[i].getCheckboxRecords().map(item => item.transId)).then(
|
||||||
res => {
|
res => {
|
||||||
ElMessage({
|
ElMessage({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: '删除成功!'
|
message: '删除成功!'
|
||||||
})
|
})
|
||||||
info(i)
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
} else if (i == 1) {
|
} else if (i == 1) {
|
||||||
capacitorDelete(xTableRef.value[i].getCheckboxRecords().map(item => item.capacitorId)).then(res => {
|
await capacitorDelete(xTableRef.value[i].getCheckboxRecords().map(item => item.capacitorId)).then(res => {
|
||||||
ElMessage({
|
ElMessage({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: '删除成功!'
|
message: '删除成功!'
|
||||||
})
|
})
|
||||||
info(i)
|
|
||||||
})
|
})
|
||||||
} else if (i == 2) {
|
} else if (i == 2) {
|
||||||
windPowerDelete(xTableRef.value[i].getCheckboxRecords().map(item => item.windgeneratorId)).then(res => {
|
await windPowerDelete(xTableRef.value[i].getCheckboxRecords().map(item => item.windgeneratorId)).then(
|
||||||
|
res => {
|
||||||
|
ElMessage({
|
||||||
|
type: 'success',
|
||||||
|
message: '删除成功!'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
)
|
||||||
|
} else if (i == 3) {
|
||||||
|
await loadParamDelete(xTableRef.value[i].getCheckboxRecords().map(item => item.loadId)).then(res => {
|
||||||
|
ElMessage({
|
||||||
|
type: 'success',
|
||||||
|
message: '删除成功!'
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} else if (i == 4) {
|
||||||
|
await shockDelete(xTableRef.value[i].getCheckboxRecords().map(item => item.inpactloadId)).then(res => {
|
||||||
ElMessage({
|
ElMessage({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: '删除成功!'
|
message: '删除成功!'
|
||||||
})
|
})
|
||||||
info(i)
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
info(i)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 编辑
|
// 编辑
|
||||||
@@ -288,18 +302,6 @@ const edit = (item: any, row: any) => {
|
|||||||
row: row
|
row: row
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
// 过滤数据
|
|
||||||
const formatter = (row: any) => {
|
|
||||||
if (row.column.field == 'transtypeId') {
|
|
||||||
const found = transformer.value.find((item: any) => item.transtypeId == row.cellValue)
|
|
||||||
return found.transtypeName || '' // 使用可选链并提供默认值
|
|
||||||
} else if (row.column.field == 'capacitorScale') {
|
|
||||||
const found = voltageleveloption.find((item: any) => item.id == row.cellValue)
|
|
||||||
return found.name || ''
|
|
||||||
} else {
|
|
||||||
return row.cellValue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const info = async (i: number) => {
|
const info = async (i: number) => {
|
||||||
column.value[i].loading = true
|
column.value[i].loading = true
|
||||||
@@ -310,30 +312,65 @@ const info = async (i: number) => {
|
|||||||
dataList.value.transformerList = res.data
|
dataList.value.transformerList = res.data
|
||||||
})
|
})
|
||||||
} else if (i == 1) {
|
} else if (i == 1) {
|
||||||
|
// 电容器参数维护
|
||||||
await capacitorList({ assessId: props.assessId }).then(res => {
|
await capacitorList({ assessId: props.assessId }).then(res => {
|
||||||
dataList.value.capacitorList = res.data
|
dataList.value.capacitorList = res.data
|
||||||
})
|
})
|
||||||
} else if (i == 2) {
|
} else if (i == 2) {
|
||||||
|
// 风电参数
|
||||||
await windPowerList({ assessId: props.assessId }).then(res => {
|
await windPowerList({ assessId: props.assessId }).then(res => {
|
||||||
dataList.value.windPowerList = res.data
|
dataList.value.windPowerList = res.data
|
||||||
})
|
})
|
||||||
|
} else if (i == 3) {
|
||||||
|
// 用户负荷参数
|
||||||
|
await loadParamList({ assessId: props.assessId }).then(res => {
|
||||||
|
dataList.value.loadList = res.data
|
||||||
|
})
|
||||||
|
} else if (i == 4) {
|
||||||
|
// 冲击性负荷
|
||||||
|
await shockList({ assessId: props.assessId }).then(res => {
|
||||||
|
dataList.value.impactList = res.data
|
||||||
|
})
|
||||||
}
|
}
|
||||||
column.value[i].loading = false
|
column.value[i].loading = false
|
||||||
}
|
}
|
||||||
|
// 过滤数据
|
||||||
|
const formatter = (row: any) => {
|
||||||
|
if (row.column.field == 'transtypeId') {
|
||||||
|
const found = transformer.value.find((item: any) => item.transtypeId == row.cellValue)
|
||||||
|
return found.transtypeName || '' // 使用可选链并提供默认值
|
||||||
|
} else if (row.column.field == 'harmId') {
|
||||||
|
const found = characteristic.value.find((item: any) => item.harmId == row.cellValue)
|
||||||
|
return found.harmName || '' // 使用可选链并提供默认值
|
||||||
|
} else if (
|
||||||
|
row.column.field == 'capacitorScale' ||
|
||||||
|
row.column.field == 'linevoltageScale' ||
|
||||||
|
row.column.field == 'translowScale'
|
||||||
|
) {
|
||||||
|
const found = voltageleveloption.find((item: any) => item.id == row.cellValue)
|
||||||
|
return found.name || ''
|
||||||
|
} else {
|
||||||
|
return row.cellValue
|
||||||
|
}
|
||||||
|
}
|
||||||
// 字典
|
// 字典
|
||||||
const dictionary = () => {
|
const dictionary = () => {
|
||||||
// 获取变压器参数字典列表
|
// 获取变压器参数字典列表
|
||||||
transformerList({}).then((res: any) => {
|
transformerList({}).then((res: any) => {
|
||||||
transformer.value = res.data
|
transformer.value = res.data
|
||||||
})
|
})
|
||||||
|
// 谐波源特特性
|
||||||
|
characteristicList({}).then((res: any) => {
|
||||||
|
characteristic.value = res.data
|
||||||
|
})
|
||||||
}
|
}
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
await dictionary()
|
await dictionary()
|
||||||
info(0) // 变压器参数维护
|
info(0) // 变压器参数维护
|
||||||
info(1) // 变压器参数维护
|
info(1) // 电容器参数维护
|
||||||
info(2) // 变压器参数维护
|
info(2) // 风电参数
|
||||||
// info(3) // 变压器参数维护
|
info(3) // 用户负荷
|
||||||
|
info(4) // 冲击性负荷
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped></style>
|
<style lang="scss" scoped></style>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog draggable width="1400px" class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
<el-dialog draggable width="1550px" class="cn-operate-dialog" v-model="dialogVisible" :title="title">
|
||||||
<div style="display: flex">
|
<div style="display: flex">
|
||||||
<div :style="height1" class="mr10 box" style="width: 450px">
|
<div :style="height1" class="mr10 box" style="width: 600px">
|
||||||
<vxe-table
|
<vxe-table
|
||||||
height="auto"
|
height="auto"
|
||||||
:data="TableData"
|
:data="TableData"
|
||||||
@@ -12,8 +12,10 @@
|
|||||||
>
|
>
|
||||||
<vxe-column type="seq" title="序号" width="60px"></vxe-column>
|
<vxe-column type="seq" title="序号" width="60px"></vxe-column>
|
||||||
<vxe-column field="date" title="日期"></vxe-column>
|
<vxe-column field="date" title="日期"></vxe-column>
|
||||||
|
<vxe-column field="bdName" title="所属电站(场站)" width="120px"></vxe-column>
|
||||||
<vxe-column field="monitorName" title="监测点名称" width="120px"></vxe-column>
|
<vxe-column field="monitorName" title="监测点名称" width="120px"></vxe-column>
|
||||||
<vxe-column field="timeSum" title="异常时间(分钟)" width="80px"></vxe-column>
|
<vxe-column field="timeSum" title="异常时间(分钟)" width="80px"></vxe-column>
|
||||||
|
<vxe-column field="errCount" title="异常次数" width="80px"></vxe-column>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: 'runManage/alarmCleaning'
|
name: 'runManage/cleaning'
|
||||||
})
|
})
|
||||||
import abnormal from './components/abnormal.vue'
|
import abnormal from './components/abnormal.vue'
|
||||||
// import alarm from './components/alarm.vue'
|
// import alarm from './components/alarm.vue'
|
||||||
|
|||||||
@@ -864,22 +864,22 @@ const 九江 = [
|
|||||||
{ lng:116.828758, lat: 29.963141},
|
{ lng:116.828758, lat: 29.963141},
|
||||||
{ lng:116.8265, lat: 29.976828},
|
{ lng:116.8265, lat: 29.976828},
|
||||||
{ lng:116.82974, lat: 29.989041},
|
{ lng:116.82974, lat: 29.989041},
|
||||||
{ lng:116.829544, 30.00654},
|
{ lng:116.829544, lat: 30.00654},
|
||||||
{ lng:116.80279, lat: 29.99651},
|
{ lng:116.80279, lat: 29.99651},
|
||||||
{ lng:116.787327, 30.02033},
|
{ lng:116.787327, lat: 30.02033},
|
||||||
{ lng:116.783498, 30.030739},
|
{ lng:116.783498, lat: 30.030739},
|
||||||
{ lng:116.770293, 30.035644},
|
{ lng:116.770293, lat: 30.035644},
|
||||||
{ lng:116.764549, 30.048939},
|
{ lng:116.764549, lat: 30.048939},
|
||||||
{ lng:116.753602, 30.048994},
|
{ lng:116.753602, lat: 30.048994},
|
||||||
{ lng:116.747368, 30.057221},
|
{ lng:116.747368, lat: 30.057221},
|
||||||
{ lng:116.720319, 30.053897},
|
{ lng:116.720319, lat: 30.053897},
|
||||||
{ lng:116.685662, 30.070622},
|
{ lng:116.685662, lat: 30.070622},
|
||||||
{ lng:116.666861, 30.076723},
|
{ lng:116.666861, lat: 30.076723},
|
||||||
{ lng:116.64261, 30.076396},
|
{ lng:116.64261, lat: 30.076396},
|
||||||
{ lng:116.611046, 30.070677},
|
{ lng:116.611046, lat: 30.070677},
|
||||||
{ lng:116.596564, 30.059727},
|
{ lng:116.596564, lat: 30.059727},
|
||||||
{ lng:116.586059, 30.046324},
|
{ lng:116.586059, lat: 30.046324},
|
||||||
{ lng:116.571332, 30.014443},
|
{ lng:116.571332, lat: 30.014443},
|
||||||
{ lng:116.571185, lat: 29.989204},
|
{ lng:116.571185, lat: 29.989204},
|
||||||
{ lng:116.564558, lat: 29.949343},
|
{ lng:116.564558, lat: 29.949343},
|
||||||
{ lng:116.558716, lat: 29.924306},
|
{ lng:116.558716, lat: 29.924306},
|
||||||
|
|||||||
@@ -1,25 +1,25 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style='display: flex;flex-direction: column;height: 100%' v-loading='loading'>
|
<div style="display: flex; flex-direction: column; height: 100%" v-loading="loading">
|
||||||
<el-form :inline='true'>
|
<el-form :inline="true" class="fx-jcsb">
|
||||||
<el-form-item label='日期'>
|
<el-form-item label="日期">
|
||||||
<DatePicker ref='datePickerRef'></DatePicker>
|
<DatePicker ref="datePickerRef"></DatePicker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type='primary' @click='init'>查询</el-button>
|
<el-button type="primary" @click="init" icon="el-icon-Search">查询</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-descriptions class='mt2' direction='vertical' :column='4' border>
|
<el-descriptions class="mt2" direction="vertical" :column="4" border>
|
||||||
<el-descriptions-item align='center' label='名称'>{{ data.name }}</el-descriptions-item>
|
<el-descriptions-item align="center" label="名称">{{ data.name }}</el-descriptions-item>
|
||||||
<el-descriptions-item align='center' label='事件总数'>{{ data.gs }}</el-descriptions-item>
|
<el-descriptions-item align="center" label="事件总数">{{ data.gs }}</el-descriptions-item>
|
||||||
<el-descriptions-item align='center' label='可容忍'>{{ data.krr }}</el-descriptions-item>
|
<el-descriptions-item align="center" label="可容忍">{{ data.krr }}</el-descriptions-item>
|
||||||
<el-descriptions-item align='center' label='不可容忍'> {{ data.bkrr }}</el-descriptions-item>
|
<el-descriptions-item align="center" label="不可容忍">{{ data.bkrr }}</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
<div style='flex: 1;' class='mt10'>
|
<div style="flex: 1" class="mt10">
|
||||||
<my-echart :options='options' />
|
<my-echart :options="options" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang='ts'>
|
<script setup lang="ts">
|
||||||
import { nextTick, onMounted, reactive, ref } from 'vue'
|
import { nextTick, onMounted, reactive, ref } from 'vue'
|
||||||
import DatePicker from '@/components/form/datePicker/index.vue'
|
import DatePicker from '@/components/form/datePicker/index.vue'
|
||||||
import MyEchart from '@/components/echarts/MyEchart.vue'
|
import MyEchart from '@/components/echarts/MyEchart.vue'
|
||||||
@@ -47,136 +47,123 @@ const init = () => {
|
|||||||
formData.lineIndex = monitoringPoint.state.lineId
|
formData.lineIndex = monitoringPoint.state.lineId
|
||||||
formData.startTime = datePickerRef.value.timeValue[0]
|
formData.startTime = datePickerRef.value.timeValue[0]
|
||||||
formData.endTime = datePickerRef.value.timeValue[1]
|
formData.endTime = datePickerRef.value.timeValue[1]
|
||||||
getPlot(formData).then(
|
getPlot(formData).then((res: any) => {
|
||||||
(res: any) => {
|
const gongData = gongfunction(res.data.voltageToleranceCurveDataList)
|
||||||
const gongData = gongfunction(res.data.voltageToleranceCurveDataList)
|
data.gs = res.data.voltageToleranceCurveDataList.length
|
||||||
data.gs = res.data.voltageToleranceCurveDataList.length
|
data.krr = gongData.pointI.length
|
||||||
data.krr = gongData.pointI.length
|
data.bkrr = gongData.pointIun.length
|
||||||
data.bkrr = gongData.pointIun.length
|
console.log(gongData)
|
||||||
console.log(gongData)
|
options.value = {
|
||||||
options.value = {
|
// backgroundColor: "#f9f9f9", //地图背景色深蓝
|
||||||
// backgroundColor: "#f9f9f9", //地图背景色深蓝
|
title: {
|
||||||
title: {
|
// text: `ITIC曲线(总统计:${gongData.pointI.length + gongData.pointIun.length}个,可容忍:${gongData.pointI.length}个,不可容忍:${gongData.pointIun.length}个)`
|
||||||
// text: `ITIC曲线(总统计:${gongData.pointI.length + gongData.pointIun.length}个,可容忍:${gongData.pointI.length}个,不可容忍:${gongData.pointIun.length}个)`
|
text: `ITIC曲线`
|
||||||
text: `ITIC曲线`
|
},
|
||||||
},
|
legend: {
|
||||||
legend: {
|
data: ['上限', '下限', '可容忍事件', '不可容忍事件']
|
||||||
data: ['上限', '下限', '可容忍事件', '不可容忍事件'],
|
},
|
||||||
},
|
tooltip: {
|
||||||
tooltip: {
|
trigger: 'item',
|
||||||
trigger: 'item',
|
show: true,
|
||||||
show: true,
|
axisPointer: {
|
||||||
axisPointer: {
|
type: 'shadow',
|
||||||
type: 'shadow',
|
label: {
|
||||||
label: {
|
|
||||||
color: '#fff',
|
|
||||||
fontSize: 16
|
|
||||||
}
|
|
||||||
},
|
|
||||||
textStyle: {
|
|
||||||
color: '#fff',
|
color: '#fff',
|
||||||
fontStyle: 'normal',
|
fontSize: 16
|
||||||
opacity: 0.35,
|
|
||||||
fontSize: 14
|
|
||||||
},
|
|
||||||
backgroundColor: 'rgba(0,0,0,0.55)',
|
|
||||||
borderWidth: 0,
|
|
||||||
formatter: function (a: any) {
|
|
||||||
var relVal = ''
|
|
||||||
relVal =
|
|
||||||
'<font style=\'color:' +
|
|
||||||
'\'>发生时间:' +
|
|
||||||
a.value[2] +
|
|
||||||
'</font><br/>'
|
|
||||||
relVal +=
|
|
||||||
'<font style=\'color:' +
|
|
||||||
'\'>持续时间:' +
|
|
||||||
a.value[0] +
|
|
||||||
's</font><br/>'
|
|
||||||
relVal +=
|
|
||||||
'<font style=\'color:' +
|
|
||||||
'\'>特征幅值:' +
|
|
||||||
a.value[1].toFixed(2) +
|
|
||||||
'%</font>'
|
|
||||||
return relVal
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
xAxis: [
|
textStyle: {
|
||||||
{
|
color: '#fff',
|
||||||
type: 'log',
|
fontStyle: 'normal',
|
||||||
min: 0.001,
|
opacity: 0.35,
|
||||||
max: 1000,
|
fontSize: 14
|
||||||
splitLine: {
|
},
|
||||||
show: false
|
backgroundColor: 'rgba(0,0,0,0.55)',
|
||||||
},
|
borderWidth: 0,
|
||||||
name: 's'
|
formatter: function (a: any) {
|
||||||
}
|
var relVal = ''
|
||||||
],
|
relVal = "<font style='color:" + "'>发生时间:" + a.value[2] + '</font><br/>'
|
||||||
yAxis: [
|
relVal += "<font style='color:" + "'>持续时间:" + a.value[0] + 's</font><br/>'
|
||||||
{
|
relVal += "<font style='color:" + "'>特征幅值:" + a.value[1].toFixed(2) + '%</font>'
|
||||||
type: 'value',
|
return relVal
|
||||||
splitNumber: 10,
|
|
||||||
minInterval: 3,
|
|
||||||
name: '%'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
options: {
|
|
||||||
dataZoom: null,
|
|
||||||
series: [
|
|
||||||
{
|
|
||||||
name: '上限',
|
|
||||||
type: 'line',
|
|
||||||
data: [
|
|
||||||
[0.001, 200],
|
|
||||||
[0.003, 140],
|
|
||||||
[0.003, 120],
|
|
||||||
[0.5, 120],
|
|
||||||
[0.5, 110],
|
|
||||||
[10, 110],
|
|
||||||
[1000, 110]
|
|
||||||
],
|
|
||||||
showSymbol: false,
|
|
||||||
tooltips: {
|
|
||||||
show: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '下限',
|
|
||||||
type: 'line',
|
|
||||||
data: [
|
|
||||||
[0.02, 0],
|
|
||||||
[0.02, 70],
|
|
||||||
[0.5, 70],
|
|
||||||
[0.5, 80],
|
|
||||||
[10, 80],
|
|
||||||
[10, 90],
|
|
||||||
[1000, 90]
|
|
||||||
],
|
|
||||||
showSymbol: false,
|
|
||||||
tooltips: {
|
|
||||||
show: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '可容忍事件',
|
|
||||||
type: 'scatter',
|
|
||||||
symbol: 'circle',
|
|
||||||
data: gongData.pointI
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '不可容忍事件',
|
|
||||||
type: 'scatter',
|
|
||||||
symbol: 'circle',
|
|
||||||
data: gongData.pointIun
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
xAxis: [
|
||||||
|
{
|
||||||
|
type: 'log',
|
||||||
|
min: 0.001,
|
||||||
|
max: 1000,
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
name: 's'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
yAxis: [
|
||||||
|
{
|
||||||
|
type: 'value',
|
||||||
|
splitNumber: 10,
|
||||||
|
minInterval: 3,
|
||||||
|
name: '%'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
color: ['#007D7B','#07CCCA', 'green','red'],
|
||||||
|
options: {
|
||||||
|
dataZoom: null,
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: '上限',
|
||||||
|
type: 'line',
|
||||||
|
data: [
|
||||||
|
[0.001, 200],
|
||||||
|
[0.003, 140],
|
||||||
|
[0.003, 120],
|
||||||
|
[0.5, 120],
|
||||||
|
[0.5, 110],
|
||||||
|
[10, 110],
|
||||||
|
[1000, 110]
|
||||||
|
],
|
||||||
|
showSymbol: false,
|
||||||
|
tooltips: {
|
||||||
|
show: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '下限',
|
||||||
|
type: 'line',
|
||||||
|
data: [
|
||||||
|
[0.02, 0],
|
||||||
|
[0.02, 70],
|
||||||
|
[0.5, 70],
|
||||||
|
[0.5, 80],
|
||||||
|
[10, 80],
|
||||||
|
[10, 90],
|
||||||
|
[1000, 90]
|
||||||
|
],
|
||||||
|
showSymbol: false,
|
||||||
|
tooltips: {
|
||||||
|
show: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '可容忍事件',
|
||||||
|
type: 'scatter',
|
||||||
|
symbol: 'circle',
|
||||||
|
data: gongData.pointI
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '不可容忍事件',
|
||||||
|
type: 'scatter',
|
||||||
|
symbol: 'circle',
|
||||||
|
data: gongData.pointIun
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
nextTick(() => {
|
|
||||||
loading.value = false
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
)
|
nextTick(() => {
|
||||||
|
loading.value = false
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function gongfunction(arr: any) {
|
function gongfunction(arr: any) {
|
||||||
@@ -341,6 +328,5 @@ function gongfunction(arr: any) {
|
|||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
init()
|
init()
|
||||||
})
|
})
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<style></style>
|
<style></style>
|
||||||
|
|||||||
@@ -1,25 +1,25 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style='display: flex;flex-direction: column;height: 100%'>
|
<div style="display: flex; flex-direction: column; height: 100%">
|
||||||
<el-form :inline='true'>
|
<el-form :inline="true" class="fx-jcsb">
|
||||||
<el-form-item label='日期'>
|
<el-form-item label="日期">
|
||||||
<DatePicker ref='datePickerRef'></DatePicker>
|
<DatePicker ref="datePickerRef"></DatePicker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type='primary' @click='init'>查询</el-button>
|
<el-button type="primary" @click="init" icon="el-icon-Search">查询</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<el-descriptions class='mt2' direction='vertical' :column='4' border>
|
<el-descriptions class="mt2" direction="vertical" :column="4" border>
|
||||||
<el-descriptions-item align='center' label='名称'>{{ data.name }}</el-descriptions-item>
|
<el-descriptions-item align="center" label="名称">{{ data.name }}</el-descriptions-item>
|
||||||
<el-descriptions-item align='center' label='事件总数'>{{ data.gs }}</el-descriptions-item>
|
<el-descriptions-item align="center" label="事件总数">{{ data.gs }}</el-descriptions-item>
|
||||||
<el-descriptions-item align='center' label='可容忍'>{{ data.krr }}</el-descriptions-item>
|
<el-descriptions-item align="center" label="可容忍">{{ data.krr }}</el-descriptions-item>
|
||||||
<el-descriptions-item align='center' label='不可容忍'> {{ data.bkrr }}</el-descriptions-item>
|
<el-descriptions-item align="center" label="不可容忍">{{ data.bkrr }}</el-descriptions-item>
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
<div style='flex: 1;' class='mt10'>
|
<div style="flex: 1" class="mt10">
|
||||||
<my-echart :options='options' />
|
<my-echart :options="options" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang='ts'>
|
<script setup lang="ts">
|
||||||
import { nextTick, onMounted, reactive, ref } from 'vue'
|
import { nextTick, onMounted, reactive, ref } from 'vue'
|
||||||
import DatePicker from '@/components/form/datePicker/index.vue'
|
import DatePicker from '@/components/form/datePicker/index.vue'
|
||||||
import MyEchart from '@/components/echarts/MyEchart.vue'
|
import MyEchart from '@/components/echarts/MyEchart.vue'
|
||||||
@@ -47,122 +47,109 @@ const init = () => {
|
|||||||
formData.lineIndex = monitoringPoint.state.lineId
|
formData.lineIndex = monitoringPoint.state.lineId
|
||||||
formData.startTime = datePickerRef.value.timeValue[0]
|
formData.startTime = datePickerRef.value.timeValue[0]
|
||||||
formData.endTime = datePickerRef.value.timeValue[1]
|
formData.endTime = datePickerRef.value.timeValue[1]
|
||||||
getPlot(formData).then(
|
getPlot(formData).then((res: any) => {
|
||||||
(res: any) => {
|
const gongData = gongfunction(res.data.voltageToleranceCurveDataList)
|
||||||
const gongData = gongfunction(res.data.voltageToleranceCurveDataList)
|
data.gs = res.data.voltageToleranceCurveDataList.length
|
||||||
data.gs = res.data.voltageToleranceCurveDataList.length
|
data.krr = gongData.pointI.length
|
||||||
data.krr = gongData.pointI.length
|
data.bkrr = gongData.pointIun.length
|
||||||
data.bkrr = gongData.pointIun.length
|
console.log(gongData)
|
||||||
console.log(gongData)
|
options.value = {
|
||||||
options.value = {
|
// backgroundColor: "#f9f9f9", //地图背景色深蓝
|
||||||
// backgroundColor: "#f9f9f9", //地图背景色深蓝
|
title: {
|
||||||
title: {
|
text: `SEMI F47曲线`
|
||||||
text: `SEMI F47曲线`
|
},
|
||||||
},
|
legend: {
|
||||||
legend: {
|
data: ['上限', '下限', '可容忍事件', '不可容忍事件']
|
||||||
data: ['上限', '下限', '可容忍事件', '不可容忍事件'],
|
},
|
||||||
},
|
tooltip: {
|
||||||
tooltip: {
|
trigger: 'item',
|
||||||
trigger: 'item',
|
show: true,
|
||||||
show: true,
|
axisPointer: {
|
||||||
axisPointer: {
|
type: 'shadow',
|
||||||
type: 'shadow',
|
label: {
|
||||||
label: {
|
|
||||||
color: '#fff',
|
|
||||||
fontSize: 16
|
|
||||||
}
|
|
||||||
},
|
|
||||||
textStyle: {
|
|
||||||
color: '#fff',
|
color: '#fff',
|
||||||
fontStyle: 'normal',
|
fontSize: 16
|
||||||
opacity: 0.35,
|
|
||||||
fontSize: 14
|
|
||||||
},
|
|
||||||
backgroundColor: 'rgba(0,0,0,0.55)',
|
|
||||||
borderWidth: 0,
|
|
||||||
formatter: function (a: any) {
|
|
||||||
var relVal = ''
|
|
||||||
relVal =
|
|
||||||
'<font style=\'color:' +
|
|
||||||
'\'>发生时间:' +
|
|
||||||
a.value[2] +
|
|
||||||
'</font><br/>'
|
|
||||||
relVal +=
|
|
||||||
'<font style=\'color:' +
|
|
||||||
'\'>持续时间:' +
|
|
||||||
a.value[0] +
|
|
||||||
's</font><br/>'
|
|
||||||
relVal +=
|
|
||||||
'<font style=\'color:' +
|
|
||||||
'\'>特征幅值:' +
|
|
||||||
a.value[1].toFixed(2) +
|
|
||||||
'%</font>'
|
|
||||||
return relVal
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
xAxis: [
|
textStyle: {
|
||||||
{
|
color: '#fff',
|
||||||
type: 'log',
|
fontStyle: 'normal',
|
||||||
min: 0.001,
|
opacity: 0.35,
|
||||||
max: 1000,
|
fontSize: 14
|
||||||
splitLine: {
|
},
|
||||||
show: false
|
backgroundColor: 'rgba(0,0,0,0.55)',
|
||||||
},
|
borderWidth: 0,
|
||||||
name: 's'
|
formatter: function (a: any) {
|
||||||
}
|
var relVal = ''
|
||||||
],
|
relVal = "<font style='color:" + "'>发生时间:" + a.value[2] + '</font><br/>'
|
||||||
yAxis: [
|
relVal += "<font style='color:" + "'>持续时间:" + a.value[0] + 's</font><br/>'
|
||||||
{
|
relVal += "<font style='color:" + "'>特征幅值:" + a.value[1].toFixed(2) + '%</font>'
|
||||||
type: 'value',
|
return relVal
|
||||||
max: function (value: any) {
|
|
||||||
return value.max + 20
|
|
||||||
},
|
|
||||||
splitNumber: 10,
|
|
||||||
minInterval: 0.1,
|
|
||||||
name: '%'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
options: {
|
|
||||||
dataZoom: null,
|
|
||||||
series: [
|
|
||||||
{
|
|
||||||
name: '边界线',
|
|
||||||
type: 'line',
|
|
||||||
data: [
|
|
||||||
[0.05, 0],
|
|
||||||
[0.05, 50],
|
|
||||||
[0.2, 50],
|
|
||||||
[0.2, 70],
|
|
||||||
[0.5, 70],
|
|
||||||
[0.5, 80],
|
|
||||||
[10, 80],
|
|
||||||
[1000, 80]
|
|
||||||
],
|
|
||||||
showSymbol: false,
|
|
||||||
tooltips: {
|
|
||||||
show: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '可容忍事件',
|
|
||||||
type: 'scatter',
|
|
||||||
symbol: 'circle',
|
|
||||||
data: gongData.pointI
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '不可容忍事件',
|
|
||||||
type: 'scatter',
|
|
||||||
symbol: 'circle',
|
|
||||||
data: gongData.pointIun
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
xAxis: [
|
||||||
|
{
|
||||||
|
type: 'log',
|
||||||
|
min: 0.001,
|
||||||
|
max: 1000,
|
||||||
|
splitLine: {
|
||||||
|
show: false
|
||||||
|
},
|
||||||
|
name: 's'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
yAxis: [
|
||||||
|
{
|
||||||
|
type: 'value',
|
||||||
|
max: function (value: any) {
|
||||||
|
return value.max + 20
|
||||||
|
},
|
||||||
|
splitNumber: 10,
|
||||||
|
minInterval: 0.1,
|
||||||
|
name: '%'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
color: ['#007D7B', 'green', 'red'],
|
||||||
|
options: {
|
||||||
|
dataZoom: null,
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: '边界线',
|
||||||
|
type: 'line',
|
||||||
|
data: [
|
||||||
|
[0.05, 0],
|
||||||
|
[0.05, 50],
|
||||||
|
[0.2, 50],
|
||||||
|
[0.2, 70],
|
||||||
|
[0.5, 70],
|
||||||
|
[0.5, 80],
|
||||||
|
[10, 80],
|
||||||
|
[1000, 80]
|
||||||
|
],
|
||||||
|
showSymbol: false,
|
||||||
|
tooltips: {
|
||||||
|
show: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '可容忍事件',
|
||||||
|
type: 'scatter',
|
||||||
|
symbol: 'circle',
|
||||||
|
data: gongData.pointI
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '不可容忍事件',
|
||||||
|
type: 'scatter',
|
||||||
|
symbol: 'circle',
|
||||||
|
data: gongData.pointIun
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
nextTick(() => {
|
|
||||||
loading.value = false
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
)
|
nextTick(() => {
|
||||||
|
loading.value = false
|
||||||
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function gongfunction(arr: any) {
|
function gongfunction(arr: any) {
|
||||||
@@ -327,6 +314,5 @@ function gongfunction(arr: any) {
|
|||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
init()
|
init()
|
||||||
})
|
})
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<style></style>
|
<style></style>
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style='display: flex;flex-direction: column;height: 100%'>
|
<div style="display: flex; flex-direction: column; height: 100%">
|
||||||
<el-form :inline='true'>
|
<el-form :inline="true" class="fx-jcsb">
|
||||||
<el-form-item label='日期'>
|
<el-form-item label="日期">
|
||||||
<DatePicker ref='datePickerRef'></DatePicker>
|
<DatePicker ref="datePickerRef"></DatePicker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type='primary' @click='init'>查询</el-button>
|
<el-button type="primary" @click="init" icon="el-icon-Search">查询</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div style='flex: 1;' class='mt10'>
|
<div style="flex: 1" class="mt10">
|
||||||
<my-echart :options='options' />
|
<my-echart :options="options" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang='ts'>
|
<script setup lang="ts">
|
||||||
import { nextTick, onMounted, reactive, ref } from 'vue'
|
import { nextTick, onMounted, reactive, ref } from 'vue'
|
||||||
import DatePicker from '@/components/form/datePicker/index.vue'
|
import DatePicker from '@/components/form/datePicker/index.vue'
|
||||||
import MyEchart from '@/components/echarts/MyEchart.vue'
|
import MyEchart from '@/components/echarts/MyEchart.vue'
|
||||||
@@ -35,138 +35,137 @@ const init = () => {
|
|||||||
formData.lineIndex = monitoringPoint.state.lineId
|
formData.lineIndex = monitoringPoint.state.lineId
|
||||||
formData.startTime = datePickerRef.value.timeValue[0]
|
formData.startTime = datePickerRef.value.timeValue[0]
|
||||||
formData.endTime = datePickerRef.value.timeValue[1]
|
formData.endTime = datePickerRef.value.timeValue[1]
|
||||||
getProbabilityDistribution(formData).then(
|
getProbabilityDistribution(formData).then((res: any) => {
|
||||||
(res: any) => {
|
let data = res.data
|
||||||
let data = res.data
|
let sisttime = data.sisttime
|
||||||
let sisttime = data.sisttime
|
let persisttime = data.persisttime
|
||||||
let persisttime = data.persisttime
|
options.value = {
|
||||||
options.value = {
|
backgroundColor: '#fff', //背景色,
|
||||||
backgroundColor: '#fff', //背景色,
|
title: {
|
||||||
title: {
|
text: '持续时间的概率分布函数',
|
||||||
text: '持续时间的概率分布函数',
|
x: 'center'
|
||||||
x: 'center'
|
},
|
||||||
},
|
legend: {
|
||||||
legend: {
|
top: 0,
|
||||||
show: true,
|
show: true,
|
||||||
data: ['概率分布', '占比'],
|
data: ['概率分布', '占比'],
|
||||||
|
|
||||||
textStyle: {
|
textStyle: {
|
||||||
rich: {
|
rich: {
|
||||||
a: {
|
a: {
|
||||||
verticalAlign: 'middle'
|
verticalAlign: 'middle'
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
padding: [2, 0, 0, 0] //[上、右、下、左]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
tooltip: {
|
|
||||||
//提示框组件
|
|
||||||
trigger: 'axis',
|
|
||||||
|
|
||||||
axisPointer: {
|
|
||||||
type: 'shadow',
|
|
||||||
label: {
|
|
||||||
color: '#fff',
|
|
||||||
fontSize: 16
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
textStyle: {
|
|
||||||
color: '#fff',
|
|
||||||
fontStyle: 'normal',
|
|
||||||
opacity: 0.35,
|
|
||||||
fontSize: 14
|
|
||||||
},
|
|
||||||
backgroundColor: 'rgba(0,0,0,0.55)',
|
|
||||||
borderWidth: 0
|
|
||||||
},
|
|
||||||
calculable: true,
|
|
||||||
xAxis: [
|
|
||||||
{
|
|
||||||
type: 'category',
|
|
||||||
name: '暂降幅值',
|
|
||||||
nameGap: 10,
|
|
||||||
nameTextStyle: {
|
|
||||||
fontSize: 12
|
|
||||||
},
|
|
||||||
data: ['0.01', '0.1', '0.25', '0.5', '1', '3', '20', '60', '180']
|
|
||||||
}
|
|
||||||
],
|
|
||||||
yAxis: [
|
|
||||||
{
|
|
||||||
type: 'value',
|
|
||||||
name: '概率分布',
|
|
||||||
nameTextStyle: {
|
|
||||||
fontSize: 15
|
|
||||||
},
|
|
||||||
axisLabel: {
|
|
||||||
formatter: '{value}%'
|
|
||||||
},
|
|
||||||
axisLine: {
|
|
||||||
show: true
|
|
||||||
},
|
|
||||||
splitLine: {
|
|
||||||
lineStyle: {
|
|
||||||
// 使用深浅的间隔色
|
|
||||||
type: 'dashed',
|
|
||||||
opacity: 0.5
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'value',
|
|
||||||
name: '占比',
|
|
||||||
|
|
||||||
nameTextStyle: {
|
padding: [2, 0, 0, 0] //[上、右、下、左]
|
||||||
fontSize: 15
|
|
||||||
},
|
|
||||||
axisLine: {
|
|
||||||
show: true
|
|
||||||
},
|
|
||||||
|
|
||||||
splitLine: {
|
|
||||||
lineStyle: {
|
|
||||||
type: 'dashed',
|
|
||||||
opacity: 0.5
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
series: [
|
|
||||||
{
|
|
||||||
name: '概率分布',
|
|
||||||
type: 'line',
|
|
||||||
data: sisttime,
|
|
||||||
itemStyle: {
|
|
||||||
normal: { show: true }
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '占比',
|
|
||||||
type: 'bar',
|
|
||||||
data: persisttime,
|
|
||||||
barWidth: 30,
|
|
||||||
itemStyle: {
|
|
||||||
normal: { show: true }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
options: {
|
|
||||||
dataZoom: null
|
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
nextTick(() => {
|
toolbox: {
|
||||||
loading.value = false
|
top: -10
|
||||||
})
|
},
|
||||||
}
|
tooltip: {
|
||||||
)
|
//提示框组件
|
||||||
}
|
trigger: 'axis',
|
||||||
|
|
||||||
|
axisPointer: {
|
||||||
|
type: 'shadow',
|
||||||
|
label: {
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
textStyle: {
|
||||||
|
color: '#fff',
|
||||||
|
fontStyle: 'normal',
|
||||||
|
opacity: 0.35,
|
||||||
|
fontSize: 14
|
||||||
|
},
|
||||||
|
backgroundColor: 'rgba(0,0,0,0.55)',
|
||||||
|
borderWidth: 0
|
||||||
|
},
|
||||||
|
calculable: true,
|
||||||
|
xAxis: [
|
||||||
|
{
|
||||||
|
type: 'category',
|
||||||
|
name: '持续时间',
|
||||||
|
nameGap: 10,
|
||||||
|
nameTextStyle: {
|
||||||
|
fontSize: 12
|
||||||
|
},
|
||||||
|
data: ['0.01', '0.1', '0.25', '0.5', '1', '3', '20', '60', '180']
|
||||||
|
}
|
||||||
|
],
|
||||||
|
yAxis: [
|
||||||
|
{
|
||||||
|
type: 'value',
|
||||||
|
name: '概率分布',
|
||||||
|
nameTextStyle: {
|
||||||
|
fontSize: 15
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
formatter: '{value}%'
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: true
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
lineStyle: {
|
||||||
|
// 使用深浅的间隔色
|
||||||
|
type: 'dashed',
|
||||||
|
opacity: 0.5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'value',
|
||||||
|
name: '占比',
|
||||||
|
|
||||||
|
nameTextStyle: {
|
||||||
|
fontSize: 15
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: true
|
||||||
|
},
|
||||||
|
|
||||||
|
splitLine: {
|
||||||
|
lineStyle: {
|
||||||
|
type: 'dashed',
|
||||||
|
opacity: 0.5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: '概率分布',
|
||||||
|
type: 'line',
|
||||||
|
data: sisttime,
|
||||||
|
itemStyle: {
|
||||||
|
normal: { show: true }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '占比',
|
||||||
|
type: 'bar',
|
||||||
|
data: persisttime,
|
||||||
|
barWidth: 30,
|
||||||
|
itemStyle: {
|
||||||
|
normal: { show: true }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
options: {
|
||||||
|
dataZoom: null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
nextTick(() => {
|
||||||
|
loading.value = false
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
init()
|
init()
|
||||||
})
|
})
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<style></style>
|
<style></style>
|
||||||
|
|||||||
@@ -1,73 +1,73 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-loading='loading' class='dianyazanjiangbaojimidu'>
|
<div v-loading="loading" class="dianyazanjiangbaojimidu">
|
||||||
<el-form :inline='true'>
|
<el-form :inline="true" class="fx-jcsb">
|
||||||
<el-form-item label='日期'>
|
<el-form-item label="日期">
|
||||||
<DatePicker ref='datePickerRef'></DatePicker>
|
<DatePicker ref="datePickerRef"></DatePicker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type='primary' @click='init'>查询</el-button>
|
<el-button type="primary" @click="init" icon="el-icon-Search">查询</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div class='mt10 dianyazanjiang'>
|
<div class="mt10 dianyazanjiang">
|
||||||
<div class='first'>
|
<div class="first">
|
||||||
<div class='mb10'>DISDIP表格(国际发配电联盟UNIPEDE)</div>
|
<div class="mb10">DISDIP表格(国际发配电联盟UNIPEDE)</div>
|
||||||
<div style='flex: 1;overflow: hidden'>
|
<div style="flex: 1; overflow: hidden">
|
||||||
<vxe-table v-bind='defaultAttribute' height='100%' size='mini' :data='firstData'>
|
<vxe-table v-bind="defaultAttribute" height="100%" size="mini" :data="firstData">
|
||||||
<vxe-colgroup title='剩余电压' field='name' width='80px'></vxe-colgroup>
|
<vxe-colgroup title="剩余电压" field="name" width="80px"></vxe-colgroup>
|
||||||
<vxe-colgroup title='持续事件'>
|
<vxe-colgroup title="持续时间">
|
||||||
<vxe-column field='twentyMs' title='20ms'></vxe-column>
|
<vxe-column field="twentyMs" title="20ms" :formatter="formatter" />
|
||||||
<vxe-column field='oneHundredMs' title='100ms'></vxe-column>
|
<vxe-column field="oneHundredMs" title="100ms" :formatter="formatter" />
|
||||||
<vxe-column field='fiveHundredMs' title='500ms'></vxe-column>
|
<vxe-column field="fiveHundredMs" title="500ms" :formatter="formatter" />
|
||||||
<vxe-column field='oneS' title='1s'></vxe-column>
|
<vxe-column field="oneS" title="1s" :formatter="formatter" />
|
||||||
<vxe-column field='threeS' title='2s'></vxe-column>
|
<vxe-column field="threeS" title="2s" :formatter="formatter" />
|
||||||
<vxe-column field='twentyS' title='20s'></vxe-column>
|
<vxe-column field="twentyS" title="20s" :formatter="formatter" />
|
||||||
<vxe-column field='sixtyS' title='60s'></vxe-column>
|
<vxe-column field="sixtyS" title="60s" :formatter="formatter" />
|
||||||
<vxe-column field='oneEightyS' title='180s'></vxe-column>
|
<vxe-column field="oneEightyS" title="180s" :formatter="formatter" />
|
||||||
</vxe-colgroup>
|
</vxe-colgroup>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='second'>
|
<div class="second">
|
||||||
<div class='mb10'>EC61000-4-11(用电终端的电压暂降抗度)</div>
|
<div class="mb10">EC61000-4-11(用电终端的电压暂降抗度)</div>
|
||||||
<div style='flex: 1;overflow: hidden'>
|
<div style="flex: 1; overflow: hidden">
|
||||||
<vxe-table v-bind='defaultAttribute' height='100%' size='mini' :data='secondData'>
|
<vxe-table v-bind="defaultAttribute" height="100%" size="mini" :data="secondData">
|
||||||
<vxe-colgroup title='剩余电压' field='name' width='80px'></vxe-colgroup>
|
<vxe-colgroup title="剩余电压" field="name" width="80px"></vxe-colgroup>
|
||||||
<vxe-colgroup title='持续事件'>
|
<vxe-colgroup title="持续时间">
|
||||||
<vxe-column field='tenTwentyMs' title='10-20ms'></vxe-column>
|
<vxe-column field="tenTwentyMs" title="10-20ms" :formatter="formatter" />
|
||||||
<vxe-column field='twentyOneHundredMs' title='20-100ms'></vxe-column>
|
<vxe-column field="twentyOneHundredMs" title="20-100ms" :formatter="formatter" />
|
||||||
<vxe-column field='zeroPiontOneTwoS' title='0.1-0.2s'></vxe-column>
|
<vxe-column field="zeroPiontOneTwoS" title="0.1-0.2s" :formatter="formatter" />
|
||||||
<vxe-column field='zeroPiontFive1S' title='0.2-0.5s'></vxe-column>
|
<vxe-column field="zeroPiontFive1S" title="0.2-0.5s" :formatter="formatter" />
|
||||||
<vxe-column field='zeroPiontTwoFiveS' title='0.5-1s'></vxe-column>
|
<vxe-column field="zeroPiontTwoFiveS" title="0.5-1s" :formatter="formatter" />
|
||||||
<vxe-column field='role' title='>1s'></vxe-column>
|
<vxe-column field="greater1S" title=">1s" :formatter="formatter" />
|
||||||
</vxe-colgroup>
|
</vxe-colgroup>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='third'>
|
<div class="third">
|
||||||
<div class='mb10'>IEC61000-2-8(公共用电暂降测量统计)</div>
|
<div class="mb10">IEC61000-2-8(公共用电暂降测量统计)</div>
|
||||||
<div style='flex: 1;overflow: hidden'>
|
<div style="flex: 1; overflow: hidden">
|
||||||
<vxe-table v-bind='defaultAttribute' height='100%' size='mini' :data='thirdData'>
|
<vxe-table v-bind="defaultAttribute" height="100%" size="mini" :data="thirdData">
|
||||||
<vxe-colgroup title='剩余电压' field='name' width='120px'></vxe-colgroup>
|
<vxe-colgroup title="剩余电压" field="name" width="120px"></vxe-colgroup>
|
||||||
<vxe-colgroup title='持续事件'>
|
<vxe-colgroup title="持续时间">
|
||||||
<vxe-column field='q' title='0.01-0.1s' align='center'></vxe-column>
|
<vxe-column field="q" title="0.01-0.1s" align="center" :formatter="formatter" />
|
||||||
<vxe-column field='w' title='0.1-0.25s' align='center'></vxe-column>
|
<vxe-column field="w" title="0.1-0.25s" align="center" :formatter="formatter" />
|
||||||
<vxe-column field='e' title='0.25-0.5s' align='center'></vxe-column>
|
<vxe-column field="e" title="0.25-0.5s" align="center" :formatter="formatter" />
|
||||||
<vxe-column field='r' title='0.5-1s' align='center'></vxe-column>
|
<vxe-column field="r" title="0.5-1s" align="center" :formatter="formatter" />
|
||||||
<vxe-column field='t' title='1-3s' align='center'></vxe-column>
|
<vxe-column field="t" title="1-3s" align="center" :formatter="formatter" />
|
||||||
<vxe-column field='y' title='3-20s' align='center'></vxe-column>
|
<vxe-column field="y" title="3-20s" align="center" :formatter="formatter" />
|
||||||
<vxe-column field='u' title='20-60s' align='center'></vxe-column>
|
<vxe-column field="u" title="20-60s" align="center" :formatter="formatter" />
|
||||||
<vxe-column field='i' title='60-180s' align='center'></vxe-column>
|
<vxe-column field="i" title="60-180s" align="center" :formatter="formatter" />
|
||||||
</vxe-colgroup>
|
</vxe-colgroup>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class='charts' id='charts'>
|
<div class="charts" id="charts">
|
||||||
<MyEchart :options='options' />
|
<MyEchart :options="options" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang='ts'>
|
<script setup lang="ts">
|
||||||
import { nextTick, onMounted, reactive, ref } from 'vue'
|
import { nextTick, onMounted, reactive, ref } from 'vue'
|
||||||
import DatePicker from '@/components/form/datePicker/index.vue'
|
import DatePicker from '@/components/form/datePicker/index.vue'
|
||||||
import MyEchart from '@/components/echarts/MyEchart.vue'
|
import MyEchart from '@/components/echarts/MyEchart.vue'
|
||||||
@@ -88,7 +88,9 @@ const firstData = ref([])
|
|||||||
const secondData = ref([])
|
const secondData = ref([])
|
||||||
const thirdData = ref([])
|
const thirdData = ref([])
|
||||||
const chartsData = ref([])
|
const chartsData = ref([])
|
||||||
|
const formatter = (row: any) => {
|
||||||
|
return row.cellValue == 0 ? '/' : row.cellValue
|
||||||
|
}
|
||||||
const init = () => {
|
const init = () => {
|
||||||
formData.lineIndex = monitoringPoint.state.lineId
|
formData.lineIndex = monitoringPoint.state.lineId
|
||||||
formData.startTime = datePickerRef.value.timeValue[0]
|
formData.startTime = datePickerRef.value.timeValue[0]
|
||||||
@@ -209,7 +211,7 @@ const init = () => {
|
|||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
type: 'bar3D',
|
type: 'bar3D',
|
||||||
data: chartsData.value.map(function(item: any) {
|
data: chartsData.value.map(function (item: any) {
|
||||||
return {
|
return {
|
||||||
value: [item['x'], item['y'], item['z']]
|
value: [item['x'], item['y'], item['z']]
|
||||||
}
|
}
|
||||||
@@ -248,7 +250,7 @@ onMounted(() => {
|
|||||||
init()
|
init()
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
<style lang='scss'>
|
<style lang="scss">
|
||||||
.dianyazanjiangbaojimidu {
|
.dianyazanjiangbaojimidu {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@@ -261,10 +263,10 @@ onMounted(() => {
|
|||||||
min-height: 800px;
|
min-height: 800px;
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-areas:
|
grid-template-areas:
|
||||||
'first charts'
|
'first charts'
|
||||||
'second charts'
|
'second charts'
|
||||||
'third third '
|
'third third '
|
||||||
'third third ';
|
'third third ';
|
||||||
grid-template-rows: 1fr 1fr 1fr 1fr;
|
grid-template-rows: 1fr 1fr 1fr 1fr;
|
||||||
grid-template-columns: 1fr 1fr;
|
grid-template-columns: 1fr 1fr;
|
||||||
grid-gap: 10px;
|
grid-gap: 10px;
|
||||||
@@ -274,6 +276,7 @@ onMounted(() => {
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
height: 280px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.second {
|
.second {
|
||||||
@@ -281,6 +284,7 @@ onMounted(() => {
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
height: 210px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.third {
|
.third {
|
||||||
@@ -288,6 +292,7 @@ onMounted(() => {
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
height: 720px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.charts {
|
.charts {
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style='display: flex;flex-direction: column;height: 100%' v-loading='loading'>
|
<div style='display: flex;flex-direction: column;height: 100%' v-loading='loading'>
|
||||||
<el-form :inline='true'>
|
<el-form :inline='true' class="fx-jcsb">
|
||||||
<el-form-item label='日期'>
|
<el-form-item label='日期'>
|
||||||
<DatePicker ref='datePickerRef'></DatePicker>
|
<DatePicker ref='datePickerRef'></DatePicker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type='primary' @click='init'>查询</el-button>
|
<el-button type='primary' @click='init' icon="el-icon-Search">查询</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div style='flex: 1;' class='mt10 zanjiangfenbutongji'>
|
<div style='flex: 1;' class='mt10 zanjiangfenbutongji'>
|
||||||
@@ -111,7 +111,7 @@ const initFirst = () => {
|
|||||||
formatter: function (params: any) {
|
formatter: function (params: any) {
|
||||||
let tips = ''
|
let tips = ''
|
||||||
tips += '<font>时间:' + params[0].name + '</font><br/>'
|
tips += '<font>时间:' + params[0].name + '</font><br/>'
|
||||||
tips += '<font>暂降次数:' + params[0].data + '</font>'
|
tips += '<font>暂降次数:' + params[0].data + '</font>'
|
||||||
return tips
|
return tips
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -147,12 +147,12 @@ const initFirst = () => {
|
|||||||
return color[0]
|
return color[0]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
label: {
|
// label: {
|
||||||
show: true,
|
// show: true,
|
||||||
textStyle: {
|
// textStyle: {
|
||||||
label: { show: true, position: 'top' }
|
// label: { show: true, position: 'top' }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data: handle
|
data: handle
|
||||||
@@ -194,7 +194,7 @@ const initSecond = () => {
|
|||||||
fontSize: 14
|
fontSize: 14
|
||||||
},
|
},
|
||||||
backgroundColor: 'rgba(0,0,0,0.55)',
|
backgroundColor: 'rgba(0,0,0,0.55)',
|
||||||
formatter: '{a} <br/>{b} : {c} ({d}%)'
|
formatter: '{a} <br/>{b} : {c} ({d}%)'
|
||||||
},
|
},
|
||||||
legend: {
|
legend: {
|
||||||
orient: 'vertical',
|
orient: 'vertical',
|
||||||
@@ -204,14 +204,14 @@ const initSecond = () => {
|
|||||||
{
|
{
|
||||||
name: '暂降原因',
|
name: '暂降原因',
|
||||||
type: 'pie',
|
type: 'pie',
|
||||||
radius: '70%',
|
radius: '65%',
|
||||||
center: ['50%', '53%'],
|
center: ['50%', '53%'],
|
||||||
label: {
|
label: {
|
||||||
normal: {
|
normal: {
|
||||||
show: false
|
show: false
|
||||||
},
|
},
|
||||||
emphasis: {
|
emphasis: {
|
||||||
show: true
|
show: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
lableLine: {
|
lableLine: {
|
||||||
@@ -219,7 +219,7 @@ const initSecond = () => {
|
|||||||
show: false
|
show: false
|
||||||
},
|
},
|
||||||
emphasis: {
|
emphasis: {
|
||||||
show: true
|
show: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data: valueArray,
|
data: valueArray,
|
||||||
@@ -269,7 +269,7 @@ const initThird = () => {
|
|||||||
fontSize: 14
|
fontSize: 14
|
||||||
},
|
},
|
||||||
backgroundColor: 'rgba(0,0,0,0.55)',
|
backgroundColor: 'rgba(0,0,0,0.55)',
|
||||||
formatter: '{a} <br/>{b} : {c} ({d}%)'
|
formatter: '{a} <br/>{b} : {c} ({d}%)'
|
||||||
},
|
},
|
||||||
legend: {
|
legend: {
|
||||||
orient: 'vertical',
|
orient: 'vertical',
|
||||||
@@ -279,14 +279,14 @@ const initThird = () => {
|
|||||||
{
|
{
|
||||||
name: '暂降类型',
|
name: '暂降类型',
|
||||||
type: 'pie',
|
type: 'pie',
|
||||||
radius: '70%',
|
radius: '65%',
|
||||||
center: ['50%', '60%'],
|
center: ['50%', '60%'],
|
||||||
label: {
|
label: {
|
||||||
normal: {
|
normal: {
|
||||||
show: false
|
show: false
|
||||||
},
|
},
|
||||||
emphasis: {
|
emphasis: {
|
||||||
show: true
|
show: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
lableLine: {
|
lableLine: {
|
||||||
@@ -294,7 +294,7 @@ const initThird = () => {
|
|||||||
show: false
|
show: false
|
||||||
},
|
},
|
||||||
emphasis: {
|
emphasis: {
|
||||||
show: true
|
show: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data: valueArray,
|
data: valueArray,
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
<template>
|
<template>
|
||||||
<div style='display: flex;flex-direction: column;height: 100%'>
|
<div style="display: flex; flex-direction: column; height: 100%">
|
||||||
<el-form :inline='true'>
|
<el-form :inline="true" class="fx-jcsb">
|
||||||
<el-form-item label='日期'>
|
<el-form-item label="日期">
|
||||||
<DatePicker ref='datePickerRef'></DatePicker>
|
<DatePicker ref="datePickerRef"></DatePicker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type='primary' @click='init'>查询</el-button>
|
<el-button type="primary" @click="init" icon="el-icon-Search">查询</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div style='flex: 1;' class='mt10'>
|
<div style="flex: 1" class="mt10">
|
||||||
<my-echart :options='options' />
|
<my-echart :options="options" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang='ts'>
|
<script setup lang="ts">
|
||||||
import { nextTick, onMounted, reactive, ref } from 'vue'
|
import { nextTick, onMounted, reactive, ref } from 'vue'
|
||||||
import DatePicker from '@/components/form/datePicker/index.vue'
|
import DatePicker from '@/components/form/datePicker/index.vue'
|
||||||
import MyEchart from '@/components/echarts/MyEchart.vue'
|
import MyEchart from '@/components/echarts/MyEchart.vue'
|
||||||
@@ -35,150 +35,138 @@ const init = () => {
|
|||||||
formData.lineIndex = monitoringPoint.state.lineId
|
formData.lineIndex = monitoringPoint.state.lineId
|
||||||
formData.startTime = datePickerRef.value.timeValue[0]
|
formData.startTime = datePickerRef.value.timeValue[0]
|
||||||
formData.endTime = datePickerRef.value.timeValue[1]
|
formData.endTime = datePickerRef.value.timeValue[1]
|
||||||
getProbabilityDistribution(formData).then(
|
getProbabilityDistribution(formData).then((res: any) => {
|
||||||
(res: any) => {
|
let data = res.data
|
||||||
let data = res.data
|
let eventValue = data.eventvalue
|
||||||
let eventValue = data.eventvalue
|
let pereventValue = data.pereventvalue
|
||||||
let pereventValue = data.pereventvalue
|
options.value = {
|
||||||
options.value = {
|
backgroundColor: '#fff', //背景色,
|
||||||
backgroundColor: '#fff', //背景色,
|
title: {
|
||||||
title: {
|
text: '暂降幅值的概率分布函数',
|
||||||
text: '暂降幅值的概率分布函数',
|
x: 'center'
|
||||||
x: 'center'
|
},
|
||||||
},
|
legend: {
|
||||||
legend: {
|
show: true,
|
||||||
show: true,
|
top: 0,
|
||||||
data: ['概率分布', '占比'],
|
data: ['概率分布', '占比'],
|
||||||
|
|
||||||
textStyle: {
|
textStyle: {
|
||||||
rich: {
|
rich: {
|
||||||
a: {
|
a: {
|
||||||
verticalAlign: 'middle'
|
verticalAlign: 'middle'
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
padding: [2, 0, 0, 0] //[上、右、下、左]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
tooltip: {
|
|
||||||
//提示框组件
|
|
||||||
trigger: 'axis',
|
|
||||||
|
|
||||||
axisPointer: {
|
|
||||||
type: 'shadow',
|
|
||||||
label: {
|
|
||||||
color: '#fff',
|
|
||||||
fontSize: 16
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
textStyle: {
|
|
||||||
color: '#fff',
|
|
||||||
fontStyle: 'normal',
|
|
||||||
opacity: 0.35,
|
|
||||||
fontSize: 14
|
|
||||||
},
|
|
||||||
backgroundColor: 'rgba(0,0,0,0.55)',
|
|
||||||
borderWidth: 0
|
|
||||||
},
|
|
||||||
calculable: true,
|
|
||||||
xAxis: [
|
|
||||||
{
|
|
||||||
type: 'category',
|
|
||||||
name: '暂降幅值',
|
|
||||||
nameGap: 10,
|
|
||||||
nameTextStyle: {
|
|
||||||
fontSize: 12
|
|
||||||
},
|
|
||||||
data: [
|
|
||||||
'0',
|
|
||||||
'10%',
|
|
||||||
'20%',
|
|
||||||
'30%',
|
|
||||||
'40%',
|
|
||||||
'50%',
|
|
||||||
'60%',
|
|
||||||
'70%',
|
|
||||||
'80%',
|
|
||||||
'90%',
|
|
||||||
'100%'
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
yAxis: [
|
|
||||||
{
|
|
||||||
type: 'value',
|
|
||||||
name: '概率分布',
|
|
||||||
nameTextStyle: {
|
|
||||||
fontSize: 15
|
|
||||||
},
|
|
||||||
axisLabel: {
|
|
||||||
formatter: '{value}%'
|
|
||||||
},
|
|
||||||
axisLine: {
|
|
||||||
show: true
|
|
||||||
},
|
|
||||||
splitLine: {
|
|
||||||
lineStyle: {
|
|
||||||
// 使用深浅的间隔色
|
|
||||||
type: 'dashed',
|
|
||||||
opacity: 0.5
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: 'value',
|
|
||||||
name: '占比',
|
|
||||||
|
|
||||||
nameTextStyle: {
|
padding: [2, 0, 0, 0] //[上、右、下、左]
|
||||||
fontSize: 15
|
|
||||||
},
|
|
||||||
axisLine: {
|
|
||||||
show: true
|
|
||||||
},
|
|
||||||
|
|
||||||
splitLine: {
|
|
||||||
lineStyle: {
|
|
||||||
type: 'dashed',
|
|
||||||
opacity: 0.5
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
series: [
|
|
||||||
{
|
|
||||||
name: '占比',
|
|
||||||
type: 'bar',
|
|
||||||
data: pereventValue,
|
|
||||||
barWidth: 30,
|
|
||||||
itemStyle: {
|
|
||||||
normal: { show: true }
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: '概率分布',
|
|
||||||
type: 'line',
|
|
||||||
data: eventValue,
|
|
||||||
itemStyle: {
|
|
||||||
normal: { show: true }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
options: {
|
|
||||||
dataZoom: null
|
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
nextTick(() => {
|
toolbox: {
|
||||||
loading.value = false
|
top: -10
|
||||||
})
|
},
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
tooltip: {
|
||||||
|
//提示框组件
|
||||||
|
trigger: 'axis',
|
||||||
|
|
||||||
|
axisPointer: {
|
||||||
|
type: 'shadow',
|
||||||
|
label: {
|
||||||
|
color: '#fff',
|
||||||
|
fontSize: 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
textStyle: {
|
||||||
|
color: '#fff',
|
||||||
|
fontStyle: 'normal',
|
||||||
|
opacity: 0.35,
|
||||||
|
fontSize: 14
|
||||||
|
},
|
||||||
|
backgroundColor: 'rgba(0,0,0,0.55)',
|
||||||
|
borderWidth: 0
|
||||||
|
},
|
||||||
|
calculable: true,
|
||||||
|
xAxis: [
|
||||||
|
{
|
||||||
|
type: 'category',
|
||||||
|
name: '暂降幅值',
|
||||||
|
nameGap: 10,
|
||||||
|
nameTextStyle: {
|
||||||
|
fontSize: 12
|
||||||
|
},
|
||||||
|
data: ['0', '10%', '20%', '30%', '40%', '50%', '60%', '70%', '80%', '90%', '100%']
|
||||||
|
}
|
||||||
|
],
|
||||||
|
yAxis: [
|
||||||
|
{
|
||||||
|
type: 'value',
|
||||||
|
name: '概率分布',
|
||||||
|
nameTextStyle: {
|
||||||
|
fontSize: 15
|
||||||
|
},
|
||||||
|
axisLabel: {
|
||||||
|
formatter: '{value}%'
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: true
|
||||||
|
},
|
||||||
|
splitLine: {
|
||||||
|
lineStyle: {
|
||||||
|
// 使用深浅的间隔色
|
||||||
|
type: 'dashed',
|
||||||
|
opacity: 0.5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: 'value',
|
||||||
|
name: '占比',
|
||||||
|
|
||||||
|
nameTextStyle: {
|
||||||
|
fontSize: 15
|
||||||
|
},
|
||||||
|
axisLine: {
|
||||||
|
show: true
|
||||||
|
},
|
||||||
|
|
||||||
|
splitLine: {
|
||||||
|
lineStyle: {
|
||||||
|
type: 'dashed',
|
||||||
|
opacity: 0.5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: '占比',
|
||||||
|
type: 'bar',
|
||||||
|
data: pereventValue,
|
||||||
|
barWidth: 30,
|
||||||
|
itemStyle: {
|
||||||
|
normal: { show: true }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: '概率分布',
|
||||||
|
type: 'line',
|
||||||
|
data: eventValue,
|
||||||
|
itemStyle: {
|
||||||
|
normal: { show: true }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
options: {
|
||||||
|
dataZoom: null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
nextTick(() => {
|
||||||
|
loading.value = false
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
init()
|
init()
|
||||||
})
|
})
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<style></style>
|
<style></style>
|
||||||
|
|||||||
@@ -76,17 +76,22 @@
|
|||||||
@click="markerClick(path)"
|
@click="markerClick(path)"
|
||||||
></bm-marker>
|
></bm-marker>
|
||||||
</BmlMarkerClusterer>
|
</BmlMarkerClusterer>
|
||||||
<bm-marker :position="infoWindowPoint" :icon="{ url: '1', size: { width: 0, height: 0 } }" >
|
<bm-marker :position="infoWindowPoint" :icon="{ url: '1', size: { width: 0, height: 0 } }">
|
||||||
<bm-info-window :show="infoWindowPoint.show" @close="infoWindowPoint.show = false">
|
<bm-info-window :show="infoWindowPoint.show" @close="infoWindowPoint.show = false">
|
||||||
<el-descriptions :title="infoWindowPoint.lineName" style="min-width: 240px;" :column="1" v-if="infoWindowPoint.lineId">
|
<el-descriptions
|
||||||
|
:title="infoWindowPoint.lineName"
|
||||||
|
style="min-width: 240px"
|
||||||
|
:column="1"
|
||||||
|
v-if="infoWindowPoint.lineId"
|
||||||
|
>
|
||||||
<el-descriptions-item label="供电公司">{{ infoWindowPoint.gdName }}</el-descriptions-item>
|
<el-descriptions-item label="供电公司">{{ infoWindowPoint.gdName }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="变电站(场站)">{{ infoWindowPoint.subName }}</el-descriptions-item>
|
<el-descriptions-item label="变电站(场站)">{{ infoWindowPoint.subName }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="母线">{{ infoWindowPoint.voltageName }}</el-descriptions-item>
|
<el-descriptions-item label="母线">{{ infoWindowPoint.voltageName }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="网络参数">
|
<el-descriptions-item label="网络参数">
|
||||||
{{ infoWindowPoint.ip }}
|
{{ infoWindowPoint.ip }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="PT变化">{{ infoWindowPoint.pt2 }}</el-descriptions-item>
|
<el-descriptions-item label="PT变比">{{ infoWindowPoint.pt2 }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="CT变化">{{ infoWindowPoint.ct2 }}</el-descriptions-item>
|
<el-descriptions-item label="CT变比">{{ infoWindowPoint.ct2 }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="生产厂家">
|
<el-descriptions-item label="生产厂家">
|
||||||
{{ infoWindowPoint.manufacturer }}
|
{{ infoWindowPoint.manufacturer }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
@@ -232,7 +237,7 @@ const handler = async ({ BMap, map }: any) => {
|
|||||||
siteList.value = list
|
siteList.value = list
|
||||||
|
|
||||||
center.value.lng = list[0]?.lng || 0
|
center.value.lng = list[0]?.lng || 0
|
||||||
center.value.lat = list[0]?.lat || 0
|
center.value.lat = list[0]?.lat + 0.01 || 0
|
||||||
watch(
|
watch(
|
||||||
() => monitoringPoint.state.lineId,
|
() => monitoringPoint.state.lineId,
|
||||||
(newLineId, oldLineId) => {
|
(newLineId, oldLineId) => {
|
||||||
@@ -240,7 +245,7 @@ const handler = async ({ BMap, map }: any) => {
|
|||||||
if (value == undefined) return
|
if (value == undefined) return
|
||||||
|
|
||||||
center.value.lng = value.lng
|
center.value.lng = value.lng
|
||||||
center.value.lat = value.lat
|
center.value.lat = value.lat + 0.01
|
||||||
infoWindowPoint.value = value
|
infoWindowPoint.value = value
|
||||||
infoWindowPoint.value.show = true
|
infoWindowPoint.value.show = true
|
||||||
monitoringPoint.setValue(
|
monitoringPoint.setValue(
|
||||||
@@ -270,10 +275,10 @@ onMounted(() => {
|
|||||||
if (siteList.value.length == 0) {
|
if (siteList.value.length == 0) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
hackReset.value = false
|
hackReset.value = false
|
||||||
}, 1000)
|
}, 500)
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
hackReset.value = true
|
hackReset.value = true
|
||||||
}, 2000)
|
}, 1000)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,31 +1,38 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-loading='loading' class='running-condition'>
|
<div v-loading="loading" class="running-condition">
|
||||||
<el-form :inline='true'>
|
<el-form :inline="true" class="fx-jcsb">
|
||||||
<el-form-item label='日期'>
|
<el-form-item label="日期">
|
||||||
<DatePicker ref='datePickerRef'></DatePicker>
|
<DatePicker ref="datePickerRef"></DatePicker>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type='primary' @click='init'>查询</el-button>
|
<el-button type="primary" @click="init" icon="el-icon-Search">查询</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div style='flex: 1;' class='mt10 zanjiangfenbutongji'>
|
<div style="flex: 1" class="mt10 zanjiangfenbutongji">
|
||||||
<div
|
<div
|
||||||
style='position: absolute; right: 10px; top: 10px; z-index: 2;display: flex;align-items: center;font-size: 12px'>
|
style="
|
||||||
<el-tag style='width: 20px;height: 12px' :style='{ background: gradeColor3[2] }'></el-tag>
|
position: absolute;
|
||||||
<span class='ml2' :style='{ color: gradeColor3[2] }'> {{ 'X<60%' }} </span>
|
right: 55px;
|
||||||
<el-tag class='ml10' style='width: 20px;height: 12px'
|
top: 25px;
|
||||||
:style='{ background: gradeColor3[1] }'></el-tag>
|
z-index: 2;
|
||||||
<span class='ml2' :style='{ color: gradeColor3[1] }'>{{ '60%≤X<90%' }} </span>
|
display: flex;
|
||||||
<el-tag class='ml10' style='width: 20px;height: 12px'
|
align-items: center;
|
||||||
:style='{ background: gradeColor3[0] }'></el-tag>
|
font-size: 12px;
|
||||||
<span class='ml2' :style='{ color: gradeColor3[0] }'> {{ 'X≥90 %' }}</span>
|
"
|
||||||
|
>
|
||||||
|
<el-tag style="width: 20px; height: 12px" :style="{ background: gradeColor3[2] }"></el-tag>
|
||||||
|
<span class="ml2" :style="{ color: gradeColor3[2] }">{{ 'X<60%' }}</span>
|
||||||
|
<el-tag class="ml10" style="width: 20px; height: 12px" :style="{ background: gradeColor3[1] }"></el-tag>
|
||||||
|
<span class="ml2" :style="{ color: gradeColor3[1] }">{{ '60%≤X<90%' }}</span>
|
||||||
|
<el-tag class="ml10" style="width: 20px; height: 12px" :style="{ background: gradeColor3[0] }"></el-tag>
|
||||||
|
<span class="ml2" :style="{ color: gradeColor3[0] }">{{ 'X≥90 %' }}</span>
|
||||||
</div>
|
</div>
|
||||||
<my-echart :options='secondOptions' style='flex: 1;height: 100%' />
|
<my-echart :options="secondOptions" style="flex: 1; height: 100%" />
|
||||||
<my-echart :options='firstOptions' style='flex: 1;height: 100%' />
|
<my-echart :options="firstOptions" style="flex: 1; height: 100%" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang='ts'>
|
<script setup lang="ts">
|
||||||
import { nextTick, onMounted, reactive, ref, watch } from 'vue'
|
import { nextTick, onMounted, reactive, ref, watch } from 'vue'
|
||||||
import DatePicker from '@/components/form/datePicker/index.vue'
|
import DatePicker from '@/components/form/datePicker/index.vue'
|
||||||
import MyEchart from '@/components/echarts/MyEchart.vue'
|
import MyEchart from '@/components/echarts/MyEchart.vue'
|
||||||
@@ -210,19 +217,8 @@ const initFirst = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
const initSecond = () => {
|
const initSecond = () => {
|
||||||
let list = secondData.value.type
|
let list = secondData.value.type.map((item, i) => [secondData.value.updateTime[i], item])
|
||||||
let items = secondData.value.updateTime
|
|
||||||
|
|
||||||
for (let i = 0; i < items.length; i++) {
|
|
||||||
if (i != 0) {
|
|
||||||
i
|
|
||||||
items[i] = items[i].slice(11)
|
|
||||||
} else if (i == 0) {
|
|
||||||
let date = items[i].slice(11)
|
|
||||||
let t = items[i].slice(0, 10)
|
|
||||||
items[i] = '(' + date + ')' + '\n' + t
|
|
||||||
}
|
|
||||||
}
|
|
||||||
secondOptions.value = {
|
secondOptions.value = {
|
||||||
tooltip: {
|
tooltip: {
|
||||||
trigger: 'axis',
|
trigger: 'axis',
|
||||||
@@ -241,37 +237,30 @@ const initSecond = () => {
|
|||||||
},
|
},
|
||||||
backgroundColor: 'rgba(0,0,0,0.55)',
|
backgroundColor: 'rgba(0,0,0,0.55)',
|
||||||
formatter: function (params: any) {
|
formatter: function (params: any) {
|
||||||
let res = '时间: ' + params[0].name + '<br/>运行状态:'
|
console.log('🚀 ~ initSecond ~ params:', params)
|
||||||
let texts = ''
|
let res = ''
|
||||||
if (params[0].value === 2 || params[0].value === '2') {
|
res += `${params[0].value[0]}:${params[0].value[1] == '0' ? '中断' : '正常'}` //params[0].value[0] + ':' //+ params[0].value[1] == '0' ? '中断' : '正常'
|
||||||
texts = '退出'
|
console.log('🚀 ~ initSecond ~ res:', res)
|
||||||
} else if (params[0].value === 0 || params[0].value === '0') {
|
|
||||||
texts = '中断'
|
|
||||||
} else if (params[0].value === 1 || params[0].value === '1') {
|
|
||||||
texts = '正常'
|
|
||||||
}
|
|
||||||
res = res + texts
|
|
||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
dataZoom: [
|
|
||||||
{
|
|
||||||
type: 'inside',
|
|
||||||
height: 13,
|
|
||||||
start: 0,
|
|
||||||
end: 100,
|
|
||||||
bottom: '25px'
|
|
||||||
},
|
|
||||||
|
|
||||||
{ height: 13, start: 0, bottom: '25px', end: 100 }
|
|
||||||
],
|
|
||||||
|
|
||||||
xAxis: {
|
xAxis: {
|
||||||
|
// name: '时间',
|
||||||
|
// type: 'category',
|
||||||
|
// data: items,
|
||||||
|
// boundaryGap: false
|
||||||
|
type: 'time',
|
||||||
name: '时间',
|
name: '时间',
|
||||||
type: 'category',
|
//
|
||||||
data: items,
|
axisLabel: {
|
||||||
boundaryGap: false
|
formatter: {
|
||||||
|
day: '{MM}-{dd}',
|
||||||
|
month: '{MM}',
|
||||||
|
year: '{yyyy}'
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
yAxis: {
|
yAxis: {
|
||||||
name: '状态',
|
name: '状态',
|
||||||
@@ -311,9 +300,8 @@ const initSecond = () => {
|
|||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
init()
|
init()
|
||||||
})
|
})
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<style lang='scss'>
|
<style lang="scss">
|
||||||
.running-condition {
|
.running-condition {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|||||||
@@ -44,7 +44,7 @@
|
|||||||
<div class="selectBox">
|
<div class="selectBox">
|
||||||
<el-select
|
<el-select
|
||||||
@change="pointChange"
|
@change="pointChange"
|
||||||
:popper-append-to-body="false"
|
|
||||||
filterable
|
filterable
|
||||||
clearable
|
clearable
|
||||||
v-model="lineId"
|
v-model="lineId"
|
||||||
@@ -101,13 +101,15 @@
|
|||||||
<bm-info-window :show="infoWindowPoint.show" @close="infoWindowPoint.show = false">
|
<bm-info-window :show="infoWindowPoint.show" @close="infoWindowPoint.show = false">
|
||||||
<el-descriptions :title="infoWindowPoint.lineName" :column="1" v-if="infoWindowPoint.lineId">
|
<el-descriptions :title="infoWindowPoint.lineName" :column="1" v-if="infoWindowPoint.lineId">
|
||||||
<el-descriptions-item label="供电公司">{{ infoWindowPoint.gdName }}</el-descriptions-item>
|
<el-descriptions-item label="供电公司">{{ infoWindowPoint.gdName }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="变电站(场站)">{{ infoWindowPoint.subName }}</el-descriptions-item>
|
<el-descriptions-item label="变电站(场站)">
|
||||||
|
{{ infoWindowPoint.subName }}
|
||||||
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="母线">{{ infoWindowPoint.voltageName }}</el-descriptions-item>
|
<el-descriptions-item label="母线">{{ infoWindowPoint.voltageName }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="网络参数">
|
<el-descriptions-item label="网络参数">
|
||||||
{{ infoWindowPoint.ip }}
|
{{ infoWindowPoint.ip }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="PT变化">{{ infoWindowPoint.pt2 }}</el-descriptions-item>
|
<el-descriptions-item label="PT变比">{{ infoWindowPoint.pt2 }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="CT变化">{{ infoWindowPoint.ct2 }}</el-descriptions-item>
|
<el-descriptions-item label="CT变比">{{ infoWindowPoint.ct2 }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="生产厂家">
|
<el-descriptions-item label="生产厂家">
|
||||||
{{ infoWindowPoint.manufacturer }}
|
{{ infoWindowPoint.manufacturer }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
@@ -273,7 +275,7 @@ const handler = async ({ BMap, map }: any) => {
|
|||||||
}, 0)
|
}, 0)
|
||||||
siteList.value = list
|
siteList.value = list
|
||||||
center.value.lng = areaLineInfo.value[0]?.lng || 0
|
center.value.lng = areaLineInfo.value[0]?.lng || 0
|
||||||
center.value.lat = areaLineInfo.value[0]?.lat || 0
|
center.value.lat = areaLineInfo.value[0]?.lat + 0.04 || 0
|
||||||
|
|
||||||
infoWindowPoint.value = areaLineInfo.value[0] || {}
|
infoWindowPoint.value = areaLineInfo.value[0] || {}
|
||||||
infoWindowPoint.value.show = true
|
infoWindowPoint.value.show = true
|
||||||
@@ -291,7 +293,7 @@ const pointChange = (val: string) => {
|
|||||||
let data = areaLineInfo.value.find((item: any) => item.lineId == val)
|
let data = areaLineInfo.value.find((item: any) => item.lineId == val)
|
||||||
|
|
||||||
center.value.lng = data.lng
|
center.value.lng = data.lng
|
||||||
center.value.lat = data.lat
|
center.value.lat = data.lat + 0.04
|
||||||
infoWindowPoint.value = data
|
infoWindowPoint.value = data
|
||||||
infoWindowPoint.value.show = true
|
infoWindowPoint.value.show = true
|
||||||
zoom.value = 13
|
zoom.value = 13
|
||||||
@@ -330,10 +332,10 @@ onMounted(() => {
|
|||||||
if (window.localStorage.getItem('BMAP_SECKEY') == null) {
|
if (window.localStorage.getItem('BMAP_SECKEY') == null) {
|
||||||
hackReset.value = false
|
hackReset.value = false
|
||||||
}
|
}
|
||||||
}, 1000)
|
}, 500)
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
hackReset.value = true
|
hackReset.value = true
|
||||||
}, 2000)
|
}, 1000)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,18 +1,25 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" title="暂降事件列表">
|
<el-dialog draggable class="cn-operate-dialog" v-model="dialogVisible" title="暂降事件列表">
|
||||||
<vxe-table v-loading="loading" height="auto" auto-resize :data="tableData" v-bind="defaultAttribute">
|
<div style="height: 40vh">
|
||||||
<vxe-column type="seq" title="序号" width="80px"></vxe-column>
|
<vxe-table v-loading="loading" height="auto" auto-resize :data="tableData" v-bind="defaultAttribute">
|
||||||
<vxe-column field="startTime" title="发生时间" width="200"></vxe-column>
|
<vxe-column type="seq" title="序号" width="80px"></vxe-column>
|
||||||
<vxe-column field="duration" title="持续时间(s)" width="120"></vxe-column>
|
<vxe-column field="startTime" title="发生时间" width="180"></vxe-column>
|
||||||
<vxe-column field="featureAmplitude" title="暂降(骤升)幅值(%)" width="150">
|
<vxe-column field="duration" title="持续时间(s)" width="100"></vxe-column>
|
||||||
<template #default="{ row }">
|
<vxe-column field="gdName" title="供电公司" min-width="150"></vxe-column>
|
||||||
{{ (row.featureAmplitude * 100).toFixed(2) }}
|
<vxe-column field="subName" title="变电站" min-width="150"></vxe-column>
|
||||||
</template>
|
<vxe-column field="lineName" title="监测点" min-width="150"></vxe-column>
|
||||||
</vxe-column>
|
<vxe-column field="advanceType" title="暂降类型" width="100">
|
||||||
<vxe-column field="gdName" title="供电公司" width="200"></vxe-column>
|
<template #default="{ row }">
|
||||||
<vxe-column field="subName" title="变电站" min-width="200"></vxe-column>
|
{{ type.find(item => item.id === row.advanceType)?.name }}
|
||||||
<vxe-column field="lineName" title="监测点" width="200"></vxe-column>
|
</template>
|
||||||
</vxe-table>
|
</vxe-column>
|
||||||
|
<vxe-column field="featureAmplitude" title="暂降(骤升)幅值(%)" width="150">
|
||||||
|
<template #default="{ row }">
|
||||||
|
{{ (row.featureAmplitude * 100).toFixed(2) }}
|
||||||
|
</template>
|
||||||
|
</vxe-column>
|
||||||
|
</vxe-table>
|
||||||
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
@@ -20,7 +27,9 @@ import { ref, inject } from 'vue'
|
|||||||
|
|
||||||
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||||
import { getNoDealEventsByLineId } from '@/api/event-boot/areaInfo'
|
import { getNoDealEventsByLineId } from '@/api/event-boot/areaInfo'
|
||||||
|
import { useDictData } from '@/stores/dictData'
|
||||||
|
const dictData = useDictData()
|
||||||
|
const type = dictData.getBasicData('Event_Type')
|
||||||
const dialogVisible = ref(false)
|
const dialogVisible = ref(false)
|
||||||
const tableData = ref([])
|
const tableData = ref([])
|
||||||
const loading = ref(true)
|
const loading = ref(true)
|
||||||
|
|||||||
@@ -23,10 +23,10 @@
|
|||||||
<div style="flex: 1; overflow: hidden">
|
<div style="flex: 1; overflow: hidden">
|
||||||
<vxe-table height="auto" auto-resize :data="tableData" v-bind="defaultAttribute">
|
<vxe-table height="auto" auto-resize :data="tableData" v-bind="defaultAttribute">
|
||||||
<vxe-column type="seq" title="序号" width="70px"></vxe-column>
|
<vxe-column type="seq" title="序号" width="70px"></vxe-column>
|
||||||
<vxe-column field="startTime" title="发生时刻"></vxe-column>
|
<vxe-column field="startTime" title="发生时刻" width="200"></vxe-column>
|
||||||
<vxe-column field="lineName" title="监测点"></vxe-column>
|
<vxe-column field="lineName" title="监测点" width="120"></vxe-column>
|
||||||
<vxe-column field="featureAmplitude" title="暂降(骤升)幅值(%)" width="150"></vxe-column>
|
<vxe-column field="featureAmplitude" title="暂降(骤升)幅值(%)"></vxe-column>
|
||||||
<vxe-column field="duration" title="持续时间(s)" width="120"></vxe-column>
|
<vxe-column field="duration" title="持续时间(s)"></vxe-column>
|
||||||
</vxe-table>
|
</vxe-table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -18,7 +18,11 @@
|
|||||||
></el-option>
|
></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="电网标志">
|
||||||
|
<el-select v-model="tableStore.table.params.powerFlag" placeholder="请选择电网标志">
|
||||||
|
<el-option v-for="item in sign" :key="item.id" :label="item.name" :value="item.algoDescribe" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item label="筛选数据">
|
<el-form-item label="筛选数据">
|
||||||
<el-input
|
<el-input
|
||||||
@@ -40,13 +44,14 @@ import TableStore from '@/utils/tableStore'
|
|||||||
import Table from '@/components/table/index.vue'
|
import Table from '@/components/table/index.vue'
|
||||||
import TableHeader from '@/components/table/header/index.vue'
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
import { useDictData } from '@/stores/dictData'
|
import { useDictData } from '@/stores/dictData'
|
||||||
import { getEventReport } from '@/api/event-boot/report.ts'
|
import { getEventReport } from '@/api/event-boot/report'
|
||||||
|
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: 'Operationmanagement/terminalmanagement'
|
name: 'Operationmanagement/terminalmanagement'
|
||||||
})
|
})
|
||||||
const dictData = useDictData()
|
const dictData = useDictData()
|
||||||
const triggerType = dictData.getBasicData('Event_Statis')
|
const triggerType = dictData.getBasicData('Event_Statis')
|
||||||
|
const sign:any = dictData.getBasicData('power_flag')
|
||||||
const tableRef = ref()
|
const tableRef = ref()
|
||||||
const tableStore = new TableStore({
|
const tableStore = new TableStore({
|
||||||
|
|
||||||
@@ -109,7 +114,7 @@ const tableStore = new TableStore({
|
|||||||
})
|
})
|
||||||
tableStore.table.params.comFlag = '1'
|
tableStore.table.params.comFlag = '1'
|
||||||
tableStore.table.params.monitorFlag = 0
|
tableStore.table.params.monitorFlag = 0
|
||||||
tableStore.table.params.powerFlag = 1
|
tableStore.table.params.powerFlag = sign[0]?.algoDescribe || 0
|
||||||
tableStore.table.params.serverName = 'event-boot'
|
tableStore.table.params.serverName = 'event-boot'
|
||||||
tableStore.table.params.waveType=''
|
tableStore.table.params.waveType=''
|
||||||
tableStore.table.params.searchValue=''
|
tableStore.table.params.searchValue=''
|
||||||
|
|||||||
Reference in New Issue
Block a user