修改海南测试问题

This commit is contained in:
GGJ
2024-10-30 09:29:39 +08:00
parent 1aa7e4263b
commit 1df2b26b04
32 changed files with 469 additions and 478 deletions

View File

@@ -5,7 +5,7 @@
:options='options' :options='options'
:props='isMultiple?baseMultipleCascader:baseCascader' :props='isMultiple?baseMultipleCascader:baseCascader'
@change='change' @change='change'
clearable
collapse-tags collapse-tags
collapse-tags-tooltip collapse-tags-tooltip
/> />
@@ -14,76 +14,19 @@
<script setup lang='ts'> <script setup lang='ts'>
import { ref } from 'vue' import { ref } from 'vue'
import { useDictData } from '@/stores/dictData'
const dictData = useDictData()
const areaCascader = ref() const areaCascader = ref()
let areaValue = ref() let areaValue = ref()
const change = (e: any) => { const change = (e: any) => {
areaValue = areaCascader.value.getCheckedNodes() areaValue = areaCascader.value.getCheckedNodes()
} }
const options = [ const options = dictData.state.area
{
value: '海口市',
label: '海口市',
children: [
{
value: '秀英区',
label: '秀英区',
children: [
{
value: '秀英区',
label: '秀英区',
children: []
},
{
value: '龙华区',
label: '龙华区',
children: []
},
{
value: '琼山区',
label: '琼山区',
children: []
}
]
},
{
value: '龙华区',
label: '龙华区',
children: []
},
{
value: '琼山区',
label: '琼山区',
children: []
}
]
},
{
value: '三亚市',
label: '三亚市',
children: [
{
value: '海棠区',
label: '海棠区',
children: []
},
{
value: '吉阳区',
label: '吉阳区',
children: []
},
{
value: '天涯区',
label: '天涯区',
children: []
}
]
}
]
// 区域联级下拉框配置,多选 // 区域联级下拉框配置,多选
const baseMultipleCascader = { const baseMultipleCascader = {
label: 'name',
value: 'name',
expandTrigger: 'hover' as const, expandTrigger: 'hover' as const,
multiple: true multiple: true
} }
@@ -91,6 +34,8 @@ const baseMultipleCascader = {
// 区域联级下拉框配置,单选 // 区域联级下拉框配置,单选
const baseCascader = { const baseCascader = {
label: 'name',
value: 'name',
expandTrigger: 'hover' as const expandTrigger: 'hover' as const
} }

View File

@@ -26,7 +26,7 @@ onMounted(() => {
}) })
const toolbarConfig = { const toolbarConfig = {
excludeKeys: ['fullScreen', 'emotion'] excludeKeys: ['fullScreen', 'emotion','insertFormula']
} }
let sever = '/api/system-boot/file/upload' let sever = '/api/system-boot/file/upload'
// 本地加api // 本地加api
@@ -56,7 +56,12 @@ const editorConfig = {
insertFn(res.data.url.split('?')[0], 'image', res.data.url.split('?')[0]) insertFn(res.data.url.split('?')[0], 'image', res.data.url.split('?')[0])
} }
} }
} },
hoverbarKeys: {
formula: {
menuKeys: ['editFormula'], // “编辑公式”菜单
},
},
} }
// 组件销毁时,也及时销毁编辑器 // 组件销毁时,也及时销毁编辑器

View File

@@ -212,3 +212,4 @@
.el-drawer__header { .el-drawer__header {
margin-bottom: 0 !important; margin-bottom: 0 !important;
} }

View File

@@ -70,3 +70,7 @@
.is--disabled { .is--disabled {
background-color: var(--vxe-input-disabled-color); background-color: var(--vxe-input-disabled-color);
} }
.vxe-modal--wrapper {
z-index: 5000 !important;
}

View File

@@ -3,22 +3,12 @@
<template #select> <template #select>
<el-form-item label="监督类型"> <el-form-item label="监督类型">
<el-select v-model="tableStore.table.params.supvType" clearable placeholder="请选择流程状态"> <el-select v-model="tableStore.table.params.supvType" clearable placeholder="请选择流程状态">
<el-option <el-option v-for="item in supvTypeOptionList" :key="item.id" :label="item.name" :value="item.id"></el-option>
v-for="item in supvTypeOptionList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="流程状态"> <el-form-item label="流程状态">
<el-select v-model="tableStore.table.params.status" clearable placeholder="请选择流程状态"> <el-select v-model="tableStore.table.params.status" clearable placeholder="请选择流程状态">
<el-option <el-option v-for="item in statusSelect" :key="item.id" :label="item.name" :value="item.id"></el-option>
v-for="item in statusSelect"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</template> </template>
@@ -27,32 +17,32 @@
<el-button icon="el-icon-Delete" type="primary" @click="deleteEven">删除</el-button> <el-button icon="el-icon-Delete" type="primary" @click="deleteEven">删除</el-button>
</template> </template>
</TableHeader> </TableHeader>
<Table ref="tableRef" :checkbox-config="checkboxConfig"/> <Table ref="tableRef" :checkbox-config="checkboxConfig" />
<!-- 新增 --> <!-- 新增 -->
<planAdd ref="planAddRef" @onsubmit="tableStore.index()" :openType="openType"/> <planAdd ref="planAddRef" @onsubmit="tableStore.index()" :openType="openType" />
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {useAdminInfo} from '@/stores/adminInfo' import { useAdminInfo } from '@/stores/adminInfo'
//获取登陆用户姓名和部门 //获取登陆用户姓名和部门
const adminInfo = useAdminInfo() const adminInfo = useAdminInfo()
import {ref, onMounted, provide, watch, nextTick} from 'vue' import { ref, onMounted, provide, watch, nextTick } from 'vue'
import TableStore from '@/utils/tableStore' import TableStore from '@/utils/tableStore'
import Table from '@/components/table/index.vue' import Table from '@/components/table/index.vue'
import TableHeader from '@/components/table/header/index.vue' import TableHeader from '@/components/table/header/index.vue'
import {ElMessage, ElMessageBox} from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import {cancel, getById} from '@/api/process-boot/generalTest' import { cancel, getById } from '@/api/process-boot/generalTest'
import planAdd from './planAdd.vue' import planAdd from './planAdd.vue'
import {useRouter} from 'vue-router' import { useRouter } from 'vue-router'
import {queryPlan, removeSurvey} from '@/api/process-boot/generalTest' import { queryPlan, removeSurvey } from '@/api/process-boot/generalTest'
import {getUserByRoleType} from '@/api/user-boot/user' import { getUserByRoleType } from '@/api/user-boot/user'
import {useDictData} from '@/stores/dictData' import { useDictData } from '@/stores/dictData'
import {deleteSurveyPlan} from '@/api/supervision-boot/delete/index' import { deleteSurveyPlan } from '@/api/supervision-boot/delete/index'
import {getUserReportById} from "@/api/supervision-boot/interfere"; import { getUserReportById } from "@/api/supervision-boot/interfere";
const dictData = useDictData() const dictData = useDictData()
const supvTypeOptionList = dictData.getBasicData('supv_type') const supvTypeOptionList = dictData.getBasicData('supv_type')
const statusSelect = dictData.statusSelect() const statusSelect = dictData.statusSelect()
const {push, options, currentRoute} = useRouter() const { push, options, currentRoute } = useRouter()
const dialogVisible = ref(false) const dialogVisible = ref(false)
const tableRef = ref() const tableRef = ref()
const planAddRef = ref() const planAddRef = ref()
@@ -109,8 +99,8 @@ const tableStore = new TableStore({
} }
}, },
{field: 'planStartTime', minWidth: 130, title: '计划开始时间'}, { field: 'planStartTime', minWidth: 130, title: '计划开始时间' },
{field: 'planEndTime', minWidth: 130, title: '计划结束时间'}, { field: 'planEndTime', minWidth: 130, title: '计划结束时间' },
{ {
field: 'status', field: 'status',
title: '流程状态', title: '流程状态',
@@ -221,7 +211,7 @@ const add = () => {
} }
// 禁止点击 // 禁止点击
const checkboxConfig = reactive({ const checkboxConfig = reactive({
checkMethod: ({row}) => { checkMethod: ({ row }) => {
return adminInfo.roleCode.includes('delete_info') return adminInfo.roleCode.includes('delete_info')
? true ? true
: row.createBy == adminInfo.$state.id && row.status == 0 : row.createBy == adminInfo.$state.id && row.status == 0
@@ -234,6 +224,13 @@ const deleteEven = () => {
message: '请选择要删除的数据' message: '请选择要删除的数据'
}) })
} else { } else {
ElMessageBox.confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
deleteSurveyPlan(tableStore.table.selection.map(item => item.id)).then(res => { deleteSurveyPlan(tableStore.table.selection.map(item => item.id)).then(res => {
ElMessage({ ElMessage({
type: 'success', type: 'success',
@@ -241,6 +238,9 @@ const deleteEven = () => {
}) })
tableStore.index() tableStore.index()
}) })
})
} }
} }
const exportFn = () => { const exportFn = () => {
@@ -264,7 +264,7 @@ const exportFn = () => {
/**取消流程操作*/ /**取消流程操作*/
const cancelLeave = async (row: any) => { const cancelLeave = async (row: any) => {
// 二次确认 // 二次确认
const {value} = await ElMessageBox.prompt('请输入取消原因', '取消流程', { const { value } = await ElMessageBox.prompt('请输入取消原因', '取消流程', {
confirmButtonText: '确定', confirmButtonText: '确定',
cancelButtonText: '取消', cancelButtonText: '取消',
inputType: 'textarea', inputType: 'textarea',
@@ -320,7 +320,7 @@ watch(
) )
const props = defineProps({id: {type: String, default: 'null'}}) const props = defineProps({ id: { type: String, default: 'null' } })
watch(() => props.id, async (newValue, oldValue) => { watch(() => props.id, async (newValue, oldValue) => {
if (newValue === 'null') return // 直接返回,避免后续逻辑执行 if (newValue === 'null') return // 直接返回,避免后续逻辑执行
const fullId = newValue.split('@')[0] const fullId = newValue.split('@')[0]
@@ -330,7 +330,7 @@ watch(() => props.id, async (newValue, oldValue) => {
nextTick(() => { nextTick(() => {
planAddRef.value.open('重新发起计划', fullId, false) planAddRef.value.open('重新发起计划', fullId, false)
}) })
}, {immediate: true}) }, { immediate: true })
</script> </script>
<style scoped lang="scss"></style> <style scoped lang="scss"></style>

View File

@@ -34,7 +34,8 @@ const layout = mainHeight(63) as any
watch(() => route.query.t, async (newValue, oldValue) => { watch(() => route.query.t, async (newValue, oldValue) => {
if (route.fullPath.includes('supervision/harmonicmanagement')) { if (route.fullPath.includes('supervision/harmonicmanagement')) {
let type = (route.query.type as string) || 'null' let type = (route.query.type as string) || 'null'
if (type == 'null' || type == '1') { if (type == 'null') { }
else if (type == '1') {
activeName.value = '1' activeName.value = '1'
} else { } else {
activeName.value = '2' activeName.value = '2'

View File

@@ -2,21 +2,21 @@
<div class='default-main'> <div class='default-main'>
<el-tabs v-model='activeName' type='border-card'> <el-tabs v-model='activeName' type='border-card'>
<el-tab-pane label='未建档用户档案录入管理' name='1'> <el-tab-pane label='未建档用户档案录入管理' name='1'>
<undocumented ref='Undocumented' :id='id' v-if="activeName == '1'"/> <undocumented ref='Undocumented' :id='id' v-if="activeName == '1'" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label='常态化干扰源用户管理' name='3'> <el-tab-pane label='常态化干扰源用户管理' name='3'>
<interferenceUserTable ref='InterferenceUserTable' :id='id' :businessKey="key" v-if="activeName == '3'"/> <interferenceUserTable ref='InterferenceUserTable' :id='id' :businessKey="key" v-if="activeName == '3'" />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
</template> </template>
<script setup lang='ts'> <script setup lang='ts'>
import {nextTick, ref, provide} from 'vue' import { nextTick, ref, provide } from 'vue'
import {mainHeight} from '@/utils/layout' import { mainHeight } from '@/utils/layout'
import undocumented from './components/undocumented/index.vue' import undocumented from './components/undocumented/index.vue'
import interferenceUserTable from './components/normalizationManager/interferenceUserTable.vue' import interferenceUserTable from './components/normalizationManager/interferenceUserTable.vue'
import {useRoute} from 'vue-router' import { useRoute } from 'vue-router'
const route = useRoute() const route = useRoute()
const Undocumented = ref() const Undocumented = ref()
@@ -32,7 +32,8 @@ const key = ref('')
watch(() => route.query.t, async (newValue, oldValue) => { watch(() => route.query.t, async (newValue, oldValue) => {
if (route.fullPath.includes('supervision/interferencemanagement')) { if (route.fullPath.includes('supervision/interferencemanagement')) {
let type = (route.query.type as string) || 'null' let type = (route.query.type as string) || 'null'
if (type == 'null' || type == '1') { if (type == 'null') { }
else if (type == '1') {
activeName.value = '1' activeName.value = '1'
} else { } else {
activeName.value = '3' activeName.value = '3'
@@ -41,7 +42,7 @@ watch(() => route.query.t, async (newValue, oldValue) => {
id.value = id.value + '@' + route.query.t id.value = id.value + '@' + route.query.t
key.value = (route.query.key as string) || 'null' key.value = (route.query.key as string) || 'null'
} }
}, {deep: true, immediate: true}) }, { deep: true, immediate: true })
const layout = mainHeight(63) as any const layout = mainHeight(63) as any

View File

@@ -16,7 +16,7 @@ import { ref } from 'vue'
import { mainHeight } from '@/utils/layout' import { mainHeight } from '@/utils/layout'
import terminal from './terminal.vue' import terminal from './terminal.vue'
import monitor from './monitor.vue' import monitor from './monitor.vue'
import {useRoute} from "vue-router"; import { useRoute } from "vue-router";
defineOptions({ defineOptions({
name: 'supervision/retire' name: 'supervision/retire'
@@ -30,7 +30,8 @@ const layout = mainHeight(63) as any
watch(() => route.query.t, async (newValue, oldValue) => { watch(() => route.query.t, async (newValue, oldValue) => {
if (route.fullPath.includes('supervision/retire')) { if (route.fullPath.includes('supervision/retire')) {
let type = (route.query.type as string) || 'null' let type = (route.query.type as string) || 'null'
if (type == 'null' || type == '0') { if (type == 'null') { }
else if (type == '0') {
activeName.value = '0' activeName.value = '0'
} else { } else {
activeName.value = '1' activeName.value = '1'
@@ -38,7 +39,7 @@ watch(() => route.query.t, async (newValue, oldValue) => {
id.value = (route.query.id as string) || 'null' id.value = (route.query.id as string) || 'null'
id.value = id.value + '@' + route.query.t id.value = id.value + '@' + route.query.t
} }
}, {deep: true, immediate: true}) }, { deep: true, immediate: true })
</script> </script>
<style lang='scss' scoped> <style lang='scss' scoped>

View File

@@ -5,20 +5,13 @@
<template #select> <template #select>
<el-form-item label="流程状态"> <el-form-item label="流程状态">
<el-select v-model="tableStore.table.params.status" clearable placeholder="请选择流程状态"> <el-select v-model="tableStore.table.params.status" clearable placeholder="请选择流程状态">
<el-option <el-option v-for="item in statusSelect" :key="item.id" :label="item.name"
v-for="item in statusSelect" :value="item.id"></el-option>
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="搜索"> <el-form-item label="搜索">
<el-input <el-input v-model="tableStore.table.params.searchValue" placeholder="输入变电站、监测点"
v-model="tableStore.table.params.searchValue" clearable></el-input>
placeholder="输入变电站、监测点"
clearable
></el-input>
</el-form-item> </el-form-item>
</template> </template>
<template #operation> <template #operation>
@@ -42,7 +35,7 @@ import { useRouter } from 'vue-router'
import MonitorQuitPopup from '@/views/pqs/supervise/retire/monitorQuitPopup.vue' import MonitorQuitPopup from '@/views/pqs/supervise/retire/monitorQuitPopup.vue'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { ElMessageBox } from 'element-plus/es' import { ElMessageBox } from 'element-plus/es'
import {cancelQuitRunningDevice, getRunningDeviceById} from '@/api/supervision-boot/device/quitRunningDev' import { cancelQuitRunningDevice, getRunningDeviceById } from '@/api/supervision-boot/device/quitRunningDev'
import { deleteQuitRunningDevice } from '@/api/supervision-boot/delete/index' import { deleteQuitRunningDevice } from '@/api/supervision-boot/delete/index'
import { useDictData } from '@/stores/dictData' import { useDictData } from '@/stores/dictData'
const dictData = useDictData() const dictData = useDictData()
@@ -253,6 +246,12 @@ const deleteEven = () => {
message: '请选择要删除的数据' message: '请选择要删除的数据'
}) })
} else { } else {
ElMessageBox.confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
deleteQuitRunningDevice(tableStore.table.selection.map(item => item.id)).then(res => { deleteQuitRunningDevice(tableStore.table.selection.map(item => item.id)).then(res => {
ElMessage({ ElMessage({
type: 'success', type: 'success',
@@ -260,6 +259,10 @@ const deleteEven = () => {
}) })
tableStore.index() tableStore.index()
}) })
})
} }
} }
/** 流程实例详情 */ /** 流程实例详情 */
@@ -312,7 +315,7 @@ watch(
} }
) )
const props = defineProps({id: {type: String, default: 'null'}}) const props = defineProps({ id: { type: String, default: 'null' } })
watch(() => props.id, async (newValue, oldValue) => { watch(() => props.id, async (newValue, oldValue) => {
if (newValue === 'null') return // 直接返回,避免后续逻辑执行 if (newValue === 'null') return // 直接返回,避免后续逻辑执行
const fullId = newValue.split('@')[0] const fullId = newValue.split('@')[0]
@@ -324,5 +327,5 @@ watch(() => props.id, async (newValue, oldValue) => {
deviceQuitPopup.value.open('重新发起', res.data) deviceQuitPopup.value.open('重新发起', res.data)
} }
}) })
}, {immediate: true}) }, { immediate: true })
</script> </script>

View File

@@ -249,6 +249,12 @@ const deleteEven = () => {
message: '请选择要删除的数据' message: '请选择要删除的数据'
}) })
} else { } else {
ElMessageBox.confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
deleteQuitRunningDevice(tableStore.table.selection.map(item => item.id)).then(res => { deleteQuitRunningDevice(tableStore.table.selection.map(item => item.id)).then(res => {
ElMessage({ ElMessage({
type: 'success', type: 'success',
@@ -256,6 +262,8 @@ const deleteEven = () => {
}) })
tableStore.index() tableStore.index()
}) })
})
} }
} }
/** 流程实例详情 */ /** 流程实例详情 */

View File

@@ -3,12 +3,8 @@
<template #select> <template #select>
<el-form-item label="流程状态"> <el-form-item label="流程状态">
<el-select v-model="tableStore.table.params.status" clearable placeholder="请选择流程状态"> <el-select v-model="tableStore.table.params.status" clearable placeholder="请选择流程状态">
<el-option <el-option v-for="item in statusSelect" :key="item.id" :label="item.name"
v-for="item in statusSelect" :value="item.id"></el-option>
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</template> </template>
@@ -27,14 +23,14 @@
</el-dialog> </el-dialog>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {ref, onMounted, provide, nextTick, watch} from 'vue' import { ref, onMounted, provide, nextTick, watch } from 'vue'
import TableStore from '@/utils/tableStore' import TableStore from '@/utils/tableStore'
import Table from '@/components/table/index.vue' import Table from '@/components/table/index.vue'
import TableHeader from '@/components/table/header/index.vue' import TableHeader from '@/components/table/header/index.vue'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import FeedbackPopup from '@/views/pqs/supervise/technology/feedbackPopup.vue' import FeedbackPopup from '@/views/pqs/supervise/technology/feedbackPopup.vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import {cancelFeedback, getById} from '@/api/supervision-boot/leaflet' import { cancelFeedback, getById } from '@/api/supervision-boot/leaflet'
import { useAdminInfo } from '@/stores/adminInfo' import { useAdminInfo } from '@/stores/adminInfo'
import { useDictData } from '@/stores/dictData' import { useDictData } from '@/stores/dictData'
import { getFileNameAndFilePath } from '@/api/system-boot/file' import { getFileNameAndFilePath } from '@/api/system-boot/file'
@@ -399,6 +395,12 @@ const deleteEven = () => {
message: '请选择要删除的数据' message: '请选择要删除的数据'
}) })
} else { } else {
ElMessageBox.confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
deleteWarningLeaflet(tableStore.table.selection.map(item => item.id)).then(res => { deleteWarningLeaflet(tableStore.table.selection.map(item => item.id)).then(res => {
ElMessage({ ElMessage({
type: 'success', type: 'success',
@@ -406,6 +408,10 @@ const deleteEven = () => {
}) })
tableStore.index() tableStore.index()
}) })
})
} }
} }
/**取消流程操作*/ /**取消流程操作*/
@@ -448,17 +454,19 @@ const handleAudit = (instanceId: any, historyInstanceId: any) => {
}) })
} }
const props = defineProps(['id','businessKey']) const props = defineProps(['id', 'businessKey'])
watch(() => props.id, async (newValue, oldValue) => { watch(() => props.id, async (newValue, oldValue) => {
if (newValue === 'null') return // 直接返回,避免后续逻辑执行 if (newValue === 'null') return // 直接返回,避免后续逻辑执行
const fullId = newValue.split('@')[0] let fullId = newValue.split('@')[0]
let nowTime = Date.now() let nowTime = Date.now()
const routeTime = Number(newValue.split('@')[1]) const routeTime = Number(newValue.split('@')[1])
if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT) return // 路由时间超过500ms则不执行
if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT || fullId == 'null') return // 路由时间超过500ms则不执行
await getById(fullId).then(res => { await getById(fullId).then(res => {
if (res && res.code == 'A0000') { if (res && res.code == 'A0000') {
if (res && res.code == 'A0000') { if (res && res.code == 'A0000') {
if(props.businessKey == '3'){ if (props.businessKey == '3') {
feedbackPopup.value.open( feedbackPopup.value.open(
'填报告警反馈单', '填报告警反馈单',
res.data.id, res.data.id,
@@ -468,7 +476,7 @@ watch(() => props.id, async (newValue, oldValue) => {
res.data.supervisionReport, res.data.supervisionReport,
res.data.reformAdvice res.data.reformAdvice
) )
}else{ } else {
feedbackPopup.value.open( feedbackPopup.value.open(
'重新填报告警反馈单', '重新填报告警反馈单',
res.data.id, res.data.id,
@@ -486,7 +494,7 @@ watch(() => props.id, async (newValue, oldValue) => {
} }
}) })
}, {immediate: true}) }, { immediate: true })
</script> </script>
<style scoped lang="scss"></style> <style scoped lang="scss"></style>

View File

@@ -281,6 +281,13 @@ const deleteEven = () => {
message: '请选择要删除的数据' message: '请选择要删除的数据'
}) })
} else { } else {
ElMessageBox.confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
deleteWarningLeaflet(tableStore.table.selection.map(item => item.id)).then(res => { deleteWarningLeaflet(tableStore.table.selection.map(item => item.id)).then(res => {
ElMessage({ ElMessage({
type: 'success', type: 'success',
@@ -288,6 +295,9 @@ const deleteEven = () => {
}) })
tableStore.index() tableStore.index()
}) })
})
} }
} }
/**取消流程操作*/ /**取消流程操作*/
@@ -325,10 +335,10 @@ const handleAudit = (instanceId: any, historyInstanceId: any) => {
const props = defineProps(['id','businessKey']) const props = defineProps(['id','businessKey'])
watch(() => props.id, async (newValue, oldValue) => { watch(() => props.id, async (newValue, oldValue) => {
if (newValue === 'null') return // 直接返回,避免后续逻辑执行 if (newValue === 'null') return // 直接返回,避免后续逻辑执行
const fullId = newValue.split('@')[0] let fullId = newValue.split('@')[0]
let nowTime = Date.now() let nowTime = Date.now()
const routeTime = Number(newValue.split('@')[1]) const routeTime = Number(newValue.split('@')[1])
if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT) return // 路由时间超过500ms则不执行 if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT || fullId == 'null') return // 路由时间超过500ms则不执行
await getById(fullId).then(res => { await getById(fullId).then(res => {
if (res && res.code == 'A0000') { if (res && res.code == 'A0000') {
if(props.businessKey == '3'){ if(props.businessKey == '3'){

View File

@@ -3,22 +3,12 @@
<el-scrollbar> <el-scrollbar>
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef"> <el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef">
<el-form-item label="问题详情:"> <el-form-item label="问题详情:">
<el-input <el-input v-model="form.issueDetail" disabled autocomplete="off" type="textarea"
v-model="form.issueDetail" :autosize="{ minRows: 2, maxRows: 6 }" readonly />
autocomplete="off"
type="textarea"
:autosize="{ minRows: 2, maxRows: 6 }"
readonly
/>
</el-form-item> </el-form-item>
<el-form-item label="整改意见:"> <el-form-item label="整改意见:">
<el-input <el-input v-model="form.reformAdvice" autocomplete="off" disabled type="textarea"
v-model="form.reformAdvice" :autosize="{ minRows: 2, maxRows: 6 }" readonly />
autocomplete="off"
type="textarea"
:autosize="{ minRows: 2, maxRows: 6 }"
readonly
/>
</el-form-item> </el-form-item>
<el-form-item label="技术监督报告:" v-if="showFile1"> <el-form-item label="技术监督报告:" v-if="showFile1">
@@ -38,26 +28,12 @@
</el-form-item> </el-form-item>
<el-form-item label="采取的措施:" prop="takeStep"> <el-form-item label="采取的措施:" prop="takeStep">
<el-input <el-input v-model="form.takeStep" autocomplete="off" placeholder="请输入采取的措施" type="textarea" />
v-model="form.takeStep"
autocomplete="off"
placeholder="请输入采取的措施"
type="textarea"
/>
</el-form-item> </el-form-item>
<el-form-item label="反馈报告:" class="uploadFile" prop="reportPath"> <el-form-item label="反馈报告:" class="uploadFile" prop="reportPath">
<el-upload <el-upload v-model:file-list="form.reportPath" ref="uploadRef" action="" :accept="acceptType"
v-model:file-list="form.reportPath" :limit="1" :on-exceed="handleExceed" :on-change="choose" :auto-upload="false"
ref="uploadRef" :on-progress="uploadFileName('reportPath')" :on-remove="removeFile">
action=""
:accept="acceptType"
:limit="1"
:on-exceed="handleExceed"
:on-change="choose"
:auto-upload="false"
:on-progress="uploadFileName('reportPath')"
:on-remove="removeFile"
>
<template #trigger> <template #trigger>
<el-button type="primary">上传文件</el-button> <el-button type="primary">上传文件</el-button>
</template> </template>
@@ -70,8 +46,8 @@
<span class="dialog-footer"> <span class="dialog-footer">
<el-button @click="close">取消</el-button> <el-button @click="close">取消</el-button>
<!-- <el-button type="primary" @click="submit">确认</el-button> --> <!-- <el-button type="primary" @click="submit">确认</el-button> -->
<el-button type="primary" @click="submit(true)" :loading="loading" >保存</el-button> <el-button type="primary" @click="submit(true)" :loading="loading">保存</el-button>
<el-button type="primary" @click="submit(false)" :loading="loading" >提交审批</el-button> <el-button type="primary" @click="submit(false)" :loading="loading">提交审批</el-button>
</span> </span>
</template> </template>
</el-dialog> </el-dialog>
@@ -160,8 +136,8 @@ const open = async (
} }
form.value.id = id form.value.id = id
form.value.status = status form.value.status = status
form.value.issueDetail = issueDetail form.value.issueDetail = issueDetail || ''
form.value.reformAdvice = reformAdvice form.value.reformAdvice = reformAdvice || ''
reportFilePath.value = reportPath reportFilePath.value = reportPath
//判断附件是否存在,如果存在则回显出让用户可以点击下载 //判断附件是否存在,如果存在则回显出让用户可以点击下载
if (problemPath) { if (problemPath) {
@@ -207,7 +183,7 @@ const close = () => {
/** /**
* 提交用户表单数据 * 提交用户表单数据
*/ */
const submit =async (flag: boolean) => { const submit = async (flag: boolean) => {
loading.value = true loading.value = true
if (flag) { if (flag) {
let subForm = JSON.parse(JSON.stringify(form.value)) let subForm = JSON.parse(JSON.stringify(form.value))
@@ -292,6 +268,7 @@ const uploadFileName = val => {
.el-select { .el-select {
min-width: 180px; min-width: 180px;
} }
.elView { .elView {
cursor: pointer; cursor: pointer;
margin-right: 10px; margin-right: 10px;

View File

@@ -27,13 +27,14 @@ defineOptions({
name: 'supervision/supervision/manage' name: 'supervision/supervision/manage'
}) })
const activeName: any = ref(null) const activeName: any = ref('3')
watch(() => route.query.t, async (newValue, oldValue) => { watch(() => route.query.t, async (newValue, oldValue) => {
if (route.fullPath.includes('supervision/supervision/manage')) { if (route.fullPath.includes('supervision/supervision/manage')) {
let type = (route.query.type as string) || 'null' let type = (route.query.type as string) || 'null'
if (type == 'null' || type == '0' || type == '3') { if (type == 'null') { }
else if (type == '0' || type == '3') {
activeName.value = '3' activeName.value = '3'
} else { } else {
activeName.value = '4' activeName.value = '4'
@@ -42,7 +43,7 @@ watch(() => route.query.t, async (newValue, oldValue) => {
key.value = (route.query.key as string) || 'null' key.value = (route.query.key as string) || 'null'
id.value = id.value + '@' + route.query.t id.value = id.value + '@' + route.query.t
} }
}, {deep: true, immediate: true}) }, { deep: true, immediate: true })
const layout = mainHeight(63) as any const layout = mainHeight(63) as any

View File

@@ -109,6 +109,8 @@ const tableStore = new TableStore({
name: '电网拓扑', name: '电网拓扑',
code: 'Power_Network' code: 'Power_Network'
} }
tableStore.table.params.runFlag = []
if(tableStore.table.params.runF!=null){ if(tableStore.table.params.runF!=null){
tableStore.table.params.runFlag = [tableStore.table.params.runF] tableStore.table.params.runFlag = [tableStore.table.params.runF]
} }
@@ -121,7 +123,7 @@ tableStore.table.params.runF=null
tableStore.table.params.runFlag=[] tableStore.table.params.runFlag=[]
tableStore.table.params.searchValue='' tableStore.table.params.searchValue=''
const runFlagList = [{id:0,name:'运'},{id:1,name:'检修'},{id:2,name:'停运'},{id:3,name:'调试'},{id:4,name:'退运'}] const runFlagList = [{id:0,name:'运'},{id:1,name:'检修'},{id:2,name:'停运'},{id:3,name:'调试'},{id:4,name:'退运'}]
provide('tableStore', tableStore) provide('tableStore', tableStore)

View File

@@ -254,6 +254,14 @@ const deleteEven = () => {
message: '请选择要删除的数据' message: '请选择要删除的数据'
}) })
} else { } else {
ElMessageBox.confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
deleteUserReport(tableStore.table.selection.map(item => item.id)).then(res => { deleteUserReport(tableStore.table.selection.map(item => item.id)).then(res => {
ElMessage({ ElMessage({
type: 'success', type: 'success',
@@ -261,6 +269,8 @@ const deleteEven = () => {
}) })
tableStore.index() tableStore.index()
}) })
})
} }
} }
/**取消流程操作*/ /**取消流程操作*/

View File

@@ -205,6 +205,13 @@ const deleteEven = () => {
message: '请选择要删除的数据' message: '请选择要删除的数据'
}) })
} else { } else {
ElMessageBox.confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
deleteUserReport(tableStore.table.selection.map(item => item.id)).then(res => { deleteUserReport(tableStore.table.selection.map(item => item.id)).then(res => {
ElMessage({ ElMessage({
type: 'success', type: 'success',
@@ -212,6 +219,8 @@ const deleteEven = () => {
}) })
tableStore.index() tableStore.index()
}) })
})
} }
} }

View File

@@ -1,13 +1,13 @@
<template> <template>
<div class='default-main'> <div class='default-main'>
<el-tabs v-model='activeName' type='border-card'> <el-tabs v-model='activeName' type='border-card'>
<el-tab-pane label='干扰源用户台账' name='1' > <el-tab-pane label='干扰源用户台账' name='1'>
<interferenceUserTable :id='id' v-if="activeName == '1'" /> <interferenceUserTable :id='id' v-if="activeName == '1'" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label='敏感及重要用户台账' name='2' > <el-tab-pane label='敏感及重要用户台账' name='2'>
<sensitiveUserTable v-if="activeName == '2'" /> <sensitiveUserTable v-if="activeName == '2'" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label='变电站台账' name='3' > <el-tab-pane label='变电站台账' name='3'>
<substationLedger v-if="activeName == '3'" /> <substationLedger v-if="activeName == '3'" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label='终端台账' name='4'> <el-tab-pane label='终端台账' name='4'>
@@ -41,13 +41,14 @@ const activeName = ref('1')
watch(() => route.query.t, async (newValue, oldValue) => { watch(() => route.query.t, async (newValue, oldValue) => {
if (route.fullPath.includes('Supervision/Terminaldetection')) { if (route.fullPath.includes('Supervision/Terminaldetection')) {
let type = (route.query.type as string) || 'null' let type = (route.query.type as string) || 'null'
if (type == '1') { if (type == 'null') { }
else if (type == '1') {
activeName.value = '1' activeName.value = '1'
} }
id.value = (route.query.id as string) || 'null' id.value = (route.query.id as string) || 'null'
id.value = id.value + '@' + route.query.t id.value = id.value + '@' + route.query.t
} }
}, {deep: true, immediate: true}) }, { deep: true, immediate: true })
const layout = mainHeight(63) as any const layout = mainHeight(63) as any
</script> </script>

View File

@@ -265,6 +265,14 @@ const deleteEven = () => {
message: '请选择要删除的数据' message: '请选择要删除的数据'
}) })
} else { } else {
ElMessageBox.confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
deleteTempLineDebugReport(tableStore.table.selection.map(item => item.id)).then(res => { deleteTempLineDebugReport(tableStore.table.selection.map(item => item.id)).then(res => {
ElMessage({ ElMessage({
type: 'success', type: 'success',
@@ -272,6 +280,8 @@ const deleteEven = () => {
}) })
tableStore.index() tableStore.index()
}) })
})
} }
} }
onMounted(() => { onMounted(() => {

View File

@@ -3,20 +3,13 @@
<TableHeader area datePicker nextFlag theCurrentTime ref="TableHeaderRef"> <TableHeader area datePicker nextFlag theCurrentTime ref="TableHeaderRef">
<template #select> <template #select>
<el-form-item label="搜索"> <el-form-item label="搜索">
<el-input <el-input v-model="tableStore.table.params.searchValue" placeholder="输入变电站、终端、监测点名称"
v-model="tableStore.table.params.searchValue" clearable></el-input>
placeholder="输入变电站、终端、监测点名称"
clearable
></el-input>
</el-form-item> </el-form-item>
<el-form-item label="流程状态"> <el-form-item label="流程状态">
<el-select v-model="tableStore.table.params.status" clearable placeholder="请选择流程状态"> <el-select v-model="tableStore.table.params.status" clearable placeholder="请选择流程状态">
<el-option <el-option v-for="item in statusSelect" :key="item.id" :label="item.name"
v-for="item in statusSelect" :value="item.id"></el-option>
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</template> </template>
@@ -43,9 +36,9 @@ import addForm from './addForm.vue'
import { useAdminInfo } from '@/stores/adminInfo' import { useAdminInfo } from '@/stores/adminInfo'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { ElMessageBox } from 'element-plus/es' import { ElMessageBox } from 'element-plus/es'
import {cancelMointorPointFormData, getTempLineDetailsById} from '@/api/supervision-boot/monitorpoint/index' import { cancelMointorPointFormData, getTempLineDetailsById } from '@/api/supervision-boot/monitorpoint/index'
import { deleteTempLineReport } from '@/api/supervision-boot/delete/index' import { deleteTempLineReport } from '@/api/supervision-boot/delete/index'
import {getTerminalDetailsById} from "@/api/supervision-boot/terminal"; import { getTerminalDetailsById } from "@/api/supervision-boot/terminal";
//获取登陆用户姓名和部门 //获取登陆用户姓名和部门
const adminInfo = useAdminInfo() const adminInfo = useAdminInfo()
const dictData = useDictData() const dictData = useDictData()
@@ -240,6 +233,14 @@ const deleteEven = () => {
message: '请选择要删除的数据' message: '请选择要删除的数据'
}) })
} else { } else {
ElMessageBox.confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
deleteTempLineReport(tableStore.table.selection.map(item => item.id)).then(res => { deleteTempLineReport(tableStore.table.selection.map(item => item.id)).then(res => {
ElMessage({ ElMessage({
type: 'success', type: 'success',
@@ -247,6 +248,8 @@ const deleteEven = () => {
}) })
tableStore.index() tableStore.index()
}) })
})
} }
} }
@@ -294,14 +297,14 @@ const handleAudit = (instanceId: any, historyInstanceId: any) => {
}) })
} }
const props = defineProps({id: {type: String, default: 'null'}}) const props = defineProps({ id: { type: String, default: 'null' } })
watch(() => props.id, async (newValue, oldValue) => { watch(() => props.id, async (newValue, oldValue) => {
if (newValue === 'null') return // 直接返回,避免后续逻辑执行 if (newValue === 'null') return // 直接返回,避免后续逻辑执行
const fullId = newValue.split('@')[0] const fullId = newValue.split('@')[0]
let nowTime = Date.now() let nowTime = Date.now()
const routeTime = Number(newValue.split('@')[1]) const routeTime = Number(newValue.split('@')[1])
if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT) return // 路由时间超过500ms则不执行 if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT) return // 路由时间超过500ms则不执行
await getTempLineDetailsById({id:fullId}).then(res => { await getTempLineDetailsById({ id: fullId }).then(res => {
if (res && res.code == 'A0000') { if (res && res.code == 'A0000') {
addForms.value.open({ addForms.value.open({
title: '重新发起', title: '重新发起',
@@ -309,7 +312,7 @@ watch(() => props.id, async (newValue, oldValue) => {
}) })
} }
}) })
}, {immediate: true}) }, { immediate: true })
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">

View File

@@ -15,7 +15,8 @@
<template #operation> <template #operation>
<el-button icon="el-icon-Plus" type="primary" @click="addFormModel">新增</el-button> <el-button icon="el-icon-Plus" type="primary" @click="addFormModel">新增</el-button>
<el-button icon="el-icon-Delete" type="primary" @click="deleteEven">删除</el-button> <el-button icon="el-icon-Delete" type="primary" @click="deleteEven">删除</el-button>
<el-button icon="el-icon-Download" type="primary" @click="exportExcelTemplate" :loading="loading">模版下载</el-button> <el-button icon="el-icon-Download" type="primary" @click="exportExcelTemplate"
:loading="loading">模版下载</el-button>
<el-button icon="el-icon-Upload" type="primary" @click="importUserData">批量导入</el-button> <el-button icon="el-icon-Upload" type="primary" @click="importUserData">批量导入</el-button>
</template> </template>
</TableHeader> </TableHeader>
@@ -268,6 +269,12 @@ const deleteEven = () => {
message: '请选择要删除的数据' message: '请选择要删除的数据'
}) })
} else { } else {
ElMessageBox.confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
deleteDevReport(tableStore.table.selection.map(item => item.id)).then(res => { deleteDevReport(tableStore.table.selection.map(item => item.id)).then(res => {
ElMessage({ ElMessage({
type: 'success', type: 'success',
@@ -275,6 +282,11 @@ const deleteEven = () => {
}) })
tableStore.index() tableStore.index()
}) })
})
} }
} }

View File

@@ -2,29 +2,29 @@
<div class="default-main"> <div class="default-main">
<el-tabs v-model="activeName" type="border-card"> <el-tabs v-model="activeName" type="border-card">
<el-tab-pane label="终端入网检测" name="1"> <el-tab-pane label="终端入网检测" name="1">
<terminal :id="id" v-if="activeName == '1'"/> <terminal :id="id" v-if="activeName == '1'" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="监测点台账录入" name="2"> <el-tab-pane label="监测点台账录入" name="2">
<monitorpoint :id="id" v-if="activeName == '2'"/> <monitorpoint :id="id" v-if="activeName == '2'" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="监测点联调列表" name="3"> <el-tab-pane label="监测点联调列表" name="3">
<jointDebugList :id="id" v-if="activeName == '3'"/> <jointDebugList :id="id" v-if="activeName == '3'" />
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="终端周期检测" name="4"> <el-tab-pane label="终端周期检测" name="4">
<cycleDetection :id="id" :businessKey='key' v-if="activeName == '4'"/> <cycleDetection :id="id" :businessKey='key' v-if="activeName == '4'" />
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import {ref} from 'vue' import { ref } from 'vue'
import {mainHeight} from '@/utils/layout' import { mainHeight } from '@/utils/layout'
import terminal from './components/terminainal/index.vue' import terminal from './components/terminainal/index.vue'
import monitorpoint from './components/monitorpoint/index.vue' import monitorpoint from './components/monitorpoint/index.vue'
import jointDebugList from './components/jointDebugList/index.vue' import jointDebugList from './components/jointDebugList/index.vue'
import cycleDetection from './components/cycleDetection/index.vue' import cycleDetection from './components/cycleDetection/index.vue'
import {useRoute} from "vue-router"; import { useRoute } from "vue-router";
defineOptions({ defineOptions({
name: 'terminalNetwotk' name: 'terminalNetwotk'
@@ -38,7 +38,8 @@ const key = ref('')
watch(() => route.query.t, async (newValue, oldValue) => { watch(() => route.query.t, async (newValue, oldValue) => {
if (route.fullPath.includes('terminalNetwotk')) { if (route.fullPath.includes('terminalNetwotk')) {
let type = (route.query.type as string) || 'null' let type = (route.query.type as string) || 'null'
if (type == 'null' || type == '1') { if (type == 'null') { }
else if (type == '1') {
activeName.value = '1' activeName.value = '1'
} else if (type == '2') { } else if (type == '2') {
activeName.value = '2' activeName.value = '2'
@@ -51,7 +52,7 @@ watch(() => route.query.t, async (newValue, oldValue) => {
key.value = (route.query.key as string) || 'null' key.value = (route.query.key as string) || 'null'
id.value = id.value + '@' + route.query.t id.value = id.value + '@' + route.query.t
} }
}, {deep: true, immediate: true}) }, { deep: true, immediate: true })
const layout = mainHeight(63) as any const layout = mainHeight(63) as any

View File

@@ -5,12 +5,8 @@
<template #select> <template #select>
<el-form-item label="流程状态"> <el-form-item label="流程状态">
<el-select v-model="tableStore.table.params.status" clearable placeholder="请选择流程状态"> <el-select v-model="tableStore.table.params.status" clearable placeholder="请选择流程状态">
<el-option <el-option v-for="item in statusSelect" :key="item.id" :label="item.name"
v-for="item in statusSelect" :value="item.id"></el-option>
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</template> </template>
@@ -51,7 +47,7 @@ import { ref, onMounted, provide, reactive } from 'vue'
import TableStore from '@/utils/tableStore' import TableStore from '@/utils/tableStore'
import Table from '@/components/table/index.vue' import Table from '@/components/table/index.vue'
import TableHeader from '@/components/table/header/index.vue' import TableHeader from '@/components/table/header/index.vue'
import {useRoute, useRouter} from 'vue-router' import { useRoute, useRouter } from 'vue-router'
import { useDictData } from '@/stores/dictData' import { useDictData } from '@/stores/dictData'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import { addRunTest, update, cancel } from '@/api/supervision-boot/lineRunTest' import { addRunTest, update, cancel } from '@/api/supervision-boot/lineRunTest'
@@ -265,6 +261,12 @@ const deleteEven = () => {
message: '请选择要删除的数据' message: '请选择要删除的数据'
}) })
} else { } else {
ElMessageBox.confirm('此操作将永久删除, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
let createBy = tableStore.table.selection.map(item => item.createBy) let createBy = tableStore.table.selection.map(item => item.createBy)
let status = tableStore.table.selection.map(item => item.status) let status = tableStore.table.selection.map(item => item.status)
if (adminInfo.roleCode.includes('delete_info')) { if (adminInfo.roleCode.includes('delete_info')) {
@@ -277,6 +279,9 @@ const deleteEven = () => {
message: '只能删除自己填报的数据!!!' message: '只能删除自己填报的数据!!!'
}) })
} }
})
} }
} }
@@ -410,7 +415,7 @@ watch(() => route.query.t, async (newValue, oldValue) => {
if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT) return // 路由时间超过500ms则不执行 if (isNaN(routeTime) || nowTime - routeTime > import.meta.env.VITE_ROUTE_TIME_OUT) return // 路由时间超过500ms则不执行
if (route.fullPath.includes('/testRun')) { if (route.fullPath.includes('/testRun')) {
let id = (route.query.id as string) || 'null' let id = (route.query.id as string) || 'null'
if(id != 'null'){ if (id != 'null') {
monitorIds = [] monitorIds = []
monitorIds.push(id) monitorIds.push(id)
const start = new Date() const start = new Date()
@@ -440,7 +445,7 @@ watch(() => route.query.t, async (newValue, oldValue) => {
} }
} }
}, {deep: true, immediate: true}) }, { deep: true, immediate: true })
</script> </script>
<style scoped lang="scss"></style> <style scoped lang="scss"></style>

View File

@@ -17,7 +17,7 @@
<span>事件关联编号为{{ AssociationNumber }}</span> <span>事件关联编号为{{ AssociationNumber }}</span>
<div> <div>
<el-button icon="el-icon-Download" type="primary" @click="positioningexport">导出</el-button> <el-button icon="el-icon-Download" type="primary" @click="positioningexport">导出</el-button>
<el-button icon="el-icon-Download" type="primary" @click="bxcontrast">波形对比</el-button> <!-- <el-button icon="el-icon-Download" type="primary" @click="bxcontrast">波形对比</el-button> -->
</div> </div>
</div> </div>
<vxe-table <vxe-table

View File

@@ -17,31 +17,17 @@
<span>事件关联编号为{{ AssociationNumber }}</span> <span>事件关联编号为{{ AssociationNumber }}</span>
<el-button icon="el-icon-Download" type="primary" @click="positioningexport">导出</el-button> <el-button icon="el-icon-Download" type="primary" @click="positioningexport">导出</el-button>
</div> </div>
<vxe-table <vxe-table height="400" ref="positioningtableRef" auto-resize :data="AnalysisData"
height="500" v-bind="defaultAttribute">
ref="positioningtableRef"
auto-resize
:data="AnalysisData"
v-bind="defaultAttribute"
>
<vxe-table-column title="序号" width="70" type="seq" align="center"> <vxe-table-column title="序号" width="70" type="seq" align="center">
<template v-slot="row"> <template v-slot="row">
<span>{{ (form.pageNum - 1) * form.pageSize + row.rowIndex + 1 }}</span> <span>{{ (form.pageNum - 1) * form.pageSize + row.rowIndex + 1 }}</span>
</template> </template>
</vxe-table-column> </vxe-table-column>
<vxe-table-column <vxe-table-column field="startTime" title="发生时间" align="center"
field="startTime" :show-overflow="true"></vxe-table-column>
title="发生时间"
align="center"
:show-overflow="true"
></vxe-table-column>
<vxe-table-column field="gdName" title="供电公司" align="center"></vxe-table-column> <vxe-table-column field="gdName" title="供电公司" align="center"></vxe-table-column>
<vxe-table-column <vxe-table-column field="subName" :show-overflow="true" title="变电站" align="center"></vxe-table-column>
field="subName"
:show-overflow="true"
title="变电站"
align="center"
></vxe-table-column>
<vxe-table-column field="lineName" title="监测点" align="center"></vxe-table-column> <vxe-table-column field="lineName" title="监测点" align="center"></vxe-table-column>
<vxe-table-column field="voltageId" title="电压等级(kV)" align="center"></vxe-table-column> <vxe-table-column field="voltageId" title="电压等级(kV)" align="center"></vxe-table-column>
<vxe-table-column field="featureAmplitude" title="暂降幅值(%)" align="center" width="140"> <vxe-table-column field="featureAmplitude" title="暂降幅值(%)" align="center" width="140">
@@ -50,32 +36,14 @@
</template> </template>
</vxe-table-column> </vxe-table-column>
<vxe-table-column field="duration" title="持续时间(s)" align="center" width="120"></vxe-table-column> <vxe-table-column field="duration" title="持续时间(s)" align="center" width="120"></vxe-table-column>
<vxe-table-column <vxe-table-column field="advanceType" title="暂降类型" align="center" width="120"
field="advanceType" :formatter="formFilter"></vxe-table-column>
title="暂降类型" <vxe-table-column field="advanceReason" title="暂降原因" align="center" width="120"
align="center" :formatter="formFilter"></vxe-table-column>
width="120"
:formatter="formFilter"
></vxe-table-column>
<vxe-table-column
field="advanceReason"
title="暂降原因"
align="center"
width="120"
:formatter="formFilter"
></vxe-table-column>
</vxe-table> </vxe-table>
<el-pagination <el-pagination class="mt10" :currentPage="form.pageNum" :page-size="form.pageSize"
class="mt10" :page-sizes="[10, 20, 50, 100]" background :layout="'sizes,total, ->, prev, pager, next, jumper'"
:currentPage="form.pageNum" :total="total" @size-change="onTableSizeChange" @current-change="onTableCurrentChange"></el-pagination>
:page-size="form.pageSize"
:page-sizes="[10, 20, 50, 100]"
background
:layout="'sizes,total, ->, prev, pager, next, jumper'"
:total="total"
@size-change="onTableSizeChange"
@current-change="onTableCurrentChange"
></el-pagination>
</el-dialog> </el-dialog>
<!-- 暂降源定位 --> <!-- 暂降源定位 -->
</div> </div>
@@ -142,19 +110,19 @@ const tableStore = new TableStore({
source() source()
} }
}, },
{ // {
name: 'edit', // name: 'edit',
title: '范围查看', // title: '范围查看',
type: 'primary', // type: 'primary',
icon: 'el-icon-Plus', // icon: 'el-icon-Plus',
render: 'basicButton' // render: 'basicButton'
} // }
] ]
} }
], ],
loadCallback: () => {} loadCallback: () => { }
}) })
tableStore.table.params.searchValue = '' tableStore.table.params.searchValue = ''
provide('tableStore', tableStore) provide('tableStore', tableStore)
@@ -169,7 +137,7 @@ onMounted(() => {
}) })
// 启动关联分析 // 启动关联分析
const firing = () => {} const firing = () => { }
// 暂降源定位 // 暂降源定位
const source = () => { const source = () => {
queryEventDetailByAssId(form.value).then(res => { queryEventDetailByAssId(form.value).then(res => {
@@ -243,7 +211,8 @@ const positioningexport = () => {
sheetName: 'Sheet1', sheetName: 'Sheet1',
type: 'xlsx', //导出文件类型 xlsx 和 csv type: 'xlsx', //导出文件类型 xlsx 和 csv
useStyle: true, useStyle: true,
data: dialogAnalysis.value, // 数据源 // 过滤那个字段导出 download: false,
data: AnalysisData.value, // 数据源 // 过滤那个字段导出
columnFilterMethod: function (column, $columnIndex) { columnFilterMethod: function (column, $columnIndex) {
return !(column.$columnIndex === 0) return !(column.$columnIndex === 0)
} }
@@ -256,4 +225,6 @@ const positioningexport = () => {
min-width: 128px; min-width: 128px;
} }
} }
</style> </style>

View File

@@ -4,7 +4,7 @@
class="cn-operate-dialog" class="cn-operate-dialog"
v-model="incomingDialogVisible" v-model="incomingDialogVisible"
:title="title" :title="title"
style="width: 415px; height: 300px" style="width: 415px;"
> >
<el-scrollbar> <el-scrollbar>
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef"> <el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef">

View File

@@ -1,6 +1,6 @@
<!--终端详情页面包含终端基础信息元器件列表信息--> <!--终端详情页面包含终端基础信息元器件列表信息-->
<template> <template>
<el-dialog draggable class="cn-operate-dialog" v-model="machineDetailVisible" :title="title" style="width: 900px"> <el-dialog draggable class="cn-operate-dialog" v-model="machineDetailVisible" :title="title" style="width: 1000px">
<el-scrollbar> <el-scrollbar>
<el-form :inline="false" :model="form" label-width="120px" ref="formRef"> <el-form :inline="false" :model="form" label-width="120px" ref="formRef">
<el-form-item label="终端名称"> <el-form-item label="终端名称">

View File

@@ -30,9 +30,9 @@ const tableStore = new TableStore({
publicHeight: 300, publicHeight: 300,
showPage: false, showPage: false,
column: [ column: [
{ title: '元器件名称', width: 110, field: 'name' }, { title: '元器件名称', minWidth: 110, field: 'name' },
{ {
title: '灵敏度', width: 80, field: 'sensitivity', title: '灵敏度', minWidth: 80, field: 'sensitivity',
formatter: (row: any) => { formatter: (row: any) => {
let temp let temp
switch (row.sensitivity) { switch (row.sensitivity) {
@@ -52,7 +52,7 @@ const tableStore = new TableStore({
} }
}, },
{ {
title: '耐受能力', width: 90, field: 'standardFlag', title: '耐受能力', minWidth: 90, field: 'standardFlag',
formatter: (row: any) => { formatter: (row: any) => {
return row.standardFlag == 0 ? '否' : '是' return row.standardFlag == 0 ? '否' : '是'
} }
@@ -60,15 +60,15 @@ const tableStore = new TableStore({
{ {
title: '上限曲线', title: '上限曲线',
children: [ children: [
{ title: '持续时间(ms)', width: '110', field: 'vtcTimeUpper' }, { title: '持续时间(ms)', minWidth: '110', field: 'vtcTimeUpper' },
{ title: '暂降幅值(p.u.)', width: '110', field: 'vtcAmpUpper' } { title: '暂降幅值(p.u.)', minWidth: '110', field: 'vtcAmpUpper' }
] ]
}, },
{ {
title: '下限曲线', title: '下限曲线',
children: [ children: [
{ title: '持续时间(ms)', width: '110', field: 'vtcTimeLower' }, { title: '持续时间(ms)', minWidth: '110', field: 'vtcTimeLower' },
{ title: '暂降幅值(p.u.)', width: '110', field: 'vtcAmpLower' } { title: '暂降幅值(p.u.)', minWidth: '110', field: 'vtcAmpLower' }
] ]
}, },
{ {

View File

@@ -4,8 +4,8 @@
<el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef"> <el-form :inline="false" :model="form" label-width="120px" :rules="rules" ref="formRef">
<el-tabs tab-position="left" style="height: 100%" :before-leave="checkUserId" v-model="tab"> <el-tabs tab-position="left" style="height: 100%" :before-leave="checkUserId" v-model="tab">
<el-tab-pane label="基本信息" name="user"> <el-tab-pane label="基本信息" name="user">
<el-form-item label="用户名" prop="userName"> <el-form-item label="用户名" prop="userName" >
<el-input v-model="form.userName" /> <el-input v-model="form.userName" placeholder="请输入用户名" clearable />
</el-form-item> </el-form-item>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
@@ -18,21 +18,21 @@
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="所属行业" prop="industry"> <el-form-item label="所属行业" prop="industry">
<el-input v-model="form.industry" /> <el-input v-model="form.industry" placeholder="请输入所属行业" clearable />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-form-item label="所在地区" prop="addr"> <el-form-item label="所在地区" prop="addr">
<area-cascard v-model="form.addr" @change="reValueAddr" ref="areaRef" /> <area-cascard v-model="form.addr" @change="reValueAddr" ref="areaRef" placeholder="请选择所在地区" clearable/>
</el-form-item> </el-form-item>
<el-form-item label="详细地址"> <el-form-item label="详细地址">
<el-input v-model="form.addrDetail" /> <el-input v-model="form.addrDetail" placeholder="请输入详细地址" clearable/>
</el-form-item> </el-form-item>
<el-form-item label="联系方式"> <el-form-item label="联系方式">
<el-input v-model="form.concact" /> <el-input v-model="form.concact" placeholder="请输入联系方式" clearable/>
</el-form-item> </el-form-item>
<el-form-item label="用户描述"> <el-form-item label="用户描述">
<el-input v-model="form.remark" :rows="2" type="textarea" placeholder="请输入描述" /> <el-input v-model="form.remark" :rows="2" type="textarea" placeholder="请输入描述" clearable/>
</el-form-item> </el-form-item>
<el-form-item label="企业照片"> <el-form-item label="企业照片">
<div> <div>

View File

@@ -30,8 +30,8 @@ const { query } = useRoute()
onMounted(() => { onMounted(() => {
governTotalContent.value.style.height = mainHeight().height governTotalContent.value.style.height = mainHeight().height
schemeContent.value.style.height = mainHeight(45).height schemeContent.value.style.height = mainHeight(65).height
schemeContent.value.style.maxheight = mainHeight(45).height schemeContent.value.style.maxheight = mainHeight(65).height
schemeContent.value.style.overflowY = 'scroll' schemeContent.value.style.overflowY = 'scroll'
schemeContent.value.style.overflowX = 'hidden' schemeContent.value.style.overflowX = 'hidden'
}) })

View File

@@ -61,12 +61,12 @@ const tableStore = new TableStore({
method: 'POST', method: 'POST',
column: [ column: [
{ title: '序号', type: 'seq', width: 80 }, { title: '序号', type: 'seq', width: 80 },
{ title: '用户', field: 'userName', width: 160 }, { title: '用户', field: 'userName', minWidth: 160 },
{ title: '生产线名称', field: 'productLineName', width: 160 }, { title: '生产线名称', field: 'productLineName', minWidth: 160 },
{ title: '期望回报(年)', field: 'payBackPeriod', width: 150 }, { title: '期望回报(年)', field: 'payBackPeriod', minWidth: 150 },
{ title: '数据时间范围', field: 'timeScope', width: 170 }, { title: '数据时间范围', field: 'timeScope', minWidth: 170 },
{ {
title: '治理容量(kW)', field: 'governPower', width: 150, type: 'html', title: '治理容量(kW)', field: 'governPower', minWidth: 150, type: 'html',
formatter: (obj: any) => { formatter: (obj: any) => {
const val = obj.row.governPower const val = obj.row.governPower
const id = obj.row.productLineId const id = obj.row.productLineId
@@ -77,7 +77,7 @@ const tableStore = new TableStore({
title: '最佳方案', title: '最佳方案',
children: [ children: [
{ {
title: '方案名称', width: '110', field: 'schemeType', title: '方案名称', minWidth: '110', field: 'schemeType',
formatter: (obj: any) => { formatter: (obj: any) => {
let temp let temp
switch (obj.row.schemeType) { switch (obj.row.schemeType) {
@@ -97,13 +97,13 @@ const tableStore = new TableStore({
} }
}, },
{ {
title: '初期投资(万元)', width: '150', field: 'initialInvest', title: '初期投资(万元)', minWidth: '150', field: 'initialInvest',
formatter: (obj: any) => { formatter: (obj: any) => {
return Number(obj.row.schemeEquipment) + Number(obj.row.schemeMaintain) return (Number(obj.row.schemeEquipment) + Number(obj.row.schemeMaintain)).toFixed(2)
} }
}, },
{ title: '投资回收期(年)', width: '150', field: 'payBackYear' }, { title: '投资回收期(年)', minWidth: '150', field: 'payBackYear' },
{ title: '治理效果(万元/年)', width: '150', field: 'governEffect' } { title: '治理效果(万元/年)', minWidth: '150', field: 'governEffect' }
] ]
}, },
{ {
@@ -149,11 +149,11 @@ const tableStore = new TableStore({
if (tableStore.table.params.addr) { if (tableStore.table.params.addr) {
tableStore.table.params.addrStrOption = tableStore.table.params.addr.map(tempArray => tempArray.join('/')) tableStore.table.params.addrStrOption = tableStore.table.params.addr.map(tempArray => tempArray.join('/'))
} }
for (let key in tableStore.table.params) { // for (let key in tableStore.table.params) {
if (tableStore.table.params[key] === '') { // if (tableStore.table.params[key] === '') {
delete tableStore.table.params[key] // delete tableStore.table.params[key]
} // }
} // }
} }
}) })

View File

@@ -45,7 +45,9 @@ const tableStore = new TableStore({
url: '/user-boot/function/getButtonById', url: '/user-boot/function/getButtonById',
publicHeight: 60, publicHeight: 60,
column: [ column: [
{ title: '普通接口/接口名称', field: 'name' }, { title: '普通接口/接口名称', field: 'name', formatter: row => {
return row.cellValue == 1 ? '普通接口' : '公用接口'
} },
{ title: '接口类型', field: 'type' }, { title: '接口类型', field: 'type' },
{ title: 'URL接口路径', field: 'path' }, { title: 'URL接口路径', field: 'path' },
{ {