TaskDetail.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. <template>
  2. <div>
  3. <crumbs title="详情" :param="$route.params" linkTo="AutoTestTask">
  4. <el-form :inline="true" class="demo-form-inline" style="max-width: 870px;text-align: right;">
  5. <el-form-item label="所属医院:">
  6. <el-select size="mini" v-model="filter.hospitalId" placeholder="所属医院" clearable>
  7. <el-option v-for="item in hisTypes" :label="item.name" :value="item.id" :key="item.id"></el-option>
  8. </el-select>
  9. </el-form-item>
  10. <el-form-item label="所属模块:">
  11. <el-select size="mini" v-model="filter.casesId" placeholder="所属模块" clearable>
  12. <el-option v-for="item in fieldTypes" :label="item.name" :value="item.id" :key="item.id"></el-option>
  13. </el-select>
  14. </el-form-item>
  15. <el-form-item label="缺陷名称:">
  16. <el-input size="mini" v-model="filter.entryName" placeholder="缺陷名称"></el-input>
  17. </el-form-item>
  18. <el-form-item label="条目编码:">
  19. <el-input size="mini" v-model="filter.entryCode" placeholder="条目编码"></el-input>
  20. </el-form-item>
  21. <el-form-item label="状态:">
  22. <el-select size="mini" v-model="filter.status" placeholder="状态" clearable>
  23. <el-option v-for="item in statusTypes" :label="item.name" :value="item.id" :key="item.id"></el-option>
  24. </el-select>
  25. </el-form-item>
  26. <el-form-item>
  27. <el-button size="mini" @click="filterDatas">确认</el-button>
  28. </el-form-item>
  29. </el-form>
  30. </crumbs>
  31. <div class="contents">
  32. <el-table :data="list"
  33. border
  34. v-loading="loading"
  35. element-loading-text="拼命加载中"
  36. element-loading-spinner="el-icon-loading"
  37. element-loading-background="rgba(0, 0, 0, 0.6)"
  38. style="width: 100%">
  39. <el-table-column
  40. type="index"
  41. :index="indexMethod"
  42. label="编号"
  43. width="60">
  44. </el-table-column>
  45. <el-table-column
  46. prop="gmtModified"
  47. label="所属医院"
  48. width="110"
  49. :formatter="hisFormatter"
  50. :show-overflow-tooltip="true">
  51. </el-table-column>
  52. <el-table-column
  53. prop="casesName"
  54. width="110"
  55. label="所属模块">
  56. </el-table-column>
  57. <el-table-column
  58. prop="entryName"
  59. label="缺陷名称">
  60. </el-table-column>
  61. <el-table-column
  62. prop="entryCode"
  63. width="120"
  64. label="条目编码">
  65. </el-table-column>
  66. <el-table-column
  67. prop="amount"
  68. width="80"
  69. label="差异数量">
  70. </el-table-column>
  71. <el-table-column
  72. width="145"
  73. prop="behospitalCodeStr"
  74. label="病人住院序号">
  75. </el-table-column>
  76. <el-table-column
  77. prop="status"
  78. width="80"
  79. :formatter="statusFormatter"
  80. label="状态">
  81. </el-table-column>
  82. <el-table-column
  83. prop="remark"
  84. width="60"
  85. label="备注">
  86. </el-table-column>
  87. <el-table-column
  88. label="操作" width="100">
  89. <template slot-scope="scope">
  90. <el-button type="text" size="small" @click="showEditDialog(scope.row)">修改</el-button>
  91. <span style="margin:0 3px;">|</span>
  92. <!--<el-button type="text" size="small" @click="toEditField(scope.row, 'copy')">复制</el-button>
  93. <span style="margin:0 3px;">|</span>-->
  94. <el-button type="text" size="small" class="delete" @click="showDelDialog(scope.row.id)">删除</el-button>
  95. </template>
  96. </el-table-column>
  97. </el-table>
  98. <el-pagination v-if="total>pageSize"
  99. :current-page.sync="currentPage"
  100. @current-change="currentChange"
  101. background
  102. :page-size="pageSize"
  103. layout="total,prev, pager, next, jumper"
  104. :total="total">
  105. </el-pagination>
  106. </div>
  107. <el-dialog title="修改" :visible.sync="dialogVisible" class="autotest-dialog">
  108. <el-form>
  109. <el-form-item label="状态:" label-width="80">
  110. <el-select size="mini" v-model="status" placeholder="状态">
  111. <el-option v-for="item in editStatus" :label="item.name" :value="item.id" :key="item.id"></el-option>
  112. </el-select>
  113. </el-form-item>
  114. <el-form-item label="备注:" label-width="80">
  115. <el-input type="textarea"
  116. v-model="remark"
  117. placeholder="请输入备注"
  118. :rows="3"
  119. autocomplete="off"></el-input>
  120. </el-form-item>
  121. </el-form>
  122. <div slot="footer" class="dialog-footer">
  123. <el-button type="primary" @click="editTaskDetail">确 定</el-button>
  124. </div>
  125. </el-dialog>
  126. </div>
  127. </template>
  128. <script>
  129. import api from '@api/qualityControl.js';
  130. import { Loading } from 'element-ui';
  131. export default {
  132. name: 'AutoTestList',
  133. data: function () {
  134. return {
  135. list: [],
  136. tagType:[1],
  137. currentPage: 1,
  138. pageSize: 10,
  139. total: 0,
  140. loading: false,
  141. fieldTypes:[],
  142. searched:false,
  143. hisTypes:[],
  144. statusTypes:[
  145. {id:null,name:'全部'},
  146. {id:0,name:'未处理'},
  147. {id:1,name:'已处理'},
  148. ],
  149. editStatus:[
  150. {id:0,name:'未处理'},
  151. {id:1,name:'已处理'},
  152. ],
  153. taskName:"",
  154. dialogVisible:false,
  155. editId:'',
  156. remark:'',
  157. status:'',
  158. filter: {
  159. hospitalId:'',
  160. entryName:'',
  161. entryCode: '',
  162. casesId:'',
  163. }
  164. }
  165. },
  166. created() {
  167. const _this=this;
  168. setTimeout(function() {
  169. _this.getAllTypes()
  170. },100);
  171. },
  172. watch:{
  173. 'filter':{
  174. handler:function(){
  175. this.searched = false;
  176. },
  177. deep:true
  178. }
  179. },
  180. beforeRouteEnter(to, from, next){
  181. next(vm => {
  182. //const pm = to.param;
  183. Object.assign(vm,to.params);
  184. vm.inCurrentPage=to.params.currentPage;
  185. })
  186. },
  187. methods: {
  188. getAllTypes(){
  189. api.getRecordHopitalList().then((res)=>{
  190. if(res.data.code==="0"){
  191. const data = res.data.data;
  192. this.hisTypes =data;
  193. this.getDataList();
  194. }else{
  195. this.warning("获取医院信息失败");
  196. }
  197. });
  198. api.getRecordCases().then((res)=>{
  199. if(res.data.code==="0"){
  200. const data = res.data.data;
  201. this.fieldTypes =data;
  202. }else{
  203. this.warning("获取模块信息失败");
  204. }
  205. });
  206. },
  207. statusFormatter(it){
  208. return +it.status===0?"未处理":"已处理";
  209. },
  210. hisFormatter(item){
  211. const field = this.hisTypes.filter((it)=>it.id==item.hospitalId);
  212. return field[0]?field[0].name:'';
  213. },
  214. showEditDialog(row){
  215. this.dialogVisible = true;console.log(row)
  216. this.editId = row.id;
  217. this.remark=row.remark;
  218. this.status = row.status;
  219. },
  220. editTaskDetail(){
  221. const param = {
  222. id:this.editId,
  223. remark:this.remark,
  224. status:this.status,
  225. };
  226. api.editTaskDetail(param).then((res) => {
  227. if (res.data.code == '0') {
  228. this.dialogVisible = false;
  229. this.warning(res.data.msg||'修改成功','success');
  230. this.getDataList();
  231. }
  232. }).catch((error) => {
  233. console.log(error);
  234. });
  235. },
  236. toTaskList(){
  237. const pam = this.searched ? {
  238. currentPage: this.currentPage,
  239. filter: this.filter
  240. } : {currentPage: this.currentPage};
  241. this.$router.push({name: 'AutoTestTask', params: pam});
  242. },
  243. filterDatas(){
  244. this.currentPage = 1;
  245. this.getDataList();
  246. },
  247. getDataList() {
  248. const param = this.getFilterItems();
  249. this.searched = true;
  250. api.getTaskDetailList(param).then((res) => {
  251. if (res.data.code == '0') {
  252. const data = res.data.data;
  253. this.list = data.records;
  254. this.total = data.total;
  255. }
  256. }).catch((error) => {
  257. console.log(error);
  258. });
  259. },
  260. getFilterItems() {
  261. const param = Object.assign({
  262. current: this.currentPage,
  263. size: this.pageSize,
  264. missionId:this.$route.params.id,
  265. },this.filter);
  266. return param;
  267. },
  268. indexMethod(index) {
  269. return ((this.currentPage - 1) * this.pageSize) + index + 1;
  270. },
  271. currentChange(next) {
  272. this.currentPage = next;
  273. this.getDataList();
  274. },
  275. warning(msg,type){
  276. this.$message({
  277. showClose: true,
  278. message:msg,
  279. type:type||'warning'
  280. })
  281. },
  282. showConfirmDialog(msg,resolve){
  283. this.$alert(msg, '提示', {
  284. confirmButtonText: '确定',
  285. type: 'warning'
  286. }).then(() => {
  287. resolve();
  288. }).catch(() => {});
  289. },
  290. showDelDialog(id){
  291. this.showConfirmDialog('是否删除该缺陷?',()=>{
  292. api.delTaskDetail({id:id}).then((res)=>{
  293. if(res.data.code=='0'){
  294. this.warning(res.data.msg||'操作成功','success');
  295. this.getDataList();
  296. }else{
  297. this.warning(res.data.msg);
  298. }
  299. }).catch((error)=>{
  300. this.warning(error);
  301. })
  302. });
  303. }
  304. }
  305. }
  306. </script>
  307. <style>
  308. .el-loading-spinner{
  309. top:200px;
  310. }
  311. .autotest-dialog .el-dialog__body{
  312. padding: 30px 20px;
  313. }
  314. .autotest-dialog .el-form-item__content{
  315. display: inline-block;
  316. width: 272px;
  317. }
  318. .autotest-dialog .el-dialog{
  319. width: 400px!important;
  320. }
  321. </style>
  322. <style lang="less" scoped>
  323. @import "../../less/admin.less";
  324. .delete{
  325. color: red !important;
  326. }
  327. div.container{
  328. height: 90px!important;
  329. }
  330. .contents{
  331. padding:120px 20px 0;
  332. }
  333. </style>