morphone1995 4 lat temu
rodzic
commit
cf18663ce1

+ 8 - 0
src/api/config.js

@@ -66,6 +66,14 @@ export default {
     'getHospitalInfo': '/tran/hospitalInfo/getHospitalInfo',   //医院信息——获取医院信息
     'saveHospitalInfoRecord': '/tran/hospitalInfo/saveRecord',   //医院信息——修改医院信息
 
+    'cancelPlanDatas': '/sys/plan/cancelPlanDatas',   //删除方案配置信息
+    'getDefaultPlans': '/sys/plan/getDefaultPlans',   //获取默认方案配置
+    'getPlanInfoIds': '/sys/plan/getPlanInfoIds',   //根据方案id获取配置信息
+    'getPlanInfoPages': '/sys/plan/getPlanInfoPages',   //分页获取方案配置信息
+    'getSysPlanInfoDatas': '/sys/plan/getSysPlanInfoDatas',   //根据医院获取方案配置信息
+    'revStopPlans': '/sys/plan/revStopPlans',   //停用启用方案配置
+    'savePlanInfoDatas': '/sys/plan/savePlanInfoDatas',   //保存更新方案配置信息
+
     'getAccessdMenu': '/sys/user/getUserOrgMenu',  //获取左侧菜单项
     'delConceptInfo':'/graph/conceptInfo/changeStatus',   //删除术语静态知识
     'login': '/sys/user/getJwt',

+ 19 - 0
src/api/icss.js

@@ -196,4 +196,23 @@ export default {
   saveHospitalInfoRecord(param) {
     return axios.post(urls.saveHospitalInfoRecord, param);
   },
+
+
+  getPlanInfoPages(param) {
+    //分页获取方案配置信息
+    return axios.post(urls.getPlanInfoPages, param);
+  },
+  getDefaultPlans(param) {
+    return axios.post(urls.getDefaultPlans, param);
+  },
+  savePlanInfoDatas(param) {
+    return axios.post(urls.savePlanInfoDatas, param);
+  },
+  cancelPlanDatas(param) {
+    return axios.post(urls.cancelPlanDatas, param);
+  },
+  getPlanInfoIds(param) {
+    return axios.post(urls.getPlanInfoIds, param);
+  },
+
 };

+ 1 - 1
src/api/index.js

@@ -5,7 +5,7 @@ axios.default.timeout = 500000;
 axios.defaults.headers.post['Content-Type'] = "application/json;charset=utf-8";
 axios.defaults.baseURL = 'http://192.168.2.236:6060';
 // axios.defaults.baseURL = 'http://192.168.2.241';
-// axios.defaults.baseURL = 'http://192.168.3.117:5050';
+// axios.defaults.baseURL = 'http://192.168.3.113:6060';
 
 const urls = config.urls;
 export default {

+ 1 - 1
src/components/icss/correlation/Correlation.vue

@@ -8,7 +8,7 @@
             v-if="showInfo"
             v-model="form.value"
             active-color="#4BC4D7"
-            inactive-color="#ff4949"
+            inactive-color="#BBBBBB"
             @change="handleChange($event,form.value)"
             :disabled="disabled"
           ></el-switch>

+ 327 - 0
src/components/icss/plan/AddPlan.vue

@@ -0,0 +1,327 @@
+<template>
+  <div class="AddPlanWrapper clearfix" @click="close">
+    <crumbs title="电子病历方案配置-添加方案" class="topBack" :param="$route.params" linkTo="Plan"></crumbs>
+    <div class="AddPlanBox">
+      <el-form ref="form" :model="form" label-width="80px" :rules="rules">
+        <el-form-item label="方案名称" prop="planName">
+          <el-input v-model="form.planName"></el-input>
+        </el-form-item>
+        <el-form-item label="方案编码" prop="planCode">
+          <el-input v-model="form.planCode"></el-input>
+        </el-form-item>
+        <el-form-item label="方案配置">
+          <ul>
+            <li>
+              <div class="title">
+                <h4>辅助信息</h4>
+                <div class="titlwSwitch">
+                  <el-switch
+                    v-model="switchSubStatus"
+                    :active-value="1"
+                    :inactive-value="0"
+                    active-color="#4BC4D7"
+                    inactive-color="#BBBBBB"
+                  ></el-switch>
+                  <span class="titlwSwitchStatus">{{switchSubStatus === 1 ? '启用中' : '未启用'}}</span>
+                </div>
+              </div>
+              <ul class="sub" v-for="(item,index) in  planDefaultList" :key="item.id">
+                <li class="planItem">
+                  <div class="sort">
+                    <div
+                      class="down"
+                      @click="sortPlan('down')"
+                      v-if="index !== planDefaultList.length - 1"
+                    >下</div>
+                    <div class="top" @click="sortPlan('top')" v-if="index !== 0">上</div>
+                  </div>
+                  <div class="openOrClose">
+                    <span class="planInfo">{{item.name}}</span>
+                    <div class="switch">
+                      <el-switch
+                        v-model="item.status"
+                        :active-value="1"
+                        :inactive-value="0"
+                        active-color="#4BC4D7"
+                        inactive-color="#BBBBBB"
+                      ></el-switch>
+                    </div>
+                    <span class="planStatus">{{item.status === 1 ? '启用中' : '未启用'}}</span>
+                  </div>
+                  <div class="showNum" v-if="item.number">
+                    <span style="marginRight:8px;">默认显示个数</span>
+                    <el-select v-model="item.number" placeholder="请选择" size="small">
+                      <el-option label="1" value="1"></el-option>
+                      <el-option label="2" value="2"></el-option>
+                      <el-option label="3" value="3"></el-option>
+                      <el-option label="4" value="4"></el-option>
+                      <el-option label="5" value="5"></el-option>
+                      <el-option label="6" value="6"></el-option>
+                    </el-select>
+                  </div>
+                </li>
+              </ul>
+            </li>
+            <li>
+              <div class="title">
+                <h4>医学知识</h4>
+                <div class="titlwSwitch">
+                  <el-switch
+                    v-model="switchMedStatus"
+                    :active-value="1"
+                    :inactive-value="0"
+                    active-color="#4BC4D7"
+                    inactive-color="#BBBBBB"
+                  ></el-switch>
+                  <span class="titlwSwitchStatus">{{switchMedStatus === 1 ? '启用中' : '未启用'}}</span>
+                </div>
+              </div>
+            </li>
+          </ul>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="onSubmit" :disabled="saveDisable">确定添加</el-button>
+        </el-form-item>
+      </el-form>
+    </div>
+  </div>
+</template>
+<script>
+import api from '@api/icss.js';
+
+export default {
+  name: 'AddPlan',
+  data() {
+    return {
+      form: {
+        planName: '',
+        planCode: ''
+      },
+      saveDisable: false, //保存按钮禁止点击
+      rules: {
+        planName: [
+          { required: true, message: '方案名称不能为空', trigger: 'change' }
+        ],
+        planCode: [
+          { required: true, message: '方案编码不能为空', trigger: 'change' }
+        ]
+      },
+      planDefaultList: [],
+      hospitalId: '',
+      isEdit: false, // 是否处于编辑页面 false--新增   true--编辑
+      switchSubStatus: 0, // 辅助信息
+      switchMedStatus: 0 // 医学知识
+    };
+  },
+  async created() {
+    const { isEdit, data } = this.$route.params;
+    // console.log(data, '编辑页传递的data');
+    let res = await api.getHospitalInfo(); // 同步获取医院信息
+    this.hospitalId = res.data.data.id;
+    if (isEdit) {
+      // 编辑页面
+      this.isEdit = true;
+      let params = {
+        hospitalId: res.data.data.id,
+        id: data.id
+      };
+      this._getPlanInfoIds(params);
+    } else {
+      // 新增页面
+      this._getDefaultPlans(); // 获取默认配置信息
+    }
+  },
+  methods: {
+    close() {},
+    // 方案配置排序
+    sortPlan(type) {
+      console.log('排序', type);
+    },
+
+    // 获取默认方案配置
+    _getDefaultPlans() {
+      api.getDefaultPlans().then(res => {
+        // console.log(res, '获取默认的方案配置');
+        if (res.data.code === '0') {
+          this.planDefaultList =
+            res.data.data &&
+            res.data.data.planDetailDefault &&
+            res.data.data.planDetailDefault[0].planDetails;
+          this.switchSubStatus =
+            res.data.data &&
+            res.data.data.planDetailDefault &&
+            res.data.data.planDetailDefault[0].status;
+          this.switchMedStatus =
+            res.data.data &&
+            res.data.data.planDetailDefault &&
+            res.data.data.planDetailDefault[1].status;
+        }
+      });
+    },
+
+    // 编辑页面 根据id获取方案配置
+    _getPlanInfoIds(params) {
+      api.getPlanInfoIds(params).then(res => {
+        if (res.data.code === '0') {
+          this.planDefaultList = res.data.data[0].sysSetInfo[0].planDetails;
+          this.form.planName = res.data.data[0].planName;
+          this.form.planCode = res.data.data[0].planCode;
+          this.switchSubStatus = res.data.data[0].sysSetInfo[0].status;
+          this.switchMedStatus = res.data.data[0].sysSetInfo[1].status;
+        }
+      });
+    },
+
+    // format处理细项数据
+    handleSendData() {
+      let TempPlanDetail = [];
+      TempPlanDetail = this.planDefaultList.map((item, index) => {
+        return {
+          code: item.code,
+          hospitalId: this.hospitalId,
+          name: item.name,
+          number: item.number,
+          orderNo: item.orderNo,
+          planId: item.planId,
+          remark: item.remark,
+          status: item.status,
+          value: item.value
+        };
+      });
+      return TempPlanDetail;
+      // console.log(TempPlanDetail, 'TempPlanDetail');
+    },
+
+    // 处理保存活动信息参数
+    _getParams() {
+      let params = {
+        hospitalId: this.hospitalId,
+        planCode: this.form.planCode,
+        planDetailParent: [
+          {
+            code: 'auxiliary',
+            hospitalId: this.hospitalId,
+            name: '辅助信息',
+            number: 0,
+            orderNo: 1,
+            planDetailSub: this.handleSendData(),
+            status: this.switchSubStatus,
+          },
+          {
+            code: 'medical',
+            hospitalId: this.hospitalId,
+            name: '医学知识',
+            orderNo: 3,
+            planDetailSub: [{}],
+            status: this.switchMedStatus,
+          }
+        ], // 方案配置信息
+        planName: this.form.planName,
+        planStatus: 1,
+      };
+      if (this.isEdit){
+        // 编辑状态,需要额外添加ID 
+        const {  data } = this.$route.params;
+        params = {...params,id: data.id}
+      }
+      return params;
+    },
+
+    onSubmit() {
+      this.$refs.form.validate(valid => {
+        if (valid) {
+          this.saveDisable = true
+          let params = this._getParams();
+          api.savePlanInfoDatas(params).then(res => {
+            if (res.data.code === '0') {
+              this.$message({
+                showClose: true,
+                message: '操作成功',
+                type: 'success'
+              });
+            } else if (res.data.code === '00020007') {
+              // 方案名/方案编码已存在
+              this.$message({
+                showClose: true,
+                message: res.data.msg,
+                type: 'error'
+              });
+            }
+            this.saveDisable = false
+          });
+        } else {
+          this.saveDisable = false
+          return false;
+
+        }
+      });
+    }
+  }
+};
+</script>
+<style lang="less">
+.AddPlanWrapper {
+  min-width: 940px;
+  .AddPlanBox {
+    padding: 20px 60px 120px 60px;
+    margin: 70px 20px 0 20px;
+    background: #fff;
+  }
+  color: #606266;
+  .topBack {
+    top: 0;
+  }
+  .title {
+    background-color: #f2f2f2;
+    display: flex;
+    .titlwSwitch {
+      width: 120px;
+    }
+    h4 {
+      flex: 1;
+    }
+    .titlwSwitchStatus{
+      margin-left: 16px;
+    }
+  }
+  .sub {
+    .planItem {
+      display: flex;
+      .sort {
+        width: 60px;
+        display: flex;
+        .top {
+          width: 30px;
+          cursor: pointer;
+        }
+        .down {
+          width: 30px;
+          cursor: pointer;
+        }
+      }
+      .openOrClose {
+        display: flex;
+        flex: 1;
+        .planInfo {
+          width: 140px;
+        }
+        .switch {
+        }
+        .planStatus {
+          margin-left: 16px;
+        }
+      }
+      .showNum {
+        display: flex;
+        width: 320px;
+        /deep/.el-input--small {
+          width: 60px;
+        }
+      }
+    }
+  }
+  .el-button {
+    float: right;
+  }
+}
+</style>

+ 307 - 0
src/components/icss/plan/Plan.vue

@@ -0,0 +1,307 @@
+<template>
+  <div>
+    <crumbs title="电子病历页面方案配置" style="min-width: 980px">
+      <el-form :inline="true" class="demo-form-inline">
+        <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%">
+        <el-table-column :resizable="false" type="index" :index="indexMethod" label="编号" width="60"></el-table-column>
+        <el-table-column :resizable="false" prop="planName" label="方案名称" width="180"></el-table-column>
+        <el-table-column :resizable="false" prop="planCode" label="方案编码" show-overflow-tooltip></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></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"
+            >修改</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="delete" v-if="scope.row.planStatus === 1">禁用</el-button>
+            <el-button type="text" size="small" @click="enableOrAble" v-else>启用</el-button>
+            <span style="margin:0 3px;">|</span>
+            <el-button
+              @click="showDelDialog(scope.row.id)"
+              class="delete"
+              type="text"
+              size="small"
+            >删除</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/icss.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: '' //标准诊断名称
+      },
+      currentPage: 1,
+      pageSize: config.pageSize,
+      pageSizeArr: config.pageSizeArr,
+      pageLayout: config.pageLayout,
+      total: 0,
+      hospitalId: ''
+    };
+  },
+  created() {
+    const that = this;
+    //返回时避免参数未赋值就获取列表
+    setTimeout(function() {
+      that.getDataList();
+    });
+    this._getHospital();
+  },
+  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();
+    },
+
+    // 获取列表数据
+    getDataList(isTurnPage) {
+      const params = this.getFilterItems(isTurnPage);
+      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 => {
+        loading.close();
+        if (res.data.code === '0') {
+          this.list = res.data.data && res.data.data.records;
+        }
+        this.total = res.data.data && res.data.data.total;
+        if (this.inCurrentPage !== undefined) {
+          this.currentPage = this.inCurrentPage;
+          this.inCurrentPage = undefined;
+        }
+      });
+    },
+
+    // 处理列表请求数据参数
+    getFilterItems(isTurnPage) {
+      //翻页时筛选条件没点确定则清空
+      if (isTurnPage && !this.searched) {
+        this.clearFilter();
+      }
+      const param = {
+        current: this.inCurrentPage || this.currentPage,
+        size: this.pageSize,
+        planName: this.filter.planName.trim()
+        // planCode: ''
+      };
+      return param;
+    },
+
+    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 })
+      });
+    },
+    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) {
+      this.$alert(msg, '提示', {
+        confirmButtonText: '确定',
+        type: 'warning'
+      })
+        .then(() => {
+          resolve();
+        })
+        .catch(() => {});
+    },
+    // 获取医院信息
+    _getHospital() {
+      api.getHospitalInfo().then(res => {
+        if (res.data.code === '0') {
+          this.hospitalId = res.data.data.id;
+        }
+      });
+    },
+    // 删除关联
+    showDelDialog(id) {
+      this.showConfirmDialog('是否删除该方案配置?', () => {
+        let params = {
+          planId: id,
+          hospitalId: this.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 => {
+            this.warning(error);
+          });
+      });
+    },
+
+    // 启用/禁用
+    enableOrAble(){
+      console.log('启用');
+    }
+  }
+};
+</script>
+
+
+<style lang="less">
+@import '../../../less/admin.less';
+.delete {
+  color: red;
+}
+.delete:hover {
+  color: red;
+}
+.pagination {
+  min-width: 1010px;
+}
+.exportBox {
+  /deep/ .el-message-box__btns {
+    margin-top: 20px;
+  }
+  /deep/ .el-message-box__message {
+    text-align: center;
+  }
+  /deep/ .el-message-box__btns {
+    text-align: center;
+    margin-bottom: 24px;
+  }
+  /deep/ .leftbtn {
+    margin-right: 46px;
+    background-color: #d7d7d7;
+    border-color: transparent;
+  }
+}
+.contents {
+  .is-plain {
+    color: #dad7d7;
+  }
+  .is-plain:hover {
+    color: #dad7d7;
+  }
+}
+</style>

+ 6 - 0
src/routes.js

@@ -33,6 +33,9 @@ import ImportDeptRecord from '@components/icss/dept/ImportDeptRecord.vue';  //
 
 import Correlation from '@components/icss/correlation/Correlation.vue';  //关联维护设置
 
+import Plan from '@components/icss/plan/Plan.vue';  //关联维护设置
+import AddPlan from '@components/icss/plan/AddPlan.vue';  //关联维护设置
+
 export default [
   {
     path: '/',
@@ -87,6 +90,9 @@ export default [
       { path: 'LT-KSGLWH-DRSJ', component: ImportDeptRecord, name: 'ImportDeptRecord' }, //科室关联维护--导入数据
 
       { path: 'YXSYK-GLWH', component: Correlation, name: 'Correlation' }, //关联维护设置
+
+      { path: 'XTPZ-DZBLFAPZ', component: Plan, name: 'Plan' }, //电子病历方案配置
+      { path: 'LT-DZBLFAPZ-EDIT', component: AddPlan, name: 'AddPlan' }, //电子病历方案配置--新增编辑
     ],
   },
 ];