pull/1/head
z 2024-01-13 09:50:30 +08:00
parent 2fe776a3f6
commit 6216d08511
12 changed files with 154 additions and 50 deletions

View File

@ -378,6 +378,38 @@ export default [
path: "", path: "",
component: "hazard_investigation/inspection_record/index", component: "hazard_investigation/inspection_record/index",
}, },
{
path: "/hazard_investigation/inspection_record/supplementary_recording",
meta: {
title: "补录",
activeMenu: "/hazard_investigation/inspection_record",
},
component:
"hazard_investigation/inspection_record/supplementary_recording",
},
{
path: "/hazard_investigation/inspection_record/view",
meta: {
title: "检查记录",
activeMenu: "/hazard_investigation/inspection_record",
},
component: "children",
children: [
{
path: "",
component: "hazard_investigation/inspection_record/view",
},
{
path: "/hazard_investigation/inspection_record/view/hidden_danger",
meta: {
title: "隐患信息",
activeMenu: "/hazard_investigation/inspection_record",
},
component:
"hazard_investigation/inspection_record/hidden_danger",
},
],
},
], ],
}, },
], ],

View File

@ -3,9 +3,10 @@ import { getDataType } from "@/assets/js/utils.js";
/** /**
* @param api {Function} 接口函数 * @param api {Function} 接口函数
* @param options {Object?: {callbackFn, otherParams, immediate, usePagination, key}} 配置项 * @param options {Object?: {callbackFn, otherParams, defaultSearchForm, immediate, usePagination, key}} 配置项
* @param options.callbackFn {Function?} 回调函数返回值第一个参数表格数据第二个参数后台返回的所有数据 * @param options.callbackFn {Function?} 回调函数返回值第一个参数表格数据第二个参数后台返回的所有数据
* @param options.otherParams {Object?} 其它接口参数 * @param options.otherParams {Object?} 其它接口参数
* @param options.defaultSearchForm {Object?} searchForm默认值
* @param options.immediate {Boolean?} 是否立即执行接口函数默认是 * @param options.immediate {Boolean?} 是否立即执行接口函数默认是
* @param options.usePagination {Boolean?} 是否使用分页默认是 * @param options.usePagination {Boolean?} 是否使用分页默认是
* @param options.key {String?} 返回的存放数组的key默认varList * @param options.key {String?} 返回的存放数组的key默认varList
@ -22,26 +23,30 @@ export default function useListData(api, options = {}) {
throw new Error("options.usePagination必须是一个布尔值"); throw new Error("options.usePagination必须是一个布尔值");
if (options.key && getDataType(options.key) !== "String") if (options.key && getDataType(options.key) !== "String")
throw new Error("options.key必须是一个字符串"); throw new Error("options.key必须是一个字符串");
if (options.callbackFn && getDataType(options.callbackFn) !== "Function")
throw new Error("options.callbackFn必须是一个函数");
if (
options.defaultSearchForm &&
getDataType(options.defaultSearchForm) !== "Object"
)
throw new Error("options.defaultSearchForm必须是一个对象");
const immediate = options.immediate ?? true; const immediate = options.immediate ?? true;
const usePagination = options.usePagination ?? true; const usePagination = options.usePagination ?? true;
const key = options.key ?? "varList"; const key = options.key ?? "varList";
if (!immediate && options.otherParams) const defaultSearchForm = options.defaultSearchForm ?? {};
throw new Error("options.otherParams只有在immediate为true时才有效");
if ( if (
immediate && immediate &&
options.otherParams && options.otherParams &&
getDataType(options.otherParams) !== "Object" getDataType(options.otherParams) !== "Object"
) )
throw new Error("options.otherParams必须是一个对象"); throw new Error("options.otherParams必须是一个对象");
if (options.callbackFn && getDataType(options.callbackFn) !== "Function")
throw new Error("options.callbackFn必须是一个函数");
const list = ref([]); const list = ref([]);
const pagination = ref({ const pagination = ref({
currentPage: 1, currentPage: 1,
pageSize: 10, pageSize: 10,
total: 0, total: 0,
}); });
const searchForm = ref({}); const searchForm = ref(defaultSearchForm);
const tableRef = ref(null); const tableRef = ref(null);
const fnGetData = async (otherParams = {}) => { const fnGetData = async (otherParams = {}) => {
const resData = await api({ const resData = await api({

View File

@ -66,7 +66,7 @@
v-viewer v-viewer
v-for="item in data.hImgs" v-for="item in data.hImgs"
:key="item.IMGFILES_ID" :key="item.IMGFILES_ID"
:src="FILE_URL + item.FILEPATH" :src="VITE_FILE_URL + item.FILEPATH"
alt="" alt=""
width="100" width="100"
height="100" height="100"
@ -107,7 +107,7 @@
v-viewer v-viewer
v-for="item in data.rImgs" v-for="item in data.rImgs"
:key="item.IMGFILES_ID" :key="item.IMGFILES_ID"
:src="FILE_URL + item.FILEPATH" :src="VITE_FILE_URL + item.FILEPATH"
alt="" alt=""
width="100" width="100"
height="100" height="100"
@ -126,7 +126,7 @@
v-viewer v-viewer
v-for="item in data.pImgs" v-for="item in data.pImgs"
:key="item.IMGFILES_ID" :key="item.IMGFILES_ID"
:src="FILE_URL + item.FILEPATH" :src="VITE_FILE_URL + item.FILEPATH"
alt="" alt=""
width="100" width="100"
height="100" height="100"
@ -176,7 +176,7 @@
v-viewer v-viewer
v-for="item in data.sImgs" v-for="item in data.sImgs"
:key="item.IMGFILES_ID" :key="item.IMGFILES_ID"
:src="FILE_URL + item.FILEPATH" :src="VITE_FILE_URL + item.FILEPATH"
alt="" alt=""
width="100" width="100"
height="100" height="100"
@ -211,7 +211,7 @@
v-viewer v-viewer
v-for="item1 in item.cImgs" v-for="item1 in item.cImgs"
:key="item1.IMGFILES_ID" :key="item1.IMGFILES_ID"
:src="FILE_URL + item1.FILEPATH" :src="VITE_FILE_URL + item1.FILEPATH"
alt="" alt=""
width="100" width="100"
height="100" height="100"
@ -226,15 +226,19 @@
<script setup> <script setup>
import { reactive } from "vue"; import { reactive } from "vue";
import { useRoute } from "vue-router"; import { getFileSuffix } from "@/assets/js/utils.js";
import { getFileSuffix } from "@/assets/js/utils";
import { VideoPlay } from "@element-plus/icons-vue"; import { VideoPlay } from "@element-plus/icons-vue";
import LayoutVideo from "@/components/video/index"; import LayoutVideo from "@/components/video/index.vue";
import { getHiddenDangerView } from "@/request/hazard_investigation.js"; import { getHiddenDangerView } from "@/request/hazard_investigation.js";
const FILE_URL = import.meta.env.VITE_FILE_URL; const VITE_FILE_URL = import.meta.env.VITE_FILE_URL;
const route = useRoute(); const props = defineProps({
const { HIDDEN_ID } = route.query; hiddenId: {
type: String,
required: true,
default: "",
},
});
const data = reactive({ const data = reactive({
info: {}, info: {},
hs: {}, hs: {},
@ -248,14 +252,14 @@ const data = reactive({
}); });
const fnGetData = async () => { const fnGetData = async () => {
const resData = await getHiddenDangerView({ const resData = await getHiddenDangerView({
HIDDEN_ID, HIDDEN_ID: props.hiddenId,
}); });
data.info = resData.pd; data.info = resData.pd;
data.hs = resData.hs; data.hs = resData.hs;
data.checkList = resData.checkList; data.checkList = resData.checkList;
for (let i = 0; i < resData.hImgs.length; i++) { for (let i = 0; i < resData.hImgs.length; i++) {
if (getFileSuffix(resData.hImgs[i].FILEPATH) === "mp4") { if (getFileSuffix(resData.hImgs[i].FILEPATH) === "mp4") {
data.videoSrc = FILE_URL + resData.hImgs[i].FILEPATH; data.videoSrc = VITE_FILE_URL + resData.hImgs[i].FILEPATH;
} else { } else {
data.hImgs.push(resData.hImgs[i]); data.hImgs.push(resData.hImgs[i]);
} }

View File

@ -1,11 +1,15 @@
<template> <template>
<layout-card> <layout-card>
<hidden-view /> <hidden-view :hidden-id="HIDDEN_ID" />
</layout-card> </layout-card>
</template> </template>
<script setup> <script setup>
import HiddenView from "./hidden_view.vue"; import HiddenView from "./components/hidden_view.vue";
import { useRoute } from "vue-router";
const route = useRoute();
const { HIDDEN_ID } = route.query;
</script> </script>
<style scoped lang="scss"></style> <style scoped lang="scss"></style>

View File

@ -115,7 +115,6 @@
DATESTART: row.DATESTART, DATESTART: row.DATESTART,
DATEEND: row.DATEEND, DATEEND: row.DATEEND,
LISTMANAGER_ID, LISTMANAGER_ID,
type: 'supplementaryRecording',
}, },
}) })
" "
@ -156,14 +155,14 @@ const { list, pagination, searchForm, fnGetData, fnResetPagination } =
}); });
const fnGetDataTransfer = () => { const fnGetDataTransfer = () => {
fnGetData({ fnGetData({
STARTINSPECTTIME: searchForm.value.dates?.[0], STARTTIME: searchForm.value.dates?.[0],
ENDINSPECTTIME: searchForm.value.dates?.[1], ENDTIME: searchForm.value.dates?.[1],
}); });
}; };
const fnResetPaginationTransfer = () => { const fnResetPaginationTransfer = () => {
fnResetPagination({ fnResetPagination({
STARTINSPECTTIME: searchForm.value.dates?.[0], STARTTIME: searchForm.value.dates?.[0],
ENDINSPECTTIME: searchForm.value.dates?.[1], ENDTIME: searchForm.value.dates?.[1],
}); });
}; };
const buttonJurisdiction = await useButtonJurisdiction("checkrecord"); const buttonJurisdiction = await useButtonJurisdiction("checkrecord");

View File

@ -95,7 +95,7 @@
link link
@click=" @click="
router.push({ router.push({
path: '/hazard_investigation/checklist_inspection_status/inspection_record/view/hidden_danger', path: hiddenPath[entrance],
query: { HIDDEN_ID: row.HIDDEN_ID }, query: { HIDDEN_ID: row.HIDDEN_ID },
}) })
" "
@ -161,7 +161,7 @@
link link
@click=" @click="
router.push({ router.push({
path: '/hazard_investigation/checklist_inspection_status/inspection_record/view/hidden_danger', path: hiddenPath[entrance],
query: { HIDDEN_ID: row.HIDDEN_ID }, query: { HIDDEN_ID: row.HIDDEN_ID },
}) })
" "
@ -213,6 +213,18 @@ import { addingPrefixToFile } from "@/assets/js/utils.js";
import Qualified from "./components/qualified.vue"; import Qualified from "./components/qualified.vue";
import MapDialog from "./components/map.vue"; import MapDialog from "./components/map.vue";
defineProps({
entrance: {
type: String,
default: "checklist_inspection_status",
},
});
const hiddenPath = {
checklist_inspection_status:
"/hazard_investigation/checklist_inspection_status/inspection_record/view/hidden_danger", //
inspection_record:
"/hazard_investigation/inspection_record/view/hidden_danger", //
};
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
const { CHECKRECORD_ID } = route.query; const { CHECKRECORD_ID } = route.query;

View File

@ -1,5 +1,5 @@
<template> <template>
<inspection /> <inspection entrance="supplementaryRecording" />
</template> </template>
<script setup> <script setup>

View File

@ -0,0 +1,15 @@
<template>
<layout-card>
<hidden-view :hiddenId="HIDDEN_ID" />
</layout-card>
</template>
<script setup>
import HiddenView from "../checklist_inspection_status/components/hidden_view.vue";
import { useRoute } from "vue-router";
const route = useRoute();
const { HIDDEN_ID } = route.query;
</script>
<style scoped lang="scss"></style>

View File

@ -8,19 +8,28 @@
> >
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="检查周期" prop="dates"> <el-form-item label="清单名称" prop="KEYWORDS">
<el-input v-model="searchForm.KEYWORDS" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="检查时间" prop="dates">
<el-date-picker <el-date-picker
v-model="searchForm.dates" v-model="searchForm.dates"
type="daterange" type="daterange"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
format="YYYY-MM-DD" format="YYYY-MM-DD"
range-separator="至" range-separator="至"
:disabled="searchForm.TYPE === '2'"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="检查状态" prop="TYPE"> <el-form-item label="检查状态" prop="TYPE">
<el-select v-model="searchForm.TYPE"> <el-select
v-model="searchForm.TYPE"
@change="searchForm.dates = []"
>
<el-option label="已检查" value="1" /> <el-option label="已检查" value="1" />
<el-option label="超期未检查" value="2" /> <el-option label="超期未检查" value="2" />
</el-select> </el-select>
@ -83,7 +92,7 @@
link link
@click=" @click="
router.push({ router.push({
path: '/hazard_investigation/checklist_inspection_status/inspection_record/view', path: '/hazard_investigation/inspection_record/view',
query: { query: {
CHECKRECORD_ID: row.CHECKRECORD_ID, CHECKRECORD_ID: row.CHECKRECORD_ID,
}, },
@ -109,13 +118,12 @@
link link
@click=" @click="
router.push({ router.push({
path: '/hazard_investigation/checklist_inspection_status/inspection_record/supplementary_recording', path: '/hazard_investigation/inspection_record/supplementary_recording',
query: { query: {
CHECKRECORD_ID: row.CHECKRECORD_ID, CHECKRECORD_ID: row.CHECKRECORD_ID,
DATESTART: row.DATESTART, DATESTART: row.DATESTART,
DATEEND: row.DATEEND, DATEEND: row.DATEEND,
LISTMANAGER_ID, LISTMANAGER_ID: row.LISTMANAGER_ID,
type: 'supplementaryRecording',
}, },
}) })
" "
@ -151,6 +159,8 @@ const { list, pagination, searchForm, fnGetData, fnResetPagination } =
useListData(getInspectionRecordList, { useListData(getInspectionRecordList, {
otherParams: { otherParams: {
USER_ID: userStore.getUserInfo.USER_ID, USER_ID: userStore.getUserInfo.USER_ID,
},
defaultSearchForm: {
TYPE: "1", TYPE: "1",
}, },
callbackFn: (list, resData) => { callbackFn: (list, resData) => {
@ -159,14 +169,14 @@ const { list, pagination, searchForm, fnGetData, fnResetPagination } =
}); });
const fnGetDataTransfer = () => { const fnGetDataTransfer = () => {
fnGetData({ fnGetData({
STARTINSPECTTIME: searchForm.value.dates?.[0], STARTTIME: searchForm.value.dates?.[0],
ENDINSPECTTIME: searchForm.value.dates?.[1], ENDTIME: searchForm.value.dates?.[1],
}); });
}; };
const fnResetPaginationTransfer = () => { const fnResetPaginationTransfer = () => {
fnResetPagination({ fnResetPagination({
STARTINSPECTTIME: searchForm.value.dates?.[0], STARTTIME: searchForm.value.dates?.[0],
ENDINSPECTTIME: searchForm.value.dates?.[1], ENDTIME: searchForm.value.dates?.[1],
}); });
}; };
const buttonJurisdiction = await useButtonJurisdiction("checkrecord"); const buttonJurisdiction = await useButtonJurisdiction("checkrecord");

View File

@ -0,0 +1,9 @@
<template>
<inspection entrance="supplementaryRecording" />
</template>
<script setup>
import Inspection from "../inventory_troubleshooting/inspect.vue";
</script>
<style scoped></style>

View File

@ -0,0 +1,9 @@
<template>
<inspection-record entrance="inspection_record" />
</template>
<script setup>
import InspectionRecord from "../checklist_inspection_status/inspection_record_view.vue";
</script>
<style scoped lang="scss"></style>

View File

@ -50,21 +50,21 @@
<el-tooltip <el-tooltip
content="注意:补录时,不允许添加隐患" content="注意:补录时,不允许添加隐患"
placement="top" placement="top"
v-if="type === 'supplementaryRecording'" v-if="entrance === 'supplementaryRecording'"
> >
<el-icon><warning-filled /></el-icon> <el-icon><warning-filled /></el-icon>
</el-tooltip> </el-tooltip>
</el-radio> </el-radio>
<el-radio <el-radio
:label="1" :label="1"
:disabled="type === 'supplementaryRecording'" :disabled="entrance === 'supplementaryRecording'"
@click.prevent="fnUnqualified($index, row)" @click.prevent="fnUnqualified($index, row)"
> >
不合格 不合格
</el-radio> </el-radio>
<el-radio <el-radio
:label="2" :label="2"
:disabled="type === 'supplementaryRecording'" :disabled="entrance === 'supplementaryRecording'"
@click.prevent="fnNotInvolved($index, row)" @click.prevent="fnNotInvolved($index, row)"
> >
不涉及 不涉及
@ -78,7 +78,7 @@
<el-button <el-button
type="primary" type="primary"
@click="fnAddOrEditOtherHidden({}, 'add')" @click="fnAddOrEditOtherHidden({}, 'add')"
:disabled="type === 'supplementaryRecording'" :disabled="entrance === 'supplementaryRecording'"
> >
添加 添加
</el-button> </el-button>
@ -195,7 +195,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</template> </template>
<el-col :span="24" v-if="type === 'supplementaryRecording'"> <el-col :span="24" v-if="entrance === 'supplementaryRecording'">
<el-form-item label="补录原因" prop="REASON"> <el-form-item label="补录原因" prop="REASON">
<el-input v-model="data.form.REASON" type="textarea" autosize /> <el-input v-model="data.form.REASON" type="textarea" autosize />
</el-form-item> </el-form-item>
@ -265,9 +265,14 @@ import { WarningFilled } from "@element-plus/icons-vue";
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
const { LISTMANAGER_ID, type, CHECKRECORD_ID, DATEEND, DATESTART } = const { LISTMANAGER_ID, CHECKRECORD_ID, DATEEND, DATESTART } = route.query;
route.query; // entrance: supplementaryRecording
console.log(CHECKRECORD_ID); const props = defineProps({
entrance: {
type: String,
default: "",
},
});
const rules = { const rules = {
CHECK_TIME: [ CHECK_TIME: [
{ required: true, message: "请选择检查时间", trigger: "change" }, { required: true, message: "请选择检查时间", trigger: "change" },
@ -367,7 +372,7 @@ const fnQualified = async (index, row) => {
inspectionList.value[index].ISNORMAL = 0; inspectionList.value[index].ISNORMAL = 0;
}; };
const fnNotInvolved = (index, row) => { const fnNotInvolved = (index, row) => {
if (row.HASHIDDEN > 0 || type === "supplementaryRecording") return; if (row.HASHIDDEN > 0 || props.entrance === "supplementaryRecording") return;
fnRemoveUnqualified(index); fnRemoveUnqualified(index);
inspectionList.value[index].ISNORMAL = 2; inspectionList.value[index].ISNORMAL = 2;
}; };
@ -375,7 +380,7 @@ const fnRemoveUnqualified = (index) => {
inspectionList.value[index].HIDDEN_ID = ""; inspectionList.value[index].HIDDEN_ID = "";
}; };
const fnUnqualified = async (index, row) => { const fnUnqualified = async (index, row) => {
if (row.HASHIDDEN > 0 || type === "supplementaryRecording") return; if (row.HASHIDDEN > 0 || props.entrance === "supplementaryRecording") return;
data.unQualifiedDialog.visible = true; data.unQualifiedDialog.visible = true;
await nextTick(); await nextTick();
if ( if (
@ -484,7 +489,7 @@ const fnSubmit = debounce(
LONGITUDE: data.longitude, LONGITUDE: data.longitude,
LATITUDE: data.latitude, LATITUDE: data.latitude,
}; };
if (type === "supplementaryRecording") { if (props.entrance === "supplementaryRecording") {
params.REASON = data.form.REASON; params.REASON = data.form.REASON;
params.CHECKRECORD_ID = CHECKRECORD_ID; params.CHECKRECORD_ID = CHECKRECORD_ID;
await setChecklistInspectionStatusRecordSupplementaryRecordingSubmit( await setChecklistInspectionStatusRecordSupplementaryRecordingSubmit(