You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

286 lines
10 KiB

2 years ago
2 years ago
2 years ago
  1. <template>
  2. <div>
  3. <div>
  4. <el-table :data="patientRegisters" border width="800" height="480" highlight-current-row
  5. @row-click="registerRowClick" @row-dblclick="rowDblclick" size="small">
  6. <el-table-column prop="completeFlag" label="体检进度">
  7. <template slot-scope="scope">
  8. <div>{{ dddw(dict.completeFlag, "id", scope.row.completeFlag, "displayName") }}</div>
  9. </template>
  10. </el-table-column>
  11. <el-table-column prop="guidePrintTimes" label="打印" width="50">
  12. <template slot-scope="scope">
  13. <i class="el-icon-printer" v-if="scope.row.guidePrintTimes > 0" style="font-size: 24px;color: green;"></i>
  14. </template>
  15. </el-table-column>
  16. <el-table-column prop="isLock" label="锁住">
  17. <template slot-scope="scope">
  18. <div>{{ scope.row.isLock == "Y" ? "是" : "否" }}</div>
  19. </template>
  20. </el-table-column>
  21. <el-table-column prop="customerOrgParentName" label="单位" width="180">
  22. <template slot-scope="scope">
  23. <div>{{ scope.row.customerOrgParentName ? scope.row.customerOrgParentName : scope.row.customerOrgName }}</div>
  24. </template>
  25. </el-table-column>
  26. <el-table-column prop="customerOrgName" label="部门" width="180">
  27. <template slot-scope="scope">
  28. <div>{{ scope.row.customerOrgParentName ? scope.row.customerOrgName : "" }}</div>
  29. </template>
  30. </el-table-column>
  31. <el-table-column prop="patientName" label="姓名" />
  32. <el-table-column prop="sexId" label="性别">
  33. <template slot-scope="scope">
  34. <div>{{ dddw(dict.sex, "id", scope.row.sexId, "displayName") }}</div>
  35. </template>
  36. </el-table-column>
  37. <el-table-column prop="age" label="年龄" />
  38. <el-table-column prop="patientRegisterNo" label="条码号" width="150" />
  39. <el-table-column prop="patientNo" label="档案号" />
  40. <el-table-column prop="medicalTimes" label="体检次数"></el-table-column>
  41. <el-table-column label="分组/套餐" width="150">
  42. <template slot-scope="scope">
  43. <div v-if="scope.row.medicalPackageId !== dict.personOrgId && scope.row.customerOrgId === dict.personOrgId">
  44. {{ dddw(dict.medicalPackage, "id", scope.row.medicalPackageId, "displayName") }}
  45. </div>
  46. <div v-if="scope.row.medicalPackageId !== dict.personOrgId && scope.row.customerOrgId !== dict.personOrgId">
  47. {{ dddw(dict.customerOrgGroupAll, "id", scope.row.customerOrgGroupId, "displayName") }}
  48. </div>
  49. </template>
  50. </el-table-column>
  51. <el-table-column prop="nationId" label="民族">
  52. <template slot-scope="scope">
  53. <div>
  54. {{ dddw(dict.nation, "nationId", scope.row.nationId, "displayName") }}
  55. </div>
  56. </template>
  57. </el-table-column>
  58. <el-table-column prop="idNo" label="身份证" width="150" />
  59. <el-table-column prop="birthDate" label="出生日期" width="100">
  60. <template slot-scope="scope">
  61. <div v-if="scope.row.birthDate">
  62. {{ moment(scope.row.birthDate).format("yyyy-MM-DD") }}
  63. </div>
  64. </template>
  65. </el-table-column>
  66. <el-table-column prop="email" label="邮箱" width="180" />
  67. <el-table-column prop="mobileTelephone" label="手机" width="100" />
  68. <el-table-column prop="telephone" label="电话" width="100" />
  69. <el-table-column prop="address" label="地址" width="300" />
  70. <el-table-column prop="medicalCardNo" label="体检卡号" />
  71. <el-table-column prop="jobCardNo" label="工卡号" />
  72. <el-table-column prop="maritalStatusId" label="婚姻状况">
  73. <template slot-scope="scope">
  74. <div>
  75. {{ dddw(dict.maritalStatus, "id", scope.row.maritalStatusId, "displayName") }}
  76. </div>
  77. </template>
  78. </el-table-column>
  79. <el-table-column prop="medicalTypeId" label="体检类别">
  80. <template slot-scope="scope">
  81. <div v-if="scope.row.medicalTypeId !== dict.personOrgId">
  82. {{ dddw(dict.medicalType, "id", scope.row.medicalTypeId, "displayName") }}
  83. </div>
  84. </template>
  85. </el-table-column>
  86. <el-table-column prop="personnelTypeId" label="人员类别">
  87. <template slot-scope="scope">
  88. <div v-if="scope.row.personnelTypeId !== dict.personOrgId">
  89. {{ dddw(dict.personnelType, "id", scope.row.personnelTypeId, "displayName") }}
  90. </div>
  91. </template>
  92. </el-table-column>
  93. <el-table-column prop="jobPost" label="职务" />
  94. <el-table-column prop="jobTitle" label="职称" />
  95. <el-table-column prop="salesman" label="介绍人" />
  96. <el-table-column prop="isVip" label="是否VIP">
  97. <template slot-scope="scope">
  98. <div>{{ scope.row.isVip == "Y" ? "是" : "否" }}</div>
  99. </template>
  100. </el-table-column>
  101. <el-table-column prop="creatorName" label="登记人" />
  102. <el-table-column prop="creationTime" label="登记日期" width="100">
  103. <template slot-scope="scope">
  104. <div v-if="scope.row.creationTime">{{ moment(scope.row.creationTime).format("yyyy-MM-DD") }}</div>
  105. </template>
  106. </el-table-column>
  107. <el-table-column prop="isUpload" label="是否上传">
  108. <template slot-scope="scope">
  109. <div>{{ scope.row.isUpload == "Y" ? "是" : "否" }}</div>
  110. </template>
  111. </el-table-column>
  112. <!--
  113. "sexHormoneTermId": "00000000-0000-0000-0000-000000000000",
  114. "interposeMeasure": null,
  115. "medicalConclusionId": "00000000-0000-0000-0000-000000000000",
  116. "reportPrintTimes": 0,
  117. "isMedicalStart": "N",
  118. "medicalStartDate": "6/28/2023",
  119. "isRecoverGuide": "N",
  120. "summaryDate": "",
  121. "summaryDoctor": null,
  122. "isAudit": "N",
  123. "auditDoctor": null,
  124. "auditDate": "",
  125. "isNameHide": "N",
  126. "isPhoneFollow": "N",
  127. "thirdInfo": null,
  128. "guidePrintTimes": null,
  129. "remark": null,
  130. "organizationUnitId": "00000000-0000-0000-0000-000000000000",
  131. "customerOrgRegisterId": "00000000-0000-0000-0000-000000000000",
  132. "lastModifierName": "",
  133. "lastModificationTime": null,
  134. "lastModifierId": null,
  135. "creatorId": null,
  136. "id": "3a0c196d-a6d0-37fe-5c32-4806bdc4530f"
  137. -->
  138. </el-table>
  139. <div style="display: flex;margin-top: 5px;justify-content:space-between;">
  140. <div></div>
  141. <div style="display: flex;">
  142. <el-button @click="dialogWin.PatientRegisterForChoose = false" style="width:90px;">取消</el-button>
  143. <el-button type="primary" @click="btnOk" style="width:90px;">确定</el-button>
  144. </div>
  145. </div>
  146. </div>
  147. </div>
  148. </template>
  149. <script>
  150. import moment from "moment";
  151. import { mapState, mapActions } from "vuex";
  152. import { getapi, postapi, putapi, deletapi } from "@/api/api";
  153. import Sortable from "sortablejs";
  154. import FileSaver from 'file-saver';
  155. import html2canvas from 'html2canvas';
  156. import {
  157. dddw,
  158. objCopy,
  159. arrayReduce,
  160. arrayExistObj,
  161. deepCopy,
  162. } from "../../utlis/proFunc";
  163. import ElProgressOCX from "../report/ElProgressOCX.vue";
  164. export default {
  165. components: {
  166. ElProgressOCX,
  167. },
  168. props:["params"], // params
  169. data() {
  170. return {
  171. patientRegisterId:'', // 选中的体检人员ID
  172. patientRegisters:[], //体检人员列表信息
  173. };
  174. },
  175. created() {
  176. },
  177. //挂载完成
  178. mounted() {
  179. },
  180. computed: {
  181. ...mapState([
  182. "window",
  183. "dataTransOpts",
  184. "dialogWin",
  185. "dict",
  186. "elProgress",
  187. "patientRegister",
  188. "customerOrg",
  189. ]),
  190. },
  191. methods: {
  192. moment,dddw,deepCopy,
  193. getPatientregisterList(){
  194. this.patientRegisterId = "" //先清除选择的体检人员ID
  195. // params = {
  196. // patientName:v,
  197. // isFilterPreRegistration:'Y' //是否需要过滤预登记数据 Y=过滤预登记数据 N=不过滤 默认为N (备注:只有CompleteFlag参数的值不为0的情况才有效,null值也有效)
  198. // }
  199. postapi('/api/app/patientregister/getlistinfilter', this.params).then(res => {
  200. if (res.code != -1) {
  201. if(res.data.items.length == 0){
  202. this.dataTransOpts.tableS.patient_register.id = ''
  203. setTimeout(() => {
  204. this.dataTransOpts.refresh.patient_register.S++
  205. }, 20);
  206. this.dialogWin.PatientRegisterForChoose = false
  207. this.$message.warning('未找到相关信息')
  208. }else if(res.data.items.length == 1){
  209. this.rowDblclick(res.data.items[0])
  210. }else{
  211. this.patientRegisters = res.data.items
  212. }
  213. }
  214. })
  215. },
  216. // 选中记录
  217. registerRowClick(row){
  218. this.patientRegisterId = row.id
  219. },
  220. // 双击 选中记录 并关闭窗口
  221. rowDblclick(row){
  222. this.registerRowClick(row)
  223. this.btnOk()
  224. },
  225. btnOk(){
  226. if(!this.patientRegisterId){
  227. this.$message.warning("请选择体检人员!")
  228. return
  229. }
  230. this.dataTransOpts.tableS.patient_register.id = this.patientRegisterId
  231. setTimeout(() => {
  232. this.dataTransOpts.refresh.patient_register.S++
  233. }, 20);
  234. this.dialogWin.PatientRegisterForChoose = false
  235. },
  236. },
  237. //监听事件
  238. watch: {
  239. // 刷新体检人员登记列表
  240. "dataTransOpts.refresh.patient_register.M":{
  241. immediate: true, // 立即执行
  242. // deep: true, // 深度监听复杂类型内变化
  243. handler(newVal,oldVal){
  244. console.log(`watch: 刷新体检人员列表 newVal: ${newVal} oldVal:${oldVal}`)
  245. this.getPatientregisterList()
  246. }
  247. },
  248. },
  249. };
  250. </script>
  251. <style scoped>
  252. @import "../../assets/css/global_input.css";
  253. @import "../../assets/css/global_table.css";
  254. @import "../../assets/css/global.css";
  255. .box {
  256. display: flex;
  257. }
  258. .listBtn {
  259. margin-top: 5px;
  260. text-align: center;
  261. }
  262. .btnClass {
  263. width: 100px;
  264. }
  265. </style>