Commit d9ba3c13 by 唐玉峰

临床

parent e3acde94
<template>
<div id="app">
<router-view/>
</div>
<div id="app">
<router-view />
</div>
</template>
<script>
export default {
name: 'App',
}
name: "App",
};
</script>
<style>
html,
body,
#app {
width: 100%;
height: 100%;
margin: 0;
}
</style>
......@@ -59,6 +59,18 @@ const router = new Router({
path: "/test",
component: (resolve) => require(["@/views/test.vue"], resolve),
},
{
path: "/clinicalPathMaintenance",
component: (resolve) => require(["@/views/clinicalPathMaintenance.vue"], resolve),
},
{
path: "/relationMapping",
component: (resolve) => require(["@/views/relationMapping.vue"], resolve),
},
{
path: "/clinicalLog",
component: (resolve) => require(["@/views/clinicalLog.vue"], resolve),
},
],
// mode: 'history' /*hash*/ /*不显示路由中的#*/
});
......
<template>
<div class="clinicalPathMaintenance">
<div style="height: 10px; background-color: #0283bb"></div>
<div class="top">
<el-select style="width: 200px; margin-right: 15px" v-model="type" placeholder="请选择类型" size="mini" clearable @clear="clearFn">
<el-option label="添加" :value="1" />
<el-option label="删除" :value="2" />
</el-select>
<el-input
style="width: 280px"
v-model.trim="searchForm"
size="mini"
placeholder="请输入用户名/医师名/科室名/路径名"
clearable
@clear="clearFn"
></el-input>
<el-button type="primary" style="background-color: #0283bb; color: #ffff; margin-left: 15px" size="mini" @click="getList">查询</el-button>
</div>
<div style="padding: 20px">
<el-table :data="tableData" stripe style="width: 100%" border size="mini">
<el-table-column align="center" type="index" width="50" :index="(currentPage - 1) * pageSize + 1" fixed></el-table-column>
<el-table-column :prop="item.prop" min-width="160" :label="item.label" v-for="item in columnList" :key="item.label" show-overflow-tooltip>
</el-table-column>
</el-table>
<div style="text-align: right; margin-top: 20px">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="currentPage"
:page-size="pageSize"
layout="total, prev, pager, next"
:total="totalCount"
>
</el-pagination>
</div>
</div>
</div>
</template>
<script>
import http from "../utils/http";
import { setItem, getItem } from "../utils/auth";
import { Message, Loading } from "element-ui";
export default {
name: "clinicalPathMaintenance",
data() {
return {
columnList: [
{ label: "用户名", prop: "userName" },
{ label: "医师名", prop: "doctorName" },
{ label: "科室名", prop: "deptName" },
{ label: "路径名", prop: "route_name" },
{ label: "方案名", prop: "advice_name" },
{ label: "方案时间", prop: "inHosDays" },
{ label: "项目详细名", prop: "project_name" },
],
totalCount: 0, //总条数
currentPage: 1, //当前页
pageSize: 10,
tableData: [],
searchForm: "",
type: undefined,
typeObj: {
1: "添加",
2: "删除",
},
};
},
mounted() {
this.getList();
},
methods: {
//获取频率,频率的下拉数据
getList() {
http.post(
`/ClinicalRoute/ClinicalRoute/GetRouteLogList?PageNumber=${this.currentPage}&PageSize=${this.pageSize}&SearchQuery=${this.searchForm}&Type=${
this.type || 0
}`,
{}
)
.then((data) => {
this.tableData = data.list;
this.totalCount = data.totalCount;
})
.catch((error) => {});
},
handleCurrentChange(val) {
this.currentPage = val;
this.getList();
},
handleSizeChange(val) {
this.pageSize = val;
this.getList();
},
clearFn() {
this.getList();
},
search() {
this.pageSize = 10;
this.currentPage = 1;
this.getList();
},
},
};
</script>
<style lang="scss">
.clinicalPathMaintenance {
height: 100%;
background-color: white;
overflow: hidden;
position: relative;
.top {
display: flex;
align-items: center;
margin: 20px;
}
}
</style>
<template>
<div class="clinicalPathMaintenance">
<div style="height: 10px; background-color: #0283bb"></div>
<div class="top">
<div>
路径名称: <el-input size="mini" v-model="SearchQuery" style="width: 200px" placeholder="请输入路径名称" clearable @clear="getList"> </el-input>
</div>
<el-button type="primary" style="background-color: #0283bb; color: #ffff; margin-left: 15px" size="mini" @click="getList">查询</el-button>
</div>
<div style="padding: 20px">
<el-table :data="tableData" stripe style="width: 100%" border size="mini">
<el-table-column align="center" type="index" width="50" :index="(currentPage - 1) * pageSize + 1" fixed></el-table-column>
<el-table-column :prop="item.prop" min-width="160" :label="item.label" v-for="item in columnList" :key="item.label" show-overflow-tooltip>
</el-table-column>
<el-table-column label="操作" width="140" fixed="right">
<template #default="scope">
<el-button size="mini" type="primary" style="background-color: #0283bb" @click="editbtn(scope.row)">编辑</el-button>
</template>
</el-table-column>
</el-table>
<div style="text-align: right; margin-top: 20px">
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page.sync="currentPage"
:page-size="pageSize"
layout="total, prev, pager, next"
:total="totalCount"
>
</el-pagination>
</div>
</div>
</div>
</template>
<script>
import http from "../utils/http";
import { setItem, getItem } from "../utils/auth";
import { Message, Loading } from "element-ui";
export default {
name: "clinicalPathMaintenance",
data() {
return {
columnList: [
{ label: "路径名称", prop: "clinical_route_name" },
{ label: "文件夹名称", prop: "clinical_route_foldername" },
{ label: "适用对象", prop: "applicable_objects" },
{ label: "标准住院日", prop: "hospital_stay" },
{ label: "最小住院日", prop: "min_stay" },
{ label: "最大住院日", prop: "max_stay" },
],
totalCount: 0, //总条数
currentPage: 1, //当前页
pageSize: 10,
tableData: [],
SearchQuery: "",
};
},
mounted() {
this.getList();
},
methods: {
//获取频率,频率的下拉数据
getList() {
http.post(`/ClinicalRoute/ClinicalRoute/List?PageNumber=${this.currentPage}&PageSize=${this.pageSize}&SearchQuery=${this.SearchQuery}`, {})
.then((data) => {
this.tableData = data.list;
this.totalCount = data.totalCount;
})
.catch((error) => {});
},
handleCurrentChange(val) {
this.currentPage = val;
this.getList();
},
handleSizeChange(val) {
this.pageSize = val;
this.getList();
},
editbtn(obj) {
this.$router.push({
path: "relationMapping",
query: {
cid: obj.id,
ApplyDoctor: this.$route.query.ApplyDoctor ?? 0,
},
});
},
},
};
</script>
<style lang="scss">
.clinicalPathMaintenance {
height: 100%;
background-color: white;
overflow: hidden;
position: relative;
.top {
display: flex;
align-items: center;
margin: 20px;
}
}
</style>
......@@ -2198,5 +2198,9 @@ export default {
}
}
}
input[type="radio" i] {
width: 16px;
height: 16px;
}
}
</style>
<template>
<div class="relationMapping">
<div style="height: 10px; background-color: #0283bb"></div>
<div class="top">
<el-radio-group v-model="radio" @change="radiochange">
<el-radio :label="1">长期医嘱</el-radio>
<el-radio :label="2">临时医嘱</el-radio>
</el-radio-group>
<div style="color: red" v-if="show">有未保存排序内容!</div>
<div class="">
<el-button size="mini" type="primary" style="background-color: #0283bb" @click="saveSort">保存排序</el-button>
<el-button size="mini" type="primary" style="background-color: #0283bb" @click="rightadd()">添加</el-button>
<el-button size="mini" type="danger" @click="rightdelarr()">删除</el-button>
<el-button
size="mini"
@click="
() => {
$router.go(-1);
}
"
>返回</el-button
>
</div>
</div>
<div class="main">
<div class="left">
<el-table :data="lefttableData" stripe style="width: 100%" border height="99%" size="mini" highlight-current-row @row-click="rowclick">
<el-table-column :prop="item.prop" min-width="160" :label="item.label" v-for="item in columnList" :key="item.label" show-overflow-tooltip>
</el-table-column>
</el-table>
</div>
<div class="right">
<el-table :data="righttableData" stripe style="width: 100%" border height="99%" size="mini" @selection-change="righthandleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column prop="project_name" label="收费项目名称" show-overflow-tooltip />
<el-table-column prop="sort" label="排序" width="80" type="index" />
<el-table-column label="操作" width="150">
<template #default="scope">
<el-button size="mini" type="primary" style="background-color: #0283bb" @click="onMove(scope.row.id, 1)">上移</el-button>
<el-button size="mini" type="primary" style="background-color: #0283bb" @click="onMove(scope.row.id, 0)">下移</el-button>
</template>
</el-table-column>
</el-table>
</div>
</div>
<!-- 右侧的添加弹框开始 -->
<el-dialog :visible.sync="RightdialogTableVisible" class="relationMapping_rightdiaglogbox" max-height="600px">
<div class="relationMapping_rightdiaglogbox_top">
<div class="relationMapping_rightdiaglogbox_top_input">
<span class="relationMapping_rightdiaglogbox_top_input_span">项目名称:</span>
<el-input v-model="rightnameinput" placeholder="请输入项目名称" size="mini" style="width: 200px; margin-right: 15px" clearable />
<el-button type="primary" size="mini" style="background-color: #0283bb" @click="rightselectbtn()">查询</el-button>
</div>
<div class="relationMapping_rightdiaglogbox_top_btn">
<el-button type="primary" size="mini" style="background-color: #0283bb" @click="rightok()">保存</el-button>
</div>
</div>
<el-table :data="rightdialogData" @selection-change="rightselectchange" max-height="400px" border size="mini">
<el-table-column type="selection" width="55" />
<el-table-column prop="code" label="项目编码"></el-table-column>
<el-table-column prop="name" label="规则名称" />
</el-table>
</el-dialog>
<!--右侧的添加弹框结束 -->
</div>
</template>
<script>
import http from "../utils/http";
import { Message, Loading, MessageBox } from "element-ui";
import { transformTimestamp } from "../utils/formatTime";
export default {
name: "relationMapping",
data() {
return {
radio: 1,
show: false,
columnList: [
{ label: "方案名称", prop: "advice_name" },
{ label: "住院天数", prop: "inhosdays" },
],
columnRList: [
{ label: "收费项目名称", prop: "project_name" },
{ label: "sort", prop: "排序" },
],
lefttableData: [],
righttableData: [],
adviceid: 0,
rightarr: [],
RightdialogTableVisible: false,
rightdialogData: [],
rightnameinput: "",
rightchange: [],
};
},
mounted() {
this.getleftlist();
},
methods: {
rightok() {
if (!this.rightchange.length) {
return;
}
this.RightdialogTableVisible = false;
let arr = [];
Object.keys(this.rightchange).forEach((key) => {
let item = {
map_advice_id: this.adviceid,
project_code: this.rightchange[key].code,
project_name: this.rightchange[key].name,
crid: this.$route.query.cid ? this.$route.query.cid * 1 : 0,
id: 0,
create_time: transformTimestamp(new Date()),
sort: 0,
};
arr.push(item);
});
http.post(`/ClinicalRoute/ClinicalRoute/CreateMapCRAProject?ApplyDoctor=${this.$route.query.ApplyDoctor * 1}`, arr)
.then((data) => {
Message.success({
message: "添加成功!",
type: "success",
});
this.getRightList();
this.rightdialogData = [];
this.rightnameinput = "";
})
.catch((error) => {});
},
rightselectchange(val) {
this.rightchange = val;
},
rightselectbtn() {
if (this.rightnameinput) {
http.post(`/ClinicalRoute/ClinicalRoute/GetProjectInfo?searchQuery=${this.rightnameinput}`, {})
.then((data) => {
this.rightdialogData = data;
})
.catch((error) => {});
}
},
//获取左侧 初始化数据
getleftlist() {
http.post(`/ClinicalRoute/ClinicalRoute/GetMapCRAdvices?crid=${this.$route.query.cid}&type=${this.radio}`, {})
.then((data) => {
this.show = false;
this.lefttableData = data;
})
.catch((error) => {});
},
//获取左侧 初始化数据
getRightList() {
http.post(`/ClinicalRoute/ClinicalRoute/GetMapCRAProjectInfo?adviceid=${this.adviceid}`, {})
.then((data) => {
this.show = false;
this.righttableData = data;
})
.catch((error) => {});
},
righthandleSelectionChange(val) {
this.rightarr = val;
},
//点击左侧表格数据
rowclick(row, column, event) {
this.adviceid = row.id;
this.getRightList();
},
onMove(code, dir) {
let moveComm = (curIndex, nextIndex) => {
let arr = this.righttableData;
arr[curIndex] = arr.splice(nextIndex, 1, arr[curIndex])[0];
return arr;
};
this.righttableData.some((val, index) => {
if (val.id === code) {
if (dir === 1 && index === 0) {
Message.warning({
message: "已在顶部!",
type: "warning",
});
} else if (dir === 0 && index === this.righttableData.length - 1) {
Message.warning({
message: "已在底部!",
type: "warning",
});
} else {
this.show = true;
let nextIndex = dir === 1 ? index - 1 : index + 1;
this.righttableData = moveComm(index, nextIndex);
}
return true;
}
return false;
});
},
radiochange(val) {
this.show = false;
this.righttableData = [];
this.getleftlist();
},
saveSort() {
if (!this.righttableData.length) {
return;
}
let newarr = [];
this.righttableData.forEach((item, index) => {
let obj = {
id: item.id,
sort: index + 1,
};
newarr.push(obj);
});
http.post(`/ClinicalRoute/ClinicalRoute/UpdateMapCRAProject`, newarr)
.then((data) => {
Message.success({
message: "保存成功!",
type: "success",
});
this.show = false;
this.getRightList();
})
.catch((error) => {});
},
rightadd() {
if (this.adviceid) {
this.RightdialogTableVisible = true;
} else {
Message.warning({
message: "请选择项目!",
type: "warning",
});
}
},
rightdelarr() {
if (!this.rightarr.length) {
Message.warning({
message: "请选择删除项目!",
type: "warning",
});
return;
}
MessageBox.confirm("是否删除此选项?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
let newarr = [];
Object.keys(this.rightarr).forEach((key) => {
newarr.push(this.rightarr[key].id);
});
if (newarr.length > 0) {
http.post(`/ClinicalRoute/ClinicalRoute/RemoveMapCRAProject?ApplyDoctor=${this.$route.query.ApplyDoctor * 1}`, newarr)
.then((data) => {
Message.success({
message: `${data.message}`,
type: "success",
});
this.getRightList();
})
.catch((error) => {});
}
})
.catch(() => {
Message.info({
message: "已取消删除",
type: "info",
});
});
},
},
};
</script>
<style lang="scss">
.relationMapping {
height: 100%;
background-color: white;
overflow: hidden;
position: relative;
.top {
display: flex;
justify-content: space-between;
align-items: center;
margin: 20px;
}
.main {
display: flex;
padding: 0 20px;
justify-content: space-between;
height: calc(100% - 100px);
.left {
width: 40%;
height: 100%;
}
.right {
width: 58%;
height: 100%;
}
}
&_rightdiaglogbox {
&_top {
width: 100%;
height: 50px;
display: flex;
align-items: center;
&_input {
width: 70%;
height: 100%;
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
&_span {
width: 80px;
height: 50px;
display: flex;
align-items: center;
font-size: 14px;
}
&_span2 {
margin-left: 20px;
}
}
&_btn {
width: 30%;
display: flex;
justify-content: flex-end;
}
}
}
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment