Initial commit

This commit is contained in:
Viet An
2026-03-02 09:45:33 +07:00
commit d17a9e2588
415 changed files with 92113 additions and 0 deletions

View File

@@ -0,0 +1,72 @@
<template>
<div class="has-text-left">
<p class="py-1 border-bottom" v-for="v in vfiles">
<span class="icon-text">
<span class="mr-5">{{ v.name }}</span>
<SvgIcon
v-bind="{ name: 'check2.svg', type: 'primary', size: 22 }"
v-if="v.status === 'success'"
></SvgIcon>
<SvgIcon
v-bind="{ name: 'error.svg', type: 'danger', size: 22 }"
v-else-if="v.status === 'error'"
></SvgIcon>
</span>
<span class="icon-text has-text-danger ml-6" v-if="v.error">
<SvgIcon
v-bind="{ name: 'error.svg', type: 'danger', size: 22 }"
></SvgIcon>
<span class="ml-1">{{ v.text }}</span>
</span>
<button
class="button is-small is-white is-loading px-0 ml-4"
v-if="v.status === 'uploading'"
>
Loading
</button>
</p>
</div>
</template>
<script>
export default {
props: ["files"],
data() {
return {
vfiles: this.$copy(this.files),
data: [],
};
},
created() {
let found = this.$find(this.vfiles, { error: true });
if (!found) this.upload();
},
methods: {
async doUpload(v, i) {
let file = this.files[i];
let rs = await this.$insertapi("upload", file.form, undefined, false);
v.status = rs === "error" ? "error" : "success";
this.vfiles[i] = v;
let obj = rs.rows[0];
obj.source = file;
this.data.push(obj);
this.checkDone();
},
async upload() {
for (let i = 0; i < this.vfiles.length; i++) {
let v = this.vfiles[i];
v.status = "uploading";
await this.doUpload(v, i);
}
},
checkDone() {
let found = this.vfiles.find(
(v) => !v.status || v.status === "uploading"
);
if (!found) {
this.$emit("files", this.data);
this.$emit("modalevent", { name: "files", data: this.data });
}
},
},
};
</script>