carInfo.vue 11.4 KB
<template>
    <div class="app-container">
        <div class="query-from">
            <el-form :inline="true" :queryOfCarInfo="queryOfCarInfo" :model="queryParamsOfCarInfo" class="demo-form-inline">
                <el-form-item label="车牌号" props="plateNum">
                    <el-input style="width: 120px;" v-model="queryParamsOfCarInfo.plateNum" placeholder="请输入车牌号" clearable  @keyup.enter="handleQueryOfCarInfo" />
                </el-form-item>
                <el-form-item label="车位号" props="parkingNo">
                    <el-input style="width: 120px;" v-model="queryParamsOfCarInfo.parkingNo" placeholder="请输入车位号" clearable  @keyup.enter="handleQueryOfCarInfo" />
                </el-form-item>
                <el-form-item label="车辆状态" props="status">
                    <el-select v-model="queryParamsOfCarInfo.status" clearable  @keyup.enter="handleQueryOfCarInfo">
                        <el-option v-for="item in statusList"  :key="item.value"  :label="item.label"  :value="item.value"  />
                    </el-select>
                </el-form-item>

                <el-form-item>
                    <el-button type="primary" icon="Search" @click="handleQueryOfCarInfo">搜索</el-button>
                    <el-button icon="Refresh" @click="resetQueryOfCarInfo">重置</el-button>
                </el-form-item>
            </el-form>

            <el-row :gutter="10" class="mb8">
                <el-col :span="1.5">
                    <el-button type="primary" plain icon="Plus" @click="handleAddOfCarInfo"  v-hasPermi="['car:info:add']">新增</el-button>

                </el-col>
                <el-col :span="1.5">
                    <el-button type="success" plain icon="Edit" :disabled="singleCarInfo" @click="handleUpdateOfCarInfo"  v-hasPermi="['car:info:update']">修改</el-button>

                </el-col>
                <el-col :span="1.5">
                    <el-button type="danger" plain icon="Delete" :disabled=multipleCarInfo @click="handleDeleteOfCarInfo"  v-hasPermi="['car:info:del']">删除</el-button>

                </el-col>
                <el-col :span="1.5">
                    <el-button type="warning" plain icon="Download" @click="handleExportOfCarInfo"  v-hasPermi="['car:info:export']">导出</el-button>

                </el-col>
                <right-toolbar v-model:showSearch="showSearchOfCarInfo" @queryTable="getListOfCarInfo"></right-toolbar>
            </el-row>
        </div>

        <el-table v-loading="loadingOfCarInfo" :data="listOfCarInfo" @selection-change="handleSelectionChangeOfCarInfo" border max-height="600"
                  :default-expand-all="false" :row-class-name="tableRowClassName" @sort-change="sortChangeOfCarInfo">
            <el-table-column type="selection" width="50" align="center" />
            <el-table-column label="序号" type="index" width="60" align="center">
                <template #default="scope">
                    {{ (queryParamsOfCarInfo.pageNum - 1) * queryParamsOfCarInfo.pageSize + scope.$index + 1 }}
                </template>
            </el-table-column>
            <el-table-column label="车牌号" align="center" prop="plateNum" sortable />
            <el-table-column label="车位号" align="center" prop="parkingNo" sortable />
            <el-table-column label="车辆状态" align="center" prop="statusLabel" sortable />
            <el-table-column label="创建时间" align="center" prop="createTimeStr" sortable />
            <el-table-column label="修改时间" align="center" prop="updateTiimeStr" sortable />

            <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="160">
                <template #default="scope">
                    <el-button type="success" plain icon="Edit" :disabled="singleCarInfo" @click="handleUpdateOfCarInfo(scope.row)"  v-hasPermi="['car:info:update']">修改</el-button>

                </template>
            </el-table-column>
        </el-table>

        <pagination v-show="totalOfCarInfo > 0" :total="totalOfCarInfo" v-model:pageOfCarInfo="queryParamsOfCarInfo.pageNum" v-model:limit="queryParamsOfCarInfo.pageSize"
                    @pagination="getListOfCarInfo" />

        <el-dialog :title="titleOfCarInfo" v-model="openOfCarInfo" width="500px" append-to-body>
            <el-form  :model="formOfCarInfo" ref="rulesOfCarInfo" label-width="80px"   :rules="checkRulesOfCarInfo">
                <el-form-item label="车牌号" prop="plateNum">
                    <el-input el-input="input" v-model="formOfCarInfo.plateNum" placeholder="请输入车牌号" />
                </el-form-item>
                <el-form-item label="车位号" prop="parkingNo">
                    <el-input el-input="input" v-model="formOfCarInfo.parkingNo" placeholder="请输入车位号" />
                </el-form-item>
                <el-form-item label="车辆状态" prop="status">
                    <el-select v-model="formOfCarInfo.status" style="width: 380px;">
                        <el-option v-for="item in statusList"  :key="item.value"  :label="item.label"  :value="item.value"  />
                    </el-select>
                </el-form-item>
            </el-form>

            <template #footer>
                <div class="dialog-footer">
                    <el-button type="primary" @click="submitFormOfCarInfo">确 定</el-button>
                    <el-button @click="cancelOfCarInfo">取 消</el-button>
                </div>
            </template>
        </el-dialog>
    </div>
</template>


<script setup name="CarInfo">
    import { listLimitOfCarInfo, viewOfCarInfo, addOfCarInfo, updateOfCarInfo,updateStatusOfCarInfo,deleteOfCarInfo,selectListOfStatus } from "@/api/carInfo/carInfo";
    const { proxy } = getCurrentInstance();

    const listOfCarInfo = ref([]);
    const openOfCarInfo = ref(false);
    const titleOfCarInfo = ref("");
    const loadingOfCarInfo = ref(true);
    const showSearchOfCarInfo = ref(true);
    const idsOfCarInfo = ref([]);
    const singleCarInfo = ref(true);
    const multipleCarInfo = ref(true);
    const statusList = ref([]);


    const pageOfCarInfo = ref(1) //第几页
    const sizeOfCarInfo = ref(10) //一页多少条
    const totalOfCarInfo = ref(0);
    const pageSizesOfCarInfo = [5, 10, 20, 50]; //每页显示多少条
    const currentPageOfCarInfo = ref(1) // 当前页
    const globalRowOfCarInfo = ref(null) // 当前行数据

    const changeFlagOfCarInfo = ref(true)


    const dataOfCarInfo = reactive({
        formOfCarInfo: {},
        queryParamsOfCarInfo: {
            pageNum: 1,
            pageSize: 10,
            id : null,
            plateNum : null,
            parkingNo : null,
            status : null,
            createBy : null,
            createTime : null,
            updateBy : null,
            updateTime : null,

        },
        checkRulesOfCarInfo: {
            id : [
                { required: true, message: "ID", trigger: "blur" }
            ],
            plateNum : [
                { required: true, message: "车牌号", trigger: "blur" }
            ],
            parkingNo : [
                { required: true, message: "车位号", trigger: "blur" }
            ],
            status : [
                { required: true, message: "车辆状态", trigger: "blur" }
            ],
        }
    });

    const { queryParamsOfCarInfo, formOfCarInfo, checkRulesOfCarInfo } = toRefs(dataOfCarInfo );

    /** 查询设备信息列表 */
    function getListOfCarInfo() {
        loadingOfCarInfo.value = true;
        listLimitOfCarInfo(queryParamsOfCarInfo.value,queryParamsOfCarInfo.value.pageNum,queryParamsOfCarInfo.value.pageSize).then(response => {
            listOfCarInfo.value = response.records;
            totalOfCarInfo.value = response.total;
            loadingOfCarInfo.value = false;
        });
    }

    /**排序*/
    function sortChangeOfCarInfo(data){
        queryParamsOfCarInfo.value.order=data.order;
        queryParamsOfCarInfo.value.prop=data.prop;
        getListOfCarInfo();
    }


    function getStatusList(){
        selectListOfStatus().then(response => {
            statusList.value = response.data;
        });
    }

    // 取消按钮
    function cancelOfCarInfo() {
        openOfCarInfo.value = false;
        globalRowOfCarInfo.value = null
        resetOfCarInfo();
    }

    const handleSizeChange = (val) => {
        sizeOfCarInfo.value = val;
    }
    const handleCurrentChange = (val) => {
        pageOfCarInfo.value = val;
    }


    // 表单重置
    function resetOfCarInfo() {
        formOfCarInfo.value = {
            id  : null,
            plateNum  : null,
            parkingNo  : null,
            status  : null,
            createBy  : null,
            createTime  : null,
            updateBy  : null,
            updateTime  : null,
        };
        proxy.resetForm("rulesOfCarInfo");
    }

    /** 搜索按钮操作 */
    function handleQueryOfCarInfo() {
        queryParamsOfCarInfo.value.pageNum = 1;
        getListOfCarInfo();
    }

    /** 重置按钮操作 */
    function resetQueryOfCarInfo() {
        proxy.resetForm("queryOfCarInfo");
        handleQueryOfCarInfo();
    }

    // 多选框选中数据
    function handleSelectionChangeOfCarInfo(selection) {
        idsOfCarInfo.value = selection.map(item => item.id);
        singleCarInfo.value = selection.length != 1;
        multipleCarInfo.value = !selection.length;
    }

    /** 新增按钮操作 */
    function handleAddOfCarInfo() {
        resetOfCarInfo();
        changeFlagOfCarInfo.value = true;
        openOfCarInfo.value = true;
        titleOfCarInfo.value = "添加";
    }

    /** 修改按钮操作 */
    function handleUpdateOfCarInfo(row) {
        resetOfCarInfo();
        const _id = row.id || idsOfCarInfo.value
        viewOfCarInfo(_id).then(response => {
            formOfCarInfo.value = response.data;
            openOfCarInfo.value = true;
            titleOfCarInfo.value = "修改";
        });
    }

    /** 提交按钮 */
    function submitFormOfCarInfo() {
        proxy.$refs["rulesOfCarInfo"].validate(valid => {
            if (valid) {
                if (formOfCarInfo.value.id != null) {
                    updateOfCarInfo(formOfCarInfo.value).then(response => {
                        proxy.$modal.msgSuccess("修改成功");
                        openOfCarInfo.value = false;
                        getListOfCarInfo();
                    });
                } else {
                    addOfCarInfo(formOfCarInfo.value).then(response => {
                        proxy.$modal.msgSuccess("新增成功");
                        openOfCarInfo.value = false;
                        getListOfCarInfo();
                    });
                }
            }
        });
    }

    /** 删除按钮操作 */
    function handleDeleteOfCarInfo(row) {
        const _idsOfCarInfo = row.id || idsOfCarInfo.value;
        proxy.$modal.confirm('是否确认删除  为"' + _idsOfCarInfo + '"的数据项?').then(function () {
            return deleteOfCarInfo(_idsOfCarInfo);
        }).then(() => {
            getListOfCarInfo();
            proxy.$modal.msgSuccess("删除成功");
        }).catch(() => { });
    }

    /** 导出按钮操作 */
    function handleExportOfCarInfo() {
        proxy.download('car/info/export', {
            ...queryParamsOfCarInfo.value
        }, `CarInfo_${new Date().getTime()}.xlsx`)
    }


    getListOfCarInfo();
    getStatusList();
</script>