WXL
2025-04-21 4395f0d2422b4af5b6a07b302e94c1a99b8e3c2b
src/views/patient/propaganda/QuestionnaireTask.vue
@@ -196,7 +196,15 @@
                    </div>
                  </div>
                </el-form-item>
                <el-row>
                <el-form-item label="任务关联" prop="longTask">
                  <el-radio-group v-model="form.appltype">
                    <el-radio label="1">科室关联</el-radio>
                    <el-radio label="2">病区关联</el-radio>
                    <el-radio label="3">疾病关联</el-radio>
                    <el-radio label="4">手术关联</el-radio>
                  </el-radio-group>
                </el-form-item>
                <el-row v-if="form.appltype == 1">
                  <el-col :span="20"
                    ><el-form-item label="适用科室" prop="region">
                      <el-select
@@ -211,7 +219,6 @@
                        <el-option
                          class="ruleFormaa"
                          v-for="item in belongDepts"
                          :key="item.deptCode"
                          :label="item.deptName"
                          :value="item.deptCode"
                        >
@@ -219,7 +226,7 @@
                      </el-select> </el-form-item
                  ></el-col>
                </el-row>
                <el-row>
                <el-row v-if="form.appltype == 2">
                  <el-col :span="20"
                    ><el-form-item label="适用病区" prop="region">
                      <el-select
@@ -234,9 +241,88 @@
                        <el-option
                          class="ruleFormaa"
                          v-for="item in belongWards"
                          :key="item.districtCode"
                          :label="item.districtName"
                          :value="item.districtCode"
                        >
                        </el-option>
                      </el-select> </el-form-item
                  ></el-col>
                </el-row>
                <el-row v-if="form.appltype == 3">
                  <!-- <el-col :span="20"
                    ><el-form-item label="适用疾病" prop="region">
                      <el-select
                        v-model="illnesscodes"
                        style="width: 400px"
                        @remove-tag="removediagg"
                        size="medium"
                        :remote-method="remotedonor"
                        multiple
                        filterable
                        remote
                        placeholder="请选择病区"
                      >
                        <el-option
                          class="ruleFormaa"
                          v-for="item in donorchargeList"
                          :key="item.icdcode"
                          :label="item.icdname"
                          :value="item.icdcode"
                        >
                        </el-option>
                      </el-select> </el-form-item
                  ></el-col> -->
                  <div class="xinz-infs">
                    <el-form-item>
                      <template #label>
                        <el-tooltip
                          class="item"
                          effect="light"
                          content="选择好适用疾病后,可以方便您通过疾病诊断查找到对应的病人!"
                          placement="top-start"
                        >
                          <i class="el-icon-warning-outline"></i>
                        </el-tooltip>
                      </template>
                      <div style="margin-bottom: 10px">
                        <el-button
                          type="warning"
                          @click="$refs.child.handleAddpatient()"
                          >添加疾病诊断</el-button
                        >
                      </div>
                      <el-tag
                        v-for="tag in diagglist"
                        @close="removediagg(tag.icd10code)"
                        type="warning"
                        closable
                        :disable-transitions="false"
                      >
                        {{ tag.icdname }}
                      </el-tag>
                      <!-- <el-tag v-if="hasMore" type="info">+{{ remaining }} more</el-tag> -->
                    </el-form-item>
                  </div>
                </el-row>
                <el-row v-if="form.appltype == 4">
                  <el-col :span="20"
                    ><el-form-item label="适用手术" prop="region">
                      <el-select
                        v-model="operationcodes"
                        style="width: 400px"
                        @remove-tag="removeopera"
                        size="medium"
                        :remote-method="remoteopcode"
                        multiple
                        filterable
                        remote
                        placeholder="请选择手术"
                      >
                        <el-option
                          class="ruleFormaa"
                          v-for="item in baseoperaList"
                          :label="item.opdesc"
                          :value="item.opcode"
                        >
                        </el-option>
                      </el-select> </el-form-item
@@ -489,7 +575,6 @@
            <!-- 选择患者列表 -->
            <SFtable
              ref="multipleTable"
              @handleUpdate="handleUpdate"
              @handleSelectionChange="handleSelectionChange"
              :currentList="patientuserList"
              :tableLabel="tableLabelhz"
@@ -588,31 +673,6 @@
                </div>
              </el-form-item>
              <div class="xinz-infs">
                <el-form-item>
                  <template #label>
                    适用疾病
                    <el-tooltip
                      class="item"
                      effect="light"
                      content="选择好适用疾病后,可以方便您通过疾病诊断查找到对应的病人!"
                      placement="top-start"
                    >
                      <i class="el-icon-warning-outline"></i>
                    </el-tooltip>
                  </template>
                  <el-tag
                    v-for="tag in illnesslist"
                    :key="tag.icdid"
                    type="warning"
                    :disable-transitions="false"
                  >
                    {{ tag.icdname }}
                  </el-tag>
                  <!-- <el-tag v-if="hasMore" type="info">+{{ remaining }} more</el-tag> -->
                </el-form-item>
              </div>
              <el-form-item label="问卷描述" prop="description">
                <el-input
                  type="textarea"
@@ -728,7 +788,10 @@
              label-width="98px"
            >
              <el-form-item label="问卷名称">
                <el-input v-model="topqueryParams.svyname"></el-input>
                <el-input
                  v-model="topqueryParams.svyname"
                  @keyup.enter.native="handleQuerymb"
                ></el-input>
              </el-form-item>
              <!-- <el-form-item label="适用形式" prop="status">
                <el-select v-model="topqueryParams.topica" placeholder="请选择">
@@ -779,6 +842,13 @@
        </div>
      </div>
    </el-drawer>
    <Optional-Form
      ref="child"
      :dialogVisiblepatient="dialogVisiblepatientjb"
      :overallCase="diagglist"
      @addoption="dialogVisiblepatientjb = false"
      @kkoption="dialogVisiblepatientjb = true"
    />
  </div>
</template>
@@ -787,7 +857,10 @@
import store from "@/store";
import {
  getTaskpatientQC,
  getlibrarylist,
  taskoperhospgetsondel,
  taskdiaghospgetsondel,
  getillnesslist,
  getbaseopera,
  Externallist,
  getQtemplatelist,
  getQtemplateobj,
@@ -799,13 +872,14 @@
  getillness,
  Editsingletask,
  getQtemplateclassify,
  depthospgetsonlist,
  taskdepthospgetsondel,
  taskdepthospgetsonlist,
  taskdiaggetlist,
  taskopergetlist,
} from "@/api/AiCentre/index";
import OptionalForm from "@/components/OptionalForm"; //正则组件
import SFtable from "@/components/SFtable"; //表格组件
import {  MessageBox,  } from "element-ui";
import { MessageBox } from "element-ui";
export default {
  name: "ServiceDetails",
@@ -831,12 +905,17 @@
      loading: false, // 遮罩层
      patientloading: false, // 遮罩层
      dialogVisiblepatient: false, //添加患者弹框
      dialogVisiblepatientjb: false, //添加疾病弹框
      deptcodesWards: [], //科室数据
      leavehospitaldistrictcodes: [], //病区数据
      operationcodes: [], //手术数据
      illnesscodes: [], //疾病数据
      radio: 1,
      checkboxlist: [],
      tableLabel: [],
      questionList: [],
      donorchargeList: [],
      baseoperaList: [],
      usable: [
        { value: "0", label: "可用" },
        { value: "1", label: "停用" },
@@ -992,7 +1071,10 @@
        templatename: "",
        templateid: null,
        libtemplateid: null,
        kcb: "亲爱的患者/家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,观看这份宣教资讯。",
        kcb:
          "亲爱的患者/家属,我们是" +
          localStorage.getItem("orgname") +
          "的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,观看这份宣教资讯。",
        jsy: "请您注意休息和营养,生活上要劳逸结合,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次宣教内容就到这里,祝您身体健康!",
      },
      taskoptions: [
@@ -1016,6 +1098,10 @@
          value: "6",
          label: "院外患者",
        },
        {
          value: "5",
          label: "手术病人",
        },
      ],
      source: [
        {
@@ -1034,47 +1120,64 @@
      tasktypes: [
        {
          value: 1,
          value: "1",
          label: "监测评估",
        },
        {
          value: 2,
          value: "2",
          label: "出院随访",
        },
        {
          value: 3,
          value: "3",
          label: "门诊随访",
        },
        {
          value: 4,
          value: "4",
          label: "宣教关怀",
        },
        {
          value: 5,
          value: "5",
          label: "复诊管理",
        },
        // {
        //   value: "5",
        //   label: "满意度调查",
        // },
        {
          value: 6,
          label: "满意度调查",
          value: "7",
          label: "患者报告",
        },
        // {
        //   value: "8",
        //   label: "其他通知",
        // },
        {
          value: "9",
          label: "体检随访",
        },
        // {
        //   value: "10",
        //   label: "医技随访",
        // },
        {
          value: "11",
          label: "影像随访",
        },
        {
          value: 7,
          label: "患者日常报告",
          value: "12",
          label: "心电随访",
        },
        {
          value: 9,
          label: "患者异常报告",
        },
        {
          value: 8,
          label: "其他通知",
        },
        // {
        //   value: "13",
        //   label: "专科随访",
        // },
      ],
      // 科室/病区
      belongWards: [],
      deptlist: [],
      hosplist: [],
      diagglist: [],
      operlist: [],
      tempDetpRelevanceslist: [], //科室数据
      tempDetpRelevanceslistform: [], //科室数据
      tempbelongWards: [], //病区数据
@@ -1099,14 +1202,14 @@
        //   { required: true, message: "适用病区不能为空", trigger: "blur" },
        // ],
      },
      belongDepts:[],
      belongDepts: [],
      // 科室院区查询入参
      queryParamsdept: {},
      quote: false,
      serviceType: null,
    };
  },
  components: { SFtable },
  components: { SFtable, OptionalForm },
  created() {
    this.appraiselist = store.getters.appraiselist;
@@ -1120,6 +1223,7 @@
    this.serviceType = Number(this.$route.query.serviceType);
    this.form.serviceType = Number(this.$route.query.serviceType);
    this.Acquisitiontype();
    this.getillnesslist();
    this.Getdetails();
    this.getQtemplateclassify();
  },
@@ -1130,13 +1234,21 @@
      this.getQtemplateclassify();
    }
  },
  computed: {
    displayedTags() {
      // 返回前10个tag
      return this.illnesslist.slice(0, 10);
    },
    hasMore() {
      // 判断是否有更多的tag
      return this.illnesslist.length > 10;
    },
    remaining() {
      // 计算剩余的tag数量
      return this.illnesslist.length - 10;
    },
  },
  methods: {
    // {
    //   姓名: { "${name}": "龙傲天" },
    //   地址: { "${dzz}": "龙宫" },
    //   电话: { "${dhh}": "八个八" },
    // }
    // 变量转换对象转数组
    convertFormat1ToFormat2(data) {
      let result = [];
@@ -1215,7 +1327,15 @@
          //   label: "智能机器人",
          // },
        ];
      } else if (this.form.serviceType == 7 || this.form.serviceType == 9) {
      } else if (
        this.form.serviceType == 7 ||
        this.form.serviceType == 10 ||
        this.form.serviceType == 11 ||
        this.form.serviceType == 8 ||
        this.form.serviceType == 12 ||
        this.form.serviceType == 13 ||
        this.form.serviceType == 9
      ) {
        this.checkboxlist = [
          {
            value: "1",
@@ -1240,6 +1360,10 @@
          {
            value: "6",
            label: "微信小程序",
          },
          {
            value: "7",
            label: "术后随访",
          },
        ];
      } else if (
@@ -1303,15 +1427,40 @@
          xh: 1,
        },
      ];
      if (this.form.appltype == 1) {
        this.leavehospitaldistrictcodes = [];
        this.operationcodes = [];
        this.illnesscodes = [];
      } else if (this.form.appltype == 2) {
        this.deptcodesWards = [];
        this.operationcodes = [];
        this.illnesscodes = [];
      } else if (this.form.appltype == 3) {
        this.deptcodesWards = [];
        this.leavehospitaldistrictcodes = [];
        this.operationcodes = [];
      } else if (this.form.appltype == 4) {
        this.deptcodesWards = [];
        this.illnesscodes = [];
        this.leavehospitaldistrictcodes = [];
      }
      if (this.checkList) {
        this.form.preachform = this.checkList;
      } else {
        this.$modal.msgError("请选择服务类型");
        return;
      }
      if (this.deptcodesWards[0]||this.leavehospitaldistrictcodes[0]) {
      console.log(this.operationcodes[0]);
      console.log(this.operationcodes);
      if (
        this.deptcodesWards[0] ||
        this.leavehospitaldistrictcodes[0] ||
        this.diagglist[0] ||
        this.operationcodes[0]
      ) {
      } else {
        this.$modal.msgError("请选择科室或病区");
        this.$modal.msgError("请选择任务关联条件");
        return;
      }
@@ -1350,7 +1499,10 @@
      this.form.deptcode = this.deptcodesWards.join(",");
      this.form.leavehospitaldistrictcode =
        this.leavehospitaldistrictcodes.join(",");
      this.form.opcode = this.operationcodes.join(",");
      this.form.icd10code = this.diagglist
        .map((item) => item.icdcode)
        .join(",");
      Editsingletask(this.form).then((res) => {
        if (res.code == 200) {
          if (this.form.taskid) {
@@ -1398,6 +1550,8 @@
    },
    // 预览
    previewfnmb() {
      console.log(this.form.templateid);
      getTaskQuestioncomit(this.form.templateid).then((res) => {
        if (res.code == 200) {
          console.log(res, "预览数据");
@@ -1425,6 +1579,44 @@
          this.illnesslist.forEach((item) => {
            item.icdname = item.icd10name;
          });
        });
      }
    },
    getillnesslist() {
      getillnesslist({
        pageNum: 1,
        pageSize: 1000,
      }).then((res) => {
        this.donorchargeList = res.rows;
      });
      getbaseopera({
        pageNum: 1,
        pageSize: 1000,
      }).then((res) => {
        this.baseoperaList = res.rows;
      });
    },
    // 手术查询
    remoteopcode(name) {
      if (name) {
        getbaseopera({
          pageNum: 1,
          pageSize: 1000,
          opdesc: name,
        }).then((res) => {
          this.baseoperaList = res.rows;
        });
      }
    },
    // 疾病查询
    remotedonor(name) {
      if (name) {
        getbaseopera({
          pageNum: 1,
          pageSize: 1000,
          opdesc: name,
        }).then((res) => {
          this.baseoperaList = res.rows;
        });
      }
    },
@@ -1556,6 +1748,9 @@
          item.deptName = item.dept;
          item.admindate = item.inhosptime;
          item.sfzh = item.idcardno;
          if (this.patientqueryParams.allhosp == 6) {
            item.patfrom = 1;
          }
          this.overallCase.push(item);
          this.form.patTaskRelevances.push(item);
        }
@@ -1693,7 +1888,10 @@
        templatename: "",
        templateid: null,
        libtemplateid: null,
        kcb: "亲爱的患者/家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访问卷。",
        kcb:
          "亲爱的患者/家属,我们是" +
          localStorage.getItem("orgname") +
          "的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访问卷。",
        jsy: "请您注意休息和营养,生活上要劳逸结合,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次回访就到这里,祝您身体健康!",
      };
@@ -1758,7 +1956,7 @@
      this.time3 = ""; //晚上时间段
      this.time4 = ""; //晚上时间段
    },
    // 获取任务科室列表
    // 获取各类
    listDept() {
      this.leavehospitaldistrictcodes = [];
      this.deptcodesWards = [];
@@ -1777,6 +1975,29 @@
          });
        }
      });
      taskdiaggetlist(this.queryParamsdept).then((res) => {
        if (res.code == 200) {
          let arr = res.rows;
          arr.forEach((item) => {
            getillnesslist({
              icdcode: item.icd10code,
            }).then((res) => {
              item.icdname = res.rows[0].icdname;
              this.diagglist.push(item);
            });
            this.illnesscodes.push(item.icd10code);
          });
        }
      });
      taskopergetlist(this.queryParamsdept).then((res) => {
        if (res.code == 200) {
          let arr = res.rows;
          arr.forEach((item) => {
            this.operlist.push(item);
            this.operationcodes.push(item.opcode);
          });
        }
      });
    },
    // 任务科室删除触发
    removetag(row) {
@@ -1787,6 +2008,7 @@
      if (result.length) {
        taskdepthospgetsondel(result).then((res) => {
          if (res.code) {
            this.$modal.msgSuccess("删除成功");
          }
        });
      }
@@ -1799,10 +2021,41 @@
      if (result.length) {
        taskdepthospgetsondel(result).then((res) => {
          if (res.code) {
            this.$modal.msgSuccess("删除成功");
          }
        });
      }
    },
    // 手术删除触发
    removeopera(row) {
      let result = this.operlist
        .filter((item) => item.opcode == row)
        .map((item) => item.id);
      if (result.length) {
        taskoperhospgetsondel(result).then((res) => {
          if (res.code) {
            this.$modal.msgSuccess("删除成功");
          }
        });
      }
    },
    // 疾病删除触发
    removediagg(row) {
      let result = this.diagglist
        .filter((item) => item.icd10code == row)
        .map((item) => item.id);
      if (result.length) {
        taskdiaghospgetsondel(result).then((res) => {
          if (res.code) {
            this.diagglist = this.diagglist.filter(
              (item) => item.icd10code != row
            );
            this.$modal.msgSuccess("删除成功");
          }
        });
      }
    },
    getQtemplateclassify() {
      getQtemplateclassify({}).then((res) => {
        this.optionsclass = res.rows;
@@ -1963,7 +2216,7 @@
          "功能提示",
          {
            confirmButtonText: "保存任务",
            cancelButtonText: "取消",
            cancelButtonText: "暂存模板",
            type: "warning",
          }
        )
@@ -1972,12 +2225,28 @@
              this.objyl.suitway = this.objyl.suitway.join(",");
            }
            this.objyl.templateid = this.objyl.svyid;
            this.form.libtemplateid = this.objyl.svyid;
            this.objyl.isoperation = 1;
            this.objyl.svyTaskTemplateScriptVOS = this.objyl.svyTemplateLibScripts;
            this.form.svyTaskTemplateVO=this.objyl;
            this.objyl.svyTaskTemplateScriptVOS =
              this.objyl.svyTemplateLibScripts;
            this.form.svyTaskTemplateVO = this.objyl;
            this.submitForm();
          })
          .catch(() => {});
          .catch(() => {
            if (Array.isArray(this.objyl.suitway)) {
              this.objyl.suitway = this.objyl.suitway.join(",");
            }
            this.objyl.templateid = this.objyl.svyid;
            this.form.libtemplateid = this.objyl.svyid;
            this.objyl.isoperation = 1;
            this.objyl.svyTaskTemplateScriptVOS =
              this.objyl.svyTemplateLibScripts;
            this.form.svyTaskTemplateVO = this.objyl;
            this.form.templatename = this.objyl.svyname;
            this.$modal.msgSuccess("暂存成功保存任务后模板失效");
            this.drawermb = false;
            this.previewtf = false;
          });
      } else {
        setTimeout(() => {
          this.previewFn();