WXL
2024-09-04 44fe7b7d69118a4d03bed8dadcf9b6bba1416f9d
src/views/patient/propaganda/QuestionnaireTask.vue
@@ -7,14 +7,13 @@
          <el-step
            icon="el-icon-edit"
            title="基础信息"
            description="选择模版、形式等基础信息"
            description="选择模板、形式等基础信息"
          ></el-step>
          <el-step
            icon="el-icon-user"
            title="任务主体"
            description="在本部选择服务患者"
          ></el-step>
          <el-step icon="el-icon-user" title="模版确认"></el-step>
        </el-steps>
      </div>
    </div>
@@ -22,7 +21,7 @@
    <div class="leftvlue" style="margin: 0 20px">
      <!-- 基本信息 -->
      <div v-if="Editprogress == 1">
        <el-alert title="选择模版、形式等基础信息" type="success" effect="dark">
        <el-alert title="选择模板、形式等基础信息" type="success" effect="dark">
        </el-alert>
        <div class="leftvlue-jbxx">
          <!-- 基础信息 -->
@@ -41,23 +40,6 @@
                        placeholder="请输入任务名称"
                      /> </el-form-item
                  ></el-col>
                  <el-col :span="8"
                    ><el-form-item label="模版名称">
                      <el-input
                        style="width: 220px"
                        :disabled="true"
                        v-model="form.templatename"
                        placeholder="请在下列选择"
                      /> </el-form-item
                  ></el-col>
                  <el-col :span="4">
                    <el-button
                      type="primary"
                      icon="el-icon-edit"
                      @click="drawermb = true"
                      circle
                    ></el-button>
                  </el-col>
                </el-row>
                <el-form-item label="任务描述">
@@ -67,7 +49,7 @@
                    placeholder="请输入任务描述"
                  />
                </el-form-item>
                <el-form-item label="发送设置:" v-if="currenttype != 2">
                <el-form-item label="发送设置:">
                  <el-radio-group v-model="form.sendType">
                    <el-radio :label="1">时间段发送</el-radio>
                    <el-radio :label="3">时间点发送</el-radio>
@@ -162,10 +144,39 @@
                    <el-checkbox
                      v-for="(item, index) in checkboxlist"
                      :key="index"
                      :label="item"
                    ></el-checkbox>
                      :label="item.value"
                    >
                      {{ item.label }}</el-checkbox
                    >
                  </el-checkbox-group>
                </el-form-item>
                <el-row :gutter="20">
                  <el-col :span="10"
                    ><el-form-item label="模板名称">
                      <el-input
                        style="width: 300px"
                        :disabled="true"
                        v-model="form.templatename"
                        placeholder="请在下列选择"
                      /> </el-form-item
                  ></el-col>
                  <el-col :span="4">
                    <el-button
                      type="primary"
                      icon="el-icon-edit"
                      @click="drawermb = true"
                      circle
                    ></el-button>
                    <el-button
                    v-if="this.form.libtemplateid"
                      type="success"
                      icon="el-icon-search"
                      @click="previewfnmb"
                      circle
                    ></el-button>
                  </el-col>
                </el-row>
              </el-form>
            </div>
          </div>
@@ -220,7 +231,6 @@
        }}</el-button>
        <el-button @click="resetForm('ruleForm')">重置</el-button>
      </div>
      <!-- 任务详情 -->
      <div v-if="Editprogress == 2">
        <el-alert title="在本阶段选择宣教病人" type="success" effect="dark">
@@ -233,88 +243,6 @@
            <div class="examine-jic">
              <div class="jic-value">
                <el-row :gutter="20">
                  <!--用户数据-->
                  <!-- <el-form
                    :model="topqueryParams"
                    ref="queryForm"
                    size="small"
                    :inline="true"
                    v-show="showSearch"
                    label-width="98px"
                  >
                    <el-form-item label="患者名称">
                      <el-input v-model="topqueryParams.name"></el-input>
                    </el-form-item>
                    <el-form-item label="患者范围" prop="status">
                      <el-select
                        v-model="topqueryParams.topic"
                        placeholder="请选择"
                      >
                        <el-option
                          v-for="item in taskoptions"
                          :key="item.value"
                          :label="item.label"
                          :value="item.value"
                        >
                        </el-option>
                      </el-select>
                    </el-form-item>
                    <el-form-item label="患者状态" prop="status">
                      <el-select
                        v-model="topqueryParams.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 label="问卷结果" prop="status">
                      <el-select
                        v-model="topqueryParams.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 label="患者电话">
                      <el-input v-model="topqueryParams.name"></el-input>
                    </el-form-item>
                    <el-form-item>
                      <el-button
                        type="primary"
                        icon="el-icon-search"
                        size="medium"
                        @click="handleQuery"
                        >搜索</el-button
                      >
                      <el-button
                        icon="el-icon-refresh"
                        size="medium"
                        @click="resetQuery"
                        >重置</el-button
                      >
                      <el-button
                        icon="el-icon-upload2"
                        size="medium"
                        type="warning"
                        >当前患者一键发送</el-button
                      >
                    </el-form-item>
                  </el-form>
                  <el-divider></el-divider> -->
                  <el-row :gutter="10" class="mb8">
                    <el-col :span="1.5">
                      <el-select
@@ -408,29 +336,11 @@
              label-width="98px"
            >
              <el-form-item label="患者名称:">
                <el-input v-model="patientqueryParams.name"></el-input>
                <el-input
                  v-model="patientqueryParams.name"
                  @keyup.enter.native="handleQuery"
                ></el-input>
              </el-form-item>
              <!-- <el-form-item label="就诊科室" prop="status">
                <el-select
                  v-model="patientqueryParams.topic"
                  placeholder="请选择"
                >
                  <el-option-group
                    v-for="group in topicoptions[0].children"
                    :key="group.deptName"
                    :label="group.deptName"
                  >
                    <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>
                <el-button
@@ -476,7 +386,7 @@
        >
      </span>
    </el-dialog>
    <el-dialog title="模版预览" :visible.sync="previewtf" width="60%">
    <el-dialog title="模板预览" :visible.sync="previewtf" width="60%">
      <div class="preview-left">
        <!-- 单选 -->
        <div
@@ -525,7 +435,7 @@
          class="scriptTopic-dev"
          v-for="item in questionList"
          :key="item.sort"
          v-if="item.scriptType == 3"
          v-if="item.scriptType == 4"
        >
          <div class="dev-text">
            {{ item.sort }}、[填空]<span>{{ item.scriptContent }}</span>
@@ -537,7 +447,7 @@
        </div>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="previewGo">前往模版详情修改</el-button>
        <el-button @click="previewGo">前往模板详情修改</el-button>
        <el-button type="primary" @click="previewFn">确认使用</el-button>
      </span>
    </el-dialog>
@@ -561,41 +471,11 @@
              v-show="showSearch"
              label-width="98px"
            >
              <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 || currenttype == 7"
              >
                <el-input
                  v-model="topqueryParams.name"
                ></el-input> </el-form-item
              ><el-form-item
                label="通知名称"
                v-if="currenttype == 4 || currenttype == 5"
              >
                <el-input
                  v-model="topqueryParams.name"
                ></el-input> </el-form-item
              ><el-form-item label="体检套餐" v-if="currenttype == 5">
                <el-input v-model="topqueryParams.name"></el-input>
              </el-form-item>
              <el-form-item label="问卷主题" v-if="currenttype == 6">
                <el-input v-model="topqueryParams.name"></el-input>
              </el-form-item>
              <el-form-item label="适用疾病" v-if="currenttype != 5">
                <el-input v-model="topqueryParams.name"></el-input>
              <el-form-item label="问卷名称">
                <el-input v-model="topqueryParams.svyname"></el-input>
              </el-form-item>
              <el-form-item
                label="宣教类型"
                prop="status"
                v-if="currenttype == 1 || currenttype == 8"
              >
              <!-- <el-form-item label="问卷类型" prop="status">
                <el-select v-model="topqueryParams.topic" placeholder="请选择">
                  <el-option
                    v-for="item in taskoptions"
@@ -605,52 +485,7 @@
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item
                label="通知类型"
                prop="status"
                v-if="currenttype == 4 || currenttype == 5"
              >
                <el-select v-model="topqueryParams.topic" placeholder="请选择">
                  <el-option
                    v-for="item in taskoptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item
                label="问卷类型"
                prop="status"
                v-if="currenttype == 2 || currenttype == 3 || currenttype == 7"
              >
                <el-select v-model="topqueryParams.topic" placeholder="请选择">
                  <el-option
                    v-for="item in taskoptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item
                label="问卷类型"
                prop="status"
                v-if="currenttype == 6"
              >
                <el-select v-model="topqueryParams.topic" placeholder="请选择">
                  <el-option
                    v-for="item in taskoptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              </el-form-item> -->
              <el-form-item label="适用形式" prop="status">
                <el-select v-model="topqueryParams.topica" placeholder="请选择">
                  <el-option
@@ -663,7 +498,7 @@
                </el-select>
              </el-form-item>
              <el-form-item label="适用科室" prop="status">
              <!-- <el-form-item label="适用科室" prop="status">
                <el-select v-model="topqueryParams.topicd" placeholder="请选择">
                  <el-option
                    v-for="item in topicoptions"
@@ -673,13 +508,13 @@
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              </el-form-item> -->
              <el-form-item>
                <el-button
                  type="primary"
                  icon="el-icon-search"
                  size="medium"
                  @click="handleQuery"
                  @click="handleQuerymb"
                  >搜索</el-button
                >
                <el-button
@@ -691,7 +526,7 @@
              </el-form-item>
            </el-form>
            <el-divider></el-divider>
            <!-- 选择模版列表 -->
            <!-- 选择模板列表 -->
            <SFtable
              @selectfn="selectfn"
              :currentList="userList"
@@ -740,13 +575,13 @@
      title: "宣教内容列表",
      currenttype: 1, //1宣教2门诊3出院4复诊5体检6问卷
      id: "", //
      previewid: "", //任务模版传递id
      previewid: "", //任务模板传递id
      libName: "",
      overallCase: [], //选择患者总
      allpids: [],
      libId: null, //模板库模版id
      libId: null, //模板库模板id
      Editprogress: 1, //编辑进度
      drawermb: false, //选择模版弹窗
      drawermb: false, //选择模板弹窗
      previewtf: false, //预览
      loading: false, // 遮罩层
      patientloading: false, // 遮罩层
@@ -757,7 +592,7 @@
      questionList: [],
      // 患者表单
      tableLabelhz: [
        { label: "序号", width: "", prop: "patid" },
        // { label: "序号", width: "", prop: "patid" },
        { label: "患者名称", width: "", prop: "name" },
        { label: "性别", width: "", prop: "sex" },
        { label: "年龄", width: "", prop: "age" },
@@ -824,7 +659,7 @@
      // 非多个禁用
      multiple: true,
      // 用户表格数据
      userList: [], //模版列表
      userList: [], //模板列表
      multiplechoice: [], //多选结果
      patientuserList: [], //选择患者列表
      sonuserList: [], //选中患者列表
@@ -894,6 +729,7 @@
        },
      ],
      quote: false,
      serviceType:null,
    };
  },
  components: { SFtable },
@@ -902,9 +738,18 @@
    this.id = this.$route.query.id;
    this.form.type = this.$route.query.type;
    this.form.typename = this.$route.query.typename;
    this.serviceType = Number(this.$route.query.serviceType);
    this.form.serviceType = Number(this.$route.query.serviceType);
    this.listDept();
    this.Acquisitiontype();
    this.Getdetails();
  },
  activated() {
    if (this.id != this.$route.query.id) {
      this.listDept();
      this.Acquisitiontype();
      this.Getdetails();
    }
  },
  methods: {
@@ -946,8 +791,103 @@
      this.currenttype = this.$route.query.type;
      this.title = "问卷内容列表";
      this.tableLabel = this.tableLabelwj;
      this.checkboxlist = ["短信", "微信", "人工电话", "智能机器人"];
      getQtemplatelist(queryParams).then((response) => {
      if (this.form.serviceType == 1) {
        this.checkboxlist = [
          {
            value: "1",
            label: "人工",
          },
          {
            value: "2",
            label: "纸质",
          },
          {
            value: "5",
            label: "微信公众号",
          },
        ];
      } else if (this.form.serviceType == 6) {
        this.checkboxlist = [
          {
            value: "3",
            label: "电话",
          },
          {
            value: "4",
            label: "短信",
          },
          {
            value: "5",
            label: "微信公众号",
          },
          {
            value: "6",
            label: "微信小程序",
          },
          {
            value: "8",
            label: "智能机器人",
          },
        ];
      } else if (this.form.serviceType == 7) {
        this.checkboxlist = [
          {
            value: "1",
            label: "人工",
          },
          {
            value: "2",
            label: "纸质",
          },
          {
            value: "3",
            label: "电话",
          },
          {
            value: "4",
            label: "短信",
          },
          {
            value: "5",
            label: "微信公众号",
          },
          {
            value: "6",
            label: "微信小程序",
          },
        ];
      } else if (this.form.serviceType == 2 || this.form.serviceType == 3) {
        this.checkboxlist = [
          {
            value: "1",
            label: "人工",
          },
          {
            value: "3",
            label: "电话",
          },
          {
            value: "4",
            label: "短信",
          },
          {
            value: "5",
            label: "微信公众号",
          },
          {
            value: "6",
            label: "微信小程序",
          },
          {
            value: "8",
            label: "智能机器人",
          },
        ];
      }
      getQtemplatelist(this.topqueryParams).then((response) => {
        this.userList = response.rows;
        this.total = response.total;
      });
@@ -959,13 +899,12 @@
    },
    // 保存
    submitForm(formName) {
      // this.form.preachform = this.checkList.join(",");
      this.formatFn(1);
      this.form.preachform = this.checkList.join(",");
      if (!this.form.patTaskRelevances[0]) {
        this.$modal.msgError("请选择病人");
        return;
      }
      this.form.hospType = this.currenttype;
      const filteredArray = this.variableList.filter(
        (item) =>
          item.name !== "姓名" && item.name !== "电话" && item.name !== "地址"
@@ -980,6 +919,7 @@
      if (!this.form.type) {
        this.form.type = this.$route.query.type;
      }
      this.form.serviceType=this.serviceType;
      Editsingletask(this.form).then((res) => {
        if (res.code == 200) {
          if (this.form.taskid) {
@@ -989,19 +929,19 @@
          }
          this.$router.push({
            path: "/followvisit/tasklist",
            query: { tasktopic: 6 },
            query: { tasktopic: this.form.serviceType },
          });
        }
      });
    },
    // ----------------------表格子组件事件
    // 确认选择模版放入任务模版
    // 确认选择模板放入任务模板
    selectfn(row, type) {
      // 模版情况下获取模版信息
      // 模板情况下获取模板信息
      if (type == 1) {
        this.libName = row.svyname;
        this.libId = row.svyid;
        console.log(row, "row");
        this.Tasktemplate = row;
        this.questionList = row.svyTemplateLibScripts;
        this.previewtf = true;
@@ -1010,6 +950,19 @@
      } else if (type == 2) {
      } else if (type == 3) {
      }
    },
    // 预览
    previewfnmb() {
      console.log(this.form);
      getQtemplatelist({ svyid: this.form.libtemplateid }).then((res) => {
        if (res.code == 200) {
          console.log();
          this.questionList = res.rows[0].svyTemplateLibScripts;
          this.previewtf = true;
        }
      });
    },
    // 处理问题层变量
    Variablehandling(arr, type) {
@@ -1048,7 +1001,6 @@
      });
      if (this.patientqueryParams.allhosp == 1) {
        this.tableLabelhz = [
          { label: "序号", width: "", prop: "patid" },
          { label: "患者名称", width: "", prop: "name" },
          { label: "性别", width: "", prop: "sex" },
          { label: "年龄", width: "", prop: "age" },
@@ -1059,7 +1011,6 @@
        ];
      } else if (this.patientqueryParams.allhosp == 2) {
        this.tableLabelhz = [
          { label: "序号", width: "", prop: "patid" },
          { label: "患者名称", width: "", prop: "name" },
          { label: "性别", width: "", prop: "sex" },
          { label: "年龄", width: "", prop: "age" },
@@ -1100,6 +1051,7 @@
        const isExist = this.overallCase.find((obj) => obj.name == item.name);
        if (!isExist) {
          item.isoperation = 1;
          item.patid = item.id;
          item.hospType = this.patientqueryParams.allhosp;
          this.overallCase.push(item);
          this.form.patTaskRelevances.push(item);
@@ -1151,6 +1103,12 @@
      this.handleAddpatient();
    },
    resetQuery() {},
    handleQuerymb() {
      getQtemplatelist(this.topqueryParams).then((response) => {
        this.userList = response.rows;
        this.total = response.total;
      });
    },
    handleClosehz() {
      this.dialogVisiblepatient = false;
    },
@@ -1162,25 +1120,32 @@
    resetForm(formName) {
      this.$refs[formName].resetFields();
    },
    // 预览模版
    // 预览模板
    PreviewTemplate() {},
    Acknowledgereference() {
      this.quote = true;
    },
    // 获取详情
    Getdetails() {
      this.form= {
        patTaskRelevances: [],
        sendType: 1,
        templatename: "",
        templateid: null,
        libtemplateid: null,
      };
      this.questionList=[];
      if (this.id) {
        Questionnairetaskget({ taskid: this.id }).then((res) => {
          let filteredArray = "";
          console.log(2233);
          if (res.code == 200) {
            this.form = res.data;
            this.form.serviceType=this.serviceType;
            this.form.patTaskRelevances = this.form.patTaskRelevances
              ? this.form.patTaskRelevances
              : [];
            this.overallCase = this.form.patTaskRelevances.concat();
            this.formatFn(2);
            this.checkList = this.form.preachform.split(",");
            console.log(this.form.showDate, "this.form");
            this.daytime = this.form.showDate.split(",");
            if (this.form.showTimeMorn) {
@@ -1298,10 +1263,10 @@
      if (this.time3) this.form.showTimeNight = this.time3.join(",");
      console.log(combinedData, "combinedData");
    },
    // 查看模版
    // 查看模板
    previewGo() {
      this.$router.push({
        path: "/knowledge/templateku/configurat/",
        path: "/knowledge/tpuconfigurat/",
        query: { id: this.previewid, task: true, data: this.form },
      });
    },
@@ -1309,19 +1274,20 @@
      let id = this.Tasktemplate.id;
      this.Tasktemplate.id = null;
      console.log(this.Tasktemplate);
      this.Tasktemplate.svyTemplateLibScripts.svyTaskTemplateTargetoptions =
        this.Tasktemplate.svyTemplateLibScripts.svyLibTemplateTargetoptions;
      this.Tasktemplate.svyTemplateLibScripts.forEach((item) => {
        item.svyTaskTemplateTargetoptions = item.svyLibTemplateTargetoptions;
      });
      this.Tasktemplate.svyTaskTemplateScriptVOS =
        this.Tasktemplate.svyTemplateLibScripts;
      this.Tasktemplate.templateid = id;
      this.Tasktemplate.isoperation = 1;
      TaskQuestioncomit(this.Tasktemplate).then((response) => {
        console.log(response);
        this.previewtf = false;
        this.form.templateid = response.data;
        this.form.libtemplateid = this.libId;
        this.form.templatename = this.libName;
        this.$modal.msgSuccess("选择模版成功");
        this.$modal.msgSuccess("选择模板成功");
      });
    },
    // 处理服务形式