<template>
|
<div class="Questionnairemanagement">
|
<!-- 左侧栏 -->
|
<div class="sidecolumn">
|
<div>
|
<el-steps finish-status="success" :active="Editprogress" simple>
|
<el-step>
|
<template slot="title">
|
<span style="cursor: pointer" @click="Editprogress = 1"
|
>话术基础信息编辑</span
|
>
|
</template>
|
</el-step>
|
<el-step>
|
<template slot="title">
|
<span style="cursor: pointer" @click="nextstep"
|
>话术指标编辑</span
|
>
|
</template>
|
</el-step>
|
</el-steps>
|
</div>
|
</div>
|
<!-- 右侧数据 -->
|
<div class="leftvlue">
|
<!-- 基本信息 -->
|
<div v-if="Editprogress == 1">
|
<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"
|
:model="indexform"
|
:rules="rules"
|
label-width="100px"
|
>
|
<el-row>
|
<el-col :span="12">
|
<el-form-item label="语言" prop="deptId">
|
<el-select
|
v-model="indexform.language"
|
placeholder="请选择语言"
|
>
|
<el-option
|
v-for="index in languagelist"
|
:key="index.value"
|
:label="index.label"
|
:value="index.value"
|
></el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="可用状态" prop="status">
|
<el-select
|
v-model="indexform.isAvailable"
|
placeholder="请选择状态"
|
>
|
<el-option
|
v-for="item in usable"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-row :gutter="20">
|
<el-col :span="12">
|
<el-form-item label="问题分类" prop="status">
|
<el-select
|
v-model="indexform.assortid"
|
filterable
|
placeholder="请选择分类"
|
>
|
<el-option-group
|
v-for="group in questionclass"
|
:key="group.id"
|
:label="group.indexAssortName"
|
>
|
<el-option
|
v-for="item in group.ivrLibaScriptAssortList"
|
:key="item.id"
|
:label="item.indexAssortName"
|
:value="item.id"
|
>
|
</el-option>
|
</el-option-group>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
|
<el-col :span="5">
|
<el-form-item label="版本号" prop="version">
|
<el-input
|
v-model="indexform.version"
|
placeholder="请输入"
|
maxlength="80"
|
/>
|
</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
|
:key="tag.tagname"
|
type="success"
|
v-for="tag in dynamicTags"
|
closable
|
:disable-transitions="false"
|
@close="handleClosetag(tag)"
|
>
|
{{ tag.tagname }}
|
</el-tag>
|
<el-select
|
v-model="inputValue"
|
v-if="inputVisible"
|
@change="handleInputConfirm"
|
filterable
|
remote
|
allow-create
|
reserve-keyword
|
default-first-option
|
:remote-method="remoteMethodtag"
|
:loading="loading"
|
placeholder="请选择"
|
>
|
<el-option
|
v-for="item in optionstag"
|
:key="item.tagid"
|
:label="item.tagname"
|
:value="item.tagname"
|
>
|
</el-option>
|
</el-select>
|
<el-button
|
v-else
|
class="button-new-tag"
|
size="small"
|
@click="showInput"
|
>+ 新增标签</el-button
|
>
|
</div>
|
</el-form-item>
|
<el-drawer
|
title="变量编辑"
|
:visible.sync="variabledeawer"
|
direction="ttb"
|
size="35%"
|
>
|
<el-form-item label="通知变量" prop="name">
|
<div style="margin-bottom: 5px" v-for="item in variablelist">
|
<el-row>
|
<el-col :span="5">
|
<el-input
|
v-model="item.variatename"
|
placeholder="请输入变量名"
|
></el-input>
|
</el-col>
|
<el-col :span="8" :offset="1">
|
<el-input
|
v-model="item.variate"
|
placeholder="请输入变量内容"
|
></el-input>
|
</el-col>
|
<el-col :span="8" :offset="1">
|
<el-button
|
type="success"
|
icon="el-icon-plus"
|
circle
|
@click="addvariable(item)"
|
></el-button>
|
<el-button
|
v-if="!item.default"
|
type="danger"
|
icon="el-icon-delete"
|
circle
|
@click="delvariable(item)"
|
></el-button>
|
</el-col>
|
</el-row>
|
</div>
|
</el-form-item>
|
</el-drawer>
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="仅限院区" prop="region">
|
<el-select
|
v-model="indexform.campus"
|
size="medium"
|
filterable
|
placeholder="请选择"
|
>
|
<el-option
|
class="indexformaa"
|
v-for="item in courtyardlist"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<el-form-item label="适用方式" prop="status">
|
<el-select
|
disabled
|
v-model="indexform.suitway"
|
placeholder="请选择"
|
>
|
<el-option
|
v-for="item in mode"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="24">
|
<el-form-item label="问题变量" prop="scriptContent">
|
<div style="display: flex; margin-bottom: 10px">
|
<div
|
v-for="item in variablelist"
|
:class="item.default ? 'tsgname' : 'tsgnames'"
|
@click="tsgnameto(item)"
|
>
|
{{ item.variatename }}
|
</div>
|
<div class="tsgnamebj" @click="variabledeawer = true">
|
变量编辑
|
</div>
|
</div>
|
</el-form-item>
|
</el-col></el-row
|
>
|
<el-row>
|
<el-col :span="24">
|
<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-col
|
></el-row>
|
<el-row>
|
<el-col :span="6">
|
<el-form-item label="问题语音" prop="verbaltrickyy">
|
<el-upload
|
class="upload-demo"
|
:action="uploadImgUrl"
|
:headers="headers"
|
:show-file-list="false"
|
:on-success="
|
(response, file) => handleChange(response, file, 1)
|
"
|
accept=".wav,.mp3"
|
:limit="1"
|
>
|
<el-button size="small" type="primary">点击上传</el-button>
|
</el-upload>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<span style="font-size: 12px" v-if="indexform.scriptVoice">{{
|
indexform.scriptVoice.substring(
|
indexform.scriptVoice.lastIndexOf("/") + 1
|
)
|
}}</span>
|
</el-col>
|
<el-col :span="6">
|
<mini-audio
|
:audio-source="
|
indexform.scriptVoice
|
? indexform.scriptVoice
|
: 'https://example.com/example.mp3'
|
"
|
></mini-audio>
|
</el-col>
|
</el-row>
|
|
<el-row>
|
<el-col :span="24">
|
<el-form-item label="无匹配文本" prop="noMatchText">
|
<el-input
|
type="textarea"
|
:rows="2"
|
id="noMatchText"
|
placeholder="请输入内容"
|
v-model.sync="indexform.noMatchText"
|
@focus="handleInput('noMatchText')"
|
show-word-limit
|
/>
|
</el-form-item> </el-col
|
></el-row>
|
<el-row>
|
<el-col :span="6">
|
<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, 2)
|
"
|
accept=".wav,.mp3"
|
:limit="1"
|
>
|
<el-button size="small" type="primary">点击上传</el-button>
|
</el-upload>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<span style="font-size: 12px" v-if="indexform.nomatchvoice">{{
|
indexform.nomatchvoice.substring(
|
indexform.nomatchvoice.lastIndexOf("/") + 1
|
)
|
}}</span>
|
</el-col>
|
<el-col :span="6">
|
<mini-audio
|
:audio-source="
|
indexform.nomatchvoice
|
? indexform.nomatchvoice
|
: 'https://example.com/example.mp3'
|
"
|
></mini-audio>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="24">
|
<el-form-item label="静默文本" prop="slienceText">
|
<el-input
|
type="textarea"
|
:rows="2"
|
id="slienceText"
|
placeholder="请输入内容"
|
v-model.sync="indexform.slienceText"
|
@focus="handleInput('slienceText')"
|
show-word-limit
|
/>
|
</el-form-item> </el-col
|
></el-row>
|
<el-row>
|
<el-col :span="6">
|
<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)
|
"
|
accept=".wav,.mp3"
|
:limit="1"
|
>
|
<el-button size="small" type="primary">点击上传</el-button>
|
</el-upload>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<span style="font-size: 12px" v-if="indexform.sliencevoice">{{
|
indexform.sliencevoice.substring(
|
indexform.sliencevoice.lastIndexOf("/") + 1
|
)
|
}}</span>
|
</el-col>
|
<el-col :span="6">
|
<mini-audio
|
:audio-source="
|
indexform.sliencevoice
|
? indexform.sliencevoice
|
: 'https://example.com/example.mp3'
|
"
|
></mini-audio>
|
</el-col>
|
</el-row>
|
|
<el-row>
|
<el-col :span="24">
|
<el-form-item label="听不清文本" prop="noClearlyText">
|
<el-input
|
type="textarea"
|
id="noClearlyText"
|
:rows="2"
|
placeholder="请输入内容"
|
@focus="handleInput('noClearlyText')"
|
v-model.sync="indexform.noClearlyText"
|
show-word-limit
|
/>
|
</el-form-item> </el-col
|
></el-row>
|
<el-row>
|
<el-col :span="6">
|
<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, 4)
|
"
|
accept=".wav,.mp3"
|
:limit="1"
|
>
|
<el-button size="small" type="primary">点击上传</el-button>
|
</el-upload>
|
</el-form-item>
|
</el-col>
|
<el-col :span="6">
|
<span style="font-size: 12px" v-if="indexform.noclearlyvoice">{{
|
indexform.noclearlyvoice.substring(
|
indexform.noclearlyvoice.lastIndexOf("/") + 1
|
)
|
}}</span>
|
</el-col>
|
<el-col :span="6">
|
<mini-audio
|
:audio-source="
|
indexform.noclearlyvoice
|
? indexform.noclearlyvoice
|
: 'https://example.com/example.mp3'
|
"
|
></mini-audio>
|
</el-col>
|
</el-row>
|
</el-form>
|
<div slot="footer" class="dialog-footer">
|
<el-button type="primary" @click="nextstep">下一步</el-button>
|
<el-button @click="closeFm">关 闭</el-button>
|
<el-button @click="Saveproblem()">保存数据</el-button>
|
</div>
|
</div>
|
<!-- 指标设置 -->
|
<div v-if="Editprogress == 2">
|
<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"
|
:model="indexform"
|
:rules="rules"
|
label-width="100px"
|
>
|
<el-row>
|
<el-col :span="8">
|
<el-form-item label="指标名称" prop="deptId">
|
<el-input
|
v-model="indexform.targetname"
|
placeholder="请输入指标名称"
|
maxlength="20"
|
/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="12">
|
<el-form-item label="指标描述" prop="deptId">
|
<el-input
|
v-model="indexform.targetdesc"
|
placeholder="请输入指标描述"
|
maxlength="60"
|
/>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-row>
|
<el-col :span="24">
|
<el-form-item label="值类型">
|
<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>
|
</el-radio-group>
|
</el-form-item>
|
|
<el-form-item label="题目类型">
|
<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="4">问答</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
</el-col></el-row
|
>
|
<div v-if="indexform.scriptType == 1 || indexform.scriptType == 2">
|
<el-card class="box-card" style="margin-bottom: 20px">
|
<Regular
|
:TargetoptionList="indexform.ivrLibaScriptTargetoptionList"
|
@addoption="addoption"
|
@deloption="deloption"
|
@syioption="syioption"
|
@xiayioption="xiayioption"
|
:intent="false"
|
:Verbalproblem="false"
|
/>
|
</el-card>
|
<el-row :gutter="20">
|
<el-col :span="12">
|
<el-form-item label="测试输入" prop="targetvalue">
|
<el-input
|
v-model="indexform.content"
|
placeholder="请输入测试内容"
|
maxlength="40"
|
/>
|
</el-form-item>
|
</el-col>
|
<el-col :span="4">
|
<el-button type="success" @click="testtagerlist"
|
>开始测试</el-button
|
>
|
</el-col>
|
</el-row>
|
<div style="margin-bottom: 20px">
|
<el-input
|
type="textarea"
|
:rows="4"
|
placeholder="此处展示识别结果"
|
v-model="testgovalue"
|
>
|
</el-input>
|
</div>
|
</div>
|
<div style="margin-bottom: 20px" v-else>
|
<el-input
|
type="textarea"
|
:rows="4"
|
placeholder="此处展示收集信息"
|
v-model="testgovalue"
|
>
|
</el-input>
|
</div>
|
</el-form>
|
|
<el-button type="primary" @click="laststep()">上一步</el-button>
|
<el-button type="info" @click="closeFm()">关闭</el-button>
|
<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 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>
|
<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>
|
|
<script>
|
import { listtag } from "@/api/system/label";
|
import {
|
gettagerlist,
|
testtagerlist,
|
delverbaltrickinfo,
|
compileverbaltrick,
|
getverbaltrick,
|
getbaltrickclassify,
|
gettargetInfolist,
|
gettargetInfo,
|
} from "@/api/AiCentre/index";
|
import Regular from "@/components/Regular"; //正则组件
|
import store from "@/store";
|
import { getToken } from "@/utils/auth";
|
|
export default {
|
name: "Verbalproblem",
|
components: { Regular },
|
data() {
|
return {
|
headers: {
|
Authorization: "Bearer " + getToken(),
|
},
|
uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/uploadSort",
|
Editprogress: 1, //编辑进度
|
loading: false, // 遮罩层
|
radio: "false", //单选题选中
|
radios: [], //多选题选中
|
radioas: "", //填空题答案
|
dynamicTags: [],
|
dellist: [],
|
targetList: [],
|
inputVisible: false,
|
drawer: false,
|
inputValue: "",
|
testvalue: "",
|
testgovalue: "",
|
topicobj: {},
|
indexform: {
|
ivrLibaScriptTargetoptionList: [],
|
ivrLibaScriptTagList: [],
|
suitway: "2",
|
},
|
mode: [],
|
questionclass: [],
|
currentInputId: "",
|
courtyardlist: [],
|
// 总条数
|
total: 1,
|
rules: {},
|
rulesa: {},
|
optionstag: [],
|
|
fileList: [
|
{
|
name: "food.jpeg",
|
url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100",
|
},
|
],
|
usable: [],
|
options: [],
|
variablelist: [
|
{ variatename: "姓名", variate: "${name}", default: 1 },
|
{ variatename: "电话", variate: "${phone}", default: 1 },
|
{ variatename: "病情", variate: "${illness}", default: 1 },
|
],
|
|
addvalue: "添加题目",
|
languagelist: [], //语言列表
|
qyoptions: [],
|
// 查询参数
|
queryParams: {
|
pageNum: 1,
|
pageSize: 10,
|
},
|
variabledeawer: false,
|
};
|
},
|
|
created() {
|
this.gettabList();
|
this.getverbaltrick();
|
this.mode = store.getters.mode;
|
this.valuetype = store.getters.valuetype;
|
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;
|
|
this.indexform.assortid = parseInt(this.indexform.assortid);
|
this.variablelist = JSON.parse(this.indexform.otherdata).length
|
? JSON.parse(this.indexform.otherdata)
|
: this.variablelist;
|
this.dynamicTags = this.indexform.ivrLibaScriptTagList.map(
|
this.processElement
|
);
|
});
|
}
|
// 树
|
getbaltrickclassify({}).then((res) => {
|
this.questionclass = res.rows;
|
console.log(res);
|
});
|
},
|
|
// 保存详细信息
|
Saveproblem() {
|
this.indexform.otherdata = JSON.stringify(this.variablelist);
|
|
if (this.indexform.id) {
|
this.indexform.ivrLibaScriptTargetoptionList =
|
this.indexform.ivrLibaScriptTargetoptionList.map((res) => {
|
if (res.isoperation != 1) {
|
res.isoperation = 2;
|
}
|
return res;
|
});
|
|
this.indexform.isoperation = 2;
|
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("修改成功");
|
this.$router.go(-1);
|
} else {
|
this.$message({
|
message: "修改失败",
|
type: "error",
|
});
|
}
|
});
|
} else {
|
this.indexform.isoperation = 1;
|
|
compileverbaltrick(this.indexform).then((res) => {
|
if (res.code == 200) {
|
this.$modal.msgSuccess("新增成功");
|
this.$router.go(-1);
|
} else {
|
this.$message({
|
message: "新增失败",
|
type: "error",
|
});
|
}
|
});
|
}
|
},
|
|
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
|
.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);
|
});
|
this.drawer = false;
|
})
|
.catch(() => {});
|
},
|
gettargetInfo() {
|
this.queryParams.suitWay = 2;
|
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();
|
},
|
|
// 题目类型更换
|
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) {
|
// if (this.indexform.targetid) {
|
return this.Editprogress++;
|
// } else {
|
// this.$message.warning("请先选择关联指标");
|
// }
|
} else {
|
}
|
},
|
// 上一步
|
laststep() {
|
this.Editprogress = this.Editprogress - 1;
|
},
|
// 关闭
|
closeFm() {
|
this.$confirm("退出不会保留页面内容更改, 是否继续?", "提示", {
|
confirmButtonText: "确定",
|
cancelButtonText: "取消",
|
type: "warning",
|
})
|
.then(() => {
|
this.$router.go(-1);
|
})
|
.catch(() => {
|
this.$message({
|
type: "info",
|
message: "已取消",
|
});
|
});
|
},
|
// 文件----------------------
|
// 控制文件
|
handleChange(response, file, additionalParam) {
|
console.log(response);
|
if (additionalParam == 1) {
|
this.indexform.scriptVoice = 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) {
|
this.indexform.noclearlyvoice = response.url;
|
}
|
},
|
|
// 标签-----------------
|
gettabList() {
|
const tagqueryParams = {
|
pageNum: 1,
|
pageSize: 1000,
|
tagcategoryid: "0",
|
};
|
listtag(tagqueryParams).then((response) => {
|
console.log(response);
|
this.optionstag = response.rows;
|
});
|
},
|
handleClosetag(tag) {
|
console.log(tag);
|
console.log(this.dynamicTags.indexOf(tag));
|
const lindex = this.dynamicTags.indexOf(tag);
|
this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
|
this.indexform.ivrLibaScriptTagList[lindex].isoperation = 3;
|
},
|
handleInputConfirm() {
|
let tagvalue = {};
|
let tagname = this.inputValue;
|
if (tagname) {
|
listtag({
|
pageNum: 1,
|
pageSize: 1000,
|
tagcategoryid: "0",
|
tagname: tagname,
|
}).then((res) => {
|
if (res.rows[0]) {
|
tagvalue = res.rows[0];
|
tagvalue.isoperation = 1;
|
} else {
|
tagvalue = {
|
tagname: tagname,
|
isoperation: 1,
|
};
|
}
|
this.indexform.ivrLibaScriptTagList.push(tagvalue);
|
this.dynamicTags.push(tagvalue);
|
});
|
}
|
this.inputVisible = false;
|
this.inputValue = "";
|
},
|
remoteMethodtag(query) {
|
if (query !== "") {
|
this.loading = true;
|
setTimeout(() => {
|
this.loading = false;
|
listtag({ tagname: query, tagcategoryid: "0" }).then((res) => {
|
this.optionstag = res.rows;
|
});
|
}, 200);
|
} else {
|
this.optionstag = [];
|
}
|
},
|
showInput() {
|
this.inputVisible = true;
|
},
|
//测试表单 --------------------------
|
gettagerlist() {
|
gettagerlist({ targetname: this.targetname }).then((response) => {
|
console.log(response);
|
this.optionstag = response.rows;
|
});
|
},
|
addoption() {
|
this.indexform.ivrLibaScriptTargetoptionList.push({
|
guid: 1,
|
isoperation: 1,
|
targetvalue: "",
|
targetregex: "",
|
targetregex2: "",
|
dynamiccruxs: [],
|
nodynamiccruxs: [],
|
dynamiccruxsJson: "",
|
nodynamiccruxsJson: "",
|
});
|
this.sortFn();
|
},
|
deloption(item) {
|
const index = this.indexform.ivrLibaScriptTargetoptionList.indexOf(item);
|
if (index !== -1) {
|
if (item.id) {
|
console.log(item, "chunz");
|
item.isoperation = 3;
|
this.dellist.push(item);
|
}
|
console.log(this.dellist, "dellist");
|
this.indexform.ivrLibaScriptTargetoptionList.splice(index, 1); // 从索引位置删除一个元素
|
this.sortFn();
|
} else {
|
console.log("未找到该对象");
|
}
|
},
|
getIndexInArray(arr, obj) {
|
return arr.indexOf(obj);
|
},
|
processElement(element) {
|
return { ...element, isoperation: 1 };
|
},
|
syioption(row) {
|
const index = this.getIndexInArray(
|
this.indexform.ivrLibaScriptTargetoptionList,
|
row
|
);
|
const item = this.indexform.ivrLibaScriptTargetoptionList.splice(
|
index,
|
1
|
)[0]; // 移除指定索引处的元素,并保存到item变量中
|
this.indexform.ivrLibaScriptTargetoptionList.splice(index - 1, 0, item); // 将item插入到索引位置的前一位
|
this.sortFn();
|
},
|
xiayioption(row) {
|
const index = this.getIndexInArray(
|
this.indexform.ivrLibaScriptTargetoptionList,
|
row
|
);
|
const item = this.indexform.ivrLibaScriptTargetoptionList.splice(
|
index,
|
1
|
)[0]; // 移除指定索引处的元素,并保存到item变量中
|
this.indexform.ivrLibaScriptTargetoptionList.splice(index + 1, 0, item); // 将item插入到索引位置的前一位
|
this.sortFn();
|
},
|
sortFn() {
|
this.indexform.ivrLibaScriptTargetoptionList =
|
this.indexform.ivrLibaScriptTargetoptionList.map((item, index) => {
|
return {
|
guid: index + 1,
|
targetvalue: item.targetvalue,
|
targetregex2: item.targetregex2,
|
targetregex: item.targetregex,
|
id: item.id,
|
targettype: this.indexform.targettype,
|
isoperation: item.id ? 2 : 1,
|
categoryName: item.categoryName,
|
language: item.language,
|
dynamiccruxs: item.dynamiccruxs,
|
nodynamiccruxs: item.nodynamiccruxs,
|
dynamiccruxsJson: item.dynamiccruxsJson,
|
nodynamiccruxsJson: item.nodynamiccruxsJson,
|
};
|
});
|
console.log(this.indexform.ivrLibaScriptTargetoptionList);
|
},
|
// ---------------------
|
// 便捷标签
|
tsgnameto(row) {
|
let inputValueArr = "";
|
let el = document.querySelector("#" + this.currentInputId);
|
//el.selectionStart; 这就是当前光标所在的位置(字符串中字符的index)
|
if (this.currentInputId == "scriptContent") {
|
inputValueArr = this.indexform.scriptContent.split("");
|
} else if (this.currentInputId == "noMatchText") {
|
inputValueArr = this.indexform.noMatchText.split("");
|
} else if (this.currentInputId == "slienceText") {
|
inputValueArr = this.indexform.slienceText.split("");
|
} else if (this.currentInputId == "noClearlyText") {
|
inputValueArr = this.indexform.noClearlyText.split("");
|
} else if (this.currentInputId == "submoduletext") {
|
inputValueArr = this.indexform.submoduletext.split("");
|
} else {
|
return;
|
}
|
//将输入框内容切成数组,方便后续操作
|
// inputValueArr = this.inputValue.split("");
|
// 拿到选中文字的长度(后续可以用来替换选中的文字)
|
let selectLength = el.selectionEnd - el.selectionStart;
|
// 将要插入/替换的文字插入/替换(value.name是要插入/替换的字符串)
|
inputValueArr.splice(el.selectionStart, selectLength, `${row.variate}`);
|
// 把数组重新转换为字符串并赋值
|
inputValueArr = inputValueArr.join("");
|
console.log(inputValueArr);
|
if (this.currentInputId == "scriptContent") {
|
this.indexform.scriptContent = inputValueArr;
|
} else if (this.currentInputId == "noMatchText") {
|
this.indexform.noMatchText = inputValueArr;
|
} else if (this.currentInputId == "slienceText") {
|
this.indexform.slienceText = inputValueArr;
|
} else if (this.currentInputId == "noClearlyText") {
|
this.indexform.noClearlyText = inputValueArr;
|
} else if (this.currentInputId == "submoduletext") {
|
this.indexform.submoduletext = inputValueArr;
|
} else {
|
return;
|
}
|
},
|
|
// 新增变量
|
addvariable() {
|
this.variablelist.push({
|
variatename: "",
|
variate: "",
|
});
|
},
|
// 删除变量
|
delvariable(item) {
|
const index = this.variablelist.indexOf(item);
|
if (index !== -1) {
|
this.variablelist.splice(index, 1); // 从索引位置删除一个元素
|
} else {
|
console.log("未找到该对象");
|
}
|
},
|
// 输入获取id
|
handleInput(id) {
|
this.currentInputId = id;
|
console.log("输入框的值已更新:", this.currentInputId);
|
// 在这里执行更新数据的逻辑
|
},
|
},
|
};
|
</script>
|
|
<style lang="scss" scoped>
|
.Questionnairemanagement {
|
// display: flex;
|
}
|
.sidecolumn {
|
margin: 20px;
|
margin-bottom: 0;
|
padding: 15px;
|
background: #edf1f7;
|
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);
|
}
|
.leftvlue {
|
margin: 20px;
|
margin-top: 10px;
|
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);
|
|
.leftvlue-jbxx {
|
font-size: 24px;
|
border-left: 5px solid #41a1be;
|
padding-left: 5px;
|
margin: 15px 0;
|
}
|
}
|
.xinz-inf {
|
font-size: 18px;
|
white-space: nowrap;
|
overflow: hidden;
|
text-overflow: ellipsis;
|
|
line-height: 48px;
|
|
.el-tag + .el-tag {
|
margin-left: 10px;
|
}
|
.button-new-tag {
|
margin-left: 10px;
|
height: 32px;
|
line-height: 30px;
|
padding-top: 0;
|
padding-bottom: 0;
|
}
|
.input-new-tag {
|
width: 90px;
|
margin-left: 10px;
|
vertical-align: bottom;
|
}
|
}
|
.button-new-tag {
|
margin-left: 10px;
|
height: 32px;
|
line-height: 30px;
|
padding-top: 0;
|
padding-bottom: 0;
|
}
|
.tsgnames {
|
width: 90px;
|
margin-right: 10px;
|
text-align: center;
|
cursor: pointer;
|
height: 40px;
|
line-height: 40px;
|
background: #7799fa;
|
color: #ffff;
|
font-size: 18px;
|
border-radius: 5px;
|
}
|
.tsgnames:hover {
|
background: #3366f5;
|
}
|
.tsgname {
|
width: 90px;
|
margin-right: 10px;
|
text-align: center;
|
cursor: pointer;
|
height: 40px;
|
line-height: 40px;
|
background: #66c18c;
|
color: #ffff;
|
font-size: 18px;
|
border-radius: 5px;
|
}
|
.tsgname:hover {
|
background: #20894d;
|
}
|
.tsgnamebj {
|
width: 90px;
|
margin-left: 15px;
|
text-align: center;
|
cursor: pointer;
|
height: 40px;
|
line-height: 40px;
|
background: #49dbb7;
|
color: #ffff;
|
font-size: 18px;
|
border-radius: 5px;
|
}
|
.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 {
|
background: #02a7f0;
|
color: #edf1f7;
|
width: 150px;
|
}
|
}
|
::v-deep.el-step.is-vertical .el-step__title {
|
font-size: 25px;
|
}
|
::v-deep.el-input--medium {
|
font-size: 18px !important;
|
}
|
|
.el-select__tags {
|
font-size: 20px;
|
max-width: 888px !important;
|
}
|
::v-deep.el-radio__inner {
|
width: 22px;
|
height: 22px;
|
}
|
// ::v-deep.topic-dev.el-radio__label {
|
// font-size: 24px;
|
// }
|
::v-deep.el-radio-group {
|
span {
|
font-size: 24px;
|
}
|
}
|
::v-deep.upload-demo {
|
display: flex;
|
}
|
::v-deep.el-checkbox-group {
|
span {
|
font-size: 24px;
|
}
|
}
|
// ::v-deep.el-form-item--medium .el-form-item__content {
|
// line-height: 36px;
|
// display: flex;
|
// }
|
</style>
|