qx
2023-12-13 295e96d06f1c397df40bc82614041636d69b9ee2
qxtj
3个文件已修改
1088 ■■■■ 已修改文件
src/views/doctor/examination/index.vue 259 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/tijianall/index.vue 671 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 158 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/doctor/examination/index.vue
@@ -1,72 +1,210 @@
<template>
  <div class="app-container">
    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px">
    <el-form
      :model="queryParams"
      ref="queryForm"
      size="small"
      :inline="true"
      label-width="68px"
    >
      <el-form-item label="体检号" prop="tjNumber">
        <el-input v-model="queryParams.tjNumber" placeholder="请输入体检号" clearable @keyup.enter.native="handleQuery"
          style="width: 170px" />
        <el-input
          v-model="queryParams.tjNumber"
          placeholder="请输入体检号"
          clearable
          @keyup.enter.native="handleQuery"
          style="width: 170px"
        />
      </el-form-item>
      <el-form-item label="姓名" prop="name">
        <el-input v-model="queryParams.name" placeholder="请输入姓名" clearable @keyup.enter.native="handleQuery"
          style="width: 110px" />
        <el-input
          v-model="queryParams.name"
          placeholder="请输入姓名"
          clearable
          @keyup.enter.native="handleQuery"
          style="width: 110px"
        />
      </el-form-item>
      <el-form-item label="登记时间" prop="createTimeList">
        <el-date-picker v-model="createTimeList" type="datetimerange" align="right" :picker-options="pickerOptions"
          style="width: 310px" start-placeholder="开始日期" end-placeholder="结束日期" :default-time="['00:00:00', '23:00:00']"
          format="yyyy-MM-dd HH:mm" value-format="yyyy-MM-dd HH:mm" @change="dateChangebirthday1">
        <el-date-picker
          v-model="createTimeList"
          type="datetimerange"
          align="right"
          :picker-options="pickerOptions"
          style="width: 310px"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          :default-time="['00:00:00', '23:00:00']"
          format="yyyy-MM-dd HH:mm"
          value-format="yyyy-MM-dd HH:mm"
          @change="dateChangebirthday1"
        >
        </el-date-picker>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">查询</el-button>
        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
        <el-button
          type="primary"
          icon="el-icon-search"
          size="mini"
          @click="handleQuery"
          >查询</el-button
        >
        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
          >重置</el-button
        >
      </el-form-item>
    </el-form>
    <el-radio-group v-model="checkStatus" @input="radioChange" style="margin: 10px 15px">
    <el-radio-group
      v-model="checkStatus"
      @input="radioChange"
      style="margin: 10px 15px"
    >
      <el-radio-button label="0">未审核</el-radio-button>
      <el-radio-button label="1">已审核</el-radio-button>
    </el-radio-group>
    <div style="width: 100%; margin-left: 10px; display: flex">
      <div style="width: 40%; margin-right: 20px">
        <el-table id="ta" v-loading="loading" ref="tb" :data="exaList" border height="520px"
          @selection-change="handleSelectionChange" :row-class-name="tableRowClassName">
        <el-table
          id="ta"
          v-loading="loading"
          ref="tb"
          :data="exaList"
          border
          height="520px"
          @selection-change="handleSelectionChange"
          :row-class-name="tableRowClassName"
        >
          <el-table-column type="selection" width="40" align="center" />
          <el-table-column label="体检号" align="center" prop="tjNumber" width="160px" />
          <el-table-column label="姓名" align="center" prop="cusName" width="80px" />
          <el-table-column label="性别" align="center" prop="cusSex" width="60px">
          <el-table-column
            label="体检号"
            align="center"
            prop="tjNumber"
            width="160px"
          />
          <el-table-column
            label="姓名"
            align="center"
            prop="cusName"
            width="80px"
          />
          <el-table-column
            label="性别"
            align="center"
            prop="cusSex"
            width="60px"
          >
            <template slot-scope="scope">
              <!-- {{scope.row.customer.cusSex}} -->
              {{ scope.row.cusSex === 0 ? "男" : "女" }}
              <!-- <dict-tag :options="dict.type.sys_user_sex" :value="scope.row.cusSex " /> -->
            </template>
          </el-table-column>
          <el-table-column label="手机号" align="center" prop="cusPhone" width="120px" />
          <el-table-column label="登记时间" align="center" prop="tjTime" width="120px" />
          <el-table-column v-if="checkStatus == '1'" label="审核状态" align="center" prop="confirmStatus" width="110px">
          <el-table-column
            label="手机号"
            align="center"
            prop="cusPhone"
            width="120px"
          />
          <el-table-column
            label="登记时间"
            align="center"
            prop="tjTime"
            width="120px"
          />
          <el-table-column
            v-if="checkStatus == '1'"
            label="审核状态"
            align="center"
            prop="confirmStatus"
            width="110px"
          >
            <template slot-scope="scope">
              <span :style="{ color: scope.row.confirmStatus == '301' ? '#0CB618' : '#EA1B29', }"
                v-if="scope.row.confirmStatus == '301'">已通过</span>
              <span :style="{ color: scope.row.confirmStatus == '301' ? '#0CB618' : '#EA1B29', }"
                v-if="scope.row.confirmStatus == '299'">已驳回</span>
              <span
                :style="{
                  color:
                    scope.row.confirmStatus == '301' ? '#0CB618' : '#EA1B29',
                }"
                v-if="scope.row.confirmStatus == '301'"
                >已通过</span
              >
              <span
                :style="{
                  color:
                    scope.row.confirmStatus == '301' ? '#0CB618' : '#EA1B29',
                }"
                v-if="scope.row.confirmStatus == '299'"
                >已驳回</span
              >
            </template>
          </el-table-column>
          <el-table-column label="操作" align="center">
            <template slot-scope="scope">
              <el-button size="mini" type="text" v-hasPermi="['reservation:reservation:edit']"
                v-show="scope.row.confirmStatus == '299' || scope.row.confirmStatus == 288"
                @click="tongguo(scope.row)">通过</el-button>
              <el-button size="mini" type="text" v-hasPermi="['reservation:reservation:edit']"
                v-show="scope.row.confirmStatus == '301' || scope.row.confirmStatus == 288"
                @click="bohui(scope.row)">撤销</el-button>
              <el-button
                size="mini"
                type="text"
                v-hasPermi="['reservation:reservation:edit']"
                v-show="
                  scope.row.confirmStatus == '299' ||
                  scope.row.confirmStatus == 288
                "
                @click="tongguo(scope.row)"
                >通过</el-button
              >
              <el-button
                size="mini"
                type="text"
                v-hasPermi="['reservation:reservation:edit']"
                v-show="
                  scope.row.confirmStatus == '301' ||
                  scope.row.confirmStatus == 288
                "
                @click="bohui(scope.row)"
                >驳回</el-button
              >
              <el-button
                size="mini"
                type="text"
                v-hasPermi="['reservation:reservation:edit']"
                v-show="
                  scope.row.confirmStatus == '299' ||
                  scope.row.confirmStatus == 288
                "
                @click="tongbu(scope.row)"
                >同步</el-button
              >
            </template>
          </el-table-column>
        </el-table>
      </div>
      <div style="width: 50%">
        <el-table v-loading="loading" border height="520px" ref="tab1" :data="xiangmuList">
        <el-table
          v-loading="loading"
          border
          height="520px"
          ref="tab1"
          :data="xiangmuList"
        >
          <!-- <el-table-column type="selection" width="40" align="center" /> -->
          <el-table-column label="部门" align="center" prop="deptName" :show-overflow-tooltip="true" />
          <el-table-column label="项目" align="center" prop="proName" width="140" />
          <el-table-column label="状态" align="center" prop="type" :show-overflow-tooltip="true" width="60">
          <el-table-column
            label="部门"
            align="center"
            prop="deptName"
            :show-overflow-tooltip="true"
          />
          <el-table-column
            label="项目"
            align="center"
            prop="proName"
            width="140"
          />
          <el-table-column
            label="状态"
            align="center"
            prop="type"
            :show-overflow-tooltip="true"
            width="60"
          >
            <template slot-scope="scope">
              <span v-if="scope.row.type == '0'">未检</span>
              <span v-if="scope.row.type == '1'">已检</span>
@@ -75,23 +213,49 @@
            </template>
          </el-table-column>
          <el-table-column label="收费方式" align="center" prop="sffs" :show-overflow-tooltip="true" width="80" />
          <el-table-column label="是否收费" align="center" prop="isPay" :show-overflow-tooltip="true" />
          <el-table-column
            label="收费方式"
            align="center"
            prop="sffs"
            :show-overflow-tooltip="true"
            width="80"
          />
          <el-table-column
            label="是否收费"
            align="center"
            prop="isPay"
            :show-overflow-tooltip="true"
          />
          <!-- <el-table-column
            label="签到时间"
            align="center"
            prop="qdcreateTime"
            width="160"
          /> -->
          <el-table-column label="检查医生" align="center" prop="doctorName" width="100" />
          <el-table-column label="检查时间" align="center" prop="bcupdateTime" width="160" />
          <el-table-column
            label="检查医生"
            align="center"
            prop="doctorName"
            width="100"
          />
          <el-table-column
            label="检查时间"
            align="center"
            prop="bcupdateTime"
            width="160"
          />
          <!-- <el-table-column
            label="保存医生"
            align="center"
            prop="bcdoctorName"
            width="120"
          /> -->
          <el-table-column label="最后修改时间" align="center" prop="zhupdateTime" width="160" />
          <el-table-column
            label="最后修改时间"
            align="center"
            prop="zhupdateTime"
            width="160"
          />
        </el-table>
      </div>
    </div>
@@ -99,8 +263,13 @@
      <!-- <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :pager-count="5" :current-page.sync="currentPage1" :current-page="page"
                :page-sizes="pageSize" :page-size="size" layout="total, sizes, prev, pager, next, jumper" :total="total">
            </el-pagination> -->
      <pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.pageSize"
        @pagination="getList" />
      <pagination
        v-show="total > 0"
        :total="total"
        :page.sync="queryParams.page"
        :limit.sync="queryParams.pageSize"
        @pagination="getList"
      />
    </div>
  </div>
</template>
@@ -211,13 +380,13 @@
      this.startTime = val;
    },
    getList() {
      this.loading = true
      this.queryParams.checkStatus = "0";
      this.loading = true;
      this.queryParams.checkStatus = this.checkStatus;
      this.queryParams.beginTime = this.createTimeList[0];
      this.queryParams.endTime = this.createTimeList[1];
      getCsList(this.queryParams).then((res) => {
        if (res.code == 200) {
          this.loading = false
          this.loading = false;
          if (res.data) {
            this.exaList = res.data.customers;
            this.total = res.data.total;
@@ -234,7 +403,6 @@
            this.tableList = [];
          }
        }
      });
    },
    // 单选按钮
@@ -255,7 +423,6 @@
          this.total = response.data.total;
          this.loading = false;
        }
      });
    },
    /** 搜索按钮操作 */
@@ -309,12 +476,14 @@
        };
        confirmOrder(data).then((res) => {
          if (res.code == 200) {
            // this.$forceUpdate();
            this.getList();
            this.$modal.msgSuccess("提交成功!");
          }
        });
      });
    },
    tongbu() {},
    // 驳回按钮
    bohui(row) {
      this.tjNumbers = row.tjNumber;
src/views/system/tijianall/index.vue
@@ -3,63 +3,153 @@
    <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" :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="请输入姓名" 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" :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 style="width: 186px" v-model="form.cusIdcard" placeholder="请输入身份证号" @input="inputChange" />
              <!-- <i
          <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-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-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">
@@ -67,37 +157,149 @@
                value-format="yyyy-MM-dd" placeholder="请选择出生日期">
              </el-date-picker>
            </el-form-item> -->
            <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="请输入联系电话" 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-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> -->
@@ -111,72 +313,134 @@
            <!-- <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-item label="体检类型" prop="tjType" style="margin-right: 20px">
              <el-select style="width: 145px" 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-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="42%" height="700px">
      <el-tabs type="border-card" style="height: 538px; margin: 0 10px; width: 100%">
    <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
            :model="queryParam"
            ref="queryForm"
            size="small"
            :inline="true"
            v-show="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)"
@@ -199,8 +463,13 @@
        <el-tab-pane label="单项">
          <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>
              <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> -->
@@ -267,9 +536,19 @@
             </div> -->
          <template>
            <el-form :model="form" :inline="true" label-width="75px" style="margin-left: 10px">
            <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>
@@ -277,15 +556,40 @@
                  @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="Package" size="mini">选择套餐</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-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>
@@ -293,14 +597,16 @@
          <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">
@@ -316,15 +622,26 @@
                      ".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 == ''">
                      <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="应收金额">
@@ -333,7 +650,10 @@
                    </el-table-column>
                    <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>
@@ -360,13 +680,15 @@
            </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">
@@ -418,12 +740,26 @@
      </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">
    <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>
@@ -454,7 +790,8 @@
import historyTj from "@/components/historyTj/index";
export default {
  components: {
    VTreeTransfer, historyTj
    VTreeTransfer,
    historyTj,
  },
  dicts: [
    "dict_user_national",
@@ -472,14 +809,14 @@
  data() {
    let checkPhoneNum = (rule, value, callback) => {
         console.log( value)
      console.log(value);
      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 (value != undefined && value != "") {
        return callback();
      }else if (!patter.test(value)) {
        return callback('');
      } else if (!patter.test(value)) {
        return callback("");
      }
    };
    // const isCnNewID = (rule, value, callback) => {
@@ -652,7 +989,9 @@
      },
      // 表单校验
      rules: {
        cusName: [{ required: true, validator: checkPhoneNum, trigger: "blur" }],
        cusName: [
          { required: true, validator: checkPhoneNum, trigger: "blur" },
        ],
        cusSex: [
          { required: true, validator: checkPhoneNum, trigger: "change" },
        ],
@@ -722,8 +1061,8 @@
            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;
@@ -821,7 +1160,7 @@
        .then((_) => {
          done();
        })
        .catch((_) => { });
        .catch((_) => {});
    },
    getList1() {
      getInfo().then((response) => {
@@ -1051,7 +1390,7 @@
              });
            });
          });
        } catch (error) { }
        } catch (error) {}
        this.loading = false;
      });
    },
vue.config.js
@@ -1,15 +1,15 @@
'use strict'
const path = require('path')
"use strict";
const path = require("path");
function resolve(dir) {
  return path.join(__dirname, dir)
  return path.join(__dirname, dir);
}
const CompressionPlugin = require('compression-webpack-plugin')
const CompressionPlugin = require("compression-webpack-plugin");
const name = process.env.VUE_APP_TITLE || '智慧健康体检管理系统' // 网页标题
const name = process.env.VUE_APP_TITLE || "智慧健康体检管理系统"; // 网页标题
const port = process.env.port || process.env.npm_config_port || 80 // 端口
const port = process.env.port || process.env.npm_config_port || 80; // 端口
// vue.config.js 配置说明
//官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions
@@ -20,121 +20,117 @@
  // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
  publicPath: process.env.NODE_ENV === "production" ? "/" : "/",
  // 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist)
  outputDir: 'dist',
  outputDir: "dist",
  // 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)
  assetsDir: 'static',
  assetsDir: "static",
  // 是否开启eslint保存检测,有效值:ture | false | 'error'
  lintOnSave: process.env.NODE_ENV === 'development',
  lintOnSave: process.env.NODE_ENV === "development",
  // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。
  productionSourceMap: false,
  // webpack-dev-server 相关配置
  devServer: {
    host: '0.0.0.0',
    host: "0.0.0.0",
    port: port,
    open: true,
    proxy: {
      // detail: https://cli.vuejs.org/config/#devserver-proxy
      [process.env.VUE_APP_BASE_API]: {
        //target: `https://ltpeis.xaltjdkj.cn:5501/prod-api/getInfo`,
        target: `http://192.168.0.104:5011`,
        target: `http://192.168.0.111:5011`,
        // // target: `http://192.168.0.99:8080/ltkj-admin`,
        // target: `https://ltpeis.xaltjdkj.cn:5011/ltkj-admin`,
        // target: `http://10.168.0.9:5011`,
        changeOrigin: true,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''
        }
      }
          ["^" + process.env.VUE_APP_BASE_API]: "",
        },
      },
    },
    disableHostCheck: true
    disableHostCheck: true,
  },
  css: {
    extract: false,
    loaderOptions: {
      sass: {
        sassOptions: { outputStyle: "expanded" }
      }
    }
        sassOptions: { outputStyle: "expanded" },
      },
    },
  },
  configureWebpack: {
    name: name,
    resolve: {
      alias: {
        '@': resolve('src')
      }
        "@": resolve("src"),
      },
    },
    plugins: [
      // http://doc.ruoyi.vip/ruoyi-vue/other/faq.html#使用gzip解压缩静态文件
      new CompressionPlugin({
        cache: false,                   // 不启用文件缓存
        test: /\.(js|css|html)?$/i,     // 压缩文件格式
        filename: '[path].gz[query]',   // 压缩后的文件名
        algorithm: 'gzip',              // 使用gzip压缩
        minRatio: 0.8                   // 压缩率小于1才会压缩
      })
        cache: false, // 不启用文件缓存
        test: /\.(js|css|html)?$/i, // 压缩文件格式
        filename: "[path].gz[query]", // 压缩后的文件名
        algorithm: "gzip", // 使用gzip压缩
        minRatio: 0.8, // 压缩率小于1才会压缩
      }),
    ],
  },
  chainWebpack(config) {
    config.plugins.delete('preload') // TODO: need test
    config.plugins.delete('prefetch') // TODO: need test
    config.plugins.delete("preload"); // TODO: need test
    config.plugins.delete("prefetch"); // TODO: need test
    // set svg-sprite-loader
    config.module.rule("svg").exclude.add(resolve("src/assets/icons")).end();
    config.module
      .rule('svg')
      .exclude.add(resolve('src/assets/icons'))
      .end()
    config.module
      .rule('icons')
      .rule("icons")
      .test(/\.svg$/)
      .include.add(resolve('src/assets/icons'))
      .include.add(resolve("src/assets/icons"))
      .end()
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .use("svg-sprite-loader")
      .loader("svg-sprite-loader")
      .options({
        symbolId: 'icon-[name]'
        symbolId: "icon-[name]",
      })
      .end()
      .end();
    config
      .when(process.env.NODE_ENV !== 'development',
        config => {
          config
            .plugin('ScriptExtHtmlWebpackPlugin')
            .after('html')
            .use('script-ext-html-webpack-plugin', [{
            // `runtime` must same as runtimeChunk name. default is `runtime`
              inline: /runtime\..*\.js$/
            }])
            .end()
          config
            .optimization.splitChunks({
              chunks: 'all',
              cacheGroups: {
                libs: {
                  name: 'chunk-libs',
                  test: /[\\/]node_modules[\\/]/,
                  priority: 10,
                  chunks: 'initial' // only package third parties that are initially dependent
                },
                elementUI: {
                  name: 'chunk-elementUI', // split elementUI into a single package
                  priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
                  test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
                },
                commons: {
                  name: 'chunk-commons',
                  test: resolve('src/components'), // can customize your rules
                  minChunks: 3, //  minimum common number
                  priority: 5,
                  reuseExistingChunk: true
                }
              }
            })
          config.optimization.runtimeChunk('single'),
    config.when(process.env.NODE_ENV !== "development", (config) => {
      config
        .plugin("ScriptExtHtmlWebpackPlugin")
        .after("html")
        .use("script-ext-html-webpack-plugin", [
          {
             from: path.resolve(__dirname, './public/robots.txt'), //防爬虫文件
             to: './' //到根目录下
          }
        }
      )
  }
}
            // `runtime` must same as runtimeChunk name. default is `runtime`
            inline: /runtime\..*\.js$/,
          },
        ])
        .end();
      config.optimization.splitChunks({
        chunks: "all",
        cacheGroups: {
          libs: {
            name: "chunk-libs",
            test: /[\\/]node_modules[\\/]/,
            priority: 10,
            chunks: "initial", // only package third parties that are initially dependent
          },
          elementUI: {
            name: "chunk-elementUI", // split elementUI into a single package
            priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
            test: /[\\/]node_modules[\\/]_?element-ui(.*)/, // in order to adapt to cnpm
          },
          commons: {
            name: "chunk-commons",
            test: resolve("src/components"), // can customize your rules
            minChunks: 3, //  minimum common number
            priority: 5,
            reuseExistingChunk: true,
          },
        },
      });
      config.optimization.runtimeChunk("single"),
        {
          from: path.resolve(__dirname, "./public/robots.txt"), //防爬虫文件
          to: "./", //到根目录下
        };
    });
  },
};