| | |
| | | <template> |
| | | <div> |
| | | <div class="topicxq" v-for="item in TargetoptionList"> |
| | | <el-row :gutter="10"> |
| | | <el-col :span="12" |
| | | ><el-form-item label="选项名"> |
| | | <el-input |
| | | type="text" |
| | | placeholder="请输入" |
| | | v-model="item.targetvalue" |
| | | show-word-limit |
| | | > |
| | | </el-input> </el-form-item |
| | | ></el-col> |
| | | <el-col :span="12" |
| | | ><el-form-item label="选项节点"> |
| | | <el-input |
| | | type="text" |
| | | placeholder="请输入节点" |
| | | v-model="item.targetid" |
| | | show-word-limit |
| | | > |
| | | </el-input> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <el-row :gutter="10"> |
| | | <el-col :span="12" |
| | | ><el-form-item label="处理"> |
| | | <el-input |
| | | type="text" |
| | | placeholder="(默认)无声" |
| | | v-model="item.text" |
| | | maxlength="10" |
| | | show-word-limit |
| | | > |
| | | </el-input> </el-form-item |
| | | ></el-col> |
| | | <el-col :span="12" |
| | | ><el-form-item label="选中跳转"> |
| | | <el-input |
| | | type="text" |
| | | placeholder="请输入题目节点" |
| | | v-model="item.nextQuestion" |
| | | show-word-limit |
| | | > |
| | | </el-input> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <el-form-item label="关键字(含)" prop="desc"> |
| | | <div class="xinz-inf"> |
| | | <el-tag |
| | | :key="crux" |
| | | type="success" |
| | | v-for="crux in item.dynamiccruxs" |
| | | closable |
| | | effect="dark" |
| | | :disable-transitions="false" |
| | | @close="handleClosecrux(crux, item, 1)" |
| | | <el-form :inline="true" :rules="rules" :model="item" label-width="80px"> |
| | | <el-row :gutter="10"> |
| | | <el-col :span="12" |
| | | ><el-form-item prop="targetvalue" label="选项名称"> |
| | | <el-input |
| | | type="text" |
| | | placeholder="请输入(必填项)" |
| | | v-model="item.targetvalue" |
| | | show-word-limit |
| | | > |
| | | </el-input> </el-form-item |
| | | ></el-col> |
| | | <el-col :span="12" |
| | | ><el-form-item label="异常提醒"> |
| | | <el-radio-group v-model="item.isabnormal"> |
| | | <el-radio :label="1">是</el-radio> |
| | | <el-radio :label="0">否</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item></el-col |
| | | > |
| | | {{ crux }} |
| | | </el-tag> |
| | | <el-select |
| | | v-model="inputValue" |
| | | v-if="item.inputVisible" |
| | | @change="handleInputConfirm(item)" |
| | | filterable |
| | | remote |
| | | allow-create |
| | | reserve-keyword |
| | | default-first-option |
| | | :loading="loading" |
| | | placeholder="请选择" |
| | | > |
| | | <el-option |
| | | v-for="items in regular" |
| | | :key="items.label" |
| | | :label="items.label" |
| | | :value="items.label" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | <el-button |
| | | v-else |
| | | class="button-new-tag" |
| | | size="small" |
| | | @click="showInput(item)" |
| | | >+ 新增</el-button |
| | | > |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="关键字(非)" prop="desc"> |
| | | <div class="xinz-inf"> |
| | | <el-tag |
| | | :key="crux" |
| | | type="warning" |
| | | v-for="crux in item.nodynamiccruxs" |
| | | closable |
| | | effect="dark" |
| | | :disable-transitions="false" |
| | | @close="handleClosecrux(crux, item, 2)" |
| | | > |
| | | {{ crux }} |
| | | </el-tag> |
| | | <el-select |
| | | v-model="inputValue" |
| | | v-if="item.noinputVisible" |
| | | @change="handleInputConfirm(item)" |
| | | filterable |
| | | remote |
| | | allow-create |
| | | reserve-keyword |
| | | default-first-option |
| | | :loading="loading" |
| | | placeholder="请选择" |
| | | > |
| | | <el-option |
| | | v-for="items in noregular" |
| | | :key="items.value" |
| | | :label="items.label" |
| | | :value="items.label" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | <el-button |
| | | v-else |
| | | class="button-new-tag" |
| | | size="small" |
| | | @click="showInputno(item)" |
| | | >+ 新增</el-button |
| | | > |
| | | </div> |
| | | </el-form-item> |
| | | <!-- <el-col :span="12" v-if="intent" |
| | | ><el-form-item label="选项节点"> |
| | | <el-input |
| | | type="text" |
| | | placeholder="请输入节点" |
| | | v-model="item.targetid" |
| | | show-word-limit |
| | | > |
| | | </el-input> </el-form-item |
| | | ></el-col> --> |
| | | </el-row> |
| | | <el-row :gutter="10" v-if="!intent"> |
| | | <el-col :span="20" |
| | | ><el-form-item label="选项说明"> |
| | | <el-input |
| | | style="width: 500px" |
| | | type="textarea" |
| | | :rows="2" |
| | | placeholder="请输入" |
| | | v-model="item.optiondesc" |
| | | show-word-limit |
| | | > |
| | | </el-input> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <el-form-item label="结束对话"> |
| | | <el-radio-group v-model="item.isEnd"> |
| | | <el-radio :label="1">是</el-radio> |
| | | <el-radio :label="0">否</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | |
| | | <el-row :gutter="10"> |
| | | <el-col :span="16"> |
| | | <el-form-item label="语音文件"> |
| | | <el-row :gutter="10" v-if="intent"> |
| | | <el-col :span="12" |
| | | ><el-form-item label="处理"> |
| | | <el-input |
| | | type="text" |
| | | placeholder="(默认)无声" |
| | | v-model="item.text" |
| | | maxlength="10" |
| | | show-word-limit |
| | | > |
| | | </el-input> </el-form-item |
| | | ></el-col> |
| | | <el-col :span="12" v-show="branchFlag" |
| | | ><el-form-item label="选中跳转"> |
| | | <el-input |
| | | type="text" |
| | | @blur="$emit('branchFlagfn', item.nextQuestion)" |
| | | placeholder="请输入题目节点" |
| | | v-model="item.nextQuestion" |
| | | show-word-limit |
| | | > |
| | | </el-input> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <el-row :gutter="10" v-if="scriptType == 1"> |
| | | <el-form-item label="选中提示"> |
| | | <el-input |
| | | style="width: 24vw" |
| | | type="textarea" |
| | | autosize |
| | | placeholder="请输入内容" |
| | | v-model="item.prompt" |
| | | > |
| | | </el-input |
| | | ></el-form-item> |
| | | </el-row> |
| | | <el-row> |
| | | <el-form-item label="关键字(含)" prop="desc" v-if="hasValue"> |
| | | <div class="xinz-inf"> |
| | | <el-tag |
| | | :key="crux" |
| | | type="success" |
| | | v-for="crux in item.dynamiccruxs" |
| | | closable |
| | | effect="dark" |
| | | :disable-transitions="false" |
| | | @close="handleClosecrux(crux, item, 1)" |
| | | > |
| | | {{ crux }} |
| | | </el-tag> |
| | | <el-select |
| | | v-model="inputValue" |
| | | v-if="item.inputVisible" |
| | | @change="handleInputConfirm(item)" |
| | | filterable |
| | | remote |
| | | allow-create |
| | | reserve-keyword |
| | | default-first-option |
| | | :loading="loading" |
| | | placeholder="请选择" |
| | | > |
| | | <el-option |
| | | v-for="items in regular" |
| | | :key="items.label" |
| | | :label="items.label" |
| | | :value="items.label" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | <el-button |
| | | v-else |
| | | class="button-new-tag" |
| | | size="small" |
| | | @click="showInput(item)" |
| | | >+ 新增</el-button |
| | | > |
| | | </div> |
| | | </el-form-item> |
| | | </el-row> |
| | | <el-row> |
| | | <el-form-item label="关键字(非)" prop="adesc" v-if="hasValue"> |
| | | <div class="xinz-inf"> |
| | | <el-tag |
| | | :key="crux" |
| | | type="warning" |
| | | v-for="crux in item.nodynamiccruxs" |
| | | closable |
| | | effect="dark" |
| | | :disable-transitions="false" |
| | | @close="handleClosecrux(crux, item, 2)" |
| | | > |
| | | {{ crux }} |
| | | </el-tag> |
| | | <el-select |
| | | v-model="inputValue" |
| | | v-if="item.noinputVisible" |
| | | @change="handleInputConfirm(item)" |
| | | filterable |
| | | remote |
| | | allow-create |
| | | reserve-keyword |
| | | default-first-option |
| | | :loading="loading" |
| | | placeholder="请选择" |
| | | > |
| | | <el-option |
| | | v-for="items in noregular" |
| | | :key="items.value" |
| | | :label="items.label" |
| | | :value="items.label" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | <el-button |
| | | v-else |
| | | class="button-new-tag" |
| | | size="small" |
| | | @click="showInputno(item)" |
| | | >+ 新增</el-button |
| | | > |
| | | </div> |
| | | </el-form-item> |
| | | </el-row> |
| | | |
| | | <el-form-item label="选项文件" prop="sickness" v-if="Verbalproblem"> |
| | | <div style="width: 40vw"> |
| | | <el-upload |
| | | class="upload-demo" |
| | | style="display: flex" |
| | | action="https://jsonplaceholder.typicode.com/posts/" |
| | | :on-change="handleChange" |
| | | :file-list="fileList" |
| | | :limit="1" |
| | | :on-exceed="handleExceed" |
| | | :action="uploadImgUrl" |
| | | :headers="headers" |
| | | accept=".jpg,.png,image/*" |
| | | :on-success="handleChange.bind(this, item)" |
| | | > |
| | | <el-button size="small" type="primary">点击上传</el-button> |
| | | </el-upload> |
| | | </el-form-item></el-col |
| | | > |
| | | <el-col :span="8"> |
| | | <div style="text-align: right; padding-right: 10px"> |
| | | <el-button |
| | | v-if="controlsc" |
| | | @click="$emit('addoption', item)" |
| | | type="success" |
| | | icon="el-icon-circle-plus-outline" |
| | | circle |
| | | ></el-button> |
| | | <el-button |
| | | type="danger" |
| | | icon="el-icon-delete" |
| | | circle |
| | | @click="$emit('deloption', item)" |
| | | ></el-button> |
| | | <el-button |
| | | v-if="controlsc" |
| | | @click="$emit('syioption', item)" |
| | | type="primary" |
| | | icon="el-icon-top" |
| | | circle |
| | | ></el-button> |
| | | <el-button |
| | | v-if="controlsc" |
| | | @click="$emit('xiayioption', item)" |
| | | type="primary" |
| | | icon="el-icon-bottom" |
| | | circle |
| | | ></el-button> |
| | | <div style="margin: 20px"> |
| | | <el-image |
| | | style="width: 100px; height: 100px" |
| | | :src="item.picturePath" |
| | | :preview-src-list="[...item.picturePath]" |
| | | > |
| | | </el-image> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form-item> |
| | | |
| | | <el-row :gutter="10"> |
| | | <el-col> |
| | | <div style="text-align: right; padding-right: 10px"> |
| | | <el-button |
| | | v-if="controlsc || addoption" |
| | | @click="$emit('addoption', item)" |
| | | type="success" |
| | | icon="el-icon-circle-plus-outline" |
| | | circle |
| | | ></el-button> |
| | | <el-button |
| | | type="danger" |
| | | icon="el-icon-delete" |
| | | circle |
| | | @click="$emit('deloption', item)" |
| | | ></el-button> |
| | | <el-button |
| | | v-if="controlsc" |
| | | @click="$emit('syioption', item)" |
| | | type="primary" |
| | | icon="el-icon-top" |
| | | circle |
| | | ></el-button> |
| | | <el-button |
| | | v-if="controlsc" |
| | | @click="$emit('xiayioption', item)" |
| | | type="primary" |
| | | icon="el-icon-bottom" |
| | | circle |
| | | ></el-button> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import store from "@/store"; |
| | | import { getToken } from "@/utils/auth"; |
| | | |
| | | export default { |
| | | data() { |
| | |
| | | url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100", |
| | | }, |
| | | ], |
| | | headers: { |
| | | Authorization: "Bearer " + getToken(), |
| | | }, |
| | | uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/uploadSort", |
| | | whether: 1, //1为关键词,2为否定关键词 |
| | | inputValue: "", |
| | | inputVisible: false, |
| | |
| | | noregular: [], |
| | | nodynamiccruxs: ["别", "不"], |
| | | dynamiccruxs: ["好"], |
| | | rules: { |
| | | targetvalue: [ |
| | | { required: true, message: "请输入选项名称", trigger: "blur" }, |
| | | ], |
| | | isabnormal: [ |
| | | { required: true, message: "请输入选项名称", trigger: "blur" }, |
| | | ], |
| | | }, |
| | | }; |
| | | }, |
| | | props: { |
| | |
| | | controlsc: { |
| | | type: Boolean, |
| | | default: true, |
| | | }, |
| | | scriptType: { |
| | | type: String, |
| | | default: '1', |
| | | }, |
| | | addoption: { |
| | | type: Boolean, |
| | | default: false, |
| | | }, |
| | | intent: { |
| | | type: Boolean, |
| | | default: true, |
| | | }, |
| | | hasValue: { |
| | | type: Boolean, |
| | | default: true, |
| | | }, |
| | | Verbalproblem: { |
| | | type: Boolean, |
| | | default: true, |
| | | }, |
| | | branchFlag: { |
| | | type: Boolean, |
| | | default: false, |
| | | }, |
| | | }, |
| | | |
| | |
| | | } |
| | | regex = regex.slice(0, -1); |
| | | regexno = regexno.slice(0, -1); |
| | | if (regexno) { |
| | | hostregexno = "^(?!.*(?:" + `${regexno}` + ")).*$"; |
| | | } else { |
| | | hostregexno = ""; |
| | | } |
| | | hostregex = "(?=.*(?:" + `${regex}` + ")).*$"; |
| | | hostregexno = "^(?!.(?:" + `${regexno}` + ")).*$"; |
| | | this.TargetoptionList[index].hostregex = hostregex; |
| | | this.TargetoptionList[index].hostregex2 = hostregexno; |
| | | this.TargetoptionList[index].targetregex = hostregex; |
| | | this.TargetoptionList[index].targetregex2 = hostregexno; |
| | | console.log(hostregex, "确定字匹配"); |
| | | console.log(hostregexno, "否定字匹配"); |
| | | this.handleSelectionChange(); |
| | | }, |
| | | // 控制文件 |
| | | handleChange(file, fileList) { |
| | | this.fileList = fileList.slice(-3); |
| | | }, |
| | | // handleChange(file, fileList) { |
| | | // this.fileList = fileList.slice(-3); |
| | | // }, |
| | | // 文件超出个数限制时的钩子 |
| | | handleExceed(files, fileList) { |
| | | this.$message.warning( |
| | |
| | | this.generateRegex(item); |
| | | }, |
| | | handleInputConfirm(row) { |
| | | console.log(this.TargetoptionList, "TargetoptionList"); |
| | | let index = this.TargetoptionList.indexOf(row); |
| | | console.log(1112); |
| | | if (this.whether == 1 && this.inputValue) { |
| | | if ( |
| | | this.TargetoptionList[index].dynamiccruxs.indexOf(this.inputValue) == |
| | |
| | | console.log(this.TargetoptionList); |
| | | this.$emit("handleSelectionChange", selection); |
| | | }, |
| | | // 选项文件上传 |
| | | handleChange(item, response, file, fileList) { |
| | | console.log(response, "response"); |
| | | console.log(item, "item"); |
| | | console.log(this.TargetoptionList, "this.TargetoptionList"); |
| | | let index = this.TargetoptionList.findIndex( |
| | | (obj) => obj.guid == item.guid |
| | | ); |
| | | console.log(index); |
| | | this.TargetoptionList[index].picturePath = response.url; |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |