hd 3 månader sedan
förälder
incheckning
d2d745de38

+ 18 - 7
component/statistics/GxbCy/index.html

@ -4,7 +4,7 @@
  <div class="copd-filter-group ui-col-1 bgc-fff" style="min-width: 900px">
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">
        <el-radio v-model="yearType" label="1">按上转年份:</el-radio>
        <el-radio v-model="yearType" label="1">按下转年份:</el-radio>
        <el-select v-model="chooseYear" class="formWidth wd160">
          <el-option v-for="(item , index) in years" :key="index" :label="item" :value="item"></el-option>
        </el-select>
@ -12,7 +12,7 @@
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14" style="display: flex; align-items: center">
        <el-radio v-model="yearType" label="2">自定义上转时间:</el-radio>
        <el-radio v-model="yearType" label="2">自定义下转时间:</el-radio>
        <el-date-picker
          v-model="chooseTime"
          type="daterange"
@ -24,17 +24,28 @@
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">数据范围:</label>
      <el-select class="formWidth" v-model="form.turnOver" placeholder="请选择">
        <el-option v-for="(option, index) in turnOverOptions" :label="option.value" :value="option.code"></el-option>
      <el-select class="formWidth" v-model="form.range" placeholder="请选择" @change="resetArea">
        <el-option v-for="(option, index) in rangeOptions" :label="option.label" :value="option.value" :key="option.value"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">地区:</label>
      <el-select class="formWidth" v-model="form.turnOver" placeholder="请选择">
        <el-option v-for="(option, index) in turnOverOptions" :label="option.value" :value="option.code"></el-option>
      <el-select class="formWidth" v-model="form.area" placeholder="请选择" @change="getHospital">
        <el-option v-for="(option, index) in areaOptions" :label="option.label" :value="option.value" :key="option.value"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20 pr20" v-if="form.range == 'hospital'||form.range == 'team'">
      <label class="c-333 c-f14">社区:</label>
      <el-select class="formWidth" v-model="form.hospital" placeholder="请选择" @change="getTeam">
        <el-option v-for="(option, index) in hospitalOptions" :label="option.name" :value="option.code" :key="option.code"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20 pr20" v-if="form.range == 'team'">
      <label class="c-333 c-f14">团队:</label>
      <el-select class="formWidth" v-model="form.team" placeholder="请选择">
        <el-option v-for="(option, index) in teamOptions" :label="option.name" :value="option.id" :key="option.id"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20">
      <el-button type="primary" size="mini" @click="queryDate">查询</el-button>
      <el-button type="ff9526" size="mini" @click="exportTable" :disabled="exportLoading">导出</el-button>

+ 103 - 79
component/statistics/GxbCy/index.js

@ -1,5 +1,5 @@
var template = ''
$.ajax('../../../component/statistics/GxbCy/index.html', {
$.ajax('../../../component/statistics/GxbMz/index.html', {
  data: {},
  dataType: 'html',
  cache: false,
@ -11,7 +11,7 @@ $.ajax('../../../component/statistics/GxbCy/index.html', {
  }
})
Vue.component('gxb-cy', {
Vue.component('gxb-mz', {
  template: template,
  props: [],
  data: function () {
@ -20,57 +20,81 @@ Vue.component('gxb-cy', {
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
      turnOverOptions: [],
      form: {},
      rangeOptions: [
        { label: '区', value: 'town' },
        { label: '医院', value: 'hospital' },
        { label: '团队', value: 'team' }
      ],
      areaOptions: [
        { label: '思明区', value: '350203' },
        { label: '海沧区', value: '350205' },
        { label: '湖里区', value: '350206' },
        { label: '集美区', value: '350211' },
        { label: '同安区', value: '350212' },
        { label: '翔安区', value: '350213' }
      ],
      hospitalOptions: [],
      teamOptions: [],
      form: {
        range: 'town'
      },
      loading: false,
      exportLoading: false,
      tableData: [],
      tableHeader: [
        { label: '住院号', prop: 'visitNo', width: '110' },
        { label: '病人姓名', prop: 'patientName', width: '90' },
        { label: '性别', prop: 'sex', width: '80' },
        { label: '手机号', prop: 'mobile', width: '130' },
        { label: '身份证号', prop: 'idcard', width: '170' },
        { label: '费别', prop: 'rateTypeName', width: '90' },
        { label: '建床科室', prop: 'sickVisitDeptName', width: '90' },
        { label: '护理等级', prop: 'sickTendLevelName', width: '90' },
        { label: '病情', prop: 'sickStateName', width: '110' },
        { label: '建床诊断', prop: 'sickDiagnoseCodeName', width: '110' },
        { label: '建床日期', prop: 'buildingTime', width: '170' },
        { label: '建床天数', prop: 'budildDays', width: '90' },
        { label: '撤床日期', prop: 'withdrawalTime', width: '130' },
        { label: '撤床诊断', prop: 'bedWithdrawDiagnoseName', width: '130' },
        { label: '转归情况', prop: 'turnOver', width: '110' }
      ],
      dialogShow: false,
      settlementInfo: {
        name: '黄小蕾',
        yibao: 'dk',
        pay: '1049'
      },
      dialogTable: [],
      dialogHeader: [
        { label: '结算时间', prop: 'SETTLE_TIME', width: '160' },
        { label: '结算状态', prop: 'SETTLE_STATUS_NAME', width: '80' },
        { label: '金额', prop: 'COST', width: '80' },
        { label: '自付', prop: 'CHARGE', width: '80' },
        { label: '优惠金额', prop: 'PREFER_PAYMENT', width: '80' },
        { label: '减免金额', prop: 'DERATE_PAYMENT', width: '80' },
        { label: '单位支付', prop: 'COMPANY_PAYMENT', width: '80' },
        { label: '医保支付', prop: 'INSUR_PAYMENT', width: '80' },
        { label: '结算总预交金', prop: 'SETTLE_SUM_PREPAY', width: '120' },
        { label: '结算时收退款', prop: 'SETTLE_SICK_PREPAY', width: '120' },
        { label: '结算后余额', prop: 'SETTLE_SICK_BALANCE', width: '120' },
        { label: '结算号', prop: 'SETTLE_NO', width: '80' },
        { label: '就诊科室', prop: 'VISIT_DEPT_NAME', width: '100' },
        { label: '收费科室', prop: 'SETTLE_DEPT_NAME', width: '100' }
        { label: '名称', prop: 'name', width: '110' },
        { label: '已下转次数', prop: 'totalTimes', width: '90' },
        { label: '门诊下转次数', prop: 'mzTimes', width: '90' },
        { label: '已下转人数', prop: 'totalNum ', width: '110' },
        { label: '门诊下转人数', prop: 'mzNum', width: '110' },
        { label: '门诊下转已评估', prop: 'screenNum', width: '110' },
        { label: '门诊下转未评估', prop: 'unScreenNum', width: '110' },
      ],
      page: 1,
      size: 10,
      total: 0
      total: 0,
      level: 0
    }
  },
  methods: {
    init() {
      var selectedRole = JSON.parse(sessionStorage.getItem('selectedRole'))
      if (selectedRole.code.indexOf('350200') > -1) {
        this.level = 1 //  市卫健委
        this.areaOptions = [
          { label: '思明区', value: '350203' },
          { label: '海沧区', value: '350205' },
          { label: '湖里区', value: '350206' },
          { label: '集美区', value: '350211' },
          { label: '同安区', value: '350212' },
          { label: '翔安区', value: '350213' }
        ]
      } else if (selectedRole.code.length == 6) {
        this.level = 2 // 区管理
        this.areaOptions = [{ label: selectedRole.name.substring(0, 3), value: selectedRole.code }]
        this.form = {
          range: 'town',
          area: selectedRole.code
        }
        this.getHospital(selectedRole.code)
      } else {
        this.level = 3 // 社区管理
        this.rangeOptions = [
          { label: '医院', value: 'hospital' },
          { label: '团队', value: 'team' }
        ]
        this.areaOptions = [{ label: selectedRole.name.substring(0, 3), value: selectedRole.code }]
        this.hospital = [{ label: selectedRole.name, value: selectedRole.code }]
        this.form = {
          range: 'hospital',
          area: selectedRole.code.substring(0, 6),
          hospital: selectedRole.code
        }
        this.getTeam(selectedRole.code)
      }
      this.initTime()
      this.getList()
    },
    initTime() {
      var vm = this
      var now = new Date()
@ -81,6 +105,18 @@ Vue.component('gxb-cy', {
        vm.years.push(i)
      }
    },
    resetArea() {
      if (this.level == 1) {
        delete this.form.area
        delete this.form.hospital
        delete this.form.team
      } else if (this.level == 2) {
        delete this.form.hospital
        delete this.form.team
      } else {
        delete this.form.team
      }
    },
    getList() {
      var vm = this
      this.loading = true
@ -95,11 +131,11 @@ Vue.component('gxb-cy', {
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1]+ ' 23:59'
          params.endDate = this.chooseTime[1] + ' 23:59'
        }
      }
      httpRequest.get('statistics/bed/getFamilyBedRecord', { data: params }).then(function (res) {
      httpRequest.get('statistics/collaborate/gxbMzTurnDownInfo', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.tableData = res.detailModelList
          vm.total = res.totalCount
@ -113,7 +149,6 @@ Vue.component('gxb-cy', {
    },
    exportTable() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
@ -125,51 +160,42 @@ Vue.component('gxb-cy', {
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1]+ ' 23:59'
          params.endDate = this.chooseTime[1] + ' 23:59'
        }
      }
      this.exportLoading = true
      var fileName = `患者情况${new Date().getTime()}.xls`
      httpRequest.downLoadFileForAjax('statistics/bed/exportGatientFamilyBedRecordStatistics', fileName, params).then(function () {
      var fileName = `冠心病门诊下转统计表${new Date().getTime()}.xls`
      httpRequest.downLoadFileForAjax('statistics/collaborate/exportGxbMzTurnDownInfo', fileName, params).then(function () {
        vm.exportLoading = false
      })
    },
    eliminateClick() {
      this.form = {}
      this.resetArea()
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
    },
    closeDialog() {
      this.dialogShow = false
    },
    previewRecord(row) {
    getHospital(code) {
      var vm = this
      this.dialogShow = true
      vm.dialogTable = []
      vm.settlementInfo = {}
      // doctor/familyBed/getFamilyBedSettleRecord?bedRecordCode=008d17ac9111439fab54f27c4e7f8376
      httpRequest.get('doctor/familyBed/getFamilyBedSettleRecord', { data: { bedRecordCode: row.code } }).then(function (res) {
        if (res.status == 200) {
          vm.dialogTable = res.data
          var pay = 0
          
          for(var item of res.data){
            pay += item.COST
          }
          vm.settlementInfo = {
            name: row.patientName,
            yibao: row.cardNo,
            pay: pay
          }
        }
      delete this.form.hospital
      delete this.form.team
      var params = {
        type: 5,
        code: code
      }
      httpRequest.post('common/district', { data: params }).then(function (res) {
        vm.hospitalOptions = res.list
      })
    },
    getDictData() {
    getTeam(code) {
      var vm = this
      statisticAPI.getDictByDictName({ name: 'jkcopd_disease_conversion' }).then(function (res) {
        vm.turnOverOptions = [{ value: '全部' }]
        vm.turnOverOptions = vm.turnOverOptions.concat(res.list)
      delete this.form.team
      var params = {
        hospital: code
      }
      httpRequest.get('statisticsExport/teamList', { data: params }).then(function (res) {
        vm.teamOptions = res.data
      })
    },
    handleCurrentChange(val) {
@ -182,8 +208,6 @@ Vue.component('gxb-cy', {
    }
  },
  mounted() {
    this.initTime()
    this.getDictData()
    this.getList()
    this.init()
  }
})

+ 1 - 12
component/statistics/GxbEvaluation/index.js

@ -68,18 +68,7 @@ Vue.component('gxb-evaluation', {
  },
  methods: {
    init() {
      // var selectedRole = JSON.parse(sessionStorage.getItem('selectedRole'))
      var selectedRole = {
        doctorAuthOperate: '1',
        high: '0',
        code: '350205',
        level: '3',
        name: '海沧区',
        isManage: '1',
        areas: '350205',
        type: '1',
        roleType: '2'
      }
      var selectedRole = JSON.parse(sessionStorage.getItem('selectedRole'))
      if (selectedRole.code.indexOf('350200') > -1) {
        this.level = 1 //  市卫健委
        this.areaOptions = [

+ 18 - 7
component/statistics/GxbManage/index.html

@ -4,7 +4,7 @@
  <div class="copd-filter-group ui-col-1 bgc-fff" style="min-width: 900px">
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">
        <el-radio v-model="yearType" label="1">按筛查年份:</el-radio>
        <el-radio v-model="yearType" label="1">按下转年份:</el-radio>
        <el-select v-model="chooseYear" class="formWidth wd160">
          <el-option v-for="(item , index) in years" :key="index" :label="item" :value="item"></el-option>
        </el-select>
@ -12,7 +12,7 @@
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14" style="display: flex; align-items: center">
        <el-radio v-model="yearType" label="2">自定义筛查时间:</el-radio>
        <el-radio v-model="yearType" label="2">自定义下转时间:</el-radio>
        <el-date-picker
          v-model="chooseTime"
          type="daterange"
@ -24,17 +24,28 @@
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">数据范围:</label>
      <el-select class="formWidth" v-model="form.turnOver" placeholder="请选择">
        <el-option v-for="(option, index) in turnOverOptions" :label="option.value" :value="option.code"></el-option>
      <el-select class="formWidth" v-model="form.range" placeholder="请选择" @change="resetArea">
        <el-option v-for="(option, index) in rangeOptions" :label="option.label" :value="option.value" :key="option.value"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">地区:</label>
      <el-select class="formWidth" v-model="form.turnOver" placeholder="请选择">
        <el-option v-for="(option, index) in turnOverOptions" :label="option.value" :value="option.code"></el-option>
      <el-select class="formWidth" v-model="form.area" placeholder="请选择" @change="getHospital">
        <el-option v-for="(option, index) in areaOptions" :label="option.label" :value="option.value" :key="option.value"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20 pr20" v-if="form.range == 'hospital'||form.range == 'team'">
      <label class="c-333 c-f14">社区:</label>
      <el-select class="formWidth" v-model="form.hospital" placeholder="请选择" @change="getTeam">
        <el-option v-for="(option, index) in hospitalOptions" :label="option.name" :value="option.code" :key="option.code"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20 pr20" v-if="form.range == 'team'">
      <label class="c-333 c-f14">团队:</label>
      <el-select class="formWidth" v-model="form.team" placeholder="请选择">
        <el-option v-for="(option, index) in teamOptions" :label="option.name" :value="option.id" :key="option.id"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20">
      <el-button type="primary" size="mini" @click="queryDate">查询</el-button>
      <el-button type="ff9526" size="mini" @click="exportTable" :disabled="exportLoading">导出</el-button>

+ 102 - 77
component/statistics/GxbManage/index.js

@ -20,57 +20,82 @@ Vue.component('gxb-manage', {
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
      turnOverOptions: [],
      form: {},
      rangeOptions: [
        { label: '区', value: 'town' },
        { label: '医院', value: 'hospital' },
        { label: '团队', value: 'team' }
      ],
      areaOptions: [
        { label: '思明区', value: '350203' },
        { label: '海沧区', value: '350205' },
        { label: '湖里区', value: '350206' },
        { label: '集美区', value: '350211' },
        { label: '同安区', value: '350212' },
        { label: '翔安区', value: '350213' }
      ],
      hospitalOptions: [],
      teamOptions: [],
      form: {
        range: 'town'
      },
      loading: false,
      exportLoading: false,
      tableData: [],
      tableHeader: [
        { label: '住院号', prop: 'visitNo', width: '110' },
        { label: '病人姓名', prop: 'patientName', width: '90' },
        { label: '性别', prop: 'sex', width: '80' },
        { label: '手机号', prop: 'mobile', width: '130' },
        { label: '身份证号', prop: 'idcard', width: '170' },
        { label: '费别', prop: 'rateTypeName', width: '90' },
        { label: '建床科室', prop: 'sickVisitDeptName', width: '90' },
        { label: '护理等级', prop: 'sickTendLevelName', width: '90' },
        { label: '病情', prop: 'sickStateName', width: '110' },
        { label: '建床诊断', prop: 'sickDiagnoseCodeName', width: '110' },
        { label: '建床日期', prop: 'buildingTime', width: '170' },
        { label: '建床天数', prop: 'budildDays', width: '90' },
        { label: '撤床日期', prop: 'withdrawalTime', width: '130' },
        { label: '撤床诊断', prop: 'bedWithdrawDiagnoseName', width: '130' },
        { label: '转归情况', prop: 'turnOver', width: '110' }
      ],
      dialogShow: false,
      settlementInfo: {
        name: '黄小蕾',
        yibao: 'dk',
        pay: '1049'
      },
      dialogTable: [],
      dialogHeader: [
        { label: '结算时间', prop: 'SETTLE_TIME', width: '160' },
        { label: '结算状态', prop: 'SETTLE_STATUS_NAME', width: '80' },
        { label: '金额', prop: 'COST', width: '80' },
        { label: '自付', prop: 'CHARGE', width: '80' },
        { label: '优惠金额', prop: 'PREFER_PAYMENT', width: '80' },
        { label: '减免金额', prop: 'DERATE_PAYMENT', width: '80' },
        { label: '单位支付', prop: 'COMPANY_PAYMENT', width: '80' },
        { label: '医保支付', prop: 'INSUR_PAYMENT', width: '80' },
        { label: '结算总预交金', prop: 'SETTLE_SUM_PREPAY', width: '120' },
        { label: '结算时收退款', prop: 'SETTLE_SICK_PREPAY', width: '120' },
        { label: '结算后余额', prop: 'SETTLE_SICK_BALANCE', width: '120' },
        { label: '结算号', prop: 'SETTLE_NO', width: '80' },
        { label: '就诊科室', prop: 'VISIT_DEPT_NAME', width: '100' },
        { label: '收费科室', prop: 'SETTLE_DEPT_NAME', width: '100' }
        { label: '名称', prop: 'name', width: '110' },
        { label: '已评估人数', prop: 'totalNum', width: '90' },
        { label: '已上转人数', prop: 'turnUpNum', width: '90' },
        { label: '上转转门诊', prop: 'mzNum ', width: '110' },
        { label: '门诊转住院', prop: 'zyNum', width: '110' },
        { label: '下转管理人数', prop: 'turnDownNum', width: '110' },
        { label: '评估已登记随访', prop: 'followUpNum', width: '110' },
        { label: '随访已达标', prop: 'standardNum', width: '110' },
      ],
      page: 1,
      size: 10,
      total: 0
      total: 0,
      level: 0
    }
  },
  methods: {
    init() {
      var selectedRole = JSON.parse(sessionStorage.getItem('selectedRole'))
      if (selectedRole.code.indexOf('350200') > -1) {
        this.level = 1 //  市卫健委
        this.areaOptions = [
          { label: '思明区', value: '350203' },
          { label: '海沧区', value: '350205' },
          { label: '湖里区', value: '350206' },
          { label: '集美区', value: '350211' },
          { label: '同安区', value: '350212' },
          { label: '翔安区', value: '350213' }
        ]
      } else if (selectedRole.code.length == 6) {
        this.level = 2 // 区管理
        this.areaOptions = [{ label: selectedRole.name.substring(0, 3), value: selectedRole.code }]
        this.form = {
          range: 'town',
          area: selectedRole.code
        }
        this.getHospital(selectedRole.code)
      } else {
        this.level = 3 // 社区管理
        this.rangeOptions = [
          { label: '医院', value: 'hospital' },
          { label: '团队', value: 'team' }
        ]
        this.areaOptions = [{ label: selectedRole.name.substring(0, 3), value: selectedRole.code }]
        this.hospital = [{ label: selectedRole.name, value: selectedRole.code }]
        this.form = {
          range: 'hospital',
          area: selectedRole.code.substring(0, 6),
          hospital: selectedRole.code
        }
        this.getTeam(selectedRole.code)
      }
      this.initTime()
      this.getList()
    },
    initTime() {
      var vm = this
      var now = new Date()
@ -81,6 +106,18 @@ Vue.component('gxb-manage', {
        vm.years.push(i)
      }
    },
    resetArea() {
      if (this.level == 1) {
        delete this.form.area
        delete this.form.hospital
        delete this.form.team
      } else if (this.level == 2) {
        delete this.form.hospital
        delete this.form.team
      } else {
        delete this.form.team
      }
    },
    getList() {
      var vm = this
      this.loading = true
@ -95,11 +132,11 @@ Vue.component('gxb-manage', {
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1]+ ' 23:59'
          params.endDate = this.chooseTime[1] + ' 23:59'
        }
      }
      httpRequest.get('statistics/bed/getFamilyBedRecord', { data: params }).then(function (res) {
      httpRequest.get('statistics/collaborate/gxbScreenClosedLoop', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.tableData = res.detailModelList
          vm.total = res.totalCount
@ -113,7 +150,6 @@ Vue.component('gxb-manage', {
    },
    exportTable() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
@ -125,51 +161,42 @@ Vue.component('gxb-manage', {
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1]+ ' 23:59'
          params.endDate = this.chooseTime[1] + ' 23:59'
        }
      }
      this.exportLoading = true
      var fileName = `患者情况${new Date().getTime()}.xls`
      httpRequest.downLoadFileForAjax('statistics/bed/exportGatientFamilyBedRecordStatistics', fileName, params).then(function () {
      var fileName = `冠心病管理全流程闭环情况${new Date().getTime()}.xls`
      httpRequest.downLoadFileForAjax('statistics/collaborate/exportGxbScreenClosedLoop', fileName, params).then(function () {
        vm.exportLoading = false
      })
    },
    eliminateClick() {
      this.form = {}
      this.resetArea()
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
    },
    closeDialog() {
      this.dialogShow = false
    },
    previewRecord(row) {
    getHospital(code) {
      var vm = this
      this.dialogShow = true
      vm.dialogTable = []
      vm.settlementInfo = {}
      // doctor/familyBed/getFamilyBedSettleRecord?bedRecordCode=008d17ac9111439fab54f27c4e7f8376
      httpRequest.get('doctor/familyBed/getFamilyBedSettleRecord', { data: { bedRecordCode: row.code } }).then(function (res) {
        if (res.status == 200) {
          vm.dialogTable = res.data
          var pay = 0
          
          for(var item of res.data){
            pay += item.COST
          }
          vm.settlementInfo = {
            name: row.patientName,
            yibao: row.cardNo,
            pay: pay
          }
        }
      delete this.form.hospital
      delete this.form.team
      var params = {
        type: 5,
        code: code
      }
      httpRequest.post('common/district', { data: params }).then(function (res) {
        vm.hospitalOptions = res.list
      })
    },
    getDictData() {
    getTeam(code) {
      var vm = this
      statisticAPI.getDictByDictName({ name: 'jkcopd_disease_conversion' }).then(function (res) {
        vm.turnOverOptions = [{ value: '全部' }]
        vm.turnOverOptions = vm.turnOverOptions.concat(res.list)
      delete this.form.team
      var params = {
        hospital: code
      }
      httpRequest.get('statisticsExport/teamList', { data: params }).then(function (res) {
        vm.teamOptions = res.data
      })
    },
    handleCurrentChange(val) {
@ -182,8 +209,6 @@ Vue.component('gxb-manage', {
    }
  },
  mounted() {
    this.initTime()
    this.getDictData()
    this.getList()
    this.init()
  }
})

+ 18 - 7
component/statistics/GxbMz/index.html

@ -4,7 +4,7 @@
  <div class="copd-filter-group ui-col-1 bgc-fff" style="min-width: 900px">
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">
        <el-radio v-model="yearType" label="1">按上转年份:</el-radio>
        <el-radio v-model="yearType" label="1">按下转年份:</el-radio>
        <el-select v-model="chooseYear" class="formWidth wd160">
          <el-option v-for="(item , index) in years" :key="index" :label="item" :value="item"></el-option>
        </el-select>
@ -12,7 +12,7 @@
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14" style="display: flex; align-items: center">
        <el-radio v-model="yearType" label="2">自定义上转时间:</el-radio>
        <el-radio v-model="yearType" label="2">自定义下转时间:</el-radio>
        <el-date-picker
          v-model="chooseTime"
          type="daterange"
@ -24,17 +24,28 @@
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">数据范围:</label>
      <el-select class="formWidth" v-model="form.turnOver" placeholder="请选择">
        <el-option v-for="(option, index) in turnOverOptions" :label="option.value" :value="option.code"></el-option>
      <el-select class="formWidth" v-model="form.range" placeholder="请选择" @change="resetArea">
        <el-option v-for="(option, index) in rangeOptions" :label="option.label" :value="option.value" :key="option.value"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">地区:</label>
      <el-select class="formWidth" v-model="form.turnOver" placeholder="请选择">
        <el-option v-for="(option, index) in turnOverOptions" :label="option.value" :value="option.code"></el-option>
      <el-select class="formWidth" v-model="form.area" placeholder="请选择" @change="getHospital">
        <el-option v-for="(option, index) in areaOptions" :label="option.label" :value="option.value" :key="option.value"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20 pr20" v-if="form.range == 'hospital'||form.range == 'team'">
      <label class="c-333 c-f14">社区:</label>
      <el-select class="formWidth" v-model="form.hospital" placeholder="请选择" @change="getTeam">
        <el-option v-for="(option, index) in hospitalOptions" :label="option.name" :value="option.code" :key="option.code"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20 pr20" v-if="form.range == 'team'">
      <label class="c-333 c-f14">团队:</label>
      <el-select class="formWidth" v-model="form.team" placeholder="请选择">
        <el-option v-for="(option, index) in teamOptions" :label="option.name" :value="option.id" :key="option.id"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20">
      <el-button type="primary" size="mini" @click="queryDate">查询</el-button>
      <el-button type="ff9526" size="mini" @click="exportTable" :disabled="exportLoading">导出</el-button>

+ 101 - 77
component/statistics/GxbMz/index.js

@ -20,57 +20,81 @@ Vue.component('gxb-mz', {
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
      turnOverOptions: [],
      form: {},
      rangeOptions: [
        { label: '区', value: 'town' },
        { label: '医院', value: 'hospital' },
        { label: '团队', value: 'team' }
      ],
      areaOptions: [
        { label: '思明区', value: '350203' },
        { label: '海沧区', value: '350205' },
        { label: '湖里区', value: '350206' },
        { label: '集美区', value: '350211' },
        { label: '同安区', value: '350212' },
        { label: '翔安区', value: '350213' }
      ],
      hospitalOptions: [],
      teamOptions: [],
      form: {
        range: 'town'
      },
      loading: false,
      exportLoading: false,
      tableData: [],
      tableHeader: [
        { label: '住院号', prop: 'visitNo', width: '110' },
        { label: '病人姓名', prop: 'patientName', width: '90' },
        { label: '性别', prop: 'sex', width: '80' },
        { label: '手机号', prop: 'mobile', width: '130' },
        { label: '身份证号', prop: 'idcard', width: '170' },
        { label: '费别', prop: 'rateTypeName', width: '90' },
        { label: '建床科室', prop: 'sickVisitDeptName', width: '90' },
        { label: '护理等级', prop: 'sickTendLevelName', width: '90' },
        { label: '病情', prop: 'sickStateName', width: '110' },
        { label: '建床诊断', prop: 'sickDiagnoseCodeName', width: '110' },
        { label: '建床日期', prop: 'buildingTime', width: '170' },
        { label: '建床天数', prop: 'budildDays', width: '90' },
        { label: '撤床日期', prop: 'withdrawalTime', width: '130' },
        { label: '撤床诊断', prop: 'bedWithdrawDiagnoseName', width: '130' },
        { label: '转归情况', prop: 'turnOver', width: '110' }
      ],
      dialogShow: false,
      settlementInfo: {
        name: '黄小蕾',
        yibao: 'dk',
        pay: '1049'
      },
      dialogTable: [],
      dialogHeader: [
        { label: '结算时间', prop: 'SETTLE_TIME', width: '160' },
        { label: '结算状态', prop: 'SETTLE_STATUS_NAME', width: '80' },
        { label: '金额', prop: 'COST', width: '80' },
        { label: '自付', prop: 'CHARGE', width: '80' },
        { label: '优惠金额', prop: 'PREFER_PAYMENT', width: '80' },
        { label: '减免金额', prop: 'DERATE_PAYMENT', width: '80' },
        { label: '单位支付', prop: 'COMPANY_PAYMENT', width: '80' },
        { label: '医保支付', prop: 'INSUR_PAYMENT', width: '80' },
        { label: '结算总预交金', prop: 'SETTLE_SUM_PREPAY', width: '120' },
        { label: '结算时收退款', prop: 'SETTLE_SICK_PREPAY', width: '120' },
        { label: '结算后余额', prop: 'SETTLE_SICK_BALANCE', width: '120' },
        { label: '结算号', prop: 'SETTLE_NO', width: '80' },
        { label: '就诊科室', prop: 'VISIT_DEPT_NAME', width: '100' },
        { label: '收费科室', prop: 'SETTLE_DEPT_NAME', width: '100' }
        { label: '名称', prop: 'name', width: '110' },
        { label: '已下转次数', prop: 'totalTimes', width: '90' },
        { label: '门诊下转次数', prop: 'mzTimes', width: '90' },
        { label: '已下转人数', prop: 'totalNum ', width: '110' },
        { label: '门诊下转人数', prop: 'mzNum', width: '110' },
        { label: '门诊下转已评估', prop: 'screenNum', width: '110' },
        { label: '门诊下转未评估', prop: 'unScreenNum', width: '110' },
      ],
      page: 1,
      size: 10,
      total: 0
      total: 0,
      level: 0
    }
  },
  methods: {
    init() {
      var selectedRole = JSON.parse(sessionStorage.getItem('selectedRole'))
      if (selectedRole.code.indexOf('350200') > -1) {
        this.level = 1 //  市卫健委
        this.areaOptions = [
          { label: '思明区', value: '350203' },
          { label: '海沧区', value: '350205' },
          { label: '湖里区', value: '350206' },
          { label: '集美区', value: '350211' },
          { label: '同安区', value: '350212' },
          { label: '翔安区', value: '350213' }
        ]
      } else if (selectedRole.code.length == 6) {
        this.level = 2 // 区管理
        this.areaOptions = [{ label: selectedRole.name.substring(0, 3), value: selectedRole.code }]
        this.form = {
          range: 'town',
          area: selectedRole.code
        }
        this.getHospital(selectedRole.code)
      } else {
        this.level = 3 // 社区管理
        this.rangeOptions = [
          { label: '医院', value: 'hospital' },
          { label: '团队', value: 'team' }
        ]
        this.areaOptions = [{ label: selectedRole.name.substring(0, 3), value: selectedRole.code }]
        this.hospital = [{ label: selectedRole.name, value: selectedRole.code }]
        this.form = {
          range: 'hospital',
          area: selectedRole.code.substring(0, 6),
          hospital: selectedRole.code
        }
        this.getTeam(selectedRole.code)
      }
      this.initTime()
      this.getList()
    },
    initTime() {
      var vm = this
      var now = new Date()
@ -81,6 +105,18 @@ Vue.component('gxb-mz', {
        vm.years.push(i)
      }
    },
    resetArea() {
      if (this.level == 1) {
        delete this.form.area
        delete this.form.hospital
        delete this.form.team
      } else if (this.level == 2) {
        delete this.form.hospital
        delete this.form.team
      } else {
        delete this.form.team
      }
    },
    getList() {
      var vm = this
      this.loading = true
@ -95,11 +131,11 @@ Vue.component('gxb-mz', {
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1]+ ' 23:59'
          params.endDate = this.chooseTime[1] + ' 23:59'
        }
      }
      httpRequest.get('statistics/bed/getFamilyBedRecord', { data: params }).then(function (res) {
      httpRequest.get('statistics/collaborate/gxbMzTurnDownInfo', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.tableData = res.detailModelList
          vm.total = res.totalCount
@ -113,7 +149,6 @@ Vue.component('gxb-mz', {
    },
    exportTable() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
@ -125,51 +160,42 @@ Vue.component('gxb-mz', {
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1]+ ' 23:59'
          params.endDate = this.chooseTime[1] + ' 23:59'
        }
      }
      this.exportLoading = true
      var fileName = `患者情况${new Date().getTime()}.xls`
      httpRequest.downLoadFileForAjax('statistics/bed/exportGatientFamilyBedRecordStatistics', fileName, params).then(function () {
      var fileName = `冠心病门诊下转统计表${new Date().getTime()}.xls`
      httpRequest.downLoadFileForAjax('statistics/collaborate/exportGxbMzTurnDownInfo', fileName, params).then(function () {
        vm.exportLoading = false
      })
    },
    eliminateClick() {
      this.form = {}
      this.resetArea()
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
    },
    closeDialog() {
      this.dialogShow = false
    },
    previewRecord(row) {
    getHospital(code) {
      var vm = this
      this.dialogShow = true
      vm.dialogTable = []
      vm.settlementInfo = {}
      // doctor/familyBed/getFamilyBedSettleRecord?bedRecordCode=008d17ac9111439fab54f27c4e7f8376
      httpRequest.get('doctor/familyBed/getFamilyBedSettleRecord', { data: { bedRecordCode: row.code } }).then(function (res) {
        if (res.status == 200) {
          vm.dialogTable = res.data
          var pay = 0
          
          for(var item of res.data){
            pay += item.COST
          }
          vm.settlementInfo = {
            name: row.patientName,
            yibao: row.cardNo,
            pay: pay
          }
        }
      delete this.form.hospital
      delete this.form.team
      var params = {
        type: 5,
        code: code
      }
      httpRequest.post('common/district', { data: params }).then(function (res) {
        vm.hospitalOptions = res.list
      })
    },
    getDictData() {
    getTeam(code) {
      var vm = this
      statisticAPI.getDictByDictName({ name: 'jkcopd_disease_conversion' }).then(function (res) {
        vm.turnOverOptions = [{ value: '全部' }]
        vm.turnOverOptions = vm.turnOverOptions.concat(res.list)
      delete this.form.team
      var params = {
        hospital: code
      }
      httpRequest.get('statisticsExport/teamList', { data: params }).then(function (res) {
        vm.teamOptions = res.data
      })
    },
    handleCurrentChange(val) {
@ -182,8 +208,6 @@ Vue.component('gxb-mz', {
    }
  },
  mounted() {
    this.initTime()
    this.getDictData()
    this.getList()
    this.init()
  }
})

+ 16 - 5
component/statistics/GxbTurnup/index.html

@ -24,17 +24,28 @@
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">数据范围:</label>
      <el-select class="formWidth" v-model="form.turnOver" placeholder="请选择">
        <el-option v-for="(option, index) in turnOverOptions" :label="option.value" :value="option.code"></el-option>
      <el-select class="formWidth" v-model="form.range" placeholder="请选择" @change="resetArea">
        <el-option v-for="(option, index) in rangeOptions" :label="option.label" :value="option.value" :key="option.value"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">地区:</label>
      <el-select class="formWidth" v-model="form.turnOver" placeholder="请选择">
        <el-option v-for="(option, index) in turnOverOptions" :label="option.value" :value="option.code"></el-option>
      <el-select class="formWidth" v-model="form.area" placeholder="请选择" @change="getHospital">
        <el-option v-for="(option, index) in areaOptions" :label="option.label" :value="option.value" :key="option.value"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20 pr20" v-if="form.range == 'hospital'||form.range == 'team'">
      <label class="c-333 c-f14">社区:</label>
      <el-select class="formWidth" v-model="form.hospital" placeholder="请选择" @change="getTeam">
        <el-option v-for="(option, index) in hospitalOptions" :label="option.name" :value="option.code" :key="option.code"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20 pr20" v-if="form.range == 'team'">
      <label class="c-333 c-f14">团队:</label>
      <el-select class="formWidth" v-model="form.team" placeholder="请选择">
        <el-option v-for="(option, index) in teamOptions" :label="option.name" :value="option.id" :key="option.id"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20">
      <el-button type="primary" size="mini" @click="queryDate">查询</el-button>
      <el-button type="ff9526" size="mini" @click="exportTable" :disabled="exportLoading">导出</el-button>

+ 100 - 77
component/statistics/GxbTurnup/index.js

@ -20,57 +20,80 @@ Vue.component('gxb-turnup', {
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
      turnOverOptions: [],
      form: {},
      rangeOptions: [
        { label: '区', value: 'town' },
        { label: '医院', value: 'hospital' },
        { label: '团队', value: 'team' }
      ],
      areaOptions: [
        { label: '思明区', value: '350203' },
        { label: '海沧区', value: '350205' },
        { label: '湖里区', value: '350206' },
        { label: '集美区', value: '350211' },
        { label: '同安区', value: '350212' },
        { label: '翔安区', value: '350213' }
      ],
      hospitalOptions: [],
      teamOptions: [],
      form: {
        range: 'town'
      },
      loading: false,
      exportLoading: false,
      tableData: [],
      tableHeader: [
        { label: '住院号', prop: 'visitNo', width: '110' },
        { label: '病人姓名', prop: 'patientName', width: '90' },
        { label: '性别', prop: 'sex', width: '80' },
        { label: '手机号', prop: 'mobile', width: '130' },
        { label: '身份证号', prop: 'idcard', width: '170' },
        { label: '费别', prop: 'rateTypeName', width: '90' },
        { label: '建床科室', prop: 'sickVisitDeptName', width: '90' },
        { label: '护理等级', prop: 'sickTendLevelName', width: '90' },
        { label: '病情', prop: 'sickStateName', width: '110' },
        { label: '建床诊断', prop: 'sickDiagnoseCodeName', width: '110' },
        { label: '建床日期', prop: 'buildingTime', width: '170' },
        { label: '建床天数', prop: 'budildDays', width: '90' },
        { label: '撤床日期', prop: 'withdrawalTime', width: '130' },
        { label: '撤床诊断', prop: 'bedWithdrawDiagnoseName', width: '130' },
        { label: '转归情况', prop: 'turnOver', width: '110' }
      ],
      dialogShow: false,
      settlementInfo: {
        name: '黄小蕾',
        yibao: 'dk',
        pay: '1049'
      },
      dialogTable: [],
      dialogHeader: [
        { label: '结算时间', prop: 'SETTLE_TIME', width: '160' },
        { label: '结算状态', prop: 'SETTLE_STATUS_NAME', width: '80' },
        { label: '金额', prop: 'COST', width: '80' },
        { label: '自付', prop: 'CHARGE', width: '80' },
        { label: '优惠金额', prop: 'PREFER_PAYMENT', width: '80' },
        { label: '减免金额', prop: 'DERATE_PAYMENT', width: '80' },
        { label: '单位支付', prop: 'COMPANY_PAYMENT', width: '80' },
        { label: '医保支付', prop: 'INSUR_PAYMENT', width: '80' },
        { label: '结算总预交金', prop: 'SETTLE_SUM_PREPAY', width: '120' },
        { label: '结算时收退款', prop: 'SETTLE_SICK_PREPAY', width: '120' },
        { label: '结算后余额', prop: 'SETTLE_SICK_BALANCE', width: '120' },
        { label: '结算号', prop: 'SETTLE_NO', width: '80' },
        { label: '就诊科室', prop: 'VISIT_DEPT_NAME', width: '100' },
        { label: '收费科室', prop: 'SETTLE_DEPT_NAME', width: '100' }
        { label: '名称', prop: 'name', width: '110' },
        { label: '已上转人次', prop: 'turnUpTimes', width: '110' },
        { label: '上转转门诊', prop: 'mzTimes ', width: '110' },
        { label: '上转转门诊转化率', prop: 'mzRate', width: '130' },
        { label: '门诊转住院', prop: 'zyTimes', width: '110' },
        { label: '门诊转住院转化率', prop: 'zyRate', width: '130' },
      ],
      page: 1,
      size: 10,
      total: 0
      total: 0,
      level: 0
    }
  },
  methods: {
    init() {
      var selectedRole = JSON.parse(sessionStorage.getItem('selectedRole'))
      if (selectedRole.code.indexOf('350200') > -1) {
        this.level = 1 //  市卫健委
        this.areaOptions = [
          { label: '思明区', value: '350203' },
          { label: '海沧区', value: '350205' },
          { label: '湖里区', value: '350206' },
          { label: '集美区', value: '350211' },
          { label: '同安区', value: '350212' },
          { label: '翔安区', value: '350213' }
        ]
      } else if (selectedRole.code.length == 6) {
        this.level = 2 // 区管理
        this.areaOptions = [{ label: selectedRole.name.substring(0, 3), value: selectedRole.code }]
        this.form = {
          range: 'town',
          area: selectedRole.code
        }
        this.getHospital(selectedRole.code)
      } else {
        this.level = 3 // 社区管理
        this.rangeOptions = [
          { label: '医院', value: 'hospital' },
          { label: '团队', value: 'team' }
        ]
        this.areaOptions = [{ label: selectedRole.name.substring(0, 3), value: selectedRole.code }]
        this.hospital = [{ label: selectedRole.name, value: selectedRole.code }]
        this.form = {
          range: 'hospital',
          area: selectedRole.code.substring(0, 6),
          hospital: selectedRole.code
        }
        this.getTeam(selectedRole.code)
      }
      this.initTime()
      this.getList()
    },
    initTime() {
      var vm = this
      var now = new Date()
@ -81,6 +104,18 @@ Vue.component('gxb-turnup', {
        vm.years.push(i)
      }
    },
    resetArea() {
      if (this.level == 1) {
        delete this.form.area
        delete this.form.hospital
        delete this.form.team
      } else if (this.level == 2) {
        delete this.form.hospital
        delete this.form.team
      } else {
        delete this.form.team
      }
    },
    getList() {
      var vm = this
      this.loading = true
@ -95,11 +130,11 @@ Vue.component('gxb-turnup', {
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1]+ ' 23:59'
          params.endDate = this.chooseTime[1] + ' 23:59'
        }
      }
      httpRequest.get('statistics/bed/getFamilyBedRecord', { data: params }).then(function (res) {
      httpRequest.get('statistics/collaborate/gxbTurnUpInfo', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.tableData = res.detailModelList
          vm.total = res.totalCount
@ -113,7 +148,6 @@ Vue.component('gxb-turnup', {
    },
    exportTable() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
@ -125,51 +159,42 @@ Vue.component('gxb-turnup', {
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1]+ ' 23:59'
          params.endDate = this.chooseTime[1] + ' 23:59'
        }
      }
      this.exportLoading = true
      var fileName = `患者情况${new Date().getTime()}.xls`
      httpRequest.downLoadFileForAjax('statistics/bed/exportGatientFamilyBedRecordStatistics', fileName, params).then(function () {
      var fileName = `冠心病上转情况表${new Date().getTime()}.xls`
      httpRequest.downLoadFileForAjax('statistics/collaborate/exportGxbTurnUpInfo', fileName, params).then(function () {
        vm.exportLoading = false
      })
    },
    eliminateClick() {
      this.form = {}
      this.resetArea()
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
    },
    closeDialog() {
      this.dialogShow = false
    },
    previewRecord(row) {
    getHospital(code) {
      var vm = this
      this.dialogShow = true
      vm.dialogTable = []
      vm.settlementInfo = {}
      // doctor/familyBed/getFamilyBedSettleRecord?bedRecordCode=008d17ac9111439fab54f27c4e7f8376
      httpRequest.get('doctor/familyBed/getFamilyBedSettleRecord', { data: { bedRecordCode: row.code } }).then(function (res) {
        if (res.status == 200) {
          vm.dialogTable = res.data
          var pay = 0
          
          for(var item of res.data){
            pay += item.COST
          }
          vm.settlementInfo = {
            name: row.patientName,
            yibao: row.cardNo,
            pay: pay
          }
        }
      delete this.form.hospital
      delete this.form.team
      var params = {
        type: 5,
        code: code
      }
      httpRequest.post('common/district', { data: params }).then(function (res) {
        vm.hospitalOptions = res.list
      })
    },
    getDictData() {
    getTeam(code) {
      var vm = this
      statisticAPI.getDictByDictName({ name: 'jkcopd_disease_conversion' }).then(function (res) {
        vm.turnOverOptions = [{ value: '全部' }]
        vm.turnOverOptions = vm.turnOverOptions.concat(res.list)
      delete this.form.team
      var params = {
        hospital: code
      }
      httpRequest.get('statisticsExport/teamList', { data: params }).then(function (res) {
        vm.teamOptions = res.data
      })
    },
    handleCurrentChange(val) {
@ -182,8 +207,6 @@ Vue.component('gxb-turnup', {
    }
  },
  mounted() {
    this.initTime()
    this.getDictData()
    this.getList()
    this.init()
  }
})

+ 1 - 1
component/statistics/PatientSituation/index.js

@ -99,7 +99,7 @@ Vue.component('patient-situation', {
        }
      }
      httpRequest.get('statistics/bed/getFamilyBedRecord', { data: params }).then(function (res) {
      httpRequest.get('statistics/bed/getPatientFamilyBedRecordStatistics', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.tableData = res.detailModelList
          vm.total = res.totalCount

+ 18 - 7
component/statistics/SignSituation/index.html

@ -4,7 +4,7 @@
  <div class="copd-filter-group ui-col-1 bgc-fff" style="min-width: 900px">
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">
        <el-radio v-model="yearType" label="1">按筛查年份:</el-radio>
        <el-radio v-model="yearType" label="1">按下转年份:</el-radio>
        <el-select v-model="chooseYear" class="formWidth wd160">
          <el-option v-for="(item , index) in years" :key="index" :label="item" :value="item"></el-option>
        </el-select>
@ -12,7 +12,7 @@
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14" style="display: flex; align-items: center">
        <el-radio v-model="yearType" label="2">自定义筛查时间:</el-radio>
        <el-radio v-model="yearType" label="2">自定义下转时间:</el-radio>
        <el-date-picker
          v-model="chooseTime"
          type="daterange"
@ -24,17 +24,28 @@
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">数据范围:</label>
      <el-select class="formWidth" v-model="form.turnOver" placeholder="请选择">
        <el-option v-for="(option, index) in turnOverOptions" :label="option.value" :value="option.code"></el-option>
      <el-select class="formWidth" v-model="form.range" placeholder="请选择" @change="resetArea">
        <el-option v-for="(option, index) in rangeOptions" :label="option.label" :value="option.value" :key="option.value"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">地区:</label>
      <el-select class="formWidth" v-model="form.turnOver" placeholder="请选择">
        <el-option v-for="(option, index) in turnOverOptions" :label="option.value" :value="option.code"></el-option>
      <el-select class="formWidth" v-model="form.area" placeholder="请选择" @change="getHospital">
        <el-option v-for="(option, index) in areaOptions" :label="option.label" :value="option.value" :key="option.value"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20 pr20" v-if="form.range == 'hospital'||form.range == 'team'">
      <label class="c-333 c-f14">社区:</label>
      <el-select class="formWidth" v-model="form.hospital" placeholder="请选择" @change="getTeam">
        <el-option v-for="(option, index) in hospitalOptions" :label="option.name" :value="option.code" :key="option.code"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20 pr20" v-if="form.range == 'team'">
      <label class="c-333 c-f14">团队:</label>
      <el-select class="formWidth" v-model="form.team" placeholder="请选择">
        <el-option v-for="(option, index) in teamOptions" :label="option.name" :value="option.id" :key="option.id"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20">
      <el-button type="primary" size="mini" @click="queryDate">查询</el-button>
      <el-button type="ff9526" size="mini" @click="exportTable" :disabled="exportLoading">导出</el-button>

+ 101 - 77
component/statistics/SignSituation/index.js

@ -20,57 +20,81 @@ Vue.component('sign-situation', {
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
      turnOverOptions: [],
      form: {},
      rangeOptions: [
        { label: '区', value: 'town' },
        { label: '医院', value: 'hospital' },
        { label: '团队', value: 'team' }
      ],
      areaOptions: [
        { label: '思明区', value: '350203' },
        { label: '海沧区', value: '350205' },
        { label: '湖里区', value: '350206' },
        { label: '集美区', value: '350211' },
        { label: '同安区', value: '350212' },
        { label: '翔安区', value: '350213' }
      ],
      hospitalOptions: [],
      teamOptions: [],
      form: {
        range: 'town'
      },
      loading: false,
      exportLoading: false,
      tableData: [],
      tableHeader: [
        { label: '住院号', prop: 'visitNo', width: '110' },
        { label: '病人姓名', prop: 'patientName', width: '90' },
        { label: '性别', prop: 'sex', width: '80' },
        { label: '手机号', prop: 'mobile', width: '130' },
        { label: '身份证号', prop: 'idcard', width: '170' },
        { label: '费别', prop: 'rateTypeName', width: '90' },
        { label: '建床科室', prop: 'sickVisitDeptName', width: '90' },
        { label: '护理等级', prop: 'sickTendLevelName', width: '90' },
        { label: '病情', prop: 'sickStateName', width: '110' },
        { label: '建床诊断', prop: 'sickDiagnoseCodeName', width: '110' },
        { label: '建床日期', prop: 'buildingTime', width: '170' },
        { label: '建床天数', prop: 'budildDays', width: '90' },
        { label: '撤床日期', prop: 'withdrawalTime', width: '130' },
        { label: '撤床诊断', prop: 'bedWithdrawDiagnoseName', width: '130' },
        { label: '转归情况', prop: 'turnOver', width: '110' }
      ],
      dialogShow: false,
      settlementInfo: {
        name: '黄小蕾',
        yibao: 'dk',
        pay: '1049'
      },
      dialogTable: [],
      dialogHeader: [
        { label: '结算时间', prop: 'SETTLE_TIME', width: '160' },
        { label: '结算状态', prop: 'SETTLE_STATUS_NAME', width: '80' },
        { label: '金额', prop: 'COST', width: '80' },
        { label: '自付', prop: 'CHARGE', width: '80' },
        { label: '优惠金额', prop: 'PREFER_PAYMENT', width: '80' },
        { label: '减免金额', prop: 'DERATE_PAYMENT', width: '80' },
        { label: '单位支付', prop: 'COMPANY_PAYMENT', width: '80' },
        { label: '医保支付', prop: 'INSUR_PAYMENT', width: '80' },
        { label: '结算总预交金', prop: 'SETTLE_SUM_PREPAY', width: '120' },
        { label: '结算时收退款', prop: 'SETTLE_SICK_PREPAY', width: '120' },
        { label: '结算后余额', prop: 'SETTLE_SICK_BALANCE', width: '120' },
        { label: '结算号', prop: 'SETTLE_NO', width: '80' },
        { label: '就诊科室', prop: 'VISIT_DEPT_NAME', width: '100' },
        { label: '收费科室', prop: 'SETTLE_DEPT_NAME', width: '100' }
        { label: '名称', prop: 'name', width: '110' },
        { label: '已下转次数', prop: 'totalTimes', width: '90' },
        { label: '门诊下转次数', prop: 'mzTimes', width: '90' },
        { label: '已下转人数', prop: 'totalNum ', width: '110' },
        { label: '门诊下转人数', prop: 'mzNum', width: '110' },
        { label: '门诊下转已评估', prop: 'screenNum', width: '110' },
        { label: '门诊下转未评估', prop: 'unScreenNum', width: '110' },
      ],
      page: 1,
      size: 10,
      total: 0
      total: 0,
      level: 0
    }
  },
  methods: {
    init() {
      var selectedRole = JSON.parse(sessionStorage.getItem('selectedRole'))
      if (selectedRole.code.indexOf('350200') > -1) {
        this.level = 1 //  市卫健委
        this.areaOptions = [
          { label: '思明区', value: '350203' },
          { label: '海沧区', value: '350205' },
          { label: '湖里区', value: '350206' },
          { label: '集美区', value: '350211' },
          { label: '同安区', value: '350212' },
          { label: '翔安区', value: '350213' }
        ]
      } else if (selectedRole.code.length == 6) {
        this.level = 2 // 区管理
        this.areaOptions = [{ label: selectedRole.name.substring(0, 3), value: selectedRole.code }]
        this.form = {
          range: 'town',
          area: selectedRole.code
        }
        this.getHospital(selectedRole.code)
      } else {
        this.level = 3 // 社区管理
        this.rangeOptions = [
          { label: '医院', value: 'hospital' },
          { label: '团队', value: 'team' }
        ]
        this.areaOptions = [{ label: selectedRole.name.substring(0, 3), value: selectedRole.code }]
        this.hospital = [{ label: selectedRole.name, value: selectedRole.code }]
        this.form = {
          range: 'hospital',
          area: selectedRole.code.substring(0, 6),
          hospital: selectedRole.code
        }
        this.getTeam(selectedRole.code)
      }
      this.initTime()
      this.getList()
    },
    initTime() {
      var vm = this
      var now = new Date()
@ -81,6 +105,18 @@ Vue.component('sign-situation', {
        vm.years.push(i)
      }
    },
    resetArea() {
      if (this.level == 1) {
        delete this.form.area
        delete this.form.hospital
        delete this.form.team
      } else if (this.level == 2) {
        delete this.form.hospital
        delete this.form.team
      } else {
        delete this.form.team
      }
    },
    getList() {
      var vm = this
      this.loading = true
@ -95,11 +131,11 @@ Vue.component('sign-situation', {
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1]+ ' 23:59'
          params.endDate = this.chooseTime[1] + ' 23:59'
        }
      }
      httpRequest.get('statistics/bed/getFamilyBedRecord', { data: params }).then(function (res) {
      httpRequest.get('statistics/collaborate/gxbMzTurnDownInfo', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.tableData = res.detailModelList
          vm.total = res.totalCount
@ -113,7 +149,6 @@ Vue.component('sign-situation', {
    },
    exportTable() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
@ -125,51 +160,42 @@ Vue.component('sign-situation', {
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1]+ ' 23:59'
          params.endDate = this.chooseTime[1] + ' 23:59'
        }
      }
      this.exportLoading = true
      var fileName = `患者情况${new Date().getTime()}.xls`
      httpRequest.downLoadFileForAjax('statistics/bed/exportGatientFamilyBedRecordStatistics', fileName, params).then(function () {
      var fileName = `冠心病门诊下转统计表${new Date().getTime()}.xls`
      httpRequest.downLoadFileForAjax('statistics/collaborate/exportGxbMzTurnDownInfo', fileName, params).then(function () {
        vm.exportLoading = false
      })
    },
    eliminateClick() {
      this.form = {}
      this.resetArea()
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
    },
    closeDialog() {
      this.dialogShow = false
    },
    previewRecord(row) {
    getHospital(code) {
      var vm = this
      this.dialogShow = true
      vm.dialogTable = []
      vm.settlementInfo = {}
      // doctor/familyBed/getFamilyBedSettleRecord?bedRecordCode=008d17ac9111439fab54f27c4e7f8376
      httpRequest.get('doctor/familyBed/getFamilyBedSettleRecord', { data: { bedRecordCode: row.code } }).then(function (res) {
        if (res.status == 200) {
          vm.dialogTable = res.data
          var pay = 0
          
          for(var item of res.data){
            pay += item.COST
          }
          vm.settlementInfo = {
            name: row.patientName,
            yibao: row.cardNo,
            pay: pay
          }
        }
      delete this.form.hospital
      delete this.form.team
      var params = {
        type: 5,
        code: code
      }
      httpRequest.post('common/district', { data: params }).then(function (res) {
        vm.hospitalOptions = res.list
      })
    },
    getDictData() {
    getTeam(code) {
      var vm = this
      statisticAPI.getDictByDictName({ name: 'jkcopd_disease_conversion' }).then(function (res) {
        vm.turnOverOptions = [{ value: '全部' }]
        vm.turnOverOptions = vm.turnOverOptions.concat(res.list)
      delete this.form.team
      var params = {
        hospital: code
      }
      httpRequest.get('statisticsExport/teamList', { data: params }).then(function (res) {
        vm.teamOptions = res.data
      })
    },
    handleCurrentChange(val) {
@ -182,8 +208,6 @@ Vue.component('sign-situation', {
    }
  },
  mounted() {
    this.initTime()
    this.getDictData()
    this.getList()
    this.init()
  }
})