| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055 |
- <!-- 保险单页面模板 -->
- <template>
- <!-- 主容器 -->
- <div class="insurancePolicy">
- <!-- 表单组件:包含所有保险单信息 -->
- <el-form ref="InsurancePolicyRefs" :model="insurancePolicyForm" :rules="insurancePolicyRules">
- <!-- 业务员信息区域 -->
- <el-row :gutter="20" class="formItem">
- <el-col :span="6">
- <!-- 业务员输入框:用于搜索和选择业务员 -->
- <el-form-item label="业务员:" style="margin-top: 10px">
- <el-input v-model="insurancePolicyForm.salesman" placeholder="输入业务员工姓名,手机号,工号查找"
- @click="handleFocus"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6" v-if="insurancePolicyForm.salesman">
- <!-- 业务员手机号显示框(只读) -->
- <el-form-item label="手机号:" style="margin-top: 10px">
- <el-input v-model="insurancePolicyForm.mobile" disabled></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6" v-if="insurancePolicyForm.salesman">
- <!-- 业务员归属部门选择器 -->
- <el-form-item label="归属:" style="margin-top: 10px">
- <el-cascader clearable style="width: 100%" v-model="insurancePolicyForm.deptId" :options="institutionList"
- :props="tableProps"></el-cascader>
- </el-form-item>
- </el-col>
- <el-col :span="6" v-if="insurancePolicyForm.salesman">
- <!-- 更换业务员按钮 -->
- <el-button link type="primary" @click="handleFocus" style="margin-top: 10px">更换业务员</el-button>
- </el-col>
- </el-row>
- <!-- 可折叠面板:包含各种信息模块 -->
- <el-collapse v-model="activeName">
- <!-- 车辆信息面板 -->
- <el-collapse-item name="car">
- <template #title>
- <span class="title">车辆信息</span>
- </template>
- <el-row :gutter="20" class="formItem formBlock">
- <el-col :span="6">
- <!-- 车辆是否上牌选项 -->
- <el-form-item label="车辆是否上牌?" prop="isRegistered">
- <el-radio-group v-model="insurancePolicyForm.isRegistered">
- <el-radio value="1">是</el-radio>
- <el-radio value="2">否</el-radio>
- </el-radio-group>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 车牌号输入框:当车辆未上牌时禁用 -->
- <el-form-item :disabled="insurancePolicyForm.isRegistered == '2'" label="车牌" prop="licenseNo">
- <el-input v-model="insurancePolicyForm.licenseNo" minlength="7" maxlength="8" placeholder="输入车牌号"
- @input="upperCaseType('licenseNo')" @change="getQuoteNumber"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 车架号(VIN)输入框:带查询按钮 -->
- <el-form-item label="车牌识别代码" prop="vinNo">
- <el-input v-model="insurancePolicyForm.vinNo" placeholder="请输入车辆识别代码" @input="upperCaseType('vinNo')"
- @change="getQuoteNumber">
- <template #append>
- <el-button icon="Search" @click="handleCarNumber" />
- </template>
- </el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 品牌型号输入框:带查询按钮 -->
- <el-form-item label="品牌型号" prop="brandName">
- <el-input v-model="insurancePolicyForm.brandName" placeholder="请输入品牌型号"
- @input="upperCaseType('brandName')">
- <template #append>
- <el-button icon="Search" @click="handleCarCode" />
- </template>
- </el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 发动机号输入框 -->
- <el-form-item label="发动机号" prop="engineNo">
- <el-input v-model="insurancePolicyForm.engineNo" placeholder="请输入发动机号"
- @input="upperCaseType('engineNo')" @change="getQuoteNumber"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 使用性质下拉选择 -->
- <el-form-item label="使用性质" prop="carNatureCode">
- <el-select v-model="insurancePolicyForm.carNatureCode" placeholder="请选择">
- <el-option v-for="item in optionObj.car_nature_code" :label="item.label" :value="item.value"
- :key="item.value"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 车辆用途下拉选择 -->
- <el-form-item label="车辆用途" prop="vehicleUseCode">
- <el-select v-model="insurancePolicyForm.vehicleUseCode" placeholder="请选择">
- <el-option v-for="item in optionObj.vehicle_use_code" :label="item.label" :value="item.value"
- :key="item.value"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 车辆种类下拉选择 -->
- <el-form-item label="车辆种类" prop="plateType">
- <el-select v-model="insurancePolicyForm.plateType" placeholder="请选择">
- <el-option v-for="item in optionObj.car_kind_code" :label="item.label" :value="item.value"
- :key="item.value"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 车辆类型下拉选择 -->
- <el-form-item label="车辆类型" prop="carTypeCode">
- <el-select v-model="insurancePolicyForm.carTypeCode" placeholder="请选择">
- <el-option v-for="item in optionObj.car_type_code" :label="item.label" :value="item.value"
- :key="item.value"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 能源种类下拉选择 -->
- <el-form-item label="能源种类" prop="energyTypeCode">
- <el-select v-model="insurancePolicyForm.energyTypeCode" placeholder="请选择">
- <el-option v-for="item in optionObj.energy_type_code" :label="item.label" :value="item.value"
- :key="item.value"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 注册日期选择器 -->
- <el-form-item label="注册日期" prop="registerDate">
- <el-date-picker v-model="insurancePolicyForm.registerDate" type="date" placeholder="请选择"
- value-format="YYYY-MM-DD" style="width: 100%" />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 发证日期选择器 -->
- <el-form-item label="发证日期" prop="issueDate">
- <el-date-picker v-model="insurancePolicyForm.issueDate" type="date" placeholder="请选择"
- value-format="YYYY-MM-DD" style="width: 100%" @change="issueDateChange" />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 整备质量输入框 -->
- <el-form-item label="整备质量" prop="completeKerbMass">
- <el-input v-model="insurancePolicyForm.completeKerbMass" type="number" placeholder="输入整备质量">
- <template #append>
- <span>千克(KG)</span>
- </template>
- </el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 核定载质量输入框 -->
- <el-form-item label="核定载质量" prop="limitLoad">
- <el-input v-model="insurancePolicyForm.limitLoad" type="number" placeholder="请输入核定载质量">
- <template #append>
- <span>千克(KG)</span>
- </template>
- </el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 座位数输入框 -->
- <el-form-item label="座位数" prop="seatCount">
- <el-input v-model="insurancePolicyForm.seatCount" type="number" placeholder="请输入座位数">
- <template #append>
- <span>座</span>
- </template>
- </el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 年款输入框 -->
- <el-form-item label="年款" prop="carYear">
- <el-input v-model="insurancePolicyForm.carYear" type="number" placeholder="请输入年款"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 新车购置价输入框 -->
- <el-form-item label="新车购置价" prop="purchasePrice">
- <el-input v-model="insurancePolicyForm.purchasePrice" type="number" placeholder="请输入新车购置价">
- <template #append>
- <span>元</span>
- </template>
- </el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 排量输入框 -->
- <el-form-item label="排量" prop="displacement">
- <el-input v-model="insurancePolicyForm.displacement" type="number" placeholder="请输入排量">
- <template #append>
- <span>升(L)</span>
- </template>
- </el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 功率输入框 -->
- <el-form-item label="功率" prop="powerScale">
- <el-input v-model="insurancePolicyForm.powerScale" type="number" placeholder="输入功率">
- <template #append>
- <span>千瓦(KW)</span>
- </template>
- </el-input>
- </el-form-item>
- </el-col>
- <el-col v-if="insurancePolicyForm.transfer" :span="6">
- <!-- 转移登记日期选择器 -->
- <el-form-item label="转移登记日期" prop="transferDate">
- <el-date-picker v-model="insurancePolicyForm.transferDate" type="date" placeholder="请选择"
- value-format="YYYY-MM-DD" style="width: 100%" />
- </el-form-item>
- </el-col>
- </el-row>
- <template #icon="{ isActive }">
- <div class="icon">
- <!-- 证件识别按钮 -->
- <el-button link type="primary" @click.stop="handleRecognition('clxx')"><img
- src="@/assets/images/insurancePolicy/sao.png" class="myIcon" />证件识别</el-button>
- <span class="icon-ele flex a-c ">
- {{ isActive ? '收起' : '展开' }}
- </span>
- <el-icon v-if="isActive" color="#333">
- <ArrowDownBold />
- </el-icon>
- <el-icon v-else color="#333">
- <ArrowUpBold />
- </el-icon>
- </div>
- </template>
- </el-collapse-item>
- <!-- 车主信息面板 -->
- <el-collapse-item name="owner">
- <template #title>
- <span class="title">车主信息</span>
- </template>
- <el-row :gutter="20" class="formItem formBlock">
- <el-col :span="6">
- <!-- 车主姓名输入框 -->
- <el-form-item label="车主姓名" prop="name1">
- <el-input v-model="insurancePolicyForm.name1" placeholder="输入车主姓名"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 车主手机号输入框 -->
- <el-form-item label="车主手机号" prop="mobile1">
- <el-input v-model="insurancePolicyForm.mobile1" placeholder="请输入车主手机号" maxlength="11"
- show-word-limit></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 证件类型选择器 -->
- <el-form-item label="证件类型" prop="personType1">
- <el-select v-model="insurancePolicyForm.identifyType1" placeholder="请选择">
- <el-option label="身份证" value="01" key="01"></el-option>
- <el-option label="营业执照" value="02" key="02"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col v-if="insurancePolicyForm.identifyType1 === '01'" :span="6">
- <!-- 证件号码输入框(身份证) -->
- <el-form-item label="证件号码" prop="identifyNumber1">
- <el-input v-model="insurancePolicyForm.identifyNumber1" placeholder="请输入证件号码"
- @change="getAgeByIdCard($event, insurancePolicyForm)"></el-input>
- </el-form-item>
- </el-col>
- <el-col v-else :span="6">
- <!-- 统一社会信用代码输入框(企业) -->
- <el-form-item label="统一社会信用代码" prop="identifyNumber1">
- <el-input v-model="insurancePolicyForm.identifyNumber1" placeholder="请输入证件号码"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 证件有效期起期选择器 -->
- <el-form-item prop="identifyValidDate1" label="有效期起期">
- <el-date-picker v-model="insurancePolicyForm.identifyValidDate1" type="date" placeholder="请选择"
- value-format="YYYY-MM-DD" style="width: 100%"
- @blur="(e: any) => insurancePolicyForm.identifyValidDate1 = changeDate(e)" />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 证件有效期止期选择器 -->
- <el-form-item prop="identifyValidEndDate1" label="有效期止期">
- <div style="display: flex; align-items: center; justify-content: flex-start; width: 100%">
- <el-date-picker v-model="insurancePolicyForm.identifyValidEndDate1" type="date" placeholder="请选择"
- value-format="YYYY-MM-DD" style="width: calc(100% - 64px)"
- @blur="(e: any) => insurancePolicyForm.identifyValidEndDate1 = changeDate(e)" />
- <el-button type="primary" @click="longTime">长期</el-button>
- </div>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 地址输入框 -->
- <el-form-item label="地址" prop="addr1">
- <el-input v-model="insurancePolicyForm.addr1" placeholder="请输入地址"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 投保人座机输入框(仅企业) -->
- <el-form-item v-if="insurancePolicyForm.identifyType1 === '02'" label="投保人座机" prop="telephone">
- <el-input v-model="insurancePolicyForm.telephone1" placeholder="请输入投保人座机"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 投保人联系人输入框(仅企业) -->
- <el-form-item v-if="insurancePolicyForm.identifyType1 === '02'" label="投保人联系人" prop="person">
- <el-input v-model="insurancePolicyForm.person1" placeholder="请输入投保人联系人"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 联系人证件号码输入框(仅企业) -->
- <el-form-item v-if="insurancePolicyForm.identifyType1 === '02'" label="联系人证件号码" prop="age">
- <el-input v-model.number="insurancePolicyForm.age1" placeholder="请输入联系人证件号码"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 有效期止期选择器(仅企业) -->
- <el-form-item v-if="insurancePolicyForm.identifyType1 === '02'" prop="identifyValidEndDate" label="有效期止期">
- <el-date-picker v-model="insurancePolicyForm.identifyValidEndDate1" type="date" placeholder="请选择"
- value-format="YYYY-MM-DD" style="width: 100%" />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 地区选择器(仅企业) -->
- <el-form-item v-if="insurancePolicyForm.identifyType1 === '02'" prop="area" label="地区">
- <el-cascader clearable style="width: 100%" v-model="insurancePolicyForm.address1" :options="areaOptins"
- :props="areaProps"></el-cascader>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 注册资金输入框(仅企业) -->
- <el-form-item v-if="insurancePolicyForm.identifyType1 === '02'" label="注册资金" prop="money">
- <el-input v-model="insurancePolicyForm.registeredCapital1" placeholder="请输入注册资金">
- <template #append>
- <span>元</span>
- </template>
- </el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item v-if="insurancePolicyForm.identifyType1 === '02'" label="电子邮箱" prop="email">
- <el-input v-model="insurancePolicyForm.email1" placeholder="请输入电子邮箱"></el-input>
- </el-form-item>
- </el-col>
- <!-- <el-col :span="6">
- <el-form-item label="是否二手车" prop="gender">
- <el-select v-model="insurancePolicyForm.gender" placeholder="请选择">
- <el-option label="是" value="1" key="1"></el-option>
- <el-option label="否" value="2" key="2"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="商业险是否过户" prop="gender">
- <el-select v-model="insurancePolicyForm.gender" placeholder="请选择">
- <el-option label="是" value="1" key="1"></el-option>
- <el-option label="否" value="2" key="2"></el-option>
- </el-select>
- </el-form-item>
- </el-col>-->
- </el-row>
- <template #icon="{ isActive }">
- <div class="icon">
- <el-button link type="primary" @click.stop="handleRecognition('czxx')"><img
- src="@/assets/images/insurancePolicy/sao.png" class="myIcon" />证件识别</el-button>
- <span class="icon-ele">
- {{ isActive ? '收起' : '展开' }}
- </span>
- <el-icon v-if="isActive" color="#333">
- <ArrowDownBold />
- </el-icon>
- <el-icon v-else color="#333">
- <ArrowUpBold />
- </el-icon>
- </div>
- </template>
- </el-collapse-item>
- <el-collapse-item name="owner1">
- <template #title>
- <div class="title">
- 投保人信息
- <div class="ml-5 flex a-c">
- <span class="ordinary" :class="{ 'active': item.checked }" v-for="item in btns.owner1" :key="item.text"
- @click.stop="handleChange(item, 'owner1')">
- {{ item.text }}
- </span>
- </div>
- </div>
- </template>
- <el-row :gutter="20" class="formItem formBlock" v-if="btns.owner1Text === '其他人'">
- <el-col :span="6">
- <el-form-item label="车主姓名" prop="name2">
- <el-input v-model="insurancePolicyForm.name2" placeholder="输入车主姓名"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="车主手机号" prop="mobile2">
- <el-input v-model="insurancePolicyForm.mobile2" placeholder="请输入车主手机号"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="证件类型" prop="personType2">
- <el-select v-model="insurancePolicyForm.identifyType2" placeholder="请选择">
- <el-option label="身份证" value="01" key="01"></el-option>
- <el-option label="营业执照" value="02" key="02"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col v-if="insurancePolicyForm.identifyType2 === '01'" :span="6">
- <el-form-item label="证件号码" prop="identifyNumber2">
- <el-input v-model="insurancePolicyForm.identifyNumber2" placeholder="请输入证件号码"
- @change="getAgeByIdCard($event, insurancePolicyForm)"></el-input>
- </el-form-item>
- </el-col>
- <el-col v-else :span="6">
- <el-form-item label="统一社会信用代码" prop="identifyNumber2">
- <el-input v-model="insurancePolicyForm.identifyNumber2" placeholder="请输入证件号码"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item prop="identifyValidDate2" label="有效期起期">
- <el-date-picker v-model="insurancePolicyForm.identifyValidDate2" type="date" placeholder="请选择"
- value-format="YYYY-MM-DD" style="width: 100%"
- @blur="(e: any) => insurancePolicyForm.identifyValidDate2 = changeDate(e)" />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item prop="identifyValidEndDate2" label="有效期止期">
- <el-date-picker v-model="insurancePolicyForm.identifyValidEndDate2" type="date" placeholder="请选择"
- value-format="YYYY-MM-DD" style="width: 100%"
- @blur="(e: any) => insurancePolicyForm.identifyValidEndDate2 = changeDate(e)" />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="地址" prop="addr2">
- <el-input v-model="insurancePolicyForm.addr2" placeholder="请输入地址"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item v-if="insurancePolicyForm.identifyType2 === '02'" label="投保人座机" prop="telephone">
- <el-input v-model="insurancePolicyForm.telephone2" placeholder="请输入投保人座机"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item v-if="insurancePolicyForm.identifyType2 === '02'" label="投保人联系人" prop="person">
- <el-input v-model="insurancePolicyForm.person2" placeholder="请输入投保人联系人"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item v-if="insurancePolicyForm.identifyType2 === '02'" label="联系人证件号码" prop="age">
- <el-input v-model.number="insurancePolicyForm.age2" placeholder="请输入联系人证件号码"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item v-if="insurancePolicyForm.identifyType2 === '02'" prop="identifyValidEndDate" label="有效期止期">
- <el-date-picker v-model="insurancePolicyForm.identifyValidEndDate2" type="date" placeholder="请选择"
- value-format="YYYY-MM-DD" style="width: 100%" />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item v-if="insurancePolicyForm.identifyType2 === '02'" prop="area" label="地区">
- <el-cascader clearable style="width: 100%" v-model="insurancePolicyForm.address2" :options="areaOptins"
- :props="areaProps"></el-cascader>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item v-if="insurancePolicyForm.identifyType2 === '02'" label="注册资金" prop="money">
- <el-input v-model="insurancePolicyForm.registeredCapital2" placeholder="请输入注册资金">
- <template #append>
- <span>元</span>
- </template>
- </el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item v-if="insurancePolicyForm.identifyType2 === '02'" label="电子邮箱" prop="email">
- <el-input v-model="insurancePolicyForm.email2" placeholder="请输入电子邮箱"></el-input>
- </el-form-item>
- </el-col>
- <!-- <el-col :span="6">
- <el-form-item label="是否二手车" prop="gender">
- <el-select v-model="insurancePolicyForm.policyHolderInfo.gender" placeholder="请选择">
- <el-option label="是" value="1" key="1"></el-option>
- <el-option label="否" value="2" key="2"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="商业险是否过户" prop="gender">
- <el-select v-model="insurancePolicyForm.policyHolderInfo.gender" placeholder="请选择">
- <el-option label="是" value="1" key="1"></el-option>
- <el-option label="否" value="2" key="2"></el-option>
- </el-select>
- </el-form-item>
- </el-col>-->
- </el-row>
- <template #icon="{ isActive }">
- <div class="icon">
- <el-button link type="primary" @click.stop="handleRecognition('tbrxx')"><img
- src="@/assets/images/insurancePolicy/sao.png" class="myIcon" />证件识别</el-button>
- <span class="icon-ele">
- {{ isActive ? '收起' : '展开' }}
- </span>
- <el-icon v-if="isActive" color="#333">
- <ArrowDownBold />
- </el-icon>
- <el-icon v-else color="#333">
- <ArrowUpBold />
- </el-icon>
- </div>
- </template>
- </el-collapse-item>
- <el-collapse-item name="owner2">
- <template #title>
- <div class="title">
- 被保人信息
- <div class="ml-5 flex a-c">
- <span class="ordinary" :class="{ 'active': item.checked }" v-for="item in btns.owner2" :key="item.text"
- @click.stop="handleChange(item, 'owner2')">
- {{ item.text }}
- </span>
- </div>
- </div>
- </template>
- <el-row :gutter="20" class="formItem formBlock" v-if="btns.owner2Text === '其他人'">
- <el-col :span="6">
- <el-form-item label="车主姓名" prop="name3">
- <el-input v-model="insurancePolicyForm.name3" placeholder="输入车主姓名"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="车主手机号" prop="mobile3">
- <el-input v-model="insurancePolicyForm.mobile3" placeholder="请输入车主手机号"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="证件类型" prop="personType3">
- <el-select v-model="insurancePolicyForm.identifyType3" placeholder="请选择">
- <el-option label="身份证" value="01" key="01"></el-option>
- <el-option label="营业执照" value="02" key="02"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col v-if="insurancePolicyForm.identifyType3 === '01'" :span="6">
- <el-form-item label="证件号码" prop="identifyNumber3">
- <el-input v-model="insurancePolicyForm.identifyNumber3" placeholder="请输入证件号码"
- @change="getAgeByIdCard($event, insurancePolicyForm)"></el-input>
- </el-form-item>
- </el-col>
- <el-col v-else :span="6">
- <el-form-item label="统一社会信用代码" prop="identifyNumber3">
- <el-input v-model="insurancePolicyForm.identifyNumber3" placeholder="请输入证件号码"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item prop="identifyValidDate3" label="有效期起期">
- <el-date-picker v-model="insurancePolicyForm.identifyValidDate3" type="date" placeholder="请选择"
- value-format="YYYY-MM-DD" style="width: 100%"
- @blur="(e: any) => insurancePolicyForm.identifyValidDate3 = changeDate(e)" />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item prop="identifyValidEndDate3" label="有效期止期">
- <el-date-picker v-model="insurancePolicyForm.identifyValidEndDate3" type="date" placeholder="请选择"
- value-format="YYYY-MM-DD" style="width: 100%"
- @blur="(e: any) => insurancePolicyForm.identifyValidEndDate3 = changeDate(e)" />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="地址" prop="addr3">
- <el-input v-model="insurancePolicyForm.addr3" placeholder="请输入地址"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item v-if="insurancePolicyForm.identifyType3 === '02'" label="投保人座机" prop="telephone">
- <el-input v-model="insurancePolicyForm.telephone3" placeholder="请输入投保人座机"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item v-if="insurancePolicyForm.identifyType3 === '02'" label="投保人联系人" prop="person">
- <el-input v-model="insurancePolicyForm.person3" placeholder="请输入投保人联系人"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item v-if="insurancePolicyForm.identifyType3 === '02'" label="联系人证件号码" prop="age">
- <el-input v-model.number="insurancePolicyForm.age3" placeholder="请输入联系人证件号码"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item v-if="insurancePolicyForm.identifyType3 === '02'" prop="identifyValidEndDate" label="有效期止期">
- <el-date-picker v-model="insurancePolicyForm.identifyValidEndDate3" type="date" placeholder="请选择"
- value-format="YYYY-MM-DD" style="width: 100%" />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item v-if="insurancePolicyForm.identifyType3 === '02'" prop="area" label="地区">
- <el-cascader clearable style="width: 100%" v-model="insurancePolicyForm.address3" :options="areaOptins"
- :props="areaProps"></el-cascader>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item v-if="insurancePolicyForm.identifyType3 === '02'" label="注册资金" prop="money">
- <el-input v-model="insurancePolicyForm.registeredCapital3" placeholder="请输入注册资金">
- <template #append>
- <span>元</span>
- </template>
- </el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item v-if="insurancePolicyForm.identifyType3 === '02'" label="电子邮箱" prop="email">
- <el-input v-model="insurancePolicyForm.email3" placeholder="请输入电子邮箱"></el-input>
- </el-form-item>
- </el-col>
- <!-- <el-col :span="6">
- <el-form-item label="是否二手车" prop="gender">
- <el-select v-model="insurancePolicyForm.gender3" placeholder="请选择">
- <el-option label="是" value="1" key="1"></el-option>
- <el-option label="否" value="2" key="2"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="商业险是否过户" prop="gender">
- <el-select v-model="insurancePolicyForm.gender3" placeholder="请选择">
- <el-option label="是" value="1" key="1"></el-option>
- <el-option label="否" value="2" key="2"></el-option>
- </el-select>
- </el-form-item>
- </el-col>-->
- </el-row>
- <template #icon="{ isActive }">
- <div class="icon">
- <el-button link type="primary" @click.stop="handleRecognition('bbrxx')"><img
- src="@/assets/images/insurancePolicy/sao.png" class="myIcon" />证件识别</el-button>
- <span class="icon-ele">
- {{ isActive ? '收起' : '展开' }}
- </span>
- <el-icon v-if="isActive" color="#333">
- <ArrowDownBold />
- </el-icon>
- <el-icon v-else color="#333">
- <ArrowUpBold />
- </el-icon>
- </div>
- </template>
- </el-collapse-item>
- <el-collapse-item name="tax">
- <template #title>
- <div class="title">
- 车船税
- <div class="ml-5 flex a-c">
- <span class="ordinary" :class="{ 'active': item.checked }" v-for="item in btns.owner3" :key="item.text"
- @click.stop="handleChange(item, 'owner3')">
- {{ item.text }}
- </span>
- </div>
- </div>
- </template>
- <div v-if="btns.owner3show === '正常交税'" style="width: 100%">
- <el-row :gutter="20" class="formItem formBlock">
- <el-col :span="6">
- <el-form-item label="纳税人名称" prop="taxpayerName">
- <el-input v-model="insurancePolicyForm.taxpayerName" placeholder="请输入纳税人名称" maxlength="50"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="证件类型" prop="taxpayerIdentifier">
- <el-select v-model="insurancePolicyForm.taxpayerIdentifier" placeholder="请选择">
- <el-option label="身份证" value="01" key="01"></el-option>
- <el-option label="营业执照" value="02" key="02"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="证件号码" prop="identifyNumber">
- <el-input v-model="insurancePolicyForm.identifyNumber" placeholder="请输入证件号码"
- maxlength="50"></el-input>
- </el-form-item>
- </el-col>
- </el-row>
- </div>
- <div v-if="btns.owner3show === '免税'" style="width: 100%">
- <el-row :gutter="20" class="formItem formBlock">
- <el-col :span="6">
- <el-form-item label="减免税凭证号" prop="extendChar2">
- <el-input v-model="insurancePolicyForm.extendChar2" placeholder="请输入减免税凭证号" maxlength="50"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="减免税原因" prop="relifReason">
- <el-select v-model="insurancePolicyForm.relifReason" placeholder="请选择">
- <el-option label="原因1" value="1" key="1"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="税务机关代码" prop="taxComCode">
- <el-input v-model="insurancePolicyForm.taxComCode" placeholder="请输入税务机关代码" maxlength="50"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="税务机关名称" prop="taxComName">
- <el-input v-model="insurancePolicyForm.taxComName" placeholder="请输入税务机关名称" maxlength="50"></el-input>
- </el-form-item>
- </el-col>
- </el-row>
- </div>
- <div v-if="btns.owner3show === '减税'" style="width: 100%">
- <el-row :gutter="20" class="formItem formBlock">
- <el-col :span="6">
- <el-form-item label="减免税凭证号" prop="extendChar2">
- <el-input v-model="insurancePolicyForm.extendChar2" placeholder="请输入减免税凭证号" maxlength="50"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="减免税原因" prop="relifReason">
- <el-select v-model="insurancePolicyForm.relifReason" placeholder="请选择">
- <el-option label="原因1" value="1" key="1"></el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="税务机关代码" prop="taxComCode">
- <el-input v-model="insurancePolicyForm.taxComCode" placeholder="请输入税务机关代码" maxlength="50"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="税务机关名称" prop="taxComName">
- <el-input v-model="insurancePolicyForm.taxComName" placeholder="请输入税务机关名称" maxlength="50"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="减税比例" prop="taxRelief">
- <el-input v-model="insurancePolicyForm.taxRelief" type="number" placeholder="请输入减税比例">
- <template #append>
- <span>%</span>
- </template>
- </el-input>
- </el-form-item>
- </el-col>
- </el-row>
- </div>
- <div v-if="btns.owner3show === '完税'" style="width: 100%">
- <el-row :gutter="20" class="formItem formBlock">
- <el-col :span="6">
- <el-form-item label="完税凭证号" prop="extendChar2">
- <el-input v-model="insurancePolicyForm.extendChar2" placeholder="请输入完税凭证号" maxlength="50"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="税务机关代码" prop="taxComCode">
- <el-input v-model="insurancePolicyForm.taxComCode" placeholder="请输入税务机关代码" maxlength="50"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item label="税务机关名称" prop="taxComName">
- <el-input v-model="insurancePolicyForm.taxComName" placeholder="请输入税务机关名称" maxlength="50"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item prop="taxDocumentDate" label="完税凭证填发日期">
- <el-date-picker v-model="insurancePolicyForm.taxDocumentDate" type="date" placeholder="请选择"
- value-format="YYYY-MM-DD" style="width: 100%" />
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item prop="taxPaidAreaCode" label="完税凭证地区">
- <el-cascader filterable clearable style="width: 100%" v-model="insurancePolicyForm.taxPaidAreaCode"
- :options="areaOptins" :props="areaProps"></el-cascader>
- </el-form-item>
- </el-col>
- </el-row>
- </div>
- <template #icon="{ isActive }">
- <div class="icon">
- <span class="icon-ele">
- {{ isActive ? '收起' : '展开' }}
- </span>
- <el-icon v-if="isActive" color="#333">
- <ArrowDownBold />
- </el-icon>
- <el-icon v-else color="#333">
- <ArrowUpBold />
- </el-icon>
- </div>
- </template>
- </el-collapse-item>
- <el-collapse-item name="insurance">
- <template #title>
- <div class="title">
- 投保信息
- <div class="ml-5 flex a-c">
- <span class="ordinary" :class="{ 'active': item.checked }" v-for="item in optionObj.insuranceType"
- :key="item.value" @click.stop="handleChange(item, 'insurance')">
- {{ item.label }}
- </span>
- </div>
- </div>
- </template>
- <el-form-item class="white-m-p24" label="车辆其他信息">
- <el-checkbox v-model="insurancePolicyForm.transfer" value="1">是否过户</el-checkbox>
- <el-checkbox v-model="insurancePolicyForm.biTransfer" value="2">商业险是否过户</el-checkbox>
- <el-checkbox v-model="insurancePolicyForm.secondHandCar" value="3">二手车</el-checkbox>
- </el-form-item>
- <div class="insurance-jq flex a-c "
- v-if="insurancePolicyForm.productId === '0330' || insurancePolicyForm.productId === '0330034002' || insurancePolicyForm.productId === '0330034001'">
- <span>交强险</span>
- <span class="checkbox" :class="{ 'cehcked': item.checked }" v-for="item in jqWork" :key="item.text"
- @click="JQChange(item)">{{ item.text }}</span>
- <div class="time">
- <el-form-item prop="startDate" label="">
- <el-date-picker v-model="insurancePolicyForm.JQStartDate" type="datetime" placeholder="请选择"
- value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" @change="jqChange"
- :disabled-date="disabledDate" />
- </el-form-item>
- <span class="ml-5 mr-5">至</span>
- <el-form-item prop="endDate" label="">
- <el-date-picker v-model="insurancePolicyForm.JQEndDate" type="datetime" placeholder="请选择"
- value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
- </el-form-item>
- </div>
- </div>
- <div class="insurance-jq flex a-c "
- v-if="insurancePolicyForm.productId === '034001' || insurancePolicyForm.productId === '034002' || insurancePolicyForm.productId === '0330034002' || insurancePolicyForm.productId === '0330034001'">
- <span>商业险</span>
- <span class="checkbox" :class="{ 'cehcked': item.checked }" v-for="item in syWork" :key="item.text"
- @click="SYChange(item)">{{ item.text }}</span>
- <div class="time">
- <el-form-item prop="startDate" label="">
- <el-date-picker v-model="insurancePolicyForm.SYStartDate" type="datetime" placeholder="请选择"
- value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" @change="syChange"
- :disabled-date="disabledDate" />
- </el-form-item>
- <span class="ml-5 mr-5">至</span>
- <el-form-item prop="endDate" label="">
- <el-date-picker v-model="insurancePolicyForm.SYEndDate" type="datetime" placeholder="请选择"
- value-format="YYYY-MM-DD HH:mm:ss" style="width: 100%" />
- </el-form-item>
- </div>
- </div>
- <template #icon="{ isActive }">
- <div class="icon">
- <span class="icon-ele">
- {{ isActive ? '收起' : '展开' }}
- </span>
- <el-icon v-if="isActive" color="#333">
- <ArrowDownBold />
- </el-icon>
- <el-icon v-else color="#333">
- <ArrowUpBold />
- </el-icon>
- </div>
- </template>
- </el-collapse-item>
- <el-collapse-item name="company">
- <template #title>
- <span class="title">
- 报价公司
- </span>
- </template>
- <el-table :data="quoteData" style="width: calc(100% - 48px); margin: 0 24px" row-key="id"
- :preserve-expanded-content="true" @selection-change="handleSelect" @select="handelSelectRow"
- @row-click="handleClickRow" @expand-change="handelExpend">
- <el-table-column type="expand">
- <template #default="scope">
- <div class="equities">
- <div class="mr-3 equitiesTitle">客户权益</div>
- <div class="equitiesBox">
- <div class="equitiesLabel">
- <img src="@/assets/images/home/quanyi.png" />
- <div>掌柜权益</div>
- </div>
- <div class="circle"></div>
- <div>为车主提供 "省心、省时、又省钱" 的全场景服务</div>
- <el-button style="margin: 0 20px" size="small" type="primary"
- @click="handleOpenEquities(scope.row.quoteResult.ordersNo)">选择权益</el-button>
- </div>
- <div class="equitiesChoice">
- 已选<span style="color: #0083FF">{{ insOrderRightsInfoDto.length || 0 }}</span>项权益,共计<span
- style="color: #FF8C21">{{ insOrderRightsInfoDto.totalPriceCount || 0 }}</span>元
- </div>
- </div>
- <div class="expandFlex">
- <div class="expandTitle flex a-c j-c">车险方案</div>
- <div style="width: calc(100% - 50px); ">
- <div class="product">
- <span class="productItem" :class="{ 'productActive': scope.row.productIndex === index }"
- v-for="(item, index) in scope.row.projectList"
- @click.stop="handleProduct(scope, item, index)">{{ item.schemeName }}</span>
- </div>
- <el-row :gutter="20">
- <el-col :span="12">
- <div class="quoteTitle">方案明细</div>
- <el-table :data="scope.row.projectList?.[scope.row.productIndex]?.kinds">
- <el-table-column width="50" align="center"
- v-if="scope.row.projectList?.[scope.row.productIndex]?.schemeType != '1'">
- <template #header>
- <el-icon style="cursor: pointer;" @click="handlePopover(scope)">
- <CirclePlus />
- </el-icon>
- </template>
- <template #default="props">
- <el-icon @click="handleInsuranceDel(scope, props)">
- <Delete />
- </el-icon>
- </template>
- </el-table-column>
- <el-table-column label="险种" prop="kindName" align="center"></el-table-column>
- <el-table-column label="保额" align="center">
- <template #default="props">
- <el-select v-model="props.row.amount"
- :disabled="scope.row.projectList?.[scope.row.productIndex]?.schemeType == '1'">
- <el-option v-for="item in props.row.options" :label="item.label"
- :value="item.value"></el-option>
- </el-select>
- </template>
- </el-table-column>
- <el-table-column label="保费" prop="unitAmount" align="center"></el-table-column>
- </el-table>
- <div class="quoteTitle"
- v-if="scope.row.projectList?.[scope.row.productIndex]?.rescue && scope.row.projectList?.[scope.row.productIndex]?.detection && scope.row.projectList?.[scope.row.productIndex]?.driver && scope.row.projectList?.[scope.row.productIndex]?.inspect">
- 增值服务</div>
- <el-row :gutter="20"
- v-if="scope.row.projectList?.[scope.row.productIndex]?.rescue && scope.row.projectList?.[scope.row.productIndex]?.detection && scope.row.projectList?.[scope.row.productIndex]?.driver && scope.row.projectList?.[scope.row.productIndex]?.inspect">
- <el-col :span="6" class="quoteFlex">
- 救援
- <el-select v-model="scope.row.projectList[scope.row.productIndex].rescue"
- :disabled="scope.row.projectList?.[scope.row.productIndex]?.schemeType == '1'"
- size="small" style="width: 80px; margin: 0 10px">
- <el-option label="1" value="1"></el-option>
- </el-select>
- 次
- </el-col>
- <el-col :span="6" class="quoteFlex">
- 检测
- <el-select v-model="scope.row.projectList[scope.row.productIndex].detection"
- :disabled="scope.row.projectList?.[scope.row.productIndex]?.schemeType == '1'"
- size="small" style="width: 80px; margin: 0 10px">
- <el-option label="1" value="1"></el-option>
- </el-select>
- 次
- </el-col>
- <el-col :span="6" class="quoteFlex">
- 代驾
- <el-select v-model="scope.row.projectList[scope.row.productIndex].driver"
- :disabled="scope.row.projectList?.[scope.row.productIndex]?.schemeType == '1'"
- size="small" style="width: 80px; margin: 0 10px">
- <el-option label="1" value="1"></el-option>
- </el-select>
- 次
- </el-col>
- <el-col :span="6" class="quoteFlex">
- 送检
- <el-select v-model="scope.row.projectList[scope.row.productIndex].inspect"
- :disabled="scope.row.projectList?.[scope.row.productIndex]?.schemeType == '1'"
- size="small" style="width: 80px; margin: 0 10px">
- <el-option label="1" value="1"></el-option>
- </el-select>
- 次
- </el-col>
- </el-row>
- <div class="quoteTitle">驾意险</div>
- <el-table :data="scope.row.projectList?.[scope.row.productIndex]?.drivings">
- <el-table-column width="50" align="center"
- v-if="scope.row.projectList?.[scope.row.productIndex]?.schemeType != '1'">
- <template #header>
- <el-icon @click="handleDriving(scope)">
- <CirclePlus />
- </el-icon>
- </template>
- <template #default="props">
- <el-icon @click="handleDrivingDel(scope, props)">
- <Delete />
- </el-icon>
- </template>
- </el-table-column>
- <el-table-column label="产品名称" prop="productName" align="center">
- <template #default="props">
- <el-button link type="primary" @click="getJYXDetail(props.row)">{{ props.row.productName
- }}</el-button>
- </template>
- </el-table-column>
- <el-table-column label="数量" align="center">
- <template #default="props">
- <el-input :disabled="scope.row.projectList?.[scope.row.productIndex]?.schemeType === '1'"
- v-model="props.row.quantity" style="width: 140px">
- <template #append>
- <span>份</span>
- </template>
- </el-input>
- </template>
- </el-table-column>
- <el-table-column label="保费" prop="premium" align="center"></el-table-column>
- </el-table>
- <el-button size="small" link type="primary" @click="handleSelectSpecial(scope)">选择特约</el-button>
- <el-table :data="scope.row.specialSelectedList"
- v-show="scope.row.specialSelectedList?.length > 0">
- <el-table-column prop="clauseName" label="特约名称"></el-table-column>
- </el-table>
- </el-col>
- <el-col :span="12" style="border-left: 1px dashed #eeeeee">
- <div class="premiumFactor">
- <div class="header ">保费因素</div>
- <div class="flex a-start f-wrap">
- <div class="Factor-item flex a-c f-c ">
- <span class="item-header flex a-c ">总赔付率</span>
- <span>{{ scope.row.quoteResult?.scoreVo?.lossRation || '--' }}</span>
- </div>
- <div class="Factor-item flex a-c f-c ">
- <span class="item-header flex a-c ">交强赔付率</span>
- <span>{{ scope.row.quoteResult?.scoreVo?.jqLossRation || '--' }}</span>
- </div>
- <div class="Factor-item flex a-c f-c ">
- <span class="item-header flex a-c ">商业赔付率</span>
- <span>{{ scope.row.quoteResult?.scoreVo?.syLossRation || '--' }}</span>
- </div>
- <div class="Factor-item flex a-c f-c ">
- <span class="item-header flex a-c ">类型</span>
- <span>{{ scope.row.quoteResult?.scoreVo?.type || '--' }}</span>
- </div>
- <div class="Factor-item flex a-c f-c ">
- <span class="item-header flex a-c ">交强出险次数</span>
- <span>{{ scope.row.quoteResult?.scoreVo?.ciClaims || '--' }}</span>
- </div>
- <div class="Factor-item flex a-c f-c ">
- <span class="item-header flex a-c ">商业出险次数</span>
- <span>{{ scope.row.quoteResult?.scoreVo?.biClaims || '--' }}</span>
- </div>
- <div class="Factor-item flex a-c f-c ">
- <span class="item-header flex a-c ">交强续保</span>
- <span>{{ scope.row.quoteResult?.scoreVo?.jqRenewal || '--' }}</span>
- </div>
- <div class="Factor-item flex a-c f-c ">
- <span class="item-header flex a-c ">商业续保</span>
- <span>{{ scope.row.quoteResult?.scoreVo?.syRenewal || '--' }}</span>
- </div>
- <div class="Factor-item flex a-c f-c ">
- <span class="item-header flex a-c ">总折扣率</span>
- <span>{{ scope.row.quoteResult?.scoreVo?.totalAdjustRate || '--' }}</span>
- </div>
- <div class="Factor-item flex a-c f-c ">
- <span class="item-header flex a-c ">商业折扣</span>
- <span>{{ scope.row.quoteResult?.scoreVo?.syAdjustRate || '--' }}</span>
- </div>
- <div class="Factor-item flex a-c f-c ">
- <span class="item-header flex a-c ">交强折扣</span>
- <span>{{ scope.row.quoteResult?.scoreVo?.jqAdjustRate || '--' }}</span>
- </div>
- <!-- 各保司定制评分 -->
- <div class="Factor-item flex a-c f-c "
- v-for="(item, index) in scope.row.quoteResult?.scoreVo?.scoreJson" :key="index">
- <span class="item-header flex a-c ">{{ item.scoreName }}</span>
- <span>{{ item.score || '--' }}</span>
- </div>
- </div>
- </div>
- </el-col>
- <el-col :span="12" style="border-left: 1px dashed #eeeeee">
- <p style="text-align: center">优惠信息</p>
- <el-table class="factorTable" :data="scope.row.discounts">
- <el-table-column label="险种" prop="name"></el-table-column>
- <el-table-column label="比例" prop="commissionRatio"></el-table-column>
- <el-table-column label="优惠金额" prop="commissionPremium"></el-table-column>
- <el-table-column label="返还结算比例" prop="exportRatio"></el-table-column>
- <el-table-column label="返还金额" prop="exportPremium"></el-table-column>
- </el-table>
- </el-col>
- </el-row>
- </div>
- </div>
- </template>
- </el-table-column>
- <el-table-column type="selection" width="55" />
- <el-table-column label="保险公司" prop="" align="center" width="200">
- <template #default="scope">
- <div class="company">
- <img :src="scope.row.logo" />
- <span>{{ scope.row.nameSimple }}</span>
- </div>
- <div class="company " style="margin-top: 10px;" v-if="scope.row.underwritingMsg">
- <span style="display: flex; align-items: center; color: #FF4545;"><el-icon class="mr-2">
- <WarningFilled size="14" color="#FF4545" />
- </el-icon>核保失败</span>
- <el-popover title="提示" :width="300" raw-content placement="bottom-end">
- <template #default>
- <span v-html="scope.row.underwritingMsg.replace(/\n/g, '<br>')"></span>
- </template>
- <template #reference>
- <el-button link type="primary">查看详情</el-button>
- </template>
- </el-popover>
- </div>
- </template>
- </el-table-column>
- <el-table-column label="报价协议" prop="" align="center" width="300">
- <template #default="scope">
- <el-select v-model="scope.row.agreement"
- :disabled="!!scope.row.isDispatch || scope.row.agreements?.length == 1"
- v-if="currentRow.some((a: any) => a.id === scope.row.id)"
- :placeholder="scope.row.isDispatch ? '默认' : '请选择'">
- <el-option v-for="item in scope.row.agreements" :value="item.id"
- :label="item.agreementName"></el-option>
- </el-select>
- </template>
- </el-table-column>
- <el-table-column prop="">
- <template #header>
- <div style="">
- <span style="margin-right: 10px">报价结果</span>
- <el-checkbox @change="handleViewSuccess">仅查看报价成功</el-checkbox>
- </div>
- </template>
- <template #default="scope">
- <div class="result" v-if="currentRow.some((a: any) => a.id === scope.row.id) && !scope.row.loading">
- <div class="resultItem">
- <span v-if="scope.row.quoteResult?.costs?.sumPremium">总保费:{{
- scope.row.quoteResult?.costs?.sumPremium }}</span>
- <div class="resultTips" v-if="scope.row.quoteResult?.feeNoDescription" @click="handleOpen(scope)">
- <el-icon size="14" color="#FAA21E">
- <WarningFilled />
- </el-icon>
- <span class="ml-1">未匹配到销管费用,不建议投保</span>
- </div>
- </div>
- <div class="resultItem">
- <span v-if="scope.row.quoteResult?.costs?.ciPremium"
- style="text-align: left; margin-right: 10px">交强:{{ `¥${scope.row.quoteResult?.costs?.ciPremium}`
- }}</span>
- <span v-if="scope.row.quoteResult?.costs?.vvTax" style="text-align: left; margin-right: 10px">车船税:{{
- `¥${scope.row.quoteResult?.costs?.vvTax}` }}</span>
- </div>
- <div class="resultItem">
- <span v-if="scope.row.quoteResult?.costs?.biPremium"
- style="text-align: left; margin-right: 10px">商业险:{{ `¥${scope.row.quoteResult.costs?.biPremium}`
- }}</span>
- <span v-if="scope.row.quoteResult?.costs?.niPremium"
- style="text-align: left; margin-right: 10px">驾意险:{{ `¥${scope.row.quoteResult?.costs?.niPremium}`
- }}</span>
- </div>
- <span class="resultItem"
- v-if="scope.row.quoteResult?.ciRiskInfoVo?.startDate || scope.row.quoteResult?.ciRiskInfoVo?.endDate">
- <span>交强险保险期:{{ `${scope.row.quoteResult?.ciRiskInfoVo?.startDate} 至
- ${scope.row.quoteResult?.ciRiskInfoVo?.endDate}` }}</span>
- </span>
- <span class="resultItem"
- v-if="scope.row.quoteResult?.biRiskInfoVo?.startDate || scope.row.quoteResult?.biRiskInfoVo?.endDate">
- <span>商业险保险期:{{ `${scope.row.quoteResult?.biRiskInfoVo?.startDate} 至
- ${scope.row.quoteResult?.biRiskInfoVo?.endDate}` }}</span>
- </span>
- <div>
- <div class="quoteFail" v-if="scope.row.quoteResult?.failMsg">
- <el-icon style="color: #FF4545; font-size: 14px">
- <Warning />
- </el-icon> {{ scope.row.quoteResult?.failMsg }}
- </div>
- </div>
- </div>
- <!-- loding动效 -->
- <QuoteLoader v-show="scope.row.loading" />
- </template>
- </el-table-column>
- <el-table-column label="操作" align="center" width="360">
- <template #default="scope">
- <div v-if="currentRow.some((a: any) => a.id === scope.row.id)">
- <el-button v-if="scope.row.quoteResult?.code===200" link type="primary"
- @click="handleCount(scope)">优惠测算</el-button>
- <el-button v-if="scope.row.quoteResult?.code===200" link type="primary"
- @click="toDetail(scope.row.quoteResult.ordersNo)">详情</el-button>
- <el-button link type="primary" :loading="scope.row.loading"
- @click="handleSubmit(InsurancePolicyRefs, scope)">计算保费</el-button>
- <el-button v-if="scope.row.quoteResult?.code===200" link type="primary"
- @click="handleShare(scope.row.quoteResult.ordersNo)">分享</el-button>
- <el-button v-if="scope.row.quoteResult?.code===200" link type="primary"
- @click="handleUnderwriting(scope)">核保</el-button>
- </div>
- </template>
- </el-table-column>
- </el-table>
- <template #icon="{ isActive }">
- <div class="icon">
- <span class="icon-ele">
- {{ isActive ? '收起' : '展开' }}
- </span>
- <el-icon v-if="isActive" color="#333">
- <ArrowDownBold />
- </el-icon>
- <el-icon v-else color="#333">
- <ArrowUpBold />
- </el-icon>
- </div>
- </template>
- </el-collapse-item>
- <el-collapse-item name="history">
- <template #title>
- <span class="title">
- 报价历史
- </span>
- </template>
- <el-table :data="tableData" style="width: calc(100% - 48px); margin: 0 24px">
- <el-table-column label="保险公司" prop="companyName"></el-table-column>
- <el-table-column label="报价时间" prop="quoteTime"></el-table-column>
- <el-table-column label="险种" prop="productName"></el-table-column>
- <el-table-column label="状态" prop="orderStatusName">
- <template #default="scope">
- <span v-if="scope.row.orderStatusName == '报价成功'" class="success">报价成功</span>
- <span v-if="scope.row.orderStatus == '6' || scope.row.orderStatus == '7'"
- style="display: flex; align-items: center">
- <span class="fail">{{ scope.row.orderStatusName }}</span>
- <el-tooltip class="box-item" effect="dark" :content="scope.row.errorMessage" placement="bottom">
- <el-icon style="color: #FF4545; font-size: 18px">
- <Warning />
- </el-icon>
- </el-tooltip>
- </span>
- </template>
- </el-table-column>
- <el-table-column label="保费计算" prop="sumPremium"></el-table-column>
- <el-table-column label="交强险" prop="jqPremium"></el-table-column>
- <el-table-column label="商业险" prop="syPremium"></el-table-column>
- <el-table-column label="驾意险" prop="jyPremium"></el-table-column>
- <el-table-column label="操作">
- <template #default="scope">
- <el-button link type="primary" @click="toDetail(scope.row.orderNo)">详情</el-button>
- <el-popover v-if="scope.row.orderStatus === '5'" :width="200" placement="bottom" trigger="click">
- <template #reference>
- <el-button size="small" type="primary" link @click="handleCode(scope.row.orderNo)">分享</el-button>
- </template>
- <div class="popover">
- <img style="display: block; width: 128px; height: 128px; margin: 5px auto;" :src="payCodeUrl">
- <p>使用微信扫码,查看报价单</p>
- <div class="popoverBtns">
- <el-button size="small" type="primary" plain @click="handlePopoverCancel">保存二维码</el-button>
- <el-button size="small" type="primary" plain @click="handlePopoverConfirm">复制链接</el-button>
- </div>
- </div>
- </el-popover>
- <el-button link type="primary" v-if="scope.row.orderStatus === '1'"
- @click="historyhandleUnderwriting(scope.row.orderNo)">核保</el-button>
- <el-button link type="primary" v-if="scope.row.orderStatus === '4'"
- @click="getPayCode(scope.row.orderNo)">支付码</el-button>
- <!-- <el-button link type="primary" v-if="scope.row.orderStatus === '1'" @click="handleImageSave(scope)">上传影像</el-button>-->
- <el-button link type="primary" v-if="scope.row.orderStatus === '7'"
- @click="historyhandleUnderwriting(scope.row.orderNo)">重新核保</el-button>
- </template>
- </el-table-column>
- </el-table>
- <template #icon="{ isActive }">
- <div class="icon">
- <span class="icon-ele">
- {{ isActive ? '收起' : '展开' }}
- </span>
- <el-icon v-if="isActive" color="#333">
- <ArrowDownBold />
- </el-icon>
- <el-icon v-else color="#333">
- <ArrowUpBold />
- </el-icon>
- </div>
- </template>
- </el-collapse-item>
- </el-collapse>
- </el-form>
- <div class="footer">
- <span>已选保司:{{ currentRow.length }}家</span>
- <el-button type="primary" :loading="loading" @click="handleSubmit(InsurancePolicyRefs)">确定</el-button>
- <el-button type="primary" @click="handleNext">录下一单</el-button>
- </div>
- <el-dialog title="选择业务员" v-model="salesmanShow" width="700">
- <salesmanSelect ref="SalesmanSelectRef" @close="handleSalesmanSelect"></salesmanSelect>
- </el-dialog>
- <el-dialog v-model="shareShow" width="300" title="分享">
- <div class="imageCode">
- <img :src="shareImageUrl" />
- </div>
- <template #footer>
- <el-button plain type="primary" @click="handleSaveImage">保存图片</el-button>
- <el-button plain type="primary" @click="handleCopyLink">复制链接</el-button>
- </template>
- </el-dialog>
- <el-dialog title="优惠测算" v-model="calculatingShow" width="600">
- <calculating ref="calculatingRefs"></calculating>
- </el-dialog>
- <el-dialog title="提交核保" width="1100" v-model="underwritingShow">
- <underwriting v-if="underwritingShow" ref="UnderwritingRefs" :insOrderRightsInfoDto="insOrderRightsInfoDto"
- :availableAmount="availableAmount" :recipientInfo="[owerFormInfo, policyHolderInfo, insuredPersonInfo]"
- @close="handleUnderwritingClose"></underwriting>
- </el-dialog>
- <el-dialog title="证件识别" width="800" v-model="imageShow">
- <recognition ref="RecognitionRefs" :option="optionObj.car_type_code" @close="handleImageClose"></recognition>
- </el-dialog>
- <el-dialog v-model="insuranceShow" title="选择险种" width="500">
- <insurance ref="InsuranceTypeRef" @close="handleClose"></insurance>
- </el-dialog>
- <el-dialog v-model="drivingShow" title="选择驾意险" width="700">
- <driving ref="DrivingTypeRef" @close="handleDrivingClose"></driving>
- </el-dialog>
- <el-dialog v-model="licenseNoShow" width="900" title="车型查询">
- <span class="flex a-c mb-2" style="color: #409eff;font-size: 13px;">(单击后确定 或 双击选中车型)</span>
- <el-table ref="LicenseNoTable" :data="licenseNoData" row-key="id" highlight-current-row
- @row-dblclick="handleSelectedRow" @current-change="handleCurrentChange">
- <el-table-column prop="modelCode" label="厂牌型号代码"></el-table-column>
- <el-table-column prop="modelName" label="厂牌型号"></el-table-column>
- <el-table-column prop="replacementValue" label="新车购置价"></el-table-column>
- <el-table-column prop="marketYear" label="年款"></el-table-column>
- <el-table-column prop="ratedPassengerCapacity" label="座位数"></el-table-column>
- <el-table-column prop="displacement" label="排量"></el-table-column>
- <el-table-column prop="vehicleDescription" label="配置"></el-table-column>
- </el-table>
- <div class="footer">
- <el-button plain @click="licenseNoDataCancel">取消</el-button>
- <el-button type="primary" @click="licenseNoDataSubmit">确定</el-button>
- </div>
- </el-dialog>
- <el-dialog v-model="JYXDetailShow" title="驾意险详情" width="600">
- <detail ref="JYXDetail"></detail>
- </el-dialog>
- <el-dialog v-model="specialShow" width="700" title="选择特约">
- <el-table :data="specialTableData" @selection-change="handleSpecialSelectChage">
- <el-table-column type="selection" width="50" align="center"></el-table-column>
- <el-table-column label="特约类型" prop="riskCode" align="center"></el-table-column>
- <el-table-column label="特约名称" prop="clauseName" align="center"></el-table-column>
- <el-table-column label="编码" prop="clauseCode" align="center"></el-table-column>
- <el-table-column label="特别约定内容" prop="clauseContent" width="300" align="center"></el-table-column>
- </el-table>
- <div class="footer">
- <el-button plain type="primary" @click="handleSpecialTableDataCancel">取消</el-button>
- <el-button type="primary" @click="handleSpecialTableDataSubmit">确定</el-button>
- </div>
- </el-dialog>
- <el-dialog v-model="underwritingMsgShow" title="核保信息" width="400">
- <div style="
- font-size: 18px;
- color: #d42426;
- font-weight: 700;
- padding: 10px 30px;
- ">
- 订单状态:已核保待缴费
- </div>
- <template #footer>
- <el-button size="small" type="primary" @click="handleGetPayCode">缴费二维码</el-button>
- </template>
- </el-dialog>
- <el-dialog v-model="payCodeShow" title="支付码" width="400">
- <div style="display: flex; align-items: center; justify-content: center">
- <img style="width: 200px; height: 200px" :src="payCodeSrc" />
- </div>
- <template #footer>
- <el-button size="small" type="primary" @click="handlePayCodeClose">关闭</el-button>
- </template>
- </el-dialog>
- <Equities v-if="equitiesShow" :show="equitiesShow"
- :recipientInfo="[owerFormInfo, policyHolderInfo, insuredPersonInfo]" :availableAmount="availableAmount"
- @cancel="equitiesShow = false" @save="handleEquitiesSave"></Equities>
- </div>
- </template>
- <!-- 保险单页面逻辑脚本 -->
- <script setup lang="ts">
- // 导入Element Plus表单相关类型定义
- import type { FormInstance, FormRules } from 'element-plus'
- // 导入API接口
- import api from "@/api";
- // 导入Element Plus消息提示组件
- import { ElMessage, ElNotification } from "element-plus";
- // 导入Vue Router路由相关函数
- import { useRoute, useRouter } from 'vue-router'
- // 导入子组件
- import underwriting from './modules/underwriting.vue' // 核保模块
- import recognition from './modules/recognition.vue' // 证件识别模块
- import calculating from './modules/calculating.vue' // 优惠测算模块
- import salesmanSelect from '../additionalOrder/additional/modules/salesmanSelect.vue' // 业务员选择模块
- import insurance from "../additionalOrder/additional/modules/insuranceSelect.vue"; // 保险选择模块
- import driving from '../../layouts/components/DrivingType/index.vue' // 驾意险模块
- import detail from '../../layouts/components/JYXDetail/index.vue' // 驾意险详情模块
- import Equities from './modules/Equities.vue' // 驾意险详情模块
- // 导入二维码生成库
- import QRCode from 'qrcode'
- // 导入日期处理库
- import dayjs from "dayjs"
- // 下拉选项接口定义
- interface OptionItem {
- label: string; // 显示标签
- value: string; // 实际值
- checked?: boolean; // 是否选中
- };
- // 车辆信息接口定义
- interface CarInfo {
- ratedPassengerCapacity: number; // 核定载客数
- modelName: string; // 品牌型号
- marketYear: number; // 年款
- replacementValue: number; // 新车购置价
- displacement: number; // 排量
- powerScale: number; // 功率
- };
- // 报价数据项接口定义
- interface QuoteDataItem {
- id: string; // 公司ID
- loading: boolean; // 加载状态
- quoteResult?: any; // 报价结果
- isDispatch?: boolean; // 是否分派
- dispatchAgreementId?: string; // 分派协议ID
- agreement?: string; // 协议
- discounts?: any[]; // 优惠信息
- underwritingMsg?: string; // 核保消息
- specialSelectedList?: any[]; // 特约选择列表
- projectList?: any[]; // 方案列表
- productIndex?: number; // 产品索引
- nameSimple?: string; // 公司简称
- logo?: string; // 公司Logo
- agreements?: any[]; // 协议列表
- insuranceCompanyCode?: string; // 保险公司代码
- };
- // 引用子组件实例
- const RecognitionRefs = ref() // 证件识别组件引用
- const SalesmanSelectRef = ref() // 业务员选择组件引用
- const InsuranceTypeRef = ref() // 保险类型选择组件引用
- const DrivingTypeRef = ref() // 驾意险类型组件引用
- const UnderwritingRefs = ref() // 核保组件引用
- const LicenseNoTable = ref() // 车牌号表格引用
- const JYXDetail = ref() // 驾意险详情引用
- // 路由相关
- const myRoute = useRoute() // 当前路由实例
- const router = useRouter() // 路由器实例
- /**
- * 将日期格式化为 YYYY-MM-DD 格式
- * @param e 事件对象
- * @returns 格式化后的日期字符串
- */
- const changeDate = (e: any) => {
- return dayjs(e.target.value).format('YYYY-MM-DD')
- }
- /**
- * 初始化详情数据
- * 从路由参数获取订单号,请求订单详情并填充表单
- */
- const initDetail = () => {
- // 请求订单详情
- api.insurancePolicyApi.getOrderDetail(myRoute.query.orderNo).then((res: any) => {
- if (res.code == 200) {
- let obj = res.data
- // 设置业务员信息
- insurancePolicyForm.value.salesman = obj?.salesmanInfo?.name
- insurancePolicyForm.value.mobile = obj?.salesmanInfo?.mobile
- insurancePolicyForm.value.deptId = obj?.salesmanInfo?.deptId
- // 设置车辆信息
- insurancePolicyForm.value.isRegistered = obj?.carInfoVo?.isRegistered || '1'
- insurancePolicyForm.value.licenseNo = obj?.carInfoVo?.licenseNo
- insurancePolicyForm.value.vinNo = obj?.carInfoVo?.vinNo
- insurancePolicyForm.value.brandName = obj?.carInfoVo?.brandName
- insurancePolicyForm.value.engineNo = obj?.carInfoVo?.engineNo
- insurancePolicyForm.value.carNatureCode = obj?.carInfoVo?.carNatureCode
- insurancePolicyForm.value.vehicleUseCode = obj?.carInfoVo?.vehicleUseCode
- insurancePolicyForm.value.plateType = obj?.carInfoVo?.carKindCode
- insurancePolicyForm.value.carTypeCode = obj?.carInfoVo?.carTypeCode
- insurancePolicyForm.value.energyTypeCode = obj?.carInfoVo?.energyTypeCode
- insurancePolicyForm.value.registerDate = obj?.carInfoVo?.registerDate
- insurancePolicyForm.value.issueDate = obj?.carInfoVo?.issueDate
- insurancePolicyForm.value.completeKerbMass = obj?.carInfoVo?.completeKerbMass
- insurancePolicyForm.value.limitLoad = obj?.carInfoVo?.limitLoad
- insurancePolicyForm.value.seatCount = obj?.carInfoVo?.seatCount
- insurancePolicyForm.value.carYear = obj?.carInfoVo?.carYear
- insurancePolicyForm.value.purchasePrice = obj?.carInfoVo?.purchasePrice
- insurancePolicyForm.value.displacement = obj?.carInfoVo?.displacement
- insurancePolicyForm.value.powerScale = obj?.carInfoVo?.powerScale
- // 设置车主信息
- insurancePolicyForm.value.name1 = obj?.ownersInfo?.name
- insurancePolicyForm.value.mobile1 = obj?.ownersInfo?.mobile
- insurancePolicyForm.value.identifyType1 = obj?.ownersInfo?.identifyType
- insurancePolicyForm.value.identifyNumber1 = obj?.ownersInfo?.identifyNumber
- insurancePolicyForm.value.identifyValidDate1 = obj?.ownersInfo?.identifyValidDate
- insurancePolicyForm.value.addr1 = obj?.ownersInfo?.addr
- insurancePolicyForm.value.telephone1 = obj?.ownersInfo?.telephone
- insurancePolicyForm.value.person1 = obj?.ownersInfo?.person
- insurancePolicyForm.value.age1 = obj?.ownersInfo?.age
- insurancePolicyForm.value.identifyValidEndDate1 = obj?.ownersInfo?.identifyValidEndDate
- insurancePolicyForm.value.address1 = obj?.ownersInfo?.address
- insurancePolicyForm.value.registeredCapital1 = obj?.ownersInfo?.registeredCapital
- insurancePolicyForm.value.email1 = obj?.ownersInfo?.email
- insurancePolicyForm.value.taxpayerName = obj?.vehicleAndVesselTaxVo?.taxpayerName || obj?.ownersInfo?.name
- insurancePolicyForm.value.taxpayerIdentifier = obj?.vehicleAndVesselTaxVo?.taxpayerIdentifier || obj?.ownersInfo?.identifyType
- insurancePolicyForm.value.identifyNumber = obj?.vehicleAndVesselTaxVo?.identifyNumber || obj?.ownersInfo?.identifyNumber
- // 设置投保人信息
- insurancePolicyForm.value.name2 = obj?.policyHolderInfo?.name
- insurancePolicyForm.value.mobile2 = obj?.policyHolderInfo?.mobile
- insurancePolicyForm.value.identifyType2 = obj?.policyHolderInfo?.identifyType
- insurancePolicyForm.value.identifyNumber2 = obj?.policyHolderInfo?.identifyNumber
- insurancePolicyForm.value.identifyValidDate2 = obj?.policyHolderInfo?.identifyValidDate
- insurancePolicyForm.value.addr2 = obj?.policyHolderInfo?.addr
- insurancePolicyForm.value.telephone2 = obj?.policyHolderInfo?.telephone
- insurancePolicyForm.value.person2 = obj?.policyHolderInfo?.person
- insurancePolicyForm.value.age2 = obj?.policyHolderInfo?.age
- insurancePolicyForm.value.identifyValidEndDate2 = obj?.policyHolderInfo?.identifyValidEndDate
- insurancePolicyForm.value.address2 = obj?.policyHolderInfo?.address
- insurancePolicyForm.value.registeredCapital2 = obj?.policyHolderInfo?.registeredCapital
- insurancePolicyForm.value.email2 = obj?.policyHolderInfo?.email
- // 设置被保人信息
- insurancePolicyForm.value.name3 = obj?.insuredPersonInfo?.name
- insurancePolicyForm.value.mobile3 = obj?.insuredPersonInfo?.mobile
- insurancePolicyForm.value.identifyType3 = obj?.insuredPersonInfo?.identifyType
- insurancePolicyForm.value.identifyNumber3 = obj?.insuredPersonInfo?.identifyNumber
- insurancePolicyForm.value.identifyValidDate3 = obj?.insuredPersonInfo?.identifyValidDate
- insurancePolicyForm.value.addr3 = obj?.insuredPersonInfo?.addr
- insurancePolicyForm.value.telephone3 = obj?.insuredPersonInfo?.telephone
- insurancePolicyForm.value.person3 = obj?.insuredPersonInfo?.person
- insurancePolicyForm.value.age3 = obj?.insuredPersonInfo?.age
- insurancePolicyForm.value.identifyValidEndDate3 = obj?.insuredPersonInfo?.identifyValidEndDate
- insurancePolicyForm.value.address3 = obj?.insuredPersonInfo?.address
- insurancePolicyForm.value.registeredCapital3 = obj?.insuredPersonInfo?.registeredCapital
- insurancePolicyForm.value.email3 = obj?.insuredPersonInfo?.email
- // 重置车主关系选择状态
- btns.value.owner1.forEach(a => {
- a.checked = false
- })
- btns.value.owner2.forEach(a => {
- a.checked = false
- })
- // 判断车主与投保人关系
- if (obj?.ownersInfo?.identifyNumber == obj?.policyHolderInfo?.identifyNumber) {
- btns.value.owner1[0].checked = true
- btns.value.owner1Text = '同车主'
- } else {
- btns.value.owner1[1].checked = true
- btns.value.owner1Text = '其他人'
- }
- // 判断车主、投保人与被保人关系
- if (obj?.ownersInfo?.identifyNumber == obj?.insuredPersonInfo?.identifyNumber) {
- btns.value.owner2[1].checked = true
- btns.value.owner2Text = '同车主'
- } else if (obj?.policyHolderInfo?.identifyNumber == obj?.insuredPersonInfo?.identifyNumber) {
- btns.value.owner2[0].checked = true
- btns.value.owner2Text = '同投保人'
- } else {
- btns.value.owner2[2].checked = true
- btns.value.owner2Text = '其他人'
- }
- // 设置车船税信息
- insurancePolicyForm.value.extendChar2 = obj?.vehicleAndVesselTaxVo?.extendChar2
- insurancePolicyForm.value.relifReason = obj?.vehicleAndVesselTaxVo?.relifReason
- insurancePolicyForm.value.taxComCode = obj?.vehicleAndVesselTaxVo?.taxComCode
- insurancePolicyForm.value.taxComName = obj?.vehicleAndVesselTaxVo?.taxComName
- insurancePolicyForm.value.taxRelief = obj?.vehicleAndVesselTaxVo?.taxRelief
- insurancePolicyForm.value.taxDocumentDate = obj?.vehicleAndVesselTaxVo?.taxDocumentDate
- insurancePolicyForm.value.taxPaidAreaCode = obj?.vehicleAndVesselTaxVo?.taxPaidAreaCode
- // 重置车船税选择状态
- btns.value.owner3.forEach(a => {
- a.checked = false
- })
- // 设置车船税类型
- switch (obj?.vehicleAndVesselTaxVo?.taxRelifFlag) {
- case '1':
- btns.value.owner3[0].checked = true
- btns.value.owner3show = '正常交税'
- break;
- case '2':
- btns.value.owner3[1].checked = true
- btns.value.owner3show = '免税'
- break;
- case '3':
- btns.value.owner3[2].checked = true
- btns.value.owner3show = '减税'
- break;
- case '4':
- btns.value.owner3[3].checked = true
- btns.value.owner3show = '完税'
- break;
- }
- // 设置投保信息
- insurancePolicyForm.value.productId = obj?.order?.productId
- jqWork.value[0].checked = obj?.ciRiskInfoVo?.instantFlag
- insurancePolicyForm.value.JQStartDate = obj?.ciRiskInfoVo?.startDate
- insurancePolicyForm.value.JQEndDate = obj?.ciRiskInfoVo?.endDate
- // 设置保险类型选择状态
- optionObj.value.insuranceType.forEach(a => {
- if (a.value == obj?.order?.productId) {
- a.checked = true
- } else {
- a.checked = false
- }
- })
- // 根据选择的保险类型过滤公司
- let newObj = optionObj.value.insuranceType.find(a => a.checked)
- if (newObj) {
- ruleFilterCompany(newObj)
- }
- syWork.value[0].checked = obj?.biRiskInfoVo?.instantFlag
- insurancePolicyForm.value.SYStartDate = obj?.biRiskInfoVo?.startDate
- insurancePolicyForm.value.SYEndDate = obj?.biRiskInfoVo?.endDate
- insurancePolicyForm.value.imageVoList = obj?.imageVoList
- images.value = obj?.imageVoList.map(v=>({imageType:v.imageCode,fileUrl:v.imageBase64List[0]?.imageBase64Str})) || []
- // 获取报价号
- getQuoteNumber()
- }
- })
- }
- // 业务员选择相关
- let salesmanShow = ref(false) // 控制业务员选择弹窗显示状态
- /**
- * 处理业务员输入框聚焦事件
- * 显示业务员选择弹窗并初始化数据
- */
- const handleFocus = () => {
- salesmanShow.value = true
- nextTick(() => {
- SalesmanSelectRef.value.initEditData()
- })
- }
- /**
- * 处理业务员选择回调
- * @param data 选中的业务员数据
- */
- const handleSalesmanSelect = (data: any) => {
- salesmanShow.value = false
- if (data) {
- // 如果已有业务员信息且选择了险种,则清空报价数据并重新过滤公司
- if (insurancePolicyForm.value.salesman && insurancePolicyForm.value.mobile && insurancePolicyForm.value.deptId && insurancePolicyForm.value.productId) {
- quoteData.value = []
- ruleFilterCompany({
- value: insurancePolicyForm.value.productId
- })
- }
- // 更新业务员信息
- insurancePolicyForm.value.salesman = data.name
- insurancePolicyForm.value.mobile = data.mobile
- insurancePolicyForm.value.deptId = data.deptId
- }
- }
- // 机构归属相关
- let institutionList = ref([]) // 机构列表数据
- const tableProps = ref({
- value: "id", // 选项值字段
- label: "name", // 选项标签字段
- children: "children", // 子级字段
- checkStrictly: true, // 父子节点取消关联
- })
- /**
- * 初始化部门树结构
- * 获取当前登录系统的部门层级结构
- */
- const initDept = () => {
- api.insuranceApi.getDeptTree({ sysCode: localStorage.getItem('login_system') }).then((res: any) => {
- if (res.code == 200) {
- institutionList.value = res.data
- } else {
- ElMessage({
- message: res.msg,
- type: 'warning'
- })
- }
- })
- }
- // 折叠面板默认展开项
- let activeName = ref(['car', 'owner', 'owner1', 'owner2', 'tax', 'insurance', 'company', 'history'])
- // 表单引用
- const InsurancePolicyRefs = ref<FormInstance>()
- // 保险单表单数据
- let insurancePolicyForm = ref({
- systemType: '2', // 系统类型
- propertyCode: '1', // 车辆性质代码
- isRegistered: '1', // 车辆是否上牌 ('1': 是, '2': 否)
- // 业务员信息
- salesman: '', // 业务员姓名
- mobile: '', // 业务员手机号
- deptId: '', // 所属部门ID
- // 车辆信息
- licenseNo: '', // 车牌号
- vinNo: '', // 车架号(VIN)
- brandName: '', // 品牌型号
- engineNo: '', // 发动机号
- carNatureCode: '', // 使用性质代码
- vehicleUseCode: '', // 车辆用途代码
- carTypeCode: '', // 车辆类型代码
- plateType: '', // 车辆种类代码
- energyTypeCode: '', // 能源种类代码
- registerDate: '', // 注册日期
- issueDate: '', // 发证日期
- completeKerbMass: 0, // 整备质量
- limitLoad: 0, // 核定载质量
- seatCount: 0, // 座位数
- carYear: 0, // 年款
- purchasePrice: 0, // 新车购置价
- displacement: 0, // 排量
- powerScale: 0, // 功率
- carOwner: '', // 车主
- transferDate: '', // 转移登记日期
- // 险种类型
- productId: '', // 产品ID
- // 车主信息 (第一方)
- name1: '', // 车主姓名
- mobile1: '', // 车主手机号
- identifyType1: '01', // 车主证件类型 ('01': 身份证, '02': 营业执照)
- identifyNumber1: '', // 车主证件号码
- identifyValidDate1: '', // 车主证件有效期起始
- identifyValidEndDate1: '', // 车主证件有效期截止
- addr1: '', // 车主地址
- telephone1: '', // 车主座机(企业)
- person1: '', // 车主联系人(企业)
- age1: '', // 车主年龄(企业)
- address1: '', // 车主地区(企业)
- registeredCapital1: '', // 车主注册资金(企业)
- email1: '', // 车主邮箱
- personType1: '1', // 车主人类型
- // 投保人信息 (第二方)
- name2: '', // 投保人姓名
- mobile2: '', // 投保人手机号
- identifyType2: '01', // 投保人证件类型
- identifyNumber2: '', // 投保人证件号码
- identifyValidDate2: '', // 投保人证件有效期起始
- identifyValidEndDate2: '', // 投保人证件有效期截止
- addr2: '', // 投保人地址
- telephone2: '', // 投保人座机(企业)
- person2: '', // 投保人联系人(企业)
- age2: '', // 投保人年龄(企业)
- address2: '', // 投保人地区(企业)
- registeredCapital2: '', // 投保人注册资金(企业)
- email2: '', // 投保人邮箱
- personType2: '1', // 投保人人类型
- // 被保人信息 (第三方)
- name3: '', // 被保人姓名
- mobile3: '', // 被保人手机号
- identifyType3: '01', // 被保人证件类型
- identifyNumber3: '', // 被保人证件号码
- identifyValidDate3: '', // 被保人证件有效期起始
- identifyValidEndDate3: '', // 被保人证件有效期截止
- addr3: '', // 被保人地址
- telephone3: '', // 被保人座机(企业)
- person3: '', // 被保人联系人(企业)
- age3: '', // 被保人年龄(企业)
- address3: '', // 被保人地区(企业)
- registeredCapital3: '', // 被保人注册资金(企业)
- email3: '', // 被保人邮箱
- personType3: '1', // 被保人人类型
- // 订单信息
- order: {
- quoteNo: '', // 报价单号
- insuranceCompanyCode: '' // 保险公司代码
- },
- // 车船税信息
- taxRelifFlag: '1', // 车船税减免标志 ('1': 正常交税, '2': 免税, '3': 减税, '4': 完税)
- extendChar2: '', // 车船税扩展字符2
- relifReason: '', // 减免税原因
- taxComCode: '', // 税务公司代码
- taxComName: '', // 税务公司名称
- taxRelief: '', // 税务减免信息
- taxDocumentDate: '', // 税务凭证日期
- taxPaidAreaCode: '', // 已缴税地区代码
- taxpayerName: '', // 纳税人姓名
- taxpayerIdentifier: '', // 纳税人证件类型
- identifyNumber: '', // 纳税人证件号码
- // 交强险信息
- JQRiskCode: '0507', // 交强险代码
- JQStartDate: '', // 交强险起始日期
- JQEndDate: '', // 交强险结束日期
- JQInstantFlag: false, // 交强险即时生效标志
- // 商业险信息
- SYRiskCode: '0507', // 商业险代码
- SYStartDate: '', // 商业险起始日期
- SYEndDate: '', // 商业险结束日期
- SYInstantFlag: false, // 商业险即时生效标志
- // 其他标记
- transfer: false, // 转移标记
- biTransfer: false, // 商业险转移标记
- secondHandCar: false, // 二手车标记
- imageVoList: [] // 影像资料列表
- })
- // 保险单表单验证规则
- let insurancePolicyRules = ref<FormRules>({
- isRegistered: [
- { required: true, trigger: 'change', message: '请选择车辆是否上牌' },
- ],
- licenseNo: [
- { required: true, trigger: 'blur', message: '请输入车牌' },
- {
- pattern: /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/,
- message: '请填写正确的车牌号',
- trigger: 'blur'
- }
- ],
- vinNo: [
- { required: true, trigger: 'blur', message: '请输入车辆识别代码' },
- {
- pattern: /^(?=.*[a-z])(?=.*\d).+$/i,
- message: '请填写正确的车牌识别代码',
- trigger: 'blur'
- }
- ],
- brandName: [
- { required: true, trigger: 'blur', message: '请输入品牌型号' },
- ],
- engineNo: [
- { required: true, trigger: 'blur', message: '请输入发动机号' },
- ],
- carNatureCode: [
- { required: true, trigger: 'change', message: '请选择车辆是否上牌' },
- ],
- vehicleUseCode: [
- { required: true, trigger: 'change', message: '请选择车辆是否上牌' },
- ],
- carTypeCode: [
- { required: true, trigger: 'change', message: '请选择车辆是否上牌' },
- ],
- plateType: [
- { required: true, trigger: 'change', message: '请选择车辆类型' },
- ],
- energyTypeCode: [
- { required: true, trigger: 'change', message: '请选择能源种类' },
- ],
- registerDate: [
- { required: true, trigger: 'change', message: '请选择注册日期' },
- ],
- issueDate: [
- { required: true, trigger: 'change', message: '请选择发证日期' },
- ],
- completeKerbMass: [
- { required: true, trigger: 'blur', message: '请输入整备质量' }
- ],
- // limitLoad: [
- // { required: true, trigger: 'blur', message: '请输入核定载质量' }
- // ],
- seatCount: [
- { required: true, trigger: 'blur', message: '请输入座位数' }
- ],
- // carYear: [
- // { required: true, trigger: 'blur', message: '请输入年款' }
- // ],
- purchasePrice: [
- { required: true, trigger: 'blur', message: '请输入新车购置价' }
- ],
- displacement: [
- { required: true, trigger: 'blur', message: '请输入排量' }
- ],
- powerScale: [
- { required: true, trigger: 'blur', message: '请输入功率' }
- ],
- transferDate: [
- { required: true, trigger: 'change', message: '请选择转移登记日期' },
- ],
- name1: [
- { required: true, trigger: 'blur', message: '请输入姓名' }
- ],
- mobile1: [
- { required: true, trigger: 'blur', message: '请输入手机号' },
- {
- pattern: /^1[0-9]{10}$/,
- message: '请填写正确的手机号',
- trigger: 'blur'
- }
- ],
- personType1: [
- { required: true, trigger: 'change', message: '请选择证件类型' }
- ],
- identifyNumber1: [
- { required: true, trigger: 'blur', message: '请输入证件号' },
- {
- pattern: /^[A-Z0-9]+$/i,
- message: '请填写正确的证件号',
- trigger: 'blur'
- }
- ],
- identifyValidDate1: [
- { required: true, trigger: 'change', message: '请选择有效期起期' }
- ],
- identifyValidEndDate1: [
- { required: true, trigger: 'change', message: '请选择有效期止期' }
- ],
- addr1: [
- { required: true, trigger: 'blur', message: '请输入地址' }
- ],
- name2: [
- { required: true, trigger: 'blur', message: '请输入姓名' }
- ],
- mobile2: [
- { required: true, trigger: 'blur', message: '请输入手机号' },
- {
- pattern: /^1[0-9]{10}$/,
- message: '请填写正确的手机号',
- trigger: 'blur'
- }
- ],
- personType2: [
- { required: true, trigger: 'change', message: '请选择证件类型' }
- ],
- identifyNumber2: [
- { required: true, trigger: 'blur', message: '请输入证件号' },
- {
- pattern: /^[A-Z0-9]+$/i,
- message: '请填写正确的证件号',
- trigger: 'blur'
- }
- ],
- identifyValidDate2: [
- { required: true, trigger: 'change', message: '请选择有效期起期' }
- ],
- identifyValidEndDate2: [
- { required: true, trigger: 'change', message: '请选择有效期止期' }
- ],
- addr2: [
- { required: true, trigger: 'blur', message: '请输入地址' }
- ],
- name3: [
- { required: true, trigger: 'blur', message: '请输入姓名' }
- ],
- mobile3: [
- { required: true, trigger: 'blur', message: '请输入手机号' },
- {
- pattern: /^1[0-9]{10}$/,
- message: '请填写正确的手机号',
- trigger: 'blur'
- }
- ],
- personType3: [
- { required: true, trigger: 'change', message: '请选择证件类型' }
- ],
- identifyNumber3: [
- { required: true, trigger: 'blur', message: '请输入证件号' },
- {
- pattern: /^[A-Z0-9]+$/i,
- message: '请填写正确的证件号',
- trigger: 'blur'
- }
- ],
- identifyValidDate3: [
- { required: true, trigger: 'change', message: '请选择有效期起期' }
- ],
- identifyValidEndDate3: [
- { required: true, trigger: 'change', message: '请选择有效期止期' }
- ],
- addr3: [
- { required: true, trigger: 'blur', message: '请输入地址' }
- ],
- extendChar2: [
- { required: true, trigger: 'blur', message: '请输入' },
- ],
- relifReason: [
- { required: true, trigger: 'blur', message: '请输入' }
- ],
- taxComCode: [
- { required: true, trigger: 'blur', message: '请输入' }
- ],
- taxComName: [
- { required: true, trigger: 'blur', message: '请输入' }
- ],
- taxRelief: [
- { required: true, trigger: 'blur', message: '请输入' }
- ],
- taxDocumentDate: [
- { required: true, trigger: 'change', message: '请选择' }
- ],
- taxPaidAreaCode: [
- { required: true, trigger: 'change', message: '请选择' }
- ]
- })
- // 使用性质,车辆用途,车辆类型,能源种类,车辆种类
- let optionObj = ref({
- vehicle_use_code: [] as OptionItem[], // 车辆用途
- car_nature_code: [] as OptionItem[], // 使用性质
- energy_type_code: [] as OptionItem[], // 能源种类
- car_kind_code: [] as OptionItem[], // 车辆种类
- vehicleType: [] as OptionItem[],
- taxpayerIdentifier: [] as OptionItem[], // 证件类型
- insuranceType: [] as OptionItem[], // 险种类型
- car_type_code: [] as OptionItem[], // 车辆类型
- })
- // 地区
- const areaOptins = ref([]);
- const areaProps = ref({
- value: "areaCode",
- label: "areaCname",
- children: "child",
- });
- const getAreaList = () => {
- api.areaApi.areaList({}).then((res) => {
- areaOptins.value = res.data;
- });
- };
- // 车牌识别
- let licenseNoShow = ref(false)
- let licenseNoData = ref([])//
- const handleCarNumber = () => {
- api.additionalApi.vinSearch(insurancePolicyForm.value.vinNo).then((res: any) => {
- if (res.code == 200) {
- licenseNoShow.value = true
- licenseNoData.value = res.data
- } else {
- ElMessage({
- message: res.msg,
- type: 'warning'
- })
- }
- })
- }
- let selectRowData = ref<CarInfo | {}>({})
- // 车型双击事件
- const handleSelectedRow = (row: any, column: any) => {
- selectRowData.value = row
- licenseNoDataSubmit()
- }
- // 车型选中事件
- const handleCurrentChange = (row: any) => {
- selectRowData.value = row
- }
- const licenseNoDataCancel = () => {
- selectRowData.value = {}
- licenseNoShow.value = false
- }
- const licenseNoDataSubmit = () => {
- console.log(selectRowData.value)
- if (selectRowData.value && 'ratedPassengerCapacity' in selectRowData.value) {
- const carData = selectRowData.value as CarInfo;
- insurancePolicyForm.value.seatCount = carData.ratedPassengerCapacity
- insurancePolicyForm.value.brandName = carData.modelName
- insurancePolicyForm.value.carYear = carData.marketYear
- insurancePolicyForm.value.purchasePrice = carData.replacementValue
- insurancePolicyForm.value.displacement = carData.displacement
- insurancePolicyForm.value.powerScale = carData.powerScale
- licenseNoShow.value = false
- } else {
- ElMessage({
- message: '请选择车型',
- type: 'warning'
- })
- }
- }
- // 车架号识别
- const handleCarCode = () => {
- api.additionalApi.licenseSearch({
- modelName: insurancePolicyForm.value.brandName.replace(/[^u4e00-u9fa5|,]+/gi, "")
- }).then((res: any) => {
- if (res.code == 200) {
- licenseNoShow.value = true
- licenseNoData.value = res.data
- } else {
- ElMessage({
- message: res.msg,
- type: 'warning'
- })
- }
- })
- }
- // 大写转换
- const upperCaseType = (type: 'licenseNo' | 'vinNo' | 'engineNo' | 'brandName') => {
- const value = insurancePolicyForm.value[type];
- if (typeof value === 'string') {
- insurancePolicyForm.value[type] = value.toUpperCase();
- }
- }
- // 获取报价号
- const getQuoteNumber = () => {
- if (insurancePolicyForm.value.licenseNo && insurancePolicyForm.value.vinNo && insurancePolicyForm.value.engineNo) {
- api.insurancePolicyApi.getQuoteNo({
- licenseNo: insurancePolicyForm.value.licenseNo,
- vinNo: insurancePolicyForm.value.vinNo,
- engineNo: insurancePolicyForm.value.engineNo
- }).then((res: any) => {
- if (res.code == 200) {
- // insuranceCompanyCode
- insurancePolicyForm.value.order.quoteNo = res.msg
- } else {
- ElMessage({
- message: res.msg,
- type: "warning"
- })
- }
- })
- }
- if (insurancePolicyForm.value.licenseNo) {
- api.insurancePolicyApi.getHistoryQuoteList({
- licenseNo: insurancePolicyForm.value.licenseNo,
- pages: 1,
- size: 999
- }).then((res: any) => {
- if (res.code === 200) {
- tableData.value = res.data.records
- } else {
- ElMessage({
- message: res.msg,
- type: 'warning'
- })
- }
- })
- }
- }
- const longTime = () => {
- insurancePolicyForm.value.identifyValidEndDate1 = '9999-12-31'
- }
- const issueDateChange = (e: any) => {
- insurancePolicyForm.value.transferDate = insurancePolicyForm.value.issueDate
- }
- // 是否同车主/同投保人
- let btns = ref({
- owner1Show: true,
- owner2show: true,
- owner1Text: '同车主',
- owner2Text: '同投保人',
- owner3show: '正常交税',
- owner1: [{
- text: '同车主',
- checked: true
- }, {
- text: '其他人',
- checked: false
- },],
- owner2: [{
- text: '同投保人',
- checked: true
- }, {
- text: '同车主',
- checked: false
- }, {
- text: '其他人',
- checked: false
- }],
- owner3: [{
- text: '正常交税',
- checked: true
- }, {
- text: '免税',
- checked: false
- }, {
- text: '减税',
- checked: false
- }, {
- text: '完税',
- checked: false
- }],
- })
- const handleChange = (item: any, type: any) => {
- switch (type) {
- case 'owner1':
- item.checked = !item.checked
- let list1 = btns.value.owner1.filter(a => a.text != item.text)
- list1.forEach(a => a.checked = false)
- btns.value.owner1Show = btns.value.owner1.some(a => a.checked)
- let obj1 = btns.value.owner1.find(a => a.checked)
- if (obj1) {
- btns.value.owner1Text = obj1.text
- if (obj1.text === '同车主') {
- insurancePolicyForm.value.name2 = insurancePolicyForm.value.name1
- insurancePolicyForm.value.mobile2 = insurancePolicyForm.value.mobile1
- insurancePolicyForm.value.identifyType2 = insurancePolicyForm.value.identifyType1
- insurancePolicyForm.value.identifyNumber2 = insurancePolicyForm.value.identifyNumber1
- insurancePolicyForm.value.identifyValidDate2 = insurancePolicyForm.value.identifyValidDate1
- insurancePolicyForm.value.identifyValidEndDate2 = insurancePolicyForm.value.identifyValidEndDate1
- insurancePolicyForm.value.addr2 = insurancePolicyForm.value.addr1
- insurancePolicyForm.value.telephone2 = insurancePolicyForm.value.telephone1
- insurancePolicyForm.value.person2 = insurancePolicyForm.value.person1
- insurancePolicyForm.value.age2 = insurancePolicyForm.value.age1
- insurancePolicyForm.value.address2 = insurancePolicyForm.value.address1
- insurancePolicyForm.value.registeredCapital2 = insurancePolicyForm.value.registeredCapital1
- insurancePolicyForm.value.email2 = insurancePolicyForm.value.email1
- }
- }
- break;
- case 'owner2':
- item.checked = !item.checked
- let list2 = btns.value.owner2.filter(a => a.text != item.text)
- list2.forEach(a => a.checked = false)
- btns.value.owner2show = btns.value.owner2.some(a => a.checked)
- let obj2 = btns.value.owner2.find(a => a.checked)
- if (obj2) {
- btns.value.owner2Text = obj2.text
- if (obj2.text === '同车主') {
- insurancePolicyForm.value.name3 = insurancePolicyForm.value.name1
- insurancePolicyForm.value.mobile3 = insurancePolicyForm.value.mobile1
- insurancePolicyForm.value.identifyType3 = insurancePolicyForm.value.identifyType1
- insurancePolicyForm.value.identifyNumber3 = insurancePolicyForm.value.identifyNumber1
- insurancePolicyForm.value.identifyValidDate3 = insurancePolicyForm.value.identifyValidDate1
- insurancePolicyForm.value.identifyValidEndDate3 = insurancePolicyForm.value.identifyValidEndDate1
- insurancePolicyForm.value.addr3 = insurancePolicyForm.value.addr1
- insurancePolicyForm.value.telephone3 = insurancePolicyForm.value.telephone1
- insurancePolicyForm.value.person3 = insurancePolicyForm.value.person1
- insurancePolicyForm.value.age3 = insurancePolicyForm.value.age1
- insurancePolicyForm.value.address3 = insurancePolicyForm.value.address1
- insurancePolicyForm.value.registeredCapital3 = insurancePolicyForm.value.registeredCapital1
- insurancePolicyForm.value.email3 = insurancePolicyForm.value.email1
- }
- if (obj2.text === '同投保人') {
- insurancePolicyForm.value.name3 = insurancePolicyForm.value.name2
- insurancePolicyForm.value.mobile3 = insurancePolicyForm.value.mobile2
- insurancePolicyForm.value.identifyType3 = insurancePolicyForm.value.identifyType2
- insurancePolicyForm.value.identifyNumber3 = insurancePolicyForm.value.identifyNumber2
- insurancePolicyForm.value.identifyValidDate3 = insurancePolicyForm.value.identifyValidDate2
- insurancePolicyForm.value.identifyValidEndDate3 = insurancePolicyForm.value.identifyValidEndDate2
- insurancePolicyForm.value.addr3 = insurancePolicyForm.value.addr2
- insurancePolicyForm.value.telephone3 = insurancePolicyForm.value.telephone2
- insurancePolicyForm.value.person3 = insurancePolicyForm.value.person2
- insurancePolicyForm.value.age3 = insurancePolicyForm.value.age2
- insurancePolicyForm.value.address3 = insurancePolicyForm.value.address2
- insurancePolicyForm.value.registeredCapital3 = insurancePolicyForm.value.registeredCapital2
- insurancePolicyForm.value.email3 = insurancePolicyForm.value.email2
- }
- }
- break;
- case 'owner3':
- item.checked = true
- let list3 = btns.value.owner3.filter(a => a.text != item.text)
- list3.forEach(a => a.checked = false)
- let obj3 = btns.value.owner3.find(a => a.checked)
- if (obj3) {
- btns.value.owner3show = obj3.text
- insurancePolicyForm.value.taxRelifFlag = btns.value.owner3show === '正常交税' ? '1' : btns.value.owner3show === '免税' ? '2' : btns.value.owner3show === '减税' ? '3' : btns.value.owner3show === '完税' ? '4' : ''
- }
- break;
- case 'insurance':
- ruleFilterCompany(item)
- let list4 = optionObj.value.insuranceType.filter(a => a.label != item.label)
- list4.forEach(a => a.checked = false)
- item.checked = true
- insurancePolicyForm.value.productId = item.value
- if (insurancePolicyForm.value.productId === '0330' || insurancePolicyForm.value.productId === '0330034001' || insurancePolicyForm.value.productId === '0330034002') {
- // let date = new Date()
- // let year = date.getFullYear()
- // let month = date.getMonth() + 1<10?`0${date.getMonth() + 1}`:date.getMonth() + 1
- // let day = date.getDate() + 1< 10?`0${date.getDate() + 1}`:date.getDate() + 1
- insurancePolicyForm.value.JQStartDate = transformTime1()
- insurancePolicyForm.value.JQEndDate = oneYearPast1(insurancePolicyForm.value.JQStartDate)
- }
- if (insurancePolicyForm.value.productId === '034001' || insurancePolicyForm.value.productId === '034002' || insurancePolicyForm.value.productId === '0330034001' || insurancePolicyForm.value.productId === '0330034002') {
- // let date = new Date()
- // let year = date.getFullYear()
- // let month = date.getMonth() + 1<10?`0${date.getMonth() + 1}`:date.getMonth() + 1
- // let day = date.getDate() + 1< 10?`0${date.getDate() + 1}`:date.getDate() + 1
- // insurancePolicyForm.value.SYStartDate = `${year}-${month}-${day} 00:00:00`
- // insurancePolicyForm.value.SYEndDate = `${year + 1}-${month}-${day - 1} 23:59:59`
- insurancePolicyForm.value.SYStartDate = transformTime1()
- insurancePolicyForm.value.SYEndDate = oneYearPast1(insurancePolicyForm.value.SYStartDate)
- }
- break;
- }
- }
- const initOption = () => {
- let list: Array<'vehicle_use_code' | 'car_nature_code' | 'energy_type_code' | 'car_kind_code' | 'car_type_code'> = ['vehicle_use_code', 'car_nature_code', 'energy_type_code', 'car_kind_code', 'car_type_code']
- list.forEach(item => {
- api.additionalApi.dictDetails(item).then((res: any) => {
- if (res.code == 200) {
- if (res.data) {
- optionObj.value[item] = res.data
- }
- }
- })
- })
- api.commonApi.personInfo('insurance_type').then((res: any) => {
- if (res.code == 200) {
- if (res.data && res.data.length > 0) {
- res.data.forEach((a: any) => {
- a.checked = false
- })
- optionObj.value.insuranceType = res.data
- }
- } else {
- ElMessage({
- message: res.msg,
- type: 'warning'
- })
- }
- })
- }
- // 交强即时生效
- let jqWork = ref([
- { text: '即时生效', checked: false }
- ])
- // 根据身份证号换算年龄
- const getAgeByIdCard = (idCard: any, type?: any) => {
- //获取用户身份证号码
- const userCard = idCard
- //如果用户身份证号码为undefined则返回空
- if (!userCard) {
- return ''
- }
- // 获取出生日期
- const yearBirth = userCard.substring(6, 10)
- const monthBirth = userCard.substring(10, 12)
- const dayBirth = userCard.substring(12, 14)
- // 获取当前年月日并计算年龄
- const myDate = new Date()
- const monthNow = myDate.getMonth() + 1
- const dayNow = myDate.getDate()
- let age = myDate.getFullYear() - yearBirth
- if (monthNow > monthBirth || (monthNow == monthBirth && dayNow > dayBirth)) {
- age++
- }
- // type.age = age
- return age
- }
- const noeYearPast = (time: any) => {
- let strYear: any = time.getFullYear();
- let strDay: any = time.getDate();
- let strMonth: any = time.getMonth() + 1;
- let hh: any = time.getHours();
- let minutes: any = time.getMinutes(); // 分
- let Seconds: any = time.getSeconds();
- if (hh < 10) {
- hh = "0" + hh;
- }
- if (minutes < 10) {
- minutes = "0" + minutes;
- }
- if (Seconds < 10) {
- Seconds = "0" + Seconds;
- }
- if (strMonth < 10) {
- strMonth = "0" + strMonth;
- }
- if (strDay < 10) {
- strDay = "0" + strDay;
- }
- let datastr =
- strYear +
- "-" +
- strMonth +
- "-" +
- strDay +
- " " +
- hh +
- ":" +
- minutes +
- ":" +
- Seconds;
- return datastr;
- }
- const oneYearPast1 = (time: any) => {
- //明年减一秒
- let date = new Date(time);
- date.setSeconds(date.getSeconds() - 1);
- date.setFullYear(date.getFullYear() + 1); //一年后
- date.setTime(date.getTime()); //一年后的前一天
- let strYear: any = date.getFullYear();
- let strDay: any = date.getDate();
- let strMonth: any = date.getMonth() + 1;
- let hh: any = date.getHours();
- let minutes: any = date.getMinutes(); // 分
- let Seconds: any = date.getSeconds();
- if (hh < 10) {
- hh = "0" + hh;
- }
- if (minutes < 10) {
- minutes = "0" + minutes;
- }
- if (Seconds < 10) {
- Seconds = "0" + Seconds;
- }
- if (strMonth < 10) {
- strMonth = "0" + strMonth;
- }
- if (strDay < 10) {
- strDay = "0" + strDay;
- }
- let datastr =
- strYear +
- "-" +
- strMonth +
- "-" +
- strDay +
- " " +
- hh +
- ":" +
- minutes +
- ":" +
- Seconds;
- return datastr;
- }
- //当前日期的次日
- const transformTime1 = () => {
- let date = new Date();
- date.setFullYear(date.getFullYear());
- date.setTime(date.getTime() + 24 * 60 * 60 * 1000);
- let strYear: any = date.getFullYear();
- let strDay: any = date.getDate();
- let strMonth: any = date.getMonth() + 1;
- let hh: any = date.getHours();
- if (hh < 10) {
- hh = "0" + hh;
- }
- if (strMonth < 10) {
- strMonth = "0" + strMonth;
- }
- if (strDay < 10) {
- strDay = "0" + strDay;
- }
- let datastr = strYear + "-" + strMonth + "-" + strDay + " " + "00:00:00";
- return datastr;
- }
- const JQChange = (item: any) => {
- item.checked = !item.checked
- if (jqWork.value.some(a => a.checked)) {
- let date: any = new Date();
- date.setHours(date.getHours() + 2);
- date.setMinutes(0);
- date.setSeconds(0);
- insurancePolicyForm.value.JQStartDate = noeYearPast(date)
- insurancePolicyForm.value.JQEndDate = oneYearPast1(date)
- insurancePolicyForm.value.JQInstantFlag = true
- } else {
- insurancePolicyForm.value.JQStartDate = transformTime1()
- insurancePolicyForm.value.JQEndDate = oneYearPast1(insurancePolicyForm.value.JQStartDate)
- insurancePolicyForm.value.JQInstantFlag = false
- }
- }
- const jqChange = (e: any) => {
- insurancePolicyForm.value.JQEndDate = oneYearPast1(e)
- }
- // 日期限制函数
- const disabledDate = (time: any) => {
- const today = new Date();
- today.setHours(0, 0, 0, 0);
- const thirtyDaysLater = new Date();
- thirtyDaysLater.setDate(today.getDate() + 30);
- thirtyDaysLater.setHours(23, 59, 59, 999);
- return time.getTime() < today.getTime() || time.getTime() > thirtyDaysLater.getTime();
- };
- // 商业即时生效
- let syWork = ref([
- { text: '即时生效', checked: false }
- ])
- const SYChange = (item: any) => {
- item.checked = !item.checked
- if (syWork.value.some(a => a.checked)) {
- let date: any = new Date();
- date.setHours(date.getHours() + 2);
- date.setMinutes(0);
- date.setSeconds(0);
- insurancePolicyForm.value.SYStartDate = noeYearPast(date)
- insurancePolicyForm.value.SYEndDate = oneYearPast1(date)
- insurancePolicyForm.value.SYInstantFlag = true
- } else {
- insurancePolicyForm.value.SYStartDate = transformTime1()
- insurancePolicyForm.value.SYEndDate = oneYearPast1(insurancePolicyForm.value.SYStartDate)
- insurancePolicyForm.value.SYInstantFlag = false
- }
- }
- const syChange = (e: any) => {
- insurancePolicyForm.value.SYEndDate = oneYearPast1(e)
- }
- // 报价公司
- let currentRow = ref([])
- let quoteData = ref<QuoteDataItem[]>([])
- // 选择权益
- let equitiesShow = ref(false)//权益弹窗是否显示
- const availableAmount = ref(1700)//可选金额
- const insOrderRightsInfoDto = ref<any>({})//权益信息
- const handleOpenEquities = (row: string) => {
- console.log(row)
- equitiesShow.value = true
- // api.insurancePolicyApi.getOrderDetail(row).then((res: any) => {
- // if (res.code == '200') {
- // availableAmount.value = res.data?.insFeeOrders.availableAmount || 0
- // }
- // })
- }
- // 保存权益
- const handleEquitiesSave = (data: any) => {
- insOrderRightsInfoDto.value = data
- console.log(insOrderRightsInfoDto.value)
- equitiesShow.value = false
- }
- const handleSelect = (a: any, b: any) => {
- currentRow.value = a
- // currentRow.value = a
- // insurancePolicyForm.value.order.insuranceCompanyCode = a[0].id
- }
- const handelSelectRow = (a: any, b: any) => {
- currentRow.value = a
- if (a.some((c: any) => c.id === b.id)) {
- insurancePolicyForm.value.order.insuranceCompanyCode = b.id
- if (insurancePolicyForm.value.productId) {
- api.insurancePolicyApi.getSchemeResult({
- companyId: b.id,
- productId: insurancePolicyForm.value.productId
- }).then((res: any) => {
- let list = res.data?.schemes || [];
- if (res.data?.optionalScheme) {
- list.push(res.data.optionalScheme)
- console.log(123123123, list)
- }
- if (list.length > 0) {
- list.forEach((item: any) => {
- item.checked = false
- })
- }
- quoteData.value.forEach((item: any) => {
- item.productIndex = 0
- if (item.id === b.id) {
- item.projectList = list.map((item: any) => {
- return {
- ...item,
- rescue: [],
- detection: [],
- driver: [],
- inspect: []
- }
- })
- }
- })
- })
- }
- } else {
- insurancePolicyForm.value.order.insuranceCompanyCode = ''
- }
- }
- const handelExpend = (e: any) => {
- insurancePolicyForm.value.order.insuranceCompanyCode = e.id
- if (insurancePolicyForm.value.productId) {
- api.insurancePolicyApi.getSchemeResult({
- companyId: e.id,
- productId: insurancePolicyForm.value.productId
- }).then((res: any) => {
- let list = res.data?.schemes || [];
- if (res.data?.optionalScheme) {
- list.push(res.data.optionalScheme)
- console.log(123123123, list)
- }
- if (list.length > 0) {
- list.forEach((item: any) => {
- item.checked = false
- })
- }
- quoteData.value.forEach((item: any) => {
- item.productIndex = 0
- if (item.id === e.id) {
- item.projectList = list.map((item: any) => {
- return {
- ...item,
- rescue: [],
- detection: [],
- driver: [],
- inspect: []
- }
- })
- }
- })
- })
- }
- }
- const handleClickRow = (a: any, b: any) => {
- }
- const handleViewSuccess = (e: any) => {
- console.log(11111, quoteData.value)
- }
- // 选择险种
- let insuranceShow = ref(false)
- const handlePopover = (scope: any) => {
- insuranceShow.value = true
- nextTick(() => {
- InsuranceTypeRef.value.initEditData(scope.row.projectList[scope.row.productIndex].kinds)
- })
- }
- // 删除险种
- const handleInsuranceDel = (scope: any, props: any) => {
- let obj = scope.row.projectList[scope.row.productIndex].kinds.filter((a: any) => a.id != props.row.id)
- quoteData.value.forEach((a: any) => {
- if (a.id === scope.row.id) {
- a.projectList[scope.row.productIndex].kinds = obj
- }
- })
- }
- const handleClose = (data: any) => {
- insuranceShow.value = false
- if (data && data.list.length > 0) {
- data.list.forEach((item: any) => {
- let obj = item.options.find((b: any) => b.checked)
- item.amount = obj.value
- item.unitAmount = obj.value
- })
- }
- quoteData.value.forEach((a: any) => {
- if (insurancePolicyForm.value.order.insuranceCompanyCode === a.id) {
- a.projectList[a.productIndex].kinds = data.list
- }
- })
- }
- // 选择驾意险
- let drivingShow = ref(false)
- let drivingRow = ref(0)
- let JYXDetailShow = ref(false)
- const handleDriving = (scope: any) => {
- drivingRow.value = scope.$index
- drivingShow.value = true
- nextTick(() => {
- DrivingTypeRef.value.initEditData(scope.row.projectList[scope.row.productIndex].drivings, 0, insurancePolicyForm.value.order.insuranceCompanyCode)
- })
- }
- // 删除驾意险
- const handleDrivingDel = (scope: any, props: any) => {
- let obj = scope.row.projectList[scope.row.productIndex].drivings.filter((a: any) => a.id != props.row.id)
- quoteData.value.forEach((a: any) => {
- if (a.id === scope.row.id) {
- a.projectList[scope.row.productIndex].drivings = obj
- }
- })
- }
- // 驾意险详情
- const getJYXDetail = (row: any) => {
- JYXDetailShow.value = true
- nextTick(() => {
- JYXDetail.value.initData(row.id)
- })
- }
- const handleDrivingClose = (data: any) => {
- if (data && data.list.length > 0) {
- data.list.forEach((a: any) => {
- a.quantity = 1
- })
- const quoteItem = quoteData.value[drivingRow.value]
- if (quoteItem && quoteItem.projectList && quoteItem.productIndex !== undefined) {
- const project = quoteItem.projectList[quoteItem.productIndex]
- if (project) {
- project.drivings = [...data.list]
- }
- }
- }
- drivingShow.value = false
- }
- // 选择特约
- let specialIndex = ref(-1)
- let specialShow = ref(false)
- let specialTableData = ref([])
- let specialSelectList = ref<any[]>([])
- const handleSelectSpecial = (scope: any) => {
- specialIndex.value = scope.$index
- specialShow.value = true
- api.insurancePolicyApi.getClausePage({
- pages: 1,
- size: 99999,
- companyId: scope.row.id,//id
- clauseName: "",//特约名称
- riskCode: "",//特约类型
- clauseCode: "",//特约编码
- clauseContent: "",//特约内容
- }).then((res: any) => {
- if (res.code == 200) {
- specialTableData.value = res.data.records
- }
- })
- }
- const handleSpecialSelectChage = (a: any) => {
- specialSelectList.value = [...a]
- }
- const handleSpecialTableDataCancel = () => {
- specialSelectList.value = []
- specialShow.value = false
- }
- const handleSpecialTableDataSubmit = () => {
- if (specialSelectList.value.length > 0) {
- quoteData.value[specialIndex.value].specialSelectedList = [...specialSelectList.value]
- specialShow.value = false
- } else {
- ElMessage({
- message: '请选择特约!',
- type: 'warning'
- })
- }
- }
- // 优惠信息
- let discounts = ref([])
- let productIndex = ref(0)
- const handleProduct = (scope: any, e: any, index: any) => {
- scope.row.productIndex = index
- }
- // 报价历史
- let tableData = ref([])
- // 分享
- let shareShow = ref(false)
- let shareImageUrl = ref('')
- const handleShare = async (scope: any) => {
- shareImageUrl.value = await QRCode.toDataURL(`http://test-tennat.baoxianzhanggui.com/h5/#/pages/quote/paymentCode?ordersNo=${scope}`, {
- width: 150,
- margin: 2
- });
- console.log(shareImageUrl.value)
- shareShow.value = true
- }
- const handleSaveImage = () => {
- shareShow.value = false
- const link = document.createElement('a');
- link.href = shareImageUrl.value;
- link.download = '报价.png';
- link.click();
- }
- const handleCopyLink = async () => {
- shareShow.value = false
- try {
- await navigator.clipboard.writeText('你想要复制的文本');
- ElMessage({
- message: '复制成功!',
- type: 'success'
- })
- } catch (err) {
- ElMessage({
- message: '复制失败!',
- type: 'error'
- })
- }
- }
- // 优惠测算
- let calculatingShow = ref(false)
- const handleCount = (scope: any) => {
- calculatingShow.value = true
- }
- // 详情
- const toDetail = (scope: any) => {
- console.log(scope)
- router.push({
- path: '/insurancePolicy/order/insurancePolicyOrderDetail',
- query: {
- orderNo: scope
- }
- })
- }
- // 上传影像
- const handleImageSave = (scope: any) => {
- let list = images.value.filter((a: any) => a.checked)
- if (list.length > 0) {
- let arr = list.map((a: any) => {
- return {
- imageCode: a.imageType,
- imageBase64List: [
- {
- imageId: a.imageId
- }
- ]
- }
- })
- api.insurancePolicyApi.imageSave({
- order: {
- quoteNo: insurancePolicyForm.value.order.quoteNo
- },
- imageVoList: arr
- }).then((res: any) => {
- if (res.code == 200) {
- ElMessage({
- message: '上传成功!',
- type: 'success'
- })
- }
- })
- } else {
- ElMessage({
- message: '请选择影像资料!',
- type: 'warning'
- })
- }
- }
- //支付码
- const getPayCode = (orderNo: any) => {
- api.insurancePolicyApi.getQrCode(orderNo).then((res: any) => {
- if (res.code == 200) {
- payCodeUrl.value = res.data?.qrcode
- } else {
- payCodeUrl.value = ''
- ElMessage({
- message: res.msg,
- type: 'warning'
- })
- }
- })
- }
- //分享
- let qrImageUrl = ref('')
- let payCodeUrl = ref('')
- const handleCode = async (orderNo: any) => {
- api.insurancePolicyApi.getQrCode(orderNo).then((res: any) => {
- if (res.code == 200) {
- payCodeUrl.value = res.data?.qrcode
- qrImageUrl.value = QRCode.toDataURL(payCodeUrl.value, {
- width: 150,
- margin: 2
- });
- } else {
- payCodeUrl.value = ''
- ElMessage({
- message: res.msg,
- type: 'warning'
- })
- }
- })
- }
- const handlePopoverCancel = async () => {
- const link = document.createElement('a');
- link.href = qrImageUrl.value;
- link.download = 'qrcode.png';
- link.click();
- }
- const handlePopoverConfirm = async () => {
- try {
- await navigator.clipboard.writeText('你想要复制的文本');
- ElMessage({
- message: '复制成功!',
- type: 'success'
- })
- } catch (err) {
- ElMessage({
- message: '复制失败!',
- type: 'error'
- })
- }
- }
- // 提交核保
- let underwritingShow = ref(false)
- let underwritingIndex = ref(-1)
- const handleUnderwriting = (scope: any) => {
- underwritingShow.value = true
- underwritingIndex.value = scope.$index
- // insurancePolicyForm.value.imageVoList
- let data = {
- // ordersNo: '1915570359429222400'
- order:{
- ordersNo: scope.row.quoteResult.ordersNo,
- quoteNo: insurancePolicyForm.value.order.quoteNo,
- },
- imageVoList: insurancePolicyForm.value.imageVoList,
- list: images.value
- }
- nextTick(() => {
- UnderwritingRefs.value.initEdit(data)
- })
- api.insurancePolicyApi.imagesUpload(data).then((res: any) => {
- if (res.code === 200) {
- } else {
- ElMessage({
- message: res.msg,
- type: 'warning'
- })
- }
- })
- }
- const historyhandleUnderwriting = (ordersNo:String) => {
- underwritingShow.value = true
- let data = {
- order:{
- ordersNo,
- quoteNo: insurancePolicyForm.value.order.quoteNo,
- },
- imageVoList: insurancePolicyForm.value.imageVoList,
- list: images.value
- }
- nextTick(() => {
- UnderwritingRefs.value.initEdit(data)
- })
- api.insurancePolicyApi.imagesUpload(data).then((res: any) => {
- if (res.code === 200) {
- } else {
- ElMessage({
- message: res.msg,
- type: 'warning'
- })
- }
- })
- }
- let underwritingMsgShow = ref(false)
- const handleUnderwritingClose = (bool: any, dataObj: any) => {
- if (dataObj) {
- insOrderRightsInfoDto.value.length = dataObj.equitiesData;
- insOrderRightsInfoDto.value.totalPriceCount = dataObj.totalPriceCount;
- }
- underwritingShow.value = false
- if (bool.code == 200) {
- ElMessage({
- message: bool.msg,
- type: 'success'
- })
- if(underwritingIndex.value>=0) quoteData.value[underwritingIndex.value].underwritingMsg = "";
- underwritingMsgShow.value = true
- } else {
- ElMessage({
- message: bool.msg,
- type: 'error'
- })
- if(underwritingIndex.value>=0) quoteData.value[underwritingIndex.value].underwritingMsg = bool.msg
- }
- }
- let payCodeShow = ref(false)
- let payCodeSrc = ref('')
- const handleGetPayCode = () => {
- api.insurancePolicyApi.getQrCode(
- quoteData.value[underwritingIndex.value]?.quoteResult.ordersNo
- ).then((res: any) => {
- if (res.code == 200) {
- srcChange(res.data?.qrcode)
- payCodeShow.value = true
- } else {
- payCodeSrc.value = ''
- ElMessage({
- message: res.msg,
- type: 'warning'
- })
- }
- })
- }
- const srcChange = async (url: any) => {
- payCodeSrc.value = await QRCode.toDataURL(url, {
- width: 150,
- margin: 2
- });
- }
- const handlePayCodeClose = () => {
- payCodeSrc.value = ''
- payCodeShow.value = false
- }
- const owerFormInfo = ref<any>({})
- const policyHolderInfo = ref<any>({})
- const insuredPersonInfo = ref<any>({})
- // 证件识别
- let imageShow = ref(false)
- let images = ref([])
- const handleImageClose = (data: any) => {
- btns.value.owner1.forEach((a: any) => {
- a.checked = false
- })
- btns.value.owner2.forEach((a: any) => {
- a.checked = false
- })
- imageShow.value = false
- images.value = []
- if (data) {
- const { carForm, owerForm, ower1Form, ower2Form, imageVoList, list } = data
- if (carForm) {
- insurancePolicyForm.value.isRegistered = '1'
- insurancePolicyForm.value.licenseNo = carForm.licenseNo || hadWritedData.value.licenseNo
- insurancePolicyForm.value.vinNo = carForm.vinNo || hadWritedData.value.vinNo
- insurancePolicyForm.value.brandName = carForm.brandName || hadWritedData.value.brandName
- insurancePolicyForm.value.engineNo = carForm.engineNo || hadWritedData.value.engineNo
- insurancePolicyForm.value.carNatureCode = carForm.carNatureCode || hadWritedData.value.carNatureCode
- insurancePolicyForm.value.vehicleUseCode = carForm.vehicleUseCode || hadWritedData.value.vehicleUseCode
- insurancePolicyForm.value.carTypeCode = carForm.carTypeCode || hadWritedData.value.carTypeCode
- insurancePolicyForm.value.plateType = carForm.plateType || hadWritedData.value.plateType
- insurancePolicyForm.value.energyTypeCode = carForm.energyTypeCode || hadWritedData.value.energyTypeCode || insurancePolicyForm.value.licenseNo.length == 7 ? '0' : insurancePolicyForm.value.licenseNo.length == 8 ? '1' : ''
- insurancePolicyForm.value.registerDate = carForm.registerDate || hadWritedData.value.registerDate
- insurancePolicyForm.value.issueDate = carForm.issueDate || hadWritedData.value.issueDate
- insurancePolicyForm.value.completeKerbMass = carForm.completeKerbMass || hadWritedData.value.completeKerbMass
- insurancePolicyForm.value.limitLoad = carForm.limitLoad || hadWritedData.value.limitLoad
- insurancePolicyForm.value.seatCount = carForm.seatCount || hadWritedData.value.seatCount
- insurancePolicyForm.value.carYear = carForm.carYear || hadWritedData.value.carYear
- insurancePolicyForm.value.purchasePrice = carForm.purchasePrice || hadWritedData.value.purchasePrice
- insurancePolicyForm.value.displacement = carForm.displacement || hadWritedData.value.displacement
- insurancePolicyForm.value.powerScale = carForm.powerScale || hadWritedData.value.powerScale
- insurancePolicyForm.value.carOwner = carForm.carOwner || hadWritedData.value.carOwner
- if (carForm.licenseNo && carForm.vinNo && carForm.engineNo) {
- getQuoteNumber()
- }
- }
- if (owerForm) {
- insurancePolicyForm.value.name1 = owerForm.name || hadWritedData.value.name1
- insurancePolicyForm.value.mobile1 = owerForm.mobile || hadWritedData.value.mobile1
- insurancePolicyForm.value.identifyType1 = owerForm.identifyType || hadWritedData.value.identifyType1
- insurancePolicyForm.value.identifyNumber1 = owerForm.identifyNumber || hadWritedData.value.identifyNumber1
- insurancePolicyForm.value.identifyValidDate1 = owerForm.identifyValidDate || hadWritedData.value.identifyValidDate1
- insurancePolicyForm.value.identifyValidEndDate1 = owerForm.identifyValidEndDate || hadWritedData.value.identifyValidEndDate1
- insurancePolicyForm.value.addr1 = owerForm.addr || hadWritedData.value.addr1
- insurancePolicyForm.value.telephone1 = owerForm.telephone || hadWritedData.value.telephone1
- insurancePolicyForm.value.person1 = owerForm.person || hadWritedData.value.person1
- insurancePolicyForm.value.age1 = owerForm.age || hadWritedData.value.age1
- insurancePolicyForm.value.address1 = owerForm.address || hadWritedData.value.address1
- insurancePolicyForm.value.registeredCapital1 = owerForm.registeredCapital || hadWritedData.value.registeredCapital1
- insurancePolicyForm.value.email1 = owerForm.email || hadWritedData.value.email1
- insurancePolicyForm.value.taxpayerName = owerForm.name || hadWritedData.value.taxpayerName
- insurancePolicyForm.value.taxpayerIdentifier = owerForm.identifyType || hadWritedData.value.taxpayerIdentifier
- insurancePolicyForm.value.identifyNumber = owerForm.identifyNumber || hadWritedData.value.identifyNumber
- }
- if (ower1Form) {
- insurancePolicyForm.value.name2 = ower1Form.name || hadWritedData.value.name2
- insurancePolicyForm.value.mobile2 = ower1Form.mobile || hadWritedData.value.mobile2
- insurancePolicyForm.value.identifyType2 = ower1Form.identifyType || hadWritedData.value.identifyType2
- insurancePolicyForm.value.identifyNumber2 = ower1Form.identifyNumber || hadWritedData.value.identifyNumber2
- insurancePolicyForm.value.identifyValidDate2 = ower1Form.identifyValidDate || hadWritedData.value.identifyValidDate2
- insurancePolicyForm.value.identifyValidEndDate2 = ower1Form.identifyValidEndDate || hadWritedData.value.identifyValidEndDate2
- insurancePolicyForm.value.addr2 = ower1Form.addr || hadWritedData.value.addr2
- insurancePolicyForm.value.telephone2 = ower1Form.telephone || hadWritedData.value.telephone2
- insurancePolicyForm.value.person2 = ower1Form.person || hadWritedData.value.person2
- insurancePolicyForm.value.age2 = ower1Form.age || hadWritedData.value.age2
- insurancePolicyForm.value.address2 = ower1Form.address || hadWritedData.value.address2
- insurancePolicyForm.value.registeredCapital2 = ower1Form.registeredCapital || hadWritedData.value.registeredCapital2
- insurancePolicyForm.value.email2 = ower1Form.email || hadWritedData.value.email2
- if (!insurancePolicyForm.value.identifyNumber2 || insurancePolicyForm.value.identifyNumber2 && insurancePolicyForm.value.identifyNumber1 == insurancePolicyForm.value.identifyNumber2) {
- btns.value.owner1[0].checked = true
- btns.value.owner1Text = '同车主'
- } else if (insurancePolicyForm.value.identifyNumber2 && insurancePolicyForm.value.identifyNumber1 != insurancePolicyForm.value.identifyNumber2) {
- btns.value.owner1[1].checked = true
- btns.value.owner1Text = '其他人'
- }
- }
- if (ower2Form) {
- insurancePolicyForm.value.name3 = ower2Form.name || hadWritedData.value.name3
- insurancePolicyForm.value.mobile3 = ower2Form.mobile || hadWritedData.value.mobile3
- insurancePolicyForm.value.identifyType3 = ower2Form.identifyType || hadWritedData.value.identifyType3
- insurancePolicyForm.value.identifyNumber3 = ower2Form.identifyNumber || hadWritedData.value.identifyNumber3
- insurancePolicyForm.value.identifyValidDate3 = ower2Form.identifyValidDate || hadWritedData.value.identifyValidDate3
- insurancePolicyForm.value.identifyValidEndDate3 = ower2Form.identifyValidEndDate || hadWritedData.value.identifyValidEndDate3
- insurancePolicyForm.value.addr3 = ower2Form.addr || hadWritedData.value.addr3
- insurancePolicyForm.value.telephone3 = ower2Form.telephone || hadWritedData.value.telephone3
- insurancePolicyForm.value.person3 = ower2Form.person || hadWritedData.value.person3
- insurancePolicyForm.value.age3 = ower2Form.age || hadWritedData.value.age3
- insurancePolicyForm.value.address3 = ower2Form.address || hadWritedData.value.address3
- insurancePolicyForm.value.registeredCapital3 = ower2Form.registeredCapital || hadWritedData.value.registeredCapital3
- insurancePolicyForm.value.email3 = ower2Form.email || hadWritedData.value.email3
- if (insurancePolicyForm.value.identifyNumber3 && insurancePolicyForm.value.identifyNumber1 == insurancePolicyForm.value.identifyNumber3) {
- btns.value.owner2[1].checked = true
- btns.value.owner2Text = '同车主'
- } else if (!insurancePolicyForm.value.identifyNumber3 || insurancePolicyForm.value.identifyNumber3 && insurancePolicyForm.value.identifyNumber2 == insurancePolicyForm.value.identifyNumber3) {
- btns.value.owner2[0].checked = true
- btns.value.owner2Text = '同投保人'
- } else if (insurancePolicyForm.value.identifyNumber3 && insurancePolicyForm.value.identifyNumber2 != insurancePolicyForm.value.identifyNumber3) {
- btns.value.owner2[2].checked = true
- btns.value.owner2Text = '其他人'
- }
- }
- if (imageVoList && imageVoList.length > 0) {
- insurancePolicyForm.value.imageVoList = imageVoList.filter((a: any) => a.imageBase64List[0].imageId)
- }
- if (list && list.length > 0) {
- images.value = list
- }
- }
- }
- // 记录已填好的信息,防止再次进行证件识别
- let hadWritedData = ref<Partial<typeof insurancePolicyForm.value>>({})
- const handleRecognition = (achor: any) => {
- imageShow.value = true
- hadWritedData.value = JSON.parse(JSON.stringify(insurancePolicyForm.value))
- nextTick(() => {
- RecognitionRefs.value.setAnchor(achor)
- })
- }
- // 提交相关
- let loading = ref(false) // 提交加载状态
- /**
- * 处理保险单提交
- * 验证表单数据并提交给后端
- * @param InsurancePolicyRefs 表单引用实例
- * @param scope 当前行作用域
- */
- const handleSubmit = async (InsurancePolicyRefs: FormInstance | undefined, scope: any) => {
- // 检查货车是否填写核定载质量
- if (insurancePolicyForm.value.plateType == 'A1') {
- if (!insurancePolicyForm.value.limitLoad) {
- ElMessage({
- message: '车辆种类为货车时,核定载质量必传!',
- type: 'warning'
- })
- return
- }
- }
- if (!InsurancePolicyRefs) {
- InsurancePolicyRefs?.resetFields()
- return
- }
- await InsurancePolicyRefs.validate((valid: any) => {
- if (valid) {
- // 设置当前报价项的加载状态
- quoteData.value[scope.$index].loading = true
- let arr = [], brr = [], crr = [] // 分别存储险种、驾意险、特约信息
- // 获取当前选中公司的报价方案
- if (quoteData.value.length > 0) {
- let obj = quoteData.value.find((a: QuoteDataItem) => a.id === insurancePolicyForm.value.order.insuranceCompanyCode)
- if (obj && obj.projectList && obj.productIndex !== undefined) {
- // 收集险种信息
- obj.projectList[obj.productIndex].kinds?.forEach((a: any) => {
- arr.push(a)
- })
- // 收集驾意险信息
- obj.projectList[obj.productIndex].drivings?.forEach((a: any) => {
- brr.push(a)
- })
- }
- // 收集特约信息
- if (obj?.specialSelectedList && obj.specialSelectedList.length > 0) {
- obj.specialSelectedList.forEach((a: any) => {
- crr.push(a)
- })
- }
- // obj.projectList?.forEach((sub:any) => {
- // sub.kinds?.forEach((max:any) => {
- // arr.push(max)
- // })
- // sub.drivings?.forEach((max:any) => {
- // brr.push(max)
- // })
- // })
- }
- // 处理车主与投保人关系
- let obj1 = btns.value.owner1.find((a: any) => a.checked)
- btns.value.owner1Text = obj1.text
- if (obj1.text === '同车主') {
- // 如果选择"同车主",则将投保人信息设为车主信息
- insurancePolicyForm.value.name2 = insurancePolicyForm.value.name1
- insurancePolicyForm.value.mobile2 = insurancePolicyForm.value.mobile1
- insurancePolicyForm.value.identifyType2 = insurancePolicyForm.value.identifyType1
- insurancePolicyForm.value.identifyNumber2 = insurancePolicyForm.value.identifyNumber1
- insurancePolicyForm.value.identifyValidDate2 = insurancePolicyForm.value.identifyValidDate1
- insurancePolicyForm.value.identifyValidEndDate2 = insurancePolicyForm.value.identifyValidEndDate1
- insurancePolicyForm.value.addr2 = insurancePolicyForm.value.addr1
- insurancePolicyForm.value.telephone2 = insurancePolicyForm.value.telephone1
- insurancePolicyForm.value.person2 = insurancePolicyForm.value.person1
- insurancePolicyForm.value.age2 = insurancePolicyForm.value.age1
- insurancePolicyForm.value.address2 = insurancePolicyForm.value.address1
- insurancePolicyForm.value.registeredCapital2 = insurancePolicyForm.value.registeredCapital1
- insurancePolicyForm.value.email2 = insurancePolicyForm.value.email1
- }
- // 处理投保人与被保人关系
- let obj2 = btns.value.owner2.find((a: any) => a.checked)
- btns.value.owner2Text = obj2.text
- if (obj2.text === '同车主') {
- // 如果被保人选择"同车主",则将被保人信息设为车主信息
- insurancePolicyForm.value.name3 = insurancePolicyForm.value.name1
- insurancePolicyForm.value.mobile3 = insurancePolicyForm.value.mobile1
- insurancePolicyForm.value.identifyType3 = insurancePolicyForm.value.identifyType1
- insurancePolicyForm.value.identifyNumber3 = insurancePolicyForm.value.identifyNumber1
- insurancePolicyForm.value.identifyValidDate3 = insurancePolicyForm.value.identifyValidDate1
- insurancePolicyForm.value.identifyValidEndDate3 = insurancePolicyForm.value.identifyValidEndDate1
- insurancePolicyForm.value.addr3 = insurancePolicyForm.value.addr1
- insurancePolicyForm.value.telephone3 = insurancePolicyForm.value.telephone1
- insurancePolicyForm.value.person3 = insurancePolicyForm.value.person1
- insurancePolicyForm.value.age3 = insurancePolicyForm.value.age1
- insurancePolicyForm.value.address3 = insurancePolicyForm.value.address1
- insurancePolicyForm.value.registeredCapital3 = insurancePolicyForm.value.registeredCapital1
- insurancePolicyForm.value.email3 = insurancePolicyForm.value.email1
- }
- if (obj2.text === '同投保人') {
- // 如果被保人选择"同投保人",则将被保人信息设为投保人信息
- insurancePolicyForm.value.name3 = insurancePolicyForm.value.name2
- insurancePolicyForm.value.mobile3 = insurancePolicyForm.value.mobile2
- insurancePolicyForm.value.identifyType3 = insurancePolicyForm.value.identifyType2
- insurancePolicyForm.value.identifyNumber3 = insurancePolicyForm.value.identifyNumber2
- insurancePolicyForm.value.identifyValidDate3 = insurancePolicyForm.value.identifyValidDate2
- insurancePolicyForm.value.identifyValidEndDate3 = insurancePolicyForm.value.identifyValidEndDate2
- insurancePolicyForm.value.addr3 = insurancePolicyForm.value.addr2
- insurancePolicyForm.value.telephone3 = insurancePolicyForm.value.telephone2
- insurancePolicyForm.value.person3 = insurancePolicyForm.value.person2
- insurancePolicyForm.value.age3 = insurancePolicyForm.value.age2
- insurancePolicyForm.value.address3 = insurancePolicyForm.value.address2
- insurancePolicyForm.value.registeredCapital3 = insurancePolicyForm.value.registeredCapital2
- insurancePolicyForm.value.email3 = insurancePolicyForm.value.email2
- }
- // 构建提交数据
- let data = {
- systemType: '2',
- order: {
- insuranceCompanyCode: quoteData.value[scope.$index].id, // 保险公司代码
- quoteNo: insurancePolicyForm.value.order.quoteNo, // 报价单号
- agreementId: quoteData.value[scope.$index].isDispatch ? quoteData.value[scope.$index].dispatchAgreementId : quoteData.value[scope.$index].agreement, // 协议ID
- productId: insurancePolicyForm.value.productId, // 产品ID
- },
- carInfoVo: { // 车辆信息
- licenseKindCode: '02', // 车牌种类代码
- propertyCode: insurancePolicyForm.value.propertyCode, // 车辆性质代码
- licenseNo: insurancePolicyForm.value.licenseNo, // 车牌号
- vinNo: insurancePolicyForm.value.vinNo, // 车架号
- brandName: insurancePolicyForm.value.brandName, // 品牌型号
- engineNo: insurancePolicyForm.value.engineNo, // 发动机号
- carNatureCode: insurancePolicyForm.value.carNatureCode, // 使用性质代码
- vehicleUseCode: insurancePolicyForm.value.vehicleUseCode, // 车辆用途代码
- carTypeCode: insurancePolicyForm.value.carTypeCode, // 车辆类型代码
- energyTypeCode: insurancePolicyForm.value.energyTypeCode, // 能源种类代码
- registerDate: insurancePolicyForm.value.registerDate, // 注册日期
- issueDate: insurancePolicyForm.value.issueDate, // 发证日期
- completeKerbMass: insurancePolicyForm.value.completeKerbMass, // 整备质量
- limitLoad: insurancePolicyForm.value.limitLoad, // 核定载质量
- seatCount: insurancePolicyForm.value.seatCount, // 座位数
- carYear: insurancePolicyForm.value.carYear, // 年款
- purchasePrice: insurancePolicyForm.value.purchasePrice, // 新车购置价
- displacement: insurancePolicyForm.value.displacement, // 排量
- powerScale: insurancePolicyForm.value.powerScale, // 功率
- carKindCode: insurancePolicyForm.value.plateType, // 车辆种类代码
- transfer: insurancePolicyForm.value.transfer, // 转移标记
- biTransfer: insurancePolicyForm.value.biTransfer, // 商业险转移标记
- secondHandCar: insurancePolicyForm.value.secondHandCar, // 二手车标记
- transferDate: insurancePolicyForm.value.transferDate // 转移登记日期
- },
- ownersInfo: { // 车主信息
- property: 1,
- name: insurancePolicyForm.value.name1, // 车主姓名
- mobile: insurancePolicyForm.value.mobile1, // 车主手机号
- identifyType: insurancePolicyForm.value.identifyType1, // 车主证件类型
- identifyNumber: insurancePolicyForm.value.identifyNumber1, // 车主证件号码
- identifyValidDate: insurancePolicyForm.value.identifyValidDate1, // 车主证件有效期起始
- identifyValidEndDate: insurancePolicyForm.value.identifyValidEndDate1, // 车主证件有效期截止
- addr: insurancePolicyForm.value.addr1, // 车主地址
- telephone: insurancePolicyForm.value.telephone1, // 车主座机
- person: insurancePolicyForm.value.person1, // 车主联系人
- age: insurancePolicyForm.value.age1, // 车主年龄
- address: insurancePolicyForm.value.address1, // 车主地区
- registeredCapital: insurancePolicyForm.value.registeredCapital1, // 车主注册资金
- email: insurancePolicyForm.value.email1, // 车主邮箱
- },
- policyHolderInfo: { // 投保人信息
- property: 1,
- name: insurancePolicyForm.value.name2, // 投保人姓名
- mobile: insurancePolicyForm.value.mobile2, // 投保人手机号
- identifyType: insurancePolicyForm.value.identifyType2, // 投保人证件类型
- identifyNumber: insurancePolicyForm.value.identifyNumber2, // 投保人证件号码
- identifyValidDate: insurancePolicyForm.value.identifyValidDate2, // 投保人证件有效期起始
- identifyValidEndDate: insurancePolicyForm.value.identifyValidEndDate2, // 投保人证件有效期截止
- addr: insurancePolicyForm.value.addr2, // 投保人地址
- telephone: insurancePolicyForm.value.telephone2, // 投保人座机
- person: insurancePolicyForm.value.person2, // 投保人联系人
- age: insurancePolicyForm.value.age2, // 投保人年龄
- address: insurancePolicyForm.value.address2, // 投保人地区
- registeredCapital: insurancePolicyForm.value.registeredCapital2, // 投保人注册资金
- email: insurancePolicyForm.value.email2, // 投保人邮箱
- },
- insuredPersonInfo: { // 被保人信息
- property: 1,
- name: insurancePolicyForm.value.name3, // 被保人姓名
- mobile: insurancePolicyForm.value.mobile3, // 被保人手机号
- identifyType: insurancePolicyForm.value.identifyType3, // 被保人证件类型
- identifyNumber: insurancePolicyForm.value.identifyNumber3, // 被保人证件号码
- identifyValidDate: insurancePolicyForm.value.identifyValidDate3, // 被保人证件有效期起始
- identifyValidEndDate: insurancePolicyForm.value.identifyValidEndDate3, // 被保人证件有效期截止
- addr: insurancePolicyForm.value.addr3, // 被保人地址
- telephone: insurancePolicyForm.value.telephone3, // 被保人座机
- person: insurancePolicyForm.value.person3, // 被保人联系人
- age: insurancePolicyForm.value.age3, // 被保人年龄
- address: insurancePolicyForm.value.address3, // 被保人地区
- registeredCapital: insurancePolicyForm.value.registeredCapital3, // 被保人注册资金
- email: insurancePolicyForm.value.email3, // 被保人邮箱
- },
- // 交强险信息,根据产品ID和日期判断是否需要提交
- ciRiskInfoVo: insurancePolicyForm.value.productId === '0330' || insurancePolicyForm.value.productId === '0330034002' || insurancePolicyForm.value.productId === '0330034001' && insurancePolicyForm.value.JQStartDate && insurancePolicyForm.value.JQEndDate ? {
- riskCode: '0507', // 风险代码
- startDate: insurancePolicyForm.value.JQStartDate, // 开始日期
- endDate: insurancePolicyForm.value.JQEndDate, // 结束日期
- instantFlag: insurancePolicyForm.value.JQInstantFlag // 即时生效标志
- } : null,
- // 商业险信息,根据产品ID和日期判断是否需要提交
- biRiskInfoVo: insurancePolicyForm.value.productId === '034001' || insurancePolicyForm.value.productId === '034002' || insurancePolicyForm.value.productId === '0330034002' || insurancePolicyForm.value.productId === '0330034001' && insurancePolicyForm.value.SYStartDate && insurancePolicyForm.value.SYEndDate ? {
- riskCode: '0510', // 风险代码
- startDate: insurancePolicyForm.value.SYStartDate, // 开始日期
- endDate: insurancePolicyForm.value.SYEndDate, // 结束日期
- instantFlag: insurancePolicyForm.value.SYInstantFlag // 即时生效标志
- } : null,
- vehicleAndVesselTaxVo: { // 车船税信息
- taxRelifFlag: insurancePolicyForm.value.taxRelifFlag, // 车船税减免标志
- extendChar2: insurancePolicyForm.value.extendChar2, // 扩展字符2
- relifReason: insurancePolicyForm.value.relifReason,
- taxComCode: insurancePolicyForm.value.taxComCode,
- taxComName: insurancePolicyForm.value.taxComName,
- taxRelief: insurancePolicyForm.value.taxRelief,
- taxDocumentDate: insurancePolicyForm.value.taxDocumentDate,
- taxPaidAreaCode: insurancePolicyForm.value.taxPaidAreaCode,
- taxpayerName: insurancePolicyForm.value.taxpayerName,
- taxpayerIdentifier: insurancePolicyForm.value.taxpayerIdentifier,
- identifyNumber: insurancePolicyForm.value.identifyNumber,
- },
- kindInfoVo: [...arr],
- accidentalDrivings: [...brr],
- specialInfoVo: [...crr]
- }
- owerFormInfo.value = { ...data.ownersInfo, title: '车主', policyPersonType: '1' };
- policyHolderInfo.value = { ...data.policyHolderInfo, title: '投保人', policyPersonType: '2' };
- insuredPersonInfo.value = { ...data.insuredPersonInfo, title: '被保人', policyPersonType: '3' };
- // 先保存影像资料
- api.insurancePolicyApi.imageSave({
- order: {
- quoteNo: insurancePolicyForm.value.order.quoteNo
- },
- imageVoList: insurancePolicyForm.value.imageVoList
- }).then((res: any) => {
- if (res.code == 200) {
- ElMessage({
- message: res.msg,
- type: 'success'
- })
- // 再进行报价
- api.insurancePolicyApi.quote(data).then((res: any) => {
- if (res.code == 200) {
- ElMessage({
- message: res.msg,
- type: 'success'
- })
- // 计算总保费
- if (res.data) {
- let a = res.data.ciPremium ? res.data.ciPremium : 0 // 交强险保费
- let b = res.data.vvTax ? res.data.vvTax : 0 // 车船税
- let c = res.data.biPremium ? res.data.biPremium : 0 // 商业险保费
- let d = res.data.niPremium ? res.data.niPremium : 0 // 未知险种保费
- res.data.quoteTotal = Number(a) + Number(b) + Number(c) + Number(d) // 总保费
- // 替换保险公司返回的正确日期
- if (res.data.ciStartDate) {
- insurancePolicyForm.value.JQStartDate = res.data.ciStartDate
- insurancePolicyForm.value.JQEndDate = res.data.ciEndDate
- }
- if (res.data.biStartDate) {
- insurancePolicyForm.value.SYStartDate = res.data.biStartDate
- insurancePolicyForm.value.SYEndDate = res.data.biEndDate
- }
- }
- // 设置折扣信息
- quoteData.value[scope.$index].discounts = [
- {
- name: '交强', // 交强险费用明细
- additionalPremium: res.data?.feeOrders?.jqAdditionalPremium,
- additionalRatio: res.data?.feeOrders?.jqAdditionalRatio,
- commissionPremium: res.data?.feeOrders?.jqCommissionPremium,
- commissionRatio: res.data?.feeOrders?.jqCommissionRatio,
- exportPremium: res.data?.feeOrders?.jqExportPremium,
- exportRatio: res.data?.feeOrders?.jqExportRatio,
- }, {
- name: '商业', // 商业险费用明细
- additionalPremium: res.data?.feeOrders?.syAdditionalPremium,
- additionalRatio: res.data?.feeOrders?.syAdditionalRatio,
- commissionPremium: res.data?.feeOrders?.syCommissionPremium,
- commissionRatio: res.data?.feeOrders?.syCommissionRatio,
- exportPremium: res.data?.feeOrders?.syExportPremium,
- exportRatio: res.data?.feeOrders?.syExportRatio,
- }, {
- name: '驾意险', // 驾意险费用明细
- additionalPremium: res.data?.feeOrders?.jyAdditionalPremium,
- additionalRatio: res.data?.feeOrders?.jyAdditionalRatio,
- commissionPremium: res.data?.feeOrders?.jyCommissionPremium,
- commissionRatio: res.data?.feeOrders?.jyCommissionRatio,
- exportPremium: res.data?.feeOrders?.jyExportPremium,
- exportRatio: res.data?.feeOrders?.jyExportRatio,
- },
- ]
- // 保存报价结果
- quoteData.value[scope.$index].quoteResult = res.data
- quoteData.value[scope.$index].quoteResult.code = res.code
- console.log(res.data)
- loading.value = false
- quoteData.value[scope.$index].loading = false
- console.log('报价后的数据', quoteData.value)
- } else {
- // ElMessage({
- // message: res.msg,
- // type: 'warning'
- // })
- quoteData.value[scope.$index].quoteResult = res.data
- quoteData.value[scope.$index].quoteResult.failMsg = res.msg
- loading.value = false
- quoteData.value[scope.$index].loading = false
- }
- // InsurancePolicyRefs.resetFields()
- }).catch((e: any) => {
- // 处理异常情况,重置加载状态
- loading.value = false
- quoteData.value[scope.$index].loading = false
- quoteData.value.forEach((a: any) => {
- a.loading = false
- })
- })
- } else {
- ElMessage({
- message: res.msg,
- type: 'warning'
- })
- }
- })
- // api.insurancePolicyApi.imageSave({
- // order: {
- // quoteNo: insurancePolicyForm.value.order.quoteNo
- // },
- // imageVoList: insurancePolicyForm.value.imageVoList
- // }).then((res: any) => {
- // if(res.code == 200) {
- // api.insurancePolicyApi.quote(data).then((res: any) => {
- // if(res.code == 200) {
- // ElMessage({
- // message: res.msg,
- // type: 'success'
- // })
- // if(res.data) {
- // let a = res.data.ciPremium?res.data.ciPremium:0
- // let b = res.data.vvTax?res.data.vvTax:0
- // let c = res.data.biPremium?res.data.biPremium:0
- // let d = res.data.niPremium?res.data.niPremium:0
- // res.data.quoteTotal = Number(a) + Number(b) + Number(c) + Number(d)
- // }
- // quoteData.value[scope.$index].discounts = [
- // {
- // name: '交强',
- // additionalPremium: res.data?.feeOrders?.jqAdditionalPremium,
- // additionalRatio: res.data?.feeOrders?.jqAdditionalRatio,
- // commissionPremium: res.data?.feeOrders?.jqCommissionPremium,
- // commissionRatio: res.data?.feeOrders?.jqCommissionRatio,
- // exportPremium: res.data?.feeOrders?.jqExportPremium,
- // exportRatio: res.data?.feeOrders?.jqExportRatio,
- // },{
- // name: '商业',
- // additionalPremium: res.data?.feeOrders?.syAdditionalPremium,
- // additionalRatio: res.data?.feeOrders?.syAdditionalRatio,
- // commissionPremium: res.data?.feeOrders?.syCommissionPremium,
- // commissionRatio: res.data?.feeOrders?.syCommissionRatio,
- // exportPremium: res.data?.feeOrders?.syExportPremium,
- // exportRatio: res.data?.feeOrders?.syExportRatio,
- // },{
- // name: '驾意险',
- // additionalPremium: res.data?.feeOrders?.jyAdditionalPremium,
- // additionalRatio: res.data?.feeOrders?.jyAdditionalRatio,
- // commissionPremium: res.data?.feeOrders?.jyCommissionPremium,
- // commissionRatio: res.data?.feeOrders?.jyCommissionRatio,
- // exportPremium: res.data?.feeOrders?.jyExportPremium,
- // exportRatio: res.data?.feeOrders?.jyExportRatio,
- // },
- // ]
- // quoteData.value[scope.$index].quoteResult = res.data
- // loading.value = false
- // quoteData.value[scope.$index].loading = false
- // console.log('报价后的数据', quoteData.value)
- // } else {
- // ElMessage({
- // message: res.msg,
- // type: 'warning'
- // })
- // quoteData.value[scope.$index].quoteResult.failMsg = res.msg
- // loading.value = false
- // quoteData.value[scope.$index].loading = false
- // }
- // // InsurancePolicyRefs.resetFields()
- // }).catch(e => {
- // loading.value = false
- // quoteData.value[scope.$index].loading = false
- // quoteData.value.forEach(a => {
- // a.loading = false
- // })
- // })
- // } else {
- // ElMessage({
- // message: res.msg,
- // type: 'warning'
- // })
- // }
- // })
- } else {
- // 表单验证失败提示
- ElMessage({
- message: '请完整填写相关信息',
- type: 'warning'
- })
- }
- })
- }
- /**
- * 处理下一步操作
- * 在新窗口打开保险单页面
- */
- const handleNext = () => {
- const urlLink = router.resolve({
- path: '/insurancePolicy/index',
- })
- window.open(urlLink.href, '_blank')
- }
- /**
- * 显示费用匹配错误信息
- * @param scope 当前行作用域
- */
- const handleOpen = (scope: any) => {
- ElNotification({
- title: '费用匹配错误信息',
- message: h('p', { style: 'white-space: pre-line' }, `${scope.row.quoteResult?.feeNoDescription}`),
- })
- }
- /**
- * 根据规则筛选保险公司
- * 根据产品ID和车辆及人员信息获取可报价的保险公司列表
- * @param item 选中的产品信息
- */
- const ruleFilterCompany = (item: any) => {
- let data = {
- productId: item.value, // 产品ID
- carInfo: { // 车辆信息
- carOwner: insurancePolicyForm.value.carOwner,
- licenseNo: insurancePolicyForm.value.licenseNo,
- vinNo: insurancePolicyForm.value.vinNo,
- brandName: insurancePolicyForm.value.brandName,
- engineNo: insurancePolicyForm.value.engineNo,
- carNatureCode: insurancePolicyForm.value.carNatureCode,
- vehicleUseCode: insurancePolicyForm.value.vehicleUseCode,
- carTypeCode: insurancePolicyForm.value.carTypeCode,
- energyTypeCode: insurancePolicyForm.value.energyTypeCode,
- registerDate: insurancePolicyForm.value.registerDate,
- issueDate: insurancePolicyForm.value.issueDate,
- completeKerbMass: insurancePolicyForm.value.completeKerbMass,
- limitLoad: insurancePolicyForm.value.limitLoad,
- seatCount: insurancePolicyForm.value.seatCount,
- carYear: insurancePolicyForm.value.carYear,
- purchasePrice: insurancePolicyForm.value.purchasePrice,
- displacement: insurancePolicyForm.value.displacement,
- powerScale: insurancePolicyForm.value.powerScale,
- carKindCode: insurancePolicyForm.value.plateType
- },
- ownerInfo: { // 车主信息
- name: insurancePolicyForm.value.name1,
- mobile: insurancePolicyForm.value.mobile1,
- identifyType: insurancePolicyForm.value.identifyType1,
- identifyNumber: insurancePolicyForm.value.identifyNumber1,
- identifyValidDate: insurancePolicyForm.value.identifyValidDate1,
- identifyValidEndDate: insurancePolicyForm.value.identifyValidEndDate1,
- addr: insurancePolicyForm.value.addr1,
- telephone: insurancePolicyForm.value.telephone1,
- person: insurancePolicyForm.value.person1,
- age: insurancePolicyForm.value.age1,
- address: insurancePolicyForm.value.address1,
- registeredCapital: insurancePolicyForm.value.registeredCapital1,
- email: insurancePolicyForm.value.email1,
- },
- applyInfo: { // 投保人信息
- name: insurancePolicyForm.value.name2,
- mobile: insurancePolicyForm.value.mobile2,
- identifyType: insurancePolicyForm.value.identifyType2,
- identifyNumber: insurancePolicyForm.value.identifyNumber2,
- identifyValidDate: insurancePolicyForm.value.identifyValidDate2,
- identifyValidEndDate: insurancePolicyForm.value.identifyValidEndDate2,
- addr: insurancePolicyForm.value.addr2,
- telephone: insurancePolicyForm.value.telephone2,
- person: insurancePolicyForm.value.person2,
- age: insurancePolicyForm.value.age2,
- address: insurancePolicyForm.value.address2,
- registeredCapital: insurancePolicyForm.value.registeredCapital2,
- email: insurancePolicyForm.value.email2,
- },
- insureInfo: { // 被保人信息
- name: insurancePolicyForm.value.name3,
- mobile: insurancePolicyForm.value.mobile3,
- identifyType: insurancePolicyForm.value.identifyType3,
- identifyNumber: insurancePolicyForm.value.identifyNumber3,
- identifyValidDate: insurancePolicyForm.value.identifyValidDate3,
- identifyValidEndDate: insurancePolicyForm.value.identifyValidEndDate3,
- addr: insurancePolicyForm.value.addr3,
- telephone: insurancePolicyForm.value.telephone3,
- person: insurancePolicyForm.value.person3,
- age: insurancePolicyForm.value.age3,
- address: insurancePolicyForm.value.address3,
- registeredCapital: insurancePolicyForm.value.registeredCapital3,
- email: insurancePolicyForm.value.email3,
- },
- }
- // 调用API获取符合规则的保险公司列表
- api.insurancePolicyApi.ruleFilterCompany(data).then((res: any) => {
- if (res.code == 200) {
- // 设置每个保险公司的加载状态
- res.data.forEach((a: any) => {
- a.loading = false
- })
- quoteData.value = res.data
- // 如果只有一个协议,自动选择
- quoteData.value.forEach((item: any) => {
- if (item.agreements && item.agreements.length == 1) {
- item.agreement = item.agreements[0].id
- }
- })
- } else {
- quoteData.value = []
- ElMessage({
- message: res.msg,
- type: 'warning'
- })
- }
- })
- }
- // 组件挂载后执行初始化操作
- onMounted(() => {
- getAreaList() // 获取地区列表
- initDept() // 初始化部门数据
- initOption() // 初始化下拉选项
- if (myRoute.query.orderNo) {
- initDetail() // 如果有订单号,初始化详情
- }
- })
- </script>
- <style scoped lang="scss">
- @use "@/assets/styles/common/style";
- .insurancePolicy {
- width: calc(100% - 48px);
- height: calc(100vh - 128px);
- margin: 10px 24px 0;
- overflow-y: auto;
- overflow-x: hidden;
- .formItem {
- padding: 0 24px;
- background: #FFFFFF;
- border-radius: 6px;
- }
- .title {
- height: 18px;
- border-left: 4px solid #00a0f4;
- display: flex;
- align-items: center;
- padding-left: 8px;
- margin-left: 24px;
- color: #333333;
- font-size: 18px;
- font-weight: bold;
- }
- .icon {
- padding-right: 24px;
- display: flex;
- align-items: center;
- }
- .myIcon {
- display: inline-block;
- width: 14px;
- height: 14px;
- margin-right: 10px;
- }
- .icon-ele {
- font-size: 14px;
- margin-left: 10px;
- color: #333;
- margin-right: 6px;
- }
- .ordinary {
- height: 28px;
- line-height: 28px;
- padding: 0 12px;
- border: 1px solid #EEEEEE;
- border-radius: 2px;
- color: #666666;
- display: flex;
- font-size: 14px;
- margin: 0 5px;
- font-weight: 400;
- border-radius: 2px;
- }
- .active {
- border: 1px solid #0083FF;
- color: #0083FF;
- background: url("@/assets/images/additional/right.png") no-repeat right bottom;
- background-size: 12px 12px;
- }
- .insurance-jq {
- margin: 10px 0 24px 24px;
- .checkbox {
- margin: 0 24px;
- height: 28px;
- line-height: 28px;
- padding: 0 12px;
- border: 1px solid #EEEEEE;
- border-radius: 2px;
- color: #666666;
- display: flex;
- font-size: 14px;
- cursor: pointer;
- }
- .cehcked {
- border: 1px solid #0083FF;
- color: #0083FF;
- background: url("@/assets/images/additional/right.png") no-repeat right bottom;
- background-size: 12px 12px;
- }
- .time {
- display: flex;
- align-items: center;
- .el-form-item {
- margin-bottom: 0;
- }
- }
- }
- .success {
- color: #1DAEFF;
- border: 1px solid #1DAEFF;
- background: #E7F7FF;
- padding: 2px 4px;
- border-radius: 2px;
- font-size: 12px;
- }
- .fail {
- color: #FF4545;
- border: 1px solid #FF4545;
- background: #FFF4F4;
- padding: 2px 4px;
- border-radius: 2px;
- font-size: 12px;
- margin-right: 10px;
- }
- .company {
- display: flex;
- align-items: center;
- justify-content: center;
- img {
- width: 24px;
- height: 24px;
- margin-right: 10px;
- }
- }
- .resultItem {
- display: flex;
- align-items: center;
- justify-content: flex-start;
- font-size: 14px;
- color: #666;
- .resultTips {
- display: flex;
- align-items: center;
- justify-content: flex-start;
- background: #FFFAEF;
- border: 1px solid #FAA21E;
- border-radius: 2px;
- padding: 0 10px 0 5px;
- font-size: 12px;
- margin-left: 10px;
- color: #333;
- }
- }
- .resultItem:first-child>span {
- font-size: 14px;
- color: #333;
- font-weight: bold;
- }
- .costFactor {
- width: 100%;
- display: flex;
- align-items: center;
- justify-content: flex-start;
- }
- .quoteFail {
- display: flex;
- align-items: center;
- justify-content: flex-start;
- font-size: 12px;
- }
- .quoteReason {
- text-align: left;
- padding-left: 22px;
- width: 100%;
- display: -webkit-box;
- /* 必须设置,用于多行溢出 */
- -webkit-box-orient: vertical;
- /* 设置盒子排列方向为垂直 */
- line-clamp: 2;
- /* 限制显示的行数,例如显示 3 行 */
- overflow: hidden;
- font-size: 12px;
- }
- .product {
- margin-top: 12px;
- .productItem {
- padding: 5px 12px;
- box-sizing: border-box;
- font-size: 14px;
- color: #666;
- border: 1px solid #E5E5E5;
- border-radius: 2px;
- cursor: pointer;
- margin-right: 10px;
- }
- .productActive {
- border: 1px solid #0083FF;
- color: #0083FF;
- }
- }
- .quoteTitle {
- height: 16px;
- border-left: 4px solid #00a0f4;
- display: flex;
- align-items: center;
- padding-left: 6px;
- color: #333333;
- font-size: 16px;
- font-weight: bold;
- margin: 16px 0;
- }
- .quoteFlex {
- display: flex;
- align-items: center;
- justify-content: center;
- }
- .imageCode {
- height: 140px;
- display: flex;
- align-items: center;
- justify-content: center;
- img {
- width: 140px;
- height: 140px;
- }
- }
- .expandFlex {
- display: flex;
- .expandTitle {
- width: 50px;
- margin-right: 10px;
- background: #F0F8FF;
- font-size: 18px;
- color: #333;
- font-weight: bold;
- writing-mode: vertical-rl;
- letter-spacing: 4px;
- }
- }
- .equities {
- display: flex;
- align-items: center;
- justify-content: flex-start;
- margin-bottom: 10px;
- .equitiesTitle {
- color: #333333;
- font-size: 16px;
- font-weight: bold;
- }
- .equitiesBox {
- display: flex;
- align-items: center;
- justify-content: flex-start;
- background: #F0F8FF;
- border-radius: 2px;
- .equitiesLabel {
- display: flex;
- align-items: center;
- justify-content: flex-start;
- background: #DFF1FF;
- padding: 9px 10px;
- color: #00AAFF;
- font-size: 14px;
- img {
- width: 16px;
- height: 16px;
- margin-right: 5px;
- }
- }
- .circle {
- width: 0;
- height: 0;
- border-bottom: 42px solid #DFF1FF;
- border-right: 20px solid transparent;
- }
- }
- .equitiesChoice {
- margin-left: 10px;
- }
- }
- :deep(.el-collapse-item__header) {
- display: flex;
- align-items: center;
- justify-content: space-between;
- }
- :deep(.el-form .el-form-item) {
- margin-bottom: 10px;
- }
- .formBlock {
- :deep(.el-form-item) {
- display: block;
- }
- }
- .factorTable {
- .more {
- border: 1px solid #0083FF;
- display: flex;
- align-items: center;
- justify-content: center;
- border-radius: 50%;
- width: 12px;
- height: 12px;
- color: #0083FF;
- font-size: 10px;
- margin-left: 2px;
- }
- :deep(.cell) {
- font-size: 14px;
- }
- }
- :deep(thead .el-table__cell) {
- background: #eeeeee;
- }
- .footer {
- display: flex;
- align-items: center;
- justify-content: center;
- margin-top: 10px;
- background: #FFFFFF;
- padding: 16px 0;
- }
- }
- // 保费因子
- .premiumFactor {
- width: 100%;
- margin: 10px 0;
- border: 1px solid #eee;
- border-radius: 5px;
- .header {
- font-size: 14px;
- font-weight: bold;
- color: #333333;
- padding: 6px 8px;
- box-sizing: border-box;
- text-align: center;
- }
- .flex.a-start.f-wrap {
- gap: 0;
- }
- .Factor-item {
- min-width: 50px;
- flex: auto;
- .item-header {
- width: 100%;
- font-size: 14px;
- color: #666666;
- font-weight: bold;
- background: #F7F7F9;
- justify-content: center;
- padding: 6px 8px;
- box-sizing: border-box;
- }
- span:last-child {
- font-size: 14px;
- color: #333333;
- padding: 6px 8px;
- box-sizing: border-box;
- }
- }
- }
- </style>
|