WXL (wul)
3 天以前 5df476ae693d7577c7a0031ae12c67558b9832a7
src/views/followvisit/record/detailpage/index.vue
@@ -336,7 +336,9 @@
            v-if="
              (orgname == '南华大学附属第一医院' ||
                orgname == '丽水市第二人民医院' ||
                orgname == '缙云县人民医院') &&
                orgname == '缙云县人民医院'||
                orgname == '丽水市妇幼保健院'||
                orgname == '松阳县中医医院') &&
              !Voicetype
            "
          >
@@ -368,7 +370,7 @@
            <div>随访内容</div>
          </div>
          <div>
            <el-tabs v-model="activeName" type="border-card">
            <el-tabs v-model="activeName" type="card">
              <el-tab-pane name="wj">
                <span class="mulsz" slot="label"
                  ><i class="el-icon-notebook-1"></i> 问卷随访结果</span
@@ -388,7 +390,7 @@
                    </span>
                  </div>
                  <div class="preview-left" v-if="!Voicetype">
                  <div class="preview-left" v-if="showQuestionnaireForm">
                    <div
                      class="topic-dev"
                      v-for="(item, index) in tableDatatop"
@@ -599,12 +601,12 @@
                    </div>
                  </div>
                  <el-button
                    v-if="Voicetype"
                    v-if="showQuestionnaireForm"
                    type="primary"
                    @click="yuyingetdetail"
                    @click="getdetail"
                    >保存问卷详情</el-button
                  >
                  <el-button v-else type="primary" @click="getdetail"
                  <el-button v-else type="primary" @click="yuyingetdetail"
                    >保存问卷详情</el-button
                  >
                </div>
@@ -704,6 +706,15 @@
                  v-if="(form.isVisitAgain == 1) & (visitAgain == 2)"
                >
                  再次随访
                </el-button>
                <!-- 超时服务:管理员可将完成时间改为应随访时间、状态改为已完成 -->
                <el-button
                  type="danger"
                  plain
                  @click="handleTimeoutComplete"
                  v-if="form.sendstate == 7 && isAdmin"
                >
                  超时标记已完成
                </el-button>
              </div>
@@ -984,106 +995,79 @@
            </el-form>
          </div>
          <!-- 患者档案信息 -->
          <div class="detailed">
            <h3>患者档案信息</h3>
            <el-form ref="userform" :model="userform" label-width="100px">
              <el-row :gutter="20">
                <el-col :span="12">
                  <el-form-item label="患者姓名" prop="name">
                    <el-input
                      v-model="userform.name"
                      placeholder="请输入姓名"
                      maxlength="30"
                    ></el-input>
                  </el-form-item>
                </el-col>
              </el-row>
              <el-row :gutter="20">
                <el-col :span="12">
                  <el-form-item label="性别" prop="sex">
                    <el-select v-model="userform.sex" placeholder="请选择">
                      <el-option label="男" :value="1"> </el-option>
                      <el-option label="女" :value="2"> </el-option>
                    </el-select>
                  </el-form-item>
                </el-col>
                <el-col :span="12">
                  <el-form-item label="年龄" prop="age">
                    <el-input
                      v-model="userform.age"
                      placeholder="请输入年龄"
                      maxlength="20"
                    ></el-input>
                  </el-form-item>
                </el-col>
              </el-row>
              <el-row :gutter="20">
                <el-col :span="12">
                  <el-form-item label="联系方式" prop="telcode">
                    <el-input
                      v-model="userform.telcode"
                      placeholder="请输入联系方式"
                      maxlength="20"
                    />
                  </el-form-item>
                </el-col>
                <el-col :span="12">
                  <el-form-item label="亲属联系方式" prop="relativetelcode">
                    <el-input
                      v-model="userform.relativetelcode"
                      placeholder="请输入亲属联系方式"
                      maxlength="20"
                    ></el-input>
                  </el-form-item>
                </el-col>
              </el-row>
              <el-row :gutter="20">
                <el-col :span="24">
                  <el-form-item label="诊断名称" prop="leavediagname">
                    <el-input
                      v-model="form.leavediagname"
                      placeholder="请输入诊断"
                      maxlength="50"
                    ></el-input>
                  </el-form-item>
                </el-col>
              </el-row>
              <el-row :gutter="20">
                <el-col :span="24">
                  <el-form-item label="出生地" prop="birthplace">
                    <el-input
                      v-model="userform.birthplace"
                      placeholder="国、省、地市、区县、街道等详细信息"
                      maxlength="50"
                    />
                  </el-form-item>
                </el-col>
              </el-row>
              <el-row :gutter="20">
                <el-col :span="24">
                  <el-form-item label="居住地" prop="placeOfResidence">
                    <el-input
                      v-model="userform.placeOfResidence"
                      placeholder="国、省、地市、区县、街道等详细信息"
                      maxlength="50"
                    />
                  </el-form-item>
                </el-col>
              </el-row>
            </el-form>
          <!-- 折叠面板:患者档案信息 + 投诉建议 -->
          <div class="collapse-section">
            <el-collapse v-model="collapseActive" accordion>
              <el-collapse-item title="患者档案信息" name="patient">
                <el-form ref="userform2" :model="userform" label-width="90px" size="small">
                  <el-row :gutter="16">
                    <el-col :span="12">
                      <el-form-item label="患者姓名">
                        <el-input v-model="userform.name" placeholder="请输入姓名" maxlength="30"></el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="性别">
                        <el-select v-model="userform.sex" placeholder="请选择" style="width: 100%">
                          <el-option label="男" :value="1"></el-option>
                          <el-option label="女" :value="2"></el-option>
                        </el-select>
                      </el-form-item>
                    </el-col>
                  </el-row>
                  <el-row :gutter="16">
                    <el-col :span="12">
                      <el-form-item label="年龄">
                        <el-input v-model="userform.age" placeholder="请输入年龄" maxlength="20"></el-input>
                      </el-form-item>
                    </el-col>
                    <el-col :span="12">
                      <el-form-item label="联系方式">
                        <el-input v-model="userform.telcode" placeholder="请输入联系方式" maxlength="20"></el-input>
                      </el-form-item>
                    </el-col>
                  </el-row>
                  <el-row :gutter="16">
                    <el-col :span="24">
                      <el-form-item label="亲属电话">
                        <el-input v-model="userform.relativetelcode" placeholder="请输入亲属联系方式" maxlength="20"></el-input>
                      </el-form-item>
                    </el-col>
                  </el-row>
                  <el-row :gutter="16">
                    <el-col :span="24">
                      <el-form-item label="诊断名称">
                        <el-input v-model="form.leavediagname" placeholder="请输入诊断" maxlength="50"></el-input>
                      </el-form-item>
                    </el-col>
                  </el-row>
                  <el-row :gutter="16">
                    <el-col :span="24">
                      <el-form-item label="出生地">
                        <el-input v-model="userform.birthplace" placeholder="国、省、地市、区县、街道等" maxlength="50"></el-input>
                      </el-form-item>
                    </el-col>
                  </el-row>
                  <el-row :gutter="16">
                    <el-col :span="24">
                      <el-form-item label="居住地">
                        <el-input v-model="userform.placeOfResidence" placeholder="国、省、地市、区县、街道等" maxlength="50"></el-input>
                      </el-form-item>
                    </el-col>
                  </el-row>
                </el-form>
              </el-collapse-item>
              <el-collapse-item title="投诉建议" name="advice" v-if="orgname=='缙云县人民医院'">
                <AdviceList :subid="taskid" :taskid="id" :patid="patid" />
              </el-collapse-item>
            </el-collapse>
          </div>
        </div>
      </div>
    </div>
    <!-- 投诉建议 -->
    <el-card class="advice-card">
      <div slot="header" class="clearfix">
        <span class="detail-title">投诉建议</span>
      </div>
      <AdviceList :subid="taskid" :taskid="id" :patid="patid" />
    </el-card>
    <!-- 短信发送对话框 -->
    <el-dialog title="短信发送" :visible.sync="smsDialogVisible">
      <!-- 注意这里使用了 smsDialogVisible 以区分已有的 dialogFormVisible -->
@@ -1420,6 +1404,7 @@
    return {
      visitAgain: 1,
      activeNames: ["next"], // 只展开"下次随访",其他都折叠
      collapseActive: ["patient"], // 人工处理折叠面板激活项(默认展开患者档案)
      userid: "",
      defaultKey: false, //是否可默认填报
      currentPhoneNumber: "",
@@ -1682,6 +1667,15 @@
        failed: "error",
      };
      return typeMap[this.callStatus];
    },
    // 是否以问卷形式展示(非语音服务,或语音服务但无完整语音数据需手动填报)
    showQuestionnaireForm() {
      return !this.Voicetype ;
    },
    // 是否为管理员角色
    isAdmin() {
      const roles = this.$store.getters.roles || [];
      return roles.includes("admin") || roles.includes("sysadmin");
    },
  },
  created() {
@@ -2017,7 +2011,7 @@
        if (res.code == 200) {
          this.voiceDatatop = res.data.serviceSubtaskDetails;
          this.voice = res.data.voice;
          this.activeName = "yy";
          this.activeName = this.voice ? "yy" : "wj";
          this.taskname = res.data.taskName;
          // 问卷展示数据处理
          this.tableDatatop = res.data.filteredDetails;
@@ -2052,9 +2046,13 @@
                .map((obj) => obj.targetvalue)
                .join("&");
            }
            console.log(item.targetvalue,'item.targetvalue');
            if (item.targetvalue) {
              item.scriptResult = item.targetvalue.split("&");
            }
            console.log(item.scriptResult);
          });
        }
      });
@@ -2600,6 +2598,36 @@
          });
        }
      });
    },
    // 超时服务:管理员将完成时间改为应随访时间、状态改为已完成
    handleTimeoutComplete() {
      this.$modal
        .confirm(
          "是否将该超时服务的随访完成时间调整为应随访时间,并将随访状态改为已完成?"
        )
        .then(() => {
          getTaskservelist({
            patid: this.patid,
            subId: this.id,
          }).then((res) => {
            if (res.code == 200) {
              const objson = res.rows[0].serviceSubtaskList.find(
                (item) => item.id == this.id
              );
              if (objson) {
                objson.finishtime = objson.visitTime;
                objson.sendstate = 6;
                Editsingletaskson(objson).then((res) => {
                  if (res.code) {
                    this.$modal.msgSuccess("操作成功");
                    this.getTaskservelist();
                  }
                });
              }
            }
          });
        })
        .catch(() => {});
    },
    alterpatient(sendstate) {
      this.Editsingletasksonyic(this.serviceStates);
@@ -4155,12 +4183,57 @@
  background-color: #fff;
}
.advice-card {
  margin: 0 10px 20px 10px;
  .detail-title {
    font-size: 16px;
    font-weight: 600;
    color: #303133;
.collapse-section {
  width: 100%;
  align-self: stretch;
  margin-top: 10px;
  ::v-deep .el-collapse {
    border: none;
    .el-collapse-item__header {
      background: linear-gradient(135deg, #ecf5ff 0%, #f5f9ff 100%);
      border-radius: 8px;
      padding: 0 20px;
      height: 48px;
      font-size: 16px;
      font-weight: 700;
      color: #303133;
      border-bottom: 1px solid #e4e7ed;
      margin-bottom: 8px;
      letter-spacing: 1px;
      .el-collapse-item__arrow {
        font-size: 16px;
        color: #409eff;
      }
      &:hover {
        background: linear-gradient(135deg, #e0efff 0%, #ecf5ff 100%);
      }
      &.is-active {
        border-bottom-color: transparent;
        color: #409eff;
      }
    }
    .el-collapse-item__wrap {
      border-bottom: none;
      padding: 4px 2px 8px;
    }
    .el-collapse-item__content {
      padding: 16px;
      background: #fff;
      border-radius: 8px;
      border: 1px solid #ebeef5;
      box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
    }
  }
  .el-form-item {
    margin-bottom: 12px;
  }
}
</style>