add
This commit is contained in:
108
frontend/src/views/admin/Schedules.vue
Normal file
108
frontend/src/views/admin/Schedules.vue
Normal file
@@ -0,0 +1,108 @@
|
||||
<template>
|
||||
<div class="page-card">
|
||||
<h3>Schedule Management</h3>
|
||||
<div style="margin: 12px 0; display:flex; gap: 12px;">
|
||||
<el-date-picker v-model="date" type="date" placeholder="Pick date" />
|
||||
<el-button type="primary" @click="load">Search</el-button>
|
||||
<el-button @click="showCreate = true">Add Schedule</el-button>
|
||||
</div>
|
||||
<el-table :data="schedules" stripe>
|
||||
<el-table-column prop="id" label="ID" width="80" />
|
||||
<el-table-column prop="nurseId" label="Nurse ID" width="100" />
|
||||
<el-table-column prop="date" label="Date" />
|
||||
<el-table-column prop="shift" label="Shift" />
|
||||
<el-table-column prop="task" label="Task" />
|
||||
<el-table-column label="Actions" width="200">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" @click="edit(scope.row)">Edit</el-button>
|
||||
<el-button size="mini" type="danger" @click="remove(scope.row)">Delete</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<el-dialog title="Schedule" :visible.sync="showCreate">
|
||||
<el-form :model="form" label-width="120px">
|
||||
<el-form-item label="Nurse ID"><el-input v-model="form.nurseId"/></el-form-item>
|
||||
<el-form-item label="Date"><el-date-picker v-model="form.date" type="date"/></el-form-item>
|
||||
<el-form-item label="Shift"><el-input v-model="form.shift"/></el-form-item>
|
||||
<el-form-item label="Task"><el-input v-model="form.task"/></el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer">
|
||||
<el-button @click="showCreate = false">Cancel</el-button>
|
||||
<el-button type="primary" @click="create">Save</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog title="Edit Schedule" :visible.sync="showEdit">
|
||||
<el-form :model="editForm" label-width="120px">
|
||||
<el-form-item label="Nurse ID"><el-input v-model="editForm.nurseId"/></el-form-item>
|
||||
<el-form-item label="Date"><el-date-picker v-model="editForm.date" type="date"/></el-form-item>
|
||||
<el-form-item label="Shift"><el-input v-model="editForm.shift"/></el-form-item>
|
||||
<el-form-item label="Task"><el-input v-model="editForm.task"/></el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer">
|
||||
<el-button @click="showEdit = false">Cancel</el-button>
|
||||
<el-button type="primary" @click="update">Save</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { schedulesByDate, scheduleCreate, scheduleUpdate, scheduleDelete } from "../../api";
|
||||
import { formatDate } from "../../utils/date";
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
date: "",
|
||||
schedules: [],
|
||||
showCreate: false,
|
||||
showEdit: false,
|
||||
form: { nurseId: "", date: "", shift: "", task: "" },
|
||||
editForm: {}
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
async load() {
|
||||
if (!this.date) return;
|
||||
try {
|
||||
const res = await schedulesByDate(formatDate(this.date));
|
||||
this.schedules = res.data.data;
|
||||
} catch (e) {
|
||||
this.$message.error(e.message || "load failed");
|
||||
}
|
||||
},
|
||||
async create() {
|
||||
try {
|
||||
await scheduleCreate({ ...this.form, date: formatDate(this.form.date) });
|
||||
this.showCreate = false;
|
||||
this.load();
|
||||
} catch (e) {
|
||||
this.$message.error(e.message || "create failed");
|
||||
}
|
||||
},
|
||||
edit(row) {
|
||||
this.editForm = { ...row };
|
||||
this.showEdit = true;
|
||||
},
|
||||
async update() {
|
||||
try {
|
||||
await scheduleUpdate({ ...this.editForm, date: formatDate(this.editForm.date) });
|
||||
this.showEdit = false;
|
||||
this.load();
|
||||
} catch (e) {
|
||||
this.$message.error(e.message || "update failed");
|
||||
}
|
||||
},
|
||||
async remove(row) {
|
||||
try {
|
||||
await scheduleDelete(row.id);
|
||||
this.load();
|
||||
} catch (e) {
|
||||
this.$message.error(e.message || "delete failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
Reference in New Issue
Block a user