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.

212 lines
7.8 KiB

2 years ago
4 months ago
3 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
2 years ago
4 months ago
2 years ago
4 months 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
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 months ago
2 years ago
2 years ago
2 years ago
2 years ago
3 months ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. <template>
  2. <div>
  3. <div>
  4. <el-table :data="patientRegisters" border width="800" height="480" highlight-current-row
  5. @row-click="registerRowClick" @row-dblclick="rowDblclick" size="small">
  6. <el-table-column prop="creationTime" label="登记日期" width="100" align="center" sortable>
  7. <template slot-scope="scope">
  8. <div v-if="scope.row.creationTime">{{ moment(scope.row.creationTime).format("yyyy-MM-DD") }}</div>
  9. </template>
  10. </el-table-column>
  11. <el-table-column prop="medicalStartDate" label="体检日期" width="100" align="center" sortable>
  12. <template slot-scope="scope">
  13. <div v-if="scope.row.medicalStartDate">{{ moment(scope.row.medicalStartDate).format("yyyy-MM-DD") }}</div>
  14. </template>
  15. </el-table-column>
  16. <el-table-column prop="patientRegisterNo" label="条码号" min-width="110" align="center"/>
  17. <el-table-column prop="patientNo" label="档案号" sortable align="center"/>
  18. <el-table-column prop="medicalTimes" label="次数" width="50" align="center" />
  19. <el-table-column prop="patientName" label="姓名" sortable align="center"/>
  20. <el-table-column prop="sexId" label="性别" width="50" align="center">
  21. <template slot-scope="scope">
  22. <div>{{ dddw(dict.sex, "id", scope.row.sexId, "displayName") }}</div>
  23. </template>
  24. </el-table-column>
  25. <el-table-column prop="age" label="年龄" width="50" align="center"/>
  26. <el-table-column prop="org" label="单位" min-width="180" show-overflow-tooltip />
  27. <el-table-column prop="dept" label="部门" min-width="150" show-overflow-tooltip />
  28. <el-table-column prop="groupPack" label="分组/套餐" min-width="150" align="center" show-overflow-tooltip />
  29. <el-table-column prop="nationName" label="民族" align="center" show-overflow-tooltip/>
  30. <el-table-column prop="idNo" label="身份证" min-width="150" align="center" show-overflow-tooltip/>
  31. <el-table-column prop="birthDate" label="出生日期" width="90" align="center">
  32. <template slot-scope="scope">
  33. <div v-if="scope.row.birthDate">
  34. {{ moment(scope.row.birthDate).format("yyyy-MM-DD") }}
  35. </div>
  36. </template>
  37. </el-table-column>
  38. <el-table-column prop="email" label="邮箱" min-width="150" show-overflow-tooltip/>
  39. <el-table-column prop="mobileTelephone" label="手机" min-width="130" align="center" show-overflow-tooltip/>
  40. <el-table-column prop="telephone" label="电话" min-width="130" align="center" show-overflow-tooltip/>
  41. <el-table-column prop="address" label="地址" width="300" show-overflow-tooltip/>
  42. <el-table-column prop="medicalCardNo" label="体检卡号" align="center" show-overflow-tooltip/>
  43. <el-table-column prop="jobCardNo" label="工卡号" align="center" show-overflow-tooltip/>
  44. <el-table-column prop="maritalStatusName" label="婚姻" align="center" />
  45. <el-table-column prop="medicalTypeId" label="体检类别" show-overflow-tooltip >
  46. <template slot-scope="scope">
  47. <div v-if="scope.row.medicalTypeId !== dict.personOrgId">
  48. {{ dddw(dict.medicalType, "id", scope.row.medicalTypeId, "displayName") }}
  49. </div>
  50. </template>
  51. </el-table-column>
  52. <el-table-column prop="personnelTypeName" label="人员类别" show-overflow-tooltip/>
  53. <el-table-column prop="jobPost" label="职务" />
  54. <el-table-column prop="jobTitle" label="职称" />
  55. <el-table-column prop="salesman" label="介绍人" />
  56. <el-table-column prop="isVip" label="是否VIP" align="center" >
  57. <template slot-scope="scope">
  58. <div>{{ scope.row.isVip == "Y" ? "是" : "否" }}</div>
  59. </template>
  60. </el-table-column>
  61. <el-table-column prop="creatorName" label="登记人" align="center" />
  62. <el-table-column prop="isUpload" label="上传" align="center">
  63. <template slot-scope="scope">
  64. <div>{{ scope.row.isUpload == "Y" ? "是" : "否" }}</div>
  65. </template>
  66. </el-table-column>
  67. <el-table-column prop="completeFlag" label="体检进度" align="center">
  68. <template slot-scope="scope">
  69. <div>{{ dddw(dict.completeFlag, "id", scope.row.completeFlag, "displayName") }}</div>
  70. </template>
  71. </el-table-column>
  72. <el-table-column prop="guidePrintTimes" label="打印" width="50" align="center">
  73. <template slot-scope="scope">
  74. <i class="el-icon-printer" v-if="scope.row.guidePrintTimes > 0" style="font-size: 24px;color: green;"></i>
  75. </template>
  76. </el-table-column>
  77. <el-table-column prop="isLock" label="锁住" align="center">
  78. <template slot-scope="scope">
  79. <div>{{ scope.row.isLock == "Y" ? "是" : "否" }}</div>
  80. </template>
  81. </el-table-column>
  82. </el-table>
  83. <div style="display: flex;margin-top: 5px;justify-content:space-between;">
  84. <div></div>
  85. <div style="display: flex;">
  86. <el-button @click="dialogWin.PatientRegisterForChoose = false" style="width:90px;">取消</el-button>
  87. <el-button type="primary" @click="btnOk" style="width:90px;">确定</el-button>
  88. </div>
  89. </div>
  90. </div>
  91. </div>
  92. </template>
  93. <script>
  94. import moment from "moment";
  95. import { mapState, mapActions } from "vuex";
  96. import { getapi, postapi, putapi, deletapi } from "@/api/api";
  97. import Sortable from "sortablejs";
  98. import FileSaver from 'file-saver';
  99. import html2canvas from 'html2canvas';
  100. import {
  101. dddw,
  102. objCopy,
  103. arrayReduce,
  104. arrayExistObj,
  105. deepCopy,
  106. } from "../../utlis/proFunc";
  107. import ElProgressOCX from "../report/ElProgressOCX.vue";
  108. export default {
  109. components: {
  110. ElProgressOCX,
  111. },
  112. props:["params"], // params
  113. data() {
  114. return {
  115. patientRegisters:[], //体检人员列表信息
  116. tableDataCurrentRow: {}, // 当前被选中的行
  117. };
  118. },
  119. created() {
  120. },
  121. //挂载完成
  122. mounted() {
  123. this.getPatientregisterList()
  124. },
  125. computed: {
  126. ...mapState([
  127. "window",
  128. "dataTransOpts",
  129. "dialogWin",
  130. "dict",
  131. "elProgress",
  132. "patientRegister",
  133. "customerOrg",
  134. ]),
  135. },
  136. methods: {
  137. moment,dddw,deepCopy,
  138. getPatientregisterList(){
  139. this.patientRegisters = this.params
  140. },
  141. // 选中记录
  142. registerRowClick(row){
  143. this.tableDataCurrentRow = deepCopy(row)
  144. },
  145. // 双击 选中记录 并关闭窗口
  146. rowDblclick(row){
  147. this.registerRowClick(row)
  148. this.btnOk()
  149. },
  150. btnOk(){
  151. if(!this.tableDataCurrentRow.id){
  152. this.$message.warning({ showClose: true, message: "请选择体检人员!"})
  153. return
  154. }
  155. this.dataTransOpts.tableS.patient_register = deepCopy(this.tableDataCurrentRow)
  156. this.dataTransOpts.refresh.patient_register.S++
  157. setTimeout(() => {
  158. this.tableDataCurrentRow = {}
  159. }, 10);
  160. this.$emit("chooseBak",this.tableDataCurrentRow) //将选中的数据返回到父组件
  161. this.dialogWin.PatientRegisterForChoose = false
  162. },
  163. },
  164. //监听事件
  165. watch: {
  166. // 刷新体检人员登记列表
  167. "dataTransOpts.plus.PatientRegisterForChoose":{
  168. // immediate: true, // 立即执行
  169. // deep: true, // 深度监听复杂类型内变化
  170. handler(newVal,oldVal){
  171. console.log(`watch: 刷新体检人员列表 newVal: ${newVal} oldVal:${oldVal}`)
  172. if(newVal != oldVal) this.getPatientregisterList()
  173. }
  174. },
  175. },
  176. };
  177. </script>
  178. <style scoped>
  179. @import "../../assets/css/global_input.css";
  180. @import "../../assets/css/global_table.css";
  181. @import "../../assets/css/global.css";
  182. .box {
  183. display: flex;
  184. }
  185. .listBtn {
  186. margin-top: 5px;
  187. text-align: center;
  188. }
  189. .btnClass {
  190. width: 100px;
  191. }
  192. </style>