WXL (wul)
2 天以前 5df476ae693d7577c7a0031ae12c67558b9832a7
测试完成
已修改18个文件
已添加3个文件
534 ■■■■ 文件已修改
src/views/SatisfactionRelay.vue 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/Continue/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/beHospitalized/followUp.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/discharge/index copy.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/discharge/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/discharge/index.vue.bak 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/mzsatisfaction/index.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/operation/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/record/detailpage/index.vue 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/record/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/tasklist/index.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/followvisit/zysatisfaction/index.vue 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/loginSSO.vue 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/patient/ExternalPatient.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/propaganda/QuestionnaireTask.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/questionnaire/index.vue 121 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/patient/ycquestionnaire/index.vue 164 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
随访通用.zip 补丁 | 查看 | 原始文档 | blame | 历史
随访通用9.10.zip 补丁 | 查看 | 原始文档 | blame | 历史
随访通用9.11.zip 补丁 | 查看 | 原始文档 | blame | 历史
src/views/SatisfactionRelay.vue
@@ -20,10 +20,10 @@
</template>
<script>
import { scanGenerateSubtask } from '@/api/AiCentre/index';
import { scanGenerateSubtask } from "@/api/AiCentre/index";
export default {
  name: 'RelayPage',
  name: "RelayPage",
  created() {
    this.handleRedirect();
  },
@@ -31,28 +31,32 @@
    handleRedirect() {
      const { taskid, deptcode, leaveldeptcodes } = this.$route.query;
      if (!taskid) {
        this.$message.error('缺少任务标识,请重新扫码');
        this.$message.error("缺少任务标识,请重新扫码");
        return;
      }
      const params = {
        taskid: taskid,
        deptcode: deptcode ,
        leaveldeptcodes: leaveldeptcodes
        leaveldeptcodes: leaveldeptcodes,
      };
      scanGenerateSubtask(params).then(res => {
      scanGenerateSubtask(params)
        .then((res) => {
          console.log(res,'初始');
        if (res.code == 200 ) {
          console.log(res.msg);
          window.location.href = res.msg;
            console.log("window后");
        } else {
          this.$message.error('获取问卷链接失败:' + (res.msg || '未知错误'));
            this.$message.error("获取问卷链接失败:" + (res.msg || "未知错误"));
        }
      }).catch(err => {
        })
        .catch((err) => {
        console.error(err);
        this.$message.error('服务异常,请稍后重试');
          this.$message.error("服务异常,请稍后重试");
      });
    }
  }
    },
  },
};
</script>
@@ -66,7 +70,8 @@
  margin: 0;
  padding: 20px;
  background: linear-gradient(145deg, #f5f9ff 0%, #e8f0fe 100%);
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
    "Helvetica Neue", Arial, sans-serif;
}
/* å¡ç‰‡å®¹å™¨ */
@@ -96,14 +101,14 @@
.spinner-dot {
  width: 14px;
  height: 14px;
  background: #409EFF;
  background: #409eff;
  border-radius: 50%;
  animation: bounce 1.4s infinite ease-in-out both;
}
.spinner-dot:nth-child(1) {
  animation-delay: -0.32s;
  background: #409EFF;
  background: #409eff;
}
.spinner-dot:nth-child(2) {
@@ -117,7 +122,9 @@
}
@keyframes bounce {
  0%, 80%, 100% {
  0%,
  80%,
  100% {
    transform: scale(0.6);
    opacity: 0.4;
  }
@@ -157,14 +164,20 @@
.progress-fill {
  width: 60%;
  height: 100%;
  background: linear-gradient(90deg, #409EFF, #79bbff);
  background: linear-gradient(90deg, #409eff, #79bbff);
  border-radius: 4px;
  animation: progressMove 1.8s ease-in-out infinite alternate;
}
@keyframes progressMove {
  0% { transform: translateX(-10%); width: 40%; }
  100% { transform: translateX(10%); width: 80%; }
  0% {
    transform: translateX(-10%);
    width: 40%;
  }
  100% {
    transform: translateX(10%);
    width: 80%;
  }
}
/* ç§»åŠ¨ç«¯é€‚é… */
src/views/followvisit/Continue/index.vue
@@ -1371,7 +1371,7 @@
        this.topqueryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
      }
      if (this.endOut == 0) {
      if (this.endOut == 0 && !this.topqueryParams.endSendDateTime) {
        this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
          this.getEndOfDay()
        );
src/views/followvisit/beHospitalized/followUp.vue
@@ -1609,7 +1609,7 @@
        this.topqueryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
      }
      if (this.endOut == 0) {
      if (this.endOut == 0 && !this.topqueryParams.endSendDateTime) {
        this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
          this.getEndOfDay()
        );
src/views/followvisit/discharge/index copy.vue
@@ -1198,7 +1198,7 @@
        this.topqueryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
      }
      if (this.endOut == 0) {
      if (this.endOut == 0 && !this.topqueryParams.endSendDateTime) {
        this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
          this.getEndOfDay()
        );
src/views/followvisit/discharge/index.vue
@@ -1546,7 +1546,7 @@
    async getList(refresh) {
      // é»˜è®¤å…¨éƒ¨
      this.applyDeptWardScope();
      if (this.endOut == 0) {
      if (this.endOut == 0 && !this.topqueryParams.endSendDateTime) {
        this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
          this.getEndOfDay()
        );
src/views/followvisit/discharge/index.vue.bak
@@ -1567,7 +1567,7 @@
        this.topqueryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
      }
      if (this.endOut == 0) {
      if (this.endOut == 0 && !this.topqueryParams.endSendDateTime) {
        this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
          this.getEndOfDay()
        );
src/views/followvisit/mzsatisfaction/index.vue
@@ -15,7 +15,7 @@
        v-show="showSearch"
        label-width="98px"
      >
        <el-form-item label="出院时间">
        <el-form-item label="完成时间">
          <el-date-picker
            v-model="dateRange"
            style="width: 240px"
@@ -1504,10 +1504,9 @@
          store.getters.belongWards.map((obj) => obj.districtCode);
      }
      this.topqueryParams.pageNum = 1;
      this.topqueryParams.startOutHospTime = this.dateRange[0];
      this.topqueryParams.endOutHospTime = this.dateRange[1];
      this.topqueryParams.startSendDateTime = this.dateRangefs[0];
      this.topqueryParams.endSendDateTime = this.dateRangefs[1];
      this.topqueryParams.finishtimeStart = this.dateRange[0];
      this.topqueryParams.finishtimeEnd = this.dateRange[1];
      this.getList(refresh);
    },
    // æ‚£è€…范围处理
src/views/followvisit/operation/index.vue
@@ -1536,7 +1536,7 @@
        this.topqueryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
      }
      if (this.endOut == 0) {
      if (this.endOut == 0 && !this.topqueryParams.endSendDateTime) {
        this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
          this.getEndOfDay()
        );
src/views/followvisit/record/detailpage/index.vue
@@ -390,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"
@@ -601,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>
@@ -706,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>
@@ -1659,6 +1668,15 @@
      };
      return typeMap[this.callStatus];
    },
    // æ˜¯å¦ä»¥é—®å·å½¢å¼å±•示(非语音服务,或语音服务但无完整语音数据需手动填报)
    showQuestionnaireForm() {
      return !this.Voicetype ;
    },
    // æ˜¯å¦ä¸ºç®¡ç†å‘˜è§’色
    isAdmin() {
      const roles = this.$store.getters.roles || [];
      return roles.includes("admin") || roles.includes("sysadmin");
    },
  },
  created() {
    this.taskid = this.$route.query.taskid;
@@ -1993,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;
@@ -2028,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);
          });
        }
      });
@@ -2577,6 +2599,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);
      // alterpatient(this.userform).then((res) => {
src/views/followvisit/record/index.vue
@@ -1084,7 +1084,7 @@
        this.topqueryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
      }
      if (this.endOut == 0) {
      if (this.endOut == 0 && !this.topqueryParams.endSendDateTime) {
        this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
          this.getEndOfDay()
        );
src/views/followvisit/tasklist/index.vue
@@ -697,6 +697,7 @@
        this.tasktopic == 3 ||
        this.tasktopic == 1 ||
        this.tasktopic == 7 ||
        this.tasktopic == 20 ||
        this.tasktopic == 5 ||
        this.tasktopic == 18 ||
        this.tasktopic == 19 ||
src/views/followvisit/zysatisfaction/index.vue
@@ -15,7 +15,7 @@
        v-show="showSearch"
        label-width="98px"
      >
        <el-form-item label="出院时间">
        <!-- <el-form-item label="出院时间">
          <el-date-picker
            v-model="dateRange"
            style="width: 240px"
@@ -25,8 +25,19 @@
            start-placeholder="开始日期"
            end-placeholder="结束日期"
          ></el-date-picker>
        </el-form-item>
        </el-form-item> -->
        <el-form-item label="完成时间">
          <el-date-picker
            v-model="dateRangefs"
            style="width: 240px"
            value-format="yyyy-MM-dd"
            type="daterange"
            range-separator="-"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
          ></el-date-picker>
        </el-form-item>
        <el-form-item label="患者姓名" prop="sendname">
          <el-input
            v-model="topqueryParams.sendname"
@@ -1330,13 +1341,17 @@
      }
    },
    affiliation() {
      this.resetQuerykj();
      this.topqueryParams.managementDoctorCode = store.getters.hisUserId;
      this.getList(1);
    },
    onthatday() {
      this.topqueryParams.startSendDateTime = this.getCurrentDate();
      this.topqueryParams.endSendDateTime = this.getCurrentDate();
      this.resetQuerykj();
      this.topqueryParams.finishtimeStart = this.getCurrentDate();
      this.topqueryParams.finishtimeEnd = this.getCurrentDate();
      this.getList(1);
    },
    getCurrentDate() {
@@ -1467,10 +1482,10 @@
          store.getters.belongWards.map((obj) => obj.districtCode);
      }
      this.topqueryParams.pageNum = 1;
      this.topqueryParams.startOutHospTime = this.dateRange[0];
      this.topqueryParams.endOutHospTime = this.dateRange[1];
      this.topqueryParams.startSendDateTime = this.dateRangefs[0];
      this.topqueryParams.endSendDateTime = this.dateRangefs[1];
      // this.topqueryParams.startOutHospTime = this.dateRange[0];
      // this.topqueryParams.endOutHospTime = this.dateRange[1];
      this.topqueryParams.finishtimeStart = this.dateRangefs[0];
      this.topqueryParams.finishtimeEnd = this.dateRangefs[1];
      this.getList(refresh);
    },
    // æ‚£è€…范围处理
@@ -1511,6 +1526,26 @@
      };
      this.handleQuery(1);
    },
    /** é‡ç½®æŒ‰é’®æ“ä½œ */
    resetQuerykj() {
      this.dateRange = [];
      this.dateRangefs = [];
      this.serviceStatusValue = null;
      this.topqueryParams = {
        pageNum: 1,
        pageSize: 10,
        sendstate: null,
        sendstateView: null,
        sort: 2, //0 å‡ºé™¢æ—¶é—´(正序)    1 å‡ºé™¢æ—¶é—´(倒序)   2 å‘送时间(正序)    3 å‘送时间(倒序)
        serviceType: 6,
        searchscope: 3,
        visitCount: 1,
        scopetype: [],
        leaveldeptcodes: [],
        leavehospitaldistrictcodes: [],
      };
    },
    handleSelectionChange(rows) {
      this.selectedRows = rows.map((row) => {
        // åˆå§‹åŒ–评分字段
src/views/loginSSO.vue
@@ -149,8 +149,20 @@
        // 3. æ¸…理旧系统数据
        this.clearOldSystemData();
        const { token, orgid, orgname, ZuHuID, deptCode, redirect, campusid } =
          params;
        const {
          token,
          orgid,
          orgname,
          ZuHuID,
          deptCode,
          redirect,
          campusid,
          taskid,
          patid,
          id,
          Voicetype,
          visitCount,
        } = params;
        console.log(
          token,
          orgid,
@@ -204,9 +216,21 @@
        // 7. å¤„理重定向路径
        let redirectPath = "/followvisit/discharge";
        let redirectQuery = {};
        if (redirect) {
          // è§£ç ä¼ å…¥çš„重定向路径
        // 7.1 å¦‚果存在 taskid,优先跳转到详情页并带上参数
        if (taskid) {
          redirectPath = "/followvisit/record/detailpage";
          redirectQuery = {
            taskid: taskid,
            patid: patid || "",
            id: id || "",
            Voicetype: Voicetype || "",
            visitCount: visitCount || "",
          };
          console.log("使用taskid跳转到详情页:", redirectPath, redirectQuery);
        } else if (redirect) {
          // 7.2 å¦‚果传入的redirect存在,使用传入的重定向路径
          try {
            redirectPath = decodeURIComponent(redirect);
            console.log("使用传入的重定向路径:", redirectPath);
@@ -215,6 +239,7 @@
            redirectPath = this.getDefaultRedirectPath();
          }
        } else {
          // 7.3 ä½¿ç”¨é»˜è®¤è·¯å¾„
          redirectPath = this.getDefaultRedirectPath();
        }
@@ -224,11 +249,11 @@
        // 9. å»¶è¿Ÿè·³è½¬ï¼Œç¡®ä¿çŠ¶æ€å·²æ›´æ–°
        setTimeout(() => {
          this.loadingDetail = "跳转到目标页面...";
          console.log("准备跳转到:", redirectPath);
          console.log("准备跳转到:", redirectPath, "参数:", redirectQuery);
          // âœ… ä½¿ç”¨ push è€Œä¸æ˜¯ replace,保留历史记录
          this.$router
            .push({ path: redirectPath })
            .push({ path: redirectPath, query: redirectQuery })
            .then(() => {
              console.log("SSO登录成功,跳转完成");
            })
src/views/patient/patient/ExternalPatient.vue
@@ -122,12 +122,12 @@
              <el-table-column
                fixed
                label="姓名"
          width="100"
                align="center"
                key="name"
                prop="name"
              />
              <el-table-column label="性别"width="100" align="center" key="sex" prop="sex">
              <el-table-column label="性别" align="center" key="sex" prop="sex">
                <template slot-scope="scope">
                  <span>{{ scope.row.sex == 1 ? "男" : "女" }}</span>
                </template>
@@ -137,14 +137,14 @@
                align="center"
                key="age"
                prop="age"
                width="60"
              />
              <el-table-column
                label="出生年月"
                align="center"
                key="birthdate"
                prop="birthdate"
                width="120"
              >
              </el-table-column>
              <el-table-column
@@ -152,7 +152,7 @@
                align="center"
                key="idcardno"
                prop="idcardno"
                width="190"
              />
              <el-table-column
@@ -160,7 +160,7 @@
                align="center"
                key="telcode"
                prop="telcode"
                width="120"
              />
              <el-table-column
                label="建档日期"
@@ -266,7 +266,7 @@
          label="总任务/已随访"
          align="center"
          key="nickName"
          width="120"
          prop="nickName"
        >
          <template slot-scope="scope">
@@ -282,7 +282,7 @@
            align="center"
            key="createBy"
            prop="createBy"
            width="120"
            :show-overflow-tooltip="true"
          />
          <el-table-column
@@ -302,7 +302,7 @@
            align="center"
            key="sendState"
            prop="sendState"
            width="120"
          >
            <template slot-scope="scope">
              <dict-tag
src/views/patient/propaganda/QuestionnaireTask.vue
@@ -2836,10 +2836,10 @@
        this.form.serviceType = this.serviceType;
        this.form.icd10code = this.diagglist
          .map((item) => item.icdcode)
          .map((item) => item.icd10code || item.icdcode)
          .join(",");
        this.form.icd10name = this.diagglist
          .map((item) => item.icdname)
          .map((item) => item.icdname || item.icd10name)
          .join(",");
        // ç–¾ç—…/手术/药品关联的科室/病区校验
        if (
src/views/patient/questionnaire/index.vue
@@ -64,9 +64,8 @@
    </div> -->
    <statistics-cards
      :cardlist="cardlist"
      :ycvalue="ycvalue"
      :jgvalue="jgvalue"
      :show-warning-condition="orgname == '省立同德翠苑院区'"
      :show-extra="false"
      :show-warning-condition="false"
    />
    <el-row :gutter="20">
      <!--用户数据-->
@@ -258,7 +257,54 @@
          key="remark"
          prop="remark" -->
        />
<el-table-column
          label="任务状态"
          align="center"
          key="sendstate"
          prop="sendstate"
          width="120"
        >
          <template slot-scope="scope">
            <el-tooltip
              class="item"
              effect="dark"
              :content="scope.row.remark"
              placement="top-start"
            >
              <div v-if="scope.row.sendstate == 1">
                <el-tag type="primary" :disable-transitions="false"
                  >表单已领取</el-tag
                >
              </div>
              <div v-if="scope.row.sendstate == 2">
                <el-tag type="primary" :disable-transitions="false"
                  >待随访</el-tag
                >
              </div>
              <div v-if="scope.row.sendstate == 3">
                <el-tag type="success" :disable-transitions="false"
                  >表单已发送</el-tag
                >
              </div>
              <div v-if="scope.row.sendstate == 4">
                <el-tag type="info" :disable-transitions="false">不执行</el-tag>
              </div>
              <div v-if="scope.row.sendstate == 5">
                <el-tag type="danger" :disable-transitions="false"
                  >发送失败</el-tag
                >
              </div>
              <div v-if="scope.row.sendstate == 6">
                <el-tag type="success" :disable-transitions="false"
                  >已完成</el-tag
                >
              </div>
              <div v-if="scope.row.sendstate == 7">
                <el-tag type="danger" :disable-transitions="false">超时</el-tag>
              </div>
            </el-tooltip>
          </template>
        </el-table-column>
        <el-table-column
          label="处理意见"
          align="center"
@@ -803,39 +849,17 @@
      ],
      cardlist: [
        {
          name: "出院服务总量",
          name: "患者服务总量",
          value: 0,
        },
        {
          name: "患者过滤",
          name: "待随访",
          value: 0,
        },
        {
          name: "应随访",
          name: "已完成",
          value: 0,
        },
        // {
        //   name: "异常",
        //   value: 0,
        // },
        {
          name: "发送失败",
          value: 0,
        },
        {
          name: "待执行",
          value: 0,
        },
        // {
        //   name: "已发送",
        //   value: 0,
        // },
        // {
        //   name: "表单已发送",
        //   value: 0,
        // },
      ],
      // è¡¨å•参数
@@ -946,7 +970,7 @@
    async getList(refresh) {
      // é»˜è®¤å…¨éƒ¨
      this.applyDeptWardScope();
      if (this.endOut == 0) {
      if (this.endOut == 0 && !this.topqueryParams.endSendDateTime) {
        this.topqueryParams.endSendDateTime = this.formatDateToYYYYMMDDHHMMSS(
          this.getEndOfDay()
        );
@@ -996,12 +1020,8 @@
        if (refresh) {
          this.cardlist[0].value =
            Number(response.rows[0].wxsf) + Number(response.rows[0].xsf) || 0;
          this.cardlist[1].value = response.rows[0].wxsf || 0;
          this.ycvalue = Number(response.rows[0].yc) || 0;
          this.jgvalue = response.rows[0].jg;
          this.cardlist[2].value = response.rows[0].xsf || 0;
          this.cardlist[3].value = response.rows[0].dsf || 0;
          this.cardlist[4].value = response.rows[0].ywc || 0;
          this.cardlist[1].value = response.rows[0].dsf || 0;
          this.cardlist[2].value = response.rows[0].ywc || 0;
          this.yfsvalue = response.rows[0].yfs;
        }
@@ -1044,6 +1064,35 @@
        this.isRestoring = false;
      }
    },
     applyDeptWardScope() {
      const value = this.topqueryParams.scopetype || [];
      const deptCodes = [];
      const wardCodes = [];
      let isAll = false;
      value.forEach((item) => {
        const type = item[0];
        if (type == 3) {
          isAll = true;
        } else if (type == 1) {
          deptCodes.push(item[item.length - 1]);
        } else if (type == 2) {
          wardCodes.push(item[item.length - 1]);
        }
      });
      // é€‰äº†å…¨éƒ¨ æˆ– æœªé€‰æ‹© â†’ ç”¨æˆ·å…¨éƒ¨ç§‘室/病区
      if (isAll || (!deptCodes.length && !wardCodes.length)) {
        this.topqueryParams.leaveldeptcodes = store.getters.belongDepts.map(
          (obj) => obj.deptCode
        );
        this.topqueryParams.leavehospitaldistrictcodes =
          store.getters.belongWards.map((obj) => obj.districtCode);
      } else {
        this.topqueryParams.leaveldeptcodes = deptCodes;
        this.topqueryParams.leavehospitaldistrictcodes = wardCodes;
      }
    },
    // æŸ¥çœ‹å½±åƒéšè®¿è¯¦æƒ…
    Referencequestion(row) {
      this.previewVisible = true;
src/views/patient/ycquestionnaire/index.vue
@@ -2,9 +2,8 @@
  <div class="app-container">
    <statistics-cards
      :cardlist="cardlist"
      :ycvalue="ycvalue"
      :jgvalue="jgvalue"
      :show-warning-condition="orgname == '省立同德翠苑院区'"
      :show-extra="false"
      :show-warning-condition="false"
    />
    <el-row :gutter="20">
      <!--用户数据-->
@@ -52,16 +51,15 @@
          ></el-cascader>
        </el-form-item>
        <el-form-item label="任务状态" prop="status">
          <el-select v-model="topqueryParams.sendstate" placeholder="请选择">
            <el-option
              v-for="item in topicoptions"
              :key="item.value"
              :label="item.label"
              :value="item.value"
            >
            </el-option>
          </el-select>
        <el-form-item label="随访状态" prop="status">
          <el-cascader
            v-model="serviceStatusValue"
            placeholder="请选择"
            :options="serviceStatusOptions"
            :props="cascaderProps"
            @change="handleServiceStatusChange"
            clearable
          ></el-cascader>
        </el-form-item>
        <el-form-item>
@@ -158,6 +156,38 @@
          prop="sendname"
        />
        <el-table-column
          label="随访状态"
          align="center"
          key="sendstateView"
          prop="sendstateView"
          width="120"
        >
          <template slot-scope="scope">
            <el-tooltip
              class="item"
              effect="dark"
              :content="scope.row.remark"
              placement="top-start"
            >
              <div v-if="scope.row.sendstateView == 1">
                <el-tag type="primary" :disable-transitions="false"
                  >待随访</el-tag
                >
              </div>
              <div v-if="scope.row.sendstateView == 2">
                <el-tag type="success" :disable-transitions="false"
                  >已完成</el-tag
                >
              </div>
              <div v-if="scope.row.sendstateView == 3">
                <el-tag type="warning" :disable-transitions="false"
                  >无需随访</el-tag
                >
              </div>
            </el-tooltip>
          </template>
        </el-table-column>
        <el-table-column
          label="任务状态"
          align="center"
          key="sendstate"
@@ -190,6 +220,9 @@
            </div>
            <div v-if="scope.row.sendstate == 6">
              <el-tag type="danger" :disable-transitions="false">已完成</el-tag>
            </div>
            <div v-if="scope.row.sendstate == 7">
              <el-tag type="danger" :disable-transitions="false">超时</el-tag>
            </div>
          </template>
        </el-table-column>
@@ -663,39 +696,52 @@
      loading: false,
      cardlist: [
        {
          name: "出院服务总量",
          name: "患者服务总量",
          value: 0,
        },
        {
          name: "患者过滤",
          name: "待随访",
          value: 0,
        },
        {
          name: "应随访",
          name: "已完成",
          value: 0,
        },
      ],
        // {
        //   name: "异常",
        //   value: 0,
        // },
      serviceStatusValue: null,
      cascaderProps: {
        expandTrigger: "hover", // æ‚¬åœå±•å¼€
        checkStrictly: true, // âœ… å…³é”®ï¼šå…è®¸é€‰ä¸­ä»»æ„ä¸€çº§
        emitPath: false, // âœ… åªè¿”回选中的值,不返回路径数组
      },
      // éšè®¿çŠ¶æ€çº§è”é€‰æ‹©å™¨
      serviceStatusOptions: [
        {
          name: "发送失败",
          value: 0,
          value: null,
          label: "全部",
        },
        {
          name: "待执行",
          value: 0,
          value: 10, // ä¸€çº§ï¼šå¾…随访
          label: "待随访",
          children: [
            { value: 1, label: "被领取" },
            { value: 2, label: "待发送" },
            { value: 3, label: "已发送" },
            { value: 5, label: "发送失败" },
            { value: 7, label: "超时" },
          ],
        },
        // {
        //   name: "已发送",
        //   value: 0,
        // },
        // {
        //   name: "表单已发送",
        //   value: 0,
        // },
        {
          value: 20, // ä¸€çº§ï¼šå·²å®Œæˆ
          label: "已完成",
          children: [{ value: 6, label: "已完成" }],
        },
        {
          value: 30, // ä¸€çº§ï¼šæ— éœ€éšè®¿
          label: "无需随访",
          children: [{ value: 4, label: "不执行" }],
        },
      ],
      // è¡¨å•参数
@@ -713,6 +759,8 @@
        pageSize: 10,
        serviceType: 20,
        searchscope: 3,
        sendstateView: null,
        sendstate: null,
        scopetype: [],
        leaveldeptcodes: [],
        leavehospitaldistrictcodes: [],
@@ -815,19 +863,23 @@
        );
        console.log(this.topqueryParams.leavehospitaldistrictcodes, "11");
      }
      if (
        this.topqueryParams.leavehospitaldistrictcodes[0] &&
        this.topqueryParams.leaveldeptcodes[0]
      ) {
        this.topqueryParams.deptOrDistrict = 2;
      } else {
        this.topqueryParams.deptOrDistrict = 1;
      }
      this.loading = true;
      getTaskservelist(this.topqueryParams).then((response) => {
        this.userList = response.rows[0].serviceSubtaskList;
        this.total = response.total;
        if (refresh) {
          this.cardlist[0].value =
            Number(response.rows[0].wzx) + Number(response.rows[0].ysf);
          this.cardlist[1].value = response.rows[0].wzx;
          this.cardlist[2].value = response.rows[0].ysf;
          this.ycvalue = response.rows[0].yc;
          this.cardlist[3].value = response.rows[0].fssb;
          this.cardlist[4].value = response.rows[0].dsf;
          // this.cardlist[5].value = response.rows[0].yfs2;
            Number(response.rows[0].wxsf) + Number(response.rows[0].xsf) || 0;
          this.cardlist[1].value = response.rows[0].dsf || 0;
          this.cardlist[2].value = response.rows[0].ywc || 0;
          this.yfsvalue = response.rows[0].yfs;
        }
        this.loading = false;
@@ -927,6 +979,35 @@
      this.getList(refresh);
    },
    // éšè®¿çŠ¶æ€å˜æ›´å¤„ç†
    handleServiceStatusChange(value) {
      // æ¸…空选择
      if (value === null || value === undefined || value === "") {
        this.topqueryParams.sendstateView = null;
        this.topqueryParams.sendstate = null;
        return;
      }
      // ä¸€çº§èŠ‚ç‚¹çš„å€¼ï¼ˆå¤§äºŽç­‰äºŽ10)
      if (value >= 10) {
        switch (value) {
          case 10:
            this.topqueryParams.sendstateView = 1; // å¾…随访
            break;
          case 20:
            this.topqueryParams.sendstateView = 2; // å·²å®Œæˆ
            break;
          case 30:
            this.topqueryParams.sendstateView = 3; // æ— éœ€éšè®¿
            break;
        }
        this.topqueryParams.sendstate = null;
      } else {
        // é€‰ä¸­äº†äºŒçº§ï¼ˆå…·ä½“状态)
        this.topqueryParams.sendstateView = null;
        this.topqueryParams.sendstate = value;
      }
    },
    // æ‚£è€…范围处理
    handleChange(value) {
      let type = value[0];
@@ -949,11 +1030,14 @@
    /** é‡ç½®æŒ‰é’®æ“ä½œ */
    resetQuery() {
      this.dateRange = [];
      this.serviceStatusValue = null;
      this.topqueryParams = {
        pageNum: 1,
        pageSize: 10,
        serviceType: 20,
        searchscope: 2,
        sendstateView: null,
        sendstate: null,
      };
      this.handleQuery(1);
    },
vue.config.js
@@ -38,9 +38,9 @@
        // target: `https://www.health-y.cn/lssf`,
        // target: `http://192.168.100.10:8096`,
        // target: `http://192.168.100.10:8094`,//省立同德
        target: `http://192.168.100.10:8095`,//新华
        // target: `http://192.168.100.10:8095`,//新华
        // target: `http://192.168.100.10:8098`,//市一
        // target:`http://localhost:8095`,
        target:`http://localhost:8095`,
        // target:`http://35z1t16164.qicp.vip`,
        // target: `http://192.168.100.172:8095`,
        // target: `http://192.168.100.10:8089`,//南华
Ëæ·ÃͨÓÃ.zip
Binary files differ
Ëæ·ÃͨÓÃ9.10.zip
Binary files differ
Ëæ·ÃͨÓÃ9.11.zip
Binary files differ