Skip to content

记录一下写毕设的时候的问题.

毕设用的 vue+nodejs 写的一个预约挂号的系统,UI设计什么的统统没有,写的很糊但是都是自己写的.

后端

后端方面用的 nodejs+express,一开始就装了 cors 允许跨域,然后配置了 JWT 作为鉴权 token,之后就开始挂载路由写 api,用 postman 测试,这里问题都不大 数据库方面用的是 MySQL 的数据库,用 navicat 来进行管理,nodejs 的 mysql 插件还需要 MySQL 数据库改加密方式才连的上,这问题当时装的时候就知道了,

因为 MySQL 新版本的加密问题,mysql 插件暂时无法适配,只能去改 MySQL 数据库的加密方式,操作如下

shell
alter USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRENEVER;
alter USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '修改自己的密码';

还有就是在创建连接池的时候需要设置时区,否则很容易查半天查不出原因.

前端

主要是前端问题比较多,因为我主要是写前端的嘛

然后前端用的框架是 vue 和 elementUI,也是一堆问题

vue

vue 项目用的 vue2,所以是用的 vuecli 来构建前端项目,vuecli 的可视化页面很简单就能构建一个 vue2 的项目,可以很简单的安装各种所需的插件. 能自动给你一个处理好了的 webpack 包,不需要你自己再去整各种各样的操作去配置 webpack.

使用 axios 作为 http 请求的工具,axios 设置 baseURL 设置 headers 设置 Authoritarian 都可以很简单

js
axios.defaults.baseURL = "http://127.0.0.1:3000";
axios.defaults.headers["Content-Type"] = "application/x-www-form-urlencoded";
// 使用axios请求拦截器去完成路由守卫任务
axios.interceptors.request.use((config) => {
	config.headers.Authorization = window.localStorage.getItem("adminToken");
	return config;
});

路由

使用 router 进行路由跳转 , 组件需要导入并注册才能用

js
const routes = [
	{ path: "/", redirect: "/login" },
	{ path: "/login", component: Login },
	{
		path: "/home",
		component: Home,
		children: [
			{ path: "/user", component: user },
			{ path: "/doctor", component: doctor },
			{ path: "/department", component: department },
			{ path: "/registered", component: registered },
		],
	},
];

element

elementui 按需导入,不需要的组件就不用导入,可以减少占用

element 自带的表单验证可以自定义规则,需要在 data 里边定义一个 rules 对象,然后在 el-form-item 里边加上 rules 属性,然后就可以自定义规则了

而且需要注意的是,表单数据里边的名字得和规则验证里边的名字匹配,然后在 el-form-item 里边加上 prop 属性,值为表单数据里边的名字,这样才能正确的验证 否则就是一直提示错误信息,一直得不到验证

js
regForm: {
    username: "",
    password: "",
},
regFormRules: {
    username: [
        {
            required: true,
            message: "请输入用户名称",
            trigger: "blur",
        },
        {
            min: 2,
            max: 10,
            message: "长度是2到10个字符",
            trigger: "blur",
        },
    ],
    password: [
        {
            required: true,
            message: "请输入注册密码",
            trigger: "blur",
        },
        {
            min: 6,
            max: 20,
            message: "密码长度是6到20个字符",
            trigger: "blur",
        },
    ],
},

formatter

vue展示性别但是后端传来的数据性别是数字,需要使用formatter进行过滤,就可以在页面上展示01代表的男女性别了

template
<el-table-column
    prop="dsex"
    :formatter="sexFormate"
    label="医生性别"
    align="center"
>
</el-table-column>
js
sexFormate(row, index) {
if (row.dsex == 1) {
    return "男";
} else if (row.dsex == 0) {
    return "女";
}
},

本站总访问量