complete Complete User Request Submission section RAD-1

This commit is contained in:
2026-01-03 19:14:30 +03:30
commit 7137ec5792
393 changed files with 152602 additions and 0 deletions
+164
View File
@@ -0,0 +1,164 @@
import { defineStore } from 'pinia'
import axios from "axios";
import { Inertia } from '@inertiajs/inertia'
export const usePermissionStore = defineStore('permissionStore', {
state: () => ({
createForm: {
datetime: '',
name : '',
label : '',
parent_id : '',
},
loaderCreateForm: false,
is_edit_form: false,
errorsCreateForm: [],
is_edit_id: null,
columns: [
{
key: 'id',
title: 'شناسه',
style: '!font-bold !text-sm',
width: 60,
},
{
key: 'name',
title: 'نام مقام',
},
{
key: 'label',
title: 'نام فارسی',
},
{
key: 'created_at',
title: 'تاریخ ایجاد مقام',
hasSort: true,
width: 200,
},
{
key: 'actions',
title: 'عملیات',
hasSort: false,
slot: true,
width: 120
},
],
endpoints: {
index: '/admin/permissions',
create: '/admin/permissions/create',
store: '/admin/permissions',
edit: (id) => `/admin/permissions/${id}/edit`,
update: (id) => `/admin/permissions/${id}`,
delete: (id) => `/admin/permissions/${id}`,
bulkDelete: '/admin/permissions-bulk-delete',
export: '/admin/permissions-export-data'
}
}),
getters: {
buttonLabel: (state) => {
return state.is_edit_id ? 'ویرایش دسترسی' : 'ثبت و ایجاد دسترسی جدید';
},
pageTitle: (state) => {
return state.is_edit_id ? 'ویرایش دسترسی' : 'افزودن دسترسی جدید';
},
indexPageTitle: (state) => {
return 'نمایش همه دسترسی ها';
}
},
actions: {
update_and_store() {
const url = this.is_edit_id ?
this.endpoints.update(this.is_edit_id) :
this.endpoints.store;
const method = this.is_edit_id ? 'patch' : 'post';
this.loaderCreateForm = true;
axios({
method: method,
url: url,
data: this.createForm
}).then(res => {
this.errorsCreateForm = []
this.loaderCreateForm = false;
if (this.is_edit_id) {
Inertia.get(this.endpoints.edit(this.is_edit_id));
} else {
this.resetCreateForm();
Inertia.get(this.endpoints.create);
}
}).catch(error => {
this.loaderCreateForm = false;
this.errorsCreateForm = error.response.data?.errors ?? [];
});
},
resetCreateForm() {
this.createForm = {
datetime: '',
name : '',
label : '',
parent_id : '',
}
this.is_edit_id = null;
this.errorsCreateForm = [];
},
setEditData(data) {
this.is_edit_id = data.id;
Object.keys(this.createForm).forEach(field => {
if (field === 'image' && data.profile_url) {
this.createForm[field] = { url: data.profile_url };
} else if (field === 'datetime' && data.created_at) {
this.createForm[field] = data.created_at;
} else {
this.createForm[field] = data[field] || '';
}
});
},
deleteRecord(id) {
return new Promise((resolve, reject) => {
axios.delete(this.endpoints.delete(id))
.then(response => {
Inertia.get(this.endpoints.index);
resolve(response);
})
.catch(error => {
reject(error);
});
});
},
bulkDelete(ids) {
return new Promise((resolve, reject) => {
axios.post(this.endpoints.bulkDelete, { ids })
.then(response => {
Inertia.get(this.endpoints.index);
resolve(response);
})
.catch(error => {
reject(error);
});
});
},
exportData(filters = {}) {
const query = new URLSearchParams(filters).toString();
window.open(`${this.endpoints.export}?${query}`, '_blank');
},
search(params) {
return Inertia.get(this.endpoints.index, params, {
preserveState: false
});
},
navigateToPage(page) {
return Inertia.get(this.endpoints.index, { page }, { preserveState: true });
}
}
})