WXL
2024-04-25 c1857baa3a4fbce727da5de733fe30d38477978f
src/views/patient/propaganda/particty.vue
@@ -11,7 +11,7 @@
          ></el-step>
          <el-step
            icon="el-icon-user"
            title="任主体"
            title="任务主体"
            description="在本部选择服务患者"
          ></el-step>
          <el-step icon="el-icon-user" title="模版确认"></el-step>
@@ -36,11 +36,31 @@
            </div>
            <div class="jic-value">
              <el-form ref="form" :model="form" label-width="105px">
                <el-form-item label="模版名称:">
                <el-row :gutter="20">
                  <el-col :span="12"
                    ><el-form-item label="任务名称">
                      <el-input
                        style="width: 220px"
                        v-model="form.taskName"
                        placeholder="请输入任务名称"
                      /> </el-form-item
                  ></el-col>
                  <el-col :span="12"
                    ><el-form-item label="模版名称">
                      <el-input
                        style="width: 220px"
                        :disabled="true"
                        v-model="form.templatename"
                        placeholder="请在下列选择"
                      /> </el-form-item
                  ></el-col>
                </el-row>
                <el-form-item label="任务描述">
                  <el-input
                    style="width: 220px"
                    v-model="form.templatename"
                    placeholder="请在下列选择"
                    type="textarea"
                    v-model="form.taskDesc"
                    placeholder="请输入任务描述"
                  />
                </el-form-item>
                <el-form-item label="发送设置:" v-if="currenttype != 2">
@@ -69,6 +89,7 @@
                      >
                      <el-time-picker
                        is-range
                        arrow-control
                        @change="changeTime"
                        v-model="time1"
                        range-separator="至"
@@ -85,6 +106,7 @@
                      >
                      <el-time-picker
                        is-range
                        arrow-control
                        @change="changeTime"
                        v-model="time2"
                        range-separator="至"
@@ -101,6 +123,7 @@
                      >
                      <el-time-picker
                        is-range
                        arrow-control
                        @change="changeTime"
                        v-model="time3"
                        range-separator="至"
@@ -142,12 +165,17 @@
                    v-show="showSearch"
                    label-width="98px"
                  >
                    <el-form-item label="宣教主题" v-if="currenttype == 1">
                    <el-form-item
                      label="宣教主题"
                      v-if="currenttype == 1 || currenttype == 8"
                    >
                      <el-input v-model="topqueryParams.name"></el-input>
                    </el-form-item>
                    <el-form-item
                      label="随访名称"
                      v-if="currenttype == 2 || currenttype == 3"
                      v-if="
                        currenttype == 2 || currenttype == 3 || currenttype == 7
                      "
                    >
                      <el-input
                        v-model="topqueryParams.name"
@@ -172,7 +200,7 @@
                    <el-form-item
                      label="宣教类型"
                      prop="status"
                      v-if="currenttype == 1"
                      v-if="currenttype == 1 || currenttype == 8"
                    >
                      <el-select
                        v-model="topqueryParams.topic"
@@ -208,7 +236,9 @@
                    <el-form-item
                      label="随访类型"
                      prop="status"
                      v-if="currenttype == 2 || currenttype == 3"
                      v-if="
                        currenttype == 2 || currenttype == 3 || currenttype == 7
                      "
                    >
                      <el-select
                        v-model="topqueryParams.topic"
@@ -346,11 +376,11 @@
                    </el-table-column>
                    <el-table-column label="操作" align="center">
                      <template slot-scope="scope">
                        <el-button
                        <!-- <el-button
                          size="mini"
                          @click="variableEdit(scope.$index, scope.row)"
                          >编辑</el-button
                        >
                        > -->
                        <el-button
                          size="mini"
                          type="danger"
@@ -496,10 +526,12 @@
                  </el-row>
                  <!-- 选中患者列表 -->
                  <SFtable
                    @details="detailhz"
                    @handleUpdate="handleUpdate"
                    @handleSelectionChange="handleSelectionChange"
                    :currentList="form.patTaskRelevances"
                    :tableLabel="tableLabelhz"
                    :serialnumber="false"
                    :controlxz="false"
                    :typeinfo="2"
                  />
@@ -544,7 +576,7 @@
              <el-form-item label="患者名称:">
                <el-input v-model="patientqueryParams.name"></el-input>
              </el-form-item>
              <el-form-item label="患者来源" prop="status">
              <!-- <el-form-item label="患者来源" prop="status">
                <el-select
                  v-model="patientqueryParams.topic"
                  placeholder="请选择"
@@ -557,36 +589,28 @@
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="出院科室" prop="status">
              </el-form-item> -->
              <el-form-item label="就诊科室" prop="status">
                <el-select
                  v-model="patientqueryParams.topic"
                  placeholder="请选择"
                >
                  <el-option
                    v-for="item in topicoptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  <el-option-group
                    v-for="group in topicoptions[0].children"
                    :key="group.deptName"
                    :label="group.deptName"
                  >
                  </el-option>
                    <el-option
                      v-for="item in group.children"
                      :key="item.deptId"
                      :label="item.deptName"
                      :value="item.deptId"
                    >
                    </el-option>
                  </el-option-group>
                </el-select>
              </el-form-item>
              <el-form-item label="出院病区" prop="status">
                <el-select
                  v-model="patientqueryParams.topic"
                  placeholder="请选择"
                >
                  <el-option
                    v-for="item in topicoptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item>
                <el-button
                  type="primary"
@@ -610,7 +634,7 @@
              :currentList="patientuserList"
              :tableLabel="tableLabelhz"
              :serialnumber="false"
              :controlsc="false"
              :center="false"
              :typeinfo="3"
            />
          </el-row>
@@ -641,13 +665,14 @@
  getlibrarylist,
  getFollowuplist,
  getQtemplatelist,
  edithetask,
  addhetask,
  getTaskInfo,
  gethetaskinfo,
  delhetaskinfo,
  Editsingletask,
  getvFollowup,
} from "@/api/AiCentre/index";
import { listDept } from "@/api/system/dept";
import SFtable from "@/components/SFtable"; //表格组件
export default {
@@ -664,14 +689,15 @@
      radio: 1,
      checkboxlist: [],
      tableLabel: [],
      // 患者表单
      tableLabelhz: [
        { label: "序号", width: "", prop: "patid" },
        { label: "患者名称", width: "", prop: "name" },
        { label: "性别", width: "", prop: "sex" },
        { label: "年龄", width: "", prop: "age" },
        { label: "就诊科室", width: "", prop: "impTemplate" },
        { label: "入院日期", width: "", prop: "uploadTime" },
        { label: "就诊科室", width: "", prop: "deptName" },
        { label: "入院日期", width: "", prop: "inhosptime" },
        { label: "创建人(缺)", width: "", prop: "update_by" },
      ],
      tableLabelxj: [
@@ -680,37 +706,37 @@
        { label: "宣教形式", width: "", prop: "playType" },
        { label: "适用方式", width: "", prop: "suitway" },
        { label: "修改日期", width: "", prop: "uploadTime" },
        { label: "创建人(缺)", width: "", prop: "update_by" },
        { label: "创建人(缺)", width: "", prop: "updateBy" },
      ],
      tableLabelmz: [
        { label: "随访名称", width: "", prop: "templateName" },
        { label: "主要内容", width: "", prop: "note" },
        { label: "修改日期", width: "", prop: "updateTime" },
        { label: "创建人(缺)", width: "", prop: "update_by" },
        { label: "创建人(缺)", width: "", prop: "updateBy" },
      ],
      tableLabelcy: [
        { label: "随访名称", width: "", prop: "templateName" },
        { label: "随访计划", width: "", prop: "impTemplate" },
        { label: "修改日期", width: "", prop: "uploadTime" },
        { label: "创建人(缺)", width: "", prop: "update_by" },
        { label: "创建人(缺)", width: "", prop: "updateBy" },
      ],
      tableLabelfz: [
        { label: "通知名称", width: "", prop: "templateName" },
        { label: "通知模版", width: "", prop: "impTemplate" },
        { label: "修改日期", width: "", prop: "uploadTime" },
        { label: "创建人(缺)", width: "", prop: "update_by" },
        { label: "创建人(缺)", width: "", prop: "updateBy" },
      ],
      tableLabeltj: [
        { label: "通知名称", width: "", prop: "name" },
        { label: "通知模版", width: "", prop: "impTemplate" },
        { label: "修改日期", width: "", prop: "uploadTime" },
        { label: "创建人(缺)", width: "", prop: "update_by" },
        { label: "创建人(缺)", width: "", prop: "updateBy" },
      ],
      tableLabelwj: [
        { label: "问卷名称", width: "", prop: "name" },
        { label: "问卷模版", width: "", prop: "impTemplate" },
        { label: "修改日期", width: "", prop: "uploadTime" },
        { label: "创建人(缺)", width: "", prop: "update_by" },
        { label: "创建人(缺)", width: "", prop: "updateBy" },
      ],
      // 变量
      tableLabelvariable: [
@@ -737,7 +763,7 @@
        pageNum: 1, //
        pageSize: 10,
      },
      topicoptions: [],
      topicoptions: [{ children: [{ children: [] }] }],
      showSearch: true, //
      total: 0, //
      sontotal: 0, //
@@ -752,6 +778,7 @@
      userList: [], //模版列表
      patientuserList: [], //选择患者列表
      sonuserList: [], //选中患者列表
      delvariableList: [], //删除变量临时存储
      variableList: [
        {
          name: "姓名",
@@ -823,10 +850,10 @@
  created() {
    this.id = this.$route.query.id;
    this.form.type = this.$route.query.type;
    this.Addsubtask();
    this.Getsubtask();
    this.form.hospType = this.$route.query.type;
    this.listDept();
    this.Acquisitiontype();
    this.Getdetails();
  },
  methods: {
@@ -867,53 +894,36 @@
      };
      this.currenttype = this.$route.query.type;
      console.log(this.currenttype, "1");
      if (this.currenttype == 1) {
      if (this.currenttype == 1 || this.currenttype == 8) {
        // 医技宣教,普通宣教
        this.title = "宣教内容列表";
        this.tableLabel = this.tableLabelxj;
        this.checkboxlist = [
          "线下",
          "视频",
          "纸质",
          "语音",
          "短信",
          "微信公众号",
          "微信小程序",
          "支付宝",
          "二维码",
          "钉钉",
          "线下(口头宣教、电视宣教、纸质)",
          "线上(短信/钉钉的文本、图文链接)",
        ];
        getlibrarylist(queryParams).then((response) => {
          this.userList = response.rows;
          this.total = response.total;
        });
      } else if (this.currenttype == 2) {
      } else if (
        this.currenttype == 2 ||
        this.currenttype == 3 ||
        this.currenttype == 7
      ) {
        // 出院、门诊、专病随访
        this.title = "随访内容列表";
        this.tableLabel = this.tableLabelmz;
        this.checkboxlist = ["线下", "纸质", "语音", "短信", "微信公众号"];
        this.checkboxlist = ["线下", "AI语音外呼", "人工电话"];
        getFollowuplist(queryParams).then((response) => {
          this.userList = response.rows;
          this.total = response.total;
        });
      } else if (this.currenttype == 3) {
        this.title = "随访计划列表";
        this.tableLabel = this.tableLabelcy;
        this.checkboxlist = ["线下", "纸质", "语音", "短信", "微信公众号"];
        getFollowuplist(queryParams).then((response) => {
          this.userList = response.rows;
          this.total = response.total;
        });
      } else if (this.currenttype == 4) {
      } else if (this.currenttype == 4 || this.currenttype == 5) {
        // 复诊、体检通知
        this.title = "通知内容列表";
        this.tableLabel = this.tableLabelfz;
        this.checkboxlist = ["语音", "短信", "微信公众号"];
        getFollowuplist(queryParams).then((response) => {
          this.userList = response.rows;
          this.total = response.total;
        });
      } else if (this.currenttype == 5) {
        this.title = "通知内容列表";
        this.tableLabel = this.tableLabeltj;
        this.checkboxlist = ["纸质", "语音", "短信", "微信公众号"];
        this.checkboxlist = ["线下", "AI语音外呼", "人工电话", "短信"];
        getFollowuplist(queryParams).then((response) => {
          this.userList = response.rows;
          this.total = response.total;
@@ -922,14 +932,8 @@
        this.title = "问卷内容列表";
        this.tableLabel = this.tableLabelwj;
        this.checkboxlist = [
          "线下",
          "视频",
          "纸质",
          "语音",
          "短信",
          "微信公众号",
          "微信小程序",
          "钉钉",
          "线下(纸质)",
          "线上(短信/钉钉的文本、问卷链接)",
        ];
        getQtemplatelist(queryParams).then((response) => {
          this.userList = response.rows;
@@ -945,20 +949,19 @@
    // 保存
    submitForm(formName) {
      this.form.serviceform = this.checkList.join(",");
      this.form.hospType = this.currenttype;
      const filteredArray = this.variableList.filter(
        (item) =>
          item.name !== "姓名" && item.name !== "电话" && item.name !== "地址"
      );
      console.log(filteredArray, "存前变量");
      this.form.textParam = this.convertFormat2ToFormat1(filteredArray);
      if (this.form.id) {
        this.form.isoperation = 2;
      } else {
        this.form.isoperation = 1;
      }
      Editsingletask(this.form).then((response) => {
      Editsingletask(this.form).then((res) => {
        if (res.code == 200) {
          if (this.form.id) {
            this.$modal.msgSuccess("新增成功");
@@ -968,27 +971,18 @@
          this.$router.go(-1);
        }
      });
      // 提交
      // this.$refs[formName].validate((valid, object) => {
      //   if (valid) {
      //     alert("submit!");
      //   } else {
      //     console.log("error submit!!", object);
      //     return false;
      //   }
      // });
    },
    // ----------------------表格子组件事件
    // 选择模版
    selectfn(row, type) {
      console.log(row);
      console.log(type);
      // 模版情况下获取模版信息
      if (type == 1) {
        if (
          this.currenttype == 2 ||
          this.currenttype == 4 ||
          this.currenttype == 3
          this.currenttype == 3 ||
          currenttype == 5 ||
          currenttype == 7
        ) {
          this.form.templatename = row.templateName;
          this.form.templateid = row.id;
@@ -1058,8 +1052,12 @@
      this.multiple = !selection.length;
      console.log(this.ids);
    },
    // 删除选中患者
    detailhz(row, info) {},
    getList() {},
    handleQuery() {},
    handleQuery() {
      this.handleAddpatient();
    },
    resetQuery() {},
    handleClosehz() {
      this.dialogVisiblepatient = false;
@@ -1077,12 +1075,37 @@
    Acknowledgereference() {
      this.quote = true;
    },
    // 新增子任务
    Addsubtask() {
      this.topqueryParams.pguid = 2;
      // addsvr_prjtask(this.topqueryParams).then((res) => {
      //   console.log(res);
      // });
    // 获取详情
    Getdetails() {
      if (this.id) {
        getTaskInfo({ taskid: this.id }).then((res) => {
          let filteredArray = "";
          if (res.code == 200) {
            this.form = res.data;
            this.checkList = this.form.serviceform.split(",");
            this.daytime = this.form.sendlimitabegin.split(",");
            if (this.form.sendlimitaend)
              this.time1 = this.form.sendlimitaend.split(",");
            if (this.form.sendlimitnbegin)
              this.time2 = this.form.sendlimitaend.split(",");
            if (this.form.sendlimitnend)
              this.time3 = this.form.sendlimitaend.split(",");
            filteredArray = this.convertFormat1ToFormat2(this.form.textParam);
            console.log(filteredArray, "filteredArray");
            this.variableList = this.transitionList.concat(filteredArray);
          } else {
            this.$modal.msgError(res.code);
          }
          console.log(res);
        });
      }
    },
    // 获取科室列表
    listDept() {
      listDept().then((res) => {
        this.topicoptions = this.handleTree(res.data, "deptId");
        console.log(this.topicoptions, "topicoptions");
      });
    },
    // 新增派送患者
    AddDispatchpatients() {
@@ -1093,21 +1116,14 @@
      this.dialogVisiblepatient = false;
    },
    // 查询子任务列表
    Getsubtask() {
      this.topqueryParams.pguid = 2;
      console.log(this.topqueryParams, "aa");
      messagelistpatient(this.topqueryParams).then((res) => {
        this.userList = res.rows;
        this.total = res.total;
        console.log(this.userList, "ss");
      });
    },
    // 变量---------------
    variableEdit(index, row) {
      console.log(index, row);
    },
    // variableEdit(index, row) {
    //   console.log(index, row);
    // },
    variableDelete(index, row) {
      this.variableList.splice(index, 1);
      row.isoperation = 3;
      this.delvariableList.push(row);
      console.log(index, row);
    },
    // 时间----------
@@ -1168,6 +1184,12 @@
        }
      }
      this.form.sendTimeslot = combinedData;
      // 展示数据临时存储日期、早、中、晚
      this.form.sendlimitabegin = this.daytime.join(",");
      if (this.time1) this.form.sendlimitaend = this.time1.join(",");
      if (this.time2) this.form.sendlimitnbegin = this.time2.join(",");
      if (this.time3) this.form.sendlimitnend = this.time3.join(",");
      console.log(combinedData, "combinedData");
    },
  },
@@ -1326,6 +1348,12 @@
    font-size: 24px;
  }
}
::v-deep.el-input.is-disabled .el-input__inner {
  background-color: #f5f7fa;
  border-color: #dfe4ed;
  color: rgb(253, 66, 66);
  cursor: not-allowed;
}
::v-deep.el-checkbox-group {
  span {
    font-size: 24px;