companyQuotable.vue 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472
  1. <template>
  2. <view class="">
  3. <image src="/static/image/car-insure/Quotablebanner.png" mode=""
  4. style="width: 100%;height: 110px;position: absolute;"></image>
  5. <view class="page">
  6. <view class="car">
  7. <view class="header d-flex a-center j-sb" @tap="showCarInfo = !showCarInfo">
  8. <view class="title">车辆信息</view>
  9. <view class=" d-flex">
  10. <view class="icon iconfont"
  11. :class="{ 'icon-up-yixuanzhong': showCarInfo, 'icon-down-weixuanzhong': !showCarInfo }"
  12. style="font-weight: bold;color: #fff;">
  13. </view>
  14. </view>
  15. </view>
  16. <view class="body" v-if="showCarInfo">
  17. <view class="row d-flex a-center j-sb">
  18. <view>车牌号</view>
  19. <view>{{carInfo.licenseNo}}</view>
  20. </view>
  21. <view class="row d-flex a-center j-sb">
  22. <view>品牌型号</view>
  23. <view>{{carInfo.modelcname}}</view>
  24. </view>
  25. <view class="row d-flex a-center j-sb">
  26. <view>车辆识别代码</view>
  27. <view>{{carInfo.vinNo}}</view>
  28. </view>
  29. <view class="row d-flex a-center j-sb">
  30. <view>发动机号</view>
  31. <view>{{carInfo.engineNo}}</view>
  32. </view>
  33. <view class="row d-flex a-center j-sb">
  34. <view>年款</view>
  35. <view>{{carInfo.caryear}}</view>
  36. </view>
  37. <view class="row d-flex a-center j-sb">
  38. <view>座位数</view>
  39. <view>{{carInfo.seatCount}}</view>
  40. </view>
  41. <view class="row d-flex a-center j-sb">
  42. <view>整备质量</view>
  43. <view>{{carInfo.completeKerbMass}}</view>
  44. </view>
  45. <view class="row d-flex a-center j-sb" v-if="carInfo.limitLoad">
  46. <view>核定载质量</view>
  47. <view>{{carInfo.limitLoad}}</view>
  48. </view>
  49. <view class="row d-flex a-center j-sb">
  50. <view>排量</view>
  51. <view>{{carInfo.enginedesc}}</view>
  52. </view>
  53. <view class="row d-flex a-center j-sb">
  54. <view>功率</view>
  55. <view>{{carInfo.powerScale}}</view>
  56. </view>
  57. <view class="row d-flex a-center j-sb">
  58. <view>新车购置价</view>
  59. <view>{{carInfo.purchasePrice}}</view>
  60. </view>
  61. <view class="row d-flex a-center j-sb font-weight "
  62. style="background-color: #E5ECFA;padding:5px 10px;">
  63. <view>车主性质</view>
  64. </view>
  65. <view class="row d-flex a-center j-sb">
  66. <view>使用性质</view>
  67. <view>{{carInfo1.carnature}}</view>
  68. </view>
  69. <view class="row d-flex a-center j-sb">
  70. <view>车辆用途</view>
  71. <view>{{carInfo1.vehicleUse}}</view>
  72. </view>
  73. <view class="row d-flex a-center j-sb">
  74. <view>车辆类型</view>
  75. <view>{{carInfo1.cartype}}</view>
  76. </view>
  77. <view class="row d-flex a-center j-sb">
  78. <view>车辆种类</view>
  79. <view>{{carInfo1.cimodelclass}}</view>
  80. </view>
  81. <view class="row d-flex a-center j-sb">
  82. <view>能源种类</view>
  83. <view>{{carInfo1.energyType}}</view>
  84. </view>
  85. <view class="row d-flex a-center j-sb">
  86. <view>注册日期</view>
  87. <view>{{carInfo.registerDate }}</view>
  88. </view>
  89. <view class="row d-flex a-center j-sb">
  90. <view>发证日期</view>
  91. <view>{{carInfo.issueDate }}</view>
  92. </view>
  93. <view class="row d-flex a-center j-sb" v-if="carInfo.transferFlag">
  94. <view>转移登记日期</view>
  95. <view>{{carInfo.transferDate }}</view>
  96. </view>
  97. <view class="row d-flex a-center j-sb font-weight "
  98. style="background-color: #E5ECFA;padding:5px 10px;">
  99. <view>车辆情况</view>
  100. </view>
  101. <view class="row d-flex a-center j-sb">
  102. <view>是否过户</view>
  103. <view>{{carInfo.transferFlag?'是':'否' }}</view>
  104. </view>
  105. <view class="row d-flex a-center j-sb">
  106. <view>商业是否过户</view>
  107. <view>{{carInfo.transferFlagBi?'是':'否' }}</view>
  108. </view>
  109. <view class="row d-flex a-center j-sb">
  110. <view>是否脱保</view>
  111. <view>{{carInfo.outOfInsurance?'是':'否' }}</view>
  112. </view>
  113. <view class="row d-flex a-center j-sb">
  114. <view>是否二手车</view>
  115. <view>{{carInfo.usedCar?'是':'否' }}</view>
  116. </view>
  117. <view class="row dis j-c a-c">
  118. <u-button type="primary" shape="circle" size="medium"
  119. style="background: linear-gradient( 90deg, #0052FF 0%, #6595FA 100%);">修改车辆信息</u-button>
  120. </view>
  121. </view>
  122. </view>
  123. <view class="car" style="padding: 0;">
  124. <view class="header d-flex a-center j-sb " @tap="showOwerInfo = !showOwerInfo" style="padding: 0 10px;">
  125. <view class="title">人员信息</view>
  126. <view class=" d-flex">
  127. <view class="icon iconfont "
  128. :class="{ 'icon-up-yixuanzhong': showOwerInfo, 'icon-down-weixuanzhong': !showOwerInfo }"
  129. style="font-weight: bold;color: #fff;">
  130. </view>
  131. </view>
  132. </view>
  133. <view class="body" v-if="showOwerInfo">
  134. <view class="row d-flex a-center j-sb font-weight "
  135. style="background-color: #E5ECFA;padding:5px 10px;">
  136. <view>车主姓名:</view>
  137. <view>{{ownerInfo.name}}</view>
  138. </view>
  139. <view class="" style="padding: 0 5px;">
  140. <view class="row d-flex a-center j-sb">
  141. <view>车主身份证号:</view>
  142. <view>
  143. {{ownerInfo.identifyNumber}}
  144. </view>
  145. </view>
  146. <view class="row d-flex a-center j-sb">
  147. <view>手机号:</view>
  148. <view>{{ownerInfo.mobile}}</view>
  149. </view>
  150. <view class="row d-flex a-center j-sb">
  151. <view>地址:</view>
  152. <view>{{ownerInfo.addr}}</view>
  153. </view>
  154. </view>
  155. <view class="row d-flex a-center j-sb font-weight "
  156. style="background-color: #E5ECFA;padding:5px 10px;">
  157. <view>投保人姓名:</view>
  158. <view>{{policyHolderInfo.name}}</view>
  159. </view>
  160. <view class="" style="padding: 0 5px;">
  161. <view class="row d-flex a-center j-sb">
  162. <view>车主身份证号:</view>
  163. <view>
  164. {{policyHolderInfo.identifyNumber}}
  165. </view>
  166. </view>
  167. <view class="row d-flex a-center j-sb">
  168. <view>手机号:</view>
  169. <view>{{policyHolderInfo.mobile}}</view>
  170. </view>
  171. <view class="row d-flex a-center j-sb">
  172. <view>地址:</view>
  173. <view>{{policyHolderInfo.addr}}</view>
  174. </view>
  175. </view>
  176. <view class="row d-flex a-center j-sb font-weight "
  177. style="background-color: #E5ECFA;padding:5px 10px;">
  178. <view>被保人姓名:</view>
  179. <view>{{insuredPersonInfo.name}}</view>
  180. </view>
  181. <view class="" style="padding: 0 5px;">
  182. <view class="row d-flex a-center j-sb">
  183. <view>车主身份证号:</view>
  184. <view>
  185. {{insuredPersonInfo.identifyNumber}}
  186. </view>
  187. </view>
  188. <view class="row d-flex a-center j-sb">
  189. <view>手机号:</view>
  190. <view>{{insuredPersonInfo.mobile}}</view>
  191. </view>
  192. <view class="row d-flex a-center j-sb">
  193. <view>地址:</view>
  194. <view>{{insuredPersonInfo.addr}}</view>
  195. </view>
  196. </view>
  197. <view class="row dis j-c a-c">
  198. <u-button type="primary" shape="circle" size="medium"
  199. style="background: linear-gradient( 90deg, #0052FF 0%, #6595FA 100%);">修改人员信息</u-button>
  200. </view>
  201. </view>
  202. </view>
  203. <view class="insuranceType mt-2 dis f-c ">
  204. <text class="title">险种信息</text>
  205. <view class="dis a-c f-wrap j-s" style="margin-top: 10px;">
  206. <view class="status-data" :class="item.dictValue==insuranceTypeId? 'active':''"
  207. v-for="(item,index) in productsTypeoptions" @tap.stop.prevent="statusclick(item.dictValue)"
  208. :key="index">
  209. {{item.dictTag}}
  210. </view>
  211. </view>
  212. </view>
  213. <view class="insuranceType mt-2 dis f-c ">
  214. <text class="title">可报价保险公司</text>
  215. <view class="dis j-s f-wrap mt-2">
  216. <view class="insurer dis j-s a-c">
  217. <image src="/static/insuranceicon/dajia.png" mode=""></image>
  218. <text>自检财险</text>
  219. </view>
  220. </view>
  221. </view>
  222. </view>
  223. <view class="footer-btn dis j-s a-c">
  224. <u-button type="primary" style="background:#E6EEFF;color:#0052FF;" @tap="back">上一步</u-button>
  225. <u-button type="primary" style="background:#0052FF;" @tap="next">下一步</u-button>
  226. </view>
  227. </view>
  228. </template>
  229. <script>
  230. import {
  231. dictionaryMatch
  232. } from '@/plugins/utils';
  233. export default {
  234. data() {
  235. return {
  236. carInfo: {},
  237. carInfo1: {
  238. carnature: "",
  239. vehicleUse: "",
  240. cartype: "",
  241. cimodelclass: "",
  242. energyType: "",
  243. },
  244. ownerInfo: {},
  245. policyHolderInfo: {},
  246. insuredPersonInfo: {},
  247. carInfoPositiveList: [],
  248. ownerInfoPositiveList: [],
  249. policyHolderInfoPositiveList: [],
  250. insuredPersonInfoPositiveList: [],
  251. showCarInfo: true,
  252. showOwerInfo: true,
  253. productsTypeoptions: [],
  254. natureOfVehicleUseoptions: [],
  255. vehicleTypeoptions: [],
  256. trafficManagementVehicleTypeoptions: [],
  257. energyTypeoptions: [],
  258. businessVehicleUseoptions: [],
  259. outOfBusinessVehicleUseoptions: [],
  260. insuranceTypeId: "",
  261. }
  262. },
  263. onShow() {
  264. },
  265. async onLoad() {
  266. await this.getDicType("productsType");
  267. await this.getDicType("businessVehicleUse"); //车辆用途(营业)
  268. await this.getDicType("outOfBusinessVehicleUse"); //车辆用途(非营业)
  269. await this.getDicType("natureOfVehicleUse"); //车辆性质
  270. await this.getDicType("vehicleType"); //车辆种类
  271. await this.getDicType("trafficManagementVehicleType"); //车辆类型
  272. await this.getDicType("energyType"); //能源种类
  273. const eventChannel = this.getOpenerEventChannel()
  274. // 监听acceptData事件,获取上一页面通过eventChannel传送到当前页面的数据
  275. eventChannel.on('acceptData', (data) => {
  276. if (!!data) {
  277. //读取上一个页面传过来数据(车辆信息,人员信息,险种信息)
  278. this.carInfo = data.carInfo; //车辆信息
  279. this.ownerInfo = data.ownerInfo; //车主信息
  280. this.policyHolderInfo = data.policyHolderInfo; //投保人信息
  281. this.insuredPersonInfo = data.insuredPersonInfo; //被保人信息
  282. this.carInfoPositiveList = data.carInfoPositiveList; //车辆影像
  283. this.ownerInfoPositiveList = data.ownerInfoPositiveList; //车主影像
  284. this.policyHolderInfoPositiveList = data.policyHolderInfoPositiveList; //投保影像
  285. this.insuredPersonInfoPositiveList = data.insuredPersonInfoPositiveList; //被保人影像
  286. this.carInfo1.carnature = dictionaryMatch(this.natureOfVehicleUseoptions, data.carInfo
  287. .carnature)
  288. if (data.carInfo.carnature == '01') {
  289. this.carInfo1.vehicleUse = dictionaryMatch(this.businessVehicleUseoptions, data.carInfo
  290. .vehicleUse)
  291. } else {
  292. this.carInfo1.vehicleUse = dictionaryMatch(this.outOfBusinessVehicleUseoptions, data
  293. .carInfo
  294. .vehicleUse)
  295. }
  296. this.carInfo1.cartype = dictionaryMatch(this.trafficManagementVehicleTypeoptions, data
  297. .carInfo
  298. .cartype)
  299. this.carInfo1.cimodelclass = dictionaryMatch(this.vehicleTypeoptions, data.carInfo
  300. .cimodelclass)
  301. this.carInfo1.energyType = dictionaryMatch(this.energyTypeoptions, data.carInfo
  302. .energyType)
  303. }
  304. })
  305. },
  306. methods: {
  307. async getDicType(type) {
  308. let res = await this.$http.get('/sysDict/dictDetails/' + type);
  309. this[type + "options"] = res.data.ddList;
  310. },
  311. statusclick(e) {
  312. this.insuranceTypeId = e;
  313. },
  314. back() {
  315. uni.navigateBack(1)
  316. },
  317. next() {
  318. uni.navigateTo({
  319. url: ''
  320. })
  321. this.navigate({
  322. url: '/pages/carInsure/premiumCalc',
  323. success: (res) => {
  324. res.eventChannel.emit(
  325. "acceptData", {
  326. carInfo: this
  327. .carInfo,
  328. ownerInfo: this
  329. .ownerInfo,
  330. policyHolderInfo: this
  331. .policyHolderInfo,
  332. insuredPersonInfo: this
  333. .insuredPersonInfo,
  334. carInfoPositiveList: this
  335. .carInfoPositiveList, //车辆
  336. ownerInfoPositiveList: this
  337. .ownerInfoPositiveList, //车主
  338. policyHolderInfoPositiveList: this
  339. .policyHolderInfoPositiveList, //投保
  340. insuredPersonInfoPositiveList: this
  341. .insuredPersonInfoPositiveList, //被保人
  342. })
  343. }
  344. }, "navigateTo", true);
  345. },
  346. }
  347. }
  348. </script>
  349. <style lang="scss" scoped>
  350. .page {
  351. background: #F8FAFE;
  352. padding: 10px 16px 100px 16px;
  353. }
  354. .footer-btn {
  355. position: fixed;
  356. bottom: 0;
  357. left: 0;
  358. width: 100%;
  359. height: 62px;
  360. background: #FFFFFF;
  361. box-shadow: 0px -4px 10px 0px #DAE3F4;
  362. border-radius: 0px 0px 0px 0px;
  363. padding: 12px 16px;
  364. z-index: 99;
  365. uni-button {
  366. width: 45%;
  367. }
  368. }
  369. .status-data {
  370. padding: 4px 10px;
  371. box-sizing: border-box;
  372. margin: 0 4px 4px 0;
  373. font-size: 12px;
  374. border: 1px solid #eee;
  375. cursor: pointer;
  376. }
  377. .active {
  378. position: relative;
  379. background: rgba(0, 82, 255, 0.1);
  380. color: #0052FF;
  381. border: 1px solid #0052FF;
  382. font-weight: 700;
  383. }
  384. .active::before {
  385. content: "";
  386. position: absolute;
  387. top: 0;
  388. left: 0;
  389. width: 10px;
  390. height: 10px;
  391. background-image: url("/static/image/car-insure/before.png");
  392. background-size: cover;
  393. }
  394. .insuranceType {
  395. .title {
  396. font-size: 15px;
  397. font-weight: bold;
  398. color: #232832;
  399. }
  400. .insurer {
  401. width: 100px;
  402. height: 40px;
  403. background: #FFFFFF;
  404. box-shadow: 0px 4px 10px 0px #DAE3F4;
  405. border-radius: 6px;
  406. margin-bottom: 10px;
  407. padding: 8px;
  408. box-sizing: border-box;
  409. image {
  410. width: 20px;
  411. height: 20px;
  412. }
  413. text {
  414. font-size: 14px;
  415. color: #232832;
  416. font-weight: bold;
  417. }
  418. }
  419. }
  420. .car {
  421. width: 100%;
  422. background-color: #fff;
  423. border-radius: 6px;
  424. box-shadow: 0px 4px 10px 0px #DAE3F4;
  425. margin-top: 10px;
  426. position: relative;
  427. .header {
  428. height: 80upx;
  429. position: relative;
  430. padding: 0 10px;
  431. background: linear-gradient(132deg, #467FF6 0%, #A5C2FF 59%, #467FF6 100%);
  432. border-image: linear-gradient(152deg, rgba(234, 241, 255, 1), rgba(231, 238, 255, 1)) 1 1;
  433. border-radius: 6px 6px 0px 0px;
  434. .title {
  435. font-size: 30upx;
  436. font-weight: bold;
  437. color: #fff;
  438. }
  439. }
  440. .body {
  441. .row {
  442. padding: 6px 10px;
  443. border-top: 1px solid #F3F3F3;
  444. }
  445. .row:last-child {
  446. border: none;
  447. }
  448. }
  449. }
  450. </style>