ソースを参照

'家庭病床统计'

hd 2 週間 前
コミット
fe28c103f3

+ 30 - 1
component/common/jtbc.css

@ -33,6 +33,24 @@
.c-909399{
  color: #909399;
}
.c-ff5e6c{
  color: #ff5e6c;
}
.c-17b3ec{
  color: #17b3ec;
}
.c-20d7ad{
  color: #20d7ad;
}
.bg-ff5e6c{
  background-color: #ff5e6c;
}
.bg-17b3ec{
  background-color: #17b3ec;
}
.bg-20d7ad{
  background-color: #20d7ad;
}
.form-item{
  display: flex;
  justify-content: space-between;
@ -70,7 +88,6 @@
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background-color: #00bf79;
  margin-right: 8px;
  position: relative;
  z-index: 2;
@ -97,4 +114,16 @@
.jtbc .pagination{
  margin-top: 20px;
  float: right;
}
.nodata{
  display: flex;
  flex-direction: column;
  align-items: center;
  margin: 40px 0;
  color: #5e6d82;
  font-size: 16px;
}
.nodata img{
  margin-bottom: 20px;
}

+ 101 - 107
component/statistics/BedCheck/index.html

@ -1,111 +1,105 @@
<!-- <!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>患者情况分析</title>
    <link rel="stylesheet" type="text/css" href="index.css" />
  </head>
  <body> -->
    <!-- 家庭病床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-time-picker
              is-range
              v-model="chooseTime"
              range-separator="至"
              start-placeholder="开始时间"
              end-placeholder="结束时间"
              placeholder="选择时间范围"
              value-format="yyyy-MM-dd"></el-time-picker>
          </label>
        </div>
        <div class="searchDiv pb20 pr20">
          <label class="c-333 c-f14">查床人员:</label>
          <el-input v-model="form.name" class=" formWidth wd160" placeholder="请输入医生姓名查询"></el-input>
        </div>
        <div class="searchDiv pb20 pr20">
          <label class="c-333 c-f14">患者姓名:</label>
          <el-input v-model="form.name" class=" formWidth wd160" placeholder="请输入患者姓名查询"></el-input>
        </div>
<!-- 家庭病床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-input v-model="form.doctorName" class="formWidth wd160" placeholder="请输入医生姓名查询"></el-input>
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">患者姓名:</label>
      <el-input v-model="form.patientName" class="formWidth wd160" placeholder="请输入患者姓名查询"></el-input>
    </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>
          <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
        </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>
      <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
    </div>
  </div>
  <el-table :data="tableData" style="width: 100%">
    <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>
    </el-table-column>
    <el-table-column label="操作" align="center">
      <template slot-scope="scope">
        <el-button type="text" @click="previewRecord(scope.row)">巡诊记录表</el-button>
      </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>
  <el-dialog :visible.sync="dialogShow" title="结算单据记录" @close="closeDialog" width="700px">
    <div class="dialog-title">患者信息</div>
    <div class="pb20 dialog-box">
      <div class="pr20">
        <label class="c-909399">姓名:</label>
        {{info.patientName}}
      </div>
      <el-table :data="tableData" style="width: 100%">
        <el-table-column type="index" min-width="60" label="序号"></el-table-column>
        <el-table-column :label="item.label" v-for="item in tableHeader">
          <template slot-scope="scope">{{scope.row[item.prop]}}</template>
        </el-table-column>
        <el-table-column label="操作">
          <template slot-scope="row">
            <el-button type="text" @click="previewRecord(row)">巡诊记录表</el-button>
          </template>
        </el-table-column>
      </el-table>
      <el-dialog :visible.sync="dialogShow" title="结算单据记录" @close="closeDialog" width="700px">
        <div class="dialog-title">患者信息</div>
        <div class="pb20 dialog-box">
          <div class="pr20">
            <label class="c-909399">姓名:</label>
            {{info.name}}
          </div>
          <div class="pr20">
          </div>
          <div class="pr20">
            60岁
          </div>
          <div class="pr20">
            <label class="c-909399">住院号:</label>
            38593246
          </div>
          <div class="pr20">
            <label class="c-909399">手机号:</label>
            1223456789496
          </div>
        </div>
        <div class="dialog-title">巡诊记录单</div>
        <div>
          <div class="form-item">
            <div class="form-label">查床日期</div>
            <div class="form-value">2024-04-09 10</div>
          </div>
          <div class="form-item">
            <div class="form-label">服务内容</div>
            <div class="form-value">上门服务</div>
          </div>
          <div class="form-item" style="align-items: flex-start;">
            <div class="form-label">入户签到</div>
            <div class="form-value">
              <div>签到时间:2024-09-11</div>
              <div>签到方式:定位签到</div>
            </div>
          </div>
          <div class="form-item">
            <div class="form-label">巡诊人员</div>
            <div class="form-value">刘小芳,蔡东梅,孙雪娟</div>
          </div>
          <div class="form-item" style="align-items: flex-start;">
            <div class="form-label">病情变化及处理</div>
            <div class="form-value textarea-content">展示内容信息展示内容信息展示内容信息展示内容信息展示内容信息展示内容信息展示内容信息展示内容信息</div>
          </div>
      <div class="pr20">{{sexDict[info.sex]}}</div>
      <div class="pr20">{{info.age}}岁</div>
      <div class="pr20">
        <label class="c-909399">住院号:</label>
        {{info.bedTeamId}}
      </div>
      <div class="pr20">
        <label class="c-909399">手机号:</label>
        {{info.mobile}}
      </div>
    </div>
    <div class="dialog-title">巡诊记录单</div>
    <div>
      <div class="form-item">
        <div class="form-label">查床日期</div>
        <div class="form-value">{{info.checkTime}}</div>
      </div>
      <div class="form-item">
        <div class="form-label">服务内容</div>
        <div class="form-value">{{serviceList[info.serviceType]}}</div>
      </div>
      <div class="form-item" style="align-items: flex-start">
        <div class="form-label">入户签到</div>
        <div class="form-value">
          <div>签到时间:{{info.signTime}}</div>
          <div>签到方式:{{info.signMethod}}</div>
        </div>
      </el-dialog>
      </div>
      <div class="form-item">
        <div class="form-label">巡诊人员</div>
        <div class="form-value">{{info.planDoctor}}</div>
      </div>
      <div class="form-item" style="align-items: flex-start">
        <div class="form-label">病情变化及处理</div>
        <div class="form-value textarea-content">{{info.diseaseCondition}}</div>
      </div>
    </div>
  <!-- </body> -->
<!-- </html> -->
  </el-dialog>
</div>

+ 113 - 21
component/statistics/BedCheck/index.js

@ -23,32 +23,41 @@ Vue.component('bed-check', {
      form: {},
      tableData: [],
      tableHeader: [
        {label: '住院号',prop: 'a'},
        {label: '患者姓名',prop: 'b'},
        {label: '性别',prop: 'c'},
        {label: '年龄',prop: 'd'},
        {label: '建床日期',prop: 'a'},
        {label: '计划查床时间',prop: 'a'},
        {label: '完成时间',prop: 'a'},
        {label: '查床人员',prop: 'a'},
        {label: '服务内容',prop: 'a'},
        { label: '住院号', prop: 'visitNo' },
        { label: '患者姓名', prop: 'patientName' },
        { label: '性别', prop: 'sex' },
        { label: '年龄', prop: 'age' },
        { label: '建床日期', prop: 'buildingTime' },
        { label: '计划查床时间', prop: 'checkTime' },
        { label: '完成时间', prop: 'checkDate' },
        { label: '查床人员', prop: 'doctorName' },
        { label: '服务内容', prop: 'diseaseCondition' }
      ],
      dialogShow: true,
      dialogShow: false,
      info: {
        name:'黄小蕾',
        name: '黄小蕾',
        sex: '1',
        age: '60岁',
        zhuyuan: '38593246',
        phone: '12223456789',
        checkTime: '2024-04-09 10:00:00',
        serviceContent: '上门服务',
        
        serviceContent: '上门服务'
      },
      page: 1,
      size: 10,
      total: 0,
      loading: false,
      exportLoading: false,
      sexDict: {
        1: '男',
        2: '女'
      },
      serviceList: {}
    }
  },
  methods: {
    initTime() {
      var  vm = this
      var vm = this
      var now = new Date()
      vm.nowyear = vm.chooseYear = now.getFullYear()
@ -57,23 +66,106 @@ Vue.component('bed-check', {
        vm.years.push(i)
      }
    },
    queryDate(){},
    exportTable(){},
    eliminateClick(){
      this.turnStatus = null
      this.name = ""
    getList() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size,
        status: 1
      }
      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/getFamilyBedPlanStatistics', { 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/exportGetFamilyBedPlanStatistics', fileName, params).then(function () {
        vm.exportLoading = false
      })
    },
    eliminateClick() {
      this.form = {}
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
    },
    closeDialog(){
    closeDialog() {
      this.dialogShow = false
    },
    previewRecord(row){
    previewRecord(row) {
      var vm = this
      this.dialogShow = true
      httpRequest.get('doctor/familyBed/findCheckPlanDetail', { data: {id: row.id} }).then(function (res) {
        if (res.status == 200) {
          vm.info = res.data
          if (res.data.planDoctorList) {
            vm.info.planDoctor = res.data.planDoctorList.map(function(item){return item.doctorName}).join(',')
          }
          if (res.data.signWay) {
            vm.info.signMethod = res.data.signWay == 1 ? '定位签到' : '拍照签到'
          }
          console.log(vm.info,"info");
          
        }
      })
    },
    handleCurrentChange(val) {
      this.page = val
      this.getList()
    },
    handleSizeChange(val) {
      this.size = val
      this.getList()
    },
    getDictData() {
      var vm = this
      statisticAPI.getDictByDictName({ name: 'IV_FAMILY_BED_SERVICE_TYPE' }).then(function (res) {
        for(var item of res.list){
          vm.serviceList[item.code] = item.value
        }
      })
    }
  },
  mounted() {
    this.initTime()
    this.getList()
    this.getDictData()
  }
})

+ 62 - 54
component/statistics/BuildBed/index.html

@ -7,59 +7,67 @@
    <link rel="stylesheet" type="text/css" href="index.css" />
  </head>
  <body> -->
    <!-- 家庭病床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">
          <label class="c-333 c-f14">
            <el-radio v-model="yearType" label="1">按建床年度:</el-radio>
            <el-select v-model="chooseYear" class="pr20 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-time-picker
              is-range
              v-model="chooseTime"
              range-separator="至"
              start-placeholder="开始时间"
              end-placeholder="结束时间"
              placeholder="选择时间范围"
              value-format="yyyy-MM-dd"></el-time-picker>
          </label>
        </div>
        <div class="searchDiv pb20 pr20">
          <label class="c-333 c-f14">责任医师:</label>
          <el-input v-model="form.doctor" class=" formWidth wd160" placeholder="请输入责任医师查询"></el-input>
        </div>
        <div class="searchDiv pb20 pr20">
          <label class="c-333 c-f14">身份证号:</label>
          <el-input v-model="form.idCard" class=" formWidth wd160" placeholder="请输入身份证号查询"></el-input>
        </div>
        <div class="searchDiv pb20 pr20">
          <label class="c-333 c-f14">住院号:</label>
          <el-input v-model="form.hospital" class=" formWidth wd160" placeholder="请输入住院号查询"></el-input>
        </div>
        <div class="searchDiv pb20 pr20">
          <label class="c-333 c-f14">患者姓名:</label>
          <el-input v-model="form.hospital" class=" formWidth wd160" placeholder="请输入患者姓名查询"></el-input>
        </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>
          <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
        </div>
      </div>
      <el-table :data="tableData" style="width: 100%">
        <el-table-column type="index" min-width="60" label="序号"></el-table-column>
        <el-table-column :label="item.label" v-for="item in tableHeader">
          <template slot-scope="scope">{{scope.row[item.prop]}}</template>
        </el-table-column>
      </el-table>
<!-- 家庭病床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">
      <label class="c-333 c-f14">
        <el-radio v-model="yearType" label="1">按建床年度:</el-radio>
        <el-select v-model="chooseYear" class="pr20 formWidth wd160">
          <el-option v-for="(item , index) in years" :key="index" :label="item" :value="item"></el-option>
        </el-select>
      </label>
    </div>
  <!-- </body> -->
    <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-input v-model="form.doctorName" class="formWidth wd160" placeholder="请输入责任医师查询"></el-input>
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">身份证号:</label>
      <el-input v-model="form.idcard" class="formWidth wd160" placeholder="请输入身份证号查询"></el-input>
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">住院号:</label>
      <el-input v-model="form.visitNo" class="formWidth wd160" placeholder="请输入住院号查询"></el-input>
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">患者姓名:</label>
      <el-input v-model="form.patientName" class="formWidth wd160" placeholder="请输入患者姓名查询"></el-input>
    </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>
      <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
    </div>
  </div>
  <el-table :data="tableData" style="width: 100%">
    <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>
<!-- </body> -->
<!-- </html> -->

+ 85 - 22
component/statistics/BuildBed/index.js

@ -20,29 +20,32 @@ Vue.component('build-bed', {
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
      form:{},
      form: {},
      tableData: [],
      tableHeader: [
        {label: '病人姓名',prop: 'b'},
        {label: '性别',prop: 'c'},
        {label: '年龄',prop: 'c'},
        {label: '手机号',prop: 'd'},
        {label: '身份证号',prop: 'e'},
        {label: '住院号',prop: 'a'},
        {label: '护理等级',prop: 'a'},
        {label: '病情',prop: 'a'},
        {label: '主诊断',prop: 'a'},
        {label: '责任医师',prop: 'a'},
        {label: '上级医师',prop: 'a'},
        {label: '主营护士',prop: 'a'},
        {label: '床位名称',prop: 'a'},
        {label: '建床时间',prop: 'a'},
      ]
        { label: '病人姓名', prop: 'patientName', width: '90' },
        { label: '性别', prop: 'sex',width: '80' },
        { label: '年龄', prop: 'age',width:'80' },
        { label: '手机号', prop: 'mobile',width: '130' },
        { label: '身份证号', prop: 'idcard',width: '170' },
        { label: '住院号', prop: 'visitNo',width: '110' },
        { label: '护理等级', prop: 'sickTendLevelName',width: '110' },
        { label: '病情', prop: 'sickStateName',width: '110' },
        { label: '主诊断', prop: 'sickDiagnoseCodeName',width: '110' },
        { label: '责任医师', prop: 'adminVisitOperatorName',width: '90' },
        { label: '上级医师', prop: 'upperOperatorName',width: '90' },
        { label: '主营护士', prop: 'adminTendOperatorName',width: '90' },
        { label: '床位名称', prop: 'sickBedName' ,width: '110'},
        { label: '建床时间', prop: 'buildingTime',width: '160' }
      ],
      page: 1,
      size: 10,
      total: 0
    }
  },
  methods: {
    initTime() {
      var  vm = this
      var vm = this
      var now = new Date()
      vm.nowyear = vm.chooseYear = now.getFullYear()
@ -51,22 +54,82 @@ Vue.component('build-bed', {
        vm.years.push(i)
      }
    },
    queryDate(){},
    exportTable(){},
    eliminateClick(){
    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/exportGetFamilyBedRecord', fileName, params).then(function () {
        vm.exportLoading = false
      })
    },
    eliminateClick() {
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
      this.form = {}
    },
    closeDialog(){
    closeDialog() {
      this.dialogShow = false
    },
    previewRecord(row){
    previewRecord(row) {
      this.dialogShow = true
    },
    handleCurrentChange(val) {
      this.page = val
      this.getList()
    },
    handleSizeChange(val) {
      this.size = val
      this.getList()
    }
  },
  mounted() {
    this.initTime()
    this.getList()
  }
})

+ 81 - 84
component/statistics/PatientSituation/index.html

@ -1,88 +1,85 @@
<!-- <!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>患者情况分析</title>
    <link rel="stylesheet" type="text/css" href="index.css" />
  </head>
  <body> -->
    <!-- 家庭病床css文件位置位于/component/common/jtbc.css -->
<!-- 家庭病床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-time-picker
              is-range
              v-model="chooseTime"
              range-separator="至"
              start-placeholder="开始时间"
              end-placeholder="结束时间"
              placeholder="选择时间范围"
              value-format="yyyy-MM-dd"></el-time-picker>
          </label>
        </div>
        <div class="searchDiv pb20 pr20">
          <label class="c-333 c-f14">转归情况:</label>
          <el-select class=" formWidth" v-model="turnStatus" placeholder="请选择">
            <el-option v-for="(option, index) in turnStatusOptions" :label="option.value" :value="option.code"></el-option>
          </el-select>
        </div>
        <div class="searchDiv pb20 pr20">
          <label class="c-333 c-f14">患者姓名:</label>
          <el-input v-model="name" class=" formWidth wd160" placeholder="请输入患者姓名查询"></el-input>
        </div>
<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-input v-model="form.patientName" class="formWidth wd160" placeholder="请输入患者姓名查询"></el-input>
    </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>
          <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
        </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-column label="操作" width="130" align="center">
      <template slot-scope="scope">
        <el-button type="text" @click="previewRecord(scope.row)">查看结算记录</el-button>
      </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>
  <el-dialog :visible.sync="dialogShow" title="结算单据记录" @close="closeDialog">
    <div class="dialog-title">住院信息</div>
    <div style="display: flex" class="pb20">
      <div class="pr20">
        <label class="c-909399 c-f14">姓名:</label>
        {{settlementInfo.name}}
      </div>
      <div class="pr20">
        <label class="c-909399 c-f14">医保卡号:</label>
        {{settlementInfo.yibao}}
      </div>
      <div class="pr20">
        <label class="c-909399 c-f14">费用总额:</label>
        {{settlementInfo.pay}}
      </div>
      <el-table :data="tableData" style="width: 100%">
        <el-table-column type="index" min-width="60" label="序号"></el-table-column>
        <el-table-column :label="item.label" v-for="item in tableHeader">
          <template slot-scope="scope">{{scope.row[item.prop]}}</template>
        </el-table-column>
        <el-table-column label="操作">
          <template slot-scope="row">
            <el-button type="text" @click="previewRecord(row)">查看结算记录</el-button>
          </template>
        </el-table-column>
      </el-table>
      <el-dialog :visible.sync="dialogShow" title="结算单据记录" @close="closeDialog">
        <div class="dialog-title">住院信息</div>
        <div style="display: flex;" class="pb20">
          <div class="pr20">
            <label class="c-909399 c-f14">姓名:</label>
            {{settlementInfo.name}}
          </div>
          <div class="pr20">
            <label class="c-909399 c-f14">医保卡号:</label>
            {{settlementInfo.yibao}}
          </div>
          <div class="pr20">
            <label class="c-909399 c-f14">费用总额:</label>
            {{settlementInfo.pay}}
          </div>
        </div>
        <el-table style="width: 100%" :data="dialogTable">
          <el-table-column type="index" min-width="60" label="序号"></el-table-column>
          <el-table-column :label="item.label" v-for="item in dialogHeader" :width="item.width">
            <template slot-scope="scope">{{scope.row[item.prop]}}</template>
          </el-table-column>
        </el-table>
      </el-dialog>
    </div>
  <!-- </body> -->
<!-- </html> -->
    <el-table style="width: 100%" :data="dialogTable">
      <el-table-column type="index" min-width="60" label="序号"></el-table-column>
      <el-table-column :label="item.label" v-for="item in dialogHeader" :width="item.width">
        <template slot-scope="scope">{{scope.row[item.prop]}}</template>
      </el-table-column>
    </el-table>
  </el-dialog>
</div>

+ 121 - 39
component/statistics/PatientSituation/index.js

@ -20,26 +20,27 @@ Vue.component('patient-situation', {
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
      turnStatus: null,
      turnStatusOptions: [],
      name: '',
      turnOverOptions: [],
      form: {},
      loading: false,
      exportLoading: false,
      tableData: [],
      tableHeader: [
        { label: '住院号', prop: 'a' },
        { label: '病人姓名', prop: 'b' },
        { label: '性别', prop: 'c' },
        { label: '手机号', prop: 'd' },
        { label: '身份证号', prop: 'e' },
        { label: '费别', prop: 'a' },
        { label: '建床科室', prop: 'a' },
        { label: '护理等级', prop: 'a' },
        { label: '病情', prop: 'a' },
        { label: '建床诊断', prop: 'a' },
        { label: '建床日期', prop: 'a' },
        { label: '建床天数', prop: 'a' },
        { label: '撤床日期', prop: 'a' },
        { label: '撤床诊断', prop: 'a' },
        { label: '转归情况', prop: 'a' }
        { 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: {
@ -49,21 +50,24 @@ Vue.component('patient-situation', {
      },
      dialogTable: [],
      dialogHeader: [
        { label: '结算时间', prop: 'a', width: '120' },
        { label: '结算状态', prop: 'a', width: '80' },
        { label: '金额', prop: 'a', width: '80' },
        { label: '自付', prop: 'a', width: '80' },
        { label: '优惠金额', prop: 'a', width: '80' },
        { label: '减免金额', prop: 'a', width: '80' },
        { label: '单位支付', prop: 'a', width: '80' },
        { label: '医保支付', prop: 'a', width: '80' },
        { label: '结算总预交金', prop: 'a', width: '120' },
        { label: '结算时收退款', prop: 'a', width: '120' },
        { label: '结算后余额', prop: 'a', width: '120' },
        { label: '结算号', prop: 'a', width: '80' },
        { label: '就诊科室', prop: 'a', width: '80' },
        { label: '收费科室', prop: 'a', width: '80' }
      ]
        { 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: {
@ -77,11 +81,61 @@ Vue.component('patient-situation', {
        vm.years.push(i)
      }
    },
    queryDate() {},
    exportTable() {},
    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.turnStatus = null
      this.name = ''
      this.form = {}
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
@ -90,18 +144,46 @@ Vue.component('patient-situation', {
      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.turnStatusOptions = [{ label: '全部', value: '' }]
        vm.turnStatusOptions = vm.turnStatusOptions.concat(res.list)
        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()
  }
})

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

@ -1,75 +1,75 @@
<!-- <!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>患者情况分析</title>
    <link rel="stylesheet" type="text/css" href="index.css" />
  </head>
  <body> -->
    <!-- 家庭病床css文件位置位于/component/common/jtbc.css -->
<!-- 家庭病床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-time-picker
              is-range
              v-model="chooseTime"
              range-separator="至"
              start-placeholder="开始时间"
              end-placeholder="结束时间"
              placeholder="选择时间范围"
              value-format="yyyy-MM-dd"></el-time-picker>
          </label>
        </div>
        <div class="searchDiv pb20 pr20">
          <label class="c-333 c-f14">查床人员:</label>
          <el-input v-model="form.doctor"></el-input>
        </div>
        <div class="searchDiv pb20">
          <label class="c-333 c-f14">患者姓名:</label>
          <el-input v-model="form.name" class=" formWidth wd160" placeholder="请输入患者姓名查询"></el-input>
        </div>
<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-input v-model="form.doctorName" class="formWidth wd160" placeholder="请输入医生姓名查询"></el-input>
    </div>
    <div class="searchDiv pb20">
      <label class="c-333 c-f14">患者姓名:</label>
      <el-input v-model="form.patientName" class="formWidth wd160" placeholder="请输入患者姓名查询"></el-input>
    </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>
          <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
        </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%">
    <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>
    </el-table-column>
    <el-table-column label="操作" align="center">
      <template slot-scope="scope">
        <el-button type="text" @click="previewRecord(scope.row)">查看查床记录</el-button>
      </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>
  <el-dialog :visible.sync="dialogShow" title="查床计划" @close="closeDialog" width="750px">
    <div class="timeline-box">
      <div class="timeline" v-for="item in planList" :key="item.id">
        <div class="time">{{item.checkTime.substring(0,10)}}</div>
        <div class="circle" :class="getStatusCircleColor(item.checkPlanStatus)"></div>
        <div class="line"></div>
        <div class="name">{{item.patientName}}</div>
        <div class="statusName" :class="getStatusTextColor(item.checkPlanStatus)">{{item.checkPlanStatusName}}</div>
      </div>
      <div class="nodata" v-if="planList.length == 0">
        <img src="../../../images/nodata.png" alt="">
        暂无查床计划
      </div>
      <el-table :data="tableData" style="width: 100%">
        <el-table-column type="index" min-width="60" label="序号"></el-table-column>
        <el-table-column :label="item.label" v-for="item in tableHeader">
          <template slot-scope="scope">{{scope.row[item.prop]}}</template>
        </el-table-column>
        <el-table-column label="操作">
          <template slot-scope="row">
            <el-button type="text" @click="previewRecord(row)">查看查床记录</el-button>
          </template>
        </el-table-column>
      </el-table>
      <el-dialog :visible.sync="dialogShow" title="查床计划" @close="closeDialog" width="750px">
        <div class="timeline-box">
          <div class="timeline" v-for="item in planList">
            <div class="time">{{item.checkTime}}</div>
            <div class="circle">
            </div>
            <div class="line"></div>
            <div class="name">{{item.patientName}}</div>
            <div class="statusName">{{item.checkPlanStatusName}}</div>
          </div>
        </div>
      </el-dialog>
    </div>
  <!-- </body> -->
<!-- </html> -->
  </el-dialog>
</div>

+ 104 - 13
component/statistics/PlanService/index.js

@ -23,22 +23,27 @@ Vue.component('plan-service', {
      form: {},
      tableData: [],
      tableHeader: [
        { label: '住院号', prop: 'a' },
        { label: '患者姓名', prop: 'b' },
        { label: '性别', prop: 'c' },
        { label: '年龄', prop: 'c' },
        { label: '建床日期', prop: 'a' },
        { label: '查床周期', prop: 'a' },
        { label: '查床开始日期', prop: 'a' },
        { label: '查床人员', prop: 'a' }
        { label: '住院号', prop: 'visitNo' },
        { label: '患者姓名', prop: 'patientName' },
        { label: '性别', prop: 'sex' },
        { label: '年龄', prop: 'age' },
        { label: '建床日期', prop: 'buildingTime' },
        { label: '查床周期', prop: 'checkBedCircle' },
        { label: '查床开始日期', prop: 'checkTime' },
        { label: '查床人员', prop: 'doctorName' }
      ],
      dialogShow: true,
      dialogShow: false,
      planList: [
        { checkTime: '2024-11-01 9:30', patientName: '黄小蕾', checkPlanStatusName: '计划中', color: '#0099ff' },
        { checkTime: '2024-11-02 9:30', patientName: '黄小蕾', checkPlanStatusName: '已完成', color: '#099d09' },
        { checkTime: '2024-11-03 9:30', patientName: '黄小蕾', checkPlanStatusName: '计划超时', color: '#ff0000' },
        { checkTime: '2024-11-04 9:30', patientName: '黄小蕾', checkPlanStatusName: '计划中', color: '#0099ff' }
      ]
      ],
      page: 1,
      size: 10,
      total: 0,
      loading: false,
      exportLoading: false
    }
  },
  methods: {
@ -52,8 +57,59 @@ Vue.component('plan-service', {
        vm.years.push(i)
      }
    },
    queryDate() {},
    exportTable() {},
    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/getFamilyBedRecordPlanStatistics', { 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/exportGetFamilyBedPlanListStatistics', fileName, params).then(function () {
        vm.exportLoading = false
      })
    },
    eliminateClick() {
      this.form = {}
      this.yearType = '1'
@ -64,10 +120,45 @@ Vue.component('plan-service', {
      this.dialogShow = false
    },
    previewRecord(row) {
      var vm = this
      this.dialogShow = true
    }
      vm.planList = []
      httpRequest.get('doctor/familyBed/findBedCheckPlanList', { data: { bedRecordCode: row.code,bedTeamId:row.adminTeamId } }).then(function (res) {
        vm.planList = res.data
      })
    },
    handleCurrentChange(val) {
      this.page = val
      this.getList()
    },
    handleSizeChange(val) {
      this.size = val
      this.getList()
    },
    getStatusTextColor: function (status) {
      switch (status) {
        case '0':
          return 'c-ff5e6c'
        case '1':
          return 'c-17b3ec'
        case '2':
          return 'c-20d7ad'
      }
    },
    getStatusCircleColor: function (status) {
      switch (status) {
        case '0':
          return 'bg-ff5e6c'
        case '1':
          return 'bg-17b3ec'
        case '2':
          return 'bg-20d7ad'
      }
    },
  },
  mounted() {
    this.initTime()
    this.getList()
  }
})

+ 38 - 26
component/statistics/Referral/index.html

@ -13,25 +13,24 @@
    <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-time-picker
          is-range
        <el-date-picker
          v-model="chooseTime"
          type="daterange"
          range-separator="至"
          start-placeholder="开始时间"
          end-placeholder="结束时间"
          placeholder="选择时间范围"
          value-format="yyyy-MM-dd"></el-time-picker>
          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="turnStatus" placeholder="请选择">
        <el-option v-for="(option, index) in turnStatusOptions" :label="option.value" :value="option.code"></el-option>
      <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-input v-model="name" class="formWidth wd160" placeholder="请输入患者姓名查询"></el-input>
      <el-input v-model="form.patientName" class="formWidth wd160" placeholder="请输入患者姓名查询"></el-input>
    </div>
    <div class="searchDiv pb20">
@ -42,69 +41,82 @@
  </div>
  <el-table :data="tableData" style="width: 100%">
    <el-table-column type="index" min-width="60" label="序号"></el-table-column>
    <el-table-column :label="item.label" v-for="item in tableHeader">
    <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>
    </el-table-column>
    <el-table-column label="操作">
      <template slot-scope="row">
        <el-button type="text" @click="previewRecord(row)">撤床记录单</el-button>
    <el-table-column label="操作" align="center">
      <template slot-scope="scope">
        <el-button type="text" @click="previewRecord(scope.row)">撤床记录单</el-button>
      </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>
  <el-dialog :visible.sync="dialogShow" title="撤床记录单" @close="closeDialog" width="700px">
    <div class="dialog-title">撤床记录单</div>
    <div style="padding:0 16px;">
      <div class="form-item">
        <div class="form-label">申请人姓名</div>
        <div class="form-value">陈xx</div>
        <div class="form-value">{{info.patientName}}</div>
      </div>
      <div class="form-item">
        <div class="form-label">年龄</div>
        <div class="form-value">77</div>
        <div class="form-value">{{info.age}}</div>
      </div>
      <div class="form-item">
        <div class="form-label">性别</div>
        <div class="form-value">男</div>
        <div class="form-value">{{sexDict[info.sex]}}</div>
      </div>
      <div class="form-item">
        <div class="form-label">建床日期</div>
        <div class="form-value">2021-11-16</div>
        <div class="form-value">{{info.buildingTime}}</div>
      </div>
      <div class="form-item">
        <div class="form-label">撤床日期</div>
        <div class="form-value">2021-11-16</div>
        <div class="form-value">{{info.withdrawalTime}}</div>
      </div>
      <div class="form-item">
        <div class="form-label">建床诊断</div>
        <div class="form-value">诊断名称</div>
        <div class="form-value">{{info.buildingDiagnosis}}</div>
      </div>
      <div class="form-item">
        <div class="form-label">建床天数</div>
        <div class="form-value">55天</div>
        <div class="form-value">{{info.buildingDays}}天</div>
      </div>
      <div class="form-item">
        <div class="form-label">查床次数</div>
        <div class="form-value">111次</div>
        <div class="form-value">{{info.checkBedNum}}次</div>
      </div>
      <div class="form-item">
        <div class="form-label">撤床诊断</div>
        <div class="form-value">诊断名称</div>
        <div class="form-value">{{info.sickOutDiagnoseName}}</div>
      </div>
      <div class="form-item">
        <div class="form-label">小结</div>
        <div class="form-value textarea-content">小结</div>
        <div class="form-value textarea-content">{{info.summary}}</div>
      </div>
      <div class="form-item">
        <div class="form-label">转归</div>
        <div class="form-value">好转</div>
        <div class="form-value">{{turnOverObj[info.turnOver]}}</div>
      </div>
      <div class="form-item">
        <div class="form-label">患者(或监护人签字)</div>
        <div class="form-value"></div>
        <div class="form-value">
          <img :src="getImgUrl(info.patientSign)" alt="">
        </div>
      </div>
      <div class="form-item">
        <div class="form-label">责任医师签字</div>
        <div class="form-value"></div>
        <div class="form-value">
          <img :src="getImgUrl(info.doctorSign)" alt="">
        </div>
      </div>
    </div>
  </el-dialog>

+ 106 - 44
component/statistics/Referral/index.js

@ -20,50 +20,38 @@ Vue.component('referral', {
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
      turnStatus: null,
      turnStatusOptions: [],
      name: "",
      turnOverOptions: [],
      form: {},
      tableData: [],
      tableHeader: [
        {label: '住院号',prop: 'a'},
        {label: '病人姓名',prop: 'b'},
        {label: '性别',prop: 'c'},
        {label: '年龄',prop: 'd'},
        {label: '建床诊断',prop: 'a'},
        {label: '建床日期',prop: 'a'},
        {label: '建床天数',prop: 'a'},
        {label: '撤床日期',prop: 'a'},
        {label: '撤床诊断',prop: 'a'},
        {label: '转归情况',prop: 'a'},
        { label: '住院号', prop: 'visitNo' },
        { label: '病人姓名', prop: 'patientName' },
        { label: '性别', prop: 'sex' },
        { label: '年龄', prop: 'age' },
        { label: '建床诊断', prop: 'diagnoseName' },
        { label: '建床日期', prop: 'buildingDay' },
        { label: '建床天数', prop: 'buildingDays' },
        { label: '撤床日期', prop: 'withdrawalTime', width: '140' },
        { label: '撤床诊断', prop: 'sickOutDiagnoseName' },
        { label: '转归情况', prop: 'turnOver' }
      ],
      dialogShow: true,
      settlementInfo: {
        name:'黄小蕾',
        yibao: 'dk',
        pay: '1049'
      dialogShow: false,
      info: {},
      page: 1,
      size: 10,
      total: 0,
      loading: false,
      exportLoading: false,
      sexDict: {
        1: '男',
        2: '女'
      },
      dialogTable: [],
      dialogHeader: [
        {label: '结算时间',prop: 'a',width: '120'},
        {label: '结算状态',prop: 'a',width:'80'},
        {label: '金额',prop: 'a',width: '80'},
        {label: '自付',prop: 'a',width: '80'},
        {label: '优惠金额',prop: 'a',width: '80'},
        {label: '减免金额',prop: 'a',width: '80'},
        {label: '单位支付',prop: 'a',width: '80'},
        {label: '医保支付',prop: 'a',width: '80'},
        {label: '结算总预交金',prop: 'a',width: '120'},
        {label: '结算时收退款',prop: 'a',width: '120'},
        {label: '结算后余额',prop: 'a',width: '120'},
        {label: '结算号',prop: 'a',width: '80'},
        {label: '就诊科室',prop: 'a',width: '80'},
        {label: '收费科室',prop: 'a',width: '80'},
      ]
      turnOverObj: {}
    }
  },
  methods: {
    initTime() {
      var  vm = this
      var vm = this
      var now = new Date()
      vm.nowyear = vm.chooseYear = now.getFullYear()
@ -72,23 +60,97 @@ Vue.component('referral', {
        vm.years.push(i)
      }
    },
    queryDate(){},
    exportTable(){},
    eliminateClick(){
      this.turnStatus = null
      this.name = ""
    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/getFamilyBedWithdrawalStatistics', { 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/exportGetFamilyBedWithdrawalStatistics', fileName, params).then(function () {
        vm.exportLoading = false
      })
    },
    eliminateClick() {
      this.form = {}
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
    },
    closeDialog(){
    closeDialog() {
      this.dialogShow = false
    },
    previewRecord(row){
    previewRecord(row) {
      var vm = this
      this.dialogShow = true
    }
      httpRequest.get('doctor/familyBed/findBedWithdrawal', { data: { bedRecordCode: row.code } }).then(function (res) {
        vm.info = res.data
      })
    },
    getDictData() {
      var vm = this
      statisticAPI.getDictByDictName({ name: 'jkcopd_disease_conversion' }).then(function (res) {
        vm.turnOverOptions = [{ value: '全部' }]
        vm.turnOverOptions = vm.turnOverOptions.concat(res.list)
        for (var item of res.list) {
          vm.turnOverObj[item.code] = item.value
        }
      })
    },
    handleCurrentChange(val) {
      this.page = val
      this.getList()
    },
    handleSizeChange(val) {
      this.size = val
      this.getList()
    },
  },
  mounted() {
    this.initTime()
    this.getDictData()
    this.getList()
  }
})

BIN
images/nodata.png