fix: BUG修改

This commit is contained in:
kun 2023-08-12 18:01:52 +08:00
parent 86ce08a4fb
commit c726db1c01
14 changed files with 322 additions and 48 deletions

View File

@ -93,10 +93,10 @@ onBeforeMount(async () => {
}
const res = await props.requestApi!();
console.log(res);
treeData.value = res?.result;
treeData.value = res || [];
// treeAllData.value = [{ id: "", [props.label]: "" }, ...result];
treeAllData.value = [...res.result];
treeAllData.value = res ? [...res] : [];
});
watch(filterText, val => {

View File

@ -45,7 +45,7 @@
<div class="form_div">
<el-form :model="form" :inline="true" @submit.prevent class="form" ref="FormRef">
<el-form-item label="监控名称">
<el-select class="select" v-model="form.code" placeholder="请输入">
<el-select class="select" v-model="form.code" placeholder="请选择">
<el-option v-for="item in nameList" :key="item.code" :label="item.name" :value="item.code" />
</el-select>
</el-form-item>
@ -69,20 +69,22 @@
<div class="imgPage">
<div class="imgTable">
<div class="img_item" v-for="item in questList.records" @click="onShowImg(item)" :key="item.id" v-if="qusLength.length">
<el-image style="width: 100%; height: 182px" :src="item.image" fit="fill" />
<div class="page_text flx-justify-column">
<div class="img_title">{{ item.typeName }}</div>
<div style="display: flex; justify-content: space-between">
<div style="font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis">
位置{{ item.deviceName }}
</div>
<div style="font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis">
报警时间{{ item.reportTime }}
<template v-if="questList.length">
<div class="img_item" v-for="item in questList" @click="onShowImg(item)" :key="item.id">
<el-image style="width: 100%; height: 182px" :src="item.image" fit="fill" />
<div class="page_text flx-justify-column">
<div class="img_title">{{ item.typeName }}</div>
<div style="display: flex; justify-content: space-between">
<div style="font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis">
设备名称{{ item.deviceName }}
</div>
<div style="font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis">
报警时间{{ item.reportTime }}
</div>
</div>
</div>
</div>
</div>
</template>
<div v-else class="table-empty">
<img src="@/assets/images/notData.png" alt="notData" />
<div>暂无数据</div>
@ -111,7 +113,7 @@
<div class="flx-justify-between">
<div class="flx-center">
<span class="img_diatitle m-10">{{ imgList.typeName }}</span>
<span class="img_text m-10">位置{{ imgList.deviceName }}</span>
<span class="img_text m-10">设备名称{{ imgList.deviceName }}</span>
<span class="img_text m-10">时间{{ imgList.createTime }}</span>
<span class="img_text m-10 flx-center"
><div :class="imgList.state === -1 ? 'pending' : 'complete'"></div>
@ -165,8 +167,6 @@ const imgVisible = ref(false);
const background = ref(true);
const visible = ref(false);
const qusLength = ref([]);
//
const searchName = ref<string>("");
@ -299,8 +299,8 @@ const handleCurrentChange = async (page: number) => {
pageSize: pageable.value.pageSize,
engineeringSn: searchSn.value
});
questList.value = res.result;
pageable.value.total = +questList.value.total;
questList.value = res.result.records;
pageable.value.total = +res.result.total;
};
const handleSizeChange = async (size: number) => {
@ -309,8 +309,8 @@ const handleSizeChange = async (size: number) => {
pageSize: size,
engineeringSn: searchSn.value
});
questList.value = res.result;
pageable.value.total = +questList.value.total;
questList.value = res.result.records;
pageable.value.total = +res.result.total;
};
//
const onRecord = () => {
@ -328,8 +328,8 @@ const onDatePicker = () => {
// form
const handSearch = async () => {
const res = await getAIQuestionPage({ ...form.value, ...pageable.value, engineeringSn: searchSn.value });
questList.value = res.result;
pageable.value.total = +questList.value.total;
questList.value = res.result.records;
pageable.value.total = +res.result.total;
};
// div
@ -339,8 +339,7 @@ const onSearch = async (params: ResAiProjectPage | ResAiEngineerPage) => {
pageNo: pageable.value.pageNo,
pageSize: pageable.value.pageSize
});
questList.value = res.result;
qusLength.value = res.result.records;
questList.value = res.result.records;
pageable.value.total = +res.result.total;
searchSn.value = (params as ResAiEngineerPage).engineeringSn;
searchName.value = (params as ResAiEngineerPage).engineeringName;

View File

@ -46,7 +46,7 @@
row-key="id"
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
>
<el-table-column align="left" prop="name" label="分部分项工程名称"></el-table-column>
<el-table-column align="left" prop="name" width="220" label="分部分项工程名称" show-overflow-tooltip></el-table-column>
<el-table-column align="center" prop="planStartTime" label="计划开始日期"></el-table-column>
<el-table-column align="center" prop="planEndTime" label="截止完成日期"></el-table-column>
<el-table-column align="center" prop="realEndTime" label="实际完成日期"></el-table-column>

View File

@ -23,7 +23,7 @@
</div>
</template>
</LeftMenu> -->
<div style="width: 100%;">
<div style="width: 100%">
<ProTable
ref="proTable"
title="设备列表"
@ -211,7 +211,7 @@ const columns: ColumnProps[] = [
search: { el: "input" }
},
{
prop: "dname",
prop: "brand",
label: "品牌"
},
{

View File

@ -80,6 +80,7 @@ watch(
const engApi = async () => {
const { result } = await getvideoEngTreeList({});
engTree.value.treeAllData = result;
return result;
};
//

View File

@ -70,13 +70,13 @@
<!-- </div> -->
<div class="imgPage">
<div class="imgTable" v-if="questList.records.length">
<div class="img_item" v-for="item in questList.records" @click="onShowImg(item)" :key="item.id">
<div class="imgTable" v-if="questList.length">
<div class="img_item" v-for="item in questList" @click="onShowImg(item)" :key="item.id">
<el-image style="width: 100%; height: 182px" :src="item.image" fit="fill" />
<div class="page_text flx-justify-column">
<div class="img_title">{{ item.typeName }}</div>
<div class="img_bottom">
<div class="position" style="font-size: 12px">位置{{ item.deviceName }}</div>
<div class="position" style="font-size: 12px">设备名称{{ item.deviceName }}</div>
<div style="font-size: 12px">报警时间{{ item.reportTime }}</div>
</div>
</div>
@ -109,7 +109,7 @@
<div class="flx-justify-between">
<div class="flx-center">
<span class="img_diatitle m-10">{{ imgList.typeName }}</span>
<span class="img_text m-10">位置{{ imgList.deviceName }}</span>
<span class="img_text m-10">设备名称{{ imgList.deviceName }}</span>
<span class="img_text m-10">时间{{ imgList.reportTime }}</span>
<span class="img_text m-10 flx-center">
<div :class="imgList.state === -1 ? 'pending' : 'complete'"></div>
@ -176,9 +176,7 @@ const pageable = ref({
const records = ref<ResAiProjectPage[] | ResAiEngineerPage[]>([]);
const questList = ref({
records: []
});
const questList = ref([]);
const form = ref({
code: "",
createTime: "",
@ -308,7 +306,7 @@ const handleCurrentChange = async (page: number) => {
}
);
console.log(result);
questList.value = result;
questList.value = result.records;
pageable.value.total = Number(result.total);
};
@ -332,8 +330,8 @@ const handSearch = async () => {
? { ...form.value, ...pageable.value, projectSn: searchSn.value }
: { ...form.value, ...pageable.value, engineeringSn: searchSn.value }
);
questList.value = res.result;
pageable.value.total = +questList.value.total;
questList.value = res.result.records;
pageable.value.total = +res.result.total;
};
// div
@ -347,7 +345,7 @@ const onSearch = async (params: ResAiProjectPage | ResAiEngineerPage) => {
pageSize: pageable.value.pageSize
}
);
questList.value = result;
questList.value = result.records;
pageable.value.total = Number(result.total);
active.value === 0
? (searchSn.value = (params as ResAiProjectPage).projectSn)

View File

@ -320,10 +320,12 @@ watch(
await getAIproPage();
await getproList();
onSearch(records.value[0]);
addMarker();
} else {
await getAIengPage();
await getengList();
onSearch(records.value[0]);
addMarker();
}
},
{
@ -346,13 +348,12 @@ function parse(val) {
onMounted(async () => {
await mapData();
getStatisticsList();
getproList();
await getAIproPage();
// getAiMonitorDev({ projectSn: projectPage.value.records[0].projectSn });
onSearch(records.value[0]);
// addMarker();
addMarker();
});
</script>

View File

@ -58,7 +58,7 @@
row-key="id"
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
>
<el-table-column align="center" prop="name" width="200" label="分部分项工程名称"></el-table-column>
<el-table-column align="left" prop="name" width="220" label="分部分项工程名称" show-overflow-tooltip></el-table-column>
<el-table-column align="center" prop="planStartTime" label="计划开始日期"></el-table-column>
<el-table-column align="center" prop="planEndTime" label="截止完成日期"></el-table-column>
<el-table-column align="center" prop="realEndTime" label="实际完成日期"></el-table-column>

View File

@ -310,6 +310,7 @@ const proApi = async () => {
const engApi = async () => {
const { result } = await getvideoEngTreeList({});
engTree.value.treeAllData = result;
return result;
};
const handleEditItem = (row: {

View File

@ -4,7 +4,7 @@
<div class="form-top">
<el-form :model="form" :inline="true" @submit.prevent class="form" ref="FormRef">
<el-form-item label="监控名称">
<el-select clearable class="select" v-model="form.code" placeholder="请输入">
<el-select clearable class="select" v-model="form.code" placeholder="请选择">
<el-option v-for="item in nameList" :key="item.code" :label="item.name" :value="item.code" />
</el-select>
</el-form-item>

View File

@ -0,0 +1,258 @@
<template>
<div class="overview">
<el-dialog :show-close="false" v-model="visible1" :style="dialogStyle" width="1305" @close="closeMain">
<template #title>
<div class="title-detail">
<span>{{ title }}</span>
<el-icon>
<close @click="closeMain" />
</el-icon>
</div>
</template>
<div class="detail-table">
<div class="content-title">验收计划</div>
<div class="content-button"><el-button class="addButtonStyle" @click="addPlan">新增</el-button></div>
<div class="table">
<el-table
:data="recordData"
class="el-table"
:row-style="{ height: '40px' }"
:header-cell-style="{ backgroundColor: '#F5F7FA', textAlign: 'center', height: '40px' }"
:cell-style="{ textAlign: 'center', height: '40px' }"
>
<el-table-column type="index" label="序号" width="100" />
<el-table-column prop="type1" label="类型">
<template #default="{ row }">
<el-input v-model="row.type1" v-if="!row.id" />
<span v-else>{{ row.type1 }}</span>
</template>
</el-table-column>
<el-table-column prop="type2" label="单体工程">
<template #default="{ row }">
<el-input v-model="row.type1" v-if="!row.id" />
<span v-else>{{ row.type1 }}</span>
</template>
</el-table-column>
<el-table-column prop="type3" label="计划验收时间" width="180">
<template #default="{ row }">
<el-date-picker
v-if="!row.id"
v-model="row.type3"
style="width: 100%"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
type="date"
placeholder="请选择"
/>
<span v-else>{{ row.type3 }}</span>
</template>
</el-table-column>
<el-table-column prop="type4" label="起始标识">
<template #default="{ row }">
<el-input v-model="row.type1" v-if="!row.id" />
<span v-else>{{ row.type1 }}</span>
</template>
</el-table-column>
<el-table-column prop="type5" label="截止标识">
<template #default="{ row }">
<el-input v-model="row.type1" v-if="!row.id" />
<span v-else>{{ row.type1 }}</span>
</template>
</el-table-column>
<el-table-column prop="type6" label="验收负责人">
<template #default="{ row }">
<el-input v-model="row.type1" v-if="!row.id" />
<span v-else>{{ row.type1 }}</span>
</template>
</el-table-column>
<el-table-column prop="type7" label="负责人电话">
<template #default="{ row }">
<el-input v-model="row.type1" v-if="!row.id" />
<span v-else>{{ row.type1 }}</span>
</template>
</el-table-column>
<el-table-column prop="type8" label="状态">
<template #default="{ row }">
<el-input v-model="row.type1" v-if="!row.id" />
<span v-else>{{ row.type1 }}</span>
</template>
</el-table-column>
<el-table-column prop="type9" label="备注">
<template #default="{ row }">
<el-input v-model="row.type1" v-if="!row.id" />
<span v-else>{{ row.type1 }}</span>
</template>
</el-table-column>
</el-table>
</div>
<!-- <div class="operation-btn" v-if="basicData?.state != 4">
<el-button type="info" style="margin-right: 98px">驳回,请尽快整改</el-button>
<el-button type="primary">整改完成,全部合格</el-button>
<el-button type="primary" @click="allSubmit">全部整改完成,提交审核</el-button>
</div> -->
</div>
</el-dialog>
</div>
</template>
<script lang="ts" setup>
import { onMounted, ref, watch, reactive } from "vue";
import { ElMessage, ElMessageBox } from "element-plus";
import type { FormInstance, UploadProps } from "element-plus";
import { relativeInfo, timeLineData, submitReform, submitAll } from "@/api/modules/project";
const baseUrl = import.meta.env.VITE_API_URL;
const props = defineProps({
dialogVisible: Boolean,
relativeId: String,
title: String
});
const emits = defineEmits(["update:dialogVisible", "confirm"]);
const visible1 = ref(false);
const transformDialog = ref(false); //
const recordData = ref<any>([]); //
const recordRowData = ref(); //
const basicData = ref(); //
const dialogStyle = ref({
"min-width": "824px"
});
const reformInfo = ref({
solveBy: "",
solveTime: "",
solveDesc: "",
solveImage: []
});
const addPlan = () => {
recordData.value.push({
type1: "",
type2: "",
type3: "",
type4: "",
type5: "",
type6: "",
type7: "",
type8: "",
type9: ""
});
};
//
const allSubmit = async () => {
const res = await submitAll({ id: basicData.value.id });
closeMain();
ElMessage.success("提交成功");
};
//
const closeMain = () => {
visible1.value = false;
transformDialog.value = false;
dialogStyle.value = {
"min-width": "824px",
transform: "translateX(0px)"
};
};
//
const getInfo = async () => {
const res = await relativeInfo({ id: props.relativeId });
basicData.value = res.result;
recordData.value = res.result.inspectQuestionList;
recordData.value.map(item => {
item.image = eval(item.image);
});
console.log(recordData);
};
const timelineList = ref([{ name: 1 }]);
//
const getTimeLineList = async () => {
const res = await timeLineData({ inspectQuestionId: recordRowData.value.id });
res.result.map(item => {
item.solveImage = eval(item.solveImage);
});
timelineList.value = res.result;
};
const auditVisible = ref(false);
// visibleel-dialog
watch(
() => props.dialogVisible,
(n, o) => {
visible1.value = n;
if (n) {
getInfo();
} else {
emits("confirm");
}
}
);
// el-dialog@update:visible
watch(visible1, (n, o) => {
emits("update:dialogVisible", n);
});
onMounted(() => {});
</script>
<style lang="scss" scoped>
@mixin fullwidth {
width: -webkit-fill-available;
width: -moz-available;
width: stretch;
}
@mixin flex {
display: flex;
align-items: center;
}
@mixin title {
font-size: 14px;
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
font-weight: 400;
color: #333333;
border-left: 2px solid #008bff;
padding-left: 5px;
}
.overview {
:deep() {
.el-dialog__body {
padding-top: 0;
padding-bottom: 0;
}
}
.title-detail {
@include flex;
border-left: 3px solid #0f81ff;
> span {
font-family: Source Han Sans CN-Regular, Source Han Sans CN;
font-weight: 400;
color: #333333;
margin-left: 12px;
margin-right: auto;
font-size: 18px;
}
:deep(.el-icon) {
cursor: pointer;
color: #a8abb2;
}
}
.detail-table {
height: 391px;
margin-top: 18px;
.content-title {
@include title;
}
.content-button {
@include flex;
justify-content: flex-end;
}
.table {
height: 310px;
margin-top: 20px;
:deep(.el-table) {
height: 100%;
}
}
.operation-btn {
display: flex;
align-items: center;
justify-content: center;
margin-top: 20px;
}
}
}
</style>

View File

@ -14,7 +14,7 @@
:initParam="initParam"
>
<template #formButton="scope">
<el-button class="addButtonStyle" @click="handleEditItem(1)">新增</el-button>
<el-button class="addButtonStyle" @click="handleAddItem(1)">新增</el-button>
</template>
<template #operation="{ row }">
<el-button type="primary" link @click="handleEditItem(2, row)">
@ -35,6 +35,12 @@
</template>
</ProTable>
</div>
<detailsDialog
v-model:dialogVisible="dialogVisible"
:title="newTitle"
:relativeId="relativeId"
@confirm="confirmReform"
></detailsDialog>
<engineeringEngDrawer v-model="engVisable" ref="engDrawer" :engList="engList">
<template #default="{ data }">
<span style="margin-left: 10px" @click="onUpdate(data)">{{ data.engineeringName }}</span>
@ -52,7 +58,10 @@ import { getDustManagementPage } from "@/api/modules/enterpriseApi";
import { getRelevanceList } from "@/api/modules/common";
import engineeringEngDrawer from "@/components/engineeringEngDrawer/index.vue";
import allEngineering from "@/components/allEngineering/index.vue";
import detailsDialog from "./components/detailsDialog.vue";
const newTitle = ref("新增");
const relativeId = ref();
const dialogVisible = ref(false);
const engList = ref([]);
const engVisable = ref(false);
// ProTable 便
@ -78,7 +87,10 @@ const columns: ColumnProps[] = [
const initParam = reactive({
engineeringSn: ""
});
//
const confirmReform = () => {
proTable.value.getTableList();
};
// dataCallback list && total && pageNum && pageSize
// hooks/useTable.ts
const dataCallback = (data: any) => {
@ -102,7 +114,10 @@ const getTableList = (params: any) => {
}
return getDustManagementPage(newParams);
};
//
const handleAddItem = () => {
dialogVisible.value = true;
};
//
const handleEditItem = async (index: number, row: any) => {};

View File

@ -174,7 +174,7 @@ const columns: ColumnProps[] = [
search: { el: "input" }
},
{
prop: "dname",
prop: "brand",
label: "品牌"
},
{

View File

@ -73,6 +73,7 @@ const changeTreeFilter = async (item: {
const engApi = async () => {
const { result } = await getvideoEngTreeList({});
engTree.value.treeAllData = result;
return result;
};
//