Commit eece3204 authored by chenqikuai's avatar chenqikuai

style:优化上传样式

parent 0bfe7b17
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
ref="inputFile" ref="inputFile"
accept=".pdf" accept=".pdf"
/> />
<label for="upload"> <label for="upload" class="inline-block">
<div <div
ref="uploadBox" ref="uploadBox"
class=" class="
...@@ -18,26 +18,40 @@ ...@@ -18,26 +18,40 @@
flex flex
items-center items-center
justify-center justify-center
mx-auto
text-font-white text-font-white
" "
> >
<img <img
v-if="!fileName" v-if="status === uploadStatus.NULL"
src="@/assets/icons/upload.png" src="@/assets/icons/upload.png"
alt="" alt=""
class="mx-auto" class="mx-auto"
/> />
<img v-else src="@/assets/icons/file.png" alt="" class="mx-auto" /> <img
v-else-if="status === uploadStatus.success"
src="@/assets/icons/file.png"
alt=""
class="mx-auto"
/>
<Loading type="spiner" v-else-if="status === uploadStatus.uploading" />
<div v-else-if="status === uploadStatus.failed">上传失败</div>
</div> </div>
</label> </label>
<div class="text-center text-font-white"> <div class="text-center text-font-white">
<div v-if="!fileName">支持扩展名格式:PDF</div> <div v-if="!fileName" class="mt-2">支持扩展名格式:PDF</div>
<div v-if="fileName"> <div v-if="fileName" class="mt-2">
{{ fileName }} {{ fileName }}
</div> </div>
<label for="upload"> <label for="upload" class="mt-2">
<div v-if="fileName">重新上传</div> <div
v-if="
status === uploadStatus.failed || status === uploadStatus.success
"
style="color: #0076ff"
class="inline-block"
>
重新上传
</div>
</label> </label>
</div> </div>
<div class="flex justify-between fixed bottom-0 left-0 right-0"> <div class="flex justify-between fixed bottom-0 left-0 right-0">
...@@ -59,17 +73,31 @@ ...@@ -59,17 +73,31 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import Vue from "vue"; import Vue from "vue";
import { Uploader, Loading } from "vant";
import { mapMutations, mapState } from "vuex"; import { mapMutations, mapState } from "vuex";
enum uploadStatus {
NULL,
uploading,
failed,
success,
}
export default Vue.extend({ export default Vue.extend({
data() { data() {
return {}; return {
fileList: [],
uploading: false,
uploadStatus,
status: uploadStatus.NULL,
};
}, },
components: { components: {
"Layout-Child": () => import("@/layout/Child.vue"), "Layout-Child": () => import("@/layout/Child.vue"),
"app-btn": () => import("@/components/common/Btn.vue"), "app-btn": () => import("@/components/common/Btn.vue"),
Uploader,
Loading,
}, },
computed: { computed: {
...mapState("create", ["fileName"]), ...mapState("create", ["fileName"]),
...@@ -90,17 +118,27 @@ export default Vue.extend({ ...@@ -90,17 +118,27 @@ export default Vue.extend({
}), }),
async afterRead(file: File) { async afterRead(file: File) {
try { try {
this.status = uploadStatus.uploading;
const ret = await this.$service.nftService.getMd5(file); const ret = await this.$service.nftService.getMd5(file);
this.setState({ this.setState({
fileName: file.name, fileName: file.name,
fileHash: ret, fileHash: ret,
file: file file: file,
}); });
this.status = uploadStatus.success;
} catch (err) { } catch (err) {
console.log(err); this.status = uploadStatus.failed;
} }
}, },
afterRead2(file: any) {
file.status = "uploading";
file.message = "上传中...";
setTimeout(() => {
file.status = "failed";
file.message = "上传失败";
}, 1000);
},
}, },
}); });
</script> </script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment