www.fujianjian.top
共计开发时长为12天。
医院预约挂号项目是一个便于用户网上进行挂号操作,减轻医院的人工压力。该项目主要功能就是用户可以进行网上预约挂号,查看历史订单以及订单详情,可以实现智能导诊和人工导诊,用户信息管理以及四种不同身份登录的操作权限以及excel上传功能。用户在智能导诊页面查询到推荐诊室时,会智能弹出一个去导诊页面,并自动选择好推荐得诊室进行挂号。
医生页面主要功能是查看自己得排班以及申请调班等功能。
分诊员页面就是回复病人信息窗口,用于回答用户提问得问题,进行准确回复。
管理员页面就是管理账号信息增删改查操作,管理导诊页面默认展示得推荐信息,关于医院诊室得管理,挂号得管理,以及医生得排班管理。
登录界面:
患者用户页面首页
患者预约挂号页面
选择预约时间段页面
智能导诊页面:
人工导诊页面:
历史订单:
医生排班页面
分诊员消息回复界面
管理员默认导诊信息管理
管理员导入医生排班信息
前端代码结构: 后端代码结构:
前端主要引用element-UI组件库
https://element.eleme.cn/#/zh-CN/component/quickstart
后端用到了
https://www.npmjs.com/package/koa-generator 用来创建koa2框架得node后端
https://www.npmjs.com/package/jsonwebtoken 用来引入到项目当中token得使用
https://www.npmjs.com/package/cors 用来解决因浏览器同源策略引起得跨域问题
https://www.npmjs.com/package/mysql 用来在项目中使用mysql数据库
这里是导入排班信息得关键代码。其中得去重函数是为了解决管理员在上传文件得时候,由于操作错误,可能并不只是上传一次,而当管理员提交得时候就会将上一次无用的数据提交到数据库。于是将数据进行一下过滤。
methods: {
//导入排班信息
handleChange(file) {
this.fileContent = file.raw;
const fileName = file.name;
const fileType = fileName.substring(fileName.lastIndexOf(".") + 1);
if (this.fileContent) {
if (fileType === "xlsx" || fileType === "xls") {
this.postArr=[];
this.importfile(this.fileContent);
this.$message({
type: "success",
message: "表格信息上传成功,请点击提交到数据库!",
});
} else {
this.$message({
type: "warning",
message: "附件格式错误,请重新上传!",
});
}
} else {
this.$message({
type: "warning",
message: "请上传附件!",
});
}
},
importfile(obj) {
const reader = new FileReader();
const _this = this;
reader.readAsArrayBuffer(obj);
reader.onload = function () {
const buffer = reader.result;
const bytes = new Uint8Array(buffer);
const length = bytes.byteLength;
let binary = "";
for (let i = 0; i < length; i++) {
binary += String.fromCharCode(bytes[i]);
}
const XLSX = require("xlsx");
const wb = XLSX.read(binary, {
type: "binary",
});
const outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]);
this.exceldata = [...outdata];
const arr = [];
this.exceldata.map((v) => {
const obj = {};
obj.doctor_id = v.工号;
obj.name = v.姓名;
obj.cli_id = v.诊室号;
obj.date = v.日期;
obj.Per_time = v.时间段;
obj.number = v.号源量;
arr.push(obj);
});
_this.postArr = _this.postArr.concat(arr);
};
},
//去重函数
distinct(arr) {
var result = [],
i,
j,
len = arr.length;
for (i = 0; i < len; i++) {
for (j = i + 1; j < len; j++) {
if (arr[i].cli_id === arr[j].cli_id && arr[i].date === arr[j].date) {
j = ++i;
}
}
result.push(arr[i]);
}
return result;
},
//提交排班信息
postArrange() {
var newArr = this.distinct(this.postArr);
this.axios
.post("/postArrange", {
newArr: newArr,
postArr: this.postArr,
})
.then((res) => {
if (res.state == "success") {
this.$message({
message: "排班信息上传成功",
type: "success",
});
} else if (res.state == "fail") {
this.$message.error("排班信息上传失败,请从新修改");
}
});
},
},
项目成果与收获: