| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587 |
- <!-- 保险单页面模板 -->
- <template>
- <!-- 主容器 -->
- <div class="insurancePolicy">
- <!-- 表单组件:包含所有保险单信息 -->
- <el-form ref="InsurancePolicyRefs" :model="insurancePolicyForm" :rules="insurancePolicyRules">
- <!-- 业务员信息区域 -->
- <el-row :gutter="20" class="formItem" v-if="!userInfo.typeAttr?.includes('7')">
- <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: 16px">更换业务员</el-button>
- </el-col>
- </el-row>
- <!-- 可折叠面板:包含各种信息模块 -->
- <el-collapse v-model="activeName" ref="collapse">
- <!-- 车辆信息面板 -->
- <el-collapse-item name="car" disabled>
- <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')" @blur="changeCompany()" @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="请选择" @change="changeCompany">
- <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="请选择" @change="changeCompany">
- <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="请选择" @change="changeCompany">
- <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">
- <div id="registerDate" style="width: 100%">
- <el-date-picker v-model="insurancePolicyForm.registerDate" type="date" placeholder="请选择"
- value-format="YYYY-MM-DD" style="width: 100%"
- @focus="inParkingDataFocus('registerDate', 'registerDate')" />
- </div>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 发证日期选择器 -->
- <el-form-item label="发证日期" prop="issueDate">
- <div id="issueDate" style="width: 100%">
- <el-date-picker v-model="insurancePolicyForm.issueDate" type="date" placeholder="请选择"
- value-format="YYYY-MM-DD" style="width: 100%" @change="issueDateChange"
- @focus="inParkingDataFocus('issueDate', 'issueDate')" />
- </div>
- </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>
- <div class="flex items-center cursor-pointer" @click="setActiveNames('car', isActive)">
- <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>
- </div>
- </template>
- </el-collapse-item>
- <!-- 车主信息面板 -->
- <el-collapse-item name="owner" disabled>
- <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="有效期起期">
- <div id="identifyValidDate1" style="width: 100%">
- <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)"
- @focus="inParkingDataFocus('identifyValidDate1', 'identifyValidDate1')" />
- </div>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <!-- 证件有效期止期选择器 -->
- <el-form-item prop="identifyValidEndDate1" label="有效期止期">
- <div id="identifyValidEndDate1" style="width: 100%;display: flex;">
- <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)"
- @focus="inParkingDataFocus('identifyValidEndDate1', 'identifyValidEndDate1')" />
- <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>
- <div class="flex items-center cursor-pointer" @click="setActiveNames('owner', isActive)">
- <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>
- </div>
- </template>
- </el-collapse-item>
- <el-collapse-item name="owner1" disabled>
- <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="请输入投保人手机号" maxlength="11"
- show-word-limit></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="有效期起期">
- <div id="identifyValidDate2" style="width: 100%">
- <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)"
- @focus="inParkingDataFocus('identifyValidDate2', 'identifyValidDate2')" />
- </div>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item prop="identifyValidEndDate2" label="有效期止期">
- <div id="identifyValidEndDate2" style="width: 100%">
- <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)"
- @focus="inParkingDataFocus('identifyValidEndDate2', 'identifyValidEndDate2')" />
- </div>
- </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>
- <div class="flex items-center cursor-pointer" @click="setActiveNames('owner1', isActive)">
- <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>
- </div>
- </template>
- </el-collapse-item>
- <el-collapse-item name="owner2" disabled>
- <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="请输入被保人手机号" maxlength="11"
- show-word-limit></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="有效期起期">
- <div id="identifyValidDate3" style="width: 100%">
- <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)"
- @focus="inParkingDataFocus('identifyValidDate3', 'identifyValidDate3')" />
- </div>
- </el-form-item>
- </el-col>
- <el-col :span="6">
- <el-form-item prop="identifyValidEndDate3" label="有效期止期">
- <div id="identifyValidEndDate3" style="width: 100%">
- <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)"
- @focus="inParkingDataFocus('identifyValidEndDate3', 'identifyValidEndDate3')" />
- </div>
- </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>
- <div class="flex items-center cursor-pointer" @click="setActiveNames('owner2', isActive)">
- <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>
- </div>
- </template>
- </el-collapse-item>
- <el-collapse-item name="tax" disabled>
- <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">
- <div class="flex items-center cursor-pointer" @click="setActiveNames('tax', isActive)">
- <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>
- </div>
- </template>
- </el-collapse-item>
- <el-collapse-item name="insurance" disabled>
- <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" @change="issueDateChange">是否过户</el-checkbox>
- <el-checkbox v-model="insurancePolicyForm.transferBi" 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="">
- <div id="JQStartDate" style="width: 100%">
- <el-date-picker v-model="insurancePolicyForm.JQStartDate" type="datetime" placeholder="请选择"
- value-format="YYYY-MM-DD HH:mm:ss" style="width: 250px" @change="jqChange"
- :disabled-date="disabledDate" @focus="inParkingDataFocus('JQStartDate', 'JQStartDate')" />
- </div>
- </el-form-item>
- <span class="ml-5 mr-5">至</span>
- <el-form-item prop="endDate" label="">
- <div id="JQEndDate" style="width: 100%">
- <el-date-picker v-model="insurancePolicyForm.JQEndDate" type="datetime" placeholder="请选择"
- value-format="YYYY-MM-DD HH:mm:ss" style="width: 250px" @change="jqChange"
- :disabled-date="disabledDate" @focus="inParkingDataFocus('JQEndDate', 'JQEndDate')" />
- </div>
- </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="">
- <div id="SYStartDate" style="width: 100%">
- <el-date-picker v-model="insurancePolicyForm.SYStartDate" type="datetime" placeholder="请选择"
- value-format="YYYY-MM-DD HH:mm:ss" style="width: 250px" @change="syChange"
- :disabled-date="disabledDate" @focus="inParkingDataFocus('SYStartDate', 'SYStartDate')" />
- </div>
- </el-form-item>
- <span class="ml-5 mr-5">至</span>
- <el-form-item prop="endDate" label="">
- <div id="SYEndDate" style="width: 100%">
- <el-date-picker v-model="insurancePolicyForm.SYEndDate" type="datetime" placeholder="请选择"
- value-format="YYYY-MM-DD HH:mm:ss" style="width: 250px" @change="syChange"
- :disabled-date="disabledDate" @focus="inParkingDataFocus('SYEndDate', 'SYEndDate')" />
- </div>
- </el-form-item>
- </div>
- </div>
- <template #icon="{ isActive }">
- <div class="icon">
- <div class="flex items-center cursor-pointer" @click="setActiveNames('insurance', isActive)">
- <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>
- </div>
- </template>
- </el-collapse-item>
- <el-collapse-item name="company" disabled>
- <template #title>
- <span class="title">
- 报价公司
- </span>
- </template>
- <el-table ref="quoteDataRef" :data="showQuoteData" style="width: calc(100% - 48px); margin: 0 24px"
- row-key="id" :preserve-expanded-content="true" @expand-change="handelExpend"
- @selection-change="handleSelectionChange">
- <el-table-column type="expand">
- <template #default="scope">
- <div class="equities"
- v-if="scope.row.quoteResult?.ownerRights == '1' && ['1', '3'].includes(scope.row.quoteResult?.clientType)">
- <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="filterKind(scope.row, 'quote')">
- <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">
- <div class="flex a-c ">
- <el-select v-model="props.row.amount" style="width: 80%;"
- :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>
- <span v-if="props.row.kindName == '乘客责任险'">*{{ insurancePolicyForm.seatCount - 1
- }}/座</span>
- </div>
- </template>
- </el-table-column>
- <el-table-column label="保费" prop="unitAmount" align="center">
- <template #default="props">
- {{ props.row.premium ?? '--' }}
- </template>
- </el-table-column>
- </el-table>
- <div class="quoteTitle" v-if="filterKind(scope.row, 'noquote')">
- 增值服务</div>
- <el-row :gutter="20" v-if="filterKind(scope.row, 'noquote')">
- <el-col :span="6" class="quoteFlex">
- 救援
- <el-select v-model="filterKind(scope.row, 'TY1').amount"
- :disabled="scope.row.projectList?.[scope.row.productIndex]?.schemeType == '1' || !filterKind(scope.row, 'TY1').kindCode"
- size="small" style="width: 80px; margin: 0 10px">
- <el-option v-for="item in filterKind(scope.row, 'TY1').options" :label="item.label"
- :value="item.value"></el-option>
- </el-select>
- 次
- </el-col>
- <el-col :span="6" class="quoteFlex">
- 检测
- <el-select v-model="filterKind(scope.row, 'TY2').amount"
- :disabled="scope.row.projectList?.[scope.row.productIndex]?.schemeType == '1' || !filterKind(scope.row, 'TY2').kindCode"
- size="small" style="width: 80px; margin: 0 10px">
- <el-option v-for="item in filterKind(scope.row, 'TY2').options" :label="item.label"
- :value="item.value"></el-option>
- </el-select>
- 次
- </el-col>
- <el-col :span="6" class="quoteFlex">
- 代驾
- <el-select v-model="filterKind(scope.row, 'TY3').amount"
- :disabled="scope.row.projectList?.[scope.row.productIndex]?.schemeType == '1' || !filterKind(scope.row, 'TY3').kindCode"
- size="small" style="width: 80px; margin: 0 10px">
- <el-option v-for="item in filterKind(scope.row, 'TY3').options" :label="item.label"
- :value="item.value"></el-option>
- </el-select>
- 次
- </el-col>
- <el-col :span="6" class="quoteFlex">
- 送检
- <el-select v-model="filterKind(scope.row, 'TY4').amount"
- :disabled="scope.row.projectList?.[scope.row.productIndex]?.schemeType == '1' || !filterKind(scope.row, 'TY4').kindCode"
- size="small" style="width: 80px; margin: 0 10px">
- <el-option v-for="item in filterKind(scope.row, 'TY4').options" :label="item.label"
- :value="item.value"></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)" v-if="props.row.selectedStatus !== '2'">
- <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="productCode" align="center"></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>{{ ['', '新保', '续保', '转保'][Number(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>{{ ['', '新保', '续保', '转保'][Number(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 ">
- <span class="item-header flex a-c ">整单折扣</span>
- <span>
- <el-input-number v-model="scope.row.totalAdjustRate" controls-position="right"
- :precision="3" :step="0.01" :max="1" :min="0" />
- </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 prop="checked" align="center" width="55">
- <template #header>
- <el-checkbox v-model="selectAll" :indeterminate="showQuoteData.some(v => v.checked !== selectAll)"
- @change="handleSelectionChange" />
- </template>
- <template #default="scope">
- <el-checkbox v-model="scope.row.checked" @change="handleSelect(scope.row)" />
- </template>
- </el-table-column>
- <el-table-column width="55" v-if="isViewSuccess" />
- <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="500" raw-content placement="bottom">
- <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"
- v-if="scope.row.checked || isViewSuccess" :placeholder="scope.row.isDispatch === 1 ? '默认' : '请选择'">
- <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="" align="center">
- <template #header>
- <div>
- <span style="margin-right: 10px">报价结果</span>
- <el-checkbox v-model="isViewSuccess">仅查看报价成功</el-checkbox>
- </div>
- </template>
- <template #default="scope">
- <div class="result" v-if="scope.row.checked && !scope.row.loading || isViewSuccess">
- <div class="resultItem" v-if="scope.row.quoteCode == 200">
- <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 && scope.row.quoteCode == 200"
- 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="Number(scope.row.quoteResult?.costs?.biPremium) && scope.row.quoteCode == 200"
- style="text-align: left; margin-right: 10px">商业险:{{ `¥${scope.row.quoteResult.costs?.biPremium}`
- }}</span>
- <span v-if="Number(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 && scope.row.quoteCode == 200">
- <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 && scope.row.quoteCode == 200">
- <span>商业险保险期:{{ `${scope.row.quoteResult?.biRiskInfoVo?.startDate} 至
- ${scope.row.quoteResult?.biRiskInfoVo?.endDate}` }}</span>
- </span>
- <div>
- <div class="quoteFail" v-if="scope.row?.failMsg && scope.row.quoteCode == 500">
- <el-icon style="color: #FF4545; font-size: 14px">
- <Warning />
- </el-icon> {{ scope.row?.failMsg }}
- </div>
- </div>
- </div>
- <!-- loding动效 -->
- <QuoteLoader :isUnderwriting="isUnderwriting" v-show="scope.row.loading" />
- </template>
- </el-table-column>
- <el-table-column label="操作" align="center" width="360">
- <template #default="scope">
- <div v-if="scope.row.checked || isViewSuccess">
- <el-button v-if="scope.row.quoteCode == 200" link type="primary"
- @click="handleCount(scope)">优惠测算</el-button>
- <el-button v-if="scope.row.quoteCode == 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.row)">计算保费</el-button>
- <el-button v-if="scope.row.quoteCode == 200" link type="primary"
- @click="handleShare(scope.row.quoteResult.ordersNo)">分享</el-button>
- <el-button v-if="scope.row.quoteCode == 200" link type="primary"
- @click="handleQuotationView(scope.row)">报价单预览</el-button>
- <el-button
- v-if="scope.row.quoteCode == 200 && !(scope.row.quoteResult?.quoteStatus == 4 || scope.row.quoteResult?.order?.orderStatus == 4)"
- link type="primary" :loading="scope.row.loading" @click="handleUnderwriting(scope)">核保</el-button>
- <el-button
- v-if="scope.row.quoteResult?.quoteStatus == 4 || scope.row.quoteResult?.order?.orderStatus == 4"
- link type="primary" @click="handlePayment(scope.row.quoteResult.ordersNo)">支付码</el-button>
- <el-button
- v-if="scope.row.quoteResult?.quoteStatus == 4 || scope.row.quoteResult?.order?.orderStatus == 4"
- link type="primary" @click="handleCancelPayment(scope.row.quoteResult.ordersNo)">撤销支付码</el-button>
- </div>
- </template>
- </el-table-column>
- </el-table>
- <template #icon="{ isActive }">
- <div class="icon">
- <div class="flex items-center cursor-pointer" @click="setActiveNames('company', isActive)">
- <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>
- </div>
- </template>
- </el-collapse-item>
- <el-collapse-item name="history" disabled>
- <template #title>
- <span class="title">
- 报价历史
- </span>
- </template>
- <el-table :data="tableData" style="width: calc(100% - 48px); margin: 0 24px"
- :header-cell-style="{ 'background-color': '#F7F7F9', 'color': '#333', 'font-weight': 'bold', 'fontSize': '16px', 'padding': '14px 0 ' }">
- <el-table-column label="保险公司" prop="companyName" width="200" align="center"></el-table-column>
- <el-table-column label="报价时间" prop="quoteTime" width="200"></el-table-column>
- <el-table-column label="险种" prop="productName" width="170" align="center"></el-table-column>
- <el-table-column label="状态" prop="orderStatusName" width="200">
- <template #default="scope">
- <div class="quote_success flex a-c " v-if="scope.row.orderStatusName == '报价成功'">
- <div class="dot"></div>
- <span class="text">报价成功</span>
- </div>
- <div class="quote_error flex a-c " v-if="scope.row.orderStatus == '6' || scope.row.orderStatus == '7'">
- <div class="dot"></div>
- <span class="text">报价失败</span>
- <el-tooltip style="width: 200px;" placement="right" popper-class="error-tooltip"
- :popper-style="{ 'background-color': 'rgba(0,0,0,0.65)', 'border': 'none' }">
- <template #content>
- <div style="max-width: 400px;">{{ scope.row.errorMessage }}</div>
- </template>
- <el-icon style="color: #FF4545; font-size: 14px">
- <Warning />
- </el-icon>
- </el-tooltip>
- </div>
- </template>
- </el-table-column>
- <el-table-column label="保费总计" prop="sumPremium" width="130" align="right">
- </el-table-column>
- <el-table-column label="交强险" prop="jqPremium" width="130" align="right"></el-table-column>
- <el-table-column label="商业险" prop="syPremium" width="130" align="right"></el-table-column>
- <el-table-column label="驾意险" prop="jyPremium" width="130" align="right"></el-table-column>
- <el-table-column label="操作" align="left" fixed="right" class-name="operation-column">
- <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'" :loading="scope.row.loading"
- @click="historyhandleUnderwriting(scope.row.orderNo, scope)">核保</el-button>
- <el-button link type="primary" v-if="scope.row.orderStatus === '4'"
- @click="handlePayment(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'" :loading="scope.row.loading"
- @click="historyhandleUnderwriting(scope.row.orderNo, scope)">重新核保</el-button>
- </template>
- </el-table-column>
- </el-table>
- <template #icon="{ isActive }">
- <div class="icon">
- <div class="flex items-center cursor-pointer" @click="setActiveNames('history', isActive)">
- <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>
- </div>
- </template>
- </el-collapse-item>
- </el-collapse>
- </el-form>
- <div class="footer">
- <span>已选保司:{{ quotelength }}家</span>
- <el-button type="primary" :loading="loading" @click="batchQuotes(InsurancePolicyRefs)">多家报价</el-button>
- <el-button type="primary" @click="handleNext">录下一单</el-button>
- </div>
- <el-dialog :close-on-click-modal="false" title="选择业务员" v-model="salesmanShow" width="700">
- <salesmanSelect ref="SalesmanSelectRef" fromPage="10" @close="handleSalesmanSelect"></salesmanSelect>
- </el-dialog>
- <el-dialog :close-on-click-modal="false" v-model="shareShow" width="300" title="分享报价单">
- <div class="imageCode flex flex-col">
- <img :src="shareImageUrl" />
- <span class="text-[12px] text-[#333] mt-[5px] ">请使用微信扫码,查看报价单</span>
- </div>
- <template #footer>
- <div class="flex justify-center">
- <el-button plain type="primary" @click="handleSaveImage">保存二维码</el-button>
- <el-button plain type="primary" @click="handleCopyLink">复制链接</el-button>
- </div>
- </template>
- </el-dialog>
- <el-dialog :close-on-click-modal="false" v-model="paymentShow" width="350" title="支付码">
- <div class="imageCode flex flex-col">
- <img :src="payCodeUrl" />
- </div>
- <div class="payCodeInfo flex f-c ">
- <span class="text-[24px] font-bold text-center m-[20px] text-[#d42426]">{{ payCodeInfo?.sumPremium }}</span>
- <div class="ORtitle">
- <div v-if="payCodeInfo?.company">
- <span>保险公司:</span>
- <span>{{ payCodeInfo?.company }}</span>
- </div>
- <div v-if="payCodeInfo?.licenseNo">
- <span>车牌号:</span>
- <span>{{ payCodeInfo?.licenseNo }}</span>
- </div>
- <div v-if="payCodeInfo?.policyName">
- <span>投保人:</span>
- <span>{{ payCodeInfo?.policyName }}</span>
- </div>
- <div v-if="payCodeInfo?.jqPremium">
- <span>交强:</span>
- <span>{{ payCodeInfo?.jqPremium }}</span>
- </div>
- <div v-if="payCodeInfo?.syPremium">
- <span>商业:</span>
- <span>{{ payCodeInfo?.syPremium }}</span>
- </div>
- <div v-if="payCodeInfo?.jyPremium">
- <span>驾意险:</span>
- <span>{{ payCodeInfo?.jyPremium }}</span>
- </div>
- <div v-if="payCodeInfo?.taxPremium">
- <span>车船税:</span>
- <span>{{ payCodeInfo?.taxPremium }}</span>
- </div>
- <div v-if="payCodeInfo?.jqStartTime">
- <span>交强险起保日期:</span>
- <span>{{ payCodeInfo?.jqStartTime }}</span>
- </div>
- <div v-if="payCodeInfo?.syStartTime">
- <span>商业险起保日期:</span>
- <span>{{ payCodeInfo?.syStartTime }}</span>
- </div>
- </div>
- </div>
- <template #footer>
- <div class="flex justify-center">
- <el-button plain type="danger" @click="handleCancelPayment">撤销支付码</el-button>
- <el-button plain type="primary" @click="handleSavePaymentImage">保存二维码</el-button>
- <el-button plain type="primary" @click="handleCopyPaymentLink">复制链接</el-button>
- </div>
- </template>
- </el-dialog>
- <el-dialog :close-on-click-modal="false" title="优惠测算" v-model="calculatingShow" width="600">
- <calculating ref="calculatingRefs" :discounts="discounts"></calculating>
- </el-dialog>
- <el-dialog :close-on-click-modal="false" title="提交核保" width="1100" v-model="underwritingShow">
- <underwriting v-if="underwritingShow" ref="UnderwritingRefs" :insOrderRightsInfoDto="insOrderRightsInfoDto"
- :recipientInfo="[owerFormInfo, policyHolderInfo, insuredPersonInfo]" @close="handleUnderwritingClose"
- @initDetail="initDetail"></underwriting>
- </el-dialog>
- <el-dialog :close-on-click-modal="false" title="证件识别" width="800" v-model="imageShow">
- <recognition ref="RecognitionRefs" :option="optionObj.car_type_code" @close="handleImageClose"></recognition>
- </el-dialog>
- <el-dialog :close-on-click-modal="false" v-model="insuranceShow" title="选择险种" width="500">
- <insurance ref="InsuranceTypeRef" @close="handleClose"></insurance>
- </el-dialog>
- <el-dialog :close-on-click-modal="false" v-model="drivingShow" title="选择驾意险" width="700">
- <driving ref="DrivingTypeRef" :multiple="true" @close="handleDrivingClose"></driving>
- </el-dialog>
- <el-dialog :close-on-click-modal="false" 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 :close-on-click-modal="false" v-model="JYXDetailShow" title="驾意险详情" width="600">
- <detail ref="JYXDetail"></detail>
- </el-dialog>
- <el-dialog :close-on-click-modal="false" 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 class="border-[#0083FF] color-[#0083FF]" plain type="primary"
- @click="handleSpecialTableDataCancel">取消</el-button>
- <el-button type="primary" @click="handleSpecialTableDataSubmit">确定</el-button>
- </div>
- </el-dialog>
- <el-dialog :close-on-click-modal="false" 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="handlePayment(quoteData[underwritingIndex]?.quoteResult.ordersNo)">缴费二维码</el-button>
- </template>
- </el-dialog>
- <el-dialog :close-on-click-modal="false" 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-model:show="equitiesShow" v-if="equitiesShow"
- :recipientInfo="[owerFormInfo, policyHolderInfo, insuredPersonInfo]" :EquitiesInfo="EquitiesInfo"
- @save="handleEquitiesSave"></Equities>
- </div>
- <quotation ref="quotationRef" :quotationObj="quotationObj" :insurancePolicyForm="insurancePolicyForm" />
- </template>
- <!-- 保险单页面逻辑脚本 -->
- <script setup lang="ts">
- // 导入Element Plus表单相关类型定义
- import type { FormInstance, FormRules } from 'element-plus'
- // 导入API接口
- import api from "@/api";
- // 导入Element Plus消息提示组件
- import { ElMessage, ElNotification, ElMessageBox } 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 quotation from './modules/quotation.vue' // 报价单
- // 导入二维码生成库
- import QRCode from 'qrcode'
- // 导入日期处理库
- import dayjs from "dayjs"
- // 导入日期格式化函数
- import { gainFocus } from "@/utils/dataformat"
- import Decimal from 'decimal.js'
- let userInfo = ref(JSON.parse(localStorage.getItem('userInfo')))
- // 下拉选项接口定义
- interface OptionItem {
- label: string; // 显示标签
- value: string; // 实际值
- checked?: boolean; // 是否选中
- };
- // 车辆信息接口定义
- interface CarInfo {
- ratedPassengerCapacity: number; // 核定载客数
- modelName: string; // 品牌型号
- modelCode: string; // 品牌型号
- marketYear: number; // 年款
- replacementValue: number; // 新车购置价
- displacement: number; // 排量
- powerScale: number; // 功率
- };
- // 报价数据项接口定义
- interface QuoteDataItem {
- id: string; // 公司ID
- loading: boolean;
- quoteCode?: number; // 报价状态码
- failMsg?: string; // 失败消息
- 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 inParkingDataFocus = (e: string, fieldName: string) => {
- gainFocus(e, insurancePolicyForm, fieldName);
- }
- /**
- * 初始化详情数据
- * 从路由参数获取订单号,请求订单详情并填充表单
- */
- const initDetail = () => {
- if (!myRoute.query.orderNo) return
- // 请求订单详情
- api.insurancePolicyApi.getOrderDetail(myRoute.query.orderNo).then((res: any) => {
- if (res.code == 200) {
- let obj = res.data
- owerFormInfo.value = { ...obj.ownersInfo, title: '车主', policyPersonType: '1' };
- policyHolderInfo.value = { ...obj.policyHolderInfo, title: '投保人', policyPersonType: '2' };
- insuredPersonInfo.value = { ...obj.insuredPersonInfo, title: '被保人', policyPersonType: '3' };
- // 设置业务员信息
- insurancePolicyForm.value.salesman = obj?.salesmanInfo?.name
- insurancePolicyForm.value.mobile = obj?.salesmanInfo?.mobile
- insurancePolicyForm.value.schemeId = obj?.schemeId
- 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.carModelNo = obj?.carInfoVo?.carModelNo
- 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 ? ('0' + 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 ? ('0' + 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 ? ('0' + 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 ? ('0' + 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
- if (obj?.ciRiskInfoVo) {
- jqWork.value[0].checked = obj?.ciRiskInfoVo?.instantFlag
- insurancePolicyForm.value.JQInstantFlag = 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, obj)
- }
- if (obj?.biRiskInfoVo) {
- syWork.value[0].checked = obj?.biRiskInfoVo?.instantFlag
- insurancePolicyForm.value.SYInstantFlag = 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 salesmanId = ref('')// 选中的业务员ID
- 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
- }, null)
- }
- // 更新业务员信息
- insurancePolicyForm.value.salesman = data.name
- insurancePolicyForm.value.mobile = data.mobile
- insurancePolicyForm.value.deptId = data.deptId
- salesmanId.value = data.id // 保存选中的业务员ID
- }
- }
- // 机构归属相关
- 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, // 转移标记
- transferBi: false, // 商业险转移标记
- secondHandCar: false, // 二手车标记
- totalAdjustRate: undefined, // 整单折扣
- 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: '请选择注册日期' },
- {
- pattern: /^\d{4}-\d{2}-\d{2}$/i,
- message: '请选择正确的注册日期',
- trigger: 'change'
- }
- ],
- issueDate: [
- { required: true, trigger: 'change', message: '请选择发证日期' },
- {
- pattern: /^\d{4}-\d{2}-\d{2}$/i,
- message: '请选择正确的发证日期',
- trigger: 'change'
- }
- ],
- 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: '请选择有效期起期' },
- {
- pattern: /^\d{4}-\d{2}-\d{2}$/i,
- message: '请选择正确的有效期起期',
- trigger: 'change'
- }
- ],
- identifyValidEndDate1: [
- { required: true, trigger: 'change', message: '请选择有效期止期' },
- {
- pattern: /^\d{4}-\d{2}-\d{2}$/i,
- message: '请选择正确的有效期止期',
- trigger: 'change'
- }
- ],
- 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: '请选择有效期起期' },
- {
- pattern: /^\d{4}-\d{2}-\d{2}$/i,
- message: '请选择正确的有效期起期',
- trigger: 'change'
- }
- ],
- identifyValidEndDate2: [
- { required: true, trigger: 'change', message: '请选择有效期止期' },
- {
- pattern: /^\d{4}-\d{2}-\d{2}$/i,
- message: '请选择正确的有效期止期',
- trigger: 'change'
- }
- ],
- 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: '请选择有效期起期' },
- {
- pattern: /^\d{4}-\d{2}-\d{2}$/i,
- message: '请选择正确的有效期起期',
- trigger: 'change'
- }
- ],
- identifyValidEndDate3: [
- { required: true, trigger: 'change', message: '请选择有效期止期' },
- {
- pattern: /^\d{4}-\d{2}-\d{2}$/i,
- message: '请选择正确的有效期止期',
- trigger: 'change'
- }
- ],
- 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 = () => {
- 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.carModelNo = carData.modelCode
- 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 = async (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':
- const valid = await validateForm(InsurancePolicyRefs.value)
- if (!valid) return
- ruleFilterCompany(item, null)
- 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 quoteData = ref<QuoteDataItem[]>([])
- // 选择权益
- let equitiesShow = ref(false)//权益弹窗是否显示
- const EquitiesInfo = ref<any>({
- insFeeOrders: {},//费用信息
- insOrderRightsInfoVo: {},//权益信息
- ordersNo: "",//订单号
- })//相关参数
- const insOrderRightsInfoDto = ref<any>({})//权益信息
- const handleOpenEquities = (row: string) => {
- api.insurancePolicyApi.getOrderDetail(row).then((res: any) => {
- if (res.code == '200') {
- EquitiesInfo.value.insFeeOrders = res.data?.insFeeOrders || {}
- EquitiesInfo.value.insOrderRightsInfoVo = res.data?.insOrderRightsInfoVo || {}
- EquitiesInfo.value.ordersNo = res.data?.ordersNo || ""
- equitiesShow.value = true
- // EquitiesInfo.value.insFeeOrders.availableAmount =500 || 0
- }
- })
- }
- // 保存权益
- const handleEquitiesSave = (data: any) => {
- console.log(data)
- insOrderRightsInfoDto.value = data
- equitiesShow.value = false
- }
- /**
- * 组装报价/筛选保司接口的公共请求体
- * 车辆信息、车主/投保人/被保人信息、业务员信息在两处调用中完全一致,统一在此拼接
- */
- const buildCommonQuoteData = () => ({
- 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,
- },
- // 业务员信息
- salespersonInfo: {
- id: salesmanId.value,
- }
- })
- /**
- * 获取保险公司方案结果并更新报价数据
- * 根据当前保单表单中的保险公司编码、产品ID、座位数、能源类型、车辆类型及使用性质,
- * 调用接口查询可选方案列表,将可选方案合并至列表中,
- * 并将方案信息及过滤后的项目列表写入当前行的报价数据中。
- */
- const getSchemeResult = (bool: false) => {
- let data = {
- companyId: insurancePolicyForm.value.order.insuranceCompanyCode,
- productId: insurancePolicyForm.value.productId,
- ...buildCommonQuoteData(),
- }
- if (!insurancePolicyForm.value.order.insuranceCompanyCode) return
- if (!insurancePolicyForm.value.productId) return
- const insuranceCompanyCode = insurancePolicyForm.value.order.insuranceCompanyCode
- api.insurancePolicyApi.getSchemeResult(data).then((res: any) => {
- let list = res.data?.schemes || [];
- if (res.data?.optionalScheme) {
- list.push(res.data.optionalScheme)
- }
- list = list.map(v => ({ ...v, drivings: v.drivings.map(k => ({ ...k, minQuantity: k.quantity })) }))
- if (list.length > 0) {
- list.forEach((item: any) => {
- item.checked = false
- })
- }
- // 方案信息
- quoteData.value.forEach((item: any) => {
- if (item.id === insuranceCompanyCode) {
- list = list.map((item1: any) => {
- return {
- ...item1,
- drivingsArr: item1.drivings,
- rescue: [],
- detection: [],
- driver: [],
- inspect: []
- }
- })
- item.productIndex = list.findIndex(v => v.id === insurancePolicyForm.value.schemeId)
- if (myRoute.query.orderNo && bool && item.productIndex >= 0) {
- list.forEach((item2: any) => {
- if (item2.schemeType === "1") {
- item2.kinds = item2.kinds.map((v: any) => {
- let obj = item.insurancePlanInfo?.kinds?.find((kind: any) => kind.kindCode === v.kindCode && kind.amount === v.amount)
- if (obj?.premiumSetting === '2') {
- obj = obj.settingList?.find((setting: any) => setting.seats === insurancePolicyForm.value.seatCount)
- }
- return {
- ...v,
- premium: obj?.premium
- }
- })
- item2.drivings = item2.drivings.filter(v => ['1', '2'].includes(v.selectedStatus))
- } else {
- item2.kinds = item2.kinds.map((v: any) => {
- let obj = item.insurancePlanInfo?.kinds?.find((kind: any) => kind.kindCode === v.kindCode)
- return {
- ...v,
- premium: obj?.premium
- }
- })
- item2.drivings = item.insurancePlanInfo.drivings
- }
- })
- } else {
- item.productIndex = 0;
- item.insurancePlanInfo = {
- ...list[0],
- rescue: [],
- detection: [],
- driver: [],
- inspect: []
- }
- list = list.map(v => ({ ...v, drivings: v.drivings.filter(k => ['1', '2'].includes(k.selectedStatus)), }))
- }
- item.projectList = list
- }
- })
- })
- }
- const selectAll = ref(false)
- const handleSelectionChange = (val) => {
- const bool = showQuoteData.value.some(v => v.checked !== selectAll.value)
- if (bool) selectAll.value = true
- for (let i = 0; i < showQuoteData.value.length; i++) {
- const element = showQuoteData.value[i]
- element.checked = bool || val
- handleSelect(element)
- }
- }
- const handleSelect = (row: any) => {
- insurancePolicyForm.value.order.insuranceCompanyCode = row.id
- getSchemeResult()
- }
- const handelExpend = (e: any) => {
- e.checked = true
- insurancePolicyForm.value.order.insuranceCompanyCode = e.id
- getSchemeResult()
- }
- /**
- * 根据视图成功状态过滤报价数据
- * @returns {Array} 过滤后的报价数据列表。当 isViewSuccess 为 true 时,仅返回报价结果成功的记录(code === 200);否则返回全部报价数据
- */
- const showQuoteData = computed(() => {
- if (isViewSuccess.value) return quoteData.value.filter(v => v.quoteResult?.code === 200)
- return quoteData.value
- })
- // 过滤已选保险公司数量
- const quotelength = computed(() => {
- return quoteData.value.filter((v: any) => v.checked).length
- })
- // 是否仅查看报价成功
- const isViewSuccess = ref(false)
- // 选择险种
- 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, scope.row.projectList[scope.row.productIndex].drivingsArr)
- })
- }
- // 删除驾意险
- 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) {
- 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.insurancePlanInfo = {
- ...e,
- rescue: [],
- detection: [],
- driver: [],
- inspect: []
- }
- scope.row.productIndex = index
- }
- // 报价历史
- let tableData = ref([])
- // 分享
- let shareShow = ref(false)
- let ordersNo = ref('')
- let shareImageUrl = ref('')
- const handleShare = async (scope: any) => {
- ordersNo.value = scope;
- shareImageUrl.value = await QRCode.toDataURL(`https://tennat.baoxianzhanggui.com/test_h5/#/pages/quote/quotation?ordersNo=${scope}&from=share`, {
- width: 150,
- margin: 2
- });
- shareShow.value = true
- }
- const handleSaveImage = () => {
- shareShow.value = false
- const link = document.createElement('a');
- link.href = shareImageUrl.value;
- link.download = '报价单二维码.png';
- link.click();
- }
- const handleSavePaymentImage = () => {
- paymentShow.value = false
- const link = document.createElement('a');
- link.href = payCodeUrl.value;
- link.download = '支付码.png';
- link.click();
- }
- //撤销支付码
- const handleCancelPayment = (scope: any) => {
- ElMessageBox.confirm(
- '支付码撤销后,订单将关闭,不在支持任何操作,想要再次报价核保时,需要重新报价。',
- '确定撤销支付码吗',
- {
- confirmButtonText: '确定撤销',
- type: 'error',
- center: true,
- confirmButtonClass: 'el-button--primary',
- }
- )
- .then(() => {
- api.insurancePolicyApi.destroyQrCode({ orderNo: scope || ordersNo.value }).then(async (res: any) => {
- if (res.code == 200) {
- ElMessage({
- message: '支付码撤销成功!',
- type: 'success'
- })
- } else {
- }
- })
- })
- .catch(() => {
- })
- }
- const handleCopyLink = async () => {
- shareShow.value = false
- try {
- await navigator.clipboard.writeText(`https://tennat.baoxianzhanggui.com/test_h5/#/pages/quote/quotation?ordersNo=${ordersNo.value}&from=share`);
- ElMessage({
- message: '复制成功!',
- type: 'success'
- })
- } catch (err) {
- ElMessage({
- message: '复制失败!',
- type: 'error'
- })
- }
- }
- const handleCopyPaymentLink = async () => {
- paymentShow.value = false
- try {
- await navigator.clipboard.writeText(payCodeInfo.value?.qrcode);
- ElMessage({
- message: '复制成功!',
- type: 'success'
- })
- } catch (err) {
- ElMessage({
- message: '复制失败!',
- type: 'error'
- })
- }
- }
- // 支付码
- let paymentShow = ref(false)
- const payCodeInfo = ref()//支付码信息
- const handlePayment = (scope: any) => {
- ordersNo.value = scope;
- api.insurancePolicyApi.getQrCode(scope).then(async (res: any) => {
- if (res.code == 200) {
- payCodeInfo.value = res.data
- payCodeUrl.value = await QRCode.toDataURL(res.data?.qrcode, {
- width: 150,
- margin: 2
- });
- paymentShow.value = true
- } else {
- }
- })
- }
- // 优惠测算
- let calculatingShow = ref(false)
- const handleCount = (scope: any) => {
- calculatingShow.value = true
- discounts.value = scope.row.discounts
- }
- // 详情
- const toDetail = (scope: any) => {
- router.push({
- name: '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'
- })
- }
- }
- //分享
- 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'
- })
- }
- }
- const isUnderwriting = ref(false)
- // 提交核保
- let underwritingShow = ref(false)
- let underwritingIndex = ref(-1)
- const handleUnderwriting = (scope: any) => {
- underwritingIndex.value = scope.$index
- isUnderwriting.value = true
- // 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
- }
- underwritingShow.value = true
- nextTick(() => {
- UnderwritingRefs.value.initEdit(data)
- })
- }
- const historyhandleUnderwriting = (ordersNo: String, scope: any) => {
- let data = {
- order: {
- ordersNo,
- quoteNo: insurancePolicyForm.value.order.quoteNo,
- },
- imageVoList: insurancePolicyForm.value.imageVoList,
- list: images.value
- }
- underwritingShow.value = true
- nextTick(() => {
- UnderwritingRefs.value.initEdit(data)
- })
- }
- let underwritingMsgShow = ref(false)
- const handleUnderwritingClose = (bool: any, dataObj: any) => {
- console.log(bool, dataObj)
- if (dataObj) {
- insOrderRightsInfoDto.value.length = dataObj.equitiesData;
- insOrderRightsInfoDto.value.totalPriceCount = dataObj.totalPriceCount;
- }
- underwritingShow.value = false
- if (!bool) return
- if (bool?.code == 200) {
- ElMessage({
- message: bool.msg,
- type: 'success'
- })
- api.insurancePolicyApi.getOrderDetail(quoteData.value[underwritingIndex.value]?.quoteResult.ordersNo).then((res: any) => {
- if (res.code == 200) {
- quoteData.value[underwritingIndex.value].underwritingMsg = "";
- const quoteResult = quoteData.value[underwritingIndex.value].quoteResult;
- if (quoteResult) {
- quoteResult.quoteStatus = res.data?.order?.orderStatus;
- }
- }
- })
- 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.name1 = carForm.carOwner || ''
- insurancePolicyForm.value.addr1 = carForm.address || ''
- if (carForm.licenseNo && carForm.vinNo && carForm.engineNo) {
- getQuoteNumber()
- }
- }
- if (owerForm.name) {
- 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])
- }
- 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)
- })
- }
- const validate = async (quoteList) => {
- if (!Number(insurancePolicyForm.value.purchasePrice)) {
- ElMessage({
- message: '请重新选择车型',
- type: 'warning'
- })
- return false
- }
- const valid = await validateForm(InsurancePolicyRefs.value)
- if (!valid) return
- for (let i = 0; i < quoteList.length; i++) {
- const element = quoteList[i];
- const product = element.projectList?.find((v, index) => element.productIndex === index)
- if (!product) {
- ElMessage.warning(`请选择${element.nameSimple}方案`)
- return
- }
- const noMatchObj = product.drivings.find(v => v.minQuantity && Number(v.quantity ?? 0) < Number(v.minQuantity))
- if (noMatchObj) {
- ElMessage({
- message: `${noMatchObj.productName}最低需要买${noMatchObj.minQuantity}份`,
- type: 'warning'
- })
- return false;
- }
- }
- return true
- }
- // 提交相关
- let loading = ref(false) // 提交加载状态
- /**
- * 处理保险单提交
- * 验证表单数据并提交给后端
- * @param InsurancePolicyRefs 表单引用实例
- * @param scope 当前行作用域
- */
- const handleSubmit = async (InsurancePolicyRefs: FormInstance | undefined, scope: any) => {
- insurancePolicyForm.value.order.insuranceCompanyCode = scope.id
- const quoteList = quoteData.value.filter(v => v.id === scope.id)
- const valid = await validate(quoteList)
- if (!valid) return
- paramValidate()//数据处理
- // 先保存影像资料
- 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'
- })
- // 再进行报价
- quoteData.value.map((val: any, index: any) => {
- if (val.id == scope.id) {
- quoteInsurance(val.id, index, val)
- }
- return val;
- })
- }
- })
- }
- /**
- * 批量报价
- */
- const batchQuotes = async (InsurancePolicyRefs: FormInstance | undefined) => {
- const quoteList = quoteData.value.filter(v => v.checked)
- const valid = await validate(quoteList)
- if (!valid) return
- paramValidate()//数据处理
- // 先保存影像资料
- 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'
- })
- // 再进行报价
- quoteData.value.map((val: any, index: any) => {
- if (val.checked) {
- quoteInsurance(val.id, index, val)
- }
- return val;
- })
- } else {
- ElMessage({
- message: res.msg,
- type: 'warning'
- })
- }
- })
- }
- /**
- * 表单完整验证函数(包含基础验证和 Element Plus 表单校验)
- * @param InsurancePolicyRefs 表单引用实例
- * @returns {Promise<boolean>} 验证是否通过
- */
- const validateForm = async (InsurancePolicyRefs: FormInstance | undefined): Promise<boolean> => {
- // 货车核定载质量验证
- if (insurancePolicyForm.value.plateType == 'A1') {
- if (!insurancePolicyForm.value.limitLoad) {
- ElMessage({
- message: '车辆种类为货车时,核定载质量必传!',
- type: 'warning'
- })
- return false
- }
- }
- // 表单引用验证
- if (!InsurancePolicyRefs) {
- InsurancePolicyRefs?.resetFields()
- return false
- }
- // 业务员必选验证
- if (!insurancePolicyForm.value.salesman && !userInfo.value.typeAttr?.includes('7')) {
- ElMessage({
- message: '业务员必选',
- type: 'warning'
- })
- return false
- }
- // Element Plus 表单校验
- let valid = false
- try {
- valid = await InsurancePolicyRefs.validate()
- } catch (error) {
- valid = false
- }
- if (!valid) ElMessage.warning('请完整填写相关信息')
- return valid
- }
- /**
- * 报价前参数处理
- */
- const paramValidate = () => {
- // 处理车主与投保人关系
- 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
- insurancePolicyForm.value.imageVoList = insurancePolicyForm.value.imageVoList.map((v, i, arr) => {
- ['C', 'D', 'Y'].forEach(item => {
- if (v.imageCode === `${item}03` && !v.imageBase64List[0].imageId) {
- const obj = arr.find(k => k.imageCode === `${item}02`) ?? {}
- v.imageBase64List[0].imageId = obj.imageBase64List[0].imageId
- }
- })
- return v
- })
- }
- // 处理投保人与被保人关系
- 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
- insurancePolicyForm.value.imageVoList = insurancePolicyForm.value.imageVoList.map((v, i, arr) => {
- ['C', 'D', 'Y'].forEach(item => {
- if (v.imageCode === `${item}04` && !v.imageBase64List[0].imageId) {
- const obj = arr.find(k => k.imageCode === `${item}02`)
- v.imageBase64List[0].imageId = obj.imageBase64List[0].imageId
- }
- })
- return v
- })
- }
- 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
- insurancePolicyForm.value.imageVoList = insurancePolicyForm.value.imageVoList.map((v, i, arr) => {
- ['C', 'D', 'Y'].forEach(item => {
- if (v.imageCode === `${item}04` && !v.imageBase64List[0].imageId) {
- const obj = arr.find(k => k.imageCode === `${item}03`)
- v.imageBase64List[0].imageId = obj.imageBase64List[0].imageId
- }
- })
- return v
- })
- }
- }
- // 统一报价
- const quoteInsurance = async (companyId: any, companyIndex: any, val: any) => {
- quoteData.value[companyIndex].loading = true
- let company = quoteData.value[companyIndex]
- let product = company.projectList?.find((v, i) => val.productIndex === i)
- // 构建提交数据
- let data = {
- systemType: '2',
- schemeId: product.id,
- order: {
- realQuoteUserId: insurancePolicyForm.value.mobile,
- insuranceCompanyCode: companyId, // 保险公司代码
- quoteNo: insurancePolicyForm.value.order.quoteNo, // 报价单号
- agreementId: company.isDispatch ? company.dispatchAgreementId : company.agreement, // 协议ID
- productId: insurancePolicyForm.value.productId,
- orderSource: '0', // 订单来源
- },
- carInfoVo: { // 车辆信息
- licenseKindCode: '02', // 车牌种类代码
- propertyCode: insurancePolicyForm.value.propertyCode, // 车辆性质代码
- licenseNo: insurancePolicyForm.value.licenseNo, // 车牌号
- vinNo: insurancePolicyForm.value.vinNo, // 车架号
- brandName: insurancePolicyForm.value.brandName, // 品牌型号
- carModelNo: insurancePolicyForm.value.carModelNo, // 品牌型号
- 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, // 转移标记
- transferBi: insurancePolicyForm.value.transferBi, // 商业险转移标记
- 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,
- },
- otherInfo: {
- totalAdjustRate: company?.totalAdjustRate, // 整单折扣
- },
- kindInfoVo: product?.kinds || company?.insurancePlanInfo?.kinds || [],
- accidentalDrivings: product?.drivings || company.insurancePlanInfo.drivings || [],
- specialInfoVo: company?.specialSelectedList || []
- }
- /** 后端编辑接口bug,前端处理 交强险产品,清空商业险种信息 勿动****** */
- if (insurancePolicyForm.value.productId === '0330') {
- data.kindInfoVo = [];
- }
- /**勿动****** */
- owerFormInfo.value = { ...data.ownersInfo, title: '车主', policyPersonType: '1' };
- policyHolderInfo.value = { ...data.policyHolderInfo, title: '投保人', policyPersonType: '2' };
- insuredPersonInfo.value = { ...data.insuredPersonInfo, title: '被保人', policyPersonType: '3' };
- await api.insurancePolicyApi.quote(data, { skipGlobalError: true }).then((res: any) => {
- if (res.code == 200 && res.data) {
- // 计算总保费
- // 替换保险公司返回的正确日期
- if (res.data.ciStartDate && res.data.ciRiskInfoVo) {
- res.data.ciRiskInfoVo.startDate = res.data.ciStartDate
- res.data.ciRiskInfoVo.endDate = res.data.ciEndDate
- insurancePolicyForm.value.JQStartDate = res.data.ciStartDate
- insurancePolicyForm.value.JQEndDate = res.data.ciEndDate
- if (res.data.ciStartDate.slice(-8) !== '00:00:00' && !jqWork.value.some(a => a.checked)) {
- jqWork.value = jqWork.value.map(a => ({ ...a, checked: true }))
- insurancePolicyForm.value.JQInstantFlag = true
- }
- }
- if (res.data.biStartDate && res.data.biRiskInfoVo) {
- res.data.biRiskInfoVo.startDate = res.data.biStartDate
- res.data.biRiskInfoVo.endDate = res.data.biEndDate
- insurancePolicyForm.value.SYStartDate = res.data.biStartDate
- insurancePolicyForm.value.SYEndDate = res.data.biEndDate
- if (res.data.biStartDate.slice(-8) !== '00:00:00' && !syWork.value.some(a => a.checked)) {
- syWork.value = syWork.value.map(a => ({ ...a, checked: true }))
- insurancePolicyForm.value.SYInstantFlag = true
- }
- }
- if (res.data.kindInfoVo) {
- const obj = quoteData.value.find(v => v.id === companyId)
- if (obj && obj.projectList && obj.productIndex !== undefined) {
- obj.projectList[obj.productIndex].kinds = obj.projectList[obj.productIndex].kinds.map(v => {
- const obj = res.data.kindInfoVo.find((k: any) => k.id === v.id)
- return {
- ...v,
- premium: obj?.premium
- }
- })
- }
- }
- // 设置折扣信息
- const feeOrders = res.data?.feeOrders || {};
- setDiscounts(companyIndex, feeOrders)
- if (quoteData.value[companyIndex]) {
- // 保存报价结果
- quoteData.value[companyIndex].quoteResult = res.data
- quoteData.value[companyIndex].quoteCode = 200
- loading.value = false
- quoteData.value[companyIndex].loading = false
- }
- } else {
- if (quoteData.value[companyIndex]) {
- quoteData.value[companyIndex].quoteResult = res.data
- quoteData.value[companyIndex].quoteCode = 500
- quoteData.value[companyIndex].failMsg = res.msg
- }
- loading.value = false
- if (quoteData.value[companyIndex]) {
- quoteData.value[companyIndex].loading = false
- }
- }
- // InsurancePolicyRefs.resetFields()
- }).catch((e: any) => {
- // 处理异常情况,重置加载状态
- loading.value = false
- quoteData.value[companyIndex].loading = false
- quoteData.value.forEach((a: any) => {
- a.loading = false
- })
- })
- }
- const setDiscounts = (companyIndex, feeOrders) => {
- if (quoteData.value[companyIndex]) {
- quoteData.value[companyIndex].discounts = [
- {
- name: '交强', // 交强险费用明细
- additionalPremium: feeOrders.jqAdditionalPremium ?? 0,
- additionalRatio: feeOrders.jqAdditionalRatio ?? 0,
- commissionPremium: feeOrders.jqCommissionPremium ?? 0,
- commissionRatio: feeOrders.jqCommissionRatio ?? 0,
- exportPremium: feeOrders.jqExportPremium ?? 0,
- exportRatio: new Decimal(feeOrders.jqExportRatio ?? 0).times(100) + '%',
- }, {
- name: '商业', // 商业险费用明细
- additionalPremium: feeOrders.syAdditionalPremium ?? 0,
- additionalRatio: feeOrders.syAdditionalRatio ?? 0,
- commissionPremium: feeOrders.syCommissionPremium ?? 0,
- commissionRatio: feeOrders.syCommissionRatio ?? 0,
- exportPremium: feeOrders.syExportPremium ?? 0,
- exportRatio: new Decimal(feeOrders.syExportRatio ?? 0).times(100) + '%',
- }, {
- name: '驾意险', // 驾意险费用明细
- additionalPremium: feeOrders.jyAdditionalPremium ?? 0,
- additionalRatio: feeOrders.jyAdditionalRatio ?? 0,
- commissionPremium: feeOrders.jyCommissionPremium ?? 0,
- commissionRatio: feeOrders.jyCommissionRatio ?? 0,
- exportPremium: feeOrders.jyExportPremium ?? 0,
- exportRatio: new Decimal(feeOrders.jyExportRatio ?? 0).times(100) + '%',
- }, {
- name: '总计', // 总计
- commissionPremium: new Decimal(feeOrders.jqCommissionPremium ?? 0).plus(feeOrders.syCommissionPremium ?? 0).plus(feeOrders.jyCommissionPremium ?? 0),
- exportPremium: new Decimal(feeOrders.jyExportPremium ?? 0).plus(feeOrders.syExportPremium ?? 0).plus(feeOrders.jqExportPremium ?? 0),
- exportRatio: '--',
- commissionRatio: '--',
- },
- ]
- }
- }
- /**
- * 处理下一步操作
- * 在新窗口打开保险单页面
- */
- 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}`),
- })
- }
- const changeCompany = () => {
- if (quoteData.value.length) {
- ruleFilterCompany({
- value: insurancePolicyForm.value.productId
- }, null)
- }
- }
- /**
- * 根据规则筛选保险公司
- * 根据产品ID和车辆及人员信息获取可报价的保险公司列表
- * @param item 选中的产品信息
- */
- const ruleFilterCompany = (item: any, obj: any) => {
- let data = {
- productId: item.value || insurancePolicyForm.value.productId, // 产品ID
- ...buildCommonQuoteData(),
- }
- // 调用API获取符合规则的保险公司列表
- api.insurancePolicyApi.ruleFilterCompany(data).then((res: any) => {
- if (res.code == 200) {
- // 设置每个保险公司的加载状态
- res.data.forEach((a: any) => {
- a.loading = false
- a.checked = false
- })
- quoteData.value = res.data
- // 如果只有一个协议,自动选择
- quoteData.value.forEach((item: any) => {
- if (item.agreements && item.agreements.length == 1 && !item.isDispatch) {
- item.agreement = item.agreements[0].id
- }
- })
- if (obj) {
- quoteData.value?.map((item: any, i: number) => {
- obj.insCompanyVo?.map((a: any) => {
- if (item.id == a.id) {
- item.quoteResult = { ...a, ...obj };
- item.totalAdjustRate = obj?.scoreVo?.totalAdjustRate
- item.insurancePlanInfo = {}
- item.insurancePlanInfo.drivings = obj.accidentalDrivings;
- item.insurancePlanInfo.kinds = obj.kindInfoVo.filter(v => v.id);
- item.quoteCode = 200
- item.checked = true
- // 如果有错误信息,设置状态为失败 并记录错误信息
- if (obj.errorMessage) {
- item.quoteCode = 500
- item.failMsg = obj.errorMessage
- }
- insurancePolicyForm.value.order.insuranceCompanyCode = a.id
- setDiscounts(i, obj.insFeeOrders ?? {})
- getSchemeResult(true)
- }
- return a
- })
- return item
- })
- }
- } else {
- quoteData.value = []
- }
- })
- }
- const filterKind = (row, key) => {
- const kinds = row.projectList?.[row.productIndex]?.kinds ?? []
- if (key === 'quote') {
- return kinds.filter(v => !['TY1', 'TY2', 'TY3', 'TY4'].includes(v.kindCode))
- }
- if (key === 'noquote') {
- return kinds.find(v => ['TY1', 'TY2', 'TY3', 'TY4'].includes(v.kindCode))
- }
- if (key === 'TY1') {
- return kinds.find(v => ['TY1'].includes(v.kindCode)) ?? {}
- }
- if (key === 'TY2') {
- return kinds.find(v => ['TY2'].includes(v.kindCode)) ?? {}
- }
- if (key === 'TY3') {
- return kinds.find(v => ['TY3'].includes(v.kindCode)) ?? {}
- }
- if (key === 'TY4') {
- return kinds.find(v => ['TY4'].includes(v.kindCode)) ?? {}
- }
- return []
- }
- const quotationRef = ref(null)
- const quotationObj = ref({})
- const handleQuotationView = (obj) => {
- quotationRef.value.show(obj.quoteResult.ordersNo)
- }
- const collapse = ref(null)
- const setActiveNames = (name, isActive) => {
- let activeNames = collapse?.value?.activeNames ?? []
- if (isActive) activeNames = activeNames.filter(v => v !== name)
- if (!isActive) activeNames.push(name)
- collapse?.value?.setActiveNames(activeNames)
- }
- // 组件挂载后执行初始化操作
- onMounted(() => {
- getAreaList() // 获取地区列表
- initDept() // 初始化部门数据
- initOption() // 初始化下拉选项
- initDetail() // 如果有订单号,初始化详情
- if (!myRoute.query.orderNo && userInfo.value.typeAttr?.includes('7')) {
- insurancePolicyForm.value.salesman = userInfo.value.name
- insurancePolicyForm.value.mobile = userInfo.value.username
- insurancePolicyForm.value.deptId = userInfo.value.deptId
- salesmanId.value = userInfo.value.userId // 保存选中的业务员ID
- }
- })
- </script>
- <style>
- .error-tooltip .el-popper__arrow::before {
- border-width: 5px !important;
- border-color: rgba(0, 0, 0, 0.65) !important;
- background-color: transparent !important;
- }
- /* 表格列间距样式 */
- .operation-column {
- padding-left: 40px !important;
- }
- </style>
- <style scoped lang="scss">
- @use "@/assets/styles/common/style";
- :deep(.el-collapse-item.is-disabled .el-collapse-item__header) {
- cursor: unset;
- }
- .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;
- }
- }
- }
- .quote_success {
- .dot {
- width: 6px;
- height: 6px;
- background: #10AC42;
- border-radius: 50%;
- margin-right: 7px;
- }
- .text {
- color: #10AC42;
- font-size: 14px;
- }
- }
- .quote_error {
- .dot {
- width: 6px;
- height: 6px;
- background: #FF4545;
- border-radius: 50%;
- margin-right: 7px;
- }
- .text {
- color: #FF4545;
- font-size: 14px;
- margin-right: 10px;
- }
- .box-item {
- width: 200px;
- }
- }
- .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;
- }
- }
- .payCodeInfo {
- .ORtitle>div {
- margin-bottom: 10px;
- :first-child {
- font-size: 14px;
- color: #999;
- }
- :last-child {
- font-size: 14px;
- color: #333;
- }
- }
- }
- .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-popper) {
- background: #fff;
- }
- :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>
|