|
@@ -33,7 +33,7 @@
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item class="addDepartFormItem" label="医学标准术语:" prop="subConceptId">
|
|
|
- <el-select clearable remote filterable :disabled="disabled" :remote-method="searchConcept" v-model="groupData.subConceptId">
|
|
|
+ <el-select clearable remote filterable :disabled="disabled" :remote-method="searchConcept" v-model.trim="groupData.subConceptId">
|
|
|
<el-option
|
|
|
v-for="item in conceptList"
|
|
|
:key="item.conceptId"
|
|
@@ -42,7 +42,7 @@
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item v-if="groupData.subType===2" label="选择类型:" prop="dataType">
|
|
|
+ <el-form-item v-if="groupData.subType===2&&showDataType" label="选择类型:" prop="dataType">
|
|
|
<el-select v-model="groupData.dataType"
|
|
|
placeholder="请选择"
|
|
|
size="small" @change="dataTypeChange">
|
|
@@ -56,7 +56,7 @@
|
|
|
</el-form-item>
|
|
|
<el-form-item class="min-margin" v-if="groupData.dataType==='1'" label="最大值:">
|
|
|
<div class="select-item clearfix">
|
|
|
- <el-col :span="4">
|
|
|
+ <el-col :span="3">
|
|
|
<el-form-item prop="subMaxOperator">
|
|
|
<el-select v-model="groupData.subMaxOperator"
|
|
|
placeholder="请选择"
|
|
@@ -70,21 +70,21 @@
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- <el-col :span="4">
|
|
|
+ <el-col :span="3">
|
|
|
<el-form-item prop="subMaxValue">
|
|
|
- <el-input-number controls-position="right" type="text" v-model="groupData.subMaxValue" placeholder="填写数值"/>
|
|
|
+ <el-input type="text" v-model="groupData.subMaxValue" placeholder="填写数值"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- <el-col :span="4">
|
|
|
+ <el-col :span="3">
|
|
|
<el-form-item prop="subMaxUnit">
|
|
|
- <el-input type="text" v-model="groupData.subMaxUnit" placeholder="填写单位"/>
|
|
|
+ <el-input type="text" v-model.trim="groupData.subMaxUnit" placeholder="填写单位"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
<el-form-item class="min-margin" v-if="groupData.dataType==='1'" label="最小值:">
|
|
|
<div class="select-item clearfix">
|
|
|
- <el-col :span="4">
|
|
|
+ <el-col :span="3">
|
|
|
<el-form-item prop="subMinOperator">
|
|
|
<el-select v-model="groupData.subMinOperator"
|
|
|
placeholder="请选择"
|
|
@@ -98,23 +98,23 @@
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- <el-col :span="4">
|
|
|
- <el-form-item prop="subMaxValue">
|
|
|
- <el-input-number controls-position="right" type="text" v-model="groupData.subMinValue" placeholder="填写数值"/>
|
|
|
+ <el-col :span="3">
|
|
|
+ <el-form-item prop="subMinValue">
|
|
|
+ <el-input type="text" v-model="groupData.subMinValue" placeholder="填写数值"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- <el-col :span="4">
|
|
|
+ <el-col :span="3">
|
|
|
<el-form-item prop="subMinUnit">
|
|
|
- <el-input type="text" v-model="groupData.subMinUnit" placeholder="填写单位"/>
|
|
|
+ <el-input type="text" v-model.trim="groupData.subMinUnit" placeholder="填写单位"/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
- <el-form-item v-if="groupData.subType!==6&&groupData.dataType==='2'" label="医学内容:" prop="subEqValue" class="discDesc">
|
|
|
- <el-input type="textarea" rows="3" placeholder="请输入医学内容" v-model="groupData.subEqValue"></el-input>
|
|
|
+ <el-form-item v-if="groupData.subType!==6&&groupData.dataType==='2'" label="医学内容:" prop="subEqValue" class="discDesc is-required">
|
|
|
+ <el-input type="textarea" rows="3" placeholder="请输入医学内容" v-model.trim="groupData.subEqValue"></el-input>
|
|
|
</el-form-item>
|
|
|
- <el-form-item v-if="groupData.subType===6" label="正则表达式:" prop="subEqValue" class="discDesc">
|
|
|
- <el-input type="textarea" rows="3" placeholder="请输入正则表达式" v-model="groupData.subEqValue"></el-input>
|
|
|
+ <el-form-item v-if="groupData.subType===6" label="正则表达式:" prop="subEqValue" class="discDesc is-required">
|
|
|
+ <el-input type="textarea" rows="3" placeholder="请输入正则表达式" v-model.trim="groupData.subEqValue"></el-input>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
<div class="inner-oper" v-if="showAdd">
|
|
@@ -130,8 +130,9 @@
|
|
|
props:['groupData','ind','isLast','baseTypes','firstPlace','disabled','showAdd'],
|
|
|
data(){
|
|
|
return {
|
|
|
- baseTermTypeList:[],
|
|
|
+ //baseTermTypeList:[],
|
|
|
typeList:[],
|
|
|
+ numTypes:'', //只有数值类型的类型id
|
|
|
operMaxList:[
|
|
|
{name:'<=',key:'<='},
|
|
|
{name:'<',key:'<'},
|
|
@@ -144,7 +145,7 @@
|
|
|
rules:{
|
|
|
subDescription:[{ required: true, message: '请输入基础规则名称',trigger: ['blur'] },{
|
|
|
validator: (rule,value,callback)=>{
|
|
|
- if(value.length>100){
|
|
|
+ if(value&&value.length>100){
|
|
|
callback(new Error('规则名称不能超过100字'));
|
|
|
}else{
|
|
|
callback();
|
|
@@ -156,7 +157,9 @@
|
|
|
dataType:[{ required: true, message: '请选择类型',trigger: ['change'] }],
|
|
|
subMaxOperator:[{
|
|
|
validator: (rule,value,callback)=>{
|
|
|
- if((!value)&&this.groupData.subMinOperator===''){
|
|
|
+ const {subMaxValue,subMinOperator,subMinValue}=this.groupData;
|
|
|
+ const val=value+subMinOperator+subMinValue+subMaxValue;
|
|
|
+ if(!val||(!value&&subMaxValue!=='')){
|
|
|
callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
|
|
|
}else{
|
|
|
callback();
|
|
@@ -164,13 +167,50 @@
|
|
|
}],
|
|
|
subMinOperator:[{
|
|
|
validator: (rule,value,callback)=>{
|
|
|
- if((!value)&&this.groupData.subMaxOperator===''){
|
|
|
+ const {subMaxValue,subMaxOperator,subMinValue}=this.groupData;
|
|
|
+ const val=value+subMaxOperator+subMinValue+subMaxValue;
|
|
|
+ if(!val||(!value&&subMinValue!=='')){
|
|
|
+ callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
|
|
|
+ }else{
|
|
|
+ callback();
|
|
|
+ }}, trigger: 'blur'
|
|
|
+ }],
|
|
|
+ subMaxValue:[{
|
|
|
+ validator: (rule,value,callback)=>{
|
|
|
+ const {subMaxOperator,subMinOperator,subMinValue}=this.groupData;
|
|
|
+ const val=value+subMaxOperator+subMinValue+subMinOperator;
|
|
|
+ const isNum=/^(\-|\+)?\d+(\.\d+)?$/.test(value);
|
|
|
+ if(!val||(value==''&&subMaxOperator)){
|
|
|
callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
|
|
|
+ }else if(value!==''&&!isNum){
|
|
|
+ callback(new Error('只能输入数字'));
|
|
|
+ }else{
|
|
|
+ callback();
|
|
|
+ }}, trigger: 'blur'
|
|
|
+ }],
|
|
|
+ subMinValue:[{
|
|
|
+ validator: (rule,value,callback)=>{
|
|
|
+ const {subMaxValue,subMinOperator,subMaxOperator}=this.groupData;
|
|
|
+ const val=value+subMaxOperator+subMaxValue+subMinOperator;
|
|
|
+ const isNum=/^(\-|\+)?\d+(\.\d+)?$/.test(value);
|
|
|
+ if(!val||(value==''&&subMinOperator)){
|
|
|
+ callback(new Error('最大值和最小值至少完整填写一个,单位不必填'));
|
|
|
+ }else if(value!==''&&!isNum){
|
|
|
+ callback(new Error('只能输入数字'));
|
|
|
+ }else{
|
|
|
+ callback();
|
|
|
+ }}, trigger: 'blur'
|
|
|
+ }],
|
|
|
+ subEqValue:[{
|
|
|
+ validator: (rule,value,callback)=>{
|
|
|
+ if(value===''){
|
|
|
+ callback(new Error('请输入'+this.textName));
|
|
|
+ }else if(value.length>200){
|
|
|
+ callback(new Error(this.textName+'不能超过200字'));
|
|
|
}else{
|
|
|
callback();
|
|
|
}}, trigger: 'blur'
|
|
|
}],
|
|
|
- subEqValue:[{ required: true, message: '请输入'+this.groupData.subType===6?"正则表达式":"医学内容",trigger: ['blur'] }],
|
|
|
},
|
|
|
}
|
|
|
},
|
|
@@ -181,7 +221,7 @@
|
|
|
},
|
|
|
deep:true
|
|
|
},
|
|
|
- 'baseTypes':{
|
|
|
+ /*'baseTypes':{
|
|
|
handler:function(val){
|
|
|
if(!this.groupData.subType){
|
|
|
this.baseTermTypeList =[];
|
|
@@ -191,15 +231,14 @@
|
|
|
this.baseTermTypeList = obj.subMenuList;
|
|
|
},
|
|
|
deep:true
|
|
|
- },
|
|
|
+ },*/
|
|
|
'firstPlace':{
|
|
|
handler:function(val) {
|
|
|
- if (!val) return;
|
|
|
- const types = val.checkedType.split("-");
|
|
|
- const sub = this.baseTypes.find((it) => it.ruleType === +types[0] && it.type === 2);
|
|
|
- this.groupData.subType = sub.type;
|
|
|
- this.baseTermTypeList = sub.subMenuList;
|
|
|
- this.groupData.subLenCode = this.baseTermTypeList.find((it) => it.ruleType === +types[0]).code;
|
|
|
+ if (this.ind!==0||!val) return;
|
|
|
+ const dict = localStorage.getItem("zskDicts").match(new RegExp(val.checkedType+'-\\d+','g'))||[];
|
|
|
+ const types = dict[0].split("-");
|
|
|
+ this.groupData.subType = +types[2];
|
|
|
+ this.groupData.subLenCode = types[1];
|
|
|
this.conceptList = [val];
|
|
|
this.groupData.subDescription = val.conceptName;
|
|
|
this.groupData.subConceptId = val.conceptId;
|
|
@@ -209,32 +248,44 @@
|
|
|
}
|
|
|
},
|
|
|
created(){
|
|
|
+ this.numTypes = localStorage.getItem("zskNumDict");
|
|
|
this.conceptList=[{conceptName:this.groupData.subLibName||this.groupData.subConceptName,conceptId:this.groupData.subConceptId}];
|
|
|
- if(this.groupData.subLenCode){
|
|
|
- this.baseTermTypeList=[{name:this.groupData.subLenName,code:this.groupData.subLenCode}];
|
|
|
+ },
|
|
|
+ computed:{
|
|
|
+ baseTermTypeList:function(){
|
|
|
+ if(!this.baseTypes.length){
|
|
|
+ return [];
|
|
|
+ }
|
|
|
+ const sub = this.baseTypes.find((it) => it.type === this.groupData.subType)||{};
|
|
|
+ return sub.subMenuList;
|
|
|
+ },
|
|
|
+ showDataType:function(){
|
|
|
+ return (this.numTypes+',').indexOf(this.groupData.subLenCode+',')===-1;
|
|
|
+ },
|
|
|
+ textName:function(){
|
|
|
+ return this.groupData.subType!==6&&this.groupData.dataType==='2'?'医学内容':'正则表达式';
|
|
|
}
|
|
|
},
|
|
|
methods:{
|
|
|
dataTypeChange(val){
|
|
|
- this.groupData.subEqOperator=val==='2'?'=':undefined;
|
|
|
- this.groupData.dataType=val;
|
|
|
+ this.groupData.subEqOperator=(val==='2'?'=':'');
|
|
|
this.clearNumText();
|
|
|
+ delete this.groupData.dataType; //触发更新
|
|
|
+ this.$set(this.groupData,'dataType',val);
|
|
|
},
|
|
|
subTypeChange(val){ //基础规则类型修改
|
|
|
this.groupData.subLenCode='';
|
|
|
this.groupData.dataType='';
|
|
|
this.clearConcept();
|
|
|
this.clearNumText();
|
|
|
- if(!val){
|
|
|
- this.baseTermTypeList =[];
|
|
|
- return;
|
|
|
- }
|
|
|
- const obj = this.baseTypes.find((it)=>it.type===val);
|
|
|
- this.baseTermTypeList = obj.subMenuList;
|
|
|
},
|
|
|
subCodeChange(val){ //基础规则术语类型修改
|
|
|
this.groupData.subLenCode=val;
|
|
|
- this.groupData.dataType='';
|
|
|
+ if((this.numTypes+',').indexOf(val+',')>-1){
|
|
|
+ this.groupData.dataType='1';
|
|
|
+ }else{
|
|
|
+ this.groupData.dataType='';
|
|
|
+ }
|
|
|
this.clearConcept();
|
|
|
this.clearNumText();
|
|
|
},
|
|
@@ -250,6 +301,7 @@
|
|
|
this.groupData.subMinValue='';
|
|
|
this.groupData.subMinUnit='';
|
|
|
this.groupData.subEqValue='';
|
|
|
+ this.groupData.subEqOperator='';
|
|
|
},
|
|
|
searchConcept(val){
|
|
|
const param = {
|
|
@@ -380,6 +432,7 @@
|
|
|
.el-form-item__error{
|
|
|
top: auto;
|
|
|
white-space: nowrap;
|
|
|
+ background: #fff;
|
|
|
}
|
|
|
.el-input-number{
|
|
|
width: 95px;
|
|
@@ -389,5 +442,8 @@
|
|
|
height: 15px;
|
|
|
line-height: 16px;
|
|
|
}
|
|
|
+ .el-col-3 {
|
|
|
+ width: 94px;
|
|
|
+ }
|
|
|
}
|
|
|
</style>
|