<style> .heightauto .el-input { height: auto !important; } .addPassenger .btmTitle { padding: 0 10px; margin: 20px 0 20px 0; border-left: 3px solid #e95252; font-size: 14px; color: #000000; } .addPassenger .contOut { width: 100%; height: auto; overflow: hidden; border: 1px solid #ccc; padding: 20px 0; border-radius: 4px; display: flex; background: #fff; } .addPassenger .contOut .contForm { flex: 1; } .addPassenger .contOut .contPic { width: 450px; padding-right: 10px; } .addPassenger .contOut .contPicNav { width: 450px; background: #f9f9f9; height: 34px; padding-right: 10px; } .addPassenger .contOut .contPicNav li { float: left; min-width: 90px; line-height: 34px; text-align: center; cursor: pointer; font-size: 12px; } .addPassenger .contOut .contPicNav li>div { width: 23px; height: 3px; margin: -2px auto; background: #e95252; } .addPassenger .contOut .contPicNav li.active { background: #fff; } .addPassenger .contOut .contPic img { height: 200px; } .addPassenger .contOut .contForm li { float: left; width: 450px; } .addPassenger .cont, .addPassenger .cont1 { flex: auto; height: auto; background: #fff; border-radius: 4px; border: 1px solid #ccc; padding: 20px; overflow: hidden; } .addPassenger .el-date-editor.el-input { width: 100%; } .addPassenger .el-form-item__label { font-size: 12px; } .addPassenger .cont .el-form-item, ._Ec_Box .el-form-item { float: left; width: 500px; } .addPassenger .cont ._AddressDetail { width: 57%; } .addPassenger textarea { resize: none; } ._addPassengerEconomicCapability { line-height: 22px; padding-left: 60px; overflow: hidden; width: 100%; } ._addPassengerEconomicCapability span { display: inline-block; padding: 2px 4px; border: 1px solid #c0c4cc; margin: 1px; cursor: pointer; color: #c0c4cc; font-size: 12px; border-radius: 4px; } ._addPassengerEconomicCapability span._active { border: 1px solid rgb(123, 194, 245); color: rgb(123, 194, 245); } .fileContainer [type="file"] { z-index: 50; display: block; filter: alpha(opacity=0); height: 100%; width: 100%; opacity: 0; position: absolute; right: 0; top: 0; cursor: pointer; } .colorRed input { color: red !important; } </style> <template> <div class="addPassenger"> <p class="btmTitle">旅客基本资料</p> <div class="contOut" v-loading='loading' element-loading-text="努力识别中...." element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.7)"> <div class="contForm"> <el-form :model="addMsg" ref="addMsg" label-position="right" :rules="rules" label-width="100px"> <li> <el-form-item label="身份证号码" prop="IdCard" v-if="LineId === 14 || LineId === 2"> <el-input v-model="addMsg.IdCard" type="text" size=mini class="w230" maxlength="50" placeholder="请填写" @blur.prevent="authentication()"> </el-input> </el-form-item> <el-form-item label="身份证号码" v-else> <el-input v-model="addMsg.IdCard" type="text" size=mini class="w230" maxlength="50" placeholder="请填写" @blur.prevent="authentication()"> </el-input> </el-form-item> </li> <li> <el-form-item label="中文姓" prop="SurName"> <el-input v-model='addMsg.SurName' class="w230" @input="Transformation(addMsg.SurName,'SurName')" placeholder="请输入中文"></el-input> </el-form-item> </li> <li> <el-form-item :label="$t('admin.admin_Surname')" prop="Name"> <el-input v-model='addMsg.Name' class="w230" @input="Transformation(addMsg.Name,'Name')" placeholder="请输入中文"></el-input> </el-form-item> </li> <li> <el-form-item :label="$t('system.table_sex')" prop="Sex"> <el-checkbox v-model="addMsg.Sex" true-label='1' false-label='2' @change="Roominformation()">男 </el-checkbox> <el-checkbox v-model="addMsg.Sex" true-label='2' false-label='1' @change="Roominformation()">女 </el-checkbox> </el-form-item> </li> <li> <el-form-item label="英文姓" prop="ESurName"> <el-input v-model='addMsg.ESurName' type="text" size=mini class="w230" maxlength="20" placeholder="请输入英文"> </el-input> </el-form-item> </li> <li> <el-form-item :label="$t('admin.admin_EnSurname')" prop="EName"> <el-input v-model='addMsg.EName' type="text" size=mini class="w230" maxlength="20" placeholder="请输入英文"> </el-input> </el-form-item> </li> <li> <el-form-item label="手机号码" prop="MobilePhone"> <el-input v-model="addMsg.MobilePhone" type="text" size=mini class="w230" maxlength="20" placeholder="请填写"></el-input> </el-form-item> </li> <li> <el-form-item label="出生日期" prop="Birthday"> <el-date-picker v-model='addMsg.Birthday' class="w230" @change="zhanchuangTips(addMsg.Birthday)" value-format="yyyy-MM-dd" type="date" :placeholder="$t('admin.admin_choDate')"></el-date-picker> </el-form-item> </li> <li> <el-form-item label="出生地" prop="BirthdayAddress"> <el-input v-model="addMsg.BirthdayAddress" type="text" size=mini class="w230" maxlength="20" placeholder="请填写"></el-input> </el-form-item> </li> <li> <el-form-item label="护照号" v-if="LineId==90"> <el-input v-model='addMsg.PassportNo' type="text" size=mini class="w230" maxlength="20" :placeholder="$t('visaT.ptxPassportNo')"></el-input> </el-form-item> <el-form-item label="护照号" prop="PassportNo" v-else> <el-input v-model='addMsg.PassportNo' type="text" size=mini class="w230" maxlength="20" :placeholder="$t('visaT.ptxPassportNo')"></el-input> </el-form-item> </li> <li> <el-form-item label="护照签发地" v-if="LineId==90"> <el-input v-model='addMsg.PassportAddress' type="text" size=mini class="w230" maxlength="100" placeholder="请填写"></el-input> </el-form-item> <el-form-item label="护照签发地" prop="PassportAddress" v-else> <el-input v-model='addMsg.PassportAddress' type="text" size=mini class="w230" maxlength="100" placeholder="请填写"></el-input> </el-form-item> </li> <li> <el-form-item label="护照签发日期" v-if="LineId==90"> <el-date-picker v-model='addMsg.PassportIssued' class="w230" value-format="yyyy-MM-dd" type="date" :placeholder="$t('admin.admin_choDate')"></el-date-picker> </el-form-item> <el-form-item label="护照签发日期" prop="PassportIssued" v-else> <el-date-picker v-model='addMsg.PassportIssued' class="w230" value-format="yyyy-MM-dd" type="date" :placeholder="$t('admin.admin_choDate')"></el-date-picker> </el-form-item> </li> <li> <el-form-item label="护照过期日期" v-if="LineId==90"> <el-date-picker v-model='addMsg.PassportExpiry' class="w230" :class=" guoqi ? 'colorRed' : ''" @change="timeOver" value-format="yyyy-MM-dd" type="date" :placeholder="$t('admin.admin_choDate')"></el-date-picker> </el-form-item> <el-form-item label="护照过期日期" prop="PassportExpiry" v-else> <el-date-picker v-model='addMsg.PassportExpiry' class="w230" :class=" guoqi ? 'colorRed' : ''" @change="timeOver" value-format="yyyy-MM-dd" type="date" :placeholder="$t('admin.admin_choDate')"></el-date-picker> </el-form-item> </li> <li> <el-form-item label="国籍" prop="Nationality"> <el-select v-model="addMsg.Nationality" filterable size=mini class="w230"> <el-option v-for="item in countryList" :key="item.ID" :label="item.Name" :value="item.ID"> </el-option> </el-select> </el-form-item> </li> <li> <el-form-item label="婚姻" prop="Marriage"> <el-select v-model="addMsg.Marriage" filterable size=mini class="w230"> <el-option v-for="item in MarriageType" :key="item.Id" :label="item.Name" :value="item.Id"> </el-option> </el-select> </el-form-item> </li> <li> <el-form-item label="家庭居住地" prop="Address"> <el-input v-model="addMsg.Address" type="text" size=mini class="w230" maxlength="50" placeholder="请填写"> </el-input> </el-form-item> </li> <li> <el-form-item label="家庭详细地址" prop="AddressDetail"> <el-input v-model="addMsg.AddressDetail" type="text" class="w230" size=mini maxlength="200" placeholder="请填写"></el-input> </el-form-item> </li> <li> <el-form-item label="身份确认" prop="IdentityType"> <el-select v-model="addMsg.IdentityType" filterable size=mini class="w230" v-if="addMsg.IdentityType==''"> <el-option v-for="item in VisaIdentityTypeEnum" :key="item.Id" :label="item.Name" :value="item.Name"> </el-option> </el-select> <el-input v-else v-model="addMsg.IdentityType" type="text" size=mini class="w230" maxlength="50"> </el-input> </el-form-item> </li> <li> <el-form-item label="出境记录" prop="HistoryRecord"> <el-select v-model="addMsg.HistoryRecord" filterable size=mini class="w230" v-if="addMsg.HistoryRecord==''"> <el-option v-for="item in VisaDeparturesType" :key="item.Id" :label="item.Name" :value="item.Name"> </el-option> </el-select> <el-input v-else v-model="addMsg.HistoryRecord" type="text" size=mini class="w230" maxlength="50"> </el-input> <el-checkbox v-model='addMsg.IsRecommend' :true-label='1' :false-label='2'>{{$t('visaT.Recommend')}}</el-checkbox> </el-form-item> </li> <li> <el-form-item label="职务" prop="Duty"> <el-select v-model="addMsg.Duty" filterable size=mini class="w230" v-if="addMsg.Duty==''"> <el-option v-for="item in VisaDutyTypeEnum" :key="item.Id" :label="item.Name" :value="item.Name"> </el-option> </el-select> <el-input v-else v-model="addMsg.Duty" type="text" size=mini class="w230" maxlength="50"></el-input> </el-form-item> </li> <li> <el-form-item :label="$t('pub.pubRemark')"> <el-input v-model="addMsg.Remarks" type="text" size=mini class="w230" maxlength="1000"></el-input> </el-form-item> </li> <!-- <li> <el-form-item label="出游类型" prop="TravelType"> <el-select v-model="addMsg.TravelType" filterable size=mini class="w230"> <el-option v-for="item in TravelTypeList" :key="item.Code" :label="item.Content" :value="item.Code"> </el-option> </el-select> </el-form-item> </li> <li> <el-form-item label="单位类型" prop="UnitType"> <el-select v-model="addMsg.UnitType" filterable size=mini class="w230"> <el-option v-for="item in UnitTypeList" :key="item.Code" :label="item.Content" :value="item.Code"> </el-option> </el-select> </el-form-item> </li> <li> <el-form-item label="职务类型" prop="DutyType"> <el-select v-model="addMsg.DutyType" filterable size=mini class="w230"> <el-option v-for="item in DutyTypeList" :key="item.Code" :label="item.Content" :value="item.Code"> </el-option> </el-select> </el-form-item> </li> --> <li> <el-form-item label="高校学生"> <el-checkbox v-model="addMsg.IsHightSchool" :true-label='1' :false-label='2'></el-checkbox> </el-form-item> </li> <li> <el-form-item label="是否占床"> <el-checkbox v-model="addMsg.IsBed" name="IsBed" :true-label='1' :false-label='0' @change="Roominformation()">{{$t('pub.yes')}}</el-checkbox> <el-checkbox v-model="addMsg.IsBed" name="IsBed" :true-label='0' :false-label='1' @change="Roominformation()">{{$t('pub.no')}}</el-checkbox> </el-form-item> </li> <li v-if="isOneDay !== 1"> <el-form-item label="房间信息" prop="HouseId"> <el-select v-model="addMsg.HouseId" filterable size=mini class="w230"> <el-option v-for="item in roomlist" :key="item.ID" :label="item.HouseInfo" :value="item.ID"> </el-option> </el-select> <template v-if="roomlist&&roomlist.length<=0"> <input type="button" value="新增房间" class="normalBtn" @click="addhouse()" title="需要拼房,但没有双人间(半间)的点击新增房间" /> </template> </el-form-item> </li> <li> <el-form-item label="是否需签证"> <el-checkbox v-model='addMsg.IsVisaFree' name="IsVisaFree" :disabled="IsMustVisa==1||(IsMustVisa==2&&addMsg.Id<=0)" :true-label='2' :false-label='1'>是 </el-checkbox> <el-checkbox v-model='addMsg.IsVisaFree' name="IsVisaFree" :disabled="IsMustVisa==1||(IsMustVisa==2&&addMsg.Id<=0)" :true-label='1' :false-label='2'>否 </el-checkbox> <el-select v-model="addMsg.VisaReplaceId" filterable size=mini class="w120" v-if="IsMustVisa==2&addMsg.Id>0&VisaStartStatus==2&addMsg.IsVisaFree==1"> <el-option v-for="item in VisaNotNeedList" :key="item.Id" :label="item.Name" :value="item.Id"> </el-option> </el-select> </el-form-item> </li> <li> <el-form-item label="签证状态"> <el-select v-model="addMsg.VisaState" filterable size=mini class="w120"> <el-option :key="0" :label="$t('pub.normalSel')" :value="0"> </el-option> <el-option :key="1" label="拒签" :value="1"> </el-option> </el-select> </el-form-item> </li> <li> <el-form-item label="是否单地接"> <el-checkbox v-model='addMsg.IsNeedAirticket' name="IsNeedAirticket" :disabled="IsMustAir==1||(IsMustAir==2&&addMsg.Id<=0)" :true-label='1' :false-label='2'>{{$t('pub.yes')}}</el-checkbox> <el-checkbox v-model='addMsg.IsNeedAirticket' name="IsNeedAirticket" :disabled="IsMustAir==1||(IsMustAir==2&&addMsg.Id<=0)" :true-label='2' :false-label='1'>{{$t('pub.no')}}</el-checkbox> <el-select v-model="addMsg.AirReplaceId" filterable size=mini class="w120" v-if="IsMustAir==2&addMsg.Id>0&AirStartStatus==1&addMsg.IsNeedAirticket==2"> <el-option v-for="item in AirNoeNeedList" :key="item.Id" :label="item.Name" :value="item.Id"> </el-option> </el-select> </el-form-item> </li> <li> <el-form-item label="是否需保险"> <el-checkbox v-model='addMsg.IsNeedSafe' name="IsNeedSafe" :disabled="IsMustSafe==1||(IsMustSafe==2&&addMsg.Id<=0)" :true-label='1' :false-label='2'>是 </el-checkbox> <el-checkbox v-model='addMsg.IsNeedSafe' name="IsNeedSafe" :disabled="IsMustSafe==1||(IsMustSafe==2&&addMsg.Id<=0)" :true-label='2' :false-label='1'>否 </el-checkbox> <el-select v-model="addMsg.SafeReplaceId" filterable size=mini class="w120" v-if="IsMustSafe==2&addMsg.Id>0&SafeStartStatus==1&addMsg.IsNeedSafe==2"> <el-option v-for="item in SafeNotNeedList" :key="item.Id" :label="item.Name" :value="item.Id"> </el-option> </el-select> </el-form-item> <el-form-item label="景点"> <el-select v-model="addMsg.CouponsIds" multiple :placeholder="$t('pub.pleaseSel')" class="heightauto"> <el-option v-for="item in JingDianList" :key="item.CouponsId" :label="item.CouponsName" :value="item.CouponsId"> </el-option> </el-select> </el-form-item> </li> <li v-for='(item,index) in EconomicCapabilityS'> <el-form-item :label="item.Name" v-if='item.isShow' :key='index'> <el-input v-model="item.Content" type="text" size=mini class="w230" maxlength="50"></el-input> </el-form-item> </li> </el-form> <div class="_addPassengerEconomicCapability"> <span v-for="item in EconomicCapabilityS" @click="addEconomicCapability(item)" :class="{_active:item.isShow}">{{item.Name}}</span> </div> </div> <div class="contPic"> <div class="contPicNav"> <li @click="templateType=1,changeType()" :class="{active:templateType==1}"> 身份证 <div v-show="templateType==1"></div> </li> <li @click="templateType=2,changeType()" :class="{active:templateType==2}"> 护照 <div v-show="templateType==2"></div> </li> <!-- <li v-show="templateType==2"> <el-select class='w200' v-model='templateSign'> <el-option label='中国护照' value='2625f80ec957a0c837ca14f8ce608a51'></el-option> <el-option label='台湾护照' value='7224a048d0fcc94413c3a729e481a775'></el-option> <el-option label='中国护照旧版' value='2dc78a37e516f18ebe56aeacc6d49203'></el-option> <el-option label='台湾通行证' value='2cd1d05f5efc5eec23ffad6358bdb70f'></el-option> </el-select> </li> --> </div> <p> </p> <div style="width: 100%; min-height: 200px; background: #f1f1f1; line-height: 200px; margin: 10px 0; border-radius: 4px;position: relative; text-align: center;"> <img id="img" src="" style="position: absolute; left: 0 ; top: 0;" /> <label class="fileContainer"> <input id='file' type="file" @change="onUpload" /> <i class="iconfont icon-img_haha color999" style="font-size: 80px;"></i> </label> </div> <input type="button" value="开始识别" class="normalBtn" @click="commonTextDiscern" /> <br /> <span style="color:red;font-weight:bold">请认真核对识别结果,如有不正确的请手动调整。</span> </div> </div> <p class="btmTitle">日本签证补录资料</p> <div class="cont1"> <el-form label-width="120px"> <el-row :gutter="40"> <el-col :span="6"> <el-form-item label="护照签发机关"> <el-input v-model='addMsg.IssuingAuthority' size=mini maxlength="50"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="曾用中文名"> <el-input v-model='addMsg.CName' size=mini maxlength="20"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="曾用英文名"> <el-input v-model='addMsg.CEName' size=mini maxlength="20"></el-input> </el-form-item> </el-col> </el-row> <el-row :gutter="40"> <el-col :span="6"> <el-form-item label="曾有国籍"> <el-input v-model='addMsg.CNationality' size=mini maxlength="20"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item :label="$t('scen.sc_tel')"> <el-input v-model='addMsg.Tel' size=mini maxlength="20"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="单位名称"> <el-input v-model='addMsg.UnitName' size=mini maxlength="20"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="单位电话"> <el-input v-model='addMsg.UnitPhone' size=mini maxlength="20"></el-input> </el-form-item> </el-col> </el-row> <el-row :gutter="40"> <el-col :span="6"> <el-form-item label="配偶/监护人职位"> <el-input v-model='addMsg.UnitPost' size=mini maxlength="20"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="单位地址"> <el-input v-model='addMsg.UnitAddress' size=mini maxlength="200"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="赴日目的"> <el-input v-model='addMsg.Purpose' size=mini maxlength="200"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="有无出境记录"> <el-select v-model='addMsg.IsDepartureRecord'> <el-option key="1" label="有" value="1"> </el-option> <el-option key="2" :label="$t('fnc.no')" value="2"> </el-option> </el-select> </el-form-item> </el-col> </el-row> <el-row :gutter="40"> <el-col :span="6"> <el-form-item label="上次去时间" prop="Birthday"> <el-date-picker v-model='addMsg.LastTime' value-format="yyyy-MM-dd" type="date" :placeholder="$t('admin.admin_choDate')"> </el-date-picker> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="上次取得截至时间"> <el-date-picker v-model='addMsg.DeadlineTime' value-format="yyyy-MM-dd" type="date" :placeholder="$t('admin.admin_choDate')"> </el-date-picker> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="出境国家"> <el-input size=mini v-model='addMsg.NCNationality' maxlength="20"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="酒店名称/友人名称"> <el-input v-model='addMsg.HotelName' size=mini maxlength="20"></el-input> </el-form-item> </el-col> </el-row> <el-row :gutter="40"> <el-col :span="6"> <el-form-item label="酒店电话/友人电话" prop="Birthday"> <el-input v-model='addMsg.HotelTel' size=mini maxlength="20"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="酒店地址/友人地址"> <el-input v-model='addMsg.HotelAddress' size=mini maxlength="20"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="紧急联络人"> <el-input v-model='addMsg.EmergencyContact' size=mini maxlength="100"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="紧急人地址"> <el-input v-model='addMsg.EmergencyAddress' size=mini maxlength="20"></el-input> </el-form-item> </el-col> </el-row> <el-row :gutter="40"> <el-col :span="6"> <el-form-item label="紧急人电话" prop="Birthday"> <el-input v-model='addMsg.EmergencyTel' size=mini maxlength="20"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="紧急人关系"> <el-input v-model='addMsg.EmergencyRelation' size=mini maxlength="20"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="犯罪记录"> <el-select v-model='addMsg.IsCriminalRecord'> <el-option key="1" label="有" value="1"> </el-option> <el-option key="2" :label="$t('fnc.no')" value="2"> </el-option> </el-select> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="参团费用"> <el-input v-model='addMsg.TravelCost' size=mini maxlength="20"></el-input> </el-form-item> </el-col> </el-row> <el-row :gutter="40"> <el-col :span="6"> <el-form-item label="报名旅行社" prop="Birthday"> <el-input v-model='addMsg.TravelName' size=mini maxlength="20"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="一同报名亲友"> <el-input v-model='addMsg.MutualFriends' size=mini maxlength="20"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="申请日期/报名时间"> <el-date-picker v-model='addMsg.Date' value-format="yyyy-MM-dd" type="date" :placeholder="$t('admin.admin_choDate')"> </el-date-picker> </el-form-item> </el-col> </el-row> </el-form> </div> <p style="text-align: center; padding: 20px 0;"> <input type="button" class="hollowFixedBtn" :value="$t('pub.cancelBtn')" @click="goBack" /> <input type="button" class="normalBtn" :value="$t('pub.saveBtn')" :style="btnState===true?'':'background-color: gray'" @click="submitForm('addMsg',1)" /> <input v-if="this.addMsg.Id==0" type="button" class="normalBtn" value="保存并继续添加" :style="btnState===true?'':'background-color: gray'" @click="submitForm('addMsg',2)" /> </p> </div> </template> <script> import Vue from "vue"; export default { data() { return { TravelTypeList: [], UnitTypeList: [], DutyTypeList: [], ppAge: 0, loading: false, templateType: 1, templateSign: "", imgBase64String: "", addMsg: { Id: 0, TCID: 0, OrderId: 0, SurName: "", Name: "", Sex: "", EName: "", ESurName: "", Birthday: "", BirthdayAddress: "", PassportAddress: "", PassportExpiry: "", PassportNo: "", Nationality: 2, Marriage: "", Address: "", AddressDetail: "", HistoryRecord: "", IdentityType: "", Duty: "", EconomicCapabilityList: [], Remarks: "", TravelType: '', UnitType: '', DutyType: '', IsHightSchool: "2", IsRecommend: "2", PassportIssued: "", IssuingAuthority: "", IdCard: "", CEName: "", CName: "", CNationality: "", Tel: "", MobilePhone: "", UnitAddress: "", UnitName: "", UnitPhone: "", UnitPost: "", Purpose: "观光", IsDepartureRecord: "2", LastTime: "", DeadlineTime: "", NCNationality: "", HotelTel: "", HotelAddress: "", HotelName: "参照\"赴日予定表\"", EmergencyContact: "", EmergencyAddress: "", EmergencyTel: "", IsCriminalRecord: "2", TravelCost: "", TravelName: "", MutualFriends: "", Date: "", IsBed: 1, IsVisaFree: 2, IsNeedAirticket: 1, IsNeedSafe: 1, AirReplaceId: "0", VisaReplaceId: "0", SafeReplaceId: "0", VisaState: 0, //签证状态 HouseId: '', //房间信息 CouponsIds: [] }, UpdateOrderHouseBtn: false, EconomicCapabilityS: [], rules: { DutyType: [{ required: true, message: '请选择职务类型', trigger: 'change' }], UnitType: [{ required: true, message: '请选择单位类型', trigger: 'change' }], TravelType: [{ required: true, message: '请选择出游类型', trigger: 'change' }], IdCard: [{ required: true, message: "请填身份证号码", trigger: "blur" }], SurName: [{ required: true, message: "请填写中文姓", trigger: "blur" }], Name: [{ required: true, message: "请填写中文名", trigger: "blur" }], Sex: [{ required: true, message: "请填选择性别", trigger: "change" }], ESurName: [{ required: true, message: "请填写英文姓", trigger: "blur" }, { pattern: /^[a-zA-Z]/, message: this.$t('visaT.qsrywx') } ], EName: [{ required: true, message: "请填写英文名", trigger: "blur" }, { pattern: /^[a-zA-Z]/, message: this.$t('visaT.qsrywx') } ], Birthday: [{ required: true, message: "请填选择出生日期", trigger: "blur" }], PassportNo: [{ required: true, message: "请填写护照号", trigger: "blur" }, { pattern: /^[0-9a-zA-Z]+$/, message: "正确的护照号" } ], PassportIssued: [{ required: true, message: "请选择护照签发日期", trigger: "blur" }], PassportExpiry: [{ required: true, message: "请选择护照过期日期", trigger: "blur" }], PassportAddress: [{ required: true, message: "请填写签发地", trigger: "blur" }], MobilePhone: [{ required: true, message: "请填写手机号码", trigger: "blur" }], Nationality: [{ required: true, message: this.$t('visaT.qxzgj'), trigger: "change" }], BirthdayAddress: [{ required: true, message: "请填写出生地", trigger: "change" }] }, //返回数据 VisaApplyForTypeEnum: [], JapanAirportList: [], ChinaAirportList: [], countryList: [], MarriageType: [], VisaDeparturesType: [], VisaDutyTypeEnum: [], VisaIdentityTypeEnum: [], FilghtForAirIn: [], FilghtForAirOut: [], IsMustVisa: 2, IsMustAir: 2, IsMustSafe: 2, VisaNotNeedList: [], AirNoeNeedList: [], SafeNotNeedList: [], VisaStartStatus: 2, AirStartStatus: 2, SafeStartStatus: 2, btnState: true, roomlist: [], isOneDay: 0, LineId: 0, EndDateStr: '', guoqi: false, JingDianList: [] }; }, methods: { getDutyType() { this.apipost( "dict_get_GetDictValueCommonList", { Key: 'SK_CRM_DutyType', }, res => { if (res.data.resultCode == 1) { this.DutyTypeList = res.data.data } else {} }, err => {} ); }, getUnitType() { this.apipost( "dict_get_GetDictValueCommonList", { Key: 'SK_CRM_UnitType', }, res => { if (res.data.resultCode == 1) { this.UnitTypeList = res.data.data } else {} }, err => {} ); }, getTravelType() { this.apipost( "dict_get_GetDictValueCommonList", { Key: 'SK_CRM_TravelType', }, res => { if (res.data.resultCode == 1) { this.TravelTypeList = res.data.data } else {} }, err => {} ); }, jsGetAge(strBirthday) { let returnAge; let strBirthdayArr = strBirthday.split("-"); let birthYear = Number(strBirthdayArr[0]); let birthMonth = Number(strBirthdayArr[1]); let birthDay = Number(strBirthdayArr[2]); let d = new Date(); let nowYear = d.getFullYear(); let nowMonth = d.getMonth() + 1; let nowDay = d.getDate(); if (nowYear === birthYear) { returnAge = 1; //同年 则为0岁 } else { let ageDiff = nowYear - birthYear; //年之差 if (ageDiff > 0) { if (nowMonth == birthMonth) { let dayDiff = nowDay - birthDay; //日之差 if (dayDiff < 0) { returnAge = ageDiff - 1; } else { returnAge = ageDiff; } } else { let monthDiff = nowMonth - birthMonth; //月之差 if (monthDiff < 0) { returnAge = ageDiff - 1; } else { returnAge = ageDiff; } } } else { returnAge = -1; //返回-1 表示出生日期输入错误 晚于今天 } } return returnAge; //返回周岁年龄 }, zhanchuangTips: function (b) { let age = this.jsGetAge(b) this.ppAge = age if (age == -1) { this.$message.error('出生日期' + b + '有误') this.addMsg.Birthday = '' return } }, getJingDIan: function () { this.apipost( "sellorder_post_GetGuestScenicRefundList", { TCID: this.addMsg.TCID, OrderId: this.addMsg.OrderId, GuestId: this.addMsg.Id }, res => { if (res.data.resultCode == 1) { this.JingDianList = res.data.data } else { this.$message.error('操作失败') } }, err => {} ); }, CompareDate(d1, d2) { return ((new Date(d1.replace(/-/g, "\/"))) < (new Date(d2.replace(/-/g, "\/")))); }, timeOver: function () { if (this.addMsg.PassportExpiry && this.addMsg.PassportExpiry != '') { this.guoqi = this.CompareDate(this.addMsg.PassportExpiry, this.EndDateStr) if (this.guoqi) { this.$message.error("客人护照过期时间小于团队出发日期后六个月") return } } }, //OCR识别 commonTextDiscern() { if (this.imgBase64String == '') { this.Error("请选择图片!"); return; } let params = { base64: "", Type: 1, //1-中国大陆护照,2-身份证 }; params.base64 = this.imgBase64String; let url = this.domainManager().UploadUrl; if (this.templateType == 1) { params.Type = 2; } else { params.Type = 1; } this.loading = true; this.UploadCard(params.Type, params.base64, res => { this.loading = false; if (res.data.StatusCode == 1) { var tempObj = res.data; if (tempObj) { //中文姓 if (tempObj.SurName && tempObj.SurName != '') { this.addMsg.SurName = tempObj.SurName; this.Transformation(this.addMsg.SurName, 'SurName'); } //中文名 if (tempObj.Name && tempObj.Name != '') { this.addMsg.Name = tempObj.Name; this.Transformation(this.addMsg.Name, 'Name'); } //性别 if (tempObj.Gender && tempObj.Gender != '') { if (tempObj.Gender == '男') { this.addMsg.Sex = "1"; } else { this.addMsg.Sex = "2"; } this.Roominformation(); } //出生日期 if (tempObj.BirthDate && tempObj.BirthDate != '') { this.addMsg.Birthday = tempObj.BirthDate; } //大陆护照 if (params.Type == 1) { //护照号 if (tempObj.PassportNumber && tempObj.PassportNumber != '') { this.addMsg.PassportNo = tempObj.PassportNumber; } //出生地 if (tempObj.BirthAddress && tempObj.BirthAddress != '') { this.addMsg.BirthdayAddress = tempObj.BirthAddress; } //护照签发日期 if (tempObj.IssueDate && tempObj.IssueDate != '') { this.addMsg.PassportIssued = tempObj.IssueDate; } //护照过期日期 if (tempObj.ExpiryDate && tempObj.ExpiryDate != '') { this.addMsg.PassportExpiry = tempObj.ExpiryDate; } //护照签发地 if (tempObj.Placoofissue && tempObj.Placoofissue != '') { this.addMsg.PassportAddress = tempObj.Placoofissue; } } //大陆身份证 else if (params.Type == 2) { //家庭居住地、家庭详细地址 if (tempObj.BirthAddress && tempObj.BirthAddress != '') { this.addMsg.Address = tempObj.BirthAddress; this.addMsg.AddressDetail = tempObj.BirthAddress; } //身份证号 if (tempObj.PassportNumber && tempObj.PassportNumber != '') { this.addMsg.IdCard = tempObj.PassportNumber; } } } } }, faild => { this.loading = false; }); }, //识别类型切换 changeType() { let preview = document.getElementById("img"); preview.src = ""; this.imgBase64String = ''; let file = document.getElementById("file"); file.value = ''; }, onUpload(val) { let preview = document.getElementById("img"); let file = document.getElementById("file").files[0]; let reader = new FileReader(); reader.onloadend = function () { preview.src = reader.result; }; if (file) { reader.readAsDataURL(file); } else { preview.src = ""; } this.lrz(file, { quality: 0.7 }).then(res => { this.imgBase64String = res.base64.slice(23); this.commonTextDiscern(); }); }, goBack() { history.go(-1); }, submitForm(addMsg, type) { if (this.btnState === true) { //提交创建、修改表单 this.$refs[addMsg].validate(valid => { this.btnState = false if (valid) { this.savePassenger(type); } else { this.btnState = true if (this.addMsg.SurName == '') { this.Error("请填写【中文姓】"); return false; } if (this.addMsg.Name == '') { this.Error("请填写【中文名】"); return false; } if (this.addMsg.Sex == '') { this.Error("请选择【性别】"); return false; } if (this.addMsg.MobilePhone == '') { this.Error("请填写【手机号码】"); return false; } if (this.addMsg.Birthday == '') { this.Error("请填写【出生日期】"); return false; } if (this.addMsg.BirthdayAddress == '') { this.Error("请填写【出生地】"); return false; } if (this.addMsg.PassportNo == '') { this.Error("请填写【护照号】"); return false; } if (this.addMsg.PassportAddress == '') { this.Error("请填写【护照签发地】"); return false; } if (this.addMsg.PassportIssued == '') { this.Error("请填写【护照签发日期】"); return false; } if (this.addMsg.PassportExpiry == '') { this.Error("请填写【护照过期日期】"); return false; } if (this.addMsg.TravelType == '') { this.Error("请选择【出游类型】"); return false; } if (this.addMsg.UnitType == '') { this.Error("请选择【单位类型】"); return false; } if (this.addMsg.DutyType == '') { this.Error("请选择【职务类型】"); return false; } return false; } }); } }, savePassenger(type) { this.timeOver() if ((this.LineId === 14 || this.LineId === 2) && this.addMsg.IdCard === '') { return this.$message.error('请填写身份证号码!'); } this.addMsg.EconomicCapabilityList = []; this.EconomicCapabilityS.forEach(x => { if (x.isShow == true) { this.addMsg.EconomicCapabilityList.push({ Key: x.Name, Value: x.Content, ID: x.ID }); } }); if (this.addMsg.Marriage == "") { this.addMsg.Marriage = "0"; } // if (this.ppAge <= 10 && this.addMsg.IsBed == 1) { // this.$confirm(this.$t('该游客未满十岁确认占床?'), this.$t('tips.tips'), { // confirmButtonText: this.$t('restaurant.res_confirm'), // cancelButtonText: this.$t('pub.cancelBtn'), // type: 'warning' // }).then(() => { // this.seveInfo(type) // }).catch(() => { // this.btnState = true // }); // } else { // this.seveInfo(type) // } this.seveInfo(type) }, seveInfo(type) { this.apipost( "sellorder_post_SetTravelGuestInfo_V2", this.addMsg, res => { if (res.data.resultCode == 1) { this.$message.success(res.data.message); if (type == 1) { history.go(-1); } else { this.btnState = true this.ClearData(); } } else { this.btnState = true this.$message.error(res.data.message); } }, err => {} ); }, getEconomicCapability() { //获取经济能力 this.apipost( "dict_post_GetList", { Key: "SK_Visa_EconomicCapability", IsTimer: 1 }, res => { this.EconomicCapabilityS = res.data.data; if (this.$route.query.guestId != 0) { this.addMsg.Id = this.$route.query.guestId; this.getInfo(); } }, err => {} ); }, addEconomicCapability(obj) { // 添加经济能力说明 this.EconomicCapabilityS.forEach(x => { if (x.ID == obj.ID) { x.isShow ? (x.isShow = false) : (x.isShow = true); } }); this.$forceUpdate(); }, Transformation(val, type) { let text = this.pinyin(val, { style: this.pinyin.STYLE_NORMAL }); if (type == "SurName") { let upText = text.join("").toLocaleUpperCase() this.addMsg.ESurName = upText; } if (type == "Name") { let upText = text.join("").toLocaleUpperCase() this.addMsg.EName = upText; } }, getVisaIdentityTypeEnum() { //获取身份证明 let msg = {}; this.apipost( "dmc_get_visa_GetVisaIdentityTypeEnum", msg, res => { if (res.data.resultCode == 1) { this.VisaIdentityTypeEnum = res.data.data; } else { this.$message.error(res.data.message); } }, err => {} ); }, getVisaDutyTypeEnum() { //获取职务 let msg = {}; this.apipost( "dmc_get_visa_GetVisaDutyTypeEnum", msg, res => { if (res.data.resultCode == 1) { this.VisaDutyTypeEnum = res.data.data; } else { this.$message.error(res.data.message); } }, err => {} ); }, getVisaDeparturesType() { //获取出境记录状态 let msg = {}; this.apipost( "dmc_get_visa_GetVisaDeparturesTypeEnum", msg, res => { if (res.data.resultCode == 1) { this.VisaDeparturesType = res.data.data; } else { this.$message.error(res.data.message); } }, err => {} ); }, getMarriageType() { //获取婚姻 let msg = {}; this.apipost( "dmc_get_visa_GetVisaMarriageTypeEnum", msg, res => { if (res.data.resultCode == 1) { this.MarriageType = res.data.data; } else { this.$message.error(res.data.message); } }, err => {} ); }, getCountry() { //获取国家 let msg = {}; this.apipost( "dict_post_Destination_GetCountry", msg, res => { if (res.data.resultCode == 1) { this.countryList = res.data.data; } else { this.$message.error(res.data.message); } }, err => {} ); }, getVisaApplyForTypeEnum() { // 获取申请类型 this.apipost( "dmc_get_visa_GetVisaApplyForTypeEnum", {}, res => { if (res.data.resultCode == 1) { this.VisaApplyForTypeEnum = res.data.data; } else { this.$message.error(res.data.message); } }, err => {} ); }, getChinaAirportList() { // 获取国内机场 let msg = { City_id: 0, Country_id: 2, TrafficType: 1, }; this.apipost( "airport_post_GetList", msg, res => { if (res.data.resultCode == 1) { this.ChinaAirportList = res.data.data; } else { this.$message.error(res.data.message); } }, err => {} ); }, getJapanAirportList() { // 获取日本机场 let msg = { City_id: 0, Country_id: 651, TrafficType: 1 }; this.apipost( "airport_post_GetList", msg, res => { if (res.data.resultCode == 1) { this.JapanAirportList = res.data.data; } else { this.$message.error(res.data.message); } }, err => {} ); }, goUrl(path) { this.$router.push({ name: path }); }, getInfo() { this.apipost( "sellorder_get_GetTravelGuestInfo", { GuestId: this.$route.query.guestId }, res => { if (res.data.resultCode == 1) { let obj = res.data.data; this.addMsg = obj; this.addMsg.Sex = obj.Sex.toString(); this.addMsg.DutyType = obj.DutyType.toString(); this.addMsg.UnitType = obj.UnitType.toString(); this.addMsg.TravelType = obj.TravelType.toString(); this.addMsg.Marriage = obj.Marriage.toString(); if (this.addMsg.Marriage == "0") { this.addMsg.Marriage = ""; } this.addMsg.IsCriminalRecord = obj.IsCriminalRecord === null ? '' : obj.IsCriminalRecord.toString(); this.addMsg.IsDepartureRecord = obj.IsDepartureRecord.toString(); this.EconomicCapabilityS.forEach(x => { if (obj.EconomicCapabilityList) { obj.EconomicCapabilityList.forEach(y => { if (x.ID == y.ID) { x.isShow = true; x.Content = y.Value; } }); } }); this.VisaStartStatus = this.addMsg.IsVisaFree; this.AirStartStatus = this.addMsg.IsNeedAirticket; this.SafeStartStatus = this.addMsg.IsNeedSafe; this.zhanchuangTips(obj.Birthday) this.$forceUpdate(); this.getHouselist(obj.Sex.toString(), obj.TCID, obj.OrderId, obj.IsBed) if (this.$route.query.isOneDay === 1) { this.addMsg.IsBed = 0 } } else { this.$message.error(); } }, err => {} ); }, GetGuestMustVisaAir() { this.apipost( "sellorder_get_GetGuestMustVisaAir", { OrderId: this.$route.query.orderId }, res => { if (res.data.resultCode == 1) { let obj = res.data.data; this.IsMustVisa = obj.IsMustVisa; this.IsMustAir = obj.IsMustAir; this.IsMustSafe = obj.IsMustSafe; this.VisaNotNeedList = obj.VisaNotNeedList; this.AirNoeNeedList = obj.AirNoeNeedList; this.SafeNotNeedList = obj.SafeNotNeedList; if (obj.IsMustAir == 0) { this.addMsg.IsNeedAirticket = 2; } if (obj.IsMustVisa == 0) { this.addMsg.IsVisaFree = 1; } if (obj.IsMustSafe == 0) { this.addMsg.IsNeedSafe = 2; } } } ); }, ClearData() { this.addMsg.SurName = ""; this.addMsg.Name = ""; this.addMsg.Sex = ""; this.addMsg.EName = ""; this.addMsg.ESurName = ""; this.addMsg.Birthday = ""; this.addMsg.BirthdayAddress = ""; this.addMsg.PassportAddress = ""; this.addMsg.PassportExpiry = ""; this.addMsg.PassportNo = ""; this.addMsg.Nationality = 2; this.addMsg.Marriage = ""; this.addMsg.Address = ""; this.addMsg.AddressDetail = ""; this.addMsg.HistoryRecord = ""; this.addMsg.IdentityType = ""; this.addMsg.Duty = ""; this.addMsg.EconomicCapabilityList = []; this.addMsg.Remarks = ""; this.addMsg.TravelType = ""; this.addMsg.UnitType = ""; this.addMsg.DutyType = ""; this.addMsg.IsHightSchool = "2"; this.addMsg.IsRecommend = "2"; this.addMsg.PassportIssued = ""; this.addMsg.IssuingAuthority = ""; this.addMsg.IdCard = ""; this.addMsg.CEName = ""; this.addMsg.CName = ""; this.addMsg.CNationality = ""; this.addMsg.Tel = ""; this.addMsg.MobilePhone = ""; this.addMsg.UnitAddress = ""; this.addMsg.UnitName = ""; this.addMsg.UnitPhone = ""; this.addMsg.UnitPost = ""; this.addMsg.Purpose = "观光"; this.addMsg.IsDepartureRecord = "2"; this.addMsg.LastTime = ""; this.addMsg.DeadlineTime = ""; this.addMsg.NCNationality = ""; this.addMsg.HotelTel = ""; this.addMsg.HotelAddress = ""; this.addMsg.HotelName = "参照\"赴日予定表\""; this.addMsg.EmergencyContact = ""; this.addMsg.EmergencyAddress = ""; this.addMsg.EmergencyTel = ""; this.addMsg.IsCriminalRecord = "2"; this.addMsg.TravelCost = ""; this.addMsg.TravelName = ""; this.addMsg.MutualFriends = ""; this.addMsg.Date = ""; this.addMsg.IsBed = 1; this.addMsg.IsVisaFree = 2; this.addMsg.IsNeedAirticket = 1; this.addMsg.IsNeedSafe = 1; this.addMsg.AirReplaceId = "0"; this.addMsg.VisaReplaceId = "0"; this.addMsg.SafeReplaceId = "0"; this.addMsg.VisaState = 0; this.GetGuestMustVisaAir(); let userInfo = this.getLocalStorage(); var BranchName = userInfo.BranchName; if (BranchName.search("武汉") != -1) { this.addMsg.BirthdayAddress = "湖北"; this.addMsg.PassportAddress = "湖北"; } else if (BranchName.search("西安") != -1) { this.addMsg.BirthdayAddress = "陕西"; this.addMsg.PassportAddress = "陕西"; } else if (BranchName.search("长沙") != -1) { this.addMsg.BirthdayAddress = "湖南"; this.addMsg.PassportAddress = "湖南"; } this.addMsg.IssuingAuthority = "公安部出入境管理局"; }, Roominformation() { let TCIDs = this.addMsg.TCID; let OrderId = this.addMsg.OrderId; let IsBed = this.addMsg.IsBed; let Sex = this.addMsg.Sex; this.addMsg.HouseId = '' this.getHouselist(Sex, TCIDs, OrderId, IsBed) }, getHouselist(Sex, TCID, OrderId, IsBed) { if (Sex == 1 || Sex == 2) { this.apipost( "sellorder_post_GetHouseDetailsByOrderID", { TCIDs: TCID, OrderId: OrderId, Sex: Sex, IsBed: IsBed, GuestId: this.$route.query.guestId?this.$route.query.guestId:0 }, res => { if (res.data.resultCode == 1) { this.roomlist = res.data.data; } else { this.$message.error(res.data.message); } }, ); } else { this.$message.error('请选择性别'); } }, addhouse() { let orderId = this.addMsg.OrderId; let sex = this.addMsg.Sex; if (!sex) { this.$message.error('请选择性别'); return } if (sex == 1 || sex == 2) { this.apipost( "sellorder_get_BatchSetOrderHouse_V2", { orderId: orderId, sex: sex, }, res => { if (res.data.resultCode == 1) { this.Roominformation() } else { this.$message.error(res.data.message); } }, err => {} ); } }, authentication() { let IdCard = this.addMsg.IdCard; if (this.$route.query.guestId == 0) { if (IdCard.length == 18) { this.apipost( "sellorder_post_GetGusetByIDCard", { IdCard: this.addMsg.IdCard, }, res => { if (res.data.resultCode == 1) { let obj = res.data.data; this.addMsg.SurName = obj.SurName; this.addMsg.Name = obj.Name; this.addMsg.ESurName = obj.ESurName; this.addMsg.EName = obj.EName; this.addMsg.Sex = obj.Sex.toString(); this.addMsg.MobilePhone = obj.MobilePhone; this.addMsg.Birthday = obj.Birthday; this.addMsg.BirthdayAddress = obj.BirthdayAddress; this.addMsg.PassportNo = obj.PassportNo; this.addMsg.PassportAddress = obj.PassportAddress; this.addMsg.PassportIssued = obj.PassportIssued; this.addMsg.PassportExpiry = obj.PassportExpiry; this.addMsg.Nationality = obj.Nationality; this.addMsg.Marriage = obj.Marriage.toString(); if (this.addMsg.Marriage == "0") { this.addMsg.Marriage = ""; } this.addMsg.Address = obj.Address; this.addMsg.AddressDetail = obj.AddressDetail; this.addMsg.IdentityType = obj.IdentityType; this.addMsg.HistoryRecord = obj.HistoryRecord; this.addMsg.Duty = obj.Duty; this.addMsg.Remarks = obj.Remarks; this.addMsg.TravelType = Number(obj.TravelType); this.addMsg.UnitType = Number(obj.UnitType); this.addMsg.DutyType = Number(obj.DutyType); this.addMsg.IsHightSchool = obj.IsHightSchool; this.addMsg.IsRecommend = obj.IsRecommend; this.addMsg.Id = this.$route.query.guestId; this.addMsg.TCID = this.$route.query.TCID; this.addMsg.OrderId = this.$route.query.orderId; this.Roominformation() //调取下房间信息 } }, err => {} ); } } } }, mounted() { this.getTravelType(); this.getDutyType(); this.getUnitType(); this.getCountry(); this.getMarriageType(); this.getVisaDeparturesType(); this.getVisaDutyTypeEnum(); this.getVisaIdentityTypeEnum(); this.getEconomicCapability(); this.GetGuestMustVisaAir(); this.isOneDay = this.$route.query.isOneDay; this.LineId = this.$route.query.LineId; this.addMsg.TCID = this.$route.query.TCID; this.addMsg.OrderId = this.$route.query.orderId; this.EndDateStr = this.$route.query.EndDateStr; let userInfo = this.getLocalStorage(); var BranchName = userInfo.BranchName; if (BranchName.search("武汉") != -1) { this.addMsg.BirthdayAddress = "湖北"; this.addMsg.PassportAddress = "湖北"; } else if (BranchName.search("西安") != -1) { this.addMsg.BirthdayAddress = "陕西"; this.addMsg.PassportAddress = "陕西"; } else if (BranchName.search("长沙") != -1) { this.addMsg.BirthdayAddress = "湖南"; this.addMsg.PassportAddress = "湖南"; } this.addMsg.IssuingAuthority = "公安部出入境管理局"; this.getJingDIan(); } }; </script>