This commit is contained in:
王子琦
2026-01-20 11:32:46 +08:00
parent bc4d194460
commit cc7d8f30ff
92 changed files with 5050 additions and 0 deletions

View 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>