giime 0.5.4 → 0.5.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/index.css +9 -5
  2. package/es/api/materialApi/cross/postSaveFileResources.mjs +0 -1
  3. package/es/api/materialApi/cross/postSaveFileResources.mjs.map +1 -1
  4. package/es/components/src/base/affix/index.mjs.map +1 -1
  5. package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs.map +1 -1
  6. package/es/components/src/business/loginDialog/loginDialog.mjs.map +1 -1
  7. package/es/components/src/composite/fileComponent/FileComponent.vue2.mjs +7 -6
  8. package/es/components/src/composite/fileComponent/FileComponent.vue2.mjs.map +1 -1
  9. package/es/components/src/composite/previewFile/PreviewFile.vue2.mjs +1 -1
  10. package/es/components/src/composite/previewFile/PreviewFile.vue2.mjs.map +1 -1
  11. package/es/components/src/composite/previewFile/previewFile.mjs +1 -1
  12. package/es/components/src/composite/previewFile/previewFile.mjs.map +1 -1
  13. package/es/components/src/composite/uploadFile/UploadFile.vue.mjs +1 -1
  14. package/es/components/src/composite/uploadFile/UploadFile.vue2.mjs +141 -115
  15. package/es/components/src/composite/uploadFile/UploadFile.vue2.mjs.map +1 -1
  16. package/es/constants/key.mjs.map +1 -1
  17. package/es/giime/version.d.ts +1 -1
  18. package/es/giime/version.mjs +1 -1
  19. package/es/giime/version.mjs.map +1 -1
  20. package/es/index.css +9 -5
  21. package/es/utils/src/http/createAxios.mjs.map +1 -1
  22. package/es/utils/src/http/errorMessage.mjs.map +1 -1
  23. package/es/utils/src/tree.mjs.map +1 -1
  24. package/lib/api/materialApi/cross/postSaveFileResources.js +0 -1
  25. package/lib/api/materialApi/cross/postSaveFileResources.js.map +1 -1
  26. package/lib/components/src/base/affix/index.js.map +1 -1
  27. package/lib/components/src/business/loginDialog/LoginDialog.vue2.js.map +1 -1
  28. package/lib/components/src/business/loginDialog/loginDialog.js.map +1 -1
  29. package/lib/components/src/composite/fileComponent/FileComponent.vue2.js +7 -6
  30. package/lib/components/src/composite/fileComponent/FileComponent.vue2.js.map +1 -1
  31. package/lib/components/src/composite/previewFile/PreviewFile.vue2.js +1 -1
  32. package/lib/components/src/composite/previewFile/PreviewFile.vue2.js.map +1 -1
  33. package/lib/components/src/composite/previewFile/previewFile.js +1 -1
  34. package/lib/components/src/composite/previewFile/previewFile.js.map +1 -1
  35. package/lib/components/src/composite/uploadFile/UploadFile.vue.js +1 -1
  36. package/lib/components/src/composite/uploadFile/UploadFile.vue2.js +140 -114
  37. package/lib/components/src/composite/uploadFile/UploadFile.vue2.js.map +1 -1
  38. package/lib/constants/key.js.map +1 -1
  39. package/lib/giime/version.d.ts +1 -1
  40. package/lib/giime/version.js +1 -1
  41. package/lib/giime/version.js.map +1 -1
  42. package/lib/index.css +9 -5
  43. package/lib/utils/src/http/createAxios.js.map +1 -1
  44. package/lib/utils/src/http/errorMessage.js.map +1 -1
  45. package/lib/utils/src/tree.js.map +1 -1
  46. package/package.json +1 -1
  47. package/es/utils/src/alioss.d.ts +0 -32
  48. package/es/utils/src/alioss.mjs +0 -110
  49. package/es/utils/src/alioss.mjs.map +0 -1
  50. package/lib/utils/src/alioss.d.ts +0 -32
  51. package/lib/utils/src/alioss.js +0 -113
  52. package/lib/utils/src/alioss.js.map +0 -1
package/dist/index.css CHANGED
@@ -808,29 +808,33 @@ video {
808
808
  .gm-flex-justify-between[data-v-2a79bac9] {
809
809
  justify-content: space-between;
810
810
  }
811
- .gm-upload-preview-dialog[data-v-80cd8f61] [data-v-80cd8f61] .el-dialog__body {
811
+ .gm-upload-preview-dialog[data-v-bb2dfbf0] [data-v-bb2dfbf0] .el-dialog__body {
812
812
  padding: 0;
813
813
  }
814
814
 
815
- [data-v-80cd8f61] .el-upload-list__item, [data-v-80cd8f61] .el-upload--picture-card {
815
+ .gm-upload-file-picture-card[data-v-bb2dfbf0] [data-v-bb2dfbf0] .el-upload-list__item, .gm-upload-file-picture-card[data-v-bb2dfbf0] [data-v-bb2dfbf0] .el-upload--picture-card {
816
816
  width: 120px;
817
817
  height: 120px;
818
818
  display: flex;
819
819
  align-items: center;
820
820
  justify-content: center;
821
821
  }
822
- .el-upload-file {
822
+ .gm-upload-file {
823
823
  line-height: normal;
824
824
  }
825
- .el-upload-file .el-checkbox {
825
+ .gm-upload-file .el-checkbox {
826
826
  position: absolute;
827
827
  left: 10px;
828
828
  top: 0;
829
829
  z-index: 9;
830
830
  }
831
- .el-upload-file .el-upload-list__item-file-name {
831
+ .gm-upload-file .el-upload-list__item-file-name {
832
832
  line-height: normal;
833
833
  }
834
+
835
+ .gm-upload-file-disabled .el-upload-list__item-status-label {
836
+ display: none;
837
+ }
834
838
  .circular[data-v-b391445c] {
835
839
  animation: loading-rotate-b391445c 2s linear infinite;
836
840
  }
@@ -1,7 +1,6 @@
1
1
  import service from '../request.mjs';
2
2
 
3
3
  function postSaveFileResources(input, config) {
4
- console.log(input?.fileData);
5
4
  return service.post(`/material/work/saveFileResources`, input, config);
6
5
  }
7
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"postSaveFileResources.mjs","sources":["../../../../../../packages/api/materialApi/cross/postSaveFileResources.ts"],"sourcesContent":["import { type AxiosRequestConfig } from 'axios';\r\nimport request from '../request';\r\nimport type { DeepRequired } from '../interface';\r\n\r\nexport interface PostSaveFileResourcesResponse {\r\n code: number;\r\n data: any;\r\n comment: string;\r\n}\r\n\r\n/**\r\n * @description 文件资源保存入库\r\n * @param {array} fileData 文件资源\r\n * @return {*}\r\n **/\r\nexport function postSaveFileResources(input?: PostSaveFileResourcesInput, config?: AxiosRequestConfig) {\r\n console.log(input?.fileData);\r\n return request.post<DeepRequired<PostSaveFileResourcesResponse>>(`/material/work/saveFileResources`, input, config);\r\n}\r\n\r\nexport interface PostSaveFileResourcesData {\r\n md5_code: string;\r\n url: string;\r\n file_size?: number;\r\n width?: string;\r\n high?: string;\r\n play_time?: string;\r\n}\r\n\r\nexport interface PostSaveFileResourcesInput {\r\n fileData: PostSaveFileResourcesData;\r\n}\r\n"],"names":["request"],"mappings":";;AAegB,SAAA,qBAAA,CAAsB,OAAoC,MAA6B,EAAA;AACrG,EAAQ,OAAA,CAAA,GAAA,CAAI,OAAO,QAAQ,CAAA,CAAA;AAC3B,EAAA,OAAOA,OAAQ,CAAA,IAAA,CAAkD,CAAoC,gCAAA,CAAA,EAAA,KAAA,EAAO,MAAM,CAAA,CAAA;AACpH;;;;"}
1
+ {"version":3,"file":"postSaveFileResources.mjs","sources":["../../../../../../packages/api/materialApi/cross/postSaveFileResources.ts"],"sourcesContent":["import { type AxiosRequestConfig } from 'axios';\r\nimport request from '../request';\r\nimport type { DeepRequired } from '../interface';\r\n\r\nexport interface PostSaveFileResourcesResponse {\r\n code: number;\r\n data: any;\r\n comment: string;\r\n}\r\n\r\n/**\r\n * @description 文件资源保存入库\r\n * @param {array} fileData 文件资源\r\n * @return {*}\r\n **/\r\nexport function postSaveFileResources(input?: PostSaveFileResourcesInput, config?: AxiosRequestConfig) {\r\n return request.post<DeepRequired<PostSaveFileResourcesResponse>>(`/material/work/saveFileResources`, input, config);\r\n}\r\n\r\nexport interface PostSaveFileResourcesData {\r\n md5_code: string;\r\n url: string;\r\n file_size?: number;\r\n width?: string;\r\n high?: string;\r\n play_time?: string;\r\n}\r\n\r\nexport interface PostSaveFileResourcesInput {\r\n fileData: PostSaveFileResourcesData;\r\n}\r\n"],"names":["request"],"mappings":";;AAegB,SAAA,qBAAA,CAAsB,OAAoC,MAA6B,EAAA;AACrG,EAAA,OAAOA,OAAQ,CAAA,IAAA,CAAkD,CAAoC,gCAAA,CAAA,EAAA,KAAA,EAAO,MAAM,CAAA,CAAA;AACpH;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../../../packages/components/src/base/affix/index.ts"],"sourcesContent":["import { withInstall } from '@giime/utils';\nimport Affix from './Affix.vue';\nimport type { SFCWithInstall } from 'element-plus/es/utils/vue/typescript';\n\nexport const GmAffix: SFCWithInstall<typeof Affix> = withInstall(Affix);\nexport type AffixInstance = InstanceType<typeof Affix>;\nexport * from './affix';\nexport default GmAffix;\n"],"names":["Affix"],"mappings":";;;;;;AAIa,MAAA,OAAA,GAAwC,YAAYA,SAAK;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../../../packages/components/src/base/affix/index.ts"],"sourcesContent":["import { withInstall } from '@giime/utils';\r\nimport Affix from './Affix.vue';\r\nimport type { SFCWithInstall } from 'element-plus/es/utils/vue/typescript';\r\n\r\nexport const GmAffix: SFCWithInstall<typeof Affix> = withInstall(Affix);\r\nexport type AffixInstance = InstanceType<typeof Affix>;\r\nexport * from './affix';\r\nexport default GmAffix;\r\n"],"names":["Affix"],"mappings":";;;;;;AAIa,MAAA,OAAA,GAAwC,YAAYA,SAAK;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"LoginDialog.vue2.mjs","sources":["../../../../../../../packages/components/src/business/loginDialog/LoginDialog.vue"],"sourcesContent":["<script lang=\"ts\">\nconst loginEnvKey = 'VITE_GIIME_LOGIN_URL'\n</script>\n<template>\n <div v-if=\"isSSRShowDialog\">\n <el-dialog v-model=\"loginStore.showLogin\" width=\"80%\" append-to-body>\n <iframe v-if=\"loginStore.showLogin\" class=\"gm-h-[600px] gm-w-full\" :src=\"loginUrl\" />\n </el-dialog>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { computed, onMounted, onUnmounted, ref, watch } from 'vue';\nimport { ElDialog } from 'element-plus';\nimport Cookies from 'js-cookie';\n// import router from 'vue-router';\nimport { useLoginStore } from '@giime/hooks';\nimport { useGlobalConfig } from '@giime/hooks/base/useGlobalConfig';\nimport { isString } from '@giime/utils';\nimport { loginDialogProps } from './loginDialog';\n\nconst props = defineProps(loginDialogProps);\nconst router = useGlobalConfig('router');\n\n// const router = useRouter();\nconst route = computed(() => (router.value ? router.value.currentRoute.value : undefined));\nconst loginStore = useLoginStore();\nconst loginUrl = ref('');\nconst viteModes = [\n { mode: 'development', loginUrl: 'http://sso-dev.giikin.cn/admin/login/index.html' },\n { mode: 'test', loginUrl: 'http://sso-dev.giikin.cn/admin/login/index.html' },\n { mode: 'production', loginUrl: 'https://gsso.giikin.com/admin/login/logout.html' },\n];\n\n\nconst importMetaEnv = useGlobalConfig('env');\nconst isSSRShowDialog = ref(importMetaEnv.value.SSR === false);\nlet originLoginUrl = ``;\nif (isString(importMetaEnv.value[loginEnvKey])) {\n originLoginUrl = importMetaEnv.value[loginEnvKey];\n} else {\n const curMode = viteModes.find(item => item.mode == importMetaEnv.value.MODE);\n originLoginUrl = curMode?.loginUrl ?? 'https://gsso.giikin.com/admin/login/logout.html';\n}\nconst login = () => {\n const protocol = window.location.protocol;\n const host = window.location.host;\n const myPath = window.location.pathname;\n\n loginUrl.value = `${originLoginUrl}?_system=${props.system}`;\n if (route.value && props.needScanningRouteNames.includes(route.value?.name?.toString() ?? '')) {\n loginUrl.value += '&is_dashboard=1';\n }\n\n loginUrl.value += `&${props.redirectUrlField}=${protocol}//${host}${myPath}`;\n\n // eslint-disable-next-line no-console\n console.log(loginUrl.value);\n};\nwatch(\n () => loginStore.showLogin,\n value => {\n if (value) {\n login();\n }\n },\n);\n// 超过5分钟没扫码 会不能扫码 定时没登录的话3分钟刷新次\nconst reloadTimer = ref<number>();\nif (route.value) {\n watch(route, (newValue, oldValue) => {\n if (!oldValue || !newValue) {\n return;\n }\n if (oldValue.name && props.needScanningRouteNames.includes(oldValue.name.toString())) {\n window.clearInterval(reloadTimer.value);\n }\n if (newValue.name && props.needScanningRouteNames.includes(newValue.name.toString())) {\n reloadTimer.value = window.setInterval(\n () => {\n if (!loginStore.showLogin) {\n return;\n }\n // 登录超时后 3分钟刷新次页面\n window.location.reload();\n },\n 3 * 60 * 1000,\n );\n }\n });\n}\n\nonMounted(() => {\n isSSRShowDialog.value = true;\n if (loginStore.showLogin) {\n login();\n }\n // iframe事件监听\n window.addEventListener('message', async e => {\n // 刷新登陆状态\n if (e.data.type == 'giikin-Logged') {\n // eslint-disable-next-line no-console\n console.log(e.data);\n const token = Cookies.get('token');\n if (\n // 测试环境 但是需要登陆的情况\n (importMetaEnv.value.MODE !== 'production' && e.data?.data?.token) ||\n // 正式环境 登录成功 但是服务器token设置失败\n (importMetaEnv.value.MODE === 'production' && !token && e.data?.data?.token)\n ) {\n const now = new Date();\n let time = now.getTime();\n time += 8 * 60 * 60 * 1000; // 8 小时之后的时间(单位:毫秒)\n now.setTime(time);\n Cookies.set('token', e.data.data.token, { expires: now, domain: importMetaEnv.value.MODE === 'production' ? '.giikin.com' : undefined });\n loginStore.userToken = e.data.data.token;\n loginStore.userId = e.data.data.userId;\n if (!Cookies.get('sso_user_id') && e.data.data.userId) {\n Cookies.set('sso_user_id', e.data.data.userId, {\n expires: now,\n domain: importMetaEnv.value.MODE === 'production' ? '.giikin.com' : undefined,\n });\n }\n }\n // 触发登录成功监听\n if (e.data?.data?.token) {\n await loginStore.triggerLoginResult(e.data.data);\n }\n // ElMessage.success('登录成功,请关闭弹窗');\n loginStore.showLogin = false;\n if (route.value && props.needRealodRouteNames.includes(route.value.name?.toString() ?? '')) {\n window.location.reload();\n }\n }\n });\n});\nonUnmounted(() => {\n window.clearInterval(reloadTimer.value);\n});\n</script>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LoginDialog.vue2.mjs","sources":["../../../../../../../packages/components/src/business/loginDialog/LoginDialog.vue"],"sourcesContent":["<script lang=\"ts\">\nconst loginEnvKey = 'VITE_GIIME_LOGIN_URL'\n</script>\n<template>\r\n <div v-if=\"isSSRShowDialog\">\r\n <el-dialog v-model=\"loginStore.showLogin\" width=\"80%\" append-to-body>\r\n <iframe v-if=\"loginStore.showLogin\" class=\"gm-h-[600px] gm-w-full\" :src=\"loginUrl\" />\r\n </el-dialog>\r\n </div>\r\n</template>\r\n<script setup lang=\"ts\">\r\nimport { computed, onMounted, onUnmounted, ref, watch } from 'vue';\r\nimport { ElDialog } from 'element-plus';\r\nimport Cookies from 'js-cookie';\r\n// import router from 'vue-router';\r\nimport { useLoginStore } from '@giime/hooks';\r\nimport { useGlobalConfig } from '@giime/hooks/base/useGlobalConfig';\r\nimport { isString } from '@giime/utils';\r\nimport { loginDialogProps } from './loginDialog';\r\n\r\nconst props = defineProps(loginDialogProps);\r\nconst router = useGlobalConfig('router');\r\n\r\n// const router = useRouter();\r\nconst route = computed(() => (router.value ? router.value.currentRoute.value : undefined));\r\nconst loginStore = useLoginStore();\r\nconst loginUrl = ref('');\r\nconst viteModes = [\r\n { mode: 'development', loginUrl: 'http://sso-dev.giikin.cn/admin/login/index.html' },\r\n { mode: 'test', loginUrl: 'http://sso-dev.giikin.cn/admin/login/index.html' },\r\n { mode: 'production', loginUrl: 'https://gsso.giikin.com/admin/login/logout.html' },\r\n];\r\n\r\n\r\nconst importMetaEnv = useGlobalConfig('env');\r\nconst isSSRShowDialog = ref(importMetaEnv.value.SSR === false);\r\nlet originLoginUrl = ``;\r\nif (isString(importMetaEnv.value[loginEnvKey])) {\r\n originLoginUrl = importMetaEnv.value[loginEnvKey];\r\n} else {\r\n const curMode = viteModes.find(item => item.mode == importMetaEnv.value.MODE);\r\n originLoginUrl = curMode?.loginUrl ?? 'https://gsso.giikin.com/admin/login/logout.html';\r\n}\r\nconst login = () => {\r\n const protocol = window.location.protocol;\r\n const host = window.location.host;\r\n const myPath = window.location.pathname;\r\n\r\n loginUrl.value = `${originLoginUrl}?_system=${props.system}`;\r\n if (route.value && props.needScanningRouteNames.includes(route.value?.name?.toString() ?? '')) {\r\n loginUrl.value += '&is_dashboard=1';\r\n }\r\n\r\n loginUrl.value += `&${props.redirectUrlField}=${protocol}//${host}${myPath}`;\r\n\r\n // eslint-disable-next-line no-console\r\n console.log(loginUrl.value);\r\n};\r\nwatch(\r\n () => loginStore.showLogin,\r\n value => {\r\n if (value) {\r\n login();\r\n }\r\n },\r\n);\r\n// 超过5分钟没扫码 会不能扫码 定时没登录的话3分钟刷新次\r\nconst reloadTimer = ref<number>();\r\nif (route.value) {\r\n watch(route, (newValue, oldValue) => {\r\n if (!oldValue || !newValue) {\r\n return;\r\n }\r\n if (oldValue.name && props.needScanningRouteNames.includes(oldValue.name.toString())) {\r\n window.clearInterval(reloadTimer.value);\r\n }\r\n if (newValue.name && props.needScanningRouteNames.includes(newValue.name.toString())) {\r\n reloadTimer.value = window.setInterval(\r\n () => {\r\n if (!loginStore.showLogin) {\r\n return;\r\n }\r\n // 登录超时后 3分钟刷新次页面\r\n window.location.reload();\r\n },\r\n 3 * 60 * 1000,\r\n );\r\n }\r\n });\r\n}\r\n\r\nonMounted(() => {\r\n isSSRShowDialog.value = true;\r\n if (loginStore.showLogin) {\r\n login();\r\n }\r\n // iframe事件监听\r\n window.addEventListener('message', async e => {\r\n // 刷新登陆状态\r\n if (e.data.type == 'giikin-Logged') {\r\n // eslint-disable-next-line no-console\r\n console.log(e.data);\r\n const token = Cookies.get('token');\r\n if (\r\n // 测试环境 但是需要登陆的情况\r\n (importMetaEnv.value.MODE !== 'production' && e.data?.data?.token) ||\r\n // 正式环境 登录成功 但是服务器token设置失败\r\n (importMetaEnv.value.MODE === 'production' && !token && e.data?.data?.token)\r\n ) {\r\n const now = new Date();\r\n let time = now.getTime();\r\n time += 8 * 60 * 60 * 1000; // 8 小时之后的时间(单位:毫秒)\r\n now.setTime(time);\r\n Cookies.set('token', e.data.data.token, { expires: now, domain: importMetaEnv.value.MODE === 'production' ? '.giikin.com' : undefined });\r\n loginStore.userToken = e.data.data.token;\r\n loginStore.userId = e.data.data.userId;\r\n if (!Cookies.get('sso_user_id') && e.data.data.userId) {\r\n Cookies.set('sso_user_id', e.data.data.userId, {\r\n expires: now,\r\n domain: importMetaEnv.value.MODE === 'production' ? '.giikin.com' : undefined,\r\n });\r\n }\r\n }\r\n // 触发登录成功监听\r\n if (e.data?.data?.token) {\r\n await loginStore.triggerLoginResult(e.data.data);\r\n }\r\n // ElMessage.success('登录成功,请关闭弹窗');\r\n loginStore.showLogin = false;\r\n if (route.value && props.needRealodRouteNames.includes(route.value.name?.toString() ?? '')) {\r\n window.location.reload();\r\n }\r\n }\r\n });\r\n});\r\nonUnmounted(() => {\r\n window.clearInterval(reloadTimer.value);\r\n});\r\n</script>\r\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"loginDialog.mjs","sources":["../../../../../../../packages/components/src/business/loginDialog/loginDialog.ts"],"sourcesContent":["// import { affixEmits as elAffixEmits, affixProps as elAffixProps } from 'element-plus';\n// import type { ExtractPropTypes } from 'vue';\n\nimport type { PropType } from 'vue';\nexport const loginDialogProps = {\n /**\n * @description 登录成功后,需要刷新的路由名称\n */\n needRealodRouteNames: {\n type: Array as PropType<string[]>,\n default: () => [],\n },\n /**\n * @description 需要扫码登录的路由\n */\n needScanningRouteNames: {\n type: Array as PropType<string[]>,\n default: () => [],\n },\n /**\n * @description 系统 默认18\n */\n system: {\n type: Number,\n default: () => 18,\n },\n /**\n * @description 重定向地址字段\n */\n redirectUrlField: {\n type: String,\n default: () => '_url',\n },\n};\n\n// export const loginDialogEmits = {\n// ...elAffixEmits,\n// // 自定义事件\n// // submit: (value: any) => !!value,\n// };\n"],"names":[],"mappings":"AAIO,MAAM,gBAAmB,GAAA;AAAA;AAAA;AAAA;AAAA,EAI9B,oBAAsB,EAAA;AAAA,IACpB,IAAM,EAAA,KAAA;AAAA,IACN,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;AAAA;AAAA;AAAA;AAAA,EAIA,sBAAwB,EAAA;AAAA,IACtB,IAAM,EAAA,KAAA;AAAA,IACN,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;AAAA;AAAA;AAAA;AAAA,EAIA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,SAAS,MAAM,EAAA;AAAA,GACjB;AAAA;AAAA;AAAA;AAAA,EAIA,gBAAkB,EAAA;AAAA,IAChB,IAAM,EAAA,MAAA;AAAA,IACN,SAAS,MAAM,MAAA;AAAA,GACjB;AACF;;;;"}
1
+ {"version":3,"file":"loginDialog.mjs","sources":["../../../../../../../packages/components/src/business/loginDialog/loginDialog.ts"],"sourcesContent":["// import { affixEmits as elAffixEmits, affixProps as elAffixProps } from 'element-plus';\r\n// import type { ExtractPropTypes } from 'vue';\r\n\r\nimport type { PropType } from 'vue';\r\nexport const loginDialogProps = {\r\n /**\r\n * @description 登录成功后,需要刷新的路由名称\r\n */\r\n needRealodRouteNames: {\r\n type: Array as PropType<string[]>,\r\n default: () => [],\r\n },\r\n /**\r\n * @description 需要扫码登录的路由\r\n */\r\n needScanningRouteNames: {\r\n type: Array as PropType<string[]>,\r\n default: () => [],\r\n },\r\n /**\r\n * @description 系统 默认18\r\n */\r\n system: {\r\n type: Number,\r\n default: () => 18,\r\n },\r\n /**\r\n * @description 重定向地址字段\r\n */\r\n redirectUrlField: {\r\n type: String,\r\n default: () => '_url',\r\n },\r\n};\r\n\r\n// export const loginDialogEmits = {\r\n// ...elAffixEmits,\r\n// // 自定义事件\r\n// // submit: (value: any) => !!value,\r\n// };\r\n"],"names":[],"mappings":"AAIO,MAAM,gBAAmB,GAAA;AAAA;AAAA;AAAA;AAAA,EAI9B,oBAAsB,EAAA;AAAA,IACpB,IAAM,EAAA,KAAA;AAAA,IACN,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;AAAA;AAAA;AAAA;AAAA,EAIA,sBAAwB,EAAA;AAAA,IACtB,IAAM,EAAA,KAAA;AAAA,IACN,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;AAAA;AAAA;AAAA;AAAA,EAIA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,SAAS,MAAM,EAAA;AAAA,GACjB;AAAA;AAAA;AAAA;AAAA,EAIA,gBAAkB,EAAA;AAAA,IAChB,IAAM,EAAA,MAAA;AAAA,IACN,SAAS,MAAM,MAAA;AAAA,GACjB;AACF;;;;"}
@@ -10,8 +10,9 @@ import TEXT from './assets/image/text.svg.mjs';
10
10
  import ZIP from './assets/image/zip.svg.mjs';
11
11
  import UNKNOWN from './assets/image/unknown.svg.mjs';
12
12
 
13
- const _hoisted_1 = { class: "gm-flex gm-items-center gm-justify-center" };
14
- const _hoisted_2 = ["src", "controls", "controlslist", "oncontextmenu"];
13
+ const _hoisted_1 = { class: "gm-flex gm-h-full gm-items-center gm-justify-center" };
14
+ const _hoisted_2 = ["src"];
15
+ const _hoisted_3 = ["src", "controls", "controlslist", "oncontextmenu"];
15
16
  var _sfc_main = /* @__PURE__ */ defineComponent({
16
17
  ...{
17
18
  name: "GmFileComponent"
@@ -57,19 +58,19 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
57
58
  return (_ctx, _cache) => {
58
59
  const _component_el_image = resolveComponent("el-image");
59
60
  return openBlock(), createElementBlock("div", _hoisted_1, [
60
- unref(isImageUrl)(verifyFile.value) ? (openBlock(), createBlock(_component_el_image, {
61
+ unref(isImageUrl)(verifyFile.value) ? (openBlock(), createElementBlock("img", {
61
62
  key: 0,
62
63
  src: fileURL.value,
63
64
  fit: "contain",
64
- style: { "width": "100%", "height": "100%" }
65
- }, null, 8, ["src"])) : unref(isVideoUrl)(verifyFile.value) ? (openBlock(), createElementBlock("video", {
65
+ style: { "max-width": "100%", "max-height": "100%" }
66
+ }, null, 8, _hoisted_2)) : unref(isVideoUrl)(verifyFile.value) ? (openBlock(), createElementBlock("video", {
66
67
  key: 1,
67
68
  src: fileURL.value,
68
69
  controls: _ctx.controls,
69
70
  controlslist: _ctx.controlslist,
70
71
  oncontextmenu: () => _ctx.oncontextmenu,
71
72
  style: { "width": "100%", "height": "100%" }
72
- }, null, 8, _hoisted_2)) : (openBlock(), createBlock(_component_el_image, {
73
+ }, null, 8, _hoisted_3)) : (openBlock(), createBlock(_component_el_image, {
73
74
  key: 2,
74
75
  style: normalizeStyle(iconStyle.value),
75
76
  src: iconURL.value
@@ -1 +1 @@
1
- {"version":3,"file":"FileComponent.vue2.mjs","sources":["../../../../../../../packages/components/src/composite/fileComponent/FileComponent.vue"],"sourcesContent":["<template>\r\n <div class=\"gm-flex gm-items-center gm-justify-center\">\r\n <el-image v-if=\"isImageUrl(verifyFile)\" :src=\"fileURL\" fit=\"contain\" style=\"width: 100%; height: 100%\" />\r\n <video\r\n v-else-if=\"isVideoUrl(verifyFile)\"\r\n :src=\"fileURL\"\r\n :controls=\"controls\"\r\n :controlslist=\"controlslist\"\r\n :oncontextmenu=\"() => oncontextmenu\"\r\n style=\"width: 100%; height: 100%\"\r\n />\r\n <el-image v-else :style=\"iconStyle\" :src=\"iconURL\" />\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport { isExcel, isImageUrl, isPDF, isPPT, isPSD, isText, isVideoUrl, isWord, isZip } from '@giime/utils/src/is';\r\nimport { fileComponentProps } from './fileComponent';\r\nimport PDF from './assets/image/pdf.svg';\r\nimport WORD from './assets/image/word.svg';\r\nimport EXCEL from './assets/image/excel.svg';\r\nimport PPT from './assets/image/ppt.svg';\r\nimport PSD from './assets/image/psd.svg';\r\nimport TEXT from './assets/image/text.svg';\r\nimport ZIP from './assets/image/zip.svg';\r\nimport UNKNOWN from './assets/image/unknown.svg';\r\nimport type { UploadFile } from 'element-plus';\r\n\r\ndefineOptions({\r\n name: 'GmFileComponent',\r\n});\r\n\r\nconst props = defineProps(fileComponentProps);\r\n\r\nconst iconStyle = computed(() => {\r\n return {\r\n width: `${props.size}px`,\r\n height: `${props.size}px`,\r\n };\r\n});\r\n\r\nconst fileURL = computed(() => {\r\n return props.file[props.url as keyof UploadFile] as string;\r\n});\r\n\r\nconst verifyFile = computed(() => {\r\n return props.file[props.field as keyof UploadFile] as string;\r\n});\r\n\r\nconst iconURL = computed(() => {\r\n const verifyFile = props.file[props.field as keyof UploadFile] as string;\r\n let result: any = null;\r\n if (isPDF(verifyFile)) {\r\n result = PDF;\r\n } else if (isWord(verifyFile)) {\r\n result = WORD;\r\n } else if (isExcel(verifyFile)) {\r\n result = EXCEL;\r\n } else if (isText(verifyFile)) {\r\n result = TEXT;\r\n } else if (isPPT(verifyFile)) {\r\n result = PPT;\r\n } else if (isZip(verifyFile)) {\r\n result = ZIP;\r\n } else if (isPSD(verifyFile)) {\r\n result = PSD;\r\n } else {\r\n result = UNKNOWN;\r\n }\r\n return result;\r\n});\r\n</script>\r\n"],"names":["verifyFile"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAiCA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAEd,IAAM,MAAA,SAAA,GAAY,SAAS,MAAM;AAC/B,MAAO,OAAA;AAAA,QACL,KAAA,EAAO,CAAG,EAAA,KAAA,CAAM,IAAI,CAAA,EAAA,CAAA;AAAA,QACpB,MAAA,EAAQ,CAAG,EAAA,KAAA,CAAM,IAAI,CAAA,EAAA,CAAA;AAAA,OACvB,CAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAM,MAAA,OAAA,GAAU,SAAS,MAAM;AAC7B,MAAO,OAAA,KAAA,CAAM,IAAK,CAAA,KAAA,CAAM,GAAuB,CAAA,CAAA;AAAA,KAChD,CAAA,CAAA;AAED,IAAM,MAAA,UAAA,GAAa,SAAS,MAAM;AAChC,MAAO,OAAA,KAAA,CAAM,IAAK,CAAA,KAAA,CAAM,KAAyB,CAAA,CAAA;AAAA,KAClD,CAAA,CAAA;AAED,IAAM,MAAA,OAAA,GAAU,SAAS,MAAM;AAC7B,MAAA,MAAMA,WAAa,GAAA,KAAA,CAAM,IAAK,CAAA,KAAA,CAAM,KAAyB,CAAA,CAAA;AAC7D,MAAA,IAAI,MAAc,GAAA,IAAA,CAAA;AAClB,MAAI,IAAA,KAAA,CAAMA,WAAU,CAAG,EAAA;AACrB,QAAS,MAAA,GAAA,GAAA,CAAA;AAAA,OACX,MAAA,IAAW,MAAOA,CAAAA,WAAU,CAAG,EAAA;AAC7B,QAAS,MAAA,GAAA,IAAA,CAAA;AAAA,OACX,MAAA,IAAW,OAAQA,CAAAA,WAAU,CAAG,EAAA;AAC9B,QAAS,MAAA,GAAA,KAAA,CAAA;AAAA,OACX,MAAA,IAAW,MAAOA,CAAAA,WAAU,CAAG,EAAA;AAC7B,QAAS,MAAA,GAAA,IAAA,CAAA;AAAA,OACX,MAAA,IAAW,KAAMA,CAAAA,WAAU,CAAG,EAAA;AAC5B,QAAS,MAAA,GAAA,GAAA,CAAA;AAAA,OACX,MAAA,IAAW,KAAMA,CAAAA,WAAU,CAAG,EAAA;AAC5B,QAAS,MAAA,GAAA,GAAA,CAAA;AAAA,OACX,MAAA,IAAW,KAAMA,CAAAA,WAAU,CAAG,EAAA;AAC5B,QAAS,MAAA,GAAA,GAAA,CAAA;AAAA,OACJ,MAAA;AACL,QAAS,MAAA,GAAA,OAAA,CAAA;AAAA,OACX;AACA,MAAO,OAAA,MAAA,CAAA;AAAA,KACR,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"FileComponent.vue2.mjs","sources":["../../../../../../../packages/components/src/composite/fileComponent/FileComponent.vue"],"sourcesContent":["<template>\r\n <div class=\"gm-flex gm-h-full gm-items-center gm-justify-center\">\r\n <img v-if=\"isImageUrl(verifyFile)\" :src=\"fileURL\" fit=\"contain\" style=\"max-width: 100%; max-height: 100%\" />\r\n <video\r\n v-else-if=\"isVideoUrl(verifyFile)\"\r\n :src=\"fileURL\"\r\n :controls=\"controls\"\r\n :controlslist=\"controlslist\"\r\n :oncontextmenu=\"() => oncontextmenu\"\r\n style=\"width: 100%; height: 100%\"\r\n />\r\n <el-image v-else :style=\"iconStyle\" :src=\"iconURL\" />\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport { isExcel, isImageUrl, isPDF, isPPT, isPSD, isText, isVideoUrl, isWord, isZip } from '@giime/utils/src/is';\r\nimport { fileComponentProps } from './fileComponent';\r\nimport PDF from './assets/image/pdf.svg';\r\nimport WORD from './assets/image/word.svg';\r\nimport EXCEL from './assets/image/excel.svg';\r\nimport PPT from './assets/image/ppt.svg';\r\nimport PSD from './assets/image/psd.svg';\r\nimport TEXT from './assets/image/text.svg';\r\nimport ZIP from './assets/image/zip.svg';\r\nimport UNKNOWN from './assets/image/unknown.svg';\r\nimport type { UploadFile } from 'element-plus';\r\n\r\ndefineOptions({\r\n name: 'GmFileComponent',\r\n});\r\n\r\nconst props = defineProps(fileComponentProps);\r\n\r\nconst iconStyle = computed(() => {\r\n return {\r\n width: `${props.size}px`,\r\n height: `${props.size}px`,\r\n };\r\n});\r\n\r\nconst fileURL = computed(() => {\r\n return props.file[props.url as keyof UploadFile] as string;\r\n});\r\n\r\nconst verifyFile = computed(() => {\r\n return props.file[props.field as keyof UploadFile] as string;\r\n});\r\n\r\nconst iconURL = computed(() => {\r\n const verifyFile = props.file[props.field as keyof UploadFile] as string;\r\n let result: any = null;\r\n if (isPDF(verifyFile)) {\r\n result = PDF;\r\n } else if (isWord(verifyFile)) {\r\n result = WORD;\r\n } else if (isExcel(verifyFile)) {\r\n result = EXCEL;\r\n } else if (isText(verifyFile)) {\r\n result = TEXT;\r\n } else if (isPPT(verifyFile)) {\r\n result = PPT;\r\n } else if (isZip(verifyFile)) {\r\n result = ZIP;\r\n } else if (isPSD(verifyFile)) {\r\n result = PSD;\r\n } else {\r\n result = UNKNOWN;\r\n }\r\n return result;\r\n});\r\n</script>\r\n"],"names":["verifyFile"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAiCA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAEd,IAAM,MAAA,SAAA,GAAY,SAAS,MAAM;AAC/B,MAAO,OAAA;AAAA,QACL,KAAA,EAAO,CAAG,EAAA,KAAA,CAAM,IAAI,CAAA,EAAA,CAAA;AAAA,QACpB,MAAA,EAAQ,CAAG,EAAA,KAAA,CAAM,IAAI,CAAA,EAAA,CAAA;AAAA,OACvB,CAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAM,MAAA,OAAA,GAAU,SAAS,MAAM;AAC7B,MAAO,OAAA,KAAA,CAAM,IAAK,CAAA,KAAA,CAAM,GAAuB,CAAA,CAAA;AAAA,KAChD,CAAA,CAAA;AAED,IAAM,MAAA,UAAA,GAAa,SAAS,MAAM;AAChC,MAAO,OAAA,KAAA,CAAM,IAAK,CAAA,KAAA,CAAM,KAAyB,CAAA,CAAA;AAAA,KAClD,CAAA,CAAA;AAED,IAAM,MAAA,OAAA,GAAU,SAAS,MAAM;AAC7B,MAAA,MAAMA,WAAa,GAAA,KAAA,CAAM,IAAK,CAAA,KAAA,CAAM,KAAyB,CAAA,CAAA;AAC7D,MAAA,IAAI,MAAc,GAAA,IAAA,CAAA;AAClB,MAAI,IAAA,KAAA,CAAMA,WAAU,CAAG,EAAA;AACrB,QAAS,MAAA,GAAA,GAAA,CAAA;AAAA,OACX,MAAA,IAAW,MAAOA,CAAAA,WAAU,CAAG,EAAA;AAC7B,QAAS,MAAA,GAAA,IAAA,CAAA;AAAA,OACX,MAAA,IAAW,OAAQA,CAAAA,WAAU,CAAG,EAAA;AAC9B,QAAS,MAAA,GAAA,KAAA,CAAA;AAAA,OACX,MAAA,IAAW,MAAOA,CAAAA,WAAU,CAAG,EAAA;AAC7B,QAAS,MAAA,GAAA,IAAA,CAAA;AAAA,OACX,MAAA,IAAW,KAAMA,CAAAA,WAAU,CAAG,EAAA;AAC5B,QAAS,MAAA,GAAA,GAAA,CAAA;AAAA,OACX,MAAA,IAAW,KAAMA,CAAAA,WAAU,CAAG,EAAA;AAC5B,QAAS,MAAA,GAAA,GAAA,CAAA;AAAA,OACX,MAAA,IAAW,KAAMA,CAAAA,WAAU,CAAG,EAAA;AAC5B,QAAS,MAAA,GAAA,GAAA,CAAA;AAAA,OACJ,MAAA;AACL,QAAS,MAAA,GAAA,OAAA,CAAA;AAAA,OACX;AACA,MAAO,OAAA,MAAA,CAAA;AAAA,KACR,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -7,7 +7,7 @@ import { previewFileProps } from './previewFile.mjs';
7
7
  const _hoisted_1 = { class: "gm-flex gm-select-none gm-items-center gm-justify-center gm-gap-4" };
8
8
  const _hoisted_2 = {
9
9
  class: "gm-flex gm-flex-1 gm-items-center gm-justify-center",
10
- style: { "height": "calc(100vh - 300px)" }
10
+ style: { "height": "calc(100vh - 240px)" }
11
11
  };
12
12
  var _sfc_main = /* @__PURE__ */ defineComponent({
13
13
  ...{
@@ -1 +1 @@
1
- {"version":3,"file":"PreviewFile.vue2.mjs","sources":["../../../../../../../packages/components/src/composite/previewFile/PreviewFile.vue"],"sourcesContent":["<template>\r\n <el-dialog v-model=\"dialogVisible\" title=\"预览\" :width=\"width\" top=\"10vh\" append-to-body destroy-on-close>\r\n <div class=\"gm-flex gm-select-none gm-items-center gm-justify-center gm-gap-4\">\r\n <div v-if=\"files.length > 1\" class=\"gm-cursor-pointer\" @click=\"prev\">\r\n <el-icon :size=\"40\"><ArrowLeftBold /></el-icon>\r\n </div>\r\n <div class=\"gm-flex gm-flex-1 gm-items-center gm-justify-center\" style=\"height: calc(100vh - 300px)\">\r\n <GmFileComponent v-bind=\"fileProps\" />\r\n </div>\r\n <div v-if=\"files.length > 1\" class=\"gm-cursor-pointer\" @click=\"next\">\r\n <el-icon :size=\"40\"><ArrowRightBold /></el-icon>\r\n </div>\r\n </div>\r\n </el-dialog>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport { ElMessage } from 'element-plus';\r\nimport { ArrowLeftBold, ArrowRightBold } from '@element-plus/icons-vue';\r\nimport GmFileComponent from '../fileComponent';\r\nimport { previewFileProps } from './previewFile';\r\nimport type { UploadFile } from 'element-plus';\r\n\r\ndefineOptions({\r\n name: 'GmPreviewFile',\r\n});\r\n\r\nconst props = defineProps(previewFileProps);\r\nconst dialogVisible = defineModel<boolean>('dialogVisible', { default: false });\r\nconst fileIndex = defineModel<number>('fileIndex', { default: 0 });\r\n\r\nconst files = computed(() => {\r\n let result: Partial<UploadFile>[] = props.fileList;\r\n if (props.fileList && !props.fileList.length && props.file) {\r\n result = [props.file];\r\n }\r\n return result;\r\n});\r\n\r\nconst fileProps = computed(() => {\r\n const file = files.value[fileIndex.value];\r\n return {\r\n file,\r\n controls: props.controls,\r\n oncontextmenu: props.oncontextmenu,\r\n controlslist: props.controlslist,\r\n field: props.field,\r\n url: props.url,\r\n size: props.size,\r\n };\r\n});\r\n\r\nconst prev = () => {\r\n if (fileIndex.value > 0) {\r\n fileIndex.value--;\r\n return;\r\n }\r\n ElMessage.warning('已经是第一张了');\r\n};\r\n\r\nconst next = () => {\r\n if (fileIndex.value < props.fileList.length - 1) {\r\n fileIndex.value++;\r\n return;\r\n }\r\n ElMessage.warning('没有更多了!');\r\n};\r\n</script>\r\n"],"names":["_useModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA4BA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AACd,IAAM,MAAA,aAAA,GAAgBA,QAAqB,CAAA,OAAA,EAAA,eAAmC,CAAA,CAAA;AAC9E,IAAM,MAAA,SAAA,GAAYA,QAAoB,CAAA,OAAA,EAAA,WAA2B,CAAA,CAAA;AAEjE,IAAM,MAAA,KAAA,GAAQ,SAAS,MAAM;AAC3B,MAAA,IAAI,SAAgC,KAAM,CAAA,QAAA,CAAA;AAC1C,MAAA,IAAI,MAAM,QAAY,IAAA,CAAC,MAAM,QAAS,CAAA,MAAA,IAAU,MAAM,IAAM,EAAA;AAC1D,QAAS,MAAA,GAAA,CAAC,MAAM,IAAI,CAAA,CAAA;AAAA,OACtB;AACA,MAAO,OAAA,MAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,MAAA,SAAA,GAAY,SAAS,MAAM;AAC/B,MAAA,MAAM,IAAO,GAAA,KAAA,CAAM,KAAM,CAAA,SAAA,CAAU,KAAK,CAAA,CAAA;AACxC,MAAO,OAAA;AAAA,QACL,IAAA;AAAA,QACA,UAAU,KAAM,CAAA,QAAA;AAAA,QAChB,eAAe,KAAM,CAAA,aAAA;AAAA,QACrB,cAAc,KAAM,CAAA,YAAA;AAAA,QACpB,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,KAAK,KAAM,CAAA,GAAA;AAAA,QACX,MAAM,KAAM,CAAA,IAAA;AAAA,OACd,CAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,MAAM,OAAO,MAAM;AACjB,MAAI,IAAA,SAAA,CAAU,QAAQ,CAAG,EAAA;AACvB,QAAU,SAAA,CAAA,KAAA,EAAA,CAAA;AACV,QAAA,OAAA;AAAA,OACF;AACA,MAAA,SAAA,CAAU,QAAQ,4CAAS,CAAA,CAAA;AAAA,KAC7B,CAAA;AAEA,IAAA,MAAM,OAAO,MAAM;AACjB,MAAA,IAAI,SAAU,CAAA,KAAA,GAAQ,KAAM,CAAA,QAAA,CAAS,SAAS,CAAG,EAAA;AAC/C,QAAU,SAAA,CAAA,KAAA,EAAA,CAAA;AACV,QAAA,OAAA;AAAA,OACF;AACA,MAAA,SAAA,CAAU,QAAQ,sCAAQ,CAAA,CAAA;AAAA,KAC5B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"PreviewFile.vue2.mjs","sources":["../../../../../../../packages/components/src/composite/previewFile/PreviewFile.vue"],"sourcesContent":["<template>\r\n <el-dialog v-model=\"dialogVisible\" title=\"预览\" :width=\"width\" top=\"10vh\" append-to-body destroy-on-close>\r\n <div class=\"gm-flex gm-select-none gm-items-center gm-justify-center gm-gap-4\">\r\n <div v-if=\"files.length > 1\" class=\"gm-cursor-pointer\" @click=\"prev\">\r\n <el-icon :size=\"40\"><ArrowLeftBold /></el-icon>\r\n </div>\r\n <div class=\"gm-flex gm-flex-1 gm-items-center gm-justify-center\" style=\"height: calc(100vh - 240px)\">\r\n <GmFileComponent v-bind=\"fileProps\" />\r\n </div>\r\n <div v-if=\"files.length > 1\" class=\"gm-cursor-pointer\" @click=\"next\">\r\n <el-icon :size=\"40\"><ArrowRightBold /></el-icon>\r\n </div>\r\n </div>\r\n </el-dialog>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { computed } from 'vue';\r\nimport { ElMessage } from 'element-plus';\r\nimport { ArrowLeftBold, ArrowRightBold } from '@element-plus/icons-vue';\r\nimport GmFileComponent from '../fileComponent';\r\nimport { previewFileProps } from './previewFile';\r\nimport type { UploadFile } from 'element-plus';\r\n\r\ndefineOptions({\r\n name: 'GmPreviewFile',\r\n});\r\n\r\nconst props = defineProps(previewFileProps);\r\nconst dialogVisible = defineModel<boolean>('dialogVisible', { default: false });\r\nconst fileIndex = defineModel<number>('fileIndex', { default: 0 });\r\n\r\nconst files = computed(() => {\r\n let result: Partial<UploadFile>[] = props.fileList;\r\n if (props.fileList && !props.fileList.length && props.file) {\r\n result = [props.file];\r\n }\r\n return result;\r\n});\r\n\r\nconst fileProps = computed(() => {\r\n const file = files.value[fileIndex.value];\r\n return {\r\n file,\r\n controls: props.controls,\r\n oncontextmenu: props.oncontextmenu,\r\n controlslist: props.controlslist,\r\n field: props.field,\r\n url: props.url,\r\n size: props.size,\r\n };\r\n});\r\n\r\nconst prev = () => {\r\n if (fileIndex.value > 0) {\r\n fileIndex.value--;\r\n return;\r\n }\r\n ElMessage.warning('已经是第一张了');\r\n};\r\n\r\nconst next = () => {\r\n if (fileIndex.value < props.fileList.length - 1) {\r\n fileIndex.value++;\r\n return;\r\n }\r\n ElMessage.warning('没有更多了!');\r\n};\r\n</script>\r\n"],"names":["_useModel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA4BA,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AACd,IAAM,MAAA,aAAA,GAAgBA,QAAqB,CAAA,OAAA,EAAA,eAAmC,CAAA,CAAA;AAC9E,IAAM,MAAA,SAAA,GAAYA,QAAoB,CAAA,OAAA,EAAA,WAA2B,CAAA,CAAA;AAEjE,IAAM,MAAA,KAAA,GAAQ,SAAS,MAAM;AAC3B,MAAA,IAAI,SAAgC,KAAM,CAAA,QAAA,CAAA;AAC1C,MAAA,IAAI,MAAM,QAAY,IAAA,CAAC,MAAM,QAAS,CAAA,MAAA,IAAU,MAAM,IAAM,EAAA;AAC1D,QAAS,MAAA,GAAA,CAAC,MAAM,IAAI,CAAA,CAAA;AAAA,OACtB;AACA,MAAO,OAAA,MAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,MAAA,SAAA,GAAY,SAAS,MAAM;AAC/B,MAAA,MAAM,IAAO,GAAA,KAAA,CAAM,KAAM,CAAA,SAAA,CAAU,KAAK,CAAA,CAAA;AACxC,MAAO,OAAA;AAAA,QACL,IAAA;AAAA,QACA,UAAU,KAAM,CAAA,QAAA;AAAA,QAChB,eAAe,KAAM,CAAA,aAAA;AAAA,QACrB,cAAc,KAAM,CAAA,YAAA;AAAA,QACpB,OAAO,KAAM,CAAA,KAAA;AAAA,QACb,KAAK,KAAM,CAAA,GAAA;AAAA,QACX,MAAM,KAAM,CAAA,IAAA;AAAA,OACd,CAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,MAAM,OAAO,MAAM;AACjB,MAAI,IAAA,SAAA,CAAU,QAAQ,CAAG,EAAA;AACvB,QAAU,SAAA,CAAA,KAAA,EAAA,CAAA;AACV,QAAA,OAAA;AAAA,OACF;AACA,MAAA,SAAA,CAAU,QAAQ,4CAAS,CAAA,CAAA;AAAA,KAC7B,CAAA;AAEA,IAAA,MAAM,OAAO,MAAM;AACjB,MAAA,IAAI,SAAU,CAAA,KAAA,GAAQ,KAAM,CAAA,QAAA,CAAS,SAAS,CAAG,EAAA;AAC/C,QAAU,SAAA,CAAA,KAAA,EAAA,CAAA;AACV,QAAA,OAAA;AAAA,OACF;AACA,MAAA,SAAA,CAAU,QAAQ,sCAAQ,CAAA,CAAA;AAAA,KAC5B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -11,7 +11,7 @@ const previewFileProps = {
11
11
  /** 弹层宽度 */
12
12
  width: {
13
13
  type: String,
14
- default: "1200px"
14
+ default: "1000px"
15
15
  }
16
16
  };
17
17
 
@@ -1 +1 @@
1
- {"version":3,"file":"previewFile.mjs","sources":["../../../../../../../packages/components/src/composite/previewFile/previewFile.ts"],"sourcesContent":["import { fileComponentProps } from '../fileComponent';\r\nimport type { PropType } from 'vue';\r\nimport type { UploadFile } from 'element-plus';\r\n\r\nexport const previewFileProps = {\r\n ...fileComponentProps,\r\n /** 文件列表 */\r\n fileList: {\r\n type: Array as PropType<Partial<UploadFile>[]>,\r\n default: () => [],\r\n },\r\n /** 弹层宽度 */\r\n width: {\r\n type: String,\r\n default: '1200px',\r\n },\r\n};\r\n"],"names":[],"mappings":";;;AAIO,MAAM,gBAAmB,GAAA;AAAA,EAC9B,GAAG,kBAAA;AAAA;AAAA,EAEH,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,KAAA;AAAA,IACN,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;AAAA;AAAA,EAEA,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,QAAA;AAAA,GACX;AACF;;;;"}
1
+ {"version":3,"file":"previewFile.mjs","sources":["../../../../../../../packages/components/src/composite/previewFile/previewFile.ts"],"sourcesContent":["import { fileComponentProps } from '../fileComponent';\r\nimport type { PropType } from 'vue';\r\nimport type { UploadFile } from 'element-plus';\r\n\r\nexport const previewFileProps = {\r\n ...fileComponentProps,\r\n /** 文件列表 */\r\n fileList: {\r\n type: Array as PropType<Partial<UploadFile>[]>,\r\n default: () => [],\r\n },\r\n /** 弹层宽度 */\r\n width: {\r\n type: String,\r\n default: '1000px',\r\n },\r\n};\r\n"],"names":[],"mappings":";;;AAIO,MAAM,gBAAmB,GAAA;AAAA,EAC9B,GAAG,kBAAA;AAAA;AAAA,EAEH,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,KAAA;AAAA,IACN,OAAA,EAAS,MAAM,EAAC;AAAA,GAClB;AAAA;AAAA,EAEA,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,QAAA;AAAA,GACX;AACF;;;;"}
@@ -3,7 +3,7 @@ import './UploadFile.vue3.mjs';
3
3
  import './UploadFile.vue4.mjs';
4
4
  import _export_sfc from '../../../../_virtual/_plugin-vue_export-helper.mjs';
5
5
 
6
- var UploadFile = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-80cd8f61"]]);
6
+ var UploadFile = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-bb2dfbf0"]]);
7
7
 
8
8
  export { UploadFile as default };
9
9
  //# sourceMappingURL=UploadFile.vue.mjs.map
@@ -1,4 +1,4 @@
1
- import { pushScopeId, popScopeId, createElementVNode, createTextVNode, defineComponent, mergeModels, useModel, ref, resolveComponent, openBlock, createElementBlock, createVNode, withCtx, mergeProps, createSlots, renderSlot, normalizeStyle, unref, createCommentVNode, createBlock } from 'vue';
1
+ import { pushScopeId, popScopeId, createElementVNode, createTextVNode, defineComponent, mergeModels, useModel, ref, resolveComponent, openBlock, createElementBlock, normalizeClass, createVNode, withCtx, mergeProps, createSlots, renderSlot, normalizeStyle, unref, createBlock, createCommentVNode } from 'vue';
2
2
  import { ElMessageBox } from 'element-plus';
3
3
  import { useAliossHookStore } from '../../../../utils/src/alioss/aliossPutHook.mjs';
4
4
  import { UploadFilled, View, Delete } from '@element-plus/icons-vue';
@@ -6,9 +6,8 @@ import { GmFileComponent } from '../fileComponent/index.mjs';
6
6
  import { GmPreviewFile } from '../previewFile/index.mjs';
7
7
  import { uploadFileProps } from './uploadFile.mjs';
8
8
 
9
- const _withScopeId = (n) => (pushScopeId("data-v-80cd8f61"), n = n(), popScopeId(), n);
10
- const _hoisted_1 = { class: "el-upload-file" };
11
- const _hoisted_2 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode(
9
+ const _withScopeId = (n) => (pushScopeId("data-v-bb2dfbf0"), n = n(), popScopeId(), n);
10
+ const _hoisted_1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode(
12
11
  "div",
13
12
  { class: "el-upload__text gm-text-center !gm-text-xs gm-text-gray-500" },
14
13
  [
@@ -18,9 +17,9 @@ const _hoisted_2 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElem
18
17
  -1
19
18
  /* HOISTED */
20
19
  ));
21
- const _hoisted_3 = { class: "el-upload-list__item-actions" };
20
+ const _hoisted_2 = { class: "el-upload-list__item-actions" };
21
+ const _hoisted_3 = ["onClick"];
22
22
  const _hoisted_4 = ["onClick"];
23
- const _hoisted_5 = ["onClick"];
24
23
  var _sfc_main = /* @__PURE__ */ defineComponent({
25
24
  ...{
26
25
  name: "GmUploadFile"
@@ -69,6 +68,12 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
69
68
  });
70
69
  return res;
71
70
  };
71
+ const beforeRemove = (file, files) => {
72
+ if (props.disabled) {
73
+ return false;
74
+ }
75
+ return props.beforeRemove ? props.beforeRemove(file, files) : true;
76
+ };
72
77
  const handleRemove = (file) => {
73
78
  ElMessageBox.confirm("\u786E\u5B9A\u5220\u9664\u8BE5\u6587\u4EF6\u5417\uFF1F", "\u63D0\u793A", {
74
79
  confirmButtonText: "\u786E\u5B9A",
@@ -110,127 +115,148 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
110
115
  });
111
116
  return (_ctx, _cache) => {
112
117
  const _component_el_icon = resolveComponent("el-icon");
118
+ const _component_el_button = resolveComponent("el-button");
113
119
  const _component_el_checkbox = resolveComponent("el-checkbox");
114
120
  const _component_el_upload = resolveComponent("el-upload");
115
121
  const _component_el_checkbox_group = resolveComponent("el-checkbox-group");
116
- return openBlock(), createElementBlock("div", _hoisted_1, [
117
- createVNode(_component_el_checkbox_group, {
118
- modelValue: checkoutFiles.value,
119
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => checkoutFiles.value = $event),
120
- onChange: handleCheckedChange
121
- }, {
122
- default: withCtx(() => [
123
- createVNode(_component_el_upload, mergeProps({
124
- ref_key: "uploadFileRef",
125
- ref: uploadFileRef
126
- }, props, {
127
- "file-list": fileList.value,
128
- "onUpdate:fileList": _cache[0] || (_cache[0] = ($event) => fileList.value = $event),
129
- action: "",
130
- "http-request": httpRequest
131
- }), createSlots({
132
- default: withCtx(() => [
133
- !_ctx.disabled ? renderSlot(_ctx.$slots, "default", { key: 0 }, () => [
134
- createElementVNode(
135
- "div",
136
- {
137
- class: "gm-flex gm-flex-col gm-items-center gm-justify-center gm-rounded-md gm-p-1",
138
- style: normalizeStyle([{ "flex-direction": "column" }, { width: _ctx.width + "px", height: _ctx.height + "px" }])
139
- },
140
- [
141
- createVNode(_component_el_icon, {
142
- size: 30,
143
- color: "#999"
144
- }, {
145
- default: withCtx(() => [
146
- createVNode(unref(UploadFilled))
147
- ]),
148
- _: 1
149
- /* STABLE */
150
- }),
151
- _hoisted_2
152
- ],
153
- 4
154
- /* STYLE */
155
- )
156
- ], true) : createCommentVNode("v-if", true)
157
- ]),
158
- _: 2
159
- /* DYNAMIC */
160
- }, [
161
- _ctx.showFileList && _ctx.listType === "picture-card" ? {
162
- name: "file",
163
- fn: withCtx(({ file }) => [
164
- _ctx.checkbox ? (openBlock(), createBlock(_component_el_checkbox, {
165
- key: 0,
166
- value: file
167
- }, null, 8, ["value"])) : createCommentVNode("v-if", true),
168
- renderSlot(_ctx.$slots, "file", { file }, () => [
169
- createElementVNode(
122
+ return openBlock(), createElementBlock(
123
+ "div",
124
+ {
125
+ class: normalizeClass([{ "gm-upload-file-picture-card": _ctx.listType === "picture-card", "gm-upload-file-disabled": _ctx.disabled }, "gm-upload-file"])
126
+ },
127
+ [
128
+ createVNode(_component_el_checkbox_group, {
129
+ modelValue: checkoutFiles.value,
130
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => checkoutFiles.value = $event),
131
+ onChange: handleCheckedChange
132
+ }, {
133
+ default: withCtx(() => [
134
+ createVNode(_component_el_upload, mergeProps({
135
+ ref_key: "uploadFileRef",
136
+ ref: uploadFileRef
137
+ }, props, {
138
+ "file-list": fileList.value,
139
+ "onUpdate:fileList": _cache[0] || (_cache[0] = ($event) => fileList.value = $event),
140
+ "before-remove": beforeRemove,
141
+ action: "",
142
+ "http-request": httpRequest
143
+ }), createSlots({
144
+ default: withCtx(() => [
145
+ !_ctx.disabled ? renderSlot(_ctx.$slots, "default", { key: 0 }, () => [
146
+ _ctx.listType === "picture-card" ? (openBlock(), createElementBlock(
170
147
  "div",
171
148
  {
172
- class: "gm-flex gm-items-center gm-justify-center gm-rounded-md",
173
- style: normalizeStyle({ width: _ctx.width + "px", height: _ctx.height + "px" })
149
+ key: 0,
150
+ class: "gm-flex gm-flex-col gm-items-center gm-justify-center gm-rounded-md gm-p-1",
151
+ style: normalizeStyle([{ "flex-direction": "column" }, { width: _ctx.width + "px", height: _ctx.height + "px" }])
174
152
  },
175
153
  [
176
- createVNode(unref(GmFileComponent), {
177
- file,
178
- size: _ctx.width - 40,
179
- url: _ctx.url,
180
- controls: false
181
- }, null, 8, ["file", "size", "url"])
182
- ],
183
- 4
184
- /* STYLE */
185
- ),
186
- createElementVNode("div", _hoisted_3, [
187
- createElementVNode("span", {
188
- class: "el-upload-list__item-preview",
189
- onClick: ($event) => handlePreview(file)
190
- }, [
191
- createVNode(_component_el_icon, null, {
154
+ createVNode(_component_el_icon, {
155
+ size: 30,
156
+ color: "#999"
157
+ }, {
192
158
  default: withCtx(() => [
193
- createVNode(unref(View))
159
+ createVNode(unref(UploadFilled))
194
160
  ]),
195
161
  _: 1
196
162
  /* STABLE */
197
- })
198
- ], 8, _hoisted_4),
199
- _ctx.showDelete ? (openBlock(), createElementBlock("span", {
200
- key: 0,
201
- class: "el-upload-list__item-delete",
202
- onClick: ($event) => handleRemove(file)
203
- }, [
204
- createVNode(_component_el_icon, null, {
205
- default: withCtx(() => [
206
- createVNode(unref(Delete))
207
- ]),
208
- _: 1
209
- /* STABLE */
210
- })
211
- ], 8, _hoisted_5)) : createCommentVNode("v-if", true)
212
- ])
213
- ], true)
163
+ }),
164
+ _hoisted_1
165
+ ],
166
+ 4
167
+ /* STYLE */
168
+ )) : (openBlock(), createBlock(_component_el_button, {
169
+ key: 1,
170
+ type: "primary",
171
+ size: "default"
172
+ }, {
173
+ default: withCtx(() => [
174
+ createTextVNode("\u70B9\u51FB\u4E0A\u4F20")
175
+ ]),
176
+ _: 1
177
+ /* STABLE */
178
+ }))
179
+ ], true) : createCommentVNode("v-if", true)
214
180
  ]),
215
- key: "0"
216
- } : void 0
217
- ]), 1040, ["file-list"])
218
- ]),
219
- _: 3
220
- /* FORWARDED */
221
- }, 8, ["modelValue"]),
222
- createVNode(unref(GmPreviewFile), {
223
- dialogVisible: dialogVisible.value,
224
- "onUpdate:dialogVisible": _cache[2] || (_cache[2] = ($event) => dialogVisible.value = $event),
225
- "file-index": fileIndex.value,
226
- "onUpdate:fileIndex": _cache[3] || (_cache[3] = ($event) => fileIndex.value = $event),
227
- "file-list": fileList.value,
228
- controls: _ctx.controls,
229
- oncontextmenu: _ctx.oncontextmenu,
230
- controlslist: _ctx.controlslist,
231
- field: _ctx.field
232
- }, null, 8, ["dialogVisible", "file-index", "file-list", "controls", "oncontextmenu", "controlslist", "field"])
233
- ]);
181
+ _: 2
182
+ /* DYNAMIC */
183
+ }, [
184
+ _ctx.showFileList && _ctx.listType === "picture-card" ? {
185
+ name: "file",
186
+ fn: withCtx(({ file }) => [
187
+ _ctx.checkbox ? (openBlock(), createBlock(_component_el_checkbox, {
188
+ key: 0,
189
+ value: file
190
+ }, null, 8, ["value"])) : createCommentVNode("v-if", true),
191
+ renderSlot(_ctx.$slots, "file", { file }, () => [
192
+ createElementVNode(
193
+ "div",
194
+ {
195
+ class: "gm-flex gm-items-center gm-justify-center gm-rounded-md",
196
+ style: normalizeStyle({ width: _ctx.width + "px", height: _ctx.height + "px" })
197
+ },
198
+ [
199
+ createVNode(unref(GmFileComponent), {
200
+ file,
201
+ size: _ctx.width - 40,
202
+ url: _ctx.url,
203
+ controls: false
204
+ }, null, 8, ["file", "size", "url"])
205
+ ],
206
+ 4
207
+ /* STYLE */
208
+ ),
209
+ createElementVNode("div", _hoisted_2, [
210
+ createElementVNode("span", {
211
+ class: "el-upload-list__item-preview",
212
+ onClick: ($event) => handlePreview(file)
213
+ }, [
214
+ createVNode(_component_el_icon, null, {
215
+ default: withCtx(() => [
216
+ createVNode(unref(View))
217
+ ]),
218
+ _: 1
219
+ /* STABLE */
220
+ })
221
+ ], 8, _hoisted_3),
222
+ _ctx.showDelete ? (openBlock(), createElementBlock("span", {
223
+ key: 0,
224
+ class: "el-upload-list__item-delete",
225
+ onClick: ($event) => handleRemove(file)
226
+ }, [
227
+ createVNode(_component_el_icon, null, {
228
+ default: withCtx(() => [
229
+ createVNode(unref(Delete))
230
+ ]),
231
+ _: 1
232
+ /* STABLE */
233
+ })
234
+ ], 8, _hoisted_4)) : createCommentVNode("v-if", true)
235
+ ])
236
+ ], true)
237
+ ]),
238
+ key: "0"
239
+ } : void 0
240
+ ]), 1040, ["file-list"])
241
+ ]),
242
+ _: 3
243
+ /* FORWARDED */
244
+ }, 8, ["modelValue"]),
245
+ createVNode(unref(GmPreviewFile), {
246
+ dialogVisible: dialogVisible.value,
247
+ "onUpdate:dialogVisible": _cache[2] || (_cache[2] = ($event) => dialogVisible.value = $event),
248
+ "file-index": fileIndex.value,
249
+ "onUpdate:fileIndex": _cache[3] || (_cache[3] = ($event) => fileIndex.value = $event),
250
+ "file-list": fileList.value,
251
+ controls: _ctx.controls,
252
+ oncontextmenu: _ctx.oncontextmenu,
253
+ controlslist: _ctx.controlslist,
254
+ field: _ctx.field
255
+ }, null, 8, ["dialogVisible", "file-index", "file-list", "controls", "oncontextmenu", "controlslist", "field"])
256
+ ],
257
+ 2
258
+ /* CLASS */
259
+ );
234
260
  };
235
261
  }
236
262
  });
@@ -1 +1 @@
1
- {"version":3,"file":"UploadFile.vue2.mjs","sources":["../../../../../../../packages/components/src/composite/uploadFile/UploadFile.vue"],"sourcesContent":["<template>\r\n <div class=\"el-upload-file\">\r\n <el-checkbox-group v-model=\"checkoutFiles\" @change=\"handleCheckedChange\">\r\n <el-upload ref=\"uploadFileRef\" v-bind=\"props\" v-model:file-list=\"fileList\" action=\"\" :http-request=\"httpRequest\">\r\n <slot v-if=\"!disabled\">\r\n <div\r\n class=\"gm-flex gm-flex-col gm-items-center gm-justify-center gm-rounded-md gm-p-1\"\r\n style=\"flex-direction: column\"\r\n :style=\"{ width: width + 'px', height: height + 'px' }\"\r\n >\r\n <el-icon :size=\"30\" color=\"#999\">\r\n <UploadFilled />\r\n </el-icon>\r\n <div class=\"el-upload__text gm-text-center !gm-text-xs gm-text-gray-500\">\r\n 将文件拖到此处,或 <em class=\"gm-text-blue-700\">点击上传</em>\r\n </div>\r\n </div>\r\n </slot>\r\n <template v-if=\"showFileList && listType === 'picture-card'\" #file=\"{ file }\">\r\n <el-checkbox v-if=\"checkbox\" :value=\"file\" />\r\n <slot name=\"file\" :file=\"file\">\r\n <div class=\"gm-flex gm-items-center gm-justify-center gm-rounded-md\" :style=\"{ width: width + 'px', height: height + 'px' }\">\r\n <GmFileComponent :file=\"file\" :size=\"width - 40\" :url=\"url\" :controls=\"false\" />\r\n </div>\r\n <div class=\"el-upload-list__item-actions\">\r\n <span class=\"el-upload-list__item-preview\" @click=\"handlePreview(file)\">\r\n <el-icon><View /></el-icon>\r\n </span>\r\n <span v-if=\"showDelete\" class=\"el-upload-list__item-delete\" @click=\"handleRemove(file)\">\r\n <el-icon><Delete /></el-icon>\r\n </span>\r\n </div>\r\n </slot>\r\n </template>\r\n </el-upload>\r\n </el-checkbox-group>\r\n\r\n <GmPreviewFile\r\n v-model:dialogVisible=\"dialogVisible\"\r\n v-model:file-index=\"fileIndex\"\r\n :file-list=\"fileList\"\r\n :controls=\"controls\"\r\n :oncontextmenu=\"oncontextmenu\"\r\n :controlslist=\"controlslist\"\r\n :field=\"field\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref } from 'vue';\r\nimport { ElMessageBox } from 'element-plus';\r\nimport { useAliossHookStore } from '@giime/utils/src/alioss/aliossPutHook';\r\nimport { Delete, UploadFilled, View } from '@element-plus/icons-vue';\r\nimport GmFileComponent from '../fileComponent';\r\nimport GmPreviewFile from '../previewFile';\r\nimport { uploadFileProps } from './uploadFile';\r\nimport type { CheckboxValueType, UploadFile, UploadFiles, UploadInstance, UploadRawFile, UploadRequestOptions, UploadStatus } from 'element-plus';\r\nimport type { PostSaveFileResponse } from '@giime/utils/src/alioss/aliossPutHook';\r\n\r\ndefineOptions({\r\n name: 'GmUploadFile',\r\n});\r\n\r\nconst props = defineProps(uploadFileProps);\r\nconst emit = defineEmits([\"handleRemove\", \"handleSaveFileSuccess\"]);\r\n\r\nconst { uploadFile, saveFileResult } = useAliossHookStore();\r\n\r\nsaveFileResult((res: any) => {\r\n const { url, md5_code, file_size } = res;\r\n emit('handleSaveFileSuccess', { url, md5_code, file_size });\r\n});\r\n\r\n/** 上传文件 */\r\nconst fileList = defineModel<UploadFiles>('fileList', { default: [] });\r\n/** 多选数据 */\r\nconst checkoutFiles = defineModel<any[]>('checkoutFiles', { default: [] });\r\n/** 多选状态状态 */\r\nconst isIndeterminate = defineModel<boolean>('isIndeterminate', { default: false });\r\n/** 是否全选 */\r\nconst checkedAll = defineModel<boolean>('checkedAll', { default: false });\r\nconst handleCheckedChange = (value: CheckboxValueType[]) => {\r\n const { length } = value;\r\n checkedAll.value = length === fileList.value.length;\r\n isIndeterminate.value = length > 0 && length < fileList.value.length;\r\n};\r\n\r\n/* 上传 */\r\nconst httpRequest = async (params: UploadRequestOptions) => {\r\n const { file } = params;\r\n const res = await uploadFile({\r\n file,\r\n fileName: props.fileName,\r\n folder: props.folder,\r\n seat: props.seat,\r\n partSize: props.partSize,\r\n parallel: props.parallel,\r\n options: props.options,\r\n bucket: props.bucket,\r\n saveStore: props.saveStore,\r\n });\r\n return res;\r\n};\r\n\r\n/* 删除文件 */\r\nconst handleRemove = (file: UploadFile) => {\r\n ElMessageBox.confirm('确定删除该文件吗?', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning',\r\n })\r\n .then(() => {\r\n const index = fileList.value.indexOf(file);\r\n fileList.value = fileList.value.filter((v, i) => v.url !== file.url || (v.url === file.url && i !== index));\r\n emit('handleRemove', { file, index });\r\n return props.onRemove(file, fileList.value);\r\n })\r\n .catch(() => {});\r\n};\r\n\r\nconst uploadFileRef = ref<UploadInstance>();\r\n/* 手动上传 */\r\nconst submit = () => {\r\n uploadFileRef.value!.submit();\r\n};\r\n\r\n/** 取消上传 */\r\nconst abort = (file: UploadFile) => {\r\n uploadFileRef.value!.abort(file);\r\n};\r\n\r\n/** 清空已上传的文件列表 */\r\nconst clearFiles = (status?: UploadStatus[]) => {\r\n uploadFileRef.value!.clearFiles(status);\r\n};\r\n\r\n/** 手动选择文件 */\r\nconst handleStart = (rawFile: UploadRawFile) => {\r\n uploadFileRef.value!.handleStart(rawFile);\r\n};\r\n\r\n/** 预览 */\r\nconst dialogVisible = ref(false);\r\nconst fileIndex = ref(0);\r\nconst handlePreview = (file: UploadFile) => {\r\n fileIndex.value = fileList.value.indexOf(file);\r\n dialogVisible.value = true;\r\n};\r\n\r\ndefineExpose({\r\n submit,\r\n abort,\r\n clearFiles,\r\n handleStart,\r\n uploadFileRef,\r\n});\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.gm-upload-preview-dialog {\r\n :deep(.el-dialog__body) {\r\n padding: 0;\r\n }\r\n}\r\n:deep(.el-upload-list__item),\r\n:deep(.el-upload--picture-card) {\r\n width: 120px;\r\n height: 120px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n</style>\r\n<style lang=\"scss\">\r\n.el-upload-file {\r\n line-height: normal;\r\n .el-checkbox {\r\n position: absolute;\r\n left: 10px;\r\n top: 0;\r\n z-index: 9;\r\n }\r\n .el-upload-list__item-file-name {\r\n line-height: normal;\r\n }\r\n}\r\n</style>\r\n"],"names":["_useModel"],"mappings":"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"}
1
+ {"version":3,"file":"UploadFile.vue2.mjs","sources":["../../../../../../../packages/components/src/composite/uploadFile/UploadFile.vue"],"sourcesContent":["<template>\r\n <div :class=\"{ 'gm-upload-file-picture-card': listType === 'picture-card', 'gm-upload-file-disabled': disabled }\" class=\"gm-upload-file\">\r\n <el-checkbox-group v-model=\"checkoutFiles\" @change=\"handleCheckedChange\">\r\n <el-upload ref=\"uploadFileRef\" v-bind=\"props\" v-model:file-list=\"fileList\" :before-remove=\"beforeRemove\" action=\"\" :http-request=\"httpRequest\">\r\n <slot v-if=\"!disabled\">\r\n <template v-if=\"listType === 'picture-card'\">\r\n <div\r\n class=\"gm-flex gm-flex-col gm-items-center gm-justify-center gm-rounded-md gm-p-1\"\r\n style=\"flex-direction: column\"\r\n :style=\"{ width: width + 'px', height: height + 'px' }\"\r\n >\r\n <el-icon :size=\"30\" color=\"#999\">\r\n <UploadFilled />\r\n </el-icon>\r\n <div class=\"el-upload__text gm-text-center !gm-text-xs gm-text-gray-500\">\r\n 将文件拖到此处,或 <em class=\"gm-text-blue-700\">点击上传</em>\r\n </div>\r\n </div>\r\n </template>\r\n <template v-else>\r\n <el-button type=\"primary\" size=\"default\">点击上传</el-button>\r\n </template>\r\n </slot>\r\n <template v-if=\"showFileList && listType === 'picture-card'\" #file=\"{ file }\">\r\n <el-checkbox v-if=\"checkbox\" :value=\"file\" />\r\n <slot name=\"file\" :file=\"file\">\r\n <div class=\"gm-flex gm-items-center gm-justify-center gm-rounded-md\" :style=\"{ width: width + 'px', height: height + 'px' }\">\r\n <GmFileComponent :file=\"file\" :size=\"width - 40\" :url=\"url\" :controls=\"false\" />\r\n </div>\r\n <div class=\"el-upload-list__item-actions\">\r\n <span class=\"el-upload-list__item-preview\" @click=\"handlePreview(file)\">\r\n <el-icon><View /></el-icon>\r\n </span>\r\n <span v-if=\"showDelete\" class=\"el-upload-list__item-delete\" @click=\"handleRemove(file)\">\r\n <el-icon><Delete /></el-icon>\r\n </span>\r\n </div>\r\n </slot>\r\n </template>\r\n </el-upload>\r\n </el-checkbox-group>\r\n\r\n <GmPreviewFile\r\n v-model:dialogVisible=\"dialogVisible\"\r\n v-model:file-index=\"fileIndex\"\r\n :file-list=\"fileList\"\r\n :controls=\"controls\"\r\n :oncontextmenu=\"oncontextmenu\"\r\n :controlslist=\"controlslist\"\r\n :field=\"field\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\nimport { ref } from 'vue';\r\nimport { ElMessageBox } from 'element-plus';\r\nimport { useAliossHookStore } from '@giime/utils/src/alioss/aliossPutHook';\r\nimport { Delete, UploadFilled, View } from '@element-plus/icons-vue';\r\nimport GmFileComponent from '../fileComponent';\r\nimport GmPreviewFile from '../previewFile';\r\nimport { uploadFileProps } from './uploadFile';\r\nimport type { CheckboxValueType, UploadFile, UploadFiles, UploadInstance, UploadRawFile, UploadRequestOptions, UploadStatus } from 'element-plus';\r\nimport type { PostSaveFileResponse } from '@giime/utils/src/alioss/aliossPutHook';\r\n\r\ndefineOptions({\r\n name: 'GmUploadFile',\r\n});\r\n\r\nconst props = defineProps(uploadFileProps);\r\nconst emit = defineEmits([\"handleRemove\", \"handleSaveFileSuccess\"]);\r\n\r\nconst { uploadFile, saveFileResult } = useAliossHookStore();\r\n\r\nsaveFileResult((res: any) => {\r\n const { url, md5_code, file_size } = res;\r\n emit('handleSaveFileSuccess', { url, md5_code, file_size });\r\n});\r\n\r\n/** 上传文件 */\r\nconst fileList = defineModel<UploadFiles>('fileList', { default: [] });\r\n/** 多选数据 */\r\nconst checkoutFiles = defineModel<any[]>('checkoutFiles', { default: [] });\r\n/** 多选状态状态 */\r\nconst isIndeterminate = defineModel<boolean>('isIndeterminate', { default: false });\r\n/** 是否全选 */\r\nconst checkedAll = defineModel<boolean>('checkedAll', { default: false });\r\nconst handleCheckedChange = (value: CheckboxValueType[]) => {\r\n const { length } = value;\r\n checkedAll.value = length === fileList.value.length;\r\n isIndeterminate.value = length > 0 && length < fileList.value.length;\r\n};\r\n\r\n/* 上传 */\r\nconst httpRequest = async (params: UploadRequestOptions) => {\r\n const { file } = params;\r\n const res = await uploadFile({\r\n file,\r\n fileName: props.fileName,\r\n folder: props.folder,\r\n seat: props.seat,\r\n partSize: props.partSize,\r\n parallel: props.parallel,\r\n options: props.options,\r\n bucket: props.bucket,\r\n saveStore: props.saveStore,\r\n });\r\n return res;\r\n};\r\n\r\n/* 删除文件前 */\r\nconst beforeRemove = (file: UploadFile, files: UploadFiles) => {\r\n if (props.disabled) {\r\n return false;\r\n }\r\n return props.beforeRemove ? props.beforeRemove(file, files) : true;\r\n};\r\n\r\n/* 删除文件 */\r\nconst handleRemove = (file: UploadFile) => {\r\n ElMessageBox.confirm('确定删除该文件吗?', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning',\r\n })\r\n .then(() => {\r\n const index = fileList.value.indexOf(file);\r\n fileList.value = fileList.value.filter((v, i) => v.url !== file.url || (v.url === file.url && i !== index));\r\n emit('handleRemove', { file, index });\r\n return props.onRemove(file, fileList.value);\r\n })\r\n .catch(() => {});\r\n};\r\n\r\nconst uploadFileRef = ref<UploadInstance>();\r\n/* 手动上传 */\r\nconst submit = () => {\r\n uploadFileRef.value!.submit();\r\n};\r\n\r\n/** 取消上传 */\r\nconst abort = (file: UploadFile) => {\r\n uploadFileRef.value!.abort(file);\r\n};\r\n\r\n/** 清空已上传的文件列表 */\r\nconst clearFiles = (status?: UploadStatus[]) => {\r\n uploadFileRef.value!.clearFiles(status);\r\n};\r\n\r\n/** 手动选择文件 */\r\nconst handleStart = (rawFile: UploadRawFile) => {\r\n uploadFileRef.value!.handleStart(rawFile);\r\n};\r\n\r\n/** 预览 */\r\nconst dialogVisible = ref(false);\r\nconst fileIndex = ref(0);\r\nconst handlePreview = (file: UploadFile) => {\r\n fileIndex.value = fileList.value.indexOf(file);\r\n dialogVisible.value = true;\r\n};\r\n\r\ndefineExpose({\r\n submit,\r\n abort,\r\n clearFiles,\r\n handleStart,\r\n uploadFileRef,\r\n});\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.gm-upload-preview-dialog {\r\n :deep(.el-dialog__body) {\r\n padding: 0;\r\n }\r\n}\r\n.gm-upload-file-picture-card {\r\n :deep(.el-upload-list__item),\r\n :deep(.el-upload--picture-card) {\r\n width: 120px;\r\n height: 120px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n}\r\n</style>\r\n<style lang=\"scss\">\r\n.gm-upload-file {\r\n line-height: normal;\r\n .el-checkbox {\r\n position: absolute;\r\n left: 10px;\r\n top: 0;\r\n z-index: 9;\r\n }\r\n .el-upload-list__item-file-name {\r\n line-height: normal;\r\n }\r\n}\r\n.gm-upload-file-disabled {\r\n .el-upload-list__item-status-label {\r\n display: none;\r\n }\r\n}\r\n</style>\r\n"],"names":["_useModel"],"mappings":"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"}