diff --git a/src/module/alertModal.js b/src/module/alertModal.js
index 2f29da5..41ffa1d 100644
--- a/src/module/alertModal.js
+++ b/src/module/alertModal.js
@@ -290,6 +290,8 @@ export async function uploadloader() {
/**
* Rename Modal
* @param { function } rename
+ * @param { string } type
+ * @param { number } id
*/
export async function renameModal(rename, type, id) {
let fileName = '';
@@ -316,3 +318,33 @@ export async function renameModal(rename, type, id) {
// 清空欄位
fileName = '';
}
+/**
+ * Delete File
+ * @param { string } files 有關連的檔案
+ * @param { string } type
+ * @param { number } id
+ */
+export async function deleteFileModal(files, type, id) {
+ const filesStore = FilesStore();
+
+ const result = await Swal.fire({
+ title: 'ARE YOU SURE?',
+ html: '
All related files will be deleted.
List of file(s) to delete:
- [log] Taipower 001
- [filter] Filter0401 - Taipower 001 Filter0401 - Taipower 001 Filter0401 - Taipower 001
- [rule] 1224 - Taipower 001
',
+ icon: 'warning',
+ iconColor: '#FF3366',
+ reverseButtons:true,
+ confirmButtonText: 'Yes',
+ confirmButtonColor: '#FF3366',
+ showCancelButton: true,
+ cancelButtonText: 'No',
+ cancelButtonColor: '#94a3b8',
+ customClass: customClass,
+ })
+ if(result.isConfirmed) {
+ // filesStore.deleteFile(type, id);
+ } else if(result.dismiss === 'cancel') {
+ // 什麼都不做
+ } else if(result.dismiss === 'backdrop') {
+ // 什麼都不做
+ }
+};
diff --git a/src/stores/files.js b/src/stores/files.js
index b02eff1..e379e73 100644
--- a/src/stores/files.js
+++ b/src/stores/files.js
@@ -151,9 +151,9 @@ export default defineStore('filesStore', {
uploadloader(); // 進度條
try {
const response = await axios.post(api, data);
- this.uploadLogId = response.data.id;
+ this.uploadLogId = response.data.id;
Swal.close(); // 關閉進度條
- await this.rename(); // 改檔名
+ this.rename(); // 改檔名
await uploadSuccess();
this.$router.push({name: 'Files'});
} catch(error) {
@@ -164,6 +164,8 @@ export default defineStore('filesStore', {
Swal.close(); // 關閉進度條
apiError(error, 'Failed to upload the log files.');
}
+ } finally {
+ // await this.rename();
}
},
/**
@@ -203,6 +205,72 @@ export default defineStore('filesStore', {
} catch(error) {
apiError(error, 'Failed to rename.');
}
- }
+ },
+ /**
+ * Delete file
+ * @param { string } type log | filter | log-check | filter-check
+ * @param { number } id
+ */
+ async deleteFile(type, id) {
+ let api;
+
+ switch (type) {
+ case 'log':
+ api = `/api/logs/${id}`;
+ break;
+ case 'filter':
+ api = `/api/filters/${id}`;
+ break;
+ case 'log-check':
+ api = `/api/log-checks/${id}`;
+ break;
+ case 'filter-check':
+ api = `/api/filter-checks/${id}`;
+ break;
+ }
+ try {
+ const response = await axios.delete(api);
+ } catch(error) {
+ apiError(error, 'Failed to delete.');
+ }
+ },
+ /**
+ * Download file as CSV
+ * @param { string } type log | filter | log-check | filter-check
+ * @param { number } id
+ * @param { string } fileName
+ */
+ async downloadFileCSV(type, id, fileName) {
+ let api;
+
+ switch (type) {
+ case 'log':
+ api = `/api/logs/${id}/csv`;
+ break;
+ case 'filter':
+ api = `/api/filters/${id}/csv`;
+ break;
+ case 'log-check':
+ api = `/api/log-checks/${id}/csv`;
+ break;
+ case 'filter-check':
+ api = `/api/filter-checks/${id}/csv`;
+ break;
+ }
+ try {
+ const response = await axios.get(api);
+ const csvData = response.data;
+ const blob = new Blob([csvData], { type: 'text/csv' });
+ const url = window.URL.createObjectURL(blob);
+ const link = document.createElement('a');
+
+ link.href = url;
+ link.download = `${fileName}.csv`;
+ link.click();
+ window.URL.revokeObjectURL(url);
+ } catch(error) {
+ apiError(error, 'Failed to delete.');
+ }
+ },
},
})
diff --git a/src/views/Files/index.vue b/src/views/Files/index.vue
index 6323077..d1155ba 100644
--- a/src/views/Files/index.vue
+++ b/src/views/Files/index.vue
@@ -31,8 +31,8 @@