当前位置: 首页 > news >正文

el-table的select回显问题

<template><Dialog v-model="dialogVisible" title="井权限" width="800"><el-form ref="formRef" v-loading="formLoading" :model="formData" label-width="auto"><el-form-item :label="t('searchbar.roleNameLabel')"><el-tag>{{ formData.name }}</el-tag></el-form-item><el-form-item :label="t('searchbar.roleCodeLabel')"><el-tag>{{ formData.code }}</el-tag></el-form-item><el-form-item :label="t('action.permissionScope')"><el-select v-model="formData.dataScope"><el-option value="" /><el-inputv-model="queryParams.wellName"placeholder="搜索井名"clearablestyle="margin-left: 10px; width: 200px"/><el-button @click="handleQuery"><Icon class="mr-5px" icon="ep:search" />{{ t('action.search') }}</el-button><el-table:data="wellList"style="width: 100%"@selection-change="handleSelectionChange"@row-click="handleRowClick"ref="wellTable":row-key="getRowKeys":reserve-selection="true"><el-table-column type="selection" width="55" :reserve-selection="true" /><el-table-column prop="wellName" label="井名" width="150" /><el-table-column prop="builder" label="建设方" width="200" /><el-table-column prop="servePlace" label="服务地区" width="200" /><el-table-column prop="oilProduction" label="采油厂" /></el-table></el-select></el-form-item></el-form><template #footer><el-button :disabled="formLoading" type="primary" @click="submitForm">{{ t('action.confirm') }}</el-button><el-button @click="dialogVisible = false">{{ t('action.cancel') }}</el-button></template></Dialog>
</template><script lang="ts" setup>
import { ref, reactive, nextTick } from 'vue';
import { useI18n } from 'vue-i18n';
import * as RoleApi from '@/api/system/role';
import * as PermissionApi from '@/api/system/permission';
import { SiteApi } from '@/api/base/site';
import { SystemDataScopeEnum } from '@/utils/constants';defineOptions({ name: 'SystemRoleDataPermissionForm' });const { t } = useI18n();
const message = useMessage();const dialogVisible = ref(false);
const formLoading = ref(false);
const formData = reactive({id: 0,name: '',code: '',dataScope: '',dataScopeDeptIds: [],selection: undefined,
});const queryParams = reactive({reportIndex: 1,pageNo: 1,pageSize: 10,wellName: '',
});const formRef = ref();
const wellList = ref([]);
const wellTable = ref(null);
const selectedRows = ref<any[]>([]);/** 打开弹窗 */
const open = async (row: RoleApi.RoleVO) => {dialogVisible.value = true;resetForm();formData.id = row.id;formData.name = row.name;formData.code = row.code;formData.dataScope = '';const wellCodes = await PermissionApi.getRoleWellList(row.id);wellList.value = await SiteApi.getSiteList(queryParams.wellName);// 根据 wellCodes 筛选选中行selectedRows.value = wellList.value.filter((well) => wellCodes.includes(well.wellCode));// 设置 formData.dataScope 为选中行的 wellName,用逗号分隔formData.dataScope = selectedRows.value.map((row) => row.wellName).join(',');// 使用 nextTick 确保表格渲染完成后再设置选中状态await nextTick();selectedRows.value.forEach((row) => {wellTable.value.toggleRowSelection(row, true);});
};defineExpose({ open });/** 提交表单 */
const emit = defineEmits(['success']);/** 搜索按钮操作 */
const handleQuery = async () => {wellList.value = await SiteApi.getSiteList(queryParams.wellName);
};/** 确定按钮操作 */
const submitForm = async () => {formLoading.value = true;try {const data = {roleId: formData.id,dataScope: 1,selection: formData.selection,dataScopeDeptIds:formData.dataScope !== SystemDataScopeEnum.DEPT_CUSTOM ? [] : treeRef.value.getCheckedKeys(false),};await PermissionApi.assignRoleWellScope(data);message.success(t('common.updateSuccess'));dialogVisible.value = false;emit('success');} finally {formLoading.value = false;}
};/** 选中操作 */
const handleSelectionChange = (selection) => {formData.selection = selection;formData.dataScope = selection.map((i) => i.wellName).join(',');selectedRows.value = selection;
};/** 行点击事件 */
const handleRowClick = (row) => {const index = selectedRows.value.findIndex((item) => item.wellCode === row.wellCode);if (index === -1) {selectedRows.value.push(row);} else {selectedRows.value.splice(index, 1);}
};/** 获取唯一键 */
const getRowKeys = (row) => {return row.wellCode;
};/** 重置表单 */
const resetForm = () => {formData.id = 0;formData.name = '';formData.code = '';formData.dataScope = '';formData.dataScopeDeptIds = [];formRef.value?.resetFields();
};
</script>

getRowKeys为关键

相关文章:

  • 【深度学习】表示学习:深度学习的数据解构与重构艺术
  • Spring AI 项目实战(六):Spring Boot + AI + DeepSeek 打造智能成语接龙游戏(附完整源码)
  • 从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(十一)
  • 【无人机】MavLink通讯协议的回调解析函数及状态机
  • grpc和http的区别
  • HTTP 重定向详解
  • PDF 转 Word 工具 拖拽秒转可编辑文档,批量处理保留原格式
  • DeepSeek12-Open WebUI 知识库配置详细步骤
  • 【分布式】分布式ID介绍和实现方案总结
  • 基于单片机的病房呼叫系统(源码+仿真)
  • 【react实战】如何实现监听窗口大小变化
  • 系统思考:跳出症状看全局
  • 深度优先算法学习
  • 五、jmeter脚本参数化
  • Python训练营打卡DAY48
  • 数据网格的革命:从集中式到分布式的数据管理新范式
  • 固态硬盘的寿命与可靠性如何保障?——以Kingston FURY Renegade G5为例的专业解析
  • 实验二:数码管动态显示实验
  • DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
  • ClickHouse 25.3 json列类型使用示例
  • 杭州网站建设q479185700惠/百度一下搜索网页
  • 装饰公司怎样做网站/无锡seo培训
  • 加强网站队伍建设/seo在线优化排名
  • 湛江电子商务网站建设/手机百度云电脑版入口
  • 庆阳市人大常委会网站建设/seo能干一辈子吗
  • 推广网站建设产品介绍/百度网站推广申请