KnowledgeMapRuleTest.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. <template>
  2. <div>
  3. <crumbs title="知识图谱规则测试" class="topBack">
  4. <el-form :inline="true" class="demo-form-inline">
  5. <el-form-item
  6. label=""
  7. class="selectMedicine"
  8. style="marginbottom: -1px"
  9. >
  10. <el-select
  11. size="mini"
  12. v-model="hospitalId"
  13. placeholder="选择医院"
  14. @change="handleChange"
  15. >
  16. <el-option
  17. v-for="item in hospitalData"
  18. :label="item.name"
  19. :value="item.id"
  20. :key="item.id"
  21. ></el-option>
  22. </el-select>
  23. </el-form-item>
  24. <el-form-item style="marginbottom: 0px">
  25. <el-button size="mini" @click="exportData"
  26. >导出图谱中规则未涉及到的医院术语</el-button
  27. >
  28. </el-form-item>
  29. <el-form-item style="marginbottom: 0px">
  30. <el-button size="mini" @click="handleAllTest">所有规则测试</el-button>
  31. </el-form-item>
  32. </el-form>
  33. </crumbs>
  34. <div style="margin: 60px 20px 0">
  35. <el-table :data="list" border>
  36. <el-table-column
  37. :resizable="false"
  38. type="index"
  39. :index="indexMethod"
  40. label="编号"
  41. width="80"
  42. ></el-table-column>
  43. <el-table-column
  44. :resizable="false"
  45. prop="caseName"
  46. label="规则类型"
  47. show-overflow-tooltip
  48. ></el-table-column>
  49. <el-table-column
  50. :resizable="false"
  51. prop="gmtModified"
  52. label="测试时间"
  53. ></el-table-column>
  54. <el-table-column
  55. :resizable="false"
  56. prop="ruleNum"
  57. label="总条数"
  58. show-overflow-tooltip
  59. ></el-table-column>
  60. <el-table-column label="成功条数">
  61. <template slot-scope="scope">
  62. <el-button
  63. type="text"
  64. size="small"
  65. @click="goToFailedOrSuccessPage(scope.row, 'success')"
  66. >{{ scope.row.ruleSuccessNum }}</el-button
  67. >
  68. </template>
  69. </el-table-column>
  70. <el-table-column label="失败条数">
  71. <template slot-scope="scope">
  72. <el-button
  73. type="text"
  74. size="small"
  75. @click="goToFailedOrSuccessPage(scope.row, 'failed')"
  76. >{{ scope.row.ruleFailedNum }}</el-button
  77. >
  78. </template>
  79. </el-table-column>
  80. <el-table-column label="操作">
  81. <template slot-scope="scope">
  82. <el-button type="text" size="small" @click="handleTest(scope.row)"
  83. >执行测试</el-button
  84. >
  85. </template>
  86. </el-table-column>
  87. </el-table>
  88. </div>
  89. </div>
  90. </template>
  91. <script>
  92. import api from '@api/cdss.js';
  93. import config from '@api/config.js';
  94. import utils from '@api/utils.js';
  95. export default {
  96. name: 'KnowledgeMapRuleTest',
  97. data() {
  98. return {
  99. list: [],
  100. hospitalData: [],
  101. hospitalId: '', //选中医院
  102. };
  103. },
  104. created() {
  105. this._getHospitalInfoCDSS();
  106. // this.getDataList();
  107. },
  108. methods: {
  109. indexMethod(index) {
  110. return index + 1;
  111. },
  112. // 执行测试
  113. handleTest(row) {
  114. const { caseName, caseId } = row;
  115. let billType; // 开单合理性规则类型 1 通用 2 输血
  116. if (caseName === '开单合理性提醒_通用规则') {
  117. billType = 1;
  118. } else if (caseName === '开单类型提醒_输血规则') {
  119. billType = 2;
  120. }
  121. let params = {
  122. caseId,
  123. billType,
  124. hospitalId: this.hospitalId,
  125. };
  126. api.billRuleTest(params).then((res) => {
  127. console.log(res, '测试结果');
  128. });
  129. },
  130. // 所有规则测试
  131. handleAllTest() {
  132. if (this.hospitalId === '') {
  133. this.$message({
  134. message: '请先选择医院',
  135. type: 'warning',
  136. });
  137. return;
  138. }
  139. api.ruleAllTest({ hospitalId: this.hospitalId }).then((res) => {
  140. console.log(res, '所有规则测试测试结果');
  141. });
  142. },
  143. // 跳转至失败/成功条数页面
  144. goToFailedOrSuccessPage(row, type) {
  145. const page = this.handleGoPage(row.caseName)
  146. this.$router.push({
  147. name: page,
  148. params: { data: { ...row }, type },
  149. });
  150. },
  151. // 处理跳转到的页面
  152. handleGoPage(caseName){
  153. switch(caseName){
  154. case '开单合理性提醒_通用规则':
  155. return 'BillCommonTest'
  156. case '开单类型提醒_输血规则':
  157. return 'BillFusionTest'
  158. default:
  159. return null
  160. }
  161. },
  162. // 获取医院信息
  163. _getHospitalInfoCDSS() {
  164. api.getHospitalInfo().then((res) => {
  165. if (res.data.code === '0') {
  166. this.hospitalData = res.data && res.data.data;
  167. }
  168. });
  169. },
  170. // 选中医院
  171. handleChange(val) {
  172. if (val === '') return;
  173. this.getDataList(val);
  174. },
  175. // 获取列表数据
  176. getDataList(id) {
  177. const params = {
  178. hospitalId: id,
  179. };
  180. this.searched = true;
  181. const loading = this.$loading({
  182. lock: true,
  183. text: 'Loading',
  184. spinner: 'el-icon-loading',
  185. background: 'rgba(0, 0, 0, 0.7)',
  186. });
  187. api.getCaseResultList(params).then((res) => {
  188. loading.close();
  189. if (res.data.code === '0') {
  190. this.list = res.data && res.data.data;
  191. }
  192. });
  193. },
  194. // 导出
  195. exportData() {
  196. if (this.hospitalId === '') {
  197. this.$message({
  198. message: '请先选择医院',
  199. type: 'warning',
  200. });
  201. return;
  202. }
  203. this.$alert('确定要导出规则未使用映射关系吗?', '', {
  204. confirmButtonText: '确定',
  205. title: '提示',
  206. type: 'warning',
  207. })
  208. .then(() => {
  209. api.exportRuleExcel({ hospitalId: this.hospitalId }).then((res) => {
  210. if (res.status === 200) {
  211. this.$message({ message: '导出成功', type: 'success' });
  212. utils.downloadExportedData(res.data, '规则未使用映射关系.xls');
  213. }
  214. });
  215. })
  216. .catch(() => {});
  217. },
  218. },
  219. };
  220. </script>
  221. <style lang="less" scored>
  222. @import '../../../less/admin.less';
  223. </style>