|
@@ -1,4 +1,4 @@
|
|
|
-import {defineComponent} from 'vue';
|
|
|
+import {VNodeRef, defineComponent} from 'vue';
|
|
|
import placeholder from '@assets/images/register/imgPlaceholder.webp';
|
|
|
import {useI18n} from 'vue-i18n';
|
|
|
import {useDropFile, useUpload} from './hooks';
|
|
@@ -19,45 +19,69 @@ export default defineComponent({
|
|
|
const [{uploadRef}, {onUpload, onUploadClick}] = useUpload(setValue);
|
|
|
const {zoneRef, isOverDropZone} = useDropFile(onUpload);
|
|
|
|
|
|
- return function() {
|
|
|
- return (
|
|
|
- <div
|
|
|
- ref={zoneRef}
|
|
|
+ return {
|
|
|
+ t,
|
|
|
+ value,
|
|
|
+ setValue,
|
|
|
+ errorMessage,
|
|
|
+ uploadRef,
|
|
|
+ onUploadClick,
|
|
|
+ zoneRef,
|
|
|
+ isOverDropZone,
|
|
|
+ };
|
|
|
+ },
|
|
|
+ render() {
|
|
|
+ const {
|
|
|
+ t,
|
|
|
+ value,
|
|
|
+ errorMessage,
|
|
|
+ onUploadClick,
|
|
|
+ isOverDropZone,
|
|
|
+ } = this;
|
|
|
+ const {title} = this.$props;
|
|
|
+
|
|
|
+ return (
|
|
|
+ <div
|
|
|
+ ref="zoneRef"
|
|
|
+ class={[
|
|
|
+ 'ld-login-upload-wrapper',
|
|
|
+ {'ld-login-upload-drop-active': isOverDropZone},
|
|
|
+ ]}
|
|
|
+ >
|
|
|
+ <p class="ld-login-upload-title">{title}</p>
|
|
|
+ <NImage
|
|
|
+ objectFit="cover"
|
|
|
+ src={value ? value : placeholder}
|
|
|
class={[
|
|
|
- 'ld-login-upload-wrapper',
|
|
|
- {'ld-login-upload-drop-active': isOverDropZone.value},
|
|
|
+ 'ld-login-upload-placeholder',
|
|
|
+ {'ld-login-upload-preview-img': Boolean(value)},
|
|
|
+ ]}
|
|
|
+ previewDisabled={value.length === 0}
|
|
|
+ previewSrc={value || void 0}
|
|
|
+ />
|
|
|
+ <p class="ld-login-upload-drap-tip">
|
|
|
+ {t('register.uploadTip')}
|
|
|
+ <span onClick={onUploadClick}>
|
|
|
+ {t('register.upload')}
|
|
|
+ </span>
|
|
|
+ </p>
|
|
|
+ <p
|
|
|
+ v-show={!value}
|
|
|
+ class={[
|
|
|
+ 'ld-login-upload-max-size-tip',
|
|
|
+ {'ld-login-upload-upload-error-tip': Boolean(errorMessage)},
|
|
|
]}
|
|
|
>
|
|
|
- <p class="ld-login-upload-title">{props.title}</p>
|
|
|
- <NImage
|
|
|
- objectFit="cover"
|
|
|
- src={value.value ? value.value : placeholder}
|
|
|
- class={[
|
|
|
- 'ld-login-upload-placeholder',
|
|
|
- {'ld-login-upload-preview-img': Boolean(value.value)},
|
|
|
- ]}
|
|
|
- previewDisabled={value.value.length === 0}
|
|
|
- previewSrc={value.value || void 0}
|
|
|
- />
|
|
|
- <p class="ld-login-upload-drap-tip">
|
|
|
- {t('register.uploadTip')}
|
|
|
- <span onClick={onUploadClick}>
|
|
|
- {t('register.upload')}
|
|
|
- </span>
|
|
|
- </p>
|
|
|
- <p
|
|
|
- v-show={!value.value}
|
|
|
- class={[
|
|
|
- 'ld-login-upload-max-size-tip',
|
|
|
- {'ld-login-upload-upload-error-tip': Boolean(errorMessage.value)},
|
|
|
- ]}
|
|
|
- >
|
|
|
- {t(errorMessage.value || 'register.maxSizeTip')}
|
|
|
- </p>
|
|
|
+ {t(errorMessage || 'register.maxSizeTip')}
|
|
|
+ </p>
|
|
|
|
|
|
- <input v-show={false} ref={uploadRef} type="file" accept="image/*" />
|
|
|
- </div>
|
|
|
- );
|
|
|
- };
|
|
|
+ <input
|
|
|
+ v-show={false}
|
|
|
+ ref="uploadRef"
|
|
|
+ type="file"
|
|
|
+ accept="image/*"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ );
|
|
|
},
|
|
|
});
|