From 38473ab30a55701261f3de6728e6d9d9e4786982 Mon Sep 17 00:00:00 2001 From: WUSIJIAN <13825895+wsj0228@user.noreply.gitee.com> Date: Mon, 8 Dec 2025 14:54:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AF=8C=E6=96=87=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/login-bg.jpg | Bin 0 -> 34696 bytes src/components/editor/index.vue | 120 +++++++++--------- src/utils/request.ts | 10 +- src/views/customerService/account/index.vue | 2 +- .../product/component/editRole.vue | 7 +- .../report/component/exportDialog.vue | 36 +++--- .../script/component/editRole.vue | 2 +- src/views/login/component/account.vue | 4 +- src/views/login/index.vue | 68 ++++++---- 9 files changed, 136 insertions(+), 113 deletions(-) create mode 100644 public/login-bg.jpg diff --git a/public/login-bg.jpg b/public/login-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2aa303a76c0c8662cc2e9bed24b26746cf1f7b1b GIT binary patch literal 34696 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 literal 0 HcmV?d00001 diff --git a/src/components/editor/index.vue b/src/components/editor/index.vue index bcfc822..ea6857c 100644 --- a/src/components/editor/index.vue +++ b/src/components/editor/index.vue @@ -102,6 +102,44 @@ export default defineComponent({ } }; + // 应用禁用状态(只保留表情) + const applyDisableState = () => { + if (!state.editorToolbar || !props.disableExceptEmotion) return; + + nextTick(() => { + // 获取所有工具栏按钮容器 + const toolbarItems = state.editorToolbar!.querySelectorAll('.w-e-bar-item'); + toolbarItems.forEach((item: Element) => { + // 尝试找到按钮上的 tooltip + const button = item.querySelector('button'); + let isEmotionButton = false; + + if (button) { + // 检查 data-tooltip (新版) 或 data-title (旧版) + const tooltip = button.getAttribute('data-tooltip') || button.getAttribute('data-title') || ''; + // 也检查svg或者特定的class,如果有的话。通常表情按钮会有特定的icon + // 这里主要依靠 tooltip 文字匹配 + if (tooltip.includes('表情') || tooltip.toLowerCase().includes('emotion')) { + isEmotionButton = true; + } + } + + // 也可以尝试检查 menu key,但这通常不在 DOM 上直接体现,除非自己加了属性 + // 下面是一个补充策略:如果 item 内部有 emoji 的 svg 或者特定的结构 + + if (!isEmotionButton) { + (item as HTMLElement).style.opacity = '0.4'; + (item as HTMLElement).style.pointerEvents = 'none'; + (item as HTMLElement).style.cursor = 'not-allowed'; + } else { + (item as HTMLElement).style.opacity = '1'; + (item as HTMLElement).style.pointerEvents = 'auto'; + (item as HTMLElement).style.cursor = 'pointer'; + } + }); + }); + }; + // 初始化富文本 const initWangeditor = () => { destroyEditor(); @@ -124,35 +162,11 @@ export default defineComponent({ }); state.isInitialized = true; - - // 初始化后应用禁用状态 - applyDisableState(); - }); - }; - - // 应用禁用状态 - const applyDisableState = () => { - if (!state.editorToolbar || !props.disableExceptEmotion) return; - - nextTick(() => { - const toolbarItems = state.editorToolbar!.querySelectorAll('.w-e-bar-item'); - toolbarItems.forEach((item: Element) => { - const button = item.querySelector('button'); - if (button) { - const dataTitle = button.getAttribute('data-title') || ''; - const isEmotionButton = dataTitle.includes('表情') || dataTitle.toLowerCase().includes('emotion'); - - if (!isEmotionButton) { - (item as HTMLElement).style.opacity = '0.5'; - (item as HTMLElement).style.pointerEvents = 'none'; - (item as HTMLElement).style.cursor = 'not-allowed'; - } else { - (item as HTMLElement).style.opacity = '1'; - (item as HTMLElement).style.pointerEvents = 'auto'; - (item as HTMLElement).style.cursor = 'pointer'; - } - } - }); + + // 如果开启了特殊禁用模式,应用样式 + if (props.disableExceptEmotion) { + applyDisableState(); + } }); }; @@ -192,10 +206,11 @@ export default defineComponent({ // 监听禁用除表情外的状态变化 watch( () => props.disableExceptEmotion, - (disabled) => { - if (state.editor && state.isInitialized) { - applyDisableState(); - } + (val) => { + // 重新初始化或者直接应用样式 + // 为了稳妥,重新初始化以确保工具栏状态正确 + // 但也可以只调用 applyDisableState 如果只是切换禁用状态 + initWangeditor(); } ); @@ -211,39 +226,20 @@ export default defineComponent({ position: relative; } -/* 禁用除表情外的所有工具栏按钮 */ -.disabled-editor :deep(.w-e-bar-item) { - opacity: 0.5; - cursor: not-allowed !important; - pointer-events: none !important; +/* 仅在“只保留表情”模式下应用边框和样式修正 */ +.disabled-editor { + border: 1px solid #dcdfe6; + border-radius: 4px; } -/* 允许表情按钮正常使用 */ -.disabled-editor :deep(.w-e-bar-item[data-title*='表情']), -.disabled-editor :deep(.w-e-bar-item[data-title*='emotion']) { - opacity: 1 !important; - cursor: pointer !important; - pointer-events: auto !important; +.disabled-editor :deep(.w-e-toolbar) { + border-bottom: 1px solid #dcdfe6; + background-color: #f5f7fa; + border-radius: 4px 4px 0 0; } -/* 禁用编辑区域的所有操作(除了通过表情插入) */ .disabled-editor :deep(.w-e-text-container) { - cursor: not-allowed; - user-select: text; /* 允许选择文本 */ -} - -/* 禁用所有菜单项,除了表情相关的 */ -.disabled-editor :deep(.w-e-menu-tooltip:not([data-title*='表情']):not([data-title*='emotion'])) { - opacity: 0.5 !important; - cursor: not-allowed !important; - pointer-events: none !important; -} - -/* 允许表情菜单正常使用 */ -.disabled-editor :deep(.w-e-menu-tooltip[data-title*='表情']), -.disabled-editor :deep(.w-e-menu-tooltip[data-title*='emotion']) { - opacity: 1 !important; - cursor: pointer !important; - pointer-events: auto !important; + border-radius: 0 0 4px 4px; + background-color: #fff; } diff --git a/src/utils/request.ts b/src/utils/request.ts index d68abfc..36c5783 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -149,19 +149,19 @@ const responseErrorHandler = (error: any) => { handleTokenExpired(); break; case 403: - ElMessage.error('没有权限访问该资源'); + // ElMessage.error('没有权限访问该资源'); break; case 404: - ElMessage.error('请求的资源不存在'); + // ElMessage.error('请求的资源不存在'); break; case 500: - ElMessage.error('服务器内部错误'); + // ElMessage.error('服务器内部错误'); break; case 502: - ElMessage.error('网关错误'); + // ElMessage.error('网关错误'); break; case 503: - ElMessage.error('服务不可用'); + // ElMessage.error('服务不可用'); break; default: if (httpStatus >= 400) { diff --git a/src/views/customerService/account/index.vue b/src/views/customerService/account/index.vue index 8e530d2..15946be 100644 --- a/src/views/customerService/account/index.vue +++ b/src/views/customerService/account/index.vue @@ -286,7 +286,7 @@ const onOpenAddRole = () => { /** * 打开编辑客服对话框 */ -const onOpenEditRole = (row: TableDataItem) => { +const onOpenEditRole = (row: any) => { editRoleRef.value?.openDialog(row); }; diff --git a/src/views/customerService/product/component/editRole.vue b/src/views/customerService/product/component/editRole.vue index e5c1592..5eb2c96 100644 --- a/src/views/customerService/product/component/editRole.vue +++ b/src/views/customerService/product/component/editRole.vue @@ -81,7 +81,10 @@ const state = reactive({ // 表单验证规则 const rules: FormRules = { - name: [{ required: true, message: '产品名称不能为空', trigger: 'blur' }, { max: 64, message: '产品名称长度最多 64 个字符', trigger: 'blur' }, 1], + name: [ + { required: true, message: '产品名称不能为空', trigger: 'blur' }, + { max: 64, message: '产品名称长度最多 64 个字符', trigger: 'blur' }, + ], description: [ { required: true, message: '产品详情不能为空', trigger: 'blur' }, { max: 8126, message: '产品详情长度最多8126 个字符', trigger: 'blur' }, @@ -120,7 +123,7 @@ const openDialog = async (row?: ProductFormData) => { * 处理编辑模式的数据获取 * @param id - 产品ID */ -const handleEditMode = async (row) => { +const handleEditMode = async (row: ProductFormData) => { try { state.formData.id = row.id; state.formData.description = row.description; diff --git a/src/views/customerService/report/component/exportDialog.vue b/src/views/customerService/report/component/exportDialog.vue index 1a7e00f..fcba1be 100644 --- a/src/views/customerService/report/component/exportDialog.vue +++ b/src/views/customerService/report/component/exportDialog.vue @@ -1,22 +1,24 @@