Falloutbedprint.vue 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. <template>
  2. <div style="border:1px solid gainsboro ;padding:10px">
  3. <div style="position: relative; left: 400px;width: 250px;margin: 20px 0;">
  4. <!-- <el-button type="primary">主要按钮</el-button> -->
  5. <el-button type="primary" style="" @click="bianji">
  6. 编辑
  7. </el-button>
  8. <!-- <el-button type="danger" style="" @click="">
  9. 删除
  10. </el-button> -->
  11. <el-button type="success" style="" @click="printThisPage">
  12. 打印
  13. </el-button>
  14. </div>
  15. <div id="print_content">
  16. <div class="print_page_main_content">
  17. <div class="content">
  18. <div style="text-align: center;font-size: 20px;">{{ orgname }}</div>
  19. <h2 style="text-align: center;">人脸识别知情同意书</h2>
  20. <!-- <div style="display: inline-block;border: 1px solid black;width: 20px;height: 20px;"></div> -->
  21. <div style="text-align: right;">
  22. 透析号:{{ patient.dialysis_no }}
  23. </div>
  24. <div style="display: flex;margin: 10px 0;">
  25. <div style="flex:1">姓名:{{ patient.name }}</div>
  26. <div style="flex:1">性别:
  27. <span v-if="patient.gender == 1">男</span>
  28. <span v-if="patient.gender == 2">女</span>
  29. </div>
  30. <div style="flex:1">年龄:{{ getAge(patient) }}</div>
  31. <div style="flex:1">住院(门诊)号:{{ patient.admission_number }}</div>
  32. </div>
  33. <div style="border-bottom: 1px solid gainsboro;">
  34. 诊断:{{ patient.diagnose }}
  35. </div>
  36. <div v-html="content"></div>
  37. <!-- <p style="font-size: 17px;font-weight: bold;">请您仔细阅读以下内容,并自主决定是否使用人脸识别功能:</p>
  38. <p style="display: inline;padding: 0;">一、登录平台时,您已被提示(无论是否以界面弹窗或其他方式)注意仔细阅读本知情同意书。</p>
  39. <div style="display: flex; margin: 10px 0;">
  40. <p style="display: inline;padding: 0;">二、</p>
  41. <p style="display: inline;padding: 0;">
  42. 平台已提供账号密码和人脸识别等多种验证登录方式。<span style="font-weight: bold;">人脸识别不是唯一的身份识别方式或验证登录方式,</span>
  43. 其系为完成身份识别或快捷登录而设置,如您选择使用该功能,则需要提供您本人的人脸识别信息,否则无法实现身份识别或验证登录。
  44. <span style="font-weight: bold;">您可以自主决定是否采用人脸识别进行身份识别或验证登录。</span>
  45. </p>
  46. </div>
  47. <div style="display: flex; margin: 10px 0;">
  48. <p style="display: inline;padding: 0;">三、</p>
  49. <p style="display: inline;padding: 0;">
  50. 您的人脸识别信息将仅用于身份识别、验证登录之目的,不会用于任何其他目的。您的人脸识别信息将由医院负责处理
  51. (含收集、存储、使用、删除等),医院将依法保护您的个人信息安全。
  52. </p>
  53. </div>
  54. <p style="padding: 0;">四、知情同意 </p>
  55. <p style="font-size: 17px;font-weight: bold;">
  56. 您签署知情同意书(包括通过电子方式点击同意),或您直接选择人脸识别进行身份识别或验证登录平台系统的,即表明您已明确同意采用人脸识别进行身份识别或验证登录。
  57. </p>
  58. <p style="padding: 0;">
  59. □本人已仔细阅读了知情同意书,并同意采用人脸识别方式进行身份识别或验证登录,同意医院基于载明目的处理人脸识别信息。
  60. </p>
  61. <p style="padding: 20px;display:flex;justify-content: space-between;align-items: center;">
  62. <span>个人签署(适用于纸质版):______________</span>
  63. </p>
  64. <p style="padding: 20px;display:flex;justify-content: space-between;align-items: center;">
  65. <span>父母或监护人签署:______________</span>
  66. </p>
  67. <p> &nbsp;&nbsp;&nbsp;&nbsp;年&nbsp;&nbsp;&nbsp;&nbsp;月&nbsp;&nbsp;&nbsp;&nbsp;日</p> -->
  68. </div>
  69. </div>
  70. </div>
  71. <!-- 编辑 -->
  72. <el-dialog
  73. title="提示"
  74. :visible.sync="dialogVisible"
  75. width="60%"
  76. >
  77. <div>
  78. <h2 style="text-align: center;">人脸识别知情同意书</h2>
  79. <div style="text-align: right;">
  80. 透析号:{{ patient.dialysis_no }}
  81. </div>
  82. <div style="display: flex;margin: 10px 0;">
  83. <div style="flex:1">姓名:{{ patient.name }}</div>
  84. <div style="flex:1">性别:
  85. <span v-if="patient.gender == 1">男</span>
  86. <span v-if="patient.gender == 2">女</span>
  87. </div>
  88. <div style="flex:1">年龄:
  89. {{ getAge(patient) }}
  90. </div>
  91. <div style="flex:1">住院(门诊)号:
  92. {{ patient.admission_number }}
  93. </div>
  94. </div>
  95. <div style="border-bottom: 1px solid gainsboro;">
  96. 诊断:
  97. {{ patient.diagnose }}
  98. </div>
  99. <keep-alive>
  100. <editor ref="editor"
  101. id="editor"
  102. style="width: 100%"
  103. v-bind:r_content="content">
  104. </editor>
  105. </keep-alive>
  106. </div>
  107. <span slot="footer" class="dialog-footer">
  108. <el-button @click="dialogVisible = false">取 消</el-button>
  109. <el-button type="primary" @click="saveFallOutBedPrint">保 存</el-button>
  110. </span>
  111. </el-dialog>
  112. </div>
  113. </template>
  114. <script>
  115. import print from "print-js";
  116. import Editor from '@/components/Editor'
  117. import { getPatientDetailInformedconsent,saveFallOutBedPrint } from '@/api/patient'
  118. import { jsGetAge, uParseTime } from "@/utils/tools";
  119. const content=`<p style="font-size: 17px;font-weight: bold;padding-left: 2em;">请您仔细阅读以下内容,并自主决定是否使用人脸识别功能:</p>
  120. <p style='position: relative;padding-left: 2em;margin-top: 10px;margin-bottom: 4px '>
  121. <span style='position: absolute;top: 0;left: 0;'>一、</span>登录平台时,您已被提示(无论是否以界面弹窗或其他方式)注意仔细阅读本知情同意书。
  122. </p>
  123. <p style='position: relative;padding-left: 2em;margin-top: 10px;margin-bottom: 4px'>
  124. <span style='position: absolute;top: 0;left: 0;'>二、</span> 平台已提供账号密码和人脸识别等多种验证登录方式。<span style="font-weight: bold;">人脸识别不是唯一的身份识别方式或验证登录方式,</span>其系为完成身份识别或快捷登录而设置,如您选择使用该功能,则需要提供您本人的人脸识别信息,否则无法实现身份识别或验证登录。<span style="font-weight: bold;">您可以自主决定是否采用人脸识别进行身份识别或验证登录。</span>
  125. </p>
  126. <p style='position: relative;padding-left: 2em;margin-top: 10px;margin-bottom: 4px'>
  127. <span style='position: absolute;top: 0;left: 0;'>三、</span>您的人脸识别信息将仅用于身份识别、验证登录之目的,不会用于任何其他目的。您的人脸识别信息将由医院负责处理(含收集、存储、使用、删除等),医院将依法保护您的个人信息安全。
  128. </p>
  129. <p style='position: relative;padding-left: 2em;margin-top: 10px;margin-bottom: 4px'>
  130. <span style='position: absolute;top: 0;left: 0;'>四、</span>知情同意
  131. </p>
  132. <p style="font-size: 17px;font-weight: bold;padding-left: 2em;">您签署知情同意书(包括通过电子方式点击同意),或您直接选择人脸识别进行身份识别或验证登录平台系统的,即表明您已明确同意采用人脸识别进行身份识别或验证登录。</p>
  133. <p style='position: relative;padding-left: 2em;margin-top: 10px;margin-bottom: 4px'><span style='display:inline-block;width:15px;height:15px;border:1px solid black;'></span>本人已仔细阅读了知情同意书,并同意采用人脸识别方式进行身份识别或验证登录,同意医院基于载明目的处理人脸识别信息。</p>
  134. <p style='position: relative;padding-left: 2em;margin-top: 10px;margin-bottom: 4px'>1.您已阅读并理解有关血液透析的相关信息。</p>
  135. <p style='position: relative;padding-left: 2em;margin-top: 10px;margin-bottom: 4px'>2.医生对以上问题已经向您作了充分的解释。</p>
  136. <p style='position: relative;padding-left: 2em;margin-top: 10px;margin-bottom: 4px'>3.您授权并同意医生为患者施行血液透析治疗</p>
  137. <p style="padding:10px 20px;display:flex;justify-content: space-between;align-items: center;">
  138. <span>个人签署(适用于纸质版):______________</span>
  139. </p>
  140. <p style="padding:10px 20px;display:flex;justify-content: space-between;align-items: center;">
  141. <span>父母或监护人签署:______________</span>
  142. </p>
  143. <p style="padding:0 20px;display:flex;justify-content: space-between;align-items: center;">
  144. <span>_______年____月____日</span>
  145. </p>`
  146. export default{
  147. props: {
  148. patient_id: {
  149. type: Number,
  150. },
  151. listPrint:{
  152. type:Object,
  153. }
  154. },
  155. components:{
  156. Editor
  157. },
  158. data(){
  159. return{
  160. patient:{},
  161. content:content,
  162. dialogVisible:false,
  163. orgname:''
  164. }
  165. },
  166. created(){
  167. this.orgname = this.$store.getters.xt_user.org.org_name;
  168. if(this.listPrint!=null&& this.listPrint.id >0){
  169. this.content =""
  170. this.content = this.listPrint.content
  171. }
  172. this.getlist()
  173. },
  174. methods:{
  175. getlist(){
  176. getPatientDetailInformedconsent(this.patient_id).then(response=>{
  177. if(response.data.state == 1){
  178. var patient = response.data.data.patients
  179. console.log("patinet",patient)
  180. this.patient =patient
  181. }
  182. })
  183. },
  184. printThisPage(){
  185. const style = '@media print {.content p{font-size: 16px;font-family: 新宋体; padding-left: 20px; margin-bottom: 5px;}}'
  186. printJS({
  187. printable: 'print_content',
  188. type: 'html',
  189. documentTitle: ' ',
  190. style: style,
  191. scanStyles: false
  192. })
  193. },
  194. getAge: function(val) {
  195. if (val.id_card_no == undefined) {
  196. return false
  197. }
  198. var thisLen = val.id_card_no.length
  199. var birth = ''
  200. if (thisLen == 15) {
  201. birth = '19' + val.id_card_no.substr(6, 6)
  202. } else {
  203. birth = val.id_card_no.substr(6, 8)
  204. }
  205. var birthtwo =
  206. birth.substr(0, 4) +
  207. '-' +
  208. birth.substr(4, 2) +
  209. '-' +
  210. birth.substr(6, 2)
  211. var age = jsGetAge(birthtwo, '-')
  212. return age
  213. },
  214. bianji(){
  215. this.dialogVisible =true
  216. },
  217. show(val){
  218. if(val!=null){
  219. console.log("valw233223",val)
  220. if(val.content!=""){
  221. this.content = ""
  222. this.content = val.content
  223. }
  224. }
  225. },
  226. saveFallOutBedPrint(){
  227. var params = {
  228. patient_id:this.patient_id,
  229. content:this.$refs.editor.content,
  230. }
  231. console.log("paramswoowow",params)
  232. saveFallOutBedPrint(params).then(response=>{
  233. if(response.data.state ==1){
  234. var list = response.data.data.list
  235. this.$message.success("保存成功!")
  236. this.$emit("getFallOutBedPrintList","");
  237. this.dialogVisible = false
  238. }
  239. })
  240. }
  241. }
  242. }
  243. </script>
  244. <style lang="scss" scoped>
  245. .print_page_main_content {
  246. background-color: white;
  247. width: 100%;
  248. padding: 0 0 0 0;
  249. page-break-after: always;
  250. }
  251. *{
  252. // margin: 0;
  253. // padding: 0;
  254. border: 0;
  255. }
  256. .content{
  257. p{
  258. font-size: 16px;
  259. font-family: '新宋体';
  260. line-height: 22px;
  261. padding-left: 20px;
  262. margin-bottom: 5px;
  263. text-align: justify;
  264. }
  265. }
  266. input[type="checkbox"]{
  267. box-sizing: border-box;
  268. /* padding: 0; */
  269. -webkit-appearance: checkbox;
  270. }
  271. .check-box{
  272. display: block;
  273. }
  274. .check-box::before{
  275. display: inline-block;
  276. content: '';
  277. width: 15px;
  278. height: 15px;
  279. border: 1px solid black;
  280. }
  281. </style>