qinxianzhangyao
2023-12-12 11620866e987f3cbeea5744ea38a1abf42ad6885
src/views/system/tijianall/index.vue
@@ -1,112 +1,159 @@
<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="78px">
            <el-form-item label="姓名" prop="cusName" :rules="[
              {
                required: true, validator: (rule, value, callback) => {
                  if (!form.cusName) {
                    callback('')
                  } else if (form.cusName) {
                    callback()
                  }
        <!-- <input name="ReadBlockBtn" type="button" size="5px"  @click="readblock" value="读卡" /> -->
        <!-- <el-form-item label="出生日期" prop="cusBrithday">
                }, 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
                style="font-size: 17px; margin-left: 3px"
                class="el-icon-search"
                @click="handleQuery"
              ></i> -->
            </el-form-item>
            <el-form-item label="年龄" prop="age">
              <el-input style="width: 55px" v-model="form.age" />
            </el-form-item>
            <el-form-item prop="ageUnit">
              <el-select style="width: 60px" v-model="form.ageUnit" @change="formchang">
                <el-option v-for="dict in dict.type.dict_ageunit" :key="dict.value" :label="dict.label"
                  :value="dict.value"></el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="性别" prop="cusSex">
              <el-select style="width: 160px" v-model="form.cusSex" placeholder="请选择性别" @change="formchang">
                <el-option v-for="dict in dict.type.sys_user_sex" :key="dict.value" :label="dict.label"
                  :value="parseInt(dict.value)"></el-option>
              </el-select>
            </el-form-item>
            <!-- <input name="ReadBlockBtn" type="button" size="5px"  @click="readblock" value="读卡" /> -->
            <!-- <el-form-item label="出生日期" prop="cusBrithday">
              <el-date-picker style="width: 200px" clearable v-model="form.cusBrithday" type="date"
                value-format="yyyy-MM-dd" placeholder="请选择出生日期">
              </el-date-picker>
            </el-form-item> -->
        <el-form-item label="联系电话" prop="cusPhone">
          <el-input v-model="form.cusPhone" placeholder="请输入联系电话" style="width: 160px" />
        </el-form-item>
        <el-form-item label="民族" prop="cusNational">
          <el-select filterable v-model="form.cusNational" placeholder="请选择民族" style="width: 130px">
            <el-option v-for="dict in dict.type.dict_user_national" :key="dict.value" :label="dict.label"
              :value="dict.value"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="邮箱" prop="cusEmail">
          <el-input v-model="form.cusEmail" placeholder="请输入邮箱" style="width: 200px" />
        </el-form-item>
        <el-form-item label="婚姻" prop="cusMarryStatus">
          <el-select style="width: 160px" v-model="form.cusMarryStatus" placeholder="请选择婚姻状况">
            <el-option v-for="dict in dict.type.dict_user_marry" :key="dict.value" :label="dict.label"
              :value="dict.value"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="现住址" prop="cusAddr">
          <el-input v-model="form.cusAddr" placeholder="请输入现居住地址" style="width: 440px" />
        </el-form-item>
        <!-- <el-form-item label="户口地址" prop="cusAddr">
            <el-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-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-form>
    </div>
            <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-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%">
@@ -153,7 +200,7 @@
          <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>
                :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> -->
@@ -220,13 +267,7 @@
             </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-form-item>
@@ -242,11 +283,14 @@
                <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="
@@ -277,7 +321,7 @@
                    </el-table-column>
                    <el-table-column prop="proType" label="性别" width="180">
                      <template slot-scope="scope" v-if="scope.row.proType == ''">
                        {{ 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" />
@@ -287,12 +331,11 @@
                    </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" />
                      </template>
                    </el-table-column>
                  </el-table>
                </el-collapse-item>
              </div>
@@ -309,9 +352,8 @@
                    </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>
@@ -381,6 +423,14 @@
        <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>
  
@@ -396,12 +446,15 @@
  getTransitionList,
  getGuide,
  getaddTj,
  getHistryTjOrderByCusIdCard,
  getHistryTjOrderProByCusIdCard,
} from "@/api/system/tijian";
import { MessageBox } from "element-ui";
import VTreeTransfer from '../tijian/TreeTransfer.vue'
import VTreeTransfer from "../tijian/TreeTransfer.vue";
import historyTj from "@/components/historyTj/index";
export default {
  components: {
    VTreeTransfer
    VTreeTransfer, historyTj
  },
  dicts: [
    "dict_user_national",
@@ -418,6 +471,17 @@
  name: "Tijian",
  data() {
    let checkPhoneNum = (rule, value, callback) => {
         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 (!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]; //校验码
@@ -443,6 +507,12 @@
    //   }
    // };
    return {
      proIdList: [],
      tableDatas: [],
      dialogVisiblese: false,
      lishi: false,
      table: false,
      HistoryList: {},
      index: 0,
      taocan: false,
      proIds: "",
@@ -582,24 +652,24 @@
      },
      // 表单校验
      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" },
        ],
        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" },
@@ -610,14 +680,13 @@
        //   },
        // ],
        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,
          },
        ],
      },
    };
@@ -661,9 +730,98 @@
          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();
    },
    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);
                console.log(_this.pacId, 888);
              });
            }
          });
        } 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) => {
@@ -790,9 +948,9 @@
                      }
                      this.pacName = item.pacName;
                      if (item.pacName == "单项") {
                        item.list.forEach(item9 => {
                          this.treeList.push(item9.proId)
                        })
                        item.list.forEach((item9) => {
                          this.treeList.push(item9.proId);
                        });
                      }
                    });
                    this.list1 = false;
@@ -876,7 +1034,7 @@
      this.taocan = true;
      // this.getData();
      let cusSex = this.form.cusSex;
      this.datekey = Date.now()
      this.datekey = Date.now();
      //全部套餐
      deptTreeSelect(cusSex).then((response) => {
        this.newpacName = response.rows;
@@ -884,9 +1042,7 @@
          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);
                  });
@@ -1006,7 +1162,7 @@
    },
    changeCategoryKeys(val) {
      this.proIds = [];
      this.proIds = val
      this.proIds = val;
    },
    // 项目提交