WXL
2024-11-26 007d3884ad259883d7a5db6714876e46525ae717
src/views/repositoryai/verbaltrick/particulars/index.vue
@@ -7,14 +7,14 @@
          <el-step>
            <template slot="title">
              <span style="cursor: pointer" @click="Editprogress = 1"
                >问题库编辑</span
                >话术基础信息编辑</span
              >
            </template>
          </el-step>
          <el-step>
            <template slot="title">
              <span style="cursor: pointer" @click="nextstep"
                >问题指标编辑</span
                >话术指标编辑</span
              >
            </template>
          </el-step>
@@ -40,6 +40,38 @@
          :rules="rules"
          label-width="100px"
        >
        <el-row :gutter="20">
            <el-col :span="12">
              <el-form-item label="问题主旨" prop="scriptTopic">
                <el-input
                  v-model="indexform.scriptTopic"
                  placeholder="请输入问题主旨"
                  maxlength="80"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-form-item label="问题文本" prop="scriptContent">
                <el-input
                  :rows="2"
                  type="textarea"
                  id="scriptContent"
                  show-word-limit
                  placeholder="请输入内容"
                  v-model.sync="indexform.scriptContent"
                  @focus="handleInput('scriptContent')"
                />
              </el-form-item>
              <el-form-item label="问题描述" prop="scriptDesc">
                <el-input
                  :rows="1"
                  type="textarea"
                  id="scriptDesc"
                  show-word-limit
                  placeholder="请输入描述内容"
                  v-model.sync="indexform.scriptDesc"
                />
              </el-form-item>
          <el-row>
            <el-col :span="12">
              <el-form-item label="语言" prop="deptId">
@@ -109,17 +141,7 @@
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="20">
            <el-col :span="20">
              <el-form-item label="问题主旨" prop="scriptTopic">
                <el-input
                  v-model="indexform.scriptTopic"
                  placeholder="请输入问题主旨"
                  maxlength="80"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <el-form-item label="标签" prop="desc">
            <div class="xinz-inf">
              <el-tag
@@ -202,7 +224,7 @@
              </div>
            </el-form-item>
          </el-drawer>
          <el-row>
          <!-- <el-row>
            <el-col :span="6">
              <el-form-item label="仅限院区" prop="region">
                <el-select
@@ -239,7 +261,7 @@
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          </el-row> -->
          <el-row>
            <el-col :span="24">
              <el-form-item label="问题变量" prop="scriptContent">
@@ -260,21 +282,21 @@
          >
          <el-row>
            <el-col :span="24">
              <el-form-item label="问题文本" prop="scriptContent">
              <el-form-item label="语音文本" prop="scriptContent">
                <el-input
                  :rows="2"
                  type="textarea"
                  id="scriptContent"
                  show-word-limit
                  placeholder="请输入内容"
                  v-model.sync="indexform.scriptContent"
                  v-model.sync="indexform.ivrtext"
                  @focus="handleInput('scriptContent')"
                />
              </el-form-item> </el-col
          ></el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="问题语音" prop="verbaltrickyy">
              <el-form-item label="语音文件" prop="verbaltrickyy">
                <el-upload
                  class="upload-demo"
                  :action="uploadImgUrl"
@@ -291,17 +313,17 @@
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <span style="font-size: 12px">{{
                indexform.scriptVoice.substring(
                  indexform.scriptVoice.lastIndexOf("/") + 1
              <span style="font-size: 12px" v-if="indexform.ivrVoice">{{
                indexform.ivrVoice.substring(
                  indexform.ivrVoice.lastIndexOf("/") + 1
                )
              }}</span>
            </el-col>
            <el-col :span="6">
              <mini-audio
                :audio-source="
                  indexform.scriptVoice
                    ? indexform.scriptVoice
                  indexform.ivrVoice
                    ? indexform.ivrVoice
                    : 'https://example.com/example.mp3'
                "
              ></mini-audio>
@@ -328,6 +350,7 @@
                <el-upload
                  class="upload-demo"
                  :action="uploadImgUrl"
                  :show-file-list="false"
                  :headers="headers"
                  :on-success="
                    (response, file) => handleChange(response, file, 2)
@@ -340,7 +363,7 @@
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <span style="font-size: 12px">{{
              <span style="font-size: 12px" v-if="indexform.nomatchvoice">{{
                indexform.nomatchvoice.substring(
                  indexform.nomatchvoice.lastIndexOf("/") + 1
                )
@@ -358,7 +381,7 @@
          </el-row>
          <el-row>
            <el-col :span="24">
              <el-form-item label="无声文本" prop="slienceText">
              <el-form-item label="静默文本" prop="slienceText">
                <el-input
                  type="textarea"
                  :rows="2"
@@ -372,10 +395,11 @@
          ></el-row>
          <el-row>
            <el-col :span="6">
              <el-form-item label="无声语音" prop="verbaltrickyy">
              <el-form-item label="静默语音" prop="verbaltrickyy">
                <el-upload
                  class="upload-demo"
                  :action="uploadImgUrl"
                  :show-file-list="false"
                  :headers="headers"
                  :on-success="
                    (response, file) => handleChange(response, file, 3)
@@ -388,7 +412,7 @@
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <span style="font-size: 12px">{{
              <span style="font-size: 12px" v-if="indexform.sliencevoice">{{
                indexform.sliencevoice.substring(
                  indexform.sliencevoice.lastIndexOf("/") + 1
                )
@@ -425,6 +449,7 @@
                <el-upload
                  class="upload-demo"
                  :action="uploadImgUrl"
                  :show-file-list="false"
                  :headers="headers"
                  :on-success="
                    (response, file) => handleChange(response, file, 4)
@@ -437,7 +462,7 @@
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <span style="font-size: 12px">{{
              <span style="font-size: 12px" v-if="indexform.noclearlyvoice">{{
                indexform.noclearlyvoice.substring(
                  indexform.noclearlyvoice.lastIndexOf("/") + 1
                )
@@ -501,7 +526,10 @@
          <el-row>
            <el-col :span="24">
              <el-form-item label="值类型">
                <el-radio-group disabled v-model="indexform.valueType">
                <el-radio-group
                  :disabled="indexform.targetid"
                  v-model="indexform.valueType"
                >
                  <el-radio :label="1">选项</el-radio>
                  <el-radio :label="2">文本</el-radio>
                  <el-radio :label="3">数值</el-radio>
@@ -509,16 +537,19 @@
              </el-form-item>
              <el-form-item label="题目类型">
                <el-radio-group disabled v-model="indexform.scriptType">
                <el-radio-group
                  @input="typeselection"
                  :disabled="indexform.targetid"
                  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="2">多选</el-radio> -->
                  <el-radio :label="4">问答</el-radio>
                </el-radio-group>
              </el-form-item>
            </el-col></el-row
          >
          <div v-if="indexform.valueType == 1">
          <div v-if="indexform.scriptType == 1 || indexform.scriptType == 2">
            <el-card class="box-card" style="margin-bottom: 20px">
              <Regular
                :TargetoptionList="indexform.ivrLibaScriptTargetoptionList"
@@ -534,14 +565,16 @@
              <el-col :span="12">
                <el-form-item label="测试输入" prop="targetvalue">
                  <el-input
                    v-model="testvalue"
                    v-model="indexform.content"
                    placeholder="请输入测试内容"
                    maxlength="40"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="4">
                <el-button type="success">开始测试</el-button>
                <el-button type="success" @click="testtagerlist"
                  >开始测试</el-button
                >
              </el-col>
            </el-row>
            <div style="margin-bottom: 20px">
@@ -592,6 +625,17 @@
              style="width: 200px"
              @keyup.enter.native="gettargetInfo"
            />
          </el-form-item>
          <el-form-item label="指标类型" prop="scriptType">
            <el-select v-model="queryParams.scriptType" placeholder="请选择">
              <el-option
                v-for="(item, index) in qyoptions"
                :key="item.value"
                :label="item.label"
                :value="item.value"
              >
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item>
@@ -696,6 +740,9 @@
        ivrLibaScriptTargetoptionList: [],
        ivrLibaScriptTagList: [],
        suitway: "2",
        noMatchText:'抱歉,我没有听懂,您能再说一遍吗?',
        noClearlyText:'抱歉,我没有听清您说的话,您可以再说一次吗?',
        slienceText:'抱歉,我没有听到您说的话,您可以再说一次吗?',
      },
      mode: [],
      questionclass: [],
@@ -723,6 +770,7 @@
      addvalue: "添加题目",
      languagelist: [], //语言列表
      qyoptions: [],
      // 查询参数
      queryParams: {
        pageNum: 1,
@@ -740,12 +788,16 @@
    this.languagelist = store.getters.languagelist;
    this.usable = store.getters.usable;
    this.courtyardlist = store.getters.courtyardlist;
    this.qyoptions = store.getters.askvaluetype;
  },
  methods: {
    // 获取详情数据
    getverbaltrick() {
      let id = this.$route.query.id;
      this.indexform.language = "普通话";
      this.indexform.isAvailable = "1";
      if (id) {
        getverbaltrick({ id: id }).then((res) => {
          this.indexform = res.data;
@@ -816,33 +868,21 @@
      }
    },
    // 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("已取消");
    //       });
    //   });
    // },
    testtagerlist() {
      if (this.indexform.content) {
        let data = this.indexform;
        data.targetoptionList =
          this.indexform.ivrLibaScriptTargetoptionList.concat(this.dellist);
        testtagerlist(data).then((res) => {
          this.$modal.msgSuccess("测试成功");
          this.testgovalue = res.msg;
          this.getList();
        });
      } else {
        this.$modal.msgError("请填写测试内容");
        return;
      }
    },
    // 选择指标
    selectlabel(row) {
      this.$modal
@@ -870,6 +910,7 @@
        .catch(() => {});
    },
    gettargetInfo() {
      this.queryParams.suitWay = 2;
      gettargetInfo(this.queryParams).then((res) => {
        console.log(res);
        this.targetList = res.rows;
@@ -885,6 +926,25 @@
      this.gettargetInfo();
    },
    // 题目类型更换
    typeselection(row) {
      if (
        (row == 1 || row == 2) &&
        !this.indexform.ivrLibaScriptTargetoptionList.length
      ) {
        this.indexform.ivrLibaScriptTargetoptionList.push({
          guid: 1,
          isoperation: 1,
          targetvalue: "",
          targetregex: "",
          targetregex2: "",
          dynamiccruxs: [],
          nodynamiccruxs: [],
          dynamiccruxsJson: "",
          nodynamiccruxsJson: "",
        });
      }
    },
    // 下一步
    nextstep() {
      if (this.Editprogress <= 1) {
@@ -922,9 +982,10 @@
    handleChange(response, file, additionalParam) {
      console.log(response);
      if (additionalParam == 1) {
        this.indexform.scriptVoice = response.url;
        this.indexform.ivrVoice = response.url;
      } else if (additionalParam == 2) {
        this.indexform.nomatchvoice = response.url;
        console.log(this.indexform.nomatchvoice);
      } else if (additionalParam == 3) {
        this.indexform.sliencevoice = response.url;
      } else if (additionalParam == 4) {
@@ -1156,7 +1217,7 @@
.sidecolumn {
  margin: 20px;
  margin-bottom: 0;
  padding: 20px;
  padding: 15px;
  background: #edf1f7;
  border: 1px solid #dcdfe6;
  -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12),
@@ -1164,6 +1225,7 @@
}
.leftvlue {
  margin: 20px;
  margin-top: 10px;
  padding: 30px;
  background: #ffff;
  border: 1px solid #dcdfe6;