|
|
|
|
@ -7,12 +7,7 @@
|
|
|
|
|
<span>字典分类</span>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<vxe-grid
|
|
|
|
|
ref="xTypeGrid"
|
|
|
|
|
v-bind="typeGridOptions"
|
|
|
|
|
@cell-click="cellClickEvent"
|
|
|
|
|
class="xtable-scrollbar"
|
|
|
|
|
>
|
|
|
|
|
<XTable @register="registerType" @cell-click="cellClickEvent">
|
|
|
|
|
<!-- 操作:新增类型 -->
|
|
|
|
|
<template #toolbar_buttons>
|
|
|
|
|
<XButton
|
|
|
|
|
@ -39,7 +34,7 @@
|
|
|
|
|
@click="handleTypeDelete(row.id)"
|
|
|
|
|
/>
|
|
|
|
|
</template>
|
|
|
|
|
</vxe-grid>
|
|
|
|
|
</XTable>
|
|
|
|
|
<!-- @星语:分页和列表重叠在一起了 -->
|
|
|
|
|
</el-card>
|
|
|
|
|
<!-- ====== 字典数据 ====== -->
|
|
|
|
|
@ -55,7 +50,7 @@
|
|
|
|
|
</div>
|
|
|
|
|
<div v-if="tableTypeSelect">
|
|
|
|
|
<!-- 列表 -->
|
|
|
|
|
<vxe-grid ref="xDataGrid" v-bind="dataGridOptions" class="xtable-scrollbar">
|
|
|
|
|
<XTable @register="registerData">
|
|
|
|
|
<!-- 操作:新增数据 -->
|
|
|
|
|
<template #toolbar_buttons>
|
|
|
|
|
<XButton
|
|
|
|
|
@ -82,7 +77,7 @@
|
|
|
|
|
@click="handleDataDelete(row.id)"
|
|
|
|
|
/>
|
|
|
|
|
</template>
|
|
|
|
|
</vxe-grid>
|
|
|
|
|
</XTable>
|
|
|
|
|
</div>
|
|
|
|
|
</el-card>
|
|
|
|
|
<XModal id="dictModel" v-model="dialogVisible" :title="dialogTitle">
|
|
|
|
|
@ -130,8 +125,8 @@
|
|
|
|
|
import { ref, unref, reactive } from 'vue'
|
|
|
|
|
import { useI18n } from '@/hooks/web/useI18n'
|
|
|
|
|
import { useMessage } from '@/hooks/web/useMessage'
|
|
|
|
|
import { useVxeGrid } from '@/hooks/web/useVxeGrid'
|
|
|
|
|
import { VxeGridInstance, VxeTableEvents } from 'vxe-table'
|
|
|
|
|
import { useXTable } from '@/hooks/web/useXTable'
|
|
|
|
|
import { VxeTableEvents } from 'vxe-table'
|
|
|
|
|
import { FormExpose } from '@/components/Form'
|
|
|
|
|
import { ElInput, ElTag, ElCard } from 'element-plus'
|
|
|
|
|
import * as DictTypeSchemas from './dict.type'
|
|
|
|
|
@ -143,28 +138,18 @@ import { DictDataVO, DictTypeVO } from '@/api/system/dict/types'
|
|
|
|
|
const { t } = useI18n() // 国际化
|
|
|
|
|
const message = useMessage() // 消息弹窗
|
|
|
|
|
|
|
|
|
|
const xTypeGrid = ref<VxeGridInstance>() // 列表 Grid Ref
|
|
|
|
|
const {
|
|
|
|
|
gridOptions: typeGridOptions,
|
|
|
|
|
getList: typeGetList,
|
|
|
|
|
deleteData: typeDeleteData
|
|
|
|
|
} = useVxeGrid<DictTypeVO>({
|
|
|
|
|
const [registerType, { reload: typeGetList, deleteData: typeDeleteData }] = useXTable({
|
|
|
|
|
allSchemas: DictTypeSchemas.allSchemas,
|
|
|
|
|
getListApi: DictTypeApi.getDictTypePageApi,
|
|
|
|
|
deleteApi: DictTypeApi.deleteDictTypeApi
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
const xDataGrid = ref<VxeGridInstance>() // 列表 Grid Ref
|
|
|
|
|
const queryParams = reactive({
|
|
|
|
|
dictType: null
|
|
|
|
|
})
|
|
|
|
|
const {
|
|
|
|
|
gridOptions: dataGridOptions,
|
|
|
|
|
getList: dataGetList,
|
|
|
|
|
deleteData: dataDeleteData
|
|
|
|
|
} = useVxeGrid<DictDataVO>({
|
|
|
|
|
const [registerData, { reload: dataGetList, deleteData: dataDeleteData }] = useXTable({
|
|
|
|
|
allSchemas: DictDataSchemas.allSchemas,
|
|
|
|
|
queryParams: queryParams,
|
|
|
|
|
params: queryParams,
|
|
|
|
|
getListApi: DictDataApi.getDictDataPageApi,
|
|
|
|
|
deleteApi: DictDataApi.deleteDictDataApi
|
|
|
|
|
})
|
|
|
|
|
@ -199,7 +184,7 @@ const tableTypeSelect = ref(false)
|
|
|
|
|
const cellClickEvent: VxeTableEvents.CellClick = async ({ row }) => {
|
|
|
|
|
tableTypeSelect.value = true
|
|
|
|
|
queryParams.dictType = row['type']
|
|
|
|
|
await dataGetList(xDataGrid)
|
|
|
|
|
await dataGetList()
|
|
|
|
|
parentType.value = row['type']
|
|
|
|
|
}
|
|
|
|
|
// 弹出框
|
|
|
|
|
@ -219,11 +204,11 @@ const setDialogTile = (type: string) => {
|
|
|
|
|
|
|
|
|
|
// 删除操作
|
|
|
|
|
const handleTypeDelete = async (rowId: number) => {
|
|
|
|
|
await typeDeleteData(xTypeGrid, rowId)
|
|
|
|
|
await typeDeleteData(rowId)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const handleDataDelete = async (rowId: number) => {
|
|
|
|
|
await dataDeleteData(xDataGrid, rowId)
|
|
|
|
|
await dataDeleteData(rowId)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 提交按钮
|
|
|
|
|
@ -247,7 +232,7 @@ const submitTypeForm = async () => {
|
|
|
|
|
dialogVisible.value = false
|
|
|
|
|
} finally {
|
|
|
|
|
actionLoading.value = false
|
|
|
|
|
typeGetList(xTypeGrid)
|
|
|
|
|
typeGetList()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
@ -272,7 +257,7 @@ const submitDataForm = async () => {
|
|
|
|
|
dialogVisible.value = false
|
|
|
|
|
} finally {
|
|
|
|
|
actionLoading.value = false
|
|
|
|
|
dataGetList(xDataGrid)
|
|
|
|
|
dataGetList()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|