index.vue 130 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180
  1. <template>
  2. <div class="insurancePolicy">
  3. <el-form ref="InsurancePolicyRefs" :model="insurancePolicyForm" :rules="insurancePolicyRules">
  4. <el-row :gutter="20" class="formItem">
  5. <el-col :span="6">
  6. <el-form-item label="业务员:" style="margin-top: 10px">
  7. <el-input v-model="insurancePolicyForm.salesman" placeholder="输入业务员工姓名,手机号,工号查找" @click="handleFocus"></el-input>
  8. </el-form-item>
  9. </el-col>
  10. <el-col :span="6" v-if="insurancePolicyForm.salesman">
  11. <el-form-item label="手机号:" style="margin-top: 10px">
  12. <el-input v-model="insurancePolicyForm.mobile" disabled></el-input>
  13. </el-form-item>
  14. </el-col>
  15. <el-col :span="6" v-if="insurancePolicyForm.salesman">
  16. <el-form-item label="归属:" style="margin-top: 10px">
  17. <el-cascader
  18. clearable
  19. style="width: 100%"
  20. v-model="insurancePolicyForm.deptId"
  21. :options="institutionList"
  22. :props="tableProps"
  23. ></el-cascader>
  24. </el-form-item>
  25. </el-col>
  26. <el-col :span="6" v-if="insurancePolicyForm.salesman">
  27. <el-button link type="primary" @click="handleFocus" style="margin-top: 10px">更换业务员</el-button>
  28. </el-col>
  29. </el-row>
  30. <el-collapse v-model="activeName">
  31. <el-collapse-item name="car">
  32. <template #title>
  33. <span class="title">车辆信息</span>
  34. </template>
  35. <el-row :gutter="20" class="formItem formBlock">
  36. <el-col :span="6">
  37. <el-form-item label="车辆是否上牌?" prop="isRegistered">
  38. <el-radio-group v-model="insurancePolicyForm.isRegistered">
  39. <el-radio value="1">是</el-radio>
  40. <el-radio value="2">否</el-radio>
  41. </el-radio-group>
  42. </el-form-item>
  43. </el-col>
  44. <el-col :span="6">
  45. <el-form-item :disabled="insurancePolicyForm.isRegistered==2" label="车牌" prop="licenseNo">
  46. <el-input v-model="insurancePolicyForm.licenseNo" minlength="7" maxlength="8" placeholder="输入车牌号" @change="getQuoteNumber"></el-input>
  47. </el-form-item>
  48. </el-col>
  49. <el-col :span="6">
  50. <el-form-item label="车牌识别代码" prop="vinNo">
  51. <el-input v-model="insurancePolicyForm.vinNo" placeholder="请输入车辆识别代码" @change="getQuoteNumber">
  52. <template #append>
  53. <el-button icon="Search" @click="handleCarNumber" />
  54. </template>
  55. </el-input>
  56. </el-form-item>
  57. </el-col>
  58. <el-col :span="6">
  59. <el-form-item label="品牌型号" prop="brandName">
  60. <el-input v-model="insurancePolicyForm.brandName" placeholder="请输入品牌型号">
  61. <template #append>
  62. <el-button icon="Search" @click="handleCarCode" />
  63. </template>
  64. </el-input>
  65. </el-form-item>
  66. </el-col>
  67. <el-col :span="6">
  68. <el-form-item label="发动机号" prop="engineNo">
  69. <el-input v-model="insurancePolicyForm.engineNo" placeholder="请输入发动机号" @change="getQuoteNumber"></el-input>
  70. </el-form-item>
  71. </el-col>
  72. <el-col :span="6">
  73. <el-form-item label="使用性质" prop="carNatureCode">
  74. <el-select v-model="insurancePolicyForm.carNatureCode" placeholder="请选择">
  75. <el-option v-for="(item, index) in optionObj.car_nature_code" :label="item.label" :value="item.value" :key="item.value"></el-option>
  76. </el-select>
  77. </el-form-item>
  78. </el-col>
  79. <el-col :span="6">
  80. <el-form-item label="车辆用途" prop="vehicleUseCode">
  81. <el-select v-model="insurancePolicyForm.vehicleUseCode" placeholder="请选择">
  82. <el-option v-for="(item, index) in optionObj.vehicle_use_code" :label="item.label" :value="item.value" :key="item.value"></el-option>
  83. </el-select>
  84. </el-form-item>
  85. </el-col>
  86. <el-col :span="6">
  87. <el-form-item label="车辆种类" prop="plateType">
  88. <el-select v-model="insurancePolicyForm.plateType" placeholder="请选择">
  89. <el-option v-for="(item, index) in optionObj.car_kind_code" :label="item.label" :value="item.value" :key="item.value"></el-option>
  90. </el-select>
  91. </el-form-item>
  92. </el-col>
  93. <el-col :span="6">
  94. <el-form-item label="车辆类型" prop="carTypeCode">
  95. <el-select v-model="insurancePolicyForm.carTypeCode" placeholder="请选择">
  96. <el-option v-for="(item, index) in optionObj.car_type_code" :label="item.label" :value="item.value" :key="item.value"></el-option>
  97. </el-select>
  98. </el-form-item>
  99. </el-col>
  100. <el-col :span="6">
  101. <el-form-item label="能源种类" prop="energyTypeCode">
  102. <el-select v-model="insurancePolicyForm.energyTypeCode" placeholder="请选择">
  103. <el-option v-for="(item, index) in optionObj.energy_type_code" :label="item.label" :value="item.value" :key="item.value"></el-option>
  104. </el-select>
  105. </el-form-item>
  106. </el-col>
  107. <el-col :span="6">
  108. <el-form-item label="注册日期" prop="registerDate">
  109. <el-date-picker
  110. v-model="insurancePolicyForm.registerDate"
  111. type="date"
  112. placeholder="请选择"
  113. value-format="YYYY-MM-DD"
  114. style="width: 100%"
  115. />
  116. </el-form-item>
  117. </el-col>
  118. <el-col :span="6">
  119. <el-form-item label="发证日期" prop="issueDate">
  120. <el-date-picker
  121. v-model="insurancePolicyForm.issueDate"
  122. type="date"
  123. placeholder="请选择"
  124. value-format="YYYY-MM-DD"
  125. style="width: 100%"
  126. />
  127. </el-form-item>
  128. </el-col>
  129. <el-col :span="6">
  130. <el-form-item label="整备质量" prop="completeKerbMass">
  131. <el-input v-model="insurancePolicyForm.completeKerbMass" placeholder="输入整备质量">
  132. <template #append>
  133. <span>千克(KG)</span>
  134. </template>
  135. </el-input>
  136. </el-form-item>
  137. </el-col>
  138. <el-col :span="6">
  139. <el-form-item label="核定载质量" prop="limitLoad">
  140. <el-input v-model="insurancePolicyForm.limitLoad" placeholder="请输入核定载质量">
  141. <template #append>
  142. <span>千克(KG)</span>
  143. </template>
  144. </el-input>
  145. </el-form-item>
  146. </el-col>
  147. <el-col :span="6">
  148. <el-form-item label="座位数" prop="seatCount">
  149. <el-input v-model="insurancePolicyForm.seatCount" placeholder="请输入座位数">
  150. <template #append>
  151. <span>座</span>
  152. </template>
  153. </el-input>
  154. </el-form-item>
  155. </el-col>
  156. <el-col :span="6">
  157. <el-form-item label="年款" prop="carYear">
  158. <el-input v-model="insurancePolicyForm.carYear" placeholder="请输入年款"></el-input>
  159. </el-form-item>
  160. </el-col>
  161. <el-col :span="6">
  162. <el-form-item label="新车购置价" prop="purchasePrice">
  163. <el-input v-model="insurancePolicyForm.purchasePrice" placeholder="请输入新车购置价">
  164. <template #append>
  165. <span>元</span>
  166. </template>
  167. </el-input>
  168. </el-form-item>
  169. </el-col>
  170. <el-col :span="6">
  171. <el-form-item label="排量" prop="displacement">
  172. <el-input v-model="insurancePolicyForm.displacement" placeholder="请输入排量">
  173. <template #append>
  174. <span>升(L)</span>
  175. </template>
  176. </el-input>
  177. </el-form-item>
  178. </el-col>
  179. <el-col :span="6">
  180. <el-form-item label="功率" prop="powerScale">
  181. <el-input v-model="insurancePolicyForm.powerScale" placeholder="输入功率">
  182. <template #append>
  183. <span>千瓦(KW)</span>
  184. </template>
  185. </el-input>
  186. </el-form-item>
  187. </el-col>
  188. </el-row>
  189. <template #icon="{ isActive }">
  190. <span class="icon">
  191. <el-button link type="primary" @click.stop="handleRecognition"><img src="@/assets/images/insurancePolicy/sao.png" class="myIcon" />证件识别</el-button>
  192. <span class="icon-ele">
  193. {{ isActive ? '收起' : '展开' }}
  194. </span>
  195. </span>
  196. </template>
  197. </el-collapse-item>
  198. <el-collapse-item name="owner">
  199. <template #title>
  200. <span class="title">车主信息</span>
  201. </template>
  202. <el-row :gutter="20" class="formItem formBlock">
  203. <el-col :span="6">
  204. <el-form-item label="车主姓名" prop="name1">
  205. <el-input v-model="insurancePolicyForm.name1" placeholder="输入车主姓名"></el-input>
  206. </el-form-item>
  207. </el-col>
  208. <el-col :span="6">
  209. <el-form-item label="车主手机号" prop="mobile1">
  210. <el-input v-model="insurancePolicyForm.mobile1" placeholder="请输入车主手机号"></el-input>
  211. </el-form-item>
  212. </el-col>
  213. <el-col :span="6">
  214. <el-form-item label="证件类型" prop="personType1">
  215. <el-select v-model="insurancePolicyForm.identifyType1" placeholder="请选择">
  216. <el-option label="身份证" value="01" key="1"></el-option>
  217. <el-option label="营业执照" value="02" key="2"></el-option>
  218. </el-select>
  219. </el-form-item>
  220. </el-col>
  221. <el-col v-if="insurancePolicyForm.identifyType1 === '01'" :span="6">
  222. <el-form-item label="证件号码" prop="identifyNumber1">
  223. <el-input v-model="insurancePolicyForm.identifyNumber1" placeholder="请输入证件号码" @change="getAgeByIdCard($event, insurancePolicyForm)"></el-input>
  224. </el-form-item>
  225. </el-col>
  226. <el-col v-else :span="6">
  227. <el-form-item label="统一社会信用代码" prop="identifyNumber1">
  228. <el-input v-model="insurancePolicyForm.identifyNumber1" placeholder="请输入证件号码"></el-input>
  229. </el-form-item>
  230. </el-col>
  231. <el-col :span="6">
  232. <el-form-item prop="identifyValidDate1" label="有效期起期">
  233. <el-date-picker
  234. v-model="insurancePolicyForm.identifyValidDate1"
  235. type="date"
  236. placeholder="请选择"
  237. value-format="YYYY-MM-DD"
  238. style="width: 100%"
  239. />
  240. </el-form-item>
  241. </el-col>
  242. <el-col :span="6">
  243. <el-form-item prop="identifyValidEndDate1" label="有效期止期">
  244. <div style="display: flex; align-items: center; justify-content: flex-start; width: 100%">
  245. <el-date-picker
  246. v-model="insurancePolicyForm.identifyValidEndDate1"
  247. type="date"
  248. placeholder="请选择"
  249. value-format="YYYY-MM-DD"
  250. style="width: calc(100% - 64px)"
  251. />
  252. <el-button type="primary" @click="longTime">长期</el-button>
  253. </div>
  254. </el-form-item>
  255. </el-col>
  256. <el-col :span="6">
  257. <el-form-item label="地址" prop="addr1">
  258. <el-input v-model="insurancePolicyForm.addr1" placeholder="请输入地址"></el-input>
  259. </el-form-item>
  260. </el-col>
  261. <el-col :span="6">
  262. <el-form-item v-if="insurancePolicyForm.identifyType1 === '02'" label="投保人座机" prop="telephone">
  263. <el-input v-model="insurancePolicyForm.telephone1" placeholder="请输入投保人座机"></el-input>
  264. </el-form-item>
  265. </el-col>
  266. <el-col :span="6">
  267. <el-form-item v-if="insurancePolicyForm.identifyType1 === '02'" label="投保人联系人" prop="person">
  268. <el-input v-model="insurancePolicyForm.person1" placeholder="请输入投保人联系人"></el-input>
  269. </el-form-item>
  270. </el-col>
  271. <el-col :span="6">
  272. <el-form-item v-if="insurancePolicyForm.identifyType1 === '02'" label="联系人证件号码" prop="age">
  273. <el-input v-model.number="insurancePolicyForm.age1" placeholder="请输入联系人证件号码"></el-input>
  274. </el-form-item>
  275. </el-col>
  276. <el-col :span="6">
  277. <el-form-item v-if="insurancePolicyForm.identifyType1 === '02'" prop="identifyValidEndDate" label="有效期止期">
  278. <el-date-picker
  279. v-model="insurancePolicyForm.identifyValidEndDate1"
  280. type="date"
  281. placeholder="请选择"
  282. value-format="YYYY-MM-DD"
  283. style="width: 100%"
  284. />
  285. </el-form-item>
  286. </el-col>
  287. <el-col :span="6">
  288. <el-form-item v-if="insurancePolicyForm.identifyType1 === '02'" prop="area" label="地区">
  289. <el-cascader
  290. clearable
  291. style="width: 100%"
  292. v-model="insurancePolicyForm.address1"
  293. :options="areaOptins"
  294. :props="areaProps"
  295. ></el-cascader>
  296. </el-form-item>
  297. </el-col>
  298. <el-col :span="6">
  299. <el-form-item v-if="insurancePolicyForm.identifyType1 === '02'" label="注册资金" prop="money">
  300. <el-input v-model="insurancePolicyForm.registeredCapital1" placeholder="请输入注册资金">
  301. <template #append>
  302. <span>元</span>
  303. </template>
  304. </el-input>
  305. </el-form-item>
  306. </el-col>
  307. <el-col :span="6">
  308. <el-form-item v-if="insurancePolicyForm.identifyType1 === '02'" label="电子邮箱" prop="email">
  309. <el-input v-model="insurancePolicyForm.email1" placeholder="请输入电子邮箱"></el-input>
  310. </el-form-item>
  311. </el-col>
  312. <!-- <el-col :span="6">
  313. <el-form-item label="是否二手车" prop="gender">
  314. <el-select v-model="insurancePolicyForm.gender" placeholder="请选择">
  315. <el-option label="是" value="1" key="1"></el-option>
  316. <el-option label="否" value="2" key="2"></el-option>
  317. </el-select>
  318. </el-form-item>
  319. </el-col>
  320. <el-col :span="6">
  321. <el-form-item label="商业险是否过户" prop="gender">
  322. <el-select v-model="insurancePolicyForm.gender" placeholder="请选择">
  323. <el-option label="是" value="1" key="1"></el-option>
  324. <el-option label="否" value="2" key="2"></el-option>
  325. </el-select>
  326. </el-form-item>
  327. </el-col>-->
  328. </el-row>
  329. <template #icon="{ isActive }">
  330. <span class="icon">
  331. <el-button link type="primary" @click.stop="handleRecognition"><img src="@/assets/images/insurancePolicy/sao.png" class="myIcon" />证件识别</el-button>
  332. <span class="icon-ele">
  333. {{ isActive ? '收起' : '展开' }}
  334. </span>
  335. </span>
  336. </template>
  337. </el-collapse-item>
  338. <el-collapse-item name="owner1">
  339. <template #title>
  340. <span class="title">
  341. 投保人信息
  342. <span class="ordinary" :class="{'active': item.checked}" v-for="(item, index) in btns.owner1" :key="item" @click.stop="handleChange(item, 'owner1')">
  343. {{ item.text }}
  344. </span>
  345. </span>
  346. </template>
  347. <el-row :gutter="20" class="formItem formBlock" v-if="btns.owner1Text === '其他人'">
  348. <el-col :span="6">
  349. <el-form-item label="车主姓名" prop="name2">
  350. <el-input v-model="insurancePolicyForm.name2" placeholder="输入车主姓名"></el-input>
  351. </el-form-item>
  352. </el-col>
  353. <el-col :span="6">
  354. <el-form-item label="车主手机号" prop="mobile2">
  355. <el-input v-model="insurancePolicyForm.mobile2" placeholder="请输入车主手机号"></el-input>
  356. </el-form-item>
  357. </el-col>
  358. <el-col :span="6">
  359. <el-form-item label="证件类型" prop="personType2">
  360. <el-select v-model="insurancePolicyForm.identifyType2" placeholder="请选择">
  361. <el-option label="身份证" value="01" key="1"></el-option>
  362. <el-option label="营业执照" value="02" key="2"></el-option>
  363. </el-select>
  364. </el-form-item>
  365. </el-col>
  366. <el-col v-if="insurancePolicyForm.identifyType2 === '01'" :span="6">
  367. <el-form-item label="证件号码" prop="identifyNumber2">
  368. <el-input v-model="insurancePolicyForm.identifyNumber2" placeholder="请输入证件号码" @change="getAgeByIdCard($event, insurancePolicyForm)"></el-input>
  369. </el-form-item>
  370. </el-col>
  371. <el-col v-else :span="6">
  372. <el-form-item label="统一社会信用代码" prop="identifyNumber2">
  373. <el-input v-model="insurancePolicyForm.identifyNumber2" placeholder="请输入证件号码"></el-input>
  374. </el-form-item>
  375. </el-col>
  376. <el-col :span="6">
  377. <el-form-item prop="identifyValidDate2" label="有效期起期">
  378. <el-date-picker
  379. v-model="insurancePolicyForm.identifyValidDate2"
  380. type="date"
  381. placeholder="请选择"
  382. value-format="YYYY-MM-DD"
  383. style="width: 100%"
  384. />
  385. </el-form-item>
  386. </el-col>
  387. <el-col :span="6">
  388. <el-form-item prop="identifyValidEndDate2" label="有效期止期">
  389. <el-date-picker
  390. v-model="insurancePolicyForm.identifyValidEndDate2"
  391. type="date"
  392. placeholder="请选择"
  393. value-format="YYYY-MM-DD"
  394. style="width: 100%"
  395. />
  396. </el-form-item>
  397. </el-col>
  398. <el-col :span="6">
  399. <el-form-item label="地址" prop="addr2">
  400. <el-input v-model="insurancePolicyForm.addr2" placeholder="请输入地址"></el-input>
  401. </el-form-item>
  402. </el-col>
  403. <el-col :span="6">
  404. <el-form-item v-if="insurancePolicyForm.identifyType2 === '02'" label="投保人座机" prop="telephone">
  405. <el-input v-model="insurancePolicyForm.telephone2" placeholder="请输入投保人座机"></el-input>
  406. </el-form-item>
  407. </el-col>
  408. <el-col :span="6">
  409. <el-form-item v-if="insurancePolicyForm.identifyType2 === '02'" label="投保人联系人" prop="person">
  410. <el-input v-model="insurancePolicyForm.person2" placeholder="请输入投保人联系人"></el-input>
  411. </el-form-item>
  412. </el-col>
  413. <el-col :span="6">
  414. <el-form-item v-if="insurancePolicyForm.identifyType2 === '02'" label="联系人证件号码" prop="age">
  415. <el-input v-model.number="insurancePolicyForm.age2" placeholder="请输入联系人证件号码"></el-input>
  416. </el-form-item>
  417. </el-col>
  418. <el-col :span="6">
  419. <el-form-item v-if="insurancePolicyForm.identifyType2 === '02'" prop="identifyValidEndDate" label="有效期止期">
  420. <el-date-picker
  421. v-model="insurancePolicyForm.identifyValidEndDate2"
  422. type="date"
  423. placeholder="请选择"
  424. value-format="YYYY-MM-DD"
  425. style="width: 100%"
  426. />
  427. </el-form-item>
  428. </el-col>
  429. <el-col :span="6">
  430. <el-form-item v-if="insurancePolicyForm.identifyType2 === '02'" prop="area" label="地区">
  431. <el-cascader
  432. clearable
  433. style="width: 100%"
  434. v-model="insurancePolicyForm.address2"
  435. :options="areaOptins"
  436. :props="areaProps"
  437. ></el-cascader>
  438. </el-form-item>
  439. </el-col>
  440. <el-col :span="6">
  441. <el-form-item v-if="insurancePolicyForm.identifyType2 === '02'" label="注册资金" prop="money">
  442. <el-input v-model="insurancePolicyForm.registeredCapital2" placeholder="请输入注册资金">
  443. <template #append>
  444. <span>元</span>
  445. </template>
  446. </el-input>
  447. </el-form-item>
  448. </el-col>
  449. <el-col :span="6">
  450. <el-form-item v-if="insurancePolicyForm.identifyType2 === '02'" label="电子邮箱" prop="email">
  451. <el-input v-model="insurancePolicyForm.email2" placeholder="请输入电子邮箱"></el-input>
  452. </el-form-item>
  453. </el-col>
  454. <!-- <el-col :span="6">
  455. <el-form-item label="是否二手车" prop="gender">
  456. <el-select v-model="insurancePolicyForm.policyHolderInfo.gender" placeholder="请选择">
  457. <el-option label="是" value="1" key="1"></el-option>
  458. <el-option label="否" value="2" key="2"></el-option>
  459. </el-select>
  460. </el-form-item>
  461. </el-col>
  462. <el-col :span="6">
  463. <el-form-item label="商业险是否过户" prop="gender">
  464. <el-select v-model="insurancePolicyForm.policyHolderInfo.gender" placeholder="请选择">
  465. <el-option label="是" value="1" key="1"></el-option>
  466. <el-option label="否" value="2" key="2"></el-option>
  467. </el-select>
  468. </el-form-item>
  469. </el-col>-->
  470. </el-row>
  471. <template #icon="{ isActive }">
  472. <span class="icon">
  473. <el-button link type="primary" @click.stop="handleRecognition"><img src="@/assets/images/insurancePolicy/sao.png" class="myIcon" />证件识别</el-button>
  474. <span class="icon-ele">
  475. {{ isActive ? '收起' : '展开' }}
  476. </span>
  477. </span>
  478. </template>
  479. </el-collapse-item>
  480. <el-collapse-item name="owner2">
  481. <template #title>
  482. <span class="title">
  483. 被保人信息
  484. <span class="ordinary" :class="{'active': item.checked}" v-for="(item, index) in btns.owner2" :key="item" @click.stop="handleChange(item, 'owner2')">
  485. {{ item.text }}
  486. </span>
  487. </span>
  488. </template>
  489. <el-row :gutter="20" class="formItem formBlock" v-if="btns.owner2Text === '其他人'">
  490. <el-col :span="6">
  491. <el-form-item label="车主姓名" prop="name3">
  492. <el-input v-model="insurancePolicyForm.name3" placeholder="输入车主姓名"></el-input>
  493. </el-form-item>
  494. </el-col>
  495. <el-col :span="6">
  496. <el-form-item label="车主手机号" prop="mobile3">
  497. <el-input v-model="insurancePolicyForm.mobile3" placeholder="请输入车主手机号"></el-input>
  498. </el-form-item>
  499. </el-col>
  500. <el-col :span="6">
  501. <el-form-item label="证件类型" prop="personType3">
  502. <el-select v-model="insurancePolicyForm.identifyType3" placeholder="请选择">
  503. <el-option label="身份证" value="01" key="01"></el-option>
  504. <el-option label="营业执照" value="02" key="02"></el-option>
  505. </el-select>
  506. </el-form-item>
  507. </el-col>
  508. <el-col v-if="insurancePolicyForm.identifyType3 === '01'" :span="6">
  509. <el-form-item label="证件号码" prop="identifyNumber3">
  510. <el-input v-model="insurancePolicyForm.identifyNumber3" placeholder="请输入证件号码" @change="getAgeByIdCard($event, insurancePolicyForm)"></el-input>
  511. </el-form-item>
  512. </el-col>
  513. <el-col v-else :span="6">
  514. <el-form-item label="统一社会信用代码" prop="identifyNumber3">
  515. <el-input v-model="insurancePolicyForm.identifyNumber3" placeholder="请输入证件号码"></el-input>
  516. </el-form-item>
  517. </el-col>
  518. <el-col :span="6">
  519. <el-form-item prop="identifyValidDate3" label="有效期起期">
  520. <el-date-picker
  521. v-model="insurancePolicyForm.identifyValidDate3"
  522. type="date"
  523. placeholder="请选择"
  524. value-format="YYYY-MM-DD"
  525. style="width: 100%"
  526. />
  527. </el-form-item>
  528. </el-col>
  529. <el-col :span="6">
  530. <el-form-item prop="identifyValidEndDate3" label="有效期止期">
  531. <el-date-picker
  532. v-model="insurancePolicyForm.identifyValidEndDate3"
  533. type="date"
  534. placeholder="请选择"
  535. value-format="YYYY-MM-DD"
  536. style="width: 100%"
  537. />
  538. </el-form-item>
  539. </el-col>
  540. <el-col :span="6">
  541. <el-form-item label="地址" prop="addr3">
  542. <el-input v-model="insurancePolicyForm.addr3" placeholder="请输入地址"></el-input>
  543. </el-form-item>
  544. </el-col>
  545. <el-col :span="6">
  546. <el-form-item v-if="insurancePolicyForm.identifyType3 === '02'" label="投保人座机" prop="telephone">
  547. <el-input v-model="insurancePolicyForm.telephone3" placeholder="请输入投保人座机"></el-input>
  548. </el-form-item>
  549. </el-col>
  550. <el-col :span="6">
  551. <el-form-item v-if="insurancePolicyForm.identifyType3 === '02'" label="投保人联系人" prop="person">
  552. <el-input v-model="insurancePolicyForm.person3" placeholder="请输入投保人联系人"></el-input>
  553. </el-form-item>
  554. </el-col>
  555. <el-col :span="6">
  556. <el-form-item v-if="insurancePolicyForm.identifyType3 === '02'" label="联系人证件号码" prop="age">
  557. <el-input v-model.number="insurancePolicyForm.age3" placeholder="请输入联系人证件号码"></el-input>
  558. </el-form-item>
  559. </el-col>
  560. <el-col :span="6">
  561. <el-form-item v-if="insurancePolicyForm.identifyType3 === '02'" prop="identifyValidEndDate" label="有效期止期">
  562. <el-date-picker
  563. v-model="insurancePolicyForm.identifyValidEndDate3"
  564. type="date"
  565. placeholder="请选择"
  566. value-format="YYYY-MM-DD"
  567. style="width: 100%"
  568. />
  569. </el-form-item>
  570. </el-col>
  571. <el-col :span="6">
  572. <el-form-item v-if="insurancePolicyForm.identifyType3 === '02'" prop="area" label="地区">
  573. <el-cascader
  574. clearable
  575. style="width: 100%"
  576. v-model="insurancePolicyForm.address3"
  577. :options="areaOptins"
  578. :props="areaProps"
  579. ></el-cascader>
  580. </el-form-item>
  581. </el-col>
  582. <el-col :span="6">
  583. <el-form-item v-if="insurancePolicyForm.identifyType3 === '02'" label="注册资金" prop="money">
  584. <el-input v-model="insurancePolicyForm.registeredCapital3" placeholder="请输入注册资金">
  585. <template #append>
  586. <span>元</span>
  587. </template>
  588. </el-input>
  589. </el-form-item>
  590. </el-col>
  591. <el-col :span="6">
  592. <el-form-item v-if="insurancePolicyForm.identifyType3 === '02'" label="电子邮箱" prop="email">
  593. <el-input v-model="insurancePolicyForm.email3" placeholder="请输入电子邮箱"></el-input>
  594. </el-form-item>
  595. </el-col>
  596. <!-- <el-col :span="6">
  597. <el-form-item label="是否二手车" prop="gender">
  598. <el-select v-model="insurancePolicyForm.gender3" placeholder="请选择">
  599. <el-option label="是" value="1" key="1"></el-option>
  600. <el-option label="否" value="2" key="2"></el-option>
  601. </el-select>
  602. </el-form-item>
  603. </el-col>
  604. <el-col :span="6">
  605. <el-form-item label="商业险是否过户" prop="gender">
  606. <el-select v-model="insurancePolicyForm.gender3" placeholder="请选择">
  607. <el-option label="是" value="1" key="1"></el-option>
  608. <el-option label="否" value="2" key="2"></el-option>
  609. </el-select>
  610. </el-form-item>
  611. </el-col>-->
  612. </el-row>
  613. <template #icon="{ isActive }">
  614. <span class="icon">
  615. <el-button link type="primary" @click.stop="handleRecognition"><img src="@/assets/images/insurancePolicy/sao.png" class="myIcon" />证件识别</el-button>
  616. <span class="icon-ele">
  617. {{ isActive ? '收起' : '展开' }}
  618. </span>
  619. </span>
  620. </template>
  621. </el-collapse-item>
  622. <el-collapse-item name="tax">
  623. <template #title>
  624. <span class="title">
  625. 车船税
  626. <span class="ordinary" :class="{'active': item.checked}" v-for="(item, index) in btns.owner3" :key="item" @click.stop="handleChange(item, 'owner3')">
  627. {{ item.text }}
  628. </span>
  629. </span>
  630. </template>
  631. <div v-if="btns.owner3show === '正常交税'" style="width: 100%">
  632. <el-row :gutter="20" class="formItem formBlock">
  633. <el-col :span="6">
  634. <el-form-item label="纳税人名称" prop="taxpayerName">
  635. <el-input v-model="insurancePolicyForm.taxpayerName" placeholder="请输入纳税人名称" maxlength="50"></el-input>
  636. </el-form-item>
  637. </el-col>
  638. <el-col :span="6">
  639. <el-form-item label="证件类型" prop="taxpayerIdentifier">
  640. <el-select v-model="insurancePolicyForm.taxpayerIdentifier" placeholder="请选择">
  641. <el-option label="身份证" value="01" key="1"></el-option>
  642. <el-option label="营业执照" value="02" key="2"></el-option>
  643. </el-select>
  644. </el-form-item>
  645. </el-col>
  646. <el-col :span="6">
  647. <el-form-item label="证件号码" prop="identifyNumber">
  648. <el-input v-model="insurancePolicyForm.identifyNumber" placeholder="请输入证件号码" maxlength="50"></el-input>
  649. </el-form-item>
  650. </el-col>
  651. </el-row>
  652. </div>
  653. <div v-if="btns.owner3show === '免税'" style="width: 100%">
  654. <el-row :gutter="20" class="formItem formBlock">
  655. <el-col :span="6">
  656. <el-form-item label="减免税凭证号" prop="extendChar2">
  657. <el-input v-model="insurancePolicyForm.extendChar2" placeholder="请输入减免税凭证号" maxlength="50"></el-input>
  658. </el-form-item>
  659. </el-col>
  660. <el-col :span="6">
  661. <el-form-item label="减免税原因" prop="relifReason">
  662. <el-select v-model="insurancePolicyForm.relifReason" placeholder="请选择">
  663. <el-option label="原因1" value="1" key="1"></el-option>
  664. </el-select>
  665. </el-form-item>
  666. </el-col>
  667. <el-col :span="6">
  668. <el-form-item label="税务机关代码" prop="taxComCode">
  669. <el-input v-model="insurancePolicyForm.taxComCode" placeholder="请输入税务机关代码" maxlength="50"></el-input>
  670. </el-form-item>
  671. </el-col>
  672. <el-col :span="6">
  673. <el-form-item label="税务机关名称" prop="taxComName">
  674. <el-input v-model="insurancePolicyForm.taxComName" placeholder="请输入税务机关名称" maxlength="50"></el-input>
  675. </el-form-item>
  676. </el-col>
  677. </el-row>
  678. </div>
  679. <div v-if="btns.owner3show === '减税'" style="width: 100%">
  680. <el-row :gutter="20" class="formItem formBlock">
  681. <el-col :span="6">
  682. <el-form-item label="减免税凭证号" prop="extendChar2">
  683. <el-input v-model="insurancePolicyForm.extendChar2" placeholder="请输入减免税凭证号" maxlength="50"></el-input>
  684. </el-form-item>
  685. </el-col>
  686. <el-col :span="6">
  687. <el-form-item label="减免税原因" prop="relifReason">
  688. <el-select v-model="insurancePolicyForm.relifReason" placeholder="请选择">
  689. <el-option label="原因1" value="1" key="1"></el-option>
  690. </el-select>
  691. </el-form-item>
  692. </el-col>
  693. <el-col :span="6">
  694. <el-form-item label="税务机关代码" prop="taxComCode">
  695. <el-input v-model="insurancePolicyForm.taxComCode" placeholder="请输入税务机关代码" maxlength="50"></el-input>
  696. </el-form-item>
  697. </el-col>
  698. <el-col :span="6">
  699. <el-form-item label="税务机关名称" prop="taxComName">
  700. <el-input v-model="insurancePolicyForm.taxComName" placeholder="请输入税务机关名称" maxlength="50"></el-input>
  701. </el-form-item>
  702. </el-col>
  703. <el-col :span="6">
  704. <el-form-item label="减税比例" prop="taxRelief">
  705. <el-input v-model="insurancePolicyForm.taxRelief" placeholder="请输入减税比例">
  706. <template #append>
  707. <span>%</span>
  708. </template>
  709. </el-input>
  710. </el-form-item>
  711. </el-col>
  712. </el-row>
  713. </div>
  714. <div v-if="btns.owner3show === '完税'" style="width: 100%">
  715. <el-row :gutter="20" class="formItem formBlock">
  716. <el-col :span="6">
  717. <el-form-item label="完税凭证号" prop="extendChar2">
  718. <el-input v-model="insurancePolicyForm.extendChar2" placeholder="请输入完税凭证号" maxlength="50"></el-input>
  719. </el-form-item>
  720. </el-col>
  721. <el-col :span="6">
  722. <el-form-item label="税务机关代码" prop="taxComCode">
  723. <el-input v-model="insurancePolicyForm.taxComCode" placeholder="请输入税务机关代码" maxlength="50"></el-input>
  724. </el-form-item>
  725. </el-col>
  726. <el-col :span="6">
  727. <el-form-item label="税务机关名称" prop="taxComName">
  728. <el-input v-model="insurancePolicyForm.taxComName" placeholder="请输入税务机关名称" maxlength="50"></el-input>
  729. </el-form-item>
  730. </el-col>
  731. <el-col :span="6">
  732. <el-form-item prop="taxDocumentDate" label="完税凭证填发日期">
  733. <el-date-picker
  734. v-model="insurancePolicyForm.taxDocumentDate"
  735. type="date"
  736. placeholder="请选择"
  737. value-format="YYYY-MM-DD"
  738. style="width: 100%"
  739. />
  740. </el-form-item>
  741. </el-col>
  742. <el-col :span="6">
  743. <el-form-item prop="taxPaidAreaCode" label="完税凭证地区">
  744. <el-cascader
  745. clearable
  746. style="width: 100%"
  747. v-model="insurancePolicyForm.taxPaidAreaCode"
  748. :options="areaOptins"
  749. :props="areaProps"
  750. ></el-cascader>
  751. </el-form-item>
  752. </el-col>
  753. </el-row>
  754. </div>
  755. <template #icon="{ isActive }">
  756. <span class="icon">
  757. <span class="icon-ele">
  758. {{ isActive ? '收起' : '展开' }}
  759. </span>
  760. </span>
  761. </template>
  762. </el-collapse-item>
  763. <el-collapse-item name="insurance">
  764. <template #title>
  765. <span class="title">
  766. 投保信息
  767. <span class="ordinary" :class="{'active': item.checked}" v-for="(item, index) in optionObj.insuranceType" :key="item.value" @click.stop="handleChange(item, 'insurance')">
  768. {{ item.label }}
  769. </span>
  770. </span>
  771. </template>
  772. <el-form-item class="white-m-p24" label="车辆其他信息">
  773. <el-radio-group v-model="insurancePolicyForm.insuranceType">
  774. <el-radio value="1">商业险是否过户</el-radio>
  775. <el-radio value="2">二手车</el-radio>
  776. </el-radio-group>
  777. </el-form-item>
  778. <div class="insurance-jq" v-if="insurancePolicyForm.productId === '0330' || insurancePolicyForm.productId === '0330034002' || insurancePolicyForm.productId === '0330034001'">
  779. <span>交强险</span>
  780. <span class="checkbox" :class="{'cehcked': item.checked}" v-for="item in jqWork" :key="item" @click="JQChange(item)">{{ item.text }}</span>
  781. <div class="time">
  782. <el-form-item prop="startDate" label="">
  783. <el-date-picker
  784. v-model="insurancePolicyForm.JQStartDate"
  785. type="datetime"
  786. placeholder="请选择"
  787. value-format="YYYY-MM-DD HH:mm:ss"
  788. style="width: 100%"
  789. />
  790. </el-form-item>
  791. &nbsp;&nbsp;&nbsp;至&nbsp;&nbsp;&nbsp;
  792. <el-form-item prop="endDate" label="">
  793. <el-date-picker
  794. v-model="insurancePolicyForm.JQEndDate"
  795. type="datetime"
  796. placeholder="请选择"
  797. value-format="YYYY-MM-DD HH:mm:ss"
  798. style="width: 100%"
  799. />
  800. </el-form-item>
  801. </div>
  802. </div>
  803. <div class="insurance-jq" v-if="insurancePolicyForm.productId === '034001' || insurancePolicyForm.productId === '034002' || insurancePolicyForm.productId === '0330034002' || insurancePolicyForm.productId === '0330034001'">
  804. <span>商业险</span>
  805. <span class="checkbox" :class="{'cehcked': item.checked}" v-for="item in syWork" :key="item" @click="SYChange(item)">{{ item.text }}</span>
  806. <div class="time">
  807. <el-form-item prop="startDate" label="">
  808. <el-date-picker
  809. v-model="insurancePolicyForm.SYStartDate"
  810. type="datetime"
  811. placeholder="请选择"
  812. value-format="YYYY-MM-DD HH:mm:ss"
  813. style="width: 100%"
  814. />
  815. </el-form-item>
  816. &nbsp;&nbsp;&nbsp;至&nbsp;&nbsp;&nbsp;
  817. <el-form-item prop="endDate" label="">
  818. <el-date-picker
  819. v-model="insurancePolicyForm.SYEndDate"
  820. type="datetime"
  821. placeholder="请选择"
  822. value-format="YYYY-MM-DD HH:mm:ss"
  823. style="width: 100%"
  824. />
  825. </el-form-item>
  826. </div>
  827. </div>
  828. <template #icon="{ isActive }">
  829. <span class="icon">
  830. <span class="icon-ele">
  831. {{ isActive ? '收起' : '展开' }}
  832. </span>
  833. </span>
  834. </template>
  835. </el-collapse-item>
  836. <el-collapse-item name="company">
  837. <template #title>
  838. <span class="title">
  839. 报价公司
  840. </span>
  841. </template>
  842. <el-table
  843. :data="quoteData"
  844. style="width: calc(100% - 48px); margin: 0 24px"
  845. row-key="id"
  846. :preserve-expanded-content="true"
  847. @selection-change="handleSelect"
  848. @select="handelSelectRow"
  849. @row-click="handleClickRow"
  850. >
  851. <el-table-column type="expand">
  852. <template #default="scope">
  853. <div class="expandFlex">
  854. <p class="expandTitle">车险方案</p>
  855. <div style="width: calc(100% - 50px); overflow-x: hidden">
  856. <div class="product">
  857. <span class="productItem" :class="{'productActive': productIndex === index}" v-for="(item, index) in scope.row.projectList" @click.stop="handleProduct(item, index)">{{ item.schemeName }}</span>
  858. </div>
  859. <el-row :gutter="20">
  860. <el-col :span="12">
  861. <div class="quoteTitle">方案明细</div>
  862. <el-table
  863. :data="scope.row.projectList[productIndex].kinds"
  864. >
  865. <el-table-column width="50" align="center" v-if="scope.row.projectList[productIndex].schemeType !='1'">
  866. <template #header>
  867. <el-icon style="cursor: pointer;" @click="handlePopover(scope)"><CirclePlus /></el-icon>
  868. </template>
  869. <template #default="props">
  870. <el-icon @click="handleInsuranceDel(scope, props)"><Delete /></el-icon>
  871. </template>
  872. </el-table-column>
  873. <el-table-column label="险种" prop="kindName" align="center"></el-table-column>
  874. <el-table-column label="保额" align="center">
  875. <template #default="props">
  876. <el-select v-model="props.row.amount">
  877. <el-option v-for="item in props.row.options" :label="item.label" :value="item.value"></el-option>
  878. </el-select>
  879. </template>
  880. </el-table-column>
  881. <el-table-column label="保费" prop="unitAmount" align="center"></el-table-column>
  882. </el-table>
  883. <div class="quoteTitle">增值服务</div>
  884. <el-row :gutter="20">
  885. <el-col :span="6" class="quoteFlex">
  886. 救援
  887. <el-select v-model="scope.row.projectList[productIndex].rescue" :disabled="scope.row.projectList[productIndex].schemeType =='1'" size="small" style="width: 80px; margin: 0 10px">
  888. <el-option label="1" value="1"></el-option>
  889. </el-select>
  890. </el-col>
  891. <el-col :span="6" class="quoteFlex">
  892. 检测
  893. <el-select v-model="scope.row.projectList[productIndex].detection" :disabled="scope.row.projectList[productIndex].schemeType =='1'" size="small" style="width: 80px; margin: 0 10px">
  894. <el-option label="1" value="1"></el-option>
  895. </el-select>
  896. </el-col>
  897. <el-col :span="6" class="quoteFlex">
  898. 代驾
  899. <el-select v-model="scope.row.projectList[productIndex].driver" :disabled="scope.row.projectList[productIndex].schemeType =='1'" size="small" style="width: 80px; margin: 0 10px">
  900. <el-option label="1" value="1"></el-option>
  901. </el-select>
  902. </el-col>
  903. <el-col :span="6" class="quoteFlex">
  904. 送检
  905. <el-select v-model="scope.row.projectList[productIndex].inspect" :disabled="scope.row.projectList[productIndex].schemeType =='1'" size="small" style="width: 80px; margin: 0 10px">
  906. <el-option label="1" value="1"></el-option>
  907. </el-select>
  908. </el-col>
  909. </el-row>
  910. <div class="quoteTitle">驾意险</div>
  911. <el-table
  912. :data="scope.row.projectList[productIndex].drivings"
  913. >
  914. <el-table-column width="50" align="center" v-if="scope.row.projectList[productIndex].schemeType !='1'">
  915. <template #header>
  916. <el-icon @click="handleDriving(scope)"><CirclePlus /></el-icon>
  917. </template>
  918. <template #default="props">
  919. <el-icon @click="handleDrivingDel(scope, props)"><Delete /></el-icon>
  920. </template>
  921. </el-table-column>
  922. <el-table-column label="产品名称" prop="productName" align="center">
  923. <template #default="props">
  924. <el-button link type="primary" @click="getJYXDetail(props.row)">{{ props.row.productName }}</el-button>
  925. </template>
  926. </el-table-column>
  927. <el-table-column label="数量" align="center">
  928. <template #default="props">
  929. <el-input :disabled="scope.row.projectList[productIndex].schemeType === '1'" v-model="props.row.quantity" style="width: 140px">
  930. <template #append>
  931. <span>份</span>
  932. </template>
  933. </el-input>
  934. </template>
  935. </el-table-column>
  936. <el-table-column label="保费" prop="premium" align="center"></el-table-column>
  937. </el-table>
  938. <el-button size="small" link type="primary" @click="handleSelectSpecial(scope)">选择特约</el-button>
  939. <el-table :data="scope.row.specialSelectedList" v-show="scope.row.specialSelectedList?.length > 0">
  940. <el-table-column prop="clauseName" label="特约名称"></el-table-column>
  941. </el-table>
  942. </el-col>
  943. <el-col :span="12" style="border-left: 1px dashed #eeeeee">
  944. <p style="text-align: center">保费因素</p>
  945. <el-table
  946. class="factorTable"
  947. :data="scope.row.factorData"
  948. >
  949. <el-table-column label="评分" prop="" width="50">--</el-table-column>
  950. <el-table-column label="交强险折扣系数" prop="">--</el-table-column>
  951. <el-table-column label="鼎然车辆风险评分" prop="">--</el-table-column>
  952. <el-table-column label="交强评分" prop="" width="70">--</el-table-column>
  953. <el-table-column label="商业评分" prop="" width="70">--</el-table-column>
  954. <el-table-column label="出险信息" prop="" width="70">--</el-table-column>
  955. <el-table-column label="总赔付率" prop="" width="70">--</el-table-column>
  956. <el-table-column label="交强赔付率" prop="" width="80">--</el-table-column>
  957. <el-table-column label="商业赔付率" prop="" width="80">--</el-table-column>
  958. </el-table>
  959. <el-table
  960. class="factorTable"
  961. :data="scope.row.factorData"
  962. >
  963. <el-table-column label="类型" prop="" width="50">--</el-table-column>
  964. <el-table-column prop="">
  965. <template #header>
  966. <div style="display: flex; align-items: center; justify-content: center">
  967. <span>商业险折扣系数</span>
  968. <el-popover placement="bottom" width="200">
  969. <div style="display: flex; align-items: center; justify-content: space-between;">
  970. <span>NCD折扣系数</span>
  971. <span>0.8</span>
  972. </div>
  973. <div style="display: flex; align-items: center; justify-content: space-between;">
  974. <span>NCD折扣系数11</span>
  975. <span>0.811</span>
  976. </div>
  977. <template #reference>
  978. <div class="more">
  979. <el-icon><MoreFilled /></el-icon>
  980. </div>
  981. </template>
  982. </el-popover>
  983. </div>
  984. </template>
  985. <template #default="props">
  986. <div style="display: flex; align-items: center; justify-content: center">
  987. <span>--</span>
  988. <el-popover placement="bottom" width="240" trigger="click">
  989. <div class="number">
  990. <p>商业险折扣系数和自主定价系数只能修改一个,修改后系统会重新报价,计算修改后的保费</p>
  991. <el-radio-group>
  992. <el-radio value="1" size="small" style="margin-bottom: 10px">
  993. <template #default>
  994. <div style="display: flex; justify-content: space-between; align-items: center; width: 180px">
  995. <span>商业险折扣系数</span>
  996. <el-input style="width: 80px" size="small"></el-input>
  997. </div>
  998. </template>
  999. </el-radio>
  1000. <el-radio value="2" size="small">
  1001. <template #default>
  1002. <div style="display: flex; justify-content: space-between; align-items: center; width: 180px">
  1003. <span>自主定价系数</span>
  1004. <el-input style="width: 80px" size="small"></el-input>
  1005. </div>
  1006. </template>
  1007. </el-radio>
  1008. </el-radio-group>
  1009. </div>
  1010. <template #reference>
  1011. <el-icon style="font-size: 14px; color:#0083FF "><Edit /></el-icon>
  1012. </template>
  1013. </el-popover>
  1014. </div>
  1015. </template>
  1016. </el-table-column>
  1017. <el-table-column label="交强出险次数" prop="" width="100">--</el-table-column>
  1018. <el-table-column label="商业出险次数" prop="" width="100">--</el-table-column>
  1019. <el-table-column label="交强续保" prop="" width="70">--</el-table-column>
  1020. <el-table-column label="商业续保" prop="" width="70">--</el-table-column>
  1021. <el-table-column label="总折扣率" prop="" width="70">--</el-table-column>
  1022. <el-table-column label="商业折扣" prop="" width="70">--</el-table-column>
  1023. <el-table-column label="交强折扣" prop="" width="70">--</el-table-column>
  1024. </el-table>
  1025. </el-col>
  1026. </el-row>
  1027. </div>
  1028. </div>
  1029. </template>
  1030. </el-table-column>
  1031. <el-table-column type="selection" width="55" />
  1032. <el-table-column label="保险公司" prop="" align="center" width="200">
  1033. <template #default="scope">
  1034. <div class="company">
  1035. <img :src="scope.row.logo"/>
  1036. <span>{{ scope.row.name }}</span>
  1037. </div>
  1038. </template>
  1039. </el-table-column>
  1040. <el-table-column label="报价协议" prop="" align="center" width="260">
  1041. <template #default="scope">
  1042. <el-select v-if="currentRow.some(a => a.id === scope.row.id)">
  1043. <el-option v-for="item in scope.row.aggrements" :value="item.value" :label="item.label"></el-option>
  1044. </el-select>
  1045. </template>
  1046. </el-table-column>
  1047. <el-table-column prop="" align="center">
  1048. <template #header>
  1049. <div style="display: flex; align-items: center; justify-content: center">
  1050. <span style="margin-right: 10px">报价结果</span>
  1051. <el-checkbox>仅查看报价成功</el-checkbox>
  1052. </div>
  1053. </template>
  1054. <template #default="scope">
  1055. <div class="result" v-if="currentRow.some(a => a.id === scope.row.id)">
  1056. <span class="resultItem">
  1057. <span v-if="scope.row.quoteResult?.costs?.sumPremium">总保费:{{ scope.row.quoteResult?.costs?.sumPremium }}</span>
  1058. <span class="resultTips" v-if="scope.row.quoteResult?.feeNoDescription">
  1059. <el-icon style="color: #FF4545; font-size: 14px"><Warning /></el-icon>&nbsp;&nbsp;{{ scope.row.quoteResult?.feeNoDescription }}
  1060. </span>
  1061. </span>
  1062. <div class="resultItem">
  1063. <span v-if="scope.row.quoteResult?.costs?.ciPremium" style="text-align: left; margin-right: 10px">交强:{{ `¥${scope.row.quoteResult?.costs?.ciPremium}` }}</span>
  1064. <span v-if="scope.row.quoteResult?.costs?.vvTax" style="text-align: left; margin-right: 10px">车船税:{{ `¥${scope.row.quoteResult?.costs?.vvTax}` }}</span>
  1065. </div>
  1066. <div class="resultItem">
  1067. <span v-if="scope.row.quoteResult?.costs?.biPremium" style="text-align: left; margin-right: 10px">商业险:{{ `¥${scope.row.quoteResult.costs?.biPremium}` }}</span>
  1068. <span v-if="scope.row.quoteResult?.costs?.niPremium" style="text-align: left; margin-right: 10px">驾意险:{{ `¥${scope.row.quoteResult?.costs?.niPremium}` }}</span>
  1069. </div>
  1070. <span class="resultItem" v-if="scope.row.quoteResult?.ciRiskInfoVo?.startDate || scope.row.quoteResult?.ciRiskInfoVo?.endDate ">
  1071. <span>交强险保险期:{{ `${scope.row.quoteResult?.ciRiskInfoVo?.startDate} 至 ${scope.row.quoteResult?.ciRiskInfoVo?.endDate}` }}</span>
  1072. </span>
  1073. <span class="resultItem" v-if="scope.row.quoteResult?.biRiskInfoVo?.startDate || scope.row.quoteResult?.biRiskInfoVo?.endDate">
  1074. <span>商业险保险期:{{ `${scope.row.quoteResult?.biRiskInfoVo?.startDate} 至 ${scope.row.quoteResult?.biRiskInfoVo?.endDate}` }}</span>
  1075. </span>
  1076. <div>
  1077. <div class="quoteFail" v-if="scope.row.quoteResult?.failMsg">
  1078. <el-icon style="color: #FF4545; font-size: 14px"><Warning /></el-icon>&nbsp;&nbsp;报价失败
  1079. </div>
  1080. <div class="quoteReason">{{ scope.row.quoteResult?.failMsg }}</div>
  1081. </div>
  1082. </div>
  1083. <div class="loader" v-show="scope.row.loading">
  1084. <!-- <i style="color: #d42426" class="el-icon-loading"></i> -->
  1085. <p class="text">
  1086. <span class="letter letter1">掌</span>
  1087. <span class="letter letter2">柜</span>
  1088. <span class="letter letter3">正</span>
  1089. <span class="letter letter4">在</span>
  1090. <span class="letter letter5">为</span>
  1091. <span class="letter letter6">您</span>
  1092. <span class="letter letter7">报</span>
  1093. <span class="letter letter8">价</span>
  1094. <span class="letter letter9">.</span>
  1095. <span class="letter letter10">.</span>
  1096. <span class="letter letter11">.</span>
  1097. </p>
  1098. </div>
  1099. </template>
  1100. </el-table-column>
  1101. <el-table-column label="操作" align="center" width="360">
  1102. <template #default="scope">
  1103. <div v-if="currentRow.some(a => a.id === scope.row.id)">
  1104. <el-button link type="primary" @click="handleCount(scope)">优惠测算</el-button>
  1105. <el-button link type="primary">详情</el-button>
  1106. <el-button link type="primary" :loading="scope.row.loading" @click="handleSubmit(InsurancePolicyRefs,scope)">计算保费</el-button>
  1107. <el-button link type="primary" @click="handleShare(scope)">分享</el-button>
  1108. <el-button link type="primary" @click="handleUnderwriting(scope)">核保</el-button>
  1109. </div>
  1110. </template>
  1111. </el-table-column>
  1112. </el-table>
  1113. <template #icon="{ isActive }">
  1114. <span class="icon">
  1115. <span class="icon-ele">
  1116. {{ isActive ? '收起' : '展开' }}
  1117. </span>
  1118. </span>
  1119. </template>
  1120. </el-collapse-item>
  1121. <el-collapse-item name="history">
  1122. <template #title>
  1123. <span class="title">
  1124. 报价历史
  1125. </span>
  1126. </template>
  1127. <el-table
  1128. :data="tableData"
  1129. style="width: calc(100% - 48px); margin: 0 24px"
  1130. >
  1131. <el-table-column label="保险公司" prop=""></el-table-column>
  1132. <el-table-column label="报价时间" prop=""></el-table-column>
  1133. <el-table-column label="险种" prop=""></el-table-column>
  1134. <el-table-column label="状态" prop="state">
  1135. <template #default="scope">
  1136. <span v-if="scope.row.state===1" class="success">报价成功</span>
  1137. <span v-if="scope.row.state===2" style="display: flex; align-items: center">
  1138. <span class="fail">报价失败</span>
  1139. <el-tooltip
  1140. class="box-item"
  1141. effect="dark"
  1142. content="报价失败的原因"
  1143. placement="bottom"
  1144. >
  1145. <el-icon style="color: #FF4545; font-size: 18px"><Warning /></el-icon>
  1146. </el-tooltip>
  1147. </span>
  1148. </template>
  1149. </el-table-column>
  1150. <el-table-column label="保费计算" prop=""></el-table-column>
  1151. <el-table-column label="交强险" prop=""></el-table-column>
  1152. <el-table-column label="商业险" prop=""></el-table-column>
  1153. <el-table-column label="驾意险" prop=""></el-table-column>
  1154. <el-table-column label="操作">
  1155. <template #default="scope">
  1156. <el-button link type="primary">详情</el-button>
  1157. <el-button link type="primary">分享</el-button>
  1158. <el-button link type="primary">核保</el-button>
  1159. </template>
  1160. </el-table-column>
  1161. </el-table>
  1162. <template #icon="{ isActive }">
  1163. <span class="icon">
  1164. <span class="icon-ele">
  1165. {{ isActive ? '收起' : '展开' }}
  1166. </span>
  1167. </span>
  1168. </template>
  1169. </el-collapse-item>
  1170. </el-collapse>
  1171. </el-form>
  1172. <div class="footer">
  1173. <span>已选保司:{{ currentRow.length }}家</span>&nbsp;&nbsp;&nbsp;
  1174. <el-button type="primary" :loading="loading" @click="handleSubmit(InsurancePolicyRefs)">确定</el-button>
  1175. </div>
  1176. <el-dialog
  1177. title="选择业务员"
  1178. v-model="salesmanShow"
  1179. width="700"
  1180. >
  1181. <salesmanSelect ref="SalesmanSelectRef" @close="handleSalesmanSelect"></salesmanSelect>
  1182. </el-dialog>
  1183. <el-dialog
  1184. v-model="shareShow"
  1185. width="300"
  1186. title="分享"
  1187. >
  1188. <div class="imageCode">
  1189. <img />
  1190. </div>
  1191. <template #footer>
  1192. <el-button plain type="primary" @click="handleSaveImage">保存图片</el-button>
  1193. <el-button plain type="primary" @click="handleCopyLink">复制链接</el-button>
  1194. </template>
  1195. </el-dialog>
  1196. <el-dialog
  1197. title="优惠测算"
  1198. v-model="calculatingShow"
  1199. width="600"
  1200. >
  1201. <calculating ref="calculatingRefs"></calculating>
  1202. </el-dialog>
  1203. <el-dialog
  1204. title="提交核保"
  1205. width="930"
  1206. v-model="underwritingShow"
  1207. >
  1208. <underwriting ref="UnderwritingRefs" @close="handleUnderwritingClose"></underwriting>
  1209. </el-dialog>
  1210. <el-dialog
  1211. title="证件识别"
  1212. width="800"
  1213. v-model="imageShow"
  1214. >
  1215. <recognition ref="RecognitionRefs" @close="handleImageClose"></recognition>
  1216. </el-dialog>
  1217. <el-dialog
  1218. v-model="insuranceShow"
  1219. title="选择险种"
  1220. width="500"
  1221. >
  1222. <insurance ref="InsuranceTypeRef" @close="handleClose" ></insurance>
  1223. </el-dialog>
  1224. <el-dialog
  1225. v-model="drivingShow"
  1226. title="选择驾意险"
  1227. width="700"
  1228. >
  1229. <driving ref="DrivingTypeRef" @close="handleDrivingClose"></driving>
  1230. </el-dialog>
  1231. <el-dialog
  1232. v-model="licenseNoShow"
  1233. width="900"
  1234. title="车型查询"
  1235. >
  1236. <el-table
  1237. ref="LicenseNoTable"
  1238. :data="licenseNoData"
  1239. @row-click="handleSelectedRow"
  1240. row-key="id"
  1241. @select="handleSelectedChange"
  1242. >
  1243. <el-table-column type="selection"></el-table-column>
  1244. <el-table-column prop="modelCode" label="厂牌型号代码"></el-table-column>
  1245. <el-table-column prop="modelName" label="厂牌型号"></el-table-column>
  1246. <el-table-column prop="replacementValue" label="新车购置价"></el-table-column>
  1247. <el-table-column prop="marketYear" label="年款"></el-table-column>
  1248. <el-table-column prop="ratedPassengerCapacity" label="座位数"></el-table-column>
  1249. <el-table-column prop="displacement" label="排量"></el-table-column>
  1250. <el-table-column prop="vehicleDescription" label="配置"></el-table-column>
  1251. </el-table>
  1252. <div class="footer">
  1253. <el-button plain @click="licenseNoDataCancel">取消</el-button>
  1254. <el-button type="primary" @click="licenseNoDataSubmit">确定</el-button>
  1255. </div>
  1256. </el-dialog>
  1257. <el-dialog
  1258. v-model="JYXDetailShow"
  1259. title="驾意险详情"
  1260. width="600"
  1261. >
  1262. <detail ref="JYXDetail"></detail>
  1263. </el-dialog>
  1264. <el-dialog
  1265. v-model="specialShow"
  1266. width="700"
  1267. title="选择特约"
  1268. >
  1269. <el-table
  1270. :data="specialTableData"
  1271. @selection-change="handleSpecialSelectChage"
  1272. >
  1273. <el-table-column type="selection" width="50" align="center"></el-table-column>
  1274. <el-table-column label="特约类型" prop="riskCode" align="center"></el-table-column>
  1275. <el-table-column label="特约名称" prop="clauseName" align="center"></el-table-column>
  1276. <el-table-column label="编码" prop="clauseCode" align="center"></el-table-column>
  1277. <el-table-column label="特别约定内容" prop="clauseContent" width="300" align="center"></el-table-column>
  1278. </el-table>
  1279. <div class="footer">
  1280. <el-button plain type="primary" @click="handleSpecialTableDataCancel">取消</el-button>
  1281. <el-button type="primary" @click="handleSpecialTableDataSubmit">确定</el-button>
  1282. </div>
  1283. </el-dialog>
  1284. </div>
  1285. </template>
  1286. <script setup lang="ts">
  1287. import type { FormInstance, FormRules } from 'element-plus'
  1288. import api from "@/api";
  1289. import { ElMessage } from "element-plus";
  1290. import { useRoute } from 'vue-router'
  1291. import underwriting from './modules/underwriting.vue'
  1292. import recognition from './modules/recognition.vue'
  1293. import calculating from './modules/calculating.vue'
  1294. import salesmanSelect from '../additionalOrder/additional/modules/salesmanSelect.vue'
  1295. import insurance from "../additionalOrder/additional/modules/insuranceSelect.vue";
  1296. import driving from '../../layouts/components/DrivingType/index.vue'
  1297. import detail from '../../layouts/components/JYXDetail/index.vue'
  1298. const SalesmanSelectRef = ref()
  1299. const InsuranceTypeRef = ref()
  1300. const DrivingTypeRef = ref()
  1301. const UnderwritingRefs = ref()
  1302. const LicenseNoTable = ref()
  1303. const JYXDetail = ref()
  1304. const myRoute = useRoute()
  1305. const initDetail = () => {
  1306. api.insurancePolicyApi.getOrderDetail(myRoute.query.orderNo).then((res: any) => {
  1307. if(res.code == 200) {
  1308. let obj = res.data
  1309. // 业务员信息
  1310. insurancePolicyForm.value.salesman = obj?.salesmanInfo?.name
  1311. insurancePolicyForm.value.mobile = obj?.salesmanInfo?.mobile
  1312. insurancePolicyForm.value.deptId = obj?.salesmanInfo?.deptId
  1313. // 车辆信息
  1314. insurancePolicyForm.value.isRegistered = obj?.carInfoVo?.isRegistered || '1'
  1315. insurancePolicyForm.value.licenseNo = obj?.carInfoVo?.licenseNo
  1316. insurancePolicyForm.value.vinNo = obj?.carInfoVo?.vinNo
  1317. insurancePolicyForm.value.brandName = obj?.carInfoVo?.brandName
  1318. insurancePolicyForm.value.engineNo = obj?.carInfoVo?.engineNo
  1319. insurancePolicyForm.value.carNatureCode = obj?.carInfoVo?.carNatureCode
  1320. insurancePolicyForm.value.vehicleUseCode = obj?.carInfoVo?.vehicleUseCode
  1321. insurancePolicyForm.value.plateType = obj?.carInfoVo?.carKindCode
  1322. insurancePolicyForm.value.carTypeCode = obj?.carInfoVo?.carTypeCode
  1323. insurancePolicyForm.value.energyTypeCode = obj?.carInfoVo?.energyTypeCode
  1324. insurancePolicyForm.value.registerDate = obj?.carInfoVo?.registerDate
  1325. insurancePolicyForm.value.issueDate = obj?.carInfoVo?.issueDate
  1326. insurancePolicyForm.value.completeKerbMass = obj?.carInfoVo?.completeKerbMass
  1327. insurancePolicyForm.value.limitLoad = obj?.carInfoVo?.limitLoad
  1328. insurancePolicyForm.value.seatCount = obj?.carInfoVo?.seatCount
  1329. insurancePolicyForm.value.carYear = obj?.carInfoVo?.carYear
  1330. insurancePolicyForm.value.purchasePrice = obj?.carInfoVo?.purchasePrice
  1331. insurancePolicyForm.value.displacement = obj?.carInfoVo?.displacement
  1332. insurancePolicyForm.value.powerScale = obj?.carInfoVo?.powerScale
  1333. // 车主信息
  1334. insurancePolicyForm.value.name1 = obj?.ownersInfo?.name
  1335. insurancePolicyForm.value.mobile1 = obj?.ownersInfo?.mobile
  1336. insurancePolicyForm.value.identifyType1 = obj?.ownersInfo?.identifyType
  1337. insurancePolicyForm.value.identifyNumber1 = obj?.ownersInfo?.identifyNumber
  1338. insurancePolicyForm.value.identifyValidDate1 = obj?.ownersInfo?.identifyValidDate
  1339. insurancePolicyForm.value.addr1 = obj?.ownersInfo?.addr
  1340. insurancePolicyForm.value.telephone1 = obj?.ownersInfo?.telephone
  1341. insurancePolicyForm.value.person1 = obj?.ownersInfo?.person
  1342. insurancePolicyForm.value.age1 = obj?.ownersInfo?.age
  1343. insurancePolicyForm.value.identifyValidEndDate1 = obj?.ownersInfo?.identifyValidEndDate
  1344. insurancePolicyForm.value.address1 = obj?.ownersInfo?.address
  1345. insurancePolicyForm.value.registeredCapital1 = obj?.ownersInfo?.registeredCapital
  1346. insurancePolicyForm.value.email1 = obj?.ownersInfo?.email
  1347. // 投保人信息
  1348. insurancePolicyForm.value.name2 = obj?.policyHolderInfo?.name
  1349. insurancePolicyForm.value.mobile2 = obj?.policyHolderInfo?.mobile
  1350. insurancePolicyForm.value.identifyType2 = obj?.policyHolderInfo?.identifyType
  1351. insurancePolicyForm.value.identifyNumber2 = obj?.policyHolderInfo?.identifyNumber
  1352. insurancePolicyForm.value.identifyValidDate2 = obj?.policyHolderInfo?.identifyValidDate
  1353. insurancePolicyForm.value.addr2 = obj?.policyHolderInfo?.addr
  1354. insurancePolicyForm.value.telephone2 = obj?.policyHolderInfo?.telephone
  1355. insurancePolicyForm.value.person2 = obj?.policyHolderInfo?.person
  1356. insurancePolicyForm.value.age2 = obj?.policyHolderInfo?.age
  1357. insurancePolicyForm.value.identifyValidEndDate2 = obj?.policyHolderInfo?.identifyValidEndDate
  1358. insurancePolicyForm.value.address2 = obj?.policyHolderInfo?.address
  1359. insurancePolicyForm.value.registeredCapital2 = obj?.policyHolderInfo?.registeredCapital
  1360. insurancePolicyForm.value.email2 = obj?.policyHolderInfo?.email
  1361. // 被保人信息
  1362. insurancePolicyForm.value.name3 = obj?.insuredPersonInfo?.name
  1363. insurancePolicyForm.value.mobile3 = obj?.insuredPersonInfo?.mobile
  1364. insurancePolicyForm.value.identifyType3 = obj?.insuredPersonInfo?.identifyType
  1365. insurancePolicyForm.value.identifyNumber3 = obj?.insuredPersonInfo?.identifyNumber
  1366. insurancePolicyForm.value.identifyValidDate3 = obj?.insuredPersonInfo?.identifyValidDate
  1367. insurancePolicyForm.value.addr3 = obj?.insuredPersonInfo?.addr
  1368. insurancePolicyForm.value.telephone3 = obj?.insuredPersonInfo?.telephone
  1369. insurancePolicyForm.value.person3 = obj?.insuredPersonInfo?.person
  1370. insurancePolicyForm.value.age3 = obj?.insuredPersonInfo?.age
  1371. insurancePolicyForm.value.identifyValidEndDate3 = obj?.insuredPersonInfo?.identifyValidEndDate
  1372. insurancePolicyForm.value.address3 = obj?.insuredPersonInfo?.address
  1373. insurancePolicyForm.value.registeredCapital3 = obj?.insuredPersonInfo?.registeredCapital
  1374. insurancePolicyForm.value.email3 = obj?.insuredPersonInfo?.email
  1375. btns.value.owner1.forEach(a => {
  1376. a.checked = false
  1377. })
  1378. btns.value.owner2.forEach(a => {
  1379. a.checked = false
  1380. })
  1381. if(obj?.ownersInfo?.identifyNumber == obj?.policyHolderInfo?.identifyNumber) {
  1382. btns.value.owner1[0].checked = true
  1383. btns.value.owner1Text = '同车主'
  1384. } else {
  1385. btns.value.owner1[1].checked = true
  1386. btns.value.owner1Text = '其他人'
  1387. }
  1388. if(obj?.ownersInfo?.identifyNumber == obj?.insuredPersonInfo?.identifyNumber) {
  1389. btns.value.owner2[1].checked = true
  1390. btns.value.owner1Text = '同车主'
  1391. } else if(obj?.policyHolderInfo?.identifyNumber == obj?.insuredPersonInfo?.identifyNumber) {
  1392. btns.value.owner2[0].checked = true
  1393. btns.value.owner1Text = '同投保人'
  1394. } else {
  1395. btns.value.owner2[2].checked = true
  1396. btns.value.owner1Text = '其他人'
  1397. }
  1398. // 车船税
  1399. insurancePolicyForm.value.extendChar2 = obj?.vehicleAndVesselTaxVo?.extendChar2
  1400. insurancePolicyForm.value.relifReason = obj?.vehicleAndVesselTaxVo?.relifReason
  1401. insurancePolicyForm.value.taxComCode = obj?.vehicleAndVesselTaxVo?.taxComCode
  1402. insurancePolicyForm.value.taxComName = obj?.vehicleAndVesselTaxVo?.taxComName
  1403. insurancePolicyForm.value.taxRelief = obj?.vehicleAndVesselTaxVo?.taxRelief
  1404. insurancePolicyForm.value.taxDocumentDate = obj?.vehicleAndVesselTaxVo?.taxDocumentDate
  1405. insurancePolicyForm.value.taxPaidAreaCode = obj?.vehicleAndVesselTaxVo?.taxPaidAreaCode
  1406. btns.value.owner3.forEach(a => {
  1407. a.checked = false
  1408. })
  1409. switch (obj?.vehicleAndVesselTaxVo?.taxRelifFlag) {
  1410. case '1':
  1411. btns.value.owner3[0].checked = true
  1412. btns.value.owner3show = '正常交税'
  1413. break;
  1414. case '2':
  1415. btns.value.owner3[1].checked = true
  1416. btns.value.owner3show = '免税'
  1417. break;
  1418. case '3':
  1419. btns.value.owner3[2].checked = true
  1420. btns.value.owner3show = '减税'
  1421. break;
  1422. case '4':
  1423. btns.value.owner3[3].checked = true
  1424. btns.value.owner3show = '完税'
  1425. break;
  1426. }
  1427. // 投保信息
  1428. insurancePolicyForm.value.productId = obj?.order?.productId
  1429. jqWork.value[0].checked = obj?.ciRiskInfoVo?.instantFlag
  1430. insurancePolicyForm.value.JQStartDate = obj?.ciRiskInfoVo?.startDate
  1431. insurancePolicyForm.value.JQEndDate = obj?.ciRiskInfoVo?.endDate
  1432. optionObj.value.insuranceType.forEach(a => {
  1433. if(a.value == obj?.order?.productId) {
  1434. a.checked = true
  1435. } else {
  1436. a.checked = false
  1437. }
  1438. })
  1439. let newObj = optionObj.value.insuranceType.find(a => a.checked)
  1440. if(newObj) {
  1441. ruleFilterCompany(newObj)
  1442. }
  1443. syWork.value[0].checked = obj?.biRiskInfoVo?.instantFlag
  1444. insurancePolicyForm.value.SYStartDate = obj?.biRiskInfoVo?.startDate
  1445. insurancePolicyForm.value.SYEndDate = obj?.biRiskInfoVo?.endDate
  1446. insurancePolicyForm.value.imageVoList = obj?.imageVoList
  1447. getQuoteNumber()
  1448. }
  1449. })
  1450. }
  1451. // 选择业务员
  1452. let salesmanShow = ref(false)
  1453. const handleFocus = () => {
  1454. salesmanShow.value = true
  1455. nextTick(() => {
  1456. SalesmanSelectRef.value.initEditData()
  1457. })
  1458. }
  1459. const handleSalesmanSelect = (data) => {
  1460. salesmanShow.value = false
  1461. if(data) {
  1462. if(insurancePolicyForm.value.salesman&&insurancePolicyForm.value.mobile&&insurancePolicyForm.value.deptId&&insurancePolicyForm.value.productId) {
  1463. quoteData.value = []
  1464. ruleFilterCompany({
  1465. value: insurancePolicyForm.value.productId
  1466. })
  1467. }
  1468. insurancePolicyForm.value.salesman = data.name
  1469. insurancePolicyForm.value.mobile = data.mobile
  1470. insurancePolicyForm.value.deptId = data.deptId
  1471. }
  1472. }
  1473. // 归属
  1474. let institutionList = ref([])
  1475. const tableProps = ref({
  1476. value: "id",
  1477. label: "name",
  1478. children: "children",
  1479. checkStrictly: true,
  1480. })
  1481. const initDept = () => {
  1482. api.insuranceApi.getDeptTree({ sysCode: localStorage.getItem('login_system')}).then((res: any) => {
  1483. if(res.code == 200) {
  1484. institutionList.value = res.data
  1485. } else {
  1486. ElMessage({
  1487. message: res.msg,
  1488. type: 'warning'
  1489. })
  1490. }
  1491. })
  1492. }
  1493. //折叠面板
  1494. let activeName = ref(['car','owner','owner1','owner2','tax','insurance','company','history'])
  1495. const InsurancePolicyRefs = ref<FormInstance>()
  1496. let insurancePolicyForm = ref({
  1497. systemType: '2',
  1498. propertyCode: '1',
  1499. isRegistered: '1',
  1500. // 车辆
  1501. licenseNo: '',
  1502. vinNo: '',
  1503. brandName: '',
  1504. engineNo: '',
  1505. carNatureCode: '',
  1506. vehicleUseCode: '',
  1507. carTypeCode: '',
  1508. plateType: '',
  1509. energyTypeCode: '',
  1510. registerDate: '',
  1511. issueDate: '',
  1512. completeKerbMass: '',
  1513. limitLoad: '',
  1514. seatCount: '',
  1515. carYear: '',
  1516. purchasePrice: '',
  1517. displacement: '',
  1518. powerScale: '',
  1519. carOwner: '',
  1520. // 险种类型
  1521. productId: '',
  1522. // 车主信息
  1523. name1: '',
  1524. mobile1: '',
  1525. identifyType1: '01',
  1526. identifyNumber1: '',
  1527. identifyValidDate1: '',
  1528. identifyValidEndDate1: '',
  1529. addr1: '',
  1530. telephone1: '',
  1531. person1: '',
  1532. age1: '',
  1533. address1: '',
  1534. registeredCapital1: '',
  1535. email1: '',
  1536. personType1: '1',
  1537. // 投保人信息
  1538. name2: '',
  1539. mobile2: '',
  1540. identifyType2: '01',
  1541. identifyNumber2: '',
  1542. identifyValidDate2: '',
  1543. identifyValidEndDate2: '',
  1544. addr2: '',
  1545. telephone2: '',
  1546. person2: '',
  1547. age2: '',
  1548. address2: '',
  1549. registeredCapital2: '',
  1550. email2: '',
  1551. personType2: '1',
  1552. // 被保人信息
  1553. name3: '',
  1554. mobile3: '',
  1555. identifyType3: '01',
  1556. identifyNumber3: '',
  1557. identifyValidDate3: '',
  1558. identifyValidEndDate3: '',
  1559. addr3: '',
  1560. telephone3: '',
  1561. person3: '',
  1562. age3: '',
  1563. address3: '',
  1564. registeredCapital3: '',
  1565. email3: '',
  1566. personType3: '1',
  1567. order: {},
  1568. // 车船税
  1569. taxRelifFlag: '1',
  1570. extendChar2: '',
  1571. relifReason: '',
  1572. taxComCode: '',
  1573. taxComName: '',
  1574. taxRelief: '',
  1575. taxDocumentDate: '',
  1576. taxPaidAreaCode: '',
  1577. taxpayerName: '',
  1578. taxpayerIdentifier: '',
  1579. identifyNumber: '',
  1580. JQRiskCode: '0507',
  1581. JQStartDate: '',
  1582. JQEndDate: '',
  1583. JQInstantFlag: false,
  1584. SYRiskCode: '0507',
  1585. SYStartDate: '',
  1586. SYEndDate: '',
  1587. SYInstantFlag: false,
  1588. imageVoList: []
  1589. })
  1590. let insurancePolicyRules = ref<FormRules>({
  1591. isRegistered: [
  1592. { required: true, trigger: 'change', message: '请选择车辆是否上牌' },
  1593. ],
  1594. licenseNo: [
  1595. { required: true, trigger: 'blur', message: '请输入车牌' }
  1596. ],
  1597. vinNo: [
  1598. { required: true, trigger: 'blur', message: '请输入车牌识别代码' }
  1599. ],
  1600. brandName: [
  1601. { required: true, trigger: 'blur', message: '请输入品牌型号' }
  1602. ],
  1603. engineNo: [
  1604. { required: true, trigger: 'blur', message: '请输入发动机号' }
  1605. ],
  1606. carNatureCode: [
  1607. { required: true, trigger: 'change', message: '请选择车辆是否上牌' },
  1608. ],
  1609. vehicleUseCode: [
  1610. { required: true, trigger: 'change', message: '请选择车辆是否上牌' },
  1611. ],
  1612. carTypeCode: [
  1613. { required: true, trigger: 'change', message: '请选择车辆是否上牌' },
  1614. ],
  1615. plateType: [
  1616. { required: true, trigger: 'change', message: '请选择车辆类型' },
  1617. ],
  1618. energyTypeCode: [
  1619. { required: true, trigger: 'change', message: '请选择能源种类' },
  1620. ],
  1621. registerDate: [
  1622. { required: true, trigger: 'change', message: '请选择注册日期' },
  1623. ],
  1624. issueDate: [
  1625. { required: true, trigger: 'change', message: '请选择发证日期' },
  1626. ],
  1627. completeKerbMass: [
  1628. { required: true, trigger: 'blur', message: '请输入整备质量' }
  1629. ],
  1630. limitLoad: [
  1631. { required: true, trigger: 'blur', message: '请输入核定载质量' }
  1632. ],
  1633. seatCount: [
  1634. { required: true, trigger: 'blur', message: '请输入座位数' }
  1635. ],
  1636. carYear: [
  1637. { required: true, trigger: 'blur', message: '请输入年款' }
  1638. ],
  1639. purchasePrice: [
  1640. { required: true, trigger: 'blur', message: '请输入新车购置价' }
  1641. ],
  1642. displacement: [
  1643. { required: true, trigger: 'blur', message: '请输入排量' }
  1644. ],
  1645. powerScale: [
  1646. { required: true, trigger: 'blur', message: '请输入功率' }
  1647. ],
  1648. name1: [
  1649. { required: true, trigger: 'blur', message: '请输入姓名' }
  1650. ],
  1651. mobile1: [
  1652. { required: true, trigger: 'blur', message: '请输入手机号' }
  1653. ],
  1654. personType1: [
  1655. { required: true, trigger: 'change', message: '请选择证件类型' }
  1656. ],
  1657. identifyNumber1: [
  1658. { required: true, trigger: 'blur', message: '请输入证件号' }
  1659. ],
  1660. identifyValidDate1: [
  1661. { required: true, trigger: 'change', message: '请选择有效期起期' }
  1662. ],
  1663. identifyValidEndDate1: [
  1664. { required: true, trigger: 'change', message: '请选择有效期止期' }
  1665. ],
  1666. addr1: [
  1667. { required: true, trigger: 'blur', message: '请输入地址' }
  1668. ],
  1669. name2: [
  1670. { required: true, trigger: 'blur', message: '请输入姓名' }
  1671. ],
  1672. mobile2: [
  1673. { required: true, trigger: 'blur', message: '请输入手机号' }
  1674. ],
  1675. personType2: [
  1676. { required: true, trigger: 'change', message: '请选择证件类型' }
  1677. ],
  1678. identifyNumber2: [
  1679. { required: true, trigger: 'blur', message: '请输入证件号' }
  1680. ],
  1681. identifyValidDate2: [
  1682. { required: true, trigger: 'change', message: '请选择有效期起期' }
  1683. ],
  1684. identifyValidEndDate2: [
  1685. { required: true, trigger: 'change', message: '请选择有效期止期' }
  1686. ],
  1687. addr2: [
  1688. { required: true, trigger: 'blur', message: '请输入地址' }
  1689. ],
  1690. name3: [
  1691. { required: true, trigger: 'blur', message: '请输入姓名' }
  1692. ],
  1693. mobile3: [
  1694. { required: true, trigger: 'blur', message: '请输入手机号' }
  1695. ],
  1696. personType3: [
  1697. { required: true, trigger: 'change', message: '请选择证件类型' }
  1698. ],
  1699. identifyNumber3: [
  1700. { required: true, trigger: 'blur', message: '请输入证件号' }
  1701. ],
  1702. identifyValidDate3: [
  1703. { required: true, trigger: 'change', message: '请选择有效期起期' }
  1704. ],
  1705. identifyValidEndDate3: [
  1706. { required: true, trigger: 'change', message: '请选择有效期止期' }
  1707. ],
  1708. addr3: [
  1709. { required: true, trigger: 'blur', message: '请输入地址' }
  1710. ],
  1711. extendChar2: [
  1712. { required: true, trigger: 'blur', message: '请输入' },
  1713. ],
  1714. relifReason: [
  1715. { required: true, trigger: 'blur', message: '请输入' }
  1716. ],
  1717. taxComCode: [
  1718. { required: true, trigger: 'blur', message: '请输入' }
  1719. ],
  1720. taxComName: [
  1721. { required: true, trigger: 'blur', message: '请输入' }
  1722. ],
  1723. taxRelief: [
  1724. { required: true, trigger: 'blur', message: '请输入' }
  1725. ],
  1726. taxDocumentDate: [
  1727. { required: true, trigger: 'change', message: '请选择' }
  1728. ],
  1729. taxPaidAreaCode: [
  1730. { required: true, trigger: 'change', message: '请选择' }
  1731. ]
  1732. })
  1733. // 使用性质,车辆用途,车辆类型,能源种类,车辆种类
  1734. let optionObj = ref({
  1735. vehicle_use_code: [], // 车辆用途
  1736. car_nature_code: [], // 使用性质
  1737. energy_type_code: [], // 能源种类
  1738. car_kind_code: [], // 车辆种类
  1739. vehicleType: [],
  1740. taxpayerIdentifier: [], // 证件类型
  1741. insuranceType: [], // 险种类型
  1742. car_type_code: [], // 车辆类型
  1743. })
  1744. // 地区
  1745. const areaOptins = ref([]);
  1746. const areaProps = ref({
  1747. value: "areaCode",
  1748. label: "areaCname",
  1749. children: "child",
  1750. });
  1751. const getAreaList = () => {
  1752. api.areaApi.areaList({}).then((res) => {
  1753. areaOptins.value = res.data;
  1754. });
  1755. };
  1756. // 车牌识别
  1757. let licenseNoShow = ref(false)
  1758. let licenseNoData = ref([])
  1759. const handleCarNumber = () => {
  1760. api.additionalApi.vinSearch(insurancePolicyForm.value.vinNo).then((res: any) => {
  1761. if(res.code == 200) {
  1762. licenseNoShow.value = true
  1763. licenseNoData.value = res.data
  1764. } else {
  1765. ElMessage({
  1766. message: res.msg,
  1767. type: 'warning'
  1768. })
  1769. }
  1770. })
  1771. }
  1772. let selectRowData = ref({})
  1773. const handleSelectedRow = (row: any, column: any) => {
  1774. licenseNoData.value.forEach((item) => {
  1775. LicenseNoTable.value.toggleRowSelection(item, false)
  1776. })
  1777. LicenseNoTable.value.toggleRowSelection(row, true)
  1778. selectRowData.value = row
  1779. }
  1780. const handleSelectedChange = (rows: any, row: any) => {
  1781. licenseNoData.value.forEach((item) => {
  1782. LicenseNoTable.value.toggleRowSelection(item, false)
  1783. })
  1784. LicenseNoTable.value.toggleRowSelection(row, true)
  1785. selectRowData.value = row
  1786. }
  1787. const licenseNoDataCancel = () => {
  1788. selectRowData.value = {}
  1789. licenseNoShow.value = false
  1790. }
  1791. const licenseNoDataSubmit = () => {
  1792. console.log(123123123, selectRowData.value)
  1793. insurancePolicyForm.value.seatCount = selectRowData.value.ratedPassengerCapacity
  1794. insurancePolicyForm.value.brandName = selectRowData.value.modelName
  1795. insurancePolicyForm.value.carYear = selectRowData.value.marketYear
  1796. insurancePolicyForm.value.purchasePrice = selectRowData.value.replacementValue
  1797. insurancePolicyForm.value.displacement = selectRowData.value.displacement
  1798. insurancePolicyForm.value.powerScale = selectRowData.value.powerScale
  1799. licenseNoShow.value = false
  1800. }
  1801. // 车架号识别
  1802. const handleCarCode = () => {
  1803. api.additionalApi.licenseSearch({
  1804. modelName: insurancePolicyForm.value.brandName.replace(/[^u4e00-u9fa5|,]+/gi, "")
  1805. }).then((res: any) => {
  1806. if(res.code == 200) {
  1807. licenseNoShow.value = true
  1808. licenseNoData.value = res.data
  1809. } else {
  1810. ElMessage({
  1811. message: res.msg,
  1812. type: 'warning'
  1813. })
  1814. }
  1815. })
  1816. }
  1817. // 获取报价号
  1818. const getQuoteNumber = () => {
  1819. if(insurancePolicyForm.value.licenseNo&&insurancePolicyForm.value.vinNo&&insurancePolicyForm.value.engineNo) {
  1820. api.insurancePolicyApi.getQuoteNo({
  1821. licenseNo: insurancePolicyForm.value.licenseNo,
  1822. vinNo: insurancePolicyForm.value.vinNo,
  1823. engineNo: insurancePolicyForm.value.engineNo
  1824. }).then((res: any) => {
  1825. if(res.code == 200) {
  1826. // insuranceCompanyCode
  1827. insurancePolicyForm.value.order.quoteNo = res.msg
  1828. } else {
  1829. ElMessage({
  1830. message: res.msg,
  1831. type: "warning"
  1832. })
  1833. }
  1834. })
  1835. }
  1836. }
  1837. const longTime = () => {
  1838. insurancePolicyForm.value.identifyValidEndDate1 = '9999-12-31'
  1839. }
  1840. // 是否同车主/同投保人
  1841. let btns = ref({
  1842. owner1Show: true,
  1843. owner2show: true,
  1844. owner1Text: '同车主',
  1845. owner2Text: '同投保人',
  1846. owner3show: '正常交税',
  1847. owner1: [{
  1848. text: '同车主',
  1849. checked: true
  1850. },{
  1851. text: '其他人',
  1852. checked: false
  1853. },],
  1854. owner2: [{
  1855. text: '同投保人',
  1856. checked: true
  1857. },{
  1858. text: '同车主',
  1859. checked: false
  1860. },{
  1861. text: '其他人',
  1862. checked: false
  1863. }],
  1864. owner3: [{
  1865. text: '正常交税',
  1866. checked: true
  1867. },{
  1868. text: '免税',
  1869. checked: false
  1870. },{
  1871. text: '减税',
  1872. checked: false
  1873. },{
  1874. text: '完税',
  1875. checked: false
  1876. }],
  1877. })
  1878. const handleChange = (item, type) => {
  1879. switch (type) {
  1880. case 'owner1':
  1881. item.checked = !item.checked
  1882. let list1 = btns.value.owner1.filter(a => a.text != item.text)
  1883. list1.forEach(a => a.checked = false)
  1884. btns.value.owner1Show = btns.value.owner1.some(a => a.checked)
  1885. let obj1 = btns.value.owner1.find(a => a.checked)
  1886. btns.value.owner1Text = obj1.text
  1887. if(obj1.text === '同车主') {
  1888. insurancePolicyForm.value.name2 = insurancePolicyForm.value.name1
  1889. insurancePolicyForm.value.mobile2 = insurancePolicyForm.value.mobile1
  1890. insurancePolicyForm.value.identifyType2 = insurancePolicyForm.value.identifyType1
  1891. insurancePolicyForm.value.identifyNumber2 = insurancePolicyForm.value.identifyNumber1
  1892. insurancePolicyForm.value.identifyValidDate2 = insurancePolicyForm.value.identifyValidDate1
  1893. insurancePolicyForm.value.identifyValidEndDate2 = insurancePolicyForm.value.identifyValidEndDate1
  1894. insurancePolicyForm.value.addr2 = insurancePolicyForm.value.addr1
  1895. insurancePolicyForm.value.telephone2 = insurancePolicyForm.value.telephone1
  1896. insurancePolicyForm.value.person2 = insurancePolicyForm.value.person1
  1897. insurancePolicyForm.value.age2 = insurancePolicyForm.value.age1
  1898. insurancePolicyForm.value.address2 = insurancePolicyForm.value.address1
  1899. insurancePolicyForm.value.registeredCapital2 = insurancePolicyForm.value.registeredCapital1
  1900. insurancePolicyForm.value.email2 = insurancePolicyForm.value.email1
  1901. }
  1902. break;
  1903. case 'owner2':
  1904. item.checked = !item.checked
  1905. let list2 = btns.value.owner2.filter(a => a.text != item.text)
  1906. list2.forEach(a => a.checked = false)
  1907. btns.value.owner2show = btns.value.owner2.some(a => a.checked)
  1908. let obj2 = btns.value.owner2.find(a => a.checked)
  1909. btns.value.owner2Text = obj2.text
  1910. if(obj2.text === '同车主') {
  1911. insurancePolicyForm.value.name3 = insurancePolicyForm.value.name1
  1912. insurancePolicyForm.value.mobile3 = insurancePolicyForm.value.mobile1
  1913. insurancePolicyForm.value.identifyType3 = insurancePolicyForm.value.identifyType1
  1914. insurancePolicyForm.value.identifyNumber3 = insurancePolicyForm.value.identifyNumber1
  1915. insurancePolicyForm.value.identifyValidDate3 = insurancePolicyForm.value.identifyValidDate1
  1916. insurancePolicyForm.value.identifyValidEndDate3 = insurancePolicyForm.value.identifyValidEndDate1
  1917. insurancePolicyForm.value.addr3 = insurancePolicyForm.value.addr1
  1918. insurancePolicyForm.value.telephone3 = insurancePolicyForm.value.telephone1
  1919. insurancePolicyForm.value.person3 = insurancePolicyForm.value.person1
  1920. insurancePolicyForm.value.age3 = insurancePolicyForm.value.age1
  1921. insurancePolicyForm.value.address3 = insurancePolicyForm.value.address1
  1922. insurancePolicyForm.value.registeredCapital3 = insurancePolicyForm.value.registeredCapital1
  1923. insurancePolicyForm.value.email3 = insurancePolicyForm.value.email1
  1924. }
  1925. if(obj2.text === '同投保人') {
  1926. insurancePolicyForm.value.name3 = insurancePolicyForm.value.name2
  1927. insurancePolicyForm.value.mobile3 = insurancePolicyForm.value.mobile2
  1928. insurancePolicyForm.value.identifyType3 = insurancePolicyForm.value.identifyType2
  1929. insurancePolicyForm.value.identifyNumber3 = insurancePolicyForm.value.identifyNumber2
  1930. insurancePolicyForm.value.identifyValidDate3 = insurancePolicyForm.value.identifyValidDate2
  1931. insurancePolicyForm.value.identifyValidEndDate3 = insurancePolicyForm.value.identifyValidEndDate2
  1932. insurancePolicyForm.value.addr3 = insurancePolicyForm.value.addr2
  1933. insurancePolicyForm.value.telephone3 = insurancePolicyForm.value.telephone2
  1934. insurancePolicyForm.value.person3 = insurancePolicyForm.value.person2
  1935. insurancePolicyForm.value.age3 = insurancePolicyForm.value.age2
  1936. insurancePolicyForm.value.address3 = insurancePolicyForm.value.address2
  1937. insurancePolicyForm.value.registeredCapital3 = insurancePolicyForm.value.registeredCapital2
  1938. insurancePolicyForm.value.email3 = insurancePolicyForm.value.email2
  1939. }
  1940. break;
  1941. case 'owner3':
  1942. item.checked = true
  1943. let list3 = btns.value.owner3.filter(a => a.text != item.text)
  1944. list3.forEach(a => a.checked = false)
  1945. btns.value.owner3show = btns.value.owner3.find(a => a.checked)?.text
  1946. insurancePolicyForm.value.taxRelifFlag = btns.value.owner3show === '正常交税'?'1':btns.value.owner3show === '免税'?'2':btns.value.owner3show === '减税'?'3':btns.value.owner3show === '完税'?'4':''
  1947. break;
  1948. case 'insurance':
  1949. ruleFilterCompany(item)
  1950. let list4 = optionObj.value.insuranceType.filter(a => a.label != item.label)
  1951. list4.forEach(a => a.checked = false)
  1952. item.checked = true
  1953. insurancePolicyForm.value.productId = item.value
  1954. if(insurancePolicyForm.value.productId === '0330' || insurancePolicyForm.value.productId === '0330034001' || insurancePolicyForm.value.productId === '0330034002') {
  1955. let date = new Date()
  1956. let year = date.getFullYear()
  1957. let month = date.getMonth() + 1<10?`0${date.getMonth() + 1}`:date.getMonth() + 1
  1958. let day = date.getDate() + 1< 10?`0${date.getDate() + 1}`:date.getDate() + 1
  1959. insurancePolicyForm.value.JQStartDate = `${year}-${month}-${day} 00:00:00`
  1960. insurancePolicyForm.value.JQEndDate = `${year + 1}-${month}-${day - 1} 23:59:59`
  1961. }
  1962. if(insurancePolicyForm.value.productId === '034001' || insurancePolicyForm.value.productId === '034002' || insurancePolicyForm.value.productId === '0330034001' || insurancePolicyForm.value.productId === '0330034002') {
  1963. let date = new Date()
  1964. let year = date.getFullYear()
  1965. let month = date.getMonth() + 1<10?`0${date.getMonth() + 1}`:date.getMonth() + 1
  1966. let day = date.getDate() + 1< 10?`0${date.getDate() + 1}`:date.getDate() + 1
  1967. insurancePolicyForm.value.SYStartDate = `${year}-${month}-${day} 00:00:00`
  1968. insurancePolicyForm.value.SYEndDate = `${year + 1}-${month}-${day - 1} 23:59:59`
  1969. }
  1970. break;
  1971. }
  1972. }
  1973. const initOption = () => {
  1974. let list = ['vehicle_use_code', 'car_nature_code', 'energy_type_code', 'car_kind_code', 'car_type_code']
  1975. list.forEach(item => {
  1976. api.additionalApi.dictDetails(item).then((res: any) => {
  1977. if(res.code == 200) {
  1978. if(res.data) {
  1979. optionObj.value[item] = res.data
  1980. }
  1981. }
  1982. })
  1983. })
  1984. api.commonApi.personInfo('insurance_type').then((res: any) => {
  1985. if(res.code == 200) {
  1986. if(res.data&&res.data.length>0) {
  1987. res.data.forEach(a => {
  1988. a.checked = false
  1989. })
  1990. optionObj.value.insuranceType = res.data
  1991. }
  1992. } else {
  1993. ElMessage({
  1994. message: res.msg,
  1995. type: 'warning'
  1996. })
  1997. }
  1998. })
  1999. }
  2000. // 交强即时生效
  2001. let jqWork = ref([
  2002. { text: '即时生效', checked: false }
  2003. ])
  2004. // 根据身份证号换算年龄
  2005. const getAgeByIdCard = (idCard: any, type?: any) => {
  2006. //获取用户身份证号码
  2007. const userCard = idCard
  2008. //如果用户身份证号码为undefined则返回空
  2009. if (!userCard) {
  2010. return ''
  2011. }
  2012. // 获取出生日期
  2013. const yearBirth = userCard.substring(6, 10)
  2014. const monthBirth = userCard.substring(10, 12)
  2015. const dayBirth = userCard.substring(12, 14)
  2016. // 获取当前年月日并计算年龄
  2017. const myDate = new Date()
  2018. const monthNow = myDate.getMonth() + 1
  2019. const dayNow = myDate.getDate()
  2020. let age = myDate.getFullYear() - yearBirth
  2021. if (monthNow > monthBirth || (monthNow == monthBirth && dayNow > dayBirth)) {
  2022. age++
  2023. }
  2024. // type.age = age
  2025. return age
  2026. }
  2027. const noeYearPast = (time) => {
  2028. let strYear: any = time.getFullYear();
  2029. let strDay: any = time.getDate();
  2030. let strMonth: any = time.getMonth() + 1;
  2031. let hh: any = time.getHours();
  2032. let minutes: any = time.getMinutes(); // 分
  2033. let Seconds: any = time.getSeconds();
  2034. if (hh < 10) {
  2035. hh = "0" + hh;
  2036. }
  2037. if (minutes < 10) {
  2038. minutes = "0" + minutes;
  2039. }
  2040. if (Seconds < 10) {
  2041. Seconds = "0" + Seconds;
  2042. }
  2043. if (strMonth < 10) {
  2044. strMonth = "0" + strMonth;
  2045. }
  2046. if (strDay < 10) {
  2047. strDay = "0" + strDay;
  2048. }
  2049. let datastr =
  2050. strYear +
  2051. "-" +
  2052. strMonth +
  2053. "-" +
  2054. strDay +
  2055. " " +
  2056. hh +
  2057. ":" +
  2058. minutes +
  2059. ":" +
  2060. Seconds;
  2061. return datastr;
  2062. }
  2063. const oneYearPast1 = (time) => {
  2064. //明年减一秒
  2065. let date = new Date(time);
  2066. date.setSeconds(date.getSeconds() - 1);
  2067. date.setFullYear(date.getFullYear() + 1); //一年后
  2068. date.setTime(date.getTime()); //一年后的前一天
  2069. let strYear: any = date.getFullYear();
  2070. let strDay: any = date.getDate();
  2071. let strMonth: any = date.getMonth() + 1;
  2072. let hh: any = date.getHours();
  2073. let minutes: any = date.getMinutes(); // 分
  2074. let Seconds: any = date.getSeconds();
  2075. if (hh < 10) {
  2076. hh = "0" + hh;
  2077. }
  2078. if (minutes < 10) {
  2079. minutes = "0" + minutes;
  2080. }
  2081. if (Seconds < 10) {
  2082. Seconds = "0" + Seconds;
  2083. }
  2084. if (strMonth < 10) {
  2085. strMonth = "0" + strMonth;
  2086. }
  2087. if (strDay < 10) {
  2088. strDay = "0" + strDay;
  2089. }
  2090. let datastr =
  2091. strYear +
  2092. "-" +
  2093. strMonth +
  2094. "-" +
  2095. strDay +
  2096. " " +
  2097. hh +
  2098. ":" +
  2099. minutes +
  2100. ":" +
  2101. Seconds;
  2102. return datastr;
  2103. }
  2104. //当前日期的次日
  2105. const transformTime1 = () => {
  2106. let date = new Date();
  2107. date.setFullYear(date.getFullYear());
  2108. date.setTime(date.getTime() + 24 * 60 * 60 * 1000);
  2109. let strYear: any = date.getFullYear();
  2110. let strDay: any = date.getDate();
  2111. let strMonth: any = date.getMonth() + 1;
  2112. let hh: any = date.getHours();
  2113. if (hh < 10) {
  2114. hh = "0" + hh;
  2115. }
  2116. if (strMonth < 10) {
  2117. strMonth = "0" + strMonth;
  2118. }
  2119. if (strDay < 10) {
  2120. strDay = "0" + strDay;
  2121. }
  2122. let datastr = strYear + "-" + strMonth + "-" + strDay + " " + "00:00:00";
  2123. return datastr;
  2124. }
  2125. const JQChange = (item) => {
  2126. item.checked = !item.checked
  2127. if(jqWork.value.some( a => a.checked )) {
  2128. let date: any = new Date();
  2129. date.setHours(date.getHours() + 2);
  2130. date.setMinutes(0);
  2131. date.setSeconds(0);
  2132. insurancePolicyForm.value.JQStartDate = noeYearPast(date)
  2133. insurancePolicyForm.value.JQEndDate = oneYearPast1(date)
  2134. insurancePolicyForm.value.JQInstantFlag = true
  2135. } else {
  2136. insurancePolicyForm.value.JQStartDate = transformTime1()
  2137. insurancePolicyForm.value.JQEndDate = oneYearPast1(insurancePolicyForm.value.JQStartDate)
  2138. insurancePolicyForm.value.JQInstantFlag = false
  2139. }
  2140. }
  2141. // 商业即时生效
  2142. let syWork = ref([
  2143. { text: '即时生效', checked: false }
  2144. ])
  2145. const SYChange = (item) => {
  2146. item.checked = !item.checked
  2147. if(syWork.value.some( a => a.checked )) {
  2148. let date: any = new Date();
  2149. date.setHours(date.getHours() + 2);
  2150. date.setMinutes(0);
  2151. date.setSeconds(0);
  2152. insurancePolicyForm.value.SYStartDate = noeYearPast(date)
  2153. insurancePolicyForm.value.SYEndDate = oneYearPast1(date)
  2154. insurancePolicyForm.value.SYInstantFlag = true
  2155. } else {
  2156. insurancePolicyForm.value.SYStartDate = transformTime1()
  2157. insurancePolicyForm.value.SYEndDate = oneYearPast1(insurancePolicyForm.value.SYStartDate)
  2158. insurancePolicyForm.value.SYInstantFlag = false
  2159. }
  2160. }
  2161. // 报价公司
  2162. let currentRow = ref([])
  2163. let quoteData = ref([])
  2164. const handleSelect = (a, b) => {
  2165. // currentRow.value = a
  2166. // insurancePolicyForm.value.order.insuranceCompanyCode = a[0].id
  2167. }
  2168. const handelSelectRow = (a, b) => {
  2169. currentRow.value = a
  2170. if(a.some(c => c.id === b.id)) {
  2171. insurancePolicyForm.value.order.insuranceCompanyCode = b.id
  2172. if(insurancePolicyForm.value.productId) {
  2173. api.insurancePolicyApi.getSchemeResult({
  2174. companyId: b.id,
  2175. productId: insurancePolicyForm.value.productId
  2176. }).then((res: any) => {
  2177. if(res.data?.schemes) {
  2178. res.data?.schemes.forEach(item => {
  2179. item.checked = false
  2180. })
  2181. }
  2182. quoteData.value.forEach(item => {
  2183. if(item.id === b.id) {
  2184. item.projectList = res.data.schemes
  2185. }
  2186. })
  2187. })
  2188. }
  2189. } else {
  2190. insurancePolicyForm.value.order.insuranceCompanyCode = ''
  2191. }
  2192. }
  2193. const handleClickRow = (a, b) => {
  2194. }
  2195. // 选择险种
  2196. let insuranceShow = ref(false)
  2197. const handlePopover = (scope) => {
  2198. insuranceShow.value = true
  2199. nextTick(() => {
  2200. InsuranceTypeRef.value.initEditData(scope.row.projectList[productIndex.value].kinds)
  2201. })
  2202. }
  2203. // 删除险种
  2204. const handleInsuranceDel = (scope, props) => {
  2205. let obj = scope.row.projectList[productIndex.value].kinds.filter(a => a.id != props.row.id)
  2206. quoteData.value.forEach(a => {
  2207. if(a.id === scope.row.id) {
  2208. a.projectList[productIndex.value].kinds = obj
  2209. }
  2210. })
  2211. }
  2212. const handleClose = (data) => {
  2213. insuranceShow.value = false
  2214. if(data&&data.list.length>0) {
  2215. data.list.forEach(item => {
  2216. let obj = item.options.find(a => a.checked)
  2217. item.amount = obj.value
  2218. item.unitAmount = obj.value
  2219. })
  2220. }
  2221. quoteData.value.forEach(a => {
  2222. if(insurancePolicyForm.value.order.insuranceCompanyCode === a.id) {
  2223. a.projectList[productIndex.value].kinds = data.list
  2224. }
  2225. })
  2226. }
  2227. // 选择驾意险
  2228. let drivingShow = ref(false)
  2229. let drivingRow = ref(0)
  2230. let JYXDetailShow = ref(false)
  2231. const handleDriving = (scope) => {
  2232. drivingRow.value = scope.$index
  2233. drivingShow.value = true
  2234. nextTick(() => {
  2235. DrivingTypeRef.value.initEditData(scope.row.projectList[productIndex.value].drivings, 0, insurancePolicyForm.value.order.insuranceCompanyCode)
  2236. })
  2237. }
  2238. // 删除驾意险
  2239. const handleDrivingDel = (scope, props) => {
  2240. let obj = scope.row.projectList[productIndex.value].drivings.filter(a => a.id != props.row.id)
  2241. quoteData.value.forEach(a => {
  2242. if(a.id === scope.row.id) {
  2243. a.projectList[productIndex.value].drivings = obj
  2244. }
  2245. })
  2246. }
  2247. // 驾意险详情
  2248. const getJYXDetail = (row) => {
  2249. JYXDetailShow.value = true
  2250. nextTick(() => {
  2251. JYXDetail.value.initData(row.drivingIntentionId)
  2252. })
  2253. }
  2254. const handleDrivingClose = (data) => {
  2255. if(data&&data.list.length>0) {
  2256. data.list.forEach(a => {
  2257. a.quantity = 1
  2258. })
  2259. quoteData.value[drivingRow.value].projectList[productIndex.value].drivings = [...data.list]
  2260. }
  2261. drivingShow.value = false
  2262. }
  2263. // 选择特约
  2264. let specialIndex = ref(-1)
  2265. let specialShow = ref(false)
  2266. let specialTableData = ref([])
  2267. let specialSelectList = ref([])
  2268. const handleSelectSpecial = (scope) => {
  2269. specialIndex.value = scope.$index
  2270. specialShow.value = true
  2271. api.insurancePolicyApi.getClausePage({
  2272. pages: 1,
  2273. size: 99999,
  2274. companyId: scope.row.id,//id
  2275. clauseName: "",//特约名称
  2276. riskCode: "",//特约类型
  2277. clauseCode: "",//特约编码
  2278. clauseContent: "",//特约内容
  2279. }).then((res: any) => {
  2280. if(res.code == 200) {
  2281. specialTableData.value = res.data.records
  2282. }
  2283. })
  2284. }
  2285. const handleSpecialSelectChage = (a) => {
  2286. specialSelectList.value = [...a]
  2287. }
  2288. const handleSpecialTableDataCancel = () => {
  2289. specialSelectList.value = []
  2290. specialShow.value = false
  2291. }
  2292. const handleSpecialTableDataSubmit = () => {
  2293. if(specialSelectList.value.length>0) {
  2294. quoteData.value[specialIndex.value].specialSelectedList = [...specialSelectList.value]
  2295. specialShow.value = false
  2296. } else {
  2297. ElMessage({
  2298. message: '请选择特约!',
  2299. type: 'warning'
  2300. })
  2301. }
  2302. }
  2303. let productIndex = ref(0)
  2304. const handleProduct = (e, index) => {
  2305. productIndex.value = index
  2306. }
  2307. // 报价历史
  2308. let tableData = ref([])
  2309. // 分享
  2310. let shareShow = ref(false)
  2311. const handleShare = (scope) => {
  2312. shareShow.value = true
  2313. }
  2314. const handleSaveImage = () => {
  2315. shareShow.value = false
  2316. }
  2317. const handleCopyLink = () => {
  2318. shareShow.value = false
  2319. }
  2320. // 优惠测算
  2321. let calculatingShow = ref(false)
  2322. const handleCount = (scope) => {
  2323. calculatingShow.value = true
  2324. }
  2325. // 提交核保
  2326. let underwritingShow = ref(false)
  2327. const handleUnderwriting = (scope) => {
  2328. underwritingShow.value = true
  2329. // insurancePolicyForm.value.imageVoList
  2330. let data = {
  2331. // ordersNo: '1915570359429222400'
  2332. ordersNo: scope.row.quoteResult.ordersNo,
  2333. quoteNo: insurancePolicyForm.value.order.quoteNo
  2334. }
  2335. nextTick(() => {
  2336. UnderwritingRefs.value.initEdit({
  2337. ...data,
  2338. list: images.value
  2339. })
  2340. })
  2341. api.insurancePolicyApi.imagesUpload({
  2342. order: {
  2343. ...data
  2344. }
  2345. }).then((res: any) => {
  2346. if(res.code === 200) {
  2347. nextTick(() => {
  2348. UnderwritingRefs.value.initEdit(data)
  2349. })
  2350. } else {
  2351. ElMessage({
  2352. message: res.msg,
  2353. type: 'warning'
  2354. })
  2355. }
  2356. })
  2357. }
  2358. const handleUnderwritingClose = () => {
  2359. underwritingShow.value = false
  2360. }
  2361. // 证件识别
  2362. let imageShow = ref(false)
  2363. let images = ref([])
  2364. const handleImageClose = (data) => {
  2365. imageShow.value = false
  2366. images.value = []
  2367. if(data) {
  2368. const { carForm, owerForm, ower1Form, ower2Form, imageVoList, list } = data
  2369. if(carForm) {
  2370. insurancePolicyForm.value.isRegistered = '1'
  2371. insurancePolicyForm.value.licenseNo = carForm.licenseNo
  2372. insurancePolicyForm.value.vinNo = carForm.vinNo
  2373. insurancePolicyForm.value.brandName = carForm.brandName
  2374. insurancePolicyForm.value.engineNo = carForm.engineNo
  2375. insurancePolicyForm.value.carNatureCode = carForm.carNatureCode
  2376. insurancePolicyForm.value.vehicleUseCode = carForm.vehicleUseCode
  2377. insurancePolicyForm.value.carTypeCode = carForm.carTypeCode
  2378. insurancePolicyForm.value.plateType = carForm.plateType
  2379. insurancePolicyForm.value.energyTypeCode = carForm.energyTypeCode
  2380. insurancePolicyForm.value.registerDate = carForm.registerDate
  2381. insurancePolicyForm.value.issueDate = carForm.issueDate
  2382. insurancePolicyForm.value.completeKerbMass = carForm.completeKerbMass
  2383. insurancePolicyForm.value.limitLoad = carForm.limitLoad
  2384. insurancePolicyForm.value.seatCount = carForm.seatCount
  2385. insurancePolicyForm.value.carYear = carForm.carYear
  2386. insurancePolicyForm.value.purchasePrice = carForm.purchasePrice
  2387. insurancePolicyForm.value.displacement = carForm.displacement
  2388. insurancePolicyForm.value.powerScale = carForm.powerScale
  2389. insurancePolicyForm.value.carOwner = carForm.carOwner
  2390. if(carForm.licenseNo&&carForm.vinNo&&carForm.engineNo) {
  2391. getQuoteNumber()
  2392. }
  2393. }
  2394. if(owerForm) {
  2395. insurancePolicyForm.value.name1 = owerForm.name
  2396. insurancePolicyForm.value.mobile1 = owerForm.mobile
  2397. insurancePolicyForm.value.identifyType1 = owerForm.identifyType
  2398. insurancePolicyForm.value.identifyNumber1 = owerForm.identifyNumber
  2399. insurancePolicyForm.value.identifyValidDate1 = owerForm.identifyValidDate
  2400. insurancePolicyForm.value.identifyValidEndDate1 = owerForm.identifyValidEndDate
  2401. insurancePolicyForm.value.addr1 = owerForm.addr
  2402. insurancePolicyForm.value.telephone1 = owerForm.telephone
  2403. insurancePolicyForm.value.person1 = owerForm.person
  2404. insurancePolicyForm.value.age1 = owerForm.age
  2405. insurancePolicyForm.value.address1 = owerForm.address
  2406. insurancePolicyForm.value.registeredCapital1 = owerForm.registeredCapital
  2407. insurancePolicyForm.value.email1 = owerForm.email
  2408. insurancePolicyForm.value.taxpayerName = owerForm.name
  2409. insurancePolicyForm.value.taxpayerIdentifier = owerForm.identifyType
  2410. insurancePolicyForm.value.identifyNumber = owerForm.identifyNumber
  2411. }
  2412. if(ower1Form) {
  2413. insurancePolicyForm.value.name2 = ower1Form.name
  2414. insurancePolicyForm.value.mobile2 = ower1Form.mobile
  2415. insurancePolicyForm.value.identifyType2 = ower1Form.identifyType
  2416. insurancePolicyForm.value.identifyNumber2 = ower1Form.identifyNumber
  2417. insurancePolicyForm.value.identifyValidDate2 = ower1Form.identifyValidDate
  2418. insurancePolicyForm.value.identifyValidEndDate2 = ower1Form.identifyValidEndDate
  2419. insurancePolicyForm.value.addr2 = ower1Form.addr
  2420. insurancePolicyForm.value.telephone2 = ower1Form.telephone
  2421. insurancePolicyForm.value.person2 = ower1Form.person
  2422. insurancePolicyForm.value.age2 = ower1Form.age
  2423. insurancePolicyForm.value.address2 = ower1Form.address
  2424. insurancePolicyForm.value.registeredCapital2 = ower1Form.registeredCapital
  2425. insurancePolicyForm.value.email2 = ower1Form.email
  2426. }
  2427. if(ower2Form) {
  2428. insurancePolicyForm.value.name3 = ower2Form.name
  2429. insurancePolicyForm.value.mobile3 = ower2Form.mobile
  2430. insurancePolicyForm.value.identifyType3 = ower2Form.identifyType
  2431. insurancePolicyForm.value.identifyNumber3 = ower2Form.identifyNumber
  2432. insurancePolicyForm.value.identifyValidDate3 = ower2Form.identifyValidDate
  2433. insurancePolicyForm.value.identifyValidEndDate3 = ower2Form.identifyValidEndDate
  2434. insurancePolicyForm.value.addr3 = ower2Form.addr
  2435. insurancePolicyForm.value.telephone3 = ower2Form.telephone
  2436. insurancePolicyForm.value.person3 = ower2Form.person
  2437. insurancePolicyForm.value.age3 = ower2Form.age
  2438. insurancePolicyForm.value.address3 = ower2Form.address
  2439. insurancePolicyForm.value.registeredCapital3 = ower2Form.registeredCapital
  2440. insurancePolicyForm.value.email3 = ower2Form.email
  2441. }
  2442. if(imageVoList&&imageVoList.length>0) {
  2443. insurancePolicyForm.value.imageVoList = imageVoList.filter(a => a.imageBase64List[0].imageId)
  2444. }
  2445. if(list&&list.length>0) {
  2446. images.value = list
  2447. }
  2448. }
  2449. }
  2450. const handleRecognition = () => {
  2451. imageShow.value = true
  2452. }
  2453. // 提交
  2454. let loading = ref(false)
  2455. const handleSubmit = async (InsurancePolicyRefs: FormInstance | undefined, scope) => {
  2456. if(!InsurancePolicyRefs) {
  2457. InsurancePolicyRefs?.resetFields()
  2458. return
  2459. }
  2460. await InsurancePolicyRefs.validate((valid) => {
  2461. if(valid) {
  2462. loading.value = true
  2463. quoteData.value[scope.$index].loading = true
  2464. let arr = [], brr = [], crr = []
  2465. if(quoteData.value.length>0) {
  2466. let obj = quoteData.value.find(a => a.id === insurancePolicyForm.value.order.insuranceCompanyCode)
  2467. obj.projectList[productIndex.value].kinds?.forEach(a => {
  2468. arr.push(a)
  2469. })
  2470. obj.projectList[productIndex.value].drivings?.forEach(a => {
  2471. brr.push(a)
  2472. })
  2473. if(obj.specialSelectedList?.length > 0) {
  2474. obj.specialSelectedList.forEach(a => {
  2475. crr.push(a)
  2476. })
  2477. }
  2478. // obj.projectList?.forEach(sub => {
  2479. // sub.kinds?.forEach(max => {
  2480. // arr.push(max)
  2481. // })
  2482. // sub.drivings?.forEach(max => {
  2483. // brr.push(max)
  2484. // })
  2485. // })
  2486. }
  2487. let obj1 = btns.value.owner1.find(a => a.checked)
  2488. btns.value.owner1Text = obj1.text
  2489. if(obj1.text === '同车主') {
  2490. insurancePolicyForm.value.name2 = insurancePolicyForm.value.name1
  2491. insurancePolicyForm.value.mobile2 = insurancePolicyForm.value.mobile1
  2492. insurancePolicyForm.value.identifyType2 = insurancePolicyForm.value.identifyType1
  2493. insurancePolicyForm.value.identifyNumber2 = insurancePolicyForm.value.identifyNumber1
  2494. insurancePolicyForm.value.identifyValidDate2 = insurancePolicyForm.value.identifyValidDate1
  2495. insurancePolicyForm.value.identifyValidEndDate2 = insurancePolicyForm.value.identifyValidEndDate1
  2496. insurancePolicyForm.value.addr2 = insurancePolicyForm.value.addr1
  2497. insurancePolicyForm.value.telephone2 = insurancePolicyForm.value.telephone1
  2498. insurancePolicyForm.value.person2 = insurancePolicyForm.value.person1
  2499. insurancePolicyForm.value.age2 = insurancePolicyForm.value.age1
  2500. insurancePolicyForm.value.address2 = insurancePolicyForm.value.address1
  2501. insurancePolicyForm.value.registeredCapital2 = insurancePolicyForm.value.registeredCapital1
  2502. insurancePolicyForm.value.email2 = insurancePolicyForm.value.email1
  2503. }
  2504. let obj2 = btns.value.owner2.find(a => a.checked)
  2505. btns.value.owner2Text = obj2.text
  2506. if(obj2.text === '同车主') {
  2507. insurancePolicyForm.value.name3 = insurancePolicyForm.value.name1
  2508. insurancePolicyForm.value.mobile3 = insurancePolicyForm.value.mobile1
  2509. insurancePolicyForm.value.identifyType3 = insurancePolicyForm.value.identifyType1
  2510. insurancePolicyForm.value.identifyNumber3 = insurancePolicyForm.value.identifyNumber1
  2511. insurancePolicyForm.value.identifyValidDate3 = insurancePolicyForm.value.identifyValidDate1
  2512. insurancePolicyForm.value.identifyValidEndDate3 = insurancePolicyForm.value.identifyValidEndDate1
  2513. insurancePolicyForm.value.addr3 = insurancePolicyForm.value.addr1
  2514. insurancePolicyForm.value.telephone3 = insurancePolicyForm.value.telephone1
  2515. insurancePolicyForm.value.person3 = insurancePolicyForm.value.person1
  2516. insurancePolicyForm.value.age3 = insurancePolicyForm.value.age1
  2517. insurancePolicyForm.value.address3 = insurancePolicyForm.value.address1
  2518. insurancePolicyForm.value.registeredCapital3 = insurancePolicyForm.value.registeredCapital1
  2519. insurancePolicyForm.value.email3 = insurancePolicyForm.value.email1
  2520. }
  2521. if(obj2.text === '同投保人') {
  2522. insurancePolicyForm.value.name3 = insurancePolicyForm.value.name2
  2523. insurancePolicyForm.value.mobile3 = insurancePolicyForm.value.mobile2
  2524. insurancePolicyForm.value.identifyType3 = insurancePolicyForm.value.identifyType2
  2525. insurancePolicyForm.value.identifyNumber3 = insurancePolicyForm.value.identifyNumber2
  2526. insurancePolicyForm.value.identifyValidDate3 = insurancePolicyForm.value.identifyValidDate2
  2527. insurancePolicyForm.value.identifyValidEndDate3 = insurancePolicyForm.value.identifyValidEndDate2
  2528. insurancePolicyForm.value.addr3 = insurancePolicyForm.value.addr2
  2529. insurancePolicyForm.value.telephone3 = insurancePolicyForm.value.telephone2
  2530. insurancePolicyForm.value.person3 = insurancePolicyForm.value.person2
  2531. insurancePolicyForm.value.age3 = insurancePolicyForm.value.age2
  2532. insurancePolicyForm.value.address3 = insurancePolicyForm.value.address2
  2533. insurancePolicyForm.value.registeredCapital3 = insurancePolicyForm.value.registeredCapital2
  2534. insurancePolicyForm.value.email3 = insurancePolicyForm.value.email2
  2535. }
  2536. let data = {
  2537. systemType: '2',
  2538. order: {
  2539. insuranceCompanyCode: insurancePolicyForm.value.order.insuranceCompanyCode,
  2540. quoteNo: insurancePolicyForm.value.order.quoteNo
  2541. },
  2542. productId: insurancePolicyForm.value.productId,
  2543. carInfoVo: {
  2544. licenseKindCode: '02',
  2545. propertyCode: insurancePolicyForm.value.propertyCode,
  2546. licenseNo: insurancePolicyForm.value.licenseNo,
  2547. vinNo: insurancePolicyForm.value.vinNo,
  2548. brandName: insurancePolicyForm.value.brandName,
  2549. engineNo: insurancePolicyForm.value.engineNo,
  2550. carNatureCode: insurancePolicyForm.value.carNatureCode,
  2551. vehicleUseCode: insurancePolicyForm.value.vehicleUseCode,
  2552. carTypeCode: insurancePolicyForm.value.carTypeCode,
  2553. energyTypeCode: insurancePolicyForm.value.energyTypeCode,
  2554. registerDate: insurancePolicyForm.value.registerDate,
  2555. issueDate: insurancePolicyForm.value.issueDate,
  2556. completeKerbMass: insurancePolicyForm.value.completeKerbMass,
  2557. limitLoad: insurancePolicyForm.value.limitLoad,
  2558. seatCount: insurancePolicyForm.value.seatCount,
  2559. carYear: insurancePolicyForm.value.carYear,
  2560. purchasePrice: insurancePolicyForm.value.purchasePrice,
  2561. displacement: insurancePolicyForm.value.displacement,
  2562. powerScale: insurancePolicyForm.value.powerScale,
  2563. carKindCode: insurancePolicyForm.value.plateType
  2564. },
  2565. ownersInfo: {
  2566. property: 1,
  2567. name: insurancePolicyForm.value.name1,
  2568. mobile: insurancePolicyForm.value.mobile1,
  2569. identifyType: insurancePolicyForm.value.identifyType1,
  2570. identifyNumber: insurancePolicyForm.value.identifyNumber1,
  2571. identifyValidDate: insurancePolicyForm.value.identifyValidDate1,
  2572. identifyValidEndDate: insurancePolicyForm.value.identifyValidEndDate1,
  2573. addr: insurancePolicyForm.value.addr1,
  2574. telephone: insurancePolicyForm.value.telephone1,
  2575. person: insurancePolicyForm.value.person1,
  2576. age: insurancePolicyForm.value.age1,
  2577. address: insurancePolicyForm.value.address1,
  2578. registeredCapital: insurancePolicyForm.value.registeredCapital1,
  2579. email: insurancePolicyForm.value.email1,
  2580. },
  2581. policyHolderInfo: {
  2582. property: 1,
  2583. name: insurancePolicyForm.value.name2,
  2584. mobile: insurancePolicyForm.value.mobile2,
  2585. identifyType: insurancePolicyForm.value.identifyType2,
  2586. identifyNumber: insurancePolicyForm.value.identifyNumber2,
  2587. identifyValidDate: insurancePolicyForm.value.identifyValidDate2,
  2588. identifyValidEndDate: insurancePolicyForm.value.identifyValidEndDate2,
  2589. addr: insurancePolicyForm.value.addr2,
  2590. telephone: insurancePolicyForm.value.telephone2,
  2591. person: insurancePolicyForm.value.person2,
  2592. age: insurancePolicyForm.value.age2,
  2593. address: insurancePolicyForm.value.address2,
  2594. registeredCapital: insurancePolicyForm.value.registeredCapital2,
  2595. email: insurancePolicyForm.value.email2,
  2596. },
  2597. insuredPersonInfo: {
  2598. property: 1,
  2599. name: insurancePolicyForm.value.name3,
  2600. mobile: insurancePolicyForm.value.mobile3,
  2601. identifyType: insurancePolicyForm.value.identifyType3,
  2602. identifyNumber: insurancePolicyForm.value.identifyNumber3,
  2603. identifyValidDate: insurancePolicyForm.value.identifyValidDate3,
  2604. identifyValidEndDate: insurancePolicyForm.value.identifyValidEndDate3,
  2605. addr: insurancePolicyForm.value.addr3,
  2606. telephone: insurancePolicyForm.value.telephone3,
  2607. person: insurancePolicyForm.value.person3,
  2608. age: insurancePolicyForm.value.age3,
  2609. address: insurancePolicyForm.value.address3,
  2610. registeredCapital: insurancePolicyForm.value.registeredCapital3,
  2611. email: insurancePolicyForm.value.email3,
  2612. },
  2613. ciRiskInfoVo: insurancePolicyForm.value.productId === '0330' || insurancePolicyForm.value.productId === '0330034002' || insurancePolicyForm.value.productId === '0330034001'&&insurancePolicyForm.value.JQStartDate&&insurancePolicyForm.value.JQEndDate?{
  2614. riskCode: '0507',
  2615. startDate: insurancePolicyForm.value.JQStartDate,
  2616. endDate: insurancePolicyForm.value.JQEndDate,
  2617. instantFlag: false
  2618. }: null,
  2619. biRiskInfoVo: insurancePolicyForm.value.productId === '034001' || insurancePolicyForm.value.productId === '034002' || insurancePolicyForm.value.productId === '0330034002' || insurancePolicyForm.value.productId === '0330034001'&&insurancePolicyForm.value.SYStartDate&&insurancePolicyForm.value.SYEndDate?{
  2620. riskCode: '0510',
  2621. startDate: insurancePolicyForm.value.SYStartDate,
  2622. endDate: insurancePolicyForm.value.SYEndDate,
  2623. instantFlag: false
  2624. }: null,
  2625. vehicleAndVesselTaxVo: {
  2626. taxRelifFlag: insurancePolicyForm.value.taxRelifFlag,
  2627. extendChar2: insurancePolicyForm.value.extendChar2,
  2628. relifReason: insurancePolicyForm.value.relifReason,
  2629. taxComCode: insurancePolicyForm.value.taxComCode,
  2630. taxComName: insurancePolicyForm.value.taxComName,
  2631. taxRelief: insurancePolicyForm.value.taxRelief,
  2632. taxDocumentDate: insurancePolicyForm.value.taxDocumentDate,
  2633. taxPaidAreaCode: insurancePolicyForm.value.taxPaidAreaCode,
  2634. taxpayerName: insurancePolicyForm.value.taxpayerName,
  2635. taxpayerIdentifier: insurancePolicyForm.value.taxpayerIdentifier,
  2636. identifyNumber: insurancePolicyForm.value.identifyNumber,
  2637. },
  2638. kindInfoVo: [...arr],
  2639. accidentalDrivings: [...brr],
  2640. specialInfoVo: [...crr]
  2641. }
  2642. api.insurancePolicyApi.imageSave({
  2643. order: {
  2644. quoteNo: insurancePolicyForm.value.order.quoteNo
  2645. },
  2646. imageVoList: insurancePolicyForm.value.imageVoList
  2647. }).then((res: any) => {
  2648. if(res.code == 200) {
  2649. api.insurancePolicyApi.quote(data).then((res: any) => {
  2650. if(res.code == 200) {
  2651. ElMessage({
  2652. message: res.msg,
  2653. type: 'success'
  2654. })
  2655. if(res.data) {
  2656. let a = res.data.ciPremium?res.data.ciPremium:0
  2657. let b = res.data.vvTax?res.data.vvTax:0
  2658. let c = res.data.biPremium?res.data.biPremium:0
  2659. let d = res.data.niPremium?res.data.niPremium:0
  2660. res.data.quoteTotal = Number(a) + Number(b) + Number(c) + Number(d)
  2661. }
  2662. quoteData.value[scope.$index].quoteResult = res.data
  2663. loading.value = false
  2664. quoteData.value[scope.$index].loading = false
  2665. } else {
  2666. ElMessage({
  2667. message: res.msg,
  2668. type: 'warning'
  2669. })
  2670. quoteData.value[scope.$index].quoteResult.failMsg = res.msg
  2671. loading.value = false
  2672. quoteData.value[scope.$index].loading = false
  2673. }
  2674. // InsurancePolicyRefs.resetFields()
  2675. }).catch(e => {
  2676. loading.value = false
  2677. quoteData.value[scope.$index].loading = false
  2678. quoteData.value.forEach(a => {
  2679. a.loading = false
  2680. })
  2681. })
  2682. } else {
  2683. ElMessage({
  2684. message: res.msg,
  2685. type: 'warning'
  2686. })
  2687. }
  2688. })
  2689. } else {
  2690. ElMessage({
  2691. message: '请完整填写相关信息',
  2692. type: 'warning'
  2693. })
  2694. }
  2695. })
  2696. }
  2697. // 获取保司
  2698. const ruleFilterCompany = (item) => {
  2699. let data = {
  2700. productId: item.value,
  2701. carInfo: {
  2702. carOwner: insurancePolicyForm.value.carOwner,
  2703. licenseNo: insurancePolicyForm.value.licenseNo,
  2704. vinNo: insurancePolicyForm.value.vinNo,
  2705. brandName: insurancePolicyForm.value.brandName,
  2706. engineNo: insurancePolicyForm.value.engineNo,
  2707. carNatureCode: insurancePolicyForm.value.carNatureCode,
  2708. vehicleUseCode: insurancePolicyForm.value.vehicleUseCode,
  2709. carTypeCode: insurancePolicyForm.value.carTypeCode,
  2710. energyTypeCode: insurancePolicyForm.value.energyTypeCode,
  2711. registerDate: insurancePolicyForm.value.registerDate,
  2712. issueDate: insurancePolicyForm.value.issueDate,
  2713. completeKerbMass: insurancePolicyForm.value.completeKerbMass,
  2714. limitLoad: insurancePolicyForm.value.limitLoad,
  2715. seatCount: insurancePolicyForm.value.seatCount,
  2716. carYear: insurancePolicyForm.value.carYear,
  2717. purchasePrice: insurancePolicyForm.value.purchasePrice,
  2718. displacement: insurancePolicyForm.value.displacement,
  2719. powerScale: insurancePolicyForm.value.powerScale,
  2720. carKindCode: insurancePolicyForm.value.plateType
  2721. },
  2722. ownerInfo: {
  2723. name: insurancePolicyForm.value.name1,
  2724. mobile: insurancePolicyForm.value.mobile1,
  2725. identifyType: insurancePolicyForm.value.identifyType1,
  2726. identifyNumber: insurancePolicyForm.value.identifyNumber1,
  2727. identifyValidDate: insurancePolicyForm.value.identifyValidDate1,
  2728. identifyValidEndDate: insurancePolicyForm.value.identifyValidEndDate1,
  2729. addr: insurancePolicyForm.value.addr1,
  2730. telephone: insurancePolicyForm.value.telephone1,
  2731. person: insurancePolicyForm.value.person1,
  2732. age: insurancePolicyForm.value.age1,
  2733. address: insurancePolicyForm.value.address1,
  2734. registeredCapital: insurancePolicyForm.value.registeredCapital1,
  2735. email: insurancePolicyForm.value.email1,
  2736. },
  2737. applyInfo: {
  2738. name: insurancePolicyForm.value.name2,
  2739. mobile: insurancePolicyForm.value.mobile2,
  2740. identifyType: insurancePolicyForm.value.identifyType2,
  2741. identifyNumber: insurancePolicyForm.value.identifyNumber2,
  2742. identifyValidDate: insurancePolicyForm.value.identifyValidDate2,
  2743. identifyValidEndDate: insurancePolicyForm.value.identifyValidEndDate2,
  2744. addr: insurancePolicyForm.value.addr2,
  2745. telephone: insurancePolicyForm.value.telephone2,
  2746. person: insurancePolicyForm.value.person2,
  2747. age: insurancePolicyForm.value.age2,
  2748. address: insurancePolicyForm.value.address2,
  2749. registeredCapital: insurancePolicyForm.value.registeredCapital2,
  2750. email: insurancePolicyForm.value.email2,
  2751. },
  2752. insureInfo: {
  2753. name: insurancePolicyForm.value.name3,
  2754. mobile: insurancePolicyForm.value.mobile3,
  2755. identifyType: insurancePolicyForm.value.identifyType3,
  2756. identifyNumber: insurancePolicyForm.value.identifyNumber3,
  2757. identifyValidDate: insurancePolicyForm.value.identifyValidDate3,
  2758. identifyValidEndDate: insurancePolicyForm.value.identifyValidEndDate3,
  2759. addr: insurancePolicyForm.value.addr3,
  2760. telephone: insurancePolicyForm.value.telephone3,
  2761. person: insurancePolicyForm.value.person3,
  2762. age: insurancePolicyForm.value.age3,
  2763. address: insurancePolicyForm.value.address3,
  2764. registeredCapital: insurancePolicyForm.value.registeredCapital3,
  2765. email: insurancePolicyForm.value.email3,
  2766. },
  2767. }
  2768. api.insurancePolicyApi.ruleFilterCompany(data).then((res: any) => {
  2769. if(res.code == 200) {
  2770. res.data.forEach(a => {
  2771. a.loading = false
  2772. })
  2773. quoteData.value = res.data
  2774. } else {
  2775. quoteData.value = []
  2776. ElMessage({
  2777. message: res.msg,
  2778. type: 'warning'
  2779. })
  2780. }
  2781. })
  2782. }
  2783. onMounted(() => {
  2784. getAreaList()
  2785. initDept()
  2786. initOption()
  2787. if(myRoute.query.orderNo) {
  2788. initDetail()
  2789. }
  2790. })
  2791. </script>
  2792. <style scoped lang="scss">
  2793. @use "@/assets/styles/common/style";
  2794. .insurancePolicy{
  2795. width: calc(100% - 48px);
  2796. height: calc(100vh - 128px);
  2797. margin: 10px 24px 0;
  2798. overflow-y: auto;
  2799. overflow-x: hidden;
  2800. .formItem{
  2801. padding: 0 24px;
  2802. background: #FFFFFF;
  2803. border-radius: 6px;
  2804. }
  2805. .title{
  2806. height: 18px;
  2807. border-left: 4px solid #00a0f4;
  2808. display: flex;
  2809. align-items: center;
  2810. justify-content: flex-start;
  2811. padding-left: 12px;
  2812. margin-left: 24px;
  2813. color: #333333;
  2814. font-size: 15px;
  2815. }
  2816. .icon{
  2817. padding-right: 24px;
  2818. display: flex;
  2819. align-items: center;
  2820. }
  2821. .myIcon{
  2822. display: inline-block;
  2823. width: 14px;
  2824. height: 14px;
  2825. margin-right: 10px;
  2826. }
  2827. .icon-ele{
  2828. margin-left: 10px;
  2829. }
  2830. .ordinary{
  2831. height: 22px;
  2832. line-height: 22px;
  2833. padding: 0 10px;
  2834. border: 1px solid #EEEEEE;
  2835. border-radius: 2px;
  2836. color: #666666;
  2837. display: flex;
  2838. font-size: 12px;
  2839. margin: 0 5px;
  2840. }
  2841. .active{
  2842. border: 1px solid #0083FF;
  2843. color: #0083FF;
  2844. background: url("@/assets/images/additional/right.png") no-repeat right bottom;
  2845. background-size: 12px 12px;
  2846. }
  2847. .insurance-jq{
  2848. display: flex;
  2849. align-items: center;
  2850. justify-content: flex-start;
  2851. margin: 10px 0 24px 24px;
  2852. .checkbox{
  2853. margin: 0 24px;
  2854. height: 22px;
  2855. line-height: 22px;
  2856. padding: 0 10px;
  2857. border: 1px solid #EEEEEE;
  2858. border-radius: 2px;
  2859. color: #666666;
  2860. display: flex;
  2861. font-size: 12px;
  2862. cursor: pointer;
  2863. }
  2864. .cehcked{
  2865. border: 1px solid #0083FF;
  2866. color: #0083FF;
  2867. background: url("@/assets/images/additional/right.png") no-repeat right bottom;
  2868. background-size: 12px 12px;
  2869. }
  2870. .time{
  2871. display: flex;
  2872. align-items: center;
  2873. justify-content: flex-start;
  2874. }
  2875. }
  2876. .success{
  2877. color: #1DAEFF;
  2878. border: 1px solid #1DAEFF;
  2879. background: #E7F7FF;
  2880. padding: 2px 4px;
  2881. border-radius: 2px;
  2882. font-size: 12px;
  2883. }
  2884. .fail{
  2885. color: #FF4545;
  2886. border: 1px solid #FF4545;
  2887. background: #FFF4F4;
  2888. padding: 2px 4px;
  2889. border-radius: 2px;
  2890. font-size: 12px;
  2891. margin-right: 10px;
  2892. }
  2893. .company{
  2894. display: flex;
  2895. align-items: center;
  2896. justify-content: center;
  2897. img{
  2898. width: 24px;
  2899. height: 24px;
  2900. margin-right: 10px;
  2901. }
  2902. }
  2903. .resultItem{
  2904. display: flex;
  2905. align-items: center;
  2906. justify-content: flex-start;
  2907. font-size: 12px;
  2908. .resultTips{
  2909. display: flex;
  2910. align-items: center;
  2911. justify-content: flex-start;
  2912. background: #FFFAEF;
  2913. border: 1px solid #FAA21E;
  2914. border-radius: 2px;
  2915. padding: 0 4px;
  2916. font-size: 10px;
  2917. margin-left: 10px;
  2918. }
  2919. }
  2920. .quoteFail{
  2921. display: flex;
  2922. align-items: center;
  2923. justify-content: flex-start;
  2924. font-size: 12px;
  2925. }
  2926. .quoteReason{
  2927. text-align: left;
  2928. padding-left: 22px;
  2929. width: 100%;
  2930. display: -webkit-box; /* 必须设置,用于多行溢出 */
  2931. -webkit-box-orient: vertical; /* 设置盒子排列方向为垂直 */
  2932. -webkit-line-clamp: 2; /* 限制显示的行数,例如显示 3 行 */
  2933. overflow: hidden;
  2934. font-size: 12px;
  2935. }
  2936. .product{
  2937. .productItem{
  2938. border: 1px solid #E5E5E5;
  2939. font-size: 12px;
  2940. padding: 0 4px;
  2941. border-radius: 2px;
  2942. color: #666666;
  2943. cursor: pointer;
  2944. margin: 0 10px 0 0;
  2945. }
  2946. .productActive{
  2947. border: 1px solid #0083FF;
  2948. color: #0083FF;
  2949. }
  2950. }
  2951. .quoteTitle{
  2952. height: 14px;
  2953. border-left: 2px solid #00a0f4;
  2954. display: flex;
  2955. align-items: center;
  2956. justify-content: flex-start;
  2957. padding-left: 6px;
  2958. margin: 14px 0;
  2959. color: #333333;
  2960. font-size: 14px;
  2961. }
  2962. .quoteFlex{
  2963. display: flex;
  2964. align-items: center;
  2965. justify-content: center;
  2966. }
  2967. .imageCode{
  2968. height: 140px;
  2969. display: flex;
  2970. align-items: center;
  2971. justify-content: center;
  2972. img{
  2973. width: 140px;
  2974. height: 140px;
  2975. }
  2976. }
  2977. .expandFlex{
  2978. display: flex;
  2979. .expandTitle{
  2980. text-align: center;
  2981. display: flex;
  2982. align-items: center;
  2983. justify-content: center;
  2984. width: 40px;
  2985. padding: 0 8px;
  2986. margin: 0 10px 0 0;
  2987. background: #F6FBFF;
  2988. }
  2989. }
  2990. :deep(.el-collapse-item__header) {
  2991. display: flex;
  2992. align-items: center;
  2993. justify-content: space-between;
  2994. }
  2995. :deep(.el-form-item) {
  2996. margin-bottom: 0;
  2997. }
  2998. .formBlock{
  2999. :deep(.el-form-item) {
  3000. display: block;
  3001. }
  3002. }
  3003. .factorTable{
  3004. .more{
  3005. border: 1px solid #0083FF;
  3006. display: flex;
  3007. align-items: center;
  3008. justify-content: center;
  3009. border-radius: 50%;
  3010. width: 12px;
  3011. height: 12px;
  3012. color: #0083FF;
  3013. font-size: 10px;
  3014. margin-left: 2px;
  3015. }
  3016. :deep(.cell) {
  3017. font-size: 10px;
  3018. }
  3019. }
  3020. :deep(thead .el-table__cell) {
  3021. background: #eeeeee;
  3022. }
  3023. .footer{
  3024. display: flex;
  3025. align-items: center;
  3026. justify-content: center;
  3027. margin-top: 10px;
  3028. background: #FFFFFF;
  3029. padding: 16px 0;
  3030. }
  3031. .loader {
  3032. /* Wave text loader made by: csozi | Website: english.csozi.hu*/
  3033. //height: 30px;
  3034. .text {
  3035. margin: 0;
  3036. line-height: 24px;
  3037. color: red;
  3038. font-weight: bolder;
  3039. background: -webkit-linear-gradient(45deg,
  3040. orange,
  3041. orangered);
  3042. /* Chrome, Safari */
  3043. background: linear-gradient(45deg, orange, orangered);
  3044. /* Standard syntax */
  3045. -webkit-background-clip: text;
  3046. /* Chrome, Safari */
  3047. background-clip: text;
  3048. -webkit-text-fill-color: transparent;
  3049. /* Chrome, Safari */
  3050. color: transparent;
  3051. /* Standard syntax (currently not supported by browsers) */
  3052. font-family: "'Gill Sans', 'Gill Sans MT', 'Calibri', 'Trebuchet MS', sans-serif'";
  3053. }
  3054. @keyframes letter {
  3055. 0% {
  3056. font-size: 14px;
  3057. }
  3058. 50% {
  3059. font-size: 15px;
  3060. }
  3061. 100% {
  3062. font-size: 14px;
  3063. }
  3064. }
  3065. .letter {
  3066. animation: letter 1s infinite;
  3067. }
  3068. .letter1 {
  3069. animation-delay: 0s;
  3070. }
  3071. .letter2 {
  3072. animation-delay: -0.9s;
  3073. }
  3074. .letter3 {
  3075. animation-delay: -0.8s;
  3076. }
  3077. .letter4 {
  3078. animation-delay: -0.7s;
  3079. }
  3080. .letter5 {
  3081. animation-delay: -0.6s;
  3082. }
  3083. .letter6 {
  3084. animation-delay: -0.5s;
  3085. }
  3086. .letter7 {
  3087. animation-delay: -0.4s;
  3088. }
  3089. .letter8 {
  3090. animation-delay: -0.3s;
  3091. }
  3092. .letter9 {
  3093. animation-delay: -0.2s;
  3094. }
  3095. .letter10 {
  3096. animation-delay: -0.1s;
  3097. }
  3098. }
  3099. :deep(.el-form-item) {
  3100. margin-bottom: 10px;
  3101. }
  3102. }
  3103. </style>