forked from integrated_whb/integrated_whb_vue
行车三检承诺问询,排查类别检查项
parent
02a0c7fcae
commit
e803f8bf41
|
@ -181,6 +181,13 @@ export const layoutFnGetRiskClassification = async () => {
|
|||
});
|
||||
return ref(resData.list);
|
||||
};
|
||||
// 排查项类型
|
||||
export const layoutFnGetDrivingType = async () => {
|
||||
const resData = await getLevels({
|
||||
DICTIONARIES_ID: "5ef3a19edcb2435f8db94487834bbae3",
|
||||
});
|
||||
return ref(resData.list);
|
||||
};
|
||||
// 部门树
|
||||
export const layoutFnGetDepartmentTree = async (params) => {
|
||||
const resData = await getDepartmentTree(params);
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
import { post } from "@/request/axios.js";
|
||||
export const getSafetyDrivingCommitmentList = (params) =>
|
||||
post("/drivingcommitment/listForSafetyDrivingCommitment", params); // 行车日志列表
|
||||
|
||||
export const setDrivingCommitmentDelete = (params) =>
|
||||
post("/drivingcommitment/delete", params); // 行车日志删除
|
||||
|
||||
export const getSafetyDrivingCommitmentView = (params) =>
|
||||
post("/drivingcommitment/goEdit", params); // 安全例会详情
|
||||
|
||||
export const setDrivingCommitmentAdd = (params) => post("/drivingcommitment/add", params); // 风险点单元添加
|
||||
export const setDrivingCommitmentEdit = (params) => post("/drivingcommitment/edit", params); // 风险点单元修改
|
|
@ -0,0 +1,12 @@
|
|||
import { post } from "@/request/axios.js";
|
||||
export const getSafetyDrivingTypeList = (params) =>
|
||||
post("/drivingtype/listForSafetyDrivingType", params); // 行车日志列表
|
||||
|
||||
export const setDrivingTypeDelete = (params) =>
|
||||
post("/drivingtype/delete", params); // 行车日志删除
|
||||
|
||||
export const getSafetyDrivingTypeView = (params) =>
|
||||
post("/drivingtype/goEdit", params); // 安全例会详情
|
||||
|
||||
export const setDrivingTypeAdd = (params) => post("/drivingtype/add", params); // 风险点单元添加
|
||||
export const setDrivingTypeEdit = (params) => post("/drivingtype/edit", params); // 风险点单元修改
|
|
@ -0,0 +1,75 @@
|
|||
<template>
|
||||
<el-dialog
|
||||
v-model="visible"
|
||||
:title="type === 'edit' ? '修改' : '新增'"
|
||||
:before-close="fnClose"
|
||||
>
|
||||
<el-form ref="formRef" :rules="rules" :model="form" label-width="100px">
|
||||
<el-form-item label="问询内容" prop="INQUIRYCONTENT">
|
||||
<el-input
|
||||
v-model="form.INQUIRYCONTENT"
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 5 }"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="fnClose">取消</el-button>
|
||||
<el-button type="primary" @click="fnSubmit"> 确定 </el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from "vue";
|
||||
import { useVModels } from "@vueuse/core";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
import {setDrivingCommitmentAdd, setDrivingCommitmentEdit} from "@/request/traffic_driving_commitment.js";
|
||||
|
||||
const props = defineProps({
|
||||
visible: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
default: false,
|
||||
},
|
||||
form: {
|
||||
type: Object,
|
||||
required: true,
|
||||
default: () => ({}),
|
||||
},
|
||||
type: {
|
||||
type: String,
|
||||
required: true,
|
||||
default: "",
|
||||
},
|
||||
});
|
||||
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
||||
const { visible, form } = useVModels(props, emits);
|
||||
const rules = {
|
||||
INQUIRYCONTENT: [
|
||||
{ required: true, message: "问询内容不能为空", trigger: "blur" },
|
||||
],
|
||||
};
|
||||
const formRef = ref(null);
|
||||
const fnClose = () => {
|
||||
formRef.value.resetFields();
|
||||
visible.value = false;
|
||||
};
|
||||
const fnSubmit = debounce(
|
||||
1000,
|
||||
async () => {
|
||||
await useFormValidate(formRef);
|
||||
props.type === "add"
|
||||
? await setDrivingCommitmentAdd({ ...form.value })
|
||||
: await setDrivingCommitmentEdit({ ...form.value });
|
||||
ElMessage.success("操作成功");
|
||||
fnClose();
|
||||
emits("get-data");
|
||||
},
|
||||
{ atBegin: true }
|
||||
);
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,132 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="100px"
|
||||
@submit.prevent="fnResetPagination"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="问询内容" prop="INQUIRYCONTENT">
|
||||
<el-input v-model="searchForm.INQUIRYCONTENT" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnResetPagination">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
v-model:pagination="pagination"
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
>
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="INQUIRYCONTENT"
|
||||
label="问询内容"
|
||||
width="330"
|
||||
/>
|
||||
<el-table-column prop="INQUIRYCONCLUSION" label="问询结果" width="230" />
|
||||
<el-table-column prop="CORP_NAME" label="经营企业" width="230" />
|
||||
<el-table-column prop="TRANSPORTVEHICLE" label="经营类型" width="230" />
|
||||
<el-table-column prop="CREATTIME" label="创建时间" width="130" />
|
||||
<el-table-column prop="OPERATTIME" label="修改时间" width="130" />
|
||||
<el-table-column label="操作" >
|
||||
<template #default="{ row }">
|
||||
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="fnAddOrEdit(row.DRIVINGCOMMITMENT_ID, 'edit')"
|
||||
>
|
||||
修改
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
text
|
||||
link
|
||||
@click="deleteItem(row.DRIVINGCOMMITMENT_ID)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<template #button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="fnAddOrEdit('', 'add')"
|
||||
>
|
||||
新增
|
||||
</el-button>
|
||||
</template>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
<add
|
||||
v-model:visible="data.addOrEditDialog.visible"
|
||||
v-model:form="data.addOrEditDialog.form"
|
||||
:type="data.addOrEditDialog.type"
|
||||
@get-data="fnResetPagination"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { serialNumber } from "@/assets/js/utils";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import { nextTick,reactive } from "vue";
|
||||
import Add from "./components/add.vue";
|
||||
import {
|
||||
getSafetyDrivingCommitmentList, getSafetyDrivingCommitmentView,
|
||||
setDrivingCommitmentDelete,
|
||||
} from "@/request/traffic_driving_commitment.js";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getSafetyDrivingCommitmentList);
|
||||
const data = reactive({
|
||||
addOrEditDialog: {
|
||||
visible: false,
|
||||
type: "",
|
||||
form: {
|
||||
INQUIRYCONTENT: "",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const fnAddOrEdit = async (DRIVINGCOMMITMENT_ID, type) => {
|
||||
data.addOrEditDialog.visible = true;
|
||||
await nextTick();
|
||||
data.addOrEditDialog.type = type;
|
||||
if (type === "edit") {
|
||||
const resData = await getSafetyDrivingCommitmentView({ DRIVINGCOMMITMENT_ID });
|
||||
data.addOrEditDialog.form = resData.pd;
|
||||
}
|
||||
};
|
||||
|
||||
// 删除事件
|
||||
const deleteItem = async (value) => {
|
||||
await ElMessageBox.confirm(`确定要删除吗?`, {
|
||||
type: "warning",
|
||||
});
|
||||
await setDrivingCommitmentDelete({ DRIVINGCOMMITMENT_ID: value });
|
||||
ElMessage.success("删除成功");
|
||||
fnGetData();
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -0,0 +1,229 @@
|
|||
<template>
|
||||
<layout-card>
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="data.form"
|
||||
:rules="rules"
|
||||
label-width="175px"
|
||||
>
|
||||
<el-divider content-position="left">添加</el-divider>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="会议标题" prop="MEETING_TITLE">
|
||||
<el-input
|
||||
v-model="data.form.MEETING_TITLE"
|
||||
placeholder="请输入会议标题"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="会议类型" prop="MEETING_TYPE">
|
||||
<el-select
|
||||
v-model="data.form.MEETING_TYPE"
|
||||
placeholder="请选择会议类型"
|
||||
@change="handleMeetingTypeChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in relatedClassificationList"
|
||||
:key="item.BIANMA"
|
||||
:label="item.NAME"
|
||||
:value="item.BIANMA"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="运输企业" prop="TRANSPORTATIONCOMPANY">
|
||||
<el-input
|
||||
v-model="data.form.TRANSPORTATIONCOMPANY"
|
||||
placeholder="请输入运输企业"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="会议地点" prop="MEETING_ADDRESS">
|
||||
<el-input
|
||||
v-model="data.form.MEETING_ADDRESS"
|
||||
placeholder="请输入会议地点"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="10">
|
||||
<el-form-item prop="MEETING_DATE" label="会议时间">
|
||||
<el-date-picker
|
||||
type="daterange"
|
||||
v-model="data.form.MEETING_DATE"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
start-placeholder="开始时间"
|
||||
end-placeholder="结束时间"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="主持人" prop="HOST_PERSON">
|
||||
<el-input
|
||||
v-model="data.form.HOST_PERSON"
|
||||
placeholder="请输入主持人"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="记录人" prop="RECORDER">
|
||||
<el-input v-model="data.form.RECORDER" placeholder="请输入记录人" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="从业身份" prop="PRACTITIONER_TYPE">
|
||||
<el-checkbox-group
|
||||
v-model="data.form.PRACTITIONER_TYPE"
|
||||
@change="handleCheckedCitiesChange"
|
||||
>
|
||||
<el-checkbox v-for="city in cities" :key="city" :label="city">{{
|
||||
city
|
||||
}}</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="会议附件" prop="fileList">
|
||||
<layout-upload
|
||||
v-model:file-list="data.form.fileList"
|
||||
accept=".pdf,.mp4"
|
||||
delete-to-server
|
||||
:limit="9"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="50">
|
||||
<el-form-item label="会议记要" prop="MEETING_CONTENT">
|
||||
<layout-editor
|
||||
v-model="data.form.MEETING_CONTENT"
|
||||
placeholder="请输入内容"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div class="tc mt-10">
|
||||
<el-button type="primary" @click="fnSubmit"> 确定 </el-button>
|
||||
</div>
|
||||
</layout-card>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
layoutFnGetMEETINGTYPEClassification,
|
||||
getUserListAll,
|
||||
} from "@/request/safety_production_related.js";
|
||||
import { addSafetyMeetingView } from "@/request/traffic_safety_meeting.js";
|
||||
import { reactive, ref } from "vue";
|
||||
import LayoutUpload from "@/components/upload/index.vue";
|
||||
import LayoutEditor from "@/components/editor/index.vue";
|
||||
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
const formRef = ref(null);
|
||||
const cities = [
|
||||
"驾驶员",
|
||||
"押运员",
|
||||
"安全管理员",
|
||||
"装卸员",
|
||||
"安全负责人",
|
||||
"其他",
|
||||
"监控员",
|
||||
];
|
||||
const handleCheckedCitiesChange = () => {};
|
||||
const rules = {
|
||||
MEETING_TITLE: [
|
||||
{ required: true, message: "请输入会议标题", trigger: "blur" },
|
||||
],
|
||||
MEETING_TYPE: [
|
||||
{ required: true, message: "请选择会议类型", trigger: "change" },
|
||||
],
|
||||
TRANSPORTATIONCOMPANY: [
|
||||
{ required: true, message: "请输入运输企业", trigger: "blur" },
|
||||
],
|
||||
MEETING_ADDRESS: [
|
||||
{ required: true, message: "请输入会议地点", trigger: "blur" },
|
||||
],
|
||||
MEETING_DATE: [
|
||||
{ required: true, message: "请选择会议时间", trigger: "change" },
|
||||
],
|
||||
HOST_PERSON: [{ required: true, message: "请输入主持人", trigger: "blur" }],
|
||||
RECORDER: [{ required: true, message: "请输入记录人", trigger: "blur" }],
|
||||
MEETING_CONTENT: [
|
||||
{ required: true, message: "请输入会议记要", trigger: "blur" },
|
||||
],
|
||||
};
|
||||
|
||||
const fnGetUnitsList = async () => {
|
||||
const resData = await getUserListAll({});
|
||||
data.unitsList = resData.varList;
|
||||
};
|
||||
fnGetUnitsList();
|
||||
const relatedClassificationTempList =
|
||||
await layoutFnGetMEETINGTYPEClassification();
|
||||
const relatedClassificationList = [];
|
||||
JSON.parse(relatedClassificationTempList.value.zTreeNodes).forEach((e) => {
|
||||
relatedClassificationList.push({ name: e.id, BIANMA: e.name });
|
||||
});
|
||||
|
||||
const data = reactive({
|
||||
form: {
|
||||
MEETING_TITLE: "",
|
||||
MEETING_TYPE: "",
|
||||
TRANSPORTATIONCOMPANY: "",
|
||||
MEETING_ADDRESS: "",
|
||||
MEETING_DATE: "",
|
||||
HOST_PERSON: "",
|
||||
RECORDER: "",
|
||||
fileList: [],
|
||||
PRACTITIONER_TYPE: [],
|
||||
NOTIFICATIONCONTENT: "",
|
||||
},
|
||||
});
|
||||
const handleMeetingTypeChange = (value) => {
|
||||
data.form.MEETING_TYPE = value;
|
||||
};
|
||||
const fnSubmit = async () => {
|
||||
await useFormValidate(formRef);
|
||||
const formData = new FormData();
|
||||
|
||||
Object.keys(data.form).forEach((key) => {
|
||||
formData.append(key, data.form[key]);
|
||||
});
|
||||
|
||||
formData.delete("fileList");
|
||||
|
||||
for (let i = 0; i < data.form.fileList.length; i++) {
|
||||
if (data.form.fileList[i].raw)
|
||||
formData.append("FFILE", data.form.fileList[i].raw);
|
||||
}
|
||||
|
||||
try {
|
||||
await addSafetyMeetingView(formData);
|
||||
ElMessage.success("添加成功");
|
||||
Object.keys(data.form).forEach((key) => {
|
||||
if (Array.isArray(data.form[key])) {
|
||||
data.form[key] = [];
|
||||
} else {
|
||||
data.form[key] = "";
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
ElMessage.error("添加失败");
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.flexBox {
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
|
||||
.addBtn {
|
||||
margin-left: 12px;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,341 @@
|
|||
<template>
|
||||
<div>
|
||||
<layout-card>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="24">
|
||||
<el-descriptions :column="2" border>
|
||||
<el-descriptions-item label="会议标题">
|
||||
{{ detailItems.WAYBILLNUMBER }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="运输企业">
|
||||
{{ detailItems.TRANSPORTATIONCOMPANY }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="运输任务">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="运输车辆">
|
||||
{{ detailItems.TRANSPORTVEHICLE }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="运输性能">
|
||||
{{ detailItems.TRANSPORTNATURE }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="发车时间">
|
||||
{{ detailItems.DEPARTURETIME }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="发车地点">
|
||||
{{ detailItems.DEPARTUREPLACE }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="车架号">
|
||||
{{ detailItems.FRAMENUMBER }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="从业人员">
|
||||
{{ detailItems.EMPLOYEES }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="收车时间">
|
||||
{{ detailItems.ARRIVALTIME }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="收车地点">
|
||||
{{ detailItems.ARRIVALPLACE }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="天气情况">
|
||||
{{ detailItems.WEATHERCONDITION }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="联系电话">
|
||||
{{ detailItems.CONTACTPHONE }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="额定载荷">
|
||||
{{ detailItems.RATEDLOAD }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="实际载荷">
|
||||
{{ detailItems.ACTUALLOAD }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="行车安全问询">
|
||||
{{ detailItems.DRIVINGSAFETYINQUIRY }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="出车前检查">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="检查人">
|
||||
{{ detailItems.PREDEPARTUREINSPECTOR }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="检查时间">
|
||||
{{ detailItems.PREDEPARTUREINSPECTIONTIME }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="故障处理">
|
||||
{{ detailItems.PREDEPARTUREFAULTTREATMENT }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="出车结论">
|
||||
{{ detailItems.DEPARTURECONCLUSION }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="出车前照片">
|
||||
{{ detailItems.PREDEPARTUREPHOTO }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="出车前签字">
|
||||
{{ detailItems.PREDEPARTURESIGNATURE }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="行车中检查">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="检查人">
|
||||
{{ detailItems.INDRIVINGINSPECTOR }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="检查时间">
|
||||
{{ detailItems.INSPECTIONTIMEWHILEDRIVING }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="故障处理">
|
||||
{{ detailItems.INDRIVINGFAULTTREATMENT }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="行车中照片">
|
||||
{{ detailItems.PHOTOSWHILEDRIVING }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="行车中签字">
|
||||
{{ detailItems.SIGNINGWHILEDRIVING }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="收车后检查">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="检查人">
|
||||
{{ detailItems.POSTARRIVALINSPECTOR }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="检查时间">
|
||||
{{ detailItems.POSTARRIVALINSPECTIONTIME }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="故障处理">
|
||||
{{ detailItems.POSTARRIVALFAULTTREATMENT }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="收车后照片">
|
||||
{{ detailItems.CHECKPHOTOS }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="收车后签字">
|
||||
{{ detailItems.CHECKSIGNATURE }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="交接班记录">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="驾驶时长">
|
||||
{{ detailItems.DRIVINGDURATION }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="时间区间">
|
||||
{{ detailItems.TIMEINTERVAL }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="交接地点">
|
||||
{{ detailItems.HANDOVERPLACE }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="交接班人">
|
||||
{{ detailItems.HANDOVERPERSON }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="接班图片">
|
||||
{{ detailItems.RELIEFPICTURE }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="安全负责人">
|
||||
{{ detailItems.SAFETYOFFICER }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</layout-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from "vue";
|
||||
import { getSafetyDrivingLogView } from "@/request/traffic_driving_log.js";
|
||||
import { useRoute } from "vue-router";
|
||||
const route = useRoute();
|
||||
const { DRIVING_LOG_ID } = route.query;
|
||||
const detailItems = ref({
|
||||
WAYBILLNUMBER: "",
|
||||
TRANSPORTATIONCOMPANY: "",
|
||||
TRANSPORTVEHICLE: "",
|
||||
TRANSPORTNATURE: "",
|
||||
DEPARTURETIME: "",
|
||||
DEPARTUREPLACE: "",
|
||||
FRAMENUMBER: "",
|
||||
EMPLOYEES: "",
|
||||
ARRIVALTIME: "",
|
||||
ARRIVALPLACE: "",
|
||||
WEATHERCONDITION: "",
|
||||
CONTACTPHONE: "",
|
||||
ACTUALLOAD: "",
|
||||
DRIVINGSAFETYINQUIRY: "",
|
||||
DEPARTURECONCLUSION: "",
|
||||
PREDEPARTUREINSPECTOR: "",
|
||||
PREDEPARTUREINSPECTIONTIME: "",
|
||||
PREDEPARTUREFAULTTREATMENT: "",
|
||||
INDRIVINGINSPECTOR: "",
|
||||
INSPECTIONTIMEWHILEDRIVING: "",
|
||||
INDRIVINGFAULTTREATMENT: "",
|
||||
POSTARRIVALINSPECTOR: "",
|
||||
POSTARRIVALINSPECTIONTIME: "",
|
||||
POSTARRIVALFAULTTREATMENT: "",
|
||||
DRIVINGDURATION: "",
|
||||
TIMEINTERVAL: "",
|
||||
HANDOVERPLACE: "",
|
||||
HANDOVERPERSON: "",
|
||||
RELIEFPICTURE: "",
|
||||
SAFETYOFFICER: "",
|
||||
PREDEPARTUREPHOTO: "",
|
||||
PREDEPARTURESIGNATURE: "",
|
||||
PHOTOSWHILEDRIVING: "",
|
||||
SIGNINGWHILEDRIVING: "",
|
||||
CHECKPHOTOS: "",
|
||||
CHECKSIGNATURE: "",
|
||||
});
|
||||
|
||||
const fnGetData = async () => {
|
||||
const response = await getSafetyDrivingLogView({ DRIVING_LOG_ID });
|
||||
detailItems.value = response.pd;
|
||||
};
|
||||
fnGetData();
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -0,0 +1,136 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="100px"
|
||||
@submit.prevent="fnResetPagination"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="运输企业" prop="TRANSPORTCOMPANY">
|
||||
<el-input v-model="searchForm.TRANSPORTCOMPANY" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="运输车辆" prop="TRANSPORTVEHICLE">
|
||||
<el-input v-model="searchForm.TRANSPORTVEHICLE" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnResetPagination">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
v-model:pagination="pagination"
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
>
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="REGISTRATIONNUMBER"
|
||||
label="登记编号"
|
||||
width="130"
|
||||
/>
|
||||
<el-table-column prop="DEPARTURESTATUS" label="出车状态" width="130" />
|
||||
<el-table-column prop="DRIVINGCONDITION" label="行车状态" width="130" />
|
||||
<el-table-column prop="TRANSPORTVEHICLE" label="运输车辆" width="130" />
|
||||
<el-table-column prop="EMPLOYEES" label="从业人员" width="130" />
|
||||
<el-table-column prop="CONTACTPHONE" label="联系电话" width="130" />
|
||||
<el-table-column prop="WEATHERCONDITION" label="天气预报" width="130" />
|
||||
<el-table-column prop="TRANSPORTNATURE" label="运输性质" width="130" />
|
||||
<el-table-column prop="DEPARTURETIME" label="发车时间" />
|
||||
<el-table-column prop="ARRIVALTIME" label="收车时间" />
|
||||
<el-table-column prop="TRANSPORTCOMPANY" label="运输企业" />
|
||||
<el-table-column label="操作" width="180">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: '/driving_inspections/driving_log/drivingLog_info',
|
||||
query: {
|
||||
DRIVING_LOG_ID: row.DRIVING_LOG_ID,
|
||||
},
|
||||
})
|
||||
"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: '/driving_inspections/safety_meeting/add',
|
||||
})
|
||||
"
|
||||
>
|
||||
添加
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
text
|
||||
link
|
||||
@click="deleteItem(row.DRIVING_LOG_ID)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
<edit
|
||||
v-model:visible="data.analysisDialog.visible"
|
||||
:info="data.analysisDialog.info"
|
||||
@get-data="fnResetPagination"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { serialNumber } from "@/assets/js/utils";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import { reactive } from "vue";
|
||||
import {
|
||||
getSafetyDrivingLogList,
|
||||
setDrivingLogDelete,
|
||||
} from "@/request/traffic_driving_log.js";
|
||||
import router from "@/router/index.js";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getSafetyDrivingLogList);
|
||||
const data = reactive({
|
||||
analysisDialog: {
|
||||
visible: false,
|
||||
info: {},
|
||||
},
|
||||
});
|
||||
// 删除事件
|
||||
const deleteItem = async (value) => {
|
||||
await ElMessageBox.confirm(`确定要删除吗?`, {
|
||||
type: "warning",
|
||||
});
|
||||
await setDrivingLogDelete({ DRIVING_LOG_ID: value });
|
||||
ElMessage.success("删除成功");
|
||||
fnGetData();
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -0,0 +1,97 @@
|
|||
<template>
|
||||
<el-dialog
|
||||
v-model="visible"
|
||||
:title="type === 'edit' ? '修改' : '新增'"
|
||||
:before-close="fnClose"
|
||||
>
|
||||
<el-form ref="formRef" :rules="rules" :model="form" label-width="100px">
|
||||
<el-form-item label="排查项类型" prop="CHECKTYPE_ID">
|
||||
<el-select v-model="form.CHECKTYPE_ID">
|
||||
<el-option
|
||||
v-for="item in drivingTypeList"
|
||||
:key="item.BIANMA"
|
||||
:label="item.NAME"
|
||||
:value="item.BIANMA"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="排查项名称" prop="CHECKITEMNAME">
|
||||
<el-input v-model="form.CHECKITEMNAME"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="排查项说明" prop="REMARKS">
|
||||
<el-input
|
||||
v-model="form.REMARKS"
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 5 }"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="fnClose">取消</el-button>
|
||||
<el-button type="primary" @click="fnSubmit"> 确定 </el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from "vue";
|
||||
import { useVModels } from "@vueuse/core";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
import {setDrivingTypeAdd, setDrivingTypeEdit} from "@/request/traffic_driving_type.js";
|
||||
import {layoutFnGetDrivingType} from "@/assets/js/data_dictionary.js";
|
||||
|
||||
const props = defineProps({
|
||||
visible: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
default: false,
|
||||
},
|
||||
form: {
|
||||
type: Object,
|
||||
required: true,
|
||||
default: () => ({}),
|
||||
},
|
||||
type: {
|
||||
type: String,
|
||||
required: true,
|
||||
default: "",
|
||||
},
|
||||
});
|
||||
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
||||
const { visible, form } = useVModels(props, emits);
|
||||
const rules = {
|
||||
CHECKTYPE_ID: [
|
||||
{ required: true, message: "排查项类型不能为空", trigger: "blur" },
|
||||
],
|
||||
CHECKITEMNAME: [
|
||||
{ required: true, message: "排查项名称不能为空", trigger: "blur" },
|
||||
],
|
||||
REMARKS: [
|
||||
{ required: true, message: "排查项说明不能为空", trigger: "blur" },
|
||||
],
|
||||
};
|
||||
const formRef = ref(null);
|
||||
const fnClose = () => {
|
||||
formRef.value.resetFields();
|
||||
visible.value = false;
|
||||
};
|
||||
const fnSubmit = debounce(
|
||||
1000,
|
||||
async () => {
|
||||
await useFormValidate(formRef);
|
||||
props.type === "add"
|
||||
? await setDrivingTypeAdd({ ...form.value })
|
||||
: await setDrivingTypeEdit({ ...form.value });
|
||||
ElMessage.success("操作成功");
|
||||
fnClose();
|
||||
emits("get-data");
|
||||
},
|
||||
{ atBegin: true }
|
||||
);
|
||||
|
||||
const drivingTypeList = await layoutFnGetDrivingType();
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,145 @@
|
|||
<template>
|
||||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="100px"
|
||||
@submit.prevent="fnResetPagination"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="检查项类型" prop="CHECKTYPE_ID">
|
||||
<el-select v-model="searchForm.CHECKTYPE_ID">
|
||||
<el-option
|
||||
v-for="item in drivingTypeList"
|
||||
:key="item.BIANMA"
|
||||
:label="item.NAME"
|
||||
:value="item.BIANMA"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnResetPagination">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
v-model:pagination="pagination"
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
>
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="CHECKITEMNAME"
|
||||
label="检查项名称"
|
||||
width="330"
|
||||
/>
|
||||
<el-table-column prop="CHECKTYPE_NAME" label="检查项类型" width="130" />
|
||||
<el-table-column prop="REMARKS" label="检查项说明" width="230" />
|
||||
<el-table-column prop="CORP_NAME" label="经营企业" width="230" />
|
||||
<el-table-column prop="TRANSPORTVEHICLE" label="经营类型" width="230" />
|
||||
<el-table-column prop="CREATTIME" label="创建时间" width="130" />
|
||||
<el-table-column prop="OPERATTIME" label="修改时间" width="130" />
|
||||
<el-table-column label="操作" >
|
||||
<template #default="{ row }">
|
||||
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="fnAddOrEdit(row.DRIVINGTYPE_ID, 'edit')"
|
||||
>
|
||||
修改
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
text
|
||||
link
|
||||
@click="deleteItem(row.DRIVINGTYPE_ID)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<template #button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="fnAddOrEdit('', 'add')"
|
||||
>
|
||||
新增
|
||||
</el-button>
|
||||
</template>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
<add
|
||||
v-model:visible="data.addOrEditDialog.visible"
|
||||
v-model:form="data.addOrEditDialog.form"
|
||||
:type="data.addOrEditDialog.type"
|
||||
@get-data="fnResetPagination"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { serialNumber } from "@/assets/js/utils";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import { nextTick,reactive } from "vue";
|
||||
import Add from "./components/add.vue";
|
||||
import {
|
||||
getSafetyDrivingTypeList, getSafetyDrivingTypeView,
|
||||
setDrivingTypeDelete,
|
||||
} from "@/request/traffic_driving_type.js";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import {layoutFnGetDrivingType} from "@/assets/js/data_dictionary.js";
|
||||
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getSafetyDrivingTypeList);
|
||||
const data = reactive({
|
||||
addOrEditDialog: {
|
||||
visible: false,
|
||||
type: "",
|
||||
form: {
|
||||
CHECKITEMNAME: "",
|
||||
REMARKS: "",
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const fnAddOrEdit = async (DRIVINGTYPE_ID, type) => {
|
||||
data.addOrEditDialog.visible = true;
|
||||
await nextTick();
|
||||
data.addOrEditDialog.type = type;
|
||||
if (type === "edit") {
|
||||
const resData = await getSafetyDrivingTypeView({ DRIVINGTYPE_ID });
|
||||
data.addOrEditDialog.form = resData.pd;
|
||||
}
|
||||
};
|
||||
|
||||
// 删除事件
|
||||
const deleteItem = async (value) => {
|
||||
await ElMessageBox.confirm(`确定要删除吗?`, {
|
||||
type: "warning",
|
||||
});
|
||||
await setDrivingTypeDelete({ DRIVINGTYPE_ID: value });
|
||||
ElMessage.success("删除成功");
|
||||
fnGetData();
|
||||
};
|
||||
|
||||
|
||||
const drivingTypeList = await layoutFnGetDrivingType();
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
Loading…
Reference in New Issue