quoteDetail.vue 38 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288
  1. <template>
  2. <view class=" ">
  3. <view class=" page dis f-c" id="panelcanvas" style="position: relative;">
  4. <image class="back" :src="detailbackimg" mode=""></image>
  5. <uni-NavBar headerTitle="订单详情" background="transparent" :isSlot="false" :rightSlot="true">
  6. <template #rightSlot>
  7. <view class="dis f-c a-c mr-3" @click="getWechatCustomer">
  8. <image src="/static/icon/customerService.png" mode="" style="width: 48rpx;height: 48rpx;">
  9. </image>
  10. <text style="font-size: 20rpx;color: #333;">客服</text>
  11. </view>
  12. <view class="dis f-c a-c " @click="share">
  13. <image src="/static/icon/share.png" mode="" style="width: 48rpx;height: 48rpx;"></image>
  14. <text style="font-size: 20rpx;color: #333;">分享</text>
  15. </view>
  16. </template>
  17. </uni-NavBar>
  18. <view class="statusFeedbackArea" v-for="(item,index) in statusList" :key="index"
  19. v-if="item.value==orderStatus">
  20. <view class="dis f-c a-start">
  21. <text>{{item.text}}</text>
  22. <div class="dis a-c mt-2" v-if="orderStatus==3">
  23. <text class="text mr-2">核保时间可能较长,如长时间无结果</text>
  24. <u-icon name="reload" color="#333" size="18"></u-icon>
  25. <text style="font-size: 28rpx;" @click="refreshUnderwriting">点此刷新</text>
  26. </div>
  27. <div class="dis a-c mt-2" v-if="orderStatus==4">
  28. <text class="text mr-2">已经完成支付</text>
  29. <u-icon name="reload" color="#333" size="18"></u-icon>
  30. <text style="font-size: 28rpx;" @click="refreshPayment">点此刷新</text>
  31. </div>
  32. </view>
  33. </view>
  34. <view class="details-content">
  35. <view class="company-header dis a-c j-s">
  36. <view class="dis a-c">
  37. <image class="logo mr-1" :src="insCompanyVo.logo" mode=""></image>
  38. <text class="title">{{companyName}}</text>
  39. </view>
  40. <view class="price dis a-c">
  41. <text class="mr-1">保费合计</text>
  42. <text>¥{{costs.sumPremium}}</text>
  43. </view>
  44. </view>
  45. <view class="contentTabs">
  46. <u-tabs :list="contentTabslist" @click="click" :activeStyle="{color:'#333',fontWeight:'bold'}"
  47. :inactiveStyle="{color:'#999'}" :current="current" :scrollable="false" lineColor="#FDE935"
  48. lineWidth="60rpx"></u-tabs>
  49. <view class="scroll-content">
  50. <template v-if="current==0">
  51. <carViewVue title="车辆信息" :info="carInfoVo" :infoB="carInfoVo1"></carViewVue>
  52. <userViewVue title="车主信息" :info="ownersInfo"
  53. :headerStyle="{background:'linear-gradient( 180deg, #FFF8F8 0%, #FFFFFF 100%)'}">
  54. </userViewVue>
  55. <userViewVue title="投保人信息" :info="policyHolderInfo"
  56. :headerStyle="{background:'linear-gradient( 180deg, #F3F9FF 0%, #FFFFFF 100%)'}">
  57. </userViewVue>
  58. <userViewVue title="被保人信息" :info="insuredPersonInfo"
  59. :headerStyle="{background:'linear-gradient( 180deg, #F9F6FF 0%, #FFFFFF 100%)'}">
  60. </userViewVue>
  61. </template>
  62. <insuranceInfoVue v-if="current==1" @viewDiscount="viewDiscountShow=true"
  63. @vvTaxDetails="vvTaxDetailsShow=true" costs :ciRiskInfoVo="ciRiskInfoVo"
  64. :biRiskInfoVo="biRiskInfoVo" :costs="costs" :policy="policy" :scoreVo="scoreVo"
  65. :accidentalDrivings="accidentalDrivings" :kindInfoVo="kindInfoVo"
  66. :vehicleAndVesselTaxVo="vehicleAndVesselTaxVo" :insFeeOrders="insFeeOrders"
  67. :costRatio="costRatio" :car_tax_codeoptions="car_tax_codeoptions"
  68. @updateDiscount="updateDiscountShow=true" @customerRightsDetail="customerRightsDetail">
  69. </insuranceInfoVue>
  70. <template v-if="current==2">
  71. <imageDataVue @previewImage="previewImage" @delCheckImage="delCheckImage"
  72. :imageCollection="imageCollection" @chooseImage="chooseImage"></imageDataVue>
  73. </template>
  74. </view>
  75. </view>
  76. </view>
  77. </view>
  78. <view class="footer dis ">
  79. <view class="btn dis a-c j-c " @click="modificationPlan" v-if="['1'].includes(orderStatus)">
  80. <text>修改方案</text>
  81. </view>
  82. <view class="btn dis a-c j-c " @click="toCarInfo" v-if="['1'].includes(orderStatus)">
  83. <text>修改信息</text>
  84. </view>
  85. <view class="btn dis a-c j-c" v-if="['1'].includes(orderStatus)" @click="underwritingShow = true">
  86. <text>立即核保</text>
  87. </view>
  88. <view class="btn dis a-c j-c " v-if="['3'].includes(orderStatus)">
  89. <text>删除订单</text>
  90. </view>
  91. <view class="btn dis a-c j-c " v-if="['4'].includes(orderStatus)" @click="revokePaymentCode">
  92. <text>撤销支付码</text>
  93. </view>
  94. <view class="btn dis a-c j-c" @tap="payNow" v-if="['4'].includes(orderStatus)">
  95. <text>立即支付</text>
  96. </view>
  97. <view class="btn dis a-c j-c" v-if="['7'].includes(orderStatus)">
  98. <uni-cloudPopup text="更多操作" color="#1f1f1f" size="17" :buttons="['修改方案','修改信息','删除订单']"
  99. @click="cloudPopupChange"></uni-cloudPopup>
  100. </view>
  101. <view class="btn dis a-c j-c " v-if="['8','7'].includes(orderStatus)">
  102. <text>重新报价</text>
  103. </view>
  104. <view class="btn dis a-c j-c " v-if="['7'].includes(orderStatus)" @click="underwritingShow = true">
  105. <text>重新核保</text>
  106. </view>
  107. <view class="btn dis a-c j-c " @click="ePolicy" v-if="['5'].includes(orderStatus)">
  108. <text>下载电子保单</text>
  109. </view>
  110. </view>
  111. <uni-Popup :show="viewDiscountShow" @close='viewDiscountShow=false' headerTitle="商业险折扣系数" overflow="auto"
  112. :headerStyle="{fontSize:'36rpx'}" maxHeight="580rpx">
  113. <template #content>
  114. <view class="viewDiscount">
  115. <view class="dis a-c j-s top mb-2">
  116. <text>313213</text>
  117. <text>321321321</text>
  118. </view>
  119. <view class="center">
  120. <view class="dis a-c j-s">
  121. <text>NCD系数</text>
  122. <text>0.8</text>
  123. </view>
  124. <view class="dis a-c j-s">
  125. <text>交通违法系数</text>
  126. <text>0.8</text>
  127. </view>
  128. <view class="dis a-c j-s">
  129. <text>自主定价系数</text>
  130. <text>0.8</text>
  131. </view>
  132. <view class="dis a-c j-s">
  133. <text>自主渠道系数</text>
  134. <text>0.8</text>
  135. </view>
  136. </view>
  137. <text class="formula">商业险折扣系数 = NCD系数 * 交通违法系数 * 自主定价系数 * 自主渠道系数。</text>
  138. </view>
  139. </template>
  140. </uni-Popup>
  141. <uni-Popup :show="updateDiscountShow" @close="updateDiscountShow=false" :closeable="false"
  142. headerTitle="商业险折扣系数修改" overflow="auto" :headerStyle="{fontSize:'36rpx'}" maxHeight="980rpx" mode="center"
  143. width="90%">
  144. <template #content>
  145. <view class="updateDiscount">
  146. <text class="text ">商业险折扣系数和自主定价系数只能修改一个,修改后系统会重新报价,计算修改后的保费</text>
  147. <u-radio-group v-model="value" placement="column" class="mt-3 " activeColor="#FDE935"
  148. iconColor='#333'>
  149. <u-radio label="明月几时有" style="align-items: baseline;">
  150. <view class="dis f-c " style="width: 100%;">
  151. <view class="dis a-start input mb-1">
  152. <text>商业险折扣系数</text>
  153. <text>(0.8521252)</text>
  154. </view>
  155. <u--input placeholder="请输入内容" clearable></u--input>
  156. </view>
  157. </u-radio>
  158. <u-radio label="明月几时有" class="mt-3" style="align-items: baseline;">
  159. <view class="dis f-c " style="width: 100%;">
  160. <view class="dis a-c input mb-1">
  161. <text>自主定价系数</text>
  162. <text>(0.8)</text>
  163. </view>
  164. <u--input placeholder="输入1—100的数字" clearable></u--input>
  165. </view>
  166. </u-radio>
  167. </u-radio-group>
  168. <view class="btn dis mt-3">
  169. <u-button class="mr-2" type="primary" shape="circle" :plain="true" text="关闭" color="#DDDDDD"
  170. @click="updateDiscountShow=false" :customStyle="{color:'#333'}"></u-button>
  171. <u-button type="primary" shape="circle" text="确定" color="#FDE935"
  172. :customStyle="{color:'#1f1f1f'}"></u-button>
  173. </view>
  174. </view>
  175. </template>
  176. </uni-Popup>
  177. <!-- 右上角分享功能 -->
  178. <uni-share :show="shareShow" @close="shareShow=false" @weixin="weixin" @userSmsShare="userSmsShare"
  179. @copyLink="copyLink" @saveToAlbum="saveToAlbum" @closeModal="closeShareModal">
  180. </uni-share>
  181. <!-- 确认核保提示 -->
  182. <uni-PopupMessage :show="underwritingShow" @close='underwritingShow=false' @cancelEvent='underwritingShow=false'
  183. @confirmEvent="underwritingEvent">
  184. <template #content>
  185. <view class="dis a-c j-c ">
  186. 是否确认提交核保
  187. </view>
  188. </template>
  189. </uni-PopupMessage>
  190. <!-- 取消核保提示 -->
  191. <uni-PopupMessage :show="cancelUnderwritingShow" @close='cancelUnderwritingShow=false'
  192. @cancelEvent='cancelUnderwritingShow=false' @confirmEvent="cancelUnderwritingEvent">
  193. <template #content>
  194. <view class="dis a-c j-c ">
  195. 您将取消核保,请确认是否继续该操作
  196. </view>
  197. </template>
  198. </uni-PopupMessage>
  199. <!-- 删除订单提示 -->
  200. <uni-PopupMessage :show="deleteOrderShow" @close='deleteOrderShow=false' @cancelEvent='deleteOrderEvent'
  201. headerTitle="删除订单确认" @confirmEvent="deleteOrderShow=false" cancelText="确认删除" confirmText="关闭">
  202. <template #content>
  203. <view class="dis a-c j-c ">
  204. 删除订单后,订单核保请求将取消,订单以及报价记录将清楚不可见,是否确认继续操作
  205. </view>
  206. </template>
  207. </uni-PopupMessage>
  208. <!-- 撤销支付码提示 -->
  209. <uni-PopupMessage :show="revokePaymentShow" @close='revokePaymentShow=false' @cancelEvent='revokePaymentEvent'
  210. headerTitle="撤销支付码" @confirmEvent="revokePaymentShow=false" cancelText="确认撤销" confirmText="关闭">
  211. <template #content>
  212. <view class="dis a-c j-c ">
  213. 撤销支付码后,订单将关闭,不再支持进行任何操作,请确认是否撤销?
  214. </view>
  215. </template>
  216. </uni-PopupMessage>
  217. <uni-Popup :show="vvTaxDetailsShow" @close='vvTaxDetailsShow=false' headerTitle="车船税" overflow="auto"
  218. maxHeight="580rpx">
  219. <template #content>
  220. <view class="vvTaxDetails-cell dis f-c ">
  221. <view class="cell-item dis a-c j-s">
  222. <text>车船税</text>
  223. <text>{{taxRelifFlagName}}</text>
  224. </view>
  225. <template>
  226. <view class="cell-item dis a-c j-s"
  227. v-if="vehicleAndVesselTaxVo.taxRelifFlag == 2 || vehicleAndVesselTaxVo.taxRelifFlag == 3">
  228. <text>减免税凭证号</text>
  229. <text>{{vehicleAndVesselTaxVo.extendChar2}}</text>
  230. </view>
  231. <view class="cell-item dis a-c j-s" v-if="vehicleAndVesselTaxVo.taxRelifFlag == 4">
  232. <text>完税凭证号</text>
  233. <text>{{vehicleAndVesselTaxVo.paidFreeCertificate}}</text>
  234. </view>
  235. <view class="cell-item dis a-c j-s"
  236. v-if="vehicleAndVesselTaxVo.taxRelifFlag == 2 || vehicleAndVesselTaxVo.taxRelifFlag == 3">
  237. <text>减免税原因</text>
  238. <text>{{vehicleAndVesselTaxVo.relifReason}}</text>
  239. </view>
  240. <view class="cell-item dis a-c j-s" v-if="vehicleAndVesselTaxVo.taxRelifFlag == 3">
  241. <text>减税比例</text>
  242. <text>{{vehicleAndVesselTaxVo.taxRelief}}</text>
  243. </view>
  244. <view class="cell-item dis a-c j-s" v-if="vehicleAndVesselTaxVo.taxRelifFlag !=1">
  245. <text>税务机关代码</text>
  246. <text>{{vehicleAndVesselTaxVo.taxComCode}}</text>
  247. </view>
  248. <view class="cell-item dis a-c j-s" v-if="vehicleAndVesselTaxVo.taxRelifFlag !=1">
  249. <text>税务机关名称</text>
  250. <text>{{vehicleAndVesselTaxVo.taxComName}}</text>
  251. </view>
  252. <view class="cell-item dis a-c j-s" v-if="vehicleAndVesselTaxVo.taxRelifFlag ==4">
  253. <text>完税凭证填发日期</text>
  254. <text>{{vehicleAndVesselTaxVo.taxDocumentDate}}</text>
  255. </view>
  256. <view class="cell-item dis a-c j-s" v-if="vehicleAndVesselTaxVo.taxRelifFlag ==4">
  257. <text>完税凭证地区</text>
  258. <text>{{vehicleAndVesselTaxVo.taxPaidAreaCode}}</text>
  259. </view>
  260. </template>
  261. </view>
  262. </template>
  263. </uni-Popup>
  264. <!-- 图片预览组件 -->
  265. <previewImage ref="previewImage" :opacity="0.8" :circular="true" :imgs="previewImgs"></previewImage>
  266. <u-loading-page :loading="loading" style="z-index: 999999;" loading-text="核保中" bg-color="rgb(0 ,0 ,0 ,0.4)"
  267. color="#fff"></u-loading-page>
  268. <!-- 自定义加载动画 -->
  269. <u-overlay :show="loadingShow" style="background-color: rgba(255, 255, 255, 0.6);">
  270. <view class="dis f-c a-c j-c " style="height: 100%;">
  271. <u-loading-icon></u-loading-icon>
  272. <text style="color: #909399;" class="mt-1">{{loadingText}}</text>
  273. </view>
  274. </u-overlay>
  275. </view>
  276. </template>
  277. <script>
  278. import store from '@/store';
  279. import carViewVue from './modules/carView.vue'; //车辆信息
  280. import userViewVue from './modules/userView.vue'; //人员信息
  281. import insuranceInfoVue from './modules/insuranceInfo.vue'; //投保人信息
  282. import imageDataVue from './modules/imageData.vue'; //影像信息
  283. import previewImage from '@/components/previewImage/previewImage.vue'; //引用插件
  284. import {
  285. pathToBase64,
  286. base64ToPath
  287. } from '@/common/pdf.js'
  288. import {
  289. turnBase64Image,
  290. dictionaryMatch
  291. } from '@/plugins/utils.js';
  292. export default {
  293. components: {
  294. carViewVue,
  295. userViewVue,
  296. insuranceInfoVue,
  297. imageDataVue,
  298. previewImage
  299. },
  300. data() {
  301. return {
  302. loadingShow: false,
  303. loadingText: '加载中', //加载提示文字
  304. loading: false,
  305. insCompanyVo: {}, //保险公司信息
  306. vvTaxDetailsShow: false, //车船税详情弹窗
  307. //车船税form
  308. vehicleAndVesselTaxVo: {
  309. taxRelifFlag: "1", //类型
  310. identifyNumber: "", //纳税人识别号
  311. taxpayerIdentifier: "01", //纳税人证件类型
  312. taxpayerName: "", //纳税人名称
  313. extendChar2: "", //减免税凭证号
  314. paidFreeCertificate: "", //完税凭证号
  315. relifReason: "", //减免税原因
  316. taxComCode: "", //税务机关代码
  317. taxComName: "", ///税务机关名称
  318. taxDocumentDate: "", //完税日期
  319. taxPaidAreaCode: "", //完税凭证地区代码
  320. taxRelief: "", //减税比例
  321. },
  322. underwritingShow: false, //确认核保弹窗
  323. cancelUnderwritingShow: false, //取消核保弹窗
  324. deleteOrderShow: false, //删除订单弹窗
  325. revokePaymentShow: false, //撤销支付弹窗
  326. underwritingTitle: '提示',
  327. underwritingContent: '',
  328. previewImgs: [], //图片预览数组
  329. ordersNo: "",
  330. quoteNo: "",
  331. costs: {},
  332. companyName: "",
  333. policy: {}, //保单号信息
  334. ciRiskInfoVo: {}, //交强险
  335. biRiskInfoVo: {}, //商业险
  336. kindInfoVo: [], //险别信息
  337. accidentalDrivings: [], //驾意险
  338. carInfoVo: {}, //车辆信息
  339. carInfoVo1: {}, //车辆信息
  340. ownersInfo: {}, //车主信息
  341. policyHolderInfo: {}, //投保人信息
  342. insuredPersonInfo: {}, //被保人信息
  343. scoreVo: {}, //保费因素
  344. insFeeOrders: {}, //费用信息
  345. costRatio: {}, //费用比例信息
  346. insOrderRightsInfoVo: {}, //权益信息
  347. order: {},
  348. detailbackimg: "", //背景图
  349. value: "",
  350. posterUrl: "", //页面截图
  351. shareShow: false, //分享弹窗
  352. viewDiscountShow: false, //折扣系数弹窗查看
  353. updateDiscountShow: false, //折扣系数修改弹窗
  354. contentTabslist: [{
  355. name: '基本信息'
  356. }, {
  357. name: '投保信息'
  358. }, {
  359. name: '影像资料'
  360. }],
  361. current: 0,
  362. orderStatus: '',
  363. statusList: [{
  364. label: '订单已提交',
  365. value: 0,
  366. text: "订单已完成报价"
  367. },
  368. {
  369. label: '待核保',
  370. value: 1,
  371. text: "订单已完成报价"
  372. },
  373. {
  374. label: '核保中',
  375. value: 2,
  376. text: "订单核保中,请耐心等待"
  377. },
  378. {
  379. label: '人工处理',
  380. value: 3,
  381. text: "订单核保中,请耐心等待"
  382. },
  383. {
  384. label: '待缴费',
  385. value: 4,
  386. text: "订单核保已通过,请尽快支付!"
  387. },
  388. {
  389. label: '已承保',
  390. value: 5,
  391. text: "订单已承保"
  392. },
  393. {
  394. label: '报价失败',
  395. value: 6,
  396. text: ""
  397. },
  398. {
  399. label: '核保失败',
  400. value: 7,
  401. text: "核保不通过"
  402. },
  403. {
  404. label: '已关闭',
  405. value: 8,
  406. text: "订单已关闭"
  407. },
  408. ],
  409. //字典
  410. car_nature_codeoptions: [], //使用性质
  411. vehicle_use_code01options: [], //营业
  412. vehicle_use_code02options: [], //非营业
  413. car_kind_codeoptions: [], //车辆种类
  414. energy_type_codeoptions: [], //能源类型
  415. car_type_codeoptions: [], //车辆类型
  416. car_tax_codeoptions: [], //车船税类型
  417. taxpayerIdentifieroptions: [], //车船税类型
  418. car_tax_reason_codeoptions: [], //减免税原因
  419. imgList1: [],
  420. imgList2: [],
  421. imgList3: [],
  422. imgList4: [],
  423. imgList5: [],
  424. imgList6: [],
  425. imgList7: [],
  426. imgList8: [],
  427. carImageListId: [],
  428. ownerImageListId: [],
  429. policyHolderImageListId: [],
  430. insuredPersonImageListId: [],
  431. imageCollection: {}, //影像集合
  432. id: "",
  433. cnName: "",
  434. quotableCompanyList: [],
  435. }
  436. },
  437. async onLoad(options) {
  438. this.loadingShow = true;
  439. try {
  440. if (options) {
  441. await this.getDicType("car_tax_code"); //车船税类型
  442. await this.getDicType("taxpayerIdentifier"); //纳税人证件类型
  443. await this.getDicType("car_tax_reason_code"); //减免税原因代码
  444. await this.getDicType("car_nature_code"); //使用性质
  445. await this.getDicType("vehicle_use_code", "01"); //营业
  446. await this.getDicType("vehicle_use_code", "02"); //非营业
  447. await this.getDicType("car_kind_code"); //车辆种类
  448. await this.getDicType("energy_type_code"); //能源类型
  449. await this.getDicType("car_type_code"); //车辆类型
  450. let res = await this.$http.get('/supplementOrder/getOrderDetail?ordersNo=' + options.ordersNo);
  451. if (res.code == 200) {
  452. this.insCompanyVo = res.data.insCompanyVo[0]; //保险公司信息
  453. this.orderStatus = res.data.order.orderStatus; //订单状态
  454. this.companyName = res.data.order.companyName; //保险公司简称
  455. this.ordersNo = res.data.order.ordersNo; //订单号
  456. this.quoteNo = res.data.order.quoteNo; //报价号
  457. this.ciRiskInfoVo = res.data.ciRiskInfoVo; //交强大类
  458. this.biRiskInfoVo = res.data.biRiskInfoVo; //商业大类
  459. this.costs = res.data.costs; //报价金额信息
  460. this.policy = res.data.policy; //保单号信息
  461. this.kindInfoVo = res.data.kindInfoVo; //商业险险别
  462. this.accidentalDrivings = res.data.accidentalDrivings; //驾意险
  463. this.carInfoVo = res.data.carInfoVo; //车辆信息
  464. this.ownersInfo = res.data.ownersInfo; //车主信息
  465. this.policyHolderInfo = res.data.policyHolderInfo; //投保人信息
  466. this.insuredPersonInfo = res.data.insuredPersonInfo; //被保人信息
  467. this.scoreVo = res.data.scoreVo; //保费因素
  468. this.insFeeOrders = res.data.insFeeOrders; //费用信息
  469. this.costRatio = res.data.costRatio; //比例信息
  470. this.insOrderRightsInfoVo = res.data.insOrderRightsInfoVo; //权益信息
  471. this.vehicleAndVesselTaxVo = res.data.vehicleAndVesselTaxVo; //车船税信息
  472. this.order = res.data.order;
  473. // 去掉this.kindInfoVo中的交强险
  474. this.kindInfoVo = this.kindInfoVo.filter(item => item.kindCode != 'J1')
  475. this.carInfoVo1.carNatureCode = dictionaryMatch(this.car_nature_codeoptions, res
  476. .data.carInfoVo
  477. .carNatureCode)
  478. if (res.data.carInfoVo.carNatureCode == '01') {
  479. this.carInfoVo1.vehicleUseCode = dictionaryMatch(this
  480. .vehicle_use_code01options,
  481. res.data
  482. .carInfoVo
  483. .vehicleUseCode)
  484. } else {
  485. this.carInfoVo1.vehicleUseCode = dictionaryMatch(this
  486. .vehicle_use_code02options,
  487. res.data
  488. .carInfoVo
  489. .vehicleUseCode)
  490. }
  491. this.carInfoVo1.carTypeCode = dictionaryMatch(this.car_type_codeoptions, res.data
  492. .carInfoVo
  493. .carTypeCode)
  494. this.carInfoVo1.carKindCode = dictionaryMatch(this.car_kind_codeoptions, res.data
  495. .carInfoVo
  496. .carKindCode)
  497. this.carInfoVo1.energyTypeCode = dictionaryMatch(this.energy_type_codeoptions, res
  498. .data
  499. .carInfoVo
  500. .energyTypeCode)
  501. if (this.quoteNo) {
  502. this.imageEcho(this.quoteNo) // 影像获取完毕
  503. }
  504. }
  505. this.loadingShow = false;
  506. }
  507. } catch (error) {
  508. this.loadingShow = false;
  509. }
  510. },
  511. async mounted() {
  512. this.detailbackimg = await turnBase64Image('/static/image/detailback.png');
  513. },
  514. computed: {
  515. //获取车船税类型
  516. taxRelifFlagName() {
  517. let info = this.car_tax_codeoptions.find(ele => ele.value === this.vehicleAndVesselTaxVo.taxRelifFlag)
  518. return info?.description;
  519. }
  520. },
  521. methods: {
  522. // 权益详情
  523. customerRightsDetail() {
  524. let params = {
  525. ownersInfo: this.ownersInfo, //车主
  526. policyHolderInfo: this.policyHolderInfo, //投保人
  527. insuredPersonInfo: this.insuredPersonInfo, //被保人
  528. insFeeOrders: this.insFeeOrders,
  529. ordersNo: this.ordersNo,
  530. insOrderRightsInfoVo: this.insOrderRightsInfoVo,
  531. }
  532. uni.navigateTo({
  533. url: '/pages/reward/customerBenefit?info=' + JSON.stringify(params) + '&readOnly=1'
  534. })
  535. },
  536. //更多操作
  537. cloudPopupChange(index) {
  538. switch (index) {
  539. case 0: //修改方案
  540. this.modificationPlan();
  541. break;
  542. case 1: //修改信息
  543. this.toCarInfo();
  544. break;
  545. case 2: //删除订单
  546. break;
  547. default:
  548. }
  549. },
  550. //撤销二维码
  551. async revokePaymentCode() {
  552. let res = await this.$http.post('/order/qrCode/destroyQrCode', {
  553. orderNo: this.ordersNo,
  554. })
  555. if (res.code == 200) {
  556. uni.showToast({
  557. icon: 'none',
  558. title: '撤销成功'
  559. })
  560. }
  561. },
  562. //修改信息
  563. toCarInfo() {
  564. uni.navigateTo({
  565. url: '/pages/quote/quoteInfo',
  566. success: (res) => {
  567. res.eventChannel.emit(
  568. "acceptData", {
  569. carInfo: this
  570. .carInfoVo, //车辆信息
  571. ownerInfo: this
  572. .ownersInfo, //车主信息
  573. policyHolderInfo: this
  574. .policyHolderInfo, //投保人信息
  575. insuredPersonInfo: this
  576. .insuredPersonInfo, //被保人信息
  577. carImageListId: this
  578. .carImageListId, //车辆
  579. ownerImageListId: this
  580. .ownerImageListId, //车主
  581. policyHolderImageListId: this
  582. .policyHolderImageListId, //投保
  583. insuredPersonImageListId: this
  584. .insuredPersonImageListId, //被保人
  585. productId: this.order.productId, //险种id
  586. productName: this.order.productsName, //险种名称
  587. quoteno: this.quoteNo, //报价号
  588. })
  589. }
  590. }, "navigateTo", true);
  591. },
  592. //修改方案
  593. modificationPlan() {
  594. uni.navigateTo({
  595. url: '/pages/quote/chooseOption',
  596. success: (res) => {
  597. res.eventChannel.emit("acceptData", {
  598. params: {
  599. companyId: this.insCompanyVo.id,
  600. productId: this.order.productId,
  601. },
  602. nameSimple: this.insCompanyVo.nameSimple,
  603. cnName: this.insCompanyVo.cnName,
  604. jqstartDate: this.ciRiskInfoVo?.startDate,
  605. jqendDate: this.ciRiskInfoVo?.endDate,
  606. systartDate: this.biRiskInfoVo?.startDate,
  607. syendDate: this.biRiskInfoVo?.endDate,
  608. productName: this.order.productsName,
  609. quotableCompanyList: this.quotableCompanyList,
  610. identifyNumber: this.policyHolderInfo.identifyNumber,
  611. taxpayerName: this.policyHolderInfo.name,
  612. })
  613. }
  614. }, "navigateTo", true);
  615. },
  616. //跳转微信客服
  617. async getWechatCustomer() {
  618. let res = await this.$http.get('/organization/wechat/customerService/manage/find/link')
  619. if (res.code == 200) {
  620. if (plus) { // 确保在App环境下
  621. plus.runtime.openURL(res.data);
  622. }
  623. }
  624. },
  625. //操作类型匹配
  626. matchOperationType(optType) {
  627. const Operation = {
  628. 0: '订单创建',
  629. 1: '报价',
  630. 2: '补传影像',
  631. 3: '调整特约',
  632. 4: '修改折扣系数',
  633. 5: '核保',
  634. 6: '获取支付码',
  635. 7: '撤销支付码',
  636. 8: '下载电子保单',
  637. 9: '同步订单',
  638. 10: '订单编辑',
  639. }
  640. return Operation[optType] || ''
  641. },
  642. //订单轨迹展开收起
  643. toggleCollapse(item) {
  644. item.isCollapsed = !item.isCollapsed
  645. },
  646. //确认核保
  647. async underwritingEvent() {
  648. this.underwritingShow = false;
  649. this.loading = true;
  650. let images = await this.$http.post('/unify/order/imagesUpload', {
  651. order: this.order,
  652. });
  653. if (images.code == '200') {
  654. let underwriting = await this.$http.post('/unify/order/underwriting', {
  655. order: {
  656. ordersNo: this.ordersNo,
  657. }
  658. });
  659. if (underwriting.code == '200') {
  660. let res = await this.$http.get('/supplementOrder/getOrderDetail?ordersNo=' + this.id);
  661. if (res.code == '200') {
  662. this.orderStatus = res.data.order.orderStatus; //订单状态
  663. }
  664. this.loading = false;
  665. uni.showToast({
  666. icon: 'none',
  667. title: '核保成功'
  668. })
  669. } else {
  670. this.loading = false;
  671. uni.showToast({
  672. icon: 'none',
  673. title: underwriting.msg
  674. })
  675. }
  676. } else {
  677. this.loading = false;
  678. uni.showToast({
  679. icon: 'none',
  680. title: images.msg
  681. })
  682. }
  683. },
  684. //取消核保
  685. cancelUnderwritingEvent() {
  686. //
  687. },
  688. //删除订单
  689. deleteOrderEvent() {
  690. //
  691. },
  692. // 撤销支付码
  693. revokePaymentEvent() {
  694. //
  695. },
  696. //核保状态刷新
  697. async refreshUnderwriting() {
  698. let OrderStatus = await this.$http.post('/unify/order/getOrderStatus', {
  699. order: {
  700. ordersNo: this.ordersNo,
  701. },
  702. });
  703. if (OrderStatus.code == '200') {
  704. let res = await this.$http.get('/supplementOrder/getOrderDetail?ordersNo=' + this.ordersNo);
  705. if (res.code == '200') {
  706. this.orderStatus = res.data.order.orderStatus; //订单状态
  707. }
  708. }
  709. },
  710. //支付状态刷新
  711. async refreshPayment() {
  712. let OrderStatus = await this.$http.post('/unify/order/getOrderStatus', {
  713. order: {
  714. ordersNo: this.ordersNo,
  715. },
  716. });
  717. if (OrderStatus.code == '200') {
  718. let res = await this.$http.get('/supplementOrder/getOrderDetail?ordersNo=' + this.ordersNo);
  719. if (res.code == '200') {
  720. this.orderStatus = res.data.order.orderStatus; //订单状态
  721. }
  722. }
  723. },
  724. //影像预览
  725. previewImage(e, type) {
  726. this.previewImgs = this[type];
  727. var current = e;
  728. this.$refs.previewImage.open(current); // 传入当前选中的图片地址或序号
  729. },
  730. //删除图片
  731. delCheckImage(param, IdList, srcList) {
  732. this[IdList].map((ele, index) => {
  733. if (param.imageId === ele.imageId) {
  734. this[IdList].splice(index, 1);
  735. }
  736. return ele;
  737. });
  738. this[srcList].map((ele, index) => {
  739. if (param.imageId === ele.imageId) {
  740. this[srcList].splice(index, 1);
  741. }
  742. return ele;
  743. });
  744. },
  745. //影像查询
  746. async imageEcho(quotenos) {
  747. this.imgList1 = [];
  748. this.imgList2 = [];
  749. this.imgList3 = [];
  750. this.imgList4 = [];
  751. this.imgList5 = [];
  752. this.imgList6 = [];
  753. this.imgList7 = [];
  754. this.imgList8 = [];
  755. let res = await this.$http.get('/order/taskImages/selectByQuoteNo?quoteNo=' + quotenos);
  756. if (res.code == "200") {
  757. res.data.images.forEach((keys) => {
  758. if (keys.downloadUrl) {
  759. switch (keys.imageType) {
  760. case 'C01':
  761. this.carImageListId.push({
  762. imageBase64List: [{
  763. imageId: keys.imageId
  764. }],
  765. imageCode: keys.imageType,
  766. })
  767. this.imgList1.push(keys);
  768. break;
  769. case 'D01':
  770. this.carImageListId.push({
  771. imageBase64List: [{
  772. imageId: keys.imageId
  773. }],
  774. imageCode: keys.imageType,
  775. })
  776. this.imgList2.push(keys);
  777. break;
  778. case 'C02':
  779. this.ownerImageListId.push({
  780. imageBase64List: [{
  781. imageId: keys.imageId
  782. }],
  783. imageCode: keys.imageType,
  784. })
  785. this.imgList3.push(keys);
  786. break;
  787. case 'D02':
  788. this.ownerImageListId.push({
  789. imageBase64List: [{
  790. imageId: keys.imageId
  791. }],
  792. imageCode: keys.imageType,
  793. })
  794. this.imgList4.push(keys);
  795. break;
  796. case 'C03':
  797. this.policyHolderImageListId.push({
  798. imageBase64List: [{
  799. imageId: keys.imageId
  800. }],
  801. imageCode: keys.imageType,
  802. })
  803. this.imgList5.push(keys);
  804. break;
  805. case 'D03':
  806. this.policyHolderImageListId.push({
  807. imageBase64List: [{
  808. imageId: keys.imageId
  809. }],
  810. imageCode: keys.imageType,
  811. })
  812. this.imgList6.push(keys);
  813. break;
  814. case 'C04':
  815. this.insuredPersonImageListId.push({
  816. imageBase64List: [{
  817. imageId: keys.imageId
  818. }],
  819. imageCode: keys.imageType,
  820. })
  821. this.imgList7.push(keys);
  822. break;
  823. case 'D04':
  824. this.insuredPersonImageListId.push({
  825. imageBase64List: [{
  826. imageId: keys.imageId
  827. }],
  828. imageCode: keys.imageType,
  829. })
  830. this.imgList8.push(keys);
  831. break;
  832. default:
  833. break;
  834. }
  835. }
  836. });
  837. this.imageCollection = {
  838. imgList1: this.imgList1,
  839. imgList2: this.imgList2,
  840. imgList3: this.imgList3,
  841. imgList4: this.imgList4,
  842. imgList5: this.imgList5,
  843. imgList6: this.imgList6,
  844. imgList7: this.imgList7,
  845. imgList8: this.imgList8,
  846. }
  847. }
  848. },
  849. //数据字典
  850. async getDicType(type, vehicle) {
  851. if (vehicle) {
  852. let res = await this.$http.get(`/dict/get?dictCode=${type}&parentValue=${vehicle}`);
  853. this[type + vehicle + "options"] = res.data;
  854. } else {
  855. let res = await this.$http.get('/dict/get?dictCode=' + type);
  856. this[type + "options"] = res.data;
  857. }
  858. },
  859. //去支付
  860. payNow() {
  861. uni.navigateTo({
  862. url: '/pages/quote/paymentCode?ordersNo=' + this.ordersNo,
  863. })
  864. },
  865. //跳转电子保单页面
  866. ePolicy() {
  867. uni.navigateTo({
  868. url: '/pages/quote/ePolicy?ordersNo=' + this.ordersNo,
  869. })
  870. },
  871. //分享微信
  872. weixin() {
  873. uni.share({
  874. provider: "weixin",
  875. scene: "WXSceneSession",
  876. type: 0,
  877. href: "http://uniapp.dcloud.io/",
  878. title: "京AG***12025年的车险报价",
  879. summary: "平安车险报价完成,保费:2563元,点击查看详情",
  880. imageUrl: "/static/image/zgcx.png",
  881. success: function(res) {
  882. console.log("success:" + JSON.stringify(res));
  883. },
  884. fail: function(err) {
  885. console.log("fail:" + JSON.stringify(err));
  886. }
  887. });
  888. },
  889. //短信分享
  890. userSmsShare() {
  891. var msg = plus.messaging.createMessage(plus.messaging.TYPE_SMS);
  892. msg.to = ["13546347757"]; //投保人手机号
  893. msg.body =
  894. `【掌柜车险】尊敬的【京NH***7】车主,平安保险2025年车险报价:4562.23元;联系人:修封 18805520001,点击链接查看详情或电话咨询联系人 https://app.axure.cloud/app/project/jl0lf9/`;
  895. plus.messaging.sendMessage(msg);
  896. },
  897. //复制链接
  898. copyLink() {
  899. uni.setClipboardData({
  900. data: '2321321321321', //要被复制的内容
  901. success: () => { //复制成功的回调函数
  902. uni.showToast({ //提示
  903. icon: 'none',
  904. title: '链接已复制'
  905. })
  906. }
  907. });
  908. },
  909. //取消
  910. closeShareModal() {
  911. this.shareShow = false;
  912. },
  913. //保存相册
  914. saveToAlbum() {
  915. base64ToPath(this.posterUrl)
  916. .then(path => {
  917. uni.saveImageToPhotosAlbum({ //保存图片到系统相册。
  918. filePath: path, //图片文件路径
  919. success: function() {
  920. uni.showToast({
  921. title: '已保存到相册',
  922. icon: 'none',
  923. });
  924. },
  925. fail: function(e) {
  926. uni.showToast({
  927. title: '图片保存失败',
  928. icon: 'none',
  929. });
  930. }
  931. });
  932. })
  933. },
  934. //页面截图转路径
  935. receiveRenderData(val) {
  936. this.posterUrl = val.replace(/[\r\n]/g, ''); // 去除base64位中的空格
  937. },
  938. showLoading() {
  939. uni.showLoading({
  940. title: '正在生成图片'
  941. });
  942. },
  943. hideLoading() {
  944. uni.hideLoading();
  945. },
  946. //右上角分享icon
  947. share() {
  948. this.shareShow = true;
  949. },
  950. click(item) {
  951. this.current = item.index;
  952. },
  953. //影像资料上传
  954. async chooseImage(type, imageIdList, imgurl) {
  955. let [chooseImageErr, chooseImageRes] = await uni.chooseImage({
  956. count: 1,
  957. sizeType: ['compressed']
  958. });
  959. if (chooseImageRes) {
  960. uni.uploadFile({
  961. url: this.$base.baseUrl + '/file/upload',
  962. filePath: chooseImageRes.tempFilePaths[0],
  963. name: "file",
  964. formData: {
  965. 'type': 'image',
  966. },
  967. header: {
  968. Authorization: store.state.token,
  969. system_code: store.state.system_code ? store.state.system_code : ''
  970. },
  971. success: async (imgRes) => {
  972. let data = JSON.parse(imgRes.data);
  973. if (data.code == "200") {
  974. if (this[imageIdList].some(v => v.imageType == type)) {
  975. this[imageIdList].map(val => {
  976. if (val.imageType == type) {
  977. val.imageId = data.data.id;
  978. }
  979. })
  980. } else {
  981. this[imageIdList].push({
  982. imageId: data.data.id,
  983. imageType: type,
  984. })
  985. }
  986. console.log(data);
  987. this[imgurl].push(data.data)
  988. this.modificationFlag = true;
  989. }
  990. }
  991. });
  992. }
  993. },
  994. }
  995. }
  996. </script>
  997. <script module="canvasImage" lang="renderjs">
  998. import html2canvas from 'html2canvas'
  999. export default {
  1000. data() {
  1001. return {
  1002. }
  1003. },
  1004. mounted() {
  1005. // #ifdef APP-PLUS
  1006. setTimeout(() => {
  1007. this.canvasImage.generateImage()
  1008. }, 1000);
  1009. // #endif
  1010. },
  1011. methods: {
  1012. generateImage() {
  1013. setTimeout(() => {
  1014. this.$ownerInstance.callMethod('showLoading')
  1015. const dom = document.getElementById('panelcanvas') // 需要生成图片内容的 dom 节点
  1016. html2canvas(dom, {
  1017. width: dom.clientWidth, //dom 原始宽度
  1018. height: dom.clientHeight,
  1019. scrollY: 0, // html2canvas默认绘制视图内的页面,需要把scrollY,scrollX设置为0
  1020. scrollX: 0,
  1021. useCORS: true, //支持跨域
  1022. // allowTaint: false,
  1023. scale: 2, // 设置生成图片的像素比例,默认是1,如果生成的图片模糊的话可以开启该配置项
  1024. }).then((canvas) => {
  1025. // 生成成功
  1026. this.$ownerInstance.callMethod('hideLoading')
  1027. this.$ownerInstance.callMethod('receiveRenderData', canvas.toDataURL('image/png'))
  1028. }).catch(err => {
  1029. // 生成失败 弹出提示弹窗
  1030. this.$ownerInstance.callMethod('_errAlert', `【生成图片失败,请重试】${err}`)
  1031. })
  1032. }, 300)
  1033. }
  1034. },
  1035. }
  1036. </script>
  1037. <style lang="scss" scoped>
  1038. /* 基础设置 */
  1039. page {
  1040. height: 100vh;
  1041. background-color: #f8f8f8;
  1042. }
  1043. .page {
  1044. height: 100vh;
  1045. position: relative;
  1046. background-color: #f8f8f8;
  1047. }
  1048. /* 背景图 */
  1049. .back {
  1050. width: 100%;
  1051. height: 492rpx;
  1052. position: absolute;
  1053. top: 0;
  1054. left: 0;
  1055. z-index: 0;
  1056. }
  1057. /* 状态区域 */
  1058. .statusFeedbackArea {
  1059. position: relative;
  1060. padding: 20rpx 30rpx 20rpx;
  1061. font-size: 36rpx;
  1062. color: #333;
  1063. font-weight: bold;
  1064. z-index: 1;
  1065. background: transparent;
  1066. .text {
  1067. font-size: 28rpx;
  1068. color: rgba(51, 51, 51, 0.7);
  1069. font-weight: 500;
  1070. }
  1071. }
  1072. /* 主要内容容器 */
  1073. .details-content {
  1074. flex: 1;
  1075. position: relative;
  1076. background: rgba(255, 255, 255, 0.9);
  1077. border-radius: 40rpx 40rpx 0 0;
  1078. padding: 30rpx;
  1079. box-sizing: border-box;
  1080. backdrop-filter: blur(100rpx);
  1081. display: flex;
  1082. flex-direction: column;
  1083. overflow: hidden;
  1084. z-index: 2;
  1085. /* 头部样式 */
  1086. .company-header {
  1087. .logo {
  1088. width: 40rpx;
  1089. height: 40rpx;
  1090. }
  1091. .title {
  1092. font-weight: bold;
  1093. color: #333;
  1094. font-size: 32rpx;
  1095. }
  1096. .price {
  1097. text:first-child {
  1098. font-size: 28rpx;
  1099. color: #333;
  1100. }
  1101. text:last-child {
  1102. font-size: 32rpx;
  1103. color: #FF540A;
  1104. font-weight: bold;
  1105. }
  1106. }
  1107. }
  1108. /* 选项卡容器 */
  1109. .contentTabs {
  1110. flex: 1;
  1111. display: flex;
  1112. flex-direction: column;
  1113. height: 100%;
  1114. background: #FFFFFF;
  1115. box-shadow: 0rpx 0rpx 16rpx 0rpx rgba(0, 0, 0, 0.05);
  1116. border-radius: 20rpx 20rpx 10rpx 10rpx;
  1117. margin-top: 28rpx;
  1118. /* 滚动区域 */
  1119. .scroll-content {
  1120. flex: 1;
  1121. overflow-y: auto;
  1122. padding: 20rpx 0 200rpx;
  1123. /* 增加底部留白 */
  1124. box-sizing: border-box;
  1125. /* 确保padding计入高度 */
  1126. }
  1127. }
  1128. }
  1129. //底部样式
  1130. .footer {
  1131. position: fixed;
  1132. bottom: 0;
  1133. left: 0;
  1134. background: linear-gradient(0, #FFFFFF 0%, rgba(255, 254, 245, 0.8) 100%);
  1135. backdrop-filter: blur(40rpx);
  1136. z-index: 9;
  1137. width: 100%;
  1138. padding: 25rpx 20rpx;
  1139. box-sizing: border-box;
  1140. .btn {
  1141. color: #1f1f1f;
  1142. font-size: 34rpx;
  1143. background: rgba(253, 233, 53, 0.2);
  1144. border-radius: 58rpx 58rpx 58rpx 58rpx;
  1145. padding: 19rpx 0;
  1146. box-sizing: border-box;
  1147. border: 1rpx solid #FDE935;
  1148. width: 100%;
  1149. margin: 0 10rpx;
  1150. }
  1151. .btn:last-child {
  1152. background: #FDE935;
  1153. }
  1154. }
  1155. //折扣系数查看弹窗
  1156. .viewDiscount {
  1157. padding: 40rpx;
  1158. box-sizing: border-box;
  1159. .top {
  1160. font-size: 32rpx;
  1161. color: #333;
  1162. font-weight: bold;
  1163. }
  1164. .center {
  1165. background: #FAFAFA;
  1166. border-radius: 10rpx 10rpx 10rpx 10rpx;
  1167. padding: 10rpx 20rpx;
  1168. box-sizing: border-box;
  1169. margin-bottom: 20rpx;
  1170. >view {
  1171. margin-bottom: 20rpx;
  1172. >text:first-child {
  1173. font-size: 30rpx;
  1174. color: #666;
  1175. position: relative;
  1176. padding-left: 20rpx;
  1177. ::before {
  1178. content: "";
  1179. width: 8rpx;
  1180. height: 8rpx;
  1181. border-radius: 50%;
  1182. background-color: #666;
  1183. position: absolute;
  1184. top: 50%;
  1185. transform: translateY(-50%);
  1186. left: 0;
  1187. }
  1188. }
  1189. }
  1190. }
  1191. .formula {
  1192. font-size: 30rpx;
  1193. color: #333;
  1194. }
  1195. }
  1196. // 商业险折扣系数样式
  1197. .updateDiscount {
  1198. padding: 40rpx;
  1199. box-sizing: border-box;
  1200. .text {
  1201. font-size: 28rpx;
  1202. color: #666;
  1203. }
  1204. .input {
  1205. font-size: 32rpx;
  1206. color: #333;
  1207. text:last-child {
  1208. color: #999;
  1209. margin-left: 10rpx;
  1210. }
  1211. }
  1212. .btn {}
  1213. }
  1214. // 车船税弹窗
  1215. .vvTaxDetails-cell {
  1216. padding: 40rpx;
  1217. box-sizing: border-box;
  1218. .cell-item {
  1219. font-size: 30rpx;
  1220. color: #333;
  1221. margin-bottom: 30rpx;
  1222. text:last-child {
  1223. font-weight: bold;
  1224. }
  1225. }
  1226. .cell-item:last-child {
  1227. margin-bottom: 0;
  1228. }
  1229. }
  1230. </style>