|
@@ -3,72 +3,73 @@
|
|
<crumbs :title="title" :param="$route.params" linkTo="ZskRuleManager"></crumbs>
|
|
<crumbs :title="title" :param="$route.params" linkTo="ZskRuleManager"></crumbs>
|
|
<div class="contents">
|
|
<div class="contents">
|
|
<div class="content">
|
|
<div class="content">
|
|
- <!-- <el-form ref="form" :label-position="labelPosition" label-width="95px" class="add-admin-form" :model="form" :rules="rules"> -->
|
|
|
|
<el-form ref="form" :label-position="labelPosition" class="add-new-form" label-width="130px" :model="form" :rules="rules">
|
|
<el-form ref="form" :label-position="labelPosition" class="add-new-form" label-width="130px" :model="form" :rules="rules">
|
|
- <el-form-item label="规则名称:" prop="name">
|
|
|
|
- <el-input v-model.trim = "form.name"></el-input>
|
|
|
|
|
|
+ <el-form-item label="规则名称:" prop="parDescription">
|
|
|
|
+ <el-input v-model.trim = "form.parDescription"></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="规则类型:" prop="ruleType">
|
|
|
|
- <el-select v-model="form.ruleType"
|
|
|
|
|
|
+ <el-form-item label="规则类型:" prop="parRuleType">
|
|
|
|
+ <el-select v-model="form.parRuleType"
|
|
placeholder="请选择"
|
|
placeholder="请选择"
|
|
- size="small">
|
|
|
|
|
|
+ size="small"
|
|
|
|
+ @change="ruleTypeChange">
|
|
<el-option
|
|
<el-option
|
|
v-for="item in ruleTypeList"
|
|
v-for="item in ruleTypeList"
|
|
- :key="item.name"
|
|
|
|
|
|
+ :key="item.id"
|
|
:label="item.name"
|
|
:label="item.name"
|
|
- :value="item.name">
|
|
|
|
|
|
+ :value="item.id">
|
|
</el-option>
|
|
</el-option>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="规则术语类型:" prop="ruleTermType">
|
|
|
|
- <el-select v-model="form.ruleTermType"
|
|
|
|
|
|
+ <el-form-item label="规则术语类型:" prop="parLibTypeId">
|
|
|
|
+ <el-select v-model="form.parLibTypeId"
|
|
placeholder="请选择"
|
|
placeholder="请选择"
|
|
- size="small">
|
|
|
|
|
|
+ size="small" @change="ruleTermChange">
|
|
<el-option
|
|
<el-option
|
|
v-for="item in ruleTermTypeList"
|
|
v-for="item in ruleTermTypeList"
|
|
- :key="item.name"
|
|
|
|
|
|
+ :key="item.id"
|
|
:label="item.name"
|
|
:label="item.name"
|
|
- :value="item.name">
|
|
|
|
|
|
+ :value="item.code">
|
|
</el-option>
|
|
</el-option>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item class="addDepartFormItem" label="医学标准术语:" prop="term">
|
|
|
|
- <el-input @focus="focuInput" v-model.trim = "form.term" suffix-icon="el-icon-search"></el-input>
|
|
|
|
- <ul class="itemList" v-show="conceptList.length>0">
|
|
|
|
|
|
+ <el-form-item class="addDepartFormItem" label="医学标准术语:" prop="parConceptName">
|
|
|
|
+ <el-input @focus="inputFocus" @input="searchConcept" v-model="form.parConceptName" suffix-icon="el-icon-search"></el-input>
|
|
|
|
+ <ul class="itemList" v-show="showList&&conceptList.length>0">
|
|
<li
|
|
<li
|
|
v-for="item in conceptList"
|
|
v-for="item in conceptList"
|
|
- class="diagItem ellipsis"
|
|
|
|
|
|
+ class="conceptItem ellipsis"
|
|
:title="item.conceptName"
|
|
:title="item.conceptName"
|
|
- @click="selectDiag(item)"
|
|
|
|
|
|
+ @click="selectConcept(item)"
|
|
:key="item.conceptId">
|
|
:key="item.conceptId">
|
|
{{item.conceptNameType||item.conceptName}}
|
|
{{item.conceptNameType||item.conceptName}}
|
|
</li>
|
|
</li>
|
|
</ul>
|
|
</ul>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="有无子条件:" prop="hasSub">
|
|
|
|
- <el-select v-model="form.hasSub"
|
|
|
|
|
|
+ <el-form-item label="有无子条件:" prop="parHasSub">
|
|
|
|
+ <el-select v-model="form.parHasSub"
|
|
placeholder="请选择"
|
|
placeholder="请选择"
|
|
size="small">
|
|
size="small">
|
|
<el-option
|
|
<el-option
|
|
v-for="item in hasSub"
|
|
v-for="item in hasSub"
|
|
- :key="item.name"
|
|
|
|
|
|
+ :key="item.id"
|
|
:label="item.name"
|
|
:label="item.name"
|
|
- :value="item.key">
|
|
|
|
|
|
+ :value="item.id">
|
|
</el-option>
|
|
</el-option>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="附加信息:" prop="remind" class="discDesc">
|
|
|
|
- <el-input type="textarea" :rows="3" placeholder="请输入附加信息" v-model="form.remind" maxlength="121"></el-input>
|
|
|
|
|
|
+ <el-form-item label="附加信息:" prop="remind" class="parMsg">
|
|
|
|
+ <el-input type="textarea" :rows="3" placeholder="请输入附加信息" v-model="form.parMsg" maxlength="121"></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item v-if="form.hasSub==='1'" label="规则内容:" prop="remind" class="discDesc">
|
|
|
|
|
|
+ <el-form-item v-if="form.parHasSub==='1'" label="规则内容:" prop="remind" class="discDesc">
|
|
<SubRulesGroup v-for="(group,i) in subGroups"
|
|
<SubRulesGroup v-for="(group,i) in subGroups"
|
|
:data="group"
|
|
:data="group"
|
|
|
|
+ :baseTypes="baseTypeList"
|
|
:inx="i"
|
|
:inx="i"
|
|
:isLast="subGroups.length===1"
|
|
:isLast="subGroups.length===1"
|
|
@addGroup="addGroup"
|
|
@addGroup="addGroup"
|
|
@delGroup="delGroup"></SubRulesGroup>
|
|
@delGroup="delGroup"></SubRulesGroup>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-button class="disclButn" size="small" type="primary" @click="confirm('form')">保存</el-button>
|
|
|
|
|
|
+ <el-button class="disclButn" size="small" type="primary" @click="confirm">保存</el-button>
|
|
</el-form>
|
|
</el-form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -84,30 +85,37 @@
|
|
labelPosition:'left',
|
|
labelPosition:'left',
|
|
isFirst:true,
|
|
isFirst:true,
|
|
title:'规则维护-添加规则',
|
|
title:'规则维护-添加规则',
|
|
- searchConcept:'',
|
|
|
|
ruleTermTypeList:[],
|
|
ruleTermTypeList:[],
|
|
ruleTypeList:[],
|
|
ruleTypeList:[],
|
|
conceptList:[],
|
|
conceptList:[],
|
|
|
|
+ baseTypeList:[],
|
|
|
|
+ conceptName:'',
|
|
|
|
+ showList:false,
|
|
subGroups:[[{
|
|
subGroups:[[{
|
|
- name:'',
|
|
|
|
- ruleType:'',
|
|
|
|
- termType:'',
|
|
|
|
- normTerm:'',
|
|
|
|
- type:'',
|
|
|
|
- max:'',
|
|
|
|
- min:'',
|
|
|
|
- text:''
|
|
|
|
|
|
+ subDescription:'',
|
|
|
|
+ parRuleType:'',
|
|
|
|
+ subConceptId:'',
|
|
|
|
+ subType:'',
|
|
|
|
+ subMaxOperator:'',
|
|
|
|
+ subMaxUnit:'',
|
|
|
|
+ subMaxValue:'',
|
|
|
|
+ subMinOperator:'',
|
|
|
|
+ subMinUnit:'',
|
|
|
|
+ subMinValue:''
|
|
}]],
|
|
}]],
|
|
form:{
|
|
form:{
|
|
- ruleType:'',
|
|
|
|
- ruleTermType:'',
|
|
|
|
- term:'',
|
|
|
|
- hasSub:'1',
|
|
|
|
- remind:'',
|
|
|
|
|
|
+ parDescription:'',
|
|
|
|
+ parRuleType:'',
|
|
|
|
+ parConceptId:'',
|
|
|
|
+ parConceptName:'',
|
|
|
|
+ parHasSub:'',
|
|
|
|
+ parLibTypeId:'',
|
|
|
|
+ parMsg:'',
|
|
|
|
+ klRuleInfoSaveSub:[],
|
|
},
|
|
},
|
|
- id:null,
|
|
|
|
|
|
+ parId:null,
|
|
rules:{
|
|
rules:{
|
|
- name:[{ required: true, message: '请输入规则名称',trigger: ['blur'] },{
|
|
|
|
|
|
+ parDescription:[{ required: true, message: '请输入规则名称',trigger: ['blur'] },{
|
|
validator: (rule,value,callback)=>{
|
|
validator: (rule,value,callback)=>{
|
|
if(value.length>100){
|
|
if(value.length>100){
|
|
callback(new Error('规则名称不能超过100字'));
|
|
callback(new Error('规则名称不能超过100字'));
|
|
@@ -115,11 +123,11 @@
|
|
callback();
|
|
callback();
|
|
}}, trigger: 'change'
|
|
}}, trigger: 'change'
|
|
}],
|
|
}],
|
|
- ruleType:[{ required: true, message: '请选择规则类型',trigger: ['blur'] }],
|
|
|
|
- ruleTermType:[{ required: true, message: '请选择规则术语类型',trigger: ['blur'] }],
|
|
|
|
- term:[{ required: true, message: '请输入医学标准术语',trigger: ['blur'] }],
|
|
|
|
- hasSub:[{ required: true, message: '请选择有无子条件',trigger: ['blur'] }],
|
|
|
|
- remind:[{
|
|
|
|
|
|
+ parRuleType:[{ required: true, message: '请选择规则类型',trigger: ['blur'] }],
|
|
|
|
+ parLibTypeId:[{ required: true, message: '请选择规则术语类型',trigger: ['blur'] }],
|
|
|
|
+ parConceptName:[{ required: true, message: '请输入医学标准术语',trigger: ['blur'] }],
|
|
|
|
+ parHasSub:[{ required: true, message: '请选择有无子条件',trigger: ['blur'] }],
|
|
|
|
+ parMsg:[{
|
|
validator: (rule,value,callback)=>{
|
|
validator: (rule,value,callback)=>{
|
|
if(value.length>300){
|
|
if(value.length>300){
|
|
callback(new Error('附加信息不能超过300字'));
|
|
callback(new Error('附加信息不能超过300字'));
|
|
@@ -128,12 +136,7 @@
|
|
}}, trigger: 'change'
|
|
}}, trigger: 'change'
|
|
}]
|
|
}]
|
|
},
|
|
},
|
|
- pickerOptions1:{
|
|
|
|
- disabledDate(time) {
|
|
|
|
- return time.getTime() < Date.now();
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- hasSub:[{name:'有',key:'1'},{name:'无',key:'0'},
|
|
|
|
|
|
+ hasSub:[{name:'有',id:'1'},{name:'无',id:'0'},
|
|
]
|
|
]
|
|
}
|
|
}
|
|
},
|
|
},
|
|
@@ -141,20 +144,93 @@
|
|
let info = this.$route.params.data;
|
|
let info = this.$route.params.data;
|
|
if(info){
|
|
if(info){
|
|
this.id = info.id;
|
|
this.id = info.id;
|
|
- this.form=Object.assign({},this.form,info);
|
|
|
|
this.title = "规则维护-修改规则";
|
|
this.title = "规则维护-修改规则";
|
|
|
|
+ this.form=Object.assign({},this.form,info);
|
|
// this.getList();
|
|
// this.getList();
|
|
}
|
|
}
|
|
|
|
+ this.getTypeList();
|
|
},
|
|
},
|
|
components:{
|
|
components:{
|
|
SubRulesGroup
|
|
SubRulesGroup
|
|
},
|
|
},
|
|
methods:{
|
|
methods:{
|
|
- focuInput(){
|
|
|
|
-
|
|
|
|
|
|
+ searchConcept(val){
|
|
|
|
+ console.log(val)
|
|
|
|
+ const param = {
|
|
|
|
+ excludedConceptIds:[this.form.parRuleType],
|
|
|
|
+ libTypes:[this.form.parLibTypeId],
|
|
|
|
+ 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);
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ selectConcept(it){
|
|
|
|
+ this.form.parConceptName=it.conceptName;
|
|
|
|
+ this.form.parConceptId = it.conceptId;
|
|
|
|
+ this.showList = false;
|
|
},
|
|
},
|
|
- searchTerm(){
|
|
|
|
|
|
+ inputFocus(){
|
|
|
|
+ this.showList = !this.showList;
|
|
|
|
+ },
|
|
|
|
+ ruleTypeChange(val){ //规则类型选中
|
|
|
|
+ this.form.parRuleType=val;
|
|
|
|
+ this.form.parLibTypeId='';
|
|
|
|
+ const obj = this.ruleTypeList.find((it)=>it.id===val);//console.log(val)
|
|
|
|
+ this.ruleTermTypeList = obj.subMenuList;
|
|
|
|
+ this.setInitGroupData();
|
|
|
|
+ },
|
|
|
|
+ ruleTermChange(val){ //规则术语类型选中
|
|
|
|
+ this.form.parLibTypeId=val;
|
|
|
|
+ const obj = this.ruleTermTypeList.find((it)=>it.code===val);//console.log(val)
|
|
|
|
+ this.baseTypeList = obj.subMenuList;
|
|
|
|
+ this.setInitGroupData();
|
|
|
|
+ },
|
|
|
|
+ getTypeList(){
|
|
|
|
+ const typeListData = localStorage.getItem("zskTypesList");
|
|
|
|
+ if(typeListData){
|
|
|
|
+ this.ruleTypeList = typeListData;
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ api.getTypesList({}).then((res) => {
|
|
|
|
+ if (res.data.code == '0') {
|
|
|
|
+ const data = res.data.data;
|
|
|
|
+ this.ruleTypeList = data;
|
|
|
|
+ }
|
|
|
|
+ }).catch((error) => {
|
|
|
|
+ console.log(error);
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ setInitGroupData(){
|
|
|
|
+ this.subGroups = [[{
|
|
|
|
+ subDescription:'',
|
|
|
|
+ parRuleType:'',
|
|
|
|
+ subConceptId:'',
|
|
|
|
+ subType:'',
|
|
|
|
+ subMaxOperator:'',
|
|
|
|
+ subMaxUnit:'',
|
|
|
|
+ subMaxValue:'',
|
|
|
|
+ subMinOperator:'',
|
|
|
|
+ subMinUnit:'',
|
|
|
|
+ subMinValue:''
|
|
|
|
+ }]];
|
|
|
|
+ this.form.parConceptName='';//医学标准术语清空
|
|
|
|
+ this.conceptList=[]; //下拉列表清空
|
|
|
|
+ },
|
|
|
|
+ getDetail(){
|
|
|
|
+ api.ruleDetail({id}).then((res) => {
|
|
|
|
+ if (res.data.code == '0') {
|
|
|
|
+ const data = res.data.data;
|
|
|
|
|
|
|
|
+ }
|
|
|
|
+ }).catch((error) => {
|
|
|
|
+ console.log(error);
|
|
|
|
+ });
|
|
},
|
|
},
|
|
addGroup(){
|
|
addGroup(){
|
|
this.subGroups.push([{
|
|
this.subGroups.push([{
|
|
@@ -171,12 +247,38 @@
|
|
delGroup(i){
|
|
delGroup(i){
|
|
this.subGroups.splice(i,1);
|
|
this.subGroups.splice(i,1);
|
|
},
|
|
},
|
|
- confirm(form){
|
|
|
|
- this.$refs[form].validate((valid) => {
|
|
|
|
|
|
+ saveRule(params){
|
|
|
|
+ api.saveRule(params).then((res)=>{
|
|
|
|
+ if(res.data.code==0){
|
|
|
|
+ this.$message({
|
|
|
|
+ message:"添加成功",
|
|
|
|
+ type:'success'
|
|
|
|
+ });
|
|
|
|
+ this.$router.push({name: 'ZskRuleManager'});
|
|
|
|
+ }else{
|
|
|
|
+ this.$message({
|
|
|
|
+ message:res.data.msg,
|
|
|
|
+ type:'warning'
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ formatGroups(){
|
|
|
|
+ let obj = [];
|
|
|
|
+ this.subGroups.map((item,i)=>{
|
|
|
|
+ item.map((it)=>{
|
|
|
|
+ obj.push({groupType:i,...it});
|
|
|
|
+ })
|
|
|
|
+ });
|
|
|
|
+ return obj
|
|
|
|
+ },
|
|
|
|
+ confirm(){
|
|
|
|
+ this.$refs['form'].validate((valid) => {
|
|
if (valid) {
|
|
if (valid) {
|
|
- if(this.id){//修改
|
|
|
|
- const param = Object.assign({},this.form,{id:this.id?this.id:undefined})
|
|
|
|
- api.saveRule(param).then((res)=>{
|
|
|
|
|
|
+ this.form.klRuleInfoSaveSub = this.formatGroups();
|
|
|
|
+ if(this.parId){//修改
|
|
|
|
+ const params = Object.assign({},this.form,{id:this.parId?this.parId:undefined})
|
|
|
|
+ /*api.saveRule(param).then((res)=>{
|
|
if(res.data.code==0){
|
|
if(res.data.code==0){
|
|
this.$message({
|
|
this.$message({
|
|
message:"修改成功",
|
|
message:"修改成功",
|
|
@@ -193,24 +295,13 @@
|
|
type:'warning'
|
|
type:'warning'
|
|
});
|
|
});
|
|
}
|
|
}
|
|
- })
|
|
|
|
|
|
+ })*/
|
|
}else{//添加
|
|
}else{//添加
|
|
- const params = Object.assign({},this.form,{'id':this.id});
|
|
|
|
- api.saveRule(params).then((res)=>{
|
|
|
|
- if(res.data.code==0){
|
|
|
|
- this.$message({
|
|
|
|
- message:"添加成功",
|
|
|
|
- type:'success'
|
|
|
|
- });
|
|
|
|
- this.$router.push({name: 'ZskRuleManager'});
|
|
|
|
- }else{
|
|
|
|
- this.$message({
|
|
|
|
- message:res.data.msg,
|
|
|
|
- type:'warning'
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
|
|
+ //const params = Object.assign({},this.form);
|
|
|
|
+ this.saveRule(this.form)
|
|
|
|
+ //console.log(params)
|
|
}
|
|
}
|
|
|
|
+ //this.saveRule(params);
|
|
} else {
|
|
} else {
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
@@ -228,6 +319,15 @@
|
|
color: #545455;
|
|
color: #545455;
|
|
min-width: 980px;
|
|
min-width: 980px;
|
|
position: relative;
|
|
position: relative;
|
|
|
|
+ .conceptItem{
|
|
|
|
+ padding: 0 10px;
|
|
|
|
+ cursor: pointer;
|
|
|
|
+ height: 32px;
|
|
|
|
+ line-height: 32px;
|
|
|
|
+ &:hover{
|
|
|
|
+ background: #ebedf1;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
.discDesc{
|
|
.discDesc{
|
|
margin-bottom: 20px;
|
|
margin-bottom: 20px;
|
|
}
|
|
}
|
|
@@ -248,10 +348,10 @@
|
|
position: absolute;
|
|
position: absolute;
|
|
// display: none;
|
|
// display: none;
|
|
background: #fff;
|
|
background: #fff;
|
|
- width: 162px;
|
|
|
|
- max-height: 150px;
|
|
|
|
|
|
+ width: 188px;
|
|
|
|
+ max-height: 160px;
|
|
border: 1px solid #DCDFE6;
|
|
border: 1px solid #DCDFE6;
|
|
- left: 54px;
|
|
|
|
|
|
+ left: 0;
|
|
top: 37px;
|
|
top: 37px;
|
|
z-index: 2;
|
|
z-index: 2;
|
|
overflow-y: auto;
|
|
overflow-y: auto;
|