108 lines
2.4 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<a-drawer
title="字段权限"
:width="650"
:visible="visible"
:destroy-on-close="true"
:body-style="{ paddingBottom: '80px' }"
:footer-style="{ textAlign: 'right' }"
@close="onClose"
>
<s-table
ref="table"
:columns="columns"
:data="loadData"
:alert="false"
:row-key="(record) => record.id"
:tool-config="toolConfig"
>
<template #operator class="table-operator">
<a-button type="primary" @click="fieldForm.onOpen(recordData)">
<template #icon>
<plus-outlined />
</template>
<span>新增字段</span>
</a-button>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'action'">
<a @click="fieldForm.onOpen(recordData, record)">编辑</a>
<a-divider type="vertical" />
<a-popconfirm title="确定要删除此字段吗" @confirm="removeField(record)">
<a-button type="link" danger size="small">删除</a-button>
</a-popconfirm>
</template>
</template>
</s-table>
</a-drawer>
<Form ref="fieldForm" @successful="table.refresh(true)" />
</template>
<script setup>
import fieldApi from '@/api/sys/resource/fieldApi'
import Form from './form.vue'
const columns = [
{
title: '名称',
dataIndex: 'title'
},
{
title: '字段名',
dataIndex: 'code',
sorter: true
},
{
title: '排序',
dataIndex: 'sortCode',
sorter: true
},
{
title: '操作',
key: 'action',
align: 'center',
scopedSlots: { customRender: 'action' }
}
]
const toolConfig = { refresh: true, height: false, columnSetting: false, striped: false }
// 默认是关闭状态
let visible = $ref(false)
const searchFormState = ref()
const fieldForm = ref()
const recordData = ref()
const table = ref()
// 打开抽屉
const onOpen = (record) => {
recordData.value = record
searchFormState.value = {
parentId: record.id,
category: 'FIELD'
}
visible = true
}
// 关闭抽屉
const onClose = () => {
visible = false
}
// 加载字段数据
const loadData = (parameter) => {
return fieldApi.fieldPage(Object.assign(parameter, searchFormState.value)).then((res) => {
return res
})
}
// 删除
const removeField = (record) => {
let params = [
{
id: record.id
}
]
fieldApi.fieldDelete(params).then(() => {
table.value.refresh(true)
})
}
// 调用这个函数将子组件的一些数据和方法暴露出去
defineExpose({
onOpen
})
</script>