tav-ui
Version:
1 lines • 44.6 kB
Source Map (JSON)
{"version":3,"file":"index3.mjs","sources":["../../../../../../../../packages/components/file/src/FileCard/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n type Ref,\n computed,\n onBeforeUnmount,\n onMounted,\n ref,\n toRaw,\n useAttrs,\n useSlots,\n watch,\n} from 'vue'\nimport { List as AList, ButtonGroup, Divider, Tooltip } from 'ant-design-vue'\nimport AsyncValidator from 'async-validator'\nimport { tavI18n } from '@tav-ui/locales'\nimport { useMessage } from '@tav-ui/hooks/web/useMessage'\nimport { useGlobalConfig } from '@tav-ui/hooks/global/useGlobalConfig'\nimport {\n type FileActionUploadLinkEmits,\n type FileActionUploadLinkInstance,\n TaFileActionUploadLink,\n} from '../components/FileActionUploadLink'\nimport {\n type FileActionUploadEmits,\n type FileActionUploadInstance,\n TaFileActionUpload,\n TaFileActionUpload as TaFileActionUploadForActionUpdateBtn,\n} from '../components/FileActionUpload'\nimport {\n VersionCaches,\n useDisable,\n useGlobalConfigProps,\n useLoading,\n useMergedProps,\n useRequest,\n} from '../hooks'\nimport {\n type ArgumentsOf,\n createId,\n extendCurrentRowActionsAuth,\n fileSingleDownload,\n isFullNameColEdit,\n} from '../utils'\nimport { DEFAULT_APIPARAMS, DEFAULT_FILECARD_CLASSNAME } from '../consts'\nimport { type FileActionUploadApiResponseRecord } from '../typings'\nimport { TaFileVersion } from '../components/FileVersion'\nimport { TaFileLog } from '../components/FileLog'\nimport { TaFilePreview } from '../components/FilePreview'\nimport {\n type ApiQueryFileListParams,\n type ApiUpdateFileNameAndLinkParams,\n} from '../components/FileTable'\nimport {\n type CardValidateCallback,\n type CardValidateFailure,\n type FileCardProps,\n fileCardEmits,\n fileCardProps,\n} from './types'\nimport {\n useActions,\n useCardActions,\n useDataSource,\n useHandleDataSource,\n useItems,\n useMode,\n useRules,\n} from './hooks'\nimport ListItem from './components/ListItem'\n\nconst DEFAULT_FILECARD_ID = createId(DEFAULT_FILECARD_CLASSNAME)\nconst { createMessage } = useMessage()\n\ndefineOptions({\n name: 'TaFileCard',\n inheritAttrs: false,\n})\n\nconst headerExtraElRef = ref<HTMLElement>()\nconst props = defineProps(fileCardProps)\nconst emits = defineEmits(fileCardEmits)\nconst slots = useSlots()\nconst attrs = useAttrs()\n\nconst FileActionUploadForActionUpdateBtnRef = ref<FileActionUploadInstance>()\nconst VersionCachesController = new VersionCaches()\n\n// 将 globalconfig 与 fileCard props 结合,同名 props 已 fileCard props 为主\nconst globalConfigProps = useGlobalConfigProps()\nconst mergedProps = useMergedProps<FileCardProps>(globalConfigProps, props, 'TaFileCard', {\n ...DEFAULT_APIPARAMS,\n})\n\nconst fileApiParams = ref(props.apiParams)\nwatch(\n () => JSON.stringify(props.apiParams),\n async (curapiParams, preapiParams) => {\n if (curapiParams !== preapiParams) {\n fileApiParams.value = props.apiParams\n }\n }\n)\n\nconst fileActionUploadRef = ref<FileActionUploadInstance>()\nconst fileActionUploadProps = computed(() => {\n return {\n ...props.fileActionUpload,\n mode: props.mode,\n apiParams: {\n appId: fileApiParams.value.appId,\n moduleCode: fileApiParams.value.moduleCode,\n typeCode: fileApiParams.value.typeCode,\n businessId: fileApiParams.value.businessId,\n businessKey: fileApiParams.value.businessKey,\n businessParamsJson:\n fileApiParams.value.businessParamsJson ?? DEFAULT_APIPARAMS.businessParamsJson, // 合并默认值\n fileName: fileApiParams.value.fileName,\n ...(props.fileActionUpload?.apiParams ?? {}), // 以子组件中的 apiparams 为准,这里最后覆盖\n },\n buttonType: 'primary',\n buttonSize: 'small',\n buttonIcon: false,\n }\n})\n\nconst fileActionUploadLinkRef = ref<FileActionUploadLinkInstance>()\nconst fileActionUploadLinkProps = computed(() => {\n return {\n ...props.fileActionUploadLink,\n mode: props.mode,\n apiParams: {\n appId: fileApiParams.value.appId,\n moduleCode: fileApiParams.value.moduleCode,\n typeCode: fileApiParams.value.typeCode,\n businessId: fileApiParams.value.businessId,\n businessKey: fileApiParams.value.businessKey,\n businessParamsJson:\n fileApiParams.value.businessParamsJson ?? DEFAULT_APIPARAMS.businessParamsJson, // 合并默认值\n ...(props.fileActionUploadLink?.apiParams ?? {}), // 以子组件中的 apiparams 为准,这里最后覆盖\n },\n getFormContainer: () => headerExtraElRef.value,\n buttonSize: 'small',\n buttonIcon: false,\n }\n})\n\n// 统一内部 loading 状态\nconst _loading = ref(mergedProps.value.loading)\nconst loading = computed({\n get() {\n return _loading\n },\n set(newLoading: any) {\n _loading.value = newLoading.value\n },\n})\n\nconst { setDisable } = useDisable()\nconst { setLoading } = useLoading()\nconst {\n result: ApiResult,\n error: ApiError,\n handleApi,\n} = useRequest({\n setDisable,\n setLoading,\n loading,\n})\n\nconst hasEmptyDataSource = computed(() => {\n return (\n // 数据从 cards 通过 datasource 属性下发则代表有标准的文件数据\n mergedProps.value.__dataSourceFromCards ||\n // 用户通过 datsource 传入标准文件数据或双向绑定的数据\n !mergedProps.value.dataSource\n )\n})\n\nconst {\n apiActions: { apiQueryFileOptions },\n dataSource,\n handleDataSource,\n setDataSource,\n handleApiDataSource,\n} = useHandleDataSource({\n mergedProps,\n emits,\n VersionCachesController,\n ApiResult,\n ApiError,\n handleApi,\n})\n\n// 针对业务抽象不同模式进行数据处理\nconst {\n apiActions: { rowEditorApiOptions, historyApiOptions, deleteApiOptions },\n dataActions: { reloadRows, editRow, updateRow, deleteRow },\n} = useMode({\n mergedProps,\n emits,\n VersionCachesController,\n handleApiDataSource,\n hasEmptyDataSource,\n})\n\nconst { cardCreateRows, cardReadRows, cardUpdateRows, cardDeleteRows } = useCardActions({\n mergedProps,\n dataSource,\n setDataSource,\n loading,\n})\n\nuseDataSource({\n mergedProps,\n emits,\n VersionCachesController,\n dataSource,\n})\n\n/**\n * 1. 编辑与立即更新模式将 fileversion 的 immediate 设为 false,在该函数中处理 fileversion 需要的数据\n * 2. 在只读与新增模式将 fileversion 的 immediate 设为 true,组件内自动发请求获取 fileversion 需要的数据\n */\nasync function beforeReadFileCaches(row: FileActionUploadApiResponseRecord) {\n loading.value.value = true\n\n if (\n !VersionCachesController.isCachesEmpty() &&\n VersionCachesController.readFileCaches(row.actualId!)\n ) {\n loading.value.value = false\n if (row.version === VersionCachesController.readFileCaches(row.actualId!)!.length)\n return extendCurrentRowActionsAuth(row, VersionCachesController.readFileCaches(row.actualId!))\n }\n\n const options = historyApiOptions(mergedProps.value.apiParams, row)\n if (!options) {\n loading.value.value = false\n return []\n }\n\n const { success, data } = await mergedProps.value.apiQueryFileHistory!(options.apiParams)\n if (success === true && data) {\n loading.value.value = false\n const result = [\n ...(VersionCachesController.createFileCaches(row, extendCurrentRowActionsAuth(row, data)) ??\n []),\n ]\n\n // 请求 history 接口后需要重新更新 actualids\n const dataSource = JSON.parse(JSON.stringify(await cardReadRows()))\n if (mergedProps.value.mode === 'update' || mergedProps.value.mode === 'updateInstantly') {\n emits('actualidsChange', VersionCachesController.getCaches())\n } else {\n emits(\n 'actualidsChange',\n dataSource.map((file: any) => file.actualId)\n )\n }\n\n return result\n }\n\n loading.value.value = false\n return []\n}\n\n// 立即更新模式操作后(更新、删除)刷新数据\nasync function refreshCardDataApiAction(params?: Partial<ApiQueryFileListParams>) {\n await reloadRows(params)\n}\n\n// 行编辑处理\nasync function handleRowEditClick(\n changeEventPayload: Omit<ApiUpdateFileNameAndLinkParams, 'appId'>,\n row: FileActionUploadApiResponseRecord\n) {\n if (\n (row.hyperlink &&\n changeEventPayload.name === row.name &&\n changeEventPayload.address === row.address) ||\n (!row.hyperlink && changeEventPayload.name === row.name)\n ) {\n return\n }\n\n async function editRowApiAction() {\n const options = rowEditorApiOptions(mergedProps.value.apiParams, changeEventPayload)\n if (!options) return\n await handleApi(options)\n }\n\n loading.value.value = true\n // 更新表格数据\n await editRow(\n changeEventPayload,\n row,\n cardUpdateRows,\n editRowApiAction,\n hasEmptyDataSource,\n refreshCardDataApiAction\n )\n loading.value.value = false\n\n emits('rowEdit', row)\n}\n\n// version 弹窗处理\nconst fileVersionModalVisible = ref(false)\nconst fileVersionFile = ref<FileActionUploadApiResponseRecord>()\nconst fileVersionDataSource = ref<FileActionUploadApiResponseRecord[]>()\nasync function hanldeVersionClick(row: FileActionUploadApiResponseRecord) {\n fileVersionFile.value = row\n if (mergedProps.value.mode === 'update' || mergedProps.value.mode === 'updateInstantly') {\n const fileCaches = await beforeReadFileCaches(row)\n fileVersionDataSource.value = fileCaches!\n } else {\n fileVersionDataSource.value = [row]\n }\n fileVersionModalVisible.value = true\n}\n\n// 预览处理\nconst filePreviewModalVisible = ref(false)\nconst filePreviewFile = ref<FileActionUploadApiResponseRecord>()\nfunction handleViewBtnClick(row: FileActionUploadApiResponseRecord) {\n filePreviewModalVisible.value = true\n filePreviewFile.value = row\n}\n\n/// 更新处理\nconst actionUpdateClickRow = ref<\n FileActionUploadApiResponseRecord & { cache: FileActionUploadApiResponseRecord[] | undefined }\n>()\nasync function handleUpdateBtnClick(row: FileActionUploadApiResponseRecord) {\n if (mergedProps.value.mode === 'update' || mergedProps.value.mode === 'updateInstantly') {\n await beforeReadFileCaches(row)\n }\n\n // actionUpdateClickRow.value = row\n actionUpdateClickRow.value = { ...row, cache: VersionCachesController['caches'][row.actualId!] } // 因为不想把 VersionCachesController 当作 fileupload props 传过去所以这里把 cache 挂在 row 上\n FileActionUploadForActionUpdateBtnRef.value?.openFilePicker?.()\n\n emits('rowUpdate', row)\n}\n// 点击更新时 upload 回调\nasync function handleFileActionUploadForActionUpdateBtnChange(...args: any) {\n const [files] = args as unknown as ArgumentsOf<FileActionUploadEmits['uploadedChange']>\n\n loading.value.value = true\n // 更新表格数据\n await updateRow(\n files[0],\n actionUpdateClickRow.value!,\n cardUpdateRows,\n hasEmptyDataSource,\n refreshCardDataApiAction\n )\n loading.value.value = false\n\n actionUpdateClickRow.value = undefined\n}\n\n// 水印下载处理\nasync function handleDownloadWatermarkBtnClick(row: FileActionUploadApiResponseRecord) {\n if (!mergedProps.value.apiDownloadWaterMarkerFile) {\n console.warn('[tavui TaFileCard] apiDownloadWaterMarkerFile is undefined')\n return\n }\n loading.value.value = true\n try {\n await fileSingleDownload({\n file: row,\n api: mergedProps.value.apiDownloadWaterMarkerFile!,\n })\n } catch (error) {\n console.warn('[tavui TaFileCard] apiDownloadWaterMarkerFile has error', error)\n } finally {\n loading.value.value = false\n }\n}\n\n// 下载处理\nasync function handleDownloadBtnClick(row: FileActionUploadApiResponseRecord) {\n if (!mergedProps.value.apiDownloadFile) {\n console.warn('[tavui TaFileCard] apiDownloadFile is undefined')\n return\n }\n loading.value.value = true\n try {\n await fileSingleDownload({\n file: row,\n api: mergedProps.value.apiDownloadFile!,\n })\n } catch (error) {\n console.warn('[tavui TaFileCard] apiDownloadFile has error', error)\n } finally {\n loading.value.value = false\n }\n}\n\n// 删除处理\nasync function handleDeleteBtnClick(row: FileActionUploadApiResponseRecord) {\n // 立即更新模式调接口删除\n async function deleteRowApiAction() {\n const options = deleteApiOptions(mergedProps.value.apiParams, row)\n if (!options) return\n await handleApi(options)\n }\n\n loading.value.value = true\n // 删除表格数据\n await deleteRow(\n row,\n cardDeleteRows,\n deleteRowApiAction,\n hasEmptyDataSource,\n refreshCardDataApiAction,\n validate\n )\n loading.value.value = false\n\n emits('rowDelete', row)\n}\n\n// 日志处理\nconst fileLogModalVisible = ref(false)\nconst fileLogFile = ref<FileActionUploadApiResponseRecord>()\nasync function handleLogBtnClick(row: FileActionUploadApiResponseRecord) {\n fileLogFile.value = row\n fileLogModalVisible.value = true\n}\n\nconst globalConfigUserInfo = useGlobalConfig('userInfo') as Ref<Record<string, any>>\n\n// 处理操作列\nconst actions = useActions({\n mergedProps,\n handleViewBtnClick,\n handleUpdateBtnClick,\n handleDownloadWatermarkBtnClick,\n handleDownloadBtnClick,\n handleDeleteBtnClick,\n handleLogBtnClick,\n globalConfigUserInfo,\n VersionCachesController,\n})\n\n// 处理表格列\nconst items = useItems({\n mergedProps,\n actions,\n handleRowEditClick,\n hanldeVersionClick,\n // globalConfigUserInfo,\n})\n\n// 行编辑配置\nconst editConfig = computed<any>(() =>\n mergedProps.value.enabledRowEdit\n ? {\n // trigger: 'manual',\n trigger: 'click',\n mode: 'cell',\n autoClear: true,\n beforeEditMethod: ({ row: _row }: Record<string, any>) => {\n const row = _row as FileActionUploadApiResponseRecord\n const isEdit = isFullNameColEdit(\n mergedProps.value.enabledRowEdit,\n mergedProps.value.mode,\n mergedProps.value.enabledOwner,\n globalConfigUserInfo.value,\n row.owner\n )\n if (!isEdit) {\n createMessage.warn(`${tavI18n('Tav.common.notAuthorised')}`)\n }\n\n return isEdit\n },\n }\n : undefined\n)\n\n// /**\n// * 因为继承了当前行的 actions 权限数据,这里直接使用 filetable 的 actions 构造最新的 filetable actions 把 enabled 数据下发\n// * 需要时开启\n// * @param fileVersionTableActions\n// * @param info\n// */\n// function handleFileVersionActions(\n// fileVersionTableActions: FileVersionTableAction[],\n// info: { row: FileActionUploadApiResponseRecord }\n// ) {\n// return fileVersionTableActions.filter((fileVersionTableAction) =>\n// actions\n// .value(info.row)\n// .find((action) => action.field === fileVersionTableAction.field && action.enabled)\n// )\n// }\n\n// 处理 rules\nconst rules = useRules({\n mergedProps,\n})\n\nconst isRequired = computed(() => !!rules.value.find((rule) => rule.required))\n\nfunction getRuleByTriggerName(trigger: string) {\n return (toRaw(rules).value ?? [])\n .filter((rule) => {\n if (!rule.trigger || trigger === '') return true\n if (Array.isArray(rule.trigger)) {\n return rule.trigger.indexOf(trigger) > -1\n } else {\n return rule.trigger === trigger\n }\n })\n .map((rule) => ({ ...rule }))\n}\n\nconst validateMessage = ref('')\nasync function validate(trigger: string, callback?: CardValidateCallback) {\n const _rules = getRuleByTriggerName(trigger)\n if (_rules.length === 0) {\n callback?.(true)\n return true\n }\n\n if (_rules && _rules.length > 0) {\n _rules.forEach((rule) => {\n Reflect.deleteProperty(rule, 'trigger')\n Reflect.deleteProperty(rule, 'key')\n })\n }\n\n const validator = new AsyncValidator({ [mergedProps.value.value!]: _rules })\n return validator\n .validate({ [mergedProps.value.value!]: dataSource.value }, { firstFields: true })\n .then(() => {\n validateMessage.value = ''\n callback?.(true)\n return true\n })\n .catch((err: CardValidateFailure) => {\n const { fields, errors } = err\n if (mergedProps.value.autoValidate) {\n validateMessage.value = errors ? errors[0].message ?? '' : ''\n }\n callback?.(false, fields)\n return callback ? false : Promise.reject(fields)\n })\n}\n\nasync function retriggerHandleDataSource() {\n if (mergedProps.value.dataSource || mergedProps.value.immediate) {\n await handleDataSource()\n }\n}\n\nfunction handleFileActionUploadChangeValidateSuccessChange(...args: any) {\n emits(\n 'fileActionUpload:validateSuccessChange',\n ...(args as unknown as ArgumentsOf<FileActionUploadEmits['validateSuccessChange']>)\n )\n}\n\nfunction handleFileActionUploadChangeValidateFailureChange(...args: any) {\n emits(\n 'fileActionUpload:validateFailureChange',\n ...(args as unknown as ArgumentsOf<FileActionUploadEmits['validateFailureChange']>)\n )\n}\n\nasync function handleFileActionUploadChange(...args: any) {\n emits(\n 'fileActionUpload:uploadedChange',\n ...(args as unknown as ArgumentsOf<FileActionUploadEmits['uploadedChange']>)\n )\n\n const [files] = args as unknown as ArgumentsOf<FileActionUploadEmits['uploadedChange']>\n if (mergedProps.value.mode === 'updateInstantly' && hasEmptyDataSource.value) {\n await refreshCardDataApiAction({ typeCodes: [mergedProps.value.value!] })\n } else {\n setDataSource([...files, ...dataSource.value])\n }\n mergedProps.value.autoValidate &&\n (await validate(\n 'change',\n (...args: any[]) => args[1] && console.warn('[tavui TaFileCard] delete has error: ', args[1])\n ))\n}\n\nfunction handleFileActionUploadLinkChangeValidateSuccessChange(...args: any) {\n emits(\n 'fileActionUploadLink:validateSuccessChange',\n ...(args as unknown as ArgumentsOf<FileActionUploadLinkEmits['validateSuccessChange']>)\n )\n}\n\nfunction handleFileActionUploadLinkChangeValidateFailureChange(...args: any) {\n emits(\n 'fileActionUploadLink:validateFailureChange',\n ...(args as unknown as ArgumentsOf<FileActionUploadLinkEmits['validateFailureChange']>)\n )\n}\n\nasync function handleFileActionUploadLinkChange(...args: any) {\n emits(\n 'fileActionUploadLink:uploadedChange',\n ...(args as unknown as ArgumentsOf<FileActionUploadLinkEmits['uploadedChange']>)\n )\n\n const [files] = args as unknown as ArgumentsOf<FileActionUploadLinkEmits['uploadedChange']>\n if (mergedProps.value.mode === 'updateInstantly' && hasEmptyDataSource.value) {\n await refreshCardDataApiAction({ typeCodes: [mergedProps.value.value!] })\n } else {\n setDataSource([...files, ...dataSource.value])\n }\n mergedProps.value.autoValidate &&\n (await validate(\n 'change',\n (...args: any[]) => args[1] && console.warn('[tavui TaFileCard] delete has error: ', args[1])\n ))\n}\n\n// 清空状态\nfunction cleanup() {\n fileActionUploadRef.value?.cleanup()\n fileActionUploadLinkRef.value?.cleanup()\n VersionCachesController.deleteAllFileCaches()\n setDataSource([])\n}\n\nonMounted(async () => {\n await retriggerHandleDataSource()\n})\n\n// mode 变化置空状态\nwatch(\n () => mergedProps.value.mode,\n async () => {\n cleanup()\n }\n)\n// apiparams 变化重新请求\nwatch(\n () => JSON.stringify(mergedProps.value.apiParams),\n async (curApiParams, preApiParams) => {\n if (curApiParams && curApiParams !== preApiParams) {\n if (!mergedProps.value.dataSource) {\n const curoptions = apiQueryFileOptions(mergedProps.value.apiParams)\n if (!curoptions) return\n const preoptions = apiQueryFileOptions(JSON.parse(preApiParams))\n if (!preoptions) return\n if (JSON.stringify(curoptions.apiParams) !== JSON.stringify(preoptions.apiParams)) {\n loading.value.value = true\n await refreshCardDataApiAction(curoptions.apiParams as any)\n loading.value.value = false\n }\n }\n }\n }\n)\n// datasource 变化\nwatch(\n () => JSON.stringify(mergedProps.value.dataSource),\n async (curdatasource, predatasource) => {\n if (curdatasource && curdatasource !== predatasource) {\n VersionCachesController.deleteAllFileCaches()\n await retriggerHandleDataSource()\n }\n }\n)\n\nonBeforeUnmount(() => {\n cleanup()\n})\n\ndefineExpose({\n fileActionUploadRef,\n fileActionUploadLinkRef,\n cleanup,\n reload: refreshCardDataApiAction,\n createRows: cardCreateRows,\n readRows: cardReadRows,\n updateRows: cardUpdateRows,\n deleteRows: cardDeleteRows,\n getDataSource: () => dataSource.value,\n validate: (callback?: CardValidateCallback) => validate('change', callback),\n clearValidate: () => {\n validateMessage.value = ''\n },\n})\n</script>\n\n<template>\n <template v-if=\"mergedProps.visible\">\n <section\n :id=\"DEFAULT_FILECARD_ID\"\n :class=\"{\n [DEFAULT_FILECARD_CLASSNAME]: true,\n [`${DEFAULT_FILECARD_CLASSNAME}--${mergedProps.value}`]: mergedProps.value,\n [`${DEFAULT_FILECARD_CLASSNAME}--uploaded`]: dataSource && dataSource.length > 0,\n [`${DEFAULT_FILECARD_CLASSNAME}--required`]: isRequired,\n [`${DEFAULT_FILECARD_CLASSNAME}--validated-error`]: !!validateMessage,\n }\"\n :style=\"attrs.style\"\n >\n <section v-if=\"mergedProps.headerVisible\" :class=\"`${DEFAULT_FILECARD_CLASSNAME}-header`\">\n <div v-if=\"mergedProps.labelVisible\" :class=\"`${DEFAULT_FILECARD_CLASSNAME}-meta`\">\n <span :class=\"`${DEFAULT_FILECARD_CLASSNAME}-meta__label-required`\">*</span>\n <div :class=\"`${DEFAULT_FILECARD_CLASSNAME}-meta__label-wrapper`\">\n <Tooltip placement=\"top\" :destroy-tooltip-on-hide=\"true\">\n <template #title>\n <span>\n {{ mergedProps.label }}\n </span>\n </template>\n <span :class=\"`${DEFAULT_FILECARD_CLASSNAME}-meta__label`\">\n {{ mergedProps.label }}\n </span>\n </Tooltip>\n <!-- <span :class=\"`${DEFAULT_FILECARD_CLASSNAME}-meta__upload-status`\">\n {{\n dataSource && dataSource.length > 0\n ? tavI18n('Tav.file.cards.2')\n : tavI18n('Tav.file.cards.1')\n }}\n </span> -->\n </div>\n </div>\n <div\n v-if=\"mergedProps.headerActionsVisible && mergedProps.mode !== 'read'\"\n :class=\"`${DEFAULT_FILECARD_CLASSNAME}-actions`\"\n >\n <ButtonGroup>\n <TaFileActionUploadLink\n ref=\"fileActionUploadLinkRef\"\n v-bind=\"fileActionUploadLinkProps\"\n @validate-success-change=\"handleFileActionUploadLinkChangeValidateSuccessChange\"\n @validate-failure-change=\"handleFileActionUploadLinkChangeValidateFailureChange\"\n @uploaded-change=\"handleFileActionUploadLinkChange\"\n />\n <TaFileActionUpload\n ref=\"fileActionUploadRef\"\n v-bind=\"fileActionUploadProps\"\n @validate-success-change=\"handleFileActionUploadChangeValidateSuccessChange\"\n @validate-failure-change=\"handleFileActionUploadChangeValidateFailureChange\"\n @uploaded-change=\"handleFileActionUploadChange\"\n >\n <template v-if=\"slots['FileActionUploadButton']\" #FileActionUploadButton=\"data\">\n <slot name=\"FileActionUploadButton\" v-bind=\"data || {}\" />\n </template>\n </TaFileActionUpload>\n </ButtonGroup>\n </div>\n </section>\n <section\n v-if=\"mergedProps.headerVisible\"\n ref=\"headerExtraElRef\"\n :class=\"`${DEFAULT_FILECARD_CLASSNAME}-header-extra`\"\n />\n <template v-if=\"dataSource && dataSource.length > 0\">\n <section\n :class=\"`${DEFAULT_FILECARD_CLASSNAME}-main`\"\n :style=\"\n mergedProps.maxHeight\n ? { maxHeight: `${mergedProps.maxHeight}px`, overflowY: 'auto' }\n : {}\n \"\n >\n <AList\n :class=\"`${DEFAULT_FILECARD_CLASSNAME}-list`\"\n item-layout=\"horizontal\"\n :loading=\"loading.value\"\n :data-source=\"dataSource\"\n >\n <template #renderItem=\"{ item }\">\n <ListItem\n :key=\"item.id\"\n :row=\"item\"\n :renders=\"items\"\n :class-name=\"`${DEFAULT_FILECARD_CLASSNAME}-list-item`\"\n :edit-config=\"editConfig\"\n />\n </template>\n </AList>\n <TaFileActionUploadForActionUpdateBtn\n ref=\"FileActionUploadForActionUpdateBtnRef\"\n :mode=\"mergedProps.mode\"\n :api-params=\"mergedProps.apiParams\"\n :validate-type-code=\"false\"\n :update-file=\"actionUpdateClickRow\"\n @uploaded-change=\"handleFileActionUploadForActionUpdateBtnChange\"\n />\n <TaFileVersion\n v-model:visible=\"fileVersionModalVisible\"\n :mode=\"mergedProps.mode\"\n :immediate=\"\n mergedProps.mode === 'update' || mergedProps.mode === 'updateInstantly' ? false : true\n \"\n :api-params=\"mergedProps.apiParams\"\n :file=\"fileVersionFile\"\n :data-source=\"fileVersionDataSource\"\n />\n <!-- :actions=\"handleFileVersionActions\" 需要时再开启 -->\n <TaFilePreview\n v-model:visible=\"filePreviewModalVisible\"\n :mode=\"mergedProps.mode\"\n :immediate=\"true\"\n :api-params=\"mergedProps.apiParams\"\n :file=\"filePreviewFile\"\n />\n <TaFileLog\n v-model:visible=\"fileLogModalVisible\"\n :mode=\"mergedProps.mode\"\n :api-params=\"mergedProps.apiParams\"\n :file=\"fileLogFile\"\n />\n </section>\n </template>\n <section :class=\"`${DEFAULT_FILECARD_CLASSNAME}-footer`\">\n <div\n v-if=\"!!validateMessage\"\n :class=\"`${DEFAULT_FILECARD_CLASSNAME}-error-message`\"\n v-html=\"validateMessage\"\n />\n </section>\n </section>\n </template>\n</template>\n"],"names":["dataSource","_unref","_openBlock","_createElementBlock","_normalizeClass","_normalizeStyle","_createElementVNode","_createVNode","_toDisplayString","_createCommentVNode","_withCtx","_mergeProps"],"mappings":"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"}