diff --git a/app/Models/Computer.php b/app/Models/Computer.php index 4065420..50fbd4e 100644 --- a/app/Models/Computer.php +++ b/app/Models/Computer.php @@ -8,4 +8,10 @@ use Illuminate\Database\Eloquent\Model; class Computer extends Model { use HasFactory; + protected $fillable = ['user_id', 'name', 'cpu', 'motherboard', 'gpu', 'additional_info']; + + public function user(){ + return $this->belongsTo(User::class); + } + } diff --git a/app/Models/Job.php b/app/Models/Job.php index e417724..070c230 100644 --- a/app/Models/Job.php +++ b/app/Models/Job.php @@ -8,4 +8,9 @@ use Illuminate\Database\Eloquent\Model; class Job extends Model { use HasFactory; + protected $fillable = ['computer_id', 'description', 'status']; + + public function computer(){ + return $this->belongsTo(Computer::class); + } } diff --git a/resources/store/computers.js b/resources/store/computers.js index 173c5f6..a7f6828 100644 --- a/resources/store/computers.js +++ b/resources/store/computers.js @@ -13,7 +13,7 @@ export const useComputersStore = defineStore('computers', { localStorage.setItem('auth_token', token); }, checkToken(){ - this.token = this.useUserStore().token; + this.token = useUserStore().token; }, async getComputerList(user_id){ if (this.token === null){ @@ -33,6 +33,29 @@ export const useComputersStore = defineStore('computers', { ).then((response)=>{ this.computers = response.data; }) + }, + async create(name, cpu, motherboard, gpu, additional_info){ + if (this.token === null){ + this.checkToken(); + } + await axios.post('/api/data/computers/create', { + user_id: useUserStore().user['id'], + name: name, + cpu: cpu, + motherboard: motherboard, + gpu: gpu, + additional_info: additional_info, + }, { + headers: { + Authorization: `Bearer ${this.token}`, + token: this.token + }, + }).then(()=>{ + this.getComputerList(useUserStore().user['id']); + return true; + }).catch(()=>{ + return false; + }); } }, }) diff --git a/resources/views/Computers/CreateForm.vue b/resources/views/Computers/CreateForm.vue new file mode 100644 index 0000000..8978d83 --- /dev/null +++ b/resources/views/Computers/CreateForm.vue @@ -0,0 +1,66 @@ + + + + + \ No newline at end of file diff --git a/resources/views/ComputersList.vue b/resources/views/ComputersList.vue index 706c976..713bc51 100644 --- a/resources/views/ComputersList.vue +++ b/resources/views/ComputersList.vue @@ -2,9 +2,10 @@ import { watch } from 'vue'; import { useUserStore } from '../store/auth.js'; import {useComputersStore} from "../store/computers.js"; -import {rules} from "../js/rules.js"; +import CreateForm from './Computers/CreateForm.vue'; export default { name: "About", + components: {CreateForm}, data() { return { userStore: useUserStore(), @@ -14,17 +15,16 @@ export default { editDialogShow: false, fetching: false, authenticated: false, - computerName: null, - computerCpu: null, - computerMotherboard: null, - computerGpu: null, - computerAdditional: null, + editLoading: false }; }, methods: { showCreateDialog(){ this.createDialogShow = true; }, + hideCreateDialog(){ + this.createDialogShow = false; + }, showEditDialog(){ this.editDialogShow = true; } @@ -35,10 +35,12 @@ export default { this.fetching = true; this.authenticated = newStore.user !== null && newStore.user !== undefined; this.computersStore.setToken(this.userStore.token); - this.computersStore.getComputerList(this.userStore.user['id']).then(()=>{ - this.computerList = this.computersStore.computers; - this.fetching = false; - }) + if (this.userStore.user['id']){ + this.computersStore.getComputerList(this.userStore.user['id']).then(()=>{ + this.computerList = this.computersStore.computers; + this.fetching = false; + }) + } }); } } @@ -48,7 +50,7 @@ export default {
-
+
{{ computer['name'] }} @@ -72,17 +74,7 @@ export default {
- - Создание нового компьютера - - - - - - - Создать - - +