Base Login
This commit is contained in:
424
plugins/connection.js
Normal file
424
plugins/connection.js
Normal file
@@ -0,0 +1,424 @@
|
||||
import Vue from 'vue';
|
||||
const mode = 'dev';
|
||||
var paths = [
|
||||
{ name: 'local', url: 'http://127.0.0.1:8000/' },
|
||||
{ name: 'dev', url: 'https://api.bigdatatech.cloud/' },
|
||||
{ name: 'prod', url: 'https://api.bigdatatech.cloud/' },
|
||||
];
|
||||
const path = paths.find((v) => v.name === mode).url;
|
||||
const apis = [
|
||||
{ name: 'upload', url: 'upload/', params: {} },
|
||||
{ name: 'image', url: 'data/Image/', url_detail: 'data-detail/Image/', params: {} },
|
||||
{ name: 'file', url: 'data/File/', url_detail: 'data-detail/File/', params: {} },
|
||||
|
||||
{
|
||||
name: 'user',
|
||||
url: 'data/User/',
|
||||
url_detail: 'data-detail/User/',
|
||||
params: {
|
||||
sort: '-id',
|
||||
values:
|
||||
'id,auth_method__code,blocked,auth_status__code,username,register_method__code,fullname,type,type__code,type__name,create_time,create_time__date,auth_method,auth_status,register_method,create_time,update_time',
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
name: 'blockreason',
|
||||
commit: 'updateBlockReason',
|
||||
url: 'data/Block_Reason/',
|
||||
url_detail: 'data-detail/Block_Reason/',
|
||||
params: { page: -1 },
|
||||
},
|
||||
{
|
||||
name: 'authstatus',
|
||||
commit: 'updateAuthStatus',
|
||||
url: 'data/Auth_Status/',
|
||||
url_detail: 'data-detail/Auth_Status/',
|
||||
params: { page: -1 },
|
||||
},
|
||||
{
|
||||
name: 'authmethod',
|
||||
commit: 'updateAuthMethod',
|
||||
url: 'data/Auth_Method/',
|
||||
url_detail: 'data-detail/Auth_Method/',
|
||||
params: { page: -1 },
|
||||
},
|
||||
{
|
||||
name: 'usertype',
|
||||
commit: 'updateUserType',
|
||||
url: 'data/User_Type/',
|
||||
url_detail: 'data-detail/User_Type/',
|
||||
params: {},
|
||||
},
|
||||
{
|
||||
name: 'registermethod',
|
||||
commit: 'updateRegisterMethod',
|
||||
url: 'data/Register_Method/',
|
||||
url_detail: 'data-detail/Register_Method/',
|
||||
params: { page: -1 },
|
||||
},
|
||||
{
|
||||
name: 'langchoice',
|
||||
commit: 'updateLangChoice',
|
||||
url: 'data/Lang_Choice/',
|
||||
url_detail: 'data-detail/Lang_Choice/',
|
||||
params: {},
|
||||
},
|
||||
{ name: 'userauth', url: 'data/User_Auth/', url_detail: 'data-detail/User_Auth/', params: { sort: '-id' } },
|
||||
{ name: 'accountrecovery', url: 'data/Account_Recovery/', url_detail: 'data-detail/Account_Recovery/', params: {} },
|
||||
{
|
||||
name: 'login',
|
||||
url: 'login/',
|
||||
params: {
|
||||
values:
|
||||
'id,username,email,password,avatar,fullname,display_name,type,type__code,type__name,blocked,block_reason,block_reason__code,block_reason__name,blocked_by,last_login,auth_method,auth_method__code,auth_method__name,auth_status,auth_status__code,auth_status__name,register_method,register_method__code,register_method__name,create_time,update_time',
|
||||
},
|
||||
},
|
||||
{ name: 'authtoken', url: 'auth-token/', params: {} },
|
||||
|
||||
{ name: 'emailsetup', url: 'data/Email_Setup/', url_detail: 'data-detail/Email_Setup/', params: { sort: '-id' } },
|
||||
{
|
||||
name: 'emailsent',
|
||||
url: 'data/Email_Sent/',
|
||||
url_detail: 'data-detail/Email_Sent/',
|
||||
params: {
|
||||
values:
|
||||
'id,receiver,content,content__sender__email,content__subject,content__content,status__code,status,status__name,create_time',
|
||||
sort: '-id',
|
||||
},
|
||||
},
|
||||
{ name: 'sendemail', url: 'send-email/', params: {} },
|
||||
{ name: 'token', url: 'data/Token/', url_detail: 'data-detail/Token', params: { filter: { expiry: 0 } } },
|
||||
{
|
||||
name: 'common',
|
||||
commit: 'updateCommon',
|
||||
url: 'data/Common/',
|
||||
url_detail: 'data-detail/Common/',
|
||||
params: { sort: 'index' },
|
||||
},
|
||||
{ name: 'sex', url: 'data/Sex/', url_detail: 'data-detail/Sex/', params: {} },
|
||||
{ name: 'downloadfile', url: 'download-file/', params: {} },
|
||||
{ name: 'download', url: 'download/', params: {} },
|
||||
{ name: 'gethash', url: 'get-hash/', params: {} },
|
||||
{ name: 'userapps', url: 'data/User_Apps/', url_detail: 'data-detail/User_Apps/', params: {} },
|
||||
{ name: 'customer', url: 'data/Customer/', url_detail: 'data-detail/Customer/', params: {} },
|
||||
];
|
||||
|
||||
Vue.use({
|
||||
install(Vue) {
|
||||
Vue.prototype.$path = function (name) {
|
||||
return name ? paths.find((v) => v.name === name).url : path;
|
||||
};
|
||||
|
||||
Vue.prototype.$findapi = function (name) {
|
||||
const result = Array.isArray(name)
|
||||
? apis.filter((v) => name.findIndex((x) => v.name === x) >= 0)
|
||||
: apis.find((v) => v.name === name);
|
||||
return this.$copy(result);
|
||||
};
|
||||
|
||||
Vue.prototype.$readyapi = function (list) {
|
||||
var array = [];
|
||||
list.forEach((element) => {
|
||||
let found = apis.find((v) => v.name === element);
|
||||
if (found) {
|
||||
let ele = JSON.parse(JSON.stringify(found));
|
||||
ele.ready = this.$store.state[element] ? true : false;
|
||||
array.push(ele);
|
||||
}
|
||||
});
|
||||
return array;
|
||||
};
|
||||
|
||||
// get data
|
||||
Vue.prototype.$getapi = async function (list) {
|
||||
try {
|
||||
let arr = list.map((v) => {
|
||||
let found = apis.find((v) => v.name === v.name);
|
||||
let url = (v.path ? paths.find((x) => x.name === v.path).url : path) + (v.url ? v.url : found.url);
|
||||
let params = v.params ? v.params : found.params === undefined ? {} : found.params;
|
||||
params.login = this.$store.state.login ? this.$store.state.login.id : undefined;
|
||||
return { url: url, params: params };
|
||||
});
|
||||
let data = await Promise.all(arr.map((v) => this.$axios.get(v.url, { params: v.params })));
|
||||
data.map((v, i) => {
|
||||
list[i].data = v.data;
|
||||
if (list[i].commit) {
|
||||
let payload = {};
|
||||
payload[list[i].name] = v.data.rows ? v.data.rows : v.data;
|
||||
this.$store.commit(list[i].commit, payload);
|
||||
}
|
||||
});
|
||||
return list;
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
return 'error';
|
||||
}
|
||||
};
|
||||
|
||||
// insert data
|
||||
Vue.prototype.$insertapi = async function (name, data, values) {
|
||||
try {
|
||||
let found = this.$findapi(name);
|
||||
let curpath = found.path ? paths.find((x) => x.name === found.path).url : path;
|
||||
var rs;
|
||||
if (!Array.isArray(data))
|
||||
rs = await this.$axios.post(`${curpath}${found.url}`, data, { params: { values: values } });
|
||||
else {
|
||||
let params = { action: 'import', values: values };
|
||||
rs = await this.$axios.post(`${curpath}import-data/${found.url.substring(5, found.url.length - 1)}/`, data, {
|
||||
params: params,
|
||||
});
|
||||
}
|
||||
|
||||
// update store
|
||||
if (found.commit) {
|
||||
if (this.$store.state[found.name]) {
|
||||
let copy = JSON.parse(JSON.stringify(this.$store.state[found.name]));
|
||||
let rows = Array.isArray(rs.data) ? rs.data : [rs.data];
|
||||
rows.map((v) => {
|
||||
if (v.id && !v.error) {
|
||||
let idx = copy.findIndex((x) => x.id === v.id);
|
||||
if (idx >= 0) copy[idx] = v;
|
||||
else copy.push(v);
|
||||
}
|
||||
});
|
||||
this.$store.commit('updateStore', { name: found.name, data: copy });
|
||||
}
|
||||
}
|
||||
return rs.data;
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
return 'error';
|
||||
}
|
||||
};
|
||||
|
||||
// update api
|
||||
Vue.prototype.$updateapi = async function (name, data, values) {
|
||||
try {
|
||||
let found = this.$findapi(name);
|
||||
let rs = await this.$axios.put(`${path}${found.url_detail}${data.id}/`, data, {
|
||||
params: { values: values ? values : found.params.values },
|
||||
});
|
||||
if (found.commit) {
|
||||
let index = this.$store.state[found.name]
|
||||
? this.$store.state[found.name].findIndex((v) => v.id === rs.data.id)
|
||||
: -1;
|
||||
if (index >= 0) {
|
||||
var copy = JSON.parse(JSON.stringify(this.$store.state[found.name]));
|
||||
if (Array.isArray(rs.data) === false) Vue.set(copy, index, rs.data);
|
||||
else {
|
||||
rs.data.forEach((v) => {
|
||||
let index = copy.findIndex((v) => v.id === v.id);
|
||||
if (index >= 0) Vue.set(copy, index, v);
|
||||
});
|
||||
}
|
||||
this.$store.commit('updateStore', { name: found.name, data: copy });
|
||||
}
|
||||
}
|
||||
return rs.data;
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
return 'error';
|
||||
}
|
||||
};
|
||||
|
||||
// delete data
|
||||
Vue.prototype.$deleteapi = async function (name, id) {
|
||||
try {
|
||||
let found = this.$findapi(name);
|
||||
var rs;
|
||||
if (!Array.isArray(id)) rs = await this.$axios.delete(`${path}${found.url_detail}${id}`);
|
||||
else {
|
||||
let params = { action: 'delete' };
|
||||
rs = await this.$axios.post(`${path}import-data/${found.url.substring(5, found.url.length - 1)}/`, id, {
|
||||
params: params,
|
||||
});
|
||||
}
|
||||
if (found.commit) {
|
||||
let copy = JSON.parse(JSON.stringify(this.$store.state[found.name]));
|
||||
if (!Array.isArray(id)) {
|
||||
let index = copy.findIndex((v) => v.id === id);
|
||||
if (index >= 0) this.$delete(copy, index);
|
||||
} else {
|
||||
rs.data.forEach((element) => {
|
||||
let index = copy.findIndex((v) => v.id === element.id);
|
||||
if (index >= 0) this.$delete(copy, index);
|
||||
});
|
||||
}
|
||||
this.$store.commit('updateStore', { name: found.name, data: copy });
|
||||
}
|
||||
return rs.data;
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
return 'error';
|
||||
}
|
||||
};
|
||||
|
||||
// insert row
|
||||
Vue.prototype.$insertrow = async function (name, data, values, pagename) {
|
||||
let result = await this.$insertapi(name, data, values);
|
||||
if (result === 'error') return;
|
||||
let arr = Array.isArray(result) ? result : [result];
|
||||
let copy = this.$copy(this.$store.state[pagename].data);
|
||||
arr.map((x) => {
|
||||
let index = copy.findIndex((v) => v.id === x.id);
|
||||
index >= 0 ? (copy[index] = x) : copy.unshift(x);
|
||||
});
|
||||
this.$store.commit('updateState', { name: pagename, key: 'data', data: copy });
|
||||
let pagedata = this.$store.state[pagename];
|
||||
if (pagedata.filters ? pagedata.filters.length > 0 : false) {
|
||||
this.$store.commit('updateState', { name: pagename, key: 'filterby', data: this.$copy(pagedata.filters) });
|
||||
}
|
||||
};
|
||||
|
||||
// update row
|
||||
Vue.prototype.$updaterow = async function (name, data, values, pagename) {
|
||||
let result = await this.$updateapi(name, data, values);
|
||||
if (result === 'error') return;
|
||||
let arr = Array.isArray(result) ? result : [result];
|
||||
let copy = this.$copy(this.$store.state[pagename].data);
|
||||
arr.map((x) => {
|
||||
let index = copy.findIndex((v) => v.id === x.id);
|
||||
index >= 0 ? (copy[index] = x) : copy.unshift(x);
|
||||
});
|
||||
this.$store.commit('updateState', { name: pagename, key: 'data', data: copy });
|
||||
let pagedata = this.$store.state[pagename];
|
||||
if (pagedata.filters ? pagedata.filters.length > 0 : false) {
|
||||
this.$store.commit('updateState', { name: pagename, key: 'filterby', data: this.$copy(pagedata.filters) });
|
||||
}
|
||||
};
|
||||
|
||||
// delete row
|
||||
Vue.prototype.$deleterow = async function (name, id, pagename, ask) {
|
||||
let self = this;
|
||||
var remove = async function () {
|
||||
let result = await self.$deleteapi(name, id);
|
||||
if (result === 'error') return;
|
||||
let arr = Array.isArray(id) ? id : [id];
|
||||
let copy = self.$copy(self.$store.state[pagename].data);
|
||||
arr.map((x) => {
|
||||
let index = copy.findIndex((v) => v.id === x);
|
||||
index >= 0 ? self.$delete(copy, index) : false;
|
||||
});
|
||||
self.$store.commit('updateState', { name: pagename, key: 'data', data: copy });
|
||||
let pagedata = this.$store.state[pagename];
|
||||
if (pagedata.filters ? pagedata.filters.length > 0 : false) {
|
||||
this.$store.commit('updateState', { name: pagename, key: 'filterby', data: this.$copy(pagedata.filters) });
|
||||
}
|
||||
};
|
||||
|
||||
// ask confirm
|
||||
if (ask) {
|
||||
this.$buefy.dialog.confirm({
|
||||
message: 'Bạn muốn xóa bản ghi: ' + id,
|
||||
onConfirm: () => remove(),
|
||||
});
|
||||
} else remove();
|
||||
};
|
||||
|
||||
// update page
|
||||
Vue.prototype.$updatepage = function (pagename, row, action) {
|
||||
let pagedata = this.$store.state[pagename];
|
||||
let copy = this.$copy(pagedata.data);
|
||||
let idx = copy.findIndex((v) => v.id === row.id);
|
||||
if (action === 'delete') this.$delete(copy, idx);
|
||||
else if (action === 'insert') copy.unshift(row);
|
||||
else copy[idx] = row;
|
||||
this.$store.commit('updateState', { name: pagename, key: 'data', data: copy });
|
||||
if (pagedata.filters ? pagedata.filters.length > 0 : false) {
|
||||
this.$store.commit('updateState', { name: pagename, key: 'filterby', data: this.$copy(pagedata.filters) });
|
||||
}
|
||||
};
|
||||
|
||||
Vue.prototype.$getdata = async function (name, filter, params, first) {
|
||||
let found = this.$findapi(name);
|
||||
if (params) found.params = params;
|
||||
else if (filter) found.params.filter = filter;
|
||||
let rs = await this.$getapi([found]);
|
||||
return first ? (rs[0].data.rows.length > 0 ? rs[0].data.rows[0] : undefined) : rs[0].data.rows;
|
||||
};
|
||||
|
||||
Vue.prototype.$getpage = function (showFilter) {
|
||||
return {
|
||||
data: [],
|
||||
fields: [],
|
||||
filters: [],
|
||||
update: undefined,
|
||||
action: undefined,
|
||||
filterby: undefined,
|
||||
api: { full_data: true },
|
||||
origin_api: { full_data: true },
|
||||
tablesetting: undefined,
|
||||
setting: undefined,
|
||||
tabfield: true,
|
||||
setpage: {},
|
||||
showFilter: this.$empty(showFilter) ? true : showFilter,
|
||||
};
|
||||
};
|
||||
|
||||
Vue.prototype.$setpage = function (pagename, row, api) {
|
||||
if (!this.$store.state[pagename]) return;
|
||||
let json = row.detail;
|
||||
let fields = this.$updateSeriesFields(json.fields);
|
||||
this.$store.commit('updateState', { name: pagename, key: 'fields', data: fields });
|
||||
this.$store.commit('updateState', { name: pagename, key: 'setting', data: this.$copy(row) });
|
||||
if (json.filters)
|
||||
this.$store.commit('updateState', { name: pagename, key: 'filters', data: this.$copy(json.filters) });
|
||||
if (json.tablesetting)
|
||||
this.$store.commit('updateState', { name: pagename, key: 'tablesetting', data: json.tablesetting });
|
||||
if (api) {
|
||||
let copy = this.$copy(api);
|
||||
delete copy.data;
|
||||
copy.full_data = api.data.full_data;
|
||||
copy.total_rows = api.data.total_rows;
|
||||
this.$store.commit('updateState', { name: pagename, key: 'api', data: copy });
|
||||
this.$store.commit('updateState', { name: pagename, key: 'origin_api', data: copy });
|
||||
}
|
||||
};
|
||||
|
||||
Vue.prototype.$findpage = function (arr) {
|
||||
var copy = this.$copy(this.$store.state.pagetrack);
|
||||
var doFind = function () {
|
||||
let found = undefined;
|
||||
for (let i = 1; i <= 30; i++) {
|
||||
let name = `pagedata${i}`;
|
||||
if (!copy[name]) {
|
||||
found = name;
|
||||
copy[name] = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) console.log('pagename not found');
|
||||
return found;
|
||||
};
|
||||
let result;
|
||||
if (arr) {
|
||||
result = [];
|
||||
arr.map((v) => {
|
||||
result.push({ name: v, value: doFind() });
|
||||
});
|
||||
} else {
|
||||
result = doFind(copy);
|
||||
}
|
||||
this.$store.commit('updateStore', { name: 'pagetrack', data: copy });
|
||||
return result;
|
||||
};
|
||||
|
||||
Vue.prototype.$clearpage = function (pagename) {
|
||||
if (!pagename) return;
|
||||
if (pagename === 'reset') return this.$store.commit('updateStore', { name: 'pagetrack', data: {} });
|
||||
let copy = this.$copy(this.$store.state.pagetrack);
|
||||
let arr = Array.isArray(pagename) ? pagename : [pagename];
|
||||
arr.map((v) => {
|
||||
copy[v] = false;
|
||||
this.$store.commit('updateStore', { name: v, data: undefined });
|
||||
});
|
||||
this.$store.commit('updateStore', { name: 'pagetrack', data: copy });
|
||||
};
|
||||
|
||||
Vue.prototype.$updatepath = function (val) {
|
||||
path = `https://${val}/`;
|
||||
};
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user