hd 1 тиждень тому
батько
коміт
d5ceab1420
34 змінених файлів з 3063 додано та 12 видалено
  1. 24 0
      app/statistics/html/comprehensive-query.html
  2. 2 2
      component/statistics/BedCheck/index.html
  3. 0 1
      component/statistics/BedCheck/index.js
  4. 2 2
      component/statistics/BuildBed/index.html
  5. 0 1
      component/statistics/BuildBed/index.js
  6. 59 0
      component/statistics/FollowDetail/index.html
  7. 189 0
      component/statistics/FollowDetail/index.js
  8. 59 0
      component/statistics/FollowRecord/index.html
  9. 189 0
      component/statistics/FollowRecord/index.js
  10. 59 0
      component/statistics/GxbCy/index.html
  11. 189 0
      component/statistics/GxbCy/index.js
  12. 70 0
      component/statistics/GxbEvaluation/index.html
  13. 234 0
      component/statistics/GxbEvaluation/index.js
  14. 59 0
      component/statistics/GxbManage/index.html
  15. 189 0
      component/statistics/GxbManage/index.js
  16. 59 0
      component/statistics/GxbMz/index.html
  17. 189 0
      component/statistics/GxbMz/index.js
  18. 59 0
      component/statistics/GxbTurnup/index.html
  19. 189 0
      component/statistics/GxbTurnup/index.js
  20. 59 0
      component/statistics/JzSituation/index.html
  21. 189 0
      component/statistics/JzSituation/index.js
  22. 0 1
      component/statistics/PatientSituation/index.js
  23. 1 1
      component/statistics/PlanService/index.html
  24. 0 1
      component/statistics/PlanService/index.js
  25. 2 2
      component/statistics/Referral/index.html
  26. 0 1
      component/statistics/Referral/index.js
  27. 59 0
      component/statistics/SignSituation/index.html
  28. 189 0
      component/statistics/SignSituation/index.js
  29. 59 0
      component/statistics/TurndownAnalysis/index.html
  30. 189 0
      component/statistics/TurndownAnalysis/index.js
  31. 59 0
      component/statistics/TurndownDetail/index.html
  32. 189 0
      component/statistics/TurndownDetail/index.js
  33. 59 0
      component/statistics/reservationSituation/index.html
  34. 189 0
      component/statistics/reservationSituation/index.js

+ 24 - 0
app/statistics/html/comprehensive-query.html

@ -885,6 +885,18 @@
                  <bed-check v-if="handleNodeId == 74"></bed-check>
                  <referral v-if="handleNodeId == 75"></referral>
                  <call-record v-if="handleNodeId == 76"></call-record>
                  <gxb-evaluation v-if="handleNodeId == 77"></gxb-evaluation>
                  <gxb-turnup v-if="handleNodeId == 78"></gxb-turnup>
                  <gxb-mz v-if="handleNodeId == 79"></gxb-mz>
                  <gxb-cy v-if="handleNodeId == 80"></gxb-cy>
                  <gxb-manage v-if="handleNodeId == 81"></gxb-manage>
                  <sign-situation v-if="handleNodeId == 82"></sign-situation>
                  <jz-situation v-if="handleNodeId == 83"></jz-situation>
                  <turndown-analysis v-if="handleNodeId == 84"></turndown-analysis>
                  <follow-record v-if="handleNodeId == 85"></follow-record>
                  <follow-detail v-if="handleNodeId == 86"></follow-detail>
                  <turndown-detail v-if="handleNodeId == 87"></turndown-detail>
                  <reservation-situation v-if="handleNodeId == 88"></reservation-situation>
                </div>
                <div v-if="handleNodeShow == 3">
                  <el-table v-if="collectCode == 1" border :data="diseaseReport" style="width: 100%" v-loading="loadingTwo" class="mt20">
@ -1011,5 +1023,17 @@
    <script src="../../../component/statistics/BedCheck/index.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../component/statistics/Referral/index.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../component/statistics/CallRecord/index.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../component/statistics/GxbEvaluation/index.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../component/statistics/GxbTurnUp/index.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../component/statistics/GxbMz/index.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../component/statistics/GxbCy/index.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../component/statistics/GxbManage/index.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../component/statistics/SignSituation/index.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../component/statistics/JzSituation/index.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../component/statistics/TurndownAnalysis/index.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../component/statistics/FollowRecord/index.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../component/statistics/FollowDetail/index.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../component/statistics/TurndownDetail/index.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../component/statistics/ReservationSituation/index.js" type="text/javascript" charset="utf-8"></script>
  </body>
</html>

+ 2 - 2
component/statistics/BedCheck/index.html

@ -33,11 +33,11 @@
    <div class="searchDiv pb20">
      <el-button type="primary" size="mini" @click="queryDate">查询</el-button>
      <el-button type="ff9526" size="mini" @click="exportTable">导出</el-button>
      <el-button type="ff9526" size="mini" @click="exportTable" :disabled="exportLoading">导出</el-button>
      <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
    </div>
  </div>
  <el-table :data="tableData" style="width: 100%">
  <el-table :data="tableData" style="width: 100%" v-loading="loading">
    <el-table-column type="index" min-width="60" label="序号"></el-table-column>
    <el-table-column :label="item.label" v-for="item in tableHeader" :key="item.prop">
      <template slot-scope="scope">{{scope.row[item.prop]}}</template>

+ 0 - 1
component/statistics/BedCheck/index.js

@ -99,7 +99,6 @@ Vue.component('bed-check', {
    },
    exportTable() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,

+ 2 - 2
component/statistics/BuildBed/index.html

@ -49,11 +49,11 @@
    </div>
    <div class="searchDiv pb20">
      <el-button type="primary" size="mini" @click="queryDate">查询</el-button>
      <el-button type="ff9526" size="mini" @click="exportTable">导出</el-button>
      <el-button type="ff9526" size="mini" @click="exportTable" :disabled="exportLoading">导出</el-button>
      <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
    </div>
  </div>
  <el-table :data="tableData" style="width: 100%">
  <el-table :data="tableData" style="width: 100%" v-loading="loading">
    <el-table-column type="index" min-width="60" label="序号"></el-table-column>
    <el-table-column :label="item.label" v-for="item in tableHeader" :min-width="item.width" :key="item.prop">
      <template slot-scope="scope">{{scope.row[item.prop]}}</template>

+ 0 - 1
component/statistics/BuildBed/index.js

@ -86,7 +86,6 @@ Vue.component('build-bed', {
    },
    exportTable() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,

+ 59 - 0
component/statistics/FollowDetail/index.html

@ -0,0 +1,59 @@
<!-- css文件位置位于/component/common/jtbc.css -->
<div id="app" class="jtbc">
  <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-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>
      </label>
    </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-date-picker
          v-model="chooseTime"
          type="daterange"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          value-format="yyyy-MM-dd"></el-date-picker>
      </label>
    </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>
    </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>
    </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>
      <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
    </div>
  </div>
  <el-table :data="tableData" style="width: 100%" v-loading="loading">
    <el-table-column type="index" min-width="60" label="序号"></el-table-column>
    <el-table-column :label="item.label" v-for="item in tableHeader" :min-width="item.width" :key="item.prop">
      <template slot-scope="scope">{{scope.row[item.prop]}}</template>
    </el-table-column>
  </el-table>
  <el-pagination
    @current-change="handleCurrentChange"
    @size-change="handleSizeChange"
    :current-page.sync="page"
    :page-size="size"
    :page-sizes="[10, 20, 50]"
    layout="total, sizes, prev, pager, next, jumper"
    :total="total"
    class="pagination"></el-pagination>
</div>

+ 189 - 0
component/statistics/FollowDetail/index.js

@ -0,0 +1,189 @@
var template = ''
$.ajax('../../../component/statistics/FollowDetail/index.html', {
  data: {},
  dataType: 'html',
  cache: false,
  timeout: 60000,
  async: false,
  error: function (res) {},
  success: function (res) {
    template = res
  }
})
Vue.component('follow-detail', {
  template: template,
  props: [],
  data: function () {
    return {
      years: [],
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
      turnOverOptions: [],
      form: {},
      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' }
      ],
      page: 1,
      size: 10,
      total: 0
    }
  },
  methods: {
    initTime() {
      var vm = this
      var now = new Date()
      vm.nowyear = vm.chooseYear = now.getFullYear()
      vm.years = []
      for (i = vm.nowyear; i >= 2013; i--) {
        vm.years.push(i)
      }
    },
    getList() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1]+ ' 23:59'
        }
      }
      httpRequest.get('statistics/bed/getFamilyBedRecord', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.tableData = res.detailModelList
          vm.total = res.totalCount
        }
        vm.loading = false
      })
    },
    queryDate() {
      this.page = 1
      this.getList()
    },
    exportTable() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          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 () {
        vm.exportLoading = false
      })
    },
    eliminateClick() {
      this.form = {}
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
    },
    closeDialog() {
      this.dialogShow = false
    },
    previewRecord(row) {
      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
          }
        }
      })
    },
    getDictData() {
      var vm = this
      statisticAPI.getDictByDictName({ name: 'jkcopd_disease_conversion' }).then(function (res) {
        vm.turnOverOptions = [{ value: '全部' }]
        vm.turnOverOptions = vm.turnOverOptions.concat(res.list)
      })
    },
    handleCurrentChange(val) {
      this.page = val
      this.getList()
    },
    handleSizeChange(val) {
      this.size = val
      this.getList()
    }
  },
  mounted() {
    this.initTime()
    this.getDictData()
    this.getList()
  }
})

+ 59 - 0
component/statistics/FollowRecord/index.html

@ -0,0 +1,59 @@
<!-- css文件位置位于/component/common/jtbc.css -->
<div id="app" class="jtbc">
  <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-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>
      </label>
    </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-date-picker
          v-model="chooseTime"
          type="daterange"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          value-format="yyyy-MM-dd"></el-date-picker>
      </label>
    </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>
    </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>
    </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>
      <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
    </div>
  </div>
  <el-table :data="tableData" style="width: 100%" v-loading="loading">
    <el-table-column type="index" min-width="60" label="序号"></el-table-column>
    <el-table-column :label="item.label" v-for="item in tableHeader" :min-width="item.width" :key="item.prop">
      <template slot-scope="scope">{{scope.row[item.prop]}}</template>
    </el-table-column>
  </el-table>
  <el-pagination
    @current-change="handleCurrentChange"
    @size-change="handleSizeChange"
    :current-page.sync="page"
    :page-size="size"
    :page-sizes="[10, 20, 50]"
    layout="total, sizes, prev, pager, next, jumper"
    :total="total"
    class="pagination"></el-pagination>
</div>

+ 189 - 0
component/statistics/FollowRecord/index.js

@ -0,0 +1,189 @@
var template = ''
$.ajax('../../../component/statistics/JzSituation/index.html', {
  data: {},
  dataType: 'html',
  cache: false,
  timeout: 60000,
  async: false,
  error: function (res) {},
  success: function (res) {
    template = res
  }
})
Vue.component('follow-record', {
  template: template,
  props: [],
  data: function () {
    return {
      years: [],
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
      turnOverOptions: [],
      form: {},
      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' }
      ],
      page: 1,
      size: 10,
      total: 0
    }
  },
  methods: {
    initTime() {
      var vm = this
      var now = new Date()
      vm.nowyear = vm.chooseYear = now.getFullYear()
      vm.years = []
      for (i = vm.nowyear; i >= 2013; i--) {
        vm.years.push(i)
      }
    },
    getList() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1]+ ' 23:59'
        }
      }
      httpRequest.get('statistics/bed/getFamilyBedRecord', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.tableData = res.detailModelList
          vm.total = res.totalCount
        }
        vm.loading = false
      })
    },
    queryDate() {
      this.page = 1
      this.getList()
    },
    exportTable() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          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 () {
        vm.exportLoading = false
      })
    },
    eliminateClick() {
      this.form = {}
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
    },
    closeDialog() {
      this.dialogShow = false
    },
    previewRecord(row) {
      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
          }
        }
      })
    },
    getDictData() {
      var vm = this
      statisticAPI.getDictByDictName({ name: 'jkcopd_disease_conversion' }).then(function (res) {
        vm.turnOverOptions = [{ value: '全部' }]
        vm.turnOverOptions = vm.turnOverOptions.concat(res.list)
      })
    },
    handleCurrentChange(val) {
      this.page = val
      this.getList()
    },
    handleSizeChange(val) {
      this.size = val
      this.getList()
    }
  },
  mounted() {
    this.initTime()
    this.getDictData()
    this.getList()
  }
})

+ 59 - 0
component/statistics/GxbCy/index.html

@ -0,0 +1,59 @@
<!-- css文件位置位于/component/common/jtbc.css -->
<div id="app" class="jtbc">
  <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-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>
      </label>
    </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-date-picker
          v-model="chooseTime"
          type="daterange"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          value-format="yyyy-MM-dd"></el-date-picker>
      </label>
    </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>
    </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>
    </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>
      <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
    </div>
  </div>
  <el-table :data="tableData" style="width: 100%" v-loading="loading">
    <el-table-column type="index" min-width="60" label="序号"></el-table-column>
    <el-table-column :label="item.label" v-for="item in tableHeader" :min-width="item.width" :key="item.prop">
      <template slot-scope="scope">{{scope.row[item.prop]}}</template>
    </el-table-column>
  </el-table>
  <el-pagination
    @current-change="handleCurrentChange"
    @size-change="handleSizeChange"
    :current-page.sync="page"
    :page-size="size"
    :page-sizes="[10, 20, 50]"
    layout="total, sizes, prev, pager, next, jumper"
    :total="total"
    class="pagination"></el-pagination>
</div>

+ 189 - 0
component/statistics/GxbCy/index.js

@ -0,0 +1,189 @@
var template = ''
$.ajax('../../../component/statistics/GxbCy/index.html', {
  data: {},
  dataType: 'html',
  cache: false,
  timeout: 60000,
  async: false,
  error: function (res) {},
  success: function (res) {
    template = res
  }
})
Vue.component('gxb-cy', {
  template: template,
  props: [],
  data: function () {
    return {
      years: [],
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
      turnOverOptions: [],
      form: {},
      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' }
      ],
      page: 1,
      size: 10,
      total: 0
    }
  },
  methods: {
    initTime() {
      var vm = this
      var now = new Date()
      vm.nowyear = vm.chooseYear = now.getFullYear()
      vm.years = []
      for (i = vm.nowyear; i >= 2013; i--) {
        vm.years.push(i)
      }
    },
    getList() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1]+ ' 23:59'
        }
      }
      httpRequest.get('statistics/bed/getFamilyBedRecord', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.tableData = res.detailModelList
          vm.total = res.totalCount
        }
        vm.loading = false
      })
    },
    queryDate() {
      this.page = 1
      this.getList()
    },
    exportTable() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          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 () {
        vm.exportLoading = false
      })
    },
    eliminateClick() {
      this.form = {}
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
    },
    closeDialog() {
      this.dialogShow = false
    },
    previewRecord(row) {
      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
          }
        }
      })
    },
    getDictData() {
      var vm = this
      statisticAPI.getDictByDictName({ name: 'jkcopd_disease_conversion' }).then(function (res) {
        vm.turnOverOptions = [{ value: '全部' }]
        vm.turnOverOptions = vm.turnOverOptions.concat(res.list)
      })
    },
    handleCurrentChange(val) {
      this.page = val
      this.getList()
    },
    handleSizeChange(val) {
      this.size = val
      this.getList()
    }
  },
  mounted() {
    this.initTime()
    this.getDictData()
    this.getList()
  }
})

+ 70 - 0
component/statistics/GxbEvaluation/index.html

@ -0,0 +1,70 @@
<!-- css文件位置位于/component/common/jtbc.css -->
<div id="app" class="jtbc">
  <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-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>
      </label>
    </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-date-picker
          v-model="chooseTime"
          type="daterange"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          value-format="yyyy-MM-dd"></el-date-picker>
      </label>
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">数据范围:</label>
      <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.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>
      <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
    </div>
  </div>
  <el-table :data="tableData" style="width: 100%" v-loading="loading">
    <el-table-column type="index" min-width="60" label="序号"></el-table-column>
    <el-table-column :label="item.label" v-for="item in tableHeader" :min-width="item.width" :key="item.prop">
      <template slot-scope="scope">{{scope.row[item.prop]}}</template>
    </el-table-column>
  </el-table>
  <el-pagination
    @current-change="handleCurrentChange"
    @size-change="handleSizeChange"
    :current-page.sync="page"
    :page-size="size"
    :page-sizes="[10, 20, 50]"
    layout="total, sizes, prev, pager, next, jumper"
    :total="total"
    class="pagination"></el-pagination>
</div>

+ 234 - 0
component/statistics/GxbEvaluation/index.js

@ -0,0 +1,234 @@
var template = ''
$.ajax('../../../component/statistics/GxbEvaluation/index.html', {
  data: {},
  dataType: 'html',
  cache: false,
  timeout: 60000,
  async: false,
  error: function (res) {},
  success: function (res) {
    template = res
  }
})
Vue.component('gxb-evaluation', {
  template: template,
  props: [],
  data: function () {
    return {
      years: [],
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
      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: 'name', width: '110' },
        { label: '评估人数', prop: 'totalNum', width: '90' },
        { label: '日常评估人数', prop: 'dailyNum ', width: '110' },
        { label: '住院补筛人数', prop: 'inScreenNum', width: '110' },
        { label: '低危人数', prop: 'lRiskNum', width: '110' },
        { label: '中危人数', prop: 'mRiskNum', width: '110' },
        { label: '高危人数', prop: 'hRiskNum', width: '110' },
        { label: '极高危人数', prop: 'uhRiskNum', width: '110' },
        { label: '超高危人数', prop: 'ehRiskNum', width: '110' },
        { label: '已晒次数', prop: 'totalTimes', width: '110' },
        { label: '低危次数', prop: 'lRiskTimes', width: '110' },
        { label: '中危次数', prop: 'mRiskTimes', width: '110' },
        { label: '高危次数', prop: 'hRiskTimes', width: '110' },
        { label: '极高危次数', prop: 'uhRiskTimes', width: '110' },
        { label: '超高危次数', prop: 'ehRiskTimes', width: '110' },
        { label: '上转人次', prop: 'turnUpNum', width: '110' },
        { label: '社区随访人次', prop: 'hosFollowNum', width: '110' }
      ],
      page: 1,
      size: 10,
      total: 0,
      level: 0
    }
  },
  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'
      }
      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()
      vm.nowyear = vm.chooseYear = now.getFullYear()
      vm.years = []
      for (i = vm.nowyear; i >= 2013; i--) {
        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
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1] + ' 23:59'
        }
      }
      httpRequest.get('statistics/collaborate/gxbScreenInfoStatistics', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.tableData = res.detailModelList
          vm.total = res.totalCount
        }
        vm.loading = false
      })
    },
    queryDate() {
      this.page = 1
      this.getList()
    },
    exportTable() {
      var vm = this
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1] + ' 23:59'
        }
      }
      this.exportLoading = true
      var fileName = `冠心病筛查情况统计表${new Date().getTime()}.xls`
      httpRequest.downLoadFileForAjax('statistics/collaborate/exportGxbScreenInfoStatistics', fileName, params).then(function () {
        vm.exportLoading = false
      })
    },
    eliminateClick() {
      this.resetArea()
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
    },
    getHospital(code) {
      var vm = this
      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
      })
    },
    getTeam(code) {
      var vm = this
      delete this.form.team
      var params = {
        hospital: code
      }
      httpRequest.get('statisticsExport/teamList', { data: params }).then(function (res) {
        vm.teamOptions = res.data
      })
    },
    handleCurrentChange(val) {
      this.page = val
      this.getList()
    },
    handleSizeChange(val) {
      this.size = val
      this.getList()
    }
  },
  mounted() {
    this.init()
  }
})

+ 59 - 0
component/statistics/GxbManage/index.html

@ -0,0 +1,59 @@
<!-- css文件位置位于/component/common/jtbc.css -->
<div id="app" class="jtbc">
  <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-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>
      </label>
    </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-date-picker
          v-model="chooseTime"
          type="daterange"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          value-format="yyyy-MM-dd"></el-date-picker>
      </label>
    </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>
    </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>
    </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>
      <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
    </div>
  </div>
  <el-table :data="tableData" style="width: 100%" v-loading="loading">
    <el-table-column type="index" min-width="60" label="序号"></el-table-column>
    <el-table-column :label="item.label" v-for="item in tableHeader" :min-width="item.width" :key="item.prop">
      <template slot-scope="scope">{{scope.row[item.prop]}}</template>
    </el-table-column>
  </el-table>
  <el-pagination
    @current-change="handleCurrentChange"
    @size-change="handleSizeChange"
    :current-page.sync="page"
    :page-size="size"
    :page-sizes="[10, 20, 50]"
    layout="total, sizes, prev, pager, next, jumper"
    :total="total"
    class="pagination"></el-pagination>
</div>

+ 189 - 0
component/statistics/GxbManage/index.js

@ -0,0 +1,189 @@
var template = ''
$.ajax('../../../component/statistics/GxbManage/index.html', {
  data: {},
  dataType: 'html',
  cache: false,
  timeout: 60000,
  async: false,
  error: function (res) {},
  success: function (res) {
    template = res
  }
})
Vue.component('gxb-manage', {
  template: template,
  props: [],
  data: function () {
    return {
      years: [],
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
      turnOverOptions: [],
      form: {},
      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' }
      ],
      page: 1,
      size: 10,
      total: 0
    }
  },
  methods: {
    initTime() {
      var vm = this
      var now = new Date()
      vm.nowyear = vm.chooseYear = now.getFullYear()
      vm.years = []
      for (i = vm.nowyear; i >= 2013; i--) {
        vm.years.push(i)
      }
    },
    getList() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1]+ ' 23:59'
        }
      }
      httpRequest.get('statistics/bed/getFamilyBedRecord', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.tableData = res.detailModelList
          vm.total = res.totalCount
        }
        vm.loading = false
      })
    },
    queryDate() {
      this.page = 1
      this.getList()
    },
    exportTable() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          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 () {
        vm.exportLoading = false
      })
    },
    eliminateClick() {
      this.form = {}
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
    },
    closeDialog() {
      this.dialogShow = false
    },
    previewRecord(row) {
      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
          }
        }
      })
    },
    getDictData() {
      var vm = this
      statisticAPI.getDictByDictName({ name: 'jkcopd_disease_conversion' }).then(function (res) {
        vm.turnOverOptions = [{ value: '全部' }]
        vm.turnOverOptions = vm.turnOverOptions.concat(res.list)
      })
    },
    handleCurrentChange(val) {
      this.page = val
      this.getList()
    },
    handleSizeChange(val) {
      this.size = val
      this.getList()
    }
  },
  mounted() {
    this.initTime()
    this.getDictData()
    this.getList()
  }
})

+ 59 - 0
component/statistics/GxbMz/index.html

@ -0,0 +1,59 @@
<!-- css文件位置位于/component/common/jtbc.css -->
<div id="app" class="jtbc">
  <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-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>
      </label>
    </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-date-picker
          v-model="chooseTime"
          type="daterange"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          value-format="yyyy-MM-dd"></el-date-picker>
      </label>
    </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>
    </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>
    </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>
      <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
    </div>
  </div>
  <el-table :data="tableData" style="width: 100%" v-loading="loading">
    <el-table-column type="index" min-width="60" label="序号"></el-table-column>
    <el-table-column :label="item.label" v-for="item in tableHeader" :min-width="item.width" :key="item.prop">
      <template slot-scope="scope">{{scope.row[item.prop]}}</template>
    </el-table-column>
  </el-table>
  <el-pagination
    @current-change="handleCurrentChange"
    @size-change="handleSizeChange"
    :current-page.sync="page"
    :page-size="size"
    :page-sizes="[10, 20, 50]"
    layout="total, sizes, prev, pager, next, jumper"
    :total="total"
    class="pagination"></el-pagination>
</div>

+ 189 - 0
component/statistics/GxbMz/index.js

@ -0,0 +1,189 @@
var template = ''
$.ajax('../../../component/statistics/GxbMz/index.html', {
  data: {},
  dataType: 'html',
  cache: false,
  timeout: 60000,
  async: false,
  error: function (res) {},
  success: function (res) {
    template = res
  }
})
Vue.component('gxb-mz', {
  template: template,
  props: [],
  data: function () {
    return {
      years: [],
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
      turnOverOptions: [],
      form: {},
      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' }
      ],
      page: 1,
      size: 10,
      total: 0
    }
  },
  methods: {
    initTime() {
      var vm = this
      var now = new Date()
      vm.nowyear = vm.chooseYear = now.getFullYear()
      vm.years = []
      for (i = vm.nowyear; i >= 2013; i--) {
        vm.years.push(i)
      }
    },
    getList() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1]+ ' 23:59'
        }
      }
      httpRequest.get('statistics/bed/getFamilyBedRecord', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.tableData = res.detailModelList
          vm.total = res.totalCount
        }
        vm.loading = false
      })
    },
    queryDate() {
      this.page = 1
      this.getList()
    },
    exportTable() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          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 () {
        vm.exportLoading = false
      })
    },
    eliminateClick() {
      this.form = {}
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
    },
    closeDialog() {
      this.dialogShow = false
    },
    previewRecord(row) {
      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
          }
        }
      })
    },
    getDictData() {
      var vm = this
      statisticAPI.getDictByDictName({ name: 'jkcopd_disease_conversion' }).then(function (res) {
        vm.turnOverOptions = [{ value: '全部' }]
        vm.turnOverOptions = vm.turnOverOptions.concat(res.list)
      })
    },
    handleCurrentChange(val) {
      this.page = val
      this.getList()
    },
    handleSizeChange(val) {
      this.size = val
      this.getList()
    }
  },
  mounted() {
    this.initTime()
    this.getDictData()
    this.getList()
  }
})

+ 59 - 0
component/statistics/GxbTurnup/index.html

@ -0,0 +1,59 @@
<!-- css文件位置位于/component/common/jtbc.css -->
<div id="app" class="jtbc">
  <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-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>
      </label>
    </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-date-picker
          v-model="chooseTime"
          type="daterange"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          value-format="yyyy-MM-dd"></el-date-picker>
      </label>
    </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>
    </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>
    </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>
      <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
    </div>
  </div>
  <el-table :data="tableData" style="width: 100%" v-loading="loading">
    <el-table-column type="index" min-width="60" label="序号"></el-table-column>
    <el-table-column :label="item.label" v-for="item in tableHeader" :min-width="item.width" :key="item.prop">
      <template slot-scope="scope">{{scope.row[item.prop]}}</template>
    </el-table-column>
  </el-table>
  <el-pagination
    @current-change="handleCurrentChange"
    @size-change="handleSizeChange"
    :current-page.sync="page"
    :page-size="size"
    :page-sizes="[10, 20, 50]"
    layout="total, sizes, prev, pager, next, jumper"
    :total="total"
    class="pagination"></el-pagination>
</div>

+ 189 - 0
component/statistics/GxbTurnup/index.js

@ -0,0 +1,189 @@
var template = ''
$.ajax('../../../component/statistics/GxbTurnup/index.html', {
  data: {},
  dataType: 'html',
  cache: false,
  timeout: 60000,
  async: false,
  error: function (res) {},
  success: function (res) {
    template = res
  }
})
Vue.component('gxb-turnup', {
  template: template,
  props: [],
  data: function () {
    return {
      years: [],
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
      turnOverOptions: [],
      form: {},
      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' }
      ],
      page: 1,
      size: 10,
      total: 0
    }
  },
  methods: {
    initTime() {
      var vm = this
      var now = new Date()
      vm.nowyear = vm.chooseYear = now.getFullYear()
      vm.years = []
      for (i = vm.nowyear; i >= 2013; i--) {
        vm.years.push(i)
      }
    },
    getList() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1]+ ' 23:59'
        }
      }
      httpRequest.get('statistics/bed/getFamilyBedRecord', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.tableData = res.detailModelList
          vm.total = res.totalCount
        }
        vm.loading = false
      })
    },
    queryDate() {
      this.page = 1
      this.getList()
    },
    exportTable() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          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 () {
        vm.exportLoading = false
      })
    },
    eliminateClick() {
      this.form = {}
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
    },
    closeDialog() {
      this.dialogShow = false
    },
    previewRecord(row) {
      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
          }
        }
      })
    },
    getDictData() {
      var vm = this
      statisticAPI.getDictByDictName({ name: 'jkcopd_disease_conversion' }).then(function (res) {
        vm.turnOverOptions = [{ value: '全部' }]
        vm.turnOverOptions = vm.turnOverOptions.concat(res.list)
      })
    },
    handleCurrentChange(val) {
      this.page = val
      this.getList()
    },
    handleSizeChange(val) {
      this.size = val
      this.getList()
    }
  },
  mounted() {
    this.initTime()
    this.getDictData()
    this.getList()
  }
})

+ 59 - 0
component/statistics/JzSituation/index.html

@ -0,0 +1,59 @@
<!-- css文件位置位于/component/common/jtbc.css -->
<div id="app" class="jtbc">
  <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-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>
      </label>
    </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-date-picker
          v-model="chooseTime"
          type="daterange"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          value-format="yyyy-MM-dd"></el-date-picker>
      </label>
    </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>
    </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>
    </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>
      <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
    </div>
  </div>
  <el-table :data="tableData" style="width: 100%" v-loading="loading">
    <el-table-column type="index" min-width="60" label="序号"></el-table-column>
    <el-table-column :label="item.label" v-for="item in tableHeader" :min-width="item.width" :key="item.prop">
      <template slot-scope="scope">{{scope.row[item.prop]}}</template>
    </el-table-column>
  </el-table>
  <el-pagination
    @current-change="handleCurrentChange"
    @size-change="handleSizeChange"
    :current-page.sync="page"
    :page-size="size"
    :page-sizes="[10, 20, 50]"
    layout="total, sizes, prev, pager, next, jumper"
    :total="total"
    class="pagination"></el-pagination>
</div>

+ 189 - 0
component/statistics/JzSituation/index.js

@ -0,0 +1,189 @@
var template = ''
$.ajax('../../../component/statistics/JzSituation/index.html', {
  data: {},
  dataType: 'html',
  cache: false,
  timeout: 60000,
  async: false,
  error: function (res) {},
  success: function (res) {
    template = res
  }
})
Vue.component('jz-situation', {
  template: template,
  props: [],
  data: function () {
    return {
      years: [],
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
      turnOverOptions: [],
      form: {},
      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' }
      ],
      page: 1,
      size: 10,
      total: 0
    }
  },
  methods: {
    initTime() {
      var vm = this
      var now = new Date()
      vm.nowyear = vm.chooseYear = now.getFullYear()
      vm.years = []
      for (i = vm.nowyear; i >= 2013; i--) {
        vm.years.push(i)
      }
    },
    getList() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1]+ ' 23:59'
        }
      }
      httpRequest.get('statistics/bed/getFamilyBedRecord', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.tableData = res.detailModelList
          vm.total = res.totalCount
        }
        vm.loading = false
      })
    },
    queryDate() {
      this.page = 1
      this.getList()
    },
    exportTable() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          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 () {
        vm.exportLoading = false
      })
    },
    eliminateClick() {
      this.form = {}
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
    },
    closeDialog() {
      this.dialogShow = false
    },
    previewRecord(row) {
      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
          }
        }
      })
    },
    getDictData() {
      var vm = this
      statisticAPI.getDictByDictName({ name: 'jkcopd_disease_conversion' }).then(function (res) {
        vm.turnOverOptions = [{ value: '全部' }]
        vm.turnOverOptions = vm.turnOverOptions.concat(res.list)
      })
    },
    handleCurrentChange(val) {
      this.page = val
      this.getList()
    },
    handleSizeChange(val) {
      this.size = val
      this.getList()
    }
  },
  mounted() {
    this.initTime()
    this.getDictData()
    this.getList()
  }
})

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

@ -113,7 +113,6 @@ Vue.component('patient-situation', {
    },
    exportTable() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,

+ 1 - 1
component/statistics/PlanService/index.html

@ -37,7 +37,7 @@
      <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
    </div>
  </div>
  <el-table :data="tableData" style="width: 100%">
  <el-table :data="tableData" style="width: 100%" v-loading="loading">
    <el-table-column type="index" min-width="60" label="序号"></el-table-column>
    <el-table-column :label="item.label" v-for="item in tableHeader" :key="item.prop" :width="item.width">
      <template slot-scope="scope">{{scope.row[item.prop]}}</template>

+ 0 - 1
component/statistics/PlanService/index.js

@ -89,7 +89,6 @@ Vue.component('plan-service', {
    },
    exportTable() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,

+ 2 - 2
component/statistics/Referral/index.html

@ -35,11 +35,11 @@
    <div class="searchDiv pb20">
      <el-button type="primary" size="mini" @click="queryDate">查询</el-button>
      <el-button type="ff9526" size="mini" @click="exportTable">导出</el-button>
      <el-button type="ff9526" size="mini" @click="exportTable" :disabled="exportLoading">导出</el-button>
      <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
    </div>
  </div>
  <el-table :data="tableData" style="width: 100%">
  <el-table :data="tableData" style="width: 100%" v-loading="loading">
    <el-table-column type="index" min-width="60" label="序号"></el-table-column>
    <el-table-column :label="item.label" v-for="item in tableHeader" :min-width="item.width" :key="item.id">
      <template slot-scope="scope">{{scope.row[item.prop]}}</template>

+ 0 - 1
component/statistics/Referral/index.js

@ -92,7 +92,6 @@ Vue.component('referral', {
    },
    exportTable() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,

+ 59 - 0
component/statistics/SignSituation/index.html

@ -0,0 +1,59 @@
<!-- css文件位置位于/component/common/jtbc.css -->
<div id="app" class="jtbc">
  <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-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>
      </label>
    </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-date-picker
          v-model="chooseTime"
          type="daterange"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          value-format="yyyy-MM-dd"></el-date-picker>
      </label>
    </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>
    </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>
    </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>
      <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
    </div>
  </div>
  <el-table :data="tableData" style="width: 100%" v-loading="loading">
    <el-table-column type="index" min-width="60" label="序号"></el-table-column>
    <el-table-column :label="item.label" v-for="item in tableHeader" :min-width="item.width" :key="item.prop">
      <template slot-scope="scope">{{scope.row[item.prop]}}</template>
    </el-table-column>
  </el-table>
  <el-pagination
    @current-change="handleCurrentChange"
    @size-change="handleSizeChange"
    :current-page.sync="page"
    :page-size="size"
    :page-sizes="[10, 20, 50]"
    layout="total, sizes, prev, pager, next, jumper"
    :total="total"
    class="pagination"></el-pagination>
</div>

+ 189 - 0
component/statistics/SignSituation/index.js

@ -0,0 +1,189 @@
var template = ''
$.ajax('../../../component/statistics/SignSituation/index.html', {
  data: {},
  dataType: 'html',
  cache: false,
  timeout: 60000,
  async: false,
  error: function (res) {},
  success: function (res) {
    template = res
  }
})
Vue.component('sign-situation', {
  template: template,
  props: [],
  data: function () {
    return {
      years: [],
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
      turnOverOptions: [],
      form: {},
      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' }
      ],
      page: 1,
      size: 10,
      total: 0
    }
  },
  methods: {
    initTime() {
      var vm = this
      var now = new Date()
      vm.nowyear = vm.chooseYear = now.getFullYear()
      vm.years = []
      for (i = vm.nowyear; i >= 2013; i--) {
        vm.years.push(i)
      }
    },
    getList() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1]+ ' 23:59'
        }
      }
      httpRequest.get('statistics/bed/getFamilyBedRecord', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.tableData = res.detailModelList
          vm.total = res.totalCount
        }
        vm.loading = false
      })
    },
    queryDate() {
      this.page = 1
      this.getList()
    },
    exportTable() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          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 () {
        vm.exportLoading = false
      })
    },
    eliminateClick() {
      this.form = {}
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
    },
    closeDialog() {
      this.dialogShow = false
    },
    previewRecord(row) {
      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
          }
        }
      })
    },
    getDictData() {
      var vm = this
      statisticAPI.getDictByDictName({ name: 'jkcopd_disease_conversion' }).then(function (res) {
        vm.turnOverOptions = [{ value: '全部' }]
        vm.turnOverOptions = vm.turnOverOptions.concat(res.list)
      })
    },
    handleCurrentChange(val) {
      this.page = val
      this.getList()
    },
    handleSizeChange(val) {
      this.size = val
      this.getList()
    }
  },
  mounted() {
    this.initTime()
    this.getDictData()
    this.getList()
  }
})

+ 59 - 0
component/statistics/TurndownAnalysis/index.html

@ -0,0 +1,59 @@
<!-- css文件位置位于/component/common/jtbc.css -->
<div id="app" class="jtbc">
  <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-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>
      </label>
    </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-date-picker
          v-model="chooseTime"
          type="daterange"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          value-format="yyyy-MM-dd"></el-date-picker>
      </label>
    </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>
    </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>
    </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>
      <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
    </div>
  </div>
  <el-table :data="tableData" style="width: 100%" v-loading="loading">
    <el-table-column type="index" min-width="60" label="序号"></el-table-column>
    <el-table-column :label="item.label" v-for="item in tableHeader" :min-width="item.width" :key="item.prop">
      <template slot-scope="scope">{{scope.row[item.prop]}}</template>
    </el-table-column>
  </el-table>
  <el-pagination
    @current-change="handleCurrentChange"
    @size-change="handleSizeChange"
    :current-page.sync="page"
    :page-size="size"
    :page-sizes="[10, 20, 50]"
    layout="total, sizes, prev, pager, next, jumper"
    :total="total"
    class="pagination"></el-pagination>
</div>

+ 189 - 0
component/statistics/TurndownAnalysis/index.js

@ -0,0 +1,189 @@
var template = ''
$.ajax('../../../component/statistics/TurndownAnalysis/index.html', {
  data: {},
  dataType: 'html',
  cache: false,
  timeout: 60000,
  async: false,
  error: function (res) {},
  success: function (res) {
    template = res
  }
})
Vue.component('turndown-analysis', {
  template: template,
  props: [],
  data: function () {
    return {
      years: [],
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
      turnOverOptions: [],
      form: {},
      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' }
      ],
      page: 1,
      size: 10,
      total: 0
    }
  },
  methods: {
    initTime() {
      var vm = this
      var now = new Date()
      vm.nowyear = vm.chooseYear = now.getFullYear()
      vm.years = []
      for (i = vm.nowyear; i >= 2013; i--) {
        vm.years.push(i)
      }
    },
    getList() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1]+ ' 23:59'
        }
      }
      httpRequest.get('statistics/bed/getFamilyBedRecord', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.tableData = res.detailModelList
          vm.total = res.totalCount
        }
        vm.loading = false
      })
    },
    queryDate() {
      this.page = 1
      this.getList()
    },
    exportTable() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          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 () {
        vm.exportLoading = false
      })
    },
    eliminateClick() {
      this.form = {}
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
    },
    closeDialog() {
      this.dialogShow = false
    },
    previewRecord(row) {
      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
          }
        }
      })
    },
    getDictData() {
      var vm = this
      statisticAPI.getDictByDictName({ name: 'jkcopd_disease_conversion' }).then(function (res) {
        vm.turnOverOptions = [{ value: '全部' }]
        vm.turnOverOptions = vm.turnOverOptions.concat(res.list)
      })
    },
    handleCurrentChange(val) {
      this.page = val
      this.getList()
    },
    handleSizeChange(val) {
      this.size = val
      this.getList()
    }
  },
  mounted() {
    this.initTime()
    this.getDictData()
    this.getList()
  }
})

+ 59 - 0
component/statistics/TurndownDetail/index.html

@ -0,0 +1,59 @@
<!-- css文件位置位于/component/common/jtbc.css -->
<div id="app" class="jtbc">
  <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-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>
      </label>
    </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-date-picker
          v-model="chooseTime"
          type="daterange"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          value-format="yyyy-MM-dd"></el-date-picker>
      </label>
    </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>
    </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>
    </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>
      <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
    </div>
  </div>
  <el-table :data="tableData" style="width: 100%" v-loading="loading">
    <el-table-column type="index" min-width="60" label="序号"></el-table-column>
    <el-table-column :label="item.label" v-for="item in tableHeader" :min-width="item.width" :key="item.prop">
      <template slot-scope="scope">{{scope.row[item.prop]}}</template>
    </el-table-column>
  </el-table>
  <el-pagination
    @current-change="handleCurrentChange"
    @size-change="handleSizeChange"
    :current-page.sync="page"
    :page-size="size"
    :page-sizes="[10, 20, 50]"
    layout="total, sizes, prev, pager, next, jumper"
    :total="total"
    class="pagination"></el-pagination>
</div>

+ 189 - 0
component/statistics/TurndownDetail/index.js

@ -0,0 +1,189 @@
var template = ''
$.ajax('../../../component/statistics/TurndownDetail/index.html', {
  data: {},
  dataType: 'html',
  cache: false,
  timeout: 60000,
  async: false,
  error: function (res) {},
  success: function (res) {
    template = res
  }
})
Vue.component('turndown-detail', {
  template: template,
  props: [],
  data: function () {
    return {
      years: [],
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
      turnOverOptions: [],
      form: {},
      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' }
      ],
      page: 1,
      size: 10,
      total: 0
    }
  },
  methods: {
    initTime() {
      var vm = this
      var now = new Date()
      vm.nowyear = vm.chooseYear = now.getFullYear()
      vm.years = []
      for (i = vm.nowyear; i >= 2013; i--) {
        vm.years.push(i)
      }
    },
    getList() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1]+ ' 23:59'
        }
      }
      httpRequest.get('statistics/bed/getFamilyBedRecord', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.tableData = res.detailModelList
          vm.total = res.totalCount
        }
        vm.loading = false
      })
    },
    queryDate() {
      this.page = 1
      this.getList()
    },
    exportTable() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          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 () {
        vm.exportLoading = false
      })
    },
    eliminateClick() {
      this.form = {}
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
    },
    closeDialog() {
      this.dialogShow = false
    },
    previewRecord(row) {
      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
          }
        }
      })
    },
    getDictData() {
      var vm = this
      statisticAPI.getDictByDictName({ name: 'jkcopd_disease_conversion' }).then(function (res) {
        vm.turnOverOptions = [{ value: '全部' }]
        vm.turnOverOptions = vm.turnOverOptions.concat(res.list)
      })
    },
    handleCurrentChange(val) {
      this.page = val
      this.getList()
    },
    handleSizeChange(val) {
      this.size = val
      this.getList()
    }
  },
  mounted() {
    this.initTime()
    this.getDictData()
    this.getList()
  }
})

+ 59 - 0
component/statistics/reservationSituation/index.html

@ -0,0 +1,59 @@
<!-- css文件位置位于/component/common/jtbc.css -->
<div id="app" class="jtbc">
  <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-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>
      </label>
    </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-date-picker
          v-model="chooseTime"
          type="daterange"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          value-format="yyyy-MM-dd"></el-date-picker>
      </label>
    </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>
    </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>
    </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>
      <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
    </div>
  </div>
  <el-table :data="tableData" style="width: 100%" v-loading="loading">
    <el-table-column type="index" min-width="60" label="序号"></el-table-column>
    <el-table-column :label="item.label" v-for="item in tableHeader" :min-width="item.width" :key="item.prop">
      <template slot-scope="scope">{{scope.row[item.prop]}}</template>
    </el-table-column>
  </el-table>
  <el-pagination
    @current-change="handleCurrentChange"
    @size-change="handleSizeChange"
    :current-page.sync="page"
    :page-size="size"
    :page-sizes="[10, 20, 50]"
    layout="total, sizes, prev, pager, next, jumper"
    :total="total"
    class="pagination"></el-pagination>
</div>

+ 189 - 0
component/statistics/reservationSituation/index.js

@ -0,0 +1,189 @@
var template = ''
$.ajax('../../../component/statistics/reservationSituation/index.html', {
  data: {},
  dataType: 'html',
  cache: false,
  timeout: 60000,
  async: false,
  error: function (res) {},
  success: function (res) {
    template = res
  }
})
Vue.component('reservation-situation', {
  template: template,
  props: [],
  data: function () {
    return {
      years: [],
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
      turnOverOptions: [],
      form: {},
      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' }
      ],
      page: 1,
      size: 10,
      total: 0
    }
  },
  methods: {
    initTime() {
      var vm = this
      var now = new Date()
      vm.nowyear = vm.chooseYear = now.getFullYear()
      vm.years = []
      for (i = vm.nowyear; i >= 2013; i--) {
        vm.years.push(i)
      }
    },
    getList() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          params.endDate = this.chooseTime[1]+ ' 23:59'
        }
      }
      httpRequest.get('statistics/bed/getFamilyBedRecord', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.tableData = res.detailModelList
          vm.total = res.totalCount
        }
        vm.loading = false
      })
    },
    queryDate() {
      this.page = 1
      this.getList()
    },
    exportTable() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01 00:00'
        params.endDate = this.chooseYear + '-12-31 23:59'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0] + ' 00:00'
          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 () {
        vm.exportLoading = false
      })
    },
    eliminateClick() {
      this.form = {}
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
    },
    closeDialog() {
      this.dialogShow = false
    },
    previewRecord(row) {
      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
          }
        }
      })
    },
    getDictData() {
      var vm = this
      statisticAPI.getDictByDictName({ name: 'jkcopd_disease_conversion' }).then(function (res) {
        vm.turnOverOptions = [{ value: '全部' }]
        vm.turnOverOptions = vm.turnOverOptions.concat(res.list)
      })
    },
    handleCurrentChange(val) {
      this.page = val
      this.getList()
    },
    handleSizeChange(val) {
      this.size = val
      this.getList()
    }
  },
  mounted() {
    this.initTime()
    this.getDictData()
    this.getList()
  }
})