src/components/Regular/index.vue
@@ -1,7 +1,7 @@ <template> <div> <div class="topicxq" v-for="item in TargetoptionList"> <el-form :rules="rules" :model="item"> <el-form :inline="true" :rules="rules" :model="item"> <el-row :gutter="10"> <el-col :span="12" ><el-form-item prop="targetvalue" label="选项名称"> @@ -21,7 +21,7 @@ </el-radio-group> </el-form-item></el-col > <el-col :span="12" v-if="intent" <!-- <el-col :span="12" v-if="intent" ><el-form-item label="选项节点"> <el-input type="text" @@ -30,7 +30,7 @@ show-word-limit > </el-input> </el-form-item ></el-col> ></el-col> --> </el-row> <el-row :gutter="10" v-if="!intent"> <el-col :span="20" @@ -175,7 +175,8 @@ <el-row :gutter="10"> <el-col :span="16" v-if="intent"> <el-form-item label="语音文件"> <div></div> <!-- <el-form-item label="语音文件"> <el-upload class="upload-demo" style="display: flex" @@ -186,12 +187,12 @@ > <el-button size="small" type="primary">点击上传</el-button> </el-upload> </el-form-item></el-col > <el-col :span="intent ? 8 : 22"> </el-form-item> --> </el-col> <el-col :offset="12" :span="intent ? 8 : 22"> <div style="text-align: right; padding-right: 10px"> <el-button v-if="controlsc" v-if="controlsc || addoption" @click="$emit('addoption', item)" type="success" icon="el-icon-circle-plus-outline" @@ -270,6 +271,10 @@ type: Boolean, default: true, }, addoption: { type: Boolean, default: false, }, intent: { type: Boolean, default: true, src/store/getters.js
@@ -181,14 +181,14 @@ listClass: "", }, }, { value: "3", label: "填空", raw: { cssClass: "", listClass: "", }, }, // { // value: "3", // label: "填空", // raw: { // cssClass: "", // listClass: "", // }, // }, { value: "4", label: "问答", src/views/knowledge/questionbank/particulars/index.vue
@@ -1,17 +1,44 @@ <template> <div> <div class="presentation-right"> <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 v-if="Editprogress == 1"> <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 style="margin-left: 30px" ><el-button type="success" @click="topicVisible = true" >预览</el-button > </span> <span style="float: right; margin-right: 30px" ><el-button type="primary" @click="Saveproblem">保 存</el-button> <span style="margin-left: 30px" ><el-button type="primary" @click="Saveproblem" >保 存</el-button > </span> </div> <el-divider></el-divider> <div style="margin-left: 8%"> <el-row :gutter="10"> <el-col :span="8"> @@ -83,8 +110,21 @@ </el-radio-group> </el-form-item></el-col > <el-col :span="8" ><el-form-item label="语言"> <el-col :span="8"> <el-form-item label="是否必填"> <el-radio-group v-model="topicobj.ismandatory"> <el-radio v-for="(item, index) in required" :label="item.value" >{{ item.label }}</el-radio > </el-radio-group> </el-form-item> </el-col> </el-row> <el-row :gutter="10"> <el-col :span="8"> <el-form-item label="语言"> <el-select v-model="topicobj.language" size="medium" @@ -99,28 +139,9 @@ :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-select> </el-form-item> </el-col> <el-col :span="8" ><el-form-item label="题目类型"> <el-select @@ -167,7 +188,7 @@ placeholder="请输入题目内容" ></el-input> </el-form-item> <el-form-item <!-- <el-form-item label="" prop="scriptContent" v-if="topicobj.scriptType == 3" @@ -175,8 +196,8 @@ <div style="display: flex; margin-bottom: 10px"> <div class="tsgnames" @click="tsgnametos">插入填空标记</div> </div> </el-form-item> <el-row> </el-form-item> --> <!-- <el-row> <el-col :span="20"> <el-form-item label="填空信息" @@ -211,7 +232,7 @@ </el-card> </el-form-item> </el-col> </el-row> </el-row> --> <el-form-item label="题目说明"> <el-input style="width: 40vw" @@ -221,32 +242,23 @@ ></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-form-item label="选中指标:"> <span style="margin-left: 30px" ><el-tag type="success" effect="dark">{{ topicobj.targetname ? topicobj.targetname : "未选择" }}</el-tag></span > <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]" <span style="margin-left: 30px" ><el-button type="success" round @click="gettargetInfo" >+选择指标</el-button ></span > </el-image> </el-form-item> --> </div> </div> </el-form-item> <div class="headline">关联信息配置</div> <el-divider></el-divider> <div style="margin-left: 8%"> <el-row> <el-form-item label="标签" prop="desc"> <div class="xinz-inf"> @@ -292,21 +304,104 @@ </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 <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" > <span style="margin-left: 30px" ><el-button type="success" round @click="gettargetInfo" >+选择指标</el-button ></span <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> </div> </el-form> </el-card> </div> <div v-if="Editprogress == 2"> <el-card class="box-card"> <el-form :inline="true" :model="topicobj" class="demo-form-inline"> <div class="headline"> 指标设置详情 <span v-if="topicobj.targetname" style="margin-left: 30px" ><el-button type="success" @click="topicVisible = true" >预览</el-button ></span > <span style="margin-left: 30px" ><el-button type="primary" round @click="gettargetInfo">{{ topicobj.targetname ? "修改指标" : "+选择指标" }}</el-button></span > </div> <el-divider></el-divider> <el-form ref="form"> <el-row> <el-col :span="10"> <el-form-item label="指标名称" prop="deptId"> <el-input disabled v-model="topicobj.targetname" placeholder="请输入指标名称" maxlength="20" /> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="指标描述" prop="deptId"> <el-input disabled v-model="topicobj.targetdesc" placeholder="请输入指标描述" maxlength="60" /> </el-form-item> </el-col> </el-row> <div v-if="topicobj.scriptType != 3 && topicobj.scriptType != 4"> <el-row> <el-col :span="10"> <el-form-item label="值类型"> <el-radio-group :disabled="true" v-model="topicobj.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-col> <el-col :span="12"> <el-form-item label="题目类型"> <el-radio-group :disabled="true" v-model="topicobj.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> </el-form> <div v-if="topicobj.scriptType != 4"> <div class="headline"> 选项设置<span style="margin-left: 30px" ><el-button type="primary" round @click="addoption" @@ -314,6 +409,8 @@ ></span > </div> <el-divider></el-divider> <div class="topicxq" v-for="item in topicobj.svyLibScriptOptions" @@ -321,10 +418,10 @@ > <el-row :gutter="10"> <el-col :span="11" ><el-form-item label="选项"> ><el-form-item label="选项名称"> <el-input type="text" placeholder="请输入选项" placeholder="请输入选项分值" v-model="item.optioncontent" show-word-limit > @@ -400,7 +497,9 @@ accept=".jpg,.png,image/*" :on-success="handleChange.bind(this, item)" > <el-button size="small" type="primary">点击上传</el-button> <el-button size="small" type="primary" >点击上传</el-button > </el-upload> <div style="margin: 20px"> <el-image @@ -413,9 +512,19 @@ </div> </el-form-item> </div> <div v-else class="topicxq"> <el-input type="textarea" :rows="4" placeholder="此处展示收集信息" v-model="testgovalue" > </el-input> </div> </div> </el-form> </el-card> </div> </div> <el-drawer title="选择指标" @@ -530,6 +639,7 @@ <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width" > <template slot-scope="scope"> @@ -553,6 +663,35 @@ /> </div> </el-drawer> <el-dialog title="题目预览" :visible.sync="topicVisible" width="50%"> <div class="preview-left"> <div class="dev-text"> <span>{{ topicobj.scriptContent }}</span> </div> <div class="dev-xx" v-if="topicobj.scriptType != 3 && topicobj.scriptType != 4" > <el-radio-group v-model="topicobj.asrtext"> <el-radio v-for="(topicobjs, index) in topicobj.svyLibScriptOptions" :key="topicobjs.optioncontent" :label="topicobjs.optioncontent" >{{ topicobjs.optioncontent }}</el-radio > </el-radio-group> </div> <div v-else> <el-input type="textarea" placeholder="请输入内容" v-model.sync="topicobj.asrtext" :rows="2" /> </div> </div> </el-dialog> </div> </template> @@ -594,6 +733,7 @@ total: 0, drawer: false, loading: false, topicVisible: false, //预览弹框 id: [], suitwaylist: [], targetList: [], @@ -616,6 +756,7 @@ isavailable: "", scriptType: "", }, Editprogress: 1, optionlist: [ { value: "scriptTopic", table: "scriptTopic" }, { value: "scriptTopic", table: "scriptTopic" }, @@ -703,6 +844,9 @@ } getissuelist({ id: this.id }).then((res) => { this.topicobj = res.rows[0]; if (!this.topicobj.svyLibScriptTagList) { this.topicobj.svyLibScriptTagList = []; } this.dynamicTags = this.topicobj.svyLibScriptTagList.map( this.processElement ); @@ -722,16 +866,10 @@ }); }, gettargetInfo() { if (!this.topicobj.scriptType) { this.$message({ message: "请先选择题目类型", type: "error", }); return; } if (this.topicobj.scriptType) { if (!this.queryParams.scriptType) { this.queryParams.scriptType = this.topicobj.scriptType; } this.queryParams.suitWay = 1; gettargetInfo(this.queryParams).then((res) => { this.targetList = res.rows; @@ -841,10 +979,7 @@ changefn(item) { console.log(item); if ( this.topicobj.targetname || this.topicobj.svyLibScriptOptions[0].optioncontent ) { if (this.topicobj.targetname || this.topicobj.svyLibScriptOptions[0]) { this.$modal .confirm("更改类型后选项将清空是否继续?") .then(() => { @@ -893,6 +1028,7 @@ console.log(row); this.topicobj.scriptTopic = row.targetname; this.topicobj.valueType = row.valueType; this.topicobj.scriptType = row.scriptType; this.topicobj.scriptContent = row.targetdesc; this.topicobj.targetid = row.id; this.topicobj.targetname = row.targetname; @@ -1163,6 +1299,21 @@ this.$message.error("图片插入失败"); } }, // 下一步 nextstep() { if (this.Editprogress <= 1) { // if (this.indexform.targetid) { return this.Editprogress++; // } else { // this.$message.warning("请先选择关联指标"); // } } else { } }, // 上一步 laststep() { this.Editprogress = this.Editprogress - 1; }, }, }; </script> @@ -1173,12 +1324,7 @@ 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; @@ -1216,6 +1362,21 @@ } } } .sidecolumn { margin-bottom: 10px; 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); } .headline { display: flex; font-size: 20px; border-left: 4px solid #41a1be; padding-left: 5px; margin: 15px 0; } .tsgname { width: 90px; margin-right: 10px; src/views/knowledge/questionnaire/compilequer/index.vue
@@ -413,38 +413,57 @@ </el-form-item> </el-col> </el-row> <el-row :gutter="10"> <el-col :span="12" ><el-form-item label="题目类型"> <el-select v-model="topicobj.scriptType" disabled size="medium" filterable placeholder="请选择分类" > <el-option class="topicobjaa" v-for="item in askvaluetype" :key="item.value" :label="item.label" :value="item.value" > </el-option> </el-select></el-form-item ></el-col> <el-col :span="12"> <el-form-item label="题目分数"> <el-input v-model="topicobj.scriptTopic" placeholder="请输入标题" ></el-input> </el-form-item ></el-col> </el-row> <el-row :gutter="10"> <el-col :span="12" ><el-form-item label="是否必填"> <el-select v-model="topicobj.ismandatory" placeholder="请选择" <el-radio-group v-model="topicobj.ismandatory"> <el-radio v-for="(item, index) in required" :label="item.value" >{{ item.label }}</el-radio > <el-option v-for="item in required" :key="item.value" :label="item.label" :value="item.value" </el-radio-group> </el-form-item></el-col > </el-option> </el-select> </el-form-item ></el-col> <el-col :span="12" ><el-form-item label="是否可用"> <el-select v-model="topicobj.isavailable" placeholder="请选择" <el-radio-group v-model="topicobj.isavailable"> <el-radio v-for="(item, index) in usable" :label="item.value" >{{ item.label }}</el-radio > <el-option v-for="item in usable" :key="item.value" :label="item.label" :value="item.value" </el-radio-group> </el-form-item></el-col > </el-option> </el-select> </el-form-item ></el-col> </el-row> <el-row> <el-col :span="12"> @@ -465,7 +484,9 @@ <el-radio :label="0">否</el-radio> </el-radio-group> </el-form-item> <div v-if="topicobj.scriptType != 3"> <div v-if="topicobj.scriptType == 1 || topicobj.scriptType == 2" > <div class="headline">选项设置</div> <div class="topicxq" @@ -565,7 +586,7 @@ <el-input style="width: 20vw" type="textarea" autosize :rows="2" placeholder="此处放置患者回答" v-model="topicobj.reply" > @@ -573,6 +594,18 @@ ></el-form-item> </el-row> <el-form-item label="分值"> <template #label> 分值 <el-tooltip class="item" effect="light" content="填空题分数值由负责人员在问卷手机后手动评价。" placement="top-start" > <i class="el-icon-warning-outline"></i> </el-tooltip> <!-- 在标签后插入红色星号 --> </template> <el-input type="text" placeholder="请输入选项分值" @@ -673,6 +706,9 @@ custom-class="demo-drawer" size="50%" > <div style="margin: 0 25px"> <el-tabs v-model="activeName"> <el-tab-pane label="题库选取" name="first"> <div class="preview-left"> <el-form :model="queryParams" @@ -690,6 +726,23 @@ @keyup.enter.native="getaddtopiclist" /> </el-form-item> <el-form-item label="题目类型" prop="scriptTopic"> <el-select v-model="queryParams.scriptType" size="medium" filterable placeholder="请选择分类" > <el-option class="topicobjaa" v-for="item in askvaluetype" :key="item.value" :label="item.label" :value="item.value" > </el-option> </el-select> </el-form-item> <el-form-item> <el-button @@ -699,7 +752,10 @@ @click="getaddtopiclist" >搜索</el-button > <el-button icon="el-icon-refresh" size="medium" @click="resetQuery" <el-button icon="el-icon-refresh" size="medium" @click="resetQuery" >重置</el-button > </el-form-item> @@ -735,7 +791,10 @@ class-name="small-padding fixed-width" > <template slot-scope="scope"> <el-button size="medium" type="text" @click="addtopic(scope.row)" <el-button size="medium" type="text" @click="addtopic(scope.row)" ><span class="button-textxg" ><i class="el-icon-circle-plus-outline"></i>添加</span ></el-button @@ -750,6 +809,294 @@ :limit.sync="queryParams.pageSize" @pagination="getaddtopiclist" /> </div> </el-tab-pane> <el-tab-pane label="手动配置" name="second"> <div class="preview-left"> <el-form :inline="true" :model="indexform" class="demo-form-inline" > <div class="headline"> 题目设置详情 <span style="margin-left: 30px" ><el-button type="primary" @click="Submittopicobj" >保存新增</el-button ></span > </div> <el-divider></el-divider> <div> <el-row :gutter="10"> <el-col :span="12"> <el-form-item label="题目标题"> <el-input v-model="indexform.scriptTopic" placeholder="请输入题目标题" ></el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="题目得分"> <el-input v-model="indexform.score" placeholder="请输入分数" ></el-input> </el-form-item> </el-col> </el-row> <el-row :gutter="10"> <el-col :span="12"> <el-form-item label="评价类型"> <el-select v-model="indexform.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="12"> <el-form-item label="语言"> <el-select v-model="indexform.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="12"> <el-form-item label="是否可用"> <el-radio-group v-model="indexform.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="12"> <el-form-item label="是否必填"> <el-radio-group v-model="indexform.ismandatory"> <el-radio v-for="(item, index) in required" :label="item.value" >{{ item.label }}</el-radio > </el-radio-group> </el-form-item> </el-col> </el-row> <el-row :gutter="10"> <el-col :span="18" ><el-form-item label="题目内容"> <el-input style="width: 400px" type="textarea" v-model="indexform.scriptContent" placeholder="请从左侧列表选择" ></el-input> </el-form-item ></el-col> </el-row> </div> <div> <el-form-item label="指标名称" prop="deptId"> <el-input v-model="indexform.targetname" placeholder="请输入指标名称" maxlength="20" /> </el-form-item> <el-form-item label="指标描述" prop="deptId"> <el-input v-model="indexform.targetdesc" placeholder="请输入指标描述" maxlength="60" /> </el-form-item> <el-row> <el-col :span="20"> <el-form-item label="值类型"> <el-radio-group 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-col> </el-row> <el-row> <el-col :span="20"> <el-form-item label="题目类型"> <el-radio-group 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> <div class="topicxq" v-if="indexform.scriptType == 4"> <el-row> <el-col :span="20"> <el-form-item label="收集内容"> <el-input style="width: 400px" type="textarea" v-model="indexform.value" placeholder="问题收集内容" ></el-input> </el-form-item> </el-col> </el-row> </div> <div v-else> <div class="headline"> <div class="basics"> 选项设置 <span style="margin-left: 30px" ><el-button type="primary" round @click="addoption" >+新增</el-button ></span > </div> </div> <el-divider></el-divider> <div class="topicxq" v-for="item in indexform.svyLibTemplateTargetoptions" 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="indexform.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="indexform.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="indexform.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="indexform.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: 400px" 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> </div> </el-tab-pane> </el-tabs> </div> </el-drawer> <!-- 添加适用疾病窗口 --> @@ -807,6 +1154,7 @@ radio: "false", //单选题选中 radios: [], //多选题选中 radioas: "", //填空题答案 activeName: "first", dynamicTags: [], inputVisible: false, dialogVisiblepatient: false, //适用疾病窗口 @@ -818,6 +1166,9 @@ svyTemplateLibScripts: [], tempDetpRelevances: [], svyLibTemplateTagList: [], }, indexform: { svyLibTemplateTargetoptions: [], }, rules: {}, rulesa: {}, @@ -998,8 +1349,7 @@ submitForm(formName) { this.$modal.loading("正在上传数据,请稍候..."); this.ruleForm.suitway = this.ruleForm.suitway.join(","); if (condition) { } if (this.id) { this.ruleForm.isoperation = 2; compileQtemplate(this.ruleForm).then((res) => { @@ -1014,9 +1364,7 @@ compileQtemplate(this.ruleForm).then((res) => { this.$modal.msgSuccess("新增成功"); this.confirmillness(res.data); this.$modal.closeLoading(); this.$router.go(-1); }); } @@ -1046,7 +1394,6 @@ this.ruleForm.tempDetpRelevances.forEach((item) => { const condition = result.some((obj) => obj === item.deptId); if (!condition) { console.log(condition); const index = this.ruleForm.tempDetpRelevances.indexOf(item); this.ruleForm.tempDetpRelevances[index].delFlag = 1; } @@ -1158,7 +1505,24 @@ }, // 修改题目信息 Submittopicobj() {}, Submittopicobj() { this.$modal .confirm( '是否确认新增名称为"' + this.indexform.scriptTopic + '"的问题数据?' ) .then(() => { this.indexform.isoperation = 1; this.indexform.svyLibTemplateTargetoptions.forEach((item) => { item.isoperation = 1; }); this.ruleForm.svyTemplateLibScripts.push(this.indexform); this.indexform = { svyTemplateLibScripts: [] }; this.drawer = false; this.sortFn(); this.$modal.msgSuccess("题目新增成功,保存模版失效"); }); }, // 新增变量 addvariable() { this.variablelist.push({ @@ -1391,6 +1755,34 @@ console.log(arraysGreaterThan10, "筛选错误路线大于13分"); }, // 新问题新增 addoption() { if (!this.indexform.svyLibTemplateTargetoptions) { this.indexform.svyLibTemplateTargetoptions = []; } this.indexform.svyLibTemplateTargetoptions.push({ score: "", isoperation: 1, }); console.log(this.indexform.svyLibTemplateTargetoptions); }, // 选项文件上传 handleChange(item, response, file, fileList) { console.log(response); if (response.code == 200) { console.log(item); let index = this.indexform.svyLibTemplateTargetoptions.findIndex( (obj) => obj.optioncontent == item.optioncontent ); console.log(index); this.indexform.svyLibTemplateTargetoptions[index].picturePath = response.url; console.log(this.indexform.svyLibTemplateTargetoptions[index]); this.$forceUpdate(); } else { this.$message.error("图片插入失败"); } }, }, }; </script> @@ -1454,6 +1846,14 @@ margin-bottom: 10px; } } } .headline { display: flex; justify-content: space-between; font-size: 20px; border-left: 3px solid #41a1be; padding-left: 5px; margin: 15px 0; } .xinz-inf { font-size: 18px; @@ -1534,11 +1934,22 @@ } } } .topicxq { 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); } .custom-width { width: 100px; /* 设置宽度样式 */ } .el-select { width: 40%; width: 280px; } .el-cascader { src/views/knowledge/questionnaire/index.vue
@@ -452,10 +452,10 @@ class="scriptTopic-dev" v-for="item in topicform.svyTemplateLibScripts" :key="item.sort" v-if="item.scriptType == 3" v-if="item.scriptType == 4" > <div class="dev-text"> {{ item.sort }}、[填空]<span>{{ item.scriptContent }}</span> {{ item.sort }}、[问答]<span>{{ item.scriptContent }}</span> </div> <div class="dev-xx"> <el-input placeholder="请输入答案" v-model="radioas" clearable> src/views/patient/patient/index.vue
@@ -1111,8 +1111,6 @@ }, //修改/新增患者 submitForm() { if (condition) { } if (this.amendtag) { this.form.isoperation = 2; alterpatient(this.form) src/views/patient/propaganda/Missioncreation.vue
@@ -1066,6 +1066,7 @@ const isExist = this.overallCase.find((obj) => obj.name == item.name); if (!isExist) { item.isoperation = 1; item.patid = item.id; item.hospType = this.patientqueryParams.allhosp; this.overallCase.push(item); this.form.patTaskRelevances.push(item); src/views/patient/propaganda/QuestionnaireTask.vue
@@ -1065,6 +1065,7 @@ const isExist = this.overallCase.find((obj) => obj.name == item.name); if (!isExist) { item.isoperation = 1; item.patid = item.id; item.hospType = this.patientqueryParams.allhosp; this.overallCase.push(item); this.form.patTaskRelevances.push(item); @@ -1274,8 +1275,11 @@ let id = this.Tasktemplate.id; this.Tasktemplate.id = null; console.log(this.Tasktemplate); this.Tasktemplate.svyTemplateLibScripts.svyTaskTemplateTargetoptions = this.Tasktemplate.svyTemplateLibScripts.svyLibTemplateTargetoptions; this.Tasktemplate.svyTemplateLibScripts.forEach((item) => { item.svyTaskTemplateTargetoptions = item.svyLibTemplateTargetoptions; }); this.Tasktemplate.svyTaskTemplateScriptVOS = this.Tasktemplate.svyTemplateLibScripts; this.Tasktemplate.templateid = id; src/views/patient/propaganda/particty.vue
@@ -935,6 +935,7 @@ if (!isExist) { console.log(this.patientqueryParams.allhosp, "allhosp"); item.isoperation = 1; item.patid = item.id; item.hospType = this.patientqueryParams.allhosp; this.overallCase.push(item); this.form.patTaskRelevances.push(item); src/views/repositoryai/intention/index.vue
@@ -338,6 +338,10 @@ :rules="rules" label-width="100px" > <div class="headline"> <div class="basics">基础信息</div> </div> <el-divider></el-divider> <el-row v-if="!measurement"> <el-col :span="12"> <el-form-item label="指标名称" prop="targetname"> @@ -401,7 +405,6 @@ </el-col> <el-col :span="8"> <el-form-item label="是否可用" prop="isAvailable"> <el-radio-group v-model="indexform.isAvailable"> <el-radio v-for="(item, index) in usable" @@ -469,7 +472,19 @@ </el-form-item> <el-row v-if="!measurement"> <el-col :span="24"> <el-form-item label="值类型"> <el-form-item> <template #label> 值类型 <el-tooltip class="item" effect="light" content="本类型为结果收集类型;选项用于指向性题目如是否等;文本适用复杂情况;数值用于收集数值型数据" placement="top-start" > <i class="el-icon-warning-outline"></i> </el-tooltip> <!-- 在标签后插入红色星号 --> </template> <el-radio-group v-model="indexform.valueType"> <el-radio :label="1">选项</el-radio> <el-radio :label="2">文本</el-radio> @@ -519,7 +534,12 @@ </el-form-item> </el-col> </el-row> <div v-if="indexform.scriptType == 1 || indexform.scriptType == 2"> <div class="headline"> <div class="basics">选项设置</div> </div> <el-divider></el-divider> </div> <el-card class="box-card" style="margin-bottom: 20px" @@ -557,6 +577,10 @@ </el-card> </el-form-item> </div> --> <div class="headline"> <div class="basics">指标测试</div> </div> <el-divider></el-divider> <el-row :gutter="20"> <el-col :span="12"> <el-form-item label="测试输入" prop="nickName"> @@ -1499,6 +1523,14 @@ .tsgname:hover { background: #20894d; } .headline { display: flex; justify-content: space-between; font-size: 20px; border-left: 4px solid #41a1be; padding-left: 5px; margin: 15px 0; } .qrcode-dialo { text-align: center; // display: flex; src/views/repositoryai/templateku/configurat/index.vue
@@ -359,8 +359,8 @@ <el-table-column label="编号" align="center" key="targetid" prop="targetid" key="sort" prop="sort" /> <el-table-column label="标题" @@ -416,31 +416,42 @@ <div class="presentation-right"> <el-card class="box-card"> <el-form :inline="true" :model="topicobj" :inline="true" class="demo-form-inline" > <div class="headline"> 题目设置详情 <!-- <span style="margin-left: 30px" ><el-button type="primary" @click="Submittopicobj" >保存</el-button ></span > --> </div> <el-form-item label="题目标题"> <div class="headline">题目设置详情</div> <el-row> <el-col :span="20" ><el-form-item label="题目标题"> <el-input v-model="topicobj.scriptTopic" placeholder="请从左侧列表选择" ></el-input> </el-form-item> <el-form-item label="问题节点"> ></el-input> </el-form-item ></el-col> </el-row> <el-row> <el-col :span="20" ><el-form-item label="问题话术"> <el-input v-model="topicobj.targetid" type="textarea" style="width: 400px" v-model="topicobj.scriptContent" placeholder="请从左侧列表选择" ></el-input> </el-form-item ></el-col> </el-row> <el-row :gutter="10"> <el-col :span="12" ><el-form-item label="问题节点"> <el-input v-model="topicobj.sort" placeholder="请从左侧列表选择" :disabled="true" ></el-input> </el-form-item> ></el-input> </el-form-item ></el-col> </el-row> <el-row :gutter="10"> <el-col :span="12" ><el-form-item label="是否必填"> @@ -474,10 +485,47 @@ </el-select> </el-form-item ></el-col> </el-row> <el-form-item label="问题语音" v-if="topicobj.scriptVoice"> <mini-audio :audio-source="topicobj.scriptVoice"></mini-audio> <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) => handleChanges(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: 18px; margin-top: 10px" v-if="topicobj.scriptVoice" >{{ topicobj.scriptVoice.substring( topicobj.scriptVoice.lastIndexOf("/") + 1 ) }}</span > </el-col> <el-col :span="6"> <mini-audio :audio-source=" topicobj.scriptVoice ? topicobj.scriptVoice : 'https://example.com/example.mp3' " ></mini-audio> </el-col> </el-row> <div class="topicxq" v-if="topicobj.valueType == 2 || topicobj.valueType == 3" @@ -528,16 +576,47 @@ </el-input> </el-form-item ></el-col> </el-row> <el-row :gutter="10"> <el-col :span="16"> <el-form-item label="无匹配语音" v-if="topicobj.nomatchvoice" <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) => handleChanges(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="topicobj.nomatchvoice" >{{ topicobj.nomatchvoice.substring( topicobj.nomatchvoice.lastIndexOf("/") + 1 ) }}</span > </el-col> <el-col :span="6"> <mini-audio :audio-source="topicobj.nomatchvoice" ></mini-audio> </el-form-item ></el-col> :audio-source=" topicobj.nomatchvoice ? topicobj.nomatchvoice : 'https://example.com/example.mp3' " ></mini-audio> </el-col> </el-row> </div> <div class="topicxq"> @@ -555,20 +634,47 @@ ></el-col> </el-row> <el-row :gutter="10"> <el-col :span="16"> <el-form-item label="语音文件" v-if="topicobj.noclearlyvoice" <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) => handleChanges(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="topicobj.noclearlyvoice" >{{ topicobj.noclearlyvoice.substring( topicobj.noclearlyvoice.lastIndexOf("/") + 1 ) }}</span > </el-col> <el-col :span="6"> <mini-audio :audio-source=" topicobj.noclearlyvoice ? topicobj.noclearlyvoice : 'https://example.com/example.mp3' " ></mini-audio> </el-form-item ></el-col> ></mini-audio> </el-col> </el-row> </div> <div class="topicxq"> @@ -586,20 +692,47 @@ ></el-col> </el-row> <el-row :gutter="10"> <el-col :span="16"> <el-form-item label="语音文件" v-if="topicobj.sliencevoice" <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) => handleChanges(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="topicobj.sliencevoice" >{{ topicobj.sliencevoice.substring( topicobj.sliencevoice.lastIndexOf("/") + 1 ) }}</span > </el-col> <el-col :span="6"> <mini-audio :audio-source=" topicobj.sliencevoice ? topicobj.sliencevoice : 'https://example.com/example.mp3' " ></mini-audio> </el-form-item ></el-col> ></mini-audio> </el-col> </el-row> </div> </div> @@ -627,11 +760,11 @@ <div class="scriptTopic-dev" v-for="item in valssu" :key="item.targetid" :key="item.sort" v-if="item.valueType == 1" > <div class="dev-text"> {{ item.targetid }}、[单选]<span>{{ item.scriptContent }}</span> {{ item.sort }}、[单选]<span>{{ item.scriptContent }}</span> </div> <div class="dev-xx"> <el-radio-group v-model="item.remark"> @@ -648,11 +781,11 @@ <div class="scriptTopic-dev" v-for="item in valssu" :key="item.targetid" :key="item.sort" v-if="item.valueType == 2" > <div class="dev-text"> {{ item.targetid }}、[多选]<span>{{ item.scriptContent }}</span> {{ item.sort }}、[多选]<span>{{ item.scriptContent }}</span> </div> <div class="dev-xx"> <el-checkbox-group v-model="item.remark"> @@ -670,11 +803,11 @@ <div class="scriptTopic-dev" v-for="item in valssu" :key="item.targetid" :key="item.sort" v-if="item.valueType == 3" > <div class="dev-text"> {{ item.targetid }}、[填空]<span>{{ item.scriptContent }}</span> {{ item.sort }}、[填空]<span>{{ item.scriptContent }}</span> </div> <div class="dev-xx"> <el-input placeholder="请输入答案" v-model="radioas" clearable> @@ -797,18 +930,36 @@ > </div> <el-divider></el-divider> <div> <el-row :gutter="10"> <el-col :span="12"> <el-form-item label="题目标题"> <el-input v-model="indexform.scriptTopic" placeholder="请输入题目标题" ></el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="问题节点"> <el-input v-model="indexform.targetid" v-model="indexform.sort" placeholder="请输入问题节点" ></el-input> </el-form-item> </el-col> </el-row> <el-row :gutter="10"> <el-col :span="18" ><el-form-item label="问题话术"> <el-input style="width: 400px" type="textarea" v-model="indexform.scriptContent" placeholder="请从左侧列表选择" ></el-input> </el-form-item ></el-col> </el-row> <el-row :gutter="10"> <el-col :span="12" ><el-form-item label="是否必填"> @@ -883,6 +1034,7 @@ ></mini-audio> </el-col> </el-row> </div> <div> <el-form-item label="指标名称" prop="deptId"> <el-input @@ -948,7 +1100,9 @@ <Regular :TargetoptionList="indexform.ivrLibaScriptTargetoptionList" @deloption="deloption" @addoption="addoptionson" :controlsc="false" :addoption="true" /> <!-- 无匹配类型 --> <div class="topicxq"> @@ -1282,6 +1436,14 @@ }, }; }, activated() { if (this.id != this.$route.query.id) { this.RoutingDataProcessing(); this.gettabList(); this.getvFollowup(); this.auxiliary(); } }, created() { this.RoutingDataProcessing(); @@ -1423,9 +1585,18 @@ }); }); compileFollowup(this.ruleForm).then((res) => { if (res.code == 200) { this.$modal.msgSuccess("编辑成功"); this.$modal.closeLoading(); this.confirmillness(res.data); this.$router.go(-1); const obj = { path: "/knowledge/templateku/" }; this.$tab.closeOpenPage(obj); } else { this.$modal.msgError("保存失败"); this.$modal.closeLoading(); } }); }, confirmillness(guid) { @@ -1448,6 +1619,7 @@ }, // 科室处理 Departmenttreatment() { this.$modal.loading("正在上传数据,请稍候..."); this.ruleForm.deptNames = JSON.stringify(this.tempDetpRelevanceslist); this.ruleForm.ivrLibaTemplateScriptVOList = this.ruleForm.ivrLibaTemplateScriptVOList.concat(this.delScriptVOList); @@ -1499,7 +1671,8 @@ type: "warning", }) .then(() => { this.$router.go(-1); const obj = { path: "/knowledge/templateku/" }; this.$tab.closeOpenPage(obj); }) .catch(() => { this.$message({ @@ -1508,20 +1681,33 @@ }); }); }, //控制语音文件 //控制语音文件(新) handleChange(response, file, additionalParam) { console.log(response); console.log(additionalParam); if (additionalParam == 1) { this.indexform.scriptVoice = response.url; console.log(this.indexform.scriptVoice); } 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; } this.$forceUpdate(); }, //控制语音文件 handleChanges(response, file, additionalParam) { console.log(response); console.log(additionalParam); if (additionalParam == 1) { this.topicobj.scriptVoice = response.url; } else if (additionalParam == 2) { this.topicobj.nomatchvoice = response.url; } else if (additionalParam == 3) { this.topicobj.sliencevoice = response.url; } else if (additionalParam == 4) { this.topicobj.noclearlyvoice = response.url; } this.$forceUpdate(); }, @@ -1641,6 +1827,7 @@ ); row.isoperation = 3; this.delScriptVOList.push(row); this.sortFn(); this.$modal.msgSuccess("已删除,保存模版生效"); }) .catch(() => {}); @@ -1692,12 +1879,12 @@ sortFn() { this.ruleForm.ivrLibaTemplateScriptVOList = this.ruleForm.ivrLibaTemplateScriptVOList.map((item, index) => { return Object.assign({}, item, { targetid: (index + 1).toString() }); return Object.assign({}, item, { sort: (index + 1).toString() }); }); this.ruleForm.ivrLibaTemplateScriptVOList.forEach((question, index) => { question.ivrLibaScriptTargetoptionList = question.ivrLibaScriptTargetoptionList.map((option) => { option.nextQuestion = Number(question.targetid) + 1; option.nextQuestion = Number(question.sort) + 1; return option; }); }); @@ -1707,9 +1894,25 @@ deloption() {}, // 修改题目信息 Submittopicobj() { this.ruleForm.ivrLibaTemplateScriptVOList[this.optionIndex] = this.topicobj; this.$modal.msgSuccess("暂存选项成功"); this.$modal .confirm( '是否确认新增名称为"' + this.indexform.scriptTopic + '"的问题数据?' ) .then(() => { this.indexform.isoperation = 1; this.indexform.pid = this.ruleForm.id; this.indexform.ivrLibaScriptTargetoptionList.forEach((item) => { item.isoperation = 1; }); this.ruleForm.ivrLibaTemplateScriptVOList.push(this.indexform); this.indexform = { ivrLibaScriptTargetoptionList: [], }; this.drawer = false; this.sortFn(); this.$modal.msgSuccess("题目新增成功,保存模版失效"); }); }, // --------------------- @@ -1751,6 +1954,19 @@ nodynamiccruxsJson: "", }); } }, addoptionson() { this.indexform.ivrLibaScriptTargetoptionList.push({ guid: 1, isoperation: 1, targetvalue: "", targetregex: "", targetregex2: "", dynamiccruxs: [], nodynamiccruxs: [], dynamiccruxsJson: "", nodynamiccruxsJson: "", }); }, }, }; @@ -1853,6 +2069,7 @@ vertical-align: bottom; } } .xinz-infs { font-size: 18px; line-height: 48px; src/views/repositoryai/templateku/index.vue
@@ -624,6 +624,7 @@ downloadfn() {}, // 跳转编辑话术页面 compileUpdate(row) { // this.$router.replace("/tpuconfigurat"); this.$router.push({ path: "/knowledge/tpuconfigurat/", query: { id: row.id }, src/views/repositoryai/verbaltrick/particulars/index.vue
@@ -7,14 +7,14 @@ <el-step> <template slot="title"> <span style="cursor: pointer" @click="Editprogress = 1" >问题库编辑</span >话术基础信息编辑</span > </template> </el-step> <el-step> <template slot="title"> <span style="cursor: pointer" @click="nextstep" >问题指标编辑</span >话术指标编辑</span > </template> </el-step> @@ -1192,7 +1192,7 @@ .sidecolumn { margin: 20px; margin-bottom: 0; padding: 20px; padding: 15px; background: #edf1f7; border: 1px solid #dcdfe6; -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), @@ -1200,6 +1200,7 @@ } .leftvlue { margin: 20px; margin-top: 10px; padding: 30px; background: #ffff; border: 1px solid #dcdfe6;