Showing
2 changed files
with
60 additions
and
51 deletions
| 1 | <!-- | 1 | <!-- |
| 2 | * @Date: 2022-08-31 16:16:49 | 2 | * @Date: 2022-08-31 16:16:49 |
| 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com | 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com |
| 4 | - * @LastEditTime: 2023-02-10 11:17:21 | 4 | + * @LastEditTime: 2024-06-13 16:07:24 |
| 5 | * @FilePath: /data-table/src/components/FileUploaderField/index.vue | 5 | * @FilePath: /data-table/src/components/FileUploaderField/index.vue |
| 6 | * @Description: 文件上传控件 | 6 | * @Description: 文件上传控件 |
| 7 | --> | 7 | --> |
| ... | @@ -16,41 +16,53 @@ | ... | @@ -16,41 +16,53 @@ |
| 16 | v-html="item.component_props.note" | 16 | v-html="item.component_props.note" |
| 17 | style="font-size: 0.9rem; margin-left: 1rem; color: gray; padding-bottom: 0.5rem; padding-top: 0.25rem; white-space: pre-wrap;" | 17 | style="font-size: 0.9rem; margin-left: 1rem; color: gray; padding-bottom: 0.5rem; padding-top: 0.25rem; white-space: pre-wrap;" |
| 18 | /> | 18 | /> |
| 19 | - <div> | 19 | + <div v-if="!item.component_props.readonly" class="upload-wrapper"> |
| 20 | - <p | 20 | + <div> |
| 21 | - v-for="(file, index) in fileList" | 21 | + <p |
| 22 | - :key="index" | 22 | + v-for="(file, index) in fileList" |
| 23 | - style="padding-left: 1rem; margin-bottom: 0.5rem" | 23 | + :key="index" |
| 24 | - > | 24 | + style="padding-left: 1rem; margin-bottom: 0.5rem" |
| 25 | - <p style="font-size: 1rem; word-break: break-all; margin-right: 0.75rem;"> | 25 | + > |
| 26 | - <span>{{ index + 1 }}. {{ file.filename }} {{ (file.size / 1024 / 1024).toFixed(2) }}MB</span> | 26 | + <p style="font-size: 1rem; word-break: break-all; margin-right: 0.75rem;"> |
| 27 | - | 27 | + <span>{{ index + 1 }}. {{ file.filename }} {{ (file.size / 1024 / 1024).toFixed(2) }}MB</span> |
| 28 | - <span style="color: #e32525; font-size: 0.85rem" @click="beforeDelete(file)">移除</span> | 28 | + |
| 29 | + <span style="color: #e32525; font-size: 0.85rem" @click="beforeDelete(file)">移除</span> | ||
| 30 | + </p> | ||
| 29 | </p> | 31 | </p> |
| 30 | - </p> | 32 | + </div> |
| 31 | - </div> | 33 | + <div style="padding: 1rem"> |
| 32 | - <div style="padding: 1rem"> | 34 | + <van-uploader |
| 33 | - <van-uploader | 35 | + :name="item.name" |
| 34 | - :name="item.name" | 36 | + upload-icon="add" |
| 35 | - upload-icon="add" | 37 | + accept="*" |
| 36 | - accept="*" | 38 | + :before-read="beforeRead" |
| 37 | - :before-read="beforeRead" | 39 | + :after-read="afterRead" |
| 38 | - :after-read="afterRead" | 40 | + :before-delete="beforeDelete" |
| 39 | - :before-delete="beforeDelete" | 41 | + :multiple="item.component_props.max_size > 1" |
| 40 | - :multiple="item.component_props.max_size > 1" | 42 | + > |
| 43 | + <van-button icon="plus" type="primary">上传文件</van-button> | ||
| 44 | + </van-uploader> | ||
| 45 | + </div> | ||
| 46 | + <!-- <div class="type-text">上传格式:{{ type_text }}</div> --> | ||
| 47 | + <div | ||
| 48 | + v-if="show_empty" | ||
| 49 | + class="van-field__error-message" | ||
| 50 | + style="padding: 0 1rem 1rem 1rem" | ||
| 41 | > | 51 | > |
| 42 | - <van-button icon="plus" type="primary">上传文件</van-button> | 52 | + 文件上传不能为空 |
| 43 | - </van-uploader> | 53 | + </div> |
| 54 | + <van-divider /> | ||
| 44 | </div> | 55 | </div> |
| 45 | - <!-- <div class="type-text">上传格式:{{ type_text }}</div> --> | 56 | + <div v-else style="padding: 1rem;"> |
| 46 | - <div | 57 | + <a |
| 47 | - v-if="show_empty" | 58 | + v-for="(item, index) in default_file" :key="index" |
| 48 | - class="van-field__error-message" | 59 | + :href="item.url" |
| 49 | - style="padding: 0 1rem 1rem 1rem" | 60 | + :download="item.name" |
| 50 | - > | 61 | + style="color: #000; font-size: 0.9rem; text-decoration: underline; margin-right: 0.5rem;" |
| 51 | - 文件上传不能为空 | 62 | + > |
| 63 | + {{ item.name }} | ||
| 64 | + </a> | ||
| 52 | </div> | 65 | </div> |
| 53 | - <van-divider /> | ||
| 54 | </div> | 66 | </div> |
| 55 | 67 | ||
| 56 | <van-overlay :show="loading"> | 68 | <van-overlay :show="loading"> |
| ... | @@ -86,6 +98,7 @@ const HideShow = computed(() => { | ... | @@ -86,6 +98,7 @@ const HideShow = computed(() => { |
| 86 | }) | 98 | }) |
| 87 | const emit = defineEmits(["active"]); | 99 | const emit = defineEmits(["active"]); |
| 88 | const show_empty = ref(false); | 100 | const show_empty = ref(false); |
| 101 | +const default_file = ref(props.item.component_props.default) | ||
| 89 | 102 | ||
| 90 | // 文件类型中文页面显示 | 103 | // 文件类型中文页面显示 |
| 91 | const type_text = computed(() => { | 104 | const type_text = computed(() => { | ... | ... |
| 1 | <!-- | 1 | <!-- |
| 2 | * @Date: 2022-08-31 16:16:49 | 2 | * @Date: 2022-08-31 16:16:49 |
| 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com | 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com |
| 4 | - * @LastEditTime: 2024-06-06 16:50:41 | 4 | + * @LastEditTime: 2024-06-13 16:40:11 |
| 5 | * @FilePath: /data-table/src/components/ImageUploaderField/index.vue | 5 | * @FilePath: /data-table/src/components/ImageUploaderField/index.vue |
| 6 | * @Description: 图片上传控件 | 6 | * @Description: 图片上传控件 |
| 7 | --> | 7 | --> |
| ... | @@ -41,10 +41,12 @@ | ... | @@ -41,10 +41,12 @@ |
| 41 | <van-image | 41 | <van-image |
| 42 | v-for="(item, index) in default_list" :key="index" | 42 | v-for="(item, index) in default_list" :key="index" |
| 43 | @click="onImgClick(index)" | 43 | @click="onImgClick(index)" |
| 44 | - width="100" | 44 | + width="80" |
| 45 | - height="100" | 45 | + height="80" |
| 46 | + fit="contain" | ||
| 47 | + position="center" | ||
| 46 | :src="item" | 48 | :src="item" |
| 47 | - style="margin-right: 0.5rem; margin-block-end: 0.25rem;" | 49 | + style="margin-right: 0.5rem; margin-block-end: 0.25rem; border: 1px solid #eee; padding: 0.5rem;" |
| 48 | /> | 50 | /> |
| 49 | </div> | 51 | </div> |
| 50 | <van-divider /> | 52 | <van-divider /> |
| ... | @@ -83,20 +85,13 @@ const HideShow = computed(() => { | ... | @@ -83,20 +85,13 @@ const HideShow = computed(() => { |
| 83 | return !props.item.component_props.disabled | 85 | return !props.item.component_props.disabled |
| 84 | }); | 86 | }); |
| 85 | // 默认图片列表 | 87 | // 默认图片列表 |
| 86 | -const default_tmp = [{ | 88 | +const default_tmp = ref(props.item.component_props.default) |
| 87 | - name : "92C3D730-CB73-40DD-AB1F-E86A159D2F11.png", | ||
| 88 | - url : "https://cdn.ipadbiz.cn/uploadForm/kibnjo/91b15c62bc3d002fb1c2dd2023648376.png" | ||
| 89 | -}, { | ||
| 90 | - name : "92C3D730-CB73-40DD-AB1F-E86A159D2F11.png", | ||
| 91 | - url : "https://fastly.jsdelivr.net/npm/@vant/assets/cat.jpeg" | ||
| 92 | -}]; | ||
| 93 | const default_list = ref([]); | 89 | const default_list = ref([]); |
| 94 | 90 | ||
| 95 | onMounted(() => { | 91 | onMounted(() => { |
| 96 | - // TODO: 没有默认的default字段 | 92 | + // 默认图片显示 |
| 97 | - if (default_tmp.length) { | 93 | + if (default_tmp.value.length) { |
| 98 | - default_list.value = default_tmp.map(item => item.url) | 94 | + default_list.value = default_tmp.value.map(item => item.url) |
| 99 | - console.log("🚀 ~ file: index.vue:97 ~ onMounted ~ default_list.value :", default_list.value ); | ||
| 100 | } | 95 | } |
| 101 | }) | 96 | }) |
| 102 | 97 | ||
| ... | @@ -361,10 +356,11 @@ const validImageUploader = () => { | ... | @@ -361,10 +356,11 @@ const validImageUploader = () => { |
| 361 | 356 | ||
| 362 | // 预览只读图片 | 357 | // 预览只读图片 |
| 363 | const onImgClick = (i) => { | 358 | const onImgClick = (i) => { |
| 364 | - showImagePreview({ | 359 | + // showImagePreview({ |
| 365 | - images: default_list.value, | 360 | + // images: default_list.value, |
| 366 | - startPosition: i, | 361 | + // startPosition: i, |
| 367 | - }); | 362 | + // className: "my-image-preview", |
| 363 | + // }); | ||
| 368 | } | 364 | } |
| 369 | 365 | ||
| 370 | defineExpose({ validImageUploader }); | 366 | defineExpose({ validImageUploader }); | ... | ... |
-
Please register or login to post a comment