<template>
|
<div>
|
<div class="presentation-right">
|
<el-card class="box-card">
|
<el-form :inline="true" :model="topicobj" class="demo-form-inline">
|
<div class="headline">
|
题目设置详情
|
<span style="float: right; margin-right: 30px"
|
><el-button type="success" @click="Saveproblem">预览</el-button>
|
</span>
|
<span style="float: right; margin-right: 30px"
|
><el-button type="primary" @click="Saveproblem">保 存</el-button>
|
</span>
|
</div>
|
<div style="margin-left: 8%">
|
<el-row :gutter="10">
|
<el-col :span="8">
|
<el-form-item label="问题分类">
|
<el-select
|
v-model="topicobj.categoryid"
|
size="medium"
|
filterable
|
placeholder="请选择分类"
|
>
|
<el-option-group
|
v-for="group in classifylist"
|
:key="group.id"
|
:label="group.name"
|
>
|
<el-option
|
v-for="item in group.svyLibScriptCategoryList"
|
:key="item.id"
|
:label="item.name"
|
:value="item.id"
|
>
|
</el-option>
|
</el-option-group>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8">
|
<el-form-item label="评价类型">
|
<el-select
|
v-model="topicobj.scoretype"
|
placeholder="请选择分类"
|
>
|
<el-option
|
v-for="group in appraiselist"
|
:key="group.value"
|
:label="group.label"
|
:value="group.value"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
<el-col :span="8" v-if="topicobj.scoretype == 1">
|
<el-form-item label="题目得分">
|
<el-input
|
v-model="topicobj.score"
|
placeholder="请输入分数"
|
></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-row :gutter="10">
|
<el-col :span="8"
|
><el-form-item label="题目标题">
|
<el-input
|
v-model="topicobj.scriptTopic"
|
placeholder="请输入标题"
|
></el-input> </el-form-item
|
></el-col>
|
<el-col :span="8"
|
><el-form-item label="是否可用">
|
<el-select
|
v-model="topicobj.isavailable"
|
size="medium"
|
filterable
|
placeholder="请选择分类"
|
>
|
<el-option
|
class="topicobjaa"
|
v-for="item in usable"
|
: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="语言">
|
<el-select
|
v-model="topicobj.language"
|
size="medium"
|
filterable
|
placeholder="请选择分类"
|
>
|
<el-option
|
class="topicobjaa"
|
v-for="item in languagelist"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value"
|
>
|
</el-option>
|
</el-select> </el-form-item
|
></el-col>
|
</el-row>
|
<el-row :gutter="10">
|
<el-col :span="8"
|
><el-form-item label="是否必填">
|
<el-select
|
v-model="topicobj.ismandatory"
|
size="medium"
|
filterable
|
placeholder="请选择分类"
|
>
|
<el-option
|
class="topicobjaa"
|
v-for="item in required"
|
: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="题目类型">
|
<el-select
|
v-model="topicobj.scriptType"
|
@change="changefn"
|
size="medium"
|
filterable
|
placeholder="请选择分类"
|
>
|
<el-option
|
class="topicobjaa"
|
v-for="item in valuetype"
|
: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="适用方式">
|
<el-select
|
v-model="topicobj.suitway"
|
disabled
|
placeholder="请选择"
|
>
|
<el-option
|
class="topicobjaa"
|
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-form-item label="题目内容">
|
<el-input
|
style="width: 40vw"
|
type="textarea"
|
id="scriptContent"
|
v-model="topicobj.scriptContent"
|
@focus="handleInput('scriptContent')"
|
placeholder="请输入题目内容"
|
></el-input>
|
</el-form-item>
|
<el-form-item label="题目说明">
|
<el-input
|
style="width: 40vw"
|
type="textarea"
|
v-model="topicobj.scriptDesc"
|
placeholder="请输入说明"
|
></el-input>
|
</el-form-item>
|
|
<el-form-item label="题干文件" prop="sickness">
|
<div style="width: 40vw">
|
<el-upload
|
class="upload-demo"
|
:action="uploadImgUrl"
|
:headers="headers"
|
accept=".jpg,.png,image/*"
|
:on-success="handleChangetg"
|
>
|
<el-button size="small" type="primary">点击上传</el-button>
|
<div slot="tip" class="el-upload__tip">
|
只能上传jpg/png类型文件
|
</div>
|
</el-upload>
|
|
<div style="margin: 20px">
|
<el-image
|
style="width: 100px; height: 100px"
|
:src="topicobj.picturePath"
|
:preview-src-list="[...topicobj.picturePath]"
|
>
|
</el-image>
|
</div>
|
</div>
|
</el-form-item>
|
|
<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-row>
|
<!-- <el-row>
|
<el-form-item label="适用疾病" prop="region">
|
<div class="xinz-inf">
|
<el-tag
|
:key="item.icd10name"
|
type="warning"
|
v-for="item in illnesslist"
|
closable
|
:disable-transitions="false"
|
@close="handleCloseillness(item)"
|
>
|
{{ item.icd10name }}
|
</el-tag>
|
<el-select
|
v-model="inputValueillness"
|
v-if="inputVisibleillness"
|
@change="illnessConfirm"
|
:remote-method="remoteMethod"
|
filterable
|
remote
|
allow-create
|
default-first-option
|
placeholder="请选择/查询"
|
:loading="loading"
|
>
|
<el-option
|
v-for="item in optionsillness"
|
:key="item.icdid"
|
:label="item.icdname"
|
:value="item.icdid"
|
>
|
</el-option>
|
</el-select>
|
<el-button
|
v-else
|
class="button-new-tag"
|
size="small"
|
@click="inputVisibleillness = true"
|
>+ 新增疾病</el-button
|
>
|
</div>
|
</el-form-item>
|
</el-row> -->
|
<el-form-item label="选中指标:">
|
<span style="margin-left: 30px"
|
><el-tag type="success" effect="dark">{{
|
topicobj.targetname ? topicobj.targetname : "未选择"
|
}}</el-tag></span
|
>
|
<span style="margin-left: 30px"
|
><el-button type="success" round @click="gettargetInfo"
|
>+选择指标</el-button
|
></span
|
>
|
</el-form-item>
|
</div>
|
|
<div v-if="topicobj.scriptType != 3 && topicobj.scriptType != 4">
|
<div class="headline">
|
选项设置<span style="margin-left: 30px"
|
><el-button type="primary" round @click="addoption"
|
>+新增</el-button
|
></span
|
>
|
</div>
|
<div
|
class="topicxq"
|
v-for="item in topicobj.svyLibScriptOptions"
|
v-if="item.isoperation != 3"
|
>
|
<el-row :gutter="10">
|
<el-col :span="11"
|
><el-form-item label="选项">
|
<el-input
|
type="text"
|
placeholder="请输入选项"
|
v-model="item.optioncontent"
|
show-word-limit
|
>
|
</el-input> </el-form-item
|
></el-col>
|
<el-col :span="11">
|
<el-form-item v-if="topicobj.scoretype == 1" label="分值">
|
<el-input
|
type="text"
|
placeholder="请输入选项分值"
|
v-model="item.score"
|
show-word-limit
|
>
|
</el-input>
|
</el-form-item>
|
<el-form-item
|
v-else-if="topicobj.scoretype == 2"
|
label="ABC等级"
|
>
|
<el-radio-group v-model="item.score">
|
<el-radio label="A">A</el-radio>
|
<el-radio label="B">B</el-radio>
|
<el-radio label="C">C</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
<el-form-item
|
v-else-if="topicobj.scoretype == 3"
|
label="优良等级"
|
>
|
<el-radio-group v-model="item.score">
|
<el-radio label="优">优</el-radio>
|
<el-radio label="良">良</el-radio>
|
<el-radio label="差">差</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
</el-col>
|
|
<el-col :span="2" :offsset="topicobj.scoretype == 4 ? 11 : 0">
|
<el-button
|
type="danger"
|
icon="el-icon-delete"
|
circle
|
@click="deletexuanx(item)"
|
></el-button>
|
</el-col>
|
</el-row>
|
<el-row :gutter="10">
|
<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-row>
|
<el-row :gutter="10">
|
<el-form-item label="选中提示">
|
<el-input
|
style="width: 40vw"
|
type="textarea"
|
autosize
|
placeholder="请输入内容"
|
v-model="item.prompt"
|
>
|
</el-input
|
></el-form-item>
|
</el-row>
|
<el-form-item label="选项文件" prop="sickness">
|
<div style="width: 40vw">
|
<el-upload
|
class="upload-demo"
|
:action="uploadImgUrl"
|
:headers="headers"
|
accept=".jpg,.png,image/*"
|
:on-success="handleChange.bind(this, item)"
|
>
|
<el-button size="small" type="primary">点击上传</el-button>
|
</el-upload>
|
<div style="margin: 20px">
|
<el-image
|
style="width: 100px; height: 100px"
|
:src="item.picturePath"
|
:preview-src-list="[...item.picturePath]"
|
>
|
</el-image>
|
</div>
|
</div>
|
</el-form-item>
|
</div>
|
</div>
|
</el-form>
|
</el-card>
|
</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="userName">
|
<el-input
|
v-model="queryParams.targetdesc"
|
placeholder="请输入"
|
clearable
|
style="width: 200px"
|
@keyup.enter.native="gettargetInfo"
|
/>
|
</el-form-item>
|
<el-form-item label="指标标签" prop="userName">
|
<el-input
|
v-model="queryParams.tagName"
|
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"
|
key="language"
|
prop="language"
|
width="200"
|
:show-overflow-tooltip="true"
|
/>
|
<el-table-column
|
label="是否可用"
|
align="center"
|
key="isAvailable"
|
prop="isAvailable"
|
>
|
<template slot-scope="scope">
|
<dict-tag :options="usable" :value="scope.row.isAvailable" />
|
</template>
|
</el-table-column>
|
<el-table-column
|
label="问题类型"
|
align="center"
|
key="scriptType"
|
prop="scriptType"
|
>
|
<template slot-scope="scope">
|
<dict-tag :options="valuetype" :value="scope.row.scriptType" />
|
</template>
|
</el-table-column>
|
<el-table-column
|
label="选项说明"
|
align="center"
|
key="optionDesc"
|
prop="optionDesc"
|
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 store from "@/store";
|
import {
|
gettargetInfo,
|
getissuelist,
|
issueinfo,
|
compileissue,
|
delissueinfo,
|
Followupinfo,
|
getissueclassify,
|
deltargetillness,
|
addtargetillness,
|
getillnesslist,
|
illnesslistget,
|
getillness,
|
} from "@/api/AiCentre/index";
|
import { getToken } from "@/utils/auth";
|
|
export default {
|
data() {
|
return {
|
topicobj: {
|
svyLibScriptOptions: [],
|
svyLibScriptTagList: [],
|
suitway: "1",
|
},
|
headers: {
|
Authorization: "Bearer " + getToken(),
|
},
|
uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/uploadSort",
|
inputVisible: false,
|
inputValue: "",
|
currentInputId: "",
|
scriptTypels: "",
|
total: 0,
|
drawer: false,
|
loading: false,
|
id: [],
|
suitwaylist: [],
|
targetList: [],
|
dynamicTags: [],
|
optionsclass: [],
|
variablelist: [
|
{ variatename: "姓名", variate: "${name}", default: 1 },
|
{ variatename: "电话", variate: "${phone}", default: 1 },
|
{ variatename: "病情", variate: "${illness}", default: 1 },
|
],
|
url: "https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg",
|
srcList: [
|
"https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg",
|
"https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg",
|
],
|
// 查询参数
|
queryParams: {
|
pageNum: 1,
|
pageSize: 10,
|
isavailable: "",
|
},
|
optionlist: [
|
{ value: "scriptTopic", table: "scriptTopic" },
|
{ value: "scriptTopic", table: "scriptTopic" },
|
{ value: "scriptTopic", table: "scriptTopic" },
|
],
|
inputValueillness: "",
|
required: [],
|
themelist: [],
|
languagelist: [],
|
courtyardlist: [],
|
precedencetype: [],
|
inputVisible: false,
|
inputVisibleillness: false,
|
illnessVisible: false, //指标疾病弹框
|
deptOptions: [],
|
optionsillness: [],
|
illnesslistapi: [],
|
illnesslist: [],
|
classifylist: [],
|
appraiselist: [
|
{ label: "分数", value: "1" },
|
{ label: "ABC等级", value: "2" },
|
{ label: "优良等级", value: "3" },
|
{ label: "无", value: "4" },
|
],
|
optionstag: [],
|
valuetype: [],
|
usable: [],
|
mode: [], //方式
|
};
|
},
|
|
created() {
|
this.gettabList();
|
this.getissueinfo();
|
// this.gettargetInfo();
|
this.mode = store.getters.mode;
|
this.languagelist = store.getters.languagelist;
|
this.usable = store.getters.usable;
|
this.valuetype = store.getters.askvaluetype;
|
this.required = store.getters.required;
|
},
|
|
methods: {
|
// 公共方法---------------
|
getIndexInArray(arr, obj) {
|
return arr.indexOf(obj);
|
},
|
processElement(element) {
|
return { ...element, isoperation: 1 };
|
},
|
// 递归扁平化
|
flattenArray(arr) {
|
let result = [];
|
arr.forEach((item) => {
|
result.push(item);
|
if (item.svyLibTopicCategoryList) {
|
console.log(2);
|
result = result.concat(
|
this.flattenArray(item.svyLibTopicCategoryList)
|
);
|
delete item.svyLibTopicCategoryList;
|
}
|
});
|
return result;
|
},
|
// -----------------------------
|
// 获取数据
|
getissueinfo() {
|
this.id = this.$route.query.id;
|
// 分类
|
getissueclassify({}).then((res) => {
|
this.classifylist = res.rows;
|
console.log(this.classifylist, "分类");
|
});
|
if (!this.id) {
|
return;
|
}
|
getissuelist({ id: this.id }).then((res) => {
|
this.topicobj = res.rows[0];
|
this.dynamicTags = this.topicobj.svyLibScriptTagList.map(
|
this.processElement
|
);
|
this.variablelist = JSON.parse(this.topicobj.otherdata)
|
? JSON.parse(this.topicobj.otherdata)
|
: this.variablelist;
|
});
|
getillnesslist({
|
pageNum: 1,
|
pageSize: 100,
|
}).then((response) => {
|
this.optionsillness = response.rows;
|
});
|
getillness({ outid: this.id, type: 4 }).then((res) => {
|
this.illnesslist = res.rows;
|
});
|
},
|
gettargetInfo() {
|
if (!this.topicobj.scriptType) {
|
this.$message({
|
message: "请先选择题目类型",
|
type: "error",
|
});
|
return;
|
}
|
this.queryParams.scriptType = this.topicobj.scriptType;
|
gettargetInfo(this.queryParams).then((res) => {
|
this.targetList = res.rows;
|
this.total = res.total;
|
this.drawer = true;
|
});
|
},
|
// 新增或修改详情
|
compileissue() {
|
this.topicobj.svyLibScriptOptions = this.topicobj.svyLibScriptOptions.map(
|
(item) => {
|
if (item.isoperation != 1 && item.isoperation != 3) {
|
item.isoperation = 2;
|
}
|
return item;
|
}
|
);
|
this.topicobj.targetoptions = this.topicobj.svyLibScriptOptions
|
.filter((item) => item.isoperation != 3)
|
.map((item) => item.optioncontent)
|
.join(", ");
|
this.topicobj.otherdata = JSON.stringify(this.variablelist);
|
if (this.id) {
|
this.topicobj.isoperation = 2;
|
compileissue(this.topicobj).then((res) => {
|
if (res.code == 200) {
|
this.$message({
|
message: "修改成功",
|
type: "success",
|
});
|
this.$router.go(-1);
|
} else {
|
this.$message({
|
message: "修改失败",
|
type: "error",
|
});
|
}
|
});
|
} else {
|
this.topicobj.isoperation = 1;
|
compileissue(this.topicobj).then((res) => {
|
if (res.code == 200) {
|
this.$message({
|
message: "新增成功",
|
type: "success",
|
});
|
this.$router.go(-1);
|
} else {
|
this.$message({
|
message: "新增失败",
|
type: "error",
|
});
|
}
|
});
|
}
|
this.illnesslist.forEach((item, index) => {
|
if (!item.id) {
|
addtargetillness(item).then((res) => {});
|
}
|
});
|
if (this.illnesslistapi.length) {
|
deltargetillness(this.illnesslistapi.join(",")).then((res) => {});
|
}
|
},
|
// 判断分值
|
Scorejudgment() {
|
let scorearr = this.topicobj.svyLibScriptOptions;
|
let isValid = scorearr.every((score) => {
|
if (score.score) {
|
console.log(Number(score.score), this.topicobj.score, "分值");
|
if (
|
Number(score.score) < 0 ||
|
Number(score.score) > Number(this.topicobj.score)
|
) {
|
console.log(score, "错误分值");
|
this.$message({
|
message: "选项分值必须在0到" + this.topicobj.score + "分之间",
|
type: "warning",
|
});
|
return false;
|
}
|
return true;
|
} else if (this.topicobj.scriptType == 3) {
|
return true;
|
} else {
|
this.$message({
|
message: "选项分值未设置",
|
type: "warning",
|
});
|
return false;
|
}
|
});
|
|
if (isValid) {
|
this.compileissue();
|
// console.log("到保存了");
|
}
|
},
|
Saveproblem() {
|
if (this.topicobj.scoretype == 1) {
|
this.Scorejudgment();
|
} else {
|
this.compileissue();
|
}
|
},
|
// 判断指标
|
changefn(item) {
|
if (this.topicobj.targetname) {
|
this.$modal
|
.confirm("更改类型后选项将清空是否继续?")
|
.then(() => {
|
this.scriptTypels = this.topicobj.scriptType;
|
})
|
.catch(() => {
|
this.topicobj.scriptType=this.scriptTypels
|
});
|
}
|
},
|
|
// 删除选项
|
deletexuanx(row) {
|
const index = this.getIndexInArray(
|
this.topicobj.svyLibScriptOptions,
|
row
|
);
|
if (this.topicobj.svyLibScriptOptions[index].id) {
|
this.topicobj.svyLibScriptOptions[index].isoperation = 3;
|
} else {
|
this.topicobj.svyLibScriptOptions.splice(index, 1);
|
}
|
},
|
// 新增选项
|
addoption() {
|
console.log(this.topicobj, "obj");
|
this.topicobj.svyLibScriptOptions.push({
|
score: "",
|
isoperation: 1,
|
});
|
},
|
// 选择指标
|
selectlabel(row) {
|
this.$modal
|
.confirm(
|
'是否选择标题为"' +
|
row.targetname +
|
'"的指标并替换填充问题及选项信息?'
|
)
|
.then(() => {
|
console.log(row);
|
this.topicobj.scriptTopic = row.targetname;
|
this.topicobj.valueType = row.valueType;
|
this.topicobj.scriptContent = row.targetdesc;
|
this.topicobj.targetid = row.id;
|
this.topicobj.targetname = row.targetname;
|
this.topicobj.isavailable = "0";
|
this.topicobj.language = "普通话";
|
this.topicobj.svyLibScriptOptions = [];
|
const labellist = row.targetoptionList;
|
labellist.forEach((item) => {
|
this.topicobj.svyLibScriptOptions.push({
|
optioncontent: item.targetvalue,
|
isoperation: 1,
|
});
|
});
|
this.drawer = false;
|
})
|
.catch(() => {});
|
},
|
|
// 标签-----------------
|
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.topicobj.svyLibScriptTagList[lindex].delFlag = 1;
|
},
|
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.dynamicTags.push(tagvalue);
|
this.topicobj.svyLibScriptTagList.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;
|
},
|
// 疾病-----------------------
|
|
handleCloseillness(tag) {
|
this.illnesslist.splice(this.illnesslist.indexOf(tag), 1);
|
if (tag.id) {
|
this.illnesslistapi.push(tag.id);
|
}
|
},
|
remoteMethod(value) {
|
console.log(value);
|
const illnessqueryParams = {
|
pageNum: 1,
|
pageSize: 100,
|
icdname: value,
|
};
|
this.loading = true;
|
setTimeout(() => {
|
this.loading = false;
|
getillnesslist(illnessqueryParams).then((response) => {
|
this.optionsillness = response.rows;
|
});
|
}, 200);
|
},
|
illnessConfirm(item) {
|
let opeavalue = {};
|
let tagname = this.inputValueillness;
|
illnesslistget(item).then((res) => {
|
opeavalue = res.data;
|
opeavalue.outid = this.id;
|
opeavalue.type = 4;
|
opeavalue.icd10id = opeavalue.icdid;
|
opeavalue.icd10name = opeavalue.icdname;
|
opeavalue.icd10code = opeavalue.icdcode;
|
if (tagname) {
|
this.illnesslist.push(opeavalue);
|
}
|
});
|
console.log(this.illnesslist);
|
this.inputVisibleillness = false;
|
this.inputValueillness = "";
|
},
|
// // 保存
|
// confirmillness() {
|
// this.illnesslist.forEach((item, index) => {
|
// if (!item.id) {
|
// addtargetillness(item).then((res) => {});
|
// }
|
// });
|
// if (this.illnesslistapi.length) {
|
// deltargetillness(this.illnesslistapi.join(",")).then((res) => {});
|
// }
|
// this.illnessVisible = false;
|
// this.$modal.msgSuccess("编辑成功");
|
// },
|
resetQuery() {
|
this.queryParams = {
|
pageNum: 1,
|
pageSize: 10,
|
};
|
this.gettargetInfo();
|
},
|
// 便捷标签
|
tsgnameto(row) {
|
let inputValueArr = "";
|
let el = document.querySelector("#" + this.currentInputId);
|
//el.selectionStart; 这就是当前光标所在的位置(字符串中字符的index)
|
if (this.currentInputId == "scriptContent") {
|
inputValueArr = this.topicobj.scriptContent.split("");
|
} else if (this.currentInputId == "nomatchtext") {
|
inputValueArr = this.topicobj.nomatchtext.split("");
|
} else if (this.currentInputId == "sliencetext") {
|
inputValueArr = this.topicobj.sliencetext.split("");
|
} else if (this.currentInputId == "noclearlytext") {
|
inputValueArr = this.topicobj.noclearlytext.split("");
|
} else if (this.currentInputId == "submoduletext") {
|
inputValueArr = this.topicobj.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.topicobj.scriptContent = inputValueArr;
|
} else if (this.currentInputId == "nomatchtext") {
|
this.topicobj.nomatchtext = inputValueArr;
|
} else if (this.currentInputId == "sliencetext") {
|
this.topicobj.sliencetext = inputValueArr;
|
} else if (this.currentInputId == "noclearlytext") {
|
this.topicobj.noclearlytext = inputValueArr;
|
} else if (this.currentInputId == "submoduletext") {
|
this.topicobj.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);
|
// 在这里执行更新数据的逻辑
|
},
|
// 混合路线
|
generateCombinations(arrays, currentIndex = 0, currentCombination = []) {
|
if (currentIndex === arrays.length) {
|
return [currentCombination];
|
}
|
|
const currentArray = arrays[currentIndex];
|
const newCombinations = [];
|
|
for (const item of currentArray) {
|
const newCombination = [...currentCombination, item];
|
const combinations = this.generateCombinations(
|
arrays,
|
currentIndex + 1,
|
newCombination
|
);
|
newCombinations.push(...combinations);
|
}
|
return newCombinations;
|
},
|
// 执行
|
test() {
|
const arrays = [
|
["2", "3", "4", "5"],
|
["1", "2", "5", "6"],
|
["3", "4", "5", "3"],
|
["3", "2", "5", "7"],
|
];
|
|
const newMixArray = this.generateCombinations(arrays);
|
console.log(newMixArray, "全部路线");
|
this.screen(newMixArray);
|
},
|
// 数组求和
|
sumArray(arr) {
|
return arr.reduce((acc, curr) => acc + parseInt(curr), 0);
|
},
|
// 筛选错误路线
|
screen(data) {
|
const arraysGreaterThan10 = data.filter((arr) => this.sumArray(arr) > 21);
|
console.log(arraysGreaterThan10, "筛选错误路线大于13分");
|
},
|
// 选项文件上传
|
handleChange(item, response, file, fileList) {
|
console.log(response);
|
if (response.code == 200) {
|
console.log(item);
|
let index = this.topicobj.svyLibScriptOptions.findIndex(
|
(obj) => obj.optioncontent == item.optioncontent
|
);
|
console.log(index);
|
this.topicobj.svyLibScriptOptions[index].picturePath = response.url;
|
console.log(this.topicobj.svyLibScriptOptions[index]);
|
this.$forceUpdate();
|
} else {
|
this.$message.error("图片插入失败");
|
}
|
},
|
// 题干文件上传
|
handleChangetg(response, file, fileList) {
|
if (response.code == 200) {
|
this.topicobj.picturePath = response.url;
|
} else {
|
this.$message.error("图片插入失败");
|
}
|
},
|
},
|
};
|
</script>
|
|
<style lang="scss" scoped>
|
.presentation-right {
|
margin-top: 20px;
|
padding: 0 20px;
|
font-size: 18px;
|
overflow: auto;
|
.headline {
|
font-size: 20px;
|
border-left: 3px solid #41a1be;
|
padding-left: 5px;
|
margin: 15px 0;
|
}
|
.topicxq {
|
width: 72%;
|
background-color: #e2f5fc;
|
border-radius: 4px;
|
margin-top: 15px;
|
margin-left: 10%;
|
padding-left: 20px;
|
padding-top: 15px;
|
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);
|
}
|
|
.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;
|
}
|
}
|
}
|
.tsgname {
|
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;
|
}
|
.tsgname:hover {
|
background: #3366f5;
|
}
|
.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.ruleFormaa.el-select {
|
display: inline-block;
|
position: relative;
|
width: 700px;
|
}
|
</style>
|