SearchBox2.vue 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. <template>
  2. <div class="app-container">
  3. <el-form :inline="true" :model="data" class="demo-form-inline" label-width="96px">
  4. <el-form-item label="住院号码">
  5. <el-input v-model="data.AAA28" clearable placeholder="请输入"></el-input>
  6. </el-form-item>
  7. <el-form-item label="出院科室">
  8. <el-select v-model="data.dep_id" filterable clearable placeholder="请选择">
  9. <el-option v-for="(item, index) in departmentList" :label="item.name" :value="item.id" :key="index"></el-option>
  10. </el-select>
  11. </el-form-item>
  12. <el-form-item label="出院时间">
  13. <el-date-picker
  14. v-model="data.start_time"
  15. type="date"
  16. :picker-options="pickerOptions1"
  17. placeholder="开始时间"
  18. style="width: 249px;"
  19. />
  20. </el-form-item>
  21. <el-form-item label="">
  22. <el-date-picker
  23. v-model="data.end_time"
  24. type="date"
  25. :picker-options="pickerOptions2"
  26. placeholder="结束时间"
  27. style="width: 249px;"
  28. />
  29. </el-form-item>
  30. <el-form-item label="" class="more-btn">
  31. <el-button type="text" @click="showMore = !showMore">{{ showMore ? '收回' : '更多'}}</el-button>
  32. </el-form-item>
  33. <el-collapse-transition>
  34. <div v-show="showMore">
  35. <el-form-item label="缺陷描述">
  36. <el-input v-model="data.desc" clearable placeholder="请输入"></el-input>
  37. </el-form-item>
  38. <el-form-item label="缺陷归类">
  39. <el-select v-model="data.type" filterable clearable placeholder="请选择">
  40. <el-option v-for="item of selectData.type" :key="item" :label="item" :value="item" />
  41. </el-select>
  42. </el-form-item>
  43. <el-form-item label="住院医师">
  44. <el-select v-model="data.AEE04" filterable clearable placeholder="请选择">
  45. <el-option v-for="item of selectData.doctor" :key="item.id" :label="item.name" :value="item.name" />
  46. </el-select>
  47. </el-form-item>
  48. <el-form-item label="编码员">
  49. <el-select v-model="data.AEE08" filterable clearable placeholder="请选择">
  50. <el-option v-for="item of selectData.doctor" :key="item.id" :label="item.name" :value="item.id" />
  51. </el-select>
  52. </el-form-item>
  53. <el-form-item label="主要诊断名称">
  54. <el-input v-model="data.ICD10_NAME" clearable placeholder="请输入"></el-input>
  55. </el-form-item>
  56. <el-form-item label="主要诊断编码">
  57. <el-input v-model="data.ICD10_ID1" clearable placeholder="请输入"></el-input>
  58. </el-form-item>
  59. <el-form-item label="主要手术名称">
  60. <el-input v-model="data.ICD9_NAME" clearable placeholder="请输入"></el-input>
  61. </el-form-item>
  62. <el-form-item label="主要手术编码">
  63. <el-input v-model="data.ICD9_ID1" clearable placeholder="请输入"></el-input>
  64. </el-form-item>
  65. </div>
  66. </el-collapse-transition>
  67. <el-form-item style="display: block; text-align: center; position: relative;">
  68. <el-button type="primary" @click="onSubmit" class="search-btn">查询</el-button>
  69. </el-form-item>
  70. </el-form>
  71. <div class="btn-group">
  72. <el-button type="primary" icon="el-icon-download" @click="onExport" class="export-btn">导出数据</el-button>
  73. <el-button icon="el-icon-refresh" @click="onReset" style="position: absolute; top: -60px; right: 0px;">重置条件</el-button>
  74. <el-popover
  75. placement="bottom-end"
  76. title=""
  77. trigger="click"
  78. popper-class="table_code_popper"
  79. >
  80. <el-checkbox v-model="checkAll" :indeterminate="isIndeterminate" @change="handleCheckAllChange">全选</el-checkbox>
  81. <el-checkbox-group v-model="showCodes" @change="handleChange">
  82. <el-checkbox label="field">缺陷字段</el-checkbox>
  83. <el-checkbox label="desc">缺陷描述</el-checkbox>
  84. <el-checkbox label="AAA28">住院号码</el-checkbox>
  85. <el-checkbox label="AAA01">姓名</el-checkbox>
  86. <el-checkbox label="time">出院时间</el-checkbox>
  87. <el-checkbox label="AAC11N">出院科室</el-checkbox>
  88. <el-checkbox label="AEE08">编码员</el-checkbox>
  89. <el-checkbox label="AEE04">住院医师</el-checkbox>
  90. <el-checkbox label="ICD10_NAME">主要诊断名称</el-checkbox>
  91. <el-checkbox label="ICD10_ID1">主要诊断编码</el-checkbox>
  92. <el-checkbox label="ICD9_NAME">主要手术名称</el-checkbox>
  93. <el-checkbox label="ICD9_ID1">主要手术编码</el-checkbox>
  94. <el-checkbox label="level">缺陷分级</el-checkbox>
  95. <el-checkbox label="type">缺陷归类</el-checkbox>
  96. </el-checkbox-group>
  97. <el-button slot="reference" icon="el-icon-setting" style="margin-left: 10px;"></el-button>
  98. </el-popover>
  99. </div>
  100. </div>
  101. </template>
  102. <script>
  103. export default {
  104. props: {
  105. data: {
  106. type: Object,
  107. default() {
  108. return {
  109. AAA28: '',
  110. AAA01: '',
  111. AAC11N: '',
  112. dep_id: '',
  113. start_time: '',
  114. end_time: '',
  115. type: '',
  116. level: '',
  117. desc: '',
  118. AEE04: '',
  119. AEE08: '',
  120. ICD10_NAME: '',
  121. ICD10_ID1: '',
  122. ICD9_NAME: '',
  123. ICD9_ID1: ''
  124. }
  125. }
  126. },
  127. codes: {
  128. type: Array,
  129. default() {
  130. return []
  131. }
  132. }
  133. },
  134. data() {
  135. const defaultCodes = [
  136. 'field',
  137. 'desc',
  138. 'AAA28',
  139. 'AAA01',
  140. 'time',
  141. 'AAC11N',
  142. 'AEE08',
  143. 'AEE04',
  144. 'type',
  145. 'level',
  146. 'ICD10_NAME',
  147. 'ICD10_ID1',
  148. 'ICD9_NAME',
  149. 'ICD9_ID1'
  150. ]
  151. return {
  152. showMore: false,
  153. showCodes: [],
  154. checkAll: true,
  155. isIndeterminate: false,
  156. defaultCodes,
  157. pickerOptions1: {
  158. disabledDate: (time) => {
  159. if (this.data.end_time) {
  160. return time.getTime() > new Date(this.data.end_time).getTime()
  161. } else {
  162. return time.getTime() > Date.now()
  163. }
  164. }
  165. },
  166. pickerOptions2: {
  167. disabledDate: (time) => {
  168. if (this.data.start_time) {
  169. return time.getTime() < new Date(this.data.start_time).getTime()
  170. } else {
  171. return time.getTime() > Date.now()
  172. }
  173. }
  174. },
  175. selectData: {},
  176. departmentList: []
  177. }
  178. },
  179. created() {
  180. this.getSelectData()
  181. this.getDepList()
  182. this.showCodes = JSON.parse(JSON.stringify(this.codes))
  183. },
  184. methods: {
  185. onExport() {
  186. this.$emit('export')
  187. },
  188. getDepList() {
  189. this.$axios.post('/omr_zk/department_list').then(res => {
  190. this.departmentList = res.data;
  191. });
  192. },
  193. handleCheckAllChange(val) {
  194. this.showCodes = val ? this.defaultCodes : []
  195. this.isIndeterminate = false
  196. this.$emit('codesChange', this.showCodes)
  197. },
  198. // 展示字段发生变化
  199. handleChange(val) {
  200. const checkedCount = val.length
  201. this.checkAll = checkedCount === this.defaultCodes.length
  202. this.$emit('codesChange', val)
  203. },
  204. getSelectData() {
  205. this.$axios.post('/home_quality/getErrorSerachWhere').then(res => {
  206. this.selectData = res.data
  207. });
  208. },
  209. onSubmit() {
  210. this.$emit('search')
  211. },
  212. onReset() {
  213. this.$emit('reset')
  214. }
  215. }
  216. }
  217. </script>
  218. <style lang="scss" scoped>
  219. .demo-form-inline {
  220. width: 1260px;
  221. position: relative;
  222. margin: 0 auto;
  223. .more-btn {
  224. position: absolute;
  225. }
  226. }
  227. .search-btn {
  228. width: 240px;
  229. }
  230. .btn-group {
  231. text-align: right;
  232. margin-bottom: 20px;
  233. position: relative;
  234. }
  235. </style>
  236. <style lang="scss">
  237. .table_code_popper {
  238. .el-checkbox {
  239. display: block;
  240. line-height: 26px;
  241. }
  242. }
  243. </style>