sa-tool
v1.0.7
Published
SA tool is a toolset extracted from daily web projects development.
Readme
install
npm install sa-toolmain.js
import { createApp } from 'vue'
import App from './App.vue'
import SaTool from 'sa-tool'
import 'sa-tool/sa-tool.css'
const app = createApp(App)
app.use(SaTool)
app.mount('#app')
example
<template>
<sa-large-upload
:chunk-size="5 * 1024 * 1024"
:get-task="getTask"
:init-task="initTask"
:upload-task-part="uploadTaskPart"
:merge-task="mergeTask"
:progress-text-inside="true"
/>
</template>
<script setup>
import { getCurrentInstance } from "vue";
import axios from "axios";
const { proxy } = getCurrentInstance();
const baseUrl = "/api/large/file";
async function getTask(fileIdentifier) {
let result = await axios.get(`${baseUrl}/task/${fileIdentifier}`);
if (result.data.success) {
return Promise.resolve(result.data.data);
} else {
proxy.$message.error(result.data.msg);
}
}
async function initTask(fileIdentifier, fileName, totalSize, chunkSize) {
let result = await axios.post(`${baseUrl}/initTask`, {
fileIdentifier,
fileName,
totalSize,
chunkSize
});
if (result.data.success) {
return Promise.resolve(result.data.data);
} else {
proxy.$message.error(result.data.msg);
return Promise.reject(result.data.msg);
}
}
async function uploadTaskPart(fileIdentifier, partNum, partIdentifier, file) {
const formData = new FormData();
formData.append("file", file);
let result = await axios.post(`${baseUrl}/task/${fileIdentifier}/${partIdentifier}/${partNum}`, formData, {
"Content-Type": "multipart/form-data"
});
if (result.data.success) {
return Promise.resolve(result.data.data);
} else {
proxy.$message.error(result.data.msg);
return Promise.reject(result.data.msg);
}
}
async function mergeTask(fileIdentifier) {
let result = await axios.post(`${baseUrl}/task/${fileIdentifier}/merge`);
if (result.data.success) {
return Promise.resolve(result.data.data);
} else {
proxy.$message.error(result.data.msg);
return Promise.reject(result.data.msg);
}
}
</script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
padding: 8px;
}
</style>
