This commit is contained in:
guanj
2025-10-10 08:51:57 +08:00
parent d82b26f388
commit c42555867f
3 changed files with 115 additions and 138 deletions

View File

@@ -2,8 +2,8 @@
<!--短信查询--> <!--短信查询-->
<el-dialog :close-on-click-modal="false" draggable v-model="machineVisible" :title="title" width="500"> <el-dialog :close-on-click-modal="false" draggable v-model="machineVisible" :title="title" width="500">
<div> <div>
<div style="height: 360px" class="smsConfig"> <div class="smsConfig">
<el-form :model="form" inline label-width="auto" class="mb10 ml30 mt20"> <el-form :model="form" inline label-width="auto" class=" ml30 mt10">
<el-form-item label="屏幕通知"> <el-form-item label="屏幕通知">
<el-radio-group v-model="form.screenNotic" size="small"> <el-radio-group v-model="form.screenNotic" size="small">
<el-radio-button label="关闭" :value="0" /> <el-radio-button label="关闭" :value="0" />
@@ -39,49 +39,30 @@
</el-checkbox-group> </el-checkbox-group>
</el-form-item> </el-form-item>
<el-form-item label="残余电压告警阈值"> <el-form-item label="残余电压告警阈值">
<el-input-number <el-input-number v-model="form.eventValue" :min="0" :max="0.9" :precision="1" :step="0.1"
v-model="form.eventValue" @change="(e) => (e == null ? (form.eventValue = 0.1) : null)" style="width: 200px" />
:min="0"
:max="0.9"
:precision="1"
:step="0.1"
@change="(e) => (e == null ? (form.eventValue = 0.1) : null)"
style="width: 200px"
/>
</el-form-item> </el-form-item>
<el-form-item label="持续时间告警阈值"> <el-form-item label="持续时间告警阈值">
<el-input-number <el-input-number v-model="form.eventDuration" :min="0" :max="1000000" :precision="1" :step="1"
v-model="form.eventDuration" @change="(e) => (e == null ? (form.eventDuration = 1) : null)" style="width: 200px">
:min="0"
:max="1000000"
:precision="1"
:step="1"
@change="(e) => (e == null ? (form.eventDuration = 1) : null)"
style="width: 200px"
>
<template #suffix> <template #suffix>
<span>ms</span> <span>ms</span>
</template></el-input-number </template></el-input-number>
>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-divider /> <!-- <el-divider />
<div style="text-align: center"> <div style="text-align: center">
<el-button
type="primary" <el-button :icon="Close" @click="setUp" class="mt10" size="small">取消</el-button>
:icon="Tools" <el-button type="primary" :icon="Tools" @click="setUp" class="mt10" size="small">设置</el-button>
@click="setUp" </div> -->
class="mt10"
size="small"
>设置</el-button
>
<el-button :icon="Close" @click="setUp" class="mt10" size="small"
>取消</el-button
>
</div>
</div> </div>
</div> </div>
<template #footer>
<el-button :icon="Close" @click="setUp" size="small">取消</el-button>
<el-button type="primary" :icon="Tools" @click="setUp" size="small">设置</el-button>
</template>
</el-dialog> </el-dialog>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
@@ -143,9 +124,11 @@ defineExpose({ open });
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@use "@/assets/scss/index.scss"; @use "@/assets/scss/index.scss";
.smsConfig { .smsConfig {
color: #fff; color: #fff;
} }
.title { .title {
background-color: #0a73ff40; background-color: #0a73ff40;
height: 30px; height: 30px;
@@ -155,22 +138,28 @@ defineExpose({ open });
margin-bottom: 10px; margin-bottom: 10px;
border-left: 10px solid var(--el-color-primary); border-left: 10px solid var(--el-color-primary);
} }
:deep(.el-card__body) { :deep(.el-card__body) {
padding: 10px !important; padding: 10px !important;
} }
:deep(.el-select) { :deep(.el-select) {
min-width: 80px !important; min-width: 80px !important;
} }
.checkbox { .checkbox {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
} }
:deep(.el-form-item__label, ) { :deep(.el-form-item__label, ) {
color: #fff; color: #fff;
} }
:deep(.el-checkbox__label) { :deep(.el-checkbox__label) {
color: #fff; color: #fff;
} }
:deep(.el-form-item__label, ) { :deep(.el-form-item__label, ) {
color: #fff; color: #fff;
} }

View File

@@ -182,44 +182,44 @@
<!-- 导出 --> <!-- 导出 -->
<el-dialog :close-on-click-modal="false" draggable v-model="exportVisible" title="导出" width="500" <el-dialog :close-on-click-modal="false" draggable v-model="exportVisible" title="导出" width="500"
@close="exportClose"> @close="exportClose">
<div class="mb10 ml20 mt10">
<el-radio-group v-model="exportRadio" size="small"> <el-radio-group v-model="exportRadio" size="small">
<el-radio-button label="默认导出" value="0" /> <el-radio-button label="默认导出" value="0" />
<el-radio-button label="按时间段导出" value="1" /> <el-radio-button label="按时间段导出" value="1" />
<el-radio-button label="按时间点导出" value="2" /> <el-radio-button label="按时间点导出" value="2" />
</el-radio-group> </el-radio-group>
<div class="mt10" v-if="exportRadio == '1'"> <div class="mt10">
<el-form-item label="时间段:" style="width: 400px;"> <el-form label-width="auto">
<el-form-item label="重要敏感用户:" v-if="exportRadio != '0'">
<el-tree-select v-model="treeData" :data="treeList" multiple :render-after-expand="false" show-checkbox size="small"
style="width: 200px" />
</el-form-item>
<el-form-item label="时间段:" v-if="exportRadio == '1'">
<el-date-picker v-model="timePeriod" type="datetimerange" range-separator="至" start-placeholder="开始时间" <el-date-picker v-model="timePeriod" type="datetimerange" range-separator="至" start-placeholder="开始时间"
size="small" end-placeholder="结束时间" :disabled-date="disabledDate" value-format="YYYY-MM-DD HH:mm:ss" /> size="small" end-placeholder="结束时间" :disabled-date="disabledDate" value-format="YYYY-MM-DD HH:mm:ss" />
</el-form-item> </el-form-item>
</div>
<div class="mt10" v-if="exportRadio == '2'">
<el-form label-width="auto"> <el-form-item label="时间点:" v-if="exportRadio == '2'">
<el-form-item label="时间点:">
<el-date-picker v-model="timePoint" type="datetime" placeholder="请选择时间" :disabled-date="disabledDate" <el-date-picker v-model="timePoint" type="datetime" placeholder="请选择时间" :disabled-date="disabledDate"
size="small" style="width: 200px;" value-format="YYYY-MM-DD HH:mm:ss" /> size="small" style="width: 200px;" value-format="YYYY-MM-DD HH:mm:ss" />
</el-form-item> </el-form-item>
<el-form-item label="聚合精度(秒):"> <el-form-item label="聚合精度(秒):" v-if="exportRadio == '2'">
<el-input-number v-model="timeInterval" :min="0" :step="1" size="small" style="width: 200px;" /> <el-input-number v-model="timeInterval" :min="0" :step="1" size="small" style="width: 200px;" />
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
</div>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
<el-button size="small" class="mr10" @click="exportClose">取消</el-button> <el-button size="small" class="mr10" @click="exportClose" :icon="Close">取消</el-button>
<el-button type="primary" size="small" @click="exportRadio == '0' ? exportTable() : exportTable2()" <el-button type="primary" :icon="Check" size="small"
:loading="exportLoading"> @click="exportRadio == '0' ? exportTable() : exportTable2()" :loading="exportLoading">
确定 确定
</el-button> </el-button>
</div> </div>
@@ -233,7 +233,7 @@ import { onMounted, ref, getCurrentInstance, reactive, computed } from "vue";
import { ElMessage } from "element-plus"; import { ElMessage } from "element-plus";
import { useStore } from "vuex"; import { useStore } from "vuex";
import waveForm from "@/components/BX/waveForm.vue"; import waveForm from "@/components/BX/waveForm.vue";
import { DArrowRight, Search, RefreshLeft, Download } from "@element-plus/icons-vue"; import { DArrowRight, Search, RefreshLeft, Download, Close, Check } from "@element-plus/icons-vue";
import { getDateRange } from "@/utils/index"; //引入封装好的 import { getDateRange } from "@/utils/index"; //引入封装好的
import * as XLSX from "xlsx"; import * as XLSX from "xlsx";
const store = useStore(); const store = useStore();
@@ -249,6 +249,8 @@ const dropList = ref([]);
const waveFormRef = ref(); const waveFormRef = ref();
const detailList: any = ref({}); const detailList: any = ref({});
const dataRow: any = ref({}); const dataRow: any = ref({});
const treeData: any = ref([]);
const treeList: any = ref([]);
const trendVisible = ref(false); const trendVisible = ref(false);
const form: any = ref({ const form: any = ref({
eventIndex: "", //id eventIndex: "", //id
@@ -532,13 +534,20 @@ const exportTable2 = async () => {
searchBeginTime: searchBeginTime, searchBeginTime: searchBeginTime,
searchEndTime: searchEndTime, searchEndTime: searchEndTime,
}).then((res) => { }).then((res) => {
if (res.data.length == 0) {
ElMessage({
message: "暂无数据!",
type: "warning",
});
} else {
let data = res.data.map((item) => { let data = res.data.map((item) => {
return [ return [
item.timeid + '.' + item.ms, item.timeid + '.' + item.ms,
item.gdName, item.gdName,
item.bdname, item.bdname,
item.busName, item.busName,
item.busName, item.busVoltageLevel,
Math.floor(item.eventvalue * 10000) / 100 + '%', Math.floor(item.eventvalue * 10000) / 100 + '%',
Math.floor(item.persisttime * 1000) / 1000 + 's', Math.floor(item.persisttime * 1000) / 1000 + 's',
item.objName || "/", item.objName || "/",
@@ -556,6 +565,8 @@ const exportTable2 = async () => {
// 写出文件 // 写出文件
XLSX.writeFile(workbook, '暂降事件列表' + ".xlsx"); XLSX.writeFile(workbook, '暂降事件列表' + ".xlsx");
}
}); });
exportLoading.value = false; exportLoading.value = false;
exportClose() exportClose()

View File

@@ -1,64 +1,32 @@
<!--报表导出--> <!--报表导出-->
<template> <template>
<el-dialog <el-dialog :close-on-click-modal="false" draggable v-model="machineVisible" :title="title" width="500">
:close-on-click-modal="false"
draggable
v-model="machineVisible"
:title="title"
width="500"
>
<div> <div>
<div style="height: 160px" class="smsConfig"> <div class="smsConfig">
<el-form :model="form" inline label-width="auto" class="mb10 ml30 mt20"> <el-form :model="form" inline label-width="auto" class=" ml30 mt10">
<el-form-item label="时间"> <el-form-item label="时间">
<el-date-picker <el-date-picker v-model="timeValue" size="small" type="daterange" :disabled-date="isFutureDate"
v-model="timeValue" style="width: 250px; margin-right: 10px" unlink-panels :clearable="false" range-separator=""
size="small" start-placeholder="开始日期" end-placeholder="结束日期" value-format="YYYY-MM-DD HH:mm:ss" />
type="daterange"
:disabled-date="isFutureDate"
style="width: 250px; margin-right: 10px"
unlink-panels
:clearable="false"
range-separator=""
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="YYYY-MM-DD HH:mm:ss"
/>
</el-form-item> </el-form-item>
<el-form-item label="部门集合"> <el-form-item label="部门集合">
<el-select <el-select v-model="form.deptList" placeholder="请选择部门集合" style="width: 250px" size="small" multiple>
v-model="form.deptList" <el-option v-for="item in deptLists" :key="item.deptsIndex" :label="item.deptsname"
placeholder="请选择" :value="item.deptsIndex" />
style="width: 250px"
size="small"
multiple
>
<el-option
v-for="item in deptLists"
:key="item.deptsIndex"
:label="item.deptsname"
:value="item.deptsIndex"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-divider /> <!-- <el-divider />
<div style="text-align: center"> <div style="text-align: center">
<el-button
type="primary" </div> -->
:icon="Check"
@click="save"
class="mt10"
size="small"
>确定</el-button
>
<el-button :icon="Close" @click="setUp" class="mt10" size="small"
>取消</el-button
>
</div>
</div> </div>
</div> </div>
<template #footer>
<el-button :icon="Close" @click="setUp" size="small">取消</el-button>
<el-button type="primary" :icon="Check" @click="save" size="small">确定</el-button>
</template>
</el-dialog> </el-dialog>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
@@ -101,6 +69,15 @@ const init = () => {
}; };
const save = () => { const save = () => {
if (!timeValue.value[0]) {
ElMessage.warning("请选择时间!");
return;
}
if (form.value.deptList.length == 0) {
ElMessage.warning("请选择部门集合!");
return;
}
(form.value.deptId = store.state.deptId), (form.value.deptId = store.state.deptId),
(form.value.searchBeginTime = timeValue.value[0]), (form.value.searchBeginTime = timeValue.value[0]),
(form.value.searchEndTime = timeValue.value[1] (form.value.searchEndTime = timeValue.value[1]