underwriting1.vue 41 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372
  1. <template>
  2. <view :style="getHeight" style="background-color: #F5F5F5;">
  3. <!-- 公共组件-每个页面必须引入 -->
  4. <public-module></public-module>
  5. <!-- 头部 -->
  6. <view class="carInfo w-100 px-3 box-sizing">
  7. <view class="d-flex">
  8. <view class="icon iconfont icon-tree-round-car flex-shrink topLeft"></view>
  9. <view class="topRight d-flex flex-1 p-3 flex-column" style="color: #FFFFFF;">
  10. <view class="d-flex flex-1">
  11. <view class="font-lg d-flex a-center">{{this.licenseNo}}
  12. <view class="icon iconfont icon-bianji1 ml-2" @tap="toCarInfo"></view>
  13. </view>
  14. </view>
  15. <view class="brandName">{{carInfo.modelcname}}</view>
  16. </view>
  17. </view>
  18. <view class="other d-flex j-sb px-3">
  19. <view class="d-flex flex-1 a-center">
  20. <view class="privilege d-flex a-center j-center flex-shrink px-2">特权</view>
  21. <view class="content">每月自动查违章,无违章领奖励</view>
  22. </view>
  23. <view class="flex-shrink icon iconfont icon-youjiantou d-flex a-center font-sm"></view>
  24. </view>
  25. </view>
  26. <!-- 车主信息 -->
  27. <view>
  28. <view class="personInfo">
  29. <view class="title d-flex a-center j-center j-sb">
  30. <text style="font-weight: bold;">车主</text>
  31. <view class="showStatus" @tap="controlShow('showOwerInfo')">{{showOwerInfo?'收起':'展开'}}</view>
  32. </view>
  33. <view class="content" v-if="showOwerInfo">
  34. <view class="row d-flex a-center">
  35. <view class="left">姓名:</view>
  36. <view class="right d-flex flex-1">{{ownerInfo.name}}</view>
  37. </view>
  38. <view class="row d-flex a-center">
  39. <view class="left">证件类型:</view>
  40. <view class="right d-flex flex-1">{{ownerInfo.identifyType}}</view>
  41. </view>
  42. <view class="row d-flex a-center">
  43. <view class="left">手机号:</view>
  44. <view class="right d-flex flex-1">{{ownerInfo.mobile}}</view>
  45. </view>
  46. <view class="row d-flex a-center">
  47. <view class="left">证件号:</view>
  48. <view class="right d-flex flex-1">{{ownerInfo.identifyNumber}}</view>
  49. </view>
  50. <view class="row d-flex a-center"
  51. style="height:auto;min-height: 80upx;padding: 15upx 0;box-sizing: border-box; ">
  52. <view class="left">地址:</view>
  53. <view class="right d-flex flex-1">{{ownerInfo.addr}}</view>
  54. </view>
  55. </view>
  56. </view>
  57. <!-- 投保人信息 -->
  58. <view class="personInfo">
  59. <view class="title d-flex a-center j-sb">
  60. <text style="font-weight: bold;">投保人</text>
  61. <view class="showStatus" @tap="controlShow('showPolicyHolderInfo')">
  62. {{showPolicyHolderInfo?'收起':'展开'}}
  63. </view>
  64. </view>
  65. <view class="content" v-if="showPolicyHolderInfo">
  66. <view class="row d-flex a-center">
  67. <view class="left">姓名:</view>
  68. <view class="right d-flex flex-1">{{policyHolderInfo.name}}</view>
  69. </view>
  70. <view class="row d-flex a-center">
  71. <view class="left">证件类型:</view>
  72. <view class="right d-flex flex-1">{{policyHolderInfo.identifyType}}</view>
  73. </view>
  74. <view class="row d-flex a-center">
  75. <view class="left">手机号:</view>
  76. <view class="right d-flex flex-1">{{policyHolderInfo.mobile}}</view>
  77. </view>
  78. <view class="row d-flex a-center">
  79. <view class="left">证件号:</view>
  80. <view class="right d-flex flex-1">{{policyHolderInfo.identifyNumber}}</view>
  81. </view>
  82. <view class="row d-flex a-center"
  83. style="height:auto;min-height: 80upx;padding: 15upx 0;box-sizing: border-box; ">
  84. <view class="left">地址:</view>
  85. <view class="right d-flex flex-1">{{policyHolderInfo.addr}}</view>
  86. </view>
  87. </view>
  88. </view>
  89. <!-- 被保人信息 -->
  90. <view class="personInfo">
  91. <view class="title d-flex a-center j-sb">
  92. <text style="font-weight: bold;">被保人</text>
  93. <view class="showStatus" @tap="controlShow('showInsuredPersonInfo')">
  94. {{showInsuredPersonInfo?'收起':'展开'}}
  95. </view>
  96. </view>
  97. <view class="content" v-if="showInsuredPersonInfo">
  98. <view class="row d-flex a-center">
  99. <view class="left">姓名:</view>
  100. <view class="right d-flex flex-1">{{insuredPersonInfo.name}}</view>
  101. </view>
  102. <view class="row d-flex a-center">
  103. <view class="left">证件类型:</view>
  104. <view class="right d-flex flex-1">{{insuredPersonInfo.identifyType}}</view>
  105. </view>
  106. <view class="row d-flex a-center">
  107. <view class="left">手机号:</view>
  108. <view class="right d-flex flex-1">{{insuredPersonInfo.mobile}}</view>
  109. </view>
  110. <view class="row d-flex a-center">
  111. <view class="left">证件号:</view>
  112. <view class="right d-flex flex-1">{{insuredPersonInfo.identifyNumber}}</view>
  113. </view>
  114. <view class="row d-flex a-center"
  115. style="height:auto;min-height: 80upx;padding: 15upx 0;box-sizing: border-box; ">
  116. <view class="left">地址:</view>
  117. <view class="right d-flex flex-1">{{insuredPersonInfo.addr}}</view>
  118. </view>
  119. </view>
  120. </view>
  121. <!-- 车辆影像信息Start -->
  122. <view class="imageInfo">
  123. <view class="title d-flex a-center j-sb">
  124. <text style="font-weight: bold;">车辆影像信息</text>
  125. <view class="showStatus" @tap="controlShow('showCarImageInfo')">{{showCarImageInfo?'收起':'展开'}}
  126. </view>
  127. </view>
  128. <view class="uni-uploader" v-if="showCarImageInfo">
  129. <view class="uni-uploader-body dis ">
  130. <view class="uni-uploader__files">
  131. <block v-for="(image,index) in imgList1" :key="index">
  132. <view class="uni-uploader__file">
  133. <image class="uni-uploader__img" :src="image.url" :data-src="image.url"
  134. @tap="previewImage($event,'imgList1')"></image>
  135. <view class="delImgIcon iconfont icon-cuo d-flex a-center j-center"
  136. @tap="delCheckImage(image,'carImageListId','imgList1')"></view>
  137. </view>
  138. </block>
  139. <view v-if="imgList1.length==0" class="uni-uploader__input-box"
  140. style="box-sizing: border-box;">
  141. <view class="uni-uploader__input" @tap="chooseImage('C01','carImageListId','imgList1')">
  142. </view>
  143. </view>
  144. </view>
  145. <view class="uni-uploader__files">
  146. <block v-for="(image,index) in imgList2" :key="index">
  147. <view class="uni-uploader__file">
  148. <image class="uni-uploader__img" :src="image.url" :data-src="image.url"
  149. @tap="previewImage($event,'imgList2')"></image>
  150. <view class="delImgIcon iconfont icon-cuo d-flex a-center j-center"
  151. @tap="delCheckImage(image,'carImageListId','imgList2')"></view>
  152. </view>
  153. </block>
  154. <view v-if="imgList2.length==0" class="uni-uploader__input-box"
  155. style="box-sizing: border-box;">
  156. <view class="uni-uploader__input" @tap="chooseImage('D01','carImageListId','imgList2')">
  157. </view>
  158. </view>
  159. </view>
  160. </view>
  161. </view>
  162. </view>
  163. <!-- 车辆影像信息End -->
  164. <!-- 车主影像信息Start -->
  165. <view class="imageInfo">
  166. <view class="title d-flex a-center j-sb">
  167. <text style="font-weight: bold;">车主影像信息</text>
  168. <view class="showStatus" @tap="controlShow('showOwnerImageInfo')">{{showOwnerImageInfo?'收起':'展开'}}
  169. </view>
  170. </view>
  171. <view class="uni-uploader" v-if="showOwnerImageInfo">
  172. <view class="uni-uploader-body dis ">
  173. <view class="uni-uploader__files">
  174. <block v-for="(image,index) in imgList3" :key="index">
  175. <view class="uni-uploader__file">
  176. <image class="uni-uploader__img" :src="image.url" :data-src="image.url"
  177. @tap="previewImage($event,'imgList3')"></image>
  178. <view class="delImgIcon iconfont icon-cuo d-flex a-center j-center"
  179. @tap="delCheckImage(image,'ownerImageListId','imgList3')"></view>
  180. </view>
  181. </block>
  182. <view v-if="imgList3.length==0" class="uni-uploader__input-box"
  183. style="box-sizing: border-box;">
  184. <view class="uni-uploader__input"
  185. @tap="chooseImage('C02','ownerImageListId','imgList3')"></view>
  186. </view>
  187. </view>
  188. <view class="uni-uploader__files">
  189. <block v-for="(image,index) in imgList4" :key="index">
  190. <view class="uni-uploader__file">
  191. <image class="uni-uploader__img" :src="image.url" :data-src="image.url"
  192. @tap="previewImage($event,'imgList4')"></image>
  193. <view class="delImgIcon iconfont icon-cuo d-flex a-center j-center"
  194. @tap="delCheckImage(image,'ownerImageListId','imgList4')"></view>
  195. </view>
  196. </block>
  197. <view v-if="imgList4.length==0" class="uni-uploader__input-box"
  198. style="box-sizing: border-box;">
  199. <view class="uni-uploader__input"
  200. @tap="chooseImage('D02','ownerImageListId','imgList4')"></view>
  201. </view>
  202. </view>
  203. </view>
  204. </view>
  205. </view>
  206. <!-- 车主影像信息End -->
  207. <!-- 投保人影像信息Start -->
  208. <view class="imageInfo">
  209. <view class="title d-flex a-center j-sb">
  210. <text style="font-weight: bold;">投保人影像信息</text>
  211. <view class="showStatus" @tap="controlShow('showPolicyImageInfo')">
  212. {{showPolicyImageInfo?'收起':'展开'}}
  213. </view>
  214. </view>
  215. <view class="uni-uploader" v-if="showPolicyImageInfo">
  216. <view class="uni-uploader-body dis ">
  217. <view class="uni-uploader__files">
  218. <block v-for="(image,index) in imgList5" :key="index">
  219. <view class="uni-uploader__file">
  220. <image class="uni-uploader__img" :src="image.url" :data-src="image.url"
  221. @tap="previewImage($event,'imgList5')"></image>
  222. <view class="delImgIcon iconfont icon-cuo d-flex a-center j-center"
  223. @tap="delCheckImage(image,'policyImageListId','imgList5')"></view>
  224. </view>
  225. </block>
  226. <view v-if="imgList5.length==0" class="uni-uploader__input-box"
  227. style="box-sizing: border-box;">
  228. <view class="uni-uploader__input"
  229. @tap="chooseImage('C03','policyImageListId','imgList5')"></view>
  230. </view>
  231. </view>
  232. <view class="uni-uploader__files">
  233. <block v-for="(image,index) in imgList6" :key="index">
  234. <view class="uni-uploader__file">
  235. <image class="uni-uploader__img" :src="image.url" :data-src="image.url"
  236. @tap="previewImage($event,'imgList6')"></image>
  237. <view class="delImgIcon iconfont icon-cuo d-flex a-center j-center"
  238. @tap="delCheckImage(image,'policyImageListId','imgList6')"></view>
  239. </view>
  240. </block>
  241. <view v-if="imgList6.length==0" class="uni-uploader__input-box"
  242. style="box-sizing: border-box;">
  243. <view class="uni-uploader__input"
  244. @tap="chooseImage('D03','policyImageListId','imgList6')"></view>
  245. </view>
  246. </view>
  247. </view>
  248. </view>
  249. </view>
  250. <!-- 投保人影像信息End -->
  251. <!-- 被保人影像信息Start -->
  252. <view class="imageInfo">
  253. <view class="title d-flex a-center j-sb">
  254. <text style="font-weight: bold;">被保人影像信息</text>
  255. <view class="showStatus" @tap="controlShow('showInsuredImageInfo')">
  256. {{showInsuredImageInfo?'收起':'展开'}}
  257. </view>
  258. </view>
  259. <view class="uni-uploader" v-if="showInsuredImageInfo">
  260. <view class="uni-uploader-body dis ">
  261. <view class="uni-uploader__files">
  262. <block v-for="(image,index) in imgList7" :key="index">
  263. <view class="uni-uploader__file">
  264. <image class="uni-uploader__img" :src="image.url" :data-src="image.url"
  265. @tap="previewImage($event,'imgList7')"></image>
  266. <view class="delImgIcon iconfont icon-cuo d-flex a-center j-center"
  267. @tap="delCheckImage(image,'insuredImageListId','imgList7')"></view>
  268. </view>
  269. </block>
  270. <view v-if="imgList7.length==0" class="uni-uploader__input-box"
  271. style="box-sizing: border-box;">
  272. <view class="uni-uploader__input"
  273. @tap="chooseImage('C04','insuredImageListId','imgList7')"></view>
  274. </view>
  275. </view>
  276. <view class="uni-uploader__files">
  277. <block v-for="(image,index) in imgList8" :key="index">
  278. <view class="uni-uploader__file">
  279. <image class="uni-uploader__img" :src="image.url" :data-src="image.url"
  280. @tap="previewImage($event,'imgList8')"></image>
  281. <view class="delImgIcon iconfont icon-cuo d-flex a-center j-center"
  282. @tap="delCheckImage(image,'insuredImageListId','imgList8')"></view>
  283. </view>
  284. </block>
  285. <view v-if="imgList8.length==0" class="uni-uploader__input-box"
  286. style="box-sizing: border-box;">
  287. <view class="uni-uploader__input"
  288. @tap="chooseImage('D04','insuredImageListId','imgList8')"></view>
  289. </view>
  290. </view>
  291. </view>
  292. </view>
  293. </view>
  294. <!-- 被保人影像信息End -->
  295. <!-- 验车照Start -->
  296. <!-- <view class="imageInfo">
  297. <view class="title d-flex a-center j-sb">
  298. <text style="font-weight: bold;">验车照</text>
  299. <view class="showStatus" @tap="controlShow('showCarCheckImageInfo')">
  300. {{showCarCheckImageInfo?'收起':'展开'}}
  301. </view>
  302. </view>
  303. <view class="uni-uploader" v-if="showCarCheckImageInfo">
  304. <view class="uni-uploader-body">
  305. <view class="uni-uploader__files">
  306. <block v-for="(image,index) in carCheckImageList" :key="index">
  307. <view class="uni-uploader__file">
  308. <image class="uni-uploader__img" :src="image.url" :data-src="image.url"
  309. @tap="previewImage($event,'carCheck')"></image>
  310. <view class="delImgIcon iconfont icon-cuo d-flex a-center j-center "
  311. @tap="delCheckImage('carCheck',index)"></view>
  312. </view>
  313. </block>
  314. <view class="uni-uploader__input-box" style="box-sizing: border-box;">
  315. <view class="uni-uploader__input" @tap="chooseImage('C05','carCheck')"></view>
  316. </view>
  317. </view>
  318. </view>
  319. </view>
  320. </view> -->
  321. <!-- 验车照End -->
  322. <!-- 特约 -->
  323. <block v-if="zijinengageListData.length>0">
  324. <template>
  325. <view class="appoint">
  326. <view class="title d-flex a-center j-sb">
  327. <text style="font-weight: bold;">特约</text>
  328. <view class="showStatus" @tap="controlShow('showAppoint')">{{showAppoint?'收起':'展开'}}</view>
  329. </view>
  330. <view class="content dis f-c j-c a-end" v-if="showAppoint">
  331. <u-button type="warning" size="mini" style="width: 80px;margin-top: 5px;"
  332. @click="show=true">特约选择</u-button>
  333. <view class="contributing dis f-c" v-for="(item,index) in zijinengageList">
  334. <text>{{item.clauseName}}</text>
  335. <u-input v-if="item.modifyFlag==1" :border="true" v-model="item.clauses" size="mini"
  336. type="textarea" :custom-style="{fontSize:'14px'}" />
  337. <text v-else>{{item.clauses}}</text>
  338. </view>
  339. </view>
  340. </view>
  341. </template>
  342. </block>
  343. <view class="advancePayment">
  344. <view class="title d-flex a-center j-sb">
  345. <text style="font-weight: bold;">保费</text>
  346. <view class="showStatus" @tap="controlShow('showAdvancePayment')">{{showAdvancePayment?'收起':'展开'}}
  347. </view>
  348. </view>
  349. <view class="content" v-if="showAdvancePayment">
  350. <block v-for="(item,index) in riskList" :key="index">
  351. <template v-if="item.riskCode == '0507'">
  352. <view class="row d-flex a-center j-sb">
  353. <view class="d-flex a-center">交强险</view>
  354. <view>¥{{jqpremium}}</view>
  355. </view>
  356. </template>
  357. </block>
  358. <view class="row d-flex a-center j-sb">
  359. <view>车船税</view>
  360. <view>¥{{taxAmount}}</view>
  361. </view>
  362. <block>
  363. <view class="row d-flex a-center j-sb">
  364. <view class="d-flex a-center">驾意险</view>
  365. <view>¥{{jypremium}}</view>
  366. </view>
  367. </block>
  368. <block v-for="(item,index) in riskList" :key="index">
  369. <template v-if="item.riskCode == '0510'">
  370. <view class="row d-flex a-center j-sb">
  371. <view class="d-flex a-center">商业险</view>
  372. <view>¥{{sypremium}}</view>
  373. </view>
  374. </template>
  375. </block>
  376. </view>
  377. </view>
  378. </view>
  379. <view style="height: 160upx;"></view>
  380. <view class="bottomBtn">
  381. <view class="agree d-flex a-center">
  382. <checkbox @tap="agreed" :checked="agree" style="transform:scale(0.6)"></checkbox> 我已确认并同意 <text
  383. class="tip">保险条款</text> | <text class="tip">投保须知</text> | <text class="tip">隐私条款</text>
  384. </view>
  385. <view class="btnView d-flex">
  386. <view class="d-flex flex-1 a-center">
  387. <view class="d-flex flex-column a-center listener">
  388. <view class="icon iconfont icon-xiaomishu"></view> 客服
  389. </view>
  390. <view style="font-weight: bold;font-size: 34upx;color: #333; ">¥{{sumPermium}}</view>
  391. </view>
  392. <view class="btn d-flex a-center j-center" @tap="submitAudit">申请核保</view>
  393. </view>
  394. </view>
  395. <u-modal v-model="show" title="特约选择" :scroll-height="{height: '300px'}">
  396. <view class="slot-content">
  397. <u-checkbox-group @change="tycheckboxGroupChange">
  398. <u-checkbox v-model="item.checked" active-color="rgb(255, 153, 0)"
  399. v-for="(item, index) in zijinengageListData" :key="index"
  400. :name="item.clauseCode">{{item.clauseName}}</u-checkbox>
  401. </u-checkbox-group>
  402. </view>
  403. </u-modal>
  404. <previewImage ref="previewImage" :opacity="0.8" :circular="true" :imgs="previewImgs"></previewImage>
  405. </view>
  406. </template>
  407. <script>
  408. import store from '@/store';
  409. import previewImage from '@/components/common/previewImage/previewImage.vue'; //引用插件
  410. // import wPicker from "@/components/w-picker/w-picker.vue";
  411. import {
  412. pathToBase64,
  413. base64ToPath
  414. } from '@/common/image-tools-base64.js';
  415. import * as imageConversion from 'image-conversion'
  416. export default {
  417. components: {
  418. // wPicker,
  419. previewImage
  420. },
  421. computed: {
  422. getHeight() {
  423. let height = uni.getSystemInfoSync().windowHeight;
  424. return `minHeight: ${height}px;`;
  425. }
  426. },
  427. data() {
  428. return {
  429. show: false,
  430. quoteno: "", //报价号
  431. previewImgs: [],
  432. sumPermium: "",
  433. carInfo: {},
  434. vehicleModel: {},
  435. companyId: "",
  436. licenseNo: "",
  437. riskList: [],
  438. kindList: [],
  439. name: "",
  440. icon: "",
  441. taxAmount: "",
  442. jqpremium: "",
  443. sypremium: "",
  444. jypremium: "",
  445. ownerInfo: {},
  446. policyHolderInfo: {},
  447. insuredPersonInfo: {},
  448. agree: false,
  449. jqappoint: "", //交强险特别约定
  450. syappoint: "", //商业特别约定
  451. identifyList: [{
  452. label: '身份证',
  453. id: "01"
  454. },
  455. {
  456. label: '护照',
  457. id: "02"
  458. },
  459. {
  460. label: '港澳台居民居住证',
  461. id: "03"
  462. },
  463. {
  464. label: '组织机构代码证',
  465. id: "04"
  466. },
  467. {
  468. label: '统一社会信用代码证',
  469. id: "05"
  470. },
  471. {
  472. label: '营业执照',
  473. id: "06"
  474. }
  475. ],
  476. showOwerInfo: false, //展示车主信息
  477. showPolicyHolderInfo: false, //展示投保人信息
  478. showInsuredPersonInfo: false, //展示被保人信息
  479. showProposalWay: false, //获取保单方式
  480. showAdvancePayment: false, //展示保费
  481. showAppoint: false, //展示特约
  482. showCarImageInfo: false, //显示车辆影像
  483. carImageListId: [],
  484. showOwnerImageInfo: false, //显示车主影像
  485. ownerImageListId: [],
  486. showPolicyImageInfo: false, //显示投保人影像
  487. policyImageListId: [],
  488. showInsuredImageInfo: false, //显示被保人影像
  489. insuredImageListId: [],
  490. showCarCheckImageInfo: false, //显示验车照影像
  491. existenceimg: 0,
  492. token: "",
  493. imgList1: [],
  494. imgList2: [],
  495. imgList3: [],
  496. imgList4: [],
  497. imgList5: [],
  498. imgList6: [],
  499. imgList7: [],
  500. imgList8: [],
  501. zijinengageListData: [],
  502. zijinengageList: [],
  503. }
  504. },
  505. async onLoad(params) {
  506. this.token = store.state.token
  507. if (!!params.companyId) {
  508. this.companyId = params.companyId;
  509. let param = {
  510. companyId: params.companyId
  511. };
  512. let res = await this.$http.post('/insurance/order/getByCompanyId', param);
  513. //获取前一个页面传过来的信息(车辆信息,人员信息,险种信息)
  514. this.icon = "";
  515. this.name = res.data.inscompany;
  516. this.quoteno = res.data.quoteno;
  517. this.carInfo = res.data.carinfo;
  518. this.ownerInfo = res.data.ownerinfo;
  519. this.policyHolderInfo = res.data.applyinfo;
  520. this.insuredPersonInfo = res.data.insureinfo;
  521. this.riskList = res.data.riskinfo;
  522. this.kindList = res.data.kindinfo;
  523. this.licenseNo = res.data.licenseno;
  524. this.sumPermium = res.data.sumpremium;
  525. this.taxAmount = res.data.taxamount;
  526. this.jqpremium = res.data.jqpremium;
  527. this.sypremium = res.data.sypremium;
  528. this.jypremium = res.data.jypremium;
  529. // 图片类型(C01车辆影像,C02车主身份证,C03投保人身份证,C04被保人身份证,C05验车照)
  530. this.imageEcho(this.quoteno)
  531. if (this.name == '紫金财险') {
  532. let Zijinres = await this.$http.post('/order/zijin/queryClauseData', param);
  533. this.zijinengageListData = Zijinres.data;
  534. let data = this.zijinengageListData.find(val => val.optType == 3)
  535. if (data) {
  536. this.zijinengageList.push({
  537. clauseCode: data.clauseCode,
  538. clauseName: data.clauseName,
  539. clauses: data.clauseContent,
  540. riskCode: data.riskCode,
  541. modifyFlag: data.modifyFlag,
  542. optType: data.optType,
  543. })
  544. }
  545. }
  546. // 影像获取完毕
  547. } else {
  548. uni.showModal({
  549. showCancel: false,
  550. title: "未查询到该订单"
  551. })
  552. }
  553. },
  554. methods: {
  555. tycheckboxGroupChange(detail) {
  556. this.zijinengageList = [];
  557. detail.map(val => {
  558. let list = this.zijinengageListData.find(item => item.clauseCode == val)
  559. this.zijinengageList.push({
  560. clauseCode: list.clauseCode,
  561. clauseName: list.clauseName,
  562. clauses: list.clauseContent,
  563. riskCode: list.riskCode,
  564. modifyFlag: list.modifyFlag,
  565. optType: list.optType,
  566. })
  567. })
  568. },
  569. //影像查询
  570. async imageEcho(quotenos) {
  571. let imgres = await this.$http.get('/ins/taskImage/findByQuoteNo?quoteNo=' + quotenos);
  572. if (imgres.code == "200") {
  573. Object.keys(imgres.data).forEach((keys) => {
  574. if (imgres.data[keys].url) {
  575. imgres.data[keys].url = this.$base.baseUrl + imgres.data[keys].url;
  576. switch (keys) {
  577. case 'C01':
  578. this.carImageListId.push({
  579. imageId: imgres.data[keys].imageId,
  580. imageType: imgres.data[keys].imageType,
  581. })
  582. this.imgList1.push(imgres.data[keys]);
  583. break;
  584. case 'D01':
  585. this.carImageListId.push({
  586. imageId: imgres.data[keys].imageId,
  587. imageType: imgres.data[keys].imageType,
  588. })
  589. this.imgList2.push(imgres.data[keys]);
  590. break;
  591. case 'C02':
  592. this.ownerImageListId.push({
  593. imageId: imgres.data[keys].imageId,
  594. imageType: imgres.data[keys].imageType,
  595. })
  596. this.imgList3.push(imgres.data[keys]);
  597. break;
  598. case 'D02':
  599. this.ownerImageListId.push({
  600. imageId: imgres.data[keys].imageId,
  601. imageType: imgres.data[keys].imageType,
  602. })
  603. this.imgList4.push(imgres.data[keys]);
  604. break;
  605. case 'C03':
  606. this.policyImageListId.push({
  607. imageId: imgres.data[keys].imageId,
  608. imageType: imgres.data[keys].imageType,
  609. })
  610. this.imgList5.push(imgres.data[keys]);
  611. break;
  612. case 'D03':
  613. this.policyImageListId.push({
  614. imageId: imgres.data[keys].imageId,
  615. imageType: imgres.data[keys].imageType,
  616. })
  617. this.imgList6.push(imgres.data[keys]);
  618. break;
  619. case 'C04':
  620. this.insuredImageListId.push({
  621. imageId: imgres.data[keys].imageId,
  622. imageType: imgres.data[keys].imageType,
  623. })
  624. this.imgList7.push(imgres.data[keys]);
  625. break;
  626. case 'D04':
  627. this.insuredImageListId.push({
  628. imageId: imgres.data[keys].imageId,
  629. imageType: imgres.data[keys].imageType,
  630. })
  631. this.imgList8.push(imgres.data[keys]);
  632. break;
  633. default:
  634. break;
  635. }
  636. }
  637. });
  638. }
  639. },
  640. // 重新选择车型
  641. toCarInfo() {
  642. this.navigate({
  643. url: '/pages/carInsure1/carInfo1',
  644. success: (res) => {
  645. res.eventChannel.emit("acceptData", {
  646. carInfo: this.carInfo,
  647. ownerInfo: this.ownerInfo,
  648. policyHolderInfo: this.policyHolderInfo,
  649. insuredPersonInfo: this.insuredPersonInfo,
  650. riskList: this.riskList,
  651. kindList: this.kindList
  652. })
  653. }
  654. }, "navigateTo", true);
  655. },
  656. //控制详情的展开和收起
  657. controlShow(type) {
  658. this[type] = !this[type];
  659. },
  660. //阅读并同意协议
  661. agreed() {
  662. if (this.agree == false) {
  663. this.agree = true;
  664. } else {
  665. this.agree = false;
  666. }
  667. },
  668. async chooseImage(type, imageIdList, imgurl) {
  669. let [chooseImageErr, chooseImageRes] = await uni.chooseImage({
  670. count: 1,
  671. sizeType: ['compressed']
  672. });
  673. chooseImageRes.tempFilePaths.map((ele, index) => {
  674. uni.uploadFile({
  675. url: this.$base.baseUrl + '/ins/taskImage/uploadFile',
  676. filePath: ele,
  677. name: "multipartFile",
  678. formData: {
  679. 'type': 'image',
  680. },
  681. header: {
  682. Authorization: this.token,
  683. },
  684. success: async (imgRes) => {
  685. let data = JSON.parse(imgRes.data);
  686. data.data.url = this.$base.baseUrl + data.data.url;
  687. if (data.code == "200") {
  688. console.log()
  689. if (this[imageIdList].some(v => v.imageType == type)) {
  690. this[imageIdList].map(val => {
  691. if (val.imageType == type) {
  692. val.imageId = data.data.id;
  693. }
  694. })
  695. } else {
  696. this[imageIdList].push({
  697. imageId: data.data.id,
  698. imageType: type,
  699. })
  700. }
  701. this[imgurl].push(data.data)
  702. }
  703. }
  704. });
  705. })
  706. },
  707. previewImage(e, type) {
  708. this.previewImgs = this[type];
  709. var current = e.currentTarget.dataset.src;
  710. this.$refs.previewImage.open(current); // 传入当前选中的图片地址或序号
  711. },
  712. //删除图片
  713. delCheckImage(param, IdList, srcList) {
  714. this[IdList].map((ele, index) => {
  715. if (param.imageId === ele.imageId) {
  716. this[IdList].splice(index, 1);
  717. }
  718. return ele;
  719. });
  720. this[srcList].map((ele, index) => {
  721. if (param.imageId === ele.imageId) {
  722. this[srcList].splice(index, 1);
  723. }
  724. return ele;
  725. });
  726. },
  727. // 上传影像并提交核保
  728. async submitAudit() {
  729. if (!this.agree) {
  730. return uni.showToast({
  731. title: '请阅读并同意协议',
  732. icon: "none",
  733. duration: 2000
  734. });
  735. }
  736. const mergedArray = [...this.carImageListId, ...this.ownerImageListId, ...this
  737. .policyImageListId, ...this.insuredImageListId
  738. ];
  739. if (mergedArray.length > 0) {
  740. await this.$http.post('/ins/taskImage/uploadImages', {
  741. imageList: mergedArray,
  742. quoteNo: this.quoteno,
  743. })
  744. }
  745. uni.showModal({
  746. content: '是否确认提交核保?',
  747. success: async (res) => {
  748. if (res.confirm) {
  749. switch (this.name) {
  750. case "永安财险":
  751. let yaimage = await this.$http.post(
  752. '/order/yongAn/submitImage', {
  753. companyId: this.companyId
  754. });
  755. if (yaimage.code == '200') {
  756. let yaaudit = await this.$http.post(
  757. '/order/yongAn/audit', {
  758. companyId: this.companyId,
  759. jqappoint: "",
  760. syappoint: ""
  761. });
  762. if (yaaudit.code == '200') {
  763. uni.showModal({
  764. content: '订单自核成功',
  765. cancelText: '暂不缴费',
  766. confirmText: '立即缴费',
  767. success: (res1) => {
  768. if (res1.confirm) {
  769. uni.navigateTo({
  770. url: "/pages/carInsure1/payCode1?companyId=" +
  771. this
  772. .companyId
  773. })
  774. } else {
  775. this.navigate({
  776. url: "/pages/orders/orders"
  777. }, "switchTab",
  778. true);
  779. }
  780. }
  781. });
  782. } else {
  783. uni.showModal({
  784. content: '核保失败(' + yaaudit.msg + ')',
  785. cancelText: '返回订单',
  786. confirmText: '继续核保',
  787. success: async (res2) => {
  788. if (res2.confirm) {
  789. } else {
  790. this.navigate({
  791. url: "/pages/orders/orders"
  792. }, "switchTab",
  793. true);
  794. }
  795. }
  796. });
  797. }
  798. } else {
  799. uni.showModal({
  800. content: '影像上传失败(' + yaimage.msg + ')',
  801. cancelText: '返回订单',
  802. confirmText: '修改',
  803. success: async (res3) => {
  804. if (res3.confirm) {
  805. } else {
  806. this.navigate({
  807. url: "/pages/orders/orders"
  808. }, "switchTab",
  809. true);
  810. }
  811. }
  812. });
  813. }
  814. break;
  815. case "中煤财险":
  816. let zmimage = await this.$http.post(
  817. '/order/zhongMeiApi/submitImage', {
  818. companyId: this.companyId
  819. });
  820. if (zmimage.code == '200') {
  821. let zmaudit = await this.$http.post(
  822. '/order/zhongMeiApi/audit', {
  823. companyId: this.companyId,
  824. jqappoint: "",
  825. syappoint: ""
  826. });
  827. if (zmaudit.code == '200') {
  828. uni.showModal({
  829. content: '订单自核成功',
  830. cancelText: '暂不缴费',
  831. confirmText: '立即缴费',
  832. success: (res1) => {
  833. if (res1.confirm) {
  834. uni.navigateTo({
  835. url: "/pages/carInsure1/payCode1?companyId=" +
  836. this
  837. .companyId
  838. })
  839. } else {
  840. this.navigate({
  841. url: "/pages/orders/orders"
  842. }, "switchTab",
  843. true);
  844. }
  845. }
  846. });
  847. } else {
  848. uni.showModal({
  849. content: '核保失败(' + zmaudit.msg + ')',
  850. cancelText: '返回订单',
  851. confirmText: '修改',
  852. success: async (res2) => {
  853. if (res2.confirm) {
  854. } else {
  855. this.navigate({
  856. url: "/pages/orders/orders"
  857. }, "switchTab",
  858. true);
  859. }
  860. }
  861. });
  862. }
  863. } else {
  864. uni.showModal({
  865. content: '影像上传失败(' + zmimage.msg + ')',
  866. cancelText: '返回订单',
  867. confirmText: '修改',
  868. success: async (res3) => {
  869. if (res3.confirm) {
  870. } else {
  871. this.navigate({
  872. url: "/pages/orders/orders"
  873. }, "switchTab",
  874. true);
  875. }
  876. }
  877. });
  878. }
  879. break;
  880. case "永诚财险":
  881. let ycimage = await this.$http.post(
  882. '/api/yongCheng/uploadImage', {
  883. companyId: this.companyId
  884. });
  885. if (ycimage.code == '200') {
  886. let ycaudit = await this.$http.post(
  887. '/api/yongCheng/audit', {
  888. companyId: this.companyId,
  889. });
  890. if (ycaudit.code == '200') {
  891. uni.showModal({
  892. content: '订单自核成功',
  893. cancelText: '暂不缴费',
  894. confirmText: '立即缴费',
  895. success: (res1) => {
  896. if (res1.confirm) {
  897. uni.navigateTo({
  898. url: "/pages/carInsure1/payCode1?companyId=" +
  899. this
  900. .companyId
  901. })
  902. } else {
  903. this.navigate({
  904. url: "/pages/orders/orders"
  905. }, "switchTab",
  906. true);
  907. }
  908. }
  909. });
  910. } else {
  911. uni.showModal({
  912. content: '核保失败(' + ycaudit.msg + ')',
  913. cancelText: '返回订单',
  914. confirmText: '修改',
  915. success: async (res2) => {
  916. if (res2.confirm) {
  917. } else {
  918. this.navigate({
  919. url: "/pages/orders/orders"
  920. }, "switchTab",
  921. true);
  922. }
  923. }
  924. });
  925. }
  926. } else {
  927. uni.showModal({
  928. content: '影像上传失败(' + ycimage.msg + ')',
  929. cancelText: '返回订单',
  930. confirmText: '修改',
  931. success: async (res3) => {
  932. if (res3.confirm) {
  933. } else {
  934. this.navigate({
  935. url: "/pages/orders/orders"
  936. }, "switchTab",
  937. true);
  938. }
  939. }
  940. });
  941. }
  942. break;
  943. case "国任财险":
  944. let grimage = await this.$http.post(
  945. '/api/guoRen/uploadImage', {
  946. companyId: this.companyId
  947. });
  948. if (grimage.code == '200') {
  949. let graudit = await this.$http.post(
  950. '/api/guoRen/audit', {
  951. companyId: this.companyId,
  952. });
  953. if (graudit.code == '200') {
  954. uni.showModal({
  955. content: '订单自核成功',
  956. cancelText: '暂不缴费',
  957. confirmText: '立即缴费',
  958. success: (res1) => {
  959. if (res1.confirm) {
  960. uni.navigateTo({
  961. url: "/pages/carInsure1/payCode1?companyId=" +
  962. this
  963. .companyId
  964. })
  965. } else {
  966. this.navigate({
  967. url: "/pages/orders/orders"
  968. }, "switchTab",
  969. true);
  970. }
  971. }
  972. });
  973. } else {
  974. uni.showModal({
  975. content: '核保失败(' + graudit.msg + ')',
  976. cancelText: '返回订单',
  977. confirmText: '修改',
  978. success: async (res2) => {
  979. if (res2.confirm) {
  980. } else {
  981. this.navigate({
  982. url: "/pages/orders/orders"
  983. }, "switchTab",
  984. true);
  985. }
  986. }
  987. });
  988. }
  989. } else {
  990. uni.showModal({
  991. content: '影像上传失败(' + grimage.msg + ')',
  992. cancelText: '返回订单',
  993. confirmText: '修改',
  994. success: async (res3) => {
  995. if (res3.confirm) {
  996. } else {
  997. this.navigate({
  998. url: "/pages/orders/orders"
  999. }, "switchTab",
  1000. true);
  1001. }
  1002. }
  1003. });
  1004. }
  1005. break;
  1006. case "紫金财险":
  1007. let zjimage = await this.$http.post(
  1008. '/order/zijin/submitImage', {
  1009. companyId: this.companyId
  1010. });
  1011. if (zjimage.code == '200') {
  1012. let zjaudit = await this.$http.post(
  1013. '/order/zijin/audit', {
  1014. companyId: this.companyId,
  1015. engageList: this.zijinengageList,
  1016. });
  1017. if (zjaudit.code == '200') {
  1018. uni.showModal({
  1019. content: '订单自核成功',
  1020. cancelText: '暂不缴费',
  1021. confirmText: '立即缴费',
  1022. success: (res1) => {
  1023. if (res1.confirm) {
  1024. uni.navigateTo({
  1025. url: "/pages/carInsure1/payCode1?companyId=" +
  1026. this
  1027. .companyId
  1028. })
  1029. } else {
  1030. this.navigate({
  1031. url: "/pages/orders/orders"
  1032. }, "switchTab",
  1033. true);
  1034. }
  1035. }
  1036. });
  1037. } else {
  1038. uni.showModal({
  1039. content: '核保失败(' + zjaudit.msg + ')',
  1040. cancelText: '返回订单',
  1041. confirmText: '修改',
  1042. success: async (res2) => {
  1043. if (res2.confirm) {
  1044. } else {
  1045. this.navigate({
  1046. url: "/pages/orders/orders"
  1047. }, "switchTab",
  1048. true);
  1049. }
  1050. }
  1051. });
  1052. }
  1053. } else {
  1054. uni.showModal({
  1055. content: '影像上传失败(' + zjimage.msg + ')',
  1056. cancelText: '返回订单',
  1057. confirmText: '修改',
  1058. success: async (res3) => {
  1059. if (res3.confirm) {
  1060. } else {
  1061. this.navigate({
  1062. url: "/pages/orders/orders"
  1063. }, "switchTab",
  1064. true);
  1065. }
  1066. }
  1067. });
  1068. }
  1069. break;
  1070. case "恒邦财险":
  1071. case "安盛天平":
  1072. case "众安财险":
  1073. case "中国人寿":
  1074. let pythonimage = await this.$http.post(
  1075. '/insurance/crawler/submitImage', {
  1076. subOrderNo: this.companyId
  1077. });
  1078. if (pythonimage.code == '200') {
  1079. let pythonaudit = await this.$http.post(
  1080. '/insurance/crawler/audit', {
  1081. subOrderNo: this.companyId,
  1082. });
  1083. if (pythonaudit.code == '200') {
  1084. uni.showModal({
  1085. content: '订单自核成功',
  1086. cancelText: '暂不缴费',
  1087. confirmText: '立即缴费',
  1088. success: (res1) => {
  1089. if (res1.confirm) {
  1090. uni.navigateTo({
  1091. url: "/pages/carInsure1/payCode1?companyId=" +
  1092. this
  1093. .companyId
  1094. })
  1095. } else {
  1096. this.navigate({
  1097. url: "/pages/orders/orders"
  1098. }, "switchTab",
  1099. true);
  1100. }
  1101. }
  1102. });
  1103. } else {
  1104. uni.showModal({
  1105. content: '核保失败(' + pythonaudit.msg + ')',
  1106. cancelText: '返回订单',
  1107. confirmText: '修改',
  1108. success: async (res2) => {
  1109. if (res2.confirm) {
  1110. } else {
  1111. this.navigate({
  1112. url: "/pages/orders/orders"
  1113. }, "switchTab",
  1114. true);
  1115. }
  1116. }
  1117. });
  1118. }
  1119. } else {
  1120. uni.showModal({
  1121. content: '影像上传失败(' + pythonimage.msg + ')',
  1122. cancelText: '返回订单',
  1123. confirmText: '修改',
  1124. success: async (res3) => {
  1125. if (res3.confirm) {
  1126. } else {
  1127. this.navigate({
  1128. url: "/pages/orders/orders"
  1129. }, "switchTab",
  1130. true);
  1131. }
  1132. }
  1133. });
  1134. }
  1135. break;
  1136. }
  1137. } else if (res.cancel) {}
  1138. }
  1139. });
  1140. }
  1141. }
  1142. }
  1143. </script>
  1144. <style lang="scss" scoped>
  1145. @import '@/style/mixin.scss';
  1146. /* 头部车辆信息和特权Start */
  1147. .carInfo {
  1148. height: 290upx;
  1149. background: -webkit-linear-gradient(0deg, rgba($themeColor, 0.6), rgba($themeColor, 0.8));
  1150. background-size: 100% 100%;
  1151. }
  1152. .carInfo .topLeft {
  1153. width: 120upx;
  1154. font-size: 90upx;
  1155. color: #FFFFFF;
  1156. }
  1157. .carInfo .topRight .brandName {
  1158. width: 400upx;
  1159. overflow: hidden;
  1160. text-overflow: ellipsis;
  1161. white-space: nowrap;
  1162. }
  1163. .carInfo .other {
  1164. background-color: #FFFFFF;
  1165. height: 80upx;
  1166. border-radius: 15upx;
  1167. box-sizing: border-box;
  1168. }
  1169. .carInfo .other .privilege {
  1170. background-color: rgba($themeColor, 0.6);
  1171. font-size: 24upx;
  1172. color: #FFFFFF;
  1173. font-weight: bold;
  1174. width: 60upx;
  1175. }
  1176. .carInfo .other .content {
  1177. width: 460upx;
  1178. margin-left: 15upx;
  1179. overflow: hidden;
  1180. text-overflow: ellipsis;
  1181. white-space: nowrap;
  1182. }
  1183. .carInfo .other .icon {
  1184. width: 30upx;
  1185. }
  1186. /* 头部车辆信息和特权End */
  1187. /* 人员信息Start */
  1188. .personInfo,
  1189. .advancePayment,
  1190. .imageInfo,
  1191. .appoint {
  1192. margin-bottom: 20upx;
  1193. background: #FFFFFF;
  1194. padding: 0upx 30upx;
  1195. }
  1196. .personInfo .title,
  1197. .advancePayment .title,
  1198. .imageInfo .title,
  1199. .appoint .title {
  1200. height: 80upx;
  1201. font-size: 32upx;
  1202. box-shadow: inset 0 -3upx 0px #fafafa;
  1203. }
  1204. .showStatus {
  1205. font-size: 26upx;
  1206. color: $themeColor;
  1207. }
  1208. .personInfo .content .row,
  1209. .advancePayment .content .row {
  1210. height: 80upx;
  1211. border-bottom: 1px solid #F9F9F9;
  1212. }
  1213. .personInfo .content .row .left,
  1214. .advancePayment .content .row .left {
  1215. width: 170upx;
  1216. flex-shrink: 0;
  1217. font-size: 28upx;
  1218. }
  1219. .appoint .content .row {
  1220. height: auto;
  1221. margin-top: 10upx;
  1222. }
  1223. .appoint .content .row>view {
  1224. width: 240upx;
  1225. flex-shrink: 1;
  1226. font-size: 28upx;
  1227. }
  1228. .appoint .content .row>textarea {
  1229. padding: 15upx;
  1230. box-sizing: border-box;
  1231. font-size: 26upx;
  1232. min-height: 160upx;
  1233. height: 100upx;
  1234. border: 1px solid #fafafa;
  1235. }
  1236. .personInfo .content .row .right,
  1237. .advancePayment .content .row .right,
  1238. .appoint .content .row .right {
  1239. font-size: 28upx;
  1240. }
  1241. /* 人员信息End */
  1242. .uni-uploader__file {
  1243. position: relative;
  1244. }
  1245. .delImgIcon {
  1246. width: 40upx;
  1247. height: 40upx;
  1248. background-color: #999;
  1249. position: absolute;
  1250. right: 0upx;
  1251. top: 0upx;
  1252. color: #FFFFFF;
  1253. }
  1254. /* 底部按钮Start */
  1255. .bottomBtn {
  1256. z-index: 99;
  1257. position: fixed;
  1258. bottom: 0;
  1259. left: 0;
  1260. right: 0;
  1261. border-top: 1px solid #F1F1F1;
  1262. background-color: #FFFFFF;
  1263. height: 150upx;
  1264. }
  1265. .bottomBtn .agree {
  1266. height: 60upx;
  1267. font-size: 24upx;
  1268. }
  1269. .bottomBtn .agree .tip {
  1270. color: $themeColor;
  1271. margin: 0upx 10upx;
  1272. }
  1273. .bottomBtn .btnView {
  1274. height: 100upx;
  1275. border-top: 1px solid #F1F1F1;
  1276. }
  1277. .bottomBtn .listener {
  1278. width: 120upx;
  1279. font-size: 20upx;
  1280. line-height: 1;
  1281. color: #999;
  1282. }
  1283. .bottomBtn .listener .icon {
  1284. font-size: 40upx;
  1285. padding: 0;
  1286. line-height: 1.2;
  1287. }
  1288. .bottomBtn .btn {
  1289. font-size: 34upx;
  1290. background-color: $themeColor;
  1291. color: #fff;
  1292. width: 280upx;
  1293. flex-shrink: 0;
  1294. }
  1295. .contributing {
  1296. width: 100%;
  1297. margin: 4px 0;
  1298. font-size: 14px;
  1299. text:nth-child(1) {
  1300. font-weight: bold;
  1301. color: #ff9000;
  1302. }
  1303. }
  1304. .slot-content {
  1305. padding: 10px;
  1306. box-sizing: border-box;
  1307. }
  1308. /* 底部按钮End */
  1309. </style>