From 68caa042090726dbbccbf9c0e10f8b274756ecf9 Mon Sep 17 00:00:00 2001 From: xingyu4j Date: Fri, 26 Jun 2026 18:33:45 +0800 Subject: [PATCH] fix: lint --- .../src/components/area/area-cascader.vue | 3 +- .../src/views/ai/image/index/modules/card.vue | 6 +- .../task/task-components/ServiceTask.vue | 3 +- .../child-process-node-config.vue | 9 +- .../modules/http-request-setting.vue | 2 +- .../bpm/model/form/modules/extra-setting.vue | 26 +- .../bpm/model/form/modules/form-design.vue | 6 +- .../modules/category-draggable-model.vue | 2 +- .../detail/modules/operation-button.vue | 12 +- .../detail/modules/time-line.vue | 124 ++++---- .../components/user/recommend-card-dialog.vue | 6 +- .../im/home/components/user/user-avatar.vue | 79 ++--- .../home/components/user/user-info-card.vue | 92 +++--- .../im/home/components/user/user-info.vue | 284 ++++++++++-------- apps/web-antd/src/views/infra/build/index.vue | 2 +- .../src/views/iot/alert/record/data.ts | 2 +- .../product/spu/components/spu-showcase.vue | 6 +- .../combination/components/showcase.vue | 6 +- .../components/mobile/product-list/index.vue | 7 +- .../components/magic-cube-editor/util.ts | 1 + .../promotion/point/components/showcase.vue | 6 +- .../promotion/seckill/components/showcase.vue | 6 +- .../src/views/mes/wm/materialstock/data.ts | 6 +- .../src/adapter/component/date-picker.ts | 4 +- .../src/components/area/area-cascader.vue | 3 +- .../task/task-components/ServiceTask.vue | 3 +- .../child-process-node-config.vue | 5 +- .../bpm/model/form/modules/extra-setting.vue | 26 +- .../detail/modules/operation-button.vue | 8 +- .../src/views/iot/alert/record/data.ts | 2 +- .../product/spu/components/spu-showcase.vue | 6 +- .../combination/components/showcase.vue | 6 +- .../component-container-property.vue | 4 +- .../components/magic-cube-editor/util.ts | 1 + .../src/views/mes/wm/materialstock/data.ts | 6 +- .../src/components/area/area-cascader.vue | 3 +- .../task/task-components/ServiceTask.vue | 3 +- .../nodes-config/user-task-node-config.vue | 8 +- .../src/views/iot/alert/record/data.ts | 2 +- .../components/magic-cube-editor/util.ts | 1 + .../src/views/mes/wm/materialstock/data.ts | 6 +- 41 files changed, 426 insertions(+), 367 deletions(-) diff --git a/apps/web-antd/src/components/area/area-cascader.vue b/apps/web-antd/src/components/area/area-cascader.vue index d015cc922..8c757732e 100644 --- a/apps/web-antd/src/components/area/area-cascader.vue +++ b/apps/web-antd/src/components/area/area-cascader.vue @@ -91,8 +91,7 @@ const handleChange: NonNullable = (value) => { const path = Array.isArray(value[0]) ? value[0] : value; const leafValue = path.at(-1); - const areaId = - typeof leafValue === 'number' ? leafValue : Number(leafValue); + const areaId = typeof leafValue === 'number' ? leafValue : Number(leafValue); emit('update:modelValue', Number.isNaN(areaId) ? undefined : areaId); }; diff --git a/apps/web-antd/src/views/ai/image/index/modules/card.vue b/apps/web-antd/src/views/ai/image/index/modules/card.vue index 8f83b6bc3..e9149f49b 100644 --- a/apps/web-antd/src/views/ai/image/index/modules/card.vue +++ b/apps/web-antd/src/views/ai/image/index/modules/card.vue @@ -97,11 +97,7 @@ onMounted(async () => { > - diff --git a/apps/web-antd/src/views/bpm/components/bpmn-process-designer/package/penal/task/task-components/ServiceTask.vue b/apps/web-antd/src/views/bpm/components/bpmn-process-designer/package/penal/task/task-components/ServiceTask.vue index d15451301..29c77bab2 100644 --- a/apps/web-antd/src/views/bpm/components/bpmn-process-designer/package/penal/task/task-components/ServiceTask.vue +++ b/apps/web-antd/src/views/bpm/components/bpmn-process-designer/package/penal/task/task-components/ServiceTask.vue @@ -1,6 +1,5 @@ - - diff --git a/apps/web-antd/src/views/im/home/components/user/user-info-card.vue b/apps/web-antd/src/views/im/home/components/user/user-info-card.vue index ec33489ed..7c73ced88 100644 --- a/apps/web-antd/src/views/im/home/components/user/user-info-card.vue +++ b/apps/web-antd/src/views/im/home/components/user/user-info-card.vue @@ -1,93 +1,95 @@ @@ -99,10 +101,14 @@ function handleSendMessage() { - 关系态由 isSelf / isActiveFriend 派生 relation prop 透到 UserInfo;删除 / 加好友 / 备注落库都在 UserInfo 内闭环 --> -
+
-import type { User } from '../../types' +import type { User } from '../../types'; -import { computed, h, nextTick, ref, watch } from 'vue' +import type { SystemUserApi } from '#/api/system/user'; -import { confirm } from '@vben/common-ui' -import { DICT_TYPE } from '@vben/constants' -import { getDictLabel } from '@vben/hooks' -import { IconifyIcon as Icon } from '@vben/icons' +import { computed, h, nextTick, ref, watch } from 'vue'; -import { Button, Checkbox, Dropdown, Input, Menu, message } from 'ant-design-vue' +import { confirm } from '@vben/common-ui'; +import { DICT_TYPE } from '@vben/constants'; +import { getDictLabel } from '@vben/hooks'; +import { IconifyIcon as Icon } from '@vben/icons'; -import { getSimpleUser, type SystemUserApi } from '#/api/system/user' -import { formatDate } from '#/views/im/utils/time' +import { + Button, + Checkbox, + Dropdown, + Input, + Menu, + message, +} from 'ant-design-vue'; -import { ImFriendAddSource } from '../../../utils/constants' -import { toUserCardTarget } from '../../../utils/message' -import { getGenderColor, getGenderIcon } from '../../../utils/user' -import { useFriendStore } from '../../store/friendStore' -import { FriendAddDialog } from '../friend' -import RecommendCardDialog from './recommend-card-dialog.vue' -import UserAvatar from './user-avatar.vue' +import { getSimpleUser } from '#/api/system/user'; +import { formatDate } from '#/views/im/utils/time'; -defineOptions({ name: 'ImUserInfo' }) +import { ImFriendAddSource } from '../../../utils/constants'; +import { toUserCardTarget } from '../../../utils/message'; +import { getGenderColor, getGenderIcon } from '../../../utils/user'; +import { useFriendStore } from '../../store/friendStore'; +import { FriendAddDialog } from '../friend'; +import RecommendCardDialog from './recommend-card-dialog.vue'; +import UserAvatar from './user-avatar.vue'; + +defineOptions({ name: 'ImUserInfo' }); const props = withDefaults( defineProps<{ /** 加好友来源;默认 SEARCH;参见 ImFriendAddSource */ - addSource?: number + addSource?: number; /** 来源附带信息:addSource=GROUP(群聊)时传群名,用于「我是 XX 群的 YY」预填话术 */ - addSourceExtra?: string + addSourceExtra?: string; /** 备注:仅 relation=friend 时有效;空串 → 显示"添加备注"占位 */ - displayName?: string + displayName?: string; /** UserAvatar 预览层 z-index;放在高 z-index 浮层(如 UserInfoCard)里需手动抬高 */ - previewZIndex?: number - relation?: UserInfoRelation + previewZIndex?: number; + relation?: UserInfoRelation; /** 起手用户:至少要有 id;性别 / 部门由组件按 id 懒拉合并补齐 */ - user: null | User + user: null | User; }>(), { addSource: ImFriendAddSource.SEARCH, addSourceExtra: '', displayName: '', previewZIndex: 2000, - relation: 'readonly' - } -) + relation: 'readonly', + }, +); const emit = defineEmits<{ /** 用户点"发消息":导航 / 关浮层等场景相关动作由父级承担(比如 UserInfoCard 要 close) */ - chat: [user: User] + chat: [user: User]; /** 删除联系人成功后通知父级(confirm + 调 store 都在本组件内做完):父级关浮层 / 清选中等 */ - deleted: [user: User] + deleted: [user: User]; /** 备注落库成功后通知父级,用于同步父级持有的本地 FriendLite / Friend 副本(如 contact 页的 selection) */ - saved: [value: string] -}>() + saved: [value: string]; +}>(); /** * 关系态:决定备注行 / 右上 "..." 菜单 / 底部动作区的内容 @@ -62,31 +71,35 @@ const emit = defineEmits<{ * - self: 单按钮"不能和自己聊天" disabled * - readonly: 不渲染备注 / 菜单 / 动作区,仅展示头部信息 */ -export type UserInfoRelation = 'friend' | 'readonly' | 'self' | 'stranger' +export type UserInfoRelation = 'friend' | 'readonly' | 'self' | 'stranger'; -const friendStore = useFriendStore() +const friendStore = useFriendStore(); -const full = ref(props.user) // 起手 user + getSimpleUser 合并后的完整对象(性别 / 部门补齐用) +const full = ref(props.user); // 起手 user + getSimpleUser 合并后的完整对象(性别 / 部门补齐用) /** 主标题:备注优先(好友场景),其次原昵称 */ -const headerName = computed(() => props.displayName || full.value?.nickname || '') +const headerName = computed( + () => props.displayName || full.value?.nickname || '', +); -const deptText = computed(() => full.value?.deptName || '-') +const deptText = computed(() => full.value?.deptName || '-'); -const genderIcon = computed(() => getGenderIcon(full.value?.sex)) -const genderColor = computed(() => getGenderColor(full.value?.sex)) +const genderIcon = computed(() => getGenderIcon(full.value?.sex)); +const genderColor = computed(() => getGenderColor(full.value?.sex)); /** 好友关系记录:来源 / 添加时间 / 是否拉黑从这里取(仅 friend 态下才有意义) */ const friendInfo = computed(() => - props.user?.id ? friendStore.getFriend(props.user.id) : undefined -) + props.user?.id ? friendStore.getFriend(props.user.id) : undefined, +); /** 是否已拉黑:菜单项「加入黑名单 / 移出黑名单」按这个切换 */ -const isBlocked = computed(() => !!friendInfo.value?.blocked) +const isBlocked = computed(() => !!friendInfo.value?.blocked); -const editingRemark = ref(false) // 备注内联编辑:editingRemark 控制输入态;user 切换时由下面的 watch 复位避免脏态泄漏 -const remarkInput = ref('') -const remarkInputRef = ref void; select?: () => void }>(null) +const editingRemark = ref(false); // 备注内联编辑:editingRemark 控制输入态;user 切换时由下面的 watch 复位避免脏态泄漏 +const remarkInput = ref(''); +const remarkInputRef = ref void; select?: () => void }>( + null, +); /** * user.id 变化的统一处理: @@ -97,30 +110,30 @@ const remarkInputRef = ref void; select?: () => void }>(nu watch( () => props.user?.id, async (id) => { - full.value = props.user - editingRemark.value = false + full.value = props.user; + editingRemark.value = false; if (!id) { - return + return; } - const data = (await getSimpleUser(id)) as User + const data = (await getSimpleUser(id)) as User; if (props.user?.id !== id) { - return + return; } - full.value = { ...props.user, ...data } + full.value = { ...props.user, ...data }; }, - { immediate: true } -) + { immediate: true }, +); /** 备注行点击:进编辑态 + 把当前备注灌进输入框,下一帧把焦点 / 全选交给 el-input */ async function handleRowClick() { if (editingRemark.value) { - return + return; } - remarkInput.value = props.displayName || '' - editingRemark.value = true - await nextTick() - remarkInputRef.value?.focus() - remarkInputRef.value?.select?.() + remarkInput.value = props.displayName || ''; + editingRemark.value = true; + await nextTick(); + remarkInputRef.value?.focus(); + remarkInputRef.value?.select?.(); } /** @@ -131,61 +144,61 @@ async function handleRowClick() { */ async function saveRemark() { if (!editingRemark.value) { - return + return; } - const userId = props.user?.id + const userId = props.user?.id; if (!userId) { - editingRemark.value = false - return + editingRemark.value = false; + return; } - const next = remarkInput.value.trim() - editingRemark.value = false + const next = remarkInput.value.trim(); + editingRemark.value = false; if (next === (props.displayName || '')) { - return + return; } - await friendStore.setFriendDisplayName(userId, next) - message.success('已更新备注') - emit('saved', next) + await friendStore.setFriendDisplayName(userId, next); + message.success('已更新备注'); + emit('saved', next); } function cancelEditRemark() { - editingRemark.value = false + editingRemark.value = false; } /** 发消息:导航 / 关浮层这些"业务侧"动作交给父级,本组件只负责通知 */ function handleChat() { if (!props.user) { - return + return; } - emit('chat', props.user) + emit('chat', props.user); } /** 占位提示:语音 / 视频聊天能力尚未接入,先以"开发中"友好提示 */ function handleComingSoon(featureName: string) { - message.info(`${featureName} 功能开发中`) + message.info(`${featureName} 功能开发中`); } // ==================== 添加好友 / 删除好友 ==================== -const friendAddDialogRef = ref>() // 加好友弹窗 ref:handleAddFriend 调 open({ presetUser, addSource, addSourceExtra }) 触发 +const friendAddDialogRef = ref>(); // 加好友弹窗 ref:handleAddFriend 调 open({ presetUser, addSource, addSourceExtra }) 触发 -const recommendDialogRef = ref>() // 推荐名片弹窗 ref:handleRecommend 调用 open({ target }) 打开 +const recommendDialogRef = ref>(); // 推荐名片弹窗 ref:handleRecommend 调用 open({ target }) 打开 /** 把他推荐给朋友:弹 RecommendCardDialog 选目标会话 */ function handleRecommend() { if (!props.user?.id) { - return + return; } - const target = toUserCardTarget(full.value) + const target = toUserCardTarget(full.value); if (!target) { - return + return; } - recommendDialogRef.value?.open({ target }) + recommendDialogRef.value?.open({ target }); } /** 加为好友:弹 FriendAddDialog(带预填用户),让用户填申请理由 + 备注后再发申请 */ function handleAddFriend() { if (!props.user?.id) { - return + return; } const presetUser: SystemUserApi.UserSimple = { id: props.user.id, @@ -193,46 +206,49 @@ function handleAddFriend() { avatar: props.user.avatar, sex: props.user.sex, deptId: props.user.deptId, - deptName: props.user.deptName - } as SystemUserApi.UserSimple + deptName: props.user.deptName, + } as SystemUserApi.UserSimple; friendAddDialogRef.value?.open({ presetUser, addSource: props.addSource, - addSourceExtra: props.addSourceExtra - }) + addSourceExtra: props.addSourceExtra, + }); } /** 加入黑名单:confirm → friendStore.blockFriend;后端 FRIEND_BLOCK 推到时由 dispatcher 同步多端 */ async function handleBlock() { if (!props.user?.id) { - return + return; } - const target = props.user + const target = props.user; try { - await confirm(`确定将「${target.nickname || ''}」加入黑名单吗?`, '加入黑名单') + await confirm( + `确定将「${target.nickname || ''}」加入黑名单吗?`, + '加入黑名单', + ); } catch { - return + return; } - await friendStore.blockFriend(target.id) - message.success('已加入黑名单') + await friendStore.blockFriend(target.id); + message.success('已加入黑名单'); } /** 移出黑名单:操作温和不弹 confirm;后端 FRIEND_UNBLOCK 推到时由 dispatcher 同步多端 */ async function handleUnblock() { if (!props.user?.id) { - return + return; } - await friendStore.unblockFriend(props.user.id) - message.success('已移出黑名单') + await friendStore.unblockFriend(props.user.id); + message.success('已移出黑名单'); } /** 删除联系人:弹自定义确认(含「同时清空聊天记录」选项)→ friendStore.deleteFriend → 通知父级关浮层 / 清选中 */ async function handleDeleteFriend() { if (!props.user?.id) { - return + return; } - const target = props.user - const clearConversation = ref(true) + const target = props.user; + const clearConversation = ref(true); try { await confirm({ cancelText: '取消', @@ -244,21 +260,21 @@ async function handleDeleteFriend() { { checked: clearConversation.value, 'onUpdate:checked': (value: boolean) => { - clearConversation.value = value - } + clearConversation.value = value; + }, }, - () => '同时清空聊天记录' - ) + () => '同时清空聊天记录', + ), ]), icon: 'warning', - title: '删除联系人' - }) + title: '删除联系人', + }); } catch { - return + return; } - await friendStore.deleteFriend(target.id, clearConversation.value) - message.success('已删除好友') - emit('deleted', target) + await friendStore.deleteFriend(target.id, clearConversation.value); + message.success('已删除好友'); + emit('deleted', target); } @@ -297,19 +313,31 @@ async function handleDeleteFriend() { class="flex-shrink-0" />
-
+
-
昵称:{{ full?.nickname }}
+
+ 昵称:{{ full?.nickname }} +
部门:{{ deptText }}
- +
- +