WXL
2024-08-01 41b1f5280255ac539e40d4cd794532ae1829ce17
src/views/patient/propaganda/particty.vue
@@ -7,13 +7,14 @@
          <el-step
            icon="el-icon-edit"
            title="基础信息"
            description="选择宣教模版、形式等基础信息"
            description="选择模版、形式等基础信息"
          ></el-step>
          <el-step
            icon="el-icon-user"
            title="宣教对象"
            description="在本部选择宣教病人"
            title="任务主体"
            description="在本部选择服务患者"
          ></el-step>
          <el-step icon="el-icon-user" title="模版确认"></el-step>
        </el-steps>
      </div>
    </div>
@@ -21,11 +22,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">
          <!-- 基础信息 -->
@@ -35,28 +32,130 @@
            </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="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="任务描述">
                  <el-input
                    style="width: 220px"
                    v-model="form.bt"
                    placeholder="请在下方选择"
                    type="textarea"
                    v-model="form.taskDesc"
                    placeholder="请输入任务描述"
                  />
                </el-form-item>
                <el-form-item label="发送时间:" v-if="currenttype != 2">
                <el-form-item label="发送设置:" v-if="currenttype != 2">
                  <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-group>
                </el-form-item>
                <el-form-item label="发送日期:" v-if="form.sendType == 1">
                  <el-date-picker
                    v-model="form.name"
                    type="date"
                    placeholder="选择日期"
                    v-model="daytime"
                    @change="changeTimeday"
                    type="daterange"
                    range-separator="至"
                    start-placeholder="开始日期"
                    end-placeholder="结束日期"
                    value-format="yyyy-MM-dd"
                  >
                  </el-date-picker>
                </el-form-item>
                <el-form-item label="发送时间段:" v-if="currenttype != 2">
                  <el-checkbox-group v-model="checkList">
                    <el-checkbox label="上午(8:30-11:30)"></el-checkbox>
                    <el-checkbox label="下午(14:30-16:30)"></el-checkbox>
                    <el-checkbox label="夜间(18:30-20:30)"></el-checkbox>
                    <el-checkbox label="不定时"></el-checkbox>
                  </el-checkbox-group>
                <el-form-item label="发送时间点:" v-if="form.sendType == 3">
                  <div style="display: flex">
                    <div style="margin-right: 10px">
                      <el-date-picker
                        v-model="time4"
                        value-format="yyyy-MM-dd HH:mm:ss"
                        @change="Totaldate"
                        type="datetime"
                        placeholder="选择日期时间"
                      >
                      </el-date-picker>
                    </div>
                  </div>
                </el-form-item>
                <el-form-item label="发送时间段:" v-if="form.sendType == 1">
                  <div style="display: flex">
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >时间段一</span
                      >
                      <el-time-picker
                        is-range
                        arrow-control
                        @change="changeTime"
                        v-model="time1"
                        range-separator="至"
                        start-placeholder="开始时间"
                        end-placeholder="结束时间"
                        placeholder="选择时间范围"
                        value-format="HH:mm:ss"
                      >
                      </el-time-picker>
                    </div>
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >时间段二</span
                      >
                      <el-time-picker
                        is-range
                        arrow-control
                        @change="changeTime"
                        v-model="time2"
                        range-separator="至"
                        start-placeholder="开始时间"
                        end-placeholder="结束时间"
                        placeholder="选择时间范围"
                        value-format="HH:mm:ss"
                      >
                      </el-time-picker>
                    </div>
                    <div style="margin-right: 10px">
                      <span style="font-size: 18px; margin-right: 10px"
                        >时间段三</span
                      >
                      <el-time-picker
                        is-range
                        arrow-control
                        @change="changeTime"
                        v-model="time3"
                        range-separator="至"
                        start-placeholder="开始时间"
                        end-placeholder="结束时间"
                        placeholder="选择时间范围"
                        value-format="HH:mm:ss"
                      >
                      </el-time-picker>
                    </div>
                  </div>
                </el-form-item>
                <el-form-item label="服务形式">
                  <el-checkbox-group v-model="checkList">
@@ -67,215 +166,9 @@
                    ></el-checkbox>
                  </el-checkbox-group>
                </el-form-item>
                <el-form-item label="组织形式">
                  <el-radio-group v-model="form.radio">
                    <el-radio :label="3">单人宣教</el-radio>
                    <el-radio :label="6">多人集中宣教</el-radio>
                  </el-radio-group>
                </el-form-item>
                <el-form-item label="语音模版" prop="region">
                  <el-select v-model="form.region" placeholder="请选择模版">
                    <el-option label="一号模版" value="shanghai"></el-option>
                    <el-option label="二号模版" value="beijing"></el-option>
                  </el-select>
                </el-form-item>
              </el-form>
            </div>
          </div>
          <div class="examine-jic">
            <div class="headline">
              <div>{{ title }}</div>
            </div>
            <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="宣教主题" v-if="currenttype == 1">
                      <el-input v-model="topqueryParams.name"></el-input>
                    </el-form-item>
                    <el-form-item
                      label="随访名称"
                      v-if="currenttype == 2 || currenttype == 3"
                    >
                      <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>
                    <el-form-item
                      label="宣教类型"
                      prop="status"
                      v-if="currenttype == 1"
                    >
                      <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 == 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"
                    >
                      <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 label="适用形式" prop="status">
                      <el-select
                        v-model="topqueryParams.topica"
                        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.topicd"
                        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"
                        icon="el-icon-search"
                        size="medium"
                        @click="handleQuery"
                        >搜索</el-button
                      >
                      <el-button
                        icon="el-icon-refresh"
                        size="medium"
                        @click="resetQuery"
                        >重置</el-button
                      >
                    </el-form-item>
                  </el-form>
                  <el-divider></el-divider>
                  <!-- 选择任务列表 -->
                  <SFtable
                    @handleUpdate="handleUpdate"
                    @handleSelectionChange="handleSelectionChange"
                    :currentList="userList"
                    :tableLabel="tableLabel"
                    :controlsc="false"
                    :multiplechoice="false"
                  />
                  <pagination
                    v-show="total > 0"
                    :total="total"
                    :page.sync="topqueryParams.pageNum"
                    :limit.sync="topqueryParams.pageSize"
                    @pagination="getList"
                  />
                </el-row>
              </div>
            </div>
          </div>
        </div>
        <el-button type="success" @click="submitForm('ruleForm')">{{
          quote ? "立即创建" : "任务详情设置"
        }}</el-button>
        <el-button @click="resetForm('ruleForm')">重置</el-button>
      </div>
      <!-- 任务详情 -->
      <div v-if="Editprogress == 2">
        <el-alert title="在本阶段选择宣教病人" type="success" effect="dark">
        </el-alert>
        <div class="leftvlue-jbxx">
          <div class="examine-jic">
            <div class="headline">
              <div>变量匹配量参</div>
@@ -285,32 +178,29 @@
                <el-row :gutter="20">
                  <el-table :data="variableList" style="width: 100%">
                    <el-table-column
                      prop="variablename"
                      prop="name"
                      align="center"
                      label="变量名称"
                    >
                    </el-table-column>
                    <el-table-column
                      prop="character"
                      align="center"
                      label="匹配符"
                    >
                    <el-table-column prop="value" align="center" label="匹配符">
                    </el-table-column>
                    <el-table-column label="替换值" align="center">
                      <template slot-scope="scope">
                        <el-input
                          v-model="scope.row.Replacementvalue"
                          :disabled="scope.row.default"
                          v-model="scope.row.fill"
                          placeholder="请输入内容"
                        ></el-input>
                      </template>
                    </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"
@@ -324,6 +214,18 @@
              </div>
            </div>
          </div>
        </div>
        <el-button type="success" @click="nextstep('ruleForm')">{{
          quote ? "立即创建" : "任务详情配置"
        }}</el-button>
        <el-button @click="resetForm('ruleForm')">重置</el-button>
      </div>
      <!-- 任务详情 -->
      <div v-if="Editprogress == 2">
        <el-alert title="在本阶段选择随访病人" type="success" effect="dark">
        </el-alert>
        <div class="leftvlue-jbxx">
          <div class="examine-jic">
            <div class="headline">
              <div>患者列表</div>
@@ -332,7 +234,7 @@
              <div class="jic-value">
                <el-row :gutter="20">
                  <!--用户数据-->
                  <el-form
                  <!-- <el-form
                    :model="topqueryParams"
                    ref="queryForm"
                    size="small"
@@ -346,7 +248,7 @@
                    <el-form-item label="患者范围" prop="status">
                      <el-select
                        v-model="topqueryParams.topic"
                        v-model="topqueryParams.scriptTopic"
                        placeholder="请选择"
                      >
                        <el-option
@@ -361,7 +263,7 @@
                    <el-form-item label="患者状态" prop="status">
                      <el-select
                        v-model="topqueryParams.topic"
                        v-model="topqueryParams.scriptTopic"
                        placeholder="请选择"
                      >
                        <el-option
@@ -375,7 +277,7 @@
                    </el-form-item>
                    <el-form-item label="随访结果" prop="status">
                      <el-select
                        v-model="topqueryParams.topic"
                        v-model="topqueryParams.scriptTopic"
                        placeholder="请选择"
                      >
                        <el-option
@@ -412,11 +314,11 @@
                      >
                    </el-form-item>
                  </el-form>
                  <el-divider></el-divider>
                  <el-divider></el-divider> -->
                  <el-row :gutter="10" class="mb8">
                    <el-col :span="1.5">
                      <el-select
                        v-model="tasktopic"
                        v-model="patientqueryParams.allhosp"
                        placeholder="请选择新增类型"
                      >
                        <el-option
@@ -434,7 +336,7 @@
                        plain
                        icon="el-icon-plus"
                        size="medium"
                        :disabled="!tasktopic"
                        :disabled="!patientqueryParams.allhosp"
                        @click="handleAddpatient"
                        >新增</el-button
                      >
@@ -456,11 +358,15 @@
                  </el-row>
                  <!-- 选中患者列表 -->
                  <SFtable
                    @details="detailhz"
                    @handleUpdate="handleUpdate"
                    @handleSelectionChange="handleSelectionChange"
                    :currentList="sonuserList"
                    :currentList="overallCase"
                    :tableLabel="tableLabelhz"
                    :serialnumber="false"
                    :searchTrue="true"
                    :multiplechoice="false"
                    :controlxz="false"
                    :typeinfo="2"
                  />
                  <pagination
                    v-show="total > 0"
@@ -475,9 +381,9 @@
          </div>
        </div>
        <el-button type="primary" @click="laststep()">上一步</el-button>
        <el-button type="success" @click="submitForm('ruleForm')"
          >立即创建</el-button
        >
        <el-button type="success" @click="submitForm('ruleForm')">{{
          quote ? "立即创建" : "确认任务配置"
        }}</el-button>
        <el-button @click="resetForm('ruleForm')">重置</el-button>
      </div>
    </div>
@@ -487,6 +393,7 @@
      :visible.sync="dialogVisiblepatient"
      width="70%"
      :before-close="handleClosehz"
      :close-on-click-modal="false"
    >
      <div class="examine-jic">
        <div class="jic-value">
@@ -503,13 +410,160 @@
              <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"
                  v-model="patientqueryParams.scriptTopic"
                  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
                  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-form-item>
            </el-form>
            <!-- 选择患者列表 -->
            <SFtable
              ref="multipleTable"
              @handleUpdate="handleUpdate"
              @handleSelectionChange="handleSelectionChange"
              :currentList="patientuserList"
              :tableLabel="tableLabelhz"
              :serialnumber="false"
              :center="false"
              :typeinfo="3"
            />
          </el-row>
          <pagination
            v-show="patienttotal > 0"
            :total="patienttotal"
            :page.sync="patientqueryParams.pageNum"
            :limit.sync="patientqueryParams.pageSize"
            @pagination="handleAddpatient"
          />
        </div>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisiblepatient = false">取 消</el-button>
        <el-button type="primary" @click="AddDispatchpatients"
          >确定添加</el-button
        >
      </span>
    </el-dialog>
    <el-dialog title="模版预览" :visible.sync="previewtf" width="60%">
      <div class="preview-left">
        <!-- 单选 -->
        <div
          class="scriptTopic-dev"
          v-for="(item, index) in questionList"
          :key="item.aaa"
        >
          <div class="dev-text">
            {{ index + 1 }}、<span>{{ item.scriptContent }}</span>
          </div>
          <div class="dev-xx" v-if="item.valueType == 1">
            <el-radio-group v-model="item.radio">
              <el-radio
                v-for="(items, index) in item.ivrLibaScriptTargetoptionList"
                :key="items.id"
                :label="items.id"
                >{{ items.targetvalue }}
              </el-radio>
            </el-radio-group>
          </div>
          <div v-else>
            <el-input
              type="textarea"
              placeholder="未获取到信息"
              v-model.sync="item.scriptResult"
              :rows="2"
            />
          </div>
        </div>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="previewGo">前往模版详情修改</el-button>
        <el-button type="primary" @click="previewFn">确认使用</el-button>
      </span>
    </el-dialog>
    <el-drawer
      title="随访内容列表"
      :visible.sync="drawermb"
      direction="rtl"
      size="50%"
    >
      <div class="headline"></div>
      <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="随访主题"
                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="随访类型"
                prop="status"
                v-if="currenttype == 1 || currenttype == 8"
              >
                <el-select
                  v-model="topqueryParams.scriptTopic"
                  placeholder="请选择"
                >
                  <el-option
                    v-for="item in topicoptions"
                    v-for="item in taskoptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
@@ -517,13 +571,35 @@
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="出院科室" prop="status">
              <el-form-item
                label="通知类型"
                prop="status"
                v-if="currenttype == 4 || currenttype == 5"
              >
                <el-select
                  v-model="patientqueryParams.topic"
                  v-model="topqueryParams.scriptTopic"
                  placeholder="请选择"
                >
                  <el-option
                    v-for="item in topicoptions"
                    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.scriptTopic"
                  placeholder="请选择"
                >
                  <el-option
                    v-for="item in taskoptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
@@ -532,11 +608,20 @@
                </el-select>
              </el-form-item>
              <el-form-item label="出院病区" prop="status">
                <el-select
                  v-model="patientqueryParams.topic"
                  placeholder="请选择"
                >
              <el-form-item label="适用形式" prop="status">
                <el-select v-model="topqueryParams.topica" 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.topicd" placeholder="请选择">
                  <el-option
                    v-for="item in topicoptions"
                    :key="item.value"
@@ -558,118 +643,116 @@
                  icon="el-icon-refresh"
                  size="medium"
                  @click="resetQuery"
                  >取消创建</el-button
                  >重置</el-button
                >
              </el-form-item>
            </el-form>
            <!-- 选择患者列表 -->
            <el-divider></el-divider>
            <!-- 选择模版列表 -->
            <SFtable
              @handleUpdate="handleUpdate"
              @handleSelectionChange="handleSelectionChange"
              :currentList="patientuserList"
              :tableLabel="tableLabelhz"
              @selectfn="selectfn"
              :currentList="userList"
              :tableLabel="tableLabel"
              :controlsc="false"
              :multiplechoice="false"
              :typeinfo="1"
            />
            <pagination
              v-show="total > 0"
              :total="total"
              :page.sync="topqueryParams.pageNum"
              :limit.sync="topqueryParams.pageSize"
              @pagination="Acquisitiontype"
            />
          </el-row>
          <pagination
            v-show="patienttotal > 0"
            :total="patienttotal"
            :page.sync="patientqueryParams.pageNum"
            :limit.sync="patientqueryParams.pageSize"
            @pagination="handleAddpatient"
          />
        </div>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisiblepatient = false">取 消</el-button>
        <el-button type="primary" @click="AddDispatchpatients"
          >确定添加</el-button
        >
      </span>
    </el-dialog>
    </el-drawer>
  </div>
</template>
<script>
import { messagelistpatient } from "@/api/patient/homepage";
import store from "@/store";
import {
  getTaskpatient,
  getlibrarylist,
  getFollowuplist,
  getQtemplatelist,
  edithetask,
  addhetask,
  TaskTemplatecomit,
  getTaskInfo,
  gethetaskinfo,
  delhetaskinfo,
  Editsingletask,
  getvFollowup,
} from "@/api/AiCentre/index";
import { listDept } from "@/api/system/dept";
import SFtable from "@/components/SFtable"; //表格组件
export default {
  name: "ServiceDetails",
  data() {
    return {
      title: "宣教内容列表",
      currenttype: 1, //1宣教2门诊3出院4复诊5体检6问卷
      id: "",
      title: "随访内容列表",
      currenttype: 1, //1随访2门诊3出院4复诊5体检6问卷
      id: "", //
      previewid: "", //任务模版传递id
      libName: "",
      overallCase: [], //选择患者总
      allpids: [],
      libId: null, //模板库模版id
      nhh: null, //是否依照新增
      Editprogress: 1, //编辑进度
      drawermb: false, //选择模版弹窗
      previewtf: false, //预览
      loading: false, // 遮罩层
      patientloading: false, // 遮罩层
      dialogVisiblepatient: false, //添加患者弹框
      radio: 1,
      checkboxlist: [],
      tableLabel: [],
      questionList: [],
      // 患者表单
      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: [
        { label: "宣教名称", width: "", prop: "preachname" },
        { label: "宣教描述", width: "", prop: "note" },
        { label: "宣教形式", width: "", prop: "playType" },
        { label: "适用方式", width: "", prop: "suitway" },
        { label: "创建日期", width: "", prop: "uploadTime" },
        { label: "创建人(缺)", width: "", prop: "update_by" },
      ],
      tableLabelmz: [
        { label: "随访名称", width: "118", prop: "templateName" },
        { label: "随访模版", width: "130", prop: "impTemplate" },
        { label: "创建日期", width: "136", prop: "uploadTime" },
        { label: "创建人(缺)", width: "130", prop: "update_by" },
        { label: "随访名称", width: "", prop: "templateName" },
        { label: "主要内容", width: "", prop: "note" },
        { label: "修改日期", width: "", prop: "updateTime" },
        { label: "创建人(缺)", width: "", prop: "updateBy" },
      ],
      tableLabelcy: [
        { label: "随访名称", width: "118", prop: "templateName" },
        { label: "随访计划", width: "130", prop: "impTemplate" },
        { label: "创建日期", width: "136", prop: "uploadTime" },
        { label: "创建人(缺)", width: "130", prop: "update_by" },
      ],
      tableLabelfz: [
        { label: "通知名称", width: "118", prop: "templateName" },
        { label: "通知模版", width: "130", prop: "impTemplate" },
        { label: "创建日期", width: "136", prop: "uploadTime" },
        { label: "创建人(缺)", width: "130", prop: "update_by" },
      ],
      tableLabeltj: [
        { label: "通知名称", width: "118", prop: "name" },
        { label: "通知模版", width: "130", prop: "impTemplate" },
        { label: "创建日期", width: "136", prop: "uploadTime" },
        { label: "创建人(缺)", width: "130", prop: "update_by" },
      ],
      tableLabelwj: [
        { label: "问卷名称", width: "118", prop: "name" },
        { label: "问卷模版", width: "130", prop: "impTemplate" },
        { label: "创建日期", width: "136", prop: "uploadTime" },
        { label: "创建人(缺)", width: "130", prop: "update_by" },
      ],
      // 变量
      tableLabelvariable: [
        { label: "变量名称", width: "", prop: "variablename" },
        { label: "匹配符", width: "", prop: "character" },
        { label: "替换值", width: "", prop: "Replacementvalue" },
      ],
      preachform: [
        { label: "线下", value: 1 },
        { label: "电话", value: 2 },
        { label: "小程序", value: 3 },
        { label: "短信", value: 4 },
        { label: "微信公众", value: 5 },
        { label: "钉钉", value: 6 },
        { label: "智能机器人", value: 7 },
      ],
      // 时间处理
      daytime: [], //日期
      applydaytime: [], //计算日期
      time1: "", //上午时间段
      time2: "", //下午时间段
      time3: "", //晚上时间段
      time4: "", //晚上时间段
      topqueryParams: {
        pageNum: 1, //
        pageSize: 10,
@@ -683,7 +766,7 @@
        pageNum: 1, //
        pageSize: 10,
      },
      topicoptions: [],
      topicoptions: [{ children: [{ children: [] }] }],
      showSearch: true, //
      total: 0, //
      sontotal: 0, //
@@ -698,33 +781,56 @@
      userList: [], //模版列表
      patientuserList: [], //选择患者列表
      sonuserList: [], //选中患者列表
      delvariableList: [], //删除变量临时存储
      variableList: [
        {
          variablename: "姓名",
          character: "${name}",
          Replacementvalue: "龙傲天",
          name: "姓名",
          value: "${name}",
          fill: "派发时自动匹配",
          default: true,
        },
        {
          variablename: "地址",
          character: "${dzz}",
          Replacementvalue: "龙宫",
          name: "地址",
          value: "${dzz}",
          fill: "派发时自动匹配",
          default: true,
        },
        {
          variablename: "电话",
          character: "${dhh}",
          Replacementvalue: "八个八",
          name: "电话",
          value: "${dhh}",
          fill: "派发时自动匹配",
          default: true,
        },
      ], //变量列表
      transitionList: [
        {
          name: "姓名",
          value: "${name}",
          fill: "派发时自动匹配",
          default: true,
        },
        {
          name: "地址",
          value: "${dzz}",
          fill: "派发时自动匹配",
          default: true,
        },
        {
          name: "电话",
          value: "${dhh}",
          fill: "派发时自动匹配",
          default: true,
        },
      ],
      variableListTime: [],
      tasktopic: null, //新增类型
      SelectPatientslist: [],
      form: {
        name: "",
        region: "",
        date1: "",
        date2: "",
        delivery: false,
        type: [],
        resource: "",
        desc: "",
        patTaskRelevances: [],
        sendType: 1,
        templatename: "",
        templateid: null,
        libtemplateid: null,
      },
      taskoptions: [
        {
@@ -747,134 +853,236 @@
  created() {
    this.id = this.$route.query.id;
    this.Addsubtask();
    this.Getsubtask();
    this.form.type = this.$route.query.type;
    this.form.typename = this.$route.query.typename;
    this.form.nhh = this.$route.query.nhh;
    this.listDept();
    this.Acquisitiontype();
    this.Getdetails();
  },
  methods: {
    // {
    //   姓名: { "${name}": "龙傲天" },
    //   地址: { "${dzz}": "龙宫" },
    //   电话: { "${dhh}": "八个八" },
    // }
    // 变量转换对象转数组
    convertFormat1ToFormat2(data) {
      let result = [];
      for (let key in data) {
        let innerKey = Object.keys(data[key])[0];
        result.push({
          name: key,
          value: innerKey,
          fill: data[key][innerKey],
        });
      }
      return result;
    },
    // 数组转对象
    convertFormat2ToFormat1(data) {
      let result = {};
      data.forEach((item) => {
        let innerObj = {};
        innerObj[item.value] = item.fill;
        result[item.name] = innerObj;
      });
      return result;
    },
    // 获取当前类型
    Acquisitiontype() {
      let queryParams = {
        pageNum: 1,
        pageSize: 10,
        pageNum: this.topqueryParams.pageNum,
        pageSize: this.topqueryParams.pageSize,
        isavailable: "",
      };
      getTaskpatient({ allhosp: 1 }).then((res) => {
        console.log(res);
      });
      this.currenttype = this.$route.query.type;
      console.log(this.currenttype);
      if (this.currenttype == 1) {
        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) {
        this.title = "随访内容列表";
        this.tableLabel = this.tableLabelmz;
        this.checkboxlist = ["当面", "纸质", "电话", "短信", "微信公众号"];
        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) {
        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 = ["纸质", "电话", "短信", "微信公众号"];
        getFollowuplist(queryParams).then((response) => {
          this.userList = response.rows;
          this.total = response.total;
        });
      } else if (this.currenttype == 6) {
        this.title = "问卷内容列表";
        this.tableLabel = this.tableLabelwj;
        this.checkboxlist = [
          "当面",
          "多媒体",
          "纸质",
          "电话",
          "短信",
          "微信公众号",
          "微信小程序",
          "钉钉",
        ];
        getQtemplatelist(queryParams).then((response) => {
          this.userList = response.rows;
          this.total = response.total;
        });
      }
      console.log(this.currenttype, "1");
      // 出院、门诊、专病随访
      this.title = "随访内容列表";
      this.tableLabel = this.tableLabelmz;
      this.checkboxlist = ["短信", "微信", "人工电话", "智能机器人"];
      getFollowuplist(queryParams).then((response) => {
        this.userList = response.rows;
        this.total = response.total;
      });
    },
    // 下一步
    submitForm(formName) {
    nextstep() {
      if (this.Editprogress <= 3) {
        return this.Editprogress++;
      }
      // 提交
      // this.$refs[formName].validate((valid, object) => {
      //   if (valid) {
      //     alert("submit!");
      //   } else {
      //     console.log("error submit!!", object);
      //     return false;
      //   }
      // });
    },
    // 保存
    submitForm(formName) {
      // this.form.preachform = this.checkList.join(",");
      this.formatFn(1);
      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;
      }
      Editsingletask(this.form).then((res) => {
        if (res.code == 200) {
          if (this.form.taskid) {
            this.$modal.msgSuccess("新增成功");
          } else {
            this.$modal.msgSuccess("修改成功");
          }
          this.$router.go(-1);
        }
      });
    },
    // ----------------------表格子组件事件
    // 确认选择模版放入任务模版
    selectfn(row, type) {
      // 模版情况下获取模版信息
      console.log(row, "选择模版");
      this.libName = row.templateName;
      this.libId = row.id;
      getvFollowup({ id: row.id }).then((res) => {
        if (res.code == 200) {
          this.Tasktemplate = res.data;
          const data = res.data;
          this.questionList = data.ivrLibaTemplateScriptVOList;
          this.previewtf = true;
          this.previewid = data.id;
          console.log(this.questionList, "questionList");
          this.Variablehandling(data.ivrLibaTemplateScriptVOList, 1);
        }
      });
    },
    // 处理问题层变量
    Variablehandling(arr, type) {
      let Variablist = [];
      this.variableList = []; //变量列表
      if (type == 1) {
        console.log(arr);
        // 循环问题
        arr.forEach((res) => {
          console.log(JSON.parse(res.otherdata), "ss");
          // 循环选项
          JSON.parse(res.otherdata).forEach((item) => {
            if (item.default != 1) {
              Variablist.push({
                value: item.variate,
                fill: "",
                name: item.variatename,
              });
            }
          });
        });
        const Aarr = Variablist.filter(
          (obj, index, self) =>
            index ===
            self.findIndex((t) => t.name === obj.name && t.value === obj.value)
        );
        this.variableList = this.transitionList.concat(Aarr);
        console.log(this.variableList, "variableList");
        // this.form.textParam = this.convertFormat2ToFormat1(this.variableList);
      }
    },
    // 子任务二级弹框
    handleAddpatient(row) {
      console.log(row, "子组件数据");
      messagelistpatient(this.patientqueryParams).then((response) => {
      console.log(this.overallCase, "ssaaa");
      this.allpids = [];
      this.overallCase.forEach((item) => {
        this.allpids.push(item.patid);
      });
      if (this.allpids[0]) {
        this.patientqueryParams.pids = this.allpids;
        console.log(this.patientqueryParams.pids);
      } else {
        this.patientqueryParams.pids = null;
      }
      getTaskpatient(this.patientqueryParams).then((response) => {
        console.log(response);
        this.patientuserList = response.rows;
        this.patienttotal = response.total;
        this.loading = false;
        this.Restorecheck();
      });
      this.dialogVisiblepatient = true;
    },
    handleUpdate() {},
    handleDelete() {},
    handleExport() {},
    // 多选框选中数据
    // 选中患者表
    handlePitchionChange() {},
    // 选择患者表数据
    handleSelectionChange(selection) {
      this.ids = null;
      this.ids = selection.map((item) => item.patid).join(",");
      // let result = this.ids.join(",");
      console.log("多选患者");
      this.SelectPatientslist = selection;
      this.multiple = !selection.length;
      console.log(this.ids);
      // 赋值给整体选中数组
      this.SelectPatientslist.forEach((item) => {
        const isExist = this.overallCase.find((obj) => obj.name == item.name);
        if (!isExist) {
          console.log(this.patientqueryParams.allhosp, "allhosp");
          item.isoperation = 1;
          item.hospType = this.patientqueryParams.allhosp;
          this.overallCase.push(item);
          this.form.patTaskRelevances.push(item);
          console.log(this.overallCase, "this.overallCase");
        }
      });
    },
    // 切换页后恢复选中
    Restorecheck() {
      console.log(this.overallCase, "this.overallCase");
      const allid = this.overallCase.map((item) => item.patid);
      const overlap = this.patientuserList.filter((value) => {
        return allid.includes(value.patid);
      });
      // 保持ids和当前页面的同步性
      this.SelectPatientslist = overlap;
      console.log(this.SelectPatientslist, "进入分页SelectPatientslist");
      this.toggleSelection(overlap);
    },
    // 挂载选择状态
    toggleSelection(rows) {
      if (rows) {
        this.decision = true;
        this.$nextTick(() => {
          rows.forEach((row) => {
            this.$refs.multipleTable.toggleRowSelection(row, true);
          });
          this.decision = false;
        });
        console.log(123);
      } else {
        this.$refs.multipleTable.clearSelection();
      }
    },
    // 删除选中患者
    detailhz(row, info) {
      this.$modal
        .confirm('是否确认删除患者"' + row.name + '"的服务项?')
        .then(() => {
          let indexa = this.overallCase.indexOf(row);
          let indexb = this.form.patTaskRelevances.indexOf(row);
          this.overallCase.splice(indexa, 1);
          this.form.patTaskRelevances[indexb].isoperation = 3;
          this.$modal.msgSuccess("删除成功");
        });
    },
    getList() {},
    handleQuery() {},
    handleQuery() {
      this.handleAddpatient();
    },
    resetQuery() {},
    handleClosehz() {
      this.dialogVisiblepatient = false;
@@ -892,40 +1100,196 @@
    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 = "";
          console.log(2233);
          if (res.code == 200) {
            this.form = res.data;
            this.overallCase = this.form.patTaskRelevances.concat();
            this.formatFn(2);
            console.log(this.form.showDate, "this.form");
            this.daytime = this.form.showDate.split(",");
            this.changeTimeday(this.daytime);
            if (this.form.showTimeMorn) {
              if (this.form.sendType == 3) {
                this.time4 = this.form.showTimeMorn;
              } else {
                this.time1 = this.form.showTimeMorn.split(",");
              }
            }
            if (this.form.showTimeNoon)
              this.time2 = this.form.showTimeNoon.split(",");
            if (this.form.showTimeNight)
              this.time3 = this.form.showTimeNight.split(",");
            console.log(1122);
            filteredArray = this.convertFormat1ToFormat2(this.form.textParam);
            this.variableList = this.transitionList.concat(filteredArray);
          } else {
            this.$modal.msgError(res.code);
          }
        });
      }
    },
    // 获取科室列表
    listDept() {
      listDept().then((res) => {
        this.topicoptions = this.handleTree(res.data, "deptId");
        console.log(this.topicoptions, "topicoptions");
      });
    },
    // 新增派送患者
    AddDispatchpatients() {
      let objictpint = {};
      objictpint.patientes = this.ids;
      objictpint.pguid = 2;
      // Addpatienttask(objictpint).then((res) => {
      //   console.log(res);
      // this.SelectPatientslist.forEach((item) => {
      //   item.isoperation = 1;
      // });
      // this.form.patTaskRelevances.push(...this.SelectPatientslist);
      // this.overallCase.push(...this.SelectPatientslist);
      this.dialogVisiblepatient = false;
    },
    // 查询子任务列表
    Getsubtask() {
      this.topqueryParams.pguid = 2;
      console.log(this.topqueryParams);
      messagelistpatient(this.topqueryParams).then((res) => {
        this.userList = res.rows;
        this.total = res.total;
        console.log(this.userList);
    variableDelete(index, row) {
      this.variableList.splice(index, 1);
      row.isoperation = 3;
      this.delvariableList.push(row);
      console.log(index, row);
    },
    // 时间----------
    changeTime(row) {
      console.log(row, "时间");
      this.processingTime();
    },
    Totaldate(row) {
      console.log(row, "时间");
      this.form.sendTimeslot = [{ begantime: row, endtime: row, xh: 1 }];
      this.form.showTimeMorn = row;
      console.log(this.form.sendTimeslot, "时间");
    },
    changeTimeday(row) {
      console.log(row, "日期");
      const startDate = new Date(row[0]);
      const endDate = new Date(row[1]);
      this.applydaytime = this.getDates(startDate, endDate);
      if (!top) {
        this.processingTime();
      }
    },
    getDates(startDate, endDate) {
      const dates = [];
      let currentDate = new Date(startDate);
      while (currentDate <= endDate) {
        dates.push(this.$moment(currentDate).format("YYYY-MM-DD"));
        currentDate.setDate(currentDate.getDate() + 1);
      }
      return dates;
    },
    // 时间最终处理方法
    processingTime() {
      const combinedData = [];
      let serialnumber = 1;
      if (this.time3[0]) {
        serialnumber = 3;
      } else if (this.time2[0]) {
        serialnumber = 2;
      } else if (this.time1[0]) {
        serialnumber = 1;
      } else {
        return;
      }
      for (let i = 0; i < this.applydaytime.length; i++) {
        combinedData.push({
          begantime: `${this.applydaytime[i]} ${this.time1[0]}`,
          endtime: `${this.applydaytime[i]} ${this.time1[1]}`,
          xh: serialnumber * i + 1,
        });
        if (serialnumber >= 2) {
          combinedData.push({
            begantime: `${this.applydaytime[i]} ${this.time2[0]}`,
            endtime: `${this.applydaytime[i]} ${this.time2[1]}`,
            xh: serialnumber * i + 2,
          });
        }
        if (serialnumber >= 3) {
          combinedData.push({
            begantime: `${this.applydaytime[i]} ${this.time3[0]}`,
            endtime: `${this.applydaytime[i]} ${this.time3[1]}`,
            xh: serialnumber * i + 3,
          });
        }
      }
      this.form.sendTimeslot = combinedData;
      // 展示数据临时存储日期、早、中、晚
      this.form.showDate = this.daytime.join(",");
      if (this.time1) this.form.showTimeMorn = this.time1.join(",");
      if (this.time2) this.form.showTimeNoon = this.time2.join(",");
      if (this.time3) this.form.showTimeNight = this.time3.join(",");
      console.log(combinedData, "combinedData");
    },
    // 查看模版
    previewGo() {
      this.$router.push({
        path: "/knowledge/templateku/configurat/",
        query: { id: this.previewid, task: true, data: this.form },
      });
    },
    // 变量---------------
    variableEdit(index, row) {
      console.log(index, row);
    previewFn() {
      let id = this.Tasktemplate.id;
      this.Tasktemplate.id = null;
      this.Tasktemplate.ivrLibaTemplateScriptVOList.ivrTaskScriptTargetoptionList =
        this.Tasktemplate.ivrLibaTemplateScriptVOList.ivrLibaScriptTargetoptionList;
      this.Tasktemplate.ivrTaskTemplateScriptVOList =
        this.Tasktemplate.ivrLibaTemplateScriptVOList;
      this.Tasktemplate.ivrLibaTemplateTagList = null;
      this.Tasktemplate.tempDetpRelevances = null;
      this.Tasktemplate.libtemplateid = id;
      this.Tasktemplate.isoperation = 1;
      this.Tasktemplate.libtemplatename = this.Tasktemplate.templatename;
      console.log(this.libName, this.libId);
      TaskTemplatecomit(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;
        console.log(this.form.templatename, "ss");
        this.$modal.msgSuccess("选择模版成功", this.form.templatename);
      });
    },
    variableDelete(index, row) {
      console.log(index, row);
    // 处理服务形式
    formatFn(type) {
      console.log(this.preachform, "preachform");
      console.log(this.checkList, "checklist");
      let list = [];
      let formlist = [];
      if (type == 1) {
        this.preachform.forEach((item) => {
          this.checkList.forEach((obj) => {
            if (item.label == obj) {
              list.push(item.value);
            }
          });
        });
        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;
      }
    },
  },
};
@@ -961,6 +1325,7 @@
    0 0 6px 0 rgba(0, 0, 0, 0.04);
}
.examine-jic {
  margin: 20px;
  .headline {
    font-size: 24px;
    border-left: 5px solid #41a1be;
@@ -1019,6 +1384,22 @@
//     margin: 0 20px;
//   }
// }
.preview-left {
  margin: 20px;
  //   margin: 20px;
  padding: 30px;
  background: #ffff;
  border: 1px solid #dcdfe6;
  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
    0 0 6px 0 rgba(0, 0, 0, 0.04);
  .scriptTopic-dev {
    margin-bottom: 25px;
    font-size: 20px !important;
    .dev-text {
      margin-bottom: 10px;
    }
  }
}
.jic-value {
  font-size: 20px;
  border-top: 1px solid #a7abac;
@@ -1075,7 +1456,7 @@
  width: 22px;
  height: 22px;
}
// ::v-deep.topic-dev.el-radio__label {
// ::v-deep.scriptTopic-dev.el-radio__label {
//   font-size: 24px;
// }
::v-deep.el-radio-group {
@@ -1083,6 +1464,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;