|
@@ -10,12 +10,18 @@
|
|
width: 100%;
|
|
width: 100%;
|
|
}
|
|
}
|
|
.btn_box {
|
|
.btn_box {
|
|
- width: 100px;
|
|
|
|
|
|
+ width: 100%;
|
|
height: 100%;
|
|
height: 100%;
|
|
- margin: 0 auto;
|
|
|
|
display: flex;
|
|
display: flex;
|
|
align-items: center;
|
|
align-items: center;
|
|
justify-content: space-around;
|
|
justify-content: space-around;
|
|
|
|
+ .btn_div {
|
|
|
|
+ flex: 1;
|
|
|
|
+ height: 40px;
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ justify-content: center;
|
|
|
|
+ }
|
|
img {
|
|
img {
|
|
width: 20px;
|
|
width: 20px;
|
|
height: 20px;
|
|
height: 20px;
|
|
@@ -31,6 +37,13 @@
|
|
/deep/ .el-form-item--mini.el-form-item,
|
|
/deep/ .el-form-item--mini.el-form-item,
|
|
.el-form-item--small.el-form-item {
|
|
.el-form-item--small.el-form-item {
|
|
margin: 0;
|
|
margin: 0;
|
|
|
|
+ width: 100%;
|
|
|
|
+ }
|
|
|
|
+ display: flex;
|
|
|
|
+ // flex-wrap: wrap;
|
|
|
|
+ .type_content_item {
|
|
|
|
+ // flex: 1;
|
|
|
|
+ // min-width: 200px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -39,20 +52,61 @@
|
|
<template>
|
|
<template>
|
|
<!-- :prop="`klRuleInfoSaveSub[${scope.$index}].subDescription`" -->
|
|
<!-- :prop="`klRuleInfoSaveSub[${scope.$index}].subDescription`" -->
|
|
<div class="AddNewRuleTable">
|
|
<div class="AddNewRuleTable">
|
|
- <el-table border :data="klRuleInfoSaveSub" style="width: 100%" size="mini">
|
|
|
|
- <el-table-column width="100px" label="组" prop="groupType">
|
|
|
|
|
|
+ <el-table
|
|
|
|
+ border
|
|
|
|
+ :data="klRuleInfoSaveSub"
|
|
|
|
+ style="width: 100%"
|
|
|
|
+ size="mini"
|
|
|
|
+ stripe
|
|
|
|
+ :span-method="ObjectSpanMethod"
|
|
|
|
+ >
|
|
|
|
+ <el-table-column width="80px" label="组" prop="groupType">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<div class="btn_box">
|
|
<div class="btn_box">
|
|
- <img src="../../images/add-new-rule-sub.png" alt="" />
|
|
|
|
- <img src="../../images/add-new-rule-del.png" alt="" />
|
|
|
|
|
|
+ <div class="btn_div">
|
|
|
|
+ <img
|
|
|
|
+ @click="$emit('addGroup', null, { groupId: scope.row.groupId })"
|
|
|
|
+ src="../../images/add-new-rule-sub.png"
|
|
|
|
+ alt=""
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ <div class="btn_div">
|
|
|
|
+ <img
|
|
|
|
+ @click="$emit('delGroup', scope.row.groupId)"
|
|
|
|
+ v-if="!isLastDate(scope.row.groupId)"
|
|
|
|
+ src="../../images/add-new-rule-del.png"
|
|
|
|
+ alt=""
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column width="100px" label="基础规则" prop="groupType">
|
|
|
|
|
|
+ <el-table-column
|
|
|
|
+ width="80px"
|
|
|
|
+ v-if="maxNum"
|
|
|
|
+ label="基础规则"
|
|
|
|
+ prop="groupType"
|
|
|
|
+ >
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<div class="btn_box">
|
|
<div class="btn_box">
|
|
- <img src="../../images/add-new-rule-sub.png" alt="" />
|
|
|
|
- <img src="../../images/add-new-rule-del.png" alt="" />
|
|
|
|
|
|
+ <div class="btn_div">
|
|
|
|
+ <img
|
|
|
|
+ v-if="!isMax(scope.row.groupId)"
|
|
|
|
+ @click="
|
|
|
|
+ $emit('addGroup', scope.row.groupId, { index: scope.$index })
|
|
|
|
+ "
|
|
|
|
+ src="../../images/add-new-rule-sub.png"
|
|
|
|
+ alt=""
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ <div class="btn_div">
|
|
|
|
+ <img
|
|
|
|
+ @click="$emit('delGroupChild', scope.row.groupChildId)"
|
|
|
|
+ v-if="klRuleInfoSaveSub.length > 1"
|
|
|
|
+ src="../../images/add-new-rule-del.png"
|
|
|
|
+ alt=""
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
@@ -140,10 +194,12 @@
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column min-width="500px" label="规则具体内容" prop="">
|
|
|
|
|
|
+ <el-table-column label="规则具体内容" width="800px" prop="">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<div class="type_content">
|
|
<div class="type_content">
|
|
<el-form-item
|
|
<el-form-item
|
|
|
|
+ class="type_content_item"
|
|
|
|
+ style="flex: 1.5"
|
|
label="选择类型:"
|
|
label="选择类型:"
|
|
label-width="100px"
|
|
label-width="100px"
|
|
:prop="`klRuleInfoSaveSub[${scope.$index}].dataType`"
|
|
:prop="`klRuleInfoSaveSub[${scope.$index}].dataType`"
|
|
@@ -155,9 +211,14 @@
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<!-- v-if="klRuleInfoSaveSub[scope.$index].dataType === '1'" -->
|
|
<!-- v-if="klRuleInfoSaveSub[scope.$index].dataType === '1'" -->
|
|
- <el-form-item label="最大值:">
|
|
|
|
|
|
+ <el-form-item
|
|
|
|
+ class="type_content_item"
|
|
|
|
+ style="flex: 2"
|
|
|
|
+ label="最大值:"
|
|
|
|
+ v-if="scope.row.dataType === '1'"
|
|
|
|
+ >
|
|
<div>
|
|
<div>
|
|
- <el-col :span="3">
|
|
|
|
|
|
+ <el-col :span="6">
|
|
<el-form-item
|
|
<el-form-item
|
|
:prop="`klRuleInfoSaveSub[${scope.$index}].subMaxOperator`"
|
|
:prop="`klRuleInfoSaveSub[${scope.$index}].subMaxOperator`"
|
|
:rules="[
|
|
:rules="[
|
|
@@ -199,7 +260,7 @@
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-col>
|
|
- <el-col :span="3">
|
|
|
|
|
|
+ <el-col :span="6">
|
|
<el-form-item
|
|
<el-form-item
|
|
:prop="`klRuleInfoSaveSub[${scope.$index}].subMaxValue`"
|
|
:prop="`klRuleInfoSaveSub[${scope.$index}].subMaxValue`"
|
|
:rules="[
|
|
:rules="[
|
|
@@ -239,7 +300,7 @@
|
|
/>
|
|
/>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-col>
|
|
- <el-col :span="3">
|
|
|
|
|
|
+ <el-col :span="6">
|
|
<el-form-item
|
|
<el-form-item
|
|
:prop="`klRuleInfoSaveSub[${scope.$index}].subMaxUnit`"
|
|
:prop="`klRuleInfoSaveSub[${scope.$index}].subMaxUnit`"
|
|
:rules="rules.subMaxUnit"
|
|
:rules="rules.subMaxUnit"
|
|
@@ -253,9 +314,14 @@
|
|
</el-col>
|
|
</el-col>
|
|
</div>
|
|
</div>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="最小值:">
|
|
|
|
|
|
+ <el-form-item
|
|
|
|
+ class="type_content_item"
|
|
|
|
+ style="flex: 2"
|
|
|
|
+ label="最小值:"
|
|
|
|
+ v-if="scope.row.dataType === '1'"
|
|
|
|
+ >
|
|
<div class="select-item clearfix">
|
|
<div class="select-item clearfix">
|
|
- <el-col :span="3">
|
|
|
|
|
|
+ <el-col :span="6">
|
|
<el-form-item
|
|
<el-form-item
|
|
:prop="`klRuleInfoSaveSub[${scope.$index}].subMinOperator`"
|
|
:prop="`klRuleInfoSaveSub[${scope.$index}].subMinOperator`"
|
|
:rules="[
|
|
:rules="[
|
|
@@ -302,7 +368,7 @@
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-col>
|
|
- <el-col :span="3">
|
|
|
|
|
|
+ <el-col :span="6">
|
|
<el-form-item
|
|
<el-form-item
|
|
:prop="`klRuleInfoSaveSub[${scope.$index}].subMinValue`"
|
|
:prop="`klRuleInfoSaveSub[${scope.$index}].subMinValue`"
|
|
:rules="[
|
|
:rules="[
|
|
@@ -342,7 +408,7 @@
|
|
/>
|
|
/>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-col>
|
|
- <el-col :span="3">
|
|
|
|
|
|
+ <el-col :span="6">
|
|
<el-form-item
|
|
<el-form-item
|
|
:prop="`klRuleInfoSaveSub[${scope.$index}].subMinUnit`"
|
|
:prop="`klRuleInfoSaveSub[${scope.$index}].subMinUnit`"
|
|
:rules="rules.subMinUnit"
|
|
:rules="rules.subMinUnit"
|
|
@@ -358,7 +424,11 @@
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<!-- v-if="klRuleInfoSaveSub[scope.$index].subType !== 6 && klRuleInfoSaveSub[scope.$index].dataType === '2'" -->
|
|
<!-- v-if="klRuleInfoSaveSub[scope.$index].subType !== 6 && klRuleInfoSaveSub[scope.$index].dataType === '2'" -->
|
|
<el-form-item
|
|
<el-form-item
|
|
|
|
+ class="type_content_item"
|
|
|
|
+ style="flex: 2"
|
|
|
|
+ v-if="scope.row.subType !== 6 && scope.row.dataType === '2'"
|
|
label="医学内容:"
|
|
label="医学内容:"
|
|
|
|
+ label-width="100px"
|
|
:prop="`klRuleInfoSaveSub[${scope.$index}].subEqValue`"
|
|
:prop="`klRuleInfoSaveSub[${scope.$index}].subEqValue`"
|
|
:rules="[
|
|
:rules="[
|
|
{
|
|
{
|
|
@@ -386,7 +456,10 @@
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<!-- v-if="groupData.subType === 6" -->
|
|
<!-- v-if="groupData.subType === 6" -->
|
|
<el-form-item
|
|
<el-form-item
|
|
|
|
+ class="type_content_item"
|
|
label="正则表达式:"
|
|
label="正则表达式:"
|
|
|
|
+ style="flex: 2"
|
|
|
|
+ v-if="scope.row.subType === 6"
|
|
:prop="`klRuleInfoSaveSub[${scope.$index}].subEqValue`"
|
|
:prop="`klRuleInfoSaveSub[${scope.$index}].subEqValue`"
|
|
:rules="[
|
|
:rules="[
|
|
{
|
|
{
|
|
@@ -405,7 +478,7 @@
|
|
>
|
|
>
|
|
<el-input
|
|
<el-input
|
|
type="textarea"
|
|
type="textarea"
|
|
- rows="3"
|
|
|
|
|
|
+ rows="2"
|
|
placeholder="请输入正则表达式"
|
|
placeholder="请输入正则表达式"
|
|
v-model.trim="scope.row.subEqValue"
|
|
v-model.trim="scope.row.subEqValue"
|
|
></el-input>
|
|
></el-input>
|
|
@@ -438,21 +511,31 @@ export default {
|
|
};
|
|
};
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
|
|
+ // 判断是否为最后一条规则
|
|
|
|
+ isLastDate(id) {
|
|
|
|
+ const tableLength = this.klRuleInfoSaveSub.filter(
|
|
|
|
+ (item) => item.groupId !== id
|
|
|
|
+ ).length;
|
|
|
|
+ return tableLength === 0;
|
|
|
|
+ },
|
|
|
|
+ // 是否超出最大规则数
|
|
|
|
+ isMax(id) {
|
|
|
|
+ const typeNum = this.klRuleInfoSaveSub.filter(
|
|
|
|
+ (item) => item.groupId === id
|
|
|
|
+ ).length;
|
|
|
|
+ return typeNum >= this.maxNum;
|
|
|
|
+ },
|
|
// 基础规则类型选择
|
|
// 基础规则类型选择
|
|
subTypeChange(e, index) {
|
|
subTypeChange(e, index) {
|
|
- console.log(e, index);
|
|
|
|
this.$emit("subTypeChange", e, index);
|
|
this.$emit("subTypeChange", e, index);
|
|
},
|
|
},
|
|
//医学标准术语change
|
|
//医学标准术语change
|
|
subConceptIdfocus(index) {
|
|
subConceptIdfocus(index) {
|
|
- console.log(index);
|
|
|
|
this.subConceptIdIndex = "";
|
|
this.subConceptIdIndex = "";
|
|
this.subConceptIdIndex = index;
|
|
this.subConceptIdIndex = index;
|
|
},
|
|
},
|
|
// 医学标准术语
|
|
// 医学标准术语
|
|
searchConcept(val) {
|
|
searchConcept(val) {
|
|
- console.log(val);
|
|
|
|
- console.log("subConceptIdIndex", this.subConceptIdIndex);
|
|
|
|
const param = {
|
|
const param = {
|
|
excludedConceptIds: [
|
|
excludedConceptIds: [
|
|
this.klRuleInfoSaveSub[this.subConceptIdIndex].subType
|
|
this.klRuleInfoSaveSub[this.subConceptIdIndex].subType
|
|
@@ -471,6 +554,46 @@ export default {
|
|
.catch((error) => {
|
|
.catch((error) => {
|
|
console.log(error);
|
|
console.log(error);
|
|
});
|
|
});
|
|
|
|
+ },
|
|
|
|
+ // 处理要合并相同行的列
|
|
|
|
+ getSpanArr(data) {
|
|
|
|
+ this.spanArr = [];
|
|
|
|
+ for (var i = 0; i < data.length; i++) {
|
|
|
|
+ if (i === 0) {
|
|
|
|
+ // 如果是第一条记录(即索引是0的时候),向数组中加入1
|
|
|
|
+ /** *
|
|
|
|
+ * 例子:
|
|
|
|
+ * name:1
|
|
|
|
+ * name:1
|
|
|
|
+ * name:2
|
|
|
|
+ * name:2
|
|
|
|
+ * 最终结果:spanArr = [2,0,2,0]
|
|
|
|
+ */
|
|
|
|
+ this.spanArr.push(1);
|
|
|
|
+ this.pos = 0;
|
|
|
|
+ } else {
|
|
|
|
+ if (data[i].groupId === data[i - 1].groupId) {
|
|
|
|
+ // 如果remark相等就累加,并且push 0
|
|
|
|
+ this.spanArr[this.pos] += 1;
|
|
|
|
+ this.spanArr.push(0);
|
|
|
|
+ } else {
|
|
|
|
+ // 不相等push 1,并且pos 要换成当前下标
|
|
|
|
+ this.spanArr.push(1);
|
|
|
|
+ this.pos = i;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ // 合并单元格
|
|
|
|
+ ObjectSpanMethod({ row, column, rowIndex, columnIndex }) {
|
|
|
|
+ if (columnIndex == 0) {
|
|
|
|
+ const _row = this.spanArr[rowIndex];
|
|
|
|
+ const _col = _row > 0 ? 1 : 0;
|
|
|
|
+ return {
|
|
|
|
+ rowspan: _row,
|
|
|
|
+ colspan: _col
|
|
|
|
+ };
|
|
|
|
+ }
|
|
}
|
|
}
|
|
},
|
|
},
|
|
components: {
|
|
components: {
|
|
@@ -488,6 +611,12 @@ export default {
|
|
: "正则表达式";
|
|
: "正则表达式";
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
+ created() {
|
|
|
|
+ this.getSpanArr(this.klRuleInfoSaveSub);
|
|
|
|
+ },
|
|
|
|
+ beforeUpdate() {
|
|
|
|
+ this.getSpanArr(this.klRuleInfoSaveSub);
|
|
|
|
+ },
|
|
props: {
|
|
props: {
|
|
klRuleInfoSaveSub: {
|
|
klRuleInfoSaveSub: {
|
|
type: Array,
|
|
type: Array,
|
|
@@ -513,6 +642,9 @@ export default {
|
|
baseTermTypeList: {
|
|
baseTermTypeList: {
|
|
type: Array,
|
|
type: Array,
|
|
default: []
|
|
default: []
|
|
|
|
+ },
|
|
|
|
+ maxNum: {
|
|
|
|
+ default: null
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
};
|