From 64d172717748c383a5c88348037354bffd60f966 Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期二, 27 五月 2025 17:52:03 +0800 Subject: [PATCH] 页面样式修改 --- src/views/system/dict/data.vue | 362 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 362 insertions(+), 0 deletions(-) diff --git a/src/views/system/dict/data.vue b/src/views/system/dict/data.vue new file mode 100644 index 0000000..4869f94 --- /dev/null +++ b/src/views/system/dict/data.vue @@ -0,0 +1,362 @@ +<template> + <div class="app-container"> + <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch"> + <el-form-item label="瀛楀吀鍚嶇О" prop="dictType"> + <el-select v-model="queryParams.dictType" style="width: 200px"> + <el-option + v-for="item in typeOptions" + :key="item.dictId" + :label="item.dictName" + :value="item.dictType" + /> + </el-select> + </el-form-item> + <el-form-item label="瀛楀吀鏍囩" prop="dictLabel"> + <el-input + v-model="queryParams.dictLabel" + placeholder="璇疯緭鍏ュ瓧鍏告爣绛�" + clearable + style="width: 200px" + @keyup.enter="handleQuery" + /> + </el-form-item> + <el-form-item label="鐘舵��" prop="status"> + <el-select v-model="queryParams.status" placeholder="鏁版嵁鐘舵��" clearable style="width: 200px"> + <el-option + v-for="dict in sys_normal_disable" + :key="dict.value" + :label="dict.label" + :value="dict.value" + /> + </el-select> + </el-form-item> + <el-form-item> + <el-button type="primary" icon="Search" @click="handleQuery">鎼滅储</el-button> + <el-button icon="Refresh" @click="resetQuery">閲嶇疆</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="handleAdd" + v-hasPermi="['system:dict:add']" + >鏂板</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="success" + plain + icon="Edit" + :disabled="single" + @click="handleUpdate" + v-hasPermi="['system:dict:edit']" + >淇敼</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="danger" + plain + icon="Delete" + :disabled="multiple" + @click="handleDelete" + v-hasPermi="['system:dict:remove']" + >鍒犻櫎</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="warning" + plain + icon="Download" + @click="handleExport" + v-hasPermi="['system:dict:export']" + >瀵煎嚭</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="warning" + plain + icon="Close" + @click="handleClose" + >鍏抽棴</el-button> + </el-col> + <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> + </el-row> + + <el-table v-loading="loading" :data="dataList" @selection-change="handleSelectionChange"> + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="瀛楀吀缂栫爜" align="center" prop="dictCode" /> + <el-table-column label="瀛楀吀鏍囩" align="center" prop="dictLabel"> + <template #default="scope"> + <span v-if="(scope.row.listClass == '' || scope.row.listClass == 'default') && (scope.row.cssClass == '' || scope.row.cssClass == null)">{{ scope.row.dictLabel }}</span> + <el-tag v-else :type="scope.row.listClass == 'primary' ? '' : scope.row.listClass" :class="scope.row.cssClass">{{ scope.row.dictLabel }}</el-tag> + </template> + </el-table-column> + <el-table-column label="瀛楀吀閿��" align="center" prop="dictValue" /> + <el-table-column label="瀛楀吀鎺掑簭" align="center" prop="dictSort" /> + <el-table-column label="鐘舵��" align="center" prop="status"> + <template #default="scope"> + <dict-tag :options="sys_normal_disable" :value="scope.row.status" /> + </template> + </el-table-column> + <el-table-column label="澶囨敞" align="center" prop="remark" :show-overflow-tooltip="true" /> + <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime" width="180"> + <template #default="scope"> + <span>{{ parseTime(scope.row.createTime) }}</span> + </template> + </el-table-column> + <el-table-column label="鎿嶄綔" align="center" width="160" class-name="small-padding fixed-width"> + <template #default="scope"> + <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:dict:edit']">淇敼</el-button> + <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:dict:remove']">鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + + <pagination + v-show="total > 0" + :total="total" + v-model:page="queryParams.pageNum" + v-model:limit="queryParams.pageSize" + @pagination="getList" + /> + + <!-- 娣诲姞鎴栦慨鏀瑰弬鏁伴厤缃璇濇 --> + <el-dialog :title="title" v-model="open" width="500px" append-to-body> + <el-form ref="dataRef" :model="form" :rules="rules" label-width="80px"> + <el-form-item label="瀛楀吀绫诲瀷"> + <el-input v-model="form.dictType" :disabled="true" /> + </el-form-item> + <el-form-item label="鏁版嵁鏍囩" prop="dictLabel"> + <el-input v-model="form.dictLabel" placeholder="璇疯緭鍏ユ暟鎹爣绛�" /> + </el-form-item> + <el-form-item label="鏁版嵁閿��" prop="dictValue"> + <el-input v-model="form.dictValue" placeholder="璇疯緭鍏ユ暟鎹敭鍊�" /> + </el-form-item> + <el-form-item label="鏍峰紡灞炴��" prop="cssClass"> + <el-input v-model="form.cssClass" placeholder="璇疯緭鍏ユ牱寮忓睘鎬�" /> + </el-form-item> + <el-form-item label="鏄剧ず鎺掑簭" prop="dictSort"> + <el-input-number v-model="form.dictSort" controls-position="right" :min="0" /> + </el-form-item> + <el-form-item label="鍥炴樉鏍峰紡" prop="listClass"> + <el-select v-model="form.listClass"> + <el-option + v-for="item in listClassOptions" + :key="item.value" + :label="item.label + '(' + item.value + ')'" + :value="item.value" + ></el-option> + </el-select> + </el-form-item> + <el-form-item label="鐘舵��" prop="status"> + <el-radio-group v-model="form.status"> + <el-radio + v-for="dict in sys_normal_disable" + :key="dict.value" + :value="dict.value" + >{{ dict.label }}</el-radio> + </el-radio-group> + </el-form-item> + <el-form-item label="澶囨敞" prop="remark"> + <el-input v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�"></el-input> + </el-form-item> + </el-form> + <template #footer> + <div class="dialog-footer"> + <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </template> + </el-dialog> + </div> +</template> + +<script setup name="Data"> +import useDictStore from '@/store/modules/dict' +import { optionselect as getDictOptionselect, getType } from "@/api/system/dict/type" +import { listData, getData, delData, addData, updateData } from "@/api/system/dict/data" + +const { proxy } = getCurrentInstance() +const { sys_normal_disable } = proxy.useDict("sys_normal_disable") + +const dataList = ref([]) +const open = ref(false) +const loading = ref(true) +const showSearch = ref(true) +const ids = ref([]) +const single = ref(true) +const multiple = ref(true) +const total = ref(0) +const title = ref("") +const defaultDictType = ref("") +const typeOptions = ref([]) +const route = useRoute() +// 鏁版嵁鏍囩鍥炴樉鏍峰紡 +const listClassOptions = ref([ + { value: "default", label: "榛樿" }, + { value: "primary", label: "涓昏" }, + { value: "success", label: "鎴愬姛" }, + { value: "info", label: "淇℃伅" }, + { value: "warning", label: "璀﹀憡" }, + { value: "danger", label: "鍗遍櫓" } +]) + +const data = reactive({ + form: {}, + queryParams: { + pageNum: 1, + pageSize: 10, + dictType: undefined, + dictLabel: undefined, + status: undefined + }, + rules: { + dictLabel: [{ required: true, message: "鏁版嵁鏍囩涓嶈兘涓虹┖", trigger: "blur" }], + dictValue: [{ required: true, message: "鏁版嵁閿�间笉鑳戒负绌�", trigger: "blur" }], + dictSort: [{ required: true, message: "鏁版嵁椤哄簭涓嶈兘涓虹┖", trigger: "blur" }] + } +}) + +const { queryParams, form, rules } = toRefs(data) + +/** 鏌ヨ瀛楀吀绫诲瀷璇︾粏 */ +function getTypes(dictId) { + getType(dictId).then(response => { + queryParams.value.dictType = response.data.dictType + defaultDictType.value = response.data.dictType + getList() + }) +} + +/** 鏌ヨ瀛楀吀绫诲瀷鍒楄〃 */ +function getTypeList() { + getDictOptionselect().then(response => { + typeOptions.value = response.data + }) +} + +/** 鏌ヨ瀛楀吀鏁版嵁鍒楄〃 */ +function getList() { + loading.value = true + listData(queryParams.value).then(response => { + dataList.value = response.rows + total.value = response.total + loading.value = false + }) +} + +/** 鍙栨秷鎸夐挳 */ +function cancel() { + open.value = false + reset() +} + +/** 琛ㄥ崟閲嶇疆 */ +function reset() { + form.value = { + dictCode: undefined, + dictLabel: undefined, + dictValue: undefined, + cssClass: undefined, + listClass: "default", + dictSort: 0, + status: "0", + remark: undefined + } + proxy.resetForm("dataRef") +} + +/** 鎼滅储鎸夐挳鎿嶄綔 */ +function handleQuery() { + queryParams.value.pageNum = 1 + getList() +} + +/** 杩斿洖鎸夐挳鎿嶄綔 */ +function handleClose() { + const obj = { path: "/system/dict" } + proxy.$tab.closeOpenPage(obj) +} + +/** 閲嶇疆鎸夐挳鎿嶄綔 */ +function resetQuery() { + proxy.resetForm("queryRef") + queryParams.value.dictType = defaultDictType.value + handleQuery() +} + +/** 鏂板鎸夐挳鎿嶄綔 */ +function handleAdd() { + reset() + open.value = true + title.value = "娣诲姞瀛楀吀鏁版嵁" + form.value.dictType = queryParams.value.dictType +} + +/** 澶氶�夋閫変腑鏁版嵁 */ +function handleSelectionChange(selection) { + ids.value = selection.map(item => item.dictCode) + single.value = selection.length != 1 + multiple.value = !selection.length +} + +/** 淇敼鎸夐挳鎿嶄綔 */ +function handleUpdate(row) { + reset() + const dictCode = row.dictCode || ids.value + getData(dictCode).then(response => { + form.value = response.data + open.value = true + title.value = "淇敼瀛楀吀鏁版嵁" + }) +} + +/** 鎻愪氦鎸夐挳 */ +function submitForm() { + proxy.$refs["dataRef"].validate(valid => { + if (valid) { + if (form.value.dictCode != undefined) { + updateData(form.value).then(response => { + useDictStore().removeDict(queryParams.value.dictType) + proxy.$modal.msgSuccess("淇敼鎴愬姛") + open.value = false + getList() + }) + } else { + addData(form.value).then(response => { + useDictStore().removeDict(queryParams.value.dictType) + proxy.$modal.msgSuccess("鏂板鎴愬姛") + open.value = false + getList() + }) + } + } + }) +} + +/** 鍒犻櫎鎸夐挳鎿嶄綔 */ +function handleDelete(row) { + const dictCodes = row.dictCode || ids.value + proxy.$modal.confirm('鏄惁纭鍒犻櫎瀛楀吀缂栫爜涓�"' + dictCodes + '"鐨勬暟鎹」锛�').then(function() { + return delData(dictCodes) + }).then(() => { + getList() + proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛") + useDictStore().removeDict(queryParams.value.dictType) + }).catch(() => {}) +} + +/** 瀵煎嚭鎸夐挳鎿嶄綔 */ +function handleExport() { + proxy.download("system/dict/data/export", { + ...queryParams.value + }, `dict_data_${new Date().getTime()}.xlsx`) +} + +getTypes(route.params && route.params.dictId) +getTypeList() +</script> -- Gitblit v1.9.3