From fe06b55a56554f3b405e8e9f5b79734f1c3279a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A5=94=E8=B7=91=E7=9A=84=E9=9D=A2=E6=9D=A1?= <1262327911@qq.com> Date: Wed, 24 May 2023 16:56:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=BB=93=E6=9E=84=EF=BC=8C=E6=96=B0=E5=A2=9E=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/Photos/Private/index.ts | 64 ++++++++++-------- src/packages/index.d.ts | 4 +- .../components/ChartsItemBox/index.vue | 67 +++++++++++++++++-- 3 files changed, 100 insertions(+), 35 deletions(-) diff --git a/src/packages/components/Photos/Private/index.ts b/src/packages/components/Photos/Private/index.ts index e4a65b6f..0577aa66 100644 --- a/src/packages/components/Photos/Private/index.ts +++ b/src/packages/components/Photos/Private/index.ts @@ -55,33 +55,43 @@ const addConfig = { image: 'upload.png', redirectComponent: './components/Informations/Mores/Image', // 虚拟组件路径,尾部不跟 ‘/’,相对于 /packages/index.ts 文件的位置 disabled: true, - clickHandle: (photoConfig: ConfigType) => { - goDialog({ - message: `图片需小于 ${backgroundImageSize}M 且只暂存在浏览器中,请自行对接后端接口!现只编译成 base64 进行渲染,对接后端请返回地址使用!`, - transformOrigin: 'center', - onPositiveCallback: () => { - uploadFile((e: UploadCompletedEventType) => { - // 和上传组件一样配置,更换标题,图片,预设数据 - const packagesStore = usePackagesStore() - const newPhoto = { - ...ImageConfig, - category: ChatCategoryEnum.PRIVATE, - categoryName: ChatCategoryEnumName.PRIVATE, - package: PackagesCategoryEnum.PHOTOS, - chartFrame: ChartFrameEnum.STATIC, - title: e.fileName, - image: e.url, - dataset: e.url, - redirectComponent: './components/Informations/Mores/Image' // 虚拟组件路径,尾部不跟 ‘/’,相对于 /packages/index.ts 文件的位置 - } - userPhotosList.unshift(newPhoto) - // 存储在本地数据中 - setLocalStorage(StoreKey, userPhotosList) - // 插入到上传按钮前的位置 - packagesStore.addPhotos(newPhoto, 1) - }) - } - }) + configEvents: { + // 点击上传事件 + addHandle: (photoConfig: ConfigType) => { + goDialog({ + message: `图片需小于 ${backgroundImageSize}M 且只暂存在浏览器中,请自行对接后端接口!现只编译成 base64 进行渲染,对接后端请返回地址使用!`, + transformOrigin: 'center', + onPositiveCallback: () => { + uploadFile((e: UploadCompletedEventType) => { + // 和上传组件一样配置,更换标题,图片,预设数据 + const packagesStore = usePackagesStore() + const newPhoto = { + ...ImageConfig, + category: ChatCategoryEnum.PRIVATE, + categoryName: ChatCategoryEnumName.PRIVATE, + package: PackagesCategoryEnum.PHOTOS, + chartFrame: ChartFrameEnum.STATIC, + title: e.fileName, + image: e.url, + dataset: e.url, + redirectComponent: './components/Informations/Mores/Image' // 虚拟组件路径,尾部不跟 ‘/’,相对于 /packages/index.ts 文件的位置 + } + userPhotosList.unshift(newPhoto) + // 存储在本地数据中 + setLocalStorage(StoreKey, userPhotosList) + // 插入到上传按钮前的位置 + packagesStore.addPhotos(newPhoto, 1) + }) + } + }) + }, + deleteHandle: (photoConfig: ConfigType, index: number) => { + goDialog({ + message: '是否删除此图片?', + transformOrigin: 'center', + onPositiveCallback: () => {} + }) + } } } diff --git a/src/packages/index.d.ts b/src/packages/index.d.ts index cac3d173..3be43105 100644 --- a/src/packages/index.d.ts +++ b/src/packages/index.d.ts @@ -41,8 +41,8 @@ export type ConfigType = { disabled?: boolean // 图标 icon?: string - // 自定义单击事件 - clickHandle?: Function + // 事件 + configEvents?: { [T: string]: Function } } // 数据请求 diff --git a/src/views/chart/ContentCharts/components/ChartsItemBox/index.vue b/src/views/chart/ContentCharts/components/ChartsItemBox/index.vue index 6dea1e02..36d1cf02 100644 --- a/src/views/chart/ContentCharts/components/ChartsItemBox/index.vue +++ b/src/views/chart/ContentCharts/components/ChartsItemBox/index.vue @@ -31,6 +31,19 @@ {{ item.title }} + +
+ +
+ + + 删除 + +
@@ -47,13 +60,16 @@ import { useChartLayoutStore } from '@/store/modules/chartLayoutStore/chartLayou import { componentInstall, loadingStart, loadingFinish, loadingError, JSONStringify } from '@/utils' import { DragKeyEnum } from '@/enums/editPageEnum' import { createComponent } from '@/packages' -import { ConfigType, CreateComponentType } from '@/packages/index.d' +import { ConfigType, CreateComponentType, PackagesCategoryEnum } from '@/packages/index.d' +import { ChatCategoryEnum } from '@/packages/components/Photos/index.d' import { fetchConfigComponent, fetchChartComponent } from '@/packages/index' import { Icon } from '@iconify/vue' +import { icon } from '@/plugins' import omit from 'lodash/omit' const chartEditStore = useChartEditStore() +const { TrashIcon } = icon.ionicons5 const props = defineProps({ menuOptions: { @@ -65,6 +81,11 @@ const props = defineProps({ const chartLayoutStore = useChartLayoutStore() const contentChartsItemBoxRef = ref() +// 判断工具栏展示 +const isShowTools = (item: ConfigType) => { + return !item.disabled && item.package === PackagesCategoryEnum.PHOTOS && item.category === ChatCategoryEnum.PRIVATE +} + // 组件展示状态 const chartMode: Ref = computed(() => { return chartLayoutStore.getChartType @@ -114,7 +135,7 @@ const dblclickHandle = async (item: ConfigType) => { } // 单击事件 -const clickHandle = (item: ConfigType) => item.clickHandle && item.clickHandle(item) +const clickHandle = (item: ConfigType) => item?.configEvents?.addHandle(item) watch( () => chartMode.value, @@ -127,9 +148,12 @@ watch( } ) -watch(() => props.menuOptions, (n) => { - console.log(n) -}) +watch( + () => props.menuOptions, + n => { + console.log(n) + } +)