| | |
| | | <el-form :inline="true" :model="topicobj" class="demo-form-inline"> |
| | | <div class="headline"> |
| | | 题目设置详情 |
| | | <span style="margin-left: 30px" |
| | | ><el-button type="primary" @click="compileissue" |
| | | >保存</el-button |
| | | ></span |
| | | > |
| | | <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-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.svyLibTopicCategoryList" |
| | | :key="item.id" |
| | | :label="item.name" |
| | | :value="item.id" |
| | | > |
| | | </el-option> |
| | | </el-option-group> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-row :gutter="10"> |
| | | <el-col :span="6" |
| | | ><el-form-item label="题目标题"> |
| | | <el-input |
| | | v-model="topicobj.topic" |
| | | placeholder="请输入标题" |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | <el-col :span="6" |
| | | ><el-form-item label="是否可用"> |
| | | <el-col :span="8"> |
| | | <el-form-item label="问题分类"> |
| | | <el-select |
| | | v-model="topicobj.isavailable" |
| | | 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 |
| | | class="topicobjaa" |
| | | v-for="item in usable" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | v-for="group in appraiselist" |
| | | :key="group.value" |
| | | :label="group.label" |
| | | :value="group.value" |
| | | > |
| | | </el-option> |
| | | </el-select> </el-form-item |
| | | </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-form-item label="是否可用"> |
| | | <el-radio-group v-model="topicobj.isAvailable"> |
| | | <el-radio |
| | | v-for="(item, index) in usable" |
| | | :label="item.value" |
| | | >{{ item.label }}</el-radio |
| | | > |
| | | </el-radio-group> |
| | | </el-form-item></el-col |
| | | > |
| | | <el-col :span="8" |
| | | ><el-form-item label="语言"> |
| | | <el-select |
| | | v-model="topicobj.language" |
| | | size="medium" |
| | |
| | | ></el-col> |
| | | </el-row> |
| | | <el-row :gutter="10"> |
| | | <el-col :span="6" |
| | | <el-col :span="8" |
| | | ><el-form-item label="是否必填"> |
| | | <el-select |
| | | v-model="topicobj.ismandatory" |
| | |
| | | </el-option> |
| | | </el-select> </el-form-item |
| | | ></el-col> |
| | | <el-col :span="6" |
| | | <el-col :span="8" |
| | | ><el-form-item label="题目类型"> |
| | | <el-select |
| | | v-model="topicobj.topictype" |
| | | v-model="topicobj.scriptType" |
| | | @change="changefn" |
| | | size="medium" |
| | | filterable |
| | | placeholder="请选择分类" |
| | | > |
| | | <el-option |
| | | class="topicobjaa" |
| | | v-for="item in xjxsoptions" |
| | | v-for="item in valuetype" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | |
| | | ><el-form-item label="适用方式"> |
| | | <el-select |
| | | v-model="topicobj.suitway" |
| | | size="medium" |
| | | filterable |
| | | placeholder="请选择分类" |
| | | disabled |
| | | placeholder="请选择" |
| | | > |
| | | <el-option |
| | | class="topicobjaa" |
| | |
| | | <el-input |
| | | style="width: 40vw" |
| | | type="textarea" |
| | | id="topicContent" |
| | | v-model="topicobj.topicContent" |
| | | @focus="handleInput('topicContent')" |
| | | placeholder="请输入标题" |
| | | id="scriptContent" |
| | | v-model="topicobj.scriptContent" |
| | | @focus="handleInput('scriptContent')" |
| | | placeholder="请输入题目内容" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item |
| | | label="" |
| | | prop="scriptContent" |
| | | v-if="topicobj.scriptType == 3" |
| | | > |
| | | <div style="display: flex; margin-bottom: 10px"> |
| | | <div class="tsgnames" @click="tsgnametos">插入填空标记</div> |
| | | </div> |
| | | </el-form-item> |
| | | <el-row> |
| | | <el-col :span="20"> |
| | | <el-form-item |
| | | label="填空信息" |
| | | v-if=" |
| | | topicobj.scriptType == 3 && |
| | | topicobj.svyLibScriptOptions.length |
| | | " |
| | | > |
| | | <el-card class="box-card" style="width: 200%"> |
| | | <div |
| | | v-for="item in topicobj.svyLibScriptOptions" |
| | | v-if="item.isoperation != 3" |
| | | style="margin-bottom: 10px" |
| | | > |
| | | <el-input |
| | | type="text" |
| | | placeholder="填入内容信息" |
| | | v-model="item.aaa" |
| | | > |
| | | <el-button |
| | | slot="append" |
| | | @click="deletexuanx(item)" |
| | | type="danger" |
| | | icon="el-icon-delete" |
| | | circle |
| | | ></el-button> |
| | | <span slot="prepend">{{ |
| | | "(" + item.orderno + ")" |
| | | }}</span> |
| | | </el-input> |
| | | </div> |
| | | </el-card> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <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" |
| | | :key="tag.tagname" |
| | | type="success" |
| | | v-for="tag in dynamicTags" |
| | | closable |
| | | :disable-transitions="false" |
| | | @close="handleClosetag(tag)" |
| | | > |
| | | {{ tag }} |
| | | {{ tag.tagname }} |
| | | </el-tag> |
| | | <el-select |
| | | v-model="inputValue" |
| | |
| | | @change="handleInputConfirm" |
| | | filterable |
| | | remote |
| | | allow-create |
| | | reserve-keyword |
| | | default-first-option |
| | | :remote-method="remoteMethodtag" |
| | |
| | | </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="通知变量" 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 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> |
| | | <el-row> |
| | | <el-col :span="24"> |
| | | <div |
| | | style="display: flex; margin-left: 66px; margin-bottom: 10px" |
| | | > |
| | | <div |
| | | v-for="item in variablelist" |
| | | class="tsgname" |
| | | @click="tsgnameto(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等级" |
| | | > |
| | | {{ item.variatename }} |
| | | <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-col></el-row |
| | | > --> |
| | | </div> |
| | | |
| | | <div class="headline"> |
| | | 选项设置<span style="margin-left: 30px" |
| | | ><el-button type="primary" round @click="addoption" |
| | | >+新增</el-button |
| | | ></span |
| | | ><span style="margin-left: 30px" |
| | | ><el-button type="success" round @click="drawer = true" |
| | | >+选择指标</el-button |
| | | ></span |
| | | > |
| | | </div> |
| | | <div |
| | | class="topicxq" |
| | | v-for="item in topicobj.svyLibTopicoptions" |
| | | 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 label="分值"> |
| | | <el-input |
| | | type="text" |
| | | placeholder="请输入" |
| | | v-model="item.score" |
| | | show-word-limit |
| | | > |
| | | </el-input> </el-form-item |
| | | ></el-col> |
| | | <el-col :span="2"> |
| | | <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-input |
| | | style="width: 40vw" |
| | | type="textarea" |
| | | autosize |
| | | placeholder="请输入内容" |
| | | v-model="item.prompt" |
| | | > |
| | | </el-input |
| | | ></el-form-item> |
| | | </el-row> |
| | | </el-form-item> |
| | | </div> |
| | | </div> |
| | | </el-form> |
| | | </el-card> |
| | | </div> |
| | | <el-drawer |
| | | title="添加选项" |
| | | title="选择指标" |
| | | :visible.sync="drawer" |
| | | custom-class="demo-drawer" |
| | | width="66%" |
| | | size="50%" |
| | | > |
| | | <div class="preview-left"> |
| | | <el-form |
| | |
| | | :inline="true" |
| | | label-width="98px" |
| | | > |
| | | <el-form-item label="标题" prop="userName"> |
| | | <el-form-item label="指标名称" prop="userName"> |
| | | <el-input |
| | | v-model="queryParams.targetname" |
| | | placeholder="请输入" |
| | |
| | | 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="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-form> |
| | | <el-table v-loading="loading" :data="targetList"> |
| | | <el-table-column |
| | | label="标题" |
| | | label="指标名称" |
| | | align="center" |
| | | key="targetname" |
| | | prop="targetname" |
| | | width="100" |
| | | /> |
| | | <el-table-column |
| | | label="问题内容" |
| | | 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" |
| | | /> |
| | |
| | | type="text" |
| | | @click="selectlabel(scope.row)" |
| | | ><span class="button-textxg" |
| | | ><i class="el-icon-circle-plus-outline"></i>添加</span |
| | | ><i class="el-icon-circle-plus-outline"></i>选择</span |
| | | ></el-button |
| | | > |
| | | </template> |
| | |
| | | illnesslistget, |
| | | getillness, |
| | | } from "@/api/AiCentre/index"; |
| | | import { getToken } from "@/utils/auth"; |
| | | |
| | | export default { |
| | | data() { |
| | | return { |
| | | topicobj: { |
| | | svyLibTopicoptions: [], |
| | | 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: [], |
| | |
| | | { 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: "", |
| | | scriptType: "", |
| | | }, |
| | | optionlist: [ |
| | | { value: "topic", table: "topic" }, |
| | | { value: "topic", table: "topic" }, |
| | | { value: "topic", table: "topic" }, |
| | | { value: "scriptTopic", table: "scriptTopic" }, |
| | | { value: "scriptTopic", table: "scriptTopic" }, |
| | | { value: "scriptTopic", table: "scriptTopic" }, |
| | | ], |
| | | inputValueillness: "", |
| | | required: [], |
| | |
| | | inputVisibleillness: false, |
| | | illnessVisible: false, //指标疾病弹框 |
| | | deptOptions: [], |
| | | qyoptions: [], |
| | | optionsillness: [], |
| | | illnesslistapi: [], |
| | | illnesslist: [], |
| | | classifylist: [], |
| | | appraiselist: [ |
| | | { label: "分数", value: "1" }, |
| | | { label: "ABC等级", value: "2" }, |
| | | { label: "优良等级", value: "3" }, |
| | | { label: "无", value: "4" }, |
| | | ], |
| | | optionstag: [], |
| | | xjxsoptions: [], |
| | | valuetype: [], |
| | | usable: [], |
| | | mode: [], //方式 |
| | | }; |
| | |
| | | created() { |
| | | this.gettabList(); |
| | | this.getissueinfo(); |
| | | this.gettargetInfo(); |
| | | // this.gettargetInfo(); |
| | | this.mode = store.getters.mode; |
| | | this.languagelist = store.getters.languagelist; |
| | | this.usable = store.getters.usable; |
| | | this.xjxsoptions = store.getters.xjxsoptions; |
| | | this.valuetype = store.getters.askvaluetype; |
| | | this.required = store.getters.required; |
| | | this.qyoptions = store.getters.askvaluetype; |
| | | }, |
| | | |
| | | methods: { |
| | | // 公共方法--------------- |
| | | getIndexInArray(arr, obj) { |
| | | return arr.indexOf(obj); |
| | | }, |
| | | processElement(element) { |
| | | return { ...element, isoperation: 1 }; |
| | | }, |
| | | // 递归扁平化 |
| | | flattenArray(arr) { |
| | |
| | | // 获取数据 |
| | | getissueinfo() { |
| | | this.id = this.$route.query.id; |
| | | this.topicobj.categoryid = Number(this.$route.query.categoryid); |
| | | console.log(this.topicobj.categoryid); |
| | | |
| | | this.topicobj.isavailable = "1"; |
| | | this.topicobj.language = "普通话"; |
| | | // 分类 |
| | | getissueclassify({}).then((res) => { |
| | | this.classifylist = res.rows; |
| | | console.log(this.classifylist, "分类"); |
| | | }); |
| | | if (!this.id) { |
| | | return; |
| | | } |
| | | getissuelist({ topicid: this.id }).then((res) => { |
| | | getissuelist({ id: this.id }).then((res) => { |
| | | this.topicobj = res.rows[0]; |
| | | this.dynamicTags = this.topicobj.tag.split(","); |
| | | this.dynamicTags = this.topicobj.svyLibScriptTagList.map( |
| | | this.processElement |
| | | ); |
| | | this.scriptTypels = this.topicobj.scriptType; |
| | | this.variablelist = JSON.parse(this.topicobj.otherdata) |
| | | ? JSON.parse(this.topicobj.otherdata) |
| | | : this.variablelist; |
| | |
| | | getillness({ outid: this.id, type: 4 }).then((res) => { |
| | | this.illnesslist = res.rows; |
| | | }); |
| | | // 分类 |
| | | getissueclassify({}).then((res) => { |
| | | this.classifylist = res.rows; |
| | | }); |
| | | }, |
| | | gettargetInfo() { |
| | | if (!this.topicobj.scriptType) { |
| | | this.$message({ |
| | | message: "请先选择题目类型", |
| | | type: "error", |
| | | }); |
| | | return; |
| | | } |
| | | if (this.topicobj.scriptType) { |
| | | this.queryParams.scriptType = this.topicobj.scriptType; |
| | | } |
| | | this.queryParams.suitWay = 1; |
| | | gettargetInfo(this.queryParams).then((res) => { |
| | | this.targetList = res.rows; |
| | | this.total = res.total; |
| | | this.drawer = true; |
| | | }); |
| | | }, |
| | | // 新增或修改详情 |
| | | compileissue() { |
| | | this.topicobj.svyLibTopicoptions = this.topicobj.svyLibTopicoptions.map( |
| | | 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); |
| | | this.topicobj.tag = this.dynamicTags.join(","); |
| | | if (this.id) { |
| | | this.topicobj.isoperation = 2; |
| | | compileissue(this.topicobj).then((res) => { |
| | |
| | | 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) { |
| | | console.log(item); |
| | | |
| | | if ( |
| | | this.topicobj.targetname || |
| | | this.topicobj.svyLibScriptOptions[0].optioncontent |
| | | ) { |
| | | this.$modal |
| | | .confirm("更改类型后选项将清空是否继续?") |
| | | .then(() => { |
| | | this.scriptTypels = this.topicobj.scriptType; |
| | | this.topicobj.svyLibScriptOptions = []; |
| | | }) |
| | | .catch(() => { |
| | | this.topicobj.scriptType = this.scriptTypels; |
| | | }); |
| | | } |
| | | }, |
| | | |
| | | // 删除选项 |
| | | deletexuanx(row) { |
| | | const index = this.getIndexInArray(this.topicobj.svyLibTopicoptions, row); |
| | | if (this.topicobj.svyLibTopicoptions[index].topicid) { |
| | | this.topicobj.svyLibTopicoptions[index].isoperation = 3; |
| | | const index = this.getIndexInArray( |
| | | this.topicobj.svyLibScriptOptions, |
| | | row |
| | | ); |
| | | console.log(this.topicobj.svyLibScriptOptions); |
| | | |
| | | if (this.topicobj.svyLibScriptOptions[index].id) { |
| | | console.log(2); |
| | | |
| | | this.topicobj.svyLibScriptOptions[index].isoperation = 3; |
| | | } else { |
| | | this.topicobj.svyLibTopicoptions.splice(index, 1); |
| | | this.topicobj.svyLibScriptOptions.splice(index, 1); |
| | | } |
| | | }, |
| | | // 新增选项 |
| | | addoption() { |
| | | this.topicobj.svyLibTopicoptions.push({ |
| | | console.log(this.topicobj, "obj"); |
| | | this.topicobj.svyLibScriptOptions.push({ |
| | | score: "", |
| | | isoperation: 1, |
| | | }); |
| | | }, |
| | | // 选择指标 |
| | | selectlabel(row) { |
| | | const labellist = row.targetoptionList; |
| | | labellist.forEach((item) => { |
| | | this.topicobj.svyLibTopicoptions.push({ |
| | | optioncontent: item.targetvalue, |
| | | isoperation: 1, |
| | | }); |
| | | }); |
| | | 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(() => {}); |
| | | }, |
| | | |
| | | // 标签----------------- |
| | |
| | | tagcategoryid: "0", |
| | | }; |
| | | listtag(tagqueryParams).then((response) => { |
| | | console.log(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 = {}; |
| | |
| | | }; |
| | | } |
| | | // this.dynamicTags.push(tagvalue); |
| | | this.dynamicTags.push(tagvalue.tagname); |
| | | this.topicobj.svyLibScriptTagList.push(tagvalue); |
| | | this.dynamicTags.push(tagvalue); |
| | | }); |
| | | } |
| | | this.inputVisible = false; |
| | |
| | | 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("编辑成功"); |
| | | // // 保存 |
| | | // 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(); |
| | | }, |
| | | resetQuery() {}, |
| | | // 便捷标签 |
| | | tsgnameto(row) { |
| | | |
| | | // 便捷标签插入填空 |
| | | tsgnametos(row) { |
| | | let inputValueArr = ""; |
| | | let value = this.topicobj.svyLibScriptOptions.length + 1; |
| | | |
| | | let el = document.querySelector("#" + this.currentInputId); |
| | | //el.selectionStart; 这就是当前光标所在的位置(字符串中字符的index) |
| | | if (this.currentInputId == "topicContent") { |
| | | inputValueArr = this.topicobj.topicContent.split(""); |
| | | console.log(123); |
| | | } 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(""); |
| | | if (this.currentInputId == "scriptContent") { |
| | | console.log(1); |
| | | inputValueArr = this.topicobj.scriptContent.split(""); |
| | | console.log(2); |
| | | } else { |
| | | return; |
| | | } |
| | |
| | | // 拿到选中文字的长度(后续可以用来替换选中的文字) |
| | | let selectLength = el.selectionEnd - el.selectionStart; |
| | | // 将要插入/替换的文字插入/替换(value.name是要插入/替换的字符串) |
| | | inputValueArr.splice(el.selectionStart, selectLength, `${row.variate}`); |
| | | inputValueArr.splice( |
| | | el.selectionStart, |
| | | selectLength, |
| | | "__" + value + "__" |
| | | ); |
| | | this.topicobj.svyLibScriptOptions.push({ |
| | | orderno: value, |
| | | optiondesc: "", |
| | | isoperation: 1, |
| | | }); |
| | | // 把数组重新转换为字符串并赋值 |
| | | inputValueArr = inputValueArr.join(""); |
| | | |
| | | console.log(inputValueArr); |
| | | if (this.currentInputId == "topicContent") { |
| | | this.topicobj.topicContent = 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; |
| | | if (this.currentInputId == "scriptContent") { |
| | | this.topicobj.scriptContent = inputValueArr; |
| | | } else { |
| | | return; |
| | | } |
| | |
| | | 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> |
| | |
| | | margin: 15px 0; |
| | | } |
| | | .topicxq { |
| | | width: 68%; |
| | | width: 72%; |
| | | background-color: #e2f5fc; |
| | | border-radius: 4px; |
| | | margin-top: 15px; |
| | | margin-left: 10%; |
| | | padding-left: 10px; |
| | | padding-left: 20px; |
| | | padding-top: 15px; |
| | | border: 1px solid #dcdfe6; |
| | | -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), |
| | |
| | | .tsgname:hover { |
| | | background: #3366f5; |
| | | } |
| | | .tsgnames { |
| | | width: 120px; |
| | | margin-right: 10px; |
| | | text-align: center; |
| | | cursor: pointer; |
| | | height: 40px; |
| | | line-height: 40px; |
| | | background: #66c18c; |
| | | color: #ffff; |
| | | font-size: 18px; |
| | | border-radius: 5px; |
| | | } |
| | | .tsgnames:hover { |
| | | background: #20894d; |
| | | } |
| | | .preview-left { |
| | | margin: 20px; |
| | | // margin: 20px; |
| | |
| | | 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); |
| | | .topic-dev { |
| | | .scriptTopic-dev { |
| | | margin-bottom: 25px; |
| | | font-size: 20px !important; |
| | | .dev-text { |