修改测试bug
This commit is contained in:
@@ -16,6 +16,14 @@ export function getMonitorSelect(params: any) {
|
||||
params
|
||||
})
|
||||
}
|
||||
//获取谐波源特性字典列表
|
||||
export function characteristicList(data: any) {
|
||||
return createAxios({
|
||||
url: '/advance-boot/assessDicHarmonicCharacter/list',
|
||||
method: 'Post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//新增谐波源特性字典
|
||||
export function characteristicAdd(data: any) {
|
||||
return createAxios({
|
||||
@@ -250,4 +258,69 @@ export function windPowerDdit(data: any) {
|
||||
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: {
|
||||
trigger: 'axis',
|
||||
axisPointer: {
|
||||
type: 'shadow',
|
||||
label: {
|
||||
color: '#fff',
|
||||
fontSize: 16
|
||||
}
|
||||
},
|
||||
// axisPointer: {
|
||||
// type: 'shadow',
|
||||
// label: {
|
||||
// color: '#fff',
|
||||
// fontSize: 16
|
||||
// }
|
||||
// },
|
||||
textStyle: {
|
||||
color: '#fff',
|
||||
fontStyle: 'normal',
|
||||
@@ -67,7 +67,10 @@ const initChart = () => {
|
||||
formatter: function (params: any) {
|
||||
let tips = `<strong>${params[0]?.name}</strong></br>` // 标题加粗
|
||||
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;">
|
||||
<span>${item.marker}
|
||||
${item.seriesName}:
|
||||
@@ -164,7 +167,7 @@ const handlerBar = (options: any) => {
|
||||
item.itemStyle = Object.assign(
|
||||
{
|
||||
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'
|
||||
} else {
|
||||
return props.options?.color
|
||||
|
||||
@@ -87,8 +87,8 @@ const GetEchar = async (name: string) => {
|
||||
|
||||
geo: {
|
||||
map: name,
|
||||
zoom: 1.2,
|
||||
// top: 0,
|
||||
zoom: 1.1,
|
||||
// top: 10,
|
||||
// bottom: 0,
|
||||
roam: true,
|
||||
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) => {
|
||||
|
||||
@@ -4,9 +4,20 @@
|
||||
<el-option v-for="item in timeOptions" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
|
||||
<el-date-picker v-model="timeValue" type="daterange" :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-date-picker
|
||||
v-model="timeValue"
|
||||
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 type="primary" :icon="VideoPause" @click="nowTime">当前</el-button>
|
||||
<el-button :disabled="preDisabled" type="primary" :icon="DArrowRight" @click="next"></el-button>
|
||||
@@ -70,9 +81,9 @@ const shortcuts = [
|
||||
}
|
||||
}
|
||||
]
|
||||
const isFutureDate = (time) => {
|
||||
return time && time > Date.now();
|
||||
};
|
||||
const isFutureDate = time => {
|
||||
return time && time > Date.now()
|
||||
}
|
||||
onMounted(() => {
|
||||
timeChange(3)
|
||||
})
|
||||
@@ -385,7 +396,6 @@ const next = () => {
|
||||
if (year >= presentY && !props.nextFlag) {
|
||||
startTime = presentY + '-01-01'
|
||||
if (presentM < 10) {
|
||||
|
||||
if (presentD < 10) {
|
||||
endTime = presentY + '-0' + presentM + '-0' + presentD
|
||||
} else {
|
||||
@@ -402,15 +412,16 @@ const next = () => {
|
||||
startTime = year + '-01-01'
|
||||
endTime = year + '-12-31'
|
||||
}
|
||||
|
||||
}
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
timeValue.value = [startTime, endTime]
|
||||
}
|
||||
|
||||
@@ -419,7 +430,7 @@ const setTime = (flag = 0, e = 0) => {
|
||||
|
||||
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')
|
||||
} else {
|
||||
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 class="table-header ba-scroll-style">
|
||||
<el-form
|
||||
style="flex: 1; height: 28px; display: flex; flex-wrap: wrap"
|
||||
style="flex: 1; height: 32px; display: flex; flex-wrap: wrap"
|
||||
ref="headerForm"
|
||||
@submit.prevent=""
|
||||
@keyup.enter="onComSearch"
|
||||
@@ -155,6 +155,7 @@ onMounted(() => {
|
||||
tableStore.table.params.startTime = datePickerRef.value.timeValue[0]
|
||||
tableStore.table.params.endTime = datePickerRef.value.timeValue[1]
|
||||
tableStore.table.params.timeFlag = datePickerRef.value.timeFlag
|
||||
tableStore.table.params.interval = datePickerRef.value.interval
|
||||
}
|
||||
if (props.area) {
|
||||
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.endTime = datePickerRef.value.timeValue[1]
|
||||
tableStore.table.params.timeFlag = datePickerRef.value.timeFlag
|
||||
tableStore.table.params.interval = datePickerRef.value.interval
|
||||
}
|
||||
|
||||
await tableStore.onTableAction('search', {})
|
||||
@@ -242,6 +244,7 @@ defineExpose({
|
||||
setTheDate,
|
||||
datePickerRef,
|
||||
showSelectChange,
|
||||
showSelect,
|
||||
computedSearchRow,
|
||||
onExport
|
||||
})
|
||||
|
||||
@@ -72,7 +72,7 @@ const loadData = () => {
|
||||
item.color = config.getColorVal('elementUiPrimary')
|
||||
item.children.forEach((item2: any) => {
|
||||
item2.icon = 'el-icon-CollectionTag'
|
||||
item.color = config.getColorVal('elementUiPrimary')
|
||||
item2.color = config.getColorVal('elementUiPrimary')
|
||||
item2.children.forEach((item3: any) => {
|
||||
item3.icon = 'el-icon-Flag'
|
||||
item3.color = config.getColorVal('elementUiPrimary')
|
||||
|
||||
@@ -79,7 +79,7 @@ const loadData = () => {
|
||||
item.color = config.getColorVal('elementUiPrimary')
|
||||
item.children.forEach((item2: any) => {
|
||||
item2.icon = 'el-icon-CollectionTag'
|
||||
item.color = config.getColorVal('elementUiPrimary')
|
||||
item2.color = config.getColorVal('elementUiPrimary')
|
||||
item2.children.forEach((item3: any) => {
|
||||
item3.icon = 'el-icon-Flag'
|
||||
item3.color = config.getColorVal('elementUiPrimary')
|
||||
|
||||
30
src/main.ts
30
src/main.ts
@@ -35,21 +35,21 @@ const setupAll = async () => {
|
||||
const app = createApp(App)
|
||||
|
||||
//开启离线地图
|
||||
app.use(BaiduMapOffline, {
|
||||
offline: true,
|
||||
offlineConfig: {
|
||||
imgext: '.png',
|
||||
customstyle: '',
|
||||
tiles_dir: '',
|
||||
tiles_hybrid: '',
|
||||
tiles_self: '',
|
||||
tiles_v_dir: '',
|
||||
tiles_satellite_dir: '',
|
||||
tiles_road_dir: '',
|
||||
tiles_v_road_dir: '',
|
||||
home: './plugin/offline/'
|
||||
}
|
||||
})
|
||||
// app.use(BaiduMapOffline, {
|
||||
// offline: true,
|
||||
// offlineConfig: {
|
||||
// imgext: '.png',
|
||||
// customstyle: '',
|
||||
// tiles_dir: '',
|
||||
// tiles_hybrid: '',
|
||||
// tiles_self: '',
|
||||
// tiles_v_dir: '',
|
||||
// tiles_satellite_dir: '',
|
||||
// tiles_road_dir: '',
|
||||
// tiles_v_road_dir: '',
|
||||
// home: './plugin/offline/'
|
||||
// }
|
||||
// })
|
||||
app.use(BaiduMap, {
|
||||
// ak: 'Yp57V71dkOPiXjiN8VdcFRsVELzlVNKK',
|
||||
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-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 */
|
||||
|
||||
// /* 新增/编辑表单-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 {
|
||||
margin-top: 0px !important;
|
||||
padding: 0 !important;
|
||||
|
||||
}
|
||||
.el-dialog {
|
||||
padding: 0px !important;
|
||||
@@ -229,4 +228,8 @@
|
||||
font-size: 16px;
|
||||
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')
|
||||
setTimeout(() => {
|
||||
// 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.onopen = () => this.handleOpen()
|
||||
|
||||
@@ -3001,10 +3001,10 @@ const area = () => {
|
||||
month = '0' + (month + 1)
|
||||
}
|
||||
let day: any = data.getDate()
|
||||
if (day + 1 >= 10) {
|
||||
day = day + 1
|
||||
if (day >= 10) {
|
||||
day = day
|
||||
} else {
|
||||
day = '0' + (day + 1)
|
||||
day = '0' + (day )
|
||||
}
|
||||
deviceBODetail.value.thisTimeCheck = 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 { useDictData } from '@/stores/dictData'
|
||||
import * as echarts from 'echarts/core'
|
||||
import { Top } from '@element-plus/icons-vue/dist/types'
|
||||
const dictData = useDictData()
|
||||
const options = ref({})
|
||||
|
||||
@@ -112,19 +113,10 @@ const tableStore = new TableStore({
|
||||
itemHeight: 15,
|
||||
itemGap: 25
|
||||
},
|
||||
toolbox: {
|
||||
show: true,
|
||||
feature: {
|
||||
saveAsImage: {
|
||||
// bottom: '10px',
|
||||
show: true,
|
||||
title: '保存'
|
||||
// yAxisIndex: 'none'
|
||||
}
|
||||
},
|
||||
right: 0,
|
||||
top: 0
|
||||
},
|
||||
toolbox: {
|
||||
top: 0,
|
||||
right: 10,
|
||||
},
|
||||
// tooltip: {
|
||||
// backgroundColor: '#fff',
|
||||
// textStyle: {
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<template>
|
||||
<div class="default-main online">
|
||||
<div class="online_header">
|
||||
<TableHeader date-picker ref="tableHeaderRef">
|
||||
<TableHeader date-picker area ref="tableHeaderRef">
|
||||
<template #select>
|
||||
<el-form-item label="统计类型:">
|
||||
<el-select
|
||||
v-model="formData.statisticalType"
|
||||
v-model="tableStore.table.params.statisticalType"
|
||||
placeholder="请选择统计类型"
|
||||
value-key="id"
|
||||
style="width: 100%"
|
||||
@@ -18,58 +18,10 @@
|
||||
></el-option>
|
||||
</el-select>
|
||||
</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-select
|
||||
v-model="formData.manufacturer"
|
||||
v-model="tableStore.table.params.manufacturer"
|
||||
multiple
|
||||
collapse-tags
|
||||
clearable
|
||||
@@ -85,24 +37,6 @@
|
||||
></el-option>
|
||||
</el-select>
|
||||
</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>
|
||||
</TableHeader>
|
||||
</div>
|
||||
@@ -151,7 +85,7 @@
|
||||
></path>
|
||||
</svg>
|
||||
</p>
|
||||
<span style="color: #ffcc33">热备用状态</span>
|
||||
<span style="color: #ffcc33">检修状态</span>
|
||||
</li>
|
||||
<li>
|
||||
<p style="background: #cc0000">
|
||||
@@ -178,7 +112,7 @@
|
||||
</div>
|
||||
<Table
|
||||
ref="tableRef"
|
||||
:tree-config="{ transform: true,parentField: 'uPid', rowField: 'uId' }"
|
||||
:tree-config="{ transform: true, parentField: 'uPid', rowField: 'uId' }"
|
||||
:scroll-y="{ enabled: true }"
|
||||
v-if="activeName == 0"
|
||||
/>
|
||||
@@ -291,7 +225,7 @@ const tableStore = new TableStore({
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '热备用(台)',
|
||||
title: '检修(台)',
|
||||
field: 'reaFlag',
|
||||
type: 'html',
|
||||
align: 'center',
|
||||
@@ -329,40 +263,39 @@ const tableStore = new TableStore({
|
||||
}
|
||||
}
|
||||
],
|
||||
beforeSearchFun: () => {
|
||||
tableStore.table.params.deptIndex = formData.value.deptIndex
|
||||
tableStore.table.params.statisticalType = formData.value.statisticalType
|
||||
tableStore.table.params.scale = formData.value.scale
|
||||
tableStore.table.params.manufacturer = formData.value.manufacturer
|
||||
tableStore.table.params.loadType = formData.value.loadType
|
||||
tableStore.table.params.serverName = 'harmonicBoot'
|
||||
delete tableStore.table.params.timeFlag
|
||||
delete tableStore.table.params.startTime
|
||||
delete tableStore.table.params.endTime
|
||||
delete tableStore.table.params.pageNum
|
||||
delete tableStore.table.params.pageSize
|
||||
// tableStore.table.params.searchBeginTime = tableHeaderRef.value.datePickerRef.timeValue[0]
|
||||
// tableStore.table.params.searchEndTime = tableHeaderRef.value.datePickerRef.timeValue[1]
|
||||
},
|
||||
// beforeSearchFun: () => {
|
||||
// tableStore.table.params.deptIndex = formData.value.deptIndex
|
||||
// tableStore.table.params.statisticalType = formData.value.statisticalType
|
||||
// tableStore.table.params.scale = formData.value.scale
|
||||
// tableStore.table.params.manufacturer = formData.value.manufacturer
|
||||
// tableStore.table.params.loadType = formData.value.loadType
|
||||
// tableStore.table.params.serverName = 'harmonicBoot'
|
||||
// // delete tableStore.table.params.timeFlag
|
||||
// // delete tableStore.table.params.startTime
|
||||
// // delete tableStore.table.params.endTime
|
||||
// // delete tableStore.table.params.pageNum
|
||||
// // delete tableStore.table.params.pageSize
|
||||
// // tableStore.table.params.searchBeginTime = tableHeaderRef.value.datePickerRef.timeValue[0]
|
||||
// // tableStore.table.params.searchEndTime = tableHeaderRef.value.datePickerRef.timeValue[1]
|
||||
// },
|
||||
loadCallback: () => {
|
||||
tableStore.table.data = tree2List(tableStore.table.data, Math.random() * 1000)
|
||||
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(() => {
|
||||
activeName.value == 0 && tableRef.value && tableRef.value.getRef().setAllTreeExpand(true)
|
||||
}, 0)
|
||||
}
|
||||
})
|
||||
const handleSearch = () => {
|
||||
formData.value.searchBeginTime = datePickerRef.value.timeValue[0]
|
||||
formData.value.searchEndTime = datePickerRef.value.timeValue[1]
|
||||
}
|
||||
tableStore.table.params.deptIndex = ''
|
||||
tableStore.table.params.statisticalType = []
|
||||
tableStore.table.params.scale = []
|
||||
tableStore.table.params.manufacturer = []
|
||||
tableStore.table.params.loadType = []
|
||||
tableStore.table.params.deptIndex = treeData.value[0]?.id
|
||||
tableStore.table.params.statisticalType = classificationData[0]
|
||||
tableStore.table.params.scale = voltageleveloption
|
||||
tableStore.table.params.manufacturer = terminaloption
|
||||
tableStore.table.params.loadType = interfereoption
|
||||
tableStore.table.params.serverName = 'harmonicBoot'
|
||||
|
||||
|
||||
provide('tableStore', tableStore)
|
||||
const tree2List = (list: any, id?: string) => {
|
||||
//存储结果的数组
|
||||
@@ -403,7 +336,6 @@ watch(
|
||||
)
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
|
||||
.table_legend {
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
|
||||
@@ -1,103 +1,114 @@
|
||||
<template>
|
||||
|
||||
<el-dialog draggable v-model="dialogVisible" :title="title" width="70%">
|
||||
<div style="height: 55vh">
|
||||
<vxe-table height="auto" auto-resize :data="tableData" v-loading="loading" v-bind="defaultAttribute"
|
||||
:key="key">
|
||||
<vxe-table
|
||||
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 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="voltageLevel" title="电压等级"
|
||||
v-if="statisticalName == '谐波电压' && !voltageLevelFlag"></vxe-column>
|
||||
<vxe-column field="data" :title="statisticalName">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.data == 3.14159" type="primary" size="small">暂无数据</span>
|
||||
<span v-else type="primary" size="small">
|
||||
{{ parseFloat(scope.row.data.toFixed(2)) }}
|
||||
</span>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column field="zd" title="评估">
|
||||
<template #default="scope">
|
||||
<span v-if="
|
||||
0 <= scope.row.data &&
|
||||
scope.row.data < 1 &&
|
||||
scope.row.data !== 3.14159
|
||||
" style=" font-weight: bold;color: #339966;">
|
||||
无污染
|
||||
</span>
|
||||
<span v-if="
|
||||
1 <= scope.row.data &&
|
||||
scope.row.data < 1.2 &&
|
||||
scope.row.data !== 3.14159
|
||||
" style=" font-weight: bold;color: #3399ff;">
|
||||
轻微污染
|
||||
</span>
|
||||
<span v-if="
|
||||
1.2 <= scope.row.data &&
|
||||
scope.row.data < 1.6 &&
|
||||
scope.row.data !== 3.14159
|
||||
" style=" font-weight: bold;color: #ffcc33;">
|
||||
轻度污染
|
||||
</span>
|
||||
<span v-if="
|
||||
1.6 <= scope.row.data &&
|
||||
scope.row.data < 2 &&
|
||||
scope.row.data !== 3.14159
|
||||
" style=" font-weight: bold;color: #ff9900;">
|
||||
中度污染
|
||||
</span>
|
||||
<span v-if="
|
||||
2 <= scope.row.data && scope.row.data && scope.row.data !== 3.14159
|
||||
" style=" font-weight: bold;color: #cc0000;">
|
||||
重度污染
|
||||
</span>
|
||||
<span v-if="scope.row.data == 3.14159" style="color: #000;">
|
||||
暂无评估
|
||||
</span>
|
||||
</template>
|
||||
</vxe-column>
|
||||
</vxe-table>
|
||||
</div>
|
||||
<vxe-column
|
||||
field="voltageLevel"
|
||||
title="电压等级"
|
||||
v-if="statisticalName == '谐波电压' && !voltageLevelFlag"
|
||||
>
|
||||
<template #default="scope">
|
||||
{{ scaleList.filter(item => item.id == scope.row.voltageLevel)[0].name }}
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column field="data" :title="statisticalName">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.data == 3.14159" type="primary" size="small">暂无数据</span>
|
||||
<span v-else type="primary" size="small">
|
||||
{{ parseFloat(scope.row.data.toFixed(2)) }}
|
||||
</span>
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column field="zd" title="评估">
|
||||
<template #default="scope">
|
||||
<span
|
||||
v-if="0 <= scope.row.data && scope.row.data < 1 && scope.row.data !== 3.14159"
|
||||
style="font-weight: bold; color: #339966"
|
||||
>
|
||||
无污染
|
||||
</span>
|
||||
<span
|
||||
v-if="1 <= scope.row.data && scope.row.data < 1.2 && scope.row.data !== 3.14159"
|
||||
style="font-weight: bold; color: #3399ff"
|
||||
>
|
||||
轻微污染
|
||||
</span>
|
||||
<span
|
||||
v-if="1.2 <= scope.row.data && scope.row.data < 1.6 && scope.row.data !== 3.14159"
|
||||
style="font-weight: bold; color: #ffcc33"
|
||||
>
|
||||
轻度污染
|
||||
</span>
|
||||
<span
|
||||
v-if="1.6 <= scope.row.data && scope.row.data < 2 && scope.row.data !== 3.14159"
|
||||
style="font-weight: bold; color: #ff9900"
|
||||
>
|
||||
中度污染
|
||||
</span>
|
||||
<span
|
||||
v-if="2 <= scope.row.data && scope.row.data && scope.row.data !== 3.14159"
|
||||
style="font-weight: bold; color: #cc0000"
|
||||
>
|
||||
重度污染
|
||||
</span>
|
||||
<span v-if="scope.row.data == 3.14159" style="color: #000">暂无评估</span>
|
||||
</template>
|
||||
</vxe-column>
|
||||
</vxe-table>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
</template>
|
||||
<script setup lang='ts'>
|
||||
<script setup lang="ts">
|
||||
import { ref, reactive } from 'vue'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||
import { getSubstationInfoById, getLineInfoById } from '@/api/harmonic-boot/area'
|
||||
const dialogVisible = ref(false)
|
||||
const dictData = useDictData()
|
||||
const loading = ref(false)
|
||||
const voltageLevelFlag = ref(false)
|
||||
const tableData = ref([])
|
||||
const scaleList = dictData.getBasicData('Dev_Voltage_Stand')
|
||||
const title = ref('')
|
||||
const key = ref(0)
|
||||
const statisticalName = ref('')
|
||||
const open = (row: any, flag: boolean, params: any) => {
|
||||
console.log("🚀 ~ open ~ row:", row)
|
||||
console.log('🚀 ~ open ~ row:', row)
|
||||
voltageLevelFlag.value = flag
|
||||
loading.value = true
|
||||
title.value = row.name + '详情'
|
||||
statisticalName.value = params.statisticalType.name
|
||||
statisticalName.value = params.statisticalType.name
|
||||
tableData.value = []
|
||||
if (flag) {
|
||||
getLineInfoById({ ...params, deptIndex: row.pid, id: row.id ,powerFlag: row.powerFlag }).then((res: any) => {
|
||||
tableData.value = res.data
|
||||
loading.value = false
|
||||
}).catch(() => {
|
||||
loading.value = false
|
||||
})
|
||||
|
||||
getLineInfoById({ ...params, deptIndex: row.pid, id: row.id, powerFlag: row.powerFlag })
|
||||
.then((res: any) => {
|
||||
tableData.value = res.data
|
||||
loading.value = false
|
||||
})
|
||||
.catch(() => {
|
||||
loading.value = false
|
||||
})
|
||||
} else {
|
||||
getSubstationInfoById({ ...params, deptIndex: row.id }).then((res: any) => {
|
||||
tableData.value = res.data
|
||||
loading.value = false
|
||||
}).catch(() => {
|
||||
loading.value = false
|
||||
})
|
||||
getSubstationInfoById({ ...params, deptIndex: row.id })
|
||||
.then((res: any) => {
|
||||
tableData.value = res.data
|
||||
loading.value = false
|
||||
})
|
||||
.catch(() => {
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
|
||||
key.value += 1
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
@click="queryline(item1, true)"
|
||||
>
|
||||
<el-tag
|
||||
v-if="item1.data == 3.14159 "
|
||||
v-if="item1.data == 3.14159"
|
||||
style="background: #ccc; color: #fff"
|
||||
size="small"
|
||||
>
|
||||
@@ -271,6 +271,9 @@ const tableStore = new TableStore({
|
||||
url: '/harmonic-boot/PollutionSubstation/deptSubstationRelations',
|
||||
method: 'POST',
|
||||
column: [],
|
||||
beforeSearchFun: () => {
|
||||
tableStore.table.params.reportFlag = tableStore.table.params.interval
|
||||
},
|
||||
loadCallback: () => {
|
||||
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.monitorFlag = 2
|
||||
tableStore.table.params.powerFlag = sign[0]?.algoDescribe || 0
|
||||
tableStore.table.params.reportFlag = 3
|
||||
|
||||
tableStore.table.params.serverName = 'event-boot'
|
||||
const handleTabChange = (val: any) => {
|
||||
if (val == 0) return
|
||||
@@ -318,7 +321,7 @@ const histogram = (res: any) => {
|
||||
' ' +
|
||||
' ' +
|
||||
(params[i].value == 0.14159
|
||||
? '无污染'
|
||||
? '暂无数据'
|
||||
: params[i].value < 1
|
||||
? '无污染'
|
||||
: params[i].value < 1.2
|
||||
@@ -385,8 +388,7 @@ const histogram = (res: any) => {
|
||||
|
||||
// 定制显示(按顺序)
|
||||
color: function (params) {
|
||||
if (params.value == 0.14159) {
|
||||
} else if (params.value == 0) {
|
||||
if (params.value == 0) {
|
||||
return '#339966'
|
||||
} else if (params.value > 2) {
|
||||
return new echarts.graphic.LinearGradient(
|
||||
@@ -448,7 +450,7 @@ const histogram = (res: any) => {
|
||||
0 < params.value &&
|
||||
params.value <= 1 &&
|
||||
params.value >= 0 &&
|
||||
params.value !== 0.05
|
||||
params.value !== 0.14159
|
||||
) {
|
||||
return new echarts.graphic.LinearGradient(
|
||||
0,
|
||||
@@ -463,7 +465,7 @@ const histogram = (res: any) => {
|
||||
],
|
||||
false
|
||||
)
|
||||
} else if (params.value == 0.05) {
|
||||
} else if (params.value == 0.14159) {
|
||||
return new echarts.graphic.LinearGradient(
|
||||
0,
|
||||
1,
|
||||
@@ -594,7 +596,7 @@ const map = (res: any) => {
|
||||
let d = element.name.split('\n')
|
||||
let p1 = {
|
||||
name: d[0],
|
||||
value: element.data
|
||||
value: element.data == 3.14159 ? -1 : element.data
|
||||
}
|
||||
|
||||
arr1.push(p1)
|
||||
@@ -673,7 +675,7 @@ const map = (res: any) => {
|
||||
},
|
||||
{
|
||||
gte: -1,
|
||||
lte: 0.05,
|
||||
lte: 0.14159,
|
||||
label: '无数据',
|
||||
color: '#ccc'
|
||||
}
|
||||
@@ -786,7 +788,7 @@ const layout1 = mainHeight(93) as any
|
||||
.legend {
|
||||
position: absolute;
|
||||
right: 15px;
|
||||
top: 17px;
|
||||
top: 20px;
|
||||
z-index: 99;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
<vxe-column field="name" title="名称"></vxe-column>
|
||||
<vxe-column field="data" :title="changeName">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.data == -1" 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" type="primary" size="small">暂无数据</span>
|
||||
<span v-if="scope.row.data !== 3.14159 && scope.row.data !== 0.1" type="primary"
|
||||
size="small">
|
||||
{{ scope.row.data }}
|
||||
</span>
|
||||
@@ -155,7 +155,7 @@ const map = (res: any) => {
|
||||
let d = element.name.split('\n')
|
||||
let p1 = {
|
||||
name: d[0],
|
||||
value: element.data
|
||||
value: element.data == 3.14159 ? -1 : element.data
|
||||
}
|
||||
|
||||
arr1.push(p1)
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<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-item label="多监测点">
|
||||
<el-checkbox v-model="checked" @change="checkChange" />
|
||||
</el-form-item>
|
||||
<el-form-item label="日期">
|
||||
<DatePicker ref="datePickerRef"></DatePicker>
|
||||
<DatePicker ref="datePickerRef" ></DatePicker>
|
||||
</el-form-item>
|
||||
<el-form-item label="指标类型:">
|
||||
<el-select
|
||||
@@ -116,7 +116,7 @@
|
||||
<SecondSheet v-if="options" style="background: #fff; z-index: 10">
|
||||
<el-button
|
||||
style="position: absolute; right: 0; top: 0; cursor: pointer; z-index: 3"
|
||||
icon="el-icon-Back"
|
||||
icon="el-icon-Back"
|
||||
size="small"
|
||||
@click="close"
|
||||
>
|
||||
@@ -259,7 +259,7 @@ const conditionChange = () => {
|
||||
}
|
||||
if (
|
||||
formData.condition.includes('46') ||
|
||||
// formData.condition.includes('47') ||
|
||||
// formData.condition.includes('47') ||
|
||||
// formData.condition.includes('48') ||
|
||||
formData.condition.includes('49')
|
||||
) {
|
||||
@@ -275,7 +275,7 @@ const conditionChange = () => {
|
||||
formData.condition.includes('43') ||
|
||||
formData.condition.includes('44') ||
|
||||
(formData.condition.includes('45') && formData.condition.includes('46')) ||
|
||||
// formData.condition.includes('47') ||
|
||||
// formData.condition.includes('47') ||
|
||||
// formData.condition.includes('48') ||
|
||||
formData.condition.includes('49')
|
||||
) {
|
||||
@@ -294,7 +294,7 @@ const conditionChange = () => {
|
||||
}
|
||||
if (
|
||||
formData.condition.includes('46') ||
|
||||
// formData.condition.includes('47') ||
|
||||
// formData.condition.includes('47') ||
|
||||
// formData.condition.includes('48') ||
|
||||
formData.condition.includes('49')
|
||||
) {
|
||||
@@ -311,7 +311,7 @@ const conditionChange = () => {
|
||||
formData.condition.includes('44') ||
|
||||
formData.condition.includes('45')) &&
|
||||
(formData.condition.includes('46') ||
|
||||
// formData.condition.includes('47') ||
|
||||
// formData.condition.includes('47') ||
|
||||
// formData.condition.includes('48') ||
|
||||
formData.condition.includes('49'))
|
||||
) {
|
||||
@@ -323,7 +323,7 @@ const conditionChange = () => {
|
||||
}
|
||||
if (
|
||||
formData.condition.includes('46') ||
|
||||
// formData.condition.includes('47') ||
|
||||
// formData.condition.includes('47') ||
|
||||
// formData.condition.includes('48') ||
|
||||
formData.condition.includes('49')
|
||||
) {
|
||||
@@ -350,7 +350,7 @@ const conditionChange = () => {
|
||||
formData.condition.includes('44') ||
|
||||
formData.condition.includes('45')) &&
|
||||
(formData.condition.includes('46') ||
|
||||
// formData.condition.includes('47') ||
|
||||
// formData.condition.includes('47') ||
|
||||
// formData.condition.includes('48') ||
|
||||
formData.condition.includes('49'))
|
||||
) {
|
||||
@@ -362,7 +362,7 @@ const conditionChange = () => {
|
||||
}
|
||||
if (
|
||||
formData.condition.includes('46') ||
|
||||
// formData.condition.includes('47') ||
|
||||
// formData.condition.includes('47') ||
|
||||
// formData.condition.includes('48') ||
|
||||
formData.condition.includes('49')
|
||||
) {
|
||||
@@ -389,7 +389,7 @@ const conditionChange = () => {
|
||||
formData.condition.includes('44') ||
|
||||
formData.condition.includes('45')) &&
|
||||
(formData.condition.includes('46') ||
|
||||
// formData.condition.includes('47') ||
|
||||
// formData.condition.includes('47') ||
|
||||
// formData.condition.includes('48') ||
|
||||
formData.condition.includes('49'))
|
||||
) {
|
||||
@@ -401,7 +401,7 @@ const conditionChange = () => {
|
||||
}
|
||||
if (
|
||||
formData.condition.includes('46') ||
|
||||
// formData.condition.includes('47') ||
|
||||
// formData.condition.includes('47') ||
|
||||
// formData.condition.includes('48') ||
|
||||
formData.condition.includes('49')
|
||||
) {
|
||||
|
||||
@@ -132,7 +132,7 @@ const init = (row: any) => {
|
||||
) / 100
|
||||
|
||||
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
|
||||
iData[`h${i + 1}`] =
|
||||
Math.floor(
|
||||
@@ -140,7 +140,7 @@ const init = (row: any) => {
|
||||
) / 100
|
||||
}
|
||||
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[1].data = SvData
|
||||
|
||||
@@ -341,7 +341,27 @@ const setEcharts = () => {
|
||||
fontSize: 14
|
||||
},
|
||||
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: []
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<el-checkbox v-model="checked" @change="checkChange" />
|
||||
</el-form-item>
|
||||
<el-form-item label="日期">
|
||||
<DatePicker ref="datePickerRef"></DatePicker>
|
||||
<DatePicker ref="datePickerRef" :theCurrentTime="true"></DatePicker>
|
||||
</el-form-item>
|
||||
<el-form-item label="指标类型:">
|
||||
<el-select
|
||||
@@ -67,7 +67,7 @@
|
||||
<!-- <el-form :inline="true">
|
||||
|
||||
</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" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -90,6 +90,7 @@ import { queryEventDetailByEventId } from '@/api/event-boot/highAndLowPressure'
|
||||
import TableStore from '@/utils/tableStore'
|
||||
import waveForm from '@/components/echarts/waveForm.vue'
|
||||
import html2canvas from 'html2canvas'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import * as echarts from 'echarts' // 全引入
|
||||
const datePickerRef = ref()
|
||||
const monitoringPoint = useMonitoringPoint()
|
||||
@@ -139,7 +140,7 @@ onMounted(() => {
|
||||
init()
|
||||
})
|
||||
const height: any = ref(mainHeight(200, 1))
|
||||
const height1: any = ref(mainHeight(200))
|
||||
const height1: any = ref(mainHeight(160))
|
||||
const checkChange = () => {
|
||||
if (checked.value) {
|
||||
monitoringPoint.setShowCheckBox(true)
|
||||
@@ -149,6 +150,9 @@ const checkChange = () => {
|
||||
}
|
||||
}
|
||||
const init = () => {
|
||||
if (formData.condition.length == 0) {
|
||||
return ElMessage.warning('请选择指标类型')
|
||||
}
|
||||
loading.value = true
|
||||
formData.lineId = checked.value ? monitoringPoint.state.lineIds : [monitoringPoint.state.lineId]
|
||||
formData.searchBeginTime = datePickerRef.value.timeValue[0]
|
||||
@@ -162,13 +166,14 @@ const init = () => {
|
||||
}
|
||||
})
|
||||
getHistoryResult(formData)
|
||||
.then((res: any) => {
|
||||
.then(async (res: any) => {
|
||||
if (directionValue >= 0) {
|
||||
res.data[directionValue].targetName = '谐波电流方向'
|
||||
traceability.value = [(res.data as [])[directionValue]]
|
||||
}
|
||||
list.value = []
|
||||
shujuchuli(res)
|
||||
await shujuchuli(res)
|
||||
await selectChange(tableHeaderRef.value.showSelect)
|
||||
loading.value = false
|
||||
})
|
||||
.catch(() => {
|
||||
@@ -1146,7 +1151,7 @@ const shujuchuli = (res: any) => {
|
||||
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) => {
|
||||
if (item.targetName == '电压不平衡') {
|
||||
@@ -1406,22 +1411,22 @@ const getEcharts = () => {
|
||||
? 'A相谐波电流方向:无<br/>'
|
||||
: 'A相谐波电流方向:流出<br/>'
|
||||
} else if (params[i].seriesName == 'B相谐波电流方向') {
|
||||
tips += params[i].marker +
|
||||
params[i].value[1] > 0
|
||||
tips +=
|
||||
params[i].marker + params[i].value[1] > 0
|
||||
? 'B相谐波电流方向:流入<br/>'
|
||||
: params[i].value[1] == 0
|
||||
? 'B相谐波电流方向:无<br/>'
|
||||
: 'B相谐波电流方向:流出<br/>'
|
||||
} else if (params[i].seriesName == 'C相谐波电流方向') {
|
||||
tips += params[i].marker +
|
||||
params[i].value[1] > 0
|
||||
tips +=
|
||||
params[i].marker + params[i].value[1] > 0
|
||||
? 'C相谐波电流方向:流入<br/>'
|
||||
: params[i].value[1] == 0
|
||||
? 'C相谐波电流方向:无<br/>'
|
||||
: 'C相谐波电流方向:流出<br/>'
|
||||
} else if (params[i].seriesName == '总谐波电流方向') {
|
||||
tips += params[i].marker +
|
||||
params[i].value[1] > 0
|
||||
tips +=
|
||||
params[i].marker + params[i].value[1] > 0
|
||||
? '总谐波电流方向:流入<br/>'
|
||||
: params[i].value[1] == 0
|
||||
? '总谐波电流方向:无<br/>'
|
||||
@@ -1430,22 +1435,22 @@ const getEcharts = () => {
|
||||
let str = (params[i].value[1] * 1).toString()
|
||||
let reg = str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g
|
||||
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)') {
|
||||
let str = (params[i].value[1] * 1).toString()
|
||||
let reg = str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g
|
||||
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)') {
|
||||
let str = (params[i].value[1] * 1).toString()
|
||||
let reg = str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g
|
||||
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 {
|
||||
let str = (params[i].value[2] * 1).toString()
|
||||
let reg = str.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g
|
||||
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 reg2 = str2.indexOf('.') > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g
|
||||
@@ -1453,7 +1458,7 @@ const getEcharts = () => {
|
||||
// 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(() => {
|
||||
console.log('🚀 ~ setTimeout ~ tableHeaderRef.value:', tableHeaderRef.value)
|
||||
// console.log('🚀 ~ setTimeout ~ tableHeaderRef.value:', tableHeaderRef.value)
|
||||
|
||||
tableHeaderRef.value && tableHeaderRef.value?.computedSearchRow()
|
||||
}, 100)
|
||||
@@ -1830,7 +1835,7 @@ const triggerPoint = (data: any) => {
|
||||
}
|
||||
// 计算高度
|
||||
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 = () => {
|
||||
view.value = true
|
||||
|
||||
@@ -98,15 +98,16 @@ const init = () => {
|
||||
// }
|
||||
}
|
||||
for (let i = 0; i < steadyInfoData.length; i++) {
|
||||
if (steadyInfoData[i] == 3.1415) {
|
||||
steadyInfoData[i] = 1
|
||||
yData2.push(steadyInfoData[i])
|
||||
} else if (steadyInfoData[i] == 3.14159) {
|
||||
steadyInfoData[i] = 1
|
||||
yData2.push(steadyInfoData[i])
|
||||
} else if (steadyInfoData[i] !== 3.14159) {
|
||||
yData2.push(steadyInfoData[i])
|
||||
}
|
||||
yData2.push(steadyInfoData[i])
|
||||
// if (steadyInfoData[i] == 3.14159) {
|
||||
// steadyInfoData[i] = 0
|
||||
// yData2.push(steadyInfoData[i])
|
||||
// } else if (steadyInfoData[i] == 3.14159) {
|
||||
// steadyInfoData[i] = 0
|
||||
// yData2.push(steadyInfoData[i])
|
||||
// } else if (steadyInfoData[i] !== 3.14159) {
|
||||
// yData2.push(steadyInfoData[i])
|
||||
// }
|
||||
}
|
||||
let series: any[] = [
|
||||
{
|
||||
@@ -183,13 +184,13 @@ const init = () => {
|
||||
name: formData.periodBeginTime + '至' + formData.periodEndTime,
|
||||
type: 'bar',
|
||||
barMaxWidth: 30,
|
||||
label: {
|
||||
show: true,
|
||||
position: 'top',
|
||||
distance: 2,
|
||||
color: '#fff',
|
||||
fontWeight: 'bolder'
|
||||
},
|
||||
// label: {
|
||||
// show: true,
|
||||
// position: 'top',
|
||||
// distance: 2,
|
||||
// color: '#fff',
|
||||
// fontWeight: 'bolder'
|
||||
// },
|
||||
data: yData2,
|
||||
itemStyle: {
|
||||
color: (params: any) => {
|
||||
@@ -197,6 +198,8 @@ const init = () => {
|
||||
return gradeColor3[0]
|
||||
} else if (params.value > 60) {
|
||||
return gradeColor3[1]
|
||||
} else if (params.value == 3.14159) {
|
||||
return '#ccc'
|
||||
} else {
|
||||
return gradeColor3[2]
|
||||
}
|
||||
|
||||
@@ -1,23 +1,22 @@
|
||||
<template>
|
||||
<div style="display: flex; flex-direction: column; height: 100%">
|
||||
<TableHeader ref="TableHeaderRef" :showSearch="false" >
|
||||
<TableHeader ref="TableHeaderRef" :showSearch="false">
|
||||
<template v-slot:select>
|
||||
<el-form-item label="日期">
|
||||
<DatePicker ref="datePickerRef"></DatePicker>
|
||||
</el-form-item>
|
||||
<el-form-item label="指标">
|
||||
<el-radio-group v-model="formData.harmState">
|
||||
<el-radio-button :label="0">谐波电压含有率</el-radio-button>
|
||||
<el-radio-button :label="1">谐波电流幅值</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<DatePicker ref="datePickerRef"></DatePicker>
|
||||
</el-form-item>
|
||||
<el-form-item label="指标">
|
||||
<el-radio-group v-model="formData.harmState">
|
||||
<el-radio-button :label="0">谐波电压含有率</el-radio-button>
|
||||
<el-radio-button :label="1">谐波电流幅值</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</template>
|
||||
<template v-slot:operation>
|
||||
<el-button type="primary" @click="init" icon="el-icon-Search">查询</el-button>
|
||||
|
||||
</template>
|
||||
</TableHeader>
|
||||
|
||||
|
||||
<vxe-table :data="analysisData" v-bind="defaultAttribute">
|
||||
<vxe-column field="name" title="指标" width="140px"></vxe-column>
|
||||
<vxe-column
|
||||
@@ -27,7 +26,7 @@
|
||||
width="80px"
|
||||
></vxe-column>
|
||||
</vxe-table>
|
||||
<div style="flex: 1" class="mt10" v-loading="loading">
|
||||
<div style="flex: 1" class="mt10" v-loading="loading">
|
||||
<my-echart :options="options" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -69,8 +68,12 @@ const init = () => {
|
||||
analysisData.value.push(
|
||||
{
|
||||
name: '谐波电流幅值(A)',
|
||||
originData: res.data.harmInHarmValue.map((item: number) => item.toFixed(3)),
|
||||
...res.data.harmInHarmValue.map((item: number) => item.toFixed(3))
|
||||
originData: res.data.harmInHarmValue.map((item: number) =>
|
||||
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)',
|
||||
@@ -82,8 +85,12 @@ const init = () => {
|
||||
analysisData.value.push(
|
||||
{
|
||||
name: '谐波电压含有率(%)',
|
||||
originData: res.data.harmInHarmValue.map((item: number) => item.toFixed(3)),
|
||||
...res.data.harmInHarmValue.map((item: number) => item.toFixed(3))
|
||||
originData: res.data.harmInHarmValue.map((item: number) =>
|
||||
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: '国标限值(%)',
|
||||
|
||||
@@ -1,26 +1,26 @@
|
||||
<template>
|
||||
<div style="display: flex; flex-direction: column; height: 100%">
|
||||
<TableHeader ref="TableHeaderRef" :showSearch="false" >
|
||||
<TableHeader ref="TableHeaderRef" :showSearch="false">
|
||||
<template v-slot:select>
|
||||
<el-form-item label="日期">
|
||||
<DatePicker ref="datePickerRef"></DatePicker>
|
||||
</el-form-item>
|
||||
<el-form-item label="对比">
|
||||
<el-select v-model="searchType" clearable placeholder="可选择同比、环比">
|
||||
<el-option
|
||||
v-for="item in searchTypeOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<DatePicker ref="datePickerRef"></DatePicker>
|
||||
</el-form-item>
|
||||
<el-form-item label="对比">
|
||||
<el-select v-model="searchType" clearable placeholder="可选择同比、环比">
|
||||
<el-option
|
||||
v-for="item in searchTypeOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</template>
|
||||
<template v-slot:operation>
|
||||
<el-button type="primary" @click="init" icon="el-icon-Search">查询</el-button>
|
||||
</template>
|
||||
</TableHeader>
|
||||
|
||||
|
||||
<div style="flex: 1; display: flex; overflow: hidden" class="mt10" v-loading="loading">
|
||||
<div style="flex: 1">
|
||||
<my-echart :options="options1" />
|
||||
@@ -90,11 +90,15 @@ const init = () => {
|
||||
formData.periodBeginTime = ''
|
||||
formData.periodEndTime = ''
|
||||
}
|
||||
Promise.all([getComFlagInfoData(formData), getRunInfoData(formData)]).then((res: any) => {
|
||||
handlerOptions1(res[0].data)
|
||||
handlerOptions2(res[1].data)
|
||||
loading.value = false
|
||||
}).catch(() => { loading.value = false })
|
||||
Promise.all([getComFlagInfoData(formData), getRunInfoData(formData)])
|
||||
.then((res: any) => {
|
||||
handlerOptions1(res[0].data)
|
||||
handlerOptions2(res[1].data)
|
||||
loading.value = false
|
||||
})
|
||||
.catch(() => {
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
const handlerOptions1 = (data: any) => {
|
||||
options1.value = {
|
||||
@@ -106,13 +110,13 @@ const handlerOptions1 = (data: any) => {
|
||||
},
|
||||
tooltip: {
|
||||
formatter: function (params: any) {
|
||||
var res = params[0].name + '<br/>终端运行状态为:'
|
||||
var res = params[0].data[0] + '<br/>终端运行状态为:'
|
||||
var texts = ''
|
||||
if (params[0].value === 2 || params[0].value === '2') {
|
||||
if (params[0].data[1] === 2 || params[0].data[1] === '2') {
|
||||
texts = '退出'
|
||||
} else if (params[0].value === 0 || params[0].value === '0') {
|
||||
} else if (params[0].data[1] === 0 || params[0].data[1] === '0') {
|
||||
texts = '中断'
|
||||
} else if (params[0].value === 1 || params[0].value === '1') {
|
||||
} else if (params[0].data[1] === 1 || params[0].data[1] === '1') {
|
||||
texts = '正常'
|
||||
}
|
||||
res = res + texts
|
||||
@@ -120,11 +124,21 @@ const handlerOptions1 = (data: any) => {
|
||||
}
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: data.updateTime
|
||||
// type: 'category',
|
||||
// data: data.updateTime
|
||||
type: 'time',
|
||||
name: '时间',
|
||||
//
|
||||
axisLabel: {
|
||||
formatter: {
|
||||
day: '{MM}-{dd}',
|
||||
month: '{MM}',
|
||||
year: '{yyyy}'
|
||||
}
|
||||
}
|
||||
},
|
||||
yAxis: {
|
||||
name:'状态',
|
||||
name: '状态',
|
||||
type: 'value',
|
||||
axisLabel: {
|
||||
// 这里重新定义就可以
|
||||
@@ -144,8 +158,9 @@ const handlerOptions1 = (data: any) => {
|
||||
series: [
|
||||
{
|
||||
name: '中断运行状态',
|
||||
data: data.type,
|
||||
type: 'line'
|
||||
data: data.type.map((item: any, index: number) => [data.updateTime[index], item]),
|
||||
type: 'line',
|
||||
step: 'end'
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -165,7 +180,7 @@ const handlerOptions2 = (data: any) => {
|
||||
: [`${formData.searchBeginTime} 至 ${formData.searchEndTime}`]
|
||||
},
|
||||
yAxis: {
|
||||
name:'%',
|
||||
name: '%',
|
||||
type: 'value'
|
||||
},
|
||||
series: [
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<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="height1" class="mr10 box" style="width: 450px">
|
||||
<div :style="height1" class="mr10 box" style="width: 500px">
|
||||
<vxe-table
|
||||
height="auto"
|
||||
:data="TableData"
|
||||
@@ -12,6 +12,7 @@
|
||||
>
|
||||
<vxe-column type="seq" title="序号" width="60px"></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="timeSum" title="告警时间(分钟)" width="80px"></vxe-column>
|
||||
</vxe-table>
|
||||
|
||||
@@ -18,25 +18,50 @@
|
||||
:value="item.transtypeId"
|
||||
></el-option>
|
||||
</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
|
||||
v-else-if="
|
||||
item.field == 'transNum' ||
|
||||
item.field == 'capacitorNum' ||
|
||||
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%"
|
||||
v-model="form[item.field]"
|
||||
show-word-limit
|
||||
:min="0"
|
||||
placeholder="请输入值"
|
||||
></el-input-number>
|
||||
|
||||
<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]"
|
||||
filterable
|
||||
placeholder="请选择接入变电站"
|
||||
placeholder="请选择电压等级"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in voltageleveloption"
|
||||
@@ -64,15 +89,23 @@ import { reactive } from 'vue'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import {
|
||||
transformerList,
|
||||
characteristicList,
|
||||
assessTransformerParamAdd,
|
||||
assessTransformerParamEdit,
|
||||
capacitorAdd,
|
||||
capacitorEdit
|
||||
capacitorEdit,
|
||||
windPowerAdd,
|
||||
windPowerDdit,
|
||||
loadParamAdd,
|
||||
loadParamEdit,
|
||||
shockAdd,
|
||||
shockEdit
|
||||
} from '@/api/advance-boot/assess'
|
||||
import { ElMessage, ElMessageBox, ElDatePicker } from 'element-plus'
|
||||
const emits = defineEmits(['init'])
|
||||
const child: any = ref([])
|
||||
const transformer: any = ref([])
|
||||
const characteristic: any = ref([])
|
||||
const form: any = ref({})
|
||||
const dictData = useDictData()
|
||||
//字典获取电压等级
|
||||
@@ -86,6 +119,17 @@ const rules = {
|
||||
capacitorCapacity: [{ required: true, message: '请输入单组容量', trigger: 'blur' }],
|
||||
capacitorReactance: [{ required: true, message: '请输入电抗率', trigger: 'blur' }],
|
||||
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 dialogVisible = ref(false)
|
||||
@@ -114,35 +158,66 @@ const info = async () => {
|
||||
transformerList({}).then((res: any) => {
|
||||
transformer.value = res.data
|
||||
})
|
||||
// 谐波源特特性
|
||||
characteristicList({}).then((res: any) => {
|
||||
characteristic.value = res.data
|
||||
})
|
||||
}
|
||||
const submit = async () => {
|
||||
formRef.value.validate((valid: any) => {
|
||||
formRef.value.validate(async (valid: any) => {
|
||||
if (valid) {
|
||||
if (title.value == '新增_变压器参数维护') {
|
||||
assessTransformerParamAdd(form.value).then((res: any) => {
|
||||
await assessTransformerParamAdd(form.value).then((res: any) => {
|
||||
ElMessage.success('新增成功')
|
||||
emits('init', 0)
|
||||
dialogVisible.value = false
|
||||
})
|
||||
} else if (title.value == '编辑_变压器参数维护') {
|
||||
assessTransformerParamEdit(form.value).then((res: any) => {
|
||||
await assessTransformerParamEdit(form.value).then((res: any) => {
|
||||
ElMessage.success('修改成功')
|
||||
emits('init', 0)
|
||||
dialogVisible.value = false
|
||||
})
|
||||
} else if (title.value == '新增_电容器组参数维护') {
|
||||
capacitorAdd(form.value).then((res: any) => {
|
||||
await capacitorAdd(form.value).then((res: any) => {
|
||||
ElMessage.success('新增成功')
|
||||
emits('init', 1)
|
||||
dialogVisible.value = false
|
||||
})
|
||||
} else if (title.value == '编辑_电容器组参数维护') {
|
||||
capacitorEdit(form.value).then((res: any) => {
|
||||
await capacitorEdit(form.value).then((res: any) => {
|
||||
ElMessage.success('修改成功')
|
||||
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 {
|
||||
assessTransformerParamList,
|
||||
transformerList,
|
||||
characteristicList,
|
||||
assessTransformerParamDelete,
|
||||
capacitorList,
|
||||
capacitorDelete,
|
||||
windPowerList,
|
||||
windPowerDelete
|
||||
windPowerDelete,
|
||||
loadParamList,
|
||||
loadParamDelete,
|
||||
shockList,
|
||||
shockDelete
|
||||
} from '@/api/advance-boot/assess'
|
||||
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||
import { ElMessage, ElMessageBox, ElDatePicker } from 'element-plus'
|
||||
@@ -58,6 +63,7 @@ const dictData = useDictData()
|
||||
//字典获取电压等级
|
||||
const voltageleveloption = dictData.getBasicData('Dev_Voltage_Stand')
|
||||
const transformer: any = ref([])
|
||||
const characteristic: any = ref([])
|
||||
const addformRef = ref()
|
||||
const xTableRef = ref()
|
||||
|
||||
@@ -118,15 +124,15 @@ const column: any = ref([
|
||||
child: [
|
||||
{
|
||||
title: '风机名称',
|
||||
field: 'name'
|
||||
field: 'windgeneratorName'
|
||||
},
|
||||
{
|
||||
title: '风机闪变系数',
|
||||
field: 'name1'
|
||||
title: '闪变系数',
|
||||
field: 'flickerCoeff'
|
||||
},
|
||||
{
|
||||
title: '风机额定视在功率',
|
||||
field: 'name2'
|
||||
title: '额定视在功率(kVA)',
|
||||
field: 's'
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -137,88 +143,82 @@ const column: any = ref([
|
||||
key: 'loadList',
|
||||
child: [
|
||||
{
|
||||
title: '配电窒名称',
|
||||
field: 'name'
|
||||
title: '负荷名称',
|
||||
field: 'loadName'
|
||||
},
|
||||
{
|
||||
title: '进线电压',
|
||||
field: 'name1'
|
||||
field: 'linevoltageScale'
|
||||
},
|
||||
{
|
||||
title: '配变容量(kVA)',
|
||||
field: 'name2'
|
||||
field: 'transhighCapacity'
|
||||
},
|
||||
{
|
||||
title: '配电变压器阻抗(%)',
|
||||
field: 'name3'
|
||||
field: 'transImpedance'
|
||||
},
|
||||
{
|
||||
title: '谐波源特性',
|
||||
field: 'name4'
|
||||
field: 'harmId'
|
||||
},
|
||||
{
|
||||
title: '配变低压侧电压',
|
||||
field: 'name5'
|
||||
field: 'translowScale'
|
||||
},
|
||||
{
|
||||
title: '非线性负荷功率(kW)',
|
||||
field: 'name6'
|
||||
field: 'nonlinearloadPower'
|
||||
},
|
||||
{
|
||||
title: '功率因素',
|
||||
field: 'name7'
|
||||
title: '功率因数',
|
||||
field: 'powerFactor'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
loading: false,
|
||||
name: '冲击性负荷',
|
||||
name: '冲击负荷',
|
||||
|
||||
key: 'impactList',
|
||||
child: [
|
||||
{
|
||||
title: '冲击负荷类型',
|
||||
field: 'name'
|
||||
},
|
||||
{
|
||||
title: '冲击负荷功率(MVA)',
|
||||
field: 'name1'
|
||||
field: 'inpactloadtypeId'
|
||||
},
|
||||
|
||||
{
|
||||
title: '数量',
|
||||
field: 'name2'
|
||||
field: 'inpactloadNum'
|
||||
},
|
||||
{
|
||||
title: '启动方式',
|
||||
field: 'name3'
|
||||
title: '容量',
|
||||
field: 'inpactloadPower'
|
||||
},
|
||||
|
||||
{
|
||||
title: '启动容量倍数',
|
||||
field: 'name4'
|
||||
},
|
||||
{
|
||||
title: '冲击负荷高压侧电压',
|
||||
field: 'name5'
|
||||
},
|
||||
{
|
||||
title: '有无隔离变',
|
||||
field: 'name6'
|
||||
title: '是否隔离变',
|
||||
field: 'isIsolationtrans'
|
||||
},
|
||||
{
|
||||
title: '隔离变阻抗(%)',
|
||||
field: 'name7'
|
||||
field: 'isolationtransImpedance'
|
||||
},
|
||||
{
|
||||
title: '高压侧电压',
|
||||
field: 'inpactloadhighScale'
|
||||
},
|
||||
{
|
||||
title: '低压侧电压',
|
||||
field: 'name8'
|
||||
field: 'inpactloadlowScale'
|
||||
},
|
||||
{
|
||||
title: '负荷频度选择',
|
||||
field: 'name9'
|
||||
title: '负荷频度',
|
||||
field: 'inpactloadFreq'
|
||||
},
|
||||
{
|
||||
title: '闪变叠加系数',
|
||||
field: 'name10'
|
||||
field: 'flickerCoeff'
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -250,34 +250,48 @@ const deleteFform = (item: any, i: any) => {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
}).then(async () => {
|
||||
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 => {
|
||||
ElMessage({
|
||||
type: 'success',
|
||||
message: '删除成功!'
|
||||
})
|
||||
info(i)
|
||||
}
|
||||
)
|
||||
} 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({
|
||||
type: 'success',
|
||||
message: '删除成功!'
|
||||
})
|
||||
info(i)
|
||||
})
|
||||
} 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({
|
||||
type: 'success',
|
||||
message: '删除成功!'
|
||||
})
|
||||
info(i)
|
||||
})
|
||||
}
|
||||
info(i)
|
||||
})
|
||||
}
|
||||
// 编辑
|
||||
@@ -288,18 +302,6 @@ const edit = (item: any, row: any) => {
|
||||
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) => {
|
||||
column.value[i].loading = true
|
||||
@@ -310,30 +312,65 @@ const info = async (i: number) => {
|
||||
dataList.value.transformerList = res.data
|
||||
})
|
||||
} else if (i == 1) {
|
||||
// 电容器参数维护
|
||||
await capacitorList({ assessId: props.assessId }).then(res => {
|
||||
dataList.value.capacitorList = res.data
|
||||
})
|
||||
} else if (i == 2) {
|
||||
// 风电参数
|
||||
await windPowerList({ assessId: props.assessId }).then(res => {
|
||||
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
|
||||
}
|
||||
|
||||
// 过滤数据
|
||||
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 = () => {
|
||||
// 获取变压器参数字典列表
|
||||
transformerList({}).then((res: any) => {
|
||||
transformer.value = res.data
|
||||
})
|
||||
// 谐波源特特性
|
||||
characteristicList({}).then((res: any) => {
|
||||
characteristic.value = res.data
|
||||
})
|
||||
}
|
||||
onMounted(async () => {
|
||||
await dictionary()
|
||||
info(0) // 变压器参数维护
|
||||
info(1) // 变压器参数维护
|
||||
info(2) // 变压器参数维护
|
||||
// info(3) // 变压器参数维护
|
||||
info(1) // 电容器参数维护
|
||||
info(2) // 风电参数
|
||||
info(3) // 用户负荷
|
||||
info(4) // 冲击性负荷
|
||||
})
|
||||
</script>
|
||||
<style lang="scss" scoped></style>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<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="height1" class="mr10 box" style="width: 450px">
|
||||
<div :style="height1" class="mr10 box" style="width: 600px">
|
||||
<vxe-table
|
||||
height="auto"
|
||||
:data="TableData"
|
||||
@@ -12,8 +12,10 @@
|
||||
>
|
||||
<vxe-column type="seq" title="序号" width="60px"></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="timeSum" title="异常时间(分钟)" width="80px"></vxe-column>
|
||||
<vxe-column field="errCount" title="异常次数" width="80px"></vxe-column>
|
||||
</vxe-table>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
<script setup lang="ts">
|
||||
defineOptions({
|
||||
name: 'runManage/alarmCleaning'
|
||||
name: 'runManage/cleaning'
|
||||
})
|
||||
import abnormal from './components/abnormal.vue'
|
||||
// import alarm from './components/alarm.vue'
|
||||
|
||||
@@ -864,22 +864,22 @@ const 九江 = [
|
||||
{ lng:116.828758, lat: 29.963141},
|
||||
{ lng:116.8265, lat: 29.976828},
|
||||
{ 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.787327, 30.02033},
|
||||
{ lng:116.783498, 30.030739},
|
||||
{ lng:116.770293, 30.035644},
|
||||
{ lng:116.764549, 30.048939},
|
||||
{ lng:116.753602, 30.048994},
|
||||
{ lng:116.747368, 30.057221},
|
||||
{ lng:116.720319, 30.053897},
|
||||
{ lng:116.685662, 30.070622},
|
||||
{ lng:116.666861, 30.076723},
|
||||
{ lng:116.64261, 30.076396},
|
||||
{ lng:116.611046, 30.070677},
|
||||
{ lng:116.596564, 30.059727},
|
||||
{ lng:116.586059, 30.046324},
|
||||
{ lng:116.571332, 30.014443},
|
||||
{ lng:116.787327, lat: 30.02033},
|
||||
{ lng:116.783498, lat: 30.030739},
|
||||
{ lng:116.770293, lat: 30.035644},
|
||||
{ lng:116.764549, lat: 30.048939},
|
||||
{ lng:116.753602, lat: 30.048994},
|
||||
{ lng:116.747368, lat: 30.057221},
|
||||
{ lng:116.720319, lat: 30.053897},
|
||||
{ lng:116.685662, lat: 30.070622},
|
||||
{ lng:116.666861, lat: 30.076723},
|
||||
{ lng:116.64261, lat: 30.076396},
|
||||
{ lng:116.611046, lat: 30.070677},
|
||||
{ lng:116.596564, lat: 30.059727},
|
||||
{ lng:116.586059, lat: 30.046324},
|
||||
{ lng:116.571332, lat: 30.014443},
|
||||
{ lng:116.571185, lat: 29.989204},
|
||||
{ lng:116.564558, lat: 29.949343},
|
||||
{ lng:116.558716, lat: 29.924306},
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
<template>
|
||||
<div style='display: flex;flex-direction: column;height: 100%' v-loading='loading'>
|
||||
<el-form :inline='true'>
|
||||
<el-form-item label='日期'>
|
||||
<DatePicker ref='datePickerRef'></DatePicker>
|
||||
<div style="display: flex; flex-direction: column; height: 100%" v-loading="loading">
|
||||
<el-form :inline="true" class="fx-jcsb">
|
||||
<el-form-item label="日期">
|
||||
<DatePicker ref="datePickerRef"></DatePicker>
|
||||
</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>
|
||||
<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.gs }}</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 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.gs }}</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>
|
||||
<div style='flex: 1;' class='mt10'>
|
||||
<my-echart :options='options' />
|
||||
<div style="flex: 1" class="mt10">
|
||||
<my-echart :options="options" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang='ts'>
|
||||
<script setup lang="ts">
|
||||
import { nextTick, onMounted, reactive, ref } from 'vue'
|
||||
import DatePicker from '@/components/form/datePicker/index.vue'
|
||||
import MyEchart from '@/components/echarts/MyEchart.vue'
|
||||
@@ -47,136 +47,123 @@ const init = () => {
|
||||
formData.lineIndex = monitoringPoint.state.lineId
|
||||
formData.startTime = datePickerRef.value.timeValue[0]
|
||||
formData.endTime = datePickerRef.value.timeValue[1]
|
||||
getPlot(formData).then(
|
||||
(res: any) => {
|
||||
const gongData = gongfunction(res.data.voltageToleranceCurveDataList)
|
||||
data.gs = res.data.voltageToleranceCurveDataList.length
|
||||
data.krr = gongData.pointI.length
|
||||
data.bkrr = gongData.pointIun.length
|
||||
console.log(gongData)
|
||||
options.value = {
|
||||
// backgroundColor: "#f9f9f9", //地图背景色深蓝
|
||||
title: {
|
||||
// text: `ITIC曲线(总统计:${gongData.pointI.length + gongData.pointIun.length}个,可容忍:${gongData.pointI.length}个,不可容忍:${gongData.pointIun.length}个)`
|
||||
text: `ITIC曲线`
|
||||
},
|
||||
legend: {
|
||||
data: ['上限', '下限', '可容忍事件', '不可容忍事件'],
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
show: true,
|
||||
axisPointer: {
|
||||
type: 'shadow',
|
||||
label: {
|
||||
color: '#fff',
|
||||
fontSize: 16
|
||||
}
|
||||
},
|
||||
textStyle: {
|
||||
getPlot(formData).then((res: any) => {
|
||||
const gongData = gongfunction(res.data.voltageToleranceCurveDataList)
|
||||
data.gs = res.data.voltageToleranceCurveDataList.length
|
||||
data.krr = gongData.pointI.length
|
||||
data.bkrr = gongData.pointIun.length
|
||||
console.log(gongData)
|
||||
options.value = {
|
||||
// backgroundColor: "#f9f9f9", //地图背景色深蓝
|
||||
title: {
|
||||
// text: `ITIC曲线(总统计:${gongData.pointI.length + gongData.pointIun.length}个,可容忍:${gongData.pointI.length}个,不可容忍:${gongData.pointIun.length}个)`
|
||||
text: `ITIC曲线`
|
||||
},
|
||||
legend: {
|
||||
data: ['上限', '下限', '可容忍事件', '不可容忍事件']
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
show: true,
|
||||
axisPointer: {
|
||||
type: 'shadow',
|
||||
label: {
|
||||
color: '#fff',
|
||||
fontStyle: 'normal',
|
||||
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
|
||||
fontSize: 16
|
||||
}
|
||||
},
|
||||
xAxis: [
|
||||
{
|
||||
type: 'log',
|
||||
min: 0.001,
|
||||
max: 1000,
|
||||
splitLine: {
|
||||
show: false
|
||||
},
|
||||
name: 's'
|
||||
}
|
||||
],
|
||||
yAxis: [
|
||||
{
|
||||
type: 'value',
|
||||
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
|
||||
}
|
||||
]
|
||||
textStyle: {
|
||||
color: '#fff',
|
||||
fontStyle: 'normal',
|
||||
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: [
|
||||
{
|
||||
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) {
|
||||
@@ -341,6 +328,5 @@ function gongfunction(arr: any) {
|
||||
onMounted(() => {
|
||||
init()
|
||||
})
|
||||
|
||||
</script>
|
||||
<style></style>
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
<template>
|
||||
<div style='display: flex;flex-direction: column;height: 100%'>
|
||||
<el-form :inline='true'>
|
||||
<el-form-item label='日期'>
|
||||
<DatePicker ref='datePickerRef'></DatePicker>
|
||||
<div style="display: flex; flex-direction: column; height: 100%">
|
||||
<el-form :inline="true" class="fx-jcsb">
|
||||
<el-form-item label="日期">
|
||||
<DatePicker ref="datePickerRef"></DatePicker>
|
||||
</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>
|
||||
<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.gs }}</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 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.gs }}</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>
|
||||
<div style='flex: 1;' class='mt10'>
|
||||
<my-echart :options='options' />
|
||||
<div style="flex: 1" class="mt10">
|
||||
<my-echart :options="options" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang='ts'>
|
||||
<script setup lang="ts">
|
||||
import { nextTick, onMounted, reactive, ref } from 'vue'
|
||||
import DatePicker from '@/components/form/datePicker/index.vue'
|
||||
import MyEchart from '@/components/echarts/MyEchart.vue'
|
||||
@@ -47,122 +47,109 @@ const init = () => {
|
||||
formData.lineIndex = monitoringPoint.state.lineId
|
||||
formData.startTime = datePickerRef.value.timeValue[0]
|
||||
formData.endTime = datePickerRef.value.timeValue[1]
|
||||
getPlot(formData).then(
|
||||
(res: any) => {
|
||||
const gongData = gongfunction(res.data.voltageToleranceCurveDataList)
|
||||
data.gs = res.data.voltageToleranceCurveDataList.length
|
||||
data.krr = gongData.pointI.length
|
||||
data.bkrr = gongData.pointIun.length
|
||||
console.log(gongData)
|
||||
options.value = {
|
||||
// backgroundColor: "#f9f9f9", //地图背景色深蓝
|
||||
title: {
|
||||
text: `SEMI F47曲线`
|
||||
},
|
||||
legend: {
|
||||
data: ['上限', '下限', '可容忍事件', '不可容忍事件'],
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
show: true,
|
||||
axisPointer: {
|
||||
type: 'shadow',
|
||||
label: {
|
||||
color: '#fff',
|
||||
fontSize: 16
|
||||
}
|
||||
},
|
||||
textStyle: {
|
||||
getPlot(formData).then((res: any) => {
|
||||
const gongData = gongfunction(res.data.voltageToleranceCurveDataList)
|
||||
data.gs = res.data.voltageToleranceCurveDataList.length
|
||||
data.krr = gongData.pointI.length
|
||||
data.bkrr = gongData.pointIun.length
|
||||
console.log(gongData)
|
||||
options.value = {
|
||||
// backgroundColor: "#f9f9f9", //地图背景色深蓝
|
||||
title: {
|
||||
text: `SEMI F47曲线`
|
||||
},
|
||||
legend: {
|
||||
data: ['上限', '下限', '可容忍事件', '不可容忍事件']
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
show: true,
|
||||
axisPointer: {
|
||||
type: 'shadow',
|
||||
label: {
|
||||
color: '#fff',
|
||||
fontStyle: 'normal',
|
||||
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
|
||||
fontSize: 16
|
||||
}
|
||||
},
|
||||
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: '%'
|
||||
}
|
||||
],
|
||||
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
|
||||
}
|
||||
]
|
||||
textStyle: {
|
||||
color: '#fff',
|
||||
fontStyle: 'normal',
|
||||
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: [
|
||||
{
|
||||
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) {
|
||||
@@ -327,6 +314,5 @@ function gongfunction(arr: any) {
|
||||
onMounted(() => {
|
||||
init()
|
||||
})
|
||||
|
||||
</script>
|
||||
<style></style>
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
<template>
|
||||
<div style='display: flex;flex-direction: column;height: 100%'>
|
||||
<el-form :inline='true'>
|
||||
<el-form-item label='日期'>
|
||||
<DatePicker ref='datePickerRef'></DatePicker>
|
||||
<div style="display: flex; flex-direction: column; height: 100%">
|
||||
<el-form :inline="true" class="fx-jcsb">
|
||||
<el-form-item label="日期">
|
||||
<DatePicker ref="datePickerRef"></DatePicker>
|
||||
</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>
|
||||
<div style='flex: 1;' class='mt10'>
|
||||
<my-echart :options='options' />
|
||||
<div style="flex: 1" class="mt10">
|
||||
<my-echart :options="options" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang='ts'>
|
||||
<script setup lang="ts">
|
||||
import { nextTick, onMounted, reactive, ref } from 'vue'
|
||||
import DatePicker from '@/components/form/datePicker/index.vue'
|
||||
import MyEchart from '@/components/echarts/MyEchart.vue'
|
||||
@@ -35,138 +35,137 @@ const init = () => {
|
||||
formData.lineIndex = monitoringPoint.state.lineId
|
||||
formData.startTime = datePickerRef.value.timeValue[0]
|
||||
formData.endTime = datePickerRef.value.timeValue[1]
|
||||
getProbabilityDistribution(formData).then(
|
||||
(res: any) => {
|
||||
let data = res.data
|
||||
let sisttime = data.sisttime
|
||||
let persisttime = data.persisttime
|
||||
options.value = {
|
||||
backgroundColor: '#fff', //背景色,
|
||||
title: {
|
||||
text: '持续时间的概率分布函数',
|
||||
x: 'center'
|
||||
},
|
||||
legend: {
|
||||
show: true,
|
||||
data: ['概率分布', '占比'],
|
||||
getProbabilityDistribution(formData).then((res: any) => {
|
||||
let data = res.data
|
||||
let sisttime = data.sisttime
|
||||
let persisttime = data.persisttime
|
||||
options.value = {
|
||||
backgroundColor: '#fff', //背景色,
|
||||
title: {
|
||||
text: '持续时间的概率分布函数',
|
||||
x: 'center'
|
||||
},
|
||||
legend: {
|
||||
top: 0,
|
||||
show: true,
|
||||
data: ['概率分布', '占比'],
|
||||
|
||||
textStyle: {
|
||||
rich: {
|
||||
a: {
|
||||
verticalAlign: 'middle'
|
||||
}
|
||||
},
|
||||
|
||||
padding: [2, 0, 0, 0] //[上、右、下、左]
|
||||
}
|
||||
},
|
||||
|
||||
tooltip: {
|
||||
//提示框组件
|
||||
trigger: 'axis',
|
||||
|
||||
axisPointer: {
|
||||
type: 'shadow',
|
||||
label: {
|
||||
color: '#fff',
|
||||
fontSize: 16
|
||||
textStyle: {
|
||||
rich: {
|
||||
a: {
|
||||
verticalAlign: 'middle'
|
||||
}
|
||||
},
|
||||
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
|
||||
padding: [2, 0, 0, 0] //[上、右、下、左]
|
||||
}
|
||||
}
|
||||
nextTick(() => {
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
)
|
||||
}
|
||||
},
|
||||
toolbox: {
|
||||
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(() => {
|
||||
init()
|
||||
})
|
||||
|
||||
</script>
|
||||
<style></style>
|
||||
|
||||
@@ -1,73 +1,73 @@
|
||||
<template>
|
||||
<div v-loading='loading' class='dianyazanjiangbaojimidu'>
|
||||
<el-form :inline='true'>
|
||||
<el-form-item label='日期'>
|
||||
<DatePicker ref='datePickerRef'></DatePicker>
|
||||
<div v-loading="loading" class="dianyazanjiangbaojimidu">
|
||||
<el-form :inline="true" class="fx-jcsb">
|
||||
<el-form-item label="日期">
|
||||
<DatePicker ref="datePickerRef"></DatePicker>
|
||||
</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>
|
||||
<div class='mt10 dianyazanjiang'>
|
||||
<div class='first'>
|
||||
<div class='mb10'>DISDIP表格(国际发配电联盟UNIPEDE)</div>
|
||||
<div style='flex: 1;overflow: hidden'>
|
||||
<vxe-table v-bind='defaultAttribute' height='100%' size='mini' :data='firstData'>
|
||||
<vxe-colgroup title='剩余电压' field='name' width='80px'></vxe-colgroup>
|
||||
<vxe-colgroup title='持续事件'>
|
||||
<vxe-column field='twentyMs' title='20ms'></vxe-column>
|
||||
<vxe-column field='oneHundredMs' title='100ms'></vxe-column>
|
||||
<vxe-column field='fiveHundredMs' title='500ms'></vxe-column>
|
||||
<vxe-column field='oneS' title='1s'></vxe-column>
|
||||
<vxe-column field='threeS' title='2s'></vxe-column>
|
||||
<vxe-column field='twentyS' title='20s'></vxe-column>
|
||||
<vxe-column field='sixtyS' title='60s'></vxe-column>
|
||||
<vxe-column field='oneEightyS' title='180s'></vxe-column>
|
||||
<div class="mt10 dianyazanjiang">
|
||||
<div class="first">
|
||||
<div class="mb10">DISDIP表格(国际发配电联盟UNIPEDE)</div>
|
||||
<div style="flex: 1; overflow: hidden">
|
||||
<vxe-table v-bind="defaultAttribute" height="100%" size="mini" :data="firstData">
|
||||
<vxe-colgroup title="剩余电压" field="name" width="80px"></vxe-colgroup>
|
||||
<vxe-colgroup title="持续时间">
|
||||
<vxe-column field="twentyMs" title="20ms" :formatter="formatter" />
|
||||
<vxe-column field="oneHundredMs" title="100ms" :formatter="formatter" />
|
||||
<vxe-column field="fiveHundredMs" title="500ms" :formatter="formatter" />
|
||||
<vxe-column field="oneS" title="1s" :formatter="formatter" />
|
||||
<vxe-column field="threeS" title="2s" :formatter="formatter" />
|
||||
<vxe-column field="twentyS" title="20s" :formatter="formatter" />
|
||||
<vxe-column field="sixtyS" title="60s" :formatter="formatter" />
|
||||
<vxe-column field="oneEightyS" title="180s" :formatter="formatter" />
|
||||
</vxe-colgroup>
|
||||
</vxe-table>
|
||||
</div>
|
||||
</div>
|
||||
<div class='second'>
|
||||
<div class='mb10'>EC61000-4-11(用电终端的电压暂降抗度)</div>
|
||||
<div style='flex: 1;overflow: hidden'>
|
||||
<vxe-table v-bind='defaultAttribute' height='100%' size='mini' :data='secondData'>
|
||||
<vxe-colgroup title='剩余电压' field='name' width='80px'></vxe-colgroup>
|
||||
<vxe-colgroup title='持续事件'>
|
||||
<vxe-column field='tenTwentyMs' title='10-20ms'></vxe-column>
|
||||
<vxe-column field='twentyOneHundredMs' title='20-100ms'></vxe-column>
|
||||
<vxe-column field='zeroPiontOneTwoS' title='0.1-0.2s'></vxe-column>
|
||||
<vxe-column field='zeroPiontFive1S' title='0.2-0.5s'></vxe-column>
|
||||
<vxe-column field='zeroPiontTwoFiveS' title='0.5-1s'></vxe-column>
|
||||
<vxe-column field='role' title='>1s'></vxe-column>
|
||||
<div class="second">
|
||||
<div class="mb10">EC61000-4-11(用电终端的电压暂降抗度)</div>
|
||||
<div style="flex: 1; overflow: hidden">
|
||||
<vxe-table v-bind="defaultAttribute" height="100%" size="mini" :data="secondData">
|
||||
<vxe-colgroup title="剩余电压" field="name" width="80px"></vxe-colgroup>
|
||||
<vxe-colgroup title="持续时间">
|
||||
<vxe-column field="tenTwentyMs" title="10-20ms" :formatter="formatter" />
|
||||
<vxe-column field="twentyOneHundredMs" title="20-100ms" :formatter="formatter" />
|
||||
<vxe-column field="zeroPiontOneTwoS" title="0.1-0.2s" :formatter="formatter" />
|
||||
<vxe-column field="zeroPiontFive1S" title="0.2-0.5s" :formatter="formatter" />
|
||||
<vxe-column field="zeroPiontTwoFiveS" title="0.5-1s" :formatter="formatter" />
|
||||
<vxe-column field="greater1S" title=">1s" :formatter="formatter" />
|
||||
</vxe-colgroup>
|
||||
</vxe-table>
|
||||
</div>
|
||||
</div>
|
||||
<div class='third'>
|
||||
<div class='mb10'>IEC61000-2-8(公共用电暂降测量统计)</div>
|
||||
<div style='flex: 1;overflow: hidden'>
|
||||
<vxe-table v-bind='defaultAttribute' height='100%' size='mini' :data='thirdData'>
|
||||
<vxe-colgroup title='剩余电压' field='name' width='120px'></vxe-colgroup>
|
||||
<vxe-colgroup title='持续事件'>
|
||||
<vxe-column field='q' title='0.01-0.1s' align='center'></vxe-column>
|
||||
<vxe-column field='w' title='0.1-0.25s' align='center'></vxe-column>
|
||||
<vxe-column field='e' title='0.25-0.5s' align='center'></vxe-column>
|
||||
<vxe-column field='r' title='0.5-1s' align='center'></vxe-column>
|
||||
<vxe-column field='t' title='1-3s' align='center'></vxe-column>
|
||||
<vxe-column field='y' title='3-20s' align='center'></vxe-column>
|
||||
<vxe-column field='u' title='20-60s' align='center'></vxe-column>
|
||||
<vxe-column field='i' title='60-180s' align='center'></vxe-column>
|
||||
<div class="third">
|
||||
<div class="mb10">IEC61000-2-8(公共用电暂降测量统计)</div>
|
||||
<div style="flex: 1; overflow: hidden">
|
||||
<vxe-table v-bind="defaultAttribute" height="100%" size="mini" :data="thirdData">
|
||||
<vxe-colgroup title="剩余电压" field="name" width="120px"></vxe-colgroup>
|
||||
<vxe-colgroup title="持续时间">
|
||||
<vxe-column field="q" title="0.01-0.1s" align="center" :formatter="formatter" />
|
||||
<vxe-column field="w" title="0.1-0.25s" align="center" :formatter="formatter" />
|
||||
<vxe-column field="e" title="0.25-0.5s" align="center" :formatter="formatter" />
|
||||
<vxe-column field="r" title="0.5-1s" align="center" :formatter="formatter" />
|
||||
<vxe-column field="t" title="1-3s" align="center" :formatter="formatter" />
|
||||
<vxe-column field="y" title="3-20s" align="center" :formatter="formatter" />
|
||||
<vxe-column field="u" title="20-60s" align="center" :formatter="formatter" />
|
||||
<vxe-column field="i" title="60-180s" align="center" :formatter="formatter" />
|
||||
</vxe-colgroup>
|
||||
</vxe-table>
|
||||
</div>
|
||||
</div>
|
||||
<div class='charts' id='charts'>
|
||||
<MyEchart :options='options' />
|
||||
<div class="charts" id="charts">
|
||||
<MyEchart :options="options" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang='ts'>
|
||||
<script setup lang="ts">
|
||||
import { nextTick, onMounted, reactive, ref } from 'vue'
|
||||
import DatePicker from '@/components/form/datePicker/index.vue'
|
||||
import MyEchart from '@/components/echarts/MyEchart.vue'
|
||||
@@ -88,7 +88,9 @@ const firstData = ref([])
|
||||
const secondData = ref([])
|
||||
const thirdData = ref([])
|
||||
const chartsData = ref([])
|
||||
|
||||
const formatter = (row: any) => {
|
||||
return row.cellValue == 0 ? '/' : row.cellValue
|
||||
}
|
||||
const init = () => {
|
||||
formData.lineIndex = monitoringPoint.state.lineId
|
||||
formData.startTime = datePickerRef.value.timeValue[0]
|
||||
@@ -209,7 +211,7 @@ const init = () => {
|
||||
series: [
|
||||
{
|
||||
type: 'bar3D',
|
||||
data: chartsData.value.map(function(item: any) {
|
||||
data: chartsData.value.map(function (item: any) {
|
||||
return {
|
||||
value: [item['x'], item['y'], item['z']]
|
||||
}
|
||||
@@ -248,7 +250,7 @@ onMounted(() => {
|
||||
init()
|
||||
})
|
||||
</script>
|
||||
<style lang='scss'>
|
||||
<style lang="scss">
|
||||
.dianyazanjiangbaojimidu {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@@ -261,10 +263,10 @@ onMounted(() => {
|
||||
min-height: 800px;
|
||||
display: grid;
|
||||
grid-template-areas:
|
||||
'first charts'
|
||||
'second charts'
|
||||
'third third '
|
||||
'third third ';
|
||||
'first charts'
|
||||
'second charts'
|
||||
'third third '
|
||||
'third third ';
|
||||
grid-template-rows: 1fr 1fr 1fr 1fr;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
grid-gap: 10px;
|
||||
@@ -274,6 +276,7 @@ onMounted(() => {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
height: 280px;
|
||||
}
|
||||
|
||||
.second {
|
||||
@@ -281,6 +284,7 @@ onMounted(() => {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
height: 210px;
|
||||
}
|
||||
|
||||
.third {
|
||||
@@ -288,6 +292,7 @@ onMounted(() => {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
height: 720px;
|
||||
}
|
||||
|
||||
.charts {
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<template>
|
||||
<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='日期'>
|
||||
<DatePicker ref='datePickerRef'></DatePicker>
|
||||
</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>
|
||||
<div style='flex: 1;' class='mt10 zanjiangfenbutongji'>
|
||||
@@ -111,7 +111,7 @@ const initFirst = () => {
|
||||
formatter: function (params: any) {
|
||||
let tips = ''
|
||||
tips += '<font>时间:' + params[0].name + '</font><br/>'
|
||||
tips += '<font>暂降次数:' + params[0].data + '</font>'
|
||||
tips += '<font>暂降次数:' + params[0].data + '</font>'
|
||||
return tips
|
||||
}
|
||||
},
|
||||
@@ -147,12 +147,12 @@ const initFirst = () => {
|
||||
return color[0]
|
||||
}
|
||||
},
|
||||
label: {
|
||||
show: true,
|
||||
textStyle: {
|
||||
label: { show: true, position: 'top' }
|
||||
}
|
||||
}
|
||||
// label: {
|
||||
// show: true,
|
||||
// textStyle: {
|
||||
// label: { show: true, position: 'top' }
|
||||
// }
|
||||
// }
|
||||
}
|
||||
},
|
||||
data: handle
|
||||
@@ -194,7 +194,7 @@ const initSecond = () => {
|
||||
fontSize: 14
|
||||
},
|
||||
backgroundColor: 'rgba(0,0,0,0.55)',
|
||||
formatter: '{a} <br/>{b} : {c} ({d}%)'
|
||||
formatter: '{a} <br/>{b} : {c} ({d}%)'
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
@@ -204,14 +204,14 @@ const initSecond = () => {
|
||||
{
|
||||
name: '暂降原因',
|
||||
type: 'pie',
|
||||
radius: '70%',
|
||||
radius: '65%',
|
||||
center: ['50%', '53%'],
|
||||
label: {
|
||||
normal: {
|
||||
show: false
|
||||
},
|
||||
emphasis: {
|
||||
show: true
|
||||
show: false
|
||||
}
|
||||
},
|
||||
lableLine: {
|
||||
@@ -219,7 +219,7 @@ const initSecond = () => {
|
||||
show: false
|
||||
},
|
||||
emphasis: {
|
||||
show: true
|
||||
show: false
|
||||
}
|
||||
},
|
||||
data: valueArray,
|
||||
@@ -269,7 +269,7 @@ const initThird = () => {
|
||||
fontSize: 14
|
||||
},
|
||||
backgroundColor: 'rgba(0,0,0,0.55)',
|
||||
formatter: '{a} <br/>{b} : {c} ({d}%)'
|
||||
formatter: '{a} <br/>{b} : {c} ({d}%)'
|
||||
},
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
@@ -279,14 +279,14 @@ const initThird = () => {
|
||||
{
|
||||
name: '暂降类型',
|
||||
type: 'pie',
|
||||
radius: '70%',
|
||||
radius: '65%',
|
||||
center: ['50%', '60%'],
|
||||
label: {
|
||||
normal: {
|
||||
show: false
|
||||
},
|
||||
emphasis: {
|
||||
show: true
|
||||
show: false
|
||||
}
|
||||
},
|
||||
lableLine: {
|
||||
@@ -294,7 +294,7 @@ const initThird = () => {
|
||||
show: false
|
||||
},
|
||||
emphasis: {
|
||||
show: true
|
||||
show: false
|
||||
}
|
||||
},
|
||||
data: valueArray,
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
<template>
|
||||
<div style='display: flex;flex-direction: column;height: 100%'>
|
||||
<el-form :inline='true'>
|
||||
<el-form-item label='日期'>
|
||||
<DatePicker ref='datePickerRef'></DatePicker>
|
||||
<div style="display: flex; flex-direction: column; height: 100%">
|
||||
<el-form :inline="true" class="fx-jcsb">
|
||||
<el-form-item label="日期">
|
||||
<DatePicker ref="datePickerRef"></DatePicker>
|
||||
</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>
|
||||
<div style='flex: 1;' class='mt10'>
|
||||
<my-echart :options='options' />
|
||||
<div style="flex: 1" class="mt10">
|
||||
<my-echart :options="options" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang='ts'>
|
||||
<script setup lang="ts">
|
||||
import { nextTick, onMounted, reactive, ref } from 'vue'
|
||||
import DatePicker from '@/components/form/datePicker/index.vue'
|
||||
import MyEchart from '@/components/echarts/MyEchart.vue'
|
||||
@@ -35,150 +35,138 @@ const init = () => {
|
||||
formData.lineIndex = monitoringPoint.state.lineId
|
||||
formData.startTime = datePickerRef.value.timeValue[0]
|
||||
formData.endTime = datePickerRef.value.timeValue[1]
|
||||
getProbabilityDistribution(formData).then(
|
||||
(res: any) => {
|
||||
let data = res.data
|
||||
let eventValue = data.eventvalue
|
||||
let pereventValue = data.pereventvalue
|
||||
options.value = {
|
||||
backgroundColor: '#fff', //背景色,
|
||||
title: {
|
||||
text: '暂降幅值的概率分布函数',
|
||||
x: 'center'
|
||||
},
|
||||
legend: {
|
||||
show: true,
|
||||
data: ['概率分布', '占比'],
|
||||
getProbabilityDistribution(formData).then((res: any) => {
|
||||
let data = res.data
|
||||
let eventValue = data.eventvalue
|
||||
let pereventValue = data.pereventvalue
|
||||
options.value = {
|
||||
backgroundColor: '#fff', //背景色,
|
||||
title: {
|
||||
text: '暂降幅值的概率分布函数',
|
||||
x: 'center'
|
||||
},
|
||||
legend: {
|
||||
show: true,
|
||||
top: 0,
|
||||
data: ['概率分布', '占比'],
|
||||
|
||||
textStyle: {
|
||||
rich: {
|
||||
a: {
|
||||
verticalAlign: 'middle'
|
||||
}
|
||||
},
|
||||
|
||||
padding: [2, 0, 0, 0] //[上、右、下、左]
|
||||
}
|
||||
},
|
||||
|
||||
tooltip: {
|
||||
//提示框组件
|
||||
trigger: 'axis',
|
||||
|
||||
axisPointer: {
|
||||
type: 'shadow',
|
||||
label: {
|
||||
color: '#fff',
|
||||
fontSize: 16
|
||||
textStyle: {
|
||||
rich: {
|
||||
a: {
|
||||
verticalAlign: 'middle'
|
||||
}
|
||||
},
|
||||
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
|
||||
padding: [2, 0, 0, 0] //[上、右、下、左]
|
||||
}
|
||||
}
|
||||
nextTick(() => {
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
)
|
||||
}
|
||||
},
|
||||
toolbox: {
|
||||
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(() => {
|
||||
init()
|
||||
})
|
||||
|
||||
</script>
|
||||
<style></style>
|
||||
|
||||
@@ -76,17 +76,22 @@
|
||||
@click="markerClick(path)"
|
||||
></bm-marker>
|
||||
</BmlMarkerClusterer>
|
||||
<bm-marker :position="infoWindowPoint" :icon="{ url: '1', size: { width: 0, height: 0 } }" >
|
||||
<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">
|
||||
<bm-marker :position="infoWindowPoint" :icon="{ url: '1', size: { width: 0, height: 0 } }">
|
||||
<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-item label="供电公司">{{ infoWindowPoint.gdName }}</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.ip }}
|
||||
</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="PT变比">{{ infoWindowPoint.pt2 }}</el-descriptions-item>
|
||||
<el-descriptions-item label="CT变比">{{ infoWindowPoint.ct2 }}</el-descriptions-item>
|
||||
<el-descriptions-item label="生产厂家">
|
||||
{{ infoWindowPoint.manufacturer }}
|
||||
</el-descriptions-item>
|
||||
@@ -232,7 +237,7 @@ const handler = async ({ BMap, map }: any) => {
|
||||
siteList.value = list
|
||||
|
||||
center.value.lng = list[0]?.lng || 0
|
||||
center.value.lat = list[0]?.lat || 0
|
||||
center.value.lat = list[0]?.lat + 0.01 || 0
|
||||
watch(
|
||||
() => monitoringPoint.state.lineId,
|
||||
(newLineId, oldLineId) => {
|
||||
@@ -240,7 +245,7 @@ const handler = async ({ BMap, map }: any) => {
|
||||
if (value == undefined) return
|
||||
|
||||
center.value.lng = value.lng
|
||||
center.value.lat = value.lat
|
||||
center.value.lat = value.lat + 0.01
|
||||
infoWindowPoint.value = value
|
||||
infoWindowPoint.value.show = true
|
||||
monitoringPoint.setValue(
|
||||
@@ -270,10 +275,10 @@ onMounted(() => {
|
||||
if (siteList.value.length == 0) {
|
||||
setTimeout(() => {
|
||||
hackReset.value = false
|
||||
}, 1000)
|
||||
}, 500)
|
||||
setTimeout(() => {
|
||||
hackReset.value = true
|
||||
}, 2000)
|
||||
}, 1000)
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
@@ -1,31 +1,38 @@
|
||||
<template>
|
||||
<div v-loading='loading' class='running-condition'>
|
||||
<el-form :inline='true'>
|
||||
<el-form-item label='日期'>
|
||||
<DatePicker ref='datePickerRef'></DatePicker>
|
||||
<div v-loading="loading" class="running-condition">
|
||||
<el-form :inline="true" class="fx-jcsb">
|
||||
<el-form-item label="日期">
|
||||
<DatePicker ref="datePickerRef"></DatePicker>
|
||||
</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>
|
||||
<div style='flex: 1;' class='mt10 zanjiangfenbutongji'>
|
||||
<div style="flex: 1" class="mt10 zanjiangfenbutongji">
|
||||
<div
|
||||
style='position: absolute; right: 10px; top: 10px; z-index: 2;display: flex;align-items: center;font-size: 12px'>
|
||||
<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>
|
||||
style="
|
||||
position: absolute;
|
||||
right: 55px;
|
||||
top: 25px;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 12px;
|
||||
"
|
||||
>
|
||||
<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>
|
||||
<my-echart :options='secondOptions' style='flex: 1;height: 100%' />
|
||||
<my-echart :options='firstOptions' style='flex: 1;height: 100%' />
|
||||
<my-echart :options="secondOptions" style="flex: 1; height: 100%" />
|
||||
<my-echart :options="firstOptions" style="flex: 1; height: 100%" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang='ts'>
|
||||
<script setup lang="ts">
|
||||
import { nextTick, onMounted, reactive, ref, watch } from 'vue'
|
||||
import DatePicker from '@/components/form/datePicker/index.vue'
|
||||
import MyEchart from '@/components/echarts/MyEchart.vue'
|
||||
@@ -210,19 +217,8 @@ const initFirst = () => {
|
||||
}
|
||||
}
|
||||
const initSecond = () => {
|
||||
let list = secondData.value.type
|
||||
let items = secondData.value.updateTime
|
||||
let list = secondData.value.type.map((item, i) => [secondData.value.updateTime[i], item])
|
||||
|
||||
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 = {
|
||||
tooltip: {
|
||||
trigger: 'axis',
|
||||
@@ -241,37 +237,30 @@ const initSecond = () => {
|
||||
},
|
||||
backgroundColor: 'rgba(0,0,0,0.55)',
|
||||
formatter: function (params: any) {
|
||||
let res = '时间: ' + params[0].name + '<br/>运行状态:'
|
||||
let texts = ''
|
||||
if (params[0].value === 2 || params[0].value === '2') {
|
||||
texts = '退出'
|
||||
} 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
|
||||
console.log('🚀 ~ initSecond ~ params:', params)
|
||||
let res = ''
|
||||
res += `${params[0].value[0]}:${params[0].value[1] == '0' ? '中断' : '正常'}` //params[0].value[0] + ':' //+ params[0].value[1] == '0' ? '中断' : '正常'
|
||||
console.log('🚀 ~ initSecond ~ res:', res)
|
||||
|
||||
return res
|
||||
}
|
||||
},
|
||||
dataZoom: [
|
||||
{
|
||||
type: 'inside',
|
||||
height: 13,
|
||||
start: 0,
|
||||
end: 100,
|
||||
bottom: '25px'
|
||||
},
|
||||
|
||||
{ height: 13, start: 0, bottom: '25px', end: 100 }
|
||||
],
|
||||
|
||||
xAxis: {
|
||||
// name: '时间',
|
||||
// type: 'category',
|
||||
// data: items,
|
||||
// boundaryGap: false
|
||||
type: 'time',
|
||||
name: '时间',
|
||||
type: 'category',
|
||||
data: items,
|
||||
boundaryGap: false
|
||||
|
||||
//
|
||||
axisLabel: {
|
||||
formatter: {
|
||||
day: '{MM}-{dd}',
|
||||
month: '{MM}',
|
||||
year: '{yyyy}'
|
||||
}
|
||||
}
|
||||
},
|
||||
yAxis: {
|
||||
name: '状态',
|
||||
@@ -311,9 +300,8 @@ const initSecond = () => {
|
||||
onMounted(() => {
|
||||
init()
|
||||
})
|
||||
|
||||
</script>
|
||||
<style lang='scss'>
|
||||
<style lang="scss">
|
||||
.running-condition {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
<div class="selectBox">
|
||||
<el-select
|
||||
@change="pointChange"
|
||||
:popper-append-to-body="false"
|
||||
|
||||
filterable
|
||||
clearable
|
||||
v-model="lineId"
|
||||
@@ -101,13 +101,15 @@
|
||||
<bm-info-window :show="infoWindowPoint.show" @close="infoWindowPoint.show = false">
|
||||
<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.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.ip }}
|
||||
</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="PT变比">{{ infoWindowPoint.pt2 }}</el-descriptions-item>
|
||||
<el-descriptions-item label="CT变比">{{ infoWindowPoint.ct2 }}</el-descriptions-item>
|
||||
<el-descriptions-item label="生产厂家">
|
||||
{{ infoWindowPoint.manufacturer }}
|
||||
</el-descriptions-item>
|
||||
@@ -273,7 +275,7 @@ const handler = async ({ BMap, map }: any) => {
|
||||
}, 0)
|
||||
siteList.value = list
|
||||
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.show = true
|
||||
@@ -291,7 +293,7 @@ const pointChange = (val: string) => {
|
||||
let data = areaLineInfo.value.find((item: any) => item.lineId == val)
|
||||
|
||||
center.value.lng = data.lng
|
||||
center.value.lat = data.lat
|
||||
center.value.lat = data.lat + 0.04
|
||||
infoWindowPoint.value = data
|
||||
infoWindowPoint.value.show = true
|
||||
zoom.value = 13
|
||||
@@ -330,10 +332,10 @@ onMounted(() => {
|
||||
if (window.localStorage.getItem('BMAP_SECKEY') == null) {
|
||||
hackReset.value = false
|
||||
}
|
||||
}, 1000)
|
||||
}, 500)
|
||||
setTimeout(() => {
|
||||
hackReset.value = true
|
||||
}, 2000)
|
||||
}, 1000)
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
@@ -1,18 +1,25 @@
|
||||
<template>
|
||||
<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">
|
||||
<vxe-column type="seq" title="序号" width="80px"></vxe-column>
|
||||
<vxe-column field="startTime" title="发生时间" width="200"></vxe-column>
|
||||
<vxe-column field="duration" title="持续时间(s)" width="120"></vxe-column>
|
||||
<vxe-column field="featureAmplitude" title="暂降(骤升)幅值(%)" width="150">
|
||||
<template #default="{ row }">
|
||||
{{ (row.featureAmplitude * 100).toFixed(2) }}
|
||||
</template>
|
||||
</vxe-column>
|
||||
<vxe-column field="gdName" title="供电公司" width="200"></vxe-column>
|
||||
<vxe-column field="subName" title="变电站" min-width="200"></vxe-column>
|
||||
<vxe-column field="lineName" title="监测点" width="200"></vxe-column>
|
||||
</vxe-table>
|
||||
<div style="height: 40vh">
|
||||
<vxe-table v-loading="loading" height="auto" auto-resize :data="tableData" v-bind="defaultAttribute">
|
||||
<vxe-column type="seq" title="序号" width="80px"></vxe-column>
|
||||
<vxe-column field="startTime" title="发生时间" width="180"></vxe-column>
|
||||
<vxe-column field="duration" title="持续时间(s)" width="100"></vxe-column>
|
||||
<vxe-column field="gdName" title="供电公司" min-width="150"></vxe-column>
|
||||
<vxe-column field="subName" title="变电站" min-width="150"></vxe-column>
|
||||
<vxe-column field="lineName" title="监测点" min-width="150"></vxe-column>
|
||||
<vxe-column field="advanceType" title="暂降类型" width="100">
|
||||
<template #default="{ row }">
|
||||
{{ type.find(item => item.id === row.advanceType)?.name }}
|
||||
</template>
|
||||
</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>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
@@ -20,7 +27,9 @@ import { ref, inject } from 'vue'
|
||||
|
||||
import { defaultAttribute } from '@/components/table/defaultAttribute'
|
||||
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 tableData = ref([])
|
||||
const loading = ref(true)
|
||||
|
||||
@@ -23,10 +23,10 @@
|
||||
<div style="flex: 1; overflow: hidden">
|
||||
<vxe-table height="auto" auto-resize :data="tableData" v-bind="defaultAttribute">
|
||||
<vxe-column type="seq" title="序号" width="70px"></vxe-column>
|
||||
<vxe-column field="startTime" title="发生时刻"></vxe-column>
|
||||
<vxe-column field="lineName" title="监测点"></vxe-column>
|
||||
<vxe-column field="featureAmplitude" title="暂降(骤升)幅值(%)" width="150"></vxe-column>
|
||||
<vxe-column field="duration" title="持续时间(s)" width="120"></vxe-column>
|
||||
<vxe-column field="startTime" title="发生时刻" width="200"></vxe-column>
|
||||
<vxe-column field="lineName" title="监测点" width="120"></vxe-column>
|
||||
<vxe-column field="featureAmplitude" title="暂降(骤升)幅值(%)"></vxe-column>
|
||||
<vxe-column field="duration" title="持续时间(s)"></vxe-column>
|
||||
</vxe-table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -18,7 +18,11 @@
|
||||
></el-option>
|
||||
</el-select>
|
||||
</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-input
|
||||
@@ -40,13 +44,14 @@ import TableStore from '@/utils/tableStore'
|
||||
import Table from '@/components/table/index.vue'
|
||||
import TableHeader from '@/components/table/header/index.vue'
|
||||
import { useDictData } from '@/stores/dictData'
|
||||
import { getEventReport } from '@/api/event-boot/report.ts'
|
||||
import { getEventReport } from '@/api/event-boot/report'
|
||||
|
||||
defineOptions({
|
||||
name: 'Operationmanagement/terminalmanagement'
|
||||
})
|
||||
const dictData = useDictData()
|
||||
const triggerType = dictData.getBasicData('Event_Statis')
|
||||
const sign:any = dictData.getBasicData('power_flag')
|
||||
const tableRef = ref()
|
||||
const tableStore = new TableStore({
|
||||
|
||||
@@ -109,7 +114,7 @@ const tableStore = new TableStore({
|
||||
})
|
||||
tableStore.table.params.comFlag = '1'
|
||||
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.waveType=''
|
||||
tableStore.table.params.searchValue=''
|
||||
|
||||
Reference in New Issue
Block a user