Browse Source

厦心新需求

hd 2 months ago
parent
commit
a96d679315

+ 3 - 0
app/statistics/css/common.css

@ -1027,4 +1027,7 @@ body .el-table th.gutter{
	border-radius: 1px;
	top: 17px;
	margin-left:-16px;
}
[v-cloak]{
	display: none;
}

+ 9 - 38
app/statistics/html/comprehensive-query.html

@ -35,7 +35,7 @@
  </style>
  <body style="margin: 0; overflow-x: auto">
    <div id="main" class="c-hide">
    <div id="main" class="c-hide" v-cloak>
      <header-tab appname="数据查询" isback="true" isrefresh="true"></header-tab>
      <div class="tabs">
        <div class="tabsBox" v-for="(item,index) in tabsList" :key="index" :style="item.show?'background:#409EFF;color:#fff;':''" @click="tabsClick(item)">{{item.text}}</div>
@ -128,7 +128,7 @@
                  class="particulars"
                  v-for="(item,index) in gxbTabsData"
                  @click="handleNodeClick(item)"
                  :style="handleNodeId==item.id?'background-color: #409eff;color:#fff;':''">
                  :style="{'background-color':handleNodeId==item.id?'#409eff':'',color:handleNodeId==item.id?'#fff':'','padding-left': ['77','78','79','87','81'].includes(item.id) ?'30px':''}">
                  {{item.label}}
                </div>
              </template>
@ -140,7 +140,7 @@
              <template v-if="componentId.indexOf(handleNodeId)==-1">
                <div class="searchDiv" v-if="tabsId!=5">
                  <template v-if="handleNodeId!=44&&expertFamilyIdType != 'zhuanke1'&&handleNodeId!=45">
                    <el-radio v-model="radio" label="1">{{handleNodeId==90||collectCode==4?'按活动年度:':'按签约年度:'}}</el-radio>
                    <el-radio v-model="radio" label="1">{{collectCode==4?'按活动年度:':'按签约年度:'}}</el-radio>
                    <el-select v-model="chooseYear" class="pr20 formWidth">
                      <el-option v-for="(item , index) in years" :key="index" :label="item" :value="item"></el-option>
                    </el-select>
@ -457,24 +457,6 @@
                    </el-form>
                  </div>
                </div>
                <div v-if="handleNodeId==90" class="searchDiv">
                  <div style="height: 35px" class="mt5">
                    <el-form :model="form7" class="flex">
                      <el-form-item label="居民姓名:" class="flex">
                        <el-input v-model="form13.patientName" placeholder="请输入患者姓名查询"></el-input>
                      </el-form-item>
                      <el-form-item label="签约医生:" class="flex formLeft">
                        <el-input v-model="form13.doctorName" placeholder="请输入签约医生姓名查询"></el-input>
                      </el-form-item>
                      <el-form-item label="服务类型:" class="flex formLeft">
                        <el-select v-model="serviceType" class="" placeholder="请选择" filterable>
                          <el-option value="" label="全部"></el-option>
                          <el-option v-for="(item,index) in health_bank_service_type" :key="item.value" :value="item.code" :label="item.value"></el-option>
                        </el-select>
                      </el-form-item>
                    </el-form>
                  </div>
                </div>
              </template>
              <template v-if="tabsId==3">
@ -813,23 +795,6 @@
                      <el-table-column prop="specialistName" label="专科医生" align="center"></el-table-column>
                    </template>
                  </el-table>
                  <el-table v-if="handleNodeId==90" border :data="redPacketData" style="width: 100%" v-loading="loadingTwo" class="mt20">
                    <template>
                      <el-table-column type="index" label="序号" align="center"></el-table-column>
                      <el-table-column prop="hospitalName" label="社区名称" align="center"></el-table-column>
                      <el-table-column prop="name" label="居民" align="center"></el-table-column>
                      <el-table-column prop="ssc" label="医保卡" align="center"></el-table-column>
                      <el-table-column prop="idcard" label="身份证" align="center"></el-table-column>
                      <el-table-column prop="mobile" label="手机号" align="center"></el-table-column>
                      <el-table-column prop="address" label="地址" align="center" width="170"></el-table-column>
                      <el-table-column prop="doctorName" label="签约医生" align="center"></el-table-column>
                      <!-- <el-table-column prop="feeTotal" label="该居民已领取活动奖励的次数" align="center"></el-table-column>
                      <el-table-column prop="rewardTimes" label="该居民已领取奖励的总金额" align="center" width="170"></el-table-column> -->
                      <el-table-column prop="feeTotal" label="奖励金额" align="center"></el-table-column>
                      <el-table-column prop="rewardTimes" label="领取次数" align="center"></el-table-column>
                    </template>
                  </el-table>
                  <mzf-worksheet v-if="handleNodeId==46"></mzf-worksheet>
                  <mzf-hzcx v-if="handleNodeId==47"></mzf-hzcx>
                  <mzf-rzjd v-if="handleNodeId==48"></mzf-rzjd>
@ -870,6 +835,8 @@
                  <turndown-detail v-if="handleNodeId == 87"></turndown-detail>
                  <reservation-situation v-if="handleNodeId == 88"></reservation-situation>
                  <xx-situation v-if="handleNodeId == 89"></xx-situation>
                  <red-bag-reward v-if="handleNodeId == 90"></red-bag-reward>
                  <gxb-manage-sum v-if="handleNodeId == 91"></gxb-manage-sum>
                </div>
                <div v-if="handleNodeShow == 3">
                  <el-table v-if="collectCode == 1" border :data="diseaseReport" style="width: 100%" v-loading="loadingTwo" class="mt20">
@ -941,6 +908,7 @@
      </div>
      <!--模态框组件-->
      <vuedals></vuedals>
      <person-info></person-info>
    </div>
    <script src="../../../js/FileSaver/FileSaver.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../js/vue.js" type="text/javascript" charset="utf-8"></script>
@ -1003,5 +971,8 @@
    <script src="../../../component/statistics/FollowDetail/index.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../component/statistics/TurndownDetail/index.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../component/statistics/ReservationSituation/index.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../component/statistics/RedBagReward/index.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../component/statistics/GxbManageSum/index.js" type="text/javascript" charset="utf-8"></script>
    <script src="../../../component/statistics/PersonInfo/index.js" type="text/javascript" charset="utf-8"></script>
  </body>
</html>

+ 13 - 27
app/statistics/js/comprehensive-query.js

@ -179,18 +179,21 @@ new Vue({
      { label: '一键报警记录查询', id: '76' }
    ],
    gxbTabsData: [
      // id乱是因为后面需求变更
      { label: '冠心病筛评管理情况汇总表', id: '91' },
      { label: '冠心病评估情况统计表', id: '77' },
      { label: '冠心病上转情况表', id: '78' },
      { label: '冠心病门诊下转统计表', id: '79' },
      { label: '冠心病出院下转统计表', id: '80' },
      { label: '冠心病管理全流程闭环情况', id: '81' },
      { label: '签约情况统计', id: '82' },
      { label: '就诊情况统计', id: '83' },
      { label: '冠心病上转情况统计表', id: '78' },
      { label: '冠心病下转情况统计表', id: '79' },
      // { label: '冠心病出院下转统计表', id: '80' },
      { label: '冠心病康复管理情况统计表', id: '87' },
      { label: '冠心病管理全流程闭环管理', id: '81' },
      // { label: '康复随访记录', id: '85' },
      
      { label: '居民预约情况明细', id: '88' },
      { label: '就诊明细查询', id: '83' },
      { label: '下转动态分析', id: '84' },
      { label: '康复随访记录', id: '85' },
      { label: '康复随访详情', id: '86' },
      { label: '康复下转明细', id: '87' },
      { label: '居民预约情况明细', id: '88' },
      { label: '签约情况统计', id: '82' },
      { label: '消息推送明细', id: '89' }
    ],
    copdFilterCheckValue: [],
@ -634,7 +637,7 @@ new Vue({
    this.s = this.startTime.format('yyyy-MM-dd')
    this.e = this.endTime.format('yyyy-MM-dd')
    this.list.unshift({ type: '0', id: 'time', label: this.s + '~' + this.e })
    for (var i = 46; i <= 89; i++) {
    for (var i = 46; i <= 91; i++) {
      this.componentId.push(i + '')
    }
  },
@ -2516,21 +2519,6 @@ new Vue({
        } else {
          vm.fullscreenLoading = false
        }
      } else if (vm.handleNodeId == 90) {
        if (vm.redPacketData.length != 0) {
          statisticAPI
            .exPatientFeeAnalysis(_.assign({}, vm.patientFeeAnalysisParams(), { pageSize: 99999 }), vm.derive + '.xls')
            .then(function (res) {
              vm.fullscreenLoading = false
            })
            .catch(function (err) {
              toastr.info(err)
              vm.fullscreenLoading = false
              console.error(err)
            })
        } else {
          vm.fullscreenLoading = false
        }
      } else if (vm.handleNodeId == 43) {
        // 入户访视导出
        if (vm.ruhuData.length != 0) {
@ -2717,8 +2705,6 @@ new Vue({
      } else if (id == 42) {
        // 居民积分明细
        vm.residentIntegral()
      } else if (id == 90) {
        vm.residentRedList()
      } else if (id == 43) {
        // 入户访视
        vm.interview()

+ 168 - 40
component/common/jtbc.css

@ -1,18 +1,18 @@
.copd-filter-group{
.copd-filter-group {
  display: flex;
  flex-wrap: wrap;
}
.pb20{
.pb20 {
  padding-bottom: 20px;
}
.dialog-title{
.dialog-title {
  font-size: 18px;
  font-weight: bold;
  position: relative;
  padding-left: 10px;
  margin-bottom: 20px;
}
.dialog-title::before{
.dialog-title::before {
  position: absolute;
  content: '';
  left: 0;
@ -21,62 +21,61 @@
  height: 15px;
  background-color: #00bf79;
}
.jtbc label{
.jtbc label {
  white-space: nowrap;
}
.c-333{
.c-333 {
  color: #333;
}
.c-f14{
.c-f14 {
  font-size: 14px;
}
.c-909399{
.c-909399 {
  color: #909399;
}
.c-ff5e6c{
.c-ff5e6c {
  color: #ff5e6c;
}
.c-17b3ec{
.c-17b3ec {
  color: #17b3ec;
}
.c-20d7ad{
.c-20d7ad {
  color: #20d7ad;
}
.bg-ff5e6c{
.bg-ff5e6c {
  background-color: #ff5e6c;
}
.bg-17b3ec{
.bg-17b3ec {
  background-color: #17b3ec;
}
.bg-20d7ad{
.bg-20d7ad {
  background-color: #20d7ad;
}
.form-item{
.form-item {
  display: flex;
  justify-content: space-between;
  align-items: center;  
  align-items: center;
  font-size: 16px;
  /* height: 36px; */
  padding-bottom: 12px;
  margin-bottom: 16px;
  border-bottom: 1px solid rgba(0, 0, 0, .1);
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}
.form-label{
.form-label {
  color: #909399;
  
}
.dialog-box{
.dialog-box {
  display: flex;
  flex-wrap: wrap;
  font-size: 16px;
}
.textarea-content{
.textarea-content {
  max-width: 300px;
}
.jtbc .timeline-box{
.jtbc .timeline-box {
  padding: 0 20px;
}
.jtbc .timeline-box .timeline{
.jtbc .timeline-box .timeline {
  position: relative;
  display: flex;
  align-items: center;
@ -84,7 +83,7 @@
  height: 70px;
  line-height: 70px;
}
.jtbc .timeline-box .timeline .circle{
.jtbc .timeline-box .timeline .circle {
  width: 16px;
  height: 16px;
  border-radius: 50%;
@ -92,17 +91,17 @@
  position: relative;
  z-index: 2;
}
.jtbc .timeline-box .timeline .time{
.jtbc .timeline-box .timeline .time {
  margin-right: 90px;
  width: 120px;
}
.jtbc .timeline-box .timeline .name{
.jtbc .timeline-box .timeline .name {
  width: 100px;
}
.jtbc .timeline-box .timeline .statusName{
.jtbc .timeline-box .timeline .statusName {
  padding-left: 100px;
}
.jtbc .line{
.jtbc .line {
  position: absolute;
  width: 1px;
  height: 70px;
@ -111,12 +110,12 @@
  top: 50%;
  transform: translateY(-50%);
}
.jtbc .pagination{
.jtbc .pagination {
  margin-top: 20px;
  float: right;
}
.nodata{
.nodata {
  display: flex;
  flex-direction: column;
  align-items: center;
@ -124,33 +123,162 @@
  color: #5e6d82;
  font-size: 16px;
}
.nodata img{
.nodata img {
  margin-bottom: 20px;
}
/* follow-record 康复随访记录样式 */
.follow-record  .el-radio__input.is-disabled .el-radio__inner, 
.follow-record  .el-radio__input.is-disabled.is-checked .el-radio__inner{
  background-color: #fff
.follow-record .el-radio__input.is-disabled .el-radio__inner,
.follow-record .el-radio__input.is-disabled.is-checked .el-radio__inner {
  background-color: #fff;
}
.follow-record .el-radio__input.is-disabled+span.el-radio__label{
.follow-record .el-radio__input.is-disabled + span.el-radio__label {
  color: #606266;
}
.follow-record .el-checkbox__input.is-disabled+span.el-checkbox__label{
.follow-record .el-checkbox__input.is-disabled + span.el-checkbox__label {
  color: #606266;
}
.follow-record .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{
.follow-record .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner {
  background-color: #fff;
}
.follow-dialog-form{
  border: 1px solid rgba(0, 0, 0, .1);
.follow-dialog-form {
  border: 1px solid rgba(0, 0, 0, 0.1);
  border-radius: 8px;
  padding: 20px 24px;
}
.follow-col{
.follow-col {
  padding-bottom: 10px;
  font-size: 16px;
}
.patient-box {
  display: flex;
  padding-bottom: 12px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
  margin-bottom: 10px;
}
.info-avatar {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  margin-right: 16px;
}
.year-item {
  margin: 0 20px;
  position: relative;
}
.year-item .year {
  display: flex;
  align-items: center;
  padding: 10px 0;
}
.year-item .time-label {
  width: 76px;
  text-align: center;
}
.year-item .year-circle {
  width: 6px;
  height: 6px;
  border: 2px solid #ff6905;
  border-radius: 50%;
}
.time-circle {
  width: 6px;
  height: 6px;
  border: 2px solid #1d92ff;
  border-radius: 50%;
}
.year-item .record-item {
  display: flex;
  align-items: center;
  padding: 10px 0;
  position: relative;
}
.year-item::after{
  content: '';
  width: 1px;
  height: calc(100% - 28px);
  display: block;
  position: absolute;
  left: 80px;
  top: 20px;
  background-color: rgba(0, 0, 0, 0.1);
}
.record-detail-item {
  background-color: #ecf5ff;
  padding: 10px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  border-radius: 6px;
  margin-left: 16px;
  width: 590px;
}
.record-detail-item .risk{
  font-size: 16px;
  margin-bottom: 4px;
}
.between{
  display: flex;
  justify-content: space-between;
}
.service-item{
  background: #f3f3f3;
  padding: 14px;
  border-radius: 6px;
  margin-bottom: 10px;
}
.sf-box{
  margin-top: 10px;
  border-top: 1px solid rgba(0, 0, 0, 0.1);
  position: relative;
}
.sf-box::before{
  position: absolute;
  content: '';
  display: block;
  width: 1px;
  height: calc(100% - 52px);
  background-color: rgba(0, 0, 0, 0.1);
  left: 114px;
  top: 26px;
}
.c-409eff{
  color: #409eff;
  font-size: 16px;
}
.c-ff6600{
  color: #ff6600;
}
.complete-situation{
  width: 130px;
}
.sf-item{
  display: flex;
  align-items: center;
  padding: 10px 0;
}
.sf-time{
  width: 110px;
}
.sf-doctor{
  width: 100px;
  text-align: center;
}
.sf-hospital{
  width: 320px;
}
.sf-status{
  width: 100px;
}
.bottom-box{
  display: flex;
  justify-content: center;
  padding-top: 10px;
  margin-top: 10px;
  border-top: 1px solid rgba(0, 0, 0, 0.1);
}

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

@ -0,0 +1,70 @@
<!-- css文件位置位于/component/common/jtbc.css -->
<div id="app" class="jtbc">
  <div class="copd-filter-group ui-col-1 bgc-fff" style="min-width: 900px">
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">
        <el-radio v-model="yearType" label="1">按创建年份:</el-radio>
        <el-select v-model="chooseYear" class="formWidth wd160">
          <el-option v-for="(item , index) in years" :key="index" :label="item" :value="item"></el-option>
        </el-select>
      </label>
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14" style="display: flex; align-items: center">
        <el-radio v-model="yearType" label="2">自定义创建时间:</el-radio>
        <el-date-picker
          v-model="chooseTime"
          type="daterange"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          value-format="yyyy-MM-dd"></el-date-picker>
      </label>
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">数据范围:</label>
      <el-select class="formWidth" v-model="form.range" placeholder="请选择" @change="resetArea">
        <el-option v-for="(option, index) in rangeOptions" :label="option.label" :value="option.value" :key="option.value"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">地区:</label>
      <el-select class="formWidth" v-model="form.area" placeholder="请选择" @change="getHospital">
        <el-option v-for="(option, index) in areaOptions" :label="option.label" :value="option.value" :key="option.value"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20 pr20" v-if="form.range == 'hospital'||form.range == 'team'">
      <label class="c-333 c-f14">社区:</label>
      <el-select class="formWidth" v-model="form.hospital" placeholder="请选择" @change="getTeam">
        <el-option v-for="(option, index) in hospitalOptions" :label="option.name" :value="option.code" :key="option.code"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20 pr20" v-if="form.range == 'team'">
      <label class="c-333 c-f14">团队:</label>
      <el-select class="formWidth" v-model="form.team" placeholder="请选择">
        <el-option v-for="(option, index) in teamOptions" :label="option.name" :value="option.id" :key="option.id"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20">
      <el-button type="primary" size="mini" @click="queryDate">查询</el-button>
      <el-button type="ff9526" size="mini" @click="exportTable" :disabled="exportLoading">导出</el-button>
      <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
    </div>
  </div>
  <el-table :data="tableData" style="width: 100%" v-loading="loading">
    <el-table-column type="index" min-width="60" label="序号"></el-table-column>
    <el-table-column :label="item.label" v-for="item in tableHeader" :min-width="item.width" :key="item.prop">
      <template slot-scope="scope">{{scope.row[item.prop]}}</template>
    </el-table-column>
  </el-table>
  <el-pagination
    @current-change="handleCurrentChange"
    @size-change="handleSizeChange"
    :current-page.sync="page"
    :page-size="size"
    :page-sizes="[10, 20, 50]"
    layout="total, sizes, prev, pager, next, jumper"
    :total="total"
    class="pagination"></el-pagination>
</div>

+ 219 - 0
component/statistics/GxbManageSum/index.js

@ -0,0 +1,219 @@
var template = ''
$.ajax('../../../component/statistics/GxbManageSum/index.html', {
  data: {},
  dataType: 'html',
  cache: false,
  timeout: 60000,
  async: false,
  error: function (res) {},
  success: function (res) {
    template = res
  }
})
Vue.component('gxb-manage-sum', {
  template: template,
  props: [],
  data: function () {
    return {
      years: [],
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
      rangeOptions: [
        { label: '区', value: 'town' },
        { label: '社区', value: 'hospital' },
        { label: '团队', value: 'team' }
      ],
      areaOptions: [
        { label: '思明区', value: '350203' },
        { label: '海沧区', value: '350205' },
        { label: '湖里区', value: '350206' },
        { label: '集美区', value: '350211' },
        { label: '同安区', value: '350212' },
        { label: '翔安区', value: '350213' }
      ],
      hospitalOptions: [],
      teamOptions: [],
      form: {
        range: 'town'
      },
      loading: false,
      exportLoading: false,
      tableData: [],
      tableHeader: [
        { label: '地区', prop: 'name', width: '90' },
        { label: '社区', prop: 'totalNum', width: '90' },
        { label: '团队', prop: 'turnUpNum', width: '100' },
        { label: '已评估人数', prop: 'mzNum', width: '90' },
        { label: '已上转人数', prop: 'zyNum', width: '90' },
        { label: '上转转门诊', prop: 'turnDownNum', width: '90' },
        { label: '门诊转住院', prop: 'followUpNum', width: '90' },
        { label: '下转管理人数', prop: 'standardNum', width: '90' },
        { label: '评估已门诊下转', prop: 'sad', width: '90' },
        { label: '评估已出院下转', prop: 'avd', width: '90' }
      ],
      page: 1,
      size: 10,
      total: 0,
      level: 0
    }
  },
  methods: {
    init() {
      var selectedRole = JSON.parse(sessionStorage.getItem('selectedRole'))
      if (selectedRole.code.indexOf('350200') > -1) {
        this.level = 1 //  市卫健委
        this.areaOptions = [
          { label: '思明区', value: '350203' },
          { label: '海沧区', value: '350205' },
          { label: '湖里区', value: '350206' },
          { label: '集美区', value: '350211' },
          { label: '同安区', value: '350212' },
          { label: '翔安区', value: '350213' }
        ]
      } else if (selectedRole.code.length == 6) {
        this.level = 2 // 区管理
        this.areaOptions = [{ label: selectedRole.name.substring(0, 3), value: selectedRole.code }]
        this.form = {
          range: 'town',
          area: selectedRole.code
        }
        this.getHospital(selectedRole.code)
      } else {
        this.level = 3 // 社区管理
        this.rangeOptions = [
          { label: '社区', value: 'hospital' },
          { label: '团队', value: 'team' }
        ]
        this.areaOptions = [{ label: selectedRole.name.substring(0, 3), value: selectedRole.code.substring(0, 6) }]
        this.hospitalOptions = [{ name: selectedRole.name, code: selectedRole.code }]
        this.form = {
          range: 'hospital',
          area: selectedRole.code.substring(0, 6),
          hospital: selectedRole.code
        }
        this.getTeam(selectedRole.code)
      }
      this.initTime()
      this.getList()
    },
    initTime() {
      var vm = this
      var now = new Date()
      vm.nowyear = vm.chooseYear = now.getFullYear()
      vm.years = []
      for (i = vm.nowyear; i >= 2013; i--) {
        vm.years.push(i)
      }
    },
    resetArea() {
      if (this.level == 1) {
        delete this.form.area
        delete this.form.hospital
        delete this.form.team
      } else if (this.level == 2) {
        delete this.form.hospital
        delete this.form.team
      } else {
        delete this.form.team
      }
    },
    getList() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01'
        params.endDate = this.chooseYear + '-12-31'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0]
          params.endDate = this.chooseTime[1] 
        }
      }
      httpRequest.get('statistics/collaborate/gxbScreenClosedLoop', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.tableData = res.detailModelList
          vm.total = res.totalCount
        }
        vm.loading = false
      })
    },
    queryDate() {
      this.page = 1
      this.getList()
    },
    exportTable() {
      var vm = this
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01'
        params.endDate = this.chooseYear + '-12-31'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0]
          params.endDate = this.chooseTime[1]
        }
      }
      this.exportLoading = true
      var fileName = `冠心病管理全流程闭环情况${new Date().getTime()}.xls`
      httpRequest.downLoadFileForAjax('statistics/collaborate/exportGxbScreenClosedLoop', fileName, params).then(function () {
        vm.exportLoading = false
      })
    },
    eliminateClick() {
      this.resetArea()
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
      this.$forceUpdate()
    },
    getHospital(code) {
      var vm = this
      delete this.form.hospital
      delete this.form.team
      var params = {
        type: 5,
        code: code
      }
      httpRequest.post('common/district', { data: params }).then(function (res) {
        vm.hospitalOptions = [{ code: '', name: '全部' }]
        vm.hospitalOptions = vm.hospitalOptions.concat(res.list)
      })
    },
    getTeam(code) {
      var vm = this
      delete this.form.team
      var params = {
        hospital: code,
        area: this.form.area
      }
      httpRequest.get('statisticsExport/teamList', { data: params }).then(function (res) {
        vm.teamOptions = [{ id: '', name: '全部' }]
        vm.teamOptions = vm.teamOptions.concat(res.data)
      })
    },
    handleCurrentChange(val) {
      this.page = val
      this.getList()
    },
    handleSizeChange(val) {
      this.size = val
      this.getList()
    },
  },
  mounted() {
    this.init()
  }
})

+ 207 - 0
component/statistics/PersonInfo/index.html

@ -0,0 +1,207 @@
<!-- 样式写在component/common/jtbc.css里 -->
<el-dialog :visible.sync="visible" title="黄小蕾个案详情" @close="closeDialog" width="800px">
  <div class="patient-box">
    <img src="../../../images/d-default.png" alt="" class="info-avatar" />
    <div>
      <div style="margin-bottom: 6px">
        黄小蕾 女 45岁 350***109
        <el-button type="primary" size="mini" @click="copyToClipboard('123456789')">复制证件号码</el-button>
      </div>
      <div>
        <el-tag size="medium" style="margin-right: 4px">高血压</el-tag>
        <el-tag size="medium" style="margin-right: 4px">高血压</el-tag>
      </div>
    </div>
  </div>
  <el-tabs v-model="type" type="card" v-if="!rehabilitationDetailVisible">
    <el-tab-pane label="评估" name="1">
      <div class="year-item" v-for="item in assessment">
        <div class="year">
          <div class="time-label">{{item.year}}</div>
          <div class="year-circle"></div>
        </div>
        <div class="year-content">
          <div class="record-item" v-for="el in item.children">
            <div class="time-label">
              <div>{{el.date}}</div>
              <div>{{el.time}}</div>
            </div>
            <div class="time-circle"></div>
            <div class="record-detail-item">
              <div>
                <div class="risk">{{el.risk}}</div>
                <div>评估医生:{{el.doctor}} &ensp; 评估状态:{{el.status}}</div>
              </div>
              <el-button type="primary" size="medium">评估详情</el-button>
            </div>
          </div>
        </div>
      </div>
    </el-tab-pane>
    <el-tab-pane label="上转" name="2">
      <div class="year-item" v-for="item in turnup">
        <div class="year">
          <div class="time-label">{{item.year}}</div>
          <div class="year-circle"></div>
        </div>
        <div class="year-content">
          <div class="record-item" v-for="el in item.children">
            <div class="time-label">
              <div>{{el.date}}</div>
              <div>{{el.time}}</div>
            </div>
            <div class="time-circle"></div>
            <div class="record-detail-item">
              <div>
                <div class="risk">{{el.hospital}}</div>
                <div>预约科室:{{el.dept}} &ensp; 预约医生:{{el.doctor}}</div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </el-tab-pane>
    <el-tab-pane label="就诊" name="3">
      <div class="year-item" v-for="item in jzList">
        <div class="year">
          <div class="time-label">{{item.year}}</div>
          <div class="year-circle"></div>
        </div>
        <div class="year-content">
          <div class="record-item" v-for="el in item.children">
            <div class="time-label">
              <div>{{el.date}}</div>
              <div>{{el.time}}</div>
            </div>
            <div class="time-circle"></div>
            <div class="record-detail-item">
              <div>
                <div class="risk">
                  {{el.hospital}}
                  <el-tag size="small" style="margin-left: 6px">{{el.type}}</el-tag>
                </div>
                <div>预约科室:{{el.dept}} &ensp; 诊断名称:{{el.diagnostic}}</div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </el-tab-pane>
    <el-tab-pane label="下转" name="4">
      <div class="year-item" v-for="item in turnDown">
        <div class="year">
          <div class="time-label">{{item.year}}</div>
          <div class="year-circle"></div>
        </div>
        <div class="year-content">
          <div class="record-item" v-for="el in item.children">
            <div class="time-label">
              <div>{{el.date}}</div>
              <div>{{el.time}}</div>
            </div>
            <div class="time-circle"></div>
            <div class="record-detail-item">
              <div>
                <div class="risk">
                  {{el.hospital}}
                  <el-tag size="small" style="margin-left: 6px">{{el.type}}</el-tag>
                </div>
                <div>接收社区医院:{{el.community}}</div>
              </div>
              <div>
                <div>下转医生:{{el.doctor}}</div>
                <div>接收医生:{{el.receiveDoc}}</div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </el-tab-pane>
    <el-tab-pane label="康复计划" name="5">
      <div class="year-item" v-for="item in rehabilitation">
        <div class="year">
          <div class="time-label">{{item.year}}</div>
          <div class="year-circle"></div>
        </div>
        <div class="year-content">
          <div class="record-item" v-for="el in item.children">
            <div class="time-label">
              <div>{{el.date}}</div>
              <div>{{el.time}}</div>
            </div>
            <div class="time-circle"></div>
            <div class="record-detail-item" style="cursor: pointer" @click="toRehabilitationDetail(el)">
              <div>
                <div class="risk">
                  {{el.hospital}}
                  <el-tag size="small" style="margin-left: 6px">{{el.type}}</el-tag>
                </div>
                <div>接收社区医院:{{el.community}} &ensp;接收医生:{{el.receiveDoc}}</div>
              </div>
              <i class="el-icon-arrow-right"></i>
            </div>
          </div>
        </div>
      </div>
    </el-tab-pane>
  </el-tabs>
  <div v-else>
    <div class="between" style="margin-bottom: 10px">
      <span>厦门大学附属心血管医院</span>
      <span>2024-12-17</span>
    </div>
    <div class="service-item">
      <div class="between">
        <div class="c-409eff">康复随访</div>
        <div class="complete-situation">
          完成情况:
          <span class="c-ff6600">2/4</span>
        </div>
      </div>
      <div class="sf-box">
        <div class="sf-item" v-for="item in sfList">
          <div class="sf-time">
            <div>{{item.date}}</div>
            <div>{{item.time}}</div>
          </div>
          <div class="time-circle"></div>
          <div class="sf-doctor">{{item.doctor}}</div>
          <div class="sf-hospital">{{item.hospital}}</div>
          <div class="sf-status">{{item.status == '1'?'已完成':'未完成'}}</div>
          <el-button type="primary" @click="toDetail" size="mini">查看详情</el-button>
        </div>
      </div>
    </div>
    <div class="service-item between">
      <div class="c-409eff">电话/短信关怀</div>
      <div class="complete-situation">
        完成情况:
        <span class="c-ff6600">1/1</span>
      </div>
    </div>
    <div class="service-item between">
      <div class="c-409eff">康复咨询</div>
      <div class="complete-situation">
        完成情况:
        <span class="c-ff6600">123次</span>
      </div>
    </div>
    <div class="service-item between">
      <div class="c-409eff">健康监测</div>
      <div class="complete-situation">
        完成情况:
        <span class="c-ff6600">123次</span>
      </div>
    </div>
    <div class="service-item between">
      <div class="c-409eff">康复复诊</div>
      <div class="complete-situation">
        完成情况:
        <span class="c-ff6600">1/1</span>
      </div>
    </div>
    <div class="bottom-box">
      <el-button @click="back" type="primary">返回康复计划</el-button>
    </div>
  </div>
</el-dialog>

+ 212 - 0
component/statistics/PersonInfo/index.js

@ -0,0 +1,212 @@
var template = ''
$.ajax('../../../component/statistics/PersonInfo/index.html', {
  data: {},
  dataType: 'html',
  cache: false,
  timeout: 60000,
  async: false,
  error: function (res) {},
  success: function (res) {
    template = res
  }
})
Vue.component('person-info', {
  template: template,
  props: [],
  data: function () {
    return {
      visible: false,
      type: '1',
      assessment: [
        {
          year: '2024',
          children: [
            {
              date: '12-17',
              time: '16:09:18',
              risk: '高危',
              doctor: '黄琴',
              status: '住院补筛'
            },
            {
              date: '11-17',
              time: '16:09:18',
              risk: '高危',
              doctor: '黄琴',
              status: '已提醒'
            },
            {
              date: '10-17',
              time: '16:09:18',
              risk: '中危',
              doctor: '黄琴',
              status: '已管理'
            }
          ]
        }
      ],
      turnup: [
        {
          year: '2024',
          children: [
            {
              date: '12-17',
              time: '16:09:18',
              hospital: '厦门大学附属心血管医院',
              dept: '心血管医院',
              doctor: '陈晓卿'
            },
            {
              date: '11-17',
              time: '16:09:18',
              hospital: '厦门大学附属心血管医院',
              dept: '心血管医院',
              doctor: '陈晓卿'
            },
            {
              date: '10-17',
              time: '16:09:18',
              hospital: '厦门大学附属心血管医院',
              dept: '心血管医院',
              doctor: '陈晓卿'
            }
          ]
        }
      ],
      jzList: [
        {
          year: '2024',
          children: [
            {
              date: '12-17',
              time: '16:09:18',
              hospital: '厦门大学附属心血管医院',
              dept: '心内科门诊',
              diagnostic: '胸闷',
              type: '门诊'
            },
            {
              date: '11-17',
              time: '16:09:18',
              hospital: '厦门大学附属心血管医院',
              dept: '心内科门诊',
              diagnostic: '冠状动脉粥样硬化性心脏病',
              type: '住院'
            },
            {
              date: '10-17',
              time: '16:09:18',
              hospital: '厦门大学附属心血管医院',
              dept: '心内科门诊',
              diagnostic: '胸闷',
              type: '门诊'
            }
          ]
        }
      ],
      turnDown: [
        {
          year: '2024',
          children: [
            {
              date: '12-17',
              time: '16:09:18',
              hospital: '厦门大学附属心血管医院',
              doctor: '黄琴',
              community: '思明区中华街道社区卫生服务中心',
              receiveDoc: '陈晓卿',
              type: '住院'
            },
            {
              date: '11-17',
              time: '16:09:18',
              hospital: '厦门大学附属心血管医院',
              doctor: '黄琴',
              community: '思明区中华街道社区卫生服务中心',
              receiveDoc: '陈晓卿',
              type: '门诊'
            },
            {
              date: '10-17',
              time: '16:09:18',
              hospital: '厦门大学附属心血管医院',
              doctor: '黄琴',
              community: '思明区中华街道社区卫生服务中心',
              receiveDoc: '陈晓卿',
              type: '门诊'
            }
          ]
        }
      ],
      rehabilitation: [
        {
          year: '2024',
          children: [
            {
              date: '12-17',
              time: '16:09:18',
              hospital: '厦门大学附属心血管医院',
              community: '思明区中华街道社区卫生服务中心',
              receiveDoc: '陈晓卿',
              type: '门诊'
            },
            {
              date: '11-17',
              time: '16:09:18',
              hospital: '厦门大学附属心血管医院',
              community: '思明区中华街道社区卫生服务中心',
              receiveDoc: '陈晓卿',
              type: '门诊'
            },
            {
              date: '10-17',
              time: '16:09:18',
              hospital: '厦门大学附属心血管医院',
              community: '思明区中华街道社区卫生服务中心',
              receiveDoc: '陈晓卿',
              type: '门诊'
            }
          ]
        }
      ],
      rehabilitationDetailVisible: false,
      sfList: [
        { doctor: '黄琴', date: '2024-12-19', time: '14:12:16', hospital: '思明区中华街道社区卫生服务中心', status: '0' },
        { doctor: '黄琴', date: '2024-12-19', time: '14:12:16', hospital: '思明区中华街道社区卫生服务中心', status: '0' },
        { doctor: '黄琴', date: '2024-12-19', time: '14:12:16', hospital: '思明区中华街道社区卫生服务中心', status: '1' },
        { doctor: '黄琴', date: '2024-12-19', time: '14:12:16', hospital: '思明区中华街道社区卫生服务中心', status: '1' }
      ]
    }
  },
  methods: {
    openDialog(type) {
      this.visible = true
      this.type = type
    },
    closeDialog() {
      this.visible = false
    },
    copyToClipboard(text) {
      var textarea = document.createElement('textarea')
      textarea.style.position = 'fixed'
      textarea.style.opacity = 0
      textarea.value = text
      document.body.appendChild(textarea)
      textarea.select()
      document.execCommand('copy')
      document.body.removeChild(textarea)
      this.$message.success('复制成功')
    },
    toDetail(){
    },
    toRehabilitationDetail(){
      this.rehabilitationDetailVisible = true
    },
    back(){
      this.rehabilitationDetailVisible = false
    }
  },
  mounted() {}
})

+ 95 - 0
component/statistics/RedBagReward/index.html

@ -0,0 +1,95 @@
<!-- 样式写在component/common/jtbc.css里 -->
<div 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 class="formWidth" v-model="form.patientName" placeholder="请输入患者姓名查询"></el-input>
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">签约医生:</label>
      <el-input class="formWidth" v-model="form.doctorName" placeholder="请输入签约医生姓名查询"></el-input>
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">服务类型:</label>
      <el-select v-model="form.serviceType" class="formWidth" placeholder="请选择" filterable>
        <el-option value="" label="全部"></el-option>
        <el-option v-for="(item,index) in health_bank_service_type" :key="item.value" :value="item.code" :label="item.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.range" placeholder="请选择" @change="resetArea">
        <el-option v-for="(option, index) in rangeOptions" :label="option.label" :value="option.value" :key="option.value"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20 pr20">
      <label class="c-333 c-f14">地区:</label>
      <el-select class="formWidth" v-model="form.area" placeholder="请选择" @change="getHospital">
        <el-option v-for="(option, index) in areaOptions" :label="option.label" :value="option.value" :key="option.value"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20 pr20" v-if="form.range == 'hospital'||form.range == 'team'">
      <label class="c-333 c-f14">社区:</label>
      <el-select class="formWidth" v-model="form.hospital" placeholder="请选择" @change="getTeam">
        <el-option v-for="(option, index) in hospitalOptions" :label="option.name" :value="option.code" :key="option.code"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20 pr20" v-if="form.range == 'team'">
      <label class="c-333 c-f14">团队:</label>
      <el-select class="formWidth" v-model="form.team" placeholder="请选择">
        <el-option v-for="(option, index) in teamOptions" :label="option.name" :value="option.id" :key="option.id"></el-option>
      </el-select>
    </div>
    <div class="searchDiv pb20">
      <el-button type="primary" size="mini" @click="queryDate">查询</el-button>
      <el-button type="ff9526" size="mini" @click="exportTable" :disabled="exportLoading">导出</el-button>
      <span class="eliminate" @click="eliminateClick">清除筛选条件</span>
    </div>
  </div>
  <el-table border :data="tableData" style="width: 100%" v-loading="loading" class="mt20">
    <template>
      <el-table-column type="index" label="序号" align="center"></el-table-column>
      <el-table-column prop="hospitalName" label="社区名称" align="center"></el-table-column>
      <el-table-column prop="name" label="居民" align="center"></el-table-column>
      <el-table-column prop="ssc" label="医保卡" align="center"></el-table-column>
      <el-table-column prop="idcard" label="身份证" align="center"></el-table-column>
      <el-table-column prop="mobile" label="手机号" align="center"></el-table-column>
      <el-table-column prop="address" label="地址" align="center" width="170"></el-table-column>
      <el-table-column prop="doctorName" label="签约医生" align="center"></el-table-column>
      <!-- <el-table-column prop="feeTotal" label="该居民已领取活动奖励的次数" align="center"></el-table-column>
      <el-table-column prop="rewardTimes" label="该居民已领取奖励的总金额" align="center" width="170"></el-table-column> -->
      <el-table-column prop="feeTotal" label="奖励金额" align="center"></el-table-column>
      <el-table-column prop="rewardTimes" label="领取次数" align="center"></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>
</div>

+ 222 - 0
component/statistics/RedBagReward/index.js

@ -0,0 +1,222 @@
var template = ''
$.ajax('../../../component/statistics/RedBagReward/index.html', {
  data: {},
  dataType: 'html',
  cache: false,
  timeout: 60000,
  async: false,
  error: function (res) {},
  success: function (res) {
    template = res
  }
})
Vue.component('red-bag-reward', {
  template: template,
  props: [],
  data: function () {
    return {
      years: [],
      yearType: '1',
      chooseYear: null,
      chooseTime: null,
      rangeOptions: [
        { label: '区', value: 'town' },
        { label: '社区', value: 'hospital' },
        { label: '团队', value: 'team' }
      ],
      areaOptions: [
        { label: '思明区', value: '350203' },
        { label: '海沧区', value: '350205' },
        { label: '湖里区', value: '350206' },
        { label: '集美区', value: '350211' },
        { label: '同安区', value: '350212' },
        { label: '翔安区', value: '350213' }
      ],
      hospitalOptions: [],
      teamOptions: [],
      form: {
        range: 'town',
        serviceType: ''
      },
      loading: false,
      exportLoading: false,
      tableData: [],
      page: 1,
      size: 10,
      total: 0,
      level: 0,
      health_bank_service_type: []
    }
  },
  methods: {
    init() {
      var selectedRole = JSON.parse(sessionStorage.getItem('selectedRole'))
      if (selectedRole.code.indexOf('350200') > -1) {
        this.level = 1 //  市卫健委
        this.areaOptions = [
          { label: '思明区', value: '350203' },
          { label: '海沧区', value: '350205' },
          { label: '湖里区', value: '350206' },
          { label: '集美区', value: '350211' },
          { label: '同安区', value: '350212' },
          { label: '翔安区', value: '350213' }
        ]
      } else if (selectedRole.code.length == 6) {
        this.level = 2 // 区管理
        this.areaOptions = [{ label: selectedRole.name.substring(0, 3), value: selectedRole.code }]
        this.form = {
          range: 'town',
          area: selectedRole.code
        }
        this.getHospital(selectedRole.code)
      } else {
        this.level = 3 // 社区管理
        this.rangeOptions = [
          { label: '社区', value: 'hospital' },
          { label: '团队', value: 'team' }
        ]
        this.areaOptions = [{ label: selectedRole.name.substring(0, 3), value: selectedRole.code.substring(0, 6) }]
        this.hospitalOptions = [{ name: selectedRole.name, code: selectedRole.code }]
        this.form = {
          range: 'hospital',
          area: selectedRole.code.substring(0, 6),
          hospital: selectedRole.code
        }
        this.getTeam(selectedRole.code)
      }
      this.initTime()
      this.getList()
      this.getDictData()
    },
    initTime() {
      var vm = this
      var now = new Date()
      vm.nowyear = vm.chooseYear = now.getFullYear()
      vm.years = []
      for (i = vm.nowyear; i >= 2013; i--) {
        vm.years.push(i)
      }
    },
    resetArea() {
      if (this.level == 1) {
        delete this.form.area
        delete this.form.hospital
        delete this.form.team
      } else if (this.level == 2) {
        delete this.form.hospital
        delete this.form.team
      } else {
        delete this.form.team
      }
    },
    getList() {
      var vm = this
      this.loading = true
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01'
        params.endDate = this.chooseYear + '-12-31'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0]
          params.endDate = this.chooseTime[1]
        }
      }
      statisticAPI.patientFeeAnalysis(params).then(function (res) {
        if (res.status == 200) {
          vm.tableData = res.data.list
          vm.total = res.data.total
        } else {
          vm.$message.error(res.msg)
        }
        vm.loading = false
      })
    },
    getDictData() {
      var vm = this
      statisticAPI.getDictByDictName({ name: 'health_bank_service_type' }).then(function (res) {
        vm.health_bank_service_type = res.list
      })
    },
    queryDate() {
      this.page = 1
      this.getList()
    },
    exportTable() {
      var vm = this
      var params = {
        ...this.form,
        page: this.page,
        pageSize: this.size
      }
      if (this.yearType == '1') {
        params.startDate = this.chooseYear + '-01-01'
        params.endDate = this.chooseYear + '-12-31'
      } else {
        if (this.chooseTime) {
          params.startDate = this.chooseTime[0]
          params.endDate = this.chooseTime[1]
        }
      }
      this.exportLoading = true
      statisticAPI
        .exPatientFeeAnalysis(params, '居民红包奖励明细.xls')
        .then(function (res) {
          vm.exportLoading = false
        })
        .catch(function (err) {
          vm.exportLoading = false
        })
    },
    eliminateClick() {
      this.resetArea()
      this.yearType = '1'
      this.chooseYear = new Date().getFullYear()
      this.chooseTime = null
      this.$forceUpdate()
    },
    getHospital(code) {
      var vm = this
      delete this.form.hospital
      delete this.form.team
      var params = {
        type: 5,
        code: code
      }
      httpRequest.post('common/district', { data: params }).then(function (res) {
        vm.hospitalOptions = [{ code: '', name: '全部' }]
        vm.hospitalOptions = vm.hospitalOptions.concat(res.list)
      })
    },
    getTeam(code) {
      var vm = this
      delete this.form.team
      var params = {
        hospital: code,
        area: this.form.area
      }
      httpRequest.get('statisticsExport/teamList', { data: params }).then(function (res) {
        vm.teamOptions = [{ id: '', name: '全部' }]
        vm.teamOptions = vm.teamOptions.concat(res.data)
      })
    },
    handleCurrentChange(val) {
      this.page = val
      this.getList()
    },
    handleSizeChange(val) {
      this.size = val
      this.getList()
    }
  },
  mounted() {
    this.init()
  }
})