chore: 并入 iotlcm-admin-svr 历史到 admin-svr/(原提交 49818c6)

This commit is contained in:
MiFaZhan
2026-11-02 13:27:59 +08:00
1250 changed files with 154111 additions and 0 deletions
@@ -0,0 +1,119 @@
<template>
<BasicDrawer :close-on-click-modal="false" :title="title" class="w-[600px]">
<BasicForm>
</BasicForm>
</BasicDrawer>
</template>
<script setup lang="ts">
import { computed, nextTick, ref } from 'vue';
import { useVbenDrawer, useVbenModal, VbenButton } from '@vben/common-ui';
import { $t } from '@vben/locales';
import { addFullName, cloneDeep } from '@vben/utils';
import { useVbenForm } from '#/adapter/form';
import { Alert } from 'ant-design-vue';
import { Edit, View } from '@{.importWebApi}';
import { editSchema } from './model';
const emit = defineEmits<{ reload: [] }>();
interface ModalProps {
id?: number | string;
update: boolean;
view: boolean;
}
const isUpdate = ref(false);
const isView = ref(false);
const title = computed(() => {
if (isView.value) {
return $t('pages.common.view');
}
return isUpdate.value ? $t('pages.common.edit') : $t('pages.common.add');
});
const [BasicForm, formApi] = useVbenForm({
commonConfig: {
componentProps: {
class: 'w-full',
},
formItemClass: 'col-span-@{.script.formGridSpan}',
},
layout: 'vertical',
schema: editSchema,
showDefaultActions: false,
wrapperClass: 'grid-cols-@{.script.formGridSpan} gap-x-4',
});
@{ if eq .isEditModal true }
const [BasicDrawer, drawerApi] = useVbenModal
@{else}
const [BasicDrawer, drawerApi] = useVbenDrawer
@{end}
({
onCancel: handleCancel,
onConfirm: handleConfirm,
async onOpenChange(isOpen) {
if (!isOpen) {
return null;
}
drawerApi.setState({ confirmLoading: true, loading: true })
const { id, update, view, } = drawerApi.getData() as ModalProps;
isUpdate.value = update;
isView.value = view;
if (isUpdate.value || isView.value) {
const record = await View({ @{.pk.TsName}: id });
await formApi.setValues(record);
}
drawerApi.setState({ confirmLoading: false, loading: false })
if (view) {
drawerApi.setState({ showConfirmButton: false });
formApi.setState({
commonConfig: {
componentProps: {
readonly: true,
"only-read": true,
}
}
});
} else {
drawerApi.setState({ showConfirmButton: true });
formApi.setState({
commonConfig: {
componentProps: {
readonly: false,
"only-read": false,
}
}
});
}
},
});
async function handleConfirm() {
try {
drawerApi.setState({ confirmLoading: true, loading: true })
const { valid } = await formApi.validate();
if (!valid) {
return;
}
const data = cloneDeep(await formApi.getValues());
await (Edit(data));
emit('reload');
await handleCancel();
} catch (error) {
console.error(error);
} finally {
drawerApi.setState({ confirmLoading: false, loading: false })
}
}
async function handleCancel() {
drawerApi.close();
await formApi.resetForm();
}
</script>