quoteHistory.vue 52 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726
  1. <template>
  2. <view class="page">
  3. <public-module></public-module>
  4. <view class=" flexd " style="z-index: 99;">
  5. <view class="search dis f-c" v-for="(item, index) in statusList" :key="index"
  6. :style="{backgroundImage: item.headerimg}" v-if="item.value==orderStatus">
  7. <view class="dis a-c j-start ">
  8. <u-icon name="arrow-left" size="40" @tap="back"></u-icon>
  9. <text style="margin: auto;" class="text">{{pagetitle}}</text>
  10. </view>
  11. <view class="car-header dis f-c mt-5">
  12. <view v-for="(insuranceListitem, insuranceListindex) in insuranceList" :key="insuranceListindex"
  13. v-if="insuranceListitem.product==product">
  14. <image :src="insuranceListitem.img" mode=""
  15. style="width: 107px;height: 39px;position: absolute;top: -5px;right: 0;">
  16. </image>
  17. </view>
  18. <view class="dis f-c ">
  19. <text :style="{color:item.Color}" class="licenseno">{{licenseno}}</text>
  20. <text style="color: #666666;font-size: 12px;">{{modelcname}}</text>
  21. <view class="useritem dis a-c j-s mt-1" :style="{background:item.userback}">
  22. <view class="dis f-c a-c">
  23. <text>{{ownername}}</text>
  24. <text>车主</text>
  25. </view>
  26. <view class="dis f-c a-c">
  27. <text>{{applyname}}</text>
  28. <text>投保人</text>
  29. </view>
  30. <view class="dis f-c a-c">
  31. <text>{{insurename}}</text>
  32. <text>被保人</text>
  33. </view>
  34. </view>
  35. </view>
  36. </view>
  37. </view>
  38. </view>
  39. <view class="p-2" style="padding: 240px 12px 50px 12px;" v-if="sublist.length!=0">
  40. <view class="sub-item mt-3" v-for="(item,index) in sublist" :key="index">
  41. <view class="headers dis a-c j-start" :style="{background:item.color}">
  42. <image :src="item.logoimg" mode="" style="width: 23px;height: 23px;"></image>
  43. <text>{{item.inscompany}}</text>
  44. </view>
  45. <view class="sub-orders ">
  46. <view class="dis">
  47. <view class="orders-centre dis f-c">
  48. <view class="dataChunk special dis j-s a-c">
  49. <text>总金额</text>
  50. <text class="font-weight">{{item.sumpremium?item.sumpremium:0}}</text>
  51. </view>
  52. <view class="dataChunk dis j-s a-c" v-if="item.jqpremium">
  53. <text>交强险</text>
  54. <text class="font-weight">{{item.jqpremium?item.jqpremium:'无'}}</text>
  55. </view>
  56. <view class="dataChunk dis j-s a-c" v-if="item.taxamount">
  57. <text>车船税</text>
  58. <text class="font-weight">{{item.taxamount?item.taxamount:'无'}}</text>
  59. </view>
  60. <view class="dataChunk dis j-s a-c" v-if="item.sypremium">
  61. <text>商业险</text>
  62. <text class="font-weight">{{item.sypremium?item.sypremium:'无'}}</text>
  63. </view>
  64. <view class="dataChunk dis j-s a-c" v-if="item.jypremium">
  65. <text>驾意险</text>
  66. <text class="font-weight">{{item.jypremium?item.jypremium:'无'}}</text>
  67. </view>
  68. </view>
  69. <view class="orders-centre dis f-c" v-if="item.sumExportFee">
  70. <view class="dataChunk special dis j-s a-c">
  71. <text style="color:#FF4D4D;">总优惠金额</text>
  72. <text style="color:#FF4D4D;" class="font-weight">{{item.sumExportFee}}</text>
  73. </view>
  74. <view class="dataChunk dis j-s a-c" v-if="item.jqExportFee">
  75. <text>交强优惠金额</text>
  76. <text class="font-weight">{{item.jqExportFee?item.jqExportFee:'无'}}</text>
  77. </view>
  78. <view class="dataChunk dis j-c a-c" v-if="item.taxamount">
  79. <text class="font-weight">-</text>
  80. </view>
  81. <view class="dataChunk dis j-s a-c" v-if="item.syExportFee">
  82. <text>商业优惠金额</text>
  83. <text class="font-weight">{{item.syExportFee?item.syExportFee:"无"}}</text>
  84. </view>
  85. <view class="dataChunk dis j-s a-c" v-if="item.noExportFee">
  86. <text>驾意优惠金额</text>
  87. <text class="font-weight">{{item.noExportFee?item.noExportFee:"无"}}</text>
  88. </view>
  89. </view>
  90. </view>
  91. <view class="dis f-c">
  92. <text class="mt-1" style="font-size: 12px;color: #333;"
  93. v-if="item.jqStartDate">交强险保险期间:{{item.jqStartDate}}-{{item.jqEndDate}}</text>
  94. <text class="mt-1" style="font-size: 12px;color: #333;"
  95. v-if="item.syStartDate">商业险保险期间:{{item.syStartDate}}-{{item.syEndDate}}</text>
  96. </view>
  97. <view class="dis a-c f-wrap time">
  98. <text v-if="item.inscompany == '永诚财险'">光博分:{{ item.ilogPreUdwMess ?
  99. item.ilogPreUdwMess : '无' }}</text>
  100. <text v-else>评分:{{ item.ilogPreUdwMess ?
  101. item.ilogPreUdwMess : '无' }}</text>
  102. <text v-if="item.jqScore">交强类型评分:{{ item.jqScore ?
  103. item.jqScore : '无' }}</text>
  104. <text v-if="item.syScore">商业类型评分:{{ item.syScore ?
  105. item.syScore : '无' }}</text>
  106. <text v-if="item.lossRation">总赔付率:{{ item.lossRation ?
  107. item.lossRation : '无' }}</text>
  108. <text v-if="item.jqLossRation">交强赔付率:{{ item.jqLossRation ?
  109. item.jqLossRation : '无' }}</text>
  110. <text v-if="item.syLossRation">商业赔付率:{{ item.syLossRation ?
  111. item.syLossRation : '无' }}</text>
  112. <text v-if="item.inscompany == '紫金财险'">鼎然-车辆风险评分:{{item.ubiPredictedInfoScore ?
  113. item.ubiPredictedInfoScore : '无'}}</text>
  114. <text v-if="item.jqRenewal">交强续保:{{ item.jqRenewal ?
  115. item.jqRenewal : '无' }}</text>
  116. <text v-if="item.syRenewal">商业续保:{{ item.syRenewal ?
  117. item.syRenewal : '无' }}</text>
  118. <text v-if="item.jqClaims">交强出险次数:{{ item.jqClaims ?
  119. item.jqClaims : '无' }}</text>
  120. <text v-if="item.syClaims">商业出险次数:{{ item.syClaims ?
  121. item.syClaims : '无' }}</text>
  122. </view>
  123. <view class="orders-below dis f-c">
  124. <view class="dis a-c j-end">
  125. <u-button
  126. :custom-style="{fontSize:'12px',background:'rgba(158,0,255,0.05)',color:'#9E00FF',borderColor:'#9E00FF'}"
  127. shape="circle" size="mini" :hair-line="false" :plain="true" type=""
  128. @click="openSteps(item.id)">订单轨迹</u-button>
  129. <u-button
  130. :custom-style="{fontSize:'12px',background:'rgba(255,86,0,0.05)',color:'#FF5600',borderColor:'#FF5600'}"
  131. shape="circle" size="mini" :hair-line="false" :plain="true" type=""
  132. @click="bjdpreview(item.id)">报价单</u-button>
  133. <u-button
  134. :custom-style="{fontSize:'12px',background:'rgba(0,82,255,0.1)',color:'#0052FF',borderColor:'#0052FF'}"
  135. shape="circle" size="mini" :hair-line="false" :plain="true" type=""
  136. @click="detial(item.id)">查看详情</u-button>
  137. </view>
  138. <view class="dis a-c j-end" style="margin-top: 8px;">
  139. <u-button v-if="item.orderstatus==4"
  140. :custom-style="{fontSize:'12px',background:'rgba(255,86,0,0.05)',color:'#FF5600',borderColor:'#FF5600'}"
  141. shape="circle" size="mini" :hair-line="false" :plain="true" type=""
  142. @click="CloseEdit(item.orderno)">重新报价</u-button>
  143. <u-button v-if="item.orderstatus==4"
  144. :custom-style="{fontSize:'12px',background:'rgba(255,86,0,0.05)',color:'#FF5600',borderColor:'#FF5600'}"
  145. shape="circle" size="mini" :hair-line="false" :plain="true" type=""
  146. @click="approvalReason(item.id)">查看原因</u-button>
  147. <u-button v-if="(item.orderstatus==4 || item.orderstatus==1) && item.inscompany=='华泰财险'"
  148. :custom-style="{fontSize:'12px',background:'rgba(255,77,77,0.05)',color:'#FF4D4D',borderColor:'#FF4D4D'}"
  149. shape="circle" size="mini" :hair-line="false" :plain="true" type=""
  150. @click="huataiunderwriting(item)">更新状态</u-button>
  151. <u-button
  152. v-if="item.orderstatus==1 && ['中煤财险','永诚财险','国任财险','大家财险','渤海财险','恒邦财险','安盛天平','中国人寿','众安财险','太平财险','华农财险','泰康财险','诚泰财险'].includes(item.inscompany)"
  153. :custom-style="{fontSize:'12px',background:'rgba(255,77,77,0.05)',color:'#FF4D4D',borderColor:'#FF4D4D'}"
  154. shape="circle" size="mini" :hair-line="false" :plain="true" type=""
  155. @click="underwriting(item.id,item.inscompany)">更新状态</u-button>
  156. <u-button v-if="item.orderstatus==2 && ['紫金财险'].includes(item.inscompany)"
  157. :custom-style="{fontSize:'12px',background:'rgba(159,159,159,0.05)',color:'#666666',borderColor:'#D2D2D2'}"
  158. shape="circle" size="mini" :hair-line="false" :plain="true"
  159. @click="cancelorder(item.id)">撤单</u-button>
  160. <u-button v-if="item.orderstatus==2"
  161. :custom-style="{fontSize:'12px',background:'rgba(255,86,0,0.05)',color:'#FF5600',borderColor:'#FF5600'}"
  162. shape="circle" size="mini" :hair-line="false" :plain="true" type=""
  163. @click="Payment(item.id,item.apiType)">缴费二维码</u-button>
  164. <u-button
  165. v-if="item.orderstatus==2 && ['恒邦财险','安盛天平','中国人寿','众安财险','太平财险','紫金财险','永诚财险','国任财险','大家财险','华泰财险','中煤财险','华农财险','渤海财险','泰康财险','诚泰财险'].includes(item.inscompany)"
  166. :custom-style="{fontSize:'12px',background:'rgba(255,86,0,0.05)',color:'#FF5600',borderColor:'#FF5600'}"
  167. shape="circle" size="mini" :hair-line="false" :plain="true" type=""
  168. @click="queryStatus(item.id,item)">查询缴费状态</u-button>
  169. <u-button v-if="item.orderstatus==2"
  170. :custom-style="{fontSize:'12px',background:'rgba(159,159,159,0.05)',color:'#666666',borderColor:'#D2D2D2'}"
  171. shape="circle" size="mini" :hair-line="false" :plain="true"
  172. @click="revokeCode(item.id)">撤销二维码</u-button>
  173. <u-button v-if="item.orderstatus==1"
  174. :custom-style="{fontSize:'12px',background:'rgba(159,159,159,0.05)',color:'#666666',borderColor:'#D2D2D2'}"
  175. shape="circle" size="mini" :hair-line="false" :plain="true"
  176. @click="revokeUnderwriting(item.id)">取消核保</u-button>
  177. <u-button v-if=" item.orderstatus==4 "
  178. :custom-style="{fontSize:'12px',background:'rgba(34,152,5,0.05)',color:'#229805',borderColor:'#229805'}"
  179. shape="circle" size="mini" :hair-line="false" :plain="true"
  180. @click="resubmitDocuments(item)">补传资料</u-button>
  181. <u-button v-if="item.orderstatus==1 || item.orderstatus==4 "
  182. :custom-style="{fontSize:'12px',background:'rgba(159,159,159,0.05)',color:'#666666',borderColor:'#D2D2D2'}"
  183. shape="circle" size="mini" :hair-line="false" :plain="true"
  184. @click="terminateOrder(item.id)">关闭订单</u-button>
  185. </view>
  186. </view>
  187. </view>
  188. </view>
  189. </view>
  190. <o-empty v-if="sublist.length==0" />
  191. <u-modal v-model="approvalReasonShow" title="核保原因"
  192. :title-style="{fontWeight: 'bold',borderBottom:'1px solid #f2f2f2',padding:'10px'}"
  193. :show-cancel-button="false"
  194. :confirm-style="{background:'#E6EEFF',color:'#0052FF',height:'40px',lineHeight:'40px'}"
  195. @confirm="approvalReasonShow=false" confirm-text="关闭">
  196. <view class="slot-content dis a-c p-2">
  197. <scroll-view :scroll-top="scrollTop" scroll-y="true" class="discountInfoscroll">
  198. <rich-text :nodes="approvalReasonContent"></rich-text>
  199. </scroll-view>
  200. </view>
  201. </u-modal>
  202. <u-modal v-model="revokeQrCodeShow" title="提示"
  203. :title-style="{fontWeight: 'bold',borderBottom:'1px solid #f2f2f2',padding:'10px'}"
  204. :show-cancel-button="true"
  205. :confirm-style="{background:'#E6EEFF',color:'#0052FF',height:'40px',lineHeight:'40px'}"
  206. :cancel-style="{height:'40px',lineHeight:'40px'}" @confirm="revokeQrCodeconfirm" confirm-text="确定">
  207. <view class="slot-content dis a-c j-c p-2">
  208. 确认撤销二维码?
  209. </view>
  210. </u-modal>
  211. <u-modal v-model="OrderTrackShow" title="订单轨迹"
  212. :title-style="{fontWeight: 'bold',borderBottom:'1px solid #f2f2f2',padding:'10px'}"
  213. :show-cancel-button="false"
  214. :confirm-style="{background:'#E6EEFF',color:'#0052FF',height:'40px',lineHeight:'40px'}"
  215. @confirm="OrderTrackShow=false" confirm-text="关闭">
  216. <view class="slot-content dis a-c p-2">
  217. <view class="dis a-c j-c f-c">
  218. <view class="TrackRecord dis f-c a-start" v-for="(item,index) in TrackRecordList" :key="index">
  219. <view class="dis a-c">
  220. <view class="circle dis j-c a-c">{{index+1}}</view>
  221. <text class="title">{{item.orderStatus}}</text>
  222. </view>
  223. <view class="dis f-c content mt-2">
  224. <view class="">
  225. <text>保险公司:{{item.insCompany}}</text>
  226. <text style="margin-left: 10px;">提交人:{{item.operator}}</text>
  227. </view>
  228. <text>创建时间:{{item.createTime}}</text>
  229. </view>
  230. </view>
  231. </view>
  232. </view>
  233. </u-modal>
  234. <u-modal v-model="resubmitDocumentsShow" title="补传资料" :title-style="{fontWeight:'bold'}" confirm-text="确定"
  235. cancel-text="取消" :confirm-style="{background:'#0052FF',color:'#fff'}" :show-cancel-button="true" width="90%"
  236. @confirm="underwriteconfirm" @cancel="resubmitDocumentsShow=false">
  237. <view class="slot-content">
  238. <scroll-view class="scrollBar" scroll-y="true"
  239. style="max-height: 500px; padding: 10px 20px; box-sizing: border-box;">
  240. <view class="content">
  241. <view class="uni-uploader">
  242. <view class="uni-uploader-body dis j-s a-c">
  243. <view class="uni-uploader__files dis f-c a-start ">
  244. <text style="color: #232832;font-size: 13px;margin-left: 5px;">行驶证主页</text>
  245. <block v-for="(image,index) in imgList1" :key="index">
  246. <view class="uni-uploader__file">
  247. <image class="uni-uploader__img" :src="image.url" :data-src="image.url"
  248. @tap="previewImage($event,'imgList1')"></image>
  249. <view class="delImgIcon iconfont icon-cuowu d-flex a-center j-center"
  250. @tap="delCheckImage(image,'carImageListId','imgList1')"></view>
  251. </view>
  252. </block>
  253. <view v-if="imgList1.length==0 " class="uni-uploader__input-box"
  254. style="box-sizing: border-box;">
  255. <view class="uni-uploader__input"
  256. @tap="chooseImage('C01','carImageListId','imgList1')">
  257. </view>
  258. </view>
  259. </view>
  260. <view class="uni-uploader__files dis f-c a-start">
  261. <text style="color: #232832;font-size: 13px;margin-left: 5px;">行驶证副本</text>
  262. <block v-for="(image,index) in imgList2" :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,'imgList2')"></image>
  266. <view class="delImgIcon iconfont icon-cuowu d-flex a-center j-center"
  267. @tap="delCheckImage(image,'carImageListId','imgList2')"></view>
  268. </view>
  269. </block>
  270. <view v-if="imgList2.length==0" class="uni-uploader__input-box"
  271. style="box-sizing: border-box;">
  272. <view class="uni-uploader__input"
  273. @tap="chooseImage('D01','carImageListId','imgList2')">
  274. </view>
  275. </view>
  276. </view>
  277. </view>
  278. </view>
  279. <view class="uni-uploader">
  280. <view class="uni-uploader-body dis j-s a-c">
  281. <view class="uni-uploader__files dis f-c a-start">
  282. <text style="color: #232832;font-size: 13px;margin-left: 5px;">车主身份证正面</text>
  283. <block v-for="(image,index) in imgList3" :key="index">
  284. <view class="uni-uploader__file">
  285. <image class="uni-uploader__img" :src="image.url" :data-src="image.url"
  286. @tap="previewImage($event,'imgList3')"></image>
  287. <view class="delImgIcon iconfont icon-cuowu d-flex a-center j-center"
  288. @tap="delCheckImage(image,'ownerImageListId','imgList3')"></view>
  289. </view>
  290. </block>
  291. <view v-if="imgList3.length==0" class="uni-uploader__input-box"
  292. style="box-sizing: border-box;">
  293. <view class="uni-uploader__input"
  294. @tap="chooseImage('C02','ownerImageListId','imgList3')"></view>
  295. </view>
  296. </view>
  297. <view class="uni-uploader__files dis f-c a-start">
  298. <text style="color: #232832;font-size: 13px;margin-left: 5px;">车主身份证反面</text>
  299. <block v-for="(image,index) in imgList4" :key="index">
  300. <view class="uni-uploader__file">
  301. <image class="uni-uploader__img" :src="image.url" :data-src="image.url"
  302. @tap="previewImage($event,'imgList4')"></image>
  303. <view class="delImgIcon iconfont icon-cuowu d-flex a-center j-center"
  304. @tap="delCheckImage(image,'ownerImageListId','imgList4')"></view>
  305. </view>
  306. </block>
  307. <view v-if="imgList4.length==0" class="uni-uploader__input-box"
  308. style="box-sizing: border-box;">
  309. <view class="uni-uploader__input"
  310. @tap="chooseImage('D02','ownerImageListId','imgList4')"></view>
  311. </view>
  312. </view>
  313. </view>
  314. </view>
  315. <view class="uni-uploader">
  316. <view class="uni-uploader-body dis j-s a-c">
  317. <view class="uni-uploader__files dis f-c a-start">
  318. <text style="color: #232832;font-size: 13px;margin-left: 5px;">投保人身份证正面</text>
  319. <block v-for="(image,index) in imgList5" :key="index">
  320. <view class="uni-uploader__file">
  321. <image class="uni-uploader__img" :src="image.url" :data-src="image.url"
  322. @tap="previewImage($event,'imgList5')"></image>
  323. <view class="delImgIcon iconfont icon-cuowu d-flex a-center j-center"
  324. @tap="delCheckImage(image,'policyImageListId','imgList5')"></view>
  325. </view>
  326. </block>
  327. <view v-if="imgList5.length==0" class="uni-uploader__input-box"
  328. style="box-sizing: border-box;">
  329. <view class="uni-uploader__input"
  330. @tap="chooseImage('C03','policyImageListId','imgList5')"></view>
  331. </view>
  332. </view>
  333. <view class="uni-uploader__files dis f-c a-start">
  334. <text style="color: #232832;font-size: 13px;margin-left: 5px;">投保人身份证反面</text>
  335. <block v-for="(image,index) in imgList6" :key="index">
  336. <view class="uni-uploader__file">
  337. <image class="uni-uploader__img" :src="image.url" :data-src="image.url"
  338. @tap="previewImage($event,'imgList6')"></image>
  339. <view class="delImgIcon iconfont icon-cuowu d-flex a-center j-center"
  340. @tap="delCheckImage(image,'policyImageListId','imgList6')"></view>
  341. </view>
  342. </block>
  343. <view v-if="imgList6.length==0" class="uni-uploader__input-box"
  344. style="box-sizing: border-box;">
  345. <view class="uni-uploader__input"
  346. @tap="chooseImage('D03','policyImageListId','imgList6')"></view>
  347. </view>
  348. </view>
  349. </view>
  350. </view>
  351. <view class="uni-uploader">
  352. <view class="uni-uploader-body dis j-s a-c">
  353. <view class="uni-uploader__files dis f-c a-start">
  354. <text style="color: #232832;font-size: 13px;margin-left: 5px;">被保人身份证正面</text>
  355. <block v-for="(image,index) in imgList7" :key="index">
  356. <view class="uni-uploader__file">
  357. <image class="uni-uploader__img" :src="image.url" :data-src="image.url"
  358. @tap="previewImage($event,'imgList7')"></image>
  359. <view class="delImgIcon iconfont icon-cuowu d-flex a-center j-center"
  360. @tap="delCheckImage(image,'insuredImageListId','imgList7')"></view>
  361. </view>
  362. </block>
  363. <view v-if="imgList7.length==0" class="uni-uploader__input-box"
  364. style="box-sizing: border-box;">
  365. <view class="uni-uploader__input"
  366. @tap="chooseImage('C04','insuredImageListId','imgList7')"></view>
  367. </view>
  368. </view>
  369. <view class="uni-uploader__files dis f-c a-start">
  370. <text style="color: #232832;font-size: 13px;margin-left: 5px;">被保人身份证反面</text>
  371. <block v-for="(image,index) in imgList8" :key="index">
  372. <view class="uni-uploader__file">
  373. <image class="uni-uploader__img" :src="image.url" :data-src="image.url"
  374. @tap="previewImage($event,'imgList8')"></image>
  375. <view class="delImgIcon iconfont icon-cuowu d-flex a-center j-center"
  376. @tap="delCheckImage(image,'insuredImageListId','imgList8')"></view>
  377. </view>
  378. </block>
  379. <view v-if="imgList8.length==0" class="uni-uploader__input-box"
  380. style="box-sizing: border-box;">
  381. <view class="uni-uploader__input"
  382. @tap="chooseImage('D04','insuredImageListId','imgList8')"></view>
  383. </view>
  384. </view>
  385. </view>
  386. </view>
  387. <view class="uni-uploader">
  388. <view class="uni-uploader-body dis j-s a-c">
  389. <view class="uni-uploader__files dis f-c a-start">
  390. <text style="color: #232832;font-size: 13px;margin-left: 5px;">新车合格证</text>
  391. <block v-for="(image,index) in imgNewCarQualified" :key="index">
  392. <view class="uni-uploader__file">
  393. <image class="uni-uploader__img" :src="image.url" :data-src="image.url"
  394. @tap="previewImage($event,'imgNewCarQualified')"></image>
  395. <view class="delImgIcon iconfont icon-cuowu d-flex a-center j-center"
  396. @tap="delCheckImage(image,'imgNewCarinvoiceId','imgNewCarQualified')">
  397. </view>
  398. </view>
  399. </block>
  400. <view v-if="imgNewCarQualified.length==0" class="uni-uploader__input-box"
  401. style="box-sizing: border-box;">
  402. <view class="uni-uploader__input"
  403. @tap="chooseImage('XC00','imgNewCarinvoiceId','imgNewCarQualified')"></view>
  404. </view>
  405. </view>
  406. <view class="uni-uploader__files dis f-c a-start">
  407. <text style="color: #232832;font-size: 13px;margin-left: 5px;">购车发票</text>
  408. <block v-for="(image,index) in imgNewCarInvoice" :key="index">
  409. <view class="uni-uploader__file">
  410. <image class="uni-uploader__img" :src="image.url" :data-src="image.url"
  411. @tap="previewImage($event,'imgNewCarInvoice')"></image>
  412. <view class="delImgIcon iconfont icon-cuowu d-flex a-center j-center"
  413. @tap="delCheckImage(image,'imgNewCarinvoiceId','imgNewCarInvoice')">
  414. </view>
  415. </view>
  416. </block>
  417. <view v-if="imgNewCarInvoice.length==0" class="uni-uploader__input-box"
  418. style="box-sizing: border-box;">
  419. <view class="uni-uploader__input"
  420. @tap="chooseImage('GC00','imgNewCarinvoiceId','imgNewCarInvoice')"></view>
  421. </view>
  422. </view>
  423. </view>
  424. </view>
  425. <view class="uni-uploader">
  426. <view class="uni-uploader-body dis j-s a-c">
  427. <view class="uni-uploader__files dis f-c a-start">
  428. <text style="color: #232832;font-size: 13px;margin-left: 5px;">其他关系证明</text>
  429. <block v-for="(image,index) in imgRelationship" :key="index">
  430. <view class="uni-uploader__file">
  431. <image class="uni-uploader__img" :src="image.url" :data-src="image.url"
  432. @tap="previewImage($event,'imgRelationship')"></image>
  433. <view class="delImgIcon iconfont icon-cuowu d-flex a-center j-center "
  434. @tap="delCheckImage('imgRelationship',index)"></view>
  435. </view>
  436. </block>
  437. <view class="uni-uploader__input-box" style="box-sizing: border-box;">
  438. <view class="uni-uploader__input"
  439. @tap="chooseImage('GX00','imgRelationshipid','imgRelationship')"></view>
  440. </view>
  441. </view>
  442. </view>
  443. </view>
  444. </view>
  445. </scroll-view>
  446. </view>
  447. </u-modal>
  448. <previewImage ref="previewImage" :opacity="0.8" :circular="true" :imgs="previewImgs"></previewImage>
  449. </view>
  450. </template>
  451. <script>
  452. import store from '@/store';
  453. import {
  454. mapState,
  455. mapMutations
  456. } from "vuex"
  457. import {
  458. pathToBase64,
  459. base64ToPath
  460. } from '@/common/pdf.js'
  461. import uniPopup from '@/components/uni-popup/uni-popup.vue';
  462. import previewImage from '@/components/common/previewImage/previewImage.vue'; //引用插件
  463. export default {
  464. components: {
  465. uniPopup,
  466. previewImage
  467. },
  468. computed: {
  469. ...mapState(['userInfo', 'token', 'quotationType']),
  470. },
  471. data() {
  472. return {
  473. resubmitDocumentsShow: false,
  474. OrderTrackShow: false,
  475. TrackRecordList: [],
  476. product: "",
  477. revokeQrCodeShow: false,
  478. scrollTop: 0,
  479. approvalReasonShow: false, //核保意见
  480. approvalReasonContent: "",
  481. show: true,
  482. modeClass: 'fade',
  483. // trajectoryShow: false,
  484. // trajectoryList: [],
  485. MoreShow: false,
  486. moreindex: "",
  487. companyId: "",
  488. modelcname: "",
  489. orderno: "",
  490. insuredname: "",
  491. licenseno: "",
  492. orderStatus: "",
  493. sublist: [],
  494. numList: [{
  495. name: '进行中'
  496. }, {
  497. name: '待核保'
  498. },
  499. {
  500. name: '核保退回'
  501. }, {
  502. name: '待缴费'
  503. }, {
  504. name: '已承保'
  505. },
  506. ],
  507. insuranceList: [{
  508. product: "单交",
  509. img: "/static/image/car-insure/danjiao.png",
  510. },
  511. {
  512. product: "单商",
  513. img: "/static/image/car-insure/danshang.png",
  514. }, {
  515. product: "单三",
  516. img: "/static/image/car-insure/dansan.png",
  517. }, {
  518. product: "交三",
  519. img: "/static/image/car-insure/jiaosan.png",
  520. }, {
  521. product: "交商",
  522. img: "/static/image/car-insure/jiaoshang.png",
  523. }
  524. ],
  525. statusList: [{
  526. label: '进行中',
  527. value: 0,
  528. },
  529. {
  530. label: '核保中',
  531. value: 1,
  532. Color: "#FF5600",
  533. headerimg: "url('/static/image/car-insure/header1.png')",
  534. userback: "linear-gradient(180deg , #FFF6EC 0%, #FFFCF8 100%)",
  535. },
  536. {
  537. label: '待缴费',
  538. value: 2,
  539. Color: "#FF0F00",
  540. headerimg: "url('/static/image/car-insure/header2.png')",
  541. userback: " linear-gradient( 180deg, #FFEFEC 0%, #FFF8F8 100%)",
  542. },
  543. {
  544. label: '已承保',
  545. value: 3,
  546. Color: "#0052FF",
  547. headerimg: "url('/static/image/car-insure/header3.png')",
  548. userback: " linear-gradient(180deg, #ECFDFF 0%, #F8FFFF 100%)",
  549. },
  550. {
  551. label: '核保退回',
  552. value: 4,
  553. Color: "#9E00FF",
  554. headerimg: "url('/static/image/car-insure/header4.png')",
  555. userback: "linear-gradient(180deg , #FCECFF 0%, #FEF8FF 100%)",
  556. }
  557. ],
  558. backColorList: [
  559. 'linear-gradient( 90deg, #FFE5C6 0%, #FFF4DF 100%)',
  560. 'linear-gradient( 90deg, #CCDDFF 0%, #EDF2FF 100%)',
  561. 'linear-gradient( 90deg, #E9FFCC 0%, #EEFFED 100%)'
  562. ],
  563. id: "",
  564. pagetitle: "", //页面标题
  565. ownername: "",
  566. applyname: "",
  567. insurename: "",
  568. carImageListId: [],
  569. ownerImageListId: [],
  570. policyImageListId: [],
  571. insuredImageListId: [],
  572. imgRelationshipid: [],
  573. imgNewCarinvoiceId: [],
  574. imgList1: [],
  575. imgList2: [],
  576. imgList3: [],
  577. imgList4: [],
  578. imgList5: [],
  579. imgList6: [],
  580. imgList7: [],
  581. imgList8: [],
  582. imgRelationship: [], //其他证明
  583. imgNewCarQualified: [], //合格证
  584. imgNewCarInvoice: [], //发票
  585. previewImgs: [],
  586. apiType: "",
  587. }
  588. },
  589. onLoad(params) {
  590. let item = JSON.parse(params.orderno);
  591. this.orderno = item.orderno;
  592. this.modelcname = item.modelcname;
  593. this.insuredname = item.insuredname;
  594. this.licenseno = item.licenseno;
  595. this.orderStatus = item.orderStatus;
  596. this.product = item.product;
  597. this.ownername = item.ownername;
  598. this.applyname = item.applyname;
  599. this.insurename = item.insurename;
  600. this.querylist();
  601. if (this.orderStatus == '1') {
  602. this.pagetitle = "核保中任务"
  603. } else if (this.orderStatus == '2') {
  604. this.pagetitle = "待缴费任务"
  605. } else if (this.orderStatus == '3') {
  606. this.pagetitle = "已承保任务"
  607. } else if (this.orderStatus == '4') {
  608. this.pagetitle = "核保退回任务"
  609. }
  610. },
  611. methods: {
  612. async underwriteconfirm() {
  613. await this.uploadRetry();
  614. switch (this.inscompany) {
  615. case "永安财险":
  616. let yaimage = await this.$http.post(
  617. '/order/yongAn/submitImage', {
  618. companyId: this.id
  619. });
  620. if (yaimage.code == '200') {
  621. uni.showToast({
  622. title: '上传成功',
  623. icon: 'none',
  624. });
  625. } else {
  626. uni.showToast({
  627. title: yaimage.msg,
  628. icon: 'none',
  629. });
  630. }
  631. break;
  632. case "中煤财险":
  633. let zmimage = await this.$http.post(
  634. '/order/zhongMeiApi/submitImage', {
  635. companyId: this.id
  636. });
  637. if (zmimage.code == '200') {
  638. uni.showToast({
  639. title: '上传成功',
  640. icon: 'none',
  641. });
  642. } else {
  643. uni.showToast({
  644. title: zmimage.msg,
  645. icon: 'none',
  646. });
  647. }
  648. break;
  649. case "永诚财险":
  650. let ycimage = await this.$http.post(
  651. '/api/yongCheng/uploadImage', {
  652. companyId: this.id
  653. });
  654. if (ycimage.code == '200') {
  655. uni.showToast({
  656. title: '上传成功',
  657. icon: 'none',
  658. });
  659. } else {
  660. uni.showToast({
  661. title: ycimage.msg,
  662. icon: 'none',
  663. });
  664. }
  665. break;
  666. case "国任财险":
  667. let grimage = await this.$http.post(
  668. '/api/guoRen/uploadImage', {
  669. companyId: this.id
  670. });
  671. if (grimage.code == '200') {
  672. uni.showToast({
  673. title: '上传成功',
  674. icon: 'none',
  675. });
  676. } else {
  677. uni.showToast({
  678. title: grimage.msg,
  679. icon: 'none',
  680. });
  681. }
  682. break;
  683. case "大家财险":
  684. let djapiImage = this.apiType == "2" ? "/insurance/crawler/submitImage" :
  685. "/api/dajia/submitImage";
  686. let djimage = await this.$http.post(
  687. `${djapiImage}`, {
  688. [this.apiType == 2 ? "subOrderNo" : "companyId"]: this.id
  689. });
  690. if (djimage.code == '200') {
  691. uni.showToast({
  692. title: '上传成功',
  693. icon: 'none',
  694. });
  695. } else {
  696. uni.showToast({
  697. title: djimage.msg,
  698. icon: 'none',
  699. });
  700. }
  701. break;
  702. case "紫金财险":
  703. let zjimage = await this.$http.post(
  704. '/order/zijin/submitImage', {
  705. companyId: this.id
  706. });
  707. if (zjimage.code == '200') {
  708. uni.showToast({
  709. title: '上传成功',
  710. icon: 'none',
  711. });
  712. } else {
  713. uni.showToast({
  714. title: zjimage.msg,
  715. icon: 'none',
  716. });
  717. }
  718. break;
  719. case "华泰财险":
  720. let htapiImage = this.apiType == "2" ? "/insurance/crawler/submitImage" :
  721. "/order/huaTaiApi/submitImage";
  722. let htimage = await this.$http.post(
  723. `${htapiImage}`, {
  724. [this.apiType == 2 ? "subOrderNo" : "companyId"]: this.id
  725. });
  726. if (htimage.code == '200') {
  727. uni.showToast({
  728. title: '上传成功',
  729. icon: 'none',
  730. });
  731. } else {
  732. uni.showToast({
  733. title: htimage.msg,
  734. icon: 'none',
  735. });
  736. }
  737. break;
  738. case "渤海财险":
  739. let bhimage = await this.$http.post(
  740. '/order/boHaiApi/submitImage', {
  741. companyId: this.id
  742. });
  743. if (bhimage.code == '200') {
  744. uni.showToast({
  745. title: '上传成功',
  746. icon: 'none',
  747. });
  748. } else {
  749. uni.showToast({
  750. title: bhimage.msg,
  751. icon: 'none',
  752. });
  753. }
  754. break;
  755. case "恒邦财险":
  756. case "诚泰财险":
  757. case "安盛天平":
  758. case "众安财险":
  759. case "中国人寿":
  760. case "太平财险":
  761. case "华农财险":
  762. case "泰康财险":
  763. let pythonimage = await this.$http.post(
  764. '/insurance/crawler/submitImage', {
  765. subOrderNo: this.id
  766. });
  767. if (pythonimage.code == '200') {
  768. uni.showToast({
  769. title: '上传成功',
  770. icon: 'none',
  771. });
  772. } else {
  773. uni.showToast({
  774. title: pythonimage.msg,
  775. icon: 'none',
  776. });
  777. }
  778. break;
  779. }
  780. this.resubmitDocumentsShow = false;
  781. },
  782. resubmitDocuments(item) {
  783. this.inscompany = item.inscompany;
  784. this.id = item.id;
  785. this.apiType = item.apiType;
  786. this.imageEcho(item.quoteno);
  787. this.resubmitDocumentsShow = true;
  788. },
  789. async uploadRetry() {
  790. const mergedArray = [...this.carImageListId, ...this.ownerImageListId, ...this
  791. .policyImageListId, ...this.insuredImageListId, ...this
  792. .imgRelationshipid
  793. ];
  794. if (mergedArray.length > 0) {
  795. await this.$http.post('/ins/taskImage/uploadImages', {
  796. imageList: mergedArray,
  797. quoteNo: this.quoteno,
  798. })
  799. }
  800. },
  801. //影像预览
  802. previewImage(e, type) {
  803. this.previewImgs = this[type];
  804. var current = e.currentTarget.dataset.src;
  805. this.$refs.previewImage.open(current); // 传入当前选中的图片地址或序号
  806. },
  807. //删除图片
  808. delCheckImage(param, IdList, srcList) {
  809. this[IdList].map((ele, index) => {
  810. if (param.imageId === ele.imageId) {
  811. this[IdList].splice(index, 1);
  812. }
  813. return ele;
  814. });
  815. this[srcList].map((ele, index) => {
  816. if (param.imageId === ele.imageId) {
  817. this[srcList].splice(index, 1);
  818. }
  819. return ele;
  820. });
  821. },
  822. async chooseImage(type, imageIdList, imgurl) {
  823. let [chooseImageErr, chooseImageRes] = await uni.chooseImage({
  824. count: 1,
  825. sizeType: ['compressed']
  826. });
  827. chooseImageRes.tempFilePaths.map((ele, index) => {
  828. uni.uploadFile({
  829. url: this.$base.baseUrl + '/ins/taskImage/uploadFile',
  830. filePath: ele,
  831. name: "multipartFile",
  832. formData: {
  833. 'type': 'image',
  834. },
  835. header: {
  836. Authorization: this.token,
  837. },
  838. success: async (imgRes) => {
  839. let data = JSON.parse(imgRes.data);
  840. data.data.url = this.$base.baseUrl + data.data.url;
  841. if (data.code == "200") {
  842. if (this[imageIdList].some(v => v.imageType == type)) {
  843. this[imageIdList].map(val => {
  844. if (val.imageType == type) {
  845. val.imageId = data.data.id;
  846. }
  847. })
  848. } else {
  849. this[imageIdList].push({
  850. imageId: data.data.id,
  851. imageType: type,
  852. })
  853. }
  854. this[imgurl].push(data.data)
  855. }
  856. }
  857. });
  858. })
  859. },
  860. //影像查询
  861. async imageEcho(quotenos) {
  862. this.imgList1 = [];
  863. this.imgList2 = [];
  864. this.imgList3 = [];
  865. this.imgList4 = [];
  866. this.imgList5 = [];
  867. this.imgList6 = [];
  868. this.imgList7 = [];
  869. this.imgList8 = [];
  870. let imgres = await this.$http.get('/ins/taskImage/findByQuoteNo?quoteNo=' + quotenos);
  871. if (imgres.code == "200") {
  872. Object.keys(imgres.data).forEach((keys) => {
  873. if (imgres.data[keys].url) {
  874. imgres.data[keys].url = this.$base.baseUrl + imgres.data[keys].url;
  875. switch (keys) {
  876. case 'C01':
  877. this.carImageListId.push({
  878. imageId: imgres.data[keys].imageId,
  879. imageType: imgres.data[keys].imageType,
  880. })
  881. this.imgList1.push(imgres.data[keys]);
  882. break;
  883. case 'D01':
  884. this.carImageListId.push({
  885. imageId: imgres.data[keys].imageId,
  886. imageType: imgres.data[keys].imageType,
  887. })
  888. this.imgList2.push(imgres.data[keys]);
  889. break;
  890. case 'C02':
  891. this.ownerImageListId.push({
  892. imageId: imgres.data[keys].imageId,
  893. imageType: imgres.data[keys].imageType,
  894. })
  895. this.imgList3.push(imgres.data[keys]);
  896. break;
  897. case 'D02':
  898. this.ownerImageListId.push({
  899. imageId: imgres.data[keys].imageId,
  900. imageType: imgres.data[keys].imageType,
  901. })
  902. this.imgList4.push(imgres.data[keys]);
  903. break;
  904. case 'C03':
  905. this.policyImageListId.push({
  906. imageId: imgres.data[keys].imageId,
  907. imageType: imgres.data[keys].imageType,
  908. })
  909. this.imgList5.push(imgres.data[keys]);
  910. break;
  911. case 'D03':
  912. this.policyImageListId.push({
  913. imageId: imgres.data[keys].imageId,
  914. imageType: imgres.data[keys].imageType,
  915. })
  916. this.imgList6.push(imgres.data[keys]);
  917. break;
  918. case 'C04':
  919. this.insuredImageListId.push({
  920. imageId: imgres.data[keys].imageId,
  921. imageType: imgres.data[keys].imageType,
  922. })
  923. this.imgList7.push(imgres.data[keys]);
  924. break;
  925. case 'D04':
  926. this.insuredImageListId.push({
  927. imageId: imgres.data[keys].imageId,
  928. imageType: imgres.data[keys].imageType,
  929. })
  930. this.imgList8.push(imgres.data[keys]);
  931. break;
  932. default:
  933. break;
  934. }
  935. }
  936. });
  937. }
  938. },
  939. //重新报价
  940. CloseEdit(val) {
  941. uni.navigateTo({
  942. url: "/pages/carInsure/premiumCalc?orderno=" + val
  943. })
  944. },
  945. //打开步骤条弹框
  946. async openSteps(orderno) {
  947. let res = await this.$http.get("/insurance/track/queryBySuborder?suborder=" + orderno)
  948. if (res.code == '200') {
  949. this.statusList.map(valA => {
  950. res.data.map(valB => {
  951. if (valA.value == valB.orderStatus) {
  952. valB.orderStatus = valA.label;
  953. }
  954. return valB
  955. })
  956. })
  957. this.TrackRecordList = res.data;
  958. this.OrderTrackShow = true;
  959. }
  960. },
  961. back() {
  962. uni.navigateBack({
  963. delta: 1, // 返回的页面数,如果是1表示返回上一页
  964. success: function() {}
  965. });
  966. },
  967. async terminateOrder(id) {
  968. let res = await this.$http.get('/subOrder/close/' + id)
  969. if (res.code == '200') {
  970. uni.showToast({
  971. title: res.msg,
  972. icon: 'none',
  973. duration: 1000
  974. });
  975. this.querylist();
  976. } else {
  977. uni.showToast({
  978. title: res.msg,
  979. icon: 'none',
  980. duration: 1000
  981. });
  982. }
  983. },
  984. async revokeUnderwriting(id) {
  985. let res = await this.$http.get('/subOrder/cancelUnderwriting/' + id)
  986. if (res.code == '200') {
  987. uni.showToast({
  988. title: res.msg,
  989. icon: 'success',
  990. duration: 1000
  991. });
  992. this.querylist();
  993. } else {
  994. uni.showToast({
  995. title: res.msg,
  996. icon: 'none',
  997. duration: 1000
  998. });
  999. }
  1000. },
  1001. async approvalReason(id) {
  1002. let res = await this.$http.get('/insurance/underwriting/cause/' + id)
  1003. if (res.code = 200) {
  1004. this.approvalReasonShow = true;
  1005. this.approvalReasonContent = res.msg.replace(/\n/g, '<br>');
  1006. }
  1007. },
  1008. handle(type) {
  1009. this.show = !this.show
  1010. this.modeClass = type
  1011. },
  1012. async querylist() {
  1013. let params = {
  1014. orderNo: this.orderno,
  1015. orderStatus: this.orderStatus,
  1016. }
  1017. let res = await this.$http.post('/insurance/order/queryQuoteHistory', params)
  1018. res.data.map((val, index) => {
  1019. this.$base.insCompanyList.map(ele => {
  1020. if (ele.name == val.inscompany) {
  1021. val.logoimg = ele.icon;
  1022. }
  1023. return ele;
  1024. })
  1025. val.color = this.backColorList[index % this.backColorList.length] // 循环使用颜色列表
  1026. return val;
  1027. })
  1028. this.sublist = res.data;
  1029. },
  1030. //更多操作
  1031. Moremethods(e) {
  1032. let id = e.currentTarget.dataset.id;
  1033. let list = this.sublist;
  1034. this.sublist = list.map(val => {
  1035. if (val.id == id) {
  1036. val.checked = !val.checked;
  1037. console.log(val);
  1038. } else {
  1039. val.checked = false;
  1040. }
  1041. return val;
  1042. })
  1043. },
  1044. // //订单轨迹
  1045. // async orderTrajectory(id) {
  1046. // let res = await this.$http.get('/insurance/track/queryBySuborder?suborder=' + id);
  1047. // if (res.code == '200') {
  1048. // this.trajectoryList = res.data;
  1049. // this.trajectoryShow = true;
  1050. // }
  1051. // },
  1052. //查看详情
  1053. detial(id) {
  1054. uni.navigateTo({
  1055. url: "/pages/carInsure/quoteDetail?companyId=" + id
  1056. })
  1057. },
  1058. //付款码
  1059. Payment(id, type) {
  1060. let pro = this.quotationType.themeCode;
  1061. if (pro == "QD") {
  1062. uni.navigateTo({
  1063. url: "/pages/orders/paymentCode?companyId=" + id + '&apiType=' + type,
  1064. })
  1065. } else {
  1066. uni.navigateTo({
  1067. url: "/pages/orders/paymentCode1?companyId=" + id + '&apiType=' + type,
  1068. })
  1069. }
  1070. },
  1071. //报价单
  1072. bjdpreview(id, type) {
  1073. let pro = this.quotationType.themeCode;
  1074. if (pro == "QD") {
  1075. uni.navigateTo({
  1076. url: "/pages/orders/quotation?companyId=" + id
  1077. })
  1078. } else {
  1079. uni.navigateTo({
  1080. url: "/pages/orders/quotation1?companyId=" + id
  1081. })
  1082. }
  1083. },
  1084. //撤销二维码
  1085. revokeCode(id) {
  1086. this.id = id;
  1087. this.revokeQrCodeShow = true;
  1088. },
  1089. async revokeQrCodeconfirm() {
  1090. let res = await this.$http.post('/order/qrCode/destructionQrCode?areaCompanyId=' + this.id)
  1091. if (res.code == '200') {
  1092. this.querylist();
  1093. uni.showToast({
  1094. title: res.msg,
  1095. icon: 'none',
  1096. });
  1097. } else {
  1098. this.querylist();
  1099. uni.showToast({
  1100. title: res.msg,
  1101. icon: 'none',
  1102. });
  1103. }
  1104. },
  1105. async huataiunderwriting(item) {
  1106. let api = item.apiType == '2' ? '/insurance/crawler/auditStatusQuery' :
  1107. '/order/huaTaiApi/auditStatusQuery';
  1108. let params = {
  1109. companyId: item.id,
  1110. }
  1111. let res = await this.$http.post(`${api}`, params)
  1112. if (res.code == '200') {
  1113. uni.showToast({
  1114. title: res.msg,
  1115. icon: 'none',
  1116. });
  1117. this.querylist();
  1118. } else {
  1119. uni.showToast({
  1120. title: res.msg,
  1121. icon: 'none',
  1122. });
  1123. }
  1124. },
  1125. //核保状态查询
  1126. async underwriting(id, inscompany) {
  1127. switch (inscompany) {
  1128. case "中煤财险":
  1129. let zmapi = item.apiType == '2' ? '/insurance/crawler/auditStatusQuery' :
  1130. '/order/zhongMeiApi/auditStatusQuery';
  1131. let zmres = await this.$http.post(`${zmapi}`, {
  1132. companyId: id
  1133. })
  1134. if (zmres.code == '200') {
  1135. uni.showToast({
  1136. title: zmres.msg,
  1137. icon: 'none',
  1138. duration: 1000
  1139. });
  1140. this.querylist();
  1141. } else {
  1142. uni.showToast({
  1143. title: zmres.msg,
  1144. icon: 'error',
  1145. });
  1146. }
  1147. break;
  1148. case "永诚财险":
  1149. let ycres = await this.$http.get('/api/yongCheng/orderStatusBySuborderId/' + id);
  1150. if (ycres.code == '200') {
  1151. uni.showToast({
  1152. title: ycres.msg,
  1153. icon: 'none',
  1154. duration: 2000
  1155. });
  1156. this.querylist();
  1157. } else {
  1158. uni.showToast({
  1159. title: ycres.msg,
  1160. icon: 'error',
  1161. });
  1162. }
  1163. break;
  1164. case "国任财险":
  1165. let grres = await this.$http.post('/api/guoRen/updateOrderInfo', {
  1166. companyId: id
  1167. });
  1168. if (grres.code == '200') {
  1169. uni.showToast({
  1170. title: grres.msg,
  1171. icon: 'none',
  1172. duration: 2000
  1173. });
  1174. this.querylist();
  1175. } else {
  1176. uni.showToast({
  1177. title: grres.msg,
  1178. icon: 'error',
  1179. });
  1180. }
  1181. break;
  1182. case "大家财险":
  1183. let djapi = item.apiType == '2' ? '/insurance/crawler/auditStatusQuery' :
  1184. '/api/dajia/verifyPayment';
  1185. let djres = await this.$http.post(`${djapi}`, {
  1186. companyId: id
  1187. });
  1188. if (djres.code == '200') {
  1189. uni.showToast({
  1190. title: djres.msg,
  1191. icon: 'none',
  1192. duration: 2000
  1193. });
  1194. this.querylist();
  1195. } else {
  1196. uni.showToast({
  1197. title: djres.msg,
  1198. icon: 'none',
  1199. });
  1200. }
  1201. break;
  1202. case "渤海财险":
  1203. let bhres = await this.$http.post('/order/boHaiApi/auditStatusQuery', {
  1204. companyId: id
  1205. });
  1206. if (bhres.code == '200') {
  1207. uni.showToast({
  1208. title: bhres.msg,
  1209. icon: 'none',
  1210. duration: 2000
  1211. });
  1212. this.querylist();
  1213. } else {
  1214. uni.showToast({
  1215. title: bhres.msg,
  1216. icon: 'error',
  1217. });
  1218. }
  1219. break;
  1220. default:
  1221. let pythonres = await this.$http.post('/insurance/crawler/auditStatusQuery', {
  1222. companyId: id
  1223. });
  1224. if (pythonres.code == '200') {
  1225. uni.showToast({
  1226. title: pythonres.msg,
  1227. icon: 'none',
  1228. duration: 2000
  1229. });
  1230. this.querylist();
  1231. } else {
  1232. uni.showToast({
  1233. title: pythonres.msg,
  1234. icon: 'none',
  1235. });
  1236. }
  1237. break;
  1238. }
  1239. },
  1240. //撤单
  1241. async cancelorder(item) {
  1242. let res = await this.$http.post('/order/zijin/cancel', {
  1243. companyId: item
  1244. })
  1245. if (res.code == '200') {
  1246. uni.showToast({
  1247. title: res.msg,
  1248. icon: 'none',
  1249. duration: 1000
  1250. });
  1251. this.querylist();
  1252. } else {
  1253. uni.showToast({
  1254. title: res.msg,
  1255. icon: 'error',
  1256. });
  1257. }
  1258. },
  1259. async queryStatus(id, item) {
  1260. switch (item.inscompany) {
  1261. case "紫金财险":
  1262. let zjres = await this.$http.post('/order/zijin/getOrderDetail', {
  1263. companyId: id
  1264. });
  1265. if (zjres.code == '200') {
  1266. uni.showToast({
  1267. title: zjres.msg,
  1268. icon: 'none',
  1269. duration: 2000
  1270. });
  1271. this.querylist();
  1272. } else {
  1273. uni.showToast({
  1274. title: zjres.msg,
  1275. icon: 'error',
  1276. });
  1277. }
  1278. break;
  1279. case "大家财险":
  1280. let djapi = item.apiType == '2' ? '/insurance/crawler/verifyPayment' :
  1281. '/api/dajia/verifyPayment';
  1282. let djres = await this.$http.post(`${djapi}`, {
  1283. [item.apiType == 2 ? "subOrderNo" : "companyId"]: id
  1284. });
  1285. if (djres.code == '200') {
  1286. uni.showToast({
  1287. title: djres.msg,
  1288. icon: 'none',
  1289. duration: 2000
  1290. });
  1291. this.querylist();
  1292. } else {
  1293. uni.showToast({
  1294. title: djres.msg,
  1295. icon: 'none',
  1296. });
  1297. }
  1298. break;
  1299. case "华泰财险":
  1300. let api = item.apiType == '2' ? '/insurance/crawler/verifyPayment' :
  1301. '/order/huaTaiApi/paymentEnquiry';
  1302. let htres = await this.$http.post(`${api}`, {
  1303. [item.apiType == 2 ? "subOrderNo" : "companyId"]: id
  1304. });
  1305. if (htres.code == '200') {
  1306. uni.showToast({
  1307. title: htres.msg,
  1308. icon: 'none',
  1309. duration: 2000
  1310. });
  1311. this.querylist();
  1312. } else {
  1313. uni.showToast({
  1314. title: htres.msg,
  1315. icon: 'error',
  1316. });
  1317. }
  1318. break;
  1319. case "永诚财险":
  1320. let ycres = await this.$http.get(
  1321. '/api/yongCheng/orderStatusBySuborderId/' + id);
  1322. if (ycres.code == '200') {
  1323. uni.showToast({
  1324. title: ycres.msg,
  1325. icon: 'none',
  1326. duration: 2000
  1327. });
  1328. this.querylist();
  1329. } else {
  1330. uni.showToast({
  1331. title: ycres.msg,
  1332. icon: 'error',
  1333. });
  1334. }
  1335. break;
  1336. case "国任财险":
  1337. let grres = await this.$http.post('/api/guoRen/updateOrderInfo', {
  1338. companyId: id
  1339. });
  1340. if (grres.code == '200') {
  1341. uni.showToast({
  1342. title: grres.msg,
  1343. icon: 'none',
  1344. duration: 2000
  1345. });
  1346. this.querylist();
  1347. } else {
  1348. uni.showToast({
  1349. title: grres.msg,
  1350. icon: 'error',
  1351. });
  1352. }
  1353. break;
  1354. case "中煤财险":
  1355. let zmapi = item.apiType == '2' ? '/insurance/crawler/verifyPayment' :
  1356. '/order/zhongMeiApi/paymentEnquiry';
  1357. let zmres = await this.$http.post(`${zmapi}`, {
  1358. [item.apiType == 2 ? "subOrderNo" : "companyId"]: id
  1359. });
  1360. if (zmres.code == '200') {
  1361. uni.showToast({
  1362. title: zmres.msg,
  1363. icon: 'none',
  1364. duration: 2000
  1365. });
  1366. this.querylist();
  1367. } else {
  1368. uni.showToast({
  1369. title: zmres.msg,
  1370. icon: 'error',
  1371. });
  1372. }
  1373. break;
  1374. case "渤海财险":
  1375. let bhres = await this.$http.post('/order/boHaiApi/getOrderDetail', {
  1376. companyId: id
  1377. });
  1378. if (bhres.code == '200') {
  1379. uni.showToast({
  1380. title: bhres.msg,
  1381. icon: 'none',
  1382. duration: 2000
  1383. });
  1384. this.querylist();
  1385. } else {
  1386. uni.showToast({
  1387. title: bhres.msg,
  1388. icon: 'error',
  1389. });
  1390. }
  1391. break;
  1392. default:
  1393. let pythonres = await this.$http.post('/insurance/crawler/verifyPayment', {
  1394. subOrderNo: id
  1395. });
  1396. if (pythonres.code == '200') {
  1397. uni.showToast({
  1398. title: pythonres.msg,
  1399. icon: 'none',
  1400. duration: 2000
  1401. });
  1402. this.querylist();
  1403. } else {
  1404. uni.showToast({
  1405. title: pythonres.msg,
  1406. icon: 'error',
  1407. });
  1408. }
  1409. break;
  1410. }
  1411. },
  1412. init() {
  1413. this.sublist = this.sublist.map(val => {
  1414. val.checked = false;
  1415. return val;
  1416. })
  1417. }
  1418. }
  1419. }
  1420. </script>
  1421. <style>
  1422. page {
  1423. background: #f2f2f2;
  1424. }
  1425. </style>
  1426. <style lang="scss" scoped>
  1427. /deep/ {
  1428. .o-empty {
  1429. position: absolute;
  1430. left: 0;
  1431. width: 100%;
  1432. bottom: 0;
  1433. }
  1434. }
  1435. .search {
  1436. height: auto;
  1437. width: 100%;
  1438. z-index: 999999;
  1439. padding: 12px 12px 0 12px;
  1440. padding-top: 50px;
  1441. height: auto;
  1442. background: #F8FAFE;
  1443. // background-image: url("/static/image/addStaff/bfg.png");
  1444. background-size: 100% 100%;
  1445. .text {
  1446. font-size: 18px;
  1447. font-weight: bold;
  1448. color: #000;
  1449. }
  1450. image {
  1451. width: 22px;
  1452. height: 22px;
  1453. margin-left: 20px;
  1454. }
  1455. }
  1456. .flexd {
  1457. position: fixed;
  1458. left: 0;
  1459. right: 0;
  1460. }
  1461. .page {
  1462. min-height: 100vh;
  1463. background-color: #F8FAFE;
  1464. }
  1465. .car-header {
  1466. width: 100%;
  1467. height: auto;
  1468. background: #FFFFFF;
  1469. box-shadow: 0px 4px 10px 0px #DAE3F4;
  1470. border-radius: 6px;
  1471. padding: 10px 12px;
  1472. position: relative;
  1473. .licenseno {
  1474. font-weight: bold;
  1475. font-size: 16px;
  1476. }
  1477. .useritem {
  1478. width: 100%;
  1479. border-radius: 3px;
  1480. padding: 6px 8px;
  1481. >view {
  1482. text:first-child {
  1483. font-size: 12px;
  1484. color: #333;
  1485. font-weight: bold;
  1486. }
  1487. text:last-child {
  1488. font-size: 22rpx;
  1489. color: #666;
  1490. }
  1491. }
  1492. }
  1493. }
  1494. .sub-item {
  1495. .headers {
  1496. border-radius: 6px 6px 0px 0px;
  1497. padding: 7px;
  1498. text {
  1499. font-size: 15px;
  1500. color: #232832;
  1501. margin-left: 10px;
  1502. }
  1503. }
  1504. .sub-orders {
  1505. width: 100%;
  1506. background: white;
  1507. border-radius: 6px;
  1508. padding: 8px;
  1509. box-shadow: 0px 4px 10px 0px #DAE3F4;
  1510. background-color: linear-gradient(180deg, rgba(255, 255, 255, 0.6) 0%, #FFFFFF 100%);
  1511. border-radius: 6px;
  1512. margin-bottom: 10px;
  1513. .status {
  1514. padding-bottom: 8px;
  1515. >text {
  1516. color: #FF5600;
  1517. font-size: 16px;
  1518. font-weight: bold;
  1519. }
  1520. }
  1521. .orders-centre {
  1522. width: 100%;
  1523. .dataChunk {
  1524. width: 100%;
  1525. background: linear-gradient(90deg, #FFFCFA 0%, #FFF5F2 100%);
  1526. padding: 3px 30px;
  1527. text:first-child {
  1528. font-family: Source Han Sans SC, Source Han Sans SC;
  1529. font-size: 12px;
  1530. color: #8B563E;
  1531. }
  1532. text:last-child {
  1533. font-family: DIN Alternate, DIN Alternate;
  1534. font-size: 14px;
  1535. color: #6B2709;
  1536. }
  1537. }
  1538. .special {
  1539. background: linear-gradient(91deg, #FFFCFA 0%, #FFF0E6 100%);
  1540. text:first-child {
  1541. font-size: 12px;
  1542. color: #FF5600;
  1543. }
  1544. text:last-child {
  1545. font-size: 14px;
  1546. color: #FF5600;
  1547. }
  1548. }
  1549. }
  1550. .time {
  1551. font-size: 12px;
  1552. color: #2D4D89;
  1553. >text {
  1554. margin-right: 5px;
  1555. }
  1556. }
  1557. .orders-below {
  1558. padding-top: 10px;
  1559. >view {
  1560. uni-button {
  1561. margin-left: 8px;
  1562. }
  1563. }
  1564. }
  1565. }
  1566. }
  1567. .strong {
  1568. font-weight: bold;
  1569. }
  1570. .arrivalNavigations {
  1571. font-size: 14px;
  1572. color: rgba(51, 51, 51, 0.8);
  1573. margin-right: auto;
  1574. position: relative;
  1575. }
  1576. //从这里开始是弹出框的样式 不需要搜索框的 前面样式都不用加
  1577. .arrivalNavigation {
  1578. width: 250rpx;
  1579. position: absolute;
  1580. left: -10px;
  1581. top: 30px;
  1582. z-index: 99;
  1583. .sideNavigation {
  1584. width: 80px;
  1585. background-color: #fff;
  1586. box-shadow: 0px 4px 10px 0px #DAE3F4;
  1587. border-radius: 10rpx;
  1588. .sideNavigation-btn>view {
  1589. text-align: center;
  1590. font-size: 14px;
  1591. color: #333333;
  1592. text-align: center;
  1593. padding: 6px 0;
  1594. border-bottom: 1px solid #EFEFEF;
  1595. &:last-child {
  1596. border: none;
  1597. }
  1598. }
  1599. }
  1600. .d4 {
  1601. width: 0;
  1602. height: 0;
  1603. margin-left: 22px;
  1604. margin-top: -20rpx;
  1605. border-width: 20rpx;
  1606. border-style: solid;
  1607. border-color: transparent #fff transparent transparent;
  1608. transform: rotate(90deg);
  1609. /*顺时针旋转90°*/
  1610. }
  1611. }
  1612. .TrackRecord {
  1613. width: 100%;
  1614. padding: 10px 20px;
  1615. .circle {
  1616. width: 18px;
  1617. height: 18px;
  1618. background: #F0F0F0;
  1619. border-radius: 50%;
  1620. font-size: 22rpx;
  1621. font-weight: bold;
  1622. }
  1623. .title {
  1624. color: #333333;
  1625. font-size: 12px;
  1626. margin-left: 12px;
  1627. font-weight: bold;
  1628. }
  1629. .content {
  1630. border-left: 1px solid #E2E5EB;
  1631. padding-left: 20px;
  1632. margin-left: 7px;
  1633. text {
  1634. font-size: 22rpx;
  1635. color: rgba(51, 51, 51, 0.85);
  1636. }
  1637. }
  1638. &:last-child {
  1639. .circle {
  1640. background-color: #E6EEFF;
  1641. color: #0052FF;
  1642. }
  1643. .title {
  1644. color: #0052FF;
  1645. }
  1646. }
  1647. }
  1648. .uni-uploader__file {
  1649. position: relative;
  1650. }
  1651. .delImgIcon {
  1652. width: 40upx;
  1653. height: 40upx;
  1654. position: absolute;
  1655. right: 0upx;
  1656. top: 0upx;
  1657. color: #FFFFFF;
  1658. }
  1659. </style>