WXL
2025-04-14 6e54a6688661a05de7c418612cea8b38bbc2dee3
src/views/repositoryai/templateku/index.vue
@@ -3,8 +3,8 @@
    <!-- 左侧栏 -->
    <div class="sidecolumn">
      <div class="sidecolumn-top">
        <div class="top-wj">模版类型</div>
        <div class="top-tj" @click="dialogFormVisible = true">+添加</div>
        <div class="top-wj">模板类型</div>
        <div class="top-tj" @click="Newcategory">+添加</div>
      </div>
      <div class="center-ss">
        <el-input
@@ -29,7 +29,7 @@
        >
          <span class="custom-tree-node" slot-scope="{ node, data }">
            <span>{{ node.label }}</span>
            <span>
            <span v-if="data.id > 0">
              <el-button
                type="text"
                icon="el-icon-delete"
@@ -37,6 +37,17 @@
                size="mini"
                @click="() => remove(node, data)"
              >
              </el-button>
            </span>
            <span v-if="data.id > 0">
              <el-button
                type="text"
                circle
                size="mini"
                @click="() => altertag(node, data)"
                ><span class="button-textxg"
                  ><i class="el-icon-edit-outline"></i
                ></span>
              </el-button>
            </span>
          </span>
@@ -57,55 +68,35 @@
              v-show="showSearch"
              label-width="98px"
            >
              <el-form-item label="模版标题" prop="userName">
              <el-form-item label="模板标题" prop="templateName">
                <el-input
                  v-model="queryParams.userName"
                  v-model="queryParams.templateName"
                  placeholder="请输入"
                  clearable
                  style="width: 200px"
                  @keyup.enter.native="handleQuery"
                />
              </el-form-item>
              <el-form-item label="适用科室" prop="region">
                <el-cascader
                  v-model="queryParams.administrative"
                  :options="deptList"
                  :props="props"
                  :show-all-levels="false"
                  clearable
              <el-form-item label="适用院区" prop="region">
                <el-select
                  v-model="campus"
                  size="medium"
                  multiple
                  filterable
                  placeholder="请选择分类"
                >
                  <template slot-scope="{ node, data }">
                    <span>{{ data.deptName }}</span>
                    <span v-if="!node.isLeaf">
                      ({{ data.children.length }})
                    </span>
                  </template>
                </el-cascader>
              </el-form-item>
              <el-form-item label="可用状态" prop="status">
                <el-select v-model="queryParams.status" placeholder="请选择">
                  <el-option
                    v-for="item in qyoptions"
                    :key="item.value"
                    class="ruleFormaa"
                    v-for="item in courtyardlist"
                    :key="item.label"
                    :label="item.label"
                    :value="item.value"
                    :value="item.label"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item label="适用方式" prop="status">
                <el-select v-model="queryParams.status" placeholder="请选择">
                  <el-option
                    v-for="item in languagelist"
                    :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="queryParams.status" placeholder="请选择">
              <el-form-item label="可用状态" prop="usestate">
                <el-select v-model="queryParams.usestate" placeholder="请选择">
                  <el-option
                    v-for="item in qyoptions"
                    :key="item.value"
@@ -160,7 +151,7 @@
              </el-col>
              <!-- <el-col :span="1.5"> </el-col> -->
            </el-row>
            <!-- 标准模版 -->
            <!-- 标准模板 -->
            <el-table
              v-loading="loading"
              :data="userList"
@@ -168,9 +159,15 @@
              @selection-change="handleSelectionChange"
            >
              <el-table-column type="selection" width="50" align="center" />
              <el-table-column label="序号" fixed align="center" key="id" prop="id" />
              <el-table-column
                label="模版名称"
                label="序号"
                fixed
                align="center"
                key="id"
                prop="id"
              />
              <el-table-column
                label="模板名称"
                fixed
                align="center"
                key="templateName"
@@ -316,7 +313,7 @@
                </template>
              </el-table-column>
            </el-table>
            <!-- 通用模版 -->
            <!-- 通用模板 -->
            <!-- 底部分页 -->
            <pagination
@@ -331,11 +328,16 @@
      </div>
    </div>
    <!-- 添加类别弹框 -->
    <el-dialog title="新增类别" width="30%" :visible.sync="dialogFormVisible">
    <el-dialog
      :title="title"
      width="30%"
      :close-on-click-modal="false"
      :visible.sync="dialogFormVisible"
    >
      <div style="text-align: center; margin-bottom: 20px">
        <el-radio-group v-model="radio">
          <el-radio-button label="主分类"></el-radio-button>
          <el-radio-button label="子分类"></el-radio-button>
          <el-radio-button label="主分类" v-show="zifon"></el-radio-button>
          <el-radio-button label="子分类" v-show="zufon"></el-radio-button>
        </el-radio-group>
      </div>
      <el-divider></el-divider>
@@ -359,7 +361,7 @@
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="dialogFormVisible = false">取 消</el-button>
        <el-button @click="getDeptTree()">取 消</el-button>
        <el-button type="primary" @click="submitsidecolumn">确 定</el-button>
      </div>
    </el-dialog>
@@ -411,6 +413,68 @@
        <el-button type="primary" @click="confirmillness">确 定</el-button>
      </span>
    </el-dialog>
    <!-- 随访题目预览 -->
    <el-dialog title="随访题目预览" :visible.sync="topicVisible" width="50%">
      <div class="preview-left">
        <div v-for="item in topicform.ivrLibaTemplateScriptVOList">
          <!-- 单选 -->
          <div
            class="scriptTopic-dev"
            :key="item.targetid"
            v-if="item.valueType == 1"
          >
            <div class="dev-text">
              {{ item.targetid }}、[单选]<span>{{ item.scriptContent }}</span>
            </div>
            <div class="dev-xx">
              <el-radio-group v-model="item.remark">
                <el-radio
                  v-for="(items, index) in item.ivrLibaScriptTargetoptionList"
                  :key="index"
                  :label="index"
                  >{{ items.targetvalue }}</el-radio
                >
              </el-radio-group>
            </div>
          </div>
          <!-- 多选 -->
          <div
            class="scriptTopic-dev"
            :key="item.targetid"
            v-if="item.valueType == 2"
          >
            <div class="dev-text">
              {{ item.targetid }}、[多选]<span>{{ item.scriptContent }}</span>
            </div>
            <div class="dev-xx">
              <el-checkbox-group v-model="item.remark">
                <el-checkbox
                  v-for="(items, index) in item.ivrLibaScriptTargetoptionList"
                  :key="index"
                  :label="index"
                >
                  {{ items.targetvalue }}
                </el-checkbox>
              </el-checkbox-group>
            </div>
          </div>
          <!-- 填空 -->
          <div
            class="scriptTopic-dev"
            :key="item.targetid"
            v-if="item.valueType == 3"
          >
            <div class="dev-text">
              {{ item.targetid }}、[填空]<span>{{ item.scriptContent }}</span>
            </div>
            <div class="dev-xx">
              <el-input placeholder="请输入答案" v-model="radioas" clearable>
              </el-input>
            </div>
          </div>
        </div>
      </div>
    </el-dialog>
  </div>
</template>
@@ -421,6 +485,7 @@
  getFollowupclassify,
  delFollowupclassify,
  addFollowupclassify,
  editFollowupclassify,
  addtargetillness,
  getvFollowup,
  compileFollowup,
@@ -452,6 +517,8 @@
      total: 0,
      namequestionnaire: "",
      haoquestionnaire: "",
      topicform: {},
      topicVisible: false,
      idds: "",
      amendtag: false, //是否修改类别
      dialogFormVisible: false, //修改添加类别弹框
@@ -463,7 +530,7 @@
      // 表格数据
      userList: [],
      // 弹出层标题
      title: "",
      title: "类别编辑",
      // 是否显示弹出层
      open: false,
      // 日期范围
@@ -489,11 +556,14 @@
        pageNum: 1,
        pageSize: 10,
      },
      campus: [],
      // 表单校验
      rules: {},
      indexid: null,
      inputValue: "",
      radio: "主分类",
      zufon: true,
      zifon: true,
      inputVisible: false,
      illnessVisible: false, //指标疾病弹框
      deptOptions: [],
@@ -509,6 +579,7 @@
      mode: [],
      languagelist: [],
      qyoptions: [],
      courtyardlist: [],
    };
  },
  watch: {
@@ -520,15 +591,19 @@
  created() {
    this.getList();
    this.getDeptTree();
    this.zufon = true;
    this.zifon = true;
    this.mode = store.getters.mode;
    this.languagelist = store.getters.languagelist;
    this.qyoptions = store.getters.usable;
    this.precedencetype = store.getters.precedencetype;
    this.courtyardlist = store.getters.courtyardlist;
  },
  methods: {
    /** 查询信息 */
    getList() {
      this.queryParams.campus = this.campus.join(",");
      getFollowuplist(this.queryParams).then((res) => {
        console.log(res);
        console.log(this.userList);
@@ -537,19 +612,20 @@
        console.log(this.userList[0].campus.split(","));
      });
      listDept(this.queryParams).then((response) => {
      listDept({ pageNum: 1, pageSize: 10 }).then((response) => {
        this.deptList = this.handleTree(response.data, "deptId");
      });
    },
    // 复制模版
    // 复制模板
    copyfn() {},
    // 下载模版
    // 下载模板
    downloadfn() {},
    // 跳转编辑话术页面
    compileUpdate(row) {
      // this.$router.replace("/tpuconfigurat");
      this.$router.push({
        path: "/knowledge/templateku/configurat/",
        path: "/knowledge/tpuconfigurat/",
        query: { id: row.id },
      });
    },
@@ -603,7 +679,12 @@
      this.multiple = !selection.length;
    },
    /** 新增按钮操作 */
    handleAdd() {},
    handleAdd() {
      this.$router.push({
        path: "/knowledge/tpuconfigurat/",
        query: { id: null, assortid: this.queryParams.assortid },
      });
    },
    /** 删除按钮操作 */
    handleDelete(row) {
@@ -630,12 +711,21 @@
    getDeptTree() {
      getFollowupclassify({}).then((res) => {
        this.deptOptions = res.rows;
        console.log(res);
        this.dialogFormVisible = false;
      });
    },
    // 添加类别树
    submitsidecolumn() {
      if (this.classifyform.id) {
        editFollowupclassify(this.classifyform).then((res) => {
          this.getDeptTree();
          this.$modal.msgSuccess("修改成功");
          this.classifyform = {};
          this.dialogFormVisible = false;
        });
        return;
      }
      let calssvalue = {};
      if (
        this.classifyform.pid &&
@@ -688,6 +778,35 @@
          })
          .catch(() => {});
      }
    },
    altertag(a, b) {
      this.dialogFormVisible = true;
      if (!b.pid) {
        this.radio = "主分类";
        this.title = "修改主分类";
        this.zufon = false;
      } else {
        this.radio = "子分类";
        this.title = "修改子分类";
        this.zifon = false;
      }
      this.classifyform = b;
      this.dialogFormVisible = true;
    },
    Newcategory() {
      this.classifyform = {}; //类别表单
        this.radio = "主分类";
      this.dialogFormVisible = true;
      this.zifon = true;
      this.zufon = true;
    },
    // 预览
    preview(row) {
      getvFollowup({ id: row.id }).then((res) => {
        this.topicform = res.data;
        console.log(this.topicform);
        this.topicVisible = true;
      });
    },
    // 筛选节点
@@ -921,6 +1040,22 @@
    font-size: 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;
    }
  }
}
::v-deep .el-tree-node__content {
  display: -webkit-box;
  display: -ms-flexbox;
@@ -932,20 +1067,23 @@
  font-size: 20px;
  cursor: pointer;
}
::v-deep .el-tree{
::v-deep .el-tree {
  position: relative;
    cursor: default;
    border-radius: 5px;
    background: #EFF8FE;
    color: #606266;
  cursor: default;
  border-radius: 5px;
  background: #eff8fe;
  color: #606266;
  border: 1px solid #bbe1fa;
      // 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);
  // 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);
}
::v-deep .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
    background-color: #7799FB  ;
    color: #fff;
::v-deep
  .el-tree--highlight-current
  .el-tree-node.is-current
  > .el-tree-node__content {
  background-color: #7799fb;
  color: #fff;
}
::v-deep .el-button--mini.is-circle {
  padding: 7px;