Files
pqs-9100_client/frontend/src/views/home/components/table.vue

1056 lines
30 KiB
Vue
Raw Normal View History

2024-08-23 13:19:20 +08:00
<template>
2024-09-02 16:10:33 +08:00
<div class="table_info">
2024-11-29 13:45:48 +08:00
<!-- :request-api="getTableList" -->
2024-08-27 18:37:46 +08:00
<ProTable
ref="proTable"
:columns="columns"
:data='deviceData'
2024-08-27 18:37:46 +08:00
:init-param="initParam"
:data-callback="dataCallback"
@drag-sort="sortTable"
2024-12-04 21:36:12 +08:00
:default-sort="{ prop: 'check_State', order: 'ascending' }"
2024-09-02 16:10:33 +08:00
:stripe="true"
2024-11-25 21:11:10 +08:00
:pagination = "false"
2024-11-21 23:02:43 +08:00
:key="tableKey"
2024-11-25 21:11:10 +08:00
@selection-change='handleSelectionChange'
2024-08-27 18:37:46 +08:00
>
2024-12-02 14:11:09 +08:00
<!-- :height="tableHeight" -->
2024-09-02 16:10:33 +08:00
<!-- 表格 header 按钮 -->
<template #tableHeader="scope">
2024-12-02 14:11:09 +08:00
<el-form :model="form" :inline="true">
2024-12-04 21:36:12 +08:00
<el-form-item label="关键字">
<el-input v-model="form.search" placeholder="请输入设备名称、类型"></el-input>
2024-11-25 21:11:10 +08:00
</el-form-item>
2024-11-29 13:45:48 +08:00
<el-form-item label="检测状态" v-if="form.activeTabs != 3 && form.activeTabs != 5">
<el-select v-model="form.checkStatus" clearable>
2024-09-02 16:10:33 +08:00
<el-option
2024-12-04 21:36:12 +08:00
v-for="(item, index) in checkResultList"
2024-09-02 16:10:33 +08:00
:label="item.label"
:value="item.value"
:disabled="item.disabled"
2024-09-02 16:10:33 +08:00
:key="index"
2024-12-04 21:36:12 +08:00
v-show="shouldShowOption(item)"
2024-09-02 16:10:33 +08:00
></el-option>
</el-select>
</el-form-item>
2024-11-29 13:45:48 +08:00
<el-form-item label="检测结果">
<el-select v-model="form.checkResult" clearable>
<el-option
v-for="(item, index) in checkResultList"
:label="item.label"
:value="item.value"
:disabled="item.disabled"
:key="index"
2024-12-04 21:36:12 +08:00
v-show="shouldShowOption(item)"
2024-11-29 13:45:48 +08:00
></el-option>
</el-select>
</el-form-item>
<el-form-item label="报告状态" v-if="form.activeTabs != 0 && form.activeTabs != 4">
<el-select v-model="form.checkReportStatus" clearable>
2024-09-02 16:10:33 +08:00
<el-option
v-for="(item, index) in checkReportStatusList"
:label="item.label"
:value="item.value"
:disabled="item.disabled"
2024-09-02 16:10:33 +08:00
:key="index"
2024-12-04 21:36:12 +08:00
v-show="shouldShowOption(item)"
2024-09-02 16:10:33 +08:00
></el-option>
</el-select>
</el-form-item>
2024-11-29 13:45:48 +08:00
<!-- <el-form-item label="检测结果">
<el-select v-model="form.checkResult" clearable>
2024-09-02 16:10:33 +08:00
<el-option
v-for="(item, index) in checkResultList"
:label="item.label"
:value="item.value"
:disabled="item.disabled"
2024-09-02 16:10:33 +08:00
:key="index"
></el-option>
</el-select>
2024-11-29 13:45:48 +08:00
</el-form-item> -->
2024-09-02 16:10:33 +08:00
<el-form-item>
<el-button type="primary" :icon="Search" @click="handleSearch"
>查询</el-button
>
2024-11-29 13:45:48 +08:00
<el-button :icon="Delete" @click="handleRefresh"
>重置</el-button
>
2024-12-04 21:36:12 +08:00
<!-- :disabled='!scope.isSelected' -->
2024-09-02 16:10:33 +08:00
<el-button
type="primary"
:icon="Clock"
@click="handleTest('手动检测')"
2024-09-02 16:10:33 +08:00
v-if="form.activeTabs === 0"
2024-11-15 09:34:43 +08:00
>手动检测</el-button
2024-09-02 16:10:33 +08:00
>
2024-12-04 21:36:12 +08:00
<!-- :disabled='!scope.isSelected' -->
2024-09-02 16:10:33 +08:00
<el-button
type="primary"
:icon="ChatLineRound"
@click="handleTest('自动检测')"
v-if="form.activeTabs === 0"
2024-11-15 09:34:43 +08:00
>自动检测</el-button
2024-09-02 16:10:33 +08:00
>
<el-button type="primary" :icon="ChatLineSquare" @click="handleTest('不合格项复检')" v-if="form.activeTabs === 2"
>不合格项复检</el-button
>
<el-button type="primary" :icon="ChatDotSquare" @click="handleTest('全部复检')" v-if="form.activeTabs === 2"
>全部复检</el-button
2024-09-02 16:10:33 +08:00
>
2024-12-04 21:36:12 +08:00
<!-- :disabled='!scope.isSelected' -->
<el-button type="primary" :icon="Download" @click="handleTest('批量下载')" v-if="form.activeTabs === 3"
>报告下载</el-button
2024-11-29 13:45:48 +08:00
>
2024-12-04 21:36:12 +08:00
<!-- :disabled='!scope.isSelected' -->
<el-button type="primary" :icon="Postcard" @click="handleTest('批量生成')" v-if="form.activeTabs === 3"
>报告生成</el-button
>
2024-12-04 21:36:12 +08:00
<!-- :disabled="!scope.isSelected || scope.selectedList.filter((item) => item.check_State === '检测完成').length === 0" -->
<el-button type="primary" :icon="Notebook" @click="handleTest('批量归档')" v-if="form.activeTabs === 0"
>归档</el-button
2024-09-02 16:10:33 +08:00
>
2024-12-02 14:11:09 +08:00
<el-button type="primary" :icon="CirclePlus" @click="addDevice('设备新增')" v-if="form.activeTabs === 0"
>设备新增</el-button
>
2024-09-02 16:10:33 +08:00
</el-form-item>
</el-form>
</template>
2024-08-27 18:37:46 +08:00
<!-- 表格操作 -->
<template #operation="scope">
2024-08-27 18:37:46 +08:00
<el-button
type="primary"
2024-08-27 18:37:46 +08:00
link
:icon="View"
@click="openDrawer('查看', scope.row)"
2024-11-22 10:46:10 +08:00
v-if="form.activeTabs === 3 && form.activeChildTabs === 1"
>查看</el-button
>
2024-11-22 10:46:10 +08:00
<div class='cn-render-buttons' v-if="form.activeTabs === 3 && form.activeChildTabs === 0">
<el-dropdown trigger='click'>
2024-11-29 13:45:48 +08:00
<el-button link type='primary' :icon="Download" class='table-operate'>
2024-12-02 14:11:09 +08:00
<div class='table-operate-text'>报告下载</div>
</el-button>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item>Q/GDW 10650.2-2021 报告</el-dropdown-item>
<el-dropdown-item>Q/GDW 1650.2-2016 报告</el-dropdown-item>
<el-dropdown-item>GBT 19862-2016 报告</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</div>
<el-button
type="primary"
link
:icon="Postcard"
@click="openDrawer('生成', scope.row)"
v-if="form.activeTabs === 3"
2024-12-02 14:11:09 +08:00
>报告生成</el-button
>
2024-11-20 21:30:05 +08:00
<!-- <el-button
2024-11-15 09:34:43 +08:00
type="primary"
link
:icon="View"
@click="openDrawer('数据查看', scope.row)"
v-if="form.activeTabs === 4"
>数据查看</el-button
2024-11-20 21:30:05 +08:00
> -->
2024-11-15 09:34:43 +08:00
<el-button
2024-12-04 21:36:12 +08:00
:type="scope.row.check_State === '检测完成' ? 'primary' : 'info'"
link
:icon="Notebook"
@click="openDrawer('归档', scope.row)"
2024-11-29 13:45:48 +08:00
v-if="form.activeTabs === 0"
2024-12-02 14:11:09 +08:00
:disabled = "scope.row.check_State != '检测完成'"
>归档</el-button
2024-08-27 18:37:46 +08:00
>
<el-button
type="primary"
2024-08-27 18:37:46 +08:00
link
:icon="PieChart"
@click="openDrawer('检测数据查询', scope.row)"
v-if="form.activeTabs === 5"
>检测数据查询</el-button
>
<el-button
type="primary"
link
:icon="Switch"
@click="openDrawer('误差体系更换', scope.row)"
v-if="form.activeTabs === 5"
>误差体系更换</el-button
2024-08-27 18:37:46 +08:00
>
<!-- <el-button
2024-10-31 14:53:29 +08:00
dictType="primary"
2024-08-27 18:37:46 +08:00
link
:icon="Delete"
@click="deleteAccount(scope.row)"
>删除</el-button
> -->
</template>
2024-08-27 18:37:46 +08:00
</ProTable>
<!-- 检测过程对话框 -->
<testPopup
:visible="dialogFormVisible"
:formData="dialogForm"
:dialogTitle="dialogTitle"
@update:visible="dialogFormVisible = $event"
/>
<reportPopup
:visible="reportDialogVisible"
@update:visible="reportDialogVisible = $event"
></reportPopup>
<dataCheckPopup
:visible="dataCheckDialogVisible"
@update:visible="dataCheckDialogVisible = $event"
></dataCheckPopup>
<dataCheckChangeErrSysPopup
:visible="dataCheckChangeErrSysDialogVisible"
@update:visible="dataCheckChangeErrSysDialogVisible = $event"
></dataCheckChangeErrSysPopup>
2024-11-22 13:27:41 +08:00
<matchPopup
:visible="matchDialogVisible"
@update:visible="matchDialogVisible = $event"
></matchPopup>
2024-08-23 13:19:20 +08:00
</div>
</template>
2024-08-27 18:37:46 +08:00
<script setup lang="tsx" name="useProTable">
import { useRouter } from "vue-router";
2024-11-18 09:02:57 +08:00
import type { Device } from '@/api/device/interface/device'
2024-08-27 18:37:46 +08:00
import { useHandleData } from "@/hooks/useHandleData";
import { ElMessage, ElMessageBox, ElLoading} from "element-plus";
2024-08-27 18:37:46 +08:00
import ProTable from "@/components/ProTable/index.vue";
import { type ProTableInstance, type ColumnProps } from '@/components/ProTable/interface'
2024-08-27 18:37:46 +08:00
import {
2024-12-02 14:11:09 +08:00
Search,View,Delete,Download,EditPen,Clock,ChatLineRound,ChatLineSquare,ChatDotSquare,Postcard,Notebook,Switch,PieChart,CirclePlus
2024-08-27 18:37:46 +08:00
} from "@element-plus/icons-vue";
import { getPlanList } from "@/api/plan/planList";
2024-11-18 09:02:57 +08:00
import deviceDataList from '@/api/device/device/deviceData'
import testPopup from "./testPopup.vue";
import reportPopup from "./reportPopup.vue";
import dataCheckPopup from "./dataCheckPopup.vue";
import dataCheckChangeErrSysPopup from "./dataCheckChangeErrSysPopup.vue";
2024-11-29 13:45:48 +08:00
2024-11-18 09:02:57 +08:00
import { reactive, ref } from "vue";
2024-11-21 23:02:43 +08:00
2024-12-04 21:36:12 +08:00
let devNum = 0;//当前选取的被检设备数量
let devChannelsNum = 0;//当前选择的被检设备通道总数
let devTestedNum = 0;//当前选择的已完成检测的被检设备数量
2024-11-21 23:02:43 +08:00
const tableKey = ref(0);
2024-08-27 18:37:46 +08:00
const router = useRouter();
const value1 = ref("");
const value2 = ref("");
const tableHeight = ref(0);
const dialogFormVisible = ref(false)
const reportDialogVisible = ref(false)
const dataCheckDialogVisible = ref(false)
const dataCheckChangeErrSysDialogVisible = ref(false)
2024-11-22 13:27:41 +08:00
const matchDialogVisible = ref(false)
const dialogTitle = ref('手动检测')
const dialogForm = ref<any>({
id: '',
name: '',
standard_Name:'',
standard_Time:'',
dev_Level:'',
enable:1,
state:1,
});
2024-12-04 21:36:12 +08:00
const shouldShowOption = (item) => {
console.log(item,12345)
return !item.disabled;
};
2024-11-14 18:26:34 +08:00
//console.log(window.innerHeight, "+++++++++");
2024-11-25 21:11:10 +08:00
tableHeight.value = window.innerHeight - 600;
2024-11-29 13:45:48 +08:00
//const deviceData = deviceDataList.plan_devicedata
const deviceData = ref([]);
deviceData.value = deviceDataList.plan_devicedata.filter((item) => item.document_State === "未归档")
const operationShow = ref(false);
2024-12-04 21:36:12 +08:00
const documentStateShow = ref(false);
const checkStateShow = ref(true);
2024-11-21 23:02:43 +08:00
const operationMinWidth = ref(200);
2024-12-04 21:36:12 +08:00
const selectionShow = ref(true);
2024-11-29 13:45:48 +08:00
2024-09-02 16:10:33 +08:00
//下拉框数据
//检测状态数据
let checkStatusList = reactive([
2024-09-02 16:10:33 +08:00
{
label: "未检测",
value: 0,
disabled: false,
2024-09-02 16:10:33 +08:00
},
{
label: "检测中",
value: 1,
disabled: false,
2024-09-02 16:10:33 +08:00
},
{
label: "检测完成",
value: 2,
disabled: false,
2024-09-02 16:10:33 +08:00
},
{
label: "归档",
value: 3,
disabled: false,
2024-09-02 16:10:33 +08:00
},
]);
2024-09-02 16:10:33 +08:00
//检测报告状态数据
let checkReportStatusList = reactive([
2024-11-29 13:45:48 +08:00
{
label: "未检测",
2024-09-02 16:10:33 +08:00
value: 0,
disabled: false,
2024-09-02 16:10:33 +08:00
},
{
2024-11-29 13:45:48 +08:00
label: "未生成",
2024-09-02 16:10:33 +08:00
value: 1,
disabled: false,
2024-09-02 16:10:33 +08:00
},
2024-11-29 13:45:48 +08:00
{
label: "已生成",
value: 2,
disabled: false,
},
]);
2024-09-02 16:10:33 +08:00
//检测结果数组
let checkResultList = reactive([
2024-09-02 16:10:33 +08:00
{
2024-11-29 13:45:48 +08:00
label: "未检测",
2024-09-02 16:10:33 +08:00
value: 0,
disabled: false,
2024-09-02 16:10:33 +08:00
},
{
2024-12-04 21:36:12 +08:00
label: "不合格",
2024-09-02 16:10:33 +08:00
value: 1,
disabled: false,
2024-09-02 16:10:33 +08:00
},
{
2024-12-04 21:36:12 +08:00
label: "合格",
2024-09-02 16:10:33 +08:00
value: 2,
disabled: false,
2024-09-02 16:10:33 +08:00
},
]);
2024-12-04 21:36:12 +08:00
2024-09-02 16:10:33 +08:00
//查询条件
const form: any = ref({
activeTabs: 0, //功能选择
2024-11-29 13:45:48 +08:00
search: "",//搜索内容
activeChildTabs: 0,//子功能选择
2024-11-29 13:45:48 +08:00
checkStatus: null, //检测状态
checkResult: null, //检测结果
checkReportStatus: null, //检测报告状态
2024-09-02 16:10:33 +08:00
deviceBindStatus: 0, //绑定状态
deviceType: 0, //设备类型
manufacturer: 0, //制造厂商
});
2024-08-27 18:37:46 +08:00
const searchForm = ref({
intervalType: 0,
time: ["2024-08-20", "2024-08-27"],
searchBeginTime: "",
searchEndTime: "",
checkStatus: 0,
checkReportStatus: 0,
checkResult: 0,
});
// ProTable 实例
const proTable = ref<ProTableInstance>();
2024-08-23 13:19:20 +08:00
2024-08-27 18:37:46 +08:00
// 如果表格需要初始化请求参数,直接定义传给 ProTable (之后每次请求都会自动带上该参数,此参数更改之后也会一直带上,改变此参数会自动刷新表格数据)
const initParam = reactive({ type: 1, pageNum: 1, pageSize: 10 });
// dataCallback 是对于返回的表格数据做处理,如果你后台返回的数据不是 list && total 这些字段,可以在这里进行处理成这些字段
// 或者直接去 hooks/useTable.ts 文件中把字段改为你后端对应的就行
const tableList = ref([]);
const dataCallback = (data: any) => {
return {
list: data || data.data || data.list,
total: data.length || data.total, //total
};
};
// 如果你想在请求之前对当前请求参数做一些操作可以自定义如下函数params 为当前所有的请求参数(包括分页),最后返回请求列表接口
// 默认不做操作就直接在 ProTable 组件上绑定 :requestApi="getUserList"
const getTableList = (params: any) => {
let newParams = JSON.parse(JSON.stringify(params));
newParams.createTime && (newParams.startTime = newParams.createTime[0]);
newParams.createTime && (newParams.endTime = newParams.createTime[1]);
delete newParams.createTime;
return getPlanList(newParams);
};
2024-08-27 18:37:46 +08:00
// 表格配置项
2024-12-04 21:36:12 +08:00
const columns = reactive([
{ type: 'selection', fixed: 'left', width: 70, isShow:selectionShow },
2024-12-02 14:11:09 +08:00
{ type: 'index', fixed: 'left', width: 70, label: '序号' },
{
prop: 'name',
label: '设备名称',
2024-12-04 21:36:12 +08:00
minWidth: 220,
2024-08-27 18:37:46 +08:00
},
{
prop: 'dev_Type',
label: '设备类型',
minWidth: 100,
2024-08-27 18:37:46 +08:00
},
{
prop: 'dev_Chns',
label: '通道数',
minWidth: 100,
2024-12-02 14:11:09 +08:00
sortable:true,
2024-08-27 18:37:46 +08:00
},
{
prop: 'reCheck_Num',
2024-12-04 21:36:12 +08:00
label: '检测次数',
minWidth: 100,
2024-12-02 14:11:09 +08:00
sortable:true,
2024-12-04 21:36:12 +08:00
// <template #header>
// <span>检测次数</span>
// <el-tooltip content = "最大检测次数为3次超过会强制归档" placement="top" style="align-items: bottom;">
// <el-icon><InfoFilled /></el-icon>
// </el-tooltip>
// </template>
2024-08-27 18:37:46 +08:00
},
{
2024-11-29 13:45:48 +08:00
prop: 'check_State',
label: '检测状态',
minWidth: 100,
2024-12-02 14:11:09 +08:00
sortable:true,
2024-12-04 21:36:12 +08:00
isShow:checkStateShow,
},
{
prop: 'check_Result',
label: '检测结果',
minWidth: 100,
2024-12-02 14:11:09 +08:00
sortable:true,
2024-12-04 21:36:12 +08:00
render: (scope) => {
if(scope.row.check_Result === '不合格')
{
return (
<el-tag type='danger'>{ scope.row.check_Result }</el-tag>
)
}
else
{
return (
<span>{ scope.row.check_Result }</span>
)
}
},
},
{
2024-11-29 13:45:48 +08:00
prop: 'report_State',
label: '报告状态',
minWidth: 100,
2024-12-02 14:11:09 +08:00
sortable:true,
},
{
prop: 'document_State',
label: '归档状态',
minWidth: 100,
2024-12-02 14:11:09 +08:00
sortable:true,
2024-12-04 21:36:12 +08:00
isShow: documentStateShow,
},
2024-11-14 18:26:34 +08:00
{ prop: 'operation', label: '操作', fixed: 'right', minWidth: 200 ,isShow: operationShow},
])
// const columns = reactive<ColumnProps<User.ResUserList>[]>([
// { type: "selection", fixed: "left", width: 70 },
// {
// prop: "checkMode",
// label: "设备序列号",
// width: 140,
// render: (scope) => {
// return scope.row.checkMode == 0
// ? "设备1"
// : scope.row.checkMode == 1
// ? "设备2"
// : scope.row.checkMode == 2
// ? "设备3"
// : scope.row.checkMode;
// },
// },
// {
// prop: "checkMode",
// label: "设备类型",
// width: 140,
// render: (scope) => {
// return scope.row.checkMode == 0
// ? "PQS991"
// : scope.row.checkMode == 1
// ? "PQS882"
// : scope.row.checkMode == 2
// ? "PQS6666"
// : scope.row.checkMode;
// },
// },
// {
// prop: "checkFrom",
// label: "制造厂商",
// width: 140,
// render: (scope) => {
// return scope.row.checkFrom == 0
// ? "南京灿能"
// : scope.row.checkFrom == 1
// ? "南瑞继保"
// : scope.row.checkFrom == 2
// ? "/"
// : scope.row.checkFrom;
// },
// },
// {
// prop: "numberFromName",
// label: "MAC/IP",
// render: (scope) => {
// return scope.row.numberFromName == 0
// ? "192.168.0.1"
// : scope.row.numberFromName == 1
// ? "192.168.0.2"
// : scope.row.numberFromName == 2
// ? "192.168.0.3"
// : scope.row.numberFromName;
// },
// },
2024-08-27 18:37:46 +08:00
// {
// prop: "checkExe",
// label: "检测脚本",
// render: (scope) => {
// return scope.row.checkExe == 0
// ? "国网入网检测脚本(单影响量-模拟式)"
// : scope.row.checkExe == 1
// ? "国网入网检测脚本"
// : scope.row.checkExe == 2
// ? "/"
// : scope.row.checkExe;
// },
// },
// {
// prop: "wctx",
// label: "误差体系",
// render: (scope) => {
// return scope.row.wctx == 0
// ? "Q/GDW 1650.2- 2016"
// : scope.row.wctx == 1
// ? "Q/GDW 10650.2 - 2021"
// : scope.row.wctx == 2
// ? "/"
// : scope.row.wctx;
// },
// },
// {
// prop: "checkStatus",
// label: "检测状态",
// width: 120,
// render: (scope) => {
// return scope.row.checkStatus == 1
// ? "未检测"
// : scope.row.checkStatus == 2
// ? "检测中"
// : scope.row.checkStatus == 3
// ? "检测完成"
// : scope.row.checkStatus;
// },
// },
// {
// prop: "checkReport",
// label: "检测报告",
// width: 120,
// render: (scope) => {
// return scope.row.checkReport == 1
// ? "未生成"
// : scope.row.checkReport == 2
// ? "部分生成"
// : scope.row.checkReport == 3
// ? "全部生成"
// : scope.row.checkReport;
// },
// },
// {
// prop: "checkResult",
// label: "检测结果",
// width: 120,
// render: (scope) => {
// return scope.row.checkReport == 1
// ? "/"
// : scope.row.checkReport == 2
// ? "符合"
// : scope.row.checkReport == 3
// ? "不符合"
// : scope.row.checkReport;
// },
// },
// {
// prop: "parentNode",
// label: "父节点",
// width: 90,
// render: (scope) => {
// return scope.row.checkReport == 0
// ? "/"
// : scope.row.checkReport == 1
// ? "检测计划1"
// : scope.row.checkReport == 2
// ? "检测计划2"
// : scope.row.checkReport == 3
// ? "检测计划3"
// : scope.row.checkReport;
// },
// },
// { prop: "operation", label: "操作", fixed: "right", width: 250 },
// ]);
2024-09-02 16:10:33 +08:00
// 跳转详情页
const toDetail = () => {
router.push(
`/proTable/useProTable/detail/${Math.random().toFixed(3)}?params=detail-page`
);
};
2024-08-27 18:37:46 +08:00
//重置查询条件
const resetSearchForm = () => {
searchForm.value = {
intervalType: 0,
time: ["2024-08-20", "2024-08-27"],
searchBeginTime: "",
searchEndTime: "",
checkStatus: 0,
checkReportStatus: 0,
checkResult: 0,
};
};
2024-11-29 13:45:48 +08:00
let testType = "test";//检测还是复检
2024-12-04 21:36:12 +08:00
2024-11-25 21:11:10 +08:00
const handleSelectionChange = (selection: any[]) => {
2024-11-29 13:45:48 +08:00
2024-12-04 21:36:12 +08:00
devNum = selection.length;
2024-12-05 11:21:10 +08:00
devChannelsNum = 0;
2024-12-04 21:36:12 +08:00
for (let i = 0; i < selection.length; i++) {
devChannelsNum += selection[i].dev_Chns;
}
devTestedNum = selection.filter((item) => item.check_State === '检测完成').length;
const result = selection.filter((item) => item.check_Result != "不合格")
2024-11-29 13:45:48 +08:00
if(result.length > 0)
{
testType= "test";
}
else
{
testType= "reTest";
}
2024-11-25 21:11:10 +08:00
}
2024-11-29 13:45:48 +08:00
2024-08-27 18:37:46 +08:00
//查询
const handleSearch = () => {
2024-11-29 13:45:48 +08:00
if(form.value.activeTabs === 0 || form.value.activeTabs === 4)//设备检测、设备归档
{
deviceData.value = deviceDataList.plan_devicedata.filter((item) => item.document_State === "未归档")
}
else if(form.value.activeTabs === 3 || form.value.activeTabs === 5)//报告生成、数据查询
{
deviceData.value = deviceDataList.plan_devicedata.filter((item) => item.check_State === "检测完成");
}
//matchDialogVisible.value = true;
2024-11-22 13:27:41 +08:00
//proTable.value?.getTableList();
2024-08-27 18:37:46 +08:00
};
//重置
const handleRefresh = () => {
2024-11-29 13:45:48 +08:00
form.value.search = "";
form.value.checkStatus = null;
form.value.checkResult = null;
form.value.checkReportStatus = null;
if(form.value.activeTabs === 0 || form.value.activeTabs === 4)//设备检测、设备归档
{
deviceData.value = deviceDataList.plan_devicedata.filter((item) => item.document_State === "未归档")
}
else if(form.value.activeTabs === 3 || form.value.activeTabs === 5)//报告生成、数据查询
{
deviceData.value = deviceDataList.plan_devicedata.filter((item) => item.check_State === "检测完成");
}
2024-08-27 18:37:46 +08:00
};
// 表格拖拽排序
const sortTable = ({
newIndex,
oldIndex,
}: {
newIndex?: number;
oldIndex?: number;
}) => {
2024-11-14 18:26:34 +08:00
//console.log(newIndex, oldIndex);
//console.log(proTable.value?.tableData);
2024-08-27 18:37:46 +08:00
ElMessage.success("修改列表排序成功");
};
// 删除用户信息
const deleteAccount = async (params: User.ResUserList) => {
await useHandleData(
deleteUser,
{ id: [params.id] },
`删除【${params.username}`
2024-08-23 13:19:20 +08:00
);
2024-08-27 18:37:46 +08:00
proTable.value?.getTableList();
};
// 批量删除用户信息
const batchDelete = async (id: string[]) => {
await useHandleData(deleteUser, { id }, "删除所选用户信息");
proTable.value?.clearSelection();
proTable.value?.getTableList();
};
// 重置用户密码
const resetPass = async (params: User.ResUserList) => {
await useHandleData(
resetUserPassWord,
{ id: params.id },
`重置【${params.username}】用户密码`
);
proTable.value?.getTableList();
};
// 切换用户状态
const changeStatus = async (row: User.ResUserList) => {
await useHandleData(
changeUserStatus,
{ id: row.id, status: row.status == 1 ? 0 : 1 },
`切换【${row.username}】用户状态`
);
proTable.value?.getTableList();
};
2024-09-02 16:10:33 +08:00
//顶部功能切换时修改activeTabs
2024-11-29 13:45:48 +08:00
const changeActiveTabs = (val: number,val2: number,tabledata:any[]) => {
2024-09-02 16:10:33 +08:00
form.value.activeTabs = val;
form.value.activeChildTabs= val2;
2024-11-29 13:45:48 +08:00
deviceData.value = tabledata;
tableHeaderInit(val)
console.log(form,val,val2,666)
2024-09-02 16:10:33 +08:00
};
//根据当前功能,初始化表头下拉框中的默认值和禁用值
function tableHeaderInit(val: number) {
refreshStatusList()
2024-11-29 13:45:48 +08:00
switch (val) {
2024-11-29 13:45:48 +08:00
case 0://设备检测
case 1://手动检测
2024-11-29 13:45:48 +08:00
//disableCheckStatus("检测中")
disableCheckStatus("归档")
2024-11-29 13:45:48 +08:00
// operationShow.value = false;
columns[columns.length - 1].minWidth = 100;
tableKey.value ++;
operationShow.value = true;
2024-12-04 21:36:12 +08:00
documentStateShow.value = false;
checkStateShow.value = true;
selectionShow.value = true;
break;
case 2://设备复检
2024-11-29 13:45:48 +08:00
// form.value.checkStatus = 2;//检测状态默认为检测完成
// form.value.checkReportStatus = 0;//检测报告状态默认为未生成报告
// form.value.checkResult = 1;//检测结果默认为不合格
// disableCheckStatus("未检测")
// disableCheckStatus("检测中")
// disableCheckStatus("归档")
// disablecheckResultList("未出结果")
// operationShow.value = false;
break;
case 3://报告生成
2024-11-29 13:45:48 +08:00
// form.value.checkStatus = 2;//检测状态默认为检测完成
// form.value.checkReportStatus = 0;//检测报告状态默认为未生成报告
// form.value.checkResult = 2;//检测结果默认为合格
// disableCheckStatus("未检测")
// disableCheckStatus("检测中")
// disableCheckStatus("归档")
disablecheckResultList("未检测")
disableCheckReportStatus("未检测")
2024-12-02 14:11:09 +08:00
columns[columns.length - 1].minWidth = 180;
2024-11-21 23:02:43 +08:00
tableKey.value += 1;
operationShow.value = true;
2024-12-04 21:36:12 +08:00
documentStateShow.value = true;
checkStateShow.value = false;
selectionShow.value = true;
break;
case 4://设备归档
2024-11-29 13:45:48 +08:00
// form.value.checkStatus = 2;//检测状态默认为检测完成
// form.value.checkReportStatus = 1;//检测报告状态默认为已生成报告
// form.value.checkResult = 2;//检测结果默认为合格
// disableCheckStatus("未检测")
// disableCheckStatus("检测中")
// disableCheckStatus("归档")
disableCheckReportStatus("未生成报告")
disablecheckResultList("未出结果")
2024-11-21 23:02:43 +08:00
columns[columns.length - 1].minWidth = 100;
tableKey.value ++;
operationShow.value = true;
2024-12-04 21:36:12 +08:00
documentStateShow.value = true;
checkStateShow.value = false;
selectionShow.value = true;
break;
2024-11-21 23:02:43 +08:00
case 5://数据查询
2024-11-29 13:45:48 +08:00
disablecheckResultList("未检测")
disableCheckReportStatus("未检测")
2024-11-21 23:02:43 +08:00
columns[columns.length - 1].minWidth = 250;
operationShow.value = true;
2024-12-04 21:36:12 +08:00
documentStateShow.value = true;
checkStateShow.value = false;
selectionShow.value = false;
columns[0].isShow = false;
tableKey.value += 1;
break;
}
2024-11-21 23:02:43 +08:00
console.log("test",columns);
}
2024-11-29 13:45:48 +08:00
tableHeaderInit(0)
function refreshStatusList(){
2024-12-04 21:36:12 +08:00
// devNum = 0;
// devChannelsNum = 0;
// devTestedNum = 0;
devNum = 0;
devChannelsNum = 0;
devTestedNum = 0;
checkStatusList.map((item: any, index: any) => {
if (item.disabled) {
item.disabled = false;
}
});
checkReportStatusList.map((item: any, index: any) => {
if (item.disabled) {
item.disabled = false;
}
});
checkResultList.map((item: any, index: any) => {
if (item.disabled) {
item.disabled = false;
}
});
2024-11-29 13:45:48 +08:00
form.value.checkStatus = null;//检测状态默认为未检
form.value.checkReportStatus = null;//检测报告状态默认为未生成报告
form.value.checkResult = null;//检测结果默认为未出结果
}
function disableCheckStatus(val: string){
checkStatusList.map((item: any, index: any) => {
if (val == item.label) {
item.disabled = true;
}
});
}
function disableCheckReportStatus(val: string){
checkReportStatusList.map((item: any, index: any) => {
if (val == item.label) {
item.disabled = true;
}
});
}
function disablecheckResultList(val: string){
checkResultList.map((item: any, index: any) => {
if (val == item.label) {
item.disabled = true;
}
});
}
2024-12-02 14:11:09 +08:00
const addDevice = (val:string) => {
router.push({
path: "/machine/device",
});
};
const handleTest = (val:string) => {
2024-12-04 21:36:12 +08:00
if(devNum == 0)
{
ElMessageBox.confirm(
'请先选择被检设备',
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
)
return
}
2024-11-21 23:02:43 +08:00
if(val==='手动检测'||val==='自动检测'||val==='不合格项复检'||val==='全部复检' )
{
2024-12-04 21:36:12 +08:00
if(devNum > 6)
{
ElMessageBox.confirm(
'每次检测最多只能选择6台设备请重新选择',
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
)
return
}
if(devChannelsNum > 20)
{
ElMessageBox.confirm(
'每次检测最多只能检测20个设备通道请重新选择',
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
)
return
}
2024-11-29 13:45:48 +08:00
if(testType === "reTest")
{
ElMessageBox.confirm(
'请选择复检检测方式',
'设备复检',
{
distinguishCancelAndClose: true,
confirmButtonText: '不合格项复检',
cancelButtonText: '全部复检',
type: 'warning',
},
)
.then(() => {
2024-12-05 11:21:10 +08:00
ElMessage.success('不合格项复检');
dialogTitle.value = val;
dialogFormVisible.value = true; // 打开对话框
})
.catch((action: Action) => {
ElMessage.success('全部复检');
dialogTitle.value = val;
dialogFormVisible.value = true; // 打开对话框
2024-11-29 13:45:48 +08:00
})
}
else
{
ElMessage.success(val);
dialogTitle.value = val;
dialogFormVisible.value = true; // 打开对话框
}
2024-12-04 21:36:12 +08:00
return
2024-11-29 13:45:48 +08:00
2024-11-21 23:02:43 +08:00
}
2024-12-04 21:36:12 +08:00
if(devTestedNum == 0)
{
ElMessageBox.confirm(
'请先选择检测完成状态的被检设备',
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
)
return
}
2024-11-21 23:02:43 +08:00
if(val==='批量生成')
{
2024-12-04 21:36:12 +08:00
reportDialogVisible.value = true;
return
2024-11-21 23:02:43 +08:00
}
2024-12-05 11:21:10 +08:00
if(val==='批量归档')
2024-11-21 23:02:43 +08:00
{
const loading = ElLoading.service({
lock: true,
text: '归档中...',
background: 'rgba(0, 0, 0, 0.7)',
})
setTimeout(() => {
loading.close()
2024-12-05 11:21:10 +08:00
ElMessage.success("归档成功");
2024-11-21 23:02:43 +08:00
}, 2000)
2024-09-02 16:10:33 +08:00
}
};
// 打开 drawer(新增、查看、编辑)
const openDrawer = (title: string, row: any) => {
if (title === '查看')
{
console.log(title);
const link = document.createElement('a');
const fileUrl = 'G:/南网数研院非结构化数据生成程序MMS_JSON修改记录.docx'; // 文件路径
link.href = fileUrl;
link.target = '_blank'; // 在新标签页中打开
link.download = 'file.docx'; // 设置下载文件的名称
link.click();
}
if(title === '生成')
{
reportDialogVisible.value = true;
}
if(title === '检测数据查询')
{
dataCheckDialogVisible.value = true;
}
if (title === '误差体系更换')
{
dataCheckChangeErrSysDialogVisible.value = true;
}
if (title === '归档')
{
const loading = ElLoading.service({
lock: true,
text: '归档中...',
background: 'rgba(0, 0, 0, 0.7)',
})
setTimeout(() => {
loading.close()
ElMessage.success("归档成功");
}, 2000)
}
}
2024-08-27 18:37:46 +08:00
onMounted(() => {
2024-11-14 18:26:34 +08:00
//console.log(proTable.value?.tableData);
2024-08-23 13:19:20 +08:00
});
2024-09-02 16:10:33 +08:00
defineExpose({ changeActiveTabs });
2024-08-23 13:19:20 +08:00
</script>
<style lang="scss" scoped>
2024-09-02 16:10:33 +08:00
/* 当屏幕宽度小于或等于1300像素时 */
@media screen and (max-width: 1300px) {
.el-select {
width: 130px !important;
}
2024-08-23 13:19:20 +08:00
}
2024-09-02 16:10:33 +08:00
@media screen and (min-width: 1300px) {
.el-select {
width: 150px !important;
}
2024-08-27 18:37:46 +08:00
}
.el-form {
width: 100%;
display: flex;
flex-wrap: wrap;
.el-form-item {
display: flex;
align-items: center;
justify-content: space-between;
.el-button {
margin: 0 !important;
margin-right: 10px !important;
}
}
}
2024-08-23 13:19:20 +08:00
</style>