This commit is contained in:
王子琦
2026-01-20 14:36:02 +08:00
parent ec6ec210d2
commit 4aa6a8ff6a
27 changed files with 366 additions and 66 deletions

View File

@@ -211,6 +211,26 @@ public class AdminController {
return ApiResponse.success(billService.createBill(bill));
}
@PutMapping("/bills")
public ApiResponse<Void> updateBill(@RequestBody BillRequest request) {
Bill existing = billMapper.findById(request.getId());
if (existing == null) {
throw new ApiException("账单不存在");
}
Bill bill = new Bill();
bill.setId(request.getId());
bill.setElderId(request.getElderId());
bill.setMonth(request.getMonth());
bill.setBedFee(request.getBedFee());
bill.setCareFee(request.getCareFee());
bill.setMealFee(request.getMealFee());
bill.setOtherFee(request.getOtherFee());
bill.setTotal(billService.calcTotal(bill));
bill.setStatus(existing.getStatus());
billMapper.update(bill);
return ApiResponse.success();
}
@GetMapping("/bills")
public ApiResponse<List<Bill>> listBills(@RequestParam(required = false) Long elderId) {
if (elderId == null) {
@@ -219,6 +239,16 @@ public class AdminController {
return ApiResponse.success(billService.listByElderId(elderId));
}
@DeleteMapping("/bills/{id}")
public ApiResponse<Void> deleteBill(@PathVariable Long id) {
Bill existing = billMapper.findById(id);
if (existing == null) {
throw new ApiException("账单不存在");
}
billMapper.delete(id);
return ApiResponse.success();
}
@GetMapping("/feedback")
public ApiResponse<List<Feedback>> listFeedback() {
return ApiResponse.success(feedbackMapper.listAll());

View File

@@ -149,6 +149,12 @@ public class FamilyController {
return ApiResponse.success(feedback);
}
@GetMapping("/feedback")
public ApiResponse<List<Feedback>> listFeedback() {
Long familyId = Long.valueOf(StpUtil.getLoginId().toString());
return ApiResponse.success(feedbackMapper.listByFamilyId(familyId));
}
@GetMapping("/notices")
public ApiResponse<List<Notice>> listNotices() {
Long familyId = Long.valueOf(StpUtil.getLoginId().toString());

View File

@@ -3,6 +3,7 @@ package com.nursinghome.dto;
import java.math.BigDecimal;
public class BillRequest {
private Long id;
private Long elderId;
private String month;
private BigDecimal bedFee;
@@ -10,6 +11,14 @@ public class BillRequest {
private BigDecimal mealFee;
private BigDecimal otherFee;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getElderId() {
return elderId;
}

View File

@@ -25,4 +25,10 @@ public interface BillMapper {
@Update("UPDATE bill SET status=#{status}, paid_at=#{paidAt} WHERE id=#{id}")
int updateStatus(Bill bill);
@Update("UPDATE bill SET elder_id=#{elderId}, month=#{month}, bed_fee=#{bedFee}, care_fee=#{careFee}, meal_fee=#{mealFee}, other_fee=#{otherFee}, total=#{total}, status=#{status} WHERE id=#{id}")
int update(Bill bill);
@Delete("DELETE FROM bill WHERE id=#{id}")
int delete(Long id);
}

View File

@@ -14,6 +14,9 @@ public interface FeedbackMapper {
@Select("SELECT * FROM feedback ORDER BY created_at DESC")
List<Feedback> listAll();
@Select("SELECT * FROM feedback WHERE family_id = #{familyId} ORDER BY created_at DESC")
List<Feedback> listByFamilyId(Long familyId);
@Update("UPDATE feedback SET status=#{status}, reply=#{reply}, updated_at=NOW() WHERE id=#{id}")
int updateStatus(Feedback feedback);
}

View File

@@ -22,12 +22,7 @@ public class BillService {
public Bill createBill(Bill bill) {
if (bill.getTotal() == null) {
BigDecimal total = BigDecimal.ZERO;
if (bill.getBedFee() != null) total = total.add(bill.getBedFee());
if (bill.getCareFee() != null) total = total.add(bill.getCareFee());
if (bill.getMealFee() != null) total = total.add(bill.getMealFee());
if (bill.getOtherFee() != null) total = total.add(bill.getOtherFee());
bill.setTotal(total);
bill.setTotal(calcTotal(bill));
}
if (bill.getStatus() == null) {
bill.setStatus("UNPAID");
@@ -36,6 +31,15 @@ public class BillService {
return bill;
}
public BigDecimal calcTotal(Bill bill) {
BigDecimal total = BigDecimal.ZERO;
if (bill.getBedFee() != null) total = total.add(bill.getBedFee());
if (bill.getCareFee() != null) total = total.add(bill.getCareFee());
if (bill.getMealFee() != null) total = total.add(bill.getMealFee());
if (bill.getOtherFee() != null) total = total.add(bill.getOtherFee());
return total;
}
public List<Bill> listByElderId(Long elderId) {
return billMapper.listByElderId(elderId);
}

View File

@@ -19,7 +19,6 @@ mybatis:
sa-token:
token-name: satoken
timeout: 86400
activity-timeout: -1
is-concurrent: true
is-share: true
token-style: uuid

View File

@@ -16,11 +16,24 @@ http.interceptors.response.use(
(response) => {
const data = response.data;
if (data && data.code !== 0) {
return Promise.reject(new Error(data.message || "request error"));
if (data.message && (data.message.includes("未登录") || data.message.includes("token"))) {
localStorage.removeItem("token");
localStorage.removeItem("role");
window.location.href = "/login";
}
return Promise.reject(new Error(data.message || "请求失败"));
}
return response;
},
(error) => Promise.reject(error)
(error) => {
if (error && error.response && error.response.status === 401) {
localStorage.removeItem("token");
localStorage.removeItem("role");
window.location.href = "/login";
}
return Promise.reject(error);
}
);
export default http;

View File

@@ -23,6 +23,8 @@ export const scheduleUpdate = (payload) => http.put("/admin/schedules", payload)
export const scheduleDelete = (id) => http.delete(`/admin/schedules/${id}`);
export const billsCreate = (payload) => http.post("/admin/bills", payload);
export const billsUpdate = (payload) => http.put("/admin/bills", payload);
export const billsDelete = (id) => http.delete(`/admin/bills/${id}`);
export const billsList = (elderId) => http.get("/admin/bills", { params: { elderId } });
export const feedbackList = () => http.get("/admin/feedback");
@@ -47,6 +49,7 @@ export const familyHealthList = (elderId) => http.get("/family/health-records",
export const familyBills = (elderId) => http.get("/family/bills", { params: { elderId } });
export const familyPay = (id, payload) => http.post(`/family/bills/${id}/pay`, payload);
export const familyFeedback = (payload) => http.post("/family/feedback", payload);
export const familyFeedbackList = () => http.get("/family/feedback");
export const familyNoticeList = () => http.get("/family/notices");
export const uploadFile = (file) => {

View File

@@ -46,7 +46,7 @@ export default {
this.$router.push("/family");
}
} catch (e) {
this.$message.error(e.message || "login failed");
this.$message.error(e.message || "登录失败");
}
}
}
@@ -73,3 +73,4 @@ export default {
text-align: center;
}
</style>

View File

@@ -50,10 +50,10 @@ export default {
async handleRegister() {
try {
await register(this.form);
this.$message.success("registered");
this.$message.success("注册成功");
this.$router.push("/login");
} catch (e) {
this.$message.error(e.message || "register failed");
this.$message.error(e.message || "注册失败");
}
}
}
@@ -80,3 +80,5 @@ export default {
text-align: center;
}
</style>

View File

@@ -8,7 +8,11 @@
</div>
<el-table :data="bills" stripe>
<el-table-column prop="id" label="编号" width="80" />
<el-table-column prop="elderId" label="长者ID" width="100" />
<el-table-column label="长者" width="140">
<template slot-scope="scope">
{{ elderName(scope.row.elderId) }}
</template>
</el-table-column>
<el-table-column prop="month" label="月份" />
<el-table-column prop="total" label="金额" />
<el-table-column label="状态" width="120">
@@ -18,12 +22,24 @@
</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" width="180">
<template slot-scope="scope">
<el-button size="mini" @click="openEdit(scope.row)">编辑</el-button>
<el-button size="mini" type="danger" @click="remove(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-dialog title="新建账单" :visible.sync="showCreate">
<el-form :model="form" label-width="120px">
<el-form-item label="长者ID"><el-input v-model="form.elderId"/></el-form-item>
<el-form-item label="月份"><el-input v-model="form.month" placeholder="YYYY-MM"/></el-form-item>
<el-form-item label="长者">
<el-select v-model="form.elderId" placeholder="选择长者">
<el-option v-for="elder in elders" :key="elder.id" :label="elder.name" :value="elder.id" />
</el-select>
</el-form-item>
<el-form-item label="月份">
<el-date-picker v-model="form.month" type="month" placeholder="选择月份" />
</el-form-item>
<el-form-item label="床位费"><el-input v-model="form.bedFee"/></el-form-item>
<el-form-item label="护理费"><el-input v-model="form.careFee"/></el-form-item>
<el-form-item label="餐饮费"><el-input v-model="form.mealFee"/></el-form-item>
@@ -34,25 +50,74 @@
<el-button type="primary" @click="create">创建</el-button>
</span>
</el-dialog>
<el-dialog title="修改账单" :visible.sync="showEdit">
<el-form :model="editForm" label-width="120px">
<el-form-item label="长者">
<el-select v-model="editForm.elderId" placeholder="选择长者">
<el-option v-for="elder in elders" :key="elder.id" :label="elder.name" :value="elder.id" />
</el-select>
</el-form-item>
<el-form-item label="月份">
<el-date-picker v-model="editForm.month" type="month" placeholder="选择月份" />
</el-form-item>
<el-form-item label="床位费"><el-input v-model="editForm.bedFee"/></el-form-item>
<el-form-item label="护理费"><el-input v-model="editForm.careFee"/></el-form-item>
<el-form-item label="餐饮费"><el-input v-model="editForm.mealFee"/></el-form-item>
<el-form-item label="其他费用"><el-input v-model="editForm.otherFee"/></el-form-item>
</el-form>
<span slot="footer">
<el-button @click="showEdit = false">取消</el-button>
<el-button type="primary" @click="update">保存</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import { billsList, billsCreate } from "../../api";
import { billsList, billsCreate, billsUpdate, billsDelete, eldersList } from "../../api";
export default {
data() {
return {
bills: [],
elders: [],
elderMap: {},
filterElderId: "",
showCreate: false,
form: { elderId: "", month: "", bedFee: "", careFee: "", mealFee: "", otherFee: "" }
showEdit: false,
form: { elderId: "", month: "", bedFee: "", careFee: "", mealFee: "", otherFee: "" },
editForm: { id: null, elderId: "", month: "", bedFee: "", careFee: "", mealFee: "", otherFee: "" }
};
},
created() {
this.load();
this.loadElders();
},
methods: {
async loadElders() {
try {
const res = await eldersList();
this.elders = res.data.data;
const map = {};
this.elders.forEach((elder) => {
map[elder.id] = elder.name;
});
this.elderMap = map;
} catch (e) {
this.$message.error(e.message || "加载长者失败");
}
},
elderName(id) {
return this.elderMap[id] || `长者${id}`;
},
formatMonth(value) {
if (!value) return "";
const d = new Date(value);
const y = d.getFullYear();
const m = String(d.getMonth() + 1).padStart(2, "0");
return `${y}-${m}`;
},
statusLabel(status) {
if (status === "PAID") return "已支付";
if (status === "UNPAID") return "未支付";
@@ -68,18 +133,53 @@ export default {
const res = await billsList(this.filterElderId || null);
this.bills = res.data.data;
} catch (e) {
this.$message.error(e.message || "load failed");
this.$message.error(e.message || "加载失败");
}
},
async create() {
try {
await billsCreate(this.form);
const payload = { ...this.form, month: this.formatMonth(this.form.month) };
await billsCreate(payload);
this.showCreate = false;
this.load();
} catch (e) {
this.$message.error(e.message || "create failed");
this.$message.error(e.message || "创建失败");
}
},
openEdit(row) {
this.editForm = {
id: row.id,
elderId: row.elderId,
month: row.month ? new Date(`${row.month}-01`) : "",
bedFee: row.bedFee,
careFee: row.careFee,
mealFee: row.mealFee,
otherFee: row.otherFee
};
this.showEdit = true;
},
async update() {
try {
const payload = { ...this.editForm, month: this.formatMonth(this.editForm.month) };
await billsUpdate(payload);
this.showEdit = false;
this.load();
} catch (e) {
this.$message.error(e.message || "更新失败");
}
},
async remove(row) {
try {
await this.$confirm("确认删除该账单?", "提示", { type: "warning" });
await billsDelete(row.id);
this.load();
} catch (e) {
if (e && e !== "cancel") {
this.$message.error(e.message || "删除失败");
}
}
}
}
};
</script>

View File

@@ -42,8 +42,9 @@ export default {
const res = await adminStats();
this.stats = res.data.data;
} catch (e) {
this.$message.error(e.message || "load failed");
this.$message.error(e.message || "加载失败");
}
}
};
</script>

View File

@@ -7,7 +7,11 @@
<el-table :data="elders" stripe>
<el-table-column prop="id" label="编号" width="80" />
<el-table-column prop="name" label="姓名" />
<el-table-column prop="gender" label="性别" width="80" />
<el-table-column label="性别" width="80">
<template slot-scope="scope">
{{ genderLabel(scope.row.gender) }}
</template>
</el-table-column>
<el-table-column prop="idCard" label="身份证号" />
<el-table-column prop="roomNo" label="房间号" width="100" />
<el-table-column prop="careLevel" label="护理等级" />
@@ -107,12 +111,17 @@ export default {
this.load();
},
methods: {
genderLabel(value) {
if (value === "M") return "男";
if (value === "F") return "女";
return value || "-";
},
async load() {
try {
const res = await eldersList();
this.elders = res.data.data;
} catch (e) {
this.$message.error(e.message || "load failed");
this.$message.error(e.message || "加载失败");
}
},
async createElder() {
@@ -126,7 +135,7 @@ export default {
this.showCreate = false;
this.load();
} catch (e) {
this.$message.error(e.message || "create failed");
this.$message.error(e.message || "创建失败");
}
},
editElder(row) {
@@ -144,7 +153,7 @@ export default {
this.showEdit = false;
this.load();
} catch (e) {
this.$message.error(e.message || "update failed");
this.$message.error(e.message || "更新失败");
}
},
async deleteElder(row) {
@@ -152,7 +161,7 @@ export default {
await eldersDelete(row.id);
this.load();
} catch (e) {
this.$message.error(e.message || "delete failed");
this.$message.error(e.message || "删除失败");
}
},
syncBirthday(type) {
@@ -182,3 +191,4 @@ export default {
}
};
</script>

View File

@@ -3,7 +3,11 @@
<h3>反馈处理</h3>
<el-table :data="items" stripe>
<el-table-column prop="id" label="编号" width="80" />
<el-table-column prop="elderId" label="长者ID" />
<el-table-column label="长者">
<template slot-scope="scope">
{{ elderName(scope.row.elderId) }}
</template>
</el-table-column>
<el-table-column label="类型" width="120">
<template slot-scope="scope">
<el-tag :type="typeTag(scope.row.type)">
@@ -48,20 +52,39 @@
</template>
<script>
import { feedbackList, feedbackUpdate } from "../../api";
import { feedbackList, feedbackUpdate, eldersList } from "../../api";
export default {
data() {
return {
items: [],
elders: [],
elderMap: {},
showReply: false,
replyForm: { id: null, status: "PROCESSING", reply: "" }
};
},
created() {
this.load();
this.loadElders();
},
methods: {
async loadElders() {
try {
const res = await eldersList();
this.elders = res.data.data;
const map = {};
this.elders.forEach((elder) => {
map[elder.id] = elder.name;
});
this.elderMap = map;
} catch (e) {
this.$message.error(e.message || "加载长者失败");
}
},
elderName(id) {
return this.elderMap[id] || `长者${id}`;
},
typeLabel(type) {
if (type === "SUGGESTION") return "建议";
if (type === "COMPLAINT") return "投诉";
@@ -91,7 +114,7 @@ export default {
const res = await feedbackList();
this.items = res.data.data;
} catch (e) {
this.$message.error(e.message || "load failed");
this.$message.error(e.message || "加载失败");
}
},
openReply(row) {
@@ -104,9 +127,10 @@ export default {
this.showReply = false;
this.load();
} catch (e) {
this.$message.error(e.message || "update failed");
this.$message.error(e.message || "更新失败");
}
}
}
};
</script>

View File

@@ -70,7 +70,7 @@ export default {
const res = await noticeList();
this.items = res.data.data;
} catch (e) {
this.$message.error(e.message || "load failed");
this.$message.error(e.message || "加载失败");
}
},
async create() {
@@ -80,9 +80,10 @@ export default {
this.showCreate = false;
this.load();
} catch (e) {
this.$message.error(e.message || "create failed");
this.$message.error(e.message || "创建失败");
}
}
}
};
</script>

View File

@@ -112,7 +112,7 @@ export default {
const res = await adminUsers(this.role || null);
this.users = res.data.data;
} catch (e) {
this.$message.error(e.message || "load failed");
this.$message.error(e.message || "加载失败");
}
},
async createUser() {
@@ -121,7 +121,7 @@ export default {
this.showCreate = false;
this.loadUsers();
} catch (e) {
this.$message.error(e.message || "create failed");
this.$message.error(e.message || "创建失败");
}
},
editUser(row) {
@@ -134,17 +134,19 @@ export default {
this.showEdit = false;
this.loadUsers();
} catch (e) {
this.$message.error(e.message || "update failed");
this.$message.error(e.message || "更新失败");
}
},
async resetPwd(row) {
try {
await adminResetPassword(row.id, "123456");
this.$message.success("reset to 123456");
this.$message.success("已重置为123456");
} catch (e) {
this.$message.error(e.message || "reset failed");
this.$message.error(e.message || "重置失败");
}
}
}
};
</script>

View File

@@ -39,7 +39,7 @@ export default {
const res = await familyElders();
this.elders = res.data.data;
} catch (e) {
this.$message.error(e.message || "load failed");
this.$message.error(e.message || "加载失败");
}
},
methods: {
@@ -59,18 +59,19 @@ export default {
const res = await familyBills(this.elderId);
this.items = res.data.data;
} catch (e) {
this.$message.error(e.message || "load failed");
this.$message.error(e.message || "加载失败");
}
},
async pay(row) {
try {
await familyPay(row.id, { method: "ONLINE" });
this.$message.success("paid");
this.$message.success("支付成功");
this.load();
} catch (e) {
this.$message.error(e.message || "pay failed");
this.$message.error(e.message || "支付失败");
}
}
}
};
</script>

View File

@@ -26,7 +26,7 @@ export default {
const res = await familyElders();
this.elders = res.data.data;
} catch (e) {
this.$message.error(e.message || "load failed");
this.$message.error(e.message || "加载失败");
}
},
methods: {
@@ -36,9 +36,10 @@ export default {
const res = await familyCareList(this.elderId);
this.items = res.data.data;
} catch (e) {
this.$message.error(e.message || "load failed");
this.$message.error(e.message || "加载失败");
}
}
}
};
</script>

View File

@@ -3,7 +3,11 @@
<h3>亲人档案</h3>
<el-table :data="elders" stripe>
<el-table-column prop="name" label="姓名" />
<el-table-column prop="gender" label="性别" width="80" />
<el-table-column label="性别" width="80">
<template slot-scope="scope">
{{ genderLabel(scope.row.gender) }}
</template>
</el-table-column>
<el-table-column prop="roomNo" label="房间号" width="100" />
<el-table-column prop="careLevel" label="护理等级" />
</el-table>
@@ -22,8 +26,16 @@ export default {
const res = await familyElders();
this.elders = res.data.data;
} catch (e) {
this.$message.error(e.message || "load failed");
this.$message.error(e.message || "加载失败");
}
},
methods: {
genderLabel(value) {
if (value === "M") return "男";
if (value === "F") return "女";
return value || "-";
}
}
};
</script>

View File

@@ -17,41 +17,104 @@
<el-form-item label="内容">
<el-input v-model="form.content" type="textarea" />
</el-form-item>
<el-form-item label="评分">
<el-input v-model="form.rating" />
<el-form-item label="评分" class="rate-item">
<el-rate v-model="form.rating" />
</el-form-item>
<el-button type="primary" @click="submit">提交</el-button>
</el-form>
<div style="margin-top: 18px;">
<h4 style="margin: 0 0 8px;">我的反馈</h4>
<el-table :data="items" stripe>
<el-table-column prop="createdAt" label="时间" width="180" />
<el-table-column label="类型" width="120">
<template slot-scope="scope">
<el-tag :type="typeTag(scope.row.type)">{{ typeLabel(scope.row.type) }}</el-tag>
</template>
</el-table-column>
<el-table-column prop="content" label="内容" />
<el-table-column label="状态" width="120">
<template slot-scope="scope">
<el-tag :type="statusTag(scope.row.status)">{{ statusLabel(scope.row.status) }}</el-tag>
</template>
</el-table-column>
<el-table-column prop="reply" label="回复" />
</el-table>
</div>
</div>
</template>
<script>
import { familyElders, familyFeedback } from "../../api";
import { familyElders, familyFeedback, familyFeedbackList } from "../../api";
export default {
data() {
return {
elders: [],
form: { elderId: "", type: "SUGGESTION", content: "", rating: "" }
form: { elderId: "", type: "SUGGESTION", content: "", rating: 0 },
items: []
};
},
async created() {
try {
const res = await familyElders();
this.elders = res.data.data;
this.loadList();
} catch (e) {
this.$message.error(e.message || "load failed");
this.$message.error(e.message || "加载失败");
}
},
methods: {
typeLabel(type) {
if (type === "SUGGESTION") return "建议";
if (type === "COMPLAINT") return "投诉";
if (type === "PRAISE") return "表扬";
return type || "-";
},
typeTag(type) {
if (type === "SUGGESTION") return "info";
if (type === "COMPLAINT") return "danger";
if (type === "PRAISE") return "success";
return "info";
},
statusLabel(status) {
if (status === "NEW") return "新建";
if (status === "PROCESSING") return "处理中";
if (status === "CLOSED") return "已关闭";
return status || "-";
},
statusTag(status) {
if (status === "NEW") return "warning";
if (status === "PROCESSING") return "";
if (status === "CLOSED") return "success";
return "info";
},
async loadList() {
try {
const res = await familyFeedbackList();
this.items = res.data.data;
} catch (e) {
this.$message.error(e.message || "加载失败");
}
},
async submit() {
try {
await familyFeedback(this.form);
this.$message.success("submitted");
this.$message.success("提交成功");
this.form.content = "";
this.form.rating = 0;
this.loadList();
} catch (e) {
this.$message.error(e.message || "submit failed");
this.$message.error(e.message || "提交失败");
}
}
}
};
</script>
<style scoped>
.rate-item ::v-deep .el-form-item__content {
display: flex;
align-items: center;
}
</style>

View File

@@ -28,7 +28,7 @@ export default {
const res = await familyElders();
this.elders = res.data.data;
} catch (e) {
this.$message.error(e.message || "load failed");
this.$message.error(e.message || "加载失败");
}
},
methods: {
@@ -38,9 +38,10 @@ export default {
const res = await familyHealthList(this.elderId);
this.items = res.data.data;
} catch (e) {
this.$message.error(e.message || "load failed");
this.$message.error(e.message || "加载失败");
}
}
}
};
</script>

View File

@@ -21,8 +21,9 @@ export default {
const res = await familyNoticeList();
this.items = res.data.data;
} catch (e) {
this.$message.error(e.message || "load failed");
this.$message.error(e.message || "加载失败");
}
}
};
</script>

View File

@@ -46,16 +46,16 @@ export default {
const res = await uploadFile(option.file);
this.form.attachmentUrl = res.data.data.url;
} catch (e) {
this.$message.error(e.message || "upload failed");
this.$message.error(e.message || "上传失败");
}
},
async create() {
try {
const payload = { ...this.form, recordTime: formatDateTime(this.form.recordTime) };
await nurseCareCreate(payload);
this.$message.success("saved");
this.$message.success("保存成功");
} catch (e) {
this.$message.error(e.message || "save failed");
this.$message.error(e.message || "保存失败");
}
},
async load() {
@@ -64,9 +64,11 @@ export default {
const res = await nurseCareList(this.filterElderId);
this.items = res.data.data;
} catch (e) {
this.$message.error(e.message || "load failed");
this.$message.error(e.message || "加载失败");
}
}
}
};
</script>

View File

@@ -34,19 +34,21 @@ export default {
const res = await nurseHandoverList();
this.items = res.data.data;
} catch (e) {
this.$message.error(e.message || "load failed");
this.$message.error(e.message || "加载失败");
}
},
async create() {
try {
const payload = { ...this.form, date: formatDate(this.form.date) };
await nurseHandoverCreate(payload);
this.$message.success("saved");
this.$message.success("保存成功");
this.load();
} catch (e) {
this.$message.error(e.message || "save failed");
this.$message.error(e.message || "保存失败");
}
}
}
};
</script>

View File

@@ -48,9 +48,9 @@ export default {
try {
const payload = { ...this.form, recordTime: formatDateTime(this.form.recordTime) };
await nurseHealthCreate(payload);
this.$message.success("saved");
this.$message.success("保存成功");
} catch (e) {
this.$message.error(e.message || "save failed");
this.$message.error(e.message || "保存失败");
}
},
async load() {
@@ -59,9 +59,11 @@ export default {
const res = await nurseHealthList(this.filterElderId);
this.items = res.data.data;
} catch (e) {
this.$message.error(e.message || "load failed");
this.$message.error(e.message || "加载失败");
}
}
}
};
</script>

View File

@@ -21,8 +21,9 @@ export default {
const res = await nurseNoticeList();
this.items = res.data.data;
} catch (e) {
this.$message.error(e.message || "load failed");
this.$message.error(e.message || "加载失败");
}
}
};
</script>