MedicalRelation.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342
  1. <template>
  2. <div>
  3. <crumbs title="医学术语关系维护" :minWidth="titleWidth" class="knowledgeTitle">
  4. <el-form :inline="true" class="demo-form-inline">
  5. <el-form-item label="术语总条数:">
  6. <span>{{total}}条</span>
  7. </el-form-item>
  8. <el-form-item label="术语关系:">
  9. <el-select v-model="type" clearable placeholder="请选择" size="mini">
  10. <el-option
  11. v-for="item in typeList"
  12. :key="item.key"
  13. :label="item.name"
  14. :value="item.key">
  15. </el-option>
  16. </el-select>
  17. </el-form-item>
  18. <el-form-item label="起始术语:">
  19. <el-input size="mini" v-model="startName" placeholder="输入术语"></el-input>
  20. </el-form-item>
  21. <el-form-item label="终点术语:">
  22. <el-input size="mini" v-model="endName" placeholder="输入术语"></el-input>
  23. </el-form-item>
  24. <el-form-item label="状态:">
  25. <el-select v-model="isState" clearable placeholder="请选择" size="mini">
  26. <el-option
  27. v-for="item in stateSelect"
  28. :key="item.id"
  29. :label="item.name"
  30. :value="item.id">
  31. </el-option>
  32. </el-select>
  33. </el-form-item>
  34. <el-form-item>
  35. <el-button size="mini" @click="filterDatas">确认</el-button>
  36. </el-form-item>
  37. </el-form>
  38. <el-form class="secLine">
  39. <el-form-item>
  40. <el-button size="mini" @click="uploadClick">导入</el-button>
  41. <input type="file" name="uploadfile " id="upFile" @change="uploadFile($event)" accept=".csv, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet">
  42. <router-link to="/admin/LT-YXSYKWH-TJYXSYGX" style="margin:0 10px">
  43. <el-button size="mini" type="warning">添加医学术语关系</el-button>
  44. </router-link>
  45. </el-form-item>
  46. </el-form>
  47. </crumbs>
  48. <div class="contents knowledgeContents">
  49. <el-table :data="list"
  50. border
  51. style="width: 100%">
  52. <el-table-column
  53. type="index"
  54. :index="indexMethod"
  55. label="编号"
  56. width="60">
  57. </el-table-column>
  58. <el-table-column
  59. prop="operTime"
  60. label="操作时间"
  61. :show-overflow-tooltip="true">
  62. </el-table-column>
  63. <el-table-column
  64. prop="startName"
  65. label="起始术语"
  66. show-overflow-tooltip>
  67. </el-table-column>
  68. <el-table-column
  69. prop="startType"
  70. label="起始类型"
  71. show-overflow-tooltip>
  72. </el-table-column>
  73. <el-table-column
  74. prop="relationName"
  75. label="关系"
  76. show-overflow-tooltip>
  77. </el-table-column>
  78. <el-table-column
  79. prop="endName"
  80. label="终点术语"
  81. show-overflow-tooltip>
  82. </el-table-column>
  83. <el-table-column
  84. prop="endType"
  85. label="终点类型"
  86. show-overflow-tooltip>
  87. </el-table-column>
  88. <el-table-column
  89. label="状态"
  90. show-overflow-tooltip>
  91. <template slot-scope="scope">
  92. <span :class="scope.row.isDeleted == 'N'?'':'delete'">
  93. {{scope.row.isDeleted == 'N'?'启用中':'已删除'}}
  94. </span>
  95. </template>
  96. </el-table-column>
  97. <el-table-column
  98. prop="operName"
  99. label="操作人">
  100. </el-table-column>
  101. <el-table-column
  102. label="操作">
  103. <template slot-scope="scope">
  104. <el-button type="text" size="small" :class="scope.row.isDeleted == 'N'?'delete':'review'" @click="showDelDialog(scope.row)">{{scope.row.isDeleted == 'N'?'删除':'恢复'}}</el-button>
  105. </template>
  106. </el-table-column>
  107. </el-table>
  108. <el-pagination v-if="total>pageSize"
  109. :current-page.sync="currentPage"
  110. @current-change="currentChange"
  111. background
  112. :page-size="pageSize"
  113. layout="total,prev, pager, next, jumper"
  114. :total="total">
  115. </el-pagination>
  116. </div>
  117. </div>
  118. </template>
  119. <script>
  120. import api from '@api/icss.js';
  121. export default {
  122. name: 'MedicalRelation',
  123. data: function () {
  124. return {
  125. list: [],
  126. stateSelect:[
  127. {id:'N',name:'启用中'},
  128. {id:'Y',name:'已删除'},
  129. ],
  130. isState:'',
  131. cacheData: {},
  132. currentPage: 1,
  133. pageSize: 10,
  134. total: 0,
  135. startName:'',
  136. endName:'',
  137. type:'',
  138. typeList:[],
  139. titleWidth:'1070px' //头部最小宽度
  140. }
  141. },
  142. created() {
  143. this.getDataList();
  144. // this.getRelationList();
  145. const typeList = JSON.parse(localStorage.getItem("knowledgeEnumsData"));
  146. if(typeList){
  147. this.typeList = typeList.lexiconRSTypeEnum;
  148. }
  149. },
  150. methods: {
  151. toEditProduct(row){
  152. // this.$router.push({
  153. // name:'AddSimilarName',
  154. // params: {id:row.questionId,name:row.questionName}
  155. // })
  156. },
  157. filterDatas(){
  158. this.currentPage = 1;
  159. this.getDataList(1);
  160. },
  161. getDataList(flag) {
  162. const param = this.getFilterItems();
  163. const param1 = {
  164. "current": this.currentPage,
  165. "endName": this.endName,
  166. "relationId": this.type,
  167. "size": this.pageSize,
  168. "startName": this.startName,
  169. "isDeleted":this.isState
  170. }
  171. const params = this.type?param1:param;
  172. api.knowledgeRelation(params).then((res) => {
  173. if (res.data.code == '0') {
  174. const data = res.data.data;
  175. for(let j = 0;j < data.records.length;j++){
  176. data.records[j].condition = (data.records[j].isDeleted == 'N'?'启用中':'已删除')
  177. }
  178. this.list = data.records;
  179. if(!flag){//搜索时不缓存
  180. this.cacheData[params.current] = data.records;
  181. }else{
  182. this.cacheData = {}
  183. }
  184. this.total = data.total;
  185. }
  186. }).catch((error) => {
  187. console.log(error);
  188. });
  189. },
  190. /*getRelationList(){
  191. const param = {
  192. 'code':'',
  193. 'name':''
  194. }
  195. api.getAllRelationType(param).then((res)=>{
  196. const result = res.data;
  197. if(result.code==0){
  198. this.typeList = result.data;
  199. }else{
  200. this.$message({
  201. message:result.msg || "数据请求失败",
  202. type:'warning'
  203. })
  204. }
  205. })
  206. },*/
  207. getFilterItems() {
  208. const param = {
  209. current: this.currentPage,
  210. size: this.pageSize,
  211. startName: this.startName,
  212. endName: this.endName,
  213. isDeleted:this.isState
  214. };
  215. return param;
  216. },
  217. indexMethod(index) {
  218. return ((this.currentPage - 1) * this.pageSize) + index + 1;
  219. },
  220. currentChange(next) {
  221. this.currentPage = next;
  222. if (this.cacheData[next]) { //如果已请求过该页数据,则使用缓存不重复请求
  223. this.list = this.cacheData[next];
  224. } else {
  225. this.getDataList();
  226. }
  227. },
  228. warning(msg,type){
  229. this.$message({
  230. showClose: true,
  231. message:msg,
  232. type:type||'warning'
  233. })
  234. },
  235. showConfirmDialog(msg,resolve){
  236. this.$alert(msg, '提示', {
  237. confirmButtonText: '确定',
  238. type: 'warning'
  239. }).then(() => {
  240. resolve();
  241. }).catch(() => {});
  242. },
  243. showDelDialog(item){
  244. const params = {
  245. id:item.id,
  246. isDeleted:item.isDeleted === 'N'?'Y':'N'
  247. }
  248. let warningTxt = item.isDeleted === 'N'?'是否删除该关系?可能对现有系统造成影响':'是否重新启用该条数据?'
  249. this.showConfirmDialog(warningTxt,()=>{
  250. api.delKnowledgeRelation(params).then((res)=>{
  251. if(res.data.code=='0'){
  252. this.warning(res.data.msg||'操作成功','success');
  253. this.getDataList();
  254. }else{
  255. this.warning(res.data.msg);
  256. }
  257. }).catch((error)=>{
  258. this.warning(error);
  259. })
  260. });
  261. },
  262. uploadClick(){
  263. let inp = document.getElementById("upFile");
  264. inp.click();
  265. },
  266. uploadFile(e){
  267. let fileInfo = e.target.files[0];
  268. e.preventDefault();
  269. let formData = new FormData();
  270. formData.append('uploadfile', fileInfo);
  271. const header = {
  272. headers:{
  273. 'Content-Type': 'multipart/form-data'
  274. }
  275. }
  276. api.RelationUpload(formData,header).then((res)=>{
  277. if(res.data.code==0){
  278. this.$message({
  279. message: '上传成功',
  280. type: 'success',
  281. });
  282. this.getDataList()
  283. }else{
  284. /*this.$message({
  285. dangerouslyUseHTMLString: true,
  286. message:res.data.msg,
  287. type:'warning'
  288. });*/
  289. // 7-22 改成确定按钮
  290. this.$alert(res.data.msg,'错误信息',{
  291. dangerouslyUseHTMLString: true,
  292. confirmButtonText: '确定',
  293. callback: action => {
  294. /*this.$message({
  295. type: 'info',
  296. message: `action: ${ action }`
  297. });*/
  298. }
  299. });
  300. }
  301. })
  302. this.getDataList();
  303. //解决上传相同文件不触发change
  304. let inp = document.getElementById("upFile");
  305. inp.value = "";
  306. }
  307. }
  308. }
  309. </script>
  310. <style lang="less" scoped>
  311. @import "../../less/admin.less";
  312. /deep/ .container.knowledgeTitle {
  313. height: 80px;
  314. }
  315. /deep/ .contents.knowledgeContents {
  316. padding: 104px 20px 0;
  317. }
  318. /deep/ .secLine.el-form {
  319. float: right;
  320. display: block;
  321. position: relative;
  322. top: -5px;
  323. }
  324. .delete{
  325. color: red;
  326. }
  327. .review{
  328. color: #22ccc8;
  329. }
  330. .el-table .cell{
  331. overflow: hidden;
  332. white-space: nowrap;
  333. }
  334. #upFile{
  335. display: none !important;
  336. }
  337. </style>