Elizabeth's proactive approach involves introducing urinal toilet attachment , an ingenious concept that optimizes space and functionality.

index.vue 18KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470
  1. <template>
  2. <div class="main-contain">
  3. <div class="position">
  4. <bread-crumb :crumbs='crumbs'></bread-crumb>
  5. </div>
  6. <div class="app-container">
  7. <div class="nameTitle">患者基本信息:</div>
  8. <div class="formMain">
  9. <el-form class="basicForm" :model="form" :rules="rules" ref="form" label-width="100px">
  10. <el-form-item label="结算类型:">
  11. <el-select v-model="form.settlementValue" placeholder="请选择">
  12. <el-option
  13. v-for="item in settlement"
  14. :key="item.value"
  15. :label="item.label"
  16. :value="item.value">
  17. </el-option>
  18. </el-select>
  19. </el-form-item>
  20. <el-form-item class="specialFormItem" label="医保卡号:">
  21. <el-input v-model="form.medicalInsuranceCard"></el-input>
  22. <el-button type="primary" @click="reading">读卡</el-button>
  23. </el-form-item>
  24. <el-form-item label="患者姓名:">
  25. <el-input v-model="form.name"></el-input>
  26. </el-form-item>
  27. <el-form-item label="性别:">
  28. <el-select v-model="form.sex" placeholder="请选择">
  29. <el-option
  30. v-for="item in sex"
  31. :key="item.value"
  32. :label="item.label"
  33. :value="item.value">
  34. </el-option>
  35. </el-select>
  36. </el-form-item>
  37. <el-form-item label="证件类型:">
  38. <el-select v-model="form.certificates" placeholder="请选择">
  39. <el-option
  40. v-for="item in certificates"
  41. :key="item.value"
  42. :label="item.label"
  43. :value="item.value">
  44. </el-option>
  45. </el-select>
  46. </el-form-item>
  47. <el-form-item label="医疗类别:">
  48. <el-select v-model="form.medicalCare" placeholder="请选择">
  49. <el-option
  50. v-for="item in medicalCare"
  51. :key="item.value"
  52. :label="item.label"
  53. :value="item.value">
  54. </el-option>
  55. </el-select>
  56. </el-form-item>
  57. <el-form-item label="出生日期:">
  58. <el-date-picker v-model="form.birthday" type="date" @change="getBirthday" placeholder="选择日期"></el-date-picker>
  59. </el-form-item>
  60. <el-form-item label="年龄:">
  61. <el-input v-model="form.age"></el-input>
  62. </el-form-item>
  63. <el-form-item label="证件号码:" required prop="idCard">
  64. <el-input v-model="form.idCard"></el-input>
  65. <!-- <div class="el-form-item__error" v-show="show">
  66. 请填写证件号码
  67. </div> -->
  68. </el-form-item>
  69. </el-form>
  70. </div>
  71. <div class="nameTitle">患者挂号信息:</div>
  72. <div class="formMain">
  73. <el-form class="basicForm" :model="form" :rules="rules" label-width="100px">
  74. <el-form-item label="挂号类型:" prop="register">
  75. <el-select v-model="form.register" placeholder="请选择">
  76. <el-option
  77. v-for="item in register"
  78. :key="item.value"
  79. :label="item.label"
  80. :value="item.value">
  81. </el-option>
  82. </el-select>
  83. </el-form-item>
  84. <el-form-item label="医生:" prop="doctor" >
  85. <el-select v-model="form.doctor" placeholder="请选择">
  86. <el-option
  87. v-for="item in doctorList"
  88. :key="item.admin_user_id"
  89. :label="item.user_name"
  90. :value="item.admin_user_id">
  91. </el-option>
  92. </el-select>
  93. </el-form-item>
  94. <el-form-item label="科室:" prop="department">
  95. <el-select v-model="form.department" placeholder="请选择">
  96. <el-option
  97. v-for="item in departmentList"
  98. :key="item.id"
  99. :label="item.name"
  100. :value="item.id">
  101. </el-option>
  102. </el-select>
  103. </el-form-item>
  104. <el-form-item>
  105. <el-checkbox v-model="form.costChecked">是否需要工本费</el-checkbox>
  106. </el-form-item>
  107. <el-form-item label="挂号费:">
  108. <el-input v-model.number="form.registrationFee"></el-input>
  109. </el-form-item>
  110. <el-form-item label="诊疗费:">
  111. <el-input v-model.number="form.medicalExpenses"></el-input>
  112. </el-form-item>
  113. <el-form-item label="工本费:">
  114. <el-input v-model.number="form.cost" :readonly="!form.costChecked"></el-input>
  115. </el-form-item>
  116. <el-form-item label="合计:">
  117. <el-input v-model.number="total" readonly></el-input>
  118. </el-form-item>
  119. <el-form-item>
  120. <!-- <el-input v-model="form.name"></el-input> -->
  121. </el-form-item>
  122. </el-form>
  123. <el-button style="float:right" @click="saveHisPatient('form')" type="primary">挂号</el-button>
  124. </div>
  125. </div>
  126. </div>
  127. </template>
  128. <script>
  129. import BreadCrumb from '@/xt_pages/components/bread-crumb'
  130. import { basename } from 'path'
  131. import { getAllDoctorList,saveHisPatient } from "@/api/project/project"
  132. const moment = require('moment')
  133. export default {
  134. components:{
  135. BreadCrumb
  136. },
  137. data(){
  138. return{
  139. crumbs: [
  140. { path: false, name: '门诊挂号' },
  141. { path: false, name: '门诊挂号' }
  142. ],
  143. form:{
  144. settlementValue: '',
  145. medicalInsuranceCard:'',
  146. name:'',
  147. sex:'',
  148. certificates:'',
  149. medicalCare:'',
  150. birthday:'',
  151. age:'',
  152. idCard:'',
  153. register:'',
  154. doctor:'',
  155. department:'',
  156. costChecked:false,
  157. registrationFee:'',
  158. medicalExpenses:'',
  159. cost:'',
  160. total: ''
  161. },
  162. settlement: [{
  163. value: 1,
  164. label: '医保'
  165. }, {
  166. value: 2,
  167. label: '自费'
  168. }],
  169. sex: [{
  170. value: 1,
  171. label: '男'
  172. }, {
  173. value: 2,
  174. label: '女'
  175. }],
  176. certificates: [{
  177. value: 1,
  178. label: '内地身份证'
  179. }, {
  180. value: 2,
  181. label: "社保卡"
  182. },{
  183. value: 3,
  184. label: "护照"
  185. },{
  186. value: 4,
  187. label: "军官证"
  188. },{
  189. value: 5,
  190. label: "台胞证"
  191. },{
  192. value: 6,
  193. label: "港澳地区身份证"
  194. }],
  195. medicalCare: [{
  196. value: 1,
  197. label: '职工基本医疗保险'
  198. }, {
  199. value: 2,
  200. label: "公务员医疗补助"
  201. },{
  202. value: 3,
  203. label: "大额医疗费用补助"
  204. },{
  205. value: 4,
  206. label: "离休人员医疗"
  207. },{
  208. value: 5,
  209. label: "城乡居民基本医疗保险"
  210. },{
  211. value: 6,
  212. label: "城乡居民大病医疗保险"
  213. },
  214. {
  215. value: 7,
  216. label: "生育保险"
  217. }],
  218. register: [{
  219. value: 1,
  220. label: '普通'
  221. }, {
  222. value: 2,
  223. label: "主治"
  224. },{
  225. value: 3,
  226. label: "主任"
  227. },{
  228. value: 4,
  229. label: "免收诊金"
  230. },{
  231. value: 5,
  232. label: "专家"
  233. }],
  234. baseinfo:{
  235. certno:"440221195903290027",
  236. psn_no:"0221201972",
  237. gend:"2",
  238. brdy:"1960-03-29",
  239. naty:"01",
  240. psn_cert_type:"01",
  241. psn_name:"杨美英",
  242. age:60.7
  243. },
  244. rules: {
  245. idCard: [{ required: true, message: '请填写项目名称', trigger: 'blur' }],
  246. register: [{ required: true, message: '请选择挂号类型' , trigger: 'blur' }],
  247. doctor: [{ required: true, message: '请选择医生' , trigger: 'blur' }],
  248. department: [{ required: true, message: '请填写科室', trigger: 'blur' }],
  249. },
  250. doctorList:[],
  251. departmentList:[],
  252. check:0,
  253. show:false
  254. }
  255. },
  256. computed:{
  257. total(){
  258. if(this.form.registrationFee || this.form.medicalExpenses || this.form.cost){
  259. return parseFloat(this.form.registrationFee ? this.form.registrationFee : 0) + parseFloat(this.form.medicalExpenses ? this.form.medicalExpenses : 0) + parseFloat(this.form.cost ? this.form.cost : 0)
  260. }
  261. }
  262. },
  263. methods:{
  264. reading(medicalInsuranceCard){
  265. this.form.name = this.baseinfo.psn_name
  266. this.form.sex = parseInt(this.baseinfo.gend)
  267. this.form.psn_cert_type = this.baseinfo.certificates
  268. this.form.birthday = this.baseinfo.brdy
  269. this.form.age = parseInt(this.baseinfo.age)
  270. this.form.idCard = this.baseinfo.certno
  271. this.form.certificates = 1
  272. },
  273. getBirthday(date){
  274. console.log(date)
  275. let curTime = moment(new Date(date)).format('YYYY-MM-DD')
  276. console.log("curTime22222",curTime)
  277. console.log(this.jsGetAge(curTime))
  278. this.form.age = this.jsGetAge(curTime)
  279. },
  280. jsGetAge(strBirthday) { //传入形式yyyy-MM-dd
  281. //strBirthday = util.formatTime(strBirthday);转换成yyyy-MM-dd形式
  282. var returnAge
  283. var strBirthdayArr = strBirthday.split('-')
  284. var birthYear = strBirthdayArr[0]
  285. var birthMonth = strBirthdayArr[1]
  286. var birthDay = strBirthdayArr[2]
  287. var d = new Date()
  288. var nowYear = d.getFullYear()
  289. var nowMonth = d.getMonth() + 1
  290. var nowDay = d.getDate()
  291. if (nowYear == birthYear) {
  292. returnAge = 0 //同年 则为0岁
  293. } else {
  294. var ageDiff = nowYear - birthYear //年之差
  295. if (ageDiff > 0) {
  296. if (nowMonth == birthMonth) {
  297. var dayDiff = nowDay - birthDay //日之差
  298. if (dayDiff < 0) {
  299. returnAge = ageDiff - 1
  300. } else {
  301. returnAge = ageDiff
  302. }
  303. } else {
  304. var monthDiff = nowMonth - birthMonth //月之差
  305. if (monthDiff < 0) {
  306. returnAge = ageDiff - 1
  307. } else {
  308. returnAge = ageDiff
  309. }
  310. }
  311. } else {
  312. returnAge = -1 //返回-1 表示出生日期输入错误 晚于今天
  313. }
  314. }
  315. return returnAge //返回周岁年龄
  316. },
  317. getForm(){
  318. this.form.total = this.total
  319. if(localStorage.getItem("temp")){
  320. let a = JSON.parse(localStorage.getItem("temp"))
  321. // let arr = []
  322. this.form.create_time = new Date(new Date().toLocaleDateString()).getTime() / 1000
  323. this.form.org_id = this.$store.getters.xt_user.org_id
  324. a.push(this.form)
  325. console.log(111,a)
  326. localStorage.setItem("temp",JSON.stringify(a));
  327. Object.keys(this.form).forEach((key)=>{
  328. this.form[key] = ''
  329. })
  330. this.$message({message: '添加成功',type: 'success'});
  331. }else {
  332. let arr = []
  333. this.form.create_time = new Date(new Date().toLocaleDateString()).getTime() / 1000
  334. this.form.org_id = this.$store.getters.xt_user.org_id
  335. arr.push(this.form)
  336. localStorage.setItem("temp",JSON.stringify(arr));
  337. Object.keys(this.form).forEach((key)=>{
  338. this.form[key] = ''
  339. })
  340. this.$message({message: '添加成功',type: 'success'});
  341. }
  342. },
  343. getAllDoctorList(){
  344. getAllDoctorList().then(response=>{
  345. if(response.data.state == 1){
  346. var doctor = response.data.data.doctor
  347. this.doctorList = doctor
  348. var department = response.data.data.department
  349. console.log("department",department)
  350. this.departmentList = department
  351. }
  352. })
  353. },
  354. saveHisPatient(formName){
  355. this.$refs[formName].validate((valid)=>{
  356. if(valid){
  357. if(this.form.costChecked == true){
  358. this.check = 1
  359. }
  360. if(this.form.costChecked == false){
  361. this.check = 2
  362. }
  363. if(this.form.idCard == ""){
  364. this.show = true
  365. }
  366. var params = {
  367. settlementValue:this.form.settlementValue,
  368. medicalInsuranceCard:this.form.medicalInsuranceCard,
  369. name:this.form.name,
  370. sex:this.form.sex,
  371. certificates:this.form.certificates,
  372. medicalCare:this.form.medicalCare,
  373. birthDay:moment(new Date(this.form.birthday)).format('YYYY-MM-DD'),
  374. age:parseInt(this.form.age),
  375. idCard:this.form.idCard,
  376. register:this.form.register,
  377. doctor:this.form.doctor,
  378. department:this.form.department,
  379. costChecked:this.check,
  380. registrationFee:this.form.registrationFee,
  381. medicalExpenses:this.form.medicalExpenses,
  382. cost:this.form.cost,
  383. total:this.total
  384. }
  385. console.log("params",params)
  386. saveHisPatient(params).then(response=>{
  387. if(response.data.state == 1){
  388. var patient = response.data.data.patient
  389. console.log("patient",patient)
  390. this.$message.success("保存成功")
  391. this.form.settlementValue = "",
  392. this.form.medicalInsuranceCard = "",
  393. this.form.name = "",
  394. this.form.sex="",
  395. this.form.certificates="",
  396. this.form.medicalCare = "",
  397. this.form.birthday ="",
  398. this.form.age ="",
  399. this.form.idCard = "",
  400. this.form.register = "",
  401. this.form.doctor = "",
  402. this.form.department = "",
  403. this.form.costChecked = false,
  404. this.form.registrationFee = "",
  405. this.form.medicalExpenses = "",
  406. this.form.cost="",
  407. this.form.total= ""
  408. }
  409. })
  410. }
  411. })
  412. },
  413. },
  414. created(){
  415. //获取当前机构有人员信息
  416. this.getAllDoctorList()
  417. }
  418. }
  419. </script>
  420. <style lang="scss" scoped>
  421. .nameTitle{
  422. font-weight: bold;
  423. font-size: 16px;
  424. }
  425. .formMain{
  426. // padding: 10px 90px;
  427. width:80%;
  428. margin: 0 auto;
  429. }
  430. .basicForm{
  431. display: flex;
  432. flex-wrap: wrap;
  433. justify-content: space-between;
  434. .el-form-item{
  435. width: 260px;
  436. }
  437. .specialFormItem{
  438. width:625px;
  439. .el-input{
  440. min-width: 150px;
  441. }
  442. }
  443. .el-select{
  444. width: 180px;
  445. }
  446. .el-input{
  447. width: 180px;
  448. }
  449. }
  450. .el-form-item__error{
  451. color: #F56C6C;
  452. font-size: 12px;
  453. line-height: 1;
  454. padding-top: 4px;
  455. position: absolute;
  456. top: 100%;
  457. left: 0;
  458. }
  459. </style>