You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							340 lines
						
					
					
						
							12 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							340 lines
						
					
					
						
							12 KiB
						
					
					
				
								<template>
							 | 
						|
								  <div>
							 | 
						|
								    <div>
							 | 
						|
								      <el-table :data="bigTexts" style="width: 100%;" highlight-current-row @row-click="rowClick" height="260">
							 | 
						|
								        <el-table-column type="index" label="序号" width="40" align="center" />
							 | 
						|
								        <el-table-column prop="bigtextResultTypeName" label="词条类别" min-width="80" align="center" />
							 | 
						|
								        <el-table-column prop="bigtextResultTemplateName" label="词条模版" min-width="150" align="center" />
							 | 
						|
								        <el-table-column prop="bigtextResultConclusion" label="检查结论" min-width="150" align="center" />
							 | 
						|
								        <el-table-column prop="bigtextResultDescription" label="检查描述" min-width="400" />
							 | 
						|
								      </el-table>
							 | 
						|
								    </div>
							 | 
						|
								    <div style="display: flex;margin-top: 5px;">
							 | 
						|
								      <div style="width: 49%;">
							 | 
						|
								        <!-- 多个检查明细 -->
							 | 
						|
								        <div style="display: flex; justify-content: space-between;height: 20px;">
							 | 
						|
								          <div><span>检查结果:</span></div>
							 | 
						|
								          <div>
							 | 
						|
								            <el-tooltip :content="`给 ${doctorCheck.checkItemList[refParams.index].itemName} 项目,赋默认结果`" placement="top">
							 | 
						|
								              <i class="el-icon-edit" @click="btnDefResult(refParams.index)"
							 | 
						|
								                style="font-size: 18px;color: blue;cursor: pointer;margin-right: 10px;"></i>
							 | 
						|
								            </el-tooltip>
							 | 
						|
								            <el-tooltip :content="`清除 ${doctorCheck.checkItemList[refParams.index].itemName} 项目的检查结果`" placement="top">
							 | 
						|
								              <i class="el-icon-delete" @click="btnClear(refParams.index)"
							 | 
						|
								                style="font-size: 18px; color: red;cursor: pointer;margin-right: 10px;"></i>
							 | 
						|
								            </el-tooltip>
							 | 
						|
								          </div>
							 | 
						|
								        </div>
							 | 
						|
								        <div>
							 | 
						|
								          <el-input style="width: 100%" type="textarea" v-model="doctorCheck.checkItemList[refParams.index].result"
							 | 
						|
								            placeholder="请输入检查结果" :autosize="{ minRows: 9, maxRows: 9 }" />
							 | 
						|
								        </div>
							 | 
						|
								      </div>
							 | 
						|
								      <div style="margin-left: 8px; width: 50%;">
							 | 
						|
								        <div style="display: flex; justify-content: space-between;height: 20px;">
							 | 
						|
								          <div><span>检查结论:</span></div>
							 | 
						|
								          <div>
							 | 
						|
								          </div>
							 | 
						|
								        </div>
							 | 
						|
								
							 | 
						|
								        <div>
							 | 
						|
								          <el-table row-key="id" :data="doctorCheck.checkSummaryList" size="samll" height="186"
							 | 
						|
								            width="100%" border>
							 | 
						|
								            <el-table-column width="30" align="center">
							 | 
						|
								              <template slot-scope="scope">
							 | 
						|
								                <el-tag class="moveSummary" style="height:25px;padding:0 2px;cursor: move;background-color: #EEEEEE;">
							 | 
						|
								                  <div style="width: 16px;">{{ scope.$index + 1 }}</div>
							 | 
						|
								                </el-tag>
							 | 
						|
								              </template>
							 | 
						|
								            </el-table-column>
							 | 
						|
								            <el-table-column prop="summary" label="小结">
							 | 
						|
								              <template slot="header">
							 | 
						|
								                <div style="display: flex;justify-content:space-between;">
							 | 
						|
								                  <div>小结</div>
							 | 
						|
								                  <div></div>
							 | 
						|
								                </div>
							 | 
						|
								              </template>
							 | 
						|
								              <template slot-scope="scope">
							 | 
						|
								                <div style="display: flex;">
							 | 
						|
								                  <el-input type="textarea" v-model="scope.row.summary" :autosize="{ minRows: 1, maxRows: 100 }"
							 | 
						|
								                    placeholder="请输入小结">
							 | 
						|
								                  </el-input>
							 | 
						|
								                  <el-button type="danger" style="min-width:23px;padding:2px;" icon="el-icon-delete"
							 | 
						|
								                    @click="delSum(scope.$index)" size="small"></el-button>
							 | 
						|
								                </div>
							 | 
						|
								              </template>
							 | 
						|
								            </el-table-column>
							 | 
						|
								          </el-table>
							 | 
						|
								        </div>
							 | 
						|
								      </div>
							 | 
						|
								    </div>
							 | 
						|
								    <!--可选结果-->
							 | 
						|
								    <div style="display: flex; justify-content: space-between; margin-top: 5px">
							 | 
						|
								      <div style="width: 730px;">
							 | 
						|
								        <el-table row-key="id" :data="resultOptRows" size="samll" width="100%" border>
							 | 
						|
								          <el-table-column v-for="col in resultOpts" :key="col.resultTemplate" width="120" align="left">
							 | 
						|
								            <template slot="header">{{ col.resultTemplate }}</template>
							 | 
						|
								            <template slot-scope="scope">
							 | 
						|
								              <el-radio-group v-model="scope.row[col.resultTemplate]" @input="radioGroupInput">
							 | 
						|
								                <div v-for="opt in col.opts" :key="opt" style="margin-left: 10px;">
							 | 
						|
								                  <el-radio :label="opt" style="margin: 5px 0;">{{ opt }}</el-radio>
							 | 
						|
								                </div>
							 | 
						|
								              </el-radio-group>
							 | 
						|
								            </template>
							 | 
						|
								          </el-table-column>
							 | 
						|
								        </el-table>
							 | 
						|
								      </div>
							 | 
						|
								      <div style=" margin-top: 5px">
							 | 
						|
								        <!--
							 | 
						|
								          <el-button type="primary" @click="btnTest" class="commonbutton">测试</el-button>
							 | 
						|
								            -->
							 | 
						|
								        <el-button type="primary" @click="btnOk" class="commonbutton">确定</el-button>
							 | 
						|
								      </div>
							 | 
						|
								    </div>
							 | 
						|
								  </div>
							 | 
						|
								</template>
							 | 
						|
								<script>
							 | 
						|
								import moment from "moment";
							 | 
						|
								import { mapState } from "vuex";
							 | 
						|
								import { getapi, postapi, putapi, deletapi } from "@/api/api";
							 | 
						|
								import { arrayExistObj } from "@/utlis/proFunc";
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								export default {
							 | 
						|
								  components: {},
							 | 
						|
								  props: ["refParams", "refFuncOther"],
							 | 
						|
								  data() {
							 | 
						|
								    return {
							 | 
						|
								      bigTexts: [{
							 | 
						|
								        bigtextResultTypeName: "",
							 | 
						|
								        bigtextResultTemplateName: "",
							 | 
						|
								        bigtextResultConclusion: "",
							 | 
						|
								        bigtextResultDescription: ""
							 | 
						|
								      }], // 大文本词条
							 | 
						|
								      result: "", //隐藏在后台处理数据用
							 | 
						|
								
							 | 
						|
								      resultOpts: [
							 | 
						|
								        { resultTemplate: "[A|B|C|D]", opts: ['A', 'B', 'C', 'D'], chooseOpt: 'A' }
							 | 
						|
								      ],  // [|] 结果带选项
							 | 
						|
								      resultOptRows: [
							 | 
						|
								
							 | 
						|
								      ],
							 | 
						|
								    };
							 | 
						|
								  },
							 | 
						|
								  //<el-tree :data="$store.state.customerOrg.ref_tree" :props="$store.state.customerOrg.treeprops" @node-click="treeclick"></el-tree>
							 | 
						|
								  computed: {
							 | 
						|
								    ...mapState(["window", "dialogWin", "doctorCheck"]),
							 | 
						|
								  },
							 | 
						|
								  //创建组件后
							 | 
						|
								  created() { },
							 | 
						|
								
							 | 
						|
								  //挂载组件完成
							 | 
						|
								  mounted() {
							 | 
						|
								    //获取体检单位列表树信息
							 | 
						|
								    this.init();
							 | 
						|
								  },
							 | 
						|
								
							 | 
						|
								  methods: {
							 | 
						|
								    // 初始化数据
							 | 
						|
								    init() {
							 | 
						|
								      this.result = this.doctorCheck.checkItemList[this.refParams.index].result
							 | 
						|
								      this.resultOpts = []
							 | 
						|
								      this.madeResultOpts()
							 | 
						|
								
							 | 
						|
								      let itemId = this.doctorCheck.checkItemList[this.refParams.index].itemId
							 | 
						|
								
							 | 
						|
								      //"itemId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
							 | 
						|
								
							 | 
						|
								      postapi('/api/app/BigtextResultTemplate/GetBigtextResultTemplateWithDetail', { itemId })
							 | 
						|
								        .then(res => {
							 | 
						|
								          if (res.code > -1) {
							 | 
						|
								            this.bigTexts = res.data
							 | 
						|
								          }
							 | 
						|
								        })
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    // 分析可选模版 [A|B|C|D]
							 | 
						|
								    madeResultOpts() {
							 | 
						|
								      this.resultOptRows = []
							 | 
						|
								      if (!this.result) return
							 | 
						|
								      let opts1 = this.result.split(']')
							 | 
						|
								      opts1.forEach(e => {
							 | 
						|
								        let opts2 = e.split('[')
							 | 
						|
								        if (opts2.length == 2) {
							 | 
						|
								          if (opts2[1].includes('|')) {
							 | 
						|
								            let resultTemplate = `[${opts2[1]}]`
							 | 
						|
								            let lfind = arrayExistObj(this.resultOpts, 'resultTemplate', resultTemplate)
							 | 
						|
								            if (lfind == -1) {
							 | 
						|
								              let opts = opts2[1].split('|')
							 | 
						|
								              let chooseOpt = ''
							 | 
						|
								              this.resultOpts.push({ resultTemplate, opts, chooseOpt })
							 | 
						|
								            }
							 | 
						|
								          }
							 | 
						|
								        }
							 | 
						|
								      });
							 | 
						|
								      let resultOptRow = { id: 1 }
							 | 
						|
								      if (this.resultOpts.length > 0) {
							 | 
						|
								        this.resultOpts.forEach(e => {
							 | 
						|
								          resultOptRow[e.resultTemplate] = e.chooseOpt
							 | 
						|
								        });
							 | 
						|
								      }
							 | 
						|
								      this.resultOptRows.push(resultOptRow)
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    // 
							 | 
						|
								    radioGroupInput(v){
							 | 
						|
								      // console.log('radioGroupInput',this.resultOptRows,this.refParams.index)
							 | 
						|
								      let result = this.result
							 | 
						|
								      this.resultOpts.forEach(e => {
							 | 
						|
								        if(this.resultOptRows[0][e.resultTemplate]) result = result.replace(e.resultTemplate,this.resultOptRows[0][e.resultTemplate])        
							 | 
						|
								      });
							 | 
						|
								      this.doctorCheck.checkItemList[this.refParams.index].result = result
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    // 选择结果模版 (true 则添加,false则取消)  老板说,只有选,没有取消选择
							 | 
						|
								    rowClick(row) {
							 | 
						|
								      // bigtextResultTypeName: "",
							 | 
						|
								      // bigtextResultTemplateName: "",
							 | 
						|
								      // bigtextResultConclusion: "",
							 | 
						|
								      // bigtextResultDescription: ""
							 | 
						|
								      let chooseOpra = true
							 | 
						|
								      let conclusions = []
							 | 
						|
								      let result = this.doctorCheck.checkItemList[this.refParams.index].result
							 | 
						|
								      if (result) {
							 | 
						|
								        if (result == this.doctorCheck.checkItemList[this.refParams.index].defaultResult) {
							 | 
						|
								          chooseOpra = true
							 | 
						|
								          result = row.bigtextResultDescription
							 | 
						|
								        } else {
							 | 
						|
								          // 
							 | 
						|
								          if (result.includes(row.bigtextResultDescription)) {
							 | 
						|
								            return  // 老板说,只有选,没有取消选择
							 | 
						|
								            // chooseOpra = false
							 | 
						|
								            // result = result.replaceAll(`;${row.bigtextResultDescription}`, '').replaceAll(`${row.bigtextResultDescription};`, '').replaceAll(`${row.bigtextResultDescription}`, '')
							 | 
						|
								            // if (!result) result = this.doctorCheck.checkItemList[this.refParams.index].defaultResult
							 | 
						|
								          } else {
							 | 
						|
								            chooseOpra = true
							 | 
						|
								            result += ";" + row.bigtextResultDescription
							 | 
						|
								          }
							 | 
						|
								        }
							 | 
						|
								      } else {
							 | 
						|
								        chooseOpra = true
							 | 
						|
								        result = row.bigtextResultDescription
							 | 
						|
								      }
							 | 
						|
								      this.doctorCheck.checkItemList[this.refParams.index].result = result
							 | 
						|
								      this.result = result
							 | 
						|
								      this.madeResultOpts()
							 | 
						|
								
							 | 
						|
								      if (row.bigtextResultConclusion) conclusions = row.bigtextResultConclusion.split(";")
							 | 
						|
								      if (conclusions.length > 0) {
							 | 
						|
								        let lfind = -1
							 | 
						|
								        conclusions.forEach(e => {
							 | 
						|
								          if (chooseOpra) {
							 | 
						|
								            lfind = -1
							 | 
						|
								            this.doctorCheck.checkSummaryList.forEach(c => {
							 | 
						|
								              if (c.summary == e) lfind = 1
							 | 
						|
								            });
							 | 
						|
								            // 没找到,则添加结论
							 | 
						|
								            if (lfind == -1) {
							 | 
						|
								              this.doctorCheck.checkSummaryList.push({
							 | 
						|
								                id: Math.random(),
							 | 
						|
								                registerCheckId: this.doctorCheck.RegisterCheckEdit.id,
							 | 
						|
								                summary: e,
							 | 
						|
								                summaryFlag: 'N',
							 | 
						|
								              })
							 | 
						|
								            }
							 | 
						|
								          } else {
							 | 
						|
								            if (this.doctorCheck.checkSummaryList.length > 0) {
							 | 
						|
								              for (let i = this.doctorCheck.checkSummaryList.length - 1; i > -1; i--) {
							 | 
						|
								                if (e == this.doctorCheck.checkSummaryList[i].summary) this.doctorCheck.checkSummaryList.splice(i, 1)
							 | 
						|
								              }
							 | 
						|
								            }
							 | 
						|
								          }
							 | 
						|
								        });
							 | 
						|
								      }
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    //删除小结
							 | 
						|
								    delSum(index) {
							 | 
						|
								      this.$confirm("此操作将删除该记录, 是否继续?", "提示", {
							 | 
						|
								        confirmButtonText: "是",
							 | 
						|
								        cancelButtonText: "否",
							 | 
						|
								        type: "warning",
							 | 
						|
								      }).then(() => {
							 | 
						|
								        this.doctorCheck.checkSummaryList.splice(index, 1);
							 | 
						|
								      }).catch(err => {
							 | 
						|
								        if (err == "cancel") {
							 | 
						|
								          // this.$message.info("已取消删除");
							 | 
						|
								          console.log('已取消删除')
							 | 
						|
								        }
							 | 
						|
								      });
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    //勾选节点
							 | 
						|
								    handleCheckChange(data, checked, indeterminate) {
							 | 
						|
								      // console.log('data, checked, indeterminate,this.menuInfoSet',data, checked, indeterminate,this.menuInfoSet);
							 | 
						|
								
							 | 
						|
								      this.description = [];
							 | 
						|
								      this.conclusion = [];
							 | 
						|
								      postapi("/api/app/BigtextResultTemplate/GetBigtextResultTemplateDetail", {
							 | 
						|
								        bigtextResultTemplateIds: [data.id],
							 | 
						|
								      }).then((res) => {
							 | 
						|
								        if (res.code > -1) {
							 | 
						|
								          this.description = res.data.descriptionDetail;
							 | 
						|
								          this.conclusion = res.data.conclusionDetail;
							 | 
						|
								          let opraType = false;
							 | 
						|
								          if (checked) {
							 | 
						|
								            // 勾选
							 | 
						|
								            opraType = true;
							 | 
						|
								          } else if (!indeterminate) {
							 | 
						|
								            // 取消勾选
							 | 
						|
								            opraType = false;
							 | 
						|
								          }
							 | 
						|
								          this.chooseDescription(opraType);
							 | 
						|
								          this.chooseConclusion(opraType);
							 | 
						|
								        }
							 | 
						|
								      });
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    // 清除结果
							 | 
						|
								    btnClear(seq) {
							 | 
						|
								      this.doctorCheck.checkItemList[seq].result = "";
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								    // 默认结果
							 | 
						|
								    btnDefResult(seq) {
							 | 
						|
								      this.doctorCheck.checkItemList[seq].result =
							 | 
						|
								        this.doctorCheck.checkItemList[seq].defaultResult;
							 | 
						|
								    },
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    // 确定
							 | 
						|
								    btnOk() {
							 | 
						|
								      this.refFuncOther(this.refParams.row, this.refParams.index, {
							 | 
						|
								        result: this.result,
							 | 
						|
								        summary: this.summary,
							 | 
						|
								      });
							 | 
						|
								      this.dialogWin.PacsTemplate = false;
							 | 
						|
								    },
							 | 
						|
								  },
							 | 
						|
								
							 | 
						|
								  watch: {
							 | 
						|
								    "refParams.refresh"(newVal, oldVal) {
							 | 
						|
								      if (newVal && newVal != oldVal) this.init();
							 | 
						|
								    }
							 | 
						|
								  },
							 | 
						|
								};
							 | 
						|
								</script>
							 | 
						|
								<style lang="scss" scoped>
							 | 
						|
								@import "../../assets/css/global_dialog.css";
							 | 
						|
								@import "../../assets/css/global_table.css";
							 | 
						|
								@import "../../assets/css/global_input.css";
							 | 
						|
								@import "../../assets/css/global.css";
							 | 
						|
								@import "../../assets/css/global_tree.css";
							 | 
						|
								
							 | 
						|
								:deep .el-tree-node>.el-tree-node__children {
							 | 
						|
								  overflow: visible;
							 | 
						|
								}
							 | 
						|
								</style>
							 |