hd 2 mesi fa
parent
commit
5c8679eb33

+ 90 - 1
component/statistics/GxbCy/index.html

@ -56,8 +56,97 @@
    <el-table-column :label="item.label" v-for="(item,index) in tableHeader" :min-width="item.width" :key="item.prop" :prop="item.prop"></el-table-column>
    <el-table-column :label="item.label" v-for="(item,index) in tableHeaderChildren" :key="index" align="center">
      <el-table-column :label="el.label" :min-width="el.width" v-for="el in item.children" :key="el.prop">
        <template slot-scope="scope">{{scope.row[el.prop]}}</template>
        <template slot-scope="scope">
          <span :style="{cursor:['vd1Num','v2Num','vd3Num','v4Num'].includes(el.prop)?'pointer':''}" @click="openDialog(scope.row, el.prop)">{{scope.row[el.prop]}}</span>
        </template>
      </el-table-column>
    </el-table-column>
  </el-table>
  <el-dialog :visible.sync="visible" :title="title" @close="closeDialog" width="1200px">
    <el-form inline size="mini">
      <el-form-item label="居民姓名:">
        <el-input v-model="query.name" placeholder="请输入居民姓名查询"></el-input>
      </el-form-item>
      <template v-if="title=='康复随访记录明细'">
        <el-form-item label="下转医生:">
          <el-input v-model="query.doctor"></el-input>
        </el-form-item>
        <el-form-item label="随访医生:">
          <el-input v-model="query.mobile" placeholder="请输入手机号码查询"></el-input>
        </el-form-item>
      </template>
      <template v-else>
        <el-form-item label="签约医院:">
          <el-input v-model="query.signHospitalName" placeholder="请输入签约医院查询"></el-input>
        </el-form-item>
        <el-form-item label="签约医生:">
          <el-input v-model="query.signDoctorName" placeholder="请输入签约医生查询"></el-input>
        </el-form-item>
        <el-form-item label="提醒类型:">
          <el-select v-model="remind" disabled>
            <el-option label="复诊提醒" value=""></el-option>
          </el-select>
        </el-form-item>
      </template>
      <el-form-item label="数据范围:">
        <el-select v-model="query.range" disabled>
          <el-option v-for="item in rangeOptions" :value="item.value" :label="item.label"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="地区:" v-if="query.range == 'town'">
        <el-select v-model="query.area" disabled>
          <el-option v-for="(option, index) in dataRangeOption" :label="option.label" :value="option.value" :key="option.value"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="社区:" v-if="query.range == 'hospital'">
        <el-select v-model="query.hospital" disabled>
          <el-option v-for="(option, index) in dataRangeOption" :label="option.label" :value="option.value" :key="option.value"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="团队:" v-if="query.range == 'team'">
        <el-select v-model="query.team" disabled>
          <el-option v-for="(option, index) in dataRangeOption" :label="option.label" :value="option.value" :key="option.value"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="dialogSearchFn">查询</el-button>
        <el-button type="warning" @click="dialogExportFn" :disabled="dialogExportLoading">导出</el-button>
        <span @click="dialogReset" style="color: #676a6c; cursor: pointer">清除筛选条件</span>
      </el-form-item>
    </el-form>
    <el-table :data="dialogTableData" 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">
        <template slot-scope="scope">
          <span @click="seePatientDetail(scope.row)">{{scope.row[item.prop]}}</span>
        </template>
      </el-table-column>
      <el-table-column label="操作" v-if="title== '康复随访记录明细'">
        <template slot-scope="scope">
          <el-button type="text" @click="previewForm(scope.row)">查看随访表单</el-button>
        </template>
      </el-table-column>
      <el-table-column label="操作" v-else>
        <template slot-scope="scope">
          <el-button type="text" @click="previewMess(scope.row)">查看</el-button>
        </template>
      </el-table-column>
    </el-table>
    <div style="display: flex; justify-content: flex-end; margin-top: 10px">
      <el-pagination
        @current-change="handleCurrentChange"
        @size-change="handleSizeChange"
        :current-page.sync="page"
        :page-size="size"
        :page-sizes="[10, 20, 50]"
        layout="total, sizes, prev, pager, next, jumper"
        :total="total"></el-pagination>
    </div>
  </el-dialog>
  <el-dialog title="消息提醒" :visible.sync="messageVisible" @close="closeMessageDialog" width="540px">
    <div v-html="messInfo"></div>
    <span slot="footer" class="dialog-footer">
      <el-button @click="messageVisible = false">取消</el-button>
    </span>
  </el-dialog>
</div>

+ 209 - 1
component/statistics/GxbCy/index.js

@ -118,7 +118,21 @@ Vue.component('gxb-cy', {
          ]
        }
      ],
      level: 0
      level: 0,
      visible: false,
      title: '',
      query: {},
      dataRangeOption: [],
      dialogTableData: [],
      dialogHeader: [],
      page: 1,
      size: 10,
      total: 0,
      messageVisible: false,
      messInfo: null,
      remind: '',
      dialogExportLoading: false,
      dialogLoading: false
    }
  },
  methods: {
@ -312,6 +326,200 @@ Vue.component('gxb-cy', {
          resolve(children)
        }
      })
    },
    openDialog(row, prop) {
      this.query = {}
      var len = row.code.length
      if (len == 6) {
        this.query.range = 'town'
        this.query.area = row.code
      } else if (len == 10) {
        this.query.range = 'hospital'
        this.query.hospital = row.code
      } else {
        this.query.range = 'team'
        this.query.team = row.code
      }
      this.dataRangeOption = [{ label: row.name, value: row.code }]
      if (prop == 'vd1Num' || prop == 'vd3Num') {
        this.title = '康复随访消息推送明细'
        this.dialogHeader = [
          { label: '姓名', prop: 'patientName' },
          { label: '性别', prop: 'sex' },
          { label: '年龄', prop: 'age' },
          { label: '证件号码', prop: 'idcard' },
          { label: '签约医院', prop: 'hospitalName' },
          { label: '签约医生', prop: 'doctorName' },
          { label: '提醒类型', prop: 'typeName' },
          { label: '消息推送时间', prop: 'createTime' },
          { label: '出院下转时间', prop: 'turnTime' },
          { label: '消息推送人', prop: 'senderName' }
        ]
        if (prop == 'vd1Num') {
          this.query.visitCount = 1
        } else {
          this.query.visitCount = 3
        }
        this.visible = true
        this.selectSmsInfoList()
      } else if (prop == 'v2Num' || prop == 'v4Num') {
        this.title = '康复随访记录明细'
        this.dialogHeader = [
          { label: '姓名', prop: 'name' },
          { label: '性别', prop: 'name' },
          { label: '年龄', prop: 'name' },
          { label: '手机号', prop: 'name' },
          { label: '下转医院', prop: 'name' },
          { label: '下转医生', prop: 'name' },
          { label: '下转时间', prop: 'name' },
          { label: '所属机构', prop: 'name' },
          { label: '随访医生', prop: 'name' },
          { label: '计划随访时间', prop: 'name' },
          { label: '实际随访时间', prop: 'name' }
        ]
        if (prop == 'v2Num') {
          this.query.visitCount = 2
        } else {
          this.query.visitCount = 4
        }
        this.visible = true
        this.gxbRehabilitationFollowupRecord()
      }
    },
    gxbRehabilitationFollowupRecord() {
      var vm = this
      var params = {
        ...this.query,
        page: this.page,
        size: 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.dialogLoading = true
      httpRequest.get('statistics/collaborate/gxbRehabilitationFollowupRecord', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.dialogTableData = res.detailModelList
          vm.total = res.totalCount
        }
        vm.dialogLoading = false
      })
    },
    dialogSearchFn() {
      this.page = 1
      this.dialogSearch()
    },
    dialogSearch() {
      if (this.title == '康复随访记录明细') {
        this.gxbRehabilitationFollowupRecord()
      } else {
        this.selectSmsInfoList()
      }
    },
    selectSmsInfoList() {
      var vm = this
      var params = {
        ...this.query,
        type: 2,
        page: this.page,
        size: 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.dialogLoading = true
      httpRequest.get('statistics/collaborate/selectSmsInfoList', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.dialogTableData = res.detailModelList
          vm.total = res.totalCount
        }
        vm.dialogLoading = false
      })
    },
    dialogExportFn() {
      var vm = this
      this.exportLoading = true
      if (this.title == '康复随访记录明细') {
        var params = {
          ...this.query
        }
        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]
          }
        }
        var fileName = `康复随访记录明细${new Date().getTime()}.xls`
        httpRequest.downLoadFileForAjax('statistics/collaborate/exportGxbRehabilitationFollowupRecord', fileName, params).then(function () {
          vm.exportLoading = false
        })
      } else {
        var params = {
          ...this.query,
          type: 2
        }
        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]
          }
        }
        var fileName = `康复随访消息推送明细${new Date().getTime()}.xls`
        httpRequest.downLoadFileForAjax('statistics/collaborate/exportSelectSmsInfoList', fileName, params).then(function () {
          vm.exportLoading = false
        })
      }
    },
    dialogReset() {
      var params = {
        ...this.query
      }
      this.query = {
        visitCount: params.visitCount,
        range: params.range,
        area: params.area,
        hospital: params.hospital,
        team: params.team
      }
    },
    closeDialog() {
      this.visible = false
    },
    handleCurrentChange(val) {
      this.page = val
      this.dialogSearch()
    },
    handleSizeChange(val) {
      this.size = val
      this.dialogSearch()
    },
    previewForm(row) {},
    previewMess(row) {
      this.messageVisible = true
      this.messInfo = row.content
    },
    closeMessageDialog() {
      this.messageVisible = false
    }
  },
  mounted() {

+ 10 - 7
component/statistics/GxbEvaluation/index.js

@ -352,7 +352,7 @@ Vue.component('gxb-evaluation', {
          { label: '签约医生', prop: 'doctorName' },
          { label: '提醒类型', prop: 'typeName' },
          { label: '消息推送时间', prop: 'createTime' },
          { label: '评估时间', prop: 'signHospitalName' },
          { label: '出院下转时间', prop: 'turnTime' },
          { label: '消息推送人', prop: 'senderName' }
        ]
        this.selectSmsInfoList()
@ -385,6 +385,7 @@ Vue.component('gxb-evaluation', {
      httpRequest.get('statistics/collaborate/gxbCaseDataPage', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.dialogTableData = res.detailModelList
          vm.total = res.totalCount
        }
      })
    },
@ -406,7 +407,10 @@ Vue.component('gxb-evaluation', {
    },
    selectSmsInfoList() {
      var vm = this
      var params = JSON.parse(JSON.stringify(this.query))
      var params = {
        ...this.query
      }
      params.type = 1
      params.page = this.page
      params.pageSize = this.size
      if (this.yearType == '1') {
@ -421,6 +425,7 @@ Vue.component('gxb-evaluation', {
      httpRequest.get('statistics/collaborate/selectSmsInfoList', { data: this.query }).then(function (res) {
        if (res.status == 200) {
          vm.dialogTableData = res.detailModelList
          vm.total = res.totalCount
        }
      })
    },
@ -470,11 +475,9 @@ Vue.component('gxb-evaluation', {
      }
    },
    previewMess(row) {
      var vm = this
      httpRequest.post('doctor/screen/getSurveyMessage', { data: { surveyResultCode: row.code } }).then(function (res) {
        vm.messageVisible = true
        vm.messInfo = res.data
      })
      this.messageVisible = true
      this.messInfo = row.content
      
    },
    closeMessageDialog() {
      this.messageVisible = false

+ 7 - 1
component/statistics/GxbMz/index.html

@ -53,7 +53,13 @@
    </div>
  </div>
  <el-table :data="tableData" style="width: 100%" v-loading="loading" row-key="code" lazy :load="load" :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
    <el-table-column :label="item.label" v-for="item in tableHeader" :min-width="item.width" :key="item.prop" :prop="item.prop"></el-table-column>
    <el-table-column :label="item.label" v-for="item in tableHeader" :min-width="item.width" :key="item.prop" :prop="item.prop">
      <template slot-scope="scope">
        <span :style="{cursor: ['totalTimes','mzTimes','zyTimes','totalNum','mzNum','zyNum'].includes(item.prop) ?'pointer':''}" @click="openDialog(scope.row, item.prop)">
          {{scope.row[item.prop]}}
        </span>
      </template>
    </el-table-column>
  </el-table>
  <el-dialog :visible.sync="visible" :title="title" @close="closeDialog" width="1200px">
    <el-form inline size="mini">

+ 85 - 2
component/statistics/GxbMz/index.js

@ -66,6 +66,7 @@ Vue.component('gxb-mz', {
      messageVisible: false,
      messInfo: null,
      remind: '',
      dialogLoading: false,
      dialogExportLoading: false,
      statusOptions: [],
      rehabilitationHospital: [],
@ -314,7 +315,7 @@ Vue.component('gxb-mz', {
      }
      this.dialogExportLoading = true
      var fileName = `冠心病下转情况统计表${new Date().getTime()}.xls`
      httpRequest.downLoadFileForAjax('statistics/collaborate/exportGxbTurnDownInfo', fileName, params).then(function () {
      httpRequest.downLoadFileForAjax('statistics/collaborate/exportTurnDownDataPage', fileName, params).then(function () {
        vm.dialogExportLoading = false
      })
    },
@ -381,8 +382,15 @@ Vue.component('gxb-mz', {
      }
    },
    openDialog(row, prop) {
      this.query = {}
      this.page = 1
      if (['totalTimes', 'mzTimes', 'zyTimes'].includes(prop)) {
        this.query = {
          status: '',
          hospitalCode: '',
          orgCode: '',
          archiveStatus: '',
          patientType: ''
        }
        this.visible = true
        this.title = '康复下转明细列表'
        this.dialogHeader = [
@ -411,6 +419,11 @@ Vue.component('gxb-mz', {
      } 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' },
@ -423,6 +436,14 @@ Vue.component('gxb-mz', {
          { label: '最近一次下转时间', prop: 'turnDownTime' },
          { label: '最近一次下转类型', prop: 'eventType' }
        ]
        switch (prop) {
          case 'mzNum':
            this.query.eventType = 1
            break
          case 'zyNum':
            this.query.eventType = 2
            break
        }
      }
      var len = row.code.length
      if (len == 6) {
@ -436,7 +457,69 @@ Vue.component('gxb-mz', {
        this.query.team = row.code
      }
      this.dataRangeOption = [{ label: row.name, value: row.code }]
      if (['totalTimes', 'mzTimes', 'zyTimes'].includes(prop)) {
        this.rehabilitationPatientInfo()
      } else if (['totalNum', 'mzNum', 'zyNum'].includes(prop)) {
        this.turnDownDataPage()
      }
    },
    rehabilitationPatientInfo() {
      var vm = this
      var params = {
        ...this.query,
        page: this.page,
        size: this.size,
        disease: 3
      }
      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.dialogLoading = true
      statisticAPI.rehabilitationPatientInfo(params).then(function (res) {
        if (res.status == 200) {
          res.detailModelList.forEach(function (v) {
            v.sex = v.sex == 1 ? '男' : '女'
          })
          vm.recoveryList = res.detailModelList
          vm.total = res.totalCount
        } else {
          vm.$message.error(res.msg)
        }
        vm.dialogLoading = false
      })
    },
    turnDownDataPage() {
      var vm = this
      var params = {
        ...this.query,
        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.loading = true
      httpRequest.get('statistics/collaborate/turnDownDataPage', { data: params }).then(function (res) {
        if (res.status == 200) {
          vm.dialogTableData = res.detailModelList
          vm.total = res.totalCount
        }
        vm.loading = false
      })
    },
    closeDialog() {
      this.visible = false
    }

+ 1 - 1
component/statistics/PersonInfo/index.js

@ -16,7 +16,7 @@ Vue.component('person-info', {
  props: [],
  data: function () {
    return {
      visible: true,
      visible: false,
      code: '0fab4dd67e074e16ac86db6b6c15233e',
      loading: false,
      type: '1',