11
WXL
2024-08-14 0ac2d43fce4d74f6eea5a51a2e16af4e6a536c7c
src/views/project/indexstatistics/index.vue
@@ -2,12 +2,12 @@
  <div class="app-container" style="background-color: #f2f2f2; color: #fff">
    <el-card shadow="always" style="color: #566f94">
      <el-row :gutter="8">
        <el-col :span="6">
        <el-col :span="8">
          <el-date-picker
            v-model="selecttime"
            type="monthrange"
            range-separator="至"
            start-placeholder="开始月份"
            start-placeholder="开始月份(默认本年度)"
            end-placeholder="结束月份"
            value-format="yyyy-MM-dd"
            @change="getTimeList"
@@ -61,15 +61,15 @@
      <div style="width: 76%;">
        <el-row
          :gutter="10"
          style="font-size: 16px; font-weight: bold;  margin-top: 10px"
          style="font-size: 18px; font-weight: bold;  margin-top: 10px"
        >
          <el-col :span="6">
            <router-link
              :to="{
                name: 'Donatebaseinfo',
                params: {
                  starttime: this.starttime,
                  endtime: this.endtime,
                  starttime: starttime,
                  endtime: endtime,
                  tempRecordState: '',
                  reporterno: reportervalue,
                  shen: searchAddress.shen,
@@ -85,7 +85,7 @@
              <!-- @click="tobaseinfo0" -->
              <el-card shadow="always" style="color: #566f94">
                <svg-icon icon-class="user" />&nbsp;&nbsp; 潜在捐献累计:{{
                  this.donateNumData.numberOfDonate
                  donateNumData.numberOfDonate
                }}&nbsp; 例
              </el-card>
            </router-link>
@@ -95,8 +95,8 @@
              :to="{
                name: 'Medicalevaluation',
                params: {
                  starttime: this.starttime,
                  endtime: this.endtime,
                  starttime: starttime,
                  endtime: endtime,
                  tempRecordState: '',
                  reporterno: reportervalue,
                  shen: searchAddress.shen,
@@ -112,7 +112,7 @@
                @click="Tomedicalevalua"
              >
                <svg-icon icon-class="tool" />&nbsp;&nbsp; 完成医学评估累计:{{
                  this.donateNumData.numberOfMedicalEvaluation
                  donateNumData.numberOfMedicalEvaluation
                }}&nbsp; 例
              </el-card>
            </router-link>
@@ -122,8 +122,8 @@
              :to="{
                name: 'Relativesconfirmation',
                params: {
                  starttime: this.starttime,
                  endtime: this.endtime,
                  starttime: starttime,
                  endtime: endtime,
                  tempRecordState: '',
                  reporterno: reportervalue,
                  shen: searchAddress.shen,
@@ -136,7 +136,7 @@
              <el-card shadow="always" style="color: #566f94">
                <svg-icon icon-class="checkbox" />&nbsp;&nbsp;
                完成亲属确认累计:{{
                  this.donateNumData.numberOfRelativeConfirmation
                  donateNumData.numberOfRelativeConfirmation
                }}&nbsp; 例
              </el-card>
            </router-link>
@@ -146,8 +146,8 @@
              :to="{
                name: 'EthicalReview',
                params: {
                  starttime: this.starttime,
                  endtime: this.endtime,
                  starttime: starttime,
                  endtime: endtime,
                  tempRecordState: '',
                  reporterno: reportervalue,
                  shen: searchAddress.shen,
@@ -160,7 +160,7 @@
              <el-card shadow="always" style="color: #566f94">
                <svg-icon icon-class="education" />&nbsp;&nbsp;
                完成伦理审查累计:{{
                  this.donateNumData.numberOfEthicalReview
                  donateNumData.numberOfEthicalReview
                }}&nbsp; 例
              </el-card>
            </router-link>
@@ -171,36 +171,20 @@
          style="margin-top: 10px; font-size: 18px;  font-weight: bold"
        >
          <el-col :span="6">
            <router-link
              :to="{
                name: 'Organallocation',
                params: {
                  starttime: this.starttime,
                  endtime: this.endtime,
                  tempRecordState: '',
                  reporterno: reportervalue,
                  shen: searchAddress.shen,
                  shi: searchAddress.shi,
                  qu: searchAddress.qu,
                  city: city
                }
              }"
            >
              <el-card shadow="always" style="color: #566f94">
                <svg-icon icon-class="druid" />&nbsp;&nbsp; 完成器官分配累计:{{
                  this.donateNumData.numberOfDonatePeople
                }}&nbsp; 个
                <!-- this.donateNumData.numberOfOrgans -->
              </el-card>
            </router-link>
            <el-card shadow="always" style="color: #566f94">
              <svg-icon icon-class="druid" />&nbsp;&nbsp; 完成器官分配累计:{{
                donateNumData.numberOfDonatePeople
              }}&nbsp; 个
              <!-- donateNumData.numberOfOrgans -->
            </el-card>
          </el-col>
          <el-col :span="6">
            <router-link
              :to="{
                name: 'Donationwitness',
                params: {
                  starttime: this.starttime,
                  endtime: this.endtime,
                  starttime: starttime,
                  endtime: endtime,
                  tempRecordState: '',
                  reporterno: reportervalue,
                  shen: searchAddress.shen,
@@ -212,7 +196,7 @@
            >
              <el-card shadow="always" style="color: #566f94">
                <svg-icon icon-class="job" />&nbsp;&nbsp; 完成获取见证累计:{{
                  this.donateNumData.numberOfWitness
                  donateNumData.numberOfWitness
                }}&nbsp; 例
              </el-card>
            </router-link>
@@ -222,8 +206,8 @@
              :to="{
                name: 'Donatefinish',
                params: {
                  starttime: this.starttime,
                  endtime: this.endtime,
                  starttime: starttime,
                  endtime: endtime,
                  tempRecordState: '',
                  reporterno: reportervalue,
                  shen: searchAddress.shen,
@@ -235,7 +219,7 @@
            >
              <el-card shadow="always" style="color: #566f94">
                <svg-icon icon-class="lock" />&nbsp;&nbsp; 捐献完成累计:{{
                  this.donateNumData.numberOfCompletion
                  donateNumData.numberOfCompletion
                }}&nbsp; 例
              </el-card>
            </router-link>
@@ -246,9 +230,9 @@
              :to="{
                name: 'Donatebaseinfo',
                params: {
                  starttime: this.starttime,
                  endtime: this.endtime,
                  tempRecordState: 99,
                  starttime: starttime,
                  endtime: endtime,
                  terminationcase: 1,
                  reporterno: reportervalue,
                  shen: searchAddress.shen,
                  shi: searchAddress.shi,
@@ -259,7 +243,7 @@
            >
              <el-card shadow="always" style="color: #566f94">
                <svg-icon icon-class="lock" />&nbsp;&nbsp; 捐献终止累计:{{
                  this.donateNumData.numberOfTerminated
                  donateNumData.numberOfTerminated
                }}&nbsp; 例
              </el-card>
            </router-link>
@@ -274,8 +258,27 @@
            >
              <el-row style="margin-bottom: 20px">
                <span style="font-size: 18px; color: #566f94; font-weight: bold"
                  >本年度指标数据分析</span
                  >指标数据分析</span
                >
                <span style="margin-left: 30px;">
                  <router-link
                    :to="{
                      name: 'DonationProcess',
                      params: {
                        starttime: starttime,
                        endtime: endtime,
                        terminationcase: 1,
                        reporterno: reportervalue,
                        shen: searchAddress.shen,
                        shi: searchAddress.shi,
                        qu: searchAddress.qu,
                        city: city
                      }
                    }"
                  >
                    <el-button type="primary" round>捐献进程</el-button>
                  </router-link>
                </span>
              </el-row>
              <el-row :gutter="3">
                <el-col :span="8" style="text-align: center">
@@ -284,9 +287,7 @@
                    style="padding: 0; margin: 0; width: 100%; color: #566f94"
                  >
                    器官捐献转化率<br />
                    {{
                      (this.qualirtData.donateTransferRate * 100).toFixed(2)
                    }}%
                    {{ (qualirtData.donateTransferRate * 100).toFixed(2) }}%
                  </el-card>
                </el-col>
                <el-col :span="8" style="text-align: center">
@@ -295,9 +296,7 @@
                    style="padding: 0; margin: 0; width: 100%; color: #566f94"
                  >
                    平均器官产出率<br />
                    {{
                      (this.qualirtData.organProductionRate * 100).toFixed(2)
                    }}%
                    {{ (qualirtData.organProductionRate * 100).toFixed(2) }}%
                  </el-card>
                </el-col>
                <el-col :span="8" style="text-align: center">
@@ -306,7 +305,7 @@
                    style="padding: 0; margin: 0; width: 100%; color: #566f94"
                  >
                    获取器官利用率<br />
                    {{ (this.qualirtData.organUsedRate * 100).toFixed(2) }}%
                    {{ (qualirtData.organUsedRate * 100).toFixed(2) }}%
                  </el-card>
                </el-col>
              </el-row>
@@ -317,17 +316,15 @@
                    <el-row :gutter="10" style="margin-top: 10px">
                      <el-col :span="8" style="text-align: center"
                        >DBD:
                        {{ (this.qualirtData.dbddonateRate * 100).toFixed(2) }}%
                        {{ (qualirtData.dbddonateRate * 100).toFixed(2) }}%
                      </el-col>
                      <el-col :span="8" style="text-align: center">
                        DCD:
                        {{ (this.qualirtData.dcddonateRate * 100).toFixed(2) }}%
                        {{ (qualirtData.dcddonateRate * 100).toFixed(2) }}%
                      </el-col>
                      <el-col :span="8" style="text-align: center">
                        DBCD:
                        {{
                          (this.qualirtData.dbcddonateRate * 100).toFixed(2)
                        }}%
                        {{ (qualirtData.dbcddonateRate * 100).toFixed(2) }}%
                      </el-col>
                    </el-row>
                  </el-card>
@@ -343,9 +340,7 @@
                      <span style="font-size: 14px"> 获取前活检率</span>
                    </el-row>
                    {{
                      (this.qualirtData.organBeforeGetCheckRate * 100).toFixed(
                        2
                      )
                      (qualirtData.organBeforeGetCheckRate * 100).toFixed(2)
                    }}%
                  </el-card>
                </el-col>
@@ -357,11 +352,7 @@
                    <el-row>
                      <span style="font-size: 14px">获取后活检率</span>
                    </el-row>
                    {{
                      (this.qualirtData.organAfterGetCheckRate * 100).toFixed(
                        2
                      )
                    }}%
                    {{ (qualirtData.organAfterGetCheckRate * 100).toFixed(2) }}%
                  </el-card>
                </el-col>
              </el-row>
@@ -372,7 +363,7 @@
                    style="padding: 0; margin: 0; width: 100%; color: #566f94"
                  >
                    <span style="font-size: 14px">边缘供器官比率</span><br />
                    {{ (this.qualirtData.marginOrganRate * 100).toFixed(2) }}%
                    {{ (qualirtData.marginOrganRate * 100).toFixed(2) }}%
                  </el-card>
                </el-col>
                <el-col :span="12" style="text-align: center">
@@ -382,8 +373,8 @@
                  >
                    <span style="font-size: 14px"
                      >器官保存液病原菌培养阳性率</span
                    >
                    {{ (this.qualirtData.germPositiveRate * 100).toFixed(2) }}%
                    ><br />
                    {{ (qualirtData.germPositiveRate * 100).toFixed(2) }}%
                  </el-card>
                </el-col>
              </el-row>
@@ -395,21 +386,19 @@
                      <el-row>
                        <el-col :span="6" style="text-align: center">
                          总发生率<br />
                          {{
                            (this.qualirtData.totalPNFRate * 100).toFixed(2)
                          }}%
                          {{ (qualirtData.totalPNFRate * 100).toFixed(2) }}%
                        </el-col>
                        <el-col :span="6" style="text-align: center">
                          DBD<br />
                          {{ (this.qualirtData.dbdpnfrate * 100).toFixed(2) }}%
                          {{ (qualirtData.dbdpnfrate * 100).toFixed(2) }}%
                        </el-col>
                        <el-col :span="6" style="text-align: center">
                          DCD<br />
                          {{ (this.qualirtData.dcdpnfrate * 100).toFixed(2) }}%
                          {{ (qualirtData.dcdpnfrate * 100).toFixed(2) }}%
                        </el-col>
                        <el-col :span="6" style="text-align: center">
                          DBCD<br />
                          {{ (this.qualirtData.dbcdpnfrate * 100).toFixed(2) }}%
                          {{ (qualirtData.dbcdpnfrate * 100).toFixed(2) }}%
                        </el-col>
                      </el-row>
                    </el-row>
@@ -424,22 +413,22 @@
                      <el-row>
                        <el-col :span="6" style="text-align: center">
                          总发生率<br />{{
                            (this.qualirtData.totalDGFRate * 100).toFixed(2)
                            (qualirtData.totalDGFRate * 100).toFixed(2)
                          }}%
                        </el-col>
                        <el-col :span="6" style="text-align: center">
                          DBD<br />{{
                            (this.qualirtData.dbddgfrate * 100).toFixed(2)
                            (qualirtData.dbddgfrate * 100).toFixed(2)
                          }}%
                        </el-col>
                        <el-col :span="6" style="text-align: center">
                          DCD<br />{{
                            (this.qualirtData.dcddgfrate * 100).toFixed(2)
                            (qualirtData.dcddgfrate * 100).toFixed(2)
                          }}%
                        </el-col>
                        <el-col :span="6" style="text-align: center">
                          DBCD<br />{{
                            (this.qualirtData.dbcddgfrate * 100).toFixed(2)
                            (qualirtData.dbcddgfrate * 100).toFixed(2)
                          }}%
                        </el-col>
                      </el-row>
@@ -451,7 +440,7 @@
          </el-col>
          <el-col :span="12">
            <el-card shadow="always" style="height: 640px" ref="organChartCard">
              <OrganNumChart :cdata="organData" />
              <OrganNumChart :cdata="organData" :CommonOrgan="CommonOrgan" />
            </el-card>
            <!-- <el-col :span="7">
        <el-card shadow="always" style="height: 640px" ref="orgNumberCard">
@@ -461,10 +450,10 @@
                >各地区医院案例数据</span
              >
            </el-col>
          </el-row>
          <el-row>
          </el-row>
          <dv-scroll-board
            :config="config"
@@ -475,17 +464,86 @@
          </el-col>
        </el-row>
      </div>
      <div style="width: 24%; margin-top: 10px; padding-left: 10px;">
        <el-card class="box-card" style="padding: 0; font-weight: bold; height: 780px">
      <div style="width: 24%; margin-top: 10px; padding-left: 10px; ">
        <el-card
          class="box-card"
          style="padding: 0; font-weight: bold; height: 780px; "
        >
          <div slot="header" class="clearfix">
            <span style="font-size: 18px; color: #566f94; font-weight: bold">消息列表</span>
            <el-button style="float: right; padding: 3px 0" type="text"
              >全部已读</el-button
            <span style="font-size: 18px; color: #566f94; font-weight: bold"
              >消息列表</span
            >
            <el-button
              v-if="ReadState == 1"
              style="float: right; padding: 6px "
              type="danger"
              plain
              @click="FnReadState"
              >查看未读消息</el-button
            >
            <el-button
              v-else
              style="float: right; padding: 6px "
              type="info"
              plain
              @click="FnReadState"
              >查看已读消息</el-button
            >
          </div>
          <div v-for="o in 4" :key="o" class="text item">
            {{ "列表内容 " + o }}
          <div style="height: 606px;overflow: auto;">
            <el-table :data="tableData" v-loading="loading" style="width: 100%">
              <el-table-column label="通知日期">
                <template slot-scope="scope">
                  <i class="el-icon-time"></i>
                  <span style="margin-left: 10px">{{
                    scope.row.createTime
                  }}</span>
                </template>
              </el-table-column>
              <el-table-column label="概要">
                <template slot-scope="scope">
                  <el-popover trigger="hover" placement="top">
                    <div class="dialog-class" style="margin: 20px;">
                      <div>{{ scope.row.messagecontent }}</div>
                      <div style=" height: 100px;margin-top: 40px;">
                        <span>{{ "处理人:" + scope.row.sendusername }}</span>
                        <div>{{ "处理时间:" + scope.row.updateTime }}</div>
                      </div>
                      <div style="text-align: right; ; margin: 0">
                        <el-button
                          type="primary"
                          size="mini"
                          @click="clickMessageDetailed(scope.row)"
                          >确定</el-button
                        >
                      </div>
                    </div>
                    <div slot="reference" class="name-wrapper">
                      <el-tag size="medium">{{
                        scope.row.messagetitle
                      }}</el-tag>
                    </div>
                  </el-popover>
                </template>
              </el-table-column>
              <el-table-column label="状态" align="center" prop="paystatus">
                <template slot-scope="scope">
                  <dict-tag
                    :options="dict.type.sys_messagestatus"
                    :value="scope.row.isread"
                  />
                </template>
              </el-table-column>
            </el-table>
          </div>
          <pagination
            v-show="total > 0"
            :total="total"
            :page.sync="searchData.pageNum"
            :limit.sync="searchData.pageSize"
            @pagination="GetMessageList"
          />
        </el-card>
      </div>
    </div>
@@ -557,6 +615,13 @@
  getOrgansOfHospitalByMonth,
  getDonateorganSum
} from "@/api/project/donateorgan";
import { getUserProfile } from "@/api/system/user";
import {
  listSystemmessageList,
  listSystemmessageCount,
  updateSystemmessage
} from "@/api/project/message";
import Li_area_select from "@/components/Address";
const DEF_TABLE_CONFIG = {
@@ -569,6 +634,7 @@
export default {
  name: "home",
  dicts: ["sys_messagestatus"],
  components: {
    RankChart,
    OrganNumChart,
@@ -579,12 +645,13 @@
    return {
      city: "",
      reportno: "",
      selecttime: [],
      selecttime: [new Date(new Date().getFullYear(), 0), new Date()],
      year: "选择年份",
      isloading: false,
      maxHeight: 0,
      CommonOrgan: null,
      provinceData: [
        { label: "全部", value: "" },
        { label: "全部地市", value: "" },
        { label: "杭州市", value: "1" },
        { label: "宁波市", value: "2" },
        { label: "温州市", value: "3" },
@@ -597,7 +664,18 @@
        { label: "台州市", value: "A" },
        { label: "丽水市", value: "B" }
      ],
      ReadState: 1,
      searchData: {
        del_flag: 0,
        receiveuserno: "",
        isread: null,
        pageNum: 1,
        pageSize: 10
      },
      total: 0,
      loading: false,
      value: "",
      userID: "",
      //时间选项
      timeoption: "",
      //起始时间
@@ -610,84 +688,128 @@
          key: "heart",
          name: "心脏",
          value: 0,
          value1: 0,
          code: "C38"
        },
        {
          key: "fullLiver",
          name: "全肝",
          name: "肝脏",
          value: 0,
          value1: 0,
          code: "C22"
        },
        {
          key: "leftLiver",
          name: "左肝",
          key: "Lefthalfliver",
          name: "左半肝",
          value: 0,
          value1: 0,
          code: "C22L"
        },
        {
          key: "rightLiver",
          name: "右肝",
          key: "Leftouterlobe",
          name: "左外叶",
          value: 0,
          value1: 0,
          code: "C22L0"
        },
        {
          key: "Righthalfliver",
          name: "右半肝",
          value: 0,
          value1: 0,
          code: "C22R"
        },
        {
          key: "RML",
          name: "右三叶",
          value: 0,
          value1: 0,
          code: "C22R0"
        },
        {
          key: "leftRenal",
          name: "左肾",
          value: 0,
          value1: 0,
          code: "C64L"
        },
        {
          key: "rightRenal",
          name: "右肾",
          value: 0,
          value1: 0,
          code: "C64R"
        },
        {
          key: "fullLung",
          name: "全肺",
          value: 0,
          value1: 0,
          code: "C34"
        },
        {
          key: "leftLung",
          name: "左肺",
          value: 0,
          value1: 0,
          code: "C34L"
        },
        {
          key: "rightLung",
          name: "右肺",
          value: 0,
          value1: 0,
          code: "C34R"
        },
        {
          key: "",
          name: "小肠",
          value: 0,
          value1: 0,
          code: "C17"
        },
        {
          key: "",
          name: "胰腺",
          value: 0,
          value1: 0,
          code: "C25"
        },
        {
          key: "leftEye",
          name: "左眼膜",
          value: 0,
          value1: 0,
          code: "C69L"
        },
        {
          key: "rightEye",
          name: "右眼膜",
          value: 0,
          value1: 0,
          code: "C69R"
        },
        {
          key: "",
          name: "其它",
          value: 0,
          value1: 0,
          code: "C01"
        }
        // {
@@ -695,6 +817,28 @@
        //   name: "遗体",
        //   value: 0,
        // },
      ],
      tableData: [
        {
          date: "2016-05-02",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1518 弄"
        },
        {
          date: "2016-05-04",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1517 弄"
        },
        {
          date: "2016-05-01",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1519 弄"
        },
        {
          date: "2016-05-03",
          name: "王小虎",
          address: "上海市普陀区金沙江路 1516 弄"
        }
      ],
      //统计指标数据
      qualirtData: {
@@ -760,6 +904,7 @@
  // listnewEthicalreviewopinions
  created() {
    // this.listnewMedicalevaluation()
    this.GetUser();
  },
  mounted() {
    this.$nextTick(() => {
@@ -773,7 +918,53 @@
  },
  methods: {
    getprovincedata() {},
    GetUser() {
      this.loading = true;
      getUserProfile()
        .then(res => {
          this.searchData.receiveuserno = res.data.userName;
          this.GetMessageList();
        })
        .catch(error => {
          this.$message.error(error);
        });
    },
    GetMessageList() {
      listSystemmessageList(this.searchData).then(res => {
        if (res.code == 200) {
          this.tableData = res.rows;
          this.loading = false;
          this.total = res.total;
        }
      });
    },
    // 确定已读
    clickMessageDetailed(item) {
      let data = item;
      if (data.isread == 0) {
        item.isread = 1;
        updateSystemmessage(item)
          .then(res => {
            this.$message.success("已读");
            this.GetMessageList();
          })
          .catch(error => {});
      } else {
        this.$message.info("此消息已读");
      }
    },
    // 切换读取状态
    FnReadState() {
      if (this.ReadState == 1) {
        this.searchData.isread = 0;
        this.ReadState = 0;
        this.GetMessageList();
      } else {
        this.searchData.isread = 1;
        this.ReadState = 1;
        this.GetMessageList();
      }
    },
    get_unix_time(dateStr) {
      var newstr = dateStr.replace(/-/g, "/");
      var date = new Date(newstr);
@@ -881,6 +1072,7 @@
      if (this.reportervalue != "") {
        param.reporterno = this.reportervalue;
      }
      console.log(param, "param");
      getDonateorganSum(param).then(response => {
        /*
        let list = this.organData.map((item) => item);
@@ -889,13 +1081,15 @@
        }
        this.organData = list;
      */
        let list = response.data;
        let list = response.data.organInfoVOList;
        this.CommonOrgan = response.data;
        for (let i = 0; i < this.organData.length; i++) {
          let ii = list.findIndex(
            item => item.organNo == this.organData[i].code
          );
          if (ii > -1) {
            this.organData[i].value = list[ii].count;
            this.organData[i].value1 = list[ii].abandonCount;
          }
        }
      });
@@ -988,8 +1182,6 @@
      //     : "";
      let info = {
        pageNum: 1,
        pageSize: 10,
        starttime: this.starttime,
        endtime: this.endtime
@@ -1036,7 +1228,7 @@
      });
      //终止
      info.recordstate = "99";
      info.terminationCase = 1;
      listDonatebaseinfo(info).then(res => {
        this.donateNumData.numberOfTerminated = res.total;
      });
@@ -1044,7 +1236,7 @@
      listDonatebaseinfo({}).then(res => {
        let list = res.rows;
        let reportlist = [];
        reportlist.push({ reporterno: "", reportername: "全部" });
        reportlist.push({ reporterno: "", reportername: "全部人员" });
        list.forEach(element => {
          reportlist.push({
            reporterno: element.reporterno,