Bläddra i källkod

修复移动端选择文件拍照弹窗加载异常

cc12458 1 månad sedan
förälder
incheckning
9243b228af
1 ändrade filer med 8 tillägg och 5 borttagningar
  1. 8 5
      src/modules/monitor/components/PictureUpload.vue

+ 8 - 5
src/modules/monitor/components/PictureUpload.vue

@@ -22,12 +22,12 @@ const url = defineModel('url', { default: '' });
 
 const support = ref(false);
 
-const dialog = useFile({ multiple: false, accept: 'image/*', reset: true });
+let dialog = useFile({ multiple: false, accept: 'image/*', reset: true });
 
 const onTrigger = () => {
   if (props.disabled) return;
   if (url.value) emits('delete', url.value);
-  else if (support.value) onTake({ capture: 'user' });
+  else if (support.value) onTake({ capture: 'user' }, true);
 };
 
 const onClick = (event: PointerEvent) => {
@@ -36,8 +36,11 @@ const onClick = (event: PointerEvent) => {
   else onTake();
 };
 
-const onTake = async (options?: UseFileDialogOptions) => {
-  let file = await dialog.open(options);
+const onTake = async (options?: UseFileDialogOptions, clear = false) => {
+  let file;
+  try { file = await dialog.open(options); } catch { return; } finally {
+    if (clear) dialog = useFile({ multiple: false, accept: 'image/*', reset: true });
+  }
   try {
     loading.value = true;
     url.value = (await props.update?.(file)) ?? URL.createObjectURL(file);
@@ -80,7 +83,7 @@ tryOnUnmounted(() => {
       <img class="size-full object-cover" v-if="url" :src="url" alt="" />
       <template v-else>
         <van-icon class="text-primary" name="photo-o" :size="50" />
-        <div class="text-sm mt-2 text-gray-300">
+        <div class="text-sm mt-2 text-gray-300 select-none">
           <span>点击上传</span>
           <span v-if="support"> 或 长按拍摄</span>
         </div>