瀏覽代碼

模板维护

zhouna 6 年之前
父節點
當前提交
947bba2754

+ 6 - 0
src/api/config.js

@@ -221,6 +221,12 @@ export default {
     'uploadImg':'/api/precman/file_prec/uploadImage',       //图片上传
     'fileDel':'/api/precman/file_prec/deleteRemoteFile',          //图片删除
     'questionDetail':'/api/precman/questionInfo_prec/getById',                //填写单详情
+    'moduleList':'/api/precman/moduleInfo_prec/getModuleInfoList',        //模板列表
+    'addModule':'/api/precman/moduleInfo_prec/saveModuleInfo',        //模板添加
+    'delModule':'/api/precman/moduleInfo_prec/delete',        //模板删除
+    'moduleDetail':'/api/precman/moduleInfo_prec/getModuleDetailInfo',    //模板详情
+    'deptList':'/api/precman/moduleInfo_prec/getAllDeptAndDisInfo',    //模板-科室列表
+
   },
 	menuIconList: { //菜单对应图标
 		'YH-KZT': 'el-icon-menu',

+ 16 - 2
src/api/preTreat.js

@@ -25,7 +25,21 @@ export default {
     return axios.post(urls.fileDel,param);
   },
   indexByLexicon(param) {
-    return axios.post(urls.indexByLexicon, param)
+    return axios.post(urls.indexByLexicon, param);
   },
-
+  getModuleList(param){
+    return axios.post(urls.moduleList, param);
+  },
+  getModuleDetail(param){
+    return axios.post(urls.moduleDetail, param);
+  },
+  addModule(param){
+    return axios.post(urls.addModule, param);
+  },
+  delModule(param){
+    return axios.post(urls.delModule, param);
+  },
+  getDeptList(param){
+    return axios.post(urls.deptList, param)
+  }
 }

+ 192 - 0
src/components/preTreat/AddQuestionModules.vue

@@ -0,0 +1,192 @@
+<template>
+    <div class="NoiseTemplateWrapper TemplateWrapper">
+        <crumbs
+                :title="txt"
+                class="topBack"
+                linkTo="/admin/LT-YWZSJWH-TJMBWH"
+        ></crumbs>
+        <PubIndeptQa
+                @changeVal="changeVal"
+                @changeSex="changeSex"
+                @changeType="changeType"
+                @validatePass="validatePass"
+                qaType="2"
+                :editData="editData"
+                ref="submitForm"
+        ></PubIndeptQa>
+        <div class="main">
+            <p class="title">
+                填写单明细:
+            </p>
+            <QuestionTagGroup :ascription="dataPub.region1" :sexType="dataPub.region7" :type="dataPub.region2" @changeActionData="pushValues" :options="editData.questionMapping"></QuestionTagGroup>
+            <div class="btn">
+                <el-button
+                        type="primary"
+                        @click="submitForm"
+                >确 定</el-button>
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+  /**
+   * dataPub.region2  判断底部显示哪些
+   */
+  import PubIndeptQa from './PubIndeptQa';
+  import QuestionTagGroup from './QuestionTagGroup';
+  import api from '@api/preTreat.js';
+  import utils from '@api/utils.js';
+
+  export default {
+    name: 'addCombinQuestion',
+    data() {
+      return {
+        txt:'组合填写单维护-添加组合填写单',
+        imgList:[],
+        dataPub: {},      //公用组件传的值都在这
+        itemsTypes:[1,2],            //有明细的类型
+        editData:{},                    //编辑数据
+        options: [],           //标签明细右侧操作数据
+      }
+    },
+    beforeMount:function(){
+      const {isEdit,data} = this.$route.params;
+      if(isEdit){
+        this.txt = '组合填写单维护-修改组合填写单';
+        this.editData = data;console.log(data)
+      }
+    },
+    methods: {
+      back() { this.$router.go(-1) },
+      changeVal(val) {    //子组件数据改变传递到父组件
+        this.dataPub = val;
+        //console.log('公用组件传的值都在这', val);
+      },
+      changeSex(sex) {       //性别改变,清空填写单明细
+        //console.log(sex)
+      },
+      changeType(type) {        //填写单类型改变,标签明细左侧更新,右侧清空
+        // console.log('type',type)
+        this.options = [];
+      },
+      pushValues(its){
+        const arr = its.map((it,i)=>{
+          return {
+            sonQuestion:it.id,
+            orderNo:+i+1,
+            exclusionType:0
+          }
+        });
+        this.options = arr;
+      },
+      submitForm() {      // 调用子组件的方法验证公用部分
+        this.$refs.submitForm.submitForm('groups');
+      },
+      validatePass() {      //验证成功回调,调取接口
+        //仍需验证填写单明细是否选择
+        if(parseFloat(this.dataPub.region8) >= parseFloat(this.dataPub.region9)) {
+          this.warning('最小年龄不能大于或等于最大年龄');
+          return;
+        }
+        if(parseFloat(this.dataPub.minNormalVal) >= parseFloat(this.dataPub.maxNormalVal)) {
+          this.warning('最小正常值不能大于或等于最大正常值');
+          return;
+        }
+        const {isEdit,data} = this.$route.params;
+        let param = {
+          "questionWrapper": {
+            //"controlType": this.dataPub.region2,                            //控件类型(0:默认值 1:下拉单选 2:下拉多选 6:文本框 7:数字键盘文本框 99:联合推送)
+            "id": isEdit?data.id:'',                                    //新增id置空
+            "type": this.dataPub.region1,                //填写单归属
+            "tagType": this.dataPub.region2,             //组合填写单类型
+            "tagName": this.dataPub.region3,             //系统名称
+            "name": this.dataPub.region4,                //医生界面名称
+            "description":this.dataPub.region5,
+            "sexType": this.dataPub.region7,             //1:男,2:女,3:通用
+            "ageBegin": this.dataPub.region8,       		 //最小年龄
+            "ageEnd": this.dataPub.region9,              //最大年龄
+            "itemType" :this.dataPub.region12,           //是否为主要内容
+            "url":this.dataPub.region13,                  //上传图片
+            //"questionDetails": this.options,                //明细项
+            "questionMappings": this.options,      //映射关系,
+          }
+        };
+        this.showSaveDialog(param);
+      },
+      showSaveDialog(param) {
+        this.showConfirmDialog('是否保存该填写单?', () => {
+          api.questionAdd(param).then((res) => {
+            if (res.data.code === '0') {
+              this.warning(res.data.msg || '保存成功', 'success');
+              this.$router.push("/admin/LT-YWZSJWH-MBWH");
+            } else {
+              this.warning(res.data.msg)
+            }
+          }).catch((err) => {
+            this.warning(err);
+          })
+        });
+      },
+      showConfirmDialog(msg, resolve) {
+        this.$alert(msg, '提示', {
+          confirmButtonText: '确定',
+          type: 'warning'
+        }).then(() => {
+          resolve();
+        }).catch(() => {});
+      },
+      warning(msg, type) {
+        this.$message({
+          showClose: true,
+          message: msg,
+          type: type || 'warning'
+        })
+      },
+    },
+    components: {
+      PubIndeptQa,
+      QuestionTagGroup
+    }
+  }
+</script>
+<style lang="less">
+    @import "../../less/common.less";
+    .NoiseTemplateWrapper {
+    .groupTitle {
+        background-color: #fff;
+        height: 40px;
+        line-height: 40px;
+        padding-left: 20px;
+    }
+    .main {
+        background-color: #fff;
+        margin: 0 20px 20px;
+        padding: 20px;
+        border-top: 1px solid @icssBorder;
+        box-sizing: border-box;
+        font-size: 14px;
+        color: #606266;
+    .title {
+        margin-bottom: 20px;
+    i {
+        color: #f56c6c;
+    }
+    }
+    }
+    .btn {
+        text-align: right;
+    }
+    .order {
+        margin-bottom: 20px;
+    .el-input__inner {
+        line-height: 30px;
+        height: 30px;
+    }
+    }
+    }
+    .toast-cancel{
+        color: #22ccc8 !important;
+    // background: #22ccc8;
+    }
+</style>
+

+ 0 - 0
src/components/preTreat/QuestionGroup.vue


+ 254 - 0
src/components/preTreat/QuestionModules.vue

@@ -0,0 +1,254 @@
+<template>
+    <div>
+        <crumbs title="模板维护">
+            <el-form :inline="true" class="demo-form-inline">
+                <el-form-item label="模板名称:">
+                    <el-input size="mini" v-model="filter.name" placeholder="模板名称" clearable></el-input>
+                </el-form-item>
+                <el-form-item label="归属:">
+                    <el-select size="mini" v-model="filter.ascriptName" @change="getValue"  placeholder="归属" clearable>
+                        <el-option v-if="item.val!=6&&item.val!=7&&item.val!=8&&item.val!=9&&item.val!=10&&item.val!=21&&item.val!=22" v-for="item in Adscriptions" :label="item.name" :value="item.val" :key="item.id" ></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="类型:">
+                    <el-select size="mini" v-model="filter.mouduleTypeName" placeholder="类型" clearable>
+                        <el-option v-for="item in tagTypes" :label="item.name" :value="item.val" :key="item.id"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="归属科室:">
+                    <el-select size="mini" v-model="filter.relationName" @change="getValue"  placeholder="归属" clearable>
+                        <el-option v-if="item.val!=6&&item.val!=7&&item.val!=8&&item.val!=9&&item.val!=10&&item.val!=21&&item.val!=22" v-for="item in Adscriptions" :label="item.name" :value="item.val" :key="item.id" ></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item>
+                    <el-button size="mini" @click="filterDatas">确认</el-button>
+                    <el-button size="mini" type="warning" @click="addIndeptTag">添加模板</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="gmtModified"
+                        label="操作时间"
+                        width="180">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="name"
+                        label="模板名称">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="ascriptionName"
+                        label="模板归属"
+                        width="80">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="moduleType"
+                        label="模板类型">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="relationName"
+                        label="归属科室">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="modifier"
+                        label="操作人"
+                        width="120">
+                </el-table-column>
+                <el-table-column
+                        :resizable = "false"
+                        prop="operate"
+                        label="操作"
+                        width="120">
+                    <template slot-scope="scope">
+                        <el-button  @click="modifyIndeptTag(scope.row)" type="text" size="small">修改</el-button>
+                        <span style="margin:0 3px;">|</span>
+                        <el-button @click="showDelDialog(scope.row)" class="delete" type="text" size="small">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <el-pagination v-if="total>pageSize"
+                           :current-page.sync="currentPage"
+                           @current-change="currentChange"
+                           background
+                           :page-size="pageSize"
+                           layout="total,prev, pager, next, jumper"
+                           :total="total">
+            </el-pagination>
+        </div>
+    </div>
+</template>
+
+<script>
+  import api from '@api/preTreat.js';
+
+  export default {
+    name: 'QuestionModules',
+    data: function() {
+      return {
+        list: [],
+        tagTypes: [],
+        Adscriptions: [],
+        tagTypesList:[],
+        filter: {
+          name: '', //模板名称
+          ascriptName: '', //模板归属
+          mouduleTypeName: '', //模板类型
+          relationName:'',  //归属科室
+        },
+        currentPage: 1,
+        pageSize: 10,
+        total: 0,
+      }
+    },
+    created() {
+      this.getDropList();
+    },
+    methods: {
+      getValue(val) {
+        console.log('changeVal', val, this.filter.tagAdscription)
+      },
+      getDropList() {
+        api.getPreTypeList().then((res) =>{
+          this.getDataList();
+          if(res.data.code === '0') {
+            this.Adscriptions = res.data.data[1];
+            this.tagTypes =  res.data.data[3];
+            this.tagTypes =  this.tagTypes.filter(item => item.val != 0)  //去掉名称为默认值的填写单类型
+
+          }
+
+        })
+      },
+      getDataList() {
+        const param = this.getFilterItems();
+        api.getModuleList(param).then((res) => {
+          const list = [...res.data.data.records];
+          for (var i = 0; i < list.length; i++) {
+            for (var j =  0; j < this.tagTypes.length; j++) {
+              if(list[i].controlType == this.tagTypes[j].val) {
+                list[i].tagTypeCn = this.tagTypes[j].name;
+              }
+            }
+            //后台数据typeCn转换为筛选中对应的字段名称
+            for (var z =  0; z < this.Adscriptions.length; z++) {
+              if(list[i].type == this.Adscriptions[z].val) {
+                list[i].typeCn = this.Adscriptions[z].name;
+              }
+            }
+          }
+          this.list = list;
+          this.total = res.data.data.total;
+        })
+      },
+      filterDatas() {
+        this.currentPage = 1;
+        this.getDataList();
+      },
+      addIndeptTag() {
+        this.$router.push({path:'LT-YWZSJWH-TJMBWH'});
+      },
+      modifyIndeptTag(row) {
+        api.questionDetail({id:row.id}).then((res)=>{
+          const {code,data,msg} = res.data;
+          if(code=='0'){
+            const item = Object.assign({},row,data);
+            this.$router.push({name:'AddQuestionModules',params:{isEdit:true,data:item}});
+          }else{
+            this.$message({
+              message: msg,
+              type: 'warning'
+            });
+          }
+        });
+      },
+      currentChange(next) {
+        this.currentPage = next;
+        this.getDataList();
+      },
+      getFilterItems() {
+        const param = {
+          name: this.filter.name,
+          ascriptName:this.filter.ascriptName,
+          mouduleTypeName: this.filter.mouduleTypeName,
+          relationName: this.filter.relationName,
+          current: this.currentPage,
+          size: this.pageSize,
+        };
+        return param;
+      },
+      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(() => {});
+      },
+      showDelDialog(row){
+        const param = {
+          "ids": row.id,
+          "type": row.type
+        };
+        this.showConfirmDialog('是否删除该填写单?',()=>{
+          api.questionDel(param).then((res)=>{
+            if(res.data.code=='0'){
+              this.getDataList();
+              this.warning(res.data.msg || '操作成功','success');
+            }else{
+              this.warning(res.data.msg);
+            }
+          }).catch((error)=>{
+            this.warning(error);
+          })
+        });
+      }
+    }
+  }
+</script>
+
+
+<style lang="less">
+    @import "../../less/admin.less";
+    .delete{
+        color: red
+    }
+    .delete:hover {
+        color: red;
+    }
+    .el-select .el-input .el-icon-arrow-up{
+        display: inline-block!important;
+    }
+    .el-select .el-input .el-icon-circle-close{
+        float:left;
+    }
+</style>

+ 5 - 2
src/routes.js

@@ -88,9 +88,10 @@ import MedicalType from '@components/icss/MedicalType.vue'//医学术语维护-
 //预问诊
 import SimpleQuestion from '@components/preTreat/SimpleQuestion.vue';
 import CombinQuestion from '@components/preTreat/CombinQuestion.vue';
-import QuestionGroup from '@components/preTreat/QuestionGroup.vue';
 import AddSimpleQuestion from '@components/preTreat/AddSimpleQuestion.vue';
 import AddCombinQuestion from '@components/preTreat/AddCombinQuestion.vue';
+import QuestionModules from '@components/preTreat/QuestionModules.vue';
+import AddQuestionModules from '@components/preTreat/AddQuestionModules.vue';
 
 export default [
   {
@@ -246,9 +247,11 @@ export default [
 
       {path:'LT-YWZSJWH-DLTXDWH',component:SimpleQuestion,name:'SimpleQuestion'},  //预问诊-独立填写单
       {path:'LT-YWZSJWH-ZHTXDWH',component:CombinQuestion,name:'CombinQuestion'},  //预问诊-组合填写单
-      {path:'LT-YWZSJWH-MBWH',component:QuestionGroup,name:'QuestionGroup'},  //预问诊-模板
       {path:'LT-YWZSJWH-TJDLTXD',component:AddSimpleQuestion,name:'AddSimpleQuestion'},  //预问诊-添加独立填写单
       {path:'LT-YWZSJWH-TJZHTXD',component:AddCombinQuestion,name:'AddCombinQuestion'},  //预问诊-添加组合填写单
+      {path:'LT-YWZSJWH-MBWH',component:QuestionModules,name:'QuestionModules'},  //预问诊-模板维护
+      {path:'LT-YWZSJWH-TJMBWH',component:AddQuestionModules,name:'AddQuestionModules'},  //预问诊-添加模板
+
 
     ]
   }