|
@@ -0,0 +1,548 @@
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <crumbs title="电子病历方案配置" style="min-width: 980px">
|
|
|
+ <el-form :inline="true" class="demo-form-inline">
|
|
|
+ <el-form-item label="所属医院:" class="selectMedicine">
|
|
|
+ <el-select size="mini" v-model="filter.hospitalId" placeholder="请选择" clearable>
|
|
|
+ <el-option
|
|
|
+ v-for="item in HospitalInfoList"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.id"
|
|
|
+ :key="item.id"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="方案名称:">
|
|
|
+ <el-input size="mini" v-model="filter.planName" placeholder="请输入" clearable></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button size="mini" @click="filterDatas">检索</el-button>
|
|
|
+ <el-button size="mini" type="warning" @click="addRelation">添加方案</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </crumbs>
|
|
|
+ <div class="contents">
|
|
|
+ <el-table :data="list" border style="width: 100%" ref="">
|
|
|
+ <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
|
|
|
+ <el-table-column :resizable="false" prop="hospitalId" label="医院ID" show-overflow-tooltip></el-table-column>
|
|
|
+ <el-table-column :resizable="false" prop="hospitalName" label="医院名称" show-overflow-tooltip></el-table-column>
|
|
|
+ <!-- <el-table-column :resizable="false" prop="hospitalId" label="医院编码"></el-table-column> -->
|
|
|
+ <el-table-column :resizable="false" prop="planName" label="方案名称" show-overflow-tooltip></el-table-column>
|
|
|
+ <el-table-column :resizable="false" prop="planCode" label="方案编码" width="180"></el-table-column>
|
|
|
+ <el-table-column :resizable="false" prop="planDetail" label="模块配置" show-overflow-tooltip></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ :resizable="false"
|
|
|
+ prop="gmtCreate"
|
|
|
+ label="创建时间"
|
|
|
+ show-overflow-tooltip
|
|
|
+ width="180"
|
|
|
+ ></el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ :resizable="false"
|
|
|
+ prop="planStatus"
|
|
|
+ label="状态"
|
|
|
+ show-overflow-tooltip
|
|
|
+ width="180"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">{{scope.row.planStatus == 1 ? '已启用': '已禁用'}}</template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column :resizable="false" prop="operate" label="操作">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button
|
|
|
+ @click="modifyRelation(scope.row)"
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ v-if="scope.row.planStatus === 1"
|
|
|
+ class="disable"
|
|
|
+ >修改</el-button>
|
|
|
+ <el-button plain type="text" size="small" v-else disabled>修改</el-button>
|
|
|
+ <span style="margin:0 3px;">|</span>
|
|
|
+ <el-button
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ :class="codeArr.includes(scope.row.planCode) ? 'active-t': 'active'"
|
|
|
+ :disabled = 'codeArr.includes(scope.row.planCode)'
|
|
|
+ @click="enableOrAble(scope.row,0)"
|
|
|
+ v-if="scope.row.planStatus === 1"
|
|
|
+ >禁用</el-button>
|
|
|
+
|
|
|
+ <el-button type="text" size="small" @click="enableOrAble(scope.row,1)" v-else>启用</el-button>
|
|
|
+ <span style="margin:0 3px;">|</span>
|
|
|
+ <el-button
|
|
|
+ v-if="scope.row.planStatus !== 1"
|
|
|
+ @click="showDelDialog(scope.row.id,scope.row.planStatus,scope.row.planName,scope.row)"
|
|
|
+ class="delete"
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ >删除</el-button>
|
|
|
+ <el-button class="deleteBtn" plain type="text" size="small" v-else disabled>删除</el-button>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <div class="pagination">
|
|
|
+ <el-pagination
|
|
|
+ :current-page.sync="currentPage"
|
|
|
+ @current-change="currentChange"
|
|
|
+ background
|
|
|
+ :page-size="pageSize"
|
|
|
+ :page-sizes="pageSizeArr"
|
|
|
+ @size-change="handleSizeChange"
|
|
|
+ :layout="pageLayout"
|
|
|
+ :total="total"
|
|
|
+ ></el-pagination>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import api from "@api/cdss.js";
|
|
|
+import config from "@api/config.js";
|
|
|
+import utils from "@api/utils.js";
|
|
|
+
|
|
|
+export default {
|
|
|
+ name: "Plan",
|
|
|
+ data: function() {
|
|
|
+ return {
|
|
|
+ list: [],
|
|
|
+ searched: false,
|
|
|
+ filter: {
|
|
|
+ planName: "", //标准诊断名称
|
|
|
+ hospitalId: ""
|
|
|
+ },
|
|
|
+ currentPage: 1,
|
|
|
+ pageSize: config.pageSize,
|
|
|
+ pageSizeArr: config.pageSizeArr,
|
|
|
+ pageLayout: config.pageLayout,
|
|
|
+ total: 0,
|
|
|
+ hospitalId: "",
|
|
|
+ HospitalInfoList: [],
|
|
|
+ disablelist: [],
|
|
|
+ codeArr: []
|
|
|
+ };
|
|
|
+ },
|
|
|
+ created(row) {
|
|
|
+ const that = this;
|
|
|
+ //返回时避免参数未赋值就获取列表
|
|
|
+ setTimeout(function() {
|
|
|
+ that.getDisabel()
|
|
|
+ that.getDataList();
|
|
|
+ that._getHospitalInfo();
|
|
|
+ });
|
|
|
+ // 非首页 编辑页返回 设置 this.currentPage
|
|
|
+ if (Object.keys(this.$route.params).length !== 0) {
|
|
|
+ this.currentPage = this.$route.params.currentPage;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ filter: {
|
|
|
+ handler: function() {
|
|
|
+ this.searched = false;
|
|
|
+ },
|
|
|
+ deep: true
|
|
|
+ }
|
|
|
+ },
|
|
|
+ beforeRouteEnter(to, from, next) {
|
|
|
+ next(vm => {
|
|
|
+ //const pm = to.param;
|
|
|
+ Object.assign(vm, to.params);
|
|
|
+ vm.inCurrentPage = to.params.currentPage;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ handleSizeChange(val) {
|
|
|
+ this.pageSize = val;
|
|
|
+ this.currentPage = utils.getCurrentPage(
|
|
|
+ this.currentPage,
|
|
|
+ this.total,
|
|
|
+ this.pageSize
|
|
|
+ );
|
|
|
+ this.getDataList();
|
|
|
+ },
|
|
|
+
|
|
|
+ // 获取医院下拉列表
|
|
|
+ _getHospitalInfo() {
|
|
|
+ api.getHospitalInfo().then(res => {
|
|
|
+ if (res.data.code === "0") {
|
|
|
+ this.HospitalInfoList = res.data.data;
|
|
|
+ console.log("医院列表>>", this.HospitalInfoList);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ // 使plan_default禁用
|
|
|
+ async getDisabel(row){
|
|
|
+ const res = await api.getListBack()
|
|
|
+ if(res.data.code === '0'){
|
|
|
+ this.disablelist = res.data.data[60]
|
|
|
+ console.log('禁用2', this.codeArr);
|
|
|
+ this.codeArr = this.disablelist.map(item => {
|
|
|
+ if(item.val == 'plan_default'){
|
|
|
+ return item.val
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+ // 获取列表数据
|
|
|
+ async getDataList(isTurnPage) {
|
|
|
+
|
|
|
+ let params = await this.getFilterItems(isTurnPage);
|
|
|
+ // return;
|
|
|
+ this.searched = true;
|
|
|
+ const loading = this.$loading({
|
|
|
+ lock: true,
|
|
|
+ text: "Loading",
|
|
|
+ spinner: "el-icon-loading",
|
|
|
+ background: "rgba(0, 0, 0, 0.7)"
|
|
|
+ });
|
|
|
+ api.getPlanInfoPages(params).then(res => {
|
|
|
+ console.log("列表数据", res);
|
|
|
+ loading.close();
|
|
|
+ if (res.data.code === "0") {
|
|
|
+ this.list = res.data.data && res.data.data.records;
|
|
|
+ console.log("hello>>", this.list);
|
|
|
+ }
|
|
|
+ this.total = res.data.data && res.data.data.total;
|
|
|
+ if (this.inCurrentPage !== undefined) {
|
|
|
+ this.currentPage = this.inCurrentPage;
|
|
|
+ this.inCurrentPage = undefined;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ // 返回字典信息数据
|
|
|
+
|
|
|
+ // 处理列表请求数据参数
|
|
|
+ async getFilterItems(isTurnPage) {
|
|
|
+ //翻页时筛选条件没点确定则清空
|
|
|
+ if (isTurnPage && !this.searched) {
|
|
|
+ this.clearFilter();
|
|
|
+ }
|
|
|
+ // let planName = this.filter.planName.trim();
|
|
|
+ const param = {
|
|
|
+ current: this.inCurrentPage || this.currentPage,
|
|
|
+ size: this.pageSize,
|
|
|
+ planName: this.filter.planName.trim(),
|
|
|
+ hospitalId: this.filter.hospitalId
|
|
|
+ };
|
|
|
+ return param;
|
|
|
+ },
|
|
|
+
|
|
|
+ escapeRegExp(text) {
|
|
|
+ return text.replace(/[-[\]{}()*+?._,\\^$|#\s]/g, "\\$&");
|
|
|
+ },
|
|
|
+
|
|
|
+ filterDatas() {
|
|
|
+ this.currentPage = 1;
|
|
|
+ this.getDataList();
|
|
|
+ },
|
|
|
+ addRelation() {
|
|
|
+ const pam = this.searched
|
|
|
+ ? {
|
|
|
+ currentPage: this.currentPage,
|
|
|
+ pageSize: this.pageSize,
|
|
|
+ filter: this.filter
|
|
|
+ }
|
|
|
+ : { currentPage: this.currentPage, pageSize: this.pageSize };
|
|
|
+ this.$router.push({ name: "AddPlan", params: pam });
|
|
|
+ },
|
|
|
+ // 修改诊断关联-跳转至编辑页面
|
|
|
+ modifyRelation(row) {
|
|
|
+ const item = Object.assign({}, row);
|
|
|
+ const pam = this.searched
|
|
|
+ ? {
|
|
|
+ currentPage: this.currentPage,
|
|
|
+ pageSize: this.pageSize,
|
|
|
+ filter: this.filter
|
|
|
+ }
|
|
|
+ : { currentPage: this.currentPage, pageSize: this.pageSize };
|
|
|
+ this.$router.push({
|
|
|
+ name: "AddPlan",
|
|
|
+ params: Object.assign(pam, { isEdit: true, data: item, codeArr: this.codeArr})
|
|
|
+ });
|
|
|
+ },
|
|
|
+ currentChange(next) {
|
|
|
+ this.currentPage = next;
|
|
|
+ this.getDataList(true);
|
|
|
+ // if (this.cacheData[next]) { //如果已请求过该页数据,则使用缓存不重复请求
|
|
|
+ // this.list = this.cacheData[next];
|
|
|
+ // } else {
|
|
|
+ // this.getDataList();
|
|
|
+ // }
|
|
|
+ },
|
|
|
+ // 清空搜索参数
|
|
|
+ clearFilter() {
|
|
|
+ this.filter = {
|
|
|
+ hisName: "",
|
|
|
+ planName: ""
|
|
|
+ };
|
|
|
+ },
|
|
|
+
|
|
|
+ indexMethod(index) {
|
|
|
+ return (this.currentPage - 1) * this.pageSize + index + 1;
|
|
|
+ },
|
|
|
+ getTagType(val) {
|
|
|
+ return val;
|
|
|
+ },
|
|
|
+ warning(msg, type) {
|
|
|
+ this.$message({
|
|
|
+ showClose: true,
|
|
|
+ message: msg,
|
|
|
+ type: type || "warning"
|
|
|
+ });
|
|
|
+ },
|
|
|
+ showConfirmDialog(msg, resolve, type) {
|
|
|
+ let showInfo = "启用";
|
|
|
+ let btnNameClass = "confirmBtn2";
|
|
|
+ if (type === "Del") {
|
|
|
+ showInfo = "禁用";
|
|
|
+ btnNameClass = "delBtn";
|
|
|
+ } else if (type === "Del1") {
|
|
|
+ showInfo = "删除";
|
|
|
+ btnNameClass = "delBtn";
|
|
|
+ }
|
|
|
+
|
|
|
+ this.$alert(msg, "提示", {
|
|
|
+ confirmButtonText: showInfo,
|
|
|
+ // cancelButtonText: '取消',
|
|
|
+ // cancelButtonClass: 'cancelBtn',
|
|
|
+ // confirmButtonClass: btnNameClass,
|
|
|
+ type: "warning"
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ resolve();
|
|
|
+ })
|
|
|
+ .catch(() => {});
|
|
|
+ },
|
|
|
+ // // 获取医院信息
|
|
|
+ // _getHospital() {
|
|
|
+ // api.getHospitalInfo().then(res => {
|
|
|
+ // if (res.data.code === '0') {
|
|
|
+ // this.hospitalId = res.data.data.id;
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ // },
|
|
|
+ // 删除关联
|
|
|
+ showDelDialog(id, status, info, row) {
|
|
|
+ if (status === 1) {
|
|
|
+ this.$alert(`${info}正在启用中,无法删除。`, "提示", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ // cancelButtonText: '取消',
|
|
|
+ // cancelButtonClass: 'cancelSureL',
|
|
|
+ // confirmButtonClass: 'sureL',
|
|
|
+ // customClass: 'exportBoxL',
|
|
|
+ type: "warning"
|
|
|
+ })
|
|
|
+ .then(() => {})
|
|
|
+ .catch(() => {});
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (id === -1) {
|
|
|
+ this.$alert(`该方案为默认方案,无法删除。`, "提示", {
|
|
|
+ confirmButtonText: "确定",
|
|
|
+ // cancelButtonText: '取消',
|
|
|
+ // cancelButtonClass: 'cancelSureL',
|
|
|
+ // confirmButtonClass: 'sureL',
|
|
|
+ // customClass: 'exportBoxL',
|
|
|
+ type: "warning"
|
|
|
+ })
|
|
|
+ .then(() => {})
|
|
|
+ .catch(() => {});
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ // return
|
|
|
+ this.showConfirmDialog(
|
|
|
+ "是否删除该方案配置?",
|
|
|
+ () => {
|
|
|
+ let params = {
|
|
|
+ planId: id,
|
|
|
+ hospitalId: row.hospitalId
|
|
|
+ };
|
|
|
+ api
|
|
|
+ .cancelPlanDatas(params)
|
|
|
+ .then(res => {
|
|
|
+ if (res.data.code == "0") {
|
|
|
+ if (!this.searched) {
|
|
|
+ //未点确认时清空搜索条件
|
|
|
+ this.clearFilter();
|
|
|
+ }
|
|
|
+ if (this.list.length == 1) {
|
|
|
+ //当前在最后一页且只有一条数据时,删除后跳到前一页
|
|
|
+ this.currentPage =
|
|
|
+ this.currentPage === 1 ? 1 : this.currentPage - 1;
|
|
|
+ }
|
|
|
+ this.getDataList();
|
|
|
+ this.warning(res.data.msg || "操作成功", "success");
|
|
|
+ } else {
|
|
|
+ this.warning(res.data.msg);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(error => {
|
|
|
+ if (error.code === "900010001") {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ this.warning(error);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ "Del1"
|
|
|
+ );
|
|
|
+ },
|
|
|
+
|
|
|
+ // 启用/禁用 数据请求
|
|
|
+ sendAbleOrEn(row, type) {
|
|
|
+ api
|
|
|
+ .revStopPlans({
|
|
|
+ id: row.id,
|
|
|
+ status: type
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ console.log("禁用", res);
|
|
|
+ if (res.data.code === "0") {
|
|
|
+ this.$message({
|
|
|
+ showClose: true,
|
|
|
+ message: "操作成功",
|
|
|
+ type: "success",
|
|
|
+ duration: 1000
|
|
|
+ });
|
|
|
+ this.getDataList();
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(err => {});
|
|
|
+ },
|
|
|
+
|
|
|
+ // 启用/禁用
|
|
|
+ enableOrAble(row, type) {
|
|
|
+ console.log("启用planName", row, type);
|
|
|
+ if (type === 1) {
|
|
|
+ // 启用
|
|
|
+ this.showConfirmDialog(
|
|
|
+ `确定要启用${row.planName}吗?`,
|
|
|
+ () => {
|
|
|
+ this.sendAbleOrEn(row, type);
|
|
|
+ },
|
|
|
+ "Reuse"
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ // 禁用
|
|
|
+ this.showConfirmDialog(
|
|
|
+ `方案禁用后前端页面将无法正常显示内容,确定要禁用${row.planName}吗?`,
|
|
|
+ () => {
|
|
|
+ this.sendAbleOrEn(row, type);
|
|
|
+ },
|
|
|
+ "Del"
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+
|
|
|
+<style lang="less" scoped>
|
|
|
+@import "../../../less/admin.less";
|
|
|
+.delete {
|
|
|
+ color: red;
|
|
|
+}
|
|
|
+.delete:hover {
|
|
|
+ color: red;
|
|
|
+}
|
|
|
+.pagination {
|
|
|
+ min-width: 1010px;
|
|
|
+}
|
|
|
+.disable {
|
|
|
+ border-color: transparent;
|
|
|
+}
|
|
|
+.el-message-box {
|
|
|
+ /deep/.cancelBtn {
|
|
|
+ background-color: #d7d7d7;
|
|
|
+ border-color: transparent;
|
|
|
+ }
|
|
|
+ /deep/ .delBtn {
|
|
|
+ background-color: #ff545b !important;
|
|
|
+ border-color: transparent !important;
|
|
|
+ }
|
|
|
+ /deep/ .confirmBtn2 {
|
|
|
+ position: relative;
|
|
|
+ right: 0px !important;
|
|
|
+ }
|
|
|
+}
|
|
|
+.exportBoxL {
|
|
|
+ /deep/ .el-message-box__btns {
|
|
|
+ margin-top: 20px;
|
|
|
+ }
|
|
|
+ /deep/ .el-message-box__message {
|
|
|
+ text-align: left;
|
|
|
+ }
|
|
|
+ /deep/ .el-message-box__btns {
|
|
|
+ // text-align: center;
|
|
|
+ margin-bottom: 24px;
|
|
|
+ }
|
|
|
+ /deep/ .leftbtn {
|
|
|
+ margin-right: 46px;
|
|
|
+ background-color: #d7d7d7;
|
|
|
+ border-color: transparent;
|
|
|
+ }
|
|
|
+ /deep/ .cancelSureL {
|
|
|
+ // text-align: center;
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+ /deep/ .sureL {
|
|
|
+ float: right;
|
|
|
+ }
|
|
|
+}
|
|
|
+.contents {
|
|
|
+ .is-plain {
|
|
|
+ color: #dad7d7;
|
|
|
+ }
|
|
|
+ .is-plain:hover {
|
|
|
+ color: #dad7d7;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.el-table__row {
|
|
|
+ /deep/ .is-disabled {
|
|
|
+ border-color: transparent !important;
|
|
|
+ }
|
|
|
+}
|
|
|
+.selectMedicine {
|
|
|
+ /deep/ .el-input__suffix-inner {
|
|
|
+ position: relative;
|
|
|
+ top: -1px;
|
|
|
+ }
|
|
|
+ /deep/ .el-icon-circle-close {
|
|
|
+ position: relative;
|
|
|
+ top: -2px;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.el-button.is-disabled[data-v-7f43c814] {
|
|
|
+ color: #dad7d7;
|
|
|
+}
|
|
|
+
|
|
|
+.el-button.is-disabled[data-v-7f43c814]:hover {
|
|
|
+ color: #ff0000;
|
|
|
+}
|
|
|
+
|
|
|
+.contents .is-plain[data-v-7f43c814] {
|
|
|
+ border: none;
|
|
|
+ background-color: transparent;
|
|
|
+}
|
|
|
+
|
|
|
+.contents .is-plain[data-v-7f43c814]:hover {
|
|
|
+ background-color: transparent;
|
|
|
+}
|
|
|
+
|
|
|
+.active {
|
|
|
+ color: #ff0000;
|
|
|
+}
|
|
|
+.active-t {
|
|
|
+ color: #dddddd;
|
|
|
+}
|
|
|
+.active-t:hover {
|
|
|
+ color: #ff0000;
|
|
|
+}
|
|
|
+</style>
|