WXL
2024-11-26 007d3884ad259883d7a5db6714876e46525ae717
src/views/patient/propaganda/particty.vue
@@ -70,16 +70,34 @@
                  />
                </el-form-item>
                <el-form-item label="服务形式">
                  <el-checkbox-group v-model="checkList">
                  <el-checkbox-group
                    v-model="checkList"
                    @change="handleCheckedCitiesChange"
                  >
                    <el-checkbox
                      v-for="(item, index) in checkboxlist"
                      :key="index"
                      :label="item.value"
                      @change="checkboxChange($event, item.value)"
                    >
                      {{ item.label }}</el-checkbox
                    >
                  </el-checkbox-group>
                </el-form-item>
                <div class="xinz-infs">
                  <el-form-item label="服务执行顺序" prop="daytime">
                    <el-tag
                      :key="tag.label"
                      type="success"
                      v-for="(tag, index) in foncheckList"
                      closable
                      :disable-transitions="false"
                      @close="handleClosetag(tag)"
                    >
                      ({{ index + 1 }}){{ tag.label }}
                    </el-tag>
                  </el-form-item>
                </div>
                <el-form-item label="是否长期" prop="longTask">
                  <el-radio-group v-model="form.longTask">
                    <el-radio :label="0">普通任务</el-radio>
@@ -235,9 +253,9 @@
                        <el-option
                          class="ruleFormaa"
                          v-for="item in belongWards"
                          :key="item.districtCode"
                          :label="item.districtName"
                          :value="item.districtCode"
                          :key="item.deptCode"
                          :label="item.label"
                          :value="item.deptCode"
                        >
                        </el-option>
                      </el-select> </el-form-item
@@ -349,7 +367,7 @@
      </div>
      <!-- 任务详情 -->
      <div v-if="Editprogress == 2">
        <el-alert title="在本阶段选择宣教病人" type="success" effect="dark">
        <el-alert title="在本阶段选择病人" type="success" effect="dark">
        </el-alert>
        <div class="leftvlue-jbxx">
          <div class="examine-jic">
@@ -376,15 +394,36 @@
                    </el-col>
                    <el-col :span="1.5">
                      <el-button
                        type="primary"
                        plain
                        icon="el-icon-plus"
                        size="medium"
                        :disabled="!patientqueryParams.allhosp"
                        @click="handleQuery"
                        >新增</el-button
                      >
                      <div v-if="form.longTask">
                        <el-tooltip
                          class="item"
                          effect="dark"
                          content="长期任务不支持手动添加患者!"
                          placement="top-start"
                        >
                          <el-button
                            type="primary"
                            plain
                            disabled
                            icon="el-icon-plus"
                            size="medium"
                            @click="handleQuery"
                            >新增</el-button
                          >
                        </el-tooltip>
                      </div>
                      <div v-else>
                        <el-button
                          type="primary"
                          plain
                          icon="el-icon-plus"
                          size="medium"
                          :disabled="!patientqueryParams.allhosp"
                          @click="handleQuery"
                          >新增</el-button
                        >
                      </div>
                    </el-col>
                    <!-- <el-col :span="1.5">
@@ -550,7 +589,7 @@
              <el-row :gutter="20">
                <el-col :span="14">
                  <el-form-item label="可用状态" prop="isenable">
                    <el-radio-group v-model="objyl.usestate">
                    <el-radio-group v-model="objyl.isenable">
                      <el-radio
                        v-for="(item, index) in usable"
                        :label="item.value"
@@ -628,7 +667,7 @@
                        class="ruleFormaa"
                        v-for="item in belongDepts"
                        :key="item.deptCode"
                        :label="item.deptName"
                        :label="item.label"
                        :value="item.deptCode"
                      >
                      </el-option>
@@ -649,9 +688,9 @@
                      <el-option
                        class="ruleFormaa"
                        v-for="item in belongWards"
                        :key="item.districtCode"
                        :label="item.districtName"
                        :value="item.districtCode"
                        :key="item.deptCode"
                        :label="item.label"
                        :value="item.deptCode"
                      >
                      </el-option>
                    </el-select> </el-form-item
@@ -874,6 +913,8 @@
  getFollowupclassify,
  depthospgetsonlist,
} from "@/api/AiCentre/index";
import { deptTreeSelect } from "@/api/system/user";
import SFtable from "@/components/SFtable"; //表格组件
@@ -886,6 +927,7 @@
      id: "", //
      previewid: "", //任务模板传递id
      libName: "",
      username: "",
      objyl: {},
      overallCase: [], //选择患者总
      allpids: [],
@@ -919,6 +961,7 @@
        { label: "出院日期", width: "150", prop: "inhosptime" },
        { label: "患者", width: "", prop: "name" },
        { label: "身份证", width: "200", prop: "idcardno" },
        { label: "电话号码", width: "180", prop: "telcode" },
        { label: "性别", width: "", prop: "sex" },
        { label: "年龄", width: "", prop: "age" },
        { label: "责任护士", width: "", prop: "nurseName" },
@@ -931,6 +974,7 @@
        { label: "出院日期", width: "150", prop: "endtime" },
        { label: "患者", width: "", prop: "name" },
        { label: "身份证", width: "200", prop: "sfzh" },
        { label: "电话号码", width: "180", prop: "telcode" },
        { label: "性别", width: "", prop: "sex" },
        { label: "年龄", width: "", prop: "age" },
        { label: "出院天数", width: "", prop: "endDay" },
@@ -941,10 +985,10 @@
      ],
      tableLabelwj: [
      { label: "创建人", width: "", prop: "createBy" },
        { label: "模板标题", width: "", prop: "templateName" },
        { label: "随访描述", width: "", prop: "note" },
        { label: "修改日期", width: "", prop: "updateTime" },
        { label: "创建人", width: "", prop: "createBy" },
      ],
      // 变量
      tableLabelvariable: [
@@ -977,6 +1021,12 @@
        pageSize: 10,
      },
      checkList: [],
      foncheckList: [],
      formatvalue: {
        format1: "",
        format2: "",
        format3: "",
      },
      deliverytopqueryParams: {
        pageNum: 1, //
        pageSize: 10,
@@ -1052,13 +1102,13 @@
      SelectPatientslist: [],
      form: {
        patTaskRelevances: [],
        sendType: 1,
        sendType: 3,
        longTask: 0,
        templatename: "",
        templateid: null,
        libtemplateid: null,
        kcb: "亲爱的患者/家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,观看这份宣教资讯。",
        jsy: "请您注意休息和营养,生活上要劳逸结合,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次宣教内容就到这里,祝您身体健康!",
        kcb: "亲爱的患者/家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,进行本次回访服务。",
        jsy: "请您注意休息和营养,生活上要劳逸结合,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次回访内容就到这里,祝您身体健康!",
      },
      taskoptions: [
        {
@@ -1154,7 +1204,7 @@
      // 科室院区查询入参
      queryParamsdept: {
        tempid: "",
        type: 11,
        type: 2,
      },
      quote: false,
      serviceType: null,
@@ -1164,8 +1214,9 @@
  created() {
    this.appraiselist = store.getters.appraiselist;
    this.belongWards = store.getters.belongWards;
    this.belongDepts = store.getters.belongDepts;
    // this.belongWards = store.getters.belongWards;
    // this.belongDepts = store.getters.belongDepts;
    this.username = store.getters.name;
    this.mode = store.getters.Askmode;
    this.id = this.$route.query.id;
    this.newadd = this.$route.query.newadd;
@@ -1175,12 +1226,14 @@
    this.form.serviceType = Number(this.$route.query.serviceType);
    this.Acquisitiontype();
    this.Getdetails();
    this.getDeptTree();
    this.getFollowupclassify();
  },
  activated() {
    if (this.id != this.$route.query.id) {
      this.Acquisitiontype();
      this.Getdetails();
      this.getDeptTree();
      this.getFollowupclassify();
    }
  },
@@ -1214,6 +1267,33 @@
      });
      return result;
    },
    getDeptTree() {
      // 科室列表
      deptTreeSelect().then((response) => {
        let flatArray = this.flattenArray(response.data);
        this.belongWards = flatArray;
        this.belongDepts = flatArray;
      });
    },
    flattenArray(multiArray) {
      let result = [];
      // 递归函数,用于将多级数组转换为一维数组,只包含最底层的元素
      function flatten(element) {
        // 如果当前元素有子元素,继续递归
        if (element.children && element.children.length > 0) {
          element.children.forEach((child) => flatten(child));
        } else {
          // 克隆元素以避免修改原始数据
          let item = JSON.parse(JSON.stringify(element));
          result.push(item); // 将最底层的元素添加到结果数组
        }
      }
      // 从顶层元素开始递归
      multiArray.forEach((element) => flatten(element));
      return result; // 返回只包含最底层元素的一维数组
    },
    // 获取当前类型
    Acquisitiontype() {
      let queryParams = {
@@ -1230,7 +1310,6 @@
            value: "1",
            label: "人工",
          },
          {
            value: "2",
            label: "纸质",
@@ -1347,6 +1426,16 @@
          xh: 1,
        },
      ];
      if (
        (this.belongWards[0] || this.belongWards[0]) &&
        this.username == "andmin"
      ) {
        if (this.tempbelongWards[0] || this.tempbelongWards[0]) {
        } else {
          this.$modal.msgError("请选择科室或病区");
          return;
        }
      }
      if (this.checkList[0]) {
        this.form.preachform = this.checkList.join(",");
      } else {
@@ -1437,14 +1526,13 @@
            if (this.form.longTask) {
              this.objyl.longTemp = 1;
            }
            this.queryParamsdept.type = 1;
            this.queryParamsdept.type = 2;
            this.queryParamsdept.tempid = row.id;
            this.listDept();
            this.objyl.suitway = this.objyl.suitway.split(",");
            this.questionList = res.data.ivrLibaTemplateScriptVOList;
            this.getillness(row.id);
        console.log(res.data, "11");
            this.Variablehandling(res.data.ivrLibaTemplateScriptVOList, 1);
            this.previewtf = true;
          }
@@ -1462,7 +1550,7 @@
          if (this.objyl.suitway)
            this.objyl.suitway = this.objyl.suitway.split(",");
          this.queryParamsdept.tempid = this.form.templateid;
          this.queryParamsdept.type = 11;
          this.queryParamsdept.type = 21;
          this.getillness(this.form.libtemplateid);
          // 执行获取该任务模板id
          this.listDept();
@@ -1504,6 +1592,7 @@
            }
          });
        });
        const Aarr = Variablist.filter(
          (obj, index, self) =>
            index ===
@@ -1526,6 +1615,7 @@
          { label: "出院日期", width: "150", prop: "endtime" },
          { label: "患者", width: "", prop: "name" },
          { label: "身份证", width: "200", prop: "idcardno" },
          { label: "电话号码", width: "180", prop: "telcode" },
          { label: "性别", width: "", prop: "sex" },
          { label: "年龄", width: "", prop: "age" },
          { label: "出院天数", width: "", prop: "endDay" },
@@ -1539,6 +1629,7 @@
          { label: "入院日期", width: "150", prop: "starttime" },
          { label: "患者", width: "", prop: "name" },
          { label: "身份证", width: "200", prop: "idcardno" },
          { label: "电话号码", width: "180", prop: "telcode" },
          { label: "性别", width: "", prop: "sex" },
          { label: "年龄", width: "", prop: "age" },
          { label: "出院天数", width: "", prop: "endDay" },
@@ -1558,6 +1649,7 @@
        this.patientqueryParams.cry = 1;
      } else if (this.patientqueryParams.allhosp == 4) {
        this.patientqueryParams.cry = 0;
        this.patientqueryParams.allhosp = "1";
      }
      // 来源判断
@@ -1698,7 +1790,7 @@
        templatename: "",
        templateid: null,
        libtemplateid: null,
        kcb: "亲爱的患者/家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访随访。",
        kcb: "亲爱的患者/家属,您好!我们是浙中医大二院的医护人员,为了更好地了解您的康复情况,请您抽一点宝贵时间,完成这份随访。",
        jsy: "请您注意休息和营养,生活上要劳逸结合,适当锻炼,戒烟限酒,保持心情舒畅,定期复诊。那本次回访就到这里,祝您身体健康!",
      };
@@ -1873,22 +1965,25 @@
        this.objyl.suitway = this.objyl.suitway.join(",");
      }
      this.objyl.ivrLibaTemplateScriptVOList.forEach((item) => {
        item.svyTaskTemplateTargetoptions = item.ivrLibaScriptTargetoptionList;
        item.ivrTaskScriptTargetoptionList = item.ivrLibaScriptTargetoptionList;
      });
      this.objyl.svyTaskTemplateScriptVOS =
      this.objyl.ivrTaskTemplateScriptVOList =
        this.objyl.ivrLibaTemplateScriptVOList;
      this.objyl.isoperation = 1;
      if (this.form.id) {
        this.objyl.taskid=this.form.id
      }
      if (this.form.templateid) {
        deleteTaskparticty(this.form.templateid).then((res) => {
          if (res.code == 200) {
              Taskparticty(this.objyl).then((response) => {
                this.previewtf = false;
                this.form.libtemplateid = this.objyl.id;
                this.form.templateid = response.data;
                this.putbelongDepts(response.data);
                this.form.templatename = this.objyl.templateName;
                this.$modal.msgSuccess("选择模板成功");
              });
            Taskparticty(this.objyl).then((response) => {
              this.previewtf = false;
              this.form.libtemplateid = this.objyl.id;
              this.form.templateid = response.data;
              this.putbelongDepts(response.data);
              this.form.templatename = this.objyl.templateName;
              this.$modal.msgSuccess("选择模板成功");
            });
          }
        });
      } else {
@@ -1923,33 +2018,23 @@
        }
      });
    },
    // 处理服务形式
    formatFn(type) {
      let list = [];
      let formlist = [];
      if (type == 1) {
        this.preachform.forEach((item) => {
          this.checkList.forEach((obj) => {
            if (item.label == obj) {
              list.push(item.value);
            }
          });
        });
        console.log(list, "list");
        this.form.preachform = list.join(",");
      } else {
        console.log(this.form.preachform, "this.form.preachform");
        formlist = this.form.preachform.split(",");
        console.log(11);
        this.preachform.forEach((item) => {
          formlist.forEach((obj) => {
            if (item.value == obj) {
              list.push(item.label);
            }
          });
        });
        this.checkList = list;
      }
    checkboxChange(checked, value) {},
    // 服务形式选取
    handleCheckedCitiesChange(row) {
      console.log(row, "服务");
      this.foncheckList = this.checkboxlist.filter((obj) =>
        row.includes(obj.value)
      );
    },
    // 服务形式删除
    handleClosetag(tag) {
      console.log(tag, "tag");
      console.log(this.foncheckList, "foncheckList");
      this.checkList = this.checkList.filter((item) => item != tag.value);
      this.foncheckList = this.foncheckList.filter(
        (obj) => obj.value !== tag.value
      );
      console.log(this.checkList, "checkList");
    },
    // 科室处理
    Departmenttreatment() {
@@ -1959,7 +2044,7 @@
          longTemp: this.form.longTask,
          deptCode: item,
          tempid: null,
          type: 11,
          type: 21,
        });
      });
@@ -1969,7 +2054,7 @@
          longTemp: this.form.longTask,
          deptCode: item,
          tempid: null,
          type: 11,
          type: 21,
        });
      });
      console.log(33);
@@ -2063,23 +2148,7 @@
    margin-left: 10px;
  }
}
// .leftvlue-jbxx {
//   margin-bottom: 50px;
//   font-size: 20px;
//   span {
//     position: absolute;
//     right: 80px;
//   }
//   .demo-cascader {
//     margin-right: 20px;
//   }
//   .PreviewTemplate {
//     color: #02a7f0;
//     cursor: pointer;
//     font-size: 20px;
//     margin: 0 20px;
//   }
// }
.preview-left {
  margin: 20px;
  //   margin: 20px;