WXL
3 天以前 dc082351978a1e9f75d7a1471a0ca7ebeac552a5
src/views/project/donatebaseinfo/index.vue
@@ -10,7 +10,7 @@
    >
      <el-row :gutter="8">
        <el-col :span="5">
          <el-form-item label="捐献者姓名" prop="name">
          <el-form-item label="姓名" prop="name">
            <el-input
              v-model="queryParams.name"
              placeholder="请输入姓名"
@@ -21,7 +21,7 @@
          </el-form-item>
        </el-col>
        <el-col :span="5">
          <el-form-item label="首诊医院" prop="treatmenthospitalname">
          <el-form-item label="报告医院" prop="treatmenthospitalname">
            <org-selecter
              ref="orgSelecter"
              :org-type="'3'"
@@ -30,7 +30,7 @@
          </el-form-item>
        </el-col>
        <el-col :span="9">
          <el-form-item label="上报时间">
          <el-form-item label="报告时间">
            <el-date-picker
              style="width: 100%"
              v-model="selecttime"
@@ -89,6 +89,7 @@
      border
      :default-sort="{ prop: 'donatetime', order: 'descending' }"
    >
      <el-table-column label="姓名" align="center" prop="name" width="100" />
      <el-table-column
        label="案例时间"
        align="center"
@@ -100,12 +101,41 @@
        </template>
      </el-table-column>
      <el-table-column
        label="案例编号"
        label="住院号"
        align="center"
        prop="caseNo"
        prop="inpatientno"
        width="200"
      />
      <el-table-column label="捐献者姓名" align="center" prop="name" width="100" />
      <el-table-column
        label="捐献进度"
        align="center"
        prop="workflow"
        width="120"
      >
        <template slot-scope="scope">
          <div v-if="!scope.row.terminationCase">
            <dict-tag
              :options="dict.type.sys_donornode"
              :value="scope.row.workflow"
            />
          </div>
          <div v-else><el-button type="danger" plain>任务终止</el-button></div>
        </template>
      </el-table-column>
      <el-table-column
        label="捐献类别"
        align="center"
        prop="donationcategory"
        width="150"
      >
        <template slot-scope="scope">
          <dict-tag
            :options="dict.type.sys_DonationCategory"
            :value="scope.row.donationcategory"
          />
        </template>
      </el-table-column>
      <el-table-column label="性别" align="center" prop="sex" width="100">
        <template slot-scope="scope">
          <dict-tag
@@ -130,11 +160,11 @@
        </template>
      </el-table-column>
      <el-table-column
        label="首诊医院"
        label="GCS评分"
        align="center"
        prop="treatmenthospitalname"
        prop="gcsScore"
        width="100"
      />
      <el-table-column label="GCS评分" align="center" prop="gcsScore" />
      <el-table-column label="血型" align="center" prop="bloodtype" width="100">
        <template slot-scope="scope">
          <dict-tag
@@ -143,44 +173,24 @@
          />
        </template>
      </el-table-column>
      <el-table-column
        label="捐献类别"
        align="center"
        prop="donationcategory"
        width="150"
      >
      <el-table-column label="传染病" align="center" prop="infectious">
        <template slot-scope="scope">
          <dict-tag
            :options="dict.type.sys_DonationCategory"
            :value="scope.row.donationcategory"
          />
          <span v-for="item in scope.row.infectious.split(',')"
            ><dict-tag :options="dict.type.sys_Infectious" :value="item" />
          </span>
        </template>
      </el-table-column>
      <el-table-column label="疾病诊断" align="center" prop="diagnosisname" />
      <el-table-column
        label="报告人"
        label="协调员"
        align="center"
        prop="reportername"
        prop="coordinatorName"
        width="100"
      />
      <el-table-column
        label="捐献进度"
        align="center"
        prop="workflow"
        width="120"
      >
        <template slot-scope="scope">
          <div v-if="!scope.row.terminationCase">
            <dict-tag
              :options="dict.type.sys_donornode"
              :value="scope.row.workflow"
            />
          </div>
          <div v-else><el-button type="danger" plain>任务终止</el-button></div>
        </template>
      </el-table-column>
      <el-table-column
        label="操作"
        width="190"
        width="220"
        align="center"
        class-name="small-padding fixed-width"
        fixed="right"
@@ -195,14 +205,29 @@
          >
            详情
          </el-button>
          <el-button
            size="mini"
            type="text"
            icon="el-icon-edit"
            @click="handleOpenEdit(scope.row)"
            v-hasPermi="['project:donatebaseinfo:edit']"
            >编辑</el-button
            v-if="scope.row.recordstate !== '4'"
          >
            编辑
          </el-button>
          <!-- ✅ 新增:归档按钮 -->
          <el-button
            size="mini"
            type="text"
            style="color:#E6A23C;"
            @click="handleArchive(scope.row)"
            v-if="scope.row.recordstate !== '4'"
          >
            归档
          </el-button>
          <el-button
            size="mini"
            type="text"
@@ -214,6 +239,7 @@
          >
            终止
          </el-button>
          <el-button
            size="mini"
            type="text"
@@ -261,7 +287,8 @@
import {
  listDonatebaseinfo,
  addDonatebaseinfo,
  exportDonatebaseinfo
  exportDonatebaseinfo,
  updateDonatebaseinfo
} from "@/api/project/donatebaseinfo";
import Li_area_select from "@/components/Address";
import OrgSelecter from "@/views/project/components/orgselect";
@@ -278,6 +305,7 @@
  dicts: [
    "sys_user_sex",
    "sys_BloodType",
    "sys_Infectious",
    "sys_DonationCategory",
    "sys_donornode"
  ],
@@ -345,7 +373,7 @@
          { required: true, message: "请选择出生日期", trigger: "blur" }
        ],
        treatmenthospitalno: [
          { required: true, message: "请选择首诊医院", trigger: "blur" }
          { required: true, message: "请选择上报医院", trigger: "blur" }
        ],
        bloodtype: [
          { required: true, message: "请选择ABO血型", trigger: "blur" }
@@ -446,7 +474,52 @@
      this.currentRecord = { ...row };
      this.modalVisible = { ...this.modalVisible, restore: true };
    },
    /** 归档 */
    handleArchive(row) {
      this.$confirm("确认将该案例归档?归档后将不可编辑。", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(async () => {
          try {
            const res = await updateDonatebaseinfo({
              id: row.id,
              recordstate: "4",
              filingtime: this.getCurrentTime()
            });
            if (res.code === 200) {
              this.$modal.msgSuccess("归档成功");
              this.getList();
            } else {
              this.$modal.msgError(res.msg || "归档失败");
            }
          } catch (err) {
            this.$modal.msgError("操作失败");
          }
        })
        .catch(() => {});
    },
    // 获取当前时间
    getCurrentTime() {
      const now = new Date();
      return `${now.getFullYear()}-${(now.getMonth() + 1)
        .toString()
        .padStart(2, "0")}-${now
        .getDate()
        .toString()
        .padStart(2, "0")} ${now
        .getHours()
        .toString()
        .padStart(2, "0")}:${now
        .getMinutes()
        .toString()
        .padStart(2, "0")}:${now
        .getSeconds()
        .toString()
        .padStart(2, "0")}`;
    },
    getTimeList() {
      if (!this.selecttime) {
        // this.queryParams.starttime = "1998-01-01 00:00:00";
@@ -532,12 +605,13 @@
        this.loading = false;
      }
    },
    /** 打开编辑弹窗 */
    handleOpenEdit(row) {
      // 确保在打开弹框前重置currentEditData
      this.currentEditData = {};
      if (row.recordstate === "4") {
        this.$modal.msgWarning("归档案例不可编辑");
        return;
      }
      // 使用$nextTick确保DOM更新完成
      this.currentEditData = {};
      this.$nextTick(() => {
        this.currentEditData = { ...row };
        this.editModalVisible = true;