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.

3182 lines
115 KiB

3 years ago
2 years ago
4 months ago
2 years ago
4 months ago
4 months ago
4 months ago
3 months ago
4 months ago
4 months ago
4 months ago
1 year ago
2 years ago
4 months ago
1 year ago
3 months ago
1 year ago
2 years ago
2 years ago
1 year ago
3 months ago
1 year ago
2 years ago
2 years ago
4 months ago
2 years ago
4 months ago
2 years ago
4 months ago
5 months ago
2 years ago
5 months ago
2 years ago
2 years ago
4 months ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
4 months ago
6 months ago
2 years ago
5 months ago
6 months ago
2 years ago
6 months ago
2 years ago
1 year ago
2 years ago
6 months ago
2 years ago
1 year ago
4 months ago
1 year ago
2 years ago
6 months ago
2 years ago
1 year ago
2 years ago
6 months ago
2 years ago
1 year ago
2 years ago
6 months ago
2 years ago
1 year ago
2 years ago
4 months ago
2 years ago
4 months ago
2 years ago
2 years ago
1 year ago
4 months ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
1 year ago
2 years ago
4 months ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
4 months ago
2 years ago
2 years ago
4 months ago
2 years ago
4 months ago
2 years ago
4 months ago
2 years ago
4 months ago
2 years ago
4 months ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
4 months ago
2 years ago
4 months ago
2 years ago
4 months ago
2 years ago
4 months ago
2 years ago
4 months ago
2 years ago
4 months ago
4 months ago
1 year ago
4 months ago
4 months ago
2 years ago
6 months ago
2 years ago
1 year ago
2 years ago
6 months ago
4 months ago
8 months ago
4 months ago
6 months ago
2 years ago
3 years ago
2 years ago
3 years ago
4 months ago
2 years ago
4 months ago
4 months ago
4 months ago
2 years ago
4 months ago
3 months ago
2 years ago
2 years ago
4 months ago
2 years ago
1 year ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
2 years ago
4 months ago
1 year ago
2 years ago
4 months ago
2 years ago
4 months ago
2 years ago
1 year ago
4 months ago
2 years ago
1 year ago
2 years ago
4 months ago
2 years ago
2 years ago
3 weeks ago
4 months ago
2 years ago
2 years ago
3 weeks ago
2 years ago
4 months ago
2 years ago
2 years ago
4 months ago
2 years ago
2 years ago
4 months ago
2 years ago
4 months ago
2 years ago
4 months ago
2 years ago
2 years ago
4 months ago
2 years ago
4 months ago
2 years ago
2 years ago
4 months ago
2 years ago
6 months ago
4 months ago
6 months ago
6 months ago
4 months ago
6 months ago
4 months ago
6 months ago
2 years ago
2 weeks ago
4 months ago
2 weeks ago
2 years ago
2 years ago
6 months ago
4 months ago
6 months ago
4 months ago
6 months ago
5 months ago
4 months ago
4 months ago
4 months ago
4 months ago
6 months ago
4 months ago
4 months ago
6 months ago
3 years ago
3 years ago
4 months ago
3 years ago
3 years ago
3 years ago
1 year ago
4 months ago
1 year ago
4 months ago
3 years ago
3 years ago
1 year ago
3 years ago
4 months ago
1 year ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 weeks ago
2 years ago
2 years ago
2 years ago
6 months ago
6 months ago
2 years ago
2 years ago
3 weeks ago
4 months ago
5 months ago
3 years ago
3 years ago
4 months ago
2 years ago
6 months ago
6 months ago
2 weeks ago
2 years ago
2 weeks ago
1 year ago
1 year ago
4 months ago
3 years ago
3 months ago
3 years ago
3 years ago
2 years ago
1 year ago
2 years ago
3 months ago
3 months ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
1 year ago
3 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
4 months ago
1 year ago
4 months ago
1 year ago
6 months ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
1 year ago
2 years ago
1 year ago
6 months ago
1 year ago
6 months ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
4 months ago
2 years ago
2 years ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
2 years ago
4 months ago
2 years ago
4 weeks ago
2 weeks ago
4 weeks ago
2 years ago
1 year ago
2 years ago
4 months ago
4 months ago
6 months ago
4 months ago
6 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
6 months ago
5 months ago
6 months ago
3 weeks ago
2 weeks ago
3 years ago
3 years ago
3 years ago
2 years ago
1 year ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
2 years ago
1 year ago
2 years ago
5 months ago
2 years ago
1 year ago
2 years ago
1 year ago
6 months ago
4 months ago
6 months ago
4 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
1 year ago
1 year ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
1 year ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
1 year ago
2 years ago
3 years ago
3 years ago
3 years ago
1 year ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
1 year ago
3 years ago
3 years ago
3 years ago
1 year ago
3 months ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
1 year ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
3 years ago
2 weeks ago
3 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 weeks ago
3 years ago
3 years ago
3 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
6 months ago
4 months ago
1 month ago
6 months ago
1 month ago
6 months ago
1 month ago
6 months ago
1 month ago
6 months ago
1 month ago
6 months ago
1 year ago
2 years ago
8 months ago
1 month ago
8 months ago
1 month ago
8 months ago
2 years ago
2 years ago
1 year ago
2 years ago
2 weeks ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 weeks ago
2 years ago
8 months ago
2 weeks ago
8 months ago
2 weeks ago
8 months ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
1 year ago
2 years ago
1 year ago
3 months ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
4 months ago
6 months ago
6 months ago
4 months ago
6 months ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
3 years ago
2 years ago
1 year ago
3 years ago
3 months ago
3 months ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
4 months ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
3 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
1 year ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
1 year ago
4 months ago
2 years ago
3 years ago
3 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
3 years ago
2 years ago
2 years ago
1 year ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
1 year ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
1 year ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 weeks ago
2 years ago
2 weeks ago
3 years ago
2 weeks ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
1 year ago
3 months ago
1 year ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
3 months ago
2 years ago
1 year ago
4 months ago
1 year ago
2 years ago
2 years ago
3 months ago
5 months ago
3 years ago
3 years ago
3 months ago
5 months ago
3 months ago
3 years ago
3 years ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
3 months ago
2 years ago
1 year ago
2 years ago
3 months ago
3 months ago
3 months ago
2 years ago
3 months ago
4 months ago
4 months ago
2 years ago
4 months ago
2 years ago
4 months ago
3 months ago
4 months ago
2 years ago
4 months ago
2 years ago
4 months ago
3 months ago
3 months ago
4 months ago
3 months ago
4 months ago
3 months ago
4 months ago
1 year ago
4 months ago
2 years ago
4 months ago
2 years ago
1 year ago
4 months ago
2 years ago
1 year ago
3 months ago
1 year ago
1 year ago
1 year ago
3 years ago
2 years ago
2 years ago
1 year ago
2 years ago
4 months ago
2 years ago
4 months ago
4 months ago
4 months ago
2 years ago
4 months ago
4 months ago
4 months ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
2 years ago
4 months ago
4 months ago
4 months ago
1 year ago
4 months ago
4 months ago
4 months ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 weeks ago
4 weeks ago
2 weeks ago
2 years ago
3 weeks ago
2 weeks ago
3 weeks ago
2 weeks ago
3 weeks ago
5 months ago
3 years ago
1 year ago
3 years ago
2 years ago
1 year ago
3 years ago
1 year ago
3 years ago
1 year ago
2 years ago
2 years ago
4 months ago
2 years ago
4 months ago
4 months ago
4 months ago
4 months ago
1 year ago
4 months ago
2 years ago
1 year ago
2 years ago
4 months ago
4 months ago
4 months ago
1 year ago
2 years ago
1 year ago
6 months ago
3 weeks ago
1 year ago
2 years ago
2 years ago
3 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
3 years ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
3 years ago
1 year ago
6 months ago
4 months ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
6 months ago
6 months ago
1 year ago
6 months ago
4 months ago
6 months ago
6 months ago
4 months ago
1 year ago
6 months ago
2 years ago
1 year ago
6 months ago
2 years ago
1 year ago
1 year ago
2 years ago
1 year ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
4 months ago
6 months ago
4 months ago
6 months ago
4 months ago
6 months ago
1 year ago
2 years ago
3 years ago
1 year ago
3 years ago
3 years ago
3 months ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
1 year ago
3 years ago
2 years ago
1 year ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
3 months ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
3 years ago
2 years ago
1 year ago
3 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
2 weeks ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 weeks ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
1 year ago
3 years ago
1 year ago
2 years ago
3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
1 year ago
3 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
3 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
2 years ago
2 years ago
1 year ago
3 years ago
2 years ago
2 years ago
6 months ago
2 years ago
1 year ago
2 years ago
6 months ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
4 months ago
6 months ago
1 year ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
4 months ago
6 months ago
4 months ago
6 months ago
4 months ago
2 years ago
6 months ago
4 months ago
6 months ago
4 months ago
6 months ago
4 months ago
6 months ago
4 months ago
6 months ago
4 months ago
2 years ago
2 years ago
2 years ago
4 months ago
4 months ago
4 months ago
6 days ago
4 months ago
6 days ago
4 months ago
4 months ago
4 months ago
1 year ago
4 months ago
1 year ago
2 years ago
6 months ago
4 months ago
6 months ago
4 months ago
6 months ago
4 months ago
4 months ago
6 months ago
4 months ago
6 months ago
4 months ago
6 months ago
2 years ago
1 year ago
2 years ago
1 year ago
2 years ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
4 months ago
3 years ago
3 years ago
3 months ago
2 years ago
3 years ago
3 months ago
3 years ago
3 months ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. <template>
  2. <div>
  3. <!--组件主体-->
  4. <div style="display: flex">
  5. <div :style="'width:' + (window.pageWidth - 200 - 145) + 'px;'" @contextmenu.prevent="onContextmenu">
  6. <div>
  7. <u-table :data="tableData" border :height="window.pageHeight < 600
  8. ? 248
  9. : Math.floor(((window.pageHeight - 250) * 2) / 3)
  10. " highlight-current-row @row-click="rowClick" @row-dblclick="dblClick" size="small" row-key="id"
  11. @selection-change="handleSelectionChange" @row-contextmenu="onCellRightClick" ref="info" id="info"
  12. :row-class-name="handleRowClassName" use-virtual :row-height="25" @table-body-scroll="scrollFull"
  13. big-data-checkbox :data-changes-scroll-top="false">
  14. <u-table-column type="selection" width="40" align="center"></u-table-column>
  15. <u-table-column v-for="(item, index) in dragCol" :key="index" :type="dragCol[index].type"
  16. :min-width="dragCol[index].minWidth" :align="dragCol[index].align" :label="item.label"
  17. :prop="dragCol[index].prop" :sortable="dragCol[index].type || dragCol[index].prop == 'sn'
  18. ? false
  19. : true
  20. ">
  21. <template slot-scope="scope" v-if="!dragCol[index].type">
  22. <div v-if="!dragCol[index].type">
  23. <div v-if="dragCol[index].prop == 'sn'">
  24. {{ scope.$index + 1 }}
  25. </div>
  26. <div v-else-if="dragCol[index].prop == 'completeFlag'" :style="`color: ${setPrStatusColor(
  27. scope.row.isAudit,
  28. scope.row.completeFlag
  29. )}`">
  30. {{
  31. scope.row.isAudit == "Y"
  32. ? "已审核"
  33. : dddw(dict.completeFlag, "id", scope.row.completeFlag, "displayName")
  34. }}
  35. </div>
  36. <div v-else-if="dragCol[index].prop == 'qztlType'">
  37. {{
  38. dddw(dict.qztlType, "id", scope.row.qztlType, "displayName")
  39. }}
  40. </div>
  41. <div v-else-if="dragCol[index].prop == 'guidePrintTimes'">
  42. <i class="el-icon-printer" v-if="scope.row.guidePrintTimes > 0"
  43. style="font-size: 20px; color: green" />
  44. </div>
  45. <div v-else-if="dragCol[index].prop == 'isLock'">
  46. <i class="el-icon-lock" v-if="scope.row.isLock == 'Y'" style="font-size: 20px; color: red" />
  47. </div>
  48. <div v-else-if="
  49. dragCol[index].prop == 'isVip' ||
  50. dragCol[index].prop == 'isUpload' ||
  51. dragCol[index].prop == 'qztlIsMain' ||
  52. dragCol[index].prop == 'qztlIsCy' ||
  53. dragCol[index].prop == 'qztlIsCw' ||
  54. dragCol[index].prop == 'qztlIsGt' ||
  55. dragCol[index].prop == 'qztlIsWh' ||
  56. dragCol[index].prop == 'qztlIsFj'
  57. ">
  58. <el-checkbox :value="scope.row[dragCol[index].prop] == 'Y'" />
  59. <!--
  60. {{ scope.row[dragCol[index].prop] == "Y" ? "是" : "否" }}
  61. -->
  62. </div>
  63. <div v-else-if="dragCol[index].prop == 'customerOrgParentName'">
  64. {{
  65. scope.row.customerOrgParentName
  66. ? scope.row.customerOrgParentName
  67. : scope.row.customerOrgName
  68. }}
  69. </div>
  70. <div v-else-if="dragCol[index].prop == 'sexId'">
  71. {{
  72. dddw(
  73. dict.sex,
  74. "id",
  75. scope.row[dragCol[index].prop],
  76. "displayName"
  77. )
  78. }}
  79. </div>
  80. <div v-else-if="dragCol[index].prop == 'groupPack'">
  81. <div v-if="
  82. scope.row.medicalPackageId !== dict.personOrgId &&
  83. scope.row.customerOrgId === dict.personOrgId
  84. ">
  85. {{ scope.row.medicalPackageName }}
  86. </div>
  87. <div v-else>
  88. {{ scope.row.customerOrgGroupName }}
  89. </div>
  90. </div>
  91. <!--
  92. <div v-else-if="dragCol[index].prop == 'nationId'">
  93. {{
  94. dddw(
  95. dict.nation,
  96. "id",
  97. scope.row[dragCol[index].prop],
  98. "displayName"
  99. )
  100. }}
  101. </div>
  102. -->
  103. <div v-else-if="dragCol[index].prop == 'birthDate'">
  104. {{
  105. scope.row[dragCol[index].prop]
  106. ? moment(scope.row[dragCol[index].prop]).format(
  107. "yyyy-MM-DD"
  108. )
  109. : ""
  110. }}
  111. </div>
  112. <!--
  113. <div v-else-if="dragCol[index].prop == 'maritalStatusId'">
  114. {{
  115. dddw(
  116. dict.maritalStatus,
  117. "id",
  118. scope.row[dragCol[index].prop],
  119. "displayName"
  120. )
  121. }}
  122. </div>
  123. -->
  124. <div v-else-if="dragCol[index].prop == 'medicalTypeId'">
  125. {{
  126. dddw(
  127. dict.medicalType,
  128. "id",
  129. scope.row[dragCol[index].prop],
  130. "displayName"
  131. )
  132. }}
  133. </div>
  134. <!--
  135. <div v-else-if="dragCol[index].prop == 'personnelTypeId'">
  136. {{
  137. dddw(
  138. dict.personnelType,
  139. "id",
  140. scope.row[dragCol[index].prop],
  141. "displayName"
  142. )
  143. }}
  144. </div>
  145. &#031;-->
  146. <div v-else-if="dragCol[index].prop == 'idNo'">
  147. {{ scope.row[dragCol[index].prop] }}
  148. </div>
  149. <div v-else-if="dragCol[index].prop == 'customerOrgName'">
  150. {{
  151. scope.row[dragCol[index].prop] ==
  152. scope.row["customerOrgParentName"]
  153. ? ""
  154. : scope.row[dragCol[index].prop]
  155. }}
  156. </div>
  157. <div v-else>
  158. {{ scope.row[dragCol[index].prop] }}
  159. </div>
  160. </div>
  161. </template>
  162. </u-table-column>
  163. <!--
  164. "sexHormoneTermId": "00000000-0000-0000-0000-000000000000",
  165. "interposeMeasure": null,
  166. "medicalConclusionId": "00000000-0000-0000-0000-000000000000",
  167. "reportPrintTimes": 0,
  168. "isMedicalStart": "N",
  169. "medicalStartDate": "6/28/2023",
  170. "isRecoverGuide": "N",
  171. "summaryDate": "",
  172. "summaryDoctor": null,
  173. "isAudit": "N",
  174. "auditDoctor": null,
  175. "auditDate": "",
  176. "isNameHide": "N",
  177. "isPhoneFollow": "N",
  178. "thirdInfo": null,
  179. "guidePrintTimes": null,
  180. "remark": null,
  181. "medicalCenterId": "00000000-0000-0000-0000-000000000000",
  182. "customerOrgRegisterId": "00000000-0000-0000-0000-000000000000",
  183. "lastModifierName": "",
  184. "lastModificationTime": null,
  185. "lastModifierId": null,
  186. "creatorId": null,
  187. "id": "3a0c196d-a6d0-37fe-5c32-4806bdc4530f"
  188. -->
  189. </u-table>
  190. <div style="display: flex; justify-content: space-between">
  191. <div></div>
  192. <div>
  193. <span style="font-size: 12px">{{ loadOpts.totalCount }} 条记录当前显示{{
  194. tableData.length
  195. }}
  196. </span>
  197. </div>
  198. </div>
  199. </div>
  200. <!-- 组合项目 基本信息 -->
  201. <el-tabs v-model="tabChoosed" style="margin-top: -22px">
  202. <!-- 组合项目 -->
  203. <el-tab-pane label="已选组合项目" name="1">
  204. <PatientRegisterAsbItem />
  205. </el-tab-pane>
  206. </el-tabs>
  207. </div>
  208. <div style="margin-left: 10px">
  209. <div v-show="checkPagePriv(pagePriv.privs, '导入青藏数据')" class="listBtn">
  210. <el-button type="success" class="commonbutton" @click="btnImportOrgData">导入青藏数据</el-button>
  211. </div>
  212. <div v-show="checkPagePriv(pagePriv.privs, '人员登记')" class="listBtn">
  213. <el-button type="success" class="commonbutton" @click="btnAdd">人员登记</el-button>
  214. </div>
  215. <div v-show="checkPagePriv(pagePriv.privs, '批量正式登记')" class="listBtn">
  216. <el-button type="success" class="commonbutton" @click="btnAddBatch('1')">批量正式登记</el-button>
  217. </div>
  218. <div v-show="checkPagePriv(pagePriv.privs, '批量转预登记')" class="listBtn">
  219. <el-button type="success" class="commonbutton" @click="btnAddBatch('0')">批量转预登记</el-button>
  220. </div>
  221. <div v-show="checkPagePriv(pagePriv.privs, '编辑')" class="listBtn">
  222. <el-button type="primary" class="commonbutton" @click="btnEdit">编辑</el-button>
  223. </div>
  224. <div v-show="checkPagePriv(pagePriv.privs, '删除')" class="listBtn">
  225. <el-button type="danger" class="deleteButton" @click="btnDel">删除</el-button>
  226. </div>
  227. <!--
  228. <div class="listBtn">
  229. <el-button
  230. type=""
  231. class="btnClass"
  232. @click="openCamera"
  233. icon="el-icon-camera"
  234. >拍照</el-button
  235. >
  236. </div>
  237. <div class="listBtn">
  238. <el-button type="" class="btnClass commonbutton">健康档案</el-button>
  239. </div>
  240. -->
  241. <div v-show="checkPagePriv(pagePriv.privs, '批量调整分组')" class="listBtn">
  242. <el-button type="" class="commonbutton" @click="btnGroupBatch">批量调整分组</el-button>
  243. </div>
  244. <div v-show="checkPagePriv(pagePriv.privs, '批量调整项目')" class="listBtn">
  245. <el-button type="" class="commonbutton" @click="btnAsbBatch">批量调整项目</el-button>
  246. </div>
  247. <div v-show="checkPagePriv(pagePriv.privs, '指引单打印')" class="listBtn">
  248. <el-button type="" class="commonbutton" @click="guidePrint('0001', false)">指引单打印</el-button>
  249. </div>
  250. <div v-show="checkPagePriv(pagePriv.privs, '指引单预览')" class="listBtn">
  251. <el-button type="" class="commonbutton" @click="guidePrint('0001', true)">指引单预览</el-button>
  252. </div>
  253. <div v-show="checkPagePriv(pagePriv.privs, '人员检验检查条码')" class="listBtn">
  254. <el-button type="" class="commonbutton" @click="printPromise()" style="font-size: 12px">人员检验检查条码</el-button>
  255. </div>
  256. <div v-show="checkPagePriv(pagePriv.privs, '人员信息导出')" class="listBtn">
  257. <!-- <download-excel :fields="jsonFields" :fetch="btnExport" type="xls" :name="tableName">
  258. <el-button type="" style="width:100%">人员信息导出</el-button>
  259. </download-excel> -->
  260. <el-button type="" class="commonbutton" @click="btnExport('info')">人员信息导出</el-button>
  261. </div>
  262. <!-- 弃用
  263. <div class="listBtn">
  264. <el-button type="" class="commonbutton" @click="btnDragColDesign">设计列排序</el-button>
  265. </div>
  266. -->
  267. <div v-show="checkPagePriv(pagePriv.privs, '人员检验检查条码')" class="listBtn">
  268. <el-button type="" class="commonbutton" @click="printPromise2()" style="font-size: 12px">人员+检查条码</el-button>
  269. </div>
  270. <div v-show="checkPagePriv(pagePriv.privs, '体检表回收')" class="listBtn">
  271. <el-button type="" class="commonbutton" @click="btnScanRecover">体检表回收</el-button>
  272. </div>
  273. <!--
  274. <div class="listBtn">
  275. <el-button type="" class="btnClass commonbutton" @click="rowSelected(tableData)">选中</el-button>
  276. </div>
  277. -->
  278. </div>
  279. </div>
  280. <!--组件弹窗-->
  281. <div>
  282. <!-- 体检人员登记 :title="patientRegister.patientRegisterRd.id ? '体检人员--编辑' : '体检人员--新增'" -->
  283. <el-dialog :title="dataTransOpts.tableS.patient_register.id
  284. ? '体检人员--编辑'
  285. : '体检人员--新增'
  286. " :visible.sync="dialogWin.PatientRegisterEdit" :close-on-click-modal="false" fullscreen
  287. @close="close_dialogWin_PatientRegisterEdit">
  288. <!-- :formInitData="patientRegister.patientRegisterRd" -->
  289. <PatientRegisterEdit :isDoctor="'1'" :patientRegisterId="patientRegister.patientRegisterRd.id"
  290. :editTimes="editTimes" :refFuncSetData="refFuncSetData" :refQueryCondition="refQueryCondition" />
  291. </el-dialog>
  292. <!-- 修改信息 -->
  293. <el-dialog title="修改人员信息" :visible.sync="upBaseInfo.visble" width="800px" :show-close="false"
  294. :append-to-body="true" :close-on-click-modal="false">
  295. <div>
  296. <div style="display: flex; margin-bottom: 20px">
  297. <el-form ref="form" :model="upBaseInfo" label-width="80px" size="medium">
  298. <el-row>
  299. <el-col :span="8">
  300. <el-form-item label="姓名" prop="patientName">
  301. <el-input id="patientName" v-model="upBaseInfo.patientName" size="small"
  302. autocomplete="off"></el-input>
  303. </el-form-item>
  304. </el-col>
  305. <el-col :span="8">
  306. <el-form-item label="身份证号" prop="idNo">
  307. <el-input v-model="upBaseInfo.idNo" placeholder="身份证号" @change="changeIdNo('N')"
  308. size="small"></el-input>
  309. </el-form-item>
  310. </el-col>
  311. <el-col :span="8">
  312. <el-form-item label="出生日期" prop="birthDate">
  313. <el-date-picker v-model="upBaseInfo.birthDate" type="date" format="yyyy-MM-dd"
  314. value-format="yyyy-MM-dd" placeholder="出生日期" style="width: 180px" @change="changeBirthDate"
  315. size="small" />
  316. </el-form-item>
  317. </el-col>
  318. </el-row>
  319. <el-row>
  320. <el-col :span="8">
  321. <el-form-item label="性别" prop="sexId">
  322. <el-select v-model="upBaseInfo.sexId" placeholder="请选择" size="small" filterable>
  323. <el-option v-for="item in dict.sex" :key="item.id" :label="item.displayName" :value="item.id">
  324. </el-option>
  325. </el-select>
  326. </el-form-item>
  327. </el-col>
  328. <el-col :span="8">
  329. <el-form-item label="年龄" prop="age">
  330. <el-input v-model="upBaseInfo.age" size="small" @change="changeAge"></el-input>
  331. </el-form-item>
  332. </el-col>
  333. <el-col :span="8">
  334. <el-form-item label="婚姻" prop="maritalStatusId">
  335. <el-select v-model="upBaseInfo.maritalStatusId" placeholder="请选择" size="small" filterable>
  336. <el-option v-for="item in dict.maritalStatus" :key="item.id" :label="item.displayName"
  337. :value="item.id">
  338. </el-option>
  339. </el-select>
  340. </el-form-item>
  341. </el-col>
  342. </el-row>
  343. <el-row>
  344. <el-col :span="8">
  345. <el-form-item label="手机号" prop="mobileTelephone">
  346. <el-input v-model="upBaseInfo.mobileTelephone" size="small"></el-input>
  347. </el-form-item>
  348. </el-col>
  349. <el-col :span="8">
  350. <el-form-item label="电话" prop="telephone">
  351. <el-input v-model="upBaseInfo.telephone" size="small"></el-input>
  352. </el-form-item>
  353. </el-col>
  354. <el-col :span="8">
  355. <el-form-item label="籍贯" prop="birthPlaceId">
  356. <el-select v-model="upBaseInfo.birthPlaceId" placeholder="请选择" filterable clearable size="small">
  357. <el-option v-for="item in dict.birthPlace" :key="item.id" :label="item.displayName"
  358. :value="item.id" />
  359. </el-select>
  360. </el-form-item>
  361. </el-col>
  362. </el-row>
  363. <el-row>
  364. <el-col :span="24">
  365. <el-form-item label="地址" prop="address">
  366. <el-input v-model="upBaseInfo.address" size="small"></el-input>
  367. </el-form-item>
  368. </el-col>
  369. </el-row>
  370. <el-row>
  371. <el-col :span="8">
  372. <el-form-item label="邮编" prop="postalCode">
  373. <el-input v-model="upBaseInfo.postalCode" size="small"></el-input>
  374. </el-form-item>
  375. </el-col>
  376. <el-col :span="8">
  377. <el-form-item label="邮箱" prop="email">
  378. <el-input v-model="upBaseInfo.email" size="small"></el-input>
  379. </el-form-item>
  380. </el-col>
  381. <el-col :span="8">
  382. <el-form-item label="体检卡号" prop="medicalCardNo">
  383. <el-input v-model="upBaseInfo.medicalCardNo" size="small"></el-input>
  384. </el-form-item>
  385. </el-col>
  386. </el-row>
  387. <el-row>
  388. <el-col :span="8">
  389. <el-form-item label="性激素期" prop="sexHormoneTermId">
  390. <el-select v-model="upBaseInfo.sexHormoneTermId" placeholder="请选择" filterable clearable
  391. size="small">
  392. <el-option v-for="item in dict.sexHormoneTerm" :key="item.id" :label="item.displayName"
  393. :value="item.id">
  394. </el-option>
  395. </el-select>
  396. </el-form-item>
  397. </el-col>
  398. <el-col :span="8">
  399. <el-form-item label="民族" prop="nationId">
  400. <el-select v-model="upBaseInfo.nationId" placeholder="请选择" filterable clearable default-first-option
  401. :filter-method="filterMethod" size="small">
  402. <el-option v-for="item in nation" :key="item.id" :label="item.displayName" :value="item.id" />
  403. </el-select>
  404. </el-form-item>
  405. </el-col>
  406. </el-row>
  407. <el-row>
  408. <el-col :span="8">
  409. <el-form-item label="体检类别" prop="medicalTypeId">
  410. <el-select v-model="upBaseInfo.medicalTypeId" placeholder="请选择" filterable clearable size="small">
  411. <el-option v-for="item in dict.medicalType" :key="item.id" :label="item.displayName"
  412. :value="item.id" />
  413. </el-select>
  414. </el-form-item>
  415. </el-col>
  416. <el-col :span="8">
  417. <el-form-item label="人员类别" prop="personnelTypeId">
  418. <el-select v-model="upBaseInfo.personnelTypeId" placeholder="请选择" filterable clearable size="small">
  419. <el-option v-for="item in dict.personnelType" :key="item.id" :label="item.displayName"
  420. :value="item.id" />
  421. </el-select>
  422. </el-form-item>
  423. </el-col>
  424. <el-col :span="8">
  425. <el-form-item label="介绍人" prop="salesman">
  426. <el-input v-model="upBaseInfo.salesman" size="small"></el-input>
  427. </el-form-item>
  428. </el-col>
  429. </el-row>
  430. <el-row>
  431. <el-col :span="8">
  432. <el-form-item label="工卡号" prop="jobCardNo">
  433. <el-input v-model="upBaseInfo.jobCardNo" size="small"></el-input>
  434. </el-form-item>
  435. </el-col>
  436. <el-col :span="8">
  437. <el-form-item label="职务" prop="jobPost">
  438. <el-input v-model="upBaseInfo.jobPost" size="small"></el-input>
  439. </el-form-item>
  440. </el-col>
  441. <el-col :span="8">
  442. <el-form-item label="职称" prop="jobTitle">
  443. <el-input v-model="upBaseInfo.jobTitle" size="small" />
  444. </el-form-item>
  445. </el-col>
  446. </el-row>
  447. <el-row>
  448. <el-col :span="8">
  449. <el-form-item label="门诊号" prop="hisPatientId">
  450. <el-input v-model="upBaseInfo.hisPatientId" size="small" />
  451. </el-form-item>
  452. </el-col>
  453. <el-col :span="8">
  454. <el-form-item label="电话随访" prop="isPhoneFollow">
  455. <el-checkbox v-model="upBaseInfo.isPhoneFollow" true-label="Y" false-label="N" />
  456. </el-form-item>
  457. </el-col>
  458. <el-col :span="8">
  459. <el-form-item label="VIP" prop="isVip">
  460. <el-checkbox v-model="upBaseInfo.isVip" true-label="Y" false-label="N" />
  461. </el-form-item>
  462. </el-col>
  463. </el-row>
  464. <el-row>
  465. <el-col :span="8">
  466. <el-form-item label="隐藏姓名" prop="isNameHide">
  467. <el-checkbox v-model="upBaseInfo.isNameHide" true-label="Y" false-label="N" />
  468. </el-form-item>
  469. </el-col>
  470. <el-col :span="8">
  471. <el-form-item label="锁住" prop="isLock">
  472. <el-checkbox v-model="upBaseInfo.isLock" true-label="Y" false-label="N" />
  473. </el-form-item>
  474. </el-col>
  475. <el-col :span="8">
  476. <el-form-item label="体检开始" prop="isMedicalStart">
  477. <el-checkbox v-model="upBaseInfo.isMedicalStart" true-label="Y" false-label="N" />
  478. </el-form-item>
  479. </el-col>
  480. </el-row>
  481. <el-row>
  482. <el-col :span="24">
  483. <el-form-item label="备注" prop="remark">
  484. <el-input v-model="upBaseInfo.remark" type="textarea" :rows="1" placeholder="请输入备注"
  485. size="small"></el-input>
  486. </el-form-item>
  487. </el-col>
  488. </el-row>
  489. </el-form>
  490. </div>
  491. <div style="display: flex; justify-content: space-between">
  492. <div></div>
  493. <div>
  494. <el-button class="commonbutton" @click="btnUpBaseInfo">提交</el-button>
  495. <el-button class="commonbutton" @click="close_dialogWin_upBaseInfo">关闭</el-button>
  496. </div>
  497. </div>
  498. </div>
  499. </el-dialog>
  500. <el-dialog title="修改信息--体检日期" :visible.sync="dialogEditMedicalStartDate" width="400" :show-close="false"
  501. :append-to-body="true" :close-on-click-modal="false">
  502. <div>
  503. <div style="display: flex; margin-bottom: 20px">
  504. <span style="padding: 5px 0 0 10px; width: 100px">体检日期</span>
  505. <el-date-picker v-model="upBaseInfo.medicalStartDate" type="date" placeholder="体检日期" size="small"
  506. value-format="yyyy-MM-dd" :picker-options="pickerOptions" />
  507. </div>
  508. <div style="display: flex; justify-content: space-between">
  509. <div></div>
  510. <div>
  511. <el-button class="commonbutton" @click="btnEditMedicalStartDate">提交</el-button>
  512. <el-button class="commonbutton" @click="dialogEditMedicalStartDate = false">关闭</el-button>
  513. </div>
  514. </div>
  515. </div>
  516. </el-dialog>
  517. <!-- 分诊排队 -->
  518. <el-dialog title="分诊排队" :visible.sync="dialogWin.queue" width="900px" :append-to-body="true"
  519. :close-on-click-modal="false">
  520. <Queue :refParams="queueParams" />
  521. </el-dialog>
  522. <!-- 知情同意书 -->
  523. <el-dialog title="知情同意书" :visible.sync="dialogWin.previewCusGrant" :append-to-body="true"
  524. :close-on-click-modal="false" width="900px">
  525. <PreviewCusGrant :refParams="preCusGrantParams" />
  526. </el-dialog>
  527. <!-- 拍照 -->
  528. <el-dialog title="拍照" :visible.sync="patientRegister.cameraVisble" width="400" height="800" :show-close="false"
  529. :append-to-body="true" :close-on-click-modal="false">
  530. <Camera :id="patientRegister.patientRegisterId" />
  531. </el-dialog>
  532. <!-- 导入企业数据 -->
  533. <el-dialog title="导入企业数据" :visible.sync="dialogWin.ImportOrgData" width="800px" :append-to-body="true"
  534. :close-on-click-modal="false">
  535. <ImportOrgData />
  536. </el-dialog>
  537. <!-- 列排序 -->
  538. <el-dialog title="列排序" :visible.sync="dialogColSort" width="300px" :append-to-body="true"
  539. :close-on-click-modal="false">
  540. <el-table id="elTable_dragCol" :data="dragColDesign" row-key="prop" border height="600">
  541. <el-table-column type="index" label="序号" width="40" align="center">
  542. </el-table-column>
  543. <el-table-column label="列名" prop="label" min-width="120" align="center"></el-table-column>
  544. </el-table>
  545. <span slot="footer" class="dialog-footer">
  546. <el-button class="commonbutton" @click="dialogColSort = false">取消</el-button>
  547. <el-button class="commonbutton" @click="btnDragColDesignOk">确定</el-button>
  548. </span>
  549. </el-dialog>
  550. <!-- 批量调整分组 -->
  551. <el-dialog title="批量调整分组" :visible.sync="dialogWin.PatientRegisterEditGroupBatch" width="600px" height="800px"
  552. :append-to-body="true" :close-on-click-modal="false">
  553. <PatientRegisterEditGroupBatch :multipleSelection="multipleSelection" />
  554. </el-dialog>
  555. <!-- 批量调整项目 -->
  556. <el-dialog title="批量调整项目" :visible.sync="dialogWin.PatientRegisterEditItemBatch" width="610px" height="800px"
  557. :append-to-body="true" :close-on-click-modal="false">
  558. <PatientRegisterEditItemBatch :multipleSelection="multipleSelection" />
  559. </el-dialog>
  560. <!-- 批量调整检查项目医生 -->
  561. <el-dialog title="批量调整检查项目医生" :visible.sync="dialogWin.PatientRegisterEditDoctorBatch" width="610px"
  562. :append-to-body="true" :close-on-click-modal="false">
  563. <PatientRegisterEditDoctorBatch :multipleSelection="multipleSelection" :doctorType="doctorType" />
  564. </el-dialog>
  565. <!-- 批量调整体检类别 -->
  566. <el-dialog title="批量调整体检类别" :visible.sync="dialogWin.PatientRegisterEditMedicalTypeBatch" width="610px"
  567. :append-to-body="true" :close-on-click-modal="false">
  568. <PatientRegisterEditMedicalTypeBatch :multipleSelection="multipleSelection" />
  569. </el-dialog>
  570. <!-- 批量调整人员类别 -->
  571. <el-dialog title="批量调整人员类别" :visible.sync="dialogWin.PatientRegisterEditPersonnelTypeBatch" width="610px"
  572. :append-to-body="true" :close-on-click-modal="false">
  573. <PatientRegisterEditPersonnelTypeBatch :multipleSelection="multipleSelection" />
  574. </el-dialog>
  575. <!-- 批量调整备注 -->
  576. <el-dialog title="批量调整备注" :visible.sync="dialogWin.PatientRegisterEditRemarkBatch" width="610px"
  577. :append-to-body="true" :close-on-click-modal="false">
  578. <PatientRegisterEditRemarkBatch :multipleSelection="multipleSelection" />
  579. </el-dialog>
  580. <!-- 通用进度条 -->
  581. <el-dialog title="数据处理中……" :visible.sync="dialogElProgress" width="600px" height="400" :show-close="false"
  582. :close-on-click-modal="false" :append-to-body="true">
  583. <ElProgressOCX0 />
  584. </el-dialog>
  585. <!--云胶片二维码-->
  586. <el-dialog :visible.sync="qrCode.winDisplay" title="云胶片二维码" width="400px" style="text-align: center">
  587. <!--<canvas ref="canvas"></canvas>-->
  588. <img width="100%" :src="qrCode.personUrl" />
  589. <div style="font-size: 16px">
  590. {{ qrCode.barcodeNo + " " + qrCode.patientName }}
  591. </div>
  592. </el-dialog>
  593. <!---->
  594. <el-dialog title="扫/输入条码回收体检表(指引单)" :visible.sync="recover.dialog" width="400px" :append-to-body="true"
  595. :close-on-click-modal="false">
  596. <div style="margin-left: 10px">
  597. <template>
  598. <el-radio v-model="recover.recoverType" label="0">条码号</el-radio>
  599. <el-radio v-model="recover.recoverType" label="1">档案号</el-radio>
  600. </template>
  601. <el-input style="margin: 10px 0" ref="tmh" v-model="recover.barcode"
  602. @keyup.native.enter="signByPatientRegisterNo"></el-input>
  603. </div>
  604. <div slot="footer" class="dialog-footer">
  605. <el-button type="primary" @click="signByPatientRegisterNo" class="commonbutton">确定</el-button>
  606. <el-button @click="recover.dialog = false" class="commonbutton">关闭</el-button>
  607. </div>
  608. </el-dialog>
  609. </div>
  610. </div>
  611. </template>
  612. <script>
  613. import moment from "moment";
  614. import QRCode from "qrcode";
  615. import { mapState, mapActions } from "vuex";
  616. import { getapi, postapi, putapi, deletapi } from "@/api/api";
  617. import Sortable from "sortablejs";
  618. import FileSaver from "file-saver";
  619. import * as XLSX from "xlsx";
  620. import html2canvas from "html2canvas";
  621. import JsonExcel from "vue-json-excel";
  622. import { exportJsonToExcel } from "../../utlis/Export2Excel";
  623. import {
  624. getPagePriv,
  625. checkPagePriv,
  626. dddw,
  627. objCopy,
  628. arrayReduce,
  629. arrayExistObj,
  630. deepCopy,
  631. birthdayToAge,
  632. ageToBirthday,
  633. parseID,
  634. setPrStatusColor,
  635. } from "../../utlis/proFunc";
  636. import { savePeoplePhoto } from "../../utlis/proApi";
  637. import PatientRegisterEdit from "../../components/patientRegister/PatientRegisterEdit.vue";
  638. import Camera from "../../components/patientRegister/Camera.vue";
  639. import PatientRegisterAsbItem from "../../components/patientRegister/patientRegisterAsbItem.vue";
  640. import ElProgressOCX0 from "../../components/report/ElProgressOCX.vue";
  641. import PatientRegisterEditGroupBatch from "./PatientRegisterEditGroupBatch.vue";
  642. import PatientRegisterEditItemBatch from "./PatientRegisterEditItemBatch.vue";
  643. import PatientRegisterEditDoctorBatch from "./PatientRegisterEditDoctorBatch.vue";
  644. import PatientRegisterEditMedicalTypeBatch from "./PatientRegisterEditMedicalTypeBatch.vue";
  645. import PatientRegisterEditPersonnelTypeBatch from "./PatientRegisterEditPersonnelTypeBatch.vue";
  646. import PatientRegisterEditRemarkBatch from "./PatientRegisterEditRemarkBatch.vue";
  647. import ImportOrgData from "./ImportOrgData.vue";
  648. import Queue from "../../components/queue/Queue.vue";
  649. import PreviewCusGrant from "@/components/common/PreviewCusGrant.vue";
  650. import { UTable, UTableColumn } from "umy-ui";
  651. export default {
  652. components: {
  653. PatientRegisterEdit,
  654. Camera,
  655. PatientRegisterAsbItem,
  656. PatientRegisterEditGroupBatch, // 批量调整分组
  657. PatientRegisterEditItemBatch, // 批量调整项目
  658. PatientRegisterEditDoctorBatch, // 批量调整检查项目医生
  659. PatientRegisterEditMedicalTypeBatch, // 批量调整体检类别
  660. PatientRegisterEditPersonnelTypeBatch, // 批量调整体检类别
  661. PatientRegisterEditRemarkBatch, // 批量调整体检类别
  662. ElProgressOCX0,
  663. ImportOrgData,
  664. Queue, PreviewCusGrant,
  665. DownloadExcel: JsonExcel,
  666. UTable,
  667. UTableColumn,
  668. },
  669. props: ["refQueryCondition"],
  670. data() {
  671. return {
  672. pagePriv: {
  673. routeUrlorPageName: "patientRegister", //当前页面归属路由或归属页面权限名称
  674. privs: [], // 页面权限
  675. },
  676. patient_register_query_idno: 'Y', // 身份证排他
  677. patient_register_query_name: 'N', // 姓名排他
  678. patient_register_read_idno_upPhoto: 'N', // 读身份证查询 是否更新照片
  679. peisid: null,
  680. startPoint: -1, // 多选起点 -1 表示选择
  681. endPoint: -1, // 多选终点 -1 表示未选择
  682. tableData: [], //表格数据
  683. tableDataCurrentRow: {}, // 当前被选中的行
  684. multipleSelection: [], //选中的数据列表
  685. dialogCamera: false,
  686. tabChoosed: "1",
  687. formInitData: {}, //体检登记初始表单数据
  688. editTimes: 0,
  689. rClickRow: null, //右击的行
  690. rClickColumn: null, //右击的列(预留)
  691. dragColDesign: [], // 待调整的排序的序
  692. //拖动列
  693. dragCol: [
  694. { label: "序号", prop: "sn", minWidth: 40, align: "center" },
  695. {
  696. label: "体检进度",
  697. prop: "completeFlag",
  698. minWidth: 80,
  699. align: "center",
  700. },
  701. {
  702. label: "打印",
  703. prop: "guidePrintTimes",
  704. minWidth: 55,
  705. align: "center",
  706. },
  707. { label: "锁住", prop: "isLock", minWidth: 55, align: "center" },
  708. {
  709. label: "单位",
  710. prop: "customerOrgParentName",
  711. minWidth: 180,
  712. align: "center",
  713. },
  714. {
  715. label: "部门",
  716. prop: "customerOrgName",
  717. minWidth: 120,
  718. align: "center",
  719. },
  720. { label: "姓名", prop: "patientName", minWidth: 80, align: "center" },
  721. { label: "性别", prop: "sexId", minWidth: 55, align: "center" },
  722. { label: "年龄", prop: "age", minWidth: 55, align: "center" },
  723. {
  724. label: "条码号",
  725. prop: "patientRegisterNo",
  726. minWidth: 110,
  727. align: "center",
  728. },
  729. { label: "档案号", prop: "patientNo", minWidth: 90, align: "center" },
  730. {
  731. label: "体检次数",
  732. prop: "medicalTimes",
  733. minWidth: 80,
  734. align: "center",
  735. },
  736. {
  737. label: "分组/套餐",
  738. prop: "groupPack",
  739. minWidth: 150,
  740. align: "center",
  741. },
  742. { label: "民族", prop: "nationName", minWidth: 55, align: "center" }, //nationId
  743. { label: "身份证", prop: "idNo", minWidth: 160, align: "center" },
  744. { label: "出生日期", prop: "birthDate", minWidth: 80, align: "center" },
  745. { label: "邮箱", prop: "email", minWidth: 150, align: "center" },
  746. {
  747. label: "手机",
  748. prop: "mobileTelephone",
  749. minWidth: 130,
  750. align: "center",
  751. },
  752. { label: "电话", prop: "telephone", minWidth: 130, align: "center" },
  753. { label: "地址", prop: "address", minWidth: 400, align: "" },
  754. { label: "备注", prop: "remark", minWidth: 400, align: "" },
  755. {
  756. label: "体检卡号",
  757. prop: "medicalCardNo",
  758. minWidth: 80,
  759. align: "center",
  760. },
  761. { label: "工卡号", prop: "jobCardNo", minWidth: 80, align: "center" },
  762. {
  763. label: "婚姻状况",
  764. prop: "maritalStatusName", //maritalStatusId
  765. minWidth: 80,
  766. align: "center",
  767. },
  768. {
  769. label: "体检类别",
  770. prop: "medicalTypeId",
  771. minWidth: 80,
  772. align: "center",
  773. },
  774. {
  775. label: "人员类别",
  776. prop: "personnelTypeName", //personnelTypeId
  777. minWidth: 80,
  778. align: "center",
  779. },
  780. { label: "职务", prop: "jobPost", minWidth: 200, align: "center" },
  781. { label: "职称", prop: "jobTitle", minWidth: 80, align: "center" },
  782. { label: "介绍人", prop: "salesman", minWidth: 80, align: "center" },
  783. { label: "是否VIP", prop: "isVip", minWidth: 80, align: "center" },
  784. { label: "登记人", prop: "creatorName", minWidth: 80, align: "center" },
  785. {
  786. label: "登记日期",
  787. prop: "creationTime",
  788. minWidth: 140,
  789. align: "center",
  790. },
  791. {
  792. label: "体检日期",
  793. prop: "medicalStartDate",
  794. minWidth: 140,
  795. align: "center",
  796. },
  797. { label: "是否上传", prop: "isUpload", minWidth: 80, align: "center" },
  798. { label: "高原/健康", prop: "qztlType", minWidth: 90, align: "center" },
  799. { label: "行车", prop: "qztlIsMain", minWidth: 50, align: "center" },
  800. { label: "从业", prop: "qztlIsCy", minWidth: 50, align: "center" },
  801. { label: "普速", prop: "qztlIsCw", minWidth: 50, align: "center" },
  802. { label: "高铁", prop: "qztlIsGt", minWidth: 50, align: "center" },
  803. { label: "职害", prop: "qztlIsWh", minWidth: 50, align: "center" },
  804. { label: "复检", prop: "qztlIsFj", minWidth: 50, align: "center" },
  805. {
  806. label: "标准金额",
  807. prop: "standardAmount",
  808. minWidth: 80,
  809. align: "center",
  810. },
  811. {
  812. label: "应收金额",
  813. prop: "receivableAmount",
  814. minWidth: 80,
  815. align: "center",
  816. },
  817. {
  818. label: "实收金额",
  819. prop: "chargeAmount",
  820. minWidth: 80,
  821. align: "center",
  822. },
  823. {
  824. label: "支付方式",
  825. prop: "chargePayMode",
  826. minWidth: 80,
  827. align: "center",
  828. },
  829. ],
  830. dialogColSort: false,
  831. jsonFields: {},
  832. dom: null, //用于滚动加载数据
  833. // lazyLoading: false, //是否懒加载中
  834. loadOpts: {
  835. totalCount: 0,
  836. skipCount: 0,
  837. maxResultCount: 100,
  838. },
  839. loadOptsInit: {},
  840. upBaseInfo: {
  841. visble: false,
  842. label: "姓名",
  843. value: "",
  844. colName: "patientName",
  845. patientRegisterId: "",
  846. medicalStartDate: "", // 体检日期
  847. registerManType: "customer", //登记人员类型,客服:customer 医生:doctor 支持在医生诊台处理登记人员
  848. id: "", //id
  849. photo: "", //照片
  850. patientId: "00000000-0000-0000-0000-000000000000", //档案号ID 选择了档案就传档案号,未选就传00000-0000...
  851. patientNo: "", //档案号
  852. customerOrgId: ["00000000-0000-0000-0000-000000000001"], //单位编号 默认个人
  853. customerOrgParentId: "00000000-0000-0000-0000-000000000001",
  854. customerOrgName: "个人体检",
  855. customerOrgRegisterId: "00000000-0000-0000-0000-000000000001", //默认单位体检次数
  856. customerOrgGroupId: null, //分组
  857. medicalPackageId: null, //套餐
  858. patientName: "", //姓名
  859. birthDate: null, //日期型
  860. sexId: "U", //性别 默认未知U
  861. age: null, //年龄
  862. jobCardNo: "", //工卡号
  863. medicalCardNo: "", //体检卡号
  864. maritalStatusId: "9", //婚姻状况 默认未知
  865. medicalTypeId: null, //体检类别
  866. personnelTypeId: null, //人员类别
  867. jobPost: "", //职务
  868. jobTitle: "", //职称
  869. salesman: "", //介绍人
  870. sexHormoneTermId: null, //性激素期限
  871. isNameHide: "N", //隐藏姓名
  872. isPhoneFollow: "N", //电话随访
  873. isVip: "N", //vip客户
  874. remark: "", //
  875. isLock: "N", //是否锁住
  876. completeFlag: "1", //完成标志 0:预登记,1:正式登记(未检),2:部份已检,3:已总检 【创建编辑时不操作】
  877. isMedicalStart: "N", //体检开始标志 【创建编辑时不操作】
  878. patientRegisterNo: "", //条码号 【创建编辑时不操作】
  879. medicalTimes: 1, //条码号 【创建编辑时不操作】
  880. medicalCenterId: null, //体检中心
  881. address: "", //地址
  882. email: "", //email
  883. idNo: "", //身份证号
  884. telephone: "", //电话
  885. mobileTelephone: "", //手机号
  886. nationId: null, //民族编号
  887. birthPlaceId: null, //籍惯(出生地)
  888. postalCode: "", //邮编
  889. creatorId: null,
  890. creationTime: "",
  891. lastModificationTime: "",
  892. lastModifierId: null,
  893. isMaxMedicalTimes: "N",
  894. //medicalStartDate: null,
  895. hisPatientId: "", //对接 hisid
  896. registerCheckAsbitems: [], //所选组合项目明细
  897. // 青藏公司 数据
  898. qztlType: "0", // 高原/健康
  899. qztlIsCw: "N", // 普速
  900. qztlIsCy: "N", // 从业
  901. qztlIsGt: "N", // 高铁
  902. qztlIsMain: "N", // 行车
  903. qztlIsWh: "N", // 职害
  904. qztlIsFj: "N", // 复检
  905. isQztlImport: "N", // 导入
  906. uploadQztlFlag: "N", // 上传
  907. planuserid: "", // 计划人
  908. // 职业病
  909. ocCheckTypeId: null, //检查类别
  910. jobType: "", //工种
  911. poisonIds: [], // 接害因素IDs(主表不保存此项数据)
  912. isPatientOccupationalDisease: "Y", // 是否职业病检查(主表不保存此项数据)
  913. appointPatientRegisterId: "",
  914. thirdBookingId: "",
  915. occupationalDiseaseNumber: "",
  916. },
  917. nation: [],
  918. dialogEditMedicalStartDate: false, // 修改体检日期
  919. queueParams: {
  920. patientRegisterId: '',
  921. patientName: '',
  922. queueTimes: 0, //刷新用
  923. }, // 分诊排队参数
  924. LocalConfig: {
  925. normal: {
  926. maxResultCount: 100, //分页时单页记录数
  927. },
  928. },
  929. tableName: "", //导出人员列表表名
  930. doctorType: "check", //check:检查 audit:审核
  931. merge_lis_pacs_label: "0", //默认0 检验检查条码合并 0:不合并,1:合并
  932. qrCode: {
  933. winDisplay: false, // 页面显示
  934. url: "https://ccjktj.cn:5081/", //二维码 前辍地址
  935. personUrl: "", // 个人云胶片地址
  936. barcodeNo: "条码号",
  937. patientName: "姓 名",
  938. },
  939. // 体检表回收
  940. recover: {
  941. dialog: false,
  942. recoverType: "0", //回收类型 0-条码号 1-档案号
  943. barcode: "", // 条码号或档案号
  944. barcodes: [], // 条码号或档案号集合
  945. isRecoverGuide: "Y", //状态 Y-回收,N-取消回收
  946. },
  947. // 避免单击事件与双击事件冲突
  948. clickTime1: 0,
  949. clickTime2: 0,
  950. // 知情同意书参数
  951. preCusGrantParams: {
  952. patientRegisterId: '',
  953. brushTimes: 0
  954. },
  955. dialogElProgress:false, // 本页面所涉进度条
  956. };
  957. },
  958. created() {
  959. //获取用户当前页面的权限
  960. let userPriv = window.sessionStorage.getItem("userPriv");
  961. if (userPriv)
  962. this.pagePriv.privs = deepCopy(
  963. getPagePriv(this.pagePriv.routeUrlorPageName)
  964. );
  965. try {
  966. let LocalConfig = JSON.parse(
  967. window.localStorage.getItem("LocalConfig") || null
  968. );
  969. if (LocalConfig?.normal?.maxResultCount) {
  970. this.LocalConfig.normal.maxResultCount =
  971. LocalConfig.normal.maxResultCount;
  972. }
  973. } catch (error) {
  974. console.log('window.localStorage.getItem("LocalConfig")', error);
  975. }
  976. // console.log('this.LocalConfig',this.LocalConfig)
  977. this.loadOpts.maxResultCount = Number(
  978. this.LocalConfig.normal.maxResultCount || 100
  979. );
  980. this.loadOptsInit = Object.assign({}, this.loadOpts);
  981. // 获取系统参数 -- 合并检验检查条码
  982. postapi("/api/app/SysParmValue/GetSysParmValueBySysParmId", {
  983. sysParmId: "merge_lis_pacs_label",
  984. }).then((res) => {
  985. if (res.code > -1) {
  986. this.merge_lis_pacs_label = res.data || "0";
  987. }
  988. });
  989. // 获取系统参数 -- 云胶片二维码网址
  990. postapi("/api/app/SysParmValue/GetSysParmValueBySysParmId", {
  991. sysParmId: "pacs_cloud_url",
  992. }).then((res) => {
  993. if (res.code > -1) {
  994. this.qrCode.url = res.data || "https://ccjktj.cn:5081/";
  995. }
  996. });
  997. // 获取系统参数 -- 身份证排他
  998. postapi("/api/app/SysParmValue/GetSysParmValueBySysParmId",
  999. { sysParmId: "patient_register_query_idno" }
  1000. ).then((res) => {
  1001. if (res.code > -1) {
  1002. this.patient_register_query_idno = res.data || "Y";
  1003. }
  1004. });
  1005. // 获取系统参数 -- 姓名排他
  1006. postapi("/api/app/SysParmValue/GetSysParmValueBySysParmId",
  1007. { sysParmId: "patient_register_query_name" }
  1008. ).then((res) => {
  1009. if (res.code > -1) {
  1010. this.patient_register_query_name = res.data || "N";
  1011. }
  1012. });
  1013. // 获取系统参数 -- 读身份证 是否更新照片
  1014. postapi("/api/app/SysParmValue/GetSysParmValueBySysParmId",
  1015. { sysParmId: "patient_register_read_idno_upPhoto" }
  1016. ).then((res) => {
  1017. if (res.code > -1) {
  1018. this.patient_register_read_idno_upPhoto = res.data || "N";
  1019. }
  1020. });
  1021. },
  1022. //挂载完成
  1023. mounted() {
  1024. this.quickAsb = this.dict.asbItemAll;
  1025. this.peisid = window.sessionStorage.getItem("peisid");
  1026. // if(this.$refs.info){
  1027. // this.$nextTick(() => {
  1028. // this.scrollFull()
  1029. // })
  1030. // }
  1031. },
  1032. computed: {
  1033. ...mapState([
  1034. "pickerOptions",
  1035. "window",
  1036. "dataTransOpts",
  1037. "dialogWin",
  1038. "dict",
  1039. "elProgress",
  1040. "patientRegister",
  1041. "customerOrg",
  1042. ]),
  1043. },
  1044. methods: {
  1045. ...mapActions(["getCustomerOrgGroup", "getPatientRegisterAbs"]),
  1046. moment,
  1047. dddw,
  1048. deepCopy,
  1049. checkPagePriv,
  1050. setPrStatusColor,
  1051. // 扩展定义表格行样式
  1052. handleRowClassName({ row, rowIndex }) {
  1053. // highLightBg 为 'selected'的高亮
  1054. //// console.log(rowIndex, row)
  1055. //return row.highLightBg == 'selected' ? 'high-light-bg' : '';
  1056. if (row.choosed) {
  1057. return "current-row";
  1058. } else {
  1059. return "";
  1060. }
  1061. },
  1062. // 行选择
  1063. rowSelected(rows) {
  1064. rows.forEach((e) => {
  1065. this.$refs["info"].toggleRowSelection(e, true);
  1066. });
  1067. },
  1068. refFuncSetData(item, v) {
  1069. setData(this, item, v);
  1070. },
  1071. // 打印指引单(isPreview)
  1072. async guidePrint(ReportCode, isPreview) {
  1073. if (!this.$peisAPI) {
  1074. this.$message.info({
  1075. showClose: true,
  1076. message: "此功能,需要在壳客户端才可运行!",
  1077. });
  1078. return;
  1079. }
  1080. let token = window.sessionStorage.getItem("token");
  1081. let user = window.sessionStorage.getItem("user");
  1082. let toOutShell = {
  1083. ReportCode,
  1084. token,
  1085. isBuildImage: "N",
  1086. IsUploadPdf: "N",
  1087. preViewCanPrint: "N",
  1088. Parameters: [
  1089. { Name: "printer", Value: user },
  1090. { Name: "hisLog", Value: "pic/hisLog.jpg" },
  1091. { Name: "pageFooter", Value: "pic/peisQrCode.jpg" },
  1092. { Name: "picExtOne", Value: "pic/evaluate.jpg" }, // 客户评价二维码(检后评价)
  1093. ],
  1094. };
  1095. let lfind = -1;
  1096. //选中(取消勾选)start -------------------------
  1097. // this.multipleSelection = []
  1098. // this.tableData.forEach(e => {
  1099. // if (e.choosed) {
  1100. // this.multipleSelection.push(deepCopy(e))
  1101. // }
  1102. // })
  1103. //选中(取消勾选) end  -------------------------
  1104. if (this.multipleSelection.length < 1) {
  1105. this.$message.info({
  1106. showClose: true,
  1107. message: "请勾选要打印指引单的人员记录!",
  1108. });
  1109. return;
  1110. }
  1111. if (isPreview) {
  1112. /*
  1113. //this.multipleSelection.forEach((item,index) =>{
  1114. postapi(
  1115. `/api/app/printreport/getpatientregisterguidereport?PatientRegisterId=${this.multipleSelection[0].id}`
  1116. )
  1117. .then((res) => {
  1118. if (res.code != -1) {
  1119. toOutShell.ReportTable = res.data;
  1120. // console.log(
  1121. "JSON.stringify(toOutShell)",
  1122. JSON.stringify(toOutShell)
  1123. );
  1124. return this.$peisAPI.printPre(JSON.stringify(toOutShell));
  1125. }
  1126. })
  1127. .then(res => {
  1128. // console.log('this.$peisAPI.printPre', res)
  1129. if (JSON.parse(res).code < 0) {
  1130. this.$message.warning(JSON.parse(res).message);
  1131. }
  1132. })
  1133. .catch((err) => {
  1134. // console.log('打印指引单', err)
  1135. this.$message.warning({ showClose: true, message: err });
  1136. });
  1137. */
  1138. toOutShell.BusinessCode = this.multipleSelection[0].id;
  1139. if (this.multipleSelection[0].completeFlag == "0") {
  1140. this.$message.warning({
  1141. showClose: true,
  1142. message: "预登记人员,不可执行此操作!",
  1143. });
  1144. return;
  1145. }
  1146. this.$peisAPI
  1147. .printPre(JSON.stringify(toOutShell))
  1148. .then((res) => {
  1149. if (JSON.parse(res).code < 0) {
  1150. this.$message.warning({
  1151. showClose: true,
  1152. message: JSON.parse(res).message,
  1153. });
  1154. }
  1155. })
  1156. .catch((err) => {
  1157. // console.log('打印指引单', err)
  1158. this.$message.warning({ showClose: true, message: `${err}` });
  1159. });
  1160. } else {
  1161. this.dialogElProgress = true;
  1162. this.elProgress.percentage = 0;
  1163. for (let i = 0; i < this.multipleSelection.length; i++) {
  1164. try {
  1165. let patientregisterId = this.multipleSelection[i].id;
  1166. if (this.multipleSelection[i].completeFlag == "0") {
  1167. this.$message.warning({
  1168. showClose: true,
  1169. message: `${this.multipleSelection[i].patientName} 为预登记人员,不可打印指引单`,
  1170. });
  1171. continue;
  1172. }
  1173. toOutShell.BusinessCode = patientregisterId;
  1174. let resPeisAPI = await this.$peisAPI.print(
  1175. JSON.stringify(toOutShell)
  1176. );
  1177. if (JSON.parse(resPeisAPI).code < 0) continue;
  1178. let resPrintTimes = await postapi(
  1179. "/api/app/patientregister/updatepatientregisterguideprinttimesmany",
  1180. [patientregisterId]
  1181. );
  1182. if (resPrintTimes.code == -1) continue;
  1183. lfind = arrayExistObj(this.tableData, "id", patientregisterId);
  1184. if (lfind > -1) {
  1185. if (this.tableData[lfind].guidePrintTimes) {
  1186. this.tableData[lfind].guidePrintTimes =
  1187. Number(this.tableData[lfind].guidePrintTimes) + 1;
  1188. } else {
  1189. this.tableData[lfind].guidePrintTimes = 1;
  1190. }
  1191. }
  1192. } catch (error) {
  1193. // console.log('打印指引单', error)
  1194. this.$message.warning({ showClose: true, message: `${error}` });
  1195. }
  1196. this.elProgress.percentage = Math.floor(
  1197. ((i + 1) * 100) / this.multipleSelection.length
  1198. );
  1199. }
  1200. this.dialogElProgress = false;
  1201. }
  1202. },
  1203. // 指引单新打印方式,promise
  1204. guidePrintPromise(ReportCode, isPreview, row) {
  1205. return new Promise((resolve, reject) => {
  1206. if (!this.$peisAPI) reject("此功能,需要在壳客户端才可运行!");
  1207. let token = window.sessionStorage.getItem("token");
  1208. let user = window.sessionStorage.getItem("user");
  1209. let toOutShell = {
  1210. ReportCode,
  1211. token,
  1212. isBuildImage: "N",
  1213. IsUploadPdf: "N",
  1214. preViewCanPrint: "N",
  1215. Parameters: [
  1216. { Name: "printer", Value: user },
  1217. { Name: "hisLog", Value: "pic/hisLog.jpg" },
  1218. { Name: "pageFooter", Value: "pic/peisQrCode.jpg" },
  1219. ],
  1220. };
  1221. if (!row.completeFlag || row.completeFlag == "0")
  1222. reject("预登记人员,不可执行此操作!");
  1223. toOutShell.BusinessCode = row.id;
  1224. console.log(JSON.stringify(toOutShell));
  1225. if (isPreview) {
  1226. this.$peisAPI
  1227. .printPre(JSON.stringify(toOutShell))
  1228. .then((res) => {
  1229. let lres = JSON.parse(res);
  1230. if (lres.code > -1) {
  1231. resolve(lres);
  1232. } else {
  1233. reject(lres.message);
  1234. }
  1235. })
  1236. .catch((err) => {
  1237. reject(err);
  1238. });
  1239. } else {
  1240. this.$peisAPI
  1241. .print(JSON.stringify(toOutShell))
  1242. .then((res) => {
  1243. let lres = JSON.parse(res);
  1244. if (lres.code > -1) {
  1245. return postapi(
  1246. "/api/app/patientregister/updatepatientregisterguideprinttimesmany",
  1247. [row.id]
  1248. );
  1249. } else {
  1250. reject(lres.message);
  1251. }
  1252. })
  1253. .then((res) => {
  1254. if (res && res.code > -1) {
  1255. let lfind = arrayExistObj(this.tableData, "id", row.id);
  1256. if (lfind > -1) {
  1257. if (this.tableData[lfind].guidePrintTimes) {
  1258. this.tableData[lfind].guidePrintTimes =
  1259. Number(this.tableData[lfind].guidePrintTimes) + 1;
  1260. } else {
  1261. this.tableData[lfind].guidePrintTimes = 1;
  1262. }
  1263. }
  1264. }
  1265. resolve(res);
  1266. })
  1267. .catch((err) => {
  1268. reject(err);
  1269. });
  1270. }
  1271. });
  1272. },
  1273. printGuideLisPacs(row) {
  1274. return new Promise((resolve, reject) => {
  1275. // this.merge_lis_pacs_label == '1' 合并检验检查条码
  1276. if (this.merge_lis_pacs_label == "1") {
  1277. this.guidePrintPromise("0008", false, row)
  1278. .then((res) => {
  1279. return this.lisPrint(row, "0002", false);
  1280. })
  1281. // .then((res) => {
  1282. // return this.pacsPrint(row, "0004", false);
  1283. // })
  1284. .then((res) => {
  1285. resolve(res);
  1286. })
  1287. .catch((err) => {
  1288. reject(err);
  1289. });
  1290. } else {
  1291. this.guidePrintPromise("0008", false, row)
  1292. .then((res) => {
  1293. return this.lisPrint(row, "0002", false);
  1294. })
  1295. .then((res) => {
  1296. return this.pacsPrint(row, "0004", false);
  1297. })
  1298. .then((res) => {
  1299. resolve(res);
  1300. })
  1301. .catch((err) => {
  1302. reject(err);
  1303. });
  1304. }
  1305. });
  1306. },
  1307. // 临时加
  1308. printGuidePacs(row) {
  1309. return new Promise((resolve, reject) => {
  1310. this.guidePrintPromise("0008", false, row)
  1311. .then((res) => {
  1312. return this.pacsPrint(row, "0004", false);
  1313. })
  1314. .then((res) => {
  1315. resolve(res);
  1316. })
  1317. .catch((err) => {
  1318. reject(err);
  1319. });
  1320. });
  1321. },
  1322. async printPromise() {
  1323. if (this.multipleSelection.length < 1) {
  1324. this.$message.info({
  1325. showClose: true,
  1326. message: "请勾选要打印人员检验检查条码的记录!",
  1327. });
  1328. return;
  1329. }
  1330. this.dialogElProgress = true;
  1331. this.elProgress.percentage = 0;
  1332. for (let i = 0; i < this.multipleSelection.length; i++) {
  1333. let row = this.multipleSelection[i];
  1334. try {
  1335. await this.printGuideLisPacs(row);
  1336. } catch (error) {
  1337. console.log("printPromise", error);
  1338. }
  1339. this.elProgress.percentage = Math.floor(
  1340. ((i + 1) * 100) / this.multipleSelection.length
  1341. );
  1342. }
  1343. this.dialogElProgress = false;
  1344. },
  1345. // 临时加
  1346. async printPromise2() {
  1347. if (this.multipleSelection.length < 1) {
  1348. this.$message.info({
  1349. showClose: true,
  1350. message: "请勾选要打印人员检验检查条码的记录!",
  1351. });
  1352. return;
  1353. }
  1354. this.dialogElProgress = true;
  1355. this.elProgress.percentage = 0;
  1356. for (let i = 0; i < this.multipleSelection.length; i++) {
  1357. let row = this.multipleSelection[i];
  1358. try {
  1359. await this.printGuidePacs(row);
  1360. } catch (error) {
  1361. console.log("printPromise", error);
  1362. }
  1363. this.elProgress.percentage = Math.floor(
  1364. ((i + 1) * 100) / this.multipleSelection.length
  1365. );
  1366. }
  1367. this.dialogElProgress = false;
  1368. },
  1369. handleSelectionChange(rows) {
  1370. //this.multipleSelection = rows;
  1371. //// console.log('this.multipleSelection',this.multipleSelection)
  1372. // rows.forEach((item) => {
  1373. // item.highLightBg = "selected";
  1374. // });
  1375. // // 取消全选
  1376. // if (!rows.length) {
  1377. // this.tableData.forEach((item) => {
  1378. // item.highLightBg = "";
  1379. // });
  1380. // }
  1381. this.multipleSelection = rows;
  1382. },
  1383. //设置新增/编辑的form数据
  1384. setForm(formData) {
  1385. this.patientRegister.patientRegisterRd = deepCopy(formData);
  1386. if (!this.patientRegister.patientRegisterRd.id) {
  1387. this.patientRegister.patientRegisterRd.customerOrgId =
  1388. this.refQueryCondition.customerOrgId;
  1389. }
  1390. },
  1391. //点击体检次数行
  1392. rowClick(row) {
  1393. // 按住了shift键
  1394. // if (this.window.shift) {
  1395. // //清除所有选择
  1396. // this.tableData.forEach((e, index) => {
  1397. // e.choosed = false;
  1398. // e.index = index;
  1399. // });
  1400. // if (this.startPoint == -1) {
  1401. // this.tableData[row.index].choosed = true;
  1402. // this.startPoint = row.index;
  1403. // } else {
  1404. // if (this.startPoint > row.index) {
  1405. // for (let i = row.index; i <= this.startPoint; i++) {
  1406. // this.tableData[i].choosed = true;
  1407. // }
  1408. // } else if (this.startPoint <= row.index) {
  1409. // for (let i = this.startPoint; i <= row.index; i++) {
  1410. // this.tableData[i].choosed = true;
  1411. // }
  1412. // }
  1413. // }
  1414. // } else if (this.window.ctrl) { // 按住了ctrl 键
  1415. // this.tableData[row.index].choosed = true;
  1416. // if (this.startPoint == -1) {
  1417. // this.startPoint = row.index;
  1418. // }
  1419. // } else {
  1420. // // 未按住了ctrl 、shift 键
  1421. // //清除所有选择
  1422. // // console.log("清除所有选择");
  1423. // this.tableData.forEach((e, index) => {
  1424. // e.choosed = false;
  1425. // e.index = index;
  1426. // });
  1427. // // console.log(this.tableData, row.index);
  1428. // // console.log(this.tableData[row.index].choosed);
  1429. // this.tableData[row.index].choosed = true;
  1430. // this.startPoint = row.index;
  1431. // }
  1432. //选中了多个点编辑时,排序最前的作为当前选中的
  1433. // console.log('row.index <= this.startPoint', row.index, this.startPoint)
  1434. // let lfind = -1
  1435. // for (let i = 0; i < this.tableData.length; i++) {
  1436. // if (this.tableData[i].choosed) {
  1437. // lfind = i
  1438. // break
  1439. // }
  1440. // }
  1441. // if (lfind > -1) {
  1442. // 弹出编辑框,只有在编辑框显示时,才去触发获取数据
  1443. this.clickTime1 = new Date().getTime();
  1444. setTimeout(() => {
  1445. if (this.clickTime1 > this.clickTime2) {
  1446. this.dataTransOpts.tableS.patient_register = deepCopy(row);
  1447. this.tableDataCurrentRow = deepCopy(row);
  1448. this.dataTransOpts.refresh.register_check_asbitem.M++; //触发所选组合项目刷新
  1449. }
  1450. }, 400);
  1451. // }
  1452. },
  1453. // 双击 调出编辑
  1454. dblClick(row) {
  1455. this.clickTime2 = new Date().getTime();
  1456. this.dataTransOpts.tableS.patient_register.id = row.id;
  1457. this.btnEdit();
  1458. //触发单击事件
  1459. this.dataTransOpts.tableS.patient_register = deepCopy(row);
  1460. this.tableDataCurrentRow = deepCopy(row);
  1461. this.dataTransOpts.refresh.register_check_asbitem.M++; //触发所选组合项目刷新
  1462. },
  1463. // 导入企业(青藏公司)数据
  1464. btnImportOrgData() {
  1465. //
  1466. this.dataTransOpts.plus.ImportOrgData++;
  1467. this.dialogWin.ImportOrgData = true;
  1468. },
  1469. //体检次数 相关操作
  1470. btnAdd() {
  1471. if (!this.peisid || this.peisid == "null") {
  1472. this.$message.warning({
  1473. showClose: true,
  1474. message: "该用户未选归属体检中心,不能执行此操作!",
  1475. });
  1476. return;
  1477. }
  1478. console.log('btnAdd.this.refQueryCondition', this.refQueryCondition)
  1479. let customerOrgId = this.refQueryCondition.customerOrgId;
  1480. if (!customerOrgId) {
  1481. this.$message.warning({ showClose: true, message: "请选择单位或个人" });
  1482. return;
  1483. }
  1484. // this.patientRegister.patientRegisterRdInit.customerOrgId = customerOrgId
  1485. // this.setForm(this.patientRegister.patientRegisterRdInit)
  1486. // this.patientRegister.patientRegisterAbs = [];
  1487. // this.patientRegister.patientRegisterRd.id = ''
  1488. // this.dialogWin.PatientRegisterEdit = true;
  1489. // this.editTimes++; //触发表单窗口,数据更新
  1490. // this.getPatientRegisterAbs();
  1491. this.dataTransOpts.tableS.patient_register.id = "";
  1492. this.dataTransOpts.copyGroup.itemTypeIds = []; //
  1493. this.dialogWin.PatientRegisterEdit = true;
  1494. this.dataTransOpts.plus.clearPatientRegisterQuery++; //触发清空人员登记界面的查询条件
  1495. setTimeout(() => {
  1496. this.dataTransOpts.refresh.patient_register.S++; //触发人员信息刷新
  1497. }, 10);
  1498. },
  1499. //批量正式登记
  1500. btnAddBatch(completeFlag) {
  1501. let patientRegisterIds = [];
  1502. //取消勾选,换成选择的方式 start
  1503. // this.multipleSelection = [];
  1504. // this.tableData.forEach((e) => {
  1505. // if (e.choosed && e.completeFlag == '0') {
  1506. // this.multipleSelection.push(e);
  1507. // patientRegisterIds.push(e.id)
  1508. // }
  1509. // });
  1510. //取消勾选,换成选择的方式 end
  1511. if (this.multipleSelection.length < 1) {
  1512. this.$message.info({
  1513. showClose: true,
  1514. message: "请勾选要操作的记录!",
  1515. });
  1516. return;
  1517. }
  1518. this.multipleSelection.forEach((e) => {
  1519. switch (completeFlag) {
  1520. case "0":
  1521. if (e.completeFlag == "1") patientRegisterIds.push(e.id);
  1522. break;
  1523. case "1":
  1524. if (e.completeFlag == "0") patientRegisterIds.push(e.id);
  1525. break;
  1526. }
  1527. });
  1528. if (patientRegisterIds.length == 0) {
  1529. this.$message.info({ showClose: true, message: "没有可操作的数据!" });
  1530. return;
  1531. }
  1532. let body = { completeFlag, patientRegisterIds };
  1533. postapi(
  1534. "/api/app/patientregister/updatepatientregistercompleteflagormedicalstartdate",
  1535. body
  1536. )
  1537. .then((res) => {
  1538. if (res.code != -1) {
  1539. // console.log('操作成功!')
  1540. patientRegisterIds.forEach((e) => {
  1541. let lfind = arrayExistObj(this.tableData, "id", e);
  1542. if (lfind > -1) this.tableData[lfind].completeFlag = completeFlag;
  1543. });
  1544. }
  1545. })
  1546. .catch((err) => {
  1547. this.$message.error({ showClose: true, message: `操作失败 ${err}` });
  1548. });
  1549. },
  1550. // 单个编辑
  1551. btnEdit() {
  1552. // if (!this.patientRegister.patientRegisterRd.id) {
  1553. if (!this.dataTransOpts.tableS.patient_register.id) {
  1554. this.$message.warning({
  1555. showClose: true,
  1556. message: "请选择要操作的记录",
  1557. });
  1558. return;
  1559. }
  1560. //// console.log(this.patientRegister.patientRegisterRd,this.tableData)
  1561. // 触发数据刷新
  1562. this.dataTransOpts.refresh.patient_register.S++; //触发人员信息刷新(会同时刷新组合项目)
  1563. this.dataTransOpts.plus.clearPatientRegisterQuery++; //触发清空人员登记界面的查询条件
  1564. this.dataTransOpts.copyGroup.itemTypeIds = []; //
  1565. this.dialogWin.PatientRegisterEdit = true;
  1566. },
  1567. //新增或编辑后选中记录
  1568. async close_dialogWin_PatientRegisterEdit() {
  1569. // 如果 dataTransOpts.tableS.patient_register.id 为空(未增加),则不做处理
  1570. let id = this.dataTransOpts.tableS.patient_register.id;
  1571. if (!id) {
  1572. id = this.tableDataCurrentRow.id;
  1573. }
  1574. if (!id) return;
  1575. this.dataTransOpts.tableS.patient_register.id = id;
  1576. let res = await postapi("/api/app/patientregister/getlistinfilter", {
  1577. patientRegisterNo:
  1578. this.dataTransOpts.tableS.patient_register.patientRegisterNo,
  1579. });
  1580. if (res.code != 1) return;
  1581. let currentRow = res.data.items[0];
  1582. // this.tableData.forEach(e => {
  1583. // e.choosed = false
  1584. // });
  1585. let lfind = arrayExistObj(
  1586. this.tableData,
  1587. "id",
  1588. this.dataTransOpts.tableS.patient_register.id
  1589. );
  1590. if (lfind > -1) {
  1591. objCopy(currentRow, this.tableData[lfind]);
  1592. } else {
  1593. lfind = this.tableData.length;
  1594. currentRow.index = lfind;
  1595. currentRow.choosed = true;
  1596. this.tableData.push(currentRow);
  1597. }
  1598. // 刷新 register_check_asbitem 表记录
  1599. if (lfind > -1) {
  1600. this.dataTransOpts.refresh.register_check_asbitem.M++;
  1601. }
  1602. },
  1603. //拍照
  1604. openCamera() {
  1605. if (!this.patientRegister.patientRegisterId) {
  1606. this.$message.warning({
  1607. showClose: true,
  1608. message: "请选择要操作的记录",
  1609. });
  1610. return;
  1611. }
  1612. this.patientRegister.cameraVisble = true;
  1613. },
  1614. //删除(可批量删除)
  1615. // /api/app/patient-register/many?PatientRegisterIds=3a0c2cac-f44c-f407-9504-c1fc5e80a159&PatientRegisterIds=3a0c2cb3-d10c-ed70-db6a-b835e75ce641
  1616. btnDel() {
  1617. if (this.multipleSelection.length < 1) {
  1618. this.$message.warning({
  1619. showClose: true,
  1620. message: "请先勾选要操作的记录",
  1621. });
  1622. return;
  1623. }
  1624. let patientRegisterIds = [];
  1625. for (let i = 0; i < this.multipleSelection.length; i++) {
  1626. patientRegisterIds.push(this.multipleSelection[i]["id"]);
  1627. }
  1628. this.$confirm("此操作将永久删除该记录, 是否继续?", "提示", {
  1629. confirmButtonText: "是",
  1630. cancelButtonText: "否",
  1631. type: "warning",
  1632. })
  1633. .then(async () => {
  1634. let lfind
  1635. this.dialogElProgress = true;
  1636. this.elProgress.percentage = 0;
  1637. for (let index = 0; index < patientRegisterIds.length; index++) {
  1638. const e = patientRegisterIds[index];
  1639. try {
  1640. this.elProgress.percentage = Math.floor(index * 100 / patientRegisterIds.length)
  1641. let res = await postapi("/api/app/patient-register/delete-many", { patientRegisterIds: [e] });
  1642. if (res.code > -1) {
  1643. lfind = arrayExistObj(this.tableData, 'id', e)
  1644. if (lfind > -1) this.tableData.splice(lfind, 1)
  1645. this.loadOpts.totalCount = this.tableData.length
  1646. }
  1647. } catch (error) {
  1648. console.error('批量删除', error)
  1649. }
  1650. }
  1651. this.dialogElProgress = false;
  1652. // return postapi("/api/app/patient-register/delete-many", {
  1653. // patientRegisterIds,
  1654. // });
  1655. })
  1656. // .then((res) => {
  1657. // if (res.code != -1) {
  1658. // // console.log("操作成功");
  1659. // this.dataTransOpts.tableS.patient_register.id = "";
  1660. // setTimeout(() => {
  1661. // this.dataTransOpts.refresh.register_check_asbitem.M++;
  1662. // }, 10);
  1663. // arrayReduce(this.tableData, this.multipleSelection, "id=id"); //清除列表记录
  1664. // // this.setForm(this.patientRegister.patientRegisterRdInit)
  1665. // // this.getPatientRegisterAbs();
  1666. // }
  1667. // })
  1668. .catch((err) => {
  1669. if (err == "cancel") {
  1670. this.$message.info({ showClose: true, message: "已取消操作" });
  1671. }
  1672. });
  1673. },
  1674. //查询
  1675. async Query() {
  1676. // 查询时,清掉明细数据 (滚动时不清)
  1677. this.dataTransOpts.tableS.patient_register.id = "";
  1678. this.tableDataCurrentRow = {}; // 清除选择
  1679. if (
  1680. !(
  1681. this.refQueryCondition.isSeries == "Y" &&
  1682. this.refQueryCondition.patientRegisterNo
  1683. )
  1684. ) {
  1685. this.tableData = [];
  1686. }
  1687. setTimeout(() => {
  1688. this.dataTransOpts.refresh.register_check_asbitem.M++; //触发所选组合项目刷新
  1689. }, 10);
  1690. this.loadOpts = Object.assign(this.loadOpts, this.loadOptsInit);
  1691. await this.getPrList();
  1692. },
  1693. //数据量多时,滚动加载
  1694. async load() {
  1695. this.loadOpts.skipCount++;
  1696. await this.getPrList();
  1697. this.lazyLoading = false;
  1698. },
  1699. // 查询获取人员列表数据
  1700. async getPrList() {
  1701. if (
  1702. this.loadOpts.skipCount != 0 &&
  1703. this.loadOpts.skipCount * this.loadOpts.maxResultCount >=
  1704. this.loadOpts.totalCount
  1705. )
  1706. return;
  1707. // console.log('getPrList', this.loadOpts)
  1708. let body = Object.assign({}, this.loadOpts)
  1709. let queryType = this.refQueryCondition.queryType
  1710. console.log('getPrList.this.refQueryCondition', this.refQueryCondition)
  1711. // 非排他查询条件 ===================== Start ==========================
  1712. if (!queryType) {
  1713. // 查询条件--日期
  1714. if (this.refQueryCondition.startDate && this.refQueryCondition.endDate) {
  1715. body.dateType = this.refQueryCondition.dateType;
  1716. body.startDate = this.refQueryCondition.startDate
  1717. body.endDate = this.refQueryCondition.endDate
  1718. if (body.startDate > body.endDate) {
  1719. this.$message.warning({
  1720. showClose: true,
  1721. message: "起始日期不能大于截止日期,数据校验不通过!",
  1722. });
  1723. return;
  1724. }
  1725. }
  1726. // 查询条件--单位、次数、分组
  1727. if (this.refQueryCondition.customerOrgFlag) {
  1728. if (this.refQueryCondition.customerOrgId) body.customerOrgId = this.refQueryCondition.customerOrgId
  1729. // 获取单位体检次数与分组
  1730. try {
  1731. if (
  1732. this.refQueryCondition.customerOrgId &&
  1733. this.refQueryCondition.customerOrgId != this.dict.personOrgId &&
  1734. this.refQueryCondition.customerOrgRegister.id
  1735. ) {
  1736. body.customerOrgRegisterId = this.refQueryCondition.customerOrgRegister.id;
  1737. if (this.refQueryCondition.customerOrgGroupIds) body.customerOrgGroupIds = this.refQueryCondition.customerOrgGroupIds
  1738. }
  1739. } catch (error) {
  1740. console.error(error);
  1741. }
  1742. }
  1743. // 电话
  1744. if (this.refQueryCondition.phone) body.phone = this.refQueryCondition.phone
  1745. // 性别
  1746. if (this.refQueryCondition.sexId) body.sexId = this.refQueryCondition.sexId
  1747. // 体检类别
  1748. if (this.refQueryCondition.medicalTypeIds) body.medicalTypeIds = this.refQueryCondition.medicalTypeIds
  1749. // 人员状态
  1750. if (this.refQueryCondition.completeFlags) body.completeFlags = this.refQueryCondition.completeFlags
  1751. // 人员类别
  1752. if (this.refQueryCondition.personnelTypeIds) body.personnelTypeIds = this.refQueryCondition.personnelTypeIds
  1753. // 表格回收状态
  1754. if (this.refQueryCondition.isRecoverGuide) body.isRecoverGuide = this.refQueryCondition.isRecoverGuide
  1755. // 排他条件有值时
  1756. if (this.refQueryCondition.patientRegisterNo) {
  1757. queryType = "patientRegisterNo"
  1758. } else if (this.refQueryCondition.pacsNo) {
  1759. queryType = "pacsNo"
  1760. } else if (this.refQueryCondition.lisNo) {
  1761. queryType = "lisNo"
  1762. } else if (this.refQueryCondition.patientNo) {
  1763. queryType = "patientNo"
  1764. } else if (this.refQueryCondition.idCardNo) {
  1765. queryType = "idCardNo"
  1766. } else if (this.refQueryCondition.patientName) {
  1767. queryType = "patientName"
  1768. }
  1769. }
  1770. // 非排他查询条件 ===================== End ==========================
  1771. // 排他查询条件
  1772. let photo = ''
  1773. switch (queryType) {
  1774. case 'patientName': // 姓名排他判断
  1775. if (this.refQueryCondition.patientName) {
  1776. body.patientName = this.refQueryCondition.patientName;
  1777. if (this.patient_register_query_name == 'Y') {
  1778. body = {
  1779. patientName: this.refQueryCondition.patientName,
  1780. skipCount: this.loadOpts.skipCount,
  1781. maxResultCount: this.loadOpts.maxResultCount,
  1782. };
  1783. }
  1784. }
  1785. break;
  1786. case 'idCardNo': // 身份证排他判断
  1787. if (this.refQueryCondition.idCardNo) {
  1788. body.idNo = this.refQueryCondition.idCardNo;
  1789. if (this.patient_register_query_idno == 'Y') {
  1790. body = {
  1791. idNo: this.refQueryCondition.idCardNo,
  1792. skipCount: this.loadOpts.skipCount,
  1793. maxResultCount: this.loadOpts.maxResultCount,
  1794. };
  1795. }
  1796. }
  1797. if (this.refQueryCondition.photo) photo = this.refQueryCondition.photo;
  1798. break;
  1799. case 'patientNo': // 档案号排他判断
  1800. if (this.refQueryCondition.patientNo)
  1801. body = {
  1802. patientNo: this.refQueryCondition.patientNo,
  1803. skipCount: this.loadOpts.skipCount,
  1804. maxResultCount: this.loadOpts.maxResultCount,
  1805. };
  1806. break;
  1807. case 'patientRegisterNo': // 条码号排他判断
  1808. if (this.refQueryCondition.patientRegisterNo)
  1809. body = {
  1810. patientRegisterNo: this.refQueryCondition.patientRegisterNo,
  1811. skipCount: this.loadOpts.skipCount,
  1812. maxResultCount: this.loadOpts.maxResultCount,
  1813. };
  1814. break;
  1815. case 'pacsNo': // 检查条码排他判断
  1816. if (this.refQueryCondition.pacsNo)
  1817. body = {
  1818. pacsNo: this.refQueryCondition.pacsNo,
  1819. skipCount: this.loadOpts.skipCount,
  1820. maxResultCount: this.loadOpts.maxResultCount,
  1821. };
  1822. break;
  1823. case 'lisNo': // 检验条码排他判断
  1824. if (this.refQueryCondition.lisNo)
  1825. body = {
  1826. lisNo: this.refQueryCondition.lisNo,
  1827. skipCount: this.loadOpts.skipCount,
  1828. maxResultCount: this.loadOpts.maxResultCount,
  1829. };
  1830. break;
  1831. default: //
  1832. break;
  1833. }
  1834. // 带费且合计 /api/app/PatientRegister/GetPatientRegisterWithCharge
  1835. // 不带费且合计 /api/app/patientregister/getlistinfilter
  1836. postapi(
  1837. "/api/app/PatientRegister/GetPatientRegisterWithCharge",
  1838. body
  1839. ).then(async (res) => {
  1840. if (res.code > -1) {
  1841. // 刷新最大记录数
  1842. this.loadOpts.totalCount = res.data.totalCount;
  1843. let curLoad = res.data.items;
  1844. // let oldCount = 0
  1845. // 处理:
  1846. // 1、分组/套餐 排序混乱的问题
  1847. // 2、扫身份证查询时,无照片自动更新照片(参数控制)
  1848. curLoad.forEach((e) => {
  1849. // 1、分组/套餐 排序混乱的问题
  1850. if (e.customerOrgId == this.dict.personOrgId) {
  1851. e.groupPack = e.medicalPackageId;
  1852. } else {
  1853. e.groupPack = e.customerOrgGroupId;
  1854. }
  1855. // 2、扫身份证查询时,无照片自动更新照片(参数控制)
  1856. if (this.patient_register_read_idno_upPhoto == "Y" && photo) {
  1857. if (!e.photo) {
  1858. savePeoplePhoto(e.id, photo);
  1859. }
  1860. }
  1861. });
  1862. // 不是连续扫码时,需要判断是否分页查询(连续扫码不清原来的数据)
  1863. // console.log("this.refQueryCondition", this.refQueryCondition.isSeries, this.refQueryCondition.patientRegisterNo);
  1864. if (this.refQueryCondition.isSeries == "Y" && this.refQueryCondition.patientRegisterNo) {
  1865. // 如果已经存在列表中,则不在添加
  1866. for (let index = curLoad.length - 1; index > -1; index--) {
  1867. const e = curLoad[index];
  1868. if (arrayExistObj(this.tableData, 'id', e.id) > -1) curLoad.splice(index, 1)
  1869. }
  1870. } else {
  1871. if (body.skipCount == 0) {
  1872. //查询
  1873. this.tableData = [];
  1874. }
  1875. }
  1876. this.tableData = this.tableData.concat(curLoad);
  1877. // else {
  1878. // // 懒加载 ,原数据集不用清空
  1879. // oldCount = this.tableData.length
  1880. // }
  1881. // curLoad.forEach((e, index) => {
  1882. // this.tableData.push(Object.assign({ index: Number(oldCount) + Number(index), choosed: false }, e))
  1883. // })
  1884. //如果 有选中 记录,则刷新其对应的组合项目
  1885. if (this.dataTransOpts.tableS.patient_register.id) {
  1886. this.dataTransOpts.refresh.register_check_asbitem.M++;
  1887. }
  1888. }
  1889. });
  1890. },
  1891. //滚动加载数据
  1892. async scrollFull(scroll, event) {
  1893. if (!scroll.judgeFlse) return;
  1894. // 正在加载时阻止重复触发
  1895. if (this.lazyLoading) return;
  1896. if (
  1897. (Number(this.loadOpts.skipCount) + 1) *
  1898. Number(this.loadOpts.maxResultCount) >=
  1899. Number(this.loadOpts.totalCount)
  1900. ) {
  1901. return;
  1902. }
  1903. this.lazyLoading = true;
  1904. try {
  1905. await this.load();
  1906. } catch (e) {
  1907. console.error('scrollFull load error', e);
  1908. }
  1909. // this.dom = this.$refs.info.bodyWrapper
  1910. // console.log('this.dom', this.dom)
  1911. // this.dom.addEventListener('scroll', async () => {
  1912. // // // console.log('scrollTop',this.dom.scrollTop,'clientHeight',this.dom.clientHeight,'scrollHeight',this.dom.scrollHeight);
  1913. // if (this.dom.scrollTop + this.dom.clientHeight + 20 > this.dom.scrollHeight && !this.lazyLoading) {
  1914. // // 获取到的不是全部数据 当滚动到底部
  1915. // // console.log('scrollTop', this.dom.scrollTop, 'clientHeight', this.dom.clientHeight, 'scrollHeight', this.dom.scrollHeight);
  1916. // if ((Number(this.loadOpts.skipCount) + 1) * Number(this.loadOpts.maxResultCount) >= Number(this.loadOpts.totalCount)) {
  1917. // this.lazyLoading = false
  1918. // } else {
  1919. // this.lazyLoading = true
  1920. // await this.load()
  1921. // this.lazyLoading = false
  1922. // // this.dom.scrollTop = this.dom.scrollTop - 100
  1923. // }
  1924. // }
  1925. // })
  1926. },
  1927. close_dialogWin_upBaseInfo() {
  1928. this.upBaseInfo.visble = false;
  1929. this.close_dialogWin_PatientRegisterEdit();
  1930. },
  1931. btnUpBaseInfo() {
  1932. // let body = {
  1933. // patientRegisterId: this.upBaseInfo.patientRegisterId,
  1934. // };
  1935. // {
  1936. // "patientRegisterId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  1937. // "patientName": "string",
  1938. // "mobileTelephone": "string",
  1939. // "idNo": "string",
  1940. // "remark": "string",
  1941. // "medicalTypeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  1942. // "personnelTypeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  1943. // "sexHormoneTermId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  1944. // }
  1945. // body[this.upBaseInfo.colName] = this.upBaseInfo.value;
  1946. // 旧版/api/app/PatientRegister/UpdatePatientRegisterBaseInfoByPatientRegisterId
  1947. postapi(
  1948. "/api/app/PatientRegister/UpdatePatientRegisterBySumCheck",
  1949. this.upBaseInfo
  1950. ).then((res) => {
  1951. if (res.code > -1) {
  1952. this.close_dialogWin_upBaseInfo();
  1953. }
  1954. });
  1955. },
  1956. //修改出生日期
  1957. changeBirthDate() {
  1958. this.upBaseInfo.age = birthdayToAge(this.upBaseInfo.birthDate);
  1959. },
  1960. //修改出生日期
  1961. changeAge() {
  1962. this.upBaseInfo.birthDate = ageToBirthday(this.upBaseInfo.age);
  1963. },
  1964. //修改身份证,生成年龄、出生、性别
  1965. // isNameContinue 身份证号查重后是否姓名查重
  1966. changeIdNo(isNameContinue) {
  1967. if (!this.upBaseInfo.idNo) return;
  1968. let ret = parseID(this.upBaseInfo.idNo);
  1969. // console.log('changeIdNo',ret)
  1970. if (ret.age != -1) {
  1971. this.upBaseInfo.birthDate = new Date(ret.birthday);
  1972. this.upBaseInfo.age = ret.age;
  1973. this.upBaseInfo.sexId = ret.sex;
  1974. }
  1975. },
  1976. //快速选择组合项目时,调整可按拼间简码及简称查找
  1977. filterMethod(keyWords) {
  1978. //// console.log('filterMethod',this.asbItemQuick)
  1979. if (keyWords) {
  1980. this.nation = [];
  1981. this.dict.nation.forEach((item) => {
  1982. if (
  1983. item.displayName.toLowerCase().indexOf(keyWords.toLowerCase()) >
  1984. -1 ||
  1985. item.simpleCode.toLowerCase().indexOf(keyWords.toLowerCase()) > -1
  1986. ) {
  1987. this.nation.push(item);
  1988. }
  1989. });
  1990. } else {
  1991. this.nation = deepCopy(this.dict.nation);
  1992. }
  1993. },
  1994. // 修改基本信息
  1995. fnUpBaseInfo(row) {
  1996. //婚姻状况
  1997. getapi("/api/app/MaritalStatus/GetMaritalStatusList").then((res) => {
  1998. if (res.code == 1) {
  1999. this.dict.maritalStatus = res.data;
  2000. }
  2001. });
  2002. //性激素期
  2003. getapi("/api/app/sex-hormone-term/in-filter").then((res) => {
  2004. if (res.code == 1) {
  2005. this.dict.sexHormoneTerm = res.data;
  2006. }
  2007. });
  2008. //民族
  2009. getapi("/api/app/nation/in-filter").then((res) => {
  2010. if (res.code != -1) {
  2011. this.dict.nation = res.data;
  2012. this.nation = deepCopy(res.data);
  2013. }
  2014. });
  2015. //籍惯 ,出生地
  2016. getapi("/api/app/birth-place/in-filter").then((res) => {
  2017. if (res.code == 1) {
  2018. this.dict.birthPlace = res.data;
  2019. }
  2020. });
  2021. this.dataTransOpts.tableS.patient_register.id = row.id;
  2022. this.dataTransOpts.tableS.patient_register.patientRegisterNo =
  2023. row.patientRegisterNo;
  2024. // 获取资料
  2025. postapi('/api/app/patientregister/getinfoorpatient', { patientRegisterId: row.id })
  2026. .then(res => {
  2027. if (res.code > -1) {
  2028. this.upBaseInfo = Object.assign(this.upBaseInfo, row);
  2029. this.upBaseInfo.patientRegisterId = row.id;
  2030. this.upBaseInfo.visble = true;
  2031. }
  2032. })
  2033. },
  2034. editMedicalStartDate() {
  2035. if (this.multipleSelection.length < 1) {
  2036. this.$message.warning({
  2037. showClose: true,
  2038. message: "请勾选要操作的人员记录!",
  2039. });
  2040. return;
  2041. }
  2042. this.upBaseInfo.medicalStartDate = moment(
  2043. this.multipleSelection[0].medicalStartDate
  2044. ).format("yyyy-MM-DD");
  2045. this.dialogEditMedicalStartDate = true;
  2046. },
  2047. // 批量修改体检日期
  2048. btnEditMedicalStartDate() {
  2049. let body = {
  2050. //"completeFlag": "string",
  2051. medicalStartDate: this.upBaseInfo.medicalStartDate,
  2052. patientRegisterIds: [],
  2053. };
  2054. this.multipleSelection.forEach((e) => {
  2055. body.patientRegisterIds.push(e.id);
  2056. });
  2057. postapi(
  2058. "/api/app/PatientRegister/UpdatePatientRegisterMedicalStartDate",
  2059. body
  2060. ).then((res) => {
  2061. if (res.code > -1) {
  2062. let lfind = 0;
  2063. this.multipleSelection.forEach((e) => {
  2064. e.medicalStartDate = body.medicalStartDate;
  2065. lfind = arrayExistObj(this.tableData, "id", e.id);
  2066. if (lfind > -1)
  2067. this.tableData.medicalStartDate = body.medicalStartDate;
  2068. });
  2069. this.dialogEditMedicalStartDate = false;
  2070. }
  2071. });
  2072. },
  2073. // 分诊排队
  2074. fnQueue(row) {
  2075. this.queueParams.patientRegisterId = row.id
  2076. this.queueParams.patientName = row.patientName
  2077. this.queueParams.queueTimes++
  2078. this.dialogWin.queue = true; // queue:人员登记列表; queue1:人员登记界面; queue2:医生诊台
  2079. },
  2080. // 知情同意书
  2081. previewCusGrant(row) {
  2082. this.preCusGrantParams.patientRegisterId = row.id
  2083. this.preCusGrantParams.brushTimes++
  2084. this.dialogWin.previewCusGrant = true
  2085. },
  2086. //表右击菜单
  2087. onCellRightClick(row, column) {
  2088. // console.log(row)
  2089. this.rClickRow = { ...row }; //右击的行记录
  2090. this.rClickColumn = { ...column }; //右击的列(预留)
  2091. // console.log(row, column.property);
  2092. // this.onContextmenu()
  2093. },
  2094. onContextmenu(event) {
  2095. // console.log('onContextmenu',event);
  2096. if (!this.rClickRow) return false;
  2097. let row = { ...this.rClickRow };
  2098. let items = []; //菜单项
  2099. // items.push({
  2100. // label: "一级菜单",
  2101. // children: [
  2102. // { label: "修改姓名", onClick: () => { ; } }
  2103. // ]
  2104. // })
  2105. if (checkPagePriv(this.pagePriv.privs, "修改人员信息")) {
  2106. items.push({
  2107. label: "修改人员信息",
  2108. onClick: () => {
  2109. this.fnUpBaseInfo(row);
  2110. },
  2111. });
  2112. }
  2113. if (checkPagePriv(this.pagePriv.privs, "修改体检日期"))
  2114. items.push({
  2115. label: "修改体检日期",
  2116. onClick: () => {
  2117. this.editMedicalStartDate();
  2118. },
  2119. });
  2120. if (checkPagePriv(this.pagePriv.privs, "删除照片"))
  2121. items.push({
  2122. label: "删除照片",
  2123. onClick: () => {
  2124. postapi(`/api/app/patient-register/update-photo`, {
  2125. patientRegisterId: row.id,
  2126. photo: "",
  2127. }).then((res) => {
  2128. if (res.code > -1)
  2129. this.$message.success({
  2130. showClose: true,
  2131. message: "操作成功!",
  2132. });
  2133. });
  2134. },
  2135. });
  2136. if (
  2137. checkPagePriv(this.pagePriv.privs, "分诊排队") &&
  2138. row.completeFlag != "0"
  2139. )
  2140. items.push({
  2141. label: "分诊排队",
  2142. onClick: () => {
  2143. this.fnQueue(row);
  2144. },
  2145. });
  2146. if (
  2147. checkPagePriv(this.pagePriv.privs, "知情同意书") &&
  2148. row.completeFlag != "0"
  2149. )
  2150. items.push({
  2151. label: "知情同意书",
  2152. onClick: () => {
  2153. this.previewCusGrant(row);
  2154. },
  2155. });
  2156. if (
  2157. checkPagePriv(this.pagePriv.privs, "发送检验申请") &&
  2158. row.completeFlag != "0"
  2159. )
  2160. items.push({
  2161. label: "发送检验申请",
  2162. onClick: () => {
  2163. this.lisRequest(row);
  2164. },
  2165. });
  2166. // 预览条码
  2167. let subMenuPre = [];
  2168. if (
  2169. checkPagePriv(this.pagePriv.privs, "预览人员条码") &&
  2170. row.completeFlag != "0"
  2171. )
  2172. subMenuPre.push({
  2173. label: "预览人员条码",
  2174. onClick: () => {
  2175. this.guidePrintPromise("0008", true, row);
  2176. },
  2177. });
  2178. if (
  2179. checkPagePriv(this.pagePriv.privs, "预览检验条码") &&
  2180. row.completeFlag != "0"
  2181. )
  2182. subMenuPre.push({
  2183. label: "预览检验条码",
  2184. onClick: () => {
  2185. this.lisPrint(row, "0002", true);
  2186. },
  2187. });
  2188. if (
  2189. checkPagePriv(this.pagePriv.privs, "预览Pacs条码") &&
  2190. row.completeFlag != "0"
  2191. )
  2192. subMenuPre.push({
  2193. label: "预览Pacs条码",
  2194. onClick: () => {
  2195. // console.log('预览Pacs条码 row',row)
  2196. this.pacsPrint(row, "0004", true);
  2197. },
  2198. });
  2199. if (subMenuPre.length > 0)
  2200. items.push({ label: "预览条码", children: subMenuPre });
  2201. let subMenuPrint = [];
  2202. if (
  2203. checkPagePriv(this.pagePriv.privs, "打印人员条码") &&
  2204. row.completeFlag != "0"
  2205. )
  2206. subMenuPrint.push({
  2207. label: "打印人员条码",
  2208. onClick: () => {
  2209. this.guidePrintPromise("0008", false, row);
  2210. },
  2211. });
  2212. if (
  2213. checkPagePriv(this.pagePriv.privs, "打印检验条码") &&
  2214. row.completeFlag != "0"
  2215. )
  2216. subMenuPrint.push({
  2217. label: "打印检验条码",
  2218. onClick: () => {
  2219. this.lisPrint(row, "0002", false);
  2220. },
  2221. });
  2222. if (
  2223. checkPagePriv(this.pagePriv.privs, "打印Pacs条码") &&
  2224. row.completeFlag != "0"
  2225. )
  2226. subMenuPrint.push({
  2227. label: "打印Pacs条码",
  2228. onClick: () => {
  2229. this.pacsPrint(row, "0004", false);
  2230. },
  2231. });
  2232. if (subMenuPrint.length > 0)
  2233. items.push({ label: "打印条码", children: subMenuPrint });
  2234. // 导入结果合集 ============ start
  2235. let subMenuImp = [];
  2236. if (
  2237. checkPagePriv(this.pagePriv.privs, "导入检查结果") &&
  2238. row.completeFlag != "0"
  2239. )
  2240. subMenuImp.push({
  2241. label: "导入检查结果",
  2242. onClick: () => {
  2243. this.importResult("pacs", row);
  2244. },
  2245. });
  2246. if (
  2247. checkPagePriv(this.pagePriv.privs, "导入检验结果") &&
  2248. row.completeFlag != "0"
  2249. )
  2250. subMenuImp.push({
  2251. label: "导入检验结果",
  2252. onClick: () => {
  2253. this.importResult("lis", row);
  2254. },
  2255. });
  2256. if (
  2257. checkPagePriv(this.pagePriv.privs, "导入迪安结果") &&
  2258. row.completeFlag != "0"
  2259. )
  2260. subMenuImp.push({
  2261. label: "导入迪安结果",
  2262. onClick: () => {
  2263. this.importResult("diAn", row);
  2264. },
  2265. });
  2266. if (subMenuImp.length > 0) {
  2267. items.push({ label: "导入结果", children: subMenuImp });
  2268. }
  2269. // 导入结果合集 ============ end
  2270. // 批量操作合集 ============ start
  2271. let batchMenus = [];
  2272. if (
  2273. checkPagePriv(this.pagePriv.privs, "批量更新组合项目明细") &&
  2274. this.multipleSelection.length > 0
  2275. )
  2276. batchMenus.push({
  2277. label: "批量更新组合项目明细",
  2278. onClick: () => {
  2279. this.btnItemBatch();
  2280. },
  2281. });
  2282. if (
  2283. checkPagePriv(this.pagePriv.privs, "调整检查项目医生") &&
  2284. this.multipleSelection.length > 0
  2285. )
  2286. batchMenus.push({
  2287. label: "调整检查项目医生",
  2288. onClick: () => {
  2289. // this.doctorType = 'check'
  2290. this.dataTransOpts.plus.PatientRegisterEditDoctorBatch++; //如果放在弹窗显示后面,在首次加载子组件时,会触发两次数据处理
  2291. this.dialogWin.PatientRegisterEditDoctorBatch = true;
  2292. },
  2293. });
  2294. if (
  2295. checkPagePriv(this.pagePriv.privs, "批量调整体检类别") &&
  2296. this.multipleSelection.length > 0
  2297. ) {
  2298. batchMenus.push({
  2299. label: "批量调整体检类别",
  2300. onClick: () => {
  2301. // this.doctorType = 'check'
  2302. this.dataTransOpts.plus.PatientRegisterEditMedicalTypeBatch++; //如果放在弹窗显示后面,在首次加载子组件时,会触发两次数据处理
  2303. this.dialogWin.PatientRegisterEditMedicalTypeBatch = true;
  2304. },
  2305. });
  2306. }
  2307. if (
  2308. checkPagePriv(this.pagePriv.privs, "批量调整人员类别") &&
  2309. this.multipleSelection.length > 0
  2310. ) {
  2311. batchMenus.push({
  2312. label: "批量调整人员类别",
  2313. onClick: () => {
  2314. // this.doctorType = 'check'
  2315. this.dataTransOpts.plus.PatientRegisterEditPersonnelTypeBatch++; //如果放在弹窗显示后面,在首次加载子组件时,会触发两次数据处理
  2316. this.dialogWin.PatientRegisterEditPersonnelTypeBatch = true;
  2317. },
  2318. });
  2319. }
  2320. if (
  2321. checkPagePriv(this.pagePriv.privs, "批量调整备注") &&
  2322. this.multipleSelection.length > 0
  2323. ) {
  2324. batchMenus.push({
  2325. label: "批量调整备注",
  2326. onClick: () => {
  2327. // this.doctorType = 'check'
  2328. this.dataTransOpts.plus.PatientRegisterEditRemarkBatch++; //如果放在弹窗显示后面,在首次加载子组件时,会触发两次数据处理
  2329. this.dialogWin.PatientRegisterEditRemarkBatch = true;
  2330. },
  2331. });
  2332. }
  2333. if (batchMenus.length > 0) {
  2334. items.push({ label: "批量操作", children: batchMenus });
  2335. }
  2336. // 批量操作合集 ============ end
  2337. if (checkPagePriv(this.pagePriv.privs, "查看云胶片二维码"))
  2338. items.push({
  2339. label: "查看云胶片二维码",
  2340. onClick: () => {
  2341. this.makeQrCode(row);
  2342. },
  2343. });
  2344. items.push({ label: "----------------" });
  2345. this.$contextmenu({
  2346. items,
  2347. event,
  2348. x: event.clientX,
  2349. y: event.clientY,
  2350. customClass: "custom-class",
  2351. zIndex: 3,
  2352. minWidth: 80,
  2353. });
  2354. this.rClickRow = null;
  2355. return false;
  2356. },
  2357. //批量更新分组按钮
  2358. btnGroupBatch() {
  2359. let customerOrgId = this.refQueryCondition.customerOrgId;
  2360. if (!customerOrgId) {
  2361. this.$message.warning({ showClose: true, message: "请选择单位" });
  2362. return;
  2363. }
  2364. //取消勾选,换成选择的方式 start
  2365. // this.multipleSelection = [];
  2366. // this.tableData.forEach((e) => {
  2367. // if (e.choosed) this.multipleSelection.push(e);
  2368. // });
  2369. //取消勾选,换成选择的方式 end
  2370. if (this.multipleSelection.length < 1) {
  2371. this.$message.info({
  2372. showClose: true,
  2373. message: "请选择要操作的记录!",
  2374. });
  2375. return;
  2376. }
  2377. this.dataTransOpts.plus.PatientRegisterEditGroupBatch++;
  2378. this.dialogWin.PatientRegisterEditGroupBatch = true;
  2379. },
  2380. //批量更新组合项目
  2381. btnAsbBatch() {
  2382. let customerOrgId = this.refQueryCondition.customerOrgId;
  2383. if (!customerOrgId) {
  2384. this.$message.warning({ showClose: true, message: "请选择单位" });
  2385. return;
  2386. }
  2387. //取消勾选,换成选择的方式 start
  2388. // this.multipleSelection = [];
  2389. // this.tableData.forEach((e) => {
  2390. // if (e.choosed) this.multipleSelection.push(e);
  2391. // });
  2392. //取消勾选,换成选择的方式 end
  2393. if (this.multipleSelection.length < 1) {
  2394. this.$message.warning({
  2395. showClose: true,
  2396. message: "请选择要操作的记录",
  2397. });
  2398. return;
  2399. }
  2400. this.dataTransOpts.plus.PatientRegisterEditItemBatch++; //如果放在弹窗显示后面,在首次加载子组件时,会触发两次数据处理
  2401. this.dialogWin.PatientRegisterEditItemBatch = true;
  2402. },
  2403. //批量更新组合项目
  2404. async btnItemBatch() {
  2405. if (this.multipleSelection.length < 1) {
  2406. this.$message.warning({
  2407. showClose: true,
  2408. message: "请选择要操作的记录",
  2409. });
  2410. return;
  2411. }
  2412. this.dialogElProgress = true;
  2413. this.elProgress.percentage = 0;
  2414. for (let i = 0; i < this.multipleSelection.length; i++) {
  2415. let patientRegisterId = this.multipleSelection[i].id;
  2416. try {
  2417. await postapi("/api/app/RegisterCheckItem/SyncRegisterCheckItem", {
  2418. patientRegisterId,
  2419. });
  2420. } catch (error) {
  2421. console.log("printPromise", error);
  2422. }
  2423. this.elProgress.percentage = Math.floor(
  2424. ((i + 1) * 100) / this.multipleSelection.length
  2425. );
  2426. }
  2427. this.dialogElProgress = false;
  2428. },
  2429. //检验申请
  2430. async lisRequest(row) {
  2431. let isPrintLisRequest = false;
  2432. let res = null;
  2433. if (row.completeFlag == "0") {
  2434. this.$message.info({
  2435. showClose: true,
  2436. message: "预登记人员,不可执行此操作!",
  2437. });
  2438. return;
  2439. }
  2440. try {
  2441. res = await postapi(
  2442. `/api/app/lisrequest/setlisrequest?PatientRegisterId=${row.id}`
  2443. );
  2444. // console.log(`/ api / app / lisrequest / setlisrequest ? PatientRegisterId = ${ prId }`,res);
  2445. } catch (error) {
  2446. return;
  2447. }
  2448. if (res.code > -1) {
  2449. isPrintLisRequest = true;
  2450. }
  2451. //重复申请,重打
  2452. if (res.code == -1 && res.message.indexOf("已申请") > -1) {
  2453. isPrintLisRequest = true;
  2454. }
  2455. if (!isPrintLisRequest) return;
  2456. try {
  2457. await this.$confirm("是否打印检验申请单?", "提示", {
  2458. confirmButtonText: "是",
  2459. cancelButtonText: "否",
  2460. type: "info",
  2461. showClose: false,
  2462. closeOnClickModal: false,
  2463. closeOnPressEscape: false,
  2464. });
  2465. } catch (error) {
  2466. return;
  2467. }
  2468. //打印检验申请单
  2469. this.lisPrint(row, "0003", false);
  2470. },
  2471. //检验条码打印 改造成 promise
  2472. lisPrint(row, ReportCode, isPreview) {
  2473. return new Promise((resolve, reject) => {
  2474. if (!this.$peisAPI) reject("此功能,需要在壳客户端才可运行!");
  2475. if (!row.completeFlag || row.completeFlag == "0")
  2476. reject("预登记人员,不可执行此操作!");
  2477. let token = window.sessionStorage.getItem("token");
  2478. let user = window.sessionStorage.getItem("user");
  2479. let toOutShell = {
  2480. ReportCode,
  2481. token,
  2482. IsMoreLabel: "Y",
  2483. isBuildImage: "N",
  2484. IsUploadPdf: "N",
  2485. preViewCanPrint: "N",
  2486. Parameters: [
  2487. { Name: "printer", Value: user },
  2488. { Name: "hisLog", Value: "pic/hisLog.jpg" },
  2489. ],
  2490. BusinessCode: row.id,
  2491. };
  2492. console.log("this.$peisAPI.toOutShell", toOutShell);
  2493. if (isPreview) {
  2494. this.$peisAPI
  2495. .printPre(JSON.stringify(toOutShell))
  2496. .then((res) => {
  2497. console.log("this.$peisAPI.printPre", res);
  2498. let lres = JSON.parse(res);
  2499. if (lres.code > -1) {
  2500. resolve(lres);
  2501. } else {
  2502. reject(lres.message);
  2503. }
  2504. })
  2505. .catch((err) => {
  2506. reject(err);
  2507. });
  2508. } else {
  2509. this.$peisAPI
  2510. .print(JSON.stringify(toOutShell))
  2511. .then((res) => {
  2512. console.log("this.$peisAPI.print", res);
  2513. let lres = JSON.parse(res);
  2514. if (lres.code < 0) {
  2515. reject(lres.message);
  2516. } else {
  2517. return postapi("/api/app/lisrequest/updatelisrequestisprint", {
  2518. operateType: 1,
  2519. patientRegisterId: row.id,
  2520. });
  2521. }
  2522. })
  2523. .then((res) => {
  2524. if (res && res.code < 0) {
  2525. reject(res.message);
  2526. } else {
  2527. resolve(res);
  2528. }
  2529. })
  2530. .catch((err) => {
  2531. reject(err);
  2532. });
  2533. }
  2534. });
  2535. },
  2536. //pacs条码打印
  2537. pacsPrint(row, ReportCode, isPreview) {
  2538. return new Promise((resolve, reject) => {
  2539. if (!this.$peisAPI) reject("此功能,需要在壳客户端才可运行!");
  2540. if (!row.completeFlag || row.completeFlag == "0")
  2541. reject("预登记人员,不可执行此操作!");
  2542. let token = window.sessionStorage.getItem("token");
  2543. let user = window.sessionStorage.getItem("user");
  2544. let toOutShell = {
  2545. ReportCode,
  2546. token,
  2547. IsMoreLabel: "Y",
  2548. isBuildImage: "N",
  2549. IsUploadPdf: "N",
  2550. preViewCanPrint: "N",
  2551. Parameters: [
  2552. { Name: "printer", Value: user },
  2553. { Name: "hisLog", Value: "pic/hisLog.jpg" },
  2554. ],
  2555. BusinessCode: row.id,
  2556. };
  2557. console.log("this.$peisAPI.print", toOutShell);
  2558. if (isPreview) {
  2559. this.$peisAPI
  2560. .printPre(JSON.stringify(toOutShell))
  2561. .then((res) => {
  2562. console.log("this.$peisAPI.printPre", res);
  2563. let lres = JSON.parse(res);
  2564. if (lres.code > -1) {
  2565. resolve(lres);
  2566. } else {
  2567. reject(lres.message);
  2568. }
  2569. })
  2570. .catch((err) => {
  2571. reject(err);
  2572. });
  2573. } else {
  2574. this.$peisAPI
  2575. .print(JSON.stringify(toOutShell))
  2576. .then((res) => {
  2577. console.log("this.$peisAPI.print", res);
  2578. let lres = JSON.parse(res);
  2579. if (lres.code > -1) {
  2580. resolve(lres);
  2581. } else {
  2582. reject(lres.message);
  2583. }
  2584. })
  2585. .catch((err) => {
  2586. reject(err);
  2587. });
  2588. }
  2589. });
  2590. },
  2591. // 导入检查检验结果
  2592. // checkType:pacs检查/lis检验/diAn迪安
  2593. importResult(checkType, row) {
  2594. let url = "/api/app/ImportLisResult/ImportResultByPatientRegisterId";
  2595. switch (checkType) {
  2596. case "pacs": //常规 pacs 数据导入
  2597. url = "/api/app/ImportPacsResult/ImportResultByPatientRegisterId";
  2598. postapi(url, { patientRegisterId: row.id })
  2599. .then((res) => {
  2600. if (res.code > -1) {
  2601. return postapi(
  2602. "/api/app/ImportElectrocardiogramResult/ImportElectrocardiogramResultByPatientRegisterId",
  2603. { patientRegisterId: row.id }
  2604. );
  2605. }
  2606. })
  2607. .then((res) => {
  2608. if (res && res.code > -1) {
  2609. this.$message.success({
  2610. showClose: true,
  2611. message: "导入成功!",
  2612. });
  2613. this.rowClick(row);
  2614. }
  2615. });
  2616. break;
  2617. case "diAn": //迪安数据导入
  2618. url = "/api/app/ImportLisResult/ImportDianResultByPatientRegisterId";
  2619. postapi(url, { patientRegisterId: row.id }).then((res) => {
  2620. if (res.code > -1) {
  2621. this.$message.success({ showClose: true, message: "导入成功!" });
  2622. this.rowClick(row);
  2623. }
  2624. });
  2625. break;
  2626. default: //常规lis数据导入
  2627. postapi(url, { patientRegisterId: row.id }).then((res) => {
  2628. if (res.code > -1) {
  2629. this.$message.success({ showClose: true, message: "导入成功!" });
  2630. this.rowClick(row);
  2631. }
  2632. });
  2633. break;
  2634. }
  2635. },
  2636. //生成云胶片二维码
  2637. makeQrCode(row) {
  2638. //let canvas = this.$refs.canvas;
  2639. let url = `${this.qrCode.url}?reportparam=条码号&mrn=条码号`; //`https://ccjktj.cn:5081/?reportparam=条码号&mrn=条码号`
  2640. if (row?.patientRegisterNo) {
  2641. url = `${this.qrCode.url}?reportparam=${row.patientRegisterNo}&mrn=${row.patientRegisterNo}`;
  2642. this.qrCode.barcodeNo = row.patientRegisterNo;
  2643. }
  2644. if (row?.patientName) {
  2645. this.qrCode.patientName = row.patientName;
  2646. }
  2647. this.qrCode.patientName =
  2648. this.qrCode.patientName.substring(0, 1) +
  2649. "*" +
  2650. this.qrCode.patientName.substring(2);
  2651. // canvas 方式不可取,有延时
  2652. // this.$nextTick(() => {
  2653. // QRCode.toCanvas(canvas, url, { errorCorrectionLevel: 'H' })
  2654. // .then(() => {
  2655. // console.log('success!')
  2656. // })
  2657. // .catch(err => {
  2658. // this.dialogQrCode = false
  2659. // this.$message.error({ showClose: true, message: err.message })
  2660. // console.log('fail!', err.message)
  2661. // })
  2662. // .finally(() => {
  2663. // console.log('url:', url)
  2664. // })
  2665. // })
  2666. QRCode.toDataURL(url, { errorCorrectionLevel: "H" })
  2667. .then((res) => {
  2668. console.log(res);
  2669. this.qrCode.personUrl = res;
  2670. this.qrCode.winDisplay = true;
  2671. })
  2672. .catch((err) => {
  2673. this.$message.error({ showClose: true, message: err.message });
  2674. console.error(err);
  2675. })
  2676. .finally(() => {
  2677. console.log("url", url);
  2678. });
  2679. },
  2680. formatJson(filterVal, jsonData) {
  2681. return jsonData.map((v) => {
  2682. return filterVal.map((j) => v[j]);
  2683. });
  2684. },
  2685. //通用导出
  2686. btnExport(elId) {
  2687. require.ensure([], () => {
  2688. const tHeader = [];
  2689. const filterVal = [];
  2690. this.dragCol.forEach((e) => {
  2691. tHeader.push(e.label);
  2692. filterVal.push(e.prop);
  2693. });
  2694. const list = this.tableData.map((row, index) => {
  2695. const newRow = { ...row }; // 创建副本,避免修改原数据
  2696. // 使用对象映射优化数据转换
  2697. newRow.sn = index + 1;
  2698. if (newRow.completeFlag)
  2699. newRow.completeFlag =
  2700. newRow.isAudit == "Y"
  2701. ? "已审核"
  2702. : this.dddw(
  2703. this.dict.completeFlag,
  2704. "id",
  2705. newRow.completeFlag,
  2706. "displayName"
  2707. );
  2708. if (newRow.guidePrintTimes?.toString())
  2709. newRow.guidePrintTimes = newRow.guidePrintTimes > 0 ? "打印" : "";
  2710. if (newRow.isLock) newRow.isLock = newRow.isLock == "Y" ? "锁住" : "";
  2711. if (newRow.sexId)
  2712. newRow.sexId = this.dddw(
  2713. this.dict.sex,
  2714. "id",
  2715. newRow.sexId,
  2716. "displayName"
  2717. );
  2718. // if (newRow.patientRegisterNo)
  2719. // newRow.patientRegisterNo = "\u200C" + newRow.patientRegisterNo;
  2720. // if (newRow.patientNo) newRow.patientNo = "\u200C" + newRow.patientNo;
  2721. if (
  2722. newRow.medicalPackageId !== this.dict.personOrgId &&
  2723. newRow.customerOrgId === this.dict.personOrgId
  2724. ) {
  2725. newRow.groupPack = newRow.medicalPackageName;
  2726. } else if (
  2727. newRow.medicalPackageId !== this.dict.personOrgId &&
  2728. newRow.customerOrgId !== this.dict.personOrgId
  2729. ) {
  2730. newRow.groupPack = newRow.customerOrgGroupName;
  2731. }
  2732. //if (newRow.idNo) newRow.idNo = "\u200C" + newRow.idNo;
  2733. //if (newRow.idNo) newRow.idNo = " " + newRow.idNo;
  2734. if (newRow.birthDate)
  2735. newRow.birthDate = moment(newRow.birthDate).format("yyyy-MM-DD");
  2736. if (newRow.medicalTypeId)
  2737. newRow.medicalTypeId = this.dddw(
  2738. this.dict.medicalType,
  2739. "id",
  2740. newRow.medicalTypeId,
  2741. "displayName"
  2742. );
  2743. if (newRow.isVip) newRow.isVip = newRow.isVip == "Y" ? "是" : "否";
  2744. if (newRow.isUpload)
  2745. newRow.isUpload = newRow.isUpload == "Y" ? "是" : "否";
  2746. if (newRow.qztlType)
  2747. newRow.qztlType = this.dddw(
  2748. this.dict.qztlType,
  2749. "id",
  2750. newRow.qztlType,
  2751. "displayName"
  2752. );
  2753. if (newRow.qztlIsMain)
  2754. newRow.qztlIsMain = newRow.qztlIsMain == "Y" ? "是" : "否";
  2755. if (newRow.qztlIsCy)
  2756. newRow.qztlIsCy = newRow.qztlIsCy == "Y" ? "是" : "否";
  2757. if (newRow.qztlIsCw)
  2758. newRow.qztlIsCw = newRow.qztlIsCw == "Y" ? "是" : "否";
  2759. if (newRow.qztlIsGt)
  2760. newRow.qztlIsGt = newRow.qztlIsGt == "Y" ? "是" : "否";
  2761. if (newRow.qztlIsWh)
  2762. newRow.qztlIsWh = newRow.qztlIsWh == "Y" ? "是" : "否";
  2763. if (newRow.qztlIsFj)
  2764. newRow.qztlIsFj = newRow.qztlIsFj == "Y" ? "是" : "否";
  2765. return newRow;
  2766. });
  2767. const data = list.map((v) => filterVal.map((j) => v[j]));
  2768. exportJsonToExcel(tHeader, data, '人员登记列表' + moment(new Date()).format('yyyyMMDDHHmmss')); //"列表excel" 是下载后的表名 可修改
  2769. });
  2770. // this.dragCol.forEach((e) => {
  2771. // this.jsonFields[e.label] = e.prop;
  2772. // });
  2773. // let tableDatas = deepCopy(this.tableData)
  2774. // tableDatas.forEach((e, index) => {
  2775. // if (index) e.sn = index + 1
  2776. // if (e.completeFlag) e.completeFlag = e.isAudit == "Y" ? "已审核" : dddw(this.dict.completeFlag, "id", e.completeFlag, "displayName")
  2777. // if (e.guidePrintTimes.toString()) e.guidePrintTimes = e.guidePrintTimes > 0 ? '打印' : ''
  2778. // if (e.isLock) e.isLock = e.isLock == 'Y' ? '锁住' : ''
  2779. // if (e.sexId) e.sexId = dddw(this.dict.sex, "id", e.sexId, "displayName")
  2780. // if (e.patientRegisterNo) e.patientRegisterNo = '\u200C' + e.patientRegisterNo
  2781. // if (e.patientNo) e.patientNo = '\u200C' + e.patientNo
  2782. // if (e.medicalPackageId !== this.dict.personOrgId && e.customerOrgId === this.dict.personOrgId) {
  2783. // e.groupPack = e.medicalPackageName // dddw(this.dict.medicalPackage, "id", e.medicalPackageId, "displayName")
  2784. // } else if (e.medicalPackageId !== this.dict.personOrgId && e.customerOrgId !== this.dict.personOrgId) {
  2785. // e.groupPack = e.customerOrgGroupName // dddw(this.dict.customerOrgGroupAll, "id", e.customerOrgGroupId, "displayName")
  2786. // }
  2787. // //if (e.nationId) e.nationId = dddw(this.dict.nation, "id", e.nationId, "displayName")
  2788. // if (e.idNo) e.idNo = '\u200C' + e.idNo
  2789. // if (e.birthDate) e.birthDate = moment(e.birthDate).format("yyyy-MM-DD")
  2790. // //if (e.maritalStatusId) e.maritalStatusId = dddw(this.dict.maritalStatus, "id", e.maritalStatusId, "displayName")
  2791. // if (e.medicalTypeId) e.medicalTypeId = dddw(this.dict.medicalType, "id", e.medicalTypeId, "displayName")
  2792. // //if (e.personnelTypeId) e.personnelTypeId = dddw(this.dict.personnelType, "id", e.personnelTypeId, "displayName")
  2793. // if (e.isVip) e.isVip = e.isVip == "Y" ? "是" : "否"
  2794. // if (e.isUpload) e.isUpload = e.isUpload == "Y" ? "是" : "否"
  2795. // if (e.qztlType) e.qztlType = dddw(this.dict.qztlType, "id", e.qztlType, "displayName")
  2796. // if (e.qztlIsMain) e.qztlIsMain = e.qztlIsMain == "Y" ? "是" : "否"
  2797. // if (e.qztlIsCy) e.qztlIsCy = e.qztlIsCy == "Y" ? "是" : "否"
  2798. // if (e.qztlIsCw) e.qztlIsCw = e.qztlIsCw == "Y" ? "是" : "否"
  2799. // if (e.qztlIsGt) e.qztlIsGt = e.qztlIsGt == "Y" ? "是" : "否"
  2800. // if (e.qztlIsWh) e.qztlIsWh = e.qztlIsWh == "Y" ? "是" : "否"
  2801. // if (e.qztlIsFj) e.qztlIsFj = e.qztlIsFj == "Y" ? "是" : "否"
  2802. // })
  2803. // this.tableName = '人员登记列表' + moment(new Date()).format('yyyyMMDDHHmmss') + '.xls'
  2804. // return tableDatas;
  2805. // const columns = this.$refs.info.getColumns(); // 获取列信息
  2806. // const data = this.$refs.info.getData(); // 获取数据
  2807. // console.log(columns)
  2808. // console.log(columns)
  2809. // const exportConf = { columns, data }; // 构建导出配置对象
  2810. // const filename = 'my_data.xlsx'; // 设置文件名
  2811. // const blob = exportTable(exportConf); // 导出数据为 Blob 对象
  2812. // saveAs(blob, filename); // 使用 file-saver 保存文件
  2813. // // 获取HTML元素(表格)
  2814. // // let table = document.getElementById(elId); //.cloneNode(true)
  2815. // this.$nextTick(() => {
  2816. // // let refsTable = this.$refs[elId] //.cloneNode(true) true
  2817. // let table = document.getElementById(elId)
  2818. // // console.log('table,refsTable', table, refsTable)
  2819. // let tableData = table.innerHTML
  2820. // let fileName = moment(new Date()).format('yyyyMMDDHHmmss')
  2821. // let blob = new Blob([tableData], { type: "text/plain;charset=utf-8" });
  2822. // FileSaver.saveAs(blob, fileName + '.xls');
  2823. // // 导出图片
  2824. // // 使用html2canvas将HTML元素转换为画布
  2825. // // let cloneTable = table.cloneNode(true) //[elId]
  2826. // /*
  2827. // html2canvas(table).then(canvas => {
  2828. // // 创建一个a元素用于下载
  2829. // const link = document.createElement('a');
  2830. // link.href = canvas.toDataURL('image/jpeg');
  2831. // link.download = fileName + '.jpg';
  2832. // document.body.appendChild(link);
  2833. // link.click();
  2834. // //document.body.removeChild(link);
  2835. // // // 创建一个PDF对象
  2836. // // var pdf = new jsPDF();
  2837. // // // 设置PDF的尺寸
  2838. // // pdf.addImage(canvas.toDataURL('image/png'), 'PNG', 0, 0, canvas.width, canvas.height);
  2839. // // // 导出PDF
  2840. // // pdf.save('员工信息表.pdf');
  2841. // });
  2842. // */
  2843. // })
  2844. },
  2845. // 点击扫码回收体检表按钮
  2846. btnScanRecover() {
  2847. this.patientRegisterNo = "";
  2848. this.recover.dialog = true;
  2849. this.$nextTick(() => {
  2850. this.$refs["tmh"].focus(); //打开光标定位到条码栏里
  2851. });
  2852. },
  2853. //按条码号查个人数据
  2854. signByPatientRegisterNo() {
  2855. // let patientRegisterNos = [this.patientRegisterNo]
  2856. // let body = {
  2857. // patientRegisterNos
  2858. // }
  2859. // //console.log(`/api/app/patientregister/getpatientregisterorpatient`, body)
  2860. // postapi('/api/app/PatientRegister/BatchRecoverGuideByPatientRegisterNo', body)
  2861. // .then((res) => {
  2862. // if (res.code > -1) {
  2863. // this.patientRegisterNo = ''
  2864. // this.$message.success({ showClose: true, message: '操作成功!' })
  2865. // }
  2866. // });
  2867. this.recover.barcodes = [this.recover.barcode];
  2868. postapi("/api/app/PatientRegister/BatchRecoverGuide", this.recover).then(
  2869. (res) => {
  2870. if (res.code > -1) {
  2871. this.recover.barcode = "";
  2872. this.$message.success({ showClose: true, message: "操作成功!" });
  2873. }
  2874. }
  2875. );
  2876. },
  2877. btnDragColDesign() {
  2878. this.dragColDesign = deepCopy(this.dragCol);
  2879. this.dialogColSort = true;
  2880. this.rowDrag();
  2881. },
  2882. btnDragColDesignOk() {
  2883. this.dragCol = deepCopy(this.dragColDesign);
  2884. this.dialogColSort = false;
  2885. },
  2886. //拖拽
  2887. rowDrag() {
  2888. this.$nextTick(() => {
  2889. const el = document.querySelector("#elTable_dragCol tbody");
  2890. // console.log('el0', el)
  2891. const that = this;
  2892. Sortable.create(el, {
  2893. animation: 150, // ms, number 单位:ms,定义排序动画的时间
  2894. //拖拽结束
  2895. onEnd({ newIndex, oldIndex }) {
  2896. that.isshow = false;
  2897. const currRow = that.dragColDesign.splice(oldIndex, 1)[0];
  2898. that.dragColDesign.splice(newIndex, 0, currRow);
  2899. // console.log('el', el)
  2900. },
  2901. });
  2902. });
  2903. },
  2904. //合计
  2905. getSummaries(param) {
  2906. console.log("getSummaries param", param);
  2907. // if(!param){
  2908. // param = {
  2909. // columns:[{}, {}, {}, {}, {}, {}, {property: 'asbitemMoney'},{property: 'customerOrgGroupDetailMoney'}],
  2910. // data:this.customerOrgGroupAsbitems
  2911. // }
  2912. // }
  2913. const { columns, data } = param;
  2914. const sumCol = [2, 3, 4, 7, 8]; //需合计的列
  2915. const sums = [];
  2916. columns.forEach((column, index) => {
  2917. //console.log('column, index,data',column, index,data)
  2918. //显示合计列
  2919. if (index === 1) {
  2920. sums[index] = "合计";
  2921. return;
  2922. }
  2923. //不合计的列
  2924. if (sumCol.indexOf(index) == -1) {
  2925. sums[index] = "";
  2926. return;
  2927. }
  2928. sums[index] = 0;
  2929. data.forEach((e) => {
  2930. if (!isNaN(e[column.property]))
  2931. sums[index] += Number(e[column.property]); // * e['amount']
  2932. });
  2933. sums[index] = sums[index].toFixed(2); //+ ' 元';
  2934. });
  2935. return sums;
  2936. },
  2937. },
  2938. //监听事件
  2939. watch: {
  2940. // "refQueryCondition.customerOrgId": {
  2941. // // immediate: true, // 立即执行
  2942. // // deep: true, // 深度监听复杂类型内变化
  2943. // handler(newVal, oldVal) {
  2944. // //// console.log('watch:refQueryCondition.customerOrgId:',newVal,oldVal)
  2945. // // 单位变化时,清除当前列表信息
  2946. // if (newVal && newVal != oldVal) {
  2947. // this.tableData = [];
  2948. // this.dataTransOpts.tableM.register_check_asbitem = [];
  2949. // }
  2950. // },
  2951. // },
  2952. //触发查询事件
  2953. "refQueryCondition.queryConditionTimes"(newVal, oldVal) {
  2954. if (newVal != oldVal) {
  2955. console.log('触发查询 refQueryCondition.queryConditionTimes', oldVal, newVal)
  2956. this.Query();
  2957. }
  2958. },
  2959. //新增后,触发赋值
  2960. // "patientRegister.patientRegisterRd.id"(newVal, oldVal) {
  2961. // if (newVal != oldVal) {
  2962. // //// console.log('patientRegister.patientRegisterRd.customerOrgId',this.patientRegister.patientRegisterRd.customerOrgId)
  2963. // objCopy(this.patientRegister.patientRegisterRd, this.form);
  2964. // }
  2965. // },
  2966. },
  2967. };
  2968. </script>
  2969. <style scoped>
  2970. @import "../../assets/css/global_input.css";
  2971. @import "../../assets/css/global_table.css";
  2972. @import "../../assets/css/global.css";
  2973. .box {
  2974. display: flex;
  2975. }
  2976. .listBtn {
  2977. margin-top: 5px;
  2978. text-align: center;
  2979. }
  2980. .btnClass {
  2981. width: 100px;
  2982. }
  2983. </style>