<template>
|
<app-tab-wrapper
|
v-bind="tabWrapperProps"
|
>
|
<template #[tab.name]="scope" v-for="tab in props.tabList" :key="tab.name">
|
<slot :name="tab.name"></slot>
|
</template>
|
|
<template #[page.type]="scope" v-for="page in pageConfig" :key="page.type">
|
<rules-table v-bind="rulesTableProps" :options="page"/>
|
<rules-dialog v-bind="rulesDialogProps" :options="page"/>
|
</template>
|
</app-tab-wrapper>
|
</template>
|
|
<script setup>
|
|
import {modal} from '@/plugins';
|
|
import RulesTable from './RulesTable';
|
import RulesDialog from './RulesDialog';
|
import {useEntityStore} from "@/store/modules";
|
|
const entityStore = useEntityStore();
|
|
const props = defineProps({
|
subCurrent: {
|
type: Function,
|
default: () => {
|
}
|
},
|
pageConfig: {
|
type: Array,
|
default: []
|
},
|
tabList: {
|
type: Array,
|
default: []
|
},
|
});
|
|
const rulesDialogRef = ref();
|
|
const rulesTableRef = ref();
|
|
const tabWrapperRef = ref();
|
|
const tabWrapperProps = {
|
ref: tabWrapperRef,
|
tabList: [
|
...props.tabList,
|
...props.pageConfig.map(e => ({name: e.type, label: e.label}))
|
],
|
subActive(val) {
|
props.subCurrent({tab: val, edit: null, add: null});
|
}
|
}
|
|
const rulesTableProps = {
|
ref: rulesTableRef,
|
subCurrent(row) {
|
props.subCurrent(row);
|
},
|
}
|
|
const rulesDialogProps = {
|
ref: rulesDialogRef,
|
subReload(bool) {
|
rulesTableRef.value.onReload(bool);
|
}
|
}
|
|
const onDialog = (row) => {
|
rulesDialogRef.value.onOpen(row);
|
};
|
|
const onDelete = async (row) => {
|
await modal.confirm("是否确认删除?");
|
|
await entityStore.deleteEntity({
|
dataName: 'sys_data_field_rule',
|
id: row.id
|
});
|
rulesTableRef.value.onReload(false)
|
};
|
|
|
defineExpose({
|
onDialog,
|
onDelete
|
});
|
|
</script>
|