运营车辆

dev
xiepeng 2024-03-06 09:26:27 +08:00
parent 0bd143e47d
commit 4b724f5560
8 changed files with 150 additions and 124 deletions

2
.env
View File

@ -1,4 +1,4 @@
VITE_BASE_URL=http://192.168.0.49:8093/
VITE_BASE_URL=http://192.168.0.62:8093/
VITE_PROXY=/api/
VITE_FILE_URL=https://file.zcloudchina.com/YTHFile
VITE_TEMPLATE_URL=https://qaaq.qhdsafety.com/file/

View File

@ -1,6 +1,6 @@
import {
getActiveSafety, getBelongingDepartment,
getDynamicSupervision, getEmissionStandard, getFnGetFuelType, getLicenseStatus,
getDynamicSupervision, getEmissionStandard, getFnGetFuelType, getLicenseStatus, getMobileUnit,
getNetworkStatus,
getTransportationEnterprise, getTransportCategory,
getVehicleColor, getVehicleType
@ -20,6 +20,12 @@ export const layoutFnGetTransportationEnterprise = async () => {
});
return ref(resData.list);
};
export const layoutFnGetMobileUnit = async () => {
const resData = await getMobileUnit({
DICTIONARIES_ID: "1e5d02ab69604aeeabfe91458245f7e1",
});
return ref(resData.list);
};
export const layoutFnGetNetworkStatus = async () => {
const resData = await getNetworkStatus({

View File

@ -1,7 +1,9 @@
import { post } from "@/request/axios.js";
import { useUserStore } from "@/pinia/user.js";
import pinia from "@/pinia/index.js";
import { layoutFnGetEveryProvinceHiddenDangerType } from "@/assets/js/data_dictionary.js";
import {
layoutFnGetEveryProvinceHiddenDangerType
} from "@/assets/js/data_dictionary.js";
// 获取数据字典
export const getLevels = (params) =>
@ -90,6 +92,41 @@ export const getHiddenDangerType = async () => {
}
}
};
export const getVehicleColor = (params) =>
post("/dictionaries/getVehicleColor", {
loading: false,
...params,
});
export const getTransportationEnterprise = (params) =>
post("/dictionaries/getTransportationEnterprise", {
loading: false,
...params,
});
export const getNetworkStatus = (params) =>
post("/dictionaries/getNetworkStatus", {
loading: false,
...params,
});
export const getDynamicSupervision = (params) =>
post("/dictionaries/getDynamicSupervision", {
loading: false,
...params,
});
export const getActiveSafety = (params) =>
post("/dictionaries/getActiveSafety", {
loading: false,
...params,
});
export const getLicenseStatus = (params) =>
post("/dictionaries/getLicenseStatus", {
loading: false,
...params,
});
// 获取数据字典-检查类别
export const getStandardLevels = () =>

View File

@ -11,6 +11,11 @@ export const getTransportationEnterprise = (params) =>
loading: false,
...params,
});
export const getMobileUnit = (params) =>
post("/dictionaries/getLevels", {
loading: false,
...params,
});
export const getNetworkStatus = (params) =>
post("/dictionaries/getNetworkStatus", {
@ -69,6 +74,9 @@ export const getEmissionStandard = (params) =>
export const getOperationVehicleList = (params) =>
post("/operatingvehicles/list", params); // 运营车辆列表export const getOperationVehicleList = (params) =>
export const setOperationVehicleDelete = (params) =>
post("/operatingvehicles/delete", params); // 运营车辆列表export const getOperationVehicleList = (params) =>
export const addOperatingVehicleInfo = (params) =>
upload("/operatingvehicles/add", params); // 资料课件维护添加

View File

@ -150,15 +150,18 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="政府监管">
<el-switch
v-model="data.form.GOVERNMENT_OVERSIGHT"
active-value="0"
inactive-value="1"
/>
<el-form-item label="车载设备" prop="VEHICLE_EQUIPMENT">
<el-select v-model="data.form.VEHICLE_EQUIPMENT">
<el-option
v-for="item in getMobileUnitList"
:key="item.BIANMA"
:label="item.NAME"
:value="item.NAME"
/>
</el-select>
</el-form-item>
</el-col>
<el-divider content-position="left">检查内容</el-divider>
<el-divider content-position="left">详细信息</el-divider>
<el-col :span="6">
<el-form-item label="车辆品牌" prop="VEHICLE_BRAND">
<el-input v-model="data.form.VEHICLE_BRAND" placeholder="请填写车辆品牌"></el-input>
@ -225,7 +228,7 @@
</el-col>
<el-divider content-position="left">相关照片</el-divider>
<el-col :span="7">
<el-form-item label="上传车头图片" prop="HEADSTOCK_PHOTO">
<el-form-item label="车头图片" prop="HEADSTOCK_PHOTO">
<layout-upload
v-model:file-list="data.form.HEADSTOCK_PHOTO"
list-type="picture-card"
@ -234,7 +237,7 @@
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="上传行驶证照片" prop="DRIVINGLICENSE_PHOTO">
<el-form-item label="行驶证照片" prop="DRIVINGLICENSE_PHOTO">
<layout-upload
v-model:file-list="data.form.DRIVINGLICENSE_PHOTO"
list-type="picture-card"
@ -243,7 +246,7 @@
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="上传营运证照片" prop="OPERATING_CERTIFICATE_PHOTO">
<el-form-item label="营运证照片" prop="OPERATING_CERTIFICATE_PHOTO">
<layout-upload
v-model:file-list="data.form.OPERATING_CERTIFICATE_PHOTO"
list-type="picture-card"
@ -277,7 +280,8 @@ import {
layoutFnGetBelongingDepartment,
layoutFnGetFuelType,
layoutFnGetEmissionStandard,
layoutFnGetVehicleType
layoutFnGetVehicleType,
layoutFnGetMobileUnit,
} from "@/assets/js/operation_vehicle.js";
import {
addOperatingVehicleInfo,
@ -287,12 +291,15 @@ import useFormValidate from "@/assets/js/useFormValidate.js";
import LayoutUpload from "@/components/upload/index.vue";
import { ElMessage } from "element-plus";
import { debounce } from "throttle-debounce";
import { useRouter } from "vue-router";
const router = useRouter();
const rules = {
PLATE_NUMBER: [{ required: true, message: "车牌号不能为空", trigger: "blur" }],
VEHICLE_COLOR: [{required: true, message: "车辆颜色不能为空", trigger: "change"}],
FRAMES_NUMBER: [{required: true, message: "车架号不能为空", trigger: "change"}],
TRANSPORT_ENTERPRISES: [{required: true, message: "运输企业不能为空", trigger: "change"}],
OPERATING_CERTIFICATE: [{required: true, message: "营运证号不能为空", trigger: "blur"}],
TRANSPORT_TYPE: [{ required: true, message: "运输类别不能为空", trigger: "change" }],
VEHICLE_TYPE: [{ required: true, message: "车辆类型不能为空", trigger: "blur" }],
VEHICLEOWNER: [{ required: true, message: "车主/业主不能为空", trigger: "blur" }],
@ -300,6 +307,7 @@ const rules = {
CONTACT: [{required: true, message: "联系人不能为空", trigger: "blur"}],
CONTACT_NUMBER: [{required: true, message: "联系电话不能为空", trigger: "blur"}],
FIRSTSHOW_DATE: [{required: true, message: "初登日期不能为空", trigger: "blur"}],
VEHICLE_EQUIPMENT: [{required: true, message: "车载设备不能为空", trigger: "change"}],
};
const formRef = ref(null);
const data = reactive({
@ -309,6 +317,7 @@ const data = reactive({
VEHICLE_COLOR: "",
FRAMES_NUMBER: "",
ENGINE_NUMBER: "",
MANAGING_ENTERPRISE: "",
OPERATING_CERTIFICATE: [],
TRANSPORT_ENTERPRISES: "",
TRANSPORT_TYPE: "",
@ -324,6 +333,7 @@ const data = reactive({
FIRSTSHOW_DATE: "",
CERTIFICATE_DATE: "",
EXPIRE_DATE: "",
VEHICLE_EQUIPMENT: "",
GOVERNMENT_OVERSIGHT: "",
VEHICLE_BRAND: "",
VEHICLE_MODEL: "",
@ -344,6 +354,8 @@ const data = reactive({
TRANSPORT_CATEGORY: "",
VEHICLE_MATERIAL: "",
FREIGHT_TYPE: "",
HOME_TERRITORY: "",
MANAGEMENT_TYPE: ""
},
});
const getVehicleColorList = await layoutFnGetVehicleColor();
@ -352,6 +364,7 @@ const getBelongingDepartment = await layoutFnGetBelongingDepartment();
const getFuelTypeList = await layoutFnGetFuelType();
const getEmissionStandardList = await layoutFnGetEmissionStandard();
const getVehicleTypeList = await layoutFnGetVehicleType();
const getMobileUnitList = await layoutFnGetMobileUnit();
const fnSubmit = debounce(
1000,
@ -372,6 +385,7 @@ const fnSubmit = debounce(
formData.append("operatingCertificateFileType", !!data.form.OPERATING_CERTIFICATE_PHOTO[0].raw);
await addOperatingVehicleInfo(formData);
ElMessage.success("提交成功");
router.back();
},
{ atBegin: true }
);

View File

@ -9,7 +9,7 @@
>
<el-row>
<el-col :span="6">
<el-form-item label="编号" prop="GOODSSELFNUMBER">
<el-form-item label="编号" prop="GOODSSELFNUMBER">
<el-input v-model="data.form.GOODSSELFNUMBER" placeholder="请填写自编号" />
</el-form-item>
</el-col>
@ -45,18 +45,6 @@
<el-input v-model="data.form.OPERATING_CERTIFICATE" placeholder="请填写营运证号"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="运输企业" prop="TRANSPORT_ENTERPRISES">
<el-select v-model="data.form.TRANSPORT_ENTERPRISES">
<el-option
v-for="item in getTransportationEnterpriseList"
:key="item.BIANMA"
:label="item.NAME"
:value="item.NAME"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="运输类别" prop="TRANSPORT_TYPE">
<el-select v-model="data.form.TRANSPORT_TYPE">
@ -71,7 +59,7 @@
</el-col>
<el-col :span="6">
<el-form-item label="归属部门" prop="BELONGING_DEPARTMENT">
<el-select v-model="data.form.BELONGING_DEPARTMENT">
<el-select v-model="data.form.BELONGING_DEPARTMENT" placeholder="请选择归属部门">
<el-option
v-for="item in getBelongingDepartment"
:key="item.BIANMA"
@ -162,12 +150,15 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="政府监管">
<el-switch
v-model="data.form.GOVERNMENT_OVERSIGHT"
active-value="0"
inactive-value="1"
/>
<el-form-item label="车载设备" prop="VEHICLE_EQUIPMENT">
<el-select v-model="data.form.VEHICLE_EQUIPMENT">
<el-option
v-for="item in getMobileUnitList"
:key="item.BIANMA"
:label="item.NAME"
:value="item.NAME"
/>
</el-select>
</el-form-item>
</el-col>
<el-divider content-position="left">检查内容</el-divider>
@ -282,12 +273,12 @@
import { reactive, ref } from "vue";
import {
layoutFnGetVehicleColor,
layoutFnGetTransportationEnterprise,
layoutFnGetTransportCategory,
layoutFnGetBelongingDepartment,
layoutFnGetFuelType,
layoutFnGetEmissionStandard,
layoutFnGetVehicleType
layoutFnGetVehicleType,
layoutFnGetMobileUnit,
} from "@/assets/js/operation_vehicle.js";
import {
findByIdOperatingVehicleInfo,
@ -310,7 +301,7 @@ const rules = {
PLATE_NUMBER: [{ required: true, message: "车牌号不能为空", trigger: "blur" }],
VEHICLE_COLOR: [{required: true, message: "车辆颜色不能为空", trigger: "change"}],
FRAMES_NUMBER: [{required: true, message: "车架号不能为空", trigger: "change"}],
TRANSPORT_ENTERPRISES: [{required: true, message: "运输企业不能为空", trigger: "change"}],
OPERATING_CERTIFICATE: [{required: true, message: "营运证号不能为空", trigger: "blur"}],
TRANSPORT_TYPE: [{ required: true, message: "运输类别不能为空", trigger: "change" }],
VEHICLE_TYPE: [{ required: true, message: "车辆类型不能为空", trigger: "blur" }],
VEHICLEOWNER: [{ required: true, message: "车主/业主不能为空", trigger: "blur" }],
@ -318,6 +309,7 @@ const rules = {
CONTACT: [{required: true, message: "联系人不能为空", trigger: "blur"}],
CONTACT_NUMBER: [{required: true, message: "联系电话不能为空", trigger: "blur"}],
FIRSTSHOW_DATE: [{required: true, message: "初登日期不能为空", trigger: "blur"}],
VEHICLE_EQUIPMENT: [{required: true, message: "车载设备不能为空", trigger: "change"}],
};
const formRef = ref(null);
const data = reactive({
@ -365,12 +357,12 @@ const data = reactive({
},
});
const getVehicleColorList = await layoutFnGetVehicleColor();
const getTransportationEnterpriseList = await layoutFnGetTransportationEnterprise();
const getTransportCategoryList = await layoutFnGetTransportCategory();
const getBelongingDepartment = await layoutFnGetBelongingDepartment();
const getFuelTypeList = await layoutFnGetFuelType();
const getEmissionStandardList = await layoutFnGetEmissionStandard();
const getVehicleTypeList = await layoutFnGetVehicleType();
const getMobileUnitList = await layoutFnGetMobileUnit();
const fnGetData = async () => {
if(OPERATING_ID) {

View File

@ -37,10 +37,10 @@
</el-col>
<el-col :span="6">
<el-form-item label="编号" prop="GOODSSELFNUMBER">
<el-form-item label="编号" prop="GOODSSELFNUMBER">
<el-input
v-model="searchForm.GOODSSELFNUMBER"
placeholder="请填写编号"
placeholder="请填写编号"
/>
</el-form-item>
</el-col>
@ -54,19 +54,6 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="运输企业" prop="TRANSPORT_ENTERPRISES">
<el-select v-model="searchForm.TRANSPORT_ENTERPRISES">
<el-option
v-for="item in enterpriseLevelList"
:key="item.BIANMA"
:label="item.NAME"
:value="item.NAME"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="入网状态" prop="NETWORK_STATUS">
<el-select v-model="searchForm.NETWORK_STATUS">
@ -80,18 +67,6 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="动态监管" prop="DYNAMIC_SUPERVISION">
<el-select v-model="searchForm.DYNAMIC_SUPERVISION">
<el-option
v-for="item in dynamicSupervision"
:key="item.BIANMA"
:label="item.NAME"
:value="item.NAME"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="主动安全" prop="ACTIVE_SAFETY">
@ -105,20 +80,7 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="行驶证状态" prop="DRIVINGPREMIT_STATUS">
<el-select v-model="searchForm.DRIVINGPREMIT_STATUS">
<el-option
v-for="item in licenseStatus"
:key="item.BIANMA"
:label="item.NAME"
:value="item.NAME"
/>
</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">
@ -145,20 +107,17 @@
{{ serialNumber(pagination, $index) }}
</template>
</el-table-column>
<el-table-column prop="GOODSSELFNUMBER" label="编号" />
<el-table-column prop="GOODSSELFNUMBER" label="编号"/>
<el-table-column prop="PLATE_NUMBER" label="车牌号"/>
<el-table-column prop="VEHICLE_COLOR" label="车辆颜色" />
<el-table-column prop="FRAMES_NUMBER" label="车架号" />
<el-table-column prop="CONTACT" label="联系人" width="140" show-overflow-tooltip />
<el-table-column prop="FRAMES_NUMBER" label="车架号" width="140"/>
<el-table-column prop="CONTACT" label="联系人"/>
<el-table-column prop="CONTACT_NUMBER" label="联系电话" width="140" show-overflow-tooltip />
<el-table-column prop="VEHICLE_TYPE" label="车辆类型" width="140"/>
<el-table-column prop="FIRSTSHOW_DATE" label="初登日期" width="140" show-overflow-tooltip />
<el-table-column prop="EXPIRE_DATE" label="到期日期" width="140" show-overflow-tooltip />
<el-table-column prop="BELONGING_DEPARTMENT" label="归属部门" width="140" show-overflow-tooltip>
<template v-slot="{ row }">
{{ translationStatus(row.NAME, belongingDepartmentList)}}
</template>
</el-table-column>
<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 v-slot="{ row }">
<el-button
@ -200,6 +159,15 @@
>
修改
</el-button>
<el-button
v-if="buttonJurisdiction.del"
type="primary"
text
link
@click="fnDelete(row.OPERATING_ID)"
>
删除
</el-button>
</template>
</el-table-column>
<template #button>
@ -219,20 +187,18 @@
</template>
<script setup>
import { serialNumber, translationStatus } from "@/assets/js/utils.js";
import { serialNumber } from "@/assets/js/utils.js";
import useListData from "@/assets/js/useListData.js";
import {
layoutFnGetVehicleColor,
layoutFnGetTransportationEnterprise,
layoutFnGetNetworkStatus,
layoutFnGetDynamicSupervision,
layoutFnGetActiveSafety,
layoutFnGetLicenseStatus,
layoutFnGetBelongingDepartment,
} from "@/assets/js/operation_vehicle.js";
import { getOperationVehicleList } from "@/request/operation_vehicle.js";
import { getOperationVehicleList, setOperationVehicleDelete } from "@/request/operation_vehicle.js";
import { useRouter } from "vue-router";
import useButtonJurisdiction from "@/assets/js/useButtonJurisdiction.js";
import { debounce } from "throttle-debounce";
import { ElMessage, ElMessageBox } from "element-plus";
const router = useRouter();
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
@ -240,12 +206,8 @@ const { list, pagination, searchForm, fnGetData, fnResetPagination } =
});
const troubleshootingCycleList = await layoutFnGetVehicleColor();
const enterpriseLevelList = await layoutFnGetTransportationEnterprise();
const networkStatusLevelList = await layoutFnGetNetworkStatus();
const dynamicSupervision = await layoutFnGetDynamicSupervision();
const activeSafety = await layoutFnGetActiveSafety();
const licenseStatus = await layoutFnGetLicenseStatus();
const belongingDepartmentList = await layoutFnGetBelongingDepartment();
console.log(list,"userListData");
const fnGetDataTransfer = () => {
fnGetData({
@ -258,6 +220,15 @@ const fnResetPaginationTransfer = () => {
DEPTIDS: searchForm.value.DEPTIDS?.join(","),
});
};
const fnDelete = debounce(
1000,
async (OPERATING_ID) => {
await ElMessageBox.confirm("确定要删除吗?", { type: "warning" });
await setOperationVehicleDelete({ OPERATING_ID })
ElMessage.success("删除成功");
},
{ atBegin: true }
);
const buttonJurisdiction = await useButtonJurisdiction("operation");
</script>

View File

@ -1,24 +1,33 @@
<template>
<layout-card>
<el-divider content-position="left">基本信息</el-divider>
<el-divider content-position="left">车辆档案</el-divider>
<el-descriptions border>
<el-descriptions-item label="自编号">
{{ data.GOODSSELFNUMBER }}
</el-descriptions-item>
<el-descriptions-item label="车牌号">
{{ data.PLATE_NUMBER }}
</el-descriptions-item>
<el-descriptions-item label="车架号">
{{ data.FRAMES_NUMBER }}
</el-descriptions-item>
<el-descriptions-item label="车辆颜色">
{{ data.VEHICLE_COLOR }}
</el-descriptions-item>
<el-descriptions-item label="车架号">
{{ data.FRAMES_NUMBER }}
</el-descriptions-item>
<el-descriptions-item label="发动机号">
{{ data.ENGINE_NUMBER }}
</el-descriptions-item>
<el-descriptions-item label="车辆类型">
{{ data.VEHICLE_TYPE }}
<el-descriptions-item label="营运证号">
{{ data.OPERATING_CERTIFICATE }}
</el-descriptions-item>
<el-descriptions-item label="运输类别">
{{ data.TRANSPORT_TYPE }}
</el-descriptions-item>
<el-descriptions-item label="初登日期">
{{ data.FIRSTSHOW_DATE }}
</el-descriptions-item>
<el-descriptions-item label="发证日期">
{{ data.CERTIFICATE_DATE }}
</el-descriptions-item>
<el-descriptions-item label="到期日期">
{{ data.EXPIRE_DATE }}
</el-descriptions-item>
<el-descriptions-item label="车主/业主">
{{ data.VEHICLEOWNER }}
@ -26,13 +35,10 @@
<el-descriptions-item label="车主电话">
{{ data.VEHICLEOWNER_NUMBER }}
</el-descriptions-item>
<el-descriptions-item label="货运类型">
{{ data.FREIGHT_TYPE }}
<el-descriptions-item label="归属地区">
{{ data.HOME_TERRITORY }}
</el-descriptions-item>
<el-descriptions-item label="营运证号">
{{ data.OPERATING_CERTIFICATE }}
</el-descriptions-item>
<el-descriptions-item label="车主地址">
<el-descriptions-item label="车主住址">
{{ data.VEHICLEOWNER_ADDRESS }}
</el-descriptions-item>
<el-descriptions-item label="联系人">
@ -47,15 +53,6 @@
<el-descriptions-item label="实际住址">
{{ data.PHYSICAL_ADDRESS }}
</el-descriptions-item>
<el-descriptions-item label="初登日期">
{{ data.FIRSTSHOW_DATE }}
</el-descriptions-item>
<el-descriptions-item label="发证日期">
{{ data.CERTIFICATE_DATE }}
</el-descriptions-item>
<el-descriptions-item label="到期日期">
{{ data.EXPIRE_DATE }}
</el-descriptions-item>
</el-descriptions>
<el-divider content-position="left">详细信息</el-divider>
<el-descriptions border>
@ -130,6 +127,7 @@ 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;
const route = useRoute();
const { OPERATING_ID } = route.query;
const data = ref({});