WXL
2024-07-29 6b6cc07fb81f05153fc07995e0a5be5596b5ca4f
src/views/repositoryai/verbaltrick/particulars/index.vue
@@ -25,7 +25,14 @@
    <div class="leftvlue">
      <!-- 基本信息 -->
      <div v-if="Editprogress == 1">
        <div class="leftvlue-jbxx">基本信息</div>
        <div class="leftvlue-jbxx">
          基本信息
          <span style="margin-left: 30px"
            ><el-button type="success" round @click="gettargetInfo"
              >+选择指标</el-button
            ></span
          >
        </div>
        <el-divider></el-divider>
        <el-form
          ref="form"
@@ -218,8 +225,8 @@
            <el-col :span="6">
              <el-form-item label="适用方式" prop="status">
                <el-select
                  disabled
                  v-model="indexform.suitway"
                  multiple
                  placeholder="请选择"
                >
                  <el-option
@@ -227,28 +234,6 @@
                    :key="item.value"
                    :label="item.label"
                    :value="item.value"
                  >
                  </el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="关联指标" prop="region">
                <el-select
                  v-model="indexform.targetid"
                  filterable
                  remote
                  reserve-keyword
                  placeholder="请输入关键词"
                  :remote-method="remoteMethod"
                  @change="targetchange"
                  :loading="loading"
                >
                  <el-option
                    v-for="item in targetlist"
                    :key="item.id"
                    :label="item.targetname"
                    :value="item.id"
                  >
                  </el-option>
                </el-select>
@@ -405,7 +390,14 @@
      </div>
      <!-- 指标设置 -->
      <div v-if="Editprogress == 2">
        <div class="leftvlue-jbxx">指标题目设置</div>
        <div class="leftvlue-jbxx">
          指标题目设置
          <span style="margin-left: 30px"
            ><el-button type="success" round @click="gettargetInfo"
              >+选择指标</el-button
            ></span
          >
        </div>
        <el-divider></el-divider>
        <el-form
          ref="form"
@@ -441,6 +433,15 @@
                  <el-radio :label="1">选项</el-radio>
                  <el-radio :label="2">文本</el-radio>
                  <el-radio :label="3">数值</el-radio>
                </el-radio-group>
              </el-form-item>
              <el-form-item label="题目类型">
                <el-radio-group disabled v-model="indexform.scriptType">
                  <el-radio :label="1">单选</el-radio>
                  <el-radio :label="2">多选</el-radio>
                  <el-radio :label="3">填空</el-radio>
                  <el-radio :label="4">问答</el-radio>
                </el-radio-group>
              </el-form-item>
            </el-col></el-row
@@ -496,6 +497,86 @@
        <el-button @click="Saveproblem()">保存数据</el-button>
      </div>
    </div>
    <el-drawer
      title="选择指标"
      :visible.sync="drawer"
      custom-class="demo-drawer"
      size="50%"
    >
      <div class="preview-left">
        <el-form
          :model="queryParams"
          ref="queryForm"
          size="small"
          :inline="true"
          label-width="98px"
        >
          <el-form-item label="标题" prop="userName">
            <el-input
              v-model="queryParams.targetname"
              placeholder="请输入"
              clearable
              style="width: 200px"
              @keyup.enter.native="gettargetInfo"
            />
          </el-form-item>
          <el-form-item>
            <el-button
              type="primary"
              icon="el-icon-search"
              size="medium"
              @click="gettargetInfo"
              >搜索</el-button
            >
            <el-button icon="el-icon-refresh" size="medium" @click="resetQuery"
              >重置</el-button
            >
          </el-form-item>
        </el-form>
        <el-table v-loading="loading" :data="targetList">
          <el-table-column
            label="标题"
            align="center"
            key="targetname"
            prop="targetname"
            width="100"
          />
          <el-table-column
            label="问题内容"
            align="center"
            key="targetdesc"
            prop="targetdesc"
            width="200"
            :show-overflow-tooltip="true"
          />
          <el-table-column
            label="操作"
            align="center"
            class-name="small-padding fixed-width"
          >
            <template slot-scope="scope">
              <el-button
                size="medium"
                type="text"
                @click="selectlabel(scope.row)"
                ><span class="button-textxg"
                  ><i class="el-icon-circle-plus-outline"></i>选择</span
                ></el-button
              >
            </template>
          </el-table-column>
        </el-table>
        <pagination
          v-show="total > 0"
          :total="total"
          :page.sync="queryParams.pageNum"
          :limit.sync="queryParams.pageSize"
          @pagination="gettargetInfo"
        />
      </div>
    </el-drawer>
  </div>
</template>
@@ -526,7 +607,9 @@
      radioas: "", //填空题答案
      dynamicTags: [],
      dellist: [],
      targetList: [],
      inputVisible: false,
      drawer: false,
      inputValue: "",
      testvalue: "",
      testgovalue: "",
@@ -534,6 +617,7 @@
      indexform: {
        ivrLibaScriptTargetoptionList: [],
        ivrLibaScriptTagList: [],
        suitway: "2",
      },
      mode: [],
      questionclass: [],
@@ -541,13 +625,6 @@
      courtyardlist: [],
      // 总条数
      total: 1,
      targetlist: [
        {
          value: "选项1",
          label: "图文",
        },
      ],
      rules: {},
      rulesa: {},
      optionstag: [],
@@ -572,11 +649,6 @@
      queryParams: {
        pageNum: 1,
        pageSize: 10,
        userName: undefined,
        phonenumber: undefined,
        status: undefined,
        deptId: undefined,
        IDnumber: undefined,
      },
      variabledeawer: false,
    };
@@ -599,8 +671,7 @@
      if (id) {
        getverbaltrick({ id: id }).then((res) => {
          this.indexform = res.data;
          if (this.indexform.suitway)
            this.indexform.suitway = this.indexform.suitway.split(",");
          this.indexform.assortid = parseInt(this.indexform.assortid);
          this.variablelist = JSON.parse(this.indexform.otherdata).length
            ? JSON.parse(this.indexform.otherdata)
@@ -608,18 +679,8 @@
          this.dynamicTags = this.indexform.ivrLibaScriptTagList.map(
            this.processElement
          );
          // this.targetlist = [
          //   {
          //     id: this.indexform.targetid,
          //     targetname: this.indexform.targetname,
          //   },
          // ];
        });
      }
      gettargetInfolist({ pageSize: 100, pageNum: 1 }).then((res) => {
        this.targetlist = res.rows;
      });
      // 树
      getbaltrickclassify({}).then((res) => {
        this.questionclass = res.rows;
@@ -630,9 +691,6 @@
    // 保存详细信息
    Saveproblem() {
      this.indexform.otherdata = JSON.stringify(this.variablelist);
      if (this.indexform.suitway) {
        this.indexform.suitway = this.indexform.suitway.join(",");
      }
      if (this.indexform.id) {
        this.indexform.ivrLibaScriptTargetoptionList =
@@ -647,6 +705,11 @@
        console.log(this.dellist);
        this.indexform.ivrLibaScriptTargetoptionList =
          this.indexform.ivrLibaScriptTargetoptionList.concat(this.dellist);
        this.indexform.targetoptions =
          this.indexform.ivrLibaScriptTargetoptionList
            .filter((item) => item.isope != 3) // 过滤掉 isope 为 3 的项
            .map((item) => item.targetvalue)
            .join(", ");
        compileverbaltrick(this.indexform).then((res) => {
          if (res.code == 200) {
            this.$modal.msgSuccess("修改成功");
@@ -674,43 +737,74 @@
        });
      }
    },
    remoteMethod(query) {
      if (query !== "") {
        this.loading = true;
        setTimeout(() => {
          this.loading = false;
          gettargetInfolist({ targetname: query }).then((res) => {
            this.targetlist = res.rows;
    // targetchange(res) {
    //   console.log(res);
    //   gettargetInfo({ id: res }).then((res) => {
    //     console.log(res.rows[0]);
    //     this.$modal
    //       .confirm('是否添加"' + res.rows[0].targetname + '"指标的选项?')
    //       .then(() => {
    //         this.indexform.valueType = res.rows[0].valueType;
    //         this.indexform.scriptType = res.rows[0].scriptType;
    //         this.indexform.scriptTopic = res.rows[0].targetname;
    //         this.indexform.targetname = res.rows[0].targetname;
    //         this.indexform.targetid = res.rows[0].id;
    //         this.indexform.targetdesc = res.rows[0].targetdesc;
    //         this.indexform.isAvailable = "0";
    //         this.indexform.language = "普通话";
    //         this.indexform.isenable = res.rows[0].isenable;
    //         this.$forceUpdate();
    //         res.rows[0].targetoptionList.forEach((item) => {
    //           item.isoperation = 1;
    //           this.indexform.ivrLibaScriptTargetoptionList.push(item);
    //         });
    //       })
    //       .catch(() => {
    //         this.$modal.msgSuccess("已取消");
    //       });
    //   });
    // },
    // 选择指标
    selectlabel(row) {
      this.$modal
        .confirm(
          '是否选择标题为"' + row.targetname + '"的指标并替换填充问题信息?'
        )
        .then(() => {
          console.log(row);
          this.indexform.valueType = row.valueType;
          this.indexform.scriptType = row.scriptType;
          this.indexform.scriptTopic = row.targetname;
          this.indexform.targetname = row.targetname;
          this.indexform.targetid = row.id;
          this.indexform.targetdesc = row.targetdesc;
          this.indexform.isAvailable = "0";
          this.indexform.language = "普通话";
          this.indexform.isenable = row.isenable;
          const labellist = row.targetoptionList;
          labellist.forEach((item) => {
            item.isoperation = 1;
            this.indexform.ivrLibaScriptTargetoptionList.push(item);
          });
        }, 200);
      } else {
        this.targetlist = [];
      }
          this.drawer = false;
        })
        .catch(() => {});
    },
    targetchange(res) {
      console.log(res);
      gettargetInfo({ id: res }).then((res) => {
        console.log(res.rows[0]);
        this.$modal
          .confirm('是否添加"' + res.rows[0].targetname + '"指标的选项?')
          .then(() => {
            this.indexform.valueType = res.rows[0].valueType;
            this.indexform.scriptTopic = res.rows[0].targetname;
            this.indexform.targetname = res.rows[0].targetname;
            this.indexform.targetdesc = res.rows[0].targetdesc;
            this.indexform.isAvailable = "0";
            this.indexform.language = "普通话";
            this.indexform.isenable = res.rows[0].isenable;
            this.$forceUpdate();
            res.rows[0].targetoptionList.forEach((item) => {
              item.isoperation = 1;
              this.indexform.ivrLibaScriptTargetoptionList.push(item);
            });
          })
          .catch(() => {
            this.$modal.msgSuccess("已取消");
          });
    gettargetInfo() {
      gettargetInfo(this.queryParams).then((res) => {
        console.log(res);
        this.targetList = res.rows;
        this.total = res.total;
        this.drawer = true;
      });
    },
    resetQuery() {
      this.queryParams = {
        pageNum: 1,
        pageSize: 10,
      };
      this.gettargetInfo();
    },
    // 下一步
@@ -1064,6 +1158,22 @@
.tsgnamebj:hover {
  background: #27c449;
}
.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 .addtopic-input {
  input {