WXL
2024-09-05 df59cae6f3c73605a3f3b4055fdca5b4dabde2c2
src/views/patient/propaganda/QuestionnaireTask.vue
@@ -30,33 +30,68 @@
              <div>基础信息</div>
            </div>
            <div class="jic-value">
              <el-form ref="form" :model="form" label-width="105px">
              <el-form
                ref="form"
                :model="form"
                :rules="rules"
                label-width="125px"
              >
                <el-row :gutter="20">
                  <el-col :span="12"
                    ><el-form-item label="任务名称">
                    ><el-form-item label="任务名称" prop="taskName">
                      <el-input
                        style="width: 220px"
                        v-model="form.taskName"
                        placeholder="请输入任务名称"
                      /> </el-form-item
                  ></el-col>
                  <el-col :span="12"
                    ><el-form-item label="任务类型">
                      <el-select
                        v-model="serviceType"
                        placeholder="请选择新增类型"
                      >
                        <el-option
                          v-for="item in tasktypes"
                          :key="item.value"
                          :label="item.label"
                          :value="item.value"
                        >
                        </el-option>
                      </el-select> </el-form-item
                  ></el-col>
                </el-row>
                <el-form-item label="任务描述">
                <el-form-item label="任务描述" prop="taskDesc">
                  <el-input
                    type="textarea"
                    v-model="form.taskDesc"
                    placeholder="请输入任务描述"
                  />
                </el-form-item>
                <el-form-item label="发送设置:">
                <el-form-item label="服务形式" prop="taskDesc">
                  <el-checkbox-group v-model="checkList">
                    <el-checkbox
                      v-for="(item, index) in checkboxlist"
                      :key="index"
                      :label="item.value"
                    >
                      {{ item.label }}</el-checkbox
                    >
                  </el-checkbox-group>
                </el-form-item>
                <el-form-item label="执行设置" prop="sendType">
                  <el-radio-group v-model="form.sendType">
                    <el-radio :label="1">时间段发送</el-radio>
                    <el-radio :label="3">时间点发送</el-radio>
                    <el-radio :label="2">即刻发送</el-radio>
                    <el-radio :label="1">时间段执行</el-radio>
                    <el-radio :label="3">时间点执行</el-radio>
                    <el-radio :label="2">即刻执行</el-radio>
                  </el-radio-group>
                </el-form-item>
                <el-form-item label="发送日期:" v-if="form.sendType == 1">
                <el-form-item
                  label="执行日期"
                  v-if="form.sendType == 1"
                  prop="daytime"
                >
                  <el-date-picker
                    v-model="daytime"
                    @change="changeTimeday"
@@ -69,7 +104,11 @@
                  </el-date-picker>
                </el-form-item>
                <el-form-item label="发送时间点:" v-if="form.sendType == 3">
                <el-form-item
                  label="执行时间点"
                  v-if="form.sendType == 3"
                  prop="daytime"
                >
                  <div style="display: flex">
                    <div style="margin-right: 10px">
                      <el-date-picker
@@ -84,12 +123,14 @@
                  </div>
                </el-form-item>
                <el-form-item label="发送时间段:" v-if="form.sendType == 1">
                <el-form-item
                  label="执行时间段"
                  v-if="form.sendType == 1"
                  prop="daytime"
                >
                  <div style="display: flex">
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >时间段一</span
                      >
                      <span style="font-size: 18px; margin-right: 10px">①</span>
                      <el-time-picker
                        is-range
                        arrow-control
@@ -104,9 +145,7 @@
                      </el-time-picker>
                    </div>
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >时间段二</span
                      >
                      <span style="font-size: 18px; margin-right: 10px">②</span>
                      <el-time-picker
                        is-range
                        arrow-control
@@ -121,9 +160,7 @@
                      </el-time-picker>
                    </div>
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >时间段三</span
                      >
                      <span style="font-size: 18px; margin-right: 10px">③</span>
                      <el-time-picker
                        is-range
                        arrow-control
@@ -139,28 +176,21 @@
                    </div>
                  </div>
                </el-form-item>
                <el-form-item label="服务形式">
                  <el-checkbox-group v-model="checkList">
                    <el-checkbox
                      v-for="(item, index) in checkboxlist"
                      :key="index"
                      :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-form>
            </div>
          </div>
          <div class="examine-jic">
            <div class="headline">
              <div>任务使用模板</div>
              <div style="margin-left: 20px">
                <el-form :model="form">
                  <el-form-item label="">
                    <el-input
                      style="width: 300px"
                      :disabled="true"
                      v-model="form.templatename"
                      placeholder="请点击右侧选择"
                    />
                    <el-button
                      type="primary"
                      icon="el-icon-edit"
@@ -169,23 +199,21 @@
                    ></el-button>
                    <el-button
                    v-if="this.form.libtemplateid"
                      v-if="this.form.libtemplateid"
                      type="success"
                      icon="el-icon-search"
                      @click="previewfnmb"
                      circle
                    ></el-button>
                  </el-col>
                </el-row>
              </el-form>
                  </el-form-item>
                </el-form>
              </div>
            </div>
          </div>
          <div class="examine-jic">
            <div class="headline">
              <div>变量匹配量参</div>
            </div>
            <div class="examine-jic">
              <div class="jic-value">
                <div style="margin-bottom: 10px">模板中使用的变量:</div>
                <el-row :gutter="20">
                  <el-table :data="variableList" style="width: 100%">
                    <el-table-column
@@ -335,7 +363,7 @@
              v-show="showSearch"
              label-width="98px"
            >
              <el-form-item label="患者名称:">
              <el-form-item label="患者:">
                <el-input
                  v-model="patientqueryParams.name"
                  @keyup.enter.native="handleQuery"
@@ -592,13 +620,13 @@
      questionList: [],
      // 患者表单
      tableLabelhz: [
        // { label: "序号", width: "", prop: "patid" },
        { label: "患者名称", width: "", prop: "name" },
        { label: "患者", width: "", prop: "name" },
        { label: "身份证", width: "200", prop: "idcardno" },
        { label: "性别", width: "", prop: "sex" },
        { label: "年龄", width: "", prop: "age" },
        { label: "就诊科室", width: "", prop: "deptName" },
        { label: "入院日期", width: "", prop: "inhosptime" },
        { label: "创建人(缺)", width: "", prop: "update_by" },
        { label: "医生", width: "", prop: "drname" },
        { label: "科室", width: "", prop: "deptName" },
        { label: "就诊/出院日期", width: "280", prop: "inhosptime" },
      ],
      tableLabelwj: [
@@ -728,8 +756,62 @@
          label: "体检病人",
        },
      ],
      tasktypes: [
        {
          value: 1,
          label: "监测评估",
        },
        {
          value: 2,
          label: "出院随访",
        },
        {
          value: 3,
          label: "门诊随访",
        },
        {
          value: 4,
          label: "宣教关怀",
        },
        {
          value: 5,
          label: "复诊管理",
        },
        {
          value: 6,
          label: "满意度调查",
        },
        {
          value: 7,
          label: "患者报告",
        },
        {
          value: 8,
          label: "其他通知",
        },
      ],
      rules: {
        taskName: [
          { required: true, message: "任务名称不能为空", trigger: "blur" },
          {
            min: 2,
            max: 20,
            message: "任务名称长度必须介于 2 和 20 之间",
            trigger: "blur",
          },
        ],
        taskDesc: [
          { required: true, message: "任务描述不能为空", trigger: "blur" },
        ],
        sendType: [
          { required: true, message: "发送设置不能为空", trigger: "blur" },
        ],
        daytime: [{ required: true, message: "民族不能为空", trigger: "blur" }],
      },
      quote: false,
      serviceType:null,
      serviceType: null,
    };
  },
  components: { SFtable },
@@ -899,38 +981,49 @@
    },
    // 保存
    submitForm(formName) {
      this.form.preachform = this.checkList.join(",");
      if (!this.form.patTaskRelevances[0]) {
        this.$modal.msgError("请选择病人");
        return;
      }
      const filteredArray = this.variableList.filter(
        (item) =>
          item.name !== "姓名" && item.name !== "电话" && item.name !== "地址"
      );
      console.log(filteredArray, "存前变量");
      this.form.textParam = this.convertFormat2ToFormat1(filteredArray);
      if (this.form.taskid) {
        this.form.isoperation = 2;
      } else {
        this.form.isoperation = 1;
      }
      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) {
            this.$modal.msgSuccess("新增成功");
      this.$refs["form"].validate((valid) => {
        if (valid) {
          if (this.checkList[0]) {
            this.form.preachform = this.checkList.join(",");
          } else {
            this.$modal.msgSuccess("修改成功");
            this.$modal.msgError("请选择服务类型");
            return;
          }
          this.$router.push({
            path: "/followvisit/tasklist",
            query: { tasktopic: this.form.serviceType },
          if (!this.form.patTaskRelevances[0]) {
            this.$modal.msgError("请选择病人");
            return;
          }
          const filteredArray = this.variableList.filter(
            (item) =>
              item.name !== "姓名" &&
              item.name !== "电话" &&
              item.name !== "地址"
          );
          this.form.textParam = this.convertFormat2ToFormat1(filteredArray);
          if (this.form.taskid) {
            this.form.isoperation = 2;
          } else {
            this.form.isoperation = 1;
          }
          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) {
                this.$modal.msgSuccess("新增成功");
              } else {
                this.$modal.msgSuccess("修改成功");
              }
              this.$router.push({
                path: "/followvisit/tasklist",
                query: { tasktopic: this.form.serviceType },
              });
            }
          });
        }else{
          this.$modal.msgError("表单内容未完善,请检查");
        }
      });
    },
@@ -1001,17 +1094,17 @@
      });
      if (this.patientqueryParams.allhosp == 1) {
        this.tableLabelhz = [
          { label: "患者名称", width: "", prop: "name" },
          { label: "患者", width: "", prop: "name" },
          { label: "身份证", width: "200", prop: "idcardno" },
          { label: "性别", width: "", prop: "sex" },
          { label: "年龄", width: "", prop: "age" },
          { label: "主任医师", width: "", prop: "drname" },
          { label: "就诊科室", width: "", prop: "deptName" },
          { label: "入院日期", width: "", prop: "inhosptime" },
          { label: "创建人", width: "", prop: "createBy" },
          { label: "医生", width: "", prop: "drname" },
          { label: "科室", width: "", prop: "deptName" },
          { label: "就诊/出院日期", width: "280", prop: "inhosptime" },
        ];
      } else if (this.patientqueryParams.allhosp == 2) {
        this.tableLabelhz = [
          { label: "患者名称", width: "", prop: "name" },
          { label: "患者", width: "", prop: "name" },
          { label: "性别", width: "", prop: "sex" },
          { label: "年龄", width: "", prop: "age" },
          { label: "诊断", width: "", prop: "diagname" },
@@ -1127,20 +1220,20 @@
    },
    // 获取详情
    Getdetails() {
      this.form= {
      this.form = {
        patTaskRelevances: [],
        sendType: 1,
        templatename: "",
        templateid: null,
        libtemplateid: null,
      };
      this.questionList=[];
      this.questionList = [];
      if (this.id) {
        Questionnairetaskget({ taskid: this.id }).then((res) => {
          let filteredArray = "";
          if (res.code == 200) {
            this.form = res.data;
            this.form.serviceType=this.serviceType;
            this.form.serviceType = this.serviceType;
            this.form.patTaskRelevances = this.form.patTaskRelevances
              ? this.form.patTaskRelevances
              : [];
@@ -1357,11 +1450,12 @@
  margin: 20px;
  .headline {
    font-size: 24px;
    height: 40px;
    border-left: 5px solid #41a1be;
    padding-left: 5px;
    margin-bottom: 10px;
    display: flex;
    justify-content: space-between;
    // justify-content: space-between;
    .Add-details {
      font-size: 18px;
      color: #02a7f0;