Browse Source

Merge branch 'dev2/zhangxc' into dev2/luolei

Luolei 6 years ago
parent
commit
f07a00fd43

+ 3 - 0
src/api/config.js

@@ -87,6 +87,9 @@ export default {
     'getTagList': 'api/icssman/questionInfo/list', //标签列表
     'searchTagList': 'api/icssman/questionInfo/index', //标签池检索
     'detailsTagList': 'api/icssman/questionInfo/getByIds', //根据多个标签ID返回标签内容
+    'getDeptInfo': 'api/icssman/deptInfo/getDeptInfo', //科室维护
+    'getDeptInfoDetials': 'api/icssman/deptInfo/getDeptInfoDetials', //科室维护-详情
+    'deleteDeptInfo': 'api/icssman/deptInfo/deleteDeptInfo', //科室维护-删除
     'saveOrUpdate': 'api/icssman/questionInfo/saveOrUpdate', //添加标签保存
 	},
 	menuIconList: { //菜单对应图标

+ 9 - 0
src/api/icss.js

@@ -18,6 +18,15 @@ export default {
     detailsTagList(param) {
         return axios.post(urls.detailsTagList, param)
     },
+    getDeptInfo(param) {//科室维护
+        return axios.post(urls.getDeptInfo, param)
+    },
+    getDeptInfoDetials(param) {//科室维护-详情
+        return axios.post(urls.getDeptInfoDetials, param)
+    },
+    deleteDeptInfo(param) {//科室维护-详情
+        return axios.post(urls.deleteDeptInfo, param)
+    },
     saveOrUpdate(param) {
         return axios.post(urls.saveOrUpdate, param)
     },

+ 197 - 0
src/components/icss/DeptInfo.vue

@@ -0,0 +1,197 @@
+<template>
+    <div>
+        <crumbs title="icss科室维护系统">
+            <el-form :inline="true" class="demo-form-inline">
+                <el-form-item label="科室名称:">
+                    <el-input size="mini" v-model="filter.proName" placeholder="科室名称"></el-input>
+                </el-form-item>
+                <el-form-item>
+                    <el-button size="mini" @click="filterDatas">确认</el-button>
+                    <router-link to="/admin/LT-YXSJWH-TJKS" style="margin:0 10px">
+                        <el-button size="mini" type="warning">添加科室</el-button>
+                    </router-link>
+                </el-form-item>
+            </el-form>
+        </crumbs>
+        <div class="contents">
+            <el-table :data="list"
+                      border
+                      style="width: 100%">
+                <el-table-column
+                        type="index"
+                        :index="indexMethod"
+                        label="编号"
+                        width="60">
+                </el-table-column>
+                <el-table-column
+                        prop="gmtCreate"
+                        label="操作时间"
+                        :show-overflow-tooltip="true">
+                </el-table-column>
+                <el-table-column
+                        prop="name"
+                        label="科室名称">
+                </el-table-column>
+                <el-table-column
+                        prop="userName"
+                        label="操作人"
+                        width="180">
+                </el-table-column>
+                
+                <el-table-column
+                        label="操作" width="200">
+                    <template slot-scope="scope">
+                        <el-button type="text" size="small" @click="toEditProduct(scope.row)">修改</el-button>
+                        <span style="margin:0 3px;">|</span>
+                        <el-button type="text" size="small" @click="showDelDialog(scope.row.id)">删除</el-button>
+                    </template>
+                </el-table-column>
+                <el-table-column
+                        label="详情">
+                    <template slot-scope="scope">
+                        <el-button type="text" size="small" @click="getDetailList(scope.row.id)">详情</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/icss.js';
+  import utils from '@api/utils.js';
+
+  export default {
+    name: 'depart-info',
+    data: function () {
+      return {
+        list: [],
+        cacheData: {},
+        currentPage: 1,
+        pageSize: 10,
+        total: 0,
+        linkIn:[],
+        pays:[],
+        filter: {
+          proName: ''
+        }
+      }
+    },
+    created() {
+      this.getDataList();
+    },
+    methods: {
+      toEditProduct(row){
+        this.$router.push({
+          name:'editDeptInfo',
+          params: {info:row}
+        })
+      },
+      filterDatas(){
+        this.currentPage = 1;
+        this.getDataList();
+      },
+      getDataList() {
+        const param = this.getFilterItems();
+        // const param = {
+        //   'name':''
+        // };
+        api.getDeptInfo(param).then((res) => {
+          if (res.data.code == '0') {
+            const data = res.data.data;
+            this.list = data.records;
+            this.cacheData[param.current] = data.records;
+            this.total = data.total;
+          }
+        }).catch((error) => {
+          console.log(error);
+        });
+      },
+      getDetailList(id) {
+        const param = {'id': id,};
+        this.$router.push({name:'DeptInfoDetail', params:{id: id}})
+        /*api.getDeptInfoDetials(param).then((res) => {
+          if (res.data.code == '0') {
+            this.$router.push({name:'DeptInfoDetail', params:{id: id}})
+            // console.log("详情接口调用成功");
+          } else {
+            this.$message({
+              showClose: true,
+              message:res.data.msg,
+              type:'warning'
+            });
+            this.getDataList()  //刷新列表
+          }
+        }).catch((error) => {
+          console.log(error);
+        });*/
+      },
+      getFilterItems() {
+        const param = {
+          name: this.filter.proName,
+          current: this.currentPage,
+          size: this.pageSize
+        };
+        return param;
+      },
+      indexMethod(index) {
+        return ((this.currentPage - 1) * this.pageSize) + index + 1;
+      },
+      currentChange(next) {
+        this.currentPage = next;
+        if (this.cacheData[next]) {       //如果已请求过该页数据,则使用缓存不重复请求
+          this.list = this.cacheData[next];
+        } else {
+          this.getDataList();
+        }
+      },
+      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(id){
+        this.showConfirmDialog('是否删除该科室?',()=>{
+          api.deleteDeptInfo({id}).then((res)=>{
+            if(res.data.code=='0'){
+              this.warning(res.data.msg||'操作成功','success');
+              this.getDataList();
+            }else{
+              this.warning(res.data.msg);
+            }
+          }).catch((error)=>{
+            this.warning(error);
+          })
+        });
+      }
+    }
+  }
+</script>
+
+<style lang="less">
+    @import "../../less/admin.less";
+    .status-span{
+        font-size: 12px;
+        margin-right:10px;
+        color: unset;
+    }
+</style>

+ 47 - 0
src/components/icss/DeptInfoDetail.vue

@@ -0,0 +1,47 @@
+<template>
+  <div>
+    <crumbs title="icss科室维护系统-详情" linkTo="/admin/LT-YXSJWH-KSWH"></crumbs>
+    <div class="contents">
+      <div>
+        <span>科室名称:{{data.name}}</span>
+        <span></span>
+      </div>
+      <div>
+        <span>描述:{{data.remark}}</span>
+        <span></span>
+      </div>
+    </div>   
+  </div>
+</template>
+<script type="text/javascript">
+  import api from '@api/icss.js';
+  export default{
+    name:'DeptInfoDetail',
+    data(){
+      return{
+        data:{},
+        id:''
+      }
+    },
+    created(){
+      this.id = this.$route.params.id;
+      this.getDetail();
+    },
+    methods:{
+      getDetail(){
+        const param = {'id':this.id}
+        api.getDeptInfoDetials(param).then((res)=>{
+          let result = res.data;
+          if(result.code==0){
+            this.data = result.data;
+          }else{
+            console.log(result.msg);
+          }
+        })
+      }
+    }
+  }
+</script>
+<style lang="less">
+  @import "../../less/admin.less";
+</style>

+ 6 - 4
src/components/icss/NoiseTemplate.vue

@@ -23,10 +23,12 @@
         v-show="dataPub.region2 == 2 || dataPub.region2 == 6"
         @changeActionData="changeActionData"
       ></PubTagPartDetail>
-      <SymptomTagGroup
-        v-if="dataPub.region2 == 4"
-        :dataPub="this.dataPub"
-      ></SymptomTagGroup>
+      <SymptomTagGroup 
+        v-if="dataPub.region2 == 4" 
+        :pool="dataPub.tagPool" 
+        :type="dataPub.region1">
+
+      </SymptomTagGroup>
       <el-form
         v-if="dataPub.region2 == 2"
         class="order"

+ 149 - 40
src/components/icss/SymptomTagGroup.vue

@@ -3,14 +3,23 @@
     <div class="bottomPartLeft fl">
       <p class="poolTitle">标签池</p>
       <div class="pool">
-        <input class="search" @input="searchTag"/>
+        <el-input
+          placeholder="请输入搜索内容"
+          v-model="searchVal"
+        >
+            <i
+                slot="prefix"
+                class="el-input__icon el-icon-search"
+            ></i>
+        </el-input>
         <ul class="tagList">
-            <li class = "tagItem"
-                v-for="item in leftTagsList" 
+            <li v-for="(item, index) in leftTagsList"
+                class = "tagItem"
                 :key='item.id'
-                @click='selectLeftTag(item)'
+                :style="getStyle(item)?styles:null"
+                @click='selectLeftTag(item, index, $event)'
             >
-                <p class="tagName">{{item.tagName}} </p>
+                <p class="tagName" >{{item.tagName}} </p>
             </li>
         </ul>
       </div>
@@ -23,38 +32,84 @@
       <p class="poolTitle">操作池</p>
       <ul class="tagList">
             <li class = "tagItem"
-                v-for="item in rightTagsList" 
-                :key='item.id'
+                v-for="(item, index) in rightTagsList2" 
+                :key='index'
+                :style="getStyle2(item)?styles:null"
                 @click='selectRightTag(item)'
-            >
-                <p class="tagName">{{item.tagName}} </p>
+            >   
+                <div>
+                    <el-input
+                        v-if="item.text"
+                        placeholder=""
+                        v-model="item.text"
+                    >
+                    </el-input>
+                </div>
+                <p v-if="item.tagName" class="tagName">{{item.tagName}} </p>
+                <p v-if="item.symptomType === 1">跟主症状</p>
+                <p v-if="item.symptomType === 2">跟伴随症状</p>
             </li>
         </ul>
     </div>
+    <div :style="{widt: '20%'}">
+        <el-button type="primary" @click="mainSymptom">跟主症状</el-button>
+        <el-button type="primary" @click="followSymptom">跟伴随症状</el-button>
+    </div>
   </div>
 </template>
 <script>
 import api from '@api/icss.js';
+import utils from '@api/utils.js';
+
 export default {
     name: "SymptomTagGroup",
     props: {
-        dataPub: {},
+        pool: {
+            default: () => [],
+            type: Array
+        },
+        type: {
+            default: '',
+            type: String
+        },
     },
     data() {
         return {
             leftTagsList: [],
             selectLeftTagsList: [],
             rightTagsList: [],
+            rightTagsList2: [],
             selectRightTagsList: [],
-
+            searchVal: '',
+            styles:{
+                background:'#eae7e7'
+            },
         }
     },
     mounted() {
-        this.leftTagsList = this.dataPub.tagPool
-        console.log('TAGPOOL', this.dataPub)
+        this.searchTagList()
+        // this.leftTagsList = this.pool
+        // console.log('TAGPOOL', this.pool)
+    },
+    watch: {
+        pool(newVal, preVal) {
+            if (JSON.stringify(newVal) != JSON.stringify(preVal)) {
+                this.leftTagsList = newVal
+            }
+        },
+        searchVal(newVal, preVal){
+            if(newVal.trim() == ''){
+                this.searchTagList()
+            }else if(newVal.trim() != preVal.trim()){
+                this.searchTagList()
+            }
+        },
+        
+        
     },
     methods: {
-        selectLeftTag(tag) {
+        selectLeftTag(tag, index, e) {
+           
             const hasTag = this.isHasTag(tag, this.selectLeftTagsList)
             console.log(hasTag)
             if (hasTag) {
@@ -63,7 +118,6 @@ export default {
                 this.selectLeftTagsList.push(tag);
             }
             console.log(this.selectLeftTagsList)
-            // this.isSelectTag(tag, this.selectLeftTagsList)
             
         },
         selectRightTag(tag) {
@@ -75,7 +129,6 @@ export default {
                 this.selectRightTagsList.push(tag);
             }
             console.log(this.selectRightTagsList)
-            // this.isSelectTag(tag, this.selectRightTagsList)
             
         },
         isHasTag(item, arr) {
@@ -86,55 +139,106 @@ export default {
             }
             return false;
         },
-        isSelectTag(tag, arr) {
-            const hasTag = this.isHasTag(tag, arr)
-            console.log(hasTag)
-            if (hasTag) {
-                // arr = arr.filter(item => item.id !== tag.id)
-                arr = arr.filter((item) => {console.log('aaa',item.id === tag.id); return item.id !== tag.id})
-            } else {
-                arr.push(tag);
-            }
-            console.log(arr)
+        getStyle(item){       //左侧选中状态
+            // console.log('selected',utils.filterArr(this.leftTagsList,item,2))
+            // return utils.filterArr(this.selectLeftTagsList,item,2)
+            return this.isHasTag(item, this.selectLeftTagsList)
+        },
+        getStyle2(item) {
+            // return utils.filterArr(this.selectRightTagsList,item,2)
+            return this.isHasTag(item, this.selectRightTagsList)
         },
         toLeftList() {
-            this.leftTagsList = this.tagPool
+            // if(!this.searchVal) {
+            //     this.leftTagsList = this.searchTagList()
+            // }
+            
+            this.searchTagList()
             for (let i = 0; i < this.selectRightTagsList.length; i++) {
                 this.rightTagsList = this.rightTagsList.filter(item => item.id !== this.selectRightTagsList[i].id)
             }
+            this.rightTagsList2 = [];
+            let textItem = { text: ','  }
             for (let i = 0; i < this.rightTagsList.length; i++) {
-                this.leftTagsList = this.leftTagsList.filter(item => item.id !== this.rightTagsList[i].id)
+                if(this.rightTagsList2.length === 0) {
+                    this.rightTagsList2.push(JSON.parse(JSON.stringify(textItem)))
+                }
+                this.rightTagsList2.push(this.rightTagsList[i]);
+                this.rightTagsList2.push(JSON.parse(JSON.stringify(textItem)))
             }
+            // for (let i = 0; i < this.rightTagsList.length; i++) {
+            //     this.leftTagsList = this.leftTagsList.filter(item => item.id !== this.rightTagsList[i].id)
+            // }
+            this.selectLeftTagsList = []
             this.selectRightTagsList = []
+            this.searchTagList()
         },
         toRightList() {
             this.rightTagsList.push(...this.selectLeftTagsList);
+            let textItem = { text: ','  }
+            for (let i = 0; i < this.selectLeftTagsList.length; i++) {
+                if(this.rightTagsList2.length === 0) {
+                    this.rightTagsList2.push(JSON.parse(JSON.stringify(textItem)))
+                }
+                this.rightTagsList2.push(this.selectLeftTagsList[i]);
+                this.rightTagsList2.push(JSON.parse(JSON.stringify(textItem)))
+            }
+            
             for (let i = 0; i < this.rightTagsList.length; i++) {
                 this.leftTagsList = this.leftTagsList.filter(item => item.id !== this.rightTagsList[i].id)
             }
-            console.log(this.rightTagsList)
+            console.log('this.rightTagsList',this.rightTagsList)
             this.selectLeftTagsList = []
+            this.selectRightTagsList = []
         },
-        searchTag(value) {
-            console.log('value', value)
+        searchTagList() {
             let notIds = []
             for (let i = 0; i < this.rightTagsList.length; i++) {
-                notIds.push(rightTagsList[i].id)
+                if(this.rightTagsList[i].id) {
+                    notIds.push(this.rightTagsList[i].id)
+                }
+                
             }
-            console.log(this.dataPub)
             let param = {
-                "tagName": value.data,
-                "tagType": [
-                    4
-                ],
-                "type": this.dataPub.region1 || ''
+                "tagName": this.searchVal,
+                "tagType": [1, 2],
+                "controlType": [],
+                "type": this.type || '',
+                "notIds": notIds,
+
             }
             api.searchTagList(param).then((res) => {
                 if (res.data.code === '0') {
                     this.leftTagsList = res.data.data
+                    this.selectLeftTagsList = []
+                    this.selectRightTagsList = []
                 }
             })
            
+        },
+        mainSymptom() {
+            console.log(this.selectRightTag)
+            for(let i = 0; i < this.selectRightTagsList.length; i++) {
+                this.rightTagsList = this.rightTagsList.filter((item) =>{
+                    if(item.id === this.selectRightTagsList[i].id) {
+                        item.symptomType = 1
+                    }
+                    return item
+                })
+            }
+            
+            this.selectRightTagsList = []
+        },
+        followSymptom() {
+            for(let i = 0; i < this.selectRightTagsList.length; i++) {
+                this.rightTagsList = this.rightTagsList.filter((item) =>{
+                    if(item.id === this.selectRightTagsList[i].id) {
+                        item.symptomType = 2
+                    }
+                    return item
+                })
+            }
+            this.selectRightTagsList = []
         }
 
     }
@@ -154,7 +258,7 @@ export default {
         margin-bottom: 20px;
     }
     .pool {
-        border:1px solid @icssBorder;
+        // border:1px solid @icssBorder;
     
     }
     .search {
@@ -167,6 +271,8 @@ export default {
         padding: 10px 10px;
         height: 300px;
         overflow-y: auto;
+        // width: 80%;
+        border: 1px solid @icssBorder;
     }
     .tagItem {
         line-height: 20px;
@@ -192,7 +298,10 @@ export default {
     }
     }
     .bottomPartRight {
-        width: 60%;
+        width: 40%;
+    }
+    .active {
+        color: #aBcdef;
     }
 }
 </style>

+ 4 - 0
src/routes.js

@@ -31,6 +31,8 @@ import ProductDetail from '@components/admin/ProductDetail.vue';
 import Console from '@components/user/Console.vue';
 import LabelGroup from '@components/icss/LabelGroup.vue'
 import NoiseTemplate from '@components/icss/NoiseTemplate.vue';
+import DeptInfo from '@components/icss/DeptInfo.vue';//科室信息
+import DeptInfoDetail from '@components/icss/DeptInfoDetail.vue';//科室信息-详情
 
 export default [
   {
@@ -131,6 +133,8 @@ export default [
       {path: 'LT-GRZX/CHANGE',component: ChangePwd}, //个人中心--修改密码
       {path: 'LT-YXSJWH-BQZWH',component: LabelGroup}, //医学数据维护--标签组维护
       {path:'LT-YXSJWH-TJBQZ',component:NoiseTemplate},     //医学数据维护--标签组维护--添加标签组
+      {path:'LT-YXSJWH-KSWH',component:DeptInfo},     //医学数据维护--科室维护
+      {path:'LT-YXSJWH-KSXQ',component:DeptInfoDetail,name:'DeptInfoDetail'},     //医学数据维护--详情
     ]
   }
 ]