1
This commit is contained in:
207
Yes.Blog/TempFiles/admin/js/main.js
Normal file
207
Yes.Blog/TempFiles/admin/js/main.js
Normal file
@@ -0,0 +1,207 @@
|
||||
document.addEventListener('alpine:init', () => {
|
||||
Alpine.store('errorMessage', '');
|
||||
|
||||
axios.defaults.baseURL = "/admin/api/"
|
||||
axios.defaults.timeout = 3000;
|
||||
axios.defaults.headers.common['Authorization'] = "";
|
||||
axios.defaults.headers.post['Content-Type'] = 'application/json';
|
||||
axios.interceptors.request.use(
|
||||
(config) => {
|
||||
return config;
|
||||
},
|
||||
(error) => {
|
||||
return Promise.reject(error);
|
||||
}
|
||||
);
|
||||
|
||||
const baseErrorMessage = "您的请求未能成功处理,可能是服务器开小差了!";
|
||||
|
||||
axios.interceptors.response.use(
|
||||
(response) => {
|
||||
if (!response.data.success) {
|
||||
pushError(response.data.message || baseErrorMessage);
|
||||
} else {
|
||||
return Promise.resolve(response.data.data);
|
||||
}
|
||||
},
|
||||
(error) => {
|
||||
if (error.response) {
|
||||
if (error.response.status == 422) {
|
||||
const errors = Object.values(error.response.data.errors);
|
||||
const values = Array.from(new Set(errors));
|
||||
const errorMessage = values.join(' ');
|
||||
pushError(errorMessage);
|
||||
} else if (error.response.status == 500) {
|
||||
const errorMessage = error.response.data.detail;
|
||||
pushError(errorMessage);
|
||||
} else {
|
||||
pushError(baseErrorMessage);
|
||||
}
|
||||
} else if (error.request) {
|
||||
pushError(baseErrorMessage);
|
||||
} else {
|
||||
pushError(baseErrorMessage);
|
||||
}
|
||||
return Promise.reject(error);
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
var hasLoadConfig = false;
|
||||
const config = localStorage.getItem("config");
|
||||
if (config) {
|
||||
const json = JSON.parse(config);
|
||||
window.config = json.data;
|
||||
const timestamp = new Date().getTime();
|
||||
if (json.timestamp && timestamp - json.timestamp < 60 * 1000 * 60) {
|
||||
hasLoadConfig = true;
|
||||
}
|
||||
}
|
||||
if (!hasLoadConfig) {
|
||||
axios.get('configuration')
|
||||
.then(data => {
|
||||
window.config = data;
|
||||
const config = {
|
||||
data: data,
|
||||
timestamp: new Date().getTime()
|
||||
};
|
||||
localStorage.setItem("config", JSON.stringify(config));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
window.username = localStorage.getItem("username");
|
||||
if (!window.username && window.location.pathname.split('/').pop() != "login") {
|
||||
location.href = "/admin/login";
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
window.logout = function () {
|
||||
axios.post('logout', this.user)
|
||||
.then(data => {
|
||||
location.href = "/admin";
|
||||
})
|
||||
}
|
||||
|
||||
window.handleFileChange = function (file, scuess) {
|
||||
const that = this;
|
||||
axios.post('Storages/token')
|
||||
.then(data => {
|
||||
|
||||
switch (data.storageType) {
|
||||
case "Qiniu":
|
||||
that.uploadQiniu(file, data.token, null, function (res) {
|
||||
const url = data.prefix + res.key;
|
||||
if (scuess) {
|
||||
scuess(url);
|
||||
};
|
||||
});
|
||||
break;
|
||||
case "Local":
|
||||
uploadLocal(file, function (res) {
|
||||
const url = data.prefix + res.key;
|
||||
if (scuess) {
|
||||
scuess(url);
|
||||
};
|
||||
});
|
||||
break;
|
||||
|
||||
default:
|
||||
pushError("文件存储配置错误,请检查!");
|
||||
break;
|
||||
}
|
||||
|
||||
})
|
||||
.catch(error => {
|
||||
pushError("上传过程中出现错误!");
|
||||
});
|
||||
}
|
||||
|
||||
window.uploadLocal = function (file, scuess) {
|
||||
const formData = new FormData();
|
||||
formData.append('file', file);
|
||||
|
||||
axios.post('Storages/upload', formData, {
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data'
|
||||
}
|
||||
})
|
||||
.then(data => {
|
||||
if (scuess) {
|
||||
scuess(data);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
window.uploadQiniu = function (file, token, key, scuess) {
|
||||
|
||||
const config = {
|
||||
useCdnDomain: true
|
||||
};
|
||||
|
||||
const putExtra = {
|
||||
fname: "",
|
||||
params: {},
|
||||
mimeType: ["image/png", "image/jpeg", "image/gif"]
|
||||
};
|
||||
|
||||
const observable = qiniu.upload(file, key, token, putExtra, config);
|
||||
|
||||
const observer = {
|
||||
next(res) {
|
||||
//console.log("next:", res)
|
||||
},
|
||||
error(err) {
|
||||
//console.log("error:", res)
|
||||
},
|
||||
complete(res) {
|
||||
if (scuess) {
|
||||
scuess(res);
|
||||
}
|
||||
}
|
||||
};
|
||||
const subscription = observable.subscribe(observer);
|
||||
}
|
||||
|
||||
|
||||
var timeout;
|
||||
window.pushError = function(errorMessage) {
|
||||
clearTimeout(timeout);
|
||||
Alpine.store('errorMessage', errorMessage);
|
||||
timeout = setTimeout(function () {
|
||||
Alpine.store('errorMessage', '');
|
||||
}, 5000);
|
||||
}
|
||||
|
||||
window.friendlyTime = function(time) {
|
||||
const now = new Date();
|
||||
const past = new Date(time);
|
||||
const diffInSeconds = Math.floor((now - past) / 1000);
|
||||
|
||||
if (diffInSeconds < 60) {
|
||||
return '刚刚';
|
||||
} else if (diffInSeconds < 3600) {
|
||||
const minutes = Math.floor(diffInSeconds / 60);
|
||||
return `${minutes}分钟前`;
|
||||
} else if (diffInSeconds < 86400) {
|
||||
const hours = Math.floor(diffInSeconds / 3600);
|
||||
return `${hours}小时前`;
|
||||
} else if (diffInSeconds < 604800) {
|
||||
const days = Math.floor(diffInSeconds / 86400);
|
||||
return `${days}天前`;
|
||||
} else {
|
||||
const weeks = Math.floor(diffInSeconds / 604800);
|
||||
return `${weeks}周前`;
|
||||
}
|
||||
}
|
||||
|
||||
window.getUrlParameter = function (name) {
|
||||
name = name.replace(/[\[\]]/g, '\\$&');
|
||||
var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
|
||||
results = regex.exec(window.location.search);
|
||||
if (!results) return null;
|
||||
if (!results[2]) return '';
|
||||
return decodeURIComponent(results[2].replace(/\+/g, ' '));
|
||||
}
|
||||
Reference in New Issue
Block a user