vascularAccessDetail.vue 15KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426
  1. <template>
  2. <div class="patient-container">
  3. <patient-sidebar :id="patientID" defaultActive="1-6" v-on:tran-patient="onTranPatient"></patient-sidebar>
  4. <div class="patient-app-container advice-container app-container">
  5. <div style="display:flex;justify-content: space-between;align-items: center;margin-bottom: 12px;">
  6. <span style="font-weight:bold;">通路详情</span>
  7. <el-button size="medium" type="primary" @click="dialogVisible =true" style="margin-left:800px" >新增</el-button>
  8. </div>
  9. <div class="cell clearfix">
  10. <span>启用日期:{{getTime(start_time,"{y}-{m}-{d}")}} &nbsp; 血管通路类型:{{blood_access_part_opera_id}}</span>
  11. </div>
  12. <el-table :data="tableData" border style="width:100%" >
  13. <el-table-column prop="start_time" label="日期" width="150" align="center">
  14. <template slot-scope="scope">
  15. <span>{{getTime(scope.row.start_time,"{y}-{m}-{d}")}}</span>
  16. </template>
  17. </el-table-column>
  18. <el-table-column prop="blood_access_part_opera_id" label="项目" align="center" width="200">
  19. <template slot-scope="scope">
  20. <span>{{scope.row.blood_project}}</span>
  21. </template>
  22. </el-table-column>
  23. <el-table-column prop="inflow_pass" label="结果" align="center">
  24. <template slot-scope="scope">
  25. <span>{{scope.row.blood_result}}</span>
  26. </template>
  27. </el-table-column>
  28. <el-table-column prop="date" label="处理" width="120" align="center">
  29. <template slot-scope="scope">
  30. <span>{{scope.row.blood_dealwith}}</span>
  31. </template>
  32. </el-table-column>
  33. <el-table-column prop="date" label="评估人" align="center">
  34. <template slot-scope="scope">
  35. {{getDoctor(scope.row.creator)}}
  36. </template>
  37. </el-table-column>
  38. <el-table-column prop="date" label="操作" width="140" align="center">
  39. <template slot-scope="scope">
  40. <el-tooltip class="item" effect="dark" content="编辑" placement="top">
  41. <el-button
  42. type="primary"
  43. size="small"
  44. icon="el-icon-edit-outline"
  45. @click="handleUpdateAdviceTemplate(scope.row.id)"
  46. >
  47. </el-button>
  48. </el-tooltip>
  49. <el-tooltip class="item" effect="dark" content="删除" placement="top">
  50. <el-button
  51. size="small"
  52. type="danger"
  53. icon="el-icon-delete"
  54. @click="handleDeleteAdviceTemplate(scope.row.id, scope.$index)"
  55. >
  56. </el-button>
  57. </el-tooltip>
  58. </template>
  59. </el-table-column>
  60. </el-table>
  61. <el-pagination
  62. @size-change="handleSizeChange"
  63. @current-change="handleCurrentChange"
  64. :page-sizes="[10,20,50,100]"
  65. :page-size="10"
  66. background
  67. style="margin-top:20px;"
  68. align="right"
  69. layout="total, sizes, prev, pager, next, jumper"
  70. :total="total"></el-pagination>
  71. <el-dialog
  72. title="新增通路评估"
  73. :visible.sync="dialogVisible"
  74. width="60%"
  75. center>
  76. <el-form label-width="120px" :model="form" ref="form" :rules="rules" >
  77. <el-row :gutter="24">
  78. <el-col :span="8">
  79. <el-form-item label="建立日期:" :required="true" prop="start_time">
  80. <el-date-picker
  81. type="datetime"
  82. format="yyyy-MM-dd"
  83. value-format="yyyy-MM-dd"
  84. placeholder="选择时间"
  85. v-model="form.start_time"
  86. style="width:150px">
  87. </el-date-picker>
  88. </el-form-item>
  89. </el-col>
  90. <el-col :span="8">
  91. <el-form-item label="评估人:" :required="true" prop="creator">
  92. <el-select v-model="form.creator" placeholder="请选择" style="width:150px">
  93. <el-option
  94. v-for="item in doctorList"
  95. :key="item.admin_user_id"
  96. :label="item.user_name"
  97. :value="item.admin_user_id"
  98. >
  99. </el-option>
  100. </el-select>
  101. </el-form-item>
  102. </el-col>
  103. </el-row>
  104. <el-row>
  105. <el-col>
  106. <el-form-item label="项目:">
  107. <el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="form.blood_project"></el-input>
  108. </el-form-item>
  109. </el-col>
  110. </el-row>
  111. <el-row>
  112. <el-col>
  113. <el-form-item label="结果:">
  114. <el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="form.blood_result"></el-input>
  115. </el-form-item>
  116. </el-col>
  117. </el-row>
  118. <el-row>
  119. <el-col>
  120. <el-form-item label="处理:">
  121. <el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="form.blood_dealwith"></el-input>
  122. </el-form-item>
  123. </el-col>
  124. </el-row>
  125. </el-form>
  126. <span slot="footer" class="dialog-footer">
  127. <el-button @click="dialogVisible = false">取 消</el-button>
  128. <el-button type="primary" @click="savePasswayAssessment('form')">保存</el-button>
  129. </span>
  130. </el-dialog>
  131. <el-dialog
  132. title="编辑通路评估"
  133. :visible.sync="editDialogVisible"
  134. width="60%"
  135. center>
  136. <el-form label-width="120px" :model="form" ref="form" :rules="rules" >
  137. <el-row :gutter="24">
  138. <el-col :span="8">
  139. <el-form-item label="建立日期:" :required="true" prop="start_time">
  140. <el-date-picker
  141. type="datetime"
  142. format="yyyy-MM-dd"
  143. value-format="yyyy-MM-dd"
  144. placeholder="选择时间"
  145. v-model="form.start_time"
  146. style="width:150px">
  147. </el-date-picker>
  148. </el-form-item>
  149. </el-col>
  150. <el-col :span="8">
  151. <el-form-item label="评估人:" :required="true" prop="creator">
  152. <el-select v-model="form.creator" placeholder="请选择" style="width:150px">
  153. <el-option
  154. v-for="item in doctorList"
  155. :key="item.admin_user_id"
  156. :label="item.user_name"
  157. :value="item.admin_user_id"
  158. >
  159. </el-option>
  160. </el-select>
  161. </el-form-item>
  162. </el-col>
  163. </el-row>
  164. <el-row>
  165. <el-col>
  166. <el-form-item label="项目:">
  167. <el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="form.blood_project"></el-input>
  168. </el-form-item>
  169. </el-col>
  170. </el-row>
  171. <el-row>
  172. <el-col>
  173. <el-form-item label="结果:">
  174. <el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="form.blood_result"></el-input>
  175. </el-form-item>
  176. </el-col>
  177. </el-row>
  178. <el-row>
  179. <el-col>
  180. <el-form-item label="处理:">
  181. <el-input type="textarea" :rows="2" placeholder="请输入内容" v-model="form.blood_dealwith"></el-input>
  182. </el-form-item>
  183. </el-col>
  184. </el-row>
  185. </el-form>
  186. <span slot="footer" class="dialog-footer">
  187. <el-button @click="editDialogVisible = false">取 消</el-button>
  188. <el-button type="primary" @click="updatePasswayAssessment('form')">保存</el-button>
  189. </span>
  190. </el-dialog>
  191. </div>
  192. </div>
  193. </template>
  194. <script>
  195. const moment = require('moment')
  196. import PatientSidebar from './components/PatientSidebar'
  197. import {getVascularAccessByDetail,savePasswayAssessment,getAllPassWayAssessmentList,getPassWayAssessmentById,updatePasswayAssessment,DeletePassWayAssessMent} from '@/api/patient'
  198. import { uParseTime } from '@/utils/tools'
  199. import { getDataConfig } from '@/utils/data'
  200. export default {
  201. name: 'doctorAdvice',
  202. components: {
  203. PatientSidebar,
  204. },
  205. data() {
  206. return {
  207. tableData: [],
  208. nowtime: moment(new Date()).format('YYYY-MM-DD'),
  209. page: 1,
  210. limit: 10,
  211. total: 0,
  212. rules: {
  213. start_time: [{ required: true, message: '请输入建立日期' }],
  214. creator: [{ required: true, message: '请选择评估人' }],
  215. },
  216. dialogVisible:false,
  217. editDialogVisible:false,
  218. form:{
  219. id:0,
  220. start_time:moment(new Date()).format('YYYY-MM-DD'),
  221. creator:this.$store.getters.xt_user.user.id,
  222. blood_project:"",
  223. blood_result:"",
  224. blood_dealwith:"",
  225. },
  226. doctorList:[],
  227. start_time:"",
  228. blood_access_part_opera_id:"",
  229. parent_id:"",
  230. patientID:""
  231. }
  232. },
  233. methods: {
  234. clickuseradvicecell(row, column, cell, event) {
  235. },
  236. onTranPatient: function(tranPatient) {
  237. this.currentPatient = tranPatient
  238. },
  239. handleSizeChange(limit) {
  240. this.limit = limit
  241. this.getlist()
  242. },
  243. handleCurrentChange(page) {
  244. this.page = page
  245. this.getlist()
  246. },
  247. getTime(value, temp) {
  248. if (value != undefined) {
  249. return uParseTime(value, temp);
  250. }
  251. return "";
  252. },
  253. getVascularAccessByDetail(id){
  254. getVascularAccessByDetail(id).then(response=>{
  255. if(response.data.state ==1){
  256. var accessDetail = response.data.data.accessDetail
  257. console.log("accessDetail",accessDetail)
  258. this.start_time = accessDetail.start_time
  259. this.blood_access_part_opera_id = accessDetail.blood_access_part_opera_id
  260. var doctor = response.data.data.doctor
  261. console.log("意思",doctor)
  262. this.doctorList = doctor
  263. }
  264. })
  265. },
  266. getDoctor(id){
  267. var name = ""
  268. for(let i=0;i<this.doctorList.length;i++){
  269. if(id == this.doctorList[i].admin_user_id){
  270. name = this.doctorList[i].user_name
  271. }
  272. }
  273. return name
  274. },
  275. handleDeleteAdviceTemplate(id,index){
  276. this.$confirm("确认删除吗?", "删除", {
  277. confirmButtonText: "确 定",
  278. cancelButtonText: "取 消",
  279. type: "warning"
  280. })
  281. .then(() => {
  282. DeletePassWayAssessMent(id).then(response => {
  283. if(response.data.state == 1){
  284. var msg = response.data.data.msg
  285. this.tableData.splice(index, 1);
  286. this.$message.success("删除成功!")
  287. }
  288. });
  289. })
  290. .catch(() => {});
  291. },
  292. savePasswayAssessment(formName){
  293. this.$refs[formName].validate((valid)=>{
  294. if(valid){
  295. var params = {
  296. start_time:this.form.start_time,
  297. creator:this.form.creator,
  298. blood_project:this.form.blood_project,
  299. blood_result:this.form.blood_result,
  300. blood_dealwith:this.form.blood_dealwith,
  301. patient_id:this.patientID,
  302. parent_id:this.parent_id,
  303. }
  304. console.log("parasm",params)
  305. savePasswayAssessment(params).then(response=>{
  306. if(response.data.state == 1){
  307. var assessment = response.data.data.assessment
  308. console.log("assessment",assessment)
  309. this.form.blood_project = ""
  310. this.form.blood_result = ""
  311. this.form.blood_dealwith = ""
  312. this.dialogVisible = false
  313. this.$message.success("保存成功")
  314. this.getlist()
  315. }
  316. })
  317. }
  318. })
  319. },
  320. getlist(){
  321. const params = {
  322. parent_id:this.parent_id,
  323. patient_id:this.patientID,
  324. page:this.page,
  325. limit:this.limit,
  326. }
  327. getAllPassWayAssessmentList(params).then(response=>{
  328. if(response.data.state == 1){
  329. var list = response.data.data.list
  330. console.log("列表",list)
  331. this.tableData = list
  332. var total = response.data.data.total
  333. console.log("total",total)
  334. this.total = total
  335. }
  336. })
  337. },
  338. handleUpdateAdviceTemplate(id){
  339. console.log("id2222222",id)
  340. getPassWayAssessmentById(id).then(response=>{
  341. if(response.data.state == 1){
  342. var assessment = response.data.data.assessment
  343. console.log("assesment",assessment)
  344. this.editDialogVisible = true
  345. this.form.id = assessment.id
  346. this.form.start_time = this.getTime(assessment.start_time,"{y}-{m}-{d}")
  347. this.form.creator = assessment.creator
  348. this.form.blood_dealwith = assessment.blood_dealwith
  349. this.form.blood_project = assessment.blood_project
  350. this.form.blood_result = assessment.blood_result
  351. }
  352. })
  353. },
  354. updatePasswayAssessment(formName){
  355. this.$refs[formName].validate((valid)=>{
  356. if(valid){
  357. var params = {
  358. start_time:this.form.start_time,
  359. creator:this.form.creator,
  360. blood_project:this.form.blood_project,
  361. blood_result:this.form.blood_result,
  362. blood_dealwith:this.form.blood_dealwith,
  363. id:this.form.id
  364. }
  365. console.log("parasm",params)
  366. updatePasswayAssessment(params).then(response=>{
  367. if(response.data.state == 1){
  368. var assesment = response.data.data.assessment
  369. this.$message.success("保存成功")
  370. this.editDialogVisible = false
  371. this.getlist()
  372. }
  373. })
  374. }
  375. })
  376. }
  377. },
  378. created() {
  379. const id = this.$route.params && this.$route.params.mid
  380. this.patientID = parseInt(id)
  381. const pid = this.$route.params&& this.$route.params.pid
  382. this.parent_id = parseInt(pid)
  383. this.getVascularAccessByDetail(pid)
  384. this.getlist()
  385. }
  386. }
  387. </script>
  388. <style>
  389. #oictable ::-webkit-scrollbar {
  390. height: 15px;
  391. }
  392. </style>
  393. <style rel="stylesheet/scss" lang="scss" scoped>
  394. </style>