From 6e54a6688661a05de7c418612cea8b38bbc2dee3 Mon Sep 17 00:00:00 2001 From: WXL <1785969728@qq.com> Date: 星期一, 14 四月 2025 11:28:26 +0800 Subject: [PATCH] 测试完成 --- src/views/knowledge/questionnaire/compilequer/index.vue | 2050 +++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 1,506 insertions(+), 544 deletions(-) diff --git a/src/views/knowledge/questionnaire/compilequer/index.vue b/src/views/knowledge/questionnaire/compilequer/index.vue index 958a9ec..208b3a9 100644 --- a/src/views/knowledge/questionnaire/compilequer/index.vue +++ b/src/views/knowledge/questionnaire/compilequer/index.vue @@ -14,7 +14,7 @@ <el-step> <template slot="title"> <span style="cursor: pointer" @click="Editprogress = 2" - >闂嵎棰樼洰</span + >闂嵎闂</span > </template> </el-step> @@ -36,12 +36,27 @@ :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" @@ -64,8 +79,8 @@ </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="璇烽�夋嫨鍒嗙被" @@ -81,49 +96,73 @@ </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-form-item label="鏂囦欢" prop="sickness"> - <div style="width: 40%"> - <el-upload - class="upload-demo" - action="https://jsonplaceholder.typicode.com/posts/" - :on-change="handleChange" - :file-list="fileList" - > - <el-button size="small" type="primary">鐐瑰嚮涓婁紶</el-button> - <div slot="tip" class="el-upload__tip"> - 鍙兘涓婁紶jpg/png/xsl鏂囦欢锛屼笖涓嶈秴杩�50mb - </div> - </el-upload> - </div> - </el-form-item> <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" + :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" @@ -131,6 +170,7 @@ @change="handleInputConfirm" filterable remote + allow-create reserve-keyword default-first-option :remote-method="remoteMethodtag" @@ -155,76 +195,42 @@ </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)" + <div class="xinz-infs"> + <el-form-item> + <template #label> + 閫傜敤鐤剧梾 + <el-tooltip + class="item" + effect="light" + content="閫夋嫨濂介�傜敤鐤剧梾鍚庯紝鍙互鏂逛究鎮ㄩ�氳繃鐤剧梾璇婃柇鏌ユ壘鍒板搴旂殑鐥呬汉!" + placement="top-start" > - {{ 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> + <i class="el-icon-warning-outline"></i> + </el-tooltip> + </template> + <div style="margin-bottom: 10px"> <el-button - v-else - class="button-new-tag" - size="small" - @click="inputVisibleillness = true" - >+ 鏂板鐤剧梾</el-button + type="warning" + @click="$refs.child.handleAddpatient()" + >娣诲姞鐤剧梾璇婃柇</el-button > </div> + <el-tag + v-for="tag in displayedTags" + :key="tag.icdid" + type="warning" + :disable-transitions="false" + > + {{ tag.icdname }} + </el-tag> + <el-tag v-if="hasMore" type="info">+{{ remaining }} more</el-tag> </el-form-item> - </el-row> - <el-row :gutter="20"> - <el-col :span="6"> - <el-form-item label="鐗堟湰鍙�" prop="name"> - <el-input v-model="ruleForm.version"></el-input> </el-form-item - ></el-col> - <el-col :span="9"> - <el-form-item label="鍙敤鐘舵��" prop="region"> - <el-select - v-model="ruleForm.isenable" - size="medium" - filterable - placeholder="璇烽�夋嫨鍒嗙被" - > - <el-option - class="ruleFormaa" - v-for="item in usable" - :key="item.value" - :label="item.label" - :value="item.value" - > - </el-option> - </el-select> </el-form-item - ></el-col> - </el-row> - <el-form-item label="闂嵎鏂瑰紡" prop="region"> + </div> + + <el-form-item label="闂嵎鏂瑰紡" prop="suitway"> <el-select v-model="ruleForm.suitway" + style="width: 55vw" size="medium" multiple filterable @@ -241,37 +247,64 @@ </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 @@ -285,7 +318,18 @@ </div> <!-- 闂嵎璁剧疆 --> <div v-if="Editprogress == 2"> - <div class="leftvlue-jbxx">闂嵎棰樼洰璁剧疆</div> + <div class="leftvlue-jbxx"> + 闂嵎闂璁剧疆 + <span style="" + ><el-button + type="warning" + icon="el-icon-finished" + round + @click="test" + >闂瑙勫垯鏁堥獙</el-button + ></span + > + </div> <el-divider></el-divider> <div style="display: flex; justify-content: space-between"> <div> @@ -294,10 +338,17 @@ 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 > </div> - <div style="display: flex"> + <div style="display: flex" v-if="ruleForm.scoreType == 1"> <span style=" width: 180px; @@ -314,7 +365,7 @@ </div> </div> <div class="presentation"> - <div class="presentation-left"> + <div :class="Operateit ? 'presentation-left' : 'spresentation-left'"> <el-card class="box-card" style="min-height: 688px"> <el-table v-loading="loading" @@ -325,23 +376,77 @@ align="center" key="sort" prop="sort" + width="50" /> <el-table-column - label="棰樼洰鏍囬" + label="闂涓婚" align="center" key="scriptTopic" prop="scriptTopic" :show-overflow-tooltip="true" /> <el-table-column - label="棰樼洰鍐呭" + label="棰樺瀷" + align="center" + key="scriptType" + prop="scriptType" + :show-overflow-tooltip="true" + > + <template slot-scope="scope"> + <dict-tag + :options="askvaluetype" + :value="scope.row.scriptType" + /> + </template> + </el-table-column> + <el-table-column + v-if="!Operateit" + label="闂鍐呭" align="center" key="scriptContent" prop="scriptContent" :show-overflow-tooltip="true" /> + <el-table-column + v-if="!Operateit" + label="鎸囨爣鍚嶇О" + align="center" + key="targetname" + prop="targetname" + :show-overflow-tooltip="true" + /> + <el-table-column + v-if="!Operateit" + label="鏄惁蹇呭~" + align="center" + key="ismandatory" + prop="ismandatory" + :show-overflow-tooltip="true" + > + <template slot-scope="scope"> + <dict-tag + :options="required" + :value="scope.row.ismandatory" + /> + </template> + </el-table-column> + <el-table-column + label="涓嬮璺宠浆" + align="center" + key="nextScriptno" + prop="nextScriptno" + > + <template slot-scope="scope"> + <span>{{ + scope.row.nextScriptno == 0 + ? "宸叉槸鏈�鍚庝竴棰�" + : scope.row.nextScriptno + }}</span> + </template> + </el-table-column> <el-table-column + v-if="Operateit" label="鎿嶄綔" align="center" width="250" @@ -377,72 +482,146 @@ </el-table> </el-card> </div> - <div class="presentation-right"> + <div class="presentation-right" v-if="Operateit"> <el-card class="box-card"> <el-form :inline="true" :model="topicobj" 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="棰樼洰鏍囬"> - <el-input - v-model="topicobj.scriptTopic" - placeholder="璇疯緭鍏ユ爣棰�" - ></el-input> - </el-form-item> + <div class="headline">闂璁剧疆璇︽儏</div> + <el-row :gutter="10"> + <el-col :span="12"> + <el-form-item label="闂涓婚"> + <el-input + v-model="topicobj.scriptTopic" + placeholder="璇疯緭鍏ユ爣棰�" + ></el-input> </el-form-item + ></el-col> + <el-col :span="12"> + <el-form-item label="涓嬮璺宠浆"> + <el-input + v-model="topicobj.nextScriptno" + placeholder="璇疯緭鍏ラ鍙�" + ></el-input> + </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-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="闂鍒嗗��" + v-if="ruleForm.scoreType == 1" + > + <el-input + v-model="topicobj.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="topicobj.ismandatory" - placeholder="璇烽�夋嫨" - > - <el-option - v-for="item in required" - :key="item.value" - :label="item.label" - :value="item.value" + <el-radio-group v-model="topicobj.ismandatory"> + <el-radio + v-for="(item, index) in required" + :label="item.value" + >{{ item.label }}</el-radio > - </el-option> - </el-select> </el-form-item - ></el-col> + </el-radio-group> + </el-form-item></el-col + > <el-col :span="12" ><el-form-item label="鏄惁鍙敤"> - <el-select - v-model="topicobj.isavailable" - placeholder="璇烽�夋嫨" - > - <el-option - v-for="item in usable" - :key="item.value" - :label="item.label" - :value="item.value" + <el-radio-group v-model="topicobj.isenable"> + <el-radio + v-for="(item, index) in usable" + :label="item.value" + >{{ item.label }}</el-radio > - </el-option> - </el-select> </el-form-item - ></el-col> + </el-radio-group> + </el-form-item></el-col + > </el-row> - <div v-if="topicobj.scriptType != 3"> + <el-form-item + label="鏄惁鐢遍�夐」閰嶇疆璺宠浆" + v-if="topicobj.scriptType == 1" + > + <el-radio-group v-model="topicobj.branchFlag"> + <el-radio :label="1">鏄�</el-radio> + <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" + > <div class="headline">閫夐」璁剧疆</div> <div class="topicxq" v-for="item in topicobj.svyLibTemplateTargetoptions" > - <el-row :gutter="10"> - <el-col :span="11"> + <el-row :gutter="5"> + <el-col :span="12" + ><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="12"> <el-form-item - v-if="topicobj.scoretype == 1" - label="鍒嗗��" + v-if="ruleForm.scoreType == 1" + label="閫夐」鍒嗗��" > <el-input + class="custom-width" type="text" placeholder="璇疯緭鍏ラ�夐」鍒嗗��" v-model="item.score" @@ -451,17 +630,17 @@ </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"> @@ -473,40 +652,30 @@ </el-col> </el-row> <el-row :gutter="10"> - <el-col :span="11" - ><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" v-if="topicobj.branchFlag == 1"> + <el-col :span="20" + ><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" + @blur="branchFlagfn" placeholder="璇疯緭鍏ラ鍙�" v-model="item.nextQuestion" 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-row :gutter="10" v-if="topicobj.scriptType == 1"> <el-form-item label="閫変腑鎻愮ず"> <el-input - style="width: 20vw" + style="width: 24vw" type="textarea" autosize placeholder="璇疯緭鍏ュ唴瀹�" @@ -514,6 +683,20 @@ > </el-input ></el-form-item> + </el-row> + <el-row :gutter="10"> + <el-form-item label="閫夐」鏂囦欢" prop="sickness"> + <div style="width: 40vw"> + <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> </el-row> </div> </div> @@ -524,13 +707,34 @@ <el-input style="width: 20vw" type="textarea" - autosize + :rows="2" placeholder="姝ゅ鏀剧疆鎮h�呭洖绛�" - v-model="radioas" + v-model="topicobj.reply" > </el-input ></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="璇疯緭鍏ラ�夐」鍒嗗��" + v-model="topicobj.score" + show-word-limit + > + </el-input> + </el-form-item> </div> </div> </el-form> @@ -544,7 +748,7 @@ <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 > </div> <!-- 闂嵎棰勮 --> @@ -552,62 +756,61 @@ <div class="leftvlue-jbxx">闂嵎棰勮</div> <el-divider></el-divider> <div class="preview-left"> - <!-- 鍗曢�� --> - <div - class="scriptTopic-dev" - v-for="item in ruleForm.svyTemplateLibScripts" - :key="item.sort" - v-if="item.scriptType == 1" - > - <div class="dev-text"> - {{ item.sort }}銆乕鍗曢�塢<span>{{ item.scriptContent }}</span> + <div v-for="item in ruleForm.svyTemplateLibScripts"> + <!-- 鍗曢�� --> + <div + class="scriptTopic-dev" + :key="item.sort" + v-if="item.scriptType == 1" + > + <div class="dev-text"> + {{ item.sort }}銆乕鍗曢�塢<span>{{ item.scriptContent }}</span> + </div> + <div class="dev-xx"> + <el-radio-group v-model="item.remark"> + <el-radio + v-for="(items, index) in item.svyLibTemplateTargetoptions" + :key="index" + :label="index" + >{{ items.optioncontent }}</el-radio + > + </el-radio-group> + </div> </div> - <div class="dev-xx"> - <el-radio-group v-model="item.remark"> - <el-radio - v-for="(items, index) in item.svyLibTemplateTargetoptions" - :key="index" - :label="index" - >{{ items.optioncontent }}</el-radio - > - </el-radio-group> + <!-- 澶氶�� --> + <div + class="scriptTopic-dev" + :key="item.sort" + v-if="item.scriptType == 2" + > + <div class="dev-text"> + {{ item.sort }}銆乕澶氶�塢<span>{{ item.scriptContent }}</span> + </div> + <div class="dev-xx"> + <el-checkbox-group v-model="qremark"> + <el-checkbox + v-for="(items, index) in item.svyLibTemplateTargetoptions" + :key="index" + :label="index" + > + {{ items.optioncontent }} + </el-checkbox> + </el-checkbox-group> + </div> </div> - </div> - <!-- 澶氶�� --> - <div - class="scriptTopic-dev" - v-for="item in ruleForm.svyTemplateLibScripts" - :key="item.sort" - v-if="item.scriptType == 2" - > - <div class="dev-text"> - {{ item.sort }}銆乕澶氶�塢<span>{{ item.wssd }}</span> - </div> - <div class="dev-xx"> - <el-checkbox-group v-model="item.remark"> - <el-checkbox - v-for="(items, index) in item.svyLibTemplateTargetoptions" - :key="index" - :label="index" - > - {{ items.optioncontent }} - </el-checkbox> - </el-checkbox-group> - </div> - </div> - <!-- 濉┖ --> - <div - class="scriptTopic-dev" - v-for="item in ruleForm.svyTemplateLibScripts" - :key="item.sort" - v-if="item.scriptType == 3" - > - <div class="dev-text"> - {{ item.sort }}銆乕濉┖]<span>{{ item.optioncontent }}</span> - </div> - <div class="dev-xx"> - <el-input placeholder="璇疯緭鍏ョ瓟妗�" v-model="radioas" clearable> - </el-input> + <!-- 濉┖ --> + <div + class="scriptTopic-dev" + :key="item.sort" + v-if="item.scriptType == 4" + > + <div class="dev-text"> + {{ item.sort }}銆乕濉┖]<span>{{ item.scriptContent }}</span> + </div> + <div class="dev-xx"> + <el-input placeholder="璇疯緭鍏ョ瓟妗�" v-model="radioas" clearable> + </el-input> + </div> </div> </div> </div> @@ -616,84 +819,421 @@ <el-button type="primary" @click="laststep()">涓婁竴姝�</el-button> </div> </div> - <!-- 棰勮妯$増寮圭獥 --> + <!-- 娣诲姞闂寮圭獥 --> <el-drawer - title="娣诲姞棰樼洰" + title="娣诲姞闂" :visible.sync="drawer" custom-class="demo-drawer" size="50%" > - <div class="preview-left"> - <el-form - :model="queryParams" - ref="queryForm" - size="small" - :inline="true" - label-width="98px" - > - <el-form-item label="闂鏍囬" prop="scriptTopic"> - <el-input - v-model="queryParams.scriptTopic" - placeholder="璇疯緭鍏�" - clearable - style="width: 200px" - @keyup.enter.native="getaddtopiclist" - /> - </el-form-item> - - <el-form-item> - <el-button - type="primary" - icon="el-icon-search" - size="medium" - @click="getaddtopiclist" - >鎼滅储</el-button - > - <el-button icon="el-icon-refresh" size="medium" @click="resetQuery" - >閲嶇疆</el-button - > - </el-form-item> - </el-form> - <el-table v-loading="loading" :data="userList"> - <el-table-column - label="鏍囬" - align="center" - key="scriptTopic" - prop="scriptTopic" - width="100" - /> - <el-table-column - label="闂鍐呭" - align="center" - key="scriptContent" - prop="scriptContent" - width="200" - :show-overflow-tooltip="true" - /> - - <el-table-column - label="鎿嶄綔" - align="center" - class-name="small-padding fixed-width" - > - <template slot-scope="scope"> - <el-button size="medium" type="text" @click="addtopic(scope.row)" - ><span class="button-textxg" - ><i class="el-icon-circle-plus-outline"></i>娣诲姞</span - ></el-button + <div style="margin: 0 25px"> + <el-tabs v-model="activeName"> + <el-tab-pane label="棰樺簱閫夊彇" name="first"> + <div class="preview-left"> + <el-form + :model="queryParams" + ref="queryForm" + size="small" + :inline="true" + label-width="98px" > - </template> - </el-table-column> - </el-table> - <pagination - v-show="total > 0" - :total="total" - :page.sync="queryParams.pageNum" - :limit.sync="queryParams.pageSize" - @pagination="getaddtopiclist" - /> + <el-form-item label="闂鏍囬" prop="scriptTopic"> + <el-input + v-model="queryParams.scriptTopic" + placeholder="璇疯緭鍏�" + clearable + style="width: 200px" + @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 + type="primary" + icon="el-icon-search" + size="medium" + @click="getaddtopiclist" + >鎼滅储</el-button + > + <el-button + icon="el-icon-refresh" + size="medium" + @click="resetQuery" + >閲嶇疆</el-button + > + </el-form-item> + </el-form> + <el-table v-loading="loading" :data="userList"> + <el-table-column + label="鏍囬" + align="center" + key="scriptTopic" + prop="scriptTopic" + width="100" + /> + <el-table-column + label="闂鍐呭" + align="center" + key="scriptContent" + prop="scriptContent" + width="200" + :show-overflow-tooltip="true" + /> + <el-table-column + label="閫夐」鍐呭" + align="center" + key="targetoptions" + prop="targetoptions" + width="200" + :show-overflow-tooltip="true" + /> + + <el-table-column + label="鎿嶄綔" + align="center" + class-name="small-padding fixed-width" + > + <template slot-scope="scope"> + <el-button + size="medium" + type="text" + @click="addtopic(scope.row)" + ><span class="button-textxg" + ><i class="el-icon-circle-plus-outline"></i>娣诲姞</span + ></el-button + > + </template> + </el-table-column> + </el-table> + <pagination + v-show="total > 0" + :total="total" + :page.sync="queryParams.pageNum" + :limit.sync="queryParams.pageSize" + @pagination="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="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-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.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="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> + </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-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 + style="width: 400px" + 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="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" + 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" v-if="item.scriptType == 1"> + <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> + <!-- 娣诲姞閫傜敤鐤剧梾绐楀彛 --> + <Optional-Form + ref="child" + :dialogVisiblepatient="dialogVisiblepatient" + :overallCase="illnesslist" + @addoption="dialogVisiblepatient = false" + @kkoption="dialogVisiblepatient = true" + /> </div> </template> @@ -703,9 +1243,9 @@ import store from "@/store"; import { getQtemplateclassify, - delQtemplateclassify, - addQtemplateclassify, - getQtemplatelist, + depthospgetson, + depthospgetsonlist, + getQtemplateobj, compileQtemplate, Qtemplateinfo, compileissue, @@ -713,16 +1253,28 @@ Followupinfo, issueinfo, getissuelist, + depthospgetsondel, deltargetillness, addtargetillness, getillnesslist, illnesslistget, getillness, } from "@/api/AiCentre/index"; +import OptionalForm from "@/components/OptionalForm"; //姝e垯缁勪欢 +import { getToken } from "@/utils/auth"; +import { deptTreeSelect } from "@/api/system/user"; export default { + name: "Questionnaireinfo", + + components: { OptionalForm }, + data() { return { + headers: { + Authorization: "Bearer " + getToken(), + }, + uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/uploadSort", sidecolumnrabs: "left", //鏂瑰悜 Editprogress: 1, //缂栬緫杩涘害 currentVersion: "1.2.3", //褰撳墠鐗堟湰 @@ -731,14 +1283,56 @@ radio: "false", //鍗曢�夐閫変腑 radios: [], //澶氶�夐閫変腑 radioas: "", //濉┖棰樼瓟妗� + activeName: "first", dynamicTags: [], inputVisible: false, + dialogVisiblepatient: false, //閫傜敤鐤剧梾绐楀彛 inputValue: "", topicobj: {}, // 鎬绘潯鏁� total: 1, - ruleForm: { svyTemplateLibScripts: [], tempDetpRelevances: [] }, - rules: {}, + ruleForm: { + svyTemplateLibScripts: [], + tempDetpRelevances: [], + svyLibTemplateTagList: [], + scoreType: "4", + isenable: "0", + longTemp: "0", + sendDay: "5", + }, + indexform: { + svyLibTemplateTargetoptions: [], + }, + // 琛ㄥ崟鏍¢獙 + 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: [ @@ -746,11 +1340,7 @@ { value: "scriptTopic", table: "scriptTopic" }, ], - appraiselist: [ - { label: "鍒嗘暟", value: "1" }, - { label: "ABC绛夌骇", value: "2" }, - { label: "浼樿壇绛夌骇", value: "3" }, - ], + appraiselist: [], fileList: [ { @@ -777,30 +1367,43 @@ sdadd: ["sss", "ssccss", "ssaas", "ss"], }, ], - addvalue: "娣诲姞棰樼洰", - // 棰樼洰琛ㄦ牸鏁版嵁 + addvalue: "娣诲姞闂", + // 闂琛ㄦ牸鏁版嵁 userList: [], deptList: [], props: { multiple: true, value: "deptId", label: "deptName" }, themelist: [], languagelist: [], courtyardlist: [], + askvaluetype: [], precedencetype: [], inputValueillness: "", inputVisible: false, inputVisibleillness: false, 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: "蹇呭~" }, @@ -812,43 +1415,73 @@ 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.gettabList(); this.getissueinfo(); + this.gettabList(); + this.getDeptTree(); this.mode = store.getters.Askmode; this.languagelist = store.getters.languagelist; this.usable = store.getters.usable; this.required = store.getters.required; this.valuetype = store.getters.valuetype; 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(); }, - + computed: { + displayedTags() { + // 杩斿洖鍓�10涓猼ag + return this.illnesslist.slice(0, 10); + }, + hasMore() { + // 鍒ゆ柇鏄惁鏈夋洿澶氱殑tag + return this.illnesslist.length > 10; + }, + remaining() { + // 璁$畻鍓╀綑鐨則ag鏁伴噺 + return this.illnesslist.length - 10; + }, + }, methods: { // 鍏叡鏂规硶--------------- getIndexInArray(arr, obj) { return arr.indexOf(obj); + }, + processElement(element) { + return { ...element, isoperation: 1 }; }, // 閫掑綊鎵佸钩鍖� flattenArray(arr) { @@ -868,95 +1501,200 @@ // 鑾峰彇鏁版嵁 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) { - getQtemplatelist({ svyid: this.id }).then((res) => { + getQtemplateobj({ svyid: this.id }).then((res) => { this.ruleForm = res.rows[0]; - this.dynamicTags = this.ruleForm.labelInfo.split(","); - this.tempDetpRelevanceslist = JSON.parse(this.ruleForm.deptNames); - this.ruleForm.suitway = this.ruleForm.suitway.split(","); - console.log(this.tempDetpRelevanceslist); + this.dynamicTags = this.ruleForm.svyLibTemplateTagList.map( + this.processElement + ); + 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.illnesslist.forEach((item) => { + item.icdname = item.icd10name; + }); }); + } else { + this.ruleForm.isenable = "1"; } - getillnesslist({ - pageNum: 1, - pageSize: 100, - }).then((response) => { - this.optionsillness = response.rows; - }); - listDept(this.queryParams).then((response) => { - this.deptList = this.handleTree(response.data, "deptId"); - }); + // 鍒嗙被 getQtemplateclassify({}).then((res) => { - // this.optionsclass = this.flattenArray(res.rows); 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("姝e湪涓婁紶鏁版嵁锛岃绋嶅��..."); - - this.ruleForm.labelInfo = this.dynamicTags.join(","); - this.ruleForm.suitway = this.ruleForm.suitway.join(","); - + this.$modal.loading("姝e湪淇淇濆瓨鏁版嵁锛岃绋嶅��..."); + 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); }); } }, - // 绉戝澶勭悊 + // 绉戝/闄㈠尯澶勭悊 Departmenttreatment() { - this.ruleForm.deptNames = JSON.stringify(this.tempDetpRelevanceslist); - console.log(this.tempDetpRelevanceslist); - this.ruleForm.svyTemplateLibScripts = - this.ruleForm.svyTemplateLibScripts.concat(this.delScriptVOList); - console.log(this.tempDetpRelevanceslist, "this.tempDetpRelevanceslist"); - 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, }); } }); - // 鏁扮粍瀵硅薄鏌d鏁扮粍 - 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; + 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() { @@ -985,10 +1723,10 @@ }); }); }, - // 鑾峰彇棰樼洰鍒楄〃 + // 鑾峰彇闂鍒楄〃 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; @@ -996,7 +1734,7 @@ console.log(this.userList); }); }, - // 鏂板棰樼洰 + // 鏂板闂 addtopic(row) { row.isoperation = 1; row.svyLibScriptOptions.forEach((item) => { @@ -1017,7 +1755,6 @@ handleUpdate(row) { this.topicobj = row; this.radioas = ""; - console.log(this.topicobj, "鐪嬫暟鎹�"); // getissuelist({ svyid: row.svyid }).then((res) => { // }); }, @@ -1041,16 +1778,40 @@ }, sortFn() { this.ruleForm.svyTemplateLibScripts.forEach((item, index) => { - item.sort = index + 1; - item.svyLibTemplateTargetoptions.forEach((items) => { - items.nextQuestion = Number(item.sort) + 1; - }); + item.sort = Number(index) + 1; + if (item.sort == this.ruleForm.svyTemplateLibScripts.length) { + item.nextScriptno = 0; + } else { + item.nextScriptno = item.sort + 1; + } + if (item.svyLibTemplateTargetoptions) { + item.svyLibTemplateTargetoptions.forEach((items) => { + items.nextQuestion = Number(item.sort) + 1; + }); + } }); console.log(this.ruleForm.svyTemplateLibScripts); }, - // 淇敼棰樼洰淇℃伅 - 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({ @@ -1067,10 +1828,7 @@ console.log("鏈壘鍒拌瀵硅薄"); } }, - // 鎺у埗鏂囦欢 - handleChange(file, fileList) { - this.fileList = fileList.slice(-3); - }, + // 鏍囩----------------- gettabList() { const tagqueryParams = { @@ -1086,7 +1844,11 @@ 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.ruleForm.svyLibTemplateTagList[lindex].delFlag = 1; + // this.ruleForm.ivrLibaTemplateTargetList[lindex].isoperation = 3; }, handleInputConfirm() { @@ -1108,9 +1870,9 @@ isoperation: 1, }; } - // this.ruleForm.ivrLibaTemplateTargetList.push(tagvalue); + this.ruleForm.svyLibTemplateTagList.push(tagvalue); // this.dynamicTags.push(tagvalue); - this.dynamicTags.push(tagvalue.tagname); + this.dynamicTags.push(tagvalue); }); } this.inputVisible = false; @@ -1132,71 +1894,55 @@ showInput() { this.inputVisible = true; }, - // 鐤剧梾----------------------- - - handleCloseillness(tag) { - this.illnesslist.splice(this.illnesslist.indexOf(tag), 1); - if (tag.id) { - this.illnesslistapi.push(tag.id); - } - }, - remoteMethod(value) { - console.log(value); - const illnessqueryParams = { - pageNum: 1, - pageSize: 100, - icdname: value, - }; - this.loading = true; - setTimeout(() => { - this.loading = false; - getillnesslist(illnessqueryParams).then((response) => { - this.optionsillness = response.rows; - }); - }, 200); - }, - illnessConfirm(item) { - let opeavalue = {}; - let tagname = this.inputValueillness; - illnesslistget(item).then((res) => { - opeavalue = res.data; - opeavalue.outid = this.id; - opeavalue.type = 5; - opeavalue.icd10id = opeavalue.icdid; - opeavalue.icd10name = opeavalue.icdname; - opeavalue.icd10code = opeavalue.icdcode; - if (tagname) { - this.illnesslist.push(opeavalue); - } - }); - console.log(this.illnesslist); - this.inputVisibleillness = false; - this.inputValueillness = ""; - }, - // 淇濆瓨 + // 淇濆瓨鐤剧梾 confirmillness(guid) { this.illnesslist.forEach((item, index) => { if (guid) { item.outid = guid; + } else { + console.log(this.ruleForm); + item.outid = this.ruleForm.svyid; } + item.icd10name = item.icdname; + item.icd10code = item.icdcode; + item.type = 5; if (!item.id) { addtargetillness(item).then((res) => {}); } }); - if (this.illnesslistapi.length) { - deltargetillness(this.illnesslistapi.join(",")).then((res) => {}); - } 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(); }, - resetForm(formName) { - this.$refs[formName].resetFields(); - }, + + // -------------------------- // 闂嵎鍒嗘暟闄愬埗绠楁硶 // 娣峰悎璺嚎 generateCombinations(arrays, currentIndex = 0, currentCombination = []) { @@ -1220,16 +1966,13 @@ }, // 鎵ц test() { - const arrays = [ - ["2", "3", "4", "5"], - ["1", "2", "5", "6"], - ["3", "4", "5", "3"], - ["3", "2", "5", "7"], - ]; + console.log(this.ruleForm.svyTemplateLibScripts); + const arraysa = [ { id: 1, - grade: "5", + Topicjump: "2", + branchFlag: "0", arr: [ { name: "涓嶉敊", skip: 2 }, { name: "涓�鑸�", skip: 2 }, @@ -1240,85 +1983,254 @@ { id: 2, - grade: "5", + Topicjump: "4", + branchFlag: "1", arr: [ - { name: "浼樼", skip: 3 }, + { name: "浼樼", skip: 4 }, { name: "鑹ソ", skip: 3 }, { name: "涓�鑸�", skip: 3 }, - { name: "杈冨樊", skip: 4 }, + { name: "杈冨樊", skip: 3 }, ], }, { id: 3, - grade: "5", + Topicjump: "4", + branchFlag: "1", arr: [ { name: "鏄殑", skip: 4 }, - { name: "涓嶆竻妤�", skip: 4 }, + { name: "涓嶆竻妤�", skip: 5 }, { name: "杩樺彲", skip: 4 }, { name: "涓�鑸�", skip: 4 }, ], }, { id: 4, - grade: "5", + Topicjump: "5", + branchFlag: "0", + bac: null, + }, + { + id: 5, + Topicjump: "0", + branchFlag: "0", arr: [ - { name: "鐪熶笉閿�", skip: null }, - { name: "杩樺彲浠�", skip: null }, - { name: "涓�鑸埇", skip: null }, - { name: "涓嶆竻妤�", skip: null }, + { name: "鐪熶笉閿�", skip: 0 }, + { name: "杩樺彲浠�", skip: 0 }, + { name: "涓�鑸埇", skip: 0 }, + { name: "涓嶆竻妤�", skip: 0 }, ], }, ]; - // const newMixArray = this.generateCombinations(arrays); - const newMixArray = this.getExecutionOrders(arraysa); - + const csnewMixArray = this.csgetExecutionOrders(arraysa); + console.log(csnewMixArray, "娴嬭瘯鍏ㄩ儴璺嚎"); + const newMixArray = this.getExecutionOrders( + this.ruleForm.svyTemplateLibScripts + ); console.log(newMixArray, "鍏ㄩ儴璺嚎"); - this.screen(newMixArray); + this.sumArray(newMixArray); }, - getExecutionOrders(data) { - let orders = []; + // 閬嶅巻鏂规硶 + csgetExecutionOrders(arrays) { + const allPaths = []; + const findPath = (currentId, path) => { + const current = arrays.find((item) => item.id.toString() === currentId); + if (!current) return; + path.push(current); - const explore = (currentOrder, id) => { - console.log(currentOrder, "currentOrder", id); - const currentQuestion = data[currentOrder[currentOrder.length - 1]]; - if ( - currentQuestion.arr.some( - (option) => - option.skip !== null && !currentOrder.includes(option.skip) - ) - ) { - currentQuestion.arr.forEach((option) => { - if (option.skip !== null && !currentOrder.includes(option.skip)) { - explore([...currentOrder, option.skip]); - } + if (current.branchFlag === "1") { + current.arr.forEach((option) => { + findPath(option.skip.toString(), path.slice()); }); } else { - orders.push( - currentOrder.map((id) => ({ - id: data[id].id, - grade: data[id].grade, - })) - ); + const nextId = parseInt(current.Topicjump); + if (nextId !== 0) { + findPath(nextId.toString(), path.slice()); + } else { + allPaths.push(path.slice()); + } } }; - console.log(data, "data"); - data.forEach((entry) => { - explore([entry.id], entry.id); - }); - return orders; + findPath("1", []); + return allPaths; + }, + // 閬嶅巻鏂规硶 + getExecutionOrders(arrays) { + const allPaths = []; + const findPath = (currentId, path) => { + const current = arrays.find( + (item) => item.sort.toString() === currentId + ); + if (!current) return; + path.push(current); + + if (current.branchFlag == "1") { + current.svyLibTemplateTargetoptions.forEach((option) => { + findPath(option.nextQuestion.toString(), path.slice()); + }); + } else { + const nextId = parseInt(current.nextScriptno); + if (nextId !== 0) { + findPath(nextId.toString(), path.slice()); + } else { + allPaths.push(path.slice()); + } + } + }; + + findPath("1", []); + return allPaths; }, // 鏁扮粍姹傚拰 sumArray(arr) { - return arr.reduce((acc, curr) => acc + parseInt(curr), 0); - }, - // 绛涢�夐敊璇矾绾� - screen(data) { - const arraysGreaterThan10 = data.filter((arr) => this.sumArray(arr) > 21); + // const arrsum = arr; + // arrsum.forEach((item) => { + // // 鍒ゆ柇闂鍜屾ā鏉垮眰绾� + // console.log(item, "涓�鏉¢摼璺�"); - console.log(arraysGreaterThan10, "绛涢�夐敊璇矾绾垮ぇ浜�13鍒�"); + // const totalScore = item.reduce((accumulator, current) => { + // return accumulator + Number(current.score); + // }, 0); + // console.log(totalScore); + // console.log(this.ruleForm.scriptScore); + + // if (totalScore == this.ruleForm.scriptScore) { + // this.ClaimNofn(arr); + // this.$modal.msgSuccess("鍒嗘暟鏍搁獙鎴愬姛"); + // } + // }); + + const allGreaterThanTen = arr.every((array) => { + const totalScore = array.reduce((accumulator, current) => { + return accumulator + Number(current.score); + }, 0); + console.log(totalScore); + console.log(this.ruleForm.scriptScore); + + return totalScore == this.ruleForm.scriptScore; + }); + if (allGreaterThanTen) { + this.$modal.msgSuccess("鍒嗗�兼牎楠屾垚鍔�"); + } else { + this.$modal.msgError("闂鍒嗗�肩疮鍔犲拰妯℃澘鍒嗗�间笉绗�"); + } + }, + + // 閬嶅巻鏄惁閲嶅鏄惁閮界敤涓� + ClaimNofn(arr) { + arr.forEach((item) => { + const Aarr = item; + const Barr = this.ruleForm.svyTemplateLibScripts; + const notInB = A.filter( + (itemA) => !B.some((itemB) => itemB.id === itemA.id) + ); + + if (notInB.length) { + this.$modal.msgError("闂鏈叏閮ㄤ娇鐢�"); + } else { + this.$modal.msgSuccess("闂鍏ㄩ儴浣跨敤"); + } + }); + arr.forEach((item) => { + const idCount = arr.reduce((acc, item) => { + acc[item.id] = (acc[item.id] || 0) + 1; + return acc; + }, {}); + const whether = item.values(idCount).some((count) => count > 1); // 濡傛灉鏈変换浣� id 鐨勮鏁板ぇ浜� 1 灏辫繑鍥� true + if (!whether) this.$modal.msgError("閰嶇疆椤规湁闂閲嶅"); + }); + }, + // 闂鍜岄�夐」闂寸殑鍒嗗�煎垽鏂� + Scorejudgment() { + let scorearr = this.topicobj.svyLibScriptOptions; + let isValid = scorearr.every((score, index) => { + if (this.topicobj.scriptType == 1) { + if (score.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 { + this.$message({ + message: "閫夐」鍒嗗�兼湭璁剧疆", + type: "warning", + }); + return false; + } + } else if (this.topicobj.scriptType == 2) { + // 绱姞鍒嗗�� + const totalScore = scorearr.reduce((acc, score) => { + if (score.score) { + return acc + Number(score.score); + } + return acc; // 濡傛灉 score.score 涓嶅瓨鍦紝涓嶇疮鍔� + }, 0); + + // 妫�鏌ョ疮鍔犵殑鍒嗗�兼槸鍚︾瓑浜� this.topicobj.score + if (totalScore !== Number(this.topicobj.score)) { + this.$message({ + message: + "澶氶�夐閫夐」鍒嗗�兼�诲拰蹇呴』绛変簬 " + this.topicobj.score + " 鍒�", + type: "warning", + }); + return false; + } + return true; // 濡傛灉鎬诲垎姝g‘锛岃繑鍥� true + } else if (this.topicobj.scriptType == 4) { + return true; + } + }); + + if (isValid) { + this.compileissue(); + } + }, + + // --------------------------------------------------------- + // 鏂伴棶棰樻柊澧� + 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("鍥剧墖鎻掑叆澶辫触"); + } + }, + branchFlagfn(row) { + console.log(row); + if (this.topicobj.branchFlag == 1 && this.topicobj.nextScriptno != 0) { + this.topicobj.nextScriptno = + this.topicobj.svyLibTemplateTargetoptions[0].nextQuestion; + } }, }, }; @@ -1329,8 +2241,7 @@ // display: flex; } .sidecolumn { - margin: 20px; - margin-bottom: 0; + margin: 10px 20px 0 20px; padding: 20px; background: #edf1f7; border: 1px solid #dcdfe6; @@ -1344,6 +2255,8 @@ // margin-top: 20px; margin: 20px; padding: 30px; + padding-top: 5px; + margin-top: 10px; background: #ffff; border: 1px solid #dcdfe6; -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), @@ -1352,6 +2265,8 @@ font-size: 20px; } .leftvlue-jbxx { + display: flex; /* 浣跨敤 Flexbox 甯冨眬 */ + justify-content: space-between; font-size: 24px; border-left: 5px solid #41a1be; padding-left: 5px; @@ -1383,6 +2298,14 @@ } } } +.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; white-space: nowrap; @@ -1407,6 +2330,14 @@ vertical-align: bottom; } } +.xinz-infs { + font-size: 18px; + line-height: 48px; + + .el-tag + .el-tag { + margin-left: 10px; + } +} .addtopic { margin-top: 30px; } @@ -1414,7 +2345,17 @@ margin: 20px 0; display: flex; .presentation-left { - width: 50%; + width: 45%; + // height: 500px; + .button-textxg { + color: #024df0; + } + .button-textsc { + color: #f52727; + } + } + .spresentation-left { + width: 100%; // height: 500px; .button-textxg { color: #024df0; @@ -1424,7 +2365,7 @@ } } .presentation-right { - width: 50%; + width: 55%; max-height: 688px; padding: 0 20px; font-size: 18px; @@ -1444,6 +2385,27 @@ } } } +.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: 280px; +} + +.el-cascader { + width: 40%; +} ::v-deep .addtopic-input { input { background: #02a7f0; -- Gitblit v1.9.3