add
This commit is contained in:
@@ -211,6 +211,26 @@ public class AdminController {
|
|||||||
return ApiResponse.success(billService.createBill(bill));
|
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")
|
@GetMapping("/bills")
|
||||||
public ApiResponse<List<Bill>> listBills(@RequestParam(required = false) Long elderId) {
|
public ApiResponse<List<Bill>> listBills(@RequestParam(required = false) Long elderId) {
|
||||||
if (elderId == null) {
|
if (elderId == null) {
|
||||||
@@ -219,6 +239,16 @@ public class AdminController {
|
|||||||
return ApiResponse.success(billService.listByElderId(elderId));
|
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")
|
@GetMapping("/feedback")
|
||||||
public ApiResponse<List<Feedback>> listFeedback() {
|
public ApiResponse<List<Feedback>> listFeedback() {
|
||||||
return ApiResponse.success(feedbackMapper.listAll());
|
return ApiResponse.success(feedbackMapper.listAll());
|
||||||
|
|||||||
@@ -149,6 +149,12 @@ public class FamilyController {
|
|||||||
return ApiResponse.success(feedback);
|
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")
|
@GetMapping("/notices")
|
||||||
public ApiResponse<List<Notice>> listNotices() {
|
public ApiResponse<List<Notice>> listNotices() {
|
||||||
Long familyId = Long.valueOf(StpUtil.getLoginId().toString());
|
Long familyId = Long.valueOf(StpUtil.getLoginId().toString());
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.nursinghome.dto;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
public class BillRequest {
|
public class BillRequest {
|
||||||
|
private Long id;
|
||||||
private Long elderId;
|
private Long elderId;
|
||||||
private String month;
|
private String month;
|
||||||
private BigDecimal bedFee;
|
private BigDecimal bedFee;
|
||||||
@@ -10,6 +11,14 @@ public class BillRequest {
|
|||||||
private BigDecimal mealFee;
|
private BigDecimal mealFee;
|
||||||
private BigDecimal otherFee;
|
private BigDecimal otherFee;
|
||||||
|
|
||||||
|
public Long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(Long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
public Long getElderId() {
|
public Long getElderId() {
|
||||||
return elderId;
|
return elderId;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,4 +25,10 @@ public interface BillMapper {
|
|||||||
|
|
||||||
@Update("UPDATE bill SET status=#{status}, paid_at=#{paidAt} WHERE id=#{id}")
|
@Update("UPDATE bill SET status=#{status}, paid_at=#{paidAt} WHERE id=#{id}")
|
||||||
int updateStatus(Bill bill);
|
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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,9 @@ public interface FeedbackMapper {
|
|||||||
@Select("SELECT * FROM feedback ORDER BY created_at DESC")
|
@Select("SELECT * FROM feedback ORDER BY created_at DESC")
|
||||||
List<Feedback> listAll();
|
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}")
|
@Update("UPDATE feedback SET status=#{status}, reply=#{reply}, updated_at=NOW() WHERE id=#{id}")
|
||||||
int updateStatus(Feedback feedback);
|
int updateStatus(Feedback feedback);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,12 +22,7 @@ public class BillService {
|
|||||||
|
|
||||||
public Bill createBill(Bill bill) {
|
public Bill createBill(Bill bill) {
|
||||||
if (bill.getTotal() == null) {
|
if (bill.getTotal() == null) {
|
||||||
BigDecimal total = BigDecimal.ZERO;
|
bill.setTotal(calcTotal(bill));
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
if (bill.getStatus() == null) {
|
if (bill.getStatus() == null) {
|
||||||
bill.setStatus("UNPAID");
|
bill.setStatus("UNPAID");
|
||||||
@@ -36,6 +31,15 @@ public class BillService {
|
|||||||
return bill;
|
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) {
|
public List<Bill> listByElderId(Long elderId) {
|
||||||
return billMapper.listByElderId(elderId);
|
return billMapper.listByElderId(elderId);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ mybatis:
|
|||||||
sa-token:
|
sa-token:
|
||||||
token-name: satoken
|
token-name: satoken
|
||||||
timeout: 86400
|
timeout: 86400
|
||||||
activity-timeout: -1
|
|
||||||
is-concurrent: true
|
is-concurrent: true
|
||||||
is-share: true
|
is-share: true
|
||||||
token-style: uuid
|
token-style: uuid
|
||||||
|
|||||||
@@ -16,11 +16,24 @@ http.interceptors.response.use(
|
|||||||
(response) => {
|
(response) => {
|
||||||
const data = response.data;
|
const data = response.data;
|
||||||
if (data && data.code !== 0) {
|
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;
|
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;
|
export default http;
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ export const scheduleUpdate = (payload) => http.put("/admin/schedules", payload)
|
|||||||
export const scheduleDelete = (id) => http.delete(`/admin/schedules/${id}`);
|
export const scheduleDelete = (id) => http.delete(`/admin/schedules/${id}`);
|
||||||
|
|
||||||
export const billsCreate = (payload) => http.post("/admin/bills", payload);
|
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 billsList = (elderId) => http.get("/admin/bills", { params: { elderId } });
|
||||||
|
|
||||||
export const feedbackList = () => http.get("/admin/feedback");
|
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 familyBills = (elderId) => http.get("/family/bills", { params: { elderId } });
|
||||||
export const familyPay = (id, payload) => http.post(`/family/bills/${id}/pay`, payload);
|
export const familyPay = (id, payload) => http.post(`/family/bills/${id}/pay`, payload);
|
||||||
export const familyFeedback = (payload) => http.post("/family/feedback", 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 familyNoticeList = () => http.get("/family/notices");
|
||||||
|
|
||||||
export const uploadFile = (file) => {
|
export const uploadFile = (file) => {
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ export default {
|
|||||||
this.$router.push("/family");
|
this.$router.push("/family");
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "login failed");
|
this.$message.error(e.message || "登录失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -73,3 +73,4 @@ export default {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|||||||
@@ -50,10 +50,10 @@ export default {
|
|||||||
async handleRegister() {
|
async handleRegister() {
|
||||||
try {
|
try {
|
||||||
await register(this.form);
|
await register(this.form);
|
||||||
this.$message.success("registered");
|
this.$message.success("注册成功");
|
||||||
this.$router.push("/login");
|
this.$router.push("/login");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "register failed");
|
this.$message.error(e.message || "注册失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -80,3 +80,5 @@ export default {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<el-table :data="bills" stripe>
|
<el-table :data="bills" stripe>
|
||||||
<el-table-column prop="id" label="编号" width="80" />
|
<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="month" label="月份" />
|
||||||
<el-table-column prop="total" label="金额" />
|
<el-table-column prop="total" label="金额" />
|
||||||
<el-table-column label="状态" width="120">
|
<el-table-column label="状态" width="120">
|
||||||
@@ -18,12 +22,24 @@
|
|||||||
</el-tag>
|
</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</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-table>
|
||||||
|
|
||||||
<el-dialog title="新建账单" :visible.sync="showCreate">
|
<el-dialog title="新建账单" :visible.sync="showCreate">
|
||||||
<el-form :model="form" label-width="120px">
|
<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-form-item label="月份"><el-input v-model="form.month" placeholder="YYYY-MM"/></el-form-item>
|
<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.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.careFee"/></el-form-item>
|
||||||
<el-form-item label="餐饮费"><el-input v-model="form.mealFee"/></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>
|
<el-button type="primary" @click="create">创建</el-button>
|
||||||
</span>
|
</span>
|
||||||
</el-dialog>
|
</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>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { billsList, billsCreate } from "../../api";
|
import { billsList, billsCreate, billsUpdate, billsDelete, eldersList } from "../../api";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
bills: [],
|
bills: [],
|
||||||
|
elders: [],
|
||||||
|
elderMap: {},
|
||||||
filterElderId: "",
|
filterElderId: "",
|
||||||
showCreate: false,
|
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() {
|
created() {
|
||||||
this.load();
|
this.load();
|
||||||
|
this.loadElders();
|
||||||
},
|
},
|
||||||
methods: {
|
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) {
|
statusLabel(status) {
|
||||||
if (status === "PAID") return "已支付";
|
if (status === "PAID") return "已支付";
|
||||||
if (status === "UNPAID") return "未支付";
|
if (status === "UNPAID") return "未支付";
|
||||||
@@ -68,18 +133,53 @@ export default {
|
|||||||
const res = await billsList(this.filterElderId || null);
|
const res = await billsList(this.filterElderId || null);
|
||||||
this.bills = res.data.data;
|
this.bills = res.data.data;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "load failed");
|
this.$message.error(e.message || "加载失败");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async create() {
|
async create() {
|
||||||
try {
|
try {
|
||||||
await billsCreate(this.form);
|
const payload = { ...this.form, month: this.formatMonth(this.form.month) };
|
||||||
|
await billsCreate(payload);
|
||||||
this.showCreate = false;
|
this.showCreate = false;
|
||||||
this.load();
|
this.load();
|
||||||
} catch (e) {
|
} 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>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -42,8 +42,9 @@ export default {
|
|||||||
const res = await adminStats();
|
const res = await adminStats();
|
||||||
this.stats = res.data.data;
|
this.stats = res.data.data;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "load failed");
|
this.$message.error(e.message || "加载失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,11 @@
|
|||||||
<el-table :data="elders" stripe>
|
<el-table :data="elders" stripe>
|
||||||
<el-table-column prop="id" label="编号" width="80" />
|
<el-table-column prop="id" label="编号" width="80" />
|
||||||
<el-table-column prop="name" label="姓名" />
|
<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="idCard" label="身份证号" />
|
||||||
<el-table-column prop="roomNo" label="房间号" width="100" />
|
<el-table-column prop="roomNo" label="房间号" width="100" />
|
||||||
<el-table-column prop="careLevel" label="护理等级" />
|
<el-table-column prop="careLevel" label="护理等级" />
|
||||||
@@ -107,12 +111,17 @@ export default {
|
|||||||
this.load();
|
this.load();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
genderLabel(value) {
|
||||||
|
if (value === "M") return "男";
|
||||||
|
if (value === "F") return "女";
|
||||||
|
return value || "-";
|
||||||
|
},
|
||||||
async load() {
|
async load() {
|
||||||
try {
|
try {
|
||||||
const res = await eldersList();
|
const res = await eldersList();
|
||||||
this.elders = res.data.data;
|
this.elders = res.data.data;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "load failed");
|
this.$message.error(e.message || "加载失败");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async createElder() {
|
async createElder() {
|
||||||
@@ -126,7 +135,7 @@ export default {
|
|||||||
this.showCreate = false;
|
this.showCreate = false;
|
||||||
this.load();
|
this.load();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "create failed");
|
this.$message.error(e.message || "创建失败");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
editElder(row) {
|
editElder(row) {
|
||||||
@@ -144,7 +153,7 @@ export default {
|
|||||||
this.showEdit = false;
|
this.showEdit = false;
|
||||||
this.load();
|
this.load();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "update failed");
|
this.$message.error(e.message || "更新失败");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async deleteElder(row) {
|
async deleteElder(row) {
|
||||||
@@ -152,7 +161,7 @@ export default {
|
|||||||
await eldersDelete(row.id);
|
await eldersDelete(row.id);
|
||||||
this.load();
|
this.load();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "delete failed");
|
this.$message.error(e.message || "删除失败");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
syncBirthday(type) {
|
syncBirthday(type) {
|
||||||
@@ -182,3 +191,4 @@ export default {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,11 @@
|
|||||||
<h3>反馈处理</h3>
|
<h3>反馈处理</h3>
|
||||||
<el-table :data="items" stripe>
|
<el-table :data="items" stripe>
|
||||||
<el-table-column prop="id" label="编号" width="80" />
|
<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">
|
<el-table-column label="类型" width="120">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-tag :type="typeTag(scope.row.type)">
|
<el-tag :type="typeTag(scope.row.type)">
|
||||||
@@ -48,20 +52,39 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { feedbackList, feedbackUpdate } from "../../api";
|
import { feedbackList, feedbackUpdate, eldersList } from "../../api";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
items: [],
|
items: [],
|
||||||
|
elders: [],
|
||||||
|
elderMap: {},
|
||||||
showReply: false,
|
showReply: false,
|
||||||
replyForm: { id: null, status: "PROCESSING", reply: "" }
|
replyForm: { id: null, status: "PROCESSING", reply: "" }
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
this.load();
|
this.load();
|
||||||
|
this.loadElders();
|
||||||
},
|
},
|
||||||
methods: {
|
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) {
|
typeLabel(type) {
|
||||||
if (type === "SUGGESTION") return "建议";
|
if (type === "SUGGESTION") return "建议";
|
||||||
if (type === "COMPLAINT") return "投诉";
|
if (type === "COMPLAINT") return "投诉";
|
||||||
@@ -91,7 +114,7 @@ export default {
|
|||||||
const res = await feedbackList();
|
const res = await feedbackList();
|
||||||
this.items = res.data.data;
|
this.items = res.data.data;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "load failed");
|
this.$message.error(e.message || "加载失败");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
openReply(row) {
|
openReply(row) {
|
||||||
@@ -104,9 +127,10 @@ export default {
|
|||||||
this.showReply = false;
|
this.showReply = false;
|
||||||
this.load();
|
this.load();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "update failed");
|
this.$message.error(e.message || "更新失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ export default {
|
|||||||
const res = await noticeList();
|
const res = await noticeList();
|
||||||
this.items = res.data.data;
|
this.items = res.data.data;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "load failed");
|
this.$message.error(e.message || "加载失败");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async create() {
|
async create() {
|
||||||
@@ -80,9 +80,10 @@ export default {
|
|||||||
this.showCreate = false;
|
this.showCreate = false;
|
||||||
this.load();
|
this.load();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "create failed");
|
this.$message.error(e.message || "创建失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ export default {
|
|||||||
const res = await adminUsers(this.role || null);
|
const res = await adminUsers(this.role || null);
|
||||||
this.users = res.data.data;
|
this.users = res.data.data;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "load failed");
|
this.$message.error(e.message || "加载失败");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async createUser() {
|
async createUser() {
|
||||||
@@ -121,7 +121,7 @@ export default {
|
|||||||
this.showCreate = false;
|
this.showCreate = false;
|
||||||
this.loadUsers();
|
this.loadUsers();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "create failed");
|
this.$message.error(e.message || "创建失败");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
editUser(row) {
|
editUser(row) {
|
||||||
@@ -134,17 +134,19 @@ export default {
|
|||||||
this.showEdit = false;
|
this.showEdit = false;
|
||||||
this.loadUsers();
|
this.loadUsers();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "update failed");
|
this.$message.error(e.message || "更新失败");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async resetPwd(row) {
|
async resetPwd(row) {
|
||||||
try {
|
try {
|
||||||
await adminResetPassword(row.id, "123456");
|
await adminResetPassword(row.id, "123456");
|
||||||
this.$message.success("reset to 123456");
|
this.$message.success("已重置为123456");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "reset failed");
|
this.$message.error(e.message || "重置失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ export default {
|
|||||||
const res = await familyElders();
|
const res = await familyElders();
|
||||||
this.elders = res.data.data;
|
this.elders = res.data.data;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "load failed");
|
this.$message.error(e.message || "加载失败");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -59,18 +59,19 @@ export default {
|
|||||||
const res = await familyBills(this.elderId);
|
const res = await familyBills(this.elderId);
|
||||||
this.items = res.data.data;
|
this.items = res.data.data;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "load failed");
|
this.$message.error(e.message || "加载失败");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async pay(row) {
|
async pay(row) {
|
||||||
try {
|
try {
|
||||||
await familyPay(row.id, { method: "ONLINE" });
|
await familyPay(row.id, { method: "ONLINE" });
|
||||||
this.$message.success("paid");
|
this.$message.success("支付成功");
|
||||||
this.load();
|
this.load();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "pay failed");
|
this.$message.error(e.message || "支付失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ export default {
|
|||||||
const res = await familyElders();
|
const res = await familyElders();
|
||||||
this.elders = res.data.data;
|
this.elders = res.data.data;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "load failed");
|
this.$message.error(e.message || "加载失败");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -36,9 +36,10 @@ export default {
|
|||||||
const res = await familyCareList(this.elderId);
|
const res = await familyCareList(this.elderId);
|
||||||
this.items = res.data.data;
|
this.items = res.data.data;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "load failed");
|
this.$message.error(e.message || "加载失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,11 @@
|
|||||||
<h3>亲人档案</h3>
|
<h3>亲人档案</h3>
|
||||||
<el-table :data="elders" stripe>
|
<el-table :data="elders" stripe>
|
||||||
<el-table-column prop="name" label="姓名" />
|
<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="roomNo" label="房间号" width="100" />
|
||||||
<el-table-column prop="careLevel" label="护理等级" />
|
<el-table-column prop="careLevel" label="护理等级" />
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -22,8 +26,16 @@ export default {
|
|||||||
const res = await familyElders();
|
const res = await familyElders();
|
||||||
this.elders = res.data.data;
|
this.elders = res.data.data;
|
||||||
} catch (e) {
|
} 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>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -17,41 +17,104 @@
|
|||||||
<el-form-item label="内容">
|
<el-form-item label="内容">
|
||||||
<el-input v-model="form.content" type="textarea" />
|
<el-input v-model="form.content" type="textarea" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="评分">
|
<el-form-item label="评分" class="rate-item">
|
||||||
<el-input v-model="form.rating" />
|
<el-rate v-model="form.rating" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-button type="primary" @click="submit">提交</el-button>
|
<el-button type="primary" @click="submit">提交</el-button>
|
||||||
</el-form>
|
</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>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { familyElders, familyFeedback } from "../../api";
|
import { familyElders, familyFeedback, familyFeedbackList } from "../../api";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
elders: [],
|
elders: [],
|
||||||
form: { elderId: "", type: "SUGGESTION", content: "", rating: "" }
|
form: { elderId: "", type: "SUGGESTION", content: "", rating: 0 },
|
||||||
|
items: []
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
async created() {
|
async created() {
|
||||||
try {
|
try {
|
||||||
const res = await familyElders();
|
const res = await familyElders();
|
||||||
this.elders = res.data.data;
|
this.elders = res.data.data;
|
||||||
|
this.loadList();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "load failed");
|
this.$message.error(e.message || "加载失败");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
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() {
|
async submit() {
|
||||||
try {
|
try {
|
||||||
await familyFeedback(this.form);
|
await familyFeedback(this.form);
|
||||||
this.$message.success("submitted");
|
this.$message.success("提交成功");
|
||||||
|
this.form.content = "";
|
||||||
|
this.form.rating = 0;
|
||||||
|
this.loadList();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "submit failed");
|
this.$message.error(e.message || "提交失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.rate-item ::v-deep .el-form-item__content {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ export default {
|
|||||||
const res = await familyElders();
|
const res = await familyElders();
|
||||||
this.elders = res.data.data;
|
this.elders = res.data.data;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "load failed");
|
this.$message.error(e.message || "加载失败");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -38,9 +38,10 @@ export default {
|
|||||||
const res = await familyHealthList(this.elderId);
|
const res = await familyHealthList(this.elderId);
|
||||||
this.items = res.data.data;
|
this.items = res.data.data;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "load failed");
|
this.$message.error(e.message || "加载失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -21,8 +21,9 @@ export default {
|
|||||||
const res = await familyNoticeList();
|
const res = await familyNoticeList();
|
||||||
this.items = res.data.data;
|
this.items = res.data.data;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "load failed");
|
this.$message.error(e.message || "加载失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -46,16 +46,16 @@ export default {
|
|||||||
const res = await uploadFile(option.file);
|
const res = await uploadFile(option.file);
|
||||||
this.form.attachmentUrl = res.data.data.url;
|
this.form.attachmentUrl = res.data.data.url;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "upload failed");
|
this.$message.error(e.message || "上传失败");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async create() {
|
async create() {
|
||||||
try {
|
try {
|
||||||
const payload = { ...this.form, recordTime: formatDateTime(this.form.recordTime) };
|
const payload = { ...this.form, recordTime: formatDateTime(this.form.recordTime) };
|
||||||
await nurseCareCreate(payload);
|
await nurseCareCreate(payload);
|
||||||
this.$message.success("saved");
|
this.$message.success("保存成功");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "save failed");
|
this.$message.error(e.message || "保存失败");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async load() {
|
async load() {
|
||||||
@@ -64,9 +64,11 @@ export default {
|
|||||||
const res = await nurseCareList(this.filterElderId);
|
const res = await nurseCareList(this.filterElderId);
|
||||||
this.items = res.data.data;
|
this.items = res.data.data;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "load failed");
|
this.$message.error(e.message || "加载失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -34,19 +34,21 @@ export default {
|
|||||||
const res = await nurseHandoverList();
|
const res = await nurseHandoverList();
|
||||||
this.items = res.data.data;
|
this.items = res.data.data;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "load failed");
|
this.$message.error(e.message || "加载失败");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async create() {
|
async create() {
|
||||||
try {
|
try {
|
||||||
const payload = { ...this.form, date: formatDate(this.form.date) };
|
const payload = { ...this.form, date: formatDate(this.form.date) };
|
||||||
await nurseHandoverCreate(payload);
|
await nurseHandoverCreate(payload);
|
||||||
this.$message.success("saved");
|
this.$message.success("保存成功");
|
||||||
this.load();
|
this.load();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "save failed");
|
this.$message.error(e.message || "保存失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -48,9 +48,9 @@ export default {
|
|||||||
try {
|
try {
|
||||||
const payload = { ...this.form, recordTime: formatDateTime(this.form.recordTime) };
|
const payload = { ...this.form, recordTime: formatDateTime(this.form.recordTime) };
|
||||||
await nurseHealthCreate(payload);
|
await nurseHealthCreate(payload);
|
||||||
this.$message.success("saved");
|
this.$message.success("保存成功");
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "save failed");
|
this.$message.error(e.message || "保存失败");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async load() {
|
async load() {
|
||||||
@@ -59,9 +59,11 @@ export default {
|
|||||||
const res = await nurseHealthList(this.filterElderId);
|
const res = await nurseHealthList(this.filterElderId);
|
||||||
this.items = res.data.data;
|
this.items = res.data.data;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "load failed");
|
this.$message.error(e.message || "加载失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -21,8 +21,9 @@ export default {
|
|||||||
const res = await nurseNoticeList();
|
const res = await nurseNoticeList();
|
||||||
this.items = res.data.data;
|
this.items = res.data.data;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.$message.error(e.message || "load failed");
|
this.$message.error(e.message || "加载失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user