keyInfo.vue 11.6 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="keyCode">
                     <el-form-item label="钥匙编码" props="keyCode">
                         <el-input style="width: 120px;" v-model="queryParamsOfKeyInfo.keyCode" placeholder="请输入钥匙编码" clearable  @keyup.enter="handleQueryOfKeyInfo" />
                     </el-form-item>
                </el-form-item>

                <el-form-item label="车牌号" props="plateNum">
                     <el-form-item label="车牌号" props="plateNum">
                         <el-input style="width: 120px;" v-model="queryParamsOfKeyInfo.plateNum" placeholder="请输入车牌号" clearable  @keyup.enter="handleQueryOfKeyInfo" />
                     </el-form-item>
                </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>
              
        
                <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="sortChangeOfKeyInfo">
            <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="keyCode" sortable />
            <el-table-column label="车牌号" align="center" prop="plateNum" sortable />
            <el-table-column label="名称" align="center" prop="name" sortable />
            <el-table-column label="是否删除" align="center" prop="delFlagStr" sortable >
                
            </el-table-column>
            <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="keyCode">
                    <el-input el-input="input" v-model="formOfKeyInfo.keyCode" placeholder="请输入钥匙编码" />
                </el-form-item>

                <el-form-item label="车牌号" prop="plateNum">
                    <el-input el-input="input" v-model="formOfKeyInfo.plateNum" placeholder="请输入车牌号" />
                </el-form-item>

                <el-form-item label="名称" prop="name">
                    <el-input el-input="input" v-model="formOfKeyInfo.name" placeholder="请输入名称(如:XX车的钥匙)" />
                </el-form-item>
                
                <el-form-item label="是否删除" prop="delFlag">
                    <el-select v-model="formOfKeyInfo.delFlag" placeholder="请选择" style="width: 380px;">
                        <el-option v-for="dict in deleteFlags" :key="dict.value" :label="dict.dictLabel"   :value="dict.dictValue"></el-option>
                    </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 { getDicts,getDictsDelFlag } from '@/api/system/dict/data';
    import { listLimitOfKeyInfo, viewOfKeyInfo, addOfKeyInfo, updateOfKeyInfo,updateStatusOfKeyInfo,deleteOfKeyInfo } from "@/api/keyInfo/keyInfo";
    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 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 deleteFlags = ref([])


    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,
            plateNum : null,
            keyCode : 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" }
            ],
            plateNum : [
                { required: true, message: "车牌号", trigger: "blur" }
            ],
            keyCode : [
                { 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;
            deleteFlagsFunction(function(res){
                loadingOfKeyInfo.value = false;
            });
            
        });
    }

    function deleteFlagsFunction(fun){
        getDictsDelFlag().then(response=>{
            deleteFlags.value =  response.data;
          

            if(fun){
                fun(response);
            }
        });
    }
    /**排序*/
    function sortChangeOfKeyInfo(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,
            plateNum  : null,
            keyCode  : 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`)
    }


    getListOfKeyInfo();
</script>