Compare commits

...

5 Commits

Author SHA1 Message Date
xiepeng 0e10930e28 Merge remote-tracking branch 'origin/dev' into dev 2024-03-25 10:17:49 +08:00
xiepeng 8a90839b14 Merge remote-tracking branch 'origin/dev' into dev
# Conflicts:
#	src/assets/js/constant.js
#	src/request/assigned_manage.js
#	src/request/enterprise_management.js
#	src/request/operation_vehicle.js
#	src/request/scrap_manage.js
#	src/request/taxation_manage.js
#	src/views/enterprise_management/basics_info_management/freight_trailer/index.vue
#	src/views/enterprise_management/basics_info_management/operation_vehicle/add.vue
#	src/views/enterprise_management/basics_info_management/operation_vehicle/edit.vue
#	src/views/mechanical_files/inspect_annually/index.vue
#	src/views/mechanical_files/insure/index.vue
#	src/views/mechanical_files/scrap_manage/add.vue
#	src/views/mechanical_files/taxation_manage/add.vue
#	src/views/mechanical_files/taxation_manage/edit.vue
2024-03-25 08:52:36 +08:00
xiepeng 70f430b6b6 修改车船税过户显示 营运车辆车牌号唯一 2024-03-25 08:47:41 +08:00
xiepeng abafba83fb Merge remote-tracking branch 'origin/dev' into dev
# Conflicts:
#	src/assets/js/constant.js
#	src/views/enterprise_management/basics_info_management/operation_vehicle/index.vue
#	src/views/mechanical_files/assigned_manage/add.vue
2024-03-19 14:08:38 +08:00
xiepeng 6419d6c50c 过户管理
报废管理
企业安全生产值班记录
生产设备设施台账
劳动防护用品发放记录
消防设备设施台账
上报事件处理台账
2024-03-19 14:04:17 +08:00
54 changed files with 4470 additions and 580 deletions

View File

@ -49,24 +49,6 @@ 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" +
@ -97,8 +79,26 @@ export const REMINDER_STATUS_LIST = [
{ ID: "0", NAME: "关闭" },
];
export const MAINTENANCE_LEVEL_LIST = [
// 维保等级
{ ID: "1", NAME: "一级维保" },
{ ID: "2", NAME: "二级维保" },
export const DISPOSE_STATUS_LIST = [
// 处理状态
{ ID: "1", NAME: "处理中" },
{ ID: "0", NAME: "处理完成" },
];
export const TAXES_PERIOD = [
// 处理状态
{ ID: "1", NAME: "12个月", NUM: "12" },
{ ID: "0", NAME: "6个月", NUM: "6" },
];
export const EXPIRE_STATUS = [
// 处理状态
{ ID: "1", NAME: "未到期" },
{ ID: "0", NAME: "已到期" },
];
// export const MAINTENANCE_LEVEL_LIST = [
// //维保等级
// {ID:'1',NAME:'一级维保'},
// {ID:'2',NAME:'二级维保'},
// ]

View File

@ -68,3 +68,9 @@ export const getOperationVehicleList = (params) =>
export const getVehicleView = (params) =>
upload("/operatingvehicles/operationvehicleList", params); // 获取所有车船税
export const getAssignedOperationVehicleList = (params) =>
post("/assignedmanage/getassignedoperationvehiclelist", params); // 车型选择营运车辆列表
export const getAssignedFreightTrailerList = (params) =>
post("/assignedmanage/getassignedfreighttrailerlist", params); // 车型选择货物挂车列表

View File

@ -63,6 +63,10 @@ export const setFreightTrailerEdit = (params) =>
post("/freightTrailer/edit", params); // 货运挂车修改
export const setFreightTrailerDelete = (params) =>
post("/freightTrailer/delete", params); // 货运挂车删除
export const getChoiceTrailerList = (params) =>
post("/taxationmanage/choicetrailerlist", params); // 车船税添加选择挂车
const getCorpList = (params) => post("/freightTrailer/corpList", params);
export const getFreightTrailerCorpList = async () => {
const resData = await getCorpList();

View File

@ -0,0 +1,13 @@
import { post, upload } from "@/request/axios.js";
export const getEnterpriseSafetyProductionList = (params) =>
post("/enterprisesafetyproduction/list", params); // 企业安全生产值班记录列表
export const setEnterpriseSafetyProductEdit = (params) =>
upload("/enterprisesafetyproduction/goEdit", params); // 修改企业安全生产值班记录
export const setEnterpriseSafetyProductAdd = (params) =>
upload("/enterprisesafetyproduction/add", params); // 新增企业安全生产值班记录
export const setEnterpriseSafetyProductDelete = (params) =>
upload("/enterprisesafetyproduction/delete", params); // 新增企业安全生产值班记录

View File

@ -0,0 +1,16 @@
import { post, upload } from "@/request/axios.js";
export const getEntrenchThingGrantList = (params) =>
post("/labourentrenchthing/list", params); // 企业安全生产值班记录列表
export const setEntrenchThingGrantEdit = (params) =>
upload("/labourentrenchthing/goEdit", params); // 修改企业安全生产值班记录
export const setEntrenchThingGrantAdd = (params) =>
upload("/labourentrenchthing/add", params); // 新增企业安全生产值班记录
export const setEntrenchThingGrantDelete = (params) =>
upload("/labourentrenchthing/delete", params); // 新增企业安全生产值班记录
export const getEntrenchThingGrantEdit = (params) =>
upload("/labourentrenchthing/edit", params); // 修改企业安全生产值班记录

View File

@ -0,0 +1,37 @@
import { post, upload } from "@/request/axios.js";
export const getFirefightingEquipmentFacilityList = (params) =>
post("/firefightingequipmentfacility/list", params); // 生产设备设施台账列表
export const setFirefightingEquipmentFacilityDelete = (params) =>
upload("/firefightingequipmentfacility/delete", params); // 生产设备设施台账列表删除
export const setFirefightingEquipmentFacilityEdit = (params) =>
upload("/firefightingequipmentfacility/goEdit", params); // 修改企业安全生产值班记录
export const setFirefightingEquipmentFacilityAdd = (params) =>
upload("/firefightingequipmentfacility/add", params); // 新增企业安全生产值班记录
export const getFirefightingEquipmentFacilityView = (params) =>
post("/firefightingequipmentfacility/goEdit", params); // 设备设施查看
export const getMaintainFindFirefightingId = (params) =>
post("/firefightingmaintain/findByFirefightingId", params); // 设备设施查看
export const getFirefightingEquipmentFacilityEdit = (params) =>
upload("/firefightingequipmentfacility/edit", params); // 新增企业安全生产值班记录
export const setMaintainAdd = (params) =>
upload("/firefightingmaintain/add", params); // 新增保养
export const setMaintainEdit = (params) =>
upload("/firefightingmaintain/goEdit", params); // 修改保养
export const getMaintainView = (params) =>
post("/firefightingmaintain/goEdit", params); // 获取保养信息
export const getMaintainEdit = (params) =>
upload("/firefightingmaintain/edit", params); // 新增企业安全生产值班记录
export const setFirefightingMaintainDelete = (params) =>
upload("/firefightingmaintain/delete", params); // 保养删除

View File

@ -99,3 +99,15 @@ export const editOperatingVehicleInfo = (params) =>
export const getOperationVehicleInfo = (params) =>
post("/operatingvehicles/findById", params); // 根据Id获取运营车辆信息
export const findByPlateNumber = (params) =>
post("/operatingvehicles/findByPlateNumber", params); // 根据Id获取运营车辆信息
const getCorpList = (params) => post("/operatingvehicles/corpList", params);
export const getOperationVehicleCorpList1 = async () => {
const resData = await getCorpList();
return resData.list;
}; // 货运挂车 企业列表

View File

@ -0,0 +1,32 @@
import { post, upload } from "@/request/axios.js";
export const getProductionEquipmentFacilityList = (params) =>
post("/equipmentfacilitycontroller/list", params); // 生产设备设施台账列表
export const setProductionEquipmentFacilityDelete = (params) =>
upload("/equipmentfacilitycontroller/delete", params); // 生产设备设施台账列表删除
export const setProductionEquipmentFacilityEdit = (params) =>
upload("/equipmentfacilitycontroller/goEdit", params); // 修改企业安全生产值班记录
export const setProductionEquipmentFacilityAdd = (params) =>
upload("/equipmentfacilitycontroller/add", params); // 新增企业安全生产值班记录
export const getProductionEquipmentFacilityView = (params) =>
post("/equipmentfacilitycontroller/goEdit", params); // 设备设施查看
export const getMaintainFindProductionEquipmentFacilityId = (params) =>
post("/maintain/findByProductionEquipmentFacilityId", params); // 设备设施查看
export const getProductionEquipmentFacilityEdit = (params) =>
upload("/equipmentfacilitycontroller/edit", params); // 新增企业安全生产值班记录
export const setMaintainAdd = (params) => upload("/maintain/add", params); // 新增保养
export const setMaintainEdit = (params) => upload("/maintain/goEdit", params); // 修改保养
export const getMaintainView = (params) => post("/maintain/goEdit", params); // 获取保养信息
export const getMaintainEdit = (params) => upload("/maintain/edit", params); // 新增企业安全生产值班记录
export const setMaintainDelete = (params) => upload("/maintain/delete", params); // 保养删除

View File

@ -0,0 +1,19 @@
import { post, upload } from "@/request/axios.js";
export const getReportedIncidentDisposeList = (params) =>
post("/reportedincident/list", params); // 上报事件处理记录列表
export const setReportedIncidentDisposeEdit = (params) =>
upload("/reportedincident/goEdit", params); // 修改上报事件处理记录
export const setReportedIncidentDisposeAdd = (params) =>
upload("/reportedincident/add", params); // 新增上报事件处理记录
export const setReportedIncidentDisposeDelete = (params) =>
upload("/reportedincident/delete", params); // 删除上报事件处理记录
export const findByIdReportedIncidentDisposeInfo = (params) =>
upload("/reportedincident/goEdit", params); // 删除上报事件处理记录
export const setReportedIncidentDispose = (params) =>
upload("/reportedincident/edit", params); // 修改上报事件处理记录

View File

@ -24,3 +24,9 @@ export const findByIdScrapManageInfo = (params) =>
export const getOperationVehicleList = (params) =>
upload("/operatingvehicles/operationvehicleList", params); // 获取所有车船税
export const getScrapOperationVehicleList = (params) =>
post("/scrapmanage/getscrapoperationvehiclelist", params); // 车型选择营运车辆列表
export const getScrapFreightTrailerList = (params) =>
post("/scrapmanage/getscrapfreighttrailerlist", params); // 车型选择货物挂车列表

View File

@ -48,7 +48,7 @@ export const editTaxationManageInfo = (params) =>
upload("/taxationmanage/edit", params); // 修改车船税管理
export const getTrailerList = (params) =>
upload("/freightTrailer/vehicleList", params); // 获取所有挂车
upload("/freightTrailer/trailerList", params); // 获取所有挂车
export const getTaxationList = (params) =>
upload("/taxationmanage/taxationList", params); // 获取所有车船税

View File

@ -65,10 +65,10 @@
<el-table-column
prop="INITIAL_REGISTRATION_DATE"
label="初登日期"
width="200"
width="150"
/>
<el-table-column prop="DUE_DATE" label="到期日期" width="200" />
<el-table-column prop="DEPARTMENT_NAME" label="归属部门" width="200" />
<el-table-column prop="DUE_DATE" label="到期日期" width="150" />
<el-table-column prop="DEPARTMENT_NAME" label="归属部门" width="150" />
<el-table-column label="操作" width="150">
<template #default="{ row }">
<el-button

View File

@ -70,14 +70,10 @@
</el-col>
<el-col :span="6">
<el-form-item label="归属部门" prop="BELONGING_DEPARTMENT">
<el-select v-model="form.BELONGING_DEPARTMENT">
<el-option
v-for="item in getBelongingDepartment"
:key="item.BIANMA"
:label="item.NAME"
:value="item.NAME"
/>
</el-select>
<layout-department
v-model="form.BELONGING_DEPARTMENT"
placeholder="请选择归属部门"
/>
</el-form-item>
</el-col>
<el-col :span="6">
@ -330,7 +326,6 @@ import { ref } from "vue";
import {
layoutFnGetVehicleColor,
layoutFnGetTransportCategory,
layoutFnGetBelongingDepartment,
layoutFnGetFuelType,
layoutFnGetEmissionStandard,
layoutFnGetVehicleType,
@ -340,6 +335,7 @@ import {
addOperatingVehicleInfo,
editOperatingVehicleInfo,
findByIdOperatingVehicleInfo,
findByPlateNumber,
} from "@/request/operation_vehicle.js";
import useFormValidate from "@/assets/js/useFormValidate.js";
import LayoutUpload from "@/components/upload/index.vue";
@ -348,13 +344,43 @@ import { debounce } from "throttle-debounce";
import { useRoute, useRouter } from "vue-router";
import { setUploadImg } from "@/request/api.js";
import { addingPrefixToFile } from "@/assets/js/utils.js";
import LayoutDepartment from "@/components/department/index.vue";
const router = useRouter();
const route = useRoute();
const OPERATING_ID = route.query.OPERATING_ID;
const isPlateNumberRepetition = async (rule, vehicleNumber, callback) => {
if (vehicleNumber) {
const vehicleCount = await findByPlateNumber({ vehicleNumber });
if (vehicleCount.pd) {
callback(new Error("车辆已存在"));
} else callback();
}
};
const isVehicleNumber = (rule, vehicleNumber, callback) => {
if (vehicleNumber) {
const xreg =
/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/;
const creg =
/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;
if (vehicleNumber.length === 7) {
if (creg.test(vehicleNumber) === false) {
callback(new Error("格式错误"));
} else callback();
} else if (vehicleNumber.length === 8) {
if (xreg.test(vehicleNumber) === false) {
callback(new Error("格式错误"));
} else callback();
} else {
callback(new Error("格式错误"));
}
} else callback();
};
const rules = {
PLATE_NUMBER: [
{ required: true, message: "车牌号不能为空", trigger: "blur" },
{ required: true, message: "请输入车牌号", trigger: "blur" },
{ validator: isVehicleNumber, trigger: "blur" },
{ validator: isPlateNumberRepetition, trigger: "blur" },
],
VEHICLE_COLOR: [
{ required: true, message: "车辆颜色不能为空", trigger: "change" },
@ -375,11 +401,23 @@ const rules = {
{ required: true, message: "车主/业主不能为空", trigger: "blur" },
],
VEHICLEOWNER_NUMBER: [
{ required: true, message: "车主电话不能为空", trigger: "blur" },
{ required: true, message: "请输入", trigger: "blur" },
{ min: 11, max: 11, message: "请输入11位手机号码", trigger: "blur" },
{
pattern:
/^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/,
message: "请输入正确的手机号码",
},
],
CONTACT: [{ required: true, message: "联系人不能为空", trigger: "blur" }],
CONTACT_NUMBER: [
{ required: true, message: "联系电话不能为空", trigger: "blur" },
{ required: true, message: "请输入", trigger: "blur" },
{ min: 11, max: 11, message: "请输入11位手机号码", trigger: "blur" },
{
pattern:
/^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/,
message: "请输入正确的手机号码",
},
],
FIRSTSHOW_DATE: [
{ required: true, message: "初登日期不能为空", trigger: "blur" },
@ -446,7 +484,6 @@ const form = ref({
});
const getVehicleColorList = await layoutFnGetVehicleColor();
const getTransportCategoryList = await layoutFnGetTransportCategory();
const getBelongingDepartment = await layoutFnGetBelongingDepartment();
const getFuelTypeList = await layoutFnGetFuelType();
const getEmissionStandardList = await layoutFnGetEmissionStandard();
const getVehicleTypeList = await layoutFnGetVehicleType();
@ -481,7 +518,7 @@ const fnSubmit = debounce(
await fnUploadImage(
currentOperatingVehicleId,
form.value.HEADSTOCK_PHOTO[i].raw,
120
130
);
}
}
@ -490,7 +527,7 @@ const fnSubmit = debounce(
await fnUploadImage(
currentOperatingVehicleId,
form.value.DRIVINGLICENSE_PHOTO[i].raw,
121
131
);
}
}
@ -499,7 +536,7 @@ const fnSubmit = debounce(
await fnUploadImage(
currentOperatingVehicleId,
form.value.OPERATING_CERTIFICATE_PHOTO[i].raw,
122
132
);
}
}

View File

@ -1,17 +1,12 @@
<template>
<layout-card>
<el-divider content-position="left">基本信息</el-divider>
<el-form
ref="formRef"
:model="data.form"
:rules="rules"
label-width="100px"
>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="6">
<el-form-item label="编号" prop="GOODSSELFNUMBER">
<el-input
v-model="data.form.GOODSSELFNUMBER"
v-model="form.GOODSSELFNUMBER"
placeholder="请填写自编号"
/>
</el-form-item>
@ -19,14 +14,14 @@
<el-col :span="6">
<el-form-item prop="PLATE_NUMBER" label="车牌号">
<el-input
v-model="data.form.PLATE_NUMBER"
v-model="form.PLATE_NUMBER"
placeholder="请填写车牌号"
></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="车辆颜色" prop="VEHICLE_COLOR">
<el-select v-model="data.form.VEHICLE_COLOR">
<el-select v-model="form.VEHICLE_COLOR">
<el-option
v-for="item in getVehicleColorList"
:key="item.BIANMA"
@ -39,7 +34,7 @@
<el-col :span="6">
<el-form-item label="车架号" prop="FRAMES_NUMBER">
<el-input
v-model="data.form.FRAMES_NUMBER"
v-model="form.FRAMES_NUMBER"
placeholder="请填写车架号"
></el-input>
</el-form-item>
@ -47,7 +42,7 @@
<el-col :span="6">
<el-form-item label="发动机号" prop="ENGINE_NUMBER">
<el-input
v-model="data.form.ENGINE_NUMBER"
v-model="form.ENGINE_NUMBER"
placeholder="请填写发动机号"
></el-input>
</el-form-item>
@ -55,14 +50,14 @@
<el-col :span="6">
<el-form-item label="营运证号" prop="OPERATING_CERTIFICATE">
<el-input
v-model="data.form.OPERATING_CERTIFICATE"
v-model="form.OPERATING_CERTIFICATE"
placeholder="请填写营运证号"
></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="运输类别" prop="TRANSPORT_TYPE">
<el-select v-model="data.form.TRANSPORT_TYPE">
<el-select v-model="form.TRANSPORT_TYPE">
<el-option
v-for="item in getTransportCategoryList"
:key="item.BIANMA"
@ -75,7 +70,7 @@
<el-col :span="6">
<el-form-item label="归属部门" prop="BELONGING_DEPARTMENT">
<el-select
v-model="data.form.BELONGING_DEPARTMENT"
v-model="form.BELONGING_DEPARTMENT"
placeholder="请选择归属部门"
>
<el-option
@ -89,7 +84,7 @@
</el-col>
<el-col :span="6">
<el-form-item label="车辆类型" prop="VEHICLE_TYPE">
<el-select v-model="data.form.VEHICLE_TYPE">
<el-select v-model="form.VEHICLE_TYPE">
<el-option
v-for="item in getVehicleTypeList"
:key="item.BIANMA"
@ -102,7 +97,7 @@
<el-col :span="6">
<el-form-item label="车主/业主" prop="VEHICLEOWNER">
<el-input
v-model="data.form.VEHICLEOWNER"
v-model="form.VEHICLEOWNER"
placeholder="请填写车主/业主"
></el-input>
</el-form-item>
@ -110,7 +105,7 @@
<el-col :span="6">
<el-form-item label="车主电话" prop="VEHICLEOWNER_NUMBER">
<el-input
v-model="data.form.VEHICLEOWNER_NUMBER"
v-model="form.VEHICLEOWNER_NUMBER"
placeholder="请填写车主电话"
></el-input>
</el-form-item>
@ -118,7 +113,7 @@
<el-col :span="6">
<el-form-item label="车主住址" prop="VEHICLEOWNER_ADDRESS">
<el-input
v-model="data.form.VEHICLEOWNER_ADDRESS"
v-model="form.VEHICLEOWNER_ADDRESS"
placeholder="请填写车主住址"
></el-input>
</el-form-item>
@ -126,7 +121,7 @@
<el-col :span="6">
<el-form-item label="联系人" prop="CONTACT">
<el-input
v-model="data.form.CONTACT"
v-model="form.CONTACT"
placeholder="请填写联系人"
></el-input>
</el-form-item>
@ -134,7 +129,7 @@
<el-col :span="6">
<el-form-item label="联系电话" prop="CONTACT_NUMBER">
<el-input
v-model="data.form.CONTACT_NUMBER"
v-model="form.CONTACT_NUMBER"
placeholder="请填写联系电话"
></el-input>
</el-form-item>
@ -142,7 +137,7 @@
<el-col :span="6">
<el-form-item label="家庭住址" prop="HOME_ADDRESS">
<el-input
v-model="data.form.HOME_ADDRESS"
v-model="form.HOME_ADDRESS"
placeholder="请输入家庭住址"
></el-input>
</el-form-item>
@ -150,7 +145,7 @@
<el-col :span="6">
<el-form-item label="实际住址" prop="PHYSICAL_ADDRESS">
<el-input
v-model="data.form.PHYSICAL_ADDRESS"
v-model="form.PHYSICAL_ADDRESS"
placeholder="请输入实际住址"
></el-input>
</el-form-item>
@ -158,7 +153,7 @@
<el-col :span="6">
<el-form-item label="初登日期" prop="FIRSTSHOW_DATE">
<el-date-picker
v-model="data.form.FIRSTSHOW_DATE"
v-model="form.FIRSTSHOW_DATE"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
@ -169,7 +164,7 @@
<el-col :span="6">
<el-form-item label="发证日期" prop="CERTIFICATE_DATE">
<el-date-picker
v-model="data.form.CERTIFICATE_DATE"
v-model="form.CERTIFICATE_DATE"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
@ -180,7 +175,7 @@
<el-col :span="6">
<el-form-item label="到期日期" prop="EXPIRE_DATE">
<el-date-picker
v-model="data.form.EXPIRE_DATE"
v-model="form.EXPIRE_DATE"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
@ -190,7 +185,7 @@
</el-col>
<el-col :span="6">
<el-form-item label="车载设备" prop="VEHICLE_EQUIPMENT">
<el-select v-model="data.form.VEHICLE_EQUIPMENT">
<el-select v-model="form.VEHICLE_EQUIPMENT">
<el-option
v-for="item in getMobileUnitList"
:key="item.BIANMA"
@ -204,7 +199,7 @@
<el-col :span="6">
<el-form-item label="车辆品牌" prop="VEHICLE_BRAND">
<el-input
v-model="data.form.VEHICLE_BRAND"
v-model="form.VEHICLE_BRAND"
placeholder="请填写车辆品牌"
></el-input>
</el-form-item>
@ -212,14 +207,14 @@
<el-col :span="6">
<el-form-item label="车辆型号" prop="VEHICLE_MODEL">
<el-input
v-model="data.form.VEHICLE_MODEL"
v-model="form.VEHICLE_MODEL"
placeholder="请填写车辆型号"
></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="燃料类型" prop="FUEL_TYPE">
<el-select v-model="data.form.FUEL_TYPE">
<el-select v-model="form.FUEL_TYPE">
<el-option
v-for="item in getFuelTypeList"
:key="item.BIANMA"
@ -231,7 +226,7 @@
</el-col>
<el-col :span="6">
<el-form-item label="排放标准" prop="EMISSION_STANDARD">
<el-select v-model="data.form.EMISSION_STANDARD">
<el-select v-model="form.EMISSION_STANDARD">
<el-option
v-for="item in getEmissionStandardList"
:key="item.BIANMA"
@ -244,7 +239,7 @@
<el-col :span="6">
<el-form-item label="核定总质量" prop="VOUCH_TOTALMASS">
<el-input
v-model="data.form.VOUCH_TOTALMASS"
v-model="form.VOUCH_TOTALMASS"
placeholder="请填写核定总质量"
></el-input>
</el-form-item>
@ -252,7 +247,7 @@
<el-col :span="6">
<el-form-item label="核定载人数" prop="VOUCH_NUMBERLOAD">
<el-input
v-model="data.form.VOUCH_NUMBERLOAD"
v-model="form.VOUCH_NUMBERLOAD"
placeholder="请填写核定载人数"
></el-input>
</el-form-item>
@ -260,7 +255,7 @@
<el-col :span="6">
<el-form-item label="核定载质量" prop="VOUCH_PAYLOAD">
<el-input
v-model="data.form.VOUCH_PAYLOAD"
v-model="form.VOUCH_PAYLOAD"
placeholder="请填写核定载质量"
></el-input>
</el-form-item>
@ -268,7 +263,7 @@
<el-col :span="6">
<el-form-item label="准牵引质量" prop="RACTIONMASS_QUALITY">
<el-input
v-model="data.form.RACTIONMASS_QUALITY"
v-model="form.RACTIONMASS_QUALITY"
placeholder="请填写准牵引质量"
></el-input>
</el-form-item>
@ -276,7 +271,7 @@
<el-col :span="24">
<el-form-item label="备注" prop="REMARK">
<el-input
v-model="data.form.REMARK"
v-model="form.REMARK"
placeholder="请填写备注"
type="textarea"
:autosize="{ minRows: 3 }"
@ -287,18 +282,20 @@
<el-col :span="7">
<el-form-item label="上传车头图片" prop="HEADSTOCK_PHOTO">
<layout-upload
v-model:file-list="data.form.HEADSTOCK_PHOTO"
v-model:file-list="form.HEADSTOCK_PHOTO"
list-type="picture-card"
accept=".jpg,.jpeg,.png"
delete-to-server
/>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="上传行驶证照片" prop="DRIVINGLICENSE_PHOTO">
<layout-upload
v-model:file-list="data.form.DRIVINGLICENSE_PHOTO"
v-model:file-list="form.DRIVINGLICENSE_PHOTO"
list-type="picture-card"
accept=".jpg,.jpeg,.png"
delete-to-server
/>
</el-form-item>
</el-col>
@ -308,15 +305,16 @@
prop="OPERATING_CERTIFICATE_PHOTO"
>
<layout-upload
v-model:file-list="data.form.OPERATING_CERTIFICATE_PHOTO"
v-model:file-list="form.OPERATING_CERTIFICATE_PHOTO"
list-type="picture-card"
accept=".jpg,.jpeg,.png"
delete-to-server
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="车辆资料" prop="VEHICLE_MATERIAL">
<el-input v-model="data.form.VEHICLE_MATERIAL" />
<el-input v-model="form.VEHICLE_MATERIAL" />
</el-form-item>
</el-col>
</el-row>
@ -328,7 +326,7 @@
</template>
<script setup>
import { reactive, ref } from "vue";
import { ref } from "vue";
import {
layoutFnGetVehicleColor,
layoutFnGetTransportCategory,
@ -341,6 +339,7 @@ import {
import {
findByIdOperatingVehicleInfo,
editOperatingVehicleInfo,
addOperatingVehicleInfo, findByPlateNumber
} from "@/request/operation_vehicle.js";
import useFormValidate from "@/assets/js/useFormValidate.js";
@ -348,14 +347,45 @@ import LayoutUpload from "@/components/upload/index.vue";
import { ElMessage } from "element-plus";
import { debounce } from "throttle-debounce";
import { useRoute, useRouter } from "vue-router";
import { addingPrefixToFile } from "@/assets/js/utils.js";
import { setUploadImg } from "@/request/api.js";
const route = useRoute();
const router = useRouter();
const { OPERATING_ID } = route.query;
const isPlateNumberRepetition = async (rule, vehicleNumber, callback) => {
if (vehicleNumber) {
console.log("车牌号0-=0",vehicleNumber);
const vehicleCount = await findByPlateNumber({ vehicleNumber });
if (vehicleCount.pd) {
callback(new Error("车辆已存在"));
} else callback();
}
};
const isVehicleNumber = (rule, vehicleNumber, callback) => {
if (vehicleNumber) {
const xreg =
/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/;
const creg =
/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;
if (vehicleNumber.length === 7) {
if (creg.test(vehicleNumber) === false) {
callback(new Error("格式错误"));
} else callback();
} else if (vehicleNumber.length === 8) {
if (xreg.test(vehicleNumber) === false) {
callback(new Error("格式错误"));
} else callback();
} else {
callback(new Error("格式错误"));
}
} else callback();
};
const rules = {
PLATE_NUMBER: [
{ required: true, message: "车牌号不能为空", trigger: "blur" },
{ required: true, message: "请输入车牌号", trigger: "blur" },
{ validator: isVehicleNumber, trigger: "blur" },
{ validator: isPlateNumberRepetition, trigger: "blur" },
],
VEHICLE_COLOR: [
{ required: true, message: "车辆颜色不能为空", trigger: "change" },
@ -376,11 +406,23 @@ const rules = {
{ required: true, message: "车主/业主不能为空", trigger: "blur" },
],
VEHICLEOWNER_NUMBER: [
{ required: true, message: "车主电话不能为空", trigger: "blur" },
{ required: true, message: "请输入", trigger: "blur" },
{ min: 11, max: 11, message: "请输入11位手机号码", trigger: "blur" },
{
pattern:
/^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/,
message: "请输入正确的手机号码",
},
],
CONTACT: [{ required: true, message: "联系人不能为空", trigger: "blur" }],
CONTACT_NUMBER: [
{ required: true, message: "联系电话不能为空", trigger: "blur" },
{ required: true, message: "请输入", trigger: "blur" },
{ min: 11, max: 11, message: "请输入11位手机号码", trigger: "blur" },
{
pattern:
/^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/,
message: "请输入正确的手机号码",
},
],
FIRSTSHOW_DATE: [
{ required: true, message: "初登日期不能为空", trigger: "blur" },
@ -388,51 +430,58 @@ const rules = {
VEHICLE_EQUIPMENT: [
{ required: true, message: "车载设备不能为空", trigger: "change" },
],
HEADSTOCK_PHOTO: [
{ required: true, message: "车头照片不能为空", trigger: "blur" },
],
DRIVINGLICENSE_PHOTO: [
{ required: true, message: "行驶证照片不能为空", trigger: "blur" },
],
OPERATING_CERTIFICATE_PHOTO: [
{ required: true, message: "营运证照片不能为空", trigger: "blur" },
],
};
const formRef = ref(null);
const data = reactive({
form: {
GOODSSELFNUMBER: "",
PLATE_NUMBER: "",
VEHICLE_COLOR: "",
FRAMES_NUMBER: "",
ENGINE_NUMBER: "",
OPERATING_CERTIFICATE: [],
TRANSPORT_ENTERPRISES: "",
TRANSPORT_TYPE: "",
BELONGING_DEPARTMENT: "",
VEHICLE_TYPE: "",
VEHICLEOWNER: "",
VEHICLEOWNER_NUMBER: "",
VEHICLEOWNER_ADDRESS: "",
CONTACT: "",
CONTACT_NUMBER: "",
HOME_ADDRESS: "",
PHYSICAL_ADDRESS: "",
FIRSTSHOW_DATE: "",
CERTIFICATE_DATE: "",
EXPIRE_DATE: "",
GOVERNMENT_OVERSIGHT: "",
VEHICLE_BRAND: "",
VEHICLE_MODEL: "",
FUEL_TYPE: "",
EMISSION_STANDARD: "",
VOUCH_TOTALMASS: "",
VOUCH_NUMBERLOAD: "",
VOUCH_PAYLOAD: "",
RACTIONMASS_QUALITY: "",
REMARK: "",
HEADSTOCK_PHOTO: [],
DRIVINGLICENSE_PHOTO: [],
OPERATING_CERTIFICATE_PHOTO: [],
NETWORK_STATUS: "",
DYNAMIC_SUPERVISION: "",
ACTIVE_SAFETY: "",
DRIVINGPREMIT_STATUS: "",
TRANSPORT_CATEGORY: "",
VEHICLE_MATERIAL: "",
FREIGHT_TYPE: "",
},
const form = ref({
GOODSSELFNUMBER: "",
PLATE_NUMBER: "",
VEHICLE_COLOR: "",
FRAMES_NUMBER: "",
ENGINE_NUMBER: "",
OPERATING_CERTIFICATE: [],
TRANSPORT_ENTERPRISES: "",
TRANSPORT_TYPE: "",
BELONGING_DEPARTMENT: "",
VEHICLE_TYPE: "",
VEHICLEOWNER: "",
VEHICLEOWNER_NUMBER: "",
VEHICLEOWNER_ADDRESS: "",
CONTACT: "",
CONTACT_NUMBER: "",
HOME_ADDRESS: "",
PHYSICAL_ADDRESS: "",
FIRSTSHOW_DATE: "",
CERTIFICATE_DATE: "",
EXPIRE_DATE: "",
GOVERNMENT_OVERSIGHT: "",
VEHICLE_BRAND: "",
VEHICLE_MODEL: "",
FUEL_TYPE: "",
EMISSION_STANDARD: "",
VOUCH_TOTALMASS: "",
VOUCH_NUMBERLOAD: "",
VOUCH_PAYLOAD: "",
RACTIONMASS_QUALITY: "",
REMARK: "",
HEADSTOCK_PHOTO: [],
DRIVINGLICENSE_PHOTO: [],
OPERATING_CERTIFICATE_PHOTO: [],
NETWORK_STATUS: "",
DYNAMIC_SUPERVISION: "",
ACTIVE_SAFETY: "",
DRIVINGPREMIT_STATUS: "",
TRANSPORT_CATEGORY: "",
VEHICLE_MATERIAL: "",
FREIGHT_TYPE: "",
});
const getVehicleColorList = await layoutFnGetVehicleColor();
const getTransportCategoryList = await layoutFnGetTransportCategory();
@ -443,52 +492,69 @@ const getVehicleTypeList = await layoutFnGetVehicleType();
const getMobileUnitList = await layoutFnGetMobileUnit();
const fnGetData = async () => {
if (OPERATING_ID) {
const resData = await findByIdOperatingVehicleInfo({ OPERATING_ID });
data.form = resData.pd;
}
if (!OPERATING_ID) return;
const resData = await findByIdOperatingVehicleInfo({ OPERATING_ID });
form.value = resData.pd;
form.value.HEADSTOCK_PHOTO = addingPrefixToFile(resData.headstockphoto);
form.value.DRIVINGLICENSE_PHOTO = addingPrefixToFile(
resData.drivinglicensephoto
);
form.value.OPERATING_CERTIFICATE_PHOTO = addingPrefixToFile(
resData.operatingcertificatephoto
);
};
fnGetData();
const fnSubmit = debounce(1000, async () => {
await useFormValidate(formRef);
const fnSubmit = debounce(
1000,
async () => {
await useFormValidate(formRef);
const resData = !OPERATING_ID
? await addOperatingVehicleInfo({ ...form.value })
: await editOperatingVehicleInfo({
...form.value,
OPERATING_ID,
});
const currentOperatingVehicleId = resData.pd.OPERATING_ID;
for (let i = 0; i < form.value.HEADSTOCK_PHOTO.length; i++) {
if (form.value.HEADSTOCK_PHOTO[i].raw) {
await fnUploadImage(
currentOperatingVehicleId,
form.value.HEADSTOCK_PHOTO[i].raw,
130
);
}
}
for (let i = 0; i < form.value.DRIVINGLICENSE_PHOTO.length; i++) {
if (form.value.DRIVINGLICENSE_PHOTO[i].raw) {
await fnUploadImage(
currentOperatingVehicleId,
form.value.DRIVINGLICENSE_PHOTO[i].raw,
131
);
}
}
for (let i = 0; i < form.value.OPERATING_CERTIFICATE_PHOTO.length; i++) {
if (form.value.OPERATING_CERTIFICATE_PHOTO[i].raw) {
await fnUploadImage(
currentOperatingVehicleId,
form.value.OPERATING_CERTIFICATE_PHOTO[i].raw,
132
);
}
}
ElMessage.success("提交成功");
router.back();
},
{ atBegin: true }
);
const fnUploadImage = async (HIDDEN_ID, FFILE, TYPE) => {
const formData = new FormData();
Object.keys(data.form).forEach((key) => {
formData.append(key, data.form[key]);
});
formData.delete("HEADSTOCK_PHOTO");
formData.delete("DRIVINGLICENSE_PHOTO");
formData.delete("OPERATING_CERTIFICATE_PHOTO");
if (data.form.HEADSTOCK_PHOTO) {
if (data.form.HEADSTOCK_PHOTO[0].raw)
formData.append("headstockFile", data.form.HEADSTOCK_PHOTO[0].raw);
formData.append("headstockFileType", !!data.form.HEADSTOCK_PHOTO[0].raw);
}
if (data.form.DRIVINGLICENSE_PHOTO) {
if (data.form.DRIVINGLICENSE_PHOTO[0].raw)
formData.append(
"drivinglicenseFile",
data.form.DRIVINGLICENSE_PHOTO[0].raw
);
formData.append(
"drivinglicenseFileType",
!!data.form.DRIVINGLICENSE_PHOTO[0].raw
);
}
if (data.form.OPERATING_CERTIFICATE_PHOTO) {
if (data.form.OPERATING_CERTIFICATE_PHOTO[0].raw)
formData.append(
"operatingCertificateFile",
data.form.OPERATING_CERTIFICATE_PHOTO[0].raw
);
formData.append(
"operatingCertificateFileType",
!!data.form.OPERATING_CERTIFICATE_PHOTO[0].raw
);
}
await editOperatingVehicleInfo(formData);
ElMessage.success("提交成功");
router.back();
});
formData.append("FOREIGN_KEY", HIDDEN_ID);
formData.append("TYPE", TYPE);
formData.append("FFILE", FFILE);
await setUploadImg(formData);
};
</script>
<style scoped lang="scss"></style>

View File

@ -45,15 +45,6 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="归属部门" prop="BELONGING_DEPARTMENT">
<el-input
v-model="searchForm.BELONGING_DEPARTMENT"
placeholder="请填写归属部门"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="入网状态" prop="NETWORK_STATUS">
<el-select v-model="searchForm.NETWORK_STATUS">
@ -87,7 +78,7 @@
</el-button>
</el-form-item>
</el-col>
<el-col :span="6">
<el-col :span="30">
<el-form-item label-width="10px" class="end">
<el-button>导出</el-button>
</el-form-item>
@ -121,12 +112,7 @@
<el-table-column prop="TRANSPORT_TYPE" label="运输类别" width="140" />
<el-table-column prop="FIRSTSHOW_DATE" label="初登日期" />
<el-table-column prop="EXPIRE_DATE" label="到期日期" />
<el-table-column
prop="BELONGING_DEPARTMENT"
label="归属部门"
width="140"
show-overflow-tooltip
/>
<el-table-column label="操作" width="150">
<template #default="{ row }">
<el-button
@ -170,7 +156,7 @@
</el-button>
<el-button
v-if="buttonJurisdiction.del"
type="primary"
type="danger"
text
link
@click="fnDelete(row.OPERATING_ID)"
@ -237,6 +223,7 @@ const fnDelete = debounce(
await ElMessageBox.confirm("确定要删除吗?", { type: "warning" });
await setOperationVehicleDelete({ OPERATING_ID });
ElMessage.success("删除成功");
fnGetDataTransfer();
},
{ atBegin: true }
);

View File

@ -1,124 +1,139 @@
<template>
<layout-card>
<div id="printContainer">
<el-divider content-position="left">车辆档案</el-divider>
<el-descriptions border>
<el-descriptions-item label="车牌号">
{{ data.PLATE_NUMBER }}
{{ info.PLATE_NUMBER }}
</el-descriptions-item>
<el-descriptions-item label="车辆颜色">
{{ data.VEHICLE_COLOR }}
{{ info.VEHICLE_COLOR }}
</el-descriptions-item>
<el-descriptions-item label="车架号">
{{ data.FRAMES_NUMBER }}
{{ info.FRAMES_NUMBER }}
</el-descriptions-item>
<el-descriptions-item label="发动机号">
{{ data.ENGINE_NUMBER }}
{{ info.ENGINE_NUMBER }}
</el-descriptions-item>
<el-descriptions-item label="营运证号">
{{ data.OPERATING_CERTIFICATE }}
{{ info.OPERATING_CERTIFICATE }}
</el-descriptions-item>
<el-descriptions-item label="运输类别">
{{ data.TRANSPORT_TYPE }}
{{ info.TRANSPORT_TYPE }}
</el-descriptions-item>
<el-descriptions-item label="初登日期">
{{ data.FIRSTSHOW_DATE }}
{{ info.FIRSTSHOW_DATE }}
</el-descriptions-item>
<el-descriptions-item label="发证日期">
{{ data.CERTIFICATE_DATE }}
{{ info.CERTIFICATE_DATE }}
</el-descriptions-item>
<el-descriptions-item label="到期日期">
{{ data.EXPIRE_DATE }}
{{ info.EXPIRE_DATE }}
</el-descriptions-item>
<el-descriptions-item label="车主/业主">
{{ data.VEHICLEOWNER }}
{{ info.VEHICLEOWNER }}
</el-descriptions-item>
<el-descriptions-item label="车主电话">
{{ data.VEHICLEOWNER_NUMBER }}
{{ info.VEHICLEOWNER_NUMBER }}
</el-descriptions-item>
<el-descriptions-item label="归属地区">
{{ data.HOME_TERRITORY }}
{{ info.HOME_TERRITORY }}
</el-descriptions-item>
<el-descriptions-item label="车主住址">
{{ data.VEHICLEOWNER_ADDRESS }}
{{ info.VEHICLEOWNER_ADDRESS }}
</el-descriptions-item>
<el-descriptions-item label="联系人">
{{ data.CONTACT }}
{{ info.CONTACT }}
</el-descriptions-item>
<el-descriptions-item label="联系电话">
{{ data.CONTACT_NUMBER }}
{{ info.CONTACT_NUMBER }}
</el-descriptions-item>
<el-descriptions-item label="家庭住址">
{{ data.HOME_ADDRESS }}
{{ info.HOME_ADDRESS }}
</el-descriptions-item>
<el-descriptions-item label="实际住址">
{{ data.PHYSICAL_ADDRESS }}
{{ info.PHYSICAL_ADDRESS }}
</el-descriptions-item>
</el-descriptions>
<el-divider content-position="left">详细信息</el-divider>
<el-descriptions border>
<el-descriptions-item label="车辆品牌">
{{ data.VEHICLE_BRAND }}
{{ info.VEHICLE_BRAND }}
</el-descriptions-item>
<el-descriptions-item label="车辆型号">
{{ data.VEHICLE_MODEL }}
{{ info.VEHICLE_MODEL }}
</el-descriptions-item>
<el-descriptions-item label="燃料类型">
{{ data.FUEL_TYPE }}
{{ info.FUEL_TYPE }}
</el-descriptions-item>
<el-descriptions-item label="排放标准">
{{ data.EMISSION_STANDARD }}
{{ info.EMISSION_STANDARD }}
</el-descriptions-item>
<el-descriptions-item label="核定总质量">
{{ data.VOUCH_TOTALMASS }}
{{ info.VOUCH_TOTALMASS }}
</el-descriptions-item>
<el-descriptions-item label="核定载质量">
{{ data.VOUCH_PAYLOAD }}
{{ info.VOUCH_PAYLOAD }}
</el-descriptions-item>
<el-descriptions-item label="准牵引质量">
{{ data.RACTIONMASS_QUALITY }}
{{ info.RACTIONMASS_QUALITY }}
</el-descriptions-item>
<el-descriptions-item label="运输类别">
{{ data.TRANSPORT_TYPE }}
{{ info.TRANSPORT_TYPE }}
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="1" border>
<el-descriptions-item label="备注">
{{ data.REMARK }}
{{ info.REMARK }}
</el-descriptions-item>
</el-descriptions>
<el-divider content-position="left">相关照片</el-divider>
<el-descriptions :column="3" border>
<el-descriptions-item label="车头照片">
<img
v-for="item in info.HEADSTOCK_PHOTO"
:key="item.FILEPATH"
v-viewer
:src="VITE_FILE_URL + data.HEADSTOCK_PHOTO"
:src="item.url"
width="100"
height="100"
alt=""
class="ml-10"
/>
</el-descriptions-item>
<el-descriptions-item label="行驶证照片">
<img
v-for="item in info.DRIVINGLICENSE_PHOTO"
:key="item.FILEPATH"
v-viewer
:src="VITE_FILE_URL + data.DRIVINGLICENSE_PHOTO"
:src="item.url"
width="100"
height="100"
alt=""
class="ml-10"
/>
</el-descriptions-item>
<el-descriptions-item label="营运证照片">
<img
v-for="item in info.OPERATING_CERTIFICATE_PHOTO"
:key="item.FILEPATH"
v-viewer
:src="VITE_FILE_URL + data.OPERATING_CERTIFICATE_PHOTO"
:src="item.url"
width="100"
height="100"
alt=""
class="ml-10"
/>
</el-descriptions-item>
<el-descriptions-item label="车辆资料">
{{ data.VEHICLE_MATERIAL }}
{{ info.VEHICLE_MATERIAL }}
</el-descriptions-item>
</el-descriptions>
</div>
<div class="mt-10 tc">
<el-button v-print="'#printContainer'" type="primary"></el-button>
</div>
<div v-html="PRINT_STYLE" />
</layout-card>
</template>
@ -126,16 +141,24 @@
import { findByIdOperatingVehicleInfo } from "@/request/operation_vehicle.js";
import { useRoute } from "vue-router";
import { ref } from "vue";
const VITE_FILE_URL = import.meta.env.VITE_FILE_URL;
import { addingPrefixToFile } from "@/assets/js/utils.js";
import { PRINT_STYLE } from "@/assets/js/constant.js";
const route = useRoute();
const { OPERATING_ID } = route.query;
const data = ref({});
const getData = async () => {
const { pd } = await findByIdOperatingVehicleInfo({ OPERATING_ID });
data.value = pd;
const info = ref({});
const fnGetData = async () => {
if (!OPERATING_ID) return;
const resData = await findByIdOperatingVehicleInfo({ OPERATING_ID });
info.value = resData.pd;
info.value.HEADSTOCK_PHOTO = addingPrefixToFile(resData.headstockphoto);
info.value.DRIVINGLICENSE_PHOTO = addingPrefixToFile(
resData.drivinglicensephoto
);
info.value.OPERATING_CERTIFICATE_PHOTO = addingPrefixToFile(
resData.operatingcertificatephoto
);
};
getData();
fnGetData();
</script>
<style scoped></style>

View File

@ -24,6 +24,7 @@
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="检查状态" prop="TYPE">
<el-select
@ -35,6 +36,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label-width="10px">
<el-button type="primary" native-type="submit">搜索</el-button>

View File

@ -209,6 +209,7 @@ const { list, pagination, searchForm, fnGetData, fnResetPagination, tableRef } =
},
defaultSearchForm: { STATE },
});
console.log(searchForm, "asdsadsadas");
const fnGetDataTransfer = () => {
fnGetData({
STARTTIME: searchForm.value.dates?.[0],

View File

@ -104,6 +104,8 @@
v-model:file-list="form.VEHICLE.RAW_DRIVINGLICENSE_IMG"
list-type="picture-card"
accept=".jpg,.jpeg,.png"
delete-to-server
disabled
/>
</el-form-item>
</el-col>
@ -221,6 +223,7 @@
v-model:file-list="form.NOW_VEHICLE_OPERATION_CERTIFICATE"
list-type="picture-card"
accept=".jpg,.jpeg,.png"
delete-to-server
/>
</el-form-item>
</el-col>
@ -230,6 +233,7 @@
v-model:file-list="form.NOW_DRIVINGLICENSE_IMG"
list-type="picture-card"
accept=".jpg,.jpeg,.png"
delete-to-server
/>
</el-form-item>
</el-col>
@ -270,11 +274,9 @@ import {
layoutFnGetAssignedVehicleModel,
} from "@/assets/js/assigned_manage.js";
import {
getFreightTrailerList,
getFreightTrailerView,
} from "@/request/enterprise_management.js";
import {
getOperationVehicleList,
findByIdOperatingVehicleInfo,
} from "@/request/operation_vehicle.js";
import LayoutUpload from "@/components/upload/index.vue";
@ -285,17 +287,16 @@ import {
setAssignedManageAdd,
setAssignedManageEdit,
layoutFnGetScrapVehicleType,
getAssignedOperationVehicleList,
getAssignedFreightTrailerList
} from "@/request/assigned_manage.js";
import { setUploadImg } from "@/request/api.js";
import { ElMessage } from "element-plus";
import { useRoute, useRouter } from "vue-router";
const route = useRoute();
const router = useRouter();
const ASSIGNED_ID = route.query.ASSIGNED_ID;
const assignedVehicleModelList = await layoutFnGetAssignedVehicleModel();
const relatedClassificationList = ref(null);
onMounted(async () => {
@ -303,10 +304,11 @@ onMounted(async () => {
relatedClassificationList.value = JSON.parse(data.value.zTreeNodes);
});
const getFreightVehicleList = await getFreightTrailerList();
const getOperationList = await getOperationVehicleList();
const freightVehicleList = await getAssignedFreightTrailerList();
const assignedWayList = await layoutFnGetAssignedWay();
const operationList = await getAssignedOperationVehicleList();
console.log("筛选后的挂车车辆",freightVehicleList);
const rules = {
ASSIGNED_VEHICLE_MODEL: [
{ required: true, message: "过户车型不能为空", trigger: "change" },
@ -330,6 +332,15 @@ const rules = {
NOW_DRIVINGLICENSE_IMG: [
{ required: true, message: "现行驶证照片不能为空", trigger: "blur" },
],
NOW_OWNERS_NUMBER: [
{ required: true, message: "请输入现车主电话", trigger: "blur" },
{ min: 11, max: 11, message: "请输入11位手机号码", trigger: "blur" },
{
pattern:
/^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/,
message: "请输入正确的手机号码",
},
],
};
const formRef = ref(null);
const form = ref({
@ -394,10 +405,10 @@ const fnEditVehicleModel = async () => {
form.value.VEHICLE_PLATE_NUMBER = null;
form.value.VEHICLE = {};
if (form.value.ASSIGNED_VEHICLE_MODEL === "运输车辆") {
form.value.ALLVEHICLE = getOperationList.varList;
form.value.ALLVEHICLE = operationList.varList;
form.value.OPERATIONVEHICLELIST = form.value.ALLVEHICLE;
} else if (form.value.ASSIGNED_VEHICLE_MODEL === "货运挂车") {
form.value.ALLVEHICLE = getFreightVehicleList.varList;
form.value.ALLVEHICLE = freightVehicleList.varList;
form.value.FREIGHTVEHICLELIST = form.value.ALLVEHICLE;
}
};
@ -419,7 +430,6 @@ const fnGetVehicleInfo = async () => {
form.value.VEHICLE.FRAMES_NUMBER = info.value.FRAMES_NUMBER;
form.value.VEHICLE.RAW_DRIVINGLICENSE_IMG =
info.value.DRIVINGLICENSE_PHOTO;
form.value.FRAMES_NUMBER = info.value.FRAMES_NUMBER;
form.value.VEHICLE_BRAND = info.value.VEHICLE_BRAND;
form.value.VEHICLE_MODEL = info.value.VEHICLE_MODEL;
@ -430,6 +440,9 @@ const fnGetVehicleInfo = async () => {
form.value.RAW_OWNERS = info.value.VEHICLEOWNER;
form.value.RAW_CONTACT_NUMBER = info.value.CONTACT_NUMBER;
form.value.RAW_OPERATION_CERTIFICATE = info.value.OPERATING_CERTIFICATE;
form.value.VEHICLE.RAW_DRIVINGLICENSE_IMG = addingPrefixToFile(
resData.drivinglicensephoto
);
}
}
} else if (form.value.ASSIGNED_VEHICLE_MODEL === "货运挂车") {
@ -441,6 +454,7 @@ const fnGetVehicleInfo = async () => {
const FREIGHTTRAILER_ID =
form.value.FREIGHTVEHICLELIST[i].FREIGHTTRAILER_ID;
const resData = await getFreightTrailerView({ FREIGHTTRAILER_ID });
console.log("选中的货运挂车信息", resData);
info.value = resData.pd;
form.value.VEHICLE.PLATE_NUMBER = info.value.PLATE_NUMBER;
form.value.VEHICLE.RAW_OWNERS = info.value.CAR_OWNERS;
@ -460,6 +474,9 @@ const fnGetVehicleInfo = async () => {
form.value.ENGINE_NUMBER = info.value.TRAILER_MODEL;
form.value.POWER_TYPE = info.value.TRAILER_MODEL;
form.value.VEHICLE.RAW_DRIVINGLICENSE_IMG = addingPrefixToFile(
resData.drivingLicenseImgs
);
}
}
}

View File

@ -171,7 +171,7 @@
</el-button>
<el-button
v-if="buttonJurisdiction.del"
type="primary"
type="danger"
text
link
@click="fnDelete(row.ASSIGNED_ID)"
@ -244,6 +244,7 @@ const fnDelete = debounce(
await ElMessageBox.confirm("确定要删除吗?", { type: "warning" });
await setAssignedManageDelete({ ASSIGNED_ID });
ElMessage.success("删除成功");
fnGetDataTransfer();
},
{ atBegin: true }
);

View File

@ -1,101 +1,113 @@
<template>
<layout-card>
<div id="printContainer">
<el-divider content-position="left">基本信息</el-divider>
<el-descriptions border>
<el-descriptions-item label="登记编号">
{{ data.RECORD_NUMBER }}
{{ info.RECORD_NUMBER }}
</el-descriptions-item>
<el-descriptions-item label="办理日期">
{{ data.TRANSACTION_DATE }}
{{ info.TRANSACTION_DATE }}
</el-descriptions-item>
<el-descriptions-item label="登记人">
{{ data.REGISTRANT }}
{{ info.REGISTRANT }}
</el-descriptions-item>
<el-descriptions-item label="过户类型">
{{ data.ASSIGNED_TYPE }}
{{ info.ASSIGNED_TYPE }}
</el-descriptions-item>
<el-descriptions-item label="车辆类型">
{{ data.VEHICLE_TYPE }}
{{ info.VEHICLE_TYPE }}
</el-descriptions-item>
<el-descriptions-item label="车架号">
{{ data.FRAMES_NUMBER }}
{{ info.FRAMES_NUMBER }}
</el-descriptions-item>
<el-descriptions-item label="车辆类型">
{{ data.VEHICLE_TYPE }}
{{ info.VEHICLE_TYPE }}
</el-descriptions-item>
<el-descriptions-item label="车辆品牌">
{{ data.VEHICLE_BRAND }}
{{ info.VEHICLE_BRAND }}
</el-descriptions-item>
<el-descriptions-item label="车辆型号">
{{ data.VEHICLE_MODEL }}
{{ info.VEHICLE_MODEL }}
</el-descriptions-item>
<el-descriptions-item label="发动机号">
{{ data.ENGINE_NUMBER }}
{{ info.ENGINE_NUMBER }}
</el-descriptions-item>
<el-descriptions-item label="动力类型">
{{ data.POWER_TYPE }}
{{ info.POWER_TYPE }}
</el-descriptions-item>
<el-descriptions-item label="排放标准">
{{ data.EMISSION_STANDARD }}
{{ info.EMISSION_STANDARD }}
</el-descriptions-item>
</el-descriptions>
<el-divider content-position="left">过户信息</el-divider>
<el-descriptions border>
<el-descriptions-item label="原车牌号">
{{ data.RAW_PLATE_NUMBER }}
{{ info.RAW_PLATE_NUMBER }}
</el-descriptions-item>
<el-descriptions-item label="原车主业主">
{{ data.RAW_OWNERS }}
{{ info.RAW_OWNERS }}
</el-descriptions-item>
<el-descriptions-item label="原联系电话">
{{ data.RAW_CONTACT_NUMBER }}
{{ info.RAW_CONTACT_NUMBER }}
</el-descriptions-item>
<el-descriptions-item label="现车牌号">
{{ data.NOW_PLATE_NUMBER }}
{{ info.NOW_PLATE_NUMBER }}
</el-descriptions-item>
<el-descriptions-item label="现车主业主">
{{ data.NOW_OWNERS }}
{{ info.NOW_OWNERS }}
</el-descriptions-item>
<el-descriptions-item label="现联系电话">
{{ data.NOW_CONTACT_NUMBER }}
{{ info.NOW_CONTACT_NUMBER }}
</el-descriptions-item>
<el-descriptions-item label="原营运证号">
{{ data.RAW_OPERATION_CERTIFICATE }}
{{ info.RAW_OPERATION_CERTIFICATE }}
</el-descriptions-item>
<el-descriptions-item label="现营运证号">
{{ data.NOW_OPERATION_CERTIFICATE }}
{{ info.NOW_OPERATION_CERTIFICATE }}
</el-descriptions-item>
</el-descriptions>
<el-descriptions border>
<el-descriptions-item label="现营运证照片">
<img
v-for="item in info.NOW_VEHICLE_OPERATION_CERTIFICATE"
:key="item.FILEPATH"
v-viewer
:src="VITE_FILE_URL + data.NOW_VEHICLE_OPERATION_CERTIFICATE"
:src="item.url"
width="100"
height="100"
alt=""
class="ml-10"
/>
</el-descriptions-item>
<el-descriptions-item label="现行驶证照片">
<img
v-for="item in info.NOW_DRIVINGLICENSE_IMG"
:key="item.FILEPATH"
v-viewer
:src="VITE_FILE_URL + data.NOW_DRIVINGLICENSE_IMG"
:src="item.url"
width="100"
height="100"
alt=""
class="ml-10"
/>
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="1" border>
<el-descriptions-item label="过户资料">
{{ data.ASSIGNED_MATERIAL }}
{{ info.ASSIGNED_MATERIAL }}
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="1" border>
<el-descriptions-item label="备注">
{{ data.REMARK }}
{{ info.REMARK }}
</el-descriptions-item>
</el-descriptions>
</div>
<div class="mt-10 tc">
<el-button v-print="'#printContainer'" type="primary"></el-button>
</div>
<div v-html="PRINT_STYLE" />
</layout-card>
</template>
@ -103,14 +115,21 @@
import { findByIdAssignedManageInfo } from "@/request/assigned_manage.js";
import { useRoute } from "vue-router";
import { ref } from "vue";
import { addingPrefixToFile } from "@/assets/js/utils.js";
import { PRINT_STYLE } from "@/assets/js/constant.js";
const VITE_FILE_URL = import.meta.env.VITE_FILE_URL;
const route = useRoute();
const { ASSIGNED_ID } = route.query;
const data = ref({});
const info = ref({});
const getData = async () => {
const { pd } = await findByIdAssignedManageInfo({ ASSIGNED_ID });
data.value = pd;
const resData = await findByIdAssignedManageInfo({ ASSIGNED_ID });
info.value = resData.pd;
info.value.NOW_VEHICLE_OPERATION_CERTIFICATE = addingPrefixToFile(
resData.nowVehicleOperationCertificateImgs
);
info.value.NOW_DRIVINGLICENSE_IMG = addingPrefixToFile(
resData.nowDrivinglicenseImg
);
};
getData();
</script>

View File

@ -110,7 +110,11 @@
<el-table-column prop="CAR_OWNERS" label="车主业户" width="150" />
<el-table-column prop="TELEPHONE" label="联系电话" width="150" />
<el-table-column prop="PROCESSING_DATE" label="办理日期" width="150" />
<el-table-column prop="NAME" label="年检周期" width="150" />
<el-table-column
prop="ANNUAL_INSPECTION_CYCLE_NAME"
label="年检周期"
width="150"
/>
<el-table-column prop="DUE_DATE" label="到期日期" width="150" />
<el-table-column prop="REGISTRANT" label="登记人" width="150" />
<!--<el-table-column prop="CONTACTS" label="经营企业" width="150"/>-->

View File

@ -138,7 +138,7 @@
<el-table-column prop="REMINDER_STATUS" label="提醒状态" width="150">
<template #default="{ row }">
<span v-if="row.REMINDER_STATUS === '1'"></span>
<span v-else-if="row.REMINDER_STATUS === '2'">关闭</span>
<span v-else-if="row.REMINDER_STATUS === '0'">关闭</span>
</template>
</el-table-column>
<el-table-column prop="DUE_DATE_TYPE" label="到期状态" width="150">

View File

@ -127,11 +127,12 @@
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="行驶证照片" prop="DRIVINGLICENSE_PHOTO">
<el-form-item label="行驶证照片" prop="DRIVING_LICENSE_IMG">
<layout-upload
v-model:file-list="form.VEHICLE.DRIVINGLICENSE_PHOTO"
v-model:file-list="form.DRIVING_LICENSE_IMG"
list-type="picture-card"
accept=".jpg,.jpeg,.png"
disabled
/>
</el-form-item>
</el-col>
@ -190,10 +191,13 @@ import {
setScrapManageAdd,
setScrapManageEdit,
layoutFnGetScrapType,
getScrapOperationVehicleList,
getScrapFreightTrailerList
} from "@/request/scrap_manage.js";
import { getFreightTrailerList } from "@/request/enterprise_management.js";
import {
getOperationVehicleList,
getFreightTrailerView,
} from "@/request/enterprise_management.js";
import {
getOperationVehicleInfo,
} from "@/request/operation_vehicle.js";
import LayoutUpload from "@/components/upload/index.vue";
@ -201,13 +205,15 @@ import { debounce } from "throttle-debounce";
import useFormValidate from "@/assets/js/useFormValidate.js";
import { useRoute, useRouter } from "vue-router";
import { ElMessage } from "element-plus";
import { addingPrefixToFile } from "@/assets/js/utils.js";
const route = useRoute();
const router = useRouter();
const getAllOperationVehicleList = await getOperationVehicleList();
const getAllFrailerList = await getFreightTrailerList();
const getAllOperationVehicleList = await getScrapOperationVehicleList();
const getAllFrailerList = await getScrapFreightTrailerList();
const getScrapVehicleModeList = ref(null);
onMounted(async () => {
const data = await layoutFnGetScrapType();
getScrapVehicleModeList.value = JSON.parse(data.value.zTreeNodes);
@ -268,10 +274,12 @@ const form = ref({
ALLVEHICLE: {},
OPERATIONVEHICLELIST: [],
FREIGHTVEHICLELIST: [],
DRIVING_LICENSE_IMG: [],
});
const fnEditVehicleModel = async () => {
form.value.SCRAP_VEHICLE = null;
form.value.VEHICLE = {};
form.value.DRIVING_LICENSE_IMG = [];
if (form.value.SCRAP_VEHICLEMODEL === "运输车辆") {
form.value.ALLVEHICLE = getAllOperationVehicleList.varList;
form.value.OPERATIONVEHICLELIST = form.value.ALLVEHICLE;
@ -302,7 +310,6 @@ const fnGetVehicleInfo = async () => {
form.value.VEHICLE.FIRSTSHOW_DATE = info.value.FIRSTSHOW_DATE;
form.value.VEHICLE.DRIVINGLICENSE_PHOTO =
info.value.DRIVINGLICENSE_PHOTO;
form.value.PLATE_NUMBER = info.value.PLATE_NUMBER;
form.value.VEHICLEOWNER = info.value.VEHICLEOWNER;
form.value.CONTACT_NUMBER = info.value.CONTACT_NUMBER;
@ -314,6 +321,9 @@ const fnGetVehicleInfo = async () => {
form.value.VEHICLE_MODEL = info.value.VEHICLE_MODEL;
form.value.POWER_TYPE = info.value.VEHICLE_MODEL;
form.value.EMISSION_STANDARD = info.value.EMISSION_STANDARD;
form.value.DRIVING_LICENSE_IMG = addingPrefixToFile(
resData.drivinglicensephoto
);
}
}
} else if (form.value.SCRAP_VEHICLEMODEL === "货运挂车") {
@ -357,6 +367,12 @@ const fnGetVehicleInfo = async () => {
form.value.FREIGHTVEHICLELIST[i].TRAILER_MODEL;
form.value.FIRSTSHOW_DATE =
form.value.FREIGHTVEHICLELIST[i].INITIAL_REGISTRATION_DATE;
const FREIGHTTRAILER_ID =
form.value.FREIGHTVEHICLELIST[i].FREIGHTTRAILER_ID;
const resData = await getFreightTrailerView({ FREIGHTTRAILER_ID });
form.value.DRIVING_LICENSE_IMG = addingPrefixToFile(
resData.drivingLicenseImgs
);
}
}
}

View File

@ -187,6 +187,7 @@ const fnDelete = debounce(
await ElMessageBox.confirm("确定要删除吗?", { type: "warning" });
await setScrapManageDelete({ SCRAP_ID });
ElMessage.success("删除成功");
fnGetDataTransfer();
},
{ atBegin: true }
);

View File

@ -1,5 +1,6 @@
<template>
<layout-card>
<div id="printContainer">
<el-divider content-position="left">详情</el-divider>
<el-descriptions border>
<el-descriptions-item label="车牌号">
@ -55,6 +56,11 @@
{{ data.REMARK }}
</el-descriptions-item>
</el-descriptions>
</div>
<div class="mt-10 tc">
<el-button v-print="'#printContainer'" type="primary"></el-button>
</div>
<div v-html="PRINT_STYLE" />
</layout-card>
</template>
@ -62,6 +68,7 @@
import { findByIdScrapManageInfo } from "@/request/scrap_manage.js";
import { useRoute } from "vue-router";
import { ref } from "vue";
import { PRINT_STYLE } from "@/assets/js/constant.js";
const route = useRoute();
const { SCRAP_ID } = route.query;
const data = ref({});

View File

@ -1,24 +1,19 @@
<template>
<layout-card>
<el-divider content-position="left">车辆选择</el-divider>
<el-form
ref="formRef"
:model="data.form"
:rules="rules"
label-width="100px"
>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="6">
<el-form-item label="挂车车辆" prop="TRAILER_VEHICLE">
<el-form-item label="挂车车辆" prop="FREIGHTTRAILER_ID">
<el-select
v-model="data.form.TRAILER_VEHICLE"
v-model="form.FREIGHTTRAILER_ID"
@change="fnGetTrailerInfo"
>
<el-option
v-for="item in getTrailerList"
v-for="item in choiceTrailerList.varList"
:key="item.PLATE_NUMBER"
:label="item.PLATE_NUMBER"
:value="(data.TRAILERRECORD_NUMBER = item.FREIGHTTRAILER_ID)"
:value="item.FREIGHTTRAILER_ID"
/>
</el-select>
</el-form-item>
@ -26,7 +21,7 @@
<el-col :span="6">
<el-form-item label="登记编号" prop="RECORD_NUMBER">
<el-input
v-model="data.form.RECORD_NUMBER"
v-model="form.RECORD_NUMBER"
placeholder="请输入登记编号"
/>
</el-form-item>
@ -36,42 +31,30 @@
<el-row>
<el-col :span="6">
<el-form-item label="车牌号" prop="PLATE_NUMBER">
<el-input
v-model="data.Trailer.PLATE_NUMBER"
placeholder="--"
disabled
/>
<el-input v-model="form.PLATE_NUMBER" placeholder="--" disabled />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="车架号" prop="FRAMES_NUMBER">
<el-input v-model="data.Trailer.VIN" placeholder="--" disabled />
<el-input v-model="form.FRAMES_NUMBER" placeholder="--" disabled />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="车辆类型" prop="VEHICLE_TYPE">
<el-input
v-model="data.Trailer.TRAILER_TYPE"
placeholder="--"
disabled
/>
<el-input v-model="form.VEHICLE_TYPE" placeholder="--" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="车主业主" prop="CAR_OWNERS">
<el-input
v-model="data.Trailer.CAR_OWNERS"
placeholder="--"
disabled
/>
<el-input v-model="form.CAR_OWNERS" placeholder="--" disabled />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="车主电话" prop="VEHICLEOWNER_NUMBER">
<el-input
v-model="data.Trailer.CAR_OWNERS_TEL"
v-model="form.VEHICLEOWNER_NUMBER"
placeholder="--"
disabled
/>
@ -79,11 +62,7 @@
</el-col>
<el-col :span="6">
<el-form-item label="初登日期" prop="FIRSTSHOW_DATE">
<el-input
v-model="data.Trailer.INITIAL_REGISTRATION_DATE"
placeholder="--"
disabled
/>
<el-input v-model="form.FIRSTSHOW_DATE" placeholder="--" disabled />
</el-form-item>
</el-col>
</el-row>
@ -91,7 +70,7 @@
<el-col :span="6">
<el-form-item label="所属省份" prop="PROVINCE">
<el-input
v-model="data.Trailer.PROVINCE"
v-model="form.Trailer.PROVINCE"
placeholder="--"
disabled
/>
@ -99,12 +78,12 @@
</el-col>
<el-col :span="6">
<el-form-item label="所属地市" prop="CITY">
<el-input v-model="data.form.CITY" placeholder="--" disabled />
<el-input v-model="form.CITY" placeholder="--" disabled />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="所属区县" prop="COUNTY">
<el-input v-model="data.form.COUNTY" placeholder="--" disabled />
<el-input v-model="form.COUNTY" placeholder="--" disabled />
</el-form-item>
</el-col>
</el-row>
@ -112,9 +91,10 @@
<el-col :span="6">
<el-form-item label="行驶证照片" prop="DRIVINGLICENSE_PHOTO">
<layout-upload
v-model:file-list="data.form.DRIVINGLICENSE_PHOTO"
v-model:file-list="form.DRIVINGLICENSE_PHOTO"
list-type="picture-card"
accept=".jpg,.jpeg,.png"
disabled
/>
</el-form-item>
</el-col>
@ -124,7 +104,7 @@
<el-col :span="6">
<el-form-item label="车主业主" prop="VEHICLEOWNER">
<el-input
v-model="data.form.VEHICLEOWNER"
v-model="form.VEHICLEOWNER"
placeholder="请填写车主业主"
/>
</el-form-item>
@ -132,17 +112,14 @@
<el-col :span="6">
<el-form-item label="联系电话" prop="CONTACT_NUMBER">
<el-input
v-model="data.form.CONTACT_NUMBER"
v-model="form.CONTACT_NUMBER"
placeholder="请填写联系电话"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="登记人" prop="REGISTRANT">
<el-input
v-model="data.form.REGISTRANT"
placeholder="请填写登记人"
/>
<el-input v-model="form.REGISTRANT" placeholder="请填写登记人" />
</el-form-item>
</el-col>
</el-row>
@ -150,20 +127,24 @@
<el-col :span="6">
<el-form-item label="办理日期" prop="TRANSACTION_DATA">
<el-date-picker
v-model="data.form.TRANSACTION_DATA"
v-model="form.TRANSACTION_DATA"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择办理日期"
@change="fnGetExpireDate"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="税务周期" prop="TAXESDUES_PERIOD">
<el-select v-model="data.form.TAXESDUES_PERIOD">
<el-select
v-model="form.TAXESDUES_PERIOD"
@change="fnGetExpireDate"
>
<el-option
v-for="item in TaxesPeriodList"
:key="item.BIANMA"
v-for="item in TAXES_PERIOD"
:key="item.NAME"
:label="item.NAME"
:value="item.NAME"
/>
@ -172,13 +153,7 @@
</el-col>
<el-col :span="6">
<el-form-item label="到期日期" prop="EXPIRE_DATE">
<el-date-picker
v-model="data.form.EXPIRE_DATE"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择到期日期"
/>
<el-input v-model="form.EXPIRE_DATE" disabled />
</el-form-item>
</el-col>
</el-row>
@ -186,26 +161,21 @@
<el-col :span="6">
<el-form-item label="提醒天数" prop="REMINDER_DAY">
<el-input
v-model="data.form.REMINDER_DAY"
v-model="form.REMINDER_DAY"
placeholder="请填写提醒天数"
@change="fnGetReminderData"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="提醒日期" prop="REMINDER_DATA">
<el-date-picker
v-model="data.form.REMINDER_DATA"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择提醒日期"
/>
<el-input v-model="form.REMINDER_DATA" disabled />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="提醒状态">
<el-switch
v-model="data.form.REMINDER_STATUS"
v-model="form.REMINDER_STATUS"
active-value="0"
inactive-value="1"
/>
@ -216,7 +186,7 @@
<el-col :span="24">
<el-form-item label="税费资料" prop="TAXESDUES_MATERIAL">
<el-input
v-model="data.form.TAXESDUES_MATERIAL"
v-model="form.TAXESDUES_MATERIAL"
placeholder="请填写税费资料"
type="textarea"
:autosize="{ minRows: 3 }"
@ -228,7 +198,7 @@
<el-col :span="24">
<el-form-item label="备注" prop="REMARK">
<el-input
v-model="data.form.REMARK"
v-model="form.REMARK"
placeholder="请填写备注"
type="textarea"
:autosize="{ minRows: 3 }"
@ -244,23 +214,19 @@
</template>
<script setup>
import { reactive, ref } from "vue";
import {
layoutFnGetTaxesPeriod,
layoutFnGetTrailerList,
} from "@/assets/js/taxation_manage.js";
import { ref } from "vue";
import LayoutUpload from "@/components/upload/index.vue";
import { debounce } from "throttle-debounce";
import useFormValidate from "@/assets/js/useFormValidate.js";
import { setTaxationManageAdd } from "@/request/taxation_manage.js";
import { getFreightTrailerView } from "@/request/enterprise_management.js";
import { getFreightTrailerView, getChoiceTrailerList } from "@/request/enterprise_management.js";
import { ElMessage } from "element-plus";
import { useRouter } from "vue-router";
import { addingPrefixToFile } from "@/assets/js/utils.js";
import { TAXES_PERIOD } from "@/assets/js/constant.js";
const router = useRouter();
const TaxesPeriodList = await layoutFnGetTaxesPeriod();
const getTrailerList = await layoutFnGetTrailerList();
const choiceTrailerList = await getChoiceTrailerList();
console.log("筛选后的挂车车辆信息",choiceTrailerList);
const rules = {
TRAILER_VEHICLE: [
{ required: true, message: "挂车车辆不能为空", trigger: "blur" },
@ -269,7 +235,13 @@ const rules = {
{ required: true, message: "车主/业主不能为空", trigger: "blur" },
],
CONTACT_NUMBER: [
{ required: true, message: "联系电话不能为空", trigger: "blur" },
{ required: true, message: "请输入", trigger: "blur" },
{ min: 11, max: 11, message: "请输入11位手机号码", trigger: "blur" },
{
pattern:
/^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/,
message: "请输入正确的手机号码",
},
],
REGISTRANT: [{ required: true, message: "登记人不能为空", trigger: "blur" }],
TRANSACTION_DATA: [
@ -283,91 +255,108 @@ const rules = {
],
REMINDER_DAY: [
{ required: true, message: "提醒天数不能为空", trigger: "blur" },
{ pattern: /^([1-9][0-9]*)$/, message: "请输入正整数", trigger: "blur" },
],
REMINDER_DATA: [
{ required: true, message: "提醒日期不能为空", trigger: "change" },
],
DRIVINGLICENSE_PHOTO: [
{ required: true, message: "行驶证照片不能为空", trigger: "change" },
],
FREIGHTTRAILER_ID: [
{ required: true, message: "挂车车辆不能为空", trigger: "change" },
]
};
const formRef = ref(null);
const data = reactive({
form: {
TAXATION_ID: "",
RECORD_NUMBER: "",
PLATE_NUMBER: "",
VEHICLEOWNER: "",
CONTACT_NUMBER: "",
TRANSACTION_DATA: "",
TAXESDUES_PERIOD: "",
EXPIRE_DATE: "",
REGISTRANT: "",
TRANSPORT_ENTERPRISES: "",
REMINDER_STATUS: "",
EXPIRE_STATUS: "",
RECORD_STATUS: "",
TRAILER_VEHICLE: "",
FRAMES_NUMBER: "",
VEHICLE_TYPE: "",
VEHICLEOWNER_NUMBER: "",
FIRSTSHOW_DATE: "",
PROVINCE: "",
CITY: "",
COUNTY: "",
REMINDER_DAY: "",
REMINDER_DATA: "",
TAXESDUES_MATERIAL: "",
REMARK: "",
REGISTER_NUMBER: "",
VEHICLE_MODEL: "",
VEHICLE_BRAND: "",
DRIVINGLICENSE_PHOTO: [],
},
const form = ref({
FREIGHTTRAILER_ID: "",
TAXATION_ID: "",
RECORD_NUMBER: "",
PLATE_NUMBER: "",
VEHICLEOWNER: "",
CONTACT_NUMBER: "",
TRANSACTION_DATA: "",
TAXESDUES_PERIOD: "",
EXPIRE_DATE: "",
REGISTRANT: "",
TRANSPORT_ENTERPRISES: "",
REMINDER_STATUS: "",
EXPIRE_STATUS: "",
RECORD_STATUS: "",
TRAILER_VEHICLE: "",
FRAMES_NUMBER: "",
VEHICLE_TYPE: "",
VEHICLEOWNER_NUMBER: "",
FIRSTSHOW_DATE: "",
PROVINCE: "",
CITY: "",
COUNTY: "",
REMINDER_DAY: "",
REMINDER_DATA: "",
TAXESDUES_MATERIAL: "",
REMARK: "",
REGISTER_NUMBER: "",
VEHICLE_MODEL: "",
VEHICLE_BRAND: "",
DRIVINGLICENSE_PHOTO: [],
TrailerInfo: [],
TRAILERRECORD_NUMBER: "",
Trailer: {},
CAR_OWNERS: "",
DRIVING_LICENSE_IMG: [],
ALLTRAILERINFO: [],
TAXATIONLISTTRAILER: [],
TRAILER: []
});
data.TrailerInfo = getTrailerList;
const info = ref({});
const fnGetExpireDate = async () => {
if(form.value.TRANSACTION_DATA !== '' && form.value.TAXESDUES_PERIOD !== ''){
const TAXESDUES_PERIOD = Number(form.value.TAXESDUES_PERIOD.substring(0,form.value.TAXESDUES_PERIOD.indexOf("个")));
const date = new Date(form.value.TRANSACTION_DATA);
date.setMonth(date.getMonth() + TAXESDUES_PERIOD);
const year = date.getFullYear();
let month = date.getMonth() + 1;
month = month < 10 ? "0" + month : month;
let day = date.getDate();
day = day < 10 ? "0" + day : day;
form.value.EXPIRE_DATE = year + "-" + month + "-" + day;
}
fnGetReminderData()
};
const fnGetReminderData = async () => {
if(form.value.TRANSACTION_DATA !== '' && form.value.TAXESDUES_PERIOD !== '' && form.value.REMINDER_DAY !== '') {
const REMINDER_DAY = Number(form.value.REMINDER_DAY);
const date = new Date(form.value.EXPIRE_DATE);
date.setDate(date.getDate() - REMINDER_DAY);
const year = date.getFullYear();
let month = date.getMonth() + 1;
month = month < 10 ? "0" + month : month;
let day = date.getDate();
day = day < 10 ? "0" + day : day;
form.value.REMINDER_DATA = year + "-" + month + "-" + day;
}
};
const fnGetTrailerInfo = async () => {
const FREIGHTTRAILER_ID = data.form.TRAILER_VEHICLE;
const FREIGHTTRAILER_ID = form.value.FREIGHTTRAILER_ID;
form.value.FREIGHTTRAILER_ID = FREIGHTTRAILER_ID;
const resData = await getFreightTrailerView({ FREIGHTTRAILER_ID });
info.value = resData.pd;
info.value.TRAILER_IMG = addingPrefixToFile(resData.trailerImgs);
info.value.DRIVING_LICENSE_IMG = addingPrefixToFile(
form.value.PLATE_NUMBER = resData.pd.PLATE_NUMBER;
form.value.FRAMES_NUMBER = resData.pd.VIN;
form.value.VEHICLE_TYPE = resData.pd.TRAILER_TYPE;
form.value.CAR_OWNERS = resData.pd.CAR_OWNERS;
form.value.VEHICLEOWNER_NUMBER = resData.pd.CAR_OWNERS_TEL;
form.value.FIRSTSHOW_DATE = resData.pd.INITIAL_REGISTRATION_DATE;
form.value.DRIVINGLICENSE_PHOTO = resData.pd.DRIVING_LICENSE_IMG;
form.value.VEHICLE_MODEL = resData.pd.TRAILER_MODEL;
form.value.VEHICLE_BRAND = resData.pd.TRAILER_BRAND;
form.value.DRIVINGLICENSE_PHOTO = addingPrefixToFile(
resData.drivingLicenseImgs
);
info.value.OPER_CERTIFICATE_IMG = addingPrefixToFile(
resData.operCertificateImgs
);
info.value.TRAILER_INFO = addingPrefixToFile(resData.trailerInfoImgs);
data.Trailer = info.value;
data.form.PLATE_NUMBER = data.Trailer.PLATE_NUMBER;
data.form.FRAMES_NUMBER = data.Trailer.VIN;
data.form.VEHICLE_TYPE = data.Trailer.TRAILER_TYPE;
data.form.VEHICLEOWNER_NUMBER = data.Trailer.CAR_OWNERS_TEL;
data.form.FIRSTSHOW_DATE = data.Trailer.INITIAL_REGISTRATION_DATE;
data.form.DRIVINGLICENSE_PHOTO = data.Trailer.DRIVING_LICENSE_IMG;
data.form.VEHICLE_MODEL = data.Trailer.TRAILER_MODEL;
data.form.VEHICLE_BRAND = data.Trailer.TRAILER_BRAND;
};
const fnSubmit = debounce(
1000,
async () => {
await useFormValidate(formRef);
const formData = new FormData();
Object.keys(data.form).forEach((key) => {
formData.append(key, data.form[key]);
});
formData.delete("DRIVINGLICENSE_PHOTO");
if (data.form.DRIVINGLICENSE_PHOTO[0].raw)
formData.append(
"drivinglicenseFile",
data.form.DRIVINGLICENSE_PHOTO[0].raw
);
formData.append(
"drivinglicenseFileType",
!!data.form.DRIVINGLICENSE_PHOTO[0].raw
);
await setTaxationManageAdd(formData);
await setTaxationManageAdd({ ...form.value });
ElMessage.success("提交成功");
router.back();
},

View File

@ -1,17 +1,12 @@
<template>
<layout-card>
<el-divider content-position="left">车辆选择</el-divider>
<el-form
ref="formRef"
:model="data.form"
:rules="rules"
label-width="100px"
>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="6">
<el-form-item label="登记编号" prop="RECORD_NUMBER">
<el-input
v-model="data.form.RECORD_NUMBER"
v-model="form.RECORD_NUMBER"
placeholder="请输入登记编号"
/>
</el-form-item>
@ -19,7 +14,7 @@
<el-col :span="6">
<el-form-item label="挂车车辆" prop="PLATE_NUMBER">
<el-input
v-model="data.form.PLATE_NUMBER"
v-model="form.PLATE_NUMBER"
placeholder="请输入挂车车辆"
disabled
/>
@ -30,46 +25,30 @@
<el-row>
<el-col :span="6">
<el-form-item label="车牌号" prop="PLATE_NUMBER">
<el-input
v-model="data.form.PLATE_NUMBER"
placeholder="--"
disabled
/>
<el-input v-model="form.PLATE_NUMBER" placeholder="--" disabled />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="车架号" prop="FRAMES_NUMBER">
<el-input
v-model="data.form.FRAMES_NUMBER"
placeholder="--"
disabled
/>
<el-input v-model="form.FRAMES_NUMBER" placeholder="--" disabled />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="车辆类型" prop="VEHICLE_TYPE">
<el-input
v-model="data.form.VEHICLE_TYPE"
placeholder="--"
disabled
/>
<el-input v-model="form.VEHICLE_TYPE" placeholder="--" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="车主业主" prop="VEHICLEOWNER">
<el-input
v-model="data.form.VEHICLEOWNER"
placeholder="--"
disabled
/>
<el-form-item label="车主业主" prop="CAR_OWNERS">
<el-input v-model="form.CAR_OWNERS" placeholder="--" disabled />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="车主电话" prop="VEHICLEOWNER_NUMBER">
<el-input
v-model="data.form.VEHICLEOWNER_NUMBER"
v-model="form.VEHICLEOWNER_NUMBER"
placeholder="--"
disabled
/>
@ -77,35 +56,46 @@
</el-col>
<el-col :span="6">
<el-form-item label="初登日期" prop="FIRSTSHOW_DATE">
<el-input
v-model="data.form.FIRSTSHOW_DATE"
placeholder="--"
disabled
/>
<el-input v-model="form.FIRSTSHOW_DATE" placeholder="--" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="所属省份" prop="PROVINCE">
<el-input v-model="data.form.PROVINCE" placeholder="--" disabled />
<el-input v-model="form.PROVINCE" placeholder="--" disabled />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="所属地市" prop="CITY">
<el-input v-model="data.form.CITY" placeholder="--" disabled />
<el-input v-model="form.CITY" placeholder="--" disabled />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="所属区县" prop="COUNTY">
<el-input v-model="data.form.COUNTY" placeholder="--" disabled />
<el-input v-model="form.COUNTY" placeholder="--" disabled />
</el-form-item>
</el-col>
<el-divider content-position="left">挂车税务信息</el-divider>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="行驶证照片" prop="DRIVINGLICENSE_PHOTO">
<layout-upload
v-model:file-list="form.DRIVINGLICENSE_PHOTO"
list-type="picture-card"
accept=".jpg,.jpeg,.png"
disabled
delete-to-server
/>
</el-form-item>
</el-col>
</el-row>
<el-divider content-position="left">挂车税务信息</el-divider>
<el-row>
<el-col :span="6">
<el-form-item label="车主业主" prop="VEHICLEOWNER">
<el-input
v-model="data.form.VEHICLEOWNER"
v-model="form.VEHICLEOWNER"
placeholder="请填写车主业主"
/>
</el-form-item>
@ -113,27 +103,38 @@
<el-col :span="6">
<el-form-item label="联系电话" prop="CONTACT_NUMBER">
<el-input
v-model="data.form.CONTACT_NUMBER"
v-model="form.CONTACT_NUMBER"
placeholder="请填写联系电话"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="登记人" prop="REGISTRANT">
<el-input
v-model="data.form.REGISTRANT"
placeholder="请填写登记人"
/>
<el-input v-model="form.REGISTRANT" placeholder="请填写登记人" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="办理日期" prop="TRANSACTION_DATA">
<el-date-picker
v-model="form.TRANSACTION_DATA"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择办理日期"
@change="fnGetExpireDate"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="税费周期" prop="TAXESDUES_PERIOD">
<el-select v-model="data.form.TAXESDUES_PERIOD">
<el-select v-model="form.TAXESDUES_PERIOD"
@change="fnGetExpireDate"
>
<el-option
v-for="item in TaxesPeriodList"
:key="item.BIANMA"
v-for="item in TAXES_PERIOD"
:key="item.NAME"
:label="item.NAME"
:value="item.NAME"
/>
@ -142,74 +143,40 @@
</el-col>
<el-col :span="6">
<el-form-item label="到期日期" prop="EXPIRE_DATE">
<el-date-picker
v-model="data.form.EXPIRE_DATE"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择到期日期"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="提醒天数" prop="REMINDER_DAY">
<el-input
v-model="data.form.REMINDER_DAY"
placeholder="请填写提醒天数"
/>
<el-input v-model="form.EXPIRE_DATE" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="提醒日期" prop="REMINDER_DATA">
<el-date-picker
v-model="data.form.REMINDER_DATA"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择提醒日期"
<el-form-item label="提醒天数" prop="REMINDER_DAY">
<el-input
v-model="form.REMINDER_DAY"
placeholder="请填写提醒天数"
@change="fnGetReminderData"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="办理日期" prop="TRANSACTION_DATA">
<el-date-picker
v-model="data.form.TRANSACTION_DATA"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择办理日期"
/>
<el-form-item label="提醒日期" prop="REMINDER_DATA">
<el-input v-model="form.REMINDER_DATA" disabled />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="提醒状态">
<el-switch
v-model="data.form.REMINDER_STATUS"
v-model="form.REMINDER_STATUS"
active-value="0"
inactive-value="1"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="行驶证照片" prop="OPERATING_CERTIFICATE_PHOTO">
<layout-upload
v-model:file-list="data.form.OPERATING_CERTIFICATE_PHOTO"
list-type="picture-card"
accept=".jpg,.jpeg,.png"
delete-to-server
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="税费资料" prop="TAXESDUES_MATERIAL">
<el-input
v-model="data.form.TAXESDUES_MATERIAL"
v-model="form.TAXESDUES_MATERIAL"
placeholder="请填写税费资料"
type="textarea"
:autosize="{ minRows: 3 }"
@ -221,7 +188,7 @@
<el-col :span="24">
<el-form-item label="备注" prop="REMARK">
<el-input
v-model="data.form.REMARK"
v-model="form.REMARK"
placeholder="请填写备注"
type="textarea"
:autosize="{ minRows: 3 }"
@ -237,23 +204,24 @@
</template>
<script setup>
import { reactive, ref } from "vue";
import { layoutFnGetTaxesPeriod } from "@/assets/js/taxation_manage.js";
import { ref } from "vue";
import { debounce } from "throttle-debounce";
import useFormValidate from "@/assets/js/useFormValidate.js";
import {
editTaxationManageInfo,
findByIdTaxationManageInfo,
} from "@/request/taxation_manage.js";
import { getFreightTrailerView } from "@/request/enterprise_management.js";
import { ElMessage } from "element-plus";
import { useRoute, useRouter } from "vue-router";
import LayoutUpload from "@/components/upload/index.vue";
import { addingPrefixToFile } from "@/assets/js/utils.js";
import { TAXES_PERIOD } from "@/assets/js/constant.js";
const route = useRoute();
const router = useRouter();
const { TAXATION_ID } = route.query;
const TaxesPeriodList = await layoutFnGetTaxesPeriod();
const rules = {
TRAILER_VEHICLE: [
{ required: true, message: "挂车车辆不能为空", trigger: "change" },
@ -276,75 +244,94 @@ const rules = {
],
REMINDER_DAY: [
{ required: true, message: "提醒天数不能为空", trigger: "blur" },
{ pattern: /^([1-9][0-9]*)$/, message: "请输入正整数", trigger: "blur" },
],
REMINDER_DATA: [
{ required: true, message: "提醒日期不能为空", trigger: "change" },
],
};
const formRef = ref(null);
const data = reactive({
form: {
TAXATION_ID: "",
RECORD_NUMBER: "",
PLATE_NUMBER: "",
VEHICLEOWNER: "",
CONTACT_NUMBER: "",
TRANSACTION_DATA: "",
TAXESDUES_PERIOD: "",
EXPIRE_DATE: "",
REGISTRANT: "",
TRANSPORT_ENTERPRISES: "",
REMINDER_STATUS: "",
EXPIRE_STATUS: "",
RECORD_STATUS: "",
TRAILER_VEHICLE: "",
FRAMES_NUMBER: "",
VEHICLE_TYPE: "",
VEHICLEOWNER_NUMBER: "",
FIRSTSHOW_DATE: "",
PROVINCE: "",
CITY: "",
COUNTY: "",
REMINDER_DAY: "",
REMINDER_DATA: "",
TAXESDUES_MATERIAL: "",
REMARK: "",
REGISTER_NUMBER: "",
VEHICLE_MODEL: "",
VEHICLE_BRAND: "",
DRIVINGLICENSE_PHOTO: "",
},
const form = ref({
TAXATION_ID: "",
RECORD_NUMBER: "",
PLATE_NUMBER: "",
VEHICLEOWNER: "",
CONTACT_NUMBER: "",
TRANSACTION_DATA: "",
TAXESDUES_PERIOD: "",
EXPIRE_DATE: "",
REGISTRANT: "",
TRANSPORT_ENTERPRISES: "",
REMINDER_STATUS: "",
EXPIRE_STATUS: "",
RECORD_STATUS: "",
TRAILER_VEHICLE: "",
FRAMES_NUMBER: "",
VEHICLE_TYPE: "",
VEHICLEOWNER_NUMBER: "",
FIRSTSHOW_DATE: "",
PROVINCE: "",
CITY: "",
COUNTY: "",
REMINDER_DAY: "",
REMINDER_DATA: "",
TAXESDUES_MATERIAL: "",
REMARK: "",
REGISTER_NUMBER: "",
VEHICLE_MODEL: "",
VEHICLE_BRAND: "",
DRIVINGLICENSE_PHOTO: [],
TAXATION_NUMBER: "",
DRIVING_LICENSE_IMG: [],
FREIGHTTRAILER_ID: "",
CAR_OWNERS: "",
});
const fnGetData = async () => {
if (TAXATION_ID) {
const resData = await findByIdTaxationManageInfo({ TAXATION_ID });
data.form = resData.pd;
const fnGetExpireDate = async () => {
if(form.value.TRANSACTION_DATA !== '' && form.value.TAXESDUES_PERIOD !== ''){
const TAXESDUES_PERIOD = Number(form.value.TAXESDUES_PERIOD.substring(0,form.value.TAXESDUES_PERIOD.indexOf("个")));
const date = new Date(form.value.TRANSACTION_DATA);
date.setMonth(date.getMonth() + TAXESDUES_PERIOD);
const year = date.getFullYear();
let month = date.getMonth() + 1;
month = month < 10 ? "0" + month : month;
let day = date.getDate();
day = day < 10 ? "0" + day : day;
form.value.EXPIRE_DATE = year + "-" + month + "-" + day;
}
fnGetReminderData()
};
const fnGetReminderData = async () => {
if(form.value.REMINDER_DAY !== '') {
const REMINDER_DAY = Number(form.value.REMINDER_DAY);
const date = new Date(form.value.EXPIRE_DATE);
date.setDate(date.getDate() - REMINDER_DAY);
const year = date.getFullYear();
let month = date.getMonth() + 1;
month = month < 10 ? "0" + month : month;
let day = date.getDate();
day = day < 10 ? "0" + day : day;
form.value.REMINDER_DATA = year + "-" + month + "-" + day;
}
};
fnGetReminderData();
const fnGetData = async () => {
if (!TAXATION_ID) return;
const resData = await findByIdTaxationManageInfo({ TAXATION_ID });
form.value = resData.pd;
const FREIGHTTRAILER_ID = form.value.FREIGHTTRAILER_ID;
const info = await getFreightTrailerView({ FREIGHTTRAILER_ID });
form.value.CAR_OWNERS = info.pd.CAR_OWNERS;
form.value.DRIVINGLICENSE_PHOTO = addingPrefixToFile(info.drivingLicenseImgs);
};
fnGetData();
const fnSubmit = debounce(
1000,
async () => {
await useFormValidate(formRef);
const formData = new FormData();
Object.keys(data.form).forEach((key) => {
formData.append(key, data.form[key]);
});
formData.delete("DRIVINGLICENSE_PHOTO");
if (data.form.DRIVINGLICENSE_PHOTO) {
if (data.form.DRIVINGLICENSE_PHOTO[0].raw)
formData.append(
"drivinglicenseFile",
data.form.DRIVINGLICENSE_PHOTO[0].raw
);
formData.append(
"drivinglicenseFile",
!!data.form.DRIVINGLICENSE_PHOTO[0].raw
);
}
await editTaxationManageInfo(formData);
await editTaxationManageInfo({ ...form.value, TAXATION_ID });
ElMessage.success("提交成功");
router.back();
},

View File

@ -49,10 +49,10 @@
placeholder="请选择到期状态"
>
<el-option
v-for="item in expireStatusList"
:key="item.BIANMA"
v-for="item in EXPIRE_STATUS"
:key="item.NAME"
:label="item.NAME"
:value="item.BIANMA"
:value="item.NAME"
/>
</el-select>
</el-form-item>
@ -72,12 +72,16 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-col :span="10">
<el-form-item label-width="10px">
<el-button type="primary" native-type="submit">搜索</el-button>
<el-button native-type="reset" @click="fnResetPaginationTransfer">
重置
</el-button>
</el-form-item>
</el-col>
<el-col :span="25">
<el-form-item label-width="10px" class="end">
<el-button>导出</el-button>
</el-form-item>
</el-col>
@ -117,7 +121,12 @@
<el-tag v-else-if="row.EXPIRE_STATUS === ''">未到期</el-tag>
</template>
</el-table-column>
<el-table-column prop="RECORD_STATUS" label="档案状态" />
<el-table-column prop="RECORD_STATUS" label="档案状态" >
<template #default="{ row }">
<el-tag v-if="row.RECORD_STATUS === ''"></el-tag>
<el-tag v-else></el-tag>
</template>
</el-table-column>
<el-table-column label="操作" width="150">
<template #default="{ row }">
<el-button
@ -134,6 +143,7 @@
查看
</el-button>
<el-button
v-if="row.ASSIGNEDSTATUS !== '1'"
type="primary"
text
link
@ -148,7 +158,7 @@
</el-button>
<el-button
v-if="buttonJurisdiction.del"
type="primary"
type="danger"
text
link
@click="fnDelete(row.TAXATION_ID)"
@ -177,7 +187,6 @@
import { serialNumber } from "@/assets/js/utils.js";
import useListData from "@/assets/js/useListData.js";
import {
layoutFnGetExpireStatus,
layoutFnGetRemindStatus,
} from "@/assets/js/taxation_manage.js";
import {
@ -189,10 +198,9 @@ import useButtonJurisdiction from "@/assets/js/useButtonJurisdiction.js";
import { debounce } from "throttle-debounce";
import { ElMessage, ElMessageBox } from "element-plus";
const router = useRouter();
const remindStatusList = await layoutFnGetRemindStatus();
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
useListData(getTaxationManageList, {});
const expireStatusList = await layoutFnGetExpireStatus();
const remindStatusList = await layoutFnGetRemindStatus();
const fnGetDataTransfer = () => {
fnGetData({
DEPTIDS: searchForm.value.DEPTIDS?.join(","),
@ -210,10 +218,10 @@ const fnDelete = debounce(
await ElMessageBox.confirm("确定要删除吗?", { type: "warning" });
await setTaxatonManageDelete({ TAXATION_ID });
ElMessage.success("删除成功");
fnGetDataTransfer();
},
{ atBegin: true }
);
const buttonJurisdiction = await useButtonJurisdiction("operation");
</script>
<style scoped></style>

View File

@ -1,5 +1,6 @@
<template>
<layout-card>
<div id="printContainer">
<el-divider content-position="left">基本信息</el-divider>
<el-descriptions border>
<el-descriptions-item label="登记编号">
@ -14,12 +15,6 @@
<el-descriptions-item label="车辆类型">
{{ data.VEHICLE_TYPE }}
</el-descriptions-item>
<el-descriptions-item label="车辆型号">
{{ data.VEHICLE_MODEL }}
</el-descriptions-item>
<el-descriptions-item label="车辆品牌">
{{ data.VEHICLE_BRAND }}
</el-descriptions-item>
<el-descriptions-item label="车主业主">
{{ data.VEHICLEOWNER }}
</el-descriptions-item>
@ -66,6 +61,11 @@
{{ data.REMARK }}
</el-descriptions-item>
</el-descriptions>
</div>
<div class="mt-10 tc">
<el-button v-print="'#printContainer'" type="primary"></el-button>
</div>
<div v-html="PRINT_STYLE" />
</layout-card>
</template>
@ -73,6 +73,7 @@
import { findByIdTaxationManageInfo } from "@/request/taxation_manage.js";
import { useRoute } from "vue-router";
import { ref } from "vue";
import { PRINT_STYLE } from "@/assets/js/constant.js";
const route = useRoute();
const { TAXATION_ID } = route.query;

View File

@ -0,0 +1,146 @@
<template>
<layout-card>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="6">
<el-form-item label="值班人员" prop="WATCHKEEPER">
<el-input v-model="form.WATCHKEEPER" placeholder="请输入值班人员" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="值班日期" prop="WATCH_DATE">
<el-date-picker
v-model="form.WATCH_DATE"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择值班日期"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="值班领导" prop="WATCHLEAD">
<el-input v-model="form.WATCHLEAD" placeholder="请输入值班领导" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="值班座机" prop="WATCH_TELEPHONE">
<el-input
v-model="form.WATCH_TELEPHONE"
placeholder="请输入值班座机"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="值班人电话" prop="WATCH_PHONE">
<el-input
v-model="form.WATCH_PHONE"
placeholder="请输入值班人电话"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="登记人" prop="REGISTRANT">
<el-input v-model="form.REGISTRANT" placeholder="请输入登记人" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="值班情况" prop="WATCH_CONDITION">
<el-input
v-model="form.WATCH_CONDITION"
placeholder="请填写值班情况"
type="textarea"
:autosize="{ minRows: 3 }"
/>
</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 { ref } from "vue";
import {
setEnterpriseSafetyProductEdit,
setEnterpriseSafetyProductAdd,
} from "@/request/enterprise_safety_production.js";
import { debounce } from "throttle-debounce";
import useFormValidate from "@/assets/js/useFormValidate.js";
import { useRoute, useRouter } from "vue-router";
import { ElMessage } from "element-plus";
const route = useRoute();
const router = useRouter();
const SAFETYPRODUCTION_ID = route.query.SAFETYPRODUCTION_ID;
const rules = {
MANAGING_ENTERPRISE: [
{ required: true, message: "经营企业不能为空", trigger: "blur" },
],
WATCHKEEPER: [
{ required: true, message: "值班人员不能为空", trigger: "blur" },
],
WATCH_DATE: [
{ required: true, message: "值班日期不能为空", trigger: "change" },
],
WATCHLEAD: [{ required: true, message: "值班领导不能为空", trigger: "blur" }],
WATCH_TELEPHONE: [
{ required: true, message: "请输入", trigger: "blur" },
{ min: 11, max: 11, message: "请输入11位手机号码", trigger: "blur" },
{
pattern:
/^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/,
message: "请输入正确的手机号码",
},
],
WATCH_PHONE: [
{ required: true, message: "请输入", trigger: "blur" },
{ min: 11, max: 11, message: "请输入11位手机号码", trigger: "blur" },
{
pattern:
/^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/,
message: "请输入正确的手机号码",
},
],
REGISTRANT: [{ required: true, message: "登记人不能为空", trigger: "blur" }],
};
const formRef = ref(null);
const form = ref({
SAFETYPRODUCTION_ID: "",
CORPINFO_ID: "",
WATCHKEEPER: "",
WATCHLEAD: "",
WATCH_DATE: "",
WATCH_TELEPHONE: "",
WATCH_PHONE: "",
REGISTRANT: "",
WATCH_CONDITION: "",
MANAGING_ENTERPRISE: "",
MANAGING_TYPE: "",
});
const fnGetData = async () => {
if (!SAFETYPRODUCTION_ID) return;
const resData = await setEnterpriseSafetyProductEdit({ SAFETYPRODUCTION_ID });
form.value = resData.pd;
};
fnGetData();
const fnSubmit = debounce(
1000,
async () => {
await useFormValidate(formRef);
await setEnterpriseSafetyProductAdd({ ...form.value });
ElMessage.success("提交成功");
router.back();
},
{ atBegin: true }
);
</script>
<style scoped lang="scss"></style>

View File

@ -0,0 +1,141 @@
<template>
<layout-card>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="6">
<el-form-item label="值班人员" prop="WATCHKEEPER">
<el-input v-model="form.WATCHKEEPER" placeholder="请输入值班人员" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="值班日期" prop="WATCH_DATE">
<el-date-picker
v-model="form.WATCH_DATE"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择值班日期"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="值班领导" prop="WATCHLEAD">
<el-input v-model="form.WATCHLEAD" placeholder="请输入值班领导" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="值班座机" prop="WATCH_TELEPHONE">
<el-input
v-model="form.WATCH_TELEPHONE"
placeholder="请输入值班座机"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="值班人电话" prop="WATCH_PHONE">
<el-input
v-model="form.WATCH_PHONE"
placeholder="请输入值班人电话"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="登记人" prop="REGISTRANT">
<el-input v-model="form.REGISTRANT" placeholder="请输入登记人" />
</el-form-item>
</el-col>
</el-row>
<el-col :span="24">
<el-form-item label="值班情况" prop="WATCH_CONDITION">
<el-input
v-model="form.WATCH_CONDITION"
placeholder="请填写值班情况"
type="textarea"
:autosize="{ minRows: 3 }"
/>
</el-form-item>
</el-col>
</el-form>
<div class="tc mt-10">
<el-button type="primary" @click="fnSubmit"></el-button>
</div>
</layout-card>
</template>
<script setup>
import { ref } from "vue";
import {
setEnterpriseSafetyProductEdit,
setEnterpriseSafetyProductAdd,
} from "@/request/enterprise_safety_production.js";
import { debounce } from "throttle-debounce";
import useFormValidate from "@/assets/js/useFormValidate.js";
import { useRoute, useRouter } from "vue-router";
import { ElMessage } from "element-plus";
const route = useRoute();
const router = useRouter();
const SAFETYPRODUCTION_ID = route.query.SAFETYPRODUCTION_ID;
const rules = {
WATCHKEEPER: [
{ required: true, message: "值班人员不能为空", trigger: "blur" },
],
WATCH_DATE: [
{ required: true, message: "值班日期不能为空", trigger: "change" },
],
WATCHLEAD: [{ required: true, message: "值班领导不能为空", trigger: "blur" }],
WATCH_TELEPHONE: [
{ required: true, message: "请输入", trigger: "blur" },
{ min: 11, max: 11, message: "请输入11位手机号码", trigger: "blur" },
{
pattern:
/^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/,
message: "请输入正确的手机号码",
},
],
WATCH_PHONE: [
{ required: true, message: "请输入", trigger: "blur" },
{ min: 11, max: 11, message: "请输入11位手机号码", trigger: "blur" },
{
pattern:
/^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/,
message: "请输入正确的手机号码",
},
],
REGISTRANT: [{ required: true, message: "登记人不能为空", trigger: "blur" }],
};
const formRef = ref(null);
const form = ref({
SAFETYPRODUCTION_ID: "",
CORPINFO_ID: "",
WATCHKEEPER: "",
WATCHLEAD: "",
WATCH_DATE: "",
WATCH_TELEPHONE: "",
WATCH_PHONE: "",
REGISTRANT: "",
WATCH_CONDITION: "",
MANAGING_ENTERPRISE: "",
MANAGING_TYPE: "",
});
const fnGetData = async () => {
if (!SAFETYPRODUCTION_ID) return;
const resData = await setEnterpriseSafetyProductEdit({ SAFETYPRODUCTION_ID });
form.value = resData.pd;
};
fnGetData();
const fnSubmit = debounce(
1000,
async () => {
await useFormValidate(formRef);
await setEnterpriseSafetyProductAdd({ ...form.value });
ElMessage.success("提交成功");
router.back();
},
{ atBegin: true }
);
</script>
<style scoped lang="scss"></style>

View File

@ -0,0 +1,156 @@
<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="WATCHKEEPER">
<el-input
v-model="searchForm.WATCHKEEPER"
placeholder="请填写值班人员"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="值班领导" prop="WATCHLEAD">
<el-input
v-model="searchForm.WATCHLEAD"
placeholder="请填写值班领导"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="值班日期" prop="WATCH_DATE">
<el-date-picker
v-model="searchForm.WATCH_DATE"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
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="WATCHKEEPER" label="值班人员" width="130" />
<el-table-column prop="WATCH_DATE" label="值班日期" width="130" />
<el-table-column prop="WATCHLEAD" label="值班领导" width="130" />
<el-table-column prop="WATCH_TELEPHONE" label="值班座机" width="130" />
<el-table-column prop="WATCH_PHONE" label="值班人电话" width="180" />
<el-table-column prop="REGISTRANT" label="登记人" width="130" />
<el-table-column prop="WATCH_CONDITION" label="值班情况" width="200" />
<el-table-column prop="CREATTIME" label="创建时间" width="180" />
<el-table-column prop="OPERATTIME" label="修改时间" width="180" />
<el-table-column label="操作" width="150">
<template #default="{ row }">
<el-button
type="primary"
text
link
@click="
router.push({
path: '/production_course_regulate/enterprise_safety_production_shift/edit',
query: { SAFETYPRODUCTION_ID: row.SAFETYPRODUCTION_ID },
})
"
>
修改
</el-button>
<el-button
v-if="buttonJurisdiction.del"
type="primary"
text
link
@click="fnDelete(row.SAFETYPRODUCTION_ID)"
>
删除
</el-button>
</template>
</el-table-column>
<template #button>
<el-button
v-if="buttonJurisdiction.add"
type="primary"
@click="
router.push({
path: '/production_course_regulate/enterprise_safety_production_shift/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";
import useButtonJurisdiction from "@/assets/js/useButtonJurisdiction.js";
import useListData from "@/assets/js/useListData.js";
import { useRouter } from "vue-router";
import { reactive } from "vue";
import {
getEnterpriseSafetyProductionList,
setEnterpriseSafetyProductDelete,
} from "@/request/enterprise_safety_production.js";
import { debounce } from "throttle-debounce";
import { ElMessage, ElMessageBox } from "element-plus";
const router = useRouter();
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
useListData(getEnterpriseSafetyProductionList);
const data = reactive({
analysisDialog: {
visible: false,
info: {},
},
});
const fnDelete = debounce(
1000,
async (SAFETYPRODUCTION_ID) => {
await ElMessageBox.confirm("确定要删除吗?", { type: "warning" });
await setEnterpriseSafetyProductDelete({ SAFETYPRODUCTION_ID });
ElMessage.success("删除成功");
fnResetPagination();
},
{ atBegin: true }
);
const buttonJurisdiction = await useButtonJurisdiction(
"enterpriseSafetyProduction"
);
</script>
<style scoped></style>

View File

@ -0,0 +1,159 @@
<template>
<layout-card>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="24">
<el-form-item label="人员名称" prop="PERSON_NAME">
<el-input v-model="form.PERSON_NAME" placeholder="请输入人员名称" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="手套" prop="GLOVE">
<el-input v-model="form.GLOVE" placeholder="请输入手套数量" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="口罩" prop="MASK">
<el-input v-model="form.MASK" placeholder="请输入口罩数量" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="工作服" prop="OVERALL">
<el-input v-model="form.OVERALL" placeholder="请输入工作服数量" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="工作鞋" prop="FOOTWARE">
<el-input v-model="form.FOOTWARE" placeholder="请输入工作鞋数量" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="防寒服" prop="WINTER_COAT">
<el-input
v-model="form.WINTER_COAT"
placeholder="请输入防寒服数量"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="雨衣" prop="RAINCOAT">
<el-input v-model="form.RAINCOAT" placeholder="请输入雨衣数量" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="护目镜" prop="GOGGLES">
<el-input v-model="form.GOGGLES" placeholder="请输入护目镜数量" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="急救药箱" prop="AID_KIT">
<el-input v-model="form.AID_KIT" placeholder="请输入急救药箱数量" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="安全帽" prop="HELMET">
<el-input v-model="form.HELMET" placeholder="请输入安全帽数量" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="其他用品" prop="SUPPLIES">
<el-input
v-model="form.SUPPLIES"
placeholder="请输入其他用品"
type="textarea"
:autosize="{ minRows: 3 }"
/>
</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 { ref } from "vue";
import {
setEntrenchThingGrantEdit,
setEntrenchThingGrantAdd,
} from "@/request/entrench_thing_grant.js";
import { debounce } from "throttle-debounce";
import useFormValidate from "@/assets/js/useFormValidate.js";
import { useRoute, useRouter } from "vue-router";
import { ElMessage } from "element-plus";
const route = useRoute();
const router = useRouter();
const PROTECTIVEEQUIPMENT_ID = route.query.PROTECTIVEEQUIPMENT_ID;
const rules = {
MANAGING_ENTERPRISE: [
{ required: true, message: "经营企业不能为空", trigger: "blur" },
],
GLOVE: [
{ pattern: /^([1-9][0-9]*)$/, message: "请输入整数", trigger: "blur" },
],
MASK: [
{ pattern: /^([1-9][0-9]*)$/, message: "请输入整数", trigger: "blur" },
],
OVERALL: [
{ pattern: /^([1-9][0-9]*)$/, message: "请输入整数", trigger: "blur" },
],
FOOTWARE: [
{ pattern: /^([1-9][0-9]*)$/, message: "请输入整数", trigger: "blur" },
],
WINTER_COAT: [
{ pattern: /^([1-9][0-9]*)$/, message: "请输入整数", trigger: "blur" },
],
RAINCOAT: [
{ pattern: /^([1-9][0-9]*)$/, message: "请输入整数", trigger: "blur" },
],
GOGGLES: [
{ pattern: /^([1-9][0-9]*)$/, message: "请输入整数", trigger: "blur" },
],
AID_KIT: [
{ pattern: /^([1-9][0-9]*)$/, message: "请输入整数", trigger: "blur" },
],
HELMET: [
{ pattern: /^([1-9][0-9]*)$/, message: "请输入整数", trigger: "blur" },
],
};
const formRef = ref(null);
const form = ref({
PROTECTIVEEQUIPMENT_ID: "",
CORPINFO_ID: "",
PERSON_NAME: "",
MANAGING_ENTERPRISE: "",
GLOVE: "",
MASK: "",
OVERALL: "",
FOOTWARE: "",
WINTER_COAT: "",
RAINCOAT: "",
GOGGLES: "",
AID_KIT: "",
HELMET: "",
SUPPLIES: "",
MANAGING_TYPE: "",
});
const fnGetData = async () => {
if (!PROTECTIVEEQUIPMENT_ID) return;
const resData = await setEntrenchThingGrantEdit({ PROTECTIVEEQUIPMENT_ID });
form.value = resData.pd;
};
fnGetData();
const fnSubmit = debounce(
1000,
async () => {
await useFormValidate(formRef);
await setEntrenchThingGrantAdd({ ...form.value });
ElMessage.success("提交成功");
router.back();
},
{ atBegin: true }
);
</script>
<style scoped lang="scss"></style>

View File

@ -0,0 +1,159 @@
<template>
<layout-card>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="24">
<el-form-item label="人员名称" prop="PERSON_NAME">
<el-input v-model="form.PERSON_NAME" placeholder="请输入人员名称" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="手套" prop="GLOVE">
<el-input v-model="form.GLOVE" placeholder="请输入手套数量" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="口罩" prop="MASK">
<el-input v-model="form.MASK" placeholder="请输入口罩数量" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="工作服" prop="OVERALL">
<el-input v-model="form.OVERALL" placeholder="请输入工作服数量" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="工作鞋" prop="FOOTWARE">
<el-input v-model="form.FOOTWARE" placeholder="请输入工作鞋数量" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="防寒服" prop="WINTER_COAT">
<el-input
v-model="form.WINTER_COAT"
placeholder="请输入防寒服数量"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="雨衣" prop="RAINCOAT">
<el-input v-model="form.RAINCOAT" placeholder="请输入雨衣数量" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="护目镜" prop="GOGGLES">
<el-input v-model="form.GOGGLES" placeholder="请输入护目镜数量" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="急救药箱" prop="AID_KIT">
<el-input v-model="form.AID_KIT" placeholder="请输入急救药箱数量" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="安全帽" prop="HELMET">
<el-input v-model="form.HELMET" placeholder="请输入安全帽数量" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="其他用品" prop="SUPPLIES">
<el-input
v-model="form.SUPPLIES"
placeholder="请输入其他用品"
type="textarea"
:autosize="{ minRows: 3 }"
/>
</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 { ref } from "vue";
import {
getEntrenchThingGrantEdit,
setEntrenchThingGrantEdit,
} from "@/request/entrench_thing_grant.js";
import { debounce } from "throttle-debounce";
import useFormValidate from "@/assets/js/useFormValidate.js";
import { useRoute, useRouter } from "vue-router";
import { ElMessage } from "element-plus";
const route = useRoute();
const router = useRouter();
const PROTECTIVEEQUIPMENT_ID = route.query.PROTECTIVEEQUIPMENT_ID;
const rules = {
MANAGING_ENTERPRISE: [
{ required: true, message: "经营企业不能为空", trigger: "blur" },
],
GLOVE: [
{ pattern: /^([1-9][0-9]*)$/, message: "请输入整数", trigger: "blur" },
],
MASK: [
{ pattern: /^([1-9][0-9]*)$/, message: "请输入整数", trigger: "blur" },
],
OVERALL: [
{ pattern: /^([1-9][0-9]*)$/, message: "请输入整数", trigger: "blur" },
],
FOOTWARE: [
{ pattern: /^([1-9][0-9]*)$/, message: "请输入整数", trigger: "blur" },
],
WINTER_COAT: [
{ pattern: /^([1-9][0-9]*)$/, message: "请输入整数", trigger: "blur" },
],
RAINCOAT: [
{ pattern: /^([1-9][0-9]*)$/, message: "请输入整数", trigger: "blur" },
],
GOGGLES: [
{ pattern: /^([1-9][0-9]*)$/, message: "请输入整数", trigger: "blur" },
],
AID_KIT: [
{ pattern: /^([1-9][0-9]*)$/, message: "请输入整数", trigger: "blur" },
],
HELMET: [
{ pattern: /^([1-9][0-9]*)$/, message: "请输入整数", trigger: "blur" },
],
};
const formRef = ref(null);
const form = ref({
PROTECTIVEEQUIPMENT_ID: "",
CORPINFO_ID: "",
PERSON_NAME: "",
MANAGING_ENTERPRISE: "",
GLOVE: "",
MASK: "",
OVERALL: "",
FOOTWARE: "",
WINTER_COAT: "",
RAINCOAT: "",
GOGGLES: "",
AID_KIT: "",
HELMET: "",
SUPPLIES: "",
MANAGING_TYPE: "",
});
const fnGetData = async () => {
if (!PROTECTIVEEQUIPMENT_ID) return;
const resData = await setEntrenchThingGrantEdit({ PROTECTIVEEQUIPMENT_ID });
form.value = resData.pd;
};
fnGetData();
const fnSubmit = debounce(
1000,
async () => {
await useFormValidate(formRef);
await getEntrenchThingGrantEdit({ ...form.value });
ElMessage.success("提交成功");
router.back();
},
{ atBegin: true }
);
</script>
<style scoped lang="scss"></style>

View File

@ -0,0 +1,141 @@
<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="PERSON_NAME">
<el-input
v-model="searchForm.PERSON_NAME"
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="PERSON_NAME" label="人员名称" width="130" />
<el-table-column prop="GLOVE" label="手套" width="130" />
<el-table-column prop="MASK" label="口罩" width="130" />
<el-table-column prop="OVERALL" label="工作服" width="130" />
<el-table-column prop="FOOTWARE" label="工作鞋" width="180" />
<el-table-column prop="WINTER_COAT" label="防寒服" width="130" />
<el-table-column prop="RAINCOAT" label="雨衣" width="200" />
<el-table-column prop="GOGGLES" label="护目镜" width="180" />
<el-table-column prop="AID_KIT" label="急救药箱" width="180" />
<el-table-column prop="HELMET" label="安全帽" width="180" />
<el-table-column prop="SUPPLIES" label="其他用品" width="180" />
<el-table-column prop="CREATTIME" label="创建时间" width="180" />
<el-table-column prop="OPERATTIME" label="修改时间" width="180" />
<el-table-column label="操作" width="150">
<template #default="{ row }">
<el-button
type="primary"
text
link
@click="
router.push({
path: '/production_course_regulate/entrench_thing_grant/edit',
query: { PROTECTIVEEQUIPMENT_ID: row.PROTECTIVEEQUIPMENT_ID },
})
"
>
修改
</el-button>
<el-button
v-if="buttonJurisdiction.del"
type="primary"
text
link
@click="fnDelete(row.PROTECTIVEEQUIPMENT_ID)"
>
删除
</el-button>
</template>
</el-table-column>
<template #button>
<el-button
v-if="buttonJurisdiction.add"
type="primary"
@click="
router.push({
path: '/production_course_regulate/entrench_thing_grant/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";
import useButtonJurisdiction from "@/assets/js/useButtonJurisdiction.js";
import useListData from "@/assets/js/useListData.js";
import { useRouter } from "vue-router";
import { reactive } from "vue";
import {
getEntrenchThingGrantList,
setEntrenchThingGrantDelete,
} from "@/request/entrench_thing_grant.js";
import { debounce } from "throttle-debounce";
import { ElMessage, ElMessageBox } from "element-plus";
const router = useRouter();
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
useListData(getEntrenchThingGrantList);
const data = reactive({
analysisDialog: {
visible: false,
info: {},
},
});
const fnDelete = debounce(
1000,
async (PROTECTIVEEQUIPMENT_ID) => {
await ElMessageBox.confirm("确定要删除吗?", { type: "warning" });
await setEntrenchThingGrantDelete({ PROTECTIVEEQUIPMENT_ID });
ElMessage.success("删除成功");
fnResetPagination();
},
{ atBegin: true }
);
const buttonJurisdiction = await useButtonJurisdiction(
"enterpriseSafetyProduction"
);
</script>
<style scoped></style>

View File

@ -0,0 +1,203 @@
<template>
<layout-card>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="24">
<el-form-item label="设施编号" prop="FACILITY_NUMBER">
<el-input
v-model="form.FACILITY_NUMBER"
placeholder="请输入设施编号"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="设施名称" prop="FACILITY_NAME">
<el-input
v-model="form.FACILITY_NAME"
placeholder="请输入设施名称"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="设施单位" prop="FACILITY_UNIT">
<el-input
v-model="form.FACILITY_UNIT"
placeholder="请输入设施单位"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="设施数量" prop="FACILITY_COUNT">
<el-input
v-model="form.FACILITY_COUNT"
placeholder="请输入设施数量"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="设施位置" prop="FACILITY_LOCALTION">
<el-input
v-model="form.FACILITY_LOCALTION"
placeholder="请输入设施位置"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="设施负责人" prop="FACILITY_PRINCIPAL">
<el-input
v-model="form.FACILITY_PRINCIPAL"
placeholder="请输入设施负责人"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="登记时间" prop="REGISTRATION_TIME">
<el-date-picker
v-model="form.REGISTRATION_TIME"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择登记时间"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="设备设施" prop="EQUIPMENT_FACILITY">
<layout-upload
v-model:file-list="form.EQUIPMENT_FACILITY"
list-type="picture-card"
accept=".jpg,.jpeg,.png"
/>
</el-form-item>
</el-col>
</el-row>
<el-col :span="24">
<el-form-item label="备注" prop="REMARK">
<el-input
v-model="form.REMARK"
placeholder="请填写备注"
type="textarea"
:autosize="{ minRows: 3 }"
/>
</el-form-item>
</el-col>
</el-form>
<div class="tc mt-10">
<el-button type="primary" @click="fnSubmit"></el-button>
</div>
</layout-card>
</template>
<script setup>
import { ref } from "vue";
import {
setFirefightingEquipmentFacilityEdit,
setFirefightingEquipmentFacilityAdd,
getFirefightingEquipmentFacilityView,
} from "@/request/firefighting_equipment_facility.js";
import { debounce } from "throttle-debounce";
import useFormValidate from "@/assets/js/useFormValidate.js";
import { useRoute, useRouter } from "vue-router";
import { ElMessage } from "element-plus";
import LayoutUpload from "@/components/upload/index.vue";
import { setUploadImg } from "@/request/api.js";
import { addingPrefixToFile } from "@/assets/js/utils.js";
const route = useRoute();
const router = useRouter();
const FIREFIGHTINGFACILITY_ID = route.query.FIREFIGHTINGFACILITY_ID;
const rules = {
MANAGING_ENTERPRISE: [
{ required: true, message: "经营企业不能为空", trigger: "blur" },
],
FACILITY_NUMBER: [
{ required: true, message: "设施编号不能为空", trigger: "blur" },
],
FACILITY_NAME: [
{ required: true, message: "设施名称不能为空", trigger: "blur" },
],
FACILITY_UNIT: [
{ required: true, message: "设施单位不能为空", trigger: "blur" },
],
FACILITY_COUNT: [
{ required: true, message: "设施数量不能为空", trigger: "blur" },
{ pattern: /^([1-9][0-9]*)$/, message: "请输入整数", trigger: "blur" },
],
FACILITY_LOCALTION: [
{ required: true, message: "设施位置不能为空", trigger: "blur" },
],
FACILITY_PRINCIPAL: [
{ required: true, message: "设施负责人不能为空", trigger: "blur" },
],
REGISTRATION_TIME: [
{ required: true, message: "登记时间不能为空", trigger: "change" },
],
};
const formRef = ref(null);
const form = ref({
FIREFIGHTINGFACILITY_ID: "",
CORPINFO_ID: "",
FACILITY_NAME: "",
FACILITY_NUMBER: "",
FACILITY_LOCALTION: "",
CONDUCT_ENTERPRISE: "",
FACILITY_UNIT: "",
FACILITY_COUNT: "",
CONDUCT_TYPE: "",
FACILITY_PRINCIPAL: "",
REGISTRATION_TIME: "",
EQUIPMENT_FACILITY: [],
REMARK: "",
});
const fnGetData = async () => {
if (!FIREFIGHTINGFACILITY_ID) return;
const resData = await getFirefightingEquipmentFacilityView({
FIREFIGHTINGFACILITY_ID,
});
form.value = resData.pd;
form.value.EQUIPMENT_FACILITY = addingPrefixToFile(
resData.firefightingequipmentImg
);
};
fnGetData();
const fnSubmit = debounce(
1000,
async () => {
await useFormValidate(formRef);
const resData = !FIREFIGHTINGFACILITY_ID
? await setFirefightingEquipmentFacilityAdd({ ...form.value })
: await setFirefightingEquipmentFacilityEdit({
...form.value,
FIREFIGHTINGFACILITY_ID,
});
const currentEquipmentFacilityId = resData.pd.FIREFIGHTINGFACILITY_ID;
for (let i = 0; i < form.value.EQUIPMENT_FACILITY.length; i++) {
if (form.value.EQUIPMENT_FACILITY[i].raw)
await fnUploadImage(
currentEquipmentFacilityId,
form.value.EQUIPMENT_FACILITY[i].raw,
120
);
}
ElMessage.success("提交成功");
router.back();
},
{ atBegin: true }
);
const fnUploadImage = async (HIDDEN_ID, FFILE, TYPE) => {
const formData = new FormData();
formData.append("FOREIGN_KEY", HIDDEN_ID);
formData.append("TYPE", TYPE);
formData.append("FFILE", FFILE);
await setUploadImg(formData);
};
</script>
<style scoped lang="scss"></style>

View File

@ -0,0 +1,204 @@
<template>
<layout-card>
<el-divider content-position="left">修改</el-divider>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="6">
<el-form-item label="设施编号" prop="FACILITY_NUMBER">
<el-input
v-model="form.FACILITY_NUMBER"
placeholder="请输入设施编号"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="设施名称" prop="FACILITY_NAME">
<el-input
v-model="form.FACILITY_NAME"
placeholder="请输入设施名称"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="设施单位" prop="FACILITY_UNIT">
<el-input
v-model="form.FACILITY_UNIT"
placeholder="请输入设施单位"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="设施数量" prop="FACILITY_COUNT">
<el-input
v-model="form.FACILITY_COUNT"
placeholder="请输入设施数量"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="设施位置" prop="FACILITY_LOCALTION">
<el-input
v-model="form.FACILITY_LOCALTION"
placeholder="请输入设施位置"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="设施负责人" prop="FACILITY_PRINCIPAL">
<el-input
v-model="form.FACILITY_PRINCIPAL"
placeholder="请输入设施负责人"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="登记时间" prop="REGISTRATION_TIME">
<el-date-picker
v-model="form.REGISTRATION_TIME"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择登记时间"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="设备设施" prop="EQUIPMENT_FACILITY">
<layout-upload
v-model:file-list="form.EQUIPMENT_FACILITY"
list-type="picture-card"
accept=".jpg,.jpeg,.png"
delete-to-server
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注" prop="REMARK">
<el-input
v-model="form.REMARK"
placeholder="请填写备注"
type="textarea"
:autosize="{ minRows: 3 }"
/>
</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 { ref } from "vue";
import { debounce } from "throttle-debounce";
import useFormValidate from "@/assets/js/useFormValidate.js";
import {
getFirefightingEquipmentFacilityView,
getFirefightingEquipmentFacilityEdit,
setFirefightingEquipmentFacilityAdd,
} from "@/request/firefighting_equipment_facility.js";
import { ElMessage } from "element-plus";
import { useRoute, useRouter } from "vue-router";
import LayoutUpload from "@/components/upload/index.vue";
import { addingPrefixToFile } from "@/assets/js/utils.js";
import { setUploadImg } from "@/request/api.js";
const route = useRoute();
const router = useRouter();
const { FIREFIGHTINGFACILITY_ID } = route.query;
const rules = {
FACILITY_NUMBER: [
{ required: true, message: "设施编号不能为空", trigger: "blur" },
],
FACILITY_NAME: [
{ required: true, message: "设施名称不能为空", trigger: "blur" },
],
FACILITY_UNIT: [
{ required: true, message: "设施单位不能为空", trigger: "blur" },
],
FACILITY_COUNT: [
{ required: true, message: "设施数量不能为空", trigger: "blur" },
{ pattern: /^([1-9][0-9]*)$/, message: "请输入整数", trigger: "blur" },
],
FACILITY_LOCALTION: [
{ required: true, message: "设施位置不能为空", trigger: "blur" },
],
FACILITY_PRINCIPAL: [
{ required: true, message: "设施负责人不能为空", trigger: "blur" },
],
REGISTRATION_TIME: [
{ required: true, message: "登记时间不能为空", trigger: "change" },
],
};
const formRef = ref(null);
const form = ref({
FIREFIGHTINGFACILITY_ID: "",
CORPINFO_ID: "",
FACILITY_NAME: "",
FACILITY_NUMBER: "",
FACILITY_LOCALTION: "",
CONDUCT_ENTERPRISE: "",
FACILITY_UNIT: "",
FACILITY_COUNT: "",
CONDUCT_TYPE: "",
FACILITY_PRINCIPAL: "",
REGISTRATION_TIME: "",
EQUIPMENT_FACILITY: [],
REMARK: "",
});
const fnGetData = async () => {
if (FIREFIGHTINGFACILITY_ID) {
const resData = await getFirefightingEquipmentFacilityView({
FIREFIGHTINGFACILITY_ID,
});
form.value = resData.pd;
form.value.EQUIPMENT_FACILITY = addingPrefixToFile(
resData.firefightingequipmentImg
);
}
};
fnGetData();
const fnSubmit = debounce(
1000,
async () => {
await useFormValidate(formRef);
const resData = !FIREFIGHTINGFACILITY_ID
? await setFirefightingEquipmentFacilityAdd({ ...form.value })
: await getFirefightingEquipmentFacilityEdit({
...form.value,
FIREFIGHTINGFACILITY_ID,
});
const currentEquipmentFacilityId = resData.pd.FIREFIGHTINGFACILITY_ID;
for (let i = 0; i < form.value.EQUIPMENT_FACILITY.length; i++) {
if (form.value.EQUIPMENT_FACILITY[i].raw)
await fnUploadImage(
currentEquipmentFacilityId,
form.value.EQUIPMENT_FACILITY[i].raw,
120
);
}
ElMessage.success("提交成功");
router.back();
},
{ atBegin: true }
);
const fnUploadImage = async (HIDDEN_ID, FFILE, TYPE) => {
const formData = new FormData();
formData.append("FOREIGN_KEY", HIDDEN_ID);
formData.append("TYPE", TYPE);
formData.append("FFILE", FFILE);
await setUploadImg(formData);
};
</script>
<style scoped lang="scss"></style>

View File

@ -0,0 +1,116 @@
<template>
<layout-card>
<el-divider content-position="left">基本信息</el-divider>
<el-descriptions border>
<el-descriptions-item label="设施名称">
{{ data.FACILITY_NAME }}
</el-descriptions-item>
<el-descriptions-item label="设施单位">
{{ data.FACILITY_UNIT }}
</el-descriptions-item>
<el-descriptions-item label="设施数量">
{{ data.FACILITY_COUNT }}
</el-descriptions-item>
<el-descriptions-item label="设施位置">
{{ data.FACILITY_LOCALTION }}
</el-descriptions-item>
<el-descriptions-item label="设施负责人">
{{ data.FACILITY_PRINCIPAL }}
</el-descriptions-item>
<el-descriptions-item label="登记时间">
{{ data.REGISTRATION_TIME }}
</el-descriptions-item>
</el-descriptions>
<el-divider content-position="left">保养记录</el-divider>
<layout-table :data="list" :show-pagination="false">
<el-table-column type="index" label="序号" align="center" />
<el-table-column prop="MAINTAIN_DATE" label="保养时间" />
<el-table-column prop="MAINTAIN_CONDITION" label="保养情况" />
<el-table-column prop="MAINTAIN_PERSON" label="保养人" />
<el-table-column prop="REMARK" label="备注" />
<el-table-column label="操作" width="180">
<template #default="{ row }">
<el-button
type="primary"
text
link
@click="
router.push({
path: '/production_course_regulate/firefighting_equipment_facility/firefightingmaintainedit',
query: { FIREFIGHTINGMAINTAIN_ID: row.FIREFIGHTINGMAINTAIN_ID },
})
"
>
修改
</el-button>
<el-button
v-if="buttonJurisdiction.del"
type="primary"
text
link
@click="fnDelete(row.FIREFIGHTINGMAINTAIN_ID)"
>
删除
</el-button>
</template>
</el-table-column>
<template #button>
<el-button
v-if="buttonJurisdiction.add"
type="primary"
@click="
router.push({
path: '/production_course_regulate/firefighting_equipment_facility/firefightingmaintainadd',
query: { FIREFIGHTINGFACILITY_ID },
})
"
>
新增
</el-button>
</template>
</layout-table>
</layout-card>
</template>
<script setup>
import {
getFirefightingEquipmentFacilityView,
getMaintainFindFirefightingId,
setFirefightingMaintainDelete,
} from "@/request/firefighting_equipment_facility.js";
import { useRoute, useRouter } from "vue-router";
import { ref } from "vue";
import useListData from "@/assets/js/useListData.js";
import useButtonJurisdiction from "@/assets/js/useButtonJurisdiction.js";
import { debounce } from "throttle-debounce";
import { ElMessage, ElMessageBox } from "element-plus";
const route = useRoute();
const router = useRouter();
const { FIREFIGHTINGFACILITY_ID } = route.query;
const data = ref({});
const getData = async () => {
const { pd } = await getFirefightingEquipmentFacilityView({
FIREFIGHTINGFACILITY_ID,
});
data.value = pd;
};
getData();
const { list } = useListData(getMaintainFindFirefightingId, {
otherParams: { FIREFIGHTINGFACILITY_ID },
usePagination: false,
});
const fnDelete = debounce(
1000,
async (FIREFIGHTINGMAINTAIN_ID) => {
await ElMessageBox.confirm("确定要删除吗?", { type: "warning" });
await setFirefightingMaintainDelete({ FIREFIGHTINGMAINTAIN_ID });
ElMessage.success("删除成功");
},
{ atBegin: true }
);
const buttonJurisdiction = await useButtonJurisdiction("firefightingmaintain");
</script>
<style scoped></style>

View File

@ -0,0 +1,146 @@
<template>
<layout-card>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="6">
<el-form-item label="保养时间" prop="MAINTAIN_DATE">
<el-date-picker
v-model="form.MAINTAIN_DATE"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择保养时间"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="保养情况" prop="MAINTAIN_CONDITION">
<el-input
v-model="form.MAINTAIN_CONDITION"
placeholder="请输入保养情况"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="保养人" prop="MAINTAIN_PERSON">
<el-input
v-model="form.MAINTAIN_PERSON"
placeholder="请输入保养人"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="保养照片" prop="MAINTAIN_IMG">
<layout-upload
v-model:file-list="form.MAINTAIN_IMG"
list-type="picture-card"
accept=".jpg,.jpeg,.png"
/>
</el-form-item>
</el-col>
</el-row>
<el-col :span="24">
<el-form-item label="备注" prop="REMARK">
<el-input
v-model="form.REMARK"
placeholder="请填写备注"
type="textarea"
:autosize="{ minRows: 3 }"
/>
</el-form-item>
</el-col>
</el-form>
<div class="tc mt-10">
<el-button type="primary" @click="fnSubmit"></el-button>
</div>
</layout-card>
</template>
<script setup>
import { ref } from "vue";
import {
setMaintainEdit,
setMaintainAdd,
getFirefightingEquipmentFacilityView,
} from "@/request/firefighting_equipment_facility.js";
import { debounce } from "throttle-debounce";
import useFormValidate from "@/assets/js/useFormValidate.js";
import { useRoute, useRouter } from "vue-router";
import { ElMessage } from "element-plus";
import LayoutUpload from "@/components/upload/index.vue";
import { setUploadImg } from "@/request/api.js";
import { addingPrefixToFile } from "@/assets/js/utils.js";
const route = useRoute();
const router = useRouter();
const { FIREFIGHTINGFACILITY_ID } = route.query;
const rules = {
MAINTAIN_DATE: [
{ required: true, message: "保养时间不能为空", trigger: "blur" },
],
MAINTAIN_CONDITION: [
{ required: true, message: "保养情况不能为空", trigger: "blur" },
],
MAINTAIN_PERSON: [
{ required: true, message: "保养人不能为空", trigger: "blur" },
],
};
const formRef = ref(null);
const form = ref({
FIREFIGHTINGMAINTAIN_ID: "",
FIREFIGHTINGFACILITY_ID: "",
MAINTAIN_DATE: "",
MAINTAIN_CONDITION: "",
MAINTAIN_PERSON: "",
REMARK: "",
MAINTAIN_IMG: [],
});
const FIREFIGHTINGMAINTAIN_ID = form.value.FIREFIGHTINGMAINTAIN_ID;
const fnGetData = async () => {
if (!FIREFIGHTINGMAINTAIN_ID) return;
const resData = await getFirefightingEquipmentFacilityView({
FIREFIGHTINGMAINTAIN_ID,
});
form.value = resData.pd;
form.value.MAINTAIN_IMG = addingPrefixToFile(resData.firefightingmaintainImg);
};
fnGetData();
const fnSubmit = debounce(
1000,
async () => {
await useFormValidate(formRef);
form.value.FIREFIGHTINGFACILITY_ID = FIREFIGHTINGFACILITY_ID;
const resData = !FIREFIGHTINGMAINTAIN_ID
? await setMaintainAdd({ ...form.value })
: await setMaintainEdit({
...form.value,
FIREFIGHTINGMAINTAIN_ID,
});
const currentEquipmentFacilityId = resData.pd.FIREFIGHTINGMAINTAIN_ID;
for (let i = 0; i < form.value.MAINTAIN_IMG.length; i++) {
if (form.value.MAINTAIN_IMG[i].raw)
await fnUploadImage(
currentEquipmentFacilityId,
form.value.MAINTAIN_IMG[i].raw,
120
);
}
ElMessage.success("提交成功");
router.back();
},
{ atBegin: true }
);
const fnUploadImage = async (HIDDEN_ID, FFILE, TYPE) => {
const formData = new FormData();
formData.append("FOREIGN_KEY", HIDDEN_ID);
formData.append("TYPE", TYPE);
formData.append("FFILE", FFILE);
await setUploadImg(formData);
};
</script>
<style scoped lang="scss"></style>

View File

@ -0,0 +1,160 @@
<template>
<layout-card>
<el-divider content-position="left">修改</el-divider>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="24">
<el-form-item label="保养时间" prop="MAINTAIN_DATE">
<el-date-picker
v-model="form.MAINTAIN_DATE"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择保养时间"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="保养情况" prop="MAINTAIN_CONDITION">
<el-input
v-model="form.MAINTAIN_CONDITION"
placeholder="请输入保养情况"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="保养人" prop="MAINTAIN_PERSON">
<el-input
v-model="form.MAINTAIN_PERSON"
placeholder="请输入保养人"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="保养照片" prop="MAINTAIN_IMG">
<layout-upload
v-model:file-list="form.MAINTAIN_IMG"
list-type="picture-card"
accept=".jpg,.jpeg,.png"
delete-to-server
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注" prop="REMARK">
<el-input
v-model="form.REMARK"
placeholder="请填写备注"
type="textarea"
:autosize="{ minRows: 3 }"
/>
</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 { ref } from "vue";
import { debounce } from "throttle-debounce";
import useFormValidate from "@/assets/js/useFormValidate.js";
import {
getMaintainView,
getMaintainEdit,
setMaintainAdd,
} from "@/request/firefighting_equipment_facility.js";
import { ElMessage } from "element-plus";
import { useRoute, useRouter } from "vue-router";
import LayoutUpload from "@/components/upload/index.vue";
import { addingPrefixToFile } from "@/assets/js/utils.js";
import { setUploadImg } from "@/request/api.js";
const route = useRoute();
const router = useRouter();
const { FIREFIGHTINGMAINTAIN_ID } = route.query;
const rules = {
FACILITY_NUMBER: [
{ required: true, message: "设施编号不能为空", trigger: "blur" },
],
FACILITY_NAME: [
{ required: true, message: "设施名称不能为空", trigger: "blur" },
],
FACILITY_UNIT: [
{ required: true, message: "设施单位不能为空", trigger: "blur" },
],
FACILITY_COUNT: [
{ required: true, message: "设施数量不能为空", trigger: "blur" },
],
FACILITY_LOCALTION: [
{ required: true, message: "设施位置不能为空", trigger: "blur" },
],
FACILITY_PRINCIPAL: [
{ required: true, message: "设施负责人不能为空", trigger: "blur" },
],
REGISTRATION_TIME: [
{ required: true, message: "登记时间不能为空", trigger: "change" },
],
};
const formRef = ref(null);
const form = ref({
FIREFIGHTINGMAINTAIN_ID: "",
FIREFIGHTINGFACILITY_ID: "",
MAINTAIN_DATE: "",
MAINTAIN_CONDITION: "",
MAINTAIN_PERSON: "",
REMARK: "",
MAINTAIN_IMG: [],
});
const fnGetData = async () => {
if (FIREFIGHTINGMAINTAIN_ID) {
const resData = await getMaintainView({ FIREFIGHTINGMAINTAIN_ID });
form.value = resData.pd;
form.value.MAINTAIN_IMG = addingPrefixToFile(
resData.firefightingmaintainImg
);
}
};
fnGetData();
const fnSubmit = debounce(
1000,
async () => {
await useFormValidate(formRef);
const resData = !FIREFIGHTINGMAINTAIN_ID
? await setMaintainAdd({ ...form.value })
: await getMaintainEdit({
...form.value,
FIREFIGHTINGMAINTAIN_ID,
});
const currentEquipmentFacilityId = resData.pd.FIREFIGHTINGMAINTAIN_ID;
for (let i = 0; i < form.value.MAINTAIN_IMG.length; i++) {
if (form.value.MAINTAIN_IMG[i].raw)
await fnUploadImage(
currentEquipmentFacilityId,
form.value.MAINTAIN_IMG[i].raw,
120
);
}
ElMessage.success("提交成功");
router.back();
},
{ atBegin: true }
);
const fnUploadImage = async (HIDDEN_ID, FFILE, TYPE) => {
const formData = new FormData();
formData.append("FOREIGN_KEY", HIDDEN_ID);
formData.append("TYPE", TYPE);
formData.append("FFILE", FFILE);
await setUploadImg(formData);
};
</script>
<style scoped lang="scss"></style>

View File

@ -0,0 +1,197 @@
<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="FACILITY_NAME">
<el-input
v-model="searchForm.FACILITY_NAME"
placeholder="请填设施名称"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="设施编号" prop="FACILITY_NUMBER">
<el-input
v-model="searchForm.FACILITY_NUMBER"
placeholder="请填写设施编号"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="设施位置" prop="FACILITY_LOCALTION">
<el-input
v-model="searchForm.FACILITY_LOCALTION"
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="FACILITY_NUMBER" label="设施编号" width="160" />
<el-table-column prop="FACILITY_NAME" label="设施名称" width="160" />
<el-table-column prop="FACILITY_UNIT" label="设施单位" width="140" />
<el-table-column prop="FACILITY_COUNT" label="设施数量" width="140" />
<el-table-column
prop="FACILITY_LOCALTION"
label="设施位置"
width="130"
/>
<el-table-column
prop="FACILITY_PRINCIPAL"
label="设施负责人"
width="150"
/>
<el-table-column
prop="REGISTRATION_TIME"
label="登记时间"
width="160"
/>
<el-table-column prop="CREATTIME" label="创建时间" width="160" />
<el-table-column prop="OPERATTIME" label="修改时间" width="160" />
<el-table-column label="操作" width="180">
<template #default="{ row }">
<el-button
type="primary"
text
link
@click="
router.push({
path: '/production_course_regulate/firefighting_equipment_facility/view',
query: {
FIREFIGHTINGFACILITY_ID: row.FIREFIGHTINGFACILITY_ID,
},
})
"
>
查看
</el-button>
<el-button
type="primary"
text
link
@click="
router.push({
path: '/production_course_regulate/firefighting_equipment_facility/edit',
query: {
FIREFIGHTINGFACILITY_ID: row.FIREFIGHTINGFACILITY_ID,
},
})
"
>
修改
</el-button>
<el-button
v-if="buttonJurisdiction.del"
type="primary"
text
link
@click="fnDelete(row.FIREFIGHTINGFACILITY_ID)"
>
删除
</el-button>
<el-button
type="primary"
text
link
@click="
router.push({
path: '/production_course_regulate/firefighting_equipment_facility/firefightingmaintain',
query: {
FIREFIGHTINGFACILITY_ID: row.FIREFIGHTINGFACILITY_ID,
},
})
"
>
保养
</el-button>
</template>
</el-table-column>
<template #button>
<el-button
v-if="buttonJurisdiction.add"
type="primary"
@click="
router.push({
path: '/production_course_regulate/firefighting_equipment_facility/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";
import useButtonJurisdiction from "@/assets/js/useButtonJurisdiction.js";
import useListData from "@/assets/js/useListData.js";
import { useRouter } from "vue-router";
import { reactive } from "vue";
import {
getFirefightingEquipmentFacilityList,
setFirefightingEquipmentFacilityDelete,
} from "@/request/firefighting_equipment_facility.js";
import { debounce } from "throttle-debounce";
import { ElMessage, ElMessageBox } from "element-plus";
const router = useRouter();
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
useListData(getFirefightingEquipmentFacilityList);
const data = reactive({
analysisDialog: {
visible: false,
info: {},
},
});
const fnDelete = debounce(
1000,
async (FIREFIGHTINGFACILITY_ID) => {
await ElMessageBox.confirm("确定要删除吗?", { type: "warning" });
await setFirefightingEquipmentFacilityDelete({ FIREFIGHTINGFACILITY_ID });
ElMessage.success("删除成功");
fnResetPagination();
},
{ atBegin: true }
);
const buttonJurisdiction = await useButtonJurisdiction(
"firethingequipmentfacility"
);
</script>
<style scoped></style>

View File

@ -0,0 +1,66 @@
<template>
<layout-card>
<div id="printContainer">
<el-divider content-position="left">基本信息</el-divider>
<el-descriptions border>
<el-descriptions-item label="设施编号">
{{ data.FACILITY_NUMBER }}
</el-descriptions-item>
<el-descriptions-item label="登记时间">
{{ data.REGISTRATION_TIME }}
</el-descriptions-item>
<el-descriptions-item label="设施单位">
{{ data.FACILITY_UNIT }}
</el-descriptions-item>
<el-descriptions-item label="设施数量">
{{ data.FACILITY_COUNT }}
</el-descriptions-item>
<el-descriptions-item label="设施位置">
{{ data.FACILITY_LOCALTION }}
</el-descriptions-item>
<el-descriptions-item label="设施负责人">
{{ data.FACILITY_PRINCIPAL }}
</el-descriptions-item>
</el-descriptions>
<el-divider content-position="left">保养记录</el-divider>
<layout-table :data="list" :show-pagination="false">
<el-table-column type="index" label="序号" align="center" />
<el-table-column prop="MAINTAIN_DATE" label="保养时间" />
<el-table-column prop="MAINTAIN_CONDITION" label="保养情况" />
<el-table-column prop="MAINTAIN_PERSON" label="保养人" />
<el-table-column prop="REMARK" label="备注" />
</layout-table>
</div>
<div class="mt-10 tc">
<el-button v-print="'#printContainer'" type="primary"></el-button>
</div>
<div v-html="PRINT_STYLE" />
</layout-card>
</template>
<script setup>
import {
getFirefightingEquipmentFacilityView,
getMaintainFindFirefightingId,
} from "@/request/firefighting_equipment_facility.js";
import { useRoute } from "vue-router";
import { ref } from "vue";
import useListData from "@/assets/js/useListData.js";
import { PRINT_STYLE } from "@/assets/js/constant.js";
const route = useRoute();
const { FIREFIGHTINGFACILITY_ID } = route.query;
const data = ref({});
const getData = async () => {
const { pd } = await getFirefightingEquipmentFacilityView({
FIREFIGHTINGFACILITY_ID,
});
data.value = pd;
};
getData();
const { list } = useListData(getMaintainFindFirefightingId, {
otherParams: { FIREFIGHTINGFACILITY_ID },
usePagination: false,
});
</script>
<style scoped></style>

View File

@ -0,0 +1,200 @@
<template>
<layout-card>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="24">
<el-form-item label="设施编号" prop="FACILITY_NUMBER">
<el-input
v-model="form.FACILITY_NUMBER"
placeholder="请输入设施编号"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="设施名称" prop="FACILITY_NAME">
<el-input
v-model="form.FACILITY_NAME"
placeholder="请输入设施名称"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="设施单位" prop="FACILITY_UNIT">
<el-input
v-model="form.FACILITY_UNIT"
placeholder="请输入设施单位"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="设施数量" prop="FACILITY_COUNT">
<el-input
v-model="form.FACILITY_COUNT"
placeholder="请输入设施数量"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="设施位置" prop="FACILITY_LOCALTION">
<el-input
v-model="form.FACILITY_LOCALTION"
placeholder="请输入设施位置"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="设施负责人" prop="FACILITY_PRINCIPAL">
<el-input
v-model="form.FACILITY_PRINCIPAL"
placeholder="请输入设施负责人"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="登记时间" prop="REGISTRATION_TIME">
<el-date-picker
v-model="form.REGISTRATION_TIME"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择登记时间"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="设备设施" prop="EQUIPMENT_FACILITY">
<layout-upload
v-model:file-list="form.EQUIPMENT_FACILITY"
list-type="picture-card"
accept=".jpg,.jpeg,.png"
/>
</el-form-item>
</el-col>
</el-row>
<el-col :span="24">
<el-form-item label="备注" prop="FACILITY_REMARK">
<el-input
v-model="form.FACILITY_REMARK"
placeholder="请填写备注"
type="textarea"
:autosize="{ minRows: 3 }"
/>
</el-form-item>
</el-col>
</el-form>
<div class="tc mt-10">
<el-button type="primary" @click="fnSubmit"></el-button>
</div>
</layout-card>
</template>
<script setup>
import { ref } from "vue";
import {
setProductionEquipmentFacilityEdit,
setProductionEquipmentFacilityAdd,
getProductionEquipmentFacilityView,
} from "@/request/production_equipment_facility.js";
import { debounce } from "throttle-debounce";
import useFormValidate from "@/assets/js/useFormValidate.js";
import { useRoute, useRouter } from "vue-router";
import { ElMessage } from "element-plus";
import LayoutUpload from "@/components/upload/index.vue";
import { setUploadImg } from "@/request/api.js";
import { addingPrefixToFile } from "@/assets/js/utils.js";
const route = useRoute();
const router = useRouter();
const PRODUCTIONFACILITY_ID = route.query.PRODUCTIONFACILITY_ID;
const rules = {
CONDUCT_ENTERPRISE: [
{ required: true, message: "经营企业不能为空", trigger: "blur" },
],
FACILITY_NUMBER: [
{ required: true, message: "设施编号不能为空", trigger: "blur" },
],
FACILITY_NAME: [
{ required: true, message: "设施名称不能为空", trigger: "blur" },
],
FACILITY_UNIT: [
{ required: true, message: "设施单位不能为空", trigger: "blur" },
],
FACILITY_COUNT: [
{ required: true, message: "设施数量不能为空", trigger: "blur" },
{ pattern: /^([1-9][0-9]*)$/, message: "请输入整数", trigger: "blur" },
],
FACILITY_LOCALTION: [
{ required: true, message: "设施位置不能为空", trigger: "blur" },
],
FACILITY_PRINCIPAL: [
{ required: true, message: "设施负责人不能为空", trigger: "blur" },
],
REGISTRATION_TIME: [
{ required: true, message: "登记时间不能为空", trigger: "change" },
],
};
const formRef = ref(null);
const form = ref({
PRODUCTIONFACILITY_ID: "",
CORPINFO_ID: "",
FACILITY_NAME: "",
FACILITY_NUMBER: "",
FACILITY_LOCALTION: "",
CONDUCT_ENTERPRISE: "",
FACILITY_UNIT: "",
FACILITY_COUNT: "",
CONDUCT_TYPE: "",
FACILITY_PRINCIPAL: "",
REGISTRATION_TIME: "",
EQUIPMENT_FACILITY: [],
FACILITY_REMARK: "",
});
const fnGetData = async () => {
if (!PRODUCTIONFACILITY_ID) return;
const resData = await getProductionEquipmentFacilityView({
PRODUCTIONFACILITY_ID,
});
form.value = resData.pd;
form.value.EQUIPMENT_FACILITY = addingPrefixToFile(resData.equipmentFacility);
};
fnGetData();
const fnSubmit = debounce(
1000,
async () => {
await useFormValidate(formRef);
const resData = !PRODUCTIONFACILITY_ID
? await setProductionEquipmentFacilityAdd({ ...form.value })
: await setProductionEquipmentFacilityEdit({
...form.value,
PRODUCTIONFACILITY_ID,
});
const currentEquipmentFacilityId = resData.pd.PRODUCTIONFACILITY_ID;
for (let i = 0; i < form.value.EQUIPMENT_FACILITY.length; i++) {
if (form.value.EQUIPMENT_FACILITY[i].raw)
await fnUploadImage(
currentEquipmentFacilityId,
form.value.EQUIPMENT_FACILITY[i].raw,
150
);
}
ElMessage.success("提交成功");
router.back();
},
{ atBegin: true }
);
const fnUploadImage = async (HIDDEN_ID, FFILE, TYPE) => {
const formData = new FormData();
formData.append("FOREIGN_KEY", HIDDEN_ID);
formData.append("TYPE", TYPE);
formData.append("FFILE", FFILE);
await setUploadImg(formData);
};
</script>
<style scoped lang="scss"></style>

View File

@ -0,0 +1,203 @@
<template>
<layout-card>
<el-divider content-position="left">修改</el-divider>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="6">
<el-form-item label="设施编号" prop="FACILITY_NUMBER">
<el-input
v-model="form.FACILITY_NUMBER"
placeholder="请输入设施编号"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="设施名称" prop="FACILITY_NAME">
<el-input
v-model="form.FACILITY_NAME"
placeholder="请输入设施名称"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="设施单位" prop="FACILITY_UNIT">
<el-input
v-model="form.FACILITY_UNIT"
placeholder="请输入设施单位"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="设施数量" prop="FACILITY_COUNT">
<el-input
v-model="form.FACILITY_COUNT"
placeholder="请输入设施数量"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="设施位置" prop="FACILITY_LOCALTION">
<el-input
v-model="form.FACILITY_LOCALTION"
placeholder="请输入设施位置"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="设施负责人" prop="FACILITY_PRINCIPAL">
<el-input
v-model="form.FACILITY_PRINCIPAL"
placeholder="请输入设施负责人"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="登记时间" prop="REGISTRATION_TIME">
<el-date-picker
v-model="form.REGISTRATION_TIME"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择登记时间"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="设备设施" prop="EQUIPMENT_FACILITY">
<layout-upload
v-model:file-list="form.EQUIPMENT_FACILITY"
list-type="picture-card"
accept=".jpg,.jpeg,.png"
delete-to-server
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注" prop="FACILITY_REMARK">
<el-input
v-model="form.FACILITY_REMARK"
placeholder="请填写备注"
type="textarea"
:autosize="{ minRows: 3 }"
/>
</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 { ref } from "vue";
import { debounce } from "throttle-debounce";
import useFormValidate from "@/assets/js/useFormValidate.js";
import {
getProductionEquipmentFacilityView,
getProductionEquipmentFacilityEdit,
setProductionEquipmentFacilityAdd,
} from "@/request/production_equipment_facility.js";
import { ElMessage } from "element-plus";
import { useRoute, useRouter } from "vue-router";
import LayoutUpload from "@/components/upload/index.vue";
import { addingPrefixToFile } from "@/assets/js/utils.js";
import { setUploadImg } from "@/request/api.js";
const route = useRoute();
const router = useRouter();
const { PRODUCTIONFACILITY_ID } = route.query;
const rules = {
FACILITY_NUMBER: [
{ required: true, message: "设施编号不能为空", trigger: "blur" },
],
FACILITY_NAME: [
{ required: true, message: "设施名称不能为空", trigger: "blur" },
],
FACILITY_UNIT: [
{ required: true, message: "设施单位不能为空", trigger: "blur" },
],
FACILITY_COUNT: [
{ required: true, message: "设施数量不能为空", trigger: "blur" },
{ pattern: /^([1-9][0-9]*)$/, message: "请输入整数", trigger: "blur" },
],
FACILITY_LOCALTION: [
{ required: true, message: "设施位置不能为空", trigger: "blur" },
],
FACILITY_PRINCIPAL: [
{ required: true, message: "设施负责人不能为空", trigger: "blur" },
],
REGISTRATION_TIME: [
{ required: true, message: "登记时间不能为空", trigger: "change" },
],
};
const formRef = ref(null);
const form = ref({
PRODUCTIONFACILITY_ID: "",
CORPINFO_ID: "",
FACILITY_NAME: "",
FACILITY_NUMBER: "",
FACILITY_LOCALTION: "",
CONDUCT_ENTERPRISE: "",
FACILITY_UNIT: "",
FACILITY_COUNT: "",
CONDUCT_TYPE: "",
FACILITY_PRINCIPAL: "",
REGISTRATION_TIME: "",
EQUIPMENT_FACILITY: [],
FACILITY_REMARK: "",
});
const fnGetData = async () => {
if (PRODUCTIONFACILITY_ID) {
const resData = await getProductionEquipmentFacilityView({
PRODUCTIONFACILITY_ID,
});
form.value = resData.pd;
form.value.EQUIPMENT_FACILITY = addingPrefixToFile(
resData.equipmentFacility
);
}
};
fnGetData();
const fnSubmit = debounce(
1000,
async () => {
await useFormValidate(formRef);
const resData = !PRODUCTIONFACILITY_ID
? await setProductionEquipmentFacilityAdd({ ...form.value })
: await getProductionEquipmentFacilityEdit({
...form.value,
PRODUCTIONFACILITY_ID,
});
const currentEquipmentFacilityId = resData.pd.PRODUCTIONFACILITY_ID;
for (let i = 0; i < form.value.EQUIPMENT_FACILITY.length; i++) {
if (form.value.EQUIPMENT_FACILITY[i].raw)
await fnUploadImage(
currentEquipmentFacilityId,
form.value.EQUIPMENT_FACILITY[i].raw,
150
);
}
ElMessage.success("提交成功");
router.back();
},
{ atBegin: true }
);
const fnUploadImage = async (HIDDEN_ID, FFILE, TYPE) => {
const formData = new FormData();
formData.append("FOREIGN_KEY", HIDDEN_ID);
formData.append("TYPE", TYPE);
formData.append("FFILE", FFILE);
await setUploadImg(formData);
};
</script>
<style scoped lang="scss"></style>

View File

@ -0,0 +1,191 @@
<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="FACILITY_NAME">
<el-input
v-model="searchForm.FACILITY_NAME"
placeholder="请填设施名称"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="设施编号" prop="FACILITY_NUMBER">
<el-input
v-model="searchForm.FACILITY_NUMBER"
placeholder="请填写设施编号"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="设施位置" prop="FACILITY_LOCALTION">
<el-input
v-model="searchForm.FACILITY_LOCALTION"
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="FACILITY_LOCALTION"
label="设施位置"
width="160"
/>
<el-table-column prop="FACILITY_NUMBER" label="设施编号" width="160" />
<el-table-column prop="FACILITY_NAME" label="设施名称" width="140" />
<el-table-column prop="FACILITY_UNIT" label="设施单位" width="140" />
<el-table-column prop="FACILITY_COUNT" label="设施数量" width="130" />
<el-table-column
prop="FACILITY_PRINCIPAL"
label="设施负责人"
width="150"
/>
<el-table-column
prop="REGISTRATION_TIME"
label="登记时间"
width="160"
/>
<el-table-column prop="CREATTIME" label="创建时间" width="160" />
<el-table-column prop="OPERATTIME" label="修改时间" width="160" />
<el-table-column label="操作" width="180">
<template #default="{ row }">
<el-button
type="primary"
text
link
@click="
router.push({
path: '/production_course_regulate/production_equipment_facility/view',
query: { PRODUCTIONFACILITY_ID: row.PRODUCTIONFACILITY_ID },
})
"
>
查看
</el-button>
<el-button
type="primary"
text
link
@click="
router.push({
path: '/production_course_regulate/production_equipment_facility/edit',
query: { PRODUCTIONFACILITY_ID: row.PRODUCTIONFACILITY_ID },
})
"
>
修改
</el-button>
<el-button
v-if="buttonJurisdiction.del"
type="primary"
text
link
@click="fnDelete(row.PRODUCTIONFACILITY_ID)"
>
删除
</el-button>
<el-button
type="primary"
text
link
@click="
router.push({
path: '/production_course_regulate/production_equipment_facility/maintain',
query: { PRODUCTIONFACILITY_ID: row.PRODUCTIONFACILITY_ID },
})
"
>
保养
</el-button>
</template>
</el-table-column>
<template #button>
<el-button
v-if="buttonJurisdiction.add"
type="primary"
@click="
router.push({
path: '/production_course_regulate/production_equipment_facility/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";
import useButtonJurisdiction from "@/assets/js/useButtonJurisdiction.js";
import useListData from "@/assets/js/useListData.js";
import { useRouter } from "vue-router";
import { reactive } from "vue";
import {
getProductionEquipmentFacilityList,
setProductionEquipmentFacilityDelete,
} from "@/request/production_equipment_facility.js";
import { debounce } from "throttle-debounce";
import { ElMessage, ElMessageBox } from "element-plus";
const router = useRouter();
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
useListData(getProductionEquipmentFacilityList);
const data = reactive({
analysisDialog: {
visible: false,
info: {},
},
});
const fnDelete = debounce(
1000,
async (PRODUCTIONFACILITY_ID) => {
await ElMessageBox.confirm("确定要删除吗?", { type: "warning" });
await setProductionEquipmentFacilityDelete({ PRODUCTIONFACILITY_ID });
ElMessage.success("删除成功");
fnResetPagination();
},
{ atBegin: true }
);
const buttonJurisdiction = await useButtonJurisdiction(
"prooductionEquipmentFacility"
);
</script>
<style scoped></style>

View File

@ -0,0 +1,119 @@
<template>
<layout-card>
<el-divider content-position="left">基本信息</el-divider>
<el-descriptions border>
<el-descriptions-item label="设施名称">
{{ data.FACILITY_NAME }}
</el-descriptions-item>
<el-descriptions-item label="设施编号">
{{ data.FACILITY_NUMBER }}
</el-descriptions-item>
<el-descriptions-item label="设施单位">
{{ data.FACILITY_UNIT }}
</el-descriptions-item>
<el-descriptions-item label="设施数量">
{{ data.FACILITY_COUNT }}
</el-descriptions-item>
<el-descriptions-item label="设施位置">
{{ data.FACILITY_LOCALTION }}
</el-descriptions-item>
<el-descriptions-item label="设施负责人">
{{ data.FACILITY_PRINCIPAL }}
</el-descriptions-item>
<el-descriptions-item label="登记时间">
{{ data.REGISTRATION_TIME }}
</el-descriptions-item>
</el-descriptions>
<el-divider content-position="left">保养记录</el-divider>
<layout-table :data="list" :show-pagination="false">
<el-table-column type="index" label="序号" align="center" />
<el-table-column prop="MAINTAIN_DATE" label="保养时间" />
<el-table-column prop="MAINTAIN_CONDITION" label="保养情况" />
<el-table-column prop="MAINTAIN_PERSON" label="保养人" />
<el-table-column prop="REMARK" label="备注" />
<el-table-column label="操作" width="180">
<template #default="{ row }">
<el-button
type="primary"
text
link
@click="
router.push({
path: '/production_course_regulate/production_equipment_facility/maintainedit',
query: { MAINTAIN_ID: row.MAINTAIN_ID },
})
"
>
修改
</el-button>
<el-button
v-if="buttonJurisdiction.del"
type="primary"
text
link
@click="fnDelete(row.MAINTAIN_ID)"
>
删除
</el-button>
</template>
</el-table-column>
<template #button>
<el-button
v-if="buttonJurisdiction.add"
type="primary"
@click="
router.push({
path: '/production_course_regulate/production_equipment_facility/maintainadd',
query: { PRODUCTIONFACILITY_ID },
})
"
>
新增
</el-button>
</template>
</layout-table>
</layout-card>
</template>
<script setup>
import {
getProductionEquipmentFacilityView,
getMaintainFindProductionEquipmentFacilityId,
setMaintainDelete,
} from "@/request/production_equipment_facility.js";
import { useRoute, useRouter } from "vue-router";
import { ref } from "vue";
import useListData from "@/assets/js/useListData.js";
import useButtonJurisdiction from "@/assets/js/useButtonJurisdiction.js";
import { debounce } from "throttle-debounce";
import { ElMessage, ElMessageBox } from "element-plus";
const route = useRoute();
const router = useRouter();
const { PRODUCTIONFACILITY_ID } = route.query;
const data = ref({});
const getData = async () => {
const { pd } = await getProductionEquipmentFacilityView({
PRODUCTIONFACILITY_ID,
});
data.value = pd;
};
getData();
const { list } = useListData(getMaintainFindProductionEquipmentFacilityId, {
otherParams: { PRODUCTIONFACILITY_ID },
usePagination: false,
});
const fnDelete = debounce(
1000,
async (MAINTAIN_ID) => {
await ElMessageBox.confirm("确定要删除吗?", { type: "warning" });
await setMaintainDelete({ MAINTAIN_ID });
ElMessage.success("删除成功");
},
{ atBegin: true }
);
const buttonJurisdiction = await useButtonJurisdiction("maintain");
</script>
<style scoped></style>

View File

@ -0,0 +1,141 @@
<template>
<layout-card>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="6">
<el-form-item label="保养时间" prop="MAINTAIN_DATE">
<el-date-picker
v-model="form.MAINTAIN_DATE"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择保养时间"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="保养情况" prop="MAINTAIN_CONDITION">
<el-input
v-model="form.MAINTAIN_CONDITION"
placeholder="请输入保养情况"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="保养人" prop="MAINTAIN_PERSON">
<el-input
v-model="form.MAINTAIN_PERSON"
placeholder="请输入保养人"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="保养照片" prop="MAINTAIN_IMG">
<layout-upload
v-model:file-list="form.MAINTAIN_IMG"
list-type="picture-card"
accept=".jpg,.jpeg,.png"
/>
</el-form-item>
</el-col>
</el-row>
<el-col :span="24">
<el-form-item label="备注" prop="REMARK">
<el-input
v-model="form.REMARK"
placeholder="请填写备注"
type="textarea"
:autosize="{ minRows: 3 }"
/>
</el-form-item>
</el-col>
</el-form>
<div class="tc mt-10">
<el-button type="primary" @click="fnSubmit"></el-button>
</div>
</layout-card>
</template>
<script setup>
import { ref } from "vue";
import {
setMaintainEdit,
setMaintainAdd,
getProductionEquipmentFacilityView,
} from "@/request/production_equipment_facility.js";
import { debounce } from "throttle-debounce";
import useFormValidate from "@/assets/js/useFormValidate.js";
import { useRoute, useRouter } from "vue-router";
import { ElMessage } from "element-plus";
import LayoutUpload from "@/components/upload/index.vue";
import { setUploadImg } from "@/request/api.js";
import { addingPrefixToFile } from "@/assets/js/utils.js";
const route = useRoute();
const router = useRouter();
const { PRODUCTIONFACILITY_ID } = route.query;
const rules = {
MAINTAIN_DATE: [
{ required: true, message: "保养时间不能为空", trigger: "blur" },
],
MAINTAIN_CONDITION: [
{ required: true, message: "保养情况不能为空", trigger: "blur" },
],
MAINTAIN_PERSON: [
{ required: true, message: "保养人不能为空", trigger: "blur" },
],
};
const formRef = ref(null);
const form = ref({
MAINTAIN_ID: "",
PRODUCTIONFACILITY_ID: "",
MAINTAIN_DATE: "",
MAINTAIN_CONDITION: "",
MAINTAIN_PERSON: "",
REMARK: "",
MAINTAIN_IMG: [],
});
const MAINTAIN_ID = form.value.MAINTAIN_ID;
const fnGetData = async () => {
if (!MAINTAIN_ID) return;
const resData = await getProductionEquipmentFacilityView({ MAINTAIN_ID });
form.value = resData.pd;
form.value.EQUIPMENT_FACILITY = addingPrefixToFile(resData.maintainImg);
};
fnGetData();
const fnSubmit = debounce(
1000,
async () => {
await useFormValidate(formRef);
form.value.PRODUCTIONFACILITY_ID = PRODUCTIONFACILITY_ID;
const resData = !MAINTAIN_ID
? await setMaintainAdd({ ...form.value })
: await setMaintainEdit({ ...form.value, MAINTAIN_ID });
const currentEquipmentFacilityId = resData.pd.MAINTAIN_ID;
for (let i = 0; i < form.value.MAINTAIN_IMG.length; i++) {
if (form.value.MAINTAIN_IMG[i].raw)
await fnUploadImage(
currentEquipmentFacilityId,
form.value.MAINTAIN_IMG[i].raw,
120
);
}
ElMessage.success("提交成功");
router.back();
},
{ atBegin: true }
);
const fnUploadImage = async (HIDDEN_ID, FFILE, TYPE) => {
const formData = new FormData();
formData.append("FOREIGN_KEY", HIDDEN_ID);
formData.append("TYPE", TYPE);
formData.append("FFILE", FFILE);
await setUploadImg(formData);
};
</script>
<style scoped lang="scss"></style>

View File

@ -0,0 +1,154 @@
<template>
<layout-card>
<el-divider content-position="left">修改</el-divider>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="24">
<el-form-item label="保养时间" prop="MAINTAIN_DATE">
<el-date-picker
v-model="form.MAINTAIN_DATE"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择保养时间"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="保养情况" prop="MAINTAIN_CONDITION">
<el-input
v-model="form.MAINTAIN_CONDITION"
placeholder="请输入保养情况"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="保养人" prop="MAINTAIN_PERSON">
<el-input
v-model="form.MAINTAIN_PERSON"
placeholder="请输入保养人"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="保养照片" prop="MAINTAIN_IMG">
<layout-upload
v-model:file-list="form.MAINTAIN_IMG"
list-type="picture-card"
accept=".jpg,.jpeg,.png"
delete-to-server
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注" prop="REMARK">
<el-input
v-model="form.REMARK"
placeholder="请填写备注"
type="textarea"
:autosize="{ minRows: 3 }"
/>
</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 { ref } from "vue";
import { debounce } from "throttle-debounce";
import useFormValidate from "@/assets/js/useFormValidate.js";
import {
getMaintainView,
getMaintainEdit,
setMaintainAdd,
} from "@/request/production_equipment_facility.js";
import { ElMessage } from "element-plus";
import { useRoute, useRouter } from "vue-router";
import LayoutUpload from "@/components/upload/index.vue";
import { addingPrefixToFile } from "@/assets/js/utils.js";
import { setUploadImg } from "@/request/api.js";
const route = useRoute();
const router = useRouter();
const { MAINTAIN_ID } = route.query;
const rules = {
FACILITY_NUMBER: [
{ required: true, message: "设施编号不能为空", trigger: "blur" },
],
FACILITY_NAME: [
{ required: true, message: "设施名称不能为空", trigger: "blur" },
],
FACILITY_UNIT: [
{ required: true, message: "设施单位不能为空", trigger: "blur" },
],
FACILITY_COUNT: [
{ required: true, message: "设施数量不能为空", trigger: "blur" },
],
FACILITY_LOCALTION: [
{ required: true, message: "设施位置不能为空", trigger: "blur" },
],
FACILITY_PRINCIPAL: [
{ required: true, message: "设施负责人不能为空", trigger: "blur" },
],
REGISTRATION_TIME: [
{ required: true, message: "登记时间不能为空", trigger: "change" },
],
};
const formRef = ref(null);
const form = ref({
MAINTAIN_ID: "",
PRODUCTIONFACILITY_ID: "",
MAINTAIN_DATE: "",
MAINTAIN_CONDITION: "",
MAINTAIN_PERSON: "",
REMARK: "",
MAINTAIN_IMG: [],
});
const fnGetData = async () => {
if (!MAINTAIN_ID) return;
const resData = await getMaintainView({ MAINTAIN_ID });
form.value = resData.pd;
form.value.MAINTAIN_IMG = addingPrefixToFile(resData.maintainImg);
};
fnGetData();
const fnSubmit = debounce(
1000,
async () => {
await useFormValidate(formRef);
const resData = !MAINTAIN_ID
? await setMaintainAdd({ ...form.value })
: await getMaintainEdit({ ...form.value, MAINTAIN_ID });
const currentEquipmentFacilityId = resData.pd.MAINTAIN_ID;
for (let i = 0; i < form.value.MAINTAIN_IMG.length; i++) {
if (form.value.MAINTAIN_IMG[i].raw)
await fnUploadImage(
currentEquipmentFacilityId,
form.value.MAINTAIN_IMG[i].raw,
120
);
}
ElMessage.success("提交成功");
router.back();
},
{ atBegin: true }
);
const fnUploadImage = async (HIDDEN_ID, FFILE, TYPE) => {
const formData = new FormData();
formData.append("FOREIGN_KEY", HIDDEN_ID);
formData.append("TYPE", TYPE);
formData.append("FFILE", FFILE);
await setUploadImg(formData);
};
</script>
<style scoped lang="scss"></style>

View File

@ -0,0 +1,69 @@
<template>
<layout-card>
<div id="printContainer">
<el-divider content-position="left">基本信息</el-divider>
<el-descriptions border>
<el-descriptions-item label="设施名称">
{{ data.FACILITY_NAME }}
</el-descriptions-item>
<el-descriptions-item label="设施编号">
{{ data.FACILITY_NUMBER }}
</el-descriptions-item>
<el-descriptions-item label="设施单位">
{{ data.FACILITY_UNIT }}
</el-descriptions-item>
<el-descriptions-item label="设施数量">
{{ data.FACILITY_COUNT }}
</el-descriptions-item>
<el-descriptions-item label="设施位置">
{{ data.FACILITY_LOCALTION }}
</el-descriptions-item>
<el-descriptions-item label="设施负责人">
{{ data.FACILITY_PRINCIPAL }}
</el-descriptions-item>
<el-descriptions-item label="登记时间">
{{ data.REGISTRATION_TIME }}
</el-descriptions-item>
</el-descriptions>
<el-divider content-position="left">保养记录</el-divider>
<layout-table :data="list" :show-pagination="false">
<el-table-column type="index" label="序号" align="center" />
<el-table-column prop="MAINTAIN_DATE" label="保养时间" />
<el-table-column prop="MAINTAIN_CONDITION" label="保养情况" />
<el-table-column prop="MAINTAIN_PERSON" label="保养人" />
<el-table-column prop="REMARK" label="备注" />
</layout-table>
</div>
<div class="mt-10 tc">
<el-button v-print="'#printContainer'" type="primary"></el-button>
</div>
<div v-html="PRINT_STYLE" />
</layout-card>
</template>
<script setup>
import {
getProductionEquipmentFacilityView,
getMaintainFindProductionEquipmentFacilityId,
} from "@/request/production_equipment_facility.js";
import { useRoute } from "vue-router";
import { ref } from "vue";
import useListData from "@/assets/js/useListData.js";
import { PRINT_STYLE } from "@/assets/js/constant.js";
const route = useRoute();
const { PRODUCTIONFACILITY_ID } = route.query;
const data = ref({});
const getData = async () => {
const { pd } = await getProductionEquipmentFacilityView({
PRODUCTIONFACILITY_ID,
});
data.value = pd;
};
getData();
const { list } = useListData(getMaintainFindProductionEquipmentFacilityId, {
otherParams: { PRODUCTIONFACILITY_ID },
usePagination: false,
});
</script>
<style scoped></style>

View File

@ -0,0 +1,142 @@
<template>
<layout-card>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="6">
<el-form-item label="上报人" prop="REPORTPERSON">
<el-input v-model="form.REPORTPERSON" placeholder="请输入上报人" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="上报日期" prop="REPORTED_TIME">
<el-date-picker
v-model="form.REPORTED_TIME"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择上报日期"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="处理状态" prop="DISPOSE_STATUS">
<el-select
v-model="form.DISPOSE_STATUS"
placeholder="请选择处理状态"
>
<el-option
v-for="item in DISPOSE_STATUS_LIST"
:key="item.ID"
:label="item.NAME"
:value="item.NAME"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="处理结果" prop="DISPOSE_RESULT">
<el-input
v-model="form.DISPOSE_RESULT"
placeholder="请输入处理结果"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="处理时间" prop="DISPOSE_DATE">
<el-date-picker
v-model="form.DISPOSE_DATE"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择处理时间"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="上报内容" prop="REPORTED_CONTENT">
<el-input
v-model="form.REPORTED_CONTENT"
placeholder="请填写上报内容"
type="textarea"
:autosize="{ minRows: 3 }"
/>
</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 { ref } from "vue";
import {
setReportedIncidentDisposeEdit,
setReportedIncidentDisposeAdd,
} from "@/request/reported_incident_dispose.js";
import { debounce } from "throttle-debounce";
import useFormValidate from "@/assets/js/useFormValidate.js";
import { useRoute, useRouter } from "vue-router";
import { ElMessage } from "element-plus";
import { DISPOSE_STATUS_LIST } from "@/assets/js/constant.js";
const route = useRoute();
const router = useRouter();
const REPORTEDINCIDENT_ID = route.query.REPORTEDINCIDENT_ID;
const rules = {
REPORTPERSON: [
{ required: true, message: "上报人不能为空", trigger: "blur" },
],
REPORTED_TIME: [
{ required: true, message: "上报日期不能为空", trigger: "blur" },
],
DISPOSE_STATUS: [
{ required: true, message: "处理状态不能为空", trigger: "blur" },
],
DISPOSE_RESULT: [
{ required: true, message: "处理结果不能为空", trigger: "blur" },
],
DISPOSE_DATE: [
{ required: true, message: "处理时间不能为空", trigger: "blur" },
],
};
const formRef = ref(null);
const form = ref({
REPORTEDINCIDENT_ID: "",
CORPINFO_ID: "",
REPORTPERSON: "",
DISPOSE_RESULT: "",
DISPOSE_STATUS: "",
REPORTED_DATE: "",
REPORTED_CONTENT: "",
REPORTED_TIME: "",
DISPOSE_DATE: "",
MANAGING_ENTERPRISE: "",
MANAGING_TYPE: "",
});
const fnGetData = async () => {
if (!REPORTEDINCIDENT_ID) return;
const resData = await setReportedIncidentDisposeEdit({ REPORTEDINCIDENT_ID });
form.value = resData.pd;
};
fnGetData();
const fnSubmit = debounce(
1000,
async () => {
await useFormValidate(formRef);
await setReportedIncidentDisposeAdd({ ...form.value });
ElMessage.success("提交成功");
router.back();
},
{ atBegin: true }
);
</script>
<style scoped lang="scss"></style>

View File

@ -0,0 +1,141 @@
<template>
<layout-card>
<el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="6">
<el-form-item label="上报人" prop="REPORTPERSON">
<el-input v-model="form.REPORTPERSON" placeholder="请输入上报人" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="上报日期" prop="REPORTED_TIME">
<el-date-picker
v-model="form.REPORTED_TIME"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择上报日期"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="6">
<el-form-item label="处理状态" prop="DISPOSE_STATUS">
<el-select
v-model="form.DISPOSE_STATUS"
placeholder="请选择处理状态"
>
<el-option
v-for="item in DISPOSE_STATUS_LIST"
:key="item.ID"
:label="item.NAME"
:value="item.NAME"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="处理结果" prop="DISPOSE_RESULT">
<el-input
v-model="form.DISPOSE_RESULT"
placeholder="请输入处理结果"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="处理时间" prop="DISPOSE_DATE">
<el-date-picker
v-model="form.DISPOSE_DATE"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
placeholder="请选择处理时间"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="上报内容" prop="REPORTED_CONTENT">
<el-input
v-model="form.REPORTED_CONTENT"
placeholder="请填写上报内容"
type="textarea"
:autosize="{ minRows: 3 }"
/>
</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 { ref } from "vue";
import {
setReportedIncidentDisposeEdit,
setReportedIncidentDispose,
} from "@/request/reported_incident_dispose.js";
import { debounce } from "throttle-debounce";
import useFormValidate from "@/assets/js/useFormValidate.js";
import { useRoute, useRouter } from "vue-router";
import { ElMessage } from "element-plus";
import { DISPOSE_STATUS_LIST } from "@/assets/js/constant.js";
const route = useRoute();
const router = useRouter();
const REPORTEDINCIDENT_ID = route.query.REPORTEDINCIDENT_ID;
const rules = {
REPORTPERSON: [
{ required: true, message: "上报人不能为空", trigger: "blur" },
],
REPORTED_TIME: [
{ required: true, message: "上报日期不能为空", trigger: "blur" },
],
DISPOSE_STATUS: [
{ required: true, message: "处理状态不能为空", trigger: "blur" },
],
DISPOSE_RESULT: [
{ required: true, message: "处理结果不能为空", trigger: "blur" },
],
DISPOSE_DATE: [
{ required: true, message: "处理时间不能为空", trigger: "blur" },
],
};
const formRef = ref(null);
const form = ref({
REPORTEDINCIDENT_ID: "",
CORPINFO_ID: "",
REPORTPERSON: "",
DISPOSE_RESULT: "",
DISPOSE_STATUS: "",
REPORTED_DATE: "",
REPORTED_CONTENT: "",
REPORTED_TIME: "",
DISPOSE_DATE: "",
MANAGING_ENTERPRISE: "",
MANAGING_TYPE: "",
});
const fnGetData = async () => {
if (!REPORTEDINCIDENT_ID) return;
const resData = await setReportedIncidentDisposeEdit({ REPORTEDINCIDENT_ID });
form.value = resData.pd;
};
fnGetData();
const fnSubmit = debounce(
1000,
async () => {
await useFormValidate(formRef);
await setReportedIncidentDispose({ ...form.value });
ElMessage.success("提交成功");
router.back();
},
{ atBegin: true }
);
</script>
<style scoped lang="scss"></style>

View File

@ -0,0 +1,174 @@
<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="REPORTPERSON">
<el-input
v-model="searchForm.REPORTPERSON"
placeholder="请填写上报人"
/>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="处理状态" prop="DISPOSE_STATUS">
<el-select
v-model="searchForm.DISPOSE_STATUS"
placeholder="请选择处理状态"
>
<el-option
v-for="item in DISPOSE_STATUS_LIST"
:key="item.ID"
:label="item.NAME"
:value="item.NAME"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="上报日期" prop="REPORTED_DATE">
<el-date-picker
v-model="searchForm.REPORTED_DATE"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
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="REPORTPERSON" label="上报人" width="150" />
<el-table-column prop="DISPOSE_STATUS" label="处理状态" width="150" />
<el-table-column prop="REPORTED_CONTENT" label="上报内容" width="300" />
<el-table-column prop="DISPOSE_RESULT" label="处理结果" width="150" />
<el-table-column prop="REPORTED_TIME" label="上报时间" width="180" />
<el-table-column prop="DISPOSE_DATE" label="处理时间" width="180" />
<el-table-column label="操作" width="150">
<template #default="{ row }">
<el-button
type="primary"
text
link
@click="
router.push({
path: '/production_course_regulate/reported_incident_dispose/view',
query: { REPORTEDINCIDENT_ID: row.REPORTEDINCIDENT_ID },
})
"
>
查看
</el-button>
<el-button
type="primary"
text
link
@click="
router.push({
path: '/production_course_regulate/reported_incident_dispose/edit',
query: { REPORTEDINCIDENT_ID: row.REPORTEDINCIDENT_ID },
})
"
>
修改
</el-button>
<el-button
v-if="buttonJurisdiction.del"
type="primary"
text
link
@click="fnDelete(row.REPORTEDINCIDENT_ID)"
>
删除
</el-button>
</template>
</el-table-column>
<template #button>
<el-button
v-if="buttonJurisdiction.add"
type="primary"
@click="
router.push({
path: '/production_course_regulate/reported_incident_dispose/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";
import useButtonJurisdiction from "@/assets/js/useButtonJurisdiction.js";
import useListData from "@/assets/js/useListData.js";
import { useRouter } from "vue-router";
import { reactive } from "vue";
import {
getReportedIncidentDisposeList,
setReportedIncidentDisposeDelete,
} from "@/request/reported_incident_dispose.js";
import { debounce } from "throttle-debounce";
import { ElMessage, ElMessageBox } from "element-plus";
import { DISPOSE_STATUS_LIST } from "@/assets/js/constant.js";
const router = useRouter();
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
useListData(getReportedIncidentDisposeList);
const data = reactive({
analysisDialog: {
visible: false,
info: {},
},
});
const fnDelete = debounce(
1000,
async (REPORTEDINCIDENT_ID) => {
await ElMessageBox.confirm("确定要删除吗?", { type: "warning" });
await setReportedIncidentDisposeDelete({ REPORTEDINCIDENT_ID });
ElMessage.success("删除成功");
fnResetPagination();
},
{ atBegin: true }
);
const buttonJurisdiction = await useButtonJurisdiction(
"reportedincidentdispose"
);
</script>
<style scoped></style>

View File

@ -0,0 +1,51 @@
<template>
<layout-card>
<div id="printContainer">
<el-divider content-position="left">车辆档案</el-divider>
<el-descriptions border>
<el-descriptions-item label="上报人">
{{ data.REPORTPERSON }}
</el-descriptions-item>
<el-descriptions-item label="上报日期">
{{ data.REPORTED_TIME }}
</el-descriptions-item>
<el-descriptions-item label="处理状态">
{{ data.DISPOSE_STATUS }}
</el-descriptions-item>
<el-descriptions-item label="处理结果">
{{ data.DISPOSE_RESULT }}
</el-descriptions-item>
<el-descriptions-item label="处理时间">
{{ data.DISPOSE_DATE }}
</el-descriptions-item>
<el-descriptions-item label="上报内容">
{{ data.REPORTED_CONTENT }}
</el-descriptions-item>
</el-descriptions>
</div>
<div class="mt-10 tc">
<el-button v-print="'#printContainer'" type="primary"></el-button>
</div>
<div v-html="PRINT_STYLE" />
</layout-card>
</template>
<script setup>
import { findByIdReportedIncidentDisposeInfo } from "@/request/reported_incident_dispose.js";
import { useRoute } from "vue-router";
import { ref } from "vue";
import { PRINT_STYLE } from "@/assets/js/constant.js";
const route = useRoute();
const { REPORTEDINCIDENT_ID } = route.query;
const data = ref({});
const getData = async () => {
const { pd } = await findByIdReportedIncidentDisposeInfo({
REPORTEDINCIDENT_ID,
});
data.value = pd;
};
getData();
</script>
<style scoped></style>