element 实现上下滚动 点击滚动

 

<template>

  <div class="rectification">

    <div class="border-b" style="width:100%">

      <!--导航选择事件-->

      <!-- <el-menu :default-active="activeStep" @select="jump" style="border-right:0px;display: flex;">

        <el-menu-item class="labelccyc" v-for="(tab,index) in tabs" :index="`${index}`" :key="tab.index">

          <i class="el-icon-menu"></i>

          <span slot="title" :title="tab.labelTitle">{{tab.labelTitle}}</span>

        </el-menu-item>

      </el-menu> -->

      <div style="height:42px;line-height:42px;">

        <el-row style="width:100%;">

          <el-col :span="20">

            <div style="display: flex;align-items: center;padding:0px 10px;">

               <el-button type="primary" 

                style="background: #409eff;border: 1px solid #409eff;width: 25px;height: 24px;display: flex;justify-content: center;align-items: center;"

                size="mini" 

                icon="el-icon-arrow-left"

                circle 

                @click="goBack"></el-button>

               <div style="margin-left:10px;font-size: 15px;font-weight: 600;color: #333333;">{{this.$route.query.diseaseTypeName}}</div>

            </div>

          </el-col>

          <!-- <el-col :span="4">

            <div style="width:100%;text-align: right;padding:0px 14px">

              <el-button type="primary" @click="getfillin()"><i class="el-icon-warning" style="margin-right:5px;"></i>填报要求</el-button>

            </div>

          </el-col> -->

        </el-row>

      </div>

    </div>

    <div style="display: flex;">

      <div class="border-r" style="width:20%;height:auto">

        <el-tabs class="customer-tab" type="card" v-model="tabName">

          <div style="width:100%;height:auto;">

            <div>

              <div class="p-l-10 "

                style="float: left;lineHeight:40px;font-size: 14px;

                      font-family: Microsoft YaHei;

                      font-weight: 600;

                      color: #333333;

                      width:100%;

                      display: flex;

                      align-items: center;"

                v-for="(tab, index) in tabs"

                :key="index"

                @click="jump(tab, index)"

              >

                  <i class="el-icon-menu" :style="tabName == tab.labelTitle?'color:#4d84ff':''"></i>

                  <el-tooltip class="item" effect="dark" :content="tab.labelTitle" placement="top-start">

                    <span

                      :class="tabName == tab.labelTitle?'tabspanxz labelccyc':'tabspan labelccyc' "

                    >{{tab.labelTitle}}</span>

                  </el-tooltip>

              </div>

            </div>

          </div>

        </el-tabs>

      </div>

      <!--绑定scroll事件需要监听-->

      <div class="registers">

        <span

          slot="footer"

          class="footer_btn_box border-b"

          style="display: flex;justify-content: flex-end;align-items: center;height: 50px;padding: 0px 10px;"

        >

        <!-- color:#FAAD14 -->

           <el-button type="primary" @click="getfillin()"><i class="el-icon-warning" style="margin-right:5px;"></i>填报要求</el-button>

          <el-button type="primary" @click="resetForm()">保存内容</el-button>

          <el-button type="primary" @click="submitForm()">提交审核</el-button>

        </span>

        <!-- <div class="scroll_cls"> -->

        <div class="scroll-content"  @scroll="onScroll">

          <div v-for="(tab, index) in tabs" :key="index">

            <el-collapse v-model="activeNames" @change="handleChange">

              <el-collapse-item :name="tab.labelTitle">

                <template #title>

                  <div class="scroll-item" style="width:100%" :id="tab.id">

                    <el-row style="width:100%">

                      <el-col :span="21">

                        <!-- <i class="el-icon-user-solid" style="color:#497EFF;font-size:16px"></i> -->

                        <span class="circle "></span>

                        <span :style="tab.isbt?'color:red':'color: #3362CD;'">{{tab.labelTitle}}</span>

                      </el-col>

                      <el-col :span="3" style="text-align: right;padding: 0px 5px;">

                        <span><el-button type="primary" @click="getcomplete(tab)">完成</el-button></span>

                      </el-col>

                    </el-row>

                  </div>

                </template>

                <div  v-for="(eldata, eldataindex) in tab.children" :key="eldataindex">

                  <!-- eldata.labelType=='title' 二级标题 -->

                    <div v-if="eldata.labelType=='title' && eldata.labelShow" class="tablistrowejtitle border-b">{{eldata.labelTitle}}</div>

                  <!-- eldata.labelType=='title' 二级下的内容 -->

                    <div v-if="eldata.labelType=='title'">

                      <div

                        v-if="item.labelShow"

                        class="tablistrow border-b"

                        v-for="(item, itindex) in eldata.children"

                        :key="itindex"

                      >

                        <div class="tablistrowlable">

                          <span class="btbj" v-if="item.isbt">*</span>

                          <span class="btbj" v-else style="color:#ffffff">*</span>

                          {{item.labelTitle}}

                        </div>

                        <div

                          class="cont border-l"

                          style="flex:1;display: flex;padding:0px 2px;min-height: 42px;align-items: center;"

                        >

                          <div v-if="item.labelType=='checkbox'" style="width:60%">

                            <el-checkbox-group v-model="item.labelValue"  @change="getcheckbox(item,tab)">

                              <el-checkbox

                                :title="radioitem.dictLabel"

                                :label="radioitem.dictValue" 

                                v-for="(radioitem, radioitemindex) in item.arrlist" 

                                :key="radioitemindex"

                              >{{radioitem.dictLabel}}</el-checkbox>

                            </el-checkbox-group>

                          </div>

                          <div v-if="item.labelType=='radio'">

                            <el-radio-group v-model="item.labelValue" @change="getcheckbox(item,tab)">

                              <el-radio :label="radioitem.dictValue" v-for="(radioitem, radioitemindex) in item.arrlist" :key="radioitemindex">{{radioitem.dictLabel}}</el-radio>

                            </el-radio-group>

                          </div>

                          <div v-if="item.labelType=='data'" style="width:60%">

                            <el-date-picker

                            @change="getdatatime(item,eldata)"

                              style="width:100%"

                              v-model="item.labelValue"

                              value-format="yyyy-MM-dd"

                              :editable="false"

                              type="date"

                            ></el-date-picker>

                          </div>

                          <div v-if="item.labelType=='select'" style="width:60%">

                            <el-select v-model="item.labelValue"  filterable clearable placeholder="请选择" style="width:100%" @click.native="getTypeList(item)" @change="getcheckbox(item,tab)">

                              <!-- <el-option label="请选择" value=""></el-option> -->

                              <el-option :label="radioitem.dictLabel" v-for="(radioitem, radioitemindex) in item.arrlist" :key="radioitemindex" :value="radioitem.dictValue" ></el-option>

                            </el-select>

                          </div>

                          <div v-if="item.labelType=='input'" style="width:60%">

                            <el-input

                              clearable

                              style="width:100%"

                              v-model="item.labelValue"

                              maxlength="30"

                            ></el-input>

                          </div>

                          <div v-if="item.labelType=='number'" style="width:60%">

                            <el-input

                                clearable

                                style="width:100%"

                                οninput="value=value.replace(/[^\d.]/g, '')"

                                v-model="item.labelValue"

                              ></el-input>

                          </div>

                          <div class="tablistrowbttsy" v-if="item.bttsy">{{item.bttsy}}</div>

                        </div>

                      </div>

                    </div>

                    <!--没有二级 一级下的内容 -->

                    <div v-else>

                      <div v-if="eldata.labelShow"  class="tablistrow border-b">

                        <div class="tablistrowlable">

                          <span class="btbj" v-if="eldata.isbt">*</span>

                          <span class="btbj" v-else style="color:#ffffff">*</span>

                          {{eldata.labelTitle}}

                        </div>

                        <div

                          class="cont border-l"

                          style="flex:1;display: flex;padding:0px 2px;min-height: 42px;align-items: center;"

                        >

                          <div v-if="eldata.labelType=='checkbox'" style="width:60%">

                            <el-checkbox-group v-model="eldata.labelValue" @change="getcheckbox(eldata,tab)">

                              <el-checkbox

                                :title="radioitem.dictLabel"

                                :label="radioitem.dictValue" 

                                v-for="(radioitem, radioitemindex) in eldata.arrlist" 

                                :key="radioitemindex"

                              >{{radioitem.dictLabel}}</el-checkbox>

                              <!-- <el-checkbox label="2">考查患者体力活动和日</el-checkbox> -->

                            </el-checkbox-group>

                          </div>

                          <div v-if="eldata.labelType=='radio'">

                            <el-radio-group v-model="eldata.labelValue"  @change="getcheckbox(eldata,tab)">

                              <el-radio :label="radioitem.dictValue" v-for="(radioitem, radioitemindex) in eldata.arrlist" :key="radioitemindex">{{radioitem.dictLabel}}</el-radio>

                              <!-- <el-radio label="6">备选项</el-radio> -->

                            </el-radio-group>

                          </div>

                          <div v-if="eldata.labelType=='data'" style="width:60%">

                            <el-date-picker

                              @change="getdatatime(eldata,tab)"

                              style="width:100%"

                              v-model="eldata.labelValue"

                              value-format="yyyy-MM-dd"

                              :editable="false"

                              type="date"

                            ></el-date-picker>

                          </div>

                          <div v-if="eldata.labelType=='select'" style="width:60%">

                            <el-select v-model="eldata.labelValue" filterable clearable placeholder="请选择" style="width:100%"  @click.native="getTypeList(eldata,tab)"  @change="getcheckbox(eldata,tab)">

                              <!-- <el-option label="请选择" value=""></el-option> -->

                              <el-option :label="radioitem.dictLabel" v-for="(radioitem, radioitemindex) in eldata.arrlist" :key="radioitemindex" :value="radioitem.dictValue" ></el-option>

                            </el-select>

                          </div>

                          <div v-if="eldata.labelType=='input'" style="width:60%">

                            <el-input

                              clearable

                              style="width:100%"

                              v-model="eldata.labelValue"

                              maxlength="30"

                            ></el-input>

                          </div>

                          <div v-if="eldata.labelType=='number'" style="width:60%">

                            <el-input

                                clearable

                                style="width:100%"

                                οninput="value=value.replace(/[^\d.]/g, '')"

                                v-model="eldata.labelValue"

                              ></el-input>

                          </div>

                          <div class="tablistrowbttsy" v-if="eldata.bttsy">{{eldata.bttsy}}</div>

                        </div>

                      </div>

                    </div>

                </div>

              </el-collapse-item>

            </el-collapse>

          </div>

        </div>

        <!-- <span

          slot="footer"

          class="footer_btn_box"

          style="display: flex;justify-content: center;align-items: center;height: 50px;"

        >

          <el-button type="primary" @click="submitForm()">提交</el-button>

          <el-button @click="resetForm()">取消</el-button>

        </span> -->

      </div>

    </div>

    <!-- 填报要求 -->

    <el-dialog title="填报要求" :visible.sync="fillinopen" width="500px" append-to-body>

      <div style="margin-bottom: 20px;">

          <p style="margin: 0 0 10px 0;"><span style="color: #333333;">上报内容:</span></p>

          <div class="layoutArea">

            <div class="column">

              <p style="font-size: 16px;text-indent: 29px;margin-bottom: 2px;"><span>主要诊断 ICD-10 编码:J45,J46;年龄≥18 岁的出院患者。&nbsp;</span></p>

              <p>&nbsp;</p>

            </div>

          </div>

          <p style="margin: 10px 0 10px 0;"><span style="color: #333333;">无需上报内容:</span></p>

          <div class="layoutArea">

            <div class="column">

              <p style="font-size: 16px;text-indent: 29px;margin-bottom: 2px;"><span>主要诊断 ICD-10 编码:J45,J46;年龄≥18 岁的出院患者。&nbsp;</span></p>

              <p style="font-size: 16px;text-indent: 29px;margin-bottom: 2px;"><span>主要诊断 ICD-10 编码:J45,J46;年龄≥18 岁的出院患者。&nbsp;</span></p>

            </div>

          </div>

          <p style="margin: 10px 0 10px 0;"><span style="color: #333333;">无需上报内容:</span></p>

          <div class="layoutArea">

            <div class="column">

              <p style="font-size: 16px;text-indent: 29px;margin-bottom: 2px;"><span>主要诊断 ICD-10 编码:J45,J46;年龄≥18 岁的出院患者。&nbsp;</span></p>

              <p style="font-size: 16px;text-indent: 29px;margin-bottom: 2px;"><span>主要诊断 ICD-10 编码:J45,J46;年龄≥18 岁的出院患者。&nbsp;</span></p>

            </div>

          </div>

      </div>

    </el-dialog>

  </div>

</template>

<script>

import { truncate } from "fs";

import { reportgetReportData,getSubContents,reportsaveInfo } from "@/api/singlediseasemanage/singlediseasefillin";

import { listData,} from "@/api/system/dict/data";

// import { questionNumListByRole } from "@/api/handleView/workPreview";

export default {

  name: "rectification",

  components: {},

  data() {

    return {

      fillinopen: false, //填报弹窗显示隐藏

      anTagFlag: false, //防重复提交

      // activeStep: "0",

      ruleForm: {},

      activeNames: [],

      isrowgl: false, //高亮

      tabIndex: "0",

      contentStyleObj: {

        height: "500px"

      },

      tabName: "基本信息",

      tabPosition: "bottom", //底部页签

      paramsdata: [],

      tabs: [

        // {

        //   id: "jb1",

        //   labelTitle:"基本信息",

        //   isczbt: "", //是否存在必填

        //   children:[

        //     {

        //       id:'jb1_01',

        //       labelTitle: "适用的ICD-10编码与疾病名称",

        //       labelValue: "3333",

        //       isbt: true, //是否存必填

        //       bttsy: "", //必填提示语是否显示

        //       labelShow: true,//是否显示

        //       labelType: "title",

        //       children: [

        //         {

        //           labelTitle: "名称",

        //           labelKey: "name1",

        //           labelValue: "3333",

        //           isbt: true, //是否存必填

        //           bttsy: "", //必填提示语是否显示

        //           labelType: "input",

        //           labelShow: true //是否显示

        //         },

        //         {

        //           labelTitle: "区域",

        //           labelKey: "region1",

        //           labelValue: [],

        //           isbt: true,

        //           bttsy: "",

        //           labelType: "checkbox",

        //           labelShow: true

        //         },

        //         {

        //           labelTitle: "时间",

        //           labelKey: "date11",

        //           labelValue: "2023-01-20",

        //           labelType: "data",

        //           isbt: false,

        //           bttsy: "",

        //           labelShow: true

        //         },

        //         {

        //           labelTitle: "是否",

        //           labelKey: "delivery1",

        //           labelValue: "",

        //           labelType: "radio",

        //           isbt: true,

        //           bttsy: "",

        //           labelShow: true

        //         },

        //         {

        //           labelTitle: "类型",

        //           labelKey: "type1",

        //           labelValue: "",

        //           isbt: true,

        //           bttsy: "",

        //           labelShow: false,

        //           labelShowxs:'delivery1=1'

        //         },

        //         {

        //           labelTitle: "资源1",

        //           labelKey: "resource",

        //           labelValue: "",

        //           isbt: true,

        //           bttsy: "",

        //           labelShow: false,

        //           labelShowxs:'delivery1=1&&type1=2'

        //         },

        //         {

        //           labelTitle: "备注1",

        //           labelKey: "desc",

        //           labelValue: "",

        //           isbt: true,

        //           bttsy: "",

        //           labelShow: false

        //         }

        //       ]

        //     },

        //     {

        //       id:'jb1_012',

        //       labelTitle: "适用的ICD-10编码与疾病名称22",

        //       labelValue: "3333",

        //       isbt: true, //是否存必填

        //       bttsy: "", //必填提示语是否显示

        //       labelShow: true,//是否显示

        //       labelType: "title",

        //       children: [

        //         {

        //           labelTitle: "名称",

        //           labelKey: "name2",

        //           labelValue: "3333",

        //           isbt: true, //是否存必填

        //           bttsy: "", //必填提示语是否显示

        //           labelType: "input",

        //           labelShow: true //是否显示

        //         },

        //         {

        //           labelTitle: "区域",

        //           labelKey: "region2",

        //           labelValue: [],

        //           isbt: true,

        //           bttsy: "",

        //           labelType: "checkbox",

        //           labelShow: true

        //         },

        //         {

        //           labelTitle: "时间",

        //           labelKey: "date12",

        //           labelValue: "2023-01-20",

        //           labelType: "data",

        //           isbt: false,

        //           bttsy: "",

        //           labelShow: true

        //         },

        //         {

        //           labelTitle: "是否",

        //           labelKey: "delivery2",

        //           labelValue: "",

        //           labelType: "radio",

        //           isbt: true,

        //           bttsy: "",

        //           labelShow: true

        //         },

        //         {

        //           labelTitle: "类型",

        //           labelKey: "type2",

        //           labelValue: "",

        //           isbt: true,

        //           bttsy: "",

        //           labelShow: false

        //         },

        //         {

        //           labelTitle: "资源",

        //           labelKey: "resource2",

        //           labelValue: "",

        //           isbt: true,

        //           bttsy: "",

        //           labelShow: false

        //         },

        //         {

        //           labelTitle: "备注",

        //           labelKey: "desc2",

        //           labelValue: "",

        //           isbt: true,

        //           bttsy: "",

        //           labelShow: false

        //         }

        //       ]

        //     }

        //   ],

        // },

        // {

        //   id: "jb2",

        //   labelTitle:"工作变动",

        //   isczbt: "", //是否存在必填

        //   children:[

        //         {

        //           labelTitle: "名称",

        //           labelKey: "name1",

        //           labelValue: "3333",

        //           isbt: true, //是否存必填

        //           bttsy: "", //必填提示语是否显示

        //           labelType: "input",

        //           labelShow: true //是否显示

        //         },

        //         {

        //           labelTitle: "区域",

        //           labelKey: "region1",

        //           labelValue: [],

        //           isbt: true,

        //           bttsy: "",

        //           labelType: "checkbox",

        //           labelShow: true

        //         },

        //         {

        //           labelTitle: "时间",

        //           labelKey: "date11",

        //           labelValue: "2023-01-20",

        //           labelType: "data",

        //           isbt: false,

        //           bttsy: "",

        //           labelShow: true

        //         },

        //         {

        //           labelTitle: "是否",

        //           labelKey: "delivery1",

        //           labelValue: "",

        //           labelType: "radio",

        //           isbt: true,

        //           bttsy: "",

        //           labelShow: true

        //         },

        //         {

        //           labelTitle: "类型",

        //           labelKey: "type1",

        //           labelValue: "",

        //           isbt: true,

        //           bttsy: "",

        //           labelShow: false

        //         },

        //         {

        //           labelTitle: "资源1",

        //           labelKey: "resource",

        //           labelValue: "",

        //           isbt: true,

        //           bttsy: "",

        //           labelShow: false

        //         },

        //         {

        //           labelTitle: "备注1",

        //           labelKey: "desc",

        //           labelValue: "",

        //           isbt: true,

        //           bttsy: "",

        //           labelShow: false

        //         }

        //   ],

        // },

      ],

      Rowdata: "",

      labelDictTypelist:[]

    };

  },

  mounted() {

    this.$nextTick(() => {

      console.log(1);

      window.addEventListener("scroll", this.onScroll, true);

    });

    this.getreportgetReportData()

  },

  methods: {

    goBack(){

      this.$router.push({

        path: "/singlediseasemanage/reportthedisease",

      });

    },

    //获取页面数据

    getreportgetReportData(){

      this.loading = true;

      var params={

        diseaseTypeCode:this.$route.query.diseaseTypeCode,

        dsDetailId:this.$route.query.dsDetailId?this.$route.query.dsDetailId:"",

      }

      reportgetReportData(params).then(response => {

          // this.tablelist = response.rows;

          // this.total = response.total;

         

          response.data.reportData.forEach(element => {

            this.activeNames.push(element.labelTitle)

            //查询多选和单选结果集

            element.isbt=""

            if(element.children){

              element.children.forEach(item => {//直接从二级开始

                if(item.labelType=='title'){

                  if(item.children && item.children.length>0){

                    item.children.forEach(it => {

                      if(it.labelType =='radio' || it.labelType=='checkbox' || it.labelType=='select'){

                        if(it.labelType=='checkbox'){

                          if(it.labelValue){

                            it.labelValue=it.labelValue.split(',')

                          }else{

                            it.labelValue=[]

                          }

                        }

                        // it.arrlist=[]//放入公共字段放结果集

                        this.$nextTick(() => {

                          // this.getselectlist(it)

                          if(it.labelDictType){

                            this.getselectlist(it)

                          }

                        })

                      }

                    });

                  }

                }else{

                  if(item.labelType =='radio' || item.labelType=='checkbox' || item.labelType=='select'){

                    if(item.labelType=='checkbox'){

                      if(item.labelValue){

                        item.labelValue=item.labelValue.split(',')

                      }else{

                        item.labelValue=[]

                      }

                    }

                    // item.arrlist=[]//放入公共字段放结果集

                    this.$nextTick(() => {

                      if(item.labelDictType){

                        this.getselectlist(item)

                      }

                    })

                  }

                }

              });

            }

          });

          this.tabs=response.data.reportData

          console.log(response,"============")

          this.loading = false;

        }

      );

    },

    //获取日期方法  验证

    getdatatime(row,tab){

      console.log(tab,"====tab=======")

      console.log(row,"====row111=======")

      if(row.labelKey=='CM-0-2-4-1'){//入院日期  判断如愿如期大于 发病日期

        tab.children.forEach(element => {

          if(element.labelKey=='CM-0-2-2-2'){

              if (new Date(element.labelValue).getTime() >= new Date(row.labelValue).getTime()) {

                // this.$message.error("入院日期时间应大于发病日期时间");

                row.bttsy='入院日期时间应大于发病日期时间'

                return

              }else{

                row.bttsy=''

              }

          }

        });

      }

    },

    //select和checkbox方法

    getcheckbox(row,tab){

      console.log(tab,"====tab=======")

      console.log(row,"====row111=======")

      //验证

      //获取参数

      this.paramsdata = [];

      this.tabs.forEach(element => {

          element.children.forEach(item => {//直接从二级开始

            if(item.labelType=='title'){//判断是标题

              if(item.children&&item.children.length>0){

                // console.log(item,"===============item")

                item.children.forEach(it => {

                  if(it.labelType!='title'){

                    // 参数梳理  --------------------------start

                    //为多选的时候 值改为string

                    if (it.labelType == "checkbox") {

                      var params = {

                        labelKey: it.labelKey,

                        labelValue:it.labelValue.join(","),

                      };

                    } else {

                      var params = {

                        labelKey: it.labelKey,

                        labelValue: it.labelValue

                      };

                    }

                    this.paramsdata.push(params);

                    // 参数梳理  --------------------------end

                  }

                });

              }

            }else{//一级下内容

                console.log(item,"===============item11")

                  if (item.labelType == "checkbox") {

                    //为多选的时候 值改为string

                    var params = {

                      labelKey: item.labelKey,

                      labelValue:item.labelValue.join(","),

                    };

                  } else {

                    var params = {

                      labelKey: item.labelKey,

                      labelValue: item.labelValue

                    };

                  }

                  this.paramsdata.push(params);

              }

          });

        

      });

      // console.log(JSON.stringify(this.paramsdata),"==========this.paramsdata")

      var params={

        diseaseTypeCode:this.$route.query.diseaseTypeCode,

        labelKey:row.labelKey,

        contents:this.paramsdata

      }

      console.log(JSON.stringify(params),"==========this.paramsdata")

      //获取页面要显示隐藏的字段

      getSubContents(params).then(res=>{

        if(res.code=='200'){

          if(res.data.length>0){

            res.data.forEach(itdata => {

              this.tabs.forEach(element => {

                element.children.forEach(item => {//直接从二级开始

                if(itdata.id==item.id){

                        item.labelShow= itdata.labelShow

                        this.$forceUpdate();

                      }

                  // if(item.labelType=='title'){//判断是标题

                    if(item.children&&item.children.length>0){

                      // console.log(item,"==============1111111=item")

                      item.children.forEach(it => {

                        if(it.labelType!='title'){

                          // console.log(itdata.labelKey==it.labelKey,itdata.labelKey,it.labelKey,"===itdata.labelKey==it.labelKey")

                          if(itdata.id==it.id){

                            it.labelShow= itdata.labelShow

                            this.$forceUpdate();

                          }

                        }

                      });

                    }

                  // }else{//一级下内容

                  // console.log(itdata.labelKey==item.labelKey,itdata.labelKey,item.labelKey,"===itdata.labelKey==it.labelKey")

                  //     if(itdata.labelKey==item.labelKey){

                  //       item.labelShow= itdata.labelShow

                  //       this.$forceUpdate();

                  //     }

                  //   }

                });

          });

              

            });

          }

           

        }

      }).catch(() => {

          // this.anTagFlag = false;

      });

    },

    //点击select结果集

    getselectlist(row) {

      // console.log(row,row.labelType,"=============row=="+row.labelDictType)

      var params={

        pageNum: 1,

        pageSize: 1000,

        dictType: row.labelDictType,

      }

      listData(params).then(response => {

        // this.labelDictTypelist = response.rows;

        console.log(response.rows,"==============response.rows")

        row.arrlist=response.rows

      });

    },

    /** 查询字典类型列表 */

    getTypeList(row) {

      // if(params){

      //   this.zdParameters=params

      // }

      // listData(this.zdParameters).then(response => {

      //   response.rows.forEach(element => {

      //     element.dictValue=element.dictValue+''

      //   });

      //   this.diseaseTypelist = response.rows;

      //   // this.zdParameters.total= response.total;

      // });

    },

    //填报要求

    getfillin(){

      this.fillinopen=true

    },

    // 点击完成完成

    getcomplete(element){

      console.log(element,"=======element=========")

      var ishowyjtitle=false//一级标题是否显示

      element.children.forEach(item => {//直接从二级开始

      // for(var i=0;i<element.children.length;i++){

      //   var item=element.children[i]

            if(item.labelType=='title'){//判断是标题

              if(item.children&&item.children.length>0){

                // console.log(item,"===============item")

                // item.children.forEach(it => {

                for(var j=0;j<item.children.length;j++){

                  var it=item.children[j]

                  if(it.labelType!='title'){

                    // 参数梳理  --------------------------start

                    //为多选的时候 值改为string

                    if (it.labelType == "checkbox") {

                      var params = {

                        labelKey: it.labelKey,

                        labelValue:it.labelValue.join(","),

                      };

                    } else {

                      var params = {

                        labelKey: it.labelKey,

                        labelValue: it.labelValue

                      };

                    }

                    this.paramsdata.push(params);

                    // 参数梳理  --------------------------end

                    // console.log(this.paramsdata,"==========this.paramsdata")

                    //处理必填项  是否显示 --------------

                    this.getlabletitleishow(it,element)

                    if(this.getlabletitleishow(it,element)){

                      ishowyjtitle=true

                    }

                  }

                }

              }

            }else{//一级下内容

                  if (item.labelType == "checkbox") {

                    //为多选的时候 值改为string

                    var params = {

                      labelKey: item.labelKey,

                      labelValue:item.labelValue.join(","),

                    };

                  } else {

                    var params = {

                      labelKey: item.labelKey,

                      labelValue: item.labelValue

                    };

                  }

                  this.paramsdata.push(params);

                  // console.log(this.paramsdata,"==========this.paramsdata")

                  this.getlabletitleishow(item,element)

                  if(this.getlabletitleishow(item,element)){

                      ishowyjtitle=true

                    }

              }

          })

          if(ishowyjtitle){

            element.isbt=true

          }else{

            element.isbt=false

          }

    },

    getlabletitleishow(item,element){

      if(item.labelShow){

          // console.log(item,"===============item11")

          if (item.labelType == "checkbox") {

            //多选判断必填提示语是否显示

              if (item.isbt && item.labelValue.length>0) {

                //判断必填提示语是否显示

                if(item.bttsy=='该项为必填项'){

                  item.bttsy = ""

                }

              } else {

                item.bttsy = "该项为必填项";

              }

          }else {

              if (item.isbt && !item.labelValue) {

                //判断必填提示语是否显示

                item.bttsy = "该项为必填项";

              } else {

                if(item.bttsy=='该项为必填项'){

                  item.bttsy = ""

                }

              }

          }

          if (item.bttsy) {

              // console.log(item.bttsy,"===============bttsy")

            //判断标题是否存在必填项没填写

            // element.isbt = true;

            return true

          }else{

            // element.isbt = false;

             return false

          }

          // console.log(element,"===============element22")

        }

    },

    //保存内容

    resetForm(){

      this.paramsdata = [];

      var ishowyjtitle=false//判断是否存在必填项

      this.tabs.forEach(element => {

          element.children.forEach(item => {//直接从二级开始

            if(item.labelType=='title'){//判断是标题

              if(item.children&&item.children.length>0){

                // console.log(item,"===============item")

                item.children.forEach(it => {

                  if(it.labelType!='title'){

                    // 参数梳理  --------------------------start

                    //为多选的时候 值改为string

                    if (it.labelType == "checkbox") {

                      var params = {

                        labelKey: it.labelKey,

                        labelValue:it.labelValue.join(","),

                      };

                    } else {

                      var params = {

                        labelKey: it.labelKey,

                        labelValue: it.labelValue

                      };

                    }

                    this.paramsdata.push(params);

                  }

                });

              }

            }else{//一级下内容

                // console.log(item,"===============item11")

                  if (item.labelType == "checkbox") {

                    //为多选的时候 值改为string

                    var params = {

                      labelKey: item.labelKey,

                      labelValue:item.labelValue.join(","),

                    };

                  } else {

                    var params = {

                      labelKey: item.labelKey,

                      labelValue: item.labelValue

                    };

                  }

                  this.paramsdata.push(params);

                  // console.log(item.labelValue,"==========item.labelValue")

              }

          });

        // console.log(this.paramsdata,"==========this.paramsdata")

      });

      this.$nextTick(() => {

          if (this.anTagFlag) {

              return;

            }

            this.anTagFlag = true;

            var params={

              diseaseTypeCode:this.$route.query.diseaseTypeCode,

              id:"",

              contents:this.paramsdata

            }

            console.log(params,"==========params.params")

            reportsaveInfo(params).then(res=>{

              if(res.code=='200'){

                this.$message({

                  message: "提交成功",

                  type: "success"

                });

                setTimeout(()=>{

                  this.anTagFlag = false;

                },500)

              }

            }).catch(() => {

                this.anTagFlag = false;

              });

        })

    },

    //提交审核

    submitForm() {

      this.paramsdata = [];

      var ishowyjtitle=false//判断是否存在必填项

      this.tabs.forEach(element => {

          element.children.forEach(item => {//直接从二级开始

            if(item.labelType=='title'){//判断是标题

              if(item.children&&item.children.length>0){

                // console.log(item,"===============item")

                item.children.forEach(it => {

                  if(it.labelType!='title'){

                    // 参数梳理  --------------------------start

                    //为多选的时候 值改为string

                    if (it.labelType == "checkbox") {

                      var params = {

                        labelKey: it.labelKey,

                        labelValue:it.labelValue.join(","),

                      };

                    } else {

                      var params = {

                        labelKey: it.labelKey,

                        labelValue: it.labelValue

                      };

                    }

                    this.paramsdata.push(params);

                    // 参数梳理  --------------------------end

                    // console.log(this.paramsdata,"==========this.paramsdata")

                    //处理必填项  是否显示 --------------

                    this.getlabletitleishow(it,element)

                    if(this.getlabletitleishow(it,element)){

                      ishowyjtitle=true

                    }

                    // if(it.labelShow){

                    //   if (it.labelType == "checkbox") {

                    //     //多选判断必填提示语是否显示

                    //       if (it.isbt && it.labelValue.length>0) {

                    //         //判断必填提示语是否显示

                    //           it.bttsy = "";

                    //       } else {

                    //         it.bttsy = "该项为必填项";

                    //       }

                    //   } else {

                    //       if (it.isbt && !it.labelValue) {

                    //         //判断必填提示语是否显示

                    //         it.bttsy = "该项为必填项";

                    //       } else {

                    //           it.bttsy = "";

                    //       }

                    //   }

                   

                    //   if (it.bttsy) {

                    //     //判断标题是否存在必填项没填写

                    //     element.isbt = true;

                    //   } else {

                    //     element.isbt = false;

                    //   }

                    // }

                  }

                  

                });

              }

            }else{//一级下内容

                // console.log(item,"===============item11")

                  if (item.labelType == "checkbox") {

                    //为多选的时候 值改为string

                    var params = {

                      labelKey: item.labelKey,

                      labelValue:item.labelValue.join(","),

                    };

                  } else {

                    var params = {

                      labelKey: item.labelKey,

                      labelValue: item.labelValue

                    };

                  }

                  this.paramsdata.push(params);

                  // console.log(item.labelValue,"==========item.labelValue")

                  //判断必填项是否必填

                  this.getlabletitleishow(item,element)

                  //如果有一个存在必填项没填写  一级标题变红

                  if(this.getlabletitleishow(item,element)){

                    ishowyjtitle=true

                  }

                  // if(item.labelShow){

                  //   if (item.labelType == "checkbox") {

                  //     //多选判断必填提示语是否显示

                  //       if (item.isbt && item.labelValue.length>0) {

                  //         //判断必填提示语是否显示

                  //         item.bttsy = "";

                  //       } else {

                  //         item.bttsy = "该项为必填项";

                  //       }

                  //   } else {

                      

                  //       if (item.isbt && !item.labelValue) {

                  //         //判断必填提示语是否显示

                  //         item.bttsy = "该项为必填项";

                  //       } else {

                  //         item.bttsy = "";

                  //       }

                  //   }

                  //   if (item.bttsy) {

                  //     //判断标题是否存在必填项没填写

                  //     element.isbt = true;

                  //     return

                  //   } else {

                  //     element.isbt = false;

                  //   }

                  // }

              }

          });

        // console.log(this.paramsdata,"==========this.paramsdata")

        console.log(ishowyjtitle,"=============ishowyjtitle")

        if(ishowyjtitle){

          element.isbt=true

        }else{

          element.isbt=false

        }

      });

      this.$nextTick(() => {

        if(ishowyjtitle){

            this.$message({

                message: "请逐条核对信息",

                type: "warning"

              });

              return;

          }

          if (this.anTagFlag) {

              return;

            }

            this.anTagFlag = true;

            var params={

              diseaseTypeCode:this.$route.query.diseaseTypeCode,

              id:"",

              contents:this.paramsdata

            }

            console.log(params,"==========params.params")

            reportsaveInfo(params).then(res=>{

              if(res.code=='200'){

                this.$message({

                  message: "提交成功",

                  type: "success"

                });

                setTimeout(()=>{

                  this.anTagFlag = false;

                },500)

              }

            }).catch(() => {

                this.anTagFlag = false;

              });

        })

    },

    // 滚动条滚动

    onScroll(e) {

      // let scrollItems = document.querySelectorAll(".scroll-item");

      // for (let i = scrollItems.length - 1; i >= 0; i--) {

      //   // 判断滚动条滚动距离是否大于当前滚动项可滚动距离

      //   let judge =

      //     e.target.scrollTop >=

      //     scrollItems[i].offsetTop - scrollItems[0].offsetTop;

      //   if (judge) {

      //     console.log(i,"=========i")

      //     this.tabIndex = i.toString();

      //     // 找对应的tab-name值

      //     this.tabName = this.tabs[this.tabIndex].labelTitle;

      //     break;

      //   }

      // }

    },

   //锚点定位开始----------------------------------------------

    jump(tab, index) {

      this.tabName = tab.labelTitle;

      let id1 = this.activeNames.findIndex(arr => arr == tab.labelTitle); //id1为对象的数组下标

      if (id1 == "-1") {

        this.activeNames.push(tab.labelTitle);

      }

      // else{

      //    this.activeNames.splice(id1, 1);//删除该对象,实现局部刷新的功能

      // }

      let target = document.querySelector(".scroll-content");

      let scrollItems = document.querySelectorAll(".scroll-item");

      // 判断滚动条是否滚动到底部

      if (target.scrollHeight <= target.scrollTop + target.clientHeight) {

        this.tabIndex = index;

      }

      let totalY = scrollItems[index].offsetTop - scrollItems[0].offsetTop; // 锚点元素距离其offsetParent(这里是body)顶部的距离(待滚动的距离)

      let distance = document.querySelector(".scroll-content").scrollTop; // 滚动条距离滚动区域顶部的距离

      // let distance = document.body.scrollTop || document.documentElement.scrollTop || window.pageYOffset // 滚动条距离滚动区域顶部的距离(滚动区域为窗口)

      // 滚动动画实现, 使用setTimeout的递归实现平滑滚动,将距离细分为50小段,10ms滚动一次

      // 计算每一小段的距离

      let step = totalY / 50;

      if (totalY > distance) {

        smoothDown(document.querySelector(".scroll-content"));

      } else {

        let newTotal = distance - totalY;

        step = newTotal / 50;

        smoothUp(document.querySelector(".scroll-content"));

      }

      // 参数element为滚动区域

      function smoothDown(element) {

        if (distance < totalY) {

          distance += step;

          element.scrollTop = distance;

          setTimeout(smoothDown.bind(this, element), 10);

        } else {

          element.scrollTop = totalY;

        }

      }

      // 参数element为滚动区域

      function smoothUp(element) {

        if (distance > totalY) {

          distance -= step;

          element.scrollTop = distance;

          setTimeout(smoothUp.bind(this, element), 10);

        } else {

          element.scrollTop = totalY;

        }

      }

    },

    handleChange(val) {

      console.log(val);

    }

  }

};

</script>

<style scoped lang="scss">

.scroll-content {

  // height: 630px;

  height: calc(100vh - 180px);

  // border:1px solid;

  overflow: auto;

}

.rectification {

  width: 100%;

  background: #fff;

  font-size: 14px;

  // display: flex;

  .registers {

    width: 100%;

    // margin-top: 4px;

    height: calc(100vh - 127px);

    padding: 0px 4px;

    // border: 1px solid;

    // overflow-y: auto;

    // overflow-x: hidden;

    .tablistrowejtitle{

      height:42px;

      line-height: 42px;

      font-size: 14px;

      font-weight: 600;

      padding: 0px 8px;

      background-color: #FAFAFA;

    }

    .tablistrow {

      // border: 1px solid #DCDFE6;

      height: auto;

      min-height: 42px;

      padding: 0px 8px;

      display: flex;

      align-items: center;

      justify-content: flex-start;

      // padding:0px 5px;

      .btbj {

        width: 5px;

        padding: 0px 2px;

        color: red;

      }

      .tablistrowlable {

        width: 370px;

        // background-color: #FAFAFA;

      }

      .tablistrowbttsy {

        // width: 130px;

        // width:60%;

        color: red;

        padding: 0px 5px;

        display: flex;

        align-items: center;

      }

    }

  }

  .circle {

      display: inline-block;

      background: #3362CD;

      width: 2px;

      height: 20px;

      padding: 0 !important;

      border-radius: 2px;

      margin: 0 8px;

      vertical-align: middle;

      margin-top: -4px;

  }

}

//需要提取公共样式

.border-r {

  border-right: 1px solid #dcdfe6;

}

.border-l {

  border-left: 1px solid #dcdfe6;

}

.border-t {

  border-top: 1px solid #dcdfe6;

}

.border-b {

  border-bottom: 1px solid #dcdfe6;

}

::v-deep {

  .el-dialog__body {

      padding: 20px 20px;

  }

  .el-collapse-item__header {

    height: 40px;

    line-height: 40px;

    //  border: 1px solid #ECECEC;

    background-color: #e8eeff;

    font-weight: 600;

    font-size: 14px;

  }

  .demo-table-expand {

    font-size: 0;

  }

  .demo-table-expand label {

    width: 90px;

    color: #333333;

  }

  .demo-table-expand .el-form-item {

    margin-right: 0;

    margin-bottom: 0;

    width: 60%;

  }

  .el-collapse-item__wrap {

       border-bottom: 0px solid #e6ebf5;

  }

}

::v-deep {

  .el-checkbox__label {

    // widows: 60%;;

    // overflow: hidden;

    // white-space: nowrap;

    // text-overflow: ellipsis;

    height: 42px;

    line-height: 42px;

  }

  .el-radio__label {

    height: 42px;

    line-height: 42px;

}

  .el-collapse-item__content {

    padding-bottom: 0px;

  }

  .el-menu-item:hover, .el-menu-item:focus {

      background-color: #ffffff;

  }

  .el-checkbox {

      display: block;

          display: flex;

    align-items: center;

  }

  .el-checkbox__label {

      overflow: hidden;

      white-space: nowrap;

      text-overflow: ellipsis;

  }

}

::v-deep.customer-tab {

  // width: 100%;

  // height: 50px;

  // background-color: #f5f7fa;

  // padding: 4px;

  .tabspanxz{

    height: 42px;

    line-height: 42px;

    border-radius: 5px;

    font-weight: 400;

    padding: 0px 8px;

    max-width:283px;

    // min-width: 100px;

    //  width: 213px;

    color:#4d84ff;

  }

  .tabspan{

    height: 42px;

    line-height: 42px;

    border-radius: 5px;

    font-weight: 400;

    padding: 0px 8px;

    max-width:283px;

    // min-width: 100px;

    // width: 130px;

  }

}

::v-deep.el-tabs--card > .el-tabs__header {

  border-bottom: none;

  margin: 0;

  .el-tabs__nav {

    width: 100%;

    display: flex;

    justify-content: space-around;

    border: none;

    .el-tabs__item {

      width: 25%;

      text-align: center;

      border: none;

    }

    .is-active {

      border-radius: 4px;

      background-color: #005bd9;

      color: #fff;

    }

  }

}

</style>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值