quoteHistory.vue 52 KB

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