refactor(ui): 剩余编辑/新增类表单弹窗统一改为右侧抽屉

承接 CrudTable formMode 默认 drawer,把页面自带的表单弹窗也统一成抽屉(direction=rtl,尺寸沿用原宽度):批量调整职务 780、编辑角色/编辑用户/支付网关配置 600、编辑工单 720、凭证详情分录编辑 900、申请企业邮箱 420、修改邮箱密码 400、编辑/新增联系人 420、申请 Gitea 账号 420、修改 Gitea 密码/一键迁移头像 400/420、修改名字/修改密码 420、邀请成员 460、修改群名 420、创建群聊 520。

保留居中弹窗(非编辑表单):EntityPicker/MultiEntityPicker 选择面板、应用市场安装与应用-职务绑定(内嵌 CrudTable)、AppConfigPage 的同步/复制/移除确认、拒绝入驻申请、审计日志与站内信详情、资产预览、写信与发送消息。

已部署:102 assets 校验一致,入口 /assets/index-xaOjq6Ha.js。
This commit is contained in:
TermiNexus committed 2026-09-30 00:26:28 +08:00
1 parent f23a7d229f
commit 35d9fb681d
11 files changed
+42 -38

No files matched your search

+2 -2
View File
@@ -384,7 +384,7 @@ watch(visible, (v) => {
</script>
<template>
<el-dialog v-model="visible" :title="dialogTitle" width="780px" destroy-on-close>
<el-drawer v-model="visible" :title="dialogTitle" direction="rtl" :size="780" destroy-on-close>
<div class="batch-pos-grid">
<!-- 目标/员工选择区 -->
<div class="batch-pos-panel">
@@ -434,7 +434,7 @@ watch(visible, (v) => {
批量新增职务
</el-button>
</template>
</el-dialog>
</el-drawer>
</template>
<style scoped>
+4 -4
View File
@@ -265,7 +265,7 @@ const roleList = computed(() => userStore.userInfo?.Roles?.length ? userStore.us
</el-card>
<!-- 修改名字对话框 -->
<el-dialog v-model="nameDialogVisible" title="修改名字" width="420px" :close-on-click-modal="false">
<el-drawer v-model="nameDialogVisible" title="修改名字" direction="rtl" :size="420" :close-on-click-modal="false">
<el-form label-width="80px" @submit.prevent>
<el-form-item label="新名字">
<el-input
@@ -281,10 +281,10 @@ const roleList = computed(() => userStore.userInfo?.Roles?.length ? userStore.us
<el-button @click="nameDialogVisible = false">取消</el-button>
<el-button type="primary" :loading="nameSubmitting" @click="submitName">保存</el-button>
</template>
</el-dialog>
</el-drawer>
<!-- 修改密码对话框 -->
<el-dialog v-model="pwdDialogVisible" title="修改密码" width="420px" :close-on-click-modal="false">
<el-drawer v-model="pwdDialogVisible" title="修改密码" direction="rtl" :size="420" :close-on-click-modal="false">
<el-form label-width="80px" @submit.prevent>
<el-form-item label="旧密码">
<el-input v-model="pwdForm.UserOldPassword" type="password" show-password placeholder="请输入旧密码" />
@@ -306,7 +306,7 @@ const roleList = computed(() => userStore.userInfo?.Roles?.length ? userStore.us
<el-button @click="pwdDialogVisible = false">取消</el-button>
<el-button type="primary" :loading="pwdSubmitting" @click="submitPassword">确认修改</el-button>
</template>
</el-dialog>
</el-drawer>
</div>
</template>
+4 -3
View File
@@ -200,10 +200,11 @@ async function changeStatus(next: number, label: string): Promise<void> {
</div>
<!-- 凭证详情/分录编辑弹窗 -->
<el-dialog
<el-drawer
v-model="detailVisible"
title="凭证详情"
width="900px"
direction="rtl"
:size="900"
:close-on-click-modal="false"
destroy-on-close
>
@@ -302,7 +303,7 @@ async function changeStatus(next: number, label: string): Promise<void> {
</el-button>
<el-button @click="detailVisible = false">关闭</el-button>
</template>
</el-dialog>
</el-drawer>
</template>
<style scoped lang="scss">
+6 -6
View File
@@ -182,7 +182,7 @@ async function submitUploadAvatar(): Promise<void> {
</div>
<!-- 申请弹窗 -->
<el-dialog v-model="applyVisible" title="申请 Gitea 账号" width="420px">
<el-drawer v-model="applyVisible" title="申请 Gitea 账号" direction="rtl" :size="420">
<el-form label-width="90px">
<el-form-item label="用户名">
<el-input v-model="applyForm.GiteaLogin" placeholder="如 zhangsan(3~39 位)" maxlength="39" />
@@ -202,10 +202,10 @@ async function submitUploadAvatar(): Promise<void> {
<el-button @click="applyVisible = false">取消</el-button>
<el-button type="primary" :loading="applying" @click="submitApply">申请</el-button>
</template>
</el-dialog>
</el-drawer>
<!-- 修改密码弹窗 -->
<el-dialog v-model="changePwdVisible" title="修改 Gitea 密码" width="400px">
<el-drawer v-model="changePwdVisible" title="修改 Gitea 密码" direction="rtl" :size="400">
<el-form label-width="90px">
<el-form-item label="新密码">
<el-input v-model="changePwdForm.NewPassword" type="password" show-password placeholder="8~64 位,含字母和数字" />
@@ -218,10 +218,10 @@ async function submitUploadAvatar(): Promise<void> {
<el-button @click="changePwdVisible = false">取消</el-button>
<el-button type="primary" :loading="changingPwd" @click="submitChangePassword">确认修改</el-button>
</template>
</el-dialog>
</el-drawer>
<!-- 头像迁移弹窗 -->
<el-dialog v-model="avatarVisible" title="一键迁移 GERP 头像" width="420px">
<el-drawer v-model="avatarVisible" title="一键迁移 GERP 头像" direction="rtl" :size="420">
<el-form label-width="90px">
<el-form-item label="Gitea 密码">
<el-input v-model="avatarForm.Password" type="password" show-password placeholder="用于认证您的 Gitea 账号" />
@@ -234,7 +234,7 @@ async function submitUploadAvatar(): Promise<void> {
<el-button @click="avatarVisible = false">取消</el-button>
<el-button type="primary" :loading="uploadingAvatar" @click="submitUploadAvatar">开始迁移</el-button>
</template>
</el-dialog>
</el-drawer>
</div>
</template>
+8 -7
View File
@@ -1017,10 +1017,11 @@ function isSelected(id: string): boolean {
</div>
<!-- 申请邮箱弹窗 -->
<el-dialog
<el-drawer
v-model="applyVisible"
:title="`申请企业邮箱${mailboxCount ? `(已申请 ${mailboxCount} / 5)` : ''}`"
width="420px"
direction="rtl"
:size="420"
>
<el-form label-width="80px">
<el-form-item label="邮箱名">
@@ -1039,7 +1040,7 @@ function isSelected(id: string): boolean {
<el-button @click="applyVisible = false">取消</el-button>
<el-button type="primary" @click="submitApply">申请</el-button>
</template>
</el-dialog>
</el-drawer>
<!-- 写信弹窗(回复/转发复用) -->
<el-dialog v-model="composeVisible" title="写信" width="640px">
@@ -1079,7 +1080,7 @@ function isSelected(id: string): boolean {
</el-dialog>
<!-- 改密弹窗 -->
<el-dialog v-model="changePwdVisible" title="修改邮箱密码" width="400px">
<el-drawer v-model="changePwdVisible" title="修改邮箱密码" direction="rtl" :size="400">
<el-form label-width="80px">
<el-form-item label="当前密码">
<el-input v-model="changePwdForm.OldPassword" type="password" show-password placeholder="请输入当前邮箱密码" />
@@ -1095,10 +1096,10 @@ function isSelected(id: string): boolean {
<el-button @click="changePwdVisible = false">取消</el-button>
<el-button type="primary" @click="submitChangePassword">确认修改</el-button>
</template>
</el-dialog>
</el-drawer>
<!-- 联系人新增/编辑弹窗 -->
<el-dialog v-model="contactVisible" :title="contactForm.ContactEmail ? '编辑联系人' : '新增联系人'" width="420px">
<el-drawer v-model="contactVisible" :title="contactForm.ContactEmail ? '编辑联系人' : '新增联系人'" direction="rtl" :size="420">
<el-form label-width="70px">
<el-form-item label="姓名">
<el-input v-model="contactForm.ContactName" placeholder="联系人姓名(可选)" maxlength="128" />
@@ -1111,7 +1112,7 @@ function isSelected(id: string): boolean {
<el-button @click="contactVisible = false">取消</el-button>
<el-button type="primary" :loading="contactSaving" @click="saveContact">保存</el-button>
</template>
</el-dialog>
</el-drawer>
</div>
</template>
+4 -3
View File
@@ -341,10 +341,11 @@ onMounted(() => {
</div>
<!-- 新增/编辑弹窗 -->
<el-dialog
<el-drawer
v-model="editVisible"
:title="isEdit ? `编辑 - ${PLATFORM_LABELS[form.Platform] || form.Platform}` : '新增支付网关配置'"
width="600px"
direction="rtl"
:size="600"
>
<el-form :model="form" label-position="top">
<el-form-item label="平台 *">
@@ -392,7 +393,7 @@ onMounted(() => {
<el-button @click="editVisible = false">取消</el-button>
<el-button type="primary" :loading="saving" @click="saveConfig">保存</el-button>
</template>
</el-dialog>
</el-drawer>
</div>
</template>
+2 -2
View File
@@ -269,7 +269,7 @@ watch(roleUUID, () => {
</template>
<!-- 编辑弹窗 -->
<el-dialog v-model="editDialogVisible" title="编辑角色" width="600px" destroy-on-close>
<el-drawer v-model="editDialogVisible" title="编辑角色" direction="rtl" :size="600" destroy-on-close>
<el-form :model="editForm" label-width="120px" label-position="right">
<el-form-item
v-for="col in formColumns"
@@ -345,7 +345,7 @@ watch(roleUUID, () => {
<el-button @click="editDialogVisible = false">取消</el-button>
<el-button type="primary" :loading="editSubmitting" @click="handleSubmit">保存</el-button>
</template>
</el-dialog>
</el-drawer>
</DetailPage>
</template>
+2 -2
View File
@@ -397,7 +397,7 @@ watch(userUUID, () => {
</template>
<!-- 编辑弹窗:基于列定义动态渲染 -->
<el-dialog v-model="editDialogVisible" title="编辑用户" width="600px" destroy-on-close>
<el-drawer v-model="editDialogVisible" title="编辑用户" direction="rtl" :size="600" destroy-on-close>
<el-form :model="editForm" label-width="120px" label-position="right">
<el-form-item
v-for="col in formColumns"
@@ -480,7 +480,7 @@ watch(userUUID, () => {
<el-button @click="editDialogVisible = false">取消</el-button>
<el-button type="primary" :loading="editSubmitting" @click="handleSubmit">保存</el-button>
</template>
</el-dialog>
</el-drawer>
</DetailPage>
</template>
+4 -3
View File
@@ -197,10 +197,11 @@ watch(
</script>
<template>
<el-dialog
<el-drawer
:model-value="modelValue"
title="新建群聊"
width="520px"
direction="rtl"
:size="520"
:close-on-click-modal="false"
@update:model-value="Emit('update:modelValue', $event)"
@closed="ResetAndLoad"
@@ -262,7 +263,7 @@ watch(
<el-button @click="Close">取消</el-button>
<el-button type="primary" :loading="Submitting" :disabled="!CanSubmit" @click="Submit">创建</el-button>
</template>
</el-dialog>
</el-drawer>
</template>
<style scoped lang="scss">
+4 -4
View File
@@ -990,7 +990,7 @@ onBeforeUnmount(() => {
<GroupCreateDialog v-model="GroupCreateVisible" :entry="Entry" @created="OnGroupCreated" />
<!-- 邀请成员 -->
<el-dialog v-model="InviteVisible" title="邀请成员" width="460px" :close-on-click-modal="false">
<el-drawer v-model="InviteVisible" title="邀请成员" direction="rtl" :size="460" :close-on-click-modal="false">
<el-select
v-model="InviteSelected"
multiple
@@ -1013,16 +1013,16 @@ onBeforeUnmount(() => {
<el-button @click="InviteVisible = false">取消</el-button>
<el-button type="primary" :loading="InviteSubmitting" @click="SubmitInvite">邀请</el-button>
</template>
</el-dialog>
</el-drawer>
<!-- 修改群名 -->
<el-dialog v-model="RenameVisible" title="修改群名" width="420px" :close-on-click-modal="false">
<el-drawer v-model="RenameVisible" title="修改群名" direction="rtl" :size="420" :close-on-click-modal="false">
<el-input v-model="RenameTitle" maxlength="40" show-word-limit placeholder="请输入群名称" />
<template #footer>
<el-button @click="RenameVisible = false">取消</el-button>
<el-button type="primary" :loading="RenameSubmitting" @click="SubmitRename">保存</el-button>
</template>
</el-dialog>
</el-drawer>
</div>
</template>
+2 -2
View File
@@ -261,7 +261,7 @@ onMounted(() => {
</el-card>
<!-- 编辑弹窗 -->
<el-dialog v-model="editVisible" title="编辑工单" width="720px" destroy-on-close>
<el-drawer v-model="editVisible" title="编辑工单" direction="rtl" :size="720" destroy-on-close>
<el-form :model="editRow" label-width="110px" label-position="right">
<el-form-item v-for="col in editableColumns" :key="col.field" :label="col.title">
<!-- entityPicker:指派人等关联实体选择 -->
@@ -309,7 +309,7 @@ onMounted(() => {
<el-button @click="editVisible = false">取消</el-button>
<el-button type="primary" :loading="editSaving" @click="submitEdit">保存</el-button>
</template>
</el-dialog>
</el-drawer>
</div>
</template>