defectNumber.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363
  1. <template>
  2. <div class="dashboard-container">
  3. <div class="tableBox">
  4. <div class="block">
  5. <el-form :model="formData" class="demo-form-inline" label-suffix=":" label-width="74px">
  6. <el-row :gutter="20">
  7. <el-col :span="6">
  8. <el-form-item label="出院时间">
  9. <el-date-picker style="width: 94%;" v-model="formData.startTime" type="date" placeholder="出院开始日期"
  10. value-format="yyyyMMdd" format="yyyy年MM月dd日">
  11. </el-date-picker>
  12. </el-form-item>
  13. </el-col>
  14. <el-col :span="6">
  15. <el-form-item style="text-align: center;" label="至">
  16. <el-date-picker style="width: 94%;" v-model="formData.endTime" type="date" placeholder="出院结束日期"
  17. value-format="yyyyMMdd" format="yyyy年MM月dd日" @onClick="onClickEndTime">
  18. </el-date-picker>
  19. </el-form-item>
  20. </el-col>
  21. <el-col :span="6">
  22. <el-form-item label="病案号">
  23. <el-input v-model="formData.AAA28" placeholder="病案号"></el-input>
  24. </el-form-item>
  25. </el-col>
  26. <el-col :span="6" v-if="sort">
  27. <el-form-item label="医师姓名">
  28. <el-select v-model="doctor_name" multiple collapse-tags filterable clearable placeholder="全部" style="width: 100%;">
  29. <el-option v-for="(item, index) of doctorList" :key="index" :label="item" :value="item"></el-option>
  30. </el-select>
  31. </el-form-item>
  32. </el-col>
  33. <el-col :span="6">
  34. <el-form-item label="出院科室">
  35. <el-select v-model="formData.AAC11N" clearable filterable placeholder="全部" style="width: 100%;">
  36. <el-option v-for="(item, index) in departmentList" :label="item.name" :value="item.name" :key="index"></el-option>
  37. </el-select>
  38. </el-form-item>
  39. </el-col>
  40. <el-col :span="6" v-if="error_rule">
  41. <el-form-item label="质控类型">
  42. <el-select v-model="formData.rule_type" clearable filterable class="selects" placeholder="全部" style="width: 100%;">
  43. <el-option label="时效性" value="时效性"></el-option>
  44. <el-option label="专科质控" value="专科质控"></el-option>
  45. <el-option label="内涵质控" value="内涵质控"></el-option>
  46. <el-option label="检查报告质控" value="检查报告质控"></el-option>
  47. <el-option label="检验报告质控" value="检验报告质控"></el-option>
  48. <el-option label="专病质控" value="专病质控"></el-option>
  49. </el-select>
  50. </el-form-item>
  51. </el-col>
  52. <el-col :span="6" :offset="18">
  53. <el-form-item style="text-align: right;">
  54. <el-button plain @click="handleReset" icon="el-icon-refresh">重置</el-button>
  55. <el-button type="primary" @click="onSearch" class="export-btn" icon="el-icon-search">查询</el-button>
  56. </el-form-item>
  57. </el-col>
  58. </el-row>
  59. </el-form>
  60. </div>
  61. <el-table :data="tableData" style="width: 100%">
  62. <el-table-column type="index" label="序号" width="80"></el-table-column>
  63. <el-table-column prop="AAC11N" label="出院科室" width="200"></el-table-column>
  64. <el-table-column prop="AAA28" label="病案号" width="160">
  65. <template slot-scope="scope">
  66. <span class="blue" @click="funGoto(scope.row.MED_REC_ID, scope.row.rule_id)">
  67. {{ scope.row.AAA28 }}
  68. </span>
  69. </template>
  70. </el-table-column>
  71. <el-table-column prop="AAC01" label="出院时间" width="160"></el-table-column>
  72. <el-table-column prop="AAA01" label="患者姓名" width="160" v-if="error_rule"></el-table-column>
  73. <el-table-column prop="AEE03" label="主治医师" v-if="!error_rule"></el-table-column>
  74. <el-table-column prop="notice" label="缺陷问题描述" show-overflow-tooltip></el-table-column>
  75. <!-- <el-table-column prop="grading_scale" label="评分等级" v-if="sort == 'doc_count'"></el-table-column> -->
  76. <el-table-column prop="" label="扣分" v-if="sort == 'score'">
  77. <template slot-scope="scope">
  78. <span>
  79. {{ Number( scope.row.score ? (100 - scope.row.score) : 0 ) }}
  80. </span>
  81. </template>
  82. </el-table-column>
  83. </el-table>
  84. <!-- 分页控制 -->
  85. <mPagination v-if="tableData && tableData.length !== 0" :data="paginationData" @pageChangeEvent="pageHasChanged"></mPagination>
  86. </div>
  87. </div>
  88. </template>
  89. <script>
  90. import Title from '@/components/Title';
  91. import { mapGetters } from 'vuex';
  92. import mPagination from '@/components/m-pagination';
  93. export default {
  94. name: 'Dashboard',
  95. components: {
  96. Title,
  97. mPagination,
  98. },
  99. computed: {
  100. ...mapGetters(['name']),
  101. },
  102. data() {
  103. return {
  104. formData: {
  105. problem: 'all',
  106. AAC11N: '',
  107. time: [],
  108. startTime:'',
  109. endTime:'',
  110. recordNum: '',
  111. rule_type: '',
  112. },
  113. doctor_name:'', // 医师姓名
  114. error_rule: '',
  115. score:'',
  116. tableData: [],
  117. // 分页数据
  118. paginationData: {
  119. total: 10,
  120. currentPage: 1,
  121. pageSize: 10,
  122. },
  123. levelList: [], //问题属性
  124. departmentList: [],
  125. doctorList: [], // 医师姓名列表
  126. sort:''
  127. };
  128. },
  129. mounted() {
  130. let query = this.$route.query;
  131. this.formData.AAA28 = query.AAA28;//病案号
  132. this.formData.YQ_CODE = query.YQ_CODE.split(',');//院区
  133. this.formData.KS_CODE = query.KS_CODE.split(',');//科室
  134. this.formData.BQ_CODE = query.BQ_CODE.split(',');//病区
  135. this.error_rule = this.$route.query.rule_id;// 规则ID
  136. this.sort = this.$route.query.sort;
  137. this.doctor_name = this.$route.query.doctor_name;
  138. this.formData.time = [this.storageGet('start_time'),this.storageGet('end_time')];
  139. this.formData.startTime = query.startTime;
  140. this.formData.endTime = query.endTime;
  141. this.selectInfo();
  142. // 获取医生列表
  143. this.getDoctorList();
  144. this.funQuery();
  145. },
  146. methods: {
  147. // 获取医生列表
  148. getDoctorList(){
  149. this.$axios2.post('/case-quality/doctor_list').then(res => {
  150. this.doctorList = res.data;
  151. });
  152. },
  153. toBack() {
  154. this.$router.history.go(-1)
  155. },
  156. funGoto(ZYH, ruleId) {
  157. this.storageSet('getData', ZYH);
  158. this.storageSet('getDataRule', ruleId);
  159. this.goto('/caseViews')
  160. },
  161. selectInfo() {
  162. this.$axios.post('/selectInfo').then(res => {
  163. this.payList = res.data.pay;
  164. //支付方式 pay
  165. this.departmentList = res.data.department.slice(1, res.data.department.length);
  166. //出院科室 department
  167. this.levelList = res.data.level;
  168. });
  169. },
  170. pageHasChanged() {
  171. this.funQuery();
  172. },
  173. handleReset() {
  174. this.formData = {
  175. problem: 'all',
  176. AAC11N: '',
  177. time:'',
  178. startTime:'',
  179. endTime:'',
  180. recordNum: '',
  181. rule_type: '',
  182. };
  183. this.doctor_name = ''; // 医师姓名
  184. },
  185. onSearch() {
  186. this.paginationData.currentPage = 1
  187. this.funQuery()
  188. },
  189. funQuery() {
  190. //查询
  191. let pramse = {
  192. start_time: this.formData.startTime || '',
  193. end_time: this.formData.endTime || '',
  194. level: this.formData.level,
  195. page: this.paginationData.currentPage,
  196. limit: this.paginationData.pageSize,
  197. //AAA28: this.formData.recordNum, //住院号
  198. AAC11N: this.formData.AAC11N, //科室
  199. rule_type: this.formData.rule_type, //质控类型
  200. YQ_CODE: this.formData.YQ_CODE, //质控类型
  201. KS_CODE: this.formData.KS_CODE, //质控类型
  202. BQ_CODE: this.formData.BQ_CODE, //质控类型
  203. AAA28 : this.formData.AAA28 ,//病案号
  204. };
  205. if (this.error_rule) {
  206. pramse.error_rule = this.error_rule; // 规则ID
  207. }
  208. if (this.doctor_name) {
  209. pramse.doctor_name = this.doctor_name; // 医师姓名
  210. }
  211. this.$axios.post('CaseHistory/Terminal/qxBlNumberTableList', pramse).then(res => {
  212. this.paginationData.total = res.data.count;
  213. this.tableData = res.data.data;
  214. });
  215. }
  216. },
  217. };
  218. </script>
  219. <style scoped>
  220. ::v-deep.el-pagination.is-background .btn-next,
  221. ::v-deep.el-pagination.is-background .btn-prev,
  222. ::v-deep.el-pagination.is-background .el-pager li {
  223. margin: 0 5px;
  224. background-color: #fff;
  225. color: #606266;
  226. min-width: 30px;
  227. border-radius: 2px;
  228. border: 1px solid #dfe3f3;
  229. line-height: 27px;
  230. }
  231. ::v-deep.el-pagination.is-background .el-pager li:not(.disabled).active {
  232. background: #7e8bab;
  233. }
  234. ::v-deep.el-table .el-table__row td {
  235. color: #7e8bab;
  236. border-bottom: 1px solid #f4f4f4;
  237. }
  238. ::v-deep.el-table .el-table__header tr th:first-child {
  239. border-radius: 10px 0px 0px 10px;
  240. }
  241. ::v-deep.el-table .el-table__header tr th:last-child {
  242. border-radius: 0px 10px 10px 0px;
  243. }
  244. ::v-deep.el-table .el-table__header tr th {
  245. background: #f1f6ff;
  246. color: #13171e;
  247. border-bottom: 0px;
  248. }
  249. </style>
  250. <style lang="scss" scoped>
  251. .tableBox {
  252. background: #fff;
  253. padding: 19px;
  254. border-radius: 5px;
  255. font-size: 12px;
  256. }
  257. .block {
  258. background: #fff;
  259. border-radius: 5px;
  260. padding: 20px 30px;
  261. margin-bottom: 20px;
  262. .fBtn {
  263. display: flex;
  264. align-items: center;
  265. justify-content: center;
  266. }
  267. .bnh {
  268. margin-bottom: 20px;
  269. }
  270. .barBtn {
  271. display: flex;
  272. align-items: center;
  273. justify-content: center;
  274. }
  275. .selects {
  276. width: 100%;
  277. }
  278. .rowsa {
  279. margin-bottom: 20px;
  280. }
  281. }
  282. .tableBox {
  283. background: #fff;
  284. padding: 19px;
  285. border-radius: 5px;
  286. }
  287. .dashboard {
  288. &-container {
  289. margin: 30px;
  290. }
  291. &-text {
  292. font-size: 30px;
  293. line-height: 46px;
  294. }
  295. }
  296. .pind {
  297. padding: 0 20px;
  298. }
  299. .pind10 {
  300. padding: 0 5px;
  301. }
  302. .width150 {
  303. width: 200px;
  304. }
  305. .width300 {
  306. width: 295px;
  307. }
  308. .width500 {
  309. width: 645px;
  310. }
  311. .width90 {
  312. width: 90px;
  313. }
  314. .blue {
  315. color: #185da6;
  316. cursor: pointer;
  317. }
  318. .block {
  319. background: #fff;
  320. align-items: center;
  321. border-radius: 5px;
  322. height: auto;
  323. margin-bottom: 30px;
  324. padding: 0;
  325. display: flex;
  326. box-sizing: border-box;
  327. .blockCon {
  328. display: flex;
  329. align-items: center;
  330. .selectDns {
  331. span {
  332. margin-right: 5px;
  333. }
  334. }
  335. .demonstration {
  336. margin-left: 10px;
  337. }
  338. .pickers {
  339. margin-left: 5px;
  340. }
  341. .lsxd {
  342. margin-left: 20px;
  343. }
  344. .ins {
  345. width: 150px;
  346. margin: 0 10px;
  347. }
  348. }
  349. .sc {
  350. background: #185da6;
  351. color: #fff;
  352. }
  353. }
  354. .kong {
  355. padding: 0 10px;
  356. }
  357. </style>