技术监督 页面联调

This commit is contained in:
GGJ
2024-03-18 19:43:55 +08:00
parent 1b6b8c8777
commit da9fb74192
25 changed files with 1016 additions and 191 deletions

View File

@@ -15,6 +15,7 @@ export function addUse(data) {
method: 'post',
data
})
}
//承载能力评估用户编辑
export function updateUse(data) {

View File

@@ -0,0 +1,177 @@
import createAxios from '@/utils/request'
//获取电能质量问题查询维护数据
export function getIssues(data) {
return createAxios({
url: '/process-boot/electricityQuality/getIssues',
method: 'POST',
data
})
}
//填报普测超标问题 新增
export function addGeneralSurveyIssues(data) {
return createAxios({
url: '/process-boot/electricityQuality/addGeneralSurveyIssues',
method: 'POST',
data
})
}
//填报运维监控异常问题 新增
export function addAbnormalIssues(data) {
return createAxios({
url: '/process-boot/electricityQuality/addAbnormalIssues',
method: 'POST',
data
})
}
//填报用户投诉问题 新增
export function addComplaintIssues(data) {
return createAxios({
url: '/process-boot/electricityQuality/addComplaintIssues',
method: 'POST',
data
})
}
//填报在线监测超标问题 新增
export function addExcessiveIssues(data) {
return createAxios({
url: '/process-boot/electricityQuality/addExcessiveIssues',
method: 'POST',
data
})
}
//填报计划整改措施
export function correctiveAction(data) {
return createAxios({
url: '/process-boot/electricityQuality/correctiveAction',
method: 'POST',
data
})
}
//填报实际采取措施
export function takeAction(data) {
return createAxios({
url: '/process-boot/electricityQuality/takeAction',
method: 'POST',
data
})
}
//填报实际采取措施
export function effectAnalysis(data) {
return createAxios({
url: '/process-boot/electricityQuality/effectAnalysis',
method: 'POST',
data
})
}
//原因分析
export function reasonAnalysis(data) {
return createAxios({
url: '/process-boot/electricityQuality/reasonAnalysis',
method: 'POST',
data
})
}
//查询在线监测超标问题详情
export function getExcessiveDetail(data) {
return createAxios({
url: '/process-boot/electricityQuality/getExcessiveDetail?powerQualityProblemNo=' + data,
method: 'POST'
})
}
//查询普测超标问题详情
export function getGeneralSurveyDetail(data) {
return createAxios({
url: '/process-boot/electricityQuality/getGeneralSurveyDetail?powerQualityProblemNo=' + data,
method: 'POST'
})
}
//查询用户投诉问题详情
export function getComplaintDetail(data) {
return createAxios({
url: '/process-boot/electricityQuality/getComplaintDetail?powerQualityProblemNo=' + data,
method: 'POST'
})
}
//查询运维异常问题详情
export function getAbnormalDetail(data) {
return createAxios({
url: '/process-boot/electricityQuality/getAbnormalDetail?powerQualityProblemNo=' + data,
method: 'POST'
})
}
//删除问题
export function deleteIssues(data) {
return createAxios({
url: '/process-boot/electricityQuality/deleteIssues?powerQualityProblemNo=' + data,
method: 'POST'
})
}
//问题归档
export function queryCheckTrack(data) {
return createAxios({
url: '/process-boot/electricityQuality/queryCheckTrack?powerQualityProblemNo=' + data,
method: 'POST'
})
}
//问题归档
export function archive(data) {
return createAxios({
url: '/process-boot/electricityQuality/archive?powerQualityProblemNo=' + data,
method: 'POST'
})
}
// device-boot
//告警明细查看(主配网)
export function getAllAlarmDetailList(data) {
return createAxios({
url: '/device-boot/rMpPwAlarmDetail/getAllAlarmDetailList',
method: 'POST',
data
})
}
//获取用电用户列表
export function getPowerUtilizationUserList(data) {
return createAxios({
url: '/device-boot/pms/powerClient/getPowerUtilizationUserList',
method: 'POST',
data
})
}
//获取用发电户列表
export function getGenerateElectricityUserList(data) {
return createAxios({
url: '/device-boot/pms/powerGenerationUser/getGenerateElectricityUserList',
method: 'POST',
data
})
}
// pqs-procees
//普测计划名称查询
export function querySurveyPlanOnQuestion(data) {
return createAxios({
url: '/process-boot/rGeneralSurveyPlan/querySurveyPlanOnQuestion',
method: 'POST',
data
})
}
export function querySurveyPlanName(data) {
return createAxios({
url: '/process-boot/rGeneralSurveyPlan/querySurveyPlanName',
method: 'POST',
data
})
}
// 电能质量问题审核
export function checkPowerQuality(data) {
return createAxios({
url: '/process-boot/electricityQuality/checkPowerQuality',
method: 'POST',
data
})
}

View File

@@ -0,0 +1,100 @@
import createAxios from '@/utils/request'
//新增-修改普测计划
export function getTerminalPage(data) {
return createAxios({
url: '/process-boot/process/pmsTerminalDetection/getTerminalPage',
method: 'post',
data
})
}
//导出终端入网检测录入模板
export function DownloadExport() {
return createAxios({
url: '/process-boot/process/pmsTerminalDetection/export',
method: 'GET',
responseType: 'blob'
})
}
//终端检测监督删除
export function delTerminal(data) {
return createAxios({
url: '/process-boot/process/pmsTerminalDetection/delTerminal',
method: 'post',
data
})
}
//终端检测监督单条新增
export function insertTerminal(data) {
return createAxios({
url: '/process-boot/process/pmsTerminalDetection/insertTerminal',
method: 'post',
data
})
}
//终端检测监督修改
export function updateTerminal(data) {
return createAxios({
url: '/process-boot/process/pmsTerminalDetection/updateTerminal',
method: 'post',
data
})
}
//检测报告下载
export function reportDownload(params) {
return createAxios({
url: '/process-boot/process/pmsTerminalDetection/reportDownload',
method: 'get',
params,
responseType: 'blob'
})
}
//终端入网检测台账统计
export function getStatistics(data) {
return createAxios({
url: '/process-boot/process/pmsTerminalDetection/getStatistics',
method: 'post',
data
})
}
//终端入网检测台账统计
export function getCycleStatistics(data) {
return createAxios({
url: '/process-boot/process/pmsTerminalDetection/getCycleStatistics',
method: 'post',
data
})
}
//批量导入检测报告
export function importReport(data) {
return createAxios({
url: '/process-boot/process/pmsTerminalDetection/importReport',
method: 'post',
data,
responseType: 'blob'
})
}
//批量导入终端入网检测录入
export function batchTerminal(file) {
let form = new FormData()
form.append('file', file)
return createAxios({
url: '/process-boot/process/pmsTerminalDetection/batchTerminal',
method: 'post',
data: form
})
}
// 上传文件
export function upload(file) {
let form = new FormData()
form.append('file', file)
return createAxios({
url: '/process-boot/process/pmsTerminalDetection/upload',
method: 'POST',
data: form
})
}

View File

@@ -142,10 +142,11 @@ defineExpose({
border-right: 1px solid #e4e7e9;
border-bottom: 1px solid #e4e7e9;
}
::v-deep .el-pagination__sizes {
:deep(.el-pagination__sizes) {
.el-select {
min-width: 128px;
}
}
</style>
@/components/table/column/GroupColumn.vue@/components/table/column/GroupColumn.vue
<!-- @/components/table/column/GroupColumn.vue@/components/table/column/GroupColumn.vue -->

View File

@@ -69,6 +69,27 @@ body,
background: #fff;
margin: var(--ba-main-space) var(--ba-main-space) 0px var(--ba-main-space);
}
.form-style {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.el-form-item {
display: flex;
width: 48%;
.el-form-item__content {
flex: 1;
.el-select {
width: 100%;
}
.el-input__inner {
width: 100%;
}
.el-date-editor {
width: 100%;
}
}
}
}
.zoom-handle {
position: absolute;

View File

@@ -57,7 +57,7 @@ const layout = mainHeight(123) as any
width: 100%;
height: 500px;
}
::v-deep(.el-tabs__content) {
:deep(.el-tabs__content) {
height: v-bind('layout.height');
overflow-y: auto;
}

View File

@@ -496,10 +496,10 @@ const handleNodeClick = (data: any, node: any) => {
right: 10px;
}
}
::v-deep .vxe-table--header thead tr:first-of-type th:first-of-type {
:deep(.vxe-table--header thead tr:first-of-type th:first-of-type) {
background: #f8f8f9;
}
::v-deep .vxe-table--header thead tr:first-of-type th:first-of-type:before {
:deep(.vxe-table--header thead tr:first-of-type th:first-of-type:before) {
content: '';
position: absolute;
width: 1px;
@@ -512,7 +512,7 @@ const handleNodeClick = (data: any, node: any) => {
transform: rotate(-66deg); /*这里需要自己调整,根据线的位置*/
transform-origin: top;
}
::v-deep .vxe-table--header thead tr:last-of-type th:first-of-type:before {
:deep(.vxe-table--header thead tr:last-of-type th:first-of-type:before) {
content: '';
position: absolute;
width: 1px;

View File

@@ -226,10 +226,10 @@ const handleClose = () => {
</script>
<style lang="scss" scoped>
::v-deep .vxe-table--header thead tr:first-of-type th:first-of-type {
:deep(.vxe-table--header thead tr:first-of-type th:first-of-type) {
background: #f8f8f9;
}
::v-deep .vxe-table--header thead tr:first-of-type th:first-of-type:before {
:deep(.vxe-table--header thead tr:first-of-type th:first-of-type:before) {
content: '';
position: absolute;
width: 1px;
@@ -242,7 +242,7 @@ const handleClose = () => {
transform: rotate(-66deg); /*这里需要自己调整,根据线的位置*/
transform-origin: top;
}
::v-deep .vxe-table--header thead tr:last-of-type th:first-of-type:before {
:deep(.vxe-table--header thead tr:last-of-type th:first-of-type:before) {
content: '';
position: absolute;
width: 1px;

View File

@@ -3,7 +3,7 @@
<el-divider content-position="left">第一步 基本信息填报</el-divider>
<el-form :inline="true" ref="ruleForm" :rules="rules" :model="addData">
<el-form-item label="所属单位">
<Area ref="areaRef" v-model="addData.orgName" disabled />
<Area ref="areaRef" v-model="addData.orgNo" disabled />
</el-form-item>
<el-form-item label="问题来源" prop="problemSources">
@@ -30,7 +30,7 @@
</el-dialog>
<!-- 新增第二步(在线监测超标问题新增) -->
<el-dialog title="在线监测超标问题新增" v-model="onlineAdd" width="70%" :before-close="handleClose">
<el-divider content-position="left">第二步 选择问题测点(请选择需要生成问题的告警监测点)</el-divider>
<el-divider content-position="left">第二步 选择问题测点</el-divider>
<el-form :inline="true" class="form">
<el-form-item label="告警时间">
<DatePicker ref="DateRef" />
@@ -56,9 +56,7 @@
<!-- 新增第二步(普测超标问题新增) -->
<el-dialog title="普测超标问题新增" v-model="ordinaryAdd" width="70%" :before-close="handleClose">
<el-divider content-position="left">
第二步 选择普测计划及问题类型(请查找需要生成问题的普测计划并选择一条需要生成问题的测试线路)
</el-divider>
<el-divider content-position="left">第二步 选择普测计划及问题类型</el-divider>
<el-form :model="ordinaryA" :inline="true" class="form">
<el-form-item>
<Area v-model="ordinaryA.orgNo"></Area>
@@ -129,10 +127,8 @@
</el-dialog>
<!-- 新增第二步(运维异常问题新增) -->
<el-dialog title="运维异常问题新增" v-model="operationAdd" width="70%" :before-close="handleClose">
<el-divider content-position="left">
第二步 选择普测计划及问题类型(请查找需要生成问题的普测计划并选择一条需要生成问题的测试线路)
</el-divider>
<el-form :model="operationAdddata" :inline="true" :rules="rules">
<el-divider content-position="left">第二步 选择普测计划及问题类型</el-divider>
<el-form :model="operationAdddata" ref="operationAddRef" :inline="true" :rules="rules">
<el-form-item label="异常设备名称:" prop="abnormalDevName">
<el-input
v-model="operationAdddata.abnormalDevName"
@@ -187,7 +183,7 @@
<!-- 新增第二步(用户投诉问题新增) -->
<el-dialog title="用户投诉问题新增" v-model="userAdd" width="70%" :before-close="handleClose">
<el-divider content-position="left">第二步 选择投诉用户(请精确查找用户户号并选中投诉用户)</el-divider>
<el-divider content-position="left">第二步 选择投诉用户</el-divider>
<el-form :model="userA" :inline="true" :rules="rules">
<el-form-item label="用户类型:">
<el-select v-model="userA.userType" placeholder="请选择用户类型">
@@ -286,42 +282,18 @@ const problemData = dictData.getBasicData('Problem_Sources')
const alarmList = dictData.getBasicData('alarm_Type')
const Voltage = dictData.getBasicData('Dev_Voltage')
const userTypeData = dictData.getBasicData('User_Category')
// const steadyStateList = dictData.getBasicData('Steady_Indicator')
// const transientIndicatorsList = dictData.getBasicData('Transient_Indicators')
import {
getAllAlarmDetailList,
querySurveyPlanName,
querySurveyPlanOnQuestion,
getGenerateElectricityUserList,
getPowerUtilizationUserList,
addAbnormalIssues
} from '@/api/process-boot/electricitymanagement'
import { ElMessage } from 'element-plus'
const steadyStateList = dictData.getBasicData('Steady_Indicator')
const transientIndicatorsList = dictData.getBasicData('Transient_Indicators')
const steadyStateList = [
{
name: '负序电压不平衡度',
id: '137d08f4f29d4f781b0d2a8fabbd3c5c',
code: 'Negative_Voltage',
value: null,
sort: 5
},
{
name: '间谐波电压',
id: '218da5cb747413d4cf92e2b37651e13f',
code: 'Interhar_Voltage',
value: null,
sort: 4
},
{ name: '负序电流', id: '396c27f91281fbd41f93fe034038aa52', code: 'Neg_Current', value: null, sort: 6 },
{ name: '频率偏差', id: '74a3943e802ed7fa4252887788682818', code: 'Fre_Deviation', value: null, sort: 0 },
{ name: '电压偏差', id: '8ff1545d3bacee9c0f834901cebcbd23', code: 'Voltage_Dev', value: null, sort: 1 },
{ name: '谐波电流', id: '9177bf292f22f8c27f1ceeeceaea7000', code: 'Har_Current', value: null, sort: 3 },
{
name: '电压波动与闪变',
id: '9267dfbe8a6eac561e29d8377e159c3c',
code: 'Voltage_Fluc',
value: null,
sort: 7
},
{ name: '谐波电压', id: 'ef42e7cb71b667bb06a5c10e1bdb27de', code: 'Har_Voltage', value: null, sort: 2 }
]
const transientIndicatorsList = [
{ name: '电压暂降', id: '2eee1cb8c62b8e1bef3992e3f4d0c95b', code: 'Voltage_Sag', value: null, sort: 0 },
{ name: '短时中断', id: '9ab8c44a757f3c5e86f4ac10905496a8', code: 'Interruptions', value: null, sort: 2 },
{ name: '电压暂升', id: 'a25ff36c30155699288256960bc22eb9', code: 'Voltage_Rises', value: null, sort: 1 }
]
const add = ref(true)
const onlineAdd = ref(false)
const isLoading1 = ref(false)
@@ -333,16 +305,18 @@ const userAdd = ref(false)
const operationAdd = ref(false)
const ruleForm = ref()
const DateRef = ref()
const operationAddRef = ref()
const xTableRef = ref()
const addData = ref({
orgName: dictData.state.area[0].id,
orgName: '',
problemSources: '',
problemName: '',
orgNo: ''
problemName: dictData.state.area[0].name,
orgNo: dictData.state.area[0].id
})
const ordinaryA = ref({
orgNo: '',
orgName: '',
planName: '',
planStartTime: '',
uploadTime: '',
@@ -402,6 +376,7 @@ const nextStep = () => {
}, 0)
} else if (addData.value.problemSources == 'General') {
ordinaryA.value.orgNo = dictData.state.area[0].id
ordinaryA.value.orgName = dictData.state.area[0].name
add.value = false
ordinaryAdd.value = true
@@ -437,11 +412,31 @@ const OnlineMonitoring = () => {
}
// 在线监测告警查询
const searchOnLine = () => {
// isLoading1.value = true
isLoading1.value = true
getAllAlarmDetailList({
startTime: DateRef.value.timeValue[0],
endTime: DateRef.value.timeValue[1]
}).then(res => {
isLoading1.value = false
onlineAddData.value = res.data
})
}
// 普通监测超标问题新增
const queryPlanName = () => {}
const searchFnExcessive = () => {}
const queryPlanName = () => {
querySurveyPlanName({
orgNo: ordinaryA.value.orgNo,
planStartTime: ordinaryA.value.planStartTime
}).then(res => {
planNameList.value = res.data
})
}
const searchFnExcessive = () => {
isLoading2.value = true
querySurveyPlanOnQuestion(ordinaryA.value).then(res => {
isLoading2.value = false
ordinaryAddData.value = res.data
})
}
// 普测超标生成问题
const GeneralSurvey = () => {}
const formatter = (row: any) => {
@@ -458,26 +453,38 @@ const formatter = (row: any) => {
}
}
// 运维异常问题新增
const generateAbnormal = () => {}
const generateAbnormal = () => {
operationAddRef.value.validate(valid => {
if (valid) {
addAbnormalIssues({
...operationAdddata.value,
...addData.value
})
ElMessage.success('新增成功!')
emit('handleClose')
emit('onSubmit')
}
})
}
//用户投诉问题
const searchFnComplain = () => {
// isLoading3.value = true
// userAddDataList.value=[]
// if (userA.value.userType == 'Elec_User') {
// // 发电用户
// showUserType.value = false
// getGenerateElectricityUserList({ id: userA.value.id }).then(res => {
// this.userAddDataList = res.data
// })
// } else {
// showUserType.value = true
// // 用电用户
// getPowerUtilizationUserList({ id: userA.value.id }).then(res => {
// this.userAddDataList = res.data
// })
// }
// this.isLoading3 = false
isLoading3.value = true
userAddDataList.value = []
if (userA.value.userType == 'Elec_User') {
// 发电用户
showUserType.value = false
getGenerateElectricityUserList({ id: userA.value.id }).then(res => {
userAddDataList.value = res.data
})
} else {
showUserType.value = true
// 用电用户
getPowerUtilizationUserList({ id: userA.value.id }).then(res => {
userAddDataList.value = res.data
})
}
isLoading3.value = false
}
// 用户投诉新增
const userAddProblem = () => {}

View File

@@ -0,0 +1,87 @@
<template>
<el-dialog title="详情" v-model="dialogVisible" width="70%" :before-close="handleClose">
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">问题基本信息</el-divider>
<el-form :model="addData" :inline="true" disabled label-width="120px">
<el-form-item label="所属单位:">
<el-input v-model="addData.orgName" clearable placeholder="请填写"></el-input>
</el-form-item>
<el-form-item label="问题名称:">
<el-input v-model="addData.problemName" clearable placeholder="请填写"></el-input>
</el-form-item>
<el-form-item label="问题编号:">
<el-input v-model="addData.powerQualityProblemNo" clearable placeholder="请填写"></el-input>
</el-form-item>
<el-form-item label="问题来源:">
<el-select v-model="addData.problemSources" placeholder="请选择">
<el-option
v-for="item in problemData"
:key="item.code"
:label="item.name"
:value="item.code"
></el-option>
</el-select>
</el-form-item>
<br />
<el-form-item label="异常设备名称:">
<el-input v-model="addData.abnormalDevName" clearable placeholder="请填写"></el-input>
</el-form-item>
<el-form-item label="发现异常时间:">
<el-input v-model="addData.abnormalDevTime" clearable placeholder="请填写"></el-input>
</el-form-item>
<br />
<el-form-item label="设备异常描述:" style="margin-top: 10px">
<el-input
type="textarea"
style="width: 400px"
:autosize="{ minRows: 2, maxRows: 4 }"
v-model="addData.eventDescription"
></el-input>
</el-form-item>
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">问题指标</el-divider>
<el-form-item label="稳态指标:" style="margin-top: 10px">
<el-checkbox-group v-model="addData.steadyIndicator" disabled>
<el-checkbox v-for="(item, ind) in steadyIndicatorList" :key="ind" :label="item.code">
{{ item.name }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<br />
<el-form-item label="暂态指标:" style="margin-top: 10px">
<el-checkbox-group v-model="addData.transientIndicators" disabled>
<el-checkbox v-for="(item, ind) in transientIndicatorsList" :key="ind" :label="item.code">
{{ item.name }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-form>
</el-dialog>
</template>
<script setup lang="ts">
import { ref, reactive } from 'vue'
import { getAbnormalDetail } from '@/api/process-boot/electricitymanagement'
import { useDictData } from '@/stores/dictData'
const dictData = useDictData()
const addData: any = ref({})
const dialogVisible: any = ref(false)
const problemData = dictData.getBasicData('Problem_Sources')
const steadyIndicatorList = dictData.getBasicData('Steady_Indicator')
const transientIndicatorsList = dictData.getBasicData('Transient_Indicators')
const open = (row: any) => {
const data = getAbnormalDetail(row.powerQualityProblemNo)
addData.value = data
// console.log('🚀 ~ open ~ data:', data)
dialogVisible.value = true
}
// 取消
const handleClose = () => {
dialogVisible.value = false
}
defineExpose({ open })
</script>
<style lang="scss" scoped></style>

View File

@@ -0,0 +1,165 @@
<template>
<el-dialog title="填报" v-model="dialogVisible" width="70%" :before-close="handleClose">
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">问题基本信息</el-divider>
<el-form :inline="true">
<el-form-item label="所属单位:">
<el-input v-model="addData.orgName" clearable placeholder="请填写" disabled></el-input>
</el-form-item>
<el-form-item label="问题来源:">
<el-select disabled v-model="addData.problemSources" placeholder="请选择">
<el-option
v-for="item in problemData"
:key="item.code"
:label="item.name"
:value="item.code"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="问题名称:">
<el-input v-model="addData.problemName" clearable placeholder="请填写" disabled></el-input>
</el-form-item>
<el-form-item label="问题编号:">
<el-input v-model="addData.powerQualityProblemNo" disabled clearable placeholder="请填写"></el-input>
</el-form-item>
</el-form>
<el-divider content-position="left" style="font-size: 18px; font-weight: bolder">填报流程</el-divider>
<el-steps :active="active" finish-status="success" simple>
<el-step>
<template #title><span @click="step(0)">原因分析</span></template>
</el-step>
<el-step>
<template #title><span @click="step(1)">计划整改措施</span></template>
</el-step>
<el-step>
<template #title><span @click="step(2)">实际采取措施</span></template>
</el-step>
<el-step>
<template #title><span @click="step(3)">成效分析</span></template>
</el-step>
</el-steps>
<!-- 原因分析 0 -->
<el-form :model="causeAnalysisData" v-if="control == 0" :rules="rules" ref="form" label-width="140px" class="form">
<el-form-item label="电网侧原因:" prop="reportProcessContentYyfx">
<el-checkbox-group v-model="causeAnalysisData.reportProcessContentYyfx">
<el-checkbox v-for="(item, ind) in CauseList" :key="ind" :label="item.code">
{{ item.name }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-divider></el-divider>
<el-form-item label="用户侧原因:" prop="userReportProcessContentYyfx">
<el-checkbox-group v-model="causeAnalysisData.userReportProcessContentYyfx">
<el-checkbox v-for="(item, ind) in userCauseList" :key="ind" :label="item.code">
{{ item.name }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-row v-if="addData.problemSources == '用户投诉' || addData.problemSources == '设备异常'">
<el-divider></el-divider>
<el-form-item label="电网侧受影响设备:" prop="powerGridAffectDev">
<el-checkbox-group v-model="causeAnalysisData.powerGridAffectDev">
<el-checkbox v-for="(item, ind) in powerGridAffectDevList" :key="ind" :label="item.code">
{{ item.name }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-divider></el-divider>
<el-form-item label="用户侧受影响设备:" prop="userAffectDev">
<el-checkbox-group v-model="causeAnalysisData.userAffectDev">
<el-checkbox v-for="(item, ind) in userAffectDevList" :key="ind" :label="item.code">
{{ item.name }}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-row>
<el-divider></el-divider>
<el-form-item label="事件描述:" prop="eventDescriptionYyfx">
<el-input
style="width: 400px"
:autosize="{ minRows: 2, maxRows: 4 }"
type="textarea"
placeholder="请输入内容"
v-model="causeAnalysisData.eventDescriptionYyfx"
></el-input>
</el-form-item>
<el-form-item class="item" label="原因分析报告:" style="margin-top: 10px" prop="fileNameYyfx">
<!-- <File ref="File" /> -->
</el-form-item>
</el-form>
<!-- 计划整改措施 1-->
<el-row :gutter="20"></el-row>
<div style="display: flex; justify-content: center; margin-top: 10px">
<el-button type="primary" class="ml20" @click="Submit">提交审核</el-button>
<el-button type="primary" class="ml20" @click="handleClose">取消</el-button>
</div>
</el-dialog>
</template>
<script setup lang="ts">
import { ref, reactive } from 'vue'
import { useDictData } from '@/stores/dictData'
const dictData = useDictData()
const addData: any = ref({})
const active = ref(1)
const control = ref()
const dialogVisible: any = ref(false)
const causeAnalysisData = ref({
reportProcessContentYyfx: [],
userReportProcessContentYyfx: [],
eventDescriptionYyfx: '',
fileNameYyfx: '', //原因分析报告文件名称
filePathYyfx: '', //原因分析报告文件路径
powerGridAffectDev: [],
userAffectDev: []
})
const rules = {
reportProcessContentYyfx: [{ required: true, message: '请选择', trigger: 'change' }],
userReportProcessContentYyfx: [{ required: true, message: '请选择', trigger: 'change' }],
eventDescriptionYyfx: [{ required: true, message: '请填写事件描述', trigger: 'blur' }],
powerGridAffectDev: [{ required: true, message: '请选择', trigger: 'change' }],
userAffectDev: [{ required: true, message: '请选择', trigger: 'change' }],
fileNameYyfx: [{ required: true, message: '请上传文件', trigger: 'blur' }]
}
// 电网侧原因
const CauseList = dictData.getBasicData('Grid-side_Reasons')
// 用户侧原因
const userCauseList = dictData.getBasicData('User_Reasons')
// 电网侧受影响设备
const powerGridAffectDevList = dictData.getBasicData('Grid_Unit')
// 用户侧受影响设备
const userAffectDevList = dictData.getBasicData('Customer_Unit')
const OnlineList = dictData.getBasicData('Problem_Sources')
const problemData = dictData.getBasicData('Problem_Sources')
const open = (row: any) => {
dialogVisible.value = true
addData.value = row
}
const step = (e: number) => {
if (active.value >= e) {
control.value=e
}
}
// 提交
const Submit = () => {}
// 取消
const handleClose = () => {
dialogVisible.value = false
}
defineExpose({ open })
</script>
<style lang="scss" scoped></style>

View File

@@ -2,57 +2,59 @@
<TableHeader area datePicker ref="TableHeaderRef">
<template #select>
<el-form-item label="问题来源">
<el-select v-model="tableStore.table.params.searchState1" placeholder="请选择问题来源">
<el-select v-model="tableStore.table.params.problemSources" placeholder="请选择问题来源">
<el-option
v-for="item in uploadData"
v-for="item in problemData"
:key="item.id"
:label="item.label"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="填报进度">
<el-select v-model="tableStore.table.params.searchState2" placeholder="请选择填报进度">
<el-select v-model="tableStore.table.params.reportProcess" placeholder="请选择填报进度">
<el-option
v-for="item in uploadData"
v-for="item in fillingProgress"
:key="item.id"
:label="item.label"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="审核状态">
<el-select v-model="tableStore.table.params.searchState3" placeholder="请选择审核状态">
<el-select v-model="tableStore.table.params.reportProcessStatus" placeholder="请选择审核状态">
<el-option
v-for="item in uploadData"
v-for="item in auditStatus"
:key="item.id"
:label="item.label"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="问题名称">
<el-select v-model="tableStore.table.params.searchState4" placeholder="请输入问题名称">
<el-option
v-for="item in uploadData"
:key="item.id"
:label="item.label"
:value="item.id"
></el-option>
</el-select>
<el-input
v-model="tableStore.table.params.problemName"
clearable
placeholder="请填写问题名称"
style="width: 100%"
></el-input>
</el-form-item>
</template>
<template #operation>
<el-button icon="el-icon-Plus" type="primary" @click="add">新增</el-button>
<el-button icon="el-icon-EditPen" type="primary">填报</el-button>
<!-- <el-button icon="el-icon-EditPen" type="primary" @click="filling">填报</el-button> -->
<el-button icon="el-icon-Delete" type="primary">删除</el-button>
<el-button icon="el-icon-SuccessFilled" type="primary">归档</el-button>
<el-button icon="el-icon-PieChart" type="primary">历史审核记录</el-button>
<!-- <el-button icon="el-icon-SuccessFilled" type="primary">归档</el-button>
<el-button icon="el-icon-PieChart" type="primary">历史审核记录</el-button> -->
</template>
</TableHeader>
<Table ref="tableRef" />
<!-- 新增 -->
<NewlyAdd v-if="showNewlyAdded" @handleClose="handleClose" @onSubmit="onSubmit" />
<NewlyAdd v-if="showNewlyAdded" @handleClose="handleClose" @onSubmit="onSubmit" />
<!-- 填报 -->
<Filling ref="FillingRef" />
<!-- 详情 -->
<Detail ref="detailRef" />
</template>
<script setup lang="ts">
import { ref, onMounted, provide, nextTick } from 'vue'
@@ -60,28 +62,23 @@ import TableStore from '@/utils/tableStore'
import Table from '@/components/table/index.vue'
import TableHeader from '@/components/table/header/index.vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { mainHeight } from '@/utils/layout'
import { deleteIssues } from '@/api/process-boot/electricitymanagement'
import { useDictData } from '@/stores/dictData'
import NewlyAdd from './NewlyAdd.vue'
import Filling from './filling.vue'
import Detail from './detail.vue'
const dictData = useDictData()
const uploadData = [
{
id: 0,
label: '未上传'
},
{
id: 1,
label: '已上传'
}
]
const FillingRef = ref()
const showNewlyAdded = ref(false)
const TableHeaderRef = ref()
const ruleFormRef = ref()
const tableStore:any = new TableStore({
url: '/system-boot/area/areaSelect',
const detailRef = ref()
const problemData = dictData.getBasicData('Problem_Sources')
const fillingProgress = dictData.getBasicData('Fill_Progress')
const auditStatus = dictData.getBasicData('Audit_Status')
const tableStore: any = new TableStore({
url: '/process-boot/electricityQuality/getIssues',
publicHeight: 65,
method: 'POST',
column: [
@@ -102,8 +99,20 @@ const tableStore:any = new TableStore({
{ field: 'powerQualityProblemNo', title: '问题编号' },
{ field: 'problemName', title: '问题名称' },
{ field: 'dataDate', title: '问题新建时间' },
{ field: 'reportProcess', title: '填报进度' },
{ field: 'reportProcessStatus', title: '审核状态' },
// {
// field: 'reportProcess',
// title: '填报进度',
// formatter: (row: any) => {
// return fillingProgress.filter(item => item.code == row.cellValue)[0]?.name
// }
// },
// {
// field: 'reportProcessStatus',
// title: '审核状态',
// formatter: (row: any) => {
// return auditStatus.filter(item => item.code == row.cellValue)[0]?.name
// }
// },
{
title: '详情',
width: '120',
@@ -113,41 +122,115 @@ const tableStore:any = new TableStore({
name: 'edit',
title: '查看',
type: 'primary',
disabled: row => {
return row.reportProcess != 'Not_Reported' && row.reportProcess != 'Archived'
},
// disabled: row => {
// return row.reportProcess != 'Not_Reported' && row.reportProcess != 'Archived'
// },
icon: 'el-icon-Plus',
render: 'basicButton',
click: async row => {}
click: async row => {
detailRef.value.open(row)
}
},
{
name: 'del',
text: '删除',
type: 'danger',
icon: 'el-icon-Delete',
render: 'confirmButton',
popconfirm: {
confirmButtonText: '确认',
cancelButtonText: '取消',
confirmButtonType: 'danger',
title: '确定删除?'
},
click: row => {
deleteIssues(row.powerQualityProblemNo).then(() => {
ElMessage.success('删除成功')
tableStore.index()
})
}
}
]
}
],
loadCallback: () => {
tableStore.table.data = [
{
status: 2
}
]
}
]
})
tableStore.table.params.searchState1 = ''
tableStore.table.params.searchState2 = ''
tableStore.table.params.searchState3 = ''
tableStore.table.params.searchState4 = ''
tableStore.table.params.orgNo = dictData.state.area[0].id
tableStore.table.params.problemName = ''
tableStore.table.params.problemSources = ''
tableStore.table.params.reportProcess = ''
tableStore.table.params.reportProcessStatus = ''
provide('tableStore', tableStore)
onMounted(() => {
tableStore.index()
TableHeaderRef.value.setDatePicker([
{ label: '年', value: 1 },
{ label: '季', value: 2 },
{ label: '月', value: 3 }
])
setTimeout(() => {
tableStore.table.params.dataType = TableHeaderRef.value.datePickerRef.interval
tableStore.table.params.dataDate = TableHeaderRef.value.datePickerRef.timeValue[0]
tableStore.index()
}, 100)
})
// 新增
const add = () => {
showNewlyAdded.value = true
}
const onSubmit = () => {
console.log(123)
tableStore.index()
}
// 填报
const filling = () => {
if (tableStore.table.selection.length == 1) {
FillingRef.value.open(tableStore.table.selection[0])
if (tableStore.table.selection[0].reportProcess == 'Not_Reported') {
// 原因分析
// this.showCauseAnalysisJP = true
// setTimeout(() => {
// this.$refs.CauseAnalysisJP.causeAnalysis = true
// }, 0)
} else if (
tableStore.table.selection[0].reportProcess == 'Cause_Analysis' &&
tableStore.table.selection[0].reportProcessStatus == 'Success'
) {
// 计划整改措施
// this.showPlannedRectification = true
// setTimeout(() => {
// this.$refs.PlannedRectification.rectificationMeasures = true
// }, 0)
} else if (
tableStore.table.selection[0].reportProcess == 'Plan_Measures' &&
tableStore.table.selection[0].reportProcessStatus == 'Success'
) {
// 实际采取措施
// this.showActualMeasures = true
// setTimeout(() => {
// this.$refs.ActualMeasures.rectificationMeasures = true
// }, 0)
} else if (
tableStore.table.selection[0].reportProcess == 'Actual_Measures' &&
tableStore.table.selection[0].reportProcessStatus == 'Success'
) {
// 成效分析
// this.showEffectiveness = true
// setTimeout(() => {
// this.$refs.Effectiveness.effectivenessAnalysis = true
// }, 0)
} else if (
tableStore.table.selection[0].reportProcess == 'Insights' &&
tableStore.table.selection[0].reportProcessStatus == 'Success'
) {
ElMessage.warning('填报已结束,无需填报!')
} else {
ElMessage.warning('审核未通过,不能进行填报!')
}
} else {
ElMessage.warning('请选择1条数据,进行填报!')
}
}
// 关闭弹框
const handleClose = () => {

View File

@@ -31,7 +31,7 @@ const layout = mainHeight(63) as any
width: 100%;
height: 500px;
}
::v-deep(.el-tabs__content) {
:deep(.el-tabs__content) {
height: v-bind('layout.height');
overflow-y: auto;
}

View File

@@ -35,7 +35,7 @@ const layout = mainHeight(63) as any
width: 100%;
height: 500px;
}
::v-deep(.el-tabs__content) {
:deep(.el-tabs__content) {
height: v-bind('layout.height');
overflow-y: auto;
}

View File

@@ -311,7 +311,7 @@ onMounted(() => {
</script>
<style scoped lang="scss">
::v-deep .el-upload-list__item {
:deep(.el-upload-list__item) {
width: 400px;
}
</style>

View File

@@ -34,7 +34,7 @@ const layout = mainHeight(63) as any
width: 100%;
height: 500px;
}
::v-deep(.el-tabs__content) {
:deep(.el-tabs__content) {
height: v-bind('layout.height');
overflow-y: auto;
}

View File

@@ -33,7 +33,7 @@ const layout = mainHeight(63) as any
width: 100%;
height: 500px;
}
::v-deep(.el-tabs__content) {
:deep(.el-tabs__content) {
height: v-bind('layout.height');
overflow-y: auto;
}

View File

@@ -1,5 +1,59 @@
<template>
<el-dialog v-model="dialogVisible" :title="title" style="width: 1040px">
<el-dialog v-model="dialogVisible" :title="title" style="width: 800px">
<el-form :model="form" :rules="rules" class="form-style" ref="elform" label-width="120px">
<el-form-item label="终端编号:" prop="id">
<el-input
clearable
:disabled="title == `修改`"
v-model="form.id"
placeholder="请输入终端编号"
></el-input>
</el-form-item>
<el-form-item label="终端名称:" prop="name">
<el-input clearable v-model="form.name" placeholder="请输入终端名称"></el-input>
</el-form-item>
<el-form-item label="送检单位:" prop="inspectionUnit">
<el-input clearable v-model="form.inspectionUnit" placeholder="请输入送检单位"></el-input>
</el-form-item>
<el-form-item label="检测时间:" prop="inspectionTime">
<el-date-picker
v-model="form.inspectionTime"
type="date"
value-format="YYYY-MM-DD"
placeholder="选择日期"
></el-date-picker>
</el-form-item>
<el-form-item label="安装位置:" prop="installPlace">
<el-input clearable v-model="form.installPlace" placeholder="请输入安装位置"></el-input>
</el-form-item>
<el-form-item label="生产厂家:" prop="manufacture">
<el-select v-model="form.manufacture" placeholder="请选择生产厂家" clearable class="select">
<el-option
v-for="item in manufactorList"
:key="item.id"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="原始数据报告:" prop="fileList">
<el-upload
v-model:file-list="form.fileList"
ref="uploadRef"
action=""
accept=".doc,.docx"
:limit="1"
:on-exceed="handleExceed"
:on-change="choose"
:auto-upload="false"
>
<template #trigger>
<el-button type="primary">上传文件</el-button>
</template>
</el-upload>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
@@ -9,18 +63,77 @@
</el-dialog>
</template>
<script setup lang="ts">
import { ref, reactive } from 'vue'
import { ref } from 'vue'
import { useDictData } from '@/stores/dictData'
import { upload, insertTerminal } from '@/api/process-boot/terminal'
import type { UploadInstance, UploadProps, UploadRawFile } from 'element-plus'
import { genFileId, ElMessage } from 'element-plus'
const emit = defineEmits(['onsubmit'])
const dictData = useDictData()
const manufactorList = dictData.getBasicData('Dev_Manufacturers')
const dialogVisible = ref(false)
const title = ref('')
const form = ref({
id: '',
inspectionUnit: '',
inspectionTime: '',
installPlace: '',
originalReport: '',
manufacture: '',
name: '',
originalName: '',
orgNo: dictData.state.area[0].id,
orgName: dictData.state.area[0].name,
fileList: []
})
const elform = ref()
const uploadRef = ref()
const rules = {
id: [{ required: true, message: '请输入终端编号', trigger: 'blur' }],
name: [{ required: true, message: '请输入终端名称', trigger: 'blur' }],
installPlace: [{ required: true, message: '请输入安装位置', trigger: 'blur' }],
inspectionUnit: [{ required: true, message: '请输入送检单位', trigger: 'blur' }],
inspectionTime: [{ required: true, message: '请选择时间', trigger: 'change' }],
manufacture: [{ required: true, message: '请选择生产厂家', trigger: 'change' }],
fileList: [{ required: true, message: '请选择文件', trigger: 'change' }]
}
const submit = () => {
elform.value.validate((valid: any) => {
if (title.value == '新增') {
insertTerminal(form.value).then(res => {
ElMessage.success('新增成功!')
dialogVisible.value = false
emit('onsubmit')
})
} else {
}
})
}
const submit = () => {}
// 上传报告
const handleExceed: UploadProps['onExceed'] = files => {
uploadRef.value!.clearFiles()
const file = files[0] as UploadRawFile
file.uid = genFileId()
uploadRef.value!.handleStart(file)
}
const choose = (e: any) => {
upload(e.raw).then(res => {
form.value.originalReport = res.data
})
}
const open = (row: any) => {
console.log(row)
title.value = row.title
dialogVisible.value = true
}
defineExpose({ open })
</script>
<style lang="scss" scoped></style>
<style lang="scss" scoped>
:deep(.el-upload-list__item) {
width: 400px;
}
</style>

View File

@@ -4,32 +4,41 @@
<TableHeader area ref="TableHeaderRef">
<template #select>
<el-form-item label="终端名称">
<el-select v-model="tableStore.table.params.searchState" placeholder="请选择终端名称">
<el-option
v-for="item in uploadData"
:key="item.id"
:label="item.label"
:value="item.id"
></el-option>
</el-select>
<el-input
v-model="tableStore.table.params.name"
clearable
placeholder="请输入终端名称"
></el-input>
</el-form-item>
<el-form-item label="生产厂家">
<el-select v-model="tableStore.table.params.searchStat1e" placeholder="请选择生产厂家">
<el-select
v-model="tableStore.table.params.manufacture"
placeholder="请选择生产厂家"
multiple
collapse-tags
clearable
class="select"
>
<el-option
v-for="item in uploadData"
v-for="item in manufactorList"
:key="item.id"
:label="item.label"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="检测结果">
<el-select v-model="tableStore.table.params.searchState3" placeholder="请输入检测结果">
<el-select
v-model="tableStore.table.params.testResults"
placeholder="请选择检测结果"
clearable
class="select"
>
<el-option
v-for="item in uploadData"
v-for="item in testResultsList"
:key="item.id"
:label="item.label"
:label="item.name"
:value="item.id"
></el-option>
</el-select>
@@ -40,14 +49,33 @@
<el-button icon="el-icon-Edit" type="primary">修改</el-button>
<el-button icon="el-icon-Delete" type="primary">删除</el-button>
<el-button icon="el-icon-Download" type="primary">导出</el-button>
<el-button icon="el-icon-Download" type="primary">下载模板</el-button>
<el-button icon="el-icon-Upload" type="primary">excel导入</el-button>
<el-button icon="el-icon-Download" type="primary" @click="Export">下载模板</el-button>
<!-- <el-button icon="el-icon-Upload" type="primary">excel导入</el-button> -->
<el-upload
ref="uploadRef"
action=""
accept=".xls"
:limit="1"
:on-change="choose"
:show-file-list="false"
:auto-upload="false"
>
<template #trigger>
<el-button
icon="el-icon-Upload"
type="primary"
style="margin-left: 12px; margin-right: 12px"
>
excel导入
</el-button>
</template>
</el-upload>
<el-button icon="el-icon-Upload" type="primary">上传原始报告</el-button>
</template>
</TableHeader>
<Table ref="tableRef" />
<!-- 新增 -->
<newlyIncreased ref="addRef" />
<newlyIncreased ref="addRef" @onsubmit="tableStore.index()" />
</div>
</div>
</template>
@@ -58,21 +86,19 @@ import Table from '@/components/table/index.vue'
import TableHeader from '@/components/table/header/index.vue'
import newlyIncreased from './add.vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { mainHeight } from '@/utils/layout'
import { DownloadExport, reportDownload, batchTerminal } from '@/api/process-boot/terminal'
import { useDictData } from '@/stores/dictData'
import { addUse, updateUse, removeUse } from '@/api/advance-boot/bearingCapacity'
const dictData = useDictData()
const uploadData = [
const manufactorList = dictData.getBasicData('Dev_Manufacturers')
const testResultsList = [
{
id: 0,
label: '未上传'
name: '未展开'
},
{
id: 1,
label: '已上传'
name: '已展开'
}
]
@@ -82,7 +108,7 @@ const addRef = ref()
const ruleFormRef = ref()
const tableStore = new TableStore({
url: '/system-boot/area/areaSelect',
url: '/process-boot/process/pmsTerminalDetection/getTerminalPage',
publicHeight: 85,
method: 'POST',
column: [
@@ -91,7 +117,13 @@ const tableStore = new TableStore({
{ field: 'orgName', title: '所属单位' },
{ field: 'id', title: '终端编号' },
{ field: 'name', title: '终端名称' },
{ field: 'manufacture', title: '生产厂家' },
{
field: 'manufacture',
title: '生产厂家',
formatter(row: any) {
return manufactorList.filter(item => item.id == row.cellValue)[0]?.name
}
},
{ field: 'installPlace', title: '安装位置' },
{ field: 'inspectionUnit', title: '送检单位' },
{ field: 'testResults', title: '检测结果' },
@@ -112,7 +144,9 @@ const tableStore = new TableStore({
disabled: row => {
return row.originalReport == null
},
click: row => {}
click: row => {
download(row, 0)
}
},
{
name: 'edit',
@@ -123,24 +157,20 @@ const tableStore = new TableStore({
disabled: row => {
return row.inspectionReport == null
},
click: row => {}
click: row => {
download(row, 1)
}
}
]
}
],
loadCallback: () => {
tableStore.table.data = [
{
status: 2
}
]
}
]
})
tableStore.table.params.searchState = ''
tableStore.table.params.searchValue = ''
tableStore.table.params.type = ''
tableStore.table.params.name = ''
tableStore.table.params.id = dictData.state.area[0].id
tableStore.table.params.testResults = ''
tableStore.table.params.manufacture = []
tableStore.table.params.type = 0
provide('tableStore', tableStore)
@@ -149,7 +179,47 @@ const add = () => {
title: '新增'
})
}
// 关闭弹窗查询
const onsubmit = () => {}
// 下载模版
const Export = () => {
DownloadExport().then(res => {
let blob = new Blob([res], {
type: 'application/vnd.ms-excel'
})
const url = window.URL.createObjectURL(blob)
const link = document.createElement('a') // 创建a标签
link.href = url
link.download = '终端入网检测录入模板' // 设置下载的文件名
document.body.appendChild(link)
link.click() //执行下载
})
}
// 下载报告
const download = (row: any, type: number) => {
reportDownload({
id: row.id,
type: type
}).then(res => {
let blob = new Blob([res], {
type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=UTF-8'
})
const url = window.URL.createObjectURL(blob)
const link = document.createElement('a') // 创建a标签
link.href = url
link.download = type == 1 ? row.inspectionName : row.originalName // 设置下载的文件名
document.body.appendChild(link)
link.click() //执行下载
})
}
// excel导入
const choose = (e: any) => {
batchTerminal(e.raw).then(res => {
console.log('🚀 ~ batchTerminal ~ res:', res)
})
}
onMounted(() => {
tableStore.index()
})

View File

@@ -43,7 +43,7 @@ const layout = mainHeight(63) as any
width: 100%;
height: 500px;
}
::v-deep(.el-tabs__content) {
:deep(.el-tabs__content) {
height: v-bind('layout.height');
overflow-y: auto;
}

View File

@@ -112,7 +112,7 @@ const layout = mainHeight(185) as any
const defaultMain = mainHeight(195) as any
</script>
<style lang="scss" scoped>
::v-deep(.el-tabs--left, ) {
:deep(.el-tabs--left, ) {
height: v-bind('layout.height');
}
.default-main {

View File

@@ -62,7 +62,7 @@ const layout = mainHeight(123) as any
width: 100%;
height: 500px;
}
::v-deep(.el-tabs__content) {
:deep(.el-tabs__content) {
height: v-bind('layout.height');
overflow-y: auto;
}

View File

@@ -79,7 +79,7 @@ const layout = mainHeight(123) as any
width: 100%;
height: 500px;
}
::v-deep(.el-tabs__content) {
:deep(.el-tabs__content) {
height: v-bind('layout.height');
overflow-y: auto;
}

View File

@@ -257,7 +257,7 @@ const positioningexport = () => {
}
</script>
<style scoped lang="scss">
::v-deep .el-pagination__sizes {
:deep .el-pagination__sizes {
.el-select {
min-width: 128px;
}

View File

@@ -253,7 +253,7 @@ const positioningexport = () => {
}
</script>
<style scoped lang="scss">
::v-deep .el-pagination__sizes {
:deep .el-pagination__sizes {
.el-select {
min-width: 128px;
}