WXL
2025-12-29 cd574e3394883b79eac5d63f3b11bca852dbc7a0
src/views/business/ethicalReview/ethicalReviewInfo.vue
@@ -180,7 +180,7 @@
    <el-card class="expert-card">
      <div slot="header" class="clearfix">
        <span class="detail-title"
          >专家审查情况 (18位普通专家 + 1位主任专家)</span
          >专家审查情况 (18位专家 + 1位主委专家)</span
        >
        <div style="float: right;">
          <el-button
@@ -189,7 +189,7 @@
            @click="handleSendToNormalExperts"
            :disabled="!canSendToNormalExperts"
          >
            发送普通专家
            发送专家
          </el-button>
          <el-button
            size="mini"
@@ -197,7 +197,7 @@
            @click="handleSendToChiefExpert"
            :disabled="!canSendToChiefExpert"
          >
            发送主任专家
            发送主委专家
          </el-button>
          <el-button
            size="mini"
@@ -217,13 +217,13 @@
        <el-row :gutter="20">
          <el-col :span="6">
            <div class="stat-item">
              <span class="stat-label">普通专家已同意:</span>
              <span class="stat-label">专家已同意:</span>
              <span class="stat-value">{{ approvedNormalExperts }}/18</span>
            </div>
          </el-col>
          <el-col :span="6">
            <div class="stat-item">
              <span class="stat-label">主任专家状态:</span>
              <span class="stat-label">主委专家状态:</span>
              <span class="stat-value">{{ chiefExpertStatus }}</span>
            </div>
          </el-col>
@@ -268,7 +268,7 @@
              size="mini"
              type="danger"
              style="margin-left: 5px;"
              >主任</el-tag
              >主委</el-tag
            >
          </template>
        </el-table-column>
@@ -276,7 +276,7 @@
        <el-table-column label="专家类型" width="100" align="center">
          <template slot-scope="scope">
            <span :class="scope.row.isChief ? 'chief-expert' : 'normal-expert'">
              {{ scope.row.isChief ? "主任专家" : "普通专家" }}
              {{ scope.row.isChief ? "主委专家" : "专家" }}
            </span>
          </template>
        </el-table-column>
@@ -314,6 +314,13 @@
          <template slot-scope="scope">
            <span>{{
              scope.row.reviewTime ? parseTime(scope.row.reviewTime) : "未审查"
            }}</span>
          </template>
        </el-table-column>
        <el-table-column label="发送时间" width="160" align="center">
          <template slot-scope="scope">
            <span>{{
              scope.row.reviewTime ? parseTime(scope.row.reviewTime) : "未发送"
            }}</span>
          </template>
        </el-table-column>
@@ -363,8 +370,8 @@
      <el-form :model="sendForm" ref="sendForm" label-width="100px">
        <el-form-item label="专家类型" prop="expertType">
          <el-radio-group v-model="sendForm.expertType">
            <el-radio label="normal">普通专家</el-radio>
            <el-radio label="chief">主任专家</el-radio>
            <el-radio label="normal">专家</el-radio>
            <el-radio label="chief">主委专家</el-radio>
          </el-radio-group>
        </el-form-item>
        <el-form-item
@@ -453,11 +460,11 @@
      // 附件数据
      attachments: [],
      expertReviews: [
        // 普通专家(18位)- 初始状态为申请中
     expertReviews: [
        // 专家(18位)- 初始状态为申请中
        {
          id: 1,
          expertName: "张教授",
          expertName: "陶昊",
          isChief: false,
          reviewStatus: "applying",
          expertConclusion: "",
@@ -466,7 +473,7 @@
        },
        {
          id: 2,
          expertName: "李教授",
          expertName: "刘斌",
          isChief: false,
          reviewStatus: "applying",
          expertConclusion: "",
@@ -475,7 +482,7 @@
        },
        {
          id: 3,
          expertName: "王教授",
          expertName: "于海初 ",
          isChief: false,
          reviewStatus: "applying",
          expertConclusion: "",
@@ -484,7 +491,7 @@
        },
        {
          id: 4,
          expertName: "刘教授",
          expertName: "王红梅",
          isChief: false,
          reviewStatus: "applying",
          expertConclusion: "",
@@ -493,7 +500,7 @@
        },
        {
          id: 5,
          expertName: "陈教授",
          expertName: "王春光",
          isChief: false,
          reviewStatus: "applying",
          expertConclusion: "",
@@ -502,7 +509,7 @@
        },
        {
          id: 6,
          expertName: "杨教授",
          expertName: "王静",
          isChief: false,
          reviewStatus: "applying",
          expertConclusion: "",
@@ -511,7 +518,7 @@
        },
        {
          id: 7,
          expertName: "黄教授",
          expertName: "边文超",
          isChief: false,
          reviewStatus: "applying",
          expertConclusion: "",
@@ -520,7 +527,7 @@
        },
        {
          id: 8,
          expertName: "赵教授",
          expertName: "闫志勇",
          isChief: false,
          reviewStatus: "applying",
          expertConclusion: "",
@@ -529,7 +536,7 @@
        },
        {
          id: 9,
          expertName: "周教授",
          expertName: "许凤",
          isChief: false,
          reviewStatus: "applying",
          expertConclusion: "",
@@ -538,7 +545,7 @@
        },
        {
          id: 10,
          expertName: "吴教授",
          expertName: "许传屾",
          isChief: false,
          reviewStatus: "applying",
          expertConclusion: "",
@@ -547,7 +554,7 @@
        },
        {
          id: 11,
          expertName: "徐教授",
          expertName: "张红岩",
          isChief: false,
          reviewStatus: "applying",
          expertConclusion: "",
@@ -556,7 +563,7 @@
        },
        {
          id: 12,
          expertName: "孙教授",
          expertName: "杨苏民",
          isChief: false,
          reviewStatus: "applying",
          expertConclusion: "",
@@ -565,7 +572,7 @@
        },
        {
          id: 13,
          expertName: "朱教授",
          expertName: "宋玉强",
          isChief: false,
          reviewStatus: "applying",
          expertConclusion: "",
@@ -574,7 +581,7 @@
        },
        {
          id: 14,
          expertName: "马教授",
          expertName: "周传利",
          isChief: false,
          reviewStatus: "applying",
          expertConclusion: "",
@@ -583,7 +590,7 @@
        },
        {
          id: 15,
          expertName: "胡教授",
          expertName: "荆凡波",
          isChief: false,
          reviewStatus: "applying",
          expertConclusion: "",
@@ -592,7 +599,7 @@
        },
        {
          id: 16,
          expertName: "林教授",
          expertName: "矫文捷",
          isChief: false,
          reviewStatus: "applying",
          expertConclusion: "",
@@ -601,7 +608,7 @@
        },
        {
          id: 17,
          expertName: "郭教授",
          expertName: "董震",
          isChief: false,
          reviewStatus: "applying",
          expertConclusion: "",
@@ -610,17 +617,17 @@
        },
        {
          id: 18,
          expertName: "何教授",
          expertName: "蔡金贞",
          isChief: false,
          reviewStatus: "applying",
          expertConclusion: "",
          expertOpinion: "",
          reviewTime: ""
        },
        // 主任专家(1位)
        // 主委专家(1位)
        {
          id: 19,
          expertName: "主任专家",
          expertName: "孔心涓",
          isChief: true,
          reviewStatus: "applying",
          expertConclusion: "",
@@ -646,18 +653,18 @@
        { id: 1, name: "张教授", type: "normal" },
        { id: 2, name: "李教授", type: "normal" },
        { id: 3, name: "王教授", type: "normal" },
        { id: 4, name: "赵主任", type: "chief" }
        { id: 4, name: "赵主委", type: "chief" }
      ]
    };
  },
  computed: {
    // 计算属性:普通专家同意数量
    // 计算属性:专家同意数量
    approvedNormalExperts() {
      return this.expertReviews.filter(
        expert => !expert.isChief && expert.expertConclusion === "approved"
      ).length;
    },
    // 计算属性:主任专家状态
    // 计算属性:主委专家状态
    chiefExpertStatus() {
      const chiefExpert = this.expertReviews.find(expert => expert.isChief);
      return chiefExpert
@@ -693,7 +700,7 @@
        return "danger";
      }
    },
    // 是否可以发送给普通专家
    // 是否可以发送给专家
    canSendToNormalExperts() {
      return (
        this.expertReviews.filter(
@@ -701,7 +708,7 @@
        ).length > 0
      );
    },
    // 是否可以发送给主任专家(需要至少12个普通专家同意)
    // 是否可以发送给主委专家(需要至少12个专家同意)
    canSendToChiefExpert() {
      return (
        this.approvedNormalExperts >= 12 &&
@@ -766,7 +773,7 @@
      // 模拟数据 - 实际项目中从接口获取
      setTimeout(() => {
        this.expertReviews = [
          // 普通专家(18位)
          // 专家(18位)
          {
            id: 1,
            expertName: "张教授",
@@ -774,7 +781,7 @@
            reviewStatus: "submitted",
            expertConclusion: "approved",
            expertOpinion: "符合伦理要求",
            reviewTime: "2023-12-01 10:30:00"
            reviewTime: "2025-12-01 10:30:00"
          },
          {
            id: 2,
@@ -783,7 +790,7 @@
            reviewStatus: "submitted",
            expertConclusion: "approved",
            expertOpinion: "方案设计合理",
            reviewTime: "2023-12-01 11:20:00"
            reviewTime: "2025-12-01 11:20:00"
          },
          {
            id: 3,
@@ -794,10 +801,10 @@
            expertOpinion: "",
            reviewTime: ""
          },
          // 主任专家(1位)
          // 主委专家(1位)
          {
            id: 19,
            expertName: "赵主任",
            expertName: "赵主委",
            isChief: true,
            reviewStatus: "applying",
            expertConclusion: "",
@@ -896,7 +903,7 @@
      this.sendDialogVisible = true;
    },
    // 发送给普通专家
    // 发送给专家
    handleSendToNormalExperts() {
      const normalExperts = this.expertReviews.filter(
        expert => !expert.isChief && expert.reviewStatus === "applying"
@@ -906,7 +913,7 @@
      this.sendDialogVisible = true;
    },
    // 发送给主任专家
    // 发送给主委专家
    handleSendToChiefExpert() {
      const chiefExpert = this.expertReviews.find(
        expert => expert.isChief && expert.reviewStatus === "applying"
@@ -1023,7 +1030,7 @@
        <div>
          <p><strong>专家姓名:</strong>${expert.expertName}</p>
          <p><strong>专家类型:</strong>${
            expert.isChief ? "主任专家" : "普通专家"
            expert.isChief ? "主委专家" : "专家"
          }</p>
          <p><strong>审查状态:</strong>${this.statusTextFilter(
            expert.reviewStatus
@@ -1515,7 +1522,7 @@
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
/* 主任专家行高亮 */
/* 主委专家行高亮 */
:deep(.chief-expert-row) {
  background-color: #fff7e6 !important;
}