From c9e78ad7be4006bfd62e728b249e68a7366d2e38 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 21 一月 2026 17:27:18 +0800
Subject: [PATCH] 湟水峡 1.生产报工单价默认值修改 2.车辆管理页面开发和联调 3.生产管理模块修改 4.发货前端页面开发
---
src/views/collaborativeApproval/vehicleManagement/index.vue | 399 ++++++++++++++++++++++++++++++++------------------------
1 files changed, 226 insertions(+), 173 deletions(-)
diff --git a/src/views/collaborativeApproval/vehicleManagement/index.vue b/src/views/collaborativeApproval/vehicleManagement/index.vue
index 6725a39..acbf408 100644
--- a/src/views/collaborativeApproval/vehicleManagement/index.vue
+++ b/src/views/collaborativeApproval/vehicleManagement/index.vue
@@ -3,7 +3,7 @@
<div class="search_form">
<el-form :model="searchForm" :inline="true">
<el-form-item label="杞︾墝鍙凤細">
- <el-input v-model="searchForm.plateNumber" placeholder="璇疯緭鍏ヨ溅鐗屽彿" clearable prefix-icon="Search"
+ <el-input v-model="searchForm.carNo" placeholder="璇疯緭鍏ヨ溅鐗屽彿" clearable prefix-icon="Search"
@change="handleQuery" />
</el-form-item>
<el-form-item label="棰滆壊锛�">
@@ -15,10 +15,10 @@
@change="handleQuery" />
</el-form-item>
<el-form-item label="浣跨敤鐘舵�侊細">
- <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨" clearable @change="handleQuery" style="width: 200px">
- <el-option label="绌洪棽" value="idle" />
- <el-option label="浣跨敤涓�" value="in_use" />
- <el-option label="缁翠慨涓�" value="maintenance" />
+ <el-select v-model="searchForm.usageStatus" placeholder="璇烽�夋嫨" clearable @change="handleQuery" style="width: 200px">
+ <el-option label="绌洪棽" value="绌洪棽" />
+ <el-option label="浣跨敤涓�" value="浣跨敤涓�" />
+ <el-option label="缁翠慨涓�" value="缁翠慨涓�" />
</el-select>
</el-form-item>
<el-form-item>
@@ -33,7 +33,7 @@
<el-button type="primary" @click="openForm('add')">
鏂板杞﹁締
</el-button>
- <el-button @click="handleOut">瀵煎嚭</el-button>
+<!-- <el-button @click="handleOut">瀵煎嚭</el-button>-->
<el-button type="danger" plain @click="handleDelete">鍒犻櫎</el-button>
</div>
</div>
@@ -42,6 +42,8 @@
:column="tableColumns"
:is-selection="true"
:border="true"
+ :row-key="'id'"
+ :expand-row-keys="expandRowKeys"
:table-loading="tableLoading"
:table-style="{ width: '100%', height: 'calc(100vh - 21.5em)' }"
:page="{
@@ -52,14 +54,39 @@
}"
@selection-change="handleSelectionChange"
@pagination="paginationChange"
+ @expand-change="handleExpandChange"
>
+ <template #expand="{ row }">
+ <div class="expand-wrapper">
+ <el-skeleton v-if="expandChildLoading[row.id]" animated :rows="3" />
+ <template v-else>
+ <el-empty v-if="!(expandChildData[row.id] && expandChildData[row.id].length)" description="鏆傛棤浣跨敤璁板綍" />
+ <el-table
+ v-else
+ :data="expandChildData[row.id]"
+ size="small"
+ border
+ style="width: 100%"
+ :header-cell-style="{ background: '#F7F8FA' }"
+ >
+ <el-table-column prop="userName" label="浣跨敤浜�" width="140" />
+ <el-table-column prop="desc" label="鐩殑鍦�" width="180" />
+ <el-table-column prop="useTime" label="浣跨敤鏃堕棿" width="180" />
+ <el-table-column prop="carReturnDate" label="杩樿溅鏃堕棿" width="180" />
+ <el-table-column prop="odometerBefore" label="浣跨敤鍓嶉噷绋�(km)" width="140" />
+ <el-table-column prop="odometerAfter" label="杩樿溅鏃堕噷绋�(km)" width="140" />
+ <el-table-column prop="thisTripMileage" label="鏈琛岄┒閲岀▼(km)" width="160" />
+ </el-table>
+ </template>
+ </div>
+ </template>
<template #operation="{ row }">
<el-button link type="primary" size="small" @click="openForm('edit', row)">缂栬緫</el-button>
- <el-button link type="primary" size="small" v-if="row.status === 'idle'"
- @click="openUseForm(row)">浣跨敤杞﹁締</el-button>
- <el-button link type="primary" size="small" v-if="row.status === 'in_use'"
+ <el-button link type="primary" size="small" v-if="row.usageStatus === '绌洪棽'"
+ @click="openUseForm(row)">鐢ㄨ溅</el-button>
+ <el-button link type="primary" size="small" v-if="row.usageStatus === '浣跨敤涓�'"
@click="openReturnForm(row)">杩樿溅</el-button>
- <el-button link type="primary" size="small" @click="viewUsageRecords(row)">浣跨敤璁板綍</el-button>
+ <el-button link type="primary" size="small" @click="openUsageRecordsDialog(row)">浣跨敤璁板綍</el-button>
</template>
</PIMTable>
</div>
@@ -70,8 +97,8 @@
<el-form :model="form" label-width="120px" label-position="top" :rules="rules" ref="formRef">
<el-row :gutter="30">
<el-col :span="12">
- <el-form-item label="杞︾墝鍙凤細" prop="plateNumber">
- <el-input v-model="form.plateNumber" placeholder="璇疯緭鍏ヨ溅鐗屽彿" clearable />
+ <el-form-item label="杞︾墝鍙凤細" prop="carNo">
+ <el-input v-model="form.carNo" placeholder="璇疯緭鍏ヨ溅鐗屽彿" clearable />
</el-form-item>
</el-col>
<el-col :span="12">
@@ -87,11 +114,11 @@
</el-form-item>
</el-col>
<el-col :span="12">
- <el-form-item label="浣跨敤鐘舵�侊細" prop="status">
- <el-select v-model="form.status" placeholder="璇烽�夋嫨" clearable style="width: 100%">
- <el-option label="绌洪棽" value="idle" />
- <el-option label="浣跨敤涓�" value="in_use" />
- <el-option label="缁翠慨涓�" value="maintenance" />
+ <el-form-item label="浣跨敤鐘舵�侊細" prop="usageStatus">
+ <el-select v-model="form.usageStatus" placeholder="璇烽�夋嫨" clearable style="width: 100%">
+ <el-option label="绌洪棽" value="绌洪棽" />
+ <el-option label="浣跨敤涓�" value="浣跨敤涓�" />
+ <el-option label="缁翠慨涓�" value="缁翠慨涓�" />
</el-select>
</el-form-item>
</el-col>
@@ -99,7 +126,7 @@
<el-row :gutter="30">
<el-col :span="12">
<el-form-item label="琛ㄦ樉閲岀▼(km)锛�">
- <el-input-number v-model="form.odometer" :min="0" :precision="2" style="width: 100%"
+ <el-input-number v-model="form.odometerMileage" :min="0" :precision="2" style="width: 100%"
placeholder="璇疯緭鍏ヨ〃鏄鹃噷绋�" clearable />
</el-form-item>
</el-col>
@@ -126,7 +153,7 @@
<el-row :gutter="30">
<el-col :span="24">
<el-form-item label="杞︾墝鍙凤細">
- <el-input :value="currentUseRow ? currentUseRow.plateNumber : ''" disabled />
+ <el-input :value="currentUseRow ? currentUseRow.carNo : ''" disabled />
</el-form-item>
</el-col>
</el-row>
@@ -138,25 +165,40 @@
</el-col>
</el-row>
<el-row :gutter="30">
- <el-col :span="12">
- <el-form-item label="琛ㄦ樉閲岀▼(km)锛�" prop="odometer">
- <el-input-number v-model="useForm.odometer" :min="0" :precision="2" style="width: 100%"
- placeholder="璇疯緭鍏ヨ〃鏄鹃噷绋�" clearable />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="鏈琛岄┒閲岀▼(km)锛�" prop="travelDistance">
- <el-input-number v-model="useForm.travelDistance" :min="0" :precision="2" style="width: 100%"
- placeholder="璇疯緭鍏ユ湰娆¤椹堕噷绋�" clearable />
+ <el-col :span="24">
+ <el-form-item label="鍊熺敤鏃堕棿锛�" prop="carRentalDate">
+ <el-date-picker
+ style="width: 100%"
+ v-model="useForm.carRentalDate"
+ type="date"
+ value-format="YYYY-MM-DD"
+ format="YYYY-MM-DD"
+ placeholder="璇烽�夋嫨鍊熺敤鏃堕棿"
+ clearable
+ />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="24">
- <el-form-item label="浣跨敤浜猴細" prop="userId">
- <el-select v-model="useForm.userId" placeholder="璇烽�夋嫨浣跨敤浜�" clearable filterable>
- <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId" />
+ <el-form-item label="浣跨敤浜猴細" prop="userName">
+ <el-select v-model="useForm.userName" placeholder="璇烽�夋嫨浣跨敤浜�" clearable filterable>
+ <el-option v-for="item in userList" :key="item.nickName" :label="item.nickName" :value="item.nickName" />
</el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ <el-row :gutter="30">
+ <el-col :span="12">
+ <el-form-item label="琛ㄦ樉閲岀▼(km)锛�" prop="odometerMileage">
+ <el-input-number v-model="useForm.odometerMileage" :min="0" :precision="2" style="width: 100%"
+ placeholder="璇疯緭鍏ヨ〃鏄鹃噷绋�" clearable />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鏈棰勮琛岄┒閲岀▼(km)锛�" prop="thisTripMileage">
+ <el-input-number v-model="useForm.thisTripMileage" :min="0" :precision="2" style="width: 100%"
+ placeholder="璇疯緭鍏ユ湰娆¢璁¤椹堕噷绋�" clearable />
</el-form-item>
</el-col>
</el-row>
@@ -182,30 +224,23 @@
<el-row :gutter="30">
<el-col :span="24">
<el-form-item label="杞︾墝鍙凤細">
- <el-input :value="currentReturnRow ? currentReturnRow.plateNumber : ''" disabled />
+ <el-input :value="currentReturnRow ? currentReturnRow.carNo : ''" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
<el-col :span="24">
- <el-form-item label="杩樿溅鏃堕棿锛�" prop="returnTime">
- <el-date-picker style="width: 100%" v-model="returnForm.returnTime" value-format="YYYY-MM-DD HH:mm:ss"
- format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="璇烽�夋嫨杩樿溅鏃堕棿" clearable />
+ <el-form-item label="杩樿溅鏃堕棿锛�" prop="carReturnDate">
+ <el-date-picker style="width: 100%" v-model="returnForm.carReturnDate" value-format="YYYY-MM-DD"
+ format="YYYY-MM-DD" type="date" placeholder="璇烽�夋嫨杩樿溅鏃堕棿" clearable />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="30">
- <el-col :span="12">
- <el-form-item label="琛ㄦ樉閲岀▼(km)锛�" prop="odometer">
- <el-input-number v-model="returnForm.odometer" :min="0" :precision="2" style="width: 100%"
+ <el-col :span="24">
+ <el-form-item label="琛ㄦ樉閲岀▼(km)锛�" prop="odometerMileage">
+ <el-input-number v-model="returnForm.odometerMileage" :min="0" :precision="2" style="width: 100%"
placeholder="璇疯緭鍏ヨ〃鏄鹃噷绋�" clearable />
- </el-form-item>
- </el-col>
- <el-col :span="12">
- <el-form-item label="浣跨敤浜猴細" prop="userId">
- <el-select v-model="returnForm.userId" placeholder="璇烽�夋嫨浣跨敤浜�" clearable filterable>
- <el-option v-for="item in userList" :key="item.userId" :label="item.nickName" :value="item.userId" />
- </el-select>
</el-form-item>
</el-col>
</el-row>
@@ -232,7 +267,7 @@
:column="usageRecordsColumns"
:border="true"
:table-loading="usageRecordsLoading"
- :table-style="{ width: '100%' }"
+ :table-style="{ height: 'calc(100vh - 24em)', width: '100%' }"
:page="{
current: usageRecordsPage.current,
size: usageRecordsPage.size,
@@ -248,7 +283,6 @@
<script setup>
import { onMounted, ref, reactive, toRefs, getCurrentInstance } from "vue";
import PIMTable from "@/components/PIMTable/PIMTable.vue";
-import pagination from "@/components/PIMTable/Pagination.vue";
import { ElMessageBox } from "element-plus";
import useUserStore from "@/store/modules/user";
import { userListNoPage } from "@/api/system/user.js";
@@ -271,33 +305,52 @@
const selectedRows = ref([]);
const userList = ref([]);
const tableLoading = ref(false);
+const expandRowKeys = ref([]);
const page = reactive({
current: 1,
size: 100,
});
const total = ref(0);
+// 浣跨敤璁板綍寮圭獥
+const usageRecordsVisible = ref(false);
+const usageRecordsData = ref([]);
+const usageRecordsLoading = ref(false);
+const usageRecordsPage = reactive({
+ current: 1,
+ size: 10,
+});
+const usageRecordsTotal = ref(0);
+const usageRecordsColumns = ref([
+ { label: "浣跨敤浜�", prop: "userName", width: "120" },
+ { label: "鐩殑鍦�", prop: "destination", width: "150" },
+ { label: "鍊熺敤鏃堕棿", prop: "carRentalDate", },
+ { label: "杩樿溅鏃堕棿", prop: "carReturnDate",},
+ { label: "浣跨敤鍓嶉噷绋�(km)", prop: "odometerMileage", },
+ { label: "鏈琛岄┒閲岀▼(km)", prop: "thisTripMileage",},
+]);
+
// 鎼滅储琛ㄥ崟
const data = reactive({
searchForm: {
- plateNumber: "",
+ carNo: "",
color: "",
brand: "",
- status: "",
+ usageStatus: "",
},
form: {
- plateNumber: "",
+ carNo: "",
color: "",
brand: "",
- status: "idle",
- odometer: 0,
+ usageStatus: "绌洪棽",
+ odometerMileage: 0,
remark: "",
},
rules: {
- plateNumber: [{ required: true, message: "璇疯緭鍏ヨ溅鐗屽彿", trigger: "blur" }],
+ carNo: [{ required: true, message: "璇疯緭鍏ヨ溅鐗屽彿", trigger: "blur" }],
color: [{ required: true, message: "璇疯緭鍏ラ鑹�", trigger: "blur" }],
brand: [{ required: true, message: "璇疯緭鍏ュ搧鐗�", trigger: "blur" }],
- status: [{ required: true, message: "璇烽�夋嫨浣跨敤鐘舵��", trigger: "change" }],
+ usageStatus: [{ required: true, message: "璇烽�夋嫨浣跨敤鐘舵��", trigger: "change" }],
},
});
const { form, rules } = toRefs(data);
@@ -308,18 +361,20 @@
const currentUseRow = ref(null);
const useVehicleFormData = reactive({
useForm: {
- vehicleId: "",
+ carInfoId: "",
destination: "",
- odometer: 0,
- travelDistance: 0,
- userId: "",
+ carRentalDate: dayjs().format("YYYY-MM-DD"),
+ odometerMileage: 0,
+ thisTripMileage: 0,
+ userName: "",
remark: "",
},
useRules: {
destination: [{ required: true, message: "璇疯緭鍏ョ洰鐨勫湴", trigger: "blur" }],
- odometer: [{ required: true, message: "璇疯緭鍏ヨ〃鏄鹃噷绋�", trigger: "blur" }],
- travelDistance: [{ required: true, message: "璇疯緭鍏ユ湰娆¤椹堕噷绋�", trigger: "blur" }],
- userId: [{ required: true, message: "璇烽�夋嫨浣跨敤浜�", trigger: "change" }],
+ carRentalDate: [{ required: true, message: "璇烽�夋嫨鍊熺敤鏃堕棿", trigger: "change" }],
+ odometerMileage: [{ required: true, message: "璇疯緭鍏ヨ〃鏄鹃噷绋�", trigger: "blur" }],
+ thisTripMileage: [{ required: true, message: "璇疯緭鍏ユ湰娆¤椹堕噷绋�", trigger: "blur" }],
+ userName: [{ required: true, message: "璇烽�夋嫨浣跨敤浜�", trigger: "change" }],
},
});
const { useForm, useRules } = toRefs(useVehicleFormData);
@@ -329,30 +384,20 @@
const currentReturnRow = ref(null);
const returnFormData = reactive({
returnForm: {
- vehicleId: "",
- returnTime: "",
- odometer: 0,
- userId: "",
+ carInfoId: "",
+ carReturnDate: "",
+ odometerMileage: 0,
remark: "",
},
returnRules: {
- returnTime: [{ required: true, message: "璇烽�夋嫨杩樿溅鏃堕棿", trigger: "change" }],
- odometer: [{ required: true, message: "璇疯緭鍏ヨ〃鏄鹃噷绋�", trigger: "blur" }],
- userId: [{ required: true, message: "璇烽�夋嫨浣跨敤浜�", trigger: "change" }],
+ carReturnDate: [{ required: true, message: "璇烽�夋嫨杩樿溅鏃堕棿", trigger: "change" }],
+ odometerMileage: [{ required: true, message: "璇疯緭鍏ヨ〃鏄鹃噷绋�", trigger: "blur" }],
},
});
const { returnForm, returnRules } = toRefs(returnFormData);
-// 浣跨敤璁板綍
-const usageRecordsVisible = ref(false);
-const usageRecordsData = ref([]);
-const usageRecordsLoading = ref(false);
-const usageRecordsPage = reactive({
- current: 1,
- size: 100,
-});
-const usageRecordsTotal = ref(0);
-const currentVehicleId = ref(null);
+const expandChildData = reactive({});
+const expandChildLoading = reactive({});
// 鐢ㄦ埛淇℃伅琛ㄥ崟寮规鏁版嵁
const operationType = ref("");
@@ -361,29 +406,22 @@
// 琛ㄦ牸鍒楅厤缃�
const tableColumns = ref([
- { label: "杞︾墝鍙�", prop: "plateNumber", width: "120" },
+ { label: "杞︾墝鍙�", prop: "carNo", width: "120" },
{ label: "棰滆壊", prop: "color", width: "100" },
{ label: "鍝佺墝", prop: "brand", width: "120" },
{
label: "浣跨敤鐘舵��",
- prop: "status",
- width: "100",
+ prop: "usageStatus",
dataType: "tag",
- formatData: (val) => {
- if (val === "idle") return "绌洪棽";
- if (val === "in_use") return "浣跨敤涓�";
- if (val === "maintenance") return "缁翠慨涓�";
- return val || "-";
- },
formatType: (val) => {
- if (val === "idle") return "success";
- if (val === "in_use") return "warning";
- if (val === "maintenance") return "danger";
+ if (val === "绌洪棽") return "success";
+ if (val === "浣跨敤涓�") return "warning";
+ if (val === "缁翠慨涓�") return "danger";
return "info";
},
},
- { label: "褰撳墠浣跨敤浜�", prop: "currentUser", width: "120" },
- { label: "琛ㄦ樉閲岀▼(km)", prop: "odometer", width: "120" },
+ { label: "褰撳墠浣跨敤浜�", prop: "currentUserName", },
+ { label: "琛ㄦ樉閲岀▼(km)", prop: "odometerMileage",},
{ label: "鍒涘缓鏃堕棿", prop: "createTime", width: "180" },
{
label: "鎿嶄綔",
@@ -391,25 +429,14 @@
slot: "operation",
align: "center",
fixed: "right",
- width: "250",
+ width: "180",
},
-]);
-
-// 浣跨敤璁板綍琛ㄦ牸鍒楅厤缃�
-const usageRecordsColumns = ref([
- { label: "杞︾墝鍙�", prop: "plateNumber", width: "120" },
- { label: "浣跨敤浜�", prop: "userName", width: "120" },
- { label: "鐩殑鍦�", prop: "destination", width: "150" },
- { label: "浣跨敤鏃堕棿", prop: "useTime", width: "180" },
- { label: "杩樿溅鏃堕棿", prop: "returnTime", width: "180" },
- { label: "浣跨敤鍓嶉噷绋�(km)", prop: "odometerBefore", width: "130" },
- { label: "杩樿溅鏃堕噷绋�(km)", prop: "odometerAfter", width: "130" },
- { label: "鏈琛岄┒閲岀▼(km)", prop: "travelDistance", width: "140" },
]);
// 鏌ヨ鍒楄〃
const handleQuery = () => {
page.current = 1;
+ expandRowKeys.value = [];
getList();
};
@@ -424,8 +451,8 @@
listVehicle(page, searchForm)
.then((res) => {
tableLoading.value = false;
- tableData.value = res.records || res.data || [];
- total.value = res.total || 0;
+ tableData.value = res.data.records;
+ total.value = res.data.total || 0;
})
.catch(() => {
tableLoading.value = false;
@@ -437,26 +464,45 @@
selectedRows.value = selection;
};
+// 灞曞紑瀛愯〃鏁版嵁
+const handleExpandChange = (row, expandedRows) => {
+ expandRowKeys.value = expandedRows.map((item) => item.id);
+ if (expandRowKeys.value.includes(row.id)) {
+ loadChildRecords(row.id);
+ }
+};
+
+const loadChildRecords = (carInfoId) => {
+ if (expandChildLoading[carInfoId]) return;
+ expandChildLoading[carInfoId] = true;
+ getVehicleUsageRecords({ current: 1, size: 20 }, { carInfoId })
+ .then((res) => {
+ expandChildData[carInfoId] = res.records || res.data || [];
+ })
+ .finally(() => {
+ expandChildLoading[carInfoId] = false;
+ });
+};
+
// 鎵撳紑寮规
const openForm = async (type, row) => {
operationType.value = type;
form.value = {
- plateNumber: "",
+ carNo: "",
color: "",
brand: "",
- status: "idle",
- odometer: 0,
+ usageStatus: "绌洪棽",
+ odometerMileage: 0,
remark: "",
};
-
- let userLists = await userListNoPage();
+
+ const userLists = await userListNoPage();
userList.value = userLists.data || [];
if (type !== "add") {
currentId.value = row.id;
- getVehicleById(row.id).then((res) => {
- form.value = { ...res.data || res };
- });
+ // 鐩存帴浣跨敤琛ㄦ牸琛屾暟鎹紝涓嶅啀璋冪敤API
+ form.value = { ...row };
}
dialogFormVisible.value = true;
};
@@ -466,14 +512,14 @@
proxy.$refs["formRef"].validate((valid) => {
if (valid) {
if (operationType.value === "add") {
- addVehicle(form.value).then((res) => {
+ addVehicle(form.value).then(() => {
proxy.$modal.msgSuccess("鏂板鎴愬姛");
closeDia();
getList();
});
} else {
form.value.id = currentId.value;
- updateVehicle(form.value).then((res) => {
+ updateVehicle(form.value).then(() => {
proxy.$modal.msgSuccess("淇敼鎴愬姛");
closeDia();
getList();
@@ -487,23 +533,25 @@
const closeDia = () => {
proxy.resetForm("formRef");
dialogFormVisible.value = false;
+ currentId.value = "";
};
-// 鎵撳紑鍙戣揣寮规
+// 鎵撳紑浣跨敤杞﹁締寮规
const openUseForm = async (row) => {
currentUseRow.value = row;
useForm.value = {
- vehicleId: row.id,
+ carInfoId: row.id,
destination: "",
- odometer: row.odometer || 0,
- travelDistance: 0,
- userId: "",
+ carRentalDate: dayjs().format("YYYY-MM-DD"),
+ odometerMileage: row.odometerMileage || 0,
+ thisTripMileage: 0,
+ userName: "",
remark: "",
};
-
- let userLists = await userListNoPage();
+
+ const userLists = await userListNoPage();
userList.value = userLists.data || [];
-
+
useFormVisible.value = true;
};
@@ -511,7 +559,7 @@
const submitUseForm = () => {
proxy.$refs["useFormRef"].validate((valid) => {
if (valid) {
- useVehicle(useForm.value).then((res) => {
+ useVehicle(useForm.value).then(() => {
proxy.$modal.msgSuccess("浣跨敤杞﹁締鎴愬姛");
closeUseDia();
getList();
@@ -522,25 +570,60 @@
// 鍏抽棴浣跨敤杞﹁締寮规
const closeUseDia = () => {
- proxy.resetForm("useFormRef");
+ try {
+ proxy.resetForm("useFormRef");
+ } catch (error) {
+ console.error("Error resetting form:", error);
+ }
useFormVisible.value = false;
currentUseRow.value = null;
+};
+
+// 鎵撳紑浣跨敤璁板綍寮圭獥
+const openUsageRecordsDialog = async (row) => {
+ usageRecordsVisible.value = true;
+ usageRecordsPage.current = 1;
+ loadUsageRecords(row.id);
+};
+
+// 鍔犺浇浣跨敤璁板綍
+const loadUsageRecords = (carInfoId) => {
+ usageRecordsLoading.value = true;
+ getVehicleUsageRecords(usageRecordsPage, { carInfoId: carInfoId })
+ .then((res) => {
+ usageRecordsData.value = res.data.records;
+ usageRecordsTotal.value = res.data.total || 0;
+ })
+ .finally(() => {
+ usageRecordsLoading.value = false;
+ });
+};
+
+// 浣跨敤璁板綍鍒嗛〉
+const usageRecordsPaginationChange = (obj) => {
+ usageRecordsPage.current = obj.page;
+ usageRecordsPage.size = obj.limit;
+ loadUsageRecords(currentUseRow.value.id);
+};
+
+// 鍏抽棴浣跨敤璁板綍寮圭獥
+const closeUsageRecords = () => {
+ usageRecordsVisible.value = false;
};
// 鎵撳紑杩樿溅寮规
const openReturnForm = async (row) => {
currentReturnRow.value = row;
returnForm.value = {
- vehicleId: row.id,
- returnTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
- odometer: row.odometer || 0,
- userId: "",
+ carInfoId: row.id,
+ carReturnDate: dayjs().format("YYYY-MM-DD"),
+ odometerMileage: row.odometerMileage || 0,
remark: "",
};
-
- let userLists = await userListNoPage();
+
+ const userLists = await userListNoPage();
userList.value = userLists.data || [];
-
+
returnFormVisible.value = true;
};
@@ -548,7 +631,13 @@
const submitReturnForm = () => {
proxy.$refs["returnFormRef"].validate((valid) => {
if (valid) {
- returnVehicle(returnForm.value).then((res) => {
+ // 鑷姩璁剧疆浣跨敤鐘舵�佷负绌洪棽骞舵坊鍔犺溅杈嗚褰旾D
+ const formData = {
+ ...returnForm.value,
+ usageStatus: "绌洪棽",
+ id: currentReturnRow.value.carInfoRecordId
+ };
+ returnVehicle(formData).then(() => {
proxy.$modal.msgSuccess("杩樿溅鎴愬姛");
closeReturnDia();
getList();
@@ -562,42 +651,6 @@
proxy.resetForm("returnFormRef");
returnFormVisible.value = false;
currentReturnRow.value = null;
-};
-
-// 鏌ョ湅浣跨敤璁板綍
-const viewUsageRecords = (row) => {
- currentVehicleId.value = row.id;
- usageRecordsPage.current = 1;
- getUsageRecords();
- usageRecordsVisible.value = true;
-};
-
-// 鑾峰彇浣跨敤璁板綍
-const getUsageRecords = () => {
- usageRecordsLoading.value = true;
- getVehicleUsageRecords(usageRecordsPage, { vehicleId: currentVehicleId.value })
- .then((res) => {
- usageRecordsLoading.value = false;
- usageRecordsData.value = res.records || res.data || [];
- usageRecordsTotal.value = res.total || 0;
- })
- .catch(() => {
- usageRecordsLoading.value = false;
- });
-};
-
-// 浣跨敤璁板綍鍒嗛〉
-const usageRecordsPaginationChange = (obj) => {
- usageRecordsPage.current = obj.page;
- usageRecordsPage.size = obj.limit;
- getUsageRecords();
-};
-
-// 鍏抽棴浣跨敤璁板綍寮规
-const closeUsageRecords = () => {
- usageRecordsVisible.value = false;
- usageRecordsData.value = [];
- currentVehicleId.value = null;
};
// 瀵煎嚭
@@ -630,7 +683,7 @@
type: "warning",
})
.then(() => {
- delVehicle(ids).then((res) => {
+ delVehicle(ids).then(() => {
proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
getList();
});
--
Gitblit v1.9.3