Selaa lähdekoodia

Merge remote-tracking branch 'origin/diagBase6.0' into test

# Conflicts:
#	src/api/index.js
zhouna 4 vuotta sitten
vanhempi
commit
d79744bfc2

+ 8 - 1
src/api/utils.js

@@ -438,5 +438,12 @@ export default {
   getCurrentPage(currentChange, total, pageSize) {
     const currentPage =  currentChange > Math.ceil(total/pageSize) ? Math.ceil(total/pageSize) : currentChange
     return currentPage;
-  }
+  },
+  formatObj(data,key){
+        let obj={};
+        data.map((it)=>{
+            obj[it[key]]=it.subMenuList;
+        });
+        return obj;
+    },
 }

+ 49 - 0
src/api/zskDiagBase.js

@@ -0,0 +1,49 @@
+import axios from 'axios';
+const urls = {
+    'zskDiagBase':'/api/cdssman/klDiagnose/getDiagnosePage',    //知识库诊断依据维护
+    'zskAddDiagBase':'/api/cdssman/klDiagnose/saveDiagnoseAll',
+    'zskDelDiagBase':'/api/cdssman/klDiagnose/clearDiagnoseAll',
+    'zskStrDiagBase':'/api/cdssman/klDiagnose/startDiagnose',   //启用
+    'zskStopDiagBase':'/api/cdssman/klDiagnose/disableDiagnose',    //禁用
+    'zskDiagBaseDetail':'/api/cdssman/klDiagnose/getByIdDiagnoseAll',
+    'zskTypeList':'/api/cdssman/klRulePlan/getMenu',//类型列表
+    'searchDiag':'/api/cdssman/klDiagnose/findDiaName',
+    'zskSearchConcept':'/api/cdssman/klDisease/searchConcept',//知识库搜索术语
+    'zskgetDict':'/api/cdssman/kl/dictionary/getDictionarys',//获取枚举
+    'updateDiagBase':'/api/cdssman/cache/reloadDiagnose'
+};
+export default {
+    zskgetDict(){
+        return axios.post(urls.zskgetDict)
+    },
+    getTypesList(param){
+        return axios.post(urls.zskTypeList,param);
+    },
+    diagBasePage(param){
+        return axios.post(urls.zskDiagBase, param)
+    },
+    diagBaseApply(param){ //诊断依据--启用
+        return axios.post(urls.zskStrDiagBase, param)
+    },
+    diagBaseStop(param){ //诊断依据--禁用
+        return axios.post(urls.zskStopDiagBase, param)
+    },
+    diagBaseDelete(param){ //诊断依据--删除
+        return axios.post(urls.zskDelDiagBase, param)
+    },
+    diagBaseGetDetail(param){ //诊断依据--获取详情
+        return axios.post(urls.zskDiagBaseDetail, param)
+    },
+    saveDiagBase(param){
+        return axios.post(urls.zskAddDiagBase, param)
+    },
+    searchDiag(param){
+        return axios.post(urls.searchDiag, param)
+    },
+    searchConcept(param){
+        return axios.post(urls.zskSearchConcept,param);
+    },
+    updateDiagBase(param={}){
+        return axios.post(urls.updateDiagBase,param);
+    },
+}

+ 361 - 0
src/components/knowledgeExtra/AddDiagBase.vue

@@ -0,0 +1,361 @@
+<template>
+    <div>
+        <crumbs :title="title" :param="$route.params" linkTo="ZskDiagBase"></crumbs>
+        <div class="contents">
+            <div class="content">
+                <el-form ref="form" :label-position="labelPosition" class="add-new-form" label-width="150px" :model="form" :rules="rules">
+                    <el-form-item label="疾病名称:" prop="conceptId">
+                        <el-select clearable remote filterable :remote-method="searchDiag" v-model.trim="form.conceptId">
+                            <el-option
+                                    v-for="item in conceptList"
+                                    :key="item.conceptId"
+                                    :label="item.conceptName"
+                                    :value="item.conceptId">
+                            </el-option>
+                        </el-select>
+                    </el-form-item>
+                    <el-form-item label="诊断依据描述:" prop="description" class="description">
+                        <el-input type="textarea" :rows="3" placeholder="请输入诊断依据描述" v-model.trim="form.description"></el-input>
+                    </el-form-item>
+                    <el-form-item label="诊断依据内容:" prop="remind" class="discDesc is-required">
+                        <DiagBaseType v-for="(group,i) in form.klDiagnoseTypeVO"
+                                       ref="groups"
+                                       :data="group"
+                                       :inx="i"
+                                       :isLast="form.klDiagnoseTypeVO.length===1"
+                                       @setRules="setRules"
+                                       @addDiag="addDiag"
+                                       @delDiag="delDiag"></DiagBaseType>
+                    </el-form-item>
+                    <el-button class="disclButn" size="small" type="primary" @click="confirm">保存</el-button>
+                </el-form>
+            </div>
+        </div>
+    </div>
+</template>
+<script type="text/javascript">
+    import api from '@api/zskDiagBase.js';
+    import DiagBaseType from './DiagBaseType'
+    export default {
+        name:'AddZskDiagBase',
+        data(){
+            return{
+                labelPosition:'left',
+                isCopy:false,
+                title:'诊断依据维护-添加诊断依据',
+                conceptName:'',
+                conceptList:[],
+                form:{
+                    description:'',
+                    conceptId:'',
+                    klDiagnoseTypeVO:[{conditionType:'',groupVO:[{
+                            "baseGroup": '',
+                            "conditionGroup": '',
+                            "fitNo": '',
+                            "klDiagnoseDetail": [{
+                                "basConceptId": '',
+                                "basDescription": "",
+                                "basLename": "",
+                                "basLibName": "",
+                                "basLibType":null,
+                                "basType": '',
+                                "eqOperator": "",
+                                "eqUnit": "",
+                                "eqValue": "",
+                                "maxOperator": "",
+                                "maxUnit": "",
+                                "maxVal": "",
+                                "minOperator": "",
+                                "minUnit": "",
+                                "minVal": ""
+                            }]
+                        }]}],
+                },
+                id:null,
+                rules:{
+                    conceptId:[{ required: true, message: '请输入疾病名称',trigger: ['blur'] }],
+                    description:[{ required: true, message: '请输入诊断依据描述',trigger: ['blur'] },{
+                        validator: (rule,value,callback)=>{
+                            if(value.length>100){
+                                callback(new Error('诊断依据描述不能超过100字'));
+                            }else{
+                                callback();
+                            }}, trigger: 'change'
+                    }],
+                }
+            }
+        },
+        created(){
+            const param = this.$route.params;
+            let info = param.data;
+            if(info){
+                this.id = info.id;
+                this.isCopy=param.copy;
+                this.title = "诊断依据维护-"+(this.isCopy?'复制':'修改')+"诊断依据";
+                this.conceptList = [{conceptId:info.conceptId,conceptName:info.conceptName}];
+                this.form=Object.assign({},this.form,this.formatData(info));
+                this.isCopy&&delete this.form.id;
+                console.log(info)
+            }
+            this.setRules()
+        },
+        watch:{
+        },
+        components:{
+            DiagBaseType
+        },
+        computed:{
+
+        },
+        methods:{
+            formatData(data){       //转换字段名
+                let str = JSON.stringify(data).replace(/byIdDTO/g,"groupVO").replace(/klDiagnoseByIdDTO/g,"klDiagnoseDetail");
+                return JSON.parse(str);
+            },
+            setRules(){
+                let that=this;
+                let list=this.form.klDiagnoseTypeVO;
+                if(list&&list.length>0){
+                    list.forEach((item,i)=>{
+                        let list1=list[i].groupVO;
+                        that.rules['klDiagnoseTypeVO.'+i+'.conditionType']=[{required: true, message: '请选择诊断依据类型',trigger: ['change'] }];
+                        list1.forEach((it,x)=>{
+                            that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.fitNo']=[{required: true, message: '请选择符合条件的数量',trigger: ['change'] }];
+                            let list2=list1[x].klDiagnoseDetail;
+                            list2.forEach((t,j)=>{
+                                const grandeObj = this.form.klDiagnoseTypeVO[i].groupVO[x].klDiagnoseDetail[j];
+                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.basDescription']=[{required: true, message: '请输入基础依据名称',trigger: ['blur'] }];
+                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.basType']=[{ required: true, message: '请选择基础依据类型',trigger: ['change'] }];
+                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.basLibType']=[{ required: true, message: '请选择基础依据术语类型',trigger: ['change'] }];
+                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.basConceptId']=[{ required: true, message: '请输入医学标准术语',trigger: ['blur'] }];
+                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.dataType']=[{ required: true, message: '请选择类型',trigger: ['change'] }];
+                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.maxOperator']=[{
+                                    validator: (rule,value,callback)=>{
+                                        const {maxVal,minOperator,minVal}=grandeObj;
+                                        const val=value+minOperator+minVal+maxVal;
+                                        if(!val||(!value&&maxVal!=='')){
+                                            callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
+                                        }else{
+                                            callback();
+                                        }}, trigger: 'blur'
+                                }];
+                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.minOperator']=[{
+                                    validator: (rule,value,callback)=>{
+                                        const {maxVal,maxOperator,minVal}=grandeObj;
+                                        const val=value+maxOperator+minVal+maxVal;
+                                        if(!val||(!value&&minVal!=='')){
+                                            callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
+                                        }else{
+                                            callback();
+                                        }}, trigger: 'blur'
+                                }];
+                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.maxVal']=[{
+                                    validator: (rule,value,callback)=>{
+                                        const {maxOperator,minOperator,minVal}=grandeObj;
+                                        const val=value+maxOperator+minVal+minOperator;
+                                        const isNum=/^(\-|\+)?\d+(\.\d+)?$/.test(value);
+                                        if(!val||(value==''&&maxOperator)){
+                                            callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
+                                        }else if(value!==''&&!isNum){
+                                            callback(new Error('只能输入数字'));
+                                        }else{
+                                            callback();
+                                        }}, trigger: 'blur'
+                                }]
+                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.minVal']=[{
+                                    validator: (rule,value,callback)=>{
+                                        const {maxVal,minOperator,maxOperator}=grandeObj;
+                                        const val=value+maxOperator+maxVal+minOperator;
+                                        const isNum=/^(\-|\+)?\d+(\.\d+)?$/.test(value);
+                                        if(!val||(value==''&&minOperator)){
+                                            callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
+                                        }else if(value!==''&&!isNum){
+                                            callback(new Error('只能输入数字'));
+                                        }else{
+                                            callback();
+                                        }}, trigger: 'blur'
+                                }];
+                                that.rules['klDiagnoseTypeVO.'+i+'.groupVO.'+x+'.klDiagnoseDetail.'+j+'.eqValue']=[{
+                                    validator: (rule,value,callback)=>{
+                                        if(value===''){
+                                            callback(new Error('不能为空~'));
+                                        }else if(value.length>200){
+                                            callback(new Error('不能超过200字'));
+                                        }else{
+                                            callback();
+                                        }}, trigger: 'blur'
+                                }];
+                            });
+                        });
+                    })
+                }
+            },
+            formatGroupDatas(data){
+                let arr=[];
+                return arr;
+            },
+            searchDiag(val){
+                const param = {
+                    diseaseName:val,
+                };
+                api.searchDiag(param).then((res) => {
+                    if (res.data.code == '0') {
+                        const data = res.data.data;
+                        this.conceptList = data;
+                    }
+                }).catch((error) => {
+                    console.log(error);
+                });
+            },
+            getInitData(){
+                return {conditionType:'',groupVO:[{
+                        "baseGroup": '',
+                        "conditionGroup": '',
+                        "fitNo": '',
+                        "klDiagnoseDetail": [{
+                            "basConceptId": '',
+                            "basDescription": "",
+                            "basLename": "",
+                            "basLibName": "",
+                            "basLibType": null,
+                            "basType": '',
+                            "eqOperator": "",
+                            "eqUnit": "",
+                            "eqValue": "",
+                            "maxOperator": "",
+                            "maxUnit": "",
+                            "maxVal": "",
+                            "minOperator": "",
+                            "minUnit": "",
+                            "minVal": ""
+                        }]
+                    }]}
+            },
+            setInitGroupData(){
+                let temp = this.getInitData();
+                this.form.klDiagnoseTypeVO = [temp];
+            },
+            addDiag(){
+                let temp = this.getInitData();
+                this.form.klDiagnoseTypeVO.push(temp);
+                this.setRules();
+            },
+            delDiag(i){
+                this.form.klDiagnoseTypeVO.splice(i,1);
+            },
+            saveDiagBase(params){
+                api.saveDiagBase(params).then((res)=>{
+                    if(res.data.code==0){
+                        this.$message({
+                            message:"操作成功",
+                            type:'success'
+                        });
+                        this.$router.push({name: 'ZskDiagBase'});
+                    }else{
+                        this.$message({
+                            message:res.data.msg,
+                            type:'warning'
+                        });
+                    }
+                })
+            },
+            validateForms(callBack){
+                this.$refs['form'].validate((valid) => {
+                    if (valid) {
+                        callBack();
+                    } else {
+                        return false;
+                    }
+                });
+            },
+            confirm(){
+                const _this=this;
+                this.validateForms(function(){
+                    let params = _this.form;
+
+                    _this.saveDiagBase(params);
+                });
+            },
+        }
+    }
+</script>
+<style lang="less">
+    @import "../../less/admin.less";
+    .content{
+        background: #fff;
+        // padding: 20px 20px 30px;
+        padding: 20px 20px 50px;
+        color: #545455;
+        min-width: 980px;
+        position: relative;
+        .tip-text{
+            color:#F56C6C;
+            margin-left: 10px;
+        }
+        .conceptItem{
+            padding: 0 10px;
+            cursor: pointer;
+            height: 32px;
+            line-height: 32px;
+            &:hover{
+                background: #ebedf1;
+            }
+        }
+        .discDesc{
+            margin-bottom: 20px;
+            .el-form-item__error{
+                top: auto;
+                white-space: nowrap;
+                background: #fff;
+            }
+        }
+        .disclButn{
+            position: absolute;
+            right: calc(50% - 60px);
+            bottom: 10px;
+        }
+    }
+    .description .el-form-item__error{
+        top:auto;
+    }
+    .add-new-form{
+        .el-form-item__label{
+            text-align: right;
+        }
+        .addDepartFormItem {
+            position: relative;
+        }
+        .itemList {
+            position: absolute;
+            // display: none;
+            background: #fff;
+            width: 188px;
+            max-height: 160px;
+            border: 1px solid #DCDFE6;
+            left: 0;
+            top: 37px;
+            z-index: 2;
+            overflow-y: auto;
+        }
+        .indexList {
+            left: 42px;
+            top: 78px;
+        }
+        .el-input__prefix, .el-input__suffix{
+            /*top:-2px;*/
+            right: 3px;
+        }
+        .el-input--suffix .el-input__inner{
+            padding-right: 22px;
+        }
+        .el-input,.el-input__inner{
+            width: 190px;
+            line-height: 32px;
+            height: 32px;
+        }
+        .el-input__icon{
+            line-height: 32px;
+        }
+    }
+
+</style>

+ 369 - 0
src/components/knowledgeExtra/DiagBase.vue

@@ -0,0 +1,369 @@
+<template>
+    <div>
+        <crumbs title="诊断依据维护" :minWidth="titleWidth" class="knowledgeTitle">
+            <el-form :inline="true" class="demo-form-inline">
+                <el-form-item label="疾病名称:">
+                    <el-input size="mini" v-model="filter.conceptName" placeholder="输入疾病名称" clearable></el-input>
+                </el-form-item>
+                <el-form-item>
+                    <el-button size="mini" @click="filterDatas">确认</el-button>
+                </el-form-item>
+                <el-form-item>
+                    <el-button size="mini" @click="addRule" type="warning" style="margin:0 10px">+ 新增诊断依据</el-button>
+                    <el-button size="mini" @click="update">更新数据</el-button>
+                </el-form-item>
+            </el-form>
+        </crumbs>
+        <div class="contents knowledgeContents">
+            <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="conceptName"
+                        label="疾病名称"
+                        width="160">
+                    <template slot-scope="scope">
+                        <el-tooltip v-if="scope.row.conceptName.length>8" class="item" effect="dark" :content="scope.row.conceptName" placement="top">
+                            <span>{{scope.row.conceptName.slice(0,8)+'...'}}</span>
+                        </el-tooltip>
+                        <span v-if="scope.row.conceptName.length<9">{{scope.row.conceptName}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column
+                        prop="description"
+                        label="描述"
+                        width="160">
+                    <template slot-scope="scope">
+                        <el-tooltip v-if="scope.row.description.length>8" class="item" effect="dark" :content="scope.row.description" placement="top">
+                            <span>{{scope.row.description.slice(0,8)+'...'}}</span>
+                        </el-tooltip>
+                        <span v-if="scope.row.description.length<9">{{scope.row.description}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column
+                        label="状态">
+                    <template slot-scope="scope">
+                          <span>
+                            {{scope.row.status === 0?'禁用':'启用'}}
+                          </span>
+                    </template>
+                </el-table-column>
+                <el-table-column
+                        prop="modifierName"
+                        label="操作人">
+                </el-table-column>
+                <el-table-column
+                        prop="gmtModified"
+                        label="操作时间"
+                        width="180">
+                </el-table-column>
+                <el-table-column
+                        label="操作"
+                        width="180" fixed="right">
+                    <template slot-scope="scope">
+                        <el-button type="text" size="small" @click="editData(scope.row)">修改</el-button>
+                        <span style="margin:0 3px;">|</span>
+                        <el-button type="text" size="small" @click="editData(scope.row,true)">复制</el-button>
+                        <span style="margin:0 3px;">|</span>
+                        <el-button type="text" size="small" :class="scope.row.status === 0?'':'unvailable'" @click="showDelDialog(scope.row)">{{scope.row.status === 0?'启用':'禁用'}}</el-button>
+                        <span style="margin:0 3px;">|</span>
+                        <el-button type="text" size="small" class="delete" @click="showDelDialog(scope.row,1)">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <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>
+</template>
+
+<script>
+    import api from '@api/zskDiagBase.js';
+    import config from '@api/config.js';
+    import utils from '@api/utils.js';
+
+    export default {
+        name: 'ZskDiagBase',
+        data: function () {
+            return {
+                list: [],
+                stateSelect:[
+                    {id:1,name:'启用'},
+                    {id:0,name:'禁用'},
+                ],
+                ruleTypeList:[],
+                searched: false,
+                filter:{
+                    conceptName:'',
+                },
+                cacheData: {},
+                currentPage: 1,
+                pageSize: config.pageSize,
+                pageSizeArr:config.pageSizeArr,
+                pageLayout:config.pageLayout,
+                total: 0,
+                titleWidth:'1070px' //头部最小宽度
+            }
+        },
+        created() {
+            const param = this.$route.params;
+            if(param.currentPage){
+                this.inCurrentPage = param.currentPage;
+                this.filter = param.filter
+            }
+            this.getTypeList();
+            const that = this;
+            //返回时避免参数未赋值就获取列表
+            setTimeout(function(){
+                that.getDataList();
+            });
+        },
+        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: {
+            getDict(){
+                api.zskgetDict().then((res) => {
+                    if (res.data.code == '0') {
+                        const data = res.data.data;
+                        localStorage.setItem("zskDiagDicts",data['24'][0].val);
+                    }
+                }).catch((error) => {
+                    console.log(error);
+                });
+            },
+            getTypeList(){
+                this.getDict();
+                api.getTypesList({planCode:'dis'}).then((res) => {
+                    if (res.data.code == '0') {
+                        const data = res.data.data;
+                        localStorage.setItem("zskDiagList",JSON.stringify(data));
+                    }
+                }).catch((error) => {
+                    console.log(error);
+                });
+            },
+            handleSizeChange(val){
+                this.pageSize = val;
+                this.currentPage = utils.getCurrentPage(this.currentPage, this.total, this.pageSize);
+                this.getDataList();
+            },
+            addRule(){
+                const pam = this.searched ? {
+                    currentPage: this.currentPage,
+                    pageSize:this.pageSize,
+                    filter: this.filter
+                } : {currentPage: this.currentPage,
+                    pageSize:this.pageSize};
+                this.$router.push({name: 'AddZskDiagBase', params: pam});
+            },
+            filterDatas(){
+                this.currentPage = 1;
+                this.getDataList(1);
+            },
+            getDataList(flag,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.diagBasePage(params).then((res) => {
+                    loading.close();
+                    if (res.data.code == '0') {
+                        const data = res.data.data;
+                        for(let j = 0;j < data.records.length;j++){
+                            data.records[j].condition = (data.records[j].parStatus == '1'?'启用':'禁用')
+                        }
+                        this.list = data.records;
+                        if(!flag){//搜索时不缓存
+                            this.cacheData[params.current] = data.records;
+                        }else{
+                            this.cacheData = {}
+                        }
+                        this.total = data.total;
+                        if(this.inCurrentPage!==undefined){
+                            this.currentPage=this.inCurrentPage;
+                            this.inCurrentPage = undefined;
+                        }
+                    }else{
+                        this.warning(res.data.msg||'获取列表数据失败');
+                    }
+                }).catch((error) => {
+                    loading.close();
+                    console.log(error);
+                });
+            },
+            getFilterItems(isTurnPage) {
+                //翻页时筛选条件没点确定则清空
+                if(isTurnPage&&!this.searched){
+                    this.clearFilter();
+                };
+                const param = {
+                    current: this.inCurrentPage||this.currentPage,
+                    size: this.pageSize,
+                    description: this.filter.conceptName,
+                };
+                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(1,true);
+                //}
+            },
+            warning(msg,type){
+                this.$message({
+                    showClose: true,
+                    message:msg,
+                    type:type||'warning'
+                })
+            },
+            showConfirmDialog(msg,resolve){
+                this.$alert(msg, '提示', {
+                    confirmButtonText: '确定',
+                    type: 'warning'
+                }).then(() => {
+                    resolve();
+                }).catch(() => {});
+            },
+            editData(row,isCopy){
+                const pam = this.searched ? {
+                    currentPage: this.currentPage,
+                    pageSize:this.pageSize,
+                    filter: this.filter
+                } : {currentPage: this.currentPage,
+                    pageSize:this.pageSize};
+                api.diagBaseGetDetail({id:row.id}).then((res) => {
+                    if (res.data.code == '0') {
+                        const data = res.data.data;
+                        this.$router.push({name:'AddZskDiagBase',params:{...pam,data:{...row,klDiagnoseTypeVO:data},copy:isCopy}});
+                    }
+                }).catch((error) => {
+                    this.warning('获取详情失败,请重试')
+                });
+            },
+            showDelDialog(row,isDelete){
+                const params = {
+                    id:row.id
+                };
+                const txt=row.status===0?'重新启用':'禁用';
+                const warningTxt = isDelete?'是否删除该诊断依据?可能对现有系统造成影响':'是否'+txt+'该诊断依据?';
+                const handleFn = isDelete?api.diagBaseDelete:(row.status===0?api.diagBaseApply:api.diagBaseStop);
+                this.showConfirmDialog(warningTxt,()=>{
+                    handleFn(params).then((res)=>{
+                        if(res.data.code=='0'){
+                            if(!this.searched){
+                                //未点确认时清空搜索条件
+                                this.clearFilter();
+                            }
+                            if(isDelete){       //恢复成功后跳转到筛选条件的首页
+                                this.currentPage = 1;
+                            } else {
+                                if (this.filter.status!==''&&this.list.length === 1){
+                                    //有启用状态筛选条件且当前页只有最后一条数据删除时,删除成功后跳转到前一页
+                                    this.currentPage = this.currentPage===1?1:this.currentPage-1;
+                                }
+                            }
+                            this.warning(res.data.msg||'操作成功','success');
+                            this.getDataList();
+                        }else{
+                            this.warning(res.data.msg);
+                        }
+                    }).catch((error)=>{
+                        this.warning(error);
+                    })
+                });
+            },
+            clearFilter(){
+                this.filter={
+                    conceptName:'',
+                };
+            },
+            update(){
+                const loading = this.$loading({
+                    lock: true,
+                    text: 'Loading',
+                    spinner: 'el-icon-loading',
+                    background: 'rgba(0, 0, 0, 0.7)'
+                });
+                api.updateDiagBase().then((res) => {
+                    loading.close();
+                    if (res.data.code == '0') {
+                        this.warning('更新成功','success');
+                        this.getDataList();
+                    }
+                }).catch((error) => {
+                    loading.close();
+                    this.warning('更新失败,请重试')
+                });
+            },
+        }
+    }
+</script>
+
+<style lang="less" scoped>
+    @import "../../less/admin.less";
+    /deep/ .container.knowledgeTitle {
+        height: 80px;
+        min-width: 970px!important;
+    }
+    .demo-form-inline{
+        margin: 30px 20px 0 0;
+    }
+    /deep/ .contents.knowledgeContents {
+        padding: 104px 20px 0;
+    }
+    .delete{
+        color: red;
+    }
+    .review{
+        color: #22ccc8;
+    }
+    .el-table .cell{
+        overflow: hidden;
+        white-space: nowrap;
+    }
+    #upFile{
+        display: none !important;
+    }
+    .unvailable{
+        color: #FE7D3D;
+        &:hover{
+            color: #f19061;
+        }
+    }
+</style>

+ 154 - 0
src/components/knowledgeExtra/DiagBaseGroup.vue

@@ -0,0 +1,154 @@
+<template>
+    <div class="sub-groups">
+        <div class="group-items">
+        <!--<el-form ref="form" class="add-new-form" label-width="140px" :model="data" :rules="rules">-->
+            <el-form-item label="符合条件的数量:" :prop="'klDiagnoseTypeVO.'+parInx+'.groupVO.'+inx+'.fitNo'" class="diag-num">
+                <el-select v-model="data.fitNo"
+                           placeholder="请选择"
+                           size="small">
+                    <el-option
+                            v-for="item in numArr"
+                            :key="item.id"
+                            :label="item.name"
+                            :value="item.id">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <DiagBaseItem v-for="(rules,i) in data.klDiagnoseDetail"
+                           ref="group"
+                           :groupData="rules"
+                           :ind="i"
+                           :inx="inx"
+                           :parInx="parInx"
+                           :isLast="isLast&&data.klDiagnoseDetail.length===1"
+                           :baseTypes="diagTypeList"
+                           @setRules="setRules"
+                           @changeVal="handleInput"
+                           @addRule="addRule"
+                           @delRule="delRule"></DiagBaseItem>
+        </div>
+        <div class="group-oper">
+            <el-button size="small" @click="addGroup">+新增分组</el-button>
+            <el-button :disabled="isLast" size="small" type="danger" plain @click="delGroup">-删除分组</el-button>
+        </div>
+        <!--</el-form>-->
+    </div>
+</template>
+<script>
+    import DiagBaseItem from './DiagBaseItem.vue';
+    export default {
+        name:'DiagBaseGroup',
+        props:['data','inx','isLast','diagTypeList','parInx'],
+        data(){
+            return {
+                fitNo:'',
+                numArr:[{id:1,name:1},{id:2,name:2},{id:3,name:3},{id:4,name:4},{id:5,name:5},{id:6,name:6},{id:7,name:7},{id:8,name:8},{id:9,name:9},{id:10,name:10},],
+                /*rules:{
+                    fitNo:[{required: true, message: '请选择符合条件的数量',trigger: ['change']}]}*/
+            }
+        },
+        computed:{
+            baseTypeList:function(){
+
+            },
+        },
+        methods:{
+            handleInput(val,i){
+                this.data[i]=val;
+            },
+            setRules(){
+                this.$emit('setRules');
+            },
+            addRule(){
+                let temp={
+                    subDescription:'',
+                    subConceptId:'',
+                    subType:'',
+                    subLenName:'',
+                    subLenCode:'',
+                    subLibName:'',
+                    subMaxOperator:'',
+                    subMaxUnit:'',
+                    subMaxValue:'',
+                    subMinOperator:'',
+                    subMinUnit:'',
+                    subMinValue:'',
+                    subEqValue:'',
+                    dataType:'',
+                };
+                this.data.klDiagnoseDetail.push(temp);
+                this.$emit("setRule");
+            },
+            delRule(i){
+                if(i===0&&this.data.klDiagnoseDetail.length===1){
+                    this.$emit("delGroup",this.inx);
+                    return;
+                }
+                this.data.klDiagnoseDetail.splice(i,1);
+            },
+            addGroup(){
+                this.$emit("addGroup");
+            },
+            delGroup(){
+                this.$emit("delGroup",this.inx);
+            },
+            warning(msg,type){
+                this.$message({
+                    showClose: true,
+                    message:msg,
+                    type:type||'warning'
+                })
+            },
+            showConfirmDialog(msg,resolve){
+                this.$alert(msg, '提示', {
+                    confirmButtonText: '确定',
+                    type: 'warning'
+                }).then(() => {
+                    resolve();
+                }).catch(() => {
+                    this.warning("删除失败,请重试!")
+                });
+            },
+        },
+        components:{
+            DiagBaseItem
+        }
+    }
+</script>
+<style lang="less" scoped>
+    .sub-groups{
+    }
+    .group-items{
+        padding:10px 20px;
+        margin: 10px 20px;
+        background: #F5F5F5;
+        border:1px #ccc dashed;
+    }
+    .diag-num{
+        background: #fff;
+        padding: 13px 0;
+        border-bottom: 1px solid #E6E6E6;
+    }
+    .group-oper{
+        text-align: center;
+        padding: 11px 0;
+        border-top: 4px solid #F5F5F5;
+        background: #fff;
+        margin: 0 20px;
+        .el-button{
+            margin-right: 60px;
+        }
+    }
+    .el-button--danger.is-plain:focus, .el-button--danger.is-plain:hover{
+        color: #fbc4c4;
+        border-color:#fbc4c4;
+    }
+    .el-button--danger.is-plain{
+        background: none;
+        &.is-disabled{
+            color: #f9a7a7;
+            background-color: #fef0f0;
+            border-color: #fde2e2;
+        }
+    }
+</style>

+ 373 - 0
src/components/knowledgeExtra/DiagBaseItem.vue

@@ -0,0 +1,373 @@
+<template>
+    <div class="groups-cont">
+        <!--<el-form ref="groupData" label-width="150px" class="sub-condition-form" :model="groupData" :rules="rules">-->
+        <div class="sub-condition-form">
+        <span v-if="!isLast" class="del-btn"  @click="delRule">删除</span><!--:class="isLast?'disable del-btn':'del-btn'"-->
+            <el-form-item label="基础依据名称:" :prop="ruleLine+ind+'.basDescription'">
+                <el-input v-model.trim = "groupData.basDescription"></el-input>
+            </el-form-item>
+            <el-form-item label="基础依据类型:" :prop="ruleLine+ind+'.basType'">
+                <el-select v-model="groupData.basType"
+                           id="basTypeRef"
+                           placeholder="请选择"
+                           size="small"
+                           @change="basTypeChange">
+                    <el-option
+                            v-for="item in baseTypes"
+                            :key="item.id"
+                            :label="item.name"
+                            :value="item.type">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item v-if="!showRegx" label="基础依据术语类型:" :prop="ruleLine+ind+'.basLibType'">
+                <el-select v-model="groupData.basLibType"
+                           placeholder="请选择"
+                           size="small"
+                           :disabled="showRegx">
+                    <el-option
+                            v-for="item in baseTermTypeList"
+                            :key="item.id"
+                            :label="item.name"
+                            :value="item.code">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item v-if="showRegx" label="基础依据术语类型:" class="is-required">
+                <el-input disabled v-model="basTypeName"></el-input>
+            </el-form-item>
+            <el-form-item v-if="!showRegx" class="addDepartFormItem" label="医学标准术语:" :prop="ruleLine+ind+'.basConceptId'">
+                <el-select clearable remote filterable :remote-method="searchConcept" v-model.trim="groupData.basConceptId">
+                    <el-option
+                            v-for="item in conceptList"
+                            :key="item.conceptId"
+                            :label="item.conceptName"
+                            :value="item.conceptId">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item v-if="groupData.basType===2&&!onlyNum" label="选择类型:" :prop="ruleLine+ind+'.dataType'">
+                <el-select v-model="groupData.dataType"
+                           placeholder="请选择"
+                           size="small" @change="dataTypeChange">
+                    <el-option
+                            v-for="item in dataTypes"
+                            :key="item.id"
+                            :label="item.name"
+                            :value="item.id">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item class="min-margin" v-if="groupData.dataType==='1'||onlyNum" label="最大值:">
+                <div class="select-item clearfix">
+                    <el-col :span="3">
+                        <el-form-item :prop="ruleLine+ind+'.maxOperator'">
+                            <el-select v-model="groupData.maxOperator"
+                                       placeholder="请选择"
+                                       size="small" clearable>
+                                <el-option
+                                        v-for="item in operMaxList"
+                                        :key="item.key"
+                                        :label="item.name"
+                                        :value="item.key">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="3">
+                        <el-form-item :prop="ruleLine+ind+'.maxVal'">
+                            <el-input type="text" v-model="groupData.maxVal" placeholder="填写数值"/>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="3">
+                        <el-form-item prop="maxUnit">
+                            <el-input  type="text" v-model.trim="groupData.maxUnit" placeholder="填写单位"/>
+                        </el-form-item>
+                    </el-col>
+                </div>
+            </el-form-item>
+            <el-form-item class="min-margin" v-if="groupData.dataType==='1'||onlyNum" label="最小值:">
+                <div class="select-item clearfix">
+                    <el-col :span="3">
+                        <el-form-item :prop="ruleLine+ind+'.minOperator'">
+                            <el-select v-model="groupData.minOperator"
+                                       placeholder="请选择"
+                                       size="small" clearable>
+                                <el-option
+                                        v-for="item in operMinList"
+                                        :key="item.name"
+                                        :label="item.name"
+                                        :value="item.name">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="3">
+                        <el-form-item :prop="ruleLine+ind+'.minVal'">
+                            <el-input type="text" v-model="groupData.minVal" placeholder="填写数值"/>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="3">
+                        <el-form-item prop="minUnit">
+                            <el-input  type="text" v-model.trim="groupData.minUnit" placeholder="填写单位"/>
+                        </el-form-item>
+                    </el-col>
+                </div>
+            </el-form-item>
+            <el-form-item v-if="groupData.dataType==='2'" label="医学内容:" :prop="ruleLine+ind+'.eqValue'" class="discDesc is-required">
+                <el-input type="textarea" rows="3" placeholder="请输入医学内容" v-model.trim="groupData.eqValue"></el-input>
+            </el-form-item>
+            <el-form-item v-if="showRegx" label="正则表达式:" :prop="ruleLine+ind+'.eqValue'" class="discDesc is-required">
+                <el-input type="textarea" rows="3" placeholder="请输入正则表达式" v-model.trim="groupData.eqValue"></el-input>
+            </el-form-item>
+        </div>
+        <!--</el-form>-->
+        <div class="inner-oper">
+            <span>新增基础依据:</span>
+            <span class="add-btn" @click="addRule"><img src="../../images/add.png" alt="新增基础依据"></span>
+        </div>
+    </div>
+</template>
+<script>
+    import api from '@api/zskDiagBase.js';
+    export default {
+        name:'DiagBaseItem',
+        props:['groupData','ind','isLast','baseTypes','parInx','inx'],
+        data(){
+            return {
+                baseTermTypeList:[],
+                typeList:[],
+                numTypes:'',    //只有数值类型的类型id
+                //basTypeName:'',
+                operMaxList:[
+                    {name:'<=',key:'<='},
+                    {name:'<',key:'<'},
+                ],
+                operMinList:[{name:'>',key:'>'},
+                    {name:'>=',key:'>='},
+                ],
+                dataTypes:[{id:'1',name:'数值类型'},{id:'2',name:'文本类型'}],
+                conceptList:[],
+            }
+        },
+        watch: {
+            'groupData': {
+                handler: function (val) {
+                    this.$emit("changeVal", val, this.ind);
+                },
+                deep: true
+            },
+        },
+        created(){
+            if(this.groupData.maxOperator||this.groupData.minOperator){
+                this.groupData.dataType='1';
+            }else if(this.groupData.eqValue){
+                this.groupData.dataType='2';
+            }
+        },
+        mounted(){
+            this.conceptList=[{conceptName:this.groupData.basLibName,conceptId:this.groupData.basConceptId}];
+            if(this.groupData.basLibType){
+                this.baseTermTypeList=[{name:this.groupData.basLename,code:this.groupData.basLibType}];
+            }
+        },
+        computed:{
+            basTypeName:function(){
+                return (this.baseTypes.find((it)=>it.type===this.groupData.basType)||{}).name;
+            },
+            onlyNum:function(){
+                const codes=localStorage.getItem("zskDiagDicts")+',';
+                const type=this.groupData.basLibType;
+                return type&&codes.indexOf(this.groupData.basLibType+',')>-1;
+            },
+            ruleLine:function(){
+              return 'klDiagnoseTypeVO.'+this.parInx+'.groupVO.'+this.inx+'.klDiagnoseDetail.';
+            },
+            showRegx:function(){
+              return this.groupData.basType===3||this.groupData.basType===4;
+            },
+            textName:function(){
+                return this.showRegx?'正则表达式':'医学内容';
+            },
+        },
+        methods:{
+            dataTypeChange(val){
+                this.groupData.eqOperator=(val==='2'?'=':'');
+                this.clearNumText();
+                delete this.groupData.dataType;     //触发更新
+                this.$set(this.groupData,'dataType',val);
+            },
+            basTypeChange(val){        //基础规则类型修改
+                if(!val){
+                    this.baseTermTypeList =[];
+                    return;
+                }
+                this.groupData.basLibType='';
+                this.clearConcept();    //清空医学标准术语
+                this.clearNumText();    //清空数值、医学内容
+                const obj = this.baseTypes.find((it)=>it.type===val);
+                this.baseTermTypeList = obj.subMenuList;
+            },
+            subCodeChange(val){        //基础规则术语类型修改
+                this.groupData.basLibType=val;
+                if((this.numTypes+',').indexOf(val+',')>-1){
+                    this.groupData.dataType='1';
+                }else{
+                    this.groupData.dataType='';
+                }
+                this.clearConcept();
+                this.clearNumText();
+            },
+            clearConcept(){
+                this.groupData.basConceptId='';
+                this.conceptList=[];
+            },
+            clearNumText(){
+                this.groupData.maxOperator='';
+                this.groupData.maxVal='';
+                this.groupData.maxUnit='';
+                this.groupData.minOperator='';
+                this.groupData.minVal='';
+                this.groupData.minUnit='';
+                this.groupData.eqValue='';
+                this.groupData.eqOperator='';
+            },
+            searchConcept(val){
+                const param = {
+                    excludedConceptIds:[this.groupData.basType],
+                    libType:this.groupData.basLibType,
+                    name:val,
+                };
+                api.searchConcept(param).then((res) => {
+                    if (res.data.code == '0') {
+                        const data = res.data.data;
+                        this.conceptList = data;
+                    }
+                }).catch((error) => {
+                    console.log(error);
+                });
+            },
+            addRule(){
+                this.$emit("addRule");
+                this.$emit('setRules');
+            },
+            delRule(){
+                this.$emit("delRule",this.ind);
+            },
+            warning(msg,type){
+                this.$message({
+                    showClose: true,
+                    message:msg,
+                    type:type||'warning'
+                })
+            },
+            showConfirmDialog(msg,resolve){
+                this.$alert(msg, '提示', {
+                    confirmButtonText: '确定',
+                    type: 'warning'
+                }).then(() => {
+                    resolve();
+                }).catch(() => {});
+            },
+        }
+    }
+</script>
+<style lang="less">
+    .groups-cont{
+        background: #fff;
+        border-bottom:2px solid #F5F5F5;
+        .conceptItem{
+            padding: 0 10px;
+            cursor: pointer;
+            height: 32px;
+            line-height: 32px;
+            &:hover{
+                background: #ebedf1;
+            }
+        }
+        .inner-oper{
+            padding: 15px 0 15px 21px;
+            .add-btn {
+                cursor: pointer;
+                img {
+                    vertical-align: middle;
+                }
+            }
+        }
+        .sub-condition-form{
+            padding: 20px;
+            position: relative;
+            border-bottom:1px solid #F5F5F5;
+            .del-btn{
+                color: #FF5B5B;
+                cursor: pointer;
+                position: absolute;
+                right: 20px;
+                top:20px;
+                z-index: 1;
+                &.disable{
+                    color: #B8B8B8;
+                }
+            }
+        }
+        .el-input__icon{
+            line-height: 32px;
+        }
+        .select-item{
+            &>div{
+                float: left;
+                margin-right: 10px;
+            }
+            .el-input{
+                width: auto;
+            }
+            input{
+                width: 95px;
+                line-height: 32px;
+                height: 32px;
+            }
+        }
+        .el-input,.el-input__inner{
+            width: 190px;
+            line-height: 32px;
+            height: 32px;
+        }
+        .el-button--danger.is-plain{
+            background: none;
+        }
+        .itemList {
+            position: absolute;
+            // display: none;
+            background: #fff;
+            width: 188px;
+            max-height: 160px;
+            border: 1px solid #DCDFE6;
+            left: 0;
+            top: 37px;
+            z-index: 2;
+            overflow-y: auto;
+        }
+        .el-form-item{
+            margin-bottom: 22px;
+            &.min-margin{
+                margin-bottom: 0;
+            }
+        }
+        .el-form-item__error{
+            top: auto;
+            white-space: nowrap;
+            background: #fff;
+        }
+        .el-input-number{
+            width: 95px;
+        }
+        .el-input-number.is-controls-right .el-input-number__decrease, .el-input-number.is-controls-right .el-input-number__increase{
+            width: 25px;
+            height: 15px;
+            line-height: 16px;
+        }
+        .el-col-3 {
+            width: 94px;
+        }
+    }
+</style>

+ 131 - 0
src/components/knowledgeExtra/DiagBaseType.vue

@@ -0,0 +1,131 @@
+<template>
+    <!--<el-form ref="form" class="add-new-form" label-width="130px" :model="data">-->
+   <div class="add-new-form">
+        <el-form-item label="诊断依据类型:" :prop="'klDiagnoseTypeVO.'+inx+'.conditionType'" class="diag-type">
+            <el-select v-model="data.conditionType"
+                       placeholder="请选择"
+                       size="small">
+                <el-option
+                        v-for="item in typeList"
+                        :key="item.ruleType"
+                        :label="item.name"
+                        :value="item.ruleType">
+                </el-option>
+            </el-select>
+        </el-form-item>
+        <DiagBaseGroup v-for="(group,i) in data.groupVO"
+                   ref="groups"
+                   :data="group"
+                   :diagTypeList="baseTypeList"
+                   :inx="i"
+                   :parInx="inx"
+                   :isLast="isLast&&data.groupVO.length===1"
+                   @setRules="setRules"
+                   @addGroup="addGroup"
+                   @delGroup="delGroup"></DiagBaseGroup>
+    <div class="group-oper">
+        <el-button size="small" @click="addDiag">+新增依据</el-button>
+        <el-button size="small" @click="copyDiag">复制依据</el-button>
+        <el-button :disabled="isLast" size="small" type="danger" plain @click="delGroup">-删除依据</el-button>
+    </div>
+          </div>
+       <!-- </el-form>-->
+      </template>
+      <script>
+          import DiagBaseGroup from './DiagBaseGroup';
+          import util from '../../api/utils.js'
+          export default {
+              name:'DiagBaseType',
+              props:['data','isLast','inx'],
+              data(){
+                  return {
+                      form:{},
+                      conditionType:'',
+                      typeObj:{},
+                      typeList:[],
+                      /*rules:{
+                          conditionType:[]
+                      }*/
+                  }
+              },
+              computed:{
+                baseTypeList:function(){
+                    return this.typeObj[this.data.conditionType];
+                }
+              },
+              created(){
+                  this.getTypeList();
+              },
+              methods:{
+                  setRules(){
+                      this.$emit('setRules');
+                  },
+                  getTypeList(){
+                      const typeListData = JSON.parse(localStorage.getItem("zskDiagList"));
+                      this.typeObj=util.formatObj(typeListData,'ruleType');
+                      this.typeList = typeListData;
+                  },
+                  addDiag(){
+                      this.$emit("addDiag");
+                  },
+                  delDiag(){
+                      this.$emit("delDiag",this.inx);
+                  },
+                  copyDiag(){
+                      this.$emit("copyDiag",this.inx);
+                  },
+                  addGroup(){
+                      const temp={
+                          "baseGroup": '',
+                          "conditionGroup": '',
+                          "fitNo": '',
+                          "klDiagnoseDetail": [{
+                              "basConceptId": '',
+                              "basDescription": "",
+                              "basLename": "",
+                              "basLibName": "",
+                              "basLibType": null,
+                              "basType": '',
+                              "eqOperator": "",
+                              "eqUnit": "",
+                              "eqValue": "",
+                              "maxOperator": "",
+                              "maxUnit": "",
+                              "maxVal": "",
+                              "minOperator": "",
+                              "minUnit": "",
+                              "minVal": ""
+                          }]
+                      };
+                      this.data.groupVO.push(temp);
+                      this.$emit('setRules');
+                  },
+                  delGroup(){
+                      this.data.groupVO.splice(this.inx,1);
+                  }
+              },
+              components:{
+                  DiagBaseGroup
+              }
+          }
+      </script>
+      <style lang="less" scoped>
+          .add-new-form{
+              background: #F5F5F5;
+              padding: 20px 0;
+          }
+          .diag-type{
+              background: #fff;
+              margin: 0 20px;
+              padding: 13px 0;
+          }
+          .group-oper{
+              margin: 20px 20px 0 20px;
+              background: #fff;
+              padding: 13px 0;
+              text-align: center;
+              .el-button{
+                  margin-right: 60px;
+              }
+          }
+      </style>

+ 22 - 109
src/routes.js

@@ -210,6 +210,8 @@ import AboutDisease from '@components/knowledgeExtra/AboutDisease.vue'
 import DiseaseTree from '@components/knowledgeExtra/DiseaseTree.vue'   
 import AutoKnowledgeMapRuleTest from '@components/autoTest/AutoKnowledgeMapRuleTest.vue';
 import AutoBillCommonTest from '@components/autoTest/AutoBillCommonTest.vue';
+import ZskDiagBase from '@components/knowledgeExtra/DiagBase.vue';      //知识库拓展-诊断依据维护
+import AddZskDiagBase from '@components/knowledgeExtra/AddDiagBase.vue';
 
 export default [
     {
@@ -516,21 +518,21 @@ export default [
                 component: DisclaimerDetailCDSS,
                 name: 'DisclaimerDetailCDSS',
             }, //免责声明维护--新增编辑
-            // {
-            //     path: 'LT-YYSYZDHCS-ZSTPGZCS',
-            //     component: KnowledgeMapRuleTest,
-            //     name: 'KnowledgeMapRuleTest',
-            // }, //知识图谱规则测试
+            {
+                path: 'LT-YYSYZDHCS-ZSTPGZCS',
+                component: KnowledgeMapRuleTest,
+                name: 'KnowledgeMapRuleTest',
+            }, //知识图谱规则测试
             {
                 path: 'LT-YYSYZDHCS-JTZSYSCS',
                 component: StaticKnowledgeMapTest,
                 name: 'StaticKnowledgeMapTest',
             }, //静态知识映射测试
-            // {
-            //     path: 'LT-YYSYZDHCS-ZSTPGZCS-TYGZCS',
-            //     component: BillCommonTest,
-            //     name: 'BillCommonTest',
-            // },
+            {
+                path: 'LT-YYSYZDHCS-ZSTPGZCS-TYGZCS',
+                component: BillCommonTest,
+                name: 'BillCommonTest',
+            },
             {
                 path: 'LT-YYSYZDHCS-ZSTPGZCS-SXGZCS',
                 component: BillFusionTest,
@@ -606,105 +608,16 @@ export default [
                 component: AddZskRule,
                 name: 'AddZskRule',
             },
-
-    { path: 'LT-CDSSSJWH-YYGL', component: HospitalCDSS, name: 'HospitalCDSS' }, //医院管理
-    { path: 'LT-CDSSSJWH-YYGLEDIT', component: AddHospitalCDSS, name: 'AddHospitalCDSS' }, //医院管理--新增编辑
-    { path: 'LT-CDSSSJWH-YYYHGL', component: HospitalUserCDSS, name: 'HospitalUserCDSS' }, //医院用户管理
-    {
-        path: 'LT-CDSSSJWH-YYYHGLEDIT',
-        component: AddHospitalUserCDSS,
-        name: 'AddHospitalUserCDSS',
-    }, //医院用户管理--添加用户
-    { path: 'LT-CDSSSJWH-BBWH', component: VersionCDSS, name: 'VersionCDSS' }, //CDSS版本信息维护
-    { path: 'LT-CDSSSJWH-BBWHEDIT', component: AddVersionCDSS, name: 'AddVersionCDSS' }, //CDSS版本信息维护--新增编辑
-    { path: 'LT-CDSSSJWH-BBWHDETAIL', component: VersionDetailCDSS, name: 'VersionDetailCDSS' }, //CDSS版本信息维护--详情
-    { path: 'LT-CDSSSJWH-MZSMWH', component: DisclaimerCDSS, name: 'DisclaimerCDSS' }, //免责声明维护
-    { path: 'LT-CDSSSJWH-MZSMWHEDIT', component: AddDisclaimerCDSS, name: 'AddDisclaimerCDSS' }, //免责声明维护--新增编辑
-    {
-        path: 'LT-CDSSSJWH-MZSMWHDETAIL',
-        component: DisclaimerDetailCDSS,
-        name: 'DisclaimerDetailCDSS',
-    }, //免责声明维护--新增编辑
-    // {
-    //     path: 'LT-YYSYZDHCS-ZSTPGZCS',
-    //     component: KnowledgeMapRuleTest,
-    //     name: 'KnowledgeMapRuleTest',
-    // }, //知识图谱规则测试
-    {
-        path: 'LT-YYSYZDHCS-JTZSYSCS',
-        component: StaticKnowledgeMapTest,
-        name: 'StaticKnowledgeMapTest',
-    }, //静态知识映射测试
-    // {
-    //     path: 'LT-YYSYZDHCS-ZSTPGZCS-TYGZCS',
-    //     component: BillCommonTest,
-    //     name: 'BillCommonTest',
-    // },
-    {
-        path: 'LT-YYSYZDHCS-ZSTPGZCS-SXGZCS',
-        component: BillFusionTest,
-        name: 'BillFusionTest',
-    },
-    {
-        path: 'LT-YYSYZDHCS-ZSTPGZCS-SYSJCGZCS',
-        component: CriticalLabTest,
-        name: 'CriticalLabTest',
-    },
-    {
-        path: 'LT-YYSYZDHCS-ZSTPGZCS-FZJCGZCS',
-        component: CriticalAuxTest,
-        name: 'CriticalAuxTest',
-    },
-    {
-        path: 'LT-YYSYZDHCS-ZSTPGZCS-GWYPGZCS',
-        component: HighRiskDrugTest,
-        name: 'HighRiskDrugTest',
-    },
-    {
-        path: 'LT-YYSYZDHCS-ZSTPGZCS-GWSSZHGZCS',
-        component: HighRiskOperationTest,
-        name: 'HighRiskOperationTest',
-    },
-    {
-        path: 'LT-YYSYZDHCS-ZSTPGZCS-QTHYGZCS',
-        component: OtherAssayRuleTest,
-        name: 'OtherAssayRuleTest',
-    },
-    {
-        path: 'LT-YYSYZDHCS-ZSTPGZCS-QTFJGZCS',
-        component: OtherAuxRuleTest,
-        name: 'OtherAuxRuleTest',
-    },
-    {
-        path: 'LT-YYSYZDHCS-ZSTPGZCS-QTFXGZCS',
-        component: OtherFusionRuleTest,
-        name: 'OtherFusionRuleTest',
-    },
-    {
-        path: 'LT-YYSYZDHCS-JTZSYSCS-WYSZD',
-        component: LessStaticOrNoMap,
-        name: 'LessStaticOrNoMap',
-    },
-    {
-        path: 'LT-ZSKJCWH-JCSYWH',
-        component: BasicTermsMaintenance,
-        name: 'BasicTermsMaintenance',
-    },
-    {
-        path: 'LT-ZSKJCWH-JCCXWH',
-        component: BasicPartOfSpeech,
-        name: 'BasicPartOfSpeech',
-    },
-    {
-        path: 'LT-ZSKJCWH-JCGXLXWH',
-        component: BasicRelationship,
-        name: 'BasicRelationship',
-    },
-    {
-        path: 'LT-ZSKJCWH-JCSYWH-EDIT',
-        component: AddTerm,
-        name: 'AddTerm',
-    },
+            {
+                path: 'LT-ZSKKZWH-ZUYJ',
+                component: ZskDiagBase,
+                name: 'ZskDiagBase',
+            },
+            {
+                path: 'LT-ZSKKZWH-TJZDYJ',
+                component: AddZskDiagBase,
+                name: 'AddZskDiagBase',
+            },
     {
         path: 'LT-ZSKKZWH-JTXXWH',
         component: StaticInfo,