diff --git a/easyflow-ui-admin/app/src/bootstrap.ts b/easyflow-ui-admin/app/src/bootstrap.ts index 5381a14..f3cfe54 100644 --- a/easyflow-ui-admin/app/src/bootstrap.ts +++ b/easyflow-ui-admin/app/src/bootstrap.ts @@ -8,7 +8,10 @@ import { } from 'vue-element-plus-x'; import { registerAccessDirective } from '@easyflow/access'; -import { registerLoadingDirective } from '@easyflow/common-ui'; +import { + registerLoadingDirective, + setDefaultModalProps, +} from '@easyflow/common-ui'; import { preferences } from '@easyflow/preferences'; import { initStores } from '@easyflow/stores'; import '@easyflow/styles'; @@ -31,10 +34,12 @@ async function bootstrap(namespace: string) { // 初始化表单组件 await initSetupEasyFlowForm(); - // // 设置弹窗的默认配置 - // setDefaultModalProps({ - // fullscreenButton: false, - // }); + // 设置弹窗的默认配置 + setDefaultModalProps({ + bordered: true, + fullscreenButton: false, + overlayBlur: 0, + }); // // 设置抽屉的默认配置 // setDefaultDrawerProps({ // zIndex: 2000, diff --git a/easyflow-ui-admin/app/src/components/headerSearch/HeaderSearch.vue b/easyflow-ui-admin/app/src/components/headerSearch/HeaderSearch.vue index c4e5e56..33df232 100644 --- a/easyflow-ui-admin/app/src/components/headerSearch/HeaderSearch.vue +++ b/easyflow-ui-admin/app/src/components/headerSearch/HeaderSearch.vue @@ -1,7 +1,7 @@ + + + + diff --git a/easyflow-ui-admin/app/src/components/page/PageData.vue b/easyflow-ui-admin/app/src/components/page/PageData.vue index 1f07bcc..24562b3 100644 --- a/easyflow-ui-admin/app/src/components/page/PageData.vue +++ b/easyflow-ui-admin/app/src/components/page/PageData.vue @@ -23,7 +23,7 @@ const props = withDefaults(defineProps(), { // 响应式数据 const pageList = ref([]); const loading = ref(false); -const queryParams = ref({}); +const queryParams = ref>({}); const pageInfo = reactive({ pageNumber: 1, @@ -32,7 +32,7 @@ const pageInfo = reactive({ }); // 模拟 API 调用 - 这里需要根据你的实际 API 调用方式调整 -const doGet = async (params: any) => { +const doGet = async (params: Record) => { loading.value = true; try { // 这里替换为你的实际 API 调用 @@ -76,7 +76,7 @@ const handleCurrentChange = (newPage: number) => { }; // 暴露给父组件的方法 (替代 useImperativeHandle) -const setQuery = (newQueryParams: string) => { +const setQuery = (newQueryParams: Record) => { pageInfo.pageNumber = 1; pageInfo.pageSize = props.pageSize; queryParams.value = newQueryParams; @@ -85,6 +85,7 @@ const setQuery = (newQueryParams: string) => { // 暴露方法给父组件 defineExpose({ + reload: getPageList, setQuery, }); @@ -106,10 +107,13 @@ onMounted(() => { + + diff --git a/easyflow-ui-admin/app/src/components/upload/UploadAvatar.vue b/easyflow-ui-admin/app/src/components/upload/UploadAvatar.vue index fec20ad..710f96a 100644 --- a/easyflow-ui-admin/app/src/components/upload/UploadAvatar.vue +++ b/easyflow-ui-admin/app/src/components/upload/UploadAvatar.vue @@ -25,6 +25,18 @@ const props = defineProps({ default: () => ['image/gif', 'image/jpeg', 'image/png', 'image/webp'], }, modelValue: { type: String, default: '' }, + shape: { + type: String, + default: 'circle', + }, + size: { + type: Number, + default: 100, + }, + theme: { + type: String, + default: 'default', + }, }); const emit = defineEmits(['success', 'update:modelValue']); @@ -77,6 +89,11 @@ const beforeAvatarUpload: UploadProps['beforeUpload'] = (rawFile) => { diff --git a/easyflow-ui-admin/app/src/views/ai/bots/modal.vue b/easyflow-ui-admin/app/src/views/ai/bots/modal.vue index ed782d6..a152e05 100644 --- a/easyflow-ui-admin/app/src/views/ai/bots/modal.vue +++ b/easyflow-ui-admin/app/src/views/ai/bots/modal.vue @@ -3,18 +3,12 @@ import type { BotInfo } from '@easyflow/types'; import type { SaveBotParams, UpdateBotParams } from '#/api/ai/bot'; -import { ref } from 'vue'; +import { computed, nextTick, ref } from 'vue'; +import { EasyFlowFormModal } from '@easyflow/common-ui'; import { $t } from '@easyflow/locales'; -import { - ElButton, - ElDialog, - ElForm, - ElFormItem, - ElInput, - ElMessage, -} from 'element-plus'; +import { ElForm, ElFormItem, ElInput, ElMessage } from 'element-plus'; import { tryit } from 'radash'; import { saveBot, updateBotApi } from '#/api/ai/bot'; @@ -23,98 +17,334 @@ import UploadAvatar from '#/components/upload/UploadAvatar.vue'; const emit = defineEmits(['success']); -const initialFormData = { - icon: '', - title: '', +const createInitialFormData = (): SaveBotParams => ({ alias: '', - description: '', categoryId: '', + description: '', + icon: '', status: 1, -}; + title: '', +}); + const dialogVisible = ref(false); const dialogType = ref<'create' | 'edit'>('create'); const formRef = ref>(); -const formData = ref(initialFormData); -const rules = { - title: [{ required: true, message: $t('message.required'), trigger: 'blur' }], - alias: [{ required: true, message: $t('message.required'), trigger: 'blur' }], -}; +const formData = ref(createInitialFormData()); const loading = ref(false); -const handleSubmit = async () => { +const rules = { + alias: [{ required: true, message: $t('message.required'), trigger: 'blur' }], + title: [{ required: true, message: $t('message.required'), trigger: 'blur' }], +}; + +const dialogTitle = computed(() => { + return `${$t(`button.${dialogType.value}`)}${$t('bot.chatAssistant')}`; +}); + +const dialogDescription = computed(() => { + return dialogType.value === 'create' + ? $t('bot.modal.createDescription') + : $t('bot.modal.editDescription'); +}); + +async function handleSubmit() { + const valid = await formRef.value?.validate().catch(() => false); + if (!valid) { + return; + } + loading.value = true; const [err, res] = await tryit( dialogType.value === 'create' ? saveBot : updateBotApi, - )(formData.value as any); + )(formData.value as SaveBotParams & UpdateBotParams); if (!err && res.errorCode === 0) { emit('success'); - ElMessage.success($t('message.saveOkMessage')); + ElMessage.success(res.message || $t('message.saveOkMessage')); dialogVisible.value = false; + loading.value = false; + return; } + + ElMessage.error(res?.message || $t('message.saveFail')); loading.value = false; -}; +} + +async function open(type: 'create' | 'edit', bot?: BotInfo) { + formData.value = bot + ? { + ...createInitialFormData(), + alias: bot.alias, + categoryId: bot.categoryId, + description: bot.description, + icon: bot.icon, + id: bot.id, + status: bot.status, + title: bot.title, + } + : createInitialFormData(); + dialogType.value = type; + dialogVisible.value = true; + + await nextTick(); + formRef.value?.clearValidate(); +} defineExpose({ - open(type: typeof dialogType.value, bot?: BotInfo) { - formData.value = bot - ? { - id: bot.id, - icon: bot.icon, - title: bot.title, - alias: bot.alias, - description: bot.description, - categoryId: bot.categoryId, - status: bot.status, - } - : initialFormData; - dialogType.value = type; - dialogVisible.value = true; - }, + open, }); + + diff --git a/easyflow-ui-admin/app/src/views/ai/bots/pages/setting/PromptChoreChatModal.vue b/easyflow-ui-admin/app/src/views/ai/bots/pages/setting/PromptChoreChatModal.vue index 7f3a174..8944942 100644 --- a/easyflow-ui-admin/app/src/views/ai/bots/pages/setting/PromptChoreChatModal.vue +++ b/easyflow-ui-admin/app/src/views/ai/bots/pages/setting/PromptChoreChatModal.vue @@ -1,9 +1,10 @@ - + diff --git a/easyflow-ui-admin/app/src/views/ai/documentCollection/ChunkDocumentTable.vue b/easyflow-ui-admin/app/src/views/ai/documentCollection/ChunkDocumentTable.vue index fc3889b..ed9f25b 100644 --- a/easyflow-ui-admin/app/src/views/ai/documentCollection/ChunkDocumentTable.vue +++ b/easyflow-ui-admin/app/src/views/ai/documentCollection/ChunkDocumentTable.vue @@ -1,12 +1,12 @@ diff --git a/easyflow-ui-admin/app/src/views/ai/documentCollection/FaqCategoryDialog.vue b/easyflow-ui-admin/app/src/views/ai/documentCollection/FaqCategoryDialog.vue index a483b58..b507e72 100644 --- a/easyflow-ui-admin/app/src/views/ai/documentCollection/FaqCategoryDialog.vue +++ b/easyflow-ui-admin/app/src/views/ai/documentCollection/FaqCategoryDialog.vue @@ -1,16 +1,10 @@ diff --git a/easyflow-ui-admin/app/src/views/ai/documentCollection/FaqEditDialog.vue b/easyflow-ui-admin/app/src/views/ai/documentCollection/FaqEditDialog.vue index 711909c..ef531a6 100644 --- a/easyflow-ui-admin/app/src/views/ai/documentCollection/FaqEditDialog.vue +++ b/easyflow-ui-admin/app/src/views/ai/documentCollection/FaqEditDialog.vue @@ -3,13 +3,12 @@ import type { IDomEditor } from '@wangeditor/editor'; import { nextTick, onBeforeUnmount, ref, shallowRef, watch } from 'vue'; +import { EasyFlowFormModal } from '@easyflow/common-ui'; import { $t } from '@easyflow/locales'; import { Editor, Toolbar } from '@wangeditor/editor-for-vue'; import DOMPurify from 'dompurify'; import { - ElButton, - ElDialog, ElForm, ElFormItem, ElInput, @@ -189,15 +188,20 @@ onBeforeUnmount(() => { diff --git a/easyflow-ui-admin/app/src/views/ai/plugin/CategoryPluginModal.vue b/easyflow-ui-admin/app/src/views/ai/plugin/CategoryPluginModal.vue index 33f60e0..8bd32dc 100644 --- a/easyflow-ui-admin/app/src/views/ai/plugin/CategoryPluginModal.vue +++ b/easyflow-ui-admin/app/src/views/ai/plugin/CategoryPluginModal.vue @@ -3,9 +3,9 @@ import type { FormInstance } from 'element-plus'; import { onMounted, ref } from 'vue'; +import { EasyFlowFormModal } from '@easyflow/common-ui'; + import { - ElButton, - ElDialog, ElForm, ElFormItem, ElMessage, @@ -87,16 +87,25 @@ function closeDialog() { diff --git a/easyflow-ui-admin/app/src/views/ai/plugin/Plugin.vue b/easyflow-ui-admin/app/src/views/ai/plugin/Plugin.vue index ff73c25..499b588 100644 --- a/easyflow-ui-admin/app/src/views/ai/plugin/Plugin.vue +++ b/easyflow-ui-admin/app/src/views/ai/plugin/Plugin.vue @@ -4,12 +4,11 @@ import type { ActionButton } from '#/components/page/CardList.vue'; import { onMounted, ref } from 'vue'; import { useRouter } from 'vue-router'; +import { EasyFlowFormModal } from '@easyflow/common-ui'; import { $t } from '@easyflow/locales'; import { Delete, Edit, Plus } from '@element-plus/icons-vue'; import { - ElButton, - ElDialog, ElForm, ElFormItem, ElInput, @@ -276,27 +275,24 @@ const handleClickCategory = (item: PluginCategory) => { - - + - - - + diff --git a/easyflow-ui-admin/app/src/views/ai/plugin/PluginRunTestModal.vue b/easyflow-ui-admin/app/src/views/ai/plugin/PluginRunTestModal.vue index ee7ecab..0b47117 100644 --- a/easyflow-ui-admin/app/src/views/ai/plugin/PluginRunTestModal.vue +++ b/easyflow-ui-admin/app/src/views/ai/plugin/PluginRunTestModal.vue @@ -1,11 +1,12 @@ - + diff --git a/easyflow-ui-admin/app/src/views/ai/resource/ResourceList.vue b/easyflow-ui-admin/app/src/views/ai/resource/ResourceList.vue index 311a79c..1d78696 100644 --- a/easyflow-ui-admin/app/src/views/ai/resource/ResourceList.vue +++ b/easyflow-ui-admin/app/src/views/ai/resource/ResourceList.vue @@ -3,6 +3,7 @@ import type { FormInstance } from 'element-plus'; import { computed, onMounted, ref } from 'vue'; +import { EasyFlowFormModal } from '@easyflow/common-ui'; import { formatBytes } from '@easyflow/utils'; import { @@ -15,7 +16,6 @@ import { import { ElAvatar, ElButton, - ElDialog, ElDropdown, ElDropdownItem, ElDropdownMenu, @@ -418,16 +418,21 @@ const getSideList = async () => { - { /> - - - + diff --git a/easyflow-ui-admin/app/src/views/ai/resource/ResourceModal.vue b/easyflow-ui-admin/app/src/views/ai/resource/ResourceModal.vue index 49b9eb1..eb2744c 100644 --- a/easyflow-ui-admin/app/src/views/ai/resource/ResourceModal.vue +++ b/easyflow-ui-admin/app/src/views/ai/resource/ResourceModal.vue @@ -3,16 +3,10 @@ import type { FormInstance } from 'element-plus'; import { onMounted, ref } from 'vue'; +import { EasyFlowFormModal } from '@easyflow/common-ui'; import { getResourceType } from '@easyflow/utils'; -import { - ElButton, - ElDialog, - ElForm, - ElFormItem, - ElInput, - ElMessage, -} from 'element-plus'; +import { ElForm, ElFormItem, ElInput, ElMessage } from 'element-plus'; import { api } from '#/api/request'; import DictSelect from '#/components/dict/DictSelect.vue'; @@ -116,19 +110,23 @@ function uploadSuccess(res: any) { diff --git a/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowList.vue b/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowList.vue index c4e1289..97012de 100644 --- a/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowList.vue +++ b/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowList.vue @@ -5,6 +5,8 @@ import type { ActionButton } from '#/components/page/CardList.vue'; import { computed, markRaw, onMounted, ref } from 'vue'; +import { EasyFlowFormModal } from '@easyflow/common-ui'; + import { CopyDocument, Delete, @@ -16,8 +18,6 @@ import { VideoPlay, } from '@element-plus/icons-vue'; import { - ElButton, - ElDialog, ElForm, ElFormItem, ElInput, @@ -404,16 +404,21 @@ function handleHeaderButtonClick(data: any) { - - - - + diff --git a/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowModal.vue b/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowModal.vue index 815b582..3db1b3c 100644 --- a/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowModal.vue +++ b/easyflow-ui-admin/app/src/views/ai/workflow/WorkflowModal.vue @@ -3,15 +3,9 @@ import type { FormInstance, UploadInstance, UploadProps } from 'element-plus'; import { computed, onMounted, ref } from 'vue'; -import { - ElButton, - ElDialog, - ElForm, - ElFormItem, - ElInput, - ElMessage, - ElUpload, -} from 'element-plus'; +import { EasyFlowFormModal } from '@easyflow/common-ui'; + +import { ElForm, ElFormItem, ElInput, ElMessage, ElUpload } from 'element-plus'; import { api } from '#/api/request'; import DictSelect from '#/components/dict/DictSelect.vue'; @@ -148,9 +142,8 @@ function closeDialog() { diff --git a/easyflow-ui-admin/app/src/views/config/apikey/SysApiKey.vue b/easyflow-ui-admin/app/src/views/config/apikey/SysApiKey.vue index a97256e..3efceba 100644 --- a/easyflow-ui-admin/app/src/views/config/apikey/SysApiKey.vue +++ b/easyflow-ui-admin/app/src/views/config/apikey/SysApiKey.vue @@ -1,7 +1,7 @@ diff --git a/easyflow-ui-admin/app/src/views/config/apikey/SysApiKeyResourcePermissionSelectModal.vue b/easyflow-ui-admin/app/src/views/config/apikey/SysApiKeyResourcePermissionSelectModal.vue index 350b479..aa3aebf 100644 --- a/easyflow-ui-admin/app/src/views/config/apikey/SysApiKeyResourcePermissionSelectModal.vue +++ b/easyflow-ui-admin/app/src/views/config/apikey/SysApiKeyResourcePermissionSelectModal.vue @@ -1,24 +1,17 @@ diff --git a/easyflow-ui-admin/app/src/views/datacenter/BatchImportModal.vue b/easyflow-ui-admin/app/src/views/datacenter/BatchImportModal.vue index 850dd0a..7877296 100644 --- a/easyflow-ui-admin/app/src/views/datacenter/BatchImportModal.vue +++ b/easyflow-ui-admin/app/src/views/datacenter/BatchImportModal.vue @@ -3,15 +3,10 @@ import type { UploadFile } from 'element-plus'; import { onMounted, ref } from 'vue'; +import { EasyFlowPanelModal } from '@easyflow/common-ui'; import { downloadFileFromBlob } from '@easyflow/utils'; -import { - ElButton, - ElDialog, - ElMessage, - ElMessageBox, - ElUpload, -} from 'element-plus'; +import { ElButton, ElMessage, ElMessageBox, ElUpload } from 'element-plus'; import { api } from '#/api/request'; import uploadIcon from '#/assets/datacenter/upload.png'; @@ -99,12 +94,13 @@ function handleUpload() { - + diff --git a/easyflow-ui-admin/app/src/views/datacenter/RecordModal.vue b/easyflow-ui-admin/app/src/views/datacenter/RecordModal.vue index 62e696f..e3630ad 100644 --- a/easyflow-ui-admin/app/src/views/datacenter/RecordModal.vue +++ b/easyflow-ui-admin/app/src/views/datacenter/RecordModal.vue @@ -3,10 +3,10 @@ import type { FormInstance } from 'element-plus'; import { onMounted, ref } from 'vue'; +import { EasyFlowFormModal } from '@easyflow/common-ui'; + import { - ElButton, ElDatePicker, - ElDialog, ElForm, ElFormItem, ElInput, @@ -80,20 +80,24 @@ function closeDialog() { diff --git a/easyflow-ui-admin/app/src/views/system/sysAccount/SysAccountList.vue b/easyflow-ui-admin/app/src/views/system/sysAccount/SysAccountList.vue index bfec70d..21db836 100644 --- a/easyflow-ui-admin/app/src/views/system/sysAccount/SysAccountList.vue +++ b/easyflow-ui-admin/app/src/views/system/sysAccount/SysAccountList.vue @@ -19,6 +19,7 @@ import { import { api } from '#/api/request'; import defaultAvatar from '#/assets/defaultUserAvatar.png'; import HeaderSearch from '#/components/headerSearch/HeaderSearch.vue'; +import ListPageShell from '#/components/page/ListPageShell.vue'; import PageData from '#/components/page/PageData.vue'; import { $t } from '#/locales'; import { useDictStore } from '#/store'; @@ -91,13 +92,14 @@ function isAdmin(data: any) { - + diff --git a/easyflow-ui-admin/app/src/views/system/sysAccount/SysAccountModal.vue b/easyflow-ui-admin/app/src/views/system/sysAccount/SysAccountModal.vue index 52994b0..f969d11 100644 --- a/easyflow-ui-admin/app/src/views/system/sysAccount/SysAccountModal.vue +++ b/easyflow-ui-admin/app/src/views/system/sysAccount/SysAccountModal.vue @@ -3,14 +3,9 @@ import type { FormInstance } from 'element-plus'; import { onMounted, ref } from 'vue'; -import { - ElButton, - ElDialog, - ElForm, - ElFormItem, - ElInput, - ElMessage, -} from 'element-plus'; +import { EasyFlowFormModal } from '@easyflow/common-ui'; + +import { ElForm, ElFormItem, ElInput, ElMessage } from 'element-plus'; import { api } from '#/api/request'; import DictSelect from '#/components/dict/DictSelect.vue'; @@ -101,19 +96,23 @@ function closeDialog() { diff --git a/easyflow-ui-admin/app/src/views/system/sysDept/SysDeptModal.vue b/easyflow-ui-admin/app/src/views/system/sysDept/SysDeptModal.vue index bdd440e..ec40a2d 100644 --- a/easyflow-ui-admin/app/src/views/system/sysDept/SysDeptModal.vue +++ b/easyflow-ui-admin/app/src/views/system/sysDept/SysDeptModal.vue @@ -3,14 +3,9 @@ import type { FormInstance } from 'element-plus'; import { onMounted, ref } from 'vue'; -import { - ElButton, - ElDialog, - ElForm, - ElFormItem, - ElInput, - ElMessage, -} from 'element-plus'; +import { EasyFlowFormModal } from '@easyflow/common-ui'; + +import { ElForm, ElFormItem, ElInput, ElMessage } from 'element-plus'; import { api } from '#/api/request'; import DictSelect from '#/components/dict/DictSelect.vue'; @@ -87,19 +82,23 @@ function closeDialog() { diff --git a/easyflow-ui-admin/app/src/views/system/sysFeedback/sysFeedbackList.vue b/easyflow-ui-admin/app/src/views/system/sysFeedback/sysFeedbackList.vue index 6a07f19..394961d 100644 --- a/easyflow-ui-admin/app/src/views/system/sysFeedback/sysFeedbackList.vue +++ b/easyflow-ui-admin/app/src/views/system/sysFeedback/sysFeedbackList.vue @@ -24,6 +24,7 @@ import { tryit } from 'radash'; import { api } from '#/api/request'; import DictSelect from '#/components/dict/DictSelect.vue'; +import ListPageShell from '#/components/page/ListPageShell.vue'; import PageData from '#/components/page/PageData.vue'; import { $t } from '#/locales'; import { router } from '#/router'; @@ -102,41 +103,42 @@ async function markStatus(row: any, status: number) { - + diff --git a/easyflow-ui-admin/app/src/views/system/sysJob/SysJobList.vue b/easyflow-ui-admin/app/src/views/system/sysJob/SysJobList.vue index 4e187c0..4cae9a2 100644 --- a/easyflow-ui-admin/app/src/views/system/sysJob/SysJobList.vue +++ b/easyflow-ui-admin/app/src/views/system/sysJob/SysJobList.vue @@ -24,6 +24,7 @@ import { import { api } from '#/api/request'; import HeaderSearch from '#/components/headerSearch/HeaderSearch.vue'; +import ListPageShell from '#/components/page/ListPageShell.vue'; import PageData from '#/components/page/PageData.vue'; import { $t } from '#/locales'; import { router } from '#/router'; @@ -149,13 +150,14 @@ function toLogPage(row: any) { - + diff --git a/easyflow-ui-admin/app/src/views/system/sysJob/SysJobModal.vue b/easyflow-ui-admin/app/src/views/system/sysJob/SysJobModal.vue index a21d611..56245b3 100644 --- a/easyflow-ui-admin/app/src/views/system/sysJob/SysJobModal.vue +++ b/easyflow-ui-admin/app/src/views/system/sysJob/SysJobModal.vue @@ -3,15 +3,9 @@ import type { FormInstance } from 'element-plus'; import { onMounted, ref } from 'vue'; -import { - ElAlert, - ElButton, - ElDialog, - ElForm, - ElFormItem, - ElInput, - ElMessage, -} from 'element-plus'; +import { EasyFlowFormModal } from '@easyflow/common-ui'; + +import { ElAlert, ElForm, ElFormItem, ElInput, ElMessage } from 'element-plus'; import { api } from '#/api/request'; import CronPicker from '#/components/cron/CronPicker.vue'; @@ -139,20 +133,24 @@ const str = '"param"'; diff --git a/easyflow-ui-admin/app/src/views/system/sysLog/SysLogList.vue b/easyflow-ui-admin/app/src/views/system/sysLog/SysLogList.vue index e777506..04d26d4 100644 --- a/easyflow-ui-admin/app/src/views/system/sysLog/SysLogList.vue +++ b/easyflow-ui-admin/app/src/views/system/sysLog/SysLogList.vue @@ -6,6 +6,7 @@ import { ref } from 'vue'; import { ElTable, ElTableColumn } from 'element-plus'; import HeaderSearch from '#/components/headerSearch/HeaderSearch.vue'; +import ListPageShell from '#/components/page/ListPageShell.vue'; import PageData from '#/components/page/PageData.vue'; import { $t } from '#/locales'; @@ -25,9 +26,10 @@ function reset(formEl?: FormInstance) { - + diff --git a/easyflow-ui-admin/app/src/views/system/sysLog/SysLogModal.vue b/easyflow-ui-admin/app/src/views/system/sysLog/SysLogModal.vue index a216b32..dd0e913 100644 --- a/easyflow-ui-admin/app/src/views/system/sysLog/SysLogModal.vue +++ b/easyflow-ui-admin/app/src/views/system/sysLog/SysLogModal.vue @@ -3,14 +3,9 @@ import type { FormInstance } from 'element-plus'; import { onMounted, ref } from 'vue'; -import { - ElButton, - ElDialog, - ElForm, - ElFormItem, - ElInput, - ElMessage, -} from 'element-plus'; +import { EasyFlowFormModal } from '@easyflow/common-ui'; + +import { ElForm, ElFormItem, ElInput, ElMessage } from 'element-plus'; import { api } from '#/api/request'; import { $t } from '#/locales'; @@ -79,19 +74,23 @@ function closeDialog() { diff --git a/easyflow-ui-admin/app/src/views/system/sysMenu/SysMenuModal.vue b/easyflow-ui-admin/app/src/views/system/sysMenu/SysMenuModal.vue index fd1004d..815a27b 100644 --- a/easyflow-ui-admin/app/src/views/system/sysMenu/SysMenuModal.vue +++ b/easyflow-ui-admin/app/src/views/system/sysMenu/SysMenuModal.vue @@ -3,11 +3,9 @@ import type { FormInstance } from 'element-plus'; import { onMounted, ref } from 'vue'; -import { IconPicker } from '@easyflow/common-ui'; +import { EasyFlowFormModal, IconPicker } from '@easyflow/common-ui'; import { - ElButton, - ElDialog, ElForm, ElFormItem, ElInput, @@ -103,20 +101,24 @@ function closeDialog() { diff --git a/easyflow-ui-admin/app/src/views/system/sysPosition/SysPositionList.vue b/easyflow-ui-admin/app/src/views/system/sysPosition/SysPositionList.vue index c4fdcb3..9db1a9e 100644 --- a/easyflow-ui-admin/app/src/views/system/sysPosition/SysPositionList.vue +++ b/easyflow-ui-admin/app/src/views/system/sysPosition/SysPositionList.vue @@ -17,6 +17,7 @@ import { import { api } from '#/api/request'; import HeaderSearch from '#/components/headerSearch/HeaderSearch.vue'; +import ListPageShell from '#/components/page/ListPageShell.vue'; import PageData from '#/components/page/PageData.vue'; import { $t } from '#/locales'; import { useDictStore } from '#/store'; @@ -124,13 +125,14 @@ function remove(row: any) { - + diff --git a/easyflow-ui-admin/app/src/views/system/sysPosition/SysPositionModal.vue b/easyflow-ui-admin/app/src/views/system/sysPosition/SysPositionModal.vue index 7a8acc6..43448e6 100644 --- a/easyflow-ui-admin/app/src/views/system/sysPosition/SysPositionModal.vue +++ b/easyflow-ui-admin/app/src/views/system/sysPosition/SysPositionModal.vue @@ -3,9 +3,9 @@ import type { FormInstance } from 'element-plus'; import { ref } from 'vue'; +import { EasyFlowFormModal } from '@easyflow/common-ui'; + import { - ElButton, - ElDialog, ElForm, ElFormItem, ElInput, @@ -94,20 +94,24 @@ function closeDialog() { diff --git a/easyflow-ui-admin/app/src/views/system/sysRole/SysRoleList.vue b/easyflow-ui-admin/app/src/views/system/sysRole/SysRoleList.vue index f8f6337..2cff697 100644 --- a/easyflow-ui-admin/app/src/views/system/sysRole/SysRoleList.vue +++ b/easyflow-ui-admin/app/src/views/system/sysRole/SysRoleList.vue @@ -17,6 +17,7 @@ import { import { api } from '#/api/request'; import HeaderSearch from '#/components/headerSearch/HeaderSearch.vue'; +import ListPageShell from '#/components/page/ListPageShell.vue'; import PageData from '#/components/page/PageData.vue'; import { $t } from '#/locales'; import { useDictStore } from '#/store'; @@ -89,13 +90,14 @@ function remove(row: any) { - + diff --git a/easyflow-ui-admin/app/src/views/system/sysRole/SysRoleModal.vue b/easyflow-ui-admin/app/src/views/system/sysRole/SysRoleModal.vue index b85e69d..f132adc 100644 --- a/easyflow-ui-admin/app/src/views/system/sysRole/SysRoleModal.vue +++ b/easyflow-ui-admin/app/src/views/system/sysRole/SysRoleModal.vue @@ -3,15 +3,9 @@ import type { FormInstance } from 'element-plus'; import { onMounted, ref } from 'vue'; -import { - ElButton, - ElDialog, - ElForm, - ElFormItem, - ElInput, - ElMessage, - ElSwitch, -} from 'element-plus'; +import { EasyFlowFormModal } from '@easyflow/common-ui'; + +import { ElForm, ElFormItem, ElInput, ElMessage, ElSwitch } from 'element-plus'; import { api } from '#/api/request'; import DictSelect from '#/components/dict/DictSelect.vue'; @@ -95,19 +89,23 @@ function getDeptIds(roleId: any) { diff --git a/easyflow-ui-admin/packages/@core/base/design/src/css/global.css b/easyflow-ui-admin/packages/@core/base/design/src/css/global.css index fb32b21..2703dbc 100644 --- a/easyflow-ui-admin/packages/@core/base/design/src/css/global.css +++ b/easyflow-ui-admin/packages/@core/base/design/src/css/global.css @@ -149,6 +149,109 @@ .card-box { @apply bg-card text-card-foreground border-border rounded-xl border; } + + .easyflow-modal-form { + display: flex; + flex-direction: column; + gap: 12px; + } + + .easyflow-modal-form--compact { + gap: 10px; + } + + .easyflow-modal-section { + background: hsl(var(--modal-content-surface-strong)); + border: 1px solid hsl(var(--modal-divider)); + border-radius: 14px; + box-shadow: none; + padding: 14px; + } + + .easyflow-modal-grid { + display: grid; + gap: 14px 16px; + } + + .easyflow-modal-grid--2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .easyflow-modal-field-tip { + color: hsl(var(--text-muted)); + font-size: 11px; + line-height: 1.5; + margin-top: 4px; + } + + .easyflow-modal-form .el-form-item { + margin-bottom: 0; + } + + .easyflow-modal-form .el-form-item__label { + color: hsl(var(--text-strong)); + font-size: 12px; + font-weight: 600; + line-height: 1.4; + padding-bottom: 6px; + } + + .easyflow-modal-form .el-input__wrapper, + .easyflow-modal-form .el-select__wrapper, + .easyflow-modal-form .el-textarea__inner, + .easyflow-modal-form .el-date-editor.el-input__wrapper { + background: hsl(var(--input-background)); + border-radius: 12px; + box-shadow: inset 0 0 0 1px hsl(var(--input) / 0.92); + transition: + box-shadow 0.2s ease, + border-color 0.2s ease, + transform 0.2s ease; + } + + .easyflow-modal-form .el-input__wrapper, + .easyflow-modal-form .el-select__wrapper, + .easyflow-modal-form .el-date-editor.el-input__wrapper { + min-height: 42px; + } + + .easyflow-modal-form .el-textarea__inner { + min-height: 96px; + padding: 10px 12px; + } + + .easyflow-modal-form .el-input__wrapper:hover, + .easyflow-modal-form .el-select__wrapper:hover, + .easyflow-modal-form .el-textarea__inner:hover, + .easyflow-modal-form .el-date-editor.el-input__wrapper:hover { + box-shadow: inset 0 0 0 1px hsl(var(--primary) / 0.18); + } + + .easyflow-modal-form .el-input__wrapper.is-focus, + .easyflow-modal-form .el-select__wrapper.is-focused, + .easyflow-modal-form .el-textarea__inner:focus, + .easyflow-modal-form .el-date-editor.el-input__wrapper.is-focus { + box-shadow: + inset 0 0 0 1px hsl(var(--primary) / 0.72), + 0 0 0 4px hsl(var(--primary) / 0.12); + } + + .easyflow-modal-form .el-form-item.is-error .el-input__wrapper, + .easyflow-modal-form .el-form-item.is-error .el-select__wrapper, + .easyflow-modal-form .el-form-item.is-error .el-textarea__inner, + .easyflow-modal-form + .el-form-item.is-error + .el-date-editor.el-input__wrapper { + box-shadow: + inset 0 0 0 1px hsl(var(--destructive) / 0.8), + 0 0 0 4px hsl(var(--destructive) / 0.08); + } + + @media (max-width: 768px) { + .easyflow-modal-grid--2 { + grid-template-columns: 1fr; + } + } } html.invert-mode { diff --git a/easyflow-ui-admin/packages/@core/base/design/src/design-tokens/dark.css b/easyflow-ui-admin/packages/@core/base/design/src/design-tokens/dark.css index 792b2e1..95b804f 100644 --- a/easyflow-ui-admin/packages/@core/base/design/src/design-tokens/dark.css +++ b/easyflow-ui-admin/packages/@core/base/design/src/design-tokens/dark.css @@ -2,11 +2,11 @@ .dark[data-theme='custom'], .dark[data-theme='default'] { /* Default background color of ...etc */ - --background: 222.34deg 10.43% 12.27%; + --background: 222 16% 10.5%; /* 主体区域背景色 */ - --background-deep: 220deg 13.06% 9%; - --foreground: 0 0% 95%; + --background-deep: 220 18% 8.6%; + --foreground: 210 18% 95%; /* Background color for */ --card: 222.34deg 10.43% 12.27%; @@ -73,12 +73,12 @@ --heavy-foreground: var(--accent-foreground); /* Default border color */ - --border: 240 3.7% 22%; + --border: 220 10% 21%; /* Border color for inputs such as ,