From 542f449b3739baea172207bb1eef03d0446954ed Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Thu, 6 Aug 2026 13:13:42 +0800 Subject: [PATCH] feat(web-admin): wire OA apps page to ep pastel icon picker. Co-authored-by: Cursor --- .../src/views/oa-approval/apps/index.vue | 108 +----------------- 1 file changed, 5 insertions(+), 103 deletions(-) diff --git a/web-admin/src/views/oa-approval/apps/index.vue b/web-admin/src/views/oa-approval/apps/index.vue index 29663600..cea781b6 100644 --- a/web-admin/src/views/oa-approval/apps/index.vue +++ b/web-admin/src/views/oa-approval/apps/index.vue @@ -68,9 +68,7 @@
- - - + {{ row.appName }} @@ -155,29 +153,7 @@ >
-
- - - -
- - - - 上传图片 - - - - - 换底色 - -
-

中间图标固定,底色打开时随机;可换底色或上传自定义图片

-
+
@@ -266,7 +242,6 @@ import { computed, onActivated, onMounted, reactive, ref } from 'vue' import { useRouter } from 'vue-router' import { ElMessage, ElMessageBox } from 'element-plus' - import type { UploadRequestOptions } from 'element-plus' import { Plus, Close, @@ -278,10 +253,10 @@ Upload, Folder, Search, - Refresh, CopyDocument } from '@element-plus/icons-vue' - import { fetchUploadAttachment } from '@/api/business' + import OaAppIcon from '@/components/oa-approval/OaAppIcon.vue' + import OaAppIconPicker from '@/components/oa-approval/OaAppIconPicker.vue' import { fetchCopyOaApp, fetchCreateOaApp, @@ -293,7 +268,7 @@ fetchPublishOaApp, fetchUpdateOaApp } from '@/api/oaApproval' - import { pickRandomOaAppIconUrl, resolveOaAppIconUrl } from '@/utils/oa-app-icons' + import { pickRandomOaAppIconUrl } from '@/utils/oa-app-icons' import { watchDebounced } from '@vueuse/core' defineOptions({ name: 'OaApprovalApps' }) @@ -310,7 +285,6 @@ const isEdit = ref(false) const editingId = ref(null) const submitLoading = ref(false) - const iconUploading = ref(false) const formRef = ref() const formData = reactive({ appName: '', @@ -416,35 +390,6 @@ formRef.value?.clearValidate?.() } - function randomizeIcon() { - formData.iconUrl = pickRandomOaAppIconUrl() - } - - async function uploadIcon(options: UploadRequestOptions) { - const file = options.file as File - if (!file?.type?.startsWith('image/')) { - ElMessage.warning('请上传图片文件') - return - } - iconUploading.value = true - try { - const fd = new FormData() - fd.append('file', file) - const res: any = await fetchUploadAttachment(fd) - const url = res?.fileUrl || res?.data?.fileUrl - if (!url) { - ElMessage.error('上传失败,未返回地址') - return - } - formData.iconUrl = url - options.onSuccess?.(res) - } catch (e) { - options.onError?.(e as any) - } finally { - iconUploading.value = false - } - } - async function handleSubmit() { await formRef.value?.validate?.() submitLoading.value = true @@ -758,13 +703,6 @@ height: 40px; overflow: hidden; border-radius: 10px; - - img { - display: block; - width: 100%; - height: 100%; - object-fit: cover; - } } .oa-app-card__icon--add { @@ -821,42 +759,6 @@ } } - .oa-icon-picker { - display: flex; - flex-wrap: wrap; - gap: 12px; - align-items: center; - } - - .oa-icon-picker__preview { - display: block; - width: 80px; - height: 80px; - overflow: hidden; - border-radius: 16px; - box-shadow: 0 1px 3px rgb(15 23 42 / 8%); - - img { - display: block; - width: 100%; - height: 100%; - object-fit: cover; - } - } - - .oa-icon-picker__actions { - display: flex; - flex-wrap: wrap; - gap: 8px; - } - - .oa-icon-picker__tip { - flex-basis: 100%; - margin: 0; - color: var(--mint-text-muted, #94a3b8); - font-size: 12px; - } - .oa-app-dialog-form { :deep(.el-form-item) { margin-bottom: 0;