| | |
| | | <el-step> |
| | | <template slot="title"> |
| | | <span style="cursor: pointer" @click="Editprogress = 2" |
| | | >问卷题目</span |
| | | >问卷问题</span |
| | | > |
| | | </template> |
| | | </el-step> |
| | |
| | | :model="ruleForm" |
| | | :rules="rules" |
| | | ref="ruleForm" |
| | | label-width="100px" |
| | | label-width="180px" |
| | | class="demo-ruleForm" |
| | | > |
| | | <el-row :gutter="10"> |
| | | <el-form-item label="问卷名称" prop="svyname"> |
| | | <div style="width: 55vw"> |
| | | <el-input v-model="ruleForm.svyname"></el-input> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="问卷描述" prop="description"> |
| | | <el-input |
| | | style="width: 55vw" |
| | | type="textarea" |
| | | :rows="2" |
| | | placeholder="请输入内容" |
| | | v-model="ruleForm.description" |
| | | > |
| | | </el-input |
| | | ></el-form-item> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="10"> |
| | | <el-form-item label="问卷分类" prop="region"> |
| | | <el-form-item label="问卷分类" prop="categoryid"> |
| | | <el-select |
| | | v-model="ruleForm.categoryid" |
| | | size="medium" |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="10"> |
| | | <el-form-item label="评价类型"> |
| | | <el-col :span="8"> |
| | | <el-form-item label="评价类型" prop="scoreType"> |
| | | <el-select |
| | | v-model="ruleForm.scoreType" |
| | | placeholder="请选择分类" |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-form-item label="问卷标题" prop="name"> |
| | | <div style="width: 30%"> |
| | | <el-input v-model="ruleForm.svyname"></el-input> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="问卷描述"> |
| | | <el-input |
| | | style="width: 40vw" |
| | | type="textarea" |
| | | autosize |
| | | placeholder="请输入内容" |
| | | v-model="ruleForm.description" |
| | | > |
| | | </el-input |
| | | ></el-form-item> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="10"> |
| | | <el-form-item label="可用状态" prop="isenable"> |
| | | <el-radio-group v-model="ruleForm.isenable"> |
| | | <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="版本号" prop="name"> |
| | | <el-input |
| | | v-model="ruleForm.version" |
| | | placeholder="默认1.0" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <!-- <el-row :gutter="20"> |
| | | <el-col :span="10"> |
| | | <el-form-item label="长期任务" prop="longTemp"> |
| | | <el-radio-group v-model="ruleForm.longTemp"> |
| | | <el-radio |
| | | v-for="(item, index) in longtype" |
| | | :label="item.value" |
| | | >{{ item.label }}</el-radio |
| | | > |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="8" v-if="ruleForm.longTemp"> |
| | | <el-form-item label="任务周期(几天后)" prop="name"> |
| | | <el-input |
| | | v-model="ruleForm.sendDay" |
| | | placeholder="默认5天后" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> --> |
| | | |
| | | <el-row> |
| | | <el-form-item label="标签" prop="desc"> |
| | | <el-form-item prop="dynamicTags"> |
| | | <template #label> |
| | | 标签 |
| | | <el-tooltip |
| | | class="item" |
| | | effect="light" |
| | | content="准确、扼要、多重的标签,可以让您在系统使用中方便的查找到该模版。" |
| | | placement="top-start" |
| | | > |
| | | <i class="el-icon-warning-outline"></i> |
| | | </el-tooltip> |
| | | <!-- 在标签后插入红色星号 --> |
| | | </template> |
| | | <div class="xinz-inf"> |
| | | <el-tag |
| | | :key="tag.tagname" |
| | |
| | | </el-form-item> |
| | | </el-row> |
| | | <div class="xinz-infs"> |
| | | <el-form-item label="适用疾病" prop="region"> |
| | | <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> |
| | | <div style="margin-bottom: 10px"> |
| | | <el-button |
| | | type="warning" |
| | | @click="$refs.child.handleAddpatient()" |
| | | >添加疾病诊断</el-button |
| | | > |
| | | </div> |
| | | <el-tag |
| | | v-for="tag in displayedTags" |
| | | :key="tag.icdid" |
| | |
| | | <el-tag v-if="hasMore" type="info">+{{ remaining }} more</el-tag> |
| | | </el-form-item> |
| | | </div> |
| | | <div style="margin-left: 120px; margin-bottom: 10px"> |
| | | <el-button type="warning" @click="$refs.child.handleAddpatient()" |
| | | >疾病详情</el-button |
| | | > |
| | | </div> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="6"> |
| | | <el-form-item label="版本号" prop="name"> |
| | | <el-input |
| | | v-model="ruleForm.version" |
| | | placeholder="默认1.0" |
| | | ></el-input> </el-form-item |
| | | ></el-col> |
| | | <el-col :span="9"> |
| | | <el-form-item label="可用状态" prop="region"> |
| | | <el-radio-group v-model="ruleForm.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-row> |
| | | <el-form-item label="问卷方式" prop="region"> |
| | | |
| | | <el-form-item label="问卷方式" prop="suitway"> |
| | | <el-select |
| | | v-model="ruleForm.suitway" |
| | | style="width: 55vw" |
| | | size="medium" |
| | | multiple |
| | | filterable |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="适用院区" prop="region"> |
| | | <el-select |
| | | v-model="ruleForm.campus" |
| | | size="medium" |
| | | filterable |
| | | placeholder="请选择分类" |
| | | <el-row> |
| | | <el-col :span="20" |
| | | ><el-form-item label="适用科室" prop="region"> |
| | | <el-select |
| | | v-model="tempDetpRelevanceslist" |
| | | @remove-tag="removetag" |
| | | style="width: 55vw" |
| | | size="medium" |
| | | multiple |
| | | filterable |
| | | placeholder="请选择科室" |
| | | > |
| | | <el-option |
| | | class="ruleFormaa" |
| | | v-for="item in flatArray" |
| | | :key="item.deptCode" |
| | | :label="item.label" |
| | | :value="item.deptCode" |
| | | > |
| | | </el-option> |
| | | </el-select> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="20" |
| | | ><el-form-item label="适用病区" prop="region"> |
| | | <el-select |
| | | v-model="tempbelongWards" |
| | | @remove-tag="removehpsp" |
| | | style="width: 55vw" |
| | | size="medium" |
| | | multiple |
| | | filterable |
| | | placeholder="请选择病区" |
| | | > |
| | | <el-option |
| | | class="ruleFormaa" |
| | | v-for="item in flatArray" |
| | | :key="item.deptCode" |
| | | :label="item.label" |
| | | :value="item.deptCode" |
| | | > |
| | | </el-option> |
| | | </el-select> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <el-form-item label="结束语" prop="conclusion"> |
| | | <el-input |
| | | style="width: 55vw; line-height: 80px" |
| | | type="textarea" |
| | | :rows="5" |
| | | autosize |
| | | placeholder="请输入内容" |
| | | v-model="ruleForm.conclusion" |
| | | > |
| | | <el-option |
| | | class="ruleFormaa" |
| | | v-for="item in courtyardlist" |
| | | :key="item.label" |
| | | :label="item.label" |
| | | :value="item.label" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="适用科室" prop="region"> |
| | | <el-cascader |
| | | v-model="tempDetpRelevanceslist" |
| | | :options="deptList" |
| | | :props="props" |
| | | :show-all-levels="false" |
| | | clearable |
| | | > |
| | | <template slot-scope="{ node, data }"> |
| | | <span>{{ data.deptName }}</span> |
| | | <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span> |
| | | </template> |
| | | </el-cascader> |
| | | </el-form-item> |
| | | </el-input |
| | | ></el-form-item> |
| | | |
| | | <el-form-item> |
| | | <el-button type="success" @click="nextstep('ruleForm')" |
| | | >下一步</el-button |
| | | > |
| | | <el-button type="info" @click="closeFm('ruleForm')">关闭</el-button> |
| | | <el-button @click="Departmenttreatment('ruleForm')" |
| | | <el-button @click="toExamine('ruleForm')" |
| | | >保存问卷基础信息</el-button |
| | | > |
| | | </el-form-item> |
| | |
| | | <!-- 问卷设置 --> |
| | | <div v-if="Editprogress == 2"> |
| | | <div class="leftvlue-jbxx"> |
| | | 问卷题目设置 |
| | | 问卷问题设置 |
| | | <span style="" |
| | | ><el-button |
| | | type="warning" |
| | | icon="el-icon-finished" |
| | | round |
| | | @click="test" |
| | | >题目规则效验</el-button |
| | | >问题规则效验</el-button |
| | | ></span |
| | | > |
| | | </div> |
| | |
| | | icon="el-icon-plus" |
| | | round |
| | | @click="getaddtopiclist" |
| | | >添加题目</el-button |
| | | >添加问题</el-button |
| | | > |
| | | <el-button |
| | | type="success" |
| | | icon="el-icon-edit-outline" |
| | | round |
| | | @click="Operateit = !Operateit" |
| | | >{{ !Operateit ? "编辑题目" : "完整信息展示" }}</el-button |
| | | >{{ !Operateit ? "编辑问题" : "完整信息展示" }}</el-button |
| | | > |
| | | </div> |
| | | <div style="display: flex"> |
| | | <div style="display: flex" v-if="ruleForm.scoreType == 1"> |
| | | <span |
| | | style=" |
| | | width: 180px; |
| | |
| | | width="50" |
| | | /> |
| | | <el-table-column |
| | | label="题目标题" |
| | | label="问题主题" |
| | | align="center" |
| | | key="scriptTopic" |
| | | prop="scriptTopic" |
| | |
| | | </el-table-column> |
| | | <el-table-column |
| | | v-if="!Operateit" |
| | | label="题目内容" |
| | | label="问题内容" |
| | | align="center" |
| | | key="scriptContent" |
| | | prop="scriptContent" |
| | |
| | | align="center" |
| | | key="nextScriptno" |
| | | prop="nextScriptno" |
| | | :show-overflow-tooltip="true" |
| | | > |
| | | <template slot-scope="scope"> |
| | | <span>{{ |
| | |
| | | :model="topicobj" |
| | | class="demo-form-inline" |
| | | > |
| | | <div class="headline">题目设置详情</div> |
| | | <div class="headline">问题设置详情</div> |
| | | <el-row :gutter="10"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="题目标题"> |
| | | <el-form-item label="问题主题"> |
| | | <el-input |
| | | v-model="topicobj.scriptTopic" |
| | | placeholder="请输入标题" |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <el-row :gutter="10"> |
| | | <el-form-item label="问题内容"> |
| | | <el-input |
| | | style="width: 600px" |
| | | type="textarea" |
| | | :rows="2" |
| | | autosize |
| | | placeholder="请输入问题内容" |
| | | v-model="topicobj.scriptContent" |
| | | > |
| | | </el-input |
| | | ></el-form-item> |
| | | </el-row> |
| | | <el-row :gutter="10"> |
| | | <el-col :span="12" |
| | | ><el-form-item label="题目类型"> |
| | | ><el-form-item label="问题类型"> |
| | | <el-select |
| | | v-model="topicobj.scriptType" |
| | | disabled |
| | |
| | | ></el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item |
| | | label="题目分值" |
| | | v-if="topicobj.scoretype == 1" |
| | | label="问题分值" |
| | | v-if="ruleForm.scoreType == 1" |
| | | > |
| | | <el-input |
| | | v-model="topicobj.score" |
| | |
| | | > |
| | | <el-col :span="12" |
| | | ><el-form-item label="是否可用"> |
| | | <el-radio-group v-model="topicobj.isavailable"> |
| | | <el-radio-group v-model="topicobj.isenable"> |
| | | <el-radio |
| | | v-for="(item, index) in usable" |
| | | :label="item.value" |
| | |
| | | <el-radio :label="0">否</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item label="选中提示" v-if="topicobj.scriptType != 1"> |
| | | <el-input |
| | | style="width: 24vw" |
| | | type="textarea" |
| | | autosize |
| | | placeholder="请输入内容" |
| | | v-model="topicobj.prompt" |
| | | > |
| | | </el-input |
| | | ></el-form-item> |
| | | <div |
| | | v-if="topicobj.scriptType == 1 || topicobj.scriptType == 2" |
| | | > |
| | |
| | | v-for="item in topicobj.svyLibTemplateTargetoptions" |
| | | > |
| | | <el-row :gutter="5"> |
| | | <el-col :span="16" |
| | | ><el-form-item label="选项"> |
| | | <el-col :span="12" |
| | | ><el-form-item label="选项名称"> |
| | | <el-input |
| | | type="text" |
| | | placeholder="请输入选项" |
| | |
| | | > |
| | | </el-input> </el-form-item |
| | | ></el-col> |
| | | <el-col :span="8"> |
| | | <el-col :span="12"> |
| | | <el-form-item |
| | | v-if="topicobj.scoretype == 1" |
| | | v-if="ruleForm.scoreType == 1" |
| | | label="选项分值" |
| | | > |
| | | <el-input |
| | |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item |
| | | v-else-if="topicobj.scoretype == 2" |
| | | v-else-if="ruleForm.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 :label="1">A</el-radio> |
| | | <el-radio :label="2">B</el-radio> |
| | | <el-radio :label="3">C</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item |
| | | v-else-if="topicobj.scoretype == 3" |
| | | v-else-if="ruleForm.scoreType == 3" |
| | | label="优良等级" |
| | | > |
| | | <el-radio-group v-model="item.score"> |
| | |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | </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" v-if="topicobj.branchFlag == 1"> |
| | | <el-col :span="20" |
| | |
| | | </el-input> </el-form-item |
| | | ></el-col> |
| | | </el-row> |
| | | <el-row :gutter="10"> |
| | | <el-row :gutter="10" v-if="topicobj.scriptType == 1"> |
| | | <el-form-item label="选中提示"> |
| | | <el-input |
| | | style="width: 20vw" |
| | | style="width: 24vw" |
| | | type="textarea" |
| | | autosize |
| | | placeholder="请输入内容" |
| | |
| | | > |
| | | <el-button type="primary" @click="laststep()">上一步</el-button> |
| | | <el-button type="info" @click="closeFm('ruleForm')">关闭</el-button> |
| | | <el-button @click="Departmenttreatment('ruleForm')" |
| | | >保存题目数据</el-button |
| | | <el-button @click="toExamine('ruleForm')" |
| | | >保存问题数据</el-button |
| | | > |
| | | </div> |
| | | <!-- 问卷预览 --> |
| | |
| | | <el-button type="primary" @click="laststep()">上一步</el-button> |
| | | </div> |
| | | </div> |
| | | <!-- 添加题目弹窗 --> |
| | | <!-- 添加问题弹窗 --> |
| | | <el-drawer |
| | | title="添加题目" |
| | | title="添加问题" |
| | | :visible.sync="drawer" |
| | | custom-class="demo-drawer" |
| | | size="50%" |
| | |
| | | @keyup.enter.native="getaddtopiclist" |
| | | /> |
| | | </el-form-item> |
| | | <el-form-item label="题目类型" prop="scriptTopic"> |
| | | <el-form-item label="问题类型" prop="scriptTopic"> |
| | | <el-select |
| | | v-model="queryParams.scriptType" |
| | | size="medium" |
| | |
| | | class="demo-form-inline" |
| | | > |
| | | <div class="headline"> |
| | | 题目设置详情 |
| | | 问题设置详情 |
| | | <span style="margin-left: 30px" |
| | | ><el-button type="primary" @click="Submittopicobj" |
| | | >保存新增</el-button |
| | |
| | | <el-divider></el-divider> |
| | | <div> |
| | | <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="题目标题"> |
| | | <el-form-item label="问题主题"> |
| | | <el-input |
| | | v-model="indexform.scriptTopic" |
| | | placeholder="请输入题目标题" |
| | | placeholder="请输入问题主题" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="题目得分"> |
| | | <el-form-item label="问题得分"> |
| | | <el-input |
| | | v-model="indexform.score" |
| | | placeholder="请输入分数" |
| | |
| | | <el-col :span="12"> |
| | | <el-form-item label="评价类型"> |
| | | <el-select |
| | | v-model="indexform.scoretype" |
| | | v-model="indexform.scoreType" |
| | | placeholder="请选择分类" |
| | | > |
| | | <el-option |
| | |
| | | <el-row :gutter="10"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="是否可用"> |
| | | <el-radio-group v-model="indexform.isAvailable"> |
| | | <el-radio-group v-model="indexform.isenable"> |
| | | <el-radio |
| | | v-for="(item, index) in usable" |
| | | :label="item.value" |
| | |
| | | </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 |
| | | style="width: 250px" |
| | | type="textarea" |
| | | :rows="2" |
| | | v-model="indexform.targetname" |
| | | placeholder="请输入指标名称" |
| | | maxlength="20" |
| | |
| | | </el-form-item> |
| | | <el-form-item label="指标描述" prop="deptId"> |
| | | <el-input |
| | | style="width: 250px" |
| | | type="textarea" |
| | | :rows="2" |
| | | v-model="indexform.targetdesc" |
| | | placeholder="请输入指标描述" |
| | | maxlength="60" |
| | |
| | | |
| | | <el-row> |
| | | <el-col :span="20"> |
| | | <el-form-item label="值类型"> |
| | | <el-form-item label="结果类型"> |
| | | <el-radio-group v-model="indexform.valueType"> |
| | | <el-radio :label="1">选项</el-radio> |
| | | <el-radio :label="2">文本</el-radio> |
| | |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="20"> |
| | | <el-form-item label="题目类型"> |
| | | <el-form-item label="问题类型"> |
| | | <el-radio-group v-model="indexform.scriptType"> |
| | | <el-radio :label="1">单选</el-radio> |
| | | <el-radio :label="2">多选</el-radio> |
| | |
| | | <el-col :span="11" |
| | | ><el-form-item label="选项名称"> |
| | | <el-input |
| | | style="width: 400px" |
| | | type="text" |
| | | placeholder="请输入选项分值" |
| | | v-model="item.optioncontent" |
| | |
| | | ></el-col> |
| | | <el-col :span="11"> |
| | | <el-form-item |
| | | v-if="indexform.scoretype == 1" |
| | | v-if="indexform.scoreType == 1" |
| | | label="分值" |
| | | > |
| | | <el-input |
| | |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item |
| | | v-else-if="indexform.scoretype == 2" |
| | | 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 :label="1">A</el-radio> |
| | | <el-radio :label="2">B</el-radio> |
| | | <el-radio :label="3">C</el-radio> |
| | | </el-radio-group> |
| | | </el-form-item> |
| | | <el-form-item |
| | | v-else-if="indexform.scoretype == 3" |
| | | v-else-if="indexform.scoreType == 3" |
| | | label="优良等级" |
| | | > |
| | | <el-radio-group v-model="item.score"> |
| | |
| | | |
| | | <el-col |
| | | :span="2" |
| | | :offsset="indexform.scoretype == 4 ? 11 : 0" |
| | | :offsset="indexform.scoreType == 4 ? 11 : 0" |
| | | > |
| | | <el-button |
| | | type="danger" |
| | |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="10"> |
| | | <el-form-item label="预警提醒"> |
| | | <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-row :gutter="10" v-if="item.scriptType == 1"> |
| | | <el-form-item label="选中提示"> |
| | | <el-input |
| | | style="width: 400px" |
| | |
| | | import store from "@/store"; |
| | | import { |
| | | getQtemplateclassify, |
| | | delQtemplateclassify, |
| | | addQtemplateclassify, |
| | | depthospgetson, |
| | | depthospgetsonlist, |
| | | getQtemplateobj, |
| | | compileQtemplate, |
| | | Qtemplateinfo, |
| | |
| | | Followupinfo, |
| | | issueinfo, |
| | | getissuelist, |
| | | depthospgetsondel, |
| | | deltargetillness, |
| | | addtargetillness, |
| | | getillnesslist, |
| | |
| | | } from "@/api/AiCentre/index"; |
| | | import OptionalForm from "@/components/OptionalForm"; //正则组件 |
| | | import { getToken } from "@/utils/auth"; |
| | | import { deptTreeSelect } from "@/api/system/user"; |
| | | |
| | | export default { |
| | | name: "Questionnaireinfo", |
| | |
| | | svyTemplateLibScripts: [], |
| | | tempDetpRelevances: [], |
| | | svyLibTemplateTagList: [], |
| | | scoreType: "4", |
| | | isenable: "0", |
| | | longTemp: "0", |
| | | sendDay: "5", |
| | | }, |
| | | indexform: { |
| | | svyLibTemplateTargetoptions: [], |
| | | }, |
| | | rules: {}, |
| | | // 表单校验 |
| | | rules: { |
| | | categoryid: [ |
| | | { required: true, message: "问卷分类不能为空", trigger: "blur" }, |
| | | ], |
| | | scoreType: [ |
| | | { required: true, message: "评价类型不能为空", trigger: "blur" }, |
| | | ], |
| | | svyname: [ |
| | | { required: true, message: "问卷名称不能为空", trigger: "blur" }, |
| | | ], |
| | | isenable: [ |
| | | { required: true, message: "可用状态不能为空", trigger: "blur" }, |
| | | ], |
| | | scriptTopic: [ |
| | | { required: true, message: "问题主题不能为空", trigger: "blur" }, |
| | | ], |
| | | ismandatory: [ |
| | | { required: true, message: "是否必填不能为空", trigger: "blur" }, |
| | | ], |
| | | scriptType: [ |
| | | { required: true, message: "问题类型不能为空", trigger: "blur" }, |
| | | ], |
| | | suitway: [ |
| | | { required: true, message: "问卷方式不能为空", trigger: "blur" }, |
| | | ], |
| | | conclusion: [ |
| | | { required: true, message: "问卷结束语不能为空", trigger: "blur" }, |
| | | ], |
| | | }, |
| | | rulesa: {}, |
| | | optionsclass: [], //分类列表 |
| | | optionlist: [ |
| | |
| | | sdadd: ["sss", "ssccss", "ssaas", "ss"], |
| | | }, |
| | | ], |
| | | addvalue: "添加题目", |
| | | // 题目表格数据 |
| | | addvalue: "添加问题", |
| | | // 问题表格数据 |
| | | userList: [], |
| | | deptList: [], |
| | | props: { multiple: true, value: "deptId", label: "deptName" }, |
| | |
| | | illnessVisible: false, //指标疾病弹框 |
| | | Operateit: true, |
| | | deptOptions: [], |
| | | flatArray: [], |
| | | optionsillness: [], |
| | | delScriptVOList: [], |
| | | illnesslistapi: [], |
| | | illnesslist: [], |
| | | tempDetpRelevanceslist: [], |
| | | tempDetpRelevanceslist: [], //科室数据 |
| | | tempDetpRelevanceslistform: [], //科室数据 |
| | | tempbelongWards: [], //病区数据 |
| | | tempbelongWardsform: [], //病区数据 |
| | | optionstag: [], |
| | | valuetype: [], |
| | | qremark: [], |
| | | hosplist: [], |
| | | deptlist: [], |
| | | usable: [ |
| | | { value: "0", label: "可用" }, |
| | | { value: "1", label: "停用" }, |
| | | ], |
| | | longtype: [ |
| | | { value: "0", label: "普通任务" }, |
| | | { value: "1", label: "长期任务" }, |
| | | ], |
| | | required: [ |
| | | { value: "1", label: "必填" }, |
| | |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | }, |
| | | arr: [ |
| | | [ |
| | | { id: 1, grade: "5" }, |
| | | { id: 2, grade: "5" }, |
| | | { id: 3, grade: "5" }, |
| | | { id: 4, grade: "5" }, |
| | | ], |
| | | [ |
| | | { id: 1, grade: "5" }, |
| | | { id: 3, grade: "5" }, |
| | | { id: 4, grade: "5" }, |
| | | ], |
| | | [ |
| | | { id: 1, grade: "5" }, |
| | | { id: 2, grade: "5" }, |
| | | { id: 4, grade: "5" }, |
| | | ], |
| | | ], |
| | | belongWards: [], |
| | | belongDepts: [], |
| | | queryParamsdept: { |
| | | tempid: "", |
| | | type: 1, |
| | | }, |
| | | }; |
| | | }, |
| | | activated() { |
| | | if (this.id != this.$route.query.id) { |
| | | this.getissueinfo(); |
| | | this.gettabList(); |
| | | } else { |
| | | this.ruleForm.svyTemplateLibScripts = |
| | | this.ruleForm.svyTemplateLibScripts.filter( |
| | | (item) => item.isoperation != 3 |
| | | ); |
| | | this.ruleForm.svyLibTemplateTagList = |
| | | this.ruleForm.svyLibTemplateTagList.filter( |
| | | (item) => item.isoperation != 3 |
| | | ); |
| | | if (this.ruleForm.suitway) |
| | | this.ruleForm.suitway = this.ruleForm.suitway.split(","); |
| | | this.delScriptVOList = []; |
| | | this.tempDetpRelevanceslistform = []; |
| | | this.tempbelongWardsform = []; |
| | | this.$forceUpdate(); |
| | | } |
| | | }, |
| | | created() { |
| | | this.getissueinfo(); |
| | | this.gettabList(); |
| | | this.getDeptTree(); |
| | | this.mode = store.getters.Askmode; |
| | | this.languagelist = store.getters.languagelist; |
| | | this.usable = store.getters.usable; |
| | |
| | | this.courtyardlist = store.getters.courtyardlist; |
| | | this.askvaluetype = store.getters.askvaluetype; |
| | | this.appraiselist = store.getters.appraiselist; |
| | | this.belongWards = store.getters.belongWards; |
| | | this.belongDepts = store.getters.belongDepts; |
| | | |
| | | // this.test(); |
| | | }, |
| | |
| | | return this.illnesslist.length - 10; |
| | | }, |
| | | }, |
| | | |
| | | methods: { |
| | | // 公共方法--------------- |
| | | getIndexInArray(arr, obj) { |
| | |
| | | // 获取数据 |
| | | getissueinfo() { |
| | | this.id = this.$route.query.id; |
| | | this.queryParamsdept.tempid = this.id; |
| | | this.ruleForm = { |
| | | svyTemplateLibScripts: [], |
| | | tempDetpRelevances: [], |
| | | svyLibTemplateTagList: [], |
| | | scoreType: "4", |
| | | isenable: "0", |
| | | longTemp: "0", |
| | | sendDay: "5", |
| | | }; |
| | | this.topicobj = {}; |
| | | |
| | | if (this.id) { |
| | | getQtemplateobj({ svyid: this.id }).then((res) => { |
| | |
| | | this.dynamicTags = this.ruleForm.svyLibTemplateTagList.map( |
| | | this.processElement |
| | | ); |
| | | this.tempDetpRelevanceslist = JSON.parse(this.ruleForm.deptNames); |
| | | this.ruleForm.suitway = this.ruleForm.suitway.split(","); |
| | | console.log(this.dynamicTags, "this.dynamicTags"); |
| | | if (this.ruleForm.suitway) |
| | | this.ruleForm.suitway = this.ruleForm.suitway.split(","); |
| | | }); |
| | | getillness({ outid: this.id, type: 5 }).then((res) => { |
| | | this.illnesslist = res.rows; |
| | |
| | | this.ruleForm.isenable = "1"; |
| | | } |
| | | |
| | | listDept(this.queryParams).then((response) => { |
| | | this.deptList = this.handleTree(response.data, "deptId"); |
| | | }); |
| | | // 分类 |
| | | getQtemplateclassify({}).then((res) => { |
| | | this.optionsclass = res.rows; |
| | | }); |
| | | this.tempDetpRelevanceslist = []; |
| | | this.tempbelongWards = []; |
| | | if (this.queryParamsdept.tempid) { |
| | | depthospgetsonlist(this.queryParamsdept).then((res) => { |
| | | if (res.code == 200) { |
| | | let arr = res.rows; |
| | | arr.forEach((item) => { |
| | | if (item.deptType == 1) { |
| | | this.deptlist.push(item); |
| | | this.tempDetpRelevanceslist.push(item.deptCode); |
| | | } else if (item.deptType == 2) { |
| | | this.hosplist.push(item); |
| | | this.tempbelongWards.push(item.deptCode); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | }, |
| | | // 获取科室树 |
| | | getDeptTree() { |
| | | // 科室列表 |
| | | deptTreeSelect().then((response) => { |
| | | this.deptOptions = response.data; |
| | | this.flatArray = this.flattenArray(response.data); |
| | | }); |
| | | }, |
| | | flattenArray(multiArray) { |
| | | let result = []; |
| | | |
| | | // 递归函数,用于将多级数组转换为一维数组,只包含最底层的元素 |
| | | function flatten(element) { |
| | | // 如果当前元素有子元素,继续递归 |
| | | if (element.children && element.children.length > 0) { |
| | | element.children.forEach((child) => flatten(child)); |
| | | } else { |
| | | // 克隆元素以避免修改原始数据 |
| | | let item = JSON.parse(JSON.stringify(element)); |
| | | result.push(item); // 将最底层的元素添加到结果数组 |
| | | } |
| | | } |
| | | |
| | | // 从顶层元素开始递归 |
| | | multiArray.forEach((element) => flatten(element)); |
| | | return result; // 返回只包含最底层元素的一维数组 |
| | | }, |
| | | submitForm(formName) { |
| | | this.$modal.loading("正在修正保存数据,请稍候..."); |
| | | this.ruleForm.suitway = this.ruleForm.suitway.join(","); |
| | | if (Array.isArray(this.ruleForm.suitway)) { |
| | | this.ruleForm.suitway = this.ruleForm.suitway.join(","); |
| | | } |
| | | if (!this.ruleForm.categoryid) { |
| | | this.ruleForm.categoryid = -1; |
| | | } |
| | | // 题目保存处理 |
| | | // 提交 |
| | | this.ruleForm.svyTemplateLibScripts.forEach((res) => { |
| | | if (!res.isoperation) { |
| | | res.isoperation = 2; |
| | | } |
| | | res.ivrLibaScriptTargetoptionList = res.svyLibTemplateTargetoptions.map( |
| | | (item) => { |
| | | if (!item.isoperation) { |
| | | item.isoperation = 2; |
| | | item.templateID = this.ruleForm.id; |
| | | } |
| | | return item; |
| | | } |
| | | ); |
| | | }); |
| | | this.delScriptVOList.forEach((item) => { |
| | | this.ruleForm.svyTemplateLibScripts.push(item); |
| | | }); |
| | | if (this.id) { |
| | | this.ruleForm.isoperation = 2; |
| | | this.ruleForm.tempDetpRelevances = null; |
| | | compileQtemplate(this.ruleForm).then((res) => { |
| | | this.$modal.msgSuccess("修改成功"); |
| | | this.confirmillness(); |
| | | this.putbelongDepts(); |
| | | this.$modal.closeLoading(); |
| | | this.$router.go(-1); |
| | | // this.$router.go(-1); |
| | | window.location.reload(); |
| | | }); |
| | | } else { |
| | | this.ruleForm.isoperation = 1; |
| | | this.ruleForm.version = this.ruleForm.version |
| | | ? this.ruleForm.version |
| | | : "1.0"; |
| | | this.ruleForm.tempDetpRelevances = null; |
| | | compileQtemplate(this.ruleForm).then((res) => { |
| | | this.$modal.msgSuccess("新增成功"); |
| | | this.confirmillness(res.data); |
| | | this.putbelongDepts(res.data); |
| | | this.$modal.closeLoading(); |
| | | this.$router.go(-1); |
| | | }); |
| | | } |
| | | }, |
| | | // 科室处理 |
| | | // 题目校验 |
| | | toExamine() { |
| | | // 遍历题目集合 |
| | | for (let i = 0; i < this.ruleForm.svyTemplateLibScripts.length; i++) { |
| | | const question = this.ruleForm.svyTemplateLibScripts[i]; |
| | | |
| | | // 如果 scriptType 为 4,则跳过当前题目 |
| | | if (question.scriptType === 4) { |
| | | continue; |
| | | } |
| | | // 获取当前题目的选项集合 |
| | | const options = question.svyLibTemplateTargetoptions; |
| | | |
| | | // 创建一个 Set 来存储选项名称,用于检测重复 |
| | | const optionNames = new Set(); |
| | | |
| | | // 遍历选项集合 |
| | | for (let j = 0; j < options.length; j++) { |
| | | const option = options[j]; |
| | | const optionContent = option.optioncontent; |
| | | |
| | | // 如果选项名称已经存在于 Set 中,说明重复 |
| | | if (optionNames.has(optionContent)) { |
| | | this.$message.error( |
| | | `题目 ${question.id} 的选项名称 "${optionContent}" 重复` |
| | | ); |
| | | return false; // 返回 false 表示校验失败 |
| | | } |
| | | // 将选项名称添加到 Set 中 |
| | | optionNames.add(optionContent); |
| | | } |
| | | } |
| | | |
| | | // 如果所有题目都校验通过,返回 true |
| | | console.log("所有题目校验通过,选项名称无重复"); |
| | | this.Departmenttreatment(); |
| | | }, |
| | | |
| | | // 科室/院区处理 |
| | | Departmenttreatment() { |
| | | this.ruleForm.deptNames = JSON.stringify(this.tempDetpRelevanceslist); |
| | | this.ruleForm.svyTemplateLibScripts = |
| | | this.ruleForm.svyTemplateLibScripts.concat(this.delScriptVOList); |
| | | const result = this.tempDetpRelevanceslist.map( |
| | | (subArr) => subArr[subArr.length - 1] |
| | | ); |
| | | // id数组查数组对象 |
| | | result.forEach((item) => { |
| | | const condition = this.ruleForm.tempDetpRelevances.some( |
| | | (obj) => obj.deptId === item |
| | | ); |
| | | if (!condition) { |
| | | listDept({ deptId: item }).then((res) => { |
| | | console.log(res.data[0]); |
| | | res.data[0].type = 2; |
| | | this.ruleForm.tempDetpRelevances.push(res.data[0]); |
| | | this.tempDetpRelevanceslist.forEach((item) => { |
| | | console.log(item); |
| | | let result = this.deptlist.some((obj) => obj.deptCode == item); |
| | | console.log(this.result, "result"); |
| | | |
| | | if (!result) { |
| | | this.tempDetpRelevanceslistform.push({ |
| | | deptType: 1, |
| | | longTemp: this.ruleForm.longTemp, |
| | | deptCode: item, |
| | | tempid: this.id, |
| | | type: 1, |
| | | }); |
| | | } |
| | | }); |
| | | // 数组对象查id数组 |
| | | this.ruleForm.tempDetpRelevances.forEach((item) => { |
| | | const condition = result.some((obj) => obj === item.deptId); |
| | | if (!condition) { |
| | | const index = this.ruleForm.tempDetpRelevances.indexOf(item); |
| | | this.ruleForm.tempDetpRelevances[index].delFlag = 1; |
| | | this.tempbelongWards.forEach((item) => { |
| | | let result = this.hosplist.some((obj) => obj.deptCode == item); |
| | | if (!result) { |
| | | this.tempbelongWardsform.push({ |
| | | deptType: 2, |
| | | longTemp: this.ruleForm.longTemp, |
| | | deptCode: item, |
| | | tempid: this.id, |
| | | type: 1, |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | // return |
| | | setTimeout(() => { |
| | | this.submitForm(); |
| | | }, 1000); |
| | | }, 500); |
| | | }, |
| | | // 科室删除触发 |
| | | removetag(row) { |
| | | let result = this.deptlist |
| | | .filter((item) => item.deptCode == row) |
| | | .map((item) => item.id); |
| | | console.log(result.length); |
| | | if (result.length) { |
| | | depthospgetsondel(result).then((res) => { |
| | | if (res.code) { |
| | | } |
| | | }); |
| | | } |
| | | }, |
| | | // 删除删除触发 |
| | | removehpsp(row) { |
| | | let result = this.hosplist |
| | | .filter((item) => item.deptCode == row) |
| | | .map((item) => item.id); |
| | | if (result.length) { |
| | | depthospgetsondel(result).then((res) => { |
| | | if (res.code) { |
| | | } |
| | | }); |
| | | } |
| | | }, |
| | | // 下一步 |
| | | nextstep() { |
| | |
| | | }); |
| | | }); |
| | | }, |
| | | // 获取题目列表 |
| | | // 获取问题列表 |
| | | getaddtopiclist() { |
| | | this.drawer = true; |
| | | this.queryParams.scoretype = this.ruleForm.scoreType; |
| | | this.queryParams.scoreType = this.ruleForm.scoreType; |
| | | getissuelist(this.queryParams).then((res) => { |
| | | this.loading = false; |
| | | this.userList = res.rows; |
| | |
| | | console.log(this.userList); |
| | | }); |
| | | }, |
| | | // 新增题目 |
| | | // 新增问题 |
| | | addtopic(row) { |
| | | row.isoperation = 1; |
| | | console.log(row, "row"); |
| | | row.svyLibScriptOptions.forEach((item) => { |
| | | item.isoperation = 1; |
| | | }); |
| | |
| | | handleUpdate(row) { |
| | | this.topicobj = row; |
| | | this.radioas = ""; |
| | | console.log(this.topicobj, "看数据"); |
| | | // getissuelist({ svyid: row.svyid }).then((res) => { |
| | | // }); |
| | | }, |
| | |
| | | console.log(this.ruleForm.svyTemplateLibScripts); |
| | | }, |
| | | |
| | | // 修改题目信息 |
| | | // 修改问题信息 |
| | | Submittopicobj() { |
| | | this.$modal |
| | | .confirm( |
| | |
| | | this.drawer = false; |
| | | |
| | | this.sortFn(); |
| | | this.$modal.msgSuccess("题目新增成功,保存模版失效"); |
| | | this.$modal.msgSuccess("问题新增成功,保存模板失效"); |
| | | }); |
| | | }, |
| | | // 新增变量 |
| | |
| | | this.illnessVisible = false; |
| | | this.$modal.msgSuccess("编辑成功"); |
| | | }, |
| | | // 保存科室/病区 |
| | | putbelongDepts(id) { |
| | | this.tempDetpRelevanceslistform.forEach((item) => { |
| | | if (!item.tempid) item.tempid = id; |
| | | }); |
| | | this.tempbelongWardsform.forEach((item) => { |
| | | if (!item.tempid) item.tempid = id; |
| | | }); |
| | | if (this.tempDetpRelevanceslistform.length > 0) { |
| | | depthospgetson(this.tempDetpRelevanceslistform).then((res) => { |
| | | if (res.code == 200) { |
| | | this.$modal.msgSuccess("科室新增成功"); |
| | | } |
| | | }); |
| | | } |
| | | if (this.tempbelongWardsform.length > 0) { |
| | | depthospgetson(this.tempbelongWardsform).then((res) => { |
| | | if (res.code == 200) { |
| | | this.$modal.msgSuccess("院区新增成功"); |
| | | } |
| | | }); |
| | | } |
| | | }, |
| | | |
| | | resetQuery() { |
| | | this.queryParams = { pageNum: 1, pageSize: 10 }; |
| | | this.getaddtopiclist(); |
| | |
| | | sumArray(arr) { |
| | | // const arrsum = arr; |
| | | // arrsum.forEach((item) => { |
| | | // // 判断题目和模版层级 |
| | | // // 判断问题和模板层级 |
| | | // console.log(item, "一条链路"); |
| | | |
| | | // const totalScore = item.reduce((accumulator, current) => { |
| | |
| | | if (allGreaterThanTen) { |
| | | this.$modal.msgSuccess("分值校验成功"); |
| | | } else { |
| | | this.$modal.msgError("题目分值累加和模版分值不符"); |
| | | this.$modal.msgError("问题分值累加和模板分值不符"); |
| | | } |
| | | }, |
| | | |
| | |
| | | ); |
| | | |
| | | if (notInB.length) { |
| | | this.$modal.msgError("题目未全部使用"); |
| | | this.$modal.msgError("问题未全部使用"); |
| | | } else { |
| | | this.$modal.msgSuccess("题目全部使用"); |
| | | this.$modal.msgSuccess("问题全部使用"); |
| | | } |
| | | }); |
| | | arr.forEach((item) => { |
| | |
| | | return acc; |
| | | }, {}); |
| | | const whether = item.values(idCount).some((count) => count > 1); // 如果有任何 id 的计数大于 1 就返回 true |
| | | if (!whether) this.$modal.msgError("配置项有题目重复"); |
| | | if (!whether) this.$modal.msgError("配置项有问题重复"); |
| | | }); |
| | | }, |
| | | // 题目和选项间的分值判断 |
| | | // 问题和选项间的分值判断 |
| | | Scorejudgment() { |
| | | let scorearr = this.topicobj.svyLibScriptOptions; |
| | | let isValid = scorearr.every((score, index) => { |