hwy 5 giorni fa
parent
commit
686c50d6f7

+ 156 - 187
component/statistics/LascCervical/index.html

@ -1,193 +1,162 @@
<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" style="display: flex; align-items: center">
        宫颈初筛时间:
        <el-date-picker
          v-model="chooseTime"
          type="daterange"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          value-format="yyyy-MM-dd"></el-date-picker>
      </label>
    </div>
  <template v-if="!serviceRecordVisable">
    <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" style="display: flex; align-items: center">
          宫颈初筛时间:
          <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.town" 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 == '2'">
      <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">
        <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.town" 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 == '2'">
        <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">
      <el-button type="primary" size="mini" @click="searchFn">查询</el-button>
      <el-button type="ff9526" size="mini" @click="exportTable" :disabled="exportLoading">导出</el-button>
      <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
      <div class="searchDiv pb20">
        <el-button type="primary" size="mini" @click="searchFn">查询</el-button>
        <el-button type="ff9526" size="mini" @click="exportTable" :disabled="exportLoading">导出</el-button>
        <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
      </div>
    </div>
  </div>
  <el-table border :data="tableData" style="width: 100%" v-loading="loadingTwo" class="mt20">
    <template>
      <el-table-column type="index" width="50" label="序号" align="center"></el-table-column>
      <el-table-column prop="gynOrg" label="机构名称" align="center"></el-table-column>
      <el-table-column prop="total" label="筛查人数" align="center"></el-table-column>
      <el-table-column prop="endNum" label="结案人数" align="center"></el-table-column>
      <el-table-column prop="num1" label="宫颈初筛已完成人数" align="center"></el-table-column>
      <el-table-column label="宫颈癌管理情况" align="center">
        <el-table-column prop="num2" label="妇科检查人数" align="center"></el-table-column>
        <el-table-column prop="assessNum" label="线上评估人数" align="center"></el-table-column>
        <el-table-column prop="orderNum" label="线上预约人数" align="center"></el-table-column>
      </el-table-column>
      <el-table-column label="宫颈妇科检查情况" align="center">
        <el-table-column prop="jujueNum" label="拒绝" align="center"></el-table-column>
        <el-table-column prop="yicongNum" label="依从" align="center"></el-table-column>
        <el-table-column prop="num3" label="检查人数" align="center"></el-table-column>
        <el-table-column prop="waitNum" label="待完善人数" align="center"></el-table-column>
      </el-table-column>
      <el-table-column label="HPV检查情况" align="center">
        <el-table-column prop="hpvNum" label="检查人数" align="center"></el-table-column>
        <el-table-column prop="n1" label="待完善人数" align="center"></el-table-column>
      </el-table-column>
      <el-table-column label="高危HPV分型检测情况" align="center">
        <el-table-column prop="hpvH" label="高危HPV阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv16" label="16型阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv18" label="18型阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv31" label="31型阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv33" label="33型阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv35" label="35型阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv39" label="39型阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv45" label="45型阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv51" label="51型阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv52" label="52型阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv53" label="53型阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv56" label="56型阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv58" label="58型阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv59" label="59型阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv66" label="66型阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv68" label="68型阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv73" label="73型阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv82" label="82型阳性人数" align="center"></el-table-column>
      </el-table-column>
      <el-table-column label="低危HPV分型检测情况" align="center">
        <el-table-column prop="hpvL" label="低危HPV阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv6" label="6型阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv11" label="11型阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv42" label="42型阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv43" label="43型阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv44" label="44型阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv81" label="81型阳性人数" align="center"></el-table-column>
        <el-table-column prop="hpv83" label="83型阳性人数" align="center"></el-table-column>
      </el-table-column>
      <el-table-column label="宫颈细胞学检查情况" align="center">
        <el-table-column prop="cytNum" label="检查人数" align="center"></el-table-column>
        <el-table-column prop="cytNum1" label="检查异常人数" align="center"></el-table-column>
        <el-table-column prop="cytNum2" label="待完善人数" align="center"></el-table-column>
      </el-table-column>
      <el-table-column label="初筛结果临床评估情况" align="center">
        <el-table-column prop="preNum" label="检查人数" align="center"></el-table-column>
        <el-table-column prop="preNum1" label="待完善人数" align="center"></el-table-column>
        <el-table-column prop="preNum2" label="未见异常,定期筛查" align="center"></el-table-column>
        <el-table-column prop="preNum3" label="异常,6-12个月复查" align="center"></el-table-column>
        <el-table-column prop="preNum4" label="异常,嘱进一步行阴道镜检查" align="center"></el-table-column>
      </el-table-column>
      <el-table-column label="阴道镜检查情况" align="center">
        <el-table-column prop="colNum" label="需要阴道镜检查人数" align="center"></el-table-column>
        <el-table-column prop="colNum1" label="阴道镜检查人数" align="center"></el-table-column>
        <el-table-column prop="colNum2" label="接受检查人数" align="center"></el-table-column>
        <el-table-column prop="colNum3" label="拒绝检查人数" align="center"></el-table-column>
        <el-table-column prop="colNum4" label="未见异常人数" align="center"></el-table-column>
        <el-table-column prop="colNum5" label="异常人数" align="center"></el-table-column>
        <el-table-column prop="colNum6" label="待完善人数" align="center"></el-table-column>
      </el-table-column>
      <el-table-column label="阴道镜检查随访情况" align="center">
        <el-table-column prop="colfNum" label="已随访人数" align="center"></el-table-column>
        <el-table-column prop="colfNum1" label="待随访人数" align="center"></el-table-column>
        <el-table-column prop="colfNum2" label="未见异常 " align="center"></el-table-column>
        <el-table-column prop="colfNum3" label="低度病变" align="center"></el-table-column>
        <el-table-column prop="colfNum4" label="高度病变" align="center"></el-table-column>
        <el-table-column prop="colfNum5" label="可疑癌" align="center"></el-table-column>
        <el-table-column prop="colfNum6" label="其他" align="center"></el-table-column>
        <el-table-column prop="colfNum7" label="不详" align="center"></el-table-column>
      </el-table-column>
      <el-table-column label="组织病理学检查情况" align="center">
        <el-table-column prop="cpatNum" label="需要组织病理学检查" align="center"></el-table-column>
        <el-table-column prop="cpatNum1" label="病理学检查人数" align="center"></el-table-column>
        <el-table-column prop="cpatNum2" label="接受检查人数" align="center"></el-table-column>
        <el-table-column prop="cpatNum3" label="拒绝检查人数" align="center"></el-table-column>
        <el-table-column prop="cpatNum4" label="未见异常人数" align="center"></el-table-column>
        <el-table-column prop="cpatNum5" label="炎症" align="center"></el-table-column>
        <el-table-column prop="cpatNum6" label="低级别病变(原CIN1)" align="center"></el-table-column>
        <el-table-column prop="cpatNum7" label="高级别病变(原CIN2及CIN3)" align="center"></el-table-column>
        <el-table-column prop="cpatNum8" label="官颈原位腺癌(AIS)" align="center"></el-table-column>
        <el-table-column prop="cpatNum9" label="官颈微小浸润癌(鳞癌/腺癌)" align="center"></el-table-column>
        <el-table-column prop="cpatNum10" label="官颈浸润癌(鳞癌/腺癌)" align="center"></el-table-column>
      </el-table-column>
      <el-table-column label="组织病理学检查随访情况" align="center">
        <el-table-column prop="cpatfNum" label="已随访人数" align="center"></el-table-column>
        <el-table-column prop="cpatfNum1" label="待随访人数" align="center"></el-table-column>
        <el-table-column prop="cpatfNum2" label="炎症" align="center"></el-table-column>
        <el-table-column prop="cpatfNum3" label="低级别病变(原CIN1)" align="center"></el-table-column>
        <el-table-column prop="cpatfNum4" label="高级别病变(原CIN2及CIN3)" align="center"></el-table-column>
        <el-table-column prop="cpatfNum5" label="官颈原位腺癌(AIS)" align="center"></el-table-column>
        <el-table-column prop="cpatfNum6" label="官颈微小浸润癌(鳞癌/腺癌)" align="center"></el-table-column>
        <el-table-column prop="cpatfNum7" label="官颈浸润癌(鳞癌/腺癌)" align="center"></el-table-column>
      </el-table-column>
      <el-table-column label="最后诊断情况" align="center">
        <el-table-column prop="finNum" label="未见异常人数" align="center"></el-table-column>
        <el-table-column prop="finNum1" label="炎症" align="center"></el-table-column>
        <el-table-column prop="finNum2" label="低级别病变(原CIN1)" align="center"></el-table-column>
        <el-table-column prop="finNum3" label="高级别病变(原CIN2及CIN3)" align="center"></el-table-column>
        <el-table-column prop="finNum4" label="宫颈原位腺癌(AIS)" align="center"></el-table-column>
        <el-table-column prop="finNum5" label="宫颈微小浸润癌(鳞癌/腺癌)" align="center"></el-table-column>
        <el-table-column prop="finNum6" label="宫颈浸润癌(鳞癌/腺癌)" align="center"></el-table-column>
        <el-table-column prop="finNum7" label="待完善人数" align="center"></el-table-column>
      </el-table-column>
    <el-table border :data="tableData" style="width: 100%" v-loading="loadingTwo" class="mt20">
      <template>
        <el-table-column type="index" width="50" label="序号" align="center"></el-table-column>
        <el-table-column prop="gynOrg" label="机构名称" align="center"></el-table-column>
        <el-table-column prop="total" label="筛查人数" align="center">
          <template slot-scope="scope">
            <span class="pointer c-409eff" @click="openDialog(scope.row, 'total')">{{scope.row['total']}}</span>
          </template>
        </el-table-column>
        <el-table-column prop="endNum" label="结案人数" align="center">
          <template slot-scope="scope">
            <span class="pointer c-409eff" @click="openDialog(scope.row, 'endNum')">{{scope.row['endNum']}}</span>
          </template>
        </el-table-column>
        <el-table-column prop="num1" label="宫颈初筛已完成人数" align="center">
          <template slot-scope="scope">
            <span class="pointer c-409eff" @click="openDialog(scope.row, 'num1')">{{scope.row['num1']}}</span>
          </template>
        </el-table-column>
        <el-table-column v-for="(group, groupIndex) in cervicalHeaderGroups" :key="'cervical-group-'+groupIndex" :label="group.label" align="center">
          <el-table-column
            v-for="(col, colIndex) in group.children"
            :key="'cervical-col-'+colIndex"
            :prop="col.prop"
            :label="col.label"
            align="center"
            :min-width="col.width || ''">
            <template slot-scope="scope">
              <span class="pointer c-409eff" @click="openDialog(scope.row, col.prop)">{{scope.row[col.prop]}}</span>
            </template>
          </el-table-column>
        </el-table-column>
      </template>
    </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-table-column label="宫颈病变接受治疗情况" align="center">
        <el-table-column prop="finTNum1" label="接受治疗人数" align="center"></el-table-column>
        <el-table-column prop="finTNum2" label="不接受治疗人数" align="center"></el-table-column>
        <el-table-column prop="finTNum3" label="不详人数" align="center"></el-table-column>
      </el-table-column>
      <el-table-column label="术后病理—接受组织病理学检查情况" align="center">
        <el-table-column prop="finSNum1" label="接受检查人数" align="center"></el-table-column>
        <el-table-column prop="finSNum2" label="不接受检查人数" align="center"></el-table-column>
        <el-table-column prop="finSNum3" label="炎症" align="center"></el-table-column>
        <el-table-column prop="finSNum4" label="低级别病变(原CIN1)" align="center"></el-table-column>
        <el-table-column prop="finSNum5" label="高级别病变(原CIN2及CIN3)" align="center"></el-table-column>
        <el-table-column prop="finSNum6" label="官颈微小浸润癌(鳞癌/腺癌)" align="center"></el-table-column>
        <el-table-column prop="finSNum7" label="官颈浸润癌(鳞癌/腺癌)" align="center"></el-table-column>
      </el-table-column>
    </template>
  </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="visible" title="个案数据列表" @close="closeDialog" width="1200px">
      <el-form inline size="mini">
        <el-form-item label="居民姓名:">
          <el-input v-model="query.name" 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-input v-model="query.idcard" placeholder="请输入证件号码查询"></el-input>
        </el-form-item>
        <el-form-item label="个人筛查状态:">
          <el-select v-model="query.status">
            <el-option label="全部" value=""></el-option>
            <el-option label="待评估" value="0"></el-option>
            <el-option label="已评估" value="1"></el-option>
            <el-option label="已评估且管理" value="2"></el-option>
            <el-option label="宫颈待完善乳腺待完善" value="3"></el-option>
            <el-option label="宫颈待完善乳腺完成筛查" value="4"></el-option>
            <el-option label="宫颈完成筛查乳腺待完善" value="5"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="数据范围:">
          <el-select v-model="form.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="form.range == 'town'">
          <el-select v-model="form.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="form.range == 'hospital'">
          <el-select v-model="form.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="form.range == 'team'">
          <el-select v-model="form.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="dialogResetFn" style="color: #676a6c; cursor: pointer">清除筛选条件</span>
        </el-form-item>
      </el-form>
      <el-table :data="dialogTableData" border v-loading="dialogLoading">
        <el-table-column type="index" label="序号"></el-table-column>
        <el-table-column v-for="item in dialogHeader" :label="item.label" :prop="item.prop" :key="item.prop">
          <template slot-scope="scope">
            <span>{{scope.row[item.prop]}}</span>
          </template>
        </el-table-column>
        <el-table-column label="操作">
          <template slot-scope="scope">
            <el-button type="text" @click="gotoService(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="handleCurrentChange1"
          @size-change="handleSizeChange1"
          :current-page.sync="query.page"
          :page-size="query.size"
          :page-sizes="[10, 20, 50]"
          layout="total, sizes, prev, pager, next, jumper"
          :total="query.total"></el-pagination>
      </div>
    </el-dialog>
  </template>
  <template v-if="serviceRecordVisable">
    <Copd-service-record-patient :patient="currentEditData" @back="back"></Copd-service-record-patient>
  </template>
</div>

+ 277 - 136
component/statistics/LascCervical/index.js

@ -18,8 +18,14 @@ Vue.component('lasc-cervical', {
    return {
      years: [],
      yearType: '1',
      loadingTwo: false,
      chooseYear: null,
      chooseTime: null,
      query: {
        page: 1,
        size: 10,
        total: 0
      },
      rangeOptions: [
        { label: '区', value: '1' },
        { label: '社区', value: '2' },
@ -56,10 +62,17 @@ Vue.component('lasc-cervical', {
      ],
      level: 0,
      visible: false,
      query: {},
      dataRangeOption: [],
      dialogTableData: [],
      dialogHeader: [],
      dialogHeader: [
        { label: '居民姓名', prop: 'name', width: '100' },
        { label: '证件号码', prop: 'idcard', width: '100' },
        { label: '手机号', prop: 'mobile', width: '110' },
        { label: '年龄', prop: 'age', width: '90' },
        { label: '出生日期', prop: 'birthday', width: '90' },
        { label: '常驻地址', prop: 'address', width: '100' },
        { label: '个人筛查状态', prop: 'statusName', width: '100' }
      ],
      page: 1,
      size: 10,
      total: 0,
@ -79,10 +92,187 @@ Vue.component('lasc-cervical', {
      communityHospitals: [],
      title: '',
      dialogVisible: false,
      signatoryList: []
      signatoryList: [],
      cervicalHeaderGroups: [
        {
          label: '宫颈癌管理情况',
          children: [
            { prop: 'num2', label: '妇科检查人数' },
            { prop: 'assessNum', label: '线上评估人数' },
            { prop: 'orderNum', label: '线上预约人数' }
          ]
        },
        {
          label: '宫颈妇科检查情况',
          children: [
            { prop: 'jujueNum', label: '拒绝' },
            { prop: 'yicongNum', label: '依从' },
            { prop: 'num3', label: '检查人数' },
            { prop: 'waitNum', label: '待完善人数' }
          ]
        },
        {
          label: 'HPV检查情况',
          children: [
            { prop: 'hpvNum', label: '检查人数' },
            { prop: 'n1', label: '待完善人数' }
          ]
        },
        {
          label: '高危HPV分型检测情况',
          children: [
            { prop: 'hpvH', label: '高危HPV阳性人数' },
            { prop: 'hpv16', label: '16型阳性人数' },
            { prop: 'hpv18', label: '18型阳性人数' },
            { prop: 'hpv31', label: '31型阳性人数' },
            { prop: 'hpv33', label: '33型阳性人数' },
            { prop: 'hpv35', label: '35型阳性人数' },
            { prop: 'hpv39', label: '39型阳性人数' },
            { prop: 'hpv45', label: '45型阳性人数' },
            { prop: 'hpv51', label: '51型阳性人数' },
            { prop: 'hpv52', label: '52型阳性人数' },
            { prop: 'hpv53', label: '53型阳性人数' },
            { prop: 'hpv56', label: '56型阳性人数' },
            { prop: 'hpv58', label: '58型阳性人数' },
            { prop: 'hpv59', label: '59型阳性人数' },
            { prop: 'hpv66', label: '66型阳性人数' },
            { prop: 'hpv68', label: '68型阳性人数' },
            { prop: 'hpv73', label: '73型阳性人数' },
            { prop: 'hpv82', label: '82型阳性人数' }
          ]
        },
        {
          label: '低危HPV分型检测情况',
          children: [
            { prop: 'hpvL', label: '低危HPV阳性人数' },
            { prop: 'hpv6', label: '6型阳性人数' },
            { prop: 'hpv11', label: '11型阳性人数' },
            { prop: 'hpv42', label: '42型阳性人数' },
            { prop: 'hpv43', label: '43型阳性人数' },
            { prop: 'hpv44', label: '44型阳性人数' },
            { prop: 'hpv81', label: '81型阳性人数' },
            { prop: 'hpv83', label: '83型阳性人数' }
          ]
        },
        {
          label: '宫颈细胞学检查情况',
          children: [
            { prop: 'cytNum', label: '检查人数' },
            { prop: 'cytNum1', label: '检查异常人数' },
            { prop: 'cytNum2', label: '待完善人数' }
          ]
        },
        {
          label: '初筛结果临床评估情况',
          children: [
            { prop: 'preNum', label: '检查人数' },
            { prop: 'preNum1', label: '待完善人数' },
            { prop: 'preNum2', label: '未见异常,定期筛查' },
            { prop: 'preNum3', label: '异常,6-12个月复查' },
            { prop: 'preNum4', label: '异常,嘱进一步行阴道镜检查' }
          ]
        },
        {
          label: '阴道镜检查情况',
          children: [
            { prop: 'colNum', label: '需要阴道镜检查人数' },
            { prop: 'colNum1', label: '阴道镜检查人数' },
            { prop: 'colNum2', label: '接受检查人数' },
            { prop: 'colNum3', label: '拒绝检查人数' },
            { prop: 'colNum4', label: '未见异常人数' },
            { prop: 'colNum5', label: '异常人数' },
            { prop: 'colNum6', label: '待完善人数' }
          ]
        },
        {
          label: '阴道镜检查随访情况',
          children: [
            { prop: 'colfNum', label: '已随访人数' },
            { prop: 'colfNum1', label: '待随访人数' },
            { prop: 'colfNum2', label: '未见异常' },
            { prop: 'colfNum3', label: '低度病变' },
            { prop: 'colfNum4', label: '高度病变' },
            { prop: 'colfNum5', label: '可疑癌' },
            { prop: 'colfNum6', label: '其他' },
            { prop: 'colfNum7', label: '不详' }
          ]
        },
        {
          label: '组织病理学检查情况',
          children: [
            { prop: 'cpatNum', label: '需要组织病理学检查' },
            { prop: 'cpatNum1', label: '病理学检查人数' },
            { prop: 'cpatNum2', label: '接受检查人数' },
            { prop: 'cpatNum3', label: '拒绝检查人数' },
            { prop: 'cpatNum4', label: '未见异常人数' },
            { prop: 'cpatNum5', label: '炎症' },
            { prop: 'cpatNum6', label: '低级别病变(原CIN1)' },
            { prop: 'cpatNum7', label: '高级别病变(原CIN2及CIN3)' },
            { prop: 'cpatNum8', label: '宫颈原位腺癌(AIS)' },
            { prop: 'cpatNum9', label: '宫颈微小浸润癌(鳞癌/腺癌)' },
            { prop: 'cpatNum10', label: '宫颈浸润癌(鳞癌/腺癌)' }
          ]
        },
        {
          label: '组织病理学检查随访情况',
          children: [
            { prop: 'cpatfNum', label: '已随访人数' },
            { prop: 'cpatfNum1', label: '待随访人数' },
            { prop: 'cpatfNum2', label: '炎症' },
            { prop: 'cpatfNum3', label: '低级别病变(原CIN1)' },
            { prop: 'cpatfNum4', label: '高级别病变(原CIN2及CIN3)' },
            { prop: 'cpatfNum5', label: '宫颈原位腺癌(AIS)' },
            { prop: 'cpatfNum6', label: '宫颈微小浸润癌(鳞癌/腺癌)' },
            { prop: 'cpatfNum7', label: '宫颈浸润癌(鳞癌/腺癌)' }
          ]
        },
        {
          label: '最后诊断情况',
          children: [
            { prop: 'finNum', label: '未见异常人数' },
            { prop: 'finNum1', label: '炎症' },
            { prop: 'finNum2', label: '低级别病变(原CIN1)' },
            { prop: 'finNum3', label: '高级别病变(原CIN2及CIN3)' },
            { prop: 'finNum4', label: '宫颈原位腺癌(AIS)' },
            { prop: 'finNum5', label: '宫颈微小浸润癌(鳞癌/腺癌)' },
            { prop: 'finNum6', label: '宫颈浸润癌(鳞癌/腺癌)' },
            { prop: 'finNum7', label: '待完善人数' }
          ]
        },
        {
          label: '宫颈病变接受治疗情况',
          children: [
            { prop: 'finTNum1', label: '接受治疗人数' },
            { prop: 'finTNum2', label: '不接受治疗人数' },
            { prop: 'finTNum3', label: '不详人数' }
          ]
        },
        {
          label: '术后病理—接受组织病理学检查情况',
          children: [
            { prop: 'finSNum1', label: '接受检查人数' },
            { prop: 'finSNum2', label: '不接受检查人数' },
            { prop: 'finSNum3', label: '炎症' },
            { prop: 'finSNum4', label: '低级别病变(原CIN1)' },
            { prop: 'finSNum5', label: '高级别病变(原CIN2及CIN3)' },
            { prop: 'finSNum6', label: '宫颈微小浸润癌(鳞癌/腺癌)' },
            { prop: 'finSNum7', label: '宫颈浸润癌(鳞癌/腺癌)' }
          ]
        }
      ],
      currentEditData: '',
      serviceRecordVisable: false
    }
  },
  methods: {
    back() {
      this.currentEditData = ''
      this.serviceRecordVisable = false
    },
    gotoService(item) {
      this.currentEditData = item.patient
      this.serviceRecordVisable = true
    },
    init() {
      var selectedRole = JSON.parse(sessionStorage.getItem('selectedRole'))
      if (selectedRole.code.indexOf('350200') > -1) {
@ -106,9 +296,7 @@ Vue.component('lasc-cervical', {
        this.getHospital(selectedRole.code)
      } else {
        this.level = 3 // 社区管理
        this.rangeOptions = [
          { label: '社区', value: '2' },
        ]
        this.rangeOptions = [{ label: '社区', value: '2' }]
        this.areaOptions = [{ label: selectedRole.name.substring(0, 3), value: selectedRole.code }]
        this.hospitalOptions = [{ name: selectedRole.name, code: selectedRole.code }]
        this.form = {
@ -144,16 +332,14 @@ Vue.component('lasc-cervical', {
        delete this.form.team
      }
    },
    getDictData() {
    
    },
    getDictData() {},
    searchFn() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page:this.page,
        size:this.size
        page: this.page,
        size: this.size
      }
      vm.tableData = []
      if (this.chooseTime) {
@ -165,15 +351,15 @@ Vue.component('lasc-cervical', {
          vm.tableData = res.detailModelList
          vm.total = res.totalCount
        }
        console.log('22222222222222222',vm.tableData)
        console.log('22222222222222222', vm.tableData)
        vm.loading = false
      })
    },
    exportTable() {
      var params = {
        ...this.form,
        page:this.page,
        size:this.size
        page: this.page,
        size: this.size
      }
      if (this.chooseTime) {
        params.startTime = this.chooseTime[0]
@ -241,43 +427,6 @@ Vue.component('lasc-cervical', {
        vm.teamOptions = res.data
      })
    },
    load(row, treeNode, resolve) {
      var params = {}
      var len = row.code.length
      if (len == 6) {
        params.range = 'hospital'
        params.area = row.code
      } else if (len == 10) {
        params.range = 'team'
        params.hospital = row.code
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01'
        params.endDate = this.chooseYear + '-12-31'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0]
          params.endDate = this.chooseTime[1]
        }
      }
      httpRequest.get('statistics/collaborate/gxbTurnDownInfo', { data: params }).then(function (res) {
        if (res.status == 200) {
          var children = res.detailModelList.map(function (item) {
            var data = JSON.parse(JSON.stringify(item))
            if (len == 6) {
              data.hospital = item.name
              data.hasChildren = true
            } else if (len == 10) {
              data.team = item.name
            }
            return data
          })
          resolve(children)
        }
      })
    },
    handleCurrentChange(val) {
      this.page = val
@ -329,92 +478,86 @@ Vue.component('lasc-cervical', {
          })
      }
    },
    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
        }
    openDialog(scope, prop) {
      var vm = this
      vm.dialogLoading = true
      this.query.type = 'g_' + prop
      var params = {
        ...this.query,
        range: (this.form && this.form.range) || '',
        town: (this.form && this.form.town) || ''
      }
      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
      vm.dialogTableData = []
      if (this.chooseTime) {
        params.startTime = this.chooseTime[0]
        params.endTime = this.chooseTime[1]
      }
      delete params.total
      httpRequest.get('doctor/twoCancers/count/caseDataList', { data: params }).then(function (res) {
        vm.dialogTableData = res.detailModelList
        vm.query.total = res.totalCount
        vm.visible = true
        vm.dialogLoading = false
      })
    },
    caseDataList() {
      var vm = this
      vm.dialogLoading = true
      var params = {
        ...this.query,
        range: (this.form && this.form.range) || '',
        town: (this.form && this.form.town) || '',
        hospital: (this.form && this.form.hospital) || ''
      }
      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()
      vm.dialogTableData = []
      if (this.chooseTime) {
        params.startTime = this.chooseTime[0]
        params.endTime = this.chooseTime[1]
      }
      delete params.total
      httpRequest.get('doctor/twoCancers/count/caseDataList', { data: params }).then(function (res) {
        vm.dialogTableData = res.detailModelList
        vm.query.total = res.totalCount
        vm.dialogLoading = false
      })
    },
    dialogSearchFn() {
      this.caseDataList()
    },
    handleCurrentChange1(val) {
      this.query.page = val
      this.caseDataList()
    },
    handleSizeChange1(val) {
      this.query.size = val
      this.caseDataList()
    },
    dialogExportFn() {
      var vm = this
      this.dialogExportLoading = true
      var params = {
        ...this.query,
        range: (this.form && this.form.range) || '',
        town: (this.form && this.form.town) || '',
        hospital: (this.form && this.form.hospital) || ''
      }
      if (this.chooseTime) {
        params.startTime = this.chooseTime[0]
        params.endTime = this.chooseTime[1]
      }
      var fileName = `个案数据列表${new Date().getTime()}.xls`
      httpRequest.downLoadFileForAjax('doctor/twoCancers/count/exportCaseDataList', fileName, params).then(function () {
        vm.dialogExportLoading = false
      })
    },
    dialogResetFn() {
      this.query = {
        page: 1,
        size: 10,
        total: 0
      }
      this.caseDataList()
    },
    closeDialog() {
      this.visible = false
@ -449,9 +592,7 @@ Vue.component('lasc-cervical', {
      } else {
        this.init()
      }
    },
    }
  },
  mounted() {
    this.init()

+ 150 - 216
component/statistics/breastCancerPatient/index.html

@ -1,223 +1,157 @@
<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" style="display: flex; align-items: center">
        <div>乳腺初筛时间:</div>
        <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.town" 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 == '2'">
      <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">
      <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 border :data="tableData" style="width: 100%" v-loading="loadingTwo" class="mt20">
    <template>
      <el-table-column type="index" width="50" label="序号" align="center"></el-table-column>
      <el-table-column prop="cduOrg" label="机构名称" align="center"></el-table-column>
      <el-table-column prop="screenTotal" label="筛查人数" align="center"></el-table-column>
      <el-table-column prop="endNum" label="结案人数" align="center"></el-table-column>
      <el-table-column prop="cduCompleteNum" label="乳腺超声已完成人数" align="center"></el-table-column>
      <el-table-column label="基本信息" align="center">
        <el-table-column prop="infoCompleteNum" label="完善" align="center"></el-table-column>
        <el-table-column prop="basquelouNum" label="缺漏" align="center"></el-table-column>
      </el-table-column>
      <el-table-column label="乳腺临床检查" align="center">
        <el-table-column prop="clicheckNum" label="检查人数" align="center"></el-table-column>
        <el-table-column prop="clijujueNum" label="拒绝" align="center"></el-table-column>
        <el-table-column prop="cliyicongNum" label="依从" align="center"></el-table-column>
        <el-table-column prop="cliquelouNum" label="缺漏" align="center"></el-table-column>
      </el-table-column>
      <el-table-column label="乳腺超声检查" align="center">
        <el-table-column prop="total" label="检查人数" align="center"></el-table-column>
        <el-table-column prop="jujueNum" label="拒绝" align="center"></el-table-column>
        <el-table-column prop="yicongNum" label="依从" align="center"></el-table-column>
        <el-table-column prop="quelouNum" label="缺漏" align="center"></el-table-column>
      </el-table-column>
      <el-table-column label="乳腺超声检查BI-RADS分级" align="center">
        <el-table-column prop="cduBiRads0" label="0级" align="center"></el-table-column>
        <el-table-column prop="cduBiRads1" label="1级" align="center"></el-table-column>
        <el-table-column prop="cduBiRads2" label="2级" align="center"></el-table-column>
        <el-table-column prop="cduBiRads3" label="3级" align="center"></el-table-column>
        <el-table-column prop="cduBiRads4a" label="4a级" align="center"></el-table-column>
        <el-table-column prop="cduBiRads4b" label="4b级" align="center"></el-table-column>
        <el-table-column prop="cduBiRads4c" label="4c级" align="center"></el-table-column>
        <el-table-column prop="cduBiRads05" label="5级" align="center"></el-table-column>
        <el-table-column prop="cduHeji" label="合计" align="center"></el-table-column>
      </el-table-column>
      <el-table-column label="乳腺钼靶检查" align="center">
        <el-table-column prop="molycNum" label="应查人数" align="center"></el-table-column>
        <el-table-column prop="molyicongNum" label="依从" align="center"></el-table-column>
        <el-table-column prop="moljujueNum" label="拒绝" align="center"></el-table-column>
        <el-table-column prop="mollostNum" label="失访" align="center"></el-table-column>
        <el-table-column prop="molycNum1" label="检查率" align="center"></el-table-column>
        <el-table-column prop="molycNum2" label="待完成人数" align="center"></el-table-column>
      </el-table-column>
      <el-table-column label="乳腺钼靶检查BI-RADS分级" align="center">
        <el-table-column prop="molBiRads0" label="0级" align="center"></el-table-column>
        <el-table-column prop="molBiRads1" label="1级" align="center"></el-table-column>
        <el-table-column prop="molBiRads2" label="2级" align="center"></el-table-column>
        <el-table-column prop="molBiRads3" label="3级" align="center"></el-table-column>
        <el-table-column prop="molBiRads4a" label="4a级" align="center"></el-table-column>
        <el-table-column prop="molBiRads4b" label="4b级" align="center"></el-table-column>
        <el-table-column prop="molBiRads4c" label="4c级" align="center"></el-table-column>
        <el-table-column prop="molBiRads5" label="5级" align="center"></el-table-column>
        <el-table-column prop="molBiRads6" label="不详" align="center"></el-table-column>
        <el-table-column prop="molHeji" label="合计" align="center"></el-table-column>
      </el-table-column>
      <el-table-column
        label="乳腺病理检查
      乳腺病理学监测情况"
        align="center">
        <el-table-column prop="needCheckNum" label="应查人数" align="center"></el-table-column>
        <el-table-column prop="checkedNum" label="已查人数" align="center"></el-table-column>
        <el-table-column prop="patjujueNum" label="拒诊人数" align="center"></el-table-column>
        <el-table-column prop="lostNum" label="失访人数" align="center"></el-table-column>
        <el-table-column prop="rate1" label="病理检查率" align="center"></el-table-column>
      </el-table-column>
  <template v-if="!serviceRecordVisable">
    <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" style="display: flex; align-items: center">
          <div>乳腺初筛时间:</div>
          <el-date-picker
            v-model="chooseTime"
            type="daterange"
            range-separator="至"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
            value-format="yyyy-MM-dd"></el-date-picker>
        </label>
      </div>
      <el-table-column label="乳腺癌检出情况" align="center">
        <el-table-column prop="type4" label="小叶原位癌人数" align="center"></el-table-column>
        <el-table-column prop="type3" label="导管原位癌人数" align="center"></el-table-column>
        <el-table-column prop="type1" label="浸润性导管癌人数" align="center"></el-table-column>
        <el-table-column prop="type2" label="浸润性小叶癌人数" align="center"></el-table-column>
        <el-table-column prop="type6" label="其他恶性肿瘤人数" align="center"></el-table-column>
        <el-table-column prop="type7" label="不详人数" align="center"></el-table-column>
        <el-table-column prop="hejiNum" label="合计人数" align="center"></el-table-column>
        <el-table-column prop="rate2" label="乳腺癌检出率" align="center"></el-table-column>
      </el-table-column>
      <el-table-column label="TNM分期" align="center">
        <el-table-column prop="TNM0" label="0期" align="center"></el-table-column>
        <el-table-column prop="TNM1" label="1期" align="center"></el-table-column>
        <el-table-column prop="TNM2a" label="IIA期" align="center"></el-table-column>
        <el-table-column prop="TNM2b" label="IIB期" align="center"></el-table-column>
        <el-table-column prop="TNM3up" label="III期以上" align="center"></el-table-column>
        <el-table-column prop="TNMbuxiang" label="不详" align="center"></el-table-column>
        <el-table-column prop="rate3" label="获得TNM分期比率" align="center"></el-table-column>
        <el-table-column prop="rate4" label="乳腺癌早诊率" align="center"></el-table-column>
      </el-table-column>
      <el-table-column label="治疗情况" align="center">
        <el-table-column prop="num1" label="应治疗人数" align="center"></el-table-column>
        <el-table-column prop="yzlNum" label="已治疗人数" align="center"></el-table-column>
        <el-table-column prop="jzOrLostNum" label="拒诊治疗或失访人数" align="center"></el-table-column>
        <el-table-column prop="rate5" label="早治率" align="center"></el-table-column>
      </el-table-column>
      <el-table-column label="乳腺癌风险人群" align="center">
        <el-table-column prop="label1" label="一般风险" align="center"></el-table-column>
        <el-table-column prop="label2" label="高风险" align="center"></el-table-column>
        <el-table-column prop="labelWait" label="待评估" align="center"></el-table-column>
        <el-table-column prop="rate6" label="高风险人群比例" align="center"></el-table-column>
      </el-table-column>
    </template>
  </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="visible" :title="title" @close="closeDialog" width="1200px">
    <el-form inline size="mini">
      <el-form-item label="居民姓名:">
        <el-input v-model="query.name" 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-input v-model="query.signDoctorName" 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.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>
      <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>
      </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>
      </div>
      <div class="searchDiv pb20 pr20">
        <label class="c-333 c-f14">地区:</label>
        <el-select class="formWidth" v-model="form.town" placeholder="请选择" @change="getHospital">
          <el-option v-for="(option, index) in areaOptions" :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>
      </div>
      <div class="searchDiv pb20 pr20" v-if="form.range == '2'">
        <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>
      </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 type="index" label="序号"></el-table-column>
      <el-table-column v-for="item in dialogHeader" :label="item.label" :prop="item.prop" :key="item.prop" :render-header="renderHeader">
        <template slot-scope="scope">
          <span :class="`${item.prop=='name'||item.prop == 'patientName'?'pointer c-409eff':''}`" @click="seePatientDetail(scope.row, item.prop)">{{scope.row[item.prop]}}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作">
        <template slot-scope="scope">
          <el-button type="text">查看服务记录</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>
      <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-dialog>
    <el-table border :data="tableData" style="width: 100%" v-loading="loadingTwo" class="mt20">
      <template>
        <el-table-column type="index" width="50" label="序号" align="center"></el-table-column>
        <el-table-column prop="cduOrg" label="机构名称" align="center"></el-table-column>
        <el-table-column label="筛查人数" align="center">
          <template slot-scope="scope">
            <span class="pointer c-409eff" @click="openDialog(scope.row, 'screenTotal')">{{scope.row['screenTotal']}}</span>
          </template>
        </el-table-column>
        <el-table-column label="结案人数" align="center">
          <template slot-scope="scope">
            <span class="pointer c-409eff" @click="openDialog(scope.row, 'endNum')">{{scope.row['endNum']}}</span>
          </template>
        </el-table-column>
        <el-table-column prop="cduCompleteNum" label="乳腺超声已完成人数" align="center">
          <template slot-scope="scope">
            <span class="pointer c-409eff" @click="openDialog(scope.row, 'cduCompleteNum')">{{scope.row['cduCompleteNum']}}</span>
          </template>
        </el-table-column>
        <!-- 动态生成的列 -->
        <el-table-column v-for="(group, groupIndex) in tableHeaderGroups" :key="'group-'+groupIndex" :label="group.label" align="center">
          <el-table-column v-for="(col, colIndex) in group.children" :key="'col-'+colIndex" :prop="col.prop" :label="col.label" align="center" :min-width="col.width">
            <template slot-scope="scope">
              <span class="pointer c-409eff" @click="openDialog(scope.row, col.prop)">{{scope.row[col.prop]}}</span>
            </template>
          </el-table-column>
        </el-table-column>
      </template>
    </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="visible" title="个案数据列表" @close="closeDialog" width="1200px">
      <el-form inline size="mini">
        <el-form-item label="居民姓名:">
          <el-input v-model="query.name" 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-input v-model="query.idcard" placeholder="请输入证件号码查询"></el-input>
        </el-form-item>
        <el-form-item label="个人筛查状态:">
          <el-select v-model="query.status">
            <el-option label="全部" value=""></el-option>
            <el-option label="待评估" value="0"></el-option>
            <el-option label="已评估" value="1"></el-option>
            <el-option label="已评估且管理" value="2"></el-option>
            <el-option label="宫颈待完善乳腺待完善" value="3"></el-option>
            <el-option label="宫颈待完善乳腺完成筛查" value="4"></el-option>
            <el-option label="宫颈完成筛查乳腺待完善" value="5"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="数据范围:">
          <el-select v-model="form.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="form.range == 'town'">
          <el-select v-model="form.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="form.range == 'hospital'">
          <el-select v-model="form.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="form.range == 'team'">
          <el-select v-model="form.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="dialogResetFn" style="color: #676a6c; cursor: pointer">清除筛选条件</span>
        </el-form-item>
      </el-form>
      <el-table :data="dialogTableData" border v-loading="dialogLoading">
        <el-table-column type="index" label="序号"></el-table-column>
        <el-table-column v-for="item in dialogHeader" :label="item.label" :prop="item.prop" :key="item.prop">
          <template slot-scope="scope">
            <span>{{scope.row[item.prop]}}</span>
          </template>
        </el-table-column>
        <el-table-column label="操作">
          <template slot-scope="scope">
            <el-button type="text" @click="gotoService(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="handleCurrentChange1"
          @size-change="handleSizeChange1"
          :current-page.sync="query.page"
          :page-size="query.size"
          :page-sizes="[10, 20, 50]"
          layout="total, sizes, prev, pager, next, jumper"
          :total="query.total"></el-pagination>
      </div>
    </el-dialog>
  </template>
  <template v-if="serviceRecordVisable">
    <Copd-service-record-patient :patient="currentEditData" @back="back"></Copd-service-record-patient>
  </template>
</div>

+ 223 - 19
component/statistics/breastCancerPatient/index.js

@ -18,6 +18,9 @@ Vue.component('breast-cancer-patient', {
    return {
      years: [],
      dialogVisible: true,
      serviceRecordVisable: false,
      currentEditData: '',
      dialogExportLoading: false,
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
@ -43,13 +46,17 @@ Vue.component('breast-cancer-patient', {
        { label: '手机号', prop: 'mobile', width: '110' },
        { label: '年龄', prop: 'age', width: '90' },
        { label: '出生日期', prop: 'birthday', width: '90' },
        { label: '常驻地址', prop: 'name', width: '100' },
        { label: '个人筛查状态', prop: 'idcard', width: '100' }
        { label: '常驻地址', prop: 'address', width: '100' },
        { label: '个人筛查状态', prop: 'statusName', width: '100' }
      ],
      form: {
        range: '1'
      },
      query: {},
      query: {
        page: 1,
        size: 10,
        total: 0
      },
      loading: false,
      exportLoading: false,
      tableData: [],
@ -57,7 +64,6 @@ Vue.component('breast-cancer-patient', {
      tableHeader: [
        { label: '居民姓名', prop: 'name', width: '100' },
        { label: '证件号码', prop: 'idcard', width: '100' },
        { label: '手机号', prop: 'mobile', width: '110' },
        { label: '年龄', prop: 'age', width: '90' },
        { label: '出生日期', prop: 'birthday', width: '90' },
@ -84,14 +90,144 @@ Vue.component('breast-cancer-patient', {
        { label: '宫颈评估状态', prop: 'screenNum', width: '110' },
        { label: '宫颈评估人群', prop: 'screenResult', width: '130' }
      ],
      loadingTwo: false,
      page: 1,
      size: 10,
      total: 0,
      level: 0
      level: 0,
      tableHeaderGroups: [
        {
          label: '基本信息',
          children: [
            { prop: 'infoCompleteNum', label: '完善' },
            { prop: 'basquelouNum', label: '缺漏' }
          ]
        },
        {
          label: '乳腺临床检查',
          children: [
            { prop: 'clicheckNum', label: '检查人数' },
            { prop: 'clijujueNum', label: '拒绝' },
            { prop: 'cliyicongNum', label: '依从' },
            { prop: 'cliquelouNum', label: '缺漏' }
          ]
        },
        {
          label: '乳腺超声检查',
          children: [
            { prop: 'total', label: '检查人数' },
            { prop: 'jujueNum', label: '拒绝' },
            { prop: 'yicongNum', label: '依从' },
            { prop: 'quelouNum', label: '缺漏' }
          ]
        },
        {
          label: '乳腺超声检查BI-RADS分级',
          children: [
            { prop: 'cduBiRads0', label: '0级' },
            { prop: 'cduBiRads1', label: '1级' },
            { prop: 'cduBiRads2', label: '2级' },
            { prop: 'cduBiRads3', label: '3级' },
            { prop: 'cduBiRads4a', label: '4a级' },
            { prop: 'cduBiRads4b', label: '4b级' },
            { prop: 'cduBiRads4c', label: '4c级' },
            { prop: 'cduBiRads05', label: '5级' },
            { prop: 'cduHeji', label: '合计' }
          ]
        },
        {
          label: '乳腺钼靶检查',
          children: [
            { prop: 'molycNum', label: '应查人数' },
            { prop: 'molyicongNum', label: '依从' },
            { prop: 'moljujueNum', label: '拒绝' },
            { prop: 'mollostNum', label: '失访' },
            { prop: 'molycNum1', label: '检查率' },
            { prop: 'molycNum2', label: '待完成人数' }
          ]
        },
        {
          label: '乳腺钼靶检查BI-RADS分级',
          children: [
            { prop: 'molBiRads0', label: '0级' },
            { prop: 'molBiRads1', label: '1级' },
            { prop: 'molBiRads2', label: '2级' },
            { prop: 'molBiRads3', label: '3级' },
            { prop: 'molBiRads4a', label: '4a级' },
            { prop: 'molBiRads4b', label: '4b级' },
            { prop: 'molBiRads4c', label: '4c级' },
            { prop: 'molBiRads5', label: '5级' },
            { prop: 'molBiRads6', label: '不详' },
            { prop: 'molHeji', label: '合计' }
          ]
        },
        {
          label: '乳腺病理检查\n乳腺病理学监测情况',
          children: [
            { prop: 'needCheckNum', label: '应查人数' },
            { prop: 'checkedNum', label: '已查人数' },
            { prop: 'patjujueNum', label: '拒诊人数' },
            { prop: 'lostNum', label: '失访人数' },
            { prop: 'rate1', label: '病理检查率' }
          ]
        },
        {
          label: '乳腺癌检出情况',
          children: [
            { prop: 'type4', label: '小叶原位癌人数' },
            { prop: 'type3', label: '导管原位癌人数' },
            { prop: 'type1', label: '浸润性导管癌人数' },
            { prop: 'type2', label: '浸润性小叶癌人数' },
            { prop: 'type6', label: '其他恶性肿瘤人数' },
            { prop: 'type7', label: '不详人数' },
            { prop: 'hejiNum', label: '合计人数' },
            { prop: 'rate2', label: '乳腺癌检出率' }
          ]
        },
        {
          label: 'TNM分期',
          children: [
            { prop: 'TNM0', label: '0期' },
            { prop: 'TNM1', label: '1期' },
            { prop: 'TNM2a', label: 'IIA期' },
            { prop: 'TNM2b', label: 'IIB期' },
            { prop: 'TNM3up', label: 'III期以上' },
            { prop: 'TNMbuxiang', label: '不详' },
            { prop: 'rate3', label: '获得TNM分期比率' },
            { prop: 'rate4', label: '乳腺癌早诊率' }
          ]
        },
        {
          label: '治疗情况',
          children: [
            { prop: 'num1', label: '应治疗人数' },
            { prop: 'yzlNum', label: '已治疗人数' },
            { prop: 'jzOrLostNum', label: '拒诊治疗或失访人数' },
            { prop: 'rate5', label: '早治率' }
          ]
        },
        {
          label: '乳腺癌风险人群',
          children: [
            { prop: 'label1', label: '一般风险' },
            { prop: 'label2', label: '高风险' },
            { prop: 'labelWait', label: '待评估' },
            { prop: 'rate6', label: '高风险人群比例' }
          ]
        }
      ],
      dialogLoading: false
    }
  },
  methods: {
    toUrl() {},
    back() {
      this.currentEditData = ''
      this.serviceRecordVisable = false
    },
    gotoService(item) {
      this.currentEditData = item.patient
      this.serviceRecordVisable = true
    },
    init() {
      var selectedRole = JSON.parse(sessionStorage.getItem('selectedRole'))
      if (selectedRole.code.indexOf('350200') > -1) {
@ -247,6 +383,7 @@ Vue.component('breast-cancer-patient', {
        vm.teamOptions = vm.teamOptions.concat(res.data)
      })
    },
    handleCurrentChange(val) {
      this.page = val
      this.getList()
@ -255,20 +392,87 @@ Vue.component('breast-cancer-patient', {
      this.size = val
      this.getList()
    },
    openDialog(scope) {
      layer.open({
        type: 2,
        //				  offset: ['100px'], //右下角弹出
        area: ['568px', '100%'],
        shade: 0.5,
        title: '查看筛选结果',
        fixed: true, //不固定
        maxmin: true,
        closeBtn: 1,
        shift: 5,
        shadeClose: false, //点击遮罩关闭层
        content: `../../jbsc/html/view_screening_results.html?resultCode=${scope.row.code}&opt=1`
    openDialog(scope, prop) {
      var vm = this
      vm.dialogLoading = true
      this.query.type = 'r_' + prop
      var params = {
        ...this.query,
        range: (this.form && this.form.range) || '',
        town: (this.form && this.form.town) || ''
      }
      vm.dialogTableData = []
      if (this.chooseTime) {
        params.startTime = this.chooseTime[0]
        params.endTime = this.chooseTime[1]
      }
      delete params.total
      httpRequest.get('doctor/twoCancers/count/caseDataList', { data: params }).then(function (res) {
        vm.dialogTableData = res.detailModelList
        vm.query.total = res.totalCount
        vm.visible = true
        vm.dialogLoading = false
      })
    },
    caseDataList() {
      var vm = this
      vm.dialogLoading = true
      var params = {
        ...this.query,
        range: (this.form && this.form.range) || '',
        town: (this.form && this.form.town) || '',
        hospital: (this.form && this.form.hospital) || ''
      }
      vm.dialogTableData = []
      if (this.chooseTime) {
        params.startTime = this.chooseTime[0]
        params.endTime = this.chooseTime[1]
      }
      delete params.total
      httpRequest.get('doctor/twoCancers/count/caseDataList', { data: params }).then(function (res) {
        vm.dialogTableData = res.detailModelList
        vm.query.total = res.totalCount
        vm.dialogLoading = false
      })
    },
    closeDialog() {},
    dialogSearchFn() {
      this.caseDataList()
    },
    handleCurrentChange1(val) {
      this.query.page = val
      this.caseDataList()
    },
    handleSizeChange1(val) {
      this.query.size = val
      this.caseDataList()
    },
    dialogExportFn() {
      var vm = this
      this.dialogExportLoading = true
      var params = {
        ...this.query,
        range: (this.form && this.form.range) || '',
        town: (this.form && this.form.town) || '',
        hospital: (this.form && this.form.hospital) || ''
      }
      if (this.chooseTime) {
        params.startTime = this.chooseTime[0]
        params.endTime = this.chooseTime[1]
      }
      var fileName = `个案数据列表${new Date().getTime()}.xls`
      httpRequest.downLoadFileForAjax('doctor/twoCancers/count/exportCaseDataList', fileName, params).then(function () {
        vm.dialogExportLoading = false
      })
    },
    dialogResetFn() {
      this.query = {
        page: 1,
        size: 10,
        total: 0
      }
      this.caseDataList()
    }
  },
  mounted() {