fast-element-plus 2.0.27 → 2.0.28

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/CHANGELOG.md +24 -0
  2. package/README.md +6 -6
  3. package/README.zh.md +6 -6
  4. package/dist/component.d.ts +46 -35
  5. package/dist/components/avatar/src/avatar.d.ts +4 -4
  6. package/dist/components/button/src/button.d.ts +3 -3
  7. package/dist/components/carNumber/src/carNumber.d.ts +17 -6
  8. package/dist/components/carNumber/src/carNumber.mjs +16 -1
  9. package/dist/components/carNumber/src/carNumber.mjs.map +1 -1
  10. package/dist/components/drawer/src/drawer.d.ts +4 -4
  11. package/dist/components/form/src/formItem.d.ts +9 -3
  12. package/dist/components/form/src/formItem.mjs +5 -3
  13. package/dist/components/form/src/formItem.mjs.map +1 -1
  14. package/dist/components/image/src/image.d.ts +6 -1
  15. package/dist/components/image/src/image.mjs +7 -2
  16. package/dist/components/image/src/image.mjs.map +1 -1
  17. package/dist/components/select/src/select.d.ts +13 -7
  18. package/dist/components/select/src/select.mjs +4 -6
  19. package/dist/components/select/src/select.mjs.map +1 -1
  20. package/dist/components/select/src/selectOption.d.ts +5 -0
  21. package/dist/components/select/src/selectOption.mjs +3 -0
  22. package/dist/components/select/src/selectOption.mjs.map +1 -1
  23. package/dist/components/selectPage/src/selectPage.d.ts +16 -10
  24. package/dist/components/selectPage/src/selectPage.mjs +6 -8
  25. package/dist/components/selectPage/src/selectPage.mjs.map +1 -1
  26. package/dist/components/selectV2/src/selectV2.d.ts +7 -2
  27. package/dist/components/selectV2/src/selectV2.mjs +2 -5
  28. package/dist/components/selectV2/src/selectV2.mjs.map +1 -1
  29. package/dist/components/table/src/page.type.d.ts +4 -0
  30. package/dist/components/table/src/table.mjs +5 -4
  31. package/dist/components/table/src/table.mjs.map +1 -1
  32. package/dist/components/table/src/tableColumn.d.ts +1 -0
  33. package/dist/components/table/src/tableColumn.mjs +33 -19
  34. package/dist/components/table/src/tableColumn.mjs.map +1 -1
  35. package/dist/components/tree/src/tree.d.ts +1 -1
  36. package/dist/components/treeSelect/src/treeSelect.d.ts +33 -27
  37. package/dist/components/treeSelect/src/treeSelect.mjs +14 -12
  38. package/dist/components/treeSelect/src/treeSelect.mjs.map +1 -1
  39. package/dist/components/uploadImage/src/uploadImage.d.ts +9 -0
  40. package/dist/components/uploadImage/src/uploadImage.mjs +13 -6
  41. package/dist/components/uploadImage/src/uploadImage.mjs.map +1 -1
  42. package/dist/components/uploadImages/src/uploadImages.d.ts +9 -0
  43. package/dist/components/uploadImages/src/uploadImages.mjs +7 -5
  44. package/dist/components/uploadImages/src/uploadImages.mjs.map +1 -1
  45. package/dist/index.css +1 -1
  46. package/dist/index.css.map +1 -1
  47. package/dist/index.global.min.js +3 -3
  48. package/dist/index.global.min.js.map +1 -1
  49. package/dist/version.d.ts +1 -1
  50. package/dist/version.mjs +1 -1
  51. package/dist/version.mjs.map +1 -1
  52. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"uploadImage.mjs","names":["update:modelValue","update:fileList"],"sources":["../../../../src/components/uploadImage/src/uploadImage.tsx"],"sourcesContent":["import { Fragment, computed, defineComponent, reactive, shallowRef, withModifiers } from \"vue\";\nimport { Delete, Edit, UploadFilled, ZoomIn } from \"@element-plus/icons-vue\";\nimport { ElIcon, ElImageViewer, ElUpload, uploadProps } from \"element-plus\";\nimport { FaMimeType } from \"../../../constants\";\nimport { addCssUnit, definePropType, makeSlots, randomString, useExpose, useProps, useRender, withDefineType } from \"../../../utils\";\nimport { useUpload } from \"../../upload/src/useUpload\";\nimport type { UploadFile, UploadInstance, UploadProps, UploadUserFile } from \"element-plus\";\n\n/** FaUploadImage 的运行时 Props 定义 */\nexport const faUploadImageProps = {\n\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- Element Plus 2.x 尚未提供可替代的公开运行时 props 定义。\n\t...uploadProps,\n\t/** accepted [file types](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept), will not work when `thumbnail-mode === true` */\n\taccept: {\n\t\ttype: String,\n\t\tdefault: () => FaMimeType.Image,\n\t},\n\t/** type of file list */\n\tlistType: {\n\t\ttype: definePropType<NonNullable<UploadProps[\"listType\"]>>(String),\n\t\tdefault: \"picture\",\n\t},\n\t/** whether uploading multiple files is permitted */\n\tmultiple: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t\tvalidator: (value: boolean) => {\n\t\t\tif (value) {\n\t\t\t\tconsole.warn(\"[Fast:FaUploadImage]\", \"'multiple' 属性固定为 false,外部设置不会生效。\");\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t},\n\t/** whether to show the uploaded file list */\n\tshowFileList: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\t/** v-model 绑定值 */\n\tmodelValue: definePropType<string | null>(String),\n\t/** 大小限制,单位kb */\n\tmaxSize: {\n\t\ttype: [String, Number],\n\t\tdefault: 2048,\n\t},\n\t/** 图片上传接口,优先级最高 */\n\tuploadApi: {\n\t\ttype: definePropType<(formData: FormData) => Promise<string>>(Function),\n\t},\n\t/** 图片上传地址 */\n\tuploadUrl: String,\n\t/** 宽度 */\n\twidth: {\n\t\ttype: [String, Number],\n\t\tdefault: 150,\n\t},\n\t/** 高度 */\n\theight: {\n\t\ttype: [String, Number],\n\t\tdefault: 150,\n\t},\n};\n\n/** FaUploadImage 的运行时 Emits 定义 */\nexport const faUploadImageEmits = {\n\t/** v-model 回调 */\n\t\"update:modelValue\": (value: string | null) => typeof value === \"string\" || value === null,\n\t/** v-model:fileList 回调 */\n\t\"update:fileList\": (value: UploadUserFile[]) => Array.isArray(value),\n};\n\n/** FaUploadImage 的插槽参数 */\nexport interface FaUploadImageSlots extends Record<string, unknown> {\n\t/** 默认内容插槽 */\n\tdefault: never;\n}\n\nexport default defineComponent({\n\tname: \"FaUploadImage\",\n\tprops: faUploadImageProps,\n\temits: faUploadImageEmits,\n\tslots: makeSlots<FaUploadImageSlots>(),\n\tsetup(props, { slots, emit, expose }) {\n\t\tconst {\n\t\t\tfileList,\n\t\t\tloading,\n\t\t\tformContext,\n\t\t\tmaxSizeMB,\n\t\t\thandleHttpRequest,\n\t\t\thandleOnSuccess,\n\t\t\thandleOnError,\n\t\t\thandleOnRemove,\n\t\t\thandleOnExceed,\n\t\t\thandleOnUpload,\n\t\t\thandleOnChange,\n\t\t} = useUpload<string>(\"FaUploadImage\", \"图片\", props, emit, {\n\t\t\tget maxSize() {\n\t\t\t\treturn props.maxSize;\n\t\t\t},\n\t\t\tget uploadApi() {\n\t\t\t\treturn props.uploadApi;\n\t\t\t},\n\t\t\tget uploadUrl() {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 需要与 Element Plus 2.x 的运行时默认 action 比较。\n\t\t\t\treturn props.uploadUrl || (props.action === uploadProps.action.default ? undefined : props.action);\n\t\t\t},\n\t\t});\n\n\t\tconst uploadRef = shallowRef<UploadInstance | null>(null);\n\n\t\tconst state = reactive({\n\t\t\tuploadKey: `fa-upload-image__${randomString(8)}`,\n\t\t\tpreview: false,\n\t\t\tpreviewList: withDefineType<string[]>([]),\n\t\t});\n\n\t\tconst disabled = computed(() => {\n\t\t\treturn props.disabled === true || formContext?.disabled === true;\n\t\t});\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 需要识别 Element Plus 2.x 注入的默认请求实现。\n\t\tconst httpRequest = computed(() => (props.httpRequest === uploadProps.httpRequest.default ? handleHttpRequest : props.httpRequest));\n\n\t\tconst handleEdit = () => {\n\t\t\tconst uploadInputEl = document.querySelector(`.${state.uploadKey} .el-upload__input`);\n\t\t\tuploadInputEl?.dispatchEvent(new MouseEvent(\"click\"));\n\t\t};\n\n\t\tconst handlePreview = () => {\n\t\t\tconst fileUrl = fileList.value[0]?.url;\n\t\t\tif (!fileUrl) return;\n\t\t\tstate.previewList = [fileUrl];\n\t\t\tstate.preview = true;\n\t\t};\n\n\t\tconst handleRemove = () => {\n\t\t\tconst file = fileList.value[0];\n\t\t\tif (file) uploadRef.value?.handleRemove(file as UploadFile);\n\t\t};\n\n\t\tconst handleBeforeUpload: UploadProps[\"beforeUpload\"] = (rawFile) => {\n\t\t\tif (!handleOnUpload(rawFile)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn props.beforeUpload(rawFile);\n\t\t};\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 透传范围必须与继承的 Element Plus 2.x 运行时 props 保持一致。\n\t\tconst elUploadProps = useProps(props, uploadProps, [\n\t\t\t\"fileList\",\n\t\t\t\"disabled\",\n\t\t\t\"httpRequest\",\n\t\t\t\"beforeUpload\",\n\t\t\t\"onExceed\",\n\t\t\t\"onSuccess\",\n\t\t\t\"onError\",\n\t\t\t\"onRemove\",\n\t\t\t\"onChange\",\n\t\t]);\n\n\t\tuseRender(() => (\n\t\t\t<Fragment>\n\t\t\t\t<ElUpload\n\t\t\t\t\t{...elUploadProps.value}\n\t\t\t\t\tref={uploadRef}\n\t\t\t\t\tclass={[\"fa-upload-image\", state.uploadKey]}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\"--width\": addCssUnit(props.width),\n\t\t\t\t\t\t\"--height\": addCssUnit(props.height),\n\t\t\t\t\t}}\n\t\t\t\t\tvLoading={loading.value}\n\t\t\t\t\tvModel:fileList={fileList.value}\n\t\t\t\t\tmultiple={false}\n\t\t\t\t\tdisabled={disabled.value}\n\t\t\t\t\thttpRequest={httpRequest.value}\n\t\t\t\t\tbeforeUpload={handleBeforeUpload}\n\t\t\t\t\tonExceed={handleOnExceed}\n\t\t\t\t\tonSuccess={handleOnSuccess}\n\t\t\t\t\tonError={handleOnError}\n\t\t\t\t\tonRemove={handleOnRemove}\n\t\t\t\t\tonChange={handleOnChange}\n\t\t\t\t>\n\t\t\t\t\t{{\n\t\t\t\t\t\tdefault: () =>\n\t\t\t\t\t\t\tfileList.value.length > 0 ? (\n\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t<img class=\"el-upload-list__item-thumbnail\" src={fileList.value[0]?.url} />\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tclass=\"el-upload-list__item-actions\"\n\t\t\t\t\t\t\t\t\t\tonClick={withModifiers(() => {\n\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}, [\"stop\"])}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<span class=\"el-upload-list__item-icon\" onClick={handlePreview} title=\"查看\">\n\t\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t<ZoomIn />\n\t\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t{!disabled.value && (\n\t\t\t\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"el-upload-list__item-icon\" onClick={handleEdit} title=\"编辑\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Edit />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"el-upload-list__item-icon\" onClick={handleRemove} title=\"删除\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Delete />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t) : slots.default ? (\n\t\t\t\t\t\t\t\tslots.default()\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t<ElIcon class=\"el-icon--upload\">\n\t\t\t\t\t\t\t\t\t\t<UploadFilled />\n\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t<div class=\"el-upload__text\">\n\t\t\t\t\t\t\t\t\t\t{props.drag && (\n\t\t\t\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\tDrop file here <br />\n\t\t\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t<em>click to upload</em>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\ttip: () => <div class=\"el-upload__tip\">file with a size less than {maxSizeMB.value.toString()}MB</div>,\n\t\t\t\t\t}}\n\t\t\t\t</ElUpload>\n\t\t\t\t{state.preview && (\n\t\t\t\t\t<ElImageViewer\n\t\t\t\t\t\tcloseOnPressEscape\n\t\t\t\t\t\thideOnClickModal\n\t\t\t\t\t\tteleported\n\t\t\t\t\t\tonClose={() => (state.preview = false)}\n\t\t\t\t\t\turlList={state.previewList}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Fragment>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** 取消上传请求 */\n\t\t\tabort: computed(() => uploadRef.value?.abort),\n\t\t\t/** 手动上传文件列表 */\n\t\t\tsubmit: computed(() => uploadRef.value?.submit),\n\t\t\t/** 清空已上传的文件列表(该方法不支持在 before-upload 中调用) */\n\t\t\tclearFiles: computed(() => uploadRef.value?.clearFiles),\n\t\t\t/** 手动选择文件 */\n\t\t\thandleStart: computed(() => uploadRef.value?.handleStart),\n\t\t\t/** 手动移除文件。file 和 rawFile 已被合并。 */\n\t\t\thandleRemove: computed(() => uploadRef.value?.handleRemove),\n\t\t\t/** 加载状态 */\n\t\t\tloading,\n\t\t\t/** 文件集合 */\n\t\t\tfileList,\n\t\t\t/** 预览 */\n\t\t\tpreview: computed(() => state.preview),\n\t\t\t/** 预览集合 */\n\t\t\tpreviewList: computed(() => state.previewList),\n\t\t});\n\t},\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"uploadImage.mjs","names":["update:modelValue","update:fileList"],"sources":["../../../../src/components/uploadImage/src/uploadImage.tsx"],"sourcesContent":["import { Fragment, computed, defineComponent, reactive, shallowRef, withModifiers } from \"vue\";\nimport { Delete, Edit, UploadFilled, ZoomIn } from \"@element-plus/icons-vue\";\nimport { ElIcon, ElImageViewer, ElUpload, uploadProps } from \"element-plus\";\nimport { FaMimeType } from \"../../../constants\";\nimport { addCssUnit, definePropType, makeSlots, randomString, useExpose, useProps, useRender, withDefineType } from \"../../../utils\";\nimport { useUpload } from \"../../upload/src/useUpload\";\nimport type { UploadFile, UploadInstance, UploadProps, UploadUserFile } from \"element-plus\";\n\n/** FaUploadImage 的运行时 Props 定义 */\nexport const faUploadImageProps = {\n\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- Element Plus 2.x 尚未提供可替代的公开运行时 props 定义。\n\t...uploadProps,\n\t/** accepted [file types](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept), will not work when `thumbnail-mode === true` */\n\taccept: {\n\t\ttype: String,\n\t\tdefault: () => FaMimeType.Image,\n\t},\n\t/** type of file list */\n\tlistType: {\n\t\ttype: definePropType<NonNullable<UploadProps[\"listType\"]>>(String),\n\t\tdefault: \"picture\",\n\t},\n\t/** whether uploading multiple files is permitted */\n\tmultiple: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t\tvalidator: (value: boolean) => {\n\t\t\tif (value) {\n\t\t\t\tconsole.warn(\"[Fast:FaUploadImage]\", \"'multiple' 属性固定为 false,外部设置不会生效。\");\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t},\n\t/** whether to show the uploaded file list */\n\tshowFileList: {\n\t\ttype: Boolean,\n\t\tdefault: false,\n\t},\n\t/** v-model 绑定值 */\n\tmodelValue: definePropType<string | null>(String),\n\t/** 大小限制,单位kb */\n\tmaxSize: {\n\t\ttype: [String, Number],\n\t\tdefault: 2048,\n\t},\n\t/** 图片上传接口,优先级最高 */\n\tuploadApi: {\n\t\ttype: definePropType<(formData: FormData) => Promise<string>>(Function),\n\t},\n\t/** 图片上传地址 */\n\tuploadUrl: String,\n\t/** 宽度 */\n\twidth: {\n\t\ttype: [String, Number],\n\t\tdefault: 150,\n\t},\n\t/** 高度 */\n\theight: {\n\t\ttype: [String, Number],\n\t\tdefault: 150,\n\t},\n};\n\n/** FaUploadImage 的运行时 Emits 定义 */\nexport const faUploadImageEmits = {\n\t/** v-model 回调 */\n\t\"update:modelValue\": (value: string | null) => typeof value === \"string\" || value === null,\n\t/** v-model:fileList 回调 */\n\t\"update:fileList\": (value: UploadUserFile[]) => Array.isArray(value),\n};\n\n/** FaUploadImage 的插槽参数 */\nexport interface FaUploadImageSlots extends Record<string, unknown> {\n\t/** 默认内容插槽 */\n\tdefault: never;\n\t/** 文件选择触发器 */\n\ttrigger: never;\n\t/** 上传提示 */\n\ttip: never;\n\t/** 文件列表项,开启 showFileList 时使用 */\n\tfile: { file: UploadFile; index: number };\n}\n\nexport default defineComponent({\n\tname: \"FaUploadImage\",\n\tprops: faUploadImageProps,\n\temits: faUploadImageEmits,\n\tslots: makeSlots<FaUploadImageSlots>(),\n\tsetup(props, { slots, emit, expose }) {\n\t\tconst {\n\t\t\tfileList,\n\t\t\tloading,\n\t\t\tformContext,\n\t\t\tmaxSizeMB,\n\t\t\thandleHttpRequest,\n\t\t\thandleOnSuccess,\n\t\t\thandleOnError,\n\t\t\thandleOnRemove,\n\t\t\thandleOnExceed,\n\t\t\thandleOnUpload,\n\t\t\thandleOnChange,\n\t\t} = useUpload<string>(\"FaUploadImage\", \"图片\", props, emit, {\n\t\t\tget maxSize() {\n\t\t\t\treturn props.maxSize;\n\t\t\t},\n\t\t\tget uploadApi() {\n\t\t\t\treturn props.uploadApi;\n\t\t\t},\n\t\t\tget uploadUrl() {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 需要与 Element Plus 2.x 的运行时默认 action 比较。\n\t\t\t\treturn props.uploadUrl || (props.action === uploadProps.action.default ? undefined : props.action);\n\t\t\t},\n\t\t});\n\n\t\tconst uploadRef = shallowRef<UploadInstance | null>(null);\n\n\t\tconst state = reactive({\n\t\t\tuploadKey: `fa-upload-image__${randomString(8)}`,\n\t\t\tpreview: false,\n\t\t\tpreviewList: withDefineType<string[]>([]),\n\t\t});\n\n\t\tconst disabled = computed(() => {\n\t\t\treturn props.disabled === true || formContext?.disabled === true;\n\t\t});\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 需要识别 Element Plus 2.x 注入的默认请求实现。\n\t\tconst httpRequest = computed(() => (props.httpRequest === uploadProps.httpRequest.default ? handleHttpRequest : props.httpRequest));\n\n\t\tconst handleEdit = () => {\n\t\t\tconst uploadInputEl = document.querySelector(`.${state.uploadKey} .el-upload__input`);\n\t\t\tuploadInputEl?.dispatchEvent(new MouseEvent(\"click\"));\n\t\t};\n\n\t\tconst handlePreview = () => {\n\t\t\tconst file = fileList.value[0];\n\t\t\tif (!file?.url) return;\n\t\t\t// 文件已由 ElUpload 补齐 uid 和 status。\n\t\t\tif (file.uid !== undefined && file.status !== undefined) props.onPreview({ ...file, uid: file.uid, status: file.status });\n\t\t\tstate.previewList = [file.url];\n\t\t\tstate.preview = true;\n\t\t};\n\n\t\tconst handleRemove = () => {\n\t\t\tconst file = fileList.value[0];\n\t\t\tif (file) uploadRef.value?.handleRemove(file as UploadFile);\n\t\t};\n\n\t\tconst handleBeforeUpload: UploadProps[\"beforeUpload\"] = (rawFile) => {\n\t\t\tif (!handleOnUpload(rawFile)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn props.beforeUpload(rawFile);\n\t\t};\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 透传范围必须与继承的 Element Plus 2.x 运行时 props 保持一致。\n\t\tconst elUploadProps = useProps(props, uploadProps, [\n\t\t\t\"fileList\",\n\t\t\t\"disabled\",\n\t\t\t\"httpRequest\",\n\t\t\t\"beforeUpload\",\n\t\t\t\"onExceed\",\n\t\t\t\"onSuccess\",\n\t\t\t\"onError\",\n\t\t\t\"onRemove\",\n\t\t\t\"onChange\",\n\t\t]);\n\n\t\tuseRender(() => (\n\t\t\t<Fragment>\n\t\t\t\t<ElUpload\n\t\t\t\t\t{...elUploadProps.value}\n\t\t\t\t\tref={uploadRef}\n\t\t\t\t\tclass={[\"fa-upload-image\", state.uploadKey]}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\"--width\": addCssUnit(props.width),\n\t\t\t\t\t\t\"--height\": addCssUnit(props.height),\n\t\t\t\t\t}}\n\t\t\t\t\tvLoading={loading.value}\n\t\t\t\t\tvModel:fileList={fileList.value}\n\t\t\t\t\tmultiple={false}\n\t\t\t\t\tdisabled={disabled.value}\n\t\t\t\t\thttpRequest={httpRequest.value}\n\t\t\t\t\tbeforeUpload={handleBeforeUpload}\n\t\t\t\t\tonExceed={handleOnExceed}\n\t\t\t\t\tonSuccess={handleOnSuccess}\n\t\t\t\t\tonError={handleOnError}\n\t\t\t\t\tonRemove={handleOnRemove}\n\t\t\t\t\tonChange={handleOnChange}\n\t\t\t\t>\n\t\t\t\t\t{{\n\t\t\t\t\t\t...(slots.trigger && { trigger: slots.trigger }),\n\t\t\t\t\t\t...(slots.file && { file: slots.file }),\n\t\t\t\t\t\tdefault: () =>\n\t\t\t\t\t\t\tfileList.value.length > 0 ? (\n\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t<img class=\"el-upload-list__item-thumbnail\" src={fileList.value[0]?.url} />\n\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\tclass=\"el-upload-list__item-actions\"\n\t\t\t\t\t\t\t\t\t\tonClick={withModifiers(() => {\n\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}, [\"stop\"])}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<span class=\"el-upload-list__item-icon\" onClick={handlePreview} title=\"查看\">\n\t\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t<ZoomIn />\n\t\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t{!disabled.value && (\n\t\t\t\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"el-upload-list__item-icon\" onClick={handleEdit} title=\"编辑\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Edit />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"el-upload-list__item-icon\" onClick={handleRemove} title=\"删除\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Delete />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t) : slots.default ? (\n\t\t\t\t\t\t\t\tslots.default()\n\t\t\t\t\t\t\t) : slots.trigger ? null : (\n\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t<ElIcon class=\"el-icon--upload\">\n\t\t\t\t\t\t\t\t\t\t<UploadFilled />\n\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t<div class=\"el-upload__text\">\n\t\t\t\t\t\t\t\t\t\t{props.drag && (\n\t\t\t\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\tDrop file here <br />\n\t\t\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t<em>click to upload</em>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\ttip: slots.tip ?? (() => <div class=\"el-upload__tip\">file with a size less than {maxSizeMB.value.toString()}MB</div>),\n\t\t\t\t\t}}\n\t\t\t\t</ElUpload>\n\t\t\t\t{state.preview && (\n\t\t\t\t\t<ElImageViewer\n\t\t\t\t\t\tcloseOnPressEscape\n\t\t\t\t\t\thideOnClickModal\n\t\t\t\t\t\tteleported\n\t\t\t\t\t\tonClose={() => (state.preview = false)}\n\t\t\t\t\t\turlList={state.previewList}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Fragment>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** 取消上传请求 */\n\t\t\tabort: computed(() => uploadRef.value?.abort),\n\t\t\t/** 手动上传文件列表 */\n\t\t\tsubmit: computed(() => uploadRef.value?.submit),\n\t\t\t/** 清空已上传的文件列表(该方法不支持在 before-upload 中调用) */\n\t\t\tclearFiles: computed(() => uploadRef.value?.clearFiles),\n\t\t\t/** 手动选择文件 */\n\t\t\thandleStart: computed(() => uploadRef.value?.handleStart),\n\t\t\t/** 手动移除文件。file 和 rawFile 已被合并。 */\n\t\t\thandleRemove: computed(() => uploadRef.value?.handleRemove),\n\t\t\t/** 加载状态 */\n\t\t\tloading,\n\t\t\t/** 文件集合 */\n\t\t\tfileList,\n\t\t\t/** 预览 */\n\t\t\tpreview: computed(() => state.preview),\n\t\t\t/** 预览集合 */\n\t\t\tpreviewList: computed(() => state.previewList),\n\t\t});\n\t},\n});\n"],"mappings":"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"}
@@ -157,6 +157,15 @@ export declare const faUploadImagesEmits: {
157
157
  export interface FaUploadImagesSlots extends Record<string, unknown> {
158
158
  /** 默认内容插槽 */
159
159
  default: never;
160
+ /** 文件选择触发器 */
161
+ trigger: never;
162
+ /** 上传提示 */
163
+ tip: never;
164
+ /** 文件列表项 */
165
+ file: {
166
+ file: UploadFile;
167
+ index: number;
168
+ };
160
169
  }
161
170
  declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
162
171
  /** accepted [file types](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept), will not work when `thumbnail-mode === true` */
@@ -91,6 +91,7 @@ var uploadImages_default = defineComponent({
91
91
  document.querySelector(`.${state.uploadKey} .el-upload__input`)?.dispatchEvent(new MouseEvent("click"));
92
92
  };
93
93
  const handlePreview = (uploadFile) => {
94
+ props.onPreview(uploadFile);
94
95
  state.previewIndex = fileList.value.findIndex((f) => f.url === uploadFile.url);
95
96
  state.previewList = fileList.value.flatMap((item) => item.url ? [item.url] : []);
96
97
  state.preview = true;
@@ -134,13 +135,14 @@ var uploadImages_default = defineComponent({
134
135
  "onRemove": handleOnRemove,
135
136
  "onChange": handleOnChange
136
137
  }), {
137
- default: () => fileList.value.length < props.limit && slots.default ? slots.default() : createVNode(ElIcon, null, { default: () => [createVNode(Plus, null, null)] }),
138
- tip: () => createVNode("div", { "class": "el-upload__tip" }, [
138
+ ...slots.trigger && { trigger: slots.trigger },
139
+ default: () => fileList.value.length < props.limit && slots.default ? slots.default() : slots.trigger ? null : createVNode(ElIcon, null, { default: () => [createVNode(Plus, null, null)] }),
140
+ tip: slots.tip ?? (() => createVNode("div", { "class": "el-upload__tip" }, [
139
141
  createTextVNode("files with a size less than "),
140
142
  maxSizeMB.value.toString(),
141
143
  createTextVNode("MB")
142
- ]),
143
- file: ({ file, index }) => createVNode("div", null, [createVNode("img", {
144
+ ])),
145
+ file: slots.file ?? (({ file, index }) => createVNode("div", null, [createVNode("img", {
144
146
  "class": "el-upload-list__item-thumbnail",
145
147
  "src": file.url
146
148
  }, null), createVNode("span", { "class": "el-upload-list__item-actions" }, [createVNode("span", {
@@ -155,7 +157,7 @@ var uploadImages_default = defineComponent({
155
157
  "class": "el-upload-list__item-icon",
156
158
  "onClick": () => handleRemove(index),
157
159
  "title": "删除"
158
- }, [createVNode(ElIcon, null, { default: () => [createVNode(Delete, null, null)] })])])])])
160
+ }, [createVNode(ElIcon, null, { default: () => [createVNode(Delete, null, null)] })])])])]))
159
161
  }), [[resolveDirective("loading"), loading.value]]), state.preview && createVNode(ElImageViewer, {
160
162
  "closeOnPressEscape": true,
161
163
  "hideOnClickModal": true,
@@ -1 +1 @@
1
- {"version":3,"file":"uploadImages.mjs","names":["update:modelValue","update:fileList"],"sources":["../../../../src/components/uploadImages/src/uploadImages.tsx"],"sourcesContent":["import { Fragment, computed, defineComponent, reactive, shallowRef } from \"vue\";\nimport { Delete, Edit, Plus, ZoomIn } from \"@element-plus/icons-vue\";\nimport { ElIcon, ElImageViewer, ElUpload, uploadProps } from \"element-plus\";\nimport { FaMimeType } from \"../../../constants\";\nimport { definePropType, makeSlots, randomString, useExpose, useProps, useRender, withDefineType } from \"../../../utils\";\nimport { useUpload } from \"../../upload/src/useUpload\";\nimport type { UploadFile, UploadInstance, UploadProps, UploadUserFile } from \"element-plus\";\n\n/** FaUploadImages 的运行时 Props 定义 */\nexport const faUploadImagesProps = {\n\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- Element Plus 2.x 尚未提供可替代的公开运行时 props 定义。\n\t...uploadProps,\n\t/** accepted [file types](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept), will not work when `thumbnail-mode === true` */\n\taccept: {\n\t\ttype: String,\n\t\tdefault: () => FaMimeType.Image,\n\t},\n\t/** type of file list */\n\tlistType: {\n\t\ttype: definePropType<NonNullable<UploadProps[\"listType\"]>>(String),\n\t\tdefault: \"picture-card\",\n\t},\n\t/** whether uploading multiple files is permitted */\n\tmultiple: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t\tvalidator: (value: boolean) => {\n\t\t\tif (!value) {\n\t\t\t\tconsole.warn(\"[Fast:FaUploadImages]\", \"'multiple' 属性固定为 true,外部设置不会生效。\");\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t},\n\t/** maximum number of uploads allowed */\n\tlimit: {\n\t\ttype: Number,\n\t\tdefault: 9,\n\t},\n\t/** v-model 绑定值 */\n\tmodelValue: definePropType<string[] | null>([Array]),\n\t/** 大小限制,单位kb */\n\tmaxSize: {\n\t\ttype: [String, Number],\n\t\tdefault: 2048,\n\t},\n\t/** 图片上传接口,优先级最高 */\n\tuploadApi: {\n\t\ttype: definePropType<(formData: FormData) => Promise<string>>(Function),\n\t},\n\t/** 图片上传地址 */\n\tuploadUrl: String,\n};\n\n/** FaUploadImages 的运行时 Emits 定义 */\nexport const faUploadImagesEmits = {\n\t/** v-model 回调 */\n\t\"update:modelValue\": (value: string[] | null) => Array.isArray(value) || value === null,\n\t/** v-model:fileList 回调 */\n\t\"update:fileList\": (value: UploadUserFile[]) => Array.isArray(value),\n};\n\n/** FaUploadImages 的插槽参数 */\nexport interface FaUploadImagesSlots extends Record<string, unknown> {\n\t/** 默认内容插槽 */\n\tdefault: never;\n}\n\nexport default defineComponent({\n\tname: \"FaUploadImages\",\n\tprops: faUploadImagesProps,\n\temits: faUploadImagesEmits,\n\tslots: makeSlots<FaUploadImagesSlots>(),\n\tsetup(props, { slots, emit, expose }) {\n\t\tconst {\n\t\t\tfileList,\n\t\t\tloading,\n\t\t\tformContext,\n\t\t\tmaxSizeMB,\n\t\t\thandleHttpRequest,\n\t\t\thandleOnSuccess,\n\t\t\thandleOnError,\n\t\t\thandleOnRemove,\n\t\t\thandleOnExceed,\n\t\t\thandleOnUpload,\n\t\t\thandleOnChange,\n\t\t} = useUpload<string[]>(\"FaUploadImages\", \"图片\", props, emit, {\n\t\t\tget maxSize() {\n\t\t\t\treturn props.maxSize;\n\t\t\t},\n\t\t\tget uploadApi() {\n\t\t\t\treturn props.uploadApi;\n\t\t\t},\n\t\t\tget uploadUrl() {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 需要与 Element Plus 2.x 的运行时默认 action 比较。\n\t\t\t\treturn props.uploadUrl || (props.action === uploadProps.action.default ? undefined : props.action);\n\t\t\t},\n\t\t});\n\n\t\tconst uploadRef = shallowRef<UploadInstance | null>(null);\n\n\t\tconst state = reactive({\n\t\t\tuploadKey: `fa-upload-images__${randomString(8)}`,\n\t\t\tpreview: false,\n\t\t\tpreviewIndex: -1,\n\t\t\tpreviewList: withDefineType<string[]>([]),\n\t\t});\n\n\t\tconst disabled = computed(() => {\n\t\t\treturn props.disabled === true || formContext?.disabled === true;\n\t\t});\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 需要识别 Element Plus 2.x 注入的默认请求实现。\n\t\tconst httpRequest = computed(() => (props.httpRequest === uploadProps.httpRequest.default ? handleHttpRequest : props.httpRequest));\n\n\t\tconst handleEdit = () => {\n\t\t\tconst uploadInputEl = document.querySelector(`.${state.uploadKey} .el-upload__input`);\n\t\t\tuploadInputEl?.dispatchEvent(new MouseEvent(\"click\"));\n\t\t};\n\n\t\tconst handlePreview = (uploadFile: UploadFile) => {\n\t\t\tstate.previewIndex = fileList.value.findIndex((f) => f.url === uploadFile.url);\n\t\t\tstate.previewList = fileList.value.flatMap((item) => (item.url ? [item.url] : []));\n\t\t\tstate.preview = true;\n\t\t};\n\n\t\tconst handleRemove = (index: number) => {\n\t\t\tconst file = fileList.value[index];\n\t\t\tif (file) uploadRef.value?.handleRemove(file as UploadFile);\n\t\t};\n\n\t\tconst handleBeforeUpload: UploadProps[\"beforeUpload\"] = (rawFile) => {\n\t\t\tif (!handleOnUpload(rawFile)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn props.beforeUpload(rawFile);\n\t\t};\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 透传范围必须与继承的 Element Plus 2.x 运行时 props 保持一致。\n\t\tconst elUploadProps = useProps(props, uploadProps, [\n\t\t\t\"fileList\",\n\t\t\t\"multiple\",\n\t\t\t\"disabled\",\n\t\t\t\"httpRequest\",\n\t\t\t\"beforeUpload\",\n\t\t\t\"onExceed\",\n\t\t\t\"onSuccess\",\n\t\t\t\"onError\",\n\t\t\t\"onRemove\",\n\t\t\t\"onChange\",\n\t\t]);\n\n\t\tuseRender(() => (\n\t\t\t<Fragment>\n\t\t\t\t<ElUpload\n\t\t\t\t\t{...elUploadProps.value}\n\t\t\t\t\tref={uploadRef}\n\t\t\t\t\tclass={[\"fa-upload-images\", state.uploadKey, { \"fa-upload-images__hidden-upload\": fileList.value.length >= props.limit }]}\n\t\t\t\t\tvLoading={loading.value}\n\t\t\t\t\tvModel:fileList={fileList.value}\n\t\t\t\t\tmultiple={true}\n\t\t\t\t\tdisabled={disabled.value}\n\t\t\t\t\thttpRequest={httpRequest.value}\n\t\t\t\t\tbeforeUpload={handleBeforeUpload}\n\t\t\t\t\tonExceed={handleOnExceed}\n\t\t\t\t\tonSuccess={handleOnSuccess}\n\t\t\t\t\tonError={handleOnError}\n\t\t\t\t\tonRemove={handleOnRemove}\n\t\t\t\t\tonChange={handleOnChange}\n\t\t\t\t>\n\t\t\t\t\t{{\n\t\t\t\t\t\tdefault: () =>\n\t\t\t\t\t\t\tfileList.value.length < props.limit && slots.default ? (\n\t\t\t\t\t\t\t\tslots.default()\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t<Plus />\n\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\ttip: () => <div class=\"el-upload__tip\">files with a size less than {maxSizeMB.value.toString()}MB</div>,\n\t\t\t\t\t\tfile: ({ file, index }: { file: UploadFile; index: number }) => (\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<img class=\"el-upload-list__item-thumbnail\" src={file.url} />\n\t\t\t\t\t\t\t\t<span class=\"el-upload-list__item-actions\">\n\t\t\t\t\t\t\t\t\t<span class=\"el-upload-list__item-preview\" onClick={() => handlePreview(file)} title=\"查看\">\n\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t<ZoomIn />\n\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t{!disabled.value && (\n\t\t\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"el-upload-list__item-icon\" onClick={handleEdit} title=\"编辑\">\n\t\t\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Edit />\n\t\t\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"el-upload-list__item-icon\" onClick={() => handleRemove(index)} title=\"删除\">\n\t\t\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Delete />\n\t\t\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t),\n\t\t\t\t\t}}\n\t\t\t\t</ElUpload>\n\t\t\t\t{state.preview && (\n\t\t\t\t\t<ElImageViewer\n\t\t\t\t\t\tcloseOnPressEscape\n\t\t\t\t\t\thideOnClickModal\n\t\t\t\t\t\tteleported\n\t\t\t\t\t\tinitialIndex={Math.max(state.previewIndex, 0)}\n\t\t\t\t\t\tonClose={() => (state.preview = false)}\n\t\t\t\t\t\turlList={state.previewList}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Fragment>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** 取消上传请求 */\n\t\t\tabort: computed(() => uploadRef.value?.abort),\n\t\t\t/** 手动上传文件列表 */\n\t\t\tsubmit: computed(() => uploadRef.value?.submit),\n\t\t\t/** 清空已上传的文件列表(该方法不支持在 before-upload 中调用) */\n\t\t\tclearFiles: computed(() => uploadRef.value?.clearFiles),\n\t\t\t/** 手动选择文件 */\n\t\t\thandleStart: computed(() => uploadRef.value?.handleStart),\n\t\t\t/** 手动移除文件。file 和 rawFile 已被合并。 */\n\t\t\thandleRemove: computed(() => uploadRef.value?.handleRemove),\n\t\t\t/** 加载状态 */\n\t\t\tloading,\n\t\t\t/** 文件集合 */\n\t\t\tfileList,\n\t\t\t/** 预览 */\n\t\t\tpreview: computed(() => state.preview),\n\t\t\t/** 预览集合 */\n\t\t\tpreviewList: computed(() => state.previewList),\n\t\t});\n\t},\n});\n"],"mappings":";;;;;;;;;;;;;AASA,MAAa,sBAAsB;CAElC,GAAG;;CAEH,QAAQ;EACP,MAAM;EACN,eAAe,WAAW;CAC3B;;CAEA,UAAU;EACT,MAAM,eAAqD,MAAM;EACjE,SAAS;CACV;;CAEA,UAAU;EACT,MAAM;EACN,SAAS;EACT,YAAY,UAAmB;GAC9B,IAAI,CAAC,OAAO;IACX,QAAQ,KAAK,yBAAyB,iCAAiC;IACvE,OAAO;GACR;GACA,OAAO;EACR;CACD;;CAEA,OAAO;EACN,MAAM;EACN,SAAS;CACV;;CAEA,YAAY,eAAgC,CAAC,KAAK,CAAC;;CAEnD,SAAS;EACR,MAAM,CAAC,QAAQ,MAAM;EACrB,SAAS;CACV;;CAEA,WAAW,EACV,MAAM,eAAwD,QAAQ,EACvE;;CAEA,WAAW;AACZ;;AAGA,MAAa,sBAAsB;;CAElC,sBAAsB,UAA2B,MAAM,QAAQ,KAAK,KAAK,UAAU;;CAEnF,oBAAoB,UAA4B,MAAM,QAAQ,KAAK;AACpE;AAQA,IAAA,uBAAe,gBAAgB;CAC9B,MAAM;CACN,OAAO;CACP,OAAO;CACP,OAAO,UAA+B;CACtC,MAAM,OAAO,EAAE,OAAO,MAAM,UAAU;EACrC,MAAM,EACL,UACA,SACA,aACA,WACA,mBACA,iBACA,eACA,gBACA,gBACA,gBACA,mBACG,UAAoB,kBAAkB,MAAM,OAAO,MAAM;GAC5D,IAAI,UAAU;IACb,OAAO,MAAM;GACd;GACA,IAAI,YAAY;IACf,OAAO,MAAM;GACd;GACA,IAAI,YAAY;IAEf,OAAO,MAAM,cAAc,MAAM,WAAW,YAAY,OAAO,UAAU,KAAA,IAAY,MAAM;GAC5F;EACD,CAAC;EAED,MAAM,YAAY,WAAkC,IAAI;EAExD,MAAM,QAAQ,SAAS;GACtB,WAAW,qBAAqB,aAAa,CAAC;GAC9C,SAAS;GACT,cAAc;GACd,aAAa,eAAyB,CAAA,CAAE;EACzC,CAAC;EAED,MAAM,WAAW,eAAe;GAC/B,OAAO,MAAM,aAAa,QAAQ,aAAa,aAAa;EAC7D,CAAC;EAED,MAAM,cAAc,eAAgB,MAAM,gBAAgB,YAAY,YAAY,UAAU,oBAAoB,MAAM,WAAY;EAElI,MAAM,mBAAmB;GAExB,SAD+B,cAAc,IAAI,MAAM,UAAS,mBAChE,CAAa,EAAE,cAAc,IAAI,WAAW,OAAO,CAAC;EACrD;EAEA,MAAM,iBAAiB,eAA2B;GACjD,MAAM,eAAe,SAAS,MAAM,WAAW,MAAM,EAAE,QAAQ,WAAW,GAAG;GAC7E,MAAM,cAAc,SAAS,MAAM,SAAS,SAAU,KAAK,MAAM,CAAC,KAAK,GAAG,IAAI,CAAA,CAAG;GACjF,MAAM,UAAU;EACjB;EAEA,MAAM,gBAAgB,UAAkB;GACvC,MAAM,OAAO,SAAS,MAAM;GAC5B,IAAI,MAAM,UAAU,OAAO,aAAa,IAAkB;EAC3D;EAEA,MAAM,sBAAmD,YAAY;GACpE,IAAI,CAAC,eAAe,OAAO,GAC1B,OAAO;GAER,OAAO,MAAM,aAAa,OAAO;EAClC;EAGA,MAAM,gBAAgB,SAAS,OAAO,aAAa;GAClD;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EAAU,CACV;EAED,gBAAU,YAAA,UAAA,MAAA,CAAA,eAAA,YAAA,UAAA,WAGH,cAAc,OAAK;GAAA,OAClB;GAAS,SACP;IAAC;IAAoB,MAAM;IAAW,EAAE,mCAAmC,SAAS,MAAM,UAAU,MAAM,MAAM;GAAC;GAAC,YAExG,SAAS;GAAK,sBAAA,WAAd,SAAS,QAAK;GAAA,YACrB;GAAI,YACJ,SAAS;GAAK,eACX,YAAY;GAAK,gBAChB;GAAkB,YACtB;GAAc,aACb;GAAe,WACjB;GAAa,YACZ;GAAc,YACd;EAAc,CAAA,GAAA;GAGvB,eACC,SAAS,MAAM,SAAS,MAAM,SAAS,MAAM,UAC5C,MAAM,QAAQ,IAAC,YAAA,QAAA,MAAA,EAAA,eAAA,CAAA,YAAA,MAAA,MAAA,IAAA,CAAA,EAAA,CAAA;GAMjB,WAAK,YAAA,OAAA,EAAA,SAAA,iBAAA,GAAA;IAAA,gBAAA,8BAAA;IAA+D,UAAU,MAAM,SAAS;IAAC,gBAAA,IAAA;GAAA,CAAA;GAC9F,OAAO,EAAE,MAAM,YAA4C,YAAA,OAAA,MAAA,CAAA,YAAA,OAAA;IAAA,SAAA;IAAA,OAER,KAAK;GAAG,GAAA,IAAA,GAAA,YAAA,QAAA,EAAA,SAAA,+BAAA,GAAA,CAAA,YAAA,QAAA;IAAA,SAAA;IAAA,iBAEE,cAAc,IAAI;IAAC,SAAA;GAAA,GAAA,CAAA,YAAA,QAAA,MAAA,EAAA,eAAA,CAAA,YAAA,QAAA,MAAA,IAAA,CAAA,EAAA,CAAA,CAAA,CAAA,GAK5E,CAAC,SAAS,SAAK,YAAA,UAAA,MAAA,CAAA,YAAA,QAAA;IAAA,SAAA;IAAA,WAEmC;IAAU,SAAA;GAAA,GAAA,CAAA,YAAA,QAAA,MAAA,EAAA,eAAA,CAAA,YAAA,MAAA,MAAA,IAAA,CAAA,EAAA,CAAA,CAAA,CAAA,GAAA,YAAA,QAAA;IAAA,SAAA;IAAA,iBAKJ,aAAa,KAAK;IAAC,SAAA;GAAA,GAAA,CAAA,YAAA,QAAA,MAAA,EAAA,eAAA,CAAA,YAAA,QAAA,MAAA,IAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAM3E,CAAA,CAAA,CAAA;EAGH,CAAA,GAAA,CAAA,CAAA,iBAAA,SAAA,GA/CQ,QAAQ,KAAK,CAAA,CAAA,GAkDvB,MAAM,WAAO,YAAA,eAAA;GAAA,sBAAA;GAAA,oBAAA;GAAA,cAAA;GAAA,gBAKE,KAAK,IAAI,MAAM,cAAc,CAAC;GAAC,iBAC7B,MAAM,UAAU;GAAM,WAC7B,MAAM;EAAW,GAAA,IAAA,CAE3B,CAAA,CAEF;EAED,OAAO,UAAU,QAAQ;;GAExB,OAAO,eAAe,UAAU,OAAO,KAAK;;GAE5C,QAAQ,eAAe,UAAU,OAAO,MAAM;;GAE9C,YAAY,eAAe,UAAU,OAAO,UAAU;;GAEtD,aAAa,eAAe,UAAU,OAAO,WAAW;;GAExD,cAAc,eAAe,UAAU,OAAO,YAAY;;GAE1D;;GAEA;;GAEA,SAAS,eAAe,MAAM,OAAO;;GAErC,aAAa,eAAe,MAAM,WAAW;EAC9C,CAAC;CACF;AACD,CAAC"}
1
+ {"version":3,"file":"uploadImages.mjs","names":["update:modelValue","update:fileList"],"sources":["../../../../src/components/uploadImages/src/uploadImages.tsx"],"sourcesContent":["import { Fragment, computed, defineComponent, reactive, shallowRef } from \"vue\";\nimport { Delete, Edit, Plus, ZoomIn } from \"@element-plus/icons-vue\";\nimport { ElIcon, ElImageViewer, ElUpload, uploadProps } from \"element-plus\";\nimport { FaMimeType } from \"../../../constants\";\nimport { definePropType, makeSlots, randomString, useExpose, useProps, useRender, withDefineType } from \"../../../utils\";\nimport { useUpload } from \"../../upload/src/useUpload\";\nimport type { UploadFile, UploadInstance, UploadProps, UploadUserFile } from \"element-plus\";\n\n/** FaUploadImages 的运行时 Props 定义 */\nexport const faUploadImagesProps = {\n\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- Element Plus 2.x 尚未提供可替代的公开运行时 props 定义。\n\t...uploadProps,\n\t/** accepted [file types](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept), will not work when `thumbnail-mode === true` */\n\taccept: {\n\t\ttype: String,\n\t\tdefault: () => FaMimeType.Image,\n\t},\n\t/** type of file list */\n\tlistType: {\n\t\ttype: definePropType<NonNullable<UploadProps[\"listType\"]>>(String),\n\t\tdefault: \"picture-card\",\n\t},\n\t/** whether uploading multiple files is permitted */\n\tmultiple: {\n\t\ttype: Boolean,\n\t\tdefault: true,\n\t\tvalidator: (value: boolean) => {\n\t\t\tif (!value) {\n\t\t\t\tconsole.warn(\"[Fast:FaUploadImages]\", \"'multiple' 属性固定为 true,外部设置不会生效。\");\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t},\n\t/** maximum number of uploads allowed */\n\tlimit: {\n\t\ttype: Number,\n\t\tdefault: 9,\n\t},\n\t/** v-model 绑定值 */\n\tmodelValue: definePropType<string[] | null>([Array]),\n\t/** 大小限制,单位kb */\n\tmaxSize: {\n\t\ttype: [String, Number],\n\t\tdefault: 2048,\n\t},\n\t/** 图片上传接口,优先级最高 */\n\tuploadApi: {\n\t\ttype: definePropType<(formData: FormData) => Promise<string>>(Function),\n\t},\n\t/** 图片上传地址 */\n\tuploadUrl: String,\n};\n\n/** FaUploadImages 的运行时 Emits 定义 */\nexport const faUploadImagesEmits = {\n\t/** v-model 回调 */\n\t\"update:modelValue\": (value: string[] | null) => Array.isArray(value) || value === null,\n\t/** v-model:fileList 回调 */\n\t\"update:fileList\": (value: UploadUserFile[]) => Array.isArray(value),\n};\n\n/** FaUploadImages 的插槽参数 */\nexport interface FaUploadImagesSlots extends Record<string, unknown> {\n\t/** 默认内容插槽 */\n\tdefault: never;\n\t/** 文件选择触发器 */\n\ttrigger: never;\n\t/** 上传提示 */\n\ttip: never;\n\t/** 文件列表项 */\n\tfile: { file: UploadFile; index: number };\n}\n\nexport default defineComponent({\n\tname: \"FaUploadImages\",\n\tprops: faUploadImagesProps,\n\temits: faUploadImagesEmits,\n\tslots: makeSlots<FaUploadImagesSlots>(),\n\tsetup(props, { slots, emit, expose }) {\n\t\tconst {\n\t\t\tfileList,\n\t\t\tloading,\n\t\t\tformContext,\n\t\t\tmaxSizeMB,\n\t\t\thandleHttpRequest,\n\t\t\thandleOnSuccess,\n\t\t\thandleOnError,\n\t\t\thandleOnRemove,\n\t\t\thandleOnExceed,\n\t\t\thandleOnUpload,\n\t\t\thandleOnChange,\n\t\t} = useUpload<string[]>(\"FaUploadImages\", \"图片\", props, emit, {\n\t\t\tget maxSize() {\n\t\t\t\treturn props.maxSize;\n\t\t\t},\n\t\t\tget uploadApi() {\n\t\t\t\treturn props.uploadApi;\n\t\t\t},\n\t\t\tget uploadUrl() {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 需要与 Element Plus 2.x 的运行时默认 action 比较。\n\t\t\t\treturn props.uploadUrl || (props.action === uploadProps.action.default ? undefined : props.action);\n\t\t\t},\n\t\t});\n\n\t\tconst uploadRef = shallowRef<UploadInstance | null>(null);\n\n\t\tconst state = reactive({\n\t\t\tuploadKey: `fa-upload-images__${randomString(8)}`,\n\t\t\tpreview: false,\n\t\t\tpreviewIndex: -1,\n\t\t\tpreviewList: withDefineType<string[]>([]),\n\t\t});\n\n\t\tconst disabled = computed(() => {\n\t\t\treturn props.disabled === true || formContext?.disabled === true;\n\t\t});\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 需要识别 Element Plus 2.x 注入的默认请求实现。\n\t\tconst httpRequest = computed(() => (props.httpRequest === uploadProps.httpRequest.default ? handleHttpRequest : props.httpRequest));\n\n\t\tconst handleEdit = () => {\n\t\t\tconst uploadInputEl = document.querySelector(`.${state.uploadKey} .el-upload__input`);\n\t\t\tuploadInputEl?.dispatchEvent(new MouseEvent(\"click\"));\n\t\t};\n\n\t\tconst handlePreview = (uploadFile: UploadFile) => {\n\t\t\tprops.onPreview(uploadFile);\n\t\t\tstate.previewIndex = fileList.value.findIndex((f) => f.url === uploadFile.url);\n\t\t\tstate.previewList = fileList.value.flatMap((item) => (item.url ? [item.url] : []));\n\t\t\tstate.preview = true;\n\t\t};\n\n\t\tconst handleRemove = (index: number) => {\n\t\t\tconst file = fileList.value[index];\n\t\t\tif (file) uploadRef.value?.handleRemove(file as UploadFile);\n\t\t};\n\n\t\tconst handleBeforeUpload: UploadProps[\"beforeUpload\"] = (rawFile) => {\n\t\t\tif (!handleOnUpload(rawFile)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn props.beforeUpload(rawFile);\n\t\t};\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated -- 透传范围必须与继承的 Element Plus 2.x 运行时 props 保持一致。\n\t\tconst elUploadProps = useProps(props, uploadProps, [\n\t\t\t\"fileList\",\n\t\t\t\"multiple\",\n\t\t\t\"disabled\",\n\t\t\t\"httpRequest\",\n\t\t\t\"beforeUpload\",\n\t\t\t\"onExceed\",\n\t\t\t\"onSuccess\",\n\t\t\t\"onError\",\n\t\t\t\"onRemove\",\n\t\t\t\"onChange\",\n\t\t]);\n\n\t\tuseRender(() => (\n\t\t\t<Fragment>\n\t\t\t\t<ElUpload\n\t\t\t\t\t{...elUploadProps.value}\n\t\t\t\t\tref={uploadRef}\n\t\t\t\t\tclass={[\"fa-upload-images\", state.uploadKey, { \"fa-upload-images__hidden-upload\": fileList.value.length >= props.limit }]}\n\t\t\t\t\tvLoading={loading.value}\n\t\t\t\t\tvModel:fileList={fileList.value}\n\t\t\t\t\tmultiple={true}\n\t\t\t\t\tdisabled={disabled.value}\n\t\t\t\t\thttpRequest={httpRequest.value}\n\t\t\t\t\tbeforeUpload={handleBeforeUpload}\n\t\t\t\t\tonExceed={handleOnExceed}\n\t\t\t\t\tonSuccess={handleOnSuccess}\n\t\t\t\t\tonError={handleOnError}\n\t\t\t\t\tonRemove={handleOnRemove}\n\t\t\t\t\tonChange={handleOnChange}\n\t\t\t\t>\n\t\t\t\t\t{{\n\t\t\t\t\t\t...(slots.trigger && { trigger: slots.trigger }),\n\t\t\t\t\t\tdefault: () =>\n\t\t\t\t\t\t\tfileList.value.length < props.limit && slots.default ? (\n\t\t\t\t\t\t\t\tslots.default()\n\t\t\t\t\t\t\t) : slots.trigger ? null : (\n\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t<Plus />\n\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\ttip: slots.tip ?? (() => <div class=\"el-upload__tip\">files with a size less than {maxSizeMB.value.toString()}MB</div>),\n\t\t\t\t\t\tfile:\n\t\t\t\t\t\t\tslots.file ??\n\t\t\t\t\t\t\t(({ file, index }: { file: UploadFile; index: number }) => (\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<img class=\"el-upload-list__item-thumbnail\" src={file.url} />\n\t\t\t\t\t\t\t\t\t<span class=\"el-upload-list__item-actions\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"el-upload-list__item-preview\" onClick={() => handlePreview(file)} title=\"查看\">\n\t\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t<ZoomIn />\n\t\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t{!disabled.value && (\n\t\t\t\t\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"el-upload-list__item-icon\" onClick={handleEdit} title=\"编辑\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Edit />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"el-upload-list__item-icon\" onClick={() => handleRemove(index)} title=\"删除\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<Delete />\n\t\t\t\t\t\t\t\t\t\t\t\t\t</ElIcon>\n\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t)),\n\t\t\t\t\t}}\n\t\t\t\t</ElUpload>\n\t\t\t\t{state.preview && (\n\t\t\t\t\t<ElImageViewer\n\t\t\t\t\t\tcloseOnPressEscape\n\t\t\t\t\t\thideOnClickModal\n\t\t\t\t\t\tteleported\n\t\t\t\t\t\tinitialIndex={Math.max(state.previewIndex, 0)}\n\t\t\t\t\t\tonClose={() => (state.preview = false)}\n\t\t\t\t\t\turlList={state.previewList}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Fragment>\n\t\t));\n\n\t\treturn useExpose(expose, {\n\t\t\t/** 取消上传请求 */\n\t\t\tabort: computed(() => uploadRef.value?.abort),\n\t\t\t/** 手动上传文件列表 */\n\t\t\tsubmit: computed(() => uploadRef.value?.submit),\n\t\t\t/** 清空已上传的文件列表(该方法不支持在 before-upload 中调用) */\n\t\t\tclearFiles: computed(() => uploadRef.value?.clearFiles),\n\t\t\t/** 手动选择文件 */\n\t\t\thandleStart: computed(() => uploadRef.value?.handleStart),\n\t\t\t/** 手动移除文件。file 和 rawFile 已被合并。 */\n\t\t\thandleRemove: computed(() => uploadRef.value?.handleRemove),\n\t\t\t/** 加载状态 */\n\t\t\tloading,\n\t\t\t/** 文件集合 */\n\t\t\tfileList,\n\t\t\t/** 预览 */\n\t\t\tpreview: computed(() => state.preview),\n\t\t\t/** 预览集合 */\n\t\t\tpreviewList: computed(() => state.previewList),\n\t\t});\n\t},\n});\n"],"mappings":"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"}
package/dist/index.css CHANGED
@@ -1 +1 @@
1
- @keyframes twinkle{0%{transform:scale(0.8)}80%{transform:scale(1.1)}100%{transform:scale(1)}}@keyframes loading{0%{background-position:0 0,0 100%,100% 100%}25%{background-position:100% 0,0 100%,100% 100%}50%{background-position:100% 0,0 0,100% 100%}75%{background-position:100% 0,0 0,0 100%}100%{background-position:100% 100%,0 0,0 100%}}.__fa-loading{position:fixed;inset:0;z-index:9990;width:100%;height:100%;background-color:var(--el-mask-color);backdrop-filter:blur(2px)}.__fa-loading__box{position:absolute;top:50%;left:50%;filter:drop-shadow(var(--el-box-shadow-light));transform:translate(-50%, -50%)}.__fa-loading__box-warp{width:80px;height:80px}.__fa-loading__box-warp__item{--g1: conic-gradient(from 90deg at 3px 3px, #0000 90deg, var(--el-color-primary) 0);--g2: conic-gradient(from -90deg at 22px 22px, #0000 90deg, var(--el-color-primary) 0);width:55px;aspect-ratio:1;background:var(--g1),var(--g1),var(--g1),var(--g2),var(--g2),var(--g2);background-size:25px 25px;background-repeat:no-repeat;animation:loading 1.2s infinite}@media(prefers-reduced-motion: reduce){.__fa-loading__box-warp__item{animation:none}}.__fa-overlay{position:fixed;inset:0;z-index:9990;width:100%;height:100%;background-color:rgba(0,0,0,0);pointer-events:auto;cursor:not-allowed}.fa__copy-icon{margin-right:3px;color:var(--el-text-color-secondary);cursor:pointer;transition:color var(--el-transition-duration-fast)}.fa__copy-icon:hover{color:var(--el-color-primary)}.fa__hover__twinkle{transform-origin:center}.fa__hover__twinkle:hover>:first-child{animation:twinkle var(--el-transition-duration) linear}.fa__hover__suspension{transition:transform var(--el-transition-duration) ease,box-shadow var(--el-transition-duration) ease}.fa__hover__suspension:hover{border-radius:var(--el-border-radius-base);box-shadow:var(--el-box-shadow);transform:translateY(-4px) scale(1.02)}.fa__click__disabled{pointer-events:none !important}.fa__click__disabled.fa__click__disabled__cursor{position:relative !important;pointer-events:auto !important}.fa__click__disabled:hover{cursor:not-allowed !important}@media(prefers-reduced-motion: reduce){.fa__hover__twinkle:hover>:first-child{animation:none}.fa__hover__suspension{transition:none}.fa__hover__suspension:hover{transform:none}}.el-popper.fa-car-number__popover{box-sizing:border-box;width:min(360px + var(--el-popover-padding)*2 + 2px,100vw - 32px) !important;max-width:calc(100vw - 32px);margin-top:-12px;background-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow)}.fa-car-number__popover__digit-letter,.fa-car-number__popover__area{display:grid;grid-template-columns:repeat(10, minmax(0, 1fr));gap:4px}.fa-car-number__popover__digit-letter>.el-button,.fa-car-number__popover__area>.el-button{width:100%;min-width:0;margin:0;padding-inline:0}.fa-car-number__popover__hide{display:none}.fa-car-number__popover__btn{display:flex;justify-content:flex-end;gap:8px;margin-top:2px}.fa-car-number__popover__btn>.el-button+.el-button{margin-left:0}@media(max-width: 767.98px){.el-popper.fa-car-number__popover{width:calc(100vw - 24px) !important;max-width:calc(100vw - 24px);margin-top:-8px;padding:10px}.fa-car-number__popover__area,.fa-car-number__popover__digit-letter{grid-template-columns:repeat(8, minmax(0, 1fr));gap:5px}.fa-car-number__popover__area>.el-button,.fa-car-number__popover__digit-letter>.el-button{min-height:38px}.fa-car-number__popover__btn{margin-top:8px}.fa-car-number__popover__btn>.el-button{flex:1 1 0;min-width:0}}.fa-context-menu{--fa-context-menu-icon-margin: 5px;--fa-context-menu-font-size: var(--el-font-size-small);position:fixed;overflow:hidden;padding:0;border:1px solid var(--el-border-color-lighter);border-radius:var(--el-border-radius-base);background-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow)}.fa-context-menu>.el-dropdown-menu{background-color:rgba(0,0,0,0)}.fa-context-menu .el-dropdown-menu__item{min-height:var(--el-component-size);font-size:var(--fa-context-menu-font-size)}.fa-context-menu .el-dropdown-menu__item>.fa-icon{margin-right:var(--fa-context-menu-icon-margin)}.fa-context-menu .el-dropdown-menu__item:not(.is-disabled):hover{color:var(--el-dropdown-menuItem-hover-color);background-color:var(--el-dropdown-menuItem-hover-fill)}.fa-context-menu .el-dropdown-menu__item:not(.is-disabled):hover>.fa-icon{color:var(--el-dropdown-menuItem-hover-color)}.fa-context-menu-small{--fa-context-menu-icon-margin: 3px;--fa-context-menu-font-size: var(--el-font-size-extra-small)}@media(hover: none),(pointer: coarse){.fa-context-menu .el-dropdown-menu__item{min-height:44px}}.fa-dialog{--height: 90%;--fa-dialog-header-height: 40px;--fa-dialog-footer-height: 45px;--fa-dialog-header-icon-width: 30px;--fa-dialog-header-icon-size: var(--el-font-size-large);--el-dialog-title-font-size: var(--el-font-size-base);--el-fill-color-blank: var(--el-bg-color-overlay);box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;width:min(var(--el-dialog-width, 90%),100vw - 32px);max-height:var(--height);margin-bottom:0;padding:0 8px;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);border:1px solid var(--el-border-color-lighter);border-radius:calc(var(--el-border-radius-base)*2);background-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow);transition:width var(--el-transition-duration),height var(--el-transition-duration)}.fa-dialog>.el-dialog__header{display:flex;flex-shrink:0;align-items:center;height:var(--fa-dialog-header-height);padding:0;border-bottom:1px solid var(--el-border-color-lighter)}.fa-dialog>.el-dialog__body{display:flex;flex:1;flex-direction:row;overflow:hidden;min-height:0;padding:8px}.fa-dialog>.el-dialog__body>.el-scrollbar{flex:1;height:inherit}.fa-dialog>.el-dialog__footer{display:flex;flex-shrink:0;align-items:center;justify-content:flex-end;gap:8px;height:var(--fa-dialog-footer-height);padding:0;border-top:1px solid var(--el-border-color-lighter)}.fa-dialog>.el-dialog__footer>.el-button+.el-button{margin-left:0}.fa-dialog.fa-dialog__fullscreen{--height: 100% !important;--el-dialog-width: 100% !important;max-width:100%;height:var(--height);max-height:var(--height);border:0;border-radius:0}.fa-dialog__header-title{flex:1;overflow:hidden;min-width:0;padding-inline:4px;font-weight:var(--el-font-weight-primary);text-overflow:ellipsis;white-space:nowrap;color:var(--el-text-color-primary)}.fa-dialog__header-icon{display:flex;align-items:center;justify-content:center;width:var(--fa-dialog-header-icon-width);height:100%;border-radius:var(--el-border-radius-base);cursor:pointer;transition:background-color var(--el-transition-duration-fast)}.fa-dialog__header-icon:hover{background-color:var(--el-fill-color-light)}.fa-dialog__header-icon>.el-icon{width:100%;height:100%;font-size:var(--fa-dialog-header-icon-size);color:var(--el-text-color-secondary)}.fa-dialog__scrollbar-view{height:100%}.fa-dialog__full-height{height:var(--height)}.fa-dialog-small{--fa-dialog-header-height: 35px;--fa-dialog-footer-height: 40px;--fa-dialog-header-icon-width: 25px;--fa-dialog-header-icon-size: var(--el-font-size-medium);--el-dialog-title-font-size: var(--el-font-size-extra-small);padding:0 6px;font-size:var(--el-font-size-extra-small)}@media(min-width: 768px)and (max-width: 1199.98px){.fa-dialog:not(.fa-dialog__fullscreen){width:min(var(--el-dialog-width, 90%),100vw - 48px);max-height:calc(100dvh - 48px)}}@media(max-width: 767.98px){.fa-dialog:not(.fa-dialog__fullscreen){--height: calc(100dvh - 24px);--fa-dialog-header-height: 44px;--fa-dialog-footer-height: auto;--fa-dialog-header-icon-width: 44px;max-height:var(--height);margin-top:max(12px,env(safe-area-inset-top)) !important;padding:0 6px}.fa-dialog:not(.fa-dialog__fullscreen)>.el-dialog__body{padding:8px 4px}.fa-dialog:not(.fa-dialog__fullscreen)>.el-dialog__footer{min-height:52px;padding:8px 4px max(8px,env(safe-area-inset-bottom))}.fa-dialog:not(.fa-dialog__fullscreen)>.el-dialog__footer>.el-button{flex:1 1 0;min-width:0}}@media(prefers-reduced-motion: reduce){.fa-dialog{transition:none}}.fa-drawer{--fa-drawer-header-height: 40px;--fa-drawer-footer-height: 45px;--fa-drawer-header-icon-width: 30px;--fa-drawer-header-icon-size: var(--el-font-size-large);--el-fill-color-blank: var(--el-bg-color-overlay);box-sizing:border-box;display:flex;flex-direction:column;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);background-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow);transition:transform var(--el-transition-duration),width var(--el-transition-duration),height var(--el-transition-duration)}.fa-drawer>.el-drawer__header{display:flex;flex-shrink:0;align-items:center;height:var(--fa-drawer-header-height);margin:0;padding:0 0 0 10px;border-bottom:1px solid var(--el-border-color-lighter)}.fa-drawer>.el-drawer__body{position:relative;overflow:hidden;min-height:0;padding:8px}.fa-drawer>.el-drawer__body>.el-scrollbar{height:100%}.fa-drawer>.el-drawer__footer{display:flex;flex-shrink:0;align-items:center;justify-content:flex-end;gap:8px;height:var(--fa-drawer-footer-height);padding:0;border-top:1px solid var(--el-border-color-lighter)}.fa-drawer>.el-drawer__footer>.el-button+.el-button{margin-left:0}.fa-drawer.ltr>.el-drawer__body>.fa-drawer__draggable{right:0;left:auto}.fa-drawer.ttb>.el-drawer__body>.fa-drawer__draggable,.fa-drawer.btt>.el-drawer__body>.fa-drawer__draggable{left:0;width:100%;height:8px;cursor:n-resize}.fa-drawer.ttb>.el-drawer__body>.fa-drawer__draggable::after,.fa-drawer.btt>.el-drawer__body>.fa-drawer__draggable::after{width:48px;height:2px}.fa-drawer.ttb>.el-drawer__body>.fa-drawer__draggable{top:auto;bottom:0}.fa-drawer.btt>.el-drawer__body>.fa-drawer__draggable{top:0}.fa-drawer.fa-drawer__dragging{transition:none}.fa-drawer.fa-drawer__fullscreen{width:100% !important;height:100% !important}.fa-drawer__header-title{flex:1;overflow:hidden;min-width:0;font-size:inherit;font-weight:var(--el-font-weight-primary);text-overflow:ellipsis;white-space:nowrap;color:var(--el-text-color-primary)}.fa-drawer__header-icon{display:flex;align-items:center;justify-content:center;width:var(--fa-drawer-header-icon-width);height:100%;border-radius:var(--el-border-radius-base);cursor:pointer;transition:background-color var(--el-transition-duration-fast)}.fa-drawer__header-icon:hover{background-color:var(--el-fill-color-light)}.fa-drawer__header-icon>.el-icon{width:100%;height:100%;font-size:var(--fa-drawer-header-icon-size);color:var(--el-text-color-secondary)}.fa-drawer__scrollbar-view{height:100%}.fa-drawer__draggable{position:absolute;left:0;top:0;z-index:2;width:8px;height:100%;cursor:w-resize;touch-action:none}.fa-drawer__draggable::after{position:absolute;top:50%;left:50%;content:"";width:2px;height:48px;border-radius:var(--el-border-radius-round);background-color:var(--el-border-color-light);transform:translate(-50%, -50%)}.fa-drawer-small{--fa-drawer-header-height: 35px;--fa-drawer-footer-height: 40px;--fa-drawer-header-icon-width: 25px;--fa-drawer-header-icon-size: var(--el-font-size-medium);padding:0 6px;font-size:var(--el-font-size-extra-small)}@media(max-width: 767.98px){.fa-drawer{--fa-drawer-header-height: 44px;--fa-drawer-footer-height: auto;--fa-drawer-header-icon-width: 44px}.fa-drawer>.el-drawer__header{padding-left:12px}.fa-drawer>.el-drawer__body{padding:8px 12px}.fa-drawer>.el-drawer__footer{min-height:52px;padding:8px 12px max(8px,env(safe-area-inset-bottom))}.fa-drawer>.el-drawer__footer>.el-button{flex:1 1 0;min-width:0}.fa-drawer__draggable{display:none}}@media(prefers-reduced-motion: reduce){.fa-drawer{transition:none}}.fa-form{--fa-form-detail-label-height: 18px;--fa-form-detail-item-margin: 8px;--fa-form-detail-content-line-height: 14px;box-sizing:border-box;min-width:0;padding-right:10px;color:var(--el-text-color-regular)}.fa-form .el-form-item__content{min-width:0}.fa-form .el-form-item__label{padding:0 6px 0 0}.fa-form-detail-small{--fa-form-detail-label-height: 16px;--fa-form-detail-item-margin: 6px;--fa-form-detail-content-line-height: 12px}.fa-form-detail .el-form-item__label{height:var(--fa-form-detail-label-height, 18px);line-height:var(--fa-form-detail-label-height, 18px);color:var(--el-color-info)}.fa-form-detail .el-form-item__content{line-height:var(--fa-form-detail-content-line-height, 14px)}.fa-form-detail .el-form-item__content>*{width:auto}.fa-form-detail .el-form-item{margin-bottom:var(--fa-form-detail-item-margin, 8px)}@media(max-width: 767.98px){.fa-form{padding-right:0}.fa-form:not(.fa-form-detail) .el-select,.fa-form:not(.fa-form-detail) .el-date-editor,.fa-form:not(.fa-form-detail) .el-input-number,.fa-form:not(.fa-form-detail) .el-cascader,.fa-form:not(.fa-form-detail) .el-autocomplete{width:100%;min-width:0}.fa-form-detail .el-form-item{padding-block:2px}}.fa-form-item-tip{display:inline-flex;align-items:center}.fa-form-item-tip__label{margin-left:4px}.fa-image{overflow:hidden;border-radius:var(--el-border-radius-base);background-color:var(--el-fill-color-lighter)}.fa-image>.el-image__inner{cursor:pointer;transition:transform var(--el-transition-duration)}.fa-image>.el-image__inner:hover{transform:scale(1.2)}.fa-image__error-image{display:flex;justify-content:center;align-items:center;width:100%;height:100%;font-size:30px;color:var(--el-text-color-secondary);background:var(--el-fill-color-light)}@media(hover: none),(pointer: coarse),(prefers-reduced-motion: reduce){.fa-image>.el-image__inner:hover{transform:none}}@media(prefers-reduced-motion: reduce){.fa-image>.el-image__inner{transition:none}}.fa-icon-selector{width:100%;min-width:0}.fa-icon-selector .el-input-group__prepend,.fa-icon-selector .el-input-group__append{padding:0 12px}.fa-icon-selector .el-input-group__append{cursor:pointer}.el-popper.fa-icon-selector-popover{overflow:hidden;width:min(560px,100vw - 32px) !important;max-width:calc(100vw - 32px);padding:0;background-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow)}.fa-icon-selector-popover__box-header{display:flex;align-items:center;gap:12px;min-height:44px;padding:0 12px;border-bottom:1px solid var(--el-border-color-lighter);background-color:var(--el-fill-color-lighter)}.fa-icon-selector-popover__box-header__title{flex:1;font-weight:var(--el-font-weight-primary);color:var(--el-text-color-primary)}.fa-icon-selector-popover__box-header__tab{display:flex;gap:4px}.fa-icon-selector-popover__box-header__tab button{padding:5px 8px;color:var(--el-text-color-regular);border:0;border-radius:var(--el-border-radius-small);background:rgba(0,0,0,0);cursor:pointer}.fa-icon-selector-popover__box-header__tab button:hover,.fa-icon-selector-popover__box-header__tab button.is-active{color:var(--el-color-primary);background-color:var(--el-color-primary-light-9)}.fa-icon-selector-popover__box-header__tab button:focus-visible{outline:2px solid var(--el-color-primary-light-5);outline-offset:1px}.fa-icon-selector-popover__box-body{height:min(360px,50vh);padding:8px}.fa-icon-selector-popover__box-body .el-scrollbar,.fa-icon-selector-popover__box-body .el-scrollbar__wrap{height:100%}.fa-icon-selector-popover__box-body .el-scrollbar__view{display:grid;grid-template-columns:repeat(auto-fill, minmax(40px, 1fr));gap:6px}.fa-icon-selector-popover__box-body__item{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:38px;padding:0;color:var(--el-text-color-regular);border:1px solid var(--el-border-color-lighter);border-radius:var(--el-border-radius-base);background-color:var(--el-bg-color);cursor:pointer;transition:border-color var(--el-transition-duration-fast),color var(--el-transition-duration-fast),background-color var(--el-transition-duration-fast)}.fa-icon-selector-popover__box-body__item:hover{color:var(--el-color-primary);border-color:var(--el-color-primary-light-5);background-color:var(--el-color-primary-light-9)}.fa-icon-selector-popover__box-body__item:focus-visible{outline:2px solid var(--el-color-primary-light-5);outline-offset:1px}@media(min-width: 768px)and (max-width: 1199.98px){.el-popper.fa-icon-selector-popover{width:min(520px,100vw - 40px) !important}.fa-icon-selector-popover__box-body{height:min(340px,48vh)}}@media(max-width: 767.98px){.fa-icon-selector .el-input-group__prepend,.fa-icon-selector .el-input-group__append{padding:0 10px}.el-popper.fa-icon-selector-popover{width:calc(100vw - 24px) !important;max-width:calc(100vw - 24px)}.fa-icon-selector-popover__box-header{flex-direction:column;align-items:stretch;gap:6px;padding:10px}.fa-icon-selector-popover__box-header__tab{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr))}.fa-icon-selector-popover__box-header__tab button{min-height:36px}.fa-icon-selector-popover__box-body{height:min(380px,56dvh);padding:6px}.fa-icon-selector-popover__box-body .el-scrollbar__view{grid-template-columns:repeat(auto-fill, minmax(44px, 1fr))}.fa-icon-selector-popover__box-body__item{min-width:44px;height:44px}}.fa-select-dropdown__more-detail{--fa-select-detail-height: 42px;max-width:calc(100vw - 32px)}.fa-select-dropdown__selector__more-detail{display:flex;flex-direction:column;justify-content:center;height:var(--fa-select-detail-height, 42px);padding-block:4px}.fa-select-dropdown__selector__more-detail>:first-child{line-height:normal}.fa-select-dropdown__selector__more-detail>:nth-child(2){margin-left:auto;line-height:normal;font-size:var(--el-font-size-extra-small);color:var(--el-text-color-secondary)}.fa-select-dropdown__more-detail-small{--fa-select-detail-height: 34px}@media(max-width: 767.98px),(hover: none),(pointer: coarse){.fa-select-dropdown__more-detail{max-width:calc(100vw - 24px)}.fa-select-dropdown__selector__more-detail{height:auto;min-height:44px}}.fa-select-page-dropdown{--fa-select-page-detail-font-size: var(--el-font-size-extra-small);max-width:calc(100vw - 32px)}.fa-select-page-dropdown .el-select-dropdown__header{display:flex;flex-direction:column;gap:5px;padding:5px}.fa-select-page-dropdown .el-select-dropdown__footer{display:flex;flex-direction:column;align-items:flex-end;gap:5px;padding:5px}.fa-select-page-dropdown__default-selector{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 8px 0 5px;list-style:none}.fa-select-page-dropdown__default-selector>:first-child{overflow:hidden;min-width:0;text-overflow:ellipsis;white-space:nowrap}.fa-select-page-dropdown__default-selector>:nth-child(2){flex-shrink:0;font-size:var(--fa-select-page-detail-font-size);color:var(--el-text-color-secondary)}.fa-select-page-dropdown__search-input{width:100%}.fa-select-page-dropdown__pagination{overflow-x:auto;max-width:100%;height:24px;padding-right:5px}.fa-select-page-dropdown-small{--fa-select-page-detail-font-size: calc(var(--el-font-size-extra-small) - 1px)}@media(max-width: 767.98px){.fa-select-page-dropdown{max-width:calc(100vw - 24px)}.fa-select-page-dropdown .el-select-dropdown__header,.fa-select-page-dropdown .el-select-dropdown__footer{padding:6px}.fa-select-page-dropdown__pagination{justify-content:flex-start;width:100%}}.fa-select-v2-dropdown__more-detail{max-width:calc(100vw - 32px)}.fa-select-v2-dropdown__more-detail .el-select-dropdown__item{display:flex;flex-direction:column;justify-content:center}.fa-select-v2-dropdown__more-detail .el-select-dropdown__item>:first-child{line-height:normal}.fa-select-v2-dropdown__more-detail .el-select-dropdown__item>:nth-child(2){margin-left:auto;line-height:normal;font-size:var(--el-font-size-extra-small);color:var(--el-text-color-secondary)}@media(max-width: 767.98px){.fa-select-v2-dropdown__more-detail{max-width:calc(100vw - 24px)}}.fa-table{--fa-table-expand-padding: 12px 16px;--fa-table-image-size: 30px;--fa-table-tool-gap: 12px;--fa-table-date-search-width: 190px;--fa-table-keyword-min-width: 120px;--fa-table-keyword-max-width: 344px;--fa-table-keyword-measure-padding: 0 36px 0 33px;--fa-table-keyword-font-size: var(--el-font-size-base);box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;width:100%;min-width:0;height:100%;color:var(--el-text-color-regular);transition:width var(--el-transition-duration),height var(--el-transition-duration)}.fa-table>.el-card{--el-fill-color-blank: var(--el-bg-color-overlay);border-radius:calc(var(--el-border-radius-base)*1.5);background-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.fa-table__search{box-sizing:border-box;display:flex;flex-shrink:0;align-items:center;max-height:100%;margin-bottom:10px;padding:10px 12px;transition:height var(--el-transition-duration) ease-in-out,max-height var(--el-transition-duration) ease-in-out,opacity var(--el-transition-duration) ease-in-out,padding var(--el-transition-duration) ease-in-out,margin var(--el-transition-duration) ease-in-out}.fa-table__search.fa-table__search-hidden{height:0;max-height:0;margin:0;padding:0;border-width:0;border-color:rgba(0,0,0,0);opacity:0}.fa-table__search>.el-form{width:100%;min-width:0}.fa-table__search .el-form-item{min-width:0;margin-bottom:0}.fa-table__search .el-form-item__label{width:unset !important;padding:0 6px 0 0}.fa-table__search .el-range-editor.el-input__wrapper{padding:0 10px}.fa-table__search-operation{display:flex;align-items:center;justify-content:flex-end;gap:8px}.fa-table__search-operation>.el-button+.el-button{margin-left:0}.fa-table__search-operation .el-button.is-link .el-icon{margin-left:2px}.fa-table__header{box-sizing:border-box;display:flex;flex-shrink:0;align-items:center;margin-bottom:10px;padding:10px 12px}.fa-table__main{display:flex;flex:1;flex-direction:column;overflow:hidden;min-width:0;min-height:0;padding:10px 12px}.fa-table__main-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.fa-table__main-header-left,.fa-table__main-header-right{display:inline-flex;flex-wrap:wrap;align-items:center;min-width:0}.fa-table__main-header-left{gap:8px}.fa-table__main-header-right{column-gap:var(--fa-table-tool-gap)}.fa-table__main-header-right>.el-button+.el-button{margin-left:0}.fa-table__main-header-right__data-search{width:var(--fa-table-date-search-width);padding:0 5px}.fa-table__main-header-right__data-search .el-range-input{width:45%}.fa-table__main-header-right__data-search .el-range-separator{padding:0}.fa-table__main-header-right__data-search .el-range__close-icon{display:none}.fa-table__main-header-right__div-search{position:relative;width:min-content;min-width:var(--fa-table-keyword-min-width);max-width:var(--fa-table-keyword-max-width)}.fa-table__main-header-right__div-search__hidden{overflow:hidden;height:0;padding:var(--fa-table-keyword-measure-padding);font-size:var(--fa-table-keyword-font-size);white-space:nowrap}.fa-table__main-footer{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:12px;margin-top:10px}.fa-table__main-footer__left{flex:1;min-width:0}.fa-table__table{--el-table-header-text-color: var(--el-text-color-primary);--el-table-header-bg-color: var(--el-fill-color-light);flex:1;min-width:0;min-height:0}.fa-table__header-cell .el-table__placeholder{display:inline}.fa-table__header-cell>.cell{white-space:nowrap}.fa-table__header-cell.fa-table__image-column>.cell{padding-right:0}.fa-table__header-cell.el-table__cell:is(.el-table-fixed-column--left,.el-table-fixed-column--right){background-color:var(--el-table-header-bg-color)}.fa-table__auto-width-column__cell-header{display:inline-block}.fa-table__auto-width-column__cell{width:fit-content;white-space:nowrap}:where(.fa-table__table>.el-table__inner-wrapper>.el-table__body-wrapper>.el-scrollbar>.el-scrollbar__wrap>.el-scrollbar__view)>.el-table__empty-block{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}:where(.fa-table__table>.el-table__inner-wrapper>.el-table__body-wrapper>.el-scrollbar>.el-scrollbar__wrap>.el-scrollbar__view)>.el-table__body>tbody>tr>.el-table__expanded-cell{padding:0}.fa-table__empty{line-height:30px}.fa-table__empty>.el-icon{width:100px;height:auto}.fa-table__empty>.el-icon>svg{width:auto;height:auto}.fa-table__expand-wrapper{position:sticky;left:0;box-sizing:border-box;width:var(--fa-table-expand-width, 100cqw);min-width:0;padding:var(--fa-table-expand-padding)}.fa-table__primary-row{--el-table-tr-bg-color: var(--el-color-primary-light-9)}.fa-table__success-row{--el-table-tr-bg-color: var(--el-color-success-light-9)}.fa-table__warning-row{--el-table-tr-bg-color: var(--el-color-warning-light-9)}.fa-table__danger-row,.fa-table__error-row{--el-table-tr-bg-color: var(--el-color-danger-light-9)}.fa-table__info-row{--el-table-tr-bg-color: var(--el-color-info-light-9)}.fa-table__cell:not(.fa-table__operation-column) .el-button.is-link{--el-button-text-color: var(--el-text-color-regular);--el-button-hover-link-text-color: var(--el-color-primary)}.fa-table__cell:not(.fa-table__operation-column) .el-button.is-link:hover{text-decoration:underline;text-decoration-color:var(--el-button-hover-link-text-color)}.fa-table__cell:is(.fa-table__expand-column,.fa-table__selection-column,.fa-table__index-column,.fa-table__image-column)>.cell{padding:0}.fa-table__cell.fa-table__image-column>.cell{line-height:0}.fa-table__cell.fa-table__line-height-normal-column{padding:2px 0}.fa-table__cell.fa-table__line-height-normal-column>.cell{line-height:normal}.fa-table__image{display:inline-table;width:var(--fa-table-image-size);height:var(--fa-table-image-size);border-radius:4px}.fa-table__link-column__text{display:inline;font-weight:bold}:where(.fa-table__cell.fa-table__operation-column>.cell) .el-dropdown{vertical-align:middle}:where(.fa-table__cell.fa-table__operation-column) .el-dropdown-link{display:flex;align-items:baseline;color:var(--el-color-primary);cursor:pointer}.fa-table__data-delete-column::after{position:absolute;inset:0;display:flex;content:"数据已删除";justify-content:center;align-items:center;color:var(--el-color-danger);background-color:var(--el-overlay-color);cursor:not-allowed}.fa-table__selection-column__indeterminate .el-checkbox__inner::after{content:none}.fa-table__selection-column__indeterminate .el-checkbox__inner::before{position:absolute;left:0;right:0;top:5px;display:block;content:"";height:2px;background-color:var(--el-checkbox-checked-icon-color);transform:scale(0.5)}.fa-table__column-setting-drag-handle{color:var(--el-text-color-secondary);cursor:grab;touch-action:none;user-select:none}.fa-table__column-setting-drag-handle:active{cursor:grabbing}.fa-table-small{--fa-table-expand-padding: 8px 12px;--fa-table-image-size: 22px;--fa-table-tool-gap: 6px;--fa-table-date-search-width: 160px;--fa-table-keyword-min-width: 100px;--fa-table-keyword-max-width: 274px;--fa-table-keyword-measure-padding: 0 30px 0 27px;--fa-table-keyword-font-size: 12px}.fa-table-small>.fa-table__search{margin-bottom:5px;padding:5px 10px}.fa-table-small>.fa-table__search .fa-table__search-operation{gap:5px;margin-top:4px}.fa-table-small>.fa-table__header{margin-bottom:5px}.fa-table__main-header-right__data-search__popper{--fa-table-date-picker-width: 610px;--fa-table-date-picker-sidebar-width: 60px;--fa-table-date-picker-shortcut-padding: 10px;--fa-table-date-picker-th-padding: 3px;--fa-table-date-picker-cell-height: 26px;--fa-table-date-picker-header-font-size: 15px;max-width:calc(100vw - 32px)}.fa-table__main-header-right__data-search__popper .el-date-range-picker{width:min(var(--fa-table-date-picker-width),100vw - 32px)}.fa-table__main-header-right__data-search__popper .el-picker-panel__body-wrapper{display:flex;flex-direction:row}.fa-table__main-header-right__data-search__popper .el-picker-panel__sidebar{position:static;overflow:visible;width:var(--fa-table-date-picker-sidebar-width)}.fa-table__main-header-right__data-search__popper .el-picker-panel__shortcut{width:var(--fa-table-date-picker-sidebar-width);padding-left:var(--fa-table-date-picker-shortcut-padding)}.fa-table__main-header-right__data-search__popper .el-picker-panel__body{min-width:auto;margin:0}.fa-table__main-header-right__data-search__popper .el-date-range-picker__header>div{margin:0;font-size:var(--fa-table-date-picker-header-font-size)}.fa-table__main-header-right__data-search__popper .el-date-table th{padding:var(--fa-table-date-picker-th-padding)}.fa-table__main-header-right__data-search__popper .el-date-table-cell{height:var(--fa-table-date-picker-cell-height);padding:0}.fa-table__main-header-right__data-search__popper .el-date-range-picker__content{padding:6px}.fa-table__main-header-right__data-search__popper-small{--fa-table-date-picker-width: 510px;--fa-table-date-picker-sidebar-width: 50px;--fa-table-date-picker-shortcut-padding: 6px;--fa-table-date-picker-th-padding: 0;--fa-table-date-picker-cell-height: 24px;--fa-table-date-picker-header-font-size: 14px}.fa-table__main-header-right__data-search__popper-small .el-picker-panel__shortcut{font-size:13px;line-height:26px}.fa-table__main-header-right__data-search__popper-small .el-date-table td{height:28px;padding:2px 0}@media(min-width: 768px)and (max-width: 1199.98px){.fa-table__main-header{flex-wrap:wrap;align-items:flex-start}.fa-table__main-header-right{flex:1 1 420px;justify-content:flex-end}.fa-table__main-footer{flex-wrap:wrap;align-items:flex-start}}@media(max-width: 767.98px){.fa-table{overflow:visible}.fa-table>.el-card{border-radius:var(--el-border-radius-base);box-shadow:none}.fa-table__search,.fa-table-small>.fa-table__search{align-items:stretch;margin-bottom:8px;padding:10px 8px}.fa-table__search .el-form-item{display:block}.fa-table__search .el-form-item__label{display:block;width:100% !important;height:auto;padding:0 0 4px;line-height:1.5;text-align:left}.fa-table__search .el-form-item__content,.fa-table__search .el-select,.fa-table__search .el-date-editor,.fa-table__search .el-input-number{width:100%;min-width:0}.fa-table__header{overflow-x:auto;margin-bottom:8px;padding:8px}.fa-table-small>.fa-table__header{margin-bottom:8px}.fa-table__main{padding:8px}.fa-table__main-header{flex-direction:column;align-items:stretch;gap:8px;margin-bottom:8px}.fa-table__main-header-left,.fa-table__main-header-right{width:100%}.fa-table__main-header-right{gap:8px}.fa-table__main-header-right__div-search{flex:1 1 150px;width:auto;max-width:none}.fa-table__main-header-right__data-search{flex:1 1 190px;width:auto;min-width:0}.fa-table__main-footer{flex-direction:column;align-items:stretch;gap:8px;margin-top:8px}.fa-table__main-footer .fa-table-pagination{box-sizing:border-box;justify-content:flex-start;overflow-x:auto;width:100%;padding-bottom:2px}.fa-table__main-footer .el-pagination__jump,.fa-table__main-footer .el-pagination__total{display:none}.fa-table__main-header-right__data-search__popper{overflow-y:auto;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px)}.fa-table__main-header-right__data-search__popper .el-date-range-picker{width:calc(100vw - 24px)}.fa-table__main-header-right__data-search__popper .el-picker-panel__body-wrapper{display:block}.fa-table__main-header-right__data-search__popper .el-picker-panel__sidebar{display:none}.fa-table__main-header-right__data-search__popper .el-picker-panel__body{min-width:0;margin:0}.fa-table__main-header-right__data-search__popper .el-date-range-picker__content{box-sizing:border-box;width:100%;padding:8px}.fa-table__main-header-right__data-search__popper .el-date-range-picker__content.is-left{border-right:0;border-bottom:1px solid var(--el-border-color-lighter)}}@media(prefers-reduced-motion: reduce){.fa-table,.fa-table__search{transition:none}}.fa-tree{--fa-tree-node-height: 30px;--fa-tree-font-size: var(--el-font-size-base);--fa-tree-title-font-size: var(--el-font-size-large);--fa-tree-title-icon-size: var(--el-font-size-extra-large);--el-input-bg-color: transparent;--el-fill-color-blank: transparent;box-sizing:border-box;display:flex;flex-direction:column;min-width:0;height:100%;padding:10px 10px 0;color:var(--el-text-color-regular);background-color:var(--el-bg-color-overlay)}.fa-tree.fa-tree__fold>.fa-tree__scrollbar .el-tree-node__expand-icon{display:none}.fa-tree__title{display:flex;flex-flow:row;align-items:center;justify-content:center}.fa-tree__title>:first-child{flex:1}.fa-tree__title>h4{margin:0;font-size:var(--fa-tree-title-font-size);font-weight:bold;letter-spacing:.5px;color:var(--el-text-color-primary)}.fa-tree__title>.el-icon{font-size:var(--fa-tree-title-icon-size);cursor:pointer}.fa-tree__search-input{margin:5px 0}.fa-tree__scrollbar{flex:1;min-height:0;padding-right:10px}.fa-tree__inner{font-size:var(--fa-tree-font-size)}.fa-tree__inner .el-tree-node__content{height:var(--fa-tree-node-height);padding:0 3px;border-radius:var(--el-border-radius-base)}.fa-tree__inner .el-tree-node__expand-icon{padding:3px}.fa-tree__inner .el-tree-node.is-current>.el-tree-node__content{color:var(--el-color-white);background-color:var(--el-color-primary)}.fa-tree__inner .el-tree-node.is-current>.el-tree-node__content>.is-leaf{color:rgba(0,0,0,0)}.fa-tree__node-label{display:flex;flex-flow:row;justify-content:space-between;overflow:hidden;width:100%}.fa-tree__node-label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fa-tree__node-label span .el-icon{font-size:var(--el-font-size-medium)}.fa-tree__node-label>div{display:flex;flex:1;align-items:center;overflow:hidden}.fa-tree__node-label>div .el-avatar{flex-shrink:0}.fa-tree__node-label>:first-child{flex:1}.fa-tree__node-label>:nth-child(2){margin-left:10px}.fa-tree__node-label>:nth-child(2) .el-icon:nth-child(n+2){margin-left:5px}.fa-tree-small{--fa-tree-node-height: 26px;--fa-tree-font-size: var(--el-font-size-extra-small);--fa-tree-title-font-size: var(--el-font-size-medium);--fa-tree-title-icon-size: var(--el-font-size-large)}@media(min-width: 768px)and (max-width: 1199.98px){.fa-tree{padding:10px 8px 0}.fa-tree__scrollbar{padding-right:6px}}@media(max-width: 767.98px){.fa-tree{padding:8px 6px 0;border-radius:var(--el-border-radius-base)}.fa-tree__title{min-height:44px}.fa-tree__title>.el-icon{padding:10px}.fa-tree__search-input{margin:4px 0 8px}.fa-tree__scrollbar{padding-right:2px}.fa-tree__inner .el-tree-node__content{min-height:44px}}.fa-upload{position:relative;box-sizing:border-box;display:inline-block;min-width:0;max-width:100%;color:var(--el-text-color-regular)}.fa-upload .el-upload{box-sizing:border-box;max-width:100%}.fa-upload:not(.fa-upload__trigger) .el-upload:not(.is-drag){flex-direction:column;padding:20px;border:1px dashed var(--el-border-color);border-radius:calc(var(--el-border-radius-base)*1.5);background-color:var(--el-fill-color-lighter)}.fa-upload:not(.fa-upload__trigger) .el-upload:not(.is-drag):hover{border-color:var(--el-color-primary);background-color:var(--el-color-primary-light-9)}.fa-upload .el-upload-dragger{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;max-width:100%;padding:20px;border-radius:calc(var(--el-border-radius-base)*1.5);background-color:var(--el-fill-color-lighter);transition:border-color var(--el-transition-duration-fast),background-color var(--el-transition-duration-fast)}.fa-upload .el-upload-dragger:hover{border-color:var(--el-color-primary);background-color:var(--el-color-primary-light-9)}.fa-upload .el-icon--upload{margin-bottom:8px;font-size:44px;color:var(--el-color-primary)}.fa-upload .el-upload__text{max-width:100%;text-align:center;color:var(--el-text-color-regular)}.fa-upload .el-upload__tip{line-height:1.5;text-align:center;color:var(--el-text-color-secondary)}.fa-upload .el-upload-list__item{border-radius:var(--el-border-radius-base);background-color:var(--el-fill-color-lighter)}.fa-upload-image{position:relative;box-sizing:border-box;display:inline-block;min-width:0;max-width:100%}.fa-upload-image .el-upload{position:relative;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;width:var(--width);max-width:100%;height:var(--height);border:1px dashed var(--el-border-color);border-radius:calc(var(--el-border-radius-base)*1.5);background-color:var(--el-fill-color-lighter)}.fa-upload-image .el-upload:hover{border-color:var(--el-color-primary)}.fa-upload-image .el-upload-dragger{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;padding:0;border:0;border-radius:inherit;background-color:rgba(0,0,0,0)}.fa-upload-image .el-upload-list__item-thumbnail{display:block;width:100%;height:100%;object-fit:contain}.fa-upload-image .el-upload-list__item-actions{position:absolute;inset:0;display:inline-flex;justify-content:center;align-items:center;font-size:var(--el-font-size-extra-large);color:var(--el-color-white);background-color:var(--el-overlay-color-lighter);opacity:0;cursor:default;transition:opacity var(--el-transition-duration)}.fa-upload-image .el-upload-list__item-actions:hover{opacity:1}.fa-upload-image .el-upload-list__item-actions:hover span{display:inline-flex}.fa-upload-image .el-upload-list__item-icon{display:none;cursor:pointer}.fa-upload-image .el-upload-list__item-icon:not(:first-child){margin-left:1rem}.fa-upload-image .el-icon--upload{margin-bottom:0;font-size:calc(var(--height)*.4)}.fa-upload-image .el-upload__text{max-width:100%;line-height:18px}.fa-upload-image .el-upload__tip{margin-top:0;line-height:1.5;color:var(--el-text-color-secondary)}.fa-upload-image .el-loading-mask{top:0;left:0;right:auto;bottom:auto;width:var(--width);max-width:100%;height:var(--height)}@media(max-width: 767.98px){.fa-upload-image .el-upload-list__item-icon{align-items:center;justify-content:center;min-width:40px;min-height:40px}.fa-upload-image .el-upload-list__item-icon:not(:first-child){margin-left:4px}.fa-upload-image .el-upload__text{padding-inline:6px;font-size:var(--el-font-size-extra-small)}}@media(hover: none),(pointer: coarse){.fa-upload-image .el-upload-list__item-actions{opacity:1}.fa-upload-image .el-upload-list__item-icon{display:inline-flex;border-radius:50%;background-color:var(--el-overlay-color-lighter)}}.fa-upload-images{position:relative;box-sizing:border-box;display:inline-block;min-width:0;max-width:100%;color:var(--el-text-color-regular)}.fa-upload-images .el-upload-list--picture-card{max-width:100%}.fa-upload-images .el-upload-list__item,.fa-upload-images .el-upload--picture-card{border-radius:calc(var(--el-border-radius-base)*1.5);background-color:var(--el-fill-color-lighter)}.fa-upload-images .el-upload--picture-card.is-drag{display:inline-flex}.fa-upload-images .el-upload-dragger{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:0;border:0;border-radius:inherit;background-color:rgba(0,0,0,0)}.fa-upload-images .el-upload-dragger>.el-icon{font-size:28px;color:var(--el-text-color-secondary)}.fa-upload-images .el-upload__tip{color:var(--el-text-color-secondary)}.fa-upload-images__hidden-upload .el-upload{display:none}@media(hover: none),(pointer: coarse){.fa-upload-images .el-upload-list__item-actions{box-sizing:border-box;display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:4px;padding:4px;opacity:1}.fa-upload-images .el-upload-list__item-actions>.el-upload-list__item-icon,.fa-upload-images .el-upload-list__item-actions>.el-upload-list__item-preview{display:inline-flex;align-items:center;justify-content:center;width:auto;height:36px;border-radius:50%;background-color:var(--el-overlay-color-lighter)}.fa-upload-images .el-upload-list__item-actions>span+span{margin-left:0}}/*# sourceMappingURL=index.css.map */
1
+ @keyframes twinkle{0%{transform:scale(0.8)}80%{transform:scale(1.1)}100%{transform:scale(1)}}@keyframes loading{0%{background-position:0 0,0 100%,100% 100%}25%{background-position:100% 0,0 100%,100% 100%}50%{background-position:100% 0,0 0,100% 100%}75%{background-position:100% 0,0 0,0 100%}100%{background-position:100% 100%,0 0,0 100%}}.__fa-loading{position:fixed;inset:0;z-index:9990;width:100%;height:100%;background-color:var(--el-mask-color);backdrop-filter:blur(2px)}.__fa-loading__box{position:absolute;top:50%;left:50%;filter:drop-shadow(var(--el-box-shadow-light));transform:translate(-50%, -50%)}.__fa-loading__box-warp{width:80px;height:80px}.__fa-loading__box-warp__item{--g1: conic-gradient(from 90deg at 3px 3px, #0000 90deg, var(--el-color-primary) 0);--g2: conic-gradient(from -90deg at 22px 22px, #0000 90deg, var(--el-color-primary) 0);width:55px;aspect-ratio:1;background:var(--g1),var(--g1),var(--g1),var(--g2),var(--g2),var(--g2);background-size:25px 25px;background-repeat:no-repeat;animation:loading 1.2s infinite}@media(prefers-reduced-motion: reduce){.__fa-loading__box-warp__item{animation:none}}.__fa-overlay{position:fixed;inset:0;z-index:9990;width:100%;height:100%;background-color:rgba(0,0,0,0);pointer-events:auto;cursor:not-allowed}.fa__copy-icon{margin-right:3px;color:var(--el-text-color-secondary);cursor:pointer;transition:color var(--el-transition-duration-fast)}.fa__copy-icon:hover{color:var(--el-color-primary)}.fa__hover__twinkle{transform-origin:center}.fa__hover__twinkle:hover>:first-child{animation:twinkle var(--el-transition-duration) linear}.fa__hover__suspension{transition:transform var(--el-transition-duration) ease,box-shadow var(--el-transition-duration) ease}.fa__hover__suspension:hover{border-radius:var(--el-border-radius-base);box-shadow:var(--el-box-shadow);transform:translateY(-4px) scale(1.02)}.fa__click__disabled{pointer-events:none !important}.fa__click__disabled.fa__click__disabled__cursor{position:relative !important;pointer-events:auto !important}.fa__click__disabled:hover{cursor:not-allowed !important}@media(prefers-reduced-motion: reduce){.fa__hover__twinkle:hover>:first-child{animation:none}.fa__hover__suspension{transition:none}.fa__hover__suspension:hover{transform:none}}.el-popper.fa-car-number__popover{box-sizing:border-box;width:min(360px + var(--el-popover-padding)*2 + 2px,100vw - 32px) !important;max-width:calc(100vw - 32px);margin-top:-12px;background-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow)}.fa-car-number__popover__digit-letter,.fa-car-number__popover__area{display:grid;grid-template-columns:repeat(10, minmax(0, 1fr));gap:4px}.fa-car-number__popover__digit-letter>.el-button,.fa-car-number__popover__area>.el-button{width:100%;min-width:0;margin:0;padding-inline:0}.fa-car-number__popover__hide{display:none}.fa-car-number__popover__btn{display:flex;justify-content:flex-end;gap:8px;margin-top:2px}.fa-car-number__popover__btn>.el-button+.el-button{margin-left:0}@media(max-width: 767.98px){.el-popper.fa-car-number__popover{width:calc(100vw - 24px) !important;max-width:calc(100vw - 24px);margin-top:-8px;padding:10px}.fa-car-number__popover__area,.fa-car-number__popover__digit-letter{grid-template-columns:repeat(8, minmax(0, 1fr));gap:5px}.fa-car-number__popover__area>.el-button,.fa-car-number__popover__digit-letter>.el-button{min-height:38px}.fa-car-number__popover__btn{margin-top:8px}.fa-car-number__popover__btn>.el-button{flex:1 1 0;min-width:0}}.fa-context-menu{--fa-context-menu-icon-margin: 5px;--fa-context-menu-font-size: var(--el-font-size-small);position:fixed;overflow:hidden;padding:0;border:1px solid var(--el-border-color-lighter);border-radius:var(--el-border-radius-base);background-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow)}.fa-context-menu>.el-dropdown-menu{background-color:rgba(0,0,0,0)}.fa-context-menu .el-dropdown-menu__item{min-height:var(--el-component-size);font-size:var(--fa-context-menu-font-size)}.fa-context-menu .el-dropdown-menu__item>.fa-icon{margin-right:var(--fa-context-menu-icon-margin)}.fa-context-menu .el-dropdown-menu__item:not(.is-disabled):hover{color:var(--el-dropdown-menuItem-hover-color);background-color:var(--el-dropdown-menuItem-hover-fill)}.fa-context-menu .el-dropdown-menu__item:not(.is-disabled):hover>.fa-icon{color:var(--el-dropdown-menuItem-hover-color)}.fa-context-menu-small{--fa-context-menu-icon-margin: 3px;--fa-context-menu-font-size: var(--el-font-size-extra-small)}@media(hover: none),(pointer: coarse){.fa-context-menu .el-dropdown-menu__item{min-height:44px}}.fa-dialog{--height: 90%;--fa-dialog-header-height: 40px;--fa-dialog-footer-height: 45px;--fa-dialog-header-icon-width: 30px;--fa-dialog-header-icon-size: var(--el-font-size-large);--el-dialog-title-font-size: var(--el-font-size-base);--el-fill-color-blank: var(--el-bg-color-overlay);box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;width:min(var(--el-dialog-width, 90%),100vw - 32px);max-height:var(--height);margin-bottom:0;padding:0 8px;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);border:1px solid var(--el-border-color-lighter);border-radius:calc(var(--el-border-radius-base)*2);background-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow);transition:width var(--el-transition-duration),height var(--el-transition-duration)}.fa-dialog>.el-dialog__header{display:flex;flex-shrink:0;align-items:center;height:var(--fa-dialog-header-height);padding:0;border-bottom:1px solid var(--el-border-color-lighter)}.fa-dialog>.el-dialog__body{display:flex;flex:1;flex-direction:row;overflow:hidden;min-height:0;padding:8px}.fa-dialog>.el-dialog__body>.el-scrollbar{flex:1;height:inherit}.fa-dialog>.el-dialog__footer{display:flex;flex-shrink:0;align-items:center;justify-content:flex-end;gap:8px;height:var(--fa-dialog-footer-height);padding:0;border-top:1px solid var(--el-border-color-lighter)}.fa-dialog>.el-dialog__footer>.el-button+.el-button{margin-left:0}.fa-dialog.fa-dialog__fullscreen{--height: 100% !important;--el-dialog-width: 100% !important;max-width:100%;height:var(--height);max-height:var(--height);border:0;border-radius:0}.fa-dialog__header-title{flex:1;overflow:hidden;min-width:0;padding-inline:4px;font-weight:var(--el-font-weight-primary);text-overflow:ellipsis;white-space:nowrap;color:var(--el-text-color-primary)}.fa-dialog__header-icon{display:flex;align-items:center;justify-content:center;width:var(--fa-dialog-header-icon-width);height:100%;border-radius:var(--el-border-radius-base);cursor:pointer;transition:background-color var(--el-transition-duration-fast)}.fa-dialog__header-icon:hover{background-color:var(--el-fill-color-light)}.fa-dialog__header-icon>.el-icon{width:100%;height:100%;font-size:var(--fa-dialog-header-icon-size);color:var(--el-text-color-secondary)}.fa-dialog__scrollbar-view{height:100%}.fa-dialog__full-height{height:var(--height)}.fa-dialog-small{--fa-dialog-header-height: 35px;--fa-dialog-footer-height: 40px;--fa-dialog-header-icon-width: 25px;--fa-dialog-header-icon-size: var(--el-font-size-medium);--el-dialog-title-font-size: var(--el-font-size-extra-small);padding:0 6px;font-size:var(--el-font-size-extra-small)}@media(min-width: 768px)and (max-width: 1199.98px){.fa-dialog:not(.fa-dialog__fullscreen){width:min(var(--el-dialog-width, 90%),100vw - 48px);max-height:calc(100dvh - 48px)}}@media(max-width: 767.98px){.fa-dialog:not(.fa-dialog__fullscreen){--height: calc(100dvh - 24px);--fa-dialog-header-height: 44px;--fa-dialog-footer-height: auto;--fa-dialog-header-icon-width: 44px;max-height:var(--height);margin-top:max(12px,env(safe-area-inset-top)) !important;padding:0 6px}.fa-dialog:not(.fa-dialog__fullscreen)>.el-dialog__body{padding:8px 4px}.fa-dialog:not(.fa-dialog__fullscreen)>.el-dialog__footer{min-height:52px;padding:8px 4px max(8px,env(safe-area-inset-bottom))}.fa-dialog:not(.fa-dialog__fullscreen)>.el-dialog__footer>.el-button{flex:1 1 0;min-width:0}}@media(prefers-reduced-motion: reduce){.fa-dialog{transition:none}}.fa-drawer{--fa-drawer-header-height: 40px;--fa-drawer-footer-height: 45px;--fa-drawer-header-icon-width: 30px;--fa-drawer-header-icon-size: var(--el-font-size-large);--el-fill-color-blank: var(--el-bg-color-overlay);box-sizing:border-box;display:flex;flex-direction:column;font-size:var(--el-font-size-base);color:var(--el-text-color-regular);background-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow);transition:transform var(--el-transition-duration),width var(--el-transition-duration),height var(--el-transition-duration)}.fa-drawer>.el-drawer__header{display:flex;flex-shrink:0;align-items:center;height:var(--fa-drawer-header-height);margin:0;padding:0 0 0 10px;border-bottom:1px solid var(--el-border-color-lighter)}.fa-drawer>.el-drawer__body{position:relative;overflow:hidden;min-height:0;padding:8px}.fa-drawer>.el-drawer__body>.el-scrollbar{height:100%}.fa-drawer>.el-drawer__footer{display:flex;flex-shrink:0;align-items:center;justify-content:flex-end;gap:8px;height:var(--fa-drawer-footer-height);padding:0;border-top:1px solid var(--el-border-color-lighter)}.fa-drawer>.el-drawer__footer>.el-button+.el-button{margin-left:0}.fa-drawer.ltr>.el-drawer__body>.fa-drawer__draggable{right:0;left:auto}.fa-drawer.ttb>.el-drawer__body>.fa-drawer__draggable,.fa-drawer.btt>.el-drawer__body>.fa-drawer__draggable{left:0;width:100%;height:8px;cursor:n-resize}.fa-drawer.ttb>.el-drawer__body>.fa-drawer__draggable::after,.fa-drawer.btt>.el-drawer__body>.fa-drawer__draggable::after{width:48px;height:2px}.fa-drawer.ttb>.el-drawer__body>.fa-drawer__draggable{top:auto;bottom:0}.fa-drawer.btt>.el-drawer__body>.fa-drawer__draggable{top:0}.fa-drawer.fa-drawer__dragging{transition:none}.fa-drawer.fa-drawer__fullscreen{width:100% !important;height:100% !important}.fa-drawer__header-title{flex:1;overflow:hidden;min-width:0;font-size:inherit;font-weight:var(--el-font-weight-primary);text-overflow:ellipsis;white-space:nowrap;color:var(--el-text-color-primary)}.fa-drawer__header-icon{display:flex;align-items:center;justify-content:center;width:var(--fa-drawer-header-icon-width);height:100%;border-radius:var(--el-border-radius-base);cursor:pointer;transition:background-color var(--el-transition-duration-fast)}.fa-drawer__header-icon:hover{background-color:var(--el-fill-color-light)}.fa-drawer__header-icon>.el-icon{width:100%;height:100%;font-size:var(--fa-drawer-header-icon-size);color:var(--el-text-color-secondary)}.fa-drawer__scrollbar-view{height:100%}.fa-drawer__draggable{position:absolute;left:0;top:0;z-index:2;width:8px;height:100%;cursor:w-resize;touch-action:none}.fa-drawer__draggable::after{position:absolute;top:50%;left:50%;content:"";width:2px;height:48px;border-radius:var(--el-border-radius-round);background-color:var(--el-border-color-light);transform:translate(-50%, -50%)}.fa-drawer-small{--fa-drawer-header-height: 35px;--fa-drawer-footer-height: 40px;--fa-drawer-header-icon-width: 25px;--fa-drawer-header-icon-size: var(--el-font-size-medium);padding:0 6px;font-size:var(--el-font-size-extra-small)}@media(max-width: 767.98px){.fa-drawer{--fa-drawer-header-height: 44px;--fa-drawer-footer-height: auto;--fa-drawer-header-icon-width: 44px}.fa-drawer>.el-drawer__header{padding-left:12px}.fa-drawer>.el-drawer__body{padding:8px 12px}.fa-drawer>.el-drawer__footer{min-height:52px;padding:8px 12px max(8px,env(safe-area-inset-bottom))}.fa-drawer>.el-drawer__footer>.el-button{flex:1 1 0;min-width:0}.fa-drawer__draggable{display:none}}@media(prefers-reduced-motion: reduce){.fa-drawer{transition:none}}.fa-form{--fa-form-detail-label-height: 22px;--fa-form-detail-item-margin: 8px;--fa-form-detail-content-line-height: 22px;box-sizing:border-box;min-width:0;padding-right:10px;color:var(--el-text-color-regular)}.fa-form .el-form-item__content{min-width:0}.fa-form .el-form-item__label{padding:0 6px 0 0}.fa-form-detail-small{--fa-form-detail-label-height: 20px;--fa-form-detail-item-margin: 6px;--fa-form-detail-content-line-height: 20px}.fa-form-detail .el-form-item__label{height:var(--fa-form-detail-label-height, 22px);line-height:var(--fa-form-detail-label-height, 22px);color:var(--el-color-info)}.fa-form-detail .el-form-item__content{line-height:var(--fa-form-detail-content-line-height, 22px);overflow-wrap:anywhere}.fa-form-detail .el-form-item__content>*{width:auto}.fa-form-detail .el-form-item{align-items:baseline;margin-bottom:var(--fa-form-detail-item-margin, 8px)}@media(max-width: 767.98px){.fa-form{padding-right:0}.fa-form:not(.fa-form-detail) .el-select,.fa-form:not(.fa-form-detail) .el-date-editor,.fa-form:not(.fa-form-detail) .el-input-number,.fa-form:not(.fa-form-detail) .el-cascader,.fa-form:not(.fa-form-detail) .el-autocomplete{width:100%;min-width:0}.fa-form-detail .el-form-item{padding-block:2px}}.fa-form-item-tip{display:inline-flex;align-items:center}.fa-form-item-tip__label{margin-left:4px}.fa-image{overflow:hidden;border-radius:var(--el-border-radius-base);background-color:var(--el-fill-color-lighter)}.fa-image>.el-image__inner{cursor:pointer;transition:transform var(--el-transition-duration)}.fa-image>.el-image__inner:hover{transform:scale(1.2)}.fa-image__error-image{display:flex;justify-content:center;align-items:center;width:100%;height:100%;font-size:30px;color:var(--el-text-color-secondary);background:var(--el-fill-color-light)}@media(hover: none),(pointer: coarse),(prefers-reduced-motion: reduce){.fa-image>.el-image__inner:hover{transform:none}}@media(prefers-reduced-motion: reduce){.fa-image>.el-image__inner{transition:none}}.fa-icon-selector{width:100%;min-width:0}.fa-icon-selector .el-input-group__prepend,.fa-icon-selector .el-input-group__append{padding:0 12px}.fa-icon-selector .el-input-group__append{cursor:pointer}.el-popper.fa-icon-selector-popover{overflow:hidden;width:min(560px,100vw - 32px) !important;max-width:calc(100vw - 32px);padding:0;background-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow)}.fa-icon-selector-popover__box-header{display:flex;align-items:center;gap:12px;min-height:44px;padding:0 12px;border-bottom:1px solid var(--el-border-color-lighter);background-color:var(--el-fill-color-lighter)}.fa-icon-selector-popover__box-header__title{flex:1;font-weight:var(--el-font-weight-primary);color:var(--el-text-color-primary)}.fa-icon-selector-popover__box-header__tab{display:flex;gap:4px}.fa-icon-selector-popover__box-header__tab button{padding:5px 8px;color:var(--el-text-color-regular);border:0;border-radius:var(--el-border-radius-small);background:rgba(0,0,0,0);cursor:pointer}.fa-icon-selector-popover__box-header__tab button:hover,.fa-icon-selector-popover__box-header__tab button.is-active{color:var(--el-color-primary);background-color:var(--el-color-primary-light-9)}.fa-icon-selector-popover__box-header__tab button:focus-visible{outline:2px solid var(--el-color-primary-light-5);outline-offset:1px}.fa-icon-selector-popover__box-body{height:min(360px,50vh);padding:8px}.fa-icon-selector-popover__box-body .el-scrollbar,.fa-icon-selector-popover__box-body .el-scrollbar__wrap{height:100%}.fa-icon-selector-popover__box-body .el-scrollbar__view{display:grid;grid-template-columns:repeat(auto-fill, minmax(40px, 1fr));gap:6px}.fa-icon-selector-popover__box-body__item{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:38px;padding:0;color:var(--el-text-color-regular);border:1px solid var(--el-border-color-lighter);border-radius:var(--el-border-radius-base);background-color:var(--el-bg-color);cursor:pointer;transition:border-color var(--el-transition-duration-fast),color var(--el-transition-duration-fast),background-color var(--el-transition-duration-fast)}.fa-icon-selector-popover__box-body__item:hover{color:var(--el-color-primary);border-color:var(--el-color-primary-light-5);background-color:var(--el-color-primary-light-9)}.fa-icon-selector-popover__box-body__item:focus-visible{outline:2px solid var(--el-color-primary-light-5);outline-offset:1px}@media(min-width: 768px)and (max-width: 1199.98px){.el-popper.fa-icon-selector-popover{width:min(520px,100vw - 40px) !important}.fa-icon-selector-popover__box-body{height:min(340px,48vh)}}@media(max-width: 767.98px){.fa-icon-selector .el-input-group__prepend,.fa-icon-selector .el-input-group__append{padding:0 10px}.el-popper.fa-icon-selector-popover{width:calc(100vw - 24px) !important;max-width:calc(100vw - 24px)}.fa-icon-selector-popover__box-header{flex-direction:column;align-items:stretch;gap:6px;padding:10px}.fa-icon-selector-popover__box-header__tab{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr))}.fa-icon-selector-popover__box-header__tab button{min-height:36px}.fa-icon-selector-popover__box-body{height:min(380px,56dvh);padding:6px}.fa-icon-selector-popover__box-body .el-scrollbar__view{grid-template-columns:repeat(auto-fill, minmax(44px, 1fr))}.fa-icon-selector-popover__box-body__item{min-width:44px;height:44px}}.fa-select-dropdown__more-detail{--fa-select-detail-height: 42px;max-width:calc(100vw - 32px)}.fa-select-dropdown__selector__more-detail{display:flex;flex-direction:column;justify-content:center;height:var(--fa-select-detail-height, 42px);padding-block:4px}.fa-select-dropdown__selector__more-detail>:first-child{line-height:normal}.fa-select-dropdown__selector__more-detail>:nth-child(2){margin-left:auto;line-height:normal;font-size:var(--el-font-size-extra-small);color:var(--el-text-color-secondary)}.fa-select-dropdown__more-detail-small{--fa-select-detail-height: 34px}@media(max-width: 767.98px),(hover: none),(pointer: coarse){.fa-select-dropdown__more-detail{max-width:calc(100vw - 24px)}.fa-select-dropdown__selector__more-detail{height:auto;min-height:44px}}.fa-select-page-dropdown{--fa-select-page-detail-font-size: var(--el-font-size-extra-small);max-width:calc(100vw - 32px)}.fa-select-page-dropdown .el-select-dropdown__header{display:flex;flex-direction:column;gap:5px;padding:5px}.fa-select-page-dropdown .el-select-dropdown__footer{display:flex;flex-direction:column;align-items:flex-end;gap:5px;padding:5px}.fa-select-page-dropdown__default-selector{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 8px 0 5px;list-style:none}.fa-select-page-dropdown__default-selector>:first-child{overflow:hidden;min-width:0;text-overflow:ellipsis;white-space:nowrap}.fa-select-page-dropdown__default-selector>:nth-child(2){flex-shrink:0;font-size:var(--fa-select-page-detail-font-size);color:var(--el-text-color-secondary)}.fa-select-page-dropdown__search-input{width:100%}.fa-select-page-dropdown__pagination{overflow-x:auto;max-width:100%;height:24px;padding-right:5px}.fa-select-page-dropdown-small{--fa-select-page-detail-font-size: calc(var(--el-font-size-extra-small) - 1px)}@media(max-width: 767.98px){.fa-select-page-dropdown{max-width:calc(100vw - 24px)}.fa-select-page-dropdown .el-select-dropdown__header,.fa-select-page-dropdown .el-select-dropdown__footer{padding:6px}.fa-select-page-dropdown__pagination{justify-content:flex-start;width:100%}}.fa-select-v2-dropdown__more-detail{max-width:calc(100vw - 32px)}.fa-select-v2-dropdown__more-detail .el-select-dropdown__item{display:flex;flex-direction:column;justify-content:center}.fa-select-v2-dropdown__more-detail .el-select-dropdown__item>:first-child{line-height:normal}.fa-select-v2-dropdown__more-detail .el-select-dropdown__item>:nth-child(2){margin-left:auto;line-height:normal;font-size:var(--el-font-size-extra-small);color:var(--el-text-color-secondary)}@media(max-width: 767.98px){.fa-select-v2-dropdown__more-detail{max-width:calc(100vw - 24px)}}.fa-table{--fa-table-expand-padding: 12px 16px;--fa-table-image-size: 30px;--fa-table-tool-gap: 12px;--fa-table-date-search-width: 190px;--fa-table-keyword-min-width: 120px;--fa-table-keyword-max-width: 344px;--fa-table-keyword-measure-padding: 0 36px 0 33px;--fa-table-keyword-font-size: var(--el-font-size-base);box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;width:100%;min-width:0;height:100%;color:var(--el-text-color-regular);transition:width var(--el-transition-duration),height var(--el-transition-duration)}.fa-table>.el-card{--el-fill-color-blank: var(--el-bg-color-overlay);border-radius:calc(var(--el-border-radius-base)*1.5);background-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.fa-table__search{box-sizing:border-box;display:flex;flex-shrink:0;align-items:center;max-height:100%;margin-bottom:10px;padding:10px 12px;transition:height var(--el-transition-duration) ease-in-out,max-height var(--el-transition-duration) ease-in-out,opacity var(--el-transition-duration) ease-in-out,padding var(--el-transition-duration) ease-in-out,margin var(--el-transition-duration) ease-in-out}.fa-table__search.fa-table__search-hidden{height:0;max-height:0;margin:0;padding:0;border-width:0;border-color:rgba(0,0,0,0);opacity:0}.fa-table__search>.el-form{width:100%;min-width:0}.fa-table__search .el-form-item{min-width:0;margin-bottom:0}.fa-table__search .el-form-item__label{width:unset !important;padding:0 6px 0 0}.fa-table__search .el-range-editor.el-input__wrapper{padding:0 10px}.fa-table__search-operation{display:flex;align-items:center;justify-content:flex-end;gap:8px}.fa-table__search-operation>.el-button+.el-button{margin-left:0}.fa-table__search-operation .el-button.is-link .el-icon{margin-left:2px}.fa-table__header{box-sizing:border-box;display:flex;flex-shrink:0;align-items:center;margin-bottom:10px;padding:10px 12px}.fa-table__main{display:flex;flex:1;flex-direction:column;overflow:hidden;min-width:0;min-height:0;padding:10px 12px}.fa-table__main-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.fa-table__main-header-left,.fa-table__main-header-right{display:inline-flex;flex-wrap:wrap;align-items:center;min-width:0}.fa-table__main-header-left{gap:8px}.fa-table__main-header-right{column-gap:var(--fa-table-tool-gap)}.fa-table__main-header-right>.el-button+.el-button{margin-left:0}.fa-table__main-header-right__data-search{width:var(--fa-table-date-search-width);padding:0 5px}.fa-table__main-header-right__data-search .el-range-input{width:45%}.fa-table__main-header-right__data-search .el-range-separator{padding:0}.fa-table__main-header-right__data-search .el-range__close-icon{display:none}.fa-table__main-header-right__div-search{position:relative;width:min-content;min-width:var(--fa-table-keyword-min-width);max-width:var(--fa-table-keyword-max-width)}.fa-table__main-header-right__div-search__hidden{overflow:hidden;height:0;padding:var(--fa-table-keyword-measure-padding);font-size:var(--fa-table-keyword-font-size);white-space:nowrap}.fa-table__main-footer{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;gap:12px;margin-top:10px}.fa-table__main-footer__left{flex:1;min-width:0}.fa-table__table{--el-table-header-text-color: var(--el-text-color-primary);--el-table-header-bg-color: var(--el-fill-color-light);flex:1;min-width:0;min-height:0}.fa-table__header-cell .el-table__placeholder{display:inline}.fa-table__header-cell>.cell{white-space:nowrap}.fa-table__header-cell.fa-table__image-column>.cell{padding-right:0}.fa-table__header-cell.el-table__cell:is(.el-table-fixed-column--left,.el-table-fixed-column--right){background-color:var(--el-table-header-bg-color)}.fa-table__auto-width-column__cell-header{display:inline-block}.fa-table__auto-width-column__cell{width:fit-content;white-space:nowrap}:where(.fa-table__table>.el-table__inner-wrapper>.el-table__body-wrapper>.el-scrollbar>.el-scrollbar__wrap>.el-scrollbar__view)>.el-table__empty-block{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}:where(.fa-table__table>.el-table__inner-wrapper>.el-table__body-wrapper>.el-scrollbar>.el-scrollbar__wrap>.el-scrollbar__view)>.el-table__body>tbody>tr>.el-table__expanded-cell{padding:0}.fa-table__empty{line-height:30px}.fa-table__empty>.el-icon{width:100px;height:auto}.fa-table__empty>.el-icon>svg{width:auto;height:auto}.fa-table__expand-wrapper{position:sticky;left:0;box-sizing:border-box;width:var(--fa-table-expand-width, 100cqw);min-width:0;padding:var(--fa-table-expand-padding)}.fa-table__primary-row{--el-table-tr-bg-color: var(--el-color-primary-light-9)}.fa-table__success-row{--el-table-tr-bg-color: var(--el-color-success-light-9)}.fa-table__warning-row{--el-table-tr-bg-color: var(--el-color-warning-light-9)}.fa-table__danger-row,.fa-table__error-row{--el-table-tr-bg-color: var(--el-color-danger-light-9)}.fa-table__info-row{--el-table-tr-bg-color: var(--el-color-info-light-9)}.fa-table__cell:not(.fa-table__operation-column) .el-button.is-link{--el-button-text-color: var(--el-text-color-regular);--el-button-hover-link-text-color: var(--el-color-primary)}.fa-table__cell:not(.fa-table__operation-column) .el-button.is-link:hover{text-decoration:underline;text-decoration-color:var(--el-button-hover-link-text-color)}.fa-table__cell:is(.fa-table__expand-column,.fa-table__selection-column,.fa-table__index-column,.fa-table__image-column)>.cell{padding:0}.fa-table__cell.fa-table__image-column>.cell{line-height:0}.fa-table__cell.fa-table__line-height-normal-column{padding:2px 0}.fa-table__cell.fa-table__line-height-normal-column>.cell{line-height:normal}.fa-table__image{display:inline-table;width:var(--fa-table-image-size);height:var(--fa-table-image-size);border-radius:4px}.fa-table__link-column__text{display:inline;font-weight:bold}:where(.fa-table__cell.fa-table__operation-column>.cell) .el-dropdown{vertical-align:middle}:where(.fa-table__cell.fa-table__operation-column) .el-dropdown-link{display:flex;align-items:baseline;color:var(--el-color-primary);cursor:pointer}.fa-table__data-delete-column::after{position:absolute;inset:0;display:flex;content:"数据已删除";justify-content:center;align-items:center;color:var(--el-color-danger);background-color:var(--el-overlay-color);cursor:not-allowed}.fa-table__selection-column__indeterminate .el-checkbox__inner::after{content:none}.fa-table__selection-column__indeterminate .el-checkbox__inner::before{position:absolute;left:0;right:0;top:5px;display:block;content:"";height:2px;background-color:var(--el-checkbox-checked-icon-color);transform:scale(0.5)}.fa-table__column-setting-drag-handle{color:var(--el-text-color-secondary);cursor:grab;touch-action:none;user-select:none}.fa-table__column-setting-drag-handle:active{cursor:grabbing}.fa-table-small{--fa-table-expand-padding: 8px 12px;--fa-table-image-size: 22px;--fa-table-tool-gap: 6px;--fa-table-date-search-width: 160px;--fa-table-keyword-min-width: 100px;--fa-table-keyword-max-width: 274px;--fa-table-keyword-measure-padding: 0 30px 0 27px;--fa-table-keyword-font-size: 12px}.fa-table-small>.fa-table__search{margin-bottom:5px;padding:5px 10px}.fa-table-small>.fa-table__search .fa-table__search-operation{gap:5px;margin-top:4px}.fa-table-small>.fa-table__header{margin-bottom:5px}.fa-table__main-header-right__data-search__popper{--fa-table-date-picker-width: 610px;--fa-table-date-picker-sidebar-width: 60px;--fa-table-date-picker-shortcut-padding: 10px;--fa-table-date-picker-th-padding: 3px;--fa-table-date-picker-cell-height: 26px;--fa-table-date-picker-header-font-size: 15px;max-width:calc(100vw - 32px)}.fa-table__main-header-right__data-search__popper .el-date-range-picker{width:min(var(--fa-table-date-picker-width),100vw - 32px)}.fa-table__main-header-right__data-search__popper .el-picker-panel__body-wrapper{display:flex;flex-direction:row}.fa-table__main-header-right__data-search__popper .el-picker-panel__sidebar{position:static;overflow:visible;width:var(--fa-table-date-picker-sidebar-width)}.fa-table__main-header-right__data-search__popper .el-picker-panel__shortcut{width:var(--fa-table-date-picker-sidebar-width);padding-left:var(--fa-table-date-picker-shortcut-padding)}.fa-table__main-header-right__data-search__popper .el-picker-panel__body{min-width:auto;margin:0}.fa-table__main-header-right__data-search__popper .el-date-range-picker__header>div{margin:0;font-size:var(--fa-table-date-picker-header-font-size)}.fa-table__main-header-right__data-search__popper .el-date-table th{padding:var(--fa-table-date-picker-th-padding)}.fa-table__main-header-right__data-search__popper .el-date-table-cell{height:var(--fa-table-date-picker-cell-height);padding:0}.fa-table__main-header-right__data-search__popper .el-date-range-picker__content{padding:6px}.fa-table__main-header-right__data-search__popper-small{--fa-table-date-picker-width: 510px;--fa-table-date-picker-sidebar-width: 50px;--fa-table-date-picker-shortcut-padding: 6px;--fa-table-date-picker-th-padding: 0;--fa-table-date-picker-cell-height: 24px;--fa-table-date-picker-header-font-size: 14px}.fa-table__main-header-right__data-search__popper-small .el-picker-panel__shortcut{font-size:13px;line-height:26px}.fa-table__main-header-right__data-search__popper-small .el-date-table td{height:28px;padding:2px 0}@media(min-width: 768px)and (max-width: 1199.98px){.fa-table__main-header{flex-wrap:wrap;align-items:flex-start}.fa-table__main-header-right{flex:1 1 420px;justify-content:flex-end}.fa-table__main-footer{flex-wrap:wrap;align-items:flex-start}}@media(max-width: 767.98px){.fa-table{overflow:visible}.fa-table>.el-card{border-radius:var(--el-border-radius-base);box-shadow:none}.fa-table__search,.fa-table-small>.fa-table__search{align-items:stretch;margin-bottom:8px;padding:10px 8px}.fa-table__search .el-form-item{display:block}.fa-table__search .el-form-item__label{display:block;width:100% !important;height:auto;padding:0 0 4px;line-height:1.5;text-align:left}.fa-table__search .el-form-item__content,.fa-table__search .el-select,.fa-table__search .el-date-editor,.fa-table__search .el-input-number{width:100%;min-width:0}.fa-table__header{overflow-x:auto;margin-bottom:8px;padding:8px}.fa-table-small>.fa-table__header{margin-bottom:8px}.fa-table__main{padding:8px}.fa-table__main-header{flex-direction:column;align-items:stretch;gap:8px;margin-bottom:8px}.fa-table__main-header-left,.fa-table__main-header-right{width:100%}.fa-table__main-header-right{gap:8px}.fa-table__main-header-right__div-search{flex:1 1 150px;width:auto;max-width:none}.fa-table__main-header-right__data-search{flex:1 1 190px;width:auto;min-width:0}.fa-table__main-footer{flex-direction:column;align-items:stretch;gap:8px;margin-top:8px}.fa-table__main-footer .fa-table-pagination{box-sizing:border-box;justify-content:flex-start;overflow-x:auto;width:100%;padding-bottom:2px}.fa-table__main-footer .el-pagination__jump,.fa-table__main-footer .el-pagination__total{display:none}.fa-table__main-header-right__data-search__popper{overflow-y:auto;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px)}.fa-table__main-header-right__data-search__popper .el-date-range-picker{width:calc(100vw - 24px)}.fa-table__main-header-right__data-search__popper .el-picker-panel__body-wrapper{display:block}.fa-table__main-header-right__data-search__popper .el-picker-panel__sidebar{display:none}.fa-table__main-header-right__data-search__popper .el-picker-panel__body{min-width:0;margin:0}.fa-table__main-header-right__data-search__popper .el-date-range-picker__content{box-sizing:border-box;width:100%;padding:8px}.fa-table__main-header-right__data-search__popper .el-date-range-picker__content.is-left{border-right:0;border-bottom:1px solid var(--el-border-color-lighter)}}@media(prefers-reduced-motion: reduce){.fa-table,.fa-table__search{transition:none}}.fa-tree{--fa-tree-node-height: 30px;--fa-tree-font-size: var(--el-font-size-base);--fa-tree-title-font-size: var(--el-font-size-large);--fa-tree-title-icon-size: var(--el-font-size-extra-large);--el-input-bg-color: transparent;--el-fill-color-blank: transparent;box-sizing:border-box;display:flex;flex-direction:column;min-width:0;height:100%;padding:10px 10px 0;color:var(--el-text-color-regular);background-color:var(--el-bg-color-overlay)}.fa-tree.fa-tree__fold>.fa-tree__scrollbar .el-tree-node__expand-icon{display:none}.fa-tree__title{display:flex;flex-flow:row;align-items:center;justify-content:center}.fa-tree__title>:first-child{flex:1}.fa-tree__title>h4{margin:0;font-size:var(--fa-tree-title-font-size);font-weight:bold;letter-spacing:.5px;color:var(--el-text-color-primary)}.fa-tree__title>.el-icon{font-size:var(--fa-tree-title-icon-size);cursor:pointer}.fa-tree__search-input{margin:5px 0}.fa-tree__scrollbar{flex:1;min-height:0;padding-right:10px}.fa-tree__inner{font-size:var(--fa-tree-font-size)}.fa-tree__inner .el-tree-node__content{height:var(--fa-tree-node-height);padding:0 3px;border-radius:var(--el-border-radius-base)}.fa-tree__inner .el-tree-node__expand-icon{padding:3px}.fa-tree__inner .el-tree-node.is-current>.el-tree-node__content{color:var(--el-color-white);background-color:var(--el-color-primary)}.fa-tree__inner .el-tree-node.is-current>.el-tree-node__content>.is-leaf{color:rgba(0,0,0,0)}.fa-tree__node-label{display:flex;flex-flow:row;justify-content:space-between;overflow:hidden;width:100%}.fa-tree__node-label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fa-tree__node-label span .el-icon{font-size:var(--el-font-size-medium)}.fa-tree__node-label>div{display:flex;flex:1;align-items:center;overflow:hidden}.fa-tree__node-label>div .el-avatar{flex-shrink:0}.fa-tree__node-label>:first-child{flex:1}.fa-tree__node-label>:nth-child(2){margin-left:10px}.fa-tree__node-label>:nth-child(2) .el-icon:nth-child(n+2){margin-left:5px}.fa-tree-small{--fa-tree-node-height: 26px;--fa-tree-font-size: var(--el-font-size-extra-small);--fa-tree-title-font-size: var(--el-font-size-medium);--fa-tree-title-icon-size: var(--el-font-size-large)}@media(min-width: 768px)and (max-width: 1199.98px){.fa-tree{padding:10px 8px 0}.fa-tree__scrollbar{padding-right:6px}}@media(max-width: 767.98px){.fa-tree{padding:8px 6px 0;border-radius:var(--el-border-radius-base)}.fa-tree__title{min-height:44px}.fa-tree__title>.el-icon{padding:10px}.fa-tree__search-input{margin:4px 0 8px}.fa-tree__scrollbar{padding-right:2px}.fa-tree__inner .el-tree-node__content{min-height:44px}}.fa-upload{position:relative;box-sizing:border-box;display:inline-block;min-width:0;max-width:100%;color:var(--el-text-color-regular)}.fa-upload .el-upload{box-sizing:border-box;max-width:100%}.fa-upload:not(.fa-upload__trigger) .el-upload:not(.is-drag){flex-direction:column;padding:20px;border:1px dashed var(--el-border-color);border-radius:calc(var(--el-border-radius-base)*1.5);background-color:var(--el-fill-color-lighter)}.fa-upload:not(.fa-upload__trigger) .el-upload:not(.is-drag):hover{border-color:var(--el-color-primary);background-color:var(--el-color-primary-light-9)}.fa-upload .el-upload-dragger{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;max-width:100%;padding:20px;border-radius:calc(var(--el-border-radius-base)*1.5);background-color:var(--el-fill-color-lighter);transition:border-color var(--el-transition-duration-fast),background-color var(--el-transition-duration-fast)}.fa-upload .el-upload-dragger:hover{border-color:var(--el-color-primary);background-color:var(--el-color-primary-light-9)}.fa-upload .el-icon--upload{margin-bottom:8px;font-size:44px;color:var(--el-color-primary)}.fa-upload .el-upload__text{max-width:100%;text-align:center;color:var(--el-text-color-regular)}.fa-upload .el-upload__tip{line-height:1.5;text-align:center;color:var(--el-text-color-secondary)}.fa-upload .el-upload-list__item{border-radius:var(--el-border-radius-base);background-color:var(--el-fill-color-lighter)}.fa-upload-image{position:relative;box-sizing:border-box;display:inline-block;min-width:0;max-width:100%}.fa-upload-image .el-upload{position:relative;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;width:var(--width);max-width:100%;height:var(--height);border:1px dashed var(--el-border-color);border-radius:calc(var(--el-border-radius-base)*1.5);background-color:var(--el-fill-color-lighter)}.fa-upload-image .el-upload:hover{border-color:var(--el-color-primary)}.fa-upload-image .el-upload-dragger{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;padding:0;border:0;border-radius:inherit;background-color:rgba(0,0,0,0)}.fa-upload-image .el-upload-list__item-thumbnail{display:block;width:100%;height:100%;object-fit:contain}.fa-upload-image .el-upload-list__item-actions{position:absolute;inset:0;display:inline-flex;justify-content:center;align-items:center;font-size:var(--el-font-size-extra-large);color:var(--el-color-white);background-color:var(--el-overlay-color-lighter);opacity:0;cursor:default;transition:opacity var(--el-transition-duration)}.fa-upload-image .el-upload-list__item-actions:hover{opacity:1}.fa-upload-image .el-upload-list__item-actions:hover span{display:inline-flex}.fa-upload-image .el-upload-list__item-icon{display:none;cursor:pointer}.fa-upload-image .el-upload-list__item-icon:not(:first-child){margin-left:1rem}.fa-upload-image .el-icon--upload{margin-bottom:0;font-size:calc(var(--height)*.4)}.fa-upload-image .el-upload__text{max-width:100%;line-height:18px}.fa-upload-image .el-upload__tip{margin-top:0;line-height:1.5;color:var(--el-text-color-secondary)}.fa-upload-image .el-loading-mask{top:0;left:0;right:auto;bottom:auto;width:var(--width);max-width:100%;height:var(--height)}@media(max-width: 767.98px){.fa-upload-image .el-upload-list__item-icon{align-items:center;justify-content:center;min-width:40px;min-height:40px}.fa-upload-image .el-upload-list__item-icon:not(:first-child){margin-left:4px}.fa-upload-image .el-upload__text{padding-inline:6px;font-size:var(--el-font-size-extra-small)}}@media(hover: none),(pointer: coarse){.fa-upload-image .el-upload-list__item-actions{opacity:1}.fa-upload-image .el-upload-list__item-icon{display:inline-flex;border-radius:50%;background-color:var(--el-overlay-color-lighter)}}.fa-upload-images{position:relative;box-sizing:border-box;display:inline-block;min-width:0;max-width:100%;color:var(--el-text-color-regular)}.fa-upload-images .el-upload-list--picture-card{max-width:100%}.fa-upload-images .el-upload-list__item,.fa-upload-images .el-upload--picture-card{border-radius:calc(var(--el-border-radius-base)*1.5);background-color:var(--el-fill-color-lighter)}.fa-upload-images .el-upload--picture-card.is-drag{display:inline-flex}.fa-upload-images .el-upload-dragger{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:0;border:0;border-radius:inherit;background-color:rgba(0,0,0,0)}.fa-upload-images .el-upload-dragger>.el-icon{font-size:28px;color:var(--el-text-color-secondary)}.fa-upload-images .el-upload__tip{color:var(--el-text-color-secondary)}.fa-upload-images__hidden-upload .el-upload{display:none}@media(hover: none),(pointer: coarse){.fa-upload-images .el-upload-list__item-actions{box-sizing:border-box;display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:4px;padding:4px;opacity:1}.fa-upload-images .el-upload-list__item-actions>.el-upload-list__item-icon,.fa-upload-images .el-upload-list__item-actions>.el-upload-list__item-preview{display:inline-flex;align-items:center;justify-content:center;width:auto;height:36px;border-radius:50%;background-color:var(--el-overlay-color-lighter)}.fa-upload-images .el-upload-list__item-actions>span+span{margin-left:0}}/*# sourceMappingURL=index.css.map */