keyInfo.vue 12.8 KB
<template>
    <div class="app-container">
        <div class="query-from">
            <el-form :inline="true" :queryOfKeyInfo="queryOfKeyInfo" :model="queryParamsOfKeyInfo" class="demo-form-inline">
                     <el-form-item label="名称" props="name">
                         <el-input style="width: 120px;" v-model="queryParamsOfKeyInfo.name" placeholder="请输入名称(如:XX车的钥匙)" clearable
                                   @keyup.enter="handleQueryOfKeyInfo" />
                     </el-form-item>
                     <el-form-item label="车牌号" props="plateNum">
                        <el-select  v-model="queryParamsOfKeyInfo.plateNum" value-on-clear>
                            <el-option v-for="item in carNos"  :key="item.plateNum"  :label="item.plateNum"  :value="item.plateNum"  />
                        </el-select>
                     </el-form-item>

                    <el-form-item label="所在设备" prop="deviceId">
                        <el-select v-model="queryParamsOfKeyInfo.deviceId" value-on-clear>
                            <el-option v-for="item in deviceIds"  :key="item.id"  :label="item.siteName"  :value="item.id"  />
                        </el-select>
                    </el-form-item>

                <el-form-item>
                    <el-button type="primary" icon="Search" @click="handleQueryOfKeyInfo">搜索</el-button>
                    <el-button icon="Refresh" @click="resetQueryOfKeyInfo">重置</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="handleAddOfKeyInfo"  v-hasPermi="['key:info:add']">新增</el-button>

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

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

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

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

        <el-table v-loading="loadingOfKeyInfo" :data="listOfKeyInfo" @selection-change="handleSelectionChangeOfKeyInfo" border max-height="600"
                  :default-expand-all="false" :row-class-name="tableRowClassName" @sort-change="sortChangeFunction">
            <el-table-column type="selection" width="50" align="center" />
            <el-table-column label="序号" type="index" width="60" align="center">
                <template #default="scope">
                    {{ (queryParamsOfKeyInfo.pageNum - 1) * queryParamsOfKeyInfo.pageSize + scope.$index + 1 }}
                </template>
            </el-table-column>
            <el-table-column label="名称" align="center" prop="name" sortable />
            <el-table-column label="状态" align="center" prop="status" sortable />
            <el-table-column label="车牌号" align="center" prop="plateNum" sortable />
            <el-table-column label="所在设备" align="center" prop="deviceLabel" 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="singleKeyInfo" @click="handleUpdateOfKeyInfo(scope.row)"  v-hasPermi="['key:info:update']">修改</el-button>

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

        <pagination v-show="totalOfKeyInfo > 0" :total="totalOfKeyInfo" v-model:pageOfKeyInfo="queryParamsOfKeyInfo.pageNum" v-model:limit="queryParamsOfKeyInfo.pageSize"
                    @pagination="getListOfKeyInfo" />

        <el-dialog :title="titleOfKeyInfo" v-model="openOfKeyInfo" width="500px" append-to-body>
            <el-form  :model="formOfKeyInfo" ref="rulesOfKeyInfo" label-width="80px"   :rules="checkRulesOfKeyInfo">
                    
                <el-form-item label="名称" prop="name">
                    <el-input el-input="input" v-model="formOfKeyInfo.name" placeholder="请输入名称(如:XX车的钥匙)" />
                </el-form-item>
                <el-form-item label="车牌号" props="plateNum">
                    <el-select  v-model="formOfKeyInfo.plateNum" >
                        <el-option v-for="item in carNos"  :key="item.plateNum"  :label="item.plateNum"  :value="item.plateNum"  />
                    </el-select>
                </el-form-item>
                <el-form-item label="所在设备" prop="deviceId">{{formOfKeyInfo.deviceId}}
                    <el-select v-model="formOfKeyInfo.deviceId" >
                        <el-option v-for="item in deviceIds"  :key="item.id"  :label="item.siteName"  :value="item.id"  />
                    </el-select>
                </el-form-item>


            </el-form>

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


<script setup name="KeyInfo">
    import { listLimitOfKeyInfo, viewOfKeyInfo, addOfKeyInfo, updateOfKeyInfo,updateStatusOfKeyInfo,deleteOfKeyInfo } from "@/api/keyInfo/keyInfo";
     import { selectListOfCarInfo } from "@/api/carInfo/carInfo";
    import {  selectList } from "@/api/equipment/equipment";

    const { proxy } = getCurrentInstance();

    const listOfKeyInfo = ref([]);
    const openOfKeyInfo = ref(false);
    const titleOfKeyInfo = ref("");
    const loadingOfKeyInfo = ref(true);
    const showSearchOfKeyInfo = ref(true);
    const idsOfKeyInfo = ref([]);
    const singleKeyInfo = ref(true);
    const multipleKeyInfo = ref(true);
    const deviceIds=ref([]);
    const carNos=ref([]);


    const pageOfKeyInfo = ref(1) //第几页
    const sizeOfKeyInfo = ref(10) //一页多少条
    const totalOfKeyInfo = ref(0);
    const pageSizesOfKeyInfo = [5, 10, 20, 50]; //每页显示多少条
    const currentPageOfKeyInfo = ref(1) // 当前页
    const globalRowOfKeyInfo = ref(null) // 当前行数据
    
    const changeFlagOfKeyInfo = ref(true)

    const dataOfKeyInfo = reactive({
        formOfKeyInfo: {},
        queryParamsOfKeyInfo: {
            pageNum: 1,
            pageSize: 10,
            id : null,
            name : null,
            status : null,
            delFlag : null,
            createBy : null,
            createTime : null,
            updateby : null,
            updateTime : null,
            yardId : null,
            deviceId : null,
            cabinetno : null,

        },
        checkRulesOfKeyInfo: {
            id : [
                { required: true, message: "ID", trigger: "blur" }
            ],
            name : [
                { required: true, message: "名称(如:XX车的钥匙)", trigger: "blur" }
            ],
            status : [
                { required: true, message: "状态", trigger: "blur" }
            ],
            delFlag : [
                { required: true, message: "是否删除", trigger: "blur" }
            ],
            createBy : [
                { required: true, message: "创建人员", trigger: "blur" }
            ],
            createTime : [
                { required: true, message: "创建时间", trigger: "blur" }
            ],
            updateby : [
                { required: true, message: "修改人员", trigger: "blur" }
            ],
            updateTime : [
                { required: true, message: "修改时间", trigger: "blur" }
            ],
            yardId : [
                { required: true, message: "钥匙所在场站ID", trigger: "blur" }
            ],
            deviceId : [
                { required: true, message: "钥匙锁在的设备ID", trigger: "blur" }
            ],
            cabinetno : [
                { required: true, message: "钥匙所在的位置", trigger: "blur" }
            ],
        }
    });

    const { queryParamsOfKeyInfo, formOfKeyInfo, checkRulesOfKeyInfo } = toRefs(dataOfKeyInfo );

    /** 查询设备信息列表 */
    function getListOfKeyInfo() {
        loadingOfKeyInfo.value = true;
        listLimitOfKeyInfo(queryParamsOfKeyInfo.value,queryParamsOfKeyInfo.value.pageNum,queryParamsOfKeyInfo.value.pageSize).then(response => {
            listOfKeyInfo.value = response.records;
            totalOfKeyInfo.value = response.total;
            loadingOfKeyInfo.value = false;
        });
    }

    function getSelectListOfCarInfo(){
        selectListOfCarInfo({"status":1}).then(response=>{
            carNos.value=response.data;
        });
    }

    function sortChangeFunction(data){
        queryParamsOfKeyInfo.value.order=data.order;
        queryParamsOfKeyInfo.value.prop=data.prop;
        getListOfKeyInfo();
    }

    // 取消按钮
    function cancelOfKeyInfo() {
        openOfKeyInfo.value = false;
        globalRowOfKeyInfo.value = null
        resetOfKeyInfo();
    }

    const handleSizeChange = (val) => {
        sizeOfKeyInfo.value = val;
    }
    const handleCurrentChange = (val) => {
        pageOfKeyInfo.value = val;
    }


    // 表单重置
    function resetOfKeyInfo() {
        formOfKeyInfo.value = {
            id  : null,
            name  : null,
            status  : null,
            delFlag  : null,
            createBy  : null,
            createTime  : null,
            updateby  : null,
            updateTime  : null,
            yardId  : null,
            deviceId  : null,
            cabinetno  : null,
        };
        proxy.resetForm("rulesOfKeyInfo");
    }

    /** 搜索按钮操作 */
    function handleQueryOfKeyInfo() {
        queryParamsOfKeyInfo.value.pageNum = 1;
        getListOfKeyInfo();
    }

    /** 重置按钮操作 */
    function resetQueryOfKeyInfo() {
        proxy.resetForm("queryOfKeyInfo");
        handleQueryOfKeyInfo();
    }

    // 多选框选中数据
    function handleSelectionChangeOfKeyInfo(selection) {
        idsOfKeyInfo.value = selection.map(item => item.id);
        singleKeyInfo.value = selection.length != 1;
        multipleKeyInfo.value = !selection.length;
    }

    /** 新增按钮操作 */
    function handleAddOfKeyInfo() {
        resetOfKeyInfo();
        changeFlagOfKeyInfo.value = true;
        openOfKeyInfo.value = true;
        titleOfKeyInfo.value = "添加";
    }

    /** 修改按钮操作 */
    function handleUpdateOfKeyInfo(row) {
        resetOfKeyInfo();
        const _id = row.id || idsOfKeyInfo.value
        viewOfKeyInfo(_id).then(response => {
            formOfKeyInfo.value = response.data;
            openOfKeyInfo.value = true;
            titleOfKeyInfo.value = "修改";
        });
    }

    /** 提交按钮 */
    function submitFormOfKeyInfo() {
        proxy.$refs["rulesOfKeyInfo"].validate(valid => {
            if (valid) {
                if (formOfKeyInfo.value.id != null) {
                    updateOfKeyInfo(formOfKeyInfo.value).then(response => {
                        proxy.$modal.msgSuccess("修改成功");
                        openOfKeyInfo.value = false;
                        getListOfKeyInfo();
                    });
                } else {
                    addOfKeyInfo(formOfKeyInfo.value).then(response => {
                        proxy.$modal.msgSuccess("新增成功");
                        openOfKeyInfo.value = false;
                        getListOfKeyInfo();
                    });
                }
            }
        });
    }

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

    /** 导出按钮操作 */
    function handleExportOfKeyInfo() {
        proxy.download('key/info/export', {
            ...queryParamsOfKeyInfo.value
        }, `KeyInfo_${new Date().getTime()}.xlsx`)
    }

    function selectEquipment(){
        selectList({"promise":4}).then(res=>{
       
        deviceIds.value=res.data;
    })
    }

    getListOfKeyInfo();
    selectEquipment();
    getSelectListOfCarInfo();
</script>