forked from integrated_whb/integrated_whb_vue
生产安全事故档案模块开发
parent
3ec021ff30
commit
9472c26770
|
@ -49,6 +49,24 @@ export const LOCATIONTYPEMENU = [
|
|||
{ id: "目的地", name: "2" },
|
||||
];
|
||||
|
||||
export const PENALTYMETHODMENU = [
|
||||
{ id: "罚款", name: "1" },
|
||||
{ id: "罚钱", name: "2" },
|
||||
{ id: "赔礼道歉", name: "3" },
|
||||
];
|
||||
|
||||
export const EDUCATIONALMENU = [
|
||||
{ id: "专科", name: "1" },
|
||||
{ id: "本科", name: "2" },
|
||||
{ id: "博士", name: "3" },
|
||||
];
|
||||
|
||||
export const ACCIDENTNATUREMENU = [
|
||||
{ id: "火灾", name: "1" },
|
||||
{ id: "车祸", name: "2" },
|
||||
{ id: "天灾", name: "3" },
|
||||
];
|
||||
|
||||
export const PRINT_STYLE =
|
||||
'<style type="text/css" media="print">\n' +
|
||||
" @page { size: landscape; }\n" +
|
||||
|
@ -60,32 +78,27 @@ export const SPECIAL_ENTERPRISES = [
|
|||
"13cf0f4ec77e4d98ae8cdd9c3386ae0c",
|
||||
];
|
||||
|
||||
|
||||
export const OPERATING_VEHICLE_TYPE_LIST = [
|
||||
// 运营车型
|
||||
{ID:'1',NAME:'运输车辆'},
|
||||
{ID:'2',NAME:'货运挂车'},
|
||||
]
|
||||
|
||||
// 运营车型
|
||||
{ ID: "1", NAME: "运输车辆" },
|
||||
{ ID: "2", NAME: "货运挂车" },
|
||||
];
|
||||
|
||||
export const DUE_STATUS_LIST = [
|
||||
// 到期状态
|
||||
{ID:'1',NAME:'未到期'},
|
||||
{ID:'0',NAME:'已到期'},
|
||||
{ID:'2',NAME:'即将到期'},
|
||||
]
|
||||
|
||||
// 到期状态
|
||||
{ ID: "1", NAME: "未到期" },
|
||||
{ ID: "0", NAME: "已到期" },
|
||||
{ ID: "2", NAME: "即将到期" },
|
||||
];
|
||||
|
||||
export const REMINDER_STATUS_LIST = [
|
||||
// 提醒状态
|
||||
{ID:'1',NAME:'开启'},
|
||||
{ID:'0',NAME:'关闭'},
|
||||
]
|
||||
|
||||
// 提醒状态
|
||||
{ ID: "1", NAME: "开启" },
|
||||
{ ID: "0", NAME: "关闭" },
|
||||
];
|
||||
|
||||
// export const MAINTENANCE_LEVEL_LIST = [
|
||||
// //维保等级
|
||||
// {ID:'1',NAME:'一级维保'},
|
||||
// {ID:'2',NAME:'二级维保'},
|
||||
// ]
|
||||
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
import { post, upload } from "@/request/axios.js";
|
||||
export const getManagementAgreementList = (params) =>
|
||||
post("/managementagreement/listForManagementAgreementlist", params); // 相关方安全管理协议列表
|
||||
|
||||
export const addManagementAgreementView = (params) =>
|
||||
upload("/managementagreement/add", params); // 添加 相关方安全管理协议
|
||||
|
||||
export const editManagementAgreementView = (params) =>
|
||||
upload("/managementagreement/edit", params); // 修改 相关方安全管理协议
|
||||
export const infoManagementAgreementView = (params) =>
|
||||
upload("/managementagreement/goEdit", params); // 详情 相关方安全管理协议
|
||||
|
||||
export const deleteManagementAgreementView = (params) =>
|
||||
upload("/managementagreement/delete", params); // 删除 相关方安全管理协议
|
|
@ -0,0 +1,15 @@
|
|||
import { post, upload } from "@/request/axios.js";
|
||||
export const getAccidentInvestigationList = (params) =>
|
||||
post("/accidentinvestigation/listForAccidentInvestigation", params);
|
||||
|
||||
export const setAccidentInvestigationDelete = (params) =>
|
||||
post("/accidentinvestigation/delete", params);
|
||||
|
||||
export const addAccidentInvestigationView = (params) =>
|
||||
upload("/accidentinvestigation/add", params);
|
||||
|
||||
export const editAccidentInvestigation = (params) =>
|
||||
upload("/accidentinvestigation/edit", params);
|
||||
|
||||
export const infoAccidentInvestigation = (params) =>
|
||||
post("/accidentinvestigation/goEdit", params);
|
|
@ -8,3 +8,6 @@ export const editAssessmentView = (params) =>
|
|||
upload("/assessment/edit", params); // 修改 安全责任制考核
|
||||
export const infoAssessmentView = (params) =>
|
||||
upload("/assessment/goEdit", params); // 详情 安全责任制考核
|
||||
|
||||
export const deleteAssessmentView = (params) =>
|
||||
upload("/assessment/delete", params); // 删除 安全责任制考核
|
||||
|
|
|
@ -8,3 +8,6 @@ export const editProductionView = (params) =>
|
|||
upload("/production/edit", params); // 修改 安全生产目标
|
||||
export const infoProductionView = (params) =>
|
||||
upload("/production/goEdit", params); // 详情 安全生产目标
|
||||
|
||||
export const deleteProductionView = (params) =>
|
||||
upload("/production/delete", params); // 删除 安全生产目标
|
||||
|
|
|
@ -9,3 +9,6 @@ export const editStaffingView = (params) =>
|
|||
upload("/managementstaffing/edit", params); // 修改 管理人员配备
|
||||
export const infoStaffingView = (params) =>
|
||||
upload("/managementstaffing/goEdit", params); // 详情 管理人员配备
|
||||
|
||||
export const deleteStaffingView = (params) =>
|
||||
upload("/managementstaffing/delete", params); // 删除 管理人员配备
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
import { post, upload } from "@/request/axios.js";
|
||||
export const getViolationRegistrationList = (params) =>
|
||||
post("/violationregistration/listForViolationRegistration", params); // 登记列表
|
||||
|
||||
export const setViolationRegistrationDelete = (params) =>
|
||||
post("/violationregistration/delete", params); // 登记删除
|
||||
|
||||
export const addViolationRegistrationView = (params) =>
|
||||
upload("/violationregistration/add", params); // 添加登记
|
||||
|
||||
export const editViolationRegistration = (params) =>
|
||||
upload("/violationregistration/edit", params); // 修改登记
|
||||
|
||||
export const infoViolationRegistration = (params) =>
|
||||
post("/violationregistration/goEdit", params); // 详情登记
|
|
@ -95,10 +95,11 @@
|
|||
import { serialNumber } from "@/assets/js/utils";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import { onMounted, reactive, ref } from "vue";
|
||||
import router from "@/router/index.js";
|
||||
import { getSecurityCustomerList } from "@/request/customer_management.js";
|
||||
import { getSecurityPerson } from "@/request/waybill_registration.js";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
const router = useRouter();
|
||||
const tableRef = ref(null);
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getSecurityCustomerList);
|
||||
|
|
|
@ -8,21 +8,6 @@
|
|||
>
|
||||
<el-divider content-position="left">添加</el-divider>
|
||||
<el-row :gutter="20">
|
||||
<!-- <el-col :span="8">-->
|
||||
<!-- <el-form-item label="运输企业" prop="TRANSPORTATIONCOMPANY">-->
|
||||
<!-- <el-select-->
|
||||
<!-- v-model="data.form.TRANSPORTATIONCOMPANY"-->
|
||||
<!-- placeholder="请选择运输企业"-->
|
||||
<!-- >-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="item in data.unitsList"-->
|
||||
<!-- :key="item.CORPINFO_ID"-->
|
||||
<!-- :label="item.CORP_NAME"-->
|
||||
<!-- :value="item.CORP_NAME"-->
|
||||
<!-- />-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="地点类型" prop="LOCATIONTYPE">
|
||||
<el-select
|
||||
|
|
|
@ -93,10 +93,11 @@
|
|||
import { serialNumber } from "@/assets/js/utils";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import { onMounted, reactive, ref } from "vue";
|
||||
import router from "@/router/index.js";
|
||||
import { getSecurityPerson } from "@/request/waybill_registration.js";
|
||||
import { getSecurityLocationList } from "@/request/location_management.js";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
const router = useRouter();
|
||||
const tableRef = ref(null);
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getSecurityLocationList);
|
||||
|
|
|
@ -266,7 +266,7 @@ import LayoutDepartment from "@/components/department/index.vue";
|
|||
import { getPostListAll, getUserListAll } from "@/request/data_dictionary.js";
|
||||
import { getSecurityCustomerList } from "@/request/customer_management.js";
|
||||
import { getSecurityLocationList } from "@/request/location_management.js";
|
||||
import { getOperationVehicleList } from "@/request/operation_vehicle.js";
|
||||
import { getOperationList } from "@/request/operation_vehicle.js";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
const formRef = ref(null);
|
||||
|
@ -337,7 +337,7 @@ const data = reactive({
|
|||
});
|
||||
const router = useRouter();
|
||||
const fnVehicle = async () => {
|
||||
const res = await getOperationVehicleList();
|
||||
const res = await getOperationList();
|
||||
const varList = res.varList || [];
|
||||
data.OperationVehicle = varList.map((item) => item.PLATE_NUMBER);
|
||||
};
|
||||
|
|
|
@ -103,15 +103,14 @@ import {
|
|||
dateteSecurityAllNotice,
|
||||
} from "@/request/safety_production_related.js";
|
||||
import { getSecurityWaybillreList } from "@/request/waybill_registration.js";
|
||||
import router from "@/router/index.js";
|
||||
import { ElMessageBox, ElMessage } from "element-plus";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import useButtonJurisdiction from "@/assets/js/useButtonJurisdiction.js";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
const router = useRouter();
|
||||
const buttonJurisdiction = await useButtonJurisdiction("riskunit");
|
||||
|
||||
const tableRef = ref(null);
|
||||
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getSecurityWaybillreList);
|
||||
const data = reactive({
|
||||
|
|
|
@ -130,15 +130,14 @@ import {
|
|||
dateteSecurityAllNotice,
|
||||
} from "@/request/safety_production_related.js";
|
||||
import { getSecurityWaybillreList } from "@/request/waybill_registration.js";
|
||||
import router from "@/router/index.js";
|
||||
import { ElMessageBox, ElMessage } from "element-plus";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import useButtonJurisdiction from "@/assets/js/useButtonJurisdiction.js";
|
||||
import { useRoute } from "vue-router";
|
||||
|
||||
const router = useRoute();
|
||||
const buttonJurisdiction = await useButtonJurisdiction("riskunit");
|
||||
|
||||
const tableRef = ref(null);
|
||||
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getSecurityWaybillreList);
|
||||
const data = reactive({
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
v-model:file-list="form.file"
|
||||
accept=".pdf"
|
||||
:limit="9"
|
||||
:before-upload="fnUpload"
|
||||
:size="100"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="到期时间" prop="EXPIRYDATE">
|
||||
|
@ -150,15 +150,6 @@ const fnSubmit = async () => {
|
|||
// 触发更新数据的事件
|
||||
emits("get-data");
|
||||
};
|
||||
|
||||
const fnUpload = (file) => {
|
||||
const isLt100M = file.size / 1024 / 1024 < 100;
|
||||
if (!isLt100M) {
|
||||
ElMessage.error("文件大小不能超过100M");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
|
|
|
@ -124,8 +124,9 @@ import {
|
|||
getSafetyContractList,
|
||||
infoContractView,
|
||||
} from "@/request/traffic_safety_contract.js";
|
||||
import router from "@/router/index.js";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
const router = useRouter();
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getSafetyContractList);
|
||||
const data = reactive({
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
v-model:file-list="form.file"
|
||||
accept=".pdf"
|
||||
:limit="9"
|
||||
:before-upload="fnUpload"
|
||||
:size="100"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="到期时间" prop="EXPIRYDATE">
|
||||
|
@ -155,15 +155,6 @@ const fnSubmit = async () => {
|
|||
// 触发更新数据的事件
|
||||
emits("get-data");
|
||||
};
|
||||
|
||||
const fnUpload = (file) => {
|
||||
const isLt100M = file.size / 1024 / 1024 < 100;
|
||||
if (!isLt100M) {
|
||||
ElMessage.error("文件大小不能超过100M");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
|
|
|
@ -88,6 +88,14 @@
|
|||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
text
|
||||
link
|
||||
type="primary"
|
||||
@click="deleteItem(row.STAFFING_ID)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<template #button>
|
||||
|
@ -117,10 +125,12 @@ import useListData from "@/assets/js/useListData.js";
|
|||
import Add from "./components/add.vue";
|
||||
import { nextTick, reactive } from "vue";
|
||||
import {
|
||||
deleteStaffingView,
|
||||
getSafetyStaffingList,
|
||||
infoStaffingView,
|
||||
} from "@/request/traffic_safety_staffing.js";
|
||||
import ViewInfo from "./components/view.vue";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getSafetyStaffingList);
|
||||
|
@ -154,6 +164,15 @@ const fnView = async (STAFFING_ID) => {
|
|||
data.viewDialog.info = resData.pd;
|
||||
data.viewDialog.visible = true;
|
||||
};
|
||||
// 删除事件
|
||||
const deleteItem = async (value) => {
|
||||
await ElMessageBox.confirm(`确定要删除吗?`, {
|
||||
type: "warning",
|
||||
});
|
||||
await deleteStaffingView({ STAFFING_ID: value });
|
||||
ElMessage.success("删除成功");
|
||||
fnGetData();
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
|
|
|
@ -0,0 +1,613 @@
|
|||
<template>
|
||||
<layout-card>
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="data.form"
|
||||
:rules="rules"
|
||||
label-width="175px"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-divider content-position="left">事故人员信息</el-divider>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="事故人员" prop="USER_ID">
|
||||
<el-select v-model="data.form.USER_ID" placeholder="请选择事故人员">
|
||||
<el-option
|
||||
v-for="item in data.unitsList"
|
||||
:key="item.USER_ID"
|
||||
:label="item.NAME"
|
||||
:value="item.USER_ID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="人员性别" prop="SEX">
|
||||
<el-select v-model="data.form.SEX" placeholder="请选择人员性别">
|
||||
<el-option label="男" :value="'1'" />
|
||||
<el-option label="女" :value="'0'" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="人员年龄" prop="AGE">
|
||||
<el-input v-model="data.form.AGE" placeholder="请输入人员年龄" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="文化水平" prop="EDUCATIONALLEVEL">
|
||||
<el-select
|
||||
v-model="data.form.EDUCATIONALLEVEL"
|
||||
placeholder="请选择文化水平"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in EDUCATIONALMENU"
|
||||
:key="item.id"
|
||||
:label="item.id"
|
||||
:value="item.name"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="工作部门" prop="DEPARTMENT">
|
||||
<el-input
|
||||
v-model="data.form.DEPARTMENT"
|
||||
placeholder="请输入工作部门"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="员工工种" prop="JOBTYPE">
|
||||
<el-input
|
||||
v-model="data.form.JOBTYPE"
|
||||
placeholder="请输入员工工种"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item prop="ENTRYDATE" label="入职日期">
|
||||
<el-date-picker
|
||||
v-model="data.form.ENTRYDATE"
|
||||
type="date"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="选择日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-divider content-position="left">事故调查</el-divider>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item prop="ACCIDENTDATE" label="事故日期">
|
||||
<el-date-picker
|
||||
v-model="data.form.ACCIDENTDATE"
|
||||
type="date"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="选择日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="事故位置" prop="ACCIDENTLOCATION">
|
||||
<el-input
|
||||
v-model="data.form.ACCIDENTLOCATION"
|
||||
placeholder="请输入事故位置"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="受伤部位" prop="INJUREDPART">
|
||||
<el-input
|
||||
v-model="data.form.INJUREDPART"
|
||||
placeholder="请输入受伤部位"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="20">
|
||||
<el-form-item label="持证情况" prop="CERTIFICATIONSTATUS">
|
||||
<el-input
|
||||
v-model="data.form.CERTIFICATIONSTATUS"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
placeholder="请输入持证情况"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="20">
|
||||
<el-form-item label="教育情况" prop="EDUCATIONSITUATION">
|
||||
<el-input
|
||||
v-model="data.form.EDUCATIONSITUATION"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
placeholder="请输入教育情况"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="20">
|
||||
<el-form-item label="故事描述" prop="ACCIDENTDESCRIPTION">
|
||||
<el-input
|
||||
v-model="data.form.ACCIDENTDESCRIPTION"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
placeholder="请输入故事描述"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="事故性质" prop="ACCIDENTNATURE">
|
||||
<el-select
|
||||
v-model="data.form.ACCIDENTNATURE"
|
||||
placeholder="请选择事故性质"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in ACCIDENTNATUREMENU"
|
||||
:key="item.id"
|
||||
:label="item.id"
|
||||
:value="item.name"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="当事人" prop="PARTY">
|
||||
<el-input v-model="data.form.PARTY" placeholder="请输入当事人" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item prop="CONFIRMATIONTIME" label="确认时间">
|
||||
<el-date-picker
|
||||
v-model="data.form.CONFIRMATIONTIME"
|
||||
type="date"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="选择日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-divider content-position="left">事故分析</el-divider>
|
||||
</el-col>
|
||||
<el-col :span="20">
|
||||
<el-form-item label="故事分析" prop="ACCIDENTANALYSIS">
|
||||
<el-input
|
||||
v-model="data.form.ACCIDENTANALYSIS"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
placeholder="请输入故事分析"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="20">
|
||||
<el-form-item label="惩罚意见" prop="PUNISHMENTOPINION">
|
||||
<el-input
|
||||
v-model="data.form.PUNISHMENTOPINION"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
placeholder="请输入惩罚意见"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="责任人" prop="RESPONSIBLEPERSON">
|
||||
<el-input
|
||||
v-model="data.form.RESPONSIBLEPERSON"
|
||||
placeholder="请输入责任人"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="次要责任人" prop="SECONDARYRESPONSIBLEPERSON">
|
||||
<el-input
|
||||
v-model="data.form.SECONDARYRESPONSIBLEPERSON"
|
||||
placeholder="请输入次要责任人"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-divider content-position="left">整改措施</el-divider>
|
||||
</el-col>
|
||||
<el-col :span="20">
|
||||
<el-form-item label="防范措施" prop="PREVENTIVEMEASURES">
|
||||
<el-input
|
||||
v-model="data.form.PREVENTIVEMEASURES"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
placeholder="请输入防范措施"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="20">
|
||||
<el-form-item label="完成情况" prop="COMPLETIONSTATUS">
|
||||
<el-input
|
||||
v-model="data.form.COMPLETIONSTATUS"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
placeholder="请输入完成情况"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item
|
||||
label="整改责任人"
|
||||
prop="RECTIFICATIONRESPONSIBLEPERSON"
|
||||
>
|
||||
<el-input
|
||||
v-model="data.form.RECTIFICATIONRESPONSIBLEPERSON"
|
||||
placeholder="请输入整改责任人"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item prop="RECTIFICATIONTIME" label="整改时间">
|
||||
<el-date-picker
|
||||
v-model="data.form.RECTIFICATIONTIME"
|
||||
type="date"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="选择日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="20">
|
||||
<el-form-item label="主管意见" prop="SUPERVISOROPINION">
|
||||
<el-input
|
||||
v-model="data.form.SUPERVISOROPINION"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
placeholder="请输入主管意见"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="主管领导" prop="SUPERVISORLEADER">
|
||||
<el-input
|
||||
v-model="data.form.SUPERVISORLEADER"
|
||||
placeholder="请输入主管领导"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item prop="SUPERVISORCONFIRMATIONTIME" label="确认时间">
|
||||
<el-date-picker
|
||||
v-model="data.form.SUPERVISORCONFIRMATIONTIME"
|
||||
type="date"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="选择日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="20">
|
||||
<el-form-item label="安监意见" prop="SAFETYSUPERVISIONOPINION">
|
||||
<el-input
|
||||
v-model="data.form.SAFETYSUPERVISIONOPINION"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
placeholder="请输入安监意见"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="安监部门" prop="SAFETYSUPERVISIONDEPARTMENT">
|
||||
<el-input
|
||||
v-model="data.form.SAFETYSUPERVISIONDEPARTMENT"
|
||||
placeholder="请输入安监部门"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item
|
||||
prop="SAFETYSUPERVISIONCONFIRMATIONTIME"
|
||||
label="确认时间"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="data.form.SAFETYSUPERVISIONCONFIRMATIONTIME"
|
||||
type="date"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="选择日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="校验人" prop="INSPECTOR">
|
||||
<el-input
|
||||
v-model="data.form.INSPECTOR"
|
||||
placeholder="请输入校验人"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item prop="INSPECTORCONFIRMATIONTIME" label="确认时间">
|
||||
<el-date-picker
|
||||
v-model="data.form.INSPECTORCONFIRMATIONTIME"
|
||||
type="date"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="选择日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-divider content-position="left">事故认定</el-divider>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="工伤等级" prop="WORKINJURYIDENTIFICATIONLEVEL">
|
||||
<el-input
|
||||
v-model="data.form.WORKINJURYIDENTIFICATIONLEVEL"
|
||||
placeholder="请输入工伤等级"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="事故记录人" prop="ACCIDENTRECORDPERSON">
|
||||
<el-input
|
||||
v-model="data.form.ACCIDENTRECORDPERSON"
|
||||
placeholder="请输入事故记录人"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item prop="REGISTRATIONDATE" label="登记日期">
|
||||
<el-date-picker
|
||||
v-model="data.form.REGISTRATIONDATE"
|
||||
type="date"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="选择日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="事故报告记录" prop="fileList">
|
||||
<layout-upload
|
||||
v-model:file-list="data.form.fileList"
|
||||
accept=".pdf"
|
||||
delete-to-server
|
||||
:limit="9"
|
||||
:size="100"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="事故报告记录" prop="ACCIDENTANALYSISRECORD">
|
||||
<layout-upload
|
||||
v-model:file-list="data.form.ACCIDENTANALYSISRECORD"
|
||||
accept=".pdf"
|
||||
delete-to-server
|
||||
:limit="9"
|
||||
:size="100"
|
||||
/>
|
||||
</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 { getUserListAll } from "@/request/safety_production_related.js";
|
||||
import { onMounted, reactive, ref, toRaw } from "vue";
|
||||
import { ACCIDENTNATUREMENU, EDUCATIONALMENU } from "@/assets/js/constant.js";
|
||||
import LayoutUpload from "@/components/upload/index.vue";
|
||||
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { useRouter, useRoute } from "vue-router";
|
||||
import {
|
||||
addAccidentInvestigationView,
|
||||
editAccidentInvestigation,
|
||||
} from "@/request/production_accident.js";
|
||||
|
||||
// 获取路由实例
|
||||
const route = useRoute();
|
||||
// 通过路由查询参数来判断模式
|
||||
const isEditMode = ref(false);
|
||||
const ACCIDENTINVESTIGATION_ID = ref("");
|
||||
|
||||
const formRef = ref(null);
|
||||
const rules = reactive({
|
||||
USER_ID: [{ required: true, message: "请选择事故人员", trigger: "change" }],
|
||||
SEX: [{ required: true, message: "请选择人员性别", trigger: "change" }],
|
||||
AGE: [{ required: true, message: "请输入人员年龄", trigger: "blur" }],
|
||||
EDUCATIONALLEVEL: [
|
||||
{ required: true, message: "请选择文化水平", trigger: "change" },
|
||||
],
|
||||
DEPARTMENT: [{ required: true, message: "请输入工作部门", trigger: "blur" }],
|
||||
JOBTYPE: [{ required: true, message: "请输入员工工种", trigger: "blur" }],
|
||||
ENTRYDATE: [{ required: true, message: "请选择入职日期", trigger: "change" }],
|
||||
ACCIDENTDATE: [
|
||||
{ required: true, message: "请选择事故日期", trigger: "change" },
|
||||
],
|
||||
ACCIDENTLOCATION: [
|
||||
{ required: true, message: "请输入事故位置", trigger: "blur" },
|
||||
],
|
||||
INJUREDPART: [{ required: true, message: "请输入受伤部位", trigger: "blur" }],
|
||||
CERTIFICATIONSTATUS: [
|
||||
{ required: true, message: "请输入持证情况", trigger: "blur" },
|
||||
],
|
||||
EDUCATIONSITUATION: [
|
||||
{ required: true, message: "请输入教育情况", trigger: "blur" },
|
||||
],
|
||||
ACCIDENTDESCRIPTION: [
|
||||
{ required: true, message: "请输入故事描述", trigger: "blur" },
|
||||
],
|
||||
ACCIDENTNATURE: [
|
||||
{ required: true, message: "请选择事故性质", trigger: "change" },
|
||||
],
|
||||
CONFIRMATIONTIME: [
|
||||
{ required: true, message: "请选择确认时间", trigger: "change" },
|
||||
],
|
||||
PARTY: [{ required: true, message: "请输入当事人", trigger: "change" }],
|
||||
ACCIDENTANALYSIS: [
|
||||
{ required: true, message: "请输入故事分析", trigger: "blur" },
|
||||
],
|
||||
PUNISHMENTOPINION: [
|
||||
{ required: true, message: "请输入惩罚意见", trigger: "blur" },
|
||||
],
|
||||
RESPONSIBLEPERSON: [
|
||||
{ required: true, message: "请输入责任人", trigger: "blur" },
|
||||
],
|
||||
SECONDARYRESPONSIBLEPERSON: [
|
||||
{ required: true, message: "请输入次要责任人", trigger: "blur" },
|
||||
],
|
||||
PREVENTIVEMEASURES: [
|
||||
{ required: true, message: "请输入防范措施", trigger: "blur" },
|
||||
],
|
||||
COMPLETIONSTATUS: [
|
||||
{ required: true, message: "请输入完成情况", trigger: "blur" },
|
||||
],
|
||||
RECTIFICATIONRESPONSIBLEPERSON: [
|
||||
{ required: true, message: "请输入整改责任人", trigger: "blur" },
|
||||
],
|
||||
RECTIFICATIONTIME: [
|
||||
{ required: true, message: "请选择整改时间", trigger: "change" },
|
||||
],
|
||||
SUPERVISOROPINION: [
|
||||
{ required: true, message: "请输入主管意见", trigger: "blur" },
|
||||
],
|
||||
SUPERVISORLEADER: [
|
||||
{ required: true, message: "请输入主管领导", trigger: "blur" },
|
||||
],
|
||||
SUPERVISORCONFIRMATIONTIME: [
|
||||
{ required: true, message: "请选择确认时间", trigger: "change" },
|
||||
],
|
||||
SAFETYSUPERVISIONOPINION: [
|
||||
{ required: true, message: "请输入安监意见", trigger: "blur" },
|
||||
],
|
||||
SAFETYSUPERVISIONDEPARTMENT: [
|
||||
{ required: true, message: "请输入安监部门", trigger: "blur" },
|
||||
],
|
||||
SAFETYSUPERVISIONCONFIRMATIONTIME: [
|
||||
{ required: true, message: "请选择确认时间", trigger: "change" },
|
||||
],
|
||||
INSPECTOR: [{ required: true, message: "请输入校验人", trigger: "blur" }],
|
||||
INSPECTORCONFIRMATIONTIME: [
|
||||
{ required: true, message: "请选择确认时间", trigger: "change" },
|
||||
],
|
||||
WORKINJURYIDENTIFICATIONLEVEL: [
|
||||
{ required: true, message: "请输入工伤等级", trigger: "blur" },
|
||||
],
|
||||
ACCIDENTRECORDPERSON: [
|
||||
{ required: true, message: "请输入事故记录人", trigger: "blur" },
|
||||
],
|
||||
REGISTRATIONDATE: [
|
||||
{ required: true, message: "请选择登记日期", trigger: "change" },
|
||||
],
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
isEditMode.value = route.query.mode === "edit";
|
||||
ACCIDENTINVESTIGATION_ID.value = route.query.ACCIDENTINVESTIGATION_ID || "";
|
||||
|
||||
if (isEditMode.value) {
|
||||
Object.keys(rules).forEach((key) => {
|
||||
rules[key] = []; // 清空每项校验规则
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
const router = useRouter();
|
||||
const fnGetUnitsList = async () => {
|
||||
const resData = await getUserListAll({});
|
||||
data.unitsList = resData.userList;
|
||||
};
|
||||
fnGetUnitsList();
|
||||
|
||||
const data = reactive({
|
||||
form: {
|
||||
USER_ID: "",
|
||||
SEX: "",
|
||||
AGE: "",
|
||||
EDUCATIONALLEVEL: "",
|
||||
DEPARTMENT: "",
|
||||
JOBTYPE: "",
|
||||
ENTRYDATE: "",
|
||||
ACCIDENTDATE: "",
|
||||
ACCIDENTLOCATION: "",
|
||||
INJUREDPART: "",
|
||||
CERTIFICATIONSTATUS: "",
|
||||
EDUCATIONSITUATION: "",
|
||||
ACCIDENTDESCRIPTION: "",
|
||||
ACCIDENTNATURE: "",
|
||||
CONFIRMATIONTIME: "",
|
||||
ACCIDENTANALYSIS: "",
|
||||
PUNISHMENTOPINION: "",
|
||||
RESPONSIBLEPERSON: "",
|
||||
SECONDARYRESPONSIBLEPERSON: "",
|
||||
PREVENTIVEMEASURES: "",
|
||||
COMPLETIONSTATUS: "",
|
||||
RECTIFICATIONRESPONSIBLEPERSON: "",
|
||||
RECTIFICATIONTIME: "",
|
||||
SUPERVISOROPINION: "",
|
||||
SUPERVISORLEADER: "",
|
||||
SUPERVISORCONFIRMATIONTIME: "",
|
||||
SAFETYSUPERVISIONOPINION: "",
|
||||
PARTY: "",
|
||||
SAFETYSUPERVISIONDEPARTMENT: "",
|
||||
SAFETYSUPERVISIONCONFIRMATIONTIME: "",
|
||||
INSPECTOR: "",
|
||||
INSPECTORCONFIRMATIONTIME: "",
|
||||
WORKINJURYIDENTIFICATIONLEVEL: "",
|
||||
ACCIDENTRECORDPERSON: "",
|
||||
REGISTRATIONDATE: "",
|
||||
fileList: [],
|
||||
ACCIDENTANALYSISRECORD: [],
|
||||
},
|
||||
});
|
||||
|
||||
const fnSubmit = async () => {
|
||||
await useFormValidate(formRef);
|
||||
|
||||
const rawForm = toRaw(data.form);
|
||||
const formData = new FormData();
|
||||
Object.keys(rawForm).forEach((key) => {
|
||||
const value = rawForm[key];
|
||||
formData.append(key, value);
|
||||
});
|
||||
|
||||
data.form.fileList.forEach((file) => {
|
||||
if (file.raw) formData.append("FFILEONE", file.raw);
|
||||
});
|
||||
|
||||
data.form.ACCIDENTANALYSISRECORD.forEach((file) => {
|
||||
if (file.raw) formData.append("FFILETWO", file.raw);
|
||||
});
|
||||
|
||||
if (isEditMode.value && ACCIDENTINVESTIGATION_ID.value) {
|
||||
formData.append("ACCIDENTINVESTIGATION_ID", ACCIDENTINVESTIGATION_ID.value);
|
||||
await editAccidentInvestigation(formData);
|
||||
ElMessage.success("编辑成功");
|
||||
} else {
|
||||
await addAccidentInvestigationView(formData);
|
||||
ElMessage.success("添加成功");
|
||||
}
|
||||
|
||||
router.push("/mechanical_files/production_accident");
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.flexBox {
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
|
||||
.addBtn {
|
||||
margin-left: 12px;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,168 @@
|
|||
<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="USER_ID">
|
||||
<el-select v-model="searchForm.USER_ID">
|
||||
<el-option
|
||||
v-for="item in data.unitsList"
|
||||
:key="item.USER_ID"
|
||||
:label="item.NAME"
|
||||
:value="item.USER_ID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="事故日期" prop="ACCIDENTDATE">
|
||||
<el-date-picker
|
||||
v-model="searchForm.ACCIDENTDATE"
|
||||
type="date"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="选择日期"
|
||||
/>
|
||||
</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="INCIDENTNUMBER" label="事故编号" width="250" />
|
||||
<el-table-column prop="NAME" label="事故人员" />
|
||||
<el-table-column prop="CORP_NAME" label="工作部门" />
|
||||
<el-table-column prop="JOBTYPE" label="人员工种" />
|
||||
<el-table-column prop="INJUREDPART" label="受伤部位" />
|
||||
<el-table-column label="事故性质">
|
||||
<template #default="{ row }">
|
||||
{{ convertACCIDENTNATURE(row.ACCIDENTNATURE) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="WORKINJURYIDENTIFICATIONLEVEL"
|
||||
label="工伤等级"
|
||||
/>
|
||||
<el-table-column prop="CERTIFICATIONNUMBER" label="认定书编号" />
|
||||
<el-table-column prop="ACCIDENTRECORDPERSON" label="事故登记人" />
|
||||
<el-table-column prop="ACCIDENTDATE" label="事故日期" />
|
||||
<el-table-column prop="REGISTRATIONDATE" label="登记日期" />
|
||||
<el-table-column prop="CREATETIME" label="创建时间" />
|
||||
<el-table-column prop="OPERATTIME" label="修改时间" />
|
||||
<el-table-column label="操作" width="180">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="fnAddOrEdit(row.ACCIDENTINVESTIGATION_ID)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
text
|
||||
link
|
||||
@click="deleteItem(row.ACCIDENTINVESTIGATION_ID)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<template #button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="
|
||||
router.push({
|
||||
path: '/mechanical_files/production_accident/add',
|
||||
})
|
||||
"
|
||||
>
|
||||
添加
|
||||
</el-button>
|
||||
</template>
|
||||
</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.js";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import { reactive } from "vue";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { useRouter } from "vue-router";
|
||||
import { getUserListAll } from "@/request/safety_production_related.js";
|
||||
import {
|
||||
getAccidentInvestigationList,
|
||||
setAccidentInvestigationDelete,
|
||||
} from "@/request/production_accident.js";
|
||||
import { ACCIDENTNATUREMENU } from "@/assets/js/constant.js";
|
||||
|
||||
const router = useRouter();
|
||||
const fnGetUnitsList = async () => {
|
||||
const resData = await getUserListAll({});
|
||||
data.unitsList = resData.userList;
|
||||
};
|
||||
fnGetUnitsList();
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getAccidentInvestigationList);
|
||||
const data = reactive({
|
||||
analysisDialog: {
|
||||
visible: false,
|
||||
info: {},
|
||||
},
|
||||
});
|
||||
const convertACCIDENTNATURE = (name) => {
|
||||
const vehicle = ACCIDENTNATUREMENU.find((item) => item.name === name);
|
||||
return vehicle ? vehicle.id : "未知";
|
||||
};
|
||||
const fnAddOrEdit = (ACCIDENTINVESTIGATION_ID) => {
|
||||
router.push({
|
||||
path: "/mechanical_files/production_accident/add",
|
||||
query: {
|
||||
mode: "edit",
|
||||
ACCIDENTINVESTIGATION_ID,
|
||||
},
|
||||
});
|
||||
};
|
||||
// 删除事件
|
||||
const deleteItem = async (value) => {
|
||||
await ElMessageBox.confirm(`确定要删除吗?`, {
|
||||
type: "warning",
|
||||
});
|
||||
await setAccidentInvestigationDelete({ ACCIDENTINVESTIGATION_ID: value });
|
||||
ElMessage.success("删除成功");
|
||||
fnGetData();
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -28,7 +28,7 @@
|
|||
v-model:file-list="form.file"
|
||||
accept=".pdf"
|
||||
:limit="9"
|
||||
:before-upload="fnUpload"
|
||||
:size="100"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="到期时间" prop="EXPIRYDATE">
|
||||
|
@ -159,15 +159,6 @@ const fnSubmit = async () => {
|
|||
// 触发更新数据的事件
|
||||
emits("get-data");
|
||||
};
|
||||
|
||||
const fnUpload = (file) => {
|
||||
const isLt100M = file.size / 1024 / 1024 < 100;
|
||||
if (!isLt100M) {
|
||||
ElMessage.error("文件大小不能超过100M");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
|
|
|
@ -128,8 +128,9 @@ import {
|
|||
infoOccupationalHazardsView,
|
||||
} from "@/request/traffic_occupational_hazards.js";
|
||||
import ViewInfo from "./components/view.vue";
|
||||
import router from "@/router/index.js";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
const router = useRouter();
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getSafetyOccupationalHazardsList);
|
||||
const data = reactive({
|
||||
|
|
|
@ -0,0 +1,155 @@
|
|||
<template>
|
||||
<el-dialog
|
||||
v-model="visible"
|
||||
:title="type === 'edit' ? '修改' : '新增'"
|
||||
:before-close="fnClose"
|
||||
>
|
||||
<el-form ref="formRef" :rules="rules" :model="form" label-width="150px">
|
||||
<el-form-item
|
||||
v-if="type === 'add'"
|
||||
label="名称"
|
||||
prop="MANAGEMENTAGREEMENTNAME"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.MANAGEMENTAGREEMENTNAME"
|
||||
placeholder="请输入名称"
|
||||
style="width: 300px"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="type === 'edit'"
|
||||
label="经营企业"
|
||||
prop="OPERATINGCOMPANY"
|
||||
>
|
||||
<span>{{ operatingCompany }}</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="会议附件" prop="file">
|
||||
<layout-upload
|
||||
v-model:file-list="form.file"
|
||||
accept=".pdf"
|
||||
:limit="9"
|
||||
:size="100"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="到期时间" prop="EXPIRYDATE">
|
||||
<el-date-picker
|
||||
v-model="form.EXPIRYDATE"
|
||||
type="date"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="选择时间"
|
||||
/>
|
||||
</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 { onMounted, ref, toRaw } from "vue";
|
||||
import { useVModels } from "@vueuse/core";
|
||||
import { ElMessage } from "element-plus";
|
||||
import LayoutUpload from "@/components/upload/index.vue";
|
||||
import {
|
||||
addManagementAgreementView,
|
||||
editManagementAgreementView,
|
||||
getManagementAgreementList,
|
||||
} from "@/request/management_agreement.js";
|
||||
|
||||
const props = defineProps({
|
||||
visible: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
default: false,
|
||||
},
|
||||
form: {
|
||||
type: {},
|
||||
required: false,
|
||||
default: false,
|
||||
},
|
||||
loading: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
default: false,
|
||||
},
|
||||
options: {
|
||||
type: Array,
|
||||
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 = {
|
||||
file: [{ required: true, message: "请上传附件", trigger: "change" }],
|
||||
MANAGEMENTAGREEMENTNAME: [
|
||||
{ required: true, message: "请输入名称", trigger: "blur" },
|
||||
],
|
||||
};
|
||||
|
||||
const operatingCompany = ref("");
|
||||
const operationType = ref("");
|
||||
onMounted(async () => {
|
||||
const resData = await getManagementAgreementList();
|
||||
if (resData && resData.varList && resData.varList.length > 0) {
|
||||
operatingCompany.value = resData.varList[0].CORP_NAME;
|
||||
operationType.value = resData.varList[0].OPERATIONTYPE;
|
||||
}
|
||||
});
|
||||
const formRef = ref(null);
|
||||
const fnClose = () => {
|
||||
formRef.value.resetFields();
|
||||
visible.value = false;
|
||||
};
|
||||
|
||||
const fnSubmit = async () => {
|
||||
await formRef.value.validate();
|
||||
|
||||
const rawFormValue = toRaw(form.value);
|
||||
|
||||
const formData = new FormData();
|
||||
|
||||
// 处理文件上传
|
||||
if (Array.isArray(rawFormValue.file)) {
|
||||
rawFormValue.file.forEach((fileItem) => {
|
||||
if (fileItem.raw) {
|
||||
formData.append("FFILE", fileItem.raw);
|
||||
}
|
||||
});
|
||||
}
|
||||
Object.keys(rawFormValue).forEach((key) => {
|
||||
if (key !== "file") {
|
||||
formData.append(key, rawFormValue[key]);
|
||||
}
|
||||
});
|
||||
// 执行添加或编辑操作
|
||||
if (props.type === "add") {
|
||||
await addManagementAgreementView(formData);
|
||||
} else {
|
||||
formData.append(
|
||||
"MANAGEMENTAGREEMENT_ID",
|
||||
rawFormValue.MANAGEMENTAGREEMENT_ID
|
||||
);
|
||||
await editManagementAgreementView(formData);
|
||||
}
|
||||
|
||||
// 操作成功提示
|
||||
ElMessage.success("操作成功");
|
||||
|
||||
// 关闭表单对话框
|
||||
fnClose();
|
||||
|
||||
// 触发更新数据的事件
|
||||
emits("get-data");
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,70 @@
|
|||
<template>
|
||||
<el-dialog v-model="visible" title="查看">
|
||||
<el-descriptions :column="1" border>
|
||||
<el-descriptions-item label="名称">
|
||||
{{ info.MANAGEMENTAGREEMENTNAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="上传人">
|
||||
{{ info.CREATORNAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="上传时间">
|
||||
{{ info.CREATETIME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="文件">
|
||||
<div @click="previewPdf(info.ATTACHMENT_ROUTE)">
|
||||
{{ getFileName(info.ATTACHMENT_ROUTE) }}
|
||||
<el-button type="primary" class="ml-10">预览</el-button>
|
||||
</div>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<template #footer>
|
||||
<el-button @click="visible = false">关闭</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<layout-pdf
|
||||
v-if="pdfVisible"
|
||||
:src="pdfSrc"
|
||||
:visible="pdfVisible"
|
||||
@update:visible="pdfVisible = $event"
|
||||
></layout-pdf>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from "vue"; // 导入ref
|
||||
import { useVModel } from "@vueuse/core";
|
||||
import LayoutPdf from "@/components/pdf/index.vue";
|
||||
|
||||
const props = defineProps({
|
||||
visible: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
default: false,
|
||||
},
|
||||
info: {
|
||||
type: Object,
|
||||
required: true,
|
||||
default: () => ({}),
|
||||
},
|
||||
labelName: {
|
||||
type: String,
|
||||
required: true,
|
||||
default: "",
|
||||
},
|
||||
});
|
||||
|
||||
const pdfVisible = ref(false); // 定义pdfVisible为响应式引用
|
||||
const pdfSrc = ref(""); // 定义pdfSrc为响应式引用
|
||||
|
||||
const getFileName = (path) => {
|
||||
return path.split("/").pop();
|
||||
};
|
||||
const previewPdf = (src) => {
|
||||
pdfSrc.value = src; // 设置PDF源地址
|
||||
pdfVisible.value = true; // 显示PDF预览对话框
|
||||
};
|
||||
|
||||
const emits = defineEmits(["update:visible"]);
|
||||
const visible = useVModel(props, "visible", emits);
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,38 @@
|
|||
<template>
|
||||
<div>
|
||||
<layout-card>
|
||||
<div v-if="loading">加载中...</div>
|
||||
<div v-else>
|
||||
<layout-pdf
|
||||
v-model:visible="pdfDialog.visible"
|
||||
:src="pdfDialog.src"
|
||||
append-to-body
|
||||
></layout-pdf>
|
||||
</div>
|
||||
</layout-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, onMounted } from "vue";
|
||||
import { useRoute } from "vue-router";
|
||||
import LayoutPdf from "@/components/pdf/index.vue";
|
||||
import { infoProductionView } from "@/request/traffic_safety_production.js";
|
||||
|
||||
const VITE_FILE_URL = import.meta.env.VITE_FILE_URL;
|
||||
const route = useRoute();
|
||||
const SAFETYPRODUCTION_ID = route.query.SAFETYPRODUCTION_ID;
|
||||
const loading = ref(true); // 用于指示文件是否正在加载
|
||||
const pdfDialog = ref({ visible: false, src: "" });
|
||||
|
||||
onMounted(async () => {
|
||||
const response = await infoProductionView({ SAFETYPRODUCTION_ID });
|
||||
if (response.pd && response.pd.ATTACHMENT_ROUTE) {
|
||||
pdfDialog.value.src = VITE_FILE_URL + response.pd.ATTACHMENT_ROUTE;
|
||||
pdfDialog.value.visible = true;
|
||||
}
|
||||
loading.value = false; // 加载完成
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -0,0 +1,180 @@
|
|||
<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="MANAGEMENTAGREEMENTNAME">
|
||||
<el-input v-model="searchForm.MANAGEMENTAGREEMENTNAME" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="完成状态" prop="COMPLETIONSTATUS">
|
||||
<el-select v-model="searchForm.COMPLETIONSTATUS">
|
||||
<el-option label="已上传" :value="1" />
|
||||
<el-option label="未上传" :value="0" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="有效状态" prop="VALIDSTATUS">
|
||||
<el-select v-model="searchForm.VALIDSTATUS">
|
||||
<el-option label="正常" :value="1" />
|
||||
<el-option label="未生效" :value="0" />
|
||||
</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
|
||||
ref="tableRef"
|
||||
v-model:pagination="pagination"
|
||||
:data="list"
|
||||
row-key="MANAGEMENTAGREEMENT_ID"
|
||||
@get-data="fnGetData"
|
||||
>
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="MANAGEMENTAGREEMENTNAME"
|
||||
label="名称"
|
||||
width="250"
|
||||
/>
|
||||
<el-table-column prop="COMPLETIONSTATUS" label="完成状态" width="250">
|
||||
<template #default="{ row }">
|
||||
<el-tag v-if="row.COMPLETIONSTATUS === '1'">已上传</el-tag>
|
||||
<el-tag v-else-if="row.COMPLETIONSTATUS === '0'">未上传</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="有效状态" prop="VALIDSTATUS">
|
||||
<template #default="{ row }">
|
||||
<el-tag v-if="row.VALIDSTATUS === '1'">正常</el-tag>
|
||||
<el-tag v-else-if="row.VALIDSTATUS === '0'">未生效</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="CORP_NAME" label="经营企业" width="150" />
|
||||
<el-table-column prop="EXPIRYDATE" label="到期时间" width="150" />
|
||||
<el-table-column prop="CREATETIME" label="创建时间" width="150" />
|
||||
<el-table-column prop="OPERATTIME" label="修改时间" width="150" />
|
||||
<el-table-column label="操作" width="180">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="fnView(row.MANAGEMENTAGREEMENT_ID)"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="fnAddOrEdit(row.MANAGEMENTAGREEMENT_ID, 'edit')"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
text
|
||||
link
|
||||
type="primary"
|
||||
@click="deleteItem(row.MANAGEMENTAGREEMENT_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"
|
||||
/>
|
||||
<view-info
|
||||
v-model:visible="data.viewDialog.visible"
|
||||
:info="data.viewDialog.info"
|
||||
:label-name="labelName"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { serialNumber } from "@/assets/js/utils";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import Add from "./components/add.vue";
|
||||
import { nextTick, reactive } from "vue";
|
||||
import ViewInfo from "./components/view.vue";
|
||||
import {
|
||||
deleteManagementAgreementView,
|
||||
getManagementAgreementList,
|
||||
infoManagementAgreementView,
|
||||
} from "@/request/management_agreement.js";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getManagementAgreementList);
|
||||
const data = reactive({
|
||||
addOrEditDialog: {
|
||||
visible: false,
|
||||
type: "",
|
||||
form: {},
|
||||
},
|
||||
viewDialog: {
|
||||
visible: false,
|
||||
info: {},
|
||||
},
|
||||
});
|
||||
const fnAddOrEdit = async (MANAGEMENTAGREEMENT_ID = "", type = "add") => {
|
||||
data.addOrEditDialog.visible = true;
|
||||
data.addOrEditDialog.type = type;
|
||||
if (type === "edit" && MANAGEMENTAGREEMENT_ID) {
|
||||
data.addOrEditDialog.form.MANAGEMENTAGREEMENT_ID = MANAGEMENTAGREEMENT_ID;
|
||||
} else {
|
||||
data.addOrEditDialog.form = {};
|
||||
}
|
||||
|
||||
await nextTick();
|
||||
};
|
||||
// 删除事件
|
||||
const deleteItem = async (value) => {
|
||||
await ElMessageBox.confirm(`确定要删除吗?`, {
|
||||
type: "warning",
|
||||
});
|
||||
await deleteManagementAgreementView({ MANAGEMENTAGREEMENT_ID: value });
|
||||
ElMessage.success("删除成功");
|
||||
fnGetData();
|
||||
};
|
||||
const fnView = async (MANAGEMENTAGREEMENT_ID) => {
|
||||
const resData = await infoManagementAgreementView({
|
||||
MANAGEMENTAGREEMENT_ID,
|
||||
});
|
||||
data.viewDialog.info = resData.pd;
|
||||
data.viewDialog.visible = true;
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -0,0 +1,202 @@
|
|||
<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="5">
|
||||
<el-form-item label="从业人员" prop="USER_ID">
|
||||
<el-select v-model="data.form.USER_ID" placeholder="请选择从业人员">
|
||||
<el-option
|
||||
v-for="item in data.unitsList"
|
||||
:key="item.USER_ID"
|
||||
:label="item.NAME"
|
||||
:value="item.USER_ID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="车牌号" prop="TRANSPORTVEHICLE">
|
||||
<el-select
|
||||
v-model="data.form.TRANSPORTVEHICLE"
|
||||
placeholder="请选择车辆"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in TRUCKMENU"
|
||||
:key="item.id"
|
||||
:label="item.id"
|
||||
:value="item.name"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="处罚方式" prop="PENALTYMETHOD">
|
||||
<el-select
|
||||
v-model="data.form.PENALTYMETHOD"
|
||||
placeholder="请选择会议类型"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in PENALTYMETHODMENU"
|
||||
:key="item.id"
|
||||
:label="item.id"
|
||||
:value="item.name"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item prop="PENALTYTIME" label="处罚时间">
|
||||
<el-date-picker
|
||||
v-model="data.form.PENALTYTIME"
|
||||
type="date"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="选择日期"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="处罚事件" prop="PENALTYEVENT">
|
||||
<el-input
|
||||
v-model="data.form.PENALTYEVENT"
|
||||
placeholder="请输入处罚事件"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="处罚措施" prop="PENALTYMEASURES">
|
||||
<el-input
|
||||
v-model="data.form.PENALTYMEASURES"
|
||||
placeholder="请输入处罚措施"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="处罚登记人" prop="PENALTYREGISTRANT">
|
||||
<el-input
|
||||
v-model="data.form.PENALTYREGISTRANT"
|
||||
placeholder="请输入处罚登记人"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="会议文本附件" prop="fileList">
|
||||
<layout-upload
|
||||
v-model:file-list="data.form.fileList"
|
||||
accept=".pdf"
|
||||
delete-to-server
|
||||
:limit="9"
|
||||
:size="100"
|
||||
/>
|
||||
</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 { getUserListAll } from "@/request/safety_production_related.js";
|
||||
import { onMounted, reactive, ref, toRaw } from "vue";
|
||||
import { PENALTYMETHODMENU, TRUCKMENU } from "@/assets/js/constant.js";
|
||||
import LayoutUpload from "@/components/upload/index.vue";
|
||||
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { useRouter, useRoute } from "vue-router";
|
||||
import {
|
||||
addViolationRegistrationView,
|
||||
editViolationRegistration,
|
||||
} from "@/request/violation_registration.js";
|
||||
|
||||
const formRef = ref(null);
|
||||
const rules = {
|
||||
TRANSPORTVEHICLE: [
|
||||
{ required: true, message: "请选择运行车辆", trigger: "blur" },
|
||||
],
|
||||
USER_ID: [{ required: true, message: "请选择从业人员", trigger: "change" }],
|
||||
PENALTYMETHOD: [
|
||||
{ required: true, message: "请选择处罚方式", trigger: "blur" },
|
||||
],
|
||||
PENALTYEVENT: [
|
||||
{ required: true, message: "请输入处罚事件", trigger: "change" },
|
||||
],
|
||||
PENALTYMEASURES: [
|
||||
{ required: true, message: "请输入处罚措施", trigger: "blur" },
|
||||
],
|
||||
PENALTYREGISTRANT: [
|
||||
{ required: true, message: "请输入处罚登记人", trigger: "blur" },
|
||||
],
|
||||
};
|
||||
|
||||
// 获取路由实例
|
||||
const route = useRoute();
|
||||
// 通过路由查询参数来判断模式
|
||||
const isEditMode = ref(false);
|
||||
const registrationId = ref("");
|
||||
|
||||
onMounted(() => {
|
||||
isEditMode.value = route.query.mode === "edit";
|
||||
registrationId.value = route.query.registrationId || "";
|
||||
});
|
||||
|
||||
const router = useRouter();
|
||||
const fnGetUnitsList = async () => {
|
||||
const resData = await getUserListAll({});
|
||||
data.unitsList = resData.userList;
|
||||
};
|
||||
fnGetUnitsList();
|
||||
|
||||
const data = reactive({
|
||||
form: {
|
||||
TRANSPORTVEHICLE: "",
|
||||
USER_ID: "",
|
||||
PENALTYMETHOD: "",
|
||||
PENALTYTIME: "",
|
||||
PENALTYEVENT: "",
|
||||
PENALTYMEASURES: "",
|
||||
PENALTYREGISTRANT: "",
|
||||
fileList: [],
|
||||
},
|
||||
});
|
||||
const fnSubmit = async () => {
|
||||
await useFormValidate(formRef);
|
||||
|
||||
const rawForm = toRaw(data.form);
|
||||
const formData = new FormData();
|
||||
Object.keys(rawForm).forEach((key) => {
|
||||
const value = rawForm[key];
|
||||
formData.append(key, value);
|
||||
});
|
||||
|
||||
if (isEditMode.value && registrationId.value) {
|
||||
formData.append("REGISTRATION_ID", registrationId.value);
|
||||
await editViolationRegistration(formData);
|
||||
ElMessage.success("编辑成功");
|
||||
} else {
|
||||
await addViolationRegistrationView(formData);
|
||||
ElMessage.success("添加成功");
|
||||
}
|
||||
|
||||
router.push("/production_course_regulate/violation_registration");
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.flexBox {
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
|
||||
.addBtn {
|
||||
margin-left: 12px;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,167 @@
|
|||
<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="USER_ID">
|
||||
<el-select v-model="searchForm.USER_ID">
|
||||
<el-option
|
||||
v-for="item in data.unitsList"
|
||||
:key="item.USER_ID"
|
||||
:label="item.NAME"
|
||||
:value="item.USER_ID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="处罚时间" prop="PENALTYTIME">
|
||||
<el-date-picker
|
||||
v-model="searchForm.PENALTYTIME"
|
||||
type="date"
|
||||
format="YYYY-MM-DD"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="选择日期"
|
||||
/>
|
||||
</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 label="运输车辆" width="250">
|
||||
<template #default="{ row }">
|
||||
{{ convertTransportVehicle(row.TRANSPORTVEHICLE) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="NAME" label="从业人员" width="250" />
|
||||
<el-table-column prop="PHONE" label="联系电话" />
|
||||
<el-table-column label="处罚方式" width="250">
|
||||
<template #default="{ row }">
|
||||
{{ convertPENALTYMETHOD(row.PENALTYMETHOD) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="PENALTYTIME" label="处罚时间" />
|
||||
<el-table-column prop="CORP_NAME" label="运输企业" />
|
||||
<el-table-column prop="CREATETIME" label="创建时间" />
|
||||
<el-table-column label="操作" width="180">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="fnAddOrEdit(row.REGISTRATION_ID)"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
text
|
||||
link
|
||||
@click="deleteItem(row.REGISTRATION_ID)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<template #button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="
|
||||
router.push({
|
||||
path: '/production_course_regulate/violation_registration/add',
|
||||
})
|
||||
"
|
||||
>
|
||||
添加
|
||||
</el-button>
|
||||
</template>
|
||||
</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.js";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import { PENALTYMETHODMENU, TRUCKMENU } from "@/assets/js/constant.js";
|
||||
import { reactive } from "vue";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { useRouter } from "vue-router";
|
||||
import {
|
||||
getViolationRegistrationList,
|
||||
setViolationRegistrationDelete,
|
||||
} from "@/request/violation_registration.js";
|
||||
import { getUserListAll } from "@/request/safety_production_related.js";
|
||||
|
||||
const router = useRouter();
|
||||
const convertTransportVehicle = (name) => {
|
||||
const vehicle = TRUCKMENU.find((item) => item.name === name);
|
||||
return vehicle ? vehicle.id : "未知车牌号";
|
||||
};
|
||||
const convertPENALTYMETHOD = (name) => {
|
||||
const vehicle = PENALTYMETHODMENU.find((item) => item.name === name);
|
||||
return vehicle ? vehicle.id : "未知处罚方式";
|
||||
};
|
||||
const fnGetUnitsList = async () => {
|
||||
const resData = await getUserListAll({});
|
||||
data.unitsList = resData.userList;
|
||||
};
|
||||
fnGetUnitsList();
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getViolationRegistrationList);
|
||||
const data = reactive({
|
||||
analysisDialog: {
|
||||
visible: false,
|
||||
info: {},
|
||||
},
|
||||
});
|
||||
const fnAddOrEdit = (registrationId) => {
|
||||
router.push({
|
||||
path: "/production_course_regulate/violation_registration/add",
|
||||
query: {
|
||||
mode: "edit",
|
||||
registrationId,
|
||||
},
|
||||
});
|
||||
};
|
||||
// 删除事件
|
||||
const deleteItem = async (value) => {
|
||||
await ElMessageBox.confirm(`确定要删除吗?`, {
|
||||
type: "warning",
|
||||
});
|
||||
await setViolationRegistrationDelete({ REGISTRATION_ID: value });
|
||||
ElMessage.success("删除成功");
|
||||
fnGetData();
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -24,7 +24,7 @@
|
|||
v-model:file-list="form.file"
|
||||
accept=".pdf"
|
||||
:limit="9"
|
||||
:before-upload="fnUpload"
|
||||
:size="100"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="到期时间" prop="EXPIRYDATE">
|
||||
|
@ -141,15 +141,6 @@ const fnSubmit = async () => {
|
|||
// 触发更新数据的事件
|
||||
emits("get-data");
|
||||
};
|
||||
|
||||
const fnUpload = (file) => {
|
||||
const isLt100M = file.size / 1024 / 1024 < 100;
|
||||
if (!isLt100M) {
|
||||
ElMessage.error("文件大小不能超过100M");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
|
|
|
@ -87,6 +87,14 @@
|
|||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
text
|
||||
link
|
||||
type="primary"
|
||||
@click="deleteItem(row.SAFETYASSESSMENT_ID)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<template #button>
|
||||
|
@ -116,10 +124,12 @@ import useListData from "@/assets/js/useListData.js";
|
|||
import Add from "./components/add.vue";
|
||||
import { nextTick, reactive } from "vue";
|
||||
import {
|
||||
deleteAssessmentView,
|
||||
getSafetyAssessmentList,
|
||||
infoAssessmentView,
|
||||
} from "@/request/traffic_safety_assessment.js";
|
||||
import ViewInfo from "./components/view.vue";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getSafetyAssessmentList);
|
||||
|
@ -153,6 +163,16 @@ const fnView = async (SAFETYASSESSMENT_ID) => {
|
|||
data.viewDialog.info = resData.pd;
|
||||
data.viewDialog.visible = true;
|
||||
};
|
||||
|
||||
// 删除事件
|
||||
const deleteItem = async (value) => {
|
||||
await ElMessageBox.confirm(`确定要删除吗?`, {
|
||||
type: "warning",
|
||||
});
|
||||
await deleteAssessmentView({ SAFETYASSESSMENT_ID: value });
|
||||
ElMessage.success("删除成功");
|
||||
fnGetData();
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
v-model:file-list="form.file"
|
||||
accept=".pdf"
|
||||
:limit="9"
|
||||
:before-upload="fnUpload"
|
||||
:size="100"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="到期时间" prop="EXPIRYDATE">
|
||||
|
@ -141,15 +141,6 @@ const fnSubmit = async () => {
|
|||
// 触发更新数据的事件
|
||||
emits("get-data");
|
||||
};
|
||||
|
||||
const fnUpload = (file) => {
|
||||
const isLt100M = file.size / 1024 / 1024 < 100;
|
||||
if (!isLt100M) {
|
||||
ElMessage.error("文件大小不能超过100M");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
|
|
|
@ -87,6 +87,14 @@
|
|||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
text
|
||||
link
|
||||
type="primary"
|
||||
@click="deleteItem(row.SAFETYPRODUCTION_ID)"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<template #button>
|
||||
|
@ -116,10 +124,12 @@ import useListData from "@/assets/js/useListData.js";
|
|||
import Add from "./components/add.vue";
|
||||
import { nextTick, reactive } from "vue";
|
||||
import {
|
||||
deleteProductionView,
|
||||
getSafetyProductionList,
|
||||
infoProductionView,
|
||||
} from "@/request/traffic_safety_production.js";
|
||||
import ViewInfo from "./components/view.vue";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getSafetyProductionList);
|
||||
|
@ -153,6 +163,15 @@ const fnView = async (SAFETYPRODUCTION_ID) => {
|
|||
data.viewDialog.info = resData.pd;
|
||||
data.viewDialog.visible = true;
|
||||
};
|
||||
// 删除事件
|
||||
const deleteItem = async (value) => {
|
||||
await ElMessageBox.confirm(`确定要删除吗?`, {
|
||||
type: "warning",
|
||||
});
|
||||
await deleteProductionView({ SAFETYPRODUCTION_ID: value });
|
||||
ElMessage.success("删除成功");
|
||||
fnGetData();
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
|
|
|
@ -30,9 +30,9 @@
|
|||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
v-model:pagination="pagination"
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="pagination"
|
||||
>
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
|
@ -55,7 +55,7 @@
|
|||
<el-table-column prop="ARRIVALTIME" label="收车时间" />
|
||||
<el-table-column prop="TRANSPORTCOMPANY" label="运输企业" />
|
||||
<el-table-column label="操作" width="180">
|
||||
<template v-slot:default="{ row }">
|
||||
<template #default="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
|
@ -71,18 +71,7 @@
|
|||
>
|
||||
查看
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: '/safety_production_related/safety_meeting/add',
|
||||
})
|
||||
"
|
||||
>
|
||||
添加
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
type="danger"
|
||||
text
|
||||
|
@ -93,6 +82,18 @@
|
|||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<template #button>
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="
|
||||
router.push({
|
||||
path: '/safety_production_related/safety_meeting/add',
|
||||
})
|
||||
"
|
||||
>
|
||||
添加
|
||||
</el-button>
|
||||
</template>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
<edit
|
||||
|
@ -111,9 +112,10 @@ import {
|
|||
getSafetyDrivingLogList,
|
||||
setDrivingLogDelete,
|
||||
} from "@/request/traffic_driving_log.js";
|
||||
import router from "@/router/index.js";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
const router = useRouter();
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getSafetyDrivingLogList);
|
||||
const data = reactive({
|
||||
|
|
|
@ -92,7 +92,7 @@
|
|||
accept=".pdf"
|
||||
delete-to-server
|
||||
:limit="9"
|
||||
:before-upload="fnUpload"
|
||||
:size="100"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
@ -103,7 +103,7 @@
|
|||
accept=".mp4"
|
||||
delete-to-server
|
||||
:limit="9"
|
||||
:before-upload="fnUpload"
|
||||
:size="100"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
@ -211,16 +211,6 @@ const fnSubmit = async () => {
|
|||
ElMessage.success("添加成功");
|
||||
router.push("/safety_production_related/safety_meeting");
|
||||
};
|
||||
|
||||
const fnUpload = (file) => {
|
||||
const isLt100M = file.size / 1024 / 1024 < 100;
|
||||
if (!isLt100M) {
|
||||
ElMessage.error("文件大小不能超过100M");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
const fnSelectPersonSubmit = (selectionData) => {
|
||||
const userIds = selectionData.map((item) => item.USER_ID).join(", ");
|
||||
const names = selectionData.map((item) => item.NAME).join(", ");
|
||||
|
|
|
@ -142,9 +142,10 @@ import {
|
|||
getSafetyMeetingList,
|
||||
setSafetyMeetingDelete,
|
||||
} from "@/request/traffic_safety_meeting.js";
|
||||
import router from "@/router/index.js";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
const router = useRouter();
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getSafetyMeetingList);
|
||||
const data = reactive({
|
||||
|
|
|
@ -131,13 +131,13 @@ import {
|
|||
layoutFnGetNotificationsClassification,
|
||||
dateteSecurityAllNotice,
|
||||
} from "@/request/safety_production_related.js";
|
||||
import router from "@/router/index.js";
|
||||
import { ElMessageBox, ElMessage } from "element-plus";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import useButtonJurisdiction from "@/assets/js/useButtonJurisdiction.js";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
const router = useRouter();
|
||||
const buttonJurisdiction = await useButtonJurisdiction("riskunit");
|
||||
|
||||
const tableRef = ref(null);
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getSecurityNoticeList);
|
||||
|
|
|
@ -1,229 +0,0 @@
|
|||
<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
|
||||
v-model="data.form.MEETING_DATE"
|
||||
type="daterange"
|
||||
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>
|
|
@ -1,272 +0,0 @@
|
|||
<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="CHECKITEMTYPE">
|
||||
<el-input v-model="searchForm.CHECKITEMTYPE" />
|
||||
</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
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="pagination"
|
||||
>
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="CHECKITEMNAME" label="检查项名称" width="130" />
|
||||
<el-table-column prop="CHECKITEMTYPE" label="检查项类型" width="130" />
|
||||
<el-table-column
|
||||
prop="CHECKITEMDESCRIPTION"
|
||||
label="检查项说明"
|
||||
width="130"
|
||||
/>
|
||||
<el-table-column prop="TRANSPORTCOMPANY" label="运输企业" width="130" />
|
||||
<el-table-column
|
||||
prop="TRANSPORTCATEGORY"
|
||||
label="运输类别"
|
||||
width="130"
|
||||
/>
|
||||
<el-table-column prop="CREATETIME" label="创建时间" width="130" />
|
||||
<el-table-column label="操作" width="180">
|
||||
<template v-slot:default="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: '/safety_production_related/driving_log/drivingLog_info',
|
||||
query: {
|
||||
DRIVING_LOG_ID: row.DRIVING_LOG_ID,
|
||||
},
|
||||
})
|
||||
"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: '/safety_production_related/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",
|
||||
});
|
||||
console.log("Sent to backend:", { DRIVING_LOG_ID: value });
|
||||
await setDrivingLogDelete({ DRIVING_LOG_ID: value });
|
||||
ElMessage.success("删除成功");
|
||||
fnGetData();
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
<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="CHECKITEMTYPE">
|
||||
<el-input v-model="searchForm.CHECKITEMTYPE" />
|
||||
</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
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="pagination"
|
||||
>
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="CHECKITEMNAME" label="检查项名称" width="130" />
|
||||
<el-table-column prop="CHECKITEMTYPE" label="检查项类型" width="130" />
|
||||
<el-table-column
|
||||
prop="CHECKITEMDESCRIPTION"
|
||||
label="检查项说明"
|
||||
width="130"
|
||||
/>
|
||||
<el-table-column prop="TRANSPORTCOMPANY" label="运输企业" width="130" />
|
||||
<el-table-column
|
||||
prop="TRANSPORTCATEGORY"
|
||||
label="运输类别"
|
||||
width="130"
|
||||
/>
|
||||
<el-table-column prop="CREATETIME" label="创建时间" width="130" />
|
||||
<el-table-column label="操作" width="180">
|
||||
<template v-slot:default="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: '/safety_production_related/driving_log/drivingLog_info',
|
||||
query: {
|
||||
DRIVING_LOG_ID: row.DRIVING_LOG_ID,
|
||||
},
|
||||
})
|
||||
"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: '/safety_production_related/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",
|
||||
});
|
||||
console.log("Sent to backend:", { DRIVING_LOG_ID: value });
|
||||
await setDrivingLogDelete({ DRIVING_LOG_ID: value });
|
||||
ElMessage.success("删除成功");
|
||||
fnGetData();
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
|
@ -28,7 +28,7 @@
|
|||
v-model:file-list="form.file"
|
||||
accept=".pdf"
|
||||
:limit="9"
|
||||
:before-upload="fnUpload"
|
||||
:size="100"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="到期时间" prop="EXPIRYDATE">
|
||||
|
@ -159,15 +159,6 @@ const fnSubmit = async () => {
|
|||
// 触发更新数据的事件
|
||||
emits("get-data");
|
||||
};
|
||||
|
||||
const fnUpload = (file) => {
|
||||
const isLt100M = file.size / 1024 / 1024 < 100;
|
||||
if (!isLt100M) {
|
||||
ElMessage.error("文件大小不能超过100M");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
|
|
|
@ -128,8 +128,9 @@ import {
|
|||
infoResponsibilityView,
|
||||
} from "@/request/traffic_safety_responsibility.js";
|
||||
import ViewInfo from "./components/view.vue";
|
||||
import router from "@/router/index.js";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
const router = useRouter();
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getSafetyResponsibilityList);
|
||||
const data = reactive({
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
v-model:file-list="form.file"
|
||||
accept=".pdf"
|
||||
:limit="9"
|
||||
:before-upload="fnUpload"
|
||||
:size="100"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="到期时间" prop="EXPIRYDATE">
|
||||
|
@ -160,15 +160,6 @@ const fnSubmit = async () => {
|
|||
// 触发更新数据的事件
|
||||
emits("get-data");
|
||||
};
|
||||
|
||||
const fnUpload = (file) => {
|
||||
const isLt100M = file.size / 1024 / 1024 < 100;
|
||||
if (!isLt100M) {
|
||||
ElMessage.error("文件大小不能超过100M");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
||||
|
|
|
@ -121,7 +121,6 @@
|
|||
<script setup>
|
||||
import { serialNumber } from "@/assets/js/utils";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import router from "@/router/index.js";
|
||||
import Add from "./components/add.vue";
|
||||
import { reactive, watchEffect } from "vue";
|
||||
import {
|
||||
|
@ -129,7 +128,8 @@ import {
|
|||
infoCommitmentView,
|
||||
} from "@/request/traffic_safety_commitment.js";
|
||||
import ViewInfo from "./components/view.vue";
|
||||
|
||||
import { useRouter } from "vue-router";
|
||||
const router = useRouter();
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getSafetyCommitmentList);
|
||||
const data = reactive({
|
||||
|
|
Loading…
Reference in New Issue