mirror of
https://github.com/zclzone/vue-naive-admin.git
synced 2025-04-30 22:29:01 +08:00
104 lines
2.4 KiB
JavaScript
104 lines
2.4 KiB
JavaScript
import { isNullOrWhitespace } from '@/utils/is'
|
|
|
|
const ACTIONS = {
|
|
view: '查看',
|
|
edit: '编辑',
|
|
add: '新增',
|
|
}
|
|
|
|
export default function ({ name, initForm = {}, doCreate, doDelete, doUpdate, refresh }) {
|
|
const modalVisible = ref(false)
|
|
const modalAction = ref('')
|
|
const modalTitle = computed(() => ACTIONS[modalAction.value] + name)
|
|
const modalLoading = ref(false)
|
|
const modalFormRef = ref(null)
|
|
const modalForm = ref({ ...initForm })
|
|
|
|
/** 新增 */
|
|
function handleAdd() {
|
|
modalAction.value = 'add'
|
|
modalVisible.value = true
|
|
modalForm.value = { ...initForm }
|
|
}
|
|
|
|
/** 修改 */
|
|
function handleEdit(row) {
|
|
modalAction.value = 'edit'
|
|
modalVisible.value = true
|
|
modalForm.value = { ...row }
|
|
}
|
|
|
|
/** 查看 */
|
|
function handleView(row) {
|
|
modalAction.value = 'view'
|
|
modalVisible.value = true
|
|
modalForm.value = { ...row }
|
|
}
|
|
|
|
/** 保存 */
|
|
function handleSave() {
|
|
if (!['edit', 'add'].includes(modalAction.value)) {
|
|
modalVisible.value = false
|
|
return
|
|
}
|
|
modalFormRef.value?.validate(async (err) => {
|
|
if (err) return
|
|
const actions = {
|
|
add: {
|
|
api: () => doCreate(modalForm.value),
|
|
cb: () => $message.success('新增成功'),
|
|
},
|
|
edit: {
|
|
api: () => doUpdate(modalForm.value),
|
|
cb: () => $message.success('编辑成功'),
|
|
},
|
|
}
|
|
const action = actions[modalAction.value]
|
|
|
|
try {
|
|
modalLoading.value = true
|
|
const data = await action.api()
|
|
action.cb()
|
|
modalLoading.value = modalVisible.value = false
|
|
data && refresh(data)
|
|
} catch (error) {
|
|
modalLoading.value = false
|
|
}
|
|
})
|
|
}
|
|
|
|
/** 删除 */
|
|
function handleDelete(id, confirmOptions) {
|
|
if (isNullOrWhitespace(id)) return
|
|
$dialog.confirm({
|
|
content: '确定删除?',
|
|
async confirm() {
|
|
try {
|
|
modalLoading.value = true
|
|
const data = await doDelete(id)
|
|
$message.success('删除成功')
|
|
modalLoading.value = false
|
|
refresh(data)
|
|
} catch (error) {
|
|
modalLoading.value = false
|
|
}
|
|
},
|
|
...confirmOptions,
|
|
})
|
|
}
|
|
|
|
return {
|
|
modalVisible,
|
|
modalAction,
|
|
modalTitle,
|
|
modalLoading,
|
|
handleAdd,
|
|
handleDelete,
|
|
handleEdit,
|
|
handleView,
|
|
handleSave,
|
|
modalForm,
|
|
modalFormRef,
|
|
}
|
|
}
|