Ver código fonte

两癌进度

hwy 6 dias atrás
pai
commit
02bcb9cdcb

+ 14 - 145
component/statistics/LascProgress/index.html

@ -2,17 +2,9 @@
<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"
@ -22,6 +14,7 @@
          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">
@ -52,143 +45,19 @@
      <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
    </div>
  </div>
  <el-table :data="tableData" style="width: 100%" v-loading="loading" row-key="code" lazy :load="load" :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
  <el-table :data="tableData" style="width: 100%" v-loading="loading" row-key="code" lazy :load="load" border class="mt20">
    <el-table-column label="序号" type="index"></el-table-column>
    <el-table-column :label="item.label" v-for="item in tableHeader" :min-width="item.width" :key="item.prop" :prop="item.prop">
      <template slot-scope="scope">
        <span
          :class="`${['totalTimes','mzTimes','zyTimes','totalNum','mzNum','zyNum'].includes(item.prop)&&scope.row.code?'pointer c-409eff':''}`"
          @click="openDialog(scope.row, item.prop)">
          {{scope.row[item.prop]}}
        </span>
      </template>
      <template slot-scope="scope">{{scope.row[item.prop]}}</template>
    </el-table-column>
  </el-table>
  <el-dialog :visible.sync="visible" :title="title" @close="closeDialog" width="1200px">
    <el-form inline size="mini">
      <el-form-item label="居民姓名:">
        <el-input v-model="query.patientName" placeholder="请输入居民姓名查询"></el-input>
      </el-form-item>
      <template v-if="title=='康复下转明细列表'">
        <el-form-item label="下转医生:">
          <el-input v-model="query.hospitalDoctor" placeholder="请输入下转医生查询"></el-input>
        </el-form-item>
        <el-form-item label="接收医生:">
          <el-input v-model="query.doctor" placeholder="请输入接收医生查询"></el-input>
        </el-form-item>
        <el-form-item label="下转状态:">
          <el-select v-model="query.status" placeholder="请选择">
            <el-option v-for="(option, index) in statusOptions" :label="option.value" :value="option.code" :key="option.code"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="下转医院:">
          <el-select v-model="query.hospitalCode" placeholder="请选择" filterable>
            <el-option v-for="(option, index) in rehabilitationHospital" :label="option.value" :value="option.code" :key="option.code"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="接收社区医院:">
          <el-select v-model="query.orgCode" placeholder="请选择" filterable>
            <el-option v-for="(option, index) in communityHospitals" :value="option.value" :label="option.label" :key="option.value"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="档案状态:">
          <el-select v-model="query.archiveStatus" placeholder="请选择">
            <el-option v-for="(item,index) in archiveList" :value="item.code" :label="item.value" :key="item.code"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="患者类型:">
          <el-select v-model="query.patientType" placeholder="请选择">
            <el-option v-for="(item,index) in inviteStatus" :value="item.value" :label="item.label" :key="item.value"></el-option>
          </el-select>
        </el-form-item>
      </template>
      <template v-else>
        <el-form-item label="签约医院:">
          <el-input v-model="query.signHospitalName" placeholder="请输入签约医院查询"></el-input>
        </el-form-item>
        <el-form-item label="手机号码:">
          <el-input v-model="query.mobile" placeholder="请输入手机号码查询"></el-input>
        </el-form-item>
        <el-form-item label="性别:">
          <el-select v-model="query.sex">
            <el-option label="全部" value=""></el-option>
            <el-option label="男" value="1"></el-option>
            <el-option label="女" value="2"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="是否签约:">
          <el-select v-model="query.isSign">
            <el-option label="全部" value=""></el-option>
            <el-option label="是" value="1"></el-option>
            <el-option label="否" value="2"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="下转类型:">
          <el-select v-model="query.eventType">
            <el-option label="全部" value=""></el-option>
            <el-option label="门诊" value="1"></el-option>
            <el-option label="住院" value="2"></el-option>
          </el-select>
        </el-form-item>
      </template>
      <el-form-item label="数据范围:">
        <el-select v-model="query.range" disabled>
          <el-option v-for="item in rangeOptions" :value="item.value" :label="item.label" :key="item.value"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="地区:" v-if="query.range == 'town'">
        <el-select v-model="query.area" disabled>
          <el-option v-for="(option, index) in dataRangeOption" :label="option.label" :value="option.value" :key="option.value"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="社区:" v-if="query.range == 'hospital'">
        <el-select v-model="query.hospital" disabled>
          <el-option v-for="(option, index) in dataRangeOption" :label="option.label" :value="option.value" :key="option.value"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="团队:" v-if="query.range == 'team'">
        <el-select v-model="query.team" disabled>
          <el-option v-for="(option, index) in dataRangeOption" :label="option.label" :value="option.value" :key="option.value"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="dialogSearchFn">查询</el-button>
        <el-button type="warning" @click="dialogExportFn" :disabled="dialogExportLoading">导出</el-button>
        <span @click="dialogReset" style="color: #676a6c; cursor: pointer">清除筛选条件</span>
      </el-form-item>
    </el-form>
    <el-table :data="dialogTableData" border v-loading="dialogLoading">
      <el-table-column label="序号" type="index"></el-table-column>
      <el-table-column v-for="item in dialogHeader" :label="item.label" :render-header="renderHeader">
        <template slot-scope="scope">
          <span :class="`${item.prop=='name'?'pointer c-409eff':''}`" @click="seePatientDetail(scope.row, item.prop)">{{scope.row[item.prop]}}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作" align="center" width="100" v-if="title=='康复下转明细列表'">
        <template slot-scope="scope">
          <el-button type="text" v-if="scope.row.status==0" @click="operation(1,scope.row)">分配</el-button>
          <el-button type="text" @click="operation(2,scope.row)">查看签约</el-button>
          <el-button type="text" v-if="scope.row.status==5" @click="operation(3,scope.row)">同步居民</el-button>
          <el-button type="text" v-if="scope.row.status==3" @click="operation(4,scope.row)">同步病历</el-button>
        </template>
      </el-table-column>
    </el-table>
    <div style="display: flex; justify-content: flex-end; margin-top: 10px">
      <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"></el-pagination>
    </div>
  </el-dialog>
  <el-dialog title="查看签约信息" :visible.sync="dialogVisible" width="70%" append-to-body>
    <el-table border :data="signatoryList" style="width: 100%" height="500" class="mt20">
      <el-table-column prop="hospitalName" label="签约社区医院" align="center"></el-table-column>
      <el-table-column prop="doctorName" label="签约医生" align="center"></el-table-column>
      <el-table-column prop="applyDate" label="签约时间" align="center"></el-table-column>
      <el-table-column prop="signYear" label="签约年度" align="center"></el-table-column>
    </el-table>
  </el-dialog>
  <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>

+ 9 - 99
component/statistics/LascProgress/index.js

@ -41,25 +41,19 @@ Vue.component('lasc-progress', {
      loading: false,
      exportLoading: false,
      tableData: [],
      tableHeader: [],
      constantHeader: [
        { label: '下转次数', prop: 'totalTimes', width: '90' },
        { label: '门诊下转次数', prop: 'mzTimes', width: '110' },
        { label: '出院下转次数', prop: 'zyTimes', width: '110' },
        { label: '下转人数', prop: 'totalNum', width: '110' },
        { label: '门诊下转人数', prop: 'mzNum', width: '110' },
        { label: '出院下转人数', prop: 'zyNum', width: '110' },
        { label: '门诊下转已评估', prop: 'mzScreenNum', width: '120' },
        { label: '门诊下转未评估', prop: 'unMzScreenNum', width: '120' },
        { label: '出院下转已评估', prop: 'zyScreenNum', width: '120' },
        { label: '出院下转未评估', prop: 'unZyScreenNum', width: '120' }
      tableHeader: [
        { label: '机构', prop: 'name' },
        { label: '筛查总人数', prop: 'sex' },
        { label: '待评估人数', prop: 'age' },
        { label: '已评估人数', prop: 'mobile' },
        { label: '已评估且管理人数', prop: 'hospitalName' },
        { label: '宫颈待完善乳腺待完善人数', prop: 'hospitalDoctor' },
        { label: '宫颈待完善乳腺完成筛查人数', prop: 'createTime' },
        { label: '宫颈完成筛查乳腺待完善人数', prop: 'patientType' }
      ],
      level: 0,
      visible: false,
      query: {},
      dataRangeOption: [],
      dialogTableData: [],
      dialogHeader: [],
      page: 1,
      size: 10,
      total: 0,
@ -449,90 +443,6 @@ Vue.component('lasc-progress', {
          })
      }
    },
    openDialog(row, prop) {
      if (!row.code) return
      this.page = 1
      if (['totalTimes', 'mzTimes', 'zyTimes'].includes(prop)) {
        this.query = {
          status: '',
          hospitalCode: '',
          orgCode: '',
          archiveStatus: '',
          patientType: ''
        }
        this.visible = true
        this.title = '康复下转明细列表'
        this.dialogHeader = [
          { label: '姓名', prop: 'name' },
          { label: '性别', prop: 'sex' },
          { label: '年龄', prop: 'age' },
          { label: '手机号', prop: 'mobile' },
          { label: '下转医院', prop: 'hospitalName' },
          { label: '下转医生', prop: 'hospitalDoctor' },
          { label: '下转时间', prop: 'createTime' },
          { label: '患者类型', prop: 'patientType' },
          { label: '下转状态', prop: 'statusName' },
          { label: '接收社区医院', prop: 'orgName' },
          { label: '接收签约医生', prop: 'doctorName' },
          { label: '接收时间', prop: 'receiveTime' },
          { label: '档案状态', prop: 'archiveStatusName' }
        ]
        switch (prop) {
          case 'mzTimes':
            this.query.patientType = '1'
            break
          case 'zyTimes':
            this.query.patientType = '2'
            break
        }
      } else if (['totalNum', 'mzNum', 'zyNum'].includes(prop)) {
        this.visible = true
        this.title = '下转情况数据列表'
        this.query = {
          sex: '',
          isSign: '',
          eventType: ''
        }
        this.dialogHeader = [
          { label: '姓名', prop: 'name' },
          { label: '性别', prop: 'sex' },
          { label: '年龄', prop: 'age' },
          { label: '手机号', prop: 'mobile' },
          { label: '是否签约', prop: 'isSign' },
          { label: '社区医院', prop: 'hospitalName' },
          { label: '下转次数', prop: 'num' },
          { label: '最近一次下转诊断', prop: 'diagnosisName' },
          { label: '最近一次下转时间', prop: 'turnDownTime' },
          { label: '最近一次下转类型', prop: 'eventType' }
        ]
        switch (prop) {
          case 'mzNum':
            this.query.eventType = '1'
            break
          case 'zyNum':
            this.query.eventType = '2'
            break
        }
      }
      var len = row.code.length
      if (len == 6) {
        this.query.range = 'town'
        this.query.area = row.code
      } else if (len == 10) {
        this.query.range = 'hospital'
        this.query.hospital = row.code
      } else {
        this.query.range = 'team'
        this.query.team = row.code
      }
      this.dataRangeOption = [{ label: row.name, value: row.code }]
      if (['totalTimes', 'mzTimes', 'zyTimes'].includes(prop)) {
        this.rehabilitationPatientInfo()
      } else if (['totalNum', 'mzNum', 'zyNum'].includes(prop)) {
        this.turnDownDataPage()
      }
    },
    // 康复下转操作
    operation(num, item) {
      var vm = this