qinxianzhangyao
2024-04-26 47a7c6d2458ebd3c4722cbd1938d3f28a99e78ad
src/views/system/tijianall/index.vue
@@ -1,135 +1,447 @@
<template>
  <div class="app-container">
    <div style="width: 1050px">
      <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>
    <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="84px"
          >
            <el-row>
              <el-col :span="5">
                <el-form-item
                  style="display: flex"
                  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.cusName" placeholder="请输入姓名" />
                </el-form-item>
              </el-col>
              <el-col :span="6">
                <el-form-item
                  label="证件类型"
                  prop="idType"
                  style="display: flex"
                >
                  <el-select 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-col>
              <el-col :span="7">
                <el-form-item
                  style="display: flex"
                  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-col>
            </el-row>
            <el-row>
              <el-col :span="5">
                <el-form-item
                  label="民族"
                  prop="cusNational"
                  style="display: flex"
                >
                  <el-select
                    filterable
                    v-model="form.cusNational"
                    placeholder="请选择民族"
                  >
                    <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-col>
              <el-col :span="6">
                <el-form-item label="性别" prop="cusSex" style="display: flex">
                  <el-select
                    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>
              </el-col>
              <el-col :span="5">
                <el-form-item label="年龄" prop="age" style="display: flex">
                  <el-input v-model="form.age" />
                </el-form-item>
              </el-col>
              <el-col :span="2">
                <el-form-item prop="ageUnit">
                  <el-select
                    v-model="form.ageUnit"
                    @change="formchang"
                    style="width: 80%"
                  >
                    <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-col>
            </el-row>
        <!-- <input name="ReadBlockBtn" type="button" size="5px"  @click="readblock" value="读卡" /> -->
        <!-- <el-form-item label="出生日期" prop="cusBrithday">
            <!-- <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-row>
              <el-col :span="5">
                <el-form-item
                  label="婚姻"
                  prop="cusMarryStatus"
                  style="display: flex"
                >
                  <el-select
                    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-col>
              <el-col :span="6">
                <el-form-item
                  label="体检类别"
                  prop="category"
                  style="display: flex"
                >
                  <el-select
                    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-col>
              <el-col :span="7">
                <el-form-item
                  style="display: flex"
                  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-col>
            </el-row>
            <el-row>
              <el-col :span="5">
                <el-form-item
                  label="体检类型"
                  prop="tjType"
                  style="display: flex"
                >
                  <el-select 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-col>
              <el-col :span="6">
                <el-form-item label="职业" prop="career" style="display: flex">
                  <el-select
                    filterable
                    :disabled="isDisabled"
                    v-model="form.career"
                    placeholder="请输入职业"
                  >
                    <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-col>
              <el-col :span="7">
                <el-form-item
                  label="邮箱"
                  prop="cusEmail"
                  style="display: flex"
                >
                  <el-input v-model="form.cusEmail" placeholder="请输入邮箱" />
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="5">
                <el-form-item
                  label="现住址"
                  prop="cusAddr"
                  style="display: flex"
                >
                  <el-input
                    v-model="form.cusAddr"
                    placeholder="请输入现居住地址"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="6">
                <el-form-item
                  label="工作单位"
                  prop="company"
                  style="display: flex"
                >
                  <el-input
                    v-model="form.company"
                    placeholder="请输入工作单位"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="7">
                <el-form-item label="卡号" prop="indexCard">
                  <el-input v-model="form.indexCard" placeholder="请输入卡号" />
                </el-form-item>
              </el-col>
            </el-row>
            <!-- <el-form-item label="户口地址" prop="cusAddr">
              <el-input v-model="form.cusAddr" placeholder="请输入户口地址" />
            </el-form-item> -->
        <!-- <el-form-item label="邮政编码" prop="cusPostcode">
            <!-- <el-form-item label="邮政编码" prop="cusPostcode">
              <el-input
                v-model="form.cusPostcode"
                placeholder="请输入邮政编码"
              />
            </el-form-item> -->
        <!-- <el-form-item label="索引卡号" prop="indexCard">
            <!-- <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-button style="margin-left: 155px" type="primary" @click="Package" size="mini">选择套餐</el-button>
      </el-form>
    </div>
    <el-dialog title="选择套餐" :visible.sync="taocan" width="42%" height="700px">
      <el-tabs type="border-card" style="height: 538px; margin: 0 10px; width: 100%">
            <el-row>
              <el-col :span="5">
                <el-form-item
                  label="部门"
                  prop="department"
                  style="display: flex"
                >
                  <el-input
                    v-model="form.department"
                    placeholder="请输入部门"
                  />
                </el-form-item>
              </el-col>
              <el-col :span="6">
                <el-form-item
                  label="时间"
                  prop="timeRegion"
                  style="display: flex"
                >
                  <el-select
                    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-col>
              <el-col :span="7">
                <el-form-item label="预约日期" prop="reservationTime">
                  <el-date-picker
                    v-model="form.reservationTime"
                    type="date"
                    value-format="yyyy-MM-dd"
                    placeholder="选择日期"
                    :picker-options="setDisabled"
                  >
                  </el-date-picker>
                </el-form-item>
              </el-col>
            </el-row>
          </el-form>
        </div>
      </el-col>
    </el-row>
    <el-dialog
      title="选择套餐"
      :visible.sync="taocan"
      width="59%"
      height="700px"
    >
      <el-tabs
        type="border-card"
        style="height: 538px; margin: 0 10px; width: 100%"
        @tab-click="handleClick"
      >
        <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
            :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="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)"
@@ -151,19 +463,131 @@
        </el-tab-pane>
        <el-tab-pane label="单项">
          <div class="tab8">
            <div class="tab7">
              <el-tree :data="data" show-checkbox node-key="proId" :props="defaultProps" :default-checked-keys="treeList"
            <!-- <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> -->
              </el-tree> -->
            <!-- </div> -->
            <el-row  :gutter="20">
              <el-col :span="6">
                <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"
                  >
                  </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"
                  >
                  </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>
                </div>
              </el-col>
            </el-row>
          </div>
        </el-tab-pane>
      </el-tabs>
@@ -218,15 +642,19 @@
             </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="75px"
              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
                  style="width: 150px"
                ></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>
@@ -234,25 +662,57 @@
                  @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-input
                  placeholder="实收金额"
                  v-model="TotalPrice"
                  disabled
                  style="width: 190px"
                ></el-input>
              </el-form-item>
              <el-form-item>
                <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="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;
            ">
            "
          >
            <el-collapse v-model="index" accordion>
              <div v-for="(item, index) in tableData1" :key="index">
                <el-collapse-item :name="index">
@@ -268,27 +728,40 @@
                      ".00元)"
                    }}
                  </template>
                  <el-table :data="item.list" border style="width: 100%" height="270">
                  <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>
@@ -305,22 +778,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">
@@ -372,11 +846,33 @@
      </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>
  
@@ -390,12 +886,20 @@
  getPackageListName,
  getaddtTransition,
  getTransitionList,
  getGuide,
  getProParentIdDxList,
  getProSonDxList,
  getaddTj,
  getHistryTjOrderByCusIdCard,
  getHistryTjOrderProByCusIdCard,
} from "@/api/system/tijian";
import { MessageBox } from "element-ui";
import VTreeTransfer from "../tijian/TreeTransfer.vue";
import historyTj from "@/components/historyTj/index";
export default {
  components: {
    VTreeTransfer,
    historyTj,
  },
  dicts: [
    "dict_user_national",
    "dict_user_marry",
@@ -411,6 +915,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]; //校验码
@@ -436,6 +950,13 @@
    //   }
    // };
    return {
      filterText: "",
      proIdList: [],
      tableDatas: [],
      dialogVisiblese: false,
      lishi: false,
      table: false,
      HistoryList: {},
      index: 0,
      taocan: false,
      proIds: "",
@@ -457,6 +978,7 @@
      src: "",
      url: "",
      dialogVisible: false,
      datekey: Date.now(),
      /** 照相机弹窗模块-start */
      videoWidth: 200,
      videoHeight: 200,
@@ -485,6 +1007,7 @@
      TotalPrice1: 0,
      discount: 10,
      newpacName: [],
      defaultKeys: [],
      // 所有体检项目·
      allpackageList: [],
      tjProjectList: [],
@@ -518,9 +1041,13 @@
      // 显示搜索条件
      showSearch: true,
      // 树状形状
      data: [],
      Treedata: [],
      TreedataList: [],
      treedataList: [],
      checkedkey: [],
      checkedListkey: [],
      defaultProps: {
        children: "tjProjectList",
        children: [],
        label: "proName",
      },
      formPacId: "",
@@ -573,24 +1100,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" },
@@ -601,21 +1133,24 @@
        //   },
        // ],
        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);
    },
  },
  created() {
    this.getList1();
    this.getData();
  },
  methods: {
    inputChange() {
@@ -644,17 +1179,110 @@
            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();
    },
    filterNode(value, data) {
      if (!value) return true;
      return data.proName.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) => {
@@ -681,14 +1309,14 @@
          this.loading = false;
        });
      }
      this.getData();
      // this.getData();
    },
    getData() {
      /** 查询部门下拉树结构 */
      projectGetList().then((response) => {
        this.data = response.data.list;
        this.dXData = response.data;
        this.treedataList = response.data.list;
        this.dXData = response.data.list;
        return;
      });
    },
@@ -781,9 +1409,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;
@@ -865,18 +1493,17 @@
    Package() {
      this.taocan = true;
      // this.getData();
      let cusSex = this.form.cusSex;
      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);
                  });
@@ -885,9 +1512,10 @@
              });
            });
          });
        } catch (error) { }
        } catch (error) {}
        this.loading = false;
      });
      // this.getDataList();
    },
    // 折扣
@@ -946,54 +1574,214 @@
      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.data.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;
            }
          });
        });
      } else {
        this.data = JSON.parse(JSON.stringify(this.dXData));
        this.treedataList = JSON.parse(JSON.stringify(this.dXData));
        return;
      }
    },
    handleClick(tab, event) {
      if (tab.label == "单项") {
        this.DataList =[]
        this.getDataList();
      }
    },
    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;
              }
            });
          });
        }
        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;
          if (this.DataList.length != 0) {
            this.list1 = false;
            this.DataList.forEach((item) => {
              this.TotalPrice1 = item.proPrice + this.TotalPrice1;
            });
          }
        });
        this.loading = false;
      });
    },
    // 点击获取每个树节点
    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;
          if (this.DataList.length != 0) {
            this.list1 = false;
            this.DataList.forEach((item) => {
              this.TotalPrice1 = item.proPrice + this.TotalPrice1;
            });
          }
        });
      } else {
        this.proIds = [];
      } else if (checked.checkedNodes.length == 0) {
        let proId = data.proId;
        getProSonDxList(proId).then((res) => {
          this.TreedataList = res.data.list;
          this.checkedListkey = [];
        });
      }
    },
    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.DataList.forEach((item1) => {
              this.TotalPrice1 = item1.proPrice + this.TotalPrice1;
            });
          }
        });
      } 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.DataList.forEach((item1) => {
          this.TotalPrice1 = item1.proPrice + this.TotalPrice1;
        });
      }
    },
    /** 删除按钮操作 */
    handleDelete(row) {
      this.DataList.forEach((item, index) => {
        if (item.proId == row.proId) {
          this.DataList.splice(index, 1);
          this.TotalPrice1 = 0;
          this.DataList.forEach((item1) => {
            this.TotalPrice1 = item1.proPrice + this.TotalPrice1;
          });
        }
      });
    },
     //  // 默认接受四个值 { 当前行的值, 当前列的值, 行的下标, 列的下标 }
     objectSpanMethod({ row, column, rowIndex, columnIndex }) {
      console.log(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() {
@@ -1010,6 +1798,12 @@
        });
      } else {
        _this.pacId = "";
      }
      this.proIds = [];
      if (this.DataList.length != 0) {
        this.DataList.forEach((item) => {
          this.proIds.push(item.proId);
        });
      }
      let data = {
        cusId,
@@ -1068,7 +1862,7 @@
          data = {
            pacId,
            department: this.form.department,
            category: this.form.category,
            tjCategory: this.form.category,
            address: this.form.cusAddr,
            marriage: this.form.cusMarryStatus,
            nation: this.form.cusNational,
@@ -1092,7 +1886,7 @@
        } else {
          data = {
            department: this.form.department,
            category: this.form.category,
            tjCategory: this.form.category,
            address: this.form.cusAddr,
            marriage: this.form.cusMarryStatus,
            nation: this.form.cusNational,
@@ -1174,6 +1968,15 @@
  display: block;
}
.tab3 {
  max-height: 400px;
  overflow-y: auto;
  border: 1px solid #d9d9d9;
}
.el-col-8 {
  width: 330px;
}