// 慢阻肺患者档案表格组件 var template = '' $.ajax('../../../component/statistics/CopdPatientRecord/index.html', { data: {}, dataType: 'html', cache: false, timeout: 60000, async: false, error: function (res) {}, success: function (res) { template = res } }) Vue.component('copd-patient-record', { template: template, props: [], data() { return { docInfo: JSON.parse(window.localStorage.getItem('docInfo')), daLoading: false, dataList: [], // 当前编辑的数据,点击编辑按钮后设置,取消或退出则清空 currentEditData: null, // 编辑页面是否显示 editViewVisable: false, userRoleCode: '', //服务记录是否显示 serviceRecordVisable: false, transferStatusOptions: [{ code: '', value: '全部' }], recordStatusOptions: [{ code: '', value: '全部' }], followStatusArr: [{ code: '', value: '全部' }], receivingHospitalList: [{ code: '', name: '全部' }], receiveStatusOptions: [ { value: '', label: '全部' }, { value: '1', label: ' 已接收' }, { value: '0', label: ' 未接收' } ], survivalStatusOption: [{ code: '', value: '全部' }], signList: [ { value: '', label: '全部' }, { value: '1', label: '是' }, { value: '2', label: '否' } ], // 健康档案是否显示 healthRecordVisable: false, page: 1, size: 20, rangeList: [ { name: '按区', code: 'town' }, { name: '按社区', code: 'hospital' } ], rangeCode: 'town', totalPage: 0, totalCount: 0, name: '', years: '', turnDownStatus: '', receiveStatus: '', archivesStatus: '', hospital: '', doctorName: '', isLive: '', isSign: '', patientCode: '', firstOrg: '', currentSelect: [], followupStatus: [], dicName: ['jkcopd_archivesStatus', 'jkcopd_turnDownStatus', 'jkcopd_isLive', 'jkcopd_followup_status'], isShow: false, startTime: '', endTime: '', chooseYear: '', nowyear: '', areaList: [], areaCode: null, communityCode: null, fileList: [], file: undefined, isProgressShow: false, percentage: 0, success: false, loading: false, isOver: false, status: '', errList: [], pickerOptions: { disabledDate(time) { let timeSpace = time.getTime() <= moment.toDate().getTime() return timeSpace } }, communityList: [], allocationForm: {}, doctorList: [], allocationDialog: false, isGuGan: false, // 判断是否是骨干,若是显示分配,若不是显示批量分配 exportStandardLoading: false, selectLoading: false, batchAllocation: false, batchForm: { status: '', isSign: '', isTurn: '' }, batchData: [], selectedPatient: [], selectedPatient1: [], progressVisible: false, progressContent: '正在批量分配患者,请稍等', allocationProgress: 0, addressOptions1: [], addressOptions2: [], registAddress: [], liveAddress: [], props: { label: 'name', value: 'code', children: 'children' } } }, computed: { showTotalTable() { return this.currentEditData == null && this.editViewVisable == false && this.serviceRecordVisable == false && this.healthRecordVisable == false }, showEditView() { return this.currentEditData && this.editViewVisable } }, mounted() { var vm = this var userRole = window.sessionStorage.getItem('selectedRole') vm.userRoleCode = JSON.parse(userRole).code this.initTime(vm) if (this.docInfo.expandLevelName) { this.isGuGan = this.docInfo.expandLevelName.indexOf('慢病骨干') > -1 } this.initScope(3) if (this.isGuGan) { // 如何是慢病骨干 则只能选社区,并且限定死社区 this.rangeList = [{ name: '按社区', code: 'hospital' }] this.rangeCode = 'hospital' this.areaList = [{ name: this.docInfo.hospitalName.substring(0, 3), code: this.docInfo.town }] this.areaCode = this.docInfo.town this.communityList = [{ name: this.docInfo.hospitalName, code: this.docInfo.hospital }] this.communityCode = this.docInfo.hospital vm.receivingHospitalList = [{ code: this.docInfo.hospital, name: this.docInfo.hospitalName }] this.hospital = this.docInfo.hospital } else { this.hospitalList() } EventBus.$on('copd-reset-select', function () { vm.currentEditData = null vm.editViewVisable = false vm.serviceRecordVisable = false vm.healthRecordVisable = false }) EventBus.$on('copd-reset-save', function () { vm.currentEditData = null vm.editViewVisable = false vm.serviceRecordVisable = false vm.healthRecordVisable = false ;(vm.transferStatusOptions = [{ code: '', value: '全部' }]), (vm.recordStatusOptions = [{ code: '', value: '全部' }]), (vm.followStatusArr = [{ code: '', value: '全部' }]), (vm.receiveStatusOptions = [ { value: '', label: '全部' }, { value: '1', label: ' 已接收' }, { value: '0', label: ' 未接收' } ]), (vm.survivalStatusOption = [{ code: '', value: '全部' }]), vm.getJkCopdPatientPage() vm.dicName.forEach(function (item) { vm.getDictByDictName(item) }) }) this.dicName.forEach(function (item) { vm.getDictByDictName(item) }) this.initDistrict() }, watch: { rangeCode(nv) { if (nv == 'hospital') { this.initScope(5) } } }, destroyed() { EventBus.$off('copd-reset-select') EventBus.$off('copd-reset-save') }, methods: { // 初始化时间 initTime(vm) { var now = new Date() vm.endTime = now.format('yyyy-MM-dd') var start = now.getFullYear() + '-' + '01-01' vm.startTime = new Date(start).format('yyyy-MM-dd') vm.nowyear = vm.chooseYear = now.getFullYear() vm.chooseYear = '全部' vm.nowmonth = now.getMonth() + 1 vm.years = ['全部'] for (i = vm.nowyear; i >= 2013; i--) { vm.years.push(i) } }, // 数据范围初始化 initScope(type) { var vm = this //获得缓存中缓存的角色权限 var userRole = window.sessionStorage.getItem('selectedRole') if (!userRole) { return false } vm.userRole = JSON.parse(userRole) vm.areaTitle = vm.userRole.name if (vm.isGuGan) { return } if (type == 3) { this.areaCode = null this.communityCode = null if (vm.userRole.code == '350200' || vm.userRole.code == 'jk_350200') { vm.getDistrict(type, 350200, '厦门市') } else if (vm.userRole.code.indexOf('jk_') > -1) { vm.getDistrict(type, vm.userRole.code.substring(3), vm.areaTitle.substring(0, 3)) } else if (vm.userRole.code.length == 6) { vm.getDistrict(type, vm.userRole.code, vm.areaTitle.substring(0, 3)) } } else { this.communityCode = null if (this.rangeCode == 'hospital') vm.getDistrict(type, vm.areaCode) } //level:2、市,3、区,4、社区,5、团队 // vm.initareaLevel = vm.areaLevel = vm.userRole.code == 'jk_350200' ? 2 : vm.userRole.code.length == 9 ? 3 : 4 // vm.initlevel = vm.level = vm.userRole.code == 'jk_350200' ? 4 : vm.userRole.code.length == 9 ? 3 : 2 // // if(vm.userRole.code == 'jk_350200'||vm.userRole.code =='350200'){ // // vm.initareaLevel = vm.areaLevel = 2 // // vm.initlevel = vm.level = 4 // // }else if(vm.userRole.code.length == 9){ // // vm.initareaLevel = vm.areaLevel = 3 // // vm.initlevel = vm.level = 3 // // }else{ // // vm.initareaLevel = vm.areaLevel = 4 // // vm.initlevel = vm.level = 2 // // } // console.log(vm.initlevel); // vm.initarea = vm.area = vm.userRole.code // vm.areaTitle = vm.userRole.name // if (vm.initlevel == 4) { // //市获取区 // if(vm.userRole.code == 'jk_350200'){ // vm.getDistrict(3, vm.initarea.substring(3), vm.areaTitle.substr(0, 3)) // }else{ // vm.getDistrict(3, vm.initarea, vm.areaTitle.substr(0, 3)) // } // vm.rangeCode = vm.rangeList[0].code // } else if (vm.initlevel == 3) { // //区获取社区 // vm.areaList = [{ code: vm.initarea, name: vm.areaTitle }] // vm.areaCode = vm.initarea // vm.rangeCode = vm.rangeList[0].code // } else if (vm.initlevel == 2) { // //社区获取团队 // vm.communityList = [{ code: vm.initarea, name: vm.areaTitle }] // vm.communityCode = vm.initarea // vm.rangeList.shift() // vm.rangeCode = vm.rangeList[0]?.code // } // vm.range = vm.rangeCode }, handlePreview(value) { var vm = this var file = value.target.files[0] this.daLoading = true if (file && file.size) { var formFile = new FormData() formFile.append('file', file) httpRequest .post('doctor/jkCopd/importExcel', { data: formFile, cache: false, //上传文件无需缓存 processData: false, //用于对data参数进行序列化处理 这里必须false contentType: false //必须 }) .then(function (res) { if (res.status == 200) { vm.getJkCopdPatientPage() vm.dicName.forEach(function (item) { vm.getDictByDictName(item) }) vm.daLoading = false vm.$message({ message: '导入成功!', type: 'success' }) } else { vm.$message.error('导入失败!') vm.daLoading = false } }) .catch(function (e) { console.error(e) vm.daLoading = false }) // statisticAPI.importExcel({file:formFile}).then(function(res){ // console.log('22222222222',res) // }) } }, //获取省市区 type:区3 getDistrict: function (type, code, name) { var vm = this, list = [], param = '' if (type == 3) { list = [{ code: code, name: name }] param = 'area' } else if (type == 5) { list = [{ code: '', name: '全部' }] param = 'community' } var params = { type: type, code: code } homeAPI.getDistrict(params).then(function (res) { if (res.status == 200) { vm[param + 'List'] = list.concat(res.list) // vm[param + 'Code'] = vm[param + 'List'][0].code // console.log(vm.areaList) } else { vm.$message.error(res.msg) } }) }, hospitalList() { var vm = this statisticAPI.hospitalList({ queryArea: vm.userRoleCode }).then(function (res) { vm.receivingHospitalList = vm.receivingHospitalList && vm.receivingHospitalList.concat(res.detailModelList) }) }, exportTable() { if (this.rangeCode == 'town' && this.areaCode == null) { this.$message.warning('请选择地区') return } if (this.rangeCode == 'hospital' && this.communityCode == null) { this.$message.warning('请选择社区') return } var vm = this vm.daLoading = true var params = { startTime: this.chooseYear == '全部' ? '' : this.chooseYear + '-01-01', endTime: this.chooseYear == '全部' ? '' : this.chooseYear + '-12-31', name: this.name, turnDownStatus: this.turnDownStatus, receiveStatus: this.receiveStatus, archivesStatus: this.archivesStatus, hospital: this.hospital, doctorName: this.doctorName, isLive: this.isLive, firstOrg: this.firstOrg, queryArea: this.areaCode, queryHospital: this.communityCode == null ? '' : this.communityCode } statisticAPI.exportJkCopdAchives(params, '居民档案.xls').then(function (res) { vm.daLoading = false vm.$message({ message: '导出成功!', type: 'success' }) }) }, selectionLineChangeHandle(val) { var vm = this var arr = [] val.forEach(function (item) { arr.push(item.id) }) vm.currentSelect = arr var arr1 = [] val.forEach(function (item) { arr1.push(item.patient) }) vm.selectedPatient = arr1 }, synPatient() { var vm = this if (vm.currentSelect.length) { statisticAPI .synPatient({ ids: vm.currentSelect.join(','), doctor: vm.docInfo.code }) .then(function (res) { if (res.status == '200') { vm.$message({ message: res.message, type: 'success' }) vm.getJkCopdPatientPage() vm.dicName.forEach(function (item) { vm.getDictByDictName(item) }) } else { vm.$message({ message: res.message, type: 'warning' }) } }) } else { vm.$message('请勾选患者!') } }, queryDate() { if (this.rangeCode == 'town' && this.areaCode == null) { this.$message.warning('请选择地区') return } if (this.rangeCode == 'hospital' && this.communityCode == null) { this.$message.warning('请选择社区') return } this.getJkCopdPatientPage() }, distributionHospital() { var vm = this if (vm.currentSelect.length) { this.batchAllocation = true this.batchForm = { status: '', isSign: '', isTurn: '' } this.searchBatchData() return vm.daLoading = true statisticAPI .distributionHospital({ type: 1, ids: vm.currentSelect.join(','), doctor: vm.docInfo.code }) .then(function (res) { if (res.status == '200') { vm.daLoading = false vm.$message({ message: res.message, type: 'success' }) vm.getJkCopdPatientPage() vm.dicName.forEach(function (item) { vm.getDictByDictName(item) }) } else { vm.daLoading = false vm.$message({ message: res.message, type: 'warning' }) } }) } else { vm.daLoading = false vm.$message('请勾选患者!') } }, eliminateClick() { ;(this.name = ''), (this.turnDownStatus = ''), (this.receiveStatus = ''), (this.archivesStatus = ''), (this.hospital = ''), (this.doctorName = ''), (this.isLive = ''), (this.firstOrg = ''), (this.isSign = ''), (this.registAddress = []), (this.liveAddress = []) }, //下转状态 getDictByDictName(value) { var vm = this statisticAPI.getDictByDictName({ name: value }).then(function (res) { if (value == 'jkcopd_turnDownStatus') { vm.transferStatusOptions = vm.transferStatusOptions.concat(res.list) } else if (value == 'jkcopd_archivesStatus') { vm.recordStatusOptions = vm.recordStatusOptions.concat(res.list) } else if (value == 'jkcopd_isLive') { vm.survivalStatusOption = vm.survivalStatusOption.concat(res.list) } else if (value == 'jkcopd_followup_status') { vm.followStatusArr = vm.followStatusArr.concat(res.list) } }) }, onClickEdit(record) { window.localStorage.setItem('editDetail', JSON.stringify(record)) if (!record) { return } this.currentEditData = record this.editViewVisable = true }, onClickServiceRecord(record) { this.currentEditData = record this.serviceRecordVisable = true }, /*打开预览链接*/ openURL(url) { let aLabel = document.createElement('a') //设置链接 aLabel.setAttribute('href', url) //新窗口打开链接 aLabel.setAttribute('target', '_blank') //设置标签ID aLabel.setAttribute('id', 'reportpoint') // 防止反复添加 if (document.getElementById('reportpoint')) { document.body.removeChild(document.getElementById('reportpoint')) } document.body.appendChild(aLabel) aLabel.click() //window.open(url); }, onClickHealthRecord(record) { this.getCode(record.idcard) }, getCode(idcard) { var vm = this this.patientCode = '' statisticAPI.getPatientAccetokenByIdcard({ idcard: idcard }).then(function (res) { if (res.status == 200) { vm.patientCode = res.data.patientCode var healthRecordServer = 'http://www.xmtyw.cn/wlyy/profileweb/#/menzhen' //健康档案服务 //var healthRecordServer="https://www.xmtyw.cn/wlyytest/profileweb/#/menzhen" //健康档案服务wlyytest window.open(healthRecordServer + '?patientCode=' + res.data.patientCode) } else { vm.patientCode = '' this.$message.error('获取授权码失败') return } }) }, handleCurrentChange: function (val) { this.page = val this.getJkCopdPatientPage() }, handleSizeChange(val) { this.size = val this.getJkCopdPatientPage() }, getJkCopdPatientPage: function (val) { this.daLoading = true var vm = this var params = { page: this.page, size: this.size, name: this.name, turnDownStatus: this.turnDownStatus, receiveStatus: this.receiveStatus, archivesStatus: this.archivesStatus, hospital: this.hospital, doctorName: this.doctorName, isLive: this.isLive, queryArea: this.areaCode, firstOrg: this.firstOrg, startTime: this.chooseYear == '全部' ? '' : this.chooseYear + '-01-01', endTime: this.chooseYear == '全部' ? '' : this.chooseYear + '-12-31', isSign: this.isSign } if(this.liveAddress.length >0){ if(this.liveAddress[0]=='other'){ params.liveProvince = 'other' }else{ params.liveProvince = this.liveAddress[0] params.liveCity = this.liveAddress[1] params.liveTown = this.liveAddress[2] params.liveStreet = this.liveAddress[3] } } if(this.registAddress.length > 0){ if(this.registAddress[0]=='other'){ params.registProvince = 'other' }else{ params.registProvince = this.registAddress[0] params.registCity = this.registAddress[1] params.registTown = this.registAddress[2] params.registStreet = this.registAddress[3] } } if (this.rangeCode == 'hospital') { params.queryHospital = this.communityCode } statisticAPI.jkCopdAchivesPage(params).then(function (res) { vm.totalCount = res.totalCount vm.totalPage = res.totalPage vm.dataList = res.detailModelList vm.daLoading = false }) }, //上传 toggle(isShow) { this.isShow = isShow if (!isShow) { this.reset() } }, reset(type) { this.percentage = 0 this.success = false this.isOver = false this.errList = [] if (type != 1) { this.loading = false this.file = undefined this.month = '' } }, close(type) { this.reset(type) this.isProgressShow = false if (type != 1) { this.isShow = false } }, beforeUploadPic(file) { this.file = file }, check() { var vm = this vm.loading = true if (!vm.file) { vm.loading = false vm.$message('请选择文件') return } vm.save() }, save() { var vm = this vm.daLoading = true var formData = new FormData() formData.append('file', vm.file) // vm.initProgress() httpRequest .post('doctor/jkCopd/importExcel', { data: formData, cache: false, //上传文件无需缓存 processData: false, //用于对data参数进行序列化处理 这里必须false contentType: false //必须 }) .then(function (res) { if (res.status == 200) { vm.getJkCopdPatientPage() vm.dicName.forEach(function (item) { vm.getDictByDictName(item) }) vm.daLoading = false vm.isShow = false vm.$message({ message: '导入成功!', type: 'success' }) } else { vm.$message.error('导入失败!') vm.daLoading = false } }) .catch(function (e) { console.error(e) vm.daLoading = false }) }, initProgress() { var vm = this this.isProgressShow = true setTimeout(() => { if (!vm.isOver && vm.percentage != 90) { vm.percentage += 10 vm.initProgress() } }, 1000) }, openAllocationDialog() { if (this.currentSelect.length == 0) { this.$message.warning('请选择患者') return } var vm = this this.allocationDialog = true this.selectLoading = true statisticAPI.findDoctorList({ hospital: this.docInfo.hospital }).then(function (res) { vm.doctorList = res.detailModelList vm.selectLoading = false }) }, closeAllocationDialog() { this.allocationDialog = false }, back() { var vm = this vm.currentEditData = null vm.editViewVisable = false vm.serviceRecordVisable = false vm.healthRecordVisable = false }, allocationFn() { var vm = this this.$refs.allocationForm.validate(function (valid) { if (valid) { statisticAPI.distributionPatient({ ids: vm.currentSelect.join(','), doctor: vm.allocationForm.doctor }).then(function (res) { if (res.status == 200) { vm.allocationDialog = false vm.$message.success('分配成功') vm.getJkCopdPatientPage() } else { vm.$message.error(res.msg) } }) } }) }, standardExport() { if (this.rangeCode == 'town' && this.areaCode == null) { this.$message.warning('请选择地区') return } if (this.rangeCode == 'hospital' && this.communityCode == null) { this.$message.warning('请选择社区') return } var vm = this vm.exportStandardLoading = true var params = { name: this.name, turnDownStatus: this.turnDownStatus, receiveStatus: this.receiveStatus, archivesStatus: this.archivesStatus, hospital: this.hospital, doctorName: this.doctorName, isLive: this.isLive, queryArea: this.areaCode, firstOrg: this.firstOrg, queryHospital: this.communityCode == null ? '' : this.communityCode, startTime: this.chooseYear == '全部' ? '' : this.chooseYear + '-01-01', endTime: this.chooseYear == '全部' ? '' : this.chooseYear + '-12-31' } var time = new Date().getTime() statisticAPI.exportCountryStandard(params, `国家标准${time}.xls`).then(function (res) { vm.exportStandardLoading = false vm.$message({ message: '导出成功!', type: 'success' }) }) }, searchBatchData() { var vm = this statisticAPI.distributionPage({ patients: vm.selectedPatient.join(','), ...this.batchForm }).then(function (res) { vm.batchData = res.detailModelList vm.$nextTick(function () { vm.batchData.forEach(function (item) { if (item.statusName == '未分配' && item.toHospitalName && item.lastDoctor != item.toDoctorName) { vm.$refs.batchAllocationTable.toggleRowSelection(item, true) } }) }) }) }, confirmBatchData() { var vm = this statisticAPI.distributionBatch({ patients: this.selectedPatient1.join(','), doctor: vm.docInfo.code }).then(function (res) { if (res.status == 200) { vm.progressVisible = true vm.allocationProgress = 0 vm.getProgress(res.obj) } }) }, selectBatchData(val) { this.selectedPatient1 = val.map(function (item) { return item.patient }) }, getProgress(code) { var vm = this statisticAPI.findDistributionBatch({ code: code }).then(function (res) { var data = res.obj if (data.successNum + data.failNum < data.total) { vm.allocationProgress = (data.successNum / data.total) * 100 setTimeout(function () { vm.getProgress(code) }, 200) } else { vm.allocationProgress = 100 vm.progressContent = `本次共分配${data.total}人,成功${data.successNum}人,失败${data.failNum}人` } }) }, selectable(row, index) { if (!row.toHospitalName) { return false } else { return true } }, handleItemChange(val, type){ // 获取地址 if (val.length == 1) { // 获取市 this.baseCityList(val[0], type) } if (val.length == 2) { // 获取区 this.baseTownList(val, type) } if (val.length == 3) { // 获取区 this.stressList(val, type) } }, baseCityList: function (code, id) { var vm = this var activeIndex = null var num = id var arr = vm['addressOptions' + num] arr.forEach(function (item, index) { if (item.code == code) { activeIndex = index } }) homeAPI.getDistrict({ type: 2, code: code }).then(function (res) { if (res.status == 200) { var detailModelList = res.list detailModelList.forEach(item => { item.children = [] }) arr[activeIndex].children = detailModelList } }) }, baseTownList(val, id) { var vm = this var provinceIndex = null var activeIndex = null var num = id var arr = vm['addressOptions' + num] arr.forEach(function (item, index) { if (item.code == val[0]) { var children = item.children provinceIndex = index children.forEach(function (item, idx) { if (item.code == val[1]) { activeIndex = idx } }) } }) homeAPI.getDistrict({ type: 3, code: val[1] }).then(function (res) { if (res.status == 200) { var detailModelList = res.list for(let item of detailModelList){ if(id == 3){ item.children = null }else{ item.children = [] } } if (arr[provinceIndex].children[activeIndex]) { arr[provinceIndex].children[activeIndex].children = detailModelList } } }) }, stressList(val, id) { var vm = this var provinceIndex = null var activeIndex = null var xIndex = null var num = id var arr = vm['addressOptions' + num] arr.forEach(function (item, index) { if (item.code == val[0]) { var children = item.children provinceIndex = index children.forEach(function (item, idx) { if (item.code == val[1]) { activeIndex = idx var xItem = item.children xItem.forEach(function (item, xianIndex) { if (item.code == val[2]) { xIndex = xianIndex } }) } }) } }) homeAPI.getDistrict({ type: 4, code: val[2] }).then(function (res) { if (res.status == 200) { var detailModelList = res.list if (arr[provinceIndex].children[activeIndex].children[xIndex]) { if(detailModelList.length >0){ arr[provinceIndex].children[activeIndex].children[xIndex].children = detailModelList }else{ arr[provinceIndex].children[activeIndex].children[xIndex].children = null } } } }) }, initDistrict() { var vm = this homeAPI.getDistrict({ type: 1, code: '' }).then(function (res) { var detailModelList = res.list.concat({code:'other',name:'不详'}) detailModelList.forEach(function (item) { if(item.code == 'other'){ item.children = null }else{ item.children = [] } }) vm.addressOptions1 = JSON.parse(JSON.stringify(detailModelList)) vm.addressOptions2 = JSON.parse(JSON.stringify(detailModelList)) }) }, } })