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.

1629 lines
59 KiB

3 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
2 years 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
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
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
1 year ago
1 year ago
1 year 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
1 year 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 years ago
3 years ago
2 years ago
3 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 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 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 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 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
1 year 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
1 year ago
3 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 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 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 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
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
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
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
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
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
2 years ago
2 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year 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 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 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 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 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
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 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 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
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
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
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
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 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
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
2 years ago
2 years ago
2 years 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
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
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
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 years ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years 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
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
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
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
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
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
2 years ago
2 years ago
2 years ago
2 years 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
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
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
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
2 years ago
3 years ago
3 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 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 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
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 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. <el-table :data="tableData" border
  8. :height="window.pageHeight < 600 ? 248 : Math.floor(((window.pageHeight - 250) * 2) / 3)"
  9. highlight-current-row @row-click="rowClick" size="small" row-key="id"
  10. @selection-change="handleSelectionChange" @cell-contextmenu="onCellRightClick" ref="info" id="info"
  11. :row-class-name="handleRowClassName">
  12. <el-table-column type="selection" width="40" align="center"></el-table-column>
  13. <el-table-column v-for="(item, index) in dragCol" :key="index" :type="dragCol[index].type"
  14. :min-width="dragCol[index].minWidth" :align="dragCol[index].align" :label="item.label"
  15. :prop="dragCol[index].prop" :sortable="dragCol[index].type || dragCol[index].prop == 'sn' ? false : true">
  16. <template slot-scope="scope" v-if="!(dragCol[index].type)">
  17. <div v-if="!dragCol[index].type">
  18. <div v-if="dragCol[index].prop == 'sn'">
  19. {{ scope.$index + 1 }}
  20. </div>
  21. <div v-else-if="dragCol[index].prop == 'completeFlag'"
  22. :style="`color: ${setPrStatusColor(scope.row.isAudit, scope.row.completeFlag)}`">
  23. {{ scope.row.isAudit == 'Y' ? "已审核" : dddw(dict.completeFlag, "id", scope.row.completeFlag,
  24. "displayName") }}
  25. </div>
  26. <div v-else-if="dragCol[index].prop == 'qztlType'">
  27. {{ dddw(dict.qztlType, "id", scope.row.qztlType, "displayName") }}
  28. </div>
  29. <div v-else-if="dragCol[index].prop == 'guidePrintTimes'">
  30. <i class="el-icon-printer" v-if="scope.row.guidePrintTimes > 0"
  31. style="font-size: 20px; color: green" />
  32. </div>
  33. <div v-else-if="dragCol[index].prop == 'isLock'">
  34. <i class="el-icon-lock" v-if="scope.row.isLock == 'Y'" style="font-size: 20px; color: red" />
  35. </div>
  36. <div v-else-if="dragCol[index].prop == 'isVip'
  37. || dragCol[index].prop == 'isUpload'
  38. || dragCol[index].prop == 'qztlIsMain'
  39. || dragCol[index].prop == 'qztlIsCy'
  40. || dragCol[index].prop == 'qztlIsCw'
  41. || dragCol[index].prop == 'qztlIsGt'
  42. || dragCol[index].prop == 'qztlIsWh'
  43. || dragCol[index].prop == 'qztlIsFj'
  44. ">
  45. {{ scope.row[dragCol[index].prop] == "Y" ? "是" : "否" }}
  46. </div>
  47. <div v-else-if="dragCol[index].prop == 'customerOrgParentName'">
  48. {{ scope.row.customerOrgParentName
  49. ? scope.row.customerOrgParentName
  50. : scope.row.customerOrgName }}
  51. </div>
  52. <div v-else-if="dragCol[index].prop == 'sexId'">
  53. {{ dddw(dict.sex, "id", scope.row[dragCol[index].prop], "displayName") }}
  54. </div>
  55. <div v-else-if="dragCol[index].prop == 'groupPack'">
  56. <div
  57. v-if="scope.row.medicalPackageId !== dict.personOrgId && scope.row.customerOrgId === dict.personOrgId">
  58. {{ dddw(dict.medicalPackage, "id", scope.row.medicalPackageId, "displayName") }}
  59. </div>
  60. <div
  61. v-if="scope.row.medicalPackageId !== dict.personOrgId && scope.row.customerOrgId !== dict.personOrgId">
  62. {{ dddw(dict.customerOrgGroupAll, "id", scope.row.customerOrgGroupId, "displayName") }}
  63. </div>
  64. </div>
  65. <div v-else-if="dragCol[index].prop == 'nationId'">
  66. {{ dddw(dict.nation, "id", scope.row[dragCol[index].prop], "displayName") }}
  67. </div>
  68. <div v-else-if="dragCol[index].prop == 'birthDate'">
  69. {{ scope.row[dragCol[index].prop] ? moment(scope.row[dragCol[index].prop]).format('yyyy-MM-DD') : ''
  70. }}
  71. </div>
  72. <div v-else-if="dragCol[index].prop == 'maritalStatusId'">
  73. {{ dddw(dict.maritalStatus, "id", scope.row[dragCol[index].prop], "displayName") }}
  74. </div>
  75. <div v-else-if="dragCol[index].prop == 'medicalTypeId'">
  76. {{ dddw(dict.medicalType, "id", scope.row[dragCol[index].prop], "displayName") }}
  77. </div>
  78. <div v-else-if="dragCol[index].prop == 'personnelTypeId'">
  79. {{ dddw(dict.personnelType, "id", scope.row[dragCol[index].prop], "displayName") }}
  80. </div>
  81. <div v-else-if="dragCol[index].prop == 'idNo'">
  82. {{ scope.row[dragCol[index].prop] + '_' }}
  83. </div>
  84. <div v-else>
  85. {{ scope.row[dragCol[index].prop] }}
  86. </div>
  87. </div>
  88. </template>
  89. </el-table-column>
  90. <!--
  91. "sexHormoneTermId": "00000000-0000-0000-0000-000000000000",
  92. "interposeMeasure": null,
  93. "medicalConclusionId": "00000000-0000-0000-0000-000000000000",
  94. "reportPrintTimes": 0,
  95. "isMedicalStart": "N",
  96. "medicalStartDate": "6/28/2023",
  97. "isRecoverGuide": "N",
  98. "summaryDate": "",
  99. "summaryDoctor": null,
  100. "isAudit": "N",
  101. "auditDoctor": null,
  102. "auditDate": "",
  103. "isNameHide": "N",
  104. "isPhoneFollow": "N",
  105. "thirdInfo": null,
  106. "guidePrintTimes": null,
  107. "remark": null,
  108. "medicalCenterId": "00000000-0000-0000-0000-000000000000",
  109. "customerOrgRegisterId": "00000000-0000-0000-0000-000000000000",
  110. "lastModifierName": "",
  111. "lastModificationTime": null,
  112. "lastModifierId": null,
  113. "creatorId": null,
  114. "id": "3a0c196d-a6d0-37fe-5c32-4806bdc4530f"
  115. -->
  116. </el-table>
  117. <div style="display: flex;justify-content:space-between;">
  118. <div></div>
  119. <div>
  120. <span style="font-size:12px;">{{ loadOpts.totalCount }} 条记录当前显示{{ tableData.length }}
  121. </span>
  122. </div>
  123. </div>
  124. </div>
  125. <!-- 组合项目 基本信息 -->
  126. <el-tabs v-model="tabChoosed" style="margin-top: -22px;">
  127. <!-- 组合项目 -->
  128. <el-tab-pane label="已选组合项目" name="1">
  129. <PatientRegisterAsbItem />
  130. </el-tab-pane>
  131. </el-tabs>
  132. </div>
  133. <div style="margin-left: 10px;">
  134. <div v-show="checkPagePriv(pagePriv.privs, '导入青藏数据')" class="listBtn">
  135. <el-button type="success" class="commonbutton" @click="btnImportOrgData">导入青藏数据</el-button>
  136. </div>
  137. <div v-show="checkPagePriv(pagePriv.privs, '人员登记')" class="listBtn">
  138. <el-button type="success" class="commonbutton" @click="btnAdd">人员登记</el-button>
  139. </div>
  140. <div v-show="checkPagePriv(pagePriv.privs, '批量正式登记')" class="listBtn">
  141. <el-button type="success" class="commonbutton" @click="btnAddBatch">批量正式登记</el-button>
  142. </div>
  143. <div v-show="checkPagePriv(pagePriv.privs, '编辑')" class="listBtn">
  144. <el-button type="primary" class="commonbutton" @click="btnEdit">编辑</el-button>
  145. </div>
  146. <div v-show="checkPagePriv(pagePriv.privs, '删除')" class="listBtn">
  147. <el-button type="danger" class="deleteButton" @click="btnDel">删除</el-button>
  148. </div>
  149. <!--
  150. <div class="listBtn">
  151. <el-button
  152. type=""
  153. class="btnClass"
  154. @click="openCamera"
  155. icon="el-icon-camera"
  156. >拍照</el-button
  157. >
  158. </div>
  159. <div class="listBtn">
  160. <el-button type="" class="btnClass commonbutton">健康档案</el-button>
  161. </div>
  162. -->
  163. <div v-show="checkPagePriv(pagePriv.privs, '批量调整分组')" class="listBtn">
  164. <el-button type="" class="commonbutton" @click="btnGroupBatch">批量调整分组</el-button>
  165. </div>
  166. <div v-show="checkPagePriv(pagePriv.privs, '批量调整项目')" class="listBtn">
  167. <el-button type="" class="commonbutton" @click="btnAsbBatch">批量调整项目</el-button>
  168. </div>
  169. <div v-show="checkPagePriv(pagePriv.privs, '指引单打印')" class="listBtn">
  170. <el-button type="" class="commonbutton" @click="guidePrint('0001', false)">指引单打印</el-button>
  171. </div>
  172. <div v-show="checkPagePriv(pagePriv.privs, '指引单预览')" class="listBtn">
  173. <el-button type="" class="commonbutton" @click="guidePrint('0001', true)">指引单预览</el-button>
  174. </div>
  175. <div v-show="checkPagePriv(pagePriv.privs, '人员检验检查条码')" class="listBtn">
  176. <el-button type="" class="commonbutton" @click="printPromise()" style="font-size: 12px;">人员检验检查条码</el-button>
  177. </div>
  178. <div v-show="checkPagePriv(pagePriv.privs, '人员信息导出')" class="listBtn">
  179. <el-button type="" class="commonbutton" @click="btnExport('info')">人员信息导出</el-button>
  180. </div>
  181. <div class="listBtn">
  182. <el-button type="" class="commonbutton" @click="btnDragColDesign">设计列排序</el-button>
  183. </div>
  184. <!-- elProgress.display dialogWin.LocalConfig
  185. <div class="listBtn">
  186. <el-button type="" class="commonbutton" @click="dialogWin.LocalConfig = true">本地设置</el-button>
  187. </div>
  188. -->
  189. <!--
  190. <div class="listBtn">
  191. <el-button type="" class="btnClass commonbutton" @click="rowSelected(tableData)">选中</el-button>
  192. </div>
  193. -->
  194. </div>
  195. </div>
  196. <!--组件弹窗-->
  197. <div>
  198. <!-- 体检人员登记 :title="patientRegister.patientRegisterRd.id ? '体检人员--编辑' : '体检人员--新增'" -->
  199. <el-dialog :title="dataTransOpts.tableS.patient_register.id ? '体检人员--编辑' : '体检人员--新增'"
  200. :visible.sync="dialogWin.PatientRegisterEdit" :close-on-click-modal="false" fullscreen
  201. @close="close_dialogWin_PatientRegisterEdit">
  202. <!-- :formInitData="patientRegister.patientRegisterRd" -->
  203. <PatientRegisterEdit :isDoctor="'1'" :patientRegisterId="patientRegister.patientRegisterRd.id"
  204. :editTimes="editTimes" :refFuncSetData="refFuncSetData" />
  205. </el-dialog>
  206. <!-- 修改信息 -->
  207. <el-dialog :title="`修改信息--${upBaseInfo.label}`" :visible.sync="upBaseInfo.visble" width="400" :show-close="false"
  208. :append-to-body="true" :close-on-click-modal="false">
  209. <div>
  210. <div style="display: flex;margin-bottom: 20px;">
  211. <span style="padding: 5px 0 0 10px; width:100px;">{{ upBaseInfo.label }}</span>
  212. <el-input v-model="upBaseInfo.value" size="small"></el-input>
  213. </div>
  214. <div style="display: flex;justify-content: space-between;">
  215. <div></div>
  216. <div>
  217. <el-button class="commonbutton" @click="btnUpBaseInfo">提交</el-button>
  218. <el-button class="commonbutton" @click="close_dialogWin_upBaseInfo">关闭</el-button>
  219. </div>
  220. </div>
  221. </div>
  222. </el-dialog>
  223. <!-- 拍照 -->
  224. <el-dialog title="拍照" :visible.sync="patientRegister.cameraVisble" width="400" height="800" :show-close="false"
  225. :append-to-body="true" :close-on-click-modal="false">
  226. <Camera :id="patientRegister.patientRegisterId" />
  227. </el-dialog>
  228. <!-- 导入企业数据 -->
  229. <el-dialog title="导入企业数据" :visible.sync="dialogWin.ImportOrgData" width="800px" :append-to-body="true"
  230. :close-on-click-modal="false">
  231. <ImportOrgData />
  232. </el-dialog>
  233. <!-- 列排序 -->
  234. <el-dialog title="列排序" :visible.sync="dialogColSort" width="300px" :append-to-body="true"
  235. :close-on-click-modal="false">
  236. <el-table id="elTable_dragCol" :data="dragColDesign" row-key="prop" border height="600">
  237. <el-table-column type="index" label="序号" width="40" align="center">
  238. </el-table-column>
  239. <el-table-column label="列名" prop="label" min-width="120" align="center"></el-table-column>
  240. </el-table>
  241. <span slot="footer" class="dialog-footer">
  242. <el-button class="commonbutton" @click="dialogColSort = false">取消</el-button>
  243. <el-button class="commonbutton" @click="btnDragColDesignOk">确定</el-button>
  244. </span>
  245. </el-dialog>
  246. <!-- 批量调整分组 -->
  247. <el-dialog title="批量调整分组" :visible.sync="dialogWin.PatientRegisterEditGroupBatch" width="600px" height="800px"
  248. :append-to-body="true" :close-on-click-modal="false">
  249. <PatientRegisterEditGroupBatch :multipleSelection="multipleSelection" />
  250. </el-dialog>
  251. <!-- 批量调整项目 -->
  252. <el-dialog title="批量调整项目" :visible.sync="dialogWin.PatientRegisterEditItemBatch" width="610px" height="800px"
  253. :append-to-body="true" :close-on-click-modal="false">
  254. <PatientRegisterEditItemBatch :multipleSelection="multipleSelection" />
  255. </el-dialog>
  256. <!-- 通用进度条 -->
  257. <el-dialog title="数据处理中……" :visible.sync="elProgress.display" width="600px" height="400" :show-close="false"
  258. :close-on-click-modal="false" :append-to-body="true">
  259. <ElProgressOCX />
  260. </el-dialog>
  261. <!--通用本地参数设置-->
  262. <el-dialog title="本地参数设置" :visible.sync="dialogWin.LocalConfig" :close-on-click-modal="false"
  263. :append-to-body="true" width="800px" height="600px">
  264. <LocalConfig />
  265. </el-dialog>
  266. </div>
  267. </div>
  268. </template>
  269. <script>
  270. import moment from "moment";
  271. import { mapState, mapActions } from "vuex";
  272. import { getapi, postapi, putapi, deletapi } from "@/api/api";
  273. import Sortable from "sortablejs";
  274. import FileSaver from 'file-saver';
  275. import html2canvas from 'html2canvas';
  276. import {
  277. getPagePriv, checkPagePriv,
  278. dddw,
  279. objCopy,
  280. arrayReduce,
  281. arrayExistObj,
  282. deepCopy, setPrStatusColor
  283. } from "../../utlis/proFunc";
  284. import PatientRegisterEdit from "../../components/patientRegister/PatientRegisterEdit.vue";
  285. import Camera from "../../components/patientRegister/Camera.vue";
  286. import PatientRegisterAsbItem from "../../components/patientRegister/patientRegisterAsbItem.vue";
  287. import ElProgressOCX from "../../components/report/ElProgressOCX.vue";
  288. import PatientRegisterEditGroupBatch from "./PatientRegisterEditGroupBatch.vue";
  289. import PatientRegisterEditItemBatch from "./PatientRegisterEditItemBatch.vue";
  290. import ImportOrgData from "./ImportOrgData.vue";
  291. import LocalConfig from "../../components/common/LocalConfig.vue";
  292. export default {
  293. components: {
  294. PatientRegisterEdit,
  295. Camera,
  296. PatientRegisterAsbItem,
  297. PatientRegisterEditGroupBatch, //批量调整分组
  298. PatientRegisterEditItemBatch, //批量调整项目
  299. ElProgressOCX,
  300. LocalConfig,
  301. ImportOrgData,
  302. },
  303. data() {
  304. return {
  305. pagePriv: {
  306. routeUrlorPageName: 'patientRegister', //当前页面归属路由或归属页面权限名称
  307. privs: [] // 页面权限
  308. },
  309. peisid: null,
  310. startPoint: -1, // 多选起点 -1 表示选择
  311. endPoint: -1, // 多选终点 -1 表示未选择
  312. tableData: [], //表格数据
  313. tableDataCurrentRow: {}, // 当前被选中的行
  314. multipleSelection: [], //选中的数据列表
  315. dialogCamera: false,
  316. tabChoosed: "1",
  317. formInitData: {}, //体检登记初始表单数据
  318. editTimes: 0,
  319. rClickRow: null, //右击的行
  320. rClickColumn: null, //右击的列(预留)
  321. dragColDesign: [], // 待调整的排序的序
  322. //拖动列
  323. dragCol: [
  324. { label: "序号", prop: "sn", minWidth: 40, align: "center" },
  325. { label: "体检进度", prop: "completeFlag", minWidth: 80, align: "center" },
  326. { label: "打印", prop: "guidePrintTimes", minWidth: 55, align: "center" },
  327. { label: "锁住", prop: "isLock", minWidth: 55, align: "center" },
  328. { label: "单位", prop: "customerOrgParentName", minWidth: 180, align: "center" },
  329. { label: "部门", prop: "customerOrgName", minWidth: 120, align: "center" },
  330. { label: "姓名", prop: "patientName", minWidth: 80, align: "center" },
  331. { label: "性别", prop: "sexId", minWidth: 55, align: "center" },
  332. { label: "年龄", prop: "age", minWidth: 55, align: "center" },
  333. { label: "条码号", prop: "patientRegisterNo", minWidth: 150, align: "center" },
  334. { label: "档案号", prop: "patientNo", minWidth: 100, align: "center" },
  335. { label: "体检次数", prop: "medicalTimes", minWidth: 80, align: "center" },
  336. { label: "分组/套餐", prop: "groupPack", minWidth: 150, align: "center" },
  337. { label: "民族", prop: "nationId", minWidth: 55, align: "center" },
  338. { label: "身份证", prop: "idNo", minWidth: 160, align: "center" },
  339. { label: "出生日期", prop: "birthDate", minWidth: 80, align: "center" },
  340. { label: "邮箱", prop: "email", minWidth: 150, align: "center" },
  341. { label: "手机", prop: "mobileTelephone", minWidth: 130, align: "center" },
  342. { label: "电话", prop: "telephone", minWidth: 130, align: "center" },
  343. { label: "地址", prop: "address", minWidth: 400, align: "" },
  344. { label: "体检卡号", prop: "medicalCardNo", minWidth: 80, align: "center" },
  345. { label: "工卡号", prop: "jobCardNo", minWidth: 80, align: "center" },
  346. { label: "婚姻状况", prop: "maritalStatusId", minWidth: 80, align: "center" },
  347. { label: "体检类别", prop: "medicalTypeId", minWidth: 80, align: "center" },
  348. { label: "人员类别", prop: "personnelTypeId", minWidth: 80, align: "center" },
  349. { label: "职务", prop: "jobPost", minWidth: 200, align: "center" },
  350. { label: "职称", prop: "jobTitle", minWidth: 80, align: "center" },
  351. { label: "介绍人", prop: "salesman", minWidth: 80, align: "center" },
  352. { label: "是否VIP", prop: "isVip", minWidth: 80, align: "center" },
  353. { label: "登记人", prop: "creatorName", minWidth: 80, align: "center" },
  354. { label: "登记日期", prop: "creationTime", minWidth: 140, align: "center" },
  355. { label: "体检日期", prop: "medicalStartDate", minWidth: 140, align: "center" },
  356. { label: "是否上传", prop: "isUpload", minWidth: 80, align: "center" },
  357. { label: "高原/健康", prop: "qztlType", minWidth: 90, align: "center" },
  358. { label: "行车", prop: "qztlIsMain", minWidth: 50, align: "center" },
  359. { label: "从业", prop: "qztlIsCy", minWidth: 50, align: "center" },
  360. { label: "普速", prop: "qztlIsCw", minWidth: 50, align: "center" },
  361. { label: "高铁", prop: "qztlIsGt", minWidth: 50, align: "center" },
  362. { label: "职害", prop: "qztlIsWh", minWidth: 50, align: "center" },
  363. { label: "复检", prop: "qztlIsFj", minWidth: 50, align: "center" },
  364. ],
  365. dialogColSort: false,
  366. dom: null, //用于滚动加载数据
  367. lazyLoading: false, //是否懒加载中
  368. loadOpts: {
  369. totalCount: 0,
  370. skipCount: 0,
  371. maxResultCount: 100,
  372. },
  373. loadOptsInit: {},
  374. upBaseInfo: {
  375. visble: false,
  376. label: "姓名",
  377. value: "",
  378. colName: "patientName",
  379. patientRegisterId: ""
  380. }
  381. };
  382. },
  383. created() {
  384. //获取用户当前页面的权限
  385. let userPriv = window.sessionStorage.getItem('userPriv')
  386. if (userPriv) this.pagePriv.privs = deepCopy(getPagePriv(this.pagePriv.routeUrlorPageName))
  387. this.loadOptsInit = Object.assign({}, this.loadOpts)
  388. },
  389. //挂载完成
  390. mounted() {
  391. this.quickAsb = this.dict.asbItemAll;
  392. this.peisid = window.sessionStorage.getItem('peisid');
  393. this.$nextTick(() => {
  394. this.scrollFull()
  395. })
  396. },
  397. computed: {
  398. ...mapState([
  399. "window",
  400. "dataTransOpts",
  401. "dialogWin",
  402. "dict",
  403. "elProgress",
  404. "patientRegister",
  405. "customerOrg",
  406. ]),
  407. },
  408. methods: {
  409. ...mapActions(["getCustomerOrgGroup", "getPatientRegisterAbs"]),
  410. moment, dddw, deepCopy, checkPagePriv, setPrStatusColor,
  411. // 扩展定义表格行样式
  412. handleRowClassName({ row, rowIndex }) {
  413. // highLightBg 为 'selected'的高亮
  414. //// console.log(rowIndex, row)
  415. //return row.highLightBg == 'selected' ? 'high-light-bg' : '';
  416. if (row.choosed) {
  417. return "current-row";
  418. } else {
  419. return "";
  420. }
  421. },
  422. // 行选择
  423. rowSelected(rows) {
  424. rows.forEach((e) => {
  425. this.$refs["info"].toggleRowSelection(e, true);
  426. });
  427. },
  428. refFuncSetData(item, v) {
  429. setData(this, item, v)
  430. },
  431. // 打印指引单(isPreview)
  432. async guidePrint(ReportCode, isPreview) {
  433. if (!this.$peisAPI) {
  434. this.$message.info({ showClose: true, message: "此功能,需要在壳客户端才可运行!" });
  435. return;
  436. }
  437. let token = window.sessionStorage.getItem("token");
  438. let user = window.sessionStorage.getItem("user");
  439. let toOutShell = {
  440. ReportCode,
  441. token,
  442. isBuildImage: 'N',
  443. IsUploadPdf: 'N',
  444. preViewCanPrint: "N",
  445. Parameters: [
  446. { Name: "printer", Value: user },
  447. { Name: "hisLog", Value: "pic/hisLog.jpg" },
  448. { Name: 'pageFooter', Value: 'pic/peisQrCode.jpg' },
  449. ],
  450. };
  451. let lfind = -1;
  452. //选中(取消勾选)start -------------------------
  453. // this.multipleSelection = []
  454. // this.tableData.forEach(e => {
  455. // if (e.choosed) {
  456. // this.multipleSelection.push(deepCopy(e))
  457. // }
  458. // })
  459. //选中(取消勾选) end  -------------------------
  460. if (this.multipleSelection.length < 1) {
  461. this.$message.info({ showClose: true, message: "请勾选要打印指引单的人员记录!" });
  462. return;
  463. }
  464. if (isPreview) {
  465. /*
  466. //this.multipleSelection.forEach((item,index) =>{
  467. postapi(
  468. `/api/app/printreport/getpatientregisterguidereport?PatientRegisterId=${this.multipleSelection[0].id}`
  469. )
  470. .then((res) => {
  471. if (res.code != -1) {
  472. toOutShell.ReportTable = res.data;
  473. // console.log(
  474. "JSON.stringify(toOutShell)",
  475. JSON.stringify(toOutShell)
  476. );
  477. return this.$peisAPI.printPre(JSON.stringify(toOutShell));
  478. }
  479. })
  480. .then(res => {
  481. // console.log('this.$peisAPI.printPre', res)
  482. if (JSON.parse(res).code < 0) {
  483. this.$message.warning(JSON.parse(res).message);
  484. }
  485. })
  486. .catch((err) => {
  487. // console.log('打印指引单', err)
  488. this.$message.warning({ showClose: true, message: err });
  489. });
  490. */
  491. toOutShell.BusinessCode = this.multipleSelection[0].id
  492. if (this.multipleSelection[0].completeFlag == '0') {
  493. this.$message.warning({ showClose: true, message: '预登记人员,不可执行此操作!' })
  494. return
  495. }
  496. this.$peisAPI.printPre(JSON.stringify(toOutShell))
  497. .then(res => {
  498. if (JSON.parse(res).code < 0) {
  499. this.$message.warning({ showClose: true, message: JSON.parse(res).message });
  500. }
  501. })
  502. .catch((err) => {
  503. // console.log('打印指引单', err)
  504. this.$message.warning({ showClose: true, message: `${err}` });
  505. });
  506. } else {
  507. this.elProgress.display = true;
  508. this.elProgress.percentage = 0;
  509. for (let i = 0; i < this.multipleSelection.length; i++) {
  510. try {
  511. let patientregisterId = this.multipleSelection[i].id
  512. if (this.multipleSelection[i].completeFlag == '0') {
  513. this.$message.warning({ showClose: true, message: `${this.multipleSelection[i].patientName} 为预登记人员,不可打印指引单` });
  514. continue
  515. }
  516. toOutShell.BusinessCode = patientregisterId
  517. let resPeisAPI = await this.$peisAPI.print(JSON.stringify(toOutShell));
  518. if (JSON.parse(resPeisAPI).code < 0) continue
  519. let resPrintTimes = await postapi("/api/app/patientregister/updatepatientregisterguideprinttimesmany", [patientregisterId]);
  520. if (resPrintTimes.code == -1) continue
  521. lfind = arrayExistObj(this.tableData, "id", patientregisterId);
  522. if (lfind > -1) {
  523. if (this.tableData[lfind].guidePrintTimes) {
  524. this.tableData[lfind].guidePrintTimes = Number(this.tableData[lfind].guidePrintTimes) + 1;
  525. } else {
  526. this.tableData[lfind].guidePrintTimes = 1;
  527. }
  528. }
  529. } catch (error) {
  530. // console.log('打印指引单', error)
  531. this.$message.warning({ showClose: true, message: `${error}` });
  532. }
  533. this.elProgress.percentage = Math.floor(
  534. ((i + 1) * 100) / this.multipleSelection.length
  535. );
  536. }
  537. this.elProgress.display = false;
  538. }
  539. },
  540. // 指引单新打印方式,promise
  541. guidePrintPromise(ReportCode, isPreview, row) {
  542. return new Promise((resolve, reject) => {
  543. if (!this.$peisAPI) reject("此功能,需要在壳客户端才可运行!")
  544. let token = window.sessionStorage.getItem("token");
  545. let user = window.sessionStorage.getItem("user");
  546. let toOutShell = {
  547. ReportCode,
  548. token,
  549. isBuildImage: 'N',
  550. IsUploadPdf: 'N',
  551. preViewCanPrint: "N",
  552. Parameters: [
  553. { Name: "printer", Value: user },
  554. { Name: "hisLog", Value: "pic/hisLog.jpg" },
  555. { Name: 'pageFooter', Value: 'pic/peisQrCode.jpg' },
  556. ],
  557. };
  558. if (!row.completeFlag || row.completeFlag == '0') reject('预登记人员,不可执行此操作!')
  559. toOutShell.BusinessCode = row.id
  560. console.log(JSON.stringify(toOutShell))
  561. if (isPreview) {
  562. this.$peisAPI.printPre(JSON.stringify(toOutShell))
  563. .then(res => {
  564. if (JSON.parse(res).code < 0) {
  565. resolve(JSON.parse(res))
  566. } else {
  567. reject(JSON.parse(res).message)
  568. }
  569. })
  570. .catch((err) => {
  571. reject(err)
  572. });
  573. } else {
  574. this.$peisAPI.printPre(JSON.stringify(toOutShell))
  575. .then(res => {
  576. if (JSON.parse(res).code < 0) {
  577. return postapi("/api/app/patientregister/updatepatientregisterguideprinttimesmany", [row.id]);
  578. } else {
  579. reject(JSON.parse(res).message)
  580. }
  581. })
  582. .then(res => {
  583. if (res && res.code > -1) {
  584. let lfind = arrayExistObj(this.tableData, "id", row.id);
  585. if (lfind > -1) {
  586. if (this.tableData[lfind].guidePrintTimes) {
  587. this.tableData[lfind].guidePrintTimes = Number(this.tableData[lfind].guidePrintTimes) + 1;
  588. } else {
  589. this.tableData[lfind].guidePrintTimes = 1;
  590. }
  591. }
  592. }
  593. resolve(res)
  594. })
  595. .catch((err) => {
  596. reject(err)
  597. });
  598. }
  599. })
  600. },
  601. printGuideLisPacs(row) {
  602. return new Promise((resolve, reject) => {
  603. this.guidePrintPromise("0008", false, row)
  604. .then(res => {
  605. return this.lisPrint(row,"0002",false)
  606. })
  607. .then(res => {
  608. return this.pacsPrint(row,"0003",false)
  609. })
  610. .then(res => {
  611. resolve(res)
  612. })
  613. .catch(err => {
  614. reject(err)
  615. })
  616. })
  617. },
  618. async printPromise() {
  619. if (this.multipleSelection.length < 1) {
  620. this.$message.info({ showClose: true, message: "请勾选要打印人员检验检查条码的记录!" });
  621. return;
  622. }
  623. this.elProgress.display = true;
  624. this.elProgress.percentage = 0;
  625. for (let i = 0; i < this.multipleSelection.length; i++) {
  626. let row = this.multipleSelection[i]
  627. try {
  628. await this.printGuideLisPacs(row)
  629. } catch (error) {
  630. console.log('printPromise', error)
  631. }
  632. this.elProgress.percentage = Math.floor(
  633. ((i + 1) * 100) / this.multipleSelection.length
  634. );
  635. }
  636. this.elProgress.display = false;
  637. },
  638. handleSelectionChange(rows) {
  639. //this.multipleSelection = rows;
  640. //// console.log('this.multipleSelection',this.multipleSelection)
  641. // rows.forEach((item) => {
  642. // item.highLightBg = "selected";
  643. // });
  644. // // 取消全选
  645. // if (!rows.length) {
  646. // this.tableData.forEach((item) => {
  647. // item.highLightBg = "";
  648. // });
  649. // }
  650. this.multipleSelection = rows;
  651. },
  652. //设置新增/编辑的form数据
  653. setForm(formData) {
  654. this.patientRegister.patientRegisterRd = deepCopy(formData)
  655. if (!this.patientRegister.patientRegisterRd.id) {
  656. this.patientRegister.patientRegisterRd.customerOrgId = this.patientRegister.query.customerOrgId
  657. }
  658. },
  659. //点击体检次数行
  660. rowClick(row) {
  661. // 按住了shift键
  662. // if (this.window.shift) {
  663. // //清除所有选择
  664. // this.tableData.forEach((e, index) => {
  665. // e.choosed = false;
  666. // e.index = index;
  667. // });
  668. // if (this.startPoint == -1) {
  669. // this.tableData[row.index].choosed = true;
  670. // this.startPoint = row.index;
  671. // } else {
  672. // if (this.startPoint > row.index) {
  673. // for (let i = row.index; i <= this.startPoint; i++) {
  674. // this.tableData[i].choosed = true;
  675. // }
  676. // } else if (this.startPoint <= row.index) {
  677. // for (let i = this.startPoint; i <= row.index; i++) {
  678. // this.tableData[i].choosed = true;
  679. // }
  680. // }
  681. // }
  682. // } else if (this.window.ctrl) { // 按住了ctrl 键
  683. // this.tableData[row.index].choosed = true;
  684. // if (this.startPoint == -1) {
  685. // this.startPoint = row.index;
  686. // }
  687. // } else {
  688. // // 未按住了ctrl 、shift 键
  689. // //清除所有选择
  690. // // console.log("清除所有选择");
  691. // this.tableData.forEach((e, index) => {
  692. // e.choosed = false;
  693. // e.index = index;
  694. // });
  695. // // console.log(this.tableData, row.index);
  696. // // console.log(this.tableData[row.index].choosed);
  697. // this.tableData[row.index].choosed = true;
  698. // this.startPoint = row.index;
  699. // }
  700. //选中了多个点编辑时,排序最前的作为当前选中的
  701. // console.log('row.index <= this.startPoint', row.index, this.startPoint)
  702. // let lfind = -1
  703. // for (let i = 0; i < this.tableData.length; i++) {
  704. // if (this.tableData[i].choosed) {
  705. // lfind = i
  706. // break
  707. // }
  708. // }
  709. // if (lfind > -1) {
  710. // 弹出编辑框,只有在编辑框显示时,才去触发获取数据
  711. this.dataTransOpts.tableS.patient_register = deepCopy(row)
  712. this.tableDataCurrentRow = deepCopy(row)
  713. this.dataTransOpts.refresh.register_check_asbitem.M++ //触发所选组合项目刷新
  714. // }
  715. },
  716. // 导入企业(青藏公司)数据
  717. btnImportOrgData() {
  718. //
  719. this.dataTransOpts.plus.ImportOrgData++
  720. this.dialogWin.ImportOrgData = true
  721. },
  722. //体检次数 相关操作
  723. btnAdd() {
  724. if (!this.peisid || this.peisid == 'null') {
  725. this.$message.warning({ showClose: true, message: "该用户未选归属体检中心,不能执行此操作!" });
  726. return
  727. }
  728. let customerOrgId = this.patientRegister.query.customerOrgId;
  729. if (!customerOrgId) {
  730. this.$message.warning({ showClose: true, message: "请选择单位或个人" });
  731. return;
  732. }
  733. // this.patientRegister.patientRegisterRdInit.customerOrgId = customerOrgId
  734. // this.setForm(this.patientRegister.patientRegisterRdInit)
  735. // this.patientRegister.patientRegisterAbs = [];
  736. // this.patientRegister.patientRegisterRd.id = ''
  737. // this.dialogWin.PatientRegisterEdit = true;
  738. // this.editTimes++; //触发表单窗口,数据更新
  739. // this.getPatientRegisterAbs();
  740. this.dataTransOpts.tableS.patient_register.id = ''
  741. this.dialogWin.PatientRegisterEdit = true;
  742. this.dataTransOpts.plus.clearPatientRegisterQuery++ //触发清空人员登记界面的查询条件
  743. setTimeout(() => {
  744. this.dataTransOpts.refresh.patient_register.S++ //触发人员信息刷新
  745. }, 10);
  746. },
  747. //批量正式登记
  748. btnAddBatch() {
  749. let patientRegisterIds = []
  750. //取消勾选,换成选择的方式 start
  751. // this.multipleSelection = [];
  752. // this.tableData.forEach((e) => {
  753. // if (e.choosed && e.completeFlag == '0') {
  754. // this.multipleSelection.push(e);
  755. // patientRegisterIds.push(e.id)
  756. // }
  757. // });
  758. //取消勾选,换成选择的方式 end
  759. if (this.multipleSelection.length < 1) {
  760. this.$message.info({ showClose: true, message: "请选择状态为预登记的记录!" });
  761. return;
  762. }
  763. this.multipleSelection.forEach(e => {
  764. patientRegisterIds.push(e.id)
  765. });
  766. let completeFlag = '1'
  767. let body = { completeFlag, patientRegisterIds }
  768. postapi('/api/app/patientregister/updatepatientregistercompleteflagormedicalstartdate', body)
  769. .then(res => {
  770. if (res.code != -1) {
  771. // console.log('操作成功!')
  772. patientRegisterIds.forEach(e => {
  773. let lfind = arrayExistObj(this.tableData, 'id', e)
  774. if (lfind > -1) this.tableData[lfind].completeFlag = completeFlag
  775. });
  776. }
  777. })
  778. .catch(err => {
  779. this.$message.error({ showClose: true, message: `操作失败 ${err}` });
  780. });
  781. },
  782. // 单个编辑
  783. btnEdit() {
  784. // if (!this.patientRegister.patientRegisterRd.id) {
  785. if (!this.dataTransOpts.tableS.patient_register.id) {
  786. this.$message.warning({ showClose: true, message: "请选择要操作的记录" });
  787. return;
  788. }
  789. //// console.log(this.patientRegister.patientRegisterRd,this.tableData)
  790. // 触发数据刷新
  791. this.dataTransOpts.refresh.patient_register.S++ //触发人员信息刷新(会同时刷新组合项目)
  792. this.dataTransOpts.plus.clearPatientRegisterQuery++ //触发清空人员登记界面的查询条件
  793. this.dialogWin.PatientRegisterEdit = true;
  794. },
  795. //新增或编辑后选中记录
  796. async close_dialogWin_PatientRegisterEdit() {
  797. // 如果 dataTransOpts.tableS.patient_register.id 为空(未增加),则不做处理
  798. let id = this.dataTransOpts.tableS.patient_register.id
  799. if (!id) {
  800. id = this.tableDataCurrentRow.id
  801. }
  802. if (!id) return
  803. this.dataTransOpts.tableS.patient_register.id = id
  804. let res = await postapi('/api/app/patientregister/getlistinfilter', { patientRegisterNo: this.dataTransOpts.tableS.patient_register.patientRegisterNo })
  805. if (res.code != 1) return
  806. let currentRow = res.data.items[0]
  807. // this.tableData.forEach(e => {
  808. // e.choosed = false
  809. // });
  810. let lfind = arrayExistObj(this.tableData, 'id', this.dataTransOpts.tableS.patient_register.id)
  811. if (lfind > -1) {
  812. objCopy(currentRow, this.tableData[lfind])
  813. } else {
  814. lfind = this.tableData.length
  815. currentRow.index = lfind
  816. currentRow.choosed = true
  817. this.tableData.push(currentRow)
  818. }
  819. // 刷新 register_check_asbitem 表记录
  820. if (lfind > -1) {
  821. this.dataTransOpts.refresh.register_check_asbitem.M++
  822. }
  823. },
  824. //拍照
  825. openCamera() {
  826. if (!this.patientRegister.patientRegisterId) {
  827. this.$message.warning({ showClose: true, message: "请选择要操作的记录" });
  828. return;
  829. }
  830. this.patientRegister.cameraVisble = true;
  831. },
  832. //删除(可批量删除)
  833. // /api/app/patient-register/many?PatientRegisterIds=3a0c2cac-f44c-f407-9504-c1fc5e80a159&PatientRegisterIds=3a0c2cb3-d10c-ed70-db6a-b835e75ce641
  834. btnDel() {
  835. //选中(取消勾选)start -------------------------
  836. // this.multipleSelection = []
  837. // this.tableData.forEach(e => {
  838. // if (e.choosed) {
  839. // this.multipleSelection.push(deepCopy(e))
  840. // }
  841. // })
  842. //选中(取消勾选) end -------------------------
  843. if (this.multipleSelection.length < 1) {
  844. this.$message.warning({ showClose: true, message: "请先勾选要操作的记录" });
  845. return;
  846. }
  847. let patientRegisterIds = [];
  848. for (let i = 0; i < this.multipleSelection.length; i++) {
  849. patientRegisterIds.push(this.multipleSelection[i]["id"]);
  850. }
  851. this.$confirm("此操作将永久删除该记录, 是否继续?", "提示", {
  852. confirmButtonText: "是",
  853. cancelButtonText: "否",
  854. type: "warning",
  855. })
  856. .then(() => {
  857. //// console.log('{patientRegisterIds}',{patientRegisterIds})
  858. return postapi('/api/app/patient-register/delete-many', {
  859. patientRegisterIds,
  860. });
  861. })
  862. .then((res) => {
  863. if (res.code != -1) {
  864. // console.log("操作成功");
  865. this.dataTransOpts.tableS.patient_register.id = ''
  866. setTimeout(() => {
  867. this.dataTransOpts.refresh.register_check_asbitem.M++
  868. }, 10);
  869. arrayReduce(this.tableData, this.multipleSelection, 'id=id') //清除列表记录
  870. // this.setForm(this.patientRegister.patientRegisterRdInit)
  871. // this.getPatientRegisterAbs();
  872. }
  873. })
  874. .catch((err) => {
  875. if (err == "cancel") {
  876. this.$message.info({ showClose: true, message: "已取消操作" });
  877. }
  878. });
  879. },
  880. //查询
  881. async Query() {
  882. // 查询时,清掉明细数据 (滚动时不清)
  883. this.dataTransOpts.tableS.patient_register.id = ''
  884. this.tableDataCurrentRow = {} // 清除选择
  885. this.tableData = []
  886. setTimeout(() => {
  887. this.dataTransOpts.refresh.register_check_asbitem.M++ //触发所选组合项目刷新
  888. }, 10);
  889. this.loadOpts = Object.assign(this.loadOpts, this.loadOptsInit)
  890. await this.getPrList()
  891. },
  892. //数据量多时,滚动加载
  893. async load() {
  894. this.loadOpts.skipCount++
  895. await this.getPrList()
  896. },
  897. // 获取列表数据
  898. async getPrList() {
  899. if (this.loadOpts.skipCount != 0 && this.loadOpts.skipCount * this.loadOpts.maxResultCount >= this.loadOpts.totalCount) return
  900. // console.log('getPrList', this.loadOpts)
  901. let body = {
  902. skipCount: this.loadOpts.skipCount,
  903. maxResultCount: this.loadOpts.maxResultCount
  904. };
  905. // console.log(`this.patientRegister.query`, this.patientRegister.query);
  906. if (this.patientRegister.query.customerOrgFlag) {
  907. // if (this.patientRegister.query.CustomerOrgParentId) {
  908. // body.customerOrgId = this.patientRegister.query.CustomerOrgParentId;
  909. // } else {
  910. // if (this.patientRegister.query.customerOrgId)
  911. // body.customerOrgId = this.patientRegister.query.customerOrgId;
  912. // }
  913. if (this.patientRegister.query.customerOrgId) body.customerOrgId = this.patientRegister.query.customerOrgId;
  914. if (this.patientRegister.query.customerOrgId
  915. && this.patientRegister.query.customerOrgId != this.dict.personOrgId
  916. && this.patientRegister.query.customerOrgRegister.id) {
  917. body.customerOrgRegisterId = this.patientRegister.query.customerOrgRegister.id
  918. }
  919. }
  920. if (this.patientRegister.query.sex)
  921. body.sexId = this.patientRegister.query.sex;
  922. if (this.patientRegister.query.patientName)
  923. body.patientName = this.patientRegister.query.patientName;
  924. if (this.patientRegister.query.medicalTypeIds && this.patientRegister.query.medicalTypeIds.length > 0)
  925. body.medicalTypeIds = this.patientRegister.query.medicalTypeIds;
  926. if (this.patientRegister.query.completeFlags && this.patientRegister.query.completeFlags.length > 0)
  927. body.completeFlags = this.patientRegister.query.completeFlags;
  928. //StartDate EndDate
  929. if (
  930. this.patientRegister.query.startDate &&
  931. this.patientRegister.query.endDate
  932. ) {
  933. body.dateType = this.patientRegister.query.dateType
  934. body.startDate = moment(this.patientRegister.query.startDate).format(
  935. "yyyy-MM-DD"
  936. );
  937. body.endDate = moment(this.patientRegister.query.endDate).format(
  938. "yyyy-MM-DD"
  939. );
  940. if (body.startDate > body.endDate) {
  941. this.$message.warning({ showClose: true, message: "起始日期不能大于截止日期,数据校验不通过!" });
  942. return;
  943. }
  944. }
  945. if (this.patientRegister.query.phone)
  946. body.phone = this.patientRegister.query.phone;
  947. if (this.patientRegister.query.idCardNo)
  948. body = { idNo: this.patientRegister.query.idCardNo };
  949. if (this.patientRegister.query.patientNo)
  950. body = { patientNo: this.patientRegister.query.patientNo };
  951. if (this.patientRegister.query.patientRegisterNo)
  952. body = {
  953. patientRegisterNo: this.patientRegister.query.patientRegisterNo,
  954. };
  955. // console.log("/api/app/patientregister/getlistinfilter", body);
  956. postapi("/api/app/patientregister/getlistinfilter", body)
  957. .then(res => {
  958. if (res.code > -1) {
  959. // 刷新最大记录数
  960. this.loadOpts.totalCount = res.data.totalCount
  961. let curLoad = res.data.items
  962. // let oldCount = 0
  963. if (body.skipCount == 0) { //查询
  964. this.tableData = [];
  965. }
  966. this.tableData = this.tableData.concat(curLoad)
  967. // else {
  968. // // 懒加载 ,原数据集不用清空
  969. // oldCount = this.tableData.length
  970. // }
  971. // curLoad.forEach((e, index) => {
  972. // this.tableData.push(Object.assign({ index: Number(oldCount) + Number(index), choosed: false }, e))
  973. // })
  974. //如果 有选中 记录,则刷新其对应的组合项目
  975. if (this.dataTransOpts.tableS.patient_register.id) {
  976. this.dataTransOpts.refresh.register_check_asbitem.M++
  977. }
  978. }
  979. })
  980. },
  981. //滚动加载数据
  982. scrollFull() {
  983. this.dom = this.$refs['info'].bodyWrapper
  984. // console.log('this.dom', this.dom)
  985. this.dom.addEventListener('scroll', async () => {
  986. // // console.log('scrollTop',this.dom.scrollTop,'clientHeight',this.dom.clientHeight,'scrollHeight',this.dom.scrollHeight);
  987. if (this.dom.scrollTop + this.dom.clientHeight + 20 > this.dom.scrollHeight && !this.lazyLoading) {
  988. // 获取到的不是全部数据 当滚动到底部
  989. // console.log('scrollTop', this.dom.scrollTop, 'clientHeight', this.dom.clientHeight, 'scrollHeight', this.dom.scrollHeight);
  990. if ((Number(this.loadOpts.skipCount) + 1) * Number(this.loadOpts.maxResultCount) >= Number(this.loadOpts.totalCount)) {
  991. this.lazyLoading = false
  992. } else {
  993. this.lazyLoading = true
  994. await this.load()
  995. this.lazyLoading = false
  996. // this.dom.scrollTop = this.dom.scrollTop - 100
  997. }
  998. }
  999. })
  1000. },
  1001. close_dialogWin_upBaseInfo() {
  1002. this.upBaseInfo.visble = false
  1003. this.close_dialogWin_PatientRegisterEdit()
  1004. },
  1005. btnUpBaseInfo() {
  1006. let body = {
  1007. patientRegisterId: this.upBaseInfo.patientRegisterId,
  1008. // "patientName": "string",
  1009. // "mobileTelephone": "string",
  1010. // "idNo": "string"
  1011. }
  1012. body[this.upBaseInfo.colName] = this.upBaseInfo.value
  1013. postapi('/api/app/PatientRegister/UpdatePatientRegisterBaseInfoByPatientRegisterId', body).then(res => {
  1014. if (res.code > -1) {
  1015. this.close_dialogWin_upBaseInfo()
  1016. }
  1017. })
  1018. },
  1019. // 修改基本信息
  1020. fnUpBaseInfo(row, baseInfoType) {
  1021. this.dataTransOpts.tableS.patient_register.id = row.id
  1022. this.upBaseInfo.visble = true
  1023. this.upBaseInfo.patientRegisterId = row.id
  1024. this.upBaseInfo.colName = baseInfoType
  1025. switch (baseInfoType) {
  1026. case "idNo":
  1027. this.upBaseInfo.label = "新身份证号"
  1028. break;
  1029. case "mobileTelephone":
  1030. this.upBaseInfo.label = "新手机号"
  1031. break;
  1032. default:
  1033. this.upBaseInfo.label = "新姓名"
  1034. break;
  1035. }
  1036. this.upBaseInfo.value = row[baseInfoType]
  1037. },
  1038. //右击菜单
  1039. onCellRightClick(row, column) {
  1040. this.rClickRow = { ...row }; //右击的行记录
  1041. this.rClickColumn = { ...column }; //右击的列(预留)
  1042. // console.log(row, column.property);
  1043. },
  1044. onContextmenu(event) {
  1045. //// console.log('onContextmenu',event);
  1046. if (!this.rClickRow) return false;
  1047. let row = { ...this.rClickRow };
  1048. let items = [] //菜单项
  1049. if (checkPagePriv(this.pagePriv.privs, '修改姓名') && row.completeFlag != '0')
  1050. items.push({
  1051. label: "修改姓名",
  1052. onClick: () => {
  1053. this.fnUpBaseInfo(row, 'patientName');
  1054. },
  1055. })
  1056. if (checkPagePriv(this.pagePriv.privs, '修改手机号') && row.completeFlag != '0')
  1057. items.push({
  1058. label: "修改手机号",
  1059. onClick: () => {
  1060. this.fnUpBaseInfo(row, 'mobileTelephone');
  1061. },
  1062. })
  1063. if (checkPagePriv(this.pagePriv.privs, '修改身份证号') && row.completeFlag != '0')
  1064. items.push({
  1065. label: "修改身份证号",
  1066. onClick: () => {
  1067. this.fnUpBaseInfo(row, 'idNo');
  1068. },
  1069. })
  1070. if (checkPagePriv(this.pagePriv.privs, '发送检验申请') && row.completeFlag != '0')
  1071. items.push({
  1072. label: "发送检验申请",
  1073. onClick: () => {
  1074. this.lisRequest(row);
  1075. },
  1076. })
  1077. if (checkPagePriv(this.pagePriv.privs, '预览人员条码') && row.completeFlag != '0')
  1078. items.push({
  1079. label: "预览人员条码",
  1080. onClick: () => {
  1081. this.guidePrintPromise("0008", true, row);
  1082. },
  1083. })
  1084. if (checkPagePriv(this.pagePriv.privs, '预览检验条码') && row.completeFlag != '0')
  1085. items.push({
  1086. label: "预览检验条码",
  1087. onClick: () => {
  1088. this.lisPrint(row, "0002", true);
  1089. },
  1090. })
  1091. if (checkPagePriv(this.pagePriv.privs, '打印检验条码') && row.completeFlag != '0')
  1092. items.push({
  1093. label: "打印检验条码",
  1094. onClick: () => {
  1095. this.lisPrint(row, "0002", false);
  1096. },
  1097. })
  1098. if (checkPagePriv(this.pagePriv.privs, '预览Pacs条码') && row.completeFlag != '0')
  1099. items.push({
  1100. label: "预览Pacs条码",
  1101. onClick: () => {
  1102. this.pacsPrint(row, "0004", true);
  1103. },
  1104. })
  1105. if (checkPagePriv(this.pagePriv.privs, '打印Pacs条码') && row.completeFlag != '0')
  1106. items.push({
  1107. label: "打印Pacs条码",
  1108. onClick: () => {
  1109. this.pacsPrint(row, "0004", false);
  1110. },
  1111. })
  1112. if (checkPagePriv(this.pagePriv.privs, '导入检查结果') && row.completeFlag != '0')
  1113. items.push({
  1114. label: "导入检查结果",
  1115. onClick: () => {
  1116. this.importResult('pacs', row);
  1117. },
  1118. })
  1119. if (checkPagePriv(this.pagePriv.privs, '导入检验结果') && row.completeFlag != '0')
  1120. items.push({
  1121. label: "导入检验结果",
  1122. onClick: () => {
  1123. this.importResult('lis', row);
  1124. },
  1125. })
  1126. items.push({ label: "----------------", })
  1127. this.$contextmenu({
  1128. items,
  1129. event,
  1130. //x: event.clientX,
  1131. //y: event.clientY,
  1132. customClass: "custom-class",
  1133. zIndex: 3,
  1134. minWidth: 80,
  1135. });
  1136. this.rClickRow = null;
  1137. return false;
  1138. },
  1139. //批量更新分组按钮
  1140. btnGroupBatch() {
  1141. let customerOrgId = this.patientRegister.query.customerOrgId;
  1142. if (!customerOrgId) {
  1143. this.$message.warning({ showClose: true, message: "请选择单位" });
  1144. return;
  1145. }
  1146. //取消勾选,换成选择的方式 start
  1147. // this.multipleSelection = [];
  1148. // this.tableData.forEach((e) => {
  1149. // if (e.choosed) this.multipleSelection.push(e);
  1150. // });
  1151. //取消勾选,换成选择的方式 end
  1152. if (this.multipleSelection.length < 1) {
  1153. this.$message.info({ showClose: true, message: "请选择要操作的记录!" });
  1154. return;
  1155. }
  1156. this.dataTransOpts.plus.PatientRegisterEditGroupBatch++
  1157. this.dialogWin.PatientRegisterEditGroupBatch = true;
  1158. },
  1159. //批量更新项目
  1160. btnAsbBatch() {
  1161. let customerOrgId = this.patientRegister.query.customerOrgId;
  1162. if (!customerOrgId) {
  1163. this.$message.warning({ showClose: true, message: "请选择单位" });
  1164. return;
  1165. }
  1166. //取消勾选,换成选择的方式 start
  1167. // this.multipleSelection = [];
  1168. // this.tableData.forEach((e) => {
  1169. // if (e.choosed) this.multipleSelection.push(e);
  1170. // });
  1171. //取消勾选,换成选择的方式 end
  1172. if (this.multipleSelection.length < 1) {
  1173. this.$message.warning({ showClose: true, message: "请选择要操作的记录" })
  1174. return
  1175. }
  1176. this.dataTransOpts.plus.PatientRegisterEditItemBatch++ //如果放在弹窗显示后面,在首次加载子组件时,会触发两次数据处理
  1177. this.dialogWin.PatientRegisterEditItemBatch = true;
  1178. },
  1179. //检验申请
  1180. async lisRequest(row) {
  1181. let isPrintLisRequest = false;
  1182. let res = null;
  1183. if (row.completeFlag == '0') {
  1184. this.$message.info({ showClose: true, message: "预登记人员,不可执行此操作!" });
  1185. return;
  1186. }
  1187. try {
  1188. res = await postapi(`/api/app/lisrequest/setlisrequest?PatientRegisterId=${row.id}`);
  1189. // console.log(`/ api / app / lisrequest / setlisrequest ? PatientRegisterId = ${ prId }`,res);
  1190. } catch (error) {
  1191. return;
  1192. }
  1193. if (res.code > -1) {
  1194. isPrintLisRequest = true;
  1195. }
  1196. //重复申请,重打
  1197. if (res.code == -1 && res.message.indexOf("已申请") > -1) {
  1198. isPrintLisRequest = true;
  1199. }
  1200. if (!isPrintLisRequest) return;
  1201. try {
  1202. await this.$confirm("是否打印检验申请单?", "提示", {
  1203. confirmButtonText: "是",
  1204. cancelButtonText: "否",
  1205. type: "info",
  1206. showClose: false,
  1207. closeOnClickModal: false,
  1208. closeOnPressEscape: false,
  1209. });
  1210. } catch (error) {
  1211. return;
  1212. }
  1213. //打印检验申请单
  1214. this.lisPrint(row, "0003", false);
  1215. },
  1216. //检验条码打印 改造成 promise
  1217. lisPrint(row, ReportCode, isPreview) {
  1218. return new Promise((resolve, reject) => {
  1219. if (!this.$peisAPI) reject("此功能,需要在壳客户端才可运行!");
  1220. if (row.completeFlag || row.completeFlag == '0') reject("预登记人员,不可执行此操作!")
  1221. let token = window.sessionStorage.getItem("token");
  1222. let user = window.sessionStorage.getItem("user");
  1223. let toOutShell = {
  1224. ReportCode,
  1225. token,
  1226. IsMoreLabel: 'Y',
  1227. isBuildImage: 'N',
  1228. IsUploadPdf: 'N',
  1229. preViewCanPrint: "N",
  1230. Parameters: [
  1231. { Name: "printer", Value: user },
  1232. { Name: "hisLog", Value: "pic/hisLog.jpg" },
  1233. ],
  1234. BusinessCode: row.id
  1235. };
  1236. if (isPreview) {
  1237. this.$peisAPI.printPre(JSON.stringify(toOutShell))
  1238. .then(res => {
  1239. // console.log('this.$peisAPI.printPre', res)
  1240. if (JSON.parse(res).code > -1) {
  1241. resolve(JSON.parse(res))
  1242. } else {
  1243. reject(JSON.parse(res).message);
  1244. }
  1245. })
  1246. .catch((err) => {
  1247. reject(err);
  1248. });
  1249. } else {
  1250. this.$peisAPI.print(JSON.stringify(toOutShell))
  1251. .then(res => {
  1252. if (JSON.parse(res).code < 0) {
  1253. reject(JSON.parse(res).message);
  1254. } else {
  1255. return postapi("/api/app/lisrequest/updatelisrequestisprint", {
  1256. operateType: 1,
  1257. patientRegisterId: row.id,
  1258. });
  1259. }
  1260. })
  1261. .then(res => {
  1262. if (res && res.code < 0) {
  1263. reject(res.message);
  1264. } else {
  1265. resolve(res)
  1266. }
  1267. })
  1268. .catch((err) => {
  1269. reject(err);
  1270. });
  1271. }
  1272. })
  1273. },
  1274. //pacs条码打印
  1275. pacsPrint(row, ReportCode, isPreview) {
  1276. return new Promise((resolve, reject) => {
  1277. if (!this.$peisAPI) reject("此功能,需要在壳客户端才可运行!");
  1278. if (row.completeFlag || row.completeFlag == '0') reject("预登记人员,不可执行此操作!")
  1279. let token = window.sessionStorage.getItem("token");
  1280. let user = window.sessionStorage.getItem("user");
  1281. let toOutShell = {
  1282. ReportCode,
  1283. token,
  1284. IsMoreLabel: 'Y',
  1285. isBuildImage: 'N',
  1286. IsUploadPdf: 'N',
  1287. preViewCanPrint: "N",
  1288. Parameters: [
  1289. { Name: "printer", Value: user },
  1290. { Name: "hisLog", Value: "pic/hisLog.jpg" },
  1291. ],
  1292. BusinessCode: row.id
  1293. };
  1294. // console.log('this.$peisAPI.print', toOutShell)
  1295. if (isPreview) {
  1296. this.$peisAPI.printPre(JSON.stringify(toOutShell))
  1297. .then(res => {
  1298. if (JSON.parse(res).code > -1) {
  1299. resolve(res)
  1300. } else {
  1301. reject(JSON.parse(res).message);
  1302. }
  1303. })
  1304. .catch((err) => {
  1305. reject(err);
  1306. });
  1307. } else {
  1308. this.$peisAPI.print(JSON.stringify(toOutShell))
  1309. .then(res => {
  1310. if (JSON.parse(res).code > -1) {
  1311. resolve(res)
  1312. } else {
  1313. reject(JSON.parse(res).message);
  1314. }
  1315. })
  1316. .catch((err) => {
  1317. reject(err);
  1318. });
  1319. }
  1320. })
  1321. },
  1322. // 导入检查检验结果
  1323. importResult(checkType, row) {
  1324. let url = '/api/app/ImportLisResult/ImportResultByPatientRegisterId'
  1325. switch (checkType) {
  1326. case 'pacs':
  1327. url = '/api/app/ImportPacsResult/ImportResultByPatientRegisterId'
  1328. postapi(url, { patientRegisterId: row.id })
  1329. .then(res => {
  1330. if (res.code > -1) {
  1331. return postapi('/api/app/ImportElectrocardiogramResult/ImportElectrocardiogramResultByPatientRegisterId', { patientRegisterId: row.id })
  1332. }
  1333. })
  1334. .then(res => {
  1335. if (res && res.code > -1) {
  1336. this.$message.success({ showClose: true, message: '导入成功!' })
  1337. this.rowClick(row)
  1338. }
  1339. })
  1340. break;
  1341. default:
  1342. postapi(url, { patientRegisterId: row.id }).then(res => {
  1343. if (res.code > -1) {
  1344. this.$message.success({ showClose: true, message: '导入成功!' })
  1345. this.rowClick(row)
  1346. }
  1347. })
  1348. break;
  1349. }
  1350. },
  1351. //通用导出
  1352. btnExport(elId) {
  1353. // 获取HTML元素(表格)
  1354. // let table = document.getElementById(elId); //.cloneNode(true)
  1355. this.$nextTick(() => {
  1356. // let refsTable = this.$refs[elId] //.cloneNode(true) true
  1357. let table = document.getElementById(elId)
  1358. // console.log('table,refsTable', table, refsTable)
  1359. let tableData = table.innerHTML
  1360. let fileName = moment(new Date()).format('yyyyMMDDHHmmss')
  1361. let blob = new Blob([tableData], { type: "text/plain;charset=utf-8" });
  1362. FileSaver.saveAs(blob, fileName + '.xls');
  1363. // 导出图片
  1364. // 使用html2canvas将HTML元素转换为画布
  1365. // let cloneTable = table.cloneNode(true) //[elId]
  1366. html2canvas(table).then(canvas => {
  1367. // 创建一个a元素用于下载
  1368. const link = document.createElement('a');
  1369. link.href = canvas.toDataURL('image/jpeg');
  1370. link.download = fileName + '.jpg';
  1371. document.body.appendChild(link);
  1372. link.click();
  1373. //document.body.removeChild(link);
  1374. // // 创建一个PDF对象
  1375. // var pdf = new jsPDF();
  1376. // // 设置PDF的尺寸
  1377. // pdf.addImage(canvas.toDataURL('image/png'), 'PNG', 0, 0, canvas.width, canvas.height);
  1378. // // 导出PDF
  1379. // pdf.save('员工信息表.pdf');
  1380. });
  1381. })
  1382. },
  1383. btnDragColDesign() {
  1384. this.dragColDesign = deepCopy(this.dragCol)
  1385. this.dialogColSort = true
  1386. this.rowDrag()
  1387. },
  1388. btnDragColDesignOk() {
  1389. this.dragCol = deepCopy(this.dragColDesign)
  1390. this.dialogColSort = false
  1391. },
  1392. //拖拽
  1393. rowDrag() {
  1394. this.$nextTick(() => {
  1395. const el = document.querySelector("#elTable_dragCol tbody");
  1396. // console.log('el0', el)
  1397. const that = this;
  1398. Sortable.create(el, {
  1399. animation: 150, // ms, number 单位:ms,定义排序动画的时间
  1400. //拖拽结束
  1401. onEnd({ newIndex, oldIndex }) {
  1402. that.isshow = false;
  1403. const currRow = that.dragColDesign.splice(oldIndex, 1)[0];
  1404. that.dragColDesign.splice(newIndex, 0, currRow);
  1405. // console.log('el', el)
  1406. },
  1407. });
  1408. });
  1409. },
  1410. },
  1411. //监听事件
  1412. watch: {
  1413. "patientRegister.query.customerOrgId": {
  1414. // immediate: true, // 立即执行
  1415. // deep: true, // 深度监听复杂类型内变化
  1416. handler(newVal, oldVal) {
  1417. //// console.log('watch:patientRegister.query.customerOrgId:',newVal,oldVal)
  1418. // 单位变化时,清除当前列表信息
  1419. if (newVal && newVal != oldVal) {
  1420. this.tableData = []
  1421. this.dataTransOpts.tableM.register_check_asbitem = []
  1422. }
  1423. }
  1424. },
  1425. //触发查询事件
  1426. "patientRegister.query.times"(newVal, oldVal) {
  1427. if (newVal != oldVal) {
  1428. //alert('触发查询事件')
  1429. this.Query();
  1430. }
  1431. },
  1432. //新增后,触发赋值
  1433. // "patientRegister.patientRegisterRd.id"(newVal, oldVal) {
  1434. // if (newVal != oldVal) {
  1435. // //// console.log('patientRegister.patientRegisterRd.customerOrgId',this.patientRegister.patientRegisterRd.customerOrgId)
  1436. // objCopy(this.patientRegister.patientRegisterRd, this.form);
  1437. // }
  1438. // },
  1439. },
  1440. };
  1441. </script>
  1442. <style scoped>
  1443. @import "../../assets/css/global_input.css";
  1444. @import "../../assets/css/global_table.css";
  1445. @import "../../assets/css/global.css";
  1446. .box {
  1447. display: flex;
  1448. }
  1449. .listBtn {
  1450. margin-top: 5px;
  1451. text-align: center;
  1452. }
  1453. .btnClass {
  1454. width: 100px;
  1455. }
  1456. </style>