src/router/index.js 关键代码
(相关资料图)
import Vue from "vue" //引入vue模块import Router from "vue-router" //引入路由模块Vue.use(Router) //挂载路由功能到vue框架中export const constantRoutes = [ ......]export default new Router({ ...... routes: constantRoutes})
src/main.js 关键代码
......import router from "./router" //引入路由模块......new Vue({ el: "#app", router, //将路由模块配置到vue对象上下文 store, render: h => h(App)})
在src/views文件夹下创建以下文件夹和文件
医院设置表单
医院设置列表
最简单的引入路由的方式就是在src/router/index.js文件中配置路由节点:将医院管理
节点定义在constantRoutes
数组中
// 医院管理{ path: "/syt/hospset", component: Layout, redirect: "/syt/hospset/list", name: "HospSet", meta: { title: "医院管理", icon: "el-icon-s-help" }, children: [ { path: "list", name: "HospSetList", component: () => import("@/views/syt/hospset/list"), meta: { title: "医院设置列表", icon: "el-icon-s-unfold" } }, { path: "create", name: "HospSetCreate", component: () => import("@/views/syt/hospset/form"), meta: { title: "添加医院设置", icon: "el-icon-tickets" } }, { path: "edit/:id", name: "HospSetEdit", component: () => import("@/views/syt/hospset/form"), meta: { title: "编辑医院设置", noCache: true }, hidden: true } ]},
也可以在之前的权限系统的菜单管理功能中添加动态的菜单和菜单项:
添加菜单:
添加菜单项:
最后添加后的结果如下:
注意:系统中admin用户无需分配权限,默认拥有全部权限
前端访问多个后端service模块,可通过前端代码请求服务器端接口,配置如下:
更改文件:vue.config.js
例如:
service-system模块:
service-hosp模块端口
配置:
proxy: { "/dev-api/admin/system": { // 匹配所有以 "/dev-api/admin/system"开头的请求路径 target: "http://localhost:8800", changeOrigin: true, // 支持跨域 pathRewrite: { // 重写路径: 去掉路径中开头的"/dev-api" "^/dev-api": "" } }, "/dev-api/admin/hosp": { // 匹配所有以 "/dev-api/admin/hosp"开头的请求路径 target: "http://localhost:8201", changeOrigin: true, // 支持跨域 pathRewrite: { // 重写路径: 去掉路径中开头的"/dev-api" "^/dev-api": "" } }}
创建文件 src/api/syt/hospset.js
import request from "@/utils/request"const apiName = "/admin/hosp/hospitalSet"export default { //医院设置列表 getPageList(page, limit, searchObj) { return request({ url: `${apiName}/${page}/${limit}`, method: "get", params: searchObj }) },}
src/views/syt/hospset/list.vue
医院设置列表 <script>import hospsetApi from "@/api/syt/hospset"export default { data() {// 定义数据 return {} }, created() { // 当页面加载时获取数据 this.fetchData() }, methods: { fetchData() { // 调用api层获取数据库中的数据 console.log("加载列表") }, }}</script>
data() {// 定义数据 return { listLoading: true, // 是否显示loading信息 list: null, // 数据列表 total: 0, // 总记录数 page: 1, // 页码 limit: 10, // 每页记录数 searchObj: {}// 查询条件 } },
methods: { fetchData() { // 调用api层获取数据库中的数据 console.log("加载列表") this.listLoading = true hospsetApi.getPageList(this.page, this.limit, this.searchObj).then(response => { // debugger //设置断点调试 this.list = response.data.records this.total = response.data.total this.listLoading = false }) }, },
{{ (page - 1) * limit + scope.$index + 1 }} {{ scope.row.status===1?"可用":"不可用" }} 修改 删除 锁定 解锁
在菜单管理中,为修改
按钮添加一条记录,因为此按钮是路由形式的按钮,必须配置动态路由,才能正确的加载到前端页面中。
在table组件下面添加分页组件
为
@size-change="changePageSize"
定义事件脚本
// 每页记录数改变,size:回调参数,表示当前选中的“每页条数”changePageSize(size) { this.limit = size this.fetchData()},
为
@current-change="changeCurrentPage"
定义事件脚本
// 改变页码,page:回调参数,表示当前选中的“页码”changeCurrentPage(page) { this.page = page this.fetchData()},
在table组件上面添加查询表单
查询 清空
//查询数据searchData() { this.page = 1 this.fetchData()},
//清空查询resetData() { this.page = 1//重置页码 this.searchObj = {}//清空查询条件 this.fetchData()//重置列表数据},
src/api/syt/hospset.js
removeById(id) { return request({ url: `${apiName}/${id}`, method: "delete" })},
src/views/syt/hospset/list.vue
使用MessageBox 弹框组件
removeDataById(id) { // debugger // console.log(memberId) this.$confirm("此操作将永久删除该记录, 是否继续?", "提示", { type: "warning", }).then(() => { hospsetApi.removeById(id).then(response => { this.fetchData() this.$message.success(response.message) }) }).catch(() => { this.$message.info("已取消删除") })},
src/api/syt/hospset.js
save(hospset) { return request({ url: apiName + "/saveHospSet", method: "post", data: hospset })},
src/views/syt/hospset/form.vue
html
保存
js
<script>export default { data() { return { hospset: {}, saveBtnDisabled: false // 保存按钮是否禁用, } }, methods: { saveOrUpdate() { this.saveBtnDisabled = true this.saveData() }, // 保存 saveData() { } }}</script>
引入api模块
import hospsetApi from "@/api/syt/hospset"
完善save方法
// 保存saveData() { hospsetApi.save(this.hospset).then(response => { this.$message.success(response.message) this.$router.push({ path: "/syt/hospset/list" }) })},
思考:优化后端接口的错误处理(处理编号重复)
@ApiOperation(value = "新增医院设置")@PostMapping("saveHospSet")public Result save( @ApiParam(value = "医院设置对象", required = true) @RequestBody HospitalSet hospitalSet){ try { //设置状态 1可用 0锁定 hospitalSet.setStatus(1); //生成签名秘钥 Random random = new Random(); hospitalSet.setSignKey(MD5.encrypt(System.currentTimeMillis()+""+random.nextInt(1000))); boolean result = hospitalSetService.save(hospitalSet); if(result){ return Result.ok().message("添加成功"); }else{ return Result.fail().message("添加失败"); } } catch (DuplicateKeyException e) { throw new GuiguException(ResultCodeEnum.HOSCODE_EXIST, e); } catch (Exception e) { throw new GuiguException(ResultCodeEnum.FAIL, e); }}
src/api/syt/hospset.js
getById(id) { return request({ url: `${apiName}/getHospSet/${id}`, method: "get" })},
methods中定义fetchDataById:
// 根据id查询记录fetchDataById(id) { hospsetApi.getById(id).then(response => { this.hospset = response.data })},
定义生命周期方法:
created() { console.log("created") if (this.$route.params.id) { this.fetchDataById(this.$route.params.id) }},
updateById(hospset) { return request({ url: `${apiName}/updateHospSet`, method: "put", data: hospset })},
methods中定义updateData
// 根据id更新记录updateData() { hospsetApi.updateById(this.hospset).then(response => { this.$message.success(response.message) this.$router.push({ path: "/syt/hospset/list" }) })},
saveOrUpdate() { this.saveBtnDisabled = true if (!this.hospset.id) { this.saveData() } else { this.updateData() }},
src/api/syt/hospset.js
removeRows(idList) { return request({ url: `${apiName}/batchRemove`, method: "delete", data: idList })},
src/views/syt/hospset/list.vue
在列表页的table组件上方添加 批量删除
按钮
批量删除
在table组件上添加@selection-change 和 复选框列
data定义数据
multipleSelection: [], // 批量选择中选择的记录列表
完善方法
// 当表格复选框选项发生变化的时候触发 handleSelectionChange(selection) { this.multipleSelection = selection }, //批量删除 removeRows() { if(this.multipleSelection.length == 0){ this.$message.warning("请选择要删除的记录") return } this.$confirm("此操作将永久删除医院设置信息, 是否继续?", "提示", { type: "warning", }).then(() => { //确定执行then方法 var idList = [] this.multipleSelection.forEach((item) => { idList.push(item.id) }) //调用接口 hospsetApi.removeRows(idList).then((response) => { //提示 this.$message.success(response.message), //刷新页面 this.fetchData() }) }).catch(() => { this.$message.info("已取消删除") }) },
src/api/syt/hospset.js
//锁定和取消锁定lockHospSet(id, status) { return request({ url: `${apiName}/lockHospitalSet/${id}/${status}`, method: "put" })},
在list.vue页面添加方法:
//锁定和取消锁定lockHostSet(id, status) { hospsetApi.lockHospSet(id,status).then(response => { //刷新 this.fetchData() })},
源码:https://gitee.com/dengyaojava/guigu-syt-parent
上一篇: 当前观点:银川端午节一日游攻略
下一篇: 最后一页
X 关闭
X 关闭
爱美之心人皆有之。都说头发是人的第二张脸,如果头发毛躁、像枯草一样,就算再美的颜值,在别人眼中也会大打折扣。怎么样打造柔顺健康的秀
(上海战疫录)上海高校架“云梯” 校企隔空交流保就业服务不断线 中新网上海4月23日电(记者陈静)新冠肺炎疫情防控之下,即将走上社
中新网西宁4月23日电 (孙睿 赵倩)记者23日从青海省格尔木市官方获悉,柴达木盆地首家“护蕾女童温馨小屋”——青海省妇女儿童保护“
(上海战疫录)守“沪”日志:沪人居家“读”处 “文艺团购”线上送“书香” 中新网上海4月23日电 题:守“沪”日志:沪人居家“读
(抗击新冠肺炎)内蒙古满洲里新增3例本土确诊病例 年龄最大的86岁 中新网满洲里4月23日电 (记者 张玮)23日,内蒙古自治区满洲里市
中新网北京4月23日电 (徐婧)北京市疾病预防控制中心副主任、全国新型冠状病毒肺炎专家组成员庞星火在23日的疫情防控新闻发布会上通报
中新网兰州4月23日电 (记者 冯志军)中国核城“四〇四”,曾被网友称为“一个地图上找不到的地方”,近年开始在甘肃嘉峪关市城区建起
(上海战疫录)增援民警诉说方舱里的“生活百态” 中新网上海4月23日电 题:增援民警诉说方舱里的“生活百态” 作者 李姝徵 宋
中新网北京4月23日电(徐婧)北京市朝阳区人民政府副区长杨蓓蓓在23日召开的北京疫情防控新闻发布会上表示,全区学校每周进行三次全员核
中新网北京4月23日电(徐婧)北京市朝阳区人民政府副区长杨蓓蓓在23日召开的北京疫情防控新闻发布会上表示,潘家园街道松榆东里11号楼、4