DiagCheckRule.vue 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <template>
  2. <div>
  3. <div style="margin-top: 10px;margin-bottom: 20px;">
  4. <el-row>
  5. <el-col :span='4' class="base_box" v-if='description'>
  6. <span class="base_box" >规则名称:</span>
  7. <span class="base_box">{{description}}</span>
  8. </el-col>
  9. <el-col :span='4' class="base_box">
  10. <span class="base_box" >规则类型:</span>
  11. <span class="base_box">{{row.ruleTypeName||'-'}}</span>
  12. </el-col>
  13. <el-col :span='4' class="base_box">
  14. <span class="base_box" >规则术语类型:</span>
  15. <span class="base_box">{{row.libTypeName||'-'}}</span>
  16. </el-col>
  17. <el-col :span='4' class="base_box">
  18. <span class="base_box" >医学标准术语:</span>
  19. <span class="base_box">{{row.libName||'-'}}</span>
  20. </el-col>
  21. <el-col :span='4' v-if='baseLibType' class="base_box">
  22. <span class="base_box" >基础规则术语类型:</span>
  23. <span class="base_box">{{transType(baseTermTypeList,baseLibType)}}</span>
  24. </el-col>
  25. <el-col :span='4' v-if='baseLibName' class="base_box">
  26. <span class="base_box" >基础医学标准术语:</span>
  27. <span class="base_box">{{baseLibName}}</span>
  28. </el-col>
  29. </el-row>
  30. <!-- 原选项做法 -->
  31. <!-- <el-form :inline="true" style="margin-top: 10px;height: 45px;">
  32. <el-form-item label="基础规则术语类型:">
  33. <el-select v-model="filter.baseLibType" clearable placeholder="请选择" size="mini">
  34. <el-option v-for="item in baseTermTypeList2" :key="item.val" :label="item.name"
  35. :value="item.val">
  36. </el-option>
  37. </el-select>
  38. </el-form-item>
  39. <el-form-item label="基础医学标准术语:">
  40. <el-input size="mini" v-model="" placeholder="请输入" clearable></el-input>
  41. </el-form-item>
  42. <el-form-item>
  43. <el-button size="mini" @click="getRuleDetail">确认</el-button>
  44. </el-form-item>
  45. </el-form> -->
  46. </div>
  47. <el-main>
  48. <ux-grid ref="plxTable" :merge-cells="tdSpanArr" show-overflow style="width: 100%;" height="600px">
  49. <ux-table-column field="id" :title="'组(共'+total+'组)'" width="120"></ux-table-column>
  50. <ux-table-column field="description" title="规则名称"></ux-table-column>
  51. <ux-table-column field="msg" title="附加信息" show-overflow-tooltip></ux-table-column>
  52. <ux-table-column field="baseType" title="基础规则类型">
  53. <template slot-scope="scope">
  54. {{transDataMap(baseTypeList)[scope.row.baseType]}}
  55. </template>
  56. </ux-table-column>
  57. <ux-table-column prop="baseLibType" title="基础规则术语类型">
  58. <template slot-scope="scope">
  59. {{transDataMap(baseTermTypeList)[scope.row.baseLibType]}}
  60. </template>
  61. </ux-table-column>
  62. <ux-table-column field="baseLibName" title="基础医学标准术语"></ux-table-column>
  63. <ux-table-column field="baseMinOperator" title="最小域比较符" width="80"></ux-table-column>
  64. <ux-table-column field="baseMinValue" title="最小域值" width="80"></ux-table-column>
  65. <ux-table-column field="baseMinUnit" title="最小域单位" width="80"></ux-table-column>
  66. <ux-table-column field="baseMaxOperator" title="最大域比较符" width="80"></ux-table-column>
  67. <ux-table-column field="baseMaxValue" title="最大域值" width="80"></ux-table-column>
  68. <ux-table-column field="baseMaxUnit" title="最大域单位" width="80"></ux-table-column>
  69. <ux-table-column field="baseEqValue" title="等于阈值" width="80"></ux-table-column>
  70. <ux-table-column field="baseEqUnit" title="等于域单位" width="80"></ux-table-column>
  71. </ux-grid>
  72. </el-main>
  73. </div>
  74. </template>
  75. <script>
  76. import api from '@api/knowledgeLib.js';
  77. export default {
  78. name: 'CheckRule',
  79. data: function() {
  80. return {
  81. tdSpanArr: this.mergeCells,
  82. pos: 0,
  83. filter: {
  84. baseLibType: "",
  85. baseLibName: ""
  86. },
  87. baseTermTypeList2: [],
  88. total: this.ruleTeamNum,
  89. };
  90. },
  91. created() {
  92. this.baseTermTypeList2 = this.baseTermTypeList;
  93. this.filter.baseLibName=this.baseLibName;
  94. this.filter.baseLibType=this.baseLibType;
  95. },
  96. // 监听
  97. watch:{
  98. baseLibName: {
  99. handler(newName, oldName) {
  100. this.getRuleDetail()
  101. },
  102. deep: true,
  103. immediate: true,
  104. },
  105. baseLibType: {
  106. handler(newName, oldName) {
  107. this.getRuleDetail()
  108. },
  109. deep: true,
  110. immediate: true,
  111. }
  112. },
  113. mounted(){
  114. this.$refs.plxTable.reloadData(this.rulelist)
  115. //this.loading.close();
  116. },
  117. props: ['loading','mergeCells','rulelist','ruleTeamNum', 'baseTypeList', 'baseTermTypeList', 'row', 'description','baseLibType','baseLibName'],
  118. methods: {
  119. //类型转换
  120. transType(obj,data){
  121. console.log(obj)
  122. obj.map((item)=>{
  123. if(item.val==data){
  124. data=item.name
  125. }
  126. })
  127. return data
  128. },
  129. transDataMap(data){
  130. const obj = {};
  131. data.map((it)=>{
  132. obj[it.val] = it.name;
  133. });
  134. return obj;
  135. },
  136. getRuleDetail() {
  137. const param = {
  138. baseLibName: this.baseLibName,
  139. baseLibType: this.baseLibType,
  140. description: this.description,
  141. libName: this.row.libName,
  142. libType: this.row.libType,
  143. ruleType: this.row.ruleType,
  144. }
  145. api.zskgetRuleDetail(param).then((res) => {
  146. if (res.data.code == "0") {
  147. let datalist =[]
  148. const data=res.data.data.ruleConditionDTOList;
  149. this.total = data.length;
  150. let mergeArr = [];
  151. for(let i in data){
  152. let datai = data[i];
  153. const dtoList = datai.ruleBaseDTOList;
  154. for(let j=0;j<dtoList.length;j++){
  155. const isFirst = j===0;
  156. if(isFirst){
  157. const len = datalist.length;
  158. mergeArr.push({ row: len, col: 0, rowspan: dtoList.length, colspan: 1 },
  159. { row: len, col: 1, rowspan: dtoList.length, colspan: 1 },
  160. { row: len, col: 2, rowspan: dtoList.length, colspan: 1 });
  161. }
  162. datalist.push({
  163. id: +i+1,
  164. rowspan:isFirst?dtoList.length:0,
  165. colspan:isFirst?1:0,
  166. ruleGroup:datai.ruleGroup,
  167. msg:datai.msg,
  168. description:datai.description,
  169. ...dtoList[j]
  170. })
  171. }
  172. }
  173. this.tdSpanArr=mergeArr;
  174. this.$refs.plxTable.reloadData(datalist);
  175. }else{
  176. this.$message(res.data.msg||'获取详情失败,请稍后重试');
  177. }
  178. })
  179. .catch((error) => {
  180. this.$message(error.msg||'接口出错');
  181. });
  182. },
  183. }
  184. };
  185. </script>
  186. <style scoped lang="less">
  187. /deep/.el-table .cell {
  188. line-height: 25px;
  189. }
  190. .span1 {
  191. font-weight: bolder;
  192. }
  193. /deep/.el-form--inline .el-form-item__label {
  194. font-weight: bolder;
  195. font-size: 14px;
  196. }
  197. .base_box{
  198. display: flex;
  199. align-items: top;
  200. }
  201. </style>