qinxianzhangyao
2024-06-27 bbd8b70f2544e07ce6ce4247ebb13f892dd86112
src/views/system/tijianall/index.vue
@@ -1,140 +1,387 @@
<template>
  <div class="app-container">
    <el-row >
    <el-row>
      <el-col :span="18">
        <div >
      <el-form style="margin: 4px 8px" :inline="true" ref="form" :model="form" :rules="rules"
        :label-position="labelPosition" class="demo-form-inline" label-width="78px">
        <el-form-item label="姓名" prop="cusName">
          <el-input v-model="form.cusName" placeholder="请输入姓名" style="width: 160px" />
        </el-form-item>
        <el-form-item label="证件类型" prop="idType">
          <el-select style="width: 160px" v-model="form.idType" placeholder="请选择证件类型">
            <el-option v-for="dict in dict.type.dict_user_cardtype" :key="dict.value" :label="dict.label"
              :value="dict.value"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="证件号" prop="cusIdcard">
          <el-input style="width: 186px" v-model="form.cusIdcard" placeholder="请输入身份证号" @input="inputChange" />
          <i style="font-size: 17px; margin-left: 3px" class="el-icon-search" @click="handleQuery"></i>
        </el-form-item>
        <el-form-item label="年龄" prop="age">
          <el-input style="width: 55px" v-model="form.age" />
        </el-form-item>
        <el-form-item prop="ageUnit">
          <el-select style="width: 60px" v-model="form.ageUnit" @change="formchang">
            <el-option v-for="dict in dict.type.dict_ageunit" :key="dict.value" :label="dict.label"
              :value="dict.value"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="性别" prop="cusSex">
          <el-select style="width: 160px" v-model="form.cusSex" placeholder="请选择性别" @change="formchang">
            <el-option v-for="dict in dict.type.sys_user_sex" :key="dict.value" :label="dict.label"
              :value="parseInt(dict.value)"></el-option>
          </el-select>
        </el-form-item>
        <!-- <input name="ReadBlockBtn" type="button" size="5px"  @click="readblock" value="读卡" /> -->
        <!-- <el-form-item label="出生日期" prop="cusBrithday">
              <el-date-picker style="width: 200px" clearable v-model="form.cusBrithday" type="date"
                value-format="yyyy-MM-dd" placeholder="请选择出生日期">
              </el-date-picker>
            </el-form-item> -->
        <el-form-item label="联系电话" prop="cusPhone">
          <el-input v-model="form.cusPhone" placeholder="请输入联系电话" style="width: 160px" />
        </el-form-item>
        <el-form-item label="民族" prop="cusNational">
          <el-select filterable v-model="form.cusNational" placeholder="请选择民族" style="width: 130px">
            <el-option v-for="dict in dict.type.dict_user_national" :key="dict.value" :label="dict.label"
              :value="dict.value"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="邮箱" prop="cusEmail">
          <el-input v-model="form.cusEmail" placeholder="请输入邮箱" style="width: 200px" />
        </el-form-item>
        <el-form-item label="婚姻" prop="cusMarryStatus">
          <el-select style="width: 160px" v-model="form.cusMarryStatus" placeholder="请选择婚姻状况">
            <el-option v-for="dict in dict.type.dict_user_marry" :key="dict.value" :label="dict.label"
              :value="dict.value"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="现住址" prop="cusAddr">
          <el-input v-model="form.cusAddr" placeholder="请输入现居住地址" style="width: 440px" />
        </el-form-item>
        <!-- <el-form-item label="户口地址" prop="cusAddr">
              <el-input v-model="form.cusAddr" placeholder="请输入户口地址" />
            </el-form-item> -->
        <!-- <el-form-item label="邮政编码" prop="cusPostcode">
        <div>
          <el-form
            style="margin: 4px 8px"
            :inline="true"
            ref="form"
            :model="form"
            :rules="rules"
            label-width="106px"
          >
            <el-form-item
              label="姓名"
              prop="cusName"
              :rules="[
                {
                  required: true,
                  validator: (rule, value, callback) => {
                    if (!form.cusName) {
                      callback('');
                    } else if (form.cusName) {
                      callback();
                    }
                  },
                  trigger: 'blur',
                },
              ]"
            >
              <el-input
                v-model="form.cusPostcode"
                placeholder="请输入邮政编码"
                v-model="form.cusName"
                placeholder="请输入姓名"
                style="width: 99%"
              />
            </el-form-item> -->
        <!-- <el-form-item label="索引卡号" prop="indexCard">
              <el-input v-model="form.indexCard" placeholder="请输入索引卡号" />
            </el-form-item> -->
        <el-form-item label="体检类别" prop="category">
          <el-select style="width: 140px" v-model="form.category" placeholder="请选择体检类别">
            <el-option v-for="dict in dict.type.dict_tjtype" :key="dict.value" :label="dict.label"
              :value="dict.value"></el-option>
          </el-select>
          <!-- <el-input v-model="form.category" placeholder="请输入体检类别" /> -->
        </el-form-item>
        <el-form-item label="部门" prop="department">
          <el-input v-model="form.department" placeholder="请输入部门" style="width: 160px" />
        </el-form-item>
        <el-form-item label="工作单位" prop="company">
          <el-input v-model="form.company" placeholder="请输入工作单位" style="width: 440px" />
        </el-form-item>
        <el-form-item label="职业" prop="career">
          <el-select filterable :disabled="isDisabled" v-model="form.career" placeholder="请输入职业" style="width: 140px">
            <el-option v-for="dict in dict.type.dict_job" :key="dict.value" :label="dict.label"
              :value="dict.value"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="预约日期" prop="reservationTime">
          <el-date-picker v-model="form.reservationTime" type="date" value-format="yyyy-MM-dd" placeholder="选择日期"
            :picker-options="setDisabled" style="width: 160px">
          </el-date-picker>
        </el-form-item>
        <el-form-item label="时间" prop="timeRegion">
          <el-select style="width: 160px" v-model="form.timeRegion" placeholder="请选择预约时间">
            <el-option v-for="dict in dict.type.tj_time_region" :key="dict.value" :label="dict.label"
              :value="dict.value"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="卡号" prop="indexCard">
          <el-input v-model="form.indexCard" placeholder="请输入卡号" style="width: 190px" />
        </el-form-item>
      </el-form>
    </div>
        </el-col>
        </el-row>
            </el-form-item>
            <el-form-item label="性别" prop="cusSex">
              <el-select
                v-model="form.cusSex"
                placeholder="请选择性别"
                @change="formchang"
                style="width: 94%"
              >
                <el-option
                  v-for="dict in dict.type.sys_user_sex"
                  :key="dict.value"
                  :label="dict.label"
                  :value="parseInt(dict.value)"
                ></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="证件类型" prop="idType">
              <el-select
                v-model="form.idType"
                placeholder="请选择证件类型"
                style="width: 93%"
              >
                <el-option
                  v-for="dict in dict.type.dict_user_cardtype"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-form>
          <el-form
            style="margin: 4px 8px"
            :inline="true"
            ref="form"
            :model="form"
            :rules="rules"
            label-width="106px"
          >
            <el-form-item
              label="电话"
              prop="cusPhone"
              :rules="[
                {
                  required: true,
                  validator: (rule, value, callback) => {
                    if (!form.cusPhone) {
                      callback('');
                    } else if (form.cusPhone) {
                      callback();
                    }
                  },
                  trigger: 'blur',
                },
              ]"
            >
              <el-input v-model="form.cusPhone" placeholder="请输入电话" />
            </el-form-item>
    <el-dialog title="选择套餐" :visible.sync="taocan" width="42%" height="700px">
      <el-tabs type="border-card" style="height: 538px; margin: 0 10px; width: 100%">
        <el-tab-pane label="套餐">
          <el-form :model="queryParam" ref="queryForm" size="small" :inline="true" v-show="showSearch"
            @submit.native.prevent label-width="auto">
            <el-form-item label="婚姻" prop="cusMarryStatus">
              <el-select
                v-model="form.cusMarryStatus"
                placeholder="请选择婚姻状况"
                style="width: 94%"
              >
                <el-option
                  v-for="dict in dict.type.dict_user_marry"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                ></el-option>
              </el-select>
            </el-form-item>
            <el-form-item
              label="证件号码"
              prop="cusIdcard"
              :rules="[
                {
                  required: true,
                  validator: (rule, value, callback) => {
                    if (!form.cusIdcard) {
                      callback('');
                    } else if (form.cusIdcard) {
                      callback();
                    }
                  },
                  trigger: 'blur',
                },
              ]"
            >
              <span
                slot="label"
                style="display: inline-block; border-bottom: 2px solid blue"
                @click="handleQuery"
              >
                证件号码
              </span>
              <el-input
                v-model="form.cusIdcard"
                placeholder="请输入身份证号"
                @input="inputChange"
              />
              <!-- <i
                style="font-size: 17px; margin-left: 3px"
                class="el-icon-search"
                @click="handleQuery"
              ></i> -->
            </el-form-item>
          </el-form>
          <el-form
            style="margin: 4px 8px"
            :inline="true"
            ref="form"
            :model="form"
            :rules="rules"
            label-width="106px"
          >
            <el-form-item label="邮箱" prop="cusEmail">
              <el-input v-model="form.cusEmail" placeholder="请输入邮箱" />
            </el-form-item>
            <el-form-item label="民族" prop="cusNational">
              <el-select
                filterable
                v-model="form.cusNational"
                placeholder="请选择民族"
                style="width: 93%"
              >
                <el-option
                  v-for="dict in dict.type.dict_user_national"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                ></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="年龄" prop="age">
              <el-input
                v-model="form.age"
                :disabled="isDisabled"
                style="width: 28%"
              />
              <el-select
                :disabled="isDisabled"
                v-model="form.ageUnit"
                style="width: 20%"
              >
                <el-option
                  v-for="dict in dict.type.dict_ageunit"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-form>
          <el-form
            style="margin: 4px 8px"
            :inline="true"
            ref="form"
            :model="form"
            :rules="rules"
            label-width="106px"
          >
            <el-form-item label="卡号" prop="indexCard">
              <el-input v-model="form.indexCard" placeholder="请输入卡号" />
            </el-form-item>
            <el-form-item label="职业" prop="career">
              <el-select
                filterable
                :disabled="isDisabled"
                v-model="form.career"
                placeholder="请输入职业"
                style="width: 94%"
              >
                <el-option
                  v-for="dict in dict.type.dict_job"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                ></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="体检类型" prop="tjType">
              <el-select
                v-model="form.tjType"
                placeholder="请选择体检类型"
                style="width: 94%"
              >
                <el-option
                  v-for="dict in dict.type.dict_team"
                  :key="dict.value"
                  :label="dict.label"
                  :value="parseInt(dict.value)"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-form>
          <el-form
            style="margin: 4px 8px"
            :inline="true"
            ref="form"
            :model="form"
            :rules="rules"
            label-width="106px"
          >
            <el-form-item label="单位" prop="company">
              <el-input v-model="form.company" placeholder="请输入工作单位" />
            </el-form-item>
            <el-form-item label="体检类别" prop="category">
              <el-select
                v-model="form.category"
                placeholder="请选择体检类别"
                style="width: 95%"
              >
                <el-option
                  v-for="dict in dict.type.dict_tjtype"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                ></el-option>
              </el-select>
              <!-- <el-input v-model="form.category" placeholder="请输入体检类别" /> -->
            </el-form-item>
            <el-form-item label="部门" prop="department">
              <el-input v-model="form.department" placeholder="请输入部门" />
            </el-form-item>
          </el-form>
          <el-form
            style="margin: 4px 8px"
            :inline="true"
            ref="form"
            :model="form"
            :rules="rules"
            label-width="106px"
          >
            <el-form-item label="现住地址" prop="cusAddr">
              <el-input v-model="form.cusAddr" placeholder="请输入现居住地址" />
            </el-form-item>
            <el-form-item label="预约时间" prop="timeRegion">
              <el-select
                v-model="form.timeRegion"
                placeholder="请选择预约时间"
                style="width: 95%"
              >
                <el-option
                  v-for="dict in dict.type.tj_time_region"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                ></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="预约日期" prop="reservationTime">
              <el-date-picker
                v-model="form.reservationTime"
                type="date"
                value-format="yyyy-MM-dd"
                placeholder="选择日期"
                :picker-options="setDisabled"
                style="width: 88%"
              >
              </el-date-picker>
            </el-form-item>
          </el-form>
        </div>
      </el-col>
    </el-row>
    <el-dialog
      title="选择套餐"
      :visible.sync="taocan"
      width="80%"
      height="700px"
    >
      <el-tabs
        type="border-card"
        style="height: 538px; margin: 0 10px; width: 100%"
        @tab-click="handleClick"
        v-model="activeNames"
      >
        <el-tab-pane label="套餐" name="first">
          <el-form
            :model="queryParam"
            ref="queryForm"
            size="small"
            :inline="true"
            v-if="showSearch"
            @submit.native.prevent
            label-width="auto"
          >
            <el-form-item label="套餐名称" prop="pacName">
              <el-input v-model="queryParam.pacName" placeholder="请输入套餐名称" clearable @keyup.enter.native="handle" />
              <el-input
                v-model="queryParam.pacName"
                placeholder="请输入套餐名称"
                clearable
                @keyup.enter.native="handle"
              />
            </el-form-item>
            <el-form-item>
              <el-button type="primary" icon="el-icon-search" size="mini" @click="handle">查询</el-button>
              <el-button
                type="primary"
                icon="el-icon-search"
                size="mini"
                @click="handle"
                >查询</el-button
              >
              <!-- <el-button type="primary"  size="mini" @click="submit">确认</el-button> -->
            </el-form-item>
          </el-form>
          <div class="tab9">
            <div class="grid-content bg-purple" style="width: 100%">
              <el-table v-loading="loading" element-loading-text="正在加载中..." element-loading-spinner="el-icon-loading"
                border :data="newpacName" @select="handleSelectionChange" height="430" ref="tb" style="width: 1000px">
              <el-table
                v-loading="loading"
                element-loading-text="正在加载中..."
                element-loading-spinner="el-icon-loading"
                border
                :data="newpacName"
                @select="handleSelectionChange"
                height="430"
                ref="tb"
                style="width: 1000px"
              >
                <template slot="empty">数据正在加载中</template>
                <el-table-column type="selection" width="40px" align="center" label="选择" />
                <el-table-column label="套餐名称" align="center" prop="pacName" width="120px" />
                <el-table-column label="套餐价格" align="center" prop="price" width="120px" />
                <el-table-column label="套餐明细" align="center" prop="allProName" :show-overflow-tooltip="true" />
                <el-table-column
                  type="selection"
                  width="40px"
                  align="center"
                  label="选择"
                />
                <el-table-column
                  label="套餐名称"
                  align="center"
                  prop="pacName"
                  width="120px"
                />
                <el-table-column
                  label="套餐价格"
                  align="center"
                  prop="price"
                  width="120px"
                />
                <el-table-column
                  label="套餐明细"
                  align="center"
                  prop="allProName"
                  :show-overflow-tooltip="true"
                />
                <!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
                  <template slot-scope="scope">
                    <el-button size="mini" type="text" icon="el-icon-circle-check" @click="handleSeach(scope.row)"
@@ -154,23 +401,260 @@
                  class="el-icon-d-arrow-right"></i></el-button> -->
          </div>
        </el-tab-pane>
        <el-tab-pane label="单项">
        <el-tab-pane label="组合" name="third">
          <div class="tab8">
            <div class="tab7">
              <v-tree-transfer :treeData="treedataList" :defaultProps="{ children: 'tjProjectList', label: 'proName' }"
              :defaultKeys="defaultKeys" @changeKeys="changeCategoryKeys" :key="datekey"></v-tree-transfer>
              <!-- <el-tree :data="data" show-checkbox node-key="proId" :props="defaultProps" :default-checked-keys="treeList"
            <el-row :gutter="20" style="width: 100%">
              <el-col :span="8">
                <div
                  style="
                    text-align: center;
                    margin-bottom: 10px;
                    margin-top: 10px;
                  "
                >
                  项目列表
                </div>
                <el-input placeholder="输入关键字进行过滤" v-model="filterage">
                </el-input>
                <div class="tab3">
                  <el-tree
                    class="filter-tree"
                    v-loading="loading"
                    :data="packageList"
                    :props="defaultProp"
                    show-checkbox
                    node-key="id"
                    @check="handlepackage"
                    :default-checked-keys="checkedkeys"
                    :filter-node-method="filterpackage"
                    ref="treas"
                    :render-content="renderContents"
                  >
                  </el-tree>
                </div>
              </el-col>
              <el-col :span="6">
                <div
                  style="
                    text-align: center;
                    margin-bottom: 10px;
                    margin-top: 10px;
                  "
                >
                  明细项目列表
                </div>
                <div class="tab3">
                  <el-tree
                    class="filter-tree"
                    v-loading="loading"
                    :data="packagedataList"
                    node-key="proId"
                    :props="defaultpackProps"
                    :render-content="renderContent"
                  >
                  </el-tree>
                </div>
              </el-col>
              <el-col :span="11">
                <div class="grid-content bg-purple">
                  <div
                    style="
                      text-align: center;
                      margin-bottom: 10px;
                      margin-top: 10px;
                    "
                  >
                    已选项目列表
                  </div>
                  <el-table
                    :data="DataLists"
                    border
                    style="width: 100%"
                    height="400"
                    :span-method="objectspanmethod"
                  >
                    <el-table-column prop="propinName" label="检查项目">
                    </el-table-column>
                    <el-table-column
                      prop="proName"
                      label="明细项目"
                      width="260px"
                    >
                    </el-table-column>
                    <el-table-column prop="proPrice" label="原价" width="56px">
                    </el-table-column>
                    <el-table-column
                      label="操作"
                      align="center"
                      fixed="right"
                      class-name="small-padding fixed-width"
                      width="50px"
                    >
                      <template slot-scope="scope">
                        <el-button
                          size="mini"
                          type="text"
                          icon="el-icon-delete"
                          @click="handleDel(scope.row)"
                          title="删除"
                        ></el-button>
                      </template>
                    </el-table-column>
                  </el-table>
                  <h3 style="font-weight: 600">合计:{{ marryalls }}元</h3>
                </div>
              </el-col>
            </el-row>
          </div>
        </el-tab-pane>
        <el-tab-pane label="单项" name="second">
          <div class="tab8">
            <!-- <div class="tab7">
              <v-tree-transfer
                :treeData="treedataList"
                :defaultProps="{ children: 'tjProjectList', label: 'proName' }"
                :defaultKeys="defaultKeys"
                @changeKeys="changeCategoryKeys"
                :key="datekey"
              ></v-tree-transfer> -->
            <!-- <el-tree :data="data" show-checkbox node-key="proId" :props="defaultProps" :default-checked-keys="treeList"
                @check-change="handleCurrentChecked">
              </el-tree> -->
            </div>
            <!-- <el-button style="
                        width: 20px;
                        height: 100px;
                        margin-left: 10px;
                        margin-top: 20%;
                        font-size: 10px;
                      " type="primary" size="mini" @click="submit"><i style="font-size: 18px"
                  class="el-icon-d-arrow-right"></i></el-button> -->
            <!-- </div> -->
            <el-row :gutter="20" style="width: 100%">
              <el-col :span="8">
                <div
                  style="
                    text-align: center;
                    margin-bottom: 10px;
                    margin-top: 10px;
                  "
                >
                  项目列表
                </div>
                <el-input placeholder="输入关键字进行过滤" v-model="filterText">
                </el-input>
                <div class="tab3">
                  <el-tree
                    class="filter-tree"
                    v-loading="loading"
                    :data="Treedata"
                    :props="defaultProps"
                    show-checkbox
                    node-key="proId"
                    @check="handleCurrentChecked"
                    :default-checked-keys="checkedkey"
                    :filter-node-method="filterNode"
                    ref="tree"
                    :render-content="renderContent"
                  >
                  </el-tree>
                </div>
              </el-col>
              <el-col :span="6">
                <div
                  style="
                    text-align: center;
                    margin-bottom: 10px;
                    margin-top: 10px;
                  "
                >
                  明细项目列表
                </div>
                <div class="tab3">
                  <el-tree
                    class="filter-tree"
                    v-loading="loading"
                    :data="TreedataList"
                    node-key="proId"
                    :props="defaultProps"
                    :filter-node-method="filterNode"
                    show-checkbox
                    @check-change="handleCurrentChecked1"
                    :default-checked-keys="checkedListkey"
                    :render-content="renderContent"
                  >
                  </el-tree>
                </div>
              </el-col>
              <el-col :span="11">
                <div class="grid-content bg-purple">
                  <div
                    style="
                      text-align: center;
                      margin-bottom: 10px;
                      margin-top: 10px;
                    "
                  >
                    已选项目列表
                  </div>
                  <el-table
                    :data="DataList"
                    border
                    style="width: 100%"
                    height="400"
                    :span-method="objectSpanMethod"
                  >
                    <el-table-column prop="propinName" label="检查项目">
                    </el-table-column>
                    <el-table-column
                      prop="proName"
                      label="明细项目"
                      width="260px"
                    >
                    </el-table-column>
                    <el-table-column prop="proPrice" label="原价" width="56px">
                    </el-table-column>
                    <el-table-column
                      label="操作"
                      align="center"
                      fixed="right"
                      class-name="small-padding fixed-width"
                      width="50px"
                    >
                      <template slot-scope="scope">
                        <el-button
                          size="mini"
                          type="text"
                          icon="el-icon-delete"
                          @click="handleDelete(scope.row)"
                          title="删除"
                        ></el-button>
                      </template>
                    </el-table-column>
                  </el-table>
                  <el-collapse v-model="activeName" accordion v-if="list1">
                    <div>
                      <el-collapse-item title="请选择项目">
                        <el-table
                          :data="DataList"
                          border
                          style="width: 100%"
                          height="400"
                          :span-method="objectSpanMethod"
                        >
                          <el-table-column
                            prop="proName"
                            label="项目"
                            width="180"
                          >
                          </el-table-column>
                          <el-table-column prop="ordPrice" label="原价">
                          </el-table-column>
                        </el-table>
                      </el-collapse-item>
                    </div>
                  </el-collapse>
                  <h3 v-else style="font-weight: 600">
                    合计:{{ marryall }}元
                  </h3>
                </div>
              </el-col>
            </el-row>
          </div>
        </el-tab-pane>
      </el-tabs>
@@ -225,43 +709,77 @@
             </div> -->
          <template>
            <el-form :model="form" :inline="true" label-width="75px" style="margin-left:10px">
              <el-form-item label="体检类型" prop="tjType" style="margin-right: 20px">
                <el-select style="width: 160px" v-model="form.tjType" placeholder="请选择体检类型">
                  <el-option v-for="dict in dict.type.dict_team" :key="dict.value" :label="dict.label"
                    :value="parseInt(dict.value)"></el-option>
                </el-select>
              </el-form-item>
            <el-form
              :model="form"
              :inline="true"
              label-width="100px"
              style="margin-left: 10px"
            >
              <el-form-item label="应收金额" style="margin-right: 20px">
                <el-input placeholder="应收金额" :value="TotalPrice1 + '.00'" disabled style="width: 150px"></el-input>
                <el-input
                  placeholder="应收金额"
                  :value="TotalPrice1 + '.00'"
                  disabled
                ></el-input>
              </el-form-item>
              <!-- <el-form-item label="优惠折扣" style="margin-right: 20px">
               <el-input style="width: 100px" text="number" v-model="discount" :value="discount/100"></el-input>
                <el-input-number style="width: 140px" v-model="discount" :precision="2" :step="0.1" :max="10" :min="1"
                  @change="numberChange" :disabled="isfalse"></el-input-number>
              </el-form-item> -->
              <el-form-item label="实收金额" style="margin-right: 20px">
                <el-input placeholder="实收金额" v-model="TotalPrice" disabled style="width: 190px"></el-input>
              <el-form-item label="实收金额">
                <el-input
                  placeholder="实收金额"
                  v-model="TotalPrice"
                  disabled
                ></el-input>
              </el-form-item>
              <el-form-item>
                <el-button type="primary" @click="Package" size="mini">选择套餐</el-button>
                <el-button type="primary" @click="submitPrice" size="mini" :disabled="confirm">预约登记</el-button>
                <el-button type="primary" @click="Package" size="mini"
                  >选择套餐</el-button
                >
                <el-button type="primary" @click="resetpackage" size="mini"
                  >重置套餐</el-button
                >
                <el-button
                  type="primary"
                  @click="submitPrice"
                  size="mini"
                  :disabled="confirm"
                  >预约登记</el-button
                >
                <el-button
                  v-show="lishi"
                  type="primary"
                  @click="cope"
                  size="mini"
                  >一键复制</el-button
                >
                <el-button
                  type="primary"
                  @click="inputChanges"
                  v-show="lishi"
                  size="mini"
                  :disabled="confirm"
                  >历史体检记录</el-button
                >
              </el-form-item>
            </el-form>
          </template>
          <div style="text-align: center; margin-bottom: 10px; margin-right: 900px">
          <div style="text-align: center; margin-bottom: 10px">
            已选项目列表
          </div>
          <div style="
          <div
            style="
              padding: 0px 6px;
              border: 1px solid #e6ebf5;
              max-height: 420px;
              overflow: auto;
              width: 1020px;
              margin-left: 20px;
            ">
              width: 950px;
              margin-left: 25px;
            "
          >
            <el-collapse v-model="index" accordion>
              <div v-for="(item, index) in tableData1" :key="index">
                <el-collapse-item :name="index">
@@ -277,27 +795,46 @@
                      ".00元)"
                    }}
                  </template>
                  <el-table :data="item.list" border style="width: 100%" height="270">
                  <el-button
                    type="primary"
                    @click="candelete(item)"
                    style="margin: 5px"
                    >删 除</el-button
                  >
                  <el-table
                    :data="item.list"
                    border
                    style="width: 100%"
                    height="270"
                  >
                    <el-table-column prop="proName" label="项目" width="180">
                    </el-table-column>
                    <el-table-column prop="proType" label="性别" width="180">
                      <template slot-scope="scope" v-if="scope.row.proType == ''">
                        {{ scope.row.proType == '' ? "全部" : ""}}
                      <template
                        slot-scope="scope"
                        v-if="scope.row.proType == ''"
                      >
                        {{ scope.row.proType == "" ? "全部" : "" }}
                      </template>
                      <template slot-scope="scope" v-else>
                        <dict-tag :options="dict.type.sys_user_sex" :value="scope.row.proType" />
                        <dict-tag
                          :options="dict.type.sys_user_sex"
                          :value="scope.row.proType"
                        />
                      </template>
                    </el-table-column>
                    <el-table-column prop="ordPrice" label="应收金额">
                    </el-table-column>
                    <el-table-column prop="nowPrice" label="实收金额">
                    </el-table-column>
                     <el-table-column prop="proCheckMethod" label="空腹">
                    <el-table-column prop="proCheckMethod" label="空腹">
                      <template slot-scope="scope">
                        <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.proCheckMethod" />
                        <dict-tag
                          :options="dict.type.sys_yes_no"
                          :value="scope.row.proCheckMethod"
                        />
                      </template>
                    </el-table-column>
                  </el-table>
                </el-collapse-item>
              </div>
@@ -314,22 +851,23 @@
                    </el-table-column>
                    <el-table-column prop="nowPrice" label="实收金额">
                    </el-table-column>
                     <el-table-column prop="isEat" label="空腹">
                    <el-table-column prop="proCheckMethod" label="空腹">
                    </el-table-column>
                  </el-table>
                </el-collapse-item>
              </div>
            </el-collapse>
          </div>
          <div style="
          <div
            style="
              position: absolute;
              bottom: 100px;
              left: 500px;
              width: 700px;
              display: none;
            ">
            "
          >
            <div id="printBill">
              <div style="font-size: 13px; color: #000000">
                <div style="width: 48%; margin-top: 10px">
@@ -381,17 +919,40 @@
      </el-col>
    </el-row>
    <el-dialog title="导检单预览" :visible.sync="dialogVisibles" :close-on-click-modal="false">
    <el-dialog
      title="导检单预览"
      :visible.sync="dialogVisibles"
      :close-on-click-modal="false"
    >
      <div class="main">
        <iframe id="printIframe" :src="url" frameborder="0" style="width: 100%; height: 100%"></iframe>
        <iframe
          id="printIframe"
          :src="url"
          frameborder="0"
          style="width: 100%; height: 100%"
        ></iframe>
      </div>
    </el-dialog>
    <el-dialog
      title="提示"
      :visible.sync="dialogVisiblese"
      width="30%"
      :before-close="handleClose"
    >
      <span>是否复制最近一次的体检项目?</span>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogVisiblese = false">取 消</el-button>
        <el-button type="primary" @click="copes">确 定</el-button>
      </span>
    </el-dialog>
    <historyTj :cusIdCard="form.cusIdcard" ref="historyTj"></historyTj>
  </div>
</template>
  
<script>
import printJS from "print-js";
import { getInfo } from "@/api/login";
import { getZhList, getlistByZhId } from "@/api/system/package";
import {
  deptTreeSelect,
  projectGetList,
@@ -399,14 +960,20 @@
  getPackageListName,
  getaddtTransition,
  getTransitionList,
  getGuide,
  getProParentIdDxList,
  getProSonDxList,
  getaddTj,
  getHistryTjOrderByCusIdCard,
  getHistryTjOrderProByCusIdCard,
  delTbBycusCardIdAndProId,
} from "@/api/system/tijian";
import { MessageBox } from "element-ui";
import VTreeTransfer from '../tijian/TreeTransfer.vue'
import VTreeTransfer from "../tijian/TreeTransfer.vue";
import historyTj from "@/components/historyTj/index";
export default {
  components: {
    VTreeTransfer
    VTreeTransfer,
    historyTj,
  },
  dicts: [
    "dict_user_national",
@@ -423,6 +990,16 @@
  name: "Tijian",
  data() {
    let checkPhoneNum = (rule, value, callback) => {
      let patter = new RegExp(/^1\s*[3456789]\s*(\d\s*){9}$/);
      if (value == "" && value == undefined && !value) {
        return callback("");
      } else if (value != undefined && value != "") {
        return callback();
      } else if (!patter.test(value)) {
        return callback("");
      }
    };
    // const isCnNewID = (rule, value, callback) => {
    //   var arrExp = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; //加权因子
    //   var arrValid = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2]; //校验码
@@ -448,6 +1025,18 @@
    //   }
    // };
    return {
      marryall: 0,
      marryalls: 0,
      filterText: "",
      filterage: "",
      proIdList: [],
      tableDatas: [],
      packageList: [],
      checkedkeys: [],
      dialogVisiblese: false,
      lishi: false,
      table: false,
      HistoryList: {},
      index: 0,
      taocan: false,
      proIds: "",
@@ -473,6 +1062,7 @@
      /** 照相机弹窗模块-start */
      videoWidth: 200,
      videoHeight: 200,
      activeNames: "first",
      // canvasWidth:300,
      // canvasHeight:300,
      imgSrc: "",
@@ -532,10 +1122,24 @@
      // 显示搜索条件
      showSearch: true,
      // 树状形状
      Treedata: [],
      TreedataList: [],
      DataLists: [],
      treedataList: [],
      checkedkey: [],
      checkedListkey: [],
      defaultProps: {
        children: "tjProjectList",
        children: [],
        label: "proName",
      },
      packagedataList: [],
      defaultpackProps: {
        children: [],
        label: "proName",
      },
      defaultProp: {
        children: [],
        label: "zhmc",
      },
      formPacId: "",
      dXData: [],
@@ -587,24 +1191,29 @@
      },
      // 表单校验
      rules: {
        cusName: [{ required: true, message: "姓名不能为空", trigger: "blur" }],
        cusName: [
          { required: true, validator: checkPhoneNum, trigger: "blur" },
        ],
        cusSex: [
          { required: true, message: "性别不能为空", trigger: "change" },
          { required: true, validator: checkPhoneNum, trigger: "change" },
        ],
        category: [
          { required: true, validator: checkPhoneNum, trigger: "change" },
        ],
        cusBrithday: [
          { required: true, message: "出生日期不能为空", trigger: "blur" },
          { required: true, validator: checkPhoneNum, trigger: "blur" },
        ],
        // cusAddr: [
        //   { required: true, message: "现居住地址不能为空", trigger: "blur" },
        // ],
        cusPhone: [
          { required: true, message: "联系电话不能为空", trigger: "blur" },
          { required: true, validator: checkPhoneNum, trigger: "blur" },
        ],
        reservationTime: [
          { required: true, message: "预约日期不能为空", trigger: "change" },
          { required: true, validator: checkPhoneNum, trigger: "change" },
        ],
        timeRegion: [
          { required: true, message: "时间不能为空", trigger: "blur" },
          { required: true, validator: checkPhoneNum, trigger: "blur" },
        ],
        // cusIdcard: [
        //   { required: true, message: "请输入身份证号", trigger: "blur" },
@@ -615,21 +1224,27 @@
        //   },
        // ],
        cusIdcard: [
          { required: true, message: "身份证号不能为空", trigger: "blur" },
          { required: true, validator: checkPhoneNum, trigger: "blur" },
          {
            pattern: /^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/,
            message: '请输入正确的身份证号',
            trigger: 'blur',
            validator: this.validSjh
          }
            validator: checkPhoneNum,
            trigger: "blur",
            validator: this.validSjh,
          },
        ],
      },
    };
  },
  watch: {
    filterText(val) {
      this.$refs.tree.filter(val);
    },
    filterage(val) {
      this.$refs.treas.filter(val);
    },
  },
  created() {
    this.getList1();
    this.getData();
  },
  methods: {
    inputChange() {
@@ -658,17 +1273,164 @@
            d.getFullYear() -
            birthdays.getFullYear() -
            (d.getMonth() < birthdays.getMonth() ||
              (d.getMonth() == birthdays.getMonth() &&
                d.getDate() < birthdays.getDate())
            (d.getMonth() == birthdays.getMonth() &&
              d.getDate() < birthdays.getDate())
              ? 1
              : 0);
          this.form.cusSex = sex;
          this.form.cusBrithday = birthday;
          this.form.age = age;
        }
        // let cusIdCard = this.form.cusIdcard;
        // getHistryTjOrderByCusIdCard(cusIdCard).then((res) => {
        //   if (res.code == 200) {
        this.table = true;
        this.lishi = true;
        //     this.HistoryList = res.data;
        //   }
        // });
      } else {
        // return this.$message.error("请输入正确的身份证号!");;
      }
    },
    inputChanges() {
      this.$refs.historyTj.getlist();
    },
    candelete(item) {
      let data = {
        cusCardId: this.form.cusIdcard,
        proId: item.proPrantId,
      };
      delTbBycusCardIdAndProId(data).then((res) => {
        getTransitionList(this.form.cusIdcard).then((response) => {
          this.tableData1 = response.data;
          this.TotalPrice1 = 0;
          if (this.tableData1) {
            this.tableData1.forEach((item) => {
              this.TotalPrice1 += item.nowPrice;
              if (item.pacName === null) {
                item.pacName = "单项";
              }
              if (item.pacName == "单项") {
                item.list.forEach((item9) => {
                  this.treeList.push(item9.proId);
                });
              }
              this.pacName = item.pacName;
            });
            const r = /^\+?[0-9][0-9]*$/; //正整数(可以0打头)
            let TotalPrice = this.TotalPrice1 * (this.discount / 10);
            if (r.test(TotalPrice)) {
              this.TotalPrice = TotalPrice + ".00";
            } else {
              this.TotalPrice = TotalPrice;
            }
            this.list1 = false;
            this.list3 = true;
          } else {
            this.list1 = true;
            this.TotalPrice = "0.00";
          }
        });
      });
    },
    filterNode(value, data) {
      if (!value) return true;
      // return data.proName.indexOf(value) !== -1;
      if (data.proName.indexOf(value) !== -1) {
        return data.proName.indexOf(value) !== -1;
      } else {
        return data.proEngName.indexOf(value) !== -1;
      }
    },
    filterpackage(value, data) {
      if (!value) return true;
      if (data.zhmc.indexOf(value) !== -1) {
        return data.zhmc.indexOf(value) !== -1;
      } else {
        return data.pym.indexOf(value) !== -1;
      }
    },
    cope() {
      let cusIdCard = this.form.cusIdcard;
      getHistryTjOrderProByCusIdCard(cusIdCard).then((res) => {
        this.copeList = res.data;
        if (res.msg != "暂无历史记录") {
          this.dialogVisiblese = true;
        } else {
          this.$message.warning("暂无历史体检记录!");
        }
      });
    },
    copes() {
      let cusIdCard = this.form.cusIdcard;
      getHistryTjOrderProByCusIdCard(cusIdCard).then((res) => {
        this.tableDatas = res.data;
        if (this.form.cusIdcard) {
          var cusId = this.form.cusIdcard;
        } else {
          this.$message.warning("请先填写信息,再选体检内容");
        }
        let _this = this;
        if (this.tableDatas.length != 0) {
          this.tableDatas.forEach((item) => {
            if (item.pacId != null) {
              _this.pacId = item.pacId;
            } else {
              item.list.forEach((items) => {
                _this.proIdList.push(items.proId);
              });
            }
          });
        } else {
          _this.pacId = "";
        }
        let data = {
          cusId,
          pacId: _this.pacId,
          proIds: _this.proIdList,
        };
        getaddtTransition(data).then((response) => {
          if (response.msg === "操作成功") {
            let cusId = this.form.cusIdcard;
            getTransitionList(cusId).then((response) => {
              this.tableData1 = response.data;
              // this.checkSelectable();
              this.TotalPrice1 = 0;
              if (this.tableData1) {
                this.tableData1.forEach((item) => {
                  this.TotalPrice1 += item.nowPrice;
                  this.TotalPrice = this.TotalPrice1 + ".00";
                  if (item.pacName === null) {
                    item.pacName = "单项";
                  }
                  this.pacName = item.pacName;
                });
                this.list1 = false;
                this.list3 = true;
              } else {
                this.list1 = true;
                this.TotalPrice = "0.00";
              }
            });
          }
        });
        this.taocan = false;
      });
      this.dialogVisiblese = false;
    },
    handleClose(done) {
      this.$confirm("确认关闭?")
        .then((_) => {
          done();
        })
        .catch((_) => {});
    },
    getList1() {
      getInfo().then((response) => {
@@ -695,7 +1457,7 @@
          this.loading = false;
        });
      }
      this.getData();
      // this.getData();
    },
    getData() {
      /** 查询部门下拉树结构 */
@@ -795,9 +1557,9 @@
                      }
                      this.pacName = item.pacName;
                      if (item.pacName == "单项") {
                        item.list.forEach(item9 => {
                          this.treeList.push(item9.proId)
                        })
                        item.list.forEach((item9) => {
                          this.treeList.push(item9.proId);
                        });
                      }
                    });
                    this.list1 = false;
@@ -876,22 +1638,54 @@
    //     return true;
    //   }
    // },
    resetpackage() {
      if (this.form.cusIdcard) {
        var cusId = this.form.cusIdcard;
      } else {
        this.$message.warning("请先填写信息,再选体检内容");
      }
      let _this = this;
      _this.pacId = "";
      this.proIds = [];
      let data = {
        cusId,
        pacId: _this.pacId,
        proIds: this.proIds,
      };
      getaddtTransition(data).then((response) => {
        if (response.code === 200) {
          let cusId = this.form.cusIdcard;
          this.proIds = [];
          getTransitionList(cusId).then((response) => {
            this.tableData1 = response.data;
            this.TotalPrice1 = 0;
            if (this.tableData1.length >= 1) {
              this.list1 = false;
              this.list3 = true;
            } else {
              this.list1 = true;
              this.TotalPrice = "0.00";
            }
          });
        }
      });
    },
    Package() {
      this.taocan = true;
      // this.getData();
      let cusSex = this.form.cusSex;
      this.datekey = Date.now()
      this.activeNames = "first";
      this.datekey = Date.now();
      //全部套餐
      this.loading = true;
      deptTreeSelect(cusSex).then((response) => {
        this.newpacName = response.rows;
        try {
          this.newpacName.forEach((item3) => {
            this.tableData1.forEach((item4) => {
              item4.list.forEach((item6) => {
                if (item6.pacName === item3.pacName) {
                  this.$nextTick(() => {
                    this.$refs.tb.toggleRowSelection(item3, true);
                  });
@@ -900,9 +1694,10 @@
              });
            });
          });
        } catch (error) { }
        } catch (error) {}
        this.loading = false;
      });
      // this.getDataList();
    },
    // 折扣
@@ -961,29 +1756,34 @@
      this.single = selection.length !== 1;
      this.multiple = !selection.length;
      if (selection[0]) {
        this.DataList = [];
        // this.DataList = [];
        // this.data = JSON.parse(JSON.stringify(this.dXData));
        selection[0].tjProjectList.forEach((selectionitem) => {
          this.treedataList.forEach((item) => {
          this.Treedata.forEach((item) => {
            if (selectionitem.proName == item.proName) {
              item.disabled = true;
              item.tjProjectList = [];
            }
            if (item.tjProjectList) {
              item.tjProjectList.forEach((item1) => {
                if (selectionitem.proName == item1.proName) {
                  item1.disabled = true;
                  item1.tjProjectList = [];
                }
                if (item1.tjProjectList) {
                  item1.tjProjectList.forEach((item2) => {
                    if (selectionitem.proName == item2.proName) {
                      item2.disabled = true;
                      item2.tjProjectList = [];
                    }
                  });
                }
              });
            // if (item.tjProjectList) {
            //   item.tjProjectList.forEach((item1) => {
            //     if (selectionitem.proName == item1.proName) {
            //       item1.disabled = true;
            //       item1.tjProjectList = [];
            //     }
            //     if (item1.tjProjectList) {
            //       item1.tjProjectList.forEach((item2) => {
            //         if (selectionitem.proName == item2.proName) {
            //           item2.disabled = true;
            //           item2.tjProjectList = [];
            //         }
            //       });
            //     }
            //   });
            // }
          });
          this.TreedataList.forEach((item3) => {
            if (item3.proParentId == selectionitem.proId) {
              item.disabled = true;
            }
          });
        });
@@ -992,27 +1792,342 @@
        return;
      }
    },
    handleClick(tab, event) {
      if (this.activeNames == "second") {
        this.DataList = [];
        this.getDataList();
      } else if (this.activeNames == "third") {
        this.DataLists = [];
        getZhList().then((response) => {
          if (response.data) {
            this.packageList = response.data;
            this.checkedkeys.push(this.packageList[0].id);
            let datas = {
              zhId: this.packageList[0].id,
            };
            getlistByZhId(datas).then((res) => {
              this.packagedataList = res.data.tjProjectList;
              for (var i = 0; i < this.packagedataList.length; i++) {
                let proId = this.packagedataList[i].proId;
                getProSonDxList(proId).then((res) => {
                  this.TreedataList = res.data.list;
                  this.TreedataList.forEach((item) => {
                    this.DataLists.push(item);
                    if (this.DataLists.length >= 1) {
                      this.marryalls = 0;
                      this.DataLists.forEach((item1) => {
                        this.marryalls += item1.proPrice;
                        this.packagedataList.forEach((item3) => {
                          if (item1.proParentId == item3.proId) {
                            item1.propinName = item3.proName;
                          }
                        });
                      });
                    }
                  });
                });
              }
            });
          }
          this.loading = false;
        });
      }
    },
    renderContent(h, { node, data, store }) {
      return (
        <span class="custom-tree-node">
          <span>{node.label}</span>
          <span>({data.proPrice}元)</span>
        </span>
      );
    },
    renderContents(h, { node, data, store }) {
      return (
        <span class="custom-tree-node">
          <span>{node.label}</span>
          <span>({data.price}元)</span>
        </span>
      );
    },
    getDataList() {
      this.loading = true;
      getProParentIdDxList().then((response) => {
        this.Treedata = response.data.list;
        if (this.tableData[0]) {
          this.tableData[0].tjProjectList.forEach((selectionitem) => {
            this.Treedata.forEach((item) => {
              if (selectionitem.proId == item.proId) {
                item.disabled = true;
              }
            });
          });
        }
        if (this.DataLists.length != 0) {
          this.DataLists.forEach((selectionitem) => {
            this.Treedata.forEach((item) => {
              if (selectionitem.propinName == item.proName) {
                item.disabled = true;
              }
            });
          });
        }
        // this.checkedkey.push(this.Treedata[0].proId);
        // let proId = this.Treedata[0].proId;
        // getProSonDxList(proId).then((res) => {
        //   this.TreedataList = res.data.list;
        //   this.TreedataList.forEach((item) => {
        //     this.checkedListkey.push(item.proId);
        //     this.DataList.push(item);
        //     this.DataList.forEach((item) => {
        //       item.propinName = this.Treedata[0].proName;
        //     });
        //   });
        //   this.TotalPrice1 = 0;
        //   this.marryall = 0;
        //   if (this.DataList.length != 0) {
        //     this.list1 = false;
        //     this.DataList.forEach((item) => {
        //       this.TotalPrice1 = item.proPrice + this.TotalPrice1;
        //       this.marryall += item.proPrice;
        //     });
        //   }
        // });
        this.loading = false;
      });
    },
    handlepackage(data, checked, checkedNodes) {
      if (checked.checkedNodes.length != 0) {
        this.$refs.treas.setCheckedKeys([data.id]);
        let datas = {
          zhId: data.id,
        };
        getlistByZhId(datas).then((res) => {
          this.packagedataList = res.data.tjProjectList;
          for (var i = 0; i < this.packagedataList.length; i++) {
            let proId = this.packagedataList[i].proId;
            getProSonDxList(proId).then((res) => {
              this.TreedataList = res.data.list;
              this.TreedataList.forEach((item) => {
                this.DataLists.push(item);
                if (this.DataLists.length >= 1) {
                  this.marryalls = 0;
                  this.DataLists.forEach((item1) => {
                    this.marryalls += item1.proPrice;
                    this.packagedataList.forEach((item3) => {
                      if (item1.proParentId == item3.proId) {
                        item1.propinName = item3.proName;
                      }
                    });
                  });
                }
              });
            });
          }
        });
      } else if (checked.checkedNodes.length == 0) {
        for (var i = 0; i < data.tjProjectList.length; i++) {
          let proId = data.tjProjectList[i].proId;
          getProSonDxList(proId).then((res) => {
            this.TreedataList = res.data.list;
            this.TreedataList.forEach((item) => {
              this.DataLists.forEach((item1, index) => {
                if (item.proId == item1.proId) {
                  this.DataLists.splice(index, 1);
                }
              });
            });
            this.marryalls = 0
            if(this.DataLists.length != 0){
              this.DataLists.forEach((item1, index) => {
              this.marryalls += item1.proPrice;
              })
            }
          });
        }
      }
    },
    objectspanmethod({ row, column, rowIndex, columnIndex }) {
      let fields = ["propinName"];
      let cellValue = row[column.property];
      if (cellValue && fields.includes(column.property)) {
        let prevRow = this.DataLists[rowIndex - 1];
        let nextRow = this.DataLists[rowIndex + 1];
        if (prevRow && prevRow[column.property] === cellValue) {
          return { rowspan: 0, colspan: 0 };
        } else {
          let countRowspan = 1;
          while (nextRow && nextRow[column.property] === cellValue) {
            nextRow = this.DataLists[++countRowspan + rowIndex];
          }
          if (countRowspan > 1) {
            return { rowspan: countRowspan, colspan: 1 };
          }
        }
      }
      // if (columnIndex == 3) {
      //   let rowspan = 0;
      //   this.DataLists.forEach((element) => {
      //     if (element.propinName === row.propinName) {
      //       rowspan++;
      //     }
      //   });
      //   return [rowspan, 1];
      // }
    },
    // 点击获取每个树节点
    handleCurrentChecked(data, checked, checkedNodes) {
      if (checked === true) {
        this.DataList.push(data);
      } else {
        this.DataList.pop(data);
      }
      this.proIds = [];
      if (this.DataList.length != 0) {
        this.DataList.forEach((item) => {
          this.proIds.push(item.proId);
      this.dataObj = data;
      if (checked.checkedNodes.length != 0) {
        this.$refs.tree.setCheckedKeys([data.proId]);
        let proId = data.proId;
        getProSonDxList(proId).then((res) => {
          this.TreedataList = res.data.list;
          this.TreedataList.forEach((item) => {
            this.checkedListkey.push(item.proId);
            this.DataList.push(item);
            this.spliceData();
            this.DataList.forEach((item1) => {
              if (item1.proParentId == data.proId) {
                item1.propinName = data.proName;
              }
            });
          });
          this.TotalPrice1 = 0;
          this.marryall = 0;
          if (this.DataList.length != 0) {
            this.list1 = false;
            this.DataList.forEach((item) => {
              this.TotalPrice1 = item.proPrice + this.TotalPrice1;
              this.marryall += item.proPrice;
            });
          }
        });
      } else {
        this.proIds = [];
      } else if (checked.checkedNodes.length == 0) {
        let proId = data.proId;
        getProSonDxList(proId).then((res) => {
          this.TreedataList = res.data.list;
          this.checkedListkey = [];
        });
      }
    },
    changeCategoryKeys(val) {
      this.proIds = [];
      this.proIds = val
    spliceData() {
      for (var i = 0; i < this.DataList.length; i++) {
        for (var j = i + 1; j < this.DataList.length; j++) {
          if (this.DataList[i].proId == this.DataList[j].proId) {
            //如果第一个等于第二个,splice方法删除第二个
            this.DataList.splice(j, 1);
            j--;
          }
        }
      }
      return this.DataList;
    },
    // 点击获取每个树节点
    handleCurrentChecked1(data, checked, checkedNodes) {
      if (checked == false) {
        this.DataList.forEach((item, index) => {
          if (item.proId == data.proId) {
            this.DataList.splice(index, 1);
            this.TotalPrice1 = 0;
            this.marryall = 0;
            this.DataList.forEach((item1) => {
              this.TotalPrice1 = item1.proPrice + this.TotalPrice1;
              this.marryall += item1.proPrice;
            });
          }
        });
      } else if (checked == true) {
        this.DataList.push(data);
        this.DataList.forEach((item1) => {
          if (item1.proParentId == this.dataObj.proId) {
            item1.propinName = this.dataObj.proName;
          }
        });
        this.spliceData();
        this.TotalPrice1 = 0;
        this.marryall = 0;
        this.DataList.forEach((item1) => {
          this.TotalPrice1 = item1.proPrice + this.TotalPrice1;
          this.marryall += item1.proPrice;
        });
      }
    },
    handleDel(row) {
      this.DataLists.forEach((item, index) => {
        if (item.proId == row.proId) {
          this.DataLists.splice(index, 1);
          this.marryalls = 0;
          this.DataLists.forEach((item1) => {
            this.marryalls += item1.proPrice;
          });
        }
      });
    },
    /** 删除按钮操作 */
    handleDelete(row) {
      this.DataList.forEach((item, index) => {
        if (item.proId == row.proId) {
          this.DataList.splice(index, 1);
          this.marryall = 0;
          this.TotalPrice1 = 0;
          this.DataList.forEach((item1) => {
            this.TotalPrice1 = item1.proPrice + this.TotalPrice1;
            this.marryall += item1.proPrice;
          });
        }
      });
    },
    //  // 默认接受四个值 { 当前行的值, 当前列的值, 行的下标, 列的下标 }
    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
      let fields = ["propinName"];
      let cellValue = row[column.property];
      if (cellValue && fields.includes(column.property)) {
        let prevRow = this.DataList[rowIndex - 1];
        let nextRow = this.DataList[rowIndex + 1];
        if (prevRow && prevRow[column.property] === cellValue) {
          return { rowspan: 0, colspan: 0 };
        } else {
          let countRowspan = 1;
          while (nextRow && nextRow[column.property] === cellValue) {
            nextRow = this.DataList[++countRowspan + rowIndex];
          }
          if (countRowspan > 1) {
            return { rowspan: countRowspan, colspan: 1 };
          }
        }
      }
    },
    // 点击获取每个树节点
    // handleCurrentChecked(data, checked, checkedNodes) {
    //   if (checked === true) {
    //     this.DataList.push(data);
    //   } else {
    //     this.DataList.pop(data);
    //   }
    //   this.proIds = [];
    //   if (this.DataList.length != 0) {
    //     this.DataList.forEach((item) => {
    //       this.proIds.push(item.proId);
    //     });
    //   } else {
    //     this.proIds = [];
    //   }
    // },
    // changeCategoryKeys(val) {
    //   this.proIds = [];
    //   this.proIds = val;
    // },
    // 项目提交
    submit() {
@@ -1029,6 +2144,17 @@
        });
      } else {
        _this.pacId = "";
      }
      this.proIds = [];
      if (this.DataList.length != 0) {
        this.DataList.forEach((item) => {
          this.proIds.push(item.proId);
        });
      }
      if (this.DataLists.length != 0) {
        this.DataLists.forEach((item) => {
          this.proIds.push(item.proId);
        });
      }
      let data = {
        cusId,
@@ -1193,6 +2319,12 @@
  display: block;
}
.tab3 {
  max-height: 400px;
  overflow-y: auto;
  border: 1px solid #d9d9d9;
}
.el-col-8 {
  width: 330px;
}